図2に、詳しいデータ転送の経路を記載しました。[b](右図)はDMAを使ったデータ転送これはRAMからデータを取り出して通信機能へ送る場合です。通常、CPUがデータ転送を行う場合(図2[a])、まずRAMからデータを読み出します。読み出されたデータは、一度CPU内のALUを通ります。ALUではデータに何の処理も行わずに、そのまま出力し、通信機能にデータは送られます。DMAはCPUを介さずにRAMからデータを読み出し、通信機能へ転送します。その際、CPUは使われないので、ALUを使って別の演算ができます。マイコンとしては2つの仕事を並列処理できることになり、非常に効率的です。最初CPUが、DMAにデータ数、転送元/先アドレス、転送モードなどを設定します。その後、DMA転送スタートのトリガーが来るとDMAは転送を開始します。DMA転送スタートのトリガーはソフトウェアでもハードウェアでもかけることができます。DMAの転送が終了すると、DMAはCPUに割り込みをかけて、転送終了を知らせます。アービトレーションの種類(CPUとのバス権の共用)DMAは便利ですが万能ではありません。バスは1本しかありませんので、DMAがバスを使っている時には、CPUはバスが使えなくなります。DMAが大量のデータ転送を行うために、長時間バスを使い続けるとCPUはその間、ずっとバスが使用できなくなり、演算した結果をメモリに格納できなくなるような不具合が発生します。そこで、CPUとDMAの間で効率良くバスを使う調整が必要になります。これをバスアービトレーションと呼びます。バスを使用する権利をバス権といいます。バスアービトレーションは、誰がバス権を持つかを調整(調停)することです。バスアービトレーションの方式には、いくつか種類があります。代表的なものは、ラウンドロビン、サイクルスチール、バーストです(図3参照)。(クリックで拡大)ラウンドロビンは順番にバス権を譲っていく方式です。バスマスターが2つの場合、CPUがバスを使ったら、次のバスサイクルはDMAが使い、その次はCPUが使うという風に交代でバスを使います。サイクルスチールと呼ばれる方式では、CPUがメモリにアクセスしていないバスサイクルの間をぬって、DMAがバスを使う方式です。バースト方式は、一定の時間、1つのバスマスターがバス権を占有する方式です。優先度の高いデータを急いで転送したい時に使います。DMAが優先度の高いデータを10個送る場合に、この10個のデータ全部を転送し終わるまで、DMAがバスを占有します。LLC.ITmediaはアイティメディア株式会社の登録商標です。