SSE4指令集

SSE4指令集

SSE(Streaming SIMD Extensions,單指令多數據流擴展)指令集是Intel在Pentium III處理器中率先推出的。其實,早在PIII正式推出之前,Intel公司就曾經通過各種渠道公布過所謂的KNI(Katmai New Instruction)指令集,這個指令集也就是SSE指令集的前身,並一度被很多傳媒稱之為MMX指令集的下一個版本,即MMX2指令集。究其背景,原來"KNI"指令集是Intel公司最早為其下一代晶片命名的指令集名稱,而所謂的"MMX2"則完全是硬體評論家們和媒體憑感覺和印象對"KNI"的 評價,Intel公司從未正式發布過關於MMX2的訊息。

基本介紹

  • 中文名:SE4指令集
  • 外文名:Streaming SIMD Extensions
  • 指令分為:具體劃分6個部分
  • 公司英特爾
簡介,指令數目,內容,指令集架構,歷史發展,發展歷史,補充版本,新增指令,方便性,技術特色,產品前景,套用範圍,

簡介

SSE4指令集的英文全稱是:Streaming SIMD Extensions 4,是英特爾自從SSE2之後對ISA擴展指令集最大的一次的升級擴展。新指令集增強了從多媒體套用到高性能計算套用領域的性能,同時還利用一些專用電路實現對於特定套用加速。

指令數目

而最終推出的SSE指令集也就是所謂勝出的"網際網路SSE"指令集。SSE指令集包括了70條指令,其中包含提高3D圖形運算效率的50條SIMD(單指令多數據技術)浮點運算指令、12條MMX 整數運算增強指令、8條最佳化記憶體中連續數據塊傳輸指令。這些指令對流行的圖像處理、浮點運算、3D運算、視頻處理、音頻處理等諸多多媒體套用起到全面強化的作用。S SE指令與3DNow!指令彼此互不兼容,但SSE包含了3DNow!技術的絕大部分功能,只是實現的方法不同。SSE兼容MMX指令,它可以通過SIMD和單時鐘周期並行處理多個浮點數據來有效地提高浮點運算速度。
版本
4.1將包括47條指令,4.2將包括7條指令。
實際上,SSE4指令集並不能完全說是一個獨立的新技術,因為它是集成在英特爾45納米處理器之中,可以說是處理器眾多新技術之一。但之所以將其單獨拿出來為大家解析,主要是考慮到隨著人們生活水平的提高和奧運的臨近,大家對於高清視頻播放和解壓的要求也越來越高。因此在本頁中,編輯將詳細為大家介紹SSE4指令集的特點,並加以相應的測試。

內容

SSE4:全名為Streaming SIMD Extension 4,被視為繼2001年以來最重要的媒體指令集架構的改進,除擴展Intel 64指令集架構外。據了解,SSE4將分為4.1版本及4.2版本,共新增47條指令,指令如右圖:
新增指令新增指令
據Intel官方數據顯示,近期與多間軟體公司全力合作,2008 年第一季將有21款軟體支持SSE4指令集,包括影像編碼及播放軟體、數字影像內容處理軟體及3D遊戲核心,性能提高20%至110%不等。
主要構成
IntelSSE4 由一套全新指令構成,旨在提升一系列應用程式的性能和能效。Intel SSE4 構建於英特爾64指令集架構(Intel64 ) (ISA)。Intel SSE4 是英特爾與其獨立軟體開發商 (ISV) 團體精誠合作的成果,它可以支持開發人員輕鬆改進產品,同時保持必要的套用級兼容性,以適應處理器不斷疊代的需求。
自1999年多媒體指令集問世以來,已經經過了九年的時間。
主要分類
Penryn 支持 47 條 IntelSSE4 指令,包括矢量化編譯器和媒體加速器指令。未來的英特爾處理器將支持其餘指令,而軟體也將能從程式的角度檢測出處理器支持哪些 Intel SSE4 指令。
從指令數目上看,SSE4指令增加了的指令改進了整數和浮點操作。SSE4指令集將分為兩個版本:4.1和4.2,SSE4.1版本隨著45nm Penryn發布,而SSE4.2版本將會隨著下一代架構Nehalem發布。
Penryn處理器SSE4指令集解析
Penryn處理器搭載了最新的SSE4指令集,SSE4(Streaming SIMD Extensions 4)是英特爾自從SSE2之後對ISA擴展指令集最大的一次的升級擴展,它將會隨著Penryn處理器陸續套用於台式機平台、移動平台和伺服器中……
它將會隨著Penryn處理器陸續套用於台式機平台、移動平台和伺服器中。據目前所致,SSE4包括大約50條新指令,Penryn通過這些新指令集,增強了從媒體套用到高性能計算套用領域的性能,同時還利用一些專用電路實現對於特定套用加速。
從指令數目上看,SSE4的47條指令增加了的指令改進了整數和浮點操作。支持DWORD和QWORD操作,新的單精度FP操作、快速暫存器操作、面向性能最佳化的記憶體操作等等,包括了圖形、圖像、數據裝載各方面的革新,因此稱其為SSE2以來最大的指令集變動也是不為過的。利用支持SSE4指令集的編譯器編譯之後,包括圖形/圖像處理、視頻處理、2D/3D創作、多媒體、遊戲、記憶體敏感負載、高性能計算等套用都會受益。
SSE4指令集的具體指令如下圖所示,按照目前的資料,SSE4指令集還將分為兩個版本:4.1和4.2,SSE4.1版本將隨著45nm Penryn發布,而SSE4.2版本將會隨著Penryn的下一代Nehalem發布,4.1將包括47條指令,4.2將包括7條指令,因此下圖的指令數目實際上並不是47,未來的SSE4.2指令數目也可能會有變動。
對於Nehalem的SSE4.2,Intel的Gelsinger介紹說,這7條指令集的用途各有不同,比如有面向CRC-32和POP Counts等特定套用的,有特別針對XML等的流式指令。Gelsinger稱,新指令集可以將256條指令合併在一起執行,從而讓XML類工作的性能提高3倍。
SSE4——Penryn搭載的SSE4.1指令集主要分為三個部分,分別是SSE4視頻編碼加速部分、SSE4圖形加速部分和SSE4流載入部分,其中SSE4視頻編碼加速部分包括了14條指令,用於加速4x4絕對差和、子像素過濾一擊數據查找方面的性能。
在進行視頻編碼時,需要進行大量的Motion Estimation(動態預測),動態預測是視頻編碼過程中極其重要的一個環節,它的算法效率對整個編碼效率有很大的影響,而這個動態預測需要進行大量的SAD(Sums of Absolute Difference,差分絕對值和)的運算,該運算是大部分視頻編碼算法中運動估計一步常採用的方法。SAD算法將會在相鄰兩個連續視頻幀中找出一個大塊的運動情況,以紀錄其運動數據代替紀錄像素數據而節約存儲容量、壓縮視頻。為此,SAD需要計算兩個大塊中每一組對應的像素值之間絕對差值的累加和。這本身就是一個非常複雜的大數據量運算動作,即使依靠SIMD指令的一條指令就處理大量數據的優勢,要組合成SAD操作代碼也需要大量的指令。
現在,SSE4指令集內特別加入了SAD加速運算指令,只需要一條指令就可以快速高效地完成這些工作。例如,在SSE4之前,一個SAD工作代碼如下:
非常的冗長繁瑣,而在有了SSE4之後,這些指令就可以簡化為一條指令:
MPSADBW xmm0,xmm1,0

指令集架構

據了解,SSE4 指令集全名為全名為Streaming SIMD Extension4,被視為繼2001年以來最重要的媒體指令集架構的改進,除擴展 Intel64 指令集架構外,還加入有關圖形、視頻編碼及處理、三維成像及遊戲套用等指令,令涉及音頻、圖像和數據壓縮算法的應用程式大幅受益。在影像編碼及播放軟體方面,除了DivX、Pegasys TMPEGenc Xpress及Microsoft Media Encoder已支持SSE4,但在 2008 年第一季將有Mainconcent H.264 Encoder、Arcsoft Video Cleaner 、BeehiveWASP 3D 、CyberLink Power DVD Ultra 、CyberLink Power Director 、Intervideo DVD Copy 、Mainconcent H.264Decoder 、Sony H.264 Encoder/Decoder 及 Unlend DMF6 追加支持 SSE4,令 Intel 45 nm Core2處理器在影像編碼及播放效能,有更大優勢。在數碼內容處理軟體方面,將有Sony Media SW Vegas 8.0b、Adobe Premiere Pro CS3、3ivx Video Author、 nlet's Fathom、Arcsoft Media Converter、Ulead Video Studio及Image Anlyzer追加SSE4支持,預計在2008年第一季推出。在遊戲方面,將有2款遊戲支持SSE4,包括NC Soft Lineage II及Scale Form,但Intel不諱言SSE4對於遊戲的增長比較細,相信不會有太多軟體公司在遊戲核心引擎內加入SSE4支持。根據Intel最新規劃,SSE4 將分為4.1版本及4.2版本,共新增 47 條指令,主要針對向量繪圖運算、3D遊戲加速、視像編碼加速及協同處理加速動作,下一代 45 nm Nelahem將會追加SSE4.2 版本,合共 54 條指令。

歷史發展

發展歷史

首先還是讓我們回顧一下英特爾處理器集成指令的歷史,之後再引出SSE4指令集的誕生。自英特爾奔騰MMX處理器開始,處理器新加入了SIMD(Single Instruction Multiple Data)多媒體指令集。該指令集可以把多批次的指令組編輯成為一條單一的指令,從而達到提升數據處理的能力。集成MMX指令的奔騰處理器主要用作提升多媒體數據的處理能力,共有57條指令。
後來,英特爾於1999年發布了基於MMX指令的SSE指令集,全名Streaming SIMD Extensions。首顆支持SSE產品Pentium III處理器,除新增70條指令之外,還進一步提升了多媒體數據的處理能力,最重要的是解決了MMX指令與浮點指令不能同時處理的問題。而隨後在2001年發布的SSE2指令集,又在原來的基礎上增加了144條新指令。其中除了主要負責64位雙精度浮點數及整型運算和對Cache控制延遲降低兩部分之外,更重要的是完全解決了SSE指令集需要占用浮點數據暫存器問題。
SSE4指令集
時間前進至2004年,以Prescott為核心的英特爾奔騰4處理器加入了SSE3指令集,新增指令僅13條,主要是對水平式暫存器整數的運算,可對多筆數值同時進行加法或減法運算,令處理器能大量執行DSP及3D性質的運算。此外, SSE3更針對多執行緒套用進行最佳化,使處理器原有的Hyper-Theading功能獲得更佳的發揮。

補充版本

作為SSE3指令集的補充版本,SSSE3出現在我們已經相對比較熟悉的酷睿微架構處理器中,新增有16條指令,進一步增強CPU在多媒體、圖形圖像和Internet等方面的處理能力。而英特爾方面本來是計畫將該16條指令收錄在後來的SSE4指令集中,但考慮到當時硬體升級速度的大幅提升,最終決定提早加入至酷睿微架構產品中。
接下來就是我們本頁的主角SSE4指令集了。正如之前業界所盛傳的那樣,SSE4指令集被視為自2001年以來最重要的媒體指令集架構改進。除了將延續多年的32位架構升級至64位之外,還加入了圖形、視頻編碼、處理、三維成像及遊戲套用等眾多指令,使得處理器在音頻、圖像、數據壓縮算法等多方面性能大幅度提升。
不過與以往不同,英特爾將SSE4分為了4.1和4.2兩個版本,因此所看到的45納米Penryn核心處理器中,只集成了SSE 4.1版本。而至於SSE4.2,英特爾公司應該也會在不長的時間裡為我們帶出。那么新的SSE 4.1指令集擁有哪些特別之處呢?一起來看看吧!

新增指令

SSE 4.1版本的指令集新增加了47條指令,主要針對向量繪圖運算、3D遊戲加速、視頻編碼加速及協同處理的加速。英特爾方面指出,在套用SSE4指令集後,45納米Penryn核心額外提供了2個不同的32位向量整數乘法運算支持,並且在此基礎上還引入了8位無符號最小值和最大值以及16位、32位有符號和無符號的運算,能夠有效地改善編譯器編譯效率,同時提高向量化整數和單精度運算地能力。另外,SSE4.1還改良了插入、提取、尋找、離散、跨步負載及存儲等動作,保證了向量運算地專一化。
SSE4.1還加入了6條浮點型運算指令,支援單、雙精度地浮點運算及浮點產生操作。其中IEEE 754指令可實現立即轉換運算路徑模式,大大減少延遲,保證數據運算通道的暢通。而這些改變,對於進行3D遊戲和相關的圖形製作是具有相當深遠的意義。除此之外,SSE4.1指令集還加入了串流式負載指令,可提高圖形幀緩衝區的讀取數據頻寬,理論上可獲取完整的快取行,即單次性讀取64位而非原來的8位 ,並可保持在臨時緩衝區內讓指令最多帶來8倍的讀取頻寬效能提升。對於圖形處理器中央處理器之間的數據共享起到重要作用。

方便性

簡化量是非常巨大的。而在複雜的動態預測程式中,要執行複雜的SAD代碼,這時SSE4還可以額外提供更高的方便性:
SSSE3可以看作是SSE4的一個提前“泄露”的子集,同樣的工作,右邊的SSE4代碼無疑要比SSSE3更為簡捷。
SSE4當中還加入了快速查找的指令,雖然並不僅僅是視頻編碼才能具有作用,然而對於整位像素和子像素運動估計方面具有特別好的效果,如下圖的指令可以在8個元素中找到最小的一個元素,並找到其位置:
在Intel的SSE4展示當中,使用搭載SSE4指令集的2.66G Wolfdale Core 2系統對比2.33G Core 2 Duo E6550進行Pegasys TMPGEnc 4.0 XPress HDTV編碼,最後得到了55%的性能提升,其中加速的SAD處理和快速查找在各自的領域的性能提升達到了2~3倍,SSE4指令集的作用可見一斑:
其中,CPU的頻率提升只有14%,總應用程式提升卻達到了55%,這就是SSE4視頻編碼加速指令的作用了。
SSE4圖形加速部分包括了32條指令,包括了圖形構造上的大量基本操作指令:點積、雙位元組乘積、非單位步長存取等,並對現有指令的交叉支持改進了編譯器的向量化,這部分指令相當於重新提供了一個向量化的圖形操作基礎,可以極大地提升處理器在圖形處理方面的能力。
32條指令具體劃分6個部分
12條32位向量整數操作,用於提供快速的向量整數運算
7條非單位步長存取操作,提供快速的向量載入/保存
2條點積操作,在構造陣列(Array-Of-Structures)運算中可以提供非常快的點積運算能力
6條變數及立即混合,用於提升傳統SIMD代碼的性能
1條早期參量輸出,可以快速測試128-bit寬度數據
4條浮點取整,用於如Floor()、Ceil(),NINT(),nearbyint()這些經常用到的高級語言代碼,提高他們的性能
作為例子,32位向量整數操作指令是當前程式語言原語的向量版本,包括了雙位元組乘、填充雙位元組最小值/最大值、DWORD到Word組轉換、QWORD比較等指令,右下顯示了DWORD到Word組轉換使用SSE2和SSE4指令分別編寫的情形:SSE4隻需要1條,而SSE2需要11條。
SSE4流載入部分雖然只有一條指令,不過其確實具有相當重要的地位。在現有的平台當中,CPU使用Write Combining技術可以實現很高頻寬的寫入操作,可以通過MMIO的方式將圖形數據很快地寫入到Write Combining快取並迅速寫入記憶體當中,然而讀取卻是非常的緩慢,因為Write Combining快取的讀取是緩慢的(沒有Read Combining)……讀取頻寬被限制為800MB/s。
Streaming Load技術就是為了解決這個問題,它提供了一個16位對齊的載入指令,可以快速地對Write Combining記憶體進行操作,可以以高達8GB/s的速率載入數據至CPU(SSE4架構新增加了一個內部臨時快取來存放這些數據),從而大大提升了GPU-CPU之間的數據頻寬。
最後,雖然這個Streaming Load是以視頻加速為例子,實際上它的工作方式對其他外設也是有用的,這是一個通用性的提高WC記憶體讀取速度的技術。

技術特色

Intel最新45nm處理器還加入了0.5倍頻調節,增加了SSE4指令集,Wolfdale增加了2個不同的32Bit向量整數乘法運算支持,引入了8 位無符號。
基於新一代高-K金屬柵極技術的45納米Penryn處理器將採用SSE4指令集,包括47條指令,輔助整體性能有望提升40%,而且可使存取記憶體的速度度提升9倍。
自1999年多媒體指令集問世以來,其中1999年SSE指令集誕生,包含70條指令。2000年為SSE2指令集,包含有144條指令。2004年為SSE3指令集,包含13條指令。2006年為SSSE3指令集,包含32條指令。SSE4延續了多媒體指令集的發展。
SSE4指令集中有14條用作視頻加速,32條指令適用於圖形基本指令,還有一條名為Stroaming Load,可使存取記憶體的速度度提升9倍。套用範圍為視頻製作、攜帶型視頻設備、視頻檢索、圖形和圖像、遊戲和物理過程以及晶片加速器等。
在對一段720p規格的H.264高品質電影短片進行編碼測試時,集成SSE4指令集的Yorkfield 3.33GHz處理器比QX6700處理器時間縮短了約40%。
此外,SSE4加入串流式負載指令,可提高以圖形幀緩衝區的讀取數據頻寬,理論上可獲取完整的快取快取行,即每次讀取64Bit而非8Bit,並可保持在臨時緩衝區內,讓指令最多可帶來8倍的讀取頻寬效能提升,對於視訊處理、成像以及圖形處理器中央處理器之間的共享數據套用,有著明顯的效能提升。
在SSE4指令集中,共引入了47條新的多媒體運算指令。其中一條“streaming load instruction”流載入指令引起了廣泛的注意。該指令為16bit同步載入指令,但載入結果將會存儲在高優先權的臨時流緩衝中,繞過普通的CPU Cache。這一指令將有利於GPU從CPU中高速共享數據,加速圖像處理。
從Intel 45nm產品的性能以及規格來看都要比上一代的65nm產品有了長足的進步,同時在超頻潛力上又有了一個質的飛躍。而且由於45nm製程在成本上將會更低,因此在中低端市場的競爭中Intel 45nm製程的新處理器將更具有衝擊力。
缺乏SSE4指令集的處理器高清性能明顯下降
酷睿II處理器的SSE4指令集來說,它新增加了47條指令數目,其中包括了圖形、圖像、數據裝載各方面的革新。尤其對高清視編碼和頻播放來說,有著相當大的幫助,這一點從很多測試結果中也可以看出,最典型的就是被閹割了SSE4.1指令集的E5200高清測試。
在E5200和E7200這兩款處理器將5分鐘的1080P高清片段壓縮為解析度640×480視頻的測試結果中。關閉SSE4.1選項時,兩者成績相當,而當E7200開啟SSE4.1選項時,整個編碼耗時比E5200減少了53秒之多,如果編碼更長時間的高清視頻,可以節省的時間將更為可觀。這一測試可以讓我們清楚的看到處理器指令集對於高清套用的幫助。
指令集可以極大提高處理器高清性能
電腦用戶最迫切需要的是處理器高清解碼能力和優秀的3D遊戲計算能力,如果指令集加強了對高清視頻解碼以及3D遊戲的性能最佳化,那么在執行相關程式時,性能將會有大幅度的提升。
處理器的指令集發展來看,指令集的每一次進化會帶來多媒體娛樂上相當大的變化。Intel第一次在奔騰處理器中加入MMX指令集就讓許多用戶為之一振,利用MMX指令集直接就可以對MP3和VCD進行解碼,而無需使用VCD解壓卡之類的產品了。隨後的SSE系列指令集和3DNOW!指令集都有對視頻遊戲進行最佳化,使得處理器的多媒體性能越來越好。如今,Intel 45nm的酷睿II處理器整合了全新的SSE4指令集,而AMD羿龍處理器具備了SSE4A指令集,這兩款全新的指令集都對高清視頻解碼進行了大幅度的最佳化。比如其中的SSE4指令集進一步加強編碼效果,可同時處理8個4-byte寬度的SAD運算,這也是Intel宣稱雙核處理器軟解高清視頻同樣可以獲得流暢、高質量播放效果的原因,可以說徹底的將處理器帶入了高清時代。
SSE4A兼容於SSE4
關於AMD SSE4A和INTEL SSE4的區別有兩種說法,Intel在對45nm Penryn的設計中加入了SSE4.1指令集,AMD也在Stars架構中加入了SSE4A(之前為SSE128),兩者並不兼容,SSE4A的前途並不明朗。
不過後期的說法是SSE4A指令集是針對2007年同期Intel 45nm新處理器推出的SSE4指令集而修改而來,Intel的SSE4會增加48條指令,為了保證和SSE4指令集最大的兼容,SSE4A則去除其中對I64最佳化的指令,保留了SSE4在圖形處理、影音編碼、3D運算、遊戲等多媒體指令,也就是說兩者基本保持兼容,顯然這種情況才是軟體設計師和大眾更喜歡看到的.因為當支持SSE4的軟體檢測到CPU支持SSE4的時候,才得以繼續安裝而不會造成“下一步”是灰色的.

產品前景

據Intel指出,在套用SSE4指令集後,Penryn增加了2個不同的32Bit向量整數乘法運算支持,引入了8位無符號 (Unsigned)最小值及最大值運算,以及16Bit 及32Bit 有符號 (Signed) 及無符號運算,並有效地改善編譯器效率及提高向量化整數及單精度代碼的運算能力。同時,SSE4 改良插入、提取、尋找、離散、跨步負載及存儲等動作,令向量運算進一步專門化。不僅如此,Intel SSE4指令集還進一步增強訊編碼效果,例如可同時處理8個4-byte寬度的SAD(Sums of Absolute Differences)運算,常用於新一代高清影像編碼如VC.1及H.264等規格中,令視頻編碼速度進一步提升。因此在播放高清視頻的時候,即使在軟解的情況下也同樣遊刃有餘。

套用範圍

SSE4 指令集構建於英特爾64 指令集架構 (Intel® 64 Instruction Set Architecture) (ISA),該架構是開發 32 位和 64 位套用最為廣泛套用的電腦架構。Intel&reg SSE4 包含 54 條指令,主要分為兩類:矢量化編譯器和媒體加速器,以及高效加速字元串和文本處理。矢量化編譯器和媒體加速器可提供高性能的編譯器函式館,如封包(同時使用多個運算元)整數運算和浮點運算,可生成性能最佳化型代碼。此外,它還包括高度最佳化的媒體相關運算,如絕對差值求和、浮點點積和記憶體負載等。矢量化編譯器和媒體加速器指令可改進音頻、視頻和圖像編輯套用、視頻編碼器、3D 套用和遊戲的性能。高效加速字元串和文本處理包含多個壓縮字元串比較指令,允許同時運行多項比較和搜尋操作。由此受益的套用包括資料庫和數據採掘套用,以及那些利用病毒掃描和編譯器等分析、搜尋和模式匹配算法的套用。

相關詞條

熱門詞條

聯絡我們