(57)【特許請求の範囲】
【請求項１】
複数のホストディレクタと、これらホストディレクタから共有されディスクキャッシュの役目をする共有メモリとを搭載するディスクアレイ装置のディスクキャッシュ管理方法において、
各ホストディレクタにローカルメモリを搭載し、各ローカルメモリに前記共有メモリ上の定常オープン状態のキャッシュページを使用中フラグおよび前記各ホストディレクタを識別する識別子に基づいて管理するローカルキャッシュ管理領域を設け、
前記共有メモリ上のキャッシュページをオープン処理して使用し終わった後に前記ローカルキャッシュ管理領域上だけで当該キャッシュページの使用中の解除を行い、前記共有メモリ上では当該キャッシュページをクローズ処理せずにオープンしたままの定常オープン状態としておき、自ホストディレクタから前記共有メモリ上の定常オープン状態の当該キャッシュページへのアクセスが連続してあった場合に当該キャッシュページのオープン処理およびクローズ処理を省略することで、レスポンス性能を向上させることを特徴とするディスクアレイ装置のディスクキャッシュ管理方法。
【請求項２】
複数のホストディレクタと、これらホストディレクタから共有されキャッシュページ領域およびキャッシュ管理領域を備える共有メモリとを搭載するディスクアレイ装置のディスクキャッシュ管理方法において、
各ホストディレクタにローカルメモリを搭載し、各ローカルメモリに前記共有メモリ上の定常オープン状態のキャッシュページを管理するローカルキャッシュ管理領域を設け、
ホストからのリード／ライトコマンドを受領したときに、当該キャッシュページが使用中でない場合には前記キャッシュ管理領域上の共有管理情報エントリで当該キャッシュページを使用中に設定するとともに前記ローカルキャッシュ管理領域上のローカル管理情報エントリを割り当てて当該ローカル管理情報エントリで当該キャッシュページを使用中に設定し、当該キャッシュページが他のホストディレクタで使用中である場合には当該共有管理情報エントリの待ちキューに自ホストディレクタ識別子を蓄積し他のホストディレクタに当該キャッシュページのクローズ要求を送信した後に当該共有管理情報エントリで当該キャッシュページを使用中に設定するとともに当該ローカル管理情報エントリを割り当てて当該ローカル管理情報エントリで当該キャッシュページを使用中に設定し、当該キャッシュページが自ホストディレクタで使用中である場合には当該共有管理情報エントリでの当該キャッシュページの使用中設定処理を省略して当該ローカル管理情報エントリで当該キャッシュページを使用中に設定するキャッシュページのオープン処理と、
当該キャッシュページを使用し終わった後に当該共有管理情報エントリの待ちキューを参照して当該キャッシュページの使用の競合をチェックし、競合がある場合には当該共有管理情報エントリでの当該キャッシュページの使用中を解除するとともに当該ローカル管理情報エントリの割り当てを解除し、競合がない場合には当該共通管理情報エントリで当該キャッシュページの使用中を解除せずに当該ローカル管理情報エントリで当該キャッシュページの使用中を解除して当該キャッシュページをオープンしたままの定常オープン状態とするキャッシュページのクローズ処理と、
他のホストディレクタから当該キャッシュページのクローズ要求を受信したときに当該キャッシュページが使用中でない場合には当該共有管理情報エントリで当該キャッシュページの使用中を解除するとともに当該ローカル管理情報エントリの割り当てを解除するクローズ要求受信処理と
を含むことを特徴とするディスクアレイ装置のディスクキャッシュ管理方法。
【請求項３】
物理ディスクアレイと、１つ以上のディスクディレクタと、複数のホストディレクタと、これらディスクディレクタおよびホストディレクタから共有される共有メモリとを備え、前記共有メモリ上のキャッシュ管理領域に、前記共有メモリ上のキャッシュページ領域にキャッシュインされるキャッシュページに１対１で対応している共有管理情報エントリと、全共有管理情報エントリ中のキャッシュページに割り当てられている共有管理情報エントリをアドレスで検索可能にするようにリンクを形成する共有検索テーブルと、全共有管理情報エントリの中でキャッシュページに割り当てられているが使用中でない共有管理情報エントリを双方向にリンクする共有割り当てリンクを形成する起点となる共有割り当てリンクＭＲＵポインタおよび共有割り当てリンクＬＲＵポインタと、全共有管理情報エントリの中でキャッシュページに割り当てられていない共有管理情報エントリを双方向にリンクする共有未割り当てリンクを形成する起点となる共有未割り当てリンクＭＲＵポインタおよび共有未割り当てリンクＬＲＵポインタとが設けられているディスクアレイ装置のディスクキャッシュ管理方法において、各ホストディレクタにローカルメモリを搭載し、各ローカルメモリ上のローカルキャッシュ管理領域に、前記共有メモリ上のキャッシュページ領域にキャッシュインされるキャッシュページに１対１で対応しているローカル管理情報エントリと、全ローカル管理情報エントリ中のキャッシュページに割り当てられているローカル管理情報エントリをアドレスで検索可能にするようにリンクを形成するローカル検索テーブルと、全ローカル管理情報エントリの中でキャッシュページに割り当てられているが使用中でないローカル管理情報エントリを双方向にリンクするローカル割り当てリンクを形成する起点となるローカル割り当てリンクＭＲＵポインタおよびローカル割り当てリンクＬＲＵポインタと、全ローカル管理情報エントリの中でキャッシュページに割り当てられていないローカル管理情報エントリを双方向にリンクするローカル未割り当てリンクを形成する起点となるローカル未割り当てリンクＭＲＵポインタおよびローカル未割り当てリンクＬＲＵポインタとを設け、
ホストからリード／ライトコマンドを受領したときに当該アドレスに対応する当該キャッシュページに共有管理情報エントリが割り当てられているかどうかを共有検索テーブルから検索する工程と、共有管理情報エントリが割り当てられていなかった場合に当該キャッシュページに共有管理情報エントリを割り当て、当該共有管理情報エントリで当該キャッシュページを使用中に設定し、当該キャッシュページにローカル管理情報エントリを割り当て、当該ローカル管理情報エントリで当該キャッシュページを使用中に設定する工程と、共有管理情報エントリが割り当てられていた場合に当該共有管理情報エントリで当該キャッシュページが使用中かどうかをチェックする工程と、当該キャッシュページが使用中でない場合に当該共有管理情報エントリで当該キャッシュページを使用中に設定し、当該キャッシュページにローカル管理情報エントリを割り当て、当該ローカル管理情報エントリで当該キャッシュページを使用中に設定する工程と、当該キャッシュページが他のホストディレクタで使用中である場合に、当該共有管理情報エントリの待ちキューに蓄積し、他のホストディレクタに当該キャッシュページのクローズを要求し、当該共有管理情報エントリで当該キャッシュページの使用中が解除されるのを待って、当該共有管理情報エントリで当該キャッシュページを使用中に設定し、当該キャッシュページにローカル管理情報エントリを割り当て、当該ローカル管理情報エントリで当該キャッシュページを使用中に設定する工程と、当該キャッシュページが自ホストディレクタで使用中である場合に当該共有管理情報エントリの待ちキューを参照して当該キャッシュページの使用の競合をチェックする工程と、当該共有管理情報エントリで当該キャッシュページの使用の競合がある場合に当該共有管理情報エントリの待ちキューに蓄積し、当該共有管理情報エントリで当該キャッシュページの使用中が解除されるのを待って、当該共有管理情報エントリで当該キャッシュページを使用中に設定し、当該キャッシュページにローカル管理情報エントリを割り当て、当該ローカル管理情報エントリで当該キャッシュページを使用中に設定する工程と、当該共有管理情報エントリで当該キャッシュページの使用の競合がない場合に前記ローカル検索テーブルから当該ローカル管理情報エントリを検索し、当該ローカル管理情報エントリで当該キャッシュページの使用の競合をチェックする工程と、当該ローカル管理情報エントリで当該キャッシュページの使用の競合がある場合に当該ローカル管理情報エントリの待ちキューに蓄積し、当該ローカル管理情報エントリで当該キャッシュページの使用中が解除されるのを待って、当該ローカル管理情報エントリで当該キャッシュページを使用中に設定する工程と、当該ローカル管理情報エントリで当該キャッシュページの使用の競合がない場合に当該共有管理情報エントリで当該キャッシュページを使用中に設定することなしに当該ローカル管理情報エントリで当該キャッシュページを使用中に設定する工程とを含むキャッシュページのオープン処理と、
ホストからのリード／ライトコマンド処理においてホスト，キャッシュページ領域間のデータ転送を完了したときに当該共有管理情報エントリの待ちキューを参照して当該キャッシュページの使用の競合をチェックする工程と、使用の競合がある場合に当該共有管理情報エントリで当該キャッシュページの使用中を解除し、当該ローカル管理情報エントリの割り当てを解除する工程と、使用の競合がない場合に前記ローカル検索テーブルから当該ローカル管理情報エントリを検索し、当該ローカル管理情報エントリで当該キャッシュページの使用中を解除する工程とを含むキャッシュページのクローズ処理と、
他のホストディレクタからキャッシュページのクローズ要求を受信したときに前記ローカル検索テーブルから当該ローカル管理情報エントリを検索する工程と、当該ローカル管理情報エントリが検索された場合に当該ローカル管理情報エントリで当該キャッシュページの使用中をチェックする工程と、当該キャッシュページが使用中でなかった場合に当該共有管理情報エントリで当該キャッシュページの使用中を解除し、当該ローカル管理情報エントリの割り当てを解除する工程とを含むクローズ要求受信処理と
からなること特徴とするディスクアレイ装置のディスクキャッシュ管理方法。
【請求項４】
前記ローカルキャッシュ管理領域に、前記ローカル割り当てリンクにリンクされたローカル管理情報エントリの数をカウントするローカル割り当てリンクカウンタを設け、前記キャッシュページのクローズ処理において、前記ローカル割り当てリンクカウンタのカウント値が、前記共有管理情報エントリで使用中に設定され前記ローカル管理情報エントリで使用中を解除された定常オープン状態のキャッシュページの最大ページ数を超えた場合に、前記ローカル割り当てリンクから当該ローカル管理情報エントリをＬＲＵ制御で追い出して前記ローカル割り当てリンクにリンクインし、当該共有管理情報で当該キャッシュページの使用中を解除する工程を含むことを特徴とする請求項２または請求項３記載のディスクアレイ装置のディスクキャッシュ管理方法。
【請求項５】
前記定常オープン状態のキャッシュページの最大ページ数が、全キャッシュページのうちのある割合を定常オープン状態のキャッシュページの最大割合とし、それを搭載されているホストディレクタの数で分割して決定することを特徴とする請求項４記載のディスクアレイ装置のディスクキャッシュ管理方法。
【請求項６】
前記定常オープン状態のキャッシュページの最大ページ数が、全キャッシュページのうちのある割合を定常オープン状態のキャッシュページの最大割合とし、それに全アクセス頻度に対する自ホストディレクタのアクセス頻度の割合をかけた値であることを特徴とする請求項４記載のディスクアレイ装置のディスクキャッシュ管理方法。
【請求項７】
前記定常オープン状態のキャッシュページの最大ページ数が、全キャッシュページのうちのある割合を定常オープン状態のキャッシュページの最大割合とし、それに全アクセス頻度に対する自ホストディレクタのアクセス頻度の割合をかけた値に、さらに優先度の重みをかけた値であることを特徴とする請求項４記載のディスクアレイ装置のディスクキャッシュ管理方法。
【請求項８】
前記共有管理情報エントリが、キャッシュページに物理ディスクアレイ上のどのデータがキャッシュページに割り当てられているかを示す割り当てアドレスと、共有検索テーブルとリンクを張る順方向ポインタおよび逆方向ポインタと、共有割り当てリンクＭＲＵポインタおよび共有割り当てリンクＬＲＵポインタまたは共有未割り当てリンクＭＲＵポインタおよび共有未割り当てリンクＬＲＵポインタを起点とする双方向リンクである共有割り当てリンクまたは共有未割り当てリンクを形成する順方向ポインタおよび逆方向ポインタと、使用中フラグおよびホストディレクタ識別子を登録する使用中情報と、当該キャッシュページの使用を待っている他のホストディレクタのホストディレクタ識別子を蓄積する待ちキューとを含んでいることを特徴とする請求項２，請求項３，請求項４，請求項５，請求項６，または請求項７記載のディスクアレイ装置のディスクキャッシュ管理方法。
【請求項９】
前記ローカル管理情報エントリが、キャッシュページに物理ディスクアレイ上のどのデータがキャッシュページに割り当てられているかを示す割り当てアドレスと、当該キャッシュページのページ識別子と、ローカル検索テーブルとリンクを張る順方向ポインタおよび逆方向ポインタと、ローカル割り当てリンクＭＲＵポインタおよびローカル割り当てリンクＬＲＵポインタまたはローカル未割り当てリンクＭＲＵポインタおよびローカル未割り当てリンクＬＲＵポインタを起点とする双方向リンクであるローカル割り当てリンクまたはローカル未割り当てリンクを形成する順方向ポインタおよび逆方向ポインタと、使用中フラグおよびタスク識別子を登録する使用中情報と、当該キャッシュページの使用を待っている他の処理タスクのタスク識別子を蓄積する待ちキューとを含んでいることを特徴とする請求項２，請求項３，請求項４，請求項５，請求項６，または請求項７記載のディスクアレイ装置のディスクキャッシュ管理方法。
【請求項１０】
複数のホストディレクタと、これらホストディレクタから共有されディスクキャッシュの役目をする共有メモリとを搭載するディスクアレイ装置において、
各ホストディレクタが、ホストと接続されるポートと、該ポートを介して前記ホストに接続されるとともにバスを介して前記共有メモリに接続されるコントローラと、該コントローラに接続され前記共有メモリ上の定常オープン状態のキャッシュページを使用中フラグおよび前記各ホストディレクタを識別する識別子に基づいて管理するローカルキャッシュ管理領域が設けられたローカルメモリとを備えることを特徴とするディスクアレイ装置。
【請求項１１】
物理ディスクアレイと、１つ以上のディスクディレクタと、複数のホストディレクタと、これらディスクディレクタおよびホストディレクタから共有される共有メモリとを備え、前記共有メモリ上のキャッシュ管理領域に、前記共有メモリ上のキャッシュページ領域にキャッシュインされるキャッシュページに１対１で対応している共有管理情報エントリと、全共有管理情報エントリ中のキャッシュページに割り当てられている共有管理情報エントリをアドレスで検索可能にするようにリンクを形成する共有検索テーブルと、全共有管理情報エントリの中でキャッシュページに割り当てられているが使用中でない共有管理情報エントリを双方向にリンクする共有割り当てリンクを形成する起点となる共有割り当てリンクＭＲＵポインタおよび共有割り当てリンクＬＲＵポインタと、全共有管理情報エントリの中でキャッシュページに割り当てられていない共有管理情報エントリを双方向にリンクする共有未割り当てリンクを形成する起点となる共有未割り当てリンクＭＲＵポインタおよび共有未割り当てリンクＬＲＵポインタとが設けられているディスクアレイ装置において、
各ホストディレクタにローカルメモリを搭載し、前記ローカルメモリ上のローカルキャッシュ管理領域に、前記共有メモリ上のキャッシュページ領域にキャッシュインされるキャッシュページに１対１で対応しているローカル管理情報エントリと、全ローカル管理情報エントリ中のキャッシュページに割り当てられているローカル管理情報エントリをアドレスで検索可能にするようにリンクを形成するローカル検索テーブルと、全ローカル管理情報エントリの中でキャッシュページに割り当てられているが使用中でないローカル管理情報エントリを双方向にリンクするローカル割り当てリンクを形成する起点となるローカル割り当てリンクＭＲＵポインタおよびローカル割り当てリンクＬＲＵポインタと、全ローカル管理情報エントリの中でキャッシュページに割り当てられていないローカル管理情報エントリを双方向にリンクするローカル未割り当てリンクを形成する起点となるローカル未割り当てリンクＭＲＵポインタおよびローカル未割り当てリンクＬＲＵポインタとを設けたことを特徴とするディスクアレイ装置。
【請求項１２】
前記共有管理情報エントリが、キャッシュページに物理ディスクアレイ上のどのデータがキャッシュページに割り当てられているかを示す割り当てアドレスと、共有検索テーブルとリンクを張る順方向ポインタおよび逆方向ポインタと、共有割り当てリンクＭＲＵポインタおよび共有割り当てリンクＬＲＵポインタまたは共有未割り当てリンクＭＲＵポインタおよび共有未割り当てリンクＬＲＵポインタを起点とする双方向リンクである共有割り当てリンクまたは共有未割り当てリンクを形成する順方向ポインタおよび逆方向ポインタと、使用中フラグおよびホストディレクタ識別子を登録する使用中情報と、当該キャッシュページの使用を待っている他のホストディレクタのホストディレクタ識別子を蓄積する待ちキューとを含んでいることを特徴とする請求項１０または請求項１１記載のディスクアレイ装置。
【請求項１３】
前記ローカル管理情報エントリが、キャッシュページに物理ディスクアレイ上のどのデータがキャッシュページに割り当てられているかを示す割り当てアドレスと、当該キャッシュページのページ識別子と、ローカル検索テーブルとリンクを張る順方向ポインタおよび逆方向ポインタと、ローカル割り当てリンクＭＲＵポインタおよびローカル割り当てリンクＬＲＵポインタまたはローカル未割り当てリンクＭＲＵポインタおよびローカル未割り当てリンクＬＲＵポインタを起点とする双方向リンクであるローカル割り当てリンクまたはローカル未割り当てリンクを形成する順方向ポインタおよび逆方向ポインタと、使用中フラグおよびタスク識別子を登録する使用中情報と、当該キャッシュページの使用を待っている他の処理タスクのタスク識別子を蓄積する待ちキューとを含んでいることを特徴とする請求項１０または請求項１１記載のディスクアレイ装置。
【請求項１４】
コンピュータに、ホストからのリード／ライトコマンドを受領したときに、当該キャッシュページが使用中でない場合には前記キャッシュ管理領域上の共有管理情報エントリで当該キャッシュページを使用中に設定するとともに前記ローカルキャッシュ管理領域上のローカル管理情報エントリを割り当てて当該ローカル管理情報エントリで当該キャッシュページを使用中に設定し、当該キャッシュページが他のホストディレクタで使用中である場合には当該共有管理情報エントリの待ちキューに自ホストディレクタ識別子を蓄積し他のホストディレクタに当該キャッシュページのクローズ要求を送信した後に当該共有管理情報エントリで当該キャッシュページを使用中に設定するとともに当該ローカル管理情報エントリを割り当てて当該ローカル管理情報エントリで当該キャッシュページを使用中に設定し、当該キャッシュページが自ホストディレクタで使用中である場合には当該共有管理情報エントリでの当該キャッシュページの使用中設定処理を省略して当該ローカル管理情報エントリで当該キャッシュページを使用中に設定するキャッシュページのオープン処理と、当該キャッシュページを使用し終わった後に当該共有管理情報エントリの待ちキューを参照して当該キャッシュページの使用の競合をチェックし、競合がある場合には当該共有管理情報エントリでの当該キャッシュページの使用中を解除するとともに当該ローカル管理情報エントリの割り当てを解除し、競合がない場合には当該共通管理情報エントリで当該キャッシュページの使用中を解除せずに当該ローカル管理情報エントリで当該キャッシュページの使用中を解除して当該キャッシュページをオープンしたままの定常オープン状態とするキャッシュページのクローズ処理と、他のホストディレクタから当該キャッシュページのクローズ要求を受信したときに当該キャッシュページが使用中でない場合には当該共有管理情報エントリで当該キャッシュページの使用中を解除するとともに当該ローカル管理情報エントリの割り当てを解除するクローズ要求受信処理とを実行させるためのプログラム。
【請求項１５】
コンピュータに、ホストからリード／ライトコマンドを受領したときに当該アドレスに対応する当該キャッシュページに共有管理情報エントリが割り当てられているかどうかを共有検索テーブルから検索する工程と、共有管理情報エントリが割り当てられていなかった場合に当該キャッシュページに共有管理情報エントリを割り当て、当該共有管理情報エントリで当該キャッシュページを使用中に設定し、当該キャッシュページにローカル管理情報エントリを割り当て、当該ローカル管理情報エントリで当該キャッシュページを使用中に設定する工程と、共有管理情報エントリが割り当てられていた場合に当該共有管理情報エントリで当該キャッシュページが使用中かどうかをチェックする工程と、当該キャッシュページが使用中でない場合に当該共有管理情報エントリで当該キャッシュページを使用中に設定し、当該キャッシュページにローカル管理情報エントリを割り当て、当該ローカル管理情報エントリで当該キャッシュページを使用中に設定する工程と、当該キャッシュページが他のホストディレクタで使用中である場合に、当該共有管理情報エントリの待ちキューに蓄積し、他のホストディレクタに当該キャッシュページのクローズを要求し、当該共有管理情報エントリで当該キャッシュページの使用中が解除されるのを待って、当該共有管理情報エントリで当該キャッシュページを使用中に設定し、当該キャッシュページにローカル管理情報エントリを割り当て、当該ローカル管理情報エントリで当該キャッシュページを使用中に設定する工程と、当該キャッシュページが自ホストディレクタで使用中である場合に当該共有管理情報エントリの待ちキューを参照して当該キャッシュページの使用の競合をチェックする工程と、当該共有管理情報エントリで当該キャッシュページの使用の競合がある場合に当該共有管理情報エントリの待ちキューに蓄積し、当該共有管理情報エントリで当該キャッシュページの使用中が解除されるのを待って、当該共有管理情報エントリで当該キャッシュページを使用中に設定し、当該キャッシュページにローカル管理情報エントリを割り当て、当該ローカル管理情報エントリで当該キャッシュページを使用中に設定する工程と、当該共有管理情報エントリで当該キャッシュページの使用の競合がない場合に前記ローカル検索テーブルから当該ローカル管理情報エントリを検索し、当該ローカル管理情報エントリで当該キャッシュページの使用の競合をチェックする工程と、当該ローカル管理情報エントリで当該キャッシュページの使用の競合がある場合に当該ローカル管理情報エントリの待ちキューに蓄積し、当該ローカル管理情報エントリで当該キャッシュページの使用中が解除されるのを待って、当該ローカル管理情報エントリで当該キャッシュページを使用中に設定する工程と、当該ローカル管理情報エントリで当該キャッシュページの使用の競合がない場合に当該共有管理情報エントリで当該キャッシュページを使用中に設定することなしに当該ローカル管理情報エントリで当該キャッシュページを使用中に設定する工程とを含むキャッシュページのオープン処理と、ホストからのリード／ライトコマンド処理においてホスト，キャッシュページ領域間のデータ転送を完了したときに当該共有管理情報エントリの待ちキューを参照して当該キャッシュページの使用の競合をチェックする工程と、使用の競合がある場合に当該共有管理情報エントリで当該キャッシュページの使用中を解除し、当該ローカル管理情報エントリの割り当てを解除する工程と、使用の競合がない場合に前記ローカル検索テーブルから当該ローカル管理情報エントリを検索し、当該ローカル管理情報エントリで当該キャッシュページの使用中を解除する工程とを含むキャッシュページのクローズ処理と、他のホストディレクタからキャッシュページのクローズ要求を受信したときに前記ローカル検索テーブルから当該ローカル管理情報エントリを検索する工程と、当該ローカル管理情報エントリが検索された場合に当該ローカル管理情報エントリで当該キャッシュページの使用中をチェックする工程と、当該キャッシュページが使用中でなかった場合に当該共有管理情報エントリで当該キャッシュページの使用中を解除し、当該ローカル管理情報エントリの割り当てを解除する工程とを含むクローズ要求受信処理とを実行させるためのプログラム。
【発明の詳細な説明】
【０００１】
【発明が属する技術分野】
本発明はディスクアレイ装置のディスクキャッシュ管理方法に関し、特に複数のホストディレクタ（ホストアダプタともいう）およびこれらホストディレクタから共有されディスクキャッシュの役目をするメモリ（以下、共有メモリという）を搭載するディスクアレイ装置のディスクキャッシュ管理方法に関する。
【０００２】
【従来の技術】
複数のホストディレクタを搭載したディスクアレイ装置では、一般的に大容量の共有メモリを搭載し、これをディスクキャッシュとして使用する。ホストコンピュータ（以下、単にホストという）からリードコマンドを受領したとき、キャッシュヒットすれば、物理ディスクの機械的動作なしにホストにデータを転送ことができるので高速レスポンスが可能となる。また、ライトコマンドを受領したときも、ディスクキャッシュにデータを書き込んだ時点でライトコマンドを終了させ、そのデータを後で物理ディスクに書き込むことにより、やはり高速レスポンスが可能となる。
【０００３】
【発明が解決しようとする課題】
しかしながら、上述した従来の技術では、高速レスポンスが可能であるといっても、それは物理ディスクの機械的動作と比較してのことであって、ホストのアプリケーションの負荷によってはさらに高速なレスポンスを望む場合も考えられる。
【０００４】
キャッシュヒット時のレスポンス時間のうち、複数のホストディレクタおよび共有メモリを搭載したディスクアレイ装置特有の要素として、キャッシュページの排他処理時間が挙げられる。ホストからのリード／ライトコマンドを受領すると、ホストディレクタは、データ送受信に先立ってキャッシュページのオープン処理を行う。これは、データ送受信中に、当該キャッシュページを排他制御し、別のホストディレクタや当該ホストディレクタの別のタスク処理が、同一のキャッシュページにアクセスしたり、使用中のキャッシュページを追い出し処理したりするのを防ぐための処理である。逆に、データ転送が完了した後には、別のホストディレクタや当該ホストディレクタの別のタスク処理がアクセスできるように、また当該キャッシュページをＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）制御の対象とするためにキャッシュページのクローズ処理を行う必要がある。
【０００５】
キャッシュページのオープン処理およびクローズ処理は、共有メモリ上のキャッシュ管理情報を更新することによって行うが、共有メモリへのアクセス時間はディスクアレイ装置が大規模化しホストディレクタの数や共有メモリの容量が増加するたびにハードウェア的に必然的に延びざるを得ない一方で、ポート性能やディレクタ性能などが急速に向上していくので、それに比べて相対的に性能ネックとなりつつある。その結果、キャッシュヒット時のコマンド処理においてキャッシュページのオープン処理およびクローズ処理にかかる時間が無視できないほど大きくなってきている。
【０００６】
本発明の目的は、キャッシュページのオープン処理およびクローズ処理に伴う共有メモリへのアクセス回数を省くことによって、性能ネックを解消しキャッシュページのアクセスレスポンス性能を大幅に向上させるようにしたディスクアレイ装置のディスクキャッシュ管理方法を提供することにある。
【０００７】
なお、先行技術文献として、特開２０００−２６７８１５がある。この公報に開示された「ディスクアレイ制御装置」は、ホストコンピュータ／ディスク装置との複数のインタフェース部と、各インタフェース部とそれぞれアクセスパスにより１対１に接続される２重化された共有メモリ部と、複数のインタフェース部に接続されるセレクタと、セレクタに接続されるキャッシュメモリとを設け、複数のインタフェース部とセレクタとの間のアクセスパスの本数をキャッシュメモリとセレクタとの間のアクセスパスの本数よりも多くし、複数のインタフェース部のプロセッサが、２重化された共有メモリ部に２重ライトを行うものである。しかし、この先行技術は、ローカルメモリにローカル検索テーブル，ローカル管理情報エントリ等をもたない点で、本発明と構成および作用が根本的に異なっている。
【０００８】
【課題を解決するための手段】
本発明のディスクアレイ装置のディスクキャッシュ管理方法は、複数のホストディレクタと、これらホストディレクタから共有されディスクキャッシュの役目をする共有メモリとを搭載するディスクアレイ装置のディスクキャッシュ管理方法において、各ホストディレクタにローカルメモリを搭載し、各ローカルメモリに前記共有メモリ上の定常オープン状態のキャッシュページを使用中フラグおよび前記各ホストディレクタを識別する識別子に基づいて管理するローカルキャッシュ管理領域を設け、前記共有メモリ上のキャッシュページをオープン処理して使用し終わった後に前記ローカルキャッシュ管理領域上だけで当該キャッシュページの使用中の解除を行い、前記共有メモリ上では当該キャッシュページをクローズ処理せずにオープンしたままの定常オープン状態としておき、自ホストディレクタから前記共有メモリ上の定常オープン状態の当該キャッシュページへのアクセスが連続してあった場合に当該キャッシュページのオープン処理およびクローズ処理を省略することで、レスポンス性能を向上させることを特徴とする。
【０００９】
また、本発明のディスクアレイ装置のディスクキャッシュ管理方法は、複数のホストディレクタと、これらホストディレクタから共有されキャッシュページ領域およびキャッシュ管理領域を備える共有メモリとを搭載するディスクアレイ装置のディスクキャッシュ管理方法において、各ホストディレクタにローカルメモリを搭載し、各ローカルメモリに前記共有メモリ上の定常オープン状態のキャッシュページを管理するローカルキャッシュ管理領域を設け、ホストからのリード／ライトコマンドを受領したときに、当該キャッシュページが使用中でない場合には前記キャッシュ管理領域上の共有管理情報エントリで当該キャッシュページを使用中に設定するとともに前記ローカルキャッシュ管理領域上のローカル管理情報エントリを割り当てて当該ローカル管理情報エントリで当該キャッシュページを使用中に設定し、当該キャッシュページが他のホストディレクタで使用中である場合には当該共有管理情報エントリの待ちキューに自ホストディレクタ識別子を蓄積し他のホストディレクタに当該キャッシュページのクローズ要求を送信した後に当該共有管理情報エントリで当該キャッシュページを使用中に設定するとともに当該ローカル管理情報エントリを割り当てて当該ローカル管理情報エントリで当該キャッシュページを使用中に設定し、当該キャッシュページが自ホストディレクタで使用中である場合には当該共有管理情報エントリでの当該キャッシュページの使用中設定処理を省略して当該ローカル管理情報エントリで当該キャッシュページを使用中に設定するキャッシュページのオープン処理と、当該キャッシュページを使用し終わった後に当該共有管理情報エントリの待ちキューを参照して当該キャッシュページの使用の競合をチェックし、競合がある場合には当該共有管理情報エントリでの当該キャッシュページの使用中を解除するとともに当該ローカル管理情報エントリの割り当てを解除し、競合がない場合には当該共通管理情報エントリで当該キャッシュページの使用中を解除せずに当該ローカル管理情報エントリで当該キャッシュページの使用中を解除して当該キャッシュページをオープンしたままの定常オープン状態とするキャッシュページのクローズ処理と、他のホストディレクタから当該キャッシュページのクローズ要求を受信したときに当該キャッシュページが使用中でない場合には当該共有管理情報エントリで当該キャッシュページの使用中を解除するとともに当該ローカル管理情報エントリの割り当てを解除するクローズ要求受信処理とを含むことを特徴とする。
【００１０】
さらに、本発明のディスクアレイ装置のディスクキャッシュ管理方法は、物理ディスクアレイと、１つ以上のディスクディレクタと、複数のホストディレクタと、これらディスクディレクタおよびホストディレクタから共有される共有メモリとを備え、前記共有メモリ上のキャッシュ管理領域に、前記共有メモリ上のキャッシュページ領域にキャッシュインされるキャッシュページに１対１で対応している共有管理情報エントリと、全共有管理情報エントリ中のキャッシュページに割り当てられている共有管理情報エントリをアドレスで検索可能にするようにリンクを形成する共有検索テーブルと、全共有管理情報エントリの中でキャッシュページに割り当てられているが使用中でない共有管理情報エントリを双方向にリンクする共有割り当てリンクを形成する起点となる共有割り当てリンクＭＲＵポインタおよび共有割り当てリンクＬＲＵポインタと、全共有管理情報エントリの中でキャッシュページに割り当てられていない共有管理情報エントリを双方向にリンクする共有未割り当てリンクを形成する起点となる共有未割り当てリンクＭＲＵポインタおよび共有未割り当てリンクＬＲＵポインタとが設けられているディスクアレイ装置のディスクキャッシュ管理方法において、各ホストディレクタにローカルメモリを搭載し、各ローカルメモリ上のローカルキャッシュ管理領域に、前記共有メモリ上のキャッシュページ領域にキャッシュインされるキャッシュページに１対１で対応しているローカル管理情報エントリと、全ローカル管理情報エントリ中のキャッシュページに割り当てられているローカル管理情報エントリをアドレスで検索可能にするようにリンクを形成するローカル検索テーブルと、全ローカル管理情報エントリの中でキャッシュページに割り当てられているが使用中でないローカル管理情報エントリを双方向にリンクするローカル割り当てリンクを形成する起点となるローカル割り当てリンクＭＲＵポインタおよびローカル割り当てリンクＬＲＵポインタと、全ローカル管理情報エントリの中でキャッシュページに割り当てられていないローカル管理情報エントリを双方向にリンクするローカル未割り当てリンクを形成する起点となるローカル未割り当てリンクＭＲＵポインタおよびローカル未割り当てリンクＬＲＵポインタとを設け、ホストからリード／ライトコマンドを受領したときに当該アドレスに対応する当該キャッシュページに共有管理情報エントリが割り当てられているかどうかを共有検索テーブルから検索する工程と、共有管理情報エントリが割り当てられていなかった場合に当該キャッシュページに共有管理情報エントリを割り当て、当該共有管理情報エントリで当該キャッシュページを使用中に設定し、当該キャッシュページにローカル管理情報エントリを割り当て、当該ローカル管理情報エントリで当該キャッシュページを使用中に設定する工程と、共有管理情報エントリが割り当てられていた場合に当該共有管理情報エントリで当該キャッシュページが使用中かどうかをチェックする工程と、当該キャッシュページが使用中でない場合に当該共有管理情報エントリで当該キャッシュページを使用中に設定し、当該キャッシュページにローカル管理情報エントリを割り当て、当該ローカル管理情報エントリで当該キャッシュページを使用中に設定する工程と、当該キャッシュページが他のホストディレクタで使用中である場合に、当該共有管理情報エントリの待ちキューに蓄積し、他のホストディレクタに当該キャッシュページのクローズを要求し、当該共有管理情報エントリで当該キャッシュページの使用中が解除されるのを待って、当該共有管理情報エントリで当該キャッシュページを使用中に設定し、当該キャッシュページにローカル管理情報エントリを割り当て、当該ローカル管理情報エントリで当該キャッシュページを使用中に設定する工程と、当該キャッシュページが自ホストディレクタで使用中である場合に当該共有管理情報エントリの待ちキューを参照して当該キャッシュページの使用の競合をチェックする工程と、当該共有管理情報エントリで当該キャッシュページの使用の競合がある場合に当該共有管理情報エントリの待ちキューに蓄積し、当該共有管理情報エントリで当該キャッシュページの使用中が解除されるのを待って、当該共有管理情報エントリで当該キャッシュページを使用中に設定し、当該キャッシュページにローカル管理情報エントリを割り当て、当該ローカル管理情報エントリで当該キャッシュページを使用中に設定する工程と、当該共有管理情報エントリで当該キャッシュページの使用の競合がない場合に前記ローカル検索テーブルから当該ローカル管理情報エントリを検索し、当該ローカル管理情報エントリで当該キャッシュページの使用の競合をチェックする工程と、当該ローカル管理情報エントリで当該キャッシュページの使用の競合がある場合に当該ローカル管理情報エントリの待ちキューに蓄積し、当該ローカル管理情報エントリで当該キャッシュページの使用中が解除されるのを待って、当該ローカル管理情報エントリで当該キャッシュページを使用中に設定する工程と、当該ローカル管理情報エントリで当該キャッシュページの使用の競合がない場合に当該共有管理情報エントリで当該キャッシュページを使用中に設定することなしに当該ローカル管理情報エントリで当該キャッシュページを使用中に設定する工程とを含むキャッシュページのオープン処理と、ホストからのリード／ライトコマンド処理においてホスト，キャッシュページ領域間のデータ転送を完了したときに当該共有管理情報エントリの待ちキューを参照して当該キャッシュページの使用の競合をチェックする工程と、使用の競合がある場合に当該共有管理情報エントリで当該キャッシュページの使用中を解除し、当該ローカル管理情報エントリの割り当てを解除する工程と、使用の競合がない場合に前記ローカル検索テーブルから当該ローカル管理情報エントリを検索し、当該ローカル管理情報エントリで当該キャッシュページの使用中を解除する工程とを含むキャッシュページのクローズ処理と、他のホストディレクタからキャッシュページのクローズ要求を受信したときに前記ローカル検索テーブルから当該ローカル管理情報エントリを検索する工程と、当該ローカル管理情報エントリが検索された場合に当該ローカル管理情報エントリで当該キャッシュページの使用中をチェックする工程と、当該キャッシュページが使用中でなかった場合に当該共有管理情報エントリで当該キャッシュページの使用中を解除し、当該ローカル管理情報エントリの割り当てを解除する工程とを含むクローズ要求受信処理とからなること特徴とする。
【００１１】
さらにまた、本発明のディスクアレイ装置のディスクキャッシュ管理方法は、前記ローカルキャッシュ管理領域に、前記ローカル割り当てリンクにリンクされたローカル管理情報エントリの数をカウントするローカル割り当てリンクカウンタを設け、前記キャッシュページのクローズ処理において、前記ローカル割り当てリンクカウンタのカウント値が、前記共有管理情報エントリで使用中に設定され前記ローカル管理情報エントリで使用中を解除された定常オープン状態のキャッシュページの最大ページ数を超えた場合に、前記ローカル割り当てリンクから当該ローカル管理情報エントリをＬＲＵ制御で追い出して前記ローカル割り当てリンクにリンクインし、当該共有管理情報で当該キャッシュページの使用中を解除する工程を含むことを特徴とする。
【００１２】
また、本発明のディスクアレイ装置のディスクキャッシュ管理方法は、前記定常オープン状態のキャッシュページの最大ページ数が、全キャッシュページのうちのある割合を定常オープン状態のキャッシュページの最大割合とし、それを搭載されているホストディレクタの数で分割して決定することを特徴とする。
【００１３】
さらに、本発明のディスクアレイ装置のディスクキャッシュ管理方法は、前記定常オープン状態のキャッシュページの最大ページ数が、全キャッシュページのうちのある割合を定常オープン状態のキャッシュページの最大割合とし、それに全アクセス頻度に対する自ホストディレクタのアクセス頻度の割合をかけた値であることを特徴とする。
【００１４】
さらにまた、本発明のディスクアレイ装置のディスクキャッシュ管理方法は、前記定常オープン状態のキャッシュページの最大ページ数が、全キャッシュページのうちのある割合を定常オープン状態のキャッシュページの最大割合とし、それに全アクセス頻度に対する自ホストディレクタのアクセス頻度の割合をかけた値に、さらに優先度の重みをかけた値であることを特徴とする。
【００１５】
また、本発明のディスクアレイ装置のディスクキャッシュ管理方法は、前記共有管理情報エントリが、キャッシュページに物理ディスクアレイ上のどのデータがキャッシュページに割り当てられているかを示す割り当てアドレスと、共有検索テーブルとリンクを張る順方向ポインタおよび逆方向ポインタと、共有割り当てリンクＭＲＵポインタおよび共有割り当てリンクＬＲＵポインタまたは共有未割り当てリンクＭＲＵポインタおよび共有未割り当てリンクＬＲＵポインタを起点とする双方向リンクである共有割り当てリンクまたは共有未割り当てリンクを形成する順方向ポインタおよび逆方向ポインタと、使用中フラグおよびホストディレクタ識別子を登録する使用中情報と、当該キャッシュページの使用を待っている他のホストディレクタのホストディレクタ識別子を蓄積する待ちキューとを含んでいることを特徴とする。
【００１６】
また、本発明のディスクアレイ装置のディスクキャッシュ管理方法は、前記ローカル管理情報エントリが、キャッシュページに物理ディスクアレイ上のどのデータがキャッシュページに割り当てられているかを示す割り当てアドレスと、当該キャッシュページのページ識別子と、ローカル検索テーブルとリンクを張る順方向ポインタおよび逆方向ポインタと、ローカル割り当てリンクＭＲＵポインタおよびローカル割り当てリンクＬＲＵポインタまたはローカル未割り当てリンクＭＲＵポインタおよびローカル未割り当てリンクＬＲＵポインタを起点とする双方向リンクであるローカル割り当てリンクまたはローカル未割り当てリンクを形成する順方向ポインタおよび逆方向ポインタと、使用中フラグおよびタスク識別子を登録する使用中情報と、当該キャッシュページの使用を待っている他の処理タスクのタスク識別子を蓄積する待ちキューとを含んでいることを特徴とする。
【００１７】
一方、本発明のディスクアレイ装置は、複数のホストディレクタと、これらホストディレクタから共有されディスクキャッシュの役目をする共有メモリとを搭載するディスクアレイ装置において、各ホストディレクタが、ホストと接続されるポートと、該ポートを介して前記ホストに接続されるとともにバスを介して前記共有メモリに接続されるコントローラと、該コントローラに接続され前記共有メモリ上の定常オープン状態のキャッシュページを使用中フラグおよび前記各ホストディレクタを識別する識別子に基づいて管理するローカルキャッシュ管理領域が設けられたローカルメモリとを備えることを特徴とする。
【００１８】
また、本発明のディスクアレイ装置は、物理ディスクアレイと、１つ以上のディスクディレクタと、複数のホストディレクタと、これらディスクディレクタおよびホストディレクタから共有される共有メモリとを備え、前記共有メモリ上のキャッシュ管理領域に、前記共有メモリ上のキャッシュページ領域にキャッシュインされるキャッシュページに１対１で対応している共有管理情報エントリと、全共有管理情報エントリ中のキャッシュページに割り当てられている共有管理情報エントリをアドレスで検索可能にするようにリンクを形成する共有検索テーブルと、全共有管理情報エントリの中でキャッシュページに割り当てられているが使用中でない共有管理情報エントリを双方向にリンクする共有割り当てリンクを形成する起点となる共有割り当てリンクＭＲＵポインタおよび共有割り当てリンクＬＲＵポインタと、全共有管理情報エントリの中でキャッシュページに割り当てられていない共有管理情報エントリを双方向にリンクする共有未割り当てリンクを形成する起点となる共有未割り当てリンクＭＲＵポインタおよび共有未割り当てリンクＬＲＵポインタとが設けられているディスクアレイ装置において、各ホストディレクタにローカルメモリを搭載し、前記ローカルメモリ上のローカルキャッシュ管理領域に、前記共有メモリ上のキャッシュページ領域にキャッシュインされるキャッシュページに１対１で対応しているローカル管理情報エントリと、全ローカル管理情報エントリ中のキャッシュページに割り当てられているローカル管理情報エントリをアドレスで検索可能にするようにリンクを形成するローカル検索テーブルと、全ローカル管理情報エントリの中でキャッシュページに割り当てられているが使用中でないローカル管理情報エントリを双方向にリンクするローカル割り当てリンクを形成する起点となるローカル割り当てリンクＭＲＵポインタおよびローカル割り当てリンクＬＲＵポインタと、全ローカル管理情報エントリの中でキャッシュページに割り当てられていないローカル管理情報エントリを双方向にリンクするローカル未割り当てリンクを形成する起点となるローカル未割り当てリンクＭＲＵポインタおよびローカル未割り当てリンクＬＲＵポインタとを設けたことを特徴とする。
【００１９】
さらに、本発明のディスクアレイ装置は、前記共有管理情報エントリが、キャッシュページに物理ディスクアレイ上のどのデータがキャッシュページに割り当てられているかを示す割り当てアドレスと、共有検索テーブルとリンクを張る順方向ポインタおよび逆方向ポインタと、共有割り当てリンクＭＲＵポインタおよび共有割り当てリンクＬＲＵポインタまたは共有未割り当てリンクＭＲＵポインタおよび共有未割り当てリンクＬＲＵポインタを起点とする双方向リンクである共有割り当てリンクまたは共有未割り当てリンクを形成する順方向ポインタおよび逆方向ポインタと、使用中フラグおよびホストディレクタ識別子を登録する使用中情報と、当該キャッシュページの使用を待っている他のホストディレクタのホストディレクタ識別子を蓄積する待ちキューとを含んでいることを特徴とする。
【００２０】
さらにまた、本発明のディスクアレイ装置は、前記ローカル管理情報エントリが、キャッシュページに物理ディスクアレイ上のどのデータがキャッシュページに割り当てられているかを示す割り当てアドレスと、当該キャッシュページのページ識別子と、ローカル検索テーブルとリンクを張る順方向ポインタおよび逆方向ポインタと、ローカル割り当てリンクＭＲＵポインタおよびローカル割り当てリンクＬＲＵポインタまたはローカル未割り当てリンクＭＲＵポインタおよびローカル未割り当てリンクＬＲＵポインタを起点とする双方向リンクであるローカル割り当てリンクまたはローカル未割り当てリンクを形成する順方向ポインタおよび逆方向ポインタと、使用中フラグおよびタスク識別子を登録する使用中情報と、当該キャッシュページの使用を待っている他の処理タスクのタスク識別子を蓄積する待ちキューとを含んでいることを特徴とする。
【００２１】
他方、本発明のプログラムは、コンピュータに、ホストからのリード／ライトコマンドを受領したときに、当該キャッシュページが使用中でない場合には前記キャッシュ管理領域上の共有管理情報エントリで当該キャッシュページを使用中に設定するとともに前記ローカルキャッシュ管理領域上のローカル管理情報エントリを割り当てて当該ローカル管理情報エントリで当該キャッシュページを使用中に設定し、当該キャッシュページが他のホストディレクタで使用中である場合には当該共有管理情報エントリの待ちキューに自ホストディレクタ識別子を蓄積し他のホストディレクタに当該キャッシュページのクローズ要求を送信した後に当該共有管理情報エントリで当該キャッシュページを使用中に設定するとともに当該ローカル管理情報エントリを割り当てて当該ローカル管理情報エントリで当該キャッシュページを使用中に設定し、当該キャッシュページが自ホストディレクタで使用中である場合には当該共有管理情報エントリでの当該キャッシュページの使用中設定処理を省略して当該ローカル管理情報エントリで当該キャッシュページを使用中に設定するキャッシュページのオープン処理と、当該キャッシュページを使用し終わった後に当該共有管理情報エントリの待ちキューを参照して当該キャッシュページの使用の競合をチェックし、競合がある場合には当該共有管理情報エントリでの当該キャッシュページの使用中を解除するとともに当該ローカル管理情報エントリの割り当てを解除し、競合がない場合には当該共通管理情報エントリで当該キャッシュページの使用中を解除せずに当該ローカル管理情報エントリで当該キャッシュページの使用中を解除して当該キャッシュページをオープンしたままの定常オープン状態とするキャッシュページのクローズ処理と、他のホストディレクタから当該キャッシュページのクローズ要求を受信したときに当該キャッシュページが使用中でない場合には当該共有管理情報エントリで当該キャッシュページの使用中を解除するとともに当該ローカル管理情報エントリの割り当てを解除するクローズ要求受信処理とを実行させることを特徴とする。
【００２２】
また、本発明のプログラムは、コンピュータに、ホストからリード／ライトコマンドを受領したときに当該アドレスに対応する当該キャッシュページに共有管理情報エントリが割り当てられているかどうかを共有検索テーブルから検索する工程と、共有管理情報エントリが割り当てられていなかった場合に当該キャッシュページに共有管理情報エントリを割り当て、当該共有管理情報エントリで当該キャッシュページを使用中に設定し、当該キャッシュページにローカル管理情報エントリを割り当て、当該ローカル管理情報エントリで当該キャッシュページを使用中に設定する工程と、共有管理情報エントリが割り当てられていた場合に当該共有管理情報エントリで当該キャッシュページが使用中かどうかをチェックする工程と、当該キャッシュページが使用中でない場合に当該共有管理情報エントリで当該キャッシュページを使用中に設定し、当該キャッシュページにローカル管理情報エントリを割り当て、当該ローカル管理情報エントリで当該キャッシュページを使用中に設定する工程と、当該キャッシュページが他のホストディレクタで使用中である場合に、当該共有管理情報エントリの待ちキューに蓄積し、他のホストディレクタに当該キャッシュページのクローズを要求し、当該共有管理情報エントリで当該キャッシュページの使用中が解除されるのを待って、当該共有管理情報エントリで当該キャッシュページを使用中に設定し、当該キャッシュページにローカル管理情報エントリを割り当て、当該ローカル管理情報エントリで当該キャッシュページを使用中に設定する工程と、当該キャッシュページが自ホストディレクタで使用中である場合に当該共有管理情報エントリの待ちキューを参照して当該キャッシュページの使用の競合をチェックする工程と、当該共有管理情報エントリで当該キャッシュページの使用の競合がある場合に当該共有管理情報エントリの待ちキューに蓄積し、当該共有管理情報エントリで当該キャッシュページの使用中が解除されるのを待って、当該共有管理情報エントリで当該キャッシュページを使用中に設定し、当該キャッシュページにローカル管理情報エントリを割り当て、当該ローカル管理情報エントリで当該キャッシュページを使用中に設定する工程と、当該共有管理情報エントリで当該キャッシュページの使用の競合がない場合に前記ローカル検索テーブルから当該ローカル管理情報エントリを検索し、当該ローカル管理情報エントリで当該キャッシュページの使用の競合をチェックする工程と、当該ローカル管理情報エントリで当該キャッシュページの使用の競合がある場合に当該ローカル管理情報エントリの待ちキューに蓄積し、当該ローカル管理情報エントリで当該キャッシュページの使用中が解除されるのを待って、当該ローカル管理情報エントリで当該キャッシュページを使用中に設定する工程と、当該ローカル管理情報エントリで当該キャッシュページの使用の競合がない場合に当該共有管理情報エントリで当該キャッシュページを使用中に設定することなしに当該ローカル管理情報エントリで当該キャッシュページを使用中に設定する工程とを含むキャッシュページのオープン処理と、ホストからのリード／ライトコマンド処理においてホスト，キャッシュページ領域間のデータ転送を完了したときに当該共有管理情報エントリの待ちキューを参照して当該キャッシュページの使用の競合をチェックする工程と、使用の競合がある場合に当該共有管理情報エントリで当該キャッシュページの使用中を解除し、当該ローカル管理情報エントリの割り当てを解除する工程と、使用の競合がない場合に前記ローカル検索テーブルから当該ローカル管理情報エントリを検索し、当該ローカル管理情報エントリで当該キャッシュページの使用中を解除する工程とを含むキャッシュページのクローズ処理と、他のホストディレクタからキャッシュページのクローズ要求を受信したときに前記ローカル検索テーブルから当該ローカル管理情報エントリを検索する工程と、当該ローカル管理情報エントリが検索された場合に当該ローカル管理情報エントリで当該キャッシュページの使用中をチェックする工程と、当該キャッシュページが使用中でなかった場合に当該共有管理情報エントリで当該キャッシュページの使用中を解除し、当該ローカル管理情報エントリの割り当てを解除する工程とを含むクローズ要求受信処理とを実行させることを特徴とする。
【００２３】
本発明のディスクアレイ装置のディスクキャッシュ管理方法では、キャッシュページをオープン処理して使用し終わったデータ転送終了後でも当該キャッシュページをクローズ処理せずにオープンしたままの定常オープン状態としておき、次に同一のホストディレクタから当該キャッシュページへのアクセスがあった場合に当該キャッシュページがすでにオープンされているので、当該キャッシュページのオープン処理を省略できるようにする。これにより、アクセス時間の比較的長い共有メモリ上のキャッシュページのクローズ処理およびオープン処理が１回ずつ省略され、平均レスポンス時間が短縮される。
【００２４】
上記を実現するために、各ホストディレクタがアクセス時間の短いローカルメモリ上に、定常オープン状態のキャッシュページを管理するローカルキャッシュ管理領域を持つ必要がある。ローカルキャッシュ管理領域は、定常オープン状態のキャッシュページに対応する十分な量のローカル管理情報エントリを持ち、これらローカル管理情報エントリがローカル割り当てリンクを形成できることが必要である。ホストディレクタは、ローカルキャッシュ管理領域を用いて定常オープン状態のキャッシュページのＬＲＵ管理を行う。すなわち、定常オープン状態のキャッシュページを新しく追加するときに、当該ホストディレクタによる定常オープン状態のキャッシュページのうち、アクセス履歴のもっとも古いキャッシュページを定常オープン状態から追い出していくことにより、定常オープン状態のキャッシュページを最大ページ数までに制限する。また、定常オープン状態のキャッシュページを他のホストディレクタが使いたいときのために、キャッシュページのクローズ要求を通信する手順が必要となる。定常オープン状態のキャッシュページの最大ページ数は、全キャッシュページのうちのある割合を定常オープン状態のキャッシュページの最大割合とし、それを搭載されているホストディレクタの数で分割して決定する必要がある。
【００２５】
上記の構成により、ホストディレクタは、キャッシュページの使用後に、共有メモリ上の状態としては当該キャッシュページをクローズ処理せず、ローカルメモリ上のローカルキャッシュ管理領域でキャッシュメモリ上の当該キャッシュページの定常オープン状態を管理する。逆に、定常オープン状態のキャッシュページを使用するときには、共有メモリ上の状態としてはすでにオープンしているので共有メモリ上の状態は変更せず、ローカルメモリ上の状態だけの管理で、キャッシュページのオープン処理を完了する。また、定常オープン状態のキャッシュページの数が最大ページ数に収まるように、そして、定常オープン状態のキャッシュページのヒット率をより高くするために、定常オープン状態のキャッシュページのＬＲＵ制御を行う。これらの制御による結果、キャッシュヒット時の処理における共有メモリへのアクセス回数が削減されるため、平均レスポンス時間が短縮され、性能が向上する。
【００２６】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【００２７】
［第１の実施の形態］
図１は、本発明の第１の実施の形態に係るディスクキャッシュ管理方法が適用されるディスクアレイ装置の構成を示すブロック図である。このディスクアレイ装置は、複数（図示は３つ）のホスト１１ａ，１１ｂ，１１ｃがチャネル１６ａ，１６ｂ，１６ｃをそれぞれ介して接続された複数（図示は３つ）のホストディレクタ１２ａ，１２ｂ，１２ｃと、ホストディレクタ１２ａ，１２ｂ，１２ｃにバス１７を介して接続された複数（図示は２つ）のディスクディレクタ１３ａ，１３ｂと、ディスクディレクタ１３ａ，１３ｂに接続された物理ディスクアレイ１４と、バス１７を介してホストディレクタ１２ａ，１２ｂ，１２ｃおよびディスクディレクタ１３ａ，１３ｂに接続された共有メモリ１５とから、その主要部が構成されている。
【００２８】
各ホストディレクタ１２ａ，１２ｂ，１２ｃは、ポート１２１ａ，１２１ｂ，１２１ｃと、コントローラ１２２ａ，１２２ｂ，１２２ｃと、ローカルメモリ１２３ａ，１２３ｂ，１２３ｃとを含んで構成されている。
【００２９】
ポート１２１ａ，１２１ｂ，１２１ｃは、チャネル１６ａ，１６ｂ，１６ｃを介してホスト１１ａ，１１ｂ，１１ｃにそれぞれ接続されている。
【００３０】
コントローラ１２２ａ，１２２ｂ，１２２ｃは、マイクロコンピュータ，プログラムＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）等を内蔵して並列に処理を行うことができ、ポート１２１ａ，１２１ｂ，１２１ｃおよびローカルメモリ１２３ａ，１２３ｂ，１２３ｃに接続されているとともに、バス１７を介して共有メモリ１５に接続されている。このため、コントローラ１２２ａ，１２２ｂ，１２２ｃは、ローカルメモリ１２３ａ，１２３ｂ，１２３ｃを高速にアクセスすることができるとともに、共有メモリ１５にバス１７を介してアクセスすることができる。
【００３１】
ローカルメモリ１２３ａ，１２３ｂ，１２３ｃは、コントローラ１２２ａ，１２２ｂ，１２２ｃにそれぞれ接続されている。
【００３２】
共有メモリ１５は、キャッシュページとしてデータを保持するキャッシュページ領域１５２と、キャッシュページ領域１５２上のキャッシュページを管理するためのキャッシュ管理領域１５１とを持つ。共有メモリ１５は、すべてのホストディレクタ１２ａ，１２ｂ，１２ｃからアクセスすることができる一方で、ローカルメモリ１２３ａ，１２３ｂ，１２３ｃに比べると必然的にアクセス速度が遅い。
【００３３】
チャネル１６ａ，１６ｂ，１６ｃは、たとえば、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ），ファイバチャネル等で形成されている。
【００３４】
バス１７は、クロスバースイッチ，ファイバチャネル等で形成されている。
【００３５】
図２は、共有メモリ１５上のキャッシュ管理領域１５１の内容をより詳細に示す図である。キャッシュ管理領域１５１には、共有メモリ１５上のキャッシュページ領域１５２にキャッシュインされるキャッシュページに１対１で対応している共有管理情報エントリ２６１〜２６９と、共有管理情報エントリ２６１〜２６９中の実際にキャッシュページに割り当てられている共有管理情報エントリ２６１〜２６６をアドレスで検索可能にするようにリンクを形成する共有検索テーブル２１と、共有管理情報エントリ２６１〜２６９の中でキャッシュページに割り当てられているが使用中でない共有管理情報エントリ２６１〜２６５を双方向にリンクする共有割り当てリンク［２２，…，２３］を形成する起点となる共有割り当てリンクＭＲＵ（Ｍｏｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）ポインタ２２および共有割り当てリンクＬＲＵポインタ２３と、共有管理情報エントリ２６１〜２６９の中でキャッシュページに割り当てられていない共有管理情報エントリ２６７〜２６９を双方向にリンクする共有未割り当てリンク［２４，…，２５］を形成する起点となる共有未割り当てリンクＭＲＵポインタ２４および共有未割り当てリンクＬＲＵポインタ２５とが設けられている。
【００３６】
各共有管理情報エントリ２６１〜２６９は、キャッシュページに物理ディスクアレイ１４上のどのデータが割り当てられているかを示す割り当てアドレスと、共有検索テーブル２１とリンクを張る順方向ポインタおよび逆方向ポインタと、共有割り当てリンクＭＲＵポインタ２２および共有割り当てリンクＬＲＵポインタ２３を起点とする双方向リンクである共有割り当てリンク［２２，…，２３］または共有未割り当てリンクＭＲＵポインタ２４および共有未割り当てリンクＬＲＵポインタ２５を起点とする双方向リンクである共有未割り当てリンク［２４，…，２５］を形成する順方向ポインタおよび逆方向ポインタと、使用中フラグおよびホストディレクタ識別子を登録する使用中情報と、当該キャッシュページの使用を待っている他のホストディレクタのホストディレクタ識別子を蓄積する待ちキューとを含んでいる。
【００３７】
共有管理情報エントリ２６１〜２６９の中でキャッシュページに割り当てられているが使用中でない共有管理情報エントリ２６１〜２６５は、共有割り当てリンクＭＲＵポインタ２２および共有割り当てリンクＬＲＵポインタ２３を起点とする双方向リンクである共有割り当てリンク［２２，…，２３］を形成している。
【００３８】
共有管理情報エントリ２６１〜２６９の中でキャッシュページに割り当てられていない共有管理情報エントリ２６７〜２６９は、共有未割り当てリンクＭＲＵポインタ２４および共有未割り当てリンクＬＲＵポインタ２５を起点とする双方向リンクである共有未割り当てリンク［２４，…，２５］を形成している。
【００３９】
共有管理情報エントリ２６１〜２６９の中で実際にキャッシュページに割り当てられている共有管理情報エントリ２６１〜２６６は、共有検索テーブル２１からリンクを形成し、アドレスでの検索が可能になっている。ただし、図２では、煩雑にならないように共有管理情報エントリ２６１のみを共有検索テーブル２１から矢印でリンクが形成されていることを示している。実際には、共有管理情報エントリ２６２〜２６６も共有検索テーブル２１からリンクを形成されている。共有管理情報エントリ２６６は、使用中である期間は、共有割り当てリンク［２２，…，２３］から外されることにより、追い出し処理の対象外となる。
【００４０】
共有管理情報エントリ２６６の使用中情報には、当該キャッシュページが使用中のとき、使用フラグおよび使用中のホストディレクタのホストディレクタ識別子が登録される。ただし、共有管理情報エントリ２６６における使用中の状態は定常オープン状態も含んでおり、他のホストディレクタからみると使用中に見えるが、実際にコマンド処理で使用している最中であることを示すわけではない。
【００４１】
待ちキューは、使用中のキャッシュページが割り当てられている共有管理情報エントリに対して、次に使用するために予約しているホストディレクタ識別子を蓄積する。当該キャッシュページを使用中のホストディレクタ１２は、待ちキューのホストディレクタ識別子により、使用後の処理を選択する。
【００４２】
図３は、ローカルメモリ１２３ａ，１２３ｂ，１２３ｃ上のローカルキャッシュ管理領域１２４ａ，１２４ｂ，１２４ｃの内容をより詳細に示す図である。ローカルキャッシュ管理領域１２４ａ，１２４ｂ，１２４ｃには、共有メモリ１５上のキャッシュページ領域１５２にキャッシュインされるキャッシュページに１対１で対応しているローカル管理情報エントリ３６１〜３６９と、ローカル管理情報エントリ３６１〜３６９中の実際にキャッシュページに割り当てられているローカル管理情報エントリ３６１〜３６６をアドレスで検索可能にするようにリンクを形成するローカル検索テーブル３１と、ローカル管理情報エントリ３６１〜３６９の中でキャッシュページに割り当てられているが使用中でないローカル管理情報エントリ３６１〜３６５を双方向にリンクするローカル割り当てリンク［３２，…，３３］を形成する起点となるローカル割り当てリンクＭＲＵポインタ３２およびローカル割り当てリンクＬＲＵポインタ３３と、ローカル管理情報エントリ３６１〜３６９の中でキャッシュページに割り当てられていないローカル管理情報エントリ３６７〜３６９を双方向にリンクするローカル未割り当てリンク［３４，…，３５］を形成する起点となるローカル未割り当てリンクＭＲＵポインタ３４およびローカル未割り当てリンクＬＲＵポインタ３５と、ローカル割り当てリンク［３２，…，３３］にリンクされているローカル管理情報エントリの数を常時管理しているローカル割り当てリンクカウンタ３７とが設けられている。
【００４３】
各ローカル管理情報エントリ３６１〜３６９は、共有メモリ１５上のキャッシュページ領域１５２にキャッシュインされたキャッシュページのうち、当該ホストディレクタによる定常オープン状態のキャッシュページと動的に対応しており、キャッシュページに物理ディスクアレイ１４上のどのデータが割り当てられているかを示す割り当てアドレスと、どのキャッシュページと対応しているかを示すページ識別子と、ローカル検索テーブル３１とリンクを張る順方向ポインタおよび逆方向ポインタと、ローカル割り当てリンクＭＲＵポインタ３２およびローカル割り当てリンクＬＲＵポインタ３３を起点とする双方向リンクであるローカル割り当てリンク［３２，…，３３］またはローカル未割り当てリンクＭＲＵポインタ３４およびローカル未割り当てリンクＬＲＵポインタ３５を起点とする双方向リンクであるローカル未割り当てリンク［３４，…，３５］を形成する順方向ポインタおよび逆方向ポインタと、使用中フラグおよびタスク識別子を登録する使用中情報と、当該キャッシュページの使用を待っている他のタスク処理のタスク識別子を蓄積する待ちキューとを含んでいる。
【００４４】
ローカル管理情報エントリ３６１〜３６９の中でキャッシュページに割り当てられているが使用中でないローカル管理情報エントリ３６１〜３６５は、ローカル割り当てリンクＭＲＵポインタ３２およびローカルリンクＬＲＵポインタ３３を起点とする双方向リンクであるローカル割り当てリンク［３２，…，３３］を形成している。ローカル割り当てリンク［３２，…，３３］に関しては、リンクされているローカル管理情報エントリの数をローカル割り当てリンクカウンタ３７により常時管理している。
【００４５】
ローカル管理情報エントリ３６１〜３６９の中でキャッシュページに割り当てられていないローカル管理情報エントリ３６７〜３６９は、ローカル未割り当てリンクＭＲＵポインタ３４およびローカル未割り当てリンクＬＲＵポインタ３５を起点とする双方向リンクであるローカル未割り当てリンク［３４，…，３５］を形成している。
【００４６】
ローカル管理情報エントリ３６１〜３６９の中で実際にキャッシュページに割り当てられているローカル管理情報エントリ３６１〜３６６は、ローカル検索テーブル３１からリンクを形成し、アドレスでの検索が可能になっている。ただし、図３では、煩雑にならないように、ローカル管理情報エントリ３６１のみをローカル検索テーブル３１から矢印でリンクが形成されていることを示している。実際には、ローカル管理情報エントリ３６２〜３６６もローカル検索テーブル３１からリンクを形成されている。ローカル管理情報エントリ３６６は、使用中である期間は、ローカル割り当てリンク［３２，…，３３］から外されることにより、追い出し処理の対象外となる。
【００４７】
ローカル管理情報エントリ３６６の使用中情報には、当該キャッシュページが使用中のとき、使用フラグおよび使用中の処理タスクのタスク識別子が登録される。このとき、各ローカル管理情報エントリ３６１〜３６９の使用中情報により、当該キャッシュページが自ホストディレクタ内のある処理タスクにより実際に使用中であることを示す。
【００４８】
待ちキューは、使用中のキャッシュページが割り当てられているローカル管理情報エントリ３６６に対して、次に使用するために予約する処理タスクのタスク識別子を蓄積する。当該キャッシュページを使用中の処理タスクは、待ちキューのタスク識別子に応じて、使用後の処理を選択する。
【００４９】
図４は、第１の実施の形態に係るディスクキャッシュ管理方法が適用されるディスクアレイ装置において、ホストからのリード／ライトコマンドを受領したときのホストディレクタにおけるキャッシュページのオープン処理を示すフローチャートである。このキャッシュページのオープン処理は、キャッシュページオープン処理開始ステップ４１１と、共有検索テーブル検索ステップ４１２と、共有管理情報エントリでの使用中チェックステップ４１３と、共有管理情報エントリでの競合チェックステップ４１４と、ローカル検索テーブル検索ステップ４１５と、ローカル管理情報エントリでの競合チェックステップ４１６と、ローカル管理情報エントリでの使用中設定処理ステップ４１７と、ローカル管理情報エントリ待ちキュー蓄積ステップ４１８と、ローカル管理情報エントリ使用中解除待ちステップ４１９と、共有管理情報エントリ待ちキュー蓄積ステップ４２０と、共有管理情報エントリ待ちキュー蓄積ステップ４２１と、クローズ要求送信ステップ４２２と、共有管理情報エントリでの使用中解除待ちステップ４２３と、共有管理情報エントリでの使用中設定処理ステップ４２４と、ローカル管理情報エントリ割り当て処理ステップ４２５と、共有管理情報エントリ割り当て処理ステップ４２６と、キャッシュページオープン処理完了ステップ４２７とからなる。
【００５０】
図５は、データ転送終了後のキャッシュページのクローズ処理を示すフローチャートである。キャッシュページのクローズ処理は、キャッシュページクローズ処理開始ステップ５１１と、共有管理情報エントリでの競合チェックステップ５１２と、ローカル検索テーブル検索ステップ５１３と、ローカル管理情報エントリでの使用中解除処理ステップ５１４と、ローカル割り当てリンクカウンタチェックステップ５１５と、ローカル管理情報エントリ追い出し処理ステップ５１６と、共有管理情報エントリでの使用中解除処理ステップ５１７と、共有管理情報エントリでの使用中解除処理ステップ５１８と、ローカル管理情報エントリ割り当て解除処理ステップ５１９と、キャッシュページクローズ処理完了ステップ５２０とからなる。
【００５１】
図６は、キャッシュページのクローズ要求を受信したときのクローズ要求受信処理を示すフローチャートである。このクローズ要求受信処理は、キャッシュページクローズ要求受信ステップ６１１と、ローカル検索テーブル検索ステップ６１２と、ローカル管理情報エントリでの使用中チェックステップ６１３と、共有管理情報エントリでの使用中解除処理ステップ６１４と、ローカル管理情報エントリ割り当て解除処理ステップ６１５と、キャッシュページクローズ処理完了ステップ６１６とからなる。
【００５２】
次に、このように構成された第１の実施の形態に係るディスクアレイ装置のディスクキャッシュ管理方法の処理手順について、図１ないし図６を参照しながら説明する。以下、リード／ライトコマンドを送信するホストをホスト１１ａ、リード／ライトコマンドを受領するホストディレクタをホストディレクタ１２ａとして説明する。
【００５３】
（１）  ホスト１１ａからのリード／ライトコマンドを受領したときのホストディレクタ１２ａにおけるキャッシュページのオープン処理（図４参照）
【００５４】
ホストディレクタ１２ａは、ホスト１１ａからリード／ライトコマンドを受領すると、リード／ライトコマンドのアクセスアドレス（当該アドレス）に対応するキャッシュページのオープン処理を開始する（ステップ４１１）。
【００５５】
まず、ホストディレクタ１２ａは、当該アドレスに対応するキャッシュページ（当該キャッシュページ）に共有管理情報エントリが割り当てられているかどうかを共有検索テーブル２１から検索する（ステップ４１２）。この検索処理では、当該アドレスを所定のハッシュ関数でハッシュして得られたキーで共有検索テーブル２１を索引し、得られた順方向ポインタおよび逆方向ポインタでリンクされる共有管理情報エントリを検索する。
【００５６】
ステップ４１２の検索において当該キャッシュページに共有管理情報エントリが割り当てられておらずにミスヒットとなった場合、当該キャッシュページの物理ディスクアレイ１４から共有メモリ１５上のキャッシュページ領域１５２へのキャッシュイン後に、ホストディレクタ１２ａは、当該キャッシュページへの共有管理情報エントリの割り当て処理を行う（ステップ４２６）。この割り当て処理では、共有未割り当てリンク［２４，…，２５］に未割り当ての共有管理情報エントリがあれば、当該共有管理情報エントリを当該キャッシュページに割り当て、共有未割り当てリンク［２４，…，２５］に未割り当ての共有管理情報エントリがなければ、共有割り当てリンク［２２，…，２３］からの共有管理情報エントリの追い出し処理（ＬＲＵ制御）により未割り当ての共有管理情報エントリを得て、当該共有管理情報エントリを共有検索テーブル２１にリンクさせるとともに、当該共有管理情報エントリを共有割り当てリンク［２２，…，２３］にリンクインすることにより当該キャッシュページに当該共有管理情報エントリを割り当てる。この後、ホストディレクタ１２ａは、ステップ４２４に制御を移す。
【００５７】
ステップ４１２の検索において当該キャッシュページに共有管理情報エントリがすでに割り当てられていてヒットした場合には、ホストディレクタ１２ａは、当該共有管理情報エントリの使用中情報における使用中フラグおよびホストディレクタ識別子に基づいて当該キャッシュページの使用中チェックを行う（ステップ４１３）。
【００５８】
ステップ４１３の使用中チェックにおいて当該共有管理情報エントリの使用中情報に使用中フラグが登録されておらず当該キャッシュページが使用中でない場合、ホストディレクタ１２ａは、ステップ４２４に制御を移す。
【００５９】
ステップ４１３の使用中チェックにおいて当該共有管理情報エントリの使用中情報に使用中フラグおよび他のホストディレクタ識別子が登録されていて当該キャッシュページが他のホストディレクタによって使用中である場合、ホストディレクタ１２ａは、当該共有管理情報エントリの待ちキューに自ホストディレクタ識別子を蓄積する（ステップ４２１）。実際には、待ちキューにすでに他のホストディレクタ識別子が蓄積されているので、その最後尾に蓄積する。
【００６０】
次に、ホストディレクタ１２ａは、当該共有管理情報エントリの使用中情報に登録されているホストディレクタ識別子が示す当該キャッシュページを使用中のホストディレクタに当該キャッシュページのクローズ要求を送信する（ステップ４２２）。
【００６１】
続いて、ホストディレクタ１２ａは、当該キャッシュページの使用中が解除されるのを待ち（ステップ４２３）、使用中が解除されたならばステップ４２４に制御を移す。
【００６２】
ステップ４１３の使用中チェックにおいて当該共有管理情報エントリの使用中情報に使用中フラグおよび自ホストディレクタ識別子が登録されていて当該キャッシュページが自ホストディレクタ１２ａによって使用中である場合、ホストディレクタ１２ａは、当該共有管理情報エントリの待ちキューを参照して当該キャッシュページの使用の競合チェックを行う（ステップ４１４）。この競合チェックでは、当該共有管理情報エントリの待ちキューにホストディレクタ識別子が１つ以上蓄積されているかどうかをチェックする。
【００６３】
ステップ４１４の競合チェックにおいて当該共有管理情報エントリの待ちキューにホストディレクタ識別子が１つ以上蓄積されていて当該キャッシュページの使用が競合している場合、ホストディレクタ１２ａは、当該共有管理情報エントリの待ちキューに自ホストディレクタ識別子を蓄積する（ステップ４２０）。実際には、待ちキューにすでに他のホストディレクタ識別子が蓄積されているので、その最後尾に蓄積する。
【００６４】
次に、ホストディレクタ１２ａは、当該キャッシュページの使用中が解除されるのを待ち（ステップ４２３）、使用中が解除されたならばステップ４２４に制御を移す。
【００６５】
ステップ４２４では、ホストディレクタ１２ａは、当該共有管理情報エントリが割り当てられている当該キャッシュページの使用中設定処理を行う。この使用中設定処理では、当該共有管理情報エントリの使用中情報に使用中フラグおよび自ホストディレクタ識別子を登録し、当該共有管理情報エントリを当該キャッシュページの使用中に追い出し処理されないように共有割り当てリンク［２２，…，２３］からリンクアウトする。
【００６６】
次に、ホストディレクタ１２ａは、当該キャッシュページを新規に使用中に設定したので、当該キャッシュページのローカル管理情報エントリの割り当て処理を行う（ステップ４２５）。この割り当て処理では、ローカル未割り当てリンク［３４，…，３５］から未割り当てのローカル管理情報エントリを１つ獲得し、当該ローカル管理情報エントリに当該キャッシュページの割り当てアドレスおよびページ識別子をセットした上でローカル検索テーブル３１にリンクインし、かつ当該ローカル管理情報エントリをローカル割り当てリンク［３２，…，３３］にリンクインする。
【００６７】
続いて、ホストディレクタ１２ａは、当該キャッシュページのローカル管理情報エントリでの使用中設定処理を行い（ステップ４１７）、キャッシュページのオープン処理を完了する（ステップ４２７）。この使用中設定処理では、当該ローカル管理情報エントリの使用中情報に使用中フラグおよびタスク識別子を登録するとともに、当該ローカル管理情報エントリを当該キャッシュページの使用中に追い出し処理されないようにローカル割り当てリンク［３２，…，３３］からリンクアウトする。
【００６８】
ステップ４１４の競合チェックにおいて当該共有管理情報エントリの待ちキューにホストディレクタ識別子が蓄積されておらず当該キャッシュページの使用が競合していない場合、ホストディレクタ１２ａは、当該キャッシュページにローカル管理情報エントリが割り当てられているかどうかをローカル検索テーブル３１から検索する（ステップ４１５）。ここでは、当該キャッシュページは、定常オープン状態であるので、必ずヒットする。
【００６９】
次に、ホストディレクタ１２ａは、当該ローカル管理情報エントリの待ちキューを参照して定常オープン状態の当該キャッシュページの使用の競合チェックを行う（ステップ４１６）。この競合チェックでは、当該ローカル管理情報エントリの待ちキューにタスク識別子が１つ以上蓄積されているかどうかをチェックする。
【００７０】
ステップ４１６の競合チェックにおいて当該ローカル管理情報エントリの待ちキューにタスク識別子が１つ以上蓄積されていて他の処理タスクにより定常オープン状態の当該キャッシュページが使用中であり競合する場合、ホストディレクタ１２ａは、当該ローカル管理情報エントリの待ちキューに自タスク識別子を蓄積する（ステップ４１８）。実際には、待ちキューにはすでに他のタスク識別子が蓄積されているので、待ちキューの最後尾に蓄積する。
【００７１】
次に、ホストディレクタ１２ａは、当該ローカル管理情報エントリの使用中解除を待ち（ステップ４１９）、使用中が解除されると、当該キャッシュページのローカル管理情報エントリでの使用中設定処理を行い（ステップ４１７）、キャッシュページのオープン処理を完了する（ステップ４２７）。この使用中設定処理では、当該ローカル管理情報エントリの使用中情報に使用中フラグおよびタスク識別子を登録するとともに、当該ローカル管理情報エントリを当該キャッシュページの使用中に追い出し処理されないようにローカル割り当てリンク［３２，…，３３］からリンクアウトする。
【００７２】
ステップ４１６の競合チェックにおいて当該ローカル管理情報エントリの待ちキューにタスク識別子が蓄積されておらず定常オープン状態の当該キャッシュページの使用が競合しない場合、ホストディレクタ１２ａは、当該キャッシュページのローカル管理情報エントリでの使用中設定処理を行い（ステップ４１７）、キャッシュページのオープン処理を完了する（ステップ４２７）。この使用中設定処理では、当該ローカル管理情報エントリの使用中情報に使用中フラグおよびタスク識別子を登録するとともに、当該ローカル管理情報エントリを当該キャッシュページの使用中に追い出し処理されないようにローカル割り当てリンク［３２，…，３３］からリンクアウトする。ステップ４１７を行うケースでは、定常オープン状態のキャッシュページにヒットしたケースであり、ホストディレクタ１２ａは、ステップ４１２〜４１４までの最初のチェック処理以外は、共有メモリ１５へのアクセスは行わない。
【００７３】
（２）  データ転送終了後のキャッシュページのクローズ処理（図５参照）
【００７４】
ホストディレクタ１２ａは、ホスト１１ａからのリード／ライトコマンド処理においてホスト１１ａ，キャッシュページ領域１５２間のデータ転送を完了すると、当該アドレスに対応するキャッシュページのクローズ処理を開始する（ステップ５１１）。
【００７５】
まず、ホストディレクタ１２ａは、当該共有管理情報エントリの待ちキューを参照して当該キャッシュページの使用の競合チェックを行う（ステップ５１２）。この競合チェックでは、当該共有管理情報エントリの待ちキューにホストディレクタ識別子が１つ以上蓄積されているかどうかをチェックする。
【００７６】
ステップ５１２の競合チェックにおいて当該共有管理情報エントリの待ちキューにホストディレクタ識別子が１つ以上蓄積されていて当該キャッシュページの使用が競合している場合、ホストディレクタ１２ａは、当該キャッシュページを定常オープン状態にはできないので、当該キャッシュページの使用中解除処理を行う（ステップ５１８）。この使用中解除処理では、当該共有管理情報エントリの使用中情報における使用中フラグおよびホストディレクタ識別子の登録解除（消去）と、当該共有管理情報エントリの共有割り当てリンク［２２，…，２３］へのリンクインとを行う。
【００７７】
次に、ホストディレクタ１２ａは、当該ローカル管理情報エントリの割り当て解除処理を行い（ステップ５１９）、当該キャッシュページのクローズ処理を完了する（ステップ５２０）。この割り当て解除処理では、当該ローカル管理情報エントリの使用中情報における使用中フラグおよびタスク識別子の登録解除（消去）と、当該ローカル管理情報エントリのローカル割り当てリンク［３２，…，３３］へのリンクインとを行う使用中解除処理を行い、さらに当該ローカル管理情報エントリをローカル検索テーブル３１およびローカル割り当てリンク［３２，…，３３］からリンクアウトしてローカル未割り当てリンク［３４，…，３５］にリンクインする。
【００７８】
ステップ５１２の競合チェックにおいて当該共有管理情報エントリの待ちキューにホストディレクタ識別子が蓄積されておらず当該キャッシュページの使用が競合していない場合、ホストディレクタ１２ａは、当該キャッシュページにローカル管理情報エントリが割り当てられているかどうかをローカル検索テーブル３１から検索する（ステップ５１３）。ここでは、当該キャッシュページは、定常オープン状態であるので、必ずヒットする。
【００７９】
次に、ホストディレクタ１２ａは、当該ローカル管理情報エントリでの当該キャッシュページの使用中解除処理を行う（ステップ５１４）。この使用中解除処理では、当該ローカル管理情報エントリの使用中情報における使用中フラグおよびタスク識別子の登録解除（消去）と、当該ローカル管理情報エントリのローカル割り当てリンク［３２，…，３３］へのリンクインとを行う。ここでは、当該キャッシュページは、共有管理情報エントリでの使用解除処理を施されておらず、かつローカル管理情報エントリでのローカル割り当てリンク［３２，…，３３］からのリンクアウト処理を施されおらず、定常オープン状態となる。
【００８０】
続いて、ホストディレクタ１２ａは、ローカル割り当てリンクカウンタ３７のカウント値が所定の最大ページ数を超えたかどうかをチェックする（ステップ５１５）。
【００８１】
ステップ５１５の最大ページ数のチェックにおいてローカル割り当てリンクカウンタ３７のカウント値が最大ページ数を超えた場合、ホストディレクタ１２ａは、ローカル割り当てリンク［３２，…，３３］からの当該ローカル管理情報エントリの追い出し処理（ＬＲＵ制御）を行う（ステップ５１６）。この追い出し処理では、ローカル割り当てリンク［３２，…，３３］から最後尾のローカル管理情報エントリを追い出し、ローカル未割り当てリンク［３４，…，３５］にリンクインする。
【００８２】
次に、ホストディレクタ１２ａは、共有割り当てリンク［２２，…，２３］からの共有管理情報エントリの使用中解除処理を行い（ステップ５１７）、当該キャッシュページのクローズ処理を完了する（ステップ５２０）。この使用中解除処理では、当該共有管理情報エントリの使用中情報における使用中フラグおよびホストディレクタ識別子の登録解除（消去）と、当該共有管理情報エントリの共有未割り当てリンク［２４，…，２５］へのリンクインとを行う。
【００８３】
ステップ５１５の最大ページ数のチェックにおいてローカル割り当てリンクカウンタ３７のカウント値が最大ページ数を超えなかった場合、ホストディレクタ１２ａは、キャッシュページのクローズ処理を完了する（ステップ５２０）。
【００８４】
第１の実施の形態では、上記のキャッシュページのオープン処理およびクローズ処理に加えて、キャッシュページのクローズ要求を受信したときのクローズ要求受信処理が必要となる。
【００８５】
（３）  キャッシュページのクローズ要求を受信したときのクローズ要求受信処理（図６参照）
【００８６】
ホストディレクタ１２ａは、他のホストディレクタからキャッシュページのクローズ要求を受信すると、当該キャッシュページのクローズ処理を開始する（ステップ６１１）。
【００８７】
まず、ホストディレクタ１２ａは、当該キャッシュページに割り当てられたローカル管理情報エントリをローカル検索テーブル３１から検索する（ステップ６１２）。この検索処理では、当該アドレスを所定のハッシュ関数でハッシュして得られたキーでローカル検索テーブル３１を索引し、得られた順方向ポインタおよび逆方向ポインタでリンクされる共有管理情報エントリを検索する。
【００８８】
ステップ６１２の検索においてローカル管理情報エントリが検索されずミスヒットである場合、入れ違いですでに当該ローカル管理情報エントリが割り当て解除済みであることになるので、ホストディレクタ１２ａは、キャッシュページのクローズ処理を完了する（ステップ６１６）。
【００８９】
ステップ６１２の検索においてローカル管理情報エントリが検索されてヒットした場合、ホストディレクタ１２ａは、当該ローカル管理情報エントリの使用中情報における使用中フラグに基づいて当該キャッシュページの使用中チェックを行う（ステップ６１３）。
【００９０】
ステップ６１３の使用中チェックにおいて当該キャッシュページが使用中である場合、他のホストディレクタで当該キャッシュページが使用中であり、いますぐ当該ローカル管理情報エントリの当該キャッシュページへの割り当てを解除することはできないが、当該キャッシュページを使用中の他のホストディレクタが当該キャッシュページの使用後のタイミングで当該ローカル管理情報エントリの当該キャッシュページへの割り当てを解除するはずなので、当該キャッシュページのクローズ処理を完了する（ステップ６１６）。
【００９１】
ステップ６１３の使用中チェックにおいて当該キャッシュページが使用中ではない場合、当該キャッシュページは定常オープン状態なので、ホストディレクタ１２ａは、実際に当該共有管理情報エントリの使用中解除処理を行う（ステップ６１４）。この使用中解除処理では、当該共有管理情報エントリの使用中情報における使用中フラグおよびホストディレクタ識別子の登録解除（消去）と、当該共有管理情報エントリの共有割り当てリンク［２２，…，２３］へのリンクインとを行う。
【００９２】
次に、ホストディレクタ１２ａは、当該ローカル管理情報エントリの割り当て解除処理を行い（ステップ６１５）、当該キャッシュページのクローズ処理を完了する（ステップ６１６）。この割り当て解除処理では、当該ローカル管理情報エントリの使用中情報における使用中フラグおよびタスク識別子の登録解除（消去）と、当該ローカル管理情報エントリのローカル割り当てリンク［３２，…，３３］へのリンクインとを行う使用中解除処理を行い、さらに当該キャッシュページに割り当てられていたローカル管理情報エントリをローカル検索テーブル３１およびローカル割り当てリンク［３２，…，３３］からリンクアウトしてローカル未割り当てリンク［３４，…，３５］にリンクインする。
【００９３】
第１の実施の形態によれば、ホストからのリード／ライトコマンドにおいて、同一のホストディレクタを介したキャッシュヒット時のレスポンス性能を向上させることができる。なぜならば、同じキャッシュページへの数回のリード／ライトアクセスにおいて、それが同一のホストディレクタ経由であるときに限っては、共有メモリへのアクセス回数が少なくてキャッシュページのオープン／クローズを行うので、リード／ライトのアクセスレスポンスを短縮できるからである。
【００９４】
［第２の実施の形態］
第１の実施の形態においては、定常オープン状態のキャッシュページの最大ページ数は、静的な基本的な値であることを前提としていたので、たとえば全キャッシュページのうちのある割合を定常オープン状態のキャッシュページの最大割合とし、それをディスクアレイ装置に搭載されているホストディレクタの数で等分割した値が固定で使われている。しかしながら、複数のホストディレクタが搭載されるディスクアレイ装置においては、ホストディレクタによっては接続されていないものやあまり頻繁にリード／ライトコマンドがこないようなものもありうるし、接続ホストによって要求性能が異なるケースなどが考えられる。第２の実施の形態では、定常オープン状態のキャッシュページの最大ページ数を、あらかじめ設定された基準値でホストディレクタによって最大ページ数に差を付けたり、最近に実際に受領したコマンド数から動的に最大ページ数を変更する方法を説明する。
【００９５】
図７は、本発明の第２の実施の形態に係るディスクキャッシュ管理方法が適用されるディスクアレイ装置の構成を示すブロック図である。このディスクアレイ装置は、図１に示した第１の実施の形態に係るディスクキャッシュ管理方法が適用されるディスクアレイ装置に対して、共有メモリ１５上に定常オープン状態のキャッシュページの最大ページ数を動的に管理するための最大ページ数管理領域１５３をさらに設けた点だけが異なっている。したがって、同一部分には同一符号を付して、それらの詳しい説明を省略する。
【００９６】
図８は、第２の実施の形態において、共有メモリ１５上に設けれられた最大ページ数管理領域１５３の内容を例示する図である。ホストディレクタ最大ページ数管理情報８１ａ，８１ｂ，８１ｃは、ディレクタ識別子で識別されるホストディレクタ１２ａ，１２ｂ，１２ｃの最大ページ数を決定するための管理情報である。ホストディレクタ最大ページ数管理情報８１ａ，８１ｂ，８１ｃは、アクセス頻度８１１ａ，８１１ｂ，８１１ｃと、優先度８１２ａ，８１２ｂ，８１２ｃとからなる。アクセス頻度８１１ａ，８１１ｂ，８１１ｃは、ホストディレクタ１２ａ，１２ｂ，１２ｃにおけるアクセス頻度情報を、ホストディレクタ１２ａ，１２ｂ，１２ｃが定期的に書き込む領域である。これにより、各ホストディレクタ１２ａ，１２ｂ，１２ｃは、すべてのホストディレクタ１２ａ，１２ｂ，１２ｃのアクセス頻度を常時知ることができる。したがって、各ホストディレクタ１２ａ，１２ｂ，１２ｃは、全キャッシュページのうちのある割合を定常オープン状態のキャッシュページの最大割合として、それに全アクセス頻度に対する自ホストディレクタのアクセス頻度の割合をかけた値を最大ページ数とすることができる。これにより、アクセス頻度の高いホストディレクタで、より多量の定常オープン状態のキャッシュページが許され、定常オープン状態のキャッシュページのキャッシュヒット率を高めることができる。一方、優先度８１２ａ，８１２ｂ，８１２ｃは、そのホストディレクタ１２ａ，１２ｂ，１２ｃの使い方により、あらかじめ最大ページ数の分け方に差を持たせる要素とする。前記最大ページ数の計算において全キャッシュページのうちのある割合を定常オープン状態のキャッシュページの最大割合として、それに全アクセス頻度８１１ａ，８１１ｂ，８１１ｃに対する自ホストディレクタのアクセス頻度の割合をかけた値に、さらに優先度８１２ａ，８１２ｂ，８１２ｃの重みをかけた値を最大ページ数とする。すなわち、優先度８１２ａ，８１２ｂ，８１２ｃがゼロの時はアクセス頻度８１１ａ，８１１ｂ，８１１ｃにかかわらず定常オープンは行われず、優先度８１２ａ，８１２ｂ，８１２ｃが高いときは、アクセス頻度８１１ａ，８１１ｂ，８１１ｃが低くても定常オープン状態のキャッシュページのキャッシュヒットが期待できる。
【００９７】
第２の実施の形態によれば、定常オープン状態のキャッシュページの数が複数のホストディレクタに適切に配分されることにより、定常オープン状態のキャッシュページのキャッシュヒット率が単に上がるだけではなく、アクセス頻度の低いホストからのアクセスに対してもキャッシュヒット性能を確保することが可能になる。
【００９８】
［第３の実施の形態］
図９は、本発明の第３の実施の形態に係るディスクキャッシュ管理方法が適用されるディスクアレイ装置の構成を示すブロック図である。このディスクアレイ装置は、図１に示した第１の実施の形態に係るディスクキャッシュ管理方法が適用されるディスクアレイ装置の各ホストディレクタ１２ａ，１２ｂ，１２ｃに対して、ホストディレクタプログラム１００を備える点だけが異なっている。
【００９９】
ホストディレクタプログラム１００は、各ホストディレクタ１２ａ，１２ｂ，１２ｃに読み込まれ、各ホストディレクタ１２ａ，１２ｂ，１２ｃの動作を、第１の実施の形態における各ホストディレクタ１２ａ，１２ｂ，１２ｃの動作と全く同様に制御する。よって、第３の実施の形態に係るディスクキャッシュ管理方法が適用されるディスクアレイ装置の詳しい動作の説明は割愛する。
【０１００】
［第４の実施の形態］
図１０は、本発明の第４の実施の形態に係るディスクキャッシュ管理方法が適用されるディスクアレイ装置の構成を示すブロック図である。このディスクアレイ装置は、図７に示した第２の実施の形態に係るディスクキャッシュ管理方法が適用されるディスクアレイ装置の各ホストディレクタ１２ａ，１２ｂ，１２ｃに対して、ホストディレクタプログラム２００を備える点だけが異なっている。
【０１０１】
ホストディレクタプログラム２００は、各ホストディレクタ１２ａ，１２ｂ，１２ｃに読み込まれ、各ホストディレクタ１２ａ，１２ｂ，１２ｃの動作を、第２の実施の形態における各ホストディレクタ１２ａ，１２ｂ，１２ｃの動作と全く同様に制御する。よって、第４の実施の形態に係るディスクキャッシュ管理方法が適用されるディスクアレイ装置の詳しい動作の説明は割愛する。
【０１０２】
【発明の効果】
本発明の効果は、ホストからのリード／ライトコマンドにおいて、同一のホストディレクタを介したキャッシュヒット時のレスポンス性能を向上させることができることにある。その理由は、同じキャッシュページへの数回のリード／ライトアクセスにおいて、それが同一のホストディレクタ経由である時に限っては、共有メモリへのアクセス回数が少なくてキャッシュページのオープン／クローズを行うので、リード／ライトアクセスレスポンスを短縮できるからである。現実には同一のホストからのコマンドは同一のホストディレクタを介したコマンドとなる場合が多いので、一般的に性能が向上する。
【０１０３】
なお、同一のホストから複数ポートを介して接続しているときは、同じアドレスへのアクセスが別のホストディレクタ経由で行われる場合もあるが、この場合では本発明による処理のオーバーヘッドにより若干レスポンスが遅くなることが考えられるが、著しくレスポンスが悪くなるわけではなく、この場合でも同じキャッシュページへのアクセスが同じポート経由できたり違うポート経由できたりランダムに分散すれば、本発明によるレスポンス改善の効果の方が大きくなり、やはり性能が向上する結果となる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態に係るディスクキャッシュ管理方法が適用されるディスクアレイ装置の構成を示すブロック図である。
【図２】図１中の共有メモリ上のキャッシュ管理領域の内容を示す図である。
【図３】図１中のローカルメモリ上のローカルキャッシュ管理領域の内容を示す図である。
【図４】第１の実施の形態に係るディスクキャッシュ管理方法が適用されるディスクアレイ装置において、ホストからのリード／ライトコマンドを受領したときのホストディレクタにおけるキャッシュページのオープン処理を示すフローチャートである。
【図５】第１の実施の形態に係るディスクキャッシュ管理方法が適用されるディスクアレイ装置において、データ転送終了後のホストディレクタにおけるキャッシュページのクローズ処理を示すフローチャートである。
【図６】第１の実施の形態に係るディスクキャッシュ管理方法が適用されるディスクアレイ装置において、キャッシュページのクローズ要求を受信したときのホストディレクタにおけるクローズ要求受信処理を示すフローチャートである。
【図７】本発明の第２の実施の形態に係るディスクキャッシュ管理方法が適用されるディスクアレイ装置の構成を示すブロック図である。
【図８】第２の実施の形態において、定常オープン状態のキャッシュページの最大ページ数を動的に管理するために、共有メモリ上に持つ最大ページ数管理領域の内容を示す図である。
【図９】本発明の第３の実施の形態に係るディスクキャッシュ管理方法が適用されるディスクアレイ装置の構成を示すブロック図である。
【図１０】本発明の第４の実施の形態に係るディスクキャッシュ管理方法が適用されるディスクアレイ装置の構成を示すブロック図である。
【符号の説明】
１１ａ，１１ｂ，１１ｃ  ホスト
１２ａ，１２ｂ，１２ｃ  ホストディレクタ
１３ａ，１３ｂ  ディスクディレクタ
１４  物理ディスクアレイ
１５  共有メモリ
１５１  キャッシュ管理領域
１５２  キャッシュページ領域
２１  共有検索テーブル
２２  共有割り当てリンクＭＲＵポインタ
２３  共有割り当てリンクＬＲＵポインタ
２４  共有未割り当てリンクＭＲＵポインタ
２５  共有未割り当てリンクＬＲＵポインタ
３１  ローカル検索テーブル
３２  ローカル割り当てリンクＭＲＵポインタ
３３  ローカル割り当てリンクＬＲＵポインタ
３４  ローカル未割り当てリンクＭＲＵポインタ
３５  ローカル未割り当てリンクＬＲＵポインタ
３７  ローカル割り当てリンクカウンタ
８１ａ，８１ｂ，８１ｃ  ホストディレクタ最大ページ数管理情報
１００，２００  ホストディレクタプログラム
１２１ａ，１２１ｂ，１２１ｃ  ポート
１２２ａ，１２２ｂ，１２２ｃ  コントローラ
１２３ａ，１２３ｂ，１２３ｃ  ローカルメモリ
１５１  キャッシュ管理領域
１５２  キャッシュページ領域
１５３  最大ページ数管理領域
２６１〜２６９  共有管理情報エントリ
３６１〜３６９  ローカル管理情報エントリ
４１１  キャッシュページオープン処理開始ステップ
４１２  共有検索テーブル検索ステップ
４１３  共有管理情報エントリでの使用中チェックステップ
４１４  共有管理情報エントリでの競合チェックステップ
４１５  ローカル検索テーブル検索ステップ
４１６  ローカル管理情報エントリでの競合チェックステップ
４１７  ローカル管理情報エントリでの使用中設定処理ステップ
４１８  ローカル管理情報エントリ待ちキュー蓄積ステップ
４１９  ローカル管理情報エントリでの使用中解除待ちステップ
４２０  共有管理情報エントリ待ちキュー蓄積ステップ
４２１  共有管理情報エントリ待ちキュー蓄積ステップ
４２２  クローズ要求送信ステップ
４２３  共有管理情報エントリでの使用中解除待ちステップ
４２４  共有管理情報エントリでの使用中設定処理ステップ
４２５  ローカル管理情報エントリ割り当て処理ステップ
４２６  共有管理情報エントリ割り当て処理ステップ
４２７  キャッシュページオープン処理完了ステップ
５１１  キャッシュページクローズ処理開始ステップ
５１２  共有管理情報エントリでの競合チェックステップ
５１３  ローカル検索テーブル検索ステップ
５１４  ローカル管理情報エントリでの使用中解除処理ステップ
５１５  ローカル割り当てリンクカウンタチェックステップ
５１６  ローカル管理情報エントリ追い出し処理ステップ
５１７  共有管理情報エントリでの使用中解除処理ステップ
５１８  共有管理情報エントリでの使用中解除処理ステップ
５１９  ローカル管理情報エントリ割り当て解除処理ステップ
５２０  キャッシュページクローズ処理完了ステップ
６１１  キャッシュページクローズ要求受信ステップ
６１２  ローカル検索テーブル検索ステップ
６１３  ローカル管理情報エントリでの使用中チェックステップ
６１４  共有管理情報エントリでの使用中解除処理ステップ
６１５  ローカル管理情報エントリ割り当て解除処理ステップ
６１６  キャッシュページクローズ処理完了ステップ
８１１ａ，８１１ｂ，８１１ｃ  アクセス頻度
８１２ａ，８１２ｂ，８１２ｃ  優先度
【図１】
0003759048.tif 000002
【図２】
0003759048.tif 000003
【図３】
0003759048.tif 000004
【図４】
0003759048.tif 000005
【図５】
0003759048.tif 000006
【図６】
0003759048.tif 000007
【図７】
0003759048.tif 000008
【図８】
0003759048.tif 000009
【図９】
0003759048.tif 000010
【図１０】
0003759048.tif 000011