存储器 — 导航
这页先解决三个问题:数据通常放在哪、为什么要分层、为什么硬盘会比内存慢很多。
如果只想先建立整体印象,就顺着这页往下看;如果对某一层特别感兴趣,再点进对应专题。
🔗 一眼看懂存储器
一台计算机不会只靠一种存储器工作。CPU 处理数据时,最希望数据就在自己身边,但越快的存储器通常越贵、容量也越小,所以实际机器只能把不同速度、不同容量、不同成本的存储器组合起来用。
从 CPU 往外看,常见顺序是:寄存器 → CPU Cache → 内存 → SSD/HDD 硬盘。通常越靠近 CPU,访问越快、容量越小、单位成本越高;越远离 CPU,访问越慢、容量越大、单位成本越低。
核心导航
🔴寄存器
寄存器是离 CPU 最近的一层,处理速度最快,但数量非常少。CPU 正在算的那个数据,往往就先放在这里。
🔴CPU Cache
CPU Cache 是寄存器外面的高速缓冲层,主要负责把“很快就要再用到的数据”提前留在 CPU 附近。这里不只有 L1、L2、L3 分层,还包括 Cache Line、命中与未命中、映射方式、局部性这些核心机制。
[→ 点进 CPU Cache](CPU Cache.md)
如果你想继续看多核下怎么保证各核心缓存不打架,看这里:
🔴内存
内存是 CPU 外部最重要的工作区。程序运行时,代码和数据通常先放在内存里,CPU 再从内存把热点数据搬进 Cache。
🔴SSD / HDD 硬盘
硬盘负责长期保存大量数据,断电后内容也不会丢。它容量大、价格低,但访问速度远慢于内存,更不用说寄存器和 Cache。
它们是怎么配合的
CPU 一般不会直接跨好几层去拿数据,而是按层次逐级取用。粗略理解就是:数据先长期放在硬盘,需要运行时装进内存,CPU 真的要用时再把热点数据搬进 Cache,最后进入寄存器参与运算。
如果你想专门看“为什么会形成这种一层层的结构、CPU 访问数据时会按什么顺序找”,看这里:
为什么差距会这么大
寄存器、L1 Cache、内存、SSD、机械硬盘之间的延时差距,往往跨越多个数量级。这种差距决定了:只要数据没能留在更靠上的那一层,程序体感性能就会迅速下降。
如果你想单独看不同层之间的大致延时、价格和数量级差异,看这里:
深入入口
- 寄存器
- [CPU Cache](CPU Cache.md)
- 缓存一致性与MESI
- 内存
- SSD与HDD硬盘
- 存储器层次结构
- 存储器价格与性能差距
参考主线:小林coding《2.2 磁盘比内存慢几万倍?》