(57)【要約】【課題】本発明の課題の一側面は実行待ちコマンドのタイムアウトの発生を防止するためのデータ転送装置を提供することである。【解決手段】本実施例にかかるデータ転送装置の一側面によれば、記憶部に記憶されたデータを複数の他の装置に対してダイレクトメモリアクセス（ＤＭＡ）転送するためのデータ転送装置において、データの転送先となる該複数の他の装置に対応して設けられ、ＤＭＡ転送命令を保持し、保持した該ＤＭＡ転送命令の数を出力する複数のチャネル部と、それぞれの該チャネル部に対応して設けられ、該ＤＭＡ転送命令を保持した数に基づいて該他の装置に対しての該ＤＭＡ転送命令の優先度を設定する複数の優先度設定部と、該複数の優先度設定部からの情報に基づき該ＤＭＡ転送命令を一つ選択する調停部と、該調停部が選択した該ＤＭＡ転送命令に応じて該他の装置に該記憶部のデータをＤＭＡ転送するデータ転送処理部を備えたことを特徴とする。【選択図】図２
2010044645.tif 000002
【特許請求の範囲】
【請求項１】
記憶部に記憶されたデータを複数の他の装置に対してダイレクトメモリアクセス（ＤＭＡ）転送するためのデータ転送装置において、
データの転送先となる該複数の他の装置に対応して設けられ、ＤＭＡ転送命令を保持し、保持した該ＤＭＡ転送命令の数を出力する複数のチャネル部と、
それぞれの該チャネル部に対応して設けられ、該ＤＭＡ転送命令を保持した数に基づいて該他の装置に対しての該ＤＭＡ転送命令の優先度を設定する複数の優先度設定部と、
該複数の優先度設定部からの情報に基づき該ＤＭＡ転送命令を一つ選択する調停部と、
該調停部が選択した該ＤＭＡ転送命令に応じて該他の装置に該記憶部のデータをＤＭＡ転送するデータ転送処理部を
備えたことを特徴とするデータ転送装置。
【請求項２】
該調停部は該複数の優先度設定部に設定された優先度ごとに設けられ、同一優先度を設定した複数の該他の装置から一定の順序で一つの装置を選択する複数の第一調停部と、該複数の第一調停部が選択した該装置から該優先度に応じて一つ選択する第二調停部とを有することを特徴とする、請求項１に記載のデータ転送装置。
【請求項３】
該第二調停部は該優先度に応じた該他の装置の選択順位を設定した優先度テーブルを記憶するテーブルレジスタと、該優先度テーブルに基づいて該他の装置を選択する調停処理部とを有することを特徴とする、請求項２に記載のデータ転送装置。
【請求項４】
該データ転送処理部がデータ転送処理中か否かを記憶する状態レジスタと、
該データ転送処理部によるＤＭＡ転送先である該他の装置に対応するチャネル部を記憶するチャネルレジスタと
をさらに有することを特徴とする、請求項２に記載のデータ転送装置。
【請求項５】
該第二調停部は該状態レジスタの情報に基づいて該チャネル部に終了信号を出力し、
該チャネル部は該終了信号を受信するまで該ＤＭＡ転送命令の実行要求を停止する
ことを特徴とする、請求項４に記載のデータ転送装置。
【請求項６】
該優先度設定部は優先度を判定するための一つ以上の閾値を記憶する閾値レジスタを有することを特徴とする、請求項１に記載のデータ転送装置。
【請求項７】
記憶部に記憶されたデータを複数の他の装置に対してダイレクトメモリアクセス（ＤＭＡ）転送するためのデータ転送装置のデータ転送方法において、
データの転送先となる該複数の他の装置に対応してＤＭＡ転送命令を保持し、
該ＤＭＡ転送命令を保持した数に基づいて該他の装置に対しての該ＤＭＡ転送命令の優先度を設定し、
設定した該優先度に基づきＤＭＡ転送する対象の該他の装置を一つ選択し、
選択した該他の装置に対して該記憶部のデータをＤＭＡ転送する
ことを特徴とするデータ転送装置のデータ転送方法。
【請求項８】
同一優先度を設定した複数の該他の装置から均等に一つの装置を選択し、選択した該装置から該優先度に応じてＤＭＡ転送する対象の該他の装置を一つ選択することを特徴とする、請求項７に記載のデータ転送装置のデータ転送方法。
【請求項９】
該優先度に応じた該他の装置の選択は該優先度による該他の装置の選択順位を設定した優先度テーブルに基づいて行うことを特徴とする、請求項８に記載のデータ転送装置のデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、実行要求された複数のコマンドの実行順序を調停するデータ転送装置に関する。
【背景技術】
【０００２】
メモリや磁気ディスクなどの複数の記憶部間のデータ転送はそれぞれの記憶部に接続したデータ転送装置により行う。データ転送装置間でのデータ転送を高速に処理するため、データ転送装置はＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などの制御部を介すことなく他のデータ転送装置に直接データ転送処理を行う。このような処理はダイレクトメモリアクセス（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ：ＤＭＡ）転送処理として一般に知られている。
【０００３】
データ転送装置はデータ転送先の装置ごとに対応したチャネル部を有する。データ転送先の装置ごとに対応したチャネル部は外部サーバ等からデータ転送要求があると、制御部から出力されたＤＭＡ転送命令であるコマンドを保持する。各チャネル部は一つ以上のコマンドを保持すると、ＤＭＡ転送処理を実行するデータ転送処理部に対しコマンド実行を要求する要求信号を出力する。データ転送処理部は要求信号を受け付けると、要求信号を出力したチャネル部に保持されたコマンドを実行する。
【０００４】
データ転送装置が複数の装置との間でデータ転送を行う場合、複数のチャネル部は一つのデータ転送処理部を共有する。データ転送処理部は一度に一つのコマンドしか実行できない。このため複数のチャネル部から同時に複数の要求信号が出力された場合、データ転送処理部はそのうちの一つを選択し実行する必要がある。制御部からの複数のコマンドを入力とし、特定の調停条件にしたがって一つのコマンドを選択しデータ転送処理部に実行させる装置を調停装置という。
【０００５】
調停装置の処理によっては、チャネル部に保持されたまま長時間実行されないコマンドが生じることがある。コマンドの実行待ち時間がある一定値を超えると、そのコマンドはタイムアウトとなり、データ転送エラーとなる。このようなタイムアウトを回避するため、コマンドの実行待ち時間に応じてコマンドの実行順序を調停する技術が特許文献１乃至特許文献３に開示されている。
【特許文献１】特開２００２−３６６５０７号公報
【特許文献２】特開２００２−２２９９３４号公報
【特許文献３】特開平０５−３４２１４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の課題の一側面は実行待ちコマンドのタイムアウトの発生を防止するためのデータ転送装置を提供することである。
【課題を解決するための手段】
【０００７】
本実施例にかかるデータ転送装置の一側面によれば、記憶部に記憶されたデータを複数の他の装置に対してダイレクトメモリアクセス（ＤＭＡ）転送するためのデータ転送装置において、データの転送先となる該複数の他の装置に対応して設けられ、ＤＭＡ転送命令を保持し、保持した該ＤＭＡ転送命令の数を出力する複数のチャネル部と、それぞれの該チャネル部に対応して設けられ、該ＤＭＡ転送命令を保持した数に基づいて該他の装置に対しての該ＤＭＡ転送命令の優先度を設定する複数の優先度設定部と、該複数の優先度設
定部からの情報に基づき該ＤＭＡ転送命令を一つ選択する調停部と、該調停部が選択した該ＤＭＡ転送命令に応じて該他の装置に該記憶部のデータをＤＭＡ転送するデータ転送処理部を備えたことを特徴とする。
【発明の効果】
【０００８】
本発明に係るデータ転送装置によれば、各チャネル部に保持されたコマンドの数に応じてコマンドの実行順位を調停し、タイムアウトの発生を防止することができる。
【発明を実施するための最良の形態】
【０００９】
以下、本実施の形態について説明する。なお、以下の実施例はプロセッサによるプログラムの処理でも実現可能である。
［データ制御装置］
図１はデータ制御装置１００のブロック図である。データ制御装置１００はｓ個の複数のコントローラモジュール１０４、スイッチ部１０２を有する。なお、図１には複数のコントローラモジュール１０４のうち一つのコントローラモジュール１０４の内部のブロック図を詳細に示す。
【００１０】
スイッチ部１０２は複数個のコントローラモジュール１０４間のデータ転送経路である。個々のコントローラモジュール１０４はそれぞれデータ転送装置１０６、中継部１０８、制御部１１０、記憶部１１２、ホストインターフェース１１４、ディスクインターフェース１１６を有する。
【００１１】
データ転送装置１０６はコントローラモジュール１０４以外の他のコントローラモジュール１０４に対するデータ転送処理を実行する。データ転送装置１０６は例えばＤＭＡ転送方式によりデータ転送処理を行い、制御部１１０が関与することなく、記憶部１１２や他のコントローラモジュール１０４との間で直接データの転送を行う。データ転送装置１０６はデータ転送処理群１２０、調停部１２２、優先度設定群１２６、およびチャネル群１２４を有する。
【００１２】
データ転送処理群１２０は他のコントローラモジュール１０４に設けられたデータ転送処理群１２０に対しＤＭＡ転送命令を実行する。チャネル群１２４は他のコントローラモジュール１０４に対するＤＭＡ転送命令であるデータ転送コマンドの数をデータ転送先のコントローラモジュールごとにカウントする。優先度設定群１２６はそのデータ転送コマンドの数に基づいてデータ転送コマンドの優先順位を設定する。調停部１２２は設定した優先順位に基づいてデータ転送コマンドを選択し、データ転送処理群１２０に選択したデータ転送コマンドを送信する。データ転送コマンドの数に基づいて実行すべきコマンドを選択することにより、コマンド数の多いチャネル群１２４のコマンドを優先的に処理する。これによりデータ制御装置１００はそれぞれのコントローラモジュール１０４に書き込まれたデータ転送コマンドのタイムアウトを防止することができる。
【００１３】
制御部１１０は例えばセントラルプロセッシングユニット（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：ＣＰＵ）であり、コントローラモジュール１０４を統括的に制御する。記憶部１１２はリードオンリーメモリ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ：ＲＯＭ）やランダムアクセスメモリ（Ｒａｎｄａｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ：ＲＡＭ）等のメモリであり、図示しない外部のサーバから送信される各種データや制御部１１０が発行するデータ転送コマンド等を記憶する。中継部１０８は例えばメモリコントローラハブ（Ｍｅｍｏｒｙ  Ｃｏｎｔｒｏｌｌｅｒ  Ｈｕｂ：ＭＣＨ）であり、制御部１１０、記憶部１１２、データ転送装置１０６間の信号伝達を中継する。
【００１４】
ホストインターフェース１１４は図示しない外部サーバと接続される。外部サーバはホ
ストインターフェース１１４を介してコントローラモジュール１０４にデータの書き込みや読み出し等の命令を行う。ディスクインターフェース１１６は図示しない磁気ディスク装置やＲＡＩＤ装置と接続される。個々のコントローラモジュール１０４はディスクインターフェース１１６を介して磁気ディスク装置等とデータの書き込みや読み出しを行う。［データ転送装置］
図２はデータ転送装置１０６のブロック図である。前述の通りデータ転送装置１０６はデータ転送処理群１２０、調停部１２２、優先度設定群１２６、チャネル群１２４を有する。優先度設定群１２６はｎ個の複数の優先度設定部３００を有する。チャネル群１２４はｎ個のチャネル部２００を有する。
【００１５】
データ転送処理群１２０はｍ個の複数のデータ転送処理部２０４を有する。データ転送処理部２０４は調停部１２２から送信されたデータ転送コマンドをそれぞれ独立に実行する。ここでｍはｎよりも小さい。
【００１６】
調停部１２２はｋ個の複数の第一調停部３０２を有する。また調停部１２２は第二調停部３０４を有する。
【００１７】
チャネル部２００は制御部１１０から送信されたコマンド数に応じてコマンドを記憶する図示しない記憶部１１２のアドレスを加算する。チャネル部２００はデータ転送先のコントローラモジュール１０４に応じて図示しない制御部１１０から送信されたコマンドの数を保持する。また、チャネル部２００は保持するコマンド数が１つ以上の場合にはそのチャネル部に対応するコマンドを実行する要求を出す。具体的にはチャネル部２００は優先度設定部３００に対し図示しない要求信号２１２、コマンドを記憶するアドレスを示すアドレス信号２１３およびチャネル部２００に保持されたコマンド数を示すコマンド数信号２１４を出力する。要求信号２１２、アドレス信号２１３、およびコマンド数信号２１４については後述する。
【００１８】
優先度設定部３００はチャネル部２００によって出力されたコマンド数信号２１４により要求信号２１２の優先度を設定する。個々の優先度設定部３００はそれぞれのチャネル部２００に対し設けられている。優先度設定部３００はそれぞれのチャネル部２００の機能の一部として設けても良い。優先度設定部３００は設定した優先度に対応する第一調停部３０２に対し要求信号２１２を出力する。ここで第一調停部３０２の数ｋは優先度設定部３００に設けた優先度の設定個数に等しい。優先度設定部３００はすべての第一調停部３０２に対しアドレス信号２１３を分岐出力する。
【００１９】
第一調停部３０２はラウンドロビン型の調停回路である。ラウンドロビン型の第一調停回路３０２は複数の優先度設定部３００から出力された要求信号２１２をチャネルごとに順番に選択する。第一調停部３０２は優先度設定部３００により出力された同一優先度の複数の要求信号２１２のうち１つを選択し、第二調停部３０４へ出力する。また第一調停部３０２は選択した要求信号２１２に対応するアドレス信号２１３、チャネル番号３１８を出力する。チャネル信号３１８については後述する。
【００２０】
第二調停部３０４はｋ個の第一調停部３０２からそれぞれ出力された要求信号２１２およびアドレス信号２１３のうち、第二調停部３０４で設定されている優先度に応じて１つの要求信号２１２およびアドレス信号２１３を選択する。そして第二調停部３０４はデータ転送処理をしていないデータ転送処理部２０４のいずれかに要求信号２１２、アドレス信号２１３を出力する。どの優先度を選択するかは後述する優先度テーブル８０４により決定する。優先度テーブル８０４はチャネル部２００による優先度の高い要求ほど選択される確率が高くなるように設定される。チャネル部２００による優先度の高い要求を優先的に選択する事により、チャネル部２００のいずれかに蓄積されたコマンド数が過剰に多
くなるのを防ぐことが出来る。これによりチャネル部２００に要求されたコマンドのタイムアウトを防止する事ができる。
【００２１】
要求信号２１２を受信したデータ転送処理部２０４は入力されたアドレス信号２１３に基づいて図示しない記憶部１１２を参照し、アドレス信号２１３に対応するコマンドを記憶部１１２から取得する。データ転送処理部２０４はアドレス信号２１３に対応するコマンドに基づいてデータ転送先のコントローラモジュール１０４に対しデータ転送処理を実行する。データ転送処理部２０４はコマンドを実行後、図示しない状態信号２１８、終了信号２２０を第二調停部３０４に出力する。
【００２２】
第二調停部３０４はデータ転送処理部２０４により出力された状態信号２１８および終了信号２２０を受信すると、後述するチャネルレジスタ８０６に記憶したチャネル番号３１８を参照する。第二調停部３０４は参照したチャネル番号３１８に基づいて、要求信号２１６に対応するそれぞれのチャネル部２００に対し状態信号４１２および終了信号４２０を出力する。チャネル部２００は終了信号４２０を受けて、終了割り込み信号２２２を制御部１１０へ出力する。これによりチャネル部２００は制御部１１０に対しデータ転送処理が終了したことを通知することが出来る。以上より、本実施例に係るデータ転送装置によれば、各チャネル部に保持されたコマンドの数に応じてコマンドの実行順位を調停し、タイムアウトの発生を防止することができる。
［チャネル部］
図３はチャネル部２００の詳細ブロック図である。それぞれのチャネル部２００はステートマシン４００、開始レジスタ４０２、終了レジスタ４０４、状態レジスタ４０６を有する。
【００２３】
チャネル部２００により出力されるアドレス信号２１３に対応するコマンドの実体は図示しない記憶部１１２に記憶されている。本実施例においてコマンドの実体は記憶部１１２の連続したアドレス空間に記憶されている。よってその記憶領域の開始アドレスと終了アドレスから、記憶部１１２に記憶されたコマンド数を取得することが出来る。
【００２４】
開始レジスタ４０２は記憶部１１２に記憶されたコマンド群の開始アドレスを記憶する。終了レジスタ４０４は記憶部１１２に記憶されたコマンド群の終了アドレスを記憶する。制御部１１０から記憶部１１２にコマンドが書き込まれるたびに終了レジスタ４０４をカウントアップすることで、記憶部１１２に記憶されたコマンド数を把握することができる。なお、コマンド数をカウントするためのカウンタを別途設け、記憶部１１２にコマンドが書き込まれるたびにカウントアップしても良い。これにより記憶領域の開始アドレスと終了アドレスを用いて演算することなく記憶部１１２に記憶されたコマンド数を取得することが出来る。
【００２５】
ステートマシン４００は開始レジスタ４０２および終了レジスタ４０４に保持されたアドレス値の差分を計算し、差分が“０”でなければ要求信号２１２、アドレス信号２１３、およびコマンド数信号２１４を優先度設定部３００へ出力する。ステートマシン４００は要求信号２１２が受け入れられた事を示す承認信号４１０を優先度設定部３００のいずれかから受信すると要求信号２１２の出力を停止する。承認信号４１０を受信した場合に要求信号２１２の出力を停止することにより、ステートマシン４００はコマンドの実行が終了していないチャネルからの実行要求を止め、同一チャネルに対するコマンドの重複実行を回避することが出来る。重複実行を回避することにより、コマンドの実行が特定のチャネルに偏るのを防止することが出来る。
【００２６】
ステートマシン４００は図示しないデータ転送処理部２０４でのデータ転送処理が終了した事を示す終了信号４２０および処理結果を示す状態信号４１２を第二調停部３０４か
ら受信する。終了信号４２０および状態信号４１２を受信したステートマシン４００は開始レジスタ４０２のアドレスを加算し、状態レジスタ４０６に状態信号４１２を保持させる。開始レジスタ４０２のアドレスを加算した後、ステートマシン４００は開始レジスタ４０２および終了レジスタ４０４に保持されたアドレス値の差分を計算する。ステートマシン４００は差分が“０”でなければ要求信号２１２、アドレス信号２１３、およびコマンド数信号２１４を再び出力する。
【００２７】
ステートマシン４００は制御部１１０に対し割り込み信号２２２を出力する。制御部１１０は状態レジスタ４０６に保持した状態信号４１２を参照しデータ転送処理部２０４によるデータ転送処理結果を確認する。
［ステートマシン］
図４はステートマシン４００の動作フローチャート図である。
【００２８】
ステートマシン４００は開始レジスタ４０２および終了レジスタ４０４を参照し、開始アドレスと終了アドレスとの差分が１以上であれば（Ｓ１０、ＹＥＳ）要求信号２１２を優先度設定部３００に出力する（Ｓ１２）。開始アドレスと終了アドレスとの差分が１より小さければ（Ｓ１０、ＮＯ）実行すべきコマンドはないので要求信号２１２は出力されない。
【００２９】
ステートマシン４００は優先度設定部３００により出力される承認信号４１０を受信するまで要求信号２１２を出力し続けるが（Ｓ１４、ＮＯ）、承認信号４１０を受信すると、要求信号２１２の出力を停止する（Ｓ１６）。
【００３０】
ステートマシン４００は終了信号４２０を第二調停部３０４から受信するまで動作停止しているが（Ｓ１８、ＮＯ）、終了信号４２０を受信すると（Ｓ１８、ＹＥＳ）開始レジスタ４０２に１を加算し（Ｓ２０）、制御部１１０へ割り込み信号２２２を出力し（Ｓ２２）、ステップＳ１０からの処理を再び実行する。
［優先度設定部］
図５は優先度設定部３００のブロック図である。優先度設定部３００は優先度判定回路５００、閾値レジスタ５０２、ＯＲ回路５０４を有する。
【００３１】
チャネル部２００により出力された要求信号２１２およびコマンド数信号２１４は優先度判定回路５００に入力される。優先度判定回路５００はコマンド数信号２１４に応じて要求信号２１２の優先度を判定する優先度判定動作を開始する。閾値レジスタ５０２は優先度判定に必要な閾値を記憶している。この閾値レジスタ５０２の閾値はそれぞれの優先度設定部３００の外部から書き換えることも出来る。閾値レジスタ５０２の閾値を外部から書き換え可能にすることにより、調停動作に応じて閾値を最適化することができる。本実施例において閾値レジスタ５０２はそれぞれの優先度設定部３００に設けられているが、すべての優先度設定部３００までに共通のレジスタを１つ設けても良い。
【００３２】
優先度判定回路５００はコマンド数信号２１４と閾値レジスタ５０２に記憶された閾値とを比較し、要求信号２１２の優先度を設定する。優先度判定回路５００は設定した優先度に対応する図示しない第一調停部３０２に対し、要求信号２１２を出力する。本実施の形態においては、レベル高、レベル中、レベル低に対応する３つの第一調停部３０２がある。
【００３３】
優先度設定部３００に入力されたアドレス信号２１３は後述するそれぞれの第一調停部３０２に対し分岐して出力される。またそれぞれの第一調停部３０２から出力された承認信号４１０はＯＲ回路５０４に入力される。ＯＲ回路５０４はいずれかの承認信号４１０を受信すると、承認信号４１０を出力する。
［優先度判定回路］
図６は優先度判定回路５００の動作フローチャート図である。本実施例において、優先度判定回路５００は入力された要求信号２１２を３つの優先度レベルのいずれかに設定する。また、閾値レジスタ５０２はレベル高の判定値として“２０”を、レベル中の判定値として“１０”を記憶している。優先度判定回路５００はレベル高、レベル中、またはレベル低の要求信号２１２を判定レベルに応じて第一調停部３０２に出力する。
【００３４】
優先度判定回路５００は要求信号２１２が入力されていない場合（Ｓ１００、ＮＯ）待機状態であり、要求信号２１２が入力されると（Ｓ１００、ＹＥＳ）判定動作を開始する。例えば要求信号２１２の論理値が“０”のときは要求信号２１２が入力されていないと判定し、論理値が“１”のときは要求信号２１２が入力されていると判定する。
【００３５】
優先度判定回路５００は入力されたコマンド数信号２１４と閾値レジスタ５０２に記憶された閾値とを比較する。コマンド数信号２１４が閾値“２０”より大きい場合（Ｓ１０２、ＹＥＳ）、要求信号２１２をレベル高の第一調停部３０２へ出力する（Ｓ１０４）。コマンド数信号２１４が閾値“２０”より小さい場合（Ｓ１０２、ＮＯ）ステップＳ１０６を実行する。
【００３６】
優先度判定回路５００は入力されたコマンド数信号２１４が閾値“１０”よりも大きい場合（Ｓ１０６、ＹＥＳ）要求信号２１２をレベル中の第一調停部３０２へ出力する（Ｓ１０８）。一方コマンド数信号２１４が閾値“１０”よりも小さい場合（Ｓ１０６、ＮＯ）要求信号２１２をレベル小の第一調停部３０２へ出力する（Ｓ１１０）。
【００３７】
以上の通り優先度判定回路５００は入力された要求信号２１２およびコマンド数信号２１４に応じて選択された優先度に対応する第一調停部３０２のいずれかへ要求信号２１２を出力することができる。
［第一調停部］
図７はそれぞれの第一調停部３０２のブロック図である。第一調停部３０２は入力信号の調停処理を行う調停処理部３５０、調停処理部３５０により選択したチャネルのチャネル番号３１８を保持するチャネルレジスタ３５２を有する。
【００３８】
第一調停部３０２は、複数の優先度設定部３００により出力された同一優先度の要求信号２１２および要求信号２１２に対応するアドレス信号２１３を受信する。それぞれの第一調停部３０２は例えばラウンドロビン方式の調停処理部３５０を有しており、複数の要求信号２１２およびアドレス信号２１３のうちの一つの要求信号２１２およびアドレス信号２１３を偏り無く選択する。
【００３９】
調停処理部３５０は複数の要求信号２１２およびアドレス信号２１３のうち選択した一つの要求信号２１２およびアドレス信号２１３を第二調停部３０４へ出力する。調停処理部３５０は選択した要求信号２１２を出力した優先度設定部３００のチャネルの番号をチャネル番号３１８として出力する。調停処理部３５０は出力したチャネル番号３１８をチャネルレジスタ３５２に保持する。このように、優先度ごとに調停部を設けることにより優先度ごとの要求信号２１２の選択を均一化することができる。この結果、ラウンドロビン方式のそれぞれの第一調停部３０２は同一の優先度の要求信号２１２を出力するチャネル部２００から偏りなく１つのチャネルを選択することができる。
【００４０】
調停処理部３５０は要求信号２１２が受理されたことを表す承認信号４１０を第二調停部３０４から受信すると、チャネルレジスタ３５２に保持されたチャネル番号３１８を参照する。調停処理部３５０は参照したチャネル番号３１８に対応する優先度設定部３００に対し、承認信号４１０を出力する。要求信号２１２に対応するチャネル番号３１８をチ
ャネルレジスタ３５２に保持しておくことにより、調停処理部３５０は要求信号２１２を出力したチャネルに対して承認信号４１０を送信することができる。
［第二調停部］
図８はそれぞれの第一調停部３０２により出力された要求信号２１２を優先度に応じて調停する第二調停部３０４のブロック図である。
【００４１】
第二調停部３０４は調停処理部８００、テーブルレジスタ８０２、チャネルレジスタ８０６、ポインタレジスタ８０８、状態レジスタ８１０を有する。テーブルレジスタ８０２は優先度テーブル８０４を記憶する。チャネルレジスタ８０６はデータ転送処理部２０４に受理された要求信号２１２に対応するチャネル番号３１８を記憶する。状態レジスタ８１０はデータ転送処理部２０４における処理の状況を記憶する。第二調停部３０４はｋ個の第一調停部３０２により出力された要求信号２１２、アドレス信号２１３、チャネル番号３１８を受信する。
【００４２】
調停処理部８００はポインタ値と優先度との対応表であるテーブルレジスタ８０２に記憶された優先度テーブル８０４を参照する。調停処理部８００は優先度テーブル８０４から決定される優先度に対応する要求信号２１２およびアドレス信号２１３を処理が終了しているいずれかのデータ転送処理部２０４に送信する。調停処理部８００は各データ転送処理部２０４に送信した要求信号２１２に対応するチャネル番号３１８をチャネルレジスタ８０６に記憶する。調停処理部８００は要求信号２１２を受信したデータ転送処理部２０４が処理中であることを示すフラグを状態レジスタ８１０に記憶する。調停処理部８００は優先度テーブル８０４から優先度を参照する際に用いるポインタ値をポインタレジスタ８０８に記憶する。
【００４３】
データ転送処理部２０４はアドレス信号２１３に基づいて記憶部１１２のコマンドを参照しデータ転送処理を実行する。データ転送処理部２０４は処理が終了すると、第二調停部３０４に対し処理が成功したか失敗したかを示す状態信号４１２および処理が終了したことを示す終了信号４２０を出力する。調停処理部８００は終了信号２２０を受信するとデータ転送処理部２０４の処理が終了したことを示すフラグを状態レジスタ８１０に記憶する。調停処理部８００はチャネルレジスタ８０６に記憶した要求信号２１２に対応するチャネル番号３１８を参照し、要求信号２１２に対応するチャネル部２００に対し状態信号４１２および終了信号４２０を出力する。状態信号４１２および終了信号４２０により、第二調停部３０４はそれぞれのチャネル部２００に対しデータ転送処理が終了したことおよびデータ転送の処理結果を通知することが出来る。
［優先度テーブル］
図９は調停処理部８００が参照する優先度テーブル８０４である。優先度テーブル８０４において、列９００はポインタレジスタ８０８に記憶するポインタ値を、列９０２はポインタ値に対応する優先度を示す。本実施例において、優先度テーブル８０４は９行のデータを有している。９行のデータのうち５行はレベル高、３行はレベル中、１行はレベル低のコマンドとなっている。ポインタ値に対応する優先度の数をレベル高が多くなるように割り振ることにより、優先度テーブル８０４の一行目から順番に参照しながら調停処理部８００に優先度を設定すると、レベル高のコマンドがもっとも高い比率で選択され、レベル低のコマンドがもっとも低い比率で選択されるように設定することができる。本実施の形態の場合、レベル高のコマンドが選択される比率は約５６％であり、レベル低のコマンドが選択される比率は約１１％である。
【００４４】
行９０４は優先度テーブル８０４の一行目のデータである。行９０４において、ポインタ値“０”に対応する優先度はレベル高と設定されている。つまり、ポインタレジスタ８０８に保持されているポインタ値が“０”の場合、調停処理部８００はレベル高のコマンドに対応する第一調停部３０２からの要求信号２１２等を選択し、データ転送処理部２０
４に送信する。
【００４５】
行９０７は優先度テーブル８０４の二行目のデータである。行９０７において、ポインタ値“１”に対応する優先度はレベル中と設定されている。つまり、ポインタレジスタ８０８に保持されているポインタ値が“１”の場合、調停処理部８００はレベル中のコマンドに対応する第一調停部３０２からの要求信号２１２等を選択し、データ転送処理部２０４に送信する。
【００４６】
行９０８は優先度テーブル８０４の四行目のデータである。行９０８において、ポインタ値“５”に対応する優先度はレベル低と設定されている。つまり、ポインタレジスタ８０８に保持されているポインタ値が“５”の場合、調停処理部８００はレベル低のコマンドに対応する第一調停部３０２からの要求信号２１２等を選択し、データ転送処理部２０４に送信する。
【００４７】
行９０６は優先度テーブル８０４の最終行である９行目のデータである。調停処理部８００は行９０６を参照すると、次に選択すべき優先度の参照を再び一行目である行９０４からおこなう。優先度テーブル８０４の行数、および各行に設定した優先度は外部から書き換え可能である。これにより、それぞれのチャネル部２００に保持されたコマンド数が偏らないように優先度テーブル８０４を書き換えることができ、優先度の最適な割り振りが可能となる。
［調停処理部］
図１０は調停処理部８００の動作フローチャート図である。調停処理部８００はポインタレジスタ８０８に保持しているポインタの値を“０”にする（Ｓ２００）。調停処理部８００はそれぞれの第一調停部３０２のいずれかから要求信号２１２を受信するまで待機状態にあり（Ｓ２０２、ＮＯ）、要求信号２１２を受信するとステップＳ２０４に進む（Ｓ２０２、ＹＥＳ）。
【００４８】
調停処理部８００は状態レジスタ８１０を参照し、転送処理を実行していないデータ転送処理部２０４が無い場合はいずれかの転送処理が終了するまで待機状態となる（Ｓ２０４、ＮＯ）。調停処理部８００は転送処理が終了したデータ転送処理部２０４がある場合は（Ｓ２０４、ＹＥＳ）、優先度テーブル８０４からポインタレジスタ８０８のポインタ値に対応する優先度を読み出して設定する（Ｓ２０６）。例えばポインタ値が“０”の場合、調停処理部８００は優先度テーブル８０４の行９０４を参照し、優先度をレベル高に設定する。
【００４９】
調停処理部８００はステップＳ２０６で設定した優先度に対応する第一調停部３０２により出力された要求信号３１５ｊを受信しているか否かをチェックし、受信していない場合はステップＳ２１４の処理を実行する（Ｓ２０８、ＮＯ）。調停処理部８００は設定した優先度に対応するそれぞれの第一調停部３０２により出力された要求信号２１２を受信している場合は（Ｓ２０８、ＹＥＳ）、この要求信号２１２および対応するアドレス信号２１３をデータ転送処理部２０４に送信する（Ｓ２１０）。同時に調停処理部８００は要求信号２１２に対応するチャネル番号３１８をデータ転送処理部２０４に対応するチャネルレジスタ８０６に記憶する。また調停処理部８００は状態レジスタ８１０のフラグをデータ転送処理部２０４が処理中であることを示す状態に変更する。
【００５０】
調停処理部８００は要求信号２１２がデータ転送処理部２０４に出力されたことをそれぞれのチャネル部２００に通知するため承認信号４１０を出力する（Ｓ２１２）。調停処理部８００はポインタレジスタ８０８のポインタ値が“８”の場合は（Ｓ２１４、ＹＥＳ）ポインタ値を“０”にする（Ｓ２００）。調停処理部８００はポインタレジスタ８０８のポインタ値が“８”でない場合は（Ｓ２１４、ＮＯ）ポインタレジスタ８０８のポイン
タ値に“１”を加算する（Ｓ２１６）。ポインタ値の加算処理後、調停処理部８００はステップＳ２０２以降の処理を繰り返す。
【００５１】
上記動作によって、調停処理部８００は各データ転送処理部２０４の処理状態を把握することが出来、各データ転送処理部２０４に無駄なくデータ転送処理を実行させることが出来る。
【図面の簡単な説明】
【００５２】
【図１】データ制御装置のブロック図である。
【図２】データ転送装置のブロック図である。
【図３】チャネル部のブロック図である。
【図４】ステートマシンの動作フローチャート図である。
【図５】優先度設定部のブロック図である。
【図６】優先度判定回路の動作フロー図である。
【図７】第一調停部のブロック図である。
【図８】第二調停部のブロック図である。
【図９】優先度テーブル図である。
【図１０】調停処理部の動作フローチャート図である。
【符号の説明】
【００５３】
１００  データ制御装置
１０４  コントローラモジュール
１０６  データ転送装置
１１０  制御部
１１２  記憶部
１２０  データ転送処理群
１２２  調停部
１２４  チャネル群
１２６  優先度設定群
２０４  データ転送処理部
２００  チャネル部
３００  優先度設定部
３０２  第一調停部
３０４  第二調停部
２１２  要求信号
２１３  アドレス信号
２１４  コマンド数信号
４１０  承認信号
４１２  状態信号
４２０  終了信号
４００  ステートマシン
４０２  開始レジスタ
４０４  終了レジスタ
４０６  状態レジスタ
２２２  割り込み信号
５００  優先度判定回路
５０２  閾値レジスタ
３５０  調停処理部
３５２  チャネルレジスタ
８００  調停処理部
８０２  テーブルレジスタ
８０４  優先度テーブル
８０６  チャネルレジスタ
８０８  ポインタレジスタ
８１０  状態レジスタ
【図１】
2010044645.tif 000003
【図２】
2010044645.tif 000004
【図３】
2010044645.tif 000005
【図４】
2010044645.tif 000006
【図５】
2010044645.tif 000007
【図６】
2010044645.tif 000008
【図７】
2010044645.tif 000009
【図８】
2010044645.tif 000010
【図９】
2010044645.tif 000011
【図１０】
2010044645.tif 000012