高速缓存存储器结构
地址划分
内存地址被划分为三个字段(t/s/b),用于定位缓存中的数据:
| 标记 t 位 | 组索引 s 位 | 块偏移 b 位 |
- t(Tag):标记位,用于区分映射到同一组的不同块
- s(Set index):组索引,选择缓存中的哪个组
- b(Block offset):块内偏移,选择块内的哪个字节
缓存参数
- S = 2^s 个组(Set)
- E = 每组中的行数(相联度)
- B = 2^b 字节的块大小
- 总容量 C = S × E × B
缓存的组成
缓存
├── 组 0
│ ├── 行 0(valid位 + 标记 + 数据块)
│ ├── 行 1
│ └── ...
├── 组 1
└── ...
每行包含:
- valid 位:该行是否有效
- tag:地址的标记部分
- 数据块:连续的 B 字节数据
为什么用中低位做 set 映射
使用地址的中低位作为组索引,可以使相邻的块映射到不同的组,避免相邻数据冲突,充分利用空间局部性。
相关笔记:
链接到
- 上一个知识点:6.11 缓存命中与不命中
- 下一个知识点:6.13 直接映射缓存