MIPS 2 路高速缓存
MIPS 2-Way Cache
我有一个用于 MIPS 64 位架构的高速缓存,每块 4KB 的 2 路和 16 字行(对于每个块)。
我必须确定:
[标签 |索引 |偏移量]
每个字段的位大小
整个内存由多少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
我有一个用于 MIPS 64 位架构的高速缓存,每块 4KB 的 2 路和 16 字行(对于每个块)。 我必须确定:
[标签 |索引 |偏移量]
每个字段的位大小
整个内存由多少bit组成?
我不知道我所做的是否正确,因为我没有结果,因为我们使用的是 64 位 MIPS 而不是 32 我认为一个词会由 8 组成字节而不是 4.
我通过 4KB / (16 words * 8 byte)
= 32
然后我完成了32 / 2-way
=16
--> INDEX
然后得到字和字节的偏移量如下:
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