【问题标题】:PAPI performance counters issues on a AMD Opteron 6172AMD Opteron 6172 上的 PAPI 性能计数器问题
【发布时间】:2012-07-31 14:31:00
【问题描述】:

我一直在尝试使用 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)测量中自动排除系统空闲时间,提供 操作系统在空闲时停止 CPU。如果操作系统进入空闲循环而不是停止,这样的计算是 受空闲循环的IPC影响。

  • DATA_CACHE_ACCESSES

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

【问题讨论】:

    标签: performance amd-processor papi


    【解决方案1】:

    好的,这是我的猜测:

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

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

    3. 我很确定每个时钟周期可以发出一个加载和一个存储指令,因此每个时钟周期有 2 次高速缓存访​​问并不奇怪...

    希望对您有所帮助...

    【讨论】:

    • 您好,感谢您的回复,但我不确定它是否能回答我的问题。 1,在我有 100% L1 缓存命中的情况下,我会得到这种行为,因此它不会进入任何其他级别的缓存。 2,不,可能不是因为我在我预订的服务器上运行这些测试只是为了独自一人,即使其他程序正在运行,它们也会增加总周期以及 l1 数据缓存访问。 3,是的,opteron 使用双向关联 L1 缓存,这意味着您可以一次发出两条指令,但 CPU 不会等待这些访问的响应——最便宜的是 3 个周期?
    • 好吧,由于流水线,cpu 不一定要等待访问完成...
    猜你喜欢
    • 2010-10-30
    • 1970-01-01
    • 2013-09-29
    • 2023-03-31
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多