缓存缺失分类与 AMAT
更新时间:2026-10-01。要优化缓存先得分清缺失误因,3C/4C 模型是性能归因的基础。
本文要回答的问题
- 三类缺失各由什么造成,为什么对策不同?
- AMAT 公式怎么指导“该加缓存还是降延迟”?
一、3C / 4C
- Compulsory:首次访问不可避免,靠预取、增大 cache line 缓解。
- Capacity:工作集大于缓存,靠增大缓存/分块改善。
- Conflict:映射到同一组互相驱逐,靠提高相联度/改布局。
- Coherence(多核):被一致性无效化,需减少共享写/伪共享。
二、AMAT
AMAT = 命中时间 + 缺失率 × 缺失代价。注意降低缺失率和降低命中时间可能冲突(大缓存命中慢),要找综合最优。
三、常见坑
- 所有缺失都靠加缓存(compulsory 无效)。
- 只看缺失率不看缺失代价与 AMAT。
- 多核下漏算 coherence miss。
小结
3C/4C 让缺失可归因,AMAT 统一命中与缺失代价;不同缺失要对症下药。下一篇 缓存行大小权衡。
总结
缓存缺失不是单一现象:3C 模型把它分成 compulsory(首次访问不可避免)、capacity(工作集超过缓存)、conflict(同组互相驱逐),多核再加上 coherence(被一致性失效)成为 4C——每一类的对策完全不同,预取治 compulsory、扩容治 capacity、提相联度治 conflict、减少无效化治 coherence;而 AMAT = 命中时间 + 缺失率 × 缺失代价把它们统一到一个指标里,提醒你降缺失率与降命中时间可能互相冲突。优化缓存的第一步永远是归因:分不清缺失类型就盲目加缓存,往往花钱不讨好。