Ryo Hagimoto

Activity

Reply to メモリマップについて - >キャッシュ無効領域はどういう時に使えば良いのでしょうか? 現在用意していますライブラリをアプリケーションで制御する場合は使う必要はありませんが、メモリを直接アクセスする周辺I/O(と そのライブラリ)を使用する場合にキャッシュ無効領域を使用します。例えば、現在用意していますEthernetのライブラリ(ライブラリ 内で使用)、また今後用意します画像系のライブラリを使う場合が考えられます。 >「キャッシュ無効空間にデータ領域を割り当てることにより、投機的キャッシュラインフィルの問題を回避しています。」という記述がありましたが、イマイチ理解できませんでした。 キャッシュはCPUに付属しています。 DMAなどの周辺機能でメモリにアクセスする場合、キャッシュを経由せずにメモリをアクセスします。 CPUでメモリ書き込みを行ったつもりでも、書き込んだデータはキャッシュ上のみで、実メモリに反映されていないことがあります。 このような場合にDMAなどのキャッシュを経由しないでメモリアクセスする機能を使用すると、DMAで転送されるデータが変更前の値になってしまうことがあり得ます。 また、反対にDMAで転送されたデータを読むときも同様のことが言えます。 このような問題を「投機的キャッシュラインフィルの問題」といいます。 上記のような動作を避けたい場合、キャッシュ無効空間を使うことがあります。