当前位置: 首页 > 知识库问答 >
问题:

FP和integer division是否在x86 CPU上竞争相同的吞吐量资源?

长孙阳嘉
2023-03-14

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

但是FP和integer是否有独立的分隔符(仅竞争通过端口0的调度),或者如果一个是integer,另一个是FP,交错两个div吞吐量受限的工作负载是否会使其成本几乎呈线性增加?

英特尔CPU(与AMD不同)将整数除法解码为多个uops,例如Skylake上的div r32为10,这很复杂。

AMD CPU在一个执行端口上也有类似的除法器,但我对它们了解不多,也没有一个可以测试的除法器。AMD整数除法只解码到几个UOP(写入RDX和RAX),而不是微码。AMD上的实验可能更容易解释,而不会有大量的UOP四处飞舞,这可能是int和fp div之间争用的原因。

进一步阅读:

  • 半相关:基数除法器内部
  • 浮点除法与浮点乘法-FP div/sqrt与各种Intel和AMD CPU上的乘法/FMA吞吐量。
  • 试用除法代码在Windows上的32位运行速度是Linux64位的2倍——英特尔的64位整数除法要慢得多。解码为更多uops(SKL上为36比10),甚至不饱和arith.divider_activeperf计数器。

共有1个答案

璩和璧
2023-03-14

Intel CPU架构师Ronak Singhal在推特上提到Broadwell(以及在ICL之前的后续架构)使用FP硬件进行除法,但Ice Lake有一个专用的整数除法单元:

请记住,Broadwell以FP除法器上的整数除法为基准。在冰湖,现在有一个专用的整数除法单位。

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

Ronak并没有暗示Broadwell之前的实现,但基于类似的端口分配和性能,至少可以追溯到Sandy Bridge,我认为我们可以期待同样的共享。

 类似资料:
  • 无论从什么角度来看,它都不是。 假设我有两个消费者,它们以每秒“10”条消息的速度从给定主题中消耗数据。现在,不管它们是从单个分区还是从两个不同的分区进行消耗;我的吞吐量将保持不变,每秒20条消息。 我觉得我一定漏了一些内部工作的细节,你能帮我解释一下kafka分区(多个)是如何帮助提高固定用户数量的吞吐量的,而不是单个kafka分区。

  • 来自AWS Lambda常见问题解答: Q: 我一次可以执行的AWS Lambda函数的数量是否有限制? 不需要。AWS Lambda旨在并行运行多个函数实例。然而,AWS Lambda的默认安全限制为每个区域每个帐户100次并发执行。如果您希望提交请求以增加100次并发执行的限制,您可以访问我们的支持中心,单击“打开新案例”,然后提交服务限制增加请求。 Q: 如果我的帐户超过并发执行的默认限制,

  • 在大数据存储中,IOPS和吞吐量之间的关键区别是什么

  • 问题内容: 我为Apache Flink写了一个非常简单的Java程序,现在我对测量统计信息感兴趣,例如吞吐量(每秒处理的元组数)和等待时间(程序需要处理每个输入元组的时间)。 我知道Flink公开了一些指标: https://ci.apache.org/projects/flink/flink-docs- release-1.2/monitoring/metrics.html 但是我不确定如何使

  • 我找不到任何关于agner.orgRDRAND指令的延迟或吞吐量的信息。但是,这个处理器存在,所以信息必须在那里。 编辑:实际上,最新的优化手册中提到了此说明。记录如下:

  • 吞吐量值ex。400RU/s适用于每个分区,而不是集合?