程序访问的局部性原理
- 时间局部性:当前访问的数据近期很可能再次被访问
- 空间局部性:当前访问数据附近的数据很可能即将被访问
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 时间
- 需要设置修改位(脏位)