DMAって、そもそもナニ?

はじめに

パソコンやスマホの中では、毎日たくさんのデータが行ったり来たりしています。
たとえば「ファイルを読み込む」「映像を再生する」「センサーの値を記録する」――どれもデータのやりとりが欠かせません。

でも、ここでちょっとした問題があります。
そのやりとり、いちいちCPU(コンピュータの頭脳)にやらせていたら大変! ということです。

CPUは働き者だけど、手がふさがりがち

CPUはとても優秀で、足し算・引き算から、映像の処理、プログラムの流れの管理まで、なんでもこなします。
でもデータのやりとりを細かく手伝っていると、本当にやるべき作業(たとえば計算や制御)が後回しになってしまいます。イメージで言うと・・・

社長(=CPU)が、わざわざコピーを取ったり書類を隣の部署に持って行ったりしているようなもの。
これでは効率が悪いですよね。

合わせて読みたい

そこで登場、「DMA(ディー・エム・エー)」

DMAは Direct Memory Access(ダイレクト・メモリ・アクセス) の略で、日本語にすると「直接メモリアクセス」。つまり、CPUを通さずにメモリと周辺装置のあいだでデータをやりとりする仕組み なんです。

たとえば、センサーから集めたデータをメモリに保存するとき。
DMAを使えば、CPUがいちいち「データを1バイト転送して…」と指示し続ける必要はありません。
DMAに「これから1000バイト送って、終わったら教えてね」と任せておけば、自動で転送してくれるのです。

例えるなら、「専属の配送係」

CPUが社長なら、DMAは「データ配送係」。
「この荷物(データ)をここ(メモリ)へ届けてね」と命令すると、あとはCPUが他の仕事をしている間に、DMAが代わりに忙しく動き回ってくれ、転送が終わったら「終わりました!」と報告が来ます。
無駄がなく、社長の手も空く――まさにできる社員です。

どんな場面で使われるの?

  • 音声や映像のデータ転送:大量データを途切れず扱う必要がある
  • センサーの定期サンプリング:CPUは結果の分析だけに集中できる
  • 通信機能(UART、SPI、I²Cなど)とのやりとり
    など、実はあちこちでDMAは大活躍しています。

合わせて読みたい

まとめ

  • 社長(CPU)              コンピュータの頭脳、全体を管理する
  • 配送係(DMA)           データ転送の専門スタッフ
  • 書類(データ)             メモリや周辺機器の情報

DMAを使うと、CPUは「雑務」から解放され、本来の仕事に集中できるようになります。
この「仕事分担」こそが、効率的なシステムのカギなんですね。