A-A+

某8位计算机主存容量32K字节 组相联Cache容量2K字节 每组4Blocks 每Bloc

2022-08-12 12:59:15 问答库 阅读 196 次

问题详情

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


请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:9.5
首先,分析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中近期长久未被访问的字块,也就是第0号单元所在的字块,接着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个单元命中。而后第3到第8遍读取与此相同。根据题意,设主存存取周期为10t,Cache的存取周期为t,采用Cache后的访问时间为:(34+10×7)×10t+(2142+2166×7)t,而未采用Cache的主存访问时问为2176×8×10t,所以加速比为:

考点:字节,主存