SSE 4.2
SSE 4.2
Intel首次在45nm Penryn處理器中新增了英特爾SSE4指令集,這是自最初SSE指令集架構ISA推出以來添加的最大指令集,其中包含了47條多媒體處理指令,進一步擴展了英特爾64指令集架構。之前45nm Penryn處理器的指令集版本為SSE4.1,此次Nehalem處理器在SSE4.1指令集的基礎上又加入了幾條新的指令,稱之為SSE4.2。
SSE4.2指令集新增的部分主要包括STTNI(STring & Text New Instructions)和ATA(Application Targeted Accelerators)兩個部分。以往每一次的SSE指令集更新都主要體現於多媒體指令集方面,不過此次的SSE4.2指令集卻是加速對XML文本的字元串操作、存儲校驗等。
更具體地說,SSE4.2 加入七個新指令:CRC32、PCMPESTRI、PCMPESTRM、PCMPISTRI、PCMPISTRM、PCMPGTQ 與 POPCNT。
英特爾表示,採用SSE 4.2指令集后,XML的解析速度最高是原來的3.8倍,而指令周期節省可以達到2.7倍。此外,在ATA領域,SSE 4.2指令集對於大規模數據集中處理和提高通信效率都會發揮應有的作用,這些對於企業IT應用顯然是有幫助的。當然,SSE 4.2指令集只有在軟體對其支持后才會生產效果,相信Nehalem-EP上市,相關的優化與升級屆時就會出現。
SSE4的英文全稱是:Streaming SIMD Extensions 4,是英特爾自從SSE2之後對ISA擴展指令集最大的一次的升級擴展。新指令集增強了從多媒體應用到高性能計算應用領域的性能,同時還利用一些專用電路實現對於特定應用加速。
從指令數目上看,SSE4指令增加了的指令改進了整數和浮點操作,支持DWORD和QWORD操作,新的單精度FP操作、快速寄存器操作、面向性能優化的內存操作等等,包括了圖形、圖像、數據裝載各方面的革新,因此稱其為SSE2以來最大的指令集變動也是不為過的。利用支持SSE4指令集的編譯器編譯之後,包括圖形/圖像處理、視頻處理、2D/3D創作、多媒體、遊戲、內存敏感負載、高性能計算等應用都會受益。
SSE4指令集分為兩個版本:4.1和4.2,SSE4.1版本隨著45nm Penryn發布,而SSE4.2版本會隨著下一代架構Nehalem發布,4.1包括47條指令,4.2包括7條指令。
據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 SSE4 包含 54 條指令,主要分為兩類:矢量化編譯器和媒體加速器,以及高效加速字元串和文本處理。矢量化編譯器和媒體加速器可提供高性能的編譯器函數庫,如封包(同時使用多個操作數)整數運算和浮點運算,可生成性能優化型代碼。此外,它還包括高度優化的媒體相關運算,如絕對差值求和、浮點點積和內存負載等。矢量化編譯器和媒體加速器指令可改進音頻、視頻和圖像編輯應用、視頻編碼器、3D 應用和遊戲的性能。高效加速字元串和文本處理包含多個壓縮字元串比較指令,允許同時運行多項比較和搜索操作。由此受益的應用包括資料庫和數據採掘應用,以及那些利用病毒掃描和編譯器等分析、搜索和模式匹配演演算法的應用。
SSE4加入了6條浮點型點積運算指令
SSE4加入了6條浮點型點積運算指令,支持單精度、雙精度浮點運算及浮點產生操作,且IEEE 754指令 (Nearest, -Inf, +Inf, and Truncate) 可立即轉換其路徑模式,大大減少延誤,這些改變會對遊戲及 3D 內容製作應用有重要意義。此外,SSE4加入串流式負載指令,可提高以圖形幀緩衝區的讀取數據頻寬,理論上可獲取完整的快取緩存行,即每次讀取64Bit而非8Bit,並可保持在臨時緩衝區內,讓指令最多可帶來8倍的讀取頻寬效能提升,對於視訊處理、成像以及圖形處理器與中央處理器之間的共享數據應用,有著明顯的效能提升。
Nehalem微架構最高支持4顆處理器的Quick Path多路伺服器環境,單一晶元最高可擁有2、4及8顆核心,支持經改良的Hyper-Theading技術,令單顆處理器最高可支持16 Threads,而且Nehalem架構中的Havendale亦會內建繪圖核心。新增SSE4.2指令集及ATA指令集令系統性能全面提升,令人期待。此外,新一代Nehalem會放棄FSB設計,採用全新的Quick Path Interconnect架構,已得知伺服器版本的Nehalem處理器最高可擁有4組Quick Path Interconnect,並至少可組成四顆處理器的數據可直接互換的4Ways伺服器架構。
Nehalem搭配了高速三級緩存
英特爾每次在緩存和指令集上的小小改進都會對處理器的性能產生質的變化。最新的45nm Nehalem產品中會出現第二代SSE4技術,這比45nm處理器更為強大,可以看成是一種流SIMD擴展:SSE 4.2。據了解,Nehalem包含一個全新的ATA中心和文字與字元串處理引擎,這意味著該處理器對於文本的處理性能有很大提升。此外,基於XML文件作為病毒定義的反病毒軟體也可能因此而受益。
對於Nehalem的SSE4.2,Intel的Gelsinger介紹說,這7條指令集的用途各有不同,比如有面向CRC-32和POP Counts等特定應用的,有特別針對XML等的流式指令。Gelsinger稱,新指令集可以把256條指令合併在一起執行,從而讓XML類工作的性能提高3倍。
Nehalem性能相比上一代提升30%
預計在2009年的第二季末,Intel會推出內建繪圖核心的處理器,核心代號為Havendale,這是一顆針對主流級市場的雙核心處理器,採用45nm製程,支持SMT(Simultaneous Multi-Threading),L2 Cache容量最高為4M。雖然同樣內建內存控制器及PCI-Express繪圖介面,但它卻不是原生設計,Havandale把繪圖核心、PCI-Express繪圖介面及內存控制器製作成一顆晶元,與處理器核心採用MCP(Multi-Chip Package)封裝在一起,兩者採用Quick Path Interconnect連接。相信大家更關心的是Intel能否真的把CPU和GPU真正的同一!
在SSE4指令集中,共引入了47條新的多媒體運算指令。其中一條“streaming load instruction”流載入指令引起了廣泛的注意。該指令為16bit同步載入指令,但載入結果會存儲在高優先順序的臨時流緩衝中,繞過普通的CPU Cache。這一指令有利於GPU從CPU中高速共享數據,加速圖像處理。
從Intel 45nm產品的性能以及規格來看都要比上一代的65nm產品有了長足的進步,同時在超頻潛力上又有了一個質的飛躍。這讓更多的I飯們看到衝擊極限的希望。而且由於45nm製程在成本上會更低,因此在中低端市場的競爭中Intel 45nm製程的新處理器更具有衝擊力。
SSE是英特爾提出的即MMX之後新一代CPU指令集,最早應用在PIII系列CPU上。已經得到了Intel PIII、P4、Celeon、Xeon、AMD Athlon、duron等系列CPU的支持。而更新的SSE2指令集僅得到了P4系列CPU的支持,這也是為什麼這篇文章是講SSE而不是SSE2的原因之一。另一個原因就是SSE和SSE2的指令系統是非常相似的,SSE2比SSE多的僅是少量的額外浮點處理功能、64位浮點數運算支持和64位整數運算支持。
因為它使用了128位的存儲單元,這對於32位的浮點數來講,是可以存下4個的,也就是說,SSE中的所有計算都是一次性針對4個浮點數來完成的,這種批處理當然就會帶來效率的提升。再來回顧一下SSE的全稱:Stream SIMD Extentions(流SIMD擴展)。SIMD就是single instruction multiple data,連起來就是“數據流單指令多數據擴展”,從名字人們就可以更好的理解SSE是如何工作的了。
提升的SSE4.2 SSE4指令集被認為是2001年以來Intel最重要的指令集擴展,包含54條指令。 Intel在Penryn處理器中加入了對SSE4.1的支持,共增加了47條新指令,提升了處理器在圖形、3D圖像與遊戲、視頻編碼與影音處理等方面的性能表現。本次在Nehalem處理器中,進一步支持了SSE4.2指令集。SSE4.2完整的實現了SSE4指令集,相對於SSE4.1加入了7條新指令。
雖然SSE從理論上來講要比傳統的浮點運算會快,但是他所受的限制也很多,首先,雖然他執行一次相當於四次,會比傳統的浮點運算執行4次的速度要快,但是他執行一次的速度卻並沒有想象中的那麼快,所以要體現SSE的速度,必須有Stream做前提,就是大量的流數據,這樣才能發揮SIMD的強大作用。其次,SSE支持的數據類型是4個32位(共計128位)浮點數集合,就是C、C++語言中的float,並且必須是以16位位元組邊界對齊的(稍後會以代碼來進行闡釋,關於邊界對齊的概念,讀者可以參考論壇上的其它文章,都會有很詳細的解答,這裡就恕不贅述了)。因此這也給輸入和輸出帶來了不少的麻煩,實際上主要影響SSE發揮性能的就是不停的對數據進行複製以適用應它的數據格式。
英特爾SSE4指令集最早出現於45納米處理器上,首顆發布的Core 2 Extreme QX9650配備了SSE4指令集的第一版,即SSE4.1,憑藉著這一指令集,45納米酷睿2處理器的多媒體性能相對於65納米產品提升了70%,而在Nehalem Core i7上,預計會迎來SSE4指令集的第二版,即SSE4.2。
人們知道,SSE 4.1版本的指令集增加了47條指令,主要針對向量繪圖運算、3D遊戲加速、視頻編碼加速及協同處理的加速。英特爾方面指出,在應用SSE4指令集后,45納米Penryn核心額外提供了2個不同的32位向量整數乘法運算支持,並且在此基礎上還引入了8位無符號最小值和最大值以及16位、32位有符號和無符號的運算,能夠有效地改善編譯器編譯效率,同時提高向量化整數和單精度運算地能力。另外,SSE4.1還改良了插入、提取、尋找、離散、跨步負載及存儲等動作,保證了向量運算地專一化。
經過測試,SSE4.1指令集的處理器比不具備此指令集的同檔次處理器的視頻編碼效能提高了70%,在遊戲中也有很明顯的性能提升。而SSE4.2指令集則把重點放在了文本處理上。據英特爾透露,Nehalem的SSE4.2指令集中的7條指令用途各不相同,有面向CRC-32和POP Counts的,也有特別針對XML的流式指令。帕特·基辛格表示,SSE4.2指令集可以把256條指令和並在一起執行讓類似XML的工作性能提升3倍!
新一代 Nehalem 微架構基於 Core 微架構的 SSE 4.1 指令集上,新增了 7 組 SSE 4.2 指令,有別於 SSE 4.1 主要針對加快處理器的多媒體處理,例如圖形顯示、視頻編碼及處理、 3D 圖像處理、計算機遊戲等, SSE 4.2 主要針對字元串和文本處理指令應用。SSE 4.2 指令集可再細分為 STTNI 及 ATA 2 個組別; STTNI 主要是加速字元串及文本處理,例如 XML 應用進行高速查找及對比,相較以軟體運算, SSE 4.2 提供約 3.8 倍的速度,提升及節省 2.7 倍指令周期,對伺服器應用有顯著效能改善。
而 ATA 則是用作資料庫中加速搜索和識別,其中 POPCNT 指令對於提高快速匹配和數據挖掘上有很大幫助,能應用於 DNA 基因配對及語音辨識等,此外, ATA 亦提供硬體的 CRC32 硬體加速可用於通訊應用上,支持 32Bit 及 64Bit ,相較軟體運算高出至少 6x 以上。
Intel C++ Compiler 10.x 及 Microsoft Visual Studio 2008 VC++ 均支持 SSE 4.2 指令集, Intel 預期在明年上半年,主要的伺服器軟體會加入 SSE 4.2 支持。
Intel從LGA 1366平台的Core i7-900系列處理器開始支持SSE4.2(Streaming SIMD Extensions 4.2)指令集,據英特爾透露,SSE4.2指令集中新增的7條指令用途各不相同,有面向CRC-32和POP Counts的,也有特別針對XML的流式指令。SSE4.2指令集可以將256條指令合併在一起執行,讓類似XML的工作性能得到數倍的性能提升。
Lynnfield處理器支持SSE4.2指令集
實際上我們所說的SSE4指令集共包括54條指令,在之前的Core 2處理器上已經實現了47條,被稱為SSE4.1,而最後7條指令得以在Nelalem上實現,被稱為SSE4.2。
Intel新發布的Lynnfield核心i7、i5處理器依然保留了完整的SSE4.2指令集,使CPU在多媒體應用上和XML文本的字元串操作、存儲校驗CRC32等方面有明顯性能提升,並沒有因為市場定位而對指令集進行縮減。
在45納米Core架構時代,Intel首次為旗下產品加入了SSE4.1指令集,他的出現令45nm工藝產品相比65nm產品的多媒體性能提升了將近70%。在Nehalem架構產品上,Intel再一次添加了新的指令集SSE4.2,換來的性能提升自然不言而喻。
總結:即將發布的酷睿i5處理器可以看做是Nehalem架構成熟后的產品,因為從這一代開始,北橋的作用真正的被CPU完全取代,並且延續著每瓦性能這一理念。雖然酷睿i5遺憾的取消了超線程技術,但是對於普通消費者來講,超線程技術的缺失並不會給我們帶來某些不變,反而到為消費者帶來了更低的價格。綜上所述,酷睿i5處理器可以看做是Nehalem架構的普及先鋒。
Nehalem處理器的緩存架構相對於之前的奔騰4、酷睿2產品,也有了較大的變化。隨著45納米製程的引入,酷睿2處理器的最大L2緩存已經達到12MB,類似於FSB,繼續無休止地提升L2緩存並不一定能帶來明顯的效能改善,因此在Core i7(酷睿i7)上,我們看到了一個全新的緩存架構。
從Core i7的緩存架構示意圖可以看出,它選用了共享L3緩存的方式來暫存數據。桌面級四核心處理器的產品動用了8MB L3緩存。4個核心除了共享8MB L3緩存外,每顆核心內部還單獨具備256KB的L2緩存,另外還為每顆核心配備了與Core架構極為類似的64KB L1緩存。
這裡必須說一下緩存延遲問題。45納米酷睿2處理器的L2緩存延遲周期為15,而Intel工程師表示Nehalem架構的L3緩存可以達到30-40周期,不過每顆核心獨立擁有的通用L2緩存周期只有12,因此L3帶來的高延遲問題一定程度上由L2進行了彌補。另一方面,4顆核心共享L3緩存,在數據命中失敗后可直接重新從內存尋找數據,而不是在緩存中重新進行偵測。Intel稱Nehalem上的L3緩存為Smart Cache,想必也是因為這些原因。
SSE4.2指令集加入 辦公性能大幅提升
Nehalem架構加入SSE4.2指令集
自Intel 在P3時代加入了SSE(Streaming SIMD Extensions)指令集之後,Intel 處理器的多媒體處理能力顯著提升。這次相對於上一版本的SSE4.1,SSE4.2指令集加入了STTNI(字元串文本新指令)和ATA(面嚮應用的加速器)兩大優化指令。STTNI主要針對XML進行文檔和數據處理進行優化,使這一方面的應用性能達到上一代產品的3.8倍。ATA則主要增加CRC32計算校驗碼,另一方面讓POPCNT用來計算一個16/32/64位整數裡面中多少個為1的位。
目前Intel C++ Compiler 10.x和Microsoft Visual Studio 2008 VC++均已經實現了對於SSE4.2的支持。具備SSE4.2指令集的Nehalem Core i7處理器在辦公應用中的性能將得到大幅度提升。