【问题标题】:Do FP and integer division compete for the same throughput resources on x86 CPUs?FP 和整数除法是否在 x86 CPU 上竞争相同的吞吐量资源?
【发布时间】:2020-02-13 18:11:20
【问题描述】:

我们知道英特尔 CPU 在端口 0 上的非完全流水线除法执行单元上执行整数除法和 FP div / sqrt。我们从IACA output、其他已发布的资料和实验测试中了解到这一点。 (例如https://agner.org/optimize/

但是对于 FP 和整数是否有独立的分隔符(仅竞争通过端口 0 进行调度),或者 如果一个是整数而另一个是FP?

英特尔 CPU(与 AMD 不同)将整数除法解码为多个微指令(例如10 for div r32 在 Skylake 上。


AMD CPU 同样在一个执行端口上有分频器,但我对它们了解不多,也没有一个可以测试。 AMD 整数除法仅解码为几个微指令(写入 RDX 和 RAX),而不是微编码。 AMD 的实验可能更容易解释,没有大量 uops 飞来飞去成为 int 和 fp div 之间争用的可能原因。


进一步阅读:

【问题讨论】:

  • (剧透警告:答案似乎是 FP 和整数除法 确实 在 Skylake 上竞争。将整理我的快速测试并稍后将其作为答案发布。)

标签: performance assembly x86 intel cpu-architecture


【解决方案1】:

英特尔 CPU 架构师 Ronak Singhal mentions on Twitter Broadwell(以及暗示 ICL 之前的后续架构)使用 FP 硬件进行除法,但 Ice Lake 有一个专用的整数除法单元:

请记住,以此为基准的 Broadwell 在 FP 分频器上进行整数除法。在 Ice Lake 中,现在有一个专用的整数除法单元。

所以我预计会有激烈的竞争。毫无疑问,整数除法执行的许多操作都是不使用除法器的普通 ALU 操作,所以我不一定期望它们的逆吞吐量是严格累积的,但它们肯定会竞争。

Ronak 并未暗示任何关于 Broadwell 之前的实施,但基于至少可以追溯到 Sandy Bridge 的类似端口分配和性能,我认为我们可以预期相同的共享。

【讨论】:

    猜你喜欢
    • 2019-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多