MMX和SSE
MMX
MMX: 是MultiMedia eXtensions(多媒體擴展)的縮寫,是第六代CPU芯片的重要特點。MMX技術是在CPU中加入了特地為視頻信號(Video Signal),音頻信號(Audio Signal)以及圖像處理(Graphical Manipulation)而設計的57條指令,因此,MMX CPU極大地提高了電腦的多媒體(如立體聲、視頻、三維動畫等)處理功能。
除了指令集中增加MMX指令(多媒體增強指令集)外,還將CPU芯片內的L1緩存由原來的16KB增加到32KB(16K指令+16K數據),因此MMXCPU比普通CPU在運行含有MMX指令的程序時,處理多媒體的能力上提高了60%左右。目前CPU基本都具備MMX技術,除P55C和Pentium ⅡCPU還有K6、K6 3D、MII等。
MMX是Intel公司為增強 CPU 在音像、圖形和通信應用方面而采取的技術,MMX技術是繼Intel386(TM)處理器(將體系結構擴展至32位)之后對Intel體系結構的最重要的加強。這些指令集能夠加速處理有關圖形、影像、聲音等的應用,MMX 加強了在多媒體處理功能的不足,它可以利用其內建的多媒體指令來模擬3D繪圖的處理、 MPEG的壓縮/解壓縮。立體聲的音效等,只要是軟件支持MMX CPU,即可以取代這些硬件的接口而達到多媒體的功效。
Intel(美國英特爾公司)的MMX(TM)技術擬在加速多媒體及通信應用程序的運行。這項技術包含一些新的指令及數據類型,從而使得應用程序獲得更高水平的性能。
MMX技術被設計為一套基本的、通用的整數指令,可簡便地應用于各種多媒體及通信應用程序。
MMX技術的基礎是一項稱為單指令、多數據(SIMD)的技術。它使得許多條信息可由一條單一指令來處理,這種平行操作使
性能得以大幅度地提高。MMX技術被集成到Intel體系結構的處理器中,同時保持了與現有操作系統(如MS DOS,Windows3.1,Windows95,OS/2及UNIX)的充分兼容。除此之外,所有Intel體系結構的軟件將能夠在采用MMX技術的系統中運行。
MMX的另一個特征是在計算結果超過實際處理能力的時候也能進行正常處理。若用傳統的X86指令,計算結果一旦超出了CPU
處理數據的限度,數據就要被截掉,而變成較小的數。MMX利用所謂的“飽和(Saturation)”功能,圓滿的解決了這一問題。
SSE
SSE是指令集的簡稱,它包括70條指令,其中包含單指令多數據浮點計算、以及額外的SIMD整數和高速緩存控制指令。其優勢包括:更高分辨率的圖像瀏覽和處理、高質量音頻、MPEG2視頻、同時MPEG2加解密;語音識別占用更少CPU資源;更高精度和更快響應速度。
計算機上的SSE
SSE(StreamingSIMD Extensions)是英特爾在AMD的3D Now!發布一年之后,在其計算機芯片Pentium III中引入的指令集,是MMX的超集。AMD后來在AthlonXP中加入了對這個指令集的支持。這個指令集增加了對8個128位寄存器XMM0-XMM7的支持,每個寄存器可以存儲4個單精度浮點數。使用這些寄存器的程序必須使用FXSAVE和FXRSTR指令來保持和恢復狀態。但是在Pentium III對SSE的實現中,浮點數寄存器又一次被新的指令集占用了,但是這一次切換運算模式不是必要的了,只是SSE和浮點數指令不能同時進入CPU的處理線而已。
SSE2是Intel在P4的最初版本中引入的,但是AMD后來在Opteron 和Athlon 64中也加入了對它的支持。這個指令集添加了對64位雙精度浮點數的支持,以及對整型數據的支持,也就是說這個指令集中所有的MMX指令都是多余的了,同時也避免了占用浮點數寄存器。這個指令集還增加了對CPU的緩存的控制指令。AMD對它的擴展增加了8個XMM寄存器,但是需要切換到64位模式(AMD64)才可以使用這些寄存器。Intel后來在其EM64T架構中也增加了對AMD64的支持。
SSE3是Intel在P4的Prescott版中引入的指令集,AMD在Athlon 64的第五個版本中也添加了對它的支持。這個指令集擴展的指令包含寄存器的局部位之間的運算,例如高位和低位之間的加減運算;浮點數到整數的轉換,以及對超線程技術的支持。
SSE4指令集將給英特爾下一代平臺帶來“相當大的視頻性能提升”。,其它視頻增強技術還包括CVT(明晰視頻技術)--英特爾對ATIAvivo的回應--和對UDI的支持。上述兩項技術基于英特爾965芯片組。其它英特爾官方文件把CVT技術定義為:支持高級解碼、擁有預處理和增強型3D處理能力。 SSE4指令集是Conroe架構所引入的新指令集。這項原本計劃應用于NetBurst微架構Tejas核心處理器之上的全新技術也隨著它的夭折最終沒能實現,這不能不說是個遺憾,但是SSE4指令集出現在了Conroe上又讓我們看到了希望。
SSE4指令集共包括16條指令,不過雖然扣肉處理器推出已經有一些時日,但目前英特爾仍沒有公布SSE4指令集的具體資料。這相當令人感到納悶。也許英特爾是基于特殊的考慮,僅讓少數合作軟件廠商取得數據,只是這種作法實在很沒有說服力就是了,天底下沒有哪家處理器廠商,希望自己新增的指令越少人用越好。
不過,從IntelCore微架構針對SSE指令所作出的修改被稱之為“IntelAdvanced Digital Media Boost”技術來看,未來SSE4將更注重針對視頻方面的優化,我們認為SSE4主要改進之處可能將針對英特爾的Clear Video高清視頻技術及UDI接口規范提供強有力的支持。這兩項技術基于965芯片組,Intel的官方把Clear Video技術定義為:支持高級解碼、擁有預處理和增強型3D處理能力。值得一提的是,在SSE4中另一個重要的改進就是提供完整128位寬的SSE執行單元,一個頻率周期內可執行一個128位SSE指令。Conroe中SSE的ADDPS(4D 32bit共128bit,單精度加法)、MULPS(4D32bit共128bit,單精度乘法)和SSE2的ADDPD(2D 64bit共128bit,雙精度加法)、MULPD(2D64bit共128bit,雙精度乘法),這四條重要SSE算術指令的吞吐周期都降低到1個周期,真正做到了英特爾宣稱的每個周期執行一條128位向量加法指令和一條128位向量乘法指令的能力。
可以說Conroe的向量單元已經全面引入了流水線化的設計。而支持SSE3的NetBurst微處理器架構雖然提供128位寬執行單元,但僅有一組,性能孰高孰低一目了然。更為重要的是,目前已經有相當多的軟件針對SSE指令集進行了優化,其中包括2D制圖、3D制圖、視頻播放、音頻播放、文件壓縮等方面,可見其應用范圍相當廣泛。
配合完整的128位SSE執行單元,以及龐大的執行單元數目,Conroe處理器可在一個頻率周期內,同時執行128位乘法、128位加法、128位數據加載與128位數據回存,或著是4個32位單倍浮點精確度乘法與4個32位單倍浮點精確度加法運算,這將使其更利于多媒體應用。因此,SSE4指令集能夠有效帶來系統性能上的提升,這一代在眾多測試中早已被證實。雖然其不會像當年SSE2指令集出現時那樣帶來巨大的性能提升,但是其在某些特殊方面的應用還是讓我們對它充滿了期待。
后續版本
SSE2
SSE2是Intel在Pentium 4處理器的最初版本中引入的,但是AMD后來在Opteron 和Athlon 64處理器中也加入了SSE2的支持。SSE2指令集添加了對64位雙精度浮點數的支持,以及對整型數據的支持,也就是說這個指令集中所有的MMX指令都是多余的了,同時也避免了占用浮點數寄存器。這個指令集還增加了對CPU快取的控制指令。AMD對它的擴展增加了8個XMM寄存器,但是需要切換到64位模式(AMD64)才可以使用這些寄存器。Intel后來在其EM64T架構中也增加了對AMD64的支持。
SSE3
SSE3是Intel在Pentium 4處理器的Prescott 核心中引入的第三代SIMD指令集,AMD在Athlon 64的第五個版本,Venice核心中也加入了SSE3的支持。這個指令集擴展的指令包含寄存器的局部位之間的運算,例如高位和低位之間的加減運算;浮點數到整數的轉換,以及對超執行緒技術的支持。
SSSE3
SSSE3是Intel針對SSE3指令集的一次額外擴充,最早內建于Core 2 Duo處理器中。
SSE4
SSE4是Intel在Penryn核心的Core 2Duo與Core 2 Solo處理器時,新增的47條新多媒體指令集,并且現在更新至SSE4.2。AMD也開發了屬于自己的SSE4a多媒體指令集,并內建在Phenom與Opteron等K10架構處理器中,不過無法與Intel的SSE4系列指令集相容。
SSE5
SSE5]是AMD為了打破Intel壟斷在處理器指令集的獨霸地位所提出的,SSE5初期規劃將加入超過100條新指令,其中最引人注目的就是三算子指令(3-Operand Instructions)及熔合乘法累積(FusedMultiply Accumulate)。其中,三算子指令讓處理器可將一個數學或邏輯函式庫,套用到算子或輸入資料。借由增加算子的數量,一個 x86 指令能處理二至三筆資料,SSE5 允許將多個簡單指令匯整成一個指令,達到更有效率的指令處理模式。提升為三運算指令的運算能力,是少數 RISC 架構的水平。熔合乘法累積讓允許建立新的指令,有效率地執行各種復雜的運算。熔合乘法累積可結合乘法與加法運算,透過單一指令執行多筆重復計算。透過簡化程式碼,讓系統能迅速執行繪圖著色、快速相片著色、音場音效,以及復雜向量演算等效能密集的應用作業。SSE5最快將內建于AMD下一代Bulldozer核心。
AVX
AVX是Intel的SSE延伸架構,如IA16至IA32般的把暫存器XMM 128bit提升至YMM256bit,以增加一倍的運算效率。此架構支持了三運算指令(3-Operand Instructions),減少在編碼上需要先復制才能運算的動作。在微碼部分使用了LES LDS這兩少用的指令作為延伸指令Prefix。
FMA
FMA是Intel的AVX擴充指令集,如名稱上熔合乘法累積(Fused Multiply Accumulate)的意思一樣。
?
?
?
總結
 
                            
                        - 上一篇: 第41部分-Linux x86 64位汇
- 下一篇: 【笔记】COA课内实验-MMX指令集
