(57)【要約】  コンピューティングデバイスは、プロセッサ、揮発性メモリ、及び不揮発性記憶装置を備えてよい。デバイスのオペレーティングシステム又はファームウェアは、コンピューティングデバイス上で実行するアプリケーションによって、揮発性メモリの１つ又は複数のページが不揮発性メモリページのように扱われるようにしてよい。不揮発性のように扱われ得るページの最大数は、バッテリー内の利用可能なエネルギーの量、及びメモリのページを不揮発性記憶装置に転送するのに必要とされるエネルギーの量に基づいて判断されてよい。
2019510284.tif 000002
【特許請求の範囲】
【請求項１】
複数のページに論理的に区分された揮発性メモリと、
不揮発性記憶装置であって、前記複数のページのうちのページの内容は、メモリ転送操作によって前記不揮発性記憶装置に転送可能である、不揮発性記憶装置と、
コンピューティングデバイスのオペレーティングシステムと、
前記コンピューティングデバイスに、少なくとも、
バッテリー内のエネルギーの量を示す情報を受け取らせ、前記エネルギーは、前記コンピューティングデバイスによる使用に利用可能であり、
前記メモリ転送操作を実施するのに必要とされるエネルギーの量を判断させ、
前記メモリ転送操作を実施するのに必要とされるエネルギーの前記量に少なくともある程度基づいて、前記コンピューティングデバイスによる使用に利用可能なエネルギーの前記量を使用して前記不揮発性記憶装置に内容を転送することが可能な前記複数のページのページ数を判断させ、
前記揮発性メモリの前記複数のページのうちの１つ又は複数のページを不揮発性メモリのように扱うように、前記オペレーティングシステムを構成させ、前記１つ又は複数のページの数は、前記判断されたページ数に基づく、
１つ又は複数のプロセッサと、
を備える、コンピューティングデバイス。
【請求項２】
前記１つ又は複数のプロセッサは、前記コンピューティングデバイスに、少なくとも、
前記１つ又は複数のページの内容を前記不揮発性記憶装置の予約された部分に転送させる、請求項１に記載のコンピューティングデバイス。
【請求項３】
前記１つ又は複数のページの前記内容は、前記バッテリー内のエネルギーの前記量の低下を示す情報を受け取るのに応答して転送される、請求項２に記載のコンピューティングデバイス。
【請求項４】
前記オペレーティングシステムを構成することは、揮発性メモリの前記１つ又は複数のページに対応する不揮発性メモリの１つ又は複数のページを示す情報で構成インターフェイスのデータを更新することを含む、請求項１に記載のコンピューティングデバイス。
【請求項５】
コンピューティングデバイスのメモリを使用する方法であって、
揮発性メモリのページの内容を不揮発性メモリに転送するのに必要とされるエネルギーの量を示す情報を取得するステップと、
揮発性メモリの前記ページの内容を前記不揮発性メモリに転送するのに利用可能なエネルギーの量を示す情報を受け取るステップと、
前記必要とされるエネルギーの量に少なくともある程度基づいて、前記利用可能なエネルギーの量を使用して揮発性メモリの前記ページの前記内容が前記不揮発性メモリに転送可能であることを判断するステップと、
揮発性メモリの前記ページを不揮発性メモリのページのように扱うように、前記コンピューティングデバイスのオペレーティングシステムを構成するステップと
を含む、方法。
【請求項６】
揮発性メモリの前記ページの前記内容を前記不揮発性メモリの予約された部分に転送するステップ
をさらに含む、請求項５に記載の方法。
【請求項７】
揮発性メモリの前記ページの内容を前記不揮発性メモリに転送するのに利用可能な前記エネルギーの量の低下を示す情報を受け取るのに応答して、揮発性メモリの前記ページの前記内容を前記不揮発性メモリの予約された部分に転送するステップ
をさらに含む、請求項５に記載の方法。
【請求項８】
前記オペレーティングシステムを構成するステップは、揮発性メモリの前記１つ又は複数のページに対応する不揮発性メモリの１つ又は複数のページを示す情報で構成インターフェイスのデータを更新するステップを含む、請求項５に記載の方法。
【請求項９】
前記コンピューティングデバイスのパフォーマンスモード又は安全性モードの少なくとも１つを示す情報に少なくともある程度基づいて、揮発性メモリの前記ページの前記内容が前記不揮発性メモリに転送可能であることを判断するステップ
をさらに含む、請求項５に記載の方法。
【請求項１０】
前記コンピューティングデバイスがユーティリティ電源からバッテリー電源にスイッチしたことを示す情報を受け取るステップと、
前記コンピューティングデバイスがユーティリティ電源からバッテリー電源にスイッチしてからの時間の長さに少なくともある程度基づいて、揮発性メモリの前記ページを揮発性メモリのように扱うように、前記オペレーティングシステムを構成するステップと、
揮発性メモリの前記ページの前記内容を前記不揮発性メモリに転送するステップと
をさらに含む、請求項５に記載の方法。
【請求項１１】
揮発性メモリのページの内容を不揮発性メモリに転送するのに必要とされるエネルギーの量を示す前記情報は、揮発性メモリの前記ページから前記不揮発性メモリに直接メモリアクセス転送を実施することによって消費されるエネルギーに少なくともある程度基づく、請求項５に記載の方法。
【請求項１２】
揮発性メモリのページの内容を不揮発性メモリに転送するのに必要とされるエネルギーの量を示す前記情報は、プロセッサが前記ページの前記内容を転送するための操作を開始することによって消費されるエネルギーに少なくともある程度基づく、請求項５に記載の方法。
【請求項１３】
前記オペレーティングシステムによって不揮発性メモリページのように扱われるように構成される揮発性メモリのその他のページの数に少なくともある程度基づいて、揮発性メモリの前記ページの前記内容が転送可能であることを判断するステップ
をさらに含む、請求項５に記載の方法。
【請求項１４】
揮発性メモリのページの内容を前記不揮発性メモリに転送するのに利用可能な前記エネルギーを使用して、前記不揮発性メモリに転送可能な揮発性メモリのページの最大数を判断するステップ
をさらに含む、請求項５に記載の方法。
【請求項１５】
コンピューターによる実行時に、前記コンピューターに、少なくとも、
揮発性メモリの内容を不揮発性メモリに転送するのに必要とされるエネルギーの量を示す情報を取得させ、
前記揮発性メモリの前記内容を前記不揮発性メモリに転送するのに利用可能なエネルギーの量を示す情報を受け取らせ、
必要とされるエネルギーの前記量に少なくともある程度基づいて、利用可能なエネルギーの前記量を使用して前記不揮発性メモリに転送可能な前記揮発性メモリの一部を識別させ、
前記揮発性メモリの前記一部を不揮発性メモリのように扱うように、前記コンピューターのオペレーティングシステムを構成させる
コンピューター実行可能命令を記憶したコンピューター読み取り可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本開示は、一般に、コンピューティングデバイスのメモリモジュールの操作に関する。詳細には、本開示は、揮発性メモリを使用して、コンピューティングデバイス上で実行するアプリケーションに不揮発性ストレージを提供するためのシステム、方法、及びコンピュータープログラム製品に関する。
【背景技術】
【０００２】
[0002]コンピューティングデバイスのメインメモリは、典型的には、ダイナミックランダムアクセス（「ＤＲＡＭ」：ｄｙｎａｍｉｃ  ｒａｎｄｏｍ−ａｃｃｅｓｓ）メモリモジュールに基づく。ＤＲＡＭは、低コスト及び高ストレージ密度などの、メインメモリとしての使用に適した様々な特性を有する。しかし、ＤＲＡＭメモリモジュールは、典型的には、データ喪失を防ぐために電力の継続的又はほぼ継続的な供給を必要とするキャパシター又はその他の回路を含む。したがって、ＤＲＡＭメモリは、その電源装置が中断された（ｉｎｔｅｒｒｕｐｔｅｄ）際、ＤＲＡＭメモリに記憶されたデータが失われるので、揮発性と呼ばれる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
[0003]否定論理積ゲート（「ＮＡＮＤ」：Ｎｅｇａｔｉｖｅ−ＡＮＤ  ｇａｔｅ）メモリなどのメモリのその他のタイプは、モジュールの電源装置が中断された際、ＮＡＮＤメモリモジュールの内容が失われないので、不揮発性メモリと呼ばれることがある。しかし、コンピューターのメインメモリは、典型的には、ＤＲＡＭメモリモジュールと比較して、より高いコスト及びより低いストレージ密度などの様々な理由で、ＮＡＮＤメモリモジュールから構築されない。
【課題を解決するための手段】
【０００４】
[0004]コンピューティングデバイスは、揮発性メモリ及び不揮発性記憶装置を備えてよい。コンピューティングデバイスがユーティリティ電源で動作している間、ユーティリティ電源が中断された場合、どれだけのエネルギーがコンピューティングデバイスに対して利用可能であるかを示す情報を、コンピューティングデバイスは受け取ってよい。コンピューティングデバイスは、揮発性メモリのページを不揮発性記憶装置に転送するのにどれだけのエネルギーが必要とされるかを判断し、この情報を使用して、バッテリー内の利用可能なエネルギーを使用して、メモリのどれだけのページが保護されることになるかを判断してもよい。少なくともある程度この情報に基づいて、コンピューティングデバイスのオペレーティングシステム又はファームウェアは、揮発性メモリの多くのページを不揮発性として識別してよく、その結果、コンピューティングデバイス上で実行するアプリケーションは、ページが不揮発性であるかのように揮発性メモリのページに情報を記憶してよい。
【０００５】
[0005]本概要は、発明を実施するための形態において、下記にさらに記述される簡素化された形の概念の選択を紹介するために提供される。本概要は、請求される主題の主要な特徴又は本質的な特徴を識別することを意図するものではなく、請求される主題の範囲を限定するために使用されることを意図するものでもない。
【０００６】
[0006]本開示の実施形態は、添付の図面を参照しながら、以下にさらに完全に記述される。
【図面の簡単な説明】
【０００７】
【図１】[0007]オペレーティングシステムによって不揮発性メモリとして識別された揮発性メモリを有する例示のコンピューティングシステムを描写するブロック図である。
【図２】[0008]利用可能なバッテリー電源に基づいて、不揮発性として識別されたページの数を調節することを描写するブロック図である。
【図３】[0009]揮発性メモリを揮発性メモリ又は不揮発性メモリとして識別するコンピューティングデバイスの例を描写するブロック図である。
【図４】[0010]複数のコンピューティングデバイスによって共有されるバッテリーを描写する図である。
【図５】[0011]不揮発性メモリとして識別された揮発性メモリを有するコンピューティングデバイスを動作させるための例示の処理を描写するフロー図である。
【図６】[0012]アプリケーションの実績パラメーターに基づいて、不揮発性メモリの識別を調節するための処理の例を描写するフロー図である。
【図７】[0013]揮発性メモリの内容を保護する例を提供するブロック図である。
【図８】[0014]不揮発性として識別された揮発性メモリの内容を保護するための例示の処理を描写するフロー図である。
【図９】[0015]メモリ保護中にプロセッサコアへの電力配給を制御する例を描写するフロー図である。
【図１０】[0016]不揮発性として識別された揮発性メモリモジュールを有するコンピューティングデバイスを動作させる例を描写するフロー図である。
【図１１】[0017]本明細書に記述される技法が具体化され得る例示の汎用コンピューティング環境を描写する図である。
【発明を実施するための形態】
【０００８】
[0018]コンピューティングデバイスは、プロセッサ、揮発性メモリモジュールを備えるメインメモリ、及び不揮発性記憶装置を備えてよい。揮発性メモリモジュールは、電力喪失の際に内容が失われるメモリであってよい。いくつかのケースにおいて、揮発性メモリモジュールは、メモリに記憶された内容の保持に関して、その耐久性が不揮発性メモリと比較して相対的に低いメモリモジュールであってよい。
【０００９】
[0019]コンピューティングデバイスの電源は、ユーティリティ電源とバッテリー電源のいくつかの組合せによって供給されてよい。ユーティリティ電源は、送電網で配給される主電源などのソースを指してよい。ユーティリティ電源は、局地的に生成される太陽光発電、風力発電、又は火力発電など、持続可能又は典型的には利用可能であると一般に考えられるその他の電力源を指してもよい。時として、ユーティリティ電源は、太陽光発電又は風力発電システムにおいて、余剰時にエネルギーを貯蔵し、欠乏時にエネルギーを提供するのに使用されるバッテリーなどの、バッテリーコンポーネントを含んでよい。より一般に、ユーティリティ電源は、コンピューティングデバイスの動作期間に典型的に利用可能な電力の任意のソースを指してよい。
【００１０】
[0020]バッテリー電源は、バッテリーセル、キャパシター、又はその他のエネルギーストレージ機構を収めるデバイスなどの、エネルギーのバックアップソースを指してよい。ユーティリティ電源が利用可能なとき、バッテリーは充電してよく、コンピューティングデバイスに利用可能な電力量が増加することがある。ユーティリティ電源が利用可能でないとき、コンピューティングデバイスは、バッテリー電源で動作してよく、バッテリー内の利用可能な電力量が減少することがある。温度、バッテリーの寿命、及びその他のデバイスによるバッテリー電源の消費などのその他のファクターが、利用可能な電力量に影響を及ぼすこともある。
【００１１】
[0021]デバイスのオペレーティングシステム又はファームウェアは、揮発性メモリが不揮発性であるかのように、揮発性メモリをアプリケーションに見せることがある。不揮発性のように見せられること又は識別されることがある揮発性メモリの量は、２つのファクターに基づいて判断されてよい。第１のファクターは、ユーティリティ電源が停止される際に、コンピューティングデバイスによる使用に利用可能なエネルギーの量であってよい。第２のファクターは、揮発性メモリのページを不揮発性記憶装置に転送するのに要求される電力量の見積りであってよい。これらのファクターに基づいて、オペレーティングシステム又はファームウェアは、万一、ユーティリティ電源が中断された場合、メモリのどれだけのページが記憶装置に保護されることになるかについての見積りを判断してよい。次に、これらのページは、オペレーティングシステム又はファームウェアによって、不揮発性であると識別されてよい。
【００１２】
[0022]万一、ユーティリティ電源が中断された場合、コンピューティングデバイスは、不揮発性として識別された揮発性メモリの内容が保護されるメモリ保護フェーズに入ってよい。このフェーズ中、コンピューティングデバイスのコンポーネントへの電力配給は、メモリ保護に必要とされるこれらのコンポーネントに限られてよい。これは、より多くの量の揮発性メモリが不揮発性として識別されるのを許容してよい。追加として、メモリ保護中の電力状態は、エネルギーの消費及び可用性に関する予測がより信頼できるようなものであってよい。
【００１３】
[0023]図１は、オペレーティングシステムによって不揮発性メモリとして識別された揮発性メモリを有する例示のコンピューティングシステムを描写するブロック図である。コンピューティングデバイス１００は、オペレーティングシステム１０２及びファームウェア１０４の命令を載せるメモリ、プロセッサ１０６、ＤＲＡＭメモリモジュール１１４、及び不揮発性記憶装置１２０を備えてよい。
【００１４】
[0024]コンピューティングデバイス１００は、典型的には、ユーティリティ電力源１２２で動作してよい。時々、ユーティリティ電力源１１６が中断されるときなど、コンピューティングデバイス１００は、バッテリー電力源１２４で動作してよい。停電中、又はユーティリティ電力源１２２に関連があるその他の障害中に、コンピューティングデバイスは、ユーティリティ電力源１２２からバッテリー電力源１２４にその電力源をスイッチするか、又は移してよい。いくつかの例において、バッテリー電力源１２４は、コンピューティングデバイス１００に統合されてよい。その他の例において、バッテリー電力源は、コンピューティングデバイス１００の外部にあってよい。
【００１５】
[0025]プロセッサ１０６は、コア１０８及びアンコア１１０を含む様々なサブコンポーネントを備えてよい。プロセッサ１０２の電力消費は、コア１０８及びアンコア１１０の電源が非従属的に停止又は維持され得るように制御されてよい。例えば、コア１０８への電力配給は、アンコア１１０の電源が維持され得る間、停止されてよい。電力を停止することは、影響を受けるコンポーネントへのエネルギーのフローを部分的に又は全体的に中断することを含んでよい。電力を停止することは、コンポーネントを低電力状態に置くことを指してもよい。典型的には、電力が停止されたコンポーネントは、電力が停止される間、動作しないが、一旦、電力が復元されたら、動作を再開してよい。コンポーネントの電源を維持することは、コンポーネントに充分な電力を配給することを含んでよく、その結果、コンポーネントは、その機能の少なくともいくつかに関して動作可能なままでよい。
【００１６】
[0026]コア１０８は、プロセッサ１０６の処理ユニットを備えてよい。表現を簡潔にするために図１は、単一のコア１０８を有するようにプロセッサ１０６を描写するが、典型的には、プロセッサ１０６は多くのコアからなる。プロセッサ１０６の処理ユニットのように、コア１０８は、典型的には、オペレーティングシステム１０２及びファームウェア１０４のコンピューター読み取り可能命令などの、コンピューター読み取り可能命令を実行し、それによって、コンピューティングデバイスに様々な動作を実施させる。
【００１７】
[0027]アンコア１１０は、コア１０８の一部に関連があるが、コア１０８に含まれないプロセッサ１０６の一部を含んでよい。いくつかのケースにおいて、プロセッサ１０６は、描写されたコア１０８などの、１つのアンコア１１０及び複数のコアを含んでよい。典型的には、アンコア１１０は、Ｌ３キャッシュのメンテナンスに関連がある機能を実施し、メモリコントローラー１１２を含んでよい。
【００１８】
[0028]メモリコントローラー１１２は、ＤＲＡＭメモリモジュール１１４に記憶されたデータへのアクセスを制御してよい。これは、直接メモリアクセス（「ＤＭＡ」：ｄｉｒｅｃｔ−ｍｅｍｏｒｙ  ａｃｃｅｓｓ）操作を実施することを含んでよい。ＤＭＡ操作は、メモリの内容を転送することを伴ってよい。例えば、ＤＭＡ操作は、ＤＲＡＭメモリモジュール１１４の内容を不揮発性記憶装置１２０に転送することを伴ってよい。ＤＭＡ操作は、オペレーティングシステム１０２又はファームウェア１０４の命令をコア１０８が実行することによって開始されてよい。一旦、ＤＭＡ操作が開始されたら、コア１０８はその他の操作を再開するか、又は低電力状態もしくは無電力状態に置かれてよく、その間にＤＭＡ操作は完了する。
【００１９】
[0029]割り込み信号がプロセッサ１０６に送信されてよい。割り込み信号は、コンピューティングデバイス１００のコンポーネント、又はバッテリー電力源１２４などの外部デバイスからの、イベントに関する信号又はその他の送信を含んでよい。割り込み信号の例は、ネットワークコンポーネント、ユーザーインターフェイスコンポーネントなどによって生成された信号を含む。いくつかのケースにおいて、様々な割り込み信号は、コンピューティングデバイス１００の動作中に生じることがあるエラー条件又は状態変更に応答して生成されてよい。割り込み信号は、ＤＭＡ操作に関連して生成されてよい。例えば、割り込み信号は、ＤＭＡ操作の完了に応答して生成されてよい。ＤＭＡ操作に関係がある割り込みなどの一定の割り込みは、アンコア１１０によって処理されてよい。
【００２０】
[0030]バッテリー電力源１２４は、割り込み信号又はその他通信をコンピューティングデバイス１００に供給してもよい。通信は、バッテリー電力源１２４の状態に対する変更を示すものであってよい。例えば、状態情報は、バッテリー電力源１２４がユーティリティ電力源１２２から、現在充電されているかどうか、及びどれだけのバッテリー電源がコンピューティングデバイス１００に利用可能であるかを示す情報を含んでよい。いくつかの例において、バッテリー電力源１２４は、多くのデバイスに電力を供給することがあるので、コンピューティングデバイス１００に利用可能な電力量は、バッテリーに貯蔵された電力の合計量より少ないことがある。
【００２１】
[0031]ＤＲＡＭメモリモジュール１１４は、時としてページと呼ばれるメモリのユニットに細分されてよい。メモリのページは、メモリのスピード及び揮発性などの一定の特性と関連付けられてよい。例えば、ＤＲＡＭメモリモジュール１１４は、揮発性ＲＡＭであることがあり、その結果、ＤＲＡＭメモリモジュール１１４の電源が停止される場合、ＤＲＡＭメモリモジュール１１４の内容は失われる。メモリの特性は、コンピューティングデバイス１００上で実行するアプリケーションプログラムに伝えられてよい。いくつかの例において、ファームウェア１０４は、ＤＲＡＭメモリモジュール１１４の特性をブート時に判断し、この情報をオペレーティングシステム１０２に伝えてよい。次に、オペレーティングシステム１０２は、これらの特性をアプリケーションプログラムに伝えてよい。
【００２２】
[0032]本明細書で使用されるように、メモリのページは、メモリモジュール内のメモリの一部を指してよい。いくつかの例において、メモリのページは、時としてメモリの領域又はメモリの一部と呼ばれ、メモリデバイスの特性によってグループ化されるか、又は論理的に区分されてよい。例えば、メモリのページ、領域、又は一部は、メモリの内容が単一の操作で読み取り可能又は書き込み可能であることができるメモリに対応してよい。別の例において、メモリのページ、領域、又は一部は、キャッシュラインを共有してよい。その他の例において、メモリのページ、領域、又は一部の境界は、メモリコントローラー、ファームウェア、又はオペレーティングシステムによって論理的に区分されてよい。
【００２３】
[0033]上述のように、ＤＲＡＭメモリモジュール１１４は揮発性ＲＡＭであってよい。しかし、ファームウェア１０４及び／又はオペレーティングシステム１０２は、揮発性のＤＲＡＭメモリモジュール１１４のページを不揮発性メモリであると識別することがある。識別は、メモリの特性についての情報をメモリのユーザーに伝えることを含んでよい。例えば、ファームウェア１０４は、ＤＲＡＭメモリモジュール１１４の一定のページが不揮発性メモリページであることをオペレーティングシステム１０２にレポートすることがある。例えば、これは、拡張設定及び電源インターフェイス（「ＡＣＰＩ」：Ａｄｖａｎｃｅｄ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  Ｐｏｗｅｒ  Ｉｎｔｅｒｆａｃｅ）によって定義されるシステム記述テーブルなどの、システム記述テーブルを更新することを伴ってよい。オペレーティングシステム１０２は、コンピューティングデバイス１００上で実行しているアプリケーションにこの情報をレポートすることがある。オペレーティングシステム上で実行するアプリケーションは、オペレーティングシステムのアプリケーションプログラミングインターフェイス（「ＡＰＩ」：ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ）を起動すること、ＡＣＰＩのシステム記述テーブルを検査すること、などによって、オペレーティングシステムがメモリのページを不揮発性として識別したことを判断してよい。いくつかのケースにおいて、メモリを不揮発性として識別することは、メモリのページのユーザーに明示的又は暗黙的に通知することなく、メモリのページが不揮発性のように扱われるはずであることを、ファームウェア又はオペレーティングシステムが記録することを伴ってよいことに留意されたい。
【００２４】
[0034]揮発性又は不揮発性として識別されたページの数は、バッテリー電力源１２４内の利用可能な電力量、及び不揮発性であると識別された揮発性メモリのページの内容を保護するのに必要とされる電力量を含む様々なファクターに依存してよい。それに応じて、ＤＲＡＭメモリモジュール１１４は、識別された不揮発性メモリ１１６の構成部分及び識別された揮発性メモリ１１８の構成部分を備えてよい。
【００２５】
[0035]コンピューティングデバイス１００上で実行するアプリケーションは、例えば、データがコミットされたことを保証するために必ずしも追加のステップを実施することなく、不揮発性メモリとして識別されたメモリにデータを書き込むことによって、これらの処理を適応させてよい。いくつかのケースにおいて、アプリケーションは、より多くの量のメモリが不揮発性のコミットモードにあると識別されるときに、より高いパフォーマンスを実現することがある。例えば、アプリケーションは、書き込みが不揮発性として識別されたメモリの領域に対してであった場合、書き込みがコミットされたことを保証することに関連付けられた処理をバイパスしてよい。
【００２６】
[0036]図２は、利用可能なバッテリー電源に基づいて、不揮発性として識別されたページの数を調節することを描写するブロック図である。図２は、バッテリー２００及びＤＲＡＭメモリモジュール２０８を描写する。バッテリー２００の３つの状態が示され、３つのエネルギーレベル２０２、２０４、２０６に対応する。図２の例は、図１によって描写されたコンピューティングデバイス１００などのコンピューティングデバイスの実施形態を示すことを意図するものであり、コンピューティングデバイス１００は、デバイスに利用可能なエネルギーに基づいて、不揮発性として識別されたメモリの量を調節する。図２の例において、コンピューティングデバイス１００は、バッテリー２００内の利用可能なエネルギーの量が時とともに変動する間にユーティリティ電源で動作していてよい。図２は、バッテリー電源の減少量を描写するが、いくつかの例において、エネルギーの量は時とともに増加することがあり、図２に描写された原則に類似の原則が適用されてよい。エネルギーの量は、様々な理由で変動することがある。例えば、いくつかのケースにおいて、バッテリー２００は、複数のコンピューティングデバイスに接続されることがあり、そのうちのいくつかは、コンピューティングデバイス１００がバッテリー電源のままである間にバッテリー２００から電力を引き出すことがある。別の例において、バッテリーの温度又はその他の動作条件が、利用可能なエネルギーの量の原因となることがある。別の例において、バッテリーの最大容量は、時とともに減ることがある。
【００２７】
[0037]エネルギーレベル２０２において、バッテリー２００内のエネルギーの量は、いくつかの数のメモリページ２２０上でメモリ転送を実施するのに充分であってよい。例えば、図２において、エネルギーレベル２０２におけるバッテリー２００内のエネルギーの量は、１０個の描写されたメモリページ２２０の７つの内容を転送するのに充分であってよい。オペレーティングシステム又はファームウェアは、それぞれのページのメモリの量、ＤＭＡ操作を実施するのに使用されるエネルギーの量、メモリ転送操作中に電源が維持されるデバイスによって使用されるエネルギーの量、その他などのファクターに基づいて転送されることがあるメモリページの数を判断してよい。バッテリー２００がより多くの量の利用可能なエネルギーを有しているとき、より大きな数のページが不揮発性メモリ２１０として識別されてよく、より少ないページが揮発性メモリ２１２として識別されてよい。
【００２８】
[0038]低下したエネルギーレベル２０４において、メモリページ２２０の内容を転送するのに利用可能なエネルギーの量は低下してもよい。例えば、利用可能なバッテリー電源を使用して４つのメモリページを転送するために充分なメモリがあってもよい。オペレーティングシステム又はファームウェアは、４つのメモリページを不揮発性メモリ２１４として識別してよく、６つのページは揮発性メモリ２１６として識別される。
【００２９】
[0039]同様に、さらに低下したエネルギーレベル２０６において、バッテリー２００は、ＤＲＡＭメモリモジュール２０８のページのいずれかを不揮発性記憶装置に転送するのに充分なバッテリー電源を供給できないことがある。したがって、オペレーティングシステム又はファームウェアは、ＤＲＡＭメモリモジュール２０８のページのすべてを揮発性メモリ２１８として識別することがある。
【００３０】
[0040]メモリのページが不揮発性メモリとして識別されたとき、その内容は、その後揮発性メモリとして識別されるより前に保護されてよい。例えば、バッテリー２００内の利用可能なエネルギーの量がエネルギーレベル２０２からエネルギーレベル２０４に低下したとき、識別された不揮発性メモリ２１０の３つのページは、次に、揮発性メモリ２１６として識別されるように切りかわってよい。揮発性メモリ２１６として識別されるようにページを切りかえることを判断するのに応答して、オペレーティングシステム又はファームウェアは、以前識別された不揮発性メモリ２１０の３つのページの内容を転送してよい。メモリの内容は、コンピューティングデバイス１００がユーティリティ電源をまだ使用している間に転送されてよく、したがってバッテリー２００内の利用可能なエネルギーの量は転送によって影響を受けない。
【００３１】
[0041]転送を完了させるより前にユーティリティ電源が故障した場合、不揮発性メモリ２１０として以前に識別されたメモリページのすべてを転送するのに利用可能な充分なエネルギーがないことがある。これが発生するリスクは、不揮発性として識別されるメモリのページの数をより頻繁に調整することを含むがこれらに限定されない様々な方式で緩和されることがあり、不揮発性として識別すべきメモリのページの数を判断するのに使用される計算時のバッテリー変動に、より大きな許容範囲を取り入れる。例えば、不揮発性として識別すべきページの数は、バッテリー内の電力レベルの変動量に比例して、低下してよい。
【００３２】
[0042]図３は、揮発性メモリを、揮発性メモリ又は不揮発性メモリとして識別するコンピューティングデバイスの例を描写するブロック図である。コンピューティングデバイス３００は、バッテリー３１０から通信を受け取るファームウェア３０８を含んでよい。例えば、バッテリー３１０は、ユーティリティ電源の現在の状態、バッテリー３１０内の利用可能なエネルギーの量、その他についての情報を収めるデータを送ってよい。いくつかの例において、バッテリー３１０は、日付、時間、及びユーティリティ電源中断の期間などの、様々な測定指標及び履歴情報を提供してよい。
【００３３】
[0043]ファームウェア３０８は、基本入出力システム（「ＢＩＯＳ」：ｂａｓｉｃ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｓｙｓｔｅｍ）であってよい。ファームウェア３０８は、コンピューティングデバイス３００の様々なハードウェアデバイス及びコンポーネントを初期化してよい。ファームウェア３０８は、ランタイム時の動作の様々な態様に関わってもよい。いくつかの例において、ファームウェア３０８は、コンピューティングデバイス３００のハードウェアコンポーネントに抽象化レイヤーを提供してよく、それを通じてオペレーティングシステム３０４は、コンピューティングデバイス３００のハードウェアにアクセスする。
【００３４】
[0044]設定及び電源インターフェイス３０６は、コンピューティングデバイス３００のメモリ構成に関係がある情報及び更新へのアクセスをオペレーティングシステム３０４に提供してよい。いくつかの例において、設定及び電源インターフェイスは、拡張設定及び電源インターフェイス（「ＡＣＰＩ」）を備えてよい。ファームウェア３０８は、コンピューティングデバイスにインストールされた様々なメモリモジュールの特性を記述する構成テーブルを、ＡＣＰＩを通じて提供してよい。いくつかの例において、これらのテーブルは、メモリモジュールが揮発性メモリとしてレポートされる揮発性メモリ、及び不揮発性としてレポートされる不揮発性メモリであるとして、メモリモジュールの特性を記述することがある。その他の例において、揮発性メモリモジュールのすべてを潜在的に含む、揮発性メモリモジュールのいくつかの部分が不揮発性であることを示すのに、テーブルが使用されることがある。いくつかのケースにおいて、ファームウェア又はオペレーティングシステムによってメモリの不揮発性の特性がシミュレートされることを、テーブルが示すことがある。その他のケースにおいて、不揮発性の特性がメモリモジュール自体の特性ではないという指示を、テーブルが含まないことがある。
【００３５】
[0045]オペレーティングシステム３０４は、様々なプログラム、処理、及びサブ処理を実行できてよい。本明細書で、これらは、図３に描写されたアプリケーション３０２などのアプリケーションと呼ばれてよい。アプリケーション３０２は、様々な方式で不揮発性として識別されたメモリを利用してよい。１つの例において、オペレーティングシステム３０４は、アプリケーションプログラミングインターフェイス（「ＡＰＩ」）を使用して、不揮発性として識別されるメモリへのアクセスをアプリケーション３０２に提供してよい。これは、ヒープ作成又はメモリ割り当てＡＰＩを起動すること、及びリターンされたヒープ又はメモリセグメントが不揮発性メモリページであるはずであることを示すフラグを指定することを含むことがある。いくつかの例において、供給されるメモリの不揮発性の特性が、オペレーティングシステム又はファームウェアによって提供され得るかどうかを、アプリケーションが指定できることがある。その他の例において、揮発性メモリモジュールに基づくページは、透過的に供給されることがあり、その結果、アプリケーションは、提供されるメモリのシミュレートされた不揮発性に適応されるという命令を必ずしも含まないことがある。
【００３６】
[0046]バッテリー３１０の状態に関係があるデータは、ファームウェア３０８を含む様々なコンピューティングデバイス３００のコンポーネントに配布されてよい。例えば、ファームウェア３０８は、バッテリー３１０からデータを受け取るか、又はそうでなければ取得してよい。ファームウェア３０８は、設定及び電源インターフェイス３０６を介してオペレーティングシステム３０４に情報を配布してよい。次に、オペレーティングシステム３０４は、不揮発性として識別されたメモリの量を調節することによって情報を適用してよい。不揮発性として識別されたメモリの量は、パフォーマンス・リスク比、ユーティリティ電源中断の見積確率及び長さ、バッテリーの正常性、バッテリー電源が変動するレート、その他などの様々なファクターに基づいて判断されてよい。
【００３７】
[0047]オペレーティングシステム３０４は、コンピューティングデバイス３００による使用に利用可能なエネルギーの量の増加に応答してよい。応答は、不揮発性として識別されたメモリの量を増加させることを含んでよい。例えば、オペレーティングシステム３０４は、不揮発性メモリページとして識別するためにＤＲＡＭメモリモジュールの追加のページを選択してよい。これは、選択されたＤＲＡＭモジュールのページへのアクセスをアプリケーション３０２に提供すること、ページを不揮発性であると識別すること、及びユーティリティ電源の故障又はシステムシャットダウンの際に、メモリページの内容が不揮発性記憶装置に転送されるようにすることを伴ってよい。不揮発性メモリへの後続の書き込み操作のために、又はその他の理由で場所を空けるために、メモリの内容は不揮発性記憶装置に転送されてもよい。
【００３８】
[0048]オペレーティングシステム３０４は、コンピューティングデバイス３００による使用に利用可能なエネルギーの量の減少に応答してよい。応答の態様は、以前、不揮発性として識別されたＤＲＡＭメモリモジュールのページを選択すること、及びこれらのページが代わりに揮発性として識別されるようにすることを含んでよい。上述したように、識別処理は、メモリのページが揮発性であるか、又は不揮発性であるかを示すために、システム構成テーブルを更新することを含んでよい。バッテリー３１０内の利用可能なエネルギーの量が低下したとき、以前、不揮発性として示されたページが揮発性として示されるように、テーブルは更新されてよい。応答の別の態様は、これらの非選択状態にされたページの内容を不揮発性記憶装置に転送することを含んでよい。非選択状態にされたページは、不揮発性記憶装置上でまだ保護されていない内容を有することがあり、したがって、その内容は、ページが非選択状態にされたときに保護されてよい。これは、保護されていないデータが、非選択状態にされたページに書き込まれていなかったときに回避されることがある。したがって、いくつかのケースにおいて、内容が既に保護されたページ、又はデータがまだ書き込まれていないページは、非選択の対象として好ましいことがある。
【００３９】
[0049]バッテリー３１０は、コンピューティングデバイス３００に加えて、デバイスによって共有されてよい。図４は、複数のコンピューティングデバイスによって共有されたバッテリーを描写する。バッテリー４００は、多くのコンピューティングデバイス４０８、４１０、４１２に予約動作電源を提供してよい。バッテリー４００は、バッテリー４００の状態に関係があるデータを提供することもあり、又はこのデータへのアクセスを許可することもある。
【００４０】
[0050]バッテリー電源の一部は、コンピューティングデバイス４０８、４１０、４１２のそれぞれによる使用のために予約されてよい。図４によって描写されるように、コンピューティングデバイス４０８、４１０、４１２のそれぞれは、予約されたエネルギーの構成部分４０２、４０４、４０６を有してよい。予約されたエネルギーの構成部分４０２、４０４、４０６は、ユーティリティ電源が中断される際に、個々のコンピューティングデバイス４０８、４１０、４１２によって使用するために、予約されてよい。いくつかの例において、予約されたエネルギーの構成部分４０２、４０４、４０６は、不揮発性として識別されたＤＲＡＭメモリモジュールの内容を転送するために特別に予約されることがある。
【００４１】
[0051]予約されたエネルギーの構成部分４０２、４０４、４０６のエネルギーの量は、不揮発性として識別されるべきメモリの対象量などのファクターに基づいてよい。例えば、コンピューティングデバイス４０８は、ＤＲＡＭメモリモジュールを不揮発性として積極的に識別するように構成されることがある。したがって、コンピューティングデバイス４０８のための予約されたエネルギーの構成部分４０２は、その他の予約されたエネルギーの構成部分４０４、４０６のものよりも、大きくされることがある。予約されたエネルギーの量に組み込まれることがあるその他のファクターは、リスク許容度、ユーティリティ電源を失う見積確率、バッテリーの正常性、その他であってよい。メモリの内容を転送するのに必要とされるエネルギーのモデルは、バッテリーからのエネルギーの供給のモデルと併用して使用されてよい。コンピューティングデバイス４０８、４１０、４１２のそれぞれは、モデルを使用して、その他のコンピューティングデバイス４０８、４１０、４１２の所要電力に干渉することなく、どれだけのメモリが不揮発性として識別されてよいかを判断してよい。
【００４２】
[0052]バッテリー４００のエネルギーは、コンピューティングデバイス４０８、４１０、及び４１２のオペレーティングシステム又はファームウェアによって予約されてよい。例えば、コンピューティングデバイス４０８のオペレーティングシステムは、その他の描写されたコンピューティングデバイス４１０、４１２などの、バッテリー４００のその他のユーザーについての情報を受け取るか、又はそうでなければ取得してよい。情報は、それぞれの構成部分に対して予約されたエネルギーの量に影響を及ぼすことがあるファクターを含んでよい。ユーティリティ電源が中断される際に、不揮発性として識別されたメモリの内容を転送するために、例えば、予約されたエネルギー４０２の量だけを使用することによって、コンピューティングデバイス４０８は、その割り当て済みの「電源予算（ｐｏｗｅｒ  ｂｕｄｇｅｔ）」の範囲で作動してよい。
【００４３】
[0053]図５は、不揮発性メモリとして識別された揮発性メモリを有するコンピューティングデバイスを動作させるための例示の処理を描写するフロー図である。図５は、ブロックのシーケンスとして描写されるが、描写されたシーケンスを堅持する実施形態に本開示の範囲を限定するように、描写されたシーケンスが解釈されるべきではないということが理解されよう。さらに、本開示のいくつかの実施形態において、描写されたブロックによって示される操作のいくつかは、変えられ、再配列され、並列に実施され、又は省略されてよいことが理解されよう。
【００４４】
[0054]図１に描写されたコンピューティングデバイス１００などの、コンピューティングデバイスの動作中、コンピューティングデバイスのオペレーティングシステム又はファームウェアは、そのメモリの内容を不揮発性記憶装置に転送するのに必要とされるエネルギーの量に少なくともある程度基づいて、どれだけのメモリが不揮発性として識別され得るかを定期的に判断してよい。ブロック５００は、揮発性メモリモジュールを不揮発性として識別するために現在の容量を判断することを描写し、ここで、容量は、ユーティリティ電源が中断される際にメモリの内容を保護するのに利用可能なエネルギーの量によって制限されてよい。
【００４５】
[0055]ブロック５０２は、ユーティリティ電源フェーズ中に、不揮発性として識別された多くの揮発性メモリページとともにコンピューティングデバイスが動作することを描写する。ユーティリティ電源フェーズは、ユーティリティ電源がコンピューティングデバイスに利用可能な時間を指してよい。いくつかの例において、ユーティリティ電源フェーズは、しきい値の長さの時間より短い長さの時間を別にして、ユーティリティ電源が中断される時間帯を含んでよい。しきい値は、しきい値の長さの時間が経過する前に電源が復元される見積確率に基づいてよい。比較的短期の中断がある場合、ユーティリティ電源フェーズは継続してよい。
【００４６】
[0056]ブロック５０４の操作は、ユーティリティ電源フェーズ中に実施されてよい。ブロック５０４によって描写されるように、この間、コンピューティングデバイスは、バッテリー容量及び電力状態をモニターしてよい。容量をモニターすることは、バッテリーに貯蔵された電力量についての情報を受け取ること又はそうでなければ取得することを伴ってよい。さらに、コンピューティングデバイスは、バッテリーに貯蔵される電力量、及び電源故障の際のコンピューティングデバイスによる使用のために予約される電力量の両方をモニターしてよい。電力状態をモニターすることは、コンピューティングデバイス及び／又はバッテリーが、現在、ユーティリティ電源で供給されているかどうか、又はいくつかのその他条件が、バッテリー内の利用可能なエネルギーの量を低下させているかどうかを示す情報を受け取ること又はそうでなければ取得することを伴ってよい。
【００４７】
[0057]ブロック５０６によって描写されるように、ブロック５００から５０４までの操作は、ユーティリティ電源フェーズが継続する間、繰り返されてよい。ユーティリティ電源が故障するか、又はその他の理由で中断される場合、ブロック５０８及び５１０の操作が実施されてよい。
【００４８】
[0058]図５によって描写され、本明細書で説明されたように、ユーティリティ電源フェーズは、ユーティリティ電源の一時的な中断と関連付けられてよい。しかし、停電の期間は、コンピューティングデバイスが、その挙動がバッテリー電源の使用に適応されるフェーズに入るような期間であってよい。ブロック５０８は、コンピューティングデバイスの動作がバッテリー電源の使用量に適応されるバッテリー電源フェーズに入ることを描写する。揮発性メモリを不揮発性メモリとして識別することに関して、コンピューティングデバイスの動作は、様々な方式に適応されてよい。例えば、コンピューティングデバイスは、揮発性メモリの新しいページを不揮発性として識別するのをやめることがあり、これらのページの内容が不揮発性記憶装置に転送されるときに、揮発性メモリページを不揮発性として日和見的に非選択状態にすることがある。これが発生する度合いは、リスク対パフォーマンスのトレードオフが指定されるのを可能にする調整パラメーターなどの、様々なファクターに基づいてよい。
【００４９】
[0059]バッテリーの枯渇が継続した場合、不揮発性として識別されていた揮発性メモリの内容を保護するのに利用可能な十分なエネルギーがないことがあるというポイントまで、バッテリー内の利用可能なエネルギーの量が低下するまで、ブロック５１０の操作は延ばされる。ブロック５１０は、不揮発性として識別されていた揮発性メモリのためのメモリ保護フェーズに入ることを描写する。このフェーズにおいて、コンピューティングデバイスは、不揮発性として識別されたメモリの内容の保護に、電力消費が主に向けられる状態に入ってよい。
【００５０】
[0060]不揮発性として識別されたメモリの量は、コンピューティングデバイスのパフォーマンスに対する効果があることがある。いくつかの例において、より多くの量のメモリを不揮発性として識別し、本明細書に記述される様々な技法を使用して、揮発性メモリに書き込まれたデータが保護されることを保証することによって、アプリケーションのパフォーマンスが増大されることがある。図６は、アプリケーションの実績パラメーターに基づいて、不揮発性メモリの識別を調節するための処理の例を描写するフロー図である。ブロックのシーケンスとして描写されるが、描写されたシーケンスを堅持する実施形態に本開示の範囲を限定するように、描写されたシーケンスが解釈されるべきではないということが理解されよう。さらに、本開示のいくつかの実施形態において、描写されたブロックによって示される操作のいくつかは、変えられ、再配列され、並列に実施され、又は省略されてよいことが理解されよう。
【００５１】
[0061]ブロック６００は、コンピューティングデバイスが利用可能なバッテリー電源の指示を受け取ることを描写する。指示は、図５のブロック５１０によって描写されるように、万一、コンピューティングデバイスがメモリ保護モードに入る場合、利用可能な電力のどれだけが確実に利用可能であるかを判断するのに充分な情報を含んでよい。
【００５２】
[0062]ブロック６０２は、電源予算及び電源予算の差異を判断することを描写する。電源予算は、メモリ保護モードが入れられる際のバッテリー電源の割り当てを指してよい。例えば、電源予算は、不揮発性として識別されたメモリの内容を保護するために、コア、アンコア、１つ又は複数のメモリモジュール、及び不揮発性記憶装置を動作させるための利用可能なバッテリー電源の割り当てを含むことがある。電源予算は、その他デバイスへの割り当てを含むこともある。
【００５３】
[0063]電源予算の差異は、電源予算の見積られた信頼性を指してよい。これは、利用可能な電力量、及びメモリ保護フェーズ中に電源予算の項目が実際に消費することがある電力量などのファクターの調整を含んでよい。例えば、メモリページが通常の動作の過程で既に保護されたということ、又はメモリページが一度も書き込まれたことがなく、したがって保護されるべきものを何も収めなかったということがあり得るので、不揮発性として識別されたメモリページのいくらかの割合がメモリ保護フェーズ中に保護される必要が実際にはないことを、より積極的な電源予算は想定することがある。しかし、これらの想定が不正確であると判明する場合、メモリ予算は超過されることがある。
【００５４】
[0064]ブロック６０４は、調整パラメーターを使用して電源予算を設定し直すことを描写する。例えば、調整パラメーターは、コンピューティングシステムがどれだけ積極的に揮発性メモリを不揮発性として識別すべきかを示すオペレーティングシステム又はファームウェアの構成要素であってよい。例えば、いくつかのアプリケーションにおいて、システム故障の際にデータが失われるという危険を冒すことが受入可能であってよい。次に、より多くの量の揮発性メモリが不揮発性として識別されることが許容されるように、電源予算は調節されることがある。その他のアプリケーションに関して、データ喪失は、受入不能なものとみなされてよい。これらのアプリケーションに関して、オペレーティングシステム又はファームウェアの構成要素は、メモリ保護フェーズ中の電力使用量の悲観的な見通しに基づいて、電源予算は計算しているはずであるということを示すことがある。
【００５５】
[0065]ブロック６０６において、コンピューティングデバイスは、コミットモードを揮発性メモリのページに割り当ててよい。言い換えると、コンピューティングデバイスは、揮発性メモリの一定のページを、不揮発性のコミットモードを有するものとして識別することを判断してよいが、その他のページは、揮発性のコミットモードのままであってよい。ここで、コミットモードは、メモリに書き込まれたとき、書き込みがコミットされた、すなわち持続的とみなされてよいかどうかを指してよい。
【００５６】
[0066]コンピューティングシステムは、電源予算に基づいて、不揮発性のコミットモードのためのメモリのページを選択してよい。これは、電源予算によって許容されるメモリのページの最大数まで選択して不揮発性のコミットモードを有することを含んでよい。これは、ページを選択して不揮発性のコミットモードと関連付けられてよいページの数を最大化することを含んでもよいが、電源予算と一致したままである。いくつかの例において、選択されたページは、メモリモジュールによってグループ化されてよく、その結果、不揮発性のコミットモードのページを有するメモリモジュールの総数は低下してよく、電源予算との適合が増大されることがある。
【００５７】
[0067]図７は、揮発性メモリの内容を保護する例を提供するブロック図である。揮発性メモリの特性を有するＤＲＡＭメモリモジュール７００は、多くの数のメモリのページを備えてよい。描写されたＤＲＡＭメモリモジュール７００は揮発性なので、その構成要素のメモリページのすべては揮発性であり、すなわち、ＤＲＡＭメモリモジュール７００の電源が中断される場合、これらの内容は失われる。しかし、本明細書で述べられるように、一定のページは不揮発性であると識別されてよく、そのため、コンピューティングデバイス上で実行するアプリケーションによって不揮発性のように扱われる。図７によって描写されるように、ＤＲＡＭメモリモジュールは、識別された不揮発性のページ７０４、７０６を収めてよい。これらのうち、いくつかのメモリページ７０４は、保護されない内容を収めてよく、一方、その他のメモリページ７０６は、既に保護された内容を収めることがあり、又は同等に、メモリページ７０６は、書き込まれたことがなく、そのために、保護されるべきものを何も有さないことがある。ＤＲＡＭメモリモジュール７００は、現在、揮発性として識別されないメモリのページ７０８を収めることもある。
【００５８】
[0068]図７の例において、識別された不揮発性のページ７０６の内容は、ページ７０６の内容を不揮発性記憶装置７０２に転送することによって以前に保護されていてよい。ページ７０６の内容は、保護されたページのレコード７１２によって不揮発性記憶装置７０２上に記憶されるように示される。
【００５９】
[0069]不揮発性として識別されたが、まだ保護されていないメモリの１つ又は複数のページ７０４の内容は、直接メモリ転送操作７１４によって不揮発性記憶装置上に保護されてよい。例えば、プロセッサ及びメモリコントローラーは、ＤＭＡ操作に、ページの内容を不揮発性記憶装置７０２に転送させてよい。
【００６０】
[0070]不揮発性記憶装置７０２の領域は、予約状態になってよい。これは、予約されたストレージ７１０という名称の要素によって図７に描写される。予約されたストレージ７１０は、不揮発性として識別されたメモリのページ７０４及び７０６の内容を記憶するのに充分なスペースの領域を含んでよい。いくつかの例において、不揮発性として識別されたメモリの量は、不揮発性として識別されたメモリの内容が保護されるのを、利用可能な記憶域スペースの不足が防ぐことがあるので、不揮発性記憶装置７０２上で利用可能な記憶域スペースの量に部分的に基づいてよい。
【００６１】
[0071]メモリ保護フェーズは、揮発性メモリの内容を保護することに適応された低電力状態に入ることによって始まってよい。低電力状態は許容してよい。図８は、不揮発性として識別された揮発性メモリの内容を保護するための例示の処理を描写するフロー図である。ブロックのシーケンスとして描写されるが、描写されたシーケンスを堅持する実施形態に本開示の範囲を限定するように、描写されたシーケンスが解釈されるべきではないということが理解されよう。さらに、本開示のいくつかの実施形態において、描写されたブロックによって示される操作のいくつかは、変えられ、再配列され、並列に実施され、又は省略されてよいことが理解されよう。
【００６２】
[0072]ブロック８００は、休止状態になるための時間帯が求められる間、コンピューティングデバイスが、仮想マシン、又はデータベースなどのその他のアプリケーションを停止することを描写する。例えば、コンピューティングデバイスがメモリ保護フェーズに入ったこと、又は入ろうとしていることを判断すると、仮想マシンなどの様々なアプリケーションは、できるだけ多くのコミットされていないデータをアプリケーションが保存できる制御時間帯を通知され、及び与えられてよい。いくつかの例において、オペレーティングシステム及び／又はファームウェアは、メモリ保護フェーズ中にメモリの内容を保護するので、不揮発性として識別されたメモリに書き込まれたデータは、コミットされた状態にあるかのようにアプリケーションによって扱われてよい。
【００６３】
[0073]ブロック８０２において、コンピューティングデバイスは、メモリ保護フェーズの残りの間に必要とされない一定のデバイスへの電力配給を停止することによって、低電力状態に入り始めてよい。これらのデバイスは、グラフィックカード、ユーザーインターフェイスバス、ネットワークカード、その他を含んでよい。
【００６４】
[0074]ブロック８０４によって描写されるように、コンピューティングデバイスは、プロセッサ割り込みをマスクしてもよい。例えば、すべてのプロセッサ割り込みは、一定のエラーに関連があるもの、及びＤＭＡ操作などのメモリ転送操作を処理するために必要とされるものを除いてマスクされてよい。
【００６５】
[0075]ブロック８０６は、すべての関連付けられたコア、アンコア、及びその他のプロセッサコンポーネントを含む未使用のプロセッサへの電力配給が、停止されてよいことを描写する。このような文脈において、未使用は、メモリ保護を実施するために必要とされないこれらのプロセッサを指してよい。例えば、いくつかの例において、単一のプロセッサ、又は単一のプロセッサの単一のコアが、メモリ保護を完了させるのに充分であることがある。したがって、コンピューティングシステムの残りのプロセッサへの電力配給は、メモリ保護フェーズ中、停止されてよい。いくつかの例において、割り込みが、プロセッサをウェイクさせ、電力配給が再開されるようにしてよいことに留意されたい。ブロック８０４によって描写される割り込みマスキングは、このようなことが発生するのを防ぎ、未使用のプロセッサを低電力状態又は無電力状態に保ってよい。
【００６６】
[0076]ブロック８０８は、コンピューティングデバイスが、不揮発性として識別されたページがない揮発性メモリモジュールへの電力配給を停止してもよいことを描写する。コンピューティングデバイスは、内容が既に保護された任意の揮発性メモリモジュールの電源を停止してもよい。追加として、コンピューティングデバイスは、否定論理積ゲート（「ＮＡＮＤ」）メモリモジュールなどの、本来的に不揮発性である任意のメモリモジュールの電源を停止してもよい。
【００６７】
[0077]様々な例において、コンピューティングデバイスは、最も早く完了され得る、揮発性メモリモジュールを伴うメモリ転送操作を優先させてよい。例えば、第１のメモリモジュールの内容が第２のメモリモジュールの内容より迅速に保護され得る場合、コンピューティングデバイスは、第２のメモリモジュールの内容以上に、第１のメモリモジュールの内容を転送することを優先させてよい。このアプローチは、第２のメモリモジュールへの電力配給より早く、第１のメモリモジュールへの電力配給が停止されることを可能にすることがあり、メモリ保護フェーズで使用されるエネルギーの量の全般的な減少をもたらす。
【００６８】
[0078]ブロック８１０は、プロセッサのアンコアへの電力配給を維持しながら、コンピューティングデバイスがプロセッサのコアへの電力配給を停止してよいことを描写する。マルチコアプロセッサに関して、コアのすべてへの電力配給が停止されてよい。メモリ保護フェーズ中、コアの１つの又は複数への電力配給は、定期的に再開されてよい。復元されると、コアはメモリ転送操作を開始するために使用されてよく、この後、電力配給は再び停止されてよい。これは、ブロック８１２によって描写される。一方で、プロセッサのアンコアへの電力配給は維持される。メモリコントローラーを収めるアンコアは、メモリ転送操作を監視し、転送が完了するときにプロセッサのコアへの電力配給が再開されるようにしてよい。
【００６９】
[0079]ブロック８１４によって描写されるように、不揮発性記憶装置、及び記憶装置に書き込むことを要求される任意のインターフェイス又は通信バスへの電力配給は、メモリ転送操作が完了され得るように、メモリ保護フェーズ中、維持されてよい。
【００７０】
[0080]図９は、メモリ保護中にプロセッサコアへの電力配給を制御する例を描写するフロー図である。ブロックのシーケンスとして描写されるが、描写されたシーケンスを堅持する実施形態に本開示の範囲を限定するように、描写されたシーケンスが解釈されるべきではないということが理解されよう。さらに、本開示のいくつかの実施形態において、描写されたブロックによって示される操作のいくつかは、変えられ、再配列され、並列に実施され、又は省略されてよいことが理解されよう。
【００７１】
[0081]ブロック９００は、揮発性メモリモジュールから不揮発性記憶装置への直接メモリ転送操作を開始する命令をプロセッサのコアが実行してよいことを描写する。直接メモリ転送操作は、不揮発性として識別されていた揮発性メモリモジュールのページを不揮発性記憶装置にコピーしてよい。
【００７２】
[0082]ブロック９０２は、直接メモリ転送操作を開始した後にプロセッサのコアの電源を停止することを描写する。直接メモリ転送操作は、電源が停止されている間、進行していてよい。この間、プロセッサのアンコアへの電力配給は維持されてよい。
【００７３】
[0083]ブロック９０４によって描写されるように、メモリ転送操作が完了状態にあることを示すために、割り込みが生成されてよい。割り込みは、アンコアのメモリコントローラーによって生成されてよい。割り込み信号の処理は、コアへの電力配給を少なくとも再開することによって、コアを再覚醒させることを含んでよい。この操作はブロック９００によって描写される。
【００７４】
[0084]ブロック９０８において、覚醒されたコアは、以前、不揮発性として識別されたすべての揮発性メモリが保護されたかどうかを判断する命令を実行してよい。これは、不揮発性として識別された揮発性メモリページのレコードを、及び対応するページの内容が既に保護されたかどうか、書き込まれたことがないので保護する必要がないかどうか、又はまだ保護される必要があるかどうかを示す情報を調査する命令を実行することを含んでよい。
【００７５】
[0085]不揮発性メモリとして識別されたすべての揮発性メモリが保護された場合、又は保護を要しない場合、ブロック９１０によって描写されるように、システムはシャットダウンしてよい。そうでなければ、処理はブロック９００で再開してよく、ここで、覚醒されたプロセッサは、追加のメモリ転送操作を開始してよい。
【００７６】
[0086]図１０は、不揮発性として識別された揮発性メモリモジュールを有するコンピューティングデバイスを動作させる例を描写するフロー図である。ブロックのシーケンスとして描写されるが、描写されたシーケンスを堅持する実施形態に本開示の範囲を限定するように、描写されたシーケンスが解釈されるべきではないということが理解されよう。さらに、本開示のいくつかの実施形態において、描写されたブロックによって示される操作のいくつかは、変えられ、再配列され、並列に実施され、又は省略されてよいことが理解されよう。
【００７７】
[0087]ブロック１０００は、揮発性メモリのページの内容を不揮発性記憶装置に転送するのに使用されるエネルギーの見積量を示す情報を取得することを描写する。情報は、観察、実験、コンピューティングデバイスの動作中に記録された測定指標、その他から取得されてよい。いくつかのケースにおいて、情報は、構成パラメーターによって供給されてよい。情報は、不揮発性記憶装置へのＤＭＡ転送操作を実施するのに使用されるエネルギーの量を含んでよい。情報は、ＤＭＡ転送を開始するためにプロセッサコアによって使用されるエネルギー、及び不揮発性記憶装置によって消費されるエネルギーの量を含んでもよい。その他の電力消費のファクターが含まれてもよい。
【００７８】
[0088]ブロック１００２は、バッテリー内の利用可能なエネルギーの量を示す情報を取得することを描写する。情報は、例えば、バッテリーからコンピューティングデバイスに送られたメッセージから、又はコンピューティングデバイスによって開始されたポーリング機構から取得されてよい。これらの例は例証的なものであり、限定するように解釈されるべきではない。
【００７９】
[0089]ブロック１００４は、バッテリー内の利用可能なエネルギーの量を使用して、メモリのページの内容が不揮発性記憶装置に転送されてよいことを判断することを描写する。
【００８０】
[0090]判断は、パフォーマンスモード又はデータセーフティモードなどの動作モードに基づいてよい。動作モードは、パラメーター又は構成データによって指定されてよく、例えば、動作モードは、不揮発性として識別するために揮発性メモリのページの最大数を計算するときに許されると考えられるリスクのレベルを示すものであってよい。
【００８１】
[0091]判断は、現在不揮発性として識別されているページの総数、又は不揮発性として識別されていたページの数及び現在保護を要するデータを有するページの数に基づいてよい。オペレーティングシステム又はファームウェアは、ページあたりの利用可能なエネルギーの量を判断し、この値を、メモリのページを保護するのに要求されるエネルギーと比較してよい。この量が充分以上である場合、より多くのページが不揮発性として識別されてよい。この量が不充分である場合、オペレーティングシステム又はファームウェアは、様々なステップを行い、ユーティリティ電源で動作する間、充分な数のページを揮発性として再識別してよい。コンピューティングシステムは、不揮発性として識別されることがある揮発性メモリのページの最大数を同様に判断してよい。最大数は、定期的に再計算されてよい。
【００８２】
[0092]判断は、ユーティリティ電源中断の際に、利用可能なエネルギーの量を使用して、揮発性メモリの一部が不揮発性メモリに転送可能である統計的確率の計算に基づいてよい。
【００８３】
[0093]ブロック１００６は、判断に基づいて、揮発性メモリのページを不揮発性メモリのように扱うように、コンピューティングデバイスのオペレーティングシステムを構成することを描写する。揮発性メモリのページを不揮発性のように扱うことは、コンピューティングデバイス上で実行するアプリケーションに、メモリによってサポートされるコミットモードを識別する情報を提供することを含んでよい。例えば、コミットモードは、メモリに書き込まれたデータがすぐにコミットされる、すなわち（操作すること又はファームウェアが、不揮発性として識別されたメモリの内容を保護する責任を負うので）アプリケーションの関与に関して、すぐに耐久性のあるものにされるということを示してよい。
【００８４】
[0094]オペレーティングシステムを構成することは、ページが揮発性ではなく不揮発性であることを示す情報で構成インターフェイスのデータを更新することを含んでよい。例えば、ファームウェアは、メモリが不揮発性であるとそのユーザーに表示するようにＡＣＰＩのテーブルを更新してよい。
【００８５】
[0095]ブロック１００８は、メモリ保護フェーズに入ることを示す情報を受け取ることを描写する。情報は、ユーティリティ電源が中断されたとき、例えば、バッテリーから送られるか、又はそうでなければ取得されてよい。ユーティリティ電源が中断されるのに応答して、コンピューティングデバイスは、バッテリー電源を使用することにスイッチし、通常の動作を継続してよい。しかし、利用可能なエネルギーの量がさらに減少した場合、現在不揮発性として識別されるすべての揮発性メモリページの内容、及び保護されるべき内容を有するすべての揮発性メモリページの内容を、利用可能なエネルギーの量が保護するのに充分ではないポイントに、バッテリー内の利用可能な電力が時間の経過とともに降下することがある。この時、コンピューティングデバイスは、メモリ保護フェーズに入ってよく、これは、メモリ保護に必要とされない電力消費をシャットダウンすること、及び不揮発性として識別された揮発性メモリの内容を保護するのに要求されるメモリ転送を開始することを伴ってよい。
【００８６】
[0096]バッテリー内の利用可能なエネルギーの量の低下を示す情報を受け取るのに応答して、ページの内容は転送されてよい。例えば、ユーティリティ電源の喪失、バッテリーの正常性の低下、追加のデバイスがバッテリーに接続されること、その他のために、低下は発生することがある。
【００８７】
[0097]メモリ保護フェーズに入るより前に、コンピューティングデバイスのオペレーティングシステム又はファームウェアは、不揮発性として識別されていた揮発性メモリのページを解除し始めてよい。これは、メモリの内容を保護すること、及びページを揮発性として再識別することを伴ってよい。例えば、バッテリー電源で動作しているが普通に動作している間、オペレーティングシステム又はファームウェアは、ユーティリティ電源が中断されてからの時間、又は利用可能なバッテリー電源の量などのファクターをモニターし、メモリ保護フェーズがいよいよ起こりそうになりつつあるが、まだ確かではないという想定の下で、シミュレートされた不揮発性のページを解除し始めてよい。調整パラメーター又はパフォーマンスパラメーターは、これがこれだけ急速に発生するべきかを調節するのに使用されてよい。安全性ではなくパフォーマンスが貴重である場合、できるだけ長い間、システムが揮発性メモリを不揮発性のように扱い続けるべきであることをパラメーターは示してよい。
【００８８】
[0098]ブロック１０１０は、ページの内容を不揮発性記憶装置に転送することによってメモリのページの内容を保護することを描写する。例えば、本明細書に記述されるように、内容はＤＭＡ操作によって転送されてよい。ページの内容が記憶され得る不揮発性記憶装置上の予約されたスペースを、コンピューティングデバイスは維持してよい。
【００８９】
[0099]一実施形態において、コンピューティングデバイスは、
[0100]複数のページに論理的に区分された揮発性メモリと、
[0101]不揮発性記憶装置であって、複数のページのページの内容は、メモリ転送操作によって不揮発性記憶装置に転送可能である、不揮発性記憶装置と、
[0102]コンピューティングデバイスのオペレーティングシステムと、
[0103]少なくとも、
[0104]バッテリー内のエネルギーの量を示す情報を受け取ることであって、エネルギーは、コンピューティングデバイスによる使用に利用可能である、こと、
[0105]メモリ転送操作を実施するのに必要とされるエネルギーの量を判断すること、
[0106]メモリ転送操作を実施するのに必要とされるエネルギーの量に少なくともある程度基づいて、コンピューティングデバイスによる使用に利用可能なエネルギーの量を使用して不揮発性記憶装置に内容を転送することが可能な複数のページのページ数を判断すること、及び
[0107]揮発性メモリの複数のページの１つ又は複数のページを不揮発性メモリのように扱うように、オペレーティングシステムを構成することであって、１つ又は複数のページの数は、判断されたページ数に基づく、こと
をコンピューティングデバイスに行わせる１つ又は複数のプロセッサと
を備えてよい。
【００９０】
[0108]一実施形態において、１つ又は複数のプロセッサは、少なくとも、
[0109]１つ又は複数のページの内容を不揮発性記憶装置の予約された部分に転送すること
をコンピューティングデバイスにさらに行わせる。
【００９１】
[0110]一実施形態において、１つ又は複数のページの内容は、バッテリー内のエネルギーの量の低下を示す情報を受け取るのに応答して転送される。
[0111]一実施形態において、オペレーティングシステムを構成することは、揮発性メモリの１つ又は複数のページに対応する不揮発性メモリの１つ又は複数のページを示す情報で構成インターフェイスのデータを更新することを含む。
【００９２】
[0112]一実施形態において、コンピューティングデバイスのメモリを使用する方法は、
[0113]揮発性メモリのページの内容を不揮発性メモリに転送するのに必要とされるエネルギーの量を示す情報を取得することと、
[0114]揮発性メモリのページの内容を不揮発性メモリに転送するのに利用可能なエネルギーの量を示す情報を受け取ることと、
[0115]必要とされるエネルギーの量に少なくともある程度基づいて、利用可能なエネルギーの量を使用して揮発性メモリのページの内容が不揮発性メモリに転送可能であることを判断することと、
[0116]揮発性メモリのページを不揮発性メモリのページのように扱うように、コンピューティングデバイスのオペレーティングシステムを構成することと
を含む。
【００９３】
[0117]一実施形態において、方法は、
[0118]揮発性メモリのページの内容を不揮発性メモリの予約された部分に転送すること
をさらに含む。
【００９４】
[0119]一実施形態において、方法は、
[0120]揮発性メモリのページの内容を不揮発性メモリに転送するのに利用可能なエネルギーの量の低下を示す情報を受け取るのに応答して、揮発性メモリのページの内容を不揮発性メモリの予約された部分に転送すること
をさらに含む。
【００９５】
[0121]一実施形態において、オペレーティングシステムを構成することは、揮発性メモリの１つ又は複数のページに対応する不揮発性メモリの１つ又は複数のページを示す情報で構成インターフェイスのデータを更新することを含む。
【００９６】
[0122]一実施形態において、方法は、
[0123]コンピューティングデバイスのパフォーマンスモード又は安全性モードの少なくとも１つを示す情報に少なくともある程度基づいて、揮発性メモリのページの内容が不揮発性メモリに転送可能であることを判断すること
をさらに含む。
【００９７】
[0124]実施形態において、方法は、
[0125]コンピューティングデバイスがユーティリティ電源からバッテリー電源にスイッチしたことを示す情報を受け取ることと、
[0126]コンピューティングデバイスがユーティリティ電源からバッテリー電源にスイッチしてからの時間の長さに少なくともある程度基づいて、揮発性メモリのページを揮発性メモリのように扱うように、オペレーティングシステムを構成することと、
[0127]揮発性メモリのページの内容を不揮発性メモリに転送することと
をさらに含む。
【００９８】
[0128]一実施形態において、揮発性メモリのページの内容を不揮発性メモリに転送するのに必要とされるエネルギーの量を示す情報は、揮発性メモリのページから不揮発性メモリに直接メモリアクセス転送を実施することによって消費されるエネルギーに少なくともある程度基づく。
【００９９】
[0129]一実施形態において、揮発性メモリのページの内容を不揮発性メモリに転送するのに必要とされるエネルギーの量を示す情報は、プロセッサがページの内容を転送するための操作を開始することによって消費されるエネルギーに少なくともある程度基づく。
【０１００】
[0130]一実施形態において、方法は、
[0131]オペレーティングシステムによって不揮発性メモリページのように扱われるように構成される揮発性メモリのその他のページの数に少なくともある程度基づいて、揮発性メモリのページの内容が転送可能であることを判断すること
をさらに含む。
【０１０１】
[0132]実施形態において、方法は、
[0133]揮発性メモリのページの内容を不揮発性メモリに転送するのに利用可能なエネルギーを使用して、不揮発性メモリに転送可能な揮発性メモリのページの最大数を判断すること
をさらに含む。
【０１０２】
[0134]一実施形態において、コンピューター読み取り可能記憶媒体は、コンピューターによる実行時に、少なくとも、
[0135]揮発性メモリの内容を不揮発性メモリに転送するのに必要とされるエネルギーの量を示す情報を取得することと、
[0136]揮発性メモリの内容を不揮発性メモリに転送するのに利用可能なエネルギーの量を示す情報を受け取ることと、
[0137]必要とされるエネルギーの量に少なくともある程度基づいて、利用可能なエネルギーの量を使用して不揮発性メモリに転送可能な揮発性メモリの一部を識別することと、
[0138]揮発性メモリの上記一部を不揮発性メモリのように扱うように、コンピューターのオペレーティングシステムを構成することと
をコンピューターに行わせるコンピューター実行可能命令を記憶している。
【０１０３】
[0139]一実施形態において、コンピューター読み取り可能記憶媒体は、コンピューターによる実行時に、少なくとも、
[0140]利用可能なエネルギーの量を使用して不揮発性メモリに転送され得るメモリの量を少なくとも判断することによって、不揮発性メモリに転送可能な揮発性メモリの一部を識別すること
をコンピューターに行わせる命令をさらに含む。
【０１０４】
[0141]一実施形態において、コンピューター読み取り可能記憶媒体は、コンピューターによる実行時に、少なくとも、
[0142]ユーティリティ電源中断の際に、揮発性メモリの上記一部が、利用可能なエネルギーの量を使用して不揮発性メモリに転送可能である統計的確率を計算すること
をコンピューターに行わせる命令をさらに含む。
【０１０５】
[0143]一実施形態において、コンピューター読み取り可能記憶媒体は、コンピューターによる実行時に、少なくとも、
[0144]揮発性メモリの内容を不揮発性メモリに転送するのに利用可能なエネルギーの量の低下を示す情報を受け取るのに応答して、揮発性メモリの上記一部を不揮発性メモリの予約された部分に転送すること
をコンピューターに行わせるさらなる命令をさらに含む。
【０１０６】
[0145]一実施形態において、オペレーティングシステムは、オペレーティングシステムによってアクセスされる設定及びインターフェイスデータを少なくとも更新することによって、揮発性メモリの上記一部を不揮発性メモリのように扱うように構成される。
【０１０７】
[0146]一実施形態において、揮発性メモリの上記一部は、揮発性メモリの当該一部に記憶されたデータと互換性のあるコミットモードを示す情報を、コンピューター上で実行するアプリケーションに少なくとも提供することによって、オペレーティングシステムによって不揮発性メモリのように扱われる。
【０１０８】
[0147]本開示の態様は、１つ又は複数のコンピューティングデバイス又は環境に実装されてよい。図１１は、本明細書に記述される技法のうちのいくつかが具体化され得る例示のコンピューティング環境を描写する。コンピューティングデバイス１１０２は、適切なコンピューティング環境の１つの例にすぎず、本開示の主題の使用又は機能性の範囲について、いかなる限定も示唆することを意図するものではない。コンピューティング環境の描写は、例示のコンピューティングデバイス１１０２において図示されるコンポーネントの任意の１つ又はこれらの組合せに関する、いかなる依存関係又は要件も含意するように解釈されるべきではない。いくつかの実施形態において、様々な描写されたコンピューティング要素は、本開示の具体的な態様を例示するように構成された回路機器を含んでよい。例えば、本開示で使用される用語回路機器は、ファームウェア又はスイッチによって機能を実施するように構成された専用のハードウェアコンポーネントを含んでよい。その他の例示の実施形態において、用語回路機器は、機能を実施するように動作可能なロジックを具体化するソフトウェア命令によって構成された汎用処理ユニット、メモリ、他を含むことができる。回路機器がハードウェアとソフトウェアの組合せを含む例示の実施形態において、実装者は、ロジックを具体化するソースコードを書き込んでよく、ソースコードは、汎用処理ユニットによって処理され得るマシン読み取り可能コードにコンパイルされてよい。ハードウェア、ソフトウェア、又はハードウェア／ソフトウェアの組合せの間にほとんど相違がないポイントに最新技術が進化してきたことを当業者は理解できるので、具体的な機能を遂行するためにソフトウェアに対するハードウェアを選択することは、実装者に残されたデザインの選択肢である。より具体的には、ソフトウェアプロセスは、同等のハードウェア構造に変換されてよく、ハードウェア構造は、同等のソフトウェアプロセスにそれ自体が変換されてよいということを当業者は理解することができる。このように、ソフトウェア実装形態に対するハードウェア実装形態を選択することは、デザインの選択肢のうちの１つであり、実装者に残される。
【０１０９】
[0148]コンピューティングデバイス１１０２は、モバイルデバイス、スマートフォン、タブレットＰＣ、ノートＰＣ、デスクトップコンピューター、他のいずれかを含んでよく、典型的には、様々なコンピューター読み取り可能媒体を含む。コンピューター読み取り可能媒体は、コンピューティングデバイス１１０２によってアクセスされ得る任意の利用可能な媒体であってよく、揮発性媒体及び不揮発性媒体、リムーバブル媒体及び非リムーバブル媒体を含む。本明細書で使用されるように、媒体及びコンピューター読み取り可能媒体は、伝搬する信号又は一時的な信号を当然含まない。
【０１１０】
[0149]システムメモリ１１２２は、リードオンリーメモリ（「ＲＯＭ」：ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）１１２３及びランダムアクセスメモリ（「ＲＡＭ」：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）１１６０などのメモリの形式のコンピューター読み取り可能記憶媒体を含む。ＲＡＭメモリ１１６０は、デュアルインラインメモリモジュール（「ＤＩＭＭ」）などの揮発性メモリモジュールを含んでよい。システムメモリ１１２２のＲＡＭ１１６０の部分は、時として、メインメモリと呼ばれることがある。ＲＡＭ１１６０は、典型的には、すぐにアクセス可能な、及び／又はプロセッサ１１５９によって現在操作されているデータ及び／又はプログラムモジュールを収める。例として、及び限定ではなく、図１１は、オペレーティングシステム１０２５、アプリケーションプログラム１１２６、その他のプログラムモジュール１１２７、及びプログラムデータ１１２８を示す。
【０１１１】
[0150]プロセッサ１１５９は、典型的には、時としてコアと呼ばれる少なくとも１つの１次処理ユニット、及び時としてアンコアと呼ばれる少なくとも１つのシステムエージェントを収める。メモリ転送を監視すること、及びプロセッサのキャッシュを維持することを含み得る関連タスクをアンコアが実施する間、プロセッサ１１５９のコアは、典型的には、コンピューター実行可能命令を実行する。アンコアは、プロセッサ１１５９のコアとシステムメモリ１１２２との間をインターフェイスするためのメモリコントローラーを備えてよい。
【０１１２】
[0151]スタートアップ中などにコンピューティングデバイス１１０２内の要素間で情報を転送するのに役立つ基本的なルーチンを収める基本入出力システム１１２４（「ＢＩＯＳ」）は、典型的には、ＲＯＭ１１２３に記憶される。様々な実施形態において、ＢＩＯＳ１１２４は、その他のファームウェアによって置き替えられてよい。
【０１１３】
[0152]コンピューティングデバイス１１０２は、不揮発性記憶装置を含んでもよい。例としてのみ、図１１は、非リムーバブルで不揮発性の磁気媒体から読み取り又はこれらに書き込むハードディスクドライブ１１３８、及びＣＤＲＯＭ又はその他の光媒体などの、リムーバブルで不揮発性の光ディスク１１５３から読み取り又はこれらに書き込む光ディスクドライブ１１１４を示す。例示のオペレーティング環境において使用されることがあるその他の不揮発性記憶装置は、フラッシュメモリ、デジタル多用途ディスク、ソリッドステートディスクドライブ、などを含むが限定されない。ハードディスクドライブ１１３８は、典型的には、インターフェイス１１３４などの非リムーバブルメモリインターフェイスを通じてシステムバス１１２１に接続され、光ディスクドライブ１１０４は、典型的には、インターフェイス１１３５などのリムーバブルメモリインターフェイスによってシステムバス１１２１に接続される。
【０１１４】
[0153]上記で論じられ、図１１に図示されたドライブ及びこれらに関連付けられたコンピューター記憶媒体は、コンピューター読み取り可能命令、データ構造、プログラムモジュール、及びコンピューティングデバイス１１０２のためのその他のデータのストレージを提供する。例えば、図１において、ハードディスクドライブ１１３８は、オペレーティングシステム１１５８の命令、アプリケーションプログラム１１５７、その他のプログラムモジュール１１５６、及びプログラムデータ１１５５を記憶するように示される。これらのコンポーネントは、オペレーティングシステム１１２５、アプリケーションプログラム１１２６、その他のプログラムモジュール１１２７、及びプログラムデータ１１２８と同じ、又は異なってよいことに留意されたい。オペレーティングシステム１１５８、アプリケーションプログラム１１５７、その他のプログラムモジュール１１５６、及びプログラムデータ１１５５は、最低でも、これらが異なるコピーであることを示すために、ここでは異なる番号を与えられる。ユーザーは、ユーザー入力デバイス１１５２を通じて、コマンド及び情報をコンピューティングデバイス１１０２に入れてよい。ユーザーインターフェイスデバイス１１５２は、キーボード、タッチパッド、コンピューターマウス、トラックボールなどを含んでよいが、これらに限定されない。その他の入力デバイスは、同じく図示していないが、マイク、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナー、又は同様のものを含んでよい。これらの及びその他の入力デバイスは、しばしば、システムバスに連結されるユーザー入力インターフェイス１１３６を通じて処理ユニット１１５９に接続されるが、パラレルポート、ゲームポート、又はユニバーサルシリアルバス（ＵＳＢ）などのその他のインターフェイス及びバス構造に接続されてよい。画面１１４２又はディスプレイデバイスのその他のタイプは、ＧＰＵ１１２９を介して同様に接続されるが、いくつかの例において、画面１１４２はシステムバス１１２１又は別のインターフェイスを通じて駆動されてよい。モニターに加えて、コンピューターは、入出力インターフェイス１１３３を通じて接続されることがあるスピーカー、プリンター、その他などのその他の周辺入出力デバイスを含んでもよい。バッテリー１１８４は、入出力インターフェイス１１３３によってシステムに接続されてもよい。バッテリー１１８４は、入出力インターフェイス１１３３を介して情報を送ること及び受け取ることを行ってよい。情報は、バッテリー１１３４内の利用可能なエネルギーの量、ユーティリティ電源１１８２の状態、バッテリー１１３４の正常性、その他などの状態情報を含んでよい。
【０１１５】
[0154]電源装置１１８０は、コンピューティングデバイス１１０２のコンポーネントへの電力の配給を制御してよい。電力配給は、時々、特定のコンポーネントに対して停止されてよいが、その他のコンポーネントに対しては維持される。電源の一時停止は、有効なコンポーネントへのエネルギーのフローにおける全体的又は部分的な中断を伴ってよく、したがってコンポーネントに低電力状態に入らせることを含んでよい。
【０１１６】
[0155]電源装置１１８０は、ユーティリティ電源１１８２又はバッテリー１１８４から電力を受け取ってよい。ユーティリティ電源１１８２は、コンピューティングデバイス１１０２の動作期間中に、一般に利用可能であるとみなされてよい任意の電力源を指してよい。バッテリー１１８４は、ユーティリティ電源１１８２が中断される際にバックアップ電源を提供することを意図する任意の電力源を含んでよい。
【０１１７】
[0156]コンピューティングデバイス１１０２は、リモートコンピューター１１４６などの１つ又は複数のリモートコンピューターへの論理接続を使用してネットワーク化環境で動作してよい。リモートコンピューター１１４６は、パーソナルコンピューター、サーバー、ルーター、ネットワークＰＣ、ピアデバイス又はその他の計算ノードであってよく、典型的には、コンピューティングデバイス１１０２に関連して上記で記述された要素の多く又はすべてを含む。図１１に描写された接続はネットワーク１１４５を含み、これは、ローカルエリアネットワーク、ワイドエリアネットワーク、携帯ネットワーク、及びメッシュネットワーク、又はネットワークのその他のタイプを含んでよい。
【０１１８】
[0157]様々な項目が、使用されながらメモリ又はストレージに記憶されるように図示されること、並びにメモリ管理及びデータ整合性のために、メモリとその他の記憶装置の間でこれらの項目又はその部分が転送されてよいことも理解されよう。代替として、その他の実施形態において、ソフトウェアモジュール及び／又はシステムのいくつか又はすべては、別のデバイス上のメモリ内で実行し、コンピューター間通信を介して、図示されたコンピューティングシステムと通信してよい。さらに、いくつかの実施形態において、システム及び／又はモジュールのいくつか又はすべては、少なくとも部分的に、ファームウェア及び／又はハードウェア内などの、その他の方式で実装又は提供されてよく、１つ又は複数の特定用途向け集積回路（ＡＳＩＣ）、標準的な集積回路、（例えば、適正な命令を実行すること、並びにマイクロコントローラ及び／又は埋め込みコントローラーを含むことによる）コントローラー、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、複合プログラマブルロジックデバイス（ＣＰＬＤ：ｃｏｍｐｌｅｘ  ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｄｅｖｉｃｅ）、他を含むが限定されない。モジュール、システム、及びデータ構造のいくつか又はすべては、ハードディスク、メモリ、ネットワーク、又はポータブル媒体物品などの、コンピューター読み取り可能媒体に（例えば、ソフトウェア命令又は構造化データとして）記憶され、適正なドライブによって、又は適正な接続を介して読み取られてよい。システム、モジュール、及びデータ構造は、ワイヤレスベース及びワイヤード／ケーブルベースの媒体を含む様々なコンピューター読み取り可能送信媒体上で、生成されたデータ信号として（例えば、搬送波又はその他のアナログ又はデジタル伝搬信号の一部として）送信されてもよく、（例えば、単一のもしくは多重化されたアナログ信号の一部のような、又は複数の分離したデジタルパケットもしくはフレームのような）様々な形式をとってよい。このようなコンピュータープログラム製品は、他の実施形態において、その他の形式をとってもよい。それに応じて、本開示は、その他のコンピューターシステム構成で実践されてよい。
【０１１９】
[0158]本明細書に記述される処理、方法、及びアルゴリズムのそれぞれは、コンピューティングデバイスの１つ又は複数のプロセッサによってメモリにロードされ、実行されるコンピューター実行可能命令を含むモジュール内で具体化されてよく、これらのモジュールによって完全に又は部分的に自動化されてよい。処理及びアルゴリズムは、アプリケーション固有の回路機器に、全面的に又は部分的に実装されてもよい。開示された処理及び処理ステップの結果は、永続的に、又はそうでなければ、例えば、揮発性もしくは不揮発性ストレージなどのコンピューター記憶装置の任意のタイプに、記憶されてよい。本明細書で使用されるように、揮発性及び不揮発性ストレージは、伝搬する信号又は一時的な信号を当然除外する。
【０１２０】
[0159]本明細書に記述される様々な特徴及び処理は、互いに非従属的に使用されてよく、又は様々な方式で結合されてよい。すべての可能な組合せ及び小結合は、本開示の範囲に入ることを意図される。追加として、処理、方法、及びアルゴリズムの一定の要素は、いくつかの実装形態において省略されてよい。本明細書に記述される方法及び処理は、いずれかの特定のシーケンスに限定されるものでもなく、それに関するブロック又は状態を含む描写は、適正なその他のシーケンスで実施されてよい。例えば、記述されるブロックもしくは状態は、具体的に開示された順序以外の順序で実施されてよく、又は複数のブロックもしくは状態は、単一のブロックもしくは状態の中で結合されてよい。例示のブロック又は状態は、連続に、並列に、又はいくつかのその他の手法で実施されてよい。ブロック又は状態は、開示された例示の実施形態に追加されてよく、又は開示された例示の実施形態から削除されてよい。本明細書に記述された例示のシステム及びコンポーネントは、記述されたものとは異なって構成されてもよい。例えば、要素は、開示された例示の実施形態に追加されてよく、開示された例示の実施形態から削除されてよく、又は開示された例示の実施形態と比較して再整理されてよい。
【０１２１】
[0160]とりわけ、「できる（ｃａｎ）」、「できる（ｃｏｕｌｄ）」、「してよい（ｍｉｇｈｔ）」、「してよい（ｍａｙ）」、「例えば」、その他などの本明細書で使用される条件付きの言葉づかいは、別の方法で具体的に述べられない限り、又はそうでなければ、文脈の中で使用されるように理解されない限り、一般に、一定の特徴、要素、及び／又はステップを、一定の実施形態は含むが、その他の実施形態は含まないことを伝えることを意図される。このように、このような条件付きの言葉づかいは、特徴、要素、及び／又はステップが、いずれかの方式で１つ又は複数の実施形態に要求されること、あるいは１つ又は複数の実施形態が、作成者の入力又は催促があってもなくても、これらの特徴、要素及び／もしくはステップが含まれるかどうか、又は任意の特定の実施形態において実施されることになるかどうかを判定するためのロジックを必然的に含むことを含意することを一般に意図されない。用語「備える（ｃｏｍｐｒｉｓｉｎｇ）」、「含む（ｉｎｃｌｕｄｉｎｇ）」、「有する（ｈａｖｉｎｇ）」などは同義であり、自由な様式で包括的に使用され、追加の要素、特徴、作用、操作などを除外しない。また、用語「又は」は、使用されるとき、例えば、要素のリストを接続するために、用語「又は」が、リストの要素の１つ、いくつか、又はすべてを意味するように、その包括的な意味で（かつ、その排他的意味ではなく）使用される。
【０１２２】
[0161]本明細書に提示された実施形態は、例としてそのように提示され、本開示の範囲を限定することを意図されない。このように、前述にあるものは、任意の特定の特徴、特性、ステップ、モジュール又はブロックが要求され、必要であり、又は不可欠であることを含意することを意図されない。本明細書に記述される方法及びシステムは、様々な形式で具体化されてよい。本明細書に記述される方法及びシステムの形式における様々な除外、代用、及び変更は、本明細書で開示されるものの精神から逸脱することなく行われてよい。付随する特許請求の範囲及びこれらの均等物は、本明細書で開示された一定の実施形態の範囲及び精神に入るような形式又は修正をカバーすることを意図される。
【０１２３】
[0162]主題は、構造上の特徴及び／又は作用に固有の言葉づかいで記述されたが、追加された特許請求の範囲で定義された主題は、上述の具体的な特徴又は作用に必ずしも限定されないということを理解されたい。むしろ、上述の具体的な特徴及び作用は、特許請求の範囲を実装する例として開示され、その他の同等の特徴及び作用は、特許請求の範囲の範囲内にあることを意図される。
【図１】
2019510284.tif 000003
【図２】
2019510284.tif 000004
【図３】
2019510284.tif 000005
【図４】
2019510284.tif 000006
【図５】
2019510284.tif 000007
【図６】
2019510284.tif 000008
【図７】
2019510284.tif 000009
【図８】
2019510284.tif 000010
【図９】
2019510284.tif 000011
【図１０】
2019510284.tif 000012
【図１１】
2019510284.tif 000013
【国際調査報告】
2019510284.tif 000014
2019510284.tif 000015