(57)【特許請求の範囲】
【請求項１】
複数のホストに一つずつ設けられるとともに当該ホストからのＩ／Ｏ要求を制御してディスク装置とのＩ／Ｏ処理を実行する複数のホストディレクタと、これらのホストディレクタに共用されるとともにディスクキャッシュを構成する共用メモリと、を備えたディスクアレイ制御装置において、
前記ホストディレクタは、当該ホストディレクタに対応する前記ホストが同一キャッシュページに対する複数のリードコマンドを発行してきた場合に、当該複数のリードコマンドを処理する間、最初のリードコマンドに基づきキャッシュページ占有処理を行ない、リードコマンドの要求するキャッシュページアドレスを既に他のリードコマンドが要求していれば、当該キャッシュページを使用しているリードコマンドの数を示す使用カウンタをインクリメントし、当該キャッシュページアドレスに記憶されているデータを転送した後に、前記使用カウンタをデクリメントするとともに、前記使用カウンタが０の場合に、前記キャッシュページアドレスのキャッシュページ解放処理を行なう機能を備えた、
ことを特徴とするディスクアレイ制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ホストからのＩ／Ｏ要求を制御してディスク装置とのＩ／Ｏ処理を実行する複数のホストディレクタと、これらのホストディレクタに共用されるとともにディスクキャッシュを構成する共用メモリとを備えたディスクアレイ制御装置に関する。
【０００２】
【従来の技術】
［第一従来例］
【０００３】
近年、ディスクアレイ装置では、スループット向上のためにキャッシュメモリの搭載が不可欠になっている。ディスクアレイ装置の全容量の中で、アクセス頻度の高い領域というのは限られているので、その部分のデータをキャッシュメモリ上にコピーしておくことによりホストコンピュータへの応答を速く行うことができる。
【０００４】
また、Ｉ／Ｏ処理を行うディレクタ部を複数搭載するマルチディレクタにより負荷分散させる技術がある。これにより、複数のホストからのＩ／Ｏ要求を、それぞれのホストディレクタが並列に処理することができる。更に、ディスクアレイ内の物理ディスクアクセス処理を独立して実行するディスクディレクタを設けることにより、ホスト・キャッシュ間の優先的なデータ転送処理と、キャッシュ・ディスク間のバックグラウンド処理を非同期に行うことができるので、スループットの向上が得られる。
【０００５】
このようなマルチディレクタ方式のディスクアレイ装置において、複数のディレクタが同じタイミングでキャッシュメモリの管理領域にアクセスしようとした場合、排他されることなく並列して処理を遂行できるようにした、キャッシュメモリ管理方法が知られている（特開２０００−１８７６１７号公報）。図６は、同公報に開示されたディスクアレイ装置を示すブロック図である。図７は、このディスクアレイ装置に用いられる論理ディスクとキャッシュパーティションとの対応関係を示す図表である。以下、これらの図面に基づき説明する。
【０００６】
ディスクアレイ５０４は、三つのホストディレクタ５１１，５１２，５１３を介して三台のホスト５０１，５０２，５０３に接続されている。ディスクアレイ５０４は、キャッシュメモリ５１と、ホストディレクタ５１１，５１２，５１３と、物理ディスクユニット５２５と、物理ディスクユニット５２５に接続されるディスクディレクタ５３１，５３２，５３３から構成されている。キャッシュメモリ５１は、論理的に三つのパーティション５２１，５２２，５２３に分割されている。それぞれのパーティションは管理領域５２１１，５２２１，５２３１及びキャッシュ領域５２１２，５２２２，５２３２からなる。
【０００７】
次に、動作について説明する。まず、ホスト５０１から論理ディスク０へのアクセス要求があったものとする。ホストディレクタ５１１は図７に従ってキャッシュパーティション０を使用するために、キャッシュ管理領域５２１１を操作する。この間キャッシュ管理領域５２１１は排他制御され、他のディレクタからは操作できない。それとほぼ同時にホスト５０２から論理ディスク１へのアクセス要求があったものとする。するとホストディレクタ５１２はキャッシュパーティション１を使用するために、キャッシュ管理領域５２２１を操作する必要がある。このときキャッシュ管理領域５２２１は排他制御されていないので、すぐに操作することができる。
【０００８】
また、ホスト５０１が複数のライト要求を連続して発行しているものとする。ホストディレクタ５１１は、論理アドレスによってキャッシュパーティション５２１とキャッシュパーティション５２２とに振り分けてライトする。一方、ディスクディレクタ５３１は、キャッシュ上にライトされたデータを物理ディスクユニット５２５に書き込む処理を、ホストディレクタ５１１の動作と並列して行う。このとき、両ディレクタ５１１、５３１がキャッシュ管理領域５２１１、５２２１をほぼ同時にアクセスしようとしたときでも、パーティションが違えば同時に処理を行うことができる。
【０００９】
以上に見られるように、複数のホストからのＩ／Ｏ要求が、キャッシュ管理領域の操作において競合せずに並列処理を行うことができるため、スループットの向上が得られる効果がある。なぜならば、複数のキャッシュパーティションが完全に独立しているためであり、それぞれの管理領域を操作するときには、そのパーティションだけを排他制御するからである。
【００１０】
［第二従来例］
【００１１】
近年、ディスクアレイ装置では、ホスト接続ポート数の増加、ディスクドライブの容量及び最大搭載数の増加、ディスクキャッシュの大容量化など、装置全体が大規模化している。このような大規模のディスクアレイ装置を実現するために、ホスト接続ポート数やディスクドライブ搭載数に応じてマルチプロセッサを搭載し、共用メモリによるディスクキャッシュを構成する技術がある。ディスクキャッシュとは、コンピュータとディスクとの間で、データのやりとりを高速化する装置又は機能をいう。その動作原理は、いったんディスクから読み出したデータをメモリ上に蓄えておき、再度同じデータを読み出すときには、ディスクから再度読み込むのではなく、メモリ上に蓄えてあるデータを利用する、というものである。この技術では、マルチホスト接続においても十分なスループットを実現でき、また必要に応じてホストディレクタを実装できるスケーラビリティ（拡張性）もある。
【００１２】
図８は、このような共用メモリ方式によるディスクアレイ装置を示すブロック図である。以下、この図面に基づき説明する。
【００１３】
このディスクアレイ装置は、ホスト１２１にホストディレクタ２８１、ホスト１２２にホストディレクタ２８２がそれぞれ接続され、ディスクドライブ１４１にディスクディレクタ３０１、ディスクドライブ１４２にディスクディレクタ３０２がそれぞれ接続され、ホストディレクタ２８１，２８２及びディスクディレクタ３０１，３０２が共用メモリ１８を使用しながら並列動作するものである。
【００１４】
このディスクアレイ装置においては、機械動作を伴うディスクドライブアクセス時間はメモリアクセス時間に比べて大きいので、キャッシュヒット率を向上させること、及び、キャッシュヒット時のレスポンス時間を向上させることにより、平均性能を向上させることができる。キャッシュヒット時のレスポンス時間は、主にホストインターフェース処理時間、データ転送時間、共用メモリ制御処理時間などからなる。これらのうち、ホストインターフェース処理時間、データ転送時間については、ファイバーチャネル技術などにより十分短くなっている。したがって、共用メモリ制御処理についても同様に短くすることが望まれる。なお、ファイバチャネルとは、コンピュータ同士や周辺機器との間を同軸ケーブルや光ファイバケーブルで結び、高速データ転送をするためのインターフェース規格である。
【００１５】
ところで、あるアドレスと、その同じアドレス又は近傍のアドレスとに、ほぼ同時にコマンドが発行された場合、キャッシュページの競合が発生する。そのため、排他制御により後の処理は、前の処理が終わるまで待たされることになる。従来は、別々のホストからのＩ／Ｏでキャッシュページ競合が発生するようなケースは稀であるので問題は少なかった。しかしながら、ホストがマルチスレッドアクセスを行ってくる場合には、同一ホストからの複数のコマンド同士でキャッシュページ競合が発生してしまう。この場合、ホストは、近傍のアドレスに対して一度に複数のコマンドを発行しておいて、ディスク側がインターフェースバスに隙間を作らないでデータ転送を行うことを期待している。しかし、ディスクアレイ内部でキャッシュページ競合が発生していることにより、データ転送が終了した後に、キャッシュページの受け渡し処理があるため、次のデータ転送をすぐに開始することができない。なお、ディレクタのプロセス（処理単位）を分割した単位を「スレッド」と呼ぶ。マルチスレッドとは、このスレッドでホストの複数の処理要求（ホスト・プロセス）に対応する機能のことをいう。
【００１６】
図９は、第二従来例におけるコマンド処理を示すフローチャートである。以下、図８及び図９に基づき説明する。
【００１７】
ホストディレクタ２８１，２８２はホスト１２１，１２２からコマンドを受信すると（ステップ４０１）、共用メモリ１８上の管理データ操作によりキャッシュページ占有処理を行う（ステップ４０２）。その後、データ転送を起動し（ステップ４０３）、データ転送が完了するのを待つ。データ転送が完了すると（ステップ４０４）、共用メモリ１８上の管理データ操作によりキャッシュページを解放し（ステップ４０５）、コマンド完了処理を行う（ステップ４０６）。
【００１８】
図１０は、第二従来例において、ホストから続けて２つのコマンドを受け取ったため、キャッシュページ競合が発生したときの処理を示すフローチャートである。以下、図８及び図１０に基づき説明する。
【００１９】
コマンドＡ、Ｂを続けて受信すると（ステップ５０１，５０２）、まず、コマンドＡの処理としてキャッシュページ占有処理を行う（ステップ５０３）。続いて、コマンドＡのデータ転送を起動すると（ステップ５０４）、転送完了までプロセッサが空くので、コマンドＢの処理としてキャッシュページ占有処理を行う（ステップ５０５）。しかし、使用したいキャッシュページがすでに占有されているので競合待ちの状態になる。この後、コマンドＡのデータ転送が完了して（ステップ５０６）、コマンドＡのキャッシュページ解放処理を行い（ステップ５０７）、コマンドＡは完了する（ステップ５０８）。ここで漸くコマンドＢはキャッシュページを占有できる（ステップ５０９）。その後はコマンドＢの処理を続行する（ステップ５１０〜５１３）。このように、ステップ５０６〜５１０の間は、ステップ５０８の処理を除いてホストインターフェースが使用されていない状態である。したがって、ホストインターフェース性能が最大限に発揮されていない。
【００２０】
【発明が解決しようとする課題】
このように、第二従来例では、同一ホストからの複数のコマンド同士によるキャッシュページ競合が発生してしまうという問題があった。一方、第一従来例では、異なるホストからの複数のコマンド同士によるキャッシュページ競合を防止できるものの、同一ホストからの複数のコマンド同士に対してはキャッシュページ競合が発生してしまうという問題があった。
【００２１】
【発明の目的】
そこで、本発明の目的は、同一ホストからの複数のコマンド同士によるキャッシュページ競合を防止できる、ディスクアレイ制御装置を提供することにある。
【００２２】
【課題を解決するための手段】
本発明に係るディスクアレイ制御装置は、複数のホストに一つずつ設けられるとともに当該ホストからのＩ／Ｏ要求を制御してディスク装置とのＩ／Ｏ処理を実行する複数のホストディレクタと、これらのホストディレクタに共用されるとともにディスクキャッシュを構成する共用メモリとを備えたものである。そして、ホストディレクタは、ホストが同一キャッシュページに対する複数のリードコマンドを発行してきた場合に、複数のリードコマンドを処理する間、当該キャッシュページを占有したまま複数のデータ転送処理を起動する機能を備えている。このとき、ホストは、同一キャッシュページに対する複数のリードコマンドをマルチスレッドで発行する。
【００２３】
例えば、ホストディレクタは、ホストが同一キャッシュページに対する複数のリードコマンドを発行してきた場合に、最初のリードコマンドに基づきキャッシュページ占有処理を行ない、最後のリードコマンドに基づきキャッシュページ解放処理を行なう。より具体的には、ホストディレクタは、ホストが同一キャッシュページに対するリードコマンドＡ，Ｂを続けて発行してきた場合に、リードコマンドＡに基づきキャッシュページ占有処理を行なうとともにデータ転送処理を行ない、その後リードコマンドＢに基づきデータ転送処理を行なうとともにキャッシュページ解放処理を行なう。
【００２４】
これらの場合に、ホストディレクタは、ホストがリードコマンドを発行してきた場合に、そのリードコマンドの要求するキャッシュページアドレスを既に他のリードコマンドが要求していれば、使用カウンタをインクリメントし、当該キャッシュページアドレスに記憶されているデータを転送した後に、使用カウンタをデクリメントする。更に、この場合、ホストディレクタは、使用カウンタが０の場合に、前記キャッシュページアドレスのキャッシュページ解放処理を行なう。
【００２５】
換言すると、本発明に係るディスクアレイ制御装置は、キャッシュページを占有している状態で、ローカルメモリ上でキャッシュページ情報を保存しておき、同一プロセッサ内でキャッシュページ競合が発生した場合でも、リードコマンドであれば排他せずに同時に使用できるようにする。これにより、ＦＷ（ファームウェア）処理を挟まずに複数の転送を続けて行えるので、狭い範囲へのランダムリードアクセスやシーケンシャルリードアクセスがマルチスレッドで発行された場合の性能を、格段に向上できる。
【００２６】
【発明の実施の形態】
図１は、本発明に係るディスクアレイ制御装置の一実施形態を示すブロック図である。以下、この図面に基づき説明する。
【００２７】
本発明に係るディスクアレイ制御装置１０は、ホスト１２１，１２２に一つずつ設けられるとともにホスト１２１，１２２からのＩ／Ｏ要求を制御してディスクドライブ１４１，１４２とのＩ／Ｏ処理を実行するホストディレクタ１６１，１６２と、ホストディレクタ１６１，１６２に共用されるとともにディスクキャッシュを構成する共用メモリ１８とを備えたものである。
【００２８】
ホストディレクタ１６１は、ホスト１２１が同一キャッシュページに対する複数のリードコマンドを発行してきた場合に、複数のリードコマンドを処理する間、当該キャッシュページを占有したまま複数のデータ転送処理を起動する機能を備えている。同様に、ホストディレクタ１６２も、ホスト１２２が同一キャッシュページに対する複数のリードコマンドを発行してきた場合に、複数のリードコマンドを処理する間、当該キャッシュページを占有したまま複数のデータ転送処理を起動する機能を備えている。
【００２９】
ホストディレクタ１６１は、ローカルメモリ１６１ａ、プロセッサ１６１ｂ、ホスト接続ポート１６１ｃ、制御回路１６１ｄ等を備えている。同様に、ホストディレクタ１６２も、ローカルメモリ１６２ａ、プロセッサ１６２ｂ、ホスト接続ポート１６２ｃ、制御回路１６２ｄ等を備えている。
【００３０】
また、ディスクアレイ制御装置１０には、ディスクディレクタ２０１，２０２が付設されている。ディスクディレクタ２０１は、ローカルメモリ２０１ａ、プロセッサ２０１ｂ、ホスト接続ポート２０１ｃ、制御回路２０１ｄ等を備えている。同様に、ディスクディレクタ２０２も、ローカルメモリ２０２ａ、プロセッサ２０２ｂ、ホスト接続ポート２０２ｃ、制御回路２０２ｄ等を備えている。
【００３１】
次に、各構成要素について詳しく説明する。
【００３２】
ホスト１２１は、ホスト接続ポート１６１ｃでホストディレクタ１６１に接続されている。また、ホスト１２１は、マルチスレッドにより一度に複数のコマンドを発行する。プロセッサ１６１ｂは、高速にアクセスできるローカルメモリ１６１ａを持ち、ホスト１２１からのコマンドにより制御回路１６１ｄを通して、ホスト接続ポート１６１ｃと共用メモリ１８との間のデータ転送を起動したり、共用メモリ１８に直接アクセスしたりすることにより、共用メモリ１８上のデータ管理を行う。ホストディレクタ１６２は、別のホスト１２２に接続されていて、ホストディレクタ１６１とは独立して動作可能であるが、共用メモリ１８の情報は共用している。ディスクディレクタ２０１，２０２は、ディスクドライブ１４１，１４２と共用メモリ１８との間のデータ転送を制御する。
【００３３】
図２は、ホストディレクタ１６１，１６２がローカルメモリ１６１ａ，１６２ａ上に持つキャッシュページ管理情報テーブルを示す図表である。以下、図１及び図２に基づき説明する。
【００３４】
キャッシュページ管理情報テーブルは、複数のエントリについてのそれぞれの有効ビット、アドレス情報、キャッシュページ番号及び使用カウントからなる。有効ビット２２１，２４１，２６１はそのエントリが有効であることを示す。アドレス情報２２２，２４２，２６２は占有中キャッシュページのアドレスを示す。キャッシュページ番号２２３，２４３，２６３は当該キャッシュページの共用メモリ１８上の識別子を表わす。使用カウント２２４，２４４，２６４は、当該キャッシュページを使用しているコマンドの数を示す。
【００３５】
図３は、リードコマンドにおけるコマンド受信からデータ転送開始までのプロセッサ１６１ｂによる処理を示すフローチャートである。以下、図１乃至図３に基づき説明する。なお、プロセッサ１６２ｂもこれと同様に動作する。
【００３６】
リードコマンドを受信すると（ステップ１０１）、ローカルメモリ１６１ａ上のキャッシュページ管理情報を検索する。このとき、アドレス情報が一致するエントリを検索する（ステップ１０２）。ここでは、有効ビット２２１が有効であり、アドレス情報２２２が一致したものとする（ステップ１０３）。アドレス情報２２２が一致した場合、共用メモリ１８上で、キャッシュページ番号２２３に対応するキャッシュページの使用待ちがあるか否かをチェックする（ステップ１０４）。使用待ちがない場合には、当該エントリの使用カウント２２４をインクリメントする。これで、そのキャッシュページの使用権が得られたのでデータ転送起動処理を実行する（ステップ１１１）。
【００３７】
一方、ステップ１０３において当該アドレス情報がなかった場合、そのキャッシュページは占有しているものではないので、キャッシュページ占有処理を実施する（ステップ１０７）。また、ステップ１０５において共用メモリ１８上で使用待ちがあった場合は、キャッシュページのプロセッサ間競合が発生したか、又はライトコマンドのプロセッサ内競合が先に発生したことになる。したがって、当該コマンド処理はその後に行わなければならないので、キャッシュページ占有処理を実施する（ステップ１０７）。
【００３８】
キャッシュページ占有処理を行った場合には（ステップ１０７）、ローカルメモリ１６１ａ上のキャッシュページ管理情報で空きエントリを検索する（ステップ１０８）。ここでは有効ビット２４１が無効だったとする。この場合、有効ビット２４１を有効とし、アドレス情報２４２にアドレス情報を登録し、キャッシュページ番号２４３にキャッシュページ番号を登録し、使用カウント２４４に１をセットすることで、占有したページ情報を登録する（ステップ１１０）。このようにして、以後同じキャッシュページにコマンドが有った場合に同時使用できるようにする。
【００３９】
図４は、リードコマンドにおけるデータ転送完了からコマンド完了までのプロセッサ１６１ｂによる処理を示すフローチャートである。以下、図１、図２及び図４に基づき説明する。なお、プロセッサ１６２ｂもこれと同様に動作する。
【００４０】
データ転送が完了すると（ステップ２０１）、ローカルメモリ１６１ａ上のキャッシュページ管理情報を検索する。このとき、アドレス情報が一致するエントリを検索する（ステップ２０２）。アドレス情報が一致するエントリを検索できた場合（ステップ２０３）、当該エントリの使用カウントをデクリメントする（ステップ２０４）。その結果がゼロとなった場合には（ステップ２０５）、そのキャッシュページを使用中の処理が無くなったことを示すので、有効ビットを消すことでキャッシュページ情報を削除し（ステップ２０６）、キャッシュページ解放処理を行う（ステップ２０７）。
【００４１】
一方、ステップ２０３でアドレスが一致しなかった場合は、すぐにキャッシュページ解放処理を行う（ステップ２０７）。また、ステップ２０５で使用カウントがゼロにならなかった場合は、まだ他に使用中の処理があるので、キャッシュページ解放処理は行わずにコマンド完了処理を行う（ステップ２０８）。なお、ライトコマンドに対しては、従来通り図９のフローチャートに従って処理を行う。
【００４２】
図５は、ホスト１２１から二つのリードコマンドを続けて受けたときのプロセッサ１６１ｂによる処理を示すフローチャートである。以下、図１、図２及び図５に基づき説明する。なお、プロセッサ１６２ｂもこれと同様に動作する。また、詳細については、図３及び図４で説明したとおりである。
【００４３】
コマンドＡ，Ｂを受信した後（３０１，３０２）、コマンドＡに基づきキャッシュページ占有処理（３０３）、続いてデータ転送処理（３０４）を行った後、すぐにコマンドＢのデータ転送処理を行う（３０５）。
【００４４】
【発明の効果】
本発明によれば、ホストが同一キャッシュページに対する複数のリードコマンドを発行してきた場合に、複数のリードコマンドを処理する間、当該キャッシュページを占有したまま複数のデータ転送処理を起動することにより、同一ホストからの複数のコマンド同士によるキャッシュページ競合を防止することができる。
【００４５】
換言すると、本発明によれば、ホストが狭い範囲に対するランダムリードアクセス又はシーケンシャルリードアクセスをマルチスレッドで発行してきた場合に、同一ページに対するコマンドを処理する間、そのキャッシュページを占有したまま複数のデータ転送処理を起動するので、ホストインターフェースバス性能を最大限に発揮できる。
【図面の簡単な説明】
【図１】本発明に係るディスクアレイ制御装置の一実施形態を示すブロック図である。
【図２】本実施形態におけるホストディレクタがローカルメモリ上に持つキャッシュページ管理情報テーブルを示す図表である。
【図３】本実施形態のリードコマンドにおけるコマンド受信からデータ転送開始までのプロセッサによる処理を示すフローチャートである。
【図４】本実施形態のリードコマンドにおけるデータ転送完了からコマンド完了までのプロセッサによる処理を示すフローチャートである。
【図５】本実施形態におけるホストから二つのリードコマンドを続けて受けたときのプロセッサによる処理を示すフローチャートである。
【図６】第一従来例を示すブロック図である。
【図７】第一従来例に用いられる論理ディスクとキャッシュパーティションとの対応関係を示す図表である。
【図８】第二従来例を示すブロック図である。
【図９】第二従来例におけるコマンド処理を示すフローチャートである。
【図１０】第二従来例におけるキャッシュページ競合が発生したときの処理を示すフローチャートである。
【符号の説明】
１０  ディスクアレイ制御装置
１２１，１２２  ホスト
１４１，１４２  ディスクドライブ
１６１，１６２  ホストディレクタ
１６１ａ  ローカルメモリ
１６１ｂ  プロセッサ
１６１ｃ  ホスト接続ポート
１６１ｄ  制御回路
１８  共用メモリ
２０１，２０２  ディスクディレクタ
【図１】
0003690295.tif 000002
【図２】
0003690295.tif 000003
【図３】
0003690295.tif 000004
【図４】
0003690295.tif 000005
【図５】
0003690295.tif 000006
【図６】
0003690295.tif 000007
【図７】
0003690295.tif 000008
【図８】
0003690295.tif 000009
【図９】
0003690295.tif 000010
【図１０】
0003690295.tif 000011