爲了能夠分析其二進制文件實際上將在模擬器(NS-3/DCE)下運行的應用程序運行時。我想要使用Linux性能計數器,我希望指令能夠計算出沒有非確定性來源的應用程序是確定性的。 根據Linux性能計數器我不能更錯了,讓我們舉一個簡單的例子:爲什麼在Linux性能計數器中指令的數量不確定
$ (perf stat -c -- sleep 1 2>&1 && perf stat -c -- sleep 1 2>&1) |grep instructions
669218 instructions # 0,61 insns per cycle
682286 instructions # 0,58 insns per cycle
1)這是什麼非確定性的來源是什麼?這是否源於CPU的低級別分支預測和其他引擎中的。
2)其他問題,有沒有辦法知道提供給CPU的指令數量(與示例輸出中的指令數量相反),以便確定執行代碼的數量辦法?
好的,這已經幫助我理解了這一點,但是用戶指令中的差異的來源是什麼? – hbogert 2014-12-03 11:04:01
@hbogert x86_64的指令計數並不完全確定。每個中斷都有一個額外的指令。如果您想了解更多詳情,請參閱本文:http://web.eece.maine.edu/~vweaver/projects/deterministic/ispass2013_deterministic.pdf – 2014-12-03 13:46:22