DMA

読み:でぃーえむえー / 英語表記:Direct Memory Access

主記憶と入出力装置の間で、CPUを介さずにデータを転送する方式。転送の間、CPUはほかの処理を進められる。

イマシルちゃんの解説

ディスクなどの入出力装置と主記憶の間では、大量のデータをやり取りすることがあるよ。
CPUが一つずつ読み書きして運ぶと、その分だけ計算に使える時間が減ってしまうんだ。
DMAは、このデータ転送を専用の回路に任せる方式だよ。
CPUが転送元や転送先、データ量を設定すると、DMAコントローラが実際の読み書きを進めてくれるの。
転送の完了は、CPUに処理を求める割込みなどで知らせるよ。
CPUがデータ運びにつきっきりにならずに済むので、計算と大量の入出力を並行して進めやすくなるんだ。

より深い解説

定義

DMA(Direct Memory Access)は、DMAコントローラ(または入出力装置自身)が、CPUに代わって、主記憶と入出力装置(ディスク、ネットワークカードなど)の間のデータ転送を行う方式である。

DMAの流れ

  1. CPUが、DMAコントローラに、転送元、転送先、データの量を設定する
  2. DMAコントローラが、バスの使用権を得て、主記憶と入出力装置の間で直接データを転送する
  3. 転送が終わると、DMAコントローラがCPUに割込みで完了を知らせる

プログラム制御方式との比較

プログラム制御方式(PIO)DMA方式
データの転送CPUが1語ずつ読み書きするDMAコントローラが行う
転送中のCPU転送にかかりきりになるほかの処理ができる
向いている場面少量のデータ大量のデータ(ディスク、ネットワーク、音声・映像)

DMAの転送中は、DMAコントローラとCPUがバスを取り合うことがあり、CPUのメモリアクセスが一時的に待たされること(サイクルスチール)がある。

ネットワークでの利用

ネットワークインタフェースカード(NIC)は、受信したフレームをDMAで主記憶に書き込み、送信するフレームをDMAで主記憶から読み出す。高速なネットワークでは、さらに、ネットワーク越しに相手のコンピュータの主記憶へ直接データを読み書きするRDMA(Remote DMA)も使われ、データセンターでの高速な通信に役立っている。

似た仕組みとの区別

仕組み内容
DMA主記憶と入出力装置の間で、CPUを介さずにデータを転送する
メモリインタリーブ主記憶を複数のバンクに分け、CPUからのアクセスを並列に処理する
ディスクキャッシュ主記憶と磁気ディスクの間にバッファメモリを置き、速度差を補う
仮想記憶外部記憶装置を使い、主記憶の容量を超えるメモリ空間を使えるようにする

実際の試験ではここに出る!全2問

ネットワークスペシャリスト

午前Ⅱ

この用語が出てくる記事

↑