题目内容
假设两级Cache系统,在1000次访存中,L1 Cache失效40次,L2 Cache失效20次。问:在这种情况下,该Cache系统的局部失效率和全局失效率各是多少?假设L2 Cache到主存的失效开销为200个周期,L2的命中时间为10个周期,L1的命中时间为1个周期,平均每条指令访存次数为1.5,则平均访存时间是多少?平均每条指令的存储器停顿周期是多少?
题目分析
失效率计算
首先计算两级Cache各自的局部失效率。
L1的局部失效率=40/1000=4%
L2的局部失效率=20/40=50%
接下来计算全局失效率。
全局失效率=L1的局部失效率×L2的局部失效率=2%
平均访存时间计算
由于有两层Cache,因此首先考虑L2。
平均访存时间的计算公式如下:
平均访存时间=命中时间+失效率×失效开销
L2的命中时间和失效开销已经给出,失效率根据上一问已经计算出,因此可以求出L2的平均访存时间如下:
L2的平均访存时间=10+50%×200=110(时钟周期)
系统的平均访存时间可以用如下的公式计算:
系统的平均访存时间=L1命中时间+L1失效率×L2的平均访存时间
由此可以计算出系统平均访存时间如下:
系统平均访存时间=1+4%×110=5.4(时钟周期)
存储器停顿周期计算
根据公式
平均访存时间=命中时间+存储器停顿周期
可以通过上面公式计算得出
每次访存的存储器停顿周期=平均访存时间-命中时间=5.4-1=4.4(时钟周期)
接着根据下面的公式
每条指令的存储器停顿周期=每条指令的平均访存次数×每次访存的存储器停顿周期
可以计算得出
每条指令的存储器停顿周期=1.5×4.4=6.6(时钟周期)