FLOPS是否包含在perf_event给出的指令数中



我有一个程序,它使用perf_event.h来计算特定运行进程的IPC。我读取INSTRUCTIONS计数器和CPU_CYCLES计数器来执行此操作。

我的问题是关于INSTRUCTIONS计数器返回的值。它是否包含浮点操作?如果不是,我如何得到这个值?

注意:我说的是perf_event.h,但是,是的,我也在谈论perf,我提到的计数器是您可以通过命令perf list找到的计数器。

在英特尔架构上(我猜对其他人来说也是一样的),是的,它包含浮点指令。如果你看一下内核代码中的arch/x86/kernel/cpu/perf_event_intel.c。您将看到instructions事件被映射到0x00c0:

 [PERF_COUNT_HW_INSTRUCTIONS]     = 0x00c0

英特尔软件开发手册第19.1章说这个事件计数Instruction retired,即所有被"证明"为流程确实需要的完成的指令(现代处理器执行的指令比程序流程需要的指令多得多)。这被称为"投机执行",见这里)

相关内容

  • 没有找到相关文章

最新更新