(57)【特許請求の範囲】
【請求項１】
ハイブリッドスリープ電力管理のためのコンピューティングデバイスであって、
（ｉ）前記コンピューティングデバイスのプリブートファームウェア環境中、予約メモリブロックを予約し、（ｉｉ）前記プリブートファームウェア環境中、前記コンピューティングデバイスのオペレーティングシステムがアクセス可能でないセキュアなメモリ位置にウェイクルーチンを格納するセキュリティモジュールと、
（ｉ）第１のプロセッサモードで前記オペレーティングシステムによって生成されたスリープ電力管理モードに入るための要求に応答して、前記ウェイクルーチンを前記セキュアなメモリ位置から前記予約メモリブロックに、前記コンピューティングデバイスのシステム管理割り込みハンドラによってコピーし、（ｉｉ）第２のプロセッサモードで前記コンピューティングデバイスの実行を前記システム管理割り込みハンドラによって再開し、前記予約メモリブロックに格納された前記ウェイクルーチンから開始するシステム管理モジュールと、
前記第２のプロセッサモードでの実行の再開に応答して、前記コンピューティングデバイスの前記ウェイクルーチンによって低電力アイドル状態に入るウェイクコードモジュールとを備えるコンピューティングデバイス。
【請求項２】
前記システム管理モジュールは更に、前記スリープ電力管理モードに入るための前記要求に応答して、システム管理割り込みをトリガし、
前記ウェイクルーチンをコピーすることは、前記システム管理割り込みをトリガしたことに応答して、前記ウェイクルーチンをコピーすることを含む、
請求項１に記載のコンピューティングデバイス。
【請求項３】
前記第１のプロセッサモードは保護モードを含み、前記第２のプロセッサモードはリアルモードを含む、請求項１に記載のコンピューティングデバイス。
【請求項４】
前記セキュリティモジュールは更に、前記プリブートファームウェア環境中、前記予約メモリブロックのアドレスを前記セキュアなメモリ位置に格納し、
前記ウェイクルーチンを前記セキュアなメモリ位置から前記予約メモリブロックにコピーすることは、前記セキュアなメモリ位置に格納された前記予約メモリブロックの前記アドレスを使用して、前記ウェイクルーチンをコピーすることを含む、
請求項１に記載のコンピューティングデバイス。
【請求項５】
前記セキュリティモジュールは更に、前記プリブートファームウェア環境を認証し、
前記予約メモリブロックを予約することは、前記プリブートファームウェア環境の認証に応答して、前記予約メモリブロックを予約することを含み、
前記セキュアなメモリ位置に前記ウェイクルーチンを格納することは、前記プリブートファームウェア環境の認証に応答して、前記セキュアなメモリ位置に前記ウェイクルーチンを格納することを含む、
請求項１に記載のコンピューティングデバイス。
【請求項６】
前記セキュアなメモリ位置は、前記コンピューティングデバイスのシステム管理モードメモリ領域を含む、請求項１に記載のコンピューティングデバイス。
【請求項７】
前記スリープ電力管理モードに入るための前記要求を前記オペレーティングシステムによって生成する
スリープモジュールを更に備える、請求項１に記載のコンピューティングデバイス。
【請求項８】
前記スリープ電力管理モードに入るための前記要求を生成することは、アドバンスド・コンフィグレーション・アンド・パワー・インタフェース（ＡＣＰＩ）Ｓ３状態に入るための要求を生成することを含む、請求項７に記載のコンピューティングデバイス。
【請求項９】
前記スリープ電力管理モードに入るための前記要求を生成することは、予め定められた値を電力管理制御レジスタに書き込むことを含む、請求項７に記載のコンピューティングデバイス。
【請求項１０】
前記システム管理モジュールは更に、
前記システム管理割り込みをトリガしたことに応答して、保存されたプロセッサ状態を生成すべく、前記コンピューティングデバイスのプロセッサのプロセッサ状態を前記セキュアなメモリ位置に保存し、
前記第２のプロセッサモードで実行すべく、前記保存されたプロセッサ状態を前記システム管理割り込みハンドラによって変更し、
前記コンピューティングデバイスの実行を再開することは、前記保存されたプロセッサ状態の変更に応答して前記コンピューティングデバイスの実行を再開することを含む、請求項１から９の何れか一項に記載のコンピューティングデバイス。
【請求項１１】
前記システム管理モジュールは更に、
前記予約メモリブロックに格納された前記ウェイクルーチンを指し示すよう、前記保存されたプロセッサ状態の保存された命令ポインタレジスタ値を前記システム管理割り込みハンドラによって変更し、
前記コンピューティングデバイスの実行を再開することは更に、前記保存された命令ポインタレジスタ値の変更に応答して、前記コンピューティングデバイスの実行を再開することを含む、請求項１０に記載のコンピューティングデバイス。
【請求項１２】
前記低電力アイドル状態は、Ｓ０ｉｘプロセッサ状態を含む、請求項１から９の何れか一項に記載のコンピューティングデバイス。
【請求項１３】
前記ウェイクコードモジュールは更に、前記低電力アイドル状態に入ったことに応答して、前記オペレーティングシステムのウェイクベクトルに前記ウェイクルーチンによってジャンプする、
請求項１から９の何れか一項に記載のコンピューティングデバイス。
【請求項１４】
前記ウェイクコードモジュールは更に、
前記低電力アイドル状態に入ったことに応答して、ウェイクイベントが発生したかどうかを判断し、
前記ウェイクイベントが発生したとの判断に応答して、前記ウェイクイベントに基づいて電力管理ステータスレジスタを前記ウェイクルーチンによって更新し、
前記ウェイクベクトルにジャンプすることは、前記電力管理ステータスレジスタの更新に応答して、前記ウェイクベクトルにジャンプすることを含む、請求項１３に記載のコンピューティングデバイス。
【請求項１５】
ハイブリッドシステムスリープのための方法であって、
コンピューティングデバイスのプリブートファームウェア環境中、予約メモリブロックを予約する段階と、
前記コンピューティングデバイスの前記プリブートファームウェア環境中、前記コンピューティングデバイスのオペレーティングシステムがアクセス可能でないセキュアなメモリ位置にウェイクルーチンを格納する段階と、
第１のプロセッサモードで前記オペレーティングシステムによって生成されたスリープ電力管理モードに入るための要求に応答して、前記ウェイクルーチンを前記セキュアなメモリ位置から前記予約メモリブロックに前記コンピューティングデバイスのシステム管理割り込みハンドラによってコピーする段階と、
第２のプロセッサモードでの前記コンピューティングデバイスの実行を前記システム管理割り込みハンドラによって再開し、前記予約メモリブロックに格納された前記ウェイクルーチンから開始する段階と、
前記第２のプロセッサモードでの実行を再開したことに応答して、前記コンピューティングデバイスの前記ウェイクルーチンによって低電力アイドル状態に入る段階とを備える方法。
【請求項１６】
前記スリープ電力管理モードに入るための前記要求に応答して、システム管理割り込みを前記コンピューティングデバイスによってトリガする段階を更に備え、
前記ウェイクルーチンをコピーする段階は、前記システム管理割り込みをトリガしたことに応答して、前記ウェイクルーチンをコピーする段階を含む、
請求項１５に記載の方法。
【請求項１７】
前記セキュアなメモリ位置は、前記コンピューティングデバイスのシステム管理モードメモリ領域を含む、請求項１５に記載の方法。
【請求項１８】
前記スリープ電力管理モードに入るための前記要求を前記オペレーティングシステムによって生成する段階
を更に備える請求項１５に記載の方法。
【請求項１９】
前記スリープ電力管理モードに入るための前記要求を生成する段階は、アドバンスド・コンフィグレーション・アンド・パワー・インタフェース（ＡＣＰＩ）Ｓ３状態に入るための要求を生成する段階を含む、請求項１８に記載の方法。
【請求項２０】
前記システム管理割り込みをトリガしたことに応答して、保存されたプロセッサ状態を生成すべく、前記コンピューティングデバイスのプロセッサのプロセッサ状態を前記セキュアなメモリ位置に前記コンピューティングデバイスによって保存する段階と、
前記第２のプロセッサモードで実行すべく、前記保存されたプロセッサ状態を前記システム管理割り込みハンドラによって変更する段階とを更に備え、
前記コンピューティングデバイスの実行を再開する段階は、前記保存されたプロセッサ状態を変更したことに応答して、前記コンピューティングデバイスの実行を再開する段階を含む、
請求項１５に記載の方法。
【請求項２１】
前記予約メモリブロックに格納された前記ウェイクルーチンを指し示すよう、前記保存されたプロセッサ状態の保存された命令ポインタレジスタ値を前記システム管理割り込みハンドラによって変更する段階を更に備え、
前記コンピューティングデバイスの実行を再開する段階は更に、前記保存された命令ポインタレジスタ値を変更したことに応答して、前記コンピューティングデバイスの実行を再開する段階を含む、
請求項２０に記載の方法。
【請求項２２】
前記低電力アイドル状態に入ったことに応答して、前記オペレーティングシステムのウェイクベクトルに前記ウェイクルーチンによってジャンプする段階
を更に備える請求項１５に記載の方法。
【請求項２３】
コンピューティングデバイスであって、
プロセッサと、
前記プロセッサによって実行された場合、前記コンピューティングデバイスに請求項１５から２２の何れか一項に記載の方法を実行させる複数の命令を格納したメモリとを備えるコンピューティングデバイス。
【請求項２４】
コンピューティングデバイスに請求項１５から２２の何れか一項に記載の方法を実行させるためのプログラム。
【請求項２５】
請求項１５から２２の何れか一項に記載の方法を実行するための手段を備えるコンピューティングデバイス。
【請求項２６】
請求項２４に記載のプログラムを格納する機械可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願の相互参照］
本願は、２０１５年３月２７日出願の、"ＴＥＣＨＮＯＬＯＧＩＥＳ  ＦＯＲ  ＩＭＰＲＯＶＥＤ  ＨＹＢＲＩＤ  ＳＬＥＥＰ  ＰＯＷＥＲ  ＭＡＮＡＧＥＭＥＮＴ"と題する米国特許出願第１４／６７０，９３９号に基づく優先権を主張する。
［背景技術］
現在のコンピューティングデバイスにとって、エネルギー効率はますます重要な検討事項である。ラップトップ、タブレット、及びスマートフォンなどの携帯機器においては、エネルギー効率は電池寿命に直接影響を与え、このことはユーザ体験の重要な部分である。サーバデバイスでは、エネルギー効率は、コスト、計算密度、及び熱管理に直接影響を与える。多くのコンピューティングデバイス及びプロセッサが、アドバンスド・コンフィグレーション・アンド・パワー・インタフェース（ＡＣＰＩ）仕様によって定義される、"Ｓ３"状態としても知られる低減された電力スリープ状態をサポートしている。ＡＣＰＩ  Ｓ３スリープ状態では、揮発性メモリはその内容を維持すべく電源が投入されたままであってよく、一方で、コンピューティングデバイスのプロセッサなどの他のコンポーネントは電源が切られる。 
【０００２】
現在のプロセッサはまた、種々の性能レベルと消費電力レベルとのバランスをサポートしてよい。例えば、プロセッサは、負荷がかかったときに性能を改善し、アイドルのとき又は僅かに負荷がかかったときに消費電力を低減すべく、性能及び消費電力をスケーリングしてよい。現在のプロセッサ及びデバイスはまた、ある特定の使用モデルの場合に極めて低い消費電力をデバイスが達成することを可能にする、低電力使用モデルをサポートしてよい。例えば、現在のコンピューティングデバイス及び／又はプロセッサは、Ｓ０ｉｘ低電力アイドル状態、低電力オーディオ再生、又は他の低電力状態をサポートしてよい。Ｓ０ｉｘ及び他の最新の低電力使用状態を使用すると、オペレーティングシステム又は他のソフトウェアのサポートが必要になるだろう。加えて、現在の多くのプロセッサは、もはやＡＣＰＩ  Ｓ３スリープ状態をサポートしていない。
【０００３】
コンピューティングデバイスは通常、ハードウェアの初期化、低レベルハードウェア管理、及びブートプロセスの管理を担うファームウェアを含む。コンピューティングデバイスのブートを担う主プラットフォームファームウェアは、統一拡張可能ファームウェアインタフェース（"ＵＥＦＩ"）仕様に従って実装されてよい。当該ＵＥＦＩ仕様は、統一ＥＦＩフォーラムによって公開されたいくつかのバージョンを有する。ＵＥＦＩ仕様は、コンピューティングデバイスのファームウェアとコンピューティングデバイスのオペレーティングシステムとの間のインタフェースを指定する。 
【図面の簡単な説明】
【０００４】
本明細書において説明される概念は、添付図面において、例として示されるのであって、限定として示されるのではない。説明を簡潔かつ明確にするために、図に示される要素は必ずしも縮尺通りに描かれてはいない。適切であると見なされる箇所では、対応する又は類似の要素を示すべく、参照符号が複数の図の間で繰り返されている。
【０００５】
【図１】ハイブリッドスリープ電力管理のためのコンピューティングデバイスの少なくとも１つの実施形態の簡略化されたブロック図である。
【０００６】
【図２】図１のコンピューティングデバイスの環境の少なくとも１つの実施形態の簡略化されたブロック図である。
【０００７】
【図３】図１及び図２のコンピューティングデバイスによって実行され得るプラットフォームのブートのための方法の少なくとも１つの実施形態の簡略化されたフローチャートである。
【０００８】
【図４】図１及び図２のコンピューティングデバイスによって実行され得る電力管理スリープ呼び出しのための方法の少なくとも１つの実施形態の簡略化されたフローチャートである。
【０００９】
【図５】図１及び図２のコンピューティングデバイスによって実行され得るシステム管理割り込み処理のための方法の少なくとも１つの実施形態の簡略化されたフローチャートである。
【００１０】
【図６】図１及び図２のコンピューティングデバイスによって実行され得る低電力アイドル及びウェイクのための方法の少なくとも１つの実施形態の簡略化されたフローチャートである。
【発明を実施するための形態】
【００１１】
本開示の概念は、様々な変更形態及び代替形態が可能であるが、それらの特定の実施形態が図面において例として示されており、本明細書において詳細に説明される。しかしながら、開示された特定の形態に本開示の概念を限定する意図はなく、逆に、本開示及び添付の特許請求の範囲と合致する全ての変更形態、均等物、及び代替形態を網羅することが意図されていることが理解されるべきである。
【００１２】
本明細書における"一実施形態"、"ある実施形態"、"例示的な実施形態"等への言及は、説明された実施形態が、特定の特徴、構造、又は特性を含んでよいが、全ての実施形態がその特定の特徴、構造、又は特性を含んでもよいし、必ずしも含まなくてもよいことを示す。その上、このような表現は必ずしも同一の実施形態を指すものではない。更に、特定の特徴、構造、又は特性がある実施形態に関連して説明される場合、明示的に説明されているかどうかに関わらず、他の実施形態に関連してこのような特徴、構造、又は特性を達成することは、当業者の知識の範疇であると考えられる。加えて、"少なくとも１つのＡ、Ｂ、及びＣ"の形の列挙に含まれる項目は、（Ａ）；（Ｂ）；（Ｃ）；（Ａ及びＢ）；（Ａ及びＣ）；（Ｂ及びＣ）；又は（Ａ、Ｂ、及びＣ）を意味し得ることが理解されるべきである。同様に、"Ａ、Ｂ、又はＣのうちの少なくとも１つ"の形で列挙される項目は、（Ａ）；（Ｂ）；（Ｃ）；（Ａ及びＢ）；（Ａ及びＣ）；（Ｂ及びＣ）；又は（Ａ、Ｂ、及びＣ）を意味し得る。
【００１３】
開示された実施形態は、場合によっては、ハードウェア、ファームウェア、ソフトウェア、又はこれらの任意の組み合わせで実装されてよい。開示された実施形態はまた、１又は複数のプロセッサによって読み取られ、実行されてよい、一時的又は非一時的機械可読（例えば、コンピュータ可読）記憶媒体によって保持された、又は当該媒体に格納された命令として実装されてよい。機械可読記憶媒体は、機械が読み取り可能な形態の情報を格納又は送信するための、任意の記憶デバイス、メカニズム、又は、他の物理的構造（例えば、揮発性若しくは不揮発性のメモリ、メディアディスク、又は他のメディアデバイス）として具現化されてよい。
【００１４】
図面では、いくつかの構造上又は方法上の特徴が特定の構成及び／又は順序で示されてよい。しかしながら、このような特定の構成及び／又は順序は必要とされなくてもよいことが理解されるべきである。むしろ、いくつかの実施形態において、このような特徴は、例示の図に示されたものとは異なる態様及び／又は順序で構成されてよい。加えて、特定の図において構造上又は方法上の特徴を含むことによって、このような特徴が全ての実施形態において必要とされることを示唆するようには意図されておらず、いくつかの実施形態においては含まれなくてよいか、又は、他の特徴と組み合わせられてよい。
【００１５】
ここで図１を参照すると、ハイブリッドスリープ電力管理のための例示的なコンピューティングデバイス１００は、プロセッサ１２０、Ｉ／Ｏサブシステム１２２、メモリ１２４、データ記憶デバイス１２８、及び通信回路１３０を含む。使用中、以下に説明されるように、コンピューティングデバイス１００はプリブートファームウェア環境を実行する。プリブートファームウェア環境では、メモリのブロックが予約され、プラットフォームウェイクコードがシステム管理ＲＡＭ（ＳＭＲＡＭ）にコピーされる。予約メモリブロック及びＳＭＲＡＭは、コンピューティングデバイス１００のオペレーティングシステム又はランタイムアプリケーションによってアクセス可能ではない。ランタイムにおいて、コンピューティングデバイス１００は、ＡＣＰＩ  Ｓ３スリープ状態などの電力管理スリープ状態に入るための要求を生成する。コンピューティングデバイス１００は、スリープ状態に入るための要求をトラップし、システム管理割り込み（ＳＭＩ）を生成する。ＳＭＩに応答して、プロセッサ１２０は、現在のプロセッサ状態のコピーを保存し、次にＳＭＩハンドラを呼び出す。ＳＭＩハンドラは、ＳＭＲＡＭからファームウェアの予約メモリブロックにウェイクコードをコピーする。ＳＭＩハンドラは、保存されたプロセッサ状態を変更してリアルモードで実行を再開し、予約メモリブロックに格納されたウェイクコードから開始する。ウェイクコードは、コンピューティングデバイス１００に、Ｓ０ｉｘなどの低電力アイドル状態に入らせる。低電力アイドル状態終了後、ウェイクコードはオペレーティングシステムのウェイクベクトルにジャンプする。故に、コンピューティングデバイス１００は、ＡＣＰＩ  Ｓ３を使用するよう設計されたオペレーティングシステムが、低電力アイドル状態を使用し、関連付けられた効率改善を得ることを可能にしてよい。加えて、コンピューティングデバイス１００は、各スリープ要求に応答して不揮発性ストレージからブートファームウェアをリロード及び再認証する必要性を回避することによって、セキュリティを維持しつつ、スリープ性能を改善してよい。更に、コンピューティングデバイス１００は、プロセッサ１２０をリセットする必要性を回避し、プロセッサ１２０のコンテキストをそのままにしておくことによって、再開のために必要なメモリの量を低減してよい。
【００１６】
コンピューティングデバイス１００は、ハイブリッドスリープ電力管理、及び本明細書において説明される機能を実行するその他のことが可能な任意のタイプのデバイスとして具現化されてよい。例えば、コンピューティングデバイス１００は、限定はされないが、ラップトップコンピュータ、ノートブックコンピュータ、タブレットコンピュータ、スマートフォン、ウェアラブルコンピューティングデバイス、コンピュータ、ワークステーション、サーバ、マルチプロセッサシステム、消費者向け電子機器、スマート機器、及び／又は、ハイブリッドスリープ電力管理が可能な任意の他のコンピューティングデバイスとして具現化されてよい。図１に示されるように、例示的なコンピューティングデバイス１００は、プロセッサ１２０、Ｉ／Ｏサブシステム１２２、メモリ１２４、及びデータ記憶デバイス１２８を含む。言うまでもなく、他の実施形態では、コンピューティングデバイス１００は、コンピュータにおいて一般に見られる他の又は更なるコンポーネント（例えば、様々な入出力デバイス）を含んでよい。加えて、いくつかの実施形態において、例示のコンポーネントの１又は複数が、別のコンポーネントに組み込まれてよい、又はそうでなければ別のコンポーネントの一部を形成してよい。例えば、いくつかの実施形態において、メモリ１２４又はその一部は、プロセッサ１２０に組み込まれてよい。
【００１７】
プロセッサ１２０は、本明細書において説明される機能を実行可能な任意のタイプのプロセッサとして具現化されてよい。例えば、プロセッサ１２０は、（複数の）シングルコア若しくはマルチコアプロセッサ、デジタル信号プロセッサ、マイクロコントローラ、又は、他のプロセッサ若しくは処理／制御回路として具現化されてよい。同様に、メモリ１２４は、本明細書に説明される機能を実行可能な任意のタイプの揮発性若しくは不揮発性のメモリ、又はデータストレージとして具現化されてよい。オペレーション中、メモリ１２４は、コンピューティングデバイス１００のオペレーション中に使用されるオペレーティングシステム、アプリケーション、プログラム、ライブラリ、及びドライバなどの様々なデータ及びソフトウェアを格納してよい。メモリ１２４は、システム管理ランダムアクセスメモリ（ＳＭＲＡＭ）１２６を含む。当該メモリは、システム管理割り込み（ＳＭＩ）に応答してプロセッサ１２０が入るシステム管理モード（ＳＭＭ）でのみプロセッサ１２０がアクセス可能なメモリ１２４の領域として具現化されてよい。ＳＭＲＡＭ１２６は、ＳＭＩ処理のための実行可能コード及びデータを含んでよい。Ｉ／Ｏサブシステム１２２は、ＳＭＲＡＭ１２６へのアクセスを制御し、ＳＭＭで実行されないときに、コードがＳＭＲＡＭ１２６にアクセスすること又はＳＭＲＡＭ１２６を変更することを防いでよい。故に、ＳＭＲＡＭ１２６の内容は、オペレーティングシステム、アプリケーション、及びコンピューティングデバイス１００によって実行される他のランタイムコードにとってはアクセス不可能であってよい。
【００１８】
メモリ１２４は、Ｉ／Ｏサブシステム１２２を介してプロセッサ１２０に通信可能に結合される。当該Ｉ／Ｏサブシステムは、コンピューティングデバイス１００のプロセッサ１２０、メモリ１２４、及び他のコンポーネントとの入出力オペレーションを容易にするための回路及び／又はコンポーネントとして具現化されてよい。例えば、Ｉ／Ｏサブシステム１２２は、メモリコントローラハブ、入出力制御ハブ、センサハブ、ファームウェアデバイス、通信リンク（すなわち、ポイントツーポイントリンク、バスリンク、ワイヤ、ケーブル、ライトガイド、プリント回路基板トレース等）、及び／又は入出力オペレーションを容易にするための他のコンポーネント及びサブシステムとして具現化されてよい、又はそうでなければそれらを含んでよい。いくつかの実施形態において、Ｉ／Ｏサブシステム１２２は、システムオンチップ（ＳｏＣ）の一部を形成し、コンピューティングデバイス１００のプロセッサ１２０、メモリ１２４、及び他のコンポーネントと共に、単一の集積回路チップ上に組み込まれてよい。 
【００１９】
データ記憶デバイス１２８は、例えば、メモリデバイス及びメモリ回路、メモリカード、ハードディスクドライブ、ソリッドステートドライブ、又は他のデータ記憶デバイスなどの短期又は長期のデータ記憶のために構成された任意のタイプの１又は複数のデバイスとして具現化されてよい。データ記憶デバイス１２８は、コンピューティングデバイス１００によって実行されてよい、１又は複数のオペレーティングシステム及び／又はファームウェア環境を格納してよい。例えば、データ記憶デバイス１２８は、ＵＥＦＩ仕様によって規定されるファームウェアボリュームを格納してよい。
【００２０】
コンピューティングデバイス１００はまた、通信回路１３０を含んでよい。当該通信回路は、コンピュータネットワーク（図示せず）を通じたコンピューティングデバイス１００と他のリモートデバイスとの間での通信を可能にできる任意の通信回路、デバイス、又はそれらの集合として具現化されてよい。通信回路１３０は、任意の１又は複数の通信技術（例えば、有線通信又は無線通信）と、関連付けられるプロトコル（例えば、イーサネット（登録商標）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、Ｗｉ−Ｆｉ（登録商標）、ＷｉＭＡＸ（登録商標）、３Ｇ、４Ｇ  ＬＴＥ等）とを使用してこのような通信を達成するよう構成されてよい。 
【００２１】
コンピューティングデバイス１００は更に、１又は複数の周辺機器１３２を含んでよい。周辺機器１３２は、任意の数の更なる入出力デバイス、インタフェースデバイス、及び／又は他の周辺機器を含んでよい。例えば、いくつかの実施形態において、周辺機器１３２は、タッチスクリーン、グラフィクス回路、オーディオデバイス、マイク、カメラ、環境センサ、キーボード、マウス、及び／又は他の入出力デバイス、インタフェースデバイス、及び／又は周辺機器を含んでよい。 
【００２２】
ここで図２を参照すると、例示的な実施形態において、コンピューティングデバイス１００はオペレーション中に環境２００を確立する。例示的な実施形態２００は、オペレーティングシステム２０２、ファームウェア環境２０８、システム管理モジュール２１４、及びウェイクコードモジュール２１８を含む。オペレーティングシステム２０２は更に、スリープモジュール２０４を含み、ファームウェア環境２０８は更に、セキュリティモジュール２１０を含む。環境２００の様々なモジュールは、ハードウェア、ファームウェア、ソフトウェア、又はそれらの組み合わせとして具現化されてよい。例えば、環境２００の様々なモジュール、ロジック、及び他のコンポーネントは、コンピューティングデバイス１００のプロセッサ１２０又は他のハードウェアコンポーネントの一部を形成してよい、又はそうでなければコンピューティングデバイス１００のプロセッサ１２０又は他のハードウェアコンポーネントによって確立されてよい。故に、いくつかの実施形態において、環境２００のモジュールの任意の１又は複数は、回路、又は電気デバイスの集合（例えば、スリープ回路、セキュリティ回路、システム管理回路等）として具現化されてよい。
【００２３】
オペレーティングシステム２０２は、コンピューティングデバイス１００の任意のオペレーティングシステム、ゲストオペレーティングシステム、ハイパーバイザ、仮想マシンモニタ、又は他の制御構造として具現化されてよい。以下で更に説明されるように、ファームウェア環境２０８がブートサービスを終了した後、オペレーティングシステム２０２は、コンピューティングデバイス１００の制御を受け持つ。オペレーティングシステム２０２は、ＡＣＰＩ仕様によって説明されるシステム状態の管理を含む電力管理機能を実行する。オペレーティングシステム２０２によって確立されるスリープモジュール２０４は、例えば、予め定められた値を電力管理制御レジスタに書き込むことによって、ＡＣＰＩ  Ｓ３スリープモードなどのスリープ電力管理モードに入るための要求を生成するよう構成される。スリープモジュール２０４は、プロセッサ１２０が保護モードで、ＡＣＰＩ  Ｓ３スリープ状態に入るための要求を生成するよう構成される。オペレーティングシステム２０２は更に、ウェイクベクトル２０６を含む。ウェイクベクトル２０６は、コンピューティングデバイス１００がＡＣＰＩ  Ｓ３スリープ状態を終了するとき実行されてよいメモリアドレス、関数、サブルーチン、又は他のエントリポイントとして具現化されてよい。ウェイクベクトル２０６は、プロセッサ１２０がリアルモードで、実行されてよい。
【００２４】
ファームウェア環境２０８は、コンピューティングデバイス１００の制御をオペレーティングシステム２０２に渡す前にコンピューティングデバイス１００のコンポーネントを初期化及び設定する任意のプリブートファームウェア環境として具現化されてよい。例えば、ファームウェア環境２０８は、ＵＥＦＩ準拠ファームウェア環境として具現化されてよい。上述されたように、ファームウェア環境２０８はセキュリティモジュール２１０を確立する。
【００２５】
セキュリティモジュール２１０は、ファームウェア環境２０８が使用するための予約メモリブロック２１２を予約するよう構成される。予約された後、オペレーティングシステム２０２は、ドライバ及び／又はアプリケーションが予約メモリブロック２１２にアクセスすることを許可しない。予約メモリブロック２１２は、ハードウェア抽象化レイヤなどのオペレーティングシステム２０２の低レベルコンポーネントによってアクセスされてよい。しかしながら、オペレーティングシステム２０２は、スリープ状態遷移中に上書きされ得ない予約メモリブロック２１２に何の情報も格納しない。セキュリティモジュール２１０は更に、ＳＭＲＡＭ１２６などのセキュアなメモリ位置に、予約メモリブロック２１２のメモリアドレスを格納するよう構成される。セキュリティモジュール２１０はまた、以下で更に説明されるプラットフォームウェイクコード２２０をセキュアなメモリ位置にコピーするよう構成される。いくつかの実施形態において、セキュリティモジュール２１０は、ファームウェア環境２０８又は他のブートコードを認証し、ウェイクコード２２０をセキュアなメモリ位置に格納した後、オペレーティングシステム２０２をブートするよう構成される。
【００２６】
システム管理モジュール２１４は、オペレーティングシステム２０２によって生成されるスリープ電力管理モードに入るための要求に応答して、システム管理割り込み（ＳＭＩ）をトリガするよう構成される。コンピューティングデバイス１００は、ＳＭＩをトリガしたことに応答して、ＳＭＩハンドラ２１６を実行してよい。ＳＭＩハンドラ２１６は、ＳＭＩを処理すべくプロセッサ１２０によって実行されてよい任意の関数、サブルーチン、割り込みサービスルーチン、又は他のコードとして具現化されてよい。ＳＭＩハンドラ２１６は、オペレーティングシステム２０２がアクセス可能でないＳＭＲＡＭ１２６、又は他のセキュアなメモリ位置に格納されてよい。システム管理モジュール２１４は更に、ＳＭＩをトリガしたことに応答して、セキュアなメモリ位置（例えば、ＳＭＲＡＭ１２６）から予約メモリブロック２１２にウェイクコード２２０をコピーするよう構成される。システム管理モジュール２１４は、プロセッサ１２０がリアルモードで、ＳＭＩハンドラ２１６を完了した後、コンピューティングデバイス１００の実行を再開するよう構成され、予約メモリブロック２１２に格納されたウェイクコード２２０から開始する。システム管理モジュール２１４は、プロセッサ１２０のプロセッサ状態をセキュアなメモリ位置（例えば、ＳＭＲＡＭ１２６）に保存してよく、リアルモードで実行すべく、保存されたプロセッサ状態を変更してよく、保存された命令ポインタレジスタ値及び／又は保存されたセグメントレジスタ値を変更して、予約メモリブロック２１２のウェイクコード２２０から実行を再開させてよい。
【００２７】
ウェイクコードモジュール２１８は、Ｓ０ｉｘなどの低電力アイドル状態に入り、次に、ウェイクイベントに応答してコンピューティングデバイス１００が低電力アイドル状態を離れるとき、オペレーティングシステム２０２のウェイクベクトル２０６にジャンプするよう構成される。ウェイクコードモジュール２１８はまた、電力管理スリープ状態に入る、又は電力管理スリープ状態を離れるとき通常実行される、１又は複数の周辺機器１３２のためのデバイス状態情報の格納、及び／又は、ウェイクイベントに基づいた１又は複数の電力管理ステータスレジスタの更新などの他のオペレーションを実行するよう構成されてよい。ウェイクコードモジュール２１８の関数は、プラットフォームウェイクコード２２０によって実行されてよい。プラットフォームウェイクコード２２０は、リアルモードでプロセッサ１２０によって実行されてよい任意の関数、サブルーチン、又は他の実行可能コードとして具現化されてよい。ウェイクコード２２０は、データ記憶デバイス１２８又はプラットフォームフラッシュのファームウェアボリュームなど、ファームウェア環境２０８にとってアクセス可能な不揮発性ストレージに格納されてよい。上述されたように、ウェイクコード２２０はファームウェア環境２０８によってセキュアなメモリ位置（例えば、ＳＭＲＡＭ１２６）にコピーされ、次に、ＳＭＩに応答して、ＳＭＩハンドラ２１６によって予約メモリブロック２１２にコピーされる。従って、ウェイクコード２２０は、不揮発性ストレージからのロード後、オペレーティングシステム２０２によって変更されなくてよく、故に、電力管理スリープ状態に入るための要求に応答して認証される必要はなくてよい。
【００２８】
ここで図３を参照すると、使用中、コンピューティングデバイス１００は、プラットフォームのブートのための方法３００を実行してよい。方法３００はブロック３０２から開始する。ブロック３０２において、コンピューティングデバイス１００は電源がオンになる。コンピューティングデバイス１００は、例えば、ボタンの押下などのユーザコマンドに応答して、外部電源に接続されたことに応答して、又は、任意の他の適切なイベントに応答して電源がオンになってよい。コンピューティングデバイス１００はまた、ソフト的若しくはハード的なリセット、又は他の再起動イベントに応答して電源がオンになってよい。方法３００の後続のプロセスは、オペレーティングシステム２０２の実行前にファームウェア環境２０８によって実行されてよい。故に、ファームウェア環境２０８は、方法３００の実行中、コンピューティングデバイス１００の完全制御を行なってよい。 
【００２９】
ブロック３０４において、コンピューティングデバイス１００はブートファームウェアを認証する。コンピューティングデバイス１００は、例えば、プラットフォームフラッシュメモリチップ、データ記憶デバイス１２８のファームウェアボリューム、又は他のストレージなどの不揮発性メモリに格納されたブートファームウェアの１又は複数のファームウェアイメージを認証してよい。コンピューティングデバイス１００は、例えば、信頼済みの証明書のセットに対して、各特定のファームウェアイメージに関連付けられたデジタルシグネチャが正当なものであると確認することによって、ファームウェアイメージを認証してよい。コンピューティングデバイス１００は、例えば、ＵＥＦＩ仕様において説明されているセキュアなブートプロセスを実行してよい。ブートファームウェアを認証することにより、ファームウェア環境２０８のコンポーネント、オペレーティングシステム２０２、ＳＭＩハンドラ２１６、及び／又はウェイクコード２２０などのコンピューティングデバイス１００の他のコンポーネントをロード又は実行する前に信頼のルート（ｒｏｏｔ  ｏｆ  ｔｒｕｓｔ）が提供されてよい。
【００３０】
ブロック３０６において、コンピューティングデバイス１００は、ファームウェア環境２０８が使用するための予約メモリブロック２１２を予約する。予約後、予約メモリブロック２１２の内容は、コンピューティングデバイス１００のオペレーティングシステム２０２又は他の無許可のプロセスの制御の下、ドライバ及び／又はアプリケーションによって変更されなくてよい、又はそうでなければアクセスされてなくてよい。コンピューティングデバイス１００は、任意の適切な技術を使用して予約メモリブロック２１２を予約してよい。例えば、ファームウェア環境２０８は、予約メモリブロック２１２を除外するオペレーティングシステム２０２にメモリマップ又は他のデータテーブルを公開してよい。
【００３１】
ブロック３０８において、コンピューティングデバイス１００は、予約メモリブロック２１２のメモリアドレスをＳＭＲＡＭ１２６内の位置などのセキュアなメモリ位置に格納する。セキュアなメモリ位置は、コンピューティングデバイス１００のオペレーティングシステム２０２又は他の無許可のプロセスによって変更されなくてよい、又はそうでなければアクセスされなくてよい。しかしながら、セキュアなメモリ位置は、図５に関連して以下で更に説明されるように、スリープモードに入るための要求を処理する場合は、コンピューティングデバイス１００によってアクセスされてよい。例えば、プロセッサ１２０がシステム管理割り込み（ＳＭＩ）を処理する間システム管理モード（ＳＭＭ）にある場合、ＳＭＲＡＭ１２６のみがコンピューティングデバイス１００にとってアクセス可能である。故に、オペレーティングシステム２０２、及びオペレーティングシステム２０２によって実行されるあらゆるアプリケーション及び／又はドライバは、ＳＭＲＡＭ１２６にアクセスしなくてよい。
【００３２】
ブロック３１０において、コンピューティングデバイス１００は、ウェイクコード２２０のコピーをＳＭＲＡＭ１２６内の位置などのセキュアなメモリ位置に格納する。上述されたように、セキュアなメモリ位置に格納されたウェイクコード２２０のコピーは、コンピューティングデバイス１００のオペレーティングシステム２０２又は他の無許可のプロセスによって変更されなくてよい、又はそうでなければアクセスされなくてよい。セキュアなメモリ位置に格納されたウェイクコード２２０のコピーは、ＳＭＩを処理する間プロセッサ１２０がＳＭＭにある場合などの、スリープモードに入るための要求を処理する場合、コンピューティングデバイス１００によってアクセスされてよい。
【００３３】
ブロック３１２において、コンピューティングデバイス１００はオペレーティングシステム２０２をブートする。コンピューティングデバイス１００はまた、オペレーティングシステム２０２をブートするのに必要な任意の更なるプリブートオペレーションを実行してよい。例えば、コンピューティングデバイス１００は、例えば、ドライバ実行環境の確立、ファームウェアドライバ及びアプリケーションのロード、ブートデバイス選択の実行、オペレーティングシステムローダの実行、及び／又はブートサービスの終了を含むＵＥＦＩ規格によって説明されるブートプロセスを実行してよい。オペレーティングシステム２０２をロードした後、方法３００は完了し、ファームウェア環境２０８はもはやコンピューティングデバイス１００を完全制御しない。ファームウェア環境２０８の特定のランタイムサービス又は他のコンポーネントは、オペレーティングシステム２０２がコンピューティングデバイス１００を制御している間アクティブなままであってよい。
【００３４】
ここで図４を参照すると、使用中、コンピューティングデバイス１００は、電力管理スリープ呼び出しのための方法４００を実行してよい。方法４００は、ランタイム、すなわち、オペレーティングシステム２０２がコンピューティングデバイス１００を完全制御している間、コンピューティングデバイス１００のハードウェア、ファームウェア、及び／又はソフトウェアによって実行されてよい。方法４００はブロック４０２から開始する。ブロック４０２では、コンピューティングデバイス１００は、電力管理スリープ状態に入るための要求についてモニタリングする。いくつかの実施形態において、ブロック４０４では、コンピューティングデバイス１００は、電力管理制御レジスタに書き込まれたＡＣＰＩ  Ｓ３スリープ要求についてモニタリングする。例えば、オペレーティングシステム２０２は、コンピューティングデバイス１００がＡＣＰＩ  Ｓ３スリープ状態に入ることを要求すべく、電力管理制御レジスタに書き込んでよい。オペレーティングシステム２０２は、ファームウェア環境２０８によって確立された１又は複数のシステム記述テーブル又は他のデータ構造において、適切な電力管理制御レジスタを検索してよい。コンピューティングデバイス１００は、任意の技術を使用して、Ｓ３スリープ要求についてモニタリングしてよい。例えば、コンピューティングデバイス１００は、電力管理制御レジスタへの書き込みをトラップしてよい。ブロック４０６において、コンピューティングデバイス１００は、Ｓ３スリープ要求が検出されたかどうかを判断する。検出されなかった場合、方法４００はブロック４０２に戻り、スリープ要求についてのモニタリングを継続する。スリープ要求が検出された場合、方法４００はブロック４０８に進む。
【００３５】
ブロック４０８において、コンピューティングデバイス１００は、システム管理割り込み（ＳＭＩ）をトリガし、ＳＭＩハンドラ２１６を呼び出す。コンピューティングデバイス１００のファームウェア及び／又はソフトウェアがＳＭＩを生成してよく、プロセッサ１２０は、自動的にシステム管理モード（ＳＭＭ）に切り替わり、ＳＭＩハンドラ２１６を呼び出してよい。図５及び図６に関連して以下で更に説明されるように、ＳＭＩハンドラ２１６の呼び出し後、コンピューティングデバイス１００は低電力アイドル状態に入ってよい。低電力アイドル状態を終了し、フル電力実行を再開した後、方法４００はブロック４０２に戻り、スリープ要求についてのモニタリングを継続する。
【００３６】
ここで図５を参照すると、使用中、コンピューティングデバイス１００は、システム管理割り込み処理のための方法５００を実行してよい。方法５００はブロック５０２から開始する。ブロック５０２では、コンピューティングデバイス１００はＳＭＩハンドラ２１６を呼び出す。図４のブロック４０８に関連して上述されたように、ＳＭＩハンドラ２１６は、電力管理スリープ状態に入ることをコンピューティングデバイス１００が要求した場合に生成されるシステム管理割り込み（ＳＭＩ）に応答してプロセッサ１２０によって呼び出されてよい。ＳＭＩハンドラ２１６を実行する前に、プロセッサ１２０はシステム管理モード（ＳＭＭ）に入る。ＳＭＭは、プロセッサ１２０がＳＭＲＡＭ１２６にアクセスすることを可能にする特殊なプロセッサモードである。加えて、ＳＭＩハンドラ２１６の実行前に、プロセッサ１２０は、その現在のプロセッサ状態をＳＭＲＡＭ１２６に保存する。保存されたプロセッサ状態は、例えば、ＳＭＭに入る直前のプロセッサ１２０のレジスタ値のコピーを含んでよい。保存されたプロセッサ状態は、ＳＭＩハンドラ２１６の完了後、プロセッサ１２０が実行を再開することを可能にすべく使用されてよい。
【００３７】
ブロック５０４において、コンピューティングデバイス１００は、プラットフォームウェイクコード２２０をセキュアなメモリ位置（例えば、ＳＭＲＡＭ１２６）からファームウェアの予約メモリブロック２１２にコピーする。図３のブロック３１０に関連して上述されたように、プラットフォームウェイクコード２２０は、プリブートファームウェア環境２０８においてブートファームウェアによってＳＭＲＡＭ１２６に既に格納された。コンピューティングデバイス１００は、図３のブロック３０８に関連して上述されたように、ブートファームウェアによってセキュアなメモリ位置に格納されたメモリアドレスを使用して、予約メモリブロック２１２を位置付けてよい。ＳＭＲＡＭ１２６はオペレーティングシステム２０２又は他の無許可のコードにとってはアクセス不可能なので、ＳＭＲＡＭ１２６に格納されたプラットフォームウェイクコード２２０のコピーは、ブートファームウェアの先の認証に基づいて、更に認証することなくＳＭＩハンドラ２１６によって信頼されてよい。加えて、プラットフォームウェイクコード２２０は、データ記憶デバイス１２８又はプラットフォームの不揮発性フラッシュメモリなどの低速である可能性のあるファームウェアの記憶デバイスにアクセスすることなく、主メモリ１２４にコピーされてよい。いくつかの実施形態において、プラットフォームウェイクコード２２０を不揮発性ストレージからではなくＳＭＲＡＭ１２６からコピーすれば、各スリープ要求についておよそ１００ミリ秒節約されるだろう。
【００３８】
ブロック５０６において、コンピューティングデバイス１００は低電力アイドル状態に入るためのシステムハードウェアを準備する。コンピューティングデバイス１００は、例えば、Ｃ１０及び／又はＳＬＰ＿Ｓ０などの低電力状態に入るためのプラットフォームシステムオンチップ（ＳｏＣ）を初期化してよい。加えて、コンピューティングデバイス１００は、サブシステムにわたりレイテンシ許容範囲報告（ｌａｔｅｎｃｙ  ｔｏｌｅｒａｎｃｅ  ｒｅｐｏｒｔｉｎｇ）（ＬＴＲ）値を初期化してよい、ディスプレイの電源を切ってよい、又はそうでなければ、ＳｏＣ特有の準備を実行してよい。
【００３９】
ブロック５０８において、コンピューティングデバイス１００は、ＳＭＩハンドラ２１６から復帰するとプロセッサ１２０を保護モードからリアルモードに変化させるよう、保存されたプロセッサ状態を変更する。オペレーティングシステム２０２を実行する一方で、プロセッサ１２０は、仮想メモリアドレス指定、メモリページング、及び他の機能を提供する保護モードで実行する。使用中の特定のタイプの保護モードは、使用中のプロセッサ１２０及び／又はオペレーティングシステム２０２に依拠してよい。例えば、プロセッサ１２０は、Ｉｎｔｅｌ（登録商標）アーキテクチャプロセッサにおいては、ｘ８６保護モードで、又はＩＡ−３２ｅモードでオペレーティングシステム２０２を実行してよい。故に、ＳＭＲＡＭ１２６に格納された保存されたプロセッサ状態は、プロセッサ１２０がＳＭＩハンドラ２１６の呼び出しの直前に保護モードで実行中だったことを示す１又は複数のレジスタ値を含んでよい。コンピューティングデバイス１００は、リアルモードに対応する１又は複数の新しいレジスタ値を、保存されたプロセッサ状態に書き込んでよい。故に、保存されたプロセッサ状態がプロセッサ１２０に戻された場合、プロセッサ１２０は、リアルモードで実行を再開してよい。リアルモードは、例えば、仮想メモリアドレス指定、メモリページング、又は他の保護モードの機能なしにセグメント化アドレス指定モードとして具現化されてよい。具体的には、最初にブートする場合及び／又はＡＣＰＩ  Ｓ３スリープ状態を終了する場合、リアルモードはプロセッサ１２０によって使用される同一のモードであってよい。
【００４０】
ブロック５１０において、コンピューティングデバイス１００は、ファームウェアの予約メモリブロック２１２に格納されたウェイクコード２２０から実行を再開するよう、保存されたプロセッサ状態を変更する。具体的には、コンピューティングデバイス１００は、保存されたプロセッサ状態の保存された命令ポインタレジスタに、ウェイクコード２２０の開始位置に対応する値を書き込んでよい。故に、保存された命令ポインタレジスタの新しい値は、ファームウェアの予約メモリブロック２１２のウェイクコード２２０の開始を指し示す。コンピューティングデバイス１００はまた、保存されたプロセッサ状態の保存されたセグメントレジスタに、対応する値を書き込んでよい。故に、保存されたプロセッサ状態がプロセッサ１２０に戻される場合、プロセッサ１２０は、ファームウェアの予約メモリブロック２１２のウェイクコード２２０のアドレスと共に命令ポインタの値をロードし、次に、ファームウェアの予約メモリブロック２１２からのウェイクコード２２０の実行を即座に開始する。
【００４１】
ブロック５１２において、コンピューティングデバイス１００はシステム管理モード（ＳＭＭ）から復帰する。コンピューティングデバイス１００は、例えば、ＲＳＭなどのプロセッサ命令を実行してＳＭＭから復帰してよい。ＲＳＭ命令の実行後、ＳＭＩハンドラ２１６は完了する。ＲＳＭ命令に応答して、プロセッサ１２０は、保存されたプロセッサ状態をＳＭＲＡＭ１２６からリロードし、保存されたプロセッサ状態の内容に基づいて実行を継続する。故に、ブロック５０８に関連して上述されたように、プロセッサ１２０はＳＭＭでの実行を停止し、リアルモードでの実行を開始する。プロセッサ１２０は、ブロック５１０に関連して上述されたように、ファームウェアの予約メモリブロック２１２に位置するウェイクコード２２０からの命令の実行を開始する。
【００４２】
ここで図６を参照すると、使用中、コンピューティングデバイス１００は、低電力アイドル及びウェイクのための方法６００を実行してよい。方法６００は、例えば、ファームウェアの予約メモリブロック２１２に位置するウェイクコード２２０の実行中に実行されてよい。方法６００はブロック６０２から開始する。ブロック６０２では、コンピューティングデバイス１００はＳＭＩハンドラ２１６から復帰する。図５のブロック５１２に関連して上述されたように、ＳＭＩハンドラ２１６の呼び出し後、コンピューティングデバイス１００は、プロセッサ１２０がリアルモードで、実行を再開し、ファームウェアの予約メモリブロック２１２に位置するウェイクコード２２０から開始する。
【００４３】
ブロック６０４において、コンピューティングデバイス１００は周辺機器１３２の状態情報を格納する。コンピューティングデバイス１００は、ＡＣＰＩ  Ｓ３スリープ状態に入る前に保存されるべき、コンピューティングデバイス１００の周辺機器１３２又は他のコンポーネントに関連付けられた、オペレーティングシステム２０２が通常必要とするあらゆる状態情報又は他のデータを格納してよい。
【００４４】
ブロック６０６において、コンピューティングデバイス１００は低電力アイドル状態に入る。コンピューティングデバイス１００は任意の低電力状態に入ってよい。当該低電力状態は、揮発性メモリ１２４の内容、プロセッサ１２０のレジスタ、及びコンピューティングデバイス１００の他の揮発性状態を維持し、高速なウェイクを可能にする。コンピューティングデバイス１００は、しかしながら、Ｓ３などのＡＣＰＩスリープ状態には入らない。例えば、コンピューティングデバイス１００はＳ０ｉｘ状態に入ってよく、プロセッサ１２０は、Ｃ１０状態などの低電力状態に入ってよい。ブロック６０８において、コンピューティングデバイス１００はウェイクイベントについてモニタリングする。コンピューティングデバイス１００は、ウェイクイベントについてモニタリングするための任意の技術を使用してよい。例えば、コンピューティングデバイス１００はＭＷＡＩＴプロセッサ命令を実行してよく、次に、ウェイクイベント（例えば、メモリ若しくはＩ／Ｏの書き込みイベント）が発生するまで低電力アイドル状態で待機してよい。いくつかの実施形態において、低電力状態を終了する、すなわち、フル電力状態に戻るには、およそ６０ミリ秒から１００ミリ秒必要であろう。ブロック６１０において、コンピューティングデバイス１００はウェイクイベントが発生したかどうかを判断する。発生しなかった場合、方法６００はブロック６０８に戻り、ウェイクイベントについてのモニタリングを継続する。ウェイクイベントが発生した場合、方法６００はブロック６１２に進む。
【００４５】
ブロック６１２において、コンピューティングデバイス１００は、適切なウェイクソースで１又は複数の電力管理ステータスレジスタを更新する。コンピューティングデバイス１００は、ＡＣＰＩ仕様の要件に基づいて電力管理ステータスレジスタを更新してよい。ブロック６１４において、コンピューティングデバイス１００はウェイクベクトル２０６にジャンプする。ウェイクベクトル２０６は、コンピューティングデバイス１００をＡＣＰＩ  Ｓ３スリープ状態からウェイクするのに使用されるオペレーティングシステム関数又は他のルーチンに関連付けられたメモリアドレスとして具現化されてよい。プロセッサ１２０はリアルモードでウェイクベクトル２０６から実行を継続してよい。
【００４６】
ブロック６１６において、コンピューティングデバイス１００はオペレーティングシステム２０２を実行する。オペレーティングシステム２０２は、コンピューティングデバイス１００をＳ０アクティブモードなどのフル電力動作可能モードに戻す。オペレーティングシステム２０２はまた、１又は複数の周辺機器１３２の保存された状態のリロード、及び／又は、プロセッサ１２０の保護モードへの遷移などの、ＡＣＰＩ  Ｓ３スリープ状態から復帰する場合に通常実行されるオペレーションを実行してよい。実行をウェイクコード２２０からオペレーティングシステム２０２に引き渡した後、方法６００は完了する。コンピューティングデバイス１００は、フル電力モードでの実行と、図４に関連して上述されたようなＡＣＰＩ  Ｓ３スリープ状態に入るための要求についてのモニタリングとを継続してよい。
［例］
【００４７】
本明細書において開示された技術の実施例を以下で提供する。当該技術の実施形態は、以下で説明される例のうちの任意の１又は複数、及び任意の組み合わせを含んでよい。
【００４８】
例１はハイブリッドスリープ電力管理のためのコンピューティングデバイスを含む。当該コンピューティングデバイスは、（ｉ）コンピューティングデバイスのプリブートファームウェア環境中、予約メモリブロックを予約し、（ｉｉ）プリブートファームウェア環境中、コンピューティングデバイスのオペレーティングシステムによってアクセス可能ではないセキュアなメモリ位置にウェイクルーチンを格納するセキュリティモジュールと、（ｉ）第１のプロセッサモードでオペレーティングシステムによって生成されたスリープ電力管理モードに入るための要求に応答して、コンピューティングデバイスのシステム管理割り込みハンドラによって、ウェイクルーチンをセキュアなメモリ位置から予約メモリブロックにコピーし、（ｉｉ）第２のプロセッサモードでのコンピューティングデバイスの実行をシステム管理割り込みハンドラによって再開し、予約メモリブロックに格納されたウェイクルーチンから開始するシステム管理モジュールと、第２のプロセッサモードでの実行の再開に応答して、コンピューティングデバイスのウェイクルーチンによって低電力アイドル状態に入るウェイクコードモジュールとを備える。
【００４９】
例２は例１の主題を含み、当該システム管理モジュールは更に、スリープ電力管理モードに入るための要求に応答して、システム管理割り込みをトリガし、ウェイクルーチンをコピーすることは、システム管理割り込みをトリガしたことに応答して、ウェイクルーチンをコピーすることを含む。
【００５０】
例３は例１及び例２の何れかの主題を含み、第１のプロセッサモードは保護モードを含み、第２のプロセッサモードはリアルモードを含む。
【００５１】
例４は、例１〜例３の何れかの主題を含み、セキュリティモジュールは更に、プリブートファームウェア環境中、セキュアなメモリ位置に予約メモリブロックのアドレスを格納し、ウェイクルーチンをセキュアなメモリ位置から予約メモリブロックにコピーすることは、セキュアなメモリ位置に格納された予約メモリブロックのアドレスを使用して、ウェイクルーチンをコピーすることを含む。
【００５２】
例５は、例１〜例４の何れかの主題を含み、セキュリティモジュールは更に、プリブートファームウェア環境を認証し、予約メモリブロックを予約することは、プリブートファームウェア環境の認証に応答して予約メモリブロックを予約することを含み、セキュアなメモリ位置にウェイクルーチンを格納することは、プリブートファームウェア環境の認証に応答してセキュアなメモリ位置にウェイクルーチンを格納することを含む。
【００５３】
例６は例１〜例５の何れかの主題を含み、セキュアなメモリ位置は、コンピューティングデバイスのシステム管理モードメモリ領域を含む。
【００５４】
例７は例１〜例６の何れかの主題を含み、セキュリティモジュールは更に、セキュアなメモリ位置へのウェイクルーチンの格納に応答して、オペレーティングシステムをブートする。
【００５５】
例８は例１〜例７の何れかの主題を含み、更に、スリープ電力管理モードに入るための要求をオペレーティングシステムによって生成するスリープモジュールを含む。
【００５６】
例９は例１〜例８の何れかの主題を含み、スリープ電力管理モードに入るための要求を生成することは、ＡＣＰＩ  Ｓ３状態に入るための要求を生成することを含む。
【００５７】
例１０は例１〜例９の何れかの主題を含み、スリープ電力管理モードに入るための要求を生成することは、予め定められた値を電力管理制御レジスタに書き込むことを含む。
【００５８】
例１１は例１〜例１０の何れかの主題を含み、システム管理モジュールは更に、低電力アイドル状態のためのコンピューティングデバイスのハードウェアコンポーネントをシステム管理割り込みハンドラによって初期化する。
【００５９】
例１２は例１〜例１１の何れかの主題を含み、システム管理モジュールは更に、システム管理割り込みをトリガしたことに応答して、保存されたプロセッサ状態を生成すべく、コンピューティングデバイスのプロセッサのプロセッサ状態をセキュアなメモリ位置に保存し、第２のプロセッサモードで実行すべく、保存されたプロセッサ状態をシステム管理割り込みハンドラによって変更し、コンピューティングデバイスの実行を再開することは、保存されたプロセッサ状態の変更に応答して、コンピューティングデバイスの実行を再開することを含む。
【００６０】
例１３は例１〜例１２の何れかの主題を含み、システム管理モジュールは更に、予約メモリブロックに格納されたウェイクルーチンを指し示すよう、保存されたプロセッサ状態の保存された命令ポインタレジスタ値をシステム管理割り込みハンドラによって変更し、コンピューティングデバイスの実行を再開することは更に、保存された命令ポインタレジスタ値の変更に応答して、コンピューティングデバイスの実行を再開することを含む。
【００６１】
例１４は例１〜例１３の何れかの主題を含み、低電力アイドル状態は、Ｓ０ｉｘプロセッサ状態を含む。
【００６２】
例１５は例１〜例１４の何れかの主題を含み、ウェイクコードモジュールは更に、コンピューティングデバイスの実行の再開に応答して、コンピューティングデバイスの周辺機器のデバイス状態をウェイクルーチンによって格納し、低電力アイドル状態に入ることは、デバイス状態の格納に応答して低電力アイドル状態に入ることを含む。
【００６３】
例１６は例１〜例１５の何れかの主題を含み、ウェイクコードモジュールは更に、低電力アイドル状態へ入ったことに応答して、オペレーティングシステムのウェイクベクトルにウェイクルーチンによってジャンプする。
【００６４】
例１７は例１〜例１６の何れかの主題を含み、ウェイクコードモジュールは更に、低電力アイドル状態に入ったことに応答して、ウェイクイベントが発生したかどうかを判断し、ウェイクイベントが発生したとの判断に応答して、ウェイクイベントに基づいて電力管理ステータスレジスタをウェイクルーチンによって更新し、ウェイクベクトルにジャンプすることは、電力管理ステータスレジスタの更新に応答して、ウェイクベクトルにジャンプすることを含む。
【００６５】
例１８はハイブリッドシステムスリープのための方法を含む。当該方法は、コンピューティングデバイスのプリブートファームウェア環境中、予約メモリブロックを予約する段階と、コンピューティングデバイスのプリブートファームウェア環境中、コンピューティングデバイスのオペレーティングシステムがアクセス可能でないセキュアなメモリ位置にウェイクルーチンを格納する段階と、第１のプロセッサモードでオペレーティングシステムによって生成されたスリープ電力管理モードに入るための要求に応答して、ウェイクルーチンをセキュアなメモリ位置から予約メモリブロックに、コンピューティングデバイスのシステム管理割り込みハンドラによってコピーする段階と、第２のプロセッサモードでのコンピューティングデバイスの実行をシステム管理割り込みハンドラによって再開し、予約メモリブロックに格納されたウェイクルーチンから開始する段階と、第２のプロセッサモードでの実行を再開したことに応答して、コンピューティングデバイスのウェイクルーチンによって低電力アイドル状態に入る段階とを備える。
【００６６】
例１９は例１８の主題を含み、更に、スリープ電力管理モードに入るための要求に応答して、システム管理割り込みをコンピューティングデバイスによってトリガする段階を含み、ウェイクルーチンをコピーする段階は、システム管理割り込みをトリガしたことに応答してウェイクルーチンをコピーする段階を含む。
【００６７】
例２０は例１８及び例１９の何れかの主題を含み、第１のプロセッサモードは保護モードを含み、第２のプロセッサモードはリアルモードを含む。
【００６８】
例２１は例１８〜例２０の何れかの主題を含み、更に、プリブートファームウェア環境中、予約メモリブロックのアドレスをセキュアなメモリ位置に格納する段階を含み、ウェイクルーチンをセキュアなメモリ位置から予約メモリブロックにコピーする段階は、セキュアなメモリ位置に格納された予約メモリブロックのアドレスを使用して、ウェイクルーチンをコピーする段階を含む。
【００６９】
例２２は例１８〜例２１の何れかの主題を含み、更に、プリブートファームウェア環境をコンピューティングデバイスによって認証する段階を含み、予約メモリブロックを予約する段階は、プリブートファームウェア環境を認証したことに応答して、予約メモリブロックを予約する段階を含み、ウェイクルーチンをセキュアなメモリ位置に格納する段階は、プリブートファームウェア環境を認証したことに応答して、ウェイクルーチンをセキュアなメモリ位置に格納する段階を含む。
【００７０】
例２３は、例１８〜例２２の何れかの主題を含み、セキュアなメモリ位置は、コンピューティングデバイスのシステム管理モードメモリ領域を含む。
【００７１】
例２４は、例１８〜２３の何れかの主題を含み、更に、ウェイクルーチンをセキュアなメモリ位置に格納したことに応答して、オペレーティングシステムをコンピューティングデバイスによってブートする段階を含む。
【００７２】
例２５は、例１８〜例２４の何れかの主題を含み、更に、スリープ電力管理モードに入るための要求をオペレーティングシステムによって生成する段階を含む。
【００７３】
例２６は例１８〜例２５の何れかの主題を含み、スリープ電力管理モードに入るための要求を生成する段階は、ＡＣＰＩ  Ｓ３状態に入るための要求を生成する段階を含む。
【００７４】
例２７は例１８〜例２６の何れかの主題を含み、スリープ電力管理モードに入るための要求を生成する段階は、予め定められた値を電力管理制御レジスタに書き込む段階を含む。
【００７５】
例２８は例１８〜例２７の何れかの主題を含み、更に、低電力アイドル状態のためのコンピューティングデバイスのハードウェアコンポーネントをシステム管理割り込みハンドラによって初期化する段階を含む。
【００７６】
例２９は例１８〜例２８の何れかの主題を含み、更に、システム管理割り込みをトリガしたことに応答して、保存されたプロセッサ状態を生成すべく、コンピューティングデバイスのプロセッサのプロセッサ状態をコンピューティングデバイスによってセキュアなメモリ位置に保存する段階と、第２のプロセッサモードで実行すべく、保存されたプロセッサ状態をシステム管理割り込みハンドラによって変更する段階を含み、コンピューティングデバイスの実行を再開する段階は、保存されたプロセッサ状態を変更したことに応答して、コンピューティングデバイスの実行を再開する段階を含む。
【００７７】
例３０は例１８〜例２９の何れか主題を含み、更に、予約メモリブロックに格納されたウェイクルーチンを指し示すよう、保存されたプロセッサ状態の保存された命令ポインタレジスタ値をシステム管理割り込みハンドラによって変更する段階を含み、コンピューティングデバイスの実行を再開する段階は更に、保存された命令ポインタレジスタ値を変更したことに応答してコンピューティングデバイスの実行を再開する段階を含む。
【００７８】
例３１は例１８〜例３０の何れかの主題を含み、低電力アイドル状態に入る段階は、Ｓ０ｉｘプロセッサ状態に入る段階を含む。
【００７９】
例３２は例１８〜例３１の何れかの主題を含み、更に、コンピューティングデバイスの実行を再開したことに応答して、コンピューティングデバイスの周辺機器のデバイス状態をウェイクルーチンによって格納する段階を含み、低電力アイドル状態に入る段階は、デバイス状態を格納したことに応答して、低電力アイドル状態に入る段階を含む。
【００８０】
例３３は例１８〜例３２の何れかの主題を含み、更に、低電力アイドル状態に入ったことに応答して、オペレーティングシステムのウェイクベクトルにウェイクルーチンによってジャンプする段階を含む。
【００８１】
例３４は例１８〜例３３の何れかの主題を含み、更に、低電力アイドル状態に入ったことに応答して、ウェイクイベントが発生したかどうかをコンピューティングデバイスによって判断する段階と、ウェイクイベントが発生したと判断したことに応答して、ウェイクイベントに基づいて電力管理ステータスレジスタをウェイクルーチンによって更新する段階とを含み、ウェイクベクトルにジャンプする段階は、電力管理ステータスレジスタを更新したことに応答して、ウェイクベクトルにジャンプする段階を含む。
【００８２】
例３５はコンピューティングデバイスを含む。当該コンピューティングデバイスは、プロセッサと、プロセッサによって実行された場合、コンピューティングデバイスに例１８〜例３４の何れかの方法を実行させる複数の命令を格納したメモリとを備える。
【００８３】
例３６は、格納された複数の命令を備える１又は複数の機械可読記憶媒体を含み、当該命令は、実行されたことに応答して、コンピューティングデバイスに例１８〜例３４の何れかの方法を実行させる。
【００８４】
例３７は例１８〜例３４の何れかの方法を実行するための手段を備えるコンピューティングデバイスを含む。
【００８５】
例３８はハイブリッドスリープ電力管理のためのコンピューティングデバイスを含む。当該コンピューティングデバイスは、コンピューティングデバイスのプリブートファームウェア環境中、予約メモリブロックを予約するための手段と、コンピューティングデバイスのプリブートファームウェア環境中、コンピューティングデバイスのオペレーティングシステムがアクセス可能でないセキュアなメモリ位置にウェイクルーチンを格納するための手段と、第１のプロセッサモードでオペレーティングシステムによって生成されたスリープ電力管理モードに入るための要求に応答して、コンピューティングデバイスのシステム管理割り込みハンドラによってウェイクルーチンをセキュアなメモリ位置から予約メモリブロックにコピーするための手段と、第２のプロセッサモードでコンピューティングデバイスの実行をシステム管理割り込みハンドラによって再開し、予約メモリブロックに格納されたウェイクルーチンから開始するための手段と、第２のプロセッサモードでの実行を再開したことに応答して、コンピューティングデバイスのウェイクルーチンによって低電力アイドル状態に入るための手段とを備える。
【００８６】
例３９は例３８の主題を含み、更に、スリープ電力管理モードに入るための要求に応答して、システム管理割り込みをトリガするための手段を含み、ウェイクルーチンをコピーするための手段は、システム管理割り込みをトリガしたことに応答して、ウェイクルーチンをコピーするための手段を含む。
【００８７】
例４０は例３８及び例３９の何れかの主題を含み、第１のプロセッサモードは保護モードを含み、第２のプロセッサモードはリアルモードを含む。
【００８８】
例４１は例３８〜例４０の何れかの主題を含み、更に、プリブートファームウェア環境中、セキュアなメモリ位置に予約メモリブロックのアドレスを格納するための手段を含み、ウェイクルーチンをセキュアなメモリ位置から予約メモリブロックにコピーするための手段は、セキュアなメモリ位置に格納された予約メモリブロックのアドレスを使用して、ウェイクルーチンをコピーするための手段を含む。
【００８９】
例４２は例３８〜例４１の何れかの主題を含み、更に、プリブートファームウェア環境を認証するための手段を含み、予約メモリブロックを予約するための手段は、プリブートファームウェア環境を認証したことに応答して、予約メモリブロックを予約するための手段を含み、ウェイクルーチンをセキュアなメモリ位置に格納するための手段は、プリブートファームウェア環境を認証したことに応答して、ウェイクルーチンをセキュアなメモリ位置に格納するための手段を含む。
【００９０】
例４３は例３８〜例４２の何れかの主題を含み、セキュアなメモリ位置は、コンピューティングデバイスのシステム管理モードメモリ領域を含む。
【００９１】
例４４は例３８〜例４３の何れかの主題を含み、更に、セキュアなメモリ位置にウェイクルーチンを格納したことに応答して、オペレーティングシステムをブートするための手段を含む。
【００９２】
例４５は例３８〜例４４の何れかの主題を含み、更に、スリープ電力管理モードに入るための要求を生成するための手段を含む。
【００９３】
例４６は例３８〜例４５の何れかの主題を含み、スリープ電力管理モードに入るための要求を生成するための手段は、ＡＣＰＩ  Ｓ３状態に入るための要求を生成するための手段を含む。
【００９４】
例４７は例３８〜例４６の何れかの主題を含み、スリープ電力管理モードに入るための要求を生成するための手段は、予め定められた値を電力管理制御レジスタに書き込むための手段を含む。
【００９５】
例４８は例３８〜例４７の何れかの主題を含み、更に、低電力アイドル状態のためのコンピューティングデバイスのハードウェアコンポーネントをシステム管理割り込みハンドラによって初期化するための手段を含む。
【００９６】
例４９は例３８〜例４８の何れかの主題を含み、更に、システム管理割り込みをトリガしたことに応答して、保存されたプロセッサ状態を生成すべく、コンピューティングデバイスのプロセッサのプロセッサ状態をセキュアなメモリ位置に保存するための手段と、第２のプロセッサモードで実行すべく、保存されたプロセッサ状態をシステム管理割り込みハンドラによって変更するための手段とを含み、コンピューティングデバイスの実行を再開するための手段は、保存されたプロセッサ状態を変更したことに応答して、コンピューティングデバイスの実行を再開するための手段を含む。
【００９７】
例５０は例３８〜例４９の何れかの主題を含み、更に、予約メモリブロックに格納されたウェイクルーチンを指し示すよう、保存されたプロセッサ状態の保存された命令ポインタレジスタ値をシステム管理割り込みハンドラによって変更するための手段を含み、コンピューティングデバイスの実行を再開するための手段は更に、保存された命令ポインタレジスタ値を変更したことに応答して、コンピューティングデバイスの実行を再開するための手段を含む。
【００９８】
例５１は例３８〜例５０の何れかの主題を含み、低電力アイドル状態に入るための手段は、Ｓ０ｉｘプロセッサ状態に入るための手段を含む。
【００９９】
例５２は例３８〜例５１の何れかの主題を含み、更に、コンピューティングデバイスの実行を再開したことに応答して、コンピューティングデバイスの周辺機器のデバイス状態をウェイクルーチンによって格納するための手段を含み、低電力アイドル状態に入るための手段は、デバイス状態を格納したことに応答して、低電力アイドル状態に入るための手段を含む。
【０１００】
例５３は、例３８〜例５２の何れかの主題を含み、更に、低電力アイドル状態に入ったことに応答して、オペレーティングシステムのウェイクベクトルにウェイクルーチンによってジャンプするための手段を含む。
【０１０１】
例５４は例３８〜例５３の何れかの主題を含み、更に、低電力アイドル状態に入ったことに応答して、ウェイクイベントが発生したかどうかを判断するための手段と、ウェイクイベントが発生したと判断したことに応答して、ウェイクイベントに基づいて電力管理ステータスレジスタをウェイクルーチンによって更新するための手段とを含み、ウェイクベクトルにジャンプするための手段は、電力管理ステータスレジスタを更新したことに応答してウェイクベクトルにジャンプするための手段を含む。
【図１】
0006627180.tif 000002
【図２】
0006627180.tif 000003
【図３】
0006627180.tif 000004
【図４】
0006627180.tif 000005
【図５】
0006627180.tif 000006
【図６】
0006627180.tif 000007