这是一个经典的架构对比,理解二者的异同能打通任督二脉。
| 特性 | Cache (SRAM - DRAM) | 虚拟存储器 (DRAM - Disk) |
|---|---|---|
| 目的 | 解决速度不匹配 | 解决容量不足 & 管理/安全 |
| 映射单位 | 块 (Block, e.g., 64B) | 页 (Page, e.g., 4KB) |
| 映射方式 | 直接/组相联 (硬件限制) | 全相联 (OS 软件管理) |
| 缺失处理 | 硬件处理 (微秒级,CPU 不切换) | OS处理 (缺页异常,毫秒级,进程挂起) |
| 写策略 | Write Back / Write Through | 通常 Write Back (写磁盘太慢了) |
| 透明性 | 对程序员/OS 完全透明 | 对应用程序员透明,对 OS 可见 |
深度思考
- 为什么 Cache 不用全相联? 因为速度是第一要务,硬件比较器太慢太贵。
- 为什么虚存必须全相联? 因为缺页代价太大(读磁盘),必须尽量利用内存的每一个角落,且页表是软件查的,灵活。