假设某台机器及其Cache性能为:
(1)块大小为1个字;
(2)存储器总线宽度为1个字。
(3)Cache失效率为3%。
(4)平均每条指令访存1.2次。
(5)Cache失效开销为32个时钟周期。
(6)平均CPI(忽略Cache失效)为2。
试问多体交叉和增加存储器宽度对提高性能各有何作用?
如果当把Cache块大小变为4个字时,失效率降为1%,根据前面给出的访问时间,求在采用2路、4路多体交叉存取以及降存储器和总线宽度增加一倍时,性能分别提高多少?
假设基本存储器的性能如下:
(1)送地址需4个时钟周期。
(2)每个字的访问时间为24个时钟周期。
(3)传送一个字的数据需4个时钟周期。
首先分析不作处理时该机器的实际CPI,根据下面的公式
实际CPI=理想CPI+平均每条指令的访存次数×失效率×失效开销
则可以计算得出
原始机器实际CPI=2+(1.2×!%×32)=3.15
由于本题中时钟周期和指令总数并不发生变化,因此可以通过比较实际CPI的大小来比较不同方案下的机器性能。下面举例三种情况:
①32位总线和存储器,不采用多体交叉;
②32位总线和存储器,采用多体交叉
③64位总线和存储器,不采用多体交叉。
这三种情况下,理想CPI、每条指令的平均访存次数以及失效率都不变,发生变化的是失效开销。
第①种情况分析:不采用多体交叉时,对于每一个字都需要进行送地址、访问和传送三个阶段,而由于采用32位总线,因此一次只能传输一个字。因此每一个字的失效开销为
4+24+4=32(时钟周期)
由于一个Cache块为4个字,因此一次Cache失效需要向Cache块中传送四次,总共的失效开销为
32×4=128(时钟周期)
第②种情况分析:采用多体交叉时,四个字的传地址和访问可以同时进行,因此完成传地址和访问共需要的时钟周期为
4+24=28(时钟周期)
由于采用32位总线,因此一次只能传输一个字,所以进行数据传输的时间为
4×4=16(时钟周期)
因此,总共的失效开销为
28+16=44(时钟周期)
第③种情况分析:当采用64位总线时,无论是传地址、访问还是传送数据都可以节约一半的时间,因此总失效开销为第①种情况的一半,即为64个周期。
接下来根据各自不同情况的失效开销,代入公式即可求出各自的实际CPI,进行比较即可。