2

我在这里查看幻灯片 13:

http://research.engineering.wustl.edu/~songtian/pdf/intel-haswell.pdf

(它应该显示 Haswell 的大框图)

在顶部它有一个名为“分支预测器”的块,有两个箭头出来。我有点不确定这里流程的正确顺序是什么?首先,“分支预测器”块没有任何输入?!

有人可以尝试解释(使用图表)分支预测器如何与其他元素交互吗?

此外,图中的哪些元素将与分支目标(预测器)缓冲区接口?会不会是从分支预测器中箭头出来的相同的两个(橙色和紫色)​​?

4

1 回答 1

3

英特尔并没有特别透露其分支预测器的细节。引用 Agner Fog 的Intel、AMD 和 VIA CPU 的微架构(2013-09-04 版):“分支预测器似乎在 Haswell 中进行了重新设计,但对其构造知之甚少。”

最有可能的是使用全局历史字符串(例如,一个位指示最后 N 个分支的采用/未采用)或路径历史(类似于全局历史字符串,但通常使用指令地址的散列)寻址一个或多个分支预测表,可能使用指令地址。这可能有点类似于gshare 预测器,但比 gshare 预测器更复杂。(人们可能会将这段历史视为分支预测器的一部分,而不是作为输入。)

指令地址也可能用于索引分支目标缓冲区(可能与另一个表一起用于间接调用和跳转,这可能会使用一些全局历史信息)。指令地址也可能用于预测任何分支的性质(分支标识),以便使用适当的目标预测器。分支识别对于使用专门的预测器(例如函数返回目标)的情况尤为重要。

对于分支类型、目标或分支方向的任何错误预测,稍后在管道中导出的正确信息将传达给预测器。(确认正确的预测也可能有帮助。)对于普通的分支和跳转,可以在前端(分支条件评估之前)计算目标,以纠正对采取的情况的目标错误预测。类似地,可以在指令解码后修复分支错误识别。在对间接控制流的分支方向或目标的错误预测时,可以在管道的后期提供正确的信息。

于 2014-02-09T22:38:24.663 回答