某计算机的Cache共有16块,采用2路-组相联映射方式(即每组包括2块)。存储器按字节编址,每个主存块大小为32字节,请问:

  1. Cache如何分组、分块?
  2. 主存如何分组、分块?
  3. 计算129号主存单元所在的主存块应装入到的Cache组号。

解答思路一:

1.组相联映射方式下,主存块按模Q(Q为Cache组数)映射到Cache对应组中的任一块;

Cache共有16块,采用2路组相联映射,故Cache共分16/2=8组,每组2块。每块32B。

2.主存分为若干组,每组又分成8块。每块32字节。

3.129的二进制表示为100000010...010000001(组内块序号为100)如下图,所以组号为4

 

解答思路二:

1.cache共有16块,采用2路组相联映射,所以共有8组,每组2块,每块32B。

2.主存分为若干组,每组又分成8块。每块32字节。

3..由于主存块大小为32字节,所以129号单元位于第4块上(129/32取整等于4)。

而cache共有16块,采用2路组相联映射,所以共有8组。

主存块号i与Cache组号j映射关系为:j=i mod 8,所以j=4 mod 8=4,即129号单元装入到第4组。

PS:本人也是在学习过程中,如有不对的地方,希望大家可以指正,谢谢。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐