某个处理器使用大小为 16 kB 的全关联缓存,缓存块大小为 16 字节。假设主存储器是字节可寻址的并使用 32 位地址。处理器生成的地址中的 Tag 和 Index 字段分别需要多少位?
(A) 24 位和 0 位
(B) 28 位和 4 位
(C) 24 位和 4 位
(D) 28 位和 0 位答案: (D)
说明:给定缓存块大小为 16 字节,因此块或字偏移量为 4 位。大小为 16 kB 的完全关联缓存,因此行偏移应为,
= cache size / block size
= 16 kB / 16 B
= 1 k
= 1024
= 10 bits Line or Index Offset
标记位大小将是,
= processor address size - (line offset + word offset)
= 32 - 10 - 4
= 18 bits tag size
因为,没有选项匹配,但是如果我们假设 Line Offset 是 Tag 位的一部分,因此,
Tag bits = 18+10 = 28 bits
Line or Index offset = 0 bits (since fully associative cache memory),
Word or block offset = 4 bits
替代方式:
我们知道在完全关联映射中,
Line size = block size = frame size
可以使用以下公式确定标签中的位数
Number of Tag bits
= Total number of bits in Physical Address - no of bits in Block offset
这里没有给出块偏移中的位数。可以使用
ceil(log2 Cache block size) = ceil(log2 16) = 4
所以,
Number of Tag bits = 32-4 = 28
完全关联映射中没有索引位,因此索引位 = 0
所以,选项(D)是正确的。
这个问题的测验