SSE4簡(jiǎn)介
實(shí)際上,SSE4指令集并不能說(shuō)是一個(gè)獨(dú)立的新技術(shù),因?yàn)樗羌稍?008年發(fā)布的英特爾酷睿2代45納米處理器之中,這一代處理器集成了SSE4.1指令集,之后的Nehalem架構(gòu)及更新工藝的處理器則集成了SSE4.2指令集,故SSE4指令集實(shí)際包括SSE4.1和SSE4.2指令集,該指令集可以說(shuō)是處理器眾多新技術(shù)之一。但之所以將其單獨(dú)拿出來(lái)為大家解析,主要是考慮到隨著人們生活水平的提高,大家對(duì)于高清視頻播放和解壓的要求也越來(lái)越高。因此在本頁(yè)中,將詳細(xì)為大家介紹SSE4指令集的特點(diǎn),并加以相應(yīng)的測(cè)試。[1]
SSE4發(fā)展史
首先還是讓我們回顧一下英特爾處理器集成指令的歷史,之后再引出SSE4指令集的誕生。自英特爾奔騰MMX處理器開(kāi)始,處理器新加入了SIMD(Single Instruction Multiple Data)多媒體指令集。該指令集可以把多批次的指令組成為一條單一的指令,從而達(dá)到提升數(shù)據(jù)處理的能力。集成MMX指令的奔騰處理器主要用作提升多媒體數(shù)據(jù)的處理能力,共有57條指令。
后來(lái),英特爾于1999年發(fā)布了基于MMX指令的SSE指令集,全名Streaming SIMD Extensions。首顆支持SSE產(chǎn)品Pentium III處理器,除新增70條指令之外,還進(jìn)一步提升了多媒體數(shù)據(jù)的處理能力,最重要的是解決了MMX指令與浮點(diǎn)指令不能同時(shí)處理的問(wèn)題。而隨后在2001年發(fā)布的SSE2指令集,又在原來(lái)的基礎(chǔ)上增加了144條新指令。其中除了主要負(fù)責(zé)64位雙精度浮點(diǎn)數(shù)及整型運(yùn)算和對(duì)Cache控制延遲降低兩部分之外,更重要的是解決了SSE指令集需要占用浮點(diǎn)數(shù)據(jù)暫存器問(wèn)題。
時(shí)間前進(jìn)至2004年,以Prescott為核心的英特爾奔騰4處理器加入了SSE3指令集,新增指令僅13條,主要是對(duì)水平式暫存器整數(shù)的運(yùn)算,可對(duì)多筆數(shù)值同時(shí)進(jìn)行加法或減法運(yùn)算,令處理器能大量執(zhí)行DSP及3D性質(zhì)的運(yùn)算。此外, SSE3更針對(duì)多線(xiàn)程應(yīng)用進(jìn)行化,使處理器原有的Hyper-Theading功能獲得更佳的發(fā)揮。
2005年后,作為SSE3指令集的補(bǔ)充版本,SSSE3出現(xiàn)在我們已經(jīng)相對(duì)比較熟悉的酷睿微架構(gòu)處理器中,新增有16條指令,進(jìn)一步增強(qiáng)CPU在多媒體、圖形圖像和Internet等方面的處理能力。而英特爾方面本來(lái)是計(jì)劃將該16條指令收錄在后來(lái)的SSE4指令集中,但考慮到當(dāng)時(shí)硬件升級(jí)速度的大幅提升,最終決定提早加入至酷睿微架構(gòu)產(chǎn)品中。故早期的SSE4容易與SSSE3混淆,包括老一代CPU-Z均將SSSE3直接認(rèn)定為SSE4,但實(shí)際上真正的新SSE4指令集出現(xiàn)在2008年發(fā)布的新一代45nmCore 2處理器上,即版SSE4.1。
SSE4產(chǎn)生背景
接下來(lái)就是我們本頁(yè)的主角SSE4指令集了。正如之前業(yè)界所盛傳的那樣,SSE4指令集被視為自2001年以來(lái)最重要的媒體指令集架構(gòu)改進(jìn)。除了將延續(xù)多年的32位架構(gòu)升級(jí)至64位之外,還加入了圖形、視頻編碼、處理、三維成像及游戲應(yīng)用等眾多指令,使得處理器在音頻、圖像、數(shù)據(jù)壓縮算法等多方面性能大幅度提升。
SSE4版本
不過(guò)與以往不同,英特爾將SSE4分為了4.1和4.2兩個(gè)版本,因此45納米Penryn核心處理器中,只集成了SSE4.1版本。而SSE4.2指令集則在新一代Nehalem架構(gòu)處理器上為我們帶出。那么新的SSE 4.1指令集擁有哪些特別之處呢?一起來(lái)看看吧!
SSE4.1版本的指令集新增加了47條指令,主要針對(duì)向量繪圖運(yùn)算、3D游戲加速、視頻編碼加速及協(xié)同處理的加速。英特爾方面指出,在應(yīng)用SSE4指令集后,45納米Penryn核心額外提供了2個(gè)不同的32位向量整數(shù)乘法運(yùn)算支持,并且在此基礎(chǔ)上還引入了8位無(wú)符號(hào)最小值和值以及16位、32位有符號(hào)和無(wú)符號(hào)的運(yùn)算,能夠有效地改善編譯器編譯效率,同時(shí)提高向量化整數(shù)和單精度運(yùn)算地能力。另外,SSE4.1還改良了插入、提取、尋找、離散、跨步負(fù)載及存儲(chǔ)等動(dòng)作,保證了向量運(yùn)算地專(zhuān)一化。
SSE4.1還加入了6條浮點(diǎn)型運(yùn)算指令,支援單、雙精度地浮點(diǎn)運(yùn)算及浮點(diǎn)產(chǎn)生操作。其中IEEE 754指令可實(shí)現(xiàn)立即轉(zhuǎn)換運(yùn)算路徑模式,大大減少延遲,保證數(shù)據(jù)運(yùn)算通道的暢通。而這些改變,對(duì)于進(jìn)行3D游戲和相關(guān)的圖形制作是具有相當(dāng)深遠(yuǎn)的意義。除此之外,SSE4.1指令集還加入了串流式負(fù)載指令,可提高圖形幀緩沖區(qū)的讀取數(shù)據(jù)頻寬,理論上可獲取完整的緩存行,即單次性讀取64位而非原來(lái)的8位 ,并可保持在臨時(shí)緩沖區(qū)內(nèi)讓指令最多帶來(lái)8倍的讀取頻寬效能提升。對(duì)于圖形處理器與處理器之間的數(shù)據(jù)共享起到重要作用。
SSE4.2則是在新一代Nehalem架構(gòu)基于Core微架構(gòu)的SSE4.1指令集上,新增的7組指令,有別于SSE4.1主要針對(duì)加快處理器的多媒體處理,例如圖形顯示、視頻編碼及處理、3D圖像處理、計(jì)算機(jī)游戲等,SSE4.2主要針對(duì)字符串和文本處理指令應(yīng)用。SSE4.2指令集可再細(xì)分為STTNI及ATA2個(gè)組別;STTNI主要是加速字符串及文本處理,例如XML應(yīng)用進(jìn)行高速查找及對(duì)比,相較以軟件運(yùn)算,SSE4.2提供約3.8倍的速度,提升及節(jié)省2.7倍指令周期,對(duì)服務(wù)器應(yīng)用有顯著效能改善。
完整的SSE4指令集已同時(shí)被2011年底AMD新推出的推土機(jī)架構(gòu)處理器兼容支持。
SSE4軟件特點(diǎn)
SSE4的兩個(gè)子集(SSE4.1和SSE4.2)共包含54條指令,主要分為兩類(lèi):矢量化編譯器和媒體加速器,以及高效加速字符串和文本處理。
SSE4矢量化編譯器
矢量化編譯器和媒體加速器可提供高性能的編譯器函數(shù)庫(kù),如封包(同時(shí)使用多個(gè)操作數(shù))整數(shù)運(yùn)算和浮點(diǎn)運(yùn)算,可生成性能優(yōu)化型代碼。此外,它還包括高度優(yōu)化的媒體相關(guān)運(yùn)算,如差值求和、浮點(diǎn)點(diǎn)積和內(nèi)存負(fù)載等。矢量化編譯器和媒體加速器指令可改進(jìn)音頻、視頻和圖像應(yīng)用、視頻編碼器、3D應(yīng)用和游戲的性能。
SSE4媒體加速器
高效加速字符串和文本處理包含多個(gè)壓縮字符串比較指令,允許同時(shí)運(yùn)行多項(xiàng)比較和搜索操作。由此受益的應(yīng)用包括數(shù)據(jù)庫(kù)和數(shù)據(jù)采掘應(yīng)用,以及那些利用病毒掃描和編譯器等分析、搜索和模式匹配算法的應(yīng)用。