首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >x87优于上交所的优势

x87优于上交所的优势
EN

Stack Overflow用户
提问于 2009-12-04 11:33:24
回答 5查看 7.9K关注 0票数 27

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

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-12-04 14:19:19

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

在我的头上,它是所有三角的东西,像fsin,fcos,fatan,fatan2和一些指数/对数的东西。

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

编译32位x86时,MSVC调用__libm_sse2_sin_precise

如果您的代码大部分时间都在做三角运算,那么如果使用x87,您可能会看到性能略有提高或降低,这取决于在您使用的任何CPU上,使用SSE1/SSE2的标准数学库实现比fsin的慢微码快还是慢。

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

即使当x87可用时,并不是所有的数学库都选择使用像fsin这样的复杂指令来实现像sin()这样的函数,或者特别是在exp/log中,用于操作基于日志的FP位模式的整数技巧非常有用。

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

然而,对于你花大部分时间做加法、乘法等的数学代码来说,SSE通常更快。

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

票数 22
EN

Stack Overflow用户

发布于 2009-12-04 11:44:54

  1. 它出现在非常旧的机器上。

EOF

票数 17
EN

Stack Overflow用户

发布于 2010-10-13 03:35:34

FPU指令比SSE指令小,所以它们非常适合于演示

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1844669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档