设某计算机字长为32位,主存容量为64MB,Cache的容量为8KB,每个Cache数据块的大小为 32B。设计一个四路组相联映像的Cache组织(即Cache的每个组包含4个Cache行)。要求:

设某计算机字长为32位,主存容量为64MB,Cache的容量为8KB,每个Cache数据块的大小为 32B。设计一个四路组相联映像的Cache组织(即Cache的每个组包含4个Cache行)。
(1)画出主存地址中各字段的位数,并说明每一个Cache行的标记有多少位。(10分)

(2)设Cache初态为空,CPU依次从主存0,4,8,……,996号单元中读出250个字(主存一次读出一个字),并重复此次序10次,问命中率是多少?(15分)

(3)若Cache速度是主存速度的5倍,试问有Cache和无 Cache相比,速度提高多少倍?(15分)

(1)(1)
组相连Cache映射的地址可分为:
主存块标记地址 块号 块内地址
假设按字编址!
主存64MB 共有 2^24个字,有24位地址码
Cache容量为8KB,一个数据块为32B所以Cache被分为 8KB ÷ 32B = 2^8块 2^8 ÷ 4 = 2^6 = 64组,共需要6位组号
32B大小的数据块有 8个字,因此需要3位的块内地址
因此主存地址按字段可分为:
主存字块标记 : 24-6-3 = 14
组地址:6位
块内标记 3位
在这里插入图片描述
(2)
首先判定会不会发生替换现象
0 – 996 即 40 -> 4249号单元中读出,按照8个字为1块的规律可分为 0 –> 124共125块。并且按照有序置放,125÷64 = 1.953 <4,所以不发生替换现象!
根据Cache的访问机理,当访问主存时,如果所找的目标单元不在Cache中,需要将目标单元所在的块整体复制到Cache中,而题干中所给的是一个重复访问的过程,因此我们只需要计算计算出CPU共访问了多少次主存即可
第一遍访问,当访问0号单元时会将0-7这8个字组成的块整体复制到Cache中的第0组第0个块中去。而访问4号单元时就不需要再访问主存了,所以第一遍访问的250次中有125次需要去访问主存。
而对于之后的访问,我们不需要这些块已经全都放在Cache中了
总访问次数 = 250 * 10 = 2500
访问主存数 = 125;
因此命中率等于 = 1- (125/2500) = 95%

(3)
设主存访问时间为5t,则Cache访问时间为t
若无Cache访问时间T1 = 2500t;
有Cache访问时间T2 = 125t +(2500-125)*5t = 12000t
速度提高 T2/T1 = 4.8倍

  • 12
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
### 回答1: 1. 请问cache的总共有多少个数据? 答:cache容量8kb每个数据大小32b,因此cache总共有8kb/32b=256个数据。 2. 请问每个cache大小是多少? 答:每个cache包含32b数据和标记位,因此每个cache大小32b+标记位大小。 3. 请问标记位的大小是多少? 答:由于cache采用四路相联映像的方式,因此每个数据需要存储其在主存中的地址的一部分,即标记位。由于主存容量64mb,需要用26位二进制数来表示主存中的地址,而每个cache需要存储4个数据的标记位,因此标记位的大小为26位*4=104位=13字节。 4. 请问cache的总共占用多少字节的空间? 答:cache总共有256个数据每个数据包含32b数据和13字节的标记位,因此cache总共占用的空间为256*(32b+13字节)=8704字节。 5. 请问如何实现四路相联映像? 答:四路相联映像可以通过将cache的256个数据分成64个每个包含4个数据,然后将主存中的每个数据映射到其中一个中的某个位置。具体来说,可以使用主存地址的低6位来确定数据中的位置,使用主存地址的中间16位来确定数据所在的,然后使用标记位来确定数据是否在该中。这样,每个中的4个数据分别对应主存中的4个不同的地址,从而实现了四路相联映像。 ### 回答2: 首先,四路相联映像cache组织意味着每个cache由4个cache成,并且每个cache都有自己的标记和数据。此外,由于每个数据大小32b,所以每个cache也应该有32b大小。 接下来,我们需要计算出cache数据数,以及cache的索引位数和标记位数。由于每个cache大小32b,所以整个cache数据数为8kb/32b=256。因此,我们需要8位作为索引位,来标识256个cache数据,另外还需要24位作为标记位,用来唯一标识主存中的每个数据。 接着,我们需要考虑到缓存替换的问题。由于采用的是四路相联映像cache组织,所以每个里有四个cache,当主存中的数据需要存储到cache时,需要进缓存替换。此时,我们可以采用LRU(最近最少使用)算法,即替换最长时间未被使用的cache。 最后,我们需要了解cache主存数据传输方式。当需要从主存中读取一个数据时,cache会首先访问这个数据对应的索引位,如果该索引位已经在cache中,则直接从cache中读取数据;否则,主存会把相应的数据读入缓存中,并且更新相应的索引位和标记位。 综上所述,四路相联映像cache组织需要32位数据大小8kb容量,8位的索引位和24位的标记位,采用LRU算法进缓存替换,并通过访问索引位和标记位来获取数据。 ### 回答3: 计算机字长是指CPU一次能处理数据的位数,这里设为32位主存容量64MB,即主存能存储的数据量为64×1024×1024(字节),即2^26个字。cache容量8KB,能存储的数据量为8×1024(字节),即2^13个字。每个cache数据大小32B(字节)。 为了提高cache的效率,可以采用四路相联映射的方式进组织,即将cache划分为若干个每个包含4个cache相联映像的方式将每个主存映射到一个中的某个每个中的4个分别与不同的主存相联。这样,在查找指定地址的数据时,只需要查找对应中4个的标记位,找到对应的主存后再进数据的读写操作,能够大大加快硬件操作的速度。 在这个四路相联映像cache组织中,每个内有4个,即缓存了4个主存。因为每个cache数据大小32B,因此每个主存大小也应该是32B。可以将主存地址分为三个部分,即标记位、索引和内偏移量。由于本设计采用四路相联映像方式,每个中4个分别与不同的主存相联,因此索引需要从地址中提取出来,在四个中进查找,找到相应的之后再匹配标记位,从而找到对应的主存。 因为cache容量8KB每个大小32B,因此每个中有256个。因此,索引的位数应该为log2(256)=8位。每个主存大小32B,因此内偏移量的位数也为log2(32)=5位。因为总的主存容量64MB,也就是2^26个字,所以标记位的位数为26-8-5=13位。 综上所述,本设计cache组织方式采用四路相联映像每个内有4个,缓存了4个主存每个主存大小32B每个cache数据也为32B索引位数为8位,内偏移量位数为5位,标记位位数为13位。这样的cache组织方式可以提高数据处理效率,并且能够在容量有限的情况下尽可能地降低访问主存的次数。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值