SSE4.2

SSE4.2是英特爾在Nehalem-EP中引入的指令集,比SSE4.1增加了7條新的指令。 SSE4.2的7條新指令面向了兩大領域,分別是字串與字元處理用的新指令STTNI和面向具體套用的加速處理ATA。STTNI是一個重要的改進,包含了4條指令,針對XML進行了最佳化,據英特爾表示,新指令可以在XML分析方面取得3.8倍的性能提升。ATA是面向套用的加速指令,包括計算快取器中非零位數目的POPCNT、用來加速錯誤偵測碼的計算的CRC32指令和對於打包的64位算術運算的SIMD指令,ATA指令集對大規模數據集中處理中具有重要意義。

簡介

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位整數運算支持。
SSE為什麼會比傳統的浮點運算更快呢?因為它使用了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條新指令。
SSE4.2新加入的幾條新指令有兩類。第一類是字元串與文本新指令STTNI,STTNI包含了四條具體的指令。STTNI指令可以對兩個16位的數據進行匹配操作,以加速在XML分析方面的性能。據Intel表示,新指令可以在XML分析方面取得3.8倍的性能提升。第二類指令是面向套用的加速指令ATA。ATA包括冗餘校驗的CRC32指令、計算源運算元中非0位個數的POPCNT指令,以及對於打包的64位算術運算的SIMD指令。CRC32指令可以取代上層數據協定中經常用到的循環冗餘校驗,據Intel表示其加速比可以達到6.5~18.6倍;POPCNT用於提高在DNA基因配對、聲音識別等包含大數據集中進行模式識別和搜尋等操作的應用程式性能。 Intel也公布了支持新指令集的開發工具。這些工具涵蓋了主流的編譯開發環境。目前已明確支持SSE4.2的開發環境包括:Intel C++ Compiler 10.X、微軟的Visual Studio 2008 VC++、GCC 4.3.1、Sun Studio Express等。程式設計師可以直接使用高級程式語言編程,編譯器會自動生成最佳化結果。當然程式設計師也可以用內嵌彙編的方式來達到目的。

相關詞條

相關搜尋

熱門詞條

聯絡我們