本题采用直接映射的 cache,已知请求访问的字地址依次为: 3,180,43,2,191,88,190,14,181,44,186,253 对于一个 3 路组相联,块大小为 2 个字,总容量为 24 个字,使用 LRU 替换算法的 cache,画图表指出 cache 中最终的内容,对每个访问,标识出索引位,标记位,块偏移位,以及当前访问是命中还是缺失。
时间: 2023-09-10 17:07:34 浏览: 73
计算机体系与结构 直接相联映射全相联映射组相联映射 Cache映射机制与逻辑实现 计算机机体系与结构课程设计
首先,我们需要计算出 cache 中共有 12 个块(24 字节 / 2 字节块大小),每组有 4 个块(12 块 / 3 路)。每个块中包含一个字地址和相应的数据。接下来,我们按照访问顺序逐步填充 cache。
1. 访问地址 3
索引位为 3 mod 4 = 3,标记位为 3 / 4 = 0,块偏移位为 3 mod 2 = 1。
此时 cache 为空,无法命中,填充块后为:
| Index | Tag | 0 | 1 |
|-------|-----|---|---|
| 3 | 0 | | 3 |
2. 访问地址 180
索引位为 180 mod 4 = 0,标记位为 180 / 4 = 45,块偏移位为 180 mod 2 = 0。
此时 cache 为空,无法命中,填充块后为:
| Index | Tag | 0 | 1 |
|-------|-----|---|---|
| 0 | 45 | | 180 |
3. 访问地址 43
索引位为 43 mod 4 = 3,标记位为 43 / 4 = 10,块偏移位为 43 mod 2 = 1。
此时 cache 中第一组的所有块都未被使用,因此无法命中,填充块后为:
| Index | Tag | 0 | 1 |
|-------|-----|---|---|
| 3 | 10 | | 43 |
4. 访问地址 2
索引位为 2 mod 4 = 2,标记位为 2 / 4 = 0,块偏移位为 2 mod 2 = 0。
此时 cache 为空,无法命中,填充块后为:
| Index | Tag | 0 | 1 |
|-------|-----|---|---|
| 2 | 0 | | 2 |
5. 访问地址 191
索引位为 191 mod 4 = 3,标记位为 191 / 4 = 47,块偏移位为 191 mod 2 = 1。
此时 cache 中第一组的最早被使用的块是第一块,因此需要替换该块。替换前,将该块中的数据写回内存。替换后,cache 为:
| Index | Tag | 0 | 1 |
|-------|-----|---|---|
| 3 | 47 | |191|
6. 访问地址 88
索引位为 88 mod 4 = 0,标记位为 88 / 4 = 22,块偏移位为 88 mod 2 = 0。
此时 cache 中第二组的所有块都未被使用,因此无法命中,填充块后为:
| Index | Tag | 0 | 1 |
|-------|-----|---|---|
| 0 | 22 | | 88 |
7. 访问地址 190
索引位为 190 mod 4 = 2,标记位为 190 / 4 = 47,块偏移位为 190 mod 2 = 0。
此时 cache 中第三组的所有块都未被使用,因此无法命中,填充块后为:
| Index | Tag | 0 | 1 |
|-------|-----|----|----|
| 2 | 47 |190 | |
8. 访问地址 14
索引位为 14 mod 4 = 2,标记位为 14 / 4 = 3,块偏移位为 14 mod 2 = 0。
此时 cache 中第三组的所有块都未被使用,因此无法命中,填充块后为:
| Index | Tag | 0 | 1 |
|-------|-----|---|---|
| 2 | 3 |14 | |
9. 访问地址 181
索引位为 181 mod 4 = 1,标记位为 181 / 4 = 45,块偏移位为 181 mod 2 = 1。
此时 cache 中第二组的最早被使用的块是第一块,因此需要替换该块。替换前,将该块中的数据写回内存。替换后,cache 为:
| Index | Tag | 0 | 1 |
|-------|-----|---|-----|
| 1 | 45 | | 181 |
10. 访问地址 44
索引位为 44 mod 4 = 0,标记位为 44 / 4 = 11,块偏移位为 44 mod 2 = 0。
此时 cache 中第二组的第一块已经被替换,因此无法命中,填充块后为:
| Index | Tag | 0 | 1 |
|-------|-----|----|----|
| 0 | 11 | 44 | |
11. 访问地址 186
索引位为 186 mod 4 = 2,标记位为 186 / 4 = 46,块偏移位为 186 mod 2 = 0。
此时 cache 中第三组的最早被使用的块是第二块,因此需要替换该块。替换前,将该块中的数据写回内存。替换后,cache 为:
| Index | Tag | 0 | 1 |
|-------|-----|----|-----|
| 2 | 46 |186 | |
12. 访问地址 253
索引位为 253 mod 4 = 1,标记位为 253 / 4 = 63,块偏移位为 253 mod 2 = 1。
此时 cache 中第二组的最早被使用的块是第二块,因此需要替换该块。替换前,将该块中的数据写回内存。替换后,cache 为:
| Index | Tag | 0 | 1 |
|-------|-----|----|-----|
| 1 | 63 | | 253 |
最终的 cache 内容为:
| Index | Tag | 0 | 1 |
|-------|-----|----|-----|
| 0 | 11 | 44 | |
| 1 | 63 | | 253 |
| 2 | 46 |186 | |
| 3 | 47 | | 191 |
阅读全文