Haswell、Sandy Bridge、Ivy Bridge和Skylake的BTB大小是多少?

8

有没有方法可以确定或者找到Haswell、Sandy Bridge、Ivy Bridge和Skylake英特尔处理器的分支目标缓冲区大小?

1个回答

11

您可以通过Agner Fog的软件优化资源了解更多信息,网址为:http://www.agner.org/optimize/

BTB应该包含在《英特尔、AMD和VIA CPU的微架构:面向汇编程序员和编译器制造商的优化指南》中,网址为:http://www.agner.org/optimize/microarchitecture.pdf

3.7 英特尔Sandy Bridge和Ivy Bridge中的分支预测

BTB组织。 根据非官方传言,Sandy Bridge中的分支目标缓冲区比Nehalem大。 目前尚不知道它是否有一个级别,就像Core 2和早期处理器一样,还是像Nehalem一样有两个级别。它可以处理每16字节代码中的最多四个调用指令。如果在16字节的代码中有超过3个分支指令,则条件跳转将不太有效率。

3.8 英特尔Haswell,Broadwell和Skylake中的分支预测

BTB组织。 分支目标缓冲区的组织方式尚不清楚。 看起来相当大。

英特尔可能会在《Intel 64和IA-32体系结构优化参考手册》中描述一些数据,网址为:http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html,关于“3.4.1分支预测优化”,但仍然没有大小信息。

虽然看起来很奇怪,但1998-2000年间的cpu id中没有有关BTB的信息:http://www.installaware.com/forums/oldattachments/02142006163/tstcpuid.c (作者:Gerald J. Heim,德国图宾根大学)。仍未列在http://www.felixcloutier.com/x86/CPUID.html或一些来自英特尔工作人员的公共材料中...

 * This table describes the possible cache and TLB configurations
 * as documented by Intel. For now AMD doesn't use this but gives
 * exact cache layout data on CPUID 0x8000000x.
 *
 * MAX_CACHE_FEATURES_ITERATIONS limits the possible cache information
 * to 80 bytes (of which 16 bytes are used in generic Pentii2).
 * With 80 possible caches we are on the safe side for one or two years.
 *
 * Strange enough no BHT, BTB or return stack data is given this way...
应该有一些性能监控单元(PMU)计数器用于BTB,有实验可以从运行特殊测试程序中获取BTB大小,请查看Matt Godbolt的http://xania.org/201602/haswell-and-ivy-btb。结论:从这些结果来看,似乎Ivy Bridge(因此很可能是Sandy Bridge)对于无条件分支的BTB查找使用了几乎相同的策略,尽管表格大小更大:4096个条目分为1024组,每组4路。对于Haswell,似乎采取了一种新的确定集合和清除条目的方法。他还发表了关于分支预测及其事件的更多帖子:他的代码是公开的,基于Agner的测试:https://github.com/mattgodbolt/agnerhttps://github.com/mattgodbolt/agner/blob/master/tests/btb_size.pyhttps://github.com/mattgodbolt/agner/blob/master/tests/branch.py

4
分支预测似乎是CPU公司不公开细节的“秘密武器”之一,可能是为了不帮助竞争对手而故意保密。我们所知道的大多数都是基于对其工作原理的理论实验测试。不可否认,我们能够推断出这么多信息真的很有趣。 - Peter Cordes
3
如何在开源OOO CPU内核中实现良好的分支预测,例如https://github.com/ucb-bar/riscv-boom/blob/master/src/main/scala/bpd_pipeline.scala 、http://riscv.org/wp-content/uploads/2016/01/Wed1345-RISCV-Workshop-3-BOOM.pdf#page=20 和 https://ccelio.github.io/riscv-boom-doc/的第三章。 - osgx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接