(57)【要約】【課題】システムメモリから不揮発性データストレージに移行されるアプリケーションデータオブジェクトの選択的な保持を提供する。【解決手段】システムメモリに格納されているアプリケーションプログラムデータは選択的に保持することができる。指示をアプリケーションプログラムに出して、システムメモリに格納されているアプリケーションデータオブジェクトを保持するものとして処理することができる。システム障害が発生した場合に、データバックアップを、アプリケーションデータオブジェクトに関して有効化して、アプリケーションデータオブジェクトをシステムメモリから不揮発性データストレージにコピーすることができる。システム障害から復旧すると、アプリケーションデータオブジェクトに関するその後のデータバックアップを無効化することができる。幾つかの実施形態では、アプリケーションデータオブジェクトの少なくとも幾つかを復元して、アプリケーションプログラムからアクセスできるようにする。【選択図】図１
2018055727.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上のプロセッサと、
不揮発性データストレージと、
プログラム命令を格納するシステムメモリと、
を備えるシステムであって、前記プログラム命令は、前記１つ以上のプロセッサによって実行されたときに、メモリバックアップコントローラを実装し、
前記メモリバックコントローラは、
インターフェースを介して、前記１つ以上のプロセッサで実行されるアプリケーションプログラムから、前記システムメモリに格納されたアプリケーションデータオブジェクトを保持するものとして処理することを示す要求を受信し、
前記要求の受信に応答して、システム障害が発生した場合に、前記アプリケーションプログラムに対応する前記アプリケーションデータオブジェクトを保持するために、前記システムメモリに格納された前記アプリケーションデータオブジェクトに対するデータバックアップを有効化する
ように構成され、前記データバックアップは、前記システムメモリに格納された前記アプリケーションデータオブジェクトを、前記不揮発性データストレージにコピーする、
システム。
【請求項２】
前記メモリバックアップコントローラは、
前記システム障害から復旧すると、前記アプリケーションプログラムがアクセスできるようにするために、前記不揮発性データストレージに格納されたアプリケーションデータの範囲のうちの少なくともいくつかの、前記システムメモリへの復元を指示する、
ようにさらに構成される、請求項１に記載のシステム。
【請求項３】
前記メモリバックアップコントローラは、
前記システム障害から復旧すると、前記システムメモリに格納されたアプリケーションデータの範囲の、前記不揮発性データストレージへのその後のデータバックアップを無効化する、
ようにさらに構成される、請求項１に記載のシステム。
【請求項４】
前記インターフェースは、前記メモリバックアップコントローラによる前記有効化の実行を指示するアプリケーションプログラミングインターフェース（ＡＰＩ）である、請求項１に記載のシステム。
【請求項５】
前記メモリバックアップコントローラは、前記受信及び前記有効化を、前記アプリケーションプログラムを含む複数のアプリケーションプログラムのうちの少なくとも１つに対応する複数のアプリケーションデータオブジェクトのうちの異なるアプリケーションデータオブジェクトについて、個別にさらに実行する、
ように構成される、請求項１に記載のシステム。
【請求項６】
システム障害が発生した場合に、前記システムメモリに格納された前記アプリケーションデータオブジェクトに対するデータバックアップを有効化して、前記アプリケーションプログラムに対応する前記アプリケーションデータオブジェクトを保持するために、前記メモリバックアップコントローラは、
前記アプリケーションデータオブジェクトを格納している前記システムメモリ内の１つ以上のストレージロケーションを特定してデータバックアップのために有効化し、
前記システム障害が検出されると、前記システムメモリの前記特定された１つ以上のストレージロケーションに対応する前記不揮発性データストレージの１つ以上のバックアップロケーションへのデータバックアップ動作を実行し、
前記アプリケーションデータオブジェクトに対するマッピング情報を更新して、前記アプリケーションデータオブジェクトに対応する前記特定された１つ以上のストレージロケーションを前記１つ以上のバックアップロケーションにリンクさせる、
ようにさらに構成される、請求項１に記載のシステム。
【請求項７】
前記メモリバックアップコントローラは、
前記アプリケーションプログラムがアクセスすることができるようにするために、前記不揮発性データストレージに格納された前記アプリケーションデータオブジェクトのうちの少なくともいくつかの、前記システムメモリへの復元を指示するようにさらに構成され、前記メモリバックアップコントローラは、
前記マッピング情報に少なくとも部分的に基づいて、前記不揮発性データストレージにバックアップされた前記アプリケーションデータオブジェクトを格納するために、前記アプリケーションデータオブジェクトが格納された前記不揮発性ストレージの前記１つ以上のバックアップロケーションと、前記システムメモリの前記１つ以上のストレージロケーションとを特定し、
データを、不揮発性データストレージにおける前記特定されたバックアップロケーションから、前記システムメモリにおける前記特定されたストレージロケーションにコピーする、
ようにさらに構成される、請求項６に記載のシステム。
【請求項８】
システムを実装するコンピューティングデバイスによって実行される方法であって、
インターフェースを介して、前記コンピューティングデバイスにおいて実行されるアプリケーションプログラムから、システムメモリ内のアプリケーションデータオブジェクトを保持するものとして処理するために特定する要求を受信することと、
前記要求の受信に応答して、システム障害が発生した場合に、前記アプリケーションプログラムに対応する前記アプリケーションデータオブジェクトを保持するために、前記システムメモリに格納された前記アプリケーションデータオブジェクトに対するデータバックアップを有効化することと、
を備え、
前記データバックアップは、前記システムメモリに格納された前記アプリケーションデータオブジェクトを、不揮発性データストレージにコピーする、
前記方法。
【請求項９】
システム障害から復旧すると、前記システムメモリに格納された前記アプリケーションデータオブジェクトに対する前記不揮発性データストレージへのその後のデータバックアップを無効化する、
ことをさらに備える、請求項８に記載の方法。
【請求項１０】
前記受信すること及び前記有効化することを、前記アプリケーションプログラムを含む複数のアプリケーションプログラムのうちの少なくとも１つに対する複数のアプリケーションデータオブジェクトのうちの異なるアプリケーションデータオブジェクトについて個別に実行する、
ことをさらに備える、請求項８に記載の方法。
【請求項１１】
メモリバックアップコントローラは、前記システムメモリと前記不揮発性データストレージとの間の通信を指示し、前記インターフェースは、前記メモリバックアップコントローラによって前記有効化の前記実行を指示するアプリケーションプログラムインターフェース（ＡＰＩ）である、請求項８に記載の方法。
【請求項１２】
システム障害が発生した場合に、前記アプリケーションプログラムに対応する前記アプリケーションデータオブジェクトを保持するための、前記システムメモリに格納された前記アプリケーションデータオブジェクトに対する前記データバックアップの前記有効化は、
前記アプリケーションデータオブジェクトを格納している前記システムメモリ内の１つ以上のストレージロケーションを特定してデータバックアップのために有効化し、
前記メモリバックアップコントローラに、前記システム障害が検出されると、前記システムメモリの前記特定された１つ以上のストレージロケーションに対応する前記不揮発性データストレージの１つ以上のバックアップロケーションへのデータバックアップ動作を実行することを指示し、
前記アプリケーションデータオブジェクトに対するマッピング情報を更新して、前記アプリケーションデータオブジェクトに対応する前記特定された１つ以上のストレージロケーションを前記１つ以上のバックアップロケーションにリンクさせる、
ことを備える、請求項８に記載の方法。
【請求項１３】
前記アプリケーションプログラムがアクセスすることができるようにするために、前記不揮発性データストレージに格納された前記アプリケーションデータオブジェクトのうちの少なくともいくつかの、前記システムメモリへの復元を指示することをさらに備え、前記指示することは、
前記マッピング情報に少なくとも部分的に基づいて、前記不揮発性データストレージにバックアップされた前記アプリケーションデータオブジェクトを格納するために、前記アプリケーションデータオブジェクトが格納された前記不揮発性ストレージの前記１つ以上のバックアップロケーションと、前記システムメモリの前記１つ以上のストレージロケーションとを特定し、
前記メモリバックアップコントローラに指示して、データを、不揮発性データストレージにおける前記特定されたバックアップロケーションから、システムメモリにおける前記特定されたストレージロケーションにコピーする、
ことを備える、請求項１２に記載の方法。
【請求項１４】
システム障害が発生した場合に、前記システムメモリに格納されている前記アプリケーションデータオブジェクトに対するデータバックアップを前記有効化して、前記アプリケーションプログラム用の前記アプリケーションデータオブジェクトを保持する際に、さらに、前記不揮発性データストレージにコピーするときに、前記アプリケーションデータオブジェクトの暗号化を暗号化方式に従って指示することを備え、
前記不揮発性データストレージに格納されて前記システムメモリに移行される前記アプリケーションデータオブジェクトの復元を前記指示して、前記アプリケーションプログラムからアクセスすることができるようにする際に、さらに、前記システムメモリにコピーするときに、前記アプリケーションデータオブジェクトの復号化を前記暗号化方式に従って指示する、請求項１３に記載の方法。
【請求項１５】
前記システムメモリ及び前記不揮発性データストレージが一体として、１つ以上の不揮発性デュアルインラインメモリモジュール（ＮＶ−ＤＩＭＭ）を備える、請求項８に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
アプリケーションプログラムは、増大する量のデータを処理する、および／又はシステムを管理し易くする、又は増大する複雑さの問題を解決し易くする種々のサービス及び機能を提供し続けているので、更に多くのユーザ、クライアント、組織、及びエンティティが、これらのアプリケーションプログラムに依存し、これらのサービス及び機能を確実に提供する。アプリケーションプログラムの信頼性を高めるために、サービス中断から更に迅速に復旧させる種々の技術が開発されている。これらのサービス中断を最小限に抑える１つの方法では、システムメモリのデータバックアップを行って、システム障害が発生した場合にシステムメモリを保持することができるようにしている。システムをリスタートさせると、アプリケーションプログラムは、データバックアップから復元されたデータ及び他の情報へのアクセスを更に迅速に行うことができる。しかしながら、データバックアップ技術を利用する更に高性能の技術が開発されない場合、不測の影響が生じて、アプリケーションプログラムがデータバックアップから得られる利点が台無しになってしまう。
【図面の簡単な説明】
【０００２】
【図１】幾つかの実施形態によるシステムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータを選択的に保持するように構成されるシステムレベルコンポーネントの例示的な動作環境を示すブロック図である。
【図２】幾つかの実施形態によるシステムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータを選択的に保持する様子を明示する一連のブロック図を示す。
【図３】幾つかの実施形態によるシステムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータを選択的に保持する方法を示す上位フローチャートである。
【図４】幾つかの実施形態によるシステムメモリに格納されているアプリケーションデータオブジェクトに関するデータバックアップを選択的に有効化する方法を示すフローチャートである。
【図５】幾つかの実施形態による不揮発性データストレージに格納されているアプリケーションデータオブジェクトの復元を指示する方法を示すフローチャートである。
【図６】幾つかの実施形態によるシステムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータを選択的に保持することができる例示的なシステムを示すブロック図である。
【図７】幾つかの実施形態による例示的なシステムを示す。
【０００３】
種々実施形態が、本明細書において幾つかの実施形態及び例示的な図面を一例として説明されているが、当業者であれば、種々実施形態は、説明されるこれらの実施形態又は図面に限定されないことを理解できるであろう。これらの図面、及びこれらの図面についての詳細な説明は、種々実施形態を開示される特定の形状に限定するものではなく、添付の請求項により規定される精神及び範囲に属する全ての変形物、等価物、及び代替物を含むものであることを理解されたい。本明細書において使用される表題は、単に体系化を目的として表現されているに過ぎず、本記載又は請求項の範囲を限定するために使用するものではない。本出願全体を通じて使用されているように単語「ｍａｙ」は、強制を意味する（すなわち、必須を意味する）のではなく、任意の意味（すなわち、可能性を有しているという意味）で使用される。同様に、単語「ｉｎｃｌｕｄｅ」、「ｉｎｃｌｕｄｉｎｇ」、及び「ｉｎｃｌｕｄｅｓ」は、ｉｎｃｌｕｄｉｎｇ，  ｂｕｔ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ（これらに限定されることなく含む）を意味する。
【発明を実施するための形態】
【０００４】
以下の詳細な説明では、多数の特定の詳細を記載し、特許請求する主題についての完全な理解を提供する。しかしながら、当業者であれば、特許請求する主題は、これらの特定の詳細を用いることなく実施することができることを理解できるであろう。他の例では、当業者には公知であると考えられる方法、装置、又はシステムは、特許請求する主題を不明瞭にしないために詳細には記載されていない。
【０００５】
また、「ｆｉｒｓｔ」、「ｓｅｃｏｎｄ」などの用語は、本明細書においては、種々の構成要素を記述するために用いることができるが、これらの構成要素が、これらの用語によって限定されてはならないことを理解されたい。これらの用語は、１つの構成要素を別の構成要素と区別するためにのみ用いられる。例えば、本発明の範囲から逸脱しない限り、第１コンタクトを第２コンタクトと称することができ、そして同様に、第２コンタクトを第１コンタクトと称することができる。第１コンタクト及び第２コンタクトは共にコンタクトであるが、これらのコンタクトは同じコンタクトではない。
【０００６】
本明細書における本発明についての説明に使用される専門用語は、特定の実施形態を記述するためにのみ用いられるのであり、本発明を限定するために用いられるのではない。本発明についての説明、及び添付の請求項に使用されているように、単数形「ａ」、「ａｎ」、及び「ｔｈｅ」は、前後の文に異なることが明確に記載されていない限り、複数形も含むものとする。また、本明細書において使用される「ａｎｄ／ｏｒ」という用語は、１つ以上の列挙される関連アイテム群のうちの任意の及び全ての適用可能な組み合わせを指し、かつ含むことを理解されたい。更に、「ｉｎｃｌｕｄｅｓ」、「ｉｎｃｌｕｄｉｎｇ」、「ｃｏｍｐｒｉｓｅｓ」、および／又は「ｃｏｍｐｒｉｓｉｎｇ」という用語は、本明細書において使用される場合、記載の特徴、整数、ステップ、動作、要素、および／又はコンポーネントの存在を明記し、かつ１つ以上の他の特徴、整数、ステップ、動作、要素、コンポーネント、および／又はこれらの項目からなるグループの存在又は追加を排除しないことを理解できるであろう。
【０００７】
本明細書において使用されるように、「ｉｆ」という用語は、文脈次第で、「ｗｈｅｎ」又は「ｕｐｏｎ」又は「ｉｎ  ｒｅｓｐｏｎｓｅ  ｔｏ  ｄｅｔｅｒｍｉｎｉｎｇ（判断するのに応じて）」又は「ｉｎ  ｒｅｓｐｏｎｓｅ  ｔｏ  ｄｅｔｅｃｔｉｎｇ（検出するのに応じて）」を意味すると考えることができる。同様に、「ｉｆ  ｉｔ  ｉｓ  ｄｅｔｅｒｍｉｎｅｄ（と判断される場合）」又は「ｉｆ  ［ａ  ｓｔａｔｅｄ  ｃｏｎｄｉｔｉｏｎ  ｏｒ  ｅｖｅｎｔ］  ｉｓ  ｄｅｔｅｃｔｅｄ（［記載の状態又は事象］が検出される場合）」というフレーズは、前後の文脈次第で、「ｕｐｏｎ  ｄｅｔｅｒｍｉｎｉｎｇ（判断すると）」又は「ｉｎ  ｒｅｓｐｏｎｓｅ  ｔｏ  ｄｅｔｅｒｍｉｎｉｎｇ（判断するのに応じて）」又は「ｕｐｏｎ  ｄｅｔｅｃｔｉｎｇ  ［ｔｈｅ  ｓｔａｔｅｄ  ｃｏｎｄｉｔｉｏｎ  ｏｒ  ｅｖｅｎｔ］（［記載の状態又は事象］を検出すると）」又は「ｉｎ  ｒｅｓｐｏｎｓｅ  ｔｏ  ｄｅｔｅｃｔｉｎｇ  ［ｔｈｅ  ｓｔａｔｅｄ  ｃｏｎｄｉｔｉｏｎ  ｏｒ  ｅｖｅｎｔ］（［記載の状態又は事象］を検出するのに応じて）」 を意味すると考えることができる。
【０００８】
システムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータを選択的に保持する種々の実施形態が本明細書において記載される。通常のコンピューティングシステムは、システムメモリを１つ以上のランダムアクセスメモリデバイス上で実行する。システムメモリ（「ｍａｉｎ  ｍｅｍｏｒｙ（メインメモリ）」と呼ばれる場合がある）をこのように実行することにより、中央処理ユニットは、１つ以上のメモリデバイスにランダムな順番で迅速にアクセスすることができるので、アプリケーションプログラムプロセスをアプリケーションプログラムデータに対して動作することができる。一般的に、ランダムアクセスメモリデバイスは、停電、又は他の或る形態のシステム障害が発生した後に、データを保持することができない可能性がある（多くの場合、「ｖｏｌａｔｉｌｅ（揮発性）」メモリと表記される）。従って、ランダムアクセスメモリデバイスに格納されているいずれのアプリケーションプログラムデータも紛失する可能性がある。リスタート時、ランダムアクセスメモリデバイスは、データを、システムのリスタートを指示するｂｉｏｓデータを格納することができる電気的消去可能なプログラマブルＲＯＭ（ＥＥＰＲＯＭ）のような他の或るメモリストレージデバイスから再読み込みする必要がある。アプリケーションプログラムデータの紛失を防止するために、システム障害が発生した場合にデータを紛失しないハードディスクドライブのような補助ストレージデバイスを利用して、アプリケーションデータの１つ以上のデータ構成部分を、例えば周期的に格納することができる。しかしながら、ランダムアクセスメモリデバイスのシステムメモリのデータのバックアップを行うシステムでも、アプリケーションプログラムデータの完全な保持を確実に行うということができないので、ダイレクトアクセス可能及び迅速アクセスといったランダムアクセスメモリの他の性質を保持しながら、不揮発性（すなわち、データ保持性）メモリ機能を提供する、より新規なランダムアクセスメモリ技術が開発されることになる。
【０００９】
システムメモリを利用するアプリケーションプログラム及び他のコンポーネント、プログラム、又はデバイスに不揮発性ランダムアクセスメモリを提供するため、多種多様な異なるランダムアクセス技術は、フラッシュ系不揮発性データストレージのような不揮発性データストレージデバイスと通信するように構成されている。これらのハイブリッドデバイスは普通、「ｎｏｎ−ｖｏｌａｔｉｌｅ  ＲＡＭ（不揮発性ＲＡＭ）」と呼ぶことができる。これらには限定されないが、デュアルインラインメモリモジュール（ＤＩＭＭ）、シンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、ダブルデータレートシンクロナスランダムアクセスメモリ（ＤＤＲ−ＳＤＲＡＭ）などを含む数え切れないほど多種多様なこれらのランダムアクセスメモリ及び他のランダムアクセスメモリ技術に加えて、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）又はスタティックランダムアクセスメモリ（ＳＲＡＭ）のような揮発性データストレージデバイスは、フラッシュ系メモリデバイス、電気的プログラム可能ＲＯＭ（ＥＰＲＯＭ）、ＥＥＰＲＯＭ（前述）のような不揮発性電子ストレージデバイスと通信するように構成することができる。これらのハイブリッドデバイス（例えば、不揮発性デュアルインラインメモリモジュール（ＮＶ−ＤＩＭＭ））は、スーパーキャパシタ又は他の電力蓄積デバイス（例えば、バッテリ）のような電源を含むことができ、この電源によってメモリコントローラ又は他のコンポーネントは、揮発性データストレージデバイス（ＲＡＭ）からフラッシュ系メモリのような不揮発性データストレージに移行されるデータをバックアップすることができる。異なるランダムアクセスメモリ技術のような多種多様な揮発性メモリ技術だけでなく、多種多様な異なる不揮発性メモリ技術が当業者には公知になっていることから、上に挙げた実施例が、限定的であると解釈されてはならない。ここでまた、フラッシュ系メモリ技術を指すために使用される共通の名称は「ＮＶＲＡＭ」であることに留意されたい。混乱を避けるために、以後、本明細書においては、フラッシュ系メモリ技術を「ｆｌａｓｈ−ｂａｓｅｄ  ｍｅｍｏｒｙ  ｔｅｃｈｎｏｌｏｇｉｅｓ」とのみ表記することとする。
【００１０】
不揮発性ＲＡＭを実行するコンピューティングシステム又はコンピューティングデバイス又は同様の構成のコンポーネント又はデバイスは、アプリケーションプログラムデータを保持することができる。しかしながら、上で述べたように、このような技術を実行しただけでは、システムメモリに格納されているアプリケーションプログラムデータの保持を確実に行うためには十分ではない可能性がある。通常の不揮発性ＲＡＭは、揮発性電子ストレージデバイス（例えば、ＲＡＭ）に格納されているデータを、システム障害が発生した場合にバックアップする。バックアップ済みのデータはその結果、システム処理を再開することができるように、揮発性電子ストレージデバイスから復元される。別のシステム障害が発生して、このシステム障害が発生した場合に、例えばパワーオンセルフテスト（ｐｏｗｅｒ  ｏｎ  ｓｅｌｆ  ｔｅｓｔｓ ＰＯＳＴ）が行われるか、又はメモリテストを実行して不定値をＲＡＭに書き込むスタートアップルーチンが行われる場合、既にバックアップされているデータへの上書きが行われ得るので、アプリケーションプログラム又は他のユーザのシステムメモリが紛失する可能性がある。この実施例では、かつ他の同様のシナリオでは、ＲＡＭに格納されているデータは依然として、真に「ｎｏｎ−ｖｏｌａｔｉｌｅ（不揮発性）」である訳ではない。
【００１１】
種々の実施形態では、アプリケーションプログラムの側から見たときに、アプリケーションプログラムデータが、システムメモリのような揮発性データストレージデバイスに格納されている場合でも保持されるように、コンピューティングシステム又はコンピューティングデバイスは、システムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータを選択的に保持する。アプリケーションプログラムは、例えば書き込み遅延を削減することにより（例えば、データ保持性を確保するための書き込み回数を減らすことにより）更に効率的に実行されるように構成し直すことができる。図１は、幾つかの実施形態によるシステムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータを選択的に保持するように構成されるシステムレベルコンポーネントの例示的な動作環境を示すブロック図である。
【００１２】
システムは、幾つかの実施形態では、種々のタスク、機能、及び動作を当該システム上で実行する１つ以上のシステムアプリケーションモジュール１０２を実行することができる。システムアプリケーションモジュール１０２は、システム制御モジュール１１０と通信することができ、このシステム制御モジュール１１０は、１つ以上の異なるサービスを提供してシステムアプリケーションモジュール１０２のタスク、機能、及び動作をサポートすることができる。システム制御モジュール１１０は、アプリケーションデータ保持システムレベルコンポーネント１１２のような種々のモジュールおよび／又はコンポーネントを実行することができ、これらの種々のサポートタスクを実行するだけでなく、種々のシステム動作を制御する。システム制御モジュール１１０は更に、メモリモジュール１２０及び他のデバイス１３０のような他の種々のモジュールと通信することができる。
【００１３】
種々の実施形態では、システムは、サーバ、デスクトップ、ラップトップ、モバイルデバイス、ノード、又はノードクラスタのようなコンピューティングデバイス、又は更に広義には、図７を参照して以下に説明されるコンピューティングシステム１０００のようないずれかのコンピューティングデバイスとすることができる。システムは、図６を参照して以下に説明されるデータベースの分散ストレージシステムのストレージノードのように、特定の目的を実行するように構成することができる、又は広範囲のタスクを実行するように構成される汎用コンピューティングシステムとすることができる。システムは、幾つかの実施形態では、１つ以上のシステムアプリケーションモジュール１０２を実行することができる。システムアプリケーションモジュールは、１つ以上のタスク、機能、動作、及びサービスを当該システム上で実行するように構成されるソフトウェア（例えば、ソフトウェアプログラム又はソフトウェアアプリケーション）、ハードウェア（例えば、センサ又は他の或るデバイス）、又はソフトウェア及びハードウェアの両方の組み合わせ（例えば、エンベデッドシステム）とすることができる。システムアプリケーションモジュール１０２は、タスク動作を当該システム上で実行するように指示することができ、その結果、種々のシステムリソースを使用することができる。例えば、システムアプリケーションモジュール１０２は、種々の計算及び処理タスクを実行して、データベース、ネットワーク、ウェブサービスをサポートするバックエンドシステムから、グラフィカルユーザインターフェースを提供してドキュメント編集、メディア再生などを実行するユーザ対話型アプリケーションに亘る多種多様な異なるサービスを実行することができる。ここで、これまでに挙げた実施例が、実行することができる多種多様な異なる適用可能なアプリケーションについて限定的であると解釈されてはならないことに留意されたい。
【００１４】
これらのタスクを実行することの一部として、システムアプリケーションモジュール１０２は、システムメモリ１２６のようなシステムメモリ内の１つ以上のロケーションへアクセスすることができる。アクセスは、直接アドレス指定可能なストレージロケーション、システムメモリ１２６に格納されているデータに対する、読み出し、書き込み、又はいずれかの他の種類の変更を含むことができる。このデータを使用して種々のタスクを実行することができる。多種多様な異なるデータ構造、又は他のアプリケーションデータ論理構造を使用して、アプリケーションデータを体系化するか、又は調整することにより、システムアプリケーションモジュール１０２からアクセスすることができるようにする。幾つかの実施形態では、システムメモリ１２６に格納されているアクセス可能なデータは、アプリケーション動作により出力されるアプリケーション状態情報、タスクレコード又はタスクログ、および／又はシステムアプリケーションモジュール１０２からアクセスしようとするアクセス先の任意の他のデータを含むことができる。幾つかの実施形態では、システムアプリケーションモジュール１０２は、頻繁にアクセスするデータを格納することができる。システム制御モジュール１１０は、入力／出力モジュールのような他のサービス／モジュール１１４を使用して、システムアプリケーションモジュール１０２とシステムメモリ１２６との間の通信及びアクセスを容易にすることができる。
【００１５】
幾つかの実施形態では、システムはシステム制御モジュール１１０を実行することができる。システム制御モジュール１１０は、システムアプリケーションモジュール１０２をサポートするサービス、動作、又はタスクを実行するように構成することができる。システムモジュールは、データストレージのようなシステムリソース、計算リソース（例えば、１つ以上の中央処理装置（ＣＰＵ）、又は他のいずれかのモジュール、コンポーネント、又はデバイス）を管理するように構成することができる。少なくとも幾つかの実施形態では、システム制御モジュール１１０は、カーネルの一部のようなオペレーティングシステムの一部とすることができる、又はシステムアプリケーションモジュール１０２とシステムメモリ１２６との間の通信、又は特殊メモリコンポーネント１２０の他のコンポーネントとの間の通信、及び他のデバイス１３０との間の通信を容易にするように、システムのハードウェアコンポーネントとソフトウェアコンポーネントとの間の通信を管理する他のプログラム又はコンポーネントとすることができる。システム制御モジュール１１０は、種々の信号及び指示を受信する、および／又は解釈するように構成することができる。例えば、システム制御モジュール１１０は、システムコール又はシステムコマンドのようなシステムアプリケーションモジュール１０２によるサービス又は動作に関するリクエスト、又はアプリケーションプログラミングインターフェース（ＡＰＩ）に従ってフォーマット化されたリクエストを解釈するように構成することができる。これらの指示又はコマンドは従って、特殊メモリコンポーネント１２０、及び図７を参照して以下に説明される入力／出力デバイス１０５０のような種々の入力／出力デバイスのような他のデバイス１３０が理解することができるフォーマットに再フォーマット化する、又は解釈することができる、又はこれらの指示又はコマンドをスケジューリングして、図７を参照して以下に説明されるプロセッサ１０１０に類似する１つ以上のプロセッサのようなこれらの他のデバイス１３０により実行することができるようにする。
【００１６】
種々の他のサービス又はモジュール１１４は、システム制御モジュール１１０により実行されて、これらのタスクを実行することができる。例えば、他のサービス又はモジュール１１４は、一体となってプロセス管理を行ない、システムリソースを割り当て、共有及び情報授受を可能にし、他のプロセスの中の各プロセスのシステムリソースを保護し、そして更には、プロセスを同期させて、システムアプリケーションモジュール１０２の種々のプロセス、タスク、および／又は機能、及び当該システムの他のプログラム、モジュール、又はコンポーネントをサポートする。特殊メモリコンポーネント１２０、システムメモリ１２６、及び図７を参照して以下に説明されるデータストレージ１０３５のような他のデータストレージとのインターフェースとなるようなメモリ管理部を更に設けることができる。他のサービス又はモジュール１１４が更に、システム制御モジュール１１０により実行されて、他のデバイス１３０を管理して他のデバイス１３０とインターフェースすることができる。これらの機能及びサービスは、当業者には公知であることから、これまでの説明が、これらのサービス及び機能を提供する種々の他の手段、方法、又は配置について限定的であると解釈されてはならない。例えば、マイクロカーネル、エクソカーネル、及び他の種々のオペレーティングシステム、又は他のシステム制御装置を想像することもできる。
【００１７】
幾つかの実施形態では、システム制御モジュール１１０は、アプリケーションデータ保持システムレベルコンポーネント１１２を実行することができる。アプリケーションデータ保持システムレベルコンポーネント１１２は、特殊メモリコンポーネント１２０及び他のデバイス１３０に加えて、種々の他のサービス又はモジュール１１４と対話するように構成することができる。アプリケーションデータ保持システムレベルコンポーネント１１２は、システムアプリケーションモジュール１０２のシステムメモリ１２６に格納されている所定範囲のデータのデータバックアップ、又はシステムアプリケーションモジュール１０２のシステムメモリ１２６に格納されているアプリケーションデータオブジェクトのデータバックアップを有効化し、無効化し、そして再有効化するだけでなく、不揮発性データストレージ１２２からシステムメモリ１２６に移行されるアプリケーションデータオブジェクト又は所定範囲のアプリケーションの復元を指示するように構成することができる。以下に説明する図３〜図６は、アプリケーションデータ保持システムレベルコンポーネント１１２により実行することができる種々の技術及び方法の実施例を提供する。
【００１８】
どの時点でデータバックアップを有効化し、無効化し、そして再有効化するだけでなく、復元を指示するかについての判断は、データ保持システムレベルコンポーネント１１２において行うことができる。例えば、システムアプリケーションモジュール１０２によるリクエストから、保持されたアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータを特定することができる。あるいは、判断は、アプリケーションデータオブジェクト又は所定範囲のデータに書き込みが行なわれている、アプリケーションデータオブジェクト又は所定範囲のデータが格納されている、又は別な方法で変更されているという指示に応じて行うことができる。指示をシステムアプリケーションモジュール１０２に出して、アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータを保持するものとして処理させることができる。例えば、幾つかの実施形態では、アプリケーションデータオブジェクト（例えば、ログ、レコード、テーブル、又は更に広義には、任意の種類のデータ、又はシステムアプリケーションモジュール１０２により利用されるデータを保持するデータ構造）が生成される、割り当てられる、又は使用のために確保される場合、アプリケーションデータ保持システムレベルコンポーネント１１２は、指示をシステムアプリケーションモジュール１０２に出して、アプリケーションデータオブジェクトを保持するものとして処理されてもよく、又は処理させることができ、そしてシステム障害が発生した場合にアプリケーションデータオブジェクトのデータバックアップを有効化させることができる。同様に、システムアプリケーションモジュール１０２に代わってシステムメモリに格納されている所定範囲のアプリケーションデータ（例えば、所定範囲の仮想メモリアドレス、データ構造などのようなアプリケーションデータの論理構造）を更に、生成する、割り当てる、又は使用のために確保することができ、そしてアプリケーションデータ保持システムレベルコンポーネント１１２は、同様の指示をシステムアプリケーションモジュール１０２に出して、所定範囲のアプリケーションデータを保持するものとして処理させることができ、そしてシステム障害が発生した場合に所定範囲のアプリケーションデータに関するデータバックアップを有効化させることができる。少なくとも幾つかの実施形態では、どの時点で保持を指示し、データバックアップを有効化する、無効化する、再有効化するだけでなく、復元を指示するかについての判断は、１つ以上の異なるシステムアプリケーションモジュール１０２によりアクセスされる異なるアプリケーションデータオブジェクトについて個別に行うことができる。例えば、２つのシステムアプリケーションモジュールはそれぞれ、システムメモリに格納されている異なるアプリケーションデータオブジェクトにアクセスすることができる。アプリケーションデータオブジェクトを保持するものとして処理するリクエストは、アプリケーションデータオブジェクトごとに異なる時点で受信することができる。各システムアプリケーションモジュールは更に、異なるアプリケーション主導の復旧を実行して、不揮発性ストレージ内のアプリケーションデータオブジェクトに基づくバックアップ済みのデータの復元の指示を異なる時点でリクエストすることができる。同様に、個々のシステムアプリケーションモジュールによる復旧は、個別に行うことができるので、アプリケーションデータオブジェクトのデータバックアップを再有効化するリクエストを更に、異なる時点で受信して実行することができる。
【００１９】
アプリケーションデータ保持システムレベルコンポーネント１１２は、情報を多種多様なソースから取得して、これらの種々の判断を行うことができる。例えば、システムメモリ１２６に対するシステムアプリケーションモジュール１０２からの入力及び出力（例えば、読み出し、及び書き込み）を処理する１つ以上の他のサービス又はモジュール１１４は、種々の指示をアプリケーションデータ保持システムレベルコンポーネント１１２に出して、どの時点で、データバックアップを有効化する、無効化する、再有効化するだけでなく、保持されたアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータの復元をシステムメモリに対して指示するかについて判断することができる。例えば、オペレーティングシステムが提供するシステムコールを利用して、又はシステムメモリから不揮発性ストレージに移行されるアプリケーションデータを選択的に保持するようにサポートすることができる種々のライブラリ又は他のサービス集合を利用して、情報をアプリケーションデータ保持システムレベルコンポーネント１１２に供給することができる。
【００２０】
アプリケーションデータ保持システムレベルコンポーネントは更に、システム障害からの復旧が行われた時点を判断するように構成することができる。システム障害として、アプリケーションソフトウェア、プログラム、モジュール、又はコンポーネントが、システムメモリ１２６内のデータにアクセスするのを妨げる、および／又はシステムメモリ１２６に現在格納されているデータが紛失する、使用できない、消去される、又はデータにアクセスできなくしてしまういずれかの停電、機能障害および／又は他の障害を挙げることができる。他のサービス又はモジュール１１４は、システム障害が発生した場合に、および／又はシステム障害から復旧すると、アプリケーションデータ保持システムレベルコンポーネントに対して通知を行うように構成することができる。少なくとも幾つかの実施形態では、システム障害から復旧すると、アプリケーションデータ保持モジュールは、アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータに関するその後のデータバックアップを無効化するように構成することができる。少なくとも幾つかの実施形態では、その後のデータバックアップは、保持するものとして処理することができるシステムアプリケーションモジュール１０２のようなアプリケーションプログラムに対して示された複数のアプリケーションデータオブジェクト又は全てのアプリケーションデータオブジェクト、又は所定範囲のアプリケーションデータに関して無効化することができる。
【００２１】
少なくとも幾つかの実施形態では、アプリケーションデータ保持システムレベルコンポーネント１１２は、不揮発性データストレージ１２２内のアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータのバックアップストレージロケーションに格納されているようなアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータのうちの少なくとも幾つかの復元を指示するように構成することができる。例えば、少なくとも幾つかの実施形態では、アプリケーションデータ保持システムレベルコンポーネント１１２は、メモリバックアップコントローラ１２４、又は同様の或るコンポーネントに指示して、不揮発性データストレージ１２２にバックアップされたアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータをシステムメモリ１２６内の１つ以上のロケーションにコピーするように構成することができる。少なくとも幾つかの実施形態では、これらの１つ以上のロケーションは、アプリケーションデータオブジェクト（又は、所定範囲のアプリケーションデータ）がデータバックアップ前にシステムメモリに格納されていたロケーションとは異ならせることができる。従って、幾つかの実施形態では、復元した結果として、システムアプリケーションモジュール１０２の側から見た場合、アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータが、システム障害が発生した時点と厳密に同じ状態（例えば、同じ情報）に保持されていたように見える。あるいは、図５は、アプリケーションデータ保持システムレベルコンポーネント１１２により実行することができる幾つかの実施形態によるアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータの復元を指示する更なる検討、及び技術の実施例を提供する。
【００２２】
システムメモリ１２６に格納されているアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータは、幾つかの実施形態では、システムアプリケーションモジュール１０２のようなアプリケーションプログラムにアクセス可能なデータ構造又は他の或るアプリケーションデータの論理的な配置とすることができる。アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータを特定するために、ポインタ、インデックス、アドレス、又は他の或る値、又はインジケーターを利用して、システムメモリ内のアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータの１つ以上のストレージロケーションを決定することができる。例えば、少なくとも幾つかの実施形態では、ロケーション又はアドレスは、仮想メモリアドレス、又は他の或る論理記述子として指定することができ、これはシステムメモリ１２６の１つ以上の物理的範囲、ロケーション、アドレスなどに変換することができる。アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータのデータバックアップを有効化する指示は、例えばシステムアプリケーションモジュール１０２の側から見た場合に連続的な所定範囲の仮想メモリアドレスを含むことができ、これは複数のロケーションに物理的に実際に格納されている。アプリケーションデータ保持システムレベルコンポーネント１１２、又は他の或るコンポーネントは、データバックアップを有効化するように当該指示に指定されている仮想メモリアドレスを、指定範囲のデータがシステムメモリ１２６に格納されている実際の物理ロケーションに変換するように構成することができる。
【００２３】
幾つかの実施形態では、アプリケーションデータ保持システムレベルコンポーネント１１２は、特殊メモリコンポーネント１２０と通信するように構成することができる。アプリケーションデータ保持システムレベルコンポーネントは、デバイスドライバ、ライブラリ、又は他の種類のインターフェースに定義されるプロトコルを介して特殊メモリコンポーネント１２０と通信することができる。システムメモリ１２６に格納されているアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータのデータバックアップ動作を有効にする、無効にする、そして再度有効にするリクエストは、特殊メモリコンポーネント１２０に送信することができる。これらのリクエストは、メモリバックアップコントローラ１２４のようなコントローラ又は他のコンポーネントに対して具体的に指示することができる。図４に示すように、データバックアップを有効化する、又は無効化するこれらのリクエスト又は指示は、バックアップ用データを不揮発性ストレージ１２２にコピーするときのコピー元のシステムメモリ１２６内の特定のストレージロケーションを含むことができる。幾つかの実施形態では、データ暗号化スキーマをデータに適用すべきかどうかについての更なる指示を含めることもできる。アプリケーションデータ保持システムレベルコンポーネント１１２は、当該アプリケーションデータ保持システムレベルコンポーネントによる種々のリクエストを受信した旨の受信確認又は他の確認を受信するように構成することができる。
【００２４】
上で述べたように、アプリケーションデータ保持システムレベルコンポーネント１１２は、幾つかの実施形態では、システムメモリ１２６に格納されている複数のアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータのデータバックアップを有効化する、無効化する、そして再有効化するように構成することができる。テーブル又は他のデータ構造に格納されているようなマッピング情報は、これらのアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータの各々について保持されることができ、システムメモリ１２６内のこれらのアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータに対応するストレージロケーションを、不揮発性データメモリ１２２内のバックアップストレージロケーションにリンクさせる。有効化又は無効化されているかどうかの現在のバックアップ有効化状態を更に、システムアプリケーションモジュール１０２用に保持されたアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータに関するマッピング情報又は他の状態情報に含めることができる。これらの複数のアプリケーションデータオブジェクト（又は、所定範囲のアプリケーションデータ）の各々のデータバックアップを有効化する、無効化する、そして再有効化することにより、マッピング情報を更新して、それぞれのアプリケーションデータオブジェクト（又は、所定範囲のアプリケーションデータ）の現在のデータバックアップ状態を反映させることができる。
【００２５】
少なくとも幾つかの実施形態では、アプリケーションデータ保持システムレベルコンポーネント１１２は、不揮発性データストレージ１２２への「ｏｕｔ−ｏｆ−ｂａｎｄ（帯域外）」でのアクセスを容易にして、バックアップ済みのデータをシステムメモリ１２６から読み出すことができる。幾つかの実施形態では、データは、不揮発性データストレージ１２２から直接読み出すことができる。例えば、システム障害から復旧すると、アプリケーションデータ保持システムレベルコンポーネント１１２は、不揮発性データストレージ１２２をシステムアプリケーションモジュール１０２に透過なストレージデバイスとしてマウントすることができる。従って、システムアプリケーションモジュール１０２は、種々の復元動作を実行することができ、例えばデータの一部又は全部を、不揮発性データストレージ１２２に格納されているアプリケーションデータオブジェクト（又は、所定範囲のアプリケーションデータ）から読み出して新規のアプリケーションデータオブジェクトを生成する、又は新規範囲のアプリケーションデータを充填して、システムアプリケーションモジュール１０２からアクセスする、および／又はシステムアプリケーションモジュール１０２によって続いて利用することができるようにする。同様に、他の実施形態では、アプリケーションデータ保持システムレベルコンポーネント１１２は、他のサービス、又は入力／出力モジュールのようなモジュール１１４と対話して、不揮発性データストレージ１２２内のバックアップ済みのデータへの直接アクセス、又は「帯域外」でのアクセスを提供することができる。
【００２６】
幾つかの実施形態では、データ保持システムレベルコンポーネント１１２を実行して、システム制御モジュール１１０によって提供されるアプリケーションプログラミングインターフェース（ＡＰＩ）の一部を容易に実現することができる。例えば、データ保持システムレベルコンポーネント１１２は、指示をシステムアプリケーションモジュール１０２に提供して、当該システムアプリケーションモジュール用に格納されているアプリケーションデータオブジェクト、又は所定範囲のアプリケーションデータを保持するものとして処理するように構成することができる。この指示は、ＡＰＩに従ってシステムメモリに格納されているアプリケーションデータを選択的に保持するシステムアプリケーションモジュール１０２からのリクエストに応じて出すことができる。少なくとも幾つかの実施形態では、アプリケーションデータ保持システムレベルコンポーネント１１２は、種々の他のシステム、アプリケーション、プログラム、又はコンポーネントと対話して、システムメモリから不揮発性データストレージに移行されるアプリケーションデータのデータ保持を選択的に容易に可能にするように構成することができる。例えば、アプリケーションデータ保持システムレベルコンポーネント１１２は、システムＢＩＯＳの種々のＢＩＯＳ部分、又は他のコンポーネントの種々のコンポーネント部分を変更するか、又は無効にすることにより、復元されたアプリケーションデータオブジェクト又は所定範囲のアプリケーションに対して、例えばスタートアップメモリテスト又は他のブートプロセスにより上書きされるのを防止することができる。
【００２７】
更に、幾つかの実施形態では、特殊メモリコンポーネント１２０をシステムの一部として実行することができる。特殊メモリコンポーネント１２０は、システムメモリ１２６のようなシステムメモリを組み込んだ上記種々のハイブリッドストレージデバイスのうちの１つのハイブリッドストレージデバイスとすることができ、当該ハイブリッドストレージデバイスは、フラッシュ系不揮発性データストレージのような不揮発性データストレージ１２２と、メモリバックアップコントローラ１２４のようなメモリコントローラを介して通信するように構成される。特殊メモリコンポーネント１２０は、システム障害が検出され、システム障害から復旧するのに応じて、種々のデータバックアップ処理及びデータ復元動作を実行して、システムメモリ１２６に格納されているデータを不揮発性データストレージ１２２にコピーする、又は逆に、不揮発性データストレージ１２２に格納されているデータをシステムメモリ１２６にコピーするように構成することができる。
【００２８】
上に説明したこれらの例のような種々の種類のランダムアクセスメモリのうちのいずれか１つのランダムアクセスメモリとすることができるシステムメモリ１２６は、これらには限定されないが、数え切れないほど多種多様なこれらのランダムアクセスメモリ技術、及び他のランダムアクセスメモリ技術に加えて、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、又はスタティックランダムアクセスメモリ（ＳＲＡＭ）を挙げることができ、これらのランダムアクセスメモリ技術として、これらには限定されないが、デュアルインラインメモリモジュール（ＤＩＭＭ）、シンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、ダブルデータレートシンクロナスランダムアクセスメモリ（ＤＤＲ−ＳＤＲＡＭ）などを挙げることができる。システムメモリ１２６は、プログラム命令を格納して、図７を参照して以下に説明されるプロセッサのような１つ以上のプロセッサにより実行することができる。システムアプリケーションモジュール１０２は、システムメモリ１２６に格納されて実行される１つ以上のアプリケーションプログラムとすることができる。上に述べたようにアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータは、システムメモリ１２６に格納することもでき、そしてシステムアプリケーションモジュール１０２により使用されて、種々のサービス、タスク、および／又は機能を実行することができる。システムメモリ１２６は、複数のランダムアクセスメモリデバイスにより実行することができる。図２には図示されていないが、少なくとも幾つかの実施形態では、ランダムアクセスメモリデバイスのうちの幾つかは、不揮発性データストレージ１２２によりバックアップされない、又はメモリバックアップコントローラ１２４により制御されない、又はアクセスされないようにすることができる。従って、図２に例示されるシステムメモリ１２６は、システムメモリ１２６の一部を、特殊メモリコンポーネント１２０の一部として実行することができ、かつシステムメモリ１２６の他の部分を、従来のランダムアクセスメモリ技術で実行することができる構成の他の実施形態を限定するものとして解釈されてはならない。例えば、システムは、１つのＮＶ−ＤＩＭＭコンポーネントと、データバックアップが行なわれない１つ以上の追加のＤＲＡＭコンポーネントと、を含むことができる。ＮＶ−ＤＩＭＭコンポーネントの揮発性データストレージ、及び１つ以上の追加のＤＲＡＭコンポーネントは共に、システムメモリを実行するために用いることができる。しかしながら、このような実施形態では、システムメモリのうちのＮＶ−ＤＩＭＭ実行部分のみをバックアップすることができるということになる。システムメモリは当業者には公知であることから、これまでの説明が、システムメモリを実行することができる、および／又は利用することができる種々の他の方法について、限定的であると解釈されてはならない。
【００２９】
メモリバックアップコントローラ１２４は、システムメモリ１２６と不揮発性データストレージ１２２との間の通信を指示するように構成することができる。少なくとも幾つかの実施形態では、メモリバックアップコントローラ１２４は、データバックアップ動作及びデータ復旧動作を実行するように構成することができる。例えば、少なくとも幾つかの実施形態では、メモリバックアップコントローラ１２４は、システム障害を検出することができる。システム障害を検出すると、メモリバックアップコントローラ１２４は、システムメモリ１２６に格納されているデータを不揮発性データストレージ１２２にコピーするように指示することができる。同様に、システム障害から復旧すると、メモリバックアップコントローラ１２４は、不揮発性データストレージ１２２に格納されているアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータ（又は、アプリケーションデータの一部）のコピーをシステムメモリ１２６に返して、アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータを復元するように構成することができる。バックアップ済みのデータをシステムメモリにコピーするときのコピー先のロケーションは、これらのデータが最初にバックアップされたときのコピー元のロケーションとは異ならせることができる。データ暗号化又はデータ復号化のような種々の他のデータ変換又はデータ操作は、メモリバックアップコントローラ１２４により適用することができる。
【００３０】
少なくとも幾つかの実施形態では、メモリバックアップコントローラ１２４は、アプリケーションデータ保持システムレベルコンポーネント１１２のような別のコンポーネントによりプログラムできる、又はその他には、構成することができる。例えば、メモリバックアップコントローラ１２４は特定用途向け集積回路（ＡＳＩＣ）とすることができ、当該特定用途向け集積回路は、種々のコマンドを受信して、種々の動作を有効にすることができ、例えばシステムメモリ１２６に格納されているアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータのデータバックアップを有効化する、又は無効化するように構成される。少なくとも幾つかの実施形態では、メモリバックアップコントローラは、システムメモリ１２６内、及び不揮発性データストレージ１２２内の特定のロケーションのデータをコピーするようにプログラムする、指示する、又は構成することができる。幾つかの実施形態では、メモリバックアップコントローラ１２４は、種々のロジックおよび／又はデータ構造を実行して、システムメモリ１２６のバックアップ済みの情報を不揮発性データストレージ１２２内のロケーションにマッピングする情報を更新する、又は維持することができる。
【００３１】
特殊メモリコンポーネント１２０は、不揮発性データストレージを実行することもできる。上に説明したように、幾つかの実施形態では、不揮発性データストレージは、例えばフラッシュ系デバイス又は他の永続ストレージデバイスとすることができ、これらのデバイスは、システムメモリ１２６と通信するように構成することができ、かつバックアップ済みのデータを格納することができる。しかしながら、多くの異なる種類の永続データストレージが当業者には公知になっていることから、上に説明した実施例、及び以下に説明する実施例が共に、限定的であると解釈されてはならない。
【００３２】
特殊メモリコンポーネント１２０は、不揮発性ＲＡＭとして知られる概略分類の上記デバイスのうちの１つのデバイスとすることができ、当該デバイスは、スーパーキャパシタ又は他の電力蓄積デバイスのような電源を含むことができ、この電源によってメモリコントローラ又は他のコンポーネントは、揮発性データストレージデバイス（ＲＡＭ）からフラッシュ系メモリのような不揮発性データストレージに移行されるデータをバックアップすることができる。このようなデバイスの特定の実施例として、不揮発性デュアルインラインメモリモジュール（ＮＶ−ＤＩＭＭ）を挙げることができる。少なくとも幾つかの実施形態では、ＮＶ−ＤＩＭＭのような不揮発性ランダムアクセスメモリの複数のデバイスは、一括して使用することができる。例えば、揮発性データストレージの複数のコンポーネントは、合体してシステムメモリを実行することができ、そして不揮発性データストレージの複数のコンポーネントは、ストレージを実行するか、又はストレージを提供することによりデータバックアップ動作を行うことができる。少なくとも幾つかの実施形態では、不揮発性ＲＡＭデバイスは、ＤＲＡＭ又はＳＲＡＭのような他の従来のメモリコンポーネントと混在させてシステムメモリを実行することができ、この場合、保持されるべき所定範囲のアプリケーションデータ又はアプリケーションデータオブジェクトは、不揮発性ＲＡＭデバイスのシステムメモリロケーションに格納することができる。幾つかの他の実施形態では、複数の不揮発性ＲＡＭデバイスを用いることができ、かつ複数の不揮発性ＲＡＭデバイスは、データバックアップ動作及びデータ復旧動作を行うように個々に構成するか、又は集合的に構成することができる。例えば、少なくとも幾つかの実施形態では、アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータは、単一のＮＶ−ＤＩＭＭデバイスに格納されているような、複数の不揮発性ＲＡＭデバイスのうちの１つに格納されている所定範囲のシステムメモリとすることができる。あるいは、アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータは、複数の不揮発性ＲＡＭデバイスに跨って実行されるシステムメモリに格納することができる。
【００３３】
ここで、図１を参照して上に説明した種々の機能は、システムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータを選択的に保持するために使用することができる種々の他の構造、コンポーネント、又は機構に関して限定的であると解釈されてはならないことに留意されたい。例えば、アプリケーションデータ保持システムレベルコンポーネント１１２に属する種々の機能は、入力／出力モジュールのような多種多様な異なるサービスに分散させることができる。同様に、メモリバックアップコントローラ１２４に属する種々機能は、システム制御モジュール１１０内で実行することができる、又は或る他のデバイス又はロジックの一部として実行することができる。
【００３４】
図２は、幾つかの実施形態によるシステムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータが選択的に保持される様子を示す一連のブロック図を示している。図２１０は、データバックアップを有効化することができるシナリオを示している。上に説明したように、アプリケーションデータオブジェクト２０２を含むデータを格納するシステムメモリ２１２のようなシステムメモリに格納されているアプリケーションプログラムにアプリケーションデータオブジェクトがアクセスするためにデータバックアップを有効化する判断は、アプリケーションデータオブジェクト２０２のデータバックアップを有効化するリクエスト又は指示を受信すると行うことができる。この場面では、不揮発性データストレージ２２２はまだ、システムメモリ２１２のデータを全くバックアップしていない。
【００３５】
図２１０と図２２０との間では、種々の読み出し、書き込み、及び他の加算、減算、および／又は変更をシステムメモリ内のアプリケーションデータオブジェクト２０２に対して行うことができる。図２２０は、システム障害の発生を示す。アプリケーションデータオブジェクト２０２を参照番号２１４に記載の通りに、不揮発性データストレージ２２２にコピーしてデータバックアップを行う。上に説明したように、バックアップ済みのアプリケーションデータオブジェクト（又は、所定範囲のアプリケーションデータ）と、不揮発性データストレージ２２２内のアプリケーションデータオブジェクトのそれぞれの１つ以上のストレージロケーションと、を示すマッピング情報又は他の情報は、更新することも、又は維持することもできる。
【００３６】
図２３０は、システムが復旧すると、アプリケーションデータオブジェクトに関するその後のデータバックアップが、参照番号２１６に記載の通りに無効化される様子を示す。従って、例えば次のシステム障害が発生する場合、システムメモリ２１２内のアプリケーションデータオブジェクト２０２に変更を加えることにより、又は不揮発性データストレージ２２２にバックアップすることができる或る他のデータに変更を加えることにより、不揮発性データストレージ２２２内のアプリケーションデータオブジェクト２０２への上書きが行われるということはない。
【００３７】
図２４０は、データ復元が行われる様子を示す。幾つかの実施形態では、図示の如く、アプリケーションデータオブジェクトを、参照番号２１８に記載の通り、不揮発性データストレージ２２２からシステムメモリ２１２にコピーすることができる。少なくとも幾つかの実施形態では、このコピーは自動的に行うことができる。あるいは、少なくとも幾つかの他の実施形態では、不揮発性データストレージ２２２に格納されているアプリケーションデータオブジェクト２０２のうちの少なくとも幾つかは、アプリケーションからのリクエストに応じて、又は図１を参照して上に説明したアプリケーションデータ保持システムレベルコンポーネント１１２のような別のコンポーネントからの指示に応じて復元することができる。更に、幾つかの実施形態では、アプリケーションデータオブジェクト２０２は、図示のコピー２１８をシステムメモリ２１２に対して行うことなく、不揮発性データストレージ２２２から直接、かつ「ｏｕｔ−ｏｆ−ｂａｎｄ（帯域外）」で読み出すことができる。
【００３８】
図２５０は、データバックアップをシステムメモリ２１２に格納されているアプリケーションデータオブジェクト２０２に関して再有効化することができることを示す。上記参照番号２２０に記載のように、システム障害が発生する場合、アプリケーションデータオブジェクト２０２は、不揮発性データストレージにコピーすることができる。ここで、アプリケーションデータオブジェクト２０２は、上に説明したように、参照番号２１０で指示されるシステムメモリ内の同じロケーションに配置されなくても良いことに留意されたい。更に、アプリケーションデータオブジェクト２０２は、図２１０において新たにインスタンス化されたアプリケーションデータオブジェクト２０２とすることができる、すなわちアプリケーションデータオブジェクト２０２は、参照番号２４０で復元されたデータに基づいて生成することができ、そして幾つかの実施形態では、場面２２０におけるバックアップ済みのデータオブジェクト２０２の複製とする必要はない。
【００３９】
これまで説明してきたように、システムメモリに格納されているアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータは、システム障害が発生した場合に、データバックアップを選択的に有効化して、不揮発性データストレージに書き込むことができる。少なくとも幾つかの実施形態では、図１を参照して上に説明したアプリケーションデータ保持システムレベルコンポーネント１１２のようなシステムレベルコンポーネント、又は更に広義には、システムメモリ及び不揮発性データストレージと通信するように構成され、かつ図７を参照して以下に説明されるコンピュータシステム１０００のようなコンピューティングデバイスのいずれかの他のサブシステム又はコンポーネントを用いて、システムメモリから不揮発性データストレージに移行されるアプリケーションデータを選択的に保持する多種多様な異なる手法を実行することができる。これらの種々のモジュールおよび／又はデバイスは、以下に説明する方法及び手法を実行するように構成することができる。図３は、幾つかの実施形態によるシステムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータを選択的に保持する例示的な方法の上位フローチャートを示す。
【００４０】
種々の実施形態では、上に述べたように、多くの異なるアプリケーションプログラム、ソフトウェア、又はモジュールは、システムメモリにアクセスして種々のタスクを実行するように構成することができる。種々のタスクを実行するため、データをシステムメモリの部分から書き込み、又は読み出しすることができる。幾つかのアプリケーションは、例えば頻繁にアクセスされるデータをシステムメモリに格納することができるのは、当該システムメモリには、他の記憶媒体よりも高速にアクセスすることができるからである。また、これらのアプリケーションは、システム障害（例えば、停電）が発生した場合に保持される（永続性を持たせる）必要があるデータを格納しようとする。これらのアプリケーションデータオブジェクト、又は所定範囲のアプリケーションデータの場合、指示をアプリケーションプログラムに出して、参照番号３１０で図示されるように、アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータを保持するものとして処理させることができる。このような指示は、データオブジェクト又は所定範囲のデータが生成されると、又は割り当てられると、提供することができる。更に、当該指示は、アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータから書き込み、又は読み出しが行われるときに提供することができる。また、アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータを保持するリクエストは、アプリケーションプログラムから受信することもできる。
【００４１】
アプリケーションプログラム用にシステムメモリに格納されているアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータに関するデータバックアップは、参照番号３１０で図示されるように、有効化することにより、システム障害が発生した場合にアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータを保持することができる。図１を参照して上に説明したように、アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータは、幾つかの実施形態では、データ構造のようなアプリケーションデータ論理的な配置、システムメモリに格納されているアプリケーションデータのインデックス値又はアドレス値のような所定範囲のストレージロケーションとすることができる。しかしながら、少なくとも幾つかの実施形態では、アプリケーションプログラム、ソフトウェア、モジュール、又はコンポーネントは、仮想メモリアドレスであるロケーション又はアドレスを指定するか、又は幾つかの他の論理記述子を指定することができ、これらの論理記述子を次に、揮発性データストレージデバイスの１つ以上の物理的範囲、ロケーション、アドレスなどに変換することができる。例えば、アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータは、複数のロケーションに物理的に格納されている連続範囲の仮想メモリアドレスとすることができる。
【００４２】
データバックアップは、多種多様な方法で有効化することができる。図１を参照して上に説明したように、アプリケーションデータ保持システムレベルコンポーネント１１２のようなシステムレベルコンポーネント、又は或る他のモジュール又はコンポーネントは、１つ以上のリクエスト、信号、又は指示をメモリバックアップコントローラ１２４のようなメモリバックアップコントローラに送信するように構成することができ、メモリバックアップコントローラ１２４は、データバックアップを、システムメモリに格納されているアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータに対して実行するように構成することができる。データバックアップは、幾つかの実施形態では、コンポーネントをプログラミング又は構成することにより有効化して、システム障害が発生した場合に、データバックアップをアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータに対して実行することができる。図４は、幾つかの実施形態によるデータバックアップをアプリケーションデータオブジェクトについて有効化する方法の一実施例を示す。アプリケーションデータオブジェクト（又は所定範囲のアプリケーションデータ）を格納している１つ以上のストレージロケーションは、参照番号４１０に記載された通りに特定することができる。例えば、システムレベルコンポーネントは、アプリケーションデータオブジェクトを定義するアドレスを理解することができる、又は所定範囲のアプリケーションデータは仮想メモリアドレスとすることができる。仮想メモリアドレスを変換する、又はその他には、解釈することにより、１つ以上の物理アドレスを、アプリケーションデータオブジェクトを格納していたシステムメモリに配置することができる。次に、参照番号４２０に記載の通り、システム障害が検出されると、メモリバックアップコントローラ又は他のコンポーネント又はデバイスに指示して、データバックアップ動作をシステムメモリ内に特定される１つ以上のストレージロケーションに対して実行することにより、不揮発性データストレージ内の１つ以上のバックアップロケーションに移行する処理を行う。これらのバックアップロケーションは予め定義しておくことができ、例えば全てのバックアップ済みのデータオブジェクトは、不揮発性データストレージの特定の部分に格納される。あるいは、幾つかの実施形態では、不揮発性データストレージデバイスは、システムメモリをミラーリングすることができ、かつアプリケーションデータオブジェクトを同じロケーションに格納することができる。他の複数の不連続ロケーションを用いることもできる。例えば、フラッシュ技術を用いたストレージデバイスのような幾つかの不揮発性電子ストレージデバイスは、ウェアレベリング（ｗｅａｒ  ｌｅｖｅｌｉｎｇ：摩耗平滑化）手法を用いることにより、デバイスの使用寿命を延ばすために確実にデータ書き込みがデバイス全体に亘って均一に分散して行われ、これにより、アプリケーションデータオブジェクトのバックアップストレージロケーションを決定することができる。アプリケーションデータオブジェクトをシステムメモリ内の当該データオブジェクトのそれぞれ���ストレージロケーション、及び不揮発性データストレージ内の当該データオブジェクトのそれぞれのストレージロケーションにリンクさせるマッピング情報は、参照番号４３０に記載の通りに更新することができる。このようなマッピング情報は、メモリデバイスのメモリバックアップコントローラ、又はシステムレベルコンポーネントに保持することができる。
【００４３】
一旦、有効化されると、種々の実施形態では、多くの異なるタスク又は動作は、アプリケーションプログラム、読み出し、書き込み、変更、又はその他には特定の範囲のデータにアクセスすることにより実行することができる。システム障害が発生すると、有効化されたデータバックアッププロセスでは、アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータをシステムメモリから不揮発性データストレージにコピーすることができる。このデータバックアッププロセスは、上に説明したメモリバックアップコントローラ１２４のような１つ以上のコンポーネントにより実行することができ、かついずれの外部電源、ロジック、又は他のコンポーネントの支援を受けることなく実行することもできる。例えば、上に説明したように、メモリバックアップコントローラ１２４は、キャパシタ又はバッテリのような別体電源を含むことができ、この電源によって、メモリバックアップコントローラ１２４は、システム電源又は他の主電源が配設されていないのにも拘わらず、コピープロセスを実行することができる。アプリケーションデータオブジェクト（又は、所定範囲のアプリケーションデータ）は、不揮発性データストレージ内のデータに対応する１つ以上の所定のロケーションにコピーすることができる。幾つかの実施形態では、データバックアップ用に有効化されるアプリケーションデータオブジェクトは、データバックアップを有効化していない状態のシステムメモリをコピーすることなくコピーすることができる。図４に関する説明の中で上に述べたように、データバックアップを有効化するリクエスト、又は或る他の指示、リクエスト、又は通信により、不揮発性データストレージ内の特定のロケーションを決定して、アプリケーションデータオブジェクト（又は、所定範囲のアプリケーションデータ）を格納することができる。あるいは、メモリバックアップコントローラ１２４のような不揮発性データストレージ用の或る他のコンポーネント又はコントローラは、アプリケーションデータオブジェクト（又は、所定範囲のアプリケーションデータ）のストレージロケーションを指定することができる。
【００４４】
少なくとも幾つかの実施形態では、システムメモリから不揮発性データストレージへのデータバックアップを有効化することは、不揮発性データストレージにコピーされるときに、アプリケーションデータオブジェクト（又は、所定範囲のアプリケーションデータ）を暗号化する指示又はリクエストを含むことができる。財務情報、個人データなどのような機密情報は、アプリケーションによってアプリケーションデータオブジェクトに格納することができる。対称鍵方式又は公開秘密鍵方式のような暗号化技術はアプリケーションデータオブジェクトに、当該アプリケーションデータオブジェクトを揮発性データストレージから不揮発性データストレージにコピーするときに適用することができる。後の時点で情報へのアクセス、又は不揮発性データストレージに対する情報の復元を行うと、アプリケーションデータオブジェクトは、同じ暗号化方式に従って復号化することができる。
【００４５】
幾つかの実施形態では、システム障害からの復旧は、参照番号３３０に記載の通りに行うことができる。システム障害として、アプリケーションソフトウェア、プログラム、モジュール、又はコンポーネントが、揮発性データストレージ内のデータにアクセスするのを妨げる、および／又は揮発性データストレージに現在格納されているデータが紛失する、使用できない、消去されるなどしてしまういずれかの電源喪失、機能障害、および／又は他の障害を挙げることができる。システム障害は種々の方法で検出することができる。例えば、システムは、ブートプログラムが実行される回数を記録するカウンタ又は他のコンポーネントを用いることができる。他のセンサ又はコンポーネントは、障害が発生したかどうかを決定することができる電力レベル、プロセッサ、又は他のコンポーネント又はデバイスを監視することができる。
【００４６】
システム障害から復旧すると、システムメモリに格納されて不揮発性データストレージに移行されるアプリケーションデータオブジェクトに関するその後のデータバックアップは、参照番号３４０に記載の通りに無効化することができる。少なくとも幾つかの実施形態では、データバックアップの無効化は、ブートプロセスのようないずれかのプロセスの前に、又はシステムメモリ内のアプリケーションデータオブジェクトと同じロケーションに格納されているデータを変更することができる他のスタートアップルーチンの前に行うことができ、かつ次の電源障害発生時に、バックアップ済みのいずれかの新規の変更済みデータ、又はその他には、非関連データへの上書きが行なわれるのを防止することができる。上に説明したように、アプリケーションデータオブジェクト（又は、所定範囲のアプリケーションデータ）に関するデータバックアップを有効化するのと同様にして、アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータに関するデータバックアップを無効化することは、１つ以上の信号又は指示をメモリバックアップコントローラ１２４のようなメモリバックアップコントローラに送信することを含むことができる。当該メモリバックアップコントローラは、データバックアップをシステムメモリに格納されているアプリケーションデータオブジェクトに対して実行するように構成することができる。このような信号又は指示は、その後のデータバックアップが行われる予定が全くない状態のシステムメモリ内のアプリケーションデータオブジェクトのロケーションを含むことができる。その後のデータバックアップを無効化することは、幾つかの実施形態では、１回以上の後続のシステム障害が発生した場合に、不揮発性データストレージにバックアップされたアプリケーションデータオブジェクトを保持するか、又は永続性を持たせることができる。同様に、１つ以上の異なるアプリケーションデータオブジェクトがデータバックアップを有効化されて、不揮発性データストレージにコピーすることができる場合でも、アプリケーションデータオブジェクトは、幾つかの実施形態では、アプリケーションデータオブジェクトに関するデータバックアップが再有効化されるまで、上書きされない、消去されない、又はその他には、変更されないようにすることができる。
【００４７】
少なくとも幾つかの実施形態では、不揮発性データストレージに格納されてシステムメモリに移行されてアプリケーションプログラムからアクセスすることができるアプリケーションデータオブジェクト（又は、所定範囲のアプリケーションデータ）の少なくとも幾つかのデータオブジェクトの復元は、参照番号３５０に記載の通りに指示することができる。アプリケーションデータオブジェクトの少なくとも幾つかの復元は、システムメモリに返されてアプリケーションプログラムからアクセスすることができるアクセス先のバックアップ済みのメモリのアクセス部又は全部を介して行うことができる。図５は、幾つかの実施形態による不揮発性データストレージに格納されているアプリケーションデータオブジェクトの復元を指示する１つのこのような方法を示すフローチャートである。システム障害が、参照番号５１０に記載の通りに、図４を参照して上に説明したマッピング情報のようなマッピング情報に少なくとも部分的に基づいて復旧すると、アプリケーションデータオブジェクト（又は、所定範囲のアプリケーションデータ）を格納している不揮発性データストレージ内の１つ以上のバックアップロケーション、及びアプリケーションデータオブジェクト（又は、所定範囲のアプリケーションデータ）を格納しているシステムメモリ内の１つ以上のストレージロケーションは、参照番号５２０に記載の通りに特定することができる。図４を参照して上に説明したのと同様に、不揮発性電子ストレージデバイスは、アプリケーションデータオブジェクトを複数のロケーションに、例えば所定の方式に従って、又はウェアレベリングのような手法に従って格納することができる。メモリバックアップコントローラ１２４又はアプリケーションデータ保持システムレベルコンポーネント１１２のような、不揮発性データストレージの外部のコンポーネントは、これらのバックアップストレージロケーションを決定することができる。不揮発性データストレージにバックアップされるアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータの各々について保持することができるマッピング情報は、これらのバックアップロケーションだけでなく、これらのロケーションのアプリケーションデータオブジェクトの復元先のシステムメモリ内のロケーションを格納することができる。アプリケーションプログラムの側から見たときに、アプリケーションデータオブジェクトがシステムメモリ内に保持されていたように見える状態を維持するために、マッピング情報は保持されることができる。次に、参照番号５３０に記載の通り、メモリコントローラに指示して、データを不揮発性データストレージ内に特定されるバックアップロケーションからシステムメモリ内に特定されるストレージロケーションにコピーすることができる。幾つかの実施形態では、バックアップ済みのアプリケーションデータオブジェクト全体をシステムメモリにコピーすることができるが、少なくとも幾つかの他の実施形態では、一部のデータ、又は選択部分のデータをコピーすることができる。
【００４８】
次に、アプリケーションプログラムは、復元されたアプリケーションデータオブジェクト（又は、所定範囲のアプリケーションデータ）にアクセスすることができる。アプリケーションの側から見れば、アプリケーションデータオブジェクトがシステムメモリ内に保持されていたように見える。次に、復元されたデータは、アプリケーションプログラムにより種々の方法で利用されて、例えばアプリケーションプログラムを前の状態に復元させることができる、又はシステム障害が発生した場合に、アプリケーションプログラムの実行状態を確認することができる。例えば、アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータは、アプリケーションプログラムが、システム障害が発生した場合に実行していた１つ以上のタスク又は動作を記録することができる。アプリケーションプログラムは、記録されたタスクを分析することができ、かつ完了したタスク及び未処理のタスクだけでなく、これらのタスクの種々の結果、計算、又は他の成果物を決定することができる。
【００４９】
図５に記載される方法に代わる方法として、幾つかの実施形態では、不揮発性データストレージに格納されているアプリケーションデータオブジェクトに対する「ｏｕｔ−ｏｆ−ｂａｎｄ（帯域外）」のアクセスは、アプリケーションプログラムに提供することができる。従って、アプリケーションプログラムは、バックアップ済みのデータの選択部分を取得して処理を更に進める回復動作を実行することができ、そして続いて、新規のアプリケーションデータオブジェクトを、アプリケーションデータオブジェクトの復元部分（この復元部分は、幾つかの実施形態では、データバックアップを有効化することができる）から生成することができる。例えば、不揮発性データストレージを「マウント」する（例えば、ディスクドライブのような永続ストレージデバイスと同様に）ことができ、そして次に、不揮発性データストレージに、回復動作を実行するアプリケーションプログラムからアクセスすることができる。
【００５０】
少なくとも幾つかの実施形態では、後続の１回以上のシステム障害を復旧させることができる。上に説明したように、システム障害として、アプリケーションソフトウェア、プログラム、モジュール、又はコンポーネントが、揮発性データストレージ内のデータにアクセスするのを妨げる、および／又は揮発性データストレージに現在格納されているデータが紛失する、使用できない、消去されるなどしてしまういずれかの電源喪失、機能障害、および／又は他の障害を挙げることができる。しかしながら、アプリケーションデータオブジェクトに関するデータバックアップが無効化されたままである場合、次のシステム障害では、単に、既にバックアップ済みのアプリケーションデータオブジェクトを再び復元することができるだけである。一旦、無効化されると、バックアップ済みのアプリケーションデータオブジェクトは、システム障害が発生した場合、不揮発性データストレージ内に無期限に保持することができる、又はアプリケーションデータオブジェクトに関するその後のデータバックアップが、参照番号３６０に記載の通りに再有効化されるまで不揮発性データストレージ内に無期限に保持することができる。
【００５１】
少なくとも幾つかの実施形態では、システムメモリに格納されているアプリケーションデータオブジェクトに関するデータバックアップは、参照番号３６０に記載の通りに再有効化することができる。システム障害が発生した場合、再有効化されたデータバックアップでは、再度、アプリケーションデータオブジェクト（又は、所定範囲のアプリケーションデータ）をシステムメモリから不揮発性データストレージにコピーすることができる。アプリケーションへの書き込みが行われているので、又はその他には、アプリケーションで、アプリケーションデータオブジェクトに格納されているデータを変更しているので、別の電源障害が発生した場合にバックアップされるデータは、アプリケーションデータオブジェクトについて既にバックアップ済みのデータとは異なる。少なくとも幾つかの実施形態では、前のバックアップの後にバックアップされるデータは、前のデータバックアップで格納されていたデータを保持するように不揮発性データストレージ内の異なるロケーションに格納されることができる。あるいは、幾つかの実施形態では、同じアプリケーションデータオブジェクトに関するデータを続いてバックアップすることにより、前のバックアップで格納されていたデータへの上書きを行うことができる。
【００５２】
上に説明した手法の一部又は全部は、システムメモリに格納されている同じ、又は異なるアプリケーションデータオブジェクト、又は所定範囲のアプリケーションデータについて繰り返すことができる。種々の要素は、種々のイベントに応じて、自動的に、又は動的に実行することができる。例えば、同じアプリケーションデータオブジェクトは、複数回に亘って有効化する、無効化する、そして再有効化することができる。更に、１つよりも多くのアプリケーションデータオブジェクトは、同時に、かつそれぞれ独立して有効化する、又は無効化することができる。例えば、幾つかのアプリケーションデータオブジェクトを無効化することができるのに対し、他のアプリケーションデータオブジェクトは、同時に有効化することができる。従って、図３に示すこれらの要素の順番は、図示の要素の多くの他の適用可能な順番又は構成があるので、限定的であると解釈されてはならない。また、更に別の要素を追加する、又は要素を取り除く、或いは変更することができる。従って、図３は、システムメモリから不揮発性データストレージに移行されるアプリケーションデータの選択的保持を行う多くの適用可能な方法のうちの幾つかの方法の一実施例として提示されているに過ぎない。
【００５３】
図６は、幾つかの実施形態によるシステムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータを選択的に保持することができる例示的なシステムを示すブロック図である。以下に説明する図７は、種々の実施形態及び手法を汎用システムで実現することができる当該汎用システムを示しているが、図６では、特定目的のデータストレージに関する例示的なシステムについての説明を提供する。
【００５４】
ストレージクライアント６００は、１つ以上のコンピューティングデバイスで実現されるデータベースシステム又はデータベースサービスのような、データを管理する、又は維持するシステム又はデバイスとすることができる。ストレージクライアント６００により管理される、又は維持されるデータは、分散ストレージシステム６１０に格納することができる。分散ストレージシステム６１０は、ストレージクライアント６００宛てのデータを格納するストレージサービスを提供することができる。分散ストレージシステム６１０に格納されているデータにアクセスするために、ストレージクライアント６００は、１つ以上のアクセスリクエストを、ストレージクライアント６００宛てのデータを格納している分散ストレージシステム６１０のストレージノード６３０に送信することができる。ストレージノード６３０は、ストレージデバイス６４０ａ〜６４０ｎとの接続を直接行うことができ、これらのストレージデバイスは、ストレージクライアント宛てのデータを格納する。ストレージノード６３０は、ストレージクライアント６００から受信するアクセスリクエストを処理するストレージノードマネジャアプリケーション６３２、及びストレージノードマネジャアプリケーション６３２の動作をサポートするサービス及び機能を提供するストレージノードオペレーティングシステム６３４を実行することができる。
【００５５】
幾つかの実施形態では、ストレージノードマネジャアプリケーション６３２は、ストレージノードで受信するアクセスリクエストのトランザクションログをアプリケーションデータオブジェクトに格納することができ、このアプリケーションデータオブジェクトは、システムメモリ１２６内に保持されるものとして処理することができる。アプリケーションデータ保持システムレベルコンポーネント１１２は、ストレージノードオペレーティングシステム６３４内で実行されて、アクセスリクエストのトランザクションログを選択的に保持することができる。アクセスリクエストのトランザクションログに関するデータバックアップを有効化することができる。従って、例えばトランザクションのアクノリッジ信号をストレージクライアント６００に返す場合、ストレージノードマネジャアプリケーション６３２は、これらのリクエストをシステムメモリ内のトランザクションログに書き込むだけで済み、この書き込みは、トランザクションの肯定応答を返す前にトランザクションリクエストを不揮発性データストレージ内に保持するよりもずっと高速に行うことができる。ストレージノード障害から復旧すると、データバックアップをトランザクションログに関して無効化する（再有効化されるまで）ことができ、そしてアクセスリクエストのトランザクションログを不揮発性データストレージ１２２からシステムメモリ１２６に、メモリバックアップコントローラ１２４を介して復元させることにより、確実にトランザクションログに格納されているトランザクションを保持し続けることができる。
【００５６】
本明細書において記載されるシステムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータを選択的に保持する実施形態は、種々の他のデバイスと対話することができる１つ以上のコンピュータシステムで実行することができる。１つのこのようなコンピュータシステムは、図７に図示する。異なる実施形態では、コンピュータシステム１０００は、種々の種類のデバイスのうちのいずれかのデバイスとすることができ、これらのデバイスとして、これらには限定されないが、パーソナルコンピュータシステム、デスクトップコンピュータ、ラップトップ、ノートブック、又はネットブックコンピュータ、メインフレームコンピュータシステム、ハンドヘルドコンピュータ、ワークステーション、ネットワークコンピュータ、カメラ、セットトップボックス、モバイルデバイス、コンシューマデバイス、ビデオゲームコンソール、ハンドヘルドビデオゲームデバイス、アプリケーションサーバ、ストレージデバイス、又はスイッチ、モデム、ルータのような周辺装置、又は広義には、任意の種類のコンピューティングデバイス又は電子デバイスを挙げることができる。
【００５７】
図示の実施形態では、コンピュータシステム１０００は、システムメモリ１０２０に入力／出力（Ｉ／Ｏ）インターフェース１０３０を介して接続される１つ以上のプロセッサ１０１０を含む。コンピュータシステム１０００は更に、Ｉ／Ｏインターフェース１０３０に接続されるネットワークインターフェース１０４０と、カーソルコントロールデバイス１０６０、キーボード１０７０、及びディスプレイ（群）１０８０のような１つ以上の入力／出力（Ｉ／Ｏ）デバイス１０５０と、を含む。ディスプレイ（群）１０８０は、標準的なコンピュータモニタ（群）および／又は他のディスプレイシステム、技術、又はデバイスを含むことができる。少なくとも幾つかの実施形態では、これらの入力／出力デバイス１０５０は更に、パッド又はタブレットのようなタッチ式作動デバイス、又はマルチタッチ式作動デバイスを含むことができ、このタッチ式作動デバイスを利用して、ユーザは、入力をスタイラスペン状デバイスおよび／又は１つ以上の数字認識装置によって行う。幾つかの実施形態では、種々実施形態を、コンピュータシステム１０００の単一のインスタンス（機能を遂行するための実体）を使用して実現することができるのに対し、他の実施形態では、複数のこのようなシステム、又はコンピュータシステム１０００を構成する複数のノードは、実施形態の異なる部分、又は異なるインスタンスをホストするように構成することができることが考えられる。例えば、１つの実施形態では、幾つかの要素は、他の要素を実行するこれらのノードとは異なるコンピュータシステム１０００の１つ以上のノードによって実行することができる。
【００５８】
種々の実施形態では、コンピュータシステム１０００は、１つのプロセッサ１０１０を含むユニプロセッサシステム、又は幾つかの（例えば、２個、４個、８個、又は別の適切な個数の）プロセッサ１０１０を含むマルチプロセッサシステムとすることができる。プロセッサ１０１０は、命令を実行することができる任意の適切なプロセッサとすることができる。例えば、種々の実施形態では、プロセッサ１０１０は、ｘ８６、ＰｏｗｅｒＰＣ、ＳＰＡＲＣ、ＭＩＰＳ  ＩＳＡ、又は他のいずれかの適切なＩＳＡのような多種多様な命令セットアーキテクチャ（ＩＳＡ）のうちのいずれかを実装した汎用プロセッサ又は組込みプロセッサとすることができる。マルチプロセッサシステムでは、プロセッサ１０１０の各プロセッサは普通、必ずという訳ではないが、同じＩＳＡを実装することができる。
【００５９】
幾つかの実施形態では、少なくとも１つのプロセッサ１０１０はグラフィックス処理ユニットとすることができる。グラフィックス処理ユニットすなわちＧＰＵは、パーソナルコンピュータ、ワークステーション、ゲームコンソール、又は他のコンピューティング又は電子デバイスの専用グラフィックスレンダリングデバイスであると考えることができる。最新のＧＰＵは、コンピュータグラフィックスを操作して表示する際に非常に効率が良く、そしてこれらのＧＰＵの高度並列構造は、これらのＧＰＵを、所定範囲の複雑なグラフィックアルゴリズムの通常のＣＰＵよりも一層効果的に動作させることができる。例えば、グラフィックスプロセッサは、多数のグラフィックスプリミティブ処理を、ホスト中央処理ユニット（ＣＰＵ）でスクリーンに直接投影するよりもずっと高速に実行することができるように実装することができる。種々の実施形態では、グラフィックスレンダリングは、このようなＧＰＵのうちの１つのＧＰＵで実行する、又はこのようなＧＰＵのうちの２つ以上のＧＰＵで並列に実行するように構成されるプログラム命令により少なくとも部分的に行うことができる。ＧＰＵ（群）は、１つ以上のアプリケーションプログラマインターフェース（ＡＰＩ）を実行することができ、これらのアプリケーションプログラマインターフェースによりプログラマは、ＧＰＵ（群）の機能を呼び出すことができる。適切なＧＰＵ群は、ＮＶＩＤＩＡ  Ｃｏｒｐｏｒａｔｉｏｎ、  ＡＴＩ  Ｔｅｃｈｎｏｌｏｇｉｅｓ（ＡＭＤ）のようなベンダー、及び他のベンダーから市販されている。
【００６０】
システムメモリ１０２０は、プロセッサ１０１０からアクセス可能なプログラム命令および／又はプログラムデータを格納するように構成することができる。種々の実施形態では、システムメモリ１０２０は、スタティックランダムアクセスメモリ（ＳＲＡＭ）、シンクロナスダイナミックＲＡＭ（ＳＤＲＡＭ）、不揮発性／フラッシュ系メモリ、又はいずれかの他の種類のメモリのようないずれかの適切なメモリ技術を用いて実現することができる。図示の実施形態では、上に説明した機能のような所望の機能を実行するプログラム命令及びデータは、システムメモリ１０２０内に、プログラム命令１０２５及びデータストレージ１０３５としてそれぞれ格納されるものとして図示されている。他の実施形態では、プログラム命令および／又はプログラムデータは、異なる種類のコンピュータアクセス可能な媒体、又はシステムメモリ１０２０又はコンピュータシステム１０００とは別体の同様の媒体で受信し、当該媒体から送信し、又は当該媒体に格納することができる。一般的に言うと、コンピュータアクセス可能な媒体は、例えば磁気媒体又は光媒体、例えばコンピュータシステム１０００にＩ／Ｏインターフェース１０３０を介して接続されるディスク又はＣＤ／ＤＶＤ−ＲＯＭのような記憶媒体又はメモリ媒体を含むことができる。コンピュータアクセス可能な媒体を介して格納されるプログラム命令及びデータは、電気信号、電磁信号、又はデジタル信号のような伝送媒体又は信号により送信することができ、これらの信号は、ネットワークインターフェース１０４０を介して実現されるようなネットワークおよび／又は無線リンクのような通信媒体を介して伝送することができる。
【００６１】
１つの実施形態では、Ｉ／Ｏインターフェース１０３０は、当該デバイス内のプロセッサ１０１０、システムメモリ１０２０、及びいずれかの周辺装置の間のＩ／Ｏトラフィックを調整するように構成することができ、周辺装置として、ネットワークインターフェース１０４０、又は入力／出力デバイス１０５０のような他の周辺インターフェースを挙げることができる。幾つかの実施形態では、Ｉ／Ｏインターフェース１０３０は、いずれかの必要なプロトコル、タイミング変換又は他のデータ変換を行って、１つのコンポーネント（例えば、システムメモリ１０２０）からのデータ信号を、別のコンポーネント（例えば、プロセッサ１０１０）による使用に適するフォーマットに変換することができる。幾つかの実施形態では、Ｉ／Ｏインターフェース１０３０は、例えばペリフェラルコンポーネントインターコネクト（ＰＣＩ）バス規格又はユニバーサルシリアルバス（ＵＳＢ）規格の変種のような種々の種類の周辺バスを介して接続されるデバイスのサポートを行うことができる。幾つかの実施形態では、Ｉ／Ｏインターフェース１０３０の機能は、例えばノースブリッジ及びサウスブリッジのような２つ以上の個別コンポーネントに分割することができる。更に、幾つかの実施形態では、システムメモリ１０２０とのインターフェースのようなＩ／Ｏインターフェース１０３０の機能の幾つかの部分、又は全部は、プロセッサ１０１０に直接組み込むことができる。
【００６２】
ネットワークインターフェース１０４０は、データをコンピュータシステム１０００と、ネットワークに接続される他のコンピュータシステムのような他のデバイスとの間で、又はコンピュータシステム１０００のノードの間で授受することができるように構成することができる。種々の実施形態では、ネットワークインターフェース１０４０は、例えばいずれかの適切な種類のイーサネット（登録商標）ネットワークのような有線又は無線の汎用データネットワークを介した通信、アナログ音声ネットワーク又はデジタルファイバ通信ネットワークのような電気通信網／電話網を介した通信、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  ＳＡＮｓのようなストレージエリアネットワークを介した、又はいずれかの他の適切な種類のネットワークおよび／又はプロトコルを介した通信をサポートすることができる。
【００６３】
入力／出力デバイス１０５０として、幾つかの実施形態では、１つ以上のディスプレイターミナル、キーボード、キーパッド、タッチパッド、スキャニングデバイス、音声認識デバイス又は光認識デバイス、又は１つ以上のコンピュータシステム１０００によりデータを入力する、又は取り出すために適するいずれかの他のデバイスを挙げることができる。複数の入力／出力デバイス１０５０は、コンピュータシステム１０００に設けることができる、又はコンピュータシステム１０００の種々のノードに分散させることができる。幾つかの実施形態では、同様の入力／出力デバイスは、コンピュータシステム１０００とは別体とすることができ、かつコンピュータシステム１０００の１つ以上のノードと、有線接続又は無線接続を介して、例えばネットワークインターフェース１０４０を介して対話することができる。
【００６４】
図７に示すように、メモリ１０２０は、本明細書において説明されるように、システムメモリから不揮発性データストレージに移行されるアプリケーションデータを選択的に保持する種々の実施形態を実現するように構成されるプログラム命令１０２５と、プログラム命令１０２５によりアクセス可能な種々のデータを含むデータストレージ１０３５と、を含むことができる。１つの実施形態では、プログラム命令１０２５は、本明細書において説明され、かつこれらの図に図示されるように、種々の実施形態のソフトウェア要素を含むことができる。データストレージ１０３５は、種々実施形態において使用することができるデータを含むことができる。他の実施形態では、他のソフトウェア要素又は異なるソフトウェア要素、及びデータを含めることができる。
【００６５】
当業者であれば、コンピュータシステム１０００が例示に過ぎず、かつ本明細書において説明されるように、これらの実施形態の範囲を限定するものではないことを理解できるであろう。具体的には、コンピュータシステム及びデバイスは、指示された機能を実行することができるハードウェア又はソフトウェアのいずれかの組み合わせを含むことができ、これらのコンピュータシステム及びデバイスとして、コンピュータ、パーソナルコンピュータシステム、デスクトップコンピュータ、ラップトップ、ノートブック、又はネットブックコンピュータ、メインフレームコンピュータシステム、ハンドヘルドコンピュータ、ワークステーション、ネットワークコンピュータ、カメラ、セットトップボックス、モバイルデバイス、ネットワークデバイス、インターネットアプライアンス、ＰＤＡ、無線電話、ページャ、コンシューマデバイス、ビデオゲームコンソール、ハンドヘルドビデオゲームデバイス、アプリケーションサーバ、ストレージデバイス、スイッチ、モデム、ルータのような周辺装置、又は広義には、任意の種類のコンピューティングデバイス又は電子デバイスを挙げることができる。コンピュータシステム１０００は、不図示の他のデバイスに接続することもできる、又はそうではなく、スタンドアローンシステムとして動作することができる。更に、図示のコンポーネントにより提供される機能は、幾つかの実施形態では、組み合わせることにより、より少数のコンポーネントとするか、又は更に別のコンポーネントに分散させることができる。同様に、幾つかの実施形態では、図示のコンポーネントのうちの幾つかの機能は、提供されなくてもよい、および／又は他の更に別の機能は利用可能とすることができる。
【００６６】
当業者であれば更に、種々のアイテムがメモリに、又はストレージに使用中に格納されているものとして図示されているが、これらのアイテムは、又はこれらのアイテムの一部は、メモリ管理とデータの整合性のために、メモリと他のストレージデバイスとの間で転送されることを理解できるであろう。あるいは、他の実施形態では、これらのソフトウェアコンポーネントの幾つかの部分、又は全部が、別のデバイスのメモリ内で実行され、かつ図示のコンピュータシステムと、コンピュータ間通信により通信することができる。これらのシステムコンポーネント又はデータ構造の幾つかの部分、又は全部はまた、コンピュータアクセス可能な媒体、又はポータブル製品に格納されて（例えば、命令として、又は構造化データとして）適切なドライブによって読み出すことができ、当該ドライブの種々の実施例が上に説明されている。幾つかの実施形態では、コンピュータシステム１０００とは別体のコンピュータ可読媒体に格納されている命令は、コンピュータシステム１０００に、ネットワークおよび／又は無線リンクのような通信媒体を介して伝送される電気信号、電磁信号、又はデジタル信号のような伝送媒体又は信号を介して送信することができる。このコンピュータ可読記憶媒体は非一時的な媒体とすることができる。種々の実施形態では更に、コンピュータアクセス可能な媒体についてのこれまでの記述に従って実行される命令および／又はデータを受信する、送信する、又は格納することができる。従って、本発明は、他のコンピュータシステム構成を用いて実施することができる。
【００６７】
これまでの説明は、以下の条項を考慮に入れることにより、より深く理解することができる。
条項１．
１つ以上のプロセッサと、
システム障害が発生した場合に、システムメモリにアプリケーションプログラム用に格納されている所定範囲のアプリケーションデータを、前記システムメモリに格納されている前記所定範囲のアプリケーションデータを不揮発性データストレージにコピーすることにより保持するように構成される特殊メモリシステムと、
プログラム命令を格納する前記システムメモリと、を備え、前記プログラム命令群が前記１つ以上のプロセッサにより実行されるとシステムレベルコンポーネントが実行され、該システムレベルコンポーネントは、
指示を前記アプリケーションプログラムに出して、前記システムメモリに格納されている前記所定範囲のアプリケーションデータを保持するものとして処理することができるようにし、
システム障害が発生した場合に、前記システムメモリに前記アプリケーションプログラム用に格納されている前記所定範囲のアプリケーションデータに関するデータバックアップを有効化し、
システム障害から復旧すると、前記システムメモリに格納されて前記不揮発性データストレージに移行される前記所定範囲のアプリケーションデータのその後のデータバックアップを無効化するように構成される、
システム。
条項２．
前記システムレベルコンポーネントは更に、
前記システム障害から復旧すると、前記不揮発性データストレージに格納されて前記システムメモリに移行される前記所定範囲のアプリケーションデータのうちの少なくとも幾つかのアプリケーションデータの復元を指示して、前記アプリケーションプログラムからアクセスすることができるように構成される、条項１に記載のシステム。
条項３．
前記システムレベルコンポーネントは更に、
その後のデータの保持を前記無効化した後、前記システムメモリに格納されて前記不揮発性データストレージに移行される前記所定範囲のアプリケーションデータに関するデータバックアップを再有効化するように構成される、条項２に記載のシステム。
条項４．
前記特殊メモリシステムはメモリバックアップコントローラを備え、該メモリバックアップコントローラは、
前記システム障害を検出し、
前記システム障害を検出すると、前記システムメモリに格納されている残りのデータを前記不揮発性データストレージデバイスにコピーすることなく、前記所定範囲のアプリケーションデータを前記システムメモリから前記不揮発性データストレージデバイスにコピーするように構成され、
前記有効化、前記無効化、前記指示、及び前記再有効化は、前記メモリバックアップコントローラに対して指示される、条項３に記載のシステム。
条項５．
システムを実行するコンピューティングデバイスによって実行し、前記実行する際に、
アプリケーションデータオブジェクトをシステムメモリに格納しているアプリケーションプログラムに指示して、前記アプリケーションデータオブジェクトを保持するものとして処理することができるようにし、
システム障害が発生した場合に、前記システムメモリに格納されている前記アプリケーションデータオブジェクトに関するデータバックアップを有効化して、前記アプリケーションプログラム用の前記アプリケーションデータオブジェクトを保持し、前記データバックアップにより、前記システムメモリに格納されている前記アプリケーションデータオブジェクトを不揮発性データストレージにコピーし、
システム障害から復旧すると、前記システムメモリに格納されて前記不揮発性データストレージに移行される前記アプリケーションデータオブジェクトに関するその後のデータバックアップを無効化する、
方法。
条項６．
更に、前記システム障害から復旧すると、前記不揮発性データストレージに格納されて前記システムメモリに移行される前記アプリケーションデータオブジェクトのうちの少なくとも幾つかのデータオブジェクトの復元を指示して、前記アプリケーションプログラムからアクセスすることができるようにする、条項５に記載の方法。
条項７．
前記システム障害から復旧する前の前記システムメモリ内の前記アプリケーションデータオブジェクトの１つ以上のストレージロケーションは、前記不揮発性データストレージに格納されて前記システムメモリに移行される前記アプリケーションデータオブジェクトのうちの前記少なくとも幾つかの復元の前記指示が行われるときの前記アプリケーションデータオブジェクトの前記システムメモリ内の１つ以上の別のストレージロケーションとは異なる、条項６に記載の方法。
条項８．
更に、前記無効化の後、前記システムメモリに格納されて前記不揮発性データストレージに移行される前記アプリケーションデータオブジェクトに関するデータバックアップを再有効化する、条項６に記載の方法。
条項９．
更に、前記指示、前記無効化、前記指示、及び前記再有効化を、前記アプリケーションプログラムを含む複数のアプリケーションプログラムのうちの少なくとも１つに対応する複数のアプリケーションデータオブジェクトのうちの異なるアプリケーションデータオブジェクトについて個別に実行する、条項８に記載の方法。
条項１０．
メモリバックアップコントローラが、前記システムメモリと前記不揮発性データストレージとの間の通信を指示し、前記有効化、前記無効化、前記指示、及び前記再有効化では、アプリケーションプログラミングインターフェース（ＡＰＩ）の一部が、前記メモリバックアップコントローラによる前記有効化、前記無効化、前記指示、及び前記再有効化の実行を指示する、条項８に記載の方法。
条項１１．
システム障害が発生した場合に、前記システムメモリに格納されている前記アプリケーションデータオブジェクトに関するデータバックアップを前記有効化して、前記１つ以上のアプリケーションプログラム用の前記アプリケーションデータオブジェクトを保持する際に、
前記アプリケーションデータオブジェクトを格納している前記システムメモリ内の１つ以上のストレージロケーションを特定して有効化することによりデータバックアップを行い、
前記システム障害が検出されると、前記メモリバックアップコントローラに指示して、前記システムメモリ内に特定される前記１つ以上のストレージロケーションに関するデータバックアップ動作を、前記不揮発性データストレージ内の１つ以上のバックアップロケーションに対して実行し、そして
前記アプリケーションデータオブジェクトに関するマッピング情報を更新して、前記アプリケーションデータオブジェクトに関して特定される前記１つ以上のストレージロケーションを前記１つ以上のバックアップロケーションにリンクさせる、条項１０に記載の方法。
条項１２．
前記不揮発性データストレージに格納されて前記システムメモリに移行される前記アプリケーションデータオブジェクトのうちの少なくとも幾つかの前記復元を前記指示して、前記アプリケーションプログラムからアクセスすることができるようにする際に、
前記マッピング情報に少なくとも部分的に基づいて、前記アプリケーションデータオブジェクトを格納している前記不揮発性データストレージ内の前記１つ以上のバックアップロケーション、及び前記システムメモリ内の前記１つ以上のストレージロケーションを特定して、バックアップ済みの前記アプリケーションデータオブジェクトを前記不揮発性データストレージに格納し、
前記メモリバックアップコントローラに指示して、データを不揮発性データストレージ内に特定される前記バックアップロケーションから前記システムメモリ内に特定される前記ストレージロケーションにコピーする、条項１１に記載の方法。
条項１３．
システム障害が発生した場合に、前記システムメモリに格納されている前記アプリケーションデータオブジェクトに関するデータバックアップを前記有効化して、前記アプリケーションプログラム用の前記アプリケーションデータオブジェクトを保持する際に、更に、前記不揮発性データストレージにコピーするときに、前記アプリケーションデータオブジェクトの暗号化を暗号化方式に従って指示し、
前記不揮発性データストレージに格納されて前記システムメモリに移行される前記アプリケーションデータオブジェクトの復元を前記指示して、前記アプリケーションプログラムからアクセスすることができるようにする際に、更に、前記システムメモリにコピーするときに、前記アプリケーションデータオブジェクトの復号化を前記暗号化方式に従って指示する、条項１２に記載の方法。
条項１４．
更に、前記不揮発性データストレージから、前記アプリケーションデータオブジェクトのうちの少なくとも幾つかを読み出して、前記アプリケーションプログラムを復元する、条項５に記載の方法。
条項１５．
更に、前記システムメモリ及び前記不揮発性データストレージが一体となって、１つ以上の不揮発性デュアルインラインメモリモジュール（ＮＶ−ＤＩＭＭ）を構成する、条項５に記載の方法。
条項１６．
前記アプリケーションデータオブジェクトは、前記１つ以上の不揮発性デュアルインラインメモリモジュール（ＮＶ−ＤＩＭＭ）のうちの１つに格納される所定範囲のシステムメモリである、条項１２に記載の方法。
条項１７．
前記コンピューティングデバイスは、分散ストレージシステムのストレージノードを実現し、前記アプリケーションプログラムは、前記ストレージノードに関するデータ管理動作を実行し、そして前記システムメモリ内の前記アプリケーションデータオブジェクトは、前記ストレージノードのデータベースに格納されているデータに関するアクセス動作を格納して、前記格納アクセス動作を行う旨のアクノリッジメントをデータベースシステムに送信する永続的なトランザクションログとして機能する、条項５に記載の方法。
条項１８．
プログラム命令を格納する非一時的なコンピュータ可読記憶媒体であって、プログラム命令がコンピューティングデバイスによって実行されるとシステムが実行され、該システムは、
所定範囲のアプリケーションデータをシステムメモリに格納しているアプリケーションプログラムに指示して、前記所定範囲のアプリケーションデータを保持するものとして処理することができるようにし、
システム障害が発生した場合に、前記システムメモリに格納されている前記所定範囲のアプリケーションデータに関するデータバックアップを有効化して、前記アプリケーションプログラム用の前記所定範囲のアプリケーションデータを保持し、前記データバックアップにより、前記システムメモリに格納されている前記所定範囲のアプリケーションデータを不揮発性データストレージにコピーし、
システム障害から復旧すると、前記システムメモリに格納されて前記不揮発性データストレージに移行される前記所定範囲のアプリケーションデータに関するその後のデータバックアップを無効化するように構成される、非一時的なコンピュータ可読記憶媒体。
条項１９．
メモリバックアップコントローラが、前記システムメモリと前記不揮発性データストレージとの間の通信を指示し、前記プログラム命令は前記コンピューティングデバイスにより実行されると更に、前記システム障害から復旧すると、前記メモリバックアップコントローラに指示して、前記不揮発性データストレージに格納されて前記システムメモリに移行される前記所定範囲のアプリケーションデータのうちの少なくとも幾つかを復元することにより、前記アプリケーションプログラムからアクセスすることができるようにする、条項１８に記載の非一時的なコンピュータ可読記憶媒体。
条項２０．
前記プログラム命令は前記コンピューティングデバイスにより実行されると更に、前記無効化の後、前記システムメモリに格納されて前記不揮発性データストレージに移行される前記所定範囲のアプリケーションデータに関するデータバックアップを再有効化する、条項１８に記載の非一時的なコンピュータ可読記憶媒体。
条項２１．
前記指示、前記有効化、前記無効化、及び前記再有効化は、前記コンピューティングデバイスによりオペレーティングシステムプログラムの一部として実行される、条項２０に記載の非一時的なコンピュータ可読記憶媒体。
条項２２．
前記コンピューティングデバイスは、分散ストレージシステムのストレージノードを実現し、前記アプリケーションプログラムは、前記ストレージノードに関するデータ管理動作を実行し、そして前記システムメモリ内の前記所定範囲のアプリケーションデータは、前記ストレージノードのデータベースに格納されているデータに関する書き込み動作を格納して、前記格納書き込み動作を行う旨のアクノリッジメントをデータベースシステムに送信する永続的なリドゥーログとして機能する、条項１８に記載の非一時的なコンピュータ可読記憶媒体。
条項２３．
前記システムメモリ及び前記不揮発性データストレージが一体となって、不揮発性ランダムアクセスメモリを構成する、条項１８に記載の非一時的なコンピュータ可読記憶媒体。
結論
【００６８】
種々の実施形態では更に、コンピュータアクセス可能な媒体についてのこれまでの説明に従って実行される命令および／又はデータを受信する、送信する、又は格納することができる。一般的に言うと、コンピュータアクセス可能な媒体は、磁気媒体又は光媒体、例えばディスク又はＤＶＤ／ＣＤ−ＲＯＭのような記憶媒体又はメモリ媒体、ＲＡＭ（例えば、ＳＤＲＡＭ、ＤＤＲ、ＲＤＲＡＭ、ＳＲＡＭなど）、ＲＯＭなどのような不揮発性媒体だけでなく、ネットワークおよび／又は無線リンクのような通信媒体を介して伝送される電気信号、電磁信号、又はデジタル信号のような伝送媒体又は信号を含むことができる。
【００６９】
これらの図に図示され、かつ本明細書において記載される種々の方法は、方法の例示的な実施形態を表わす。これらの方法は、ソフトウェア、ハードウェア、又はソフトウェア及びハードウェアを組み合わせて実行することができる。方法の順番は、変更することができ、そして種々の構成要素を追加し、並べ直し、組み合わせ、省略し、変更するなどすることができる。
【００７０】
本開示の恩恵を享受する当業者には明らかなことであるが、種々の修正及び変更を行うことができる。本発明は、全てのこのような修正及び変更を包含するので、上の説明は、限定的な意味ではなく、例示として見なされるべきであると考えられる。
【図１】
2018055727.tif 000003
【図２】
2018055727.tif 000004
【図３】
2018055727.tif 000005
【図４】
2018055727.tif 000006
【図５】
2018055727.tif 000007
【図６】
2018055727.tif 000008
【図７】
2018055727.tif 000009
【外国語明細書】
2018055727000001.pdf