计算机组成原理——存储系统(三)

在每一个清晨的第一缕阳光穿透黑暗,我们迎接的不只是新的一天,更是无限可能的新起点。生活不是等待风暴过去,而是学会在风雨中起舞!无论前方的道路多么崎岖不平,请记住,这正是你展现勇气与毅力的舞台。每一次挑战都是铸就更强自己的锤炼,每一道难关都是通往巅峰的阶梯。

不要害怕跌倒,因为每次摔倒后站起来的你,都比之前更加坚强;不要惧怕失败,因为它只是成功的垫脚石,是你迈向胜利不可或缺的经历。燃起心中的火焰,让它照亮前行的道路;释放内心的激情,让它驱散所有的阴霾。在这条充满挑战的路上,你是自己最强大的后盾,也是实现梦想的唯一主角。

让汗水浇灌希望的种子,用坚持编织梦想的翅膀。当你全力以赴地追逐目标时,整个宇宙都会为你让路。今天就是你书写传奇的开始,现在就是你超越自我的时刻。燃烧你的热情,唤醒内心深处的力量,向着未来勇敢进发,因为你生来就是要闪耀的!

记住:伟大并不是一种天赋,而是一种选择。选择了坚韧不拔,你就选择了成为不可战胜的存在;选择了勇往直前,你就选择了将不可能变为可能。让我们一起,在这条追求卓越的路上,不断突破自我,创造属于我们的辉煌篇章!加油,勇士们!世界因你们的努力而更加精彩!

计算机组成原理资源网

https://www.wenjingketang.com/这里面有ppt课后习题及答案,需要的可以自行下载

目录

4.4 并行存储器

4.4.1 双端口存储器

4.4.2 多模块存储器

4.5 高速缓冲存储器(Cache)

4.5.1 Cache的基本工作原理

4.5.2 Cache和主存的地址映射

4.5.3 替换算法

4.5.4 Cache写策略

总结


4.4 并行存储器

并行存储器的设计目标是通过并行访问多个存储单元或模块,提高存储器系统的吞吐量和带宽,从而缓解存储系统与处理器之间的速度差异问题。以下是两种典型的并行存储器技术:


4.4.1 双端口存储器

1. 基本概念
双端口存储器(Dual-Port Memory)是一种具有两个独立访问接口的存储单元,允许两个设备(如CPU、DMA控制器或外设)同时对同一存储空间进行读写操作。每个端口具有独立的地址总线、数据总线和控制信号,通过硬件设计实现并行访问。

2. 结构与冲突处理

  • 结构特点
    双端口存储器的核心是共享的存储阵列,两个端口通过仲裁逻辑协调访问。典型实现包括:

    • 独立读写端口:如一个端口支持读操作,另一个支持写操作。

    • 全双工端口:两个端口均可独立执行读写操作。

  • 冲突类型
    当两个端口试图访问同一存储单元时,可能发生以下冲突:

    1. 读-写冲突:一个端口读,另一个端口写同一地址。

    2. 写-写冲突:两个端口同时写同一地址。

  • 仲裁机制
    通过硬件优先级逻辑解决冲突。例如:

    • 固定优先级:指定一个端口(如Port A)具有更高优先级。

    • 交替优先级:动态切换优先级以避免饥饿。

    • 信号同步:通过“忙”信号通知端口等待。

3. 应用场景

  • 多核处理器共享缓存:双端口缓存支持多核并行访问。

  • 显存(VRAM):允许GPU同时读取像素数据并写入新帧。

  • 通信缓冲区:在DMA传输中,CPU和外设可并行访问缓冲区。


4.4.2 多模块存储器

多模块存储器通过将主存划分为多个独立的存储模块(Memory Module),利用空间并行性提高访问效率。其核心思想是将连续地址分布到不同模块中,实现流水线式访问。

1. 单体多字存储器

  • 原理:一次访问多个连续存储字(如4字),通过宽总线传输。

  • 优点:适合批量数据传输(如向量运算)。

  • 缺点:地址必须对齐,灵活性差。

2. 多体交叉存储器
采用多个独立编址的存储模块,通过交叉编址(Interleaving)分散连续地址,分为两种类型:

  • 高位交叉编址(高位寻址模块号)

    • 地址格式:模块号 | 模块内地址

    • 适用场景:多任务环境下隔离进程内存空间(如NUMA架构)。

  • 低位交叉编址(低位寻址模块号)

    • 地址格式:模块内地址 | 模块号

    • 核心优势:连续地址分布在不同的模块中,支持流水线访问。

    • 时序分析
      假设有 mm 个模块,每个模块访问周期为 TT,启动间隔为 τ=T/mτ=T/m。
      例如,4模块交叉存储器中,每隔 T/4T/4 启动一次访问,总带宽接近单体存储器的 mm 倍。

    • 示例

      模块0:地址0, 4, 8, ...
      模块1:地址1, 5, 9, ...
      模块2:地址2, 6, 10, ...
      模块3:地址3, 7, 11, ...

      连续访问地址0~3时,4个模块可并行工作。

3. 性能瓶颈

  • 冲突访问:非连续地址访问可能导致模块争用。

  • 总线带宽:多模块需配合高速总线才能发挥优势。


4.5 高速缓冲存储器(Cache)

4.5.1 Cache的基本工作原理

1. 局部性原理

  • 时间局部性:近期被访问的数据很可能再次被访问。

  • 空间局部性:访问某一地址后,其邻近地址可能被访问。

2. Cache工作流程

  1. CPU发出主存地址。

  2. Cache控制器将地址转换为Cache标记(Tag)和索引(Index)。

  3. 检查对应Cache行:

    • 命中(Hit):数据在Cache中,直接返回。

    • 缺失(Miss):从主存加载数据块,替换旧块并更新标记。

3. 性能指标

  • 命中率(Hit Rate):命中次数/总访问次数命中次数/总访问次数

  • 平均访问时间:tavg=tcache×命中率+tmain×(1−命中率)tavg​=tcache​×命中率+tmain​×(1−命中率)


4.5.2 Cache和主存的地址映射

1. 直接映射(Direct Mapped)

  • 规则:主存块映射到固定的Cache行,公式为:

    Cache行号=主存块号mod  Ncache_linesCache行号=主存块号modNcache_lines​
  • 地址格式Tag | Index | Block Offset

  • 优点:硬件简单,访问速度快。

  • 缺点:易发生冲突缺失(不同主存块竞争同一Cache行)。

2. 全相联映射(Fully Associative)

  • 规则:主存块可存入任意Cache行。

  • 地址格式Tag | Block Offset

  • 优点:冲突率最低。

  • 缺点:需并行比较所有行的Tag,硬件成本高(适用于小容量Cache)。

3. 组相联映射(Set Associative)

  • 规则:Cache分为若干组,每组包含 kk 行(kk-way)。主存块映射到固定组,但可存入组内任意行。

  • 地址格式Tag | Set Index | Block Offset

  • 折中方案:平衡直接映射和全相联映射的优缺点。例如,4-way组相联的冲突率显著低于直接映射,硬件复杂度可控。


4.5.3 替换算法

当Cache已满且发生缺失时,需选择被替换的行。常见算法包括:

1. 随机替换(Random)

  • 随机选择一行替换。

  • 优点:实现简单,无需记录历史信息。

  • 缺点:可能替换高频访问的数据。

2. 先进先出(FIFO)

  • 替换最早进入Cache的行。

  • 问题:可能替换频繁使用的数据(Belady现象)。

3. 最近最少使用(LRU)

  • 替换最久未被访问的行。

  • 实现方式:通过计数器或链表维护访问顺序。

  • 优点:命中率高,接近理想算法。

  • 缺点:硬件开销大(尤其是高相联度Cache)。

4. 最不经常使用(LFU)

  • 替换访问次数最少的行。

  • 适用场景:访问模式稳定的场景。

  • 缺点:需维护计数器,且可能长期保留陈旧数据。


4.5.4 Cache写策略

1. 写命中(Write Hit)

  • 写直达(Write-Through):同时写入Cache和主存。

    • 优点:保持主存一致性。

    • 缺点:增加总线流量,降低速度。

  • 写回(Write-Back):仅修改Cache行,设置脏位(Dirty Bit)。替换时若脏位为1,才写回主存。

    • 优点:减少主存访问次数。

    • 缺点:一致性维护复杂。

2. 写缺失(Write Miss)

  • 写分配(Write-Allocate):将主存块加载到Cache后执行写操作(配合写回策略)。

  • 非写分配(No-Write-Allocate):直接写入主存,不加载到Cache(配合写直达策略)。

3. 多级Cache的协同

  • L1 Cache:通常采用写直达+写分配,确保快速响应。

  • L2/L3 Cache:采用写回+非写分配,减少主存访问。


总结

并行存储器和Cache技术通过多层次优化,显著提升了存储系统的性能。双端口存储器和多模块交叉存储器从硬件并行性角度突破带宽限制,而Cache则基于局部性原理,通过地址映射、替换算法和写策略的软硬件协同设计,有效降低了平均访问延迟。这些技术的综合应用,构成了现代计算机存储层次结构的核心。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/964929.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

go运算符

内置运算符 算术运算符关系运算符逻辑运算符位运算符赋值运算符 算术运算符 注意: (自增)和–(自减)在 Go 语言中是单独的语句,并不是运算符 package mainimport "fmt"func main() {fmt.Printl…

分享2款 .NET 开源且强大的翻译工具

前言 对于程序员而言永远都无法逃避和英文打交道,今天大姚给大家分享2款 .NET 开源、功能强大的翻译工具,希望可以帮助到有需要的同学。 STranslate STranslate是一款由WPF开源的、免费的(MIT License)、即开即用、即用即走的翻…

技术书籍写作与编辑沟通指南

引言 撰写技术书籍不仅仅是知识的输出过程,更是与编辑团队紧密合作的协同工作。优秀的技术书籍不仅依赖作者深厚的技术背景,还需要精准的表达、流畅的结构以及符合出版要求的编辑润色。因此,如何高效地与编辑沟通,确保书籍质量&a…

Linux中系统相关指令(一)

一、时间查看指令date 1.1时间显示的格式 1> 默认格式,直接输入: date 回车 会直接展示出来,如: 2> 常用格式:年-月-日 时:分:秒 这种格式更加贴近于我们的习惯,但需要…

C语言:深入了解指针3

1.回调函数是什么? 基本概念 回调函数就是⼀个通过函数指针调⽤的函数。 如果你把函数的指针(地址)作为参数传递给另⼀个函数,当这个指针被⽤来调⽤其所指向的函数 时,被调⽤的函数就是回调函数。回调函数不是由该函…

【Uniapp-Vue3】创建DB schema数据表结构

右键uniCloud文件下的database文件,点击“新建DB schema”,选择模板,修改文件名,点击“创建” 创建完成后会出现对应的文件,进入该文件进行配置 对文件中的必填选项,用户权限,字段进行配置 其…

Java基础进阶-水仙花数

/* 功能:求水仙花数,打印并统计总个数。 思路: 水仙花数是定义范围100-999,满足每个位上的数子的3次方相加和等于这个数 第一步:循环遍历数据范围 第二步;取出当前数字的个位,十位,百…

DDD - 领域事件_解耦微服务的关键

文章目录 Pre领域事件的核心概念领域事件的作用领域事件的识别领域事件的技术实现领域事件的运行机制案例领域事件驱动的优势 Pre DDD - 微服务设计与领域驱动设计实战(中)_ 解决微服务拆分难题 EDA - Spring Boot构建基于事件驱动的消息系统 领域事件的核心概念 领域事件&a…

MacBook Pro(M1芯片)Qt环境配置

MacBook Pro(M1芯片)Qt环境配置 1、准备 试图写一个跨平台的桌面应用,此时想到了使用Qt,于是开始了搭建开发环境~ 在M1芯片的电脑上安装,使用brew工具比较方便 Apple Silicon(ARM/M1&#xf…

简单本地部署deepseek(软件版)

Download Ollama on Windows 下载 下载安装 winr 输入 cmd 然后输入ollama -v,出现ollama版本,安装成功 deepseek-r1 选择1.5b 输入 cmd 下面代码 ollama run deepseek-r1:1.5b 删除deepseek的代码如下: ollama rm deepseek-r1:1.5b 使用…

Linux生成自签证书【Nginx】

👨‍🎓博主简介 🏅CSDN博客专家   🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入&#xff01…

Docker基础以及单体实战

Docker 一、Docker1.1 Docker组成1.2 Dcoker运行图1.3 名称空间Namepace 1.4 docker、Docker compose、kubermetes 二、Docker安装2.1 在线Docker安装2.2 使用官方通用安装脚本2.3 二进制安装Docker三、Docker基础命令3.1 启动类3.2 镜像类3.3 容器类3.4 网络类3.5 Docker comp…

MySQL表的CURD

目录 一、Create 1.1单行数据全列插入 1.2多行数据指定列插入 1.3插入否则更新 1.4替换 2.Retrieve 2.1 select列 2.1.1全列查询 2.1.2指定列查询 2.1.3查询字段为表达式 2.1.4为查询结果指定别名 2.1.5结果去重 2.2where条件 2.3结果排序 2.4筛选分页结果 三…

如何优化垃圾回收机制?

垃圾回收机制 掌握 GC 算法之前,我们需要先弄清楚 3 个问题。第一,回收发生在哪里?第二,对象在 什么时候可以被回收?第三,如何回收这些对象? 回收发生在哪里? JVM 的内存区域中&…

基于SpringBoot的体检预约管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

PostgreSQL / PostGIS:创建地理要素

PostGIS详细教程可以参考官方文档:https://postgis.net/workshops/zh_Hans/postgis-intro/,并且官方文档提供了练习数据、教程、PPT版本教程。我这里参考QGIS文档中关于PostGIS的教程进行学习。 PostGIS 可以被认为是一组数据库内函数的集合&#xff0c…

embeddingbag词袋

文章目录 1. embeddingbag2. pytorch 1. embeddingbag 词袋embeddingbag 是在embedding词表的基础上演变起来的,nn.embedding的作用是构建一个词表,通过输入index序号来索引词对应的词向量,是可以根据词索引index进行forward计算的,embeddin…

分享|通过Self-Instruct框架将语言模型与自生成指令对齐

结论 在大型 “指令调整” 语言模型依赖的人类编写指令数据存在数量、多样性和创造性局限, 从而阻碍模型通用性的背景下, Self - Instruct 框架, 通过 自动生成 并 筛选指令数据 微调预训练语言模型, 有效提升了其指令遵循能…

无穿戴动捕数字人互动方案 展馆展览创新引擎,推动文旅数字化转型

随着经济社会的发展和文旅融合的加速推进,“博物馆热”已成为一种不可忽视的社会现象,成为文化领域最具潜力的增长点之一。在信息技术的迅猛推动下,科技赋能的博物馆展览日益受到公众的关注,其中,“元宇宙”等创新概念…

5.6 Mybatis代码生成器Mybatis Generator (MBG)实战详解

文章目录 前言一、Mybatis Generator简介二、Maven插件运行方式三、生成配置 generatorConfig.xml MyBatis3Simple风格MyBatis3风格MyBatis3DynamicSql风格 四、Java代码运行方式五、MGB生成全部表六、增加Ext包七、Git提交总结 前言 本文我们主要实战Mybatis官方的代码生成器…