Direct Memory Access Direct Memory Accessの概要

Direct Memory Access

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/05/05 23:18 UTC 版)

コンピュータにDMAが無い場合はデータ転送はCPUが行うが、DMAを使用している場合、CPUに代わりDMAがデータを転送する[1]。DMAを制御する装置をDMAコントローラ(DMA Controller, DMAC)という。

概要

DMAを使うと高速のデータ転送が可能になり、コンピュータの性能を総合的に上げることができる[1]。 DMAがあれば、CPUは、データ転送の仕事はDMACにまかせて、その時間をCPUにしかできない仕事に使うことができる[1][2][注釈 1]

ただし、DMAは1本しかないバスをCPUと分け合って使うため、バスの使用権の調整が必要となる[1]。 このバスの使用権の調整は英語で「バスアービトレーション(Bus Arbitration)」といい、「バス権の調停」と訳されている[1]。→#バスアービトレーション

DMAでのデータ転送は、通常は、DMACが行う。CPUはDMACに、データの転送元・転送先や転送モードやデータ数などを指定し、その後に転送開始のトリガーを送るだけである[3][1]。トリガーを送れば、CPUは他のタスクを開始することができる[3]。DMACの側は、データ転送の仕事を完了したら、CPUに割り込みをかけて転送終了を知らせる[1]。またデータ転送でエラーが生じた場合も、CPUに割り込みをかけて知らせる[3]

AMD DirectGMA はDMAの一形態である。

なお、昔のISAバス方式では、CPUはマザーボードチップセットに内蔵されたDMAコントローラに命令を送る方式であった。現代のPCIバスでは、「Bus mastering DMA」すなわちI/O機器の側がPCIバスの制御を任されDMA転送をすべて司る方式が採用されている。一方、組込システムでは、CPU内でバスに直結されたDMAエンジンがチップ内のバスを操作してDMAを実現するものがある。

ネットワークのパケット送信や音楽再生やビデオ配信などの際には継続的な読み出しを必要とし、DMAは専用の組み込みチップで使われている。またDMAは、マルチコアでもクラスタリングでも効果を発揮する。この場合、DMA通信の状態通知ピンとして、受信状態を示すHOLDピンと、送信状態を示すHLDAピンが存在する。

バスアービトレーション

DMAのバスアービトレーションの方式の代表的なものとしては、ラウンドロビンサイクルスチールバーストがある。ラウンドロビンはバス権を順番に譲っていく方式。サイクルスチール方式では、CPUがメモリにアクセスしていないバスサイクルの間にDMAがバスを使う。バースト方式は、一定時間、1つのバスマスターがバス権を占有する方式で、優先度の高いデータを急いで転送したい時に使う。[4]

サイクルスチールモードDMA
CPUからメモリBUS制御を渡してもらい、1~2ワードずつ転送する方法[5]。CPUは隙間なくメモリBUSを利用するとは限らないので、CPUが処理を進めるのと並行したデータ転送が可能となり得る。
バーストモードDMA(ブロック転送と呼ぶ資料[5]もある)
CPUからメモリBUS制御を渡してもらい、データを一気に転送する方法[5]

使用上の注意

DMAの使用上の注意点として挙げられる主なもののひとつはオーバーランで、もう1つはキャッシュと併用するシステムのメモリの一貫性である。

オーバーラン

オーバーランとは通信機能を使用する時など、受信バッファに取り込まれたデータをCPUやDMAが読み出さないうちに次のデータを取り込んでしまい、1つ前の受信データが失われてしまうこと。特にサイクルスチールやバースト方式では、CPUやDMAがバス使用権を待つ時間が長くなり、待つ間に通信機能が次のデータを受け取ってしまうとオーバーランが発生する。ラウンドロビン方式だと、バス使用権の待ち時間が短く、オーバーランは発生しにくい。[6]

データの一貫性問題

キャッシュを使ったシステムでは、キャッシュが持っているデータと同じアドレスのメインメモリをDMAが書き換えてしまうと、キャッシュとメインメモリのデータの一貫性が失われてしまうので、一貫性を管理する何らかの方法が必要となる[6]

仮想記憶でのページ境界

また、仮想記憶アドレス上で DMA を利用する場合、ページ境界をまたぐことがないようにする必要がある。境界をまたいだ場合、後続の論理アドレスページに対応する物理アドレスページが同様に連続した後続領域に確保されるとは限らないからである[7]


  1. ^ a b c d e f g h [https://edn.itmedia.co.jp/edn/articles/1608/18/news015.html EDN, 菅井賢「DMAのメリットって何?」
  2. ^ Tech Target, Direct Memory Access
  3. ^ a b c Linda Null, Julia Lobur(2006), The Essentials of Computer Organization and Architecture, p.335, Direct Memory Access
  4. ^ [https://edn.itmedia.co.jp/edn/articles/1608/18/news015_2.html 「DMAって何 p.2」
  5. ^ a b c Hayes, John P. (1978,1979). Computer Architecture and Organization. McGRAW-HILL INTERNATIONAL BOOK COMPANY. pp. 426-427. ISBN 0-07-027363-4 
  6. ^ a b https://edn.itmedia.co.jp/edn/articles/1608/18/news015_3.html
  7. ^ Hennessy, John L.; Patterson, David A. (1994). Computer Organization and Design: The Hardware/Software Interface. Morgan Kaufmann Publishers. p. 574. ISBN 1-55860-281-X 
  8. ^ CQ「H8-MPUを知る」
  9. ^ 川村 清『PC-9801解析マニュアル[第0巻]』秀和システムトレーディング株式会社、1983年6月30日、199-236頁。 
  10. ^ pPD71037 Direct Memory Access (DMA) Controller”. 2024年1月7日閲覧。
  11. ^ µPD71071 DMA Controller”. p. 940(5g1). 2024年4月26日閲覧。
  1. ^ 外部入出力(I/O)や周辺装置のデータ転送速度は通常、RAMよりも桁違いに遅いので、DMAが使われる以前は、CPUはデータ転送の仕事の間、ほとんどの時間待っていなければならず、その間は他の仕事ができなかった。


「Direct Memory Access」の続きの解説一覧



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Direct Memory Access」の関連用語

Direct Memory Accessのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Direct Memory Accessのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのDirect Memory Access (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2024 GRAS Group, Inc.RSS