测量分支被错误预测的频率

发布于 2024-12-25 11:32:53 字数 140 浏览 1 评论 0原文

假设我在 C++ 中有一个 if-else 分支,我如何(在代码中)测量分支被错误预测的频率?我想在分支周围添加一些调用或宏(类似于自下而上分析的方式),以报告分支错误预测。

如果有一个通用方法就好了,但首先让我们使用 Intel i5 2500k。

Assuming I have a if-else branch in C++ how can I (in-code) measure how often the branch is mispredicted? I would like to add some calls or macros around the branch (similar to how you do bottom-up profiling) that would report branch mispredictions.

It would be nice to have a generic method, but lets do Intel i5 2500k for starters.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

好久不见√ 2025-01-01 11:32:53

如果您使用的是 AMD CPU,AMD 的 CodeAnalyst 正是您所需要的(适用于 Windows 和 Linux)*。

如果您没有,那么您可能需要购买 VTune 许可证或使用说明手册中的 CPU 性能寄存器和计数器详细信息构建一些东西。

您还可以查看 gperf & OProfile(仅限 Linux),看看它们的性能如何(我从未使用过这些,但我看到他们提到了很多)。

*CodeAnalyst 应该在 Intel CPU 上工作,您只是无法获得所有出色的 CPU 级别分析。

If you are using an AMD CPU, AMD's CodeAnalyst is just what you need (works on windows and Linux)*.

if your not, then you may need to fork out for a VTune licence or build something using the on CPU performance registers and counters details in the instruction manuals.

You can also check out gperf & OProfile (linux only), see how well they perform (I've never used these, but I see them referred to quite a bit).

*CodeAnalyst should work on an Intel CPU, you just don't get all then nice CPU level analysis.

药祭#氼 2025-01-01 11:32:53

我想知道是否可以从 g++ -fprofile-arcs 中提取这些信息?它必须准确地测量这一点,以便反馈到优化器中,从而优化分支。

I wonder if it would be possible to extract this information from g++ -fprofile-arcs? It has to measure exactly this in order to feed back into the optimizer in order to optimize branching.

吃不饱 2025-01-01 11:32:53

OProfile

OProfile 相当复杂,但它可以分析 CPU 跟踪的任何内容。

查看事件类型参考并查找您的特定CPU。

例如,这里是 core2 事件。经过快速搜索后,我在 core2 架构上没有看到任何用于错过分支预测的事件计数器。

OProfile

OProfile is pretty complex, but it can profile anything your CPU tracks.

Look through the Event Type Reference and look for your particular CPU.

For instance here is the core2 events. After a quick search I don't see any event counters for missed branch prediction on the core2 architecture.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文