存储器层次、分类与性能指标

为什么必须分层

理想存储器应同时具备大容量、低延迟、高带宽、低成本和掉电不失,但器件物理规律使这些目标相互牵制:越快的存储通常越贵、越小,越大的存储通常越慢。因此计算机把多种器件组织成层次,让程序主要看到较大空间,同时让热点数据尽量停留在较快层。

典型层次为:

寄存器 → 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 通电后还必须正常刷新。

容量与组织表示

芯片规格常写为 位:

  • :可寻址存储单元数,也称字数。
  • :每个存储单元的位数,也称存储字长。

总容量为:若 ,芯片内部通常需要 位地址信息。DRAM 可能把行、列地址分时复用到同一组引脚上,但逻辑地址位数并未减少。

编址单位决定地址空间

地址宽度为 位时共有 个地址。必须再乘编址单位:其中 为每个地址对应的字节数。

  • 按字节编址时 ,地址空间为 。
  • 按字编址时要知道一个字含多少字节。

地址空间是“能编号多少”,实际安装的物理存储容量可以更小。

三个性能量不要混

存取时间

存取时间 是从发出一次访问请求,到数据可用或写入完成所需的时间,描述一次访问的延迟。

存取周期

存取周期 是连续两次独立存储器操作开始之间允许的最短时间:DRAM 读出后要恢复、预充电,因而本次数据已经可用后,阵列仍可能尚未准备好接受下一次独立访问。考试若问“一个存取周期能否连续发起下一次”,看的是 ,不是只看 。

带宽

带宽描述单位时间最多能传多少数据。若一次传输宽度为 bit,有效传输速率为 transfers/s,则理论峰值为:若总线时钟为 ,每周期传 次,则 。实际带宽还要乘有效利用率 :地址阶段、命令阶段、等待、仲裁、刷新、总线换向和不连续请求都会使 。

延迟与带宽可以一高一低

带宽高不等于第一次数据回来得快。DDR 通过双沿传输、突发和多 Bank 并行提高持续带宽,但打开行、列访问和调度仍有延迟。反过来,一个低延迟的小型存储器若接口很窄,也未必有很高的批量带宽。

做题先识别题目问的是:

  • 首字延迟。
  • 完成整个块传输的时间。
  • 稳态每拍吞吐。
  • 包含协议空拍的实际带宽。

层次存储器的平均访问时间

设第一层命中时间为 ,命中率为 ,未命中后额外付出的代价为 ,则:这里 明确定义为已经查完第一层以后新增的时间。

若题目给的是一次命中总时间 和一次未命中总服务时间 ,则应写:两式都可以,不能把第一层查询时间重复加两次。

多级递归形式

若 L1 时间为 ,L1 未命中率为 ;到 L2 后的访问时间为 ,L2 的局部未命中率为 ;再向下的代价为 :局部未命中率是“已经到达该级的访问中有多少未命中”;全局未命中率则以所有 CPU 访存为分母。多级题必须先辨分母。

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 与页缓存(本地资料)