(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-17
(45)【発行日】2024-10-25
(54)【発明の名称】データ構造の初期化後にデモートするように示された複数のメモリ・デバイスのデータ構造の管理
(51)【国際特許分類】
G06F 12/06 20060101AFI20241018BHJP
G06F 3/06 20060101ALI20241018BHJP
G06F 12/0866 20160101ALI20241018BHJP
【FI】
G06F12/06 515J
G06F3/06 301M
G06F3/06 304N
G06F12/0866 100
(21)【出願番号】P 2022537265
(86)(22)【出願日】2020-12-15
(86)【国際出願番号】 IB2020061952
(87)【国際公開番号】W WO2021140385
(87)【国際公開日】2021-07-15
【審査請求日】2023-05-25
(32)【優先日】2020-01-07
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】ピーターソン、ベス、アン
(72)【発明者】
【氏名】グプタ、ローケーシュ、モハン
(72)【発明者】
【氏名】クレイグ、マシュー、リチャード
(72)【発明者】
【氏名】ボーリック、マシュー
【審査官】北村 学
(56)【参考文献】
【文献】特開2002-091811(JP,A)
【文献】特開2003-015892(JP,A)
【文献】特開2005-309739(JP,A)
【文献】特開2016-085666(JP,A)
【文献】米国特許出願公開第2014/0164711(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
IPC G06F 12/00 - 12/128
G06F 3/06 - 3/08
(57)【特許請求の範囲】
【請求項1】
コンピューティング・システムの複数のメモリ・デバイスのデータを管理するためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が、実行されたとき、操作を実行するコンピュータ可読プログラム・コードが組み入れられているコンピュータ可読ストレージ媒体を含み、前記操作が、
初期化後に第1のレベルのメモリ・デバイスから第2のレベルのメモリ・デバイスにデモートすべきデータ構造を示すことであり、前記第1のレベルのメモリ・デバイスが、前記第2のレベルのメモリ・デバイスよりも低いレイテンシを有する、示すことと、
前記第1のレベルのメモリ・デバイスの前記データ構造の初期化の完了に応じて、初期化後にデモートするように示された前記データ構造を前記第1のレベルのメモリ・デバイスから前記第2のレベルのメモリ・デバイスにコピーし、初期化後に移すように示された前記データ構造を前記第1のレベルのメモリ・デバイスから削除することと
を含む、コンピュータ・プログラム製品。
【請求項2】
前記操作が、
前記第2のレベルのメモリ・デバイスに格納されたデータ構造への読み出し要求を受け取ることと、
前記第2のレベルのメモリ・デバイスに格納された前記データ構造から前記読み出し要求にデータを返すことと
をさらに含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項3】
前記操作が、
初期化後にデモートするように示されていない前記第1のレベルのメモリ・デバイスに格納された前記データ構造のアクセス・カウントを維持することであり、アクセス・カウントが、初期化後にデモートするように示されたデータ構造では維持されない、維持すること
をさらに含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項4】
前記操作が、
前記アクセス・カウントを使用して、データ構造を選択し、前記第1のレベルのメモリ・デバイスから削除し、前記第2のレベルのメモリ・デバイスに保持し、前記第1のレベルのメモリ・デバイスのスペースを空けることと、
前記アクセス・カウントを使用して、アクセスされたデータ構造を前記第2のレベルのメモリ・デバイスから削除すべきかどうかを決定することと
をさらに含む、請求項3に記載のコンピュータ・プログラム製品。
【請求項5】
前記操作が、
初期化後にデモートするように示されたデータ構造への更新を受け取ることと、
更新すべき前記データ構造を、前記第2のレベルのメモリ・デバイスから前記第1のレベルのメモリ・デバイスにコピーして更新することと、
更新データ構造を、前記第1のレベルのメモリ・デバイスから前記第2のレベルのメモリ・デバイスにコピーし、前記更新データ構造を前記第1のレベルのメモリ・デバイスから抹消することと
をさらに含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項6】
コンピューティング・システムの複数のメモリ・デバイスのデータを管理するためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が、実行されたとき、操作を実行するコンピュータ可読プログラム・コードが組み入れられているコンピュータ可読ストレージ媒体を含み、前記操作が、
第1のレベルのメモリ・デバイスからデモートするように示されたデータ構造への更新を受け取ることと、
更新すべき前記データ構造を、第2のレベルのメモリ・デバイスから前記第1のレベルのメモリ・デバイスにコピーして更新することであり、前記第1のレベルのメモリ・デバイスが、前記第2のレベルのメモリ・デバイスよりも低いレイテンシを有する、更新することと、
更新データ構造を、前記第1のレベルのメモリ・デバイスから前記第2のレベルのメモリ・デバイスにコピーし、前記データ構造の更新に応じて前記更新データ構造を前記第1のレベルのメモリ・デバイスから抹消することと
を含む、コンピュータ・プログラム製品。
【請求項7】
前記データ構造への前記更新が、前記データ構造のすべてのフィールドよりも少ない、更新すべき前記データ構造の少なくとも1つのフィールドに対するものであり、前記データ構造を前記コピーすることが、更新すべき前記少なくとも1つのフィールドのみを前記データ構造から前記第1のレベルのメモリ・デバイスにコピーすることを含み、前記更新データ構造を前記コピーすることが、前記更新される少なくとも1つのフィールドを前記第1のレベルのメモリ・デバイスから前記第2のレベルのメモリ・デバイスにコピーすることと、前記更新される少なくとも1つのフィールドを前記第1のレベルのメモリ・デバイスから抹消することとを含む、請求項6に記載のコンピュータ・プログラム製品。
【請求項8】
更新すべき前記データ構造が、前記第2のレベルのメモリ・デバイスに存在し、前記操作は、
前記更新が、複数の事前定義された更新イベントのうちの更新イベントを含むかどうかを決定することと、
前記更新が前記更新イベントを含むという決定に応じて、更新すべき前記データ構造を前記第1のレベルのメモリ・デバイスにコピーすることと、
前記更新イベントの一部として複数の書き込みを前記データ構造に実行することと、
前記更新イベントの一部として更新される前記データ構造を前記第1のレベルのメモリ・デバイスから前記第2のレベルのメモリ・デバイスにコピーし、前記更新イベントの前記書き込みの完了に応じて、前記更新データ構造を前記第1のレベルのメモリ・デバイスから抹消することと
をさらに含む、請求項6に記載のコンピュータ・プログラム製品。
【請求項9】
前記事前定義された更新イベントが、前記コンピューティング・システムの論理デバイス、前記コンピューティング・システムにおけるボリューム、パス・グループ、物理パス、論理パスについての追加または削除、ならびにサブシステム特性および他の構成変更を含む更新イベントのサブセットのメンバである複数の更新イベントを含む、請求項8に記載のコンピュータ・プログラム製品。
【請求項10】
前記操作は、
前記更新が前記複数の事前定義された更新イベントのうちの1つを含まないという決定に応じて、更新すべき前記データ構造への前記更新を前記第2のレベルのメモリ・デバイスにおいて実行すること
をさらに含む、請求項8に記載のコンピュータ・プログラム製品。
【請求項11】
第1のレベルのメモリ・デバイスと、
第2のレベルのメモリ・デバイスと、
初期化後に第1のレベルのメモリ・デバイスから第2のレベルのメモリ・デバイスにデモートすべきデータ構造を示すことであり、前記第1のレベルのメモリ・デバイスが、前記第2のレベルのメモリ・デバイスよりも低いレイテンシを有する、示すことと、
前記第1のレベルのメモリ・デバイスの前記データ構造の初期化の完了に応じて、初期化後にデモートするように示された前記データ構造を前記第1のレベルのメモリ・デバイスから前記第2のレベルのメモリ・デバイスにコピーし、初期化後に移すように示された前記データ構造を前記第1のレベルのメモリ・デバイスから削除することと
を実行するための仮想メモリ・マネージャと
を含む、システム。
【請求項12】
前記実行する操作が、
前記第2のレベルのメモリ・デバイスに格納されたデータ構造への読み出し要求を受け取ることと、
前記第2のレベルのメモリ・デバイスに格納された前記データ構造から前記読み出し要求にデータを返すことと
をさらに含む、請求項11に記載のシステム。
【請求項13】
前記実行する操作が、
初期化後にデモートするように示されていない前記第1のレベルのメモリ・デバイスに格納された前記データ構造のアクセス・カウントを維持することであり、アクセス・カウントが、初期化後にデモートするように示されたデータ構造では維持されない、維持すること
をさらに含む、請求項11に記載のシステム。
【請求項14】
前記実行する操作が、
前記アクセス・カウントを使用して、データ構造を選択し、前記第1のレベルのメモリ・デバイスから削除し、前記第2のレベルのメモリ・デバイスに保持し、前記第1のレベルのメモリ・デバイスのスペースを空けることと、
前記アクセス・カウントを使用して、アクセスされたデータ構造を前記第2のレベルのメモリ・デバイスから削除すべきかどうかを決定することと
をさらに含む、請求項13に記載のシステム。
【請求項15】
前記実行する操作が、
初期化後にデモートするように示されたデータ構造への更新を受け取ることと、
更新すべき前記データ構造を、前記第2のレベルのメモリ・デバイスから前記第1のレベルのメモリ・デバイスにコピーして更新することと、
更新データ構造を、前記第1のレベルのメモリ・デバイスから前記第2のレベルのメモリ・デバイスにコピーし、前記更新データ構造を前記第1のレベルのメモリ・デバイスから抹消することと
をさらに含む、請求項11に記載のシステム。
【請求項16】
第1のレベルのメモリ・デバイスと、
第2のレベルのメモリ・デバイスと、
前記第1のレベルのメモリ・デバイスからデモートするように示されたデータ構造への更新を受け取ることと、
更新すべき前記データ構造を、第2のレベルのメモリ・デバイスから前記第1のレベルのメモリ・デバイスにコピーして更新することであり、前記第1のレベルのメモリ・デバイスが、前記第2のレベルのメモリ・デバイスよりも低いレイテンシを有する、更新することと、
更新データ構造を、前記第1のレベルのメモリ・デバイスから前記第2のレベルのメモリ・デバイスにコピーし、前記データ構造の更新に応じて前記更新データ構造を前記第1のレベルのメモリ・デバイスから抹消することと
を実行するための仮想メモリ・マネージャと
を含む、システム。
【請求項17】
前記データ構造への前記更新が、前記データ構造のすべてのフィールドよりも少ない、更新すべき前記データ構造の少なくとも1つのフィールドに対するものであり、前記データ構造を前記コピーすることが、更新すべき前記少なくとも1つのフィールドのみを前記データ構造から前記第1のレベルのメモリ・デバイスにコピーすることを含み、前記更新データ構造を前記コピーすることが、前記更新される少なくとも1つのフィールドを前記第1のレベルのメモリ・デバイスから前記第2のレベルのメモリ・デバイスにコピーすることと、前記更新される少なくとも1つのフィールドを前記第1のレベルのメモリ・デバイスから抹消することとを含む、請求項16に記載のシステム。
【請求項18】
更新すべき前記データ構造が、前記第2のレベルのメモリ・デバイスに存在し、前記実行する操作は、
前記更新が、複数の事前定義された更新イベントのうちの更新イベントを含むかどうかを決定することと、
前記更新が前記更新イベントを含むという決定に応じて、更新すべき前記データ構造を前記第1のレベルのメモリ・デバイスにコピーすることと、
前記更新イベントの一部として複数の書き込みを前記データ構造に実行することと、
前記更新イベントの一部として更新される前記データ構造を前記第1のレベルのメモリ・デバイスから前記第2のレベルのメモリ・デバイスにコピーし、前記更新イベントの前記書き込みの完了に応じて、前記更新データ構造を前記第1のレベルのメモリ・デバイスから抹消することと
をさらに含む、請求項16に記載のシステム。
【請求項19】
前記事前定義された更新イベントが
、前記システムの論理デバイス
、前記システムにおけるボリューム、パス・グループ、物理パス、論理パスについての追加または削除、ならびにサブシステム特性および他の構成変更を含む更新イベントのサブセットのメンバである複数の更新イベントを含む、請求項18に記載のシステム。
【請求項20】
前記実行する操作が、
前記更新が前記複数の事前定義された更新イベントのうちの1つを含まないという決定に応じて、更新すべき前記データ構造への前記更新を前記第2のレベルのメモリ・デバイスにおいて実行すること
をさらに含む、請求項18に記載のシステム。
【請求項21】
コンピューティング・システムの複数のメモリ・デバイスのデータを管理するための方法であって、
初期化後に第1のレベルのメモリ・デバイスから第2のレベルのメモリ・デバイスにデモートすべきデータ構造を示すことであり、前記第1のレベルのメモリ・デバイスが、前記第2のレベルのメモリ・デバイスよりも低いレイテンシを有する、示すことと、
前記第1のレベルのメモリ・デバイスの前記データ構造の初期化の完了に応じて、初期化後にデモートするように示された前記データ構造を前記第1のレベルのメモリ・デバイスから前記第2のレベルのメモリ・デバイスにコピーし、初期化後に移すように示された前記データ構造を前記第1のレベルのメモリ・デバイスから削除することと
を含む、方法。
【請求項22】
前記第2のレベルのメモリ・デバイスに格納されたデータ構造への読み出し要求を受け取ることと、
前記第2のレベルのメモリ・デバイスに格納された前記データ構造から前記読み出し要求にデータを返すことと
をさらに含む、請求項21に記載の方法。
【請求項23】
初期化後にデモートするように示されていない前記第1のレベルのメモリ・デバイスに格納された前記データ構造のアクセス・カウントを維持することであり、アクセス・カウントが、初期化後にデモートするように示されたデータ構造では維持されない、維持すること
をさらに含む、請求項21に記載の方法。
【請求項24】
前記アクセス・カウントを使用して、データ構造を選択し、前記第1のレベルのメモリ・デバイスから削除し、前記第2のレベルのメモリ・デバイスに保持し、前記第1のレベルのメモリ・デバイスのスペースを空けることと、
前記アクセス・カウントを使用して、アクセスされたデータ構造を前記第2のレベルのメモリ・デバイスから削除すべきかどうかを決定することと
をさらに含む、請求項23に記載の方法。
【請求項25】
初期化後にデモートするように示されたデータ構造への更新を受け取ることと、
更新すべき前記データ構造を、前記第2のレベルのメモリ・デバイスから前記第1のレベルのメモリ・デバイスにコピーして更新することと、
更新データ構造を、前記第1のレベルのメモリ・デバイスから前記第2のレベルのメモリ・デバイスにコピーし、前記更新データ構造を前記第1のレベルのメモリ・デバイスから抹消することと
をさらに含む、請求項23に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ構造の初期化後にデモート(demote)するように示された複数のメモリ・デバイスのデータ構造を管理するためのコンピュータ・プログラム製品、システム、および方法に関する。
【背景技術】
【0002】
ストレージ・クラス・メモリ(SCM)システムは、高いレイテンシで低いコストのNANDデバイスを使用することによって大きい記憶容量をメモリまたはキャッシュに低いコストで提供するために、低いレイテンシのダイナミック・ランダム・アクセス・メモリ(DRAM)と、DRAMよりも低いコストの1つまたは複数の高いレイテンシのフラッシュNANDメモリ・デバイスとを利用する。SCMにより、高速アクセスの不揮発性メモリNANDデバイスを用いてシステム・メモリを拡張することができる。
【0003】
フラッシュ・メモリ・デバイスは、フラッシュ・ビット・セルの消去サイクル数が限定されており、DRAMセルよりもはるかに少ないので、DRAMよりも耐久性が低い。フラッシュ・メモリ・デバイスの消耗を低減するための先行技術の1つの技法は、特定のフラッシュ・メモリ・セルの過剰使用を避けるために、同じまたは異なるデバイス内の多数のフラッシュ・メモリ・セルにわたって書き込みを分散させるウェア・レベリング(wear leveling:劣化平準化)技法を使用することである。
【0004】
当技術分野では、SCMシステムなどのメモリ・サブシステムにおける多数のメモリ・デバイスのデータの格納を管理するための改善された技法が必要である。
【発明の概要】
【0005】
データ構造の初期化後にデモートするように示された複数のメモリ・デバイスのデータ構造を管理するためのコンピュータ・プログラム製品、システム、および方法が提供される。初期化後に第1のレベルのメモリ・デバイスから第2のレベルのメモリ・デバイスにデモートすべきデータ構造が示される。第1のレベルのメモリ・デバイスは、第2のレベルのメモリ・デバイスよりも低いレイテンシを有する。第1のレベルのメモリ・デバイスのデータ構造の初期化の完了に応じて、初期化後にデモートするように示されたデータ構造が、第1のレベルのメモリ・デバイスから第2のレベルのメモリ・デバイスにコピーされ、初期化後に移すように示されたデータ構造が第1のレベルのメモリ・デバイスから削除される。
【0006】
上述の実施形態では、極めてまれにしかアクセスされないデータ構造は、継続的に格納するために下位レベルのメモリ・デバイスに移すことができるが、その理由は、そのデータ構造は、まれにしかアクセスされず、読み出しアクセスは、下位レベルのメモリ・デバイスからサービスを提供され得るからである。しかしながら、初期化後デモートとして示されたデータ構造に書き込む必要がある場合、データ構造は、そのデータ構造への1つまたは複数の書き込み操作のために第1のレベルのメモリ・デバイスに移すことができる。書き込み操作が完了すると、データ構造を、第1のレベルのメモリ・デバイスからデモートし、下位レベルのメモリ・デバイスに移すことができるが、その理由は、データ構造が、かなりの時間の間書き込みアクセスされる可能性がないからである。
【0007】
さらなる実施形態では、アクセス・カウントは、初期化後にデモートするように示されていない第1のレベルのメモリ・デバイスに格納されたデータ構造では維持され、アクセス・カウントは、初期化後にデモートするように示されたデータ構造では維持されない。
【0008】
上述の実施形態では、アクセス・カウントは、更新または初期化された後に自動的にデモートされるデータ構造では必要とされないが、その理由は、アクセス・カウントは、アクセス・カウントに関係なく使用された後に第1のレベルのメモリ・デバイスから空にされるからである。
【0009】
さらなる実施形態では、アクセス・カウントを使用して、データ構造を選択し、第1のレベルのメモリ・デバイスから削除し、第2のレベルのメモリ・デバイスに保持し、第1のレベルのメモリ・デバイスのスペースを空ける。アクセス・カウントを使用して、アクセスされたデータ構造を第2のレベルのメモリ・デバイスから削除すべきかどうかを決定する。
【0010】
上述の実施形態では、アクセス・カウントを使用して、低いレイテンシのストレージまたは高いレイテンシのストレージのどちらにデータ構造を格納するべきかどうかを決定すると、システム性能を最適化するために低いレイテンシのストレージに高アクセス・カウントのデータを配置し、低いアクセス・カウント・データはそれほど頻繁にアクセスされないのでシステム性能への影響が少ない高いレイテンシのストレージに低いアクセス・カウントのデータを配置することによって、システム性能を改善することが可能になる。
【0011】
さらなる実施形態では、初期化後にデモートするように示されたデータ構造への更新が受け取られる。更新すべきデータ構造は、第2のレベルのメモリ・デバイスから第1のレベルのメモリ・デバイスにコピーされて更新される。更新データ構造は、第1のレベルのメモリ・デバイスから第2のレベルのメモリ・デバイスにコピーされ、更新データ構造は、第1のレベルのメモリ・デバイスから抹消される。
【0012】
上述の実施形態では、システム性能は、初期化後にデモートするように示された更新データ構造を低いレイテンシのメモリ・デバイスに移して更新を実行することによって改善される。次いで、データ構造は、初期化後にデモートするように示されたデータ構造が極めてまれにしかアクセスされないとすればアクセスされる可能性が低いので、更新された後、第1のレベルのメモリ・デバイスから抹消される。
【0013】
コンピューティング・システムの複数のメモリ・デバイスのデータを管理するためのコンピュータ・プログラム製品、システム、および方法がさらに提供される。第1のレベルのメモリ・デバイスからデモートするように示されたデータ構造への更新が受け取られる。更新すべきデータ構造は、第2のレベルのメモリ・デバイスから第1のレベルのメモリ・デバイスにコピーされて更新される。第1のレベルのメモリ・デバイスは、第2のレベルのメモリ・デバイスよりも低いレイテンシを有する。更新データ構造は、第1のレベルのメモリ・デバイスから第2のレベルのメモリ・デバイスにコピーされ、データ構造の更新に応じて第1のレベルのメモリ・デバイスから抹消される。
【0014】
上述の実施形態では、システム性能は、デモートするように示された更新データ構造を低いレイテンシのメモリ・デバイスに移して更新を実行し、次いで、初期化後にデモートするように示されたデータ構造が極めてまれにしかアクセスされないとすればアクセスされる可能性が低いので、更新された後、第1のレベルのメモリ・デバイスから抹消されることによって改善される。まれにしかアクセスされないデータ構造を低いレイテンシのデバイスから格納のための高いレイテンシのデバイスに移動させると、より頻繁にアクセスされるデータ構造のために利用可能な低いレイテンシのデバイスの空きスペースを最大にすることによって、システム性能が改善される。
【0015】
さらなる実施形態では、データ構造への更新は、データ構造のすべてのフィールドよりも少ない、更新すべきデータ構造の少なくとも1つのフィールドに対するものである。データ構造をコピーすることは、更新すべき少なくとも1つのフィールドのみをデータ構造から第1のレベルのメモリ・デバイスにコピーすることを含み、更新データ構造をコピーすることは、更新される少なくとも1つのフィールドを第1のレベルのメモリ・デバイスから第2のレベルのメモリ・デバイスにコピーすることと、更新される少なくとも1つのフィールドを第1のレベルのメモリ・デバイスから抹消することとを含む。
【0016】
上述の実施形態では、低いレイテンシの第1のレベルのメモリのスペースは、更新すべきフィールドを、第2のレベルのメモリ・デバイスのデータ構造から第1のレベルのメモリ・デバイスに単にコピーして更新することによってさらに節約および最適化される。
【0017】
さらなる実施形態では、更新すべきデータ構造は、第2のレベルのメモリ・デバイスに存在する。決定は、更新が複数の事前定義された更新イベントのうちの更新イベントを含むかどうかである。データ構造は、更新が更新イベントを含むという決定に応じて、第1のレベルのメモリ・デバイスに更新のためにコピーされる。データ構造への複数の書き込みが、更新イベントの一部として実行される。更新イベントの一部として更新されるデータ構造は、第1のレベルのメモリ・デバイスから第2のレベルのメモリ・デバイスにコピーされ、更新イベントの書き込みの完了に応じて、更新データ構造が第1のレベルのメモリ・デバイスから抹消される。
【0018】
上述の実施形態では、更新または初期化された後にデモートされるべきデータ構造は、一般にまれにしかアクセスされないが、データ構造が書き込みのバーストの対象になりそうである場合、第1のレベルのメモリ・デバイスにコピーされる。そのようなデータ構造は、システム構成ファイルを更新するための操作の一部として、書き込みのバーストのために、第1のレベルのメモリ・デバイスに定期的にステージングされ得る。そのような構成ファイルは極めてまれにしか更新されないので、更新イベントの後、システム・データ構造は、格納およびアクセスのために下位レベルのメモリ・デバイスに戻すことができる。これにより、他のより頻繁にアクセスされるデータのために、より速いアクセスの第1のレベルのメモリ・デバイスのスペースが解放される。
【図面の簡単な説明】
【0019】
【
図1】複数のメモリ・デバイスを有するメモリ・サブシステムを有するコンピュータ環境の一実施形態を示す図である。
【
図2】メモリ・デバイスのデータ構造の格納を管理するためのデータ構造情報の一実施形態を示す図である。
【
図3】初期システム・データ構造を生成するためにシステム初期化を実行するための操作の一実施形態を示す図である。
【
図4】データ構造の単一のコピーのみがメモリ・サブシステムの全体にわたって格納される単一のコピーの場合について、アクセス要求を処理するための操作の一実施形態を示す図である。
【
図5】データ構造の単一のコピーのみがメモリ・サブシステムの全体にわたって格納される単一のコピーの場合について、第1のレベルのメモリ・デバイスのスペースを開放するためにメモリ管理操作を実行するための操作の一実施形態を示す図である。
【
図6】データ構造の多数のコピーがメモリ・サブシステムの全体にわたって格納される多数のコピーの場合について、アクセス要求を処理するための操作の一実施形態を示す図である。
【
図7】データ構造の多数のコピーがメモリ・サブシステムの全体にわたって格納される多数のコピーの場合について、第1のレベルのメモリ・デバイスのスペースを開放するためにメモリ管理操作を実行するための操作の一実施形態を示す図である。
【
図8】別個の更新および読み出しカウントによるデータ構造の多数のコピーがメモリ・サブシステムの全体にわたって格納される多数のコピーの場合について、アクセス要求を処理するための操作の一実施形態を示す図である。
【
図9】別個の更新および読み出しカウントによるデータ構造の多数のコピーがメモリ・サブシステムの全体にわたって格納される多数のコピーの場合について、第1のレベルのメモリ・デバイスのスペースを開放するためにメモリ管理操作を実行するための操作の一実施形態を示す図である。
【
図10】複数のメモリ・デバイスを有するメモリ・サブシステムにおいてシステム初期化を実行し、データ構造を生成するための操作の一実施形態を示す図である。
【
図11】複数のメモリ・デバイスのメモリ・サブシステムにおいて初期化後にデモートされるデータ構造へのアクセスを処理するための操作の一実施形態を示す図である。
【
図12】
図1の構成要素を実装することができるコンピュータ環境を示す図である。
【発明を実施するための形態】
【0020】
コンピューティング・システムの論理デバイスを規定するために使用されるシステム制御構造は、メインDRAMメモリで維持することができる。しかしながら、DRAMがほぼ満杯に達すると、時間のかかるメモリ管理プロセスを使用して、DRAMのデータ構造を下位レベルのストレージ、例えば、より高いレイテンシのNAND型フラッシュ・メモリまたはディスク・ストレージなどに移す。
【0021】
記載の実施形態は、異なる特性を有する複数の異なるレベルのメモリ・デバイス、例えば、最低レイテンシの第1のレベルのメモリ・デバイス、例えば、DRAMと、異なるより高いレイテンシのより安価な下位レベルのメモリ・デバイス、例えば、NANDフラッシュ・メモリとで構成されたメモリ・サブシステムのデータ構造を管理するための改善されたコンピュータ技術を提供する。記載の実施形態では、アクセス・カウントが、第1のレベルのメモリ・デバイスからより高いレイテンシを有する下位レベルのメモリ・デバイスにデータ構造をいつ移すかを決定するために使用される。アクセス・カウントはまた、適切な耐久プロファイル、例えば、消去サイクル数を有する下位レベルのメモリ・デバイスのデータ構造の配置をデータ構造のアクセス・カウント・プロファイルと整合させるために、異なる下位レベルのメモリ・デバイスで維持されるアクセス閾値に基づいて、データ構造の多数のコピーを第1のレベルのメモリ・デバイスおよび下位レベルのメモリ・デバイスに維持すべきかどうかを決定するために使用することができる。
【0022】
さらなる実施形態では、アクセス・カウントは、データ構造にアクセスするときにメモリ・デバイスの多数にデータ構造の多数のコピーを維持すべきか、または単に第1のレベルのメモリ・デバイスに残すべきかどうかを決定するために使用することができる。最も頻繁に更新されるデータ構造ほどには頻繁アクセスされないデータ構造は、より高いレイテンシを有する下位レベルのメモリ・デバイスへの格納を可能にするためにスワップ可能として示すことができるが、最も頻繁にアクセスされるデータ構造は、スワップ可能ではなく、最低レイテンシの第1のレベルのメモリ・デバイスにとどまることができる。
【0023】
しかもさらに、アクセス・カウントは、それほど頻繁に更新されないデータ構造を下位レベルのメモリ・デバイスに移すべきかどうかを決定するのに使用するための別個の読み出しおよび更新カウントを含むことができる。さらに、より多くの消去サイクルを可能にするなどのより高い耐久性を有する下位レベルのメモリ・デバイスのより高価なものが存在することができ、最も高いアクセス・カウント・データ構造のみがより大きい耐久性を有する下位レベルのメモリ・デバイスに配置され、より低い更新カウントを有するデータ構造は、耐久性が低い、例えば、少ない消去サイクルしか可能にしないそれほど高価でない下位レベルのメモリ・デバイスに格納することができる。これにより、下位レベルのメモリ・デバイスの耐久性に基づいて、更新カウントによってデータ構造を下位レベルのメモリ・デバイスと整合させて、下位レベルのメモリ・デバイスの中のデータ構造の配置を最適化することが可能になる。
【0024】
図1は、コンピュータ環境の一実施形態を示す。複数のホスト102は、入力/出力(I/O)要求をストレージ・コントローラ104にネットワーク106を介して送り出して、ストレージ110内のボリューム108(例えば、論理ユニット番号、論理デバイス、論理サブシステムなど)のデータにアクセスすることができる。ストレージ・コントローラ104は、1つまたは複数のプロセッサ112と、複数のメモリ・デバイス、例えば、第1のレベルのメモリ・デバイス116
1、第2のレベルのメモリ・デバイス116
2から第nのレベルのメモリ・デバイス116
nまでなどのうちの1つへのトラックの配置を管理するための仮想メモリ・マネージャ114を有するストレージ・クラス・メモリ(SCM)のメモリ・システムなどのメモリ・サブシステムとを含む。仮想メモリ・マネージャ114は、システム初期化中にオペレーティング・システムによって生成されたシステム・データ構造またはオブジェクトなどのデータ構造118
1、118
2、および118
3に関する情報を有するデータ構造情報200を維持し、仮想メモリ・マネージャ114は、データ構造情報200を処理して、システムおよび他のデータ構造を格納すべき1つまたは複数のレベル・メモリ・デバイス116
1…116
nを決定する。仮想メモリ・マネージャ114はまた、アドレス変換テーブルを維持して、変換サービスを提供し、ボリューム108内のトラックをメモリ・デバイス116
1…116
nの物理的または論理的場所にマッピングすることができる。仮想メモリ・マネージャ114は、下位レベルのメモリ・デバイス116
1…116
nの寿命を延ばすために、消去サイクル数が限られているソリッド・ステート・ストレージ・デバイス(SSD)またはフラッシュ・メモリなどの異なるメモリ・デバイス116
1…116
nおよびメモリ・デバイス内の異なる場所に書き込み操作を分散させるためのウェア・レベリングを実行するアルゴリズムをさらに含むことができる。特定の実施形態では、仮想メモリ・マネージャ114およびレベル・メモリ・デバイス116
1…116
nを含むメモリ・サブシステムは、ストレージ・コントローラ104または他のコンピューティング・デバイスのためのキャッシュとして機能することができる。
【0025】
プロセッサ112、仮想メモリ・マネージャ114、およびメモリ・デバイス1161…116nは、1つまたは複数のバス・インタフェース120を介して通信することができる。さらに、仮想メモリ・マネージャ114は、メモリ・デバイス1161…116nの別々のものに対して、異なるタイプおよび別個のバスおよびデバイス・インタフェースを介して通信することができる。例えば、ローカル・メモリ・インタフェースを使用して、DRAMなどの第1のレベルのメモリ・デバイス1161と通信することができ、ストレージ・デバイス・インタフェースを使用して、不揮発性メモリ・エクスプレス(NVME)などの下位レベルのメモリ・デバイス1162…116nと通信し、それによって、フラッシュ・メモリおよびSSDと通信することができる。
【0026】
1つの実施形態では、第1のレベルのメモリ・デバイス1161は、高コストで非常に低いレイテンシのデバイス、例えば、ダイナミック・ランダム・アクセス・メモリ(DRAM)またはスタティック・ランダム・アクセス・メモリ(SRAM)などを含むことができ、下位レベルのメモリ・デバイス1161…116nは、それほど高価でなくより高いレイテンシでより大容量のストレージ・デバイス、例えば、磁気抵抗ランダム・アクセス・メモリ(MRAM)、相変化メモリ(PCM)、抵抗性ランダム・アクセス・メモリ(RRAM)、スピン・トランスファ・トルク・メモリ(STM-RAM)、導電性ブリッジングRAM(CBRAM)、フラッシュ・メモリおよびソリッド・ステート・ドライブ(SSD)などのNANDメモリ・デバイス、などを含む不揮発性ランダム・アクセス・メモリ(NVRAM)などを含むことができる。1つの実施形態では、下位レベルのメモリ・デバイス1162…116nは、異なる利用可能消去サイクル数の耐久プロファイルを有することができ、その結果、メモリ・デバイス1162…116nのより高いレベルのものは、メモリ・デバイス1162…116nのより低いレベルのものよりも多い消去サイクル数、すなわち、より大きい耐久性を可能にする。例えば、下位レベルのメモリ・デバイス116iは、下位レベルのメモリ・デバイス116jよりも大きい耐久性、すなわち、より多い消去サイクル数を有することができ、ここで、i<jである。1つまたは複数の下位レベルのメモリ・デバイス116iがあってもよい。
【0027】
仮想メモリ・マネージャ114は、特定用途向け集積回路(ASIC)などのストレージ・コントローラ104のハードウェア・デバイスにマイクロコードまたはファームウェアとして実装された別個の処理またはハードウェア・デバイスを含むことができる。代替として、仮想メモリ・マネージャ114は、メモリ・デバイスにロードされたコードを実行するプロセッサを有するシステムを含むことができる。その上さらに、仮想メモリ・マネージャ114は、第1のレベルのメモリ・デバイス1161にロードされ、プロセッサ112によって実行されるコードとして実装することができる。
【0028】
ストレージ110は、ソリッド・ステート・ストレージ・デバイス(SSD)、磁気ハード・ディスク・ドライブ、光ディスク、テープなどのような、当技術分野で知られている1つまたは複数のストレージ・デバイスを含むことができる。ストレージ・デバイスは、さらに、単なるディスクの束(Just a Bunch of Disks(JBOD))、直接アクセス・ストレージ・デバイス(Direct Access Storage Device(DASD))、独立ディスクの冗長アレイ(Redundant Array of Independent Disks(RAID))のアレイ、仮想化デバイスなどのようなデバイスのアレイに構成することができる。さらに、ストレージ・デバイスは、異なるベンダからの、または同じベンダからの異種のストレージ・デバイスを含むことができる。
【0029】
ネットワーク106は、ストレージ・エリア・ネットワーク(SAN)、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、インターネット、およびイントラネットなどを含むことができる。代替として、ホスト102は、周辺構成要素相互接続(PCI)バス・インタフェースおよび当技術分野で知られている他のインタフェースなどのバス・インタフェースを介してストレージ・コントローラ104に接続することができる。
【0030】
図2は、ファイルまたはオブジェクト名などのデータ構造識別子(ID)202、データ構造202を第1のレベルのメモリ・デバイス116
1と下位レベルのメモリ・デバイス116
2…116
nとの間で定期的に移すことができるかどうかを示すスワップ可能フラグ、データ構造202が測定期間内に更新された回数を示す更新カウント206、データ構造202が測定期間内に読み出された回数を示す読み出しカウント208、データ構造202が第1のレベルのメモリ・デバイス116
1で生成された後すぐにデモートされるべきであるかどうかを示す初期化後デモートフラグ210、およびデータ構造202が現在格納されているレベル・メモリ・デバイス116
1…116
nを示すデバイス・ポインタ212を含むデータ構造のデータ構造情報200
iの事例の一実施形態を示す。
【0031】
1つの実施形態では、スワップ可能フラグ204、および初期化後デモートフラグ210は、データ構造がアクセスされる推定頻度に基づいて、オペレーティング・システム開発者または管理者によって設定され得る。例えば、最も頻繁に更新またはアクセスされるデータ構造は、最高速の第1のレベルのメモリ・デバイス1161に常に保持するためにスワップ可能としてマークすることができる。それほど頻繁にアクセスされないデータ構造1181、1182、1183は、時々、第1のレベルのメモリ・デバイス1161のスペースを開放するために、下位レベルのメモリ・デバイス1162…116nにスワップされ得る。
【0032】
更新カウント206は、耐久性または利用可能な消去サイクルと整合するようにデータ構造を格納できる下位レベルのメモリ・デバイス116iを選択するために使用することができる。例えば、より頻繁にアクセスされるデータ構造、すなわち、より高い更新カウント206もつデータ構造は、より高い耐久性を有する下位レベルのメモリ・デバイス116iに配置することができる。このようにして、下位レベルのメモリ・デバイス1162…116nの各々は、更新カウントの範囲と関連づけることができる。代替実施形態では、データ構造を第1のレベルのメモリ・デバイス1161からいつスワップすべきかを決定し、スワップされたデータ構造を格納するための下位レベルのメモリ・デバイス116iを選択するために使用される読み出しまたは書き込みあるいはその両方のためのただ1つのアクセス・カウントがあり得る。
【0033】
スワップ可能204でないとして示されたデータ構造情報200iは、そのようなデータ構造がアクセスに基づいてメモリ・デバイス間で管理されないので、アクセス・カウント206、208を維持しないことがある。
【0034】
初期化後デモートフラグ210は、静的でめったにないが時には変更される、スワップ可能204でないとしてさらに示されるデータ構造に対して設定されることがある。そのような場合、そのような極めてまれにしかアクセスされないデータ構造は、継続的に格納するために下位レベルのメモリ・デバイス116iに移すことができるが、その理由は、極めてまれな書き込みアクセスおよび読み出しアクセスには、下位レベルのメモリ・デバイス116iからサービスを提供することができるからである。しかしながら、初期化後デモート210として示されたデータ構造に書き込む必要がある場合、データ構造は、そのデータ構造への1つまたは複数の書き込み操作のために第1のレベルのメモリ・デバイス1161に移すことができる。書き込み操作が完了すると、データ構造は、第1のレベルのメモリ・デバイス1161からデモートし、下位レベルのメモリ・デバイス116iに移すことができるが、その理由は、データ構造が、かなりの時間の間書き込みアクセスされる可能性がないからである。
【0035】
1つの実施形態では、仮想メモリ・マネージャ114によって管理されるデータ構造は、システム初期化または初期マイクロコード・ロード(IML)中に生成されたデータ構造を含み、ハードウェア・デバイスおよび論理デバイス、パスおよびサブシステム、デバイス特性、ならびに設定のための構成情報を与える構造を含むことができる。代替実施形態では、データ構造は、アプリケーションによって生成され得る。
【0036】
特定の実施形態では、定期的に、仮想メモリ・マネージャ114は、経時的にアクセスの重み付けを低減するために、更新カウント206および読み出しカウント208などのアクセス・カウントをデクリメントすることができる。これにより、アクセス・カウントの強度は、時間依存になり、経時的に減衰することが規定される。
【0037】
図3は、第1のレベルのメモリ・デバイス116
1および仮想メモリ・マネージャ114に維持され得るストレージ・コントローラ104のオペレーティング・システムによってストレージ・コントローラ104のシステム初期化のために実行される操作の一実施形態を示す。システム初期化を開始すると(ブロック300において)、システム・データ構造が生成され(ブロック302において)、第1のレベルのメモリ・デバイス116
1に格納される。初期化後デモート210として示された生成されたデータ構造の各々に対して、生成されたデータ構造は、最低位レベルのメモリ・デバイス(例えば、第3のレベル)にコピーされ(ブロック304において)、第1のレベルのメモリ・デバイス116
1から削除される。
【0038】
図4は、データ構造118
iの1つのコピーのみがメモリ・デバイス116
1…116
nに維持される単一のコピーの場合について、読み出しまたは書き込みなどのアクセス要求を処理するために仮想メモリ・マネージャ114によって実行される操作の一実施形態を示す。アクセス要求を処理する(ブロック400において)際に、(ブロック402において)アクセスされたデータ構造118
iがスワップ可能204でない場合、制御は、スワップ不可能なデータ構造として処理するために
図11に進む。(ブロック402において)アクセスされたデータ構造118
iのデータ構造情報200
iのスワップ可能フラグ204が、データ構造118
iがスワップ可能であることを示している場合、アクセス・カウントはインクリメントされる(ブロック406において)。
図4および
図5の実施形態において、読み出しアクセスまたは書き込みアクセスあるいはその両方のためにただ1つのアクセス・カウントがあり得る。
【0039】
(ブロック408において)アクセスされたデータ構造118iが第1のレベルのメモリ・デバイス1161に存在する場合、アクセス要求は、第1のレベルのメモリ・デバイス1161において実行される(ブロック410において)。データ構造118iが第1のレベルのメモリ・デバイス1161に存在しない場合、仮想メモリ・マネージャ114は、データ構造118iを下位レベルのメモリ・デバイス116iから第1のレベルのメモリ・デバイス1161にコピーし(ブロック412において)、データ構造118iを下位レベルのメモリ・デバイス116iから削除し(ブロック414において)、第1のレベルのメモリ・デバイス1161を示すようにデバイス・ポインタ212を更新する。
【0040】
図4の実施形態では、仮想メモリ・マネージャ114は、メモリ・デバイス116
iのうちの1つにデータ構造の単一のコピーを維持し、アクセスされたとき、スワップ可能なデータ構造を下位レベルのメモリ・デバイス116
iから第1のレベルのメモリ・デバイス116
1に移す。
【0041】
図5は、データ構造118
iの単一のコピーがメモリ・デバイス116
iのうちの1つに維持される場合に、第1のレベルのメモリ・デバイス116
1のスペースを開放するために、仮想メモリ・マネージャ114によって実行される操作の一実施形態を示す。メモリ管理を開始すると(ブロック500において)、(ブロック502において)第1のレベルのメモリ・デバイス116
1の空きスペースの量がメモリ閾値を超えている場合、制御は終了する。(ブロック502において)空きスペースの量がメモリ閾値を下回っている場合、仮想メモリ・マネージャ114は、空きスペース量を満たす最少アクセス・カウントを有するスワップ可能として示された第1のレベルのメモリ・デバイス116
1のデータ構造118
iを選択する(ブロック504において)。選択されたデータ構造は、下位レベルのメモリ・デバイス116
iのうちの1つにコピーされ(ブロック506において)、第1のレベルのメモリ・デバイス116
1から削除され、移されたデータ構造のデバイス・ポインタ212は、選択されたデータ構造が追加された下位レベルのメモリ・デバイス116
iを指し示すように更新される。
【0042】
1つの実施形態では、選択されたデータ構造のアクセス・カウントを使用して、データ構造が格納される下位レベルのメモリ・デバイスを決定することができる。下位レベルのメモリ・デバイス116iが消去可能サイクルの点から耐久性に従って順序付けされ、小さい番号のデバイスが、大きい番号のデバイスよりも高い耐久性を有する、例えば、メモリ・デバイス1162がメモリ・デバイス1163よりも大きい耐久性を有する場合、データ構造は、データ構造アクセス・カウントを超えている最低位レベル閾値を有するメモリ・デバイス116iに配置される。
【0043】
図5の実施形態では、第1のレベルのメモリ・デバイス116
1のスペースを開放するために、仮想メモリ・マネージャ114は、最少アクセス・カウントを有するデータ構造を考慮するが、その理由は、そのようなデータ構造が、それほど頻繁に更新およびアクセスされず、下位レベルのメモリ・デバイス116
2…116
nに格納するのに最も適しているからである。
【0044】
図6は、データ構造118
iの多数のコピーが、メモリ・デバイス116
1…116
nの多数のものに維持される場合に、アクセス要求を処理するために仮想メモリ・マネージャ114によって実行される操作の一実施形態を示す。
図6および
図7の実施形態では、更新カウント206または読み出しカウント208あるいはその両方を含む1つのアクセス・カウントが存在する。アクセス要求を処理する(ブロック600において)際に、(ブロック602において)アクセスされたデータ構造118
iがスワップ可能204でない場合、制御は、スワップ不可能なデータ構造として処理するために
図11に進む。(ブロック602において)アクセスされたデータ構造118
iに関するデータ構造情報200
iのスワップ可能フラグ204が、データ構造118
iがスワップ可能であることを示している場合、アクセス・カウントはインクリメントされる(ブロック606において)。
【0045】
(ブロック608において)アクセスされたデータ構造118iが第1のレベルのメモリ・デバイス1161に存在する場合、アクセス要求は、第1のレベルのメモリ・デバイス1161において実行される(ブロック610において)。データ構造118iが第1のレベルのメモリ・デバイス1161に存在しない場合、仮想メモリ・マネージャ114は、データ構造118iを下位レベルのメモリ・デバイス116iから第1のレベルのメモリ・デバイス1161にコピーし(ブロック612において)、第1のレベルのメモリ・デバイス1161を示すようにデバイス・ポインタ212を更新する(ブロック614において)。(ブロック616において)アクセス要求が更新である場合、1つまたは複数のメモリ・デバイスのデータ構造のコピーが更新される(ブロック616において)。
【0046】
仮想メモリ・マネージャ114は、データ構造118iのアクセス・カウントを超えている最低位レベル閾値を有する下位レベルのメモリ・デバイス116jを決定し(ブロック618において)、下位レベルのメモリ・デバイス116jは、選択されたデータ構造118iのアクセス・カウントに最も適した耐久性を有するメモリ・デバイスである。(ブロック620において)データ構造118iが、決定された下位レベルのメモリ・デバイス116jに存在しない場合、仮想メモリ・マネージャ114は、データ構造118iを、データ構造118iを現在有している下位レベルのメモリ・デバイス116iから、決定された最低位レベル閾値を有する下位レベルのメモリ・デバイス116jにコピーし(ブロック622において)、データ構造がコピーされた下位レベルのメモリ・デバイス116iからデータ構造118iを削除する(ブロック624において)。(ブロック620において)データ構造118iが、決定された下位レベルのメモリ・デバイス116jに既に存在するか、またはそこにコピーされている(ブロック622において)場合、デバイス・ポインタ212は、今ではデータ構造118iを有する下位レベルのメモリ・デバイス116jを示すように更新される(ブロック626において)。
【0047】
図6の実施形態では、アクセスされたデータ構造は、第1のレベルのメモリ・デバイス116
1に移され、データ構造のアクセス・カウントに相応した耐久性、すなわち、消去可能サイクルを有する下位レベルのメモリ・デバイスを含む下位レベルのメモリ・デバイスにも保持される。アクセス・カウントによるデータ構造を耐久性による下位レベルのメモリ・デバイスと整合させることによって、データ構造は、データ構造のアクセスの頻度に最も適した耐久性レベルを有する下位レベルのメモリ・デバイスに格納される。さらに、データ構造のアクセス・カウントが、第2のメモリ・レベル・デバイス116
2の最も高いレベルの閾値よりも高い場合、データ構造は、アクセス・カウントが下位レベルのメモリ・デバイス116
2…116
nには高すぎるので、データ構造を別のメモリ・レベル・デバイスに移すことなしに、データ構造を有するメモリ・レベル・デバイス116
iから削除される。
【0048】
図7は、データ構造118
iのコピーが多数のレベル・メモリ・デバイス116
1…116
nに維持される場合にメモリ管理を実行するために仮想メモリ・マネージャ114によって実行される操作の一実施形態を示す。多数のコピーの場合のメモリ管理を開始すると(ブロック700において)、(ブロック702において)第1のレベルのメモリ・デバイス116
1の空きスペースの量がメモリ閾値を超えている場合、制御は終了する。(ブロック702において)空きスペースの量がメモリ閾値を下回っている場合、仮想メモリ・マネージャ114は、空きスペース量を満たす最少アクセス・カウントを有するスワップ可能として示された第1のレベルのメモリ・デバイス116
1のデータ構造118
iを選択する(ブロック704において)。ブロック706からブロック718においての操作は、選択されたデータ構造118
iの各々に対して実行される。
【0049】
仮想メモリ・マネージャ114は、データ構造118iのアクセス・カウントを超えている最低位レベル閾値を有する下位レベルのメモリ・デバイス116jを決定し(ブロック708において)、下位レベルのメモリ・デバイス116jは、選択されたデータ構造118iのアクセス・カウントに最も適した耐久性を有するメモリ・デバイスである。(ブロック710において)データ構造118iが、決定された下位レベルのメモリ・デバイス116jに存在しない場合、仮想メモリ・マネージャ114は、データ構造118iを、第1のレベルのメモリ・デバイス1161から、決定された最低位レベル閾値を有する下位レベルのメモリ・デバイス116jにコピーする(ブロック712において)。(ブロック710において)データ構造118iが、決定された下位レベルのメモリ・デバイス116jに既に存在するか、またはそこにコピーされている(ブロック712において)場合、データ構造118iは、第1のレベルのメモリ・デバイス1161から削除され(ブロック714において)、デバイス・ポインタ212は、今ではデータ構造118iを有する下位レベルのメモリ・デバイス116jを示すように更新される(ブロック716において)。
【0050】
図7の実施形態では、第1のレベルのメモリ・デバイス116
1のスペースを開放するために、仮想メモリ・マネージャ114は、最少アクセス・カウントを有するデータ構造を考慮するが、その理由は、そのようなデータ構造は、更新およびアクセスされる可能性が低く、下位レベルのメモリ・デバイス116
2…116
nに格納するのに最も適しているからである。最少アクセス・カウントを有する選択されたデータ構造は、第1のレベルのメモリ・デバイス116
1から削除され、移すべきデータ構造のアクセス・カウントを含むレベル閾値を有する下位レベルのメモリ・デバイス116
iに保持される。
【0051】
図8は、データ構造118
iの多数のコピーが、メモリ・デバイス116
1…116
nの多数のものに維持され、別個の更新カウント206および読み出しカウント208がある場合に、アクセス要求を処理するために仮想メモリ・マネージャ114によって実行される操作の一実施形態を示す。アクセス要求を処理する(ブロック800において)際に、(ブロック802において)アクセスされたデータ構造118
iがスワップ可能204でない場合、制御は、スワップ不可能なデータ構造として処理するために
図11に進む。(ブロック802において)アクセスされたデータ構造118
iに関するデータ構造情報200
iのスワップ可能フラグ204が、データ構造118
iがスワップ可能であることを示している場合、アクセスが書き込みであれば、更新カウント206がインクリメントされ、アクセスが読み出しであれば、読み出しカウント208がインクリメントされる(ブロック806において)。
【0052】
(ブロック808において)アクセスされたデータ構造118iが第1のレベルのメモリ・デバイス1161に存在する場合、アクセス(読み出しまたは書き込み)は、第1のレベルのメモリ・デバイス1161において実行される(ブロック810において)。(ブロック808において)データ構造118iが第1のレベルのメモリ・デバイス1161に存在しない場合、仮想メモリ・マネージャ114は、データ構造118iを下位レベルのメモリ・デバイス116iから第1のレベルのメモリ・デバイス1161にコピーし(ブロック812において)、第1のレベルのメモリ・デバイス1161を示すようにデバイス・ポインタ212を更新する(ブロック814において)。(ブロック816において)アクセス要求が更新である場合、第1のレベルのメモリ・デバイス1161および下位レベルのメモリ・デバイス116iのデータ構造のコピーが更新される(ブロック818において)。
【0053】
アクセスが、読み出しである(ブロック816からの)か、またはデータの更新である(ブロック818からの)場合、仮想メモリ・マネージャ114は、データ構造118iの更新カウント206を超えている最低位レベル閾値を有する下位レベルのメモリ・デバイス116jを決定し(ブロック820において)、下位レベルのメモリ・デバイス116jは、選択されたデータ構造118iの更新カウントに最も適した耐久性を有するメモリ・デバイスである。(ブロック822において)データ構造118iが、決定された下位レベルのメモリ・デバイス116jに存在しない場合、仮想メモリ・マネージャ114は、データ構造118iを、データ構造118iを有している下位レベルのメモリ・デバイス116iから、決定された最低位レベル閾値を有する下位レベルのメモリ・デバイス116jにコピーし(ブロック824において)、データ構造118iは、下位レベルのメモリ・デバイス116iから削除される(ブロック826において)。データ構造が、最低位レベル閾値を有する決定された下位レベルのメモリ・デバイス116jに存在すれば(ブロック822または826から)、デバイス・ポインタ212は、今ではデータ構造118iを有する下位レベルのメモリ・デバイス116jを示すように更新される(ブロック828において)。
【0054】
図8の実施形態では、アクセスされたデータ構造は、第1のレベルのメモリ・デバイス116
1に移され、データ構造の更新カウントに相応した耐久性、すなわち、消去可能サイクルを有する下位レベルのメモリ・デバイスを含む下位レベルのメモリ・デバイスにも保持される。更新カウントによるデータ構造を耐久性による下位レベルのメモリ・デバイスと整合させることによって、データ構造は、データ構造の更新の頻度に最も適した耐久性レベルを有する下位レベルのメモリ・デバイスに格納される。さらに、データ構造の更新カウントが、第2のメモリ・レベル・デバイス116
2の最も高いレベルの閾値よりも高い場合、データ構造は、更新カウントが下位レベルのメモリ・デバイス116
2…116
nの耐久プロファイルには高すぎるので、データ構造を別のメモリ・レベル・デバイスに移すことなしに、データ構造を有するメモリ・レベル・デバイス116
iから削除される。
【0055】
図9は、データ構造118
iのコピーが多数のレベル・メモリ・デバイス116
1…116
nに維持される場合にメモリ管理を実行するために仮想メモリ・マネージャ114によって実行される操作の一実施形態を示す。別個の更新および読み出しカウントによる多数のコピーの場合のメモリ管理を開始すると(ブロック900において)、(ブロック902において)第1のレベルのメモリ・デバイス116
1の空きスペースの量がメモリ閾値を超えている場合、制御は終了する。(ブロック902において)空きスペースの量がメモリ閾値を下回っている場合、仮想メモリ・マネージャ114は、空きスペース量を満たす最少更新カウント206を有するスワップ可能として示された第1のレベルのメモリ・デバイス116
1のデータ構造118
iを選択する(ブロック904において)。ブロック906からブロック918においての操作は、選択されたデータ構造118
iの各々に対して実行される。
【0056】
仮想メモリ・マネージャ114は、データ構造118iの更新カウント206を超えている最低位レベル閾値を有する下位レベルのメモリ・デバイス116jを決定し(ブロック908において)、下位レベルのメモリ・デバイス116jは、選択されたデータ構造118iの更新カウントに最も適した耐久性を有するメモリ・デバイスである。(ブロック910において)データ構造118iが、決定された下位レベルのメモリ・デバイス116jに存在しない場合、仮想メモリ・マネージャ114は、データ構造118iを、第1のレベルのメモリ・デバイス1161から、決定された最低位レベル閾値を有する下位レベルのメモリ・デバイス116jにコピーする(ブロック912において)。(ブロック910において)データ構造118iが、決定された下位レベルのメモリ・デバイス116jに既に存在するか、またはそこにコピーされている(ブロック912において)場合、データ構造118iは、第1のレベルのメモリ・デバイス1161から削除され(ブロック914において)、デバイス・ポインタ212は、今ではデータ構造118iを有する下位レベルのメモリ・デバイス116jを示すように更新される(ブロック916において)。
【0057】
図9の実施形態では、第1のレベルのメモリ・デバイス116
1のスペースを開放するために、仮想メモリ・マネージャ114は、最少更新カウントを有するデータ構造を考慮するが、その理由は、そのようなデータ構造が、それほど頻繁に更新されず、下位レベルのメモリ・デバイス116
2…116
nに格納するのに最も適しているからである。最少更新カウントを有する選択されたデータ構造は、第1のレベルのメモリ・デバイス116
1から削除され、移すべきデータ構造の更新カウントを含むレベル閾値を有する下位レベルのメモリ・デバイス116
iに保持される。
【0058】
図10は、論理サブシステム、論理ボリューム、パス・グループ、物理パス、論理パス、サブシステム特性、および他の構成データに関する構成情報を提供するデータ構造を含む、システム初期化中に、システム・タイプ・データ構造などのデータ構造を生成するために、仮想メモリ・マネージャ114によって実行される操作の一実施形態を示す。基本入力オペレーティング・システム(BIOS)、初期マイクロコード・ロード(IML)、または他のブート・デバイスで開始することができるシステム初期化(ブロック1000において)を実行すると、システム・データ構造が、第1のレベルのメモリ・デバイス116
1においてシステム初期化の一部として生成および格納される(ブロック1002において)。生成されたシステム・データ構造118
iに関するデータ構造情報200
iのデバイス・ポインタ212は、第1のレベルのメモリ・デバイス116
1を示すように更新される(ブロック1004において)。仮想メモリ・マネージャ114は、データ構造情報200
iがフィールド210においてデータ構造が初期化後にデモートされるべきであることを示しているデータ構造118
iを決定する(ブロック1006において)。決定されたデータ構造は、第1のレベルのメモリ・デバイス116
1から、選択された下位レベルのメモリ・デバイス116
iにコピーされる(ブロック1008において)。選択された下位レベルのメモリ・デバイスを、アクセス・カウントまたは更新カウントに基づいて選択して、
図7および
図9に関して説明されたものなどのデータ構造へのアクセスまたは更新カウントに適する耐久プロファイルを有する下位レベルのメモリ・デバイスを選択することができる。
【0059】
コピーされた決定されたデータ構造118iは、第1のレベルのメモリ・デバイス1161から削除され(ブロック1010において)、移されたデータ構造118iのデバイス・ポインタ212は、移された選択された下位メモリ・デバイスを示すように更新される(ブロック1012において)。
【0060】
図10の実施形態では、デモートするように示され、極めてまれにしかアクセスされないシステム・データ構造を含むことがあるデータ構造は、適切な下位レベルのメモリ・デバイス116
iに移されるが、その理由は、まれなアクセス・パターンが、システム初期化中に、初期化された後にデータ構造を第1のレベルのメモリ・デバイス116
1に格納する必要がないことを示しているからである。
【0061】
図11は、それぞれ、
図4、
図6、および
図8のブロック404、604、および804において起動されるものなどのスワップ不可能なデータ構造118
iへのアクセスを処理するために仮想メモリ・マネージャ114によって実行される操作の一実施形態を示す。スワップ不可能なデータ構造118
iへのアクセスを開始すると(ブロック1100において)、(ブロック1102において)スワップ不可能なデータ構造118
iが、初期化後デモートとしてフィールド210に示されない場合、仮想メモリ・マネージャ114は、第1のレベルのメモリ・デバイス116
1のデータ構造118
iへの読み出しまたは書き込みアクセスを行う(ブロック1104において)。(ブロック1102において)データ構造118
iが初期化後デモートである場合、(ブロック1106において)アクセスが読み出しであるならば、仮想メモリ・マネージャ114は、アクセスされたデータ構造118
iのデータ構造情報200
i内のデバイス・ポインタ212によって識別されたレベル・メモリ・デバイス116
iのデータ構造118
iへの読み出しアクセスを行う(ブロック1108において)。
【0062】
(ブロック1106において)アクセスが書き込みである場合、および(ブロック1110において)データ構造118iへの更新が定義された更新イベントのセットのメンバでない場合、要求された書き込みは、データ構造118iのデバイス・ポインタ212で示された下位レベルのメモリ・デバイス116iで実行される(ブロック1112において)。(ブロック1110において)更新が、定義された更新イベントのメンバである場合、仮想メモリ・マネージャ114は、データ構造118i(または更新すべき特定のフィールドまたは部分)を第1のレベルのメモリ・デバイス1161にコピーし(ブロック1114において)、第1のレベルのメモリ・デバイス1161を示すようにデバイス・ポインタ212を更新する。次いで、イベント書き込みが、イベントの一部として、データ構造118i、またはデータ構造の特定のフィールドに実行される(ブロック1116において)。イベント関連書き込みが終了すると(ブロック1118において)、次に、仮想メモリ・マネージャ114は、更新データ構造118i、または単に更新フィールドおよび部分を、第1のレベルのメモリ・デバイス1161から、選択された下位レベルのメモリ・デバイス116i(例えば、ウェア・レベリングを低減するために選択された、最低位レベルなど)にコピーし(ブロック1120において)、データ構造118iを第1のレベルのメモリ・デバイス1161から削除し、選択された下位レベルのメモリ・デバイス116iを示すようにデバイス・ポインタ212を更新する。
【0063】
1つの実施形態では、データ構造を第1のレベルのメモリ・デバイス1161に移すことをトリガする定義されたイベントのセットは、論理サブシステム、ボリューム、パス・グループ、物理パス、および論理パスについての追加または削除などの極めてまれにしか更新されないシステム構成ファイルであるデータ構造を含むことができる。更新イベントは、新しいサブシステム特性および他の情報を用いて構成情報を更新することをさらに含むことができる。
【0064】
図11の操作では、下位レベルのメモリ・デバイス116
iに大部分は格納される初期化後デモートとして識別されたデータ構造118
iは、システム構成ファイルを更新するための操作の一部として、書き込みのバーストのために、第1のレベルのメモリ・デバイス116
1に定期的にステージングされ得る。そのような構成ファイルは極めてまれにしか更新されないので、更新イベントの後、システム・データ構造は、格納およびアクセスのために下位レベルのメモリ・デバイスに戻すことができる。これにより、他のより頻繁にアクセスされるデータのために、より速いアクセスの第1のレベルのメモリ・デバイス116
1のスペースが解放される。
【0065】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであり得る。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有する1つのコンピュータ可読ストレージ媒体(または複数の媒体)を含むことができる。
【0066】
コンピュータ可読ストレージ媒体は、命令実行デバイスによる使用のために命令を保持および格納することができる有形のデバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、限定はしないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、または前述のものの任意の適切な組合せとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストは、以下のもの、すなわち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラマブル読み出し専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、パンチカードまたは命令が記録された溝内の隆起構造などの機械的に符号化されたデバイス、および前述のものの任意の適切な組合せを含む。本明細書で使用されるコンピュータ可読ストレージ媒体は、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝送媒体を通って伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通して伝送される電気信号などのそれ自体一過性信号であると解釈されるべきではない。
【0067】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスに、あるいはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワーク、あるいはその組合せを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含むことができる。各コンピューティング/処理デバイスのネットワーク・アダプタ・カードまたはネットワーク・インタフェースは、コンピュータ可読プログラム命令をネットワークから受け取り、そのコンピュータ可読プログラム命令をそれぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
【0068】
本発明の操作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいはJava(R)、Smalltalk(R)、C++などのようなオブジェクト指向プログラミング言語および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードまたはオブジェクト・コードのいずれかとすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータで、部分的にユーザのコンピュータで、スタンドアロン・ソフトウェア・パッケージとして、部分的にユーザのコンピュータでおよび部分的にリモート・コンピュータで、または完全にリモート・コンピュータもしくはサーバで実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを通してユーザのコンピュータに接続されてもよく、または接続が外部コンピュータに対して行われてもよい(例えば、インターネット・サービス・プロバイダを使用してインターネットを通して)。いくつかの実施形態では、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル論理アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個人専用にすることによってコンピュータ可読プログラム命令を実行することができる。
【0069】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品の流れ図またはブロック図あるいはその両方を参照して本明細書に記載されている。流れ図またはブロック図あるいはその両方の各ブロック、および流れ図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実現され得ることが理解されよう。
【0070】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が流れ図またはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/動作を実施するための手段を作り出すように、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて、マシンを生成することができる。これらのコンピュータ可読プログラム命令はまた、命令が格納されたコンピュータ可読ストレージ媒体が流れ図またはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/動作の態様を実施する命令を含む製品を構成するように、コンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはその組合せに、特定の方法で機能するように指示することができるコンピュータ可読ストレージ媒体に格納されてもよい。
【0071】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブル装置、または他のデバイスで実行される命令が流れ図またはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/動作を実施するように、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされて、コンピュータ実施プロセスを生成するために一連の操作ステップをコンピュータ、他のプログラマブル装置、または他のデバイスに実行させることができる。
【0072】
図における流れ図およびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施態様のアーキテクチャ、機能、および操作を示す。これに関しては、流れ図またはブロック図の各ブロックは、指定された論理機能を実施するための1つまたは複数の実行可能命令を含む命令のモジュール、セグメント、または一部を表すことができる。いくつかの代替実施態様では、ブロックに記された機能は、図に記された順序から外れて行われてもよい。例えば、連続して示された2つのブロックは、実際には、実質的に同時に実行されてもよく、またはブロックは、時には、関連する機能に応じて逆の順序で実行されてもよい。ブロック図または流れ図あるいはその両方の各ブロック、およびブロック図または流れ図あるいはその両方のブロックの組合せは、指定された機能または動作を実行するかあるいは専用ハードウェア命令とコンピュータ命令の組合せを実行する専用ハードウェア・ベース・システムによって実施され得ることにも留意されたい。
【0073】
ホスト102およびストレージ・コントローラ104を含む
図1の計算構成要素は、
図12に示されるコンピュータ・システム1202などの1つまたは複数のコンピュータ・システムに実装され得る。コンピュータ・システム/サーバ1202は、コンピュータ・システムによって実行されるプログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的な文脈で説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行するかまたは特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含む。コンピュータ・システム/サーバ1202は、通信ネットワークを介してリンクされるリモート処理デバイスによってタスクが実行される分散型クラウド・コンピューティング環境において実践されてもよい。分散型クラウド・コンピューティング環境では、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカルおよびリモートの両方のコンピュータ・システム・ストレージ媒体に配置することができる。
【0074】
図12に示されるように、コンピュータ・システム/サーバ1202は、汎用コンピューティング・デバイスの形態で示される。コンピュータ・システム/サーバ1202の構成要素は、限定はしないが、1つまたは複数のプロセッサまたは処理ユニット1204と、システム・メモリ1206と、システム・メモリ1206を含む様々なシステム構成要素をプロセッサ1204に結合させるバス1208とを含むことができる。バス1208は、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィック・ポート、および様々なバス・アーキテクチャのうちのいずれかを使用するプロセッサまたはローカル・バスを含むいくつかのタイプのバス構造のうちのいずれかの1つまたは複数を表す。例として、限定ではなく、そのようなアーキテクチャには、業界標準アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、エンハンスドISA(EISA)バス、ビデオ・エレクトロニクス規格協会(VESA)ローカル・バス、および周辺構成要素相互接続(PCI)バスが含まれる。
【0075】
コンピュータ・システム/サーバ1202は、一般に、様々なコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム/サーバ1202によってアクセス可能な任意の利用可能な媒体とすることができ、揮発性および不揮発性媒体、取り外し可能および取り外し不能媒体を含む。
【0076】
システム・メモリ1206は、ランダム・アクセス・メモリ(RAM)1210またはキャッシュ・メモリ1212あるいはその両方などの揮発性メモリの形態のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ1202は、他の取り外し可能/取り外し不能で、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体をさらに含むことができる。単に例として、ストレージ・システム1213は、取り外し不能で不揮発性の磁気媒体(図示せず、一般に、「ハードドライブ」と呼ばれる)から読み出し、それに書き込むために設けられることができる。図示されていないが、取り外し可能で不揮発性の磁気ディスクから読み出し、それに書き込むための磁気ディスク・ドライブ(例えば、「フロッピー(R)・ディスク」)と、CD-ROM、DVD-ROM、または他の光学媒体などの取り外し可能で不揮発性の光ディスクから読み出し、またはそれに書き込むための光ディスク・ドライブとが設けられてもよい。そのような例では、各々は、1つまたは複数のデータ媒体インタフェースによってバス1208に接続され得る。以下でさらに図示および説明されるように、メモリ1206は、本発明の実施形態の機能を実行するように構成されたプログラム・モジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含むことができる。
【0077】
プログラム・モジュール1216のセット(少なくとも1つ)を有するプログラム/ユーティリティ1214は、例として、限定ではなく、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データと同様にメモリ1206に格納することができる。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データの各々、またはそれらの組合せは、ネットワーキング環境の実施態様を含むことができる。コンピュータ1202の構成要素は、一般に、本明細書に記載のような本発明の実施形態の機能または方法あるいはその両方を実行するプログラム・モジュール1216として実装することができる。
図1のシステムは、1つまたは複数のコンピュータ・システム1202に実装することができ、ここで、
図1のシステムが多数のコンピュータ・システム1202に実装される場合、コンピュータ・システムはネットワークを介して通信することができる。
【0078】
コンピュータ・システム/サーバ1202は、さらに、キーボード、ポインティング・デバイス、ディスプレイ1220などのような1つまたは複数の外部デバイス1218、ユーザがコンピュータ・システム/サーバ1202と対話できるようにする1つまたは複数のデバイス、またはコンピュータ・システム/サーバ1202が1つまたは複数の他のコンピューティング・デバイスと通信できるようにするデバイス(例えば、ネットワーク・カード、モデムなど)、あるいはその組合せと通信することができる。そのような通信は、入力/出力(I/O)インタフェース1222を介して行うことができる。さらに、コンピュータ・システム/サーバ1202は、ネットワーク・アダプタ1224を介して、ローカル・エリア・ネットワーク(LAN)、汎用ワイド・エリア・ネットワーク(WAN)、またはパブリック・ネットワーク(例えば、インターネット)、あるいはその組合せなどの1つまたは複数のネットワークと通信することができる。図示のように、ネットワーク・アダプタ1224は、バス1208を介してコンピュータ・システム/サーバ1202の他の構成要素と通信する。示されていないが、他のハードウェアまたはソフトウェア・コンポーネントあるいはその両方が、コンピュータ・システム/サーバ1202とともに使用されてもよいことを理解されたい。例は、限定はしないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどを含む。
【0079】
「an embodiment(一実施形態)」、「embodiment(実施形態)」、「embodiments(複数の実施形態)」、「the embodiment(その実施形態)」、「the embodiments(その複数の実施形態)」、「one or more embodiments(1つまたは複数の実施形態)」、「some embodiments(いくつかの実施形態)」、および「one embodiment(1つの実施形態)」という用語は、特に明記されない限り、「one or more (but not all) embodiments of the present invention(s)(本発明の1つまたは複数の(しかしすべてではない)実施形態)」を意味する。
【0080】
「including(含んでいる)」、「comprising(含んでいる、備えている)」、「having(有している)」という用語、およびそれらの変形は、特に明記されない限り、「including but not limited to(含んでいるが限定はしない)」を意味する。
【0081】
アイテムの列挙されたリスティングは、特に明記されない限り、アイテムのうちのいずれかまたはすべてが互いに排他的であることを意味しない。
【0082】
「a(1つの)」、「an(1つの)」、および「the(その)」という用語は、特に明記されない限り、「one or more(1つまたは複数の)」を意味する。
【0083】
互いに通信するデバイスは、特に明記されない限り、互いに連続的に通信する必要はない。加えて、互いに通信するデバイスは、1つまたは複数の仲介物を介して直接または間接的に通信することができる。
【0084】
互いに通信しているいくつかの構成要素を有する一実施形態の説明は、すべてのそのような構成要素が必要とされることを意味しない。それどころか、様々な任意の構成要素が、本発明の多種多様な可能な実施形態を例証するために記載される。
【0085】
単一のデバイスまたは物品が本明細書に記載されるとき、2つ以上のデバイス/物品が(それらが協働するか否かに関係なく)、単一のデバイス/物品の代わりに使用されてもよいことは容易に明らかであろう。同様に、2つ以上のデバイスまたは物品が本明細書に記載される(それらが協働するか否かに関係なく)場合、単一のデバイス/物品が、2つ以上のデバイスまたは物品の代わりに使用されてもよく、または異なる数のデバイス/物品が、示された数のデバイスまたはプログラムの代わりに使用されてもよいことは容易に明らかであろう。デバイスの機能または特徴あるいはその両方は、代替として、そのような機能/特徴を有すると明確に記載されていない1つまたは複数の他のデバイスによって具現化されてもよい。したがって、本発明の他の実施形態は、デバイス自体を含む必要はない。
【0086】
本発明の様々な実施形態の前述の説明は、例証および説明のために提示された。網羅的であること、または開示された正確な形態に本発明を限定することは意図されていない。多くの変更および変形が、上述の教示に照らして可能である。本発明の範囲は、この詳細な説明によってではなく、むしろ添付の特許請求の範囲によって限定されることが意図される。上述の明細書、例、およびデータは、本発明の構成物の製造および使用の完全な説明を提供している。本発明の多くの実施形態は、本発明の範囲から逸脱することなく構成することができるので、本発明は、後に添付した本明細書の特許請求の範囲に存する。