{T}

存储器分级

存储器分级(Memory Hierarchy)根据数据的使用频率,用不同的物理存储介质构成层次结构:高频数据放在离 CPU 最近、最快但最贵的存储中,低频数据放在更远、更慢但更廉价的存储中,整体形成缓存体系。

为什么需要分级

理想的存储器同时具备速度快、体积小、容量大、能耗低、断电不丢失等特性,但这些需求在物理上相互冲突:

  • 体积小则容量受限;
  • 元件密度高则散热压力大(CPU 需风扇或水冷);
  • 离 CPU 越远,信号传输延迟越大。1GHz 时钟周期为 (1/10^9) 秒,光速 (3\times10^8) m/s,一个周期内光仅前进 30 cm,因此距离对速度影响显著;
  • 相同价格下,速度越快能耗越高、发热越大。

因此必须用分级策略折中,而非单一存储器满足所有需求。

分级层次

![存储器分级](/os-images/06-存储器分级:L1 Cache 比内存和 SSD 快多少倍__Ciqc1F9kgVGAD_IMAACXR1QKcDo779.png)

从快到慢依次为:寄存器、L1-Cache、L2-Cache、L3-Cache、内存、硬盘/SSD。

寄存器(Register)

紧邻 CPU 控制单元与计算单元,速度最快、造价最高。数量通常在几十到几百之间,每个存若干字节(32 位 CPU 多数寄存器 4 字节,64 位多数 8 字节)。要求在约半个 CPU 时钟周期内完成读写。

L1-Cache

位于 CPU 内,大小几十 Kb 到几百 Kb,读写速度 2~4 个 CPU 周期。

L2-Cache

位于 CPU 内,比 L1 更远,大小视型号(常见约 2M),速度 10~20 周期。

L3-Cache

位于 CPU 内,比 L2 更远,大小视型号(如 i9:512K L1 / 2M L2 / 16M L3),速度 20~60 周期。

内存(Memory)

半导体硅材料,插在主板上经总线连接 CPU,大小从 16G 到数 T,速度约 200~300 周期。

SSD 与硬盘

SSD 断电后数据保留,但比内存慢 10~1000 倍;传统机械硬盘比内存慢约 100 万倍,已逐渐被 SSD 替代。

![SSD 与硬盘](/os-images/06-存储器分级:L1 Cache 比内存和 SSD 快多少倍__Ciqc1F9kgMWAAU1JAABxd6qpCo0763.png)

访问数据时,依次查询寄存器 → L1 → L2 → L3 → 内存,逐层下探。

缓存条目结构

缓存与内存都是线性存储。缓存可视为多列表格,每行一个缓存条目,本质是一个 Key-Value 存储:Key 为内存地址,Value 为地址的缓存值。

  • 方案 1(线性遍历):每条目存"内存地址 + 缓存值",查询时遍历所有条目比对地址。最坏需检查全部条目,不可行。
  • 方案 2(哈希定位):用 地址 % N 这类哈希函数将内存地址映射到固定条目编号,再比对条目内地址是否一致。避免全表扫描,是缓存查找的基础。

指令预读

CPU 执行指令约 26 周期,而内存读取需 200300 周期。为避免每条指令都卡在内存读取,CPU 会将后续几十条到上百条指令预读进 L1-Cache(2~4 周期,可跟上执行速度)。

为避免数据缓存覆盖指令缓存,L1-Cache 通常分为指令区数据区两部分。L2/L3 不参与指令预读,无需分区。

缓存命中率

  • 命中(Hit):在缓存中找到所需数据。
  • 穿透(Miss):未在缓存中找到,需下探。

统计上 L1 命中率约 80%,L1/L2/L3 合计命中率约 95%。高命中率使应用程序大多无需手动操作寄存器——缓存已保证性能,手动优化易出错且收益有限。

性能对比

级别位置典型大小读写速度(CPU 周期)断电保留造价
寄存器CPU 内,紧邻计算单元几十~几百个(4/8 字节)约 0.5最贵
L1-CacheCPU 内几十 Kb~几百 Kb2~4
L2-CacheCPU 内约 2M10~20中高
L3-CacheCPU 内约 16M20~60
内存主板,经总线16G~数 T200~300较低
SSD/硬盘独立设备数百 G~数 T比内存慢 10~1000 倍(硬盘再慢约 100 万倍)最低

离 CPU 越近,速度越快、造价越高、容量越小。

量级估算:内存比 SSD 快 101000 倍,L1 Cache 比内存快约 100 倍,因此 L1 Cache 比 SSD 快约 1000100000 倍。

小结

存储器分级用"快而贵"的存储承接高频数据、"慢而廉"的承接低频数据,构成缓存体系。所有缓存系统设计都可归结为存储资源的分级,核心关注条目结构、查找算法、命中率与置换策略(置换算法见并发控制篇)。