天天看點

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,如需轉載請自行聯系原作者

繼續閱讀