程序访问的局部性原理

  • 时间局部性:当前访问的数据近期很可能再次被访问
  • 空间局部性:当前访问数据附近的数据很可能即将被访问

Cache 的基本工作原理

  • 命中率 H = 命中次数 /(命中次数 + 访问主存次数)
  • Cache-主存系统效率 e = 访问 Cache 的时间 / 平均访问时间
  • Cache 的基本结构:存储体、地址映射机构、替换机构

Cache 和主存的映射方式

直接映射

  • 主存块只能映射到 Cache 中唯一指定的行
  • 映射关系:Cache 行号 = 主存块号 mod Cache 行数
  • 优点:结构简单
  • 缺点:空间利用率低,冲突率高

全相联映射

  • 主存块可以映射到 Cache 中任意行
  • 优点:空间利用率高,冲突率低
  • 缺点:速度慢,比较次数多

组相联映射

  • 主存块映射到 Cache 中特定组的任意行
  • 直接映射和全相联映射的折中
  • 优点:速度快,利用率高,现代计算机 Cache 常用

Cache 的主存块替换算法

  • 随机算法(RAND)
  • 先进先出算法(FIFO)
  • 近期最少使用算法(LRU)
  • 最不经常使用算法(LFU)

Cache 写策略

写直达法 Write-through

  • 写操作时数据既写入 Cache 又写入主存
  • 写操作时间 = 访问主存时间
  • Cache 块退出时无需写回主存

写回法 Write-back

  • 写操作只写入 Cache,不写入主存
  • 当 Cache 数据被替换出去时才写回主存
  • 写操作时间 = 访问 Cache 时间
  • 需要设置修改位(脏位)