gpt4 book ai didi

x86 - x87 相对于 SSE 的优势

转载 作者:行者123 更新时间:2023-12-03 10:51:21 25 4
gpt4 key购买 nike

我知道 x87 具有更高的内部精度,这可能是人们看到它与 SSE 操作之间最大的区别。但我想知道,使用 x87 是否还有其他好处?我有打字的习惯-mfpmath=sse自动在任何项目中,我想知道我是否遗漏了 x87 FPU 提供的其他任何东西。

最佳答案

对于手写的 asm,x87 有一些 SSE 指令集中不存在的指令。

在我的脑海里,这都是三角函数,比如 fsin、fcos、fatan、fatan2 和一些指数/对数的东西。

gcc -O3 -ffast-math -mfpmath=387 , GCC9 仍然会实际内联 sin(x)作为 fsin指令,不管 libm 中的实现会使用什么。 ( https://godbolt.org/z/Euc5gp )。

MSVC 电话 __libm_sse2_sin_precise为 32 位 x86 编译时。

如果您的代码大部分时间都花在三角函数上,那么您在使用 x87 时可能会看到轻微的性能提升或损失,这取决于您使用 SSE1/SSE2 的标准数学库实现是比 fsin 的慢微代码快还是慢。在您使用的任何 CPU 上。

CPU 供应商不会在最新一代 CPU 中为 x87 指令优化微代码,因为它通常被认为已经过时且很少使用。 (查看最近几代 CPU 中 Agner Fog's instruction tables 中复杂 x87 指令的 uop 计数和吞吐量:比旧 CPU 中的周期数更多)。 CPU 越新,x87 就越有可能比许多 SSE 或 AVX 指令计算 log、exp、pow 或 trig 函数的速度慢。

即使 x87 可用,并非所有数学库都选择使用复杂指令,如 fsin用于实现 sin() 等功能,或者尤其是 exp/log,其中用于操作基于日志的 FP 位模式的整数技巧很有用。

一些 DSP 算法使用大量触发,但通常从 SIMD 数学库的自动矢量化中获益良多。

但是,对于您花费大部分时间进行加法、乘法等的数学代码,SSE 通常更快。

还相关:Intel Underestimates Error Bounds by 1.3 quintillion - fsin 的最坏情况(fsin 输入非常接近圆周率的灾难性取消)非常糟糕。软件可以做得更好,但只能使用缓慢的扩展精度技术。

关于x86 - x87 相对于 SSE 的优势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1844669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com