问题 问答题

某8位计算机主存容量32K字节,组相联Cache容量2K字节,每组4Blocks,每Block 64个字节。假设Cache开始是空的,CPU从主存存储单元0开始顺序读取2176个字节数据(即按地址0、1、2的顺序一直读取到地址单元2175),然后再重复这样的读数过程7遍(共8遍),Cache速度是主存速度的10倍,采用LRu替换算法,假定块替换的时间忽略不计,计算采用Cache后的加速比。

答案

参考答案:首先,分析CPU第一遍从主存读取数据的情况。由于Cache每个字块有64个字节,而且初态Cache为空,因此CPU读第0号单元时,未命中,必须访问主存,同时将该字节所在单元的主存块调入Cache第0组中的任一块,接着CPU读1~63号单元都命中。同理,CPU读第64,128,...,1984号单元时均未命中,而其余65~127,…,1985~2047都命中。此时,Cache中的8组,每组4块,全部都已装满,而CPU再读第2048号单元时,未命中,必须访问主存,同时需要按照LRU策略替换掉Cache中近期长久未被访问的字块,也就是第O号单元所在的字块,接着CPU读2048~2111号单元都命中。同理,CPU读第2112单元时,也需替换掉Cache中的字块,而根据LRU策略,会换掉第64号单元所在的字块。综上所述,在CPU第一遍读取时,共34次未命中,其余2142次命中。
然后,CPU第2遍读取时,由于第0号单元所在的字块在前面被换出了,所以未命中,同时需要按照LRU策略进行替换,但是,注意这次并不是将2048号单元所在的字块替换掉(因为LRU算法保护新调入的块),而是将第512号单元所在的字块替换掉,所以等到cPU读取第512号单元时,会出现未命中,必须再替换,同理,也根据LRU进行。这样,在整个Cache的第0组和第1组中所有的块都会不断地进行这种替换。而第2组到第7组由于在第一遍中没有出现替换,在第二遍读取时也不会出现,所以CPU读取的字节全部命中。综上所述,第二遍读取时,第0,64,512,576,...,2048,2112号共10个单元未命中,其余2166个单元命中。而后第三遍到第八遍渎取与此相同。根据题意,设主存存取周期为10t,Cache的存取周期为t,加速比为:
[*]

单项选择题
填空题