多媒體指令集

多媒體指令集

CPU靠指令來計算和控制系統,每款CPU設計時就規定了與其硬體電路相配合的指令系統。指令的強弱也是CPU的重要指標,指令集是提高微處理器效率的最有效工具之一。從現階段的主流體系結構講,指令集可分為複雜指令集(CISC指令集)和精簡指令集(RISC指令集)兩部分,而從具體運用看,如Intel的MMX(Multi Media Extended)、SSE、 SSE2(Streaming-Single instruction multiple data-Extensions 2)和AMD的3DNow!等都是CPU的擴展指令集,分別增強了CPU的多媒體、圖形圖象和Internet等的處理能力。通常把CPU的擴展指令集稱為"CPU的指令集"。

基本介紹

  • 中文名:多媒體指令集
  • 作用:計算和控制系統
  • 主體:CPU
  • 例如:Intel的MMX
特徵,指令集,概述,精簡指令集,MMX 指令集,SSE指令集,SSE2指令集,SSE3指令集,3D Now !指令集,SSE4.1指令集,SSE4套用,發展史,SSE4.2指令集,指令集運用,工作站,意義,

特徵

指令種類少,指令格式規範
RISC指令集通常只使用一種或少數幾種格式。指令長度單一(一般4個位元組),並且在字邊界上對齊。欄位位置、特別是操作碼的位置是固定的。
定址方式簡化
幾乎所有指令都使用暫存器定址方式,定址方式總數一般不超過5個。其他更為複雜的定址方式,如間接定址等則由軟體利用簡單的定址方式來合成。
大量利用暫存器間操作
RISC指令集中大多數操作都是暫存器到暫存器操作,只以簡單的Load和Store操作訪問記憶體。因此,每條指令中訪問的記憶體地址不會超過1個,訪問記憶體的操作不會與算術操作混在一起。
簡化處理器結構
使用RISC指令集,可以大大簡化處理器的控制器和其他功能單元的設計,不必使用大量專用暫存器,特別是允許以硬體線路來實現指令操作,而不必像CISC處理器那樣使用微程式來實現指令操作。因此RISC處理器不必像CISC處理器那樣設定微程式控制存儲器,就能夠快速地直接執行指令。
便於使用VLSI技術
隨著LSI和VLSI技術的發展,整個處理器(甚至多個處理器)都可以放在一個晶片上。RISC體系結構可以給設計單晶片處理器帶來很多好處,有利於提高性能,簡化VLSI晶片的設計和實現。基於VLSI技術,製造RISC處理器要比CISC處理器工作量小得多,成本也低得多。
加強了處理器並行能力
RISC指令集能夠非常有效地適合於採用流水線、超流水線和超標量技術,從而實現指令級並行操作,提高處理器的性能。常用的處理器內部並行操作技術,基本上是基於RISC體系結構發展和走向日趨成熟的。
由於RISC體系所具有的優勢,它在高端系統得到了廣泛的套用,而CISC體系則是在桌面系統中占據統治地位。在桌面領域,RISC也不斷滲透,預計未來,RISC將要一統江湖。

指令集

CPU的擴展指令集

概述

對於CPU來說,在基本功能方面,它們的差別並不太大,基本的指令集也都差不多,但是許多廠家為了提升某一方面性能,又開發了擴展指令集,擴展指令集定義了新的數據和指令,能夠大大提高某方面數據處理能力,但必需要有軟體支持。
經過多年的發展,多媒體指令集已經成為CPU密不可分的一部分。每次有新的CPU出來,我們也習慣了用CPU-Z檢測一下它有沒有添加什麼新的指令集。從我們的套用環境來看,3D影像越來越複雜,視頻編碼的壓縮率越來越高,都對CPU提出了更高的要求,可以想像,SSE這劑“興奮劑”,CPU只有一直服用下去了。
多媒體指令集
CPU中的指令集,雖然不起眼,但是在CPU的運算中有重要加速作用,尤其是編碼方面,若使用的軟體對CPU的指令集有最佳化,那么CPU的運算效能較無指令集最佳化運行速度有很大提升。SSE指令集作為Intel的頂樑柱,重要些不言而喻。每次的SSE指令集升級,都牽動著英特爾不少心血,除了自身研發指令集外,如何能讓眾多軟體支持新指令集是更為關鍵的問題。
CPU依靠指令來計算和控制系統,每款CPU在設計時就規定了一系列與其硬體電路相配合的指令系統。指令的強弱也是CPU的重要指標,指令集是提高微處理器效率的最有效工具之一。從現階段的主流體系結構講,指令集可分為複雜指令集和精簡指令集兩部分,分別增強了CPU的多媒體、圖形圖象和Internet等的處理能力,我們通常會把CPU的擴展指令集稱為"CPU的指令集"。

精簡指令集

經過研究發現,在計算機中,80%程式只用到了20%的指令集,基於這一發現,RISC精簡指令集被提了出來,這是計算機系統架構的一次深刻革命。RISC體系結構的基本思路是:抓住CISC指令系統指令種類太多、指令格式不規範、定址方式太多的缺點,通過減少指令種類、規範指令格式和簡化定址方式,方便處理器內部的並行處理,提高VLSI器件的使用效率,從而大幅度地提高處理器的性能。
RISC指令集有許多特徵,其中最重要的有:
指令種類少,指令格式規範:RISC指令集通常只使用一種或少數幾種格式。指令長度單一(一般4個位元組),並且在字邊界上對齊,欄位位置、特別是操作碼的位置是固定的。 大量利用暫存器間操作:簡化處理器結構: 加強了處理器並行能力,常用的處理器內部並行操作技術基本上是基於RISC體系結構發展和走向成熟的。
正由於RISC體系所具有的優勢,它在高端系統得到了廣泛的套用,而CISC體系則在桌面系統中占據統治地位。而在如今,在桌面領域,RISC也不斷滲透,預計未來,RISC將要一統江湖。

MMX 指令集

MMX(Multi Media eXtension,多媒體擴展指令集)指令集是Intel公司於1996年推出的一項多媒體指令增強技術。MMX指令集中包括有57條多媒體指令,通過這些指令可以一次處理多個數據,在處理結果超過實際處理能力的時候也能進行正常處理,這樣在軟體的配合下,就可以得到更高的性能。MMX的益處在於,當時存在的作業系統不必為此而做出任何修改便可以輕鬆地執行MMX程式。但是,問題也比較明顯,那就是MMX指令集與x87浮點運算指令不能夠同時執行,必須做密集式的交錯切換才可以正常執行,這種情況就勢必造成整個系統運行質量的下降。
Intel承諾,通過其第二代的無線多媒體指令集MMX2,手機和PDA將獲得更清晰的顯示效果,更流暢的視頻播放和更高的電池使用效率。開發者和用戶,將從Xscale系列晶片的後繼者中,看到這些效果。
由於手機市場的快速增長,因此Intel意圖從中分一杯羹的想法並不讓人奇怪。在最近的IDF論壇上,Intel發布了Hermon平台。該平台將其Bulverde晶片劃分到四個不同的平台上--低端消費者平台,中端消費者平台,高端消費者平台和高端數字商業平台。(相關文章請參看《IDF:英特爾展示2006年後的NB移動技術》、《IDF: Intel重新構思娛樂PC發展新藍圖》)
無線MMX2是Intel為手機和PDA處理器準備的其中一項改進。據Intel的發言人Mark Miller表示,Bulverde不會支持這項擴展。MMX2是為Bulverde的後承者所準備的,這一點是Miller不願評論的。然而很明顯,Intel很快就會發布Bulverde的升級版,因為這款晶片是基於PXA255這款幾乎有四年歷史的核心。

SSE指令集

SSE(Streaming SIMD Extensions,單指令多數據流擴展)指令集是Intel在Pentium III處理器中率先推出的。其實,早在PIII正式推出之前,Intel公司就曾經通過各種渠道公布過所謂的KNI(Katmai New Instruction)指令集,這個指令集也就是SSE指令集的前身,並一度被很多傳媒稱之為MMX指令集的下一個版本,即MMX2指令集。究其背景,原來"KNI"指令集是Intel公司最早為其下一代晶片命名的指令集名稱,而所謂的"MMX2"則完全是硬體評論家們和媒體憑感覺和印象對"KNI"的 評價,Intel公司從未正式發布過關於MMX2的訊息。
而最終推出的SSE指令集也就是所謂勝出的"網際網路SSE"指令集。SSE指令集包括了70條指令,其中包含提高3D圖形運算效率的50條SIMD(單指令多數據技術)浮點運算指令、12條MMX 整數運算增強指令、8條最佳化記憶體中連續數據塊傳輸指令。S SE指令與3DNow!

SSE2指令集

SSE2(Streaming SIMD Extensions 2,Intel官方稱為SIMD 流技術擴展 2或數據流單指令多數據擴展指令集2)指令集是Intel公司在SSE指令集的基礎上發展起來的。相比於SSE,SSE2使用了144個新增指令,擴展了MMX技術和SSE技術,這些指令提高了廣大應用程式的運行性能。隨MMX技術引進的SIMD整數指令從64位擴展到了128 位,使SIMD整數類型操作的有效執行率成倍提高。雙倍精度浮點SIMD指令允許以 SIMD格式同時執行兩個浮點操作,提供雙倍精度操作支持有助於加速內容創建、財務、工程和科學套用。除SSE2指令之外,最初的SSE指令也得到增強,通過支持多種數據類型(例如,雙字和四字)的算術運算,支持靈活並且動態範圍更廣的計算功能。SSE2指令可讓軟體開發員極其靈活的實施算法,並在運行諸如MPEG-2、MP3、3D圖形等之類的軟體時增強性能。Intel是從Willamette核心的Pentium 4開始支持SSE2指令集的,而AMD則是從K8架構的SledgeHammer核心的Opteron開始才支持SSE2指令集的。

SSE3指令集

SSE3(Streaming SIMD Extensions 3,Intel官方稱為SIMD 流技術擴展 3或數據流單指令多數據擴展指令集3)指令集是Intel公司在SSE2指令集的基礎上發展起來的。相比於SSE2,SSE3在SSE2的基礎上又增加了13個額外的SIMD指令。SSE3 中13個新指令的主要目的是改進執行緒同步和特定應用程式領域,例如媒體和遊戲。這些新增指令強化了處理器在浮點轉換至整數、複雜算法、視頻編碼、SIMD浮點暫存器操作以及執行緒同步等五個方面的表現,最終達到提升多媒體和遊戲性能的目的。Intel是從Prescott核心的Pentium 4開始支持SSE3指令集的,而AMD則是從2005年下半年Troy核心的Opteron開始才支持SSE3的。但是需要注意的是,AMD所支持的SSE3與Intel的SSE3並不完全相同,主要是刪除了針對Intel超執行緒技術最佳化的部分指令。

3D Now !指令集

由AMD公司提出的3DNow!指令集應該說出現在SSE指令集之前,並被AMD廣泛套用於其K6-2 、K6-3以及Athlon(K7)處理器上。3DNow!指令集技術其實就是21條機器碼的擴展指令集。
與Intel公司的MMX技術側重於整數運算有所不同,3DNow!指令集主要針對三維建模、坐標變換 和效果渲染等三維套用場合,在軟體的配合下,可以大幅度提高3D處理性能。後來在Athlon上開發了Enhanced 3DNow!。這些AMD標準的SIMD指令和Intel的SSE具有相同效能。因為受到Intel在商業上以及Pentium III成功的影響,軟體在支持SSE上比起3DNow!更為普遍。Enhanced 3DNow!AMD公司繼續增加至52個指令,包含了一些SSE碼,因而在針對SSE做最佳化的軟體中能獲得更好的效能。
最新的Intel CPU可以支持SSE、SSE2、SSE3指令集。早期的AMD CPU僅支持3DNow!指令集,隨著Intel的逐步授權,從Venice核心的Athlon 64開始,AMD的CPU不僅進一步發展了3DNow!指令集,並且可以支持Inel的SSE、SSE2、SSE3指令集。不過業界接受比較廣泛的還是Intel的SSE系列指令集,AMD的3DNow!指令集套用比較少。
SSE4  全名為Streaming SIMD Extension 4,被視為繼2001年以來最重要的媒體指令集架構的改進,除擴展Intel 64指令集架構外,還加入有關圖形、視頻編碼及處理、三維成像及遊戲套用等指令,令涉及音頻、圖像和數據壓縮算法的應用程式大幅受益。
多媒體指令集
SSE4將分為4.1版本及4.2版本,4.1版本將會首次出現於Penryn處理器中,共新增47條指令,主要針對向量繪圖運算、3D遊戲加速、視像編碼加速及協同處理加速動作.
據Intel指出,在套用SSE4指令集後,Penryn增加了2個不同的32Bit向量整數乘法運算支持,引入了8 位無符號 (Unsigned)最小值及最大值運算,以及16Bit 及32Bit 有符號 (Signed) 及無符號運算,並有效地改善編譯器效率及提高向量化整數及單精度代碼的運算能力。同時,SSE4 改良插入、提取、尋找、離散、跨步負載及存儲等動作,令向量運算進一步專門化。
此外,SSE4加入串流式負載指令,可提高以圖形幀緩衝區的讀取數據頻寬,理論上可獲取完整的快取快取行,即每次讀取64Bit而非8Bit,並可保持在臨時緩衝區內,讓指令最多可帶來8倍的讀取頻寬效能提升,對於視訊處理、成像以及圖形處理器中央處理器之間的共享數據套用,有著明顯的效能提升。

SSE4.1指令集

45納米加入了SSE4.1指令集,令處理器的多媒體處理能力得到最大70%的提升。SSE4加入了6條浮點型點積運算指令,支持單精度、雙精度浮點運算及浮點產生操作,且IEEE 754指令 (Nearest, -Inf, +Inf, and Truncate) 可立即轉換其路徑模式,大大減少延誤,這些改變將對遊戲及 3D 內容製作套用有重要意義。
多媒體指令集
SSE4指令集讓45nmPenryn處理器增加了2個不同的32Bit向量整數乘法運算單元,並加入8位無符號(Unsigned)最小值及最大值運算,以及16Bit及32Bit有符號 (Signed) 運算。在面對支持SSE4指令集的軟體時,可以有效的改善編譯器效率及提高向量化整數及單精度代碼的運算能力。同時,SSE4改良插入、提取、尋找、離散、跨步負載及存儲等動作,令向量運算進一步專門。

SSE4套用

自從2007年IDF透露了45nmPenryn處理器發布計畫之後,Penryn的各種訊息也不斷地傳出,這款基於45nm技術的處理器除了工藝上的進步之外,還有著架構的變動、指令集的更新,這符合著Intel一段時間(每2年)內就要對處理器進行一次較大的改進的習慣。
Penryn處理器搭載了最新的SSE4指令集,SSE4(Streaming SIMD Extensions 4)是英特爾自從SSE2之後對ISA擴展指令集最大的一次的升級擴展,它將會隨著Penryn處理器陸續套用於台式機平台、移動平台和伺服器中。據所知,SSE4包括大約50條新指令,Penryn通過這些新指令集,增強了從媒體套用到高性能計算套用領域的性能,同時還利用一些專用電路實現對於特定套用加速。
SSE4數據圖SSE4數據圖
其實IA32架構上不斷增加的指令集都是面向多媒體應加速而來,因為在多媒體環境下需要處理大量重複的數據,因此自MMX開始,CPU廠商就開始新增SIMD(Single Instruction Multiple Data)多媒體指令集,可以在單一指令內完成多個批次性的數據處理,從而大大提升多媒體數據處理能力。

發展史

自從Intel在P55C Pentium加入MMX(MultiMedia Extensions)指令以來,x86指令集就不斷得到擴充,3D Now!之類的擴展集時有出現。這些指令集主要都是通過SIMD的方式來提升多媒體數據處理能力。
指令數量達到57條的MMX擴展集屬於側重整數運算的擴展指令集,除了整數運算,浮點運算也是非常重要的,Intel在1999年首次在Pentium III處理器中引入了SSE(Streaming SIMD Extensions)擴展指令集來增強x86架構的浮點運算能力,SSE初代包括了70條新指令。
在SSE之後Intel很快在2000年的Willamette Pentium 4中推出了SSE2指令集,這個指令集的指令數目達到了非常之多的144條,用於提升雙精度向量運算能力和128位向量整數運算能力,可見SSE指令集也並不是僅僅包括浮點運算的,SSE可以做看作是IA32架構按照形勢需要而作的不斷擴充。
在2000年推出SSE2之後,Intel很久沒有進行這方面的大擴充了,在2004年增加的SSE3隻包括了13條新指令(首先在Prescott Pentium 4中出現),2006年增加的SSSE3(Supplemental Streaming SIMD Extensions 3)只包括32條新指令(首先在Core 2 Duo上出現),前者主要提升複數運算性能,後者主要改進了解碼性能,或許是由於提前發布的緣故(原來計畫包括在SSE4中),SSSE3並沒有採用SSE4這樣的命名。
從指令數目上看,SSE4的47條也是2000年來最多的變化,同時,SSE4中增加了的指令改進了整數和浮點操作,支持DWORD和QWORD操作,新的單精度FP操作、快速暫存器操作、面向性能最佳化的記憶體操作等等,包括了圖形、圖像、數據裝載各方面的革新,因此稱其為SSE2以來最大的指令集變動也是不為過的。利用支持SSE4指令集的編譯器編譯之後,包括圖形/圖像處理、視頻處理、2D/3D創作、多媒體、遊戲、記憶體敏感負載、高性能計算等套用都會受益。
SSE4指令集的具體指令如下圖所示,按照資料顯示,SSE4指令集還將分為兩個版本:4.1和4.2,SSE4.1版本將隨著45nmPenryn發布,而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
簡化量是非常巨大的。而在複雜的動態預測程式中,要執行複雜的SAD代碼,這時SSE4還可以額外提供更高的方便性:
SSSE3可以看作是SSE4的一個提前“泄露”的子集,同樣的工作,右邊的SSE4代碼無疑要比SSSE3更為簡捷。
SSE4當中還加入了快速查找的指令,雖然並不僅僅是視頻編碼才能具有作用,然而對於整位像素和子像素運動估計方面具有特別好的效果。
例如,在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之間的數據頻寬,隨著發展,GPU越來越強大、數據流量越來越大的情形下,這是非常必要的。
雖然這個Streaming Load是以視頻加速為例子,實際上它的工作方式對其他外設也是有用的,這是一個通用性的提高WC記憶體讀取速度的技術。

SSE4.2指令集

45nm技術內部結構的更新無疑會帶來更快的性能,然而SSE4指令的引入帶來的提升更加巨大。全新 DivX Alaph內部測試版本已完全支持SSE4指令集, 1顆3.33GHz的Yorkfield的運算效能,相比上代Intel Core 2 Duo QX6800快約105% ,其中約7成的增益來自SSE4指令集,這可以看出新指令集的效率的確不凡。其它不同的編碼測試也得到了相似的結果。
並且,作為45nm處理器基礎架構的一部分,所有Penryn核心處理器都會具有這個指令集,這意味著即使是使用其中最低端的、廉價的“Celeron”版本,也能享受到新指令集帶來的益處,並且也不用付出特別的代價,這也是新技術帶給用戶的實際益處。
人們可以看到,即使是在未完全最佳化的工程樣板CPU和配合的測試版本軟體當中,新指令集的效能也令人滿意,畢竟SSE4指令集就是設計用來提升視頻、圖像運算性能的,剩下的問題就是如何發揮SSE4的力量的問題了。按照慣例,Intel會在CPU推出的時候在自家的Intel C/C++和Fortran編譯器上提供支持,也會提供相關的文檔、SDK工具,憑著Intel的號召力以及SSE4本身性能上的提升帶來的吸引力,而且由於高清晰視頻的流行,這些對性能不斷提升的需求,更會形成一種拉力,SSE4的前景良好。
Intel首次在45nmPenryn處理器中新增了英特爾SSE4指令集,這是自最初SSE指令集架構ISA推出以來添加的最大指令集,其中包含了47條多媒體處理指令,進一步擴展了英特爾64指令集架構。之前45nmPenryn處理器的指令集版本為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上市還有3個月的時間,相信相關的最佳化與升級屆時就會出現。

指令集運用

在最初發明計算機的數十年里,隨著計算機功能日趨增大,性能日趨變強,內部元器件也越來越多,指令集日趨複雜,過於冗雜的指令嚴重的影響了計算機的工作效率。

工作站

64位i200W工作站
曙光i200W 64位專業圖形工作站採用AMD直連架構的Opteron處理器,可以升級成雙核系統。處理器集成記憶體控制器、專用記憶體和I/O匯流排、HyperTransport超傳輸技術,擁有更加強大的計算性能和數據處理能力;擁有最大8G 333MHz PC2700 DDR記憶體,突破32位處理器4G記憶體的瓶頸,輕鬆處理海量數據;支持2塊SATA硬碟或3塊SCSI硬碟。Opteron完全兼容32位系統,更加保護用戶投資。正是由於具有強大的計算性能和3D性能,使得Opteron在美國好萊塢的電影製作中得到廣泛套用。 曙光i200W採用AMD獨有的3DNow!指令集,主要針對三維建模、坐標變換和效果渲染等三維套用場合。在軟體的配合下,可以大幅度提高3D處理性能。3DNow!、3DNow!+、SSE、SSE2指令集均採用了單指令多數據流技術(SIMD),允許多個浮點操作在一個CPU時鐘頻率里結合執行,同時支持多個多媒體指令集,最大限度地提高了i200W圖形工作站的套用兼容性,使採用不同最佳化技術的軟體都能發揮出最佳的運行效果。
曙光i200W採用公認的專業級NVIDIA系列圖形加速卡,可以輕鬆處理複雜的3D圖形,加上64位的處理器以及最佳化系統,使得整機既可以做單獨的工作站使用,也可以作為高性能計算的前端顯示平台。.

意義

在多媒體指令集方面,最著名的就是Intel的MMX和AMD的3Dnow!.
理論上這些指令對流行的圖像處理、浮點運算、3D運算、視頻處理、音頻處理等諸多多媒體套用起到全面強化的作用。SSE指令與3DNow!指令彼此互不兼容,但SSE包含了3DNow!技術的絕大部分功能,只是實現的方法不同。SSE兼容MMX指令,它可以通過SIMD和單時鐘周期並行處理多個浮點數據來有效地提高浮點運算速度。
在後來Intel為了對付AMD3DNow!+又在SSE的基礎上開發了SSE2,增加了一些指令,使得其P4處理器性能有大幅度提高。SSE2SIMD擴展名——一個計算低工控最好的方法是讓每指令執行更多的工作。到P4設計結束為止,Intel增加了一套包括144條新建指令的SSE2指令集。像最早的SIMD擴展指令集,SSE2涉及了多重的數據目標上立刻執行一單個的指令(即SIMD)。最重要的是SSE2能處理128位和兩倍精密浮點數學運算。處理更精確浮點數的能力使SSE2成為加速多媒體程式、3D處理工程以及工作站類型任務的基礎配置。但重要的是軟體是否能適當的最佳化利用它。
給出了一個由DVD轉制MPEG4影像檔案軟體“FlasKMPEG”,在重新編譯和SSE2最佳化前後的性能比較。很顯然軟體經過編譯後,在Pentium4上性能表現提高的浮點達+266%,經過重新編譯後軟體在Athlon和Pentium3上的表現也有了大幅度的改進。

相關詞條

熱門詞條

聯絡我們