x86 – Core i3 / 5/7 CPU是否提供了测量IPC的机制?

过去十年中的所有英特尔CPU(至少)都包括一组可以计算各种事件的性能监视器.最新的Intel CPU,Core i3,i5和i7(又名Nehalem)是否提供了计算每时钟指令(IPC)的机制?如果是这样,他们是如何使用的?

如果这是可能的,我可能会在汇编中为此编写代码,但WindowsLinux系统调用也可能有用.

是的,来自英特尔(Linux和Windows)的Vtune可以测量IPC.

如果你想用一些代码的精确计数器来自己测量它,你需要使用一些性能api,如PAPI或perfctr(都用于linux).

它们使用硬件性能计数器,如英特尔手册http://www.intel.com/products/processor/manuals/中所述

第3D卷,第30章&附录A.
http://www.intel.com/Assets/PDF/manual/253669.pdf

Vtune使用“退役指令”和“非睡眠时钟信号”的比率来计算CPI(“每指令退出的周期数”).对于Core2,使用的性能计数器为:“CPU_CLK_UNHALTED.CORE”,“INST_RETIRED.ANY”

所有Core * CPU的计数器都相同:
第3B卷附录A1,第384页:

Table A-1. Architectural Performance Events

Event | Event Mask Mnemonic | Umask | Description
num.  
3CH   | UnHalted Core Cycles| 00H   | Unhalted core cycles
C0H   | Instruction Retired | 00H   | Instruction retired
相关文章
相关标签/搜索