Share via


組み込みの概要

[このドキュメントはプレビュー版であり、後のリリースで変更されることがあります。 Blank topics are included as placeholders.]

Microsoft 固有の仕様 →

3DNow! テクノロジは3D グラフィックスやオーディオ処理をサポートする 26 までの別の記述方法を提供します。 3DNow! 命令は 64 ビットのレジスタを操作するベクターの命令です。 3DNow! 命令は SIMD;。各命令は 32 ビット値のペアを操作できます。 3DNow を 参照してください。AMD 組み込みの参照ドキュメントの組み込み関数。

ベクターの命令で 2 組の 32 ビットで単精度浮動小数点数を並列に実行します。 スカラー命令は 32 ビットの単一オペランドの設定で動作します (264 ビットのオペランドの下位の半分)。

3DNow! 単精度浮動小数点数形式はIEEE 754 の各単精度の形式と互換性があります。 この形式は合計桁の 24 ビットの 1 個の整数のビットを持つ整数部の数字バイアスされた指数 8 ビット仮数の有効桁で構成されます。 指数のバイアス値は 127IEEE 単精度の標準に沿った行われます。 significands がスコープ内になるように正規化されます (1,2)。

4 個の丸めモードを決定する IEEE Standard とは対照的に3DNow! サポート技術的に最も近い 1 個の丸めモードまたは実行時にゼロ (切り捨て)。 一つのハードウェア (! テクノロジは丸めモードを調べます。 AMD プロセッサは実行時に近いモードを実装します。 フローティング ポイントに整数型と整数を浮動点の変換に使用される命令丸めモードに関係なく PF2ID と PI2FD は(切り捨て) モード時に常に使用します。

16 進数でこの精度の絶対値による表現できる最大数は通常の指数部の FEh および 2127 の数値を持つ 7FFFFFh の桁をあります (2 ~ 2-23)。 表現できる最も大きい正の値の先頭でオーバーフローするすべての結果には通常この表現できる最大の数値または正の無限大に飽和します。 同様に最小限の表現負の値の下にオーバーフローするすべての結果はいずれかのこの表現できる最小の通常の数または負の無限大に飽和します。

一つの実装。 テクノロジは算術オーバーフローがどのように処理するかまたは最小の正確な数または適切に署名した無限大を正しく署名された最大値です。 プロセッサが正しく署名された表現できる最大または最小の正常な値を生成します。

infinity と NANs には一つのオペランドとしてサポートされていません。 命令。

16 進数でこの精度の絶対値による表現できる最も小さい通常の数は 01h の指数と 2-126 の数値を持つ 000000h の桁をあります。 したがってこの絶対値による表現できる最小の値に含まれるすべての結果がゼロに保持します。 次の表は3DNow でサポートされる指数の範囲です。 テクノロジ。

3DNow!テクノロジの指数の範囲

バイアスされた指数

Description

FFh

サポートされていません。 サポートされていない数はオペランドとして使用できます。 サポートされていない数値を使用した演算の結果は未定義になります。

00h

ゼロ。

00h<x<FFh

通常。

01h

2 () 1-127 できる限り低い指数。

FEh

2 () 254-127 最大の指数。

MMX 命令のように3DNow! 命令は数字例外は生成されず状態フラグを設定しません。 また内部スコープのデータを一つによって提供されることをユーザーに確認する必要があります。 すべての計算が有効な範囲内に残しておく命令と (または期待どおりに参照)。

一つのすべての登録操作。 浮動小数点命令が登録または登録単位の X 座標単位実行されます。 1 種類の演算は最大 2 3 DNow の問題および実行速度の各クロック サイクルの各レジスタの単位に発行できます。 サイクルごとの演算を行っています。

通常一つの高いに ! コードすべての 3DNow! 命令は互いから正しく実行リソース競合による遅延がスケジュールされます (回避するには依存関係および実行待機時間を考慮してください)。

AMD-K6 プロセッサ コードの最適化に関するさらに詳細な情報についてはAMD-K6 プロセッサ アプリケーション コードの最適化ノート の順序番号 21924 を参照してください。 ここではプロセッサのコード最適化手法の詳細を示します。

AMD  プロセッサおよび Athlon プロセッサの実行リソースの詳細についてはAMD  プロセッサおよび Athlon プロセッサの x86 コードの最適化はなく 注文番号 22007 を参照してください。

3DNow! AMD プロセッサのパフォーマンス向上のための命令は次の表に示します。

AMD 3DNow!浮動小数点命令

演算

Function

オペコード

PAVGUSB

パックされた 8 ビット符号なし整数の平均

BFh

PFADD

パックされた浮動小数点追加

9Eh

PFSUB

パックされた浮動小数点積差

9Ah

PFSUBR

パックされた小数点の逆で減算

Aah

PFACC

パックされた小数点が収集されます

Aeh

PFCMPGE

パックされた浮動小数点大小関係 (より大きいか等しい

90h

PFCMPGT

はパックされた浮動小数点比較

A0h

PFCMPEQ

パックされた浮動小数点の大小関係

B0h

PFMIN

パックされた浮動小数点最小

94h

PFMAX

パックされた浮動小数点最大

A4h

PI2FD

浮動小数点に変換 (32 ビット整数

0Dh

PF2ID

32 ビット整数に (小数点

1Dh

PFRCP

パックされた浮動小数点の近似値

96h

PFRSQRT

パックされた浮動小数点相互に相当する値

97h

PFMUL

パックされた浮動小数点乗算

B4h

PFRCPIT1

パックされた浮動小数点イテレーションの最初の手順

A6h

PFRSQIT1

パックされた浮動小数点の平方根イテレーションの最初の手順

A7h

PFRCPIT2

パックされた浮動小数点値との相互のイテレーション 2 番目の手順

B6h

PMULHRW

パックされた 16 ビットの整数は丸めとともに増加します

B7h

AMD 3DNow!パフォーマンス向上のための命令

演算

Function

オペコードの第 2 バイト

FEMMS

MMX が速く開始フックと終了値または浮動小数点状態。

0Eh

PREFETCH/PREFETCHW

  • 関数の先取り L1 データ キャッシュに少なくとも 32byte の行 (Dcache)。

  • AMD-K6-2 と AMD-K6-III プロセッサは PREFETCHW 命令を先取り命令と同じように実行します。

  • AMD  プロセッサおよび Athlon プロセッサではPREFETCHW はキャッシュ ラインを変更するには目的のプロセッサにヒントを提供することによってパフォーマンスを向上できます。

0Dh

AMD プロセッサおよび Athlon プロセッサ 3DNow! DSP のテクノロジ拡張子

演算

Function

オペコードと imm8

PF2IW

整数の符号と Word の変換にはを拡張します (小数点

0Fh 0Fh と 1Ch

PFNACC

パックされた浮動小数点記号が収集されます

0Fh 0Fh と 8Ah

PFPNACC

パックされた浮動小数点混合正と負が収集されます

0Fh 0Fh と 8Eh

PI2FW

浮動小数点に変換 (整数の単語

0Fh 0Fh と 0Ch

PSWAPD

の各ダブル ワードによってパックされた swap

0Fh 0Fh と BBh

MMX AMD プロセッサおよび Athlon プロセッサで実行する命令セットの拡張子

演算

Function

オペコードと imm8

MASKMOVQ

(バイトのマスクを使用してキャッシュの使用) ストアのオーバーフロー

0Fh F7h

MOVNTQ

(キャッシュ) のオーバーフロー ストアのバイパス

0Fh E7h

PAVGB

符号なしバイト (平均

0Fh E0h

PAVGW

未署名の単語 (平均

0Fh E3h

PEXTRW

整数レジスタに単語を抽出します。

0Fh C5h

PINSRW

整数レジスタからの単語

0Fh C4h

PMAXSW

署名された単語のパックされた最大

0Fh Eeh

PMAXUB

パックされた最大バイトの符号なし

0Fh Deh

PMINSW

Word パックされた最小の signed

0Fh Eah

PMINUB

パックされた最小値の符号なしバイト

0Fh Dah

PMOVMSKB

バイトの整数レジスタにマスクを移動します。

0Fh D7h

PMULHUW

詰められる符号なしの単語を大きくします。

0Fh E4h

PREFETCHNTA

NTA の参照を使用してプロセッサに近いデータを移動します。

0Fh 18h 0*

PREFETCHT0

T0 参照を使用してプロセッサに近いデータを移動します。

0Fh 18h 1*

PREFETCHT1

T1 の参照を使用してプロセッサに近いデータを移動します。

0Fh 18h 2*

PREFETCHT2

T2 の参照を使用してプロセッサに近いデータを移動します。

0Fh 18h 3*

PSADBW

絶対 (合計バイトの違い

0Fh F6h

PSHUFW

パックされたシャッフル Word

0Fh 70h

SFENCE

フェンスを保存します。

0Fh AEh と 7h

オペコードの * の数は modR/M バイトの異なる先取りモードを示します。

AMD-K6-2 プロセッサ コードの最適化に関するさらに詳細な情報についてはAMD-K6-2 プロセッサ アプリケーション コードの最適化ノートの順序番号 21924 を参照してください。 ここでは AMD-K6 プロセッサ ファミリのコード最適化手法の詳細を示します。

AMD  プロセッサおよび Athlon プロセッサの実行リソースの詳細についてはAMD  プロセッサおよび Athlon プロセッサの x86 コードの最適化はなく注文番号 22007 を参照してください。 このドキュメントはAMD  プロセッサおよび Athlon プロセッサのコード最適化手法の詳細を示します。

これら https://go.microsoft.com/fwlink/?LinkID=95131 のオンライン ドキュメントのバージョンについては" " を参照してください。

参照

Reference

AMD 3DNow!テクノロジの概要、組み込み