问答题
设某机主存容量为16MB,按字节寻址。Cache容量为16KB。每字块有8个字,每个字32位。设计一个4路组相联映射(即Cache每组内共有4个字块)的Cache组织,要求如下:
问答题
画出主存地址字段中各段的位数。
【正确答案】根据每个字块有8个字,每个字32位,则每个字块大小为32B。
根据Cache的容量为16KB,字块大小为32B,得出Cache共有16K/32=512块。又因为是4路组相联,即每组共有4个字块,所以组数=512/4=128。
根据主存容量为16MB=2
24B,得出主存地址位数为24。
组相联映射中,主存地址高位到低位划分为3部分:标记、组号、块内字地址(解答最后有附加解释),该3个字段位数分别为
块内字地址=log
2(块大小)=log
2(32)=5
组号=log
2(Cache组数)=log
2(128)=7
标记=主存地址的其余位=24-5-7=12
主存地址字段各段格式如图1所示。
[*]
图1 主存地址字段各段格式
【答案解析】
问答题
设Cache的初态为空,CPU依次从主存的第0,1,2,…,99号单元读出100个字(主存依次读出一个字),并重复此次序读8次,问命中率是多少?
【正确答案】由于每个字块中有8个字,而且初态Cache为空,因此CPU读第0号单元时,未命中,必须访问主存,同时将该字所在的主存块调入Cache第0组中的任一块内,接着CPU读1~7号单元时,均命中。同理,CPU读第8,16,…,96号单元时均未命中。可见,CPU在连续读第100个字中共有13次未命中,而后7次循环读100个字全部命中,命中率为
(100×8-13)/(100×8)×100%=98.375%
【答案解析】
问答题
若Cache的速度是主存速度的6倍,试问对于上面的情况,有Cache的速度是无Cache的速度的多少倍?(保留小数点后两位)
【正确答案】由题意,设主存存取周期为6t,Cache的存取周期为t,没有Cache的访问时间为6t×800,有Cache的访问时间为t×(800-13)+6t×13,则有Cache和无Cache相比,时间开销比为[t×(800-13)+6t×13]/(6t×800)。速度为其倒数,即(6t×800)/[t×(800-13)+6t×13]≈5.55倍。
可能的疑问:
有考生可能会对于标记位为什么是主存地址的其余位有疑问,拿本题举例,标记位的作用是为了唯一标识同一组内的块,即如果有2“个块可以映射到该组,就要求有n个位来做标记位。那么这n位如何求呢?这道题的例子中,主存16MB,每块32B,即主存有512K块;Cache16KB,每块32B,即Cache有512块,然后给Cache分组,Cache每组是4块,也就是分为128个组。然后组相联要做的就是把这512K块映射到这128个组去,也就是一个组对应主存中的4K个块。为了标记这些块,肯定就需要12位的标记位。而映射到同一组的主存块的块号的后7位肯定是相同的,因为当时求其分组就是对128求余得到的,相同的余数才会分到同一组,而这高12位其实就是对128求商得出的,这个商就可以唯一标识出同一组内的块。
【答案解析】