(57)【特許請求の範囲】
【請求項１】
中央処理装置に接続され、配下に複数の記憶装置を有し、内部に前記中央処理装置と前記記憶装置との間で授受されるデータが一時的に格納されるキャッシュメモリを有する記憶制御装置を含み、前記記憶制御装置からの応答とは非同期に、前記中央処理装置が複数のコマンド及びデータのチェーンで構成されるＩ／Ｏ要求を前記記憶制御装置に対して発行するＩ／Ｏインタフェースプロトコルにより、前記中央処理装置に接続されている記憶サブシステムであって、
前記記憶制御装置は、前記中央処理装置からの複数の前記コマンド及びデータの受領順には依存せずに、受領した前記コマンドの処理順序を決定して実行する手段を有することを特徴とする記憶サブシステム。
【請求項２】
請求項１記載の記憶サブシステムにおいて、
前記記憶制御装置は、前記中央処理装置から受領した複数コマンドのうち、処理対象のデータが前記キャッシュメモリ上に存在する前記コマンドについては、前記中央処理装置とのデータ転送を実行し、処理対象のデータが前記キャッシュメモリ上に存在しない前記コマンドの処理対象データを、前記記憶装置から前記キャッシュメモリへ読み出す処理を、前記中央処理装置とのデータ転送処理と並行して実行する手段を有することを特徴とする記憶サブシステム。
【請求項３】
請求項１記載の記憶サブシステムにおいて、
前記記憶制御装置は、１つの論理ボリュームのデータを複数の前記記憶装置に分散して格納するＲＡＩＤ構成をとっている場合において、前記中央処理装置から受領した複数コマンドをまとめてコマンド群とし、前記コマンド群のうちの複数コマンドの処理対象データが前記キャッシュメモリ上に存在しない場合、前記各コマンドの処理対象データが格納されている個々の前記記憶装置に対して、前記コマンド群の各コマンドの処理対象データの前記キャッシュメモリへの読み出し処理を複数並行して起動し、前記読み出し処理が完了した順に前記コマンド群の各コマンドに関する前記中央処理装置とのデータ転送と他の前記読み出し処理を並行して実行する手段を有することを特徴とする記憶サブシステム。
【請求項４】
請求項３記載の記憶サブシステムにおいて、
前記記憶制御装置は、前記中央処理装置から受領した複数コマンドをまとめてコマンド群とし、前記コマンド群のうちの複数コマンドの処理対象データが前記キャッシュメモリ上に存在しない場合、前記コマンドの各々の処理対象データが格納されている前記記憶装置の各々の稼動率に応じて前記記憶装置から前記キャッシュメモリへの前記処理対象データの読み出し処理を複数並行して起動し、前記読み出し処理が完了したものから、前記中央処理装置とのデータ転送を他の前記読み出し処理と並行して実行する手段を有することを特徴とする記憶サブシステム。
【請求項５】
請求項４記載の記憶サブシステムにおいて、
前記記憶制御装置は、前記中央処理装置から受領した複数コマンドをまとめて第１のコマンド群とし、前記第１のコマンド群のうちの複数コマンドの処理対象データが前記キャッシュメモリ上に存在しない場合、前記第１のコマンド群のうち、処理対象データが同一の前記記憶装置に存在しているコマンドを前記記憶装置へアクセスするアドレスの昇順にまとめて第２のコマンド群とし、前記第２のコマンド群単位で前記記憶装置から前記キャッシュメモリへの前記記憶装置内のデータの読み出し範囲を決定して前記読み出し処理を起動し、前記読み出し処理が完了したものから前記中央処理装置へのデータ転送を他の前記読み出し処理と並行して実行する手段を有することを特徴とする記憶サブシステム。
【請求項６】
中央処理装置と、前記中央処理装置との間で授受されるデータが格納される複数の記憶装置を配下にもち、前記データが一時的に格納されるキャッシュメモリを備えた記憶制御装置との接続に用いられ、前記記憶制御装置からの応答とは非同期に、前記中央処理装置が複数のコマンド及びデータのチェーンで構成されるＩ／Ｏ要求を前記記憶制御装置に対して発行するプロトコルを備えたＩ／Ｏインタフェースの制御方法であって、
前記記憶制御装置は、前記中央処理装置からのコマンドに関して前記コマンドの受領順に依存しない順序で前記中央処理装置とデータ転送を実行し前記コマンド毎にコマンド終了報告を行ない、
前記中央処理装置は、当該中央処理装置が発行したコマンド及びデータの発行順には依存しない順で、前記記憶制御装置からのデータ及びコマンド終了報告を受領し、前記受領したデータ及びコマンド終了報告に対応する発行済みコマンドを特定し、前記データ及びコマンド終了報告を前記特定したコマンドに対する応答フレームとして処理すること、
を特徴とするＩ／Ｏインタフェースの制御方法。
【請求項７】
中央処理装置と、前記中央処理装置との間で授受されるデータが格納される複数の記憶装置を配下にもち、前記データが一時的に格納されるキャッシュメモリを備えた記憶制御装置との接続に用いられ、前記記憶制御装置からの応答とは非同期に、前記中央処理装置が複数のコマンド及びデータのチェーンで構成されるＩ／Ｏ要求を前記記憶制御装置に対して発行するプロトコルを備えたＩ／Ｏインタフェースの制御方法であって、
前記記憶制御装置は、前記中央処理装置からのコマンドに関して前記コマンドの受領順に依存しない順序で、前記中央処理装置とデータ転送を実行し、
前記記憶制御装置は、前記中央処理装置から受領したコマンド及びデータのチェーンの途中でエラー及びリトライ要因が発生した場合、前記Ｉ／Ｏ要求を中断せずに継続して受領済みの他の実行可能な前記コマンド及びデータに関して前記中央処理装置とのデータ転送を実施し、前記Ｉ／Ｏ要求を構成する全コマンド処理分の終了状態を１つにまとめてＩ／Ｏ要求処理完了報告として前記中央処理装置へ報告し、
前記中央処理装置は、前記Ｉ／Ｏ要求処理完了報告を受領後、前記各コマンドの終了状態を認識し、エラーあるいはリトライ要求のあった前記各コマンドに対してのみリカバリ処理を実行すること、
を特徴とするＩ／Ｏインタフェースの制御方法。
【請求項８】
請求項６記載のＩ／Ｏインタフェースの制御方法において、
前記中央処理装置は、当該中央処理装置が発行したコマンド及びデータの発行順には依存しない順で、前記記憶制御装置からデータ及びコマンド終了報告を受領する処理と、前記記憶制御装置から前記Ｉ／Ｏ要求を構成する全コマンド分に対するコマンド終了報告を受領するまで、前記Ｉ／Ｏ要求処理を中断せず継続して実行する処理と、前記Ｉ／Ｏ要求を構成する全コマンド分の前記コマンド終了報告を受領後、受領した前記コマンド終了報告の中でエラーあるいはリトライ要求があったコマンドに対してのみ、リカバリ処理を実行する処理と、を行うことを特徴とするＩ／Ｏインタフェースの制御方法。
【請求項９】
中央処理装置と、前記中央処理装置との間で授受されるデータが格納される複数の記憶装置を配下にもち、前記データが一時的に格納されるキャッシュメモリを備えた記憶制御装置と、前記中央処理装置と前記記憶制御装置とを接続し、前記記憶制御装置からの応答とは非同期に、前記中央処理装置が複数のコマンド及びデータのチェーンで構成されるＩ／Ｏ要求を前記記憶制御装置に対して発行するプロトコルを備えたＩ／Ｏインタフェースとを含む情報処理システムであって、
前記記憶制御装置は、前記中央処理装置からのコマンドに関して前記コマンドの受領順に依存しない順序で前記中央処理装置とデータ転送を実行し前記コマンド毎にコマンド終了報告を行なう手段を備え、
前記中央処理装置は、当該中央処理装置が発行したコマンド及びデータの発行順には依存しない順で、前記記憶制御装置からのデータ及びコマンド終了報告を受領し、前記受領したデータ及びコマンド終了報告に対応する発行済みコマンドを特定し、前記データ及びコマンド終了報告を前記特定したコマンドに対する応答フレームとして処理する手段を備えた、
ことを特徴とする情報処理システム。
【請求項１０】
中央処理装置と、前記中央処理装置との間で授受されるデータが格納される複数の記憶装置を配下にもち、前記データが一時的に格納されるキャッシュメモリを備えた記憶制御装置と、前記中央処理装置と前記記憶制御装置とを接続し、前記記憶制御装置からの応答とは非同期に、前記中央処理装置が複数のコマンド及びデータのチェーンで構成されるＩ／Ｏ要求を前記記憶制御装置に対して発行するプロトコルを備えたＩ／Ｏインタフェースとを含む情報処理システムであって、
前記記憶制御装置は、前記中央処理装置からのコマンドに関して前記コマンドの受領順に依存しない順序で、前記中央処理装置とデータ転送を実行する手段を備え、
前記記憶制御装置は、前記中央処理装置から受領したコマンド及びデータのチェーンの途中でエラー及びリトライ要因が発生した場合、前記Ｉ／Ｏ要求を中断せずに継続して受領済みの他の実行可能な前記コマンド及びデータに関して前記中央処理装置とのデータ転送を実施し、前記Ｉ／Ｏ要求を構成する全コマンド処理分の終了状態を１つにまとめてＩ／Ｏ要求処理完了報告として前記中央処理装置へ報告する手段を備え、
前記中央処理装置は、前記Ｉ／Ｏ要求処理完了報告を受領後、前記各コマンドの終了状態を認識し、エラーあるいはリトライ要求のあった前記各コマンドに対してのみリカバリ処理を実行する手段を備えた、
ことを特徴とする情報処理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、記憶サブシステム及びＩ／Ｏインタフェースの制御技術ならびに情報処理システムに関し、より詳しくは、中央処理装置と記憶サブシステムの記憶制御装置とが、当該中央処理装置が複数のコマンドやデータから構成される１つのＩ／Ｏ要求を記憶制御装置からの応答とは非同期に記憶制御装置に対して発行することでＩ／Ｏ要求処理を実行するインタフェースプロトコルにより接続された情報処理システム等に適用して有効な技術に関する。
【０００２】
【従来の技術】
銀行のオンラインシステムなどで用いられる大規模情報システム（メインフレームシステム）は、中央処理装置と周辺記憶装置とから構成される。この周辺記憶装置は、記憶制御装置と記憶装置から構成されており、これを記憶サブシステムと呼んでいる。以下、上記の記憶サブシステムとメインフレーム間のインタフェースについての概要を説明する。
【０００３】
上記メインフレーム向け記憶サブシステムを構成する中央処理装置と記憶制御装置との間で、Ｉ／Ｏ要求処理の際に伝達される情報としては主に、（１）コマンド、（２）コマンド応答、（３）コマンド応答受付け、（４）データ、（５）ステータスなどがあり、これらがフレームの形式で伝達されてＩ／Ｏ要求処理が実行される。
【０００４】
中央処理装置は、記憶装置に対するＩ／Ｏ要求を実行するためにＣＣＷチェーンと呼ばれる複数のコマンド及びデータから構成されるコマンド群を作成する。中央処理装置は、このコマンド群の最初のコマンドを記憶制御装置に対して発行する。これに対し、コマンドを受領した記憶制御装置は、コマンドフレームを受領したことを通知するコマンド応答フレームを中央処理装置に対して送信する。このコマンド応答フレームに対して、中央処理装置はコマンド応答受付けフレームを記憶制御装置に対して送信する。この時点で、中央処理装置及び記憶制御装置は、共にデータの送受信が可能な状態になったことを認識し、この後、中央処理装置と記憶制御装置間でデータの送受信が開始される。発行されたコマンドに関するデータの送受信が終了した時点で、記憶制御装置から中央処理装置に対してデータ転送処理の終了状態を通知するステータスフレームが送信される。
【０００５】
中央処理装置は、記憶制御装置からのステータスフレームを受領した後、このステータスの内容をチェックし、次コマンド処理が継続可能であるならば、次コマンドを発行する。この様に、１つのＣＣＷチェーンは、中央処理装置と記憶制御装置間において、１つ１つのコマンド毎にコマンド〜コマンド応答〜データ転送〜ステータス送信といったインターロックをとりながら、逐次処理されていく。
【０００６】
ここで、もう少しＣＣＷチェーンについて詳細に述べる。ＣＣＷチェーンを構成するコマンドの種類としては、レコードへのアクセス可否やアクセスモード等を指定するＤｅｆｉｎｅ  Ｅｘｔｅｎｔコマンド（以下、ＤＸコマンドとする）や、対象となる入出力データのシリンダ・トラック・レコードに位置付けるための情報などを示すＬｏｃａｔｅ  Ｒｅｃｏｒｄコマンド（以下、ＬＯＣコマンドとする）、そして実際のリード・ライトを指示するリード・ライトコマンド、等がある。
【０００７】
１つのＣＣＷチェーンは、これらの複数コマンドのチェーンにより構成される。ＬＯＣコマンドを受領すると、記憶制御装置は、ＬＯＣコマンドのパラメタデータから位置付けすべきシリンダ・トラック・レコードを認識し、位置付け処理を行なう。
【０００８】
ＬＯＣコマンドの後続には、リード／ライトコマンドがチェーンする。ＬＯＣコマンドにチェーンしたリード／ライトコマンドの処理は、ＬＯＣコマンドで位置付けたレコードから連続したレコードに対して実行される。この様にＬＯＣコマンドに続いてチェーンされたリード／ライトコマンドのコマンド群をＬＯＣドメインという。ＬＯＣドメイン数、つまりＬＯＣコマンドに幾つのリード／ライトコマンドがチェーンするかは、ＬＯＣコマンドのパラメタで指定される。
【０００９】
今、あるＩ／Ｏ要求を実行する１ＣＣＷチェーンにおいて、次に処理すべき対象レコードが、直前に処理したレコードとは不連続の場合、同一ＬＯＣドメインでは処理出来ず、次に処理すべきレコードへの位置付け処理が必要となる。この場合、再度ＬＯＣコマンドにて次に処理すべきレコードへの位置付けを行なう。この様に、１つのＣＣＷチェーンの処理において、幾つかの不連続なレコードに対するリード・ライト要求がある場合には、１ＣＣＷチェーンに複数のＬＯＣドメインが存在することになる。
【００１０】
次に、上記ＣＣＷチェーン実行時における、中央処理装置と記憶制御装置間の論理的な接続の切り離し動作について説明する。
【００１１】
中央処理装置から記憶制御装置配下のある記憶装置に対してリード／ライトコマンドが発行された時、記憶制御装置内のキャッシュメモリ上に処理対象のデータが存在しない場合には、記憶装置からデータをキャッシュメモリにステージングする必要がある。この場合には、記憶制御装置は前記のコマンド処理を直ぐには実行出来ない。このため、記憶制御装置は、一旦中央処理装置と記憶制御装置間の論理的な接続を切断する事を要求するステータスを中央処理装置に対して送信し、論理的な接続を切断する。その後、記憶制御装置内キャッシュメモリへのステージング処理が完了し、Ｉ／Ｏを処理する準備が出来た時点で、記憶制御装置は中央処理装置に対し接続割り込み要求の送信を行って論理的な接続を行った後、Ｉ／Ｏ処理再開を意味する状態通知を行なう。
【００１２】
この様に記憶制御装置は、Ｉ／Ｏ処理のための準備が出来ていない等の理由で一旦、中央処理装置との論理的な接続を切断するケースがある。この様な切り離しの要因としては、（１）記憶制御装置内のキャッシュメモリ上にデータが存在せず、記憶装置からデータを記憶制御装置内のキャッシュメモリにステージングするケース、（２）記憶制御装置内のキャッシュメモリのスペース割り当てが出来ず、キャッシュメモリスペースの空き待ちのケース、（３）Ｉ／Ｏ処理のための資源がＢｕｓｙ状態で確保出来ず、資源のＢｕｓｙ解除待ちのケース、等がある。
【００１３】
１ＣＣＷチェーンの実行中に、この様な切り離し動作が多く発生すると、Ｉ／Ｏ要求処理のトータルレスポンスタイムが増加してしまう。
【００１４】
次にキャッシュミスによるレスポンスタイムの増加を削減する技術の一例について述べる。
【００１５】
Ｉ／Ｏ要求のパターンの１つとして、大容量バッチ処理等に代表される様な、記憶装置内のレコードに対して、シーケンシャルにアクセスして処理するパターンがある。この場合のＣＣＷチェーンは、前述のＤＸコマンド、ＬＯＣコマンド、そしてこのＬＯＣコマンドにチェーンした複数のリードｏｒライトコマンドから構成されており、連続したレコード・トラックの処理を実行するという特徴がある。処理対象のレコードは連続しているため、ＬＯＣドメインを切り替える必要はなく、連続してリード／ライトコマンドの処理が実行可能である。
【００１６】
先程述べた様に、リード／ライト対象レコードがキャッシュミスの場合は、中央処理装置と記憶制御装置との論理的な切り離しが発生するため、レスポンスタイムが増加してしまう。しかし、このシーケンシャルアクセスの場合は、ＣＣＷチェーンの次のコマンドを受領していなくても次にアクセスするシリンダ・トラック・レコードを予測出来るため、処理を行なうであろうシリンダ・トラック・レコードのデータを、前もってキャッシュ上にステージングしておくことにより、キャッシュミスによる中央処理装置と記憶制御装置との切り離しを実行する契機を削減でき、レスポンスタイムの向上が望める。ちなみに、当該ＣＣＷチェーンがシーケンシャルアクセスか否かは、ＤＸコマンドにシーケンシャルアクセスを示す情報があるので、これを参照すればよい。
【００１７】
一方、別のＩ／Ｏ要求のパターンの１つとして、データベースへのアクセスに代表される様な、ランダムなレコードへのアクセスがある。ランダムアクセスでは、アクセス対象のレコードが分散しているため、それぞれのレコードの処理を行なう前に、ＬＯＣコマンドにて位置付け処理を行なう必要がある。このため、ランダムアクセスのＣＣＷチェーンの中には、複数のＬＯＣドメインが存在する。シーケンシャルアクセスと異なり、ランダムアクセスでは、処理対象のレコードが連続していないために次にアクセスするレコードを予測出来ず、シーケンシャルアクセス時の様にアクセス対象のデータを先にステージングすることが出来ない。従って、ランダムアクセスの方がシーケンシャルアクセスより、キャッシュミスによる中央処理装置との論理的な切り離し契機が多くなる可能性があると言える。
【００１８】
以上、キャッシュミスによるレスポンスタイムの増加を軽減する技術について述べてきたが、次にスループット向上に関する技術について述べる。
【００１９】
近年の大容量転送、遠隔データ転送などを実現するプロトコルとして注目を浴びているのが、ファイバーチャネルプロトコルである。ファイバーチャネルプロトコルは、主に、これまでオープン系システムで使われてきた技術だが、最近、メインフレーム用ファイバーチャネルプロトコルとして、ファイバーチャネルプロトコルの物理層（ＦＣ−ＰＨ）に準拠したプロトコルであるＦＣ−ＳＢ２（ＦＩＢＲＥ  ＣＨＡＮＮＥＬ  Ｓｉｎｇｌｅ−Ｂｙｔｅ  Ｃｏｍｍａｎｄ  Ｃｏｄｅ  Ｓｅｔｓ−２  Ｍａｐｐｉｎｇ  Ｐｒｏｔｏｃｏｌ）が提案されている。これは、ＦＣ−ＰＨに従来のメインフレームと記憶サブシステム間の通信プロトコルをマッピングしたものであり、現在、ＡＮＳＩ（Ａｍｅｒｉｃａｎ  Ｎａｔｉｏｎａｌ  Ｓｔａｎｄａｒｄ  ｆｏｒ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ）により規格化が進められている。このＦＣ−ＳＢ２には、大きく分けて次の２つの特徴がある。
【００２０】
１つ目として、従来のメインフレームのプロトコルとは異なり、１Ｉ／Ｏの要求処理（１ＣＣＷチェーン）実行中に、中央処理装置と記憶制御装置間の論理的な接続パス（以下、論理パス）を占有することをせず、同一論理パス上で同時に複数の論理ＶＯＬに対するＩ／Ｏ要求を実行出来るという点である。２つめの特徴としては、中央処理装置は、記憶制御装置とのインターロックを取らずに、コマンド及びデータをパイプライン的に発行出来るという点である。ＦＣ−ＳＢ２では、例えばＷＲコマンド発行時では、記憶制御装置からＷＲコマンドに対するコマンド応答が送信されてこなくても、中央処理装置は、ＷＲコマンドのデータを記憶制御装置に対して送信する事が可能である。更に、当該コマンドに対するステータスフレームを受信しなくても、中央処理装置は、次コマンド及びデータの発行が可能である。この様に、ＦＣ−ＳＢ２では、中央処理装置と記憶制御装置とが非同期にそれぞれコマンドの処理を実行していくプロトコルとなっている。
【００２１】
以上、説明した様な特徴をもつＦＣ−ＳＢ２プロトコルは、特に、長距離・高負荷接続時にシステムのスループットを低下させないという点で非常に効果的なプロトコルである。
【００２２】
【発明が解決しようとする課題】
ＦＣ−ＳＢ２プロトコルの様な、中央処理装置と記憶制御装置間のインターロック軽減を実現するプロトコルにより接続された中央処理装置及び記憶サブシステムでは、長距離・高負荷接続時におけるスループットの低下を抑えることが出来る。しかし、記憶制御装置は受領したコマンドを受領順に逐次処理していくことに変わりは無い。従って、途中のコマンド処理において、処理対象のデータのキャッシュミスが発生した場合、前述の様にキャッシュメモリ上に必要なデータをステージングする間、中央処理装置と記憶制御装置間のデータ転送処理は実行出来ない。この結果、レスポンスタイムの増加を招く。特に、データベースアクセスに代表される様な、ランダムアクセス処理においては、シーケンシャルアクセス時の先読みステージング動作を行なえないため、キャッシュミス契機が多くなる可能性が高くなる。また、あるコマンドでキャッシュミスが発生した場合、そのコマンドからリトライする動作となるため、中央処理装置から受領したコマンド及びデータのうち、キャッシュミスが発生したコマンド以降のコマンド及びデータは一度破棄し、再度中央処理装置から受領し直す必要がある。このコマンド及びデータの再受領は長距離接続時においては、かなりのオーバヘッドとなる。
【００２３】
本発明の目的は、ランダムアクセス時のキャッシュミス発生時において、レスポンスタイムの増加を防ぎ、ＦＣ−ＳＢ２プロトコルの様にパイプライン的に発行されたコマンド及びデータを効率よく処理することが可能な技術を提供することにある。
【００２４】
本発明の他の目的は、上位装置と記憶サブシステムとが、記憶サブシステム側からの応答とは非同期に、上位装置が複数のコマンド及びデータのチェーンで構成されるＩ／Ｏ要求を記憶サブシステムに対して発行するＩ／Ｏインタフェースにて接続された構成において、ランダムアクセス時のキャッシュミス発生時のレスポンスタイム削減によるスループット向上を実現することにある。
【００２５】
本発明の他の目的は、上位装置と記憶サブシステムとが、ＦＣ−ＳＢ２プロトコルにて接続された構成において、ランダムアクセス時のキャッシュミス発生時のレスポンスタイム削減によるスループット向上を実現することにある。
【００２６】
【課題を解決するための手段】
配下に複数の記憶装置を有し、内部にキャッシュメモリを有する記憶制御装置を備えた記憶サブシステムと、この記憶サブシステムにアクセスする中央処理装置とを含み、記憶制御装置からの応答とは非同期に、中央処理装置が複数のコマンド及びデータのチェーンで構成されるＩ／Ｏ要求を記憶制御装置に対して発行するＩ／Ｏインタフェースプロトコルにより、中央処理装置と記憶制御装置とが接続されている情報処理システムにおいて、本発明の記憶サブシステムは、中央処理装置から受領した複数コマンド及びデータの受領順には依存せず、受領コマンドの処理順序を決定して実行する手段を有するものである。
【００２７】
また、上記構成の情報処理システムにおいて、本発明の記憶サブシステムは、中央処理装置から受領した複数コマンドのうち、処理対象のデータがキャッシュメモリ上に存在するコマンドについては、中央処理装置とのデータ転送を実行し、処理対象のデータがキャッシュメモリ上に存在しないコマンドの処理対象データを、記憶装置からキャッシュメモリへ読み出す処理と、中央処理装置とのデータ転送処理とを並行して実行する手段を有するものである。
【００２８】
また、上記構成の情報処理システムにおいて、本発明の記憶サブシステムは、１つの論理ボリュームのデータを複数の記憶装置に分割・配置して格納するＲＡＩＤ構成をとっている場合において、中央処理装置から受領した複数コマンドをまとめてコマンド群とし、コマンド群のうちの複数コマンドの処理対象データが、キャッシュメモリ上に存在しない場合、各コマンドの処理対象データが格納されている各記憶装置に対して、コマンド群の各コマンドの処理対象データのキャッシュメモリへの読み出し処理を複数並行して起動し、この読み出し処理が完了した順にコマンド群の各コマンドに関する中央処理装置とのデータ転送と読み出し処理を並行して実行する手段を有するものである。
【００２９】
また、上記構成の情報処理システムにおいて、本発明の記憶サブシステムは、中央処理装置から受領した複数コマンドを纏めてコマンド群とし、コマンド群のうちの複数コマンドの処理対象データがキャッシュメモリ上に存在しない場合、各コマンドの処理対象データが格納されている各記憶装置の稼動率に応じて、記憶装置からキャッシュメモリへの処理対象データの読み出し処理を複数並行して起動し、読み出し処理が完了したものから、中央処理装置とのデータ転送を他の読み出し処理と並行して実行する手段を有するものである。
【００３０】
また、上記構成の情報処理システムにおいて、本発明の記憶サブシステムは、中央処理装置から受領した複数コマンドを纏めて第１のコマンド群とし、第１のコマンド群のうちの複数コマンドの処理対象データが、キャッシュメモリ上に存在しない場合、第１のコマンド群のうち、対象データが同一の記憶装置に存在しているコマンドを記憶装置へアクセスするアドレスの昇順に纏めて第２のコマンド群とし、第２のコマンド群単位で記憶装置からキャッシュメモリへの記憶装置内データの読み出し範囲を決定して読み出し処理を起動し、読み出し処理が完了したものから中央処理装置へのデータ転送を他の読み出し処理と並行して実行する手段を有するものである。
【００３１】
また、記憶サブシステムと中央処理装置との間を接続しているＩ／Ｏインタフェースプロトコル制御方式において、本発明のＩ／Ｏインタフェースプロトコル制御技術では、中央処理装置は、当該中央処理装置が発行したコマンド及びデータの発行順には依存しない順で、記憶制御装置からデータ及びコマンド終了報告を受領し、受領したデータ及びコマンド終了報告に対応するコマンドを特定し、データ及びコマンド終了報告を特定したコマンドに対する応答フレームとして処理する手段を有するものである。
【００３２】
さらに、このＩ／Ｏインタフェース制御方式において、本発明のＩ／Ｏインタフェースプロトコル制御技術では、記憶制御装置は、中央処理装置から受領したコマンド及びデータのチェーンの途中でエラー及びリトライ要因が発生した場合、Ｉ／Ｏ要求を中断せずに継続して、受領した他の実行可能なコマンド及びデータに関して中央処理装置とのデータ転送を実施し、Ｉ／Ｏ要求を構成する全コマンド処理分の終了状態をまとめて、１つのＩ／Ｏ要求処理完了報告として中央処理装置へ報告する手段を備え、中央処理装置は、Ｉ／Ｏ要求処理完了報告を受領後、各コマンドの終了状態を認識し、エラーあるいはリトライ要求のあった各コマンドに対してのみリカバリ処理を実行する手段を備えたものである。
【００３３】
また、このＩ／Ｏインタフェース制御方式において、本発明のＩ／Ｏインタフェースプロトコル制御技術では、中央処理装置は、当該中央処理装置が発行したコマンド及びデータの発行順には依存しない順で、記憶制御装置からデータ及びコマンド終了報告を受領する手段と、記憶制御装置からＩ／Ｏ要求を構成する全コマンド分に対するコマンド終了報告を受領する迄、Ｉ／Ｏ要求処理を中断せず継続して実行する手段と、Ｉ／Ｏ要求を構成する全コマンド分のコマンド処理終了報告を受領後、受領したコマンド処理終了報告の中でエラーあるいはリトライ要求があったコマンドに対してのみ、リカバリ処理を実行する手段とを有するものである。
【００３４】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照しながら詳細に説明する。
【００３５】
まず、本発明を説明するにあたり、本発明を用いた中央処理装置及び記憶サブシステムの構成について、図２を用いて説明する。
【００３６】
本実施の形態における情報処理システムは、中央処理装置１、ディスク制御装置２、及びディスク装置３から構成されている。ディスク制御装置２は、中央処理装置１とは、たとえばＦＣ−ＳＢ２プロトコル（ＦＩＢＲＥ  ＣＨＡＮＮＥＬＳｉｎｇｌｅ−Ｂｙｔｅ  Ｃｏｍｍａｎｄ  Ｃｏｄｅ  Ｓｅｔｓ−２  Ｍａｐｐｉｎｇ  Ｐｒｏｔｏｃｏｌ）が実装されたＩ／Ｏインタフェース１００により接続されている。ディスク装置３には複数の物理ドライブ３２が配置されており、データが格納されている。ディスク装置３は、ディスク制御装置２に対してドライブインタフェース２００にて接続されている。
【００３７】
まず、本実施の形態の中央処理装置１の構成例について説明する。中央処理装置１には、ユーザプログラムの要求を実行するアプリケーション部１１、アプリケーション部１１が発行した入出力要求を受け、実際のデータの入出力命令のためのＣＣＷを作成したり、ＣＣＷデータの管理を行なうデータ管理部１２、ＣＣＷやデータ、制御情報などが格納されている主記憶１４、及びディスク制御装置２との間の入出力制御を行うチャネル制御部１３から構成されている。
【００３８】
主記憶１４には、ＣＣＷ情報が格納されているＣＣＷ情報格納域１４２、ＣＣＷ情報格納域１４２の先頭アドレスが格納されているＣＣＷ先頭アドレス格納域１４１、ＣＣＷのデータが格納されているＤａｔａ格納域１４３、そしてＩ／Ｏ要求を管理するためのＩ／Ｏ管理領域１４４がある。これらの詳細については、後述する。
【００３９】
次に、本実施の形態のディスク制御装置２の構成例について説明する。送受信バッファメモリ２１は、中央処理装置１との間で送受信されるコマンド及びデータを一時的に格納するメモリである。対チャネルプロトコル制御部２２は、前述のＦＣ−ＳＢ２プロトコルを制御する。コマンド処理部２３は、中央処理装置１から受領したコマンドをデコードし、コマンド処理を行う。キャッシュメモリ２４は、送受信バッファメモリ２１と、ディスク装置３内の各物理ドライブ３２との間のデータ転送において、データを一時的に格納するためのメモリである。制御メモリ２５には、コマンド処理用の制御情報、物理ドライブ３２とキャッシュメモリ２４との転送を制御するための情報及び、後述の本実施の形態における各種制御を実施する上で必要な各種情報が格納されている。各テーブルの内容、用途については後述する。ディスクドライブ制御部２６は、ディスク制御装置２に接続されているディスク装置３とのインタフェース制御を行う。
【００４０】
ディスク装置３には、ディスク制御装置２とのインタフェース制御を行う、ディスク装置インタフェース制御部３１及び、データを格納する物理ドライブ３２が複数配置されている。本実施の形態では、ＲＡＩＤ５構成を用いてデータを格納しているが、これについて、図３を用いて説明する。
【００４１】
中央処理装置１で扱うデータボリュームを論理ボリュームと言うが、図３にそのうちの１論理ボリューム４を示す。シリンダ（以下、ＣＹＬ）及びヘッド（以下、ＨＤ）の組み合わせで決まるエリアをトラックという。論理ボリューム４は、複数のトラックから構成されている。本実施の形態では、論理ボリュームの各トラックを複数の物理ドライブ３２に分割して配置する。図３の場合、論理ボリューム４内のトラック４１はドライブ＃０の物理ドライブ３２に、トラック４２はドライブ＃１の物理ドライブ３３に、そしてトラック４３は、ドライブ＃２の物理ドライブ３４に格納する。そして、トラック４１〜４３からパリティデータを生成し、パリティデータを示すトラック４４をドライブ＃３の物理ドライブ３５に格納する。この時、パリティデータの生成単位であるトラック４１〜４４の横一列のトラックの並びをストライプ列という。本実施の形態は、ＲＡＩＤ５構成であるので、途中でパリティデータを格納する物理ドライブの位置がサイクリック的に移動していく。本実施の形態では、８ストライプ列毎にパリティデータの格納物理ドライブを代えていく。また、物理ドライブ３２は、固定長ブロック（以下、ＬＢＡ）に分割されており、ＣＣＷのデータはこの固定長に分割して格納される。
【００４２】
次にＩ／Ｏ要求処理の基本的な流れについて、図２を用いて説明する。
【００４３】
まず、中央処理装置１にあるアプリケーション部１１において、ディスク装置３に格納されている論理ボリューム（以下、論理ＶＯＬ）データに対する入出力要求が作成され、この要求がデータ管理部１２に発行される。データ管理部１２は、発行された入出力要求を実行するために、ＣＣＷチェーンを作成する。作成されたＣＣＷは、主記憶１４内のＣＣＷ情報格納域１４２に格納され、ＣＣＷのデータは、Ｄａｔａ格納域１４３に格納される。また、ＣＣＷ先頭アドレス格納域１４１に、ＣＣＷ情報格納域１４２の先頭アドレスを格納しておく。データ管理部１２はＣＣＷを作成したら、チャネル制御部１３に対し、ＣＣＷの実行を要求する。ＣＣＷ実行要求を受けたチャネル制御部１３は、ＣＣＷ先頭アドレス格納域１４１を参照し、ＣＣＷ情報格納域１４２の先頭アドレスを取得して、ＣＣＷを得る。そして、ＣＣＷ情報格納域１４２に格納されているＣＣＷのコマンドをディスク制御装置２に逐次発行していく。また、ＷＲ系コマンドの場合には、発行したコマンドに関連するデータは、Ｄａｔａ格納域１４３に格納されているので、ディスク制御装置２に送信する。また、この時、データ管理部１２はＩ／Ｏ管理領域１４４に図４に示すＩ／Ｏ要求共通情報１４４０以下の内容を登録する。その後、逐次ＣＣＷをディスク制御装置２に発行する度に必要なＣＣＷ情報をＩ／Ｏ管理領域１４４のＣＣＷ管理情報１４４１に登録する。
【００４４】
一方、チャネル制御部１３から受領したＣＣＷのコマンド及びデータは、ディスク制御装置２の送受信バッファメモリ２１に格納される。対チャネルプロトコル制御部２２は、Ｉ／Ｏ管理テーブル２５６に図８に示すＩ／Ｏ要求共通情報２５６０以下の内容を登録し、管理する。また、パイプライン的に受領した後続のＣＣＷについては、それぞれのＣＣＷに対応したＣＣＷ管理情報２５６１に登録し、管理する。対チャネルプロトコル制御部２２は、各ＣＣＷコマンド受領毎に、コマンドの受領をコマンド処理部２３に通知する。コマンド処理部２３は、受領したコマンドをデコードし、キャッシュデータ管理テーブル２５２を参照して、処理対象データがキャッシュメモリ２４上に存在するか否かをチェックする。キャッシュデータ管理テーブル２５２には、対象の論理ＶＯＬ＃／ＣＹＬ＃／ＨＤ＃／レコード＃のデータがキャッシュメモリ２４上に存在しているか否かの情報や、存在している場合のキャッシュメモリ２４上のアドレス、データの属性などの情報が格納されている。キャッシュメモリ２４上にデータが存在（以下、キャッシュヒット）した場合、コマンド処理部２３は、キャッシュメモリ２４と送受信バッファメモリ２１間のデータ転送を実施する。一方、対チャネルプロトコル制御部２２は、送受信バッファメモリ２１と、チャネル制御部１３との間のデータ転送を実施する。
【００４５】
一方、キャッシュメモリ２４上に処理対象データが存在しなかった（以下、キャッシュミス）場合、対象データをそのデータが格納されている物理ドライブ３２からキャッシュメモリ２４上に読み出す（以下、ステージング）処理が必要となる。このステージング処理は、物理ドライブ毎に独立して動作可能である。処理対象データが格納されているディスク装置３内の物理ドライブ番号は、論理−物理アドレス変換テーブル２５１を参照する事で取得する。このテーブルには、論理ＶＯＬ＃／ＣＹＬ＃／ＨＤ＃／レコード＃から決定される処理対象のレコードが、どの物理ドライブのどのＬＢＡに格納されているか、が示されている。論理−物理アドレス変換テーブル２５１よりステージング対象の物理ドライブ＃を取得したら、図５に例示されるドライブ別ステージング要求キューテーブル２５３にステージング要求内容を登録する。ドライブ別ステージング要求キューテーブル２５３はＦＩＦＯ構造になっており、ステージングの要求順に登録される。登録する内容については、図５に例示されている通りである。ここで、ステージング要求を登録する際、各ドライブ毎にユニークな要求ＩＤを付与する。ドライブ別ステージング要求キューテーブル２５３にステージング要求を登録後、ステージング起動キューテーブル２５４に図６に例示する内容を登録する。また、更に図８のＩ／Ｏ管理テーブル２５６の当該ＣＣＷ＃に対応するＣＣＷ管理情報のＣＣＷ管理情報２５６１に“ステージング完了待ち" を設定する。
【００４６】
一方、ディスクドライブ制御部２６は、図６のステージング起動キューテーブル２５４を定期的に参照し、ステージング要求が登録されたら、ステージング対象の物理ドライブ＃からそのドライブ別ステージング要求キューテーブル２５３を参照して、ステージング内容を取得し、ステージング要求をディスク装置インタフェース制御部３１に対して発行する。要求を受けたディスク装置インタフェース制御部３１は、目的の物理ドライブから指示されたステージング開始ＬＢＡ＃（以下、ＳＬＢＡ＃）から必要分のデータをキャッシュメモリ２４に転送する。ステージング処理が終了すると、ディスク装置インタフェース制御部３１からディスクドライブ制御部２６に対し、ステージング終了の報告を行なう。報告を受けたディスクドライブ制御部２６は、ステージング完了報告キューイングテーブル２５５にステージング処理が終了したドライブ＃／要求ＩＤをキューイングする。
【００４７】
コマンド処理部２３はステージング完了報告キューイングテーブル２５５を参照し、ステージング終了を検出すると、ステージング完了報告キューイングテーブル２５５のドライブ＃及び要求ＩＤを基に、ドライブ別ステージング要求キューテーブル２５３を参照して、ステージングが完了したＩ／Ｏ要求＃／ＣＣＷ＃を取得する。コマンド処理部２３は、取得したＩ／Ｏ要求＃／ＣＣＷ＃を基にＩ／Ｏ管理テーブル２５６を参照し、当該ＣＣＷ＃に対応するＣＣＷ管理情報のＣＣＷ管理情報２５６１の“ステージング完了待ち" を“ＣＣＷ処理中" に変化させ、コマンド処理を再開する。後はキャッシュヒット時の動作と同じになる。
【００４８】
以下、本発明の実施の形態についてさらに詳細に説明する。
【００４９】
本発明を実施したＩ／Ｏシーケンスの例を図１に示す。図１では、中央処理装置１からディスク制御装置２に対し、ＣＭＤ１０１〜ＣＭＤ１０３が発行され、コマンド処理部２３において、ＣＭＤ１０１のＣＣＷ１及びＣＭＤ１０２のＣＣＷ２がキャッシュミスだったと認識した（キャッシュミス、ヒットの判定については前述の通り）。この時、前述の方式により、ＣＭＤ１０１のＣＣＷ１の処理対象データのステージング処理を起動し、続いてＣＭＤ１０２のＣＣＷ２の処理データのステージング処理も並行して起動する（２０１０、２０１１）。続いて、コマンド処理部２３は、後続のＣＭＤ１０３（ＣＣＷ３）がキャッシュヒットだったため、コマンド処理部２３は、ＣＣＷ３の処理を行い、ＣＣＷ３のデータであるＤＡＴＡ１０４を中央処理装置１に送信する。ＣＣＷ３のデータを送信した後、図１では、ＣＣＷ１のステージング要求に対するステージング完了通知２０１２が報告されているため、コマンド処理部２３はＣＣＷ１の処理を実行し、中央処理装置１に対してＣＣＷ１のＤＡＴＡ１０５を送信する。その後、ＣＣＷ２のステージング要求に対するステージング完了通知２０１３が報告されてきたため、コマンド処理部２３はＣＣＷ２の処理を実行し、中央処理装置１に対してＣＣＷ２のＤＡＴＡ１０６を送信する。最後にＳＴＡＴＵＳ１０７を送信する。
【００５０】
ここで、ＣＣＷ３の処理が終了した時点で、まだＣＣＷ１に対するステージング完了通知２０１２が報告されていなかった場合は、ディスク制御装置２は中央処理装置１との論理的な接続を切断し、ステージング完了通知２０１２があってから、再度中央処理装置１との論理的な接続を回復し、ＣＣＷ１の処理を実行してもよい。また、中央処理装置１との論理的な接続は切り離さず、ステージング完了通知２０１２の報告を待ってからＣＣＷ１の処理を実行してもよい。図１では、ＣＣＷ１に対するステージング完了通知（２０１２）の方が先に発生したが、ＣＣＷ２に対するステージング完了通知（２０１３）の方が先に発生した場合は、先にＣＣＷ２の処理を実行してもよい。
【００５１】
もし、中央処理装置１から受領した複数ＣＣＷコマンドがキャッシュミスだった場合は、各ＣＣＷ毎にドライブ別ステージング要求キューテーブル２５３及び、ステージング起動キューテーブル２５４にステージング要求がキューイングされる。ステージング処理は物理ドライブ毎のため、ステージングの起動順にステージングが完了するとは限らない。この場合、ステージングが完了した順にステージング完了報告キューイングテーブル２５５にキューイングされ、このキューイング順でステージング完了報告が行われる。コマンド処理部２３はステージング完了報告キューイングテーブル２５５を参照してコマンド処理を実行するため、結果として、ステージングが完了した順にコマンド処理を実行することになる。
【００５２】
上記の処理は、次の様にしてもよい。しきい値テーブル２５９（図１１）に受領ＣＣＷ数しきい値２５９２を持ち、中央処理装置１から受領したＣＣＷ数が、この受領ＣＣＷ数しきい値２５９２に達した場合、そこまでのＣＣＷ迄をＣＣＷ群として１つの処理対象範囲とし、図１２に示すフローにて制御してもよい。
【００５３】
すなわち、図１２のフローチャートにおいては、まず、受領ＣＣＷ数を０に初期化した後（ステップ１２０００１）、中央処理装置１からのＣＣＷ到来を待ち（ステップ１２０００２、ステップ１２０００３）、ＣＣＷを受領したら、受領ＣＣＷ数を加算し（ステップ１２０００４）、当該ＣＣＷの対象データのヒット／ミス判定を実行し（ステップ１２０００５）、ヒットの場合は当該ＣＣＷの処理を実行し（ステップ１２０００６）、ミスの場合は、当該対象データのドライブからキャッシュメモリ２４へのステージング処理を実行する（ステップ１２０００７）。
【００５４】
さらに、後続のＣＣＷの有無を判別し（ステップ１２０００８）、後続有りの場合には、受領済みのＣＣＷ数は、受領ＣＣＷしきい値以下か否かを判定し（ステップ１２０００９）、しきい値以下の場合は、ステップ１２０００２以降のＣＣＷの受け付け処理を反復する。
【００５５】
ステップ１２０００８で後続なしの場合、あるいはステップ１２０００９でしきい値以上の場合には、受領した全ＣＣＷがキャッシュミスか否かを判定し（ステップ１２００１０）、キャッシュミスの場合には、ステージング処理待ち状態に移行する（ステップ１２００１１）。
【００５６】
ステップ１２００１０で受領した全ＣＣＷがキャッシュミスではない場合には、ＳＴＡＴＵＳ  Ｆｒａｍｅ送信処理を実行する。
【００５７】
上述のステージング処理待ち状態（ステップ１２００１１）では、キャッシュミスのＣＣＷの対象データのステージング処理の終了を監視し（ステップ１２００１２、ステップ１２００１３）、ステージング処理の終了したＣＣＷがある場合には、当該ステージング処理の終了したＣＣＷの処理を実行し（ステップ１２００１４）、キャッシュミスの全ＣＣＷの対象データの処理が完了したか否かを判別し（ステップ１２００１５）、未完の場合には、ステップ１２００１２以降を反復し、完了の場合には、ＳＴＡＴＵＳ  Ｆｒａｍｅ送信処理を実行する。
【００５８】
中央処理装置１から受領した複数ＣＣＷにおいて、キャッシュミスが発生し、ステージング処理の起動が必要な場合、図１３に示すフローの様に制御してもよい。すなわち、まず、受領ＣＣＷ数を０に初期化した後（ステップ１３０００１）、中央処理装置１からのＣＣＷ到来を待ち（ステップ１３０００２、ステップ１３０００３）、ＣＣＷを受領したら、受領ＣＣＷ数を加算し（ステップ１３０００４）、当該ＣＣＷの対象データのヒット／ミス判定を実行し（ステップ１３０００５）、ヒットの場合は当該ＣＣＷの処理を実行し（ステップ１３０００６）、ミスの場合は、当該対象データのドライブからキャッシュメモリ２４へのステージング処理を実行する（ステップ１３０００７）。
【００５９】
さらに、後続のＣＣＷの有無を判別し（ステップ１３０００８）、後続有りの場合には、受領済みのＣＣＷ数は、受領ＣＣＷしきい値以下か否かを判定し（ステップ１３０００９）、しきい値以下の場合は、ステップ１３０００２以降のＣＣＷの受け付け処理を反復する。
【００６０】
ステップ１３０００８で後続なしの場合、あるいはステップ１３０００９でしきい値以上の場合には、キャッシュミスのＣＣＷ無しか判定し（ステップ１３００１０）、無しの場合には、ＳＴＡＴＵＳ  Ｆｒａｍｅ送信処理を実行する。
【００６１】
有りの場合には、キャッシュミスのＣＣＷの各データのキャッシュメモリへのステージング処理を起動すべき対象ドライブ番号を取得し（ステップ１３００１１）、ステージング対象のＣＣＷは残り一つか判定し（ステップ１３００１２）、残り一つの場合には当該ＣＣＷに関してステージング処理を起動する（ステップ１３００１３）。
【００６２】
残り一つではない場合には、ドライブ別稼働管理テーブル２５７を参照して（ステップ１３００１１）決定した対象ドライブのうち、一番稼働率の高いドライブ番号を選択し（ステップ１３００１４）、選択した以外のドライブに関してステージング処理を起動し（ステップ１３００１５）、ステージング起動未完か否かを調べ（ステップ１３００１６）、未完の場合には、ステップ１３００１２以降を反復し、完了の場合には、ステージング完了待ち処理へ移行する。
【００６３】
なお、図１３において、ステップ１３００１４で、ステージング対象ドライブのうち、一番稼働率が高いドライブ番号を取得したが、これは図９のドライブ別稼動管理テーブル２５７のカレントエリア＃２５７０（エリア＃０、エリア＃１のいずれか）を参照し、カレントなエリア（統計的なデータを採取中のエリア）の各ステージングが必要なドライブ＃のアクセス回数をそれぞれ比較することで得られる。ディスク装置３のディスク装置インタフェース制御部３１は、各物理ドライブにアクセスする度に、カレントエリア＃２５７０が示しているエリアのアクセス回数を１インクリメントする。なお、ドライブ別稼動管理テーブル２５７のカレントエリア＃２５７０は、一定時間超過すると、エリア＃０とエリア＃１の間で交互に逆エリアを指し示す様になっている。
【００６４】
また、図１５及び図１６に示すフローチャートによって、複数のＣＣＷに対するステージングを１つのステージング要求として纏めて起動してもよい。
【００６５】
すなわち、図１５の処理では、まず上述の図１３のステップ１３０００１〜ステップ１３０００９までと同様の処理の後、受領ＣＣＷしきい値分のＣＣＷのヒットミス判定およびキャッシュヒットしたＣＣＷの処理を実行し（ステップ１５０００１）、全ＣＣＷキャッシュミスでないか判定し（ステップ１５０００２）、全ＣＣＷキャッシュミスでない場合は、ＳＴＡＴＵＳ  Ｆｒａｍｅ送信処理を実行する。
【００６６】
一つでもキャッシュミスのＣＣＷがある場合、ドライブ別ステージング要求ソートテーブル２５８に、アクセス対象アドレスが昇順になるようにステージング要求のＣＣＷをキューイングし（ステップ１５０００３）、ドライブ別ステージング要求のまとめステージング処理を実行し（ステップ１５０００４）、ステージング完了待ち処理を移行する（ステップ１５０００５）。
【００６７】
上述のステップ１５０００４のまとめステージング処理では、ループ変数Ｉを１に初期化した後（ステップ１６０００１）、変数Ｎにドライブ別ステージング要求ソートテーブル２５８にエントリされているＣＷＷ数をセットし、Ｉ番目のステージング開始論理ブロックアドレスＳＬＢＡ（Ｉ）を変数ＳＬＢＡにセットし、Ｉ番目のステージング終端論理ブロックアドレスＥＬＢＡ（Ｉ）を変数ＥＬＢＡにセットし（ステップ１６０００２）、Ｉ＋１がエントリされているＣＷＷ数をこえない間（ステップ１６０００３）、ＥＬＢＡ（Ｉ）と次のＳＬＢＡ（Ｉ）の間隔（差分）が、まとめステージングＬＢＡ数しきい値以下か判別し（ステップ１６０００４）、当該しきい値以下の場合には、ＥＬＢＡ（Ｉ）を変数ＥＬＢＡにセットし（ステップ１６０００５）、ループ変数Ｉをインクリメントし（ステップ１６０００６）、ステップ１６０００３以降を反復することで、とびとびのステージング範囲を一つの領域にまとめる処理を行う。
【００６８】
ステップ１６０００３でＩがＩ＋１がエントリされているＣＷＷ数を超えた場合、またはステップ１６０００４で隣り合うステージング範囲の間隔がまとめステージングＬＢＡ数しきい値以上離れている場合には、ＣＣＷ＃１〜ＣＣＷ＃ＩまでのＣＣＷ群（一つのＣＣＷの場合もある）に関してステージング要求ＩＤを付与する（ステップ１６０００７）。
【００６９】
ここで、図１５におけるステップ１５０００３では、ステージング対象のドライブ単位にドライブへアクセスするアドレスの昇順にＣＣＷ毎のステージング要求を並べているが、ドライブ別ステージング要求ソートテーブル２５８にステージング要求をキューイングする際に必ず昇順になるように新規ステージング要求をキューイングする。図１６のフローチャートでは、複数のステージング要求をしきい値テーブル２５９の、纏めステージングＬＢＡ数しきい値２５９１を用いて、１つのステージング要求に置き換える処理を行なっている。これについて、図１４を使って詳細に説明する。個々のＣＣＷのステージング範囲が図１４に示す状態だったとする。ここで、ＣＣＷ＃ｎのステージング範囲１４０００５とＣＣＷ＃（ｎ＋１）のステージング範囲１４０００６の隙間（ＳＬＢＡ＃（ｎ＋１）１４０００３−ＥＬＢＡ＃（ｎ）１４０００２）と、纏めステージングＬＢＡ数しきい値２５９１とを比較し、ステージング範囲の隙間の方が小さければ、ＣＣＷ＃ｎとＣＣＷ＃（ｎ＋１）の両方のステージング範囲を一緒にして、１つのステージング要求として起動する。マージされたステージング範囲のステージング開始位置はＳＬＢＡ＃（ｎ）１４０００１となり、終端はＥＬＢＡ＃（ｎ＋１）  １４０００４となる。しかし、隙間より、纏めステージングＬＢＡ数しきい値２５９１の方が小さければ、ステージング範囲はマージしない。
【００７０】
次に本実施の形態のＩ／Ｏインタフェースの制御方法について説明する。
【００７１】
本実施の形態では、中央処理装置１から受領したＣＣＷの順にディスク制御装置２はＣＣＷを処理しない。従って、送信するデータの順も中央処理装置１が発行したＣＣＷの順とは異なる場合がある。本実施の形態の中央処理装置１では、データを受信したチャネル制御部１３は、データフレームに記載のＩ／Ｏ要求＃及びＣＣＷ＃から、Ｉ／Ｏ管理領域１４４を参照し、各Ｉ／Ｏの各ＣＣＷのデータ格納アドレスを取得し、そのアドレスに受領したＣＣＷのデータを格納する。こうする事で、チャネル制御部１３が発生したＣＣＷ順でないデータフレームやステータスフレームを受領しても対応可能である。
【００７２】
また、ディスク制御装置２において、ＣＣＷチェーン途中のＣＣＷでエラーが発生した場合、次の様にしてもよい。本実施の形態のＩ／Ｏインタフェースの制御方法では、図１７に示す様にステータスフレームの内容を変更し、１つのステータスフレームの中に複数ＣＣＷ分のステータス情報を含んだものとする。具体的に説明すると、図１７のステータスフレームに制御情報１７０００１を新規に設け、この中に、複数ＣＣＷの情報を含んでいる多重ステータス報告機能を有しているかを判定するためのビットを持つ。多重ステータス報告時、１つのステータスフレームには複数のＣＣＷに関するステータス情報が含まれており、それぞれにこの制御情報１７０００１が付与される。この時、幾つのＣＣＷのステータス情報が含まれているかを示すために、各ＣＣＷの制御情報内に“後続ＳＴＡＴＵＳ報告チェーンビット" を設け、このチェーンビットがＯＮの時、後続ステータス報告がありと判断する。チェーンビットがＯＦＦのステータス報告で最後と判断する。
【００７３】
このステータスフレームを用いた本実施の形態のＩ／Ｏプロトコルシーケンスを図１８に示す。図１８において、ＣＣＷ２でエラー要因が発生したが、ＣＣＷ２迄でＣＣＷチェーンを切らず、ディスク制御装置２ではＣＣＷ３の実行も行なう。そして、全ＣＣＷの実行後、図１７に記載のステータスフレームを使って、ＣＣＷ１〜３のステータス情報を一緒に載せて報告する。
【００７４】
また、このステータスフレームを受領したチャネル制御部１３は、当該Ｉ／Ｏの各ＣＣＷの終了状態をＩ／Ｏ管理領域１４４に記憶する。その後、チャネル制御部１３は当該Ｉ／Ｏの全ＣＣＷの終了状態をデータ管理部１２に報告する。データ管理部１２はＩ／Ｏ管理領域１４４を参照し、エラー及びリトライ要因が発生したＣＣＷを特定して、必要に応じてリカバリ処理を実行する。
【００７５】
また、次のようにしてもよい。ディスク制御装置２は、図１９に示す様にディスク制御装置２が決定した順でＣＣＷのデータの送信を実施し、各ＣＣＷの処理終了毎にステータスフレームを報告する。この時にステータスフレームは図１７に示したものでなくてもよい。この場合、各ＣＣＷ毎に送信されるステータスフレームを受領したチャネル制御部１３側での対応が必要である。チャネル制御部１３は、受領したステータスフレームからＩ／Ｏ要求＃／ＣＣＷ＃を取得し、Ｉ／Ｏ管理領域１４４に当該ＣＣＷの終了状態を格納する。この時、例え、エラー及びリカバリを示すステータスフレームを受領しても、チャネル制御部１３は、当該Ｉ／Ｏの全ＣＣＷ分のステータスフレームを受領していない場合は、データ管理部１２へＣＣＷチェーン終了の報告は行なわない。当該Ｉ／Ｏの全ＣＣＷに対するステータスフレームを受領した後、データ管理部１２に対して当該ＣＣＷチェーンの終了報告割り込みを行う。後は、前述の通り、データ管理部１２が必要に応じてエラー及びリトライ要因が発生したＣＣＷに対するリカバリ処理を実行する。
【００７６】
以上説明したように、本実施の形態の記憶サブシステム及びＩ／Ｏインタフェース制御技術を用いた情報処理システムによれば、ＦＣ−ＳＢ２のような接続インタフェースにて接続された中央処理装置１と記憶サブシステム（ディスク制御装置２）において、ディスク制御装置２（記憶制御装置）は、対象データがキャッシュヒットして即時実行可能なＣＣＷに関して中央処理装置１と記憶サブシステム間でデータ転送を実行すると同時に、キャッシュミスのＣＣＷに関するデータのステージング処理を並行して実行することが出来るため、たとえば、ランダムアクセス時において、発生し易くなるキャッシュミスによるレスポンスタイムの増加を抑える事が出来るという効果が得られる。
【００７７】
また、中央処理装置１では、一群のＣＣＷのディスク制御装置２に対する発行順序に関係なく、ディスク制御装置２からのデータ及びＣＣＷ終了報告を受領し、受領したデータ及びＣＣＷ終了報告に対応する発行済みＣＣＷを特定し、データ及びＣＣＷ終了報告を特定したＣＣＷに対する応答フレームとして処理するので、たとえば、複数のＣＣＷの一部がキャッシュミスによるステージング処理のために、他のキャッシュヒットのＣＣＷが実行を待たされる等の不具合が解消され、たとえば、ランダムアクセス時において、発生し易くなるキャッシュミスによるレスポンスタイムの増加を抑える事が出来るという効果が得られる。
【００７８】
この結果、中央処理装置１と、ディスク制御装置２およびディスク装置３からなる記憶サブシステムとの間におけるＩ／Ｏのスループットが向上する。
【００７９】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【００８０】
たとえば、中央処理装置と記憶制御装置とを接続するＩ／Ｏシーケンスプロトコルとしては、上述の実施の形態に例示したＦＣ−ＳＢ２等に限らず、記憶制御装置からの応答とは非同期に中央処理装置が記憶制御装置に対して複数のコマンドを発行するＩ／Ｏインタフェースに広く適用することができる。
【００８１】
【発明の効果】
本発明によれば、ランダムアクセス時のキャッシュミス発生時において、レスポンスタイムの増加を防ぎ、ＦＣ−ＳＢ２プロトコルの様にパイプライン的に発行されたコマンド及びデータを効率よく処理することができる、という効果が得られる。
【００８２】
本発明によれば、上位装置と記憶サブシステムとが、記憶サブシステム側からの応答とは非同期に、上位装置が複数のコマンド及びデータのチェーンで構成されるＩ／Ｏ要求を記憶サブシステムに対して発行するＩ／Ｏインタフェースにて接続された構成において、ランダムアクセス時のキャッシュミス発生時のレスポンスタイム削減によるスループット向上を実現することができる、という効果が得られる。
【００８３】
本発明によれば、上位装置と記憶サブシステムとが、ＦＣ−ＳＢ２プロトコルにて接続された構成において、ランダムアクセス時のキャッシュミス発生時のレスポンスタイム削減によるスループット向上を実現することができる、という効果が得られる。
【図面の簡単な説明】
【図１】本発明の一実施の形態である記憶サブシステムの作用の一例を示すシーケンスフローチャートである。
【図２】本発明の一実施の形態である記憶サブシステムを含むデータ記憶システムの構成の一例を示すブロック図である。
【図３】本発明の一実施の形態である記憶サブシステムにおけるディスク装置でのデータ格納方法の一例を示す説明図である。
【図４】本発明の一実施の形態である記憶サブシステムに接続される中央処理装置にて用いられている制御情報の一例を示す説明図である。
【図５】本発明の一実施の形態である記憶サブシステムを構成する記憶制御装置にて用いられている制御情報の一例を示す説明図である。
【図６】本発明の一実施の形態である記憶サブシステムを構成する記憶制御装置にて用いられている制御情報の一例を示す説明図である。
【図７】本発明の一実施の形態である記憶サブシステムを構成する記憶制御装置にて用いられている制御情報の一例を示す説明図である。
【図８】本発明の一実施の形態である記憶サブシステムを構成する記憶制御装置にて用いられている制御情報の一例を示す説明図である。
【図９】本発明の一実施の形態である記憶サブシステムを構成する記憶制御装置にて用いられている制御情報の一例を示す説明図である。
【図１０】本発明の一実施の形態である記憶サブシステムを構成する記憶制御装置にて用いられている制御情報の一例を示す説明図である。
【図１１】本発明の一実施の形態である記憶サブシステムを構成する記憶制御装置にて用いられている制御情報の一例を示す説明図である。
【図１２】本発明の一実施の形態である記憶サブシステムを構成する記憶制御装置の作用の一例を示すフローチャートである。
【図１３】本発明の一実施の形態である記憶サブシステムを構成する記憶制御装置の作用の一例を示すフローチャートである。
【図１４】本発明の一実施の形態である記憶サブシステムの作用の一例を示す説明図である。
【図１５】本発明の一実施の形態である記憶サブシステムを構成する記憶制御装置の作用の一例を示すフローチャートである。
【図１６】本発明の一実施の形態である記憶サブシステムを構成する記憶制御装置の作用の一例を示すフローチャートである。
【図１７】本発明の一実施の形態であるＩ／Ｏインタフェースの制御方法におけるＩ／Ｏプロトコルの一例を示す説明図である。
【図１８】本発明の一実施の形態である情報処理システムの作用の一例を示すシーケンスフローチャートである。
【図１９】本発明の一実施の形態である情報処理システムの作用の一例を示すシーケンスフローチャートである。
【符号の説明】
１…中央処理装置、１０１〜１０７…フレーム、１１…アプリケーション部、１２…データ管理部、１３…チャネル制御部、１４…主記憶、１４１…ＣＣＷ先頭アドレス格納域、１４２…ＣＣＷ情報格納域、１４３…Ｄａｔａ格納域、１４４…Ｉ／Ｏ管理領域、１４４０…Ｉ／Ｏ要求共通情報、１４４１…ＣＣＷ管理情報、２…ディスク制御装置（記憶制御装置）、２１…送受信バッファメモリ、２２…対チャネルプロトコル制御部、２３…コマンド処理部、２４…キャッシュメモリ、２５…制御メモリ、２０１０…ステージング要求、２０１１…ステージング要求、２０１２…ステージング完了通知（ＣＣＷ１）、２０１３…ステージング完了通知（ＣＣＷ２）、２５１…論理−物理アドレス変換テーブル、２５２…キャッシュデータ管理テーブル、２５３…ドライブ別ステージング要求キューテーブル、２５４…ステージング起動キューテーブル、２５５…ステージング完了報告キューイングテーブル、２５６…Ｉ／Ｏ管理テーブル、２５６０…Ｉ／Ｏ要求共通情報、２５６１…ＣＣＷ管理情報、２５７…ドライブ別稼動管理テーブル、２５７０…カレントエリア＃、２５８…ドライブ別ステージング要求ソートテーブル、２５９…しきい値テーブル、２５９０…ステージング対象コマンド数しきい値、２５９１…纏めステージングＬＢＡ数しきい値、２５９２…受領ＣＣＷ数しきい値、２６…ディスクドライブ制御部、３…ディスク装置（記憶装置）、３１…ディスク装置インタフェース制御部、３２…物理ドライブ、４…論理ボリューム、４１〜４４…トラック、１２０００１〜１２００１５…処理ステップ、１３０００１〜１３００１６…処理ステップ、１４０００１…ＣＣＷ＃（ｎ）ステージング範囲先頭、１４０００２…ＣＣＷ＃（ｎ）ステージング範囲終端、１４０００３…ＣＣＷ＃（ｎ＋１）ステージング範囲先頭、１４０００４…ＣＣＷ＃（ｎ＋１）ステージング範囲終端、１４０００５…ＣＣＷ＃ｎステージング範囲、１４０００６…ＣＣＷ＃（ｎ＋１）ステージング範囲、１５０００１〜１５００５…処理ステップ、１６０００１〜１６０００７…処理ステップ、１７０００１…ステータスフレーム内制御情報、１８０００１〜１８０００８…フレーム、１９０００１〜１９００１０…フレーム、１００…Ｉ／Ｏインタフェース、２００…ドライブインタフェース。
【図１】
0004068798.tif 000002
【図２】
0004068798.tif 000003
【図３】
0004068798.tif 000004
【図４】
0004068798.tif 000005
【図５】
0004068798.tif 000006
【図６】
0004068798.tif 000007
【図７】
0004068798.tif 000008
【図８】
0004068798.tif 000009
【図９】
0004068798.tif 000010
【図１０】
0004068798.tif 000011
【図１１】
0004068798.tif 000012
【図１２】
0004068798.tif 000013
【図１３】
0004068798.tif 000014
【図１４】
0004068798.tif 000015
【図１５】
0004068798.tif 000016
【図１６】
0004068798.tif 000017
【図１７】
0004068798.tif 000018
【図１８】
0004068798.tif 000019
【図１９】
0004068798.tif 000020