【问题标题】:Perf: Could not find an useful description of "branch-load-misses" metric性能:找不到“branch-load-misses”指标的有用描述
【发布时间】:2021-09-08 12:46:02
【问题描述】:

我试图表明由于某些优化可能会减少由于分支错误预测导致的停顿。我的直觉表明,这可能是由于与延迟分支结果的负载相关的停顿周期减少。

为此,我计划使用 Linux Perf 实用程序来获取硬件性能计数器值。有一个名为 branch-load-misses 的相关指标,但是没有提供有用的描述。

谁能确认这是否是正确使用的指标?如果没有,请提出一个可能有帮助的相关指标。

谢谢

【问题讨论】:

    标签: linux performance perf intel-vtune


    【解决方案1】:

    要测量分支预测和分支预测错误率,您可以使用 VTune Profiler。 下载链接: https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/vtune-profiler.html#gs.bh5zrq

    只需使用 2 个事件创建自定义 VTune 分析:

    BR_INST_RETIRED.ALL_BRANCHES

    BR_MISP_RETIRED.ALL_BRANCHES

    不过,您需要手动逐个分配才能获得口粮。

    BR_INST_RETIRED.ALL_BRANCHES

    计算所有已停用的(宏)分支指令。

    BR_MISP_RETIRED.ALL_BRANCHES

    计算处理器未预测到的所有退出分支指令。

    当处理器错误地预测了分支的目的地时,就会发生分支错误预测。

    当在执行时发现错误预测时,必须丢弃在错误(推测)路径中执行的所有指令,并且处理器必须开始从正确路径获取。

    如果您不知道 - 可以通过选择任何预定义的分析并按右上角的“自定义...”按钮来创建 VTune 中的自定义分析。

    例如,您可以选择 Microarchitecture Exploration,取消选中所有复选框,按“自定义...”,向下滚动到包含 CPU 事件的表并取消选中所有不需要/添加需要的事件。

    问候

    【讨论】:

    • 好的,是的,这些都是有用的硬件事件,但是 Linux perf 将其 branch-loadsbranch-load-misses 映射到什么硬件事件?你没有回答那部分,或者询问者试图衡量总的误判 penalties 而不仅仅是误判 rate
    • (如果您要求 Linux perf stat 同时测量 branchesbranch-misses,则它已经计算了未命中率,我认为在英特尔硬件上映射到 br_misp_retired.all_branchesbr_misp_retired.all_branches_pebs
    • 是的,CPU 必须从错误的路径中丢弃微指令,但是周围的代码和微架构条件会影响有多少微指令,以及需要多少总吞吐量。 Avoid stalling pipeline by calculating conditional early 讨论了一种可以降低分支缺失的方法,即将分支条件作为长时间无法确认的长 dep 链的末端。
    猜你喜欢
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 2019-12-16
    • 2012-07-05
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 2015-03-21
    相关资源
    最近更新 更多