代码之家  ›  专栏  ›  技术社区  ›  Nathan Fellman

核心i3/5/7处理器是否提供了一种测量IPC的机制?

  •  8
  • Nathan Fellman  · 技术社区  · 15 年前

    在过去的十年中,所有的英特尔CPU(至少)都包括一组性能监视器,可以对各种事件进行计数。最新的Intel CPU、Core i3、i5和i7(又称Nehalem)是否提供了一种按时钟(IPC)计数指令的机制?如果是,它们是如何使用的?

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

    2 回复  |  直到 15 年前
        1
  •  3
  •   osgx    15 年前

    是的,英特尔(linux和windows)的Vtune可以测量IPC。

    如果您想用精确的计数器来测量代码的某个部分,那么您需要使用一些性能api,比如PAPI或perfctr(这两个都适用于linux)。

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

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

    所有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
    
        2
  •  -3
  •   Dekker500    15 年前

    来自i7 propoganda文档:

    芯片的执行范围更广 核心,允许处理器 完成多达四个完整的说明 同时,还有一个 高效14级管道改进 与奔腾4/D相比

    这些IPC计数都取决于正在执行的代码类型。

    推荐文章