1

私のコンピュータ アーキテクチャの授業で、教授は次のような質問を私たちに投げかけました。

"Caches can have serious limitations when dealing with devices. Why is this?"

なぜ制限があるのか​​、それが何であるかはわかりません。Googleで検索した後、これに対する正確な答えが見つからないようです。誰かが制限がある理由とそれらの制限が何であるかを説明できますか、または質問に答えるのに役立つ方向性を教えてくれますか?

4

3 に答える 3

2

キャッシュとデバイスには 2 つの問題があります。最初の問題は、基本的な機能の正しさの問題です。つまり、システムは通常、デバイスのメモリ マップド レジスタを、キャッシュを完全にバイパスするアドレス範囲に配置する必要があります。これが起こらず、キャッシュが「邪魔」だったと想像してみてください。その場合、デバイスのステータス レジスタを読み取ろうとするソフトウェアは、代わりにキャッシュによって提供された古い値を読み取ってしまいます。デバイス ドライバーが動作するように頑張ってください。一部の CPU は、キャッシュできないアクセスに対して特別な命令を提供しますが、基本的な結果は同じで、キャッシュは利点を提供せず、デバイス メモリを処理するときに問題を複雑にするだけです。

2 つ目の問題は、メモリでダイレクト メモリ アクセス (DMA) トランザクションを実行できるスマート デバイスのパフォーマンスの問題です。デバイスが DMA 書き込みを実行すると、システム内のハードウェア バス ロジックは、MESI プロトコルに従ってキャッシュ ラインを CPU から完全にスヌープします。コアは、効率性のためにデータを近いキャッシュに保持することに強く依存しています。これで、デバイスはすべてのキャッシュ ラインをヤンクしたところです。これにより、次のソフトウェア アクセスで、コアはラインの高レイテンシ リロードを強制されます。CPU は共有状態のデータ ラインを回避することが多いため、通常は DMA 読み取りでも同じスヌーピングが発生します。

CPU 自体に統合されたデバイスは、キャッシュ ラインを CPU の最終レベル キャッシュに常駐させることができる場合があります。これは、CPU パッケージ外のデバイスに比べてパフォーマンスを大幅に向上させることができます。

于 2011-07-04T16:15:48.183 に答える
2

つまり、実際にデバイスに何が/いつ送信されるかを制御することはできません。

于 2011-07-04T15:03:21.977 に答える
0

基本的に、データがキャッシュからフラッシュされて、話しているデバイスにいつフラッシュされるかを正確に知る方法が必要です。RAMは他のデバイスと同様に、ある場所に書き込まれた最後のデータを記憶しています。RAMに保存されない場合、デバイスも書き込みを認識しません。Linuxは、アーキテクチャに依存する読み取り/書き込みバリアと呼ばれる機能を使用します。

Linuxがそれをどのように扱うか

于 2011-07-04T15:15:27.543 に答える