Pet*_*des 5 performance x86 assembly intel cpu-architecture
我们知道英特尔CPU在端口0上未完全流水线的除法执行单元上执行整数除法和FP div / sqrt。我们从IACA输出,其他已发表的内容和实验测试中了解到这一点。(例如https://agner.org/optimize/)
但是,对于FP和整数,是否有独立的分隔符(仅与通过端口0进行分配竞争),或者如果一个是整数而另一个是FP,则交错两个div吞吐量约束的工作负载会使它们的成本几乎成线性增加吗?
英特尔CPU(与AMD不同)将整数除法解码为多个微指令,例如div r32
在Skylake上为10,从而使情况变得复杂。
同样,AMD CPU在一个执行端口上有分配器,但我对它们了解不多,也没有要测试的分配器。AMD整数除法仅解码到几微码(以写入RDX和RAX),而不进行微编码。在AMD上进行的实验可能会更容易解释,而不会出现大量的uop成为int和fp div之间争用的可能原因。
进一步阅读:
arith.divider_active
计数器饱和。Intel CPU 架构师 Ronak Singhal在 Twitter 上提到Broadwell(以及暗示 ICL 之前的后续架构)使用 FP 硬件进行除法,但 Ice Lake 有一个专用的整数除法单元:
请记住,以此为基准的 Broadwell 在 FP 除法器上进行整数除法。在 Ice Lake 中,现在有一个专用的整数除法单元。
所以我预计会有激烈的竞争。毫无疑问,整数除法执行的许多操作都是不使用除法器的普通 ALU 操作,因此我不一定期望它们的逆吞吐量严格累积,但它们肯定会竞争。
Ronak 并没有暗示 Broadwell 之前实施的任何内容,但基于至少可以追溯到 Sandy Bridge 的类似端口分配和性能,我认为我们可以预期相同的共享成立。
归档时间: |
|
查看次数: |
86 次 |
最近记录: |