SSE 64位寄存器

问题描述:

我想知道,我可以总结或乘以两个float32变量吗?SSE 64位寄存器

是否值得在SSE寄存器中进行非常多的总和和乘法运算(例如在计算简单项目符号轨迹的计算机游戏中)?

+0

不值得学习如何使用探查器。 – 2014-12-07 14:34:04

+0

@HansPassant你为什么写关于分析器?我只是想增强一些数学功能。 – greenfox 2014-12-07 20:15:19

+1

因为编译器已经使用SSE指令来进行浮点运算,所以您完全不知道是否有任何意见要比编译器做得更好。你可能会让它变慢*但仍然没有注意到任何区别。 – 2014-12-07 20:18:14

上证所的重点确实是快速处理大量数据。一次处理两个数字的能力对此有很大帮助。例如,您确实可以在单个指令(ADDPS)中将步骤{dx, dy}添加到坐标{x, y}。它实际上可以添加4个浮点数,因为寄存器是128位,但对于您的情况可能不需要。 ADDPD将128位分成2个64位,因此它增加了两个双打。 (“float64”)

+1

但是请注意,大多数现代x86 CPU都有两个FPU,所以从2宽SIMD操作中不会获得太多。如果你一次可以做4个浮点数,那么这应该是对标量代码的2倍的胜利。 – 2014-12-07 18:12:33

+0

@PaulR:可能想再次检查文档。 AMD Bulldozer在核心之间共享FPU的过程中有一点点道理,因此四核确实有两个FPU。然而,由于他们是上证所,即使是那些仍然可以一次处理4个花车 - 总共8个花车。 – MSalters 2014-12-07 19:18:11

+0

我对AMD CPU不太了解,但是目前和最近的Intel Core i7每个内核有两个FPU,因此您可以在每个时钟周期发出两个标量浮点指令。 – 2014-12-08 08:47:16