某计算机的主存地址位数为 32 位, 按字节编址。 假定数据 Cache 中最多存放 128 个主存块, 采用 4 路组相联方式, 块大小为 64Byte, 每块设置了 1位有效位。 采用一次性写回策略, 为此每块设置了 1 位“脏” 位。
要求:
分别指出主存地址中标记(Tag)、 组号(Index) 和块内地址(Offset) 3 部分的位置和位数。
因为块大小为 64B, 所以块内地址字段为 6 位; 因为 Cache 中有 128 个主存块, 采用 4 路组相联,Cache 分为 32 组(128+4=32), 所以组号字段为 5 位; 标记字段为剩余位, 32-5-6=21 位。
计算该数据 Cache 的总位数。
数据 Cache 的总位数应包括标记项的总位数和数据块的位数。 每个 Cache 块对应一个标记项, 标记项中应包括标记字段、 有效位和脏位(仅适用于写回法)。 故标记项的总位数=128x(21+1+1) =128×23=2944位。 数据块位数=128×64×8=65536 位, 所以数据 Cache 的总位数=2944+65536=68480 位。