能够分析其二进制文件实际上将在模拟器 (NS-3/DCE) 下运行的应用程序运行时。我想使用 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 的指令量(与示例输出中的指令量相反),以便以确定的方式获得执行代码的数量?