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

时间:2010-10-25 21:17:05

标签: x86 intel performancecounter

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

如果可以,我可能会在Assembly中编写代码,但Windows或Linux系统调用也可能有用。

2 个答案:

答案 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计数都取决于正在执行的代码类型。