Performance AMD Opteron 6172上的PAPI性能计数器问题

Performance AMD Opteron 6172上的PAPI性能计数器问题,performance,amd-processor,papi,Performance,Amd Processor,Papi,我一直在尝试在运行Red Hat Enterprise Linux Workstation 6.2版(圣地亚哥)的AMD Opteron 6172处理器上使用性能计数器分析某些应用程序(用C编写) 我使用的是PAPI v4.1.3.0,它使用AMD原生事件CPU_CLK_UNHALTED进行PAPI_TOT_CYC(计数总周期)和数据_CACHE_访问进行PAPI_L1_DCA(计数一级数据缓存访问) 我所遇到的问题是,在某些情况下,缓存访问的数量一直高于循环的总数。据我所知,缓存访问不会停止c

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

我使用的是PAPI v4.1.3.0,它使用AMD原生事件CPU_CLK_UNHALTED进行PAPI_TOT_CYC(计数总周期)和数据_CACHE_访问进行PAPI_L1_DCA(计数一级数据缓存访问)

我所遇到的问题是,在某些情况下,缓存访问的数量一直高于循环的总数。据我所知,缓存访问不会停止cpu,因此它应该适合总周期。另外,当将总周期除以Opteron 6172的时钟频率时,我得到了一个相当准确的执行时间估计值,这使我认为总周期是可以的,问题在于数据缓存访问的计数

我已经根据papi的例子开始了所有的工作,没有任何错误。非常感谢您提供的任何帮助或原因,请提前感谢

  • CPU_CLK_未被腐蚀
CPU未处于暂停状态(由于STPCLK或HLT指令)的时钟数。注:此 事件允许从IPC(或CPI)测量值中自动计算出系统空闲时间,前提是 操作系统在空闲时停止CPU。如果操作系统进入一个空闲循环而不是停止,那么这样的计算是错误的 受怠速回路IPC的影响

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

好的,以下是我的猜测:

  • 如果数据不在缓存中,缓存访问可能意味着RAM内存访问,因此可能导致CPU暂停。尝试测量最后一级缓存(LLC)未命中,一次LLC未命中意味着一次对RAM内存的访问

  • 是否有其他程序同时执行?如果有,则可能是处理器停止运行或产生了您正在测量的缓存未命中

  • 我非常确定,每个时钟周期可以发出一条加载和一条存储指令,因此每个时钟周期有两个缓存访问并不是那么奇怪


  • 希望对您有所帮助…

    您好,谢谢您的回复,但我不确定它是否回答了我的问题。1,我在一级缓存命中率为100%的情况下会出现这种行为,因此不会进入任何其他级别的缓存。2,不可能,因为我在一台我预订的服务器上运行这些测试只是为了单独运行,即使其他程序正在运行,它们也会增加总周期以及一级数据缓存访问。3,是的,opteron使用双向关联一级缓存,这意味着你可以一次发出两条指令,但cpu不等待这些访问的响应吗?最便宜的一个是3个周期?好吧,由于流水线,cpu不必等待访问完成。。。