(57)【特許請求の範囲】
【請求項１】
情報処理装置と複数のパスを介して接続される記憶装置であって、
データを記憶する記憶デバイスと、
記憶デバイスのデータを一時的に保存するキャッシュメモリと、
各パスと接続されるポート毎に配置され該ポートのデータの入出力を制御する複数の入出力処理プロセッサと、
記憶デバイス上の先読み要否判定位置アドレスを記憶するメモリと
を有し、
情報処理装置からの連続したアドレスを有するデータの読み出し命令を複数のポートが分散して受領するとき、各入出力処理プロセッサは、自らが受領した読み出し命令が示すアドレスとメモリに記憶された先読み要否判定位置アドレスとが一致するならば、情報処理装置が読み出し命令を発行すると予測されるアドレスのデータを記憶デバイスからキャッシュメモリに読み出すものである、
ことを特徴とする記憶装置。
【請求項２】
情報処理装置と複数のパスを介して接続される記憶装置であって、
データを記憶する記憶デバイスと、
記憶デバイスのデータを一時的に保存するキャッシュメモリと、
各パスと接続されるポート毎に配置され該ポートのデータの入出力を制御する複数の入出力処理プロセッサと、
記憶デバイス上の先読み要否判定位置アドレスを記憶するメモリと
を有する記憶装置の制御方法において、
情報処理装置からの連続したアドレスを有するデータの読み出し命令を複数のポートが分散して受領するとき、各入出力処理プロセッサが、自らが受領した読み出し命令が示すアドレスとメモリに記憶された先読み要否判定位置アドレスとが一致するならば、情報処理装置が読み出し命令を発行すると予測されるアドレスのデータを記憶デバイスからキャッシュメモリに読み出すステップを有する
ことを特徴とする記憶装置の制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は複数の入出力I/F制御プロセッサを持つ外部記憶装置に対するアクセス制御方法、特に、情報処理装置と複数のパスを介して接続され、前記情報処理装置からの読み出し命令を前記パスに接続される複数のポートで分散して受領する記憶装置およびその制御方法に関する。
【０００２】
【従来の技術】
従来から磁気ディスクの故障や障害の発生に対処するため、複数の磁気ディスクを使用した多重化磁気ディスクが知られている。そして、このような多重化磁気ディスクではディスクキャッシュメモリを活用して、シーク時間を短縮することによりアクセス時間の短縮化を図っている。たとえば特開平7-110788号公報や特開2001-160941号公報ではホストコンピュータからの読み出しアクセスアドレスを解析し、ホストコンピュータからまだ受領していないアクセスに対しても、その要求アドレスを予想することでディスクシークのオーバーヘッドを軽減している。
【０００３】
一方、高可用性を達成するため、図４に示すように、記憶制御装置が、上位装置であるホストコンピュータとの接続を行うための複数のポート有する構成が知られている。これらのポートは、それぞれ独立した入出力の制御を行うプロセッサ（以下、入出力処理プロセッサという）を有して構成され、ホストコンピュータ側のホストアダプタと、複数のチャンネルパスを介して接続されている。このような接続形態においては、転送性能を向上させるために、転送するデータを複数のチャネルパスに振り分ける技術が存在する。
【０００４】
【発明が解決しようとする課題】
ところで、このような複数のチャネルパスに振り分けられたデータの入出力に対して、先述のような記憶制御装置側が未受領のデータ読み出しについて読み出しアドレスの予想を行う技術を用いようとした場合、複数の入出力処理プロセッサが、ホストコンピュータからのアクセス範囲やアクセスパターンを同時に解析しようとするので、同じ領域のキャッシュメモリや記憶デバイスへのデータ検索や読み出し要求が発生してしまう。
【０００５】
このため入出力処理プロセッサで無駄な処理が発生したり、プロセッサ間での競合が発生したりして、ホストへの応答が遅延するという問題がある。
本発明の目的は、このように複数のパスで上位装置と接続され、上位装置が発行する処理を分散するように構成された記憶装置におけるホストコンピュータからのデータの読み込みに対しても、プロセッサ間の無駄な処理や競合を抑止することにある。
【０００６】
【課題を解決するための手段】
上記課題を解決するために、本願の１つの発明は、情報処理装置と複数のパスを介して接続される記憶装置であって、データを記憶する記憶デバイスと、記憶デバイスのデータを一時的に保存するキャッシュメモリと、各パスと接続されるポート毎に配置され該ポートのデータの入出力を制御する複数の入出力処理プロセッサと、記憶デバイス上の先読み要否判定位置アドレスを記憶するメモリとを有し、情報処理装置からの連続したアドレスを有するデータの読み出し命令を複数のポートが分散して受領するとき、各入出力処理プロセッサは、自らが受領した読み出し命令が示すアドレスとメモリに記憶された先読み要否判定位置アドレスとが一致するならば、情報処理装置が読み出し命令を発行すると予測されるアドレスのデータを記憶デバイスからキャッシュメモリに読み出すものである。
【０００７】
上記課題を解決するために、本願の他の１つの発明は、情報処理装置と複数のパスを介して接続される記憶装置であって、データを記憶する記憶デバイスと、記憶デバイスのデータを一時的に保存するキャッシュメモリと、各パスと接続されるポート毎に配置され該ポートのデータの入出力を制御する複数の入出力処理プロセッサと、記憶デバイス上の先読み要否判定位置アドレスを記憶するメモリとを有する記憶装置の制御方法において、情報処理装置からの連続したアドレスを有するデータの読み出し命令を複数のポートが分散して受領するとき、各入出力処理プロセッサが、自らが受領した読み出し命令が示すアドレスとメモリに記憶された先読み要否判定位置アドレスとが一致するならば、情報処理装置が読み出し命令を発行すると予測されるアドレスのデータを記憶デバイスからキャッシュメモリに読み出すステップを有するものである。
【０００８】
【発明の実施の形態】
図１は本発明におけるコンピュータシステムの一実施例を示したものである。図1のコンピュータシステム内のホストコンピュータ１０１は、記憶制御装置４００の上位装置であって、情報処理を行う装置である。（以下、ホストコンピュータという。）このホストコンピュータは複数のホストアダプタ２０１、２０２、２０３を装備し、パス３０１、３０２、３０３を介して記憶制御装置４００の各ポート４０１、４０２、４０３に接続されている。このパスはチャネルパスと呼ばれることもある。記憶制御装置４００と記憶デバイス８０１，８０２を併せて記憶装置、記憶サブシステムと呼ばれることもある。
【０００９】
このホストコンピュータ１０１は、記憶デバイス８０１、８０２の連続する論理アドレスのデータに対して、それぞれのパス３０１、３０２、３０３にデータの読み出し要求を振り分けて発行することで、スループットの向上を実現する。
【００１０】
各ポートのそれぞれに接続された入出力処理プロセッサ５０１、５０２、５０３は、ホストコンピュータから受領したデータの読み出し要求のパターンを学習し、それぞれの個別メモリ６０１、６０２、６０３上に入出力パターンの学習情報を格納する。これらの情報を解析することで、上位装置からのデータ読み出しが、シーケンシャル読み出しであるかどうかを判定するのである。
【００１１】
これらの個別メモリは、図中６０１に示すように、データの先読みを行うかどうかに関する情報（先読みフラグ）や、入出力処理プロセッサが先読み処理を担当するプロセッサであるかどうかを判定するための種々のデータが記録される。第１図は、先読み要否判定位置アドレスが記録された場合を示している。
【００１２】
入出力プロセッサは、この入出力パターンを元にそれ以後にホストコンピュータから発行されるデータの読み出し要求で必要になると予測されるデータを、ホストコンピュータからのデータ読み出し要求が発行される前に記憶デバイス８０１、８０２から読み出し、それをキャッシュメモリ７０１上に配置することによって、記憶デバイス８０１、８０２で読み出し時に生じる処理時間を削減する。
【００１３】
具体的には、各入出力処理プロセッサ５０１、５０２、５０３は、まず記憶デバイス８０１、８０２に格納されているデータの中で必要になると予測されるデータがキャッシュメモリ７０１上に存在するかをチェックし、キャッシュメモリ７０１上にデータが存在しない場合は、入出力処理プロセッサ５０１、５０２、５０３が記憶デバイス８０１、８０２に対して読み出し指示を行う。必要になると予測されるデータは記憶デバイス８０１、８０２から読み出され、一旦キャッシュメモリ７０１に配置される。
【００１４】
その後、ホストコンピュータから当該データの読み出し要求があった場合、入出力プロセッサ５０１、５０２、５０３は、このホストコンピュータからの読み出し要求に対してキャッシュメモリよりデータを読み出して転送する。
【００１５】
図２は連続する論理アドレスデータへの読み出し要求に対する記憶制御装置側の事前読み出し方法を説明する概念図である。ここで、１レコード（Record）はホストコンピュータが指定する入出力要求の単位である。また、この1Recordは記憶制御装置上の論理アドレス0x10個分の大きさを持つものとする。図２の９００は、ホストコンピュータが要求するデータと論理アドレスの状態を概念的に示したものであり、レコード０番から、レコード４７番が示されている。最初のレコード０番は、論理アドレス０Ｘ００番地から、０Ｘ０Ｆ番地までのデータ群を示し、最後のレコード４７は、論理アドレス０Ｘ２Ｆ０番地から０Ｘ２ＦＦ番地のデータ群に相当する。
【００１６】
このレコード０番からレコード４７番は、ホストコンピュータが読み出し要求するレコードと、それに連続してこの先読みだし要求を行う可能性のあるデータ群を示している。ホストコンピュータは、レコードの第０番からデータの読み出しを行う場合、複数のパスに対して交互に読み出し要求を発行する。一定間隔で固定長のデータ読み出し要求を受けとった入出力処理プロセッサ５０１、５０２、５０３はホストが要求しているデータが連続する論理アドレスデータへの読み出し要求であると学習する。図２の例においては、レコード０番の読み出し要求を第１の入出力処理プロセッサ５０１が受領し、それに続くレコード１番を第２の入出力処理プロセッサ５０２が受領し、さらに、レコード２番を第３の入出力処理プロセッサ５０３が受領する。以後、順次連続データの読み出し命令を受領する。ここで、図２の入出力処理プロセッサは、この読み出し命令の受領状態を分析した結果により、ホストからの読み出し要求が連続する論理アドレスデータへの読み出し要求であることを判定する。
【００１７】
具体的には、例えば、第１の入出力処理プロセッサ５０１が、最初にレコード０番の読み出し命令を受領し、次に第３のレコードを受領した場合、この入出力処理プロセッサは、他の入出力処理プロセッサが分散して読み出し命令を受領していることを勘案して、このホストコンピュータからの読み出し命令が、連続した論理アドレスを有するデータに対する読み出しであると判定する。
【００１８】
ここで、連続したデータであると判定された場合の処理について説明する。論理アドレスが連続するデータが順次読み出されていると判定された場合、入出力処理プロセッサは、その入出力処理プロセッサが有する個別メモリに先読みを指示するデータを保持する。入出力処理プロセッサは、ホストコンピュータからの読み出し命令を受領すると先読みを指示するデータが存在するかどうかを判定し、先読みを指示するデータが保持されている場合には、現在読み出している論理アドレスから入出力要求を分散している他の入出力処理プロセッサの処理するアドレスと重複しない程度に離れた論理アドレスのデータを所定量だけ連続で、キャッシュメモリ上に読み出しておくのである。（これをデータの先読みという。）次にホストコンピュータからのデータ読み出し要求が、連続するデータに係るものであると判定された場合の処理について説明する。各入出力処理プロセッサは、現在読み出し命令を受けたデータが、論理アドレス上の読み出し判定アドレスに位置するものであるかどうかを判定する。
【００１９】
図２の９１０は、キャッシュメモリ７０１内のデータの構成を概念的に示したものであり、読み出し判定位置を、論理アドレス上に０番地から、８０番地毎に設定した場合を示している。従って、論理アドレス０Ｘ００番地、０Ｘ８０番地、０Ｘ１００番地、０Ｘ１８０番地、０Ｘ２００番地、０Ｘ２８０番地となる。
【００２０】
入出力処理プロセッサは、ホストコンピュータからの読み出し要求が、連続したものであると判断した場合、自身が読み出し要求を受けたデータが、上述の読み出し判定位置アドレスに存在しているものかどうかを判定し、そのデータが読み出し判定位置に存在するものである場合は、後続のデータを、ホストコンピュータからの読み出し命令を待たずに、記憶デバイスからキャッシュメモリ上に読み出す。
【００２１】
ここで先読みを行う後続のデータは、他の入出力処理プロセッサが処理している連続したアドレス領域を勘案して、所定量分だけ離間した論理アドレスに位置にするデータからであることが望ましい。例えば、読み出し命令を受けたその次のレコードが存在する論理アドレス領域は、ホストコンピュータからの読み出し命令によって、既に他の入出力プロセッサが読み出し処理を行っている可能性があるからである。
【００２２】
即ち、本願実施例のように３つの入出力処理プロセッサが順次均等に読み出し要求を受領、処理するような場合にあっては、少なくとも２レコード先の論理アドレス上のデータを先読みすれば良い。但し、ホストコンピュータからの読み出し要求が連続して発生しているような場合においては、次の処理要求を受領するまでに、その先読みの処理が間に合わないことも生じるので、先読みを開始する論理アドレスはホストコンピュータからの処理要求等を勘案してある程度離間した論理アドレスから開始することが望ましい。
【００２３】
図２においては、８０（Ｈ）番地離れた論理アドレスにおいて先読みを行うこととして説明する。即ち、入出力処理プロセッサが論理アドレスの連続したデータの読み出し要求であると判定した状態において、読み出し命令を受けたデータ群が論理アドレス０ｘ８０番地から０ｘ８ｆ番地に存在するレコード８番にかかるものである場合、データの先読みを０ｘ１００番地のデータ群であるレコード１６から所定量分行うのである。図２においては、連続して８個のレコードを先読みしている。
【００２４】
図２を用いて、さらに詳細に説明する。前述の通り論理アドレスが0x80の倍数である場合を読み出し判定位置としているので、読み出し判定位置は R(Record)0,R8,R16,R24...（太枠で図示）となる。入出力処理プロセッサ５０３は読み出し要求を受領し、その読み出し要求を受けたデータをキャッシュメモリ９１０からホストコンピュータへ転送する。キャッシュメモリ上に存在しない場合には、記憶デバイスから読み出す。その後、入出力処理プロセッサ５０３は入出力パターンを参照して、ホストコンピュータの要求データが連続する論理アドレスデータに対する読み出し要求であるかどうかを判定する。さらに、この読み出し命令を受けたデータが、読み出し判定位置であるかどうかを判定する。
【００２５】
ここで、読み出し命令が、レコード８についてであった場合を例示して説明する。このレコード８は、読み出し判定位置として定めた論理アドレス０ｘ８０番地にあるので、入出力処理プロセッサ５０３は、読み出し判定位置のデータであると判定し、そのデータの論理アドレスから所定距離離れた論理アドレス上のデータを順次、記憶デバイスから、キャッシュメモリに所定量分、読み出すのである。第２図においては、80（H）順方向に離間したアドレスに存在するレコードを先頭に８レコード分読み出す状態を示しており、レコード１６から、レコード２３が順次キャッシュメモリ上に読み出される。そのときのキャッシュメモリ内のデータ有無の状態を図９１０に示す。網掛け表示したレコードは、既にレコードがキャッシュメモリに読み出されていることを示している。
【００２６】
従って、ホストコンピュータからの読み出し要求が、連続した論理アドレス上のデータであって、読み出されたデータが、レコード８である場合には、レコード１６から、レコード２３が、キャッシュメモリ上にあるかどうかを判定する。キャッシュメモリ上には、図示する通り、レコード０からレコード１５までのデータしか存在しないので、入出力処理プロセッサは、レコード１６から、レコード２３までを記憶デバイスから、キャッシュメモリ上に読み出す。
【００２７】
その後、引き続きR8以降の読み出し判定位置R16,R24...に対する読み出しを処理したいずれかの入出力処理プロセッサが、当該読み出したアドレスから、８０(Ｈ)離間した論理コマンドアドレスに存在するレコードを順方向に８レコード分、キャッシュメモリ上に存在するように、処理するのである。
【００２８】
このように共通の判定式に従って事前読み出しを行う入出力プロセッサを取り決め、取り決められた入出力処理プロセッサのみがデータ事前読み出しを実施する。連続する論理アドレスデータへの読み出し要求で、同一論理アドレスに対する要求は、1パスにのみ発行されるため、複数の入出力処理プロセッサが同一範囲のキャッシュメモリへの事前読み出し指示を行うことはない。このため、入出力処理プロセッサ間の競合が発生せず、パス数に依存しないホスト要求データの事前読み出しを行うことができる。
【００２９】
一方、データの先読みを入出力処理プロセッサが競合せずに行えるようにするための他の実施例として、各入出力処理プロセッサ５０１、５０２、５０３は、自身が読み出したデータの論理アドレスが、自身が先読みを担当する領域上のアドレスであるかを判定するという方法で処理の競合を避けることもできる。
【００３０】
即ち、入出力処理プロセッサ毎に、キャッシュメモリ上へのデータの読み出し作業を担当する論理アドレスの領域を予め割り当てておき、各入出力処理プロセッサは、読み出したデータの存在する論理アドレスが、自身に割り当てられた論理アドレスである場合にのみ、キャッシュメモリへのデータの事前読み出しを行うように構成する。
【００３１】
入出力処理プロセッサが実行する各種判定は、入出力プロセッサにマイクロプログラムとして提供される他、先読みを開始する位置や、量に関する情報については、記憶制御装置４００内部の構成を外部から制御する他のプロセッサによって与えられるように構成しても良い。この場合は図１に示す個別メモリ６０１，６０２、６０３内の制御データをユーザーが適宜変更可能に構成し、かつ入出力処理プロセッサの実行がこれら個別メモリを参照して実行されるようにすれば良い。尚、記憶デバイス内部の論理アドレスの様子は便宜上に連続して記載したが、記憶デバイス上の物理アドレスは必ずしも連続であるとは限らない。
【００３２】
図３は、連続する論理アドレスのデータに対して複数ポートに分割して読み出し要求が発行された場合のキャッシュメモリ上へのデータ事前読み出しを行うためのフローを示した図である。入出力処理プロセッサは、ホストからのコマンド受領（１００１）後、キャッシュ上からホスト要求データの転送を（１００２）を実行し、その後、入出力パターンの解析（１００３）を行う。解析情報を基に先読み指示実行可否を判断（１００４）し、先読みを行わない場合は処理を終了する。先読み処理を行う場合は、読み出し処理したデータの論理アドレスが、読み出し判定位置であるかを判定（１００５）し、読み出し判定位置でない場合は処理を終了する。読み出し処理したデータの論理アドレスが読み出し判定位置である場合は、キャッシュメモリに読み出しを行う範囲のデータが既に存在するかを判定（１００６）し、キャッシュメモリ上に読み出し範囲のデータが全て存在すれば処理を終了する。キャッシュメモリ上に読み出し範囲のデータが存在しない場合は、読み出し指示を記憶デバイスに発行（１００７）する。
【００３３】
これらの処理により、複数ポートからの読み出し要求に対するキャッシュメモリへのデータ事前読み出しを、複数の入出力処理プロセッサが同期を取ることなく実現できる。本件発明は本実施例に示す具体的な数値の例示に限定されるものでなく、複数の入出力処理プロセッサによってホストコンピュータからの処理分散が可能に構成された記憶制御装置において、入出力プロセッサ間で同一の論理アドレスに対する処理が同時にされるのを抑制するように、先読み等の処理を行う入出力処理プロセッサが制限、または選択されれば足りるのは言うまでもない。
【００３４】
尚、本発明の方法においては、まず連続データであるかの判定を行ない、続いて読み出したデータの論理アドレスが、その読み出した入出力処理プロセッサさに先読みを行わせる契機となるアドレスであるかどうかを判定したが、これらの判定の順序は適宜変更可能である。
【００３５】
【発明の効果】
本発明によれば、複数の入出力処理プロセッサによってホストコンピュータからの処理分散が可能に構成された記憶制御装置においても、入出力処理プロセッサ間で同期を取ることなく、各種のホストコンピュータからの要求に対する処理時間を短縮するような処理を実行できるようになる。
また、入出力処理プロセッサで無駄な処理量やプロセッサ間の競合を抑止することで、ホストコンピュータの要求に対する処理時間が減少し、応答速度が向上する。
【００３６】
また、読み出し命令を受けた論理アドレスによって先読み処理を行うかどうかを決めることにより、先読み処理を行うプロセッサ自体を分散させることも可能となる。
【００３７】
【図面の簡単な説明】
【図１】  本発明の第１実施例におけるシステムの例を示す図である。
【図２】  本発明の第１実施例の概念図である。
【図３】  本発明における第１の処理手順を示すフローチャートである。
【図４】  本発明の実施例を適用する記憶システムの例を示す図である。
【符号の説明】
１０１…上位装置、２０２・２０３・２０４…ホストアダプタ、４０１・４
０２・４０３…ポート、５０１・５０２・５０３…入出力処理プロセッサ、６
０１・６０２・６０３…個別メモリ、７０１…キャッシュメモリ、４００…
記憶制御装置、８０１・８０２…記憶デバイス。
【図１】
0004078094.tif 000002
【図２】
0004078094.tif 000003
【図３】
0004078094.tif 000004
【図４】
0004078094.tif 000005