假设有一个 32 位字长的机器,即该机器中 1 个字4字节,其主存容量为 256K 字节, Cache 容量为 2K 字节,块长为 4 字,按字寻址,请设计 Cache 地址格式,给出详细的 步骤和思路:(a) 在直接映射方式下,设计并画出主存地址格式,并给出 Tag, Index 和 Offset 的 bit 位 (b) 在四路组相联映射方式下,设计并画出主存地址格式,并给出 Tag, Index 和 Offset 的 bit 位 (c) 在全相联映射方式下,设计并画出主存地址格式,并给出 Tag, 和 Offset 的 bit 位
时间: 2023-06-27 19:02:33 浏览: 79
(a) 在直接映射方式下,Cache 中共有 2K/4 = 512 个块,主存中共有 256K/4 = 65536 个块。因此,主存地址需要 16 位二进制数表示。Cache 地址格式可以设计为:
| Tag | Index | Offset |
| --- | ----- | ------ |
| 14 | 9 | 2 |
其中,Tag 占用 14 位,表示主存块号的高 14 位;Index 占用 9 位,表示主存块号的中间 9 位;Offset 占用 2 位,表示主存块内的字偏移量,因为块长为 4 字,所以只需要 2 位。
(b) 在四路组相联映射方式下,Cache 中共有 2K/4 = 512 个块,每个组中有 4 个块,因此共有 128 个组。主存中共有 256K/4 = 65536 个块。每个组对应主存中的 512/128 = 4 个块。因此,主存地址需要 16 位二进制数表示。Cache 地址格式可以设计为:
| Tag | Index | Offset |
| --- | ----- | ------ |
| 13 | 7 | 2 |
其中,Tag 占用 13 位,表示主存块号的高 13 位;Index 占用 7 位,表示主存块号的中间 7 位;Offset 占用 2 位,表示主存块内的字偏移量,因为块长为 4 字,所以只需要 2 位。
(c) 在全相联映射方式下,Cache 中共有 2K/4 = 512 个块,每个块可以映射到任意一个 Cache 块中。因此,主存地址需要 16 位二进制数表示。Cache 地址格式可以设计为:
| Tag | Offset |
| --- | ------ |
| 14 | 2 |
其中,Tag 占用 14 位,表示主存块号的高 14 位;Offset 占用 2 位,表示主存块内的字偏移量,因为块长为 4 字,所以只需要 2 位。因为全相联映射下没有 Index,所以不需要为 Index 分配 bit 位。
阅读全文