(57)【要約】【課題】キャッシュ・ストアを管理するためのシステムおよび方法を提供すること【解決手段】キャッシュ・ストアを持ち記憶システムに関連するキャッシュ・コントローラは、それ自体のリブートを通じてキャッシュ・ストアに格納された情報を維持し、ホスト・コンピュータ・システムおよびデータ記憶システムと通信し、メタデータ部分およびログ部分を含めるためにキャッシュ・メモリを区分する。キャッシュ・コントローラは、ホスト・コンピュータ・システムにアクセス可能な分離したメモリにメタデータのコピーを維持し、データはメタデータ・ログがその容量に到達したときにキャッシュ・ストアに書き込まれる。リブート時に、メタデータはホスト・コンピュータ・システムにコピーして戻され、メタデータ・ログは、データ記憶システムに保存されていないキャッシュに追加の変更をコピーするためにトラバースされる。【選択図】図２
2014174992.tif 000002
【特許請求の範囲】
【請求項１】
ホスト・コンピュータ・システムに関連するキャッシュ・ストア、およびキャッシュ・ホスト・コントローラのリブートを通じて前記キャッシュ・ストアに情報を維持するデータ記憶システムを管理する方法であって、
メタデータを格納するための第１の部分、前記キャッシュ・ストアに属するデータとしてデータ記憶マネージャによって識別されたデータ値を格納するための第２の部分、前記メタデータへの変更を格納するための第３の部分、ならびに前記ホストおよび前記キャッシュ・ストアに関する情報を含む第４の部分を提供するために前記キャッシュ・ストアを区分するステップと、
前記第１の部分の表現をメタデータで、前記第２の部分の表現を前記データ記憶マネージャによって指示されたデータ値でポピュレートするステップであって、前記データ記憶マネージャは、前記データ記憶システムに格納された特定のデータ・アイテムに対して所望される回数を超える要求を表す頻度値に従って前記キャッシュ・ストアに格納されるデータ・アイテムを識別する、ステップと、
前記データ記憶マネージャによって指示されたように、前記第１の部分の前記表現がメタデータでポピュレートされ前記第２の部分の前記表現がデータ値でポピュレートされるたびに、前記キャッシュ・ストアの前記第３の部分にエントリを作成するステップであって、前記第１の部分および前記第２の部分の前記表現は、前記ホスト・コンピュータ・システム、前記データ記憶マネージャ、および前記キャッシュ・ホスト・コントローラの１つまたは複数を介してアクセス可能な揮発性メモリに格納される、ステップと、
前記第３の部分のデータ記憶容量に到達したときに、前記第３の部分の前記データ記憶容量に到達したときを決定するために、前記キャッシュ・ストアの前記第３の部分の現在のインデックスを最初のインデックスと比較するステップと、
前記キャッシュ・ストアの前記対応する第１のストアに前記第１の部分の前記表現における前記情報を書き込むステップと、
前記最初のインデックスを前記キャッシュ・ストアの前記第３の部分における次に利用可能な保存場所に置き換えるステップと
を含む方法。
【請求項２】
前記第１の部分の前記表現、前記第２の部分の前記表現、および前記第３の部分の前記表現を所望の２進値に初期化するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記第４の部分は、前記ホストの状態の指示、前記第１の部分の位置およびサイズを規定する第１の識別子および第１の範囲、キャッシュ記憶ユニットの数および前記第２の部分のキャッシュ記憶ユニット内の各キャッシュ・ラインのサイズを識別する第２の識別子および第３の識別子、ならびに前記第３の部分のそれぞれの位置およびサイズを規定する第４の識別子および第４の範囲を含む、請求項１に記載の方法。
【請求項４】
前記第１の部分が第１のエントリを含み、前記第１のエントリが、仮想ディレクトリ識別子、論理ブロック・アドレス、優先度インデックス、予約された領域、およびキャッシュ・ライン・ビットマップを含む、請求項１に記載の方法。
【請求項５】
前記第３の部分が、シーケンス番号、キャッシュ・ライン・ビットマップ、仮想ディレクトリ識別子、論理ブロック・アドレス、優先度インデックス、予約された領域、およびキャッシュ・ウィンドウ・インデックスを含む、請求項１に記載の方法。
【請求項６】
前記キャッシュ・ホスト・コントローラのリブート時に、次に使用可能なシーケンス番号を識別するために前記第４の部分のコンテンツを読み込むステップと、
前記データ記憶マネージャおよびキャッシュ・ストアによってアクセス可能な前記揮発性メモリに前記キャッシュ・メモリ装置の前記第１の部分をコピーするステップと、
回復されたメタデータを生成するために、前記データ記憶マネージャおよび前記キャッシュ・ストアによってアクセス可能な前記揮発性メモリの前記第１の部分内の１つまたは複数のエントリの上部に有効なログ・エントリを適用するステップと、
前記データ記憶システムからの対応するデータで更新するために適切なキャッシュ・ウィンドウを識別するために前記回復されたメタデータをトラバースするステップと、
前記適切なキャッシュ・ウィンドウの状態を変更するステップと、
ハッシュ・テーブルおよび前記優先度インデックスに前記キャッシュ・ウィンドウを挿入するステップと、
すべてのメタデータ・エントリがトラバースされたら、前記キャッシュ・ホスト・コントローラに指示を送信するステップと
をさらに含む、請求項１に記載の方法。
【請求項７】
有効なログ・エントリを決定すること、第１のエントリ内のシーケンス番号を次のエントリ内の前記シーケンス番号に対して比較することを含む、請求項６に記載の方法。
【請求項８】
前記比較は、
前記第１のエントリ内のシーケンス番号と前記次のエントリ内の前記シーケンス番号の差を計算することと、
前記差が０か１かを決定することと、
前記差が０または１でない場合に、前記回復されたメタデータの前記トラバースを終了することと
を含む請求項７に記載の方法。
【請求項９】
ホスト・コンピュータ・システムおよびデータ記憶システムとデータを通信するためのインターフェースと、
キャッシュ・ストアと、
前記キャッシュ・ストアに格納されたヘッダー情報に応答する処理システムと
を含むキャッシュ・コントローラであって、
前記処理システムは、
前記キャッシュ・コントローラの現在の状態に応じて状態識別子にプログラム可能な方法で応答し、
メタデータ・ログに対して次に使用可能なシーケンス番号を識別し、
前記キャッシュ・ストア内のメタデータ・ストアの位置およびサイズを識別し、
前記キャッシュ・ストア内のメタデータ・ログの位置およびサイズを識別し、
前記キャッシュ・ストア内の複数のキャッシュ・ウィンドウの位置およびサイズを識別し、各キャッシュ・ウィンドウは、前記キャッシュ・コントローラによってさらに識別される複数のキャッシュ・ラインを含み、
前記メタデータの表現で格納され、前記ホスト・コンピュータ・システムを介して前記キャッシュ・ストアにアクセス可能な情報を書き込み、
前記メタデータ・ログ内の前記次に使用可能なシーケンス番号を置き換える
ように構成されている、
キャッシュ・コントローラ。
【請求項１０】
前記処理システムは、
前記キャッシュ・ストアに前記メタデータ、キャッシュ・ウィンドウ・オブジェクト、および前記メタデータ・ログを維持する
ようにさらに構成されている、
請求項９に記載のキャッシュ・コントローラ。
【請求項１１】
前記メタデータは、少なくとも１つのエントリを含み、前記エントリが、仮想ディレクトリ識別子、論理ブロック・アドレス、優先度インデックス、予約された領域、およびキャッシュ・ライン・ビットマップを含む、請求項１０に記載のキャッシュ・コントローラ。
【請求項１２】
前記メタデータ・ログは、前記シーケンス番号、前記キャッシュ・ライン・ビットマップ、前記仮想ディレクトリ識別子、前記論理ブロック・アドレス、前記優先度インデックス、前記予約された領域の情報、および前記キャッシュ・ウィンドウ・インデックスを含む、請求項１１に記載のキャッシュ・コントローラ。
【請求項１３】
前記処理システムは、
前記キャッシュ・コントローラのリブートが完了するときに、
前記キャッシュ・ストアの表現のコンテンツであって、前記ホスト・コンピュータ・システムにアクセス可能な揮発性メモリに格納され、前記次に使用可能なシーケンス番号をさらに含むコンテンツを読み込み、
前記ホスト・コンピュータ・システムにアクセス可能な前記揮発性メモリに前記メタデータ・ストアのコンテンツをコピーし、
回復されたメタデータを生成するために前記メタデータ・ストアにおいて１つまたは複数のエントリの上部に有効なログ・エントリを適用し、
前記データ記憶システムからの対応するデータで更新するために適切なキャッシュ・ウィンドウを識別するために前記回復されたメタデータをトラバースし、
前記適切なキャッシュ・ウィンドウの状態を変更し、
ハッシュ・テーブルおよび前記優先度インデックスに前記キャッシュ・ウィンドウを挿入し、
前記キャッシュ・メモリへの入出力動作が有効であることをデータ記憶システムに示すフラグを更新する
ようにさらに構成されている、
請求項９に記載のキャッシュ・コントローラ。
【請求項１４】
有効なログ・エントリは、第１のエントリ内のシーケンス番号を次のエントリ内の前記シーケンス番号に対し比較することによって識別される、請求項１３に記載のキャッシュ・コントローラ。
【請求項１５】
前記比較は、
前記第１のエントリ内のシーケンス番号と前記次のエントリ内の前記シーケンス番号の差を計算することと、
前記差が０か１かを決定することとを含む、請求項１４に記載のキャッシュ・コントローラ。
【請求項１６】
キャッシュ・コントローラの処理システムで実行されたときに
メタデータを格納するための第１の部分、キャッシュ・ストアに属するデータとしてデータ記憶マネージャによって識別されたデータ値を格納するための第２の部分、前記メタデータへの変更を格納するための第３の部分、ならびにホストおよび前記キャッシュ・ストアに関する情報を含む第４の部分を提供するために前記キャッシュ・ストアを区分し、
前記第１の部分の表現をメタデータで、前記第２の部分の表現を前記データ記憶マネージャによって指示されたデータ値でポピュレートし、ここで、前記データ記憶マネージャは、前記データ記憶システムに格納された特定のデータ・アイテムに対して所望される回数を超える要求を表す頻度値に従って前記キャッシュ・ストアに格納されるデータ・アイテムを識別するものであり、
前記データ記憶マネージャによって指示されるように、前記第１の部分の前記表現がメタデータでポピュレートされ前記第２の部分の前記表現がデータ値でポピュレートされるたびに前記第３の部分の表現にエントリを作成し、前記第１の部分、第２の部分、および第３の部分の前記表現は、ホスト・コンピュータ・システム、前記データ記憶マネージャ、およびキャッシュ・ホスト・コントローラの１つまたは複数を介してアクセス可能な揮発性メモリに格納され、
前記第３の部分のデータ記憶容量に到達したときに、前記第３の部分の前記データ記憶容量に到達したときを決定するために、前記第３の部分の前記表現における現在のインデックスを最初のインデックスと比較し、
前記キャッシュ・ストアの前記対応する第１のストアに前記第１の部分の前記表現における前記情報を書き込み、
前記最初のインデックスを前記キャッシュ・ストアの前記第３の部分における次に利用可能な保存場所に置き換える
ように前記処理システムに指示する命令をコンピュータ実行可能な非過渡的な形式で格納するコンピュータ可読媒体。
【請求項１７】
プロセッサは、前記第１の部分の前記表現、前記第２の部分の前記表現、および前記第３の部分の前記表現を所望の２進値に初期化するようにさらに指示される、請求項１６に記載のコンピュータ可読媒体。
【請求項１８】
前記第４の部分は、前記ホストの状態の指示、前記第１の部分の位置およびサイズを規定する第１の識別子および第１の範囲、キャッシュ記憶ユニットの数および前記第２の記憶部のキャッシュ記憶ユニット内の各キャッシュ・ラインのサイズを識別する第２の識別子および第３の識別子、ならびに前記第３の部分のそれぞれの位置およびサイズを規定する第４の識別子および第４の範囲を含む、請求項１６に記載のコンピュータ可読媒体。
【請求項１９】
前記第１の部分が第１のエントリを含み、前記第１のエントリが、仮想ディレクトリ識別子、論理ブロック・アドレス、優先度インデックス、予約された領域、およびキャッシュ・ライン・ビットマップを含み、前記第３の部分が、シーケンス番号、キャッシュ・ライン・ビットマップ、仮想ディレクトリ識別子、論理ブロック・アドレス、優先度インデックス、予約された領域、およびキャッシュ・ウィンドウ・インデックスを含む、請求項１６に記載のコンピュータ可読媒体。
【請求項２０】
プロセッサが、
前記キャッシュ・ホスト・コントローラのリブート時に、次に使用可能なシーケンス番号を識別するために前記第４の部分のコンテンツを読み込み、
前記データ記憶マネージャ、ホスト・コンピュータ・システム、およびキャッシュ・コントローラによってアクセス可能な前記揮発性メモリに前記キャッシュ・ストアの前記第１の部分をコピーし、
回復されたメタデータを生成するために、前記データ記憶マネージャおよび前記キャッシュ・ストアによってアクセス可能な前記揮発性メモリの前記第１の部分内の１つまたは複数のエントリの上部に有効なログ・エントリを適用し、
前記データ記憶システムからの対応するデータで更新するために適切なキャッシュ・ウィンドウを識別するために前記回復されたメタデータをトラバースし、
前記適切なキャッシュ・ウィンドウの状態を変更し、
ハッシュ・テーブルおよび前記優先度インデックスに前記キャッシュ・ウィンドウを挿入し、
すべてのメタデータ・エントリがトラバースされたら、前記キャッシュ・ホスト・コントローラに指示を送信する
ようにさらに指示される、請求項１６に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に、データ記憶システムに関し、より詳細には、フラッシュ・メモリ・ベースのデータ・キャッシュを用いるデータ記憶システムに関する。
【背景技術】
【０００２】
一部の従来のコンピューティング・システムは、コンピューティング・システムおよび／またはコンピューティング・システムによって実行されるアプリケーションのパフォーマンスを改善するために、より低速なデータ記憶装置（たとえば、磁気ディスク記憶媒体、光ディスク記憶媒体、またはネットワークを介してアクセス可能な１つまたは複数のデータ記憶装置）に対するブロック・レベルまたはファイル・レベルの記憶装置の代替として不揮発性メモリ装置を用いる。この点で、より低速な記憶装置に対するよりも、一部の不揮発性メモリ装置（以下、簡潔さのために「キャッシュ装置」）に対する方が入出力（Ｉ／Ｏ）動作を大幅に高速に実行できるため、キャッシュ装置を使用することで、Ｉ／Ｏ動作の速度を大きく改善する機会が提供される。
【０００３】
データ記憶マネージャおよび記憶アレイによってサポートされたデータ記憶システムのＩ／Ｏパフォーマンスを超えて、Ｉ／Ｏのパフォーマンスを上昇させるためにデータ・キャッシュを組み込むことが知られている。たとえば、図１に示したシステムでは、データ記憶マネージャ１０は、信頼性が高いデータの記憶を可能にする方法で記憶アレイ１２を制御する。ホスト（コンピュータ）システム１４は、データ記憶マネージャ１０を介して、記憶アレイ１２にデータを格納し、記憶アレイ１２からデータを取得する。すなわち、アプリケーション・プログラムまたはＡＰＰ１８により動作するプロセッサ１６は、記憶アレイ１２にデータを書き込み、記憶アレイ１２からデータを読み込むために要求を発行する。明瞭さのために、ホスト・システム１４およびデータ記憶マネージャ１０は別々の要素として図１に描写しているが、そのようなホスト・システム１４のマザーボードまたはバックプレーンに接続するカードとして、データ記憶マネージャ１０を物理的に統合することは一般的である。
【０００４】
そのようなシステムは、記憶アレイ１２のデータ記憶装置２４、２６、２８、および３０に格納されている特定のデータへのアクセスの頻度に基づいてデータをキャッシュすることができる。このキャッシュされたまたは「ホットな」データ、たとえば要素Ａは、フラッシュベースのメモリ装置１５のキャッシュ・メモリ・モジュール２２に格納される。要素Ａは、ブロック・レベルまたはファイル・レベルで識別することができる。その後、「ホットな」データに対して、ＡＰＰ１８などのアプリケーションによって発行された要求は、データ記憶システムではなく、フラッシュベースのメモリ装置１５によってサービスされる。そのような従来のデータ・キャッシュ・システムは拡張可能で、フラッシュベースの記憶装置１５の容量によってのみ制限される。したがって、フラッシュベースの記憶装置１５の全容量を満たすには、かなりの時間がかかる場合がある。フラッシュベースのキャッシュ装置１５には、ホスト・システム１４によって頻繁に読み込まれるデータ・アイテムをキャッシュするように指示することができるが、フラッシュベースの装置１５のリブートを通じて、どのデータがキャッシュされていたかを記憶していることは依然として重要である。どのデータがホスト・システム１４によって頻繁に必要とされるかに関する情報がない場合、キャッシュされたデータの再構築にかなりの時間がかかる場合があり、その間、フラッシュベースのキャッシュ装置１５のパフォーマンスおよびホスト・システム１４のパフォーマンスの一方または両方が影響を受け、その結果、そのような従来システムのユーザが気づく可能性あるアプリケーションのパフォーマンスの低下につながる。
【０００５】
データ記憶マネージャ１０と通信する分離した別個のキャッシュ・メモリ・モジュール２１は、記憶アレイ１２の記憶要素２４、２６、２８、および３０全体にデータを確実に分散するように構成された処理ステップの前またはその間に、一時的にデータ要素Ｂをキャッシュすることができる。
【０００６】
リダンダント・アレイ・オブ・インエクスペンシブ（またはインデペンデント）ディスク（ＲＡＩＤ）は、１つまたは複数の記憶装置の障害からの回復を可能にすることによって、信頼性に取り組むデータ記憶システムの一般的なタイプである。ＲＡＩＤシステムではデータ・キャッシュを組み込むことが知られている。図１に示したシステムでは、データ記憶マネージャ１０は、ブロックの単位でデータをキャッシュするＲＡＩＤ処理システム２０を含み、このブロックの単位は、リード・キャッシュ・ブロック（ＲＣＢ）およびライト・キャッシュ・ブロック（ＷＣＢ）と呼ぶことができる。ＷＣＢは、記憶アレイ１２にデータを格納する要求の一部としてデータ記憶マネージャ１０にホスト・システム１４が送信するデータを含む。ホスト・システム１４からのそのような書き込み要求に応じて、データ記憶マネージャ１０は、１つまたは複数のキャッシュ・メモリ・モジュール２１にＷＣＢをキャッシュまたは一時的に格納し、次に、ホスト・システム１４に肯定メッセージを返す。後の時点で、データ記憶マネージャ１０は、（典型的には、以前にキャッシュされた他のＷＣＢに加えて）キャッシュされたＷＣＢを記憶アレイ１２に転送する。ＲＣＢは、ホスト・システム１４からの読み込み要求に応じて、データ記憶マネージャ１０が記憶アレイ１２から頻繁に読み込んだデータを含む。キャッシュ・メモリ・モジュール２１は、フラッシュ・メモリなど、データ記憶アレイ１２が含むメモリ（たとえばディスク・ドライブ）のタイプよりはるかに速くアクセスできるメモリのタイプであるため、頻繁に要求されるデータをキャッシュすることは、ホスト・システム１４がそれを要求するたびに、記憶アレイ１２から読み込むより効率的である。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００９−５３９５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
リブート動作の後の改善されたキャッシュ・ランプアップ（ramp-up）のためにキャッシュ・ストアを管理するためのシステムおよび方法の実施形態が示され、代表的な実施形態に記述される。キャッシュ・ランプアップは、キャッシュに格納されたデータ要素のコンテンツを回復および検証するために、キャッシュ・コントローラが必要とする時間である。
【課題を解決するための手段】
【０００９】
代表的な実施例では、キャッシュ・コントローラは、ホスト・コンピュータ・システムおよびデータ記憶システムと通信するために少なくとも１つのインターフェースを含む。キャッシュ・コントローラは、キャッシュ・ストアおよび処理システムをさらに含む。処理システムは、キャッシュ・ストアに格納されたヘッダー情報および実行可能命令に応答する。処理システムは、キャッシュ・コントローラの現在の状態に応じて状態識別子にプログラム可能な方法で応答し、メタデータ・ログに対して次に使用可能なシーケンス番号を識別し、キャッシュ・ストアにおけるメタデータ・ストアの位置およびサイズを識別し、キャッシュ・ストアにおけるメタデータ・ログの位置およびサイズを識別し、キャッシュ・ストアにおける複数のキャッシュ・ウィンドウの位置およびサイズを識別し、各キャッシュ・ウィンドウは、キャッシュ・コントローラによってさらに識別される複数のキャッシュ・ラインを含むように構成される。指定された条件に応じて、処理システムは、メタデータの表現で格納され、ホスト・コンピュータ・システムを介してアクセス可能な情報をキャッシュ・ストアに書き込み、メタデータ・ログで次に使用可能なシーケンス番号を置き換えるようにさらに構成される。
【００１０】
他の代表的な実施形態では、ホスト・コンピュータ・システムに関連するキャッシュ・ストア、およびキャッシュ・ホスト・コントローラのリブートを通じてキャッシュ・ストアに情報を維持するデータ・ストアを管理するための方法が開示される。方法は、メタデータを格納するための第１の部分と、キャッシュ・ストアに属するデータとしてデータ記憶マネージャによって識別されたデータ値を格納するための第２の部分と、メタデータへの変更を格納するための第３の部分と、ホストおよびキャッシュ・ストアに関する情報を含む第４の部分とを提供するためにキャッシュ・ストアを区分するステップと、第１の部分の表現をメタデータで、第２の部分の表現をデータ記憶マネージャによって指示されたデータ値でポピュレートするステップであって、データ記憶マネージャは、データ記憶システムに格納された特定のデータ・アイテムに対して所望される回数を超える要求を表す頻度値により、キャッシュ・ストアに格納されるデータ・アイテムを識別するステップと、データ記憶マネージャによって指示されたように、第１の部分の表現にメタデータがポピュレートされ、第２の部分の表現にデータ値がポピュレートされるたびに第３の部分の表現にエントリを作成するステップであって、第１の部分、第２の部分、および第３の部分の表現は、ホスト・コンピュータ・システム、データ記憶マネージャ、およびキャッシュ・ホスト・コントローラの１つまたは複数を介してアクセス可能な揮発性メモリに格納されるステップと、第３の部分のデータ記憶容量に到達したときに、第３の部分のデータ記憶容量に到達したときを決定するために、第３の部分の表現における現在のインデックスを最初のインデックスと比較するステップと、キャッシュ・ストアの対応する第１のストアに第１の部分の表現における情報を書き込むステップと、最初のインデックスをキャッシュ・ストアの第３の部分における次に利用可能な保存場所に置き換えるステップとを含む。
【００１１】
代表的な実施形態では、キャッシュ・コントローラのリブートが完了するときに、処理システムは、キャッシュ・ストアの表現のコンテンツであって、ホスト・コンピュータ・システムにアクセス可能な揮発性メモリに格納され、次に使用可能なシーケンス番号をさらに含むコンテンツを読み込み、ホスト・コンピュータ・システムにアクセス可能な揮発性メモリにメタデータ・ストアのコンテンツをコピーし、回復されたメタデータを生成するためにメタデータ・ストアにおいて１つまたは複数のエントリ上に有効なログ・エントリを適用し、データ記憶システムからの対応するデータを用いて更新するために、適切なキャッシュ・ウィンドウを識別するために回復されたメタデータをトラバースし、適切なキャッシュ・ウィンドウの状態を変更し、ハッシュ・テーブルおよび優先度インデックスにキャッシュ・ウィンドウを挿入し、かつキャッシュ・メモリへのＩ／Ｏ動作が有効であることをデータ記憶システムに示すフラグを更新する実行可能命令を実行する。
【図面の簡単な説明】
【００１２】
【図１】ホスト・コンピュータおよび記憶システムに結合された従来のキャッシュ装置を示すブロック図である。
【図２】本発明の代表的な一実施形態による改善されたキャッシュ・コントローラを示すブロック図である。
【図３】図２のキャッシュ・ストアを示す概略図である。
【図４】図３のメタデータ・ストアを示す概略図である。
【図５】図３のログ・ストアを示す概略図である。
【図６】図２のホスト・メモリ表現またはキャッシュ・ストア・ミラーを示す概略図である。
【図７】時間の経過による図３のログ・ストアの使用を示す概略図である。
【図８】図２のキャッシュ・ソフトウェアを示す概略図である。
【図９Ａ】キャッシュ装置のリブートを通じて改善されたランプアップを達成するために、キャッシュ・ストアを管理するための方法を示す流れ図である。
【図９Ｂ】キャッシュ装置のリブートを通じて改善されたランプアップを達成するために、キャッシュ・ストアを管理するための方法を示す流れ図である。
【発明を実施するための形態】
【００１３】
キャッシュ・ストアを持ち、記憶システムに関連するキャッシュ・コントローラは、キャッシュ・コントローラのリブートを通じてキャッシュ・ストアに格納された情報を維持する。キャッシュ・コントローラは、ホスト・コンピュータ・システムおよびデータ記憶システムと通信する。改善されたキャッシュ・コントローラは、ホスト・コンピュータ・システムに結合されたフラッシュベースのキャッシュ装置で用いることができる。キャッシュ・コントローラは、メタデータ部分およびログ部分を含めるためにキャッシュ・メモリを区分する。分離した部分は、キャッシュされたデータ要素に使用される。キャッシュ・コントローラは、ホスト・コンピュータ・システムにアクセス可能な分離したメモリにメタデータのコピーを維持する。データは、メタデータ・ログがその容量に到達したときにキャッシュ・ストアに書き込まれる。リブート時に、メタデータはホスト・コンピュータ・システムにコピーして戻され、メタデータ・ログは、データ記憶システムおよび／またはキャッシュ・ストアに保存されていない追加の変更をキャッシュにコピーするためにトラバースされる。
【００１４】
図２に示すように、本発明の例示的または代表的な実施形態では、ホスト・システム１００は、データ・ストア１４０およびフラッシュベースのキャッシュ装置１３０に結合される。データ・ストア１４０は、ダイレクト・アタッチト・ストレージ（ＤＡＳ）またはストレージ・エリア・ネットワーク（ＳＡＮ）でもよい。これらの実施形態では、データ・ストア１４０は、データ記憶マネージャの指示のもとに、記憶アレイ１２（図１）に関して記述したものなど、複数のデータ記憶装置を含む。明瞭さのために本明細書には詳細には図示および記述しないが、データ記憶マネージャは、複数のデータ記憶装置を通じてデータを分散することによって、たとえばＲＡＩＤ５の保護など、ＲＡＩＤ保護を提供するように動作することを理解するべきである。
【００１５】
ＲＡＩＤコントローラ（図示せず）は、バスなどのインターフェースを介してデータ・ストア１４０と通信し、また、他のバスなど他のインターフェースを介してホスト（コンピュータ）システム１００と通信する。簡単のために、ＲＡＩＤコントローラおよびそのインターフェース、ホスト・システム１００、ならびにデータ・ストア１４０は、ホスト・システム１００とデータ・ストア１４０との間の２方向の矢印によって図２に示している。ＲＡＩＤコントローラは、ホスト・システム１００のマザーボードまたはバックプレーン（図示せず）にプラグ接続できるアセンブリまたは他の適切な構造に物理的に統合することができる。
【００１６】
ホスト・システム１００は、データ・ストア１４０にデータを格納し、データ・ストア１４０からデータを取得する。すなわち、アプリケーション・プログラム１２４または同様のソフトウェアにより動作する、ホスト・システム１００のプロセッサ１１０は、データ・ストア１４０からデータを読み込み、データ・ストア１４０にデータを書き込むための要求を発行する。アプリケーション・プログラム１２４は、メモリ１２０に格納されるか、または存在するような概念的な方法で描写されているが、そのようなソフトウェアは、複数のモジュール、セグメント、プログラム、ファイルなどの形式を取ることができ、それらは、従来のコンピュータ原理により必要に応じてメモリ１２０にロードされることを当業者は理解できることに留意されたい。同様に、メモリ１２０は、明瞭さのために単一の要素として描写しているが、メモリ１２０は、複数の要素を含むことができる。同様に、プロセッサ１１０は、明瞭さのために単一の要素として描写しているが、プロセッサ１１０は複数の要素を含むことができる。
【００１７】
アプリケーション・プログラム１２４に加えて、メモリ１２０は、データ・ファイルおよびプログラムを管理するためのファイル・システム１２２、キャッシュ・ストア・ミラー６００、およびキャッシュ・ソフトウェア８００をさらに含む。キャッシュ・ストア・ミラー６００のアーキテクチャおよび使用については、図６の図の記述に関して詳細に記述する。同様に、キャッシュ・ソフトウェア８００のアーキテクチャおよび動作は、図８の図の記述に関して詳細に記述する。
【００１８】
フラッシュベースのキャッシュ装置１３０は、キャッシュ・ストア３００のデータ・ストア１４０の最も頻繁にアクセスされるデータを戦略的にキャッシュすることによって、ＡＰＰ１２４などアプリケーションのパフォーマンスを改善するように配置される。キャッシュ・ソフトウェア８００などホスト・システム・ベースのソフトウェアは、データ・ストア１４０に格納された頻繁にアクセスされたデータ・アイテムを検出し、キャッシュ・ストア３００にそれらを格納するように設計されている。
【００１９】
フラッシュベースのキャッシュ装置１３０のキャッシュ・コントローラ（図示せず）は、バスなどのインターフェースを介してホスト・システム１００およびデータ・ストア１４０と通信する。フラッシュベースのキャッシュ装置１３０は、ホスト・システム１００のマザーボードまたはバックプレーン（図示せず）にプラグ接続できるアセンブリまたは他の適切な構造に物理的に統合することができる。好ましい実施形態では、フラッシュベースのキャッシュ装置１３０は、２方向の矢印によって描写されたPeripheral Component Interconnect Express2.0（ＰＣＩｅ）インターフェース・バスを介してホスト・システム１００に結合される。
【００２０】
図３は、図２のキャッシュ・ストア３００の概略図である。キャッシュ・ストア３００は、少なくとも４つの個別の記憶エリアに区分または分割される。第１の部分またはパーティションはヘッダー情報３１０を含む。第２の部分は、１組のキャッシュ・ウィンドウ３２０を含む。第３の部分は、メタデータ・ストア４００を含む。第４の部分は、ログ・ストア５００を含む。ヘッダー情報は、フラッシュベースのキャッシュ装置１３０（図１）の運転状態を示すフラグまたは他のインジケータ、ログ・ストア５００においてエントリのナビゲートに使用される次に使用可能なシーケンス番号、メタデータ・ストア４００の位置およびサイズを示す情報、ログ・ストア５００の位置およびサイズを示す情報とともに、第２の部分のキャッシュ・ウィンドウ３２２の数を示す情報を含む。キャッシュ・ストア３００のかなりの量の記憶容量が、キャッシュ・ウィンドウとして図に識別された領域に割り当てられる。各キャッシュ・ウィンドウは、所望のサイズのラインのキャッシュ・ブロックへとさらに細分される。
【００２１】
データ・ストア１４０の規定された領域にアクセスするＩ／Ｏ動作は、仮想キャッシュ・ウィンドウを割り当てられる。規定された領域に繰り返しアクセスされたとき（およびしきい値に到達した後）、仮想キャッシュ・ウィンドウ（ＶＣＷ）は、物理的なキャッシュ・ウィンドウに変換される。ＶＣＷが解放されている間、物理的なキャッシュ・ウィンドウ（ＣＷ）（つまりキャッシュ・ウィンドウ３２２の１つ）は、データ・ストア１４０の規定された領域からのデータで満たされる。ＣＷへの書き込み動作が正常に完了した後、規定された領域の次の読み込み要求は、データ・ストア１４０ではなくフラッシュベースのキャッシュ装置１３０によって処理される。
【００２２】
フラッシュベースのキャッシュ装置１３０がホスト・システム１００に最初に導入されるとき、キャッシュ・ウィンドウ・オブジェクトは、ホスト・メモリ１２０において割り当てられ、フリー・キャッシュ・ウィンドウ・リスト（free cache window list）（図示せず）に追加される。十分な数のＶＣＷオブジェクトも割り当てられ、フリー仮想キャッシュ・ウィンドウ・リスト（free virtual cache window list）に入れられる。Ｉ／Ｏ動作が受信されると、ハッシュ・テーブルでＶＣＷまたはＣＷが検索される。それが見つからない場合、ＶＣＷはフリー・リストから削除され、受信されたＩ／Ｏの領域を追跡するために使用される。このＶＣＷは、ここで、ハッシュ・テーブルに挿入される。ＶＣＷへの十分なアクセスを受信すると、物理的なＣＷがフリー・リストから取られる。キャッシュ・ウィンドウ３２２は、キャッシュ・ストア３００において１組のキャッシュ・ウィンドウ３２０の対応する位置で満たされる。キャッシュ・ストア３００が初めて初期化される場合、ヘッダー情報３１０は、次に使用可能なシーケンス番号０を含み、ログ・ストア５００およびメタデータ・ストア４００のエントリはすべて、所望の２進値（つまり論理０または論理１）に初期化される。
【００２３】
図４は、図３のメタデータ・ストア４００におけるエントリ４０２の概略図である。メタデータ・エントリ４０２は、キャッシュ・ストア３００に格納されたデータに関する情報を保持する１組のフィールドを含む。メタデータ・ストア４００の各エントリ４０２は、物理的なＣＷを表している（つまり、１組のキャッシュ・ウィンドウ３２０に格納されたキャッシュ・ウィンドウ３２２。メタデータ・ストア４００のサイズは、割り当てられたＣＷ３２２の数に依存する。メタデータ・ストア４００の各メタデータ・エントリ４０２は、キャッシュ・ストア３００における特定のＣＷ３２２をマッピングまたは識別する。各メタデータ・エントリ４０２は、仮想ディレクトリ識別子（ＶＤＩ）と、仮想ディレクトリ論理ブロック・アドレス（ＶＤ  ＬＢＡ）と、優先度インデックス（ＰＩ）と、キャッシュ・ストア３００に転送されたデータの範囲またはブロックに対するキャッシュ・ライン・ビットマップとを含む。各メタデータ・エントリ４００は、「ダーティ」ビットを格納するために予約されたストアをさらに含む。ダーティ・ビットは、データ・ストア１４０の対応する保存場所に転送されていない、キャッシュ・ストアのデータへの変更を記録する。
【００２４】
好ましい実施形態では、ＶＤＩは、１：１の関係で、データ・ストア１４０で６４までのデータ記憶装置に対応する６４までの仮想ディスクを識別するために、６ビットを含む。ＶＤ  ＬＢＡは、論理的なソース・アドレスまたは参照位置０から、参照から削除された６４ＴＢまでの位置の、キャッシュされるデータの範囲を識別するために２６ビットを含む。ＰＩは、ＣＷが論理的に挿入される１６の優先度レベルまたはキューを識別するために４ビットを含む。キャッシュ・ライン・ビットマップは、キャッシュ・ブロックのどれが使用されているかを示す。メタデータ・エントリ４０２におけるフィールドの代替的な配置（つまり位置およびビット長）が考えられる。
【００２５】
ホスト・システム１００のアプリケーションによってデータがどれくらい頻繁にアクセスされるかの測定を表すＰＩインデックスは、第１の優先度レベルまたはバケットでキャッシュ・ストア３００に移動し、時間とともに優先度レベルを上下する一部のＣＷで動的である。記憶容量がキャッシュ・コントローラによって使用されるため、頻繁にアクセスされないキャッシュされたＣＷが交換される。優先度インデックスによって、キャッシュ・コントローラは、領域内のキャッシュ・ヒットの重みに基づいてＣＷのデータを区別することができる。指定された時間内に十分な数のヒットがあった後に、特定のＣＷは、より高い優先度の値またはインデックスに昇格される。一定期間を通じて特定のＣＷが十分なＩ／Ｏ動作を受信していない場合、ＣＷは、より低い優先度レベルに降格される。記憶容量が利用できなくなると、ＣＷは、最も低い優先度レベルからそれを削除した後に再使用または再割り当てされる。
【００２６】
１ＴＢのキャッシュ・データ・ストア容量および１ＭＢのＣＷを持つ例示的な実施形態では、１００万のＣＷが必要である。１００万のＣＷを表すために、メタデータ・ストア４００は、８ＭＢの記憶容量が必要である。さらに６４ＭＢのデータ容量が、ログ・ストア５００に割り当てられるか、または区分される。ログ・ストア５００は、Ｉ／Ｏ動作が処理されるときに、割り当てられたＣＷ３２２のいずれかのメタデータへの更新を記録するために利用することができる。
【００２７】
各フラッシュベースのキャッシュ装置１３０についてメタデータ・ストア４００を構成および維持することによって、複数のフラッシュベースのキャッシュ装置を展開することができる。複数のフラッシュベースのキャッシュ装置１３０がそのように展開されると、キャッシュ・ソフトウェア８００は、指定されたグループ識別子を用いて装置を関連付けて追跡する。
【００２８】
図５は、図３のログ・ストア５００のエントリ５０２を示す概略図である。ログ・エントリ５０２は、メタデータ・エントリ４０２で提供されるのと同じ組のフィールドを含む。その情報に加えて、ログ・エントリ５０２は、エントリに利用可能なログ・ストアでの位置を識別するチェックポイントまたはシーケンス番号、およびキャッシュ・ストア３００において個々のＣＷ３２２を表すＣＷインデックスをさらに含む。
【００２９】
キャッシュ可能な領域が「ホット」（ホスト・システム１００で実行するアプリケーションまたはアプリケーション群によって頻繁にアクセスされるものとして識別されること）になるたびに、ＶＣＷは、物理的なＣＷに変換される。ＣＷ３２２のＩ／Ｏアクセスごとに、キャッシュ・ラインが満たされていない場合、データの所望の範囲（たとえば６４ＫＢ）は、データ・ストア１４０から取り出され、キャッシュ・ストア３００の対応する空間に満たされる。同時に、ＣＷ３２２内のキャッシュ・ライン・ビットマップで適切なビットが有効になる。Ｉ／Ｏ動作がキャッシュ・ラインおよび・またはＣＷ３２２にオーバラップする場合、特別な配慮が払われる。
【００３０】
ＣＷがフリー・プール（free pool）から利用される場合は常に、キャッシュ・ライン・ビットマップには変更があり、優先度バケット内のＣＷ昇格(promotion)／降格（demotion）が発生する。したがって、対応する情報は、ホスト・システム１００に関連するメモリ１２０に維持されるキャッシュ・ストア・ミラー６００（メタデータ・ストアおよびキャッシュ・ウィンドウ・オブジェクトの表現）で更新される。メタデータ・エントリの位置は、キャッシュ装置のＣＷの位置に基づいてメタデータ・ストア内で選択される。次に、ログ・エントリが生成され、キャッシュ・ストア３００のログ・ストア５００に記録される。ホスト・システムのＩ／Ｏは、すべてのメタデータ・トランザクションが完了すると完了する。
【００３１】
ログ・ストア５００に割り当てられた記憶装置（たとえば６４ＭＢ）にすべてのログ・エントリが満たされると、メタデータ・ブロックまたはメタデータ・ミラーのホスト・メモリ表現は、フラッシュベースのキャッシュ装置１３０のキャッシュ・ストア３００に書き込まれる。メタデータ・ストア４００の更新が成功した後に、キャッシュ・ストア３００のヘッダー情報３１０は、次に使用可能なログ・シーケンス番号で更新される。
【００３２】
図５に示したログ・エントリ配置は、ＣＷインデックスが２０ビットを割り当てられるときに、１ＴＢのキャッシュ・メモリ容量を提供するために、１００万までのＣＷを表すことができる。シーケンス番号は、ログ・ストア５００を循環（wrap around）できる値を持つ。ログ・エントリ５０２のフィールドの代替の配置（つまり位置およびビット長）が考えられる。
【００３３】
図６は、図２のホスト・メモリ表現またはキャッシュ・ストア・ミラー６００の概略図である。図６に示すように、キャッシュ・ソフトウェア８００は、ホスト・システム・メモリ１２０にキャッシュ・ストア・ミラー６００を維持する。キャッシュ・ストア・ミラーは、フラッシュベースのキャッシュ装置１３０のキャッシュ・ストア３００からのメタデータ・ストアのコピーを含み、キャッシュ・ストア３００に転送するように指定されたＣＷからのキャッシュ・ウィンドウ・オブジェクトを保持する。上記のように、キャッシュ・ストア３００においてログ・ストア５００がその記憶容量に到達した後のみ、キャッシュ・ストア３００の情報を更新するために、キャッシュ・ストア・ミラー６００の情報が使用される。
【００３４】
図７は、時間の経過による図３のログ・ストア５００の使用を示す概略図である。図７に示すように、ログ・エントリ７１２はログ・ストア５００に記録されるため、それらは、矢印７１０によって概略的に示した最初のチェックポイントまたはシーケンス番号で始まり連続的な方法で追加される。上記のように、最初のシーケンス番号は、キャッシュ・ストア３００のヘッダー情報３１０に規定される。
【００３５】
図８は、図２のキャッシュ・ソフトウェア８００の概略図である。図示する実施形態では、様々な論理要素またはモジュールが、キャッシュ・ソフトウェア８００の個々のコンポーネントとして互いに離れて示されている。この点で、キャッシュ・ソフトウェア８００は、管理ロジック８０５、パーティション・ロジック８１０、キャッシュ・ストア・ロジック８１２、ログ・エントリ・ロジック８１４、比較ロジック８１６、およびメタデータ回復ロジック８１８を含む。管理ロジック８０５は、プロセッサによって実行されたときに、データ・ストア１４０との間、およびフラッシュベースのキャッシュ装置１３０との間で、Ｉ／Ｏ動作を含むホスト・システム１００内のデータ操作を調整する実行可能命令を含む。動作において、管理ロジック８０５は、フラッシュベースのキャッシュ装置１３０にキャッシュされるべきデータ・ストア１４０のデータを識別するデータ記憶マネージャを有効にする。
【００３６】
パーティション・ロジック８１０は、プロセッサによって実行されたときに、フラッシュベースのキャッシュ装置１３０のキャッシュ・ストア３００内のヘッダー情報３１０、ＣＷストア３２０、メタデータ・ストア４００、およびログ・ストア５００の相対的な配置およびサイズを調整する実行可能命令を含む。パーティション・ロジック８１０は、データ・ストア１４０およびフラッシュベースのキャッシュ装置１３０の特性を識別する１つまたは複数の入力パラメータにより、メタデータ・ストア４００およびログ・ストア５００の最適なサイズおよび配置を計算するためのルールおよびアルゴリズムを含むことができる。
【００３７】
キャッシュ・ストア・ロジック８１２は、プロセッサによって実行されたときに、フラッシュベースのキャッシュ装置１３０との間のＩ／Ｏ動作を調整する実行可能命令を含む。上記のように、キャッシュ・ストア・ロジック８１２は、ＶＣＷ、ＣＷ、ＶＣＷフリー・リストを管理し、テーブル、及び優先度リストまたはバケットを持つ。キャッシュ・ストア・ロジック８１２は、フラッシュベースのキャッシュ装置１３０に転送されるべき、そこに格納されたデータ・アイテムを識別するために、ホスト・システム１００とデータ・ストア１４０との間のＩ／Ｏ動作を監視するモジュールに統合することができる。あるいは、キャッシュ・ストア・ロジック８１２は、ホスト・システム１００で実行され、そのような「ホット」なデータを識別するように構成された分離したアプリケーションから入力を受信することができる。さらに、キャッシュ・ストア・ロジック８１２は、エントリ４０２の形で適切に配置された情報のメタデータ・ストア４００への転送を指示する。
【００３８】
図５に示した実施形態に関して図示し、上に記述したように、ログ・エントリ・ロジック８１４は、プロセッサによって実行されたときに、ログ・ストア５００の適切に配置されたログ・エントリ５０２に、どの情報を転送するかを決定する実行可能命令を含む。また、上に示したように、ログ・エントリ・ロジック８１４は、最初のインデックスまたはシーケンス番号を取得し、ログ・エントリのそれぞれを連続して入力し、各ログ・エントリは、キャッシュ・ストア３００のＣＷ３２２と１：１関係で、かつメタデータ・ストア４００のエントリと同様に情報フィールドを介してデータ・ストア１４０に配置されたデータ・アイテムにマッピングされることになる。
【００３９】
比較ロジック８１６は、プロセッサによって実行されたときに、ログ・ストア５００の有効なログ・エントリを決定する実行可能命令を含む。この点で、各エントリのシーケンス番号は、次のエントリと比較される。一意の増分するシーケンス番号が用いられる。結果的に、シーケンス番号の差が０または１である限り、ログ・エントリは有効である（そしてメタデータ４００に適用される）。差が０または１でない場合、比較ロジック８１６は、プロセスが無効なログ・エントリに到達したことを示し、それ以上のログの処理は終了する。上記のように、ヘッダー情報３１０は、比較に使用される第１のシーケンス番号を提供する。
【００４０】
初期化プロセスの間に、ランダムなシーケンス番号が選択される。ランダムなシーケンス番号は、キャッシュ・ストアのヘッダー情報に記録される。最初のログ・エントリは、ヘッダー情報に格納されたシーケンス番号を使用する。次のログ・エントリについては、シーケンス番号は１ずつ増分される。また、上に示したように、シーケンス番号は、処理が、ログ・ストア５００の終わりからログ・ストア５００の始めに折り返す方法で配置される。ログが一杯の場合、０または１でない差値によって決定されるように、揮発性メモリのメタデータは、キャッシュ・ストアに書き込まれ、シーケンス番号は１つ増分されてヘッダー情報に格納される。ログへの次の更新は、シーケンス番号によって識別されたログ位置にある。
【００４１】
メタデータ回復ロジック８１８は、プロセッサによって実行されたときに、メタデータ・ストア４００のコンテンツおよびログ・ストア５００の有効なエントリからキャッシュ・ミラー６００を再構築するために、一連の活動を実行する実行可能命令を含む。最初に、キャッシュ・ストア３００のレイアウトを理解し、次に使用可能なシーケンス番号を取得するために、キャッシュ・ストア３００のヘッダー情報３１０が読み込まれる。メタデータ・ストア４００のコンテンツは、ホスト・システム１００のメモリ１２０のキャッシュ・ミラー６００にコピーされる。第１のログ・エントリは、ヘッダー情報３１０から回復された次に使用可能なシーケンス番号と照合される。シーケンス番号が一致する場合、ログ・エントリは有効であり、ログ・エントリに関連するデータが回復されるべきである。その後、シーケンス番号は増分され、有効なログ・エントリの有無がチェックされる。有効なログ・エントリは、キャッシュ・ミラー６００上に適用される。シーケンス番号が一致しない場合、最新のメタデータはキャッシュ・ストアに格納され、ログの処理は終了する。キャッシュ・ミラー６００のメタデータはトラバース（traverse）され、適切なＣＷが更新される。回復されたメタデータは、キャッシュ・ストアに書き込まれ、次に使用可能なシーケンス番号はヘッダー情報３１０に格納される。これらのＣＷはフリー・リストから削除され、適切な優先度インデックスまたは値でハッシュ・テーブルおよび優先度リストに挿入される。さらに、適切な相対的な「ホットさ(hotness)」の範囲でＣＷが識別されることを保証するために、ＣＷヒット・カウントは、優先度インデックスまたはバケットおよびプロモーションしきい値に応じて初期化される。その後、ホストのＩ／Ｏ動作が許可される。次のログ・エントリは、ヘッダー情報３１０に格納されたシーケンス番号によりログ・ストアに格納される。
【００４２】
図９Ａおよび図９Ｂは、キャッシュ装置のリブートを通じて改善されたランプアップを達成するために、キャッシュ・ストアを管理するための方法９００を示す流れ図を含む。ランプアップは、キャッシュ・コントローラがリブート動作から回復するのに必要な時間である。回復によって、キャッシュ・ストア３００は、すべての「ホットさ」および優先度のキュー特性を含む有効な状態へと回復することが意図される。別の言い方をすれば、キャッシュ履歴は損失なく回復される。
【００４３】
方法９００は、リブート動作を通じてメタデータを維持できるシステムを確立するための予備ステップを含むステップ、およびリブートからのシステム回復を検出したときに実行されるステップを含むことを理解されたい。方法９００はブロック９０２から始まり、ここで、キャッシュ・ストアは、メタデータ・ストア、ログ・ストア、１組のＣＷ、およびヘッダー情報ストアをサポートするために分割される。ブロック９０４では、メタデータ・コピーおよびＣＷオブジェクトのコピーは、ホスト・システムにアクセス可能な分離したメモリにポピュレート(populate)される。ブロック９０６では、メタデータ・コピーおよびＣＷオブジェクトが分離したメモリに格納されたコピーで更新されるたび、キャッシュ装置のログ・ストアにエントリが作成される。ブロック９０８では、ログ・ストアの現在のインデックスまたはシーケンス番号は、ログ・ストアの容量にいつ到達したかを決定するために、最初のインデックスまたはチェックポイントと比較される。判定ブロック９１０では、ログが一杯かどうかに関して決定が行われる。ログが一杯でない場合、判定ブロック９１０から出ている「いいえ」と書かれたフロー制御の矢印によって示されているように、処理はブロック９０６に戻る。そうでない場合、処理はブロック９１２へと継続し、ここで、分離したメモリのメタデータ・コピーおよびＣＷオブジェクトは、キャッシュ・ストアに転送される。その後、ブロック９１４に示したように、ヘッダー情報の最初のインデックスまたはシーケンス番号は、分離したメモリの次に利用可能な保存場所に置き換えられる。
【００４４】
結合子Ａによって示すように、方法９００は、判定ブロック９１６へと継続し、ここで、キャッシュ装置がリブート動作から回復したかどうかが決定される。回復していない場合、結合子Ｂ(Connector B)によって示すように処理はブロック９０６へと継続する。そうでない場合、システムはリブートが完了して処理はブロック９１８へと継続し、ここで、状態フラグは、キャッシュ装置１３０からホストのＩ／Ｏ動作をサスペンドするように設定され、ログで次に利用可能な保存場所を識別するために、ヘッダー情報がキャッシュ・ストアから読み込まれる。ブロック９２０では、キャッシュに格納されたメタデータのコンテンツは、ホスト・システムにアクセス可能な分離したメモリのメタデータ・ミラーにコピーされる。ブロック９２２では、有効なログ・エントリはメタデータ上に適用される。ブロック９２４では、回復されたメタデータは、データ記憶システムからの情報で更新される必要のあるＣＷを識別するために処理される。ブロック９２６では、ＣＷはフリー・リストから削除され、ハッシュ・テーブルで更新されて、優先度インデックスにより適切な位置に挿入される。ブロック９２８では、カウンターは、優先度インデックスのプロモーションしきい値により初期化される。その後、判定ブロック９３２に示すように、次のログ・エントリが有効かどうかに関して決定が行われる。有効な場合、インデックスは、ブロック９３２に示したように一意のシーケンス番号で増分され、処理はブロック９２４に戻る。そうでない場合、すべてのログ・エントリの処理が完了し、Ｉ／Ｏ動作が有効であることを示すために、ブロック９３４で状態フラグがリセットされる。
【００４５】
その結果、キャッシュが一杯で、新しいデータ要素がキャッシュに属するものと識別されている場合、キャッシュ・コントローラは、ＣＷ置き換えの適切な候補として、リブートの直前の期間に比較的低いＩ／Ｏ要求を受信したＣＷを識別する。このようにして、改善されたキャッシュ・コントローラは、キャッシュ・ストアから比較的「よりホットな(hotter)」データ領域を破棄する代わりに、比較的低いＩ／Ｏ要求を受信するＣＷを再使用する。
【００４６】
ＣＷが頻繁に昇格(promote)または降格(demote)される場合にログ更新の頻度を減らすために、ログ・エントリにおける更新の粒度を変更することができる。たとえば、優先度レベルの２５％を超えてＣＷが昇格または降格された場合、レベルの数に関係なく、１つのログ・エントリだけが記録される。
【００４７】
図９Ａおよび図９Ｂの流れ図は、上記の方法の基礎となるロジックの代表または例示のみを意図していることを理解されるだろう。様々な実施形態において、キャッシュ処理システムまたはキャッシュ・コントローラを含むデータ処理システムは、上記の方法を達成するために様々な方法のいずれかでプログラムまたは構成できることを当業者は理解されるだろう。上記のステップまたは動作は、並行して、または相互に非同期的になど、任意の適切な順序または連続で発生することができる。図９Ａおよび図９Ｂに関して上に記述したステップまたは動作は、他のステップまたは動作と組み合わせることも、または一部の実施形態では省略することもできる。明瞭さのために図９Ａおよび図９Ｂに流れ図の形で描写しているが、基礎をなすロジックは、モジュール化することも、または任意の適切な方法で配置することもできる。当業者は、上記の方法を達成するために、特定用途向け集積回路（ＡＳＩＣ）もしく同様の装置または装置の組合せの形などで、適切なソフトウェアまたは適切なロジックを容易にプログラムまたは構成することができるだろう。また、ソフトウェア命令または同様のロジックと、ローカル・メモリ１２０またはプロセッサ１１０によって実行するために、そのようなソフトウェア命令または同様のロジックが格納または統合化されている他のメモリとの組合せは、その用語が特許用語集に使用されるように、「コンピュータ可読媒体」または「コンピュータ・プログラム製品」を含むことを理解するべきである。
【００４８】
本発明は、本発明の原理および概念を示す目的で、１つまたは複数の代表的な実施形態に関して記述していることを留意されたい。本発明は、これらの実施形態に限定されない。当業者には理解されるように、本明細書で提供される記述を考慮して、本明細書に記述した実施形態には多数の変形形態を構成することができ、そのような変形形態はすべて、特許請求の範囲に規定される本発明の範囲内にある。
【図１】
2014174992.tif 000003
【図２】
2014174992.tif 000004
【図３】
2014174992.tif 000005
【図４】
2014174992.tif 000006
【図５】
2014174992.tif 000007
【図６】
2014174992.tif 000008
【図７】
2014174992.tif 000009
【図８】
2014174992.tif 000010
【図９Ａ】
2014174992.tif 000011
【図９Ｂ】
2014174992.tif 000012