我已经使用这个方程,以获得执行时间方程:错误在性能预测时间
Execution time = Cpu time + memory time
然后,
Execution time = (#instructions * average instruction execution time) +
(Misses Cache l1 * latency L2) +
(Misses Cache l2 * latency access memory).
我有以检查此开发一个简单的程序方程,伪代码是下一个:
ini_time = get_cepu_time();
Init_Papi_counters;
//intesive computation code (matrix mult)
End_Papi_counters();
end_time = get_cepu_time();
end_time = end_time - ini_time.
的值是获得了下:
Execution time: 194,111 sec
Cycles: 568949490685
Instructions: 676850501790
Misses L1: 30666388828
Misses L2: 1743525419
潜伏期在Intel手册获得是:
Acces L2: 4,8 ns
Acces main memory: 110 ns
然后,如果我申请的等式:
Misses L1 * Latency l2 = 147 sec
Misses L2 * memory access time = 193 sec
正如我们可以看到,存储器组件的总和时间大于总执行时间:
194 < 147 + 193 ERRORRRRR
你能帮助我,以便发现我如何近似执行时间。
要知道的是缓存未命中可以重叠。处理器可以同时处理多个缓存未命中。所以缓存未命中占用的时间通常远远少于(错过次数)*(未命中延迟)。无论如何,要逼近执行时间几乎是不可能的,除非实际运行它并计时。现代处理器比你想像的要复杂得多。 – Mysticial 2013-02-10 18:24:05