データ復旧比較.jp > データ復旧用語集 > Direct Memory Access

◆Direct Memory Access|詳細|データ復旧をサポートする会社を徹底検証!

Direct Memory Access

Direct Memory Access (DMA) とは、プログラムされた機械語の命令群の実行によってアキュムレータなどを介する方法によらず、メモリとメモリまたはメモリとI/Oデバイスの間で直接データを転送することである。

目次

概要

現代でのDMAの重要性は、つまるところCPUの転送速度の枷を外したところにある。DMAの技術が発生する以前は、CPUはデータの転送時間のあいだ待たなくてはならず、その間は他の作業をこなすことはできなかった。外部入出力(I/O)の転送速度はRAMよりも遅かったことがこの原因である。DMAがあれば、CPUは転送時間を有意にタスクへと割くことができる。この利点は組み込み向けプロセッサにおいても同様に効果があった。ただし、転送バスは一部使用中となる。したがって、DMAによって転送時間を有効に使えるとしても、それはプログラムがまさに今DMA転送中のデータを使用しないときに限られてしまう。

DMA転送は、CPUによって行われるものではない。CPUはDMA転送命令を実行するが、これはつまるところ、マザーボードのチップセットに内蔵されたDMAコントローラに、転送開始を指示しているだけである。この形式は過去のISAバスによってみられた方式であるが、現代のPCIバスにはより優れた設計思想が組み込まれており、「Bus mastering DMA」、すなわち、I/O機器の側がPCIバスの制御を任され、DMA転送をすべて司る。一方組込デバイスでは、CPU内でバスに直結されたDMAエンジンがチップ内のバスを操作してDMAを実現する。

DMAの利点は、継続的な読み出しを必要とする、ネットワークのパケット送信や音楽再生やビデオ配信などの機能を、データ通信のためにリソースを割くことなく行うため、その専用の組み込みチップで使われている。また同様に、CPUの多コア化にもとても有効である。1チップ上での多コア化だけでなく、大規模なコンピュータでのクラスタ化にも有用である。この際、DMA通信の状態通知ピンとして、受信状態を示すHOLDピンと、送信状態を示すHLDAピンが存在する。

歴史

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

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

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待ち時間が発生しシステム性能に悪影響を与えた。

DMAの方式

バーストモードDMA
CPUから制御を奪い、データを一気に転送する方法。
サイクルスチールモードDMA
CPUがメモリにアクセスしていない時にDMAを行なう方法。

代表的なDMAC、DMA機能を持つLSI

  • Z80DMA
  • MC68450
  • i430など、PentiumCPU以降対応のチップセット

関連項目

  • バスマスタリング

外部リンク

  • Microcomputer Interfacing(英文)(PDFファイル)

最終更新 2012年3月31日 (土) 06:23 (日時は個人設定で未設定ならばUTC)。
【Direct Memory Access】変更履歴

Direct Memory Access|詳細:データ復旧の用語集をご覧の皆様へ

パソコンやデジカメなどのデータが消えた!パソコンが急に起動しなくなった!など、急なトラブルであなたの大切なデータが消えてしまったことはございませんか?そんな突然のトラブルからデータ復旧してくれるのが、データ復旧サービスです。データ復旧比較.jpの用語集ではデータ復旧に関する様々なキーワード「例:Direct Memory Access」が検索できます。

ご利用上の注意

  • 本用語集に掲載される用語は、百科事典「ウィキペディア日本語版」からプログラムにより自動的に抽出・表示されるため、一部ふさわしくない用語が表示される場合があります。
  • 当社は、本用語集を通じて提供される情報に関する、有用性、適合性、完全性、正確性、安全性、合法性、最新性等について、いかなる責任も負わないものとします。
  • 当社は、お客様が本用語集をご利用されることによって発生した直接・間接の損害に対して、いかなる責任も負わないものとします。