假设某计算机的主存地址空间大小为64KB,采用字节编址方式。其Cache数据区容量为4KB,采用4路组相联映射方式、LRU替换和回写(write back)策略,块大小为64B,并且每块设置了1位有效位。请问: 若Cache初始为空,CPU依次从0号地址

admin2017-04-28  18

问题 假设某计算机的主存地址空间大小为64KB,采用字节编址方式。其Cache数据区容量为4KB,采用4路组相联映射方式、LRU替换和回写(write back)策略,块大小为64B,并且每块设置了1位有效位。请问:
若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行。 [*] 针对图5—8的分析:主存的第0~15块分别对应Cache的第0~15组,可以放在对应组的任意一行中,在此假定按顺序存放在对应组的第0行;主存的第16~31块也分别对应Cache的第0~15组,假定放在各组的第1行中;同理,主存的第32~47块分别放在Cache的第0~15组的第2行中;主存的第48~63块分别放在Cache的第0~15组的第3行中。这样,访问主存的第0~63块都没有冲突,每块都是第一次在Cache中没有找到,然后把这一块调到Cache对应组的某一行中,这样该块后面的每次访问都能在Cache中找到。因此,每一块只有第一个单元没有命中,其余63个单元都命中。主存的第64~67块分别对应Cache的第0~3组,此时,这4组的4个行都已经被主存块占满,所以这4组的每一组都要选择一个主存块从Cache中淘汰出来。因为采用LRU算法,所以将最近最少用的第0~3块分别从第0~3组的第0行中替换出来。再把第64~67块分别放到Cache的第0~3组的第0行中,每块也都是第一次在Cache中没有命中,调入后,每次都能在Cache中命中。 综上所述,第一次循环中,每一块都只有第一个单元没有命中,其余都命中。 以后的1 5次循环中,因为Cache第4~15组的48行中的主存块一直没有被替换过,所以只有68—48=20个行中对应主存块的第一个单元未命中,其余都命中。 总访问次数为4 345×16=69 520次。其中,未命中次数为68+15×20=368次。 命中率P为(69 520—368)/69 520=99.47%。平均访问时间=20ns+200×(1—0.9947)ns=21.06ns。

解析
转载请注明原文地址:https://kaotiyun.com/show/qWRi777K
0

最新回复(0)