Intel 45nm 制程处理器上的 SSE4 指令集简介  
IntelSSEStreaming SIMD Extensions, 流式单指令多数据扩展)技术有效增强了 CPU的向量运算能力。支持该指令集的处理器有 8128xmm寄存器,每一个寄存器可以同时存放 432位整数 (int), 432单精度浮点数 (float) 264位双精度浮点数 (double)。比如我们在 3D开发中常见的 4元组 32位浮点数结构 <x, y, z, w>, <r, g, b, a>都可以封装在一个 xmm寄存器中。
SIMDsingle-instruction, multiple-data)使用单条指令同时完成处理多个数据的操作。假定
我们要计算一个 32位浮点数数组中每一个元素的平方根,可以将数组中的每 4个元素加载到一个 128xmm寄存器中,然后使用一条 SSE指令同时计算这 4个数的平方根,然后把所得的 4个结果写回内存。
Intel SIMD技术从 Pentium MMX时代引入,后来发展成 SSE/SSE2/SSE3/SSSE3等。在 Intel 45nm制程处理器引入了 54条新的指令,在 Core微架构的下一代 Penryn微架构中引入了 47条,称为 SSE4.1,在 Penryn的下一代 Nehalem中再引入了另外 7条,称为 SSE4.2. 新的指令集主要是为了增强多媒体,图象和 3D应用程序的性能,这些应用都需要充分发挥 CPU提供的能力来进行运算。强烈建议进行这些应用开发的朋友关注一下 SSE指令集,不需要很大的工作量就可以给你们的程序带来很大的性能提升。
开发 SSE最好的方法是使用编译器+ intrinsics,可以使用类 C的函数调用来利用 SSE,同时能充分利用到编译器的编译优化。不需要手动编写复杂的汇编代码。最新的 Intel Compiler 10可以支持生成 SSE4指令。另外 最新消息显示 VS2008中已经加上了 SSE4支持。 SSE4的详细内容可以参见 这里
使用 SSE最常见的就是进行矩阵和向量,这里有一篇很好的 whitepaper显示如何使用 SSE指令集进行 4x4矩阵和 4元组向量运算的优化,可以以此为基础打造自己的函数库,并加上最新的 SSE4指令集支持。
Optimized Matrix Library for use with the Intel® Pentium® 4 Processor's SSE2 Instructions
附带的源代码中包含单精度 (SP)和双精度 (DP)浮点数的向量和矩阵运算类,需要用 Intel Compiler进行编译。