过去十年中的所有英特尔CPU(至少)都包含一组可计算各种事件的性能监视器。最新的Intel CPU,Core i3,i5和i7(又名Nehalem)是否提供了计算每时钟指令(IPC)的机制?如果是这样,他们是如何使用的?
如果可以,我可能会在Assembly中编写代码,但Windows或Linux系统调用也可能有用。
答案 0 :(得分:3)
是的,英特尔的Vtune(Linux和Windows)可以测量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
答案 1 :(得分:-3)
当前的多指令多指令命令使IPC变得毫无意义。
来自i7 propoganda文件:
该芯片拥有更广泛的执行力 核心,允许处理器 最多可完成四条完整说明 同时,还有更多 高效的14级管道改进 IPC(每个时钟的指令)in 与Pentium 4 / D比较
那些IPC计数都取决于正在执行的代码类型。