(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-19
(54)【発明の名称】キャッシュ内の複数のトラックを管理する方法、システム、コンピュータ・プログラム製品
(51)【国際特許分類】
G06F 12/0866 20160101AFI20240711BHJP
G06F 3/06 20060101ALI20240711BHJP
G06F 12/0895 20160101ALI20240711BHJP
G06F 12/126 20160101ALI20240711BHJP
【FI】
G06F12/0866 100
G06F3/06 301Z
G06F3/06 302A
G06F3/06 306Z
G06F12/0895 100
G06F12/126 105
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024504196
(86)(22)【出願日】2022-07-19
(85)【翻訳文提出日】2024-01-23
(86)【国際出願番号】 EP2022070268
(87)【国際公開番号】W WO2023006526
(87)【国際公開日】2023-02-02
(32)【優先日】2021-07-29
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】グプタ、ローケーシュ、モハン
(72)【発明者】
【氏名】アンダーソン、カイラー
(72)【発明者】
【氏名】アシュ、ケヴィン
(72)【発明者】
【氏名】カロス、マシュー
(72)【発明者】
【氏名】リナルディ、ブライアン、アンソニー
(72)【発明者】
【氏名】ピーターソン、ベス、アン
(72)【発明者】
【氏名】ボーリック、マシュー
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205MM11
5B205NN42
5B205PP28
5B205QQ16
(57)【要約】
キャッシュ内のストレージ内の複数のトラックを管理するためのコンピュータ・プログラム製品が提供される。アクティブ・トラック・データ構造はアクティブ・ステータスを有するキャッシュ内の複数のトラックを示す。トラック用のキャッシュ制御ブロック内のアクティブ・ビットはアクティブ・トラック・データ構造内でアクティブとして示されたトラックについてアクティブであることを示すように設定される。キャッシュ制御ブロックを処理することに応答してトラックがアクティブであるか非アクティブであるかの判定がトラック用のキャッシュ制御ブロックから行われてキャッシュ制御ブロックについての処理を決定する。
【特許請求の範囲】
【請求項1】
コンピュータ可読ストレージ媒体を備えた、キャッシュ内のストレージ内の複数のトラックを管理するためのコンピュータ・プログラム製品であって、前記コンピュータ可読ストレージ媒体が、前記コンピュータ可読ストレージ媒体内で具現化されたコンピュータ可読プログラムコードを有し、前記コンピュータ可読プログラムコードは、実行されると、
アクティブ・ステータスを有する、前記キャッシュ内の複数のトラックを示すアクティブ・トラック・データ構造を維持すること、
トラック用のキャッシュ制御ブロック内のアクティブ・ビットを、前記アクティブ・トラック・データ構造内でアクティブとして示された前記トラックについてアクティブであることを示すように設定すること、および、
前記キャッシュ制御ブロックを処理することに応答して、前記キャッシュ制御ブロックについての処理を決定するために前記トラックがアクティブであるか非アクティブであるかを前記トラック用の前記キャッシュ制御ブロックから判定することを含む操作を実施する、コンピュータ・プログラム製品。
【請求項2】
前記キャッシュ制御ブロックを前記処理することは、前記キャッシュ制御ブロックに対してロックを取得することまたは解除することを含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項3】
前記トラックがアクティブであるか否かを前記キャッシュ制御ブロックから前記判定することは、前記キャッシュ制御ブロックに対してロックを取得することに応答して実施され、前記操作は、
前記トラックがアクティブでないと、前記キャッシュ制御ブロックから判定することに応答して、前記トラックがアクティブであることを前記アクティブ・トラック・データ構造内で示すこと、および、
前記トラック用の前記キャッシュ制御ブロック内の前記アクティブ・ビットを、アクティブであることを示すように設定すること
をさらに含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項4】
前記トラックがアクティブであるか否かを前記キャッシュ制御ブロックから前記判定することは、前記トラック用の前記キャッシュ制御ブロックに対してロックを解除することに応答して実施され、前記操作は、
前記キャッシュ制御ブロックについての利用情報を処理することであって、それにより、前記トラックがアクティブであることを前記トラック用の前記アクティブ・ビットが示すことに応答して、前記トラックがアクティブであるか否かを判定する、処理すること、ならびに、
前記トラックが非アクティブであることを、前記利用情報を前記処理することが示すと判定することに応答して、
前記トラックが非アクティブであることを前記アクティブ・トラック・データ構造内で示すこと、および、
前記トラック用の前記キャッシュ制御ブロック内の前記アクティブ・ビットを非アクティブであることを示すように設定すること
を実施すること
をさらに含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項5】
前記アクティブ・トラック・データ構造は、複数のキャッシュ制御ブロック用の複数のビットを含むビットマップを含み、1つのキャッシュ制御ブロック用の1つのビットは、前記キャッシュ制御ブロックによって識別されたトラックがアクティブであるか非アクティブであるかを示す、請求項1に記載のコンピュータ・プログラム製品。
【請求項6】
前記ビットマップの前記複数のビットは、キャッシュ・ライン内に実装され、前記操作は、
前記キャッシュ制御ブロック用の1つのビットを含む前記ビットマップの一部分を有するキャッシュ・ラインに対してロックを取得すること、
前記キャッシュ制御ブロック用の前記ビットマップ内の前記ビットを、前記キャッシュ・ラインをロックすることに応答してアクティブであるかまたは非アクティブであるかを示すように設定すること、および、
前記キャッシュ制御ブロック用の前記ビットを設定することに応答して前記キャッシュ・ラインに対して前記ロックを解除すること
をさらに含む、請求項5に記載のコンピュータ・プログラム製品。
【請求項7】
前記操作は、
アクティブであることを示すことをデモートするために、前記キャッシュからのトラックおよび前記トラック用のキャッシュ制御ブロック内の前記アクティブ・ビットをデモートする操作を始動させることに応答して、
デモートする前記トラックが非アクティブであることを前記アクティブ・トラック・データ構造内で示すこと、および、
デモートする前記トラック用の前記キャッシュ制御ブロック内の前記アクティブ・ビットを、非アクティブであることを示すように設定すること
をさらに含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項8】
コンピュータ可読ストレージ媒体を備えた、キャッシュ内のストレージ内の複数のトラックを管理するためのコンピュータ・プログラム製品であって、前記コンピュータ可読ストレージ媒体が、前記コンピュータ可読ストレージ媒体内で具現化されたコンピュータ可読プログラムコードを有し、前記コンピュータ可読プログラムコードは、実行されると、
アクティブ・ステータスを有する、前記キャッシュ内の複数のトラックを示すアクティブ・トラック・データ構造を維持すること、
示されたアクティブ・トラックを決定するために前記アクティブ・トラック・データ構造を処理すること、および、
前記決定され示されたアクティブ・トラックについて、状態保存、妥当性確認、または廃棄、あるいはその組合せを行うリカバリー操作を実施することを含む操作を実施する、コンピュータ・プログラム製品。
【請求項9】
前記アクティブ・トラック・データ構造を前記処理することおよび前記リカバリー操作を前記実施することは、システム障害後の前記キャッシュを含むシステムの初期化中のリカバリー・プロセスの一部である、請求項8に記載のコンピュータ・プログラム製品。
【請求項10】
前記操作は、
前記キャッシュに付加するトラックのために割り振る利用可能なキャッシュ制御ブロックが存在しないと判定することに応答して、前記キャッシュに付加する前記トラック用のキャッシュ制御ブロックを表すために代替のブロック構造を作成すること、
前記キャッシュ制御ブロックも示しながら、キャッシュ・ディレクトリ・インデックス内に前記代替のブロック構造を示すこと、
前記代替のブロック構造をキューで示すこと、
前記リカバリー・プロセスに応答して、前記キュー内に示される代替のブロック構造を決定すること、および、
前記決定された代替のブロック構造を前記キャッシュ・ディレクトリ・インデックスから除去すること
をさらに含む、請求項9に記載のコンピュータ・プログラム製品。
【請求項11】
前記アクティブ・トラック・データ構造は、複数のキャッシュ制御ブロック用の複数のビットを含むビットマップを含み、1つのキャッシュ制御ブロック用の1つのビットは、前記キャッシュ制御ブロックによって識別されたトラックがアクティブであるか非アクティブであるかを示し、前記操作は、
示されたアクティブ・トラックを決定する、前記状態を保存するか否かを判定する、前記状態を保存する、および、前記示されたアクティブ・トラックを除去するために並行処理する異なるプロセッサに、前記ビットマップの所定の部分を含むキャッシュ・ラインの群を割り当てることをさらに含む、請求項8に記載のコンピュータ・プログラム製品。
【請求項12】
前記操作は、
前記示されたアクティブ・トラック用のキャッシュ制御ブロック内のトラック利用情報を処理することであって、それにより、前記アクティブ・トラック・データ構造内でアクティブとして示された前記トラックが、アクティブであるか否かを判定する、処理することをさらに含み、前記リカバリー操作は、前記トラック利用情報からもアクティブと判定される、前記アクティブ・トラック・データ構造内でアクティブとして示されたトラックに関して実施される、請求項8に記載のコンピュータ・プログラム製品。
【請求項13】
キャッシュ内のストレージ内の複数のトラックを管理するためのシステムであって、
少なくとも1つのプロセッサと、
コンピュータ可読プログラムコードを有するコンピュータ可読ストレージ媒体とを備え、前記コンピュータ可読プログラムコードは、前記少なくとも1つのプロセッサによって実行されると、
アクティブ・ステータスを有する、前記キャッシュ内の複数のトラックを示すアクティブ・トラック・データ構造を維持すること、
トラック用のキャッシュ制御ブロック内のアクティブ・ビットを、前記アクティブ・トラック・データ構造内でアクティブとして示された前記トラックについてアクティブであることを示すように設定すること、および、
前記キャッシュ制御ブロックを処理することに応答して、前記キャッシュ制御ブロックについての処理を決定するために前記トラックがアクティブであるか非アクティブであるかを前記トラック用の前記キャッシュ制御ブロックから判定することを含む操作を実施する、システム。
【請求項14】
前記トラックがアクティブであるか否かを前記キャッシュ制御ブロックから前記判定することは、前記キャッシュ制御ブロックに対してロックを取得することに応答して実施され、前記操作は、
前記トラックがアクティブでないと、前記キャッシュ制御ブロックから判定することに応答して、前記トラックがアクティブであることを前記アクティブ・トラック・データ構造内で示すこと、および、
前記トラック用の前記キャッシュ制御ブロック内の前記アクティブ・ビットを、アクティブであることを示すように設定すること
をさらに含む、請求項13に記載のシステム。
【請求項15】
前記トラックがアクティブであるか否かを前記キャッシュ制御ブロックから前記判定することは、前記トラック用の前記キャッシュ制御ブロックに対してロックを解除することに応答して実施され、前記操作は、
前記キャッシュ制御ブロックについての利用情報を処理することであって、それにより、前記トラックがアクティブであることを前記トラック用の前記アクティブ・ビットが示すことに応答して、前記トラックがアクティブであるか否かを判定する、処理すること、ならびに、
前記トラックが非アクティブであることを、前記利用情報を前記処理することが示すと判定することに応答して、
前記トラックが非アクティブであることを前記アクティブ・トラック・データ構造内で示すこと、および、
前記トラック用の前記キャッシュ制御ブロック内の前記アクティブ・ビットを非アクティブであることを示すように設定すること
を実施すること
をさらに含む、請求項13に記載のシステム。
【請求項16】
前記アクティブ・トラック・データ構造は、複数のキャッシュ制御ブロック用の複数のビットを含むビットマップを含み、1つのキャッシュ制御ブロック用の1つのビットは、前記キャッシュ制御ブロックによって識別されたトラックがアクティブであるか、非アクティブであるかを示し、前記ビットマップの前記複数のビットは、キャッシュ・ライン内に実装され、前記操作は、
前記キャッシュ制御ブロック用の1つのビットを含む前記ビットマップの一部分を有するキャッシュ・ラインに対してロックを取得すること、
前記キャッシュ制御ブロック用の前記ビットマップ内の前記ビットを、前記キャッシュ・ラインをロックすることに応答してアクティブであるかまたは非アクティブであるかを示すように設定すること、および、
前記キャッシュ制御ブロック用の前記ビットを設定することに応答して前記キャッシュ・ラインに対して前記ロックを解除すること
をさらに含む、請求項13に記載のシステム。
【請求項17】
前記操作は、
アクティブであることを示すことをデモートするために、前記キャッシュからのトラックおよび前記トラック用のキャッシュ制御ブロック内の前記アクティブ・ビットをデモートする操作を始動させることに応答して、
デモートする前記トラックが非アクティブであることを前記アクティブ・トラック・データ構造内で示すこと、および、
デモートする前記トラック用の前記キャッシュ制御ブロック内の前記アクティブ・ビットを、非アクティブであることを示すように設定すること
をさらに含む、請求項13に記載のシステム。
【請求項18】
キャッシュ内のストレージ内の複数のトラックを管理するためのシステムであって、
少なくとも1つのプロセッサと、
コンピュータ可読プログラムコードを有するコンピュータ可読ストレージ媒体とを備え、前記コンピュータ可読プログラムコードは、前記少なくとも1つのプロセッサによって実行されると、
アクティブ・ステータスを有する、前記キャッシュ内の複数のトラックを示すアクティブ・トラック・データ構造を維持すること、
示されたアクティブ・トラックを決定するために前記アクティブ・トラック・データ構造を処理すること、および、
前記決定され示されたアクティブ・トラックについて、状態保存、妥当性確認、または廃棄、あるいはその組合せを行うリカバリー操作を実施することを含む操作を実施する、システム。
【請求項19】
前記操作は、
前記キャッシュに付加するトラックのために割り振る利用可能なキャッシュ制御ブロックが存在しないと判定することに応答して、前記キャッシュに付加する前記トラック用のキャッシュ制御ブロックを表すために代替のブロック構造を作成すること、
前記キャッシュ制御ブロックも示しながら、キャッシュ・ディレクトリ・インデックス内に前記代替のブロック構造を示すこと、
前記代替のブロック構造をキューで示すこと、
前記リカバリー・プロセスに応答して、前記キュー内に示される代替のブロック構造を決定すること、および、
前記決定された代替のブロック構造を前記キャッシュ・ディレクトリ・インデックスから除去すること
をさらに含む、請求項18に記載のシステム。
【請求項20】
前記操作は、
前記示されたアクティブ・トラック用のキャッシュ制御ブロック内のトラック利用情報を処理することであって、それにより、前記アクティブ・トラック・データ構造内でアクティブとして示された前記トラックが、アクティブであるか否かを判定する、処理することをさらに含み、前記リカバリー操作は、前記トラック利用情報からもアクティブと判定される、前記アクティブ・トラック・データ構造内でアクティブとして示されたトラックに関して実施される、請求項18に記載のシステム。
【請求項21】
キャッシュ内のストレージ内の複数のトラックを管理するための方法であって、
アクティブ・ステータスを有する、前記キャッシュ内の複数のトラックを示すアクティブ・トラック・データ構造を維持すること、
トラック用のキャッシュ制御ブロック内のアクティブ・ビットを、前記アクティブ・トラック・データ構造内でアクティブとして示された前記トラックについてアクティブであることを示すように設定すること、および、
前記キャッシュ制御ブロックを処理することに応答して、前記キャッシュ制御ブロックについての処理を決定するために前記トラックがアクティブであるか非アクティブであるかを前記トラック用の前記キャッシュ制御ブロックから判定することを含む、方法。
【請求項22】
前記トラックがアクティブであるか否かを前記キャッシュ制御ブロックから前記判定することは、前記トラック用の前記キャッシュ制御ブロックに対してロックを解除することに応答して実施され、前記操作は、
前記キャッシュ制御ブロックについての利用情報を処理することであって、それにより、前記トラックがアクティブであることを前記トラック用の前記アクティブ・ビットが示すことに応答して、前記トラックがアクティブであるか否かを判定する、処理すること、ならびに、
前記トラックが非アクティブであることを、前記利用情報を前記処理することが示すと判定することに応答して、
前記トラックが非アクティブであることを前記アクティブ・トラック・データ構造内で示すこと、および、
前記トラック用の前記キャッシュ制御ブロック内の前記アクティブ・ビットを非アクティブであることを示すように設定すること
を実施すること
をさらに含む、請求項21に記載の方法。
【請求項23】
前記アクティブ・トラック・データ構造は、複数のキャッシュ制御ブロック用の複数のビットを含むビットマップを含み、1つのキャッシュ制御ブロック用の1つのビットは、前記キャッシュ制御ブロックによって識別されたトラックがアクティブであるか、非アクティブであるかを示し、前記ビットマップの前記複数のビットは、キャッシュ・ライン内に実装され、前記操作は、
前記キャッシュ制御ブロック用の1つのビットを含む前記ビットマップの一部分を有するキャッシュ・ラインに対してロックを取得すること、
前記キャッシュ制御ブロック用の前記ビットマップ内の前記ビットを、前記キャッシュ・ラインをロックすることに応答してアクティブであるかまたは非アクティブであるかを示すように設定すること、および、
前記キャッシュ制御ブロック用の前記ビットを設定することに応答して前記キャッシュ・ラインに対して前記ロックを解除すること
をさらに含む、請求項21に記載の方法。
【請求項24】
システム障害後の前記キャッシュを含むシステムの初期化中のリカバリー・プロセスに応答して、
示されたアクティブ・トラックを決定するために、前記アクティブ・トラック・データ構造を処理すること、および、
決定され示されたアクティブ・トラックについて、状態保存、妥当性確認、または廃棄、あるいはその組合せを行うリカバリー操作を実施することをさらに含む、請求項21に記載の方法。
【請求項25】
前記キャッシュに付加するトラックのために割り振る利用可能なキャッシュ制御ブロックが存在しないと判定することに応答して、前記キャッシュに付加する前記トラック用のキャッシュ制御ブロックを表すために代替のブロック構造を作成すること、
前記キャッシュ制御ブロックも示しながら、キャッシュ・ディレクトリ・インデックス内に前記代替のブロック構造を示すこと、
前記代替のブロック構造をキューで示すこと、
前記リカバリー・プロセスに応答して、前記キュー内に示される代替のブロック構造を決定すること、および、
前記決定された代替のブロック構造を前記キャッシュ・ディレクトリ・インデックスから除去すること
をさらに含む、請求項24に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プロセスに対してキャッシュ内のアクティブ・トラックを決定するためにアクティブ・トラック・データ構造を維持するためのコンピュータ・プログラム製品、システム、および方法に関する。
【背景技術】
【0002】
ストレージ・コントローラ内のキャッシュ管理システムは、要求されたトラックを記憶するストレージ・デバイスよりも、高速アクセスストレージ・デバイスにおける読み取りおよび書き込み操作の結果として最近アクセスされた、メモリ等のストレージ・デバイスにトラックをバッファリングする。高速アクセス・キャッシュ・メモリ内のトラックに対する後続の読み取り要求は、低速アクセス・ストレージから要求されたトラックを戻すよりも速いレートで戻され、したがって、読み取り待ち時間を低減する。キャッシュ管理システムは、ストレージ・デバイスを対象とする修正トラックがキャッシュ・メモリに書き込まれるときで、かつ、修正トラックが、ハード・ディスク・ドライブ等のストレージ・デバイスに書き出される前に、書き込み要求に対する終了を戻すこともできる。ストレージ・デバイスに対する書き込み待ち時間は、通常、キャッシュ・メモリに書き込む待ち時間より著しく長い。そのため、キャッシュを使用することは、書き込み待ち時間も低減する。
【0003】
ストレージ・コントローラ・マイクロコードは、ハードウェアまたはソフトウェア問題による障害状態を経験する場合がある。そのような障害後の初期化によって、ウォームスタート・プロセスが、実施されて、データを収集しデバッグし、キャッシュされたデータ、特に、キャッシュ内の修正データのデータ・リカバリーを実施することができる。デバッグ・データを収集し、データ・リカバリーを実施するために、ウォームスタート・リカバリー・プロセスは、アクティブ・トラックのテーブルを生成する。アクティブ・トラックは、ユーザ・カウント、ロック・カウント、修正カウント、ウェイタ等を用いて識別される或る種の処理状態下にあったトラックである。ウォームスタートまたは他のリカバリー・プロセスの一部として、決定されたアクティブ・トラックは、妥当性確認される、クリーニング(または廃棄)される、または状態保存されるあるいはその組合せを行われ得る。アクティブでないキャッシュ・トラックは、ウォームスタートまたはリカバリーの一部としてアドレス指定されることができない。
【0004】
アクティブ・エントリ・テーブルに含むためアクティブ・トラックを決定するために、ウォームスタート・プロセスは、キャッシュ・ディレクトリ(スキャッタ・インデックス・テーブル等)内の全てのエントリを処理することによってキャッシュ全体を走査することができる。この走査は、全てのチャンクが処理されるまで、キャッシュ・ディレクトリの1つのチャンクを異なるプロセッサが並列に処理することによって並列に行われ得る。キャッシュ・ディレクトリ全体は、ウォームスタート中に処理される。キャッシュ・サイズが増加するにつれて、プロセッサの数およびメモリ速度が同様に上がらない場合、キャッシュ・ディレクトリ全体を走査する時間は、キャッシュのサイズが増加するにつれて直線的に増加する。
【0005】
リカバリー操作中にプロセスに対してキャッシュ内のアクティブ・トラックを決定する改良型技術についての当技術分野での必要性が存在する。
【発明の概要】
【0006】
キャッシュ内のストレージ内の複数のトラックを管理するためのコンピュータ・プログラム製品が提供される。アクティブ・トラック・データ構造は、アクティブ・ステータスを有する、キャッシュ内の複数のトラックを示す。トラック用のキャッシュ制御ブロック内のアクティブ・ビットは、アクティブ・トラック・データ構造内でアクティブとして示されたトラックについてアクティブであることを示すように設定される。キャッシュ制御ブロックを処理することに応答して、トラックがアクティブであるか非アクティブであるかの判定が、トラック用のキャッシュ制御ブロックから行われて、キャッシュ制御ブロックについての処理を決定する。
【0007】
上記実施形態は、キャッシュ制御ブロック内のアクティブ・ビットを、トラックがアクティブであることを示すように設定することによって最適化を提供し、それは、アクティブ・トラック・データ構造がロックされる必要があるか否かを判定し、キャッシュ制御ブロックに関してステータス変更が存在するときを更新するため、アクティブ・トラック・データ構造にアクセスするためにロックを取得する必要性を回避する。トラックがアクティブ・ステータスを有するか否かをアクティブ・トラック・データ構造内でさらに示すことは、トラックがアクティブであるか否かを、システムがアクティブ・トラック・データ構造から迅速に判定することを可能にする。
【0008】
さらなる実施形態において、トラックがアクティブであるか否かのキャッシュ制御ブロックから行われる判定は、キャッシュ制御ブロックに対してロックを取得することに応答して実施される。トラックがアクティブであるという指示は、トラックがアクティブでないとキャッシュ制御ブロックから判定することに応答してアクティブ・トラック・データ構造内で行われる。トラック用のキャッシュ制御ブロック内のアクティブ・ビットは、アクティブであることを示すように設定される。
【0009】
上記実施形態によれば、例えトラックがアクティブであることをキャッシュ制御ブロックが示しても、トラックが実際にアクティブであるという指示が、アクティブ・トラック・データ構造内で行われことがあり、それは、例えトラックがアクティブであることをキャッシュ制御ブロックが示しても、トラックがアクティブであることを他の情報が示す場合に起こる場合がある。キャッシュ制御ブロック内のアクティブ・ビットは、アクティブ・トラック・データ構造に対して行われた変更に整合するよう、アクティブであることを示すように設定されて、トラックがアクティブであるか非アクティブであるかを判定するためにアクティブ・トラック・データ構造をロックする必要なしで、トラックがアクティブであるか非アクティブであるかの判定を可能にする。
【0010】
さらなる実施形態において、トラックがアクティブであるか否かのキャッシュ制御ブロックからの判定は、トラック用のキャッシュ制御ブロックに対してロックを解除することに応答して実施される。キャッシュ制御ブロックについての利用情報は、トラックがアクティブであることを、トラック用のアクティブ・ビットが示すことに応答して、トラックがアクティブであるか否かを判定するために処理される。トラックが非アクティブであることを、利用情報を処理することが示すと判定することに応答して、トラックが非アクティブであることをアクティブ・トラック・データ構造内で示すこと、および、トラック用のキャッシュ制御ブロック内のアクティブ・ビットを非アクティブであることを示すように設定することが実施される。
【0011】
上記実施形態によれば、キャッシュ制御ブロックと独立の利用情報は、キャッシュ制御ブロック内のアクティブ・ビットのアクティブの指示が、独立利用情報に基づいて正しいか否かを確認するために使用される。そのため、アクティブ・ビットがアクティブであることを示すが、利用情報が非アクティブであることを示す場合、アクティブ・トラック・データ構造およびキャッシュ制御ブロック内のアクティブ・ビットは共に、この情報を同期した状態に維持するために、非アクティブであることを示すように更新される。
【0012】
さらなる実施形態において、アクティブ・トラック・データ構造は、キャッシュ制御ブロック用の複数のビットを含むビットマップを含む。1つのキャッシュ制御ブロック用の1つのビットは、キャッシュ制御ブロックによって識別されたトラックがアクティブであるか非アクティブであるかを示す。
【0013】
さらなる実施形態において、ビットマップの複数のビットは、キャッシュ・ライン内に実装される。ロックは、キャッシュ制御ブロック用の1つのビットを含むビットマップの一部分を有するキャッシュ・ラインに対して取得される。キャッシュ制御ブロック用のビットマップ内のビットは、キャッシュ・ラインをロックすることに応答してアクティブであるかまたは非アクティブであるかを示すように設定される。キャッシュ・ラインに対するロックは、キャッシュ制御ブロック用のビットを設定することに応答して解除される。
【0014】
上記実施形態によれば、キャッシュ・ライン内のビットマップ内にアクティブ・トラック・データ構造の複数のビットを実装することによって、異なるキャッシュ・ライン内のビットマップの複数の部分は、アクティブ・トラック・データ構造のビットマップ内で異なるトラックがアクティブとして示されるか否かを複数のプロセスが並行に判定するために、異なるキャッシュ・ライン用の異なるロックが独立に保持されることによって並行にアクセスされ得る。これは、アクティブ・トラック・データ構造ビットマップを走査してアクティブ・トラックを決定する操作を、これが決定される必要がある操作中、例えばリカバリー中に改善する。
【0015】
さらなる実施形態において、アクティブであることを示すことをデモートするために、キャッシュからのトラックおよびトラック用のキャッシュ制御ブロック内のアクティブ・ビットをデモートする操作を始動させることに応答して、デモートするトラックが非アクティブであることをアクティブ・トラック・データ構造内で示すこと、および、デモートするトラック用のキャッシュ制御ブロック内のアクティブ・ビットを、非アクティブであることを示すように設定することが実施される。
【0016】
上記実施形態において、非アクティブまたはアクティブのトラックステータスが常に最新に維持されることを保証するために、キャッシュからのトラックをデモートするときに、アクティブ・トラック・データ構造およびキャッシュ制御ブロック内のアクティブ・ビットは共に、デモートするトラック用のビットが非アクティブであることを示すように設定される。
【0017】
キャッシュ内のストレージ内の複数のトラックを管理するためのコンピュータ・プログラム製品がさらに提供される。アクティブ・トラック・データ構造は、アクティブ・ステータスを有する、キャッシュ内の複数のトラックを示す。アクティブ・トラック・データ構造は、示されたアクティブ・トラックを決定するために処理される。決定され示されたアクティブ・トラックについての、状態保存、妥当性確認、または廃棄あるいはその組合せのリカバリー操作が実施される。
【0018】
上記実施形態によれば、アクティブおよび非アクティブ・トラックを示すアクティブ・トラック・データ構造は、リカバリー操作がそれについて実施されるアクティブ・トラックを決定するために、リカバリー操作中に使用される。アクティブ・トラック・データ構造を使用することは、トラックがアクティブであるか否かを判定するために、キャッシュ内のおよび他の情報内のトラックを走査し処理する必要性を回避する。
【0019】
さらなる実施形態において、キャッシュに付加するトラックのために割り振る利用可能なキャッシュ制御ブロックが存在しないと判定することに応答して、キャッシュに付加するトラック用のキャッシュ制御ブロックを表すために代替のブロック構造を作成することが実施される。キャッシュ制御ブロックも示しながら、キャッシュ・ディレクトリ・インデックスにおける代替のブロック構造の指示が行われる。代替のブロック構造はキューで示される。リカバリー・プロセスに応答して、キュー内に示される代替のブロック構造を決定すること、および、決定された代替のブロック構造をキャッシュ・ディレクトリ・インデックスから除去することが実施される。
【0020】
上記実施形態によれば、代替のブロック構造は、キャッシュに付加するトラック用の、利用可能でないキャッシュ制御ブロックを表すために使用される。代替のブロック構造は、リソースが、キャッシュ制御ブロックに割り当てられるために利用可能になると、キャッシュ制御ブロックに変換され得る。示した代替のブロック構造のキューは、リカバリー・プロセス中に使用されて、キャッシュ・ディレクトリ・インデックスから除去する、フェイク・キャッシュ制御ブロックとしても知られるそのような代替のブロック構造の即座の判定を可能にする。
【0021】
さらなる実施形態において、示されたアクティブ・トラック用のキャッシュ制御ブロック内のトラック利用情報は、アクティブ・トラック・データ構造内でアクティブとして示されたトラックが、アクティブであるか否かを判定するために処理される。リカバリー操作は、トラック利用情報からもアクティブと判定される、アクティブ・トラック・データ構造内でアクティブとして示されたトラックに関して実施される。
【0022】
上記実施形態によれば、例えキャッシュ制御ブロック内で示されたトラックがアクティブであっても、このステータスは、トラック利用情報を処理することによってオーバーライドされて、アクティブ・トラック・データ構造内でアクティブとして示されるだけでなく、トラック利用情報からアクティブであると判定されるトラックについてのみ、リカバリー操作が実施されるように、トラックがアクティブであるか非アクティブであるかを判定することができる。
【0023】
本発明の実施形態は、ここで、添付図面を参照して例としてのみ説明される。
【図面の簡単な説明】
【0024】
【
図1】コンピューティング環境の一実施形態を示す図である。
【
図2】キャッシュ制御ブロックの一実施形態を示す図である。
【
図3】キャッシュにトラックを付加する要求を処理する操作の一実施形態を示す図である。
【
図4】キャッシュ内のトラックにアクセスするためにキャッシュ制御ブロックをロックする操作の一実施形態を示す図である。
【
図5】キャッシュ制御ブロックに対するロックを解除する操作の一実施形態を示す図である。
【
図6】キャッシュからキャッシュ制御ブロックをデモートする操作の一実施形態を示す図である。
【
図7】リカバリー処理を始動する操作の一実施形態を示す図である。
【
図8】アクティブ・トラックを決定するためリカバリー・プロセスを実行するための、キャッシュ・ラインのチャックを割り当てられたプロセッサによる操作の一実施形態を示す図である。
【
図9】
図1のコンポーネントがそこで実装されるコンピューティング環境を示す図である。
【発明を実施するための形態】
【0025】
現在の実装態様において、キャッシュまたはキャッシュ・ディレクトリ全体は、障害後のリカバリー操作中のプロセスに対してキャッシュ内のアクティブ・トラックを決定するために走査される。説明する実施形態は、初期化またはリカバリー操作の一部としてキャッシュ内のアクティブ・トラックを決定するコンピュータ・キャッシング技術に対する改善を提供する。説明する実施形態は、キャッシュ内のトラックがアクティブであるか否かを示すアクティブ・トラック・データ構造を提供する。通常の入力/出力(I/O:Input/Output)操作中に、キャッシュ制御ブロックがアクティブであることを、アクティブ・トラック・データ構造が示すか否かを示すキャッシュ制御ブロック内のアクティブ・ビットは、アクティブまたは非アクティブであることを示すためにアクティブ・トラック・データ構造を更新するか否かを判定するために使用される。キャッシュ制御ブロック内のアクティブ・ビットを使用することは、アクティブ・トラック・データ構造にアクセスするためにロックを取得する必要性を回避することによって処理操作を最適化して、キャッシュ制御ブロックに関してステータス変更が存在するときに、キャッシュ制御ブロック用のアクティブ・トラック・データ構造内のビットが更新される必要があるか否かを判定する。
【0026】
説明する実施形態は、トラックが非アクティブであるか、アクティブであるかを正確に反映するために、キャッシュに対するI/O操作の生成中に能動的にアクティブ・トラック・データ構造を更新する。ウォームスタート等のリカバリー操作中に、アクティブ・トラック・データ構造は、状態保存、妥当性確認、廃棄等のようなリカバリー操作を受けるアクティブ・トラックを決定するために処理される場合があり、非アクティブであるトラックは、リカバリー操作を受けない。説明する実施形態は、リカバリー操作中に処理するアクティブ・トラックを決定するために、キャッシュまたはキャッシュ・ディレクトリ全体を走査する必要性を回避する。
【0027】
図1は、コンピューティング環境の一実施形態を示す。複数のホスト102
1、102
2、・・・、102
nは、ストレージ110内の複数のボリューム108のデータ(例えば、論理ユニット番号、論理デバイス、論理サブシステム等)にアクセスするために、ネットワーク106を通じてストレージ・コントローラ104に対して入力/出力(I/O)要求を送信することができる。ストレージ・コントローラ104は、1つまたは複数のプロセッサ112、および、ストレージ110用のデータをキャッシュするキャッシュ116を含むメモリ114を含む。プロセッサ112は、別個の中央処理ユニット(CPU)、単一CPU上の1つのコアまたは複数のコアの群、あるいは、1つまたは複数のCPU上の処理リソースの群を備えることができる。キャッシュ116は、ホスト102
1、102
2、・・・、102
nとストレージ110内のボリューム108との間で転送されるデータをバッファリングする。
【0028】
メモリ114は、ホスト1021、1022、・・・、102nとストレージ110との間で転送されるトラックの転送を管理するためのストレージ・マネジャ118;ホスト1021、1022、・・・、102nとキャッシュ116内のストレージ110との間で転送されるデータを管理するためのキャッシュ・マネジャ120;および、ストレージ・コントローラ104オペレーティング・システムが、異常終了するかまたはそうでなければリスタートされる場合に起こることができるような、ストレージ・コントローラ104の初期化を実施するリカバリー・プロセス121をさらに含む。トラックは、ボリューム、論理デバイス等のようなトラックのより大きい群の一部とすることができる、トラック、論理ブロックアドレス(LBA:Logical Block Address)、ストレージ・セル、セルの群(例えば、セルの列、行、またはアレイ)、セクタ、セグメント等のようなストレージ110内で構成される任意のデータユニットを備えることができる。
【0029】
インターナショナル・ビジネス・マシーンズ・コーポレーション(「IBM:International Business Machines Corporation」)Z/OS(R)オペレーティング・システムに関するような特定の実装態様において、各セグメントは、キャッシュ・セグメント制御ブロック(CSCB:cache segment control block)と呼ばれる関連記述子を有することができ、CSCBのうちの1つは、キャッシュ・ディレクトリ制御ブロック(CDCB:cache directory control block)と呼ばれるキャッシュ制御ブロックとしてキャストされる。キャッシュ116は、4Kセグメントに分割され得る。キャッシュ内の各トラックは、最大17個のCSCBを有することができる。トラック内のCSCBのうちの1つは、CDCB(キャッシュ・ディレクトリ制御ブロック)とも呼ばれるキャッシュ制御ブロックとして指定され、全てのトラック関連制御情報を保持する。キャッシュ116内の各トラックについて1つのキャッシュ制御ブロックが存在し、キャッシュ116内のトラック上にメタデータを提供する。(Z/OSは、世界全体を通したIBMの登録商標である)
【0030】
リカバリー・プロセス121は、コールド・スタートより速い初期化およびリカバリーを提供するため、既存のデータ構造から状態情報を回復するために、ストレージ・コントローラ104のシステム初期化を実施する。IBM DS8000(商標)ストレージ・コントローラ等のエンタープライズ・ストレージ・コントローラにおいて、「ウォームスタート(warmstart)」と呼ばれるリカバリー・プロセスは、デバッグ機構とリカバリー法の両方として使用され得る。リカバリー・プロセス121は、状態保存データを収集するために状態保存操作を始動することができる。この状態保存データは、リカバリーを必要とした問題および条件を解析するために必要とみなされるデータ構造を含むことができる。リカバリー・プロセス121は、ストレージ・コントローラ104内のデータ構造を再始動する、リンクされたリストを再構築する、そしてストレージ・コントローラ104をより知られている状態に回復させることができる。リカバリー中、I/Oがブロックされ、したがって再駆動されなければならない期間が存在する。(DS8000は、世界全体を通したIBMの商標である)
【0031】
キャッシュ・マネジャ120は、キャッシュ116内で読み取り(未修整)および書き込み(修正済み)トラックを管理するためにメモリ114内にキャッシュ管理情報122を維持する。キャッシュ管理情報122は、キャッシュ116からどのトラックをデモートするかを決定するためにキャッシュ116内のトラックをその中で示す少なくとも最近使用された(LRU:least recently used)キャッシュ・リスト124;キャッシュ・ディレクトリ126であって、キャッシュ制御ブロック200iまたはセグメント記述子のインデックスを、キャッシュ制御ブロック200iを有するキャッシュ内の複数のセグメントまたはキャッシュ・ディレクトリ126内で識別された1つのセグメントの場所に提供する、キャッシュ・ディレクトリ126;キャッシュ116内の複数のアクティブ・トラックを示すアクティブ・トラック・データ構造128;割り振る、残っているキャッシュ制御ブロックが全く存在しないときに代替のデータ構造によって表されるキャッシュ制御ブロックを示すフェイク・キャッシュ制御ブロック・キュー130;および、リカバリー処理のためキャッシュ116内でアクティブ・トラックを示すためにリカバリー・プロセス121中に生成されるアクティブ・トラック・テーブル132を含むことができる。
【0032】
一実施形態において、アクティブ・トラック・データ構造128は、キャッシュ116内の各セグメントについて1つのビットを有するビットマップを含むことができる。トラックは、キャッシュ116内の複数のセグメントを割り振られ、1つのトラック用のキャッシュ制御ブロック200iであって、そのトラック用のメタデータを有する、キャッシュ制御ブロック200iは、トラックに割り振られたセグメントのうちの1つのセグメント内に存在することができる。トラック用のキャッシュ制御ブロック200iに対応するビットマップ128内のビットは、トラックがアクティブであるか、非アクティブであるかを示すように設定され得る。トラック・データを有し、キャッシュ制御ブロック200iを有さないセグメントを表すアクティブ・トラック・データ構造128ビットマップ内の複数のビットは、未使用のままにされる。アクティブ・トラック・データ構造128ビットマップの複数の部分またはビットは、対応するキャッシュ制御ブロック200iがアクティブであるか否かを判定するため複数のビットを処理するためにロックされる必要があるキャッシュ・ラインに実装され得る。
【0033】
キャッシュ・ディレクトリ126は、キャッシュ116内のトラック用のキャッシュ制御ブロック200i、および、キャッシュに付加するトラックに割り当てるセグメントがもはや存在しないときにキャッシュ制御ブロックを表す、フェイク・キャッシュ制御ブロックとしても知られる、代替のデータ構造を示すことができる。そのような場合、フェイク・キャッシュ制御ブロックは、1つのトラック用のキャッシュ制御ブロックを割り振る、保留中の1つの要求のみが存在するように、キャッシュ・ディレクトリ126に付加される。フェイク・キャッシュ制御ブロックがそれのために作成されるトラック用のデータは、キャッシュ制御ブロック200iがフェイク・キャッシュ制御ブロックを置換するために割り振られるまで、キャッシュ116に記憶されない。フェイク・キャッシュ制御ブロックは、フェイク・フラグ210および識別子202等のキャッシュ制御ブロック200i情報を有することができるタスク制御ブロック(TCB:task control block)として実装され得る。
【0034】
特定の実施形態において、キャッシュ・ディレクトリ126は、トラック・アドレスまたはキャッシュ制御ブロック識別子がテーブル内のエントリにハッシュ化されるスキャッタ・インデックス・テーブルとして実装され得る。キャッシュ116がそのキャッシュ制御ブロックまたはトラック用のデータを有する場合、値が、それにハッシュ化されるキャッシュ・ディレクトリ126内のエントリは、1つのトラック用のキャッシュ制御ブロック200iセグメントが記憶されるキャッシュ116内の場所に対するポインタを有することになる。
【0035】
ストレージ・マネジャ118、キャッシュ・マネジャ120、およびリカバリー・プロセス121は、メモリ114内にロードされ、プロセッサ112の1つまたは複数によって実行されるプログラムコードとして
図1に示される。代替的に、機能のうちの幾つかまたは全ては、特定用途向け集積回路(ASIC:Application Specific Integrated Circuit)内等、ストレージ・コントローラ104内のハードウェアデバイス内にマイクロコードまたはファームウェアとして実装され得る。
【0036】
ストレージ110は、当技術分野で知られている1つまたは複数のストレージ・デバイス、例えば、固体電子部品から構成される(comprised of)固体ストレージ・デバイス(SSD:solid state storage device)、NANDストレージ・セル、EEPROM(Electrically Erasable Programmable Read-Only Memory、電気的に消去可能なプログラマブル読み出し専用メモリ)、フラッシュ・メモリ、フラッシュ・ディスク、ランダム・アクセス・メモリ(RAM:Random Access Memory)デバイス、ストレージクラス・メモリ(SCM:storage-class memory)、相変化メモリ(PCM:Phase Change Memory)、抵抗性ランダム・アクセス・メモリ(RRAM:resistive random access memory)、スピン転送トルク・メモリ(STM-RAM:spin transfer torque memory)、導電性ブリッジRAM(CBRAM:conductive bridging RAM)、磁気ハード・ディスク・ドライブ、光ディスク、テープ等を備えることができる。ストレージ・デバイスは、デバイスのアレイ、例えば、単なるディスクの束(JBOD:Just a Bunch of Disk)、直接アクセスストレージ・デバイス(DASD:Direct Access Storage Device)、独立ディスクの冗長アレイ(RAID:Redundant Array of Independent Disks)アレイ、仮想化デバイス等にさらに構成され得る。さらに、ストレージ・デバイスは、異なる供給業者からのまたは同じ供給業者からの異種ストレージ・デバイスを備えることができる。
【0037】
メモリ114は、上記で説明したデバイスを含む適切な揮発性または不揮発性メモリ・デバイスを備えることができる。
【0038】
ネットワーク106は、ストレージ・エリア・ネットワーク(SAN:Storage Area Network)、ローカル・エリア・ネットワーク(LAN:Local Area Network)、ワイド・エリア・ネットワーク(WAN:Wide Area Network)、インターネット、およびイントラネット等を備えることができる。代替的に、ホスト1021、1022、・・・、102nは、ペリフェラル・コンポーネント・インターコネクト(PCI:Peripheral Component Interconnect)バス・インタフェースおよび当技術分野で知られている他のインタフェース等のバス・インタフェースを通じてストレージ・コントローラ104に接続され得る。
【0039】
図2は、キャッシュ116内のトラックのうちの1つのトラックについてのキャッシュ制御ブロック200
iの1つのインスタンスの一実施形態を示し、キャッシュ制御ブロック200
iのインデックス値等のキャッシュ制御ブロック識別子202;キャッシュ制御ブロック200
iに関連するトラックが示されるキャッシュ・リスト204;トラックが示されるLRUキャッシュ・リスト206内の位置;トラックが、アクティブ・トラック・データ構造128内でアクティブとして示されるか否かを示すアクティブ・ビット208;キャッシュ制御ブロック202が、実際には、キャッシュ・セグメントを用いて実装されるのではなく、代わりに、タスク制御ブロック等の代替のデータ構造を用いて実装されるか否かを示すフェイク・フラグ;アクティブ・ユーザ・カウント、アクティブ書き込みカウント、ロック・カウント、修正カウント、ウェイタ等のような、キャッシュ内のトラックに関する利用統計を提供する利用情報212;および、キャッシュ制御ブロック200
iによって識別されたトラックがキャッシュ116からデモートされるか否かを示すデモート・ステータス214を含むが、それに限定されない。さらなる情報は、キャッシュ116内のトラックを管理するために使用される、本明細書で述べないキャッシュ制御ブロック200
i内に含まれ得る。
【0040】
アクティブ・ビット208は、トラックがアクティブであることを、アクティブ・トラック・データ構造128が示すか否かを示すために最適化を提供する。これは、キャッシュ制御ブロック200i用のアクティブ・トラック・データ構造128内のビットを読み取るために、キャッシュ・ラインに対してロックを取得する必要なしで、プロセスが、トラックがアクティブであると判定することを可能にする。これは、通常操作中のプロセスが、アクティブ・トラック・データ構造128内のビットがリセットされる必要があるか否かを、そのビットがアクティブであるか非アクティブであるかを判定するために読み取るビットを有するキャッシュ・ラインをロックする必要なしで、判定することを可能にする。
【0041】
図3は、ホスト102
1、102
2、・・・、102
nのうちの1つからの、キャッシュ116にトラックを付加する要求を処理するために、キャッシュ・マネジャ120によって実施される操作の一実施形態を示す。キャッシュ116にトラックを付加する要求を(ブロック300にて)受信すると、要求のために、キャッシュ制御ブロック200
iに割り振る、キャッシュ116内の利用可能なセグメントが存在するか否かの判定が行われる。(ブロック302にて)利用可能なセグメントが存在する場合、(ブロック304にて)新しいキャッシュ制御ブロック200
iは、(ブロック304にて)割り振られ、トラック用のキャッシュ・ディレクトリ126において示される。トラックは、その後、キャッシュ116に付加され得る。(ブロック302にて)トラックにとってキャッシュ制御ブロック200
iに割り振る、利用可能なセグメントまたはキャッシュ・セグメント制御ブロックが存在しない場合、キャッシュ・マネジャ120は、フェイク・キャッシュ制御ブロックとしても知られる、キャッシュ制御ブロックを表すために、タスク制御ブロック等の代替のブロック構造を(ブロック306にて)作成する。このフェイク・キャッシュ制御ブロックは、キャッシュ・ディレクトリ126において示され得る。代替のブロック・データ構造内のフェイク・フラグ210は、キャッシュ制御ブロック200
iのために割り振るセグメントが利用可能になるまで、キャッシュ制御ブロックがフェイクまたはプレースホルダーであることを示すように(ブロック308にて)設定される。フェイク・キャッシュ制御ブロック用の代替のブロック構造は、フェイク・キャッシュ制御ブロック・キュー130において(ブロック310にて)示される。
【0042】
図3の操作の実施形態によって、フェイク・キャッシュ制御ブロックに関する情報は、フェイク・キュー130において示されて、ウォームスタートまたはリカバリー処理中のフェイク・キャッシュ制御ブロックの高速判定を可能にする。これは、フェイク・キャッシュ制御ブロック用のキャッシュ116内にデータが存在しないため、廃棄されるフェイク・キャッシュ制御ブロックの高速判定を可能にする。
【0043】
図4は、キャッシュ116内のトラックにアクセスするためにキャッシュ制御ブロック200
iをロックするための、キャッシュ・マネジャ120によって実施される操作の一実施形態を示す。キャッシュ制御ブロック200
iに対してロックを取得する操作を(ブロック400にて)始動すると、キャッシュ・マネジャ120は、アクセスするためにキャッシュ制御ブロック200
iについてのロックを(ブロック402にて)取得し、そのロックは、キャッシュ・ディレクトリ126を通して取得され得る。(ブロック404にて)キャッシュ制御ブロック200
i用のアクティブ・ビット208がアクティブであることを示す場合、これが、キャッシュ制御ブロック200
iがアクセスされるための正しい設定であるため、制御は終了する。(ブロック404にて)アクティブ・ビット208が非アクティブであることを示す場合で、かつ、(ブロック406にて)TCB等のキャッシュ制御ブロックがフェイクでないことを、フェイク・フラグ210が示す場合、キャッシュ・マネジャ120は、キャッシュ制御ブロック200
i用のアクティブ・トラック・データ構造128内のビットを含むキャッシュ・ラインに対してロックを(ブロック408にて)取得する。ロックされたキャッシュ・ライン内のビットは、その後、キャッシュ制御ブロック200
iおよびトラックがアクセスされるため、アクティブであることを示すように(ブロック410にて)設定される。キャッシュ制御ブロック200
i内のアクティブ・ビット208も、アクティブであることを示すように設定される。アクティブ・トラック・データ構造128内のキャッシュ制御ブロック200
iについて、設定されたビットを含むキャッシュ・ラインに対するロックは、その後解除される。(ブロック406にて)キャッシュ制御ブロックが、キャッシュ・セグメントではなく、別のデータ構造で構成されることを、フェイク・フラグ210が示す場合、制御は、さらなる行動を起こすことなく終了する。
【0044】
図4の操作の実施形態によって、キャッシュ116内のトラックのアクセスするためにキャッシュ制御ブロック200
iにアクセスすると、アクティブ・トラック・データ構造128内のアクティブ・ビットが更新される必要があるか否かについての判定が行われる。特定の実施形態において、更新が必要とされるか否かを判定するために、キャッシュ制御ブロック内のアクティブ・ビット208をチェックすることによって、更新するビットを有するキャッシュ・ラインに対して排他的ロックが取得されて、アクティブ・トラック・データ構造128が、実際に更新される必要があるか否かを判定する。この最適化は、アクティブ・ビットが実際に設定される必要があるか否かを最初にチェックすることによって、アクティブ・トラック・データ構造128をロックし、アクティブ・トラック・データ構造128内のビットにアクセスする必要性を回避する。さらに、アクティブ・トラック・データ構造128は、アクティブ・トラック・ステータスに関する最新情報を用いてアクティブ・トラック・データ構造128を維持するため、トラック用のアクティブ・ステータスに関する最新情報を用いて更新されて、ウォームスタートまたはリカバリー操作をさらに最適化する。
【0045】
図5は、キャッシュ116内のトラックに対するアクセスを終了した後、キャッシュ制御ブロック200
iに対するロックを解除するためにキャッシュ・マネジャ120によって実施される操作の一実施形態を示す。キャッシュ制御ブロック200
iのためのロックを解除する操作を(ブロック500にて)始動すると、キャッシュ・マネジャ120は(ブロック502にて)ロックを解除する。(ブロック504にて)キャッシュ制御ブロック200
i用のアクティブ・ビット208が非アクティブであることを示す場合、キャッシュ制御ブロック200
iに対するアクセスが放棄されることから、それが正しい状態であるため、制御は終了する。(ブロック504にて)アクティブ・ビット208がアクティブであることを示す場合、キャッシュ・マネジャ120は、利用情報212に基づいてトラックがアクティブであるか否かを判定するために、アクティブ・ユーザ・カウント、書き込みカウント、修正フラグ等のようなキャッシュ制御ブロック利用情報212を(ブロック506にて)処理する。(ブロック508にて)キャッシュ制御ブロック200
iが実際にアクティブである場合、アクティブ・トラック・データ構造128がアクティブ状態を示すため、制御は終了する。
【0046】
(ブロック508にて)トラックがアクティブでない、アクティブ・ビット208を否定することを、利用情報212が示す場合、キャッシュ・マネジャ120は、キャッシュ制御ブロック200i用のアクティブ・トラック・データ構造128内のビットを含むキャッシュ・ラインを(ブロック510にて)ロックし、キャッシュ制御ブロック200i用のロックされたキャッシュ・ライン内のビットを、非アクティブであることを示すように、(ブロック512にて)設定する。キャッシュ制御ブロック200i内のアクティブ・ビット208は、非アクティブであることを示すように、(ブロック514にて)設定される。キャッシュ・ラインに対するロックは、その後、(ブロック516にて)解除される。
【0047】
図5の操作の実施形態によって、トラック/キャッシュ制御ブロック200
iに対するアクセスを解除すると、アクティブ・トラック・データ構造128が、非アクティブであることを示すために実際に更新される必要があるか否かを判定するために、キャッシュ制御ブロック内のアクティブ・ビット208をチェックすることによって、アクティブ・トラック・データ構造128内のアクティブ・ビットが、非アクティブであることを示すために更新される必要があるか否かの判定が行われる。この最適化は、アクティブ・トラック・データ構造128内のビットがリセットされる必要があるとアクティブ・ビット208が示すか否かをチェックすることによって、アクティブ・トラック・データ構造128をロックし、アクティブ・トラック・データ構造128内のビットにアクセスする必要性を回避する。さらに、トラックが非アクティブであることを、アクティブ・ビット208が示す場合、キャッシュ・マネジャ120は、例え、トラックがアクティブでないことを、アクティブ・トラック・データ構造128/アクティブ・ビット208が示しても、トラックが依然としてアクティブであることを、他の利用情報212が示すことを確認する。例え、トラックが非アクティブであることを、アクティブ・ビット208およびアクティブ・トラック・データ構造128が示しても、トラックが、アクティブであると判定される場合、情報208、212は、トラックが利用情報212に基づいてトラックの現在のステータスを反映するために、トラックについてアクティブであることを示すようにリセットされる必要がある。これは、ウォームスタートまたはリカバリー操作を最適化するために、トラック用のアクティブ・ステータスに関する最新の情報を用いてアクティブ・トラック・データ構造128を更新する。
【0048】
図6は、キャッシュ116から除去する最も長く使用されていないトラックを選択するため、キャッシュ・リスト124を使用して等で、キャッシュ116からキャッシュ制御ブロック200
iおよび対応するトラックをデモートするためにキャッシュ・マネジャ120によって実施される操作の一実施形態を示す。キャッシュ116からキャッシュ制御ブロック200
iおよび対応するトラックをデモートする操作を(ブロック600にて)始動すると、(ブロック602にて)キャッシュ制御ブロック200
iが非アクティブであることを、キャッシュ制御ブロック200
i用のアクティブ・ビット208が示す場合、キャッシュ制御ブロック200
iおよびトラックは、(ブロック604にて)デモートされる。アクティブ・ビット208がアクティブであることを示す場合、そして、(ブロック606にて)キャッシュ制御ブロックがフェイクであることを、フェイク・フラグ210が示す場合、(ブロック608にて)フェイク・キャッシュ制御ブロック・キュー130に対してロックが取得され、フェイク・キャッシュ制御ブロックの指示は、フェイク・キュー130から除去される。この時点で、キャッシュ制御ブロックが、フェイクである、すなわち、TCB等の代替のデータ構造であることから、デモートする、キャッシュ116内の、割り振られたキャッシュ制御ブロック200
iまたはトラックが存在しないため、情報をデモートすることなく制御は終了する。
【0049】
(ブロック606にて)キャッシュ制御ブロック200iトップ・デモート(top demote)がフェイクであることを、フェイク・フラグ210が示さない場合、キャッシュ・マネジャ120は、キャッシュ制御ブロック200i用のアクティブ・トラック・データ構造128内のビットを含むキャッシュ・ラインを(ブロック612にて)ロックし、キャッシュ制御ブロック200i用のロックされたキャッシュ・ライン内のビットを、非アクティブであることを示すように、(ブロック614にて)設定する。キャッシュ制御ブロック200i内のアクティブ・ビット208は、非アクティブであることを示すように、(ブロック616にて)設定される。キャッシュ・ラインに対するロックは、その後、(ブロック618にて)解除される。制御は、その後、キャッシュ116からキャッシュ制御ブロック200iおよび対応するトラックをデモートするブロック604に進む。キャッシュ・ディレクトリ126は、デモートされたキャッシュ制御ブロック200i用のキャッシュ116内にデータが存在しないことを示すために同様に更新され得る。
【0050】
図6の操作の実施形態によって、アクティブ・トラック・データ構造128は、キャッシュ制御ブロックがキャッシュ116からデモートされる場合、キャッシュ制御ブロック200
iが非アクティブであることを示すために更新される。
【0051】
図7は、ストレージ・コントローラ104のリカバリーまたはウォームスタート初期化を始動するためにリカバリー・プロセス121によって実施される操作の一実施形態を示す。リカバリーを(ブロック700にて)始動すると、アクティブ・トラック・データ構造128のビットを実装するキャッシュ・ラインのチャンクは、リカバリー・プロセスの待ち時間を低減するために、アクティブ・トラック・データ構造128を実装するキャッシュ・ラインのチャンクの並列かつ並行処理を可能にするプロセッサ112に(ブロック702にて)割り当てられる。リカバリー・プロセス121は、フェイク・キャッシュ制御ブロック・キュー130に示されたいずれのフェイク・キャッシュ制御ブロックもキャッシュ・ディレクトリ126から(ブロック704にて)除去する。
【0052】
図8は、リカバリー・プロセス121を実行する、アクティブ・トラック・データ構造128を有するキャッシュ・ラインのチャンクを割り当てられた、各プロセッサ112によって実施される操作の一実施形態を示す。これは、アクティブ・トラック・データ構造128キャッシュ・ラインを並行処理するために、リカバリー・プロセス121を異なるプロセッサ112に実行させることによって、リカバリー操作中のアクティブ・トラック・データ構造128の並列処理を可能にする。プロセッサ112のうちの1つのプロセッサ112が、リカバリー・プロセス121を(ブロック800にて)実行するアクティブ・トラック・データ構造128のビットを有するキャッシュ・ラインのチャンクを割り当てられると、操作のループは、プロセッサ112に割り当てられた各キャッシュ・ラインiについてブロック802~822にて実施される。各キャッシュ・ラインiについて、リカバリー・プロセス121は、キャッシュ・ライン内の各ビットjについてブロック804~820にて操作のループを実施する。ブロック806にて、リカバリー・プロセス121は、キャッシュ・ラインi内のビットjに対応するキャッシュ制御ブロックのためのキャッシュ・ディレクトリ・ロックを(ブロック806にて)リセットして、ロック解除状態にする。(ブロック808にて)キャッシュ制御ブロック200
iがアクティブであることを、ビットjが示す場合、アクティブ・ユーザ・カウント、書き込みカウント、修正フラグ等を含むキャッシュ制御ブロック利用情報212は、トラックが実際にアクティブであるか否かを判定するために(ブロック810にて)処理される。
【0053】
(ブロック812にて)キャッシュ制御ブロック200iがアクティブである場合、そのキャッシュ制御ブロックは、状態保存、妥当性確認、廃棄等のようなリカバリー処理のためにアクティブ・トラック・テーブル132において(ブロック814にて)示される。(ブロック812にて)ビットjに対応するキャッシュ制御ブロック200iが、利用情報212に基づいてアクティブでない場合で、かつ、(ブロック816にて)トラックが空でもなく、廃棄される必要もない場合、制御は、リカバリー処理のためにアクティブ・トラック・テーブル132においてキャッシュ制御ブロックを示すブロック814に進む。(ブロック816にて)トラックが空であるかまたは廃棄される必要がある場合、(ブロック816にて)トラックおよびキャッシュ制御ブロック200iは、キャッシュから廃棄され、キャッシュ制御ブロック200i用のキャッシュ・ディレクトリ126内のエントリ内のキャッシュ116場所に対する参照は、そのキャッシュ制御ブロック200iおよびトラック用のキャッシュされたデータが存在しないことを示すために除去される/無効にされる。ブロック814または818から、制御は、キャッシュ・ラインi内の次のビットj+1を処理するブロック820に進む。キャッシュ・ラインi内の全てのビットを処理した後、制御は、全ての割り当てられたキャッシュ・ラインが処理されるまで、プロセッサ112に割り当てられたアクティブ・トラック・データ構造128の次のキャッシュ・ラインを処理するブロック822に進む。
【0054】
アクティブ・トラック用の全てのアクティブ・キャッシュ制御ブロック200iのアクティブ・トラック・テーブル132を形成した後、リカバリー・プロセス121は、後でデバッグするために状態保存を実施するか、データを妥当性確認するか、データをクリーニングするか、またはデータを廃棄するかを決定すること等、アクティブ・トラック・テーブル132内に示すアクティブ・キャッシュ制御ブロック200iのリカバリー処理を(ブロック822にて)実施する。
【0055】
図8の実施形態によって、リカバリー・プロセス121を並行実行することは、アクティブ・エントリ・テーブル132を形成するためにアクティブ・トラック・データ構造128を使用してアクティブ・キャッシュ制御ブロックを決定することができる。この技術は、アクティブであるトラックを決定するためにアクティブ・トラック・データ構造128を走査することによってアクティブ・キャッシュ制御ブロック200
iを決定する処理を最適化し、この技術は、アクティブ・トラックを決定するためにキャッシュ・ディレクトリ126内の全てのトラックを走査する技術に比べて実質的に短い待ち時間を有する。アクティブ・トラック・データ構造128は、キャッシュ制御ブロック・セグメントを含む、キャッシュ内で全てのキャッシュ・セグメントについて1つのビットを維持することによって、キャッシュ・ディレクトリ126内の全てのエントリを走査することに比べて実質的に短い走査を必要とする。
【0056】
本発明は、システム、方法、および/またはコンピュータ・プログラム製品とすることができる。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令をその上に有する1つの(または複数の)コンピュータ可読ストレージ媒体を含むことができる。
【0057】
コンピュータ可読ストレージ媒体は、命令実行デバイスが使用するための命令を保持し記憶することができる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、または上記の任意の適切な組合せとすることができるが、それに限定されない。コンピュータ可読ストレージ媒体のより特定の例の非網羅的なリストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM:read only memory)、消去可能プログラマブル・リード・オンリー・メモリ(EPROM(erasable programmable read-only memory)またはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク・リード・オンリー・メモリ(CD-ROM:portable compact disc read-only memory)、デジタル・バーサタイル・ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー(R)・ディスク、その上に命令が記録されているパンチカードまたは溝内の隆起構造などの機械的にエンコードされたデバイス、および上記の任意の適切な組合せを含む。本明細書で使用されるコンピュータ可読ストレージ媒体は、無線波または他の自由に伝搬する電磁波、導波路を通って伝搬する電磁波、あるいは、他の伝送媒体(例えば、光ファイバ・ケーブルを通過する光パルス)またはワイヤを通して伝送される電気信号等の、それ自体一時的信号であると解釈されない。
【0058】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスに、あるいは、ネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワークあるいはその組合せ経由で外部コンピュータまたは外部ストレージ・デバイスにダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバーあるいはその組合せを備えることができる。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に記憶するためにコンピュータ可読プログラム命令を転送する。
【0059】
本発明の操作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードまたはオブジェクト・コードとすることができ、1つまたは複数のプログラミング言語は、Java(R)、Smalltalk(R)、C++(R)、または同様なもの等のオブジェクト指向プログラミング言語、および、「C」(R)プログラミング言語または同様のプログラミング言語等の手続き型プログラミング言語を含む。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で完全に、ユーザのコンピュータ上で部分的に、スタンドアローン・ソフトウェア・パッケージとして、ユーザのコンピュータ上で部分的にかつリモート・コンピュータ上で部分的に、あるいはリモート・コンピュータまたはサーバー上で完全に実行することができる。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)またはワイド・エリア・ネットワーク(WAN:wide area network)を含む任意のタイプのネットワークを通してユーザのコンピュータに接続される、または、接続は、(例えば、インターネット・サービス・プロバイダを使用するインターネットを通して)外部コンピュータに対して行われ得る。幾つかの実施形態において、例えば、プログラマブル・ロジック回路部、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate array)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic array)を含む電子回路部は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路部を個人化することによって、コンピュータ可読プログラム命令を実行することができる。
【0060】
本発明の態様は、本発明の実施形態による、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック・ダイヤグラムあるいはその両方を参照して本明細書で説明される。フローチャート図またはブロック・ダイヤグラムあるいはその両方の各ブロックならびにフローチャート図またはブロック・ダイヤグラムあるいはその両方内のブロックの組合せが、コンピュータ可読プログラム命令によって実装されることが理解されるであろう。
【0061】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行される命令が、フローチャートまたはブロック・ダイヤグラムあるいはその両方の1つまたは複数のブロックで指定された機能/動作を実装するための手段を作成するような、マシンを生成するために、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供され得る。また、これらのコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体内に記憶されてもよく、コンピュータ可読プログラム命令は、内部に命令が記憶されているコンピュータ可読ストレージ媒体が、フローチャートまたはブロック・ダイヤグラムあるいはその両方の1つまたは複数のブロックで指定された機能/動作の態様を実装する命令を含む製造品を構成するような特定の方法で、コンピュータ、プログラマブル・データ処理装置、または他のデバイスあるいはその組合せが、機能するように指示することができる。
【0062】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル・データ処理装置、または他デバイス上で実行される命令が、フローチャートまたはブロック・ダイヤグラムあるいはその両方の1つまたは複数のブロックで指定された機能/動作を実装するような、コンピュータ実装式プロセスを、コンピュータ、他のプログラマブル・データ処理装置、または他デバイス上で実施される一連の操作ステップが、生成するようにさせるために、コンピュータ、他のプログラマブル・データ処理装置、または他デバイス上にもロードされ得る。
【0063】
図のフローチャートおよびブロック・ダイヤグラムは、本発明の種々の実施形態によるシステム、方法、およびコンピュータ・プログラム製品の考えられる実装態様のアーキテクチャ、機能、および操作を示す。これに関して、フローチャートまたはブロック・ダイヤグラム内の各ブロックは、指定された論理関数(複数可)を実装するための1つまたは複数の実行可能命令を含む、モジュール、セグメント、または命令の一部分を表すことができる。幾つかの代替の実装態様において、ブロックに記述された機能は、図に記述された順序から外れて発生し得る。例えば、連続して示される2つのブロックは、実際には、実質的に並行に実行される、または、ブロックは時として、関係する機能に応じて逆順で実行され得る。ブロック・ダイヤグラムまたはフローチャート図あるいはその両方の各ブロック、および、ブロック・ダイヤグラムまたはフローチャート図あるいはその両方内のブロックの組合せが、指定された機能または動作を実施するかまたは専用ハードウェアおよびコンピュータ命令の組合せを実行する専用ハードウェア・ベース・システムによって実装されることも留意されるであろう。
【0064】
説明する実施形態において、変数i、j、n等は、異なる要素と共に使用されると、その要素の同じまたは異なるインスタンスを示すことができる。
【0065】
ホスト102
1、102
2、・・・、102
nおよびストレージ・コントローラ104を含む
図1の計算コンポーネントは、
図9に示すコンピュータ・システム902等の1つまたは複数のコンピュータ・システムで実装され得る。コンピュータ・システム/サーバー902は、コンピュータ・システムによって実行されるプログラム・モジュール等のコンピュータ・システム実行可能命令の一般的な文脈で説明され得る。一般に、プログラム・モジュールは、特定のタスクを実施するかまたは特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造等を含むことができる。コンピュータ・システム/サーバー902は、通信ネットワークを通してリンクされるリモート処理デバイスによってタスクが実施される分散クラウド・コンピューティング環境で実施され得る。分散クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含むローカルおよびリモート・コンピュータ・システム・ストレージ媒体内に位置することができる。
【0066】
図9に示すように、コンピュータ・システム/サーバー902は、汎用コンピューティング・デバイスの形式で示される。コンピュータ・システム/サーバー902のコンポーネントは、1つまたは複数のプロセッサあるいは処理ユニット904、システム・メモリ906、および、システム・メモリ906を含む種々のシステム・コンポーネントをプロセッサ904に結合するバス908を含むことができるが、それに限定されない。バス908は、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィクス・ポート、およびプロセッサ、または、種々のバス・アーキテクチャの任意のアーキテクチャを使用するローカル・バスを含む、幾つかのタイプのバス構造の任意のバス構造の1つまたは複数を表す。制限としてではなく例として、そのようなアーキテクチャは、業界標準アーキテクチャ(ISA:Industry Standard Architecture)バス、マイクロ・チャネル・アーキテクチャ(MCA:Micro Channel Architecture)バス、エンハンストISA(EISA:Enhanced ISA)バス、ビデオ・エレクトロニクス・スタンダード・アソシエーション(VESA:Video Electronics Standards Association)ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト(PCI)バスを含む。
【0067】
コンピュータ・システム/サーバー902は、種々のコンピュータ・システム可読媒体を通常含む。そのような媒体は、コンピュータ・システム/サーバー902によってアクセス可能である任意の利用可能な媒体とすることができ、揮発性および不揮発性、取り外し可能および取り外し不能媒体を共に含む。
【0068】
システム・メモリ906は、揮発性メモリ、例えばランダム・アクセス・メモリ(RAM)910またはキャッシュ・メモリ912あるいはその両方の形態のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバー902は、他の取り外し可能/取り外し不能、揮発性/不揮発性コンピュータ・システム・ストレージ媒体をさらに含むことができる。単に例として、ストレージ・システム913は、取り外し不能で不揮発性の磁気媒体(示されず、典型的には、「ハード・ドライブ(hard drive)」と呼ばれる)から読み取り、そこに書き込むために設けられ得る。示さないが、取り外し可能で不揮発性の磁気ディスク(例えば、「フロッピー(R)・ディスク(floppy disk)」)から読み取り、そこに書き込むための磁気ディスク・ドライブ、および、CD-ROM、DVD-ROM、または他の光媒体等の取り外し可能で不揮発性の光ディスクから読み取るかまたはそこに書き込むための光ディスク・ドライブが設けられ得る。そのような場合、それぞれは、1つまたは複数のデータ媒体インタフェースによってバス908に接続され得る。さらに示され、以下で説明されるように、メモリ906は、本発明の実施形態の機能を実行するように構成されるプログラム・モジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含むことができる。
【0069】
プログラム・モジュール916のセット(少なくとも1つ)を有するプログラム/ユーティリティ914は、制限ではなく例としてメモリ906、ならびに、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データに記憶され得る。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データ、またはその何らかの組合せのそれぞれは、ネットワーキング環境の実装態様を含むことができる。コンピュータ902のコンポーネントは、本明細書で説明する本発明の実施形態の機能または方法あるいはその両方を一般に実行するプログラム・モジュール916として実装され得る。
図1のシステムは、1つまたは複数のコンピュータ・システム902で実装され、システムが複数のコンピュータ・システム902で実装される場合、コンピュータ・システムはネットワークを通じて通信することができる。
【0070】
コンピュータ・システム/サーバー902は、キーボード、ポインティング・デバイス、ディスプレイ920等のような1つまたは複数の外部デバイス918;ユーザがコンピュータ・システム/サーバー902と相互作用することを可能にする1つまたは複数のデバイス、または、コンピュータ・システム/サーバー902が1つまたは複数の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス(例えば、ネットワーク・カード、モデム等)あるいはその組合せと通信することもできる。そのような通信は、入力/出力(I/O)インタフェース922によって起こることができる。さらに、コンピュータ・システム/サーバー902は、ネットワーク・アダプタ924を介して、ローカル・エリア・ネットワーク(LAN)、一般的なワイド・エリア・ネットワーク(WAN)、または、パブリック・ネットワーク(例えば、インターネット)あるいはその組合せ等の1つまたは複数のネットワークと通信することができる。示すように、ネットワーク・アダプタ924は、バス908を介してコンピュータ・システム/サーバー902の他のコンポーネントと通信する。示さないが、他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方が、コンピュータ・システム/サーバー902と併せて使用される可能性があることが理解されるべきである。例は、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイバル・ストレージ・システム等を含むが、それに限定されない。
【0071】
用語「1つの実施形態(an embodiment)」、「実施形態(embodiment)」、「複数の実施形態(embodiments)」、「その実施形態(the embodiment)」、「その複数の実施形態(the embodiments)」、「1つまたは複数の実施形態(one or more embodiments)」、「幾つかの実施形態(some embodiments)」、および「1つの実施形態(one embodiment)」は、別段に明確に指定されない限り、「本発明(複数可)の(全てではないが)1つまたは複数の実施形態(one or more (but not all) embodiments of the present invention(s))」を意味する。
【0072】
用語「含んでいる(including)」、「備えている(comprising)」、「有している(having)」、およびその変形は、別段に明確に指定されない限り、「含むが、それに限定されない(including but not limited to)」を意味する。
【0073】
品目の列挙されたリストは、別段に明確に指定されない限り、品目のうちの任意のまたは全の品目が互いに排他的であることを示唆しない。
【0074】
用語「1つの(a)」、「1つの(an)」、および「その(the)」は、別段に明確に指定されない限り、「1つまたは複数(one or more)」を意味する。
【0075】
互いに通信状態にあるデバイスは、別段に明確に指定されない限り、互いに連続通信状態にある必用はない。さらに、互いに通信状態にあるデバイスは、直接に、または、1つまたは複数の中間物を通して間接的に通信することができる。
【0076】
互いに通信状態にある幾つかのコンポーネントを有する一実施形態の説明は、全てのそのようなコンポーネントが必要とされることを示唆しない。逆に、種々のオプションのコンポーネントは、本発明のいろいろな考えられる実施形態を例示するために説明される。
【0077】
単一デバイスまたは物品が本明細書で説明されるとき、2つ以上のデバイス/物品(両者が協働しようが、しまいが)が単一デバイス/物品の代わりに使用されることが容易に明らかになる。同様に、2つ以上のデバイスまたは物品が(両者が協働しようが、しまいが)本明細書で説明される場合、単一デバイス/物品が2つ以上のデバイスまたは物品の代わりに使用される、または、異なる数のデバイス/物品が、示す数のデバイスまたはプログラムの代わりに使用されることが容易に明らかになる。デバイスの機能または特徴あるいはその両方は、そのような機能/特徴を有していると明確に説明されない1つまたは複数の他のデバイスによって代替的に具現化され得る。そのため、本発明の他の実施形態は、デバイス自身に含まれる必要はない。
【0078】
本発明の種々の実施形態の上記説明は、例示および説明のために提示された。網羅的であることまたは開示された厳密な形態に本発明を限定することは意図されない。多くの修正および変形が、上記教示を踏まえて可能である。本発明の範囲が、詳細な説明によってではなく、むしろ本明細書に添付の請求項によって限られることが意図される。上記仕様、例、およびデータは、本発明の組成物の製造および使用の完全な説明を提供する。本発明の多くの実施形態が、本発明の思想および範囲から逸脱することなく作られるため、本発明は、添付された後の本明細書の請求項に存在する。
【国際調査報告】