计算机组成原理第 3 章:存储系统总览
这一页只负责导航,不装内容。每个节号点进去就是那一节的完整讲义。
第 3 章回答一个问题:容量大、速度快、成本低这三个要求互相打架,怎么办。
答案是分层,而分层能成立完全靠一条对程序行为的观察——局部性。全章的结构就是把这个答案展开:
先说清衡量什么(3.1)→ 主存本身怎么造(3.2)→ 怎么接到 CPU 上(3.3)→ 装不下就往外存放(3.4)→ 用 Cache 补速度这条短板(3.5)→ 用虚拟存储器补容量这条短板(3.6)
贯穿全章有两条隐线,值得单独盯住:
① 延迟和带宽是两个独立的量,本章除 Cache 外的所有提速手段都只提高带宽。 SDRAM 的同步、DDR 的双沿、多体交叉、突发传送——没有一个缩短了单次访问的延迟。凡是题目问”能否提高访存速度""能否缩短存取周期”,先回到这条线上判断。
② Cache—主存与主存—辅存是同一个思想的两次应用,它们的每一处差别都能从”未命中代价差六个数量级”推出来。 为什么虚拟存储器必须全相联、必须只用写回、必须交给操作系统、页必须比 Cache 块大两个数量级——四个问题一个答案。
另外,第 2 章立下的”面积换时间”在本章第三次出现:比较器的数量就是相联度,LRU 的计数器阵列同理。
章节导航
3.1 存储器概述 ✅
| 节 | 页面 | 一句话 |
|---|---|---|
| 3.1.1 | 存储器的分类 | 四个分类维度正交;易失 = 断电丢失,与要不要刷新无关 |
| 3.1.2 | 存储器的性能指标 | 存取时间 / 存取周期 / 带宽是三个量;带宽的分母是周期 |
| 3.1.3 | 多级层次的存储系统 | 三级层次 = 两个缓存对,一个解决速度、一个解决容量 |
3.2 主存储器 ✅
| 节 | 页面 | 一句话 |
|---|---|---|
| 3.2.1 | SRAM 芯片和 DRAM 芯片 | 触发器 vs 电容推出全部差别;“同步”是接口同步,不是变快 |
| 3.2.2 | 只读存储器 | 分类依据是非易失性,不是”只读”;Flash 读快写慢、块擦页写 |
| 3.2.3 | 主存储器的基本组成 | MAR 位数定地址空间,MDR 位数定存储字长 |
| 3.2.4 | 多模块存储器 | 多体的定义是”有独立控制电路、能重叠工作”;位扩展不是交叉编址 |
3.3 主存储器与 CPU 的连接 ✅
| 节 | 页面 | 一句话 |
|---|---|---|
| 3.3.1 | 连接原理 | 三类总线各定一个量;带宽用等号,实际速率只是正比 |
| 3.3.2 | 主存容量的扩展 | 片数 = 位扩展系数 × 字扩展系数;编址单位从数据总线反推 |
| 3.3.3 | 存储芯片的地址分配和片选 | 地址重叠不是地址冲突;全译码要连使能端 |
| 3.3.4 | 存储器与 CPU 的连接 | 先写地址分配表再画连接图;ROM 不接写线 |
3.4 外部存储器 ✅
3.5 高速缓冲存储器 ✅
| 节 | 页面 | 一句话 |
|---|---|---|
| 3.5.1 | 程序访问的局部性原理 | 顺序执行给空间局部性,循环回跳给时间局部性(不要接反) |
| 3.5.2 | Cache 的基本工作原理 | 全章唯一真正降低平均延迟的部件;标记项含四类位 |
| 3.5.3 | Cache 和主存的映射方式 | 比较器数量 = 相联度;组相联划组有两种口径,考场用低位取模 |
| 3.5.4 | Cache 中主存块的替换算法 | ”计数器 +1 慢”只在软件成本模型下成立;FIFO 才有 Belady 异常 |
| 3.5.5 | Cache 的一致性问题 | 写回配写分配、写直达配非写分配,因为押注的是不是同一件事 |
3.6 虚拟存储器 ✅
| 节 | 页面 | 一句话 |
|---|---|---|
| 3.6.1 | 虚拟存储器的基本概念 | 硬件管翻译、软件管替换;虚存容量由虚拟地址位数决定 |
| 3.6.2 | 页式虚拟存储器 | 页表在主存、TLB 在 MMU、MMU 在 CPU,层层包含 |
| 3.6.3 | 段式虚拟存储器 | 物理地址靠加法得到,且必须查段长做越界检查 |
| 3.6.4 | 段页式虚拟存储器 | 段表项存的是页表基址;无 TLB 时访存 3 次 |
| 3.6.5 | 虚拟存储器与 Cache 的比较 | 未命中代价差六个数量级,推出全部设计差别 |
本章高频边界
| 边界 | 判据 | 在哪 |
|---|---|---|
| 易失 vs 需要刷新 | 断电丢不丢,与刷新无关 | 3.1.1 |
| 随机存取 vs 直接存取 | 存取时间与地址有没有关系 | 3.1.1 |
| 存取时间 vs 存取周期 vs 带宽 | 周期 = 时间 + 恢复;带宽的分母是周期 | 3.1.2 |
| 提高延迟 vs 提高带宽 | 全章只有 Cache 降低延迟 | 3.1.2 |
| Cache 缺失 vs 缺页 | 前者硬件包办不中断,后者产生异常 | 3.1.3 |
| 集中 / 分散 / 异步刷新 | 死区怎么摆;没有一种能与访存并行 | 3.2.1 |
| SDRAM/DDR 快在哪 | 接口同步与双沿传输,只提带宽 | 3.2.1 |
| 地址复用的作用域 | 只在芯片内部,不进入容量计算 | 3.2.1 |
| ROM 分类 vs 能否写 | 看题干问归属还是问能力 | 3.2.2 |
| 位扩展 vs 单体多字 vs 多体交叉 | 有没有独立控制电路、能否重叠 | 3.2.4 |
| 高位交叉 vs 低位交叉 | 前者扩容,后者提带宽 | 3.2.4 |
| 编址单位没给怎么办 | 从数据总线宽度反推(按字编址) | 3.3.2 |
| 地址重叠 vs 地址冲突 | 重叠可接受,冲突是错误 | 3.3.3 |
| 线选 / 部分译码 / 全译码 | 高位地址线用了几根 | 3.3.3 |
| 换磁头 vs 寻道 | 换磁头几乎免费,寻道最贵 | 3.4.1 |
| 磁盘最小读写单位 | 扇区,不是字节 | 3.4.1 |
| RAID 0 vs 其余级别 | 0 级无冗余,可靠性比单盘还差 | 3.4.1 |
| SSD 的块 vs 文件系统的块 | 擦除单位 vs 分配单位 | 3.4.2 |
| 时间局部性 vs 空间局部性 | 循环回跳 vs 顺序执行(易接反) | 3.5.1 |
| 数据容量 vs 总容量 | 总容量要加标记项 | 3.5.2 |
| 强制性 / 冲突 / 容量缺失 | 全相联没有冲突缺失 | 3.5.2 |
| 块大小与命中率 | 先升后降,不是单调 | 3.5.2 |
| 组相联的两种划组口径 | 考场一律低位取模 | 3.5.3 |
| 相联度的取舍 | 比较器面积线性增、命中率收益递减 | 3.5.3 |
| LRU vs LFU | 多久没用 vs 用过几次 | 3.5.4 |
| Belady 异常 | 只有 FIFO 会出现 | 3.5.4 |
| 写直达 vs 写回 | 脏位只有写回法需要 | 3.5.5 |
| 写分配 vs 非写分配 | 只在写不命中时才有区别 | 3.5.5 |
| TLB 未命中 vs 缺页 | 前者不产生异常 | 3.6.2 |
| 页表项 vs TLB 项 | TLB 项多一个虚页号做标记 | 3.6.2 |
| MMU 做什么 / 不做什么 | 做翻译与检查,不做替换决策 | 3.6.2 |
| 段式 vs 页式 | 加法 + 越界检查 vs 拼接 | 3.6.3 |
| 段页式的段表项 | 存页表基址,不是段基址 | 3.6.4 |
| Cache vs 虚拟存储器 | 未命中代价差六个数量级 | 3.6.5 |
计算模板
本章是全书计算题最密的一章。下面每一条在对应页里都有完整推演,考前按这张表逐个过一遍。
| # | 模板 | 在哪 |
|---|---|---|
| 1 | DRAM 刷新四步:求行数 → 定刷新周期 → 套公式 → 检查片数不影响 | 3.2.1 |
| 2 | 异步刷新间隔 | 3.2.1 |
| 3 | 低位交叉:体数下界 | 3.2.4 |
| 4 | 突发传送综合题四步:两个时钟周期 → 事务数 → 拆三段 → 叠加缺失代价 | 3.2.4 |
| 5 | 片数五步:数据总线定字长 → 地址总线定单元数 → 总容量 → 相除 → 双路自检 | 3.3.2 |
| 6 | 地址范围五步:地址位数 → 片内位数 → 片选码 → 全 0 / 全 1 → 转十六进制 | 3.3.3 |
| 7 | 六步连接法 + 四条检查 | 3.3.4 |
| 8 | 磁盘容量与存取时间 | 3.4.1 |
| 9 | AMAT 两种口径,以及”命中率的分母是访存次数” | 3.5.2 |
| 10 | Cache 地址三段划分,三种映射方式各自的位数 | 3.5.3 |
| 11 | 组相联 LRU trace(两种划组口径各推一遍) | 3.5.3 |
| 12 | EAT(串行 / 并行两种口径),多级页表时的访存次数 | 3.6.2 |
复习顺序
- 3.1.1 → 3.1.2:先把四个分类维度分开,再把三个速度量分开。“易失 = 断电丢失”和”带宽的分母是存取周期”两句话现在就钉死,它们贡献了本章一半的判断题。
- 3.1.3:全章的框架在这一节。三级层次 = 两个缓存对,一个解决速度、一个解决容量。读完记住这句话,3.5 和 3.6 就都有了位置。
- 3.2.1:本章第一个重点,也是提问最密的一节(8 条)。先用”触发器 vs 电容”推一遍全部差别,再单独攻刷新——三种方式的区别是死区怎么摆,不是能不能并行。刷新计算模板要能默写。
- 3.2.2 → 3.2.3:两节都轻。3.2.2 只需分清”分类归属”与”实际能力”;3.2.3 只需记住 MAR/MDR 的位数由什么决定。
- 3.2.4:位扩展、单体多字、多体交叉三个词的分工必须固定下来,这是本章最容易被术语打架带偏的地方。低位交叉的两个公式要熟。
- 3.3.2 → 3.3.3 → 3.3.4:连着做。3.3.2 的难点从来不是公式,是编址单位;3.3.3 的地址范围模板配一道题练手;3.3.4 只是把前两节走一遍流程。3.3.1 可以最后扫一眼。
- 3.4.1 → 3.4.2:抓结构与时间计算。磁盘地址的字段顺序理解一遍就不会忘(最贵的动作放在变化最慢的位置);SSD 只需抓住”擦除粒度远大于写入粒度”这一条,四个概念全能推出来。
- 3.5.1 → 3.5.2:局部性的两种来源不要接反(顺序执行给空间、循环回跳给时间)。3.5.2 的标记项四类位、两个容量口径、AMAT 两种口径,是后面所有 Cache 计算题的前提。
- 3.5.3:本章第二个重点。地址三段划分要能对三种映射方式各写一遍。那道争议题按两种口径各推一遍 trace——练的是方法,不是答案。
- 3.5.4 → 3.5.5:3.5.4 记住”直接映射不需要替换算法""只有 FIFO 有 Belady 异常”两条即可;3.5.5 的两组正交策略和两种常见搭配是简答题的固定问法。
- 3.6.1 → 3.6.2:3.6.2 是 3.6 的全部重量所在。页表 / TLB / MMU 的包含关系、三处命中的 8 种组合(3 种不可能)、EAT 的两种口径,三样都要能当场写出。
- 3.6.3 → 3.6.4 → 3.6.5:3.6.3、3.6.4 只考概念对比。3.6.5 是全章的收束,那张对照表不要背——用”未命中代价差六个数量级”现场推,四条推理链比表格本身更常考。
说明
- 本章 23 页对应教材的 23 个三级节,一节一页。 节号以 王道 2026 教材目录(权威参照)为准。3.5.5 Cache 的一致性问题是 2026 版新增的三级节,写策略归入此节。
- 本章是全书提问最多的一章(109 条中占 36 条),密度分布见 提问档案的说明(本地资料)。3.2.1 的 DRAM 刷新 8 条、3.5.3 的 Cache 映射 6 条是两个最密的点。
- 本章有两处教材/教辅口径不一致的争议题,处理方式相同——给出两种口径各自的答案,再给考场上怎么判断该用哪种: 一是 3.2.4 的位扩展 vs 多模块交叉编址(答案由排除法确定,但解析的推理与正文定义冲突); 二是 3.5.3 的组相联划组(王道/唐朔飞与蒋本珊两种划法,答案分别是 1 次和 3 次命中)。
- 旧版笔记已归档(见 归档说明(本地资料))。
链接
- 📖 名词库:第 3 章名词库(118 条 + 高频范围限定清单 46 行)
- 📜 原始提问档案:第 3 章 原始提问档案(本地资料)(36 条)
- ⬅️ 上一章:第 2 章:数据的表示和运算
- ➡️ 下一章:第 4 章:指令系统
- 🌐 跨科:OS 第 3 章:内存管理
- 🏗️ 重构施工文档:OS + 计组 笔记体系重构计划(本地资料)