我已經使用這個方程,以獲得執行時間方程:錯誤在性能預測時間
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