MMX
MMX是由英特爾開發的一種SIMD多媒體指令集,總共五十七條指令。伊佇一九九六年整合佇英特爾衝拚(Pentium)MMX 處理器上,以提懸其多媒體資料的處理能力。
其優點是增加了處理器關於多媒體方面的處理能力,缺點是占用浮點數暫存器進行運算(六十四位元 MMX 暫存器實際上就是浮點數暫存器的別名)以至於講 MMX 指令佮浮點數操作袂當仝時做工課。為著欲減少佇咧 MMX 佮浮點數模式切換之間所費氣的時間,程式設計師雖然可能減少模式切換的次數,也就是講,這兩款操作佇咧應用是互斥的。AMD 在此基礎發展出三 D Now ! 指令集。
三 D Now ! 發佈一冬了後,Intel 佇咧 MMX 基礎發展出 SSE(Streaming SIMD Extensions)指令集,用來取代 MMX。這馬乎,新開發的程式毋是干焦使用 MMX 來最佳化軟體執行效能,是改使用如 SSE、三 DNOW ! 等閣較容易最佳化效能的新一代多媒體指令集,毋過目前的處理器大多猶是會當執行針對 MMX 最佳化的以前期軟體。
MMX 的字面涵義
一九九七年,Intel 公司起訴 AMD 公司佮 Cyrix 公司非法使用(misuse)矣商標 MMX。隨後這起訴訟庭外和解,AMD 公司承認 MMX 為 Intel 的商標,Intel 容允 AMD 公司使用 MMX 做一項技術的名稱。佇遮起訴訟中,AMD 披露 MMX 是 Intel 號名的矩陣數學擴充(Matrix Math eXtensions)伊字母縮寫。
技術細節
MMX 暫存器,這號做 MM 無到 MM 七,實際上就是處理器內部八十位元字長的浮點暫存器棧 st(零)到 st ( 七 ) 的尾數部份(六十四位元長)的復用。因為浮點棧暫存器的懸十六位元無被 MMX 技術使用,所以這十六位攏感覺講,因此對棧暫存器的角度看,其浮點值為 NaN 抑是 Infinities,這會當用佇咧分暫存器是處佇咧浮點棧狀態猶是 MMX 狀態。做為 MMX 存器攏是直接存取。利用了配資料的類型(packed data type)的概念,彼每一个 MMX 暫存器的六十四位元字長會當看作是二个三十二位元整數、抑是四个十六位元整數、抑是八个八个元整數,對而且會當執行整數 SIMD 運算。這對一九九空年代中期的二 D、三 D 計算的加速嘛是足有意義的,因為彼陣的電腦的圖形處理器(GPU)閣真無發達。猶毋過這馬 MMX 整數 SIMD 運算對圖形運算講是加的技術矣。猶毋過 MMX 的飽和算術運算(saturation arithmetic operations)對一寡數位訊號處理應用猶是有路用的。
SIMD 技術的發展
繼續 MMX 技術了後,Intel 閣佇咧一九九九年佇咧 Pentium-III 處理器上推出 SSE 技術,引入新的一百二十八位元寬的暫存器集(register file), 這號做 XMM 無到 XMM 七。這是 XMM 暫存器用佇四个單精度浮點數運算的 SIMD 執行,並會當佮 MMX 整數運算抑是 x 八十七浮點運算混合執行。二空空一年佇 Pentium 四上引入去矣 SSE 二技術,進一步擴充了指令集,予得 XMM 暫存器上會當執行十六分之八 / 三十二位若元寬的整數 SIMD 運算抑是雙精度浮點數的 SIMD 運算。這會使 SIMD 技術基本完善。
外部連結
- Intel® Pentium® Processors with MMX™ Technology for Embedded Computing-Technical Documents
- The MMX Instruction Set from The Art of Assembly Language
- IA Software Developer's Manual , Vol 一 ( PDF ),see chapter 八 for MMX programming