题目
30.一个组相联映射的 Cache 由 64 块组成,每组内包含 4 块。主存包含 4096 块,每块由 128 字组成,访存地址为字地址。试问主存和 Cache 的地址各位几位?画出主存地址格式。
30.一个组相联映射的 Cache 由 64 块组成,每组内包含 4 块。主存包含 4096 块,每块由 128 字组成,访存地址为字地址。试问主存和 Cache 的地址各位几位?画出主存地址格式。
题目解答
答案
解析:Cache 每块有 128 字,由此得 b=log2128=7;主存地址大小为:4096 块*128 字=219 字,地址位共 19 位由组相连映射格式,可算 r=log24=2;q=log216=4;c=log264=6;s=19-7-4=8;主存地址:主存字块地址组地址字块内地址s=t+rq=c-rb847解二:cache 组数:64/4=16 ,Cache 容量为:64*128=213字,cache 地址 13 位主存共分 4096/16=256 区,每区 16 块主存容量为:4096*128=219字,主存地址 19 位,地址格式如下:主存字块标记(8 位)组地址(4 位)字块内地址(7 位)
解析
步骤 1:确定 Cache 和主存的块大小
- Cache 每块有 128 字,由此得 b = log2(128) = 7。
- 主存每块也有 128 字,因此主存块大小也是 128 字。
步骤 2:确定 Cache 和主存的总容量
- Cache 总共有 64 块,因此 Cache 容量为 64 * 128 字 = 2^13 字。
- 主存总共有 4096 块,因此主存容量为 4096 * 128 字 = 2^19 字。
步骤 3:确定 Cache 和主存的地址位数
- Cache 地址位数为 log2(2^13) = 13 位。
- 主存地址位数为 log2(2^19) = 19 位。
步骤 4:确定组相联映射的组数和组地址位数
- Cache 由 64 块组成,每组内包含 4 块,因此组数为 64 / 4 = 16 组。
- 组地址位数为 log2(16) = 4 位。
步骤 5:确定主存地址格式
- 主存地址由三部分组成:主存字块标记、组地址和字块内地址。
- 主存字块标记位数为 19 - 7 - 4 = 8 位。
- 组地址位数为 4 位。
- 字块内地址位数为 7 位。
- Cache 每块有 128 字,由此得 b = log2(128) = 7。
- 主存每块也有 128 字,因此主存块大小也是 128 字。
步骤 2:确定 Cache 和主存的总容量
- Cache 总共有 64 块,因此 Cache 容量为 64 * 128 字 = 2^13 字。
- 主存总共有 4096 块,因此主存容量为 4096 * 128 字 = 2^19 字。
步骤 3:确定 Cache 和主存的地址位数
- Cache 地址位数为 log2(2^13) = 13 位。
- 主存地址位数为 log2(2^19) = 19 位。
步骤 4:确定组相联映射的组数和组地址位数
- Cache 由 64 块组成,每组内包含 4 块,因此组数为 64 / 4 = 16 组。
- 组地址位数为 log2(16) = 4 位。
步骤 5:确定主存地址格式
- 主存地址由三部分组成:主存字块标记、组地址和字块内地址。
- 主存字块标记位数为 19 - 7 - 4 = 8 位。
- 组地址位数为 4 位。
- 字块内地址位数为 7 位。