天天看点

Intel 45nm制程处理器上的SSE4指令集简介

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最常见的就是进行矩阵和向量,这里有一篇很好的whitepaper显示如何使用SSE指令集进行4x4矩阵和4元组向量运算的优化,可以以此为基础打造自己的函数库,并加上最新的SSE4指令集支持。

Optimized Matrix Library for use with the Intel® Pentium® 4 Processor's SSE2 Instructions

<a href="http://softwarecommunity.intel.com/articles/eng/2494.htm">[url]http://softwarecommunity.intel.com/articles/eng/2494.htm[/url]</a>

附带的源代码中包含单精度(SP)和双精度(DP)浮点数的向量和矩阵运算类,需要用Intel Compiler进行编译。

<a href="http://softwarecommunity.intel.com/articles/eng/1957.htm?target=http%3A%2F%2Fsoftwarecommunity.intel.com%2Fisn%2Fdownloads%2FMatrixLibrary.zip">[url]http://softwarecommunity.intel.com/articles/eng/1957.htm?target=http%3A%2F%2Fsoftwarecommunity.intel.com%2Fisn%2Fdownloads%2FMatrixLibrary.zip[/url]</a>

本文转自Intel_ISN 51CTO博客,原文链接:http://blog.51cto.com/intelisn/131487,如需转载请自行联系原作者

继续阅读