3DNow!

読み:スリーディーナウ
外語:3DNow! , AMD 3DNow! technology
品詞:名詞,+規格

AMDの開発した、Intel MMX上位互換機能の名。

発表当時は、AMD・Cyrix・IDT(Integrated Devices, Inc.)の三社が別々の仕様を発表していた。

しかし、これはOSの対応が必要な機能であるため、Microsoftの首を縦に振らせなければならない。メーカーごとバラバラでは、Microsoftも対応を諦めてしまいかねないし、対Intelが主たる目的である以上、サードパーティ同士で揉めていては話にならない。

そこでAMDは、「3DNow!」に規格統一するよう働きかけ、AMD K6-2シリーズの他に、IDTもWinChip 2シリーズから採用を開始した。

3DNow!はMMX命令に21個の新命令を追加したもので、特に浮動小数点演算処理に重点の置かれた拡張がされている。

具体的には、64ビットのMMXレジスタに32ビットの浮動小数点データ2個を格納し、この2個の数値に対して同時に演算を行なえるようにした。更に、3DNow!は2個のMMXユニットが完全に並列動作でき、実質で最大4個の新たな浮動小数点演算命令の実行が可能となる。

普通のMMXは、同時に演算できるのは整数のみで、浮動小数点演算を行なうには数値演算コプロセッサ(FPU)に切り替えないとならず、しかも切り替えるのには多くの時間がかかるという弱点があった。3DNow!はその弱点を改善したものと言える。

機能の有無判別

機能の有無は、EAXレジスタに0x80000001を代入してCPUID命令を実行し、EDXレジスタに得られたフラグのビット31が1かどうかで確認できる。

浮動小数点演算性能では、ピーク時で

  • AMD K6-2/300MHz: 1.2GFLOPS
  • AMD K6-2/333MHzで1.333GFLOPS

である。参考までに、IntelのMMX製品では、

  • Pentium Ⅱ 300MHz: 0.3GFLOPS
  • Pentium Ⅱ 333MHz: 0.333GFLOPS
  • Pentium Ⅱ 400MHz: 0.4GFLOPS

なので、同クロック比で優に4倍の3D処理性能を実現させた。

この拡張により3Dグラフィックス処理の高速化が期待され、MPEG-2動画再生やDVDなどで使われているDolby Digital(AC-3)のデコードも可能になる。

しかし、当然ながらソフトウェアが対応しなければ全く意味がないので、Microsoft MASMや、専用に対応したDirectX/OpenGL APIの提供、更にこの機能のライセンス提供等で積極的に普及に努めた。

対抗規格であるIntelストリーミングSIMD拡張命令(SSE)とは違い、3DNow!はソフトウェアメーカー等が協力して策定したオープンな規格となっている。Microsoft Windowsでは、DirectX 6.0やOpenGL 1.2より対応されている。