Direct Memory Access
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/05/05 23:18 UTC 版)
歴史
DMAはPDPシリーズにおいて採用されていた。
1970年代にリリースされた数MHzで動作するマイクロプロセッサでは、CPUによるデータ転送でハードディスク等の10MB/秒程度の転送速度を発揮する事は困難で、専用のコントローラでデータ転送を行う必要があった。このコントローラは、データ転送を高速に行う機能に特化したCPUであったともいえる。たとえばZ80にはZ80DMA、MC68000には、MC68450などのDMAコントローラ(DMAC)が用意されていた。
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待ち時間が発生しシステム性能に悪影響を与えた。
- ^ a b c d e f g h [https://edn.itmedia.co.jp/edn/articles/1608/18/news015.html EDN, 菅井賢「DMAのメリットって何?」
- ^ Tech Target, Direct Memory Access
- ^ a b c Linda Null, Julia Lobur(2006), The Essentials of Computer Organization and Architecture, p.335, Direct Memory Access
- ^ [https://edn.itmedia.co.jp/edn/articles/1608/18/news015_2.html 「DMAって何 p.2」
- ^ 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
- ^ a b https://edn.itmedia.co.jp/edn/articles/1608/18/news015_3.html
- ^ 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
- ^ CQ「H8-MPUを知る」
- ^ 川村 清『PC-9801解析マニュアル[第0巻]』秀和システムトレーディング株式会社、1983年6月30日、199-236頁。
- ^ “pPD71037 Direct Memory Access (DMA) Controller”. 2024年1月7日閲覧。
- ^ “µPD71071 DMA Controller”. p. 940(5g1). 2024年4月26日閲覧。
- Direct Memory Accessのページへのリンク