MMX
MMXは、インテル (Intel) が同社のIA-32プロセッサ向けに開発したSIMD拡張命令セットのひとつ。56個の命令を含む。MMXは、MultiMedia eXtensionsの略であるとの説があったが、Intelは、略語ではない一つの語であるとしている。
概要
MMXは、x87 浮動小数点演算用のレジスタを転用し、1つの命令で同時に複数の整数演算を扱うSIMD技術である。このためMMXはFPUレジスタにマップされ、浮動小数点演算とは排他制御となる。DSPの得意分野である音声、画像、動画などのマルチメディア関係の処理を、CPUで扱う際の性能向上が期待されたが、アプリケーションソフトウェア側がMMXを用いるようにプログラムされていなければ、MMXによる性能向上の恩恵は受けられない。
後に、専用のレジスタを使うSSE命令セットが拡張され、より複雑なデータデータ処理や浮動小数点の演算にも対応。実質的にMMXは不要となったため、現在インテルでは、アプリケーション開発の最適化にあたってMMXの使用を避ける事を推奨している。命令の種類や処理能力で劣るMMX命令は、現在は主に過去の資産との互換性のみを目的に実装・提供されている。
インテルはまず、すでにリリースしていたPentiumの新バージョン (開発コードネーム P55C ) にMMXを搭載、Pentium Processor with MMX Technologyと称して発売。一般にはMMX Pentiumという呼称で浸透した。インテルは、これ以降に発売したIA-32アーキテクチャのプロセッサの多くに、MMXを搭載している。また、他のメーカーのIA-32互換プロセッサのいくつかにも搭載されている。例えば、AMDのK6などである。インテルは他社がMMXという名称を使用していることに対し、これを停止するよう求め訴訟に発展したが、最終的には各社間で和解した。
性能と限界
MMXは元々、一般的なアプリケーションにおいて常用される事の少ない浮動小数点演算のレジスタの有効利用の観点から発想された。x87命令とMMX命令とを混在させる場合、最初のMMX命令の実行時に必要な初期化が自動で行われるが、x87命令の実行前には専用の命令を実行して状態をクリアする必要がある。いずれの切り替え時にも、大きな実行時間のペナルティが発生する可能性が大きい上、レジスタの状態も維持や保存はされない。他方、新たに専用レジスタを増やさず既存のx87命令を流用したため、コンテキストスイッチ毎の新設レジスタのセーブなどのオペレーティングシステムのサポートを待つ必要はなかった。
また、MMXによって高速化できるのは整数演算処理に限られ、浮動小数点演算処理を多用する3Dグラフィックス関連の処理能力の向上は期待できない。インテルと競合するAMDは、先んじて浮動小数点演算も扱えるSIMD拡張命令セット3DNow!を発表し、同社のK6-2プロセッサに搭載。インテルはAMDより浮動小数点用のSIMD命令セットの提供に遅れをとった。インテルの浮動小数点SIMD演算による高速化はPentium III以降に搭載されるSSEを待つこととなる。
歴史
- 1997年 1月: インテルがMMX Pentiumを発表。
- 1997年 4月: AMDがMMXに対応したK6プロセッサを発表。
- 1997年 5月: インテルがPentium ProにMMXを付加し高速化したPentium IIプロセッサを発表。
- 1998年 5月: AMDが浮動小数点演算処理を高速化する3DNow!搭載のK6-2プロセッサを発表。
- 1999年 2月: インテルが浮動小数点演算処理を高速化するStreaming SIMD Extensions搭載のPentium IIIプロセッサを発表。
関連項目
- SIMD
- Streaming SIMD Extensions (SSE)
- 3DNow!
- AltiVec (Velocity Engine)
- en:Visual Instruction Set
この項目は、コンピュータに関連した書きかけの項目 です。この項目を加筆・訂正などしてくださる協力者を求めています(PJ:コンピュータ/P:コンピュータ)。