コンピュータ

DMA(ダイレクトメモリアクセス)とは

2021年12月16日

DMA(ダイレクトメモリアクセス)

DMAとは

DMA(Direct Memory Access)とは、入出力装置から主記憶装置(メインメモリ)へのデータ転送をCPUを介さず直接行う方式のことです。

Direct Memory Access(ダイレクトメモリアクセス)の名前の通り、CPUを介さずにメモリに直接アクセスする方式です。

コンピュータはさまざまな機器とデータのやり取りを行います。DMAでは、このさまざまな機器とのやり取り(データ転送)をDMAコントローラが制御します。

DMAのイメージ例

上記図はDMAのイメージ例です。補助記憶装置から主記憶装置へのデータ転送をDMAコントローラが制御しています。

このようにDMAでは、周辺機器と主記憶装置間のデータ転送をDMAコントローラが制御します。

簡単な流れ

  • 入出力装置からの命令を受けたCPUはDMAコントローラにデータ転送の命令を出す
  • CPUの命令を受けてDMAコントローラがデータ転送の制御を行う
  • データ転送が終わったら、割り込みを発生させてCPUに通知する

プログラム制御方式との違い

プログラム制御方式とは、入出力装置から主記憶装置(メインメモリ)へのデータ転送をCPUが直接制御する方式のことです。

プログラム制御方式のイメージ例

上記はプログラム制御方式のイメージ例です。入出力装置からの命令を受けたCPUは、CPUのレジスタを経由して主記憶装置にデータを転送します。

プログラム制御方式はCPUがデータ転送を直接制御するため、CPUへの負担が大きく処理効率の悪い方式です。(低速な入出力処理を待っている間、CPUは他の処理ができない)

DMAでは、CPUに代わってDMAコントローラがデータ転送を制御します。その結果、CPUはCPUにしかできない作業に集中することができます。

helpful