组相联缓存
概念
组相联缓存(Set-Associative Cache)中每个组(Set)包含 E 行(E > 1),称为 E 路组相联。
访问过程
- 从地址中提取组索引 s,定位到目标组
- 并行检查组内 所有 E 行 的 valid 位和 tag 3.如果任何一行匹配 命中** 4.如果都不匹配 不命中**,选择一个行替换
替换策略
当组已满且需要加载新块时,需要选择一个行替换:
LRU(Least Recently Used)
- 替换最近最少被使用的行
- 效果最好,但实现复杂(需要维护访问顺序)
- 通常用近似 LRU 实现
FIFO(First In, First Out)
- 替换最早加载的行
- 实现简单,但可能替换掉活跃数据
随机替换
- 随机选择一行替换
- 实现最简单,性能尚可
相联度与性能
| 相联度 | 特点 | 典型用途 |
|---|---|---|
| E=1(直接映射) | 简单、快、冲突高 | 早期 CPU |
| E=2~16(组相联) | 平衡成本和性能 | L1/L2 缓存 |
| E=全部(全相联) | 无冲突、搜索慢 | TLB |
减少冲突
组相联有效减少 的抖动问题,通过为同一组提供多个缓存行来容纳更多数据。
相关笔记:
链接到
- 上一个知识点:6.13 直接映射缓存
- 下一个知识点:6.15 全相联缓存
- 相关知识点: