首页 文章

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

提问于
浏览
2

我一直在尝试用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 . 如果OS进入空闲循环而不是停止,则这种计算受空闲循环的IPC的影响 .

  • DATA_CACHE_ACCESSES

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

1 回答

  • 1

    好的,这是我的猜测:

    如果数据不在高速缓存中,则

    • 高速缓存访问可能意味着RAM存储器访问,因此可能使CPU停顿 . 尝试测量最后一级缓存(LLC)未命中,一个LLC未命中意味着一次访问RAM内存 .

    • 有没有其他同时执行的程序?如果有,他们可能会停止处理器或生成您正在测量的缓存未命中 .

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

    希望它有用......

相关问题