2016-07-21 48 views

回答

8

由昂纳雾检查软件优化资源,http://www.agner.org/optimize/

BTB应在“英特尔,AMD和威盛CPU的微架构:一个优化指南汇编程序员和编译器的制造商”,http://www.agner.org/optimize/microarchitecture.pdf

3.7英特尔Sandy Bridge和常春藤桥的分支预测

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

3.8分支预测英特尔的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.1分支预测最优化”,但仍没有尺寸描述的一些数据。

这看起来很奇怪,但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大小从运行特殊的测试程序,由马特·Godbolt检查http://xania.org/201602/haswell-and-ivy-btb

结论

从这些结果,似乎常春藤桥(因此可能Sandy Bridge)对于无条件分支的BTB查找使用几乎相同的策略,虽然具有更大的表大小:4096个条目分为1024种4种方式。

对于Haswell而言,它似乎是一种确定集合的新方法,同时还有一种新的方法来驱逐条目。

多的他对分支预测的帖子和事件:在较新的Intel处理器

  • http://xania.org/201602/bpu-part-two分支预测

    他的代码是公开的,基于昂纳的测试:https://github.com/mattgodbolt/agnerhttps://github.com/mattgodbolt/agner/blob/master/tests/btb_size.pyhttps://github.com/mattgodbolt/agner/blob/master/tests/branch.py

  • +3

    分支预测似乎是“秘密武器”是CPU公司没有公布有关细节的一部分。可能是因为害怕帮助他们的竞争对手。我们所知道的大部分内容似乎都基于基于关于事物如何工作的理论的实验测试。绝对有趣的是有多少可能弄清楚。 –

    +2

    ..和如何实现开源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/第3章 – osgx