(57)【要約】【課題】ＤＭＡ転送システム、ＤＭＡコントローラ及びＤＭＡ転送方法に関し、ＤＭＡ転送に使用されるデータ伝送路の伝送効率を向上させる。【解決手段】ＤＭＡ転送を行う各装置Ａ，Ｂ，・・・Ｎ内に、ライト転送のＤＭＡコマンドを実行するＤＭＡコントローラＤＭＡａ，ｂ，・・・ｎを設け、該ＤＭＡコントローラＤＭＡａ，ｂ，・・・ｎは、各装置からのＤＭＡコマンド登録用レジスタを備え、該レジスタには、転送ワード数、転送データの送信元アドレス及び送信先アドレスを登録する。ＤＭＡコントローラＤＭＡａ，ｂ，・・・ｎは、リード転送のＤＭＡコマンドに対して、該リード転送のデータの送信元の装置内のＤＭＡコントローラに、該リード転送のＤＭＡコマンドを送信し、他装置のＤＭＡコントローラから受信されたリード転送のＤＭＡコマンドを、該ＤＭＡコマンド元の装置へのライト転送のＤＭＡコマンドに変換してＤＭＡ転送を行う。【選択図】図１
2008146541.tif 000002
【特許請求の範囲】
【請求項１】
データ伝送路を介して複数の装置が接続され、該複数の装置間でＤＭＡ転送を行うＤＭＡ転送システムにおいて、
前記ＤＭＡ転送を行う各装置内に、ライト転送のＤＭＡコマンドを実行するＤＭＡコントローラを設け、
前記ＤＭＡコントローラは、リード転送のＤＭＡコマンドが設定された場合に、該リード転送のデータの送信元の装置内のＤＭＡコントローラに、該リード転送のＤＭＡコマンドを送信する手段と、
他装置のＤＭＡコントローラから受信されたリード転送のＤＭＡコマンドを、該ＤＭＡコマンドの送信元の装置へのライト転送のＤＭＡコマンドに変換してＤＭＡ転送を行う手段と、
を備えたことを特徴とするＤＭＡ転送システム。
【請求項２】
前記ＤＭＡコントローラに、自装置内又は他装置から設定された複数のＤＭＡコマンドを格納するＤＭＡコマンドＦＩＦＯメモリと、
前記ＤＭＡコマンドＦＩＦＯメモリに格納されたＤＭＡコマンドを、先入れ先出し式の順で取り出して順次実行する手段と、
前記他装置から受信されたＤＭＡコマンドに対して、外部登録ビットを前記ＤＭＡコマンドＦＩＦＯメモリ内に設定し、該外部登録ビットが立てられたＤＭＡコマンドの実行完了時に、転送データの送信先の装置に対して、ＤＡＮコマンドの実行完了の旨のメッセージを送信する手段と、
を備えたことを特徴とする請求項１に記載のＤＭＡ転送システム。
【請求項３】
前記ＤＭＡコマンドＦＩＦＯメモリに、ＤＭＡコマンドチェーンとして実行順に格納される複数のＤＭＡコマンドに対して、チェーンの最後のＤＭＡコマンド以外に、後続のＤＭＡコマンドが存在することを示すチェーンビットを設定する手段と、
前記チェーンビットが設定されず、かつ、前記外部登録ビットが設定されたＤＭＡコマンドの実行完了時に、転送データの送信先の装置に対して、ＤＡＮコマンドの実行完了の旨のメッセージを送信する手段と、
を備えたことを特徴とする請求項２に記載のＤＭＡ転送システム。
【請求項４】
データ伝送路を介して接続された他の装置との間でＤＭＡ転送を行う装置内に設けられ、ライト転送のＤＭＡコマンドを実行する機能を有するＤＭＡコントローラにおいて、
リード転送のＤＭＡコマンドが設定された場合に、該リード転送のデータの送信元の装置内のＤＭＡコントローラに、該リード転送のＤＭＡコマンドを送信する手段と、
他装置のＤＭＡコントローラから受信されたリード転送のＤＭＡコマンドを、該ＤＭＡコマンドの送信元の装置へのライト転送のＤＭＡコマンドに変換してＤＭＡ転送を行う手段と、
を備えたことを特徴とするＤＭＡコントローラ。
【請求項５】
データ伝送路を介して接続された装置間でのＤＭＡ転送方法において、
前記各装置内に設けたライト転送のＤＭＡコマンドを実行するＤＭＡコントローラに、リード転送のＤＭＡコマンドが設定された場合に、該リード転送のデータの送信元の装置内のＤＭＡコントローラに、該リード転送のＤＭＡコマンドを送信するステップと、
他装置のＤＭＡコントローラから受信されたリード転送のＤＭＡコマンドを、該ＤＭＡコマンドの送信元の装置へのライト転送のＤＭＡコマンドに変換してＤＭＡ転送を行うステップと、
を含むことを特徴とするＤＭＡ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリとメモリ又はメモリとＩ／Ｏデバイス等の間で直接データを転送するＤＭＡ（Direct Memory Access）転送に係り、特に、データ伝送路（バス等）で接続された装置間でＤＭＡ転送を行うシステムにおいて、ＤＭＡ転送に使用されるデータ伝送路の伝送効率を向上させるＤＭＡ転送システム、ＤＭＡコントローラ及びＤＭＡ転送方法に関する。
【背景技術】
【０００２】
図６は、データ伝送路（外部バス）６−１で相互に接続され、他装置との間でデータをＤＭＡ転送する独立した複数の装置Ａ，Ｂ，Ｃ，・・・Ｎから成る、比較的大規模な構成の従来のシステム構成例を示している。図中、ＢＵＳｘ（ｘは、ａ，ｂ，ｃ，・・・ｎ、以下同様）は、データ伝送路（外部バス）６−１と装置内部のバスとのインタフェースである。
【０００３】
ここで、図６に示すように、複数の装置に接続され、複数の装置間でデータ転送に共用される伝送路をバスと称する（以下同様）。また、添え字ａ，ｂ，ｃ，・・・ｎは、それぞれ装置Ａ，Ｂ，Ｃ，・・・Ｎに備えられたものであることを示している（以下同様）。
【０００４】
ＤＭＡｘは、リード（読み出し）転送及びライト（書き込み）転送の制御を行うＤＭＡコントローラ、ＭＥＭｘは、データ記憶装置（メモリ、以下同様）、ＣＰＵｘは、装置全体を制御するための中央処理装置（Central Processing Unit）で、ＤＭＡコントローラ（ＤＭＡｘ）にＤＭＡコマンドを設定する機能を有する。
【０００５】
なお、データ伝送路（外部バス）６−１で接続されている各装置Ａ，Ｂ，Ｃ，・・・Ｎは、上述のＣＰＵｘ，ＭＥＭｘ，ＤＭＡｘ，ＢＵＳｘの機能を全て揃えて備えているとは限らず、例えば装置Ｃのように、ＤＭＡコントローラ（ＤＭＡｘ）を備えていない場合もあり得る。また、データ伝送路（外部バス）６−１のバスの形式によっては、バスの使用権を調停するバスアービタを備える必要がある場合もある。
【０００６】
一例として、装置ＡのＤＭＡコントローラ（ＤＭＡａ）を使用して、装置Ｂのデータ記憶装置（ＭＥＭｂ）のデータを、装置Ａのデータ記憶装置（ＭＥＭａ）にＤＭＡ転送（データリード転送）する場合の手順を、図７を参照して説明する。まず、装置Ａの中央処理装置（ＣＰＵａ）は、自装置のＤＭＡコントローラ（ＤＭＡａ）に、ＤＭＡコマンド（ＤＭＡ転送に必要なパラメータ）を、通常複数回設定して送出し、ＤＭＡ転送をスタートさせる（７−１）。
【０００７】
装置ＡのＤＭＡコントローラ（ＤＭＡａ）は、装置Ｂのデータ記憶装置（ＭＥＭｂ）のアドレスを送信し、該アドレスからデータ（１ワード分）のリード（読み出し）を行う（７−２）。リード（読み出し）転送は、外部バスを介した装置Ｂのデータ記憶装置（ＭＥＭｂ）へのアドレス送信と、同じく外部バスを介した装置Ｂのデータ記憶装置（ＭＥＭｂ）からのデータ受信の、伝送方向を異にする外部バス上での２つの転送フェーズを必要とする。
【０００８】
次に、装置ＡのＤＭＡコントローラ（ＤＭＡａ）は、装置Ｂのデータ記憶装置（ＭＥＭｂ）から取得したデータ（１ワード分）を、装置Ａのデータ記憶装置（ＭＥＭａ）へ内部バスを介して書き込むライト転送を行う（７−３）。そして、読み出すべきデータが残っている場合は、上述の手順（７−２）及び（７−３）と同様の動作手順によるデータ転送を、転送ワード数分繰り返す（７−４）。
【０００９】
装置ＡのＤＭＡコントローラ（ＤＭＡａ）は、読み出すべきデータを全て装置Ｂのデータ記憶装置（ＭＥＭｂ）から読み出し終えると、ＤＭＡ転送（データリード転送）が完了した旨を、自装置内の中央処理装置（ＣＰＵａ）に通知する（７−５）。なお、図７において、外部バスを使用したデータ転送は太線矢印、内部バスを使用したデータ転送は細線矢印で示している（以下、同様）。
【００１０】
次に、装置ＡのＤＭＡコントローラ（ＤＭＡａ）を使用して、装置Ａのデータ記憶装置（ＭＥＭａ）のデータを、装置Ｂのデータ記憶装置（ＭＥＭｂ）にＤＭＡ転送（データライト転送）する手順を、図８を参照して説明する。まず、装置Ａの中央処理装置（ＣＰＵａ）は、自装置内のＤＭＡコントローラ（ＤＭＡａ）にＤＭＡコマンド（ＤＭＡに必要なパラメータ）を、通常複数回設定して送出し、ＤＭＡ転送をスターとさせる（８−１）。
【００１１】
装置ＡのＤＭＡコントローラ（ＤＭＡａ）は、自装置のデータ記憶装置（ＭＥＭａ）から転送すべきデータ（１ワード分）を、内部バスを介して読み出す（７−２）。このリード（読み出し）転送には、内部バスを介した装置Ａのデータ記憶装置（ＭＥＭａ）へのアドレス送信と、同じく内部バスを介したデータ記憶装置（ＭＥＭａ）からのデータ受信の、内部バス上での２つの転送フェーズを必要とする。
【００１２】
次に装置ＡのＤＭＡコントローラ（ＤＭＡａ）は、装置Ｂのデータ記憶装置（ＭＥＭｂ）に、装置Ａのデータ記憶装置（ＭＥＭａ）から取得したデータ（１ワード分）のライト（書き込み）を行う（８−３）。そして、書き込むべきデータが残っている場合は、上記の手順（８−２）及び（８−３）と同様の動作手順によるデータ転送を、転送ワード数分繰り返す（８−４）。
【００１３】
装置ＡのＤＭＡコントローラ（ＤＭＡａ）は、書き込むべきデータの全てを装置Ｂのデータ記憶装置（ＭＥＭｂ）へ書き込み終えると、ＤＭＡ転送（データライト転送）が完了した旨を、自装置内の中央処理装置（ＣＰＵａ）に通知する（８−５）。
【００１４】
リード転送とライト転送とを比較すると、外部バスの使用に際して、ライト転送では、ライトアドレスとライトデータとを同一伝送方向の外部バスで送信することで転送が完了するのに対し、リード転送では、データ要求側がリードデータを入手するまでに、下記に示す手順が必要となり、この間外部バスを使用（占有）する。
【００１５】
（１）データ要求側は、リードアドレスをデータソース側に外部バスを用いて送信する。（２）データソース側は、指定されたリードアドレスのデータを読み出して用意する。
（３）データソース側は、用意したデータをデータ要求側に外部バスを用いて送信する。
【００１６】
このように、同じデータ量のＤＭＡ転送を行う場合でも、リード転送によるＤＭＡ転送より、ライト転送によるＤＭＡ転送の方が、ライトアドレス及びライトデータを同一伝送方向の外部バスのみを用いて転送が完了するため、データ転送方向の切替えや送信データの解釈等に費やされる時間が節約され、外部バスの占有時間が短縮されることになる。
【００１７】
本発明に関連する先行技術文献として、下記の特許文献１には、処理装置と入出力制御装置間のデータ転送において、入出力制御装置側に、リード／ライト動作のモード切換機能をもたせ、一度のプログラム命令により両方向のデータ転送を１ワード単位に交互に行わせ、指定されたデータ語数の終了にて、リード／ライト両方向の動作を同時に終結させることにより、プログラムの起動回数を少なくし、かつ処理装置と入出力制御装置間のデータ転送効率を向上させるデータ転送方式が記載されている。
【００１８】
また、下記の特許文献２には、ネットワークを介して他の情報処理装置と接続された場合、他の情報処理装置から、その動作状態に関する情報を収集して装置情報テーブルを作成し、所定のコマンドが発生した際には、当該コマンドの実行に要する資源に関する情報と、装置情報テーブルの動作状態に関する情報とを比較して、当該コマンドを実行可能な情報処理装置を特定し、複数の情報処理装置の間で分散処理を確実かつ効果的に実行されるようにした情報処理システム等について記載されている。
【特許文献１】特開昭５４−１２４６４４号公報
【特許文献２】特開２００５−２５１１６３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１９】
データ伝送技術は情報機器や情報処理システムの要となる技術の一つで、データ伝送量は年々増加し、データ伝送の高速化のために高価なデータ伝送路の使用が求められている。本発明は、データ伝送路で接続された装置間でＤＭＡ転送を行うシステムにおいて、データ伝送路の使用効率、伝送効率を向上させ、データ伝送の高速化を図ることができるＤＭＡ転送システム、ＤＭＡコントローラ及びＤＭＡ転送方法を提供する。
【課題を解決するための手段】
【００２０】
本発明は、ＤＭＡ転送を行う各装置内に、ライト転送のＤＭＡコマンドを実行するＤＭＡコントローラを設け、該ＤＭＡコントローラは、リード転送のＤＭＡコマンドが設定された場合に、該リード転送のデータの送信元の装置内のＤＭＡコントローラに、該リード転送のＤＭＡコマンドを送信し、他装置のＤＭＡコントローラから受信されたリード転送のＤＭＡコマンドを、該ＤＭＡコマンドの送信元の装置へのライト転送のＤＭＡコマンドに変換してＤＭＡ転送を行うことを特徴とする。
【００２１】
また、前記ＤＭＡコントローラに、自装置内又は他装置から設定された複数のＤＭＡコマンドを格納するＤＭＡコマンドＦＩＦＯメモリを備え、該ＤＭＡコマンドＦＩＦＯメモリに格納されたＤＭＡコマンドを、先入れ先出し式の順で取り出して順次実行し、前記他装置から受信されたＤＭＡコマンドに対して、外部登録ビットを前記ＤＭＡコマンドＦＩＦＯメモリ内に設定し、該外部登録ビットが立てられたＤＭＡコマンドの実行完了時に、転送データの送信先の装置に対して、ＤＡＮコマンドの実行完了の旨のメッセージを送信することを特徴とする。
【００２２】
また、前記ＤＭＡコマンドＦＩＦＯメモリに、ＤＭＡコマンドチェーンとして実行順に格納される複数のＤＭＡコマンドに対して、チェーンの最後のＤＭＡコマンド以外に、後続のＤＭＡコマンドが存在することを示すチェーンビットを設定し、該チェーンビットが設定されず、かつ、前記外部登録ビットが設定されたＤＭＡコマンドの実行完了時に、転送データの送信先の装置に対して、ＤＡＮコマンドの実行完了の旨のメッセージを送信することを特徴とする。
【発明の効果】
【００２３】
本発明によれば、リード転送を行う場合、リード転送のＤＭＡコマンド自体をデータの送信元の装置のＤＭＡコントローラに転送し、送信元の装置のＤＭＡコントローラでライト転送としてＤＭＡ転送を実行することにより、ＤＭＡ転送に使用するデータ伝送路の使用時間を削減することができ、データ伝送路の使用効率を向上させることができる。
【００２４】
また、自装置内又は他装置から設定された複数のＤＭＡコマンドを格納するＤＭＡコマンドＦＩＦＯメモリを設け、該ＤＭＡコマンドＦＩＦＯメモリに格納されたＤＭＡコマンドを、先入れ先出し式の順で取り出して順次実行することにより、自装置及び他装置から設定されたＤＭＡコマンドの競合制御を容易に行うことが可能となる。
【００２５】
また、ＤＭＡコマンドＦＩＦＯメモリに、ＤＭＡコマンドチェーンとして複数のＤＭＡコマンドを実行順に格納し、該ＤＭＡコマンドにチェーンビットを設定可能にすることにより、ＤＭＡコマンドチェーンを容易に組むことが可能になる。
【発明を実施するための最良の形態】
【００２６】
図１は、データ伝送路（外部バス）６−１で相互に接続され、他装置との間でデータをＤＭＡ転送する独立した複数の装置Ａ，Ｂ，Ｃ，・・・Ｎから成る、本発明を適用した第１のシステム構成例を示している。図中、ＢＵＳｘ（ｘは、ａ，ｂ，ｃ，ｎ、以下同様）、ＣＰＵｘ及びＭＥＭｘは、図６で説明した従来の構成例と同様の機能を有する。
【００２７】
本発明によるＤＭＡコントローラ（ＤＭＡｘ）は、ＤＭＡライト転送のみを行い、ＤＭＡリード転送を中央処理装置（ＣＰＵｘ）から指示された場合は、データソース側（送信側）の装置のＤＭＡコントローラ（ＤＭＡｘ）に、このＤＭＡコマンド自体を転送し、データソース側の装置のＤＭＡコントローラ（ＤＭＡｘ）からＤＭＡライト転送によりデータを転送するように構成を変更したものである。
【００２８】
本発明のＤＭＡコントローラ（ＤＭＡｘ）内部に新たに追加されたＤＭＡコマンド保存レジスタ（ＲＧｘ）は、データ伝送路（外部バス）６−１に接続された他の装置のＤＭＡコントローラ（ＤＭＡｘ）から転送されてきたＤＭＡコマンドを登録する領域を有し、好ましくは、対向装置（ＤＭＡコマンドの転送元の装置）対応に、ＤＭＡコマンドを１つ以上登録する領域を有するよう構成する。なお、ＤＭＡ転送を行わない装置（例：装置Ｃ）には、ＤＭＡコントローラ（ＤＭＡｘ）の機能を設ける必要はない。
【００２９】
図２はＤＭＡコマンド保存レジスタ（ＲＧ）の構成例を示す。ＤＭＡコマンド保存レジスタ（ＲＧ）は、装置ＡからのＤＭＡコマンド登録用のレジスタ（Ａ）、装置ＢからのＤＭＡコマンド登録用のレジスタ（Ｂ）、・・・装置ＮからのＤＭＡコマンド登録用のレジスタ（Ｎ）をそれぞれ備え、各レジスタには、転送ワード数、転送データの送信元アドレス及び送信先アドレスをそれぞれ登録する領域を備える。
【００３０】
以下、ＤＭＡコマンド保存レジスタ（ＲＧ）及びＤＭＡコントローラの機能について説明する。
（１）ＤＭＡコマンド保存レジスタ（ＲＧ）は、各装置から転送されてくるＤＭＡコマンドを登録する。
（２）ＤＭＡコマンド保存レジスタ（ＲＧ）は、ＤＭＡ転送実行可能なＤＭＡコマンドをＤＭＡコントローラに通知する。具体的には例えば、転送ワード数がゼロでないＤＭＡコマンドをＤＭＡ転送実行可能として通知する。
（３）ＤＭＡコントローラは、通知されたＤＭＡコマンドが複数存在する場合は、ＤＭＡコントローラに自装置の中央処理装置（ＣＰＵ）が設定した（本来の）ＤＭＡコマンドを含めて、ＤＭＡコマンド保存レジスタ（ＲＧ）から通知されたＤＭＡコマンドの競合調停を行い、ＤＭＡ転送を実行する。
（４）ＤＭＡ転送の実行において、ＤＭＡコマンド保存レジスタ（ＲＧ）の各装置用のレジスタを直接使用して各装置のＤＭＡ転送を管理し、各ＤＭＡ転送実行後、ＤＭＡコマンド保存レジスタ（ＲＧ）の各装置用のレジスタの登録内容を更新する。即ち、１ワード転送する毎に、転送ワード数を１つずつ減少（デクリメント）し、送信元アドレス及び送信先ドレスを１アドレスずつ増加（インクリメント）させる。
【００３１】
本発明を適用したリード方向のＤＭＡ転送の動作として、装置Ｂのデータ記憶装置（ＭＥＭｂ）のデータを、装置Ａのデータ記憶装置（ＭＥＭａ）に読み出す動作例ついて、図３を参照して説明する。なお、本発明はどのような形式のデータ伝送路でも適用することができるが、図３ではアドレス線とデータ線を両方備えたデータ伝送路（外部バス）を用いた場合の例について説明している。
【００３２】
装置Ａの中央処理装置（ＣＰＵａ）は、自装置のＤＭＡコントローラ（ＤＭＡａ）に、装置Ｂのデータ記憶装置（ＭＥＭｂ）から装置Ａのデータ記憶装置（ＭＥＭａ）への方向にデータを転送するリード転送のＤＭＡコマンドを設定し、最後に転送ワード数（ゼロ以外の値）を設定して該ＤＭＡコマンドの開始を指示する（３−１）。
【００３３】
装置ＡのＤＭＡコントローラ（ＤＭＡａ）は、開始指示されたＤＭＡコマンドを解釈し、装置Ｂのデータ記憶装置（ＭＥＭｂ）から装置Ａのデータ記憶装置（ＭＥＭａ）へのリード方向のＤＭＡ転送であることを認識し、このＤＭＡコマンド（リード）を装置ＢのＤＭＡコントローラ（ＤＭＡｂ）に、ＤＭＡライト転送する（３−２）。
【００３４】
具体的には、装置ＢのＤＭＡコマンド保存レジスタ（ＲＧｂ）の装置Ａ用の送信元アドレスレジスタに、装置Ａの中央処理装置（ＣＰＵａ）がＤＭＡコントローラ（ＤＭＡａ）に設定したＤＭＡコマンドの宛先アドレスを設定し、ＤＭＡコマンド保存レジスタ（ＲＧｂ）の装置Ａ用の送信先アドレスレジスタに、装置Ａの中央処理装置（ＣＰＵａ）がＤＭＡコントローラ（ＤＭＡａ）に設定したＤＭＡコマンド元のアドレスを設定し、最後にＤＭＡコマンド保存レジスタ（ＲＧｂ）の装置Ａ用の転送ワード数レジスタに、装置Ａの中央処理装置（ＣＰＵａ）がＤＭＡコントローラ（ＤＭＡａ）に設定した転送ワード数を設定する。
【００３５】
装置ＢのＤＭＡコントローラ（ＤＭＡｂ）は、自装置内のデータ記憶装置（ＭＥＭｂ）から、ＤＭＡコマンド保存レジスタ（ＲＧｂ）の装置Ａ用の送信元アドレスレジスタに設定されたアドレスにアクセスして、データ（１ワード分）の読み出し（リード）を行う（３−３）。
【００３６】
次に、装置ＢのＤＭＡコントローラ（ＤＭＡｂ）は、装置Ａのデータ記憶装置（ＭＥＭａ）に、データ記憶装置（ＭＥＭｂ）から取得したデータ（１ワード分）をライト転送する（３−４）。転送すべきデータが残っている場合は、上記の手順（３−３）及び（３−４）を、転送ワード数分繰り返す（３−５）。
【００３７】
装置ＢのＤＭＡコントローラ（ＤＭＡｂ）は、転送すべきデータの全ての転送を完了すると、その旨を装置ＡのＤＭＡコントローラ（ＤＭＡａ）に通知する（３−６）。なお、通知方法としては、ＤＭＡコントローラ（ＤＭＡａ）の専用レジスタに対して、完了した旨のメッセージをライト転送することなどによって通知することができる。装置ＡのＤＭＡコントローラ（ＤＭＡａ）は、該完了の旨の通知を受け、データのＤＭＡ転送が完了したことを自装置内の中央処理装置（ＣＰＵａ）に通知する（３−７）。
【００３８】
図３に示した本発明によるＤＭＡリード転送と、図７に示した従来のＤＭＡリード転送とを比較すると、データ転送路（外部バス）の使用において、本発明によるＤＭＡリード転送では、転送データを同一伝送方向の外部バスのみを使用して伝送するため、データ転送路（外部バス）の使用（占有）時間を短縮することができ、データ転送路（外部バス）の使用（占有）率を低下させることができ、転送ワード数が多ければ多いほど、データ転送路（外部バス）の使用（占有）率を低下させることができる。
【００３９】
図４は本発明を適用した第２のシステム構成例を示す。図１に示した第１の構成例との相違は、ＤＭＡコントローラ（ＤＭＡｘ）に、ＤＭＡコマンドを登録順に処理するための記憶領域であるＤＭＡコマンドＦＩＦＯメモリ（ＣＦｘ）を新たに追加したことである。
【００４０】
図５に第２の構成例におけるＤＭＡコマンドＦＩＦＯメモリ及びＤＭＡコマンド保存レジスタ（ＲＧ）の機能概要を示す。ＤＭＡコマンドＦＩＦＯメモリは、登録されたＤＭＡコマンドを登録順に自動的に実行するために使用される。ＤＭＡコマンドＦＩＦＯメモリにＤＭＡコマンドを登録するには、ＤＭＡ転送に必要な情報を揃えて一度に登録する必要がある。
【００４１】
そのため、ＤＭＡコマンドＦＩＦＯメモリへは、自装置の中央処理装置（ＣＰＵ）が自装置のＤＭＡコントローラ（ＤＭＡ）に設定したＤＭＡコマンド、及び他の装置からＤＭＡコマンド保存レジスタ（ＲＧ）に一旦登録された実行可能なＤＭＡコマンドを格納するようにしている。
【００４２】
以下に、ＤＭＡコマンドＦＩＦＯメモリを使用するＤＭＡ転送の動作手順について図５を参照して説明する。なお、図５は、自装置の中央処理装置（ＣＰＵ）からのＤＭＡコマンド、ＤＭＡコマンド保存レジスタ（ＲＧ）及びＤＭＡコマンドＦＩＦＯメモリの格納情報のデータ構成及び処理手順を示している。
【００４３】
まず、自装置の中央処理装置（ＣＰＵ）からは、ＤＭＡコントローラ（ＤＭＡ）のＤＭＡコマンドレジスタ（図示省略）に、外部装置のＤＭＡコントローラ（ＤＭＡ）からはＤＭＡコマンド保存レジスタ（ＲＧ）内の外部装置対応領域のレジスタに、ＤＭＡコマンドが登録される（５−１）。
【００４４】
上記の手順（５−１）で登録が完了したＤＭＡコマンドは、ＤＭＡコマンドＦＩＦＯメモリへ格納する（５−２）。ＤＭＡコマンドＦＩＦＯメモリへのＤＭＡコマンドの格納が完了すれば、登録元のレジスタの内容を消去する。なお、ＤＭＡコマンド保存レジスタ（ＲＧ）からＤＭＡコマンドＦＩＦＯメモリに格納する場合は、後述する外部登録ビットを設定する。
【００４５】
ＤＭＡコントローラ（ＤＭＡ）は、ＤＭＡコマンドＦＩＦＯメモリに格納されたＤＭＡコマンドを、格納された順番に従って取り出して処理し、各ＤＭＡコマンドの処理完了時に、各ＤＭＡコマンドの送信元に処理完了の旨の通知を行う（５−３）。
【００４６】
ＤＭＡコマンドＦＩＦＯメモリへのＤＭＡコマンドの格納に際して、複数のＤＭＡコマンドが指定の順序で実行されるよう、ＤＭＡコマンドチェーンとして登録することができる。ＤＭＡコマンドチェーンは、連結された最後のＤＭＡコマンドの処理が完了したときにのみ、コマンド元の装置の中央処理装置（ＣＰＵ）に完了の旨を通知する割込をかけるのが一般的である。
【００４７】
そのため、チェーンの最後のＤＭＡコマンドか否かを示すチェーンビットを設け、最後のＤＭＡコマンド以外には、後続のＤＭＡコマンドが存在することを示すチェーンビットを立て、該チェーンビットが立てられたＤＭＡコマンドに対しては、処理が完了しても中央処理装置（ＣＰＵ）への完了の旨を通知する割込を発生しないようにする。
【００４８】
また、ＤＭＡコマンド保存レジスタ（ＲＧ）に登録されたＤＭＡコマンドをＤＭＡコマンドＦＩＦＯメモリに格納する場合は、外部登録ビットを設定し、該ＤＭＡコマンドの処理の完了時に、完了の旨を、転送データ送信先の装置のＤＭＡコントローラ（ＤＭＡ）に通知するか、自装置の中央処理装置（ＣＰＵ）に通知するかを、外部登録ビットの設定内容を基に区別する。
【００４９】
また、中央処理装置（ＣＰＵ）がＤＭＡコントローラ（ＤＭＡ）に、自装置が転送データの送信元でも送信先でもないＤＭＡコマンドを設定したときは、ＤＭＡコマンドＦＩＦＯメモリのチェーンビット及び外部登録ビットの両方を立てることで、無関係な装置への完了通知の割込発生を停止させる。該ＤＭＡコマンドの送信元へコマンド完了通知の割込を行うには、完了通知の割込専用のＤＭＡコマンドを追加登録する。
【００５０】
なお、チェーンビット及び外部登録ビットの両方を立てるためには、ＤＭＡコマンドＦＩＦＯメモリにチェーンビット及び外部登録ビットの領域を設ける必要がある。また、チェーンビットを立てるために、ＤＭＡコマンド保存レジスタ（ＲＧ）にチェーンビットの領域を設け、ＤＭＡコマンドチェーンをＤＭＡコマンド保存レジスタ（ＲＧ）設定する際、同時にチェーンビットを設定する必要がある。
【００５１】
第２の構成例のＤＭＡコマンド保存レジスタ（ＲＧ）への登録には、転送データの送信元アドレス及び送信先アドレス、転送ワード数並びにチェーンビットの設定が必要である。ここで、例えば、転送ワード数３２ビット、送信元アドレス３２ビット、送信先アドレス３２ビットの情報を、アドレスバス３２ビット、データバス３２ビットのデータ伝送路（外部バス）で送信する場合、転送ワード数の最大値を表すビット数が３１ビット以下の場合に、チェーンビットを転送ワード数の送信ビットに含めることで、データ伝送路（外部バス）の使用効率を第１の構成例から下げることなく、機能拡張が可能となる。
【００５２】
以下に、ＤＭＡコントローラ及びＤＭＡコマンドＦＩＦＯメモリの動作条件及び動作の一例を示す。ここで、各装置のＤＭＡコントローラはＤＭＡコマンドＦＩＦＯメモリを備え、ＤＭＡコマンドＦＩＦＯメモリにＤＭＡコマンドを複数登録することができるものとする。ＤＭＡ転送を行うには、ＤＭＡコマンド（ＤＭＡを行うための情報）をＤＭＡコマンドＦＩＦＯメモリに格納する。ＤＭＡコマンドのチェーンを作成するには、連続して実行するＤＭＡコマンドを、実行順にＤＭＡコマンドＦＩＦＯメモリに格納する。
【００５３】
ＤＭＡコントローラは、ＤＭＡコマンドＦＩＦＯメモリに格納されたＤＭＡコマンドを、先に格納されたものから順番に実行する。実行するＤＭＡコマンドがライト転送の場合（即ち、自装置がＤＭＡ転送の送信元の場合）、ＤＭＡコマンドＦＩＦＯメモリ上のＤＭＡコマンドに従い、通常のライトコマンドを実行し、これを必要回数（転送ワード数分）繰り返すことでＤＭＡ転送を完了する。
【００５４】
実行するＤＭＡコマンドがリード転送の場合（即ち、自装置がＤＭＡ転送のデータの送信先の場合）、送信先の装置（自装置）は、このＤＭＡコマンドをデータ送信元の装置のＤＭＡコマンドＦＩＦＯメモリに送信（登録）する。具体的には、自装置が、送信元の装置のＤＭＡコマンド保存レジスタ（ＲＧ）にこのＤＭＡコマンドを設定する。
【００５５】
データ送信元の装置は、ＤＭＡコマンド保存レジスタ（ＲＧ）に設定されたＤＭＡコマンドをＤＭＡコマンドＦＩＦＯメモリに格納する。このＤＭＡコマンドの格納の際、このＤＭＡコマンドに外部登録ビット（外部装置から登録されたコマンドであることを識別するための符号）を設定しておく。
【００５６】
データ送信元の装置は、ＤＭＡコマンドＦＩＦＯメモリに格納されたＤＭＡコマンドを格納順に実行し、外部登録ビットが設定されているＤＭＡコマンドの実行を終えたとき、データ送信先の装置に対して完了の旨を示すメッセージを送信し、データ送信先の装置にこのＤＭＡコマンドの実行完了を通知する。
【００５７】
データ送信先の装置は、送信元の装置に送信したＤＭＡコマンドを、送信元の装置から完了の旨のメッセージが受信されるまで、ＤＭＡコマンドＦＩＦＯメモリに保存する。このＤＭＡコマンドに対する完了の旨のメッセージを受信したときに、このＤＭＡコマンドを完了したものとしてＤＭＡコマンドＦＩＦＯメモリから削除し、次のＤＭＡコマンドが残っていればそれを実行する。
【００５８】
実行するＤＭＡコマンドが自装置に関係しない場合（即ち、自装置がＤＭＡ転送の送信元でも送信先でもでない場合）、自装置（ＤＭＡコマンド元装置）は、このＤＭＡコマンドをチェーンコマンドとして、ＤＭＡ転送データの送信元の装置のＤＭＡコマンドＦＩＦＯメモリに送信（ＤＭＡコマンド保存レジスタ（ＲＧ）に登録）し、続いて、該送信元の装置に送信したＤＭＡコマンドの終了を自装置に通知するための終了通知用ＤＭＡコマンドを、送信元の装置のＤＭＡコマンドＦＩＦＯメモリに送信（ＤＭＡコマンド保存レジスタ（ＲＧ）に登録）する。
【００５９】
上記終了通知用ＤＭＡコマンドは、転送データが無く、自装置にＤＭＡ転送の完了の旨のメッセージを通知するダミーのＤＭＡコマンドで、該終了通知用ＤＭＡコマンドをデータ送信先の装置のＤＭＡコマンドＦＩＦＯメモリに格納することで、ＤＭＡコマンドチェーンは完了する。
【００６０】
データ送信元の装置は、上記ＤＭＡコマンド元の装置（自装置）より登録されたＤＭＡコマンドを、ＤＭＡコマンドＦＩＦＯメモリの格納順に実行し、各ＤＭＡコマンドの実行を完了する。このとき、このＤＭＡコマンドは、チェーンコマンドとして（チェーンビットが立てられて）送信されてきているので、該コマンド終了時には送信先の装置に完了の旨のメッセージを送信しない。
【００６１】
送信元の装置は、その後、上記のＤＭＡコマンド元の装置（自装置）から登録された終了通知用ＤＭＡコマンド（ダミーのＤＭＡコマンド）を実行する。これにより、該ＤＭＡコマンド元の装置（自装置）に、自装置がＤＭＡ転送の送信元でも送信先でもでないＤＭＡコマンドの完了が通知される。
【００６２】
自装置（ＤＭＡコマンド元の装置）は、データ送信元の装置から終了通知用ＤＭＡコマンドを受け取った後、このＤＭＡコマンドが完了したものと判定し、該ＤＭＡコマンドをＤＭＡコマンドＦＩＦＯメモリから削除し、ＤＭＡコマンドＦＩＦＯメモリにＤＭＡコマンドが残っている場合は、次のＤＭＡコマンドを実行する。
【００６３】
なお、ＤＭＡコマンドＦＩＦＯメモリにＤＭＡコマンドチェーンを登録する場合、ＤＭＡコマンドＦＩＦＯメモリにＤＭＡコマンドをチェーンの順番どおりに格納する。ＤＭＡコントローラは、ＤＭＡコマンドＦＩＦＯメモリの格納順にＤＭＡコマンドを実行する。登録されたＤＭＡコマンドチェーンの中に、このチェーンと関係のないＤＭＡコマンドが格納されても、ＤＭＡコマンドの実行順序は崩れないため、転送エリア（送信先及び送信元）が競合しない限り、問題とならない。
【００６４】
また、本発明において、実行するＤＭＡコマンドが外部装置から登録されたものであることを識別するために、ＤＭＡコマンドＦＩＦＯメモリに外部登録ビットを付加する。そして、外部登録ビットが立っていて、チェーンビットが立っていない場合、最終のＤＭＡライトコマンドの実行の後、又は該ＤＭＡライトコマンドの実行と同時に、送信先の外部装置に対して完了の旨のメッセージを通知する。
【００６５】
これを受信したＤＭＡコマンド元の装置（即ち、データ送信先の装置）は、現在の（保存していた）ＤＭＡリード転送コマンドが完了したと判定し、該ＤＭＡコマンドをＤＭＡコマンドＦＩＦＯメモリから削除し、ＤＭＡコマンドＦＩＦＯメモリにＤＭＡコマンドが残っている場合は、次のＤＭＡコマンドの処理を開始する。
【００６６】
なお、これまで、バス型のデータ伝送路を用いた場合の構成例について説明したが、スター型やメッシュ型のデータ伝送路を用いた場合でも動作は同様である。また、データ伝送路として、シリアルデータ伝送路でデータ伝送量が可変の伝送路を用いた場合は、第２の構成例におけるＤＭＡコマンド保存レジスタ（ＲＧ）を設ける必要はなく、直接、外部装置のＤＭＡコマンドＦＩＦＯメモリへ登録する構成とすることが可能である。
【００６７】
ＤＭＡコマンドＦＩＦＯメモリを導入する利点は、以下のとおりである。
・ＤＭＡチェーンコマンドを容易に組むことが可能になる。
・中央処理装置（ＣＰＵ）がＤＭＡコントローラ（ＤＭＡ）に、自装置が転送データの送信元でも送信先でもでもないＤＭＡコマンドを設定し、他装置間でのＤＭＡ転送を指示することが可能になる。
・全てのＤＭＡコマンドをＤＭＡコマンドＦＩＦＯメモリに格納して処理することにより、自装置の中央処理装置（ＣＰＵ）から設定されたＤＭＡコマンドと、外部装置からＤＭＡコマンド保存レジスタ（ＲＧ）に登録されたＤＭＡコマンドとの競合に対して、ファーストインファーストアウト処理方式により、競合調停の制御を簡素化することができる。
【図面の簡単な説明】
【００６８】
【図１】本発明の第１のシステム構成例を示す図である。
【図２】本発明のＤＭＡコマンド保存レジスタ（ＲＧ）の構成例を示す図である。
【図３】本発明のＤＭＡ転送（データリード転送）手順を示す図である。
【図４】本発明の第２のシステム構成例を示す図である。
【図５】本発明のＤＭＡコマンドＦＩＦＯメモリ及びＤＭＡコマンド保存レジスタの機能概要を示す図である。
【図６】従来のシステム構成例（バス型）を示す図である。
【図７】従来のＤＭＡ転送（データリード転送）手順を示す図である。
【図８】ＤＭＡ転送（データリード転送）手順を示す図である。
【符号の説明】
【００６９】
ＢＵＳａ，ｂ，ｃ，・・・ｎ  バスのインタフェース
ＤＭＡａ，ｂ，ｃ，・・・ｎ  ＤＭＡコントローラ
ＣＰＵａ，ｂ，ｃ，・・・ｎ  中央処理装置
ＭＥＭａ，ｂ，ｃ，・・・ｎ  データ記憶装置
ＲＧａ，ｂ，ｃ，・・・ｎ  ＤＭＡコマンド保存レジスタ
６−１  データ伝送路（外部バス）
【図１】
2008146541.tif 000003
【図２】
2008146541.tif 000004
【図３】
2008146541.tif 000005
【図４】
2008146541.tif 000006
【図５】
2008146541.tif 000007
【図６】
2008146541.tif 000008
【図７】
2008146541.tif 000009
【図８】
2008146541.tif 000010