直接映射缓存
概念
直接映射缓存(Direct-Mapped Cache)是最简单的缓存结构——每个组(Set)中只有 E=1 行。
访问过程
给定一个内存地址,缓存通过以下步骤确定是否命中:
- 从地址中提取组索引 s,定位到唯一的组
- 检查该组行的 valid 位
- 比较地址的 tag 与行中的 tag 4.如果 且 tag匹配 命中**,从块偏移位置读取数据 5.否则 不命中**,从下一级加载
冲突不命中问题
由于每个内存地址只能映射到一个固定的缓存行,容易产生冲突不命中:
// 如果 a 和 b 映射到同一缓存行,交替访问导致反复不命中
for (int i = 0; i < n; i++)
a[i] += b[i]; // 如果 a 和 b 的地址间隔为 2^s * B抖动(Thrashing)
当多个频繁访问的变量映射到同一个缓存行时,缓存行被频繁替换,导致缓存抖动——性能急剧下降。
优缺点
| 优点 | 缺点 |
|---|---|
| 实现简单、硬件成本低 | 冲突不命中率高 |
| 访问速度快 | 容易发生抖动 |
| 适合小容量缓存 | 空间利用率低 |
对比
对于冲突不命中问题,通过增加每组行数来缓解。
相关笔记:
链接到
- 上一个知识点:6.12 高速缓存存储器结构
- 下一个知识点:6.14 组相联缓存