Intel 45nm
制程处理器上的
SSE4
指令集简介
Intel的
SSE(
Streaming SIMD Extensions, 流式单指令多数据扩展)技术有效增强了
CPU的向量运算能力。支持该指令集的处理器有
8个
128位
xmm寄存器,每一个寄存器可以同时存放
4个
32位整数
(int), 4个
32单精度浮点数
(float) 或
2个
64位双精度浮点数
(double)。比如我们在
3D开发中常见的
4元组
32位浮点数结构
<x, y, z, w>, <r, g, b, a>都可以封装在一个
xmm寄存器中。
SIMD(
single-instruction, multiple-data)使用单条指令同时完成处理多个数据的操作。假定
我们要计算一个
32位浮点数数组中每一个元素的平方根,可以将数组中的每
4个元素加载到一个
128位
xmm寄存器中,然后使用一条
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进行编译。
本文转自Intel_ISN 51CTO博客,原文链接:http://blog.51cto.com/intelisn/131487,如需转载请自行联系原作者