MMXは、
インテルがPentiumプロセッサ向けに開発した、
マルチメディア処理を高速化するためのSIMD(Single Instruction, Multiple Data)型拡張命令セットです。56個の命令から構成され、当初はMultiMedia eXtensionsの略語と見なされていましたが、
インテルは単なる単語であると説明しています。MMXはx87 FPUのレジスタを転用し、一つの命令で複数の整数演算を同時に行うことで処理能力の向上を実現しました。
MMXの仕組みと特徴
MMXは、既存のx87 FPUレジスタを共有して動作します。そのため、浮動小数点演算命令とMMX命令は排他的に使用しなければならず、両者を混在させる際には、命令実行の前後にレジスタの状態を管理する必要があります。特に、x87命令とMMX命令の切り替えにはEMMS命令が必要で、この命令の実行にはPentiumプロセッサでは数十サイクルを要するなど、オーバーヘッドが発生しました。
MMXの主なターゲットは、
[音声]]、画像、
動画といった
マルチメディア処理でした。これらの処理は、
デジタルシグナルプロセッサ]が得意とする分野であり、MMXによってCPUでも効率的な処理が期待されました。しかし、[[アプリケーションソフトウェアがMMX命令に対応していなければ、性能向上は得られません。
MMXの限界と後継技術
MMXは整数演算に特化していたため、浮動小数点演算を多用する3Dグラフィックス処理の高速化には不向きでした。また、専用のレジスタを持たないため、処理能力や命令の種類において、後に登場するSSE命令セットに劣っていました。
インテルの競合であるAMDは、浮動小数点演算にも対応したSIMD拡張命令セット3DNow!を先に発表し、自社プロセッサK6-2に搭載しました。これにより
インテルは、浮動小数点SIMD命令セットの提供においてAMDに遅れをとる結果となりました。
インテルは、
Pentium III以降にSSE命令セットを搭載することで、ようやく浮動小数点演算の高速化を実現しました。SSEはより複雑なデータ処理や浮動小数点演算にも対応しており、MMXは事実上、過去の資産との互換性維持のためにのみ存在する技術となりました。
インテル自身も、アプリケーション開発においてはMMXの使用を避けることを推奨しています。
MMX搭載プロセッサと歴史
インテルは、1997年
1月にMMXを搭載したPentiumプロセッサ(MMX Pentiumとして広く知られる)を発表しました。その後、Pentium Pro、
Pentium IIなど多くのIA-32アーキテクチャのプロセッサにMMXが搭載されました。AMDもK6プロセッサにMMXに対応し、他にもいくつかのメーカーがIA-32互換プロセッサにMMXを搭載しました。
インテルは、他社によるMMX名称の使用に関して訴訟を起こしましたが、最終的には和解に至っています。
MMXの登場からSSE、3DNow!といった後継技術の登場、そして現在に至るまで、プロセッサの
マルチメディア処理能力向上における歴史の一端を担ったと言えるでしょう。MMXは、その技術的意義と歴史的背景を理解することで、現在のコンピューティング技術の進化をより深く理解するための重要な要素の一つとなっています。