(57)【要約】【課題】  複数の情報セットの処理に要する処理時間長の平均に関する値を小さくする。【解決手段】  情報処理装置（１０）は、１以上の情報要素を有する情報セットを発行する１又は複数の情報セットソース（２０）から情報セットの各々に含まれる情報要素を受信する受信手段（１０１）と、受信された情報要素の処理を行う情報処理手段（１０２）と、受信された２以上の情報セットに含まれる未処理又は処理中の複数の情報要素に基づいて、２以上の情報セット又は複数の情報要素の処理手順を決定するものであって、２以上の情報セットの処理時間長の平均に関する値が、複数の情報要素又は２以上の情報セットをそれの受信順序に従って処理するときの値以下になるような、受信順序とは異なる処理手順を決定する決定手段（１０２）とを備え、その決定された処理手順に基づいて複数の情報要素の処理を開始する。【選択図】図１
2005115600.tif 000002
【特許請求の範囲】
【請求項１】
１以上の情報要素を有する情報セットを発行する１又は複数の情報セットソースから前記情報セットの各々に含まれる情報要素を受信する受信手段と、
前記受信された情報要素の処理を行う情報処理手段と、
受信された２以上の情報セットに含まれる未処理又は処理中の複数の情報要素に基づいて、前記２以上の情報セット又は前記複数の情報要素の処理手順を決定するものであって、前記２以上の情報セットの処理時間長の平均に関する値が、前記複数の情報要素又は前記２以上の情報セットをそれの受信順序に従って処理するときの値以下になるような、前記受信順序とは異なる前記処理手順を決定する決定手段と
を備え、前記情報処理手段は、前記決定された処理手順に基づいて、前記未処理又は処理中の複数の情報要素の処理を開始する、
情報処理装置。
【請求項２】
前記決定手段は、前記複数の情報要素に基づいて、前記２以上の情報セットの各々について、処理に要すると期待される時間長に関する期待値を取得し、前記取得された期待値に基づいて、前記処理手順を決定する、
請求項１記載の情報処理装置。
【請求項３】
情報要素に関する複数の情報要素属性の各々について、その情報要素属性を持つ情報要素の処理に要すると期待される時間長に関するサブ期待値を表すサブ期待値情報を記憶するサブ期待値記憶手段を更に備え、
前記決定手段が、前記複数の情報要素の各々の情報要素属性と、前記記憶されているサブ期待値情報とに基づいて、前記複数の情報要素の各々についての前記サブ期待値を取得し、前記取得されたサブ期待値を用いて、前記２以上の情報セットの各々についての前記期待値を取得する、
請求項２記載の情報処理装置。
【請求項４】
前記決定手段は、前記取得されたサブ期待値が小さい情報要素又は情報セットほど早い順番で処理されるような前記処理手順を決定する、
請求項３記載の情報処理装置。
【請求項５】
前記決定手段は、前記情報処理手段によって過去に処理された情報要素の属性とその情報要素の処理に要した時間長との履歴に関する情報に基づいて、前記２以上の情報セットの各々についての前記期待値を取得する、
請求項２記載の情報処理装置。
【請求項６】
前記決定手段は、前記複数の情報要素についての複数通りの前記処理手順にそれぞれ対応した複数通りの前記平均に関する値のうち最小の値となるような前記処理手順を決定する、
請求項１記載の情報処理装置。
【請求項７】
前記決定手段は、前記２以上の情報セットについて、前記処理時間長の最小と最大との差分を取得し、前記差分が所定値以上である場合に、前記処理手順を決定する処理を実行する、
請求項１記載の情報処理装置。
【請求項８】
前記複数の情報要素に、前記情報処理手段によって処理中の情報要素が含まれているときは、前記決定手段は、その情報要素の処理に要する処理時間長のうちの残りの時間長に基づいて、前記処理手順を決定する、
請求項１記載の情報処理装置。
【請求項９】
前記情報セットについての処理が完了する場合に、その処理が終了したことを意味する終了信号をその情報セットの発行元の情報セットソースに送信する終了信号送信手段を更に備え、
前記情報セットについての前記処理時間長は、前記情報セットソースが前記情報セットを発行してから前記終了信号を受信するまでのレスポンスタイムに関する時間長である、
請求項１記載の情報処理装置。
【請求項１０】
前記決定手段は、前記受信された２以上の情報セットの受信状況が所定の状況である場合に、前記処理手順を決定する処理を実行する、
請求項１記載の情報処理装置。
【請求項１１】
前記決定手段は、前記情報セット又は前記情報要素についての処理が開始されてから所定時点までの経過時間長を把握し、前記経過時間長が一定の時間長を超えたときに、前記処理手順を決定する処理を実行する、
請求項１記載の情報処理装置。
【請求項１２】
物理的又は論理的な１又は複数の記憶デバイスに接続することができる記憶制御装置であって、
１以上の情報要素を有するＩ／Ｏ要求を発行する１又は複数のＩ／Ｏ要求ソースから前記Ｉ／Ｏ要求の各々に含まれる情報要素を受信する受信手段と、
前記受信されたＩ／Ｏ要求に含まれている情報要素に基づいて、前記記憶デバイスからデータをリードしＩ／Ｏ要求ソースに送信する、又は、前記Ｉ／Ｏ要求ソースからのデータを前記記憶デバイスにライトする処理を行う情報処理手段と、
受信された２以上のＩ／Ｏ要求に含まれる未処理又は処理中の複数の情報要素に基づいて、前記２以上のＩ／Ｏ要求又は前記複数の情報要素の処理手順を決定するものであって、前記２以上のＩ／Ｏ要求のレスポンスタイムの平均に関する値が、前記複数の情報要素又は前記２以上のＩ／Ｏ要求をそれの受信順序に従って処理するときの値以下になるような、前記受信順序とは異なる前記処理手順を決定する、
請求項１記載の情報処理装置。
【請求項１３】
１以上の情報要素を有する情報セットを発行する１又は複数の情報セットソースから前記情報セットの各々に含まれる情報要素を受信するステップと、
前記受信された情報要素の処理を行うステップと、
受信された２以上の情報セットに含まれる未処理又は処理中の複数の情報要素に基づいて、前記２以上の情報セット又は前記複数の情報要素の処理手順を決定するものであって、前記２以上の情報セットのレスポンスタイムの平均に関する値が、前記複数の情報要素又は前記２以上の情報セットをそれの受信順序に従って処理するときの値以下になるような、前記受信順序とは異なる前記処理手順を決定するステップと
を有し、前記処理を行うステップでは、前記決定された要素処理手順に基づいて、前記未処理又は処理中の複数の情報要素の処理を開始する、
情報処理方法。
【請求項１４】
１以上の情報要素を有する情報セットを発行する１又は複数の情報セットソースから前記情報セットの各々に含まれる情報要素を受信するステップと、
前記受信された情報要素の処理を行うステップと、
受信された２以上の情報セットに含まれる未処理又は処理中の複数の情報要素に基づいて、前記２以上の情報セット又は前記複数の情報要素の処理手順を決定するものであって、前記２以上の情報セットのレスポンスタイムの平均に関する値が、前記複数の情報要素又は前記２以上の情報セットをそれの受信順序に従って処理するときの値以下になるような、前記受信順序とは異なる前記処理手順を決定するステップと
をコンピュータに実行させるためのコンピュータ読取可能なコンピュータプログラムであって、
前記処理を行うステップでは、前記決定された要素処理手順に基づいて、前記未処理又は処理中の複数の情報要素の処理を開始する、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１以上の情報要素を有する情報セットを処理するための技術に関し、具体的には、例えば、ＥＳＣＯＮ或いはＦＩＣＯＮ等のプロトコルに従って外部装置から受信するＩ／Ｏ要求を処理するための技術に関する。
【背景技術】
【０００２】
１以上の情報要素を有する情報セットとして、例えば、コマンド又はデータである１以上のコマンド要素を有するコマンド要素セットがある。具体的な例としては、ＥＳＣＯＮ(Enterprise
Systems Connection)の通信プロトコルの下でやり取りされるコマンド要素セットであって、ＣＣＷチェインと呼ばれるものがある。
【０００３】
ＣＣＷチェインは、例えば、パーソナルコンピュータ等の上位装置と、データ記憶装置及びそれの記憶制御装置を持つ記憶システム（例えばＲＡＩＤ（Redundant Array of Independent Inexpensive Disks）システム）とがＥＳＣＯＮプロトコルに基づいて接続されている場合、上位装置から記憶システムに対して発行されるＩ／Ｏ要求である。
【０００４】
Ｉ／Ｏ要求には、例えば、データ記憶装置からデータをリードするためのリードコマンドを含むもの（つまりリード要求）と、データ記憶装置に対しデータをライトするためのライトコマンドを含むもの（つまりライト要求）とがある。記憶システムにおける記憶制御装置は、キャッシュメモリを有しており、そのキャッシュメモリを介して、上位装置とデータ記憶装置との間でデータのリード及びライトが行われる。具体的に言えば、例えば、記憶制御装置は、上位装置からリード要求を受けた場合、リード要求において求められているリード要求データがキャッシュメモリに存在すれば（キャッシュヒットすれば）、そのリード要求データを上位装置に送信し、一方、それがキャッシュメモリに無ければ（キャッシュミスすれば）、データ記憶装置にアクセスしてリード要求データをリードしそれをキャッシュメモリに格納する処理（以下、これを「ステージング処理」と言う）を行ってから、そのリード要求データを上位装置に送信する。また、記憶制御装置は、ライト要求を受けた場合、そのライト要求に対応するキャッシュメモリ領域にターゲットデータが存在すれば（キャッシュヒットすれば）、そのライト要求に従うライト要求データをそのキャッシュメモリ領域に上書きし、その後、そのデータをデータ記憶装置に格納し、一方、上記ターゲットデータがキャッシュメモリ領域に無ければ（キャッシュミスすれば）、データ記憶装置にアクセスしてターゲットデータをリードしそれをキャッシュメモリ領域に格納するステージング処理を行ってから、そのライト要求データを上記キャッシュメモリに領域に上書きし、その後、その上書きしたデータをデータ記憶装置に送信する。
【０００５】
記憶制御装置は、Ｉ／Ｏ要求について一連の処理が完了したら、ＥＳＣＯＮプロトコルに従い、処理が完了した旨を表す終了通知を上位装置に送信する。
【０００６】
このような記憶制御装置の性能を評価するための一つの評価項目として、上位装置がＩ／Ｏ要求を発行してからそれの終了通知を受けるまでの時間（以下、「Ｉ／Ｏレスポンスタイム」と言う）の長さというものがある。通常、Ｉ／Ｏレスポンスタイムが短いほど、記憶制御装置の性能が良いとされる。一つのＩ／Ｏ要求についてのＩ／Ｏレスポンスタイムは、一般に、キャッシュミスしたときはキャッシュヒットしたときに比べて長くなる。なぜなら、キャッシュメモリへのアクセスにかかる時間に比べて、磁気ディスクに代表されるデータ記憶装置へのアクセスにかかる時間の方が長いためである。
【０００７】
このレスポンスタイムの短縮を図るための技術として、例えば、特許文献１（特開２００２−１４０２３３号公報）に開示されている技術がある。この技術によれば、例えば、記憶制御装置は、上位装置から受領した複数のＩ／Ｏ要求のうち、キャッシュヒットするＩ／Ｏ要求については、上位装置に対するデータ転送を実行し、キャッシュミスするＩ／Ｏ要求については、対象データをデータ記憶装置からキャッシュメモリに読み出す処理と、上位装置に対するデータ転送とを並行して実行する。この結果、複数のＩ／Ｏ要求の処理に対する記憶制御装置から上位装置への終了通知順序が、上位装置からのＩ／Ｏ要求受領順序とは異なる場合がある。
【０００８】
【特許文献１】特開２００２−１４０２３３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ところで、上述したＩ／Ｏレスポンスタイムの長さに基づいて記憶制御装置の能力を評価する際、発行された複数のＩ／Ｏ要求のＩ／Ｏレスポンスタイムの平均（以下、「平均レスポンスタイム」と言う）についての考察が必要であると考えられる。なぜなら、例えば、記憶制御装置が、上位装置から第1と第２のＩ／Ｏ要求を受信している場合、第1のＩ／Ｏ要求についてはＩ／Ｏレスポンスタイムが短くても、第２のＩ／Ｏ要求についてはＩ／Ｏレスポンスタイムが大分長くなってしまうのならば、全体として短いＩ／Ｏレスポンスタイムを提供したことにはならないからである。上述した特許文献１に開示の技術では、平均レスポンスタイムを考慮した処理は行われていない。
【００１０】
上述した問題点は、上記のようなＩ／Ｏ要求に限らず、１以上の情報要素を持つ情報セットを受信し処理する他の装置にも存在し得る。また、その装置の能力を評価する際の評価項目として、平均レスポンスタイムに限らず、他の複数の処理に要する平均の処理時間長も有り得る。
【００１１】
従って、本発明の目的は、複数の情報セットの処理に要する処理時間長の平均に関する値を小さくすることができるようにすることにある。
【課題を解決するための手段】
【００１２】
本発明に従う情報処理装置は、１以上の情報要素を有する情報セットを発行する１又は複数の情報セットソースから前記情報セットの各々に含まれる情報要素を受信する受信手段と、前記受信された情報要素の処理を行う情報処理手段と、受信された２以上の情報セットに含まれる未処理又は処理中の複数の情報要素に基づいて、前記２以上の情報セット又は前記複数の情報要素の処理手順を決定するものであって、前記２以上の情報セットの処理時間長の平均に関する値が、前記複数の情報要素又は前記２以上の情報セットをそれの受信順序に従って処理するときの値以下になるような、前記受信順序とは異なる前記処理手順を決定する決定手段とを備え、前記情報処理手段は、前記決定された処理手順に基づいて、前記未処理又は処理中の複数の情報要素の処理を開始する。
【００１３】
ここで、「情報要素」とは、情報セットに含まれる情報の要素であって、所定の単位、例えばフレーム単位で送受信される要素であり、具体例としては、コマンド又はデータである。
【００１４】
また、「情報セット」とは、１以上の上記情報要素を含んだ情報要素グループであり、例えば、１以上のコマンド及び１以上のデータのうち少なくとも一方を含むコマンドデータセットである。また、情報セットに含まれる１以上の情報要素は、例えば、所定の順番でシーケンシャルに処理される必要があり、そのように処理されることで、１つの情報セットについての処理が完了するようになっている。そのため、例えば、決定手段が、２以上の情報セット或いは上記複数の情報要素の処理手順を決定する際、本来は第１の情報要素よりも後に処理される第２の情報要素が第１の情報要素よりも先に処理されるような処理手順を決定することはない。
【００１５】
また、「２以上の情報セットの処理時間長の平均に関する値」とは、その２以上の処理時間長の平均値、或いは、その平均値から取得可能な値（例えば合計値）である。
【００１６】
また、前記２以上の情報セットの各々についての「処理時間長」は、例えば、所定時点（例えば現時点）からその情報セットについての処理の完了に関する時点までの時間長である。「処理の完了に関する時点」とは、例えば、処理完了を意味する終了通知を情報処理装置が情報セットソースに送信した時点、その終了通知を情報セットソースが受信しそれを認識した時点、その終了通知に応答して情報処理装置が所定の応答信号を送信した時点、又は、その応答信号を情報処理装置が受信し認識した時点のいずれかである。
【００１７】
本発明に従う情報処理装置は、ハードウェア、ソフトウェア及びそれらの組合せのうちの少なくとも１つにより構築することが可能である。ソフトウェア及びそれとハードウェアの組合せでその情報処理装置を構築する場合、そのソフトウェアのためのコンピュータプログラムは、ディスク型ストレージや半導体メモリなどのプログラム記憶媒体を通じて、或いはインターネット等の通信ネットワークを通じてコンピュータにインストール又はロードすることができ、それにより、上述の情報処理装置を構築することができる。
【発明の効果】
【００１８】
本発明に従う情報処理装置は、受信された２以上の情報セットに含まれる未処理又は処理中の複数の情報要素に基づいて、それら２以上の情報セットの処理時間長の平均に関する値が、複数の情報要素又は２以上の情報セットをそれの受信順序に従って処理するときの値以下になるような、受信順序とは異なる処理手順を決定し、それに基づいて、上記未処理又は処理中の複数の情報要素の処理が開始される。これにより、２以上の情報セットの処理時間長の平均に関する値を、単に処理対象の受信順序に従って処理されるときの値以下にすることができる。
【発明を実施するための最良の形態】
【００１９】
以下、図面を参照して本発明の実施の形態について説明する。
【００２０】
図１は、本発明の一実施形態に係る情報処理装置が適用された記憶システムの全体構成を示す。
【００２１】
本実施形態における記憶システムには、１又は複数台の記憶装置６０と、記憶制御装置１０とが備えられる。
【００２２】
記憶装置６０は、データを記憶することができる装置であり、例えば、複数のハードディスクをそれぞれ備えた複数のディスクドライブ６００、６００、・・・をアレイ状に有するハードディスク群である（従って、この記憶システムは、いわゆるＲＡＩＤ（Redundant
Array of Independent Inexpensive Disks）システムである）。この記憶装置６０の複数のディスクドライブ６００、６００、・・・における物理的な記憶領域上には、論理的な記憶領域である複数の論理ボリューム（Logical
Unit）を設定することができる。
【００２３】
記憶制御装置１０は、接続ポート１００、１０３と、チャネル制御部１０１，１０４と、ＩＯ要求バッファ１０９、１１０と、コマンド制御部１０２、１０５と、サービスプロセッサ５０と、共有メモリ１０６と、キャッシュメモリ１０８と、ディスク制御部１０７とを備えている。
【００２４】
接続ポート１００、１０３は、パーソナルコンピュータ等の１又は複数の外部装置が記憶制御装置１０に対し通信可能に接続するためのポートである。例えば、接続ポート１００には、上位装置２０が通信可能に接続され、別の接続ポート１０３には、ダイレクタ７０を経由して上位装置３０及び上位装置４０と通信可能に接続される。これにより、記憶制御装置１０は、各上位装置２０、３０、４０から発行されたＩ／Ｏ要求（入出力要求）を接続ポート１００又は１０３を介して受信することができる。
【００２５】
チャネル制御部１０１及び１０４は実質的に機能が同じなので１０１について代表的に説明する。チャネル制御部１０１は、ハードウェア回路、ソフトウェア、又はそれらの組み合わせで構成することができ、上位にある接続ポート１００に接続されている上位装置２０と通信可能に接続される。チャネル制御部１０１は、上位装置２０から受けたＩ／Ｏ要求を、自分の下位に備えられているコマンド制御部１０２がアクセス可能なＩ／Ｏ要求バッファ１０９に格納する。また、チャネル制御部１０１は、上位装置２０から受けたＩ／Ｏ要求に基づくデータを上位装置２０に送信したり上位装置２０から受信したりする。
【００２６】
Ｉ／Ｏ要求バッファ１０９及び１１０は実質的に機能が同じなので１０９について代表的に説明する。Ｉ／Ｏ要求バッファ１０９は、自分の上位に備えられているチャネル制御部１０１が上位装置２０から受信したＩ／Ｏ要求を記憶することができるバッファであって、所定の内部メモリ（例えばＲＡＭ又はＳＤＲＡＭ等）上に確保されたものである。
【００２７】
コマンド制御部１０２及び１０５は実質的に機能が同じなので１０２について代表的に説明する。コマンド制御部１０２は、ハードウェア回路、ソフトウェア、又はそれらの組み合わせで構成することができ、上位に備えられているＩＯ要求バッファ１０９に格納されているＩ／Ｏ要求を読出し、そのＩ／Ｏ要求に従う処理を行なう。
【００２８】
サービスプロセッサ５０は、所定のデータソース（例えば外付式のハードディスク装置或いは可搬型の不揮発性メモリ）又はユーザから記憶制御装置１０に種々の情報をするための入力処理装置であり、ハードウェア回路、ソフトウェア、又はそれらの組み合わせで構成することができる。具体的には、例えば、サービスプロセッサ５０は、操作パネル等のユーザインターフェースであり、そのユーザインタフェースを介して、ユーザが、所定の情報、一例として、記憶制御装置１０の保守に関する作業指示に関する情報、各種制御パラメータ、各種のチューニングパラメータ、及び後述する性能情報テーブル１０６０に関する情報を入力する。このサービスプロセッサ５０から入力された各種情報は共有メモリ１０６に格納され、記憶制御装置１０内の各制御部１０２、１０７等から必要に応じて参照又は更新される。
【００２９】
共有メモリ１０６は、例えば、不揮発性の半導体メモリ（例えばＥＥＰＲＯＭ）或いはハードディスクに仮想的に設けられたメモリであり、コマンド制御部１０２、１０５やディスク制御部１０７により共有されるものである。この共有メモリ１０６には、後述する性能情報テーブル１０６０と統計情報テーブル１０６１とが用意される（性能情報テーブル１０６０と統計情報テーブル１０６１の更新方法及び使用方法については後述する）。また、この共有メモリ１０６には、他の所定情報、例えば、Ｉ／Ｏ要求の処理に必要な制御テーブルが用意される。制御テーブルは、例えば、１以上の記憶装置６０上における物理的又は論理的な記憶領域（以下、「データ記憶領域」と言う）毎に用意されるものであり、各制御テーブルには、キャッシュメモリ１０８に構築された１又は複数の仮想記憶領域（以下、「キャッシュスロット」と言う）のアドレスや、データ記憶領域のアドレスや、Ｉ／Ｏ要求の種別（例えば、リードとライトのどちらを要求するものか）等が記録される。キャッシュメモリ１０８上のキャッシュスロットや、各データ記憶領域に対するデータの読出しや書込みは、そのデータ記憶領域に対応した制御テーブルに記録されている情報に基づいて行なわれる。なお、Ｉ／Ｏ要求には、所定の情報（例えば、データ記憶領域のアドレス）が含まれており、その情報から、そのＩ／Ｏ要求の処理のときに使用する制御テーブルを特定することができるようになっている。
【００３０】
キャッシュメモリ１０８は、例えば、揮発性又は不揮発性の半導体メモリ（例えば、ＳＲＡＭ又はＥＥＰＲＯＭ）であり、コマンド制御部１０２、１０５やディスク制御部１０７により共有されるメモリである。キャッシュメモリ１０８には、記憶装置６０からリードされたデータ、又は記憶装置６０にライトするデータが一時的に格納される。具体的には、例えば、キャッシュメモリ１０８には、所定の制御部（例えばコマンド制御部１０２、１０５）によって、一つのデータ記憶領域（例えば論理ボリューム）に対して一つのキャッシュスロットが設定され、そのキャッシュスロットには、そのキャッシュスロットに対応しているデータ記憶領域にライトされるデータ、又は、そのデータ記憶領域からリードされたデータが一時的に格納される。この記憶システムでは、リードされたデータ又はライトされるデータは、常に、このキャッシュメモリ１０８を介して、コマンド制御部１０２、１０５とディスク制御部１０７との間で受け渡される。
【００３１】
ディスク制御部１０７は、各記憶装置６０毎に備えられており、その対応している記憶装置６０を制御するものである。例えば、ディスク制御部１０７は、共有メモリ１０６上の制御テーブルに基づいて、１以上の記憶装置６０におけるデータ記憶領域（例えばターゲットの論理ボリューム）に対してデータの読出し又は書込みを行なう。また、ディスク制御部１０７は、例えば、論理アドレスを物理アドレスに変換することにより、論理ボリュームに対するＩ／Ｏ要求を物理ディスクへのＩ／Ｏ要求に変換することができても良い。
【００３２】
以上が、本実施形態における記憶システムについての概略的な説明である。なお、図示しないが、記憶制御装置１０には、例えば、コマンド制御部１０２、１０５と、ディスク制御部１０７と、共有メモリ１０６と、キャッシュメモリ１０８とを相互に通信可能に接続するスイッチング制御部が備えられる。スイッチング制御部は、例えば、高速スイッチング動作によりデータ伝送を行う超高速クロスバスイッチ等のような高速バスとして構成することができる。コマンド制御部１０２、１０５と、ディスク制御部１０７と、共有メモリ１０６と、キャッシュメモリ１０８との間のデータやコマンドの授受は、図示しないスイッチング制御部を介して行われる。
【００３３】
以下、上述した記憶システムにおけるＩ／Ｏ要求の処理流れの概要を、上位装置２０がＩ／Ｏ要求を発行した場合を例に採り説明する。なお、その説明では、発行されたＩ／Ｏ要求がリード要求を示す場合とライト要求を示す場合とに分けて説明する。
【００３４】
（１）Ｉ／Ｏ要求がリード要求を示す場合。
【００３５】
上位装置２０から発行されたＩ／Ｏ要求を、接続ポート１００を介してチャネル制御部１０１が受信し、チャネル制御部１０１が、そのＩ／Ｏ要求をＩ／Ｏ要求バッファ１０９に格納する。コマンド制御部１０２は、その格納されたＩ／Ｏ要求を読出し、そのＩ／Ｏ要求とそれから特定される制御テーブルとに基づいて、そのＩ／Ｏ要求においてリード要求されているデータ（以下、「リード要求データ」と言う）がキャッシュメモリ１０８に存在するか否かの判別を行う。
【００３６】
その判別の結果が肯定的の場合、すなわち、リード要求データがキャッシュメモリ１０８に存在する場合（キャッシュヒットした場合）、コマンド制御部１０２は、キャッシュメモリ１０８からリード要求データを取得し、そのリード要求データを、チャネル制御部１０１を介して上位装置２０に送信する。
【００３７】
一方、上記判別の結果が否定的の場合、すなわち、リード要求データがキャッシュメモリ１０８に存在しない場合（キャッシュミスした場合）、コマンド制御部１０２は、記憶装置６０内のリード要求データをいったんキャッシュメモリ１０８にリードすることをドライブ制御部１０７に指示する。それにより、ディスク制御部１０７によって、記憶装置６０からリード要求データがリードされてキャッシュメモリ１０８に格納されたならば、コマンド制御部１０２は、そのリード要求データをキャッシュメモリ１０８から取得して上位装置２０に送信する。なお、この処理において、記憶装置６０内のリード要求データをキャッシュメモリ１０８にリードする処理の間、上位装置２０と記憶制御装置１０との間の接続は切り離される。このように、キャッシュミスが起きた場合、リード要求データをキャッシュメモリ１０８にリードする処理にかかる時間と、切り離されている上位装置２０に記憶制御装置１０が再接続するのにかかる時間だけ、キャッシュヒットした場合にくらべて性能の劣化が生じる。
【００３８】
（２）Ｉ／Ｏ要求がライト要求を示す場合。
【００３９】
上位装置２０から、ライト対象のデータ（以下、「ライト要求データ」と言う）を含んだＩ／Ｏ要求を、接続ポート１００を介してチャネル制御部１０１が受信し、チャネル制御部１０１が、そのＩ／Ｏ要求をＩ／Ｏ要求バッファ１０９に格納する。コマンド制御部１０２は、その格納されたＩ／Ｏ要求を読出し、そのＩ／Ｏ要求とそれから特定される制御テーブルとに基づいて、キャッシュメモリ１０８上の所定のキャッシュスロットにデータが存在するか否かの判別を行う。
【００４０】
その判別の結果が肯定的の場合、すなわち、データが所定のキャッシュスロットに存在する場合（キャッシュヒットした場合）、コマンド制御部１０２は、上記読み出したＩ／Ｏ要求に含まれているライト要求データを、上記所定のキャッシュスロット内のデータに上書きする。
【００４１】
一方、上記判別の結果が否定的の場合、すなわち、データが所定のキャッシュスロットに存在しない場合（キャッシュミスした場合）、コマンド制御部１０２は、上記読み出したＩ／Ｏ要求から特定されるデータ記憶領域からデータをいったんキャッシュメモリ１０８にリードすることをドライブ制御部１０７に指示する。それにより、ディスク制御部１０７によって、そのデータ記憶領域からデータがリードされて所定のキャッシュスロットに格納されたならば、コマンド制御部１０２は、上記所定のキャッシュスロットに格納されたデータに、上記読み出したＩ／Ｏ要求に含まれているライト要求データを上書きする。
【００４２】
このようにして、キャッシュメモリ１０８にライト要求データが書き込まれたときは、当該ライト要求は終了したものとして、記憶制御装置１０から上位装置２０に終了報告が返される。なお、キャッシュメモリ１０８にライト要求データが書き込まれた時点では、一般に、そのデータは記憶装置６０内のドライブ６００、６００、…には反映されておらず、万が一、記憶制御装置１０の障害等によりキャッシュメモリ１０８上のデータが喪失した場合、データロストが発生してしまうが、このようなデータロストの回避のため、本実施形態の記憶制御装置１０において、キャッシュメモリ１０８内のドライブ未反映データの２重化が行われても良いし、キャッシュメモリ１０８が不揮発性メモリであっても良い。
【００４３】
以上が、本実施形態の記憶システムにおけるＩ／Ｏ要求の処理流れの概要である。
【００４４】
以下、本実施形態の記憶システムについて、主要な部分について詳細に説明する。まず、その主要な部分の理解を助けるための説明を行う。
【００４５】
上位装置２０、３０、４０と記憶制御装置１０との間は、所定の通信プロトコル、例えば、或るＩ／Ｏ要求の入出力通信フレームと別のＩ／Ｏ要求の入出力通信フレームとが混在して通信を行うことができるような通信プロトコルが実装されたＩ／Ｏインターフェースにより接続されている。その通信プロトコルは、例えば、データ又はコマンドの送信と応答といったインターロックを取ってから次のデータ又はコマンドが送信されるようなシーケンシャルな通信が行われる通信プロトコル（一例として、ESCON(Enterprise Systems Connection)プロトコル）であっても良いし、インターロックを取らずに上位装置がパイプライン的にデータ又はコマンドを送信することができる通信プロトコル（一例として、FICON(FIbre CONnection)プロトコル、或いはFC-SB2プロトコル(FIBRE
CHANNEL Single-Byte Command Code Sets-2 Mapping Protocol)）であっても良い。このような通信プロトコルの下で、上位装置２０、３０、４０から発行されたＩ／Ｏ要求の処理が行われるときには、Ｉ／Ｏ要求に含まれるコマンド又はデータや、そのコマンド又はデータに対する応答は、フレームという形式で、上位装置２０、３０、４０と記憶制御装置１０との間でやり取りされる。
【００４６】
Ｉ／Ｏ要求は、記憶装置６０内のデータの読み取り(READ)及び記憶装置６０内へのデータの書き込み(WRITE)等を要求するためのものであり、上述した種類の通信プロトコル（例えばFC-SB2プロトコル）の下では，Ｉ／Ｏ要求は、CCW（チャネル・コマンド・ワード）チェインと呼ばれるコマンドセットである。
【００４７】
ＣＣＷチェインには、少なくとも１種類以上のコマンド要素が含まれており、具体的には、例えば、Define Extent（以下「DX」と表記）、Locate Record（以下「LOC」と表記）、リードコマンド、ライトコマンド等がある。DXコマンドは、レコードと呼ばれるＩ／Ｏ要求の対象データへのアクセス可否情報やアクセスモード等を指定するコマンドであり、Ｉ／Ｏ要求が発行されるときに初めに送信されるコマンドである。LOCコマンドは、Ｉ／Ｏ要求対象レコードの記憶装置６０上の位置（例えばデータ記憶領域のアドレス）を示すシリンダ番号/トラック番号/レコード番号などの情報を示す。
【００４８】
図２を参照して、このＣＣＷチェイン（Ｉ／Ｏ要求）に対する処理流れの具体例を説明する。
【００４９】
この例では、データのリードやライトはレコードと呼ばれる単位で行われ、レコードが複数個集まって、トラックという単位が構成される。そして、この例では、上位装置２０から、或るトラックのレコード１、レコード２、レコード３をライトするライトコマンドが含まれたＩ／Ｏ要求７０が発行されたものとする。そのため、Ｉ／Ｏ要求７０は、コマンドが連結した形のコマンドチェインとして発行され、そのコマンドチェイン７０は、define extent/locate data/write(R1)/write(R2)/write(R3)である。このコマンドチェイン７０において、define
extent/locate dataまでのコマンドが、記憶装置６０内のドライブ内におけるデータの位置付け命令であり、write(Rn:N=1,2,3)コマンドが、ライト要求データのライト命令である。
【００５０】
まず、上位装置２０から記憶制御装置１０へ、コマンドチェインに含まれる１以上のコマンド又はデータのうちの初めのコマンド(define extent)のフレームが発行される。その後、当該コマンドを受け付けた記憶制御装置１０から、そのコマンドの応答として、コマンドレスポンスフレームが返却される。FC-SB2プロトコル等によれば、このコマンドレスポンスフレームを待つことなく、上位装置２０は当該コマンドのパラメータデータをデータフレームとして送信することできるが、本例では、コマンドレスポンス、データの順序で記す。このパラメータデータを上位装置２０から受けた記憶制御装置１０は、上述したdefine extentコマンドに対する処理を実行する。
【００５１】
次に、上位装置２０からは、次のコマンド「locate record」やデータのフレームが発行され、記憶制御装置１０は、そのコマンドやデータについての処理を実行する。この二つのコマンド「define
extent」及び「locate record」により、ライト要求データの格納位置情報が分かり、記憶制御装置１０では、キャッシュヒットかキャッシュミスかの判定が行われる。以下、キャッシュヒットの場合を例に採り記述する。
【００５２】
上位装置２０から、ライトレコードコマンドが送信される。続いてライト要求データであるレコード１のデータがデータフレームとして上位装置２０から送信される。記憶制御装置１０は、その更新データをキャッシュメモリ１０８に書き込む。同様に、記憶制御装置１０は、レコード２及びレコード３についてのライトレコードコマンド及びライト要求データを受信し、それらについてもキャッシュメモリ１０８に書き込む。
【００５３】
レコード３についての更新データがキャッシュメモリ１０８（或いは記憶装置６０における所定のデータ記憶領域）に書き込まれた後、記憶制御装置１０は、Ｉ／Ｏ要求７０についての処理が完了した旨を意味するステータスフレームを、上記コマンド発行元の上位装置２０に送信する。ステータスフレームを受信した上位装置２０は、ステータスフレームを受信したことの応答を意味するステータスアクセプトフレームを送信する。
【００５４】
以上が、Ｉ／Ｏ処理７０の処理についての流れである。なお、このＩ／Ｏ要求７０についての処理は、記憶制御装置１０が当該ステータスアクセプトフレームを受信した時点で終了したこととなる。また、Ｉ／Ｏ要求７０についてのＩ／Ｏレスポンスタイム７２は、上位装置２０がＩ／Ｏ要求７０を発行した時点から上記ステータスフレームを受信したことを認識した時点までの時間長である。また、図２は、Ｉ／Ｏ要求がデータのライトを要求するものである場合のデータ通信のフローであるが、Ｉ／Ｏ要求がデータのリードを要求するものである場合は、リード要求データの送信方向がライト要求データの送信方向と逆となる。また、図２は、キャッシュヒットした場合のフローであるが、キャッシュミスした場合は、記憶制御装置１０は上位装置２０に一旦接続の切離しを要求し、記憶装置６０からキャッシュメモリ１０８へのデータの読み込みが完了した時点で、記憶制御装置１０が上位装置２０に再接続を要求することを除いては概ね同様のフローとなる。
【００５５】
さて、次に、複数のＩ／Ｏ要求がある場合のレスポンスタイムについて考察する。
【００５６】
記憶制御装置１０が上位装置２０からのＩ／Ｏ要求を受け付け、要求に応じた処理を行なう際に複数のＩ／Ｏを多重で処理する場合、各々の処理を行なうスケジュールにより接続ポートの稼働率、プロセッサの稼働率を上げることが可能であり、その結果、単位時間あたりに処理可能なＩ／Ｏ数は複数のＩ／Ｏ要求を混在させずに一つ一つ処理した場合に比べて向上すると考えられる。しかし、一方で、多重処理された複数のＩ／Ｏ要求それぞれに対するレスポンスタイムに着目すると、それぞれのＩ／Ｏを多重処理せずに１つのＩ／Ｏ要求ずつ処理を行なった方が、レスポンスタイムは短くなる場合がある。このケースの一例を図示したのが図３である。
【００５７】
この図３では、２つのＩ／Ｏ要求[1]、[2]を、[1][2]の順に１つのＩ／Ｏ要求ずつ処理をシーケンシャルに行った場合と、２つのＩ／Ｏ要求のフレームを混在させて行った場合をモデル化している。この図３によれば、シーケンシャルに実行しているケースに比べ、２つのＩ／Ｏ要求のフレームを混在しているケースでは、プロセッサ（例えばコマンド制御部１０２又は１０５を含むプロセッサ）の空き時間が少なく、そのプロセッサや接続ポート１００、１０３の稼働率は上がる。しかし、Ｉ／Ｏ要求[1]のレスポンスタイムについて着目すると、[1][2]の順序で１つのＩ／Ｏ要求ずつ処理をシーケンシャルに行った方が短くなっている。
【００５８】
このように、或る一つのＩ／Ｏ要求[1]の処理中に違うＩ／Ｏ要求[2]のフレームをすきまなく混在させ、また、双方向にフレームの送受信を行なうことによって、処理可能なＩ／Ｏ要求の数を増進できることが期待できる。しかし、複数のＩ／Ｏ要求の処理を行なうとはいえ、各Ｉ／Ｏ要求に含まれるコマンド単位或いはデータ単位で見れば、単一のＩ／Ｏ要求の処理の場合と実質的に変わらない。ただし、複数のＩ／Ｏ要求に対するフレームの各々が混在して送受信可能であるため、接続ポート１００、１０３の空き時間を縮小させることは可能である。これにより、単位時間当りに処理可能なＩ／Ｏ要求の総数は、単一のＩ／Ｏ要求処理しか行えないプロトコルに比べて向上することが期待できる。しかし、同じコマンドからなるひとつのＩ／Ｏ要求に着目して、単一Ｉ／Ｏ処理プロトコルと多重Ｉ／Ｏ処理プロトコル両方で処理した場合のレスポンスタイムについて考えると、前述した図３に示すような結果を得ることができる。すなわち、同じコマンドからなる一つのＩ／Ｏ要求においては、単一Ｉ／Ｏ処理プロトコルによって処理された場合のレスポンスタイムの方が、多重Ｉ／Ｏ処理プロトコルによって処理された場合のレスポンスタイムより短くなる。勿論、どんなケースでも図３に例示した結果が同じとなるわけではないが、一般に多重の度合いが高い設定になるほど、ひとつのＩ／Ｏ要求に着目したＩ／Ｏレスポンスタイムの劣化が見られる。しかし、多重Ｉ／Ｏ処理では、ポートおよび処理プロセッサの稼働率が単一Ｉ／Ｏ処理に比べて向上することから、単位時間に処理可能なＩ／Ｏ要求の数は多くなり、システムにおけるスループット性能はこちらの方が優れている。つまり、情報処理システムにおける性能を測るものさしとして、Ｉ／Ｏレスポンスタイムの短縮とスループットの向上という２つが挙げられるであろうが、どちらを重視するかはシステム構成、運用形態などによってまちまちであり、特にバッチ処理かオンライン処理かが重要である。例えば、前者の場合はスループット重視、後者の場合はＩ／Ｏレスポンスタイムが重視される。本実施形態では、このＩ／Ｏレスポンスタイムについて、複数のＩ／Ｏ要求の平均レスポンスタイムに着目している。
【００５９】
なお、Ｉ／Ｏレスポンスタイムとは、前述したように、上位装置がＩ／Ｏ要求を発行してからそれの終了通知を受けるまでの時間長であるが、詳細には、図４からわかるように、（１）上位装置がＩ／Ｏ要求を発行してから記憶制御装置に到着するまでの時間長、（２）記憶制御装置においてＩ／Ｏ要求の処理が待ち状態になっている時間長、（３）記憶制御装置においてＩ／Ｏ要求が処理されている時間長、及び（４）記憶制御装置が終了通知を発行してから上位装置が受信するまでの時間長の合計である。
【００６０】
さて、次に、複数のＩ／Ｏ要求の平均レスポンスタイムについて考察し、その内容の一例を図４に示す。なお、この例では、Ｉ／Ｏ要求[3]、[4]、[5]が、上位装置２０から略同時に発行されたと仮定する。そして、３つのＩ／Ｏ要求は、それぞれ３つのコマンドa、b、cからなるものとする。すなわち、Ｉ／Ｏ要求[3]は、コマンド[3]-a、[3]-b、[3]-cを含んでおり、Ｉ／Ｏ要求[4]、[5]についても実質的に同様であるものとする。また、図４に例示したケースでは、全てのコマンドa、b、cについて、処理にかかる時間が同一であるものとする。各コマンドの実行にかかる時間をTcとする。そのため、全てのＩ／Ｏ要求は３つのコマンドa、b、cから成るので、各Ｉ／Ｏ要求毎の処理に要する処理時間長は3Tcである。また、説明を分かりやすくするために、あるＩ／Ｏ要求が有するコマンドの処理が終了してから別のＩ／Ｏ要求が持つコマンドの処理を開始する際のオーバーヘッド（つまり、処理対象のＩ／Ｏ要求を切り替える際のオーバーヘッド）は省略することとする。
【００６１】
この図４に示すように、ケース『３−Ａ』では、Ｉ／Ｏ要求[3]、Ｉ／Ｏ要求[4]、Ｉ／Ｏ要求[5]の順序で処理が行われる。この場合、３つのＩ／Ｏ要求[3]、[4]、[5]のＩ／Ｏレスポンスタイムは、それぞれ、3Tc、6Tc、9Tcとなる。従って、３つのＩ／Ｏ要求[3]、[4]、[5]についての平均レスポンスタイムは6Tcとなる。
【００６２】
一方、同図において、ケース『３−Ｂ』では、Ｉ／Ｏ要求[3]のコマンド[3]-a、Ｉ／Ｏ要求[4]のコマンド[4]-a、Ｉ／Ｏ要求[5]のコマンド[5]-a、Ｉ／Ｏ要求[3]のコマンド[3]-b、Ｉ／Ｏ要求[4]のコマンド[4]-b、Ｉ／Ｏ要求[5]のコマンド[5]-b、Ｉ／Ｏ要求[3]のコマンド[3]-c、Ｉ／Ｏ要求[4]のコマンド[4]-c、Ｉ／Ｏ要求[5]のコマンド[5]-cの順で処理が行われる。着目すべき点は、各Ｉ／Ｏ要求についてのＩ／Ｏレスポンスタイムである。３つのＩ／Ｏ要求の処理が終了する時刻はケース『３−Ａ』と同じであるにもかかわらず、それぞれのＩ／Ｏレスポンスタイムは、Ｉ／Ｏ要求[3]については7Tc、Ｉ／Ｏ要求[4]については8Tc、Ｉ／Ｏ要求[5]については9Tcとなり、それ故、それら３つのＩ／Ｏ要求の平均レスポンスタイムは、8Tcとなる。
【００６３】
なお、上記の説明では、平均レスポンスタイムについて考察した内容を理解し易くするため、処理対象のＩ／Ｏ要求の切り替え等に伴うオーバーヘッドは省略したが、このオーバーヘッドを加味すると、ケース『３−Ａ』とケース『３−Ｂ』の平均レスポンスタイムの差はさらに顕著になると考えられる。図４の例は、複数のＩ／Ｏ要求のコマンド処理を混在させることにより、平均レスポンスタイムが劣化してしまう場合のモデルである。
【００６４】
次に、複数のＩ／Ｏ要求の処理を行う場合、その実行順序による平均レスポンスタイムの違いについて、図５を使用して説明する。図５では、Ｉ／Ｏ要求[6]、[7]を例に説明する。なお、この例では、Ｉ／Ｏ要求[6]は、Ｉ／Ｏ要求[7]に比べて２倍の処理時間長がかかるものと仮定し、それ故、Ｉ／Ｏ要求[6]、[7]の処理にかかる処理時間長をそれぞれ2T、Tであるものとする。また、この例では、図４を参照して説明した例と同様、Ｉ／Ｏ要求は上位装置２０より略同時に発行されたものとし、且つ、理解の容易化のため、処理対象のＩ／Ｏ要求の切り替え等に伴うオーバーヘッドは省略する。
【００６５】
ケース『４−Ａ』では、Ｉ／Ｏ要求[6]、Ｉ／Ｏ要求[7]の順序で処理が実行される。このため、２つのＩ／Ｏ要求の平均レスポンスタイムは、２．５Tである。
【００６６】
一方、ケース『４−Ｂ』では、Ｉ／Ｏ要求[7]、Ｉ／Ｏ要求[6]の順序で処理が実行される。このため、２つのＩ／Ｏ要求の平均レスポンスタイムは２Tとなり、ケース『４−Ａ』における順序でＩ／Ｏ要求の処理が行われた場合よりも、平均レスポンスタイムは向上する。
【００６７】
以上、Ｉ／Ｏ要求のレスポンスタイムの幾つかの例について説明した。１つ目の例、すなわち、図３を参照して説明した例では、複数のＩ／Ｏ要求のコマンド/フレーム処理を混在させることで、プロセッサ（例えばコマンド制御部１０２又は１０５を有するプロセッサ）の稼動効率が上がり、スループットの向上が望める反面、１つのＩ／Ｏ要求に着目するとレスポンスタイムが劣化する場合があることを示した。２つ目の例、すなわち、図４を参照して説明した例では、複数のＩ／Ｏ要求の平均レスポンスタイムに着目し、Ｉ／Ｏ要求を一つずつシーケンシャルに実行した場合と、複数Ｉ／Ｏ要求のコマンド/フレーム処理を混在させた場合とで、平均レスポンスタイムが異なる場合があることを示した。３つ目の例、すなわち、図５を参照して説明した例では、２つ目の例と同様、複数のＩ／Ｏ要求の平均レスポンスタイムに着目しているが、複数のＩ／Ｏ要求のコマンド/フレームの混在ではなく、複数のＩ／Ｏ要求の実行順序によって平均レスポンスタイムが変動する例を示した。
【００６８】
以上の例から分かるように、２以上のＩ／Ｏ要求の平均レスポンスタイムは、２以上のＩ／Ｏ要求に含まれる複数のコマンド又はデータをどのような順番で処理するかによって異なる場合もあれば、２以上のＩ／Ｏ要求そのものをどのような順番で処理するかによって異なる場合もある。
【００６９】
以上が、本実施形態の主要な部分の理解を助けるための説明である。以下、本実施形態の主要な部分について説明する。なお、その説明では、上位装置２０、３０、４０との間の通信プロトコルは、或るＩ／Ｏ要求の入出力通信フレームと別のＩ／Ｏ要求の入出力通信フレームとが混在して通信を行うことができる通信プロトコル、例えば、FC-SB2プロトコルで接続されているものとする。それ故、記憶制御装置１０は、ESCONプロトコルと異なり、一つのＩ／Ｏ要求の処理の実行中に、上位装置と記憶制御装置１０と間の論理的な接続パス(以下、「論理パス」と表記)を占有することをせず、同一論理パス上で同時に複数のデータ記憶領域（例えば論理ボリューム）に対するＩ／Ｏ要求の処理を実行することができる。また、上位装置２０が、Ｉ／Ｏ要求中のライト又はリードコマンドを記憶制御装置１０に送信後、記憶制御装置１０からコマンド応答を待つことなく、待つ必要もなく、ライト要求データを送信することが可能であり、さらに、上位装置は、当該コマンドに対するステータスフレームを受信しなくても、次のコマンド処理に移り、別のＩ／Ｏ要求の発行が可能である。
【００７０】
図６は、記憶制御装置１０の共有メモリ１０６に用意される性能情報テーブル１０６０を示す。
【００７１】
性能情報テーブル１０６０には、Ｉ／Ｏ要求に含まれているコマンド又はデータに関する複数のコマンド／データ属性の各々について、その属性を持つコマンド又はデータの処理に要すると期待される時間長に関する期待値が記録されている（期待値は、時間長それ自体を意味するものであっても良いし、その時間長に関する別の意味を表すものであっても良い）。この性能情報テーブル１０６０に記録される情報は、人間がサービスプロセッサ５０を使用して入力した情報であっても良いし、記憶制御情報１０が後述する統計情報に基づいて自動的に登録するものであっても良い。
【００７２】
性能情報テーブル１０６０には、コマンド処理時間サブテーブル１０６０Ａと、データ転送処理時間サブテーブル１０６０Ｂとが含まれている。
【００７３】
コマンド処理時間サブテーブル１０６０Ａには、Ｉ／Ｏ要求に含まれているコマンドに関する複数のコマンド属性（例えばコマンド種別）の各々について、その属性を持つコマンドの処理に要する期待値が記録されている。この期待値は、例えば、コマンドの処理を開始した時点からその処理が完了し所定の信号を上位装置に送信する時点までの時間長に関するものである。
【００７４】
データ転送処理時間サブテーブル１０６０Ｂには、Ｉ／Ｏ要求に含まれているデータに関する複数のデータ属性（例えば転送種別及び転送長）の各々について、その属性を持つコマンドの処理に要する期待値が記録されている。転送種別が「リード処理」であるデータについての期待値は、例えば、キャッシュメモリ１０８からデータをリードして上位装置に送信するまでの時間長に関するものである。また、転送種別が「ライト処理」であるデータについての期待値は、例えば、Ｉ／Ｏ要求バッファ１１０からデータを読出してキャッシュメモリ１０８にし、そのデータがキャッシュメモリ１０８から記憶装置６０に格納されるまでの時間長に関するものである。
【００７５】
この図６に示した性能情報テーブル１０６０によれば、例えば、或るＩ／Ｏ要求が、リード要求であって、且つ、コマンド種別[１]のコマンドと、コマンド種別[２]のコマンドと、データ長ａのデータとから構成されている場合は、そのＩ／Ｏ要求についての期待値の合計（換言すれば、そのＩ／Ｏ要求の処理にかかると予測される時間長）は、Ｔ１＋Ｔ２＋Ｔａである。
【００７６】
以上が、性能情報テーブル１０６０についての説明である。なお、言うまでも無いが、性能情報テーブル１０６０に記録される情報の種類は、図６に示したものに限られない。例えば、情報性能テーブル１０６０には、キャッシュヒットしたときとキャッシュミスしたときとに分けて、種々の期待値が記録されていても良い。また、コマンド処理時間サブテーブル１０６０Ａに記録されている期待値、或いは、データ転送処理時間サブテーブル１０６０Ｂにおいて転送種別が「リード処理」の期待値には、記憶制御装置１０から送出されたデータが上位装置２０、３０又は４０に到達するまでの時間長も含まれていても良い。その時間長は、上位装置２０、３０及び４０の全てについて共通の値であっても良いし、上位装置２０、３０及び４０毎に固有の値であっても良い。
【００７７】
次に、格別図示しないが、統計情報テーブル１０６１について説明する。
【００７８】
統計情報テーブル１０６１には、記憶制御装置１０において過去に行われたＩ／Ｏ要求処理に関する履歴に基づく統計情報が格納される。統計情報としては、例えば、コマンド又はデータに関する複数の属性の各々について、処理にかかった時間長の統計（例えば平均）を含んだ情報がある。
【００７９】
この統計情報テーブル１０６１には、例えば、以下のような流れで統計情報が格納される。
【００８０】
例えば、記憶制御装置１０における各構成要素（例えばコマンド制御部１０２及び１０５）は、Ｉ／Ｏ要求中のコマンド又はデータの処理が行われたときは、その都度又は所定のタイミングで（例えば定期的に）、そのコマンド又はデータに関する履歴を所定の履歴格納領域（例えば不揮発性のメモリ）に登録する。登録される履歴は、例えば、過去一定期間における履歴である。
【００８１】
記憶制御装置１０における所定の構成要素（例えばチャネル制御部及びコマンド制御部を有する各マイクロプロセッサ）は、所定のタイミングで（例えば定期的に）、上記履歴格納領域に書かれている履歴情報に基づいて、例えば過去一定期間におけるＩ／Ｏ要求処理をトレースし、そのトレースの結果に基づいて、Ｉ／Ｏ要求中のコマンド又はデータの属性毎に、そのコマンド又はデータの処理にかかった時間長の統計値を統計情報テーブル１０６１に格納する。
【００８２】
なお、記憶制御装置１０における所定の構成要素（例えばチャネル制御部及びコマンド制御部を有する各マイクロプロセッサ）は、この統計情報テーブル１０６１に格納された上記時間長に基づいて、適宜に（例えば定期的に）、性能情報テーブル６０の内容を更新しても良い。具体的には、例えば、上記所定の構成要素は、この統計情報テーブル１０６１から各エントリ項目（コマンド又はデータ属性）に対応した時間長を読出し、性能情報テーブル６０上のそのエントリ項目に対応した期待値に、上記読み出した時間長を上書きすることで、性能情報テーブル１０６０の内容を更新しても良い。
【００８３】
次に、図７を参照してＩ／Ｏ要求バッファ１０９及び１１０について説明する。１０９及び１１０は、構成的には実質的に同一なので、Ｉ／Ｏ要求バッファ１０９について代表的に説明する。
【００８４】
Ｉ／Ｏ要求バッファ１０９は、Ｉ／Ｏ要求処理を行うプロセッサ（具体的には、チャネル制御部１０１及びコマンド制御部１０２を含むプロセッサ）のバッファであり、同一のプロセッサ内にあるチャネル制御部１０２およびコマンド制御部１０２よりアクセス可能である。このＩ／Ｏ要求バッファ１０９には、Ｎ個のＩ／Ｏ要求の各々について、バッファ領域が用意されており、各Ｉ／Ｏ要求のコマンド又はデータフレームは、そのＩ／Ｏ要求に対応したバッファ領域に格納することができるようになっている。また、Ｉ／Ｏ要求バッファ１０９には、現在このバッファ１０９に登録されているＩ／Ｏ要求の数を表すＩ／Ｏ要求数情報を登録することができるようになっている。また、このＩ／Ｏ要求バッファ１０９には、各Ｉ／Ｏ要求毎に、実行順序情報（例えば、処理される順位を表す情報）を登録することができるようになっている。
【００８５】
なお、Ｉ／Ｏ要求バッファ１０９の形態は、この図７に例示したように、Ｉ／Ｏ要求毎にバッファ領域が用意される形態に限られない。例えば、Ｉ／Ｏ要求バッファ１０９は、チャネル制御部１０１が受け付けたコマンド又はデータフレームが、どのＩ／Ｏ要求に含まれるものであるかに関わらず、先着順に格納される形態（例えばＦＩＦＯの形態）でも良い。
【００８６】
上位装置２０は、特定の通信プロトコルの下、発行する各Ｉ／Ｏ要求について、初めから或いは所定のコマンド（例えばlocate recordコマンド）に対する応答を受けた以後、そのＩ／Ｏ要求に含まれるコマンド又はデータを任意のタイミングで任意の数だけ記憶制御装置１０に送信することができる。そのため、Ｉ／Ｏ要求バッファ１０９には、各Ｉ／Ｏ要求について、未処理状態のデータ又はコマンドが１つしか存在しない場合もあれば、２つ以上存在する場合もある。
【００８７】
チャネル制御部１０１は、当該バッファ１０９の空きサイズや領域等を管理しており、上位装置２０から最新のＩ／Ｏ要求を受けたときは、未だ何らコマンド又はデータが格納されていないバッファ領域にそのＩ／Ｏ要求中のコマンド又はデータを格納し、一方、受信済みのＩ／Ｏ要求における新たなコマンド又はデータフレームを受信したときは、そのＩ／Ｏ要求に対応したバッファ領域にそのコマンド又はデータフレームを追加する。また、チャネル制御部１０１は、Ｉ／Ｏ要求バッファ１０９に登録されているＩ／Ｏ要求の数を把握し、それを表すＩ／Ｏ要求数情報をそのバッファ１０９に登録する。また、チャネル制御部１０１は、その登録されているＩ／Ｏ要求の数が変化する都度に、バッファ１０９に登録されているＩ／Ｏ要求数情報を更新する。また、チャネル制御部１０１は、バッファ１０９に残すべきデータや消去すべきデータを管理しても良い。具体的には、例えば、チャネル制御部１０１は、最後まで処理が完了していない（例えば、処理終了を意味するステータスフレームが送信されていない或いはそれに対する応答を受信していない）Ｉ／Ｏ要求については、たとえ処理済みのコマンドやデータがあっても消去せず、全ての処理が完了した段階で、そのＩ／Ｏ要求に含まれているコマンド及びデータを全て消去するようにしても良い。このように、Ｉ／Ｏ要求に含まれるデータやコマンドはそれについての処理が完了するまでバッファ１０９に残るので、後述するように、Ｉ／Ｏ要求単位で後述の要求処理順序を決定することができる。
【００８８】
コマンド制御部１０２は、後に詳述する方法で、上位装置２０から受信した２以上のＩ／Ｏ要求をどのような順序で処理するか（或いは、２以上のＩ／Ｏ要求に含まれる複数のデータ又はコマンドをどのような順序で処理するか）を決定する。そして、コマンド制御部１０２は、決定した順序（以下、「要求処理順序」と言う）に基づき、各Ｉ／Ｏ要求の実行順序情報（例えば処理順位）をＩ／Ｏ要求バッファ１０９（つまり、コマンド制御部１０２を持つマイクロプロセッサの内部メモリ）に登録することで、その決定された要求処理順序で、バッファ１０９に存在するＩ／Ｏ要求（或いはそれに含まれるコマンド又はデータ）の処理を行う。
【００８９】
要求処理順序を決定する方法としては、様々な方法が考えられる。以下、図８以降を参照して、要求処理順序の決定方法の例について説明する。
【００９０】
図８は、コマンド制御部１０２が、第１の要求処理順序決定方法でＩ／Ｏ要求の処理順序を決定するときの処理流れの概要を示す。
【００９１】
コマンド制御部１０２は、Ｉ／Ｏ要求処理を開始した場合（ステップＳ８１）、Ｉ／Ｏ要求バッファ１０９を参照し、そこにＩ／Ｏ要求が存在すれば（Ｓ８２でＹ）、実行すべき（或いは処理可能な）Ｉ／Ｏ要求の数をチェックする（Ｓ８３）。なお、「実行すべき（或いは処理可能な）Ｉ／Ｏ要求」とは、例えば、自分が有する全てのデータ又はコマンドがバッファ１０９に登録されており、且つ、それら全てのデータ又はコマンドのうち少なくとも１つのデータ又はコマンドが未処理の状態になったＩ／Ｏ要求である。
【００９２】
さて、Ｓ８３の結果、実行すべきものとして存在するＩ／Ｏ要求の個数がＫ個未満（Ｋ≧２）である場合（Ｓ８３でＮ）、コマンド制御部１０２は、バッファ１０９内のそのＩ／Ｏ要求を実行する（Ｓ８８）。
【００９３】
一方、Ｓ８３の結果、実行すべきものとして存在するＩ／Ｏ要求の個数がＫ個以上Ｑ個以下である場合（Ｓ８３でＹ）、コマンド制御部１０２は、バッファ１０９内にある先着Ｍ個（Ｋ≦Ｍ≦Ｑ）のＩ／Ｏ要求の各々について、そのＩ／Ｏ要求に含まれるコマンド及びデータの属性と、性能情報テーブル１０６０（及び／又は統計情報テーブル１０６１）とに基づき、Ｉ／Ｏレスポンスタイムの期待値の合計を算出、換言すれば、各Ｉ／Ｏ要求のＩ／Ｏレスポンスタイムを予測する（Ｓ８４）。そして、コマンド制御部１０２は、各Ｉ／Ｏ要求について算出された期待値の合計に基づいて、Ｍ個のＩ／Ｏ要求の平均レスポンスタイムが好適な平均レスポンスタイムになるものを識別し、識別された平均レスポンスタイムを得ることができるような、Ｉ／Ｏ要求の要求処理順序を決定する（Ｓ８５）。コマンド制御部１０２は、決定した要求処理順序に基づいて、Ｍ個のＩ／Ｏ要求の各々の処理順位をＩ／Ｏ要求バッファ１０９に登録する。そして、コマンド制御部１０２は、Ｍ個のＩ／Ｏ要求を、その登録した処理順位で実行するための処理を開始し（Ｓ８６）、Ｍ個のＩ／Ｏ要求について処理が終れば終了となる（Ｓ８７）。
【００９４】
なお、この図８に示した処理流れにおいて、例えば、上記実行すべきＩ／Ｏ要求の数がＱ個に達した時点で、Ｓ８１が開始されても良い。また、上記Ｋ及びＱの値は、例えば、予め変更不能に或いは変更可能に決められておくパラメータである。Ｋ及びＱの値がより大きくなると、処理手順のスケジューリング対象となるＩ／Ｏ要求の数が増えるので、Ｍ個のＩ／Ｏ要求の平均レスポンスタイムをより小さくすることが可能となるが、その反面、Ｉ／Ｏ実行順序を決定するためのオーバーヘッドが大きくなる。
【００９５】
さて、図９は、図８の処理流れで示したＳ８５における要求順序決定の一例を示す。
【００９６】
コマンド制御部１０２は、Ｍ個のＩ／Ｏ要求について算出したＭ個の期待値合計のうち、最大のものと最小のものとを比較する（Ｓ８５１）。
【００９７】
Ｓ８５１の比較の結果、上記最大と最小との差が所定の閾値S1より大きい場合（Ｓ８５１でＹ）、コマンド制御部１０２は、Ｍ個のＩ／Ｏ要求の要求処理順序を、Ｉ／Ｏレスポンスタイムの期待値合計が小さい順序に決定し、決定した順序をＩ／Ｏ要求バッファ１０９に書込む（Ｓ８５２）。
【００９８】
一方、Ｓ８５１の比較の結果、上記最大と最小との差が所定の閾値S1以下の場合（Ｓ８５１でＮ）、コマンド制御部１０２は、Ｍ個のＩ／Ｏ要求の要求処理順序を、それの受付順（例えば、Define
Extentコマンドの受信順）と同じ順序に決定し、決定した順序をＩ／Ｏ要求バッファ１０９に書込む（Ｓ８５３）。
【００９９】
Ｓ８５２又はＳ８５３の処理が終ると、Ｓ８５の終了となる（Ｓ８５４）。
【０１００】
なお、上述した説明において、所定の閾値S１は、例えば、予め変更可能に又は変更不可能に設定されるパラメータである。また、この閾値S1を設定せずに、上記Ｍ個の期待値合計のうち第１の期待値合計と第２の期待値合計と間の単なる大小関係だけで、要求処理順序をどのようにするかを制御するようにすれば、Ｍ個のＩ／Ｏ要求の要求処理順序についてきめ細かい制御が可能となるが、Ｉ／Ｏ要求の要求処理順序を、Ｉ／Ｏ要求の受付順序（例えば、Define
Extentコマンドの受信順序）とは違う順序に入れ替えることにより発生するオーバーヘッドを考慮に入れると、例えば、閾値S1を適切な値に設定し、Ｉ／Ｏレスポンスタイムの期待値合計がある範囲に収まる複数のＩ／Ｏ要求に関しては、Ｉ／Ｏ要求を受け付けた順序で実行することにより、前記のオーバーヘッドを削減することが可能になる。別の言い方をすれば、例えば、Ｉ／Ｏレスポンスタイムの期待値合計が所定の範囲内にある２以上のＩ／Ｏ要求については、それら２以上のＩ／Ｏ要求の受付順序と同じ順序で処理が行われるようにし、一方、Ｉ／Ｏレスポンスタイムの期待値合計が所定の範囲外にある別の２以上のＩ／Ｏ要求については、それら別の２以上のＩ／Ｏ要求の要求処理順序は、Ｉ／Ｏレスポンスタイムの期待値合計が小さい順序に決定されても良い。
【０１０１】
以上が、第１の要求処理順序決定方法に基づくコマンド制御部１０２の処理流れである。次に、図１０以降を参照して、第２の要求処理順序決定方法に基づくコマンド制御部１０２の処理流れについて説明する。
【０１０２】
図１０は、コマンド制御部１０２が、第２の要求処理順序決定方法でＩ／Ｏ要求の処理順序を決定するときの処理流れの概要を示す。
【０１０３】
コマンド制御部１０２は、或るＩ／Ｏ要求に対する処理を開始する（Ｓ１０１）。そして、コマンド制御部１０２は、当該Ｉ／Ｏ要求を開始した時刻をタイムスタンプとして記憶（例えば、バッファ１０９に記録）する。
【０１０４】
次に、コマンド制御部１０２は、当該Ｉ／Ｏ要求の処理を開始してから経過した時間をチェックする（Ｓ１０２）。このＳ１０２の処理は、所定のタイミング（例えば或る一定の周期）で行う。
【０１０５】
Ｓ１０２のチェックの結果、上記経過時間が予め定義されている経過時間閾値S2以下の場合は（Ｓ１０２でＹ）、コマンド制御部１０２は、当該Ｉ／Ｏ要求の処理を続行する（Ｓ１０６）。
【０１０６】
一方、Ｓ１０２のチェックの結果、上記経過時間が閾値S2を超えている場合（Ｓ１０３でＮ）、コマンド制御部１０２は、当該Ｉ／Ｏ処理を続行するか、或いは、他のＩ／Ｏ要求に処理を切り替えるかを判定する（Ｓ１０３）。別の言い方をすれば、コマンド制御部１０２は、現在処理中のＩ／Ｏ要求よりも直ちに処理することが望ましい別のＩ／Ｏ要求が存在するか否かをチェックする。
【０１０７】
Ｓ１０３において、処理を切り替えないと判定された場合は（Ｓ１０３でＮ）、コマンド制御部１０２は、現在実行中のＩ／Ｏ要求処理を続行する。
【０１０８】
一方、Ｓ１０３において、処理を切り替えると判定した場合（Ｓ１０３でＹ）、コマンド制御部１０２は、処理を切り替えて実行するＩ／Ｏ要求の要求処理順序を決定する（Ｓ１０４）。この要求処理順序は、例えば、図８及び図９を参照して説明した方法と同様に、実行すべきＭ個のＩ／Ｏ要求のレスポンスタイムの期待値合計を算出し、算出されたＭ個の期待値合計が小さい順に、上記Ｍ個のＩ／Ｏ要求の要求処理順序を決定することができる。
【０１０９】
その後、コマンド制御部１０４は、決定した要求処理順序に従って、実行すべき複数のＩ／Ｏ要求についての処理を開始する（Ｓ１０５）。
【０１１０】
以上が、第２の要求処理順序決定方法に基づくコマンド制御部１０２の処理流れの概要である。なお、この流れにおいて、閾値S2は、一つのＩ／Ｏ要求を続けて処理する時間長の閾値である。
【０１１１】
記憶制御装置１０において、処理完了までに比較的長い時間を要する第１のＩ／Ｏ要求の処理中に、比較的短い時間で処理することが期待できる第２のＩ／Ｏ要求を受けた場合、第１のＩ／Ｏ要求の処理を長時間行うと、前述した３つ目の考察から分かるように、第１及び第２のＩ／Ｏ要求の平均レスポンスタイムが劣化してしまう。
【０１１２】
そこで、それを避けるため、第２の要求処理順序決定方法では、Ｉ／Ｏ要求の処理が開始されてからの経過時間の閾値S2を設け、その経過時間が閾値S2を越えた場合、コマンド制御部１０２によって、現在処理中のＩ／Ｏ要求よりも直ちに処理することが望ましい別のＩ／Ｏ要求が存在するか否かのチェックが行われる。これにより、長い処理時間を要する第１のＩ／Ｏ要求のために、処理時間が短くて済む第２のＩ／Ｏ要求のＩ／Ｏレスポンスタイムが劣化することを回避し、且つ、第１及び第２のＩ／Ｏ要求の平均レスポンスタイムが劣化することも回避する。
【０１１３】
図１１は、図１０に示した処理流れにおけるＳ１０３の具体的な処理流れを示す。
【０１１４】
コマンド制御部１０２は、Ｉ／Ｏ要求バッファ１０９内に、処理待ち状態のＩ／Ｏ要求があるか否かをチェックし、処理待ち状態のＩ／Ｏ要求が格納されていれば、性能情報テーブル１０６０（及び／又は統計情報テーブル１０６１）を用いて、当該１以上のＩ／Ｏ要求についてのＩ／Ｏレスポンスタイムの期待値合計を算出し、算出された期待値合計のうち、Ｉ／Ｏ要求バッファ１０９内に予め設定される閾値S3より小さい期待値合計を持つＩ／Ｏ要求があるか否かを判定する（Ｓ１０３１）。
【０１１５】
Ｓ１０３１において、閾値S３より小さな期待値合計となったＩ／Ｏ要求がある場合（Ｓ１０３１でＹ）、コマンド制御部１０２は、そのＩ／Ｏ要求を、要求処理順序を決定する際の要素となるＩ／Ｏ要求として選択し（Ｓ１０３２）、Ｓ１０３を終える（Ｓ１０３３）。
【０１１６】
一方、Ｓ１０３１において、Ｉ／Ｏ要求バッファ１０９内に処理待ち状態のＩ／Ｏ要求が無い場合、又は、上記閾値S３より小さな期待値合計となったＩ／Ｏ要求が無い場合、コマンド制御部１０２は、Ｓ１０３において、別のＩ／Ｏ要求の処理に切り替えはしないと決定して、Ｓ１０３を終える（Ｓ１０３３）。
【０１１７】
なお、この処理流れにおいて、閾値S3とは予め設定される閾値である。現在実行中のＩ／Ｏ処理が閾値S2を越える処理時間がかかっているとはいえ、やみくもに別のＩ／Ｏ要求に切り替えても、平均レスポンスタイムの短縮化は必ずしも図れない。現在実行中のＩ／Ｏ処理が閾値S2を超え、別のＩ／Ｏ要求の処理を切り替える場合、この切り替えたＩ／Ｏ要求の処理がある程度短い処理で終了する場合にのみ、複数のＩ／Ｏ要求の平均レスポンスタイムを向上させる目的にかなうと考えられる。そこで、図１１を参照して説明した方法によって、現在実行中のＩ／Ｏ要求処理を別のＩ／Ｏ要求処理に変えるか否かが判断される。
【０１１８】
以上、上述した実施形態によれば、受信された２以上のＩ／Ｏ要求に含まれる複数のコマンド要素（コマンド又はデータ）に基づいて、それら２以上のＩ／Ｏ要求の平均レスポンスタイムが、複数のコマンド要素又は２以上のＩ／Ｏ要求をそれの受信順序に従って処理するときの値以下になるような、受信順序とは異なる処理手順が決定され、それに基づいて、上記複数のコマンド要素の処理が開始される。これにより、２以上のＩ／Ｏ要求の平均レスポンスタイムを、単にそれらの受信順序に従って処理されるときの平均レスポンスタイムよりも短くすることができる。
【０１１９】
なお、上述した説明では、上位装置２０から発行されたＩ／Ｏ要求を受信するチャネル制御部１０１、Ｉ／Ｏ要求バッファ１０９及びコマンド制御部１０２について詳細に説明したが、他のチャネル制御部１０４、Ｉ／Ｏ要求バッファ１１０及びコマンド制御部１０５も実質的に同様に機能する。
【０１２０】
また、上述した実施形態において、例えば、コマンド制御部１０２は、様々なタイミングで（例えば、キャッシュヒットしたとき及びキャッシュミスしたときの少なくとも一方のときに）、要求処理順序を決定（或いは変更）する処理を開始しても良い。
【０１２１】
また、上述した実施形態において、所定の種々の値（例えば、Ｋ、Ｑ、及び閾値S1〜S3の少なくとも一つ）は、処理対象のＩ／Ｏ要求の切り替えの際のタイムロス等の種々の情報に基づいて適切な値に設定される。また、その値は、例えば、一旦設定されて記憶制御装置１０が起動した後は、変更が不可能であっても良いし、或いは、記憶制御装置１０内でのチューニング等によって変更が可能であっても良い。
【０１２２】
また、上述した実施形態において、例えば、要求処理順序を決定する、記憶制御装置１０における構成要素は、コマンド制御部１０２、１０５に限らず他の構成要素が行っても良い。
【０１２３】
また、上述した実施形態において、例えば、コマンド制御部１０２は、或るＩ／Ｏ要求の処理中に、他のＩ／Ｏ要求の処理に切り替えるか否かの判断を行うときは、その或るＩ／Ｏ要求については、それの処理完了までにかかると推測される残りの時間長に基づいて、上記判断が行われても良い。また、例えば、要求処理順序の決定が行われるときには、その残りの時間長に基づいて、当該決定が行われても良い。なお、その残り時間長は、例えば、コマンド制御部１０２が、処理中のＩ／Ｏ要求において、未処理の１以上のコマンド要素の属性に基づいて１以上のコマンド要素の期待値合計を算出することで求めても良い。
【０１２４】
また、上述した実施形態では、Ｉ／Ｏ要求単位で処理手順が決定され、Ｉ／Ｏ要求単位で一つの処理が行われるが、例えば、それに代えて、Ｉ／Ｏ要求のコマンド要素単位で処理順序が決定されてコマンド要素の処理が行われても良い。具体的には、例えば、第1のＩ／Ｏ要求に、第1及び第２のコマンド要素が含まれていて、第２のＩ／Ｏ要求に、第３及び第４のコマンド要素が含まれている場合、上記実施形態では、第１及び第２のコマンド要素の処理が行われてから、第３及び第４のコマンド要素が行われるが、この変形例では、第１、第３、第２、第４の順でコマンド要素が処理されるような要求処理順序が決定されても良い。この方式は、２つ目の考察からすれば、平均レスポンスタイムの向上につながりにくいこともあるが、例えば、或るＩ／Ｏ要求について処理時間長が膨大なコマンド要素の処理中に、他のＩ／Ｏ要求について処理時間が極小のコマンド要素を受信した場合、その極小のコマンド要素を先に処理してしまった方が、平均レスポンスタイムを短縮化することができる。
【０１２５】
なお、この変形例における更なる変形例として、情報セット単位（例えばＩ／Ｏ要求単位）で要求処理順序を決定する第１の情報処理モードと、情報要素単位（例えばコマンド要素単位）で要求処理順序を決定する第２の情報処理モードとがあり、これら２つの情報処理モードが、所定のモード選択方法に基づいて選択的に使用されても良い。具体的には、例えば、情報セットを発行する上位装置２０が記憶制御装置１０に所望の情報処理モードを通知することで、記憶制御装置１０が、その上位装置に対してはその通知された情報処理モードに基づいて要求処理順序を決定するようにしても良い。また、例えば、コマンド制御部１０２は、バッファ１０９に、全ての情報要素（コマンド要素）が記録された情報セット（Ｉ／Ｏ要求）が複数個ある場合には、その複数の情報セットについては情報セット単位で処理順序を決定し、一部の情報要素しか記録されていない別の情報セットが複数個ある場合には、その複数の別の情報セットについては情報要素単位で処理順序が決定されても良い。また、例えば、記憶制御装置１０は、処理対象のＩ／Ｏ要求の切り替えの際にロスする時間長情報等、平均レスポンスタイムの向上に関わる有用な種々を情報を記憶しておき、その情報に基づいて、任意タイミングで（例えば、或る情報セット又は或る情報要素の処理を開始してから一定時間を経過したとき）、且つ、任意の要求処理手順決定方法で、２以上の情報セット又はそれらに含まれる複数の情報要素の要求処理手順を決定しても良い。なお、情報要素単位で要求処理順序が決定された場合には、各情報要素毎に、順位がバッファ１０９に記録されても良い。また、決定される要求処理手順は、例えば、情報セット又は情報要素の受信順序とは異なる順序であって、その受信順序のときの平均レスポンスタイムよりも短い平均レスポンスタイムになる順序である。
【０１２６】
以上、本発明の好適な実施形態及び変形例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこの実施形態及び変形例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
【０１２７】
例えば、上記期待値は、レスポンスタイムの期待値ではなく、記憶制御装置１０において行われる処理に要する時間長の期待値であっても良い。また、インターロックを取らずに上位装置がパイプライン的にデータ又はコマンドを送信することができる通信プロトコル（一例としてFC-SB2プロトコル）は、別の言い方をすれば、例えば、上位装置と記憶サブシステム（記憶装置６０及び記憶制御装置１０を含むシステム）とが、記憶サブシステム側からの応答とは非同期に、上位装置が複数のコマンド及びデータのチェーンで構成されるＩ／Ｏ要求を記憶システムに対して発行することができるプロトコルである。
【０１２８】
また、例えば、本発明の第１の好適な実施形態では、前記決定手段は、前記複数の情報要素に基づいて、前記２以上の情報セットの各々について、処理に要すると期待される時間長に関する期待値を取得し（例えば算出し）、前記取得された期待値に基づいて、前記処理手順を決定する。
【０１２９】
また、例えば、本発明の第２の好適な実施形態では、上記第１の好適な実施形態において、情報処理装置は、情報要素に関する複数の情報要素属性の各々について、その情報要素属性を持つ情報要素の処理に要すると期待される時間長に関するサブ期待値を表すサブ期待値情報を記憶するサブ期待値記憶手段を更に備える。この場合、前記決定手段が、前記複数の情報要素の各々の情報要素属性と、前記記憶されているサブ期待値情報とに基づいて、前記複数の情報要素の各々についての前記サブ期待値を取得し、前記取得されたサブ期待値を用いて、前記２以上の情報セットの各々についての前記期待値を取得する。なお、「情報要素属性」には、例えば、情報要素の種類、データサイズ及び発行元のうちの少なくとも１つが含まれる。
【０１３０】
また、例えば、本発明の第３の好適な実施形態では、上記第２の好適な実施形態において、前記決定手段は、前記取得されたサブ期待値が小さい情報要素又は情報セットほど早い順番で処理されるような前記処理手順を決定する。
【０１３１】
また、例えば、本発明の第４の好適な実施形態では、上記第１の好適な実施形態において、前記決定手段は、前記情報処理手段によって過去に処理された情報要素の属性とその情報要素の処理に要した時間長との履歴に関する情報に基づいて、前記２以上の情報セットの各々についての前記期待値を取得する。
【０１３２】
また、例えば、本発明の第５の好適な実施形態では、前記決定手段は、前記複数の情報要素についての複数通りの処理手順にそれぞれ対応した複数通りの前記平均に関する値のうち最小の値となるような処理手順を決定する。
【０１３３】
また、例えば、本発明の第６の好適な実施形態では、前記決定手段は、前記２以上の情報セットについて、前記処理時間長の最小と最大との差分を取得し、前記差分が所定値以上である場合に、前記処理手順を決定する処理を実行する。
【０１３４】
また、例えば、本発明の第７の好適な実施形態では、前記複数の情報要素に、前記情報処理手段によって処理中の情報要素が含まれているときは、前記決定手段は、その情報要素の処理に要する処理時間長のうちの残りの時間長に基づいて、前記処理手順を決定する。
【０１３５】
また、例えば、本発明の第８の好適な実施形態では、情報処理装置は、前記情報セットについての処理が完了する場合に、その処理が終了したことを意味する終了信号をその情報セットの発行元の情報セットソースに送信する終了信号送信手段を更に備える。この場合、前記情報セットについての前記処理時間長は、前記情報セットソースが前記情報セットを発行してから前記終了信号を受信するまでのレスポンスタイムに関する時間長である。
【０１３６】
また、例えば、本発明の第９の好適な実施形態では、前記決定手段は、前記受信された２以上の情報セットについての受信状況が所定の状況である場合に（例えば、受信した情報セットの数が所定の数以上である場合に）、前記処理手順を決定する処理を実行する。なお、その場合でなければ、例えば、前記決定手段は、前記情報処理手段が、現在処理中の情報セット又は情報要素の処理を継続して実行する、或いは、受信した順序で情報セット又は情報要素の処理を行うようにする。
【０１３７】
また、例えば、本発明の第１０の好適な実施形態では、前記決定手段は、前記情報セット又は前記情報要素についての処理が開始されてから所定時点までの経過時間長を把握し、前記経過時間長が一定の時間長を超えたときに、前記処理手順を決定する処理を実行する。具体的には、例えば、前記決定手段は、上記経過時間長が前期一定の時間長を超えた１又は複数の情報セット又は２以上の情報要素について上記期待値を取得し、取得した期待値に、所定の閾値より小さい期待値がある場合には、前記処理手順を決定する処理を実行する。なお、それらの条件を満たさない場合、例えば、前記決定手段は、前記情報処理手段が、現在処理中の情報セット又は情報要素の処理を継続して実行する、或いは、受信した順序で情報セット又は情報要素の処理を行うようにする。
【０１３８】
また、例えば、本発明の第１１の好適な実施形態では、情報処理装置は、物理的又は論理的な１又は複数の記憶デバイスと通信可能に接続することができる。受信手段は、１以上の情報要素を有するＩ／Ｏ要求を発行する１又は複数のＩ／Ｏ要求ソースから前記Ｉ／Ｏ要求の各々に含まれる情報要素を受信する。情報処理手段は、前記受信されたＩ／Ｏ要求に含まれている情報要素に基づいて、前記記憶デバイスからデータをリードしＩ／Ｏ要求ソースに送信する、又は、前記Ｉ／Ｏ要求ソースからのデータを前記記憶デバイスにライトする処理を行う。決定手段は、受信された２以上のＩ／Ｏ要求に含まれる未処理又は処理中の複数の情報要素に基づいて、前記２以上のＩ／Ｏ要求又は前記複数の情報要素の処理手順を決定するものであって、前記２以上のＩ／Ｏ要求のレスポンスタイムの平均に関する値が、前記複数の情報要素又は前記２以上のＩ／Ｏ要求をそれの受信順序に従って処理するときの値以下になるような、前記受信順序とは異なる前記処理手順を決定する。
【図面の簡単な説明】
【０１３９】
【図１】本発明の一実施形態に係る情報処理装置が適用された記憶システムの全体構成を示す。
【図２】ライトＩ／Ｏ要求に対する処理シーケンスの一例。
【図３】複数Ｉ／Ｏ要求の処理におけるレスポンスタイムの第１の考察。
【図４】複数Ｉ／Ｏ要求の処理におけるレスポンスタイムの第２の考察（平均レスポンスタイムの考察)。
【図５】複数Ｉ／Ｏ要求の処理におけるレスポンスタイムの第３の考察(平均レスポンスタイム)。
【図６】共有メモリ１０６における情報性能テーブル１０６０の一例。
【図７】Ｉ／Ｏ要求バッファ１０９を示す図。
【図８】コマンド制御部１０２が、第１の要求処理順序決定方法でＩ／Ｏ要求の処理順序を決定するときの処理流れの概要を示す。
【図９】図８の処理流れで示したＳ８５における要求順序決定の一例を示す。
【図１０】コマンド制御部１０２が、第２の要求処理順序決定方法でＩ／Ｏ要求の処理順序を決定するときの処理流れの概要を示す。
【図１１】図１０に示した処理流れにおけるＳ１０３の具体的な処理流れを示す。
【符号の説明】
【０１４０】
１０…記憶制御装置
２０…上位装置
３０…上位装置
４０…上位装置
５０…サービスプロセッサ
６０…記憶装置
７０…ダイレクタ
１００、１０３…ポート
１０１、１０４…チャネル制御部
１０２、１０５…コマンド制御部
１０９、１１０…Ｉ／Ｏ要求バッファ
１０６…共有メモリ
１０７…ディスク制御部
１０８…キャッシュ制御部
６００、６０１…ドライブ
１０６０…性能情報テーブル
１０６１…統計情報テーブル
【図１】
2005115600.tif 000003
【図２】
2005115600.tif 000004
【図３】
2005115600.tif 000005
【図４】
2005115600.tif 000006
【図５】
2005115600.tif 000007
【図６】
2005115600.tif 000008
【図７】
2005115600.tif 000009
【図８】
2005115600.tif 000010
【図９】
2005115600.tif 000011
【図１０】
2005115600.tif 000012
【図１１】
2005115600.tif 000013