【王道考研·计算机组成原理】第3章 存储系统(整章完整版)

引言

第三章是计组中“综合计算最多”的章节之一。

它把硬件容量、速度、成本三者矛盾用层次化设计统一起来。你必须同时掌握:

  1. 存储器硬件组织。
  2. Cache 命中与替换。
  3. 虚拟存储地址转换与缺页。

图像化理解(Mermaid)


一、存储器层次与基本概念

1. 层次化目标

  1. 上层快但贵且小。
  2. 下层慢但便宜且大。
  3. 通过局部性原理实现“看起来又快又大”。

2. 局部性原理

  1. 时间局部性:近期访问的数据未来还可能访问。
  2. 空间局部性:访问某地址后附近地址也常被访问。

3. 关键指标

  1. 命中率 h
  2. 未命中率 1-h
  3. 平均访存时间 AMAT = HitTime + MissRate × MissPenalty

4. 存储器分类再细分

  1. 按介质:半导体存储器、磁表面存储器、光存储器。
  2. 按存取方式:随机存取、顺序存取、直接存取、相联存取。
  3. 按可改写性:只读存储器与可读写存储器。
  4. 按保存性:易失性和非易失性;Flash/SSD 断电可保存,但长期掉电仍可能退化。

5. ROM 家族与典型用途

  1. ROM:出厂固化,只能读。
  2. PROM:可编程一次。
  3. EPROM:可紫外线擦除后重写。
  4. EEPROM:可电擦除,支持多次改写。
  5. Flash 可看作 EEPROM 的发展形式,常用于 BIOS、固件和 SSD 等非易失存储场景。

二、主存储器

1. SRAM 与 DRAM

  1. SRAM:速度快,不需刷新,常用于 Cache。
  2. DRAM:集成度高,需周期刷新,常用于主存。

2. DRAM 刷新

  1. 集中刷新。
  2. 分散刷新。
  3. 异步刷新。

考点:刷新不改变存储内容,但占用存储器周期。

3. 编址与容量计算

  1. 按字节编址最常见。
  2. 地址线 n 位时可寻址 2^n 个地址单位。
  3. 数据线宽度决定一次传输位数。

4. 主存结构与数据存放

  1. MAR 给出地址,经地址译码器选中目标单元;MDR 保存待写入或刚读出的数据。
  2. 单译码结构简单但阵列大时连线复杂,双译码可减少单个译码器规模。
  3. 多字节数据涉及大端/小端:大端高字节放低地址,小端低字节放低地址。
  4. 边界对齐本质是用空间换时间,减少一次数据访问跨越两个存储字的概率。

5. SRAM 与 DRAM 再比较

  1. SRAM 存储元通常基于触发器,读出不破坏原值,速度快、成本高、集成度低。
  2. DRAM 存储元基于电容,需要周期刷新,速度略慢但容量大、成本低。
  3. DRAM 常见考点包括行列地址复用、刷新周期、刷新占用访存带宽。

6. 主存扩展与交叉编址(补充考点)

  1. 位扩展:并联多个存储芯片以扩大字长。
  2. 字扩展:串联地址空间以扩大容量。
  3. 字位同时扩展需要同时考虑片选线、地址线和数据线的连接。
  4. 交叉编址(多体并行)可提升连续访问带宽,常见低位交叉;高位交叉更利于分段管理但连续访问并行性较弱。

7. 主存系统的常见优化方法

  1. 双端口 RAM:允许两个端口并行访问,提高并发能力。
  2. 单体多字存储器:一次读出多个字,适合顺序高速传送。
  3. 多体交叉存储器:把连续地址分散到不同存储体,提高连续访存吞吐。
  4. 比较题常从“硬件成本、并行能力、连续访问性能”三个角度出题。

三、Cache 组织与映射

1. 直接映射

  1. 主存块只能映射到唯一 Cache 行。
  2. 冲突未命中明显。
  3. 硬件简单,比较开销小。

2. 全相联映射

  1. 主存块可放任意 Cache 行。
  2. 命中率高于直接映射。
  3. 比较硬件复杂。

3. 组相联映射

  1. 主存块先映射到某组,再放组内任意行。
  2. 在命中率与硬件复杂度间折中。

4. 地址划分

常见拆分:

1
主存地址 = 标记Tag + 组号(或行号) + 块内地址

5. Cache 的层次与分类

  1. 单级 Cache 结构简单,但容量与速度折中空间有限。
  2. 多级 Cache 通过 L1/L2/L3 分层进一步平衡速度与容量。
  3. 指令 Cache 与数据 Cache 分离(I-Cache / D-Cache)可减少结构冲突,常与流水线设计配合出现。

四、Cache 替换与写策略

1. 替换算法

  1. LRU:最近最少使用。
  2. FIFO:先进先出。
  3. RAND:随机替换。

2. 写策略

  1. 写直达(Write Through):同时写 Cache 和主存。
  2. 写回(Write Back):只写 Cache,替换时回写主存。

3. 写不命中策略

  1. 写分配(Write Allocate):先调入块再写。
  2. 非写分配(No Write Allocate):直接写下层。

五、虚拟存储器

1. 基本思想

  1. 程序使用虚拟地址空间。
  2. 仅把活跃页面调入主存。
  3. 通过页表完成虚实地址转换。

2. 地址转换路径

  1. 先查 TLB(快表)。
  2. 未命中则查页表。
  3. 页不在内存则触发缺页中断。

3. 页面置换算法

  1. OPT(理论最优)。
  2. FIFO。
  3. LRU。
  4. CLOCK(近似 LRU)。

4. 快表命中下的有效访问时间(EAT)

设 TLB 命中率为 h,查 TLB 时间为 t,访存时间为 m,则常见简化模型:

1
EAT = h × (t + m) + (1-h) × (t + 2m)

该式高频用于选择题与计算题。

5. 虚拟存储补充考点

  1. 页式管理便于离散分配,但存在页内碎片;段式管理便于按逻辑模块组织,但会产生外部碎片。
  2. 段页式兼顾逻辑分段与页式离散分配,是现代系统常见方案。
  3. TLB 与 Cache 不是同一层次:TLB 缓存页表项,Cache 缓存主存块。
  4. 缺页中断属于内部异常,处理流程比普通外中断更重,通常需要 OS 参与调页。

6. TLB 与 Cache 联合访问

  1. CPU 先依据虚拟地址做页号提取,优先查询 TLB 获取物理页框号。
  2. TLB 命中后,物理地址再去访问 Cache;若 Cache 未命中,再到主存取块。
  3. TLB 未命中时需要访问页表;若页表项显示页面不在主存,则再触发缺页中断。
  4. 这说明地址转换开销和数据访问开销是两条相互嵌套的路径,综合题经常把它们放在一起考。

7. Cache 与虚拟存储器的区别

  1. Cache 主要解决速度问题,虚拟存储器主要解决容量扩展问题。
  2. Cache 的数据交换单位通常是块,虚拟存储器通常按页或段进行调入调出。
  3. Cache 主要由硬件自动管理,虚拟存储器则依赖硬件与操作系统协同工作。
  4. 二者都利用局部性原理,但服务目标、管理层级和未命中代价明显不同。

六、PDF 例题与考点补充(第3章)

例题 1:AMAT 计算

题目:命中时间 1ns,命中率 95%,未命中代价 40ns,求 AMAT。

解:

1
AMAT = 1 + (1-0.95)×40 = 3ns

例题 2:容量与地址线

题目:按字节编址,主存容量 4GB,需要多少位地址线。

解:

1
4GB = 2^32 Byte,因此地址线为 32 位

例题 3:组相联计算

题目:Cache 64KB,块大小 64B,4 路组相联,求组数。

解:

1
2
总行数 = 64KB / 64B = 1024
组数 = 1024 / 4 = 256

例题 4:TLB 意义

题目:为什么 TLB 能提升性能。

解:

  1. 避免每次访存都访问页表。
  2. 命中时地址转换接近寄存器级速度。
  3. 利用页访问的时间局部性。

例题 5:写回与写直达比较

结论:

  1. 写回减少主存写流量,但一致性控制更复杂。
  2. 写直达一致性简单,但主存带宽压力更大。

七、高频易错点

  1. 把“命中率高”误解成“平均访存时间一定线性降低”。
  2. 忘记组相联中组数计算要除以路数。
  3. 写回策略下忽略脏位。
  4. 把缺页中断当成普通外中断。
  5. 地址划分时把块内地址位数算错。

八、本章速记清单

  1. AMAT = HitTime + MissRate × MissPenalty
  2. 局部性是存储层次成立的理论基础。
  3. TLB 缓存的是页表项。
  4. 写回要配合脏位。
  5. 缺页由硬件触发、OS处理。

总结

第三章本质是在做“速度-容量-成本”的系统折中。

你要能把主存、Cache、虚拟存储放在同一条链路上看:

  1. 先提高命中。
  2. 再降低未命中代价。
  3. 最后控制一致性与替换成本。

作者:[Austoin]
参考来源:E:\PDF\计算机组成原理(含新大纲考点).pdf、E:\PDF\2027计算机组成原理_高清带书签版.pdf(章节知识点整合)