• 検索結果がありません。

PREFETCHh—Prefetch Data Into Caches(続き)

ソース・オペランドは、1バイトのメモリ・ロケーションである(ローカリティのヒ ントは、ModR/Mバイトのビット3~5を使用して、マシンレベルの命令にエンコー ディングされる。上記の値以外のModR/M値を指定すると、予測不可能な動作が発生 する)。

選択されたラインが、指定されたレベルよりプロセッサに近いキャッシュ階層レベル にすでに存在する場合は、データの転送は行われない。キャッシュ不可メモリまたは WCメモリに対するプリフェッチ命令は無視される。

PREFETCHh命令は単なるヒントであり、プログラムの動作には影響を与えない。こ

の命令は、実行された場合、これから使用されることが予想されるデータを、プロ セッサの近くに移動する。

プリフェッチのローカリティ・ヒントの影響はプロセッサによって異なり、オーバー ロードされたり、無視されたりする可能性がある。プリフェッチされるデータのサイ ズもプロセッサによって異なるが、最小でも32バイトのデータがプリフェッチされ る。

プロセッサは、見込み的な読み込みが許されるメモリタイプ(すなわち、WB、WC、 およびWTメモリタイプ)が割り当てられたシステムメモリ領域から、いつでもデー タを見込み的にフェッチしてキャッシュに入れることができる。PREFETCHh命令は、

この見込み的な動作に対するヒントと見なされる。この見込み的なフェッチ動作は、

命令の実行には拘束されず、任意の時点で発生する。したがって、PREFETCHh命令 は、フェンス命令(MFENCE、SFENCE、LFENCE)やロックされたメモリ参照に対 して順序付けされない。また、PREFETCHh命令は、CLFLUSH命令、他のPREFETCHh 命令、あるいは他の汎用命令に対しても順序付けされない。ただし、PREFETCHh命 令は、CPUID、WRMSR、OUT、MOV CRなどのシリアル化命令に対しては順序付け される。

操作

FETCH (m8);

同等のインテル® C/C++コンパイラ組み込み関数 void _mm_prefetch(char *p, int i)

引き数"*p"は、プリフェッチされるバイト(および対応するキャッシュ・ライン)の アドレスを示す。値"i"は、実行されるプリフェッチ操作のタイプを指定する定数

(_MM_HINT_T0、_MM_HINT_T1、_MM_HINT_T2、または_MM_HINT_NTA)を示す。

PREFETCHh—Prefetch Data Into Caches(続き)

数値例外

なし。

保護モード例外

なし。

実アドレスモード例外

なし。

仮想8086モード例外 なし。

説明

ソース・オペランド(第1オペランド)の8つの符号なしバイト整数とデスティネー ション・オペランド(第2オペランド)の8つの符号なしバイト整数の差の絶対値を 計算する。次に、得られた8つの差を合計して1つの符号なしワード整数を求め、結 果をデスティネーション・オペランドに格納する。ソース・オペランドは、MMX®テ クノロジ・レジスタまたは64ビットのメモリ・ロケーションか、XMMレジスタまた は128ビットのメモリ・ロケーションである。デスティネーション・オペランドは、

MMXテクノロジ・レジスタまたはXMMレジスタである。図4-5.は、64ビット・オ ペランドを使用する場合のPSADBW命令の操作を示している。

64ビット・オペランドを操作する場合は、結果のワード整数はデスティネーション・

オペランドの下位ワードに格納され、デスティネーション・オペランドのその他のバ イトはすべて0にクリアされる。

128ビット・オペランドを操作する場合は、2つの結果が計算され、パックされる。こ の場合は、ソース・オペランドとデスティネーション・オペランドの下位の8バイト を操作して1ワードの結果を求め、デスティネーション・オペランドの最下位ワード に格納する。また、上位の8バイトを操作して1ワードの結果を求め、デスティネー ション・オペランドのビット64~79に格納する。デスティネーション・オペランド のその他のバイトはすべてクリアされる。

オペコード 命令 説明

0F F6 /r PSADBW mm1, mm2/m64 mm2/m64mm1の符号なしパックドバイト整数

の差の絶対値を計算し、得られた差を合計して1 号なしワードの結果を返す。

66 0F F6 /r PSADBW xmm1, xmm2/m128 xmm2/m128とxmm1のパックド符号なしバイト整 数の差の絶対値を計算し、下位の 8 つの差と上位 8つの差を別々に合計して2つのワード整数の 結果を返す。