如何得到 CPU 的 BTB ( Branch Target Buffers)大小

2017-09-12 10:21:12 +08:00
 wildlynx
https://www.ibm.com/developerworks/cn/linux/l-cn-perf1/index.html

在看 perf 性能调优工具的一篇看到这样的话:

“可以看到 branche-misses 的情况比较严重,25% 左右。我测试使用的机器的处理器为 Pentium4,其 BTB 的大小为 16。而 test.c 中的循环迭代为 20 次,BTB 溢出,所以处理器的分支预测将不准确。”
1847 次点击
所在节点    问与答
3 条回复
Mithril
2017-09-12 10:42:50 +08:00
没地方能知道。分支预测算是核心技术了,文档里面基本也没有太详细的描述。
这篇文章的作者在这个例子上是直接翻译的参考文章 6,那篇文章是 Intel 的人自己写的。而且是在 2011 年写的 P4 中的实现。
不过你可以照着文章的实现代码写个程序试试看大概有多大。如果你的处理器用的是 BTB 的话
coderluan
2017-09-12 11:36:24 +08:00
google:vtune amplifier BTB

@Mithril #1 可以做到,当然这种核心技术 Intel 自己有提供,上面提供的工具就是 Intel parallel studio 的一个组件。
Mithril
2017-09-12 13:53:00 +08:00
@coderluan 题主想要的是 BTB 的 size,而不是分支预测失败的性能计数

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/389986

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX