Haswell双路径执行CPU?

Ale*_*lex 0 x86 x86-64 intel cpu-architecture branch-prediction

Haswell现在有2个分支单位 - 如下所示:http://arstechnica.com/gadgets/2013/05/a-look-at-haswell/2/

在此输入图像描述

这是否意味着Haswell是双路径执行CPU?

在:http://ditec.um.es/~jlaragon/papers/aragon_ICS02.pdf

这是否意味着Haswell只能在整数ALU和Shift(端口6)上执行第二个分支,而不能在其他端口上的任何其他ALU上执行?

Pet*_*des 6

不,Haswell仍然只是沿着分支的预测方面进行推测.

正如您从Agner Fog的指令表中可以看到的那样,port0上的分支单元只能执行预测的未采用分支.这加速了大型比较和分支链的执行,其中大多数都没有被采用.这在编译器生成的代码中并不罕见.

请参阅David Kanter的Haswell文章,特别是关于执行单元的页面.如果Haswell引入了你所链接的那篇论文中描述的功能,那么Kanter的文章就会提到它,英特尔的优化手册和Agner Fog的microarch pdf也是如此.(有关该链接的更多信息,请参阅标记wiki).

port6上整数/分支单元的一大优点是它不与任何向量执行端口共享.因此循环可以有3个向量ALU uop和一个分支,并且仍然在每个循环的一次迭代中运行.大卫坎特的写作说了同样的话.


这是否意味着Haswell只能在整数ALU和Shift(端口6)上执行第二个分支,而不能在其他端口上的任何其他ALU上执行?

如果实现了该论文的想法,它将影响整个管道,而不仅仅是执行分支的端口!

从论文:

双路径指令处理(DPIP)提出作为提取,解码和重命名,但不执行一种简单的机制,如正在执行的预测路径为从低置信度的替代路径的指令预测同时分支.

所以事实上,替代路径不会涉及执行单元.这应该是显而易见的......

  • @Alex:超线程与此无关.无序核心每个时钟只能退出一个预测的分支.但是,分支预测在管道中发生得更早.此外,3个向量ALU uops只是一个示例用例.port6可以运行简单的ALU操作,例如`add`,因此Haswell的每个时钟吞吐量为4,而IvB/SnB的吞吐量为3. (2认同)