7

AVXには、ビット単位で実行する2つの命令(またはVORPDとVORPS)があります。ドキュメントによると:

VORPD (VEX.256 encoded version)
DEST[63:0] <- SRC1[63:0] BITWISE OR SRC2[63:0]
DEST[127:64] <- SRC1[127:64] BITWISE OR SRC2[127:64]
DEST[191:128] <- SRC1[191:128] BITWISE OR SRC2[191:128]
DEST[255:192] <- SRC1[255:192] BITWISE OR SRC2[255:192]

VORPS (VEX.256 encoded version)
DEST[31:0] <- SRC1[31:0] BITWISE OR SRC2[31:0]
DEST[63:32] <- SRC1[63:32] BITWISE OR SRC2[63:32]
DEST[95:64] <- SRC1[95:64] BITWISE OR SRC2[95:64]
DEST[127:96] <- SRC1[127:96] BITWISE OR SRC2[127:96]
DEST[159:128] <- SRC1[159:128] BITWISE OR SRC2[159:128]
DEST[191:160] <- SRC1[191:160] BITWISE OR SRC2[191:160]
DEST[223:192] <- SRC1[223:192] BITWISE OR SRC2[223:192]
DEST[255:224] <- SRC1[255:224] BITWISE OR SRC2[255:224]

これら2つのプロセッサ操作の間に実際の違いはありますか?そうでない場合:なぜ2つの指示があるのですか?そうでない場合も:ビット単位で整数を実行するためにそれらを使用するのは安全ですか?または?

4

2 に答える 2

3

すべて(またはほぼすべて)のSEE / AVX命令のPSおよびPDの種類の存在には、歴史的な背景があります。かつて、Intelが最初のSSE命令セットを設計したとき、将来のチップアーキテクチャには3つのドメインがあると考えていました。 整数単精度浮動小数点(32ビット)、倍精度浮動小数点(64ビット)

注: ドメインはCPU内で分離された論理ユニットであり、ドメイン間でSSE/AVXレジスタの内容を転送する際にわずかな遅延があるため重要です。したがって、整数ドメインの命令の結果が浮動小数点ドメインの命令への入力として使用される場合、1または2サイクルの遅延が発生する可能性があります。

このため、Intelは最も論理的なビット単位の命令とシャッフル命令を3回ミラーリングしました。1つは整数用、1つはSP-FP用、もう1つはDP-FP用です。これらのミラーリングされた命令によって実行される操作は同じです-整数と浮動小数点の種類の間を含みます。

現在、ほとんどのx86アーキテクチャには、整数浮動小数点の2つのドメインが あります。 FPドメインは、単精度と倍精度(32/64ビット)の両方を処理します。一部のアーキテクチャには、すべてのSSE/AVX命令に対して1つのドメインしかありません。倍精度の3番目のドメインが将来のアーキテクチャに追加される可能性があると考えられます。

于 2015-08-10T13:56:03.990 に答える
2

操作の結果に違いはありません。シングルパック(float32)とダブルパック(float64)の2つのデータ型があるため、論理整合性には2つのタイプがあります。

整数の場合、どの操作を使用するかは問題ではなく、データ型と一致しているだけです。intを最大32ビット幅でパッケージ化する場合はシングルパックを使用し、それより大きい場合はダブルパックを使用します。32ビットintから64ビットintに損失なく昇格できるキャストであると想像してみてください。ただし、災害へのルートの場合はその逆です。

于 2013-06-05T12:25:21.767 に答える