組み込みの概要
[このドキュメントはプレビュー版であり、後のリリースで変更されることがあります。 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 |
|
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 のオンライン ドキュメントのバージョンについては" " を参照してください。