英特尔并没有特别透露其分支预测器的细节。引用 Agner Fog 的Intel、AMD 和 VIA CPU 的微架构(2013-09-04 版):“分支预测器似乎在 Haswell 中进行了重新设计,但对其构造知之甚少。”
最有可能的是使用全局历史字符串(例如,一个位指示最后 N 个分支的采用/未采用)或路径历史(类似于全局历史字符串,但通常使用指令地址的散列)寻址一个或多个分支预测表,可能使用指令地址。这可能有点类似于gshare 预测器,但比 gshare 预测器更复杂。(人们可能会将这段历史视为分支预测器的一部分,而不是作为输入。)
指令地址也可能用于索引分支目标缓冲区(可能与另一个表一起用于间接调用和跳转,这可能会使用一些全局历史信息)。指令地址也可能用于预测任何分支的性质(分支标识),以便使用适当的目标预测器。分支识别对于使用专门的预测器(例如函数返回目标)的情况尤为重要。
对于分支类型、目标或分支方向的任何错误预测,稍后在管道中导出的正确信息将传达给预测器。(确认正确的预测也可能有帮助。)对于普通的分支和跳转,可以在前端(分支条件评估之前)计算目标,以纠正对采取的情况的目标错误预测。类似地,可以在指令解码后修复分支错误识别。在对间接控制流的分支方向或目标的错误预测时,可以在管道的后期提供正确的信息。