计算题:高速缓存Cache与主存的地址变换表

题目:

已知某高速缓存Cache采用组相联映像方式,即组间直接映像,组内全相联映像。假设主存容量为4096块,每块256字节,高速缓存包含32块,分8组,每组4块。高速缓存的地址变换表应包含( )个存储单元;每个存储单元应能存放( )位二进制数;每次参与比较的是( )个存储单元。
A.8  B.16  C.32  D.48
A.7  B.8    C.9    D.10
A.4  B.8    C.12  D.16

第一空,高速缓存的地址变换表中存储单元的数量,对应高速缓存的块数。题干中“高速缓存包含32块”,故地址变换表共包含32个存储单元。

第一空选C。

第二空,这32个存储单元中每个存储单元中应能存放的二进制数的位数,这个计算相对复杂一些。

我们得先搞清楚存储单元的组成。每个存储单元中存放的内容由两部分组成,一部分是主存块所在的区号,一部分是主存块在组内的位置。即第几块主存放在了组内的第几块的位置。

4096块主存被分散映像到32块高速缓存中,即主存被分拆成为4096/32 = 128块。用二进制表示,2^7 = 128,即用 7 个二进制数可以表示。

在组内的位置,和每组有几块有关,题干中提到“高速缓存包含32块,分8组,每组4块”,所以我们主要关注 4 可以用几位二进制表示即可,这个比较简单,2^2 = 4,故组内位置用 2 个二进制数可以表示。

将两

  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
主存与缓存之间的地址映射通常使用缓存映射方式来实现。常见的三种映射方式为:直接映射、全相联映射和组相联映射。 1. 直接映射(Direct Mapping): 直接映射是最简单的映射方式,主存中的每个地址只能映射到缓存中的唯一一个位置。主存地址的某些位用于标识缓存行的索引,其余位用于标识缓存行内的字节偏移量。这种映射方式具有低映射开销和较高的缓存命中率,但容易产生冲突,导致缓存失效。 2. 全相联映射(Fully Associative Mapping): 全相联映射是最灵活的映射方式,主存中的每个地址可以映射到缓存中的任意位置。主存地址的某些位用于标识缓存行的索引,其余位用于标识缓存行内的字节偏移量。这种映射方式具有较高的命中率,但需要更大的硬件开销来实现。 3. 组相联映射(Set Associative Mapping): 组相联映射是直接映射和全相联映射的折中方式,将缓存划分为多个组,每个组中包含多个缓存行。主存地址的某些位用于标识组的索引,另外的位用于标识缓存行内的字节偏移量。在每个组内,使用直接映射的方式进行地址映射。这种映射方式综合了直接映射和全相联映射的优点,能够提供较高的命中率和较低的映射开销。 以上是主存与缓存之间常见的地址映射方式。具体的实现方式可能因处理器架构和缓存设计而有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值