Architecture 缓存性能,提高执行时间

Architecture 缓存性能,提高执行时间,architecture,cpu,Architecture,Cpu,我有以下情况: 一台机器平均每个指令占用c个周期,而没有 考虑到内存暂停, 并且对所有未命中都有一个未命中惩罚p。设i和d分别为指令缓存 具有n条指令和f个内存引用的程序的未命中率和数据缓存未命中率 根据指令。假设命中时间不是决定缓存性能的因素 我已经计算出,在考虑内存暂停的情况下运行程序所需的周期数是n(c+ip+fdp) 下一部分说: 如果我们想将此程序的执行时间提高一个因素 当然可以,你要多少钱 我们需要减少每条指令的周期数? 另一种提高执行时间的方法是减少机器的循环时间。 如果我们想将执

我有以下情况:

一台机器平均每个指令占用c个周期,而没有 考虑到内存暂停, 并且对所有未命中都有一个未命中惩罚p。设i和d分别为指令缓存 具有n条指令和f个内存引用的程序的未命中率和数据缓存未命中率 根据指令。假设命中时间不是决定缓存性能的因素

我已经计算出,在考虑内存暂停的情况下运行程序所需的周期数是n(c+ip+fdp)

下一部分说:

如果我们想将此程序的执行时间提高一个因素 当然可以,你要多少钱 我们需要减少每条指令的周期数? 另一种提高执行时间的方法是减少机器的循环时间。 如果我们想将执行时间提高k倍,我们需要提高多少 改善循环时间

我得到了n(c+ip+fdp)/k,所以我认为第一部分的答案必须是1/k,但这似乎太明显了。当然,如果循环时间是t,那么n(c+ip+fdp)*t给出了总的执行时间,那么它又必须是1/k


谢谢你的第一部分,我不相信你可以改变c以外的任何东西来获得想要的加速;您的解决方案假定您也在加速缓存未命中

第二部分有一个类似的问题:加快循环时间不一定会减少缓存代价,因此p的值会随着循环时间的减少而增加(为了保持时间恒定,需要更多的更短的循环)


这假设,正如你所看到的,p是以循环的方式来测量的。

对于第一部分,我认为除了c之外,不允许你改变任何东西来获得所需的加速;您的解决方案假定您也在加速缓存未命中

第二部分有一个类似的问题:加快循环时间不一定会减少缓存代价,因此p的值会随着循环时间的减少而增加(为了保持时间恒定,需要更多的更短的循环)

这假设,正如你所看到的,p是用周期来衡量的。

因此,如果我有n((c/m)+ip+fdp)*t=t/k,其中k是加速t是执行时间,t是周期时间,m是导致整体加速k所需的周期时间的加速,那么我说所需的加速是c/((t/k)/nt)-ip-fdp是否正确如果我有n((c/m)+ip+fdp)*t=t/k,其中k是加速比t是执行时间,t是循环时间,m是导致整体加速比k所需的循环时间的加速比,我说所需的加速比是c/((t/k)/nt)-ip-fdp是否正确?