题目
一个cache有64行组成,主存储器[1]包含4K个块。若cache采用全相联映射[2]方式,cache中行的标记为____位。
一个cache有64行组成,主存储器[1]包含4K个块。若cache采用全相联映射[2]方式,cache中行的标记为____位。
题目解答
答案
首先,我们需要确定主存储器块的数量和缓存的行数。主存储器包含4K个块,其中1K块等于1024块(因为1K = 2^10),所以主存储器包含4 * 1024 = 4096块。
缓存有64行,每行对应一个主存储器块。因为采用全相联映射方式,每个主存储器块可以映射到任何一个缓存行中,因此不需要考虑索引位。所以,每行的标记位需要足够来区分主存储器中的块。因为主存储器块的数量是4096,那么标记位需要足够表示4096个不同的块,即标记位数为log2(4096) = 12位。
所以,cache中行的标记位为12位。
解析
全相联映射的特点是主存中的任意一个块都可以映射到Cache中的任意一行。此时,标记位的作用是唯一标识对应的主存块。由于主存共有4K(即4096)个块,需要计算区分这些块所需的二进制位数。关键在于确定标记位的位数,即计算$\log_2(\text{主存块数})$。
-
主存块数计算
题目中主存储器包含4K个块,其中1K=1024,因此总块数为:
$4 \times 1024 = 4096.$ -
标记位位数计算
全相联映射下,每个Cache行的标记需唯一标识主存中的4096个块。所需位数为:
$\log_2(4096) = 12 \text{位}.$
因此,标记位需要12位。