基本介紹
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.1,
Windows95,
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的兩個主要競爭對手
Cyrix和
AMD分別宣布了自己的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、
ATI、
Cirrus Logic、
Yamaha這些大名鼎鼎的視頻和多媒體卡生產廠商聲稱,將對MMX技術持積極態度。在國內市場上,一些著名的主機板生產廠商已經在其資料和廣告中標明它們的新型主機板支持P55C處理器(支持在板電壓調節器,可安裝下一代2.x V CPU)。 與硬體廠商相比,那些能從MMX技術受益的軟體廠商的反應更為強烈。MMX技術不僅將帶動又一輪軟體升級浪潮,而且為軟體公司推出新產品奠定了堅實的硬體基礎。其中,
Microsoft和Powersoft/Watcom公司分別宣布,將在其Visual C/C++ 4.1和Watcom C/C++ 11.0中支持MMX技術。