メモリマップドI/Oに関する質問があります。 CPUが値を読み取っているメモリマップされたIOペリフェラルがあるとします。読み取られると、その値はキャッシュに保存されます。しかし、メモリ内の値は外部IO周辺装置によって更新されています。 そのような場合、CPUがキャッシュを無効にしたと判断する方法と、そのような場合の回避策は何ですか?メモリマップドI/Oでキャッシュを管理する
答えて
これはプラットフォームによって大きく異なります。実際には、2つの異なるケースがあります。
ケース#1。メモリマップされた周辺装置。これは、ある範囲の物理メモリアドレスへのアクセスが周辺デバイスにルーティングされることを意味します。実際のRAMは含まれていません。たとえば、キャッシュを制御するために、x86はMTRR(「メモリタイプ範囲レジスタ」)とPAT(「ページ属性テーブル」)を持っています。特定の範囲の物理メモリに対してキャッシングモードを設定できます。通常の状況下では、RAMにマップされるメモリの範囲はライトバックキャッシング可能であり、周辺デバイスにマップされるメモリの範囲はuncacheableです。異なるキャッシング・ポリシーについては、Intel's system programming guide「11.3キャッシングの方法」で説明しています。したがって、メモリマップされた周辺機器に読み出しまたは書き込み要求を発行すると、CPUキャッシュはバイパスされ、要求はデバイスに直接送られます。
ケース#2。 DMA。周辺装置はRAMに非同期でアクセスできます。この場合、DMAコントローラはどのCPUとも同じであり、キャッシュ・コヒーレンシ・プロトコルにも同様に参加します。周辺からの書き込み要求は他のCPUのキャッシュによって認識され、キャッシュラインは無効化されるか、または新しいデータで更新されます。また、他のCPUのキャッシュにも読み取り要求があり、メインRAMではなくキャッシュからデータが返されます。 (これが唯一の例です。実際の実装はプラットフォームに依存し例えば、SOCが一般的に強力なキャッシュ・コヒーレンシ周辺<保証するものではありません - > CPU)のどちらの場合も
、キャッシングの問題も、コンパイラレベルで存在する:コンパイラをデータ値をレジスタにキャッシュすることができる。そのため、プログラミング言語には、そのような最適化を禁止する手段がいくつかあります。たとえば、volatile
というキーワード。
- 1. キャッシュ管理
- 2. IONIC2キャッシュ管理
- 3. Linuxのメモリ管理(キャッシュ)
- 4. UIオブジェクトの管理とキャッシュ
- 5. polymer-cliによるキャッシュ管理のベストプラクティス
- 6. コード付きのiphoneでキャッシュを管理する方法
- 7. ASP.NET WebApi2でキャッシュを管理する方法は?
- 8. Google Cloudストレージでキャッシュを管理する方法
- 9. 角度2のキャッシュ管理のベストプラクティス
- 10. データベースVsキャッシュ管理と深いストリーム
- 11. スプリングキャッシング - 異なるスコープのキャッシュを管理する方法は?
- 12. アンドロイドボレーのキャッシュ管理を無効にする方法
- 13. ブラウザのキャッシュ問題を解消するファイルのバージョン管理
- 14. アプリケーションの応答キャッシュを管理するためのノードjsライブラリ
- 15. キャッシュされたIDisposableオブジェクトを管理する方法は?
- 16. コードからメモリ/キャッシュを管理する方法は?
- 17. あなたのアンドロイドアプリケーション内のキャッシュを管理する
- 18. 「購買管理の管理」を有効にする際に、ユーザーxxxxによって基本キャッシュ(/ UI2/CHIP_CSTAT)のキャッシュがロックされます
- 19. キャッシュを扱うbeyong Nginxサーバーとwebpack jsとCSSのバージョン管理
- 20. 自動リリースプロセスでアプリケーションとアセンブリのバージョン管理を管理する
- 21. Ruby on Rails - 管理インターフェースでレイアウトを管理する方法は?
- 22. C++メモリ管理でクラスを管理する方法 - study
- 23. SVNでバイナリファイルのバージョン管理を管理する良い方法
- 24. WebStormのサードパーティJavaScriptライブラリをソース管理下で管理する
- 25. App Fabric:セッション管理に使用するキャッシュの領域カウントを増やす
- 26. フェッチのキャッシュをクライアントが管理する必要がありますか?
- 27. .htaccessを使用して管理パネルからキャッシュを削除する方法
- 28. キャッシュは管理上の観点からMarklogicで何を意味しますか?
- 29. 不要なキャッシュ消去を防止するためのJavascriptファイルのバージョン管理
- 30. Oracle Coherence:2つのキャッシュ間のトランザクション管理