存储器层次结构

一、存储系统的第一性原理

1.1 根本矛盾

计算机存储系统的所有复杂性,源于一个不可消除的根本矛盾:

计算速度的指数级增长,与存储访问速度和成本增长之间的长期不匹配

这一矛盾在任何时代、任何架构下都成立。


1.2 三大不可变约束(稳定认知)

约束含义工程后果
延迟约束快的介质一定昂贵不能用“大而快”的单一存储
容量约束大容量介质一定慢必须引入分层
一致性约束多副本必然不一致必须付出同步代价

所有存储技术,本质上都是这三大约束下的工程折中方案


二、存储层次结构的统一抽象模型

2.1 层次化的必然性

存储层次结构不是设计选择,而是物理与经济规律的必然结果

统一模型:

目标:降低平均访问时间手段:分层 + 局部性代价:一致性与管理复杂度

2.2 各层的本质角色(抽象视角)

层级本质角色核心代价
Cache延迟屏障一致性复杂度
DRAM容量缓冲刷新与带宽
SSDIO 并行化写放大
HDD成本极小化寻道与旋转
Tape冷数据归档顺序访问

三、局部性原理(贯穿全篇的核心思想)

3.1 局部性是“程序结构”而非“硬件技巧”

局部性是算法与程序结构的属性,而不是存储介质的属性。


3.2 局部性驱动的系统设计

技术利用的局部性
Cache Line空间局部性
预取空间 + 时间
Write Buffer时间局部性
顺序 IO空间局部性

四、主存:容量与延迟的折中层

4.1 DRAM 的本质限制

DRAM 的慢不是“技术落后”,而是物理实现方式决定的。


4.2 数据组织与 ISA 设计原则

ISA 必须面对两个永恒问题

对齐的本质:

用空间换取更少的访存次数


4.3 字节序(Endianness)的本质


五、Cache:延迟优化层的系统复杂性源头

5.1 Cache 存在的根本原因

Cache 的目标不是提高峰值性能,而是降低平均访问延迟


5.2 Cache 的三大设计维度(稳定模型)

维度关注点
映射方式查找速度 vs 冲突概率
替换策略历史是否预测未来
写策略一致性传播成本

5.3 Cache 缺失的本质分类

类型本质原因
冷缺失第一次访问
冲突缺失映射受限
容量缺失局部性被打破

六、多核时代:一致性问题的不可避免

6.1 多核带来的新矛盾

性能优化引入副本,副本引入一致性问题

这是多核系统中无法回避的代价。


6.2 一致性协议的抽象本质

MESI 不是具体实现,而是以下思想的工程化:


6.3 性能与一致性的再次折中

所有优化,本质上都是暂时允许“看见旧世界”


七、内存模型:软件可见性的最终契约

7.1 为什么需要内存模型

如果没有内存模型,多核系统对软件而言是不可编程的。


7.2 内存屏障的抽象语义


7.3 TSO 的设计哲学

TSO 的本质:

在性能与可理解性之间,选择一个“人类还能推理”的平衡点。


八、外存系统:成本、可靠性与并行性

8.1 HDD 的物理决定论

所有优化,都是在规避“寻道”这个物理事实。


8.2 SSD 的新代价

优势新问题
无寻道写放大
高并行磨损不均

8.3 RAID 的本质抽象

RAID 解决的不是“快”,而是:

代价是:


九、NUMA:层次结构在空间上的延伸

9.1 NUMA 的本质

NUMA 不是新问题,而是“存储层次结构”在物理空间上的展开。


9.2 NUMA 的编程含义


十、稳定认知总结(长期有效)

10.1 永不过时的五条结论

  1. 存储一定是分层的
  2. 局部性是性能之源
  3. 副本必然带来一致性问题
  4. 一致性永远有性能代价
  5. 所有优化都是折中

10.2 如何使用这份知识

记住原理,而不是参数。

关联内容(自动生成)