performance - 哪些 CPU 状态对 Intel FPU 和 SSE 性能有影响?

标签 performance floating-point sse avx x87

试图追踪 performance issue ,我最终寻找有关影响 x87 和 SSE 指令性能的信息。我发现这些信息非常难以追踪,因为它往往隐藏在大型英特尔 PDF 深处,或者有时在第 3 方网站上提及而没有太多解释。

这个问题是关于控制字、位、模式、特定数据(例如非正规数)等等。它与内存带宽、缓存、页表、对齐或任何其他内存相关的内容无关。我将用到目前为止我发现的基本列表来回答,但请随意添加更多详细信息或我不知道的新状态。

最佳答案

到目前为止,我发现:

  • FPU 控制世界 (FCW)。它有一个精度字段,会影响某些操作的速度。据我所知,它基本上已经过时了,因为它只影响 x87 指令。
  • MXCSR 寄存器。这会通过 DAZ(非正规数为零)和 FTZ(刷新为零)位影响 SSE 数学。非正规化的计算速度较慢。
  • AVX 寄存器上部的状态。使用 vzeroupper 指令清零。英特尔论坛上有一个非常技术性的讨论:Software consequences of extending XMM to YMM

关于performance - 哪些 CPU 状态对 Intel FPU 和 SSE 性能有影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41291335/

相关文章:

xml - 为什么 eclipse 在编辑器中加载 XML 时闪烁和缓慢?

python - Python 中的十进制到二进制半精度 IEEE 754

assembly - 如何将二进制 float 转换为十进制小数?

c++ - 如何用 SSE 编译一个特定的类

c - 如何在 AVX 或 SSE 指令中进行间接加载(聚集-分散)?

c++ - SSE减少浮点 vector

java - 在方法之间重用 PreparedStatement?

performance - 将参数传递给 cellfun matlab

java - 正则表达式性能 VS 纯粹迭代的最佳实践

c# - 将 float 转换为 double 会丢失精度但不会通过 ToString