(57)【要約】  複数の動作コンテキストが、コンピューティングデバイスのスタンバイ電力状態から呼び出される。動作コンテキストは、コンピューティングデバイスの１つ又は複数のオペレーティングシステムで実行される。ユーザー開始行動又はホットキーを通してのアクティベート等により、所望の動作コンテキストが選ばれる場合、所望の動作コンテキストをサポートするオペレーティングシステムが、スタンバイ電力状態からブートアップされる。【選択図】図１
2014531099.tif 000002
【特許請求の範囲】
【請求項１】
動作コンテキストを切り替える方法であって、
実行可能な命令を用いて設定された１つ又は複数のプロセッサの制御下で、
コンピューティングデバイスをスタンバイ電力状態にする段階と、
前記スタンバイ電力状態から起動する複数のオペレーティングシステムのうちの１つを決定する段階と、
前記スタンバイ電力状態から、前記決定されたオペレーティングシステムで実行される所望の動作コンテキストを起動する段階と、
を含む、方法。
【請求項２】
前記複数のオペレーティングシステムのうちの１つを決定する段階は、前記コンピューティングデバイスでのユーザー行動に基づく、請求項１に記載の方法。
【請求項３】
前記決定する段階は、以前のオペレーティングシステムから異なるオペレーティングシステムに切り替える段階を含む、請求項１または請求項２に記載の方法。
【請求項４】
前記スタンバイ電力状態から起動することは、オペレーティングシステムをブートアップする際にエラーを検出する段階と、前記決定されたオペレーティングシステムをブートアップする段階とを含む、請求項１から請求項３のいずれか１つに記載の方法。
【請求項５】
前記スタンバイ電力状態にする段階、前記決定する段階、及び前記起動する段階は、プラットフォーム及びオペレーティングシステムに依存しない、請求項１から請求項４のいずれか１つに記載の方法。
【請求項６】
前記起動することを実行するために、データをメモリに保存する段階を更に含む、請求項１から請求項５のいずれか１つに記載の方法。
【請求項７】
前記複数のオペレーティングシステムを起動するためのデータのメモリを確保する段階を更に含む、請求項１から請求項６のいずれか１つに記載の方法。
【請求項８】
コンピューティングデバイスであって、
１つ又は複数のプロセッサと、
前記１つ又は複数のプロセッサ用に構成されるメモリコントローラーと、
前記１つ又は複数のプロセッサ及び前記メモリコントローラー用に構成されるメモリと、
を備え
前記メモリは、前記コンピューティングデバイスがスタンバイ電力状態になる場合、所望の動作コンテキストをサポートするオペレーティングシステムが前記スタンバイ電力状態から起動されるような１つ又は複数のオペレーティングシステムを含む、コンピューティングデバイス。
【請求項９】
前記メモリコントローラーは、前記コンピューティングデバイスがスタンバイ電力状態である間、メモリからの動作を実行する、請求項８に記載のコンピューティングデバイス。
【請求項１０】
前記メモリはランダムアクセスメモリを含み、前記ランダムアクセスメモリは、スタンバイ電力状態からの前記１つ又は複数のオペレーティングシステムの起動に割り振られる、請求項８または請求項９に記載のコンピューティングデバイス。
【請求項１１】
前記メモリはランダムアクセスメモリを含み、前記１つ又は複数のオペレーティングシステムをスタンバイ電力状態から起動するためのデータがランダムアクセスメモリに保存される、請求項８または請求項９に記載のコンピューティングデバイス。
【請求項１２】
前記メモリは、オペレーティングシステムを起動する際にエラーを検出し、所望の動作コンテキストについて適切な前記オペレーティングシステムを起動するシステム管理コードを含む、請求項８から請求項１１のいずれか１つに記載のコンピューティングデバイス。
【請求項１３】
装置及び周辺機器に接続され、動作コンテキストの起動を開始する入出力インターフェースを更に備える、請求項８から請求項１２のいずれか１つに記載のコンピューティングデバイス。
【請求項１４】
前記スタンバイ電力状態をサポートする基本入出力システム（ＢＩＯＳ）を更に備え、所望の前記オペレーティングシステムが起動される、請求項８から請求項１３のいずれか１つに記載のコンピューティングデバイス。
【請求項１５】
前記ＢＩＯＳは、所望の前記オペレーティングシステムの起動元である様々なフェーズを含む、請求項１４に記載のコンピューティングデバイス。
【請求項１６】
コンピューティングデバイスをスタンバイ電力状態にする段階と、
前記スタンバイ電力状態から、複数の動作コンテキストをサポートする１つ又は複数のオペレーティングシステムを起動するためのデータロケーションをメモリに保存する段階と、
前記スタンバイ電力状態から、所望の動作コンテキストをサポートするオペレーティングシステムを起動させる段階と、
を前記コンピューティングデバイスに実行させるためのプログラム。
【請求項１７】
前記コンピューティングデバイスをスタンバイ電力状態にする段階及び前記オペレーティングシステムを起動させる段階は、前記コンピューティングデバイスでのユーザー行動に基づく、請求項１６に記載のプログラム。
【請求項１８】
前記データロケーションをメモリに保存する段階は、以前に実施されたオペレーティングシステムからのデータを保存する段階を含む、請求項１６または請求項１７に記載のプログラム。
【請求項１９】
前記起動させる段階は、前記１つ又は複数のオペレーティングシステムのブートに割り振られた保存メモリから読み出す段階を含む、請求項１６から請求項１８のいずれか１つに記載のプログラム。
【請求項２０】
前記オペレーティングシステムをブートアップする際にシステムエラーを特定する段階と、別のオペレーティングシステムを起動させる段階とを更に前記コンピューティングデバイスに実行させる、請求項１６から請求項１９のいずれか１つに記載のプログラム。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピュータの実行を一時停止することによって節電し、マルチブートコンピューティングデバイスを実施するメカニズムが存在する。従来技術によるシステムでは、一度に１つのオペレーティングシステム（ＯＳ）が通常、ブートされる。第２のＯＳが必要な場合、コンピューティングデバイスは電源が切られ、ファームウェアがリブートされる。基本入出力システム（ＢＩＯＳ）ブート仕様及び／又は拡張可能ファームウェアインターフェース（ＥＦＩ：Extensible Firmware Interface）ブートマネージャ等のブートプロセスに対する規格が存在することができる。
【０００２】
さらに、コンピューティングデバイスの電力管理に対する規格及び仕様が存在することができる。例えば、米国エネルギースター（U. S. Energy Star）格付けは、１００ワットのみを消費するという、マシン（コンピューティングデバイス）への例示的な要件を提供する。アドバンスドコンフィグレーションアンドパワーインターフェースすなわちＡＣＰＩ（Advanced Configuration & Power Interface）（http://www.acpi.info参照）は、電力を管理する規格を識別するために、Intel社、Microsoft社、株式会社東芝、及びHewlett-Packard社によって合同で開発された業界仕様である。スリープ状態及び移行がＡＣＰＩ仕様によって規定される。例えば、Ｓ４スリープ状態すなわち休止状態をサポートするようにハードウェアをいかに構築するかを規定するＡＣＰＩ仕様がある。Ｓ４スリープ状態では、コンピューティングデバイスはディープスリープになり、節電する。Ｓ４スリープ状態では、コンピュータ装置のＯＳは、全てのメモリ内容を取り出し、ディスクファイル（ハードディスク）に保存する。別の状態はＳ３スリープ状態であり、この状態はスタンバイ状態と見なされる。Ｓ３では、内容はシステムのランダムアクセスメモリ（ＲＡＭ）に保持される。小量の電力が、システムＲＡＭ及びチップセットに提供され、ラップトップの蓋が開けられること又はホットキーのアクティベート等の復帰イベントをキャッチするか、又はリッスンする。それとは対照的に、Ｓ４スリープ状態では、あらゆるものの電源が切られる。
【発明の概要】
【０００３】
コンピューティングデバイスは複数の動作コンテキストを用いることができ、アプリケーションは同じＯＳ又は異なるＯＳで実行される。例えば、ユーザーは、Ｗｉｎｄｏｗｓ（登録商標）ＯＳ等の第１のＯＳで実行中のゲームをプレイすることができる。ゲームのプレイは１つの動作コンテキストである。次に、ユーザーは、Ｌｉｎｕｘ（登録商標）  ＯＳ等の第２のＯＳで実行中のタッチパッドを用いたいと望む。タッチパッドアプリケーションは、別の動作コンテキストである。動作コンテキストの切り替えは、ラップトップコンピューティングデバイスの蓋を閉じること又はコンピューティングデバイスの指定のホットキーをアクティベートすること等のイベントを含むことができる。動作コンテキストの切り替えが、或るＯＳをシャットダウンし、別のＯＳを起動することを含むことを考えると、動作コンテキスト間の時間が長くなるおそれがある。最小の遅延で動作コンテキストを迅速に切り替えることがきわめて望ましい。コンピューティングデバイスで実行中の仮想マシンが、動作コンテキスト間に最小の遅延を提供可能なことを理解されたい。仮想マシンの実行には、コンピューティングデバイスの大きなコンピューティングリソース及び電力が必要である。これは、コンピューティングデバイスが、電力リソースを含め、限られたリソースを有する場合に問題になるおそれがある。これは、コンピューティングデバイスが、タブレット又はウルトラブック等のフォームファクタが小さい装置である場合に特に当てはまる。したがって、最小の遅延、コンピューティングリソース、及び電力で動作コンテキストを切り替え可能なことが望ましい。
【０００４】
詳細な説明は、添付図を参照して記載する。図中、参照符号の最も左側の桁（複数の場合もある）は、その参照符号が最初に現れる図を識別する。同じ符号が、同様の特徴及び構成要素を参照するのに図面全体を通して用いられる。
【図面の簡単な説明】
【０００５】
【図１】動作コンテキストを切り替えるフローチャートの一例である。
【図２】動作コンテキストを切り替える場合にオペレーティングシステムを実行するフローチャートの一例である。
【図３】動作コンテキストを切り替える場合にシステム管理（モード）割り込み又はＳＭＩハンドラーを開始し実行するフローチャートの一例である。
【図４】動作コンテキストを切り替える場合に切り替えられたオペレーティングシステムコンテキストを保持するフローチャートの一例である。
【図５】動作コンテキストを切り替える場合にターゲット切り替えコンテキストを再開するフローチャートの一例である。
【図６】動作コンテキストを切り替える場合にオペレーティングシステム再開ベクトルにジャンプするフローチャートの一例である。
【図７】動作コンテキストを切り替える場合に、基本入出力システム（ＢＩＯＳ）で実施される事前拡張可能ファームウェアインターフェース（Ｐｒｅ−ＥＦＩすなわちＰＥＩ：Pre Extensible Firmware Interface）においてスリープ状態から復帰するフローチャートの一例である。
【図８】動作コンテキストを切り替える場合に、基本入出力システム（ＢＩＯＳ）で実施されるドライバー実行環境（ＤＸＥ：Driver Execution Environment）においてスリープ状態から復帰するフローチャートの一例である。
【図９】動作コンテキストの切り替えを実施するコンピューティングデバイスのアーキテクチャの一例のブロック図である。
【図１０】動作コンテキストの切り替えを実施するメモリの一例のブロック図である。
【発明を実施するための形態】
【０００６】
コンピューティングデバイスでの動作コンテキストの切り替えは、スタンバイ状態すなわちＳ３スリープ状態等の低電力状態を利用する。低電力状態を用いることにより、動作コンテキストの切り替え及び／又は動作コンテキストの呼び出しの時間を最小にすることができる。
【０００７】
概説
本明細書には、低電力状態を実施して、コンピューティングデバイスでの動作コンテキストの切り替え（例えば、変更）を可能にする方法、コンピューティングデバイス及びコンピュータ可読記憶媒体が記載される。通常、Ｓ３状態等のスタンバイ状態は、１つのプロセス及び１つのインスタンスに用いられるが、本明細書には、Ｎ個の動作コンテキストにスタンバイ状態すなわちＳ３状態を用いる方法、コンピューティングデバイス、及びコンピュータ可読記憶媒体が記載される。例えば、スタンバイ状態すなわちＳ３状態を用いて、時間効率的かつ応答的に動作コンテキストを切り替えることができる。動作は、プラットフォームに非依存又はＯＳに非依存であることができ、コンピューティングデバイスの基本入出力システム（ＢＩＯＳ）を用いて実施される。
【０００８】
以下の詳細な説明では、本発明の完全な理解を提供するために、多くの特定の詳細が記載される。しかしながら、これらの特定の詳細なしでも本発明を実施可能なことが当業者には理解されよう。他の場合、既知の方法、手順、構成要素、及び回路は、本発明を曖昧にしないように詳述されていない。
【０００９】
以下の詳細な説明の幾つかの部分は、コンピュータメモリ内のデータビット又は二進デジタル信号に対する演算のアルゴリズム的表現及び象徴的表現に関して提示される。これらのアルゴリズム的な説明及び表現は、データ処理分野の当業者が、他の当業者に仕事の本質を伝えるのに用いる技法とすることができる。
【００１０】
別途指定のある場合を除き、以下の考察から明らかなように、本明細書全体を通して、例えば「処理」、「コンピューティング」、「計算」、「決定」等の用語を利用する考察が、コンピューティングシステムのレジスタ及び／又はメモリ内の電子的数量等の物理的数量として表されるデータを操作し、及び／又はコンピューティングシステムのメモリ、レジスタ、他のそのような情報記憶装置、若しくは伝送装置内の物理的数量として同様に表される他のデータに変換するコンピュータすなわちコンピューティングシステム又は同様の電子コンピューティングデバイスの動作及び／又はプロセスを指すことが理解される。数量を指定しない（"a" or "an"）用語は、本明細書に用いられる場合、１つ又は２つ以上として定義される。複数という用語は、本明細書に用いられる場合、２つ又は３つ以上として定義される。別という用語は、本明細書に用いられる場合、少なくとも２つ目又は３つ目以上として定義される。含む（including）及び／又は有するという用語は、本明細書に用いられる場合、含む、備える（comprising）として定義されるが、これに限定されない。結合されるという用語は、本明細書で用いられる場合、任意の所望の形態で、例えば、機械的に、電子的に、デジタル的に、直接、ソフトウェアにより、ハードウェア等により、動作可能に結合されることとして定義される。本発明を様々な用途で用いることが可能なことを理解されたい。
【００１１】
幾つかの実施形態は、様々な装置及びシステム、例えば、パーソナルコンピュータ（ＰＣ）、デスクトップコンピュータ、モバイルコンピュータ、ラップトップコンピュータ、ノート型コンピュータ、タブレットコンピュータ、サーバーコンピュータ、ハンドヘルドコンピュータ、ハンドヘルド装置、個人情報端末（ＰＤＡ）装置、ハンドヘルドＰＤＡ装置、オンボード装置、オフボード装置、ハイブリッド装置、車両装置、非車両装置、モバイル装置若しくはポータブル装置、消費者装置、非モバイル装置若しくは非ポータブル装置、無線通信基地局、及び／又は無線通信装置と併せて用いることができる。本明細書では、そのような装置は一括して「コンピューティングデバイス」と呼ばれる。
【００１２】
コンピューティングデバイスは低電力状態を実施し、例えば、コンピューティングデバイスはＡＣＰＩ仕様を用い、Ｓ３スリープ状態すなわちスタンバイ状態になることができる。コンピューティングデバイスは、「完全な」ＯＳ、専用ＯＳ、ＯＳ／アプリケーション等を含む１つ又は複数のＯＳを含む。コンピューティングデバイスで実行中のアプリケーションは、各自の動作コンテキストで実行することができる。各ＯＳ及び動作コンテキストは、低電力状態（例えば、スタンバイ状態すなわちＳ３状態）と互換性があるか、又は低電力状態を利用する。動作コンテキスト又はＯＳは、ラップトップコンピューティングデバイスの蓋を閉じること及び／又はコンピューティングデバイスのホットキーをアクティベートすること等のユーザー行動により、呼び出すことができるか、又は或るＯＳ／動作コンテキストから別のＯＳ／動作コンテキストに切り替えることができる。予めプログラムされ、及び／又はコンピューティングデバイスの一部として統合され、及び／又はユーザーによってプログラムされる他のトリガーイベントを実施することも可能なことを理解されたい。
【００１３】
記載の方法及びプロセスは、コンピューティングデバイスの基本入出力システム（ＢＩＯＳ）の一環として実施することができる。さらに、コンピューティングデバイスは、特定のＢＩＯＳブート仕様及び／又は拡張可能ファームウェアインターフェース（ＥＦＩ）ブートマネージャ仕様を実施する。本方法及びプロセスはまた、システム管理モード（ＳＭＭ：System Management Mode）割り込み（ＳＭＩ：SMM Interrupt）動作、特にＳＭＩハンドラーを含む定義されたＳＭＭ動作を利用することもできる。ＳＭＩハンドラーは特に、ＯＳをブートする際に「エラー」を検出してエラーに対処することに関連する。
【００１４】
プロセス例
これより図面を参照すると、図１は、動作コンテキストを切り替えるプロセス１００の一例を示す。ブロック１０２において、コンピューティングデバイスに電源が投入されることが前提されるが、コンピューティングデバイスは幾つかのスリープ状態のうちの１つであることができる。コンピューティングデバイスがスタンバイ状態、例えば、Ｓ３スリープ状態であるか否かが判断される。特に、ブロック１０４において、コンピューティングデバイスがスタンバイ状態すなわちＳ３スリープ状態から再開するか否かが判断される。
【００１５】
コンピューティングデバイスがスタンバイ状態すなわちＳ３スリープ状態から再開されていない場合、ブロック１０４の「ＮＯ」分岐を辿り、ブロック１０６において、コンピューティングデバイスはターゲットＯＳ用のリソースを確保し、ターゲットＯＳは、コンピューティングデバイスが特定の動作コンテキストに用いるべきＯＳとして定義される。ブロック１０８において、ＯＳ切り替えコンテキスト用のリソースが確保される。例えば、ＯＳをＷｉｎｄｏｗｓ（登録商標）ＯＳからＬｉｎｕｘ（登録商標）  ＯＳに切り替えることができる。ブロック１１０において、所望のＯＳが開始される。
【００１６】
コンピューティングデバイスがスタンバイ状態すなわちＳ３スリープ状態から来る場合、ブロック１０４の「ＹＥＳ」分岐を辿り、ブロック１１２において、ＯＳ切り替えフラグが設定されているか否かが判断される。特に、ブロック１１２において、所望の動作コンテキストをサポートするために、ＯＳを切り替えるべきであるか、又は変更すべきであるか否かに判断が向けられる。判断が、以前の同じＯＳを用いるべきであるというものである場合、１１２の「ＮＯ」分岐を辿り、ブロック１１４において、スタンバイ状態すなわちＳ３状態からの通常の再開が実行される。次に、ブロック１１０において、ＯＳが開始される。
【００１７】
コンピューティングデバイス１００がＯＳを変更すべきであるか、又は切り替えるべき場合、ブロック１１２の「ＹＥＳ」分岐を辿り、コンピューティングデバイスは、或るＯＳのスタンバイ状態すなわちＳ３状態から、別のＯＳで実行される動作コンテキストに移る。したがって、他方のＯＳを復帰させるか、又はブートアップする必要がある。
【００１８】
ブロック１１６において、ＯＳ切り替えフラグが、メンテナンス目的でクリアされる。ブロック１１８において、ブートターゲットへの更新が実行される。ＯＳごとに、メモリが、各ＯＳのブートアップ用に確保される。再開が、所望のＯＳの各メモリロケーションから実行される。ブロック１２０において、ターゲットＯＳ用のリソースが確保される。ブロック１２２において、ブートモードからターゲット／切り替え先のＯＳの完全ブートへのオーバーライドが実行される。ブロック１２４において、コンピューティングデバイスのＢＩＯＳ時、ブートが実行されて、異なるＯＳ又はターゲットＯＳを開始する。ブロック１２６において、ターゲットＯＳがブートされ、ブロック１１０において、ＯＳが開始される。
【００１９】
図２は、動作コンテキストを切り替える場合にオペレーティングシステムを実行するプロセス２００を示す。プロセス２００はプロセス１００から続く。ブロック１１０において、ＯＳが開始される。ブロック２０２において、ラップトップの蓋を閉じる又はホットキーが押下される等のトリガーイベントが、異なる動作コンテキスト（すなわち、異なるＯＳで実行中の別の動作コンテキスト）を実行中の異なるＯＳへの切り替えを開始するか否かが判断される。異なるＯＳへの切り替えがないとの判断である場合、ブロック２０２の「ＮＯ」分岐を辿り、フロー２００はブロック１１０に戻る。その他の場合、ブロック２０２の「ＹＥＳ」分岐を辿り、ブロック２０４において、ＯＳ切り替えフラグが設定される。ブロック２０６において、スタンバイ状態すなわちＳ３状態がトリガーされる。Ｓ３状態をトリガーすることにより、ブロック２０８において、ＳＭＩハンドラーが呼び出されるか、又は開始される（図３に関する考察において更に後述される）。ＳＭＩハンドラーは特に、ＯＳをブートする際の「エラー」の検出及び対処に関連する。
【００２０】
ブロック１１０を実行することは、ブロック２１０において、ＯＳ切り替えフラグが設定されているか否かを判断することも含む。ブロック２１０の「ＮＯ」分岐を辿り、フロー２００はブロック１１０に戻る。ＯＳフラグ切り替えが設定されていた場合、ブロック２１０の「ＹＥＳ」分岐を辿り、フロー２００はブロック２０６に進み、スタンバイ状態すなわちＳ３状態をトリガーする。
【００２１】
図３は、システム管理（モード）割り込み又はＳＭＩハンドラーを開始するプロセス３００の一例を示す。スタンバイ状態すなわちＳ３状態をトリガーすることによって、ブロック２０８において、ＳＭＩハンドラーが開始される。プロセス３００は、ＳＭＩハンドラーを呼び出すようなブロックを含め、アドバンスドコンフィグレーションアンドパワーインターフェースすなわちＡＣＰＩ規格に基づくことができる。ブロック３０２において、Ｓ３レジスタは、コンテキスト情報の保存を含め、ソースＯＳのメモリ（すなわち、ＲＡＭ）に保存される。ディープスリープ状態すなわちＳ４状態とは対照的に、スタンバイ状態すなわちＳ３状態では、コンピューティングデバイスは、ディープスリープ状態すなわちＳ４状態よりも迅速に復帰し実行することができる。換言すれば、動作状態になるために、ディープスリープ状態すなわちＳ４状態と比較した場合、スタンバイ状態すなわちＳ３状態では初期化が最小である。
【００２２】
ブロック３０４において、ＯＳを切り替えるか否かが判断される。ＯＳを切り替えないとの判断である場合、ブロック３０４の「ＮＯ」分岐を辿り、ブロック３０６において、プロセスは継続する。ＯＳを切り替えるべき場合、ブロック３０４の「ＹＥＳ」分岐を辿り、ブロック３０８において、ＯＳ切り替えコンテキストは保持されるか、又は保存される（図４に関する考察で更に後述する）。
【００２３】
ブロック３１０において、ターゲットＯＳをブートすべきか否かが判断される。ターゲットＯＳをブートすべきではない場合、ブロック３１０の「ＮＯ」分岐を辿り、ブロック３１２において、ＯＳの自動復帰が設定される。そのターゲットＯＳをブートすべき場合、ブロック３１０の「ＹＥＳ」分岐を辿り、ブロック３１４において、ターゲットＯＳ切り替えコンテキストが再開される（図５に関する考察で更に後述する）。
【００２４】
ブロック３１６において、ターゲットＯＳの再開ベクトルへのジャンプが実行される（図６に関する考察で更に後述する）。コンテキストを切り替える場合、ソフトウェアコードフローは効率的に、コンピューティングデバイスの初期リセットベクトルから開始される。ＢＩＯＳコードが実行され、スタンバイ状態すなわちＳ３状態の通常の再開コードパスの一環として、ターゲットＯＳのローダーを実行する（すなわち、ＯＳが効率的にロードされる）代わりに、メモリ内のロケーションに記憶することができるＯＳ再開ベクトルへのジャンプが実行される。そのようなコードは、ＯＳがそれ自体を、現存のスタンバイ状態すなわちＳ３状態から復帰させる手段によって実施することができる。ＢＩＯＳがＯＳを再び復帰させようとする場合、このコードを実行することができる。ブロック３１８において、ターゲットＯＳが実行される。これは、所望の動作コンテキストを実行することを含むことができる。
【００２５】
図４は、動作コンテキストを切り替える場合に切り替えられたオペレーティングシステムコンテキストを保持するプロセス４００の一例を示す。ブロック３０８に続き、規定されるＡＣＰＩ要件に従い、ブロック４０２において、ＡＣＰＩテーブル内の値のコピーが保存される。ブロック４０４において、ソースＯＳコンテキスト用に確保された指定のメモリが、後に使用又は参照するために、保存又は保持される。特定の実施態様では、メモリ（すなわち、ＲＡＭ）内の特定のエリアが指定される。例えば、ＲＡＭ内の「Ｎ」ＭＢ未満のメモリが指定される。次に、プロセス４００は、ブロック３１０におけるターゲットＯＳをブートすべきであるか否かの判断に戻る。
【００２６】
図５は、動作コンテキストを切り替える場合にターゲット切り替えコンテキストを再開するプロセス５００の一例を示す。ブロック３１４に続き、ブロック５０２において、保存されたスタンバイ状態すなわちＳ３状態のレジスタが再開される。ブロック５０４において、保存されたＡＣＰＩテーブルが呼び出され、再開される。ブロック５０６において、指定のメモリ（すなわち、例えばブロック４０４において保存されたメモリ）が呼び出され、実施される。
【００２７】
図６は、動作コンテキストを切り替える場合にオペレーティングシステム再開ベクトルにジャンプするプロセス６００の一例である。プロセス６００は、ＢＩＯＳ内の論理として実施することができる。そのような論理を用いて、スタンバイモードである複数のＯＳを管理することができる。ＢＩＯＳは、どのＯＳ再開ベクトルが起動されるかを制御するか、又は決定する。したがって、コンテキストが切り替えられる場合、現在の再開ベクトルは以前の再開ベクトルに切り替えられる。切り替えを実行するために、現在の再開ベクトルのロケーションを一時的な記憶装置に書き込み、新しい宛先ＯＳにアクティブな古い再開ベクトルをリストアし、それを現在の再開ベクトルとして確立し、最終的に、その古い再開ベクトルを用いることができる。これは、コンテキストを失わずに様々な再開ベクトル間で安全に往復して「ピンポン」する能力を提供することができる。或る特定の実施態様では、確保されたメモリ領域を実施して、このデータをＢＩＯＳのコンテキスト内に保持することができる。ＢＩＯＳは、コンテキストの切り替えを理解する計算プラットフォーム内のエンティティである。ＯＳの再開ベクトルへのジャンプが行われるブロック３１６後、ブロック６０２において、ＳＭＭが呼び出された場合に再開するメモリ領域のコピーの保存が実行される。特に、実行される保存は、切り替え元のＯＳに関連付けられた任意の他の必要なデータとともに、古い再開ベクトルデータである。これは、データの損失を回避することを可能にし、将来にリストアし再び切り替える能力を可能にする。ブロック６０４において、以前に実行されていない場合、以前のＯＳが再開する、以前のメモリ領域のリストアが実行される。
【００２８】
用いられるメモリ領域は、ＢＩＯＳ内のプライベートに確保されたメモリストアとして見なすことができ、それにより、各動作コンテキストは効率的に、それぞれに確保された「スロット」を有するため、十分なスペースが、「Ｎ」個のコンテキストの確保に割り振られ、他の動作コンテキストをオーバーライトする必要性をなくす。例えば、２つの動作コンテキストが存在する場合、動作コンテキスト１のスロット１が存在し、動作コンテキスト２のスロット２が存在することができる。したがって、動作コンテキスト１から動作コンテキスト２に切り替える場合、動作コンテキスト１に関連付けられたアクティブ情報をスロット＃１に保存することができる。スロット＃２の再開ベクトル等の現在のアクティブな設定に用いられるデータは、スロット＃２から読み出すことができる。ブロック６０６において、ブートストラッププロセスが実行され、このプロセスは、メモリ領域を、代替のＯＳ再開ベクトルにジャンプすることができるようにするコードで置換することを含む。特に、ブロック６０６において、各プライベートストア又は「スロット」内のデータを用いて、現在の挙動を確立する。したがって、プライベートストア又は「スロット」は、データの「バックアップ」と見なすことができる。実際の構成データ（例えば、現在の再開情報）に、そのようなバックアップからのデータがプログラムされる。「ｍｗａｉｔ」等のコマンドがアプリケーションプロセスに用いられて、電力状態を設定することができる。ブロック６０８において、再開命令が開始されて、ＳＭＩハンドラープロセスから出る。ＳＭＩハンドラープロセスは、様々な事象によって開始することができるが、この例では、ＳＭＩハンドラープロセスは、ＳＭＩをトリガーする、スタンバイ状態すなわちＳ３状態になるＡＣＰＩ  Ｓ状態移行によって定義されるように開始される。したがって、ブロック６０２は、ＳＭＩハンドラーに入る場合であり、ブロック６０８はＳＭＩハンドラーから出ることである。ブロック６１０において、上述したように、動作はブロック３１８に続く。
【００２９】
ＢＩＯＳプロセス
上述したように、実施態様は、コンピューティングデバイスのＢＩＯＳを用いて実行することができる。一般に、ＢＩＯＳは、「電源投入」からの動作を実行して、コンピューティングデバイスのＯＳにハンドオフする。ＢＩＯＳ動作は様々なフェーズを含むことができる。ＢＩＯＳの部分は、統合拡張ファームウェアインターフェースすなわちＵＥＦＩ又はＥＦＩとすることができる。Ｐｒｅ−ＥＦＩすなわちＰＥＩは、コンピューティングデバイスＢＩＯＳ初期化の早期フェーズである。ドライバー実行環境すなわちＤＸＥは、コンピューティングデバイスのＢＩＯＳ初期化の後半で行われる。ＤＸＥは、ＢＩＯＳでの、ＯＳが起動される場所である。
【００３０】
スタンバイ状態すなわちＳ３状態では、メモリ（すなわち、ＲＡＭ）への保存により、多くの初期化を再び行う必要がないため、ＯＳへの再開は比較的迅速に行うことができる。スタンバイ状態すなわちＳ３状態では、起動はＰＥＩフェーズにあることができる。ＤＸＥは、ＯＳを少なくとも１回ブートすべき場合に実施され、各ＯＳの完全なＢＩＯＳ初期化の一部である。ＯＳブートは、少なくとも１回実施されて、スタンバイ状態すなわちＳ３状態になる。
【００３１】
一般に、Ｓ３フロー又はＳ３モードのいずれかで、ＰＥＩにおいてブートアップする場合、ブートターゲットＯＳが以前のターゲットであったか否かが判断される。例えば、Ｗｉｎｄｏｗｓ（登録商標）ＯＳからＳ３モードに入り、Ｗｉｎｄｏｗｓ（登録商標）ＯＳから戻る。この事例が当てはまる場合、通常フローが再開される。この事例が当てはまらない場合、代替のフロー又はＯＳ再開ベクトルへの切り替えが実行される。他のＯＳが起動され、スタンバイ状態すなわちＳ３状態になりつつあるか否かが判断される。判断が真ではない場合、プロセスはＤＸＥ及び通常のブートフローに進み、ＤＸＥにおいてＯＳを起動する。
【００３２】
図７は、動作コンテキストを切り替える場合に、事前のＰｒｅ−ＥＦＩすなわちＰＥＩにおいてスリープ状態から復帰するプロセス７００の一例である。プロセス７００は、ＢＩＯＳによって実施することができる。ブロック７０２において、電源投入が開始されるか、又は以前のＢＩＯＳフローからの復帰が開始される。ブロック７０４において、ブートモードがスタンバイ状態すなわちＳ３状態から再開中であるか否かが判断される。
【００３３】
スタンバイ状態すなわちＳ３状態からのブートモードが再開されない場合、ブロック７０４の「ＮＯ」分岐を辿り、ブロック７０６において、非スタンバイ状態すなわち非Ｓ３状態が実行される。ブロック７０８において、ブートターゲットが第２のＯＳ又は他のＯＳからのものであるか否かが判断される。ブロック７０８の「ＮＯ」分岐を辿り、既存又は第１のＯＳブートフローが続く。ブロック７１２において、ハンドオフブロックが設定されて、ブートターゲットが既存のＯＳ又は第１のＯＳであることを示す。ブロック７１４において、ＢＩＯＳプロセスが継続される。ブロック７０８の「ＹＥＳ」分岐を辿り、ブロック７１６において、非スタンバイ状態すなわち非Ｓ３フローが実行される。ブロック７１８において、ハンドオフブロックが設定されて、ブートターゲットが第２のＯＳ又は他のＯＳであることを示す。ブロック７１４において、ＢＩＯＳが継続される。
【００３４】
スタンバイ状態すなわちＳ３状態からのブートモードが再開される場合、ブロック７０４の「ＹＥＳ」分岐を辿り、ブロック７２０において、Ｓ３フローが続く。ブロック７２２において、ブートターゲットが以前のブートターゲットからのものであるか否かが判断される。ブロック７２２の「ＹＥＳ」分岐を辿り、ブロック７２４において、通常の再開フローが続く。ブロック７２２の「ＮＯ」分岐を辿り、代替のＯＳ再開ベクトルへの切り替えが実行される。ブロック７２８において、ＯＳがスタンバイ状態すなわちＳ３状態からブートされたか否かが判断される。ブロック７２８の「ＮＯ」分岐を辿り、ブロック７０８が実行される。７２８の「ＹＥＳ」分岐を辿り、ブロック７３０において、コンテキストが保存され、代替のＯＳ再開ベクトルにジャンプする。
【００３５】
図８は、動作コンテキストを切り替える場合に、ＤＸＥにおいてスリープ状態から復帰するプロセス８００の一例である。プロセス８００は、ＢＩＯＳによって実施することができる。ブロック８０２において、ブートオプションフローが実行される。ブロック８０４において、ＯＳ切り替えＢＩＯＳオプションがイネーブルされるか否かが判断される。ブロック８０４の「ＮＯ」分岐を辿り、ブロック８０６において、ＰＥＩフェーズからのハンドオフブロックが切り替えを示すか否かが判断される。ブロック８０６の「ＹＥＳ」分岐を辿り、ブロック８０８において、ブートオプションは、代替のＯＳを含むメモリストアを指すように変更される。ブロック８０６の「ＮＯ」分岐を辿り、ブロック８１０において、ＢＩＯＳプロセスが継続される。ＯＳ切り替えＢＩＯＳオプションがイネーブルされる場合、ブロック８０４の「ＹＥＳ」分岐を辿り、動作コンテキストの呼び出しをトリガーした開始ホットキー又は開始アプレットをディセーブルするコードが適用される。ブロック８１０において、ＢＩＯＳプロセスが継続される。
【００３６】
コンピューティングデバイスの例
図９は、動作コンテキストの切り替えを実施するコンピューティングデバイス９００の一例を示す。上述したように、コンピューティングデバイス９００は、例えばタブレット、ラップトップコンピュータ等の様々な装置を含むことができる。
【００３７】
コンピューティングデバイス９００は、１つ又は複数のプロセッサであるプロセッサ９０２を含む。プロセッサ９０２は、１つの処理ユニット又は幾つかの処理ユニットとすることができ、それらは全て１つ若しくは複数の計算ユニット又は複数のコアを含むことができる。プロセッサ９０２は、１つ又は複数のマイクロプロセッサ、マイクロコンピュータ、マイクロコントローラー、デジタル信号プロセッサ、中央演算処理装置、状態マシン、論理回路、及び／又は動作命令に基づいて信号を操作する任意の装置として実施することができる。機能の中でも特に、プロセッサ９０２は、メモリ９０４又は他のコンピュータ可読記憶媒体に記憶されたコンピュータ可読命令又はプロセッサアクセス可能な命令をフェッチして実行するように構成することができる。
【００３８】
メモリ９０４は、命令を記憶するコンピュータ可読記憶媒体の一例であり、命令は、プロセッサ９０２によって実行されると、プロセッサ９０２に、上述した様々な機能を実行させる。例えば、メモリ９０４は一般に、揮発性メモリ及び不揮発性メモリ（例えば、ＲＡＭ、ＲＯＭ等）の両方を含むことができる。メモリ９０４は、本明細書ではメモリ又はコンピュータ可読記憶媒体と呼ぶことができる。メモリ９０４は、コンピュータ可読のプロセッサ実行可能なプログラム命令をコンピュータプログラムコードとして記憶することが可能であり、コンピュータプログラムコードは、本明細書で実施態様において説明される動作及び機能を実行するように構成される特定のマシンとしてプロセッサ９０２によって実行することができる。
【００３９】
メモリ９０４は、１つ又は複数のオペレーティングシステム９０６を含むことができ、１つ又は複数のアプリケーション９０８を記憶することができる。オペレーティングシステム９０６は、パーソナルコンピュータ、視聴覚装置等に実施される様々な既知のオペレーティングシステム及び将来のオペレーティングシステムの１つとすることができる。アプリケーション９０８は、予め構成／インストールされたアプリケーション及びダウンロード可能なアプリケーションを含むことができる。加えて、メモリ９０４はデータ９１０を含むことができる。オペレーティングシステム９０６及びアプリケーション９０８は、上述したように動作コンテキストを定義することができる。
【００４０】
メモリ９０４は特に、ランダムアクセスメモリ又はＲＡＭ９１２を含み、ＲＡＭ９１２に、上記プロセスは、スタンバイ状態すなわちＳ３状態である間に情報を記憶する。さらに、ＢＩＯＳ９１４はメモリ９０４に含まれる。ＢＩＯＳ９１４は読み取り専用メモリ（ＲＯＭ）に記憶することができる。
【００４１】
コンピューティングデバイス９００はメモリコントローラー９１６を含む。スタンバイ状態すなわちＳ３状態にある間、メモリコントローラー９１６を用いてメモリ内の動作を実行することができる。ＲＡＭ９１２は自己リフレッシュモードに保つことができ、それにより、ＲＡＭ９１２は、コンピューティングデバイスを作動状態（alive）に保つ最小のコンテキストを保持することができる。したがって、プロセッサ９０２及びコンピューティングデバイスの他の装置が復帰するとき、メモリが待機している。これにより、スタンバイ状態すなわちＳ３状態は、アプリケ−ション９０８が実行中の場合と比較して低電力消費状態であることができる。
【００４２】
コンピューティングデバイスは、モニター、キーボード、ポインティングデバイス等の、様々な内部装置、外部装置、及び周辺機器に接続される入出力装置９１８を更に含むことができる。様々な既知のインターフェース及び将来のインターフェースを入出力装置９１８に含むことができる。特に、入出力装置９１８は、既存の動作コンテキスト又は異なる動作コンテキストへの移行を開始することができる、予めインストールされるか又はユーザーによってプログラムされるホットキーへのアクセスを提供することができる。
【００４３】
本明細書に記載のコンピューティングデバイス９００の例は、幾つかの実施態様に適する単なる一例であり、本明細書に記載のプロセス、構成要素、及び特徴を実施することができる環境、アーキテクチャ、及びフレームワークの使用又は機能の範囲としてのいかなる限定も示唆することを意図されない。
【００４４】
概して、図を参照して説明したいかなる機能も、ソフトウェア、ハードウェア（例えば、固定論理回路）、又はこれらの実施態様の組み合わせを用いて実施することができる。プログラムコードは、１つ又は複数のコンピュータ可読メモリ装置又は他のコンピュータ可読記憶装置に記憶することができる。したがって、本明細書に記載のプロセス及び構成要素はコンピュータプログラム製品によって実施することができる。
【００４５】
上述したように、コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータ等の情報を記憶する任意の方法又は技術で実施される揮発性媒体、不揮発性媒体、リムーバブル媒体、及び非リムーバブル媒体を含む。コンピュータ記憶媒体は、限定ではなく、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、若しくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル汎用ディスク（ＤＶＤ）、若しくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、若しくは他の磁気記憶装置、又はコンピューティングデバイスによるアクセスについての情報の記憶に用いることができる任意の他の媒体を含む。
【００４６】
メモリ割り振り例
図１０を参照すると、ＲＡＭ９１２は、プロセスに関して上述した情報／データにセクションを割り振ることができるか、又は確保されたセクションを有することができる。ＴＳＥＧ１０００は、ＳＭＭがＣＰＵ又はプロセッサ９０２の初期化について定義する、メモリ内のセグメントである。ＴＳＥＧ１０００は、ＳＭＭコードと、ＳＭＭに関連付けられた論理とを含む。確保されたＯＳ切り替えコンテキスト１００２は、切り替え先又は切り替え元とすることができる複数の動作コンテキストに関連付けられた情報の追加の保存及びリストアを達成するのに、ＢＩＯＳのオーバーヘッドとして確保される領域である。ＯＳ１メモリページ１００４及びＯＳ２メモリページ１００６は、特定のＯＳのセクションである。他のＯＳを実施することもでき、そのようなＯＳにＲＡＭ９１２内のセクションを確保可能なことを理解されたい。互換性アドレス範囲１０１０は、特定のＯＳにアクセスするためのアドレスである。ＲＡＭ９１２のセクション（複数の場合もある）は、動作コンテキストの切り替えに関連する他のデータ及び情報１００８に確保することができる。残りのＲＡＭ１０１２は、説明されたプロセスに用いられないＲＡＭ９１２のセクションを示す。
【００４７】
本発明による実現について、特定の実施形態のコンテキストの中で説明した。これらの実施形態は例示を意味し、限定を意味しない。多くの変形、変更、追加、及び改善が可能である。したがって、単一の事例として本明細書に記載される構成要素に、複数の事例を提供することができる。様々な構成要素、動作、及びデータストア間の境界はいくらか任意的なものであり、特定の動作が、特定の例示的な構成の文脈の中で示される。機能の他の割り振りが考えられ、以下の特許請求の範囲の範囲内にあることができる。最後に、様々な構成で離散した構成要素として提示される構造及び機能は、組み合わせられた構造又は構成要素として実施することも可能である。これら及び他の変形、変更、追加、及び改善は、以下の特許請求の範囲において規定される本発明の範囲内にあることができる。
【図１】
2014531099.tif 000003
【図２】
2014531099.tif 000004
【図３】
2014531099.tif 000005
【図４】
2014531099.tif 000006
【図５】
2014531099.tif 000007
【図６】
2014531099.tif 000008
【図７】
2014531099.tif 000009
【図８】
2014531099.tif 000010
【図９】
2014531099.tif 000011
【図１０】
2014531099.tif 000012
【国際調査報告】
2014531099.tif 000013
2014531099.tif 000014