学习目标

  • 理解 Cache 原理
  • 掌握局部性原理
  • 计算命中率

8.1 思考:访存为什么慢?

// 访问内存需要 100 周期
if (mem_read)
    wait 100 cycles;

CPI 会变得很大!

解决方案:Cache(缓存)

8.2 局部性原理

时间局部性

刚访问的数据,很快会再次访问。

空间局部性

访问某个地址,附近地址也会被访问。

例子:数组遍历

for (int i = 0; i < 100; i++)
    sum += arr[i];

8.3 Cache 基本概念

CPU ←→ Cache ←→ Memory
      1 周期    100 周期
  • 命中(Hit):数据在 Cache 中
  • 缺失(Miss):需要从内存读取
命中率 = 命中次数 / 总访问次数
平均访问时间 = 命中率 × 1 + (1 - 命中率) × 100

思考:命中率 90% 时,平均访问时间是多少?

下一步

第 9 章:直接映射 Cache

更新时间: