この簡単な質問についてはお詫び申し上げます。まだここではいくつかのメモリコンセプトに苦しんでいます。質問は:私が繰り返しアクセスしたい事前に計算された配列Aを持っているとします。この配列をできるだけCPUキャッシュに近づけて最速アクセスにするようにCプログラムに指示する方法はありますか?ありがとう。L1キャッシュにいくつかのデータを強制する
3
A
答えて
15
ほとんどのアーキテクチャでL1/L2キャッシュにアレイを強制的に切り替える方法はありません。通常は必要ありません。頻繁にアクセスすると、キャッシュから追い出される可能性は低いです。
アーキテクチャによっては、プロセッサに、すぐにL1/L2キャッシュへのロードを開始できるようにメモリの場所がすぐに必要になるというヒントを与えるための一連の命令があります。これはプリフェッチと呼ばれ、たとえば_mm_prefetch命令(http://msdn.microsoft.com/en-us/library/84szxsww(v=vs.80).aspx)を参照してください。それでも、小さな配列にアクセスする場合はこれは必要ではありません。
一般的なアドバイスは、まずデータ構造をキャッシュ効率的にする(関連するデータをまとめる、データをパックするなど)、プロファイラーがあなたにキャッシュミスの時間を費やしていると後で先読みを試み、これ以上データレイアウトを改善することはできません。
関連する問題
- 1. L1キャッシュミスへの強制
- 2. L1キャッシュとメインメモリ
- 3. キャッシュの強制ノンブロッキングリフレッシュ
- 4. クライアント側のデータを強制的にキャッシュする
- 5. 強制的にキャッシュをクリアするChrome
- 6. キャッシュを強制的に削除する
- 7. L2追い出しのL1キャッシュからのキャッシュ追い出し
- 8. Google AMPキャッシュ - キャッシュからindex.htmlを強制的に読み込むことを強くお勧めしますか?
- 9. L1/2キャッシュの問題
- 10. IEブラウザで強制的にキャッシュを強制的に更新する - C#、ASP
- 11. jQuery.ajax - キャッシュ強制無効化
- 12. 強制的なCSS再キャッシュ
- 13. データは処理前にRAMからキャッシュ(L3、L2、L1)を通過しますか?
- 14. L1、L2、およびL3キャッシュの命名規則? L1、L2、L3キャッシュの語源は何ですか?
- 15. キャッシュされていないgethostbyname()を強制する
- 16. CUDA 1つの変数に対してL1キャッシュを無効にする
- 17. ブラウザに強制的に画像をPHPウェブサイトにキャッシュする
- 18. 公開するとブラウザが強制的にキャッシュをクリアする
- 19. いくつかのアンドロイドで響板に問題を強制する?
- 20. Gradle:強制的にカスタムタスクを常に実行する(キャッシュなし)
- 21. モバイルデバイスにキャッシュを強制的に更新する
- 22. 強制的にアプリのキャッシュをクリアアプリを閉じる
- 23. インポートされたCSSファイルのキャッシュを強制しますか?
- 24. HttpsURLConnectionとHttpResponseCacheをAndroidで強制的にキャッシュする方法は?
- 25. ブラウザセッションを強制的にブラウザでキャッシュする
- 26. キャッシュ可能な強制的なリフレッシュ
- 27. ブラウザ200(キャッシュされた)強制リロード
- 28. コンパイル時に狭い暗黙の強制を強制する
- 29. キャッシュされたバージョンをロードするのではなく、サーバーからページを強制的にリロードする
- 30. httpを強制的に1つのフィラー休止フォースに強制するhttps
その情報にgccを追加するには、gccを使用している場合は、__builtin_prefetchという拡張子があります。http://gcc.gnu.org/onlinedocs/gcc-3.3.6/gcc/Other-Builtins.html –