首页 文章

Haswell双路径执行CPU?

提问于
浏览
0

Haswell现在有 2 Branch Units - 如下所示:http://arstechnica.com/gadgets/2013/05/a-look-at-haswell/2/

enter image description here

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

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

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

2 回答

  • 3

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

    port0上的分支单元只能执行预测的未采用分支,如Agner Fog's instruction tables所示 . 这加速了大型比较和分支链的执行,其中大多数都没有被采用 . 这在编译器生成的代码中并不罕见 .

    请参阅David Kanter的Haswell撰写,特别是the page about execution units . 如果Haswell引入了您在该论文中描述的功能,那么您可以使用Kanter _2876250的优化手册和Agner Fog的microarch pdf . (请参阅x86标记wiki以获取该链接以及更多信息) .

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


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

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

    从论文:双路径指令处理(DPIP)被提议作为一种简单的机制,在预测路径为的同时从低可信度预测分支的备用路径获取,解码和重命名但不执行指令 . 被执行 .

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

  • 6

    你不需要执行这两个路径 - 假设平均每5个指令通常有一个分支,那很难,因为你很快会得到一个指数路径 . 即使你只是在难以预测的分支上发生这样的分歧,你仍然可能最终得到大量的并行路径 .

    添加第二个分支单元的原因要简单得多 - 在无序机器中,即使计算单个预测的“主要”执行路径,您仍然会得到大量的飞行中分支 . 请注意,预测是在管道的开头进行的,因此它与每个分支的实际执行和分辨率分离 . 在实践中,前端将为机器提供分支机构,OOO机器需要解决依赖关系并尽快执行它们(因为你想尽早解决预测,如果你错了就恢复) . 我想设计人员发现需要额外的执行带宽,因为可能存在多个分支(甚至可能在程序顺序上不连续)同时准备好它们的源并突然需要一次执行的情况 . 因此,关于“第二个欧盟高分支代码”的评论 .

    除了相互冲突的分支之外,您还可以看到执行端口0还承载了许多其他类型的操作,因此您还可以准备执行分支但由于其他非分支操作而停滞 . 因此关于port0冲突的其他评论(理论上,他们可能只是将分支执行单元移动到另一个端口,但这会增加其他冲突,并且它不会解决分支与分支冲突) .

相关问题