x86、x64系のCPUには、いまでもMMXと呼ばれる命令が残っている。後継の命令セットが登場したため、MMXの利用は今や推奨されていない。MMXは、1997年に、Pentium CPU(P55C)に搭載されたSIMD(Single instruction multiple data)命令である。このMMXが、x86/x64に最初に実装されたSIMD演算機構である。SIMD演算とは、1つの命令を複数のデータに適用するもの。MMXという名称は、MultiMedia eXtensionsの略という説も初期にはあった。インテルによれば、略号ではなく、1つの単語であるとする。これはおそらく商標登録などの関係だと思われる。
MMXを使うことで行列演算やマルチメディアデータ処理(行列演算が多用される)などを高速化できる。MMXは、1バイトデータを8個、1ワード(16ビット)を4個、ダブルワード(32ビット)を2個、クワッドワード(64ビット)を1個、同時に演算できる。ただし、MMXが対応できるのは、整数演算のみで、おもにメディアデータ処理に使われる行列演算を想定した命令体系を持つ。MMXは、x87命令で利用するスタックレジスタを共有する形で実装された。
x87命令とは、8086の浮動小数点コプロセッサ8087に由来する命令セットだ。80386までは、CPU外部にコプロセッサとして配置された。のちの80486で、コプロセッサはCPUに内蔵され、x87命令として分類される。
x87は、80ビット(仮数部64ビット、指数部16ビット)の8段スタックを使ったスタックマシンだった。MMXの実装には、x87命令で使う浮動小数点レジスタを使う。このため64ビットのmmレジスタを8つ利用できる。
MMX以降、インテルは、SIMD機構を追加していく。通常の演算命令に投機実行や並列実行をいれることで高速化する手法が限界となり、用途の増えたマルチメディアデータ処理を高速化するためだ。
3次元演算では、浮動小数点計算が必要になる。このとき、3つ以上の数値を使った演算が行われるためSIMD演算とは相性が良い。MMXのあと、SSE命令、AVX命令セットなどが導入された(表01)。
最近では、AI関連で大量の演算が必要になったが、推論処理に関しては、NPU(Neural Processing Unit)や高性能なGPUが必要になる。CPUのSIMD命令に比べてGPUはセットアップに時間がかかり使い方が異なる。とはいえ、SIMD命令も高性能になるほど使い方が難しくなる。コンパイラによる最適化、たとえばループ演算をSIMDに分解するなど、も限界がある。AVX-512は、人手による記述でも性能を引き出すのが難しく、特にコンスーマー向けのアプリケーションでの使い道がない。
今回のタイトルネタは、エドガー・ライス・バローズ(Edgar Rice Burroughs)の、「火星のプリンセス」(原題A Princess of Mars,1917年)である。邦訳は、創元社、小学館などから出版されている。地球人ジョン・カーターによる火星での冒険譚である。「火星シリーズ」と呼ばれる作品の第一作にあたる。同シリーズは、1917年から1943年の26年間に11作が作られた。本作のキモは、SF小説随一といわれる絶世の美女デジャー・ソリスである。JAXAの火星衛星探査計画MMX(Martian Moons eXploration)との一致からタイトルネタに選んだ。

