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は「雑務」から解放され、本来の仕事に集中できるようになります。
この「仕事分担」こそが、効率的なシステムのカギなんですね。


