试图追踪 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/