高速缓存存储器结构

地址划分

内存地址被划分为三个字段(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 映射

使用地址的中低位作为组索引,可以使相邻的块映射到不同的组,避免相邻数据冲突,充分利用空间局部性。


相关笔记:

链接到