第 3 章 名词库
这一页是复习主入口。 目标是把第 3 章的名词收全,并把每个词的边界和适用范围钉死。
每条最多四行:是(定义)/不是(划掉最常见的误解)/易混(成对的对手)/范围(该结论在什么条件下才成立)。
建设进度:✅ 3.1 存储器概述 ✅ 3.2 主存储器 ✅ 3.3 主存与 CPU 的连接 ✅ 3.4 外部存储器 ✅ 3.5 高速缓冲存储器 ✅ 3.6 虚拟存储器 (全章完整)
3.1.1 存储器的分类
主存储器(内存)
- 是:CPU 可以用指令直接访问的存储器,掉电丢失,容量受地址空间限制。
- 不是:不等于”内存条”。内存条只是主存中存储体的物理载体,译码驱动与控制逻辑在存储器控制器里。
- 易混:↔ 辅助存储器(CPU 不能直接访问,必须先调入主存)。
辅助存储器(外存)
- 是:磁盘、SSD、光盘、磁带等,不在 CPU 的地址空间内。
- 范围:内存映射文件看起来像”直接访问文件”,实质仍是缺页调入,不构成反例。
高速缓冲存储器 Cache
- 是:位于 CPU 与主存之间的小容量高速 SRAM,由硬件自动管理,对程序员和操作系统都透明。
- 不是:程序里没有”访问 Cache”的指令;CPU 发出的永远是主存地址。
控制存储器 CM
- 是:微程序控制器内部存放微指令的 ROM,属于 CPU 内部。
- 范围:出现在第 5 章,本章只作分类项。
随机存取存储器(存取方式义)
- 是:存取时间与被访问单元的地址无关的存储器。
- 不是:不是”可以随便读写”的意思。ROM 同样满足这个定义,属于随机存取存储器。
- 易混:中文缩写 RAM 同时被用作”读写存储器”,做题时看题干在比存取时间还是比可写性。
顺序存取存储器 SAM
- 是:必须从头顺序找到目标位置,如磁带。
直接存取存储器 DAM
- 是:先直接定位到某个小区域,再在区域内顺序查找,如磁盘、光盘。
- 易混:↔ 随机存取。磁盘的存取时间与磁头当前位置有关,因此磁盘不是随机存取存储器。
串行访问存储器
- 是:顺序存取与直接存取的合称,共同特征是存取时间与位置有关。
相联存储器 CAM
- 是:按内容访问的存储器——输入检索字,所有单元并行比较,输出匹配项。
- 范围:408 中出现在 TLB、全相联 Cache 的标记阵列、组相联的组内比较三处。
- 易混:与”相联度”无关,后者指组相联的路数。
易失性 / 非易失性
- 是:易失 = 断电后信息丢失。SRAM、DRAM 易失;ROM、Flash、磁盘、磁带非易失。
- 不是:与”要不要刷新”无关。SRAM 不需要刷新但同样易失。
- 范围:判断题”半导体 RAM 是易失的,但只要不断电所存信息就不丢失”——这句是对的,刷新是通电时的正常操作。
破坏性读出 DRO
- 是:读操作本身改变原信息,读后必须重写。
- 范围:只有 DRAM 和 磁芯存储器属于此类,其余均为非破坏性读出。
磁芯存储器
- 是:早期主存,用铁氧体磁环的剩磁方向存位。
- 范围:408 里几乎只作为”非易失 + 破坏性读出”的标准例子出现。
3.1.2 存储器的性能指标
存取时间
- 是:从发出读写命令到数据稳定可用所经历的时间。
- 易混:↔ 存取周期(还要加上恢复时间)。
存取周期
- 是:连续两次独立访问之间所需的最小间隔,
。 - 范围:
恒成立;DRAM 因读出破坏、需重写与预充电, 显著大于 。
恢复时间
- 是:一次访问结束后存储介质回到可再次访问状态所需的时间。
主存带宽
- 是:单位时间内能传送的数据量,
。 - 不是:分母不是存取时间。
- 范围:带宽/频率/传输率的 K、M、G 按
进位,只有容量按 。
3.1.3 多级层次的存储系统
多级存储层次
- 是:寄存器 → Cache → 主存 → 辅存,自上而下速度降、容量升、单位成本降。
- 范围:成立的唯一前提是程序访问的局部性。
两个缓存对
- 是:Cache—主存解决速度矛盾,主存—辅存解决容量矛盾。
- 易混:两者是串联并存的两级,不是二选一。
平均访问时间(层次)
- 是:
,或 。 - 范围:两种口径都合法,区别在
是”访问下一级的总时间”还是”缺失附加代价”,必须从题干判断并写明。
缺失代价 miss penalty
- 是:未命中时在命中开销之外额外付出的时间。
- 不是:不等于下一级的访问时间(口径不同)。
3.2.1 SRAM 芯片和 DRAM 芯片
SRAM
- 是:用双稳态触发器存位,不需要刷新、非破坏性读出、速度快、集成度低、价格高。
- 不是:不是非易失的,断电照样丢。
- 范围:用于 Cache、寄存器堆、DRAM 的行缓冲。
DRAM
- 是:用电容存位,必须刷新、破坏性读出、集成度高、位价低。
- 范围:用于主存;
。
存储元 / 存储单元 / 存储字长
- 是:存储元存一位;存储单元是按地址访问的最小单位;存储字长 = 一个存储单元的位数。
- 易混:按字节编址时一个地址对应 1 B,但存储字长仍可以是 32 位。
地址复用
- 是:DRAM 把行地址与列地址分两次送入同一组引脚,由
、 分别锁存,引脚数减半。 - 不是:SRAM 不做地址复用。
- 范围:只是芯片内部的事,绝不进入”CPU 地址总线根数 → 地址空间”的计算。
行缓冲
- 是:一次行激活后暂存整行数据的锁存阵列,由 SRAM 型单元构成。
- 范围:同一行内连续访问更快、突发传送能连发,都源于行缓冲。
刷新
- 是:对 DRAM 电容重新充电,实现方式是按行读出再写回。
- 范围:以行为单位;只需行地址,不需要列地址和片选;由存储器控制器发起,对 CPU 透明;刷新一遍的周期数 = 行数,与扩展成多少片无关。
刷新周期(最大刷新间隔)
- 是:每一行两次刷新之间允许的最长时间,教材常取 2 ms。
- 范围:题目给什么用什么(也见过 8 ms、64 ms)。
集中刷新
- 是:在刷新周期末尾集中用
个存取周期刷完所有行。 - 范围:存取周期不变,存在一个长死区
。
分散刷新
- 是:把刷新放进每个存取周期的后半段,按行号依次轮转。
- 不是:不是随机选行——随机无法保证每行都在刷新周期内被刷到。
- 范围:没有死区,但系统存取周期被拉长(近似加倍),且刷新过于频繁。
异步刷新
- 是:把刷新周期均分,每隔
刷一行。 - 范围:存取周期不变,死区被打散成
个一个存取周期长的小块;总死区时间与集中刷新相同。这是实际采用的方式。
死区
- 是:刷新占用存储器、CPU 无法访存的时间段。
- 不是:没有任何一种刷新方式能让刷新与访存在同一片内并行;“异步刷新可以边刷边访问”是错的。
SDRAM
- 是:与系统时钟同步的 DRAM,读延迟以固定拍数(CAS Latency)给出,控制器可流水发命令。
- 不是:“同步”同步的是接口时序,不是访问延迟;DRAM 核心的物理速度分毫未变。
- 范围:提高带宽,不降低延迟。
DDR
- 是:在时钟的上升沿和下降沿各传一次数据,数据率翻倍;DDR2/3/4 靠加大预取位宽继续提速。
- 不是:地址与命令仍只在上升沿传,核心频率没变。
- 范围:代数越新标称速率越高,而 CAS 延迟折算成纳秒几乎不变——这是”只提高带宽”最直接的证据。
3.2.2 只读存储器
只读存储器 ROM
- 是:按非易失性归类的一族存储器,可与 RAM 统一编址,属于随机存取存储器。
- 不是:不是”一律不能写”——只有 MROM 和已写 PROM 不能改写。
- 范围:主存中的 ROM 区通常存放引导程序。
MROM / PROM
- 是:MROM 制造时由掩模一次成型,不可改写;PROM 用户可用编程器写一次。
EPROM / EEPROM
- 是:可多次擦除改写。UVEPROM 用紫外线擦,EEPROM 电擦。
- 易混:EEPROM 可按字节擦写,Flash 必须按块擦除——Flash 用擦除粒度换集成度与低位价。
Flash 存储器
- 是:电擦写、非易失、集成度高。
- 范围:三条硬特性——读比写快;写前必须擦除,块擦页写;擦写次数有限。
3.2.3 主存储器的基本组成
存储体(存储矩阵)
- 是:存储单元的集合,真正存数据的部分。
MAR
- 是:地址寄存器。位数 = 地址线根数 =
。存 储 单 元 个 数 - 范围:物理上做在 CPU 内,逻辑上属于主存接口;考点是位数不是位置。
MDR
- 是:数据寄存器。位数 = 数据线根数 = 存储字长。
存储器控制器
- 是:完成译码驱动、读写时序与刷新调度的逻辑。
- 范围:早期在北桥,现已集成进 CPU。南桥(PCH)管低速外设,从不在主存通路上。 408 不考南北桥分工。
3.2.4 多模块存储器
单体多字存储器
- 是:一个存储体,存储字长做成
个字宽,一次读出 个连续字。 - 范围:要求指令与数据连续存放;遇转移或非连续访问时白读,效率下降。
多体并行存储器
- 是:多个体,每个体有独立的读写控制电路、地址寄存器和数据寄存器,能独立工作。
- 范围:“有独立控制电路、能重叠工作”是判断”是不是多体”的唯一标准。
高位交叉编址(顺序方式)
- 是:地址高位作体号,连续地址落在同一体内。
- 不是:不能提高连续访问速度;它的用途是扩容与多机共享。
低位交叉编址(交叉方式)
- 是:地址低位作体号,连续地址轮流落在不同体,可流水重叠。
- 范围:
(取等号为最佳交叉存取);连续读 个字用时 ;首字延迟不变,只提高带宽。
位扩展(在本节的对照义)
- 是:多片并联凑够数据线宽度,共用地址线与片选,必须同进同退。
- 不是:不是多体交叉——各片不独立,无法重叠访问。
- 范围:按字节编址时 8 片确实各持有地址模 8 余
的字节,“交叉编址”的字面义成立、实质义不成立;考场一律用实质义。
突发传送总线事务
- 是:一次给出首地址、连续传送多个数据的总线事务。
- 范围:时间 = 传地址 + 存储器准备数据 + 传数据,三段分别折算成总线时钟周期;只提高带宽,首字延迟不变。
3.3.1 连接原理
三类总线
- 是:地址总线(单向)定地址空间上限;数据总线(双向)定存储字长与带宽;控制总线定总线周期类型与完成时刻。
总线带宽
- 是:数据总线位数 × 总线时钟频率(理论最大值)。
- 不是:实际传输速率只是正比于该乘积——一次事务里还有传地址、等待准备数据的周期,DDR 每周期又传两次。
3.3.2 主存容量的扩展
位扩展
- 是:多片并联拼字长。地址线根数不变,共用片选,数据线分段接出。
字扩展
- 是:多片分组拼单元数。字长不变,地址线增加,靠片选区分,任一时刻只选中一组。
字位同时扩展
- 是:组内位扩展、组间字扩展。片数 = 位扩展系数 × 字扩展系数。
- 范围:地址分配表按”组”列行,不是按片。
编址单位
- 是:一个地址对应多少位。
- 范围:题目没说时从数据总线宽度反推(按字编址);两种口径都算一遍、看哪个落在选项里,是选择题的通用自检。
3.3.3 存储芯片的地址分配和片选
片选信号
- 是:决定本次访问选中哪一片(组)的信号,由高位地址产生。
线选法
- 是:每根高位地址线直接接一片的片选端,任何时刻只允许一根为 0。
- 范围:不需要译码器、最简单;地址不连续、空间浪费最严重。
全译码法
- 是:全部高位地址线送进译码器(含使能端)。
- 范围:地址唯一、连续、无重叠、无浪费,译码电路最复杂。题目要求全译码时,检查使能端有没有用满。
部分译码法
- 是:只把部分高位地址线送译码器,其余悬空。
- 范围:悬空
根 → 每个单元有 个地址别名。
地址重叠
- 是:一个存储单元对应多个地址,部分译码的正常后果。
- 不是:不是地址冲突。地址冲突是一个地址选中多片,属于连接错误,会造成总线竞争。
地址范围计算
- 是:起始地址 = 片选码 ‖ 低
位全 0;末地址 = 片选码 ‖ 低 位全 1。 - 范围:
只由单片容量决定,与总片数无关;用”跨度 = 单片容量”自检。
3.3.4 存储器与 CPU 的连接
六步连接法
- 是:定编址单位与总容量 → 定片数 → 写地址分配表 → 连地址线 → 连数据线 → 连控制线。
- 范围:四条检查——数据线接满、无地址冲突、地址范围覆盖完整、ROM 不接写线。
等待周期(READY / WAIT)
- 是:存储器跟不上 CPU 时序时,在总线周期中插入的等待状态。
- 易混:与 Cache 不同——等待周期不降低延迟,Cache 才降低平均延迟。
3.4.1 磁盘存储器
磁道 / 扇区 / 柱面 / 磁头
- 是:磁道是盘面上的同心圆(最外圈为 0 号);扇区是磁道的分段,磁盘读写的最小单位;柱面是各盘面上半径相同的磁道的集合;磁头每个记录面一个。
- 范围:所有磁头装在同一根磁臂上、同进同退——这是”柱面”概念存在的全部理由。
磁盘地址
- 是:柱面(磁道)号 ‖ 盘面(磁头)号 ‖ 扇区号,柱面号在最高位。
- 范围:这个顺序是为了让最贵的动作最不频繁——换磁头是电子切换、几乎免费;寻道是机械移动、最贵。“换磁头比找磁道贵”是反的。
非格式化容量 / 格式化容量
- 是:格式化容量 < 非格式化容量,差额被扇区头(ID 域)、间隙与校验码占去。
- 范围:格式化容量 = 每扇区字节数 × 每道扇区数 × 每面磁道数 × 记录面数。
扇区的组成
- 是:头(ID 域:柱面号/磁头号/扇区号 + 同步 + CRC)· 数据区 · 尾(ECC)。
- 范围:地址存在扇区里,是因为磁头无法知道自己在哪,只能读出 ID 才能确认。
寻道时间 / 旋转延迟 / 传输时间
- 是:
。平均旋转延迟取半圈 ; 。 - 范围:“取半圈”的前提是目标扇区位置随机;连续读同一磁道相邻扇区时,只在第一个扇区付一次旋转延迟。
RAID(磁盘阵列)
- 是:用多个物理盘构成一个逻辑盘,用条带化提速、用冗余提可靠性。
- 不是:不是备份——它防硬件故障,不防误删、损坏、勒索软件。
- 范围:408 只考 RAID 0~5 的组织方式、有效容量与可靠性;硬件 RAID 对 OS 透明(OS 只见一个逻辑盘),软件 RAID 由 OS 实现。
RAID 各级
- 是:0 条带无冗余(容量
,可靠性最差);1 镜像(容量 );2 海明码;3 位交叉 + 专用校验盘;4 块交叉 + 专用校验盘;5 块交叉 + 校验分散(容量 ,最常用)。 - 范围:“RAID 都能提高可靠性”是错的,0 级纯属性能手段。
3.4.2 固态硬盘
固态硬盘 SSD
- 是:Flash 芯片 + 闪存翻译层 + 控制器构成的外存。
- 范围:无寻道、无旋转延迟,随机读远快于磁盘;随机写受垃圾回收拖累。仍属外存,不在 CPU 地址空间内。
页 / 块(SSD 的两级粒度)
- 是:读写以页为单位(约 4 KB),擦除以块为单位(含数十至数百页)。
- 不是:与文件系统的”块”不是一回事(后者是分配单位,几 KB)。
- 范围:“擦除单位远大于写入单位”这条不对称性推出 SSD 的全部复杂性。
闪存翻译层 FTL
- 是:维护”逻辑页 → 物理页”的映射,把原地更新变成异地更新(写新页 + 改映射 + 原页标无效)。
- 易混:与页式虚拟存储器的地址映射是同一种手法。
垃圾回收 / 写放大
- 是:搬走块内仍有效的页、擦除整块;写放大系数 = 闪存实际写入量 / 主机请求写入量
。 - 范围:剩余空闲块越少,写放大越严重——SSD 比磁盘更怕写满。
磨损均衡
- 是:让擦除次数在各块间尽量平均。动态:分配时优先选磨损少的块;静态:主动搬走冷数据腾出低磨损块。
- 不是:不提高总擦写次数,只缩小磨损差距。
TRIM
- 是:操作系统主动告知 SSD”这些逻辑块已失效”。
- 范围:这是操作系统必须为 SSD 做的配合;没有它,SSD 会在 GC 时白白搬移已删除的数据。
3.5.1 程序访问的局部性原理
时间局部性
- 是:刚被访问过的地址很可能马上又被访问。
- 范围:指令的时间局部性来自循环回跳——“没有跳转”反而会让时间局部性归零。
空间局部性
- 是:刚被访问过的地址附近很可能马上被访问。
- 范围:来自指令顺序存放执行与数组连续存放;度量是步长,不是访问的数据总量。
局部性与程序
- 范围:局部性是程序的属性,硬件只能利用不能创造。答”两个程序局部性是否相同”必须分指令/数据、时间/空间四格;按行 vs 按列遍历二维数组,指令局部性相同、数据局部性差别极大。
3.5.2 Cache 的基本工作原理
块(Block)与 Cache 行(Line / 槽)
- 是:块是主存与 Cache 之间的交换单位,块大小 = 行大小,且为 2 的幂。
标记项
- 是:一行里除数据块之外的全部控制信息——标记 Tag + 有效位 + 脏位(仅写回法)+ 替换控制位。
- 范围:有效位不可省(开机时内容随机);清空 Cache = 清有效位,不是清数据。
数据容量 / 总容量
- 是:数据容量 = 行数 × 块大小;总容量 = 行数 ×(块大小 + 标记 + 有效位 + 脏位 + 替换位)。
- 范围:题目说”Cache 容量 32 KB”通常指数据容量。
命中率 / 缺失率
- 是:
。 - 范围:分母是访存次数,不是指令条数——“100 条指令、每条访存 1.2 次、缺失率 5%“的缺失次数是
。
平均访问时间 AMAT
- 是:口径一
;口径二 。 - 范围:两种都合法,从题干判断(
是主存访问时间还是缺失附加代价)并写明所用口径。
强制性 / 冲突 / 容量缺失
- 是:强制性(第一次访问该块,靠增大块缓解);冲突(争抢同一行/组,靠提高相联度缓解);容量(工作集超过总容量,靠增大容量缓解)。
- 范围:全相联没有冲突缺失——这是判断缺失归类的关键判据。
块大小的权衡
- 范围:块变大 → 强制性缺失减少,但行数减少(冲突增多)、缺失代价上升、块内利用率下降。命中率随块大小先升后降,“块越大命中率越高”是错的。
3.5.3 Cache 和主存的映射方式
直接映射
- 是:主存块只能放进唯一一行,行号 = 块号 mod 行数。
- 范围:只需 1 个比较器、标记位最短、冲突缺失最多、不需要替换算法(“直接映射采用 LRU”本身就是错的)。
全相联映射
- 是:主存块可放进任意一行。
- 范围:需要
个比较器并行比较(即相联存储器)、标记位最长、无冲突缺失;只用于 TLB 等行数极少的场合。
组相联映射
- 是:分
组每组 行,组间直接映射、组内全相联,组号 = 块号 mod 组数。 - 范围:需要
个比较器; 退化为直接映射, 退化为全相联。现代 CPU L1 用 48 路、L2/L3 用 816 路。
地址划分
- 是:标记 ‖ 行号/组号 ‖ 块内地址。
- 范围:块内地址位数只由块大小决定,三种映射方式相同;相联度翻倍则组号少 1 位、标记多 1 位。
组相联的两种划组口径
- 是:主流(王道正文 / 唐朔飞 / 全部统考真题):组号 = 块号 mod 组数(低位取模)。另有蒋本珊口径:主存按 Cache 总行数分区、区内按每组连续若干块分配,落在位段上取次低位。
- 范围:两种口径答案不同(那道 4 行 2 路 LRU 题分别是 1 次和 3 次命中)。考场一律用低位取模——蒋本珊口径在位段上讲不通(标记会变成不连续位段),统考从不采用。识别信号:算出的答案不在选项里,或低位取模后所有地址退化进同一组。
相联度(路数)
- 是:一个组内的行数
。 - 范围:比较器数量 = 相联度,面积与关键路径延迟随之线性增长,而命中率收益在 4~8 路后已很平坦——“相联度越高越好”是错的。这是”面积换时间”在本章的形式。
3.5.4 Cache 中主存块的替换算法
RAND / FIFO / LRU / LFU / OPT
- 是:RAND 随机;FIFO 淘汰最先调入;LRU 淘汰最久未被访问;LFU 淘汰访问次数最少;OPT 淘汰将来最晚使用。
- 易混:LRU 看时间,LFU 看频率——刚被访问 1 次的块在 LRU 下最安全、在 LFU 下最危险。
- 范围:OPT 不可实现,只作上界;LRU 命中率不一定高于 FIFO,只是平均更好。
Belady 异常
- 是:增加行数反而使命中率下降。
- 范围:只有 FIFO 会出现;LRU/LFU/OPT 是栈算法(容量
的驻留集是容量 的子集),不会出现。
LRU 的硬件实现
- 是:计数器法(每行
位,命中者清 0、比它小的加 1,淘汰最大者)或比较对法/矩阵法( 个触发器)。 - 范围:“计数器 +1 太慢”只在软件成本模型下成立——硬件里
个计数器在同一个时钟沿并行更新,代价是面积;反过来,软件里便宜的”双向链表改指针”在硬件里很贵。同一个 LRU 有三种实现:Cache 用计数器/矩阵、算法题用哈希+双链表、操作系统用 CLOCK 近似。
替换算法的启动条件
- 范围:只在缺失且组内无空闲行时才启动;替换范围是该组的
行,不是整个 Cache。
抖动(颠簸)
- 是:访问模式与映射方式冲突,Cache 在少数几个块间反复替换。
- 范围:靠提高相联度缓解。
3.5.5 Cache 的一致性问题
写直达法(全写法)
- 是:写命中时同时写 Cache 和主存。
- 范围:不需要脏位,主存永远最新,写开销大;常配写缓冲(异步写主存,缓冲满时仍阻塞,不改变写直达的语义)。
写回法
- 是:写命中时只写 Cache 并置脏位,行被替换时才写回主存。
- 范围:必须有脏位;替换脏行要多一次主存写;主存可能过时,这是多核与 DMA 一致性问题的根源。
写分配 / 非写分配
- 是:写不命中时,写分配先调块入 Cache 再写;非写分配直接写主存不调块。
- 范围:只在写不命中时才有区别;常见搭配是写回 + 写分配与写直达 + 非写分配,因为两者押注的是不是同一件事。
Cache 一致性
- 是:保证对同一个地址,所有核看到的写顺序一致。
- 不是:不等于存储一致性模型(后者规定不同地址间的读写能否重排)。408 只考前者。
监听(嗅探)协议 / 目录协议
- 是:监听——各 Cache 控制器监听总线事务,分写更新与写无效(写无效是主流,MESI 属此类),依赖广播,适合总线互连的小规模系统;目录——集中记录每块被哪些 Cache 缓存,只通知相关者,适合大规模系统。
DMA 引起的一致性
- 是:DMA 绕过 Cache 直接读写主存 → Cache 副本过期,或写回法下主存数据过时被 DMA 读走。
- 范围:对策是不可缓存区、让 DMA 经过 Cache、或软件在 DMA 前后刷新/无效化 Cache。
3.6.1 虚拟存储器的基本概念
虚拟存储器
- 是:主存—辅存层次,解决容量矛盾。
- 范围:容量由虚拟地址位数决定——“虚存容量 = 主存 + 辅存”是错的。对应用程序透明、对操作系统不透明。
三个必要条件
- 是:局部性;硬件地址转换机构;可重新执行原指令的缺页机制(故障类异常)。
- 范围:地址转换必须硬件做(每次访存都要);缺页处理必须软件做(毫秒级,不能让 CPU 空等)。
虚拟地址 / 物理地址
- 是:程序使用虚拟地址,主存按物理地址访问,中间由硬件翻译。
3.6.2 页式虚拟存储器
页 / 页框
- 是:虚拟空间的等长划分叫页,主存的同样划分叫页框(实页、页帧)。
- 范围:页内偏移在虚地址与物理地址中完全相同,只有页号需要翻译。
页表 / 页表项
- 是:虚页号 → 物理页号的映射表,存放在主存中,每进程一张。表项含物理页号、有效位(装入位)、脏位、访问位、权限位。
- 不是:页表项里没有虚页号——虚页号是下标。
页表基址寄存器
- 是:保存当前进程页表的起始物理地址,随进程切换而切换。
- 范围:这是进程地址空间彼此隔离的硬件基础。
TLB(快表)
- 是:页表项的高速缓存,位于 MMU 内部,行数少,通常全相联或高路数组相联。
- 不是:不在主存中。
- 易混:TLB 项 = 标记(虚页号)+ 页表项内容,比页表项多一个标记字段;TLB 未命中不产生异常,缺页才产生异常。
MMU
- 是:CPU 内部完成地址转换的硬件部件,含 TLB、页表基址寄存器、页表遍历逻辑、权限检查电路。
- 范围:MMU 只做翻译与检查,不做替换决策;有效位为 0 或越权时产生异常交给操作系统。引导初期 MMU 关闭,CPU 直接用物理地址。
三处命中的组合
- 范围:8 种组合中 3 种不可能——TLB 命中蕴含页表命中(两种),页不在主存则其内容不可能在 Cache 中(一种)。
有效访问时间 EAT
- 是:串行
;并行 。 - 范围:口径必须写明;计入缺页率时再加缺页处理时间,毫秒级的一项会主导结果;多级页表时未命中路径的访存次数 = 页表级数 + 1。
3.6.3 段式虚拟存储器
段 / 段表
- 是:按程序逻辑结构划分、长度可变的单位;段表项含段长、段基址、有效位、权限位。
- 范围:段号对程序员可见,分页对程序员透明。
段式地址转换
- 是:物理地址 = 段基址 + 段内偏移(加法),页式是拼接。
- 范围:必须先做越界检查(段内偏移
段长 → 越界异常);页式不需要越界检查,页内偏移位数天然不会越界。
外部碎片 / 内部碎片
- 是:段式产生外部碎片,页式产生内部碎片,段页式消除外部碎片、仍有内部碎片。
3.6.4 段页式虚拟存储器
段页式
- 是:先分段、段内分页,地址结构 段号 ‖ 段内页号 ‖ 页内偏移。
- 不是:段表项存的是该段页表的基址与长度,不是段基址。
- 范围:无 TLB 时访存 3 次(段表 + 页表 + 取数),TLB 命中则 1 次;段长以页为单位向上取整。
3.6.5 虚拟存储器与 Cache 的比较
两者的根本差别
- 是:Cache 未命中约几十 ns,缺页约几 ms,相差约六个数量级——这一条推出下面全部差别。
- 范围:虚拟存储器一律全相联(缺页太贵,必须消除冲突缺失);只有写回没有写直达(写辅存太慢);缺页交给操作系统并可能切换进程(空等太浪费);交换单位大得多(固定开销占主导)。
透明性对照
- 是:Cache 对程序员和操作系统都透明;虚拟存储器对程序员透明、对操作系统不透明。
结构对应
- 是:块↔页、Cache 行↔页框、标记↔虚页号(在 TLB 中)、有效位↔装入位、脏位↔修改位、命中率↔
缺页率、替换算法↔页面置换算法。 - 范围:TLB 同时属于两边——用 Cache 的机制,服务虚拟存储器的目的。
高频范围限定清单
这张表集中列出本章最爱被抽掉限定条件的结论。 凡是记住了结论却忘了限定,考场上就会被反例打中。
| 结论 | 必须加上的限定 |
|---|---|
| ”SRAM 不需要刷新,所以不易失” | 错。易失 = 断电丢失,SRAM 同样易失;刷新与易失性无关 |
| ”RAM 和 ROM 不能统一编址” | 错。可以统一编址,靠片选译码分段 |
| ”ROM 不属于随机存取存储器” | 错。存取时间与地址无关,ROM 属于随机存取 |
| ”磁盘是随机存取存储器” | 错。是直接存取(DAM),存取时间与磁头位置有关 |
| ”带宽 = 传输位数 / 存取时间” | 错。分母是存取周期 |
| ”容量和带宽的 M 都是 | 只有容量按 |
| “SDRAM 与 CPU 同步所以一样快" | "同步”是接口同步;DRAM 核心延迟没变,只提高带宽 |
| ”DDR 提高了内存速度” | 提高的是数据率(带宽),CAS 延迟的纳秒数几乎不变 |
| ”刷新次数由存储器总容量决定” | 只由单片行数决定,扩展成多少片都不变 |
| ”异步刷新时刷新与访存可以同时进行” | 错。同一片内刷新期间无法访存,三种方式只是死区摆法不同 |
| ”分散刷新没有死区所以最好” | 代价是系统存取周期加倍;对 CPU 影响最小的是异步刷新 |
| ”Flash 属于 ROM 所以不能写” | 分类依据是非易失性;Flash 可写,但写前必须擦除、块擦页写 |
| ”8 片并联凑 64 位是多模块交叉编址” | 实质义不成立(无独立控制电路,不能重叠);这是位扩展 |
| ”多体交叉缩短了存取周期” | 错。只提高带宽,单次存取周期不变;且体数超过 |
| ”地址复用会影响主存容量计算” | 错。地址复用只在芯片内部,不进入”地址线根数 → 地址空间" |
| "题目没说编址单位就按字节算” | 应从数据总线宽度反推(按字编址);两种都算一遍看哪个落在选项里 |
| ”地址重叠是连接错误” | 错。重叠可接受,冲突(一址选多片)才是错误 |
| ”全译码就是把高位地址接进译码器” | 译码器的使能端也要用满,否则退化成部分译码 |
| ”磁盘换磁头比换磁道开销大” | 反了。换磁头是电子切换几乎免费,寻道最贵 |
| ”磁盘最小读写单位是 1 字节” | 错。是一个扇区 |
| ”平均旋转延迟一律取半圈” | 前提是目标扇区位置随机;连续读相邻扇区只付一次 |
| ”RAID 都能提高可靠性” | 错。RAID 0 无冗余,可靠性比单盘还差 |
| ”RAID 可以代替备份” | 错。防硬件故障,不防误删与损坏 |
| ”SSD 的块和文件系统的块是一回事” | 错。前者是擦除单位(几百 KB),后者是分配单位(几 KB) |
| “磨损均衡能延长 SSD 总寿命” | 只缩小磨损差距,不提高总擦写次数 |
| ”循环体时间局部性好是因为没有跳转” | 反了。时间局部性来自循环回跳,空间局部性才来自顺序执行 |
| ”块越大命中率越高” | 错。先升后降,块大则行数少、冲突增多、缺失代价升 |
| ”缺失次数 = 指令条数 × 缺失率” | 错。分母是访存次数,要乘”每条指令平均访存次数" |
| "直接映射也要用 LRU” | 错。目标行唯一,不需要替换算法 |
| ”相联度越高越好” | 收益在 4~8 路后趋平,而比较器面积与关键路径延迟线性增长 |
| ”组相联划组只有一种算法” | 有两种口径,答案不同;考场一律用”组号 = 块号 mod 组数”,统考不用蒋本珊口径 |
| ”LRU 也会出现 Belady 异常” | 错。栈算法不会;只有 FIFO 会 |
| ”硬件里计数器法效率低” | 只在软件成本模型下成立;硬件 |
| ”每次缺失都要执行替换算法” | 错。有空闲行时直接装入 |
| ”写回法和写直达都需要脏位” | 错。只有写回法需要 |
| ”写分配 / 非写分配影响写命中的行为” | 错。只在写不命中时才有区别 |
| ”Cache 一致性就是存储一致性模型” | 错。408 只考前者(同一地址的写顺序) |
| “虚存容量 = 主存 + 辅存” | 错。由虚拟地址位数决定 |
| ”TLB 未命中会产生缺页异常” | 错。TLB 未命中由 MMU 硬件自动查页表,不产生异常 |
| ”MMU 负责决定换出哪一页” | 错。MMU 只做翻译与检查,替换决策在操作系统 |
| ”页表项里有虚页号” | 错。虚页号是下标;TLB 项才有虚页号做标记 |
| ”段式和页式都要越界检查” | 只有段式需要(查段长),页内偏移天然不越界 |
| ”段页式的段表项存段基址” | 错。存的是该段页表的基址与长度 |
| ”段页式无 TLB 时访存 2 次” | 错。是 3 次(段表 + 页表 + 取数) |
| “Cache 和虚拟存储器可以二选一” | 错。串联并存,一个解决速度、一个解决容量 |
链接
- 🏠 返回总览:计算机组成原理第 3 章:存储系统总览
- 📜 原始提问档案:第 3 章 原始提问档案(本地资料)(36 条)
- 📖 上一章名词库:第 2 章名词库
- 📚 权威节号:王道 2026 教材目录