| デザイン会社 | アドバンスト・マイクロ・デバイス |
|---|---|
| 紹介された | 1998 |
| タイプ | 命令セットアーキテクチャ |
3DNow! は、Advanced Micro Devices (AMD)が開発したx86 命令セットの非推奨の拡張機能です。基本の x86 命令セットに SIMD ( Single Instruction Multiple Data ) 命令を追加し、ベクター レジスタを使用して浮動小数点ベクター演算のベクトル処理を 実行できるようにします。この改善により、多くのグラフィックスを多用するアプリケーションのパフォーマンスが向上します。3DNow! を実装した最初のマイクロプロセッサは、1998 年に導入されたAMD K6-2でした。適切なアプリケーションでは、この強化により速度が約 2~4 倍向上しました。[1]
しかし、この命令セットはあまり人気が出ず、AMDは2010年8月に、PREFETCHとを除いて将来のAMDプロセッサでは3DNow!のサポートが廃止されることを発表しましたPREFETCHW。[2]これらの2つの命令は、Bay-Trail Intelプロセッサでも利用可能です。[3]
歴史
3DNow! は、 3D グラフィックスが PC マルチメディアやゲームで主流になりつつあった時代に開発されました。3D グラフィックスのリアルタイム表示は、浮動小数点計算を実行するホスト CPU の浮動小数点ユニット (FPU) に大きく依存していましたが、このタスクでは、AMD のK6 プロセッサは競合製品の Intel Pentium II に簡単に追い抜かれました。
MMX命令セットの拡張機能として、3DNow! 命令セットは MMX SIMD レジスタを拡張し、単精度 (32 ビット) 浮動小数点データに対する一般的な算術演算 (加算/減算/乗算) をサポートします。低速のx87 FPUの代わりに AMD の 3DNow! を使用するように作成されたソフトウェアは、命令の組み合わせに応じて最大 4 倍高速に実行できます。
バージョン
3Dなう!
3DNow! テクノロジの最初の実装には、SIMD浮動小数点演算をサポートする 21 個の新しい命令が含まれています。3DNow! のデータ形式は、パックされた単精度浮動小数点です。3DNow! 命令セットには、SIMD 整数演算、データ プリフェッチ、およびより高速な MMX から浮動小数点への切り替えのための操作も含まれています。その後、Intel はPentium IIIに同様の (ただし互換性のない) 命令を追加し、 SSE (Streaming SIMD Extensions)として知られています。
3DNow! 浮動小数点命令は次のとおりです。
PI2FD– パックされた32ビット整数から浮動小数点への変換PF2ID– パック浮動小数点数から32ビット整数への変換PFCMPGE– パック浮動小数点数の比較、大きいか等しいPFCMPGT– パック浮動小数点比較、より大きいPFCMPEQ– パック浮動小数点比較、等しいPFACC– パックされた浮動小数点累算PFADD– パック浮動小数点加算PFSUB– パック浮動小数点減算PFSUBR– パック浮動小数点逆減算PFMIN– パック浮動小数点の最小値PFMAX– パック浮動小数点最大値PFMUL– パック浮動小数点乗算PFRCP– パック浮動小数点逆数近似PFRSQRT– パックされた浮動小数点逆数平方根近似PFRCPIT1– パックされた浮動小数点逆数、最初の反復ステップPFRSQIT1– パックされた浮動小数点逆平方根、最初の反復ステップPFRCPIT2– パックされた浮動小数点逆数/逆平方根、2回目の反復ステップ
3DNow! 整数命令は次のとおりです。
PAVGUSB– パックされた8ビット符号なし整数の平均PMULHRW– 丸め処理付きパック16ビット整数乗算
3DNow! パフォーマンス向上の手順は次のとおりです。
FEMMS– MMXまたは浮動小数点状態へのより高速なエントリ/終了PREFETCH/PREFETCHW– 少なくとも 32 バイトのラインを L1 データ キャッシュにプリフェッチします (これは非推奨でない唯一の命令です)
3DNow! 拡張機能
3DNow! の 2 番目のバージョンに公式に独自の商標名が付けられたという証拠はほとんどないか、まったくありません。このため、この新しい命令セットに関するドキュメントで混乱が生じています。最も一般的な用語は、Extended 3DNow!、Enhanced 3DNow!、および3DNow!+です。「Enhanced 3DNow!」というフレーズは、AMD の Web サイトのいくつかの場所で見つかりますが、「Enhanced」の大文字化は、純粋に文法上のものであるか、これらの拡張機能があるかどうかわからないプロセッサを強調するために使用されているようです (最も顕著なのは、これらの拡張機能がない K6-III-P のベンチマーク ページを参照しているものです)。[4] [5]
3DNow! 命令セットのこの拡張は、第 1 世代のAthlonプロセッサで導入されました。Athlon では、5 つの新しい 3DNow! 命令と 19 の新しい MMX 命令が追加されました。その後、K6-2+とK6-III+ (どちらもモバイル市場向け) には、19 の新しい MMX 命令を除いて、5 つの新しい 3DNow! 命令が追加されました。新しい 3DNow! 命令は、 DSP を強化するために追加されました。新しい MMX 命令は、ストリーミング メディアを強化するために追加されました。
19 個の新しい MMX 命令は、Intel の SSE 命令セットのサブセットです。AMD の技術マニュアルでは、これらの命令を 3DNow! 拡張機能とは別にしています。[4]ただし、AMD の顧客向け製品資料では、この分離は明確ではなく、24 個の新しい命令すべての利点が拡張された 3DNow! テクノロジによるものであるとされています。[6]このため、プログラマーは 19 個の新しい MMX 命令に独自の名前を付けるようになりました。最も一般的なのは、Integer SSE ( ISSE ) のようです。[7] SSEMMXとMMX2 は、パブリック ドメイン セクターのビデオ フィルターのドキュメントにも記載されています。ISSE は、SSE の初期の名前である Internet SSE を指す場合もあります。
3DNow! 拡張 DSP 命令は次のとおりです。
PF2IW– 符号拡張によるパック浮動小数点から整数ワードへの変換PI2FW– パック整数ワードから浮動小数点数への変換PFNACC– パックされた浮動小数点の負の累算PFPNACC– パックされた浮動小数点の正負混合累算PSWAPD– パックされたスワップダブルワード
MMX 拡張命令 (Integer SSE) は次のとおりです。
MASKMOVQ– バイトマスクを使用したストリーミング(キャッシュバイパス)ストアMOVNTQ– ストリーミング(キャッシュバイパス)ストアPAVGB– 符号なしバイトのパック平均PAVGW– 符号なしワードのパック平均PMAXSW– 最大符号付きワードをパックPMAXUB– パックされた最大符号なしバイトPMINSW– 最小符号付きワードをパックPMINUB– パックされた最小符号なしバイトPMULHUW– パックされた上位符号なしワードの乗算PSADBW– 絶対バイト差のパック合計PSHUFW– パックシャッフルワードPEXTRW– 整数レジスタにワードを抽出PINSRW– 整数レジスタからワードを挿入PMOVMSKB– バイトマスクを整数レジスタに移動するPREFETCHNTA– NTA参照を使用したプリフェッチPREFETCHT0– T0参照を使用したプリフェッチPREFETCHT1– T1参照を使用したプリフェッチPREFETCHT2– T2参照を使用したプリフェッチSFENCE– 店舗フェンス
3DNow! プロフェッショナル
3DNow! Professional は、 3DNow! テクノロジと完全な SSE 命令セット (SSE、SSE2、SSE3 など) を組み合わせたプロセッサを示すために使用される商標です。[8] Athlon XP は、3DNow! Professional の商標を冠した最初のプロセッサであり、完全な SSE 命令セット (合計: 21 個のオリジナル 3DNow! 命令、5 個の 3DNow! 拡張 DSP 命令、19 個の MMX 拡張命令、および完全な SSE 互換性のための 52 個の追加 SSE 命令) をサポートする Athlon ファミリの最初の製品でした。[9]
3DNow! と Geode GX/LX
Geode GX と Geode LX には、他のすべてのプロセッサにはない 2 つの新しい 3DNow! 命令が追加されました。
3DNow! Geode GX/LX に固有の「プロフェッショナル」な手順は次のとおりです。
PFRSQRTV– 32ビット浮動小数点数の逆数平方根近似PFRCPV– 32ビット浮動小数点数の逆数近似
利点と欠点
3DNow! の利点の 1 つは、同じレジスタに格納されている 2 つの数値を加算または乗算できることです。SSE では、各数値は別のレジスタの同じ位置にある数値とのみ結合できます。Intel用語で水平と呼ばれるこの機能は、 SSE3命令セットに追加された主要な機能です。
3DNow! の欠点は、3DNow! 命令と MMX 命令が同じレジスタ ファイルを共有するのに対し、SSE では 8 つの新しい独立したレジスタ ( XMM0- XMM7) が追加されることです。
MMX/3DNow! レジスタは標準のx87 FPUで共有されるため、3DNow! 命令と x87 命令を同時に実行することはできません。ただし、x87 FPU にエイリアスされているため、3DNow! および MMX レジスタの状態は、従来の x87F(N)SAVEおよびF(N)RSTOR命令によって保存および復元できます。この配置により、オペレーティング システムは明示的な変更なしで 3DNow! をサポートできますが、SSE レジスタでは、新しい XMM レジスタを適切に保存および復元するために (追加されたFXSAVEおよびFXRSTOR命令を介して)
明示的なオペレーティング システムのサポートが必要です。
SSE の FX* 命令は、古い x87 保存および復元命令の機能スーパーセットを提供します。SSE レジスタの状態だけでなく、x87 レジスタの状態も保存できます (したがって、サポートされている場合は MMX および 3DNow! 操作にも適用できます)。
AMD Athlon XPおよびK8ベースのコア(つまりAthlon 64 )では、アセンブリプログラマーは3DNow!とSSE命令を組み合わせてレジスタの負荷を軽減できることに気づいていますが、実際には命令が共有機能ユニット上で実行されるため、パフォーマンスを向上させることは困難です。[10]
3DNow! をサポートするプロセッサ
- K6-2 (K6 ベース)、Athlon、Athlon 64、および Phenom アーキテクチャ ファミリ
以降のすべてのAMDプロセッサ。
- Bulldozer、Bobcat、Zen アーキテクチャ プロセッサおよびその派生製品ではサポートされません。
- 3DNow! をサポートする最後のAMD APUプロセッサは、 Llanoアーキテクチャに基づく A8-3870K です。また、Bobcat 以降では 3DNow! 命令がサポートされていないため、3DNow! 命令をサポートする唯一の APU でもあります。
- National Semiconductor Geode GX2、後にAMD Geode。
- VIA C3 (別名Cyrix III )「Samuel」、「Samuel 2」、「Ezra」、および「Eden ESP」コア。
- IDT ウィンチップ2、3
参考文献
- ^ 「Linux で 3DNow を効果的に活用する」。Linux Journal。1999 年 12 月 1 日。2011 年 6 月 7 日時点のオリジナルよりアーカイブ。2010年 10 月 3 日に取得。
- ^ 「3DNow 命令は廃止予定 | AMD Developer Central」。Blogs.amd.com。2010 年 8 月 18 日。2010 年 10 月 24 日時点のオリジナルよりアーカイブ。2010年 10 月 3 日閲覧。
- ^ 「IntelE38xx - MinnowBoard Wiki」。2017年2月11日時点のオリジナルよりアーカイブ。2017年2月13日閲覧。
- ^ ab 「AMD Extensions to the 3DNow and MMX Instruction Sets Manual」(PDF)。Advanced Micro Devices, Inc. 2000 年 3 月。2008 年 5 月 17 日のオリジナルからアーカイブ(PDF) 。2008年 6 月 7 日に取得。
- ^ 「モバイル AMD-K6-III-P プロセッサベースのノートブック: Ziff-Davis CPUmark 99」。2008 年 7 月 24 日のオリジナルからアーカイブ。2008年 6 月 7 日に取得。ページのタイトルが間違っています: 強化された [
sic
] 3DNow! テクノロジー
を搭載したモバイル AMD-K6-III+ およびモバイル AMD-K6-2+ プロセッサ
- ^ 「AMD Athlon プロセッサ製品概要」。Advanced Micro Devices, Inc. 2008 年 2 月 25 日時点のオリジナルよりアーカイブ。2008年 6 月 8 日に閲覧。
- ^ “ISSE”. AviSynth . 2017年7月2日時点のオリジナルよりアーカイブ。2017年7月19日閲覧。
- ^ 「新しい 3DNow! Professional テクノロジーの説明」。Advanced Micro Devices, Inc. 2009 年 1 月 21 日時点のオリジナルよりアーカイブ。2008 年 6 月 8 日に取得。
- ^ 「AMD Athlon XP アーキテクチャの特徴」。Advanced Micro Devices, Inc. 2008 年 2 月 25 日時点のオリジナルよりアーカイブ。2008年 6 月 8 日に閲覧。
- ^ Larry Lewis (2003年7月9日). 「3DNow+ vs SSE on Athlon XP」.ニュースグループ: comp.sys.ibm.pc.hardware.chips. Usenet: ad82cd69.0307090931.25391323@posting.google.com. 2012年10月3日時点のオリジナルよりアーカイブ。 2023年1月4日閲覧– Google Groups経由。
さらに読む
- Case, Brian (1998 年 6 月 1 日)。「3DNow が非 Intel 3D パフォーマンスを向上」。マイクロプロセッサ レポート。
- Oberman, S.、Favor, G.、Weber, F. (1999 年 3 月)。「AMD 3DNow テクノロジー: アーキテクチャと実装」。IEEE Micro。
外部リンク
- 3DNow Technology Partners、オリジナルからアーカイブ(2001 年初頭に AMD の Web サイトから削除)
- AMD 3DNow 命令移植ガイド (PDF)、オリジナルからアーカイブ (2014 年に AMD の Web サイトから削除)
- 3DNow テクノロジー マニュアル
- AMD 3DNow および MMX 命令セットの拡張マニュアル
- AMD Geode LX プロセッサ データブック
