DMA (Direct Memory Access)(DMA: ディーエムエー)

DMA (Direct Memory Access)(DMA: ディーエムエー)

DMA (Direct Memory Access)(DMA: ディーエムエー)

英語表記: DMA (Direct Memory Access)

概要

DMA (Direct Memory Access)は、コンピュータシステムにおいて、中央演算処理装置(CPU)の介入なしに、周辺機器(I/Oデバイス)とメインメモリ間でデータを直接転送する仕組みです。この技術の最大の目的は、データ転送におけるCPUの負荷を劇的に軽減し、結果としてI/O処理を高速化することにあります。

この概念は、私たちが現在学んでいる「ハードウェアとソフトウェアの関係」における「I/O 処理と高速化」という文脈において、極めて重要な役割を果たしています。なぜなら、DMAはCPUが本来行うべき計算処理に集中できるようにするための、賢いハードウェア制御技術だからです。

詳細解説

DMAは、従来のI/O制御方式が抱えていたボトルネックを解消するために開発されました。従来の方式(プログラムドI/O: PIOなど)では、I/Oデバイスからメモリへデータを転送する際、CPUがデータの読み書きを1バイト(または1ワード)ずつ制御し、その都度データをレジスタ経由で転送する必要がありました。この方法では、大容量のデータを高速で転送する場合、CPUがデータ転送作業に長時間拘束されてしまい、本来の計算処理能力が大きく低下するという問題がありました。

DMAは、この非効率性を根本から解決します。

目的と動作原理

DMAの核心的な目的は、CPUをデータ転送の「雑務」から解放することです。

  1. 初期設定: 転送を開始する際、CPUは「DMAコントローラ(DMAC)」と呼ばれる専用のハードウェアに、転送元アドレス、転送先アドレス、転送するデータ量(バイト数)などの必要な情報を設定します。
  2. バス利用権の獲得: 設定を受け取ったDMACは、データ転送のためにシステムバス(メモリやデバイスを繋ぐ経路)の利用権をCPUに代わって要求します(バスリクエスト)。
  3. 転送の実行: CPUがバスの利用権をDMACに譲渡(バスグラント)した後、DMACは自律的に動作を開始します。DMACは、CPUを介することなく、I/Oデバイスとメインメモリの間でデータをブロック単位で直接転送します。この間、CPUはバスを使用しない他の処理(計算など)を並行して実行できます。
  4. 転送完了通知: すべてのデータ転送が完了すると、DMACはCPUに対して「転送が完了しましたよ」という割り込み(Interrupt)信号を送ります。CPUはこの割り込みを受け取って、次の処理へ移行します。

主要コンポーネント:DMACの重要性

DMAの実現に不可欠なのが、DMAC(DMA Controller)です。DMACは、CPUと並行して動作する専用のプロセッサのような役割を果たします。DMACは、CPUから指示された転送作業を完全に引き受け、バス調停、アドレス管理、バイトカウントの管理など、複雑な転送プロセスをすべて自動で処理してくれます。

このDMACの存在こそが、「デバイスドライバとI/O制御」のカテゴリにおいて極めて重要です。なぜなら、デバイスドライバというソフトウェア層の役割は、このDMACというハードウェアを適切に設定し、I/Oデバイスと連携させることだからです。デバイスドライバがDMACをうまく活用することで、システムは「I/O 処理と高速化」の恩恵を最大限に享受できるわけです。

DMAを利用することで、CPUは高頻度なI/Oアクセス処理から完全に解放され、システム全体の処理能力(スループット)が飛躍的に向上します。特に、現代のコンピュータではギガバイト単位のデータを瞬時に扱う必要があるため、DMAは高性能なシステムの基盤技術として欠かせないものとなっています。

具体例・活用シーン

DMAは、私たちが日常的に利用しているコンピュータの性能を支える「縁の下の力持ち」のような技術です。

1. 高速ストレージアクセス

最も一般的な活用例は、SSDやハードディスクドライブ(HDD)などのストレージアクセスです。OSがファイルを開いたり、大容量のデータを読み書きしたりする際、データはストレージデバイスからメインメモリへ、またはその逆方向へ転送されます。この転送経路にDMAが使用されることで、CPUはファイル操作の処理指示を出すだけで済み、実際のデータ転送を待つ必要がなくなります。もしDMAがなければ、4K動画の編集や大容量ゲームのロード時間は、現在の数十倍もかかってしまうでしょう。

2. ネットワーク通信

ギガビットイーサネットやWi-Fiなどの高速ネットワークインターフェースカード(NIC)もDMAを駆使しています。インターネットから大量のデータパケットが到着したとき、NICはDMACを通じて、受信したデータを直接メインメモリの指定されたバッファ領域に書き込みます。これにより、CPUはパケット解析やアプリケーション処理といった、より高度なタスクに集中できます。

3. アナロジー:オフィスにおけるデータ転送の革命

DMAの仕組みを理解するために、オフィスでの書類整理に例えてみましょう。

あなたの会社に、社長(CPU)と、書類を運ぶ専門の配送担当者(DMAC)がいると想像してください。

DMAがない場合(従来のPIO方式):
社長(CPU)が自ら、倉庫(I/Oデバイス)に行き、必要な書類を1枚ずつ手に取り、自分のデスク(CPUレジスタ)を経由させて、目的のキャビネット(メインメモリ)に運ぶ必要があります。社長は非常に優秀な計算能力を持っていますが、書類運びという単純作業に時間を取られてしまい、重要な経営判断(計算処理)が滞ってしまいます。「社長が書類運びばかりしているなんて、非効率極まりない!」というのがこの状況です。

DMAがある場合:
社長(CPU)は、配送担当者(DMAC)を呼び、「倉庫にあるAファイルを、キャビネットBに転送しておいてくれ」と指示(初期設定)を出します。指示を出した後、社長はすぐに自分のオフィスに戻り、経営判断という本来の業務を再開できます。配送担当者(DMAC)は、バス(廊下)の利用許可を得て、社長を煩わせることなく、書類(データ)を大量かつ高速に転送します。転送が完了したら、「終わりました」と社長に報告(割り込み)するだけです。

このDMA方式のおかげで、社長(CPU)の貴重な時間を書類運びに浪費することなく、システム全体の処理効率が劇的に向上するのです。この例からもわかるように、DMAは「I/O 処理と高速化」を実現するための、非常に洗練された分業システムだと言えるでしょう。

資格試験向けチェックポイント

DMAは、基本情報技術者試験や応用情報技術者試験のハードウェア分野で頻出する、非常に重要なテーマです。特に、I/O制御方式の比較として出題されることが多いです。

  • 定義の確認: DMAは「CPUを介さずに」周辺機器とメモリ間でデータを「直接」転送する方式である、という点を必ず覚えてください。CPUの負荷軽減が最大のメリットです。
  • 主体はDMAC: 転送処理の主体となるのは、DMAコントローラ(DMAC)です。CPUはあくまで初期設定と、転送完了後の割り込み処理を担当するだけです。
  • 他のI/O方式との比較: DMAは、プログラムドI/O(PIO)や割り込み(Interrupt)方式が抱えるCPU負荷の問題を解決するために採用されます。特に、PIOはCPUが常にI/Oの状態をチェックし続けるため、最もCPU負荷が高い方式です。DMAはこの対極にある高速化技術だと認識しておきましょう。
  • バス調停の役割: DMACがデータを転送する際、CPUからシステムバスの利用権を一時的に奪います(バスサイクルを盗む、またはサイクルスチールと呼ばれることもあります)。このバスの利用権を巡る制御(バス調停)もDMAの重要な要素です。
  • 割り込み(インタラプト): DMA転送が完了したことをCPUに知らせる手段として、必ず割り込みが使われます。転送開始時はCPUからの指示、転送完了時はDMACからCPUへの割り込み、という流れを理解しておきましょう。
  • 出題傾向: 「CPUの関与が最も少ないI/O制御方式はどれか」や、「DMACの役割として正しいものはどれか」といった選択肢問題が頻出します。DMAの仕組みが、まさに「I/O 処理と高速化」の文脈でどのように機能しているのかを理解していれば、解答は容易です。

関連用語

  • 情報不足
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

両親の影響を受け、幼少期からロボットやエンジニアリングに親しみ、国公立大学で電気系の修士号を取得。現在はITエンジニアとして、開発から設計まで幅広く活躍している。

目次