存储层次结构
引入
词汇
| English | 释义 | 拼音 |
|---|---|---|
| memory hierarchy | 存储层次结构 | cún chǔ céng cì jié gòu |
| locality | 局部性 | jú bù xìng |
| direct-mapped cache | 直接映射缓存 | zhí jiē yìng shè huǎn cún |
| tag/tæɡ/ | 标记 | biāo jì |
| index/ˈɪndeks/ | 索引 | suǒ yǐn |
| block offset | 块内偏移 | kuài nèi piān yí |
| average memory access time | 平均访存时间 | píng jūn fǎng cún shí jiān |
| evicts | 驱逐 | qū zhú |
切分地址
- 存储层次结构 memory hierarchy 把小而快叠在大而慢上,靠局部性 locality 买单:直接映射缓存 direct-mapped cache 给每个块唯一槽位,地址切成标记 tag | 索引 index | 块内偏移 block offset。
- 课程缓存:4 KiB、16 字节行 $\Rightarrow$ 256 行 $\Rightarrow$ 偏移 4 位、索引 8 位、标记 20 位。地址 $0x4A8$:偏移 8、索引 74。

{exercise:uni-cs0604-split}
练习
4 KiB 直接映射、16 字节行的缓存有——位索引。
难度 1/5 · 今日首次完成可获 100 金币及少量额外奖励
256 行要 8 位索引;偏移 4、标记 20。
AMAT 给未命中定价
- 平均访存时间 average memory access time $= t_{\text{hit}} + p_{\text{miss}} \times t_{\text{penalty}}$:命中 1 周期、未命中率 2%、代价 100 周期,AMAT $= 1 + 0.02 \times 100 = 3$ 周期——未命中减半到 1%,AMAT $= 2$。
- 敏感度对未命中线性、对命中不然:层次结构成也局部性败也局部性。映射到 74 号行的任何其他块都会驱逐 evicts 现任——一个比较器的代价。
{exercise:uni-cs0604-amat}
练习
命中 1 周期、未命中率 2%、代价 100:AMAT 为——
难度 1/5 · 今日首次完成可获 100 金币及少量额外奖励
1+0.02×100=3;敏感度由未命中决定。
布局即局部性
- 按行扫 $64 \times 64$ int 数组、16 字节行(每行 4 个 int):第一次未命中、随后三次命中——25% 未命中率,仅强制性。
- 步长 16 的访问每次都未命中——100%。同一数组、同一缓存、四倍 AMAT:布局是性能特性。
{exercise:uni-cs0604-layout}
练习
16 字节行、按行扫 int 的未命中率为——
难度 1/5 · 今日首次完成可获 100 金币及少量额外奖励
每行四个 int:一次未中三次命中——25%。