(57)【特許請求の範囲】
【請求項１】
データ転送用のコマンドを前記データの転送先に従って格納するように用意されるチャネルを複数有する第１のデータ保存部を含み、且つ前記チャネルの先頭に格納される前記データ転送用のコマンドを実行して前記データを転送するメモリアクセス制御部と、
ある１つのチャネルに格納されるコマンドの数が予め定められた上限値を超えない場合、前記第１のデータ保存部のチャネルにコマンドを格納し、前記ある１つのチャネルのコマンドの数が前記上限値を超えた場合、前記第１のデータ保存部のチャネルにコマンドを格納することを停止し且つ第２のデータ保存部を生成し且つ前記第２のデータ保存部にコマンドを格納する統括制御部と、
を有するデータ通信制御装置。
【請求項２】
前記統括制御部は、前記第２のデータ保存部にコマンドが存在する場合、前記第１のデータ保存部のチャネルにコマンドを格納することを行わず、コマンドを前記第２のデータ保存部に格納する請求項１に記載のデータ通信制御装置。
【請求項３】
前記統括制御部は、前記第１のデータ保存部の各チャネルに格納されているコマンドの数が零になった場合、前記第２のデータ保存部に格納されているコマンドを先頭から取り出して前記第１のデータ保存部のチャネルに格納する請求項１または２に記載のデータ通信制御装置。
【請求項４】
前記統括制御部は、前記第１のデータ保存部の各チャネルに格納されているコマンドの数が前記上限値を下回った場合、前記第２のデータ保存部に格納されているコマンドを先頭から取り出して前記第１のデータ保存部のチャネルに格納する請求項１または２に記載のデータ通信制御装置。
【請求項５】
前記統括制御部は、前記第１のデータ保存部の各チャネルに格納されているコマンドの数が、予め定められた下限値を下回った場合、前記第２のデータ保存部に格納されているコマンドを先頭から取り出して前記第１のデータ保存部のチャネルに格納する請求項１または２に記載のデータ通信制御装置。
【請求項６】
データ転送用のコマンドを前記データの転送先に従って格納するように用意されるチャネルを複数有する第１のデータ保存部を含み、且つ前記チャネルの先頭に格納される前記データ転送用のコマンドを実行して前記データを転送するメモリアクセス制御部と、統括制御部とを有するデータ通信制御装置を制御するためのデータ通信制御方法であって、
前記統括制御部は、ある１つのチャネルに格納されるコマンドの数が予め定められた上限値を超えない場合、前記第１のデータ保存部のチャネルにコマンドを格納するステップと、
前記統括制御部は、前記ある１つのチャネルのコマンドの数が前記上限値を超えた場合、前記第１のデータ保存部のチャネルにコマンドを格納することを停止し、第２のデータ保存部を設け且つ前記第２のデータ保存部にコマンドを格納するステップと、
を有するデータ通信制御方法。
【請求項７】
前記統括制御部は、前記第１のデータ保存部の各チャネルに格納されているコマンドの数が、予め定められた下限値を下回った場合、前記第２のデータ保存部に格納されているコマンドを先頭から取り出して前記第１のデータ保存部のチャネルに格納するステップを有する請求項６に記載のデータ通信制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のコントローラモジュールにそれぞれ設けられるメモリアクセス制御部によって、複数のコントローラモジュールにそれぞれ対応する複数のチャネル間で行われるデータの通信を制御するためのデータ通信制御装置、データ通信制御方法、および、このデータ通信制御方法をコンピュータに実行させるためのプログラムに関する。
【背景技術】
【０００２】
以下、図１〜図５を参照しながら、本願のデータ通信制御装置と対比させる対象となる一般のデータ通信制御装置の構成および動作について説明する。
図１は、本願のデータ通信制御装置と対比させる対象となるデータ通信制御装置の構成を示すブロック図であり、図２は、図１のデータ通信制御装置におけるＤＭＡコントローラとハードウェアコマンドキュー（以下、ＨＷコマンドキューと略記することもある）との関係を示すブロック図である。ただし、ここでは、複数のコントローラモジュールとして、７個のコントローラモジュール１１０−１〜１１０−７（ＣＭ♯０〜ＣＭ♯６）を代表して示す。
【０００３】
図１に示すように、一般のデータ通信制御装置１００においては、複数のＤＭＡコントローラ１２０−１〜１２０−７が、複数のコントローラモジュール１１０−１〜１１０−７にそれぞれ設けられている。さらに、複数のコントローラモジュール１１０−１〜１１０−７にそれぞれ対応する複数のチャネルＣＨ０〜ＣＨ６（図２参照）が用意されている。複数のコントローラモジュール１１０−１〜１１０−７の各々の入り口には、外部のサーバに接続されるホストインターフェース（図１では、図示していない）が設けられている。複数のコントローラモジュール１１０−１〜１１０−７は、外部のサーバからの要求に従って、これらのコントローラモジュール１１０−１〜１１０−７間で実行されるダイレクトメモリアクセスによるデータの通信を制御する。ここで、ある１つのコントローラモジュールから送出されるデータは、複数のコントローラモジュール間の通信経路であるスイッチ部１３０を経由して、転送先の他のコントローラモジュールに転送される。
【０００４】
さらに、図１のコントローラモジュール１１０−１〜１１０−７は、それぞれ、ＤＭＡコントローラ１２０−１〜１２０−７を含むコントローラモジュール内の各種の構成要素を統括的に制御するためのファームウェアを実行するＣＰＵ（中央演算処理装置）１４０−１〜１４０−７と、外部のサーバから転送される各種のデータや複数のコントローラモジュール間のダイレクトメモリアクセスによるデータの通信を実行するための各種のプログラム等を格納するメモリからなる記憶部１６０−１〜１６０−７とを備えている。上記のＣＰＵ１４０−１〜１４０−７、記憶部１６０−１〜１６０−７およびＤＭＡコントローラ１２０−１〜１２０−７等は、メモリコントローラハブ（図１では、ＭＣＨと略記する）１５０−１〜１５０−７により相互に接続されている。ここで、「ファームウェア」は、複数のコントローラモジュール間のデータの通信を制御するために必要なソフトウェアを意味する用語である。
【０００５】
ついで、図２に基づいて、ＤＭＡコントローラの内部の構成および仕様を概略的に説明する。図２に示すように、ある１つのＤＭＡコントローラ（例えば、第１番目のＤＭＡコントローラ１２０−１（ＣＭ♯０））は、複数のコントローラモジュール間で実行されるダイレクトメモリアクセスによるデータの通信を制御する。転送先のコントローラモジュール別に、これらのコントローラモジュールと同じ数のチャネル（例えば、ＣＨ０〜ＣＨ６）が用意されている。
【０００６】
各々のチャネルは、ＤＭＡコントローラ内にハードウェアデータ保存部（例えば、ＤＭＡコントローラ１２０−１内のハードウェアデータ保存部６０−１）を有している。このハードウェアデータ保存部は、通常、ハードウェアコマンドキュー（ＨＷコマンドキュー）と呼ばれており、複数の転送要求に関するコマンドを含むデータを格納することができる。このＨＷコマンドキュー内のコマンド（ＤＣ）は、先頭から順番に実行され、同一のＨＷコマンドキュー内の複数のコマンドが同時に実行されることはない。ＤＭＡコントローラでは、これらのチャネルとは別に、実際にダイレクトメモリアクセスを行うエンジンＥＧ−１，ＥＧ−２が設けられている。これらのエンジンＥＧ−１，ＥＧ−２の数はチャネルの数より少ない。エンジンＥＧ−１，ＥＧ−２は全てのチャネルで共有されており、特定のチャネルに対して固定的に結合されていない（バインドされていない）。ここで、 エンジンＥＧ−１，ＥＧ−２は、ラウンドロビン形式でチャネルからコマンドを取得して適切な処理を行う。ただし、ＨＷコマンドキューにコマンドが積み込まれた順番に関しては、ＤＭＡコントローラのハードウェアは関知しない。この場合、それぞれ異なる特性を有するコントローラモジュール別に役割分担が存在するため、あるコントローラモジュールには小さなデータサイズの制御情報（データ）が転送され、あるコントローラモジュールには大きなデータサイズのユーザデータが転送されるといったような処理の偏りが生ずる。
【０００７】
図３は、図２のＨＷコマンドキューに複数のコマンドが積まれている状態を示す模式図、図４は、図３のＨＷコマンドキューに新たなコマンドが積まれていく状態を示す模式図、そして、図５は、図４に示すチャネル０のＨＷコマンドキューにコマンドが沈み込みしている状態を示す模式図である。ここで、図３〜図５に基づいて、ＨＷコマンドキューの特定のチャネル（例えば、チャネル０）にてコマンドの沈み込みが発生するメカニズムについて説明する。
【０００８】
まず、ある時点で、ＤＭＡコントローラ内のＨＷコマンドキューにコマンドが図３のように積み込まれていたとする。図３の状態から明らかなように、チャネル０（ＣＨ０）では小さなコマンド（ＳＤＣ）が多量積み込まれ、他のチャネル（ＣＨ１〜ＣＨ６）では大きなコマンド（ＬＤＣ）が少量積み込まれている。ここで、コマンド内の数字（１〜１８）は、この時点で予定されている処理の順番を示している。
【０００９】
つぎに、図２の状態のＨＷコマンドキューにおいて、図４に示すように、チャネル１（ＣＨ１）およびチャネル２（ＣＨ２）に新たなコマンドが積み込まれた場合を想定する。この場合、本来は１９番目および２０番目に発行されていたコマンドであるにもかかわらず、エンジンＥＧ−１、ＥＧ−２はラウンドロビン形式でチャネル１（ＣＨ１）およびチャネル２（ＣＨ２）からコマンドを取り出すため、図４のように、チャネル１（ＣＨ１）およびチャネル２（ＣＨ２）のコマンドが１６番目および１７番目に実行されることになる。
【００１０】
換言すれば、データの転送要求に関するコマンドのデータサイズや数の偏りが発生した場合、先に積み込まれているチャネル０（ＣＨ０）のコマンドが、後から積み込まれた他のチャネルのコマンドに追い越されて処理されるという事態が発生する。
【００１１】
上記のように、複数のチャネル間でデータサイズやデータの数の偏りが継続していると、図４に示すように、ＨＷコマンドキューのチャネル０（ＣＨ０）のコマンドが後から積み込まれた他のチャネルのコマンドに次々と追い越され、処理の順番（例えば、２１番目…、９８番目、９９番目といったように）がどんどん後回しになる。この結果、チャネル０（ＣＨ０）にコマンドの沈み込みが発生し、チャネル０のコマンドが、ファームウェアを実行するＣＰＵにより監視されている規定時間内に処理されない状態（タイムアウト）に陥るといったような問題が発生する。このように、「沈み込み」とは、特定のキューに格納されるコマンドの量が他のキューと比較して増加する現象を言う。
【００１２】
このような問題は、異なるチャネル間のコマンドを格納する順番が管理されていないため、コマンドの処理に関して異なるチャネル間で追い越しが発生することに起因している。このような傾向は、ＨＷコマンドキューに積み込まれているコマンドが対象にするデータの数やデータサイズに差があるほど顕著になる。
【００１３】
リードコマンドとライトコマンドで別に沈み込み防止策を適用し、リードコマンドをより沈み込みにくくするために、各々のコマンドが受領した時刻を管理し、受領してから一定時間実行されていないコマンドを優先的に実行するようなコマンドキューイングの機能を有する記憶装置が開示されている。
【００１４】
入出力処理装置において入出力命令の起動待ち時間を計測し、入出力待ち行列から入出力命令を取り出す毎に起動待ち時間を検証して、規定時間を越えて入出力待ち行列に格納されたままで起動されない入出力命令を実行する入出力装置の起動方式が開示されている。
【００１５】
【特許文献１】特開２００１−２４９７７０号公報
【特許文献２】特開２００２−３４２２５２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１６】
従来の装置では、時間管理により処理の遅れているコマンド又は命令を優先的に処理することを行っている。しかしながら、このような時間遅れのコマンドの優先処理は、キューに格納されるコマンドの実行順序を変更することによって行われる。そのため、データ受信側はデータ受信順序を指定したデータ転送をデータ送信側に要求したにも拘らず、データ送信側は自分の所定時間以内に処理できれば実行順序を変更する制御を行うため、データ受信側は指定した順序に従わないデータを受信することが生じる。よって、データ送信側では所定時間内にコマンドを処理できても、データ受信側はデータ受信順序に従ってデータ処理をする必要がある場合、優先処理されたコマンドに基づく受信データを使用できない。
【課題を解決するための手段】
【００１７】
本データ通信制御装置は、ＨＷコマンドキューに格納されるコマンドを、ＨＷコマンドキューへの格納順に従って実行できるようにすることを目的とする。
【００１８】
上記課題を解決するために、データ通信制御装置が提供される。
このデータ通信制御装置は、データ転送用のコマンドをデータの転送先に従って格納するように用意されるチャネルを複数有する第１のデータ保存部を含み、且つチャネルの先頭に格納されるデータ転送用のコマンドを実行してデータを転送するメモリアクセス制御部と、ある１つのチャネルに格納されるコマンドの数が予め定められた上限値を超えない場合、第１のデータ保存部のチャネルにコマンドを格納し、ある１つのチャネルのコマンドの数が上限値を超えた場合、第１のデータ保存部のチャネルにコマンドを格納することを停止し且つ第２のデータ保存部を生成し且つ第２のデータ保存部にコマンドを格納する統括制御部と、を有する。
【００１９】
さらに、上記課題を解決するために、データ通信制御方法が提供される。このデータ通信制御方法は、データ転送用のコマンドをデータの転送先に従って格納するように用意されるチャネルを複数有する第１のデータ保存部を含み、且つチャネルの先頭に格納されるデータ転送用のコマンドを実行してデータを転送するメモリアクセス制御部と、統括制御部とを有するデータ通信制御装置を制御するためのデータ通信制御方法であって、統括制御部は、ある１つのチャネルに格納されるコマンドの数が予め定められた上限値を超えない場合、第１のデータ保存部のチャネルにコマンドを格納するステップと、統括制御部は、ある１つのチャネルのコマンドの数が上限値を超えた場合、第１のデータ保存部のチャネルにコマンドを格納することを停止し、第２のデータ保存部を設け且つ第２のデータ保存部にコマンドを格納するステップとを有する。
【発明の効果】
【００２０】
本データ通信制御装置は、ＨＷコマンドキューに格納されるコマンドを、ＨＷコマンドキューへの格納順に従って実行できる。
【発明を実施するための最良の形態】
【００２１】
以下、添付図面（図６〜図１５）を参照しながら、本実施例に係るデータ通信制御装置の構成および動作等を説明する。
【００２２】
図６は、本実施例に係るデータ通信制御装置のハードウェア構成を示すブロック図であり、図７は、図６のデータ通信制御装置におけるコントローラとＨＷコマンドキューとＦＷコマンドキューとの関係を示すブロック図である。ただし、ここでは、前述の図１のデータ通信制御装置の場合と同様に、複数のコントローラモジュールとして、７個のコントローラモジュール１−１〜１−７（ＣＭ♯０〜ＣＭ♯６）を代表して示す。なお、これ以降、前述した構成要素と同様のものについては、同一の参照番号を付して表すこととする。
【００２３】
図６に示すように、本実施例に係るデータ通信制御装置１０においては、複数のコントローラ２−１〜２−７が、複数のコントローラモジュール１−１〜１−７にそれぞれ設けられている。さらに、複数のコントローラモジュール１−１〜１−７にそれぞれ対応する複数のチャネルＣＨ０〜ＣＨ６（図７参照）が用意されている。複数のコントローラモジュール１−１〜１−７の各々の第１の入り口には、外部のサーバに接続されるホストインターフェース（ＣＡ）８−１〜８−７が設けられている。複数のコントローラモジュール１−１〜１−７は、外部のサーバからの要求に従って、これらのコントローラモジュール１−１〜１−７間で実行されるダイレクトメモリアクセスによるデータの通信を制御する。ここで、ある１つのコントローラモジュール（例えば、第１番目のコントローラモジュール１−１（ＣＭ♯０））から送出されるデータは、複数のコントローラモジュール間の通信経路であるスイッチ部３を経由して、転送先の他のコントローラモジュールに転送される。
【００２４】
さらに、図６のコントローラモジュール１−１〜１−７は、それぞれ、コントローラ２−１〜２−７を含むコントローラモジュール内の各種の構成要素を統括的に制御するためのファームウェアとして機能するＣＰＵ（中央演算処理装置）４−１〜４−７と、外部のサーバから転送される各種のデータや複数のコントローラモジュール間のダイレクトメモリアクセスによるデータの通信を実行するための各種のプログラム等を格納するＲＡＭ（ランダム・アクセス・メモリ）やＲＯＭ（リード・オンリ・メモリ）等のメモリからなる記憶部６−１〜６−７とを備えている。記憶部６−１〜６−７に格納されたプログラムを実行することで、プログラムに規定された各種の機能を有するＣＰＵ４−１〜４−７は、統括制御部と呼ばれることもある。さらに、複数のコントローラモジュール１−１〜１−７の各々の第２の入り口には、外部のディスクドライブ（ディスク装置）（例えば、ディスクドライブ７０−１）またはＲＡＩＤ装置に接続されるディスクインターフェース（ＤＡ）７−１〜７−７が設けられている。ここでは、ディスクインターフェース（ＤＡ）７−１〜７−７を介して、ＣＰＵ４−１〜４−７と外部のディスクドライブ（例えば、ディスクドライブ７０−１）またはＲＡＩＤ装置との間でディスク媒体（例えば、ディスク媒体７２−１）に対するデータの書き込み動作および読み出し動作が行われる。
【００２５】
さらに、図６のコントローラモジュール１−１〜１−７は、上記のＣＰＵ４−１〜４−７、記憶部６−１〜６−７、コントローラ２−１〜２−７等を相互に接続するためのメモリコントローラハブ（図６では、ＭＣＨと略記する）５−１〜５−７を備えている。
【００２６】
さらに、図６のコントローラ２−１〜２−７は、複数のコントローラモジュール１−１〜１−７がそれぞれ有するチャネル毎に、転送先のデータを一時的に格納する第１のデータ保存部６１−１〜６１−７を有している。また一方で、図６の記憶部６−１〜６−７は、第１のデータ保存部６１−１〜６１−７に格納されているある１つのチャネルのコマンドの数が予め定められた上限値を超えたときに、新たなコマンドを格納する第２のデータ保存部６２−１〜６２−７を有している。なお、上記の第１のデータ保存部６１−１〜６１−７および第２のデータ保存部６２−１〜６２−７の具体的構成に関しては、後述の図７に基づいて詳しく説明する。
【００２７】
ここで、図７に基づいて、コントローラと第１のデータ保存部と第２のデータ保存部との関係を説明する。
【００２８】
図７に示すように、ある１つのコントローラ（例えば、第１番目のコントローラ２−１（ＣＭ♯０））は、複数のコントローラモジュール間で実行されるダイレクトメモリアクセスによるデータの通信を制御する。転送先のコントローラモジュール別に、これらのコントローラモジュールと同じ数のチャネル（例えば、ＣＨ０〜ＣＨ６）が用意されている。
【００２９】
コントローラは、データ転送用のコマンドをデータの転送先に従って格納するように用意されるチャネルを複数有する第１のデータ保存部（例えば、コントローラ２−１内の第１のデータ保存部６１−１）を有している。この第１のデータ保存部は、ハードウェアにより実装されるコマンドキュー（ＨＷコマンドキュー）であり、複数の転送要求に関するコマンドをその転送先コントローラモジュール用のチャネルに格納することができる。なお、各コマンドは、発信元コントローラモジュールの記憶部の発信元メモリアドレス、送信先コントローラモジュールを指定する情報、送信先コントローラモジュールの記憶部の送信先メモリアドレスを含む。コントローラがコマンドを処理すると、発信元メモリアドレスに記憶されるデータが、転送先メモリアドレスに転送される。
コントローラでは、これらのチャネルとは別に、実際にダイレクトメモリアクセスを行うエンジンＥＧ−１，ＥＧ−２が設けられている。これらのエンジンＥＧ−１，ＥＧ−２の数はチャネルの数より少ない。エンジンＥＧ−１，ＥＧ−２は全てのチャネルで共有されており、特定のチャネルに対して固定的に結合されていない。ここで、エンジンＥＧ−１，ＥＧ−２は、ラウンドロビン形式で各チャネルからコマンドを取得して適切な処理を行う。このＨＷコマンドキュー内のコマンド（ＤＣ）は、エンジンＥＧ−１又はＥＧ−２によって先頭から順番に実行され、同一のＨＷコマンドキュー内の複数のコマンドが同時に実行されることはない。
【００３０】
さらに、前述の図６の記憶部６−１〜６−７の各々においては、ファームウェアを実行するＣＰＵにより管理される第２のデータ保存部（例えば、記憶部６−１内の第２のデータ保存部６２−１）が、各々のコントローラモジュールに対して１つ設けられている。この第２のデータ保存部は、ファームウェアを実行するＣＰＵにより生成されるコマンドキュー（ＦＷコマンドキュー）であり、第１のデータ保存部から溢れた実行待ちのコマンド（ＷＤＣ）を格納することができる。
【００３１】
さらに、図７に示すように、ＨＷコマンドキューに格納されるデータの数の上限値ＵＬが予め設定されている。さらに、必要に応じて、ＨＷコマンドキューに積み込まれるデータの数の下限値ＬＬが予め設定されている。ここで、「下限値」は、コントローラが実行中のコマンドの数が上限値ＵＬを超えて、ダイレクトメモリアクセスの起動抑止状態となってから、この起動抑止状態を解除するための閾値を意味する。ダイレクトメモリアクセスによるデータの転送が完了し、実行中のコマンドの数が下限値を下回ると、ダイレクトメモリアクセスの起動抑止状態が解除される。
【００３２】
ファームウェアを実行するＣＰＵは、１つのチャネル（例えば、チャネル０（ＣＨ０））内のデータの数が上限値ＵＬに達するまで、ＨＷコマンドキューにコマンドを格納する。さらに、ある１つのチャネルのコマンドの数が上限値ＵＬを超えたときに、または、ある１つのチャネルのコマンドの数が上限値ＵＬを超えていなくても、ＦＷコマンドキューにコマンドが存在するときに、ＨＷコマンドキューに転送先のコマンドを格納せず、新たに入ってきたコマンドをＦＷコマンドキューに格納する。このＦＷコマンドキューに格納されている新規のコマンドは、実行待ちキューのコマンドとしてファームウェアを実行するＣＰＵにより管理される。さらに、エンジンＥＧ−１、ＥＧ−２の処理が進み、ＨＷコマンドキューに積み込まれているコマンドの数が下限値ＬＬを下回った時点で、ＣＰＵは、ＦＷコマンドキューに格納されているコマンドを先頭から取り出して、ＨＷコマンドキューに格納する。コントローラは、ＨＷコマンドキューに格納されているコマンドを先頭から順番に実行する。
【００３３】
ファームウェアを実行するＣＰＵによる処理の流れの一例は、下記の処理（１）〜（４）である。
処理（１）：ＣＰＵは、ＨＷコマンドキュー内のある１つのチャネルのコマンドの数が上限値ＵＬに達するまで、従来の場合と同様にコントローラに処理依頼を行う。
処理（２）：ＨＷコマンドキュー内のある１つのチャネルのコマンドの数が上限値ＵＬに達したら、新規コマンドをＨＷコマンドキュー格納せず且つコントローラへの新規コマンドに対する処理依頼を行わず、新規コマンドをＦＷコマンドキューに格納する。
処理（３）：ＨＷコマンドキュー内のある１つのチャネルのコマンドの数が下限値ＬＬを下回るまでコントローラの処理が進んだら、前述の処理（１）に戻り通常の処理を行う。
処理（４）：前述の処理（１）〜（３）による処理を繰り返す。
【００３４】
ここで、ＣＰＵはフォームウェアを実行することによって、ファームウェアに規定される機能を実現する。より具体的には、例えば記憶部６−１のＲＯＭ等に格納されているダイレクトメモリアクセスによるデータの通信の制御を実行するためのプログラム、およびプログラム実行に必要なＲＡＭ等に格納されている各種のデータをＣＰＵにより読み出して上記プログラムを実行させることによって、ソフトウェアの機能が実現される。なお、記憶部６−１に含まれるＲＯＭまたはＲＡＭの代わりに、ＣＰＵに内蔵のＲＯＭまたはＲＡＭを使用することも可能である。
【００３５】
図６および図７の実施例に係るデータ通信制御装置では、ファームウェアを実行することでＣＰＵは、ＦＷコマンドキューを１つ用意し、ＨＷコマンドキューに格納されるコマンドの数の上限値を予め設定し（必要に応じて下限値も予め設定し）、ＨＷコマンドキューに格納されているある１つのチャネルのコマンドの数が上限値を超えたときに、新規のコマンドをＦＷコマンドキューに格納する。さらに、ＨＷコマンドキューに格納される全てのチャネルのコマンドの数が下限値を下回ったとき、ＣＰＵは、ＦＷコマンドキューに格納されているコマンドを先頭から取り出してＨＷコマンドキューに格納し、コントローラは、このＨＷコマンドキューに格納されているコマンドを先頭から順番に実行するようになっている。
【００３６】
それゆえに、図６および図７の実施例に係るデータ通信制御装置によれば、ＨＷコマンドキューに格納されているコマンドの数が少なくなり、ＨＷコマンドキューから溢れたデータをＦＷコマンドキューに格納した状態で管理することができるようになる。一定条件を満たすとＦＷコマンドキューに格納されたコマンドは、先頭から順番にＨＷコマンドキューに格納される。この結果、ＨＷコマンドキューのあるチャネルに先に格納されているコマンドが、後から積み込まれた他のチャネルのコマンドよりも後に実行されるということが無くなり、ＨＷコマンドキューに格納されるコマンドを、ＨＷコマンドキューへの格納順に従って実行できる。よって、データ通信制御装置は、受信側のコントロールモジュールに適切な実行順でコマンド処理に基づくデータ転送が可能になり、さらに、先にコマンドが格納されているチャネルのＨＷコマンドキューに沈み込みが発生することを防止することが可能になる。
【００３７】
図８は、本願のデータ通信制御装置と対比させる対象となるデータ通信制御装置におけるＤＭＡ起動処理を説明するためのフローチャートであり、図９は、本願のデータ通信制御装置と対比させる対象となるデータ通信制御装置におけるＤＭＡ完了処理を説明するためのフローチャートである。ここでは、前述の図１のＣＰＵを動作させて実行されるＤＭＡ起動処理およびＤＭＡ完了処理を説明する。
【００３８】
前述の図１のデータ通信制御装置においてダイレクトメモリアクセスの起動処理を実行する場合、図８のステップＳ１０に示すように、ダイレクトメモリアクセスの対象となるコントローラモジュール（ＣＭ♯ａ：ａは任意の正の整数）に対応するチャネルｂ（ｂは任意の正の整数）を選択する。通常、コントローラモジュールの番号は、対応するチャネルの番号に一致している。
【００３９】
つぎに、ステップＳ１１において、選択されたチャネルｂのＨＷコマンドキューにコマンドを格納する。さらに、ステップＳ１２において、ＨＷコマンドキューに格納したコマンドに対するダイレクトメモリアクセスの起動処理を実行する。
【００４０】
さらに、ダイレクトメモリアクセスの完了処理を実行する場合、図９のステップＳ２０に示すように、ＨＷコマンドキューに格納されるコマンドを実行することでダイレクトメモリアクセスによるデータの転送処理が完了しているチャネルがあるか否かを判別する。ダイレクトメモリアクセスによるデータの転送処理が完了しているチャネルがあることが確認された時点で、ステップＳ２１に進み、ダイレクトメモリアクセスの完了処理を実行する。このダイレクトメモリアクセスの完了処理によって、コントローラは、ＨＷコマンドキューに格納された実行済みコマンドを削除し、且つ実行待ちコマンドの数を変更する。
【００４１】
図８および図９のフローチャートにおいては、ＨＷコマンドキュー内の各々のチャネルのコマンドの数に上限値が設定されていないので、先に格納されているチャネルのコマンドが、後から格納された他のチャネルのコマンドが先に実行され、先に格納されているチャネルのコマンドが規定時間内に処理されず、先に格納されているチャネルに沈み込みが発生するおそれがある。
【００４２】
図１０は、本実施例に係るデータ通信制御装置において新規抑止解除条件をＤＭＡコマンド数＝０に設定した場合のＤＭＡ起動処理を説明するためのフローチャートであり、図１１は、本実施例に係るデータ通信制御装置において新規抑止解除条件をＤＭＡコマンド数＝０に設定した場合のＤＭＡ完了処理を説明するためのフローチャートである。ここでは、ＨＷコマンドキューに格納されるコマンドの数の上限値のみを設定し、ＨＷコマンドキューへの新規コマンド格納動作の抑止を解除する条件（新規抑止解除条件）として、実行中のダイレクトメモリアクセスのコマンドの数が０になるタイミングを選択している。
【００４３】
本実施例に係るデータ通信制御装置においてダイレクトメモリアクセスの起動処理を実行する場合、図１０のステップＳ３０に示すように、ＣＰＵは、コントローラによるダイレクトメモリアクセスの起動を抑止しているか否かを判別する。ＣＰＵがコマンドをＨＷコマンドキューに格納せず、一方、ＣＰＵが当該コマンドをＦＷコマンドキューに格納する場合、ＣＰＵはＦＷコマンドキューに格納されたコマンドに対するダイレクトメモリアクセスの処理依頼をコントローラにはしない。それゆえ、ＦＷコマンドキューにコマンドがある場合、又は、一定条件の下でＦＷコマンドキューにコマンドを格納する場合、ＣＰＵは、そのようなコマンドに対してコントローラへのＤＭＡ処理を抑止する。なお、ＤＭＡの抑止状態は、後述するステップＳ３６で設定される。
【００４４】
コントローラによるダイレクトメモリアクセスの起動を抑止していることを確認した場合（Ｓ３０  ＹＥＳ）、ステップＳ３４に進み、ＣＰＵは、新しく入ってきたコマンドをＦＷコマンドキュー（実行待ちキュー）の最後尾に格納する。
【００４５】
また一方で、コントローラによるダイレクトメモリアクセスの起動を抑止していないことが確認された場合（Ｓ３０  ＮＯ）、ステップＳ３１に進み、ＣＰＵは、ダイレクトメモリアクセスの対象となるコントローラモジュール（ＣＭ♯ａ）に対応するチャネルｂを選択する。通常、コントローラモジュールの番号は、対応するチャネルの番号に一致している。
【００４６】
つぎに、ステップＳ３２において、ＣＰＵは、選択されたチャネルｂのＨＷコマンドキューにコマンドを格納する。さらに、ステップＳ３３において、ＣＰＵは、当該格納したコマンドに対するダイレクトメモリアクセスの起動処理を実行する。
【００４７】
さらに、ステップＳ３５において、ＣＰＵは、チャネルｂにおいて実行中のダイレクトメモリアクセスによるコマンドの数が上限値を上回ったか否かを判別する。実行中のコマンドの数が上限値を上回ったことが確認された場合（Ｓ３５  ＹＥＳ）、ステップＳ３６に進み、ＣＰＵは、コントローラに対する新規のデータのダイレクトメモリアクセスの起動の要求を抑止する状態に設定する。
【００４８】
さらに、ダイレクトメモリアクセスの完了処理を実行する場合、図１１のステップＳ４０に示すように、ダイレクトメモリアクセスによるデータの転送処理が完了しているチャネルがあるか否かをＣＰＵにより判別する。ダイレクトメモリアクセスによるデータの転送処理が完了しているチャネルがあることがＣＰＵにより確認された場合（Ｓ４０  Ｙｅｓ）、ステップＳ４１に進み、ダイレクトメモリアクセスの完了処理を実行する。
【００４９】
また一方で、ダイレクトメモリアクセスによるデータの転送処理が完了しているチャネルがないことがＣＰＵにより確認された場合（Ｓ４０  Ｎｏ）、ステップＳ４２に進み、コントローラに対するダイレクトメモリアクセスの起動の要求を抑止しているか否かをＣＰＵにより判別する。
【００５０】
コントローラに対するダイレクトメモリアクセスの起動を抑止していることがＣＰＵにより確認された場合（Ｓ４２  Ｙｅｓ）、ステップＳ４３に進み、全てのチャネルで実行中のコマンドの数が０になったか否かをＣＰＵにより判別する。
【００５１】
全てのチャネルで実行中のコマンドの数が０になったことがＣＰＵにより確認された場合（Ｓ４３  Ｙｅｓ）、ステップＳ４４に進み、コントローラに対する新規のデータのダイレクトメモリアクセスの抑止の要求をＣＰＵにより解除し、ステップＳ４５に進む。
【００５２】
さらに、ステップＳ４５において、ＦＷコマンドキュー（実行待ちキュー）の先頭からコマンドを取り出してＨＷコマンドキューにＣＰＵにより格納する。
【００５３】
さらに、ステップＳ４６において、ＨＷコマンドキューに格納されているコマンドを先頭から順番に実行することによって、ダイレクトメモリアクセスの起動処理を再開する。
【００５４】
図１０および図１１のフローチャートにおいては、ＨＷコマンドキュー内のコマンドの数が上限値を上回ったことがＣＰＵにより確認された時点でＨＷコマンドキューに新規のコマンドを積み込む動作を停止し、実行中のダイレクトメモリアクセスのコマンドの数が０になるタイミングでＨＷコマンドキューに新規のコマンドを積み込む動作を再開しているので、先に格納されているチャネルのコマンドが、後から格納された他のチャネルのコマンドが先に実行されることがなくなり、先に格納されているチャネルに沈み込みが発生することを防止することが可能になる。ただし、実行中のダイレクトメモリアクセスのコマンドの数が０になるということは、その瞬間はコントローラが動作していないということなので、コントローラのハードウェアの使用効率が多少下がる。
【００５５】
図１２は、本実施例に係るデータ通信制御装置において新規抑止解除条件をＤＭＡコマンド数の上限値に設定した場合のＤＭＡ起動処理を説明するためのフローチャートであり、図１３は、本実施例に係るデータ通信制御装置において新規抑止解除条件をＤＭＡコマンド数の上限値に設定した場合のＤＭＡ完了処理を説明するためのフローチャートである。ここでは、ＨＷコマンドキューに積み込まれるコマンドの数の上限値のみを設定し、ＨＷコマンドキューに新規のコマンドを積み込む動作の停止を解除する条件（新規抑止解除条件）として、実行中のダイレクトメモリアクセスのコマンドの数が上限値を下回るタイミングを選択している。
【００５６】
本実施例に係るデータ通信制御装置においてダイレクトメモリアクセスの起動処理を実行する場合、前述の図１０のフローチャートの場合と同様に、図１２のステップＳ５０において、コントローラに対するダイレクトメモリアクセスの起動の要求を抑止しているか否かをＣＰＵにより判別する。
【００５７】
コントローラに対するダイレクトメモリアクセスの起動の要求を抑止していることがＣＰＵにより確認された場合、ステップＳ５４に進み、新しく入ってきたコマンドをＦＷコマンドキュー（実行待ちキュー）の最後尾に格納する。
【００５８】
また一方で、コントローラに対するダイレクトメモリアクセスの起動の要求を抑止していないことがＣＰＵにより確認された場合、ステップＳ５１に進み、ダイレクトメモリアクセスの対象となるコントローラモジュール（ＣＭ♯ａ）に対応するチャネルｂを選択する。通常、コントローラモジュールの番号は、対応するチャネルの番号に一致している。
【００５９】
つぎに、前述の図１０のフローチャートの場合と同様に、ステップＳ５２において、選択されたチャネルｂのＨＷコマンドキューにコマンドを格納する。さらに、ステップＳ５３において、ダイレクトメモリアクセスの起動処理を実行する。
【００６０】
さらに、ステップＳ５５において、チャネルｂにおいて実行中のダイレクトメモリアクセスによるコマンドの数が上限値を上回ったか否かをＣＰＵにより判別する。実行中のコマンドの数が上限値を上回ったことがＣＰＵにより確認された場合、ステップＳ５６に進み、コントローラに対する新規のデータのダイレクトメモリアクセスの起動の要求を抑止する状態に設定する。
【００６１】
さらに、ダイレクトメモリアクセスの完了処理を実行する場合、図１３のステップＳ６０に示すように、ダイレクトメモリアクセスによるデータの転送処理が完了しているチャネルがあるか否かをＣＰＵにより判別する。ダイレクトメモリアクセスによるデータの転送処理が完了しているチャネルがあることがＣＰＵにより確認された場合、ステップＳ６１に進み、ダイレクトメモリアクセスの完了処理を実行する。
【００６２】
また一方で、ダイレクトメモリアクセスによるデータの転送処理が完了しているチャネルがないことがＣＰＵにより確認された場合、ステップＳ６２に進み、コントローラに対するダイレクトメモリアクセスの起動の要求を抑止しているか否かをＣＰＵにより判別する。
【００６３】
コントローラに対するダイレクトメモリアクセスの起動を抑止していることが確認された場合、ステップＳ６３に進み、全てのチャネルで実行中のコマンドの数が上限値を下回ったか否かを判別する。
【００６４】
全てのチャネルで実行中のコマンドの数が上限値を下回ったことがＣＰＵにより確認された場合、ステップＳ６４に進み、コントローラに対する新規のデータのダイレクトメモリアクセスの抑止をＣＰＵにより解除する。
【００６５】
さらに、ステップＳ６５において、ＦＷコマンドキュー（実行待ちキュー）の先頭からコマンドを取り出してＨＷコマンドキューに格納する。
【００６６】
さらに、ステップＳ６６において、ＨＷコマンドキューに格納されているコマンドを先頭から順番に実行することによって、ダイレクトメモリアクセスの起動処理を再開する。
【００６７】
図１２および図１３のフローチャートにおいては、ＨＷコマンドキュー内のコマンドの数が上限値を上回ったことがＣＰＵにより確認された時点でＨＷコマンドキューに新規のコマンドを積み込む動作を停止し、実行中のダイレクトメモリアクセスのコマンドの数が上限値を下回るタイミングでＨＷコマンドキューに新規のコマンドを積み込む動作を再開しているので、先に格納されているチャネルのコマンドが、後から格納された他のチャネルのコマンドよりも後に実行されることがなくなり、ＨＷコマンドキューに格納されるコマンドを、ＨＷコマンドキューへの格納順に従って実行できる。よって、データ通信制御装置は、受信側のコントロールモジュールに適切な実行順でコマンド処理に基づくデータ転送が可能になり、さらに、先にコマンドが格納されているチャネルのＨＷコマンドキューに沈み込みが発生することを防止することが可能になる。
【００６８】
図１４は、本実施例に係るデータ通信制御装置において新規抑止解除条件をＤＭＡコマンド数の上限値および下限値に設定した場合のＤＭＡ起動処理を説明するためのフローチャートであり、図１５は、本実施例に係るデータ通信制御装置において新規抑止解除条件をＤＭＡコマンド数の上限値および下限値に設定した場合のＤＭＡ完了処理を説明するためのフローチャートである。ここでは、ＨＷコマンドキューに積み込まれるコマンドの数の上限値および下限値を設定し、ＨＷコマンドキューに新規のコマンドを積み込む動作の停止を解除する条件（新規抑止解除条件）として、実行中のダイレクトメモリアクセスのコマンドの数が下限値を下回るタイミングを選択している。
【００６９】
本実施例に係るデータ通信制御装置においてダイレクトメモリアクセスの起動処理を実行する場合、前述の図１２のフローチャートの場合と同様に、図１４のステップＳ７０において、コントローラに対するダイレクトメモリアクセスの起動の要求を抑止しているか否かをＣＰＵにより判別する。
【００７０】
コントローラに対するダイレクトメモリアクセスの起動の要求を抑止していることがＣＰＵにより確認された場合、ステップＳ７４に進み、新しく入ってきたコマンドをＦＷコマンドキュー（実行待ちキュー）の最後尾にＣＰＵにより格納する。
【００７１】
また一方で、コントローラに対するダイレクトメモリアクセスの起動の要求を抑止していないことがＣＰＵにより確認された場合、ステップＳ７１に進み、ダイレクトメモリアクセスの対象となるコントローラモジュール（ＣＭ♯ａ）に対応するチャネルｂを選択する。通常、コントローラモジュールの番号は、対応するチャネルの番号に一致している。
【００７２】
つぎに、前述の図１２のフローチャートの場合と同様に、ステップＳ７２において、選択されたチャネルｂのＨＷコマンドキューにコマンドを格納する。さらに、ステップＳ７３において、ダイレクトメモリアクセスの起動処理を実行する。
【００７３】
さらに、ステップＳ７５において、チャネルｂにおいて実行中のダイレクトメモリアクセスによるコマンドの数が上限値を上回ったか否かをＣＰＵにより判別する。実行中のコマンドの数が上限値を上回ったことがＣＰＵにより確認された場合、ステップＳ７６に進み、ＣＰＵによりコントローラに対する新規のデータのダイレクトメモリアクセスの起動の要求を抑止する状態に設定する。
【００７４】
さらに、ダイレクトメモリアクセスの完了処理を実行する場合、図１５のステップＳ８０に示すように、ダイレクトメモリアクセスによるデータの転送処理が完了しているチャネルがあるか否かをＣＰＵにより判別する。ダイレクトメモリアクセスによるデータの転送処理が完了しているチャネルがあることが確認された場合、ステップＳ８１に進み、ダイレクトメモリアクセスの完了処理をＣＰＵにより実行する。
【００７５】
また一方で、ダイレクトメモリアクセスによるデータの転送処理が完了しているチャネルがないことがＣＰＵにより確認された場合、ステップＳ８２に進み、コントローラに対するダイレクトメモリアクセスの起動を抑止しているか否かをＣＰＵにより判別する。
【００７６】
コントローラに対するダイレクトメモリアクセスの起動の要求を抑止していることがＣＰＵにより確認された場合、ステップＳ８３に進み、全てのチャネルで実行中のコマンドの数が下限値を下回ったか否かをＣＰＵにより判別する。
【００７７】
全てのチャネルで実行中のコマンドの数が下限値を下回ったことがＣＰＵにより確認された場合、ステップＳ８４に進み、コントローラに対する新規のデータのダイレクトメモリアクセスの抑止の要求をＣＰＵにより解除する。
【００７８】
さらに、ステップＳ８５において、ＣＰＵは、ＦＷコマンドキュー（実行待ちキュー）の先頭からコマンドを取り出してＨＷコマンドキューに格納する。
【００７９】
さらに、ステップＳ８６において、ＣＰＵは、コントローラにＨＷコマンドキューに格納されているコマンドを先頭から順番に実行させ、ダイレクトメモリアクセスの起動処理を再開する。
【００８０】
図１４および図１５のフローチャートにおいては、ＨＷコマンドキュー内のコマンドの数が上限値を上回ったことが確認された時点でＨＷコマンドキューに新規のコマンドを積み込む動作を停止し、実行中のダイレクトメモリアクセスのコマンドの数が下限値を下回るタイミングでＨＷコマンドキューに新規のコマンドを積み込む動作を再開しているので、先に格納されているチャネルのコマンドが、後から格納された他のチャネルのコマンドよりも後に実行されることがなくなり、ＨＷコマンドキューに格納されるコマンドを、ＨＷコマンドキューへの格納順に従って実行できる。よって、データ通信制御装置は、受信側のコントロールモジュールに適切な実行順でコマンド処理に基づくデータ転送が可能になり、さらに、先にコマンドが格納されているチャネルのＨＷコマンドキューに沈み込みが発生することを防止することが可能になる。
【００８１】
ＨＷコマンドキュー内のコマンドの数に下限値を設定することによって、ＦＷコマンドキュー内に実行待ちのコマンドが存在する状況での、コントローラの未稼働状態を防止することができるようになる。また一方で、ＨＷコマンドキュー内のコマンドの数が上限値を超えてからＨＷコマンドキューに新規のコマンドを格納しない期間を確保することによって、ＨＷコマンドキュー内のコマンドがその時点での順番で処理され、ある１つのチャネルに先に積み込まれているコマンドの実行順序を追い越すことを大幅に軽減させることができるようになる。さらに、ＦＷコマンドキュー内のコマンドを再起動する時点で上限値まで余裕があるので、まとまった数のコマンドを一気に格納することができるようになり、前述の図１２および図１３のフローチャートの場合よりもファームウェアの処理効率が良くなる。
【００８２】
これまでに説明した実施例に関連して、下記に示すような付記を記載しておく。
【００８３】
（付記１）
データ転送用のコマンドを前記データの転送先に従って格納するように用意されるチャネルを複数有する第１のデータ保存部を含み、且つ前記チャネルの先頭に格納される前記データ転送用のコマンドを実行して前記データを転送するメモリアクセス制御部と、
ある１つのチャネルに格納されるコマンドの数が予め定められた上限値を超えない場合、前記第１のデータ保存部のチャネルにコマンドを格納し、前記ある１つのチャネルのコマンドの数が前記上限値を超えた場合、前記第１のデータ保存部のチャネルにコマンドを格納することを停止し、第２のデータ保存部を設け且つ前記第２のデータ保存部にコマンドを格納する統括制御部と、
を有するデータ通信制御装置。
（付記２）
前記統括制御部は、前記第２のデータ保存部にコマンドが存在する場合、前記第１のデータ保存部のチャネルにコマンドを格納することを行わず、コマンドを前記第２のデータ保存部に格納する付記１に記載のデータ通信制御装置。
（付記３）
前記統括制御部は、前記第１のデータ保存部の各チャネルに格納されているコマンドの数が零になった場合、前記第２のデータ保存部に格納されているコマンドを先頭から取り出して前記第１のデータ保存部のチャネルに格納する付記１または２に記載のデータ通信制御装置。
（付記４）
前記統括制御部は、前記第１のデータ保存部の各チャネルに格納されているコマンドの数が前記上限値を下回った場合、前記第２のデータ保存部に格納されているコマンドを先頭から取り出して前記第１のデータ保存部のチャネルに格納する付記１または２に記載のデータ通信制御装置。
（付記５）
前記統括制御部は、前記第１のデータ保存部の各チャネルに格納されているコマンドの数が、予め定められた下限値を下回った場合、前記第２のデータ保存部に格納されているコマンドを先頭から取り出して前記第１のデータ保存部のチャネルに格納する付記１または２記載のデータ通信制御装置。
（付記６）
データ転送用のコマンドを前記データの転送先に従って格納するように用意されるチャネルを複数有する第１のデータ保存部を含み、且つ前記チャネルの先頭に格納される前記データ転送用のコマンドを実行して前記データを転送するメモリアクセス制御部と、統括制御部とを有するデータ通信制御装置を制御するためのデータ通信制御方法であって、
前記統括制御部は、ある１つのチャネルに格納されるコマンドの数が予め定められた上限値を超えない場合、前記第１のデータ保存部のチャネルにコマンドを格納するステップと、
前記統括制御部は、前記ある１つのチャネルのコマンドの数が前記上限値を超えた場合、前記第１のデータ保存部のチャネルにコマンドを格納することを停止し、第２のデータ保存部を設け且つ前記第２のデータ保存部にコマンドを格納するステップと
を有するデータ通信制御方法。
（付記７）
前記統括制御部は、前記第２のデータ保存部にコマンドが存在する場合、前記第１のデータ保存部のチャネルにコマンドを格納することを行わず、コマンドを前記第２のデータ保存部に格納するステップをさらに有する付記６に記載のデータ通信制御方法。
（付記８）
前記統括制御部は、前記第１のデータ保存部の各チャネルに格納されているコマンドの数が零になった場合、前記第２のデータ保存部に格納されているコマンドを先頭から取り出して前記第１のデータ保存部のチャネルに格納するステップをさらに有する付記６または７に記載のデータ通信制御方法。
（付記９）
前記統括制御部は、前記第１のデータ保存部の各チャネルに格納されているコマンドの数が前記上限値を下回った場合、前記第２のデータ保存部に格納されているコマンドを先頭から取り出して前記第１のデータ保存部のチャネルに格納するステップをさらに有する付記６または７に記載のデータ通信制御方法。
（付記１０）
前記統括制御部は、前記第１のデータ保存部の各チャネルに格納されているコマンドの数が、予め定められた下限値を下回った場合、前記第２のデータ保存部に格納されているコマンドを先頭から取り出して前記第１のデータ保存部のチャネルに格納するステップをさらに有する付記６または７に記載のデータ通信制御方法。
【産業上の利用可能性】
【００８４】
本発明は、複数のコントローラモジュールにそれぞれ設けられるコントローラによって、外部のサーバやディスク装置等から転送される各種のデータのダイレクトメモリアクセスによる処理を行う際に、複数のコントローラモジュール間のダイレクトメモリアクセスによるデータの通信を制御する機能を有するような種々のタイプのデータ通信制御装置に適用することが可能である。
【図面の簡単な説明】
【００８５】
【図１】本願のデータ通信制御装置と対比させる対象となるデータ通信制御装置の構成を示すブロック図である。
【図２】図１のデータ通信制御装置におけるコントローラとＨＷコマンドキューとの関係を示すブロック図である。
【図３】図２のＨＷコマンドキューに複数のコマンドが積まれている状態を示す模式図である。
【図４】図３のＨＷコマンドキューに新たなコマンドが積まれていく状態を示す模式図である。
【図５】図４のＨＷコマンドキューのチャネル０にてコマンドの沈み込みが発生している状態を示す模式図である。
【図６】本実施例に係るデータ通信制御装置のハードウェア構成を示すブロック図である。
【図７】図６のデータ通信制御装置におけるコントローラとＨＷコマンドキューとＦＷコマンドキューとの関係を示すブロック図である。
【図８】本願のデータ通信制御装置と対比させる対象となるデータ通信制御装置におけるＤＭＡ起動処理を説明するためのフローチャートである。
【図９】本願のデータ通信制御装置と対比させる対象となるデータ通信制御装置におけるＤＭＡ完了処理を説明するためのフローチャートである。
【図１０】本実施例に係るデータ通信制御装置において新規抑止解除条件をＤＭＡコマンド数＝０に設定した場合のＤＭＡ起動処理を説明するためのフローチャートである。
【図１１】本実施例に係るデータ通信制御装置において新規抑止解除条件をＤＭＡコマンド数＝０に設定した場合のＤＭＡ完了処理を説明するためのフローチャートである。
【図１２】本実施例に係るデータ通信制御装置において新規抑止解除条件をＤＭＡコマンド数の上限値に設定した場合のＤＭＡ起動処理を説明するためのフローチャートである。
【図１３】本実施例に係るデータ通信制御装置において新規抑止解除条件をＤＭＡコマンド数の上限値に設定した場合のＤＭＡ完了処理を説明するためのフローチャートである。
【図１４】本実施例に係るデータ通信制御装置において新規抑止解除条件をＤＭＡコマンド数の上限値および下限値に設定した場合のＤＭＡ起動処理を説明するためのフローチャートである。
【図１５】本実施例に係るデータ通信制御装置において新規抑止解除条件をＤＭＡコマンド数の上限値および下限値に設定した場合のＤＭＡ完了処理を説明するためのフローチャートである。
【符号の説明】
【００８６】
１−１〜１−７    コントローラモジュール
２−２〜２〜７    コントローラ
３    スイッチ部
４−１〜４−７    ＣＰＵ（ファームウェア）
５−１〜５−７    メモリコントローラハブ（ＭＣＨ）
６−１〜６−７    記憶部
７−１〜７−７    ディスクインターフェース（ＤＡ）
８−１〜８−７    ホストインターフェース（ＣＡ）
１０    データ通信制御装置
６０−１    ハードウェアデータ保存部
６１−１〜６１−７    第１のデータ保存部
６２−１〜６２−７    第２のデータ保存部
７０−１    ディスクドライブ（ディスク装置）
７２−１    ディスク媒体
【図１】
0004516999.tif 000002
【図２】
0004516999.tif 000003
【図３】
0004516999.tif 000004
【図４】
0004516999.tif 000005
【図５】
0004516999.tif 000006
【図６】
0004516999.tif 000007
【図７】
0004516999.tif 000008
【図８】
0004516999.tif 000009
【図９】
0004516999.tif 000010
【図１０】
0004516999.tif 000011
【図１１】
0004516999.tif 000012
【図１２】
0004516999.tif 000013
【図１３】
0004516999.tif 000014
【図１４】
0004516999.tif 000015
【図１５】
0004516999.tif 000016