x86(64位)处理器是否优化了乘法运算,如果其中一个乘法运算结果恰好为1.0? PS:我不是指编译器优化1.0的常数乘法。乘以1.0比通常乘法花费的时间更少
1
A
回答
2
这不是我在文档中提到的关于Intel或AMD CPU的指令延迟或微架构的文章。
我怀疑它不会发生,因为可变延迟会干扰流水线执行单元。 (在同一个时钟周期内从同一个执行单元出来的多个结果=额外的复杂度)。此外,可能还有其他逻辑位(uop调度/排队,结果转发网络),这些逻辑围绕具有已知延迟的每个uop而设计。 (除了像division/sqrt这样的特殊情况)。一个分析师IIRC,也许是Agner Fog或者David Kanter,建议一些uops可能可以实现2个周期的延迟,但需要3个周期来匹配其执行端口可以处理的其他uops。因此,对于英特尔CPU设计来说,持续的操作延迟似乎是一件大事,因为它值得让操作变得更慢。
请注意,我们只是在讨论延迟。如果您的乘法不是循环运行的依赖链的一部分,或者您有足够的独立乘法,则可以保持乘法器每个时钟一次运行。
Haswell CPU可以承受每时钟2个FP矢量乘法的吞吐量。 (4个双打或8个浮点的256b个向量)。无论输入如何,延时= 5个时钟周期以使结果准备就绪。或每个时钟1个矢量整数乘法。 (矢量乘ALU在端口0上。矢量FP乘法器在端口0和端口1上)。
当你可以避免乘法时,它会导致很长的依赖链。 (通常这会出现整数乘法来计算循环索引,当你编写你的循环来将计数器增加16,而不是将i++
乘以16作为数组索引时,编译器会更好。)
相关问题
- 1. 乘法计算时间的比较
- 2. 正常乘法的定点乘法
- 3. 免费乘以携带期
- 4. 得分乘法器时间
- 5. 是否比C++中的乘法更贵?
- 6. MOD操作比乘法更耗CPU吗?
- 7. ggplot百分比乘以100
- 8. python的火花矩阵乘法
- 9. 当比较花费任何时间
- 10. 数组比较和乘法
- 11. 比较矩阵乘法
- 12. 优化乘法比另外
- 13. 乘以复用常数C++
- 14. 如何让for()循环花费更少的时间(android)?
- 15. Unity - 如何减少在更新和GC中花费的时间
- 16. OpenCover花费更长的时间比NUnit控制台运行
- 17. 乘法时溢出
- 18. 运行时乘法
- 19. INNER JOIN花费更长的时间
- 20. 乘以
- 21. 乘以
- 22. 矩阵乘矢量乘法
- 23. 大整数乘法(阶乘)
- 24. BigInteger大部分时间优化乘法
- 25. 稀疏矩阵乘法执行时间
- 26. 有哪些方法可以减少Select查询所花费的时间?
- 27. 为什么要乘以8乘以Flash?
- 28. 是否可以通过grep找出grep花费多少时间完成查询?
- 29. 乘法
- 30. 乘法
有很多那里有x86处理器。通常,乘法时间可能取决于某些CPU上的操作数。 – 2015-03-31 07:09:33