在每一个清晨的第一缕阳光穿透黑暗,我们迎接的不只是新的一天,更是无限可能的新起点。生活不是等待风暴过去,而是学会在风雨中起舞!无论前方的道路多么崎岖不平,请记住,这正是你展现勇气与毅力的舞台。每一次挑战都是铸就更强自己的锤炼,每一道难关都是通往巅峰的阶梯。
不要害怕跌倒,因为每次摔倒后站起来的你,都比之前更加坚强;不要惧怕失败,因为它只是成功的垫脚石,是你迈向胜利不可或缺的经历。燃起心中的火焰,让它照亮前行的道路;释放内心的激情,让它驱散所有的阴霾。在这条充满挑战的路上,你是自己最强大的后盾,也是实现梦想的唯一主角。
让汗水浇灌希望的种子,用坚持编织梦想的翅膀。当你全力以赴地追逐目标时,整个宇宙都会为你让路。今天就是你书写传奇的开始,现在就是你超越自我的时刻。燃烧你的热情,唤醒内心深处的力量,向着未来勇敢进发,因为你生来就是要闪耀的!
记住:伟大并不是一种天赋,而是一种选择。选择了坚韧不拔,你就选择了成为不可战胜的存在;选择了勇往直前,你就选择了将不可能变为可能。让我们一起,在这条追求卓越的路上,不断突破自我,创造属于我们的辉煌篇章!加油,勇士们!世界因你们的努力而更加精彩!
计算机组成原理资源网
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. 结构与冲突处理
-
结构特点:
双端口存储器的核心是共享的存储阵列,两个端口通过仲裁逻辑协调访问。典型实现包括:-
独立读写端口:如一个端口支持读操作,另一个支持写操作。
-
全双工端口:两个端口均可独立执行读写操作。
-
-
冲突类型:
当两个端口试图访问同一存储单元时,可能发生以下冲突:-
读-写冲突:一个端口读,另一个端口写同一地址。
-
写-写冲突:两个端口同时写同一地址。
-
-
仲裁机制:
通过硬件优先级逻辑解决冲突。例如:-
固定优先级:指定一个端口(如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工作流程
-
CPU发出主存地址。
-
Cache控制器将地址转换为Cache标记(Tag)和索引(Index)。
-
检查对应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则基于局部性原理,通过地址映射、替换算法和写策略的软硬件协同设计,有效降低了平均访问延迟。这些技术的综合应用,构成了现代计算机存储层次结构的核心。