直接映射缓存

概念

直接映射缓存(Direct-Mapped Cache)是最简单的缓存结构——每个组(Set)中只有 E=1 行。

访问过程

给定一个内存地址,缓存通过以下步骤确定是否命中:

  1. 从地址中提取组索引 s,定位到唯一的组
  2. 检查该组行的 valid 位
  3. 比较地址的 tag 与行中的 tag 4.如果 且 tag匹配 命中**,从块偏移位置读取数据 5.否则 不命中**,从下一级加载

冲突不命中问题

由于每个内存地址只能映射到一个固定的缓存行,容易产生冲突不命中:

// 如果 a 和 b 映射到同一缓存行,交替访问导致反复不命中
for (int i = 0; i < n; i++)
    a[i] += b[i];  // 如果 a 和 b 的地址间隔为 2^s * B

抖动(Thrashing)

当多个频繁访问的变量映射到同一个缓存行时,缓存行被频繁替换,导致缓存抖动——性能急剧下降。

优缺点

优点缺点
实现简单、硬件成本低冲突不命中率高
访问速度快容易发生抖动
适合小容量缓存空间利用率低

对比

对于冲突不命中问题,通过增加每组行数来缓解。


相关笔记:

链接到