某机按字节编址,主存容量为1MB,采用两路组相联方式(每组仅有两块)的Cache容量为64KB,每个数据块为256B。己知访问开始前第2组(组号为1)的地址阵列内容如下图所示(第一列为组内块号)。Cache采用LRU替换策略。 若CPU要顺序访问地址为

admin2018-07-17  45

问题 某机按字节编址,主存容量为1MB,采用两路组相联方式(每组仅有两块)的Cache容量为64KB,每个数据块为256B。己知访问开始前第2组(组号为1)的地址阵列内容如下图所示(第一列为组内块号)。Cache采用LRU替换策略。

若CPU要顺序访问地址为20124H、58100H、60140H和60138H等4个主存单元。上述4个数能否直接从Cache中读取,若能,请给出实际访问的Cache地址。第4个数访问结束时,上图中的内容将如何变化。

选项

答案将CPU要顺序访问的4个数的地址写成二进制,可以发现: 20124H=0010 0000 0001 0010 0100B,组号为1,是第2组的块,根据题中阵列内容的图可知,现在Cache内有这个块,第1次访问命中,实际访问的Cache地址为0124H。 58100H=01011000 0001 0000 0000B,组号为1,是第2组的块,根据题中阵列内容的图可知,现在Cache内有这个块,第2次访问命中,实际访问的Cache地址为0100H。 60140H=0110 0000 0001 0100 0000B,组号为1,是第2组的块,但Cache中无此块,第3次访问不命中,根据LRU算法,替换掉第O块位置上的块,变化后的地址阵列如下图。 [*] 60138H=0110 0000 0001 001 11000B,组号为1,是第2组的块,与上一个地址处于同一个块,此时这个快己调入Cache中,所以第4次访问命中,实际访问的Cache地址为0138H。第4个数访问结束时,地址阵列的内容与刚才相同。 注意:就论坛上对于组相联映射的理解存在一些误区,这里就来解释一下,很多同学自己捏造出来了一个组内块号的概念,觉得Cache地址或者主存地址中会存在一个组内块号,同学们经常问如果没有这个组内块号.怎么能在一个组内定位到想要的块的信息?首先这里我们重新回顾一下组相联的概念,组相联映射实际上是一种组与组间采用直接映射而组内采用全相联映射的映射方式,组间直接映射大多数人都不会有什么疑问,而组相联映射在组内又是怎么找块的呢?既然刚才说了,组内是采用全相联的映射方式,我们不妨再回顾一下全相联映射中查找目标块的方法,即用给定的主存地址的标记号与所有的Cache块中的标记位进行比较,直到找到一样的。组相联映射也是把这个标记号与组内所有块的标记号进行比较来查找块的位置的,当现在比较这块的标记号和主存地址中的标记号相同时,即代表这块就是要找的内容。当然,因为一般组内块数比较少,可以设立多个比较器进行同时比较,这样可以加快比较的速度。

解析
转载请注明原文地址:https://kaotiyun.com/show/95Ri777K
0

最新回复(0)