缓存命中与不命中
缓存命中(Cache Hit)
当程序访问的数据已在缓存中时,称为缓存命中。此时数据可以直接从缓存读取,速度快。
缓存不命中(Cache Miss)
当程序访问的数据不在缓存中时,称为缓存不命中。需要从下一级存储器(如主存)加载数据到缓存。
不命中的三种类型
| 类型 | 说明 | 特征 |
|---|---|---|
| 强制不命中 | 第一次访问该块 | 不可避免,次数固定 |
| 容量不命中 | 缓存容量不足以容纳所有数据 | 需增加缓存大小 |
| 冲突不命中 | 映射到同一组的多个块交替访问 | 可通过相联度缓解 |
冷不命中(Cold Miss)
强制不命中也称为冷不命中(Cold Miss),当程序首次启动时,缓存为空,所有访问都是冷不命中。
放置策略(Placement Policy)
- 决定数据块放入缓存的哪个位置
- 详见
- 直接映射、组相联、全相联
替换策略(Replacement Policy)
当缓存已满时,选择哪个块被替换:
- LRU(最近最少使用)— 效果最好
- FIFO(先进先出)— 实现简单
- 随机替换 — 实现简单,性能尚可
相关笔记:
链接到
- 上一个知识点:6.10 编写缓存友好代码
- 下一个知识点:6.12 高速缓存存储器结构