[解決済み] x86における「非一時的」メモリアクセスの意味
質問
これはやや低レベルな質問です。 x86アセンブリでは、2つのSSE命令があります。
MOVDQA xmmi, m128
そして
MOVNTDQA xmmi, m128
IA-32 Software Developer's Manual には、以下のように書かれています。 NT を意味すると書かれています。 非時空 を表し、それ以外はMOVDQAと同じであることを意味します。
私の疑問は 非時間的 とはどういう意味でしょうか?
どのように解決するのですか?
非一時的な SSE 命令 (MOVNTI、MOVNTQ など) は、通常のキャッシュ コヒーレンシーのルールに従いません。したがって、非一時的なストアは、その結果が他のプロセッサによってタイムリーに見られるように、SFENCE 命令が続かなければなりません。
データが生成され、(すぐに)再び消費されない場合、メモリ ストア操作が最初にキャッシュ ラインを完全に読み取り、次にキャッシュされたデータを変更するという事実は、性能に悪影響を及ぼします。この操作は、すぐに使用されないデータを優先して、再び必要になる可能性のあるデータをキャッシュから押し出します。これは特に、行列のような大きなデータ構造で、一度埋めてから後で使用する場合に当てはまります。行列の最後の要素が満たされる前に、膨大なサイズが最初の要素を退避させ、書き込みのキャッシュを効果的でなくしています。
このような状況のために、プロセッサは非一時的な書き込み操作のサポートを提供します。この文脈での非一時的とは、データがすぐに再利用されないので、キャッシュする理由がないことを意味します。これらの非一時的な書き込み操作は、キャッシュ行を読み取ってからそれを変更するのではなく、新しいコンテンツがメモリに直接書き込まれます。
関連
-
[解決済み】TrapとInterruptの違いは何ですか?
-
[解決済み] 1サイクルあたり4FLOPの理論上の最大値を達成するにはどうすればよいですか?
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
-
[解決済み】ARMアーキテクチャはx86とどう違うのですか?[クローズド]
-
[解決済み] 32ビットレジスタに対するx86-64命令は、なぜフル64ビットレジスタの上部をゼロにするのですか?
-
[解決済み] x86 SIMD intrinsics用ヘッダファイル
-
[解決済み] x86における「非一時的」メモリアクセスの意味
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン