某个处理器使用大小为16 kB的完全关联的高速缓存。高速缓存块的大小为16个字节。假定主存储器是字节可寻址的,并且使用32位地址。处理器生成的地址中的“标记”和“索引”字段分别需要多少位?
(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
因为没有选项匹配,但是如果我们假设“行偏移”是“标记位”的一部分,
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)是正确的。
这个问题的测验