特定のデータのためにキャッシュをバイパスするよう指示するプロセッサがありますか? This questionにも、SSE4.2命令がキャッシュをバイパスすることを示唆する回答があります。誰かがそれについて私に啓発することはできますか?キャッシュをバイパスするよう指示されたプロセッサがありますか?
答えて
特定のデータの定義に応じて、はい。プロセッサは、一般に、キャッシュのどの領域をキャッシュできるかを定義するために使用されるキャッシュ制御レジスタ/テーブルを有し、キャッシュされてはならない。一般に、ユーザー空間で実行されているコードは、これらのテーブルにアクセスできません。
特定のデータのキャッシュをバイパスするような命令があるプロセッサはありますか?
SuperHファミリ(または少なくともSuperH-2)は、キャッシュメモリを暗黙的にまたは明示的にバイパスしています。これは、特別な命令ではなく、メモリアドレス空間の異なる領域を使用することによって行われます。
アドレスの上位3ビットを001
に設定すると、上位3ビットがクリアされた同じアドレスのキャッシュスルーミラーにアクセスします。また、メモリマップドI/Oレジスタのような領域は決してキャッシュされません。
一般に、キャッシュポリシーはメモリ管理ユニット(MMU)によって制御されます。各アドレス範囲に対して、キャッシュポリシーが決定されます。これらのテーブルはOSによって管理され、システム空間で使用できます。 キャッシュを持つアーキテクチャでは、キャッシュを同期化/無効化/フラッシュするためのCPUコマンドが通常あります。ただし、MMUテーブルと同様に、これらのコマンドはシステム空間でのみ使用できます。
わずかな清澄化; x86では、_single_キャッシュラインを無効にするための 'clflush'命令は特権を持っていません。そして、元のポスターが述べたように、 'movnt' SSE命令はキャッシュバイパスを可能にします_stores_ - http://stackoverflow.com/questions/37070/what-is-the-meaning-of-non-temporal-memory-accesses詳細については、-in-x86を参照してください。 –
アルテラのNios IIアーキテクチャには、キャッシュをバイパスするロード/ストア用に2つの特定の命令ldio
およびstio
があります。これはメモリマップされたIOに使用されます。
http://www.csun.edu/~glaw/ee525/Lecture03Nios.pdf
のNios IIは、一般的に、アルテラのFPGAボードで使用ソフトプロセッサであり、それはまた、ハードASICデバイスのライセンスすることができますが、私はこのアーキテクチャに基づく任意の商業のCPUに
を知りませんSSEキャッシュバイパスストア命令は、すぐに再び触れられない領域に書き込むときにキャッシュを汚染することを回避することである。例えばあなたは再び使用されるデータを退去させたくありません。
また、x86の実装では通常、キャッシュラインの任意の部分への書き込みが発生すると、キャッシュライン全体で読み込まれます。キャッシュラインの以前の内容が不要な場合、これはメモリ帯域幅の浪費である。 (のmemcpy
またはmemset
など)memcpy
を実装するためのこのライトバック(デフォルト)対書き込み結合(movntq
/movntdq
)効果のsome old discussionが見つかりました。他の人がすぐにmemcpy
の出力を読むと、これを使用するように注意してください。
ストリーミング負荷は、通常memcpy
のように恐ろしく実行されるため、reading from USWC regionsでのみ動作します。ストリーミング負荷は通常(WB(ライトバック))から特別なものではなく、普通のmovdqa
のように動作します。 (すなわち、NTヒントは無視される)。インテルの最適化マニュアルには、汚染を軽減するためにprefetchnta
を使用できると記載されています。それは、読み取りをトリガすることなく(むしろmovnt
でバイパスより)キャッシュに書き込むことが可能かどう
はIDK。おそらくAVX512はmemcpy
のこの問題を解決するでしょう。なぜなら、512bのZMMレジスタは64バイト、つまり完全なキャッシュラインであるからです。 ZMMレジスタからまだキャッシュされていないメモリへの64バイトの整列されたストアは、RAMを最初に読み込まない方法で実装され、システム内の他のCPUコア。
(AVX-512)がSkylake Xeon(他ないSkylakeマイクロアーキテクチャのCPUの中にあることを行っている。またKnight's Landingで、超並列高スループットのXeonファイがアクセル事を計算する。。)
- 1. MVCにaspxまたはascxをキャッシュしないように指示する方法はありますか?
- 2. ブラウザに自分のhtmlやcssファイルをキャッシュするように指示するhtmlタグはありますか?
- 3. Amazon Cognito:ユーザーが確認されると、サインインするように指示する必要がありますか?
- 4. キャッシュされたgrepのようなものはありますか?
- 5. SpringバッチCompositeProcessor各プロセッサにはjdbcTemplateがあり、2番目のプロセッサにはnullと表示されています
- 6. CUDAのプロセッサ数を指定する方法はありますか?
- 7. 指定されたファイルがFASTAであるかどうかを確認する方法はありますか?
- 8. レールにアセットパイプラインをバイパスするオプションがありますか?
- 9. コンパイルをバイパスするJavaインタープリタがありますか?
- 10. オーバーロードされたメソッドにどのようにAOPのアスペクトを指定する必要がありますか?
- 11. Python:プログラムに戻るように指示する方法はありますか?
- 12. カスタムレスポンスヘッダによるNginxキャッシュのバイパス
- 13. python setup.pyビルドの指示にAC_CHECK_LIBのようなものがありますか?
- 14. 画像のキャッシュを削除するようにブラウザに指示します
- 15. ユーザが認証されている場合、nginxキャッシュをバイパスするDjango
- 16. エラー注釈プロセッサを明示的に宣言する必要があります
- 17. ChromeまたはFirefoxのキャッシュをバイパスする
- 18. MavenにJAVA_HOMEで指定されたJDK以外のJDKを使用するように指示する方法はありますか?
- 19. FetchDistributedMapCacheプロセッサのキャッシュをクリアする
- 20. 出力指示でアップロードされたファイルを表示する方法はありますか
- 21. DjangoがありませんVary:キャッシュされたビューのCookieヘッダー
- 22. コントローラから指示にアクセスする必要があります
- 23. 指定されたイニシャライザは、 'super'で指定されたイニシャライザを呼び出す必要があります。
- 24. 指定されたURLからJAR依存関係を取得するようにmavenに指示します
- 25. ブラウザのキャッシュがクリアされているかどうかを検出する方法はありますか
- 26. gradleキャッシュが変更されているかどうかを確認する方法はありますか?
- 27. NSFetchedResultsControllerによってキャッシュされるプロパティを指定できますか?
- 28. ポインターが何も指し示されないようにする
- 29. どのようにレールのネストされたリソースのパスを表示する必要がありますか?
- 30. nifi listSFTPプロセッサをリセットする必要があります
私は好奇心:実用的なアプリケーションがためにそこにあるものキャッシュをバイパスしますか?頭に浮かべるのは、命令タイミングの予測可能性を向上させることだけです。他にはありますか? – wallyk
2つのケースでは、異なるコアで動作するスレッド間で時間に敏感なデータを共有し、他のハードウェア(UART ICなど)とインターフェイスするためにメモリマップレジスタに書き込むことが一般的です。 –
@wallyk:キャッシュ汚染(例えば、たくさんのデータを書き、 "すぐに"それを読むことを期待せず、キャッシュからプッシュする必要があるデータを望んでいない場合)。 – Brendan