MMX
MMXの最新ニュースをまとめて検索!
(166MHz)
MMXは、インテルが同社のIA-32プロセッサ向けに開発したSIMD拡張命令セットのひとつ。56個の命令を含む。MMXは、MultiMedia eXtensionsの略であるとの説があったが、Intelは、略語ではない一つの語であるとしている。
目次 |
[編集] 概要
MMXはx87浮動小数点演算用のレジスタを転用し、1つの命令で同時に複数の整数演算を扱うSIMD技術である。DSPの得意分野である音声、画像、動画などのマルチメディア関係の処理を、CPUで扱う際の性能向上が期待される。アプリケーションソフトウェア側がMMXを用いるようにプログラムされていなければ、MMXによる性能向上の恩恵は受けられない。
後に、専用のレジスタを使うSSE命令セットが、拡張されて整数演算にも対応。MMXと同等以上の処理が可能となったため、現在では、x87命令とレジスタと排他共有する点での性能ロスがあり、命令の種類や同時処理できるデータ数に劣る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

