3DNow! |
辞書:科学用語の基礎知識 中央演算処理装置用語x86編 (IYCP86) |
読み:スリーディーナウ |
外語:3DNow! |
品詞:固有名詞 |
AMDが開発し1998(平成10)年に登場したAMD独自のSIMD命令セットで、MMX上位互換機能の名。
|
概要 |
目的 |
MMXは整数演算のみに対応しており、浮動小数点演算には未対応だった。3DNow!は、MMXの弱点を克服するためにMMX命令に21個の新命令を追加したもので、特に浮動小数点演算処理に重点の置かれた拡張がなされている。
具体的には、64ビットのMMXレジスターに32ビット単精度の浮動小数点数2個を格納し、この2個の数値に対して同時に演算を行なえるようにした。更に、3DNow!は2個のMMXユニットが完全に並列動作でき、実質で最大4個の新たな浮動小数点演算命令の実行が可能となる。
元々のMMXが同時に演算できるのは整数のみであり、浮動小数点演算を行なうには数値演算コプロセッサー(FPU)に切り替える必要があった。しかも切り替えるのには多くの時間がかかるという弱点もあった。3DNow!はその弱点を改善したものと言える。
共通仕様 |
発表当時は、AMD・Cyrix・IDTの三社が別々の仕様を発表していた。
しかしこれらはOSの対応が必要な機能であるため、Microsoftを納得させねば実質的に使うことができないが、メーカーごとバラバラではMicrosoftが首を縦に振ることはない。
そこでAMDは「3DNow!」に規格統一するよう働きかけ、AMD K6-2シリーズの他に、Cyrixは6x86MX、IDTはWinChip 2シリーズから採用を開始した。
機能の有無判別 |
機能の有無は、拡張CPUID対応のプロセッサーで、かつEAX=80000001HでCPUID命令を実行した結果EDXレジスターのビット31が1かどうかで確認できる。
特徴 |
性能 |
浮動小数点演算性能では、ピーク時で
である。参考までに、IntelのMMX製品では、
なので、同クロック比で優に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より対応されている。
拡張規格 |
その後 |
Bulldozer/Bobcat世代のCPUコアから、3DNow!シリーズのサポートを終了した。
AMD64アーキテクチャーからSSE/SSE2を標準搭載しており、3DNow!の機能はSSEの機能で代替可能である。その上、現実に3DNow!は殆ど使われていなかった。このため、一つの時代にピリオドが打たれることになった。
当時のIntelのSIMDコマンドは整数演算のMMXのみで、浮動小数点演算の性能を改善する3DNow!は先進的な試みではあった。CyrixやIDTといった他社にも導入されるなどし、「午後のこ〜だ」などのソフトウェアが対応するなどしたが、やはり独自実装のコマンドは使いにくいものだったようで、普及することは無かった。
段階的な収束として、SSE登場後にAMDは「3DNow! Professional」としてSSE命令との互換性を取り始め、AMD64アーキテクチャーにSSE2までを統合し、そして3DNow!を廃止することになった。
3DNow!がなくてもSSEがあれば現実問題として開発者は困らない。但し、3DNow!の機能はprefetchとprefetchw命令として残るため、3DNow!が跡形もなく消えるという訳でも無いようである。
ちなみに、prefetchとprefetchwのオペコードである0F 0D xxは、Intelの仕様書では「NOP Ev」となっており、NOP命令として定義されている。
リンク |
通信用語の基礎知識検索システム WDIC Explorer Ver 7.04a (27-May-2022) Search System : Copyright © Mirai corporation Dictionary : Copyright © WDIC Creators club |