23

キャッシュ同期操作についていくつか質問があります。

Invalidate : cpu がデバイスによって更新されたメモリの一部を読み取ろうとする前に、対応するメモリを無効にする必要があります。

Flush : デバイスが CPU によって更新されたメモリの一部を読み取る前に、CPU は内容をキャッシュからメモリにフラッシュする必要があります (書き戻しも正しいですか?)。これにより、デバイスは更新された内容でメモリから内容を読み取ります。

フラッシュが実行されない場合、キャッシュに書き込まれた内容でメモリがまだ更新されていないため、メモリに存在するジャンク データが読み取られる可能性があります。

私の上記の理解が正しいか確認してください。

いつフラッシュと無効化の両方を組み合わせたいですか? デバイス制御記述子で遊んでいるときに、フラッシュと無効化を組み合わせて同期する必要があると聞きました。なんでそうなの?

フラッシュの後に無効化が続くようなシーケンスに従う必要がありますか?

無効化に続いてフラッシュが役立つシナリオはありますか?

4

2 に答える 2

37

Flush はキャッシュの内容をメイン メモリに書き戻し、invalidate はキャッシュ ラインを無効としてマークし、将来の読み取りがメイン メモリに行くようにします。

デバイスがメモリのブロックを更新している場合は、フラッシュと無効化を組み合わせると思います。フラッシュにより、デバイスに最新のコンテンツがあることが保証され、無効化により、デバイスが終了したときにCPUが新しいコンテンツを読み取ることが保証されます。記憶から。

于 2010-02-27T11:43:55.047 に答える