Appearance
存储层次全景模拟器使用指南
考情分析
存储层次是 408 的基础框架性知识,Cache、主存、虚拟内存的所有考点都建立在这个框架上。很多同学能背出"寄存器→Cache→主存→磁盘",但对速度差异的数量级没有直觉——"L1 比主存快 100 倍"说起来轻松,做题时却感受不到这个差距意味着什么。
这个模拟器用两个场景帮你建立直觉:
| 考点 | 你会在哪个场景看到 | 考频 |
|---|---|---|
| 六级存储层次结构 | 层次概览 | 🔥🔥🔥 |
| 各层速度/容量/成本的数量级 | 层次概览 | 🔥🔥 |
| Cache 命中/缺失的数据流动 | 数据访问旅程 | 🔥🔥🔥 |
| 局部性原理(时间/空间) | 右侧面板 | 🔥🔥🔥 |
场景一:层次概览
金字塔形的层次图,从上到下依次是:寄存器 → L1 Cache → L2 Cache → L3 Cache → 主存 → 磁盘。越上面越窄(容量小)、越快、越贵。
六层的关键数据
| 层次 | 容量 | 延迟 | 比上一层慢 | 技术 |
|---|---|---|---|---|
| 寄存器 | < 1 KB | < 1 ns | — | 触发器 |
| L1 Cache | 32-64 KB | ~1 ns | 3x | SRAM |
| L2 Cache | 256 KB-1 MB | ~5 ns | 5x | SRAM |
| L3 Cache | 4-64 MB | ~20 ns | 4x | SRAM |
| 主存 | 4-64 GB | ~100 ns | 5x | DRAM |
| 磁盘 | 256 GB-4 TB | ~10 ms | 100,000x | HDD/SSD |
数量级要记住
主存到磁盘的速度差距是 10 万倍。这就是为什么缺页(Page Fault)的代价如此巨大——一次缺页的时间够访问主存 10 万次。
点击任意一层,右侧面板会显示详细信息和考试要点。
场景二:数据访问旅程
选择"数据在哪一层命中",然后观看 CPU 逐层查找数据的动画:
- CPU 先问 L1 → 没有(缺失)→ 继续
- 问 L2 → 没有 → 继续
- 问 L3 → 没有 → 继续
- 去主存找 → 命中!
动画会用红色箭头表示"向下查找",绿色箭头表示"向上返回数据"。每一步显示累计延迟。
试着对比不同命中位置
- L1 命中:~1 ns(最理想)
- L3 命中:~26 ns(还不错)
- 主存命中:~126 ns(Cache 全部缺失的代价)
- 磁盘命中:~10,000,126 ns ≈ 10 ms(缺页!)
看完这个对比你就明白了:Cache 的命中率哪怕只差 1%,对性能的影响都可能是几十倍。
局部性原理
右侧面板始终显示两种局部性:
- 时间局部性:刚访问的数据很快会再次被访问(循环变量、栈帧)
- 空间局部性:刚访问的数据附近的数据也会被访问(数组遍历、顺序执行的指令)
为什么 Cache 这么小却够用?
因为局部性原理!程序的访问模式高度集中——90% 的访问只涉及 10% 的数据。只要这 10% 能放进 Cache(通常能),命中率就能达到 95% 以上。
考研高频考点速览
| 考点 | 考频 | 关键记忆 |
|---|---|---|
| SRAM vs DRAM | 🔥🔥🔥 | SRAM 快不用刷新(Cache),DRAM 慢要刷新(主存) |
| 存储层次的设计目标 | 🔥🔥🔥 | 速度接近 Cache、容量接近磁盘、成本接近磁盘 |
| 局部性原理 | 🔥🔥🔥 | 时间局部性 + 空间局部性是 Cache 有效的根本原因 |
| Cache 命中率的影响 | 🔥🔥 | 平均访问时间 = 命中时间 + 缺失率 × 缺失代价 |
| 多级 Cache 结构 | 🔥🔥 | L1 最快最小(核心独享),L3 最大最慢(多核共享) |