我有以下情况:
一台机器每个指令平均需要c个周期而没有 考虑记忆失速, 所有未命中都有未命中罚金。设i和d分别为指令缓存 具有n条指令和f存储器引用的程序的未命中率和数据高速缓存未命中率 每条指令。假设命中时间不是确定缓存性能的因素。
我已经知道运行带有内存档的程序所需的周期数是n(c + ip + fdp)。
下一部分说:
如果我们想通过一个因素来改善该程序的执行时间 k,多少钱 我们需要减少每条指令的周期数吗? 改善执行时间的另一种方法是减少机器的循环时间。 如果我们想要将执行时间提高k倍,我们需要多少 改善周期时间?
我有n(c + ip + fdp)/ k所以我认为第一部分答案必须是1 / k,但这似乎太明显了。当然,如果循环时间为t,则n(c + ip + fdp)* t给出总执行时间,因此它必须再次为1 / k?
由于
答案 0 :(得分:1)
对于第一部分,我不相信你可以改变c以外的任何东西来获得所需的加速;您的解决方案假设您正在加速缓存未命中。
第二部分有一个类似的问题:加快循环时间并不一定会减少缓存惩罚,因此当你减少循环时间时,p的值会增加(为了保持时间不变,你需要更多的这些较短的周期)。
如您所见,这假设p是以周期来衡量的。