(57)【要約】【課題】特定のサービス実行手段が独占してサービスを実行するという問題を回避した上で、任意のサービス実行手段に優先的にサービスを実行させることができるようにしたデータ処理制御装置を提供する。【解決手段】調停回路１は、ＤＭＡチャンネル２−１、２−２、２−３、２−４のうち、ＤＭＡ転送が要求されており、且つ、優先順位が最も高いものにＤＭＡ転送を実行させるが、許可されたサイクル数だけ連続してＤＭＡ転送を行った旨の通知をＤＭＡチャンネルから受けると、そのＤＭＡチャンネルの優先順位が最も低くなるように各ＤＭＡチャンネルの優先順位を更新する。各ＤＭＡチャンネル２−１、２−２、２−３、２−４は、当チャンネルに何サイクル連続してＤＭＡ転送を行うことを許可するかを示すデータを書き込むためのレジスタを有しており、該レジスタに書き込まれているデータに応じたサイクル数だけ連続してＤＭＡ転送を行う毎に、許可されたサイクル数だけ連続してＤＭＡ転送を行った旨を調停回路１に通知する。【選択図】　　　図１
2004118298.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ所定のサービスを実行する複数のサービス実行手段に択一的にサービスを実行させるデータ処理制御装置であって、
サービスの実行が要求されているサービス実行手段の中で優先順位が最も高いものがサービスを実行するように制御する制御手段と、
１つのサービス実行手段が許可された量だけ連続してサービスを実行する毎に、そのサービス実行手段の優先順位が最も低くなるように各サービス実行手段の優先順位を更新する優先順位更新手段と、
１つのチャンネルにどれだけ連続してサービスを実行することを許可するかを示すデータを各サービス実行手段毎に書き込むための記憶手段と、
を備えたことを特徴とするデータ処理制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、それぞれＤＭＡ転送等の所定のサービスを実行する複数のサービス実行手段に択一的にサービスを実行させるデータ処理制御装置に関するものである。
【０００２】
【従来の技術】
ＤＭＡコントローラを例に挙げて従来のデータ処理制御装置について説明する。ＤＭＡコントローラは、周辺装置からデータ転送の要求を受けると、システムバスの使用権を要求し、システムバスの使用権が認可されると、予め設定された転送元から転送先へのデータ転送を開始するようになっている。そして、ＤＭＡコントローラの制御によるデータ転送（以下、「ＤＭＡ転送」と称する）では、ＣＰＵの制御によるデータ転送とは違って、命令のリード及び解読が必要ないので、データの転送速度を高速にすることが可能となる。
【０００３】
さて、複数のチャンネルを備えたＤＭＡコントローラでは、ＤＭＡ転送が要求されているチャンネルの中で優先順位が最も高いチャンネルにサービス（ＤＭＡ転送）を実行させるようになっている。そして、ある特定のチャンネルが独占してサービスを実行するという問題を回避するために、１つのチャンネルが許可された量だけ連続してサービスを実行する毎に、そのチャンネルの優先順位が最も低くなるように各チャンネルの優先順位を更新するものがある。
【０００４】
例えば、ＣＨ１、ＣＨ２、ＣＨ３、及び、ＣＨ４の４つのチャンネルがあり、チャンネルＣＨ１、ＣＨ２、ＣＨ３、ＣＨ４が許可された量だけ連続してサービスを実行したとすると、それぞれ図１１の（ａ）、（ｂ）、（ｃ）、（ｄ）に示すように、各チャンネルの優先順位が更新される。
【０００５】
【特許文献１】
特開平６−８３６４２号公報
【０００６】
【発明が解決しようとする課題】
しかしながら、従来は、１つのチャンネルが連続して実行することが許可されているサービス量が各チャンネルに共通な値に固定されていたので、上述したようにして各チャンネルの優先順位を更新すると、サービスの実行が要求されている各チャンネルに常に均等にサービスを実行させることになる。このため、以下に述べるような問題があった。
【０００７】
例えば、全てのチャンネルに対してデータ転送が要求されており、そのうちの１つのチャンネルＣＨ１に要求されたデータ転送については遅延が許容されず、他のチャンネルに要求されたデータ転送についてはある程度の遅延が許される場合、チャンネルＣＨ１に優先的にデータ転送を実行させたいが、それを行うことはできないので、チャンネルＣＨ１に要求されたデータ転送を定められた時間内に完了させることができない事態が発生する可能性があった。
【０００８】
そこで、本発明は、特定のサービス実行手段が独占してサービスを実行するという問題を回避した上で、任意のサービス実行手段に優先的にサービスを実行させることができるようにしたデータ処理制御装置を提供することを目的とする。
【０００９】
【課題を解決するための手段】
上記の目的を達成するため、本発明では、
それぞれ所定のサービスを実行する複数のサービス実行手段に択一的にサービスを実行させるデータ処理制御装置において、
サービスの実行が要求されているサービス実行手段の中で優先順位が最も高いものがサービスを実行するように制御する制御手段と、
１つのサービス実行手段が許可された量だけ連続してサービスを実行する毎に、そのサービス実行手段の優先順位が最も低くなるように各サービス実行手段の優先順位を更新する優先順位更新手段と、
１つのチャンネルにどれだけ連続してサービスを実行することを許可するかを示すデータを各サービス実行手段毎に書き込むための記憶手段と、
を備えている。
【００１０】
この構成により、サービスの実行が要求されているサービス実行手段の中で優先順位が最も高いものがサービスの実行を開始することができるが、１つのサービス実行手段が許可された量だけ連続してサービスを実行する毎に、そのサービス実行手段の優先順位が最も低くなるので、特定のサービス実行手段が独占してサービスを実行するという問題は回避される。また、１つのサービス実行手段にどれだけ連続してサービスを実行することを許可するかを各サービス実行手段毎に自由に設定することができるようになるので、任意のサービス実行手段に優先的にサービスを実行させることができるようになる。
【００１１】
【発明の実施の形態】
以下に、本発明の実施形態を図面を参照しながら説明する。本発明を適用したＤＭＡコントローラについて説明する。そのブロック図を図１に示す。１は調停回路、２−１、２−２、２−３、２−４はそれぞれＤＭＡチャンネルである。調停回路１は、ＤＭＡ起動制御部１０１、チャンネル決定シーケンサ１０２、リクエストレジスタ１０３、エンドレジスタ１０４、起動チャンネルレジスタ１０５を備えている。
【００１２】
各ＤＭＡチャンネル２−１、２−２、２−３、２−４は、その回路構成を図２に示すように、ＤＭＡ実行シーケンサ２０１、レジスタコントローラ２０２、ＣＴＬレジスタ２０３、ＳＲＣレジスタ２０４、ＤＳＴレジスタ２０５、ＣＹＣレジスタ２０６、ＴＲＮレジスタ２０７、ＳＥＴレジスタ２０８、ＳＲＣカウンタ２０９、ＤＳＴカウンタ２１０、ＴＭＰ＿ＣＹＣレジスタ２１１、ＣＹＣカウンタ２１２、ＴＲＮカウンタ２１３、ＣＵＲ＿ＳＥＴレジスタ２１４、ＲＬＤ＿ＳＲＣレジスタ２１５、ＲＬＤ＿ＤＳＴレジスタ２１６、ＲＬＤ＿ＣＹＣレジスタ２１７、ＲＬＤ＿ＴＲＮレジスタ２１８、ＲＬＤ＿ＳＥＴレジスタ２１９、マルチプレクサ２２０、２２１、２２２、２２３、及び、２２４、並びに、ＡＣＣカウンタ２２５を備えている。
【００１３】
調停回路１では、ＤＭＡ起動制御部１０１が、システムバス３００の使用権の調停を行うとともに、ＤＭＡチャンネル２−１、２−２、２−３、及び、２−４が択一的にＤＭＡ転送を行うように制御する。チャンネル決定シーケンサ１０２は、リクエストレジスタ１０３及びエンドレジスタ１０４の値に基づいてＤＭＡ転送を実行させるべきＤＭＡチャンネルを決定する。リクエストレジスタ１０３は、どのＤＭＡチャンネルに対してＤＭＡ転送が要求されているかを記憶するためのレジスタである。エンドレジスタ１０４は、各ＤＭＡチャンネルの動作状況を示すデータが書き込まれるレジスタである。起動チャンネルレジスタ１０５はチャンネル決定シーケンサ１０２で決定されたＤＭＡチャンネルを示すデータが書き込まれるレジスタである。
【００１４】
ＤＭＡ起動制御部１０１の動作を図３に示すフローチャートを用いて詳細に説明する。まず、起動チャンネルレジスタ１０５のＤＭＡ＿ＣＨビットの値が０でないか否かを判定する（＃１０１）。ＤＭＡ＿ＣＨビットの値が０でなければ（＃１０１のＹ）、出力信号ＢＵＳ＿ＲＥＱをアサートする（システムバス３００の使用権を要求する）（＃１０２）。次に、入力信号ＢＵＳ＿ＡＣＫがアサートされている（システムバス３００の使用権が認可されている）か否かを判定する（＃１０３）。
【００１５】
入力信号ＢＵＳ＿ＡＣＫがアサートされていれば（＃１０３のＹ）、ＤＭＡチャンネル２−１、２−２、２−３、２−４への各スタート信号のうち、起動チャンネルレジスタ１０５のＤＭＡ＿ＣＨビットの値に対応するＤＭＡチャンネル２−ｋ（ｋ＝１、２、３、または、４）へのスタート信号のみがアサートした状態にする（＃１０４）。
【００１６】
＃１０４では、具体的には、ＤＭＡ＿ＣＨビットの値が１であれば、ＤＭＡチャンネル２−１へのスタート信号のみがアサートした状態にし、また、ＤＭＡ＿ＣＨビットの値が２であれば、ＤＭＡチャンネル２−２へのスタート信号のみをアサートした状態にし、また、ＤＭＡ＿ＣＨビットの値が３であれば、ＤＭＡチャンネル２−３へのスタート信号のみをアサートした状態にし、また、ＤＭＡ＿ＣＨビットの値が４であれば、ＤＭＡチャンネル２−４へのスタート信号のみをアサートした状態にする。
【００１７】
＃１０４を終えると、入力信号ＢＵＳ＿ＡＣＫがネゲートされている（システムバス３００の使用権が取り下げられている）か否かを判定する（＃１０５）。入力信号ＢＵＳ＿ＡＣＫがネゲートされていれば（＃１０５のＹ）、ＤＭＡチャンネル２−１、２−２、２−３、２−４への各スタート信号がネゲートした状態にする（＃１０６）。＃１０６を終えると、前述した＃１０３へ移行する。一方、入力信号ＢＵＳ＿ＡＣＫがネゲートされていなければ（＃１０５のＮ）、＃１０７へ移行する。
【００１８】
＃１０７では、許可されたサイクル数だけ連続してＤＭＡ転送を行った旨の通知、指定されたサイクル数だけＤＭＡ転送を行った旨の通知、または、ＤＭＡ転送が終了した旨の通知をＤＭＡチャンネル２−ｋから受けたか否かを判定する。＃１０７での判定結果が肯定であれば（＃１０７のＹ）、ＤＭＡチャンネル２−１、２−２、２−３、２−４への各スタート信号がネゲートした状態にする（＃１０８）とともに、エンドレジスタ１０４のＥＮＤｋビットを１にセットする（＃１０９）。
【００１９】
＃１０９の後は、受けた通知が許可されたサイクル数だけ連続してＤＭＡ転送を行った旨の通知であったときには（＃１１０のＹ）、後述する＃１１１へ移行し、一方、受けた通知が許可されたサイクル数だけ連続してＤＭＡ転送を行った旨の通知でなかったときには（＃１１０のＮ）、後述する＃１１３へ移行する。
【００２０】
＃１１１では、起動チャンネルレジスタ１０５のＤＭＡ＿ＣＨビットの値が０でないか否かを判定する。ＤＭＡ＿ＣＨビットの値が０でなければ（＃１１１のＹ）、前述した＃１０３へ移行し、一方、ＤＭＡ＿ＣＨビットの値が０であれば（＃１１１のＮ）、出力信号ＢＵＥ＿ＲＥＱをネゲートする（システムバス３００の使用権の要求を取り下げる）（＃１１２）。＃１１２を終えると、前述した＃１０１へ移行する。
【００２１】
＃１１３では、リクエストレジスタ１０３のＲＥＱｋビットを０にセットする。＃１１３の後は、受けた通知が指定されたサイクル数だけＤＭＡ転送を行った旨の通知であったときには（＃１１４のＹ）、前述した＃１１１へ移行する。一方、受けた通知が指定されたサイクル数だけＤＭＡ転送を行った旨の通知でなかったとき（言い換えれば、受けた通知がＤＭＡ転送が終了した旨の通知であったとき）には（＃１１４のＮ）、前述した＃１１２へ移行する。
【００２２】
以上の動作に加えて、ＤＭＡ起動制御部１０１は、ＤＭＡチャンネル２−ｘ（ｘ＝１、２、３、または、４）に対してＤＭＡ転送が要求されると（具体的な例としては、入力信号ＤＭＡ＿ＲＥＱｘがネゲートされた状態からアサートされた状態に変化すると）、リクエストレジスタ１０３のＲＥＱｘビットを１にセットする。
【００２３】
また、バスコントローラ（不図示）からＤＭＡ待機命令が発行されると（具体的には、入力信号ＤＭＡ＿ＷＡＩＴがアサートされると）、各ＤＭＡチャンネル２−１、２−２、２−３、２−４へのウエイト信号をアサートする。また、ＤＭＡ待機命令が解除されると（具体的には、入力信号ＤＭＡ＿ＷＡＩＴがネゲートされると）、上記ウエイト信号をネゲートする。
【００２４】
尚、バスコントローラは、ＤＭＡコントローラがアクセスしたアドレスに対するデータの読み出しあるいは書き込みが完了する前に次の動作に移行しないように、ＤＭＡコントローラがアクセスしたアドレスに応じて信号ＤＭＡ＿ＷＡＩＴを制御するようになっている。
【００２５】
チャンネル決定シーケンサ１０２の動作を図４に示すフローチャートを用いて詳細に説明する。まず、リクエストレジスタ１０３のＲＥＱ１ビットが１であるか否かを判定する（＃２０１）。ＲＥＱ１ビットが１であれば（＃２０１のＹ）、起動チャンネルレジスタ１０５のＤＭＡ＿ＣＨビットの値を１にセットするとともに（＃２０２）、エンドレジスタ１０４のＥＮＤ１ビット、ＥＮＤ２ビット、ＥＮＤ３ビット、及び、ＥＮＤ４ビットを０にセットし（＃２０３）、その後、ＥＮＤ１ビットが１になると（＃２０４のＹ）、後述する＃２０８へ移行する。
【００２６】
一方、ＲＥＱ１ビットが１でなければ（＃２０１のＮ）、エンドレジスタ１０４のＥＮＤ１ビットが１であるか否かを判定する（＃２０５）。ＥＮＤ１ビットが１であれば（＃２０５のＹ）、起動チャンネルレジスタ１０５のＤＭＡ＿ＣＨビットの値を０にセットする（＃２０６）とともに、ＥＮＤ１ビットを０にセットし（＃２０７）、その後、＃２０８へ移行する。一方、ＥＮＤ１ビットが１でなければ（＃２０５のＮ）、＃２０８へそのまま移行する。
【００２７】
＃２０８では、リクエストレジスタ１０３のＲＥＱ２ビットが１であるか否かを判定する。ＲＥＱ２ビットが１であれば（＃２０８のＹ）、起動チャンネルレジスタ１０５のＤＭＡ＿ＣＨビットの値を２にセットする（＃２０９）とともに、エンドレジスタ１０４のＥＮＤ１ビット、ＥＮＤ２ビット、ＥＮＤ３ビット、及び、ＥＮＤ４ビットを０にセットし（＃２１０）、その後、ＥＮＤ２ビットが１になると（＃２１１のＹ）、後述する＃２１５へ移行する。
【００２８】
一方、ＲＥＱ２ビットが１でなければ（＃２０８のＮ）、エンドレジスタ１０４のＥＮＤ２ビットが１であるか否かを判定する（＃２１２）。ＥＮＤ２ビットが１であれば（＃２１２のＹ）、起動チャンネルレジスタ１０５のＤＭＡ＿ＣＨビットの値を０にセットする（＃２１３）とともに、ＥＮＤ２ビットを０にセットし（＃２１４）、その後、＃２１５へ移行する。一方、ＥＮＤ２ビットが１でなければ（＃２１２のＮ）、＃２１５へそのまま移行する。
【００２９】
＃２１５では、リクエストレジスタ１０３のＲＥＱ３ビットが１であるか否かを判定する。ＲＥＱ３ビットが１であれば（＃２１５のＹ）、起動チャンネルレジスタ１０５のＤＭＡ＿ＣＨビットの値を３にセットする（＃２１６）とともに、エンドレジスタ１０４のＥＮＤ１ビット、ＥＮＤ２ビット、ＥＮＤ３ビット、及び、ＥＮＤ４ビットを０にセットし（＃２１７）、その後、ＥＮＤ３ビットが１になると（＃２１８のＹ）、後述する＃２２２へ移行する。
【００３０】
一方、ＲＥＱ３ビットが１でなければ（＃２１５のＮ）、エンドレジスタ１０４のＥＮＤ３ビットが１であるか否かを判定する（＃２１９）。ＥＮＤ３ビットが１であれば（＃２１９のＹ）、起動チャンネルレジスタ１０５のＤＭＡ＿ＣＨビットの値を０にセットする（＃２２０）とともに、ＥＮＤ３ビットを０にセットし（＃２２１）、その後、＃２２２へ移行する。一方、ＥＮＤ３ビットが１でなければ（＃２１９のＮ）、＃２２２へそのまま移行する。
【００３１】
＃２２２では、リクエストレジスタ１０３のＲＥＱ４ビットが１であるか否かを判定する。ＲＥＱ４ビットが１であれば（＃２２２のＹ）、起動チャンネルレジスタ１０５のＤＭＡ＿ＣＨビットの値を４にセットする（＃２２３）とともに、エンドレジスタ１０４のＥＮＤ１ビット、ＥＮＤ２ビット、ＥＮＤ３ビット、及び、ＥＮＤ４ビットを０にセットし（＃２２４）、その後、ＥＮＤ４ビットが１になると（＃２２５のＹ）、前述した＃２０１へ移行する。
【００３２】
一方、ＲＥＱ４ビットが１でなければ（＃２２２のＮ）、エンドレジスタ１０４のＥＮＤ４ビットが１であるか否かを判定する（＃２２６）。ＥＮＤ４ビットが１であれば（＃２２６のＹ）、起動チャンネルレジスタ１０５のＤＭＡ＿ＣＨビットの値を０にセットする（＃２２７）とともに、ＥＮＤ４ビットを０にセットし（＃２２８）、その後、前述した＃２０１へ移行する。一方、ＥＮＤ３ビットが１でなければ（＃２１９のＮ）、前述した＃２０１へそのまま移行する。
【００３３】
尚、電源投入時には、レジスタの初期化が行われ、リクエストレジスタ１０３のＲＥＱ１、ＲＥＱ２、ＲＥＱ３、ＲＥＱ４の各ビットが０に、エンドレジスタ１０４のＥＮＤ１、ＥＮＤ２、ＥＮＤ３、ＥＮＤ４の各ビットが０に、起動チャンネルレジスタ１０５のＤＭＡ＿ＣＨビットの値が０に、それぞれセットされるようになっている。
【００３４】
各ＤＭＡチャンネル２−１、２−２、２−３、２−４では、ＤＭＡ実行シーケンサ２０１が、調停回路１による制御の下で、ＣＴＬレジスタ２０３、ＳＲＣカウンタ２０９、ＤＳＴカウンタ２１０、ＣＹＣカウンタ２１２、ＣＵＲ＿ＳＥＴレジスタ２１４、ＡＣＣカウンタ２２５、及び、レジスタコントローラ２０２内のレジスタ（不図示）の内容に基づいてＤＭＡ転送を実行する。
【００３５】
レジスタコントローラ２０２は、ＤＭＡ実行シーケンサ２０１からの指示、並びに、ＣＴＬレジスタ２０３、ＣＹＣカウンタ２１２、ＴＲＮカウンタ２１３、ＣＵＲ＿ＳＥＴレジスタ２１４、ＡＣＣカウンタ２２５、及び、自身のレジスタの内容に基づいて、ＳＲＣカウンタ２０９、ＤＳＴカウンタ２１０、ＴＭＰ＿ＣＹＣレジスタ２１１、ＣＹＣカウンタ２１２、ＴＲＮカウンタ２１３、ＣＵＲ＿ＳＥＴレジスタ２１４、及び、ＡＣＣカウンタ２２５の動作の制御、並びに、内部のレジスタの書き換えを行う。
【００３６】
ＣＴＬレジスタ２０３、ＳＲＣレジスタ２０４、ＤＳＴレジスタ２０５、ＣＹＣレジスタ２０６、ＴＲＮレジスタ２０７、及び、ＳＥＴレジスタ２０８には、ＤＭＡ転送を実行するために必要な情報がＣＰＵによって書き込まれる。具体的には、ＣＴＬレジスタ２０３には、ＤＭＡ転送を制御するための情報が書き込まれる。ＳＲＣレジスタ２０４には、データの転送元の領域（データを読み出す領域）の先頭のアドレスが書き込まれる。ＤＳＴレジスタ２０５には、データの転送先の領域（データを書き込む領域）の先頭のアドレスが書き込まれる。
【００３７】
ＣＹＣレジスタ２０６には、１回のＤＭＡ転送におけるサイクル数に応じた値が書き込まれる。ＴＲＮレジスタ２０７には、ＤＭＡ転送を行う回数に応じた値が書き込まれる。ＳＥＴレジスタ２０８には、ＤＭＡ転送に関するその他の情報（１サイクルで転送するデータのサイズ、転送元アドレス及び転送先アドレスを１サイクル毎に更新する／しないなど）が書き込まれる。
【００３８】
尚、ＳＥＴレジスタ２０８にはＣＲビットが用意されており、ＣＰＵは、このＣＲビットに、当ＤＭＡチャンネルに何サイクル連続してＤＭＡ転送を行うことを許可するかを示すデータ（具体的には、許可するサイクル数−１）を書き込むようになっている。また、ＣＵＲ＿ＳＥＴレジスタ２１４及びＲＬＤ＿ＳＥＴレジスタ２１９にもＣＲビットが用意されている。
【００３９】
ＳＲＣカウンタ２０９は、転送元のアドレスを記憶するとともに、必要に応じて更新するためのカウンタである。ＤＳＴカウンタ２１０は、転送先のアドレスを記憶するとともに、必要に応じて更新するためのカウンタである。ＴＭＰ＿ＣＹＣレジスタ２１１は、１回のＤＭＡ転送で行うべきサイクル数を記憶しておくためのレジスタである。ＣＹＣカウンタ２１２は、１回のＤＭＡ転送で行ったサイクル数を計測するためのカウンタである。ＴＲＮカウンタ２１３は、ＤＭＡ転送を行った回数を計測するためのカウンタである。ＣＵＲ＿ＳＥＴレジスタ２１４は、ＳＥＴレジスタ２０８に書き込まれた情報を記憶しておくためのレジスタである。ＡＣＣカウンタ２２５は、当ＤＭＡチャンネルが連続して行ったサイクル数を計測するためのカウンタである。
【００４０】
ここで、本実施形態のＤＭＡコントローラでは、後述するように、ＤＭＡ転送を実行するにあたって、それに必要な情報をＲＡＭ４００から自身にＤＭＡ転送するモード（リロードモード）が存在する。ＣＰＵは、このリロードモードを用いてＤＭＡ転送を実行させるときには、図５に一例を示すように、実行させたい各ＤＭＡ転送毎に、当該ＤＭＡ転送の次に実行させたいＤＭＡ転送に必要な情報が書き込まれているＲＡＭ４００内の先頭のアドレス、並びに、当該ＤＭＡ転送に必要な情報（転送元の先頭のアドレスを示す情報、転送先の先頭のアドレスを示す情報、１回のＤＭＡ転送で行うサイクル数を示す情報、ＤＭＡ転送を行う回数を示す情報、その他の情報、及び、制御情報）を、ＲＡＭ４００の連続した領域に書き込むようになっている。尚、図５は２つのＤＭＡ転送を設定した場合のものである。
【００４１】
ＲＬＤ＿ＳＲＣレジスタ２１５は、ＤＭＡ転送に必要な情報が書き込まれているＲＡＭ４００内の先頭のアドレスをＣＰＵが書き込むためのものである。ＲＬＤ＿ＤＳＴレジスタ２１６、ＲＬＤ＿ＣＹＣレジスタ２１７、ＲＬＤ＿ＴＲＮレジスタ２１８、及び、ＲＬＤ＿ＳＥＴレジスタ２１９には、ＤＭＡ転送に必要な情報をＲＡＭ４００からＤＭＡチャンネルのレジスタ群（ＳＲＣレジスタ２０４、ＤＳＴレジスタ２０５、ＣＹＣレジスタ２０６、ＴＲＮレジスタ２０７、及び、ＳＥＴレジスタ２０８）にＤＭＡ転送するために必要な情報が書き込まれている。
【００４２】
マルチプレクサ２２０は、ＳＲＣレジスタ２０４に保持されているデータとＲＬＤ＿ＳＲＣレジスタ２１５に保持されているデータとのどちらか一方をＤＭＡ実行シーケンサ２０１からの指示に応じて選択する。マルチプレクサ２２０で選択されたデータはＳＲＣカウンタ２０９に与えられている。
【００４３】
マルチプレクサ２２１は、ＤＳＴレジスタ２０５に保持されているデータとＲＬＤ＿ＤＳＴレジスタ２１６に保持されているデータとのどちらか一方をＤＭＡ実行シーケンサ２０１からの指示に応じて選択する。マルチプレクサ２２１で選択されたデータはＤＳＴカウンタ２１０に与えられている。
【００４４】
マルチプレクサ２２２は、ＣＹＣレジスタ２０６に保持されているデータとＲＬＤ＿ＣＹＣレジスタ２１７に保持されているデータとのどちらか一方をＤＭＡ実行シーケンサ２０１からの指示に応じて選択する。マルチプレクサ２２２で選択されたデータはＴＭＰ＿ＣＹＣレジスタ２１１及びＣＹＣカウンタ２１２に与えられている。尚、ＣＹＣカウンタ２１２には、ＴＭＰ＿ＣＹＣレジスタ２１１に保持されているデータも与えられている。
【００４５】
マルチプレクサ２２３は、ＴＲＮレジスタ２０７に保持されているデータとＲＬＤ＿ＴＲＮレジスタ２１８に保持されているデータとのどちらか一方をＤＭＡ実行シーケンサ２０１からの指示に応じて選択する。マルチプレクサ２２３で選択されたデータはＴＲＮカウンタ２１３に与えられている。
【００４６】
マルチプレクサ２２４は、ＴＲＮレジスタ２０８に保持されているデータとＲＬＤ＿ＴＲＮレジスタ２１９に保持されているデータとのどちらか一方をＤＭＡ実行シーケンサ２０１からの指示に応じて選択する。マルチプレクサ２２４で選択されたデータはＣＵＲ＿ＳＥＴレジスタ２１４及びＡＣＣカウンタ２２５に与えられている。尚、ＡＣＣカウンタ２２５には、マルチプレクサ２２４で選択されたデータのうちのＣＲビットのデータのみが与えられている。また、ＡＣＣカウンタ２２５には、ＣＵＲ＿ＳＥＴレジスタ２１４に保持されているデータのうちのＣＲビットのデータも与えられている。
【００４７】
ＤＭＡチャンネルのＤＭＡ実行シーケンサ２０１の動作を図６及び図７に示すフローチャートを用いて詳細に説明する。まず、ＣＴＬレジスタ２０３のＥＮＢビットが１であるか否かを判定する（＃３０１）。ＥＮＢビットが１であれば（＃３０１のＹ）、＃３０２へ移行する。
【００４８】
尚、ＣＰＵは、使用中でないチャンネルに対して、ＤＭＡ転送の設定を終えると、すなわち、ＣＴＬレジスタ２０３、ＳＲＣレジスタ２０４、ＤＳＴレジスタ２０５、ＣＹＣレジスタ２０６、ＴＲＮレジスタ２０７、及び、ＳＥＴレジスタ２０８にＤＭＡ転送に必要な情報を書き込むと、ＣＴＬレジスタ２０３のＥＮＢビットを１にセットするようになっている。
【００４９】
＃３０２では、ＣＴＬレジスタ２０３のＲＥＳＵＭビットが１、ＭＯＤ１ビットが１、ＭＯＤ０ビットが０、かつ、レジスタコントローラ２０２内のレジスタのＥＯＰ＿Ｏビットが１であるか否かを判定する。＃３０２での判定結果が肯定であれば（＃３０２のＹ）、前述した＃３０１へ移行し、一方、否定であれば（＃３０２のＮ）、＃３０３へ移行する。
【００５０】
尚、ＣＰＵは、ＣＴＬレジスタ２０３のＥＮＢビットを０にセットすることによりＤＭＡ転送を中断させ、その後、ＥＮＢビットを１にセットすることによりＤＭＡ転送を再開させるに先立って、ＣＴＬレジスタ２０３のＲＥＳＵＭビットを１にセットするようになっている。
【００５１】
＃３０３では、ＣＴＬレジスタ２０３のＳ／Ｗ＿ＳＴＡＲＴビットが１、かつ、ＭＯＤ１ビット、ＭＯＤ０ビットが共に１であるか否かを判定する。＃３０３での判定結果が肯定であれば（＃３０３のＹ）、自身のレジスタのｒｅｌｏａｄビットを１にセットし（＃３０４）、その後、＃３０６へ移行する。一方、＃３０３での判定結果が否定であれば（＃３０３のＮ）、ｒｅｌｏａｄビットを０にセットし（＃３０５）、その後、＃３０６へ移行する。
【００５２】
尚、ｒｅｌｏａｄビットに応じてマルチプレクサ２２０、２２１、２２２、２２３、２２４での選択が切り換わるようになっている。具体的には、マルチプレクサ２２０、２２１、２２２、２２３、２２４は、ｒｅｌｏａｄビットが０であるときには、それぞれＳＲＣレジスタ２０４、ＤＳＴレジスタ２０５、ＣＹＣレジスタ２０６、ＴＲＮレジスタ２０７、ＳＥＴレジスタ２０８に保持されているデータを選択し、一方、ｒｅｌｏａｄビットが１であるときには、それぞれＲＬＤ＿ＳＲＣレジスタ２１５、ＲＬＤ＿ＤＳＴレジスタ２１６、ＲＬＤ＿ＣＹＣレジスタ２１７、ＲＬＤ＿ＴＲＮレジスタ２１８、ＲＬＤ＿ＳＥＴレジスタ２１９に保持されているデータを選択するようになっている。
【００５３】
＃３０６では、アイドル状態からロード＆ウエイト状態に遷移する旨をレジスタコントローラ２０２に通知する。＃３０６を終えると、ＣＴＬレジスタ２０３のＥＮＢビットが１であるか否かを判定する（＃３０７）。ＥＮＢビットが１であれば（＃３０７のＹ）、＃３０８へ移行し、一方、ＥＮＢビットが１でなければ（＃３０７のＮ）、前述した＃３０１へ移行する。
【００５４】
＃３０８では、調停回路１からのスタート信号がアサートされているか否かを判定する。スタート信号がアサートされていれば（＃３０８のＹ）、後述する＃３１０へ移行し、一方、スタート信号がアサートされていなければ（＃３０８のＮ）、＃３０９へ移行する。
【００５５】
＃３０９では、ＣＴＬレジスタ２０３のＳ／Ｗ＿ＳＴＡＲＴビットが１であるか否かを判定する。Ｓ／Ｗ＿ＳＴＡＲＴビットが１であれば（＃３０９のＹ）、後述する＃３１０へ移行し、一方、Ｓ／Ｗ＿ＳＴＡＲＴビットが１でなければ（＃３０９のＮ）、前述した＃３０７へ移行する。
【００５６】
＃３１０では、ＳＲＣカウンタ２０９の値に対応するアドレスから自身のバッファにデータを読み込む。＃３１０を終えると、調停回路１からのウエイト信号がアサートされているか否かを判定し（＃３１１）、ウエイト信号がアサートされていなければ（＃３１１のＮ）、＃３１２へ移行する。
【００５７】
＃３１２では、リード状態からライト状態に遷移する旨をレジスタコントローラ２０２に通知する。＃３１２を終えると、＃３１０で読み込んだデータをＤＳＴカウンタ２１０の値に対応するアドレスに書き込む（＃３１３）。次に、ウエイト信号がアサートされているか否かを判定し（＃３１４）、ウエイト信号がアサートされていなければ（＃３１４のＮ）、＃３１５へ移行する。
【００５８】
＃３１５では、レジスタコントローラ２０２内のレジスタのＥＯＰ＿Ｏビットが１であるか否かを判定する。ＥＯＰ＿Ｏビットが１であれば（＃３１５のＹ）、ＤＭＡ転送が終了した旨を調停回路１に通知する（＃３１６）。一方、ＥＯＰ＿Ｏビットが１でなければ（＃３１５のＮ）、後述する＃３３１へ移行する。
【００５９】
＃３１６を終えると、ＣＴＬレジスタ２０３のＣＥＰＥビットが１であるか否かを判定する（＃３１７）。ＣＥＰＥビットが１であれば（＃３１７のＹ）、割り込み信号を用いてＤＭＡ転送が終了した旨をＣＰＵに通知し（＃３１８）、その後、＃３１９へ移行する。一方、ＣＥＰＥビットが１でなければ（＃３１７のＮ）、＃３１８を行うことなく、＃３１９へ移行する。
【００６０】
＃３１９では、ＣＴＬレジスタ２０３のＭＯＤ１ビット、ＭＯＤ０ビットが共に０であるか否かを判定する。＃３１９での判定結果が肯定であれば（＃３１９のＹ）、ＣＴＬレジスタ２０３のＥＮＢビットに０をセットする（＃３２０）とともに、ライト状態からアイドル状態に遷移する旨をレジスタコントローラ２０２に通知する（＃３２１）。＃３２１を終えると、前述した＃３０１へ移行する。一方、＃３１９での判定結果が否定であれば（＃３１９のＮ）、＃３２２へ移行する。
【００６１】
＃３２２では、ＣＴＬレジスタ２０３のＭＯＤ１ビット、ＭＯＤ０ビットが共に１であるか否かを判定する。＃３２２での判定結果が肯定であれば（＃３２２のＹ）、＃３２３へ移行し、一方、＃３２２での判定結果が否定であれば（＃３２２のＮ）、後述する＃３２６へ移行する。
【００６２】
＃３２３では、自身のレジスタのｒｅｌｏａｄビットを反転させる。＃３２３を終えると、ｒｅｌｏａｄビットが１であるか否かを判定する（＃３２４）。ｒｅｌｏａｄビットが１であれば（＃３２４のＹ）、ＣＴＬレジスタ２０３のＳ／Ｗ＿ＳＴＡＲＴビットを１にセットし（＃３２５）、その後、後述する＃３２９へ移行する。一方、ｒｅｌｏａｄビットが１でなければ（＃３２４のＮ）、＃３２５を行うことなく、後述する＃３２９へ移行する。
【００６３】
＃３２２での判定結果が否定であるとき（＃３２２のＮ）に移行する＃３２６では、自身のレジスタのｒｅｌｏａｄビットを０にセットする。＃３２６を終えると、ＣＴＬレジスタ２０３のＭＯＤ１ビットが１、ＭＯＤ０ビットが０であるか否かを判定する（＃３２７）。
【００６４】
＃３２７での判定結果が肯定であれば（＃３２７のＹ）、ＭＯＤ１ビット、ＭＯＤ０ビットを共に０にセットし（＃３２８）、その後、＃３２９へ移行する。一方、＃３２７での判定結果が否定であれば（＃３２７のＮ）、＃３２８を行うことなく、＃３２９へ移行する。
【００６５】
＃３２９では、ＣＴＬレジスタ２０３のＣＥＰＥビットの値をＣＴＬレジスタ２０３のＮＥＰＥビットの値で更新する。＃３２９を終えると、ライト状態からロード＆ウエイト状態に遷移する旨をレジスタコントローラ２０２に通知する（＃３３０）。＃３３０を終えると、前述した＃３０７へ移行する。
【００６６】
＃３１５での判定結果が否定であるとき（＃３１５のＮ）に移行する＃３３１では、ＣＹＣカウンタ２１２にアンダーフローが発生しているか否かを判定する。ＣＹＣカウンタ２１２にアンダーフローが発生していれば（＃３３１のＹ）、指定されたサイクル数だけＤＭＡ転送を行った旨を調停回路１に通知する（＃３３２）。＃３３２の後は、前述した＃３３０へ移行する。一方、ＣＹＣカウンタ２１２にアンダーフローが発生していなければ（＃３３１のＮ）、＃３３３へ移行する。
【００６７】
＃３３３では、ＡＣＣカウンタ２２５にアンダーフローが発生しているか否かを判定する。ＡＣＣカウンタ２２５にアンダーフローが発生していれば（＃３３３のＹ）、許可されたサイクル数だけ連続してＤＭＡ転送を行った旨を調停回路１に通知する（＃３３４）。＃３３４の後は、前述した＃３３０へ移行する。一方、ＡＣＣカウンタ２２５にアンダーフローが発生していなければ（＃３３３のＮ）、ライト状態からリード状態に遷移する旨をレジスタコントローラ２０２に通知する（＃３３５）。＃３３５を終えると、前述した＃３０７へ移行する。
【００６８】
レジスタコントローラ２０２の動作を図８及び図９に示すフローチャートを用いて説明する。レジスタコントローラ２０２は、ＤＭＡ実行シーケンサ２０１からの状態遷移の通知を監視している（＃４０１、＃４０５、＃４１３、及び、＃４１６）。
【００６９】
まず、アイドル状態からロード＆ウエイト状態に遷移する旨の通知をＤＭＡ実行シーケンサ２０１から受けた場合について説明する。このときには、＃４０１での判定結果が肯定になり（＃４０１のＹ）、自身のレジスタのＥＯＰ＿Ｏビットが１、または、ＣＴＬレジスタ２０３のＲＥＳＵＭビットが０であるか否かを判定する（＃４０２）。
【００７０】
＃４０２での判定結果が肯定であれば（＃４０２のＹ）、ＳＲＣカウンタ２０９のデータをマルチプレクサ２２０から与えられるデータで、ＤＳＴカウンタ２１０のデータをマルチプレクサ２２１から与えられるデータで、ＴＭＰ＿ＣＹＣレジスタ２１１及びＣＹＣカウンタ２１２のデータをマルチプレクサ２２２から与えられるデータで、ＴＲＮカウンタ２１３のデータをマルチプレクサ２２３から与えられるデータで、ＣＵＲ＿ＳＥＴレジスタ２１４及びＡＣＣカウンタ２２５のデータをマルチプレクサ２２４から与えられるデータで、それぞれ更新する（＃４０３）とともに、自身のレジスタのＥＯＰ＿Ｏビットを０にセットする（＃４０４）。
【００７１】
次に、リード状態からライト状態に遷移する旨の通知をＤＭＡ実行シーケンサ２０１から受けた場合について説明する。このときには、＃４０５での判定結果が肯定になり（＃４０５のＹ）、ＣＵＲ＿ＳＥＴレジスタ２１４のＤＳＤＩＲビットが１であるか否かを判定する（＃４０６）。
【００７２】
ＤＳＤＩＲビットが１であれば（＃４０６のＹ）、ＳＲＣカウンタ２０９の値を１だけインクリメントさせ（＃４０７）、その後、＃４０８へ移行する。一方、ＤＳＤＩＲビットが１でなければ（＃４０６のＮ）、＃４０７を行うことなく、＃４０８へ移行する。
【００７３】
＃４０８では、ＣＹＣカウンタ２１２及びＡＣＣカウンタ２２５の値を１だけデクリメントさせる。＃４０８を終えると、ＣＹＣカウンタ２１２にアンダーフローが発生しているか否かを判定する（＃４０９）。ＣＹＣカウンタ２１２にアンダーフローが発生していれば（＃４０９のＹ）、ＴＲＮカウンタ２１３の値が０であるか否かを判定する（＃４１０）。
【００７４】
ＴＲＮカウンタ２１３の値が０でなければ（＃４１０のＮ）、ＴＲＮカウンタ２１３の値を１だけデクリメントさせる（＃４１１）。一方、ＴＲＮカウンタ２１３の値が０であれば（＃４１０のＹ）、自身のレジスタのＥＯＰ＿Ｏビットを１にセットする（＃４１２）。
【００７５】
次に、ライト状態からアイドル状態に遷移する旨の通知、または、ライト状態からリード状態に遷移する旨の通知をシーケンサ２０１から受けた場合について説明する。このときには、＃４１３での判定結果が肯定になり（＃４１３のＹ）、ＣＵＲ＿ＳＥＴレジスタ２１４のＤＤＤＩＲビットが１であるか否かを判定する（＃４１４）。ＤＤＤＩＲビットが１であれば（＃４１４のＹ）、ＤＳＴカウンタ２１０の値を１だけインクリメントさせる（＃４１５）。
【００７６】
次に、ライト状態からロード＆ウエイト状態に遷移する旨の通知をＤＭＡ実行シーケンサ２０１から受けた場合について説明する。このときには、＃４１６での判定結果が肯定になり（＃４１６のＹ）、自身のレジスタのＥＯＰ＿Ｏビットが１であるか否かを判定する（＃４１７）。
【００７７】
ＥＯＰ＿Ｏビットが１であれば（＃４１７のＹ）、前述した＃４０３及び＃４０４を行う。一方、ＥＯＰ＿Ｏビットが１でなければ（＃４１７のＮ）、ＣＹＣカウンタ２１２にアンダーフローが発生しているか否かを判定する（＃４１８）。
【００７８】
ＣＹＣカウンタ２１２にアンダーフローが発生していれば（＃４１８のＹ）、ＣＹＣカウンタ２１２の値をＴＭＰ＿ＣＹＣレジスタ２１１の値で更新する（＃４１９）とともに、ＡＣＣカウンタ２２５の値をＣＵＲ＿ＳＥＴレジスタ２１４のＣＲビットが示す値で更新する（＃４２０）。＃４２０を終えると、前述した＃４１４へ移行する。一方、ＣＹＣカウンタ２１２にアンダーフローが発生していなければ（＃４１８のＮ）、＃４２１へ移行する。
【００７９】
＃４２１では、ＡＣＣカウンタ２２５にアンダーフローが発生しているか否かを判定する（＃４２１）。ＡＣＣカウンタ２２５にアンダーフローが発生していれば（＃４２１のＹ）、前述した＃４２０へ移行する。一方、ＡＣＣカウンタ２２５にアンダーフローが発生していなければ（＃４２１のＮ）、前述した＃４１４へ移行する。
【００８０】
以上に述べた調停回路１のＤＭＡ起動制御部１０１及びチャンネル決定シーケンサ１０２、並びに、各ＤＭＡチャンネル２−１、２−２、２−３、２−４のＤＭＡ実行シーケンサ２０１及びレジスタコントローラ２０２の動作により、ＤＭＡ転送が要求されているＤＭＡチャンネルの中で優先順位が最も高いものがＤＭＡ転送を行うが、１つのサービス実行手段が許可されたサイクル数だけ連続してＤＭＡ転送を行う毎に、そのサービス実行手段の優先順位が最も低くなる。
【００８１】
そして、各ＤＭＡチャンネル２−１、２−２、２−３、２−４では、連続して行うことができるＤＭＡ転送のサイクル数がＣＵＲ＿ＳＥＴレジスタ２１４のＣＲビットの値によって決まる（具体的には、ＣＵＲ＿ＳＥＴレジスタ２１４のＣＲビットの値＋１になる）ので、ＣＰＵは、１つのＤＭＡチャンネルが連続して行うことができるＤＭＡ転送のサイクル数を各ＤＭＡチャンネル２−１、２−２、２−３、２−４毎に自由に設定することができる。尚、あるＤＭＡチャンネルが連続してＤＭＡ転送を行うことができるサイクル数を他のＤＭＡチャンネルのそれよりも大きく設定することにより、そのＤＭＡチャンネルに優先的にＤＭＡ転送を実行させることができる。
【００８２】
したがって、特定のＤＭＡチャンネルが独占してＤＭＡ転送を実行するという問題を回避した上で、任意のＤＭＡチャンネルに優先的にＤＭＡ転送を実行させることができるようになる。
【００８３】
例えば、ＤＭＡチャンネル２−１では、ＣＹＣカウンタ２１２の値が２、ＴＲＮカウンタ２１３の値が０、ＣＵＲ＿ＳＥＴレジスタ２１４のＣＲビットの値が１であり、ＤＭＡチャンネル２−２では、ＣＹＣカウンタ２１２の値が４、ＴＲＮカウンタ２１３の値が０、ＣＵＲ＿ＳＥＴレジスタ２１４のＣＲビットの値が２であり、ＤＭＡチャンネル２−３では、ＣＹＣカウンタ２１２の値が０、ＴＲＮカウンタ２１３の値が０、ＣＵＲ＿ＳＥＴレジスタ２１４のＣＲビットの値が０であり、ＤＭＡチャンネル２−４では、ＣＹＣカウンタ２１２の値が０、ＴＲＮカウンタ２１３の値が０、ＣＵＲ＿ＳＥＴレジスタ２１４のＣＲビットの値が０であるときに、図１０に示すように、入力信号ＤＭＡ＿ＲＥＱ１、ＤＭＡ＿ＲＥＱ２、ＤＭＡ＿ＲＥＱ３、ＤＭＡ＿ＲＥＱ４が変化したとすると、ＤＭＡ転送を行うＤＭＡチャンネルＡＣＴ．ＣＨは同図に示すように変化する。
【００８４】
尚、図１０において、Ｔは１サイクルの期間を示しており、また、ＣＨ１、ＣＨ２、ＣＨ３、ＣＨ４はそれぞれＤＭＡチャンネル２−１、２−２、２−３、２−４を示しており、また、ＮＯＮはＤＭＡチャンネル２−１、２−２、２−３、２−４のいずれもＤＭＡ転送を行っていないことを示している。また、図１０は同図のｔ１〜ｔ２の間でシステムバス３００の使用権が取り下げられないものと仮定した場合のものである。
【００８５】
また、各ＤＭＡチャンネル２−１、２−２、２−３、２−４では、ＤＭＡ転送を開始するにあたって、設定用レジスタ群（ＳＲＣレジスタ２０４、ＤＳＴレジスタ２０５、ＣＹＣレジスタ２０６、ＴＲＮレジスタ２０７、及び、ＳＥＴレジスタ２０８）の値を動作用レジスタ群（ＳＲＣカウンタ２０９、ＤＳＴカウンタ２１０、ＴＭＰ＿ＣＹＣレジスタ２１１、ＣＹＣカウンタ２１２、ＴＲＮカウンタ２１３、ＣＵＲ＿ＳＥＴレジスタ２１４、及び、ＡＣＣカウンタ２２５）に書き込むとともに、動作用レジスタ群の値に基づいてＤＭＡ転送を実行する。
【００８６】
したがって、ＤＭＡ転送に必要な情報を設定用レジスタ群に書き込むことによって、使用中のＤＭＡチャンネルに対してもＤＭＡ転送の設定を行うことができるようになる。これにより、あるタスクでＤＭＡ転送を行おうとしたときに、全てのＤＭＡチャンネルが使用中であっても、ＤＭＡ転送の終了を待つことなくＤＭＡ転送の設定を行うことができる可能性が生まれ、タスクスイッチング等によるＣＰＵの処理時間の浪費を低減させることができる。
【００８７】
また、ＣＴＬレジスタ２０３のＭＯＤ１ビット及びＭＯＤ０ビットに応じて動作が以下のように異なる。ＤＭＡ転送が終了したときに、ＭＯＤ１ビット、ＭＯＤ０ビットが共に０にセットされていれば、アイドル状態（ＤＭＡ転送が禁止された状態）になる（以下、「ノーマルモード」と称する）。
【００８８】
ＤＭＡ転送が終了したときに、ＭＯＤ１ビットが０、ＭＯＤ０ビットが１にそれぞれセットされていれば、ロード＆ウエイト状態（動作用レジスタ群の値を設定用レジスタ群の値で更新してＤＭＡ転送が要求されるのを待っている状態）になるので、ＣＰＵの介在なしで次のＤＭＡ転送が開始される（以下、「オートリピートモード」と称する）。
【００８９】
ＤＭＡ転送が終了したときに、ＭＯＤ１ビットが１、ＭＯＤ０ビットが０にそれぞれセットされていれば、ＭＯＤ１ビット、ＭＯＤ０ビットを共に０にセットしてからロード＆ウエイト状態になるので、ＣＰＵの介在なしで次のＤＭＡ転送が開始されるが、そのＤＭＡ転送が終了すると、アイドル状態になる（以下、「オートスタートモード」と称する）。
【００９０】
したがって、ＣＰＵは、使用中でないＤＭＡチャンネルに対してＤＭＡ転送を設定した場合にはノーマルモードに、設定したＤＭＡ転送が繰り返し行われるようにしたい場合にはオートリピートモードに、使用中のＤＭＡチャンネルに対してＤＭＡ転送を設定した場合にはオートスタートモードに、それぞれＤＭＡチャンネルの動作モードが切り換わるように、ＣＴＬレジスタ２０３のＭＯＤ１ビット及びＭＯＤ０ビットを書き換えればよい。
【００９１】
また、ＤＭＡ転送が実行可能になったとき（ＣＴＬレジスタ２０３のＥＮＢビットが１にセットされたとき）に、ＣＴＬレジスタ２０３のＳ／Ｗ＿ＳＴＡＲＴビットが１、ＭＯＤ１ビット、ＭＯＤ０ビットが共に１である場合には、ＤＭＡ転送に必要な情報をＲＡＭ４００から設定用レジスタ群にＤＭＡ転送するために必要な情報をリロードレジスタ群（ＲＬＤ＿ＳＲＣレジスタ２１５、ＲＬＤ＿ＤＳＴレジスタ２１６、ＲＬＤ＿ＣＹＣレジスタ２１７、ＲＬＤ＿ＴＲＮレジスタ２１８、及び、ＲＬＤ＿ＳＥＴレジスタ２１９）から動作用レジスタ群に書き込んだ後に、動作用レジスタ群の値に基づいてＤＭＡ転送を実行するので、ＤＭＡ転送に必要な情報がＲＡＭ４００から設定用レジスタ群にＤＭＡ転送される。その後、ＭＯＤ１ビット、ＭＯＤ０ビットが共に１である間は、ＤＭＡ転送に必要な情報をＲＡＭ４００から設定用レジスタ群にＤＭＡ転送するという動作と、ＲＡＭ４００から設定用レジスタ群にＤＭＡ転送された情報に基づいてＤＭＡ転送を行うという動作とが交互に行われる（以下、「リロードモード」と称する）。
【００９２】
このリロードモードにおいては、希望する全てのＤＭＡ転送を実行させるためには、それらの各ＤＭＡ転送に必要な情報を、一例として図５に示すように、ＲＡＭ４００に書き込んだ後に、ＣＴＬレジスタ２０３のＳ／Ｗ＿ＳＴＡＲＴビットを１に、ＭＯＤ１ビット、ＭＯＤ０ビットを共に１にそれぞれセットするとともに、最初のＤＭＡ転送に関する情報が記憶されているＲＡＭ４００の先頭のアドレス（図５の場合には、２０００００００Ｈ）をＲＬＤ＿ＳＲＣレジスタ２１５に書き込んだ上で、ＣＴＬレジスタ２０３のＥＮＢビットを１にセットすればよく、複数のＤＭＡ転送を１度に設定することができるようになる。
【００９３】
したがって、ＣＰＵは、ＤＭＡチャンネルに対して複数のＤＭＡ転送を設定したいときにはリロードモードを使用することによって、ＤＭＡ転送の設定に割かれる処理時間を低減させることができるようになる。
【００９４】
また、ＤＭＡ転送が終了したときに、ＣＴＬレジスタ２０３のＣＥＰＥビットが０であれば、ＤＭＡ転送が終了した旨を通知する割り込みをＣＰＵに対して行わない。したがって、ＣＰＵは、次のＤＭＡ転送の設定を行ったときには、ＣＥＰＥビットを０にセットしておけば、１つ前に設定したＤＭＡ転送が終了してもＤＭＡコントローラから割り込みを受けないので、ＤＭＡコントローラからの無意味な割り込みがなくなり、その分だけ多くの時間を他の処理に費やすことができる。
【００９５】
尚、ＣＰＵは、システムバスの使用権を持っているときには、ＣＴＬレジスタ２０３の値を書き換えることによって、ＤＭＡチャンネルの動作モード、及び、ＤＭＡ転送終了時の割り込みの有無をいつでも切り換えることができるので、状況の変化に容易に対応することができる。
【００９６】
その他には、ＣＹＣレジスタ２０６に設定された値をｐ、ＴＲＮレジスタ２０７に設定された値をｑとすると、ＤＭＡ転送が要求される毎に（ｐ＋１）サイクルのＤＭＡ転送を行い、その後、新たなＤＭＡ転送要求が発生するまで待機状態になる。そして、（ｑ＋１）回目のＤＭＡ転送の要求に対してＤＭＡ転送を行った時点で動作を終了する。すなわち、（ｐ＋１）サイクルのＤＭＡ転送を（ｑ＋１）回行うことになる。
【００９７】
したがって、ＣＰＵは、ＡサイクルのＤＭＡ転送をＢ回だけ繰り返し行いたい場合、ＣＹＣレジスタ２０６の値をＡ−１に、ＴＲＮレジスタの値をＢ−１にそれぞれ設定するという作業を一度だけ行えばよく、これにより、ＣＰＵの負担が軽減するので、その分、システムの性能低下を抑制することができる。
【００９８】
【発明の効果】
以上説明したように、本発明のデータ処理制御装置によれば、サービスの実行が要求されているサービス実行手段の中で優先順位が最も高いものがサービスの実行を開始することができるが、１つのサービス実行手段が許可された量だけ連続してサービスを実行する毎に、そのサービス実行手段の優先順位が最も低くなり、また、１つのサービス実行手段が連続して実行することができるサービス量を各サービス実行手段毎に自由に設定することができるので、特定のサービス実行手段が独占してサービスを実行するという問題を回避した上で、任意のサービス実行手段に優先的にサービスを実行させることができるようになる。
【図面の簡単な説明】
【図１】本発明の一実施形態であるＤＭＡコントローラのブロック図である。
【図２】図１における各ＤＭＡチャンネルの回路構成を示す図である。
【図３】図１におけるＤＭＡ起動制御部の動作を説明するためのフローチャートである。
【図４】図１におけるチャンネル決定シーケンサの動作を説明するためのフローチャートである。
【図５】リロードモードを用いてＤＭＡ転送を行う場合に、ＣＰＵによってＲＡＭに書き込まれる内容を説明するための図である。
【図６】図２におけるＤＭＡ実行シーケンサの動作を説明するためのフローチャートである。
【図７】図２におけるＤＭＡ実行シーケンサの動作を説明するためのフローチャートである。
【図８】図２におけるレジスタコントローラの動作を説明するためのフローチャートである。
【図９】図２におけるレジスタコントローラの動作を説明するためのフローチャートである。
【図１０】本実施形態のＤＭＡコントローラにおいて、ＤＭＡ転送を行うＤＭＡチャンネルが推移する様子の一例を示す図である。
【図１１】１つのチャンネルが許可された量だけ連続してサービスを実行したときに、各チャンネルの優勢順位がどのように更新されるかを示す図である。
【符号の説明】
１　　調停回路
２−１、２−２、２−３、２−４　　ＤＭＡチャンネル
１０１　　ＤＭＡ起動制御部
１０２　　チャンネル決定シーケンサ
１０３　　リクエストレジスタ
１０４　　エンドレジスタ
１０５　　起動チャンネルレジスタ
２０１　　シーケンサ
２０２　　レジスタコントローラ
２０３　　ＣＴＬレジスタ
２０４　　ＳＲＣレジスタ
２０５　　ＤＳＴレジスタ
２０６　　ＣＹＣレジスタ
２０７　　ＴＲＮレジスタ
２０８　　ＳＥＴレジスタ
２０９　　ＳＲＣカウンタ
２１０　　ＤＳＲカウンタ
２１１　　ＴＭＰ＿ＣＹＣレジスタ
２１２　　ＣＹＣカウンタ
２１３　　ＴＲＮカウンタ
２１４　　ＣＵＲ＿ＳＥＴレジスタ
２１５　　ＲＬＤ＿ＳＲＣレジスタ
２１６　　ＲＬＤ＿ＤＳＴレジスタ
２１７　　ＲＬＤ＿ＣＹＣレジスタ
２１８　　ＲＬＤ＿ＴＲＮレジスタ
２１９　　ＲＬＤ＿ＳＥＴレジスタ
２２０、２２１、２２２、２２３、２２４　　マルチプレクサ
２２５　　ＡＣＣカウンタ
３００　　システムバス
４００　　ＲＡＭ
【図１】
2004118298.tif 000003
【図２】
2004118298.tif 000004
【図３】
2004118298.tif 000005
【図４】
2004118298.tif 000006
【図５】
2004118298.tif 000007
【図６】
2004118298.tif 000008
【図７】
2004118298.tif 000009
【図８】
2004118298.tif 000010
【図９】
2004118298.tif 000011
【図１０】
2004118298.tif 000012
【図１１】
2004118298.tif 000013