这是一个经典的架构对比,理解二者的异同能打通任督二脉。

特性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 不用全相联? 因为速度是第一要务,硬件比较器太慢太贵。
  • 为什么虚存必须全相联? 因为缺页代价太大(读磁盘),必须尽量利用内存的每一个角落,且页表是软件查的,灵活。