(57)【特許請求の範囲】
【請求項１】
第１キャッシュと、第２キャッシュと、ストレージ・システムとを含むキャッシュ・システムにおいてデータを管理する動作をコンピュータに実行させるコンピュータ・プログラムであって、
前記ストレージ・システム内に格納されているトラックであって、前記第１キャッシュからデモートする前記トラックを決定することと、
前記決定されたデモートするトラックからなる第１ストライドを形成することと、
前記第２キャッシュ内の第２ストライドであって、前記第１ストライド内の前記トラックを含めるための前記第２ストライドを決定することと、
前記第１ストライドからの前記トラックを、前記第２キャッシュ内の前記第２ストライドに追加することと、
前記第２キャッシュ内のストライド内のトラックであって、前記第２キャッシュからデモートする前記トラックを決定することと、
前記決定されたトラックを、前記第２キャッシュから、デモートすることと、
をコンピュータに実行させる、コンピュータ・プログラム。
【請求項２】
前記第１キャッシュは、前記第２キャッシュよりも高速アクセスのデバイスであり、前記第２キャッシュは、前記ストレージ・システムよりも高速アクセスのデバイスである、請求項１に記載のコンピュータ・プログラム。
【請求項３】
前記第１キャッシュは、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）を含み、前記第２キャッシュは、複数のフラッシュ・デバイスを含み、前記ストレージ・システムは、前記フラッシュ・デバイスよりも低速アクセスの複数のデバイスからなる、請求項１に記載のコンピュータ・プログラム。
【請求項４】
前記決定された、前記第２キャッシュからデモートするトラックは、前記第２キャッシュ内の別々のストライドからのものである、請求項１に記載のコンピュータ・プログラム。
【請求項５】
前記動作は、
前記決定された、前記第２キャッシュからデモートするトラックを、無効として示すこと
をさらに含み、
前記第２キャッシュ内のストライドは、有効トラックおよび無効トラックを含む、請求項１に記載のコンピュータ・プログラム。
【請求項６】
前記動作は、
前記第１キャッシュ内のトラックに対する書き込みを受領することと、
前記書き込みを受領する前記トラックが、前記第２キャッシュ内に含まれているかどうかを判断することと、
前記第１キャッシュにおいて書き込まれた前記トラックが前記第２キャッシュ内に含まれていると判断するのに応答して、前記第１キャッシュにおいて更新された、前記第２キャッシュ内の前記トラックを無効にすることと、
をさらに含む、請求項１に記載のコンピュータ・プログラム。
【請求項７】
前記動作は、
前記第２キャッシュ内のストライドをまとめるかどうかを決定することと、
ストライドをまとめることを決定するのに応答して、以下のこと：
何らのトラックも有しない利用可能なストライドを１つ判断すること、
有効トラックおよび無効トラックの両方を有する少なくとも２つのストライドを判断すること、
前記少なくとも２つのストライドからの前記有効トラックを、前記判断された利用可能なストライド内に統合すること、
を実行することと、
をさらに含み、前記少なくとも２つのストライドは、前記第１キャッシュからデモートされたストライドからのトラックを格納するために利用可能である、請求項１に記載のコンピュータ・プログラム。
【請求項８】
ストライドをまとめるかどうかの前記決定は、前記第１キャッシュからデモートされた前記ストライド内の前記トラックを、前記第２キャッシュ内の利用可能な１つのストライドに書き込んだ後、すべて空きのトラックを有する利用可能なストライドが１つのみあると判断するのに応答して実行される、請求項７に記載のコンピュータ・プログラム。
【請求項９】
トラックの前記第１ストライドを形成することは、データのトラックを格納するためのｍ個のデバイスと、前記ｍ個のデバイスに関して前記データのトラックから計算されたパリティ・データを格納する少なくとも１つのパリティ・デバイスとを含むｎ個のデバイスを有するものとして前記第２キャッシュに関して定義されている、独立ディスク冗長アレイ（ＲＡＩＤ）構成に基づくＲＡＩＤ構成向けのストライドを形成することを含む、請求項１に記載のコンピュータ・プログラム。
【請求項１０】
前記第１キャッシュは、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）を含み、前記第２キャッシュは、ｎ個のソリッド・ステート・ストレージ・デバイスを含み、前記第１キャッシュからのトラックの前記第１ストライドは、前記第２キャッシュ内の前記第２ストライドを形成するために、前記ｎ個のソリッド・ステート・ストレージ・デバイスにわたってストライピングされる、請求項９に記載のコンピュータ・プログラム。
【請求項１１】
前記動作は、
前記第１キャッシュ内のトラックに関する第１最長時間未使用（ＬＲＵ）リストを使用することであって、デモートする前記トラックは、前記第１ＬＲＵリストから判断される、前記使用することと、
前記第２キャッシュからデモートするトラックを決定するために、前記第２キャッシュ内のトラックに関する第２ＬＲＵリストを使用することと、
をさらに含む、請求項１に記載のコンピュータ・プログラム。
【請求項１２】
前記第１キャッシュは、変更済みのデータまたは未変更のデータを含むトラックを格納し、前記第２キャッシュにプロモートするために前記第１キャッシュにおいてストライド単位に形成されたトラックは、未変更のデータを含み、前記動作は、
変更済みのトラックを、前記第１キャッシュから前記ストレージ・システムにデステージングすることと、
前記デステージングされた変更済みのトラックを、未変更のトラックとして示すことと、
をさらに含み、
前記未変更のトラックとして示された、前記デステージングされた変更済みのトラックは、前記第２キャッシュにプロモートされる前記第１ストライド内に含まれる資格がある、請求項１１に記載のコンピュータ・プログラム。
【請求項１３】
ストレージ・システムと通信しているシステムであって、
プロセッサと、
前記プロセッサがアクセスできる第１キャッシュと、
前記プロセッサがアクセスできる第２キャッシュと、
動作を実行するためのプログラムとを含む、前記システムであって、
前記動作は、
前記ストレージ・システム内に格納されているトラックであって、前記第１キャッシュからデモートする前記トラックを決定することと、
前記決定されたデモートするトラックをからなる第１ストライドを形成することと、
前記第２キャッシュ内の第２ストライドであって、前記第１ストライド内の前記トラックを含めるための前記第２ストライドを決定することと、
前記第１ストライドからの前記トラックを、前記第２キャッシュ内の前記第２ストライドに追加することと、
前記第２キャッシュ内のストライド内のトラックであって、前記第２キャッシュからデモートする前記トラックを決定することと、
前記決定されたトラックを、前記第２キャッシュから、デモートすることと、
を含む、システム。
【請求項１４】
前記第１キャッシュは、前記第２キャッシュよりも高速アクセスのデバイスであり、前記第２キャッシュは、前記ストレージ・システムよりも高速アクセスのデバイスである、請求項１３に記載のシステム。
【請求項１５】
前記決定された、前記第２キャッシュからデモートするトラックは、前記第２キャッシュ内の別々のストライドからのものである、請求項１３に記載のシステム。
【請求項１６】
前記動作は、
前記第１キャッシュ内のトラックに対する書き込みを受領することと、
前記書き込みを受領する前記トラックが、前記第２キャッシュ内に含まれているかどうかを判断することと、
前記第１キャッシュにおいて書き込まれた前記トラックが前記第２キャッシュ内に含まれていると判断するのに応答して、前記第１キャッシュにおいて更新された、前記第２キャッシュ内の前記トラックを無効にすることと、
をさらに含む、請求項１３に記載のシステム。
【請求項１７】
前記動作は、
前記第２キャッシュ内のストライドをまとめるかどうかを決定することと、
ストライドをまとめることを決定するのに応答して、以下のこと：
何らのトラックも有しない利用可能なストライドを１つ判断すること、
有効トラックおよび無効トラックの両方を有する少なくとも２つのストライドを判断すること、
前記少なくとも２つのストライドからの前記有効トラックを、前記判断された利用可能なストライド内に統合すること、
を実行することと、
をさらに含み、前記少なくとも２つのストライドは、前記第１キャッシュからデモートされたストライドからのトラックを格納するために利用可能である、請求項１３に記載のシステム。
【請求項１８】
トラックの前記第１ストライドを形成することは、データのトラックを格納するためのｍ個のデバイスと、前記ｍ個のデバイスに関して前記データのトラックから計算されたパリティ・データを格納する少なくとも１つのパリティ・デバイスとを含むｎ個のデバイスを有するものとして前記第２キャッシュに関して定義されている、独立ディスク冗長アレイ（ＲＡＩＤ）構成に基づくＲＡＩＤ構成向けのストライドを形成することを含む、請求項１３に記載のシステム。
【請求項１９】
前記動作は、
前記第１キャッシュ内のトラックに関する第１最長時間未使用（ＬＲＵ）リストを使用することであって、デモートする前記トラックは、前記第１ＬＲＵリストから判断される、前記使用することと、
前記第２キャッシュからデモートするトラックを決定するために、前記第２キャッシュ内のトラックに関する第２ＬＲＵリストを使用することと、
をさらに含む、請求項１３に記載のシステム。
【請求項２０】
前記第１キャッシュは、変更済みのデータまたは未変更のデータを含むトラックを格納し、前記第２キャッシュにプロモートするために前記第１キャッシュにおいてストライド単位に形成されたトラックは、未変更のデータを含み、前記動作は、
変更済みのトラックを、前記第１キャッシュから前記ストレージ・システムにデステージングすることと、
前記デステージングされた変更済みのトラックを、未変更のトラックとして示すことと、
をさらに含み、前記未変更のトラックとして示された、前記デステージングされた変更済みのトラックは、前記第２キャッシュにプロモートされる前記第１ストライド内に含まれる資格がある、請求項１９に記載のシステム。
【請求項２１】
キャッシュ・システムにおいてデータを管理する方法であって、
ストレージ・システム内に格納されているトラックであって、第１キャッシュからデモートする前記トラックを決定するステップと、
前記決定されたデモートするトラックからなる含む第１ストライドを形成するステップと、
第２キャッシュ内の第２ストライドであって、前記第１ストライド内の前記トラックを含めるための前記第２ストライドを決定するステップと、
前記第１ストライドからの前記トラックを、前記第２キャッシュ内の前記第２ストライドに追加するステップと、
前記第２キャッシュ内のストライド内のトラックであって、前記第２キャッシュからデモートする前記トラックを決定するステップと、
前記決定されたトラックを、前記第２キャッシュから、デモートするステップと、
を含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第２キャッシュ内の第２ストライド（ｓｔｒｉｄｅ）に書き込むために、第１キャッシュからのトラックの第１ストライドをポピュレートするためのコンピュータ・プログラム製品、システム、および方法に関する。
【背景技術】
【０００２】
キャッシュ管理システムは、読み取りおよび書き込み動作の結果として最近アクセスされたストレージ・デバイス内のトラックを、要求されたトラックを格納しているストレージ・デバイスよりも高速アクセスのストレージ・デバイス、例えばメモリなどに、バッファリングする。より高速アクセスのキャッシュ・メモリ内のトラックに対する後の読み取り要求は、要求されたトラックをより低速アクセスのストレージから返すよりも、高速に返され、読み取り待ち時間が削減される。キャッシュ管理システムはさらに、ストレージ・デバイスを対象とする変更されたトラックがキャッシュ・メモリに書き込まれると、その変更されたトラックがハード・ディスク・ドライブなどのストレージ・デバイスに書き出される前に、書き込み要求に対して完了を返すこともある。ストレージ・デバイスに対する書き込み待ち時間は、典型的には、キャッシュ・メモリに対する書き込みのための待ち時間よりも大幅に長い。したがって、キャッシュの使用は、書き込み待ち時間も削減する。
【０００３】
キャッシュ管理システムは、ストレージ・デバイスへの書き込みの前にキャッシュ内にバッファリングされた書き込みデータまたは読み取りデータを含み得る、キャッシュ内に格納されている各トラックに対し１つのエントリを有する、連結リストを保持してもよい。一般に使用されている最長時間未使用（ＬＲＵ：Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）キャッシュ技術では、キャッシュ内のトラックがアクセスされる場合、すなわちキャッシュ「ヒット」の場合、アクセスされたトラックに関するＬＲＵリスト内のエントリが、リストの最短時間未使用（ＭＲＵ：Ｍｏｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）側（ｅｎｄ）に移動される。要求されたトラックがキャッシュ内にない場合、すなわちキャッシュ・ミスの場合、リストのＬＲＵ側にそのエントリがあるキャッシュ内のトラックが削除され（またはデステージングされてストレージに戻され）てもよく、ストレージからキャッシュへとステージングされたトラック・データに関するエントリが、ＬＲＵリストのＭＲＵ側に追加される。このＬＲＵキャッシュ技術を用いると、アクセス頻度のより高いトラックはキャッシュ内に残る可能性が高く、アクセス頻度のより低いデータは、新たにアクセスされたトラックのためにキャッシュ内に空きを作るべく、リストのＬＲＵ側から削除される可能性がより高くなる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
当技術分野では、ストレージ・システムにおいてキャッシュを使用するための改善された技術に対するニーズがある。
【課題を解決するための手段】
【０００５】
第１キャッシュと、第２キャッシュと、ストレージ・システムとを含むキャッシュ・システムにおいてデータを管理するためのコンピュータ・プログラム製品、システム、および方法が提供される。ストレージ・システム内に格納されたトラックであって、第１キャッシュからデモート（ｄｅｍｏｔｅ）する該トラックについて決定が下される。決定されたデモートするトラックを含む第１ストライドが形成される。第２キャッシュ内の第２ストライドであって、第１ストライド内のトラックを含めるための該第２ストライドについて決定が下される。第１ストライドからのトラックが、第２キャッシュ内の第２ストライドに追加される。第２キャッシュ内のストライド内のトラックであって、第２キャッシュからデモートする該トラックについて決定が下される。決定された、第２キャッシュからデモートするトラックが、デモートされる。
【図面の簡単な説明】
【０００６】
【図１】コンピューティング環境の実施形態を示す。
【図２】第１キャッシュ管理情報の実施形態を示す。
【図３】第２キャッシュ管理情報の実施形態を示す。
【図４】第１キャッシュ制御ブロックの実施形態を示す。
【図５】第２キャッシュ制御ブロックの実施形態を示す。
【図６】ストライド情報の実施形態を示す。
【図７】第２キャッシュＲＡＩＤ構成の実施形態を示す。
【図８】ストレージＲＡＩＤ構成の実施形態を示す。
【図９】第２キャッシュにプロモート（ｐｒｏｍｏｔｅ）するために、未変更の非順次トラックを第１キャッシュからデモートする動作の実施形態を示す。
【図１０】第１キャッシュにトラックを追加する動作の実施形態を示す。
【図１１】第１ストライドからのトラックを第２ストライドに追加する動作の実施形態を示す。
【図１２】第２キャッシュ内の領域を解放する動作の実施形態を示す。
【図１３】第２キャッシュ内のストライドを解放する動作の実施形態を示す。
【図１４】読み取り要求に対して返すトラックの要求を処理する動作の実施形態を示す。
【発明を実施するための形態】
【０００７】
記載される実施形態は、キャッシュ・プロモーション動作（ｃａｃｈｅ  ｐｒｏｍｏｔｉｏｎ  ｏｐｅｒａｔｉｏｎ）の効率を改善するために、トラックが第２キャッシュ内のストライドにフルストライド書き込み（ｆｕｌｌ  ｓｔｒｉｄｅ  ｗｒｉｔｅ）として書き込まれることができるように、トラックをストライド単位で第１キャッシュからプロモートする技術を提供する。さらに、トラックがストライドとして第１キャッシュ１４から第２キャッシュ１８にプロモートされる一方で、ＬＲＵアルゴリズムなどのキャッシュ・デモーション・アルゴリズム（ｃａｃｈｅ  ｄｅｍｏｔｉｏｎ  ａｌｇｏｒｉｔｈｍ）に従って、トラックがトラック毎に第２キャッシュ１８からデモートされる。さらに、第１キャッシュからさらなるトラックのストライドを受領するために第２キャッシュ内のストライドを解放するべく、一部が埋まった、すなわち有効トラックおよび無効トラックを有する第２キャッシュ内のストライドが、１つのストライド内に統合されてもよく、その結果、第２キャッシュは、第１キャッシュ内のトラックから形成されるストライドのために空きストライドが利用可能な状態を保持する。
【０００８】
図１は、コンピューティング環境の実施形態を示す。複数のホスト２ａ、２ｂ…２ｎが、ストレージ１０内のボリューム８（例えば、論理ユニット番号、論理デバイス、論理サブシステムなど）にあるデータにアクセスするために、入出力（Ｉ／Ｏ：Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）要求を、ネットワーク６上でストレージ・コントローラ４に送ってもよい。ストレージ・コントローラ４は、単一または複数のコアを備える１つ以上のプロセッサを含むプロセッサ・コンプレックス１２と、第１キャッシュ１４と、第２キャッシュ１８とを含む。第１キャッシュ１４および第２キャッシュ１８は、ホスト２ａ、２ｂ…２ｎとストレージ１０との間で転送されるキャッシュ・データをキャッシュする。
【０００９】
ストレージ・コントローラ４は、ホスト２ａ、２ｂ…２ｎとストレージ１０との間で転送されるトラックの転送を管理するストレージ・マネージャ２２、ならびにホスト２ａ、２ｂ…２ｎとストレージ１０との間で転送されるデータを第１キャッシュ１４および第２キャッシュ１８において管理するキャッシュ・マネージャ２４を含む、メモリ２０を有する。トラックは、トラック、論理ブロック・アドレス（ＬＢＡ：Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）など、ストレージ１０において構成される任意のデータのユニットを含むことができ、これは、トラックのより大きなまとまり、例えばボリューム、論理デバイスなどの一部である。キャッシュ・マネージャ２４は、第１キャッシュ管理情報２６および第２キャッシュ管理情報２８を保持して、第１キャッシュ１４および第２キャッシュ１８内の読み取り（未変更）トラックおよび書き込み（変更済み）トラックを管理する。
【００１０】
ストレージ・マネージャ２２およびキャッシュ・マネージャ２４は、メモリ２０内にロードされプロセッサ・コンプレックス１２により実行されるプログラム・コードとして図１に示されている。あるいは、その機能の一部または全部は、特定用途向け集積回路（ＡＳＩＣ：Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）など、ストレージ・コントローラ４内のハードウェア・デバイスに実装されてもよい。
【００１１】
第２キャッシュ１８は、ログ構造化アレイ（ＬＳＡ：ｌｏｇ  ｓｔｒｕｃｔｕｒｅｄ  ａｒｒａｙ）３２にトラックを格納してもよく、ＬＳＡ３２では、トラックが、受領されるとおりの連続した順序で書き込まれ、よって、第２キャッシュ１８に書き込まれるトラックの時間的な順序づけが提供される。ＬＳＡでは、ＬＳＡに既に存在するトラックのより最近のバージョンが、ＬＳＡ３２の最後に書き込まれる。別の実施形態では、第２キャッシュ１８は、ＬＳＡにおけるのとは異なる形式でデータを格納してもよい。
【００１２】
メモリ２０は、第２キャッシュ１８内に格納するトラックのストライドをどのように形成するかを決定するために使用されるＲＡＩＤ構成に関する情報を提供する、第２キャッシュＲＡＩＤ構成情報３４をさらに含む。一実施形態では、第２キャッシュ１８は、別々のソリッド・ステート・ストレージ・デバイス（ＳＳＤ：ｓｏｌｉｄ  ｓｔａｔｅ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅ）などの複数のストレージ・デバイスからなってもよく、その結果、第１キャッシュ１４からのトラックから形成されるストライドが、第２キャッシュ１８を形成する複数のフラッシュ・メモリなどの別々のストレージ・デバイスにわたってストライピング（ｓｔｒｉｐｅ）される。さらなる実施形態では、第２キャッシュ１８は、１つのフラッシュ・メモリなど、単一のストレージ・デバイスを含んでもよく、その結果、トラックは、第２キャッシュＲＡＩＤ構成３４により定義されるストライドにグループ化されるが、第２キャッシュ１８を実装する１つのフラッシュ・メモリなどの単一デバイスにストライドとして書き込まれる。第２キャッシュＲＡＩＤ構成３４向けに構成されたストライドのトラックは、第２キャッシュ１８デバイス内のＬＳＡ３２に書き込まれてもよい。第２キャッシュＲＡＩＤ構成３４は、例えばレベル５、１０など、種々のＲＡＩＤレベルを指定してもよい。
【００１３】
メモリ２０は、第１キャッシュ１４、または第２キャッシュ１８が変更済みのデータを格納しなければならない場合は第２キャッシュ１８から、ストレージ・システム１０にトラックをどのように書き込むかを決定するために使用されるＲＡＩＤ構成に関する情報を提供する、ストレージＲＡＩＤ構成情報３６をさらに含み、ストレージ・システム１０では、デステージングされたストライド内のトラックが、ストレージ・システム１０内の複数のディスク・ドライブなどの複数のストレージ・デバイスにわたってストライピングされる。
【００１４】
一実施形態では、第１キャッシュ１４は、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ：Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などのランダム・アクセス・メモリ（ＲＡＭ：Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を含んでもよく、第２キャッシュ１８は、ソリッド・ステート・デバイスなどのフラッシュ・メモリを含んでもよく、ストレージ１０は、ハード・ディスク・ドライブおよび磁気テープなどの１つ以上の順次アクセス・ストレージ・デバイスからなる。ストレージ１０は、単一の順次アクセス・ストレージ・デバイスを含んでもよく、単純ディスク束（ＪＢＯＤ：Ｊｕｓｔ  ａ  Ｂｕｎｃｈ  ｏｆ  Ｄｉｓｋｓ）、直接アクセス・ストレージ・デバイス（ＤＡＳＤ：Ｄｉｒｅｃｔ  Ａｃｃｅｓｓ  Ｓｔｏｒａｇｅ  Ｄｅｖｉｃｅ）、独立ディスク冗長アレイ（ＲＡＩＤ：Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）アレイ、仮想化デバイスなどのストレージ・デバイスのアレイを含んでもよい。一実施形態では、第１キャッシュ１４は、第２キャッシュ１８よりも高速アクセスのデバイスであり、第２キャッシュ１８は、ストレージ１０よりも高速アクセスのデバイスである。さらに、第１キャッシュ１４は、第２キャッシュ１８よりもストレージ・ユニット当たりのコストが大きくてもよく、第２キャッシュ１８は、ストレージ１０内のストレージ・デバイスよりもストレージ・ユニット当たりのコストが大きくてもよい。
【００１５】
第１キャッシュ１４は、メモリ２０の一部であってもよく、ＤＲＡＭなど、別個のメモリ・デバイスに実装されてもよい。
【００１６】
ネットワーク６は、ストレージ・エリア・ネットワーク（ＳＡＮ：Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ローカル・エリア・ネットワーク（ＬＡＮ：Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、広域ネットワーク（ＷＡＮ：Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット、およびイントラネットなどを含んでもよい。
【００１７】
図２は、制御ブロック・ディレクトリ５２内の制御ブロックに対する第１キャッシュ１４内のトラックのインデックスを提供するトラック・インデックス５０と、第１キャッシュ１４内の未変更の順次トラックの時間的な順序づけを提供する未変更順次ＬＲＵリスト５４と、第１キャッシュ１４内の変更済みの順次および非順次トラックの時間的な順序づけを提供する変更済みＬＲＵリスト５６と、第１キャッシュ１４内の未変更の非順次トラックの時間的な順序づけを提供する未変更非順次ＬＲＵリスト５８と、フルストライド書き込みとして第２キャッシュ１８に書き込むべき、第１キャッシュ１４内の未変更の非順次トラックから形成されるストライドに関する情報を提供するストライド情報６０とを含む、第１キャッシュ管理情報２６の実施形態を示す。
【００１８】
特定の実施形態では、第１キャッシュ１４が満杯であると判断すると、変更済みのトラックを第１キャッシュ１４からストレージ１０にデステージングするために、変更済みＬＲＵリスト５６が使用され、その結果、第１キャッシュ１４内のデステージングされる当該トラックがコピーされる。
【００１９】
変更済みの非順次トラックが第１キャッシュ１４からストレージ１０にデステージングされると、続いてキャッシュ・マネージャ２４は、デステージングされた当該トラックを、第１キャッシュ１４内の未変更の非順次トラックとして指定してもよく、新たに指定されたその未変更のトラックの標示を、未変更非順次ＬＲＵリスト５８に追加してもよく、ここからこのトラックは、第２キャッシュ１８にプロモートされる資格がある。デステージングされた変更済みのトラックの状態は、デステージングされた変更済みの非順次トラックを未変更としてフィールド１０６において示すように第１キャッシュ制御ブロック１００を更新することによって、変更されてもよい。したがって、第１キャッシュ１４内の未変更の非順次トラックは、読み取りデータ、または変更済みＬＲＵリスト５６に従ってストレージ１０にデステージングされた変更済み非順次トラックを含み得る。したがって、ＬＲＵリスト５８内の未変更のトラックとなる、デステージングされた変更済みトラックは、後の読み取り要求に利用可能となるよう、第２キャッシュ１８にプロモートされてもよい。これらの実施形態では、第２キャッシュ１８は、未変更の非順次トラックをキャッシュする読み取り専用キャッシュを含む。
【００２０】
図３は、制御ブロック・ディレクトリ７２内の制御ブロックに対する第２キャッシュ１８内のトラックのインデックスを提供するトラック・インデックス７０と、第２キャッシュ１８内の未変更のトラックの時間的な順序づけを提供する未変更リスト７４と、第２キャッシュ１８に書き込まれたトラックのストライドに関する情報を提供するストライド情報７８とを含む、第２キャッシュ管理情報２８の実施形態を示す。一実施形態では、第２キャッシュ１８は、未変更の非順次トラックのみを格納する。さらなる実施形態では、第２キャッシュ１８はさらに、変更済みトラック、もしくは順次トラック、またはその両方を格納してもよい。
【００２１】
ＬＲＵリスト５４、５６、５８、および７４はすべて、特定されるトラックが最後にアクセスされたのがいつであるかに従って順序づけられた、第１キャッシュ１４および第２キャッシュ１８内のトラックのトラックＩＤを含んでもよい。ＬＲＵリスト５４、５６、５８、および７４は、直近のアクセス対象であったトラックを示す最短時間未使用（ＭＲＵ）側と、最も長い間使用もアクセスもされていないトラックを示すＬＲＵ側とを有する。キャッシュ１４および１８に追加されるトラックのトラックＩＤは、ＬＲＵリストのＭＲＵ側に追加され、キャッシュ１４および１８からデモートされるトラックは、ＬＲＵ側からアクセスされる。トラック・インデックス５０および７０は、分散インデックス・テーブル（ＳＩＴ：ｓｃａｔｔｅｒ  ｉｎｄｅｘ  ｔａｂｌｅ）を含んでもよい。キャッシュ１４および１８内のトラックの時間的な順序づけを提供するために、別のタイプのデータ構造が使用されてもよい。
【００２２】
非順次トラックは、オンライン・トランザクション処理（ＯＬＴＰ：Ｏｎｌｉｎｅ  Ｔｒａｎｓａｃｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ）トラックを含んでもよく、これは多くの場合、完全にランダムではなく、参照の局所性をある程度有する、すなわち繰り返しアクセスされる可能性がある、小ブロック書き込みを含む。
【００２３】
図４は、制御ブロック識別子（ＩＤ：ｉｄｅｎｔｉｆｉｅｒ）１０２と、第１キャッシュ１４におけるトラックの物理位置の第１キャッシュ位置１０４と、トラックが変更済みであるか未変更であるかを示す情報１０６と、トラックが順次アクセスであるか非順次アクセスであるかを示す情報１０８と、デモート不可、デモート準備完了、およびデモート完了などのトラックのデモート・ステータスを示す情報１１０とを含む、制御ブロック・ディレクトリ５２内の第１キャッシュ制御ブロック１００エントリの実施形態を示す。
【００２４】
図５は、制御ブロック識別子（ＩＤ）１２２と、トラックがＬＳＡ３２において位置するＬＳＡ位置１２４と、トラックが変更済みであるか未変更であるかを示す変更済み／未変更情報１２６と、トラックが有効であるか無効であるかを示す有効／無効フラグ１２８とを含む、第２キャッシュ制御ブロック・ディレクトリ７２内の第２キャッシュ制御ブロック１２０エントリの実施形態を示す。第２キャッシュ１８内のトラックは、トラックが第１キャッシュ１４において更新された場合、またはトラックが第２キャッシュ１８からデモートされた場合、無効として示される。
【００２５】
変更済みの非順次トラックが第１キャッシュ１４からストレージ１０にデステージングされると、続いてキャッシュ・マネージャ２４は、デステージングされた当該トラックを、第１キャッシュ１４内の未変更の非順次トラックとして指定してもよく、新たに指定されたその未変更のトラックの標示を、未変更非順次ＬＲＵリスト５８に追加してもよく、ここからこのトラックは、第２キャッシュ１８にプロモートされる資格がある。デステージングされた変更済みのトラックの状態は、デステージングされた変更済みの非順次トラックを未変更としてフィールド１０６において示すように第１キャッシュ制御ブロック１００を更新することによって、変更されてもよい。したがって、第１キャッシュ１４内の未変更の非順次トラックは、読み取りデータ、または変更済みＬＲＵリスト５６に従ってストレージ１０にデステージングされた変更済み非順次トラックを含み得る。したがって、ＬＲＵリスト５８内の未変更のトラックとなる、デステージングされた変更済みトラックは、後の読み取り要求に利用可能となるよう、第２キャッシュ１８にプロモートされてもよい。これらの実施形態では、第２キャッシュ１８は、未変更の非順次トラックをキャッシュする読み取り専用キャッシュを含む。
【００２６】
図６は、ストライド識別子（ＩＤ）１３２と、ストライド１３２に含まれるストレージ１０のトラック１３４と、トラックの総数のうちストライドにおいて有効なトラックの数を示す占有率１３６とを含む、第２キャッシュ１８内に形成される１つのストライドに関するストライド情報６０、７８のインスタンス１３０を示し、ストライド内の有効でないトラックは、ガーベッジ・コレクション動作の対象となる。
【００２７】
図７は、第１キャッシュ１４内のトラックから第２キャッシュ１８内のトラックのストライドをどのように形成するかを決定するために保持される第２キャッシュＲＡＩＤ構成３４の実施形態を示す。第２キャッシュＲＡＩＤ構成３４は、例えばＲＡＩＤ１、ＲＡＩＤ５、ＲＡＩＤ６、ＲＡＩＤ１０など、使用するＲＡＩＤ構成を示すＲＡＩＤレベル１４０と、ユーザ・データのトラックを格納するデータ・ディスクの数（ｍ）１４２と、データ・ディスク１４２から計算されるパリティを格納するパリティ・ディスクの数（ｐ）１４４とを示し、ｐは、１以上とすることができ、計算されたパリティ・ブロックを格納するディスクの数を示す。未変更パリティ・オプション・フラグ１４６は、第２キャッシュ１８にプロモートされる第１キャッシュ１４内の未変更の非順次トラックについてパリティが計算されるべきかどうかを示す。このオプション・フラグ１４６は、ストライド内に未変更の非順次トラックのみを含めて、未変更の非順次トラックのみでストライドを満たすことを可能にする。第１キャッシュ１４内の未変更の非順次トラックのストライドは、ＬＳＡ３２において示されてもよく、ストライドのトラックは、第２キャッシュ１８を形成するｍ＋ｐ＝ｎ個のストレージ・デバイスにわたってストライピングされる。あるいは、第２キャッシュ１８は、ｎより少ないデバイスを含んでもよい。
【００２８】
図８は、ストレージ１０の複数ディスクにわたってストライピングする第２キャッシュ１８内の変更済みトラックのストライドをどのように形成するかを決定するために保持されるストレージＲＡＩＤ構成３６の実施形態を示す。ストレージＲＡＩＤ構成３６は、使用するＲＡＩＤ構成を示すＲＡＩＤレベル１５０と、ユーザ・データのトラックを格納するデータ・ディスクの数（ｍ）１５２と、データ・ディスク１５２から計算されるパリティを格納するパリティ・ディスクの数（ｐ）１５４とを示し、ｐは、１以上とすることができ、計算されたパリティ・ブロックを格納するディスクの数を示す。第２キャッシュ１８のトラックのストライドは、ストレージ・システム１０内の複数ディスクにわたってストライピングされてもよい。
【００２９】
一実施形態では、第２キャッシュＲＡＩＤ構成３４およびストレージＲＡＩＤ構成３６は、異なるＲＡＩＤレベル、データ・ディスク、パリティ・ディスクなど、異なるパラメータを提供してもよく、同じパラメータを有してもよい。
【００３０】
図９は、第２キャッシュ１８にプロモートするために、未変更の非順次トラックを第１キャッシュ１４からデモートするべく、キャッシュ・マネージャ２４により実行される動作の実施形態を示し、未変更の非順次トラックは、領域が必要とされると、未変更非順次ＬＲＵリスト５８のＬＲＵ側から選択されてもよい。選択された未変更の非順次トラックをデモートする動作を（ブロック２００にて）開始すると、デモートするべく選択された未変更の非順次トラックのデモート・ステータス１１０（図４）が、「準備完了」に（ブロック２０２にて）セットされる。キャッシュ・マネージャ２４は、第２キャッシュＲＡＩＤ構成情報３４を（ブロック２０４にて）使用して、第２キャッシュ１８内のストライドにプロモートするために、第１キャッシュ１１４からトラックの第１ストライドを形成する。例として、トラックの第１ストライドを形成することは、データのトラックを格納するためのｍ個のデバイスと、ｍ個のデバイスに関してデータのトラックから計算されたパリティ・データを格納する少なくとも１つのパリティ・デバイスｐと含むｎ個のデバイスを有するものとして第２キャッシュに関して定義されている、ＲＡＩＤ構成３４に基づくＲＡＩＤ構成向けのストライドを形成することを含んでもよい。さらに、第２キャッシュが少なくともｎ個のソリッド・ステート・ストレージ・デバイスを含む実施形態において、第２ストライドを形成するために、トラックの第１ストライドが、パリティなしでｎ個のソリッド・ステート・ストレージ・デバイスにわたってストライピングされてもよい。
【００３１】
キャッシュ・マネージャ２４は、未変更非順次ＬＲＵ５８リストを（ブロック２０６にて）処理して、準備完了のデモート・ステータス１１０をその制御ブロック１００内に有する未変更の非順次トラックの数を判断する。キャッシュ・マネージャ２４が、未変更の非順次トラックの数がストライドを形成するのに十分であると（ブロック２０８にて）判断すれば、キャッシュ・マネージャ２４は、準備完了のデモート・ステータス１１０を有する未変更の非順次トラックの第１ストライドを（ブロック２１０にて）ポピュレートする。一実施形態では、第１ストライドは、未変更の非順次ＬＲＵリスト５８のＬＲＵ側から開始してポピュレートされてもよく、ストライド内のデータ・ディスクに対して十分なトラックを使用する。（ブロック２１２にて）ＲＡＩＤ構成がパリティ・ディスクを指定すれば、キャッシュ・マネージャ２４は、ストライド内に含まれる未変更の非順次トラックのパリティを（ブロック２１２にて）計算し、（ｐ個のパリティ・ディスクの）パリティ・データをストライド内に含める。（ブロック２０８にて）第１ストライドを満たすのに十分な未変更の非順次トラックが第１キャッシュ１４内になければ、制御は、第１ストライドをポピュレートするのに利用可能な、デモート準備完了ステータスを有する未変更の非順次トラックが十分な数になるまで終了する。
【００３２】
第１ストライドを（ブロック２１０および２１２にて）ポピュレートした後、キャッシュ・マネージャ２４は、第１ストライドからのトラックを含めるための第２キャッシュ１８内の空きの第２ストライドを（ブロック２１４にて）決定する。第１ストライドからのトラックは、第２キャッシュ１８を形成する複数デバイスにわたって、第２ストライドにフルストライド書き込みとして書き込みまたはストライピング（ブロック２１６にて）される。第１ストライドからのトラックにより第２キャッシュ１８内の第２ストライドを満たすと、キャッシュ・マネージャ２４は、第２ストライドに関するストライド情報１３０の占有率１３６を、満杯として（ブロック２１８にて）示す。キャッシュ・マネージャ２４は、ストライドに含まれる未変更の非順次トラックのデモート・ステータス１１０を、デモート「完了」として（ブロック２２０にて）更新する。
【００３３】
図９の動作は、第２キャッシュ１８にプロモートするために、未変更の非順次トラックを第１キャッシュ１４からデモートするものとして記載されたが、別の実施形態では、この動作は、変更済みトラック、順次トラックなど、異なるタイプのトラックのデモートに適用され得る。
【００３４】
記載された実施形態により、複数のトラックの転送に１つの入出力（Ｉ／Ｏ）動作が使用されるように、第１キャッシュ１４の未変更のトラックが集められ、ストライドとして第２キャッシュ１８に書き込まれる。
【００３５】
図１０は、第１キャッシュ１４にトラックを追加、すなわちプロモートするためにキャッシュ・マネージャ２４によって実行される動作の実施形態を示し、このトラックは、ホスト２ａ、２ｂ…２ｎからの書き込みトラックもしくは変更済みのトラック、書き込み要求対象であり結果として第１キャッシュ１４へ移動される第２キャッシュ１８内の非順次トラック、またはキャッシュ１４でも１８でも発見されずストレージ１０から取得される読み取り要求されたデータを含んでもよい。第１キャッシュ１４に追加するトラックを（ブロック２５０にて）受領すると、（ブロック２５２にて）トラックのコピーが既に第１キャッシュ１４内に含まれていれば、すなわち、受領されたトラックが書き込みであれば、キャッシュ・マネージャ２４は、第１キャッシュ１４内のトラックを（ブロック２５４にて）更新する。（ブロック２５２にて）トラックがまだキャッシュになければ、キャッシュ・マネージャ２４は、第１キャッシュ１４における位置１０４、ならびにトラックが変更済み／未変更１０６および順次／非順次１０８のいずれであるかを示す、追加するトラックの制御ブロック１００（図４）を（ブロック２５６にて）作成する。この制御ブロック１００は、第１キャッシュ１４の制御ブロック・ディレクトリ５２に追加される。キャッシュ・マネージャ２４は、追加するトラックのトラックＩＤおよび制御ブロック・ディレクトリ５２内の作成されたキャッシュ制御ブロック１００に対するインデックスを有するエントリを、第１キャッシュ・トラック・インデックス５０に（ブロック２５８にて）追加する。追加するトラックのトラック・タイプのＬＲＵリスト５４、５６、または５８のＭＲＵ側に、エントリが（ブロック２６０にて）追加される。（ブロック２６２にて）追加するトラックが変更済みの非順次トラックであり、（ブロック２６４にて）追加するトラックのコピーが第２キャッシュ１８内にあると第２キャッシュ・トラック・インデックス７０から判断された場合、第２キャッシュ１８内のトラックのコピーが、第２キャッシュ１８内のトラックのキャッシュ制御ブロック１２０内の有効／無効フラグ１２８を無効にセットすることなどによって、（ブロック２６６にて）無効にされる。（ブロック２６２にて）追加するトラックが未変更の順次トラックであれば、制御は終了する。
【００３６】
図１１は、第１キャッシュ１４の第１ストライドからのトラックを第２キャッシュ１８内の第２ストライドに追加するためにキャッシュ・マネージャ２４によって実行される動作の実施形態を示す。キャッシュ・マネージャ２４は、追加される第１ストライドからのトラック１３４を示し占有率１３６を満杯として示す、第２ストライドに関するストライド情報１３０（図６）を（ブロック３０２にて）作成する。追加される第１ストライド内の各トラックに対し、ブロック３０４〜３１８にて動作のループが実行される。キャッシュ・マネージャ２４は、第２キャッシュ１８内のＬＳＡ３２にプロモートされるトラックのトラックＩＤなどの標示を（ブロック３０２にて）追加する。追加されるトラックが（ブロック３０８にて）既に第２キャッシュ１８内にあれば、キャッシュ・マネージャ２４は、トラックのキャッシュ制御ブロック１２０を（ブロック３１０にて）更新して、ＬＳＡ３２における位置１２４、データが未変更１２６であること、およびトラックが有効１２８であることを示す。（ブロック３０８にて）トラックがまだ第２キャッシュ１８内になければ、キャッシュ・マネージャ２４は、ＬＳＡ３２におけるトラック位置１２４ならびにトラックが変更済み／未変更１２６のいずれであるかを示す、追加するトラックの制御ブロック１２０（図５）を（ブロック３１２にて）作成する。プロモートされるトラックのトラックＩＤおよび第２キャッシュ１８の制御ブロック・ディレクトリ７２内の作成されたキャッシュ制御ブロック１２０に対するインデックスを有するエントリが、第２キャッシュ・トラック・インデックス７０に（ブロック３１４にて）追加される。ブロック３１０または３１４から、キャッシュ・マネージャ２４は、トラックＩＤをＭＲＵ側に追加することなどによって、プロモートされたトラックを未変更ＬＲＵリスト７４のＭＲＵ側で（ブロック３１６にて）示す。
【００３７】
図１２は、第２キャッシュ１８に追加する新たなトラック、すなわち第１キャッシュ１４からデモートされるトラックのために第２キャッシュ１８内の領域を解放するべく、キャッシュ・マネージャ２４によって実行される動作の実施形態を示す。この動作を（ブロック３５０にて）開始すると、キャッシュ・マネージャ２４は、未変更ＬＲＵリスト７４のＬＲＵ側から、第２キャッシュ１８内の未変更のトラックを（ブロック３５２にて）判断し、無効にされる未変更のトラックをストレージ１０にデステージングせずに、判断された未変更のトラックを（ブロック３５４にて）無効にし、さらに、無効にされた未変更のトラックを未変更ＬＲＵリスト７４から削除して、そのトラックのキャッシュ制御ブロック１２０においてトラックを無効１２８として示す。第２キャッシュ１８内の未変更のトラックは、第１キャッシュ１４に追加された読み取りトラック、または第１キャッシュ１４からデステージングされた変更済みのトラックを含んでもよい。さらに、第２キャッシュ１８からデモートするためにキャッシュ・マネージャ２４によって選択される各トラックは、第２キャッシュ１８において形成された別々のストライドからのものであってもよい。さらに、第２キャッシュ内のストライドは、有効トラックおよび無効トラックの両方を含んでもよく、トラックは、第２キャッシュ１８からデモートすることによって、または第１キャッシュ１４においてトラックが更新されることによって、無効にされる。
【００３８】
特定の実施形態では、キャッシュ・マネージャ２４は、デモートするトラックを決定するために第１キャッシュ１４および第２キャッシュ１８それぞれに対して別々のＬＲＵリスト５８および７４を使用することによって、異なるトラック・デモーション・アルゴリズムを使用して第１キャッシュ１４および第２キャッシュ１８からデモートするトラックを決定する。第１キャッシュ１４および第２キャッシュ１８内のデモートするトラックを選択するために使用されるアルゴリズムは、第１キャッシュ１４内および第２キャッシュ１８内のトラックの特性を考慮に入れて、最初にデモートするトラックを決定してもよい。
【００３９】
図１３は、第１キャッシュ１４内のトラックのストライドのために利用可能にするべく、第２キャッシュ１８内のストライドを解放するために、キャッシュ・マネージャ２４によって実行される動作の実施形態を示す。第２キャッシュ１８内のストライドを解放する動作を（ブロック３７０にて）開始すると、キャッシュ・マネージャは、空きストライド、すなわちゼロの占有率１３６を有するストライドの数が、空きストライド閾値未満であるかどうかを（ブロック３７２にて）判断する。例として、キャッシュ・マネージャ２４は、第１キャッシュ１４のトラックから形成されるストライドのために利用可能な、少なくとも２つまたはその他何らかの数の空きストライドが常にあることを保証してもよい。空きストライドの数が閾値を下回っていなければ、制御は終了する。その他の場合、（ブロック３７２にて）空きストライドの数が閾値未満であれば、キャッシュ・マネージャ２４は、（ブロック３７４にて）ゼロの占有率１３６を有する利用可能なストライドを判断し、（ブロック３７６にて）一部が埋まった、すなわち有効トラックおよび無効トラックを有するストライドであって、その有効トラックが空きストライドに収まるストライドを、少なくとも２つ判断する。キャッシュ・マネージャ２４は、判断された、一部が埋まった少なくとも２つのストライドからの有効トラックを、判断された利用可能なストライド内に（ブロック３７８にて）統合する。続いて、キャッシュ・マネージャ２４は、トラックが結合された少なくとも２つのストライドを、ゼロの占有率１３６を有すると（ブロック３８０にて）示し、したがって、それらは、第１キャッシュ１４のストライドからのトラックを受領するために利用可能となる。
【００４０】
図１４は、キャッシュ１４および１８ならびにストレージ１０から、読み取り要求に関して要求されたトラックを取得するために、キャッシュ・マネージャ２４によって実行される動作の実施形態を示す。読み取り要求を処理するストレージ・マネージャ２２は、要求されたトラックを求めて、キャッシュ・マネージャ２４に要求を送ることができる。トラックの要求を（ブロック４５０にて）受領すると、キャッシュ・マネージャ２４は、第１キャッシュ・トラック・インデックス５０を（ブロック４５４にて）使用して、要求されたトラックがすべて第１キャッシュ１４内にあるかどうかを判断する。要求されたトラックが（ブロック４５４にて）すべて第１キャッシュ１４内になければ、キャッシュ・マネージャ２４は、第２キャッシュ・トラック・インデックス７０を（ブロック４５６にて）使用して、第１キャッシュ１４内にはなく第２キャッシュ１８内にある要求されたトラックをすべて判断する。（ブロック４５８にて）第１キャッシュ１４および第２キャッシュ１８において発見されない要求されたトラックがあれば、キャッシュ・マネージャ２４は、第２キャッシュ・トラック・インデックス７０から、第１キャッシュ１４および第２キャッシュ１８内になく、ストレージ１０内にある要求されたトラックをすべて（ブロック４６０にて）判断する。続いて、キャッシュ・マネージャ２４は、第２キャッシュ１８およびストレージ１０内の判断されたトラックをすべて、第１キャッシュ１４に（ブロック４６２にて）プロモートする。キャッシュ・マネージャ２４は、第１キャッシュ・トラック・インデックス５０を（ブロック４６４にて）使用して、読み取り要求に対して返すために、要求されたトラックを第１キャッシュ１４から取得する。取得されたトラックに関するエントリは、取得されたトラックに関するエントリを含むＬＲＵリスト５４、５６、５８のＭＲＵ側に（ブロック４６６にて）移動される。
【００４１】
図１３の動作により、キャッシュ・マネージャ２４は、ストレージ１０に進む前に、まず最高レベルのキャッシュ１４、続いて第２キャッシュ１８から、要求されたトラックを取得するが、これは、キャッシュ１４および１８が、要求されたトラックの最新の変更済みバージョンを有すると考えられるためである。最新バージョンは、まず第１キャッシュ１４、第１キャッシュ１４内になければ次に第２キャッシュ１８、いずれのキャッシュ１４、１８内にもなければ次にストレージ１０内で発見される。
【００４２】
記載された実施形態は、第２キャッシュのＲＡＩＤ構成に従って定義されたストライドに第１キャッシュ内のトラックをグループ化し、その結果、第１キャッシュ内のトラックを、第２キャッシュに対するストライドにグループ化できる技術を提供する。続いて、第２キャッシュにおいてキャッシュされたトラックは、ストレージのＲＡＩＤ構成に従って定義されたストライドへとグループ化されて、続いてストレージ・システムに書き込まれてもよい。
【００４３】
記載された実施形態は、キャッシュ・プロモーション動作の効率を改善するために、トラックが第２キャッシュ内のストライドにフルストライド書き込みとして書き込まれることができるように、トラックをストライド単位で第１キャッシュからプロモートする技術を提供する。記載された実施形態は、ストライド全体を単一のＩ／Ｏ動作として第２キャッシュにプロモートすることによってリソースを節約するために、フルストライド書き込みを使用して、第１キャッシュ内のデモートされたトラックを第２キャッシュにプロモートできるようにする。
【００４４】
さらに、トラックがストライドとして第１キャッシュ１４から第２キャッシュ１８にプロモートされる一方で、ＬＲＵアルゴリズムなどのキャッシュ・デモーション・アルゴリズムに従って、トラックがトラック毎に第２キャッシュ１８からデモートされる。
【００４５】
記載された動作は、ソフトウェア、ファームウェア、ハードウェア、またはその任意の組み合わせを生じるために標準のプログラミングもしくはエンジニアリングまたはその両方の技術を使用して、方法、装置、またはコンピュータ・プログラム製品として実装されてもよい。したがって、本実施形態の各側面は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、または本願明細書においてすべて概して「回路」、「モジュール」、もしくは「システム」と呼ばれ得る、ソフトウェアおよびハードウェアの側面を兼ね備えた実施形態の形態をとり得る。さらに、実施形態の各側面は、コンピュータ可読プログラム・コードが具現化された１つ以上のコンピュータ可読媒体（単数または複数）において具現化された、コンピュータ・プログラム製品の形態をとることもできる。
【００４６】
１つ以上のコンピュータ可読媒体（単数または複数）の任意の組み合わせが利用され得る。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読ストレージ媒体とされ得る。コンピュータ可読ストレージ媒体は、例えば、電子、磁気、光学、電磁気、赤外線もしくは半導体のシステム、装置、もしくはデバイス、または前述のものの任意の適切な組み合わせとされ得るが、これらに限定はされない。コンピュータ可読ストレージ媒体のより具体的な例（包括的でないリスト）には、１つ以上のワイヤを有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ：ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、消去可能プログラム可能読み取り専用メモリ（ＥＰＲＯＭ（ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）もしくはフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、光学式ストレージ・デバイス、磁気ストレージ・デバイス、または前述のものの任意の適切な組み合わせが含まれるであろう。この文書の文脈では、コンピュータ可読ストレージ媒体は、命令実行システム、装置、もしくはデバイスによって、またはそれに関連して使用されるプログラムを含むこと、または格納することができる任意の有形の媒体であればよい。
【００４７】
コンピュータ可読信号媒体は、例えば、ベースバンドに、または搬送波の一部としてコンピュータ可読プログラム・コードが具現化された、伝搬データ信号を含み得る。そのような伝搬信号は、電磁気、光学、またはその任意の適切な組み合わせを含むがこれらに限定はされない、様々な形態のいずれかをとってよい。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体でなく、かつ命令実行システム、装置、もしくはデバイスによって、またはそれに関連して使用されるプログラムの伝達、伝搬、または搬送をすることができる、任意のコンピュータ可読媒体としてよい。
【００４８】
コンピュータ可読媒体上に具現化されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、ＲＦなど、または前述のものの任意の適切な組み合わせを含むがこれらに限定はされない、任意の適切な媒体を使用して伝送され得る。
【００４９】
本発明の各側面の動作を実行するコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋、または同様のものなどのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語もしくは同様のプログラミング言語などの従来の手続きプログラミング言語を含む、１つ以上のプログラミング言語の任意の組み合わせで書かれていてよい。プログラム・コードは、完全にユーザのコンピュータ上で実行されても、部分的にユーザのコンピュータ上で実行されても、スタンド・アロン・ソフトウェア・パッケージとして実行されても、部分的にユーザのコンピュータ上で、かつ部分的に遠隔コンピュータ上で実行されても、または完全に遠隔コンピュータもしくはサーバ上で実行されてもよい。後者のシナリオでは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくは広域ネットワーク（ＷＡＮ）を含む任意の種類のネットワークを介して遠隔コンピュータがユーザのコンピュータに接続されてもよく、または（例えばインターネット・サービス・プロバイダを使用しインターネットを介して）外部コンピュータに接続されてもよい。
【００５０】
本発明の各側面について、本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照して上述している。当然のことながら、フローチャート図もしくはブロック図またはその両方の各ブロック、およびフローチャート図もしくはブロック図またはその両方の複数ブロックの組み合わせは、コンピュータ・プログラム命令により実装可能である。マシンを生じるよう、こうしたコンピュータ・プログラム命令が、汎用コンピュータ、専用コンピュータ、またはその他プログラム可能データ処理装置のプロセッサに提供されて、この命令が、コンピュータまたはその他プログラム可能データ処理装置のプロセッサにより実行されて、フローチャートもしくはブロック図またはその両方の１つもしくは複数のブロックにおいて指定された機能／動作を実装する手段を作り出すようにすることもできる。
【００５１】
さらに、特定の形で機能するようコンピュータ、その他プログラム可能データ処理装置、またはその他デバイスに指示することができるこうしたコンピュータ・プログラム命令は、コンピュータ可読媒体に格納されて、コンピュータ可読媒体に格納されたこの命令が、フローチャートもしくはブロック図またはその両方の１つもしくは複数のブロックにおいて指定された機能／動作を実装する命令を含む製品を生じるようにすることもできる。
【００５２】
さらに、コンピュータ・プログラム命令は、コンピュータ、その他プログラム可能データ処理装置、またはその他デバイス上にロードされて、コンピュータ、その他プログラム可能装置、またはその他デバイス上で一連の動作ステップが実行されるようにしてコンピュータで実装されるプロセスを生じさせ、コンピュータまたはその他プログラム可能装置上で実行される命令が、フローチャートもしくはブロック図またはその両方の１つもしくは複数のブロックにおいて指定された機能／動作を実装するためのプロセスを提供するようにすることもできる。
【００５３】
「或る実施形態」、「実施形態」、「複数の実施形態」、「該実施形態」、「該複数の実施形態」、「１つ以上の実施形態」、「いくつかの実施形態」、および「一実施形態」という用語は、別途明確に指定されない限り、「本発明（単数または複数）の１つ以上の（ただしすべてではない）実施形態」という意味である。
【００５４】
「備える」、「含む」、「有する」という用語およびその変化形は、別途明確に指定されない限り、「含むが、それに限定はされない」という意味である。
【００５５】
項目の列挙は、別途明確に指定されない限り、項目のいずれかまたはすべてが相互排他的であることは示唆しない。
【００５６】
「ａ」、「ａｎ」、および「ｔｈｅ」という用語は、別途明確に指定されない限り、「１つ以上」という意味である。
【００５７】
相互通信しているデバイスは、別途明確に指定されない限り、継続的に相互通信している必要はない。さらに、相互通信しているデバイスは、直接通信しても、１つ以上の中間物を介して間接的に通信してもよい。
【００５８】
相互通信しているいくつかのコンポーネントを備える実施形態の記載は、そのようなコンポーネントすべてが必要であることは示唆しない。それどころか、本発明の幅広い種類の可能な実施形態を示すために、様々なオプションのコンポーネントが記載されている。
【００５９】
さらに、プロセス・ステップ、方法ステップ、アルゴリズムなどは、連続した順序で記載されていることもあり得るが、そのようなプロセス、方法、およびアルゴリズムは、交互に作動するよう構成されてもよい。換言すれば、記載され得るステップの任意の連続または順序は、ステップがその順序で実行されるという要件を必ずしも示すものではない。本願明細書に記載されたプロセスのステップは、実用的な任意の順序で実行され得る。さらに、一部のステップが同時に実行されてもよい。
【００６０】
当然のことながら、単一のデバイスまたは項目が本願明細書に記載されている場合、２つ以上のデバイス／項目が、（それらが協働するか否かにかかわらず）単一のデバイス／項目の代わりに使用されてもよい。同じく、当然のことながら、２つ以上のデバイスまたは項目が本願明細書に記載されている場合、（それらが協働するか否かにかかわらず）２つ以上のデバイスまたは項目の代わりに単一のデバイス／項目が使用されてもよく、示された数のデバイスもしくはプログラムの代わりに異なる数のデバイス／項目が使用されてもよい。或るデバイスの機能性もしくは特徴またはその両方は、そのような機能性／特徴を有するものとして明示的に記載されていない１つ以上の他のデバイスによって代わりに具現化されてもよい。したがって、本発明の他の実施形態は、そのデバイス自体を含む必要はない。
【００６１】
図面の示される動作は、特定の順序で発生する特定のイベントを示す。別の実施形態では、特定の動作が、異なる順序で実行されても、変更されても、削除されてもよい。さらに、上述した論理にステップが追加されてもよく、それでもなお、記載された実施形態に適合する。さらに、本願明細書に記載された動作は、順次発生してもよく、特定の動作が並列処理されてもよい。さらに、動作は、単一の処理ユニットによって、または分散処理ユニットによって実行され得る。
【００６２】
本発明の様々な実施形態の前述の説明は、例証および説明のために提示された。包括的であることも、開示された厳密な形態に本発明を限定することも、意図されていない。上記の教示を踏まえ、多数の修正および変形が可能である。本発明の範囲は、この詳細な説明ではなく、本願明細書に添付されている特許請求の範囲によって限定されるものとする。上記の明細事項、例、およびデータは、本発明の構成の製造および使用について、全面的な説明を提供する。本発明の意図および範囲から逸脱することなく、本発明の多数の実施形態をもたらすことができるため、本発明は、添付の特許請求の範囲に存在する。
【図１】
0005908118.tif 000002
【図２】
0005908118.tif 000003
【図３】
0005908118.tif 000004
【図４】
0005908118.tif 000005
【図５】
0005908118.tif 000006
【図６】
0005908118.tif 000007
【図７】
0005908118.tif 000008
【図８】
0005908118.tif 000009
【図９】
0005908118.tif 000010
【図１０】
0005908118.tif 000011
【図１１】
0005908118.tif 000012
【図１２】
0005908118.tif 000013
【図１３】
0005908118.tif 000014
【図１４】
0005908118.tif 000015