(57)【特許請求の範囲】
【請求項１】
上位処理装置から受信したデータをデータ記憶手段に管理する記憶制御装置であって、
全二重方式の通信路を通じて前記上位処理装置と通信するチャネル制御部と、
前記データ記憶手段に記憶されるデータを一時的に記憶するキャッシュメモリと、
前記上位処理装置から送信されてくる書き込みコマンド、又は、読み出しコマンドに応じて、前記キャッシュメモリと前記データ記憶手段との間のデータ転送に関する処理を行う複数のチャネルプロセッサと、
を有し、
前記通信路を通じて前記上位処理装置に読み出されるデータのデータ量と、前記通信路を通じて前記上位処理装置から受信した、前記データ記憶手段に書き込まれるデータのデータ量との比に応じて、
前記データ転送に関する処理を、
前記複数のチャネルプロセッサのうち負荷が少ない前記チャネルプロセッサに割り当てる第１の方式、又は、
前記読み出しコマンドに応じた前記データ転送に関する処理を行う前記チャネルプロセッサ、もしくは、前記書き込みコマンドに応じた前記データ転送に関する処理を行う前記チャネルプロセッサを、前記複数のチャネルプロセッサのうちの一部の前記チャネルプロセッサに固定する第２の方式、
のうちのいずれの方式により行うかを選択すること
を特徴とする記憶制御装置。
【請求項２】
請求項１に記載の記憶制御装置であって、
前記上位処理装置に読み出されるデータのデータ量を、前記チャネルプロセッサのデータキューにキューイングされている読み出しコマンドの処理対象となるデータ量に基づいて、
前記上位処理装置から受信した前記データ記憶手段に書き込まれるデータのデータ量を、前記チャネルプロセッサのデータキューにキューイングされている書き込みコマンドの処理対象となるデータ量に基づいて
それぞれ算出すること
を特徴とする記憶制御装置。
【請求項３】
請求項１に記載の記憶制御装置であって、
前記上位処理装置に読み出されるデータのデータ量は、前記上位処理装置から受信した読み出しコマンドについて当該記憶制御装置が単位時間あたりに処理したデータ量であり、
前記上位処理装置から受信した前記データ記憶手段に書き込まれるデータのデータ量は、前記上位処理装置から受信した書き込みコマンドについて当該記憶制御装置が単位時間あたりに処理したデータ量であること
を特徴とする記憶制御装置。
【請求項４】
全二重方式の通信路を通じて前記上位処理装置と通信するチャネル制御部と、
前記データ記憶手段に記憶されるデータを一時的に記憶するキャッシュメモリと、
前記上位処理装置から送信されてくる書き込みコマンド、又は、読み出しコマンドに応じて、前記キャッシュメモリと前記データ記憶手段との間のデータ転送に関する処理を行う複数のチャネルプロセッサと、を有し、
上位処理装置から受信したデータをデータ記憶手段に管理する記憶制御装置の運用方法であって、  
前記記憶制御装置が、
前記通信路を通じて前記上位処理装置に読み出されるデータのデータ量と、前記通信路を通じて前記上位処理装置から受信した、前記データ記憶手段に書き込まれるデータのデータ量との比に応じて、
前記データ転送に関する処理を、
前記複数のチャネルプロセッサのうち負荷が少ない前記チャネルプロセッサに割り当てる第１の方式、又は、
前記読み出しコマンドに応じた前記データ転送に関する処理を行う前記チャネルプロセッサ、もしくは、前記書き込みコマンドに応じた前記データ転送に関する処理を行う前記チャネルプロセッサを、前記複数のチャネルプロセッサのうちの一部の前記チャネルプロセッサに固定する第２の方式、
のうちのいずれの方式により行うかを選択すること
を特徴とする記憶制御装置の運用方法。
【請求項５】
請求項４に記載の記憶制御装置の運用方法であって、
前記記憶制御装置は、
前記上位処理装置に読み出されるデータのデータ量を、前記チャネルプロセッサのデータキューにキューイングされている読み出しコマンドの処理対象となるデータ量に基づいて算出し、
前記上位処理装置から受信した前記データ記憶手段に書き込まれるデータのデータ量を、前記チャネルプロセッサのデータキューにキューイングされている書き込みコマンドの処理対象となるデータ量に基づいて算出すること
を特徴とする記憶制御装置の運用方法。
【請求項６】
請求項４に記載の記憶制御装置の運用方法であって、
前記上位処理装置に読み出されるデータのデータ量は、前記上位処理装置から受信した読み出しコマンドについて前記記憶制御装置が単位時間あたりに処理したデータ量であり、
前記上位処理装置から受信した前記データ記憶手段に書き込まれるデータのデータ量は、前記上位処理装置から受信した書き込みコマンドについて前記記憶制御装置が単位時間あたりに処理したデータ量であること
を特徴とする記憶制御装置の運用方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、全二重方式の通信路により上位処理装置と接続し、前記通信路を通じて受信したデータをデータ記憶手段に記憶管理する記憶制御装置に関し、とくに、前記通信路を効率よく利用するための技術に関する。
【０００２】
【従来の技術】
メインフレームなどの上位処理装置と、ディスクアレイ装置などの記憶制御装置との間を結ぶ通信プロトコルとして、ファイバチャネルプロトコル（以下、「ファイバチャネル」と称する）が知られている（詳細はＡＮＳＩ(American National Standard for Information Technology)のＦＣ−ＰＨ（Fibre Channel Physical and Signaling Protocol）を参照）。
【０００３】
ファイバチャネルは、２ポート間の物理接続が基本であり、一対のファイバチャネルポートは、物理的には送受信２本（全二重方式）の通信路で相互に接続されている。この通信路を通じて行われるファイバチャネルにおける記憶制御装置と上位処理装置との間の通信は、フレームと呼ばれるデータ単位を基本として行われる。また、複数のフレームの束はシーケンスと呼び、さらに、シーケンスの束はエクスチェンジと呼ぶ。例えば、上位処理装置から記憶制御装置に対して行われるデータ読み出し命令（Read命令）に対応する一連の処理はエクスチェンジを単位として行われる。また、ファイバチャネルにおける上位処理装置と記憶制御装置との間の通信では、インターロックを取らずにコマンドやフレームを送受信することが可能である。
【０００４】
図１に、ファイバチャネルの通信路により接続された記憶制御装置１０と、これを利用する上位処理装置２０とを備えて構成されるデータ処理システムの一例を示す。記憶制御装置１０は、例えば、ディスクアレイ装置などであり、キャッシュメモリ１１、ディスクユニットなどのデータ記憶手段１２、ＣＰＵやメモリなどを主体として構成される。そして、記憶制御装置１０は、上位処理装置２０との間のデータ通信や処理対象となるデータのチャネルプロセサ１３への割り当ておよび各種データやテーブルの管理や、チャネルプロセサ１３への各種命令のキューの管理などを行うチャネル制御部１４、チャネル制御部１４から受信したフレームを切り分けて各フレームに対応する処理やキャッシュメモリ１１を通じたデータ記憶手段１２へのデータ転送制御を実行するチャネルプロセサ１３などを備えている。一方、上位処理装置２０は、例えば、メインフレームやオフコン、パーソナルコンピュータなどである。
【０００５】
記憶制御装置１０と上位処理装置２０との間の通信において、記憶制御装置１０は、受信したフレームの順に各フレームを処理するチャネルプロセサ１３を割り当てる。また、この際にチャネルプロセサ１３が使用中の場合には、使用されていないチャネルプロセサ１３がそのフレームの処理用に割り当てられることになる。
【０００６】
【発明が解決しようとする課題】
ところで、上位処理装置２０から記憶制御装置１０に送られてくるフレームに含まれるコマンドは、主としてデータ記憶手段１２へのデータの書き込みを指示するWRITEコマンドと読み出しを指示するREADコマンドに大別され、これらコマンドに対応する処理に際しては、WRITEコマンドもしくはREADコマンドの一方の種類のコマンドのみを含んだフレームが連続して上位処理装置２０から送られてきた場合や、書き込みや読み出しの対象となるデータ量が大きいなどの理由により、複数のチャネルプロセサ１３の双方が同時にWRITEコマンドもしくはREADコマンドのどちらか一方の処理のみを行っている期間が生じることがあり、この期間中は全二重通信が有効に機能しないことになる。
【０００７】
すなわち、例えば、チャネルプロセサ１３が２つのみで構成されている場合には、前述した全二重方式の通信路のうち上位処理装置２０から記憶制御装置１０方向の通信路５１（以下、「受信路」と称する）のみの通信負荷が高くなっているにもかかわらず、記憶制御装置１０から上位処理装置２０方向の通信路５２（以下、「送信路」と称する）は殆ど利用されていないため、この期間中は全二重方式の通信路５０が有効に機能しないことになる。
【０００８】
本発明はこのような事情に鑑みてなされたもので、全二重方式の通信路を効率よく利用することができる記憶制御装置を提供することを目的とする。
【０００９】
【課題を解決するための手段】
この目的を達成するための、本発明の主たる発明は、上位処理装置から受信したデータをデータ記憶手段に管理する記憶制御装置であって、全二重方式の通信路を通じて前記上位処理装置と通信するチャネル制御部と、前記データ記憶手段に記憶されるデータを一時的に記憶するキャッシュメモリと、前記上位処理装置から送信されてくる書き込みコマンド、又は、読み出しコマンドに応じて、前記キャッシュメモリと前記データ記憶手段との間のデータ転送に関する処理を行う複数のチャネルプロセッサと、を有し、前記通信路を通じて前記上位処理装置に読み出されるデータのデータ量と、前記通信路を通じて前記上位処理装置から受信した、前記データ記憶手段に書き込まれるデータのデータ量との比に応じて、前記データ転送に関する処理を前記複数のチャネルプロセッサのうち負荷が少ない前記チャネルプロセッサに割り当てる第１の方式、又は、前記読み出しコマンドに応じた前記データ転送に関する処理を行う前記チャネルプロセッサ、もしくは、前記書き込みコマンドに応じた前記データ転送に関する処理を行う前記チャネルプロセッサを、前記複数のチャネルプロセッサのうちの一部の前記チャネルプロセッサに固定する第２の方式のうちのいずれの方式により行うかを選択することとする。
【００１０】
具体的には、例えば、ファイバチャネルにより接続された上位処理装置と記憶制御装置との通信の場合であれば、前述のインターロックが不要であるというファイバチャネルの特徴を利用して、フレームに含まれているコマンドが前記データ記憶手段に対する書き込み命令であるのか、読み出し命令であるのかに応じてそのフレームが所属するエクスチェンジを処理するチャネルプロセサをエクスチェンジごとに割り当てる。これにより、全てのチャネルプロセサが同時に書き込みもしくは読み出しの一方の処理のみを実行する期間が減り、これにより全二重方式の通信路の送信路と受信路の負荷バランスの均一化が図られ、通信路を効率よく利用することが可能になる。
【００１１】
【発明の実施の形態】
以下、本発明の一実施例によるデータ処理システムについて説明する。データ処理システムの構成は図１と同様であるので詳細な説明は省略し、以下では本発明の特徴的な部分を中心に説明する。また、説明の便宜のため、この実施例で説明する記憶制御装置１０は、２つのチャネルプロセサ（以下、「ＣＨＰ」と称する）１３のみを備えるものとし、これらチャネルプロセサをＣＨＰ０、ＣＨＰ１と称することとする。また、以下の説明では「WRITE」を「WR」と、「READ」を「RD」と、それぞれ略記する。
【００１２】
記憶制御装置１０のチャネル制御部１４のメモリ上には、上位処理装置２０との間のデータ通信や、データ記憶手段１２に対するデータの読み書き処理などの、上位処理装置２０から送られてくるコマンドに応じて行われる処理に利用される各種テーブルが記憶管理されている。図２はこのうちのエクスチェンジ管理テーブル２００である。このテーブル２００には、上位処理装置２０との間の通信において生成されたエクスチェンジが管理されている。
【００１３】
このテーブルのテーブル有効フラグ２０２には、該当のエクスチェンジが現在処理中であるかどうかを示すビットがセットされ、処理中のエクスチェンジについては「１」が、処理中でないエクスチェンジについては「０」がセットされる。デバイス番号２０３には、そのエクスチェンジの処理対象となるデータ記憶手段の記憶媒体（例えば、ディスクユニット）の識別番号がセットされる。ＣＨＰ番号２０５には当該エクスチェンジの処理を行うＣＨＰの番号がセットされる。また、通信領域ポインタ２０４には受信路５１を通じて受信したフレームが格納されているメモリ上の物理アドレスが、ＯＸ−ＩＤ（Originator Exchange_ID）２０７には上位処理装置２０側で割り当てられたエクスチェンジ番号がセットされ、Ｓ−ＩＤ（Source_ID）２０８には送信元のファイバチャネルのポートアドレスが、Ｄ−ＩＤ（Destination_ID）２０９には該当エクスチェンジの送信先となるファイバチャネルのポートアドレスが、それぞれセットされる。
【００１４】
なお、以上の項目のうちテーブル有効フラグ以外の項目には、エクスチェンジが処理中である場合、すなわち、テーブル有効フラグが「１」の場合に値がセットされる。また、ＯＸ−ＩＤ２０７、Ｓ−ＩＤ２０８、Ｄ−ＩＤ２０９の値は、各エクスチェンジに一意に対応づけられ、例えば、上位処理装置２０から連続してフレームが送られてきた場合に各フレームがどのエクスチェンジに所属しているか、フレームが先頭フレームであるか（エクスチェンジ管理テーブル２００にフレームが登録されていない場合）といったことは、各フレームにセットされているＯＸ−ＩＤ２０７、Ｓ−ＩＤ２０８、Ｄ−ＩＤ２０９に一致するエクスチェンジをエクスチェンジ管理テーブル２００から調べることで把握できる。
【００１５】
一方、図３は記憶制御装置１０のメモリ上に記憶管理されているＣＨＰ割当処理管理テーブル３００である。このテーブルのＣＨＰ割当処理実行フラグ３０１は、ＣＨＰの割当処理の実行制御に用いられる。このフラグの用途については後述する。
【００１６】
受信WRコマンドデータ量カウンタ３０２および受信RDコマンドデータ量カウンタ３０３には、チャネル制御部１４が上位処理装置２０からコマンドを受信した場合に、WRコマンドもしくは、RDコマンドにより処理されたデータ量が加算される。また、送信RDコマンドデータ量カウンタ３０４には、上位処理装置２０から記憶制御装置１０に送信されたRDコマンドに応答して記憶制御装置１０から上位処理装置２０に送信されるデータ量がセットされ、ＣＨＰ１３から処理完了通知があり、あるエクスチェンジがエクスチェンジ管理テーブル２００において無効化された際に値が加算される。
【００１７】
ＣＨＰ０データ量カウンタ３０５、およびＣＨＰ１データ量カウンタ３０６には、各ＣＨＰ０，１が処理したデータのデータ量が加算される。RD／WRデータ比率閾値等の各種閾値３０７〜３１１は、後述するＣＨＰの割り当て処理の実行制御のために利用されるものである。モニタリング実行間隔タイマ３１２、モニタリング実行間隔Ｉ/Ｏ数３１３は、記憶制御装置１０が実行する各種ポーリング処理に際して参照されるパラメータである。また、モニタリング開始時刻３１４とモニタリング終了時刻３１５は、記憶制御装置１０により処理されたデータのスループットを算出する場合に用いられる。Ｉ/Ｏ数カウンタ３１６は、Ｉ/Ｏ数でモニタリングするのに必要な情報であり、これには上位処理装置２０から送られてきたＩ/Ｏ要求数が加算される。ワークエリア３１７は、各種計算やデータの一時的な保存などに利用される。
【００１８】
図４は、チャネル制御部１４のメモリ上に記憶管理されているRD／WRコマンドキュー管理テーブル４０１，４１０である。このテーブル４０１，４１０には、記憶制御装置２０の処理対象となるRDコマンドもしくはWRコマンドのキューイング状態が、ＦＩＦＯ（First In First Out）方式で管理され、キューイング数を示すカウンタ４０２、先頭キューの格納アドレスを示すＩＮポインタ４０３、末尾キューの格納アドレスを示すＯＵＴポインタ４０４、キュー全体のデータサイズを管理するデータ転送量４０５、コマンドごとに対応するキュー管理情報４０６などが管理される。キュー管理情報４０６には、記憶制御装置２０が割り当てたエクスチェンジ番号４０７とデータ転送量４０８、このエクスチェンジを実行するＣＨＰの番号４０９などが記述されている。
【００１９】
つぎに、図５に示すフローチャートとともに、記憶制御装置１０と上位処理装置２０との間の全二重方式の通信において記憶制御装置１０が行う、ＣＨＰの割当処理について詳述する。
【００２０】
全二重方式の通信路のうち受信路５１を通じて上位処理装置２０からフレームを受信した場合、記憶制御装置１０は、まず、そのフレームが新たなエクスチェンジの起動先頭フレームであるかどうかを調べる（５０１，５０２）。ここでフレームが起動先頭フレームであった場合には、未使用のエクスチェンジ番号を利用してそのフレームに対応するフィールドをエクスチェンジ管理テーブル２００に新たに登録する（５０３）。なお、フレームが起動先頭フレームでない場合の処理については後述する。
【００２１】
つぎに記憶制御装置１０は、前記フレームのフレーム制御フィールド（F_ControlField）を参照し、当該フレームの後続フレームの存在有無を調べる（５０７）。その結果、当該フレームが後続フレームを有する場合には、さらにこのフレームがRD／WRいずれかのコマンドを含むフレームであるかどうかを調べる（５０８）。なお、この調査は、例えば、記憶制御装置１０内にあらかじめ登録しておいたコマンド一覧と、フレームのコマンド記述欄の内容を比較することで行う。
【００２２】
この調査の結果、このフレームがコマンドも含んでいない場合（もしくは、コマンドを含んでいるかどうかを判断できない場合）には、記憶制御装置１０は、当該フレームを通常のＣＨＰ割当方式、すなわち、受信したフレームの順に各フレームを処理するチャネルプロセサ１３を割り当て、また、あるフレームの割り当てに際してチャネルプロセサ１３が使用中である場合には、使用されていないチャネルプロセサ１３にそのフレームの処理させるというＣＨＰ割当方式により当該フレームの処理を行う（５１０）。
【００２３】
一方、前記フレームがRD／WRいずれかのコマンドを含むフレームである場合には、つぎのように処理が行われる。まず、フレームにWRコマンドが含まれていた場合、記憶制御装置１０は、WRデータキュー管理テーブル４１０に当該フレームのエクスチェンジ番号とそのWRコマンドにより処理されるデータ量を登録する（５１１）。一方、当該フレームにRDコマンドが含まれていた場合には、記憶制御装置はRDデータキュー管理テーブル４０１に当該フレームのエクスチェンジ番号と、そのREADコマンドにより処理されるデータ量を登録する（５１２）。なお、これら各データキュー管理テーブル４０１，４１０への登録を行った場合には、各テーブルのカウンタ４０２およびＯＵＴポインタ４０４に１を加算する。
【００２４】
つぎに記憶制御装置１０は、条件管理テーブルのＣＨＰ割当処理実行フラグ３０１の状態を調査する。ここでＣＨＰ割当処理実行フラグ３０１に「１」がセットされていた場合には、ＣＨＰの割当処理を行うかどうかを判断する処理に進み（５１３，５１４）、当該フレームにWRコマンドが含まれていた場合は、エクスチェンジ管理テーブル２００の当該フレームが所属するエクスチェンジのＣＨＰ番号２０５の欄に、そのエクスチェンジにＣＨＰ０を割り当てたことを示す「０」をセットし（５１５）、また、ＣＨＰ割当処理管理テーブル３００のＣＨＰ０データ量カウンタ３０５に当該フレームのデータ量を加算し（５１６）、当該フレームの処理を行うため当該フレームについての処理に必要なデータをＣＨＰ０に転送する（５１９）。なお、フレームにRDコマンドが含まれていた場合も、以上のWRコマンドの場合と同じようにして処理が行われる（５１２，５１４，５１７，５１８）。
【００２５】
一方、（５１３，５１４）の処理において、ＣＨＰ割当処理実行フラグ３０１に「０」がセットされていた場合には、記憶制御装置１０はコマンドの種類（WRコマンドであるかRDコマンドであるか）に応じたＣＨＰの割当処理を行わず、その代わりにＣＨＰ割当処理管理テーブル３００のＣＨＰ０データ量カウンタ３０５もしくはＣＨＰ１データ量カウンタ３０６の比率に基づいてＣＨＰの割り当てを行う（５２１）。すなわち、この場合、記憶制御装置１０は、ＣＨＰ０データ量カウンタ３０５およびＣＨＰ１データ量カウンタ３０６の値を比較して、値の小さい方、すなわち、その時点で処理負荷の小さいＣＨＰを当該フレームの処理用に割り当て、当該フレームの処理に必要なデータをそのＣＨＰに転送する。
【００２６】
つぎに、（５０２）の処理において、フレームが起動先頭コマンドでなかった場合には、まず、フレーム情報（ＯＸ−ＩＤ,Ｓ−ＩＤ、ＬＰＮ番号、デバイス番号）をキーとした場合に該当するエクスチェンジをエクスチェンジ管理テーブル２００から検索する。そして、検索したエクスチェンジのＣＨＰ番号２０５に既に値がセットされていれば、当該フレームの処理に必要なデータをその値に対応するＣＨＰに送信する（５１６）。
【００２７】
他方、ＣＨＰ番号２０５に値がセットされていなかった場合、すなわち、そのフレームが所属するエクスチェンジにＣＨＰが割り当てられていない場合には、（５０７）からの処理に進む。以上のようにして記憶制御装置１０は受信したフレームをつぎつぎに処理していくことになる。
【００２８】
つぎに、以上の処理をより具体的に説明すべく、上位処理装置２０から記憶制御装置１０に対し、DX／LOC／WRCKDからなる１CCW（Channel Command Word）チェーン（例えば、「IBM  3990/9390 Storage Control Reference」を参照）のフレームが送られてきた場合の処理について、再度、図５のフローチャートに従って説明する。
【００２９】
記憶制御装置１０は、DXコマンドを含んだフレームを受信すると、まず、このフレームが起動先頭コマンドフレームかどうかを判定する（５０８）。ここでDXコマンドはCCWチェーンの起動先頭コマンドであり、新たなエクスチェンジの起動先頭フレームであるので、記憶制御装置１０はこのフレームに対応するエクスチェンジを、エクスチェンジ管理テーブル２００に新規に登録する。
【００３０】
つぎに記憶制御装置１０は、前記フレームのフレーム制御フィールド（F_ControlField）を参照し、当該フレームの後続フレームの存在有無を調べる（５０７）。その結果、後続フレームを有する場合には、さらにこのフレームがRD／WRいずれかのコマンドを含むフレームであるかどうかを調べる（５０８）。ここでDXコマンドは、READ／WRITEいずれのコマンドでも無いため、記憶制御装置１０は、当該フレームを通常のＣＨＰ割当方式により割り当てたＣＨＰにより処理することになる（５１０）。
【００３１】
つぎに、記憶制御装置１０は、DXコマンドに引き続きCCWチェーンを構成するLOCコマンドを含むフレームを受信すると、このフレームが起動先頭コマンドであるかどうかを調べる（５０２）。ここでLOCコマンドが記載されたフレームは起動先頭コマンドで無いため、記憶制御装置１０はこのフレームのフレーム情報（ＯＸ−ＩＤ,Ｓ−ＩＤ、ＬＰＮ番号、デバイス番号）を用いてこのフレームに対応するエクスチェンジをエクスチェンジ管理テーブル２００より検索する。そして、この場合には、前述のDXコマンドが記載されたフレームにより前記フレーム情報に対応するエクスチェンジが既にエクスチェンジ管理テーブル２００に登録されているため、検索の結果、このエクスチェンジが検索されることになる。
【００３２】
つぎに、記憶制御装置１０は、検索されたエクスチェンジについて、当該エクスチェンジの処理用に既にＣＨＰが割り当てられているかどうかを当該エクスチェンジのＣＨＰ番号２０５を参照して調べる（５０６）。ここでこのエクスチェンジには、まだＣＨＰの割り当てがされていないので、（５０７）の処理において当該フレームの後続チェーンが存在するかどうかを調べる。ここでこのフレームには後続チェーン（WRCKDコマンドのフレーム）が存在するため、（５０８）の処理が実行される。そして、LOCコマンドは、そのオペレーションコードからWRITEコマンドであることを判定できるコマンドであるため、（５１０）の処理へと移行して、当該LOCコマンドをWRデータキュー管理テーブル４１０に登録し、また、エクスチェンジ管理テーブル２００の当該フレームに対応するエクスチェンジのＣＨＰ番号２０５に「０」をセットする（５１１，５１３）。また、ＣＨＰ０データ量カウンタ３０５に当該LOCコマンドの処理されるデータ量、例えば、当該コマンドによりディスクユニットに書き込まれるデータのデータ量を加算する。
【００３３】
つぎに、上位処理装置２０からWRCKDコマンドが記載されたフレームが送られてきた場合には、記憶制御装置１０はこのフレームは起動先頭フレームでないため（５０２）、前述したLOCコマンドの場合と同様に当該フレームが所属するエクスチェンジ番号を検索する（５０５）。そして、この場合には、ＣＨＰ番号２０５に既に値がセットされており、当該フレームが所属するエクスチェンジに既にＣＨＰが割り当てられているため（５０６）、記憶制御装置１０は当該コマンドの処理に必要なデータをそのＣＨＰ番号に対応するＣＨＰに送信する。
【００３４】
以上に説明したように、記憶制御装置１０はフレームに含まれるコマンドがRDコマンドであるかWRコマンドであるかに応じてそのフレームが所属するエクスチェンジの処理を行うＣＨＰを割り当てる。従って、ＣＨＰ０，１の双方が同時にWRもしくはRDの一方の処理を行う期間が減って、全二重方式の通信路の受信路５１と送信路５２の負荷のバランスが不均一になる期間を減らすことができる。
【００３５】
ところで、以上のようなＣＨＰの割当方式を適用した場合でも、例えば、上位処理装置２０からWRコマンドもしくはRDコマンドのいずれか一方のみを含むフレームが連続して送信されて長期間一方のＣＨＰがその処理に占有されていたり、一のコマンドの処理対象となるデータのデータ量が大きい場合に前記の割当処理を実行してしまうと、かえって一方の通信路に負荷が片寄る結果となり、通信路の負荷のバランスが崩れてしまう可能性がある。そこで負荷分散をより徹底して行うようにするため、本発明の記憶制御装置１０はさらに以下に示すような各種の機能を備えている。
【００３６】
このうち第１の機能は、ＣＨＰの割当処理を行うかどうかを、上位処理装置２０から送られてくるRDコマンドとWRコマンドのそれぞれにより処理されるデータ量の比率に応じて制御するようにしたものである。具体的には、図６に示すように、ポーリング処理などにより適宜なタイミングである一定期間におけるＣＨＰ割当処理管理テーブル３００の受信WRコマンドデータ量カウンタ３０２と、受信RDコマンドデータ量カウンタ３０３の増分からRDコマンドとWRコマンドのそれぞれにより処理されたデータ量の比率を算出（６０２）し、この比率がＣＨＰ割当処理管理テーブル３００のRD／WRデータ量比率閾値を超えた場合にはＣＨＰ割当処理管理テーブル３００のＣＨＰ割当処理実行フラグ３０１に「０」をセットし(６０５)、RD／WRデータ量比率閾値以下の場合にはＣＨＰ割当処理実行フラグ３０１に「１」をセットする（６０４）。なお、図６の例では、ポーリング機能などにより以上の処理を実行するたびに、受信WRデータカウンタと、受信RDデータカウンタの内容を初期化している（６０７）。
【００３７】
第２の機能は、各ＣＨＰのキューの状態に応じてＣＨＰ割当処理実行フラグを制御するようにしたものである。具体的には、ポーリング処理などにより一定期間ごともしくは処理データが一定数に達する度ごとなどの適宜なタイミングで、RD／WRコマンドキュー管理テーブル４０１，４１０から各ＣＨＰ０，１にキューイングされているコマンドの数およびこれらコマンドの処理対象となるデータの全データ量を算出する。キューイングされているコマンド数はRD／WRコマンドキュー管理テーブル４０１，４１０のカウンタの値により把握される。また、全データ量は、データ転送量により把握される。RDコマンドおよびWRコマンドそれぞれのキューイング数の比率、RDコマンドおよびWRコマンドそれぞれのデータ転送量の比率を、それぞれＣＨＰ割当処理管理テーブル３００のＣＨＰキューデータ数比率閾値３０９、ＣＨＰキューデータ量比率閾値３１０と比較し、閾値を超えているかどうかに応じてＣＨＰ割当処理実行フラグ３０１を制御する。図７は以上の処理の一例を示すフローチャートである。
【００３８】
第３の機能は、ＣＨＰ割当処理管理テーブル３００のＣＨＰ０，１データ量カウンタ３０５,３０６の比率に応じてＣＨＰ割当処理実行フラグ３０１を制御するようにしたものである。具体的には、一定時間毎にＣＨＰ０，１データ量カウンタ３０５，３０６の比率と、ＣＨＰ割当処理管理テーブル３００のＣＨＰデータ比率閾値３０７とを比較し、閾値を超えているかどうかに応じてＣＨＰ割当処理実行フラグ３０１を制御する。図８にこの場合の処理の一例を示す。
【００３９】
第４の機能は、WRコマンドとRDコマンドのそれぞれについて、記憶制御装置１０が単位時間当たりに処理したデータ量（スループット）の比に応じてＣＨＰ割当処理実行フラグ３０１を制御するようにしたものである。ここでWRコマンドとRDコマンドそれぞれについてのスループットは、ＣＨＰ割当処理管理テーブル３００における受信WRコマンドデータ量カウンタ３０２および送信RDコマンドデータ量カウンタ３０４の変化率により算出する（９０１）。すなわち、図９に示すように、ある時刻におけるこれらカウンタ値とこれから単位時間経過後のこれらカウンタ値の差から単位時間当たりの処理データ量であるスループットを算出し（９０１〜９０３，９０７，９０８）、このようにして求めたスループットの比がＣＨＰ割当処理管理テーブル３００のＲＤ/ＷＲスループット比率閾値３１１を超えているかどうかに応じてＣＨＰ割当処理実行フラグ３０４を制御する（９０４）。
【００４０】
以上に説明した第１〜第４の機能によれば、上位処理装置２０からWRコマンドもしくはRDコマンドのいずれか一方のみが記載されたフレームが連続して送られてきたり、一のコマンドの処理対象となるデータのデータ量が大きい場合における一方の通信路に負荷の片寄りを防ぐことが可能となり、フレームに含まれるコマンドの種類（RDコマンドもしくはWRコマンド）に応じてそのフレームを処理するＣＨＰを割り当てることで、全二重通信における受信路と送信路の負荷分散を図る前述した仕組みをより一層効果的に機能させることが可能となる。なお、以上に説明した第１〜第４の機能は、全てを一度に適用しなければならない訳ではなく、このうちの１の機能のみを適用したり、いくつかの機能を選択して適用するようにしてもよい。
【００４１】
また、以上に説明した第１〜第４の機能において、ポーリング処理の間隔を指定する数値、例えば、時間や処理データ数などの数値を、上位処理装置２０や、記憶制御装置１０に接続された運用管理端末などの外部装置から指定できるようにしてもよい。
【００４２】
ところで、以上の実施例は、通信プロトコルがファイバチャネルプロトコルである場合について説明したが、上位処理装置２０と２以上のチャネルプロセサを備えた記憶制御装置１０が全二重方式で結ばれる構成を備えるデータ処理システムであれば、通信プロトコルの種類に限定されることなく適用することができる。
【００４３】
以上の実施例は、記憶制御装置１０が一つのチャネル制御部１４に対し２つのＣＨＰ１３を備えている場合について説明したが、一つのチャネル制御部１４に対して３つ以上のＣＨＰ１３を備えている場合にも適用できることはもちろんである。
【００４４】
【発明の効果】
以上に説明したように、本発明の記憶制御装置によれば、全二重方式の通信路を効率よく利用することができる。
【図面の簡単な説明】
【図１】本発明の一実施例によるデータ処理システムの概略構成を示す図である。
【図２】本発明の一実施例によるエクスチェンジ管理テーブルを示す図である。
【図３】本発明の一実施例によるＣＨＰ割当処理管理テーブルを示す図である。
【図４】本発明の一実施例によるRD／WRコマンドキュー管理テーブルを示す図である。
【図５】本発明の一実施例によるＣＨＰ割当処理を説明するフローチャートである。
【図６】本発明の一実施例による、ＣＨＰ割当処理を行うかどうかを、RDコマンドとWRコマンドのそれぞれにより処理されるデータ量の比率に応じて制御する処理を説明するフローチャートである。
【図７】本発明の一実施例による、ＣＨＰ割当処理を行うかどうかを、各ＣＨＰのキューの状態に応じてＣＨＰ割当処理実行フラグを制御する処理を説明するフローチャートである。
【図８】本発明の一実施例による、ＣＨＰ割当処理を行うかどうかを、ＣＨＰ０，１データ量カウンタの比率に応じて制御する処理を説明するフローチャートである。
【図９】本発明の一実施例による、ＣＨＰ割当処理を行うかどうかを、WRコマンドとRDコマンドのそれぞれについて、記憶制御装置が単位時間当たりに処理したデータ量（スループット）の比に応じて制御する処理を説明するフローチャートである。
【符号の説明】
１０  記憶制御装置
１１  キャッシュメモリ
１２  データ記憶手段
１３  チャネルプロセサ
１４  チャネル制御部
２０  上位処理装置
５１  受信路
５２  送信路
【図１】
0003992952.tif 000002
【図２】
0003992952.tif 000003
【図３】
0003992952.tif 000004
【図４】
0003992952.tif 000005
【図５】
0003992952.tif 000006
【図６】
0003992952.tif 000007
【図７】
0003992952.tif 000008
【図８】
0003992952.tif 000009
【図９】
0003992952.tif 000010