Direct memory accessとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > デジタル大辞泉 > Direct memory accessの意味・解説 

ダイレクト‐メモリーアクセス【direct memory access】

読み方:だいれくとめもりーあくせす

ディー‐エム‐エー(DMA)


ディー‐エム‐エー【DMA】

読み方:でぃーえむえー

《direct memory access》コンピューターシステム内における、データ転送方法の一。ダイレクトメモリーアクセス


DMA

フルスペル:Direct Memory Access
読み方ディーエムエー
別名:ダイレクトメモリアクセス

DMAとは、CPU介さずに、拡張カードメモリー間、あるいは周辺装置同士の間で、直接データー転送行なう方法のことである。 また、このような機能備えたLSIのこと。以前は、大量データ転送するときにDMAを利用すると、データ一括して処理されるので、CPUデータ直接転送するよりも速度向上したまた、その間にほかの作業CPU割り当てることで全体として効率をあげることが可能であったその後CPU高速化していくのに対してDMAコントローラー旧来のパフォーマンスのままだったため、現在ではほとんど用いられていない

半導体メモリのほかの用語一覧
技術・産業:  BGA  CMOS  CSP  DMA  HyperMemory  ハイアクティブ  バイポーラトランジスタ

Direct Memory Access

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/02/25 16:41 UTC 版)

Direct Memory Access(ダイレクトメモリーアクセス、DMA)は、CPUを介さず、バスを使いメモリとメモリ、またはメモリとI/O(周辺デバイス等)の間で直接的にデータ転送を行う機能。[1]

コンピュータに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はマザーボードチップセットに内蔵されたDMACに命令を送る方式であった。現代のPCIバスでは、「Bus mastering DMA」すなわちI/O機器の側がPCIバスの制御を任されDMA転送をすべて司る方式が採用されている。一方、組込システムでは、SoC内でバスに直結されたDMACがSoC内のバスを操作してDMAを実現するものがある。また、必要な転送性能や許容可能な消費電力等の使用条件に応じて複数のバスを使い分けることがあるが、この場合はDMACも各バスに対応したものを選ぶ必要がある。

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

DMAの使用を前提とする場合、データバスのビット幅を必ずしもCPUのデータビット幅に合わせる必要はない。特に、データバスのビット幅をCPUのデータビット幅よりも広く取ることにより、CPU経由よりもさらに広帯域のデータ転送が可能となる。例として、AXIバスは2003年リリースの初版から最大1024ビット幅のデータバスをサポートしている。当時のCPUデータ幅は32ビットが主流であり、AXIバスとよく組み合わされているARMアーキテクチャにてAArch64が発表されるよりも8年前のことであった。[注釈 2]

バスアービトレーション

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]

データの一貫性問題

キャッシュを使ったシステムでは、キャッシュが持っているデータとキャッシュラインを共有するメインメモリをCPUとDMAのどちらか、ないしは両者が書き換えてしまうと、キャッシュとメインメモリのデータの一貫性が失われてしまうので、一貫性を管理する何らかの方法が必要となる[6]。同じアドレスのメモリをCPUとDMAのいずれか、ないしは両者が更新してはならないことは自明だが、同一キャッシュライン上にDMA転送対象のメモリとそれ以外のメモリが混在している場合にも問題が発生することに注意を要する。

仮想記憶下での物理メモリページ境界

物理メモリアドレスをメモリのアドレッシングに用いる DMAC を使用して DMA を実行する場合、物理メモリのページ境界をまたがないようにする必要がある。境界をまたいだ場合、後続の論理アドレスページに対応する物理アドレスページが同様に連続した後続領域に確保されるとは限らないからである[7]。DMAC がベクトルI/O英語版をサポートしている場合は、各物理アドレスページ毎に DMA 転送を設定し、それらを連続実行することにより物理メモリのページ境界をまたいだ DMA 転送が可能となる。

割り込みの増加

DMAC は一般に転送終了を CPU への割り込みにより通知するが、それとは別にデータ転送の端点となるデバイスが転送終了をデバイス独自の割り込みにより CPU へ通知できる場合がある。この場合、あるデータ転送において DMAC と端点デバイスの両者からほぼ同時に転送終了の割り込みが発生することや、いずれの割り込み処理にあっても同じデータへアクセスしなければならないことに起因する排他制御が必要となるため、CPU やソフトウェア上の負荷が増える。割り込みの負荷を軽減するには、DMAC ないしは端点デバイスのどちらかの割り込みを抑制する必要がある。これが実現できるかどうか、およびどちらの割り込みを抑制するのが良いかは、端点デバイスの仕様や DMA 転送の具体的な手順に依存する。

歴史

DMAはPDPシリーズにおいて採用されていた。

1970年代にリリースされた数MHzで動作するマイクロプロセッサでは、CPUによるデータ転送ハードディスク等の10MB/秒程度の転送速度を発揮する事は困難で、専用のコントローラでデータ転送を行う必要があった。このコントローラは、データ転送を高速に行う機能に特化したCPUであったともいえる。たとえばZ80にはZ80DMA、MC68000には、MC68450などのDMAコントローラ(DMAC)が用意されていた。

また、日立のH8にもDMACが存在している[8]

Intel 80286(APX286。1982年2月発表)などでは、当時通常のI/Oを制御するためには充分な動作速度だったことや、主流のパーソナルコンピュータにおいてi8249等の低速なDMACしか搭載されておらず、他に適当なDMACが存在しなかったことなどから、DMAはあまり使用されなくなった。

1990年代に、CPUの世代がPentiumになり充分に高速になると、今度は、低速なI/Oの管理がボトルネックとなったため、いわゆるチップセットにI/O専用の高速なDMACが搭載されたり、周辺機器制御LSIが簡単なDMA機能を持つようになり、再度DMAが活用されるようになった。Pentium以降主流となったPCIバスでは、バスマスタリングとしてDMAが実装されている。

高機能DMACの登場

初期のDMACは単純に指定されたアドレス範囲を指定されたメモリもしくはポートに入出力する機能のみを備えていた。しかしオペレーティングシステムが普及し、ハードディスクへのI/OにDMACを使う様になってから、DMACには「データブロックを分割する(スキャッタリング)」「データブロックを集約する(ギャザリング)」を行う機能が要求された。MC63450 DMAC等には、DMACがリンクリストを読み取って転送内容を分割したり集約する機能が搭載されている。PC/AT互換機向けのSCSIホストアダプタカード等では、コントローラチップに集積されているDMACがこの機能を担当していた。スキャッタリング・ギャザリング機能が無い場合CPUは最低でも1セクタ分ずつメモリ・メモリ間転送を行わなければならず、またDMACに読み取らせるメモリ領域が転送完了するまで使用できないため、I/O時のCPU負荷上昇とI/O待ち時間が発生しシステム性能に悪影響を与えた。

DMAC、DMA機能を持つLSIおよびIP

代表的なものを挙げる。

  • Z80DMA
  • μPD8237AC-5(i8237A英語版-5互換)[9]
  • MC68450
  • i430など、PentiumCPU以降対応のチップセット
  • μPD71037[10]
  • μPD71071[11]
  • CoreLink DMA-330[12] マイクロプログラムが必要で、その実装によりカスタマイズが可能。

脚注

  1. ^ a b c d e f g h 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. ^ 「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日閲覧。
  12. ^ CoreLink DMA-330 DMA Controller Technical Reference Manual”. ARM. 2024年8月12日閲覧。

注釈

  1. ^ 外部入出力(I/O)や周辺装置のデータ転送速度は通常、RAMよりも桁違いに遅いので、DMAが使われる以前は、CPUはデータ転送の仕事の間、ほとんどの時間待っていなければならず、その間は他の仕事ができなかった。
  2. ^ ARM以外を含めても、x64はこれを初採用したAMD OpteronがAXIバスの初版とほぼ同時期にリリースされたばかりで、その他のCPUは一部のRISCを除いて32ビットデータ幅が大半だった。

関連項目

外部リンク


「Direct memory access」の例文・使い方・用例・文例

Weblio日本語例文用例辞書はプログラムで機械的に例文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。


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

辞書ショートカット

すべての辞書の索引

「Direct memory access」の関連用語

Direct memory accessのお隣キーワード
検索ランキング

   

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



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

   
デジタル大辞泉デジタル大辞泉
(C)Shogakukan Inc.
株式会社 小学館
IT用語辞典バイナリIT用語辞典バイナリ
Copyright © 2005-2025 Weblio 辞書 IT用語辞典バイナリさくいん。 この記事は、IT用語辞典バイナリの【DMA】の記事を利用しております。
ウィキペディアウィキペディア
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の元に提供されております。
Tanaka Corpusのコンテンツは、特に明示されている場合を除いて、次のライセンスに従います:
 Creative Commons Attribution (CC-BY) 2.0 France.
この対訳データはCreative Commons Attribution 3.0 Unportedでライセンスされています。
浜島書店 Catch a Wave
Copyright © 1995-2025 Hamajima Shoten, Publishers. All rights reserved.
株式会社ベネッセコーポレーション株式会社ベネッセコーポレーション
Copyright © Benesse Holdings, Inc. All rights reserved.
研究社研究社
Copyright (c) 1995-2025 Kenkyusha Co., Ltd. All rights reserved.
日本語WordNet日本語WordNet
日本語ワードネット1.1版 (C) 情報通信研究機構, 2009-2010 License All rights reserved.
WordNet 3.0 Copyright 2006 by Princeton University. All rights reserved. License
日外アソシエーツ株式会社日外アソシエーツ株式会社
Copyright (C) 1994- Nichigai Associates, Inc., All rights reserved.
「斎藤和英大辞典」斎藤秀三郎著、日外アソシエーツ辞書編集部編
EDRDGEDRDG
This page uses the JMdict dictionary files. These files are the property of the Electronic Dictionary Research and Development Group, and are used in conformance with the Group's licence.

©2025 GRAS Group, Inc.RSS