スポンサーリンク

【応用情報技術者試験】DMAコントローラー

DMAコントローラーは、CPUが各データを読み書きして運ぶ代わりに、データ転送を管理するハードウェアです。CPUの初期設定と、DMAによる転送を分けて考えましょう。

1.CPUから設定を受け取る

CPUやドライバーが、転送元・転送先・データ量・方向などを設定します。実際のアドレス指定や制約は装置とシステムの方式に依存します。DMAを使っても、CPUが一切不要になるわけではありません。

2.転送と完了通知を分ける

CPUが転送を設定し、DMAがデータを転送し、完了を割込みなどで通知する
CPUが転送を設定し、DMAがデータを転送し、完了を割込みなどで通知する

DMAコントローラーや装置内のDMA機能が転送を行います。CPUはほかの処理を進められますが、主記憶やバスの帯域を共有する場合は競合もあります。完了は割込みなどで通知できます。

3.大量転送などで負担を減らす

ネットワーク・ストレージ・音声などで使われます。設定や同期の負担もあるため、DMAならどんな転送でも必ず最速とは限りません。DMA制御・バスの調停・CPU側の処理分担を区別します。

理解を確かめる確認問題

DMAコントローラーに任せる主な処理は、データ転送と暗号化のどちらでしょうか。

解答・解説を見る

ここで扱う基本の役割はデータ転送です。CPUは設定や完了後の処理に関わります。

まとめ:設定するCPUと、転送する装置

転送の指示、実際のデータ移動、完了通知の3つに分けて確認しましょう。

参考:Linux Kernel:DMA APIの考え方

コメント