存储器层次、分类与性能指标
为什么必须分层
理想存储器应同时具备大容量、低延迟、高带宽、低成本和掉电不失,但器件物理规律使这些目标相互牵制:越快的存储通常越贵、越小,越大的存储通常越慢。因此计算机把多种器件组织成层次,让程序主要看到较大空间,同时让热点数据尽量停留在较快层。
典型层次为:
寄存器 → Cache → 主存 → 辅存 → 离线/远程存储
从左到右通常有以下趋势:
| 指标 | 向右的总体趋势 |
|---|---|
| 容量 | 增大 |
| 每位成本 | 降低 |
| 访问延迟 | 增大 |
| CPU 直接访问能力 | 逐渐减弱 |
| 非易失性 | 通常增强 |
这只是总体规律,不是每个具体产品都严格单调。例如新型非易失存储器可能跨越传统边界,但 408 仍以经典层次为准。
层次能够成立:局部性
程序不会以相同概率访问所有地址,而会在一段时间内集中访问少量代码和数据。
- 时间局部性:刚访问过的对象很可能很快再次访问,如循环体指令、循环变量。
- 空间局部性:访问某地址后,很可能继续访问附近地址,如顺序取指、按行遍历数组。
- 顺序局部性:常作为空间局部性的特殊表现,下一次访问大概率是相邻后继地址。
Cache 用固定大小的块一次带入邻近数据,利用空间局部性;保留最近使用的数据,利用时间局部性。虚拟存储器以页为单位调入主存,也依赖同一原理,但它主要解决容量与地址空间问题。
四个常用分类维度
分类题先问“按什么分”,同一器件可同时属于多个类别。
按在系统中的作用
| 类别 | 位置与作用 | 典型实现 |
|---|---|---|
| 主存储器 | CPU 当前运行程序的主要驻留区,可被处理器地址机制直接访问 | DRAM/DDR,少量固件映射区 |
| 高速缓冲存储器 | 缓和 CPU 与主存速度差距 | SRAM Cache |
| 辅助存储器 | 长期保存大量程序和数据,经 I/O 与主存交换 | HDD、SSD |
| 控制存储器 | 在微程序控制器中保存微指令 | ROM 或可写控制存储器 |
寄存器属于 CPU 内部存储资源,通常不归入“主存”。
按存储介质
- 半导体存储器:SRAM、DRAM、ROM、Flash。
- 磁表面存储器:磁盘、磁带。
- 光存储器:CD、DVD、BD 等。
“半导体”“磁表面”说的是介质;“主存”“辅存”说的是系统位置,不能互相替代。
按存取方式
| 方式 | 定位特点 | 典型对象 |
|---|---|---|
| 随机存取 | 任一地址可直接选中,访问时间基本与地址无关 | SRAM、DRAM、ROM |
| 顺序存取 | 必须按记录先后顺序经过前面的内容 | 磁带 |
| 直接存取 | 先定位到大区域,再在区域内顺序/旋转定位,时间与位置有关 | 机械磁盘 |
| 相联存取 | 按内容的一部分并行匹配,而非按普通地址下标查找 | TLB、全相联 Cache 的标记比较 |
SSD 对主机暴露逻辑块并支持近似随机的块访问,但其 NAND 内部有页写、块擦和映射限制。408 分类题若在“随机/直接/顺序”中询问外存,必须看教材上下文,不能把 SSD 简化成普通 RAM。
按可改写性与易失性
- RAM 可随机读写,SRAM 和 DRAM 都是易失性存储器。
- ROM 家族通常非易失,但 PROM、EPROM、EEPROM、Flash 的可改写能力不同。
- 易失性只回答“断电是否丢失”,不回答“是否需要刷新”。SRAM 不刷新但仍易失;DRAM 通电后还必须正常刷新。
容量与组织表示
芯片规格常写为
:可寻址存储单元数,也称字数。 :每个存储单元的位数,也称存储字长。
总容量为:
编址单位决定地址空间
地址宽度为
- 按字节编址时
,地址空间为 。 - 按字编址时要知道一个字含多少字节。
地址空间是“能编号多少”,实际安装的物理存储容量可以更小。
三个性能量不要混
存取时间
存取时间
存取周期
存取周期
带宽
带宽描述单位时间最多能传多少数据。若一次传输宽度为
延迟与带宽可以一高一低
带宽高不等于第一次数据回来得快。DDR 通过双沿传输、突发和多 Bank 并行提高持续带宽,但打开行、列访问和调度仍有延迟。反过来,一个低延迟的小型存储器若接口很窄,也未必有很高的批量带宽。
做题先识别题目问的是:
- 首字延迟。
- 完成整个块传输的时间。
- 稳态每拍吞吐。
- 包含协议空拍的实际带宽。
层次存储器的平均访问时间
设第一层命中时间为
若题目给的是一次命中总时间
多级递归形式
若 L1 时间为
Cache 与虚拟存储器的分工
| 项目 | Cache 层次 | 虚拟存储层次 |
|---|---|---|
| 主要矛盾 | CPU 与主存速度差 | 主存容量、保护与地址空间 |
| 相邻层 | Cache ↔ 主存 | 主存 ↔ 辅存 |
| 交换单位 | Cache 块/行 | 页,或段 |
| 未命中处理 | 主要由硬件自动完成 | 缺页需要硬件陷入与 OS 协同 |
| 管理信息 | Tag、Valid、Dirty、替换状态 | 页表、TLB、权限、存在位等 |
二者都利用局部性,但“Cache 是小型虚拟内存”或“虚存就是大 Cache”都不够准确。
高频判断边界
- 随机存取表示访问时间基本不取决于地址位置,不表示每次访问一定只要一个 CPU 周期。
- 存取周期通常不小于存取时间。
- 主存容量大不等于地址空间一定大;地址宽度才限定可表示地址数。
- 数据总线宽度主要决定一次并行传多少,地址总线宽度主要决定可表示多少地址。
- 峰值带宽不包含效率损失,实际程序通常达不到峰值。
- 命中率很高也不能单独保证 AMAT 很低,缺失代价可能极大。
- 磁盘是直接存取,不是典型顺序存取;磁带才是典型顺序存取。
自测清单
- 为什么 SRAM 不需要刷新,却仍属于易失性存储器?
位地址按字节编址与按 字编址时,地址空间分别是多少? - 为什么总线频率和宽度的乘积通常只是峰值带宽的核心因子?
- AMAT 公式中的 miss penalty 是否已经包含命中层查询时间?
- Cache 与虚拟存储器都利用局部性,它们解决的首要问题有何不同?
链接
- 🏠 返回总览:计算机组成原理第 3 章:存储系统总览
- 下一节:SRAM、DRAM、ROM 与主存储器(本地资料)
- 性能基础:计算机性能指标与计算模板(本地资料)
- OS 对照:文件系统分层、VFS 与页缓存(本地资料)