平均访存时间计算
计算三种方式的平均访存时间。
最通用的计算公式:平均访存时间=命中时间+不命中率*不命中开销
-
直接映像的平均访存时间=
(命中需要的时钟周期+直接映像的失效率∗直接映像失效的时钟周期)∗时钟周期长度
-
2路组相联映像的平均访存时间=
(命中需要的时钟周期+组相联的失效率∗组相联失效的时钟周期)∗(1+组相联增加损耗的比例)∗时钟周期长度
-
伪相联映像的平均访存时间=
(命中需要的时钟周期+(直接映像的失效率−组相联的失效率)∗伪相联额外增加的时钟周期+组相联的失效率∗组相联失效的时钟周期)∗时钟周期长度
Cache的CPU时间
直接映像的CPU时间=
指令数量∗(CPI+平均每条指令访存次数∗直接映像失效率∗直接映像失效时钟周期)∗时钟周期长度
二路组相联的CPU时间=
指令数量∗(CPI+平均每条指令访存次数∗组相联失效率∗组相联失效时钟周期)∗((1+组相联增加的损耗比例)∗时钟周期长度)
伪相联映像的CPU时间=
指令数量∗(CPI+平均每条指令访存次数∗(直接映像失效率−组相联失效率)∗伪相联额外增加的时钟周期+平均每条指令访存次数∗组相联的失效率∗组相联失效的时钟周期)∗时钟周期长度
例题:
(1) 理想 Cache(命中率为 100%)情况下的 CPI 为 2.0,时钟周期为 2ns,平均每条指令访存 1.2 次;
(2) 直接映像、2 路组相联映像、伪相联映像这三种 Cache 的容量均为 32 KB,块大小都是 32 字节;
(3) 组相联映像 Cache 中的多路选择器使 CPU 的时钟周期增加了 10%;
(4) 这三种 Cache 的失效开销都是 40 个时钟周期;
(5) 命中时间为 1 个时钟周期;
(6) 32 KB 直接映象 Cache 的失效率为 2%,32 KB 两路组相联映像 Cache 的失效率为1.8%;
(7) 对于伪相联映像 cache,若按直接映像找到(即正常命中)的位置处没有发现匹配时,而在另外一个位置才找到(即伪命中)数据需要 2 个额外的周期;
(8)假设指令条数为 100 条,CPU 的主频是 500MHz。
试计算回答下列问题:(注:结果保留 2 位小数。)
(1)( 6 分) 直接映象、2 路组相联映像、伪相联映像 Cache 的平均访问时间分别是多
少纳秒(ns)?
解:
套公式即可: