スポンサーリンク

【応用情報技術者試験】DMAを5分で理解!

DMAはDirect Memory Accessの略です。CPUがデータを一つずつ運ぶ負担を減らし、装置が主記憶などとの転送を行う仕組みです。荷物運びを専門の担当へ任せるイメージで考えましょう。

1.CPUが転送条件を設定する

転送元・転送先・量・方向などを指定します。転送そのものをDMAに任せても、準備や完了後の処理にはCPUが関わります。

CPUは設定と完了処理に関わり、DMAがデータ転送を担当する
CPUは設定と完了処理に関わり、DMAがデータ転送を担当する

2.転送が進む間に別の処理を行える

CPUが転送作業のすべてを担当する場合に比べて負担を減らせます。ただしCPUとDMAが主記憶やバスを共有するため、競合や同期を考える必要もあります。小さな転送などでは設定の負担が相対的に大きくなる場合があります。

3.完了通知は割込みなどを使う

DMAは転送方式、割込みは通知と処理切替えの仕組みです。ストレージ・ネットワーク・音声などで、DMAによる転送と割込みによる完了通知を組み合わせられます。

理解を確かめる確認問題

DMAを使うと、転送条件の設定を含めてCPUは完全に不要になるでしょうか。

解答・解説を見る

不要にはなりません。CPUは設定・同期・完了処理などに関わります。

まとめ:データを運ぶ負担を減らす

CPUの準備、DMAの転送、完了後の処理を区別すると、「CPUを介さない」の意味が分かります。

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

コメント