我正在使用 Core2Duo 处理器(编译器 gcc 4.4.1)中可用的 SSE 扩展。我看到有 16 个寄存器可用,每个寄存器都是 128 位长。现在,我可以在一个寄存器中容纳 4 个整数值,在另一个寄存器中容纳 4 个整数值,并且使用内在函数我可以将它们添加到一条指令中。明显的优势是这种方式我只需要 1 条指令而不是 4 条指令。
我的问题是“这就是 SIMD 的全部内容吗?”。让我有 a1、a2、a3、a4、a5、a6、a7、a8 和 b1、b2、b3、b4、b5、b6、b7、b8。令 A1、A2 为向量寄存器。现在,A1 <<< (a1, a2, a3, a4) 和 B1 <<< (b1, b2, b3, b4) 和 add (A1, B1) 将执行向量加法。
令 A2 <<< (a5, a6, a7, a8), B2 <<< (b5, b6, b7, b8)。是否有可以同时执行 add(A1, B1) 和 add(A2, B2) 的添加指令。
core2duo 中有多少向量功能单元可用,我在哪里可以获得这些信息?
高度赞赏与这些相关的任何其他信息来源。