SSE 64位寄存器
上证所的重点确实是快速处理大量数据。一次处理两个数字的能力对此有很大帮助。例如,您确实可以在单个指令(ADDPS
)中将步骤{dx, dy}
添加到坐标{x, y}
。它实际上可以添加4个浮点数,因为寄存器是128位,但对于您的情况可能不需要。 ADDPD
将128位分成2个64位,因此它增加了两个双打。 (“float64”)
但是请注意,大多数现代x86 CPU都有两个FPU,所以从2宽SIMD操作中不会获得太多。如果你一次可以做4个浮点数,那么这应该是对标量代码的2倍的胜利。 – 2014-12-07 18:12:33
@PaulR:可能想再次检查文档。 AMD Bulldozer在核心之间共享FPU的过程中有一点点道理,因此四核确实有两个FPU。然而,由于他们是上证所,即使是那些仍然可以一次处理4个花车 - 总共8个花车。 – MSalters 2014-12-07 19:18:11
我对AMD CPU不太了解,但是目前和最近的Intel Core i7每个内核有两个FPU,因此您可以在每个时钟周期发出两个标量浮点指令。 – 2014-12-08 08:47:16
不值得学习如何使用探查器。 – 2014-12-07 14:34:04
@HansPassant你为什么写关于分析器?我只是想增强一些数学功能。 – greenfox 2014-12-07 20:15:19
因为编译器已经使用SSE指令来进行浮点运算,所以您完全不知道是否有任何意见要比编译器做得更好。你可能会让它变慢*但仍然没有注意到任何区别。 – 2014-12-07 20:18:14