DMAとは?CPUを介さずに装置とメモリの間でデータを直接転送するしくみ

公開: 更新: カテゴリ: テクノロジ系

30秒で結論

DMAとは(全体像)

ふつう、装置(SSDやネットワークカードなど)とメモリの間でデータを動かすときは、CPUがいちいち仲介する。でもそれだとCPUがデータ運びに忙しくなり、本来の計算ができない。

そこで使うのがDMA専用の担当(DMAコントローラ)にデータの運搬を任せ、CPUは別の仕事に集中する

身近にたとえると、CPUは上司、DMAはアシスタント。上司が「この資料を倉庫から運んで」と指示し(開始)、アシスタントが運び、終わったら「完了しました」と報告する(終了)。運搬の間、上司は別の重要な仕事に集中できる。これがDMAの本質だ。


詳しく:CPUの関わり方と転送モードだけ覚えれば戦える

ここが記事の心臓部。まずCPUの関わり方を押さえよう。

DMAの動きとCPUの関わり

場面担当CPUの関わり
転送の開始CPUがDMACに指示あり(割込み)
転送中DMACが運ぶなし(CPUは別の仕事)
転送の終了DMACがCPUに報告あり(割込み)

ここで取り違えやすいのが、「DMAならCPUは完全に不要」ではないこと。開始と終了のときだけCPUが割込みで関わる。転送中はCPUは関わらず、別の処理に集中できる。

次に、データの運び方には2つのモードがある。

転送モード2種

モード動き特徴
サイクルスチールCPUが使う合間を少しずつ借りて運ぶCPUへの影響が小さい・転送は遅め
バーストモード一気にまとめて運ぶ(その間CPUは待つ)転送が速い・CPUは待たされる

つまり、こまめに少しずつ運ぶのがサイクルスチール、一気にまとめて運ぶのがバースト。小さく頻繁な転送ならサイクルスチール、大量データの一括転送ならバースト、と使い分ける、というわけだね。

わかりやすく言い換えると

要するに、DMAは「データ運びをアシスタントに任せて、CPUは本業に集中する」しくみだ。

直接転送 … 装置とメモリを直接つなぎ、CPUは仲介しない(負担が減る)

CPUの関わり … 開始と終了だけ(完全に不要ではない)

2モード … サイクルスチール(こまめに少しずつ)/バースト(一気にまとめて)

「DMAでもCPUは開始・終了で関わる」だけは取り違えやすい。


試験のツボ

🔴 一番出る:CPUを介さず直接転送

①装置とメモリを直接つなぎ、CPUの仲介を省く

②転送中はCPUが別の仕事に集中できる(負荷軽減)

🔴 次に出る:CPUの関わりは開始・終了だけ

①DMACが転送を担当する

②開始と終了のときだけCPUに割込みで知らせる

🟡 押さえると安定:転送モード

①サイクルスチールはこまめに少しずつ(CPU影響小)

②バーストは一気にまとめて(速いがCPUは待つ)


よくある間違い

「DMAならCPUは完全に不要」→ ✗  開始と終了のときはCPUが割込みで関わる。不要なのは転送中だけ。

「サイクルスチールとバーストは同じもの」→ ✗  サイクルスチールはこまめ、バーストは一気で、性能の特性が違う。

「DMAはCPUがデータを1つずつ運ぶしくみ」→ ✗  CPUを介さず、DMACが直接運ぶ。CPUが運ぶのではない。


試験での出題パターン

実際の問題でたしかめてみよう。

オリジナル問題1(DMAのしくみ)

📝 オリジナル問題 1 DMAのしくみ

DMAに関する次の記述のうち、正しいものはどれか。

  1. DMAはCPUがデータを1つずつ手作業で運ぶしくみで、CPUの負担はかえって増える
  2. DMAはデータをいっさい運ばず、転送が必要かどうかを調べるだけのしくみとされている
  3. DMAはCPUを介さず装置とメモリを直接つないで、CPUの負担を減らすしくみである
  4. DMAはメモリを使わず、すべてのデータをCPU内部だけで処理するしくみとされている
ネトスパ
ネトスパ 解答・解説

解答は 3 である。

DMAはCPUを介さず装置とメモリを直接つなぎ、CPUの負担を減らすしくみなのだ。運搬をアシスタントに任せるイメージなるぞ。

選択肢1の「CPUが手作業」、選択肢2の「運ばない」、選択肢4の「CPU内部だけ」はどれも誤りである。

選択肢判定理由
1CPUを介さず運ぶ
2データを運ぶ
3直接転送でCPU負荷を減らす
4メモリと装置の間で運ぶ

オリジナル問題2(CPUの関わり)

📝 オリジナル問題 2 CPUの関わり

DMAとCPUの関わりに関する次の記述のうち、正しいものはどれか。

  1. DMAでは開始と終了だけCPUが割込みで関わり、転送中はCPUは別の仕事に取り組める
  2. DMAではCPUがいっさい関わらず、開始も終了もCPUは関知しないものとされている
  3. DMAではCPUが転送の最初から最後までつきっきりで、別の仕事はできないものである
  4. DMAではCPUが転送の途中だけ関わり、開始と終了にはいっさい関わらないものとされる
ネトスパ
ネトスパ 解答・解説

解答は 1 である。

DMAでは開始と終了のときだけCPUが割込みで関わり、転送中はCPUは別の仕事ができるのだ。完全に不要なわけではないなるぞ。

選択肢2の「いっさい関わらない」、選択肢3の「つきっきり」、選択肢4の「途中だけ」はどれも誤りである。

選択肢判定理由
1開始・終了で関わり転送中は不要
2開始・終了で関わる
3転送中は別の仕事ができる
4関わるのは開始と終了

オリジナル問題3(転送モード)

📝 オリジナル問題 3 転送モード

DMAの転送モードに関する次の記述のうち、正しいものはどれか。

  1. サイクルスチールは一気にまとめて運び、バーストはこまめに少しずつ運ぶものとされる
  2. サイクルスチールはこまめに少しずつ運び、バーストは一気にまとめて運ぶモードである
  3. サイクルスチールもバーストもまったく同じ運び方で、性能に違いはないものとされる
  4. 転送モードは1種類しかなく、サイクルスチールやバーストという区別はないものとされる
ネトスパ
ネトスパ 解答・解説

解答は 2 である。

サイクルスチールはこまめに少しずつ運び、バーストは一気にまとめて運ぶモードなのだ。小さく頻繁ならサイクルスチール、大量一括ならバーストなるぞ。

選択肢1はサイクルスチールとバーストが逆。選択肢3の「同じ」、選択肢4の「1種類」も誤りである。

選択肢判定理由
12つが逆
2サイクルスチール=こまめ・バースト=一気
3性能特性が違う
42種類ある

まとめ

押さえどころ

次に学ぶ


執筆: SikakuQuest編集部

勉強は、クエストになった。

資格の勉強を、冒険に変えるRPG学習アプリ

App Storeで見る