MIPS 2 路高速缓存

MIPS 2-Way Cache

我有一个用于 MIPS 64 位架构的高速缓存,每块 4KB 的 2 路和 16 字行(对于每个块)。 我必须确定:

  1. [标签 |索引 |偏移量]

    每个字段的位大小

  2. 整个内存由多少bit组成?


我不知道我所做的是否正确,因为我没有结果,因为我们使用的是 64 位 MIPS 而不是 32 我认为一个词会由 8 组成字节而不是 4.

我通过 4KB / (16 words * 8 byte) = 32

计算出块数

然后我完成了32 / 2-way=16 --> INDEX

的4位

然后得到字和字节的偏移量如下:

16 个字 --> 4 位 字偏移量

8 字节 --> 3 位 字节偏移量

最后我计算出 TAG 为 64 - 4(index) - 4(word offset) - 3 (byte offset) = 53 bit

总位数为 53 tag + 64 + 1 validate = 118 乘以块数 (32) 将得到 3776 位。

我不太确定结果,有人可以帮我吗?

谢谢。

部分问题不是很清楚,我尽量猜一下。

假设:缓存大小为4KB,字为64位,内存为字节寻址。

信息:缓存行是 16 个字宽,它是一个 2-way set assoc 缓存。

Cacheline size = 16 word * 64 bits (8 byte) = 128 byte
Number of cachelines = 4 KB/128 B = 32
Number of blocks = 32 / 2 (2-way) = 16
As the memory is byte addressable, least 3 bits of the address can be ignored.
Next 4 bytes will be used to offset in a word in the 16 word cacheline.
Next bit of the address is ignored because its 2-way assoc
As there are 16 blocks, next 4 bits will be used to index a block.
That leaves 64 - (4 + 1 + 4 + 3) = 52 bits for the TAG.

TAG - 52 bits [bits 12 to 63]
Index - 4 bits [bits 8 to 11]
Offset - 4 bits [bits 3 to 6]

很难回答第二个问题,因为缓存通常每个缓存行都有额外的位,例如有效位等。为了简单起见,我们假设此缓存每个缓存行只有一个标记。这给了我们 52 位 * 16 块 * 块中的 2 行 = 1664 位 = 208 字节。

因此整个缓存大小为

= 4 KB + 208 B
= 4096 B + 208 B
= 4304 Bytes