4

CPU が位置 x+50 の値を変更し、それをメイン メモリにフラッシュ バック (ライトバック) しないとします。

一方、デバイスは x から x+100 への DMA 読み取り要求を開始します。

その場合、CPU はダーティ キャッシュ ラインをフラッシュバックするようにどのように通知されますか?

4

2 に答える 2

2

DMA 回路は、多くの場合、CPU を介さずにメイン メモリと直接連携します (これが主なアイデアであり、ハードウェアの他の場所で実行できる I/O を CPU から解放し、CPU サイクルを節約します)。そのため、実際にキャッシュの一貫性の問題が発生する可能性があります。Microsoft は、DMA を使用する場合は I/O バッファーをフラッシュすることをお勧めします。

ただし、一部のシステムでは、マルチプロセッサ システムの CPU 間と同様に、CPU と DMA 回路間のキャッシュ コヒーレンシ プロトコルをサポートしています。最終的な答えは、実際のハードウェアによって異なります。

于 2012-04-13T11:32:15.410 に答える
1

私が考えることができる3つのアプローチがあります:

  1. メモリはキャッシュ不可としてマークされています。
  2. DMA コントローラはキャッシュ コントローラと調整し、
  3. OS は、プロセスの CPU 部分が実行されていないことを確認するなどして、これが決して起こらないことを保証します。

ハードウェアと OS の機能に依存します。

プロセスが実行されていないことを確認することは、マルチタスク OS ではそれほど奇妙ではありません。プロセスが所有するメモリの DMA は、書き込みなどのシステム コールを実行するプロセスによってトリガーされる可能性が高いからです。DMA が完了するまで、プロセスをスケジュール解除し、他のプロセスを実行できます。

I/O デバイスが完了するのを待つのは制約が多すぎるため、DMA コントローラーがプロセスのアドレス空間からセカンダリ バッファーにコピーしている可能性があります。

したがって、これが発生した場合は、その例と実行したテストの概要を教えてください。

于 2012-04-13T11:40:47.650 に答える