MMX技術

MMX技術

MMX技術是Intel公司為增強 CPU 在音像、圖形和通信應用方面而採取的技術,MMX技術是繼Intel386(TM)處理器(將體系結構擴展至32位)之後對Intel體系結構的最重要的加強。這些技術的指令能夠加速處理有關圖形、影像、聲音等的應用,MMX 加強了在多媒體處理功能的不足,它可以利用其內建的多媒體指令來模擬3D繪圖的處理、 MPEG的壓縮/解壓縮,立體聲的音效等,只要是軟體支持MMX CPU,即可以取代這些硬體的介面而達到多媒體的功效。

基本介紹


MMX技術是在CPU中加入了特地為視頻信號(Video Signal),音頻信號(Audio Signal)以及圖像處理 (Graphical Manipulation)而設計的一套基本的、通用的整數指令、單指令、多數據(SIMD)技術,可簡便地應用於各種多媒體及通信應用程序。

發展歷程


1996年3月5日Intel公司首先對外公布了MMX技術,它是由設在以色列海法的Intel實驗室完成的。
1997年1月9日Intel公司對外正式推出含有MMX技術,具有多媒體擴充指令集的多能奔騰處理器P55C。
1997年5月Intel又進一步推出了具有MMX技術的P6奔騰晶元,主頻可達300MHz的Pentium Ⅱ300,進一步提高了性能。對計算機市場產生了較大的影響,尤其是對多媒體計算機市場,一些PC機廠家認為MMX技術會對多媒體硬體支撐平台帶來根本的變化,紛紛推出基於P55C和P6的多媒體計算機。有些廠家認為MMX技術是解決電腦、電信和家電三電一體化的較好的方案,因此積極投入人力和物力研製開發三電一體化的新產品,而另一些多媒體板級產品的廠家出在利用MMX技術設計製造新的多媒體板級產品以適應市場的需要。

設計思想


為了改善Intel體系結構(Intel Architecture,簡稱IA)的多媒體和通信性能以及適應其數字信號處理的應用,Intel公司採用MMX技術擴充IA。為了保持和擴大Intel公司已有CPU晶元的國際市場,MMX技術保證向下的兼容性。MMX技術利用SIMD(單指令多數據流)技術,開發了很多演演算法內部蘊藏的并行機制,所以它能比沒有MMX技術的CPV晶元運行速度快。
MMX技術的開發者分析了大量多媒體和通信技術的應用軟體,包括圖形、MPEG視頻壓縮、音樂合成、音頻壓縮編碼和解碼、圖像處理、遊戲、語音識別以及視頻會議,發現雖然它們是不同的應用領域,但是在數據類型和計算方法方面有共性,它們只有簡單的數據類型(8位的像素RGB或YUV及2,16位的聲音採樣數據),定點的矩陣向量運算、局部的循環以及高度的并行性。採用SIMD結構正好能夠在一條指令中并行執行多數據流相同的操作,這就是MMX技術能移加速的最根本原因。
另一個設計思想是使MMX技術與現有Intel PC機的操作系統和軟體全兼容,因此對MMX的設計不得不加上許多限制,如不能引進新的狀態寄存器、控制寄存器及新的條件碼等,所以設計者便用浮點寄存器作為MMX的寄存器組。這樣設計的原因是:同為浮點寄存器能移提供64位字長,可作定點8位、16位或32位并行運算;另一個原因是保證了與現有應用軟體與操作系統的全兼容性。

核心技術


通用性高
MMX技術的定義十分簡單,這項技術通用性極高,可滿足建立在當前及未來演演算法上的個人電腦應用程序的大部分需求。MMX技術使得許多條信息可由一條單一指令來處理,這種平行操作使性能得以大幅度地提高。MMX技術被集成到Intel體系結構的處理器中,同時保持了與現有操作系統(如MS DOS,Windows 3.1Windows95,OS/2及UNIX)的充分兼容。MMX技術使個人電腦平台更上一層樓,它能運行一些新的應用程序,並增加了一些個人電腦的新用途,它幫助建立起一種把新的個人電腦用作更有效的通信和多媒體裝置的範例。Intel將MMX技術集成到多代處理器中,配置了該技術的系統已經從1997年大規模生產。除此之外,所有Intel體系結構的軟體將能夠在採用MMX技術的系統中運行。
處理能力強
MMX的在計算結果超過實際處理能力的時候也能進行正常處理。若用傳統的X86指令,計算結果一旦超出了CPU處理數據的限度,數據就要被截掉,而變成較小的數。MMX利用所謂的“飽和(Saturation)”功能,圓滿的解決了這一問題。計算結果一旦超過了數據大小的限度,就能在可處理範圍內自動變換成最大值。
新特性
MMX技術提供了面向多媒體和通信應用的新特性,同時保持了對全部現有Intel體系結構微處理器、IA應用程序和操作系統向下全部兼容,新特性如下:
1、增加了新的數據類型;把較小的數據元素的數據類型合併到一個寄存器中。
2、擴充了飽和型運算方式:定點運算時上溢下溢不中斷,保持最大最小值。
3、擴充的57條新指令:擴充的MMX指令系統採用SIMD形式完成寄存器中所有數據元素的并行操作。
4、與I A結構的全兼容性:八個64位MMX寄存儲組可映射到IA結構的浮點寄存器中。
(詳細的特性介紹可以閱讀參考資料:)

優缺點


優點
MMX技術提高了很多應用程序的執行性能,例如活動圖像、視頻會議、二維圖形和三維圖形。幾乎每一個具有重複性和順序性整數計算的應用程序都可以從MMX™技術中受益。對於8位、16位和32位數據元素的處理,改善了程序的性能。一個MMX™指令可一次操作8個位元組,且在一個時鐘周期內完成兩條指令,也就是說,可在一個時鐘周期內處理16個數據元素。另外,為增強性能,MMX™技術為其它功能釋放了額外的處理器周期。以前需要其它硬體支持的應用程序,現在僅需軟體就能運行。更小的處理器佔用率給更高程度的併發技術提供了條件,在當今眾多的操作系統中這些併發技術得到了利用。在基於Intel的分析系統中,某些功能的性能提高了50%到400%。這種數量級的性能擴展可以在新一代處理器中得到體現。在軟體內核中,其速度得到更大的提高,其幅度為原有速度的三至五倍。
缺點
由於MMX的運算指令必須在數據配對整齊的時候才能使用,所以使用MMX指令要比普通的彙編指令多餘許多分組配對的指令,如果運算不是特別的整齊的話,就要浪費大量的時間在數據的配對上,所以說MMX指令也不是萬能的,也有其很大的缺陷。同時MMX指令在處理16位數據的時候才能發揮最大的作用,處理8位數據要有一點技巧。而處理32位數據,MMX指令幾乎沒有什麼加速能力。

指令集


算術運算指令
這些指令和普通的算術指令沒有什麼運算規則上的區別,在一條指令里同時處理幾個數據。
PADD[B、W、D] :無符號數加[byte,word,dword]
PADDS[B , W] :有符號數加[byte,word]
PSUB[B、W、D] :無符號數減[byte,word,dword]
PSUBS[B,W] :有符號數減[byte,word]
PMULHW :有符號數乘取高位[word]
PMULLW :有符號數乘取低位[word]。
比較運算指令
PCMPEQ[B,W,D] :串等於比較(byte,word,dword)
PCMPGT[B,W,D] :串大於比較(byte,word,dword)。
轉換運算指令
每個指令前都有個“P”開頭。這個“P”的意思就是——Packet,就是說每個寄存器里的數據都是個數據包,而不是一個數據。這些指令就是把這些數據打包或拆包用的。
PACKUSWB :有符號數WORD帶飽和壓縮成無符號BYTE
PACKSS[WB,DW]:有符號數帶飽和壓縮成有符號數[word->byte,dword->word]
PUNPCKH[BW,WD,DQ] :交錯放置兩數的高位[byte->word,word->dword,dword->qword]
PUNPCKL[BW,WD,DQ] :交錯放置兩數的低位[byte->word,word->dword,dword->qword]。
邏輯運算指令
這些指令和8086彙編里的邏輯指令完全相同(除了PANDN相當於原先的兩個操作與和非的結合),只是把寄存器換成64位的而已。
PAND :按位與操作
PANDN :按位與后再取非操作
POR :按位或操作
PXOR :按位或操作。
移位運算指令
為了方便的乘除法運算,但是卻沒有BYTE為單位的移位運算。
PSLL[W,D,Q]:邏輯左移[word,dword,qword]
PSRL[W,D,Q]:邏輯右移[word,dword,qword]
PSRA[W,D] :算術右移[word,dword,qword]。
數據轉移指
MOV[D,Q] :數據傳輸(dword,qword)。
狀態置空指令
狀態清除。
(更多詳細內容可以閱讀參考資料: )

競爭和發展


Intel宣布MMX技術后,很快引起了積極的反響。Intel的兩個主要競爭對手CyrixAMD分別宣布了自己的MMX策略:在各自的新一代處理器晶元M2和AMD K6中支持MMX技術。
Cyrix聲稱:在其M2處理器中僅用不到2萬個晶體管就實現了與Intel完全兼容的MMX指令,其增加的晶元尺寸不超過1%。Cyrix同時聲稱,其M2處理器的L1高速緩存器的容量將增加到64K,並進一步優化其處理器內核,以加快32位指令的執行速度。M2處理器的管腳與Cyrix 6x86(M1)處理器完全相同。Cyrix 6x86用戶僅需將其CPU升級到M2,即可獲得MMX硬體平台。
AMD則在所兼并的NexGen公司的Nx686基礎上宣布了支持MMX技術的AMD K6。
S3、Trident、CreativeLabs、ATICirrus LogicYamaha這些大名鼎鼎的視頻和多媒體卡生產廠商聲稱,將對MMX技術持積極態度。在國內市場上,一些著名的主板生產廠商已經在其資料和廣告中標明它們的新型主板支持P55C處理器(支持在板電壓調節器,可安裝下一代2.x V CPU)。與硬體廠商相比,那些能從MMX技術受益的軟體廠商的反應更為強烈。MMX技術不僅將帶動又一輪軟體升級浪潮,而且為軟體公司推出新產品奠定了堅實的硬體基礎。其中,Microsoft和Powersoft/Watcom公司分別宣布,將在其Visual C/C++ 4.1和Watcom C/C++ 11.0中支持MMX技術。