IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マイクロソフト テクノロジー ライセンシング,エルエルシーの特許一覧

特許7586895メモリー・アパーチャのフラッシュ・オーダーを使用したデーター保存
<>
  • 特許-メモリー・アパーチャのフラッシュ・オーダーを使用したデーター保存 図1
  • 特許-メモリー・アパーチャのフラッシュ・オーダーを使用したデーター保存 図2
  • 特許-メモリー・アパーチャのフラッシュ・オーダーを使用したデーター保存 図3
  • 特許-メモリー・アパーチャのフラッシュ・オーダーを使用したデーター保存 図4
  • 特許-メモリー・アパーチャのフラッシュ・オーダーを使用したデーター保存 図5
  • 特許-メモリー・アパーチャのフラッシュ・オーダーを使用したデーター保存 図6
  • 特許-メモリー・アパーチャのフラッシュ・オーダーを使用したデーター保存 図7
  • 特許-メモリー・アパーチャのフラッシュ・オーダーを使用したデーター保存 図8
  • 特許-メモリー・アパーチャのフラッシュ・オーダーを使用したデーター保存 図9
  • 特許-メモリー・アパーチャのフラッシュ・オーダーを使用したデーター保存 図10
  • 特許-メモリー・アパーチャのフラッシュ・オーダーを使用したデーター保存 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-11
(45)【発行日】2024-11-19
(54)【発明の名称】メモリー・アパーチャのフラッシュ・オーダーを使用したデーター保存
(51)【国際特許分類】
   G06F 21/78 20130101AFI20241112BHJP
【FI】
G06F21/78
【請求項の数】 20
(21)【出願番号】P 2022511208
(86)(22)【出願日】2020-06-15
(65)【公表番号】
(43)【公表日】2022-10-24
(86)【国際出願番号】 US2020037681
(87)【国際公開番号】W WO2021034391
(87)【国際公開日】2021-02-25
【審査請求日】2023-06-12
(31)【優先権主張番号】16/546,337
(32)【優先日】2019-08-21
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100118902
【弁理士】
【氏名又は名称】山本 修
(74)【代理人】
【識別番号】100106208
【弁理士】
【氏名又は名称】宮前 徹
(74)【代理人】
【識別番号】100196508
【弁理士】
【氏名又は名称】松尾 淳一
(74)【代理人】
【識別番号】100138759
【弁理士】
【氏名又は名称】大房 直樹
(72)【発明者】
【氏名】ブルス,マリク
(72)【発明者】
【氏名】グエン,トム・エル
(72)【発明者】
【氏名】ラドカニ,ニーラジ
(72)【発明者】
【氏名】マイソール,シャンタマーシー・ラビ
【審査官】▲柳▼谷 侑
(56)【参考文献】
【文献】米国特許出願公開第2015/0106410(US,A1)
【文献】特開2013-047979(JP,A)
【文献】特開2011-005683(JP,A)
【文献】特開2008-262451(JP,A)
【文献】特開2006-277411(JP,A)
【文献】特開2004-080405(JP,A)
【文献】国際公開第2011/007599(WO,A1)
【文献】国際公開第2000/050997(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/14
G06F 21/10
G06F 21/60 - 21/88
(57)【特許請求の範囲】
【請求項1】
コンピューティング・システムにおけるデーター保存サブシステムであって、
アパーチャを有するバッテリー・バックアップ・メモリーであって、前記メモリーは物理アドレス空間においてアドレスされるデジタル・データー格納位置を含み、前記アパーチャは前記デジタル・データー格納位置の少なくとも一部分を含み、前記アパーチャは物理アドレスのフラッシュ・オーダーを有し、前記物理アドレスのフラッシュ・オーダーは、データー完全性の脅威に応答して、前記アパーチャからアパーチャ関連不揮発性ストレージにデーターをコピーする順序であり、前記フラッシュ・オーダーは、前記アパーチャのフラッシュ先端物理アドレス(first-to-flush physical address end)および前記アパーチャのフラッシュ後端物理アドレス(last-to-flush physical address end)を定める、バッテリー・バックアップ・メモリーと、
前記バッテリー・バックアップ・メモリーと動作可能に通信するデーター保存回路であって、データー保存ステップを実行するように構成され、前記データー保存ステップは、
(a)データー集合A-データーを前記アパーチャに格納する要求を受けるステップであって、前記A-データーはクリティカル・データーと指定されたデーターを含む、ステップと、
(b)前記アパーチャの未割り当てメモリーの一部分A-メモリーを識別するステップであって、前記A-メモリーは前記A-データーを保持できるだけ十分に大きく、前記A-メモリーは、前記アパーチャの他のいずれの未割り当てメモリーの他のいずれの物理アドレスよりも前記アパーチャのフラッシュ先端物理アドレスに近い物理アドレスを有する、ステップと、
(c)前記A-メモリーに割り当て済みの印を付け、前記A-データーのコピーを前記A-メモリーに入力するステップと、
(d)データー集合Z-データーを前記アパーチャに格納する要求を受けるステップであって、前記Z-データーは、クリティカル・データーに指定されたデーターを全く含まない、ステップと、
(e)前記アパーチャの未割り当てメモリーの一部分Z-メモリーを識別するステップであって、前記Z-メモリーは前記Z-データーを保持できるだけ十分に大きく、前記Z-メモリーは前記アパーチャの他のいずれの未割り当てメモリーの他いずれの物理アドレスよりも前記アパーチャのフラッシュ後端物理アドレスに近い物理アドレスを有する、ステップと、
(f)前記Z-メモリーに割り当て済みの印を付け、前記Z-データーのコピーを前記Z-メモリーに入力するステップと
を含む、データー保存回路と
を備え、
データー・クリティカル性を考慮せずにデーターを前記バッテリー・バックアップ・メモリーに格納することによるよりも、クリティカル・データーをフラッシュするのに成功し、これによってそれを保存する可能性を高める、
データー保存サブシステム。
【請求項2】
請求項1記載のデーター保存サブシステムにおいて、前記バッテリー・バックアップ・メモリー・アパーチャは、ネットワーク・ノードX内に常駐するか、または、前記ネットワーク・ノードXによって制御され、前記アパーチャにA-データーを格納する前記要求は、異なるネットワーク・ノードYから送られた、データー保存サブシステム。
【請求項3】
請求項2記載のデーター保存サブシステムにおいて、前記ネットワーク・ノードXは、クラウドにおいてストレージ・ノードを含み、前記ネットワーク・ノードYは前記クラウドにおいて計算ノードを含む、データー保存サブシステム。
【請求項4】
請求項2記載のデーター保存サブシステムにおいて、前記ネットワーク・ノードXおよび前記ネットワーク・ノードYは、ストレージ関係Rによって関係付けられ、MがNの代わりにデーターを格納するとき、2つのノードMおよびNがRによって関係付けられるように、Rが定められ、Rは、前記ネットワーク・ノードXおよび前記ネットワーク・ノードYの1対1の関係ではない、データー保存サブシステム。
【請求項5】
請求項1記載のデーター保存サブシステムにおいて、前記バッテリー・バックアップ・メモリーはNVDIMMメモリーを含む、データー保存サブシステム。
【請求項6】
請求項1記載のデーター保存サブシステムにおいて、前記コンピューティング・システムは仮想機械を備え、前記データー集合A-データーは前記データー保存サブシステムに仮想機械VM-Aから送られ、前記データー集合Z-データーは前記データー保存サブシステムに仮想機械VM-Zから送られる、データー保存サブシステム。
【請求項7】
コンピューティング・システムにおけるデーター保存方法であって、
データー集合A-データーをバッテリー・バックアップ・メモリーのアパーチャに格納する要求を受けるステップであって、前記メモリーは物理アドレス空間においてアドレスされるデジタル・データー格納位置を含み、前記アパーチャは前記デジタル・データー格納位置の少なくとも一部分を含み、前記アパーチャは物理アドレスのフラッシュ・オーダーを有し、前記物理アドレスのフラッシュ・オーダーは、データー完全性の脅威に応答して、前記アパーチャからアパーチャ関連不揮発性ストレージにデーターをコピーする順序であり、前記フラッシュ・オーダーは、前記アパーチャのフラッシュ先端物理アドレス(first-to-flush physical address end)および前記アパーチャのフラッシュ後端物理アドレス(last-to-flush physical address end)を定め、前記A-データーはクリティカル・データーと指定されたデーターを含む、ステップと、
前記アパーチャの未割り当てメモリーの一部分A-メモリーを識別するステップであって、前記A-メモリーは前記A-データーを保持できるだけ十分に大きく、前記A-メモリーは、前記アパーチャの他のいずれの未割り当てメモリーの他のいずれの物理アドレスよりも前記アパーチャのフラッシュ先端物理アドレスに近い物理アドレスを有する、ステップと、
前記A-メモリーに割り当て済みの印を付け、前記A-データーのコピーを前記A-メモリーに入力するステップと、
データー集合Z-データーを前記アパーチャに格納する要求を受けるステップであって、前記Z-データーは、クリティカル・データーに指定されたデーターを全く含まない、ステップと、
前記アパーチャの未割り当てメモリーの一部分Z-メモリーを識別するステップであって、前記Z-メモリーは前記Z-データーを保持できるだけ十分に大きく、前記Z-メモリーは前記アパーチャの他のいずれの未割り当てメモリーの他いずれの物理アドレスよりも前記アパーチャのフラッシュ後端物理アドレスに近い物理アドレスを有する、ステップと、
前記Z-メモリーに割り当て済みの印を付け、前記Z-データーのコピーを前記Z-メモリーに入力するステップと
を含み、
前記フラッシュ・オーダーにおいて前記クリティカル・データーを非クリティカル・データーよりも前に前記バッテリー・バックアップ・メモリーに入力することによって、クリティカル・データーをフラッシュするのに成功し、これによってそれを保存する可能性を高める、方法。
【請求項8】
請求項7記載の方法であって、
少なくとも部分的に前記バッテリー・バックアップ・メモリーのバッテリー特性に基づいて前記アパーチャのサイズを決定するステップと、
少なくとも部分的に前記バッテリー・バックアップ・メモリーのバッテリー特性に基づいて、前記アパーチャの位置を決定するステップと、
少なくとも部分的に前記バッテリー・バックアップ・メモリーのバッテリー特性における変化に基づいて、前記アパーチャの大きさを決定し直すステップと、
少なくとも部分的に前記バッテリー・バックアップ・メモリーのバッテリー特性における変化に基づいて、前記アパーチャを移動させるステップと
のうちの少なくとも1つを更に含む方法。
【請求項9】
請求項7記載の方法であって、前記アパーチャの少なくともディフラグ部分をフラッシュ・ディフラグするステップを更に含み、前記ディフラグ部分はクリティカル・データーを含む、方法。
【請求項10】
請求項7記載の方法であって、ワークロードのクリティカル性、仮想機械優先度、または、カスタマー・ステータスという判断基準のうちの少なくとも1つに基づいて、前記A-データーの少なくとも一部分をクリティカル・データーに指定するステップを更に含む方法。
【請求項11】
請求項7記載の方法であって、
前記データー完全性の脅威を検出するステップと、
前記クリティカル・データーの全てを前記アパーチャから前記アパーチャ関連不揮発性ストレージにフラッシュするステップと、
少なくとも一部の非クリティカル・データーを前記アパーチャから前記アパーチャ関連不揮発性ストレージにフラッシュし損なうステップと
を更に含む方法。
【請求項12】
請求項7記載の方法であって、
前記データー完全性の脅威を検出するステップと、
前記クリティカル・データーの少なくとも全てを前記アパーチャから前記アパーチャ関連不揮発性ストレージにフラッシュするステップと、
その後、フラッシュした前記データーの全てを、前記アパーチャ関連不揮発性ストレージから、揮発性メモリーと、前記データーがフラッシュされた元である前記バッテリー・バックアップ・メモリーと、前記データーがフラッシュされた元である前記バッテリー・バックアップ・メモリーとは異なるバッテリー・バックアップ・メモリーとのうちの少なくとも1つに復元するステップと
を更に含む方法。
【請求項13】
請求項7記載の方法であって、前記Z-データーの少なくとも1つのコピーを、前記アパーチャの外部および前記アパーチャ関連不揮発性ストレージの外部に保持するステップを更に含む方法。
【請求項14】
請求項7記載の方法において、前記バッテリー・バックアップ・メモリーのアパーチャは、ここではMで示す物理機械内に常駐し、前記アパーチャに前記A-データーを格納する要求は、ここではNで示す異なる物理機械から送られた、方法。
【請求項15】
請求項7記載の方法であって、前記A-データーを1つのストレージ・ノードのみに格納し、前記Z-データーのコピーを複数のストレージ・ノードに格納するステップを含む方法。
【請求項16】
データーおよび命令を含むよう構成されたコンピューター読み取り可能記憶媒体であって、前記命令は、実行されると、データー保存サブシステムに、コンピューティング・システムにおけるデーター保存のための方法を実行させ、前記方法は、
複数の要求を受けるステップであって、各要求は、それぞれのデーター集合のバッテリー・バックアップ・メモリーのアパーチャにおける格納を求め、前記メモリーは物理アドレス空間においてアドレスされるデジタル・データー格納位置を含み、前記アパーチャは前記デジタル・データー格納位置の少なくとも一部分を含み、前記アパーチャは物理アドレスのフラッシュ・オーダーを有し、前記物理アドレスのフラッシュ・オーダーは、データー完全性の脅威に応答して、前記アパーチャからアパーチャ関連不揮発性ストレージにデーターをコピーする順序であり、前記物理アドレスのフラッシュ・オーダーは、前記アパーチャのフラッシュ先端物理アドレス(first-to-flush physical address end)および前記アパーチャのフラッシュ後端物理アドレス(last-to-flush physical address end)を定め、それぞれのデーター集合の各々は、クリティカル・データーと指定されたデーターを含む、ステップと、
前記要求のうちの少なくとも2つについて、前記アパーチャの未割り当てメモリーのそれぞれの部分を識別するステップであって、未割り当てメモリーの各部分は、前記それぞれのデーター集合を保持できるだけ十分に大きく、未割り当てメモリーの識別された前記それぞれの部分は、前記アパーチャの他のいずれの未割り当てメモリーの他のいずれの物理アドレスよりも前記アパーチャのフラッシュ先端物理アドレスに近い物理アドレスを有する、ステップと、
前記要求のうちの少なくとも1つについて、未割り当てメモリーの識別された前記それぞれの部分に割り当て済みの印を付け、それに前記それぞれのデーター集合のコピーを入力するステップと、
前記データー完全性の脅威を検出するステップと、
前記アパーチャにコピーされた前記クリティカル・データーの全てを前記アパーチャから前記アパーチャ関連不揮発性ストレージにフラッシュするステップと
を含み、これによって、前記方法は、前記データー完全性の脅威にもかかわらず、前記アパーチャにコピーされた前記クリティカル・データーの全てを保存する、コンピューター読み取り可能記憶媒体。
【請求項17】
請求項16に記載のコンピューター読み取り可能記憶媒体において、前記方法は、アパーチャ・サイズとアパーチャ・アドレスとのうちの少なくとも一方を特定するステップを更に含み、特定する前記ステップは、バッテリー容量と、バッテリーの経年数と、バッテリーの信頼性値とのうちの少なくとも1つに基づく、コンピューター読み取り可能記憶媒体。
【請求項18】
請求項16に記載のコンピューター読み取り可能記憶媒体において、フラッシュする前記ステップは、統一拡張可能ファームウェア・インターフェースを有するファームウェアを実行するステップを含む、コンピューター読み取り可能記憶媒体。
【請求項19】
請求項16に記載のコンピューター読み取り可能記憶媒体において、前記方法は、クリティカル・データーに指定されていないデーターを保持するために、前記アパーチャの少なくとも10パーセントを予約するステップを更に含む、コンピューター読み取り可能記憶媒体。
【請求項20】
請求項16に記載のコンピューター読み取り可能記憶媒体において、前記方法は、
クリティカル・データーと指定されたデーターのための空間を作るために、クリティカル・データーと指定されていないデーターを、前記アパーチャ―の外部の格納位置に移動するステップと、
前記アパーチャの少なくとも一部分をディフラグし、これによって、前記アパーチャの2つの割り当て部分の間に位置していた未割り当て部分を削減するか又は消滅させるステップと
のうちの少なくとも1つを更に含む、コンピューター読み取り可能記憶媒体。
【発明の詳細な説明】
【背景技術】
【0001】
[0001] システム・アーキテクト、およびコンピューティング・システムを設計、実装、修正、または最適化する他の人々は、データー・ストレージの選択が多くの場合トレードオフを伴うことを認識している。例えば、一部のダイナミック・ランダム・アクセス・メモリー・デバイスのような、ディジタル・データーを格納することができるデバイスの中には、比較的速いデーター格納動作をサポートするが、停電の場合データーを信頼性高く保持できないものがある。これらのデバイスを一般に「揮発性」記憶デバイスと呼ぶ。容量、コスト、期待動作寿命(working life)、動作速度、交換の難度、電気的要件、およびハードウェアまたはソフトウェア規格もしくはベスト・プラクティスとの互換性というような、異なる技術的特性を有する揮発性記憶デバイスが多数存在する。電気機械式ハード・ディスク・ドライブおよびソリッド・ステート・ドライブというような他のデーター記憶デバイスは、電源を遮断した後でも、データー値を信頼性高く保持する。これらのデバイスを一般に「不揮発性」記憶デバイスと呼ぶ。この場合もまた、異なる技術的特性を有する不揮発性記憶デバイスが多く存在する。
【0002】
[0002] したがって、システム・アーキテクトおよび入手可能な記憶メカニズムと手順との間で選択しなければならない他の人々は、過度に多い数の記憶デバイスの選択肢に直面し、技術の選択肢とシステム性能、コスト、利便性、信頼性、および他の特性との間には、多くの相互依存するトレードオフがある。したがって、複雑さを減らし、予測可能性を高めるためには、特定の性能仮定(performance assumption)、目標、または知見に的を絞り、ストレージ・アーキテクチャの選択肢を狭めて優先順位を付けることが有用であろうが、真剣な検討が必要となる。
【発明の概要】
【0003】
[0003] 本文書において説明する実施形態の中には、特に、仮想機械を実行するクラウドのような、ネットワーク型マルチモード環境において、改良されたデーター保存ツールおよび技法を提供するものがある。ある実施形態では、バッテリー・バックアップされたメモリー・アパーチャのフラッシュ・オーダーに基づいて、更にバッテリー特性についての関連情報に基づいて、メモリー割り当てを行うことによって、クリティカル・データーを失う危険性を減らす。このようなストレージ割り当ても、データーの完全性を損なうことなく、データー冗長性要件を低下させることができる。
【0004】
[0004] ある実施形態では、コンピューティング・システムは、アパーチャを有しバッテリー・バックアップされたメモリーを含むデーター保存サブシステムを有する。アパーチャはフラッシュ・オーダーを有する。フラッシュ・オーダーとは、停電またはリブートのようなデーター完全性の脅威に応答して、アパーチャからアパーチャ関連不揮発性ストレージ(aperture-associated non-volatile storage)にデーターをコピーする順序である。フラッシュ・オーダーは、アパーチャのフラッシュ先端(first-to-flush end)およびアパーチャのフラッシュ後端(last-to-flush end)を定める。
【0005】
[0005] この例では、データー保存回路が、動作可能にバッテリー・バックアップ・メモリーと通信する。データー保存回路は、プロセッサーとファームウェアとを含み、データー保存ステップを実行するように構成することができる。この例では、これらのデーター保存ステップは、以下を含んでもよい。
(a)データー集合A-データーをアパーチャに格納する要求を受けるステップ。A-データーはクリティカル・データーと指定されたデーターを含む。(b)アパーチャの未割り当てメモリーの一部分A-メモリーを識別するステップ。A-メモリーはA-データーを保持できるだけ十分に大きく、A-メモリーは、アパーチャの他のいずれの未割り当てメモリーの他のいずれのアドレスよりもアパーチャのフラッシュ先端に近いアドレスを有する。(c)A-メモリーに割り当て済みの印を付け、A-データーのコピーをA-メモリーに入力するステップ。これらのステップ(a)~(c)は、クリティカル・データーを収容するそれぞれの異なるデーター集合の分だけ、複数回繰り返すことができる。
【0006】
[0006] この例では、データー保存ステップは、以下も含んでもよい。
(d)データー集合Z-データーをアパーチャに格納する要求を受けるステップ。Z-データーは、クリティカル・データーに指定されたデーターを全く含まない。(e)アパーチャの未割り当てメモリーの一部分Z-メモリーを識別するステップ。Z-メモリーはZ-データーを保持できるだけ十分に大きく、Z-メモリーは、アパーチャの他のいずれの未割り当てメモリーの他いずれのアドレスよりもアパーチャのフラッシュ後端に近いアドレスを有する。(f)Z-メモリーに割り当て済みの印を付け、Z-データーのコピーをZ-メモリーに入力するステップ。これらのステップ(d)~(f)は、クリティカル・データーを収容しないそれぞれの異なるデーター集合の分だけ繰り返すことができ、クリティカル・データーだけが格納されているときは省略してもよい。
【0007】
[0007] ラベル(a)~(f)は、ここでは単なる識別子として役割を果たすに過ぎず、必ずしも動作の順序を指定する訳ではない。実例をあげると、いずれのA-データーを格納する前でも、Z-データーをアパーチャに格納してもよい。
【0008】
[0008] このコンテキストでは、データー保存サブシステムの一例は、データー・クリティカル性を考慮せずにデーターをバッテリー・バックアップ・メモリーに格納するのではなく、フラッシュ-オーダーにおいて、クリティカル・データーを非クリティカル・データーに先立ってバッテリー・バックアップ・メモリーに入力することによって、クリティカル・データーをフラッシュするのに成功し、これによってそれを保存する可能性(likelihood)を高める。脅威を受けたコンピューティング・システムの外部にクリティカル・データーの複製または他の冗長コピーを維持するというような、データー保存の代替形態は、本明細書において説明するデーター保存サブシステムの能力(capabilities)を考慮すれば、削減するまたは不要にすることができる。
【0009】
[0009] 動作において、本明細書において説明するデーター保存のある実施形態は、複数の要求を受け、各要求が、バッテリー・バックアップ・メモリーのアパーチャ内へのそれぞれのデーター集合の格納を求める。アパーチャはフラッシュ・オーダーを有する。フラッシュ・オーダーとは、データー完全性の脅威に応答して、アパーチャからアパーチャ関連不揮発性ストレージにデーターをコピーする順序である。フラッシュ・オーダーは、アパーチャのフラッシュ先端とアパーチャのフラッシュ後端とを定める。この例では、それぞれのデーター集合は、各々、クリティカル・データーに指定されたデーターを含む。要求の内少なくとも2つについて、この実施形態は、アパーチャの未割り当てメモリーのそれぞれの部分を識別し、未割り当てメモリーの各部分は、それぞれのデーター集合を保持できるだけ十分に大きい。識別された未割り当てメモリーのそれぞれの部分は、アパーチャの他のいずれの未割り当てメモリーの他いずれのアドレスよりもアパーチャのフラッシュ先端に近いアドレスを有する。要求の内少なくとも1つについて、この実施形態は、識別した未割り当てメモリーのそれぞれの部分に割り当て済みの印を付け、その中にそれぞれのデーター集合のコピーを入力する。
【0010】
[0010] この例を続けると、少なくとも1つのクリティカル・データーを格納した後のある時点において、この実施形態はデーター完全性の脅威を検出する。例えば、近づきつつあるリブート、または差し迫った外部電源の停電と言った、結果的にバッテリー電力への切り替えが起こる脅威を検出する。この脅威の検出に応答して、この実施形態は、アパーチャにコピーされたクリティカル・データーの全てをフラッシュすることによって、そのクリティカル・データーをアパーチャから不揮発性ストレージにコピーする。このフラッシュによって、アパーチャにコピーされたクリティカル・データーの全てを保存し、したがって、アパーチャの範囲外にデーターの冗長コピーを有することにも、その不揮発性バックアップ・メモリーにも全く頼ることなく、クリティカル・データーを保存する(そしてできる限り非クリティカル・データーの一部または全部も保存する)。
【0011】
[0011] 本明細書における教示に関連する他の技術的活動および特性も、当業者には明白になるであろう。示した例は単なる例示に過ぎない。この摘要は、特許請求する主題の主要な特徴または必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を限定するために使用することを意図するのでもない。逆に、この摘要は、詳細な説明において以下で更に説明するいくつかの技術的概念を、簡略化した形態で紹介するために設けられている。技術革新(innovation)は、請求項によって適正に理解される通りに定められ、この摘要が特許請求の範囲と矛盾する場合、特許請求の範囲を優先する。
【図面の簡単な説明】
【0012】
[0012] 添付図面を参照しながら、更に特定的な説明を行う。これらの図面は、選択した態様を図示するに過ぎず、したがって適用範囲即ち特許請求の範囲を余すところなく断定するのではない。
図1】コンピューター・システム全体を示し、更に構成された記憶媒体全体も示すブロック図である。
図2】計算ノードと少なくとも1つのストレージ・ノードとを含む環境を示すブロック図である。
図3】あるコンピューティング環境のある態様を示すブロック図である。
図4】データー保存機能が構成されたシステムの態様を示すブロック図である。
図5】バッテリー特性のいくつかの例を示すブロック図である。
図6】データー・クリティカル性の判断基準のいくつかの例を示すブロック図である。
図7】あるコンピューティング・システムのある例を示すブロック図である。
図8】様々な仮想機械を有し(bear)、バッテリー・バックアップ・メモリー・アパーチャを有する様々なストレージ・ノードと共にネットワークを組む計算ノードを示すアーキテクチャ図である。
図9】様々な仮想機械を実行し、ストレージ・バックアップ・メモリー・アパーチャ(storage-backed memory aperture)を使用するオペレーティング・システムを示すアーキテクチャ図である。
図10】あるデーター保存方法におけるステップを示すフローチャートである。
図11】あるデーター保存方法におけるステップを更に示すフローチャートである。
【発明を実施するための形態】
【0013】
[0024] 全体像
[0025] 技術革新はそれらの原点を超えて拡大することができるが、技術革新の 原点を理解すると、一層深くその技術革新の真意を認めるのに役立つことができる。本願の場合、本明細書において説明する教示は、機械学習用のビッグ・データーを格納するという技術的課題が動機となった。もののインターネット・デバイスは、データーを大量にそして高速(rapid rate)で産出し(pump out)、機械学習ツールおよび技法は、このデーターの洪水を有益な方法で処理できる場合もある。ある機械学習データーベースは、何百万ものレコードを実際のデーターベース内に含み、したがって高い読み取り速度が重要となる。大量のデーターが関与するにも拘わらず、個々のデーターに対する不正な意図的変更は望ましくないという意味、そしてリブートまたは予期されない停電によって起こるデーター変化は望ましくないという意味の双方で、データーの完全性も重要である。
【0014】
[0026] また、この動機付けになる状況(motivational situation)では、他の要因も役割を果たす。具体的には、コストについての懸念が、全てのデーターをNVDIMMまたは同様のバッテリー・バックアップされた高速ランダム・アクセス・メモリーに単純に入力することを諦めさせるか、または躊躇させる。全てのデーターをNVDIMMに入力することが可能であっても、バッテリーの故障によって生ずるデーター完全性に対する危険性には対応しない(address)。バッテリー・バックアップは、例えば、ハード・ディスクまたはDVDまたはテープ、若しくは何らかの同様の不揮発性媒体上における格納程信頼性は高くない。バッテリーの寿命は、時間の経過と共に変化する。安全性向上のためにデーターを複数のNVDIMMデバイスに跨がって複製することも考えられるが、この場合もコストが重要な要因となる。更にまた、データー完全性に対する容認可能な危険性のレベルは、常に一定であるという訳ではない。例えば、カスタマーが異なれば、異なるサービス品質保証(SLA:Service Level Agreement)または他のサービス目標もしくは保証を求める(have)のはもっともである。
【0015】
[0027] 端的に言うと、本明細書において説明するいくつかのデーター保存ツールおよび技法は、大量の機械学習データーの集合を保存する取り組みにおいて表出した技術的課題がある程度動機付けになった。しかしながら、本明細書において提供する教示は、多くの他の技術的シナリオにも同様に、有益な応用可能性を有することは、当業者には認められよう。
【0016】
[0028] 本明細書において説明するある実施形態は、完全性の脅威に対抗してデーターを保存するために、動作ステップとデバイス特性との組み合わせを実装する。カスタマー要件、ワークロード・クリティカル性、または仮想機械のクリティカル性というような判断基準に基づいて、データーをクリティカル・データーおよび非クリティカル・データーに分割する。クリティカル・データーは、バッテリー・バックアップ・メモリーの物理アドレスに格納され、非クリティカル・データーに先立ってフラッシュされる。ある実施形態では、バッテリーの電力が、クリティカル・データーおよび非クリティカル・データーの双方を安全にフラッシュするのに十分でない危険性を認識し、例えば、非クリティカル・データーが時間内にフラッシュされない場合に備えて、非クリティカル・データーの冗長コピーを保持することによって、この危険性に取り組む。バッテリー・バックアップ・メモリーのアパーチャは、バッテリーの特性にしたがって大きさが決められ、条件が変化するに連れて、大きさを変更することもできる。アパーチャの使用を最適化するために、特に、クリティカル・データーを保持する部分内において、ディフラッギング(degragging)を実行する。革新的なデーター保存の他の態様についても、本明細書において論ずる。
【0017】
[0029] 本明細書において説明する実施形態は、人によっては、より広いコンテキストで見ることもできる。実例をあげると、割り当て、データー、順序、電力、保存、および要求というような概念は、特定の実施形態に関連すると見なすこともできる。しかしながら、広いコンテキストの利用可能性から、本明細書において抽象的な理念に対して排他的権利を求める訳ではなく、これらを求めてはいない。むしろ、本開示は、NVDIMMのコストをサービス品質保証データー可用性要件に対してどのように釣り合わせるかというような、特定の技術的問題を完全にまたは部分的に解決する技術的効果を有するように、しかるべく具体化した実施形態を提供することに絞る。他の構成された記憶媒体、システム、および割り当て、データー、オーダー、電力、保存、または要求を伴うプロセスは、本願の範囲には入らない。したがって、本開示を正しく理解することによって、曖昧さ、単なる抽象性、技術的特徴(character)の欠如、および付随する証明問題も回避される。
【0018】
[0030] 更に一般的には、本開示のあらゆる部分、または本明細書におけるあらゆる特定の詳細が、必ずしも、実施可能性、書面による説明、または最良の態様というような法的判断基準を満たさなければならないのではないことは、当業者には認められよう。また、実施形態は、特定の動機付けになる例、要求、応答、オペレーティング・システムまたは他のカーネル、ソフトウェア開発環境、インターフェース規格、ソフトウェア・プロセス、開発ツール、識別子、ファイル、データー構造、表記、制御フロー、擬似コード、命名規則、ノード・アーキテクチャ、または本明細書において説明する他の実施態様選択肢には限定されない。他のいずれの特許開示との明らかな矛盾は、本技術革新の所有者からであっても、本開示において提示する特許請求の範囲を解釈するには全く役に立たない。
【0019】
[0031] 技術的特徴
[0032] 本明細書において説明する実施形態の技術的特長は、当業者には明白であろう。そして、広い範囲の注意深い読者にも幾通りもの方法で明白になるであろう。ある実施形態は、メモリー割り当て、揮発性ストレージから不揮発性ストレージへのデーターのフラッシュ、バッテリー特性に基づくメモリー・アパーチャのサイズ決定またはサイズ決定し直し、およびメモリーのディフラッギングというような、各々、コンピューティング技術に深く根付いた技術的活動に取り組む。論ずる技術的メカニズムの一部には、例えば、NVDIMMまたは他のバッテリー・バックアップ・メモリー、統一拡張可能ファームウェア・インターフェース(Unified Extensible Firmware Interface)、計算ノード、ストレージ・ノード、メモリー・マップ、フラッシュ・オーダー、および仮想機械が含まれる。論ずる技術的効果の一部には、例えば、クリティカル・データーが完全性の脅威に対抗して保存される可能性を高めること、データー保存を行うためのデーター冗長性依拠を減らすこと、バッテリー特性および非クリティカル・データーのために確保するメモリー量というような判断基準を考慮してバッテリー・バックアップ・メモリーのアパーチャのサイズを効率的に決定することが含まれる。つまり、純粋に心理的なプロセスは、明確に除外される。ある実施形態は、NVDIMMコスト、カスタマー・サービス品質保証要件、およびデーター冗長性のためのノード・ストレージの可用性というような判断基準の均衡を取りながら、完全性の脅威に対抗してデーターを保存することによって、コンピューティング・システムおよびサービスの機能(functioning)を改善する。本教示の技術特性に基づく他の利点も、提示する説明から、当業者には明白になるであろう。
【0020】
[0033] 頭字語、省略、名称、および記号
[0034] 一部の頭字語、省略、名称、および記号について、以下に定義する。他のものは、本明細書の他の場所で定義されるか、または当業者が理解するために本明細書における定義が必要ないものである。
【0021】
[0035] ACPI:高度構成および電力インターフェース
[0036] ALU:算術演算および論理ユニット
[0037] API:アプリケーション・プログラム・インターフェース
[0038] BIOS:基本入力/出力システム
[0039] BMC:ベースボード管理コントローラ
[0040] CD:コンパクト・ディスク
[0041] CPU:中央処理ユニット
[0042] EFI:拡張可能ファームウェア・インターフェース
[0043] DRAM:ダイナミック・ランダム・アクセス・メモリー
[0044] DVD:ディジタル・バーサタイル・ディスクまたはディジタル・ビデオ・ディスク
[0045] FPGA:フィールド・プログラマブル・ゲート・アレイ
[0046] FPU:浮動小数点処理ユニット
[0047] GPU:グラフィカル処理ユニット
[0048] GUI:グラフィカル・ユーザー・インターフェース
[0049] HDD:ハード・ディスク・ドライブ(例えば、ソリッド・ステート、電気機械、光学)
[0050] IaaSまたはIAAS:サービスとしてのインフラストラクチャ
[0051] ID:識別または識別情報(identity)
[0052] IoT:もののインターネット
[0053] LA N:ローカル・エリア・ネットワーク
[0054] N V D I M M:不揮発性デュアル・インライン・メモリー・モジュール
[0055] N V M e:不揮発性メモリー・エクスプレス
[0056] O S:オペレーティング・システム
[0057] P a a SまたはP A A S:サービスとしてのプラットフォーム
[0058] R A M:ランダム・アクセス・メモリー
[0059] R O M:リード・オンリー・メモリー
[0060] S A T A:シリアルA T A(コンピューター・バス・インターフェース)
[0061] S L A:サービス品質保証
[0062] S M M:システム管理モード
[0063] T C P/I P:送信制御プロトコル/インターネット・プロトコル
[0064] U E F I:統一拡張可能ファームウェア・インターフェース
[0065] V M:仮想機械
[0066] W A N:ワイド・エリア・ネットワーク
[0067] いくつかの追加の用語
【0022】
[0068] 本明細書では、図面に示すような例示的実施形態(exemplary embodiment)を参照し、これらを説明するために、本明細書では、具体的な文言を使用する。しかし、本明細書において例示される特徴の変更(alteration)および更に他の修正(modification)、ならびに本明細書における特定実施形態によって例示される抽象的原理の他の技術的応用も、関連技術(1つまたは複数)に習熟し本開示を入手できるものには想起され、特許請求の範囲内に該当すると見なされて当然である。
【0023】
[0069] 本開示において、用語の意味が明確化されるので、特許請求の範囲は、これらの明確化に対して細心の注意を払って、読解されてしかるべきである。具体的な例をあげるが、関連技術(1つまたは複数)に習熟する者には、他の例も、使用される用語の意味に当てはまり、1つ以上の請求項の範囲内に該当する場合もあることが理解されよう。用語は、本明細書では、これらが一般的な使用(特に、技術以外での使用)において有する意味、特定業界の使用における意味、または特定の辞書もしくは1組の辞書において有する意味とは、必ずしも同じ意味を有するとは限らない。用語の深さを示すのに役立つように、種々の言葉使いと共に参照番号を使用する場合もある。所与のテキストにおいて参照番号が抜けていても、必ずしも、図の内容がそのテキストによって論じられていないことを、意味するのではない。本発明者は、特定のそして選択された辞書編纂に対する権利を主張し行使する。引用符合が付いた用語は、明示的に定義されているが、引用符合を使用せずに、用語を暗示的に定義する場合もある。本明細書の詳細な説明においておよび/または出願申請書内のどこかで、明示的または暗示的に用語を定義することもできる。
【0024】
[0070] 本明細書において使用する場合、「コンピューター・システム」(computer system)(別名「コンピューティング・システム」(computing system)は、例えば、1つ以上のサーバー、マザーボード、処理ノード、ラップトップ、タブレット、パーソナル・コンピューター(携帯用またはそれ以外)、パーソナル・ディジタル・アシスタント、スマートフォン、スマートウォッチ、スマートバンド、携帯電話または移動体電話、少なくともプロセッサーとメモリーとを有する他の移動体デバイス、ビデオ・ゲーム・システム、拡張現実システム、ホログラフィ投影システム、テレビジョン、ウェアラブル・コンピューティング・システム、および/または少なくとも部分的に命令によって制御される1つ以上のプロセッサーを備えた(provide)他のデバイス(1つまたは複数)を含むことができる。命令は、ファームウェアの形態、あるいはメモリーおよび/または特殊回路における他のソフトウェアの形態であってもよい。
【0025】
[0071] 「マルチスレッド型」(multithreaded)コンピューター・システムとは、複数の実行スレッドをサポートするコンピューター・システムのことである。「スレッド」(thread)という用語は、スケジューリングが可能なコード、またはスケジューリングおよびおそらくは同期を受けるコードを含むように理解されてしかるべきである。スレッドは、本開示以外では、例えば、「タスク」(task)、「プロセス」(process)、または「コルーチン」(coroutine)のような、他の名称で知られている場合もある。しかしながら、本明細書では、スレッドはプロセス内部において実行パスを定義するとして、スレッドとプロセスとの間で区別することとする。また、プロセスのスレッドは、所与のアドレス空間を共有するが、異なるプロセスは異なるそれぞれのアドレス空間を有する。プロセスのスレッドは、並列に、順次、または並列実行および順次実行の組み合わせで(例えば、タイムースライス状)実行することができる。
【0026】
[0072] 「プロセッサー」(processor)とは、同時マルチスレッディング実施態様におけるコアのような、スレッド処理ユニットである。プロセッサーは、ハードウェアを含む。所与のチップは、1つ以上のプロセッサーを保持することができる。プロセッサーは汎用でもよく、またはベクトル処理、グラフィクス処理、信号処理、浮動小数点算術処理、暗号化、I/O処理、機械学習等のような、特定の使用に合わせて個別に製造することもできる。
【0027】
[0073] 「カーネル」(kernel)は、オペレーティング・システム、ハイパーバイザー、仮想機械、B I O SまたはU EF Iコード、および同様のハードウェア・インターフェース・ソフトウェアを含む。
【0028】
[0074] 「コード」(code)とは、プロセッサー命令、データー(定数、変数、およびデーター構造を含む)、または命令およびデーターの双方を意味する。「コード」および「ソフトウェア」は、本明細書では相互交換可能に使用される。実行可能コード、インタプリター・コード、およびファームウェアはコードのいくつかの例である。
【0029】
[0075] 「プログラム」(program)は、本明細書では広く使用され、アプリケーション、カーネル、ドライバー、割り込みハンドラー、ファームウェア、状態機械、ライブラリー、ならびにプログラマー(開発者とも呼ばれる)によって書かれたたおよび/または自動的に生成された他のコードを含む。
【0030】
[0076] 「サービス」(service)とは、クラウド・コンピューティング環境、あるいは他のネットワークまたはコンピューティング・システム環境における、消費可能なプログラムの提供を意味し、リソースまたはリソースへのアクセスを複数のプログラムに提供する。
【0031】
[0077] 「クラウド」(cloud)とは、従量制オンデマンド・サービスに柔軟に利用可能な、コンピューティング、ストレージ、およびネットワーキングのために蓄えられた(pooled)リソースを意味する。クラウドは、プライベート、パブリック、コミュニティ、またはハイブリッドでもよく、クラウド・サービスは、サービスとしてのインフラストラクチャ(IaaS)、サービスとしてのプラットフォーム(PaaS)、サービスとしてのソフトウェア(SaaS)、または他のサービスの形態で提供することができる。特に明記しない限り、ファイルからの読み取りまたはファイルへの書き込みについての論述はいずれも、ローカル・ファイルの読み取り/書き込み、またはクラウド・ネットワークもしくは他のネットワークでもよいネットワークを通じた読み出し/書き込み、あるいは双方(ローカルおよびネットワークを通じた読み取り/書き込み)を行うことも含んでもよい。
【0032】
[0078] 「IoT」即ち「もののインターネット」とは、アドレス可能な埋め込みコンピューティング・ノードのあらゆるネットワーク状集合体を意味する。このようなノードは、本明細書において定義するようなコンピューター・システムの例であるが、これらは以下の特性の内少なくとも2つも有する。(a)ローカルでない、人が読み取ることができるディスプレイ、(b)ローカルでないキーボード、(c)入力の主要なソースが、非言語データーのソースを追跡するセンサーである。(d)ローカルでない回転ディスク・ストレージ-RAMチップまたはROMチップが、ローカルのみのメモリーを提供する。(e)CDまたはDVD以外のドライブ、(f)家庭用器具または家庭用備品における埋め込み、(g)植え込み型医療デバイスまたはウェアラブル医療デバイスにおける埋め込み、(h)車両における埋め込み、(i)プロセス自動制御システムにおける埋め込み、または(j)以下の内1つに的を絞った設計:環境監視、都市インフラストラクチャ監視、工業用機器監視、エネルギー使用監視、人間もしくは動物の健康監視、物理的安全保護、もしくは物理輸送システム監視。IoTストレージは、クラウドを通じた不正アクセス、または他のネットワークを通じた不正アクセス、または直接的な局所アクセス試行による不正アクセスの標的となるおそれがある。
【0033】
[0079] 状況によっては、例えば、秘匿性-完全性-可用性(confidentiality-integrity-availability)の3要素(triad)から成るサイバーセキュリティについての議論の中では、「データー可用性」の意味と「データー完全性」の意味との間で、区別するのはもっともである。しかし、本明細書において使用する場合、「データー完全性」とは、データーにアクセスできること、および正しい値を有するデーターにアクセスできることの双方を包含することを意味する。つまり、記憶デバイスの電力停止、値の上書き、不可逆的な暗号化または符合化または圧縮、改竄、見当違い(misplacement)、スクランブリング、アクセス不可、およびデーター値不確定性は全て、データー完全性に対する脅威の例である。
【0034】
[0080] 特に明示的に述べない限り、本明細書において使用する場合、「ディフラグ」(degrag)とはフラッシュ・ディフラグのことを指す(「ディフラグ」は「ディフラグメント」(defragment)の省略形である)。フラッシュ・ディフラグとは、アパーチャのフラッシュ先端近くにおいて未割り当てメモリーの量を削減する、または未割り当てメモリーのアパーチャのフラッシュ先端からの距離を延長させる、または双方を行う処理である。フラッシュ・ディフラグは、例えば、データーをコピーする、またはデーターを移動させる、または未だ割り当てられていないメモリーにデーターを挿入することを伴う場合もある。
【0035】
[0081] 「フラッシュ・ディフラグ」が「統合ディフラグ」(consolidation defrag)と異なるのは、これらが異なる目標を有することである。フラッシュ・ディフラグは、クリティカル・データーのフラッシングを非クリティカル・データーのフラッシング、または未割り当てメモリー内にあるガベージもしくは無関係データーのフラッシングよりも優先するという目標を有する。統合ディフラグは、対照的に、使用するためにストレージから、特に、回転ディスク・プラッターからまたはテープから、データーを引き出すために要する時間を短縮するという目標を有する。統合ディフラグは、特定の所有者に属するデーター全て、例えば、特定のファイル内にあるデーター全てを纏めようとする。これらは同等の処理ではない。
【0036】
[0082] 例えば、AまたはBは、それぞれ、AまたはBが所有するクリティカル・データーを表すとし、下線はメモリーにおける未割り当て空間を表すとし、メモリー・アパーチャの境界(bounds)は中括弧(curly braces)によって表すとする。すると、{ABA_}から{AAB_}への変化は、統合ディフラグであり、フラッシュ・ディフラグではない。また、{A_B_}から{AB__}への変化は、フラッシュ・ディフラグであり(フラッシュ先端が左端である場合)、統合ディフラグではない。
【0037】
[0083] 本明細書において使用する場合、「含む」(include)は、特に明記しない限り、追加のエレメントを許容する(即ち、含む(include)は備える(comprise)を意味する)。
【0038】
[0084] 「最適化する」(optimize)は、必ずしも完璧にではないが、改良することを意味する。例えば、最適化されているプログラムまたはアルゴリズムにおいて更に改良することも可能な場合もある。
【0039】
[0085] 「プロセス」(process)は、コンピューティング・サイエンス技術の用語として、本明細書においてときどき使用され、その技術的意味では、計算リソース・ユーザー(computational resource user)を包含する。また、計算リソース・ユーザーは、例えば、コルーチン、スレッド、タスク、割り込みハンドラー、アプリケーション・プロセス、カーネル・プロセス、手順、またはオブジェクト・メソッドも含んでもよく、またはこのように呼んでもよい。実際には、「プロセス」とは、Windows(登録商標) Task Manager、Linux(登録商標)ps、または他のオペレーティング・システム環境における同様のユーティリティ(それぞれ、Microsoft Corporation、Linus、Torvaldsの商標)のようなシステム・ユーティリティによって識別される計算エンティティである。また、「プロセス」は、本明細書において、例えば、システムの請求項または製品(構成された記憶媒体)の請求項の対語として 、プロセスの請求項を記載するときに、特許法の技術用語としても使用される。同様に、「方法」(method)は、本明細書では、コンピューティング・サイエンス技術における技術用語として(「ルーチン」の一種)、また特許法の技術用語(「プロセス」)としても使用されることがある。「プロセス」および「方法」は、特許法の意味では、本明細書においては相互交換可能に使用される。尚、当業者であれば、どちらの意味が特定の場合において意図されているか理解でき、更に所与の特許請求されるプロセスまたは方法(特許法の意味)は、1つ以上のプロセスまたはメソッド(コンピューティング・サイエンスの意味)を使用して実装されてもよいことも理解されよう。
【0040】
[0086] 「自動的に」(automatically)は、自動化を用いないことの対語として、自動化の使用によることを意味する(例えば、本明細書において論ずる特定の動作および技術的効果を求めるためにソフトウェアによって構成された汎用コンピューティング・ハードウェア)。具体的には、「自動的に」実行されるステップは、手作業で紙面上で実行されるのでも、人間の思考において実行されるのでもないが、人間によって開始されても、または人間によって対話処理で誘導されてもよい。自動ステップは、このように提供される技術的相互作用がなくては実現されない1つ以上の技術的効果を得るために、機械によって実行される。
【0041】
[0087] 当業者には、技術的効果は技術的実施形態の推定上の目的であることが理解されよう。例えば、ある実施形態は計算を伴うが、いくつかの計算は技術的コンポーネント(例えば、紙と鉛筆によって、または精神的処理過程としてであっても)がなくても実行できるという単なる事実は、技術的効果の存在を取り除くことはなく、その実施形態の具体的および技術的な性質を変化させることもない。未割り当てメモリーを特定する、データーをメモリーにコピーする、メモリーに割り当て済みの印を付ける、揮発性ストレージから不揮発性ストレージにデーターをフラッシュする、および本明細書において論ずる多くの他の動作というような、データー保存動作は本質的にディジタルであると考えられている。人間の精神は、必要なデーターを読み取りおよび書き込み、本明細書において教示されるデーター保存ステップを実行するために、直接CPUまたは他のプロセッサーとも、あるいはRAMまたは他のディジタル・ストレージともインターフェースすることはできない。このことは、当業者であれば、本開示を考慮して全て十分に理解されようが、他の人々にはこれを知らせなければならない、または気付かせなければならない場合もある。
【0042】
[0088] 「計算的に」(computationally)も同様に、コンピューティング・デバイス(少なくともプロセッサー+メモリー)が使用されていることを意味し、単に人間の思考または単なる人間の行動だけによって結果を得ることを除外する。例えば、紙と鉛筆で算術演算を行うことは、本明細書においては理解されるように、計算的に算術演算を行っていることにはならない。計算結果は、より速く、より広く、より深く、より精度高く、より一貫性があり、より総合的であり、および/またはそれ以外で人間の処理能力(performance)のみの範囲を超える技術的効果を提供する。「計算ステップ」(computational step)とは、計算的に実行されるステップである。「自動的に」も「計算的に」も、必ずしも「直ちに」を意味しない。「計算的に」および「自動的に」は、本明細書では相互交換可能に使用される。
【0043】
[0089] 「積極的に」(proactively)は、ユーザーからの直接的な要求を伴わないことを意味する。実際に、実施形態による積極的なステップが、そのステップの結果がユーザーに提示されるまで、可能であることに、ユーザーが気が付かないことさえもある。特に明記しない限り、本明細書において説明する計算および/または自動ステップはいずれも、積極的に行うことができる。
【0044】
[0090] この文書全体を通じて、随意の複数「(1つまたは複数)」(s),(es)または (ies)の使用は、示された特徴(feature)が1つ以上存在することを意味する。例えば、「プロセッサー(1つまたは複数)」は、「1つ以上のプロセッサー」または同等に「少なくとも1つのプロセッサー」を意味する。
【0045】
[0091] 米国の法律および慣行に限って言えば、本明細書、特許請求の範囲、または他の場所における「ステップ」(step)という単語の使用は、ミーンズ・プラス・ファンクション、ステップ・プラス・ファンクション、または35米国特許法第112条第6項/第112(f)条の請求項の解釈を引き合いに出すことを意図するのではない。その主旨の仮定はいずれも、これによって明示的に反証される。
【0046】
[0092] 米国の法律および慣行に限って言えば、請求項は、これらが「ための手段」(means for)という語句を使用していなければ、ミーンズ・プラス・ファンクションの解釈を引き合いに出すことを意図していない。ミーンズ・プラス・ファンクションの文言として解釈されるように意図された請求項の文言がある場合はいずれも、「ための手段」(means for)という語句を使用することによって、その意図を明示的に記載する。ミーンズ・プラス・ファンクションの解釈が適用されるとき、「ための手段」の使用によるか、および/または請求項の文言の裁判所の法的解釈によるかには関係なく、所与の名詞または所与の動詞について明細書において記載される手段は、その請求項の文言に結び付けられ、更に、図面におけるブロック図の同じブロック内に現れること、同じまたは同様の名称による指定、同じ参照番号による指定(denotation)、図のいずれかにおいて表される機能的関係、本開示の本文において指摘される機能的関係の内任意のものによって、本明細書では一緒に結び付けられると理解されてしかるべきである。例えば、請求項の限定が「ザック・ウィジェット」(zac widget)を記載し、この請求項の限定がミーンズ・プラス・ファンクションの解釈の対象となる場合、あらゆる図のブロック、段落、あるいは「ザック・ウィジェット」について述べる例、またはザック・ウィジェットに割り当てられたあらゆる参照番号によって一緒に結び付けられる例、またはザック・ウィジェットの構造または動作と機能的関係を有するものとして開示される例において、本明細書のいずれかのところで識別される全ての構造は、少なくとも、ザック・ウィジェットに対する適用において識別される構造の一部であると見なされ、ザック・ウィジェット構造について1組の均等物を定める助けになる。
【0047】
[0093] 尚、当業者には、この技術革新の開示では、種々のデーター値およびデーター構造について論ずることが認められ、更にこのような項目はメモリー(RAM、ディスク等)内に常駐することによって、メモリーを構成することが認められよう。また、この技術革新の開示では、種々のアルゴリズム・ステップについても論じ、これらのアルゴリズム・ステップは所与の実施態様において実行可能コードに具体化されること、そしてこのようなコードもメモリー内に常駐すること、更にこのコードは、それを実行する任意の汎用プロセッサーを事実上構成し、それによって汎用プロセッサーから、機能的に特殊目的ハードウェアである特殊目的プロセッサーに変形することが、当業者には認められよう。
【0048】
[0094] したがって、当業者であれば、(a)請求項に記載されるメモリー、および(b)その請求項に記載されるデーター構造またはデーター値またはコードを、非重複品目として扱うという間違いを犯さないであろう。請求項が、あらゆるデーター構造またはデーター値もしくはコード(piece of code)の常駐性(residency)を明示的に記載しなくても、言及されるデーター構造およびデーター値ならびにコードがメモリー内に常駐することは、暗黙裏に了解されよう(understood)。したがって、このような常駐性の明示的な記載は不要である。しかしながら、これらは禁止されているのでもなく、強調のために1つまたは2つの選択の記載があってもよく、それによって他のデーター値およびデーター構造ならびにコード全てが常駐性から除外されるのではない。同様に、請求項において記載されるコード機能は、その構成品質が請求項において明示的に記載されているか否かには関係なく、プロセッサーを構成することは、暗黙裏に了解されよう。
【0049】
[0095] 本文書全体にわたって、特に明記しない限り、プロセスにおけるステップについて言及するときはいつでも、そのステップが直接対象の要素(party of interest)によって実行されても、および/または仲介メカニズムおよび/または仲介エンティティを通じて、その対象の要素によって間接的に実行されてもよく、なおもそのステップの範囲内に該当することを仮定する。即ち、対象の要素によるステップの直接的な実行は、直接的な実行が明示的に述べられた要件でなければ、必須ではない。例えば、割り当てる、コピーする、ディフラグする、指定する、検出する、決定する、消滅させる、実行する、失敗する、フラッシュする、識別する、保持する、印を付ける、移動させる、置く、保存する、提供する、受け取る、削減する、予約する、常駐する(residing)、大きさを決め直す、再現する(restoring)、保存する、送る、指定する、格納する(および割り当てる(allocates)、割り当てられた(allocated)、コピーする(copies)、コピーされた(copied)等)のような、宛先または他の主題(subject)に対する、対象の要素によるアクションを伴うステップは、転送する、コピーする、アップロードする、ダウンロードする、エンコードする、デコードする、圧縮する、解凍する、暗号化する、解読する、認証する、呼び出す、および本文書において記載されるあらゆるアクションを含むその他というような、何らかの他の要素(party)による、仲介アクションを伴ってもよいが、それでもなおも対象の要素によって直接実行されたものと理解されてよい。
【0050】
[0096] データーまたは命令に言及するときはいつでも、これらの品目がコンピューター読み取り可能メモリーおよび/またはコンピューター読み取り可能記憶媒体を構成し、これによって、例えば、単純な紙面上の存在、人間の心における存在、またはワイヤ上を伝搬される単なる信号に対立するものとして、それを特定の物品(article)に変換することは、暗黙裏に了解されよう。米国における特許保護に限って言えば、メモリーまたは他のコンピューター読み取り可能記憶媒体は、米国特許および商標庁(USPTO)のIn re Nuijten事件の解釈の下における特許可能な主題の範囲から外れる、伝搬信号でも搬送波でも単なるエネルギーでもない。米国では信号自体または単なるエネルギーをその適用範囲とする請求項はなく、本開示を考慮して、そうでないことを主張するいずれの請求項の解釈も、文面上不合理である。米国以外において付与された請求項において特に明示的に述べられていないならば、請求項は信号自体も単なるエネルギーもその適用範囲としない。
【0051】
[0097] 更に、本明細書において明らかに異なる定めがあっても、(a)一方で、コンピューター読み取り可能記憶媒体およびコンピューター読み取り可能メモリーと、(b)他方で、信号媒体とも呼ばれる伝送媒体との間に、明確な区別があることは理解されよう。伝送媒体は、伝搬信号または搬送波コンピューター読み取り可能媒体である。対照的に、コンピューター読み取り可能記憶媒体およびコンピューター読み取り可能メモリーは、伝搬信号でも、搬送波のコンピューター読み取り可能媒体でもない。請求項において特に明記しない限り、「コンピューター読み取り可能媒体」とは、コンピューター読み取り可能記憶媒体を意味し、伝搬信号自体でも単なるエネルギーでもない。
【0052】
[0098] 「実施形態」(embodiment)は、本明細書では例である。「実施形態」という用語は、「本発明」と相互交換可能でなない。実施形態は、結果的に得られる態様の組み合わせが、それ自体本明細書において明示的に記載されていなくても、他の実施形態を創作するために自由に態様を共有または借用してもよい(結果が動作可能であることを前提とする)。あらゆる許容される組み合わせを明示的にそして個別に記載することの要求は、当業者には不要であり、特許明細書は当業者である読者のために書かれることを認める方針に反する。少数の組み合わせ可能な特徴からでさえも得られる可能な組み合わせの数に関する正式な組み合わせの計算および非公式な共通の直観も、多数の態様の組み合わせが、本明細書において記載する態様に対して存在することを示す。したがって、あらゆる組み合わせの明示的な記載を要求することは、特許明細書が簡潔であり、該当する技術分野において読者に知識があることを求める方針に反することである。
【0053】
[0099] 参照番号のリスト
[00100] 以下のリストは、便利であるように、そして図面の支援のために提示され、複数の項目を参照して技術革新を説明する明細書の本文の一部として提示されるものである。ここのリストに掲示されない項目も、しかしながら、所与の実施形態の一部であってもよい。本文を読みやすくするために、所与の参照番号は、本文において参照される項目の、全てではないが一部の記載の近くに記載される。同じ参照番号が、所与の項目の異なる例または異なる実例を参照するために使用される場合もある。参照番号のリストは次の通りである。
【0054】
[00101] 100 コンピューティング環境とも呼ばれる動作環境
[00102] 102 計算システムまたはコンピューティング・システムとも呼ばれるコンピューター・システム
[00103] 104 ユーザー
[00104] 106 周辺機器
[00105] 108 例えば、LAN、WAN、ソフトウェア定義ネットワーク、クラウド、および他の有線またはワイヤレス・ネットワークを含むネットワーク全体
[00106] 110 プロセッサー
[00107] 112 コンピューター読み取り
可能記憶媒体、例えば、RAM、ハード・ディスク。
【0055】
[00108] 114 リムーバブル構成コンピューター読み取り可能記憶媒体
[00109] 116 プロセッサーによって実行可能な命令であって、リムーバブル記憶媒体上または他のメモリー(揮発性または不揮発性または双方)内に常駐することができる。
【0056】
[00110] 118 データー
[00111] 120 カーネル(1つまたは複数)、例えば、オペレーティング・システム(1つまたは複数)、BIOS、UEFI、デバイス・ドライバー
[00112] 122 ツール、例えば、ウィルス予防ソフトウェア、ファイアウォール、パケット・スニファー・ソフトウェア、侵入検出システム、侵入防止システム、デバッガー、プロファイラー、コンパイラー、インタプリター、デコンパイラー、アセンブラー、ディスアセンブラー、ソース・コード・エディター、自動完了ソフトウェア、シミュレーター、ファザー(fuzzer)、レポジトリー・アクセス・ツール、バージョン制御ツール、オプティマイザー、協働ツール、ソフトウェア開発ツールおよびツール・スイート、ハードウェア開発ツールおよびツール・スイート、診断等。
【0057】
[00113] 124 アプリケーション、例えば、ワード・プロセッサー、ウェブ・ブラウザー、スプレッドシート、ゲーム、電子メール・ツール。
[00114] 126 表示画面 。「ディスプレイ」とも呼ぶ。
【0058】
[00115] 128 他の参照番号106、108、110、112、114と関連付けられない(not otherwise)コンピューティング・ハードウェア。 図8では、番号128はプロセッサー110およびメモリー112ハードウェアも示す。
【0059】
[00116] 200 例えば、計算ノードにおける 計算機能。
[00117] 202 計算ノード。
[00118] 204 データー・ソース、例えば、データーを出力するまたそうでなければ生成するプログラム。
【0060】
[00119] 206 仮想機械、例えば、ハードウェア仮想化を行い、オペレーティング・システムを含むコンピューティング構造(computing construct) 。例えば、作業用メモリー・リソース、CPUリソース、IOリソース、および不揮発性メモリーを含むことができる。
【0061】
[00120] 208 システム・コード、例えば、オペレーティング・システム、ハイパーバイザー、BIOS、UEFI、ファームウェア。
[00121] 210 例えば、ストレージ・ノードにおける格納機能。
【0062】
[00122] 212 ストレージ・ノード
[00123] 214 不揮発性ストレージ、例えば、NVDIMM、ディスク、フラッシュ・メモリー。
【0063】
[00124] 216 バッテリー
[00125] 218 バッテリー・バックアップ・メモリー
[00126] 220 メモリー・アパーチャ。物理デバイスにおけるディジタル・データー格納位置と関連付けられた物理アドレス空間の一部分を指すことができ、またはディジタル・データー格納位置自体を指すこともできる。
【0064】
[00127] 222 データー格納要求
[00128] 224 データー格納要求に対する応答
[00129] 226 データーの複製
[00130] 300 コンピューティング環境の態様
[00131] 302 クラウド。「クラウド・コンピューティング環境」と呼んでもよい。
【0065】
[00132] 304 データー保存回路。電子回路と、これらの電子回路またはその使用データー保存回路を制御する任意のファームウェアとを含み、必ずしもデーターがフラッシュされる不揮発性ストレージを含むとは限らない。
【0066】
[00133] 306 データー保存サブシステム。データーがフラッシュされる先の不揮発性ストレージを含む。
[00134] 308 ハイパーバイザー。
【0067】
[00135] 310 UEFI。統一拡張可能ファームウェア・インターフェース、またはこのようなインターフェースを有するファームウェアを指すことができ、例えば、SEC(セキュリティ)、PEI(事前EFI初期化)、DXE(ドライバー実行環境)、BDS(ブート・デバイス選択)、SMM(システム管理モード)のための機能を含むまたは機能を提供することができる。
【0068】
[00136] 312 フラッシュ・オーダー
[00137] 314 データー完全性の脅威
[00138] 316 2つ以上のノード間におけるストレージ関係
[00139] 318 データー・クリティカル性。データーがクリティカルに指定されているか否かに言及することができ、またはデーターが未だそのように指定されていなくても、クリティカルに指定される判断基準を満たすか否かに言及することができる。これは、ブーリアンまたは他の指示、例えば、データーのフラッシングにどのように優先順位を付けるかを示す2つ以上の値の範囲内にある値であってもよい。
【0069】
[00140] 402 揮発性メモリー、例えば、DRAM自体。
[00141] 404 NVDIMM
[00142] 406 バッテリー特性
[00143] 408 ディフラッガー(defragger)(メモリー・ディフラグメンテーション)コード。
【0070】
[00144] 410 メモリーのディフラグ部分、即ち、ディフラッギングの対象となる部分。
[00145] 412 クリティカル・データーを含むデーター集合(いくらかの非クリティカル・データーも有してもよい)。
【0071】
[00146] 414 クリティカル・データー412を保持するために割り当てられた(または割り当てられている)メモリー。
[00147] 416 クリティカル・データーを全く含まないデーター集合。
【0072】
[00148] 418 非クリティカル・データー416を保持するために割り当てられた(または割り当てられている)メモリー。
[00149] 420 ファームウェア。
【0073】
[00150] 422 アロケーター(allocator)ソフトウェア、即ち、アパーチャにおける未割り当て空間を識別し、その中に、アパーチャのフラッシュ先端に向けてクリティカル・データーを入れ、この空間に割り当て済みの印を付けるソフトウェア。アロケーターは、アパーチャをディフラグすることも可能である。アロケーターは、非クリティカル・データーの空間を識別し、非クリティカル・データーをアパーチャのフラッシュ後端に向けて入れることも可能である。
【0074】
[00151] 424 メモリー112における物理アドレス。アドレス自体(例えば、0x0000)またはアドレスにおける格納位置(例えば、メモリー・セル)を指すことができる。
【0075】
[00152] 502 バッテリー容量、例えば、ミリアンペア-時間。
[00153] 504 信頼性値、例えば、平均故障間隔、または残存予測寿命、または列挙値(例えば、10が最良で0が最悪である目盛の中の2)、または信頼性等級(例えば、中度の信頼性)。
【0076】
[00154] 506 バッテリーの経年数(age)、例えば、設置以来の経過時間、行われた充電サイクル回数、フラッシュの間に使用された回数。
[00155] 600 データー・クリティカル性判断基準の例。
【0077】
[00156] 602 データー・クリティカル性判断基準。
[00157] 604 データーを生成した仮想機械に割り当てられる優先度。
[00158] 606 カスタマー、例えば、クラウドのテナント。
【0078】
[00159] 608 カスタマーに割り当てられるステータス。例えば、SLAにおいて 明白にすることができる。
[00160] 610 ワークロード、たとえば、特定の計算ノードに割り当てられる処理タスク。
【0079】
[00161] 612 データーを含むワークロードに、またはデーターが生成された実行から割り当てられる優先度。
[00162] 702 物理機械、例えば、プロセッサー、回路、チップ、バッテリー、ディスプレイ、電源、筐体等。あらゆる埋め込みファームウェア、または物理機械の不揮発性メモリーに格納されたソフトウェアを含む。コンピューティング・システム102は、1つ以上の物理機械702を含む。
【0080】
[00163] 704 クラウドまたは他のネットワークにおけるノード。計算ノード202およびストレージ・ノード212はノード704の例である。
[00164] 706 コンテナ。例えば、ユーザー空間仮想化を行う(provide)コンピューティング構造(construct)であり、それ自体はオペレーティング・システムを含まないが、それにもかかわらず、オペレーティング・システムに依存して実行する。
【0081】
[00165] 800 1つ以上のストレージ・ノードとネットワークを組む1つ以上の計算ノードを有し、本明細書において教示するようなデーター保存機能が装備されたコンピューティング・システム。
【0082】
[00166] 802 I/O(入力/出力)ハードウェアおよびソフトウェア。例えば、ポート、コネクター、ソケット、ネットワーク・インターフェース・カード。「IO」と呼ぶこともできる。
【0083】
[00167] 804 メモリーの最上位(top)。
[00168] 806 アパーチャのフラッシュ先端。
[00169] 808 アパーチャのフラッシュ後端。
【0084】
[00170] 810 アパーチャにおける未割り当て空間。
[00171] 812 同じメモリー・デバイス内であるがアパーチャの外側にあるメモリーの部分。
【0085】
[00172] 814 仮想アドレス空間と物理アドレス空間との間の論理マッピング。
[00173] 900 仮想機械を実行するオペレーティング・システムまたはコンテナを有するシステムを含み、本明細書において教示するようなデーター保存機能が装備されコンピューティング・システム。
【0086】
[00174] 902 フラッシュされるデーターを受ける専用の不揮発性ストレージ112。
[00175] 904 専用ストレージ902にマッピングされるメモリー領域。バッテリー・バックアップ・メモリー・アパーチャ220は、領域904の一例である。
【0087】
[00176] 906 オペレーティング・システム。
[00177] 908 揮発性メモリーから、この揮発性メモリーをバックアップする専用不揮発性ストレージにデーターをコピーする退避動作。退避は、退避されるデーターの完全性に対する差し迫った脅威を全く伴わずに、意図的に行うことができ、または差し迫った脅威または発生している(current)脅威に応答して行われるフラッシュであってもよい。
【0088】
[00178] 910 専用不揮発性ストレージから、この専用不揮発性ストレージによってバックアップされている揮発性メモリーにデーターをコピーする復元動作。
[00179] 912 プログラムの実行。プログラムを実行するアクト、またはプログラム動作のインスタンスを指すこともできる。
【0089】
[00180] 1000 フローチャート。また、1000は、図10のフローチャートによって示されるデーター保存方法、または図10のフローチャートにしたがうデーター保存方法にも言及する。
【0090】
[00181] 1002 例えば、malloc()コール、コンストラクターの呼び出し、ファイルまたはブロックまたはブロブの退避、あるいは格納位置(バイト、ページ等)が未だ割り当てられていないデーターの格納を求める他の動作の結果として、クリティカル・データーを格納する要求を受ける。
【0091】
[00182] 1004 例えば、システム・メモリー管理ソフトウェア、空きリスト(free list)、空きチャンクを示すビット・ベクトル、または同様のメカニズムを使用して、メモリーの未割り当て部分を識別する。
【0092】
[00183] 1006 例えば、メモリー割り当てを追跡するデーター構造内にビットを設定することによって、メモリーの一部分に割り当て済みの印を付ける。
[00184] 1008 例えば、memcpy()によって使用される機能、ブロック・コピー等を実行することによって、データーのコピーをメモリー内に入力する。
【0093】
[00185] 1010 例えば、ACPI準拠システム上でパワー・コマンドを受けることによって、または電圧レベル監視回路からの信号を受けることによって、データー完全性に対する脅威を検出する。
【0094】
[00186] 1012 例えば、NVDIMMのDRAM部分からNVDIMMのフラッシュ部分にデーターをコピーすることによって、揮発性ストレージから専用不揮発性バックアップ・ストレージにデーターをフラッシュする。
【0095】
[00187] 1100 フローチャート。また、1100は、図11のフローチャート(図9のステップおよび図10のステップを組み込む)によって示される保存方法、または図11のフローチャートにしたがうデーター保存方法にも言及する。
【0096】
[00188] 1102 データーを保存する、即ち、データーの少なくとも1つのコピーの完全性を維持する。
[00189] 1104 データー格納要求を受ける。
【0097】
[00190] 1106 アパーチャ220のサイズまたは位置を決定もしくは指定する。
[00191] 1108 例えば、バイトまたはブロックを単位としたアパーチャ220のサイズ。
【0098】
[00192] 1110 アパーチャ220の位置。例えば、アパーチャを含む(contain)メモリー・デバイスの最も小さい物理アドレスからのアパーチャの両端のオフセット。
[00193] 1112 データー格納要求を送る。
【0099】
[00194] 1114 アパーチャのサイズを決定し直す。
[00195] 1115 アパーチャを移動させる。
[00196] 1116 非クリティカル・データーのみを保持するために、アパーチャの少なくとも指定された部分を予約する。
【0100】
[00197] 1118 アパーチャの予約部分。絶対または相対メモリー・アドレスによって、または総アパーチャ・サイズの割合(percentage)として指定することができる。
[00198] 1120 データーをコピーする、またはデーターを移動させる、または以前には割り当てられていなかったメモリーにデーターを挿入することによって、アパーチャの少なくとも一部分をディフラグすることによって、未割り当てであるメモリーの量を削減する、またはアパーチャのフラッシュ先端からの未割り当てメモリーの距離を延長する、または双方を行う。例えば、これを、同じユーザーまたは同じプロセスまたは同じファイルに属するメモリーの部分を統合することを伴う、別の「ディフラグ」の使用から区別するために、これを「フラッシュ・ディフラグ」と呼んでもよい。
【0101】
[00199] 1122 アパーチャからのデーターの一部をフラッシュし損なう。この結果、データーの他のコピーが、アパーチャ以外のどこかで入手可能でなければ、そしてデーターの残りがフラッシュされた不揮発性ストレージ以外のどこかで入手可能でなければ、データーの少なくとも部分的な逸失が生じる。
【0102】
[00200] 1124 物理機械内に常駐させる。たとえば、物理機械の一部であるメモリー(揮発性または不揮発性)に格納する。
[00201] 1126 アパーチャ外部、そしてアパーチャがフラッシュされる不揮発性ストレージ外部のどこかに、データーのコピーを保持する。
【0103】
[00202] 1128 データーを移動させる。
[00203] 1130 空間を作る、即ち、メモリーの所与の部分を割り当て済みから空きに変更する。
【0104】
[00204] 1132 データーをクリティカルに指定する。データーがユニットとして扱われるとき、そのユニットの任意の部分をクリティカルに指定すると、そのユニットもクリティカルに指定される。
【0105】
[00205] 1134 割り当てられた部分間にある未割り当て量を削減する。
[00206] 1136 割り当て部分間にある未割り当て空間を消滅させる。
[00207] 1138 脅威に対抗してクリティカル・データーを保存する可能性を高める。
【0106】
[00208] 1140 脅威に対抗してクリティカル・データーを保存する可能性。測定された確率(probability)または適正な評価でもよい。
[00209] 1142 ファームウェアを実行する。実行912の一例。
【0107】
[00210] 1144 他のいずれの参照番号も割り当てられていない、本開示において論じられるあらゆるステップ。
[00211] 動作環境
[00212] 図1を参照すると、実施形態の動作環境100は、少なくとも1つのコンピューター・システム102を含む。コンピューター・システム102は、マルチプロセッサー・コンピューター・システムであっても、またはなくてもよい。動作環境は、所与のコンピューター・システム内に1つ以上の機械を含むことができ、これらはクラスター化されても、クライアント-サーバー関係でネットワーク接続されても、および/またはクラウド内においてピア・ツー・ピアの形態でネットワーク接続されてもよい。個々の機械はコンピューター・システムであり、協働する機械のグループもコンピューター・システムである。所与のコンピューター・システム102が、例えば、アプリケーションを用いて、エンド・ユーザーのために構成されても、アドミニストレーターのためにサーバーとして構成されても、分散型処理ノードとして構成されても、および/または他の方法で構成されてもよい。
【0108】
[00213] 人間のユーザー104は、ディスプレイ、キーボード、およびその他の周辺機器106を使用することによって、タイプ入力されたテキスト、タッチ、音声、動き、コンピューター・ビジョン、ジェスチャ、および/またはI/Oの他の形態を通じて、コンピューター・システム102と対話処理することができる。画面126は、着脱可能な周辺機器106であってもよく、またはシステム102の統合部分であってもよい。ユーザー・インターフェースは、実施形態と1人以上の人間のユーザーとの間における対話処理を支援することができる。ユーザー・インターフェースは、コマンド・ライン・インターフェース、グラフィカル・ユーザー・インターフェース(GUI)、自然ユーザー・インターフェース(NUI)、音声コマンド・インターフェース、および/またはその他のユーザー・インターフェース(UI)表示を含んでもよく、これらは別個の選択肢として提示されてもよく、または統合されてもよい。
【0109】
[00214] システム・アドミニストレーター、ネットワーク・アドミニストレーター、クラウド・アドミニストレーター、セキュリティ・アナリストおよび他のセキュリティ要員、操作要員、開発者、技術者、およびエンド・ユーザーは、各々、特定の型のユーザー104である。1人以上の人間の代わりに、例えば、システム102を検査し易くするために動作する自動化エージェント、スクリプト、再生ソフトウェア、デバイス等も、ユーザー104としてよい。記憶デバイスおよび/またはネットワーキング・デバイスは、それらのプロセッサー110からの離脱可能性(detachability)に応じて、ある実施形態では周辺機材として見なされ、他の実施形態ではシステム102の一部と見なされることもある。図1に示されていない他のコンピューター・システムも、技術的な方法で、コンピューター・システム102と、または、例えば、ネットワーク・インターフェース機材を通じて、ネットワーク108への1つ以上の接続を使用して、他のシステムの実施形態と相互作用することができる。
【0110】
[00215] 各コンピューター・システム102は、少なくとも1つのプロセッサー110を含む。コンピューター・システム102は、他の適したシステムと同様に、1つ以上のコンピューター読み取り可能記憶媒体112も含む。記憶媒体112は、異なる物理型のものであってもよい。記憶媒体112は、揮発性メモリー、不揮発性メモリー、所定位置固定媒体(fixed in place media)、リムーバブル媒体、磁気媒体、光媒体、ソリッド・ステート媒体、および/または他の種類の物理耐久記憶媒体(単なる伝搬信号または単なるエネルギーとは対立するものとして)であってもよい。具体的には、可搬型(即ち、外部)ハード・ドライブ、CD、DVD、メモリー・スティック、または他のリムーバブル不揮発性メモリー媒体のような、構成記憶媒体(configured medium)114は、挿入またそうでなければインストールされると、機能的にコンピューター・システムの技術的部分となり、そのコンテンツを、プロセッサー110との相互作用のためまたはプロセッサー110による使用のために、アクセス可能にすることができる。リムーバブルな構成記憶媒体114は、コンピューター読み取り可能記憶媒体112の例である。コンピューター読み取り可能記憶媒体112のいくつかの他の例には、内蔵RAM、ROM、ハード・ディスク、およびユーザー104によって容易に除去できない他のメモリー記憶デバイスが含まれる。現行の米国特許要件に従って、コンピューター読み取り可能媒体も、コンピューター読み取り可能記憶媒体も、コンピューター読み取り可能メモリーも、米国において係属中または付与されたいずれの請求項の下においても、信号自体でも単なるエネルギーでもない。
【0111】
[00216] 記憶媒体114には、プロセッサー110によって実行可能なバイナリー命令116が構成される。「実行可能」(executable)とは、例えば、機械コード、解釈可能なコード、バイトコード、および/または仮想機械上で実行するコードを含むように、本明細書では広い意味で使用される。また、記憶媒体114には、命令116の実行による技術的効果のために、作成、修正、参照、および/またはそれ以外では使用されるデーター118が構成される。命令116およびデーター118は、これらが常駐するメモリーまたは他の記憶媒体114を構成する。このメモリーまたは他のコンピューター読み取り可能記憶媒体が所与のコンピューター・システムの機能部であるとき、命令116およびデーター118もこのコンピューター・システムを構成する。ある実施形態では、データー118の一部は、製品特性、在庫、物理測定値、設定値、画像、読み取り値、目標、分量等のような、実世界項目を表す。また、このようなデーターは、バックアップ、修復、コミット、中断、再フォーマット、および/またはその他の技術的処理によって変換される。
【0112】
[00217] 実施形態は、コンピューティング・デバイス(例えば、汎用コンピューター、サーバー、またはクラスター)において1つ以上のプロセッサーによって実行されるソフトウェア命令として実装されるというように説明される場合もあるが、このような説明は、可能な全ての実施形態を網羅することを意味するのではない。同じまたは同様の技術的効果を得るために、同じまたは同様の機能も、全体的または部分的に、直接ハードウェア・ロジックにおいて実装できる場合が多いことは、当業者には理解されよう。ソフトウェアの実装の代わりにまたはこれに加えて、本明細書において説明する技術的機能は、少なくとも部分的に、1つ以上のハードウェア・ロジック・コンポーネントによって実行することができる。ハードウェア・ロジック・コンポーネントは、ファームウェアを含んでも、ファームウェアによって制御されても、または双方でもよい。例えば、実施形態は、フィールド・プログラマブル・ゲート・アレイ(FPGA)、特定用途集積回路(ASIC)、特定用途標準製品(ASSP)、システム・オン・チップ・コンポーネント(SOC)、複合プログラマブル・ロジック・デバイス(CPLD)、および同様のコンポーネントというような、ハードウェア・ロジック・コンポーネント110、128を含んでもよく、更に そして他の実装も除外しない。実施形態のコンポーネントは、例えば、それらの入力、出力、および/またはそれらの技術的効果に基づいて、相互作用する機能モジュールに類別する(group)こともできる。
【0113】
[00218] プロセッサー110(例えば、CPU、ALU、FPU、および/またはGPU)、メモリー/記憶媒体112、およびディスプレイ126に加えて、動作環境は、実例をあげると、バッテリー、バス、電源、有線およびワイヤレス・ネットワーク・インターフェース・カードのような、他のハードウェア128も含むことができる。「画面」(screen)および「ディスプレイ」(display)という名詞は、本明細書では相互交換可能に使用される。ディスプレイ126は、1つ以上のタッチ・スクリーン、ペンまたはタブレットからの入力に応答する画面、または出力のためにのみ動作する画面を含むことができる。ある実施形態では、人間ユーザーI/Oデバイス(画面、キーボード、マウス、タブレット、マイクロフォン、スピーカー、動きセンサー等)のような周辺機器106は、1つ以上のプロセッサー110およびメモリーと動作可能に通信するように存在することもできる。
【0114】
[00219] ある実施形態では、このシステムは、有線および/またはワイヤレス・ネットワーク108によって接続された複数のコンピューターを含む。ネットワーキング・インターフェース機材128は、例えば、パケット交換ネットワーク・インターフェース・カード、ワイヤレス送受信機、または電話ネットワーク・インターフェースのようなネットワーク・コンポーネントを使用して、ネットワーク108へのアクセスを付与することができる。これらのコンポーネントは、所与のコンピューター・システム内に存在することができる。また、ネットワーキング・インターフェース機材、およびスイッチまたはルーターまたはファイアウォールのような他のネットワーク・コンポーネントの仮想化も、例えば、ソフトウェア定義ネットワーク、あるいはサンドボックス(sandboxed)環境または他のセキュア・クラウド・コンピューティング環境において、存在することができる。また、所与の実施形態は、直接メモリー・アクセス、リムーバブルな不揮発性記憶媒体、あるいは他の情報記憶検索および/または送信手法によって、技術的データーおよび/または技術的命令を伝達することもできる。
【0115】
[00220] 尚、以上の態様および「動作環境」の下で本明細書において紹介される他の態様が、所与の実施形態の一部を形成できることは、当業者には認められよう。この文書の見出しは、機能(features)を実施形態と実施形態以外の機能集合に厳格に分類することを意図するのではない。
【0116】
[00221] 1つ以上の項目が、図において、輪郭形態で示され、または括弧の中に掲示されているが、これらは必ずしも図示する動作環境の一部または全ての実施形態の一部ではないが、本明細書において論ずるように、動作環境またはいくつかの実施形態における項目と相互動作することができるということを強調するためである。だからと言って、輪郭形態でない項目や括弧がない項目が、いずれの図またはいずれの実施形態においても、必ず必要とされるという訳ではない。具体的には、図1は便宜上示されているのであり、図1に項目を含めることは、その項目、またはその項目の使用についての説明が、現在の技術革新の前に知られていたことを暗示するのではない。
【0117】
[00222] 更にシステムについて
[00223] 図1から図11までを参照すると、ある実施形態は機能増強システム800または900を使用もしくは提供する。機能増強は、動作ステップとデバイス特性との組み合わせを実装して完全性の脅威314に対抗してデーターを保存することによって、データー保存を促進する(promote)のに役立つ。データー118は、クリティカル・データー412および非クリティカル・データー416に分割され、クリティカル・データーは1つ以上のバッテリー・バックアップ・メモリー218のアパーチャ220内の物理アドレス424に格納され、脅威が検出されたとき(1010)に非クリティカル・データーよりも先に、クリティカル・データーがフラッシュされる(1012)。バッテリー・バックアップ・メモリー・アパーチャ220は、バッテリーの特性406にしたがってサイズが決定され、条件が変化するに連れてサイズを変更することができる。ディフラガー(defragger)408は、クリティカル・データー412を格納するためのアパーチャの使用を最適化する。
【0118】
[00224] 図2のアーキテクチャ例によって示すように、データー118は、計算ノード202上で実行する(912)仮想機械206またはコンテナ706のような、ソース204によって生成されてもよい。これらのデーター・ソースは、システム・コード208を呼び出して、またはシステム・コード208に依存して、生成したデーター118をストレージ・ノード212に送る。この図2の例では、ストレージ・ノード212は高速揮発性メモリー402を有し、その少なくとも一部はバッテリー・バックアップ・メモリー218となっている。バッテリー・バックアップ・メモリー218の少なくとも一部は、本明細書において教示するように、クリティカル・データーを保存するのを補助するために、アパーチャ220としての使用に指定されている。ストレージ・ノード212および計算ノード202は、要求222(例えば、ここに格納するデーターがあります。識別子Zの下で格納されているデーターを返送して下さい)および応答224(例えば、格納成功、アパーチャに余裕なし、ここに要求されたデーターがあります、または他のステータスもしくはエラー・コード)を通じて通信する。要求222および応答224は、例えば、TCP/IPネットワーク108、イーサネット・ネットワーク108、ストレージ・エリア・ネットワーク108、またはこれらの組み合わせを通じて伝送する(travel)ことができる。
【0119】
[00225] 一般に、計算ノード-ストレージ・ノードの関係316は、必ずしも1対1ではない。1つの計算ノードが1つのストレージ・ノードに送ったまたは1つのストレージ・ノードから受信したデーターを処理し、あるいは複数のストレージ・ノードと通信することもできる。1つのストレージ・ノードが1つ以上の計算ノードに代わってデーターを格納することもできる。図8は、例えば、4つのストレージ・ノード212を使用する1つの計算ノード202を示す。
【0120】
[00226] 図2および図8に示すように、ある実施形態では、クリティカル・データー412は、ストレージ・ノードに跨がって複製されず、一方非クリティカル・データー416はストレージ・ノードに跨がって複製される。つまり、クリティカル・データーは、主にこのクリティカル・データーを不揮発性ストレージにフラッシュすることによって、またはそうすることによってのみ、脅威に対抗して保存され、一方非クリティカル・データーは、主に、それをノードに跨がって複製することによって、またはそうすることによってのみ、脅威に対抗して保存されるとしてよい。
【0121】
[00227] 図8において、クリティカル・データー412およびアパーチャ220における対応する割り当てエリア414は、仮想機械A、C、およびDに属し、図において丸い角によって示されている。一方、非クリティカル・データー416およびアパーチャ220における対応する割り当てエリア418は、仮想機械BおよびXに属し、図において直角の角によって示されている。仮想機械BおよびXに属するデーターのデーター複製226が示されており、ストレージ・ノードS1、S2、S3は仮想機械Bの非クリティカル・データー416の複製を有し、ストレージ・ノードS1、S2、S4は仮想機械Xの非クリティカル・データー416の複製を有する。
【0122】
[00228] 図8および図9は、システム・コード208のいくつかの例、即ち、カーネル120(例えば、ハイパーバイザー308、オペレーティング・システム906)およびファームウェア(たとえば、UEFIファームウェア310)を示す。計算ノードおよびストレージ・ノードは、コンピューティング・システム102であり、したがってハードウェアを含む。尚、明確化のために、メモリー112以外のハードウェアは図2では特に明示されて(called out)いないが、ハードウェアのいくつかの例、例えば、IO802およびCPU110は、メモリー112、218と共に、図8において明示されている。メモリー218は、アパーチャ220、アパーチャ外部のメモリー812、アパーチャ内部の割り当てメモリー418および414、ならびにアパーチャ内部の未割り当てメモリー810を含む。
【0123】
[00229] バッテリー・バックアップ・メモリー218の物理アドレス424、または他のアパーチャを含みマッピングされた揮発領域(aperture-containing mapped volatile region)904は、マッピング814によって、仮想アドレスにマッピングすることができる。マッピング814は、あるレベルの間接参照(indirection)を実施し、これによって、同じ退避908および復元910ファームウェアを、互いに異なる物理開始アドレス806および物理終端アドレス808を有するかもしれないアパーチャと共に使用することが可能になる。アパーチャ220のデーターがフラッシュされる先の不揮発性メモリー112は、NVDIMM404においてフラッシュまたは他の不揮発性ストレージ、あるいは他の専用不揮発性ストレージ902、もしくは双方を含むことができる。
【0124】
[00230] 図3は、あるコンピューティング環境100の種々の態様300を示す。これらについては、本開示における種々の時点において適宜説明する。
[00231] 図4は、革新的なデーター保存機能をコンピューティング・システム102に付加することができるデーター保存サブシステムの一例306を示す。サブシステム306のメモリーは、バッテリー・バックアップ・メモリー218、例えば、NVDIMM404においてアパーチャ220を含む。図4および図5において気付かれるように、バッテリーは、容量502、信頼性504、および経年数506の内1つ以上というような、追跡または指示対象となる特性406を有することができる。これらのバッテリー特性406は、互いに重複する、即ち、互いに影響を及ぼし合うこともある。例えば、信頼性は経年数と共に低下するとして差し支えない。また、サブシステム306は、バッテリー216によってバックアップされない揮発性メモリー402も含むことができる。
【0125】
[00232] 動作において、アパーチャ220は、クリティカル・データー412を収容する1つ以上の領域414を有し、アパーチャ220は、非クリティカル・データー416を収容する1つ以上の領域418を有することもできる。あるアパーチャ220は、例えば、図8に示すストレージ・ノードS2、S3、S4のように、少なくとも所与の時点において、非クリティカル・データーだけを収容することもできる。しかし、ここで関心の焦点になるのは、クリティカル・データーを収容するアパーチャ220である。具体的には、本開示は、データーの脅威に応答してクリティカル・データーをフラッシュするのに成功する可能性1140を高めるようにするには、どのようにしてクリティカル・データーをメモリー112に入力すればよいか(初期割り当てによって、またはディフラッギングによって、または双方)、つまり保存(1102)すればよいかについて情報提供する。
【0126】
[00233] 図6は、クリティカル・データー412を非クリティカル・データー416から区別するために適用することができる判断基準602のいくつかの例600を示す。例えば、データーが仮想機械206またはコンテナ706または他のディジタル・アーチファクトによって生成された場合、このデーターをクリティカルに指定することができ、このアーチファクトは高い優先度604を有する。データー118が、支払いを行った特定のカスタマー606によってまたはその代わりに生成された場合、あるいはそれ以外ではクリティカル・データーを示すステータス608が得られた場合、クリティカルに指定する(1132)ことができる。同様に、データーが、クリティカル・データーを示す優先度またはステータス612を有する特定のワークロード610によって、またはその代わりに生成された場合、あるいは特定のワークロード610によって処理された場合、このデーターをクリティカルに指定する(1132)ことができる。これらの判断基準例を種々の方法で組み合わせることもでき、または他の判断基準602によって修正することもでき、あるいは双方でもよい。実例をあげると、(a)データーが高いステータスのカスタマーの高優先度仮想機械によって生成されたとき、このデーターをクリティカルに指定することができるが、それ以外の場合非クリティカルに指定することができる。(b)指定されたセキュア・サーバー・ブレード702上で実行する高ステータスのカスタマーの何らかの仮想機械によってデーターが生成されたとき、このデーターをクリティカルに指定することができるが、それ以外の場合非クリティカルに指定することができる。(c)指定された時間期間中に任意のカスタマーによってデーターが生成されたとき、このデーターをクリティカルに指定することができるが、それ以外の場合非クリティカルに指定することができる、等である。
【0127】
[00234] 図7は、あるコンピューティング・システム102の種々の例700を示す。これらについては、本開示の種々の時点において適宜説明する。
[00235] ある実施形態は、コンピューティング・システム102においてデーター保存サブシステム306を提供または使用する。データー保存サブシステム306は、アパーチャ220を有するバッテリー・バックアップ・メモリー218を含むことができる。アパーチャ220は、フラッシュ・オーダー312を有する。フラッシュ・オーダー312は、データー完全性の脅威314に応答して、データーをアパーチャからアパーチャ関連不揮発性ストレージ902にコピーする順序(order)である。フラッシュ・オーダーは、アパーチャのフラッシュ先端806と、アパーチャのフラッシュ後端808とを定める。
【0128】
[00236] また、フラッシュ・オーダーは、「トップ-ダウン」(top-down)または「ボトム-アップ」(bottom-up)というような語句を使用して記述することもでき、大きい物理アドレス424程小さい物理アドレスよりも上にあると理解することとする。したがって、トップ-ダウン・フラッシュは、高い方のアドレスから開始し、低い方のアドレスに向かって進む。一方ボトム-アップ・フラッシュは、低い方のアドレスから開始し、高い方のアドレスに向かって進む。アパーチャのフラッシュ先端806は、トップ-ダウン・フラッシュ・オーダーでは、アパーチャのフラッシュ後端808よりも大きなアドレスを有し、ボトム-アップ・フラッシュ・オーダーでは、アパーチャのフラッシュ後端808よりも小さいアドレスを有する。図8では、アパーチャのフラッシュ先端806は、アパーチャのフラッシュ後端808よりも小さい物理アドレス424を有するので、ボトム-アップ(小さいアドレスから大きいアドレスへ)フラッシュ・オーダー312を示す。
【0129】
[00237] ある実施形態では、データー保存サブシステム306は、バッテリー・バックアップ・メモリー218と動作可能に通信するデーター保存回路304を含む。データー保存回路304は、データー保存ステップを実行するように構成される。データー保存ステップは、以下を含むことができる。
【0130】
(a)データー集合A-データー412をアパーチャに格納する要求222を受けるステップ(1002)。A-データーは、クリティカル・データーに指定されたデーターを含む。
【0131】
(b)アパーチャの未割り当てメモリー810の一部分A-メモリー414を特定する(1004)。A-メモリーは、A-データーを保持できるだけ十分に大きく、A-メモリーは、アパーチャの他のいずれの未割り当てメモリーの他のいずれのアドレスよりもアパーチャのフラッシュ先端806に近いアドレス424を有する。
【0132】
(c)A-メモリーに割り当て済みの印を付け(1006)、A-データーのコピーをA-メモリーに入力する(1008)。
(d)データー集合Z-データー416をアパーチャに格納する要求222を受ける。Z-データーは、クリティカル・データーに指定されるデーターを全く含まない。
【0133】
(e)アパーチャの未割り当てメモリー810の一部分Z-メモリーを特定する。Z-メモリーは、Z-データーを保持できるだけ十分に大きく、Z-メモリーは、アパーチャの他のいずれの未割り当てメモリーの他のいずれのアドレスよりも、アパーチャのフラッシュ後端808に近いアドレス424を有する。
【0134】
(f)Z-メモリーに割り当て済みの印を付け、Z-データーのコピーをZ-メモリーに入力する。
ここで、ラベル(a)から(f)までは、単に識別子として役割を果たすに過ぎず、したがって必ずしもこれら自体が動作の順序を指定する訳ではない。このデーター保存サブシステム306は、フラッシュ-オーダーにおいてクリティカル・データーを非クリティカル・データーよりも前にバッテリー・バックアップ・メモリーに入力することによって、クリティカル・データーをフラッシュするのに成功し(1012)、それによってクリティカル・データーを保存する可能性を高める。クリティカル・データー保存の可能性は、データーのクリティカル性を考慮せずに、即ち、クリティカル性を欠いて、バッテリー・バックアップ・メモリーにデーターを格納するアーキテクチャにおけるよりも高い。
【0135】
[00238] ある実施形態では、バッテリー・バックアップ・メモリー・アパーチャ220は、ここではXと呼ばれるネットワーク・ノード704内に常駐し、またはネットワーク・ノード704によって制御され、A-データーをアパーチャに格納する要求222は、ここではYと呼ばれる異なるネットワーク・ノードから送られた。図8では、例えば、アパーチャはストレージ・ノード212、704 S1に常駐し、アパーチャ220における仮想機械Aに対するA-データーを格納する要求222は、S1以外の異なるネットワーク・ノードから、即ち、計算ノードから送られた。ある実施形態では、ネットワーク・ノードXは、クラウド302内にストレージ・ノードを含み、ネットワーク・ノードYは、クラウド内に計算ノードを含む。しかしながら、他の実施形態では、ノードがクラウド以外のネットワークに常駐することもできる。
【0136】
[00239] ある実施形態では、ネットワーク・ノードXおよびネットワーク・ノードYが、ここではRと呼ばれるストレージ関係316によって関係付けられる。ここで、Rは、MがNの代わりにデーターを格納するとき、2つのノードMおよびNがRによって関係付けられるように、定められる。ある場合には、Rは特定のノードXおよびYの1対1の関係ではないこともある。例えば、計算ノードが仮想機械VM7のクリティカル・データーをストレージ・ノードS7に送り、仮想機械VM8のクリティカル・データーをストレージ・ノードS8に送る場合もある。または、ストレージ・ノードS12が計算ノードC10からのクリティカル・データーを保持し、更に異なる計算ノードC11からのクリティカル・データーも保持する場合もある。勿論、多くの他の関係316の例も可能である。
【0137】
[00240] ある実施形態では、バッテリー・バックアップ・メモリー218はNVDIMMメモリー404を含む。例えば、NVDIMM404は、NVDIMM-Fフラッシュ・メモリー、NVDIMM-Nバイト-アドレス可能メモリー、同じデバイス上にダイナミックRAMおよびNANDを有するNVDIMM-Pメモリー、NVDIMM-SWメモリー、またはNVRAM不揮発性RAMメモリーを含むことができる。NVDIMM-SWは、メモリー(例えば、DD4RAM)、ディスク、またはフラッシュ(例えば、SSDパーティション)、バッテリー、およびシグナリング・メカニズムを含むこともできる。
【0138】
[00241] ある実施形態では、コンピューティング・システム102は仮想機械206を含み、データー集合A-データー412はデーター保存サブシステム306に仮想機械VM-Aから送られ、データー集合Z-データー416はデーター保存サブシステム306に仮想機械VM-Zから送られる。図8の例では、実例をあげると、クリティカル・データー集合412は増強ストレージ・ノードS1(したがってそのデーター保存サブシステム306に)に仮想機械Aから送られ、非クリティカル・データー集合416はS1に仮想機械Bから送られる。
【0139】
[00242] 本明細書では、他のシステムの実施形態についても、直接説明するか、あるいは説明したプロセスまたは構成した媒体のシステム・バージョンとして導き出せる(derivable)ものとして説明し、コンピューティング・ハードウェアについての本明細書における広範な論述によって情報提供する。
【0140】
[00243] 図において具体的なアーキテクチャの例を示したが、実施形態はこれらの例から逸脱してもよい。実例をあげると、異なる図に示した品目を1つの実施形態に纏めて含ませてもよく、1つの図に示す品目を省略してもよく、異なる品目において示される機能を、もっと少ない品目にまたは1つの品目に組み込んでもよく、品目の名称を変更してもよく、あるいは品目を互いに異なる接続にしてもよい。
【0141】
[00244] 本明細書では、技術の態様を例示するのに役立てるために例を示すが、この文書内で示す例は、可能な実施形態の全てを説明するのではない。実施形態は、本明細書において提示する特定の例、コンポーネントの名称、最適化、アルゴリズムの選択、データー、データー型、構成、実施態様、配列、表示、特徴、手法、そしてシナリオにも限定されない。所与の実施形態は、実例をあげると、追加のまたは異なる技術的特徴、メカニズム、シーケンス、データー構造、または機能を含んでもよく、それ以外でも本明細書において提示する例から逸脱してもよい。
【0142】
[00245] プロセス(別名、方法)
[00246] 図10は、本明細書において教示するデーター保存機能を有し、図1から図9までの1つ以上によって示される増強システムによって実行または補佐することができる方法の一例である、方法1000を示す。図10に示す受けるステップ1002、特定するステップ1004、印を付けるステップ1006、入力するステップ1008、検出するステップ1010、およびフラッシュするステップ1012について、本開示全体を通じて、これらの参照番号で明示的に引用しながら、そして引用せずに説明する。具体的には、図2図8、および図9の論述は、図10に示すステップ1002から1012までに関係がある。
【0143】
[00247] 図11は、更に、アクセス制御方法(その世界の法的な意味では「プロセス」と呼ぶこともできる)も示す。このアクセス制御方法は、増強データー保存機能を有するシステムの動作中に使用するのに適しており、図10に示すステップに対する何らかの改善(refinement)、補助、またはコンテキストに関するアクションを含む。また、図11は、図9または図10に示すステップも組み込む。特に明記されなければ、これらの図に示されるまたは他で開示される技術的プロセスは、例えば、データー保存サブシステム306によって自動的に実行される。また、プロセスは、人間のアドミニストレーターまたは他の人によるアクションが関与する範囲で、一部自動的にそして一部手作業で実行されてもよい。例えば、ある実施形態では、人間が、非クリティカル・データーのために予約される(1116)べきアパーチャの最小割合または最大割合を指定してもよい。本明細書において技術革新と考えられるプロセスには、全体的に手作業のものはない。所与の実施形態では、図示するプロセスのステップの内0以上は、恐らくは異なるパラメータまたはデーターを用いて、繰り返し動作する場合もある。また、実施形態におけるステップは、図10および図11に展開する、上から下への順序以外の異なる順序で実行することもできる。ステップは、順次、部分的に重複して、または完全に並列に実行することもできる。具体的には、プロセス中に実行されるステップを示すために、フローチャート1000のアクション項目またはフローチャート1100のアクション項目を横断する(traverse)順序は、プロセスの実行毎に変化してもよい。また、フローチャートの横断順序は、プロセスの実施形態毎に変化してもよい。また、実行するプロセスが動作可能であり、少なくとも1つの請求項に従うのであれば、ステップを省略する、組み合わせる、名称変更する、類別し直す、1つ以上の機械上で実行する、または図示するフローから逸脱することも可能である。
【0144】
[00248] ある実施形態は、コンピューティング・システムにおいてデーター保存方法を使用または提供する。この方法は、バッテリー・バックアップ・メモリーのアパーチャにデーター集合A-データーを格納する要求を受けるステップ1002を含むことができる。アパーチャは、フラッシュ・オーダー312を有する。フラッシュ・オーダーは、データー完全性の脅威314に応答して、データーをアパーチャからアパーチャ関連不揮発性ストレージにコピーする(908)順序である。フラッシュ・オーダーは、アパーチャのフラッシュ先端と、アパーチャのフラッシュ後端とを定める。A-データーは、クリティカル・データーに指定されたデーターを含む。
【0145】
[00249] また、この方法は、アパーチャの未割り当てメモリーの一部分A-メモリーを識別するステップ1004も含むことができ、A-メモリーはA-データーを保持できるだけ十分に大きく、A-メモリーは、アパーチャの他のいずれの未割り当てメモリーの他のいずれのアドレスよりもアパーチャのフラッシュ先端に近いアドレスを有する。また、この方法は、A-メモリーに割り当て済みの印を付けるステップ1006と、A-データーのコピーをA-メモリーに入力するステップ1008も含むことができる。
【0146】
[00250] また、この方法は、データー集合Z-データーをアパーチャに格納する要求を受けるステップ1104も含むことができ、Z-データーは、クリティカル・データーに指定されたデーターを全く含まない。
【0147】
[00251] また、この方法は、アパーチャの未割り当てメモリーの一部分Z-メモリーを特定するステップ1004も含むことができ、Z-メモリーはZ-データーを保持するだけ十分に大きく、Z-メモリーは、アパーチャの他のいずれの未割り当てメモリーの他のいずれのアドレスよりもアパーチャのフラッシュ後端に近いアドレスを有する。また、この方法は、Z-メモリーに割り当て済みの印を付けるステップ1006と、Z-データーのコピーをZ-メモリーに入力するステップ1008とを含むことができる。
【0148】
[00252] このような方法によって、フラッシュ-オーダーにおいて非クリティカル・データーの前にクリティカル・データーをバッテリー・バックアップ・メモリーに入力しない場合とは対照的に、フラッシュ-オーダーにおいて非クリティカル・データーの前にクリティカル・データーをバッテリー・バックアップ・メモリーに入力することによって、クリティカル・データーをフラッシュするのに成功し(1012)、したがってそれを保存する(1102)可能性1140が高くなる(1138)。
【0149】
[00253] ある実施形態では、この方法は、更に、少なくとも部分的に、バッテリー・バックアップ・メモリーのバッテリー特性に基づいて、アパーチャのサイズ1108を決定するステップ1106も含んでもよい。例えば、容量が小さいバッテリー、古いバッテリー、信頼性が低いバッテリー程、アパーチャが小さくなってもよい。ある実施形態では、この方法は、更に、少なくとも部分的に、バッテリー・バックアップ・メモリーのバッテリー特性に基づいて、アパーチャの位置1110を決定するステップ1106を含んでもよい。例えば、容量が小さい、古い、または信頼性が低いバッテリーによってバックアップされるメモリーにおけるアパーチャに代わって、新しい、容量が大きい、または信頼性が高いバッテリーによってバックアップされるメモリーにおいてアパーチャを選択してもよい。ある実施形態では、この方法は、少なくとも部分的に、バッテリー・バックアップ・メモリーのバッテリー特性における変化に基づいて、例えば、バッテリーがもっと新しい、大きい、または信頼性が高いバッテリーと交換されるときに、アパーチャ・サイズを大きくすることによって、アパーチャのサイズを変更するステップ1114、またはアパーチャを移動させるステップ1115を含んでもよい。本明細書において開示する他のステップと同様、これらのステップも所与の実施形態では組み合わせてもよい。
【0150】
[00254] ある実施形態では、この方法は、更に、アパーチャの少なくともディフラグ部分をディフラグするステップ1120を含んでもよく、ディフラグ部分はクリティカル・データーを含む。本明細書の他の章で論じたように、ディフラッギング1120はフラッシュ・ディフラッギングを指す。統合ディフラッギングは、思わぬ結果(side-effect)が生じるかもしれないが、フラッシュ・ディフラッギング1120として機能するには本質的に十分でない。ディフラッギング1120は積極的(proactive)であってもよい。また、ディフラッギング1120が誘起されるのは、テナントまたはプロセスが終了するとき、テナントまたはプロセスから抜ける(vocate)とき、または移転するときでもよい。
【0151】
[00255] ある実施形態では、この方法は、更に、ワークロードのクリティカル性、仮想機械の優先度、またはカスタマー・ステータスという判断基準602の内、少なくとも1つに基づいて、A-データーの少なくとも一部分をクリティカル・データーに指定するステップ1132を含んでもよい。
【0152】
[00256] ある実施形態では、この方法は、データー完全性の脅威を検出するステップ1010と、クリティカル・データーの全てをアパーチャから不揮発性ストレージにフラッシュするステップ1012と、少なくとも一部の非クリティカル・データーをアパーチャから不揮発性ストレージにフラッシュし損なうステップ1122とを含んでもよい。例えば、バッテリーに蓄えられている電力が、アパーチャ全体をフラッシュするには十分ではないかもしれないが、とは言え、全てのクリティカル・データーをフラッシュするには十分であるかもしれない。このシナリオ例は、バッテリー電力が十分であったならば、クリティカル・データーがフラッシュされてから非クリティカル・データーがフラッシュされ終えるように、クリティカル・データーを入力する利点を示す。
【0153】
[00257] ある実施形態では、この方法は、データー完全性の脅威を検出するステップ1010と、少なくともクリティカル・データーの全てをアパーチャから不揮発性ストレージにフラッシュするステップ1012と、次いでフラッシュしたデーターの全てを不揮発性ストレージから復元するステップ910とを含んでもよい。フラッシュされたクリティカル・データーは、揮発性メモリー、データーがフラッシュされた元のバッテリー・バックアップ・メモリー、またはデーターがフラッシュされた元のバッテリー・バックアップ・メモリーとは異なるバッテリー・バックアップ・メモリーの内少なくとも1つに復元する(910)ことができる。
【0154】
[00258] ある実施形態では、この方法は、アパーチャ外部、そしてアパーチャ関連不揮発性ストレージ外部に、Z-データーの少なくとも1つのコピーを保持するステップ1126を含んでもよい。即ち、データー保存用システムを構築するとき、非クリティカル・データーの複製は、クリティカル・データーが注意深い入力(placement)1008およびフラッシング1012に依拠することと両立する(compatible)。
【0155】
[00259] ある実施形態では、バッテリー・バックアップ・メモリーのアパーチャは、ここではMで示す物理機械内に常駐し(1124)、アパーチャにA-データーを格納する要求は、ここではNで示す異なる物理機械から送られた(1112)。例えば、図2または図8に示す構成では、計算ノードおよびストレージ・ノードは異なる物理機械にすることができる。代わりの構成では、これらは同じ基本物理ハードウェア上で実行する仮想デバイスであることも可能である。
【0156】
[00260] ある実施形態では、この方法は、A-データーを1つのストレージ・ノードのみに格納し、Z-データーのコピーを複数のストレージ・ノードに格納するステップを含んでもよい。即ち、ある例では、クリティカル・データーの保存は入力1008およびフラッシング1012のみに依拠するが、非クリティカル・データーの保存は少なくとも部分的に複製226に依拠する。
【0157】
[00261] 構成記憶媒体(configured storage medium)
[00262] ある実施形態は、構成コンピューター読み取り可能記憶媒体112を含む。記憶媒体112は、ディスク(磁気、光、またはこれら以外)、RAM、EEPROMS、または他のROM、および/または具体的にはコンピューター読み取り可能記憶媒体(単なる伝搬信号ではない)を含む、他の構成可能なメモリーを含むことができる。構成された記憶媒体とは、具体的に、CD、DVD、またはフラッシュ・メモリーのような、リムーバブル記憶媒体114としてもよい。リムーバブルであってもなくてもよく、揮発性であってもなくてもよい汎用メモリーは、アロケーター422、ディフラガー408、およびマッピング814というような品目を使用して、データー118および命令116の形態で構成して、実施形態にすることができる。データー118および命令116は、構成記憶媒体を形成するために、リムーバブル記憶媒体114および/またはネットワーク接続のような他のソースから読み取られる。構成記憶媒体112は、コンピューター・システム102に、本明細書において開示した通りに、データー保存のための技術的プロセス・ステップを実行させることができる。このため、図は、構成記憶媒体の実施形態およびプロセス(別名、方法)の実施形態、ならびにシステムおよびプロセスの実施形態を例示するのに役立つ。具体的には、図9図10、または図11において示したプロセス・ステップ、もしくは本明細書において教示したプロセス・ステップはいずれも、記憶媒体を構成し、構成記憶媒体の実施形態を形成するために使用することができる。
【0158】
[00263] ある実施形態は、データー118および命令116が構成されたコンピューター読み取り可能記憶媒体112、114を使用または提供する。命令116がプロセッサー110によって実行されると、コンピューティング・システムまたはそのサブシステムに、データー保存のための方法を実行させる。この方法は、複数の要求を受けるステップ1002を含む。各要求は、それぞれのデーター集合をバッテリー・バックアップ・メモリーのアパーチャ220に格納することを求める。アパーチャは、フラッシュ・オーダー312を有する。フラッシュ・オーダー312は、データー完全性の脅威に応答して、アパーチャからアパーチャ関連不揮発性ストレージにデーターをコピーする順序である。フラッシュ・オーダーは、アパーチャのフラッシュ先端806と、アパーチャのフラッシュ後端808とを定める。それぞれのデーター集合は、各々、クリティカル・データーに指定されたデーターを含む。
【0159】
[00264] また、この方法は、要求の内少なくとも2つについて、アパーチャの未割り当てメモリーのそれぞれの部分を識別するステップ1004を含む。未割り当てメモリーの各部分は、それぞれのデーター集合を保持するだけ十分に大きく、識別された未割り当てメモリーのそれぞれの部分は、アパーチャの他のいずれの未割り当てメモリーの他のいずれのアドレスよりもアパーチャのフラッシュ先端に近いアドレスを有する。
【0160】
[00265] また、この方法は、要求の内少なくとも1つについて、識別された未割り当てメモリーのそれぞれの部分に、割り当て済みの印を付けるステップ1006と、それぞれのデーター集合のコピーをその中に入力するステップ1008とを含む。
【0161】
[00266] また、この方法は、データー完全性の脅威を検出するステップ1010と、アパーチャにコピーされたクリティカル・データーの全てを、アパーチャから不揮発性ストレージにフラッシュするステップ1012とを含む。したがって、この方法は、データー完全性の脅威にも拘わらず、アパーチャにコピーされたクリティカル・データーの全てを保存する(1102)。
【0162】
[00267] ある実施形態では、この方法は、更に、アパーチャ・サイズ1108またはアパーチャ・アドレス1110の内少なくとも1つを指定するステップ1106を含み、この指定は、バッテリー容量502、バッテリーの経年数506、またはバッテリーの信頼性値504の内少なくとも1つに基づく。
【0163】
[00268] ある実施形態では、フラッシュするステップ1012は、統一拡張可能ファームウェア・インターフェースを有するファームウェア310を実行するステップ1142を含む。
【0164】
[00269] ある実施形態では、この方法は、更に、クリティカル・データーに指定されていないデーターを保持するために、アパーチャの内少なくとも10パーセント1118を予約するステップ1116を含む。たとえば、20パーセントを予約すると、または30パーセントを予約する場合、各々、少なくとも10パーセントを予約する(1116)条件を十分に満たす(qualify as)。ある実施形態では、予約(1116)される部分1118は、せいぜい10パーセント、またはせいぜい20パーセントである。また、予約1116は、アパーチャまたはメモリー・パーティションをサブパーティションに分割することと見なす、または分割するように実施することもできる。
【0165】
[00270] ある実施形態では、この方法は、更に、クリティカル・データーに指定されたデーターの空間を作るために、クリティカル・データーに指定されていないデーターを、アパーチャ外部の記憶位置に移動させるステップ1128を含む。ある実施形態では、この方法は、アパーチャの少なくとも一部分をディフラグするステップ1120を含み、これによって、アパーチャの2つの割り当て済み部分間に以前に位置していた未割り当て部分を削減する(1134)または消滅させる(1136)。
【0166】
[00271] 追加の例および観察事項
[00272] 尚、本開示のあらゆる部分、またはその中のあらゆる特定の詳細が、実施可能性、書面による説明、または最良の態様というような、法的判断基準を必ずしも満たす必要はないことは、当業者には認められよう。また、実施形態は、特定のネットワーク、プロトコル、ツール、識別子、フィールド、データー構造、関数、秘密または他の証明(secrets or other proofs)、あるいは本明細書において説明した他の実施態様の選択肢には限定されない。他のいずれの特許開示との明らかな矛盾は、本技術革新の所有者からであっても、本特許開示において提示される請求項を解釈するには全く役には立たない。これは本開示の全ての部分に関係することを理解した上で、いくつかの追加の例および観察事項を提供する。
【0167】
[00273] ある実施形態では、揮発性メモリー402はバッテリー216によってバックアップされ、データーの完全性が脅かされるとき(314)(たとえば、差し迫った電力逸失またはリブートによって)、データー118のコピーを不揮発性ストレージ902において作成するために、素早くフラッシュする(1012)ことができる。フラッシング1012は、フラッシュ・オーダー312によって制約されるので、一部のデーターが安全な場所にフラッシュされないおそれがある。例えば、バッテリーの故障または消耗の結果、フラッシュが不完全になることもある。フラッシュは、データー・ライフサイクル処理(data lifecycle operation)の一例であり、他のいくつかの例には、割り当て、使用、複製、割り当て解除、移動、ディフラグ、および復元がある。
【0168】
[00274] ある実施形態は、十分に大きなバッテリーをプロビジョニングするという目標を掲げて、設計および実装される。したがって、アパーチャ・サイズは、バッテリーが保護できるデーター118の量に依存するとしてよく、このデーター量はアーキテクトまたは開発者が決断する。したがって、バッテリーが大きい程、バッテリーが新しい程、バッテリーの信頼性が高い程、大きなアパーチャが得られ、逆に、バッテリーが小さい/古い/信頼性が低い程、またはバッテリー特性が不明である場合、アパーチャは小さくなるのはもっともである。また、バッテリーは、ある時間期間の経過に連れて、出力レベルが下がり(de-rated)/劣化するおそれがあるので、大量のデーターを退避させる能力は、時間の関数として影響を受ける可能性がある。アパーチャ220は、それに応じてサイズを変更することができる。
【0169】
[00275] ある実施形態では、混成配置命令(hybrid placement order)を実施し、これによって、クリティカル・データーはアパーチャのフラッシュ先端806またはその近くに集められ(group)、非クリティカル・データーはアパーチャのフラッシュ後端808またはその近くに集められる。非クリティカル・データーまたはクリティカル・データー(あるいは双方)は、他のアパーチャに、またはバッテリー・バックアップされたいずれのアパーチャの外部にある他のメモリーに複製することも可能である。
【0170】
[00276] 本明細書において教示したデーター保存技術の存在は、場合によっては、文書化から、メモリー・マップ814から、データー・クリティカル性についての情報と組み合わされたメモリー・ダンプから、機械のプローブまたはそれらの間における通信から、合同検査アクション・グループ(JTAG)のデバッギングから、NVDIMM-SW退避/復元検査から、ファームウェアまたは他のコード・リストから、他の証拠から、あるいはこれらの組み合わせから推定することもできる。
【0171】
[00277] ある実施形態は、NVDIMM-SW退避アルゴリズムを提供または使用する。このアルゴリズムは、ワークロードのクリティカル性612を、複数のNVDIMM-SWデーター集合を順位付けて並び替える方法として織り込む(factor in)ことができる。ある実施形態は、仮想機械ACPIアドレス範囲によって記述され、仮想機械間およびSCMパーティションにマッピングする(222、224)ストレージ・クラス・メモリー(SCM)パーティション904を実装する。これは、システム・ファームウェアのランタイム・コンポーネントにおいて、例えば、Intel/AMD社のCPUについてはUEFI/SMMにおいて、そしてARM社のCPUについてはUEFI/Trust Zonesにおいて、NVDIMM-SW退避ルーティング(routing)を誘導する(guide)。ある実施形態は、任意のグレースフルまたはアングレースフル・シャットダウンにおいてコンテンツ118を保護し(908)、仮想機械のコンテンツ118を、次のブート時に復元する(910)ことを可能にする。ある実施形態では、NVDIMM-SWは、データーへの素早いアクセスを確保し易くし、同時に、ノードがオフラインになるというようなサービスの混乱という事象においても、不揮発性ストアへのデーター・フラッシュを確保するのに役立つ。
【0172】
[00278] ある実施形態では、フラッシュを誘起する可能性があるイベントには、例えば、順序正しいシャットダウン、ハード・リブート、またはソフト・リブートを含むことができる。
【0173】
[00279] 順序正しいシャットダウンは、実行中のソフトウェアに、ディレクトリー、割り当て表、およびデーターの編成を記述する他の構造の現行バージョンを退避することによって、データー改変を防止し、更にデーター自体を退避する機会を与える。例えば、シャットダウン・コマンドは、アプリおよび他のプロセスに、シャットダウンするように命令し、次いでこれらのプロセスに、データーを不揮発性メモリーにフラッシュし、開いているあらゆるファイルを閉じ、割り当てられているメモリーをOSに戻し開放する機会を与える。また、シャットダウン・コマンドは、デバイス・ドライバーに、IOデーターおよび現在のディレクトリー情報を、付随する(attached)デバイスにフラッシュするように命令する。ACPI準拠システムでは、シャットダウン・コマンドが、給電(Power)コマンドの発行を行わせることもでき、給電コマンドは、NVDIMMに、その揮発性部分からその不揮発性部分にデーターを退避させる(908)。
【0174】
[00280] ハード・リブートは、おそらく電源ボタン以外では、無電力で開始する。電力がシステムに与えられる。ブート・メモリー・コード(BIOS/EFI/UEFI)がPOSTを実行する。次いで、ブート・メモリー・コードがブートローダーをRブート・デバイスからAMにロードする。ブートローダーは、不揮発性作業メモリーからまたはネットワーク接続を介して、OSをRAMにロードする。ハード・リブートが開始したときにRAM内にあったものはいずれも、潜在的に上書きされる可能性がある。
【0175】
[00281] ソフト・リブートは、システムへの給電から開始する。電源投入時の自己検査(POST:Power On Self-Test)を飛ばす。ブート・メモリー・コードは、ブートローダーをRAMにブート・デバイスからロードする。ブートローダーは、不揮発性作業メモリーから、またはネットワーク接続を介して、OSをRAMにロードする。ソフト・リブートが開始したときにRAM内にあったものはいずれも、潜在的に上書きされる可能性がある。
【0176】
[00282] ある実施態様では、OSが、OSブートの後UEFIランタイム機能のために保存するメモリー領域904を特定するため、およびOS使用のために取り戻すエリアを特定するために、システム・メモリー・マップを使用する。ある実施態様では、メモリー・マップは、UEFIプリブートの全てのフェーズにわたって展開される。コードおよびデーターを格納するためにメモリーが割り当てられるに連れて、および割り当てられるときに、メモリー・マップは変化する。メモリー割り当ての形式は、様々であり、コードおよびデーターの型に基づく。例えば、ブート・サービス・コード、ブート・サービス・データー、ランタイム・コード、ランタイム・データー、ACPINVSメモリー、SMM等に基づく。
【0177】
[00283] ある実施形態では、NVDIMM-SWが存在し、ファームウェア補助手段(firmware assisted means)を提供し、このファームウェア補助手段によって、DIMMおよびブロック・ストレージ・デバイス(NVMeまたはSATA等)の結合を通じて、不揮発性DIMMをエミュレートする。目標は、標準主導の手法を採用すること、つまりNVDIMM-SWデバイスをオペレーティング・システムにシームレスに公開する(publish)ことである。通常の動作モードでは、プリブート・ファームウェアは、利用可能なNVDIMM-SWデバイスをオペレーティング・システムに公開する。NVDIMM-SWを活用するアプリケーションからの全てのWRITE動作は、NVDIMM-SWと関連付けられたDIMM領域を目標とする。SAVE#は、グレースフルまたは非グレースフルいずれかのシャットダウンのシナリオの間に開始される。SAVE#動作は、システム・シャットダウンおよびその後の再開の前に完了する。RESTORE#動作は、制御がオペレーティング・システムに戻される前に、プリブート・ファームウェアによって開始される。NVDIMM-SWは、DDR4DIMMおよびオンボードのM.2 NVMeモジュールを結合することによって構築することができる。NVDIMM-SWパラダイムは、バイト・アドレス可能なメモリーをエミュレートするために、従前からのDIMMを再利用する。ある実施態様では、システムには、同じサイズおよび同じメモリー型の全てのDIMMが装備される(populate)。NVDIMM-SWは、2つの動作モード、即ち、NVDIMM非インターリーブまたはNVDIMMインターリーブのいずれかをサポートすることができる。NVDIMM非インターリーブでは、設定選択肢を通じて選択される不揮発性メモリーのサイズに応じて、スロット1上のDIMMが不揮発性NVDIMM(SW)NVDIMMとして選択される。最大不揮発性メモリー・サイズは、非グレースフルな退避のシナリオ中における電力持続期間に依存する。非インターリーブNVDIMM-SWは、NVDIMMーNと全く同じであるが、全てのI2C(シリアル・プロトコル)_DSM(デバイス特定方法)データーが代わりにエミュレートされることを除く。NVDIMMインターリーブでは、NUMAをサポートするために、ソケット内部にある全てのDIMMが一緒にインターリーブされる。また、各ソケットの最上位メモリーは、選択された不揮発性メモリー・サイズに基づいて、システム・メモリー・マップから、NVDIMM-SWとして区分けされる(carved out)。イベント処理(event handling)の目標は、データーを揮発性メモリーから不揮発性メモリー領域に退避しようと試みることである。また、ファームウェア・スタック(UEFI、BMC)は、帯域内(inband)および帯域外リスナー(out-of-band listeners)双方についてのエラーを記録する役割も担う。
【0178】
[00284] いくつかの追加の組み合わせおよび変形
[00285] コード、データー構造、ロジック、コンポーネント、通信、および/またはそれらの機能的同等物のこれらの組み合わせの内任意のものを、以上で説明したシステムおよびそれらの変形(variation)の内任意のものと組み合わせることもできる。プロセスは、本明細書において説明した任意のステップを、動作可能な任意の部分集合または組み合わせまたはシーケンスに含めることもできる。各異形(variant)は、単独で、または他の異形の任意の1つ以上との組み合わせで行われてもよい。各異形は、前述のプロセスの内任意のものとともに行われてもよく、各プロセスは、他のプロセスの任意の1つ以上と組み合わせることもできる。各プロセスまたはプロセスの組み合わせは、異形を含んで、以上で説明した構成記憶媒体の組み合わせおよび異形の内任意のものと組み合わせることもできる。
【0179】
[00286] 結論
[00287] 端的に言うと、本明細書において提示した教示は、コンピューティング・システムにおいてデーター保存機能を強化する(enhance)ために適用することができる。ある実施形態では、動作ステップとデバイス特性とを組み合わせることによって、完全性の脅威314に対抗してデーター118を保存し易くする。データー118は、カスタマー606の要求608、ワークロード610のクリティカル性612、または仮想機械206のクリティカル性604というような判断基準602に基づいて、クリティカル・データー412および非クリティカル・データー416に分割される。データー118は、計算ノード202において生成し、例えば、ストレージ・ノード212における格納のために送る(222)ことができる。クリティカル・データー412は、バッテリー・バックアップ・メモリー218のアパーチャ220において、物理アドレス424に格納され、ここから、フラッシュ・オーダー312にしたがって非クリティカル・データー416よりも前にフラッシュされる(1012)。フラッシュ・オーダー312は、バッテリー・バックアップ・メモリーの回路によって課せられ(impose)、または外部の力、例えば、システム・ファームウェア420によってバッテリー・バックアップ・メモリーに課せられる。フラッシュ・オーダー312は、例えば、ボトムアップNVDIMM404のフラッシュ・オーダーでもよい。複製されたコピーを保存する(1102)ためにそれをフラッシュする(1012)のに間に合わなかった場合、データー118の冗長コピー226(特に、非クリティカル・データー416)も保持する(1126)ことがでいる。バッテリー・バックアップ・メモリーのアパーチャ220は、バッテリーの特性406にしたがって、大きさが決められ(1106)そして配置され(1106)、条件が変化するに連れて、配置換え(1115)または大きさの決め直し(1114)を行うこともできる。フラッシュ・ディフラッギング1120は、特に、クリティカル・データー412を保持するアパーチャの部分414内において、アパーチャ220の使用を最適化するために行われる。
【0180】
[00288] また、実施形態は、一般データー保護規則(GDPR:General Data Protection Regulation)のような、検査済みのおよび該当するセキュリティ管理およびプライバシー管理も含む、またはこれらから恩恵を受けると考えられる。例えば、マルウェアの注入または有効化(activation)によるコンピューティング・システムの悪用を防止するのに役立てるため、そして増強システムがプログラム実行中に処理するかもしれないいかなる個人またはプライベート情報も改竄されるのを防止するのに役立てるために、しかるべき対策を講じなければならないことは、暗黙裏に了解されよう。本明細書において教示したツールおよび技法の使用は、このような管理の使用と両立することができる。
【0181】
[00289] 本明細書では、特定実施形態について、プロセスとして、構成記憶媒体として、またはシステムとして、明示的に図示および説明したが、1つの種類の実施形態の論述が他の実施形態の種類にも総合的に広がることは認められよう。実例をあげると、図9図10、および図11と関連付けたプロセスの説明は、構成記憶媒体を説明するのにも役立ち、更に他の図と関連付けて論じられたものと同様に、システムおよび製造の技術的効果および運用(operation)について説明するのにも役立つ。だからと言って、1つの実施形態からの限定が必ずしも他のものに読み込まれるということにはならない。具体的には、プロセスは、システムまたは構成メモリーのような製品について論じる間に提示されたデーター構造および構成に必ずしも限定されない。
【0182】
[00290] 尚、実装の詳細は、特定のAPI、特定のフィールド、特定の種類のコンポーネント(ハードウェアおよびソフトウェア)、および特定のサンプル・プログラムのような特定のコードに関連があるとしてよく、したがって全ての実施形態に必ずしも現れる訳ではないことは、当業者には理解されよう。また、詳細を論じるときに使用されたプログラムの識別子および何らかの他の用語は、実施態様に特定的であり、したがって必ずしもあらゆる実施形態に関連がある訳ではないことも、当業者には理解されよう。しかしながら、必ずしもここに提示する必要はないが、このような詳細は、コンテキストを提供することによって、読者を助けることができ、および/または本明細書において論じた技術の多くの可能な実施態様の内いくつかを例示することができる。
【0183】
[00291] 全ての特許請求した実施形態または特許請求可能な実施形態を例示するが包括的でない技術的プロセス、技術的効果、技術的メカニズム、および技術的詳細を含む、本明細書において提示した項目に十分な注意を払えば、本開示および本明細書において説明した実施形態は、専門的技能(technical art)以外の主題を対象とするのではなく、原理または本来の原因もしくは動機のようなそれ自体のいずれの理念(any idea of itself)も、単なる結果自体も、心理作用または心的処理過程も、ビジネス・モデル(business method)または普及している経済的慣行も、人間の活動を組織化する単なる方法も、自然法則自体も、当然起こることまたはプロセスも、生体または生体の一部も、数式自体も、分離されたソフトウェア(isolated software)自体も、単に従来からのコンピューターも、全体的に知覚できないあらゆるものまたはあらゆる抽象的概念自体も、無意味な解決後の活動(post-solution activities)も、指定されていない装置上に全体的に実装されたあらゆる方法も、有用で具体的である結果を生み損ねたあらゆる方法も、全ての利用分野のあらゆる先の占有(preemption)も、特許保護が求められるまたは認可もしくは施行されている司法管轄地域の法律の下において特許保護には不適格なあらゆる他の主題も対象としないことは、当業者には理解されよう。
【0184】
[00292] 本明細書におけるある特徴Xを有する実施形態に対する引用、および本明細書の他の場所におけるある特徴Yを有する実施形態に対する引用は、特徴Xおよび特徴Y双方を有する実施形態を、この開示から除外することにはならない。但し、そのような除外が本明細書において明示的に述べられる場合を除く。全ての可能な否定的な請求項の限定は、実施形態の一部であると規定された特徴はいずれも、他の実施形態における包含から明示的に除去されてもよいという意味で、その特定の除外が本明細書におけるいずれの例にも示されなくても、本開示の範囲内に該当する。「実施形態」という用語は、本明細書では、「該当法規を遵守する形で適用される場合のプロセス、システム、製品、構成コンピューター読み取り可能記憶媒体、および/または本明細書における教示の他の例の」、より便利な形態として使用されるに過ぎない。したがって、所与の「実施形態」は、その実施形態が少なくとも1つの請求項と一致するのであれば、本明細書において開示した特徴の任意の組み合わせを含んでもよい。
【0185】
[00293] 図に示されるあらゆる品目が、必ずしもあらゆる実施形態に存在する訳ではない。逆に、実施形態が、図に明示的に示されない品目(1つまたは複数)を含むこともある。ここでは、本文および図面において、具体的な例によって、いくつかの可能性を示したが、実施形態はこれらの例から逸脱してもよい。実例をあげると、ある例の特定の技術的効果または技術的特徴を、省略する、改名する、異なるグループに分ける、繰り返す、ハードウェアおよび/またはソフトウェアにおいて異なってインスタンス化するのでもよく、あるいはこれらの例の2つ以上に現れる効果または特徴の混合であってもよい。1つの位置において示される機能が、ある実施形態における異なる位置に設けられてもよく、全体的に見て相互作用するモジュールの集合体から所望の技術的効果を必ずしも除外することなく、所与の実装において機能性モジュールを種々の方法で定義できることは、当業者には認められよう。空間の制限のためまたは便宜上、図では別個のステップを1つのボックス内に一緒に示す場合もあるが、別々に実行可能であるのはもっともである。例えば、方法の所与の実行において、1つのステップを実行し、他のステップを実行しなくてもよい。
【0186】
[00294] 全体を通じて、参照番号によって図面を参照した。図または本文において、所与の参照番号に関連する言葉遣いにおける明らかな矛盾はいずれも、その参照番号によって参照されるものの範囲を単に広げるものとして理解されてしかるべきである。同じ参照番号が使用されても、所与の参照番号の異なるインスタンスが、異なる実施形態を指すこともある。同様に、所与の参照番号が、動詞、名詞、および/または各々の対応するインスタンスを指すために使用されることもある。例えば、プロセッサー110が、命令を実行することによって、それらを処理する(110)ことができる。
【0187】
[00295] 本明細書において使用する場合、「a」、「an」、および「the」のような用語は、示される項目またはステップの1つ以上を含むものとする。具体的には、請求項において、ある項目を引用するときは、通常、少なくとも1つのそのような項目が存在することを意味し、そしてあるステップを引用するときは、そのステップの少なくとも1つのインスタンスが実行されることを意味する。同様に、「です」(is)および他の動詞単数形は、文法的な誤りや誤解を避けるために、コンテキストが許すときには、「です」(are)および他の複数形の可能性も包含することは理解されてしかるべきである。
【0188】
[00296] 見出しは便宜上に過ぎない。所与の話題についての情報は、見出しがその話題を示す章以外で見出されることもある。
[00297] 提出された全ての請求項および要約書は、明細書の一部である。
【0189】
[00298] 本明細書において使用したいずれかの用語が業界標準を暗示するまたは業界標準に言及する限りにおいて、そして適用法がそのような標準の特定のバージョンの識別を要求する限りにおいて、本開示は、適用される特許法の下における本開示の最も速い優先日において、少なくとも草稿の形態で(もっと新しいバージョンがある場合、最終形態が優先される)公開されている標準の最新バージョンに言及することは理解されてしかるべきである。
【0190】
[00299] 以上、例示的な実施形態について図面に示し以上で説明したが、請求項に明記した原理および概念から逸脱することなく、多数の変更を行うことができること、そしてこのような変更が必ずしも抽象的な概念全体を包含しないことは、当業者には明白であろう。主題について、構造的特徴および/または手順的アクトに特定の文言で説明したが、添付する請求項において定められる主題は、必ずしも、請求項の上で説明した特定の技術的特徴やアクトに限定されないことは理解されよう。所与の定義または例において識別されたあらゆる手段または態様または技術的効果が、あらゆる実施形態に存在することも、あらゆる実施形態において利用されることも必要でない。逆に、説明した特定の特徴およびアクトならびに効果は、請求項を実施するときの考慮のために、例として開示されたまでである。
【0191】
[00300] 全体の抽象的な理念を包み込むには足りないが請求項の均等の意味および範囲に該当する全ての変更は、法律によって認められる最大限の範囲まで、それらの範囲内に受け入れられるものとする。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11