假设某计算机的主存地址空间大小为64KB,采用字节编址方式。其Cache数据区容量为4KB,采用4路组相联映射方式、LRU替换和回写(write back)策略,块大小为64B,并且每块设置了1位有效位。请问:
问答题 主存地址字段如何划分?要求说明每个字段的含义、位数和在主存地址中的位置。
【正确答案】正确答案:Cache的行数为4KB/64B=64;因为采用4路组相联,所以每组有4行,共16组。主存地址空间大小为64KB,故主存地址有16位,其中低6位为块内地址,中间4位为组号,高6位为标记(tag或者区号)。
【答案解析】
问答题 该Cache的总容量有多少位?
【正确答案】正确答案:因为采用写回策略,所以Cache每行中要有1个修改位;因为每组有4行,所以每行有两位LRU位。此外,每行还有6位标记位,1位有效位和64B数据,共有64行,故Cache的总容量为64×(6+1+1+2+64×8) =33 408位。 可能疑问点:为什么LRU位为2? 解析:因为Cache每组有4行,所以某一行调入之后,进行了2次或者3次替换也没有将其替换出去,那么其时间就为2(二进制表示:10)或者3(二进制表示:11),此时1位LRU位已经不能表示2或3,所以需要2位LRU位。以此类推,当Cache每组有N行,那么LRU位至少为:log 2 N(如果为小数,则向上取整,例如N=7,那么LRU位就需要3位)。
【答案解析】
问答题 若Cache初始为空,CPU依次从0号地址单元顺序访问到4344号单元,重复按此序列共访问16次。若Cache命中时间为20ns,主存存取时间为200ns,试估计CPU访存的平均时间。
【正确答案】正确答案:块大小为64B,CPU总共访问了4 345个单元,4 345/64=67.89,所以CPU访问的是主存前68块(第0~67块),即CPU的访问过程是对前68块连续访问16次。图5—8给出了访问过程中主存块和Cache行之间的映射关系。图5—8中列方向是Cache的16个组,行方向是每组的4行。
【答案解析】