3

私は本でこれを読みました:

システム内の DMA コントローラが 5 MHz の最大レートで機能し、それでも 100 ns のメモリを使用する場合、DMA コントローラはメモリよりも遅いため、最大転送レートは 5 MHz になります。多くの場合、DMA コントローラは、DMA 転送が発生するとシステムの速度を低下させます。

私は、DMA コントローラの全体的な理由は速度を上げることであり、速度を落とすことではないと考えていました。では、速度が遅くなった場合、どのように役立つのでしょうか? DMA コントローラをメモリと同じくらい高速にしないのはなぜですか?

4

2 に答える 2

5

DMA コントローラの全体的な考え方は、プロセッサと並行して動作することです。したがって、プロセッサは DMA コントローラへの長い IO 操作をキューに入れ、問題なくコードを実行し続けることができます。DMA コントローラーは低速ですが、全体的なパフォーマンスではなく、IO 操作にのみ影響します。これは、低速のデバイスとインターフェースする場合に非常に重要です。プロセッサがそれらと直接動作する必要がある場合、他の処理が行われることはありません。DMA を使用すると、低速の IO を DMA のキューに入れ、IO は並行して実行されます。

于 2011-12-13T12:16:00.273 に答える
3

関連する 2 つの異なる「転送レート」があります。適切に設計されたシステムでは、DMA コントローラは通常の動作速度でアドレスおよびデータ バスとインターフェイスできる必要があります。一方、操作にかかる時間は、CPU 命令サイクルよりもはるかに遅い場合があります。つまり、CPU と同じペースでソース アドレスから宛先アドレスにデータを転送するわけではありません。システムに接続されたほとんどすべてのハードウェア デバイスは、はるかに遅いペースで動作するため、これはまったく問題ありません。

DMA の一般的な目的は、メモリから I/O ポートにバイトを移動するというありふれたタスクから CPU をオフロードすることです。送信中の通常の I/O シーケンスを考えてみましょう

- スタック操作やレジスタの保存などの割り込み処理を実行します。
- メモリからポインターとカウンターを取得します。
- データ バイトをロードし、データ バイトを保存します。
- 両方のポインターをインクリメントして保存します
。 - カウンターをデクリメントして保存します。ゼロの場合、送信の終了にフラグを立てます。
- 割り込みからの復帰処理

システムに DMA を使用すると、CPU は DMA コントローラーのプログラミングに少し多くの時間を費やしますが、送信が終了するまですべての割り込みを回避します。もちろん、DMA がメモリにアクセスするとき、CPU はアクセスできません。ただし、通常、CPUはすべての命令でメモリにアクセスしているわけではありません(加算、減算など、すべてメモリアクセスなしでCPU内で行われます)。したがって、平均して、各バイト転送のコストは、完全な割り込み処理操作ではなく、1 メモリ サイクル未満である必要があります (干渉しないものを考慮に入れます)。

于 2014-04-22T13:34:51.323 に答える