FP和整数除法在x86 CPU上竞争相同的吞吐量资源吗?

7
我们知道,英特尔CPU在端口0上的非完全流水线除法执行单元上进行整数除法和FP div / sqrt。 我们从IACA输出,其他已发布的内容和实验测试中了解到这一点。 (例如https://agner.org/optimize/
但是,FP和整数是否有独立的除法器(仅通过端口0竞争分派),或者如果一个是整数,另一个是FP,则交错两个吞吐量限制工作负载会使它们的成本几乎呈线性增加? 英特尔CPU(与AMD不同)将整数除法解码为多个uop,例如Skylake上的div r32需要10个uop。

AMD的CPU同样在一个执行端口上拥有它们的除法器,但我对它们的了解不多,并且没有一个可以测试。AMD的整数除法只解码为几个微操作(用于写入RDX和RAX),而不是微代码化的。在AMD上进行实验可能更容易解释,因为不会有大量的微操作飞来飞去,可能会导致整数和浮点数除法之间的争用。


更多阅读:


警告:此内容涉及编程。结果显示 FP 和整数除法在 Skylake 上竞争。稍后我会整理我的快速测试并将其发布为答案。 - Peter Cordes
1个回答

3

英特尔CPU架构师Ronak Singhal在Twitter上提到,Broadwell(以及随后的架构直到ICL)使用FP硬件进行除法运算,但Ice Lake具有专用的整数除法单元:

请记住,Broadwell使用的是整数除法器上的FP除法。在Ice Lake中,现在有一个专用的整数除法单元。

因此,我预计会有显着的竞争。许多整数除法执行的操作无疑是普通的ALU操作,不使用除法器,因此我不一定期望它们的反向吞吐量严格累积,但它们肯定会竞争。

Ronak并没有暗示任何关于Broadwell之前实现的内容,但基于至少Sandy Bridge时的相似端口分配和性能,我认为我们可以期望相同的共享。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接