(57)【特許請求の範囲】
【請求項１】
第１周波数及び第１電圧で動作するシステムの１つ以上の制約パラメータを監視するステップと、
前記制約パラメータの監視に基づいて、少なくとも前記第１の電圧を、該第１の電圧よりも低い、第２の電圧よりもさらに低い電圧に下げることによって、インストラクションが実行されるのを防止してシステムをアイドル状態へと強制するステップとを備え、
前記強制するステップは前記１つ以上の制約パラメータに基づいて、システムを第１の時間部分中にアイドル状態へ強制する一方、システムを第２の時間部分中に動作を続行できるようにするステップであり、前記強制は、ターゲットアイドル時間を実際のアイドル時間と比較するのに応答して行われる、マシン実施方法。
【請求項２】
前記第１周波数より低い第２周波数で前記システムを動作させる間に前記システムを前記アイドル状態に強制する前記方法であって、前記方法が、更に、システムをアイドル状態へ強制するレートを決定するステップを備え、前記制約パラメータは、電力、温度、電流、バッテリ負荷、又はその組合せであり、前記第２周波数は、ゼロより大きく且つ前記第１周波数より低く、そして前記第２電圧は、ゼロより大きい、請求項１に記載のマシン実施方法。
【請求項３】
前記制約パラメータが制約パラメータスレッシュホールドより大きいかどうか決定するステップと、
前記第１電圧が最小動作電圧であるかどうか決定するステップと、
前記第１電圧が最小動作電圧であり且つ前記制約パラメータが制約パラメータスレッシュホールドより大きい場合にシステムをアイドル状態へ強制するステップと、
を更に備えた請求項１に記載のマシン実施方法。
【請求項４】
前記システムが最小動作電圧で動作せず且つ前記制約パラメータが制約パラメータスレッシュホールドより大きい場合にシステムの動作点を下げるステップを更に備えた、請求項３に記載のマシン実施方法。
【請求項５】
前記第１周波数及び第１電圧で動作するシステムに対するアイドル状態のパーセンテージを制約パラメータに基づいて決定するステップを更に備え、前記システムの少なくとも一部分に対して前記第２周波数がゼロであり且つ前記第２電圧がゼロである、請求項１に記載のマシン実施方法。
【請求項６】
１つ以上のシステム制約パラメータに基づいてシステムのターゲットアイドル時間を決定するステップと、
実際のアイドル時間を監視するステップであって、実際のアイドル時間は、ある期間にわたって累積されるようなステップと、
割り込みを受け取るステップと、
割り込みに応答してアイドル状態から動作状態へスイッチするステップと、
を更に備えた請求項１に記載のマシン実施方法。
【請求項７】
アイドル時間を回避するための判断は、その判断をなすときに実際のアイドル時間がターゲットアイドル時間より大きい場合になされる、請求項１に記載のマシン実施方法。
【請求項８】
システムにより実行されたときにシステムが請求項１から９のいずれかに記載の方法を遂行するようにさせるインストラクションを含むコンピュータ読み取り可能な記憶メディア。
【請求項９】
第１周波数及び第１電圧で動作するシステムの１つ以上の制約パラメータを監視する手段であって、前記第１電圧が電力供給装置から前記システムの電圧入力に印加されるようになっている手段と、
制約パラメータの監視に基づいて、少なくとも、前記第１電圧を、前記第１電圧より低い第２電圧よりさらに低い電圧に、前記電圧入力において、下げることによって、インストラクションが実行されるのを防止する、システムをアイドル状態へと強制する手段と、を備え、
前記強制する手段は前記１つ以上の制約パラメータに基づいて、システムを第１の時間部分中にアイドル状態へ強制する一方、システムを第２の時間部分中に動作できるようにする手段であって、前記強制は、ターゲットアイドル時間を実際のアイドル時間と比較するのに応答して行われる、データ処理システム。
【請求項１０】
前記制約パラメータが制約パラメータスレッシュホールドより大きいかどうか決定する手段と、
前記第１電圧が最小動作電圧であるかどうか決定する手段と、
前記第１電圧が最小動作電圧であり且つ前記制約パラメータが制約パラメータスレッシュホールドより大きい場合にシステムをアイドル状態へ強制する手段と、
を更に備えた請求項９に記載のデータ処理システム。
【請求項１１】
前記第１周波数及び第１電圧で動作するシステムに対するアイドル状態のパーセンテージを制約パラメータに基づいて決定する手段を更に備え、前記第２周波数は、ゼロより大きく且つ前記第１周波数より低く、そして前記第２電圧は、ゼロより大きい、請求項９に記載のデータ処理システム。
【請求項１２】
１つ以上のシステム制約パラメータに基づいてシステムのターゲットアイドル時間を決定する手段と、
実際のアイドル時間を監視する手段であって、実際のアイドル時間は、ある期間にわたって累積されるような手段と、
を更に備えた請求項９に記載のデータ処理システム。
【請求項１３】
アイドル時間を回避するための判断は、その判断をなすときに実際のアイドル時間がターゲットアイドル時間より大きい場合になされる、請求項９に記載のデータ処理システム。
【請求項１４】
実際のアイドル時間及びターゲットアイドル時間は、共通の期間に基づく、請求項９に記載のデータ処理システム。
【請求項１５】
割り込みを受け取る手段と、
割り込みに応答してアイドル状態から動作状態へスイッチする手段と、
を更に備えた請求項９に記載のデータ処理システム。
【請求項１６】
１つ以上の制約パラメータに関連したターゲットアイドル時間を含む１つ以上のルックアップテーブルを記憶する手段を更に備えた、請求項１２に記載のデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に、データ処理システムに係り、より詳細には、データ処理システムにおける電力の管理に係るが、これに限定されない。
【０００２】
関連出願：本出願は、２００８年１月７日に出願されたKeith Cox、David Conroy、Michael Culbert、及びGuy Sotomayorの“Forced Idle of a Data Processing System”と題する米国特許出願第１１／９７０，４８３号（代理人管理番号４８６０Ｐ６０７８）に係る。
【背景技術】
【０００３】
慣習的に、コンピュータシステムは、かなりワーストケースの電力負荷を連続的に運転できるように設計される。このような連続的なワーストケース電力負荷に基づく設計は、あまり問題となっていない。というのは、慣習的に、個々のコンポーネントの動作電力が控え目で且つコンピュータシステムの電力バジェットが大きく、システムは、負荷を全く自然に持続できるからである。
【０００４】
コンピュータシステムの個々のコンポーネントの動作電力消費が上昇するにつれて、コンピュータシステムの電力バジェットは、より厳しいものとなった。現在では、連続的なワーストケースワーク負荷を運転しながら、他の高性能目標、例えば、高い計算パワー、コンパクトさ、静寂さ、優れたバッテリ性能、等を追求するようにコンピュータシステムを設計することが難問となりつつある。例えば、ラップトップコンピュータのようなポータブルコンピュータシステムは、バッテリ出力能力に限度があり、従って、所与のバッテリ出力能力に対するワーストケースワーク負荷は、めったに生じるものではないが、システムの性能を制限し得る。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
それ故、コンピュータシステムのバッテリ寿命及び熱的設計目標の両方を達成するためには、電力の管理が重要となる。例えば、中央処理ユニット（ＣＰＵ）の電力を管理するための１つの共通の技術は、コンピュータシステムの複数の個別の状態の間でＣＰＵコアの動作周波数及び電源電圧の両方をダイナミックに調整することである。典型的に、コンピュータシステムの電力動作点では、ダイナミック電力及び漏洩電力のように、電力消費に対して２つの成分が存在する。ダイナミック電力は、実際に望ましい回路動作を表す。これは、第２（周波数）当たりのクロック遷移の数及び電圧の二乗に比例する。漏洩電力は、ＣＰＵを完全に付勢させるコストオーバーヘッドを表す。これは、所与の電圧に対して固定され、そして通常、電圧の増加と共に指数関数的に上昇する。しかしながら、動作周波数をダイナミックに調整すると、ダイナミック電力しか管理されず、コンピュータシステムの漏洩電力には影響がない。
【課題を解決するための手段】
【０００６】
データ処理システムの電力を管理する方法及び装置の実施形態を説明する。データ処理システムの１つ以上の制約パラメータが監視される。データ処理システムは、第１周波数及び第１電圧で動作し、その間に、１つ以上の制約パラメータが監視される。データ処理システムは、第２周波数及び第２電圧で動作する間に、１つ以上の制約パラメータに基づいて、アイドル状態へ強制される。一実施形態では、アイドル状態は、インストラクションが実行されるのを防止し、第２周波数は、ゼロより大きく且つ第１周波数未満であり、そして第２電圧は、ゼロより大きく且つ第１電圧未満である。他の実施形態では、アイドル状態は、インストラクションが実行されるのを防止し、第２周波数は、ゼロであり、そして第２電圧は、システムの少なくとも一部分について、ゼロである。一実施形態では、システムをアイドル状態へ強制するレートは、制約パラメータに基づいて決定される。制約パラメータは、例えば、電力、温度、電流、バッテリ負荷、又はその組合せである。
【０００７】
一実施形態では、第１電圧及び第１周波数で動作するシステムの制約パラメータが監視される。システムは、第１電圧が最小電圧であり且つ制約パラメータが制約パラメータスレッシュホールドより大きい場合に、アイドル状態へ強制される。システムの動作点は、システムが最小電圧で動作せず且つ制約パラメータが制約パラメータスレッシュホールドより大きい場合には、下げられる。システムの動作点は、システムの動作電圧、システムの動作周波数又はその組合せを下げることにより下げられる。一実施形態では、第１周波数及び第１電圧で動作するシステムに対するアイドル状態のパーセンテージは、制約パラメータに基づいて決定される。
【０００８】
少なくとも幾つかの実施形態では、データ処理システムは、プロセッサと、プロセッサに結合されたメモリと、第１周波数及び第１電圧で動作するシステムの制約パラメータを監視するためにプロセッサに結合された１つ以上のセンサとを備えている。プロセッサは、システムが第２周波数及び第１電圧より低い第２電圧で動作する間に、プロセッサによりインストラクションが実行されないアイドル状態へシステムを強制するように、制約パラメータに基づいて構成される。メモリは、いつ、どのように、システムをアイドル状態へ強制するかの情報を記憶する。一実施形態では、プロセッサは、更に、システムをアイドル状態へ強制するレートを決定するように構成される。一実施形態では、プロセッサは、更に、第１電圧が最小電圧であり且つ制約パラメータが制約パラメータスレッシュホールドより大きい場合にシステムをアイドル状態へ強制するように構成される。又、一実施形態では、プロセッサは、更に、システムが最小電圧で動作せず且つ制約パラメータが制約パラメータスレッシュホールドより大きい場合にシステムの動作点を下げるように構成される。
【０００９】
一実施形態では、プロセッサは、更に、第１周波数及び第１電圧で動作するシステムに対するアイドル状態のパーセンテージを制約パラメータに基づいて決定するように構成される。
【００１０】
少なくとも幾つかの実施形態では、第１周波数及び第１電圧で動作するシステムの制約パラメータを監視し、システムが第２周波数及び第１電圧より低い第２電圧で動作する間に、制約パラメータの監視に基づいて、システムをアイドル状態へ強制することを含むオペレーションをデータ処理システムが遂行するようにさせる実行可能なプログラムインストラクションを備えたマシン読み取り可能なメディアについて説明する。
【００１１】
一実施形態では、マシン読み取り可能なメディアは、更に、データ処理システムがシステムをアイドル状態へ強制するレートを決定するようにさせるインストラクションも備えている。又、一実施形態では、マシン読み取り可能なメディアは、更に、第１電圧が最小電圧であり且つ制約パラメータが制約パラメータスレッシュホールドより大きい場合にデータ処理システムがそのシステムをアイドル状態へ強制するようにさせるインストラクションも備えている。
【００１２】
一実施形態では、マシン読み取り可能なメディアは、更に、システムが最小電圧で動作せず且つ制約パラメータが制約パラメータスレッシュホールドより大きい場合にデータ処理システムがシステムの動作点（例えば、電圧、周波数、又はその組合せ）を下げるようにさせるインストラクションも備えている。
【００１３】
一実施形態では、マシン読み取り可能なメディアは、更に、第１周波数及び第１電圧で動作するシステムに対するアイドル状態のパーセンテージをデータ処理システムが制約パラメータに基づいて決定するようにさせるインストラクションも備えている。
【００１４】
少なくとも幾つかの実施形態では、第１周波数及び第１電圧で動作するシステムの制約パラメータを監視する手段と、システムが第２周波数及び第１電圧より低い第２電圧で動作する間に、制約パラメータの監視に基づいて、システムをアイドル状態へ強制する手段とを備えたデータ処理システムについて説明する。一実施形態では、データ処理システムは、更に、第１電圧が最小電圧であり且つ制約パラメータが制約パラメータスレッシュホールドより大きい場合にシステムをアイドル状態へ強制する手段も備えている。又、一実施形態では、データ処理システムは、更に、第１周波数及び第１電圧で動作するシステムに対するアイドル状態のパーセンテージを制約パラメータに基づいて決定する手段も備えている。
【００１５】
本発明の他の特徴は、添付図面及び以下の詳細な説明から明らかとなろう。
【００１６】
本発明は、同様の要素が同じ参照番号で示された添付図面に一例として示されるが、これに限定されるものではない。
【図面の簡単な説明】
【００１７】
【図１Ａ】強制アイドル状態を与えるために使用できる典型的なコンピュータシステムの一例を示す。
【図１Ｂ】強制アイドル状態を与えるためのシステムの別の実施形態を示す。
【図２】強制アイドル状態を与えるシステムの一実施形態を示す。
【図３Ａ】データ処理システムの電力動作点の一実施形態を示す図である。
【図３Ｂ】電源電圧に対する漏洩電力の依存性を示す図である。
【図４】本発明の一実施形態によりデータ処理システムが動作を続ける間にそのシステムをアイドル状態へ強制するところを示す図である。
【図５Ａ】本発明の一実施形態によりデータ処理システムが動作を続ける間にそのシステムをアイドル状態へ強制するところを示す図である。
【図５Ｂ】本発明の別の実施形態によりデータ処理システムが動作を続ける間にそのシステムをアイドル状態へ強制するところを示す図である。
【図６】アイドル状態に関する情報を含むテーブルの一実施形態を示す。
【図７】データ処理システムをアイドル状態へ強制する方法の一実施形態のフローチャートである。
【図８】データ処理システムをアイドル状態へ強制する方法の一実施形態のフローチャートである。
【図９】データ処理システムを制約パラメータに基づいてアイドル状態へ強制する方法の一実施形態のフローチャートである。
【図１０】ここに開示する幾つかの実施形態に使用される電力使用バジェットをダイナミックに決定する方法を示す。
【図１１】ここに開示する幾つかの実施形態に使用される電力使用のシナリオを示す。
【図１２】データ処理システムの電力をターゲット電力へ管理する方法の一実施形態のフローチャートである。
【図１３】強制アイドルをもたずに動作電力点を上げる方法の一実施形態のフローチャートである。
【図１４】強制アイドルを含む動作電力点を上げる方法１４００の一実施形態のフローチャートである。
【図１５】強制アイドルをもたずに動作電力点を下げる方法の一実施形態のフローチャートである。
【図１６】強制アイドルを含む動作電力点を下げる方法の一実施形態のフローチャートである。
【図１７】データ処理システムのための強制アイドル状態を与える方法の一実施形態のフローチャートである。
【図１８】強制アイドル状態からスイッチする方法の一実施形態のフローチャートである。
【図１９】強制アイドル状態を与える方法の一実施形態のフローチャートである。
【発明を実施するための形態】
【００１８】
本発明の種々の実施形態及び態様を、添付図面を参照して以下に詳細に説明する。以下の説明及び添付図面は、本発明を単に例示するもので、本発明をそれに限定するものではない。本発明の種々の実施形態を完全に理解するために、多数の特定の細部について述べる。しかしながら、当業者であれば、本発明の実施形態は、これら特定の細部なしに実施されてもよいことが明らかであろう。他の点では、本発明の実施形態を不明瞭にしないために、良く知られた構造及び装置は、詳細に示さずに、ブロック図の形態で示す。
【００１９】
明細書において「一実施形態」又は「実施形態」という表現は、その実施形態に関連して説明する特定の特徴、構造又は特性が、本発明の少なくとも１つの実施形態に包含されることを意味する。明細書の種々の場所に「一実施形態では」の句が現れるときは、必ずしも同じ実施形態を指していない。
【００２０】
特に指示のない限り、この説明全体にわたり、「処理」又は「コンピューティング」又は「計算」又は「決定」又は「表示」等の用語を使用する説明は、コンピュータシステムのレジスタ及びメモリ内の物理的（電子的）量として表されたデータを、コンピュータシステムメモリ又はレジスタ或いは他のそのような情報記憶、伝送又は表示装置内の物理的量として同様に表された他のデータへと操作及び変換するデータ処理システム又は同様の電子的コンピューティング装置のアクション及び処理を指す。
【００２１】
本発明の実施形態は、ここに述べるオペレーションの１つ以上を遂行するための装置に係る。この装置は、要求される目的のために特別に構成されてもよいし、或いはコンピュータに記憶されたコンピュータプログラムにより選択的にアクチベートされ又は再構成される汎用コンピュータを備えてもよい。このようなコンピュータプログラムは、マシン（例えば、コンピュータ）読み取り可能な記憶媒体、例えば、これに限定されないが、フロッピーディスク、光学ディスク、ＣＤ−ＲＯＭ及び磁気−光学ディスクを含む任意の形式のディスク、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、消去可能なプログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的に消去可能なプログラマブルＲＯＭ（ＥＥＰＲＯＭ）、磁気又は光学カード、或いは電子的インストラクションを記憶するのに適した任意の形式のメディアに記憶することができ、これらは、各々、バスに結合される。
【００２２】
マシン読み取り可能なメディアは、マシン（例えば、コンピュータ）により読み取り可能な形態で情報を記憶又は伝達するためのメカニズムを含む。例えば、マシン読み取り可能なメディアは、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶メディア、光学的記憶メディア、フラッシュメモリ装置、電気的、光学的、音響的又は他の形式のメディアを含む。
【００２３】
ここに述べるアルゴリズムやディスプレイは、特定のコンピュータ又は他の装置に固有に関連したものではない。種々の汎用システムは、ここに述べる技術によりプログラムと共に使用することもできるし、必要なマシン実施方法のオペレーションを遂行するためのより特殊な装置を構成するのに便利であることも分かっている。これら種々のシステムに必要な構造は、以下の説明から明らかとなろう。
【００２４】
更に、本発明の実施形態は、特定のプログラミング言語を参照して説明しない。ここに述べる本発明の実施形態の教示を具現化するのに種々のプログラミング言語を使用できることが明らかであろう。
【００２５】
本発明の多数の方法は、従来の汎用コンピュータシステムのようなデジタル処理システムで遂行することができる。コンピュータシステムは、例えば、カリフォルニア州クパーチノに所在するアップル社により製造されるエントリーレベルのＭａｃ  ｍｉｎｉTM及び消費者レベルのｉＭａｃTMデスクトップモデル、ワークステーションレベルのＭａｃ  ＰｒｏTMタワー、並びにＭａｃＢｏｏｋTM及びＭａｃＢｏｏｋ  ＰｒｏTMラップトップコンピュータでよい。ここに述べる方法から、小型のシステム（例えば、非常に薄いラップトップコンピュータ）が有利である。１つの機能のみを遂行するよう設計され又はプログラムされた特殊目的のコンピュータ、又はセルラー電話のような消費者向け電子装置も、ここに述べる方法を遂行することができる。
【００２６】
図１Ａは、強制アイドル状態を与えるのに使用できる典型的なコンピュータシステムの一例を示す。図１Ａは、コンピュータシステムの種々のコンポーネントを示しているが、コンポーネントを相互接続する特定のアーキテクチャー又は方法を表すことを意図していない点に注意されたい。というのは、このような詳細は、本発明と密接な関係がないからである。又、より少数のコンポーネント、又はおそらく、より多数のコンポーネントを有するネットワークコンピュータ及び他のデータ処理システムも、本発明に使用できることも明らかであろう。図１Ａのコンピュータシステムは、例えば、Ａｐｐｌｅ  Ｍａｃｉｎｔｏｓｈ（登録商標）コンピュータでよい。
【００２７】
図１Ａに示すように、データ処理システムの形態のコンピュータシステム１００は、マイクロプロセッサ１０３、ＲＯＭ１０７、揮発性ＲＡＭ１０５及び不揮発性メモリ１０６に結合されたバス１０２を備えている。例えば、モトローラ社又はＩＢＭからのＧ３、Ｇ４又はＧ５マイクロプロセッサ、或いはインテルからのマイクロプロセッサであるマイクロプロセッサ１０３は、例えば、図１Ａに示すように、キャッシュメモリ１０４に結合される。バス１０２は、これら種々のコンポーネントを一緒に相互接続すると共に、コンポーネント１０３、１０７、１０５及び１０６をディスプレイコントローラ及びディスプレイ装置１０８へ、及び入力／出力（Ｉ／Ｏ）装置のような周辺装置へ相互接続し、入力／出力装置は、マウス、キーボード、モデム、ネットワークインターフェイス、プリンタ、スキャナ、ビデオカメラ、及び良く知られた他の装置でよい。典型的に、入力／出力装置１１０は、入力／出力コントローラ１０９を経てシステムに結合される。揮発性ＲＡＭ１０５は、典型的に、ダイナミックＲＡＭ（ＤＲＡＭ）として実施され、これは、メモリ内のデータをリフレッシュ又は維持するのに常時電力を必要とする。不揮発性メモリ１０６は、典型的に、磁気ハードドライブ又は磁気光学ドライブ又は光学ドライブ又はＤＶＤ  ＲＡＭ或いは他の形式のメモリシステムであり、これは、システムから電力が取り去られた後もデータを維持する。典型的に、不揮発性メモリは、ランダムアクセスメモリであるが、これは要求されない。図１Ａは、不揮発性メモリが、データ処理システムの残りのコンポーネントに直結されたローカル装置であることを示しているが、本発明は、システムから離れた不揮発性メモリ、例えば、モデム又はイーサネットインターフェイスのようなネットワークインターフェイスを経てデータ処理システムに結合されたネットワーク記憶装置を使用できることが明らかであろう。バス１０２は、良く知られたように、種々のブリッジ、コントローラ及び／又はアダプタを通して互いに接続された１つ以上のバスを含む。一実施形態では、Ｉ／Ｏコントローラ１０９は、ＵＳＢ（ユニバーサルシリアルバス）周辺機器を制御するためのＵＳＢアダプタ、及び／又はＩＥＥＥ−１３９４周辺機器を制御するためのＩＥＥＥ−１３９４バスアダプタを備えている。
【００２８】
本発明の一実施形態では、電力使用量に対して性能を兼ね合せるように少なくとも幾つかのコンポーネントをアクティブに絞ることができる。例えば、マイクロプロセッサ１０３は、異なるコア電圧及び周波数設定を有する。一実施形態では、システム１００は、絞り付きコンポーネント（１つ又は複数）及び絞りなしコンポーネント（１つ又は複数）を備えている。絞り付きコンポーネントは、そのコンポーネントが異なる電力／性能レベルで機能するところの異なる絞り設定（動作設定）を有する。例えば、プロセッサは、異なるコア電圧及びコア周波数で働くように絞ることができ、ディスクドライブは、異なるスピンレートで働くように絞ることができ、バスは、異なる周波数で絞ることができ、等々である。コンポーネントが、電力使用量に対して性能を兼ね合せるように絞られない場合は、コンポーネントは、絞りなしコンポーネントであると考えられる。データ処理システムの絞り付き及び絞りなしコンポーネントは、参考としてここに援用する２００５年８月２５日出願の米国特許出願第１１／２１２，９７０号に詳細に説明されている。
【００２９】
本発明の一実施形態では、システム１００は、更に、Ｉ／Ｏコントローラ１０９（１つ又は複数）に結合された電力使用量センサ１１１（１つ又は複数）を備えている。このセンサ１１１は、１つ以上のハードウェア及び／又はソフトウェアコンポーネントを含む。一実施形態では、センサは、ハードウェアを使用して実施される。或いは又、少なくとも幾つかのセンサを、ソフトウェアを使用して実施することもできる。例えば、ソフトウェアモジュールを使用して、動作状態及びそれに対応する期間を決定し、動作状態に対する所定の電力消費レートから実際の電力使用量を計算することができる。これは、参考としてここに援用する２００５年８月２５日に出願された米国特許出願第１１／２１２，９７０号、２００６年１月５日に出願された米国特許出願第１１／３２７，６８５号、２００６年１月５日に出願された米国特許出願第１１／３２７，２７５号、及び２００６年１月５日に出願された米国特許出願第１１／３２７，２３８号に更に詳細に説明されている。
【００３０】
以下に詳細に述べるように、１つ以上のセンサを使用して、システム１００の１つ以上の制約パラメータを監視することができる。制約パラメータは、例えば、システム１００に結合できるバッテリ（図示せず）の電力、温度、電流、負荷、又はその組合せでよい。システムの１つ以上の制約パラメータを監視して、中央処理ユニット（ＣＰＵ）（例えば、マイクロプロセッサ１０３）及び／又はグラフィック処理ユニット（ＧＰＵ）（例えば、ディスプレイコントローラ１０８のプロセッサ）の電力使用量を決定することができる。更に、１つ以上のセンサをＣＰＵ及び／又はＧＰＵ（図示せず）に直結することができる。
【００３１】
一実施形態では、センサ１１１により実際の電力使用量が監視される。例えば、実際の電力使用量を周期的に測定して、電力使用量の履歴を決定することができる。電力使用量の履歴を使用して、ある平均化方法で電力使用量を決定することができる。一実施形態では、過去の電力使用量を知ることで、システムは、次の時間インターバル中の許容電力バジェットをダイナミックに決定することができ、これは、参考としてここに援用する２００５年８月２５日に出願された米国特許出願第１１／２１２，９７０号に詳細に説明されている。
【００３２】
本発明の一実施形態では、マイクロプロセッサ１０３は、キャッシュ１０４、ＲＯＭ１０７、ＲＡＭ１０５、及び／又は不揮発性メモリ１０６に記憶されたインストラクションに基づいて、以下に詳細に述べるように、電力使用量のバジェットをダイナミックに決めそしてシステム１００をアイドル状態へ強制する。或いは又、システム１００は、更に、以下に詳細に述べるように、キャッシュ１０４、ＲＯＭ１０７、ＲＡＭ１０５、不揮発性メモリ１０６に記憶された情報に基づいて、電力使用量のバジェットをダイナミックに決め、そしていつ、どのように、システムを強制アイドル状態へ強制するか決定するためのマイクロコントローラ（図示せず）を備えている。一実施形態では、データ処理システム１００は、複数の中央処理ユニット（ＣＰＵ）／マイクロプロセッサを備えている。
【００３３】
この説明から、本発明の態様は、少なくとも一部分は、ソフトウェアで実施できることが明らかであろう。即ち、その技術は、ＲＯＭ１０７、揮発性ＲＡＭ１０５、不揮発性メモリ１０６、キャッシュ１０４、或いは他の記憶装置又はリモート記憶装置のようなメモリに含まれた一連のインストラクションを実行するマイクロプロセッサ又はマイクロコントローラのようなプロセッサに応答して、コンピュータシステム又は他のデータ処理システムにおいて実行することができる。種々の実施形態において、ハードウェア回路をソフトウェアインストラクションと組み合せて使用し、本発明を実施することもできる。従って、その技術は、ハードウェア回路及びソフトウェアの特定の組合せに限定されず、又、データ処理システムにより実行されるインストラクションの特定のソースにも限定されない。更に、この説明全体を通じて、説明を簡略化するため、種々の機能及びオペレーションは、ソフトウェアコードにより遂行され又は生じさせられるものとして説明する。しかしながら、当業者に明らかなように、このような説明が意味するものは、マイクロプロセッサ１０３のようなプロセッサ又はマイクロコントローラによってコードを実行することから機能が生じることである。
【００３４】
データ処理システムにより実行されたときにシステムが本発明の種々の方法を遂行するようにさせるソフトウェア及びデータを記憶するために、マシン読み取り可能なメディアを使用することができる。この実行可能なソフトウェア及びデータは、例えば、図１Ａに示すように、ＲＯＭ１０７、揮発性ＲＡＭ１０５、不揮発性メモリ１０６及び／又はキャッシュ１０４を含む種々の場所に記憶される。このソフトウェア及び／又はデータの部分は、これら記憶装置のいずれに記憶されてもよい。
【００３５】
従って、マシン読み取り可能なメディアは、マシン（例えば、コンピュータ、ネットワーク装置、パーソナルデジタルアシスタント、製造ツール、１つ以上のプロセッサのセットをもつ装置、等）によってアクセスできる形態で情報を与える（即ち、記憶及び／又は送信する）メカニズムを含む。例えば、マシン読み取り可能なメディアは、記録可能／非記録可能なメディア（例えば、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶メディア、光学的記憶メディア、フラッシュメモリ装置、等）を含む。
【００３６】
本発明の方法は、専用ハードウェア（例えば、フィールドプログラマブルゲートアレイ又は特定用途向け集積回路）又は共有回路（例えば、マシン読み取り可能なメディアに記憶されたプログラムインストラクションの制御のもとにあるマイクロプロセッサ又はマイクロコントローラ）を使用して実施することができる。又、本発明の方法は、図１Ａのシステム１００のようなデータ処理システムで実行するためのコンピュータインストラクションとして実施することもできる。
【００３７】
図１Ｂは、強制アイドル状態を与えるためのシステム１２０の別の実施形態を示す。このシステム１２０は、複数のサブシステムを有する。一実施形態では、複数のサブシステムは、プロセッサ、例えば、ＣＰＵ、ＧＰＵ、マイクロコントローラ、等を含む。図１Ｂに示すように、システム１２０は、サブシステム１２１、例えば、ＣＰＵと、サブシステム１２２、例えば、ディスプレイ装置に結合されるＧＰＵと、１つ以上のサブシステム１２９、例えば、１つ以上のＩ／Ｏ装置に結合される１つ以上のＩ／Ｏコントローラと、バス１２６に結合されるマイクロ紺とローｒ１２７とを備えている。更に、システム１２０は、揮発性ＲＡＭ１２４と、不揮発性メモリ１３０、例えば、ハードドライブと、ＲＯＭ１２３と、バス１２６に結合されたサブシステム１２１に結合されたキャッシュメモリ１２５とを備えている。
【００３８】
少なくとも各サブシステムのサブセットにより使用される電力は、例えば、マイクロコントローラ１２７のようなマイクロコントローラによって制御され、そして各サブシステムにより使用される最大電力は、平均化期間にわたり全システムのダイナミック電力履歴により決定され、これは、参考としてここに援用する２００５年８月２５日に出願された米国特許出願第１１／２１２，９７０号に詳細に説明されている。このように電力を制御することで、少なくともある環境において高性能のオペレーションを行うことができる。即ち、サブシステムは、平均化期間中に著しく低電力のオペレーション、例えば、アイドル時間がある場合には、実質的に高電力のバーストで動作することができ、これは、参考としてここに援用する２００５年８月２５日に出願された米国特許出願第１１／２１２，９７０号に詳細に説明されている。
【００３９】
一実施形態では、システムの電力が、負荷プロフィールに基づいてサブシステム間で再分配され、これは、参考としてここに援用する２００６年１月５日に出願された米国特許出願第１１／３２７，６８５号、２００６年１月５日に出願された米国特許出願第１１／３２７，２７５号、及び２００６年１月５日に出願された米国特許出願第１１／３２７，２３８号に詳細に説明されている。
【００４０】
図１Ｂに示すように、１つ以上のセンサ１２８がサブシステム１２１、１２２、１２９及びマイクロコントローラ１２７に結合されている。これらセンサを使用して、電力、温度、電流、バッテリ負荷又はその組合せのような１つ以上の制約パラメータを監視、測定及び／又は推定し、ある周波数及びある電圧で動作する１つ以上のサブシステムによる実際の電力使用量を決定する。センサ１２８は、次いで、決定された電力使用量の値をマイクロコントローラ１２７に与え、このマイクロコントローラは、以下に詳細に述べるように、１つ以上の感知されたパラメータに基づいて、システム及び／又はサブシステムをアイドル状態へ強制することができる。プロセッサ、マイクロコントローラ、バス、Ｉ／Ｏコントローラ、Ｉ／Ｏ装置、メモリ、センサを含むシステム１２０のコンポーネントは、図１Ａを参照して詳細に上述した。一実施形態では、以下に詳細に述べるように、いつ、どのように、システム及び／又はサブシステムをアイドル状態へ強制するかに関する情報を含む１つ以上のルックアップテーブルがメモリ１２３、１２４及び１２５のいずれか、又はマイクロコントローラ１２７のメモリ内に記憶される。一実施形態では、マイクロコントローラ１２７が、図４−１９を参照して以下に述べる方法を遂行する。別の実施形態では、マイクロコントローラ１２７ではなく、サブシステム１２１が、図４−１９を参照して以下に述べる方法を遂行する。更に別の実施形態では、サブシステム１２１及びマイクロコントローラ１２７が、一緒に、図４−１９を参照して以下に述べる方法を遂行する。
【００４１】
図２は、強制アイドル状態を与えるシステムの一実施形態を示す。図２に示すように、システム２００は、サブシステムＡ２０１、例えば、ＣＰＵと、サブシステムＢ２０２、例えば、ディスプレイ装置と結合されたＧＰＵと、サブシステムＣ２０４、例えば、メモリと、サブシステムＤ２０５、例えば、マイクロプロセッサと、１つ以上のサブシステムＮ２０３、例えば、１つ以上のＩ／Ｏ装置に結合された１つ以上のＩ／Ｏコントローラと、相互接続部２０６、例えば、バスに結合された電力マネージャー２０８、例えば、マイクロコントローラ、システムマネージメントコントローラ（ＳＭＣ）と、を備えている。サブシステムＣ２０４は、揮発性ＲＡＭ、不揮発性メモリ、例えば、ハードドライブ、及び／又はＲＯＭである。１つ以上の測定装置２０７、例えば、図１Ａ及び１Ｂを参照して上述した１つ以上のセンサは、図２に示すように、サブシステム２０１−２０５及び電力マネージャー２０８に結合される。図４−１９を参照して以下に述べるように、いつ、どのように、強制アイドル状態に入るかの情報を含む１つ以上のルックアップテーブルを備えた電力ルックアップテーブル２０９が、図２に示すように、電力マネージャー２０８に結合される。プロセッサ、マイクロコントローラ、バス、Ｉ／Ｏコントローラ、Ｉ／Ｏ装置、メモリ、センサを含むシステム２００のコンポーネントは、図１Ａ及び１Ｂを参照して詳細に上述した。一実施形態では、コンピュータシステムの種々の性能設定に対応する１つ以上の電力ルックアップテーブルがサブシステム２０１により発生され（又は設計及び／又は製造プロセスにおいてテスト装置により発生され）、そしてメモリ２０４に記憶され、及び／又は電力マネージャー２０８内に配置されたメモリに記憶される。コンピュータシステムの種々の性能設定を含む１つ以上の電力ルックアップテーブルは、参考としてここに援用する２００５年８月２５日に出願された米国特許出願第１１／２１２，９７０号、２００６年１月５日に出願された米国特許出願第１１／３２７，６８５号、２００６年１月５日に出願された米国特許出願第１１／３２７，２７５号、及び２００６年１月５日に出願された米国特許出願第１１／３２７，２３８号に詳細に説明されたように使用することができる。一実施形態では、電力マネージャー２０８が、図４−１９を参照して以下に述べる方法を遂行する。別の実施形態では、サブシステム２０１が、図４−１９を参照して以下に述べる方法を遂行する。
【００４２】
図３Ａは、データ処理システムの電力動作点の一実施形態を示す図である。例えば、データ処理システムは、図１Ａ、１Ｂ及び２に示すデータ処理システムのいずれかである。図３Ａに示すように、データ処理システムの電力動作点、例えば、電力動作点３０１−３０４は、データ処理システムの一対の動作周波数及び電圧に対応する。動作周波数及び電圧は、例えば、データ処理システムのマイクロプロセッサのコア電圧及び周波数である。図３Ａに示すように、最も高い電力動作点、例えば、動作点ＰH（３０２）は、データ処理システムにより消費される最大電力を表す。データ処理システムにより消費される最大電力は、電力、温度、電流、バッテリ負荷、等の１つ以上のシステム制約パラメータに基づいて決定される。最大電力動作点ＰH（３０２）は、一対の最大動作周波数（ｆH）及び電圧（ＶH）に対応する。図３Ａに示すように、中間電力動作点、例えば、動作点ＰN（３０３）は、データ処理システムによって消費される中間電力を表す。この中間電力動作点ＰN（３０３）は、一対の中間動作周波数（ｆN）及び電圧（ＶN）に対応する。典型的に、データ処理システムの動作周波数は、データ処理システムの電力を、最小（最低）動作電圧ＶLにより定義されたものより低い電力状態へ減少する必要がある場合には、下げられる。データ処理システムの動作周波数（ｆN）は、比Ｘで下げられる。但し、Ｘは、１未満である。例えば、最低電圧における回路の動作周波数（ｆN）が１ＧＨｚである場合には、Ｘ＝２０％で下げると、動作周波数が８００ＭＨｚへと変化する（第１のケース）。これは、ダイナミック電力を２０％だけ下げるという正味作用を有するが、漏洩電力には影響がない。
【００４３】
データ処理システムの最小電力効率動作点は、データ処理システムが最低電圧で動作されるときに設計通りに振舞い続けるところの最低電圧及び最高周波数により決定される。この最小電力効率動作点、例えば、最低（最小）動作電圧（ＶL）及び対応最高（最大）動作周波数（ＦL）に対応する動作点Ｐ（３０１L）は、典型的に、低周波数モード（ＬＦＭ）と称される。典型的に、最低動作電圧ＶLは、数百ミリボルト以下である。典型的に、データ処理システムは、管理可能な電力を最小電力動作点、例えば、ＰL（３０１）へ減少するだけである。というのは、データ処理システムが、この点より低い実際上の動作点をもたないからである。即ち、データ処理システムが既に最小電圧にあるので、唯一の別の仕方は、動作周波数を下げることであるが、これは、効率が悪く、機能しない。
【００４４】
典型的に、データ処理システムが遂行すべきタスクをもたないときに電力を節約するために、データ処理システムは、クロックを完全に停止する（ゼロ周波数）。これは、ダイナミック電力をゼロへ下げるように作用する。クロックを停止するのに加えて、データ処理システムは、減少電圧レベルへ移行する。これは、漏洩電圧（Ｐｌｅａｋ）と電源電圧との間の関係を示す図３Ｂに示されたように、漏洩電力を指数関数的に下げるように作用する。この動作点が、典型的に、アイドル状態と称される。
【００４５】
ここに述べる少なくとも幾つかの実施形態では、以下に詳細に述べる図１８及び１９に示すように実際のアイドル時間とターゲットアイドル時間との比較に基づき（実行すべきタスク、例えば、実行を待機しているソフトウェアインストラクションがあっても）アイドル状態を強制するインテリジェントに判断される強制アイドリングを使用することにより、システムを最小電力動作点（例えば、ＰL３０１）より低く動作させることができ、即ち、この強制アイドリングは、アイドル状態を強制すべきでないことが比較により示されるとき（例えば、既に充分なアイドル時間があったとき）があるので、インテリジェントである。
【００４６】
一実施形態では、最小電力動作点でデータ処理システムの動作を続け、そして動作時間（例えば、クロックの周期）のあるパーセンテージ（例えば、２０％）の間、データ処理システムをアイドル状態へ強制することにより、最小電力動作点より低い付加的な動作点が生成される。２０％強制アイドル（２０％の時間、システムがアイドルへ強制される）での最小動作点の有効電力は、最小動作点の電力の０．８倍と、アイドル状態の電力の０．２倍との和である。アイドル状態の電力は非常に低いので、インテリジェントに判断される強制アイドリングでのこの新たな動作点は、電力が最小動作点より低い点を表す。
【００４７】
一実施形態では、データ処理システムの任意の電力動作点において強制アイドル状態が与えられる。例えば、強制アイドル状態は、電力動作点３０１、３０２及び３０３のいずれでも与えられ、これらの強制アイドル状態は、ある実施形態において有用な中間点を生成する。
【００４８】
強制アイドルスキームを実施する際には多数の重要な事柄がある。あるソフトウェアタスク（例えば、マルチメディア再生）は、リアルタイム応答を要求し、遅延が生じる余裕がない。多数のハードウェア装置は、そのソフトウェアドライバが固定の待ち時間内にそれらに応答することを要求し、さもなければ、間違った動作が生じ得る。あるソフトウェアスレッド、例えば、リアルタイムタスク、割り込みは、強制アイドリングを受けることができない。強制アイドルを適切に実施するには、このような問題を考慮する必要がある（が、実施されるシステムのニーズに基づく要件ではない）。一実施形態では、オペレーティングシステム（ＯＳ）カーネルは、例えば、どのスレッドをオフに保持することができ、及びどれが強制アイドル設定とは独立して中間動作を要求するかを追跡する。このカーネルは、リアルタイムスレッドの存在中に長期間平均化強制アイドルパーセンテージが維持されることを保証する役割を果たす。一実施形態では、カーネルのスケジューラが、データ処理システムで実行される全てのプロセス／スレッドにおいて強制アイドリングを遂行する。一実施形態では、オペレーティングシステム（ＯＳ）スケジューラメカニズムを使用して、強制アイドリングが与えられる。
【００４９】
図４は、本発明の一実施形態によりデータ処理システムが動作を続ける間にそのシステムをアイドル状態へと強制するところを示す図である。図４に示すように、データ処理システムは、時間Ｔ3（４０１）のような動作時間のうちの部分Ｔ1（４０２）のような第２部分において完全（例えば、１００％）動作状態Ｓ1（４０７）で動作を続ける間に、時間Ｔ3（４０１）のような動作時間のうちの部分Ｔ2（４０３）のような第１部分においてアイドル状態Ｓ2（４０６）に入るよう強制される。一実施形態では、データ処理システムは、対応動作電圧について許された動作周波数において動作状態Ｓ1（４０７）で動作を続ける。一実施形態では、データ処理システムは、最低電圧において許された最大周波数において動作状態Ｓ1（４０７）で動作を続ける間にアイドル状態に入るように強制される。図４に示すように、データ処理システムは、時間ｔ1、ｔ2、ｔ3及びｔ4にアイドル状態に入るように強制される。
【００５０】
図５Ａは、本発明の一実施形態によりデータ処理システムが動作を続ける間にそのシステムをアイドル状態へ強制するところを示す図である。図５Ａに示すように、このシステムは、１つ以上の制約パラメータに基づくある動作周波数及び電圧において時間Ｔ1の部分５０２のような時間の別の部分中に動作を続ける間に、時間Ｔ1（５０６）の部分５０４のような時間の一部分中、アイドル状態へと強制される。一実施形態では、時間Ｔ1は、データ処理システムのクロック周期（例えば、Ｔ〜１／ｆ）である。一実施形態では、アイドル状態は、システムがインストラクションを実行するのを防止する。一実施形態では、システムがアイドル状態に入ると、クロックが停止される（動作周波数がゼロとなる）。図５Ａに示すように、システムをアイドル状態に強制するための変調のレートが一定に維持されて、システムがアイドル状態において費やす時間の部分及びシステムが完全動作状態において費やす時間の部分が実質的に同一に保たれるようにする。
【００５１】
図５Ｂは、本発明の別の実施形態によりデータ処理システムが動作を続ける間にそのシステムをアイドル状態へ強制するところを示す図である。図５Ｂに示すように、システムが強制アイドル状態にある間に、時間ｔ1に割り込み１（５０８）が受け取られる。図５Ｂに示すように、システムは、割り込み１に応答して、ある周波数及び電圧において完全（例えば、１００％）動作状態で動作するようにスイッチバックされる。一実施形態において、割り込みに応答してアイドル状態から完全動作状態へスイッチすることは、以下で詳細に述べるように、実際のアイドル時間及びターゲットアイドル時間に基づいて遂行される。割り込み１に応対した後に、システムは、強制アイドル状態へスイッチバックされる。図５Ｂに示すように、システムは、アイドル時間５１２の間、強制アイドル状態に保たれる。一実施形態では、アイドル時間５１２は、システムの制約パラメータと、割り込み１（時間５１０）に応対する完全動作状態においてシステムがどれほどの時間を費やしたかとに基づいて決定される。図５Ｂに示すように、システムがアイドル状態にある間に時間ｔ2において割り込み２が受け取られる。システムは、割り込み２に応答して完全（例えば、１００％）動作状態で動作するようにスイッチバックされる。図５Ｂに示すように、システムは、時間５１８の間、完全動作状態に保たれる。一実施形態では、時間５１８は、システムの制約パラメータ及び累積アイドル時間量に基づいて決定される。一実施形態では、累積アイドル時間は、データ処理システムの１つ以上のクロック周期にわたって決定される。図５Ｂに示すように、割り込みに応対した後、システムは、時間５２０の間、アイドル状態へ戻るよう強制され、次いで、以下に述べるようにシステム制約パラメータ及び累積アイドル時間により決定できる時間５２２の間、完全動作状態へスイッチして動作する。即ち、システムは、システムの応答性にとって非常に重要な熱／電力制約に基づいて強制アイドル状態中にいつでもプライオリティの高いタスクを行うよう割り込みに応対することが許される。
【００５２】
別の重要な事柄は、強制アイドルの変調のレートと、連続的な強制アイドル状態においてデータ処理システムが費やす最大時間である。（例えば、計算を実行するための）インストラクションの実行をイネーブル及びディスエイブルするための変調レートが速過ぎる場合には、強制アイドルループのオーバーヘッドを管理するのに著しい電力及び計算エネルギーが費やされる。インストラクションの実行をイネーブル及びディスエイブルするための変調レートが遅過ぎる場合には、高いアイドルパーセンテージにより、強制アイドル周期が実質的に長くなる。一実施形態では、以下に詳細に述べるように、低パーセンテージの強制アイドル周期が全て実質的に同じレートで実行されるように制御が行われる。一実施形態では、強制アイドルパーセンテージが、アイドル時間が希望の最大値であるスレッシュホールドに到達すると、以下に詳細に述べるように、最大アイドル時間を越えることがないようにアイドルレートが上がり始める。
【００５３】
図７は、データ処理システムをアイドル状態へ強制する方法７００の一実施形態のフローチャートである。この方法は、第１周波数及び第１電圧で動作するデータ処理システムの制約パラメータを監視することを含むオペレーション７０１で始まる。制約パラメータは、データ処理システムにより消費される電力、データ処理システムの温度、データ処理システムへ供給される電流、データ処理システムへ電力を供給するように結合されるバッテリの負荷、等である。制約パラメータは、上述したように、１つ以上のセンサを使用して監視され、測定される。この方法７００は、制約パラメータに基づいて、第２の周波数及び前記第１の電圧とは異なる（例えば、それより低い）第２の電圧でシステムが動作を続ける間に、システムをアイドル状態へ強制することを含むオペレーション７０２で続けられる。一実施形態では、データ処理システムをアイドル状態へ強制することは、インストラクションがシステムにより実行されるのを防止することを含む。一実施形態では、システムがアイドル状態にある期間が散在され、及び／又はシステムが高性能レベルで動作する期間とインターリーブされ、システムにより消費される平均電力が、システムの電力及び／又は熱的制約から決定される最大平均電力を越えないようにされる。即ち、強制アイドル状態のデューティサイクリングは、以下に詳細に述べるように、ユーザがそれらのマシンに何が生じるか知る必要がないようなレートで遂行される。一実施形態では、強制アイドル状態のデューティサイクリングは、完全に周波数ドメインにおいて遂行される。強制アイドリングメカニズムは、データ処理システムの電力管理を、図３Ａに示すＰL（３０１）のような最小電力動作点を更に越えて拡張する。
【００５４】
図８は、データ処理システムをアイドル状態へ強制する方法８００の一実施形態のフローチャートである。この方法は、第１周波数及び第１電圧で動作するデータ処理システムの制約パラメータ（例えば、実際の電力、温度、電流、バッテリ負荷、等の制約パラメータ、又はその組合せ）を監視することを含むオペレーション８０１で始まる。この方法は、制約パラメータが第１の制約パラメータスレッシュホールドより大きいかどうかを決定することを含むオペレーション８０２で続けられる。制約パラメータスレッシュホールドは、データ処理システムの仕様電力、温度、バッテリ負荷、電流に関連したものである。制約パラメータスレッシュホールドは、図１Ｂ及び２に示すサブシステムのようなデータ処理システムの複数のサブシステムに対して有効なワーストケースの値である。一実施形態では、制約パラメータスレッシュホールドは、例えば、多数の測定サンプルの統計学的分布曲線から決定されたワーストケース電力、温度、電流又はバッテリ負荷の値である。一実施形態では、測定された制約パラメータ、例えば、実際の測定電力、温度、電流、バッテリ負荷、又はその組合せが制約パラメータスレッシュホールドと比較されて、測定された制約パラメータが第１の制約パラメータスレッシュホールド以上であるかどうか決定する。制約パラメータが第１の制約パラメータスレッシュホールド以上でない場合には、オペレーション８０３において、制約パラメータが第２の制約パラメータスレッシュホールド未満であるかどうか決定される。第２の制約パラメータスレッシュホールドは、第１の制約パラメータスレッシュホールドからヒステリシスを差し引くことにより決定される。制約パラメータが第２の制約パラメータスレッシュホールド未満である場合には、動作点（例えば、周波数、電圧）がオペレーション８０４において上げられ、次いで、方法８００は、オペレーション８０１へ戻る。制約パラメータが第２の制約パラメータスレッシュホールド未満でない場合には、この方法は、オペレーション８０１へ戻る。制約パラメータが第１の制約パラメータスレッシュホールド以上である場合には、オペレーション８０６において、データ処理システムの第１動作電圧及び／又は第１動作周波数を更に下げられるかどうか決定される。次いで、第１動作電圧及び／又は第１動作周波数を更に下げられると決定された場合には、電力動作点（例えば、周波数及び／又は電圧）がオペレーション８０５において下げられ、次いで、方法８００は、オペレーション８０１へ戻る。第１動作電圧が、図３Ａに示すＶNのような中間動作電圧に対応し、及び／又は第１動作周波数がｆNのような中間動作電圧に対応する場合には、電圧及び／又は周波数を、例えば、最低動作周波数ｆL及び／又は電圧ＶLへ下げることにより、電力動作点を下方へ移動することができる。第１動作周波数及び／又は第１動作電圧を下げられないと決定された場合には、オペレーション８０７において、第１動作周波数及び第１動作電圧でシステムの動作を続けながら、データ処理システムをアイドル状態へ強制することが行われる。一実施形態では、第１動作電圧が最小動作電圧であるかどうか決定される。一実施形態では、第１動作電圧��最小電圧であり、且つ監視された実際の制約パラメータが制約パラメータスレッシュホールドより大きい場合に、システムをアイドル状態へ強制する。一実施形態では、データ処理システムをアイドル状態へ強制することは、データ処理システムによりインストラクションが実行されるのを防止することを含む。一実施形態では、システムが最小電圧で動作せず、且つ監視された実際の制約パラメータが制約パラメータスレッシュホールドより大きい場合に、システムの動作点（例えば、周波数及び／又は電圧）が下げられる。
【００５５】
一実施形態では、第１周波数及び第１電圧で動作するシステムに対するアイドル状態のパーセンテージが制約パラメータに基づいて決定される。例えば、アイドル状態のパーセンテージは、制約パラメータに基づいて減少又は増加される。
【００５６】
図９は、制約パラメータに基づいてデータ処理システムをアイドル状態へ強制する方法９００の一実施形態のフローチャートである。この方法９００は、上述したように、データ処理システムの制約パラメータ（例えば、実際の使用電力、実際の温度、電流、バッテリ負荷、又はその組合せ）を監視することを含むオペレーション９０１で開始する。オペレーション９０２において、上述したように、制約パラメータが制約パラメータスレッシュホールド以上であるかどうかの決定がなされる。オペレーション９０４において、制約パラメータが制約パラメータスレッシュホールド以上である場合には、全動作時間に対する強制アイドル状態のパーセンテージ（一部分）が上げられる。制約パラメータが制約パラメータスレッシュホールド未満であると決定された場合には、オペレーション９０３において、強制アイドル状態のパーセンテージを任意に下げることができる。
【００５７】
図４に戻ると、制約パラメータに基づいて、アイドル状態Ｔ2の部分がＴ2’（４０５）へ上げられ、そして完全動作状態Ｔ1の部分がＴ1’（４０４）へ下げられる。
【００５８】
図６は、アイドル状態に関する情報を含むテーブル６００の一実施形態を示す。図６に示すように、テーブル６００は、アイドル比、アイドルレート、及びアイドル時間、という列を含む。一実施形態では、低パーセンテージ（例えば３０％まで）強制アイドル期間は、全て、同じレートで実行される。強制アイドルパーセンテージが、アイドル状態で費やされる時間（アイドル時間）が希望の最大値であるところのスレッシュホールドに到達すると、最大アイドル時間を越えないようにアイドルレートが上がり始める。図６に示すように、アイドル比が３０以下であるときは、アイドルレートが３００００マイクロ秒の一定値に維持され、そしてアイドル比が増加するにつれてアイドル時間が増加される。図６に示すように、アイドル比が３０より大きくなると、アイドルレートが高くなり、一方、アイドル時間は、１００００マイクロ秒の一定値に保持される。
【００５９】
図１２は、データ処理システムの電力をターゲット電力へと管理するための方法１２２０の一実施形態のフローチャートである。この方法１２２０は、１２００で開始される。１２０１において、初期化が行われ、「積分エラー(Integral Error)」がゼロにセットされる（積分エラー＝０）。一実施形態では、積分エラーとは、データ処理システムの測定電力とターゲット電力との間の差として定義される。オペレーション１２０２では、方法１２２０は、データ処理システムの電力を測定するために次のサンプルインターバルを待機する。オペレーション１２０３では、データ処理システムのターゲット電力及び測定電力が受け取られる。一実施形態では、電力は、上述したように、１つ以上のセンサを使用してサンプル時間インターバル中に測定される。データ処理システムのターゲット電力は、上述したように、データ処理システムの１つ以上のシステム制約パラメータ及び希望の性能に基づいて計算される。オペレーション１２０４において、サンプルインターバル中に測定された電力とデータ処理システムのターゲット電力との間の差（エラー）が決定される。オペレーション１２０５では、累積エラー（積分エラー）が決定される。一実施形態では、サンプルインターバルにわたって累積された積分エラーが決定される。一実施形態では、データ処理システムの１つ以上のクロック周期にわたって累積された積分エラーが決定される。オペレーション１２０６では、ある時間（例えば、１つ以上のクロック周期、及び／又はデータ処理システムのサンプルインターバル）にわたる積分電力（ＰＩ）が決定される。一実施形態では、ＰＩは、次の式を使用して制御システム利得「Ｇ項」をエラー及び積分エラーに適用することにより計算される。
ＰＩ＝Ｇｐ＊Error＋Ｇｉ Integral＊Error                  （１）
但し、Ｇｐは、サンプリングインターバルにわたって決定されるエラーに対する重み付けファクタに関連したものであり、そしてＧｉは、積分エラーに対する重み付けファクタに関連したものである。オペレーション１２０７において、積分電力（ＰＩ）が上限スレッシュホールド（＋スレッシュホールド）より大きいかどうかの決定がなされる。ＰＩが上限スレッシュホールドより大きい場合には、オペレーション１２０９において、動作電力点が下げられる。ＰＩが上限スレッシュホールド以下である場合には、オペレーション１２０８において、ＰＩが下限スレッシュホールドより小さいかどうかの決定がなされる。ＰＩが下限スレッシュホールドより小さい場合には、オペレーション１２１０において、動作電力点が上げられる。
【００６０】
図１５は、強制アイドルを伴わずに動作電力点を下げる（１５０１）ための方法１５００の一実施形態のフローチャートである。オペレーション１５０２において、周波数及び／又は電圧が最低（最小）レベルであるかどうか決定される。周波数及び／又は電圧が最低レベルでない場合には、オペレーション１５０３において、周波数及び／又は電圧が下げられる。周波数及び／又は電圧が最低レベルである場合には、方法１５００は、１５０４で終了となる。しかしながら、多くの状況においては、この最低レベルは、充分なものでなく、この最低レベルにおいて良好な性能を得るためにインテリジェントな強制アイドリングを使用することができる。
【００６１】
図１６は、強制アイドルを含む動作電力点を下げる（１６０１）ための方法１６００の一実施形態のフローチャートである。オペレーション１６０２において、周波数及び／又は電圧が最低レベルであるかどうかの決定がなされる。周波数及び／又は電圧が最低レベルでない場合には、オペレーション１６０３において、周波数及び／又は電圧が下げられる。周波数及び／又は電圧が最低レベルである場合には、オペレーション１６０４において、強制アイドルパーセンテージが最大アイドルパーセンテージレベルであるかどうかの決定がなされる。強制アイドルパーセンテージが最大アイドルパーセンテージレベルでない場合には、オペレーション１６０５において、強制アイドルパーセンテージが上げられる。方法１６００は、１６０６において終了となる。
【００６２】
図１３は、強制アイドルを伴わずに動作電力点を上げる（１３０１）ための方法１３００の一実施形態のフローチャートである。オペレーション１３０３において、周波数及び／又は電圧が最高（最大）レベルであるかどうかの決定がなされる。データ処理システムの周波数及び／又は電圧が最大レベルでない場合には、この方法は、データ処理システムの周波数及び／又は電圧を上げることを含むオペレーション１３０３で続けられる。周波数及び／又は電圧が最高レベルである場合には、方法１３００が終了となる。
【００６３】
図１４は、強制アイドルを含む動作電力点を上げる（１４０１）ための方法１４００の一実施形態のフローチャートである。オペレーション１４０２において、強制アイドルパーセンテージが０％であるかどうかの決定がなされる。強制アイドルパーセンテージが０％でない場合には、オペレーション１４０３において、強制アイドルパーセンテージが下げられる。強制アイドルパーセンテージが０％である場合には、オペレーション１４０４において、周波数及び／又は電圧が最高レベルであるかどうかの決定がなされる。周波数及び／又は電圧が最高レベルでない場合には、オペレーション１４０５において、周波数及び／又は電圧が上げられる。この方法は、１４０６において終了となる。
【００６４】
図１７は、データ処理システムに対して強制アイドル状態を与える方法１７００の一実施形態のフローチャートである。図１７に示すように、この方法１７００は、上述したように、データ処理システムの１つ以上の制約パラメータを監視することを含むオペレーション１７０１で始まる。この方法は、１つ以上の制約パラメータに基づいて、データ処理システムを第１の時間部分中にアイドル状態へ強制する一方、システムを第２の時間部分中に動作できるようにすることを含むオペレーション１７０２で続けられる。このように強制することは、ターゲットアイドル時間と実際のアイドル時間との間の比較に応答して行われる。
【００６５】
図１８は、強制アイドル状態からスイッチするための方法１８００の一実施形態のフローチャートである。この方法１８００は、データ処理システムの１つ以上の制約パラメータに基づいてターゲット強制アイドル時間を決定することを含むオペレーション１８０１で開始される。例えば、ターゲット強制アイドル時間は、動作期間（例えば、データ処理システムのクロック周期）をアイドル比に乗算することにより決定される。一実施形態では、アイドル比は、上述したように、全動作時間に対するアイドル時間の一部分に関連している。一実施形態では、アイドル比は、システム電力／熱的制約及びシステム性能に基づいて決定される。この方法は、データ処理システムがアイドル状態において費やす実際の時間（実際のアイドル時間）を監視することを含むオペレーション１８０２で開始される。一実施形態では、実際のアイドル時間は、１つ以上のセンサにより測定されて、システムのメモリに記憶され、システムの１つ以上のクロック周期にわたる累積アイドル時間が与えられる。一実施形態では、この累積アイドル時間は、システムの１つ以上のクロック周期にわたり決定される。
【００６６】
オペレーション１８０３において、実際のアイドル時間に基づいて累積アイドル時間が決定される。オペレーション１８０４において、累積アイドル時間がターゲットアイドル時間以上であるかどうかの決定がなされる。累積アイドル時間がターゲットアイドル時間以上である場合には、システムは、オペレーション１８０５において、ターゲットアイドル時間及び累積アイドル時間に基づいて、時間の一部分中に、アイドル状態から完全動作状態へスイッチすることが許される。一実施形態では、システムは、動作時間の一部分中にオペレーションを継続するようにアイドル状態からスイッチされる。一実施形態では、アイドル状態は、データ処理システムが、実行を待機しているソフトウェアインストラクションを実行することを防止する。又、一実施形態では、データ処理システムのメモリは、１つ以上の制約パラメータに関連したターゲットアイドル時間を含む１つ以上のルックアップテーブルを記憶する。
【００６７】
図１９は、強制アイドル状態を与えるための方法１９００の一実施形態のフローチャートである。この方法１９００は、強制アイドル状態をスタートさせることを含む１９０１において開始される。オペレーション１９０２において、データ処理システムの実行が許される時間と強制アイドル時間との比（動作比）が１００より小さいかどうか決定される。この動作比が１００より小さい場合には、アイドルパーセンテージ（部分）がオペレーション１９０３において次の式を使用して決定される。
ｍａｘ＿ｉｄｌｅ＝（(１００−動作比)＊周期）／１００          （２）
但し、周期は、システムの周波数をｆとすれば、システムのクロック周期Ｔ＝１／ｆを表す。
【００６８】
次いで、オペレーション１９０５において、アイドルパーセンテージが最後のアイドル（ｌａｓｔ＿ｉｄｌｅ）より大きいかどうかの決定がなされる。一実施形態では、最後のアイドルは、手前の時間、例えば、システムのクロック周期から決定される。ｍａｘ＿ｉｄｌｅがｌａｓｔ＿ｉｄｌｅより大きい場合には、オペレーション１９０７において、次の式に基づいて最後のアイドルを考慮することにより、累積アイドルが計算される。
ｍａｘ＿ｉｄｌｅ＝ｍａｘ＿ｉｄｌｅ−ｌａｓｔ＿ｉｄｌｅ        （３）
【００６９】
ｍａｘ＿ｉｄｌｅがｌａｓｔ＿ｉｄｌｅ以下である場合には、ｍａｘ＿ｉｄｌｅがオペレーション１９０６において０にセットされる。次いで、方法１９００は、次の式に基づきデータ処理システムの動作を許すための周期の終わりを決定することを含むオペレーション１９０８を続ける。
ｐｅｒｉｏｄ＿ｅｎｄ＝ｎｏｗ＋Ｐｅｒｉｏｄ                    （４）
但し、“ｎｏｗ”が、現在時間であり、“Ｐｅｒｉｏｄ”は、クロック周期である。
【００７０】
次いで、オペレーション１９０９において、ターゲットアイドル時間が次の式に基づいて決定される（ｉｄｌｅ＿ｇｏａｌ）。
ｉｄｌｅ＿ｇｏａｌ＝ａｃｃｕｍｕｌａｔｅｄ＿ｉｄｌｅ
＋ｍａｘｉｍｕｍ  ｉｄｌｅ    （５）
但し、“ａｃｃｕｍｕｌａｔｅｄ＿ｉｄｌｅ”は、１つ以上の手前の時間（例えば、クロック周期）から累積されるアイドル時間の合計量であり、そして“ｍａｘｉｍｕｍ  ｉｄｌｅ”は、最新のアイドル時間である。
【００７１】
更に、オペレーション１９１０において、累積アイドルがｉｄｌｅ＿ｇｏａｌより小さいかどうか決定される。累積アイドルがｉｄｌｅ＿ｇｏａｌより小さい場合には、オペレーション１９１４において、プライオリティの高いスレッドのみが実行を許される。データ処理システム（例えば、ＣＰＵ）は、オペレーション１９１５において、ｍａｘ＿ｉｄｌｅ時間までの間、アイドル状態へ強制される。一実施形態では、割り込みによりシステムがアイドル状態から退出させられる。累積アイドルは、データ処理システムが割り込みを考慮して強制アイドル状態において費やす時間量について更新される。次いで、方法１９００は、オペレーション１９１０へ戻る。累積アイドルがｉｄｌｅ＿ｇｏａｌ以上である場合には、オペレーション１９１１において、アイドルスタート時間がａｃｃｕｍｕｌａｔｅｄ＿ｉｄｌｅであるようにセットされる。方法１９００は、オペレーション１９０８で決定されたｐｅｒｉｏｄ＿ｅｎｄまでスレッドの実行を許すことを含むオペレーション１９１２で続けられる。オペレーション１９１３において、ｌａｓｔ＿ｉｄｌｅは、次の式に基づいて決定される。
ｌａｓｔ＿ｉｄｌｅ＝ａｃｃｕｍｕｌａｔｅｄ＿ｉｄｌｅ−ｉｄｌｅ＿ｓｔａｒｔ (6)
次いで、方法１９００は、オペレーション１９０２へ戻る。
【００７２】
図１８及び１９に示すインテリジェントな強制アイドリングは、２００５年８月２５日に出願された米国特許出願第１１／２１２，９７０号、及び／又は２００６年１月５日に出願された米国特許出願第１１／３２７，６８５号に説明された１つ以上の電力及び／又は熱管理技術との組合せで遂行することができる。例えば、インテリジェントな強制アイドリングを電力使用量の平均化と共に使用して、将来の時間インターバルに対する許容電力バジェットをダイナミックに決定することができ、図１０及び１１は、米国特許出願第１１／２１２，９７０号からのもので、電力使用量の平均化を使用する実施形態に関連しており、これら実施形態及び図面は、その特許出願において詳細に説明されている。
【００７３】
以上、本発明の特定の実施形態を説明した。本発明の広い精神及び範囲から逸脱せずに種々の変更がなされ得ることが明らかであろう。従って、明細書及び図面は、例示に過ぎず、それに限定されるものではない。
【符号の説明】
【００７４】
１００：コンピュータシステム
１０２：バス
１０３：マイクロプロセッサ
１０４：キャッシュメモリ
１０５：揮発性ＲＡＭ
１０６：不揮発性メモリ
１０７：ＲＯＭ
１０８：ディスプレイコントローラ
１０９：Ｉ／Ｏコントローラ
１１０：Ｉ／Ｏ装置
１１１：電力使用量センサ
１２０：システム
１２１：サブシステム
１２２：サブシステム
１２３：ＲＯＭ
１２４：揮発性ＲＡＭ
１２５：キャッシュメモリ
１２６：バス
１２７：マイクロコントローラ
１２８：センサ
１２９：サブシステム
１３０：不揮発性メモリ
２００：システム
２０１：サブシステムＡ
２０２：サブシステムＢ
２０３：サブシステムＮ
２０４：サブシステムＣ
２０５：サブシステムＤ
２０６：相互接続部
２０７：測定装置
２０８：電力マネージャー
２０９：電力ルックアップテーブル
【図１Ａ】
0005592269.tif 000002
【図１Ｂ】
0005592269.tif 000003
【図２】
0005592269.tif 000004
【図３Ａ】
0005592269.tif 000005
【図３Ｂ】
0005592269.tif 000006
【図４】
0005592269.tif 000007
【図５Ａ】
0005592269.tif 000008
【図５Ｂ】
0005592269.tif 000009
【図６】
0005592269.tif 000010
【図７】
0005592269.tif 000011
【図８】
0005592269.tif 000012
【図９】
0005592269.tif 000013
【図１０】
0005592269.tif 000014
【図１１】
0005592269.tif 000015
【図１２】
0005592269.tif 000016
【図１３】
0005592269.tif 000017
【図１４】
0005592269.tif 000018
【図１５】
0005592269.tif 000019
【図１６】
0005592269.tif 000020
【図１７】
0005592269.tif 000021
【図１８】
0005592269.tif 000022
【図１９】
0005592269.tif 000023