Haswell、Sandy Bridge、Ivy Bridge和Skylake的BTB尺寸



是否有任何方法或任何资源可以确定Haswell、Sandy Bridge、Ivy Bridge和Skylake Intel处理器的分支目标缓冲区大小?

查看Agner Fog的软件优化资源,http://www.agner.org/optimize/

BTB应在"英特尔、AMD和VIA CPU的微体系结构:汇编程序员和编译器制造商的优化指南"中,http://www.agner.org/optimize/microarchitecture.pdf

3.7 Intel Sandy Bridge和Ivy Bridge 中的分支预测

BTB组织。Sandy Bridge中的分支目标缓冲区更大根据非官方传言,尼哈莱姆的情况比尼哈莱姆要好。目前还不知道它是像Core 2和更早的处理器那样有一个级别,还是像Nehalem那样有两个级别。它每16字节最多可以处理4条调用指令密码如果每16字节代码中有3个以上的分支指令,则条件跳转的效率较低。

3.8 Intel Haswell、Broadwell和Skylake 中的分支预测

BTB组织。分支目标缓冲区的组织结构未知。它看起来相当大。

英特尔可能会在"英特尔64与IA-32体系结构优化参考手册"中介绍一些数据http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html关于"3.4.1BranchPredictionOptimization",但仍然没有大小。

这看起来可能很奇怪,但1998-2000年cpuid中没有关于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...

BTB应该有一些性能监测单元(PMU)计数器,并且有实验可以通过运行特殊的测试程序来获得BTB的大小,请检查http://xania.org/201602/haswell-and-ivy-btbMatt Godbolt

结论

从这些结果来看,Ivy Bridge(因此可能还有Sandy Bridge)对无条件分支的BTB查找使用了几乎相同的策略,尽管表的大小更大:4096个条目分为1024组4种方式。

对于Haswell来说,似乎已经采取了一种确定集合的新方法,以及一种驱逐条目的新方法。

以及更多关于分支预测及其事件的帖子:

  • http://xania.org/201602/bpu-part-one更新的英特尔处理器上的静态分支预测
  • http://xania.org/201602/bpu-part-two分支预测-第二部分
  • http://xania.org/201602/bpu-part-three当代英特尔芯片中的BTB)
  • http://xania.org/201602/bpu-part-four分支目标缓冲区,第2部分

根据Agner的测试,他的代码是公开的:https://github.com/mattgodbolt/agner:https://github.com/mattgodbolt/agner/blob/master/tests/btb_size.py,https://github.com/mattgodbolt/agner/blob/master/tests/branch.py

相关内容

  • 没有找到相关文章

最新更新