| 项目 | 值 |
|---|---|
| 层次 | 寄存器 → L1 Cache → L2 Cache → 主存 → 磁盘 → 磁带 |
| 设计依据 | 局部性原理(时间 + 空间) |
| Cache 命中率 | 典型 90%~99% |
| 主存 ~ 磁盘 | 虚拟存储器(OS 管理) |
| Cache ~ 主存 | 硬件自动管理 |
| 速度比 | 寄存器 : Cache : 主存 ≈ 1 : 10 : 100 |
计算机采用多级层次结构,核心思想:用少量高速存储器满足大部分访问需求。
寄存器 ← CPU 内部,最快
L1 Cache ← SRAM,几 ns
L2 Cache ← SRAM,十几 ns
主存(DRAM) ← 几十 ns
磁盘/SSD ← 几 ms(机械磁盘)
磁带/光盘 ← 离线存储
设命中率为 $H$,访问 Cache 时间为 $t_1$,访问主存时间为 $t_2$:
| 比较项 | Cache-主存 | 主存-磁盘 |
|---|---|---|
| 管理方式 | 硬件自动 | OS(虚拟存储器) |
| 地址映射 | 主存地址 → Cache 行 | 虚地址 → 物理地址 |
| 数据交换单位 | Cache 行(字块) | 页面(4KB) |
| 未命中处理 | 从主存调入 Cache | 从磁盘调入主存(缺页) |
| 透明性 | 对程序员透明 | 对应用程序员透明 |
| 性质 | 说明 |
|---|---|
| 局部性原理 | 层次化存储的理论基础 |
| 时间局部性 | 循环变量、栈操作 |
| 空间局部性 | 数组遍历、顺序执行 |
| 命中率 | 典型 > 95%,越高越好 |
| 平均访问时间 | $H \cdot t_{cache} + (1-H) \cdot t_{main}$ |
| Cache 效率 | $e = t_1 / t_{avg}$,越大越好 |
Cache 访问 10ns,主存访问 100ns,命中率 95%:
平均时间 = 0.95×10 + 0.05×100 = 9.5 + 5 = 14.5ns
加速比 = 100 / 14.5 ≈ 6.9 倍
| 考法 | 解题套路 |
|---|---|
| 求平均访问时间 | $H \cdot t_1 + (1-H) \cdot t_2$ |
| 求加速比 | 无 Cache 时间 / 平均时间 |
| 局部性原理应用 | 判断程序片段体现哪种局部性 |
| 层次化依据 | 速度-容量-价格权衡 + 局部性原理 |
| Cache 效率 | $e = t_{cache} / t_{avg}$ |
↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。