1997(平成9)年にIntelが発表したマルチメディア命令で、マルチメディア系のデータ処理に適した機能をマイクロプロセッサに取り込む技術。及びそれにより追加された命令の仕様。
機能の有無は、EAXレジスタに1を代入してCPUID命令を実行し、EDXレジスタに得られたフラグのビット23が1かどうかで確認できる。
この機能を実現するために57個の新命令が追加された。
従来のラップアラウンド(桁溢れした時には溢れた部分が切り捨てられる)に加え、サチュレーション演算(=飽和演算; 飽和時は限界点である最大値や最小値が返される)という新しい算術演算も追加された。
これは色空間の変換などに有用であるが、命令セット自体が拡張されているものなので、この拡張命令を使用した専用のアプリケーションやドライバを用意しない限り、殆ど性能向上の恩恵には預かれない。この辺の事情は数値演算コプロセッサ(FPU)と同様である。
64ビット幅のMMXレジスタに8ビット×8、16ビット×4、32ビット×2、64ビット×1の何れかの整数値データを入れ、そのデータ全てに対して同じ演算を一度に行なうことができる。
例えば、256ドット×256ドットのフルカラー(RGB各8ビット)の画像を明るくしたい場合、RGBそれぞれに同じ値を足すことになる。
実際の演算のみで考えると、MMXが無い場合、演算回数は256×256×3=196,608回となるが、MMX命令を使えば8ビット×8のデータを1度の演算で処理することができるので、演算回数は256×256×3÷8=24,576回で済む。
その上、MMXには飽和演算があるため、最大値に補正する処理の分も更に速くなる。このようにMMXを駆使すれば2D/3Dグラフィック処理や、ソフトウェアMPEG再生処理を高速化することが可能である。
通常のMMX Pentiumでは数値演算コプロセッサ(FPU)と切り替えて利用するなどの仕様から、実数演算(FPU)を用いる処理と併用すると逆に効率が落ちることがあるという問題がある。
一方、AMD K6ではMMXの並列動作ができない代わり、実数演算(FPU)との並列動作を可能とした。K6-2から対応された3DNow!では、MMX命令の並列動作も可能としている。
MMXでは57命令が追加された。ニーモニックのルールは次の通りである。
また、SSE2からは、XMMレジスタに対しても可能。
MMXで追加された新命令は、次の通りである。