SSE4

英特爾開發的技術

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

簡介


實際上,SSE4指令集並不能完全說是一個獨立的新技術,因為它是集成在2008年發布的英特爾酷睿2代45納米處理器之中,這一代處理器集成了SSE4.1指令集,之後的Nehalem架構及更新工藝的處理器則集成了SSE4.2指令集,故SSE4指令集實際包括SSE4.1和SSE4.2指令集,該指令集可以說是處理器眾多新技術之一。但之所以將其單獨拿出來為大家解析,主要是考慮到隨著人們生活水平的提高,大家對於高清視頻播放和解壓的要求也越來越高。因此在本頁中,編輯將詳細為大家介紹SSE4指令集的特點,並加以相應的測試。

發展史


首先還是讓我們回顧一下英特爾處理器集成指令的歷史,之後再引出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指令集需要佔用浮點數據暫存器問題。
時間前進至2004年,以Prescott為核心的英特爾奔騰4處理器加入了SSE3指令集,新增指令僅13條,主要是對水平式暫存器整數的運算,可對多筆數值同時進行加法或減法運算,令處理器能大量執行DSP及3D性質的運算。此外, SSE3更針對多線程應用進行最佳化,使處理器原有的Hyper-Theading功能獲得更佳的發揮。
2005年後,作為SSE3指令集的補充版本,SSSE3出現在我們已經相對比較熟悉的酷睿微架構處理器中,新增有16條指令,進一步增強CPU在多媒體、圖形圖像和Internet等方面的處理能力。而英特爾方面本來是計劃將該16條指令收錄在後來的SSE4指令集中,但考慮到當時硬體升級速度的大幅提升,最終決定提早加入至酷睿微架構產品中。故早期的SSE4容易與SSSE3混淆,包括老一代CPU-Z均將SSSE3直接認定為SSE4,但實際上真正的新SSE4指令集出現在2008年發布的新一代45nmCore 2處理器上,即第一版SSE4.1。

產生背景


接下來就是我們本頁的主角SSE4指令集了。正如之前業界所盛傳的那樣,SSE4指令集被視為自2001年以來最重要的媒體指令集架構改進。除了將延續多年的32位架構升級至64位之外,還加入了圖形、視頻編碼、處理、三維成像及遊戲應用等眾多指令,使得處理器在音頻、圖像、數據壓縮演演算法等多方面性能大幅度提升。

版本


不過與以往不同,英特爾將SSE4分為了4.1和4.2兩個版本,因此45納米Penryn核心處理器中,只集成了SSE4.1版本。而SSE4.2指令集則在新一代Nehalem架構處理器上為我們帶出。那麼新的SSE 4.1指令集擁有哪些特別之處呢?一起來看看吧!
SSE4.1版本的指令集新增加了47條指令,主要針對向量繪圖運算、3D遊戲加速、視頻編碼加速及協同處理的加速。英特爾方面指出,在應用SSE4指令集后,45納米Penryn核心額外提供了2個不同的32位向量整數乘法運算支持,並且在此基礎上還引入了8位無符號最小值和最大值以及16位、32位有符號和無符號的運算,能夠有效地改善編譯器編譯效率,同時提高向量化整數和單精度運算地能力。另外,SSE4.1還改良了插入、提取、尋找、離散、跨步負載及存儲等動作,保證了向量運算地專一化。
SSE4.1還加入了6條浮點型運算指令,支援單、雙精度地浮點運算及浮點產生操作。其中IEEE 754指令可實現立即轉換運算路徑模式,大大減少延遲,保證數據運算通道的暢通。而這些改變,對於進行3D遊戲和相關的圖形製作是具有相當深遠的意義。除此之外,SSE4.1指令集還加入了串流式負載指令,可提高圖形幀緩衝區的讀取數據頻寬,理論上可獲取完整的緩存行,即單次性讀取64位而非原來的8位,並可保持在臨時緩衝區內讓指令最多帶來8倍的讀取頻寬效能提升。對於圖形處理器與中央處理器之間的數據共享起到重要作用。
SSE4.2則是在新一代Nehalem架構基於Core微架構的SSE4.1指令集上,新增的7組指令,有別於SSE4.1主要針對加快處理器的多媒體處理,例如圖形顯示、視頻編碼及處理、3D圖像處理、計算機遊戲等,SSE4.2主要針對字元串和文本處理指令應用。SSE4.2指令集可再細分為STTNI及ATA2個組別;STTNI主要是加速字元串及文本處理,例如XML應用進行高速查找及對比,相較以軟體運算,SSE4.2提供約3.8倍的速度,提升及節省2.7倍指令周期,對伺服器應用有顯著效能改善。
完整的SSE4指令集已同時被2011年底AMD新推出的推土機架構處理器兼容支持。

特點


SSE4的兩個子集(SSE4.1和SSE4.2)共包含54條指令,主要分為兩類:矢量化編譯器和媒體加速器,以及高效加速字元串和文本處理。

矢量化編譯器

矢量化編譯器和媒體加速器可提供高性能的編譯器函數庫,如封包(同時使用多個操作數)整數運算和浮點運算,可生成性能優化型代碼。此外,它還包括高度優化的媒體相關運算,如絕對差值求和、浮點點積和內存負載等。矢量化編譯器和媒體加速器指令可改進音頻、視頻和圖像編輯應用、視頻編碼器、3D應用和遊戲的性能。

媒體加速器

高效加速字元串和文本處理包含多個壓縮字元串比較指令,允許同時運行多項比較和搜索操作。由此受益的應用包括資料庫和數據採掘應用,以及那些利用病毒掃描和編譯器等分析、搜索和模式匹配演演算法的應用。