某计算机的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

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐