x87优于SSE的优点

时间:2009-12-04 03:33:24

标签: x86 x86-64 sse fpu x87

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

5 个答案:

答案 0 :(得分:16)

  1. 它存在于非常古老的机器上。
  2. EOF

答案 1 :(得分:16)

x87有一些SSE指令集中不存在的指令。

从头开始,它是所有三角函数,如fsin,fcos,fatan,fatan2和一些指数/对数的东西。

如果您的代码大部分时间花在三角测量上,那么使用x87时可能会略微提升性能。一些DSP算法属于这一类。

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

答案 2 :(得分:8)

FPU指令小于SSE指令,因此它们非常适用于demoscene的东西

答案 3 :(得分:4)

  • x87具有相当大的传统和小系统兼容性:SSE是一种相对较新的处理器功能。如果您的代码要在嵌入式微控制器上运行,那么它很可能不支持SSE指令。

  • 即使没有安装FPU的系统也经常提供80x87仿真器,这将使代码透明地运行(或多或少)。我不知道任何SSE模拟器 - 当然我的系统之一没有,所以最新的Adobe Photoshop元素版本拒绝运行。

  • 80x87指令具有良好的并行操作特性,自1982年左右推出以来,已经过彻底的探索和分析。 x86的各种克隆可能会在SSE指令上停滞。

答案 4 :(得分:0)

floatdouble之间的转换,x87(通常是免费的)比使用SSE更快。使用x87,您可以在寄存器堆栈中加载和存储floatdoublelong double,并将其转换为扩展精度或从扩展精度转换而无需额外成本。对于SSE,如果类型是混合的,则需要其他指令来进行类型转换,因为寄存器包含floatdouble值。这些转换指令相当快,但确实需要额外的时间。

真正的解决方法是避免过度混合floatdouble,当然不要使用x87。