(57)【特許請求の範囲】
【請求項１】
プロセッサと、
複数のアプリケーションに対応したポリシー情報に基づき、かつ前記プロセッサが低消費電力状態を出た後に、複数のアプリケーションのうちの一以上のアプリケーションが、実行されることを可能にするロジックとを有し、
前記ポリシー情報は、前記プロセッサが前記低消費電力状態を出た後に、前記複数のアプリケーションのうちのどのアプリケーションがウェイクアップされるかを示し、
前記ロジックは、前記ポリシー情報に基づき、かつ前記プロセッサが前記低消費電力状態を出た後に、前記複数のアプリケーションのうちの一以上のアプリケーションに対応する一以上のサブシステムが、パワーオンされることを可能にし、
前記ポリシー情報は、前記一以上のサブシステムのどのパワー状態が前記複数のアプリケーションの一以上のアプリケーションのどれに対応するかを示す、
装置。
【請求項２】
前記ロジックは、前記複数のアプリケーションの一以上のアプリケーションのどれが前記プロセッサを前記低消費電力状態からウェイクアップすることを可能にするか優先順序を決める、請求項１に記載の装置。
【請求項３】
前記複数のアプリケーションは、プラットフォームが低消費電力状態にされたときにアクティブでない一以上のplatform-power-awareアプリケーションまたは前記プラットフォームが低消費電力状態にされたときにアクティブである一以上のplatform-power-unawareアプリケーションを含む、
請求項１に記載の装置。
【請求項４】
前記プロセッサは複数のプロセッサコアを含む、
請求項１に記載の装置。
【請求項５】
メモリ、前記プロセッサ、及び前記ロジックのうちの一または複数は、同じ集積回路デバイス上にある、請求項１に記載の装置。
【請求項６】
プロセッサと、
複数のアプリケーションに対応したポリシー情報に基づき、前記複数のアプリケーションのうちの一以上のアプリケーションが、前記プロセッサを、低消費電力状態から出させることを可能にするロジックとを有し、
前記ポリシー情報は、前記複数のアプリケーションのうちのどのアプリケーションが、前記プロセッサを前記低消費電力状態から出させることを可能にされるかを示し、
前記ロジックは、前記ポリシー情報に基づき、前記複数のアプリケーションのうちの一以上のアプリケーションに対応する一以上のサブシステムが、前記プロセッサを前記低消費電力状態から出ださせることを可能にし、
前記ポリシー情報は、前記一以上のサブシステムのどのパワー状態が前記複数のアプリケーションの一以上のアプリケーションのどれに対応するかを示し、
装置。
【請求項７】
前記ロジックは、前記複数のアプリケーションの一以上のアプリケーションのどれが前記プロセッサを前記低消費電力状態からウェイクアップすることを可能にするか優先順序を決める、請求項６に記載の装置。
【請求項８】
前記複数のアプリケーションは、プラットフォームが低消費電力状態にされたときにアクティブでない一以上のplatform-power-awareアプリケーションまたは前記プラットフォームが低消費電力状態にされたときにアクティブである一以上のplatform-power-unawareアプリケーションを含む、
請求項６に記載の装置。
【請求項９】
前記プロセッサは複数のプロセッサコアを含む、
請求項６に記載の装置。
【請求項１０】
メモリ、前記プロセッサ、及び前記ロジックのうちの一または複数は、同じ集積回路デバイス上にある、請求項６に記載の装置。
【請求項１１】
プロセッサにより実行された時に、前記プロセッサに、
複数のアプリケーションに対応したポリシー情報に基づき、かつ前記プロセッサが低消費電力状態を出た後に、複数のアプリケーションのうちの一以上のアプリケーションが実行されることを可能にし、
前記ポリシー情報は、前記プロセッサが前記低消費電力状態を出た後に、前記複数のアプリケーションのうちのどのアプリケーションがウェイクアップされるかを示し、
前記プロセッサに、前記ポリシー情報に基づき、かつ前記プロセッサが前記低消費電力状態を出た後に、前記複数のアプリケーションのうちの一以上のアプリケーションに対応する一以上のサブシステムが、パワーオンされることを可能にし、
前記ポリシー情報は、前記一以上のサブシステムのどのパワー状態が前記複数のアプリケーションの一以上のアプリケーションのどれに対応するかを示す、命令を格納したコンピュータ読み取り可能媒体。
【請求項１２】
前記命令は、前記プロセッサに、前記複数のアプリケーションの一以上のアプリケーションのどれが前記プロセッサを前記低消費電力状態からウェイクアップすることを可能にするか優先順序を決めさせる、請求項１１に記載のコンピュータ読み取り可能媒体。
【請求項１３】
前記複数のアプリケーションは、プラットフォームが低消費電力状態にされたときにアクティブでない一以上のplatform-power-awareアプリケーションまたは前記プラットフォームが低消費電力状態にされたときにアクティブである一以上のplatform-power-unawareアプリケーションを含む、
請求項１１に記載のコンピュータ読み取り可能媒体。
【請求項１４】
前記プロセッサに結合したメモリがオペレーティングシステムソフトウェアを格納する、請求項１１に記載のコンピュータ読み取り可能媒体。
【請求項１５】
プロセッサにより実行された時に、前記プロセッサに、
複数のアプリケーションに対応したポリシー情報に基づき、前記複数のアプリケーションのうちの一以上のアプリケーションが、前記プロセッサを、低消費電力状態から出させることを可能にし、
前記ポリシー情報は、前記複数のアプリケーションのうちのどのアプリケーションが、前記プロセッサを前記低消費電力状態から出させることを可能にされるかを示し、
前記プロセッサに、前記ポリシー情報に基づき、かつ前記プロセッサが前記低消費電力状態から出た後に、前記複数のアプリケーションののうちの一以上のアプリケーションに対応する一以上のサブシステムが、前記プロセッサを前記低消費電力状態から出ださせることを可能にさせ、
前記ポリシー情報は、前記一以上のサブシステムのどのパワー状態が前記複数のアプリケーションの一以上のアプリケーションのどれに対応するかを示す、
命令を格納したコンピュータ読み取り可能媒体。
【請求項１６】
前記命令は、前記プロセッサに、前記複数のアプリケーションの一以上のアプリケーションのどれが前記プロセッサを前記低消費電力状態からウェイクアップすることを可能にするか優先順序を決めさせる、請求項１５に記載のコンピュータ読み取り可能媒体。
【請求項１７】
前記複数のアプリケーションは、プラットフォームが低消費電力状態にされたときにアクティブでない一以上のplatform-power-awareアプリケーションまたは前記プラットフォームが低消費電力状態にされたときにアクティブである一以上のplatform-power-unawareアプリケーションを含む、
請求項１５に記載のコンピュータ読み取り可能媒体。
【請求項１８】
前記プロセッサに結合したメモリがオペレーティングシステムソフトウェアを格納する、請求項１５に記載のコンピュータ読み取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概してエレクトロニクスの分野に関する。より具体的には、本発明の一実施形態は、コンピューティング装置において消費電力を低減する優先度に基づくアプリケーションイベント制御（Priority  Based  Application  Event  Control、ＰＡＥＣ）に関する。
【背景技術】
【０００２】
概して、コンピューティング装置において最も消費電力が大きいコンポーネントのひとつはプロセッサである。消費電力を低減するため、いくつかの実装では、プロセッサをできるだけ頻繁かつ長くスリープモードやスタンバイモードにするように試みている。しかし、これらの試みは、例えば、システム内の他のコンポーネントにより引き起こされる様々なイベントの生起により失敗することがあり、これによりプロセッサは低消費電力状態から出ざるを得ない。
【０００３】
同様に、消費電力が大きいと、発熱も大きくなる。過熱によりコンピュータシステムのコンポーネントが損傷する可能性がある。さらに、電力利用量が大きいと、例えば、携帯型コンピューティング装置では、バッテリー消費が大きくなり、それにより、携帯型装置が充電までに動作する時間が短くなる。消費電力の増加により、より大きいバッテリーの利用が必要となり、より重くなる。バッテリーが重いと、携帯型コンピューティング装置の携帯性や有用性が低下する。
【０００４】
したがって、全体的なシステム消費電力（system  power  consumption  and  utility）は、プロセッサがどのくらい長く低消費電力状態に維持されるかに直接関係してくる。
【図面の簡単な説明】
【０００５】
詳細な説明は、添付した図面を参照して行う。図中、参照数字の最も左の桁は、その参照数字が最初に現れる図面を指す。異なる図面で同じ参照番号を用いて、同様の又は同一のアイテムを示す。
【図１】ここに説明する様々な実施形態を実装するのに利用可能なコンピューティングシステムの実施形態を示すブロック図である。
【図２】一実施形態による、コンピューティングシステムのプロセッサコアその他のコンポーネントの一部を示すブロック図である。
【図３】ここに説明する様々な実施形態を実装するのに利用可能なコンピューティングシステムの実施形態を示すブロック図である。
【図４】いくつかの実施形態によるフローダイヤグラムを示す図である。
【図５】ここに説明する様々な実施形態を実装するのに利用可能なコンピューティングシステムの実施形態を示すブロック図である。
【図６】ここに説明する様々な実施形態を実装するのに利用可能なコンピューティングシステムの実施形態を示すブロック図である。
【発明を実施するための形態】
【０００６】
以下の説明では、様々な実施形態をよく理解してもらうために、具体的な詳細事項を多数記載する。しかし、本発明の様々な実施形態はこれらの具体的な詳細事項がなくても実施することができる。他の場合には、本発明の具体的な実施形態を分かりにくくしないように、周知の方法、手順、コンポーネント、回路は詳細には説明していない。さらに、本発明の実施形態の様々な態様は、集積半導体回路（「ハードウェア」）、一又は複数のプログラムに組織化されたコンピュータ読み取り可能命令（「ソフトウェア」）、又はハードウェアとソフトウェアの組合せなどの様々な手段を用いて実行できる。本開示の目的において、「ロジック」とはハードウェア、ソフトウェア、ファームウェアまたはこれらの組み合わせのどれかを意味するものとする。また、「命令」と「マイクロオペレーション（μop）」は、ここでの説明では交換可能である。
【０００７】
ここに説明するいくつかの実施形態は、プロセッサが低消費電力状態を出るようにするアプリケーションイベントの数を低減する優先度アプリケーションイベントコントロール（Priority  Based  Application  Event  Control、ＰＡＥＣ）を利用できる。いくつかの実施形態では、ＰＡＥＣは携帯型装置やその他のタイプのコンピューティング装置で利用し得る。一実施形態では、ＰＡＥＣ法は、ハードウェア（例えば、システムオンチップ（ＳｏＣ）やオンダイシステムファブリック（ＯＳＦ））をレバレッジして、アプリケーション（「apps」）に優先度を割り当て、これらのアプリケーション優先度またはアプリケーションを複数のプラットフォームサブシステム状態（モード）に関連づけ、例えば、ＱＯＳ（Quality  Of  Service）やユーザ体験を犠牲にせずに、優先度及び／またはポリシー設定（policy  configuration）に基づいてplatform-power-awareアプリケーション及び／またはplatform-power-unawareアプリケーションの両方により発生するプラットフォームイベントを制御する。一実施形態では、ＰＡＥＣは、プラットフォームサブシステムにアプリケーションを関連付け、例えば、ＱＯＳの要請及び／またはユーザ体験に影響せずに、どのアプリケーションがシステムまたはプロセッサをウェイクアップするか、システムウェイクアップまたはプロセッサウェイクアップ後に、どのアプリケーションが実行されねばならないか又はできるかなどを指定及び／または優先度設定するメカニズムを提供することにより、きめ細かい電力管理を提供する。
【０００８】
いくつかの実施形態では、（プロットフォーム／システム及び／またはプロセッサが低消費電力状態に入った後の）一または複数のアプリケーションの再開は、ポリシー（ここでは、交換可能に設定とも呼ぶ）情報または設定に基づき、ＰＡＥＣにより制限され得る。この情報は、いくつかの実施形態では、ランタイム中に適合及び変更され得る。さらにまた、このポリシー情報は、プラットフォーム／システム及び／またはプロセッサが低消費電力状態から一旦出たら、一または複数のアプリケーション及び／またはそれらの関連サブシステムをウェイクアップするか、どの順序でするか、どれをするかに関する情報を含む。一実施形態では、ポリシー情報は、どのアプリケーション及び／またはサブシステムがシステムをウェイクアップするか示す及び／または優先度設定してもよい。
【０００９】
ここで説明する手法は、図１、２、５及び６を参照して説明するシステムなどの任意タイプのコンピューティングシステムで用いることができる。より具体的に、図１は、本発明の一実施形態によるコンピューティングシステム１００を示すブロック図である。システム１００は、一または複数のプロセッサ１０２−１ないし１０２−Ｎ（ここでは「複数のプロセッサ１０２」または「プロセッサ１０２」と総称する）を含む。複数のプロセッサ１０２は、相互接続ネットワークまたはバス１０４を介して通信できる。各プロセッサは様々なコンポーネントを含み、そのうちのいくつかのコンポーネントについては、明確性のためプロセッサ１０２−１のみを参照して説明する。したがって、残りの各プロセッサ１０２−２ないし１０２−Ｎは、プロセッサ１０２−１を参照して説明するのと同じまたは同様のコンポーネントを含み得る。
【００１０】
一実施形態では、プロセッサ１０２−１は、一または複数のプロセッサコア１０６−１ないし１０６−Ｍ（ここで、「複数のコア１０６」またはより一般的には「コア１０６」と総称する）、共有キャッシュ１０８、ルータ１１０及び／またはロジック１２０を含み得る。プロセッサコア１０６は、１つの集積回路（ＩＣ）チップ上に実装できる。さらに、チップは、一または複数の共有キャッシュ及び／またはプライベートキャッシュ（例えば、キャッシュ１０８）、バスまたは相互接続（例えば、バスまたは相互接続ネットワーク１１２）、メモリコントローラ（例えば、図５、６を参照して説明するもの）、またはその他のコンポーネントを含み得る。
【００１１】
一実施形態では、ルータ１１０は、プロセッサ１０２−１及び／またはシステム１００の様々なコンポーネント間の通信に用いられ得る。さらに、プロセッサ１０２−１は２以上のルータ１１０を含み得る。さらに、複数のルータ１１０は、プロセッサ１０２−１の内部または外部の様々なコンポーネント間のデータルーティングを可能にするように通信する。
【００１２】
共有キャッシュ１０８は、コア１０６などのプロセッサ１０２−１の一または複数のコンポーネントにより利用されるデータ（例えば、命令を含む）を格納する。例えば、共有キャッシュ１０８は、プロセッサ１０２のコンポーネントによるより速いアクセスのために、メモリ１１４に格納されたデータをローカルでキャッシュできる。一実施形態では、キャッシュ１０８は、ミッドレベルキャッシュ（例えば、レベル２（Ｌ２）、レベル３（Ｌ３）、レベル４（Ｌ４）またはその他のキャッシュレベル）、ラストレベルキャッシュ（LLC）、及び／またはこれらの組み合わせを含む。さらに、プロセッサ１０２−１の様々なコンポーネントは、直接的に、バス（例えば、バス１１２）を通して、及び／またはメモリコントローラまたはハブを通して、共有キャッシュ１０８と通信できる。図１に示したように、いくつかの実施形態では、複数のコア１０６のうちの一または複数のコアは、レベル１（Ｌ１）キャッシュ１１６−１（ここでは「Ｌ１キャッシュ１１６」と総称する）を含み得る。
【００１３】
一実施形態では、ＰＡＥＣロジック１２０は、プロセッサ／プラットフォームを低消費電力状態から出させるアプリケーションイベントの数を低減し、プロセッサ／プラットフォームが低消費電力状態を出た後のアプリケーションによる動作の再開（及び対応するサブシステムのパワーオン）を制約し得る。ロジック１２０は、メモリ１１４に格納できるアプリケーション（「apps」）に優先度を割り当て、さらに、プラットフォームサブシステム状態（モード）をアプリケーションに関連づけて、例えば、ＱＯＳ（Quality  of  Service）やユーザ体験を犠牲にすることなく、アプリケーション優先度及び／またはポリシー設定に基づき、platform-power-awareアプリケーション及び／またはplatform-power-unawareアプリケーションにより発生するプラットフォームイベントを制御する。いくつかの実施形態では、ロジック１２０により実行される演算は、（いくつかの実施形態では、ユーザインタフェース（例えば、図３のＵＩ３１４）からの情報に基づき）（例えば、メモリ１１４に格納され得る）ＯＳ及び／またはソフトウェアアプリケーションを介して、ユーザまたはＯＥＭにより、制御または設定され得る。また、アプリケーション優先度及び／またはアプリケーションポリシー設定に関する情報は、例えば、メモリ１１４及び／またはキャッシュ１０８／１１６などを含む、ここで説明するメモリのどれに格納されてもよい。
【００１４】
図２は、本発明の一実施形態による、コンピューティングシステムのプロセッサコア１０６その他のコンポーネントの一部を示すブロック図である。一実施形態では、図２に示した矢印は、コア１０６における命令が流れる方向を示す。（プロセッサコア１０６などの）一または複数のプロセッサコアを、図１を参照して説明したように、１つの集積回路チップ（すなわちダイ）に実装できる。さらに、チップは、一または複数の共有キャッシュ及び／またはプライベートキャッシュ（例えば、図１のキャッシュ１０８）、相互接続（例えば、図１の相互接続１０４及び／または１１２）、制御部、メモリコントローラ、その他のコンポーネントを含み得る。
【００１５】
図２に示すように、プロセッサコア１０６は、実行する命令（条件分岐を含む命令を含む）をフェッチするフェッチ部２０２を含み得る。命令は、メモリ１１４、及び／または図５ー６を参照して説明するメモリデバイスなどの任意のストレージデバイスからフェッチできる。コア１０６は、フェッチされた命令をデコードするデコード部２０４も含み得る。例えば、デコード部２０４は、フェッチされた命令を複数のuops（マイクロオペレーション）にデコードする。また、コア１０６はスケジュール部２０６を含み得る。スケジュール部２０６は、（例えば、デコード部２０４から受け取った）デコードされた命令がディスパッチできるようになるまで、例えば、デコードされた命令のすべてのソース値が利用可能になるまで、その命令の格納に関連する様々なオペレーションを実行し得る。一実施形態では、スケジュール部２０６は、スケジュールして、デコードされた命令を、実行部２０８に実行のため発行（すなわちディスパッチ）し得る。実行部２０８は、命令が（例えば、デコード部２０４により）デコードされ、（例えば、スケジュール部２０６により）ディスパッチされた後、ディスパッチされた命令を実行し得る。一実施形態では、実行部２０８は２以上の実行部を含み得る。また実行部２０８は、加法、減法、乗法及び／または除法などの様々な算術演算を実行し、一または複数の算術論理演算部（ＡＬＵ）を含み得る。一実施形態では、コプロセッサ（図示せず）が実行部２０８と共に様々な算術演算を実行できる。
【００１６】
さらに、実行部２０８は、命令をout-of-orderで実行できる。よって、プロセッサコア１０６は一実施形態ではout-of-orderプロセッサであり得る。コア１０６は、リタイアメント部２１０も含む。リタイアメント部２１０は、実行された命令がコミットされた後に、その命令をリタイア（retire）し得る。一実施形態では、実行された命令のリタイアメントの結果、例えば、プロセッサ状態が命令実行からコミットされ、命令により使用された物理的レジスタがデ・アロケート（de-allocate）される。
【００１７】
コア１０６は、プロセッサコア１０６のコンポーネントと他のコンポーネント（図１を参照して説明したコンポーネントなど）との間の、一または複数のバス（例えば、バス１０４及び／または１１２）を介した通信を可能にするバス部２１４も含む。またコア１０６は、コア１０６の様々なコンポーネントによりアクセスされるデータ（例えば、割り当てられたアプリケーション優先度及び／またはサブシステム状態（モード）アソシエーションに関連する値）を格納する一または複数のレジスタ２１６を含み得る。
【００１８】
さらにまた、図１にはＰＡＥＣロジック１２０が相互接続１１２を介してコア１０６に結合されているものとして図示したが、様々な実施形態では、ＰＡＥＣロジック１２０は他のところにあってもよく、例えばコア１０６内にあっても、バス１０４を介してコアに結合されていても、その他の形態であってもよい。
【００１９】
さらに、現世代のスマートフォンやネットブックのプラットフォームは、ＯＳＰＭ（Operating  System  Power  Management）、ＰＭＵ（Power  Management  Unit）、及びＳＣＵ（System  Controller  Unit）を介した粒度の細かいパワーマネジメントをサポートし得る。ＳＣＵは、オペレーティングシステムと共に、Always  On  Always  Connected（ＡＯ  ＡＣ）機能をプラットフォームに提供し得る。ＳＣＵは、ＯＳパワーマネージャの誘導に基づき、プラットフォームにおける（ＣＰＵ（Central  Processing  Unit）やプロセッサを含む）異なるサブシステムに対して、正しいパワーレベルを判断し得る。タイマー割り込みや通信（Ｃｏｍｍｓ）モジュールからの割り込みなどの外部イベントは、ＳＣＵによりＣＰＵに転送され、ＣＰＵをウェイクアップし得る。サブシステム割り込みとは別に、ＣＰＵは、ＡＯ  ＡＣ機能を提供するタイマーやイベントのために、アプリケーション（ａｐｐｓ）によりウェイクアップされ得る。これらのウェイクアップにより、ＣＰＵのスリープ状態またはディープスリープ状態にいるレジデンシー時間（residency  time）が短くなり、消費電力が増加する。また、パワーマネージャエンティティがプラットフォームをスタンバイ／スリープモードにしたとしても、プラットフォームpower-unawareアプリケーションはアクティブであり、その結果ＣＰＵその他のサブシステムはウェイクアップされる。また、アプリケーションは、考慮しているリソースに変化がなくても、タイマーを設定し、ＣＰＵを定期的にウェイクアップし得る。
【００２０】
さらにまた、現在のいくつかのプラットフォームは、外部イベントの融合（coalescing）をサポートし、いくつかのウェイク設定に基づき、イベント（ウェイク）を待ち、またはデリバー（deliver）し得る。現在の実装は、概して、プラットフォーム中のアプリケーションに優先度を割り当てて、これらのアプリケーション優先度をプラットフォームの異なるオペレーティングモード（例えば、ブラウジング、ビデオ再生など）に関連づけられず、結果として、アプリケーションはフリーズ／解凍できる、すなわちスリープ／ディープスリープ／スタンバイ状態にされ、または強制的にサスペンド状態にされ、または実行が許される。また、概して、どのアプリケーションがサスペンド状態からシステムをウェイクアップでき、プラットフォームがウェイクアップした時、どのアプリケーションが実行されなければならないか、または実行できるかを指定し、優先度設定するメカニズムは存在しない。例えば、現在のいくつかのシステムでは、ＳＣＵは、サブシステム状態のみを制御し、それに関連するアプリケーションは制御しない。また、現在の方法論は、強制的にスリープ／スタンバイ状態にされるアプリケーション／サブシステムにおけるＱＯＳやユーザ体験へのインパクトを考慮していない。
【００２１】
図３は、いくつかの実施形態による、ＰＡＥＣ法が実装され得るシステム３００を示すブロック図である。システム３００は、計算及び記憶機能を設けるため、（図１−２及び５−６を参照して説明するプロセッサのような）ホストＣＰＵ（または、ＧＦＸ（Graphics））３０２、（図１−２及び５−６を参照して説明するメモリのような）メモリ３０４、及び（例えば、サブシステム１ないしＸの一部としての）ドライブを含み得る。概して、図示したサブシステム（例えば、１，２，・・・Ｘ）は、図１−２及び４−６を参照して説明されるコンポーネントなどの、コンピューティングシステム中の任意のコンポーネントであって、パワーゲートでき、及び／またはコンピューティングシステム／プラットフォーム、及び／またはプロセッサをウェイクアップできるコンポーネントを含み得る。
【００２２】
さらにまた、システム３００は次のものを含み得る：ディスプレイ機能を提供するディスプレイコントローラ３０８；必要な任意の暗号オペレーション及び／または盗聴防止実行環境を提供するハードウェアセキュリティエンジン３１０；ＯＳ３１３内で実行されるＯＳコンポーネントとして実装されるＰＡＥＣコンポーネント３１２（ＰＡＥＣ３１２は、一実施形態では、ＯＳ３１３のスケジューラ及びＯＳパワーマネージャに密接に組み込まれ、いくつかの実施形態では、現在実行されているプロセス／プログラムを停止／フリーズ／解凍し、後で再開する機能を有していてもよい）；管理者またはユーザが優先度を指定し、及び／またはそれをプラットフォーム中のサブシステムのモードに関連づける能力を提供するＰＡＥＣ  ＵＩ（User  Interface）３１４（一実施形態では、アプリケーションコンポーネントであってもよい）；ユーザにより設定されたＰＡＥＣポリシー／管理者情報を格納する、盗聴防止された安全なストレージを提供するセキュアストレージ３１６；きめ細かいプラットフォームパワーマネジメントサポートを提供するＳＣ（System  Controller  Unit）及び／またはＰＭＵ（Power  Management  Unit）３１８。
【００２３】
図４は、いくつかの実施形態による、ＰＡＥＣを実施する方法を示すフローダイヤグラムを示す図である。一実施形態では、図４は、ＰＡＥＣロジック１２０の動作、ＰＡＥＣコンポーネント３１２、及び／またはいくつかの実施形態によるＰＡＥＣ  ＵＩ３１４を示す。さらにまた、図４を参照して説明した動作は、図１−３及び５ー６の一または複数のコンポーネントにより実行され得る。
【００２４】
図１−４を参照して、ＰＡＥＣ機能がステップ４０２においてイネーブルされ、（例えば、ユーザ／ＯＥＭ／ＯＳ等により、ビットなどのいくつかの記憶された値により）ＰＡＥＣ  ＵＩがステップ４０３において起動されると、ＰＡＥＣ  ＵＩ３１４は、ステップ４０４において、ユーザに、セキュリティストレージ３１６に格納された現在のポリシー設定を提供し得る。ＰＡＥＣ  ＵＩ３１４は、ステップ４０６において、ユーザに、ポリシー及び／または優先度設定を変更するオプションを提供する。ステップ４０８において、ＰＡＥＣ  ＵＩ３１４により、ユーザまたは管理者は、アプリケーションに優先度を割り振り、それらをサブシステムオペレーティングモード（例えば、ブラウジング、ビデオ再生など）に関連づけて、例えばポリシー設定を更新できる。
【００２５】
一実施形態では、ステップ４０８において、ＯＥＭ、ＯＳ、またはアプリケーションプロバイダにより優先度が割り振られる。さらにまた、一実施形態では、アプリケーション登録の際にアプリケーションにより課されたＱＯＳ  ＡＰＩ（Application  Program  Interface）要請に基づき優先度が決定及び割り振られる。Power-aware-appsは、ＱＯＳ  ＡＰＩを用いて、ＰＡＥＣメカニズム（例えば、アイテム１２０または３１２）が例えばベクトルとして利用して複数のアプリケーションを決定するＱＯＳ要請を指定し得る。ステップ４１０において、ＰＡＥＣは、ポリシー設定に基づき、イベントをウェイクアップする閾値優先度を決定し、システム／プラットフォームが再開した後にフリーズされるアプリケーションのリストを構成する。一実施形態では、閾値優先度により、ＣＰＵをウェイクアップする前に、どのくらいＰＡＥＣがイベントを遅らせてよいか決定できる。
【００２６】
ステップ４１２において、プラットフォームが（例えば、Ｓ０ｉｘ）プラットフォーム低消費電力状態に入ろうとしている時、例えば、いくつかの優先度方式とポリシー設定に基づいて、（例えば、ＰＡＥＣメカニズム１２０または３１２により）すべてのアプリケーションがフリーズされ、プロセス実行が停止される。「S０ix」は、一般的に、周期的なまたはポーリングされたアクティビティに基づく従来のアイドル消費電力状態ではなく、（例えば、ＯＳまたはソフトウェアアプリケーション入力に基づく）イベントドリブンであるプラットフォームレベル消費電力管理により実現される改善されたアイドル消費電力状態をいう。いくつかの実施形態では、少なくともいくつかのここに説明した消費電力状態は、ＡＣＰＩ（Advanced  Configuration  and  Power  Interface）仕様書第４．０ａ版（２０１０年４月５日）で定義されたものに準拠し、例えば次のものを含む：プロセッサが動作していることを示すＣ０；プロセッサが命令を実行していないがすぐに実行状態に戻れることを示すＣ１；プロセッサがすべてのソフトウェアビジブル（software-visible）情報を維持するが、完全な実行状態に戻るにはより長い時間がかかることを示すＣ２；プロセッサがスリープ状態であり、そのキャッシュをコヒーレントに保つ必要がないことを示すＣ３。
【００２７】
一実施形態では、ＰＡＥＣメカニズム（例えば、アイテム１２０または３１２）は、アプリケーション登録または起動の際に得られる情報に基づき、アプリケーションをフリーズする。いくつかの実施形態では、ステップ４１２において、ＰＡＥＣがフリーズすべきでない例外的なアプリケーションの場合、ＰＡＥＣはそれらのアプリケーションに、利用できる最高／最低の優先度を割り当て、それらのウェイクイベントが適宜ＣＰＵに生じる（land）ように構成されていてもよい。ＰＡＥＣは、これらのアプリケーションに関する通知を、またはこれらのアプリケーションに関するログ情報を、例えば、ＰＡＥＣ  ＵＩ３１４を介して、ユーザに送り得る。これにより、ユーザは、将来的にデフォルト設定を書き換えることができる。
【００２８】
ステップ４１４において、コンフィギュレーション設定（configuration  settings）に基づき、ＰＡＥＣメカニズム（例えば、アイテム１２０または３１２）は、選択されたアプリケーションに、システム／プロセッサをウェイクアップさせ、（S０ixなどの低消費電力状態から）ポストレジュームを実行し、対応するサブシステムを低消費電力状態に維持し、CPUが低消費電力状態にいる時間（residency）を長くすることができ、またはそれを制限し得る。また、PAECメカニズム（例えば、アイテム１２０または３１２）は、プラットフォーム（例えば、S０ix）低消費電力状態の間のウェイクイベントの跡を保持して、パラメータの微調整のため、ポリシーマネージャにポリシー設定に関するフィードバックをすることができる。これにより、ＰＡＥＣは、例えば、ランタイム中にウェイクイベントの跡を保持することにより、適応的になる。
【００２９】
様々な実施形態では、ＰＡＥＣは、アプリケーションとサブシステムパワー状態との間の関係を確立して、ＯＳ／アプリケーション／パワーマネージャロジックにより大きな柔軟性を提供して、非常に細かい粒度でパワー低減をする。また、ＰＡＥＣは適応的であってもよく、プラットフォームにおけるＱＯＳまたはユーザ体験に影響を与えなくてもよい。いくつかの実施形態では、ＰＡＥＣは設定可能（configurable）であり、特定のアプリケーションを制限するため、マルウェアプログラム、ペアレンタルコントロールなど他のコンポーネントと集積されてもよい。ＰＡＥＣは、ウェイクアップを減らし、ＣＰＵをアイドル状態に長くとどめることができる。アプリケーション開発者は、ＱＯＳ  ＡＰＩをレバレッジして、パワーセービングを強化してユーザ体験を改善し得る。いくつかの実施形態では、ＰＡＥＣは、アプリケーションをプラットフォームサブシステム動作モードに関連づけ、低パワー状態からレジューム（例えば、Ｓ０ｉｘ状態からのウェイクアップなど）後、選択されたアプリケーションをウェイク／実行するオプションを提供する。
【００３０】
一実施形態では、ＰＡＥＣは、ポリシー設定に基づき、選択されたサブシステム／アプリケーションからウェイクイベントをマスキングできる。さらに、ＰＡＥＣは、後の時間フレームにおいて、複数の低優先度ウェイクをまとめて実行してもよい。また、ＰＡＥＣは、アプリケーションを、その優先度設定に基づき、及び／またはその関連サブシステム状態に基づきフリーズし、ユーザ体験やＱＯＳを犠牲にすることなく、サブシステムが低パワー（例えば、Ｓ０ｉｘ）状態中にオンになるのを回避する。また、（セキュリティの最適化などのために）アプリケーションごとにコンフィギュレーション「ノブ」のユーザ制御がより大きくてもよい。また、ＰＡＥＣは、セキュアストレージにポリシー設定をセキュアに格納する機能を提供することもできる。
【００３１】
いくつかの実施形態では、ＰＡＥＣは、次のもののうち一または複数を含む複数の利点を提供できる：（１）プラットフォームにおける優先度をアプリケーションに割り当て、アプリケーションをサブシステム動作モードと関連づける機能。優先度は、アプリケーションプロバイダ／システム管理者／サービスプロバイダにより割り当てられても、ユーザ設定可能ポリシー設定に基づいてもよい。さらに、一実施形態では、アプリケーションは、その優先度に基づき分類でき、例えばより容易なアプリケーション管理を提供できる。（２）ＰＡＥＣは、アプリケーションのイベントを回避するため、オーバーレイ領域においてマスクされるアプリケーションを停止／フリーズするよう構成でき得る。（３）ＰＡＥＣは、コンフィギュレーション設定に基づき、選択されたアプリケーションとそれらの関連サブシステムとをウェイクアップするメカニズムを提供する。ＰＡＥＣは、ＯＳ／アプリケーションの観点から粒度が細かい制御を提供する。（４）ＰＡＥＣは、適応的であってもよい。例えば、停止状態中にウェイクアップをトラッキングして、パラメータを微調整するフィードバックを提供することができる。（５）ＣＰＵ及びその他のサブシステムの、最も深い低パワー状態にいる時間を長くする。（６）盗聴防止されたセキュアストレージにユーザ設定ポリシーを格納する。
【００３２】
図５は、本発明の一実施形態によるコンピューティングシステム５００を示すブロック図である。コンピューティングシステム５００は、相互接続ネットワーク（すなわちバス）５０４を介して通信する一又は複数の中央処理ユニット（ＣＰＵ）５０２又はプロセッサを含む。プロセッサ５０２は、汎用プロセッサ、（コンピュータネットワーク５０３により通信されるデータを処理する）ネットワークプロセッサ、（ＲＩＳＣ（reduced  instruction  set  computer）又はＣＩＳＣ（complex  instruction  set  computer）を含む）その他のタイプのプロセッサを含む。さらに、プロセッサ５０２はシングルコアデザインでもマルチコアデザインでもよい。マルチコアデザインのプロセッサ５０２は、同じ集積回路（ＩＣ）ダイ上に異なるタイプのプロセッサコアを集積したものであってもよい。また、マルチコアデザインのプロセッサ５０２は、対称又は非対称のマルチプロセッサとして実装されてもよい。一実施形態では、一または複数のプロセッサ５０２は図１のプロセッサと同じまたは同様であってもよい。例えば、一または複数のプロセッサ５０２は図１−４を参照して説明したＰＡＥＣロジック１２０を含み得る。また、図１−４を参照して説明した動作は、システム５００の一又は複数のコンポーネントにより実行できる。
【００３３】
チップセット５０６も相互接続５０４で通信できる。チップセット５０６は、メモリコントロールハブ（ＭＣＨ）５０８を含む。ＭＣＨ５０８は、（図１のメモリ１１４と同じまたは同様な）メモリ５１２と通信するメモリコントローラ５１０を含み得る。メモリ５１２は、ＣＰＵ５０２またはコンピューティングシステム５０２に含まれるその他の任意のデバイスにより実行される命令シーケンスを含むデータを記憶する。例えば、メモリ５１２は、図３−４を参照して説明したＰＡＥＣ３１２、ＯＳ３１３、及び／またはＰＡＥＣ  ＵＩ３１４を格納できる。本発明の一実施形態では、メモリ５１２は、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、又はその他のタイプの記憶デバイスなどの一又は複数の揮発性ストレージ（すなわちメモリ）を含む。ハードディスクなどの不揮発性メモリも利用できる。複数のＣＰＵ及び／又は複数のシステムメモリなど別のデバイスも、相互接続ネットワーク５０４を介して通信できる。
【００３４】
ＭＣＨ５０８は、ディスプレイ装置５１６と通信するグラフィックスインタフェース５１４も含み得る。本発明の一実施形態では、グラフィックスインタフェース５１４は、ＡＧＰ（accelerated  graphics  port）を介してディスプレイ装置５１６と通信できる。本発明の一実施形態では、（フラットパネルディスプレイなどである）ディスプレイ５１６は、例えば信号変換器によりグラフィックスインタフェース５１４と通信する。信号変換器は、ビデオメモリやシステムメモリなどのストレージデバイスに記憶された画像のデジタル表現をディスプレイ信号に変換する。ディスプレイ信号はディスプレイ５１６により解釈され表示される。ディスプレイデバイスにより生成されたディスプレイ信号は、ディスプレイ５１６により解釈されそれに表示される前に、様々な制御デバイスを通して送られる。
【００３５】
ハブインタフェース５１８により、ＭＣＨ５０８と入出力コントロールハブ（ＩＣＨ）５２０が通信できる。ＩＣＨ５２０は、コンピューティングシステム５００と通信するＩ／Ｏデバイスにインタフェースを提供する。ＩＣＨ５２０は、ペリフェラルコンポーネント相互接続（ＰＣＩ）ブリッジ、ユニバーサルシリアルバス（ＵＳＢ）コントローラ、又はその他のタイプのペリフェラルブリッジやコントローラなどのペリフェラルブリッジ（又はコントローラ）５２４を通してバス５２２と通信できる。ブリッジ５２４は、ＣＰＵ５０２とペリフェラルデバイスとの間にデータパスを提供する。他のタイプのトポロジーも利用できる。また、複数のバスが、例えば複数のブリッジ又はコントローラにより、ICH５２０と通信できる。さらに、ＩＣＨ５２０と通信する他のペリフェラルには、本発明の様々な実施形態において、ＩＤＥ（integrated  drive  electronics）又はＳＣＳＩ（small  computer  system  interface）ハードディスクドライブ、ＵＳＢポート、キーボード、マウス、タッチスクリーン、カメラ、パラレルポート、シリアルポート、フロッピィ（登録商標）ディスクドライブ、デジタル出力サポート（ＤＶＩ（digital  video  interface）など）、その他のデバイスが含まれる。
【００３６】
バス５２２は、オーディオデバイス５２６、一又は複数のディスクドライブ５２８、及びネットワークインタフェースデバイス５３０と通信できる（これらはコンピュータネットワーク５０３と通信できる）。他のデバイスはバス５２２を介して通信できる。また、本発明のいくつかの実施形態では、様々なコンポーネント（ネットワークインタフェースデバイス５３０など）がＭＣＨ５０８と通信できる。また、プロセッサ５０２とＭＣＨ５０８は結合されて一チップを形成することもできる。さらに、本発明の他の実施形態では、グラフィックアクセラレータ５１６はＭＣＨ５０８内に含まれてもよい。
【００３７】
さらに、コンピューティングシステム５００は揮発性及び／又は不揮発性のメモリ（又はストレージ）を含む。例えば、不揮発性メモリは、次のうち一又は複数を含む：リードオンリメモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気的ＥＰＲＯＭ（ＥＥＰＲＯＭ）、ディスクドライブ（例えば、５２８）、フロッピィ（登録商標）ディスク、コンパクトディスクＲＯＭ（ＣＤ−ＲＯＭ）、デジタルバーサタイルディスク（ＤＶＤ）、フラッシュメモリ、光磁気ディスク、又は（命令などを含む）電子的データを記憶することができる他のタイプの不揮発性機械読み取り可能媒体を含む。
【００３８】
図６は、本発明の一実施形態による、ポイントツーポイント（ＰｔＰ）構成で構成されたコンピューティングシステム６００を示す図である。具体的に、図６は、プロセッサ、メモリ、及び／または入出力装置が複数のポイントツーポイントインタフェースにより相互接続されているシステムを示す。図１−５を参照して説明した動作は、システム６００の一又は複数のコンポーネントにより実行できる。
【００３９】
図６に示したように、システム６００は複数のプロセッサを含んでいてもよく、明確性のため、そのうち２つのプロセッサ６０２、６０４のみを示した。プロセッサ６０２と６０４は、それぞれ、ローカルメモリコントローラハブ（ＭＣＨ）６０６、６０８を含み、メモリ６１０と６１２と通信できる。メモリ６１０及び／または６１２は、図５のメモリ５１２を参照して説明したような様々なデータを格納し得る。
【００４０】
一実施形態では、プロセッサ６０２と６０４は、図５を参照して説明した複数のプロセッサ５０２のうちのものであってもよい。プロセッサ６０２と６０４は、それぞれＰｔＰインタフェース回路６１６と６１８を用いて、ポイントツーポイント（ＰｔＰ）インタフェース６１４を介してデータを交換できる。また、プロセッサ６０２と６０４は、それぞれ、ポイントツーポイントインタフェース回路６２６、６２８、６３０及び６３２を用いて、個々のＰｔＰインタフェース６２２と６２４を介してチップセット６２０とデータを交換できる。さらにチップセット６２０は、例えば、ＰｔＰインタフェース回路６３７を用いて、グラフィックスインタフェース６３６を介してグラフィックス回路６３４とデータを交換できる。
【００４１】
本発明の少なくとも一実施形態は、プロセッサ６０２と６０４に設けることができる。例えば、図１−４のＰＡＥＣロジック１２０は、プロセッサ６０２と６０４内に配置してもよい。しかし、本発明の他の実施形態は、図６のシステム６００内の他の回路、ロジックユニット、またはデバイスにあってもよい。さらにまた、本発明の他の実施形態は、図６に示した複数の回路、ロジックユニット、またはデバイスに分散していてもよい。
【００４２】
チップセット６２０は、ＰｔＰインタフェース回路６４１を用いてバス６４０を介して通信できる。バス６４０は、バスブリッジ６４２とＩ／Ｏデバイス６４３などの一または複数のデバイスと通信できる。バスブリッジ６４２は、バス６４４を介して、キーボード／マウス／タッチスクリーン／カメラ６４５、通信デバイス６４６（例えば、モデム、ネットワークインタフェースデバイス、またはコンピュータネットワーク５０３と通信できるその他の通信デバイス）、オーディオＩ／Ｏデバイス６４７、及び／またはデータストレージデバイス６４８などのその他のデバイスと通信できる。データストレージデバイス６４８は、プロセッサ６０２及び／または６０４により実行できるコード６４９を格納できる。
【００４３】
本発明の様々な実施形態において、例えば図１−６を参照してここに説明した動作は、ハードウェア（例えば、ロジック回路）、ソフトウェア、ファームウェア、またはこれらの組み合わせとして実装でき、コンピュータプログラム製品として提供することもでき、これには、ここで説明した方法を実行するようにコンピュータをプログラムするのに使われる命令（またはソフトウェア手順）を格納した、（例えば、一時的でない）機械読み取り可能またはコンピュータ読み取り可能な媒体を含む。機械読み取り可能媒体は、図１−６を参照して説明したような記憶デバイスを含み得る。
【００４４】
また、かかるコンピュータ読み取り可能媒体は、コンピュータプログラム製品としてダウンロード可能であってもよい。この場合、プログラムは、通信リンク（例えば、バス、モデム、又はネットワーク接続）を介して、リモートコンピュータ（例えば、サーバ）から要求コンピュータ（例えば、クライアント）に、搬送はその他の伝搬媒体に化体されたデータ信号により転送できる。
【００４５】
本明細書において「一実施形態」または「いくつかの実施形態」とは、その実施形態に関して説明する機能、構造、特徴が少なくとも１つの実施形態に含まれることを意味している。本明細書ではいろいろな箇所で「一実施形態とは」と記載するが、同じ実施形態を指すものであってもなくてもよい。
【００４６】
また、以下の説明及び請求項において、「coupled」と「connected」との用語及びその変化形を用いることがある。本発明のある実施形態では、「接続された（connected）」という用語を用いて、２以上の要素が互いに物理的または電気的に直接的に接触していることを示している。「結合された」という用語は、２つ以上の要素が物理的または電気的に直接的に接触していることを示している。しかし、「結合された」という用語は、複数の要素が互いに直接的には接触してないが、互いに協働または相互作用することを示している。
【００４７】
よって、本発明の実施形態を構造的特徴及び／又は方法動作の具体的な言葉で説明したが、言うまでもなく、本発明は説明した具体的な特徴や動作に限定されない。むしろ、具体的な特徴や動作は、請求した主題を実施する形式例として開示したものである。
【図１】
0005932044.tif 000002
【図２】
0005932044.tif 000003
【図３】
0005932044.tif 000004
【図４】
0005932044.tif 000005
【図５】
0005932044.tif 000006
【図６】
0005932044.tif 000007