PAPI性能可以解决AMD Opteron 6172上的问题

时间:2012-08-02 15:10:08

标签: performance amd-processor papi

我一直在尝试用AMD Opteron 6172处理器上的性能计数器分析某些应用程序(用C语言编写),运行Red Hat Enterprise Linux Workstation 6.2版(圣地亚哥)。

我正在使用PAPI v4.1.3.0,它使用AMD本机事件CPU_CLK_UNHALTED用于PAPI_TOT_CYC(计算总周期)和DATA_CACHE_ACCESSES用于PAPI_L1_DCA(计算L1数据高速缓存访​​问)。

我遇到的问题是,在某些情况下,缓存访问次数高于循环总次数。根据我的理解,缓存访问不会停止cpu,因此它应该适合整个周期。此外,当将总周期除以Opteron 6172的时钟频率时,我得到了相当准确的执行时间估计,这使我认为总周期是正常的,问题必须与数据高速缓存访​​问的计数有关。

我根据papi的例子发起了一切,并且没有任何错误。任何帮助或理由为什么会发生这种情况非常感谢,提前感谢。

http://support.amd.com/us/Processor_TechDocs/31116.pdf

  • CPU_CLK_UNHALTED

CPU未处于暂停状态的时钟数(由于STPCLK或HLT指令)。注意:这个 事件允许系统空闲时间从IPC(或CPI)测量中自动排除,提供 OS进入空闲状态时会停止CPU。如果操作系统进入空闲循环而不是暂停,则进行此类计算 受空闲循环的IPC影响。

  • DATA_CACHE_ACCESSES

对加载和存储引用的数据高速缓存的访问次数。这可能包括某些微码 暂存器访问,虽然这些通常很少见。每个增量代表一个8字节的访问, 虽然指令可能只是访问其中的一部分。此事件是一个推测性事件。

1 个答案:

答案 0 :(得分:1)

好的,这是我的猜测:

  1. 如果数据不在高速缓存中,则高速缓存访​​问可能意味着RAM存储器访问,因此可能使CPU停顿。尝试测量最后一级缓存(LLC)未命中,一个LLC未命中意味着一次访问RAM内存。

  2. 还有其他同时执行的程序吗?如果有,他们可能会拖延处理器或生成缓存未命中您正在测量。

  3. 我非常确定你可以在每个时钟周期发出一个加载和一个存储指令,因此有2个缓存访问/时钟周期并不奇怪......

    < / LI>

    希望它有用......