硬件性能计数器测量的准确性在文献中被广泛讨论。使用硬件性能计数器,我们可以测量多种类型的微架构事件,例如缓存命中和未命中、加载和存储以及停用的指令。但是,这些测量仍然存在疑问,它们的准确度如何?正如许多论文中所说明的那样,使用不同的设备,结果可能会有所不同。其中一些事件,如存储指令,是确定性事件,即存储事件的测量结果不会随着程序的重新执行而改变,并捕获性能计数器值。退休指令不是。这意味着,如果我们测量代码的一部分,例如循环语句,我们可能会从 run 到另一个获得不同的计数器值。在【这篇文章】中,作者写道:
“当确定性计数器确实可用时,它们不仅会受到那些从事确定性重放和模拟器验证器工作的人的欢迎,而且也会受到性能计数器的所有用户的欢迎。”
顺便说一句,我们是否可以将确定性事件(如存储事件)与退役指令结合使用来引入确定性用户定义事件?
任何帮助将不胜感激