(57)【特許請求の範囲】
【請求項１】
電力マネージャを使用して、ノード上で実行するためのタスクを含むアプリケーションに対応する、フェーズのシーケンスを決定するステップであって、該シーケンスは電力上限に関連する時間間隔に対応する、ステップと、
各フェーズに対して、前記ノード内の複数の電力ドメインに分配される電力の増加又は減少のため、フェーズの実行時間が電力にどのようにスケーリングするかを測定して、電力スケーリングを決定するステップと
各フェーズに対する前記電力スケーリングに基づいて、前記シーケンスのフェーズ間での時間的電力分配を決定して、前記電力上限を満たし、前記ノードによる前記アプリケーションの実行時間パフォーマンスを改善又は最適化するステップと、を含み、
パフォーマンス指標と、目的関数と、前記パフォーマンス指標を評価するための測定間隔及び測定イベントのうちの少なくとも一つと、を選択するステップをさらに含み、
前記パフォーマンス指標は、前記ノードによる前記アプリケーションの実行時間パフォーマンスを改善又は最適化するように選択され、
前記目的関数は、前記電力上限内でのパフォーマンスを最大化すること、パフォーマンスを最大化すること、前記電力上限内でエネルギー効率を最大にすること、及び効率を最大にすることを含む群から選択される、方法。
【請求項２】
現在フェーズを検出するために前記アプリケーションをモニタするステップと、
前記現在フェーズにおいて、前記時間的電力分配が前記目的関数を満たさないと決定するステップと、
前記決定に応じて、前記シーケンスのフェーズ間で前記電力を時間的に再分配するステップと、をさらに含む、請求項１に記載の方法。
【請求項３】
前記シーケンスのフェーズ間で前記電力を時間的に再分配するステップは、
前記シーケンスのフェーズ間で新しい時間的電力分配を選択するステップと、
前記時間的電力分配に基づいて、前記現在フェーズが省電力又は加速のために指定されているかどうかを決定するステップと、
前記現在フェーズが省電力のために指定されている場合、前記新しい時間的電力分配に従って前記ノード内の複数の電力ドメインに対する電力を下げるステップと、
前記現在フェーズが加速のために指定されている場合、前記新しい時間的電力分配に従って前記ノード内の複数の電力ドメインに対する電力を上げるステップと、を含む、請求項２に記載の方法。
【請求項４】
前記現在フェーズが省電力又は加速のために指定されているかどうかを示す、前記アプリケーションのコンピュータ実行可能コード内のアノテーションを検出するステップをさらに含む、請求項３に記載の方法。
【請求項５】
前記ノード内の複数の電力ドメイン間の電力分配が前記パフォーマンス指標を満たさないと決定するステップと、
前記決定に応じて、前記新しい時間的電力分配に基づいて、前記現在フェーズにおける前記複数の電力ドメイン間の前記電力を再分配するステップと、をさらに含む、請求項３に記載の方法。
【請求項６】
前記アプリケーション、前記ノード、前記電力上限及び前記ノードを含むシステムのうちの少なくとも一つの変化を検出するステップと、
検出された前記変化に応じて、前記シーケンスのフェーズ間の時間的電力分配を再構成するステップと、をさらに含む、請求項１に記載の方法。
【請求項７】
計算結合フェーズ、記憶結合フェーズ、通信結合フェーズ、アイドルフェーズ、アクティブフェーズ及びそれらのフェーズの任意のものの組み合わせのうち少なくとも２つを検出するステップをさらに含む、請求項１に記載の方法。
【請求項８】
前記シーケンスの各フェーズに対して、前記シーケンスの第１反復に基づいた前記時間的電力分配を決定するステップと、
前記シーケンスの各フェーズに対して、前記シーケンスの第２反復に前記時間的電力分配を適用するステップと、をさらに含む、請求項１に記載の方法。
【請求項９】
少なくとも一部にハードウェアを含むロジックを含む電力マネージャであって、該電力マネージャは、
ノード上で実行するためのタスクを含むアプリケーションのフェーズのシーケンスを決定するフェーズモジュールであって、該シーケンスは電力上限に関連する時間間隔に対応し、各フェーズは、他のフェーズの動作挙動とは異なる動作挙動を呈するアプリケーションのセグメントを有する、フェーズモジュールと、
前記シーケンスのフェーズ間の時間的電力分配を決定して、前記電力上限を満たし、前記アプリケーションの実行時間パフォーマンスを改善又は最適化する動的時間的電力スケジューラモジュールと、を含み、
前記電力マネージャは、パフォーマンス指標と、目的関数と、前記パフォーマンス指標を評価するための測定間隔及び測定イベントのうちの少なくとも一つと、を選択するように構成され、
前記目的関数は、前記アプリケーションの実行時間パフォーマンスを改善又は最適化するように選択される、装置。
【請求項１０】
前記フェーズモジュールは、さらに、現在フェーズを検出するために前記アプリケーションをモニタするように構成され、
前記動的時間的電力スケジューラモジュールは、さらに、
前記現在フェーズにおいて、前記時間的電力分配が前記目的関数を満たさないと決定し、
前記決定に応じて、前記シーケンスのフェーズ間で電力を時間的に再分配する、ように構成されている、請求項９に記載の装置。
【請求項１１】
前記電力を時間的に再分配するために、前記動的時間的電力スケジューラモジュールは、さらに、
前記シーケンスのフェーズ間で新しい時間的電力分配を選択し、
前記時間的電力分配に基づいて、前記現在フェーズが省電力又は加速のために指定されているかどうかを決定し、
前記現在フェーズが省電力のために指定されている場合、前記新しい時間的電力分配に従って、前記ノード内の複数の電力ドメインに対する電力を下げ、
前記現在フェーズが加速のために指定されている場合、前記新しい時間的電力分配に従って前記ノード内の複数の電力ドメインに対する電力を上げる、ように構成されている、請求項１０に記載の装置。
【請求項１２】
前記動的時間的電力スケジューラモジュールは、さらに、前記現在フェーズが省電力又は加速のために指定されているかどうかを示す、前記アプリケーションのコンピュータ実行可能コード内のアノテーションを検出するように構成されている、請求項１１に記載の装置。
【請求項１３】
前記電力マネージャは、さらに、
前記ノード内の複数の電力ドメイン間の電力分配が前記目的関数を満たさないと決定し、
前記決定に応じて、前記新しい時間的電力分配に基づいて、前記現在フェーズにおける前記複数の電力ドメイン間の前記電力を再分配する、ように構成されている請求項１１に記載の装置。
【請求項１４】
前記電力マネージャは、さらに、
前記アプリケーション、前記ノード、前記電力上限及び前記装置を含むシステムのうちの少なくとも一つの変化を検出し、
検出された前記変化に応じて、前記シーケンスのフェーズ間の時間的電力分配を再構成する、ように構成されている、請求項９から１３のいずれか一項に記載の装置。
【請求項１５】
システムであって、
少なくとも一つのコアドメインと、少なくとも一つのアンコアドメインとを含む複数の電力ドメインと、
一つ以上のプロセッサによって実行されると、該一つ以上のプロセッサに動作を実行させる命令を記憶した少なくとも一つのコンピュータ読み取り可能記憶媒体と、を含み、
該動作は、
当該システムによって実行されるアプリケーションのフェーズのシーケンスを決定するステップであって、該シーケンスは、電力上限に関連する時間間隔に対応する、ステップと、
各フェーズに対して、当該システム内の前記複数の電力ドメインに分配される電力の増加又は減少のため、フェーズの実行時間が電力にどのようにスケーリングするかを測定して、電力スケーリングを決定するステップと、
各フェーズに対する前記電力スケーリングに基づいて、前記シーケンスのフェーズ間での時間的電力分配を決定して、前記電力上限を満たし、当該システムによる前記アプリケーションの実行時間パフォーマンスを改善又は最適化するステップと、を含み、
前記動作は、パフォーマンス指標と、目的関数と、前記パフォーマンス指標を評価するための測定間隔及び測定イベントのうちの少なくとも一つと、を選択するステップをさらに含み、
前記パフォーマンス指標は、当該システムによる前記アプリケーションの実行時間パフォーマンスを改善又は最適化するように選択される、システム。
【請求項１６】
前記動作は、
現在フェーズを検出するために前記アプリケーションをモニタするステップと、
前記現在フェーズにおいて、前記時間的電力分配が前記目的関数を満たさないと決定するステップと、
前記決定に応じて、前記シーケンスのフェーズ間で前記電力を時間的に再分配するステップと、をさらに含む、請求項１５に記載のシステム。
【請求項１７】
前記シーケンスのフェーズ間で前記電力を時間的に再分配するために、前記動作は、
前記シーケンスのフェーズ間で新しい時間的電力分配を選択するステップと、
前記時間的電力分配に基づいて、前記現在フェーズが省電力又は加速のために指定されているかどうかを決定するステップと、
前記現在フェーズが省電力のために指定されている場合、前記新しい時間的電力分配に従って当該システム内の複数の電力ドメインに対する電力を下げるステップと、
前記現在フェーズが加速のために指定されている場合、前記新しい時間的電力分配に従って当該システム内の複数の電力ドメインに対する電力を上げるステップと、をさらに含む、請求項１６に記載のシステム。
【請求項１８】
前記動作は、前記現在フェーズが省電力又は加速のために指定されているかどうかを示す、前記アプリケーションのコンピュータ実行可能コード内のアノテーションを検出するステップをさらに含む、請求項１７に記載のシステム。
【請求項１９】
前記動作は、
当該システム内の複数の電力ドメイン間の電力分配が前記パフォーマンス指標を満たさないと決定するステップと、
前記決定に応じて、前記新しい時間的電力分配に基づいて、前記現在フェーズにおける前記複数の電力ドメイン間の前記電力を再分配するステップと、をさらに含む、請求項１７に記載のシステム。
【請求項２０】
前記フェーズのシーケンスを決定するために、前記動作は、
前記アプリケーション、前記電力上限及び当該システムのうちの少なくとも一つの変化を検出するステップと、
検出された前記変化に応じて、前記シーケンスのフェーズ間の時間的電力分配を再構成するステップと、をさらに含む、請求項１５から１９のいずれか一項に記載のシステム。
【請求項２１】
前記フェーズのシーケンスを決定するために、前記動作は、計算結合フェーズ、記憶結合フェーズ、通信結合フェーズ、アイドルフェーズ、アクティブフェーズ及びそれらのフェーズの任意のものの組み合わせのうち少なくとも２つを検出するステップをさらに含む、請求項１５から１９のいずれか一項に記載のシステム。
【請求項２２】
前記動作は、
前記シーケンスの各フェーズに対して、前記シーケンスの第１反復に基づいた前記時間的電力分配を決定するステップと、
前記シーケンスの各フェーズに対して、前記シーケンスの第２反復に前記時間的電力分配を適用するステップと、をさらに含む、請求項１５から１９のいずれか一項に記載のシステム。
【請求項２３】
実行されると、請求項１から８のいずれか一項に記載の方法を実施するプログラム。
【請求項２４】
請求項１から８のいずれか一項に記載の方法を実行する手段を含む装置。
【請求項２５】
請求項２３に記載のプログラムを記憶している機械読み取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、サーバ及び他の計算装置のための電力管理に関する。
【背景技術】
【０００２】
半導体処理及びロジック設計の進歩は、集積回路装置上に存在し得るロジックの量の増加を可能にしてきた。その結果、コンピュータシステム構成は、システム内に複数の集積回路があるものから、個々の集積回路上に複数のハードウェアスレッド、複数のコア、複数の装置及び／又は完全なシステムがあるものに発展してきた。集積回路の集積度が高まるにつれて、計算システム（組み込みシステムから高パフォーマンス計算（ＨＰＣ）システム）への電力要件も高まっている。
【０００３】
電力及び熱管理の問題は、コンピュータベースのシステムを設計する際の考慮事項である。ＨＰＣシステムでは、例えば、指定された熱設計電力（ＴＤＰ）及び／又は電力コストが、低電力システムの必要性を促進し得る。モバイルシステムを含む他のシステムにおいても、バッテリ寿命と熱的制約により、それらの事項と関連がある。最低限の電力消費で最大のパフォーマンスを得るためのシステムの最適化は、通常では、オペレーティングシステム（ＯＳ）又はハードウェア要素を制御するシステムソフトウェアを使用してなされる。
【０００４】
電力及び熱制御のためのいくつかのモデルは、比較的大きく、動的に調整可能な時間ウィンドウで、ハードウェア装置の実行平均電力をモニタし、所与の閾値以下にこの平均電力を維持することができる。このようなアプローチにより、装置は短期間（実行平均電力がリミット内に留まる限り）であれば上記のリミットを超えた電力を消費することができるが、装置の電源と冷却ソリューションはエクスカーション（excursion）の大きさと長さに制限を設ける。
【図面の簡単な説明】
【０００５】
アレンジメント及び実施形態は、次の図面を参照して詳細に説明されることができる。ここで、類似の参照符号は、類似の要素を示す。
【０００６】
【図１】図１は、本明細書で説明する、様々な実施形態を実装するのに適した例示的なコンピュータシステムの実施形態を示す。
【０００７】
【図２Ａ】図２Ａは、いくつかの実施形態による、例示的なフェーズのシーケンスの繰り返しを示す。
【図２Ｂ】図２Ｂは、いくつかの実施形態による、例示的なフェーズのシーケンスの繰り返しを示す。
【図２Ｃ】図２Ｃは、いくつかの実施形態による、例示的なフェーズのシーケンスの繰り返しを示す。
【０００８】
【図３】図３は、いくつかの実施形態による、装置のブロック図である。
【０００９】
【図４】図４は、一実施形態による、動的時間的電力ステアリングのための方法のフローチャートである。
【００１０】
【図５】図５は、一実施形態による、時間的電力分配及び空間電力ステアリングの両方のためのフローチャートである。
【発明を実施するための形態】
【００１１】
本明細書で開示される実施形態は、概して、コンピュータシステム上の作業負荷を管理するための装置、方法及び他の技術を対象とする。コンピュータシステムによって実行されるソフトウェアアプリケーションは、共通の目的（例えば、ある問題に対する解答を計算する）に向かって一緒に作業する一群のタスクを含むことができる。タスクは、一つ以上のノード上で実行することができる。ノードの内部には、一つ以上のタスクがあることができ、各タスクは一つ以上の処理スレッドを含むことができる。特定の実施形態は、装置又はコンピュータシステムによって実行されるアプリケーションのフェーズ間で動的時間的電力ステアリング（dynamic  temporal  power  steering）を提供する。各フェーズに対して、電力は、コンピュータシステム内の複数の電力ドメイン間で分配される。
【００１２】
用語「電力ドメイン」又は単にドメインは、本明細書では、電力消費に関してモニタ及び制御されるができるコンポーネント又はコンポーネントのセットを示すために使用される。特定の実施形態は、アプリケーション又はシステムの挙動の実行時間を、安定した又は予測可能な動作挙動を呈するセグメントに自動的に分割する。安定した又は予測可能なセグメントは、本明細書では、アプリケーションの「フェーズ」と呼ばれる。各フェーズは、例えば、他のフェーズの動作挙動と異なる動作挙動を呈するアプリケーションのセグメントを含む。フェーズは、例えば、計算結合フェーズ（compute  bound  phase）、記憶結合フェーズ、通信結合フェーズ、計算／記憶／通信の混合フェーズ、アイドルフェーズ、アクティブフェーズ、任意の動作挙動に結合されるその他のフェーズを含むことができる。アプリケーションの異なるフェーズは、ノード（例えば、サーバ）内のリソース又はドメイン（例えば、コア、アンコア、メモリなど）が異なることがある。
【００１３】
時間次元においてフェーズ境界を越えたより効率的な電力使用のための機会を特定することによって、アプリケーションのパフォーマンスは最適化又は改善されることができる。例えば、動的時間的電力ステアリングは、記憶結合フェーズのパフォーマンスを潜在的に低下させながら、記憶結合フェーズ中、コンピュータシステムの電力リミットを下げることを特定することができ、その電力を計算結合フェーズに与えることで（すなわち、計算結合フェーズ中、コンピュータシステムの電力リミットを比例的に上げる）アプリケーション全体のパフォーマンスを向上させることができる。
【００１４】
動的時間的電力ステアリングの実施形態は、全体としてアプリケーションの挙動を決定又は学習し、電力をあるフェーズから別のフェーズに移す（すなわち、コンピュータシステムの電力リミットを上げる又は下げる）ことによってパフォーマンスを改善する機会を特定する。以下に詳細に説明するように、例えば、ある実施形態では、電力にあまりスケーリングしないパフォーマンス（例えば、パフォーマンスの向上がパフォーマンスを上げるために必要とされる電力増加に比べて不相応に低い）のフェーズ中は電力を意図的に確保しておき（reserve）、電力に良好にスケーリングするパフォーマンスのフェーズのパフォーマンスを引き上げるために電力をさらに使用することで、エネルギーバジェットを全体的に維持しながら、アプリケーションのより高いパフォーマンスをもたらす。
【００１５】
このような実施形態は、他の電力管理アプローチと比べて、アプリケーションパフォーマンス又は電力管理の他の目的関数（例えば、エネルギー遅延プロダクト（ＥＤＰ：energy-delay  product）又はエネルギー遅延スクエアプロダクト（ＥＤ２Ｐ：energy-delay-square  product）のようなシステム効率指標を改善すること）における明らかな向上を提供することができる。他のアプローチは、電力管理の目的関数（例えば、パフォーマンス、効率性、ＥＤＰ、ＥＤ２Ｐ等）に決して害を及ぼさないというパラダイムの下で動作する一方で、本明細書で開示される特定の実施形態は、いくつかのフェーズでは電力管理の目的関数に意図的に「ダメージ」を与え、他のフェーズでより大きな改善を生み出すことができ、アプリケーション全体としての電力管理の目的関数を改善するようにする。
【００１６】
本明細書での説明の目的のため、特定の例を高パフォーマンス計算（ＨＰＣ）システムに関して説明することがある。しかし、本開示の範囲はＨＰＣの例に限定されず、実施形態は、任意の大規模なクラウド、ビッグデータ、ＨＰＣ、他のシステム等の高電力コンピュータシステムから、ラップトップ、Ｕｌｔｒａｂｏｏｋ（登録商標）、タブレットコンピュータ、スマートフォン、他のポータブル装置等の低電力コンピュータシステムに至るまで多くの様々なタイプのコンピュータシステムに対する解決手段を可能とするように高度に拡張可能である。実施形態は、デスクトップコンピュータなどの高電力システムと低電力システムとの間にある電力要件を有するシステムにも等しく適用される。
【００１７】
他の解決策は、アプリケーション実行全体にわたる平均電力のような特性に基づいてドメインに電力を静的に割り当てる、又は電力をモニタして動的に割り当てるが、直近のｋ時間ウィンドウでの挙動履歴にわたるアプリケーション特性に基づいて行う。電力がドメインに静的に割り当てられる場合、特定のドメインが全ての電力割り当てを使用しているときや、より多くの電力が与えられた場合にドメインがより高速に実行できるときや、ドメインが全電力バジェットを使用しないとき（すなわち、電力が取り残される）があり得る。時間ウィンドウでの挙動履歴に基づいて電力を動的に割り当てる解決手段は、全体を通してずっと安定した状態の挙動（単一フェーズ）を備えたアプリケーションの電力の取り残しを改善することができるが、異なる特性を備えた複数のフェーズを有するアプリケーションではほとんど、又は全く改善されない可能性がある。このようなソリューションは、インターバルの間に（部分的に又は完全に）実行する任意のフェーズの挙動をブレンドする時間ウィンドウ（固定又は可変）で挙動をモニタする。このようなソリューションは、過去のウィンドウでブレンドされた挙動が将来の挙動の良い予測値になることを想定しており、各時間ウィンドウが異なる動作挙動及び異なる最適な電力割り当てで完全に異なるアプリケーションフェーズが含むことがある。
【００１８】
ＨＰＣソフトウェアアプリケーションは、異なる動作挙動を備えた（したがって、ドメイン内で異なるアクティビティを備えた）複数のフェーズを有するので、ドメインへの電力の静的な割り当てでは最適ではない可能性がある。例えば、コンピュータが２つのドメインを含み、一方がプロセッサであり、他方がメインメモリ（例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、不揮発性メモリ又は他のメモリ装置）であると仮定する。コンピュータが平均電力１００Ｗを超えることができず、アプリケーションのフェーズ全体にわたるアプリケーションの特性を通じて、最適な静的割り当てはプロセッサに対しては５０Ｗの平均電力リミットであり、メインメモリに対しては５０Ｗの平均電力リミットであると決定されたと仮定する。この例では、アプリケーション実行時間（runtime）を大幅に増加させることなく記憶結合フェーズで平均電力は５０Ｗ未満に下げられないので、５０Ｗが最適であると決定される。しかし、アプリケーションフェーズのうち計算結合フェーズ及び通信結合フェーズ中、主メモリドメインに予約されている５０Ｗをフルに利用する十分な記憶アクティビティがない。このように、静的割り当ては、取り残された電力（現在のドメインが必要とするよりも必要とするドメインのために確保された電力）及び準最適なパフォーマンスをもたらす。
【００１９】
ＨＰＣクラスタ又はスーパコンピュータは、アプリケーションが最高パフォーマンスに達するために必要とする電力よりも電力上限が低くなるように「電力制約」をかけて実行することができる。電力制約されたシナリオでは、可能な限り効率的に電力を使用することでパフォーマンスを向上させる。電力上限は、定義された期間（time  period）にわたってシステムに使用されることができる最大平均電力である。しかし、所定の期間にわたる平均使用電力（average  power  usage）が電力上限を超えない限り、電力上限は便宜的に超過されることができる。
【００２０】
特定の実施形態では、様々な電力ドメインが、実行平均電力リミット（ＲＡＰＬ）に基づいてモニタされ、制御される。電力マネージャは、利用可能な電力ドメインの各々に対してＲＡＰＬを指定し、電力制御及び／又は個別プロセッサパフォーマンス状態（Ｐ-ｓｔａｔｅ）などの低レベルパフォーマンスパラメータを変調することによってＲＡＰＬ電力制限を実施することができる。特定のこのような実施形態では、動的空間電力ステアリングは、アプリケーションフェーズのそれぞれについて様々なＲＡＰＬ電力ドメイン間の電力の最適な割り当てを学習することを含む。ＨＰＣアプリケーション及び他のアプリケーションは、同じフェーズが何度も起きる繰り返し挙動を示すことがある。特定の実施形態は、この繰り返し挙動を活用する。特定のフェーズについて最適又は改善された電力割り当てが学習又は決定されると、アプリケーションが将来的に同じフェーズに入るときにそれが（例えば、即座に）再利用されることができる。
【００２１】
様々な実施形態はまた、本明細書で開示される動作を実行するための装置又はシステムに関する。この装置は、必要とされる目的のために特別に構築されることができる、あるいは、コンピュータに記憶されたコンピュータプログラムによって選択的に起動又は再構成される汎用コンピュータを含むこともできる。本明細書に提示される手順は、特定のコンピュータ又は他の装置に固有のものではない。様々な汎用機械が、本明細書の教示に従って書かれたプログラムとともに使用されることができ、あるいは開示された方法を実行するのにより特化した装置を構成することが好都合であることを示すこともできる。様々なこれらの機械のために必要とされる構造は、与えられる説明から明らかとなるものである。
【００２２】
ここで、図面を参照する。類似する参照符号は、全体を通して類似の要素を示すのに使用される。以下の説明では、説明のため、その完全な理解を提供するために、多くの具体的な詳細を述べる。しかし、実施形態は、これらの具体的な詳細なしに実施することができることは明らかである。他の例では、周知の構造及び装置は、その説明を容易にするために、ブロック図で示される。これは、特許請求の範囲に記載される主題と一致するすべての修正物、均等物及び代替物をカバーすることを意図している。
【００２３】
図１は、本明細書で説明される様々な実施形態を実装するのに適した例示的なコンピュータシステム１０５の実施形態を示す。様々な実施形態において、コンピュータシステム１０５は、処理装置１１０と、コントローラ１２０と、メモリ装置１３０と、入出力（Ｉ／Ｏ）装置１４０とを含む。処理装置１１０は、（例えば、サーバラック内のベイ内の）サーバ、マイクロプロセッサ、プロセッサ、中央処理装置、デジタル信号処理ユニット、デュアルコアプロセッサ、モバイルデバイスプロセッサ、デスクトッププロセッサ、シングルコアプロセッサ、システムオンチップ（ＳｏＣ）デバイス、複合命令セットコンピュータ（ＣＩＳＣ）マイクロプロセッサ、縮小命令セットコンピュータ（ＲＩＳＣ）マイクロプロセッサ、超長命令語（ＶＬＩＷ）マイクロプロセッサ、若しくは任意の他のタイプのプロセッサ又は単一チップ若しくは集積回路上の処理回路等の任意のタイプの計算要素であり得るが、これらに限定されない。処理装置１１０は、相互接続１２２，１３２，１４２を介してコントローラ１２０、メモリ装置１３０及びＩ／Ｏ装置１４０にそれぞれ接続され、それらと通信することができる。さらに、コントローラ１２０、メモリ装置１３０及びＩ／Ｏ装置１４０は、処理装置１１０の全てのコンポーネントと通信することができる。
【００２４】
この点に関して限定されるものではないが、処理装置１１０は、電力管理装置１１５と、一つ以上の処理コア１１２と、グラフィックス処理ユニット１１４と、Ｉ／Ｏ装置１１６と、メモリ装置１１８と、他のアンコア（uncore）（非コア(non-core)）コンポーネント（図示せず）とを含むことができる。アンコアコンポーネントは、他のメモリ、キャッシュ、Ｉ／Ｏ装置及びコントローラを含む。いくつかの実施形態では、処理装置１１０は、例えば、３つ以上の処理コアを含むことができる。一つ以上の処理コア１１２は、２つ以上の処理ユニットを有することができる。一つ以上の処理コア１１２は、命令をフェッチするためのプリフェッチロジック、命令をデコードするためのデコードロジック、命令を実行するための実行ロジック及び他のロジックを含むが、これらに限定されない。
【００２５】
特定の実施形態では、処理装置１１０は、グラフィックス処理ユニット１１４を含む。グラフィックス処理ユニット１１４は、グラフィックス及び／又はビデオの動作及び／又は処理を管理する補助プロセッサとして機能することができる。
【００２６】
いくつかの実施形態では、処理装置１１０は、Ｉ／Ｏ装置１１６及びメモリ装置１１８を含む。Ｉ／Ｏ装置１１６は、コンピュータシステム１０５内の他の装置への、処理装置１１０のための外部インタフェースを提供する。追加的に、メモリ装置１１８は、処理装置１１０及び特に、一つ以上の処理コア１１２の命令及び／又はデータを記憶する。メモリ装置１１８はまた、処理装置１１０及び一つ以上の処理コア１１２が命令を実行している間、一時変数又は他の中間情報を記憶することができる。他の実施形態では、メモリ装置１１８は、レベル１（Ｌ１）、レベル２（Ｌ２）及びレベル３（Ｌ３）キャッシュメモリ、又は処理装置１１０内にキャッシュメモリの任意の他の構成を含むが、これらに限定されない。処理コア１１２、グラフィックス処理ユニット１１４、Ｉ／Ｏ装置１１６及びメモリ装置１１８は、相互接続（図示せず）を介して互いに通信することができる。
【００２７】
コントローラ１２０は、マイクロコントローラ又は他のタイプの処理回路、メモリ及びインタフェースロジックを含むことができる。いくつかの実施形態では、コントローラ１２０は、メモリ装置１３０及びＩ／Ｏ装置１４０の動作のモニタ及び制御すること（これに限定されない）を含め、コンピュータシステム１０５の動作をモニタ及び制御することができる。コントローラ１２０はまた、コンピュータシステム１０５の様々なコンポーネントと処理装置１１０との間の通信（これに限定されない）を含め、処理装置１１０の様々な側面をモニタ及び制御することができる。様々な実施形態において、コントローラは、相互接続１２２を介して処理装置１１０に結合されることができる。
【００２８】
メモリ装置１３０は、コンピュータシステム１０５の命令及び／又はデータを記憶する。メモリ装置１３０はまた、コンピュータシステム１０５が命令を実行している間、一時変数又は他の中間情報を記憶することができる。Ｉ／Ｏ装置１４０は、コンピュータシステム１０５と外部システム又は装置との間のインタフェースである。Ｉ／Ｏ装置１４０は、接続１４４を介して外部システム又は装置と通信することができる。接続１４４は、有線若しくは無線又は当業者に知られている他の任意の手段であることができる。一実施形態では、Ｉ／Ｏ装置１４０は、Ｉ／Ｏ装置１１６を通じて相互接続１４２を介して処理装置１１０と通信することができる。電力管理装置１１５、メモリ装置１３０、及びＩ／Ｏ装置１４０はまた、相互接続（図示せず）を介して互いに通信することができる。
【００２９】
コンピュータシステム１０５に図示されているコンポーネントは、限定を意味するものではなく、説明のために提示されている。他の実施形態では、コンピュータシステム１０５の構成は、図１に示されている以外の他のコンポーネントを（多かれ少なかれ）含む。当業者であれば、本明細書に記載される実施形態の作業に影響を及ぼすことなく、コンピュータシステム１０５の他の構成を使用できることを理解するであろう。
【００３０】
特定の実施形態では、電力管理装置１１５は、全体の電力リミットなどの全体のシステム制約を遵守しながら、特定のアプリケーションの複数の異なるフェーズ間で電力を再分配する機械を特定する動的時間的電力ステアリングを提供するように構成されている。電力ドメインは、例えば、一つ以上の処理コア１１２を含むコアドメインと、グラフィックス処理ユニット１１４、Ｉ／Ｏ装置１１６、メモリ装置１１８及び他の任意のアンコアコンポーネント（図示せず）を含むアンコアドメインとを含むことができる。追加的に、又は他の実施形態では、一つ以上の処理コア１１２は、複数の電力ドメインを含むことができ、各電力ドメインがコア（必ずしも均一なサイズではない）に対応する。さらに、図１に示す任意の要素（すなわち、コントローラ１２０、メモリ装置１３０、Ｉ／Ｏ装置１４０、処理装置１１０、電力管理装置１１５、一つ以上の処理コア１１２、グラフィックス処理ユニット１１４、Ｉ／Ｏ装置１１６及びメモリ装置１１８）が別個の電力ドメインであってよく、別々の電力ドメイン内の任意の他の要素と組み合わされてもよく、及び／又は複数の異なる電力ドメインに分割されてもよい。
【００３１】
一つ以上の処理コア１１２は、同じフェーズが何度も何度も起きる挙動を示すアプリケーションを実行することができる。各フェーズは、異なるリソースを必要とし、処理装置１１０上のリソースにおいて異なる量のアクティビティを生成することができるので、処理装置１１０上のリソース又はドメイン間の電力の最適な割り当ては、各フェーズで異なることがある。最適又は改善されたパフォーマンスを達成するために（又は、効率、ＥＤＰ、ＥＤ２Ｐ等の他の電力管理目的関数を最大化するために）、電力管理装置１１５は、ある実施形態によれば、異なる電力ドメイン間で分配された電力を増加させ又は減少させ、アプリケーションの異なるフェーズ間で電力を再分配するようにする。
【００３２】
特定のアプリケーションは、アプリケーションがその作業を完了するために繰り返すときに、フェーズのシーケンスが数回発生する挙動を示すことがある。例えば、図２Ａ、図２Ｂ及び図２Ｃは、特定の実施形態による例示的なフェーズのシーケンスの繰り返しを示す。図２Ａは、フェーズ「Ａ」に、フェーズ「Ｂ」が続き、フェーズ「Ｃ」が続き、フェーズ「Ａ」が続き、フェーズ「Ｂ」が続くものを含むフェーズのシーケンス２００を示す。このシーケンスは、「反復１」に続いて、「反復２」が続き、「反復３」が続くもので繰り返される。そのような繰り返しは、特定の動的時間的電力ステアリングの実施形態を通じたパフォーマンスの最適化に適している。例えば、電力管理装置１１５は、フェーズＡ、フェーズＢ及びフェーズＣが繰り返しており、多くの反復で繰り返す可能性が高いと認識するように構成することができる。それに応じて、電力管理装置１１５は、一つ以上の反復にわたって、フェーズＡ、フェーズＢ及びフェーズＣに対する電力ドメイン間での最適又は改善された時間的電力割り当てを決定する（例えば、あるフェーズでは電力を節約又は制限し、別のフェーズでは電力リミットを適用する又は上げる）。電力管理装置１１５は、その後の各反復において、フェーズＡ、フェーズＢ及び／又はフェーズＣの間での最適又は改善された電力分配を適用する。
【００３３】
アプリケーションは、電力をより効率的に割り当てるために観察され、活用され得る、明確な動作挙動及びリソースアクティビティパターンを備えたフェーズを有することができる。例えば、図２Ｂは、記憶フェーズ２１２に、計算フェーズ２１４が続き、通信フェーズ２１６が続き、記憶フェーズ２１２が続き、計算フェーズ２１４が続くものを含むフェーズのシーケンス２１０を示す。記憶フェーズ２１２は、コンピュータメモリリソース内で高いアクティビティを呈し、計算及び通信リソース内で低いアクティビティを呈する。同様に、計算フェーズ２１４及び通信フェーズ２１６は、それぞれ、偏った計算及び通信アクティビティを呈する。図２Ａに示す例のように、シーケンス２１０は、多くの反復で繰り返すことができる。他の実施形態では、記憶フェーズ２１２、計算フェーズ２１４、通信フェーズ２１６、記憶／計算／通信フェーズの混合フェーズ及び／又は他のフェーズは、同じシーケンス内で又は予測可能なシーケンス内で起きるとは限らない。そのような実施形態では、電力管理装置１１５は、依然として、電力バジェットに対応する時間間隔内での各フェーズの発生を認識し、シーケンス２１０内の時間的電力分配を適用する。
【００３４】
（限定ではなく）例として、電力管理装置１１５は、第１記憶フェーズ２１２が、コンピュータシステム１０５の処理装置１１０とメモリ装置１３０との間の相互作用によって支配されるアプリケーション挙動と関連し、かつ、第１計算フェーズ２１４は、（例えば、メモリアクセス及び／又は他の装置との通信ではなく）一つ以上のコア１１２での計算によって支配されるアプリケーション挙動と関連することを決定することができる。システムの電力上限が１００Ｗであり、これは、ある期間ｔにわたってコンピュータシステム１０５によって使用される平均電力として評価されると仮定する。また、第１記憶フェーズ２１２の制約なしの使用電力（すなわち、フェーズがフルのパフォーマンスで実行するのに必要な電力）は、１００Ｗの電力上限よりも１０Ｗ低い９０Ｗであり、実行に５秒かかると想定する。次に、第１計算フェーズの制約なし使用電力（power  usage）は、１００Ｗの電力上限よりも２０Ｗ高い１２０Ｗであると想定する。また、この例では、第１計算フェーズ２１４が１００Ｗの使用に制約されているとき、第１計算フェーズ２１４は実行に１０秒かかると想定する。
【００３５】
この例では、電力管理装置が、フルのパフォーマンスに達するためにどれだけの電力を必要とするかにかかわらず、電力管理装置が各フェーズに対して１００Ｗの電力を確保する場合、第１記憶フェーズ２１２の持続時間に対して１０Ｗの電力が無駄になる。さらに、以下の式によって示すように、第１記憶フェーズ２１２及び第１計算フェーズ２１４にわたる平均使用電力（average  power  usage）は９６．６７Ｗであり、これは１００Ｗの電力上限（Power  Cap）よりも小さい。
【数１】
0006668355.tif 000002
【００３６】
上記の式において、ＰＷＲ（Ｍｅｍ）は、第１期間Ｒｕｎｔｉｍｅ（Ｍｅｍ）中に第１記憶フェーズ２１２に割り当てられた電力であり、ＰＷＲ（Ｃｏｍｐ）は、第２期間Ｒｕｎｔｉｍｅ（Ｃｏｍｐ）中に第１計算フェーズ２１４に割り当てられた電力である。この例における上記の式は、平均電力上限に等しい各フェーズについて確保する電力がどのようにして電力の準最適な使用につながり得るかを示す。
【００３７】
しかし、電力管理装置１１５が１００Ｗを超える第１計算フェーズ２１４を割り当てる場合、そのフェーズのパフォーマンスが改善し、アプリケーション全体のパフォーマンスが改善される可能性がある。例えば、１０５．６Ｗの電力制限だと、第１計算フェーズ２１４は、１００Ｗの電力制限での１０秒と比較して、９秒の実行時間を有すると仮定する。電力管理装置１１５が計算制限フェーズ１０５．６Ｗを割り当てる場合、平均使用電力は、
【数２】
0006668355.tif 000003
【００３８】
上記の例に示すように、特定の動的時間的電力ステアリングの実施形態は、フェーズにわたる電力の準最適使用を特定し、システムに課された電力上限を一時的に違反することによってそれを訂正しながら、評価期間においては平均電力は、システムの電力上限に違反しないことを保証している。その結果、アプリケーション全体のパフォーマンスが改善される（例えば、上記の例では２つのフェーズにわたる実行時間が１５秒から１４秒に短縮されている）。
【００３９】
特定の実施形態では、電力管理装置１１５は、フェーズの特性をモニタ及び学習する動的時間的電力スケジューラ（図示せず）を含む。動的時間的電力スケジューラは、各アプリケーションフェーズについて、どのようにパフォーマンスが電力にスケーリングするかを学習する。動的時間的電力スケジューラはまた、電力を制限することを通じて、パフォーマンス−電力のスケーリング（scaling）が悪い、アプリケーションの一つ以上のフェーズの速度を落とし、パフォーマンス−電力のスケーリングが良いフェーズに電力を転送することによって改善されたアプリケーションパフォーマンスが得られる場合を認識する。
【００４０】
（限定ではなく）上記の例を続けると、８０Ｗの電力制限だと、第１記憶フェーズ２１２はいくらかのパフォーマンスを失い、完了までに５秒ではなく６秒かかり、１１７．１Ｗの電力制限だと、第１計算フェーズ２１４は、１００Ｗで１０秒ではなく７秒で終了することができることを学習したと想定する。すると、平均電力（average  power）は、
【数３】
0006668355.tif 000004
【００４１】
上記の例示的な電力割り当ては、アプリケーションによって使用される平均電力がシステム電力上限（１００Ｗ）を超えないという要件を満たす。しかし、上記の例では、２つのフェーズにわたる実行時間が１５秒から１３秒に短縮されている。この例は、フェーズ実行時間がそのフェーズ中に割り当てられた電力量にどのように関連しているかを学習することにより、どのように動的時間的電力ステアリングが時間ドメイン（すなわち、フェーズにわたる）において全体的に最適又は改善された電力決定を行うことができるのかを示す。そのようにすることで、動的時間的電力スケジューラは、特定のフェーズの電力を制約するなどの直観的でない決定を特定することができ、全体の電力リミットなどの全体のシステム制約を遵守しながら、節約されたエネルギーがいくつかの目的関数（例えば、効率、パフォーマンス等）を改善するように使用されることができる。
【００４２】
第１記憶フェーズ２１２及び第１計算フェーズ２１４に関する上記の例は、例示として提供されているが、多くのアプリケーションが、作業の大部分がメモリコントローラにメモリ要求を送信している、長くメモリ支配的なフェーズを有することに留意されたい。メモリアクセスには時間がかかるため、アプリケーションはメモリアクセスが戻ってくるのを待つのにかなりの時間を費やす可能性がある。逆に、ＨＰＣやその他のシステムは電力が制約されているため、ベクトルユニットのように電力を消費するリソースを大量に使用する計算結合フェーズでは、電力の割り当てにおけるわずかな増加だけでも大きなメリットを得ることができる。このように、多くの場合、電力の割り当てにおけるわずかな減少によりパフォーマンス−電力のスケーリングが悪いフェーズで失われるパフォーマンスの絶対値は、電力の割り当てにおけるわずかな増加によりパフォーマンス−電力のスケーリングがよいフェーズで得られるパフォーマンスの絶対値よりも小さい。結果として、アプリケーション全体のパフォーマンスが向上し、電力がより効率的に使用され、そして、アプリケーションによって使用される平均電力がシステムの電力リミットを超えない。上記の説明は例としてパフォーマンスを使用するが、この実施形態は他の目的関数（例えば、効率、パフォーマンスなど）に広げることができる。
【００４３】
パフォーマンス−電力スケーリングが悪いフェーズの電力を下げることは、いつまでも利益をもたらさない可能性があることにも留意されたい。例えば、ある地点の後では、記憶制限フェーズの電力を切ることは、もはやパフォーマンスにわずかな影響も与えない可能性がある。電力がある変曲点を過ぎて制限されていると、フェーズのパフォーマンスが急激に低下し、追加の電力を受ける他のフェーズへの利益にもかかわらずアプリケーション全体のパフォーマンスに実質的に害を及ぼす可能性がある。したがって、動的時間的電力スケジューラは、特定の実施形態によれば、アプリケーション全体のパフォーマンスが最大化又は改善されるように、フェーズ間でステアリングする（steer）電力量を見つけるように構成されている。
【００４４】
特定の実施形態では、電力管理装置１１５は、シーケンス２１０の現在フェーズに基づいて、処理装置１１０及び／又はコンピュータシステム１０５内の電力を空間的に再分配するようにさらに構成されている。第１記憶フェーズ２１２では、電力管理装置１１５は、一つ以上の処理コア１１２に関連づけられた電力ドメインが必要とする電力がより少なくてよいと決定することができる。したがって、電力管理装置１１５は、記憶フェーズ２１２中は（例えば、エネルギーを節約するために）一つ以上の処理コア１１２に割り当てられた電力を下げて、及び／又は電力の少なくとも一部を（例えば、記憶フェーズ２１２に関与するリソースのパフォーマンスを向上させるために）他の電力ドメインに再分配する。
【００４５】
他の例として、図２Ｃは、アイドルフェーズ２２２とアクティブフェーズ２２４とが交互に繰り返されるシーケンス２２０を示す。電力管理装置１１５は、例えば、（強制又は非強制の）アイドル期間及びアクティブ期間を含む処理のデューティサイクルを制御するように構成することができる。いくつかの実施形態では、アイドル期間中、処理装置１１０は状態期間（state  period）に置かれ、ハードウェア及びソフトウェア動作を能動的には処理しない。処理装置１１０は、一つ以上の処理コア１１２、グラフィックス処理ユニット１１４、Ｉ／Ｏ装置１１６、メモリ装置１１８及び他のアンコアコンポーネントを含め、装置の一部又は全部にわたってアイドル状態に置かれてもよい。他の実施形態では、処理装置１１０は、コンピュータシステム１０５を正しく機能させるために不可欠な動作のみを処理することができる。他の実施形態では、処理装置１１０は、スロットリング閾値（throttling  threshold）に基づいて、一部ではあるが全てではないソフトウェア及びハードウェア動作を処理することができる。電力管理装置１１５は、特定のアプリケーションに対してアイドルフェーズ２２２とアクティブフェーズ２２４との間の最適又は改善された電力分配を決定し、実行中、それに応じて電力を再分配するように構成されている。
【００４６】
図３は、複数の電力ドメイン（ドメイン３１０ａ、３１０ｂ、…、３１０ｎとして示されている）含むノード３０５と、電力供給システム３１２と、電力マネージャ３１４と、実行平均電力コントローラ３１６とを含む装置３００のブロック図である。ノード３０５は、例えば、図１に示すコンピュータシステム１０５などのコンピュータシステムを含むことができる。このような実施形態では、各ドメイン３１０ａ、３１０ｂ、…、３１０ｎは、別個の処理装置１１０を含むことができる。他の例では、ノード３０５は、サーバ若しくは、マイクロプロセッサ、マルチコアマイクロプロセッサの個々のコア、メモリコントローラハブ（ＭＣＨ）、入出力コントローラハブ（ＩＯＨ）、メモリ装置、ネットワークインタフェース等のコンピュータシステムコンポーネント、又は電力消費についてモニタされ、制御されることができる一つ以上の電力ドメインを有する任意の他のタイプの装置とすることができる。図示されている電力供給システム３１２は、ノード３０５にある範囲の電圧を供給することができるスイッチング又は線形電圧レギュレータ（ＶＲ、図示せず）を含むことができる。
【００４７】
図示されている電力マネージャ３１４は、フェーズモジュール３１８及び動的時間的電力スケジューラ３２０を含み、第三者要素であっても、又は電力供給システム３１２に含まれてもよく、固定機能ハードウェア、マイクロコード、ファームウェア、ソフトウェア又はそれらの任意の組み合わせで実装されることができる。他の実施形態では、電力マネージャ３１４は、ノード３０５に含まれても、ノード３０５によって実行されてもよい。例えば、ノード３０５は、電力マネージャ３１４を実装するように構成された一つ以上の処理コアを含むことができる。フェーズモジュール３１８は、ノード３０５によって実行されるアプリケーション又は処理のフェーズを検出するように構成されている。特定の実施形態は、例えば、ランタイム開発者、ライブラリ開発者、アプリケーションプログラマ等のユーザがソフトウェアコードにアノテーションをつけて再コンパイルすることができるソフトウェアアプリケーションプログラムインタフェース（ＡＰＩ）を含み、コードがフェーズ情報を電力マネージャ３１４に通信するようにする。フェーズモジュール３１８は、コードと共にコンパイルされたフェーズ情報を使用して、実行中にフェーズに入っている（being  entered）が又は終了している（being  exited）のかを決定する。ＡＰＩは、コードに挿入されるオーバーヘッドを最小限に抑えるために軽量にすることができる。ＡＰＩは、例えば、各フェーズのコードに一つ以上のＡＰＩ呼び出しを挿入することができる。
【００４８】
ＡＰＩの特定の実施形態では、共有ライブラリが使用されることができ、オペレーティングシステム（例えば、Ｌｉｎｕｘ（登録商標））は、アプリケーションと共有ライブラリとの間に計測レイヤを挿入することができる。ユーザが計測レイヤを書き込む必要があるかもしれないが、このような実施形態であれば、アプリケーション又は共有ライブラリの修正又は再コンパイルを必要としない。さらに、ライブラリはアプリケーションによって使用される標準ＡＰＩを有するので、一つの計測レイヤがＡＰＩを実装する任意の共有ライブラリをサポートすることができる。さらに、再リンクが可能な場合、この例示的な実施形態は、静的リンクライブラリも同様に使用することができる。
【００４９】
追加的に、又は他の実施形態では、フェーズモジュール３１８は、フェーズを自動的に推定するモードをサポートするように構成されている。そのような実施形態は、アプリケーションを計測しない（instrument）。むしろ、装置３００は、ハードウェアパフォーマンスモニタ能力を介してアプリケーションアクティビティを測定する。例えば、装置３００は、ハードウェアパフォーマンスカウンタの痕跡（trace）をサンプリングし、分析する。実行時間では、フェーズモジュール３１８は、痕跡に時系列信号処理分析を適用して、アプリケーション実行の痕跡を安定した挙動のセグメントに分割する。次いで、フェーズモジュール３１８は、クラスタ化技術を適用して、反復セグメントをアプリケーションフェーズとして認識する。例えば、フェーズモジュール３１８は、再帰最小二乗を伴うＡＲＩＭＡＸ自己回帰を使用して、次の時間ステップにおいてパフォーマンスカウンタの痕跡が何であるかを学習し予測することができる。予測が間違っている場合、フェーズモジュール３１８は、アプリケーションがフェーズを変更している可能性があると決定する。フェーズモジュール３１８は、安定化ループを適用して、偽の（mispredictions）誤予測をフィルタリングする。しかし、誤予測が偽でない場合、フェーズモジュール３１８は、フェーズが変化した時点を特定する。
【００５０】
特定の実施形態では、フェーズモジュール３１８は、アプリケーションがフェーズに入っている、又はフェーズを出ているのかを判断するステートマシンを含む。各フェーズについて、フェーズモジュール３１８は、アプリケーションアクティビティシグネチャを追跡する。シグネチャは、例えば、モニタされているパフォーマンスカウンタアクティビティから導出された、計算、通信又は記憶の強度を含む特性のベクトルである。どのフェーズが現在実行されているかを決定するために、フェーズモジュール３１８は、アクティビティシグネチャを使用し、空間クラスタリング技術を適用する。フェーズモジュール３１８は、可能性のあるシグネチャの空間を等しいサイズの領域に分割し、各領域に、対応するフェーズ番号を与える。限定ではなく例として、１００以上の異なる領域／フェーズがあることができる。アプリケーションがフェーズに入ると、フェーズモジュール３１８は、フェーズのシグネチャが空間のどの領域内に含まれるか調べ、そのフェーズを、その領域に対して指定された番号又は識別子でラベル付けする。動的時間的電力スケジューラ３２０は、フェーズ番号又は識別子を受け、各フェーズに対する最適又は改善された電力割り当てを決定する。
【００５１】
動的時間的電力スケジューラ３２０は、どのフェーズ間で電力をステアリングするかを決定するように構成される。一実施形態は、上記に参照されたソフトウェアＡＰＩを使用する。このＡＰＩにより、開発者などのユーザは、省電力や加速のためにフェーズは最適化されるべきかどうかをアノテーションを付けることができる。動的時間的電力スケジューラ３２０は、省電力のために指定されたフェーズからどれだけの電力を取り除くべきか、及び最大又は向上したパフォーマンスのため、加速のために指定されたフェーズにどれだけの電力を加えるべきかを学習する。例えば、動的時間的電力スケジューラ３２０は、すべての可能性にわたる徹底的な探索を使用する、又は、勾配降下法若しくは機械学習を介して知的に探索を削ることができる。探索は、各フェーズに割り当てられた電力が、電力上限によって示唆されるエネルギーバジェットと一致する（フェーズにわたって足された）合計エネルギーをもたらすという制限によって結合されている。言い換えると、電力上限は、フェーズよりも長い時間間隔にわたる平均電力であり、電力上限と時間間隔との積はエネルギーバジェットに等しい。
【００５２】
制約を満たす割り当てを見つけるために、特定の実施形態によれば、動的時間的電力スケジューラ３２０は、（各フェーズについて）フェーズの実行時間が電力にどのようにスケーリングするかを測定し、この電力スケーリング情報をテーブルに記録する。割り当てを試すときは、電力スケーリング情報を備えたテーブルを参照して、不整合な（inconsistent）割り当てを除外する。他の実施形態では、動的時間的電力スケジューラ３２０は、フェーズの実行時間が電力にどのようにスケーリングするかを測定し、全体の制約と不整合な割り当てを早急に訂正する。
【００５３】
特定の実施形態では、動的時間的電力スケジューラ３２０は、省電力のために指定されたフェーズと次の加速フェーズとの間にどのフェーズが入るかを知るためにフェーズのシーケンスを予測する。装置３００は、例えば、時間の経過とともにフェーズの痕跡を保持することができる。特定の実施形態は、動的時間的電力スケジューラ３２０は、現在フェーズ及び最後にこのフェーズにいたアプリケーションでどのシーケンスが起きたかのみに基づいて次のフェーズが予測できるように、省電力フェーズと加速フェーズとの間のフェーズは常に同じであると想定している。多くのバルク同期ＨＰＣアプリケーションは、この想定に適合する。追加的に、又は他の実施形態では、機械学習方法を介して次のフェーズを予測することによって、分岐（又は、フェーズが省電力フェーズと加速フェーズとの間に入る可変性）が対応されることができる。
【００５４】
他の実施形態は、ＡＰＩ又はソフトウェアによって提供されるアノテーションからの情報を使用せずに、どのフェーズが電力を節約し、どのフェーズを加速すべきかを指定する。特定のこのような実施形態では、動的時間的電力スケジューラ３２０は、上述した自動フェーズ検出及びアクティビティシグネチャを使用する。シグネチャを介して、動的時間的電力スケジューラ３２０は、例えば、どのフェーズが記憶集中型であり、通信集中型であり、計算集中型であるかを決定する。動的時間的電力スケジューラ３２０は、例えば、電力が節約されるべきフェーズとして記憶集中型及び通信集中型のフェーズを指定し、加速されるべきフェーズとして計算集中型のフェーズを指定することができる。次に、上述したように、動的時間的電力スケジューラ３２０は、平均電力上限によって示唆されるエネルギーバジェット要件に適合させることによって制約されるフェーズ間での電力の最適又は改善された割り当てを探索する。
【００５５】
追加的に、又は他の実施形態では、動的時間的電力スケジューラ３２０は、システム構成、実行時間イベント及び他の挙動変化の変更に適応する。例えば、アプリケーションの挙動が変化する（例えば、新しいアプリケーションが実行を開始する）、システム管理者が電力マネージャ３１４の所望の目的関数を変更し得る（例えば、エネルギー効率から最大パフォーマンスへの切り替え）、及び／又は基本的なシステム制約が変化し得る（例えば、電力上限又は利用可能な総電力）ということが起き得る。動的時間的電力スケジューラ３２０は、ノード３０５がアプリケーションを実行するときにフェーズ間の電力の最適な又は改善された割り当てを再度、決定又は学習することによって、実行時間における動作挙動の変化に適応するように構成されている。動的時間的電力スケジューラ３２０は、例えば、ユーザ入力、定期的な所定の時間間隔によって指示された場合に、及び／又はシステム内の変化の検出に応じて、再学習手順が自動的に起動されるモードにおいて、再学習手順を行うことができる。
【００５６】
実行平均電力コントローラ３１６は、電力モニタモジュール３２２と、ドメインパフォーマンス制御モジュール３２４と、平均電力エンフォーサモジュール３２５と、ドメイン電力バジェットマネージャモジュール３２６とを含む。実行平均電力コントローラ３１６は、別個の装置又はモジュールとして示されているが、実行平均電力コントローラ３１６は、電力マネージャ３１４又はノード３０５の一部である、又はそれらによって実行されてよい。実行平均電力コントローラ３１６は、電力マネージャ３１４から受けた（例えば、ノード３０５の全体平均電力を示す）平均電力信号３２８及び時間的ステアリングインタフェース３３０に基づいて、ノード３０５の様々な電力ドメイン３１０ａ、３１０ｂ、…、３１０ｎ内の電力をモニタ及び制御するように構成されている。実装によるが、時間的ステアリングインタフェース３３０は、各フェーズに対する、各ドメイン又はドメインのグループの電力制限、ドメイン電力バジェットマネージャモジュール３２６に内部ヒューリスティックを通じた自発的な電力分配を決定させることを任せるヌル値、及び／又は各ドメインの相対的な重要性又は影響を示すもの（例えば、ドメイン電力バジェットマネージャモジュール３２６に相対的な重要度又は影響に基づいて電力分配を決定させることを任せる）を含むことができる。
【００５７】
電力モニタモジュール３２２は、様々な電力ドメイン３１０ａ、３１０ｂ、…、３１０ｎの電力消費を測定し、上述したように、対応する電力モニタデータ３２１をフェーズモジュール３１８及び／又は動的時間的電力スケジューラ３２０に供給するように構成されている。電力モニタモジュール３２２はまた、電力モニタデータを平均電力エンフォーサモジュール３２５及びドメイン電力バジェットマネージャモジュール３２６に提供する。
【００５８】
ドメインパフォーマンス制御モジュール３２４は、例えば、周波数、制限帯域（throttling  bandwidth）、及び／又は他のパフォーマンスパラメータを調整することを通じて、各ドメインのパフォーマンス及び電力を調整する制御を含む。特定の実施形態では、パフォーマンスレベルは、多数の異なる方法で定義され、選択されることができる。一つのアプローチとしては、パフォーマンス状態又は、Ｐ０状態の装置が最大パフォーマンス能力を使用し、最大電力を消費することができ、Ｐ１状態の装置が、その最大値よりも低く制限されたパフォーマンス能力を使用し、最大電力未満を消費する等のＰｘ状態を選択することである。平均電力エンフォーサモジュール３２５は、ドメインパフォーマンス制御モジュール３２４を設定し、プログラマブル時間ウィンドウにわたってノード３０５についての平均電力信号３２８によって示される全体平均電力を維持するようにその設定を時間とともに適応させる。平均電力エンフォーサモジュール３２５は、標準コントローラ技術で実装され得る制御システムを含む。ドメイン電力バジェットマネージャモジュール３２６は、電力バジェットを平均電力エンフォーサモジュール３２５に出力するロジックを含む。ドメイン電力バジェットマネージャモジュール３２６は、動的時間的電力スケジューラ３２０にいくつかの異なるインタフェースを提供することができ、それにより、動的時間的電力スケジューラ３２０が、各ドメインに対する特定の電力バジェット（例えば、ワットに比例する単位）を直接的に指定する、又は各ドメインの相対的重要度又は影響に関するヒントを（抽象単位で）指定することによって、ドメイン電力バジェットマネージャモジュール３２６が内部ヒューリスティックをヒントに適用し、それらをドメインについての特定のバジェットにマッピングすることによりバジェットを間接的に指定することができる。
【００５９】
図４は、一実施形態による動的時間的電力ステアリングのための方法４００のフローチャートである。方法４００は、アプリケーションのフェーズのシーケンスを決定するステップ４１０を含み、複数のフェーズの各々は、他のフェーズの動作挙動とは異なる動作挙動を呈するアプリケーションのセグメントを含む。このシーケンスは、エネルギーバジェットに関連する時間間隔に対応する。方法４００はまた、パフォーマンス指標、目的関数、及び測定間隔及び／又はイベント（例えば、フェーズ変化又は反復の終了）を選択するステップ４１２を含む。パフォーマンスには様々な定義が使用されることができ、パフォーマンスは様々な異なる粒度で測定されることができる。これにより、パフォーマンスは、リタイアされる命令のレート、１秒当たりの浮動小数点演算（ＦＬＯＰＳ）、進行度、実行時間等の指標によって定義されることができる。このようなレート、実行時間又は他のパフォーマンス指標は、様々な粒度で計算されることができる。例えば、選択されたパフォーマンス指標は、各フェーズ内の短い時間間隔で測定される、各フェーズの終了などのイベントがあったら測定される、フェーズよりも長い時間間隔で測定される、（反復アプリケーションに対しては）反復の終了などのイベントがあったら測定される等とすることができる。方法４００は、さらに、現在フェーズを検出するためにアプリケーションをモニタするステップ４１４を含む。
【００６０】
特定の実施形態では、方法４００は、さらに、選択されたパフォーマンス指標ごとに最適な時間的電力割り当てが達成されたかどうかを問い合わせるステップ４１８を含む。言い換えると、方法４００は、フェーズ間での準最適な時間的割り当てで一つ以上の反復を実行し、各フェーズ中及び複数のフェーズ境界にわたってパフォーマンスを測定して、改善又は最適な割り当てを探索することができる。最適な時間的電力割り当てが達成されたかどうかを決定するために、いくつかの方法が使用されることができる。例えば、方法４００は、多数又はすべての順列（すなわち、可能な電力割り当て）を試し、結果としての測定されたパフォーマンスを比較して、最適分配を決定することができる。他の例として、方法４００は、勾配探索法（すなわち、電力割り当て変数に関してパフォーマンス指標の勾配を推定し、勾配方向にステップし、勾配経路に沿って順列を試みるだけである）を用いることによって最適解の近似を求めることができる。さらに他の例では、順列空間が大きい場合、順列空間を徹底的に探索する代わりに、方法４００は、様々なサンプリング方法を適用し、試行された割り振りの中で最適の割り当てを採用することができる。
【００６１】
測定が、フェーズのシーケンスにわたる最適な時間的電力割り当てが達成されていない（又は、まだ改善されることができる）と決定する場合、方法４００はシーケンスのフェーズ間で電力を時間的に再割り当てするステップ４２０を含む。しかし、測定が、フェーズのシーケンスにわたる最適な時間的電力割り当てが達成された決定する場合、方法４００は、現在フェーズに対応する時間的電力割り当てを複数の電力ドメインに適用するステップ４２１を含む。特定の実施形態では、例えば、図３に示す電力マネージャ３１４又はドメイン電力バジェットマネージャ３２６は、現在フェーズに割り当てられた電力リミットが複数の電力ドメインにわたってどのように空間的に分配されるかを決定するように構成することができる。他の実施形態では、図５に関して以下に説明するように、空間電力ステアリングアルゴリズムが使用されて、（時間電力ステアリングによって決定されるような）現在フェーズに対する特定の電力リミットについて複数の電力ドメインにわたる空間電力割り当てを最適化することができる。
【００６２】
方法４００はまた、システム変更、アプリケーション変更、電力上限変更又は選択されたパフォーマンス指標変更があるかを問い合わせるステップ４２２を含む。ない場合は、方法４００は、現在の（又は次の）フェーズを検出するために、そして、フェーズのシーケンスにわたる電力の時間的割り当てを最適化することを続けるために、アプリケーションをモニタするステップ４１４を続ける。一方、システム変更、アプリケーション変更、電力上限変更又は選択されたパフォーマンス指標変更があると決定される場合、方法４００は、現在フェーズを検出するためにアプリケーションをモニタするステップ４１４の前に、フェーズのシーケンスを決定するステップ４１０及び／又はパフォーマンス指標、目的関数及び測定間隔／イベントを選択するステップ４１２を再度行い、最適な時間的電力割り当てが達成されたかどうかを問い合わせるステップ４１８を再度行うということを繰り返す。
【００６３】
上述したように、特定の実施形態は、フェーズ境界にわたる動的時間的電力ステアリングと、各フェーズに対する電力ドメイン間の動的空間電力ステアリングとの組み合わせを含む。特定のこのような実施形態では、動的空間電力ステアリングは、動的時間的電力ステアリングのための方法４００内で入れ子にされてもよい。例えば、図５は、図４に示すような、複数のフェーズ間で電力を時間的に再割り当てするステップ４２０のためのフローチャートであり、一実施形態による動的空間電力ステアリングも含む。選択されたパフォーマンス指標毎に最適な時間的電力割り当てが達成されたかどうかを問い合わせるステップ４１８を行い、フェーズのシーケンスにわたる最適な時間的電力割り当てが達成されていない（又は、まだ改善されることができる）と決定した後、図５は、シーケンスのフェーズ間で電力を時間的に再割り当てするステップ４２０は、シーケンスのフェーズ間で新しい時間的電力割り当てを選択するステップ５１０と、新しい時間的電力分配に基づいて現在フェーズが省電力、加速、又はどちらもないに指定されているかどうか問い合わせるステップ５１２と含み得ることを示す。特定の実施形態では、この問い合わせは、現在フェーズの実行時間が電力変動どのようにスケーリングするか（又は、どのようにスケーリングするかについての前の決定を洗練する）を決定することを含むことができる。
【００６４】
現在フェーズが省電力のために指定されている場合、この方法は、現在フェーズ中は、新しい時間的電力割り当てによりノード内の複数の電力ドメイン全体の電力リミットを下げるステップ５１４を含む。現在フェーズが加速のために指定されている場合、この方法は、現在フェーズ中は、新しい時間的電力割り当てによりノード内の複数の電力ドメイン全体の電力リミットを上げるステップ５１６を含む。現在フェーズが省電力にも加速のためにも指定されていない場合、この方法は、エネルギーバジェットにより現在フェーズの全体の電力リミットを維持する。
【００６５】
図５は、さらに、選択されたパフォーマンス指標ごとに、複数の電力ドメイン間の最適な空間電力分配が現在フェーズに対して達成されたかどうかを問い合わせるステップ５１８を含む。測定が、最適な空間電力分配が達成されていない（又は、まだ改善されることができる）と決定する場合、この方法は、現在フェーズに対して、新しい時間的電力割り当て（すなわち、フェーズ間の新しい時間的電力割り当てに基づいた現在フェーズに対する新しい電力リミット）に基づいて、複数の電力ドメインの間で電力を空間的に再分配するステップ５２０を含む。この方法は、再分配された電力が複数の電力ドメイン間で最適な空間電力分配を提供するかどうかを問い合わせるステップ５１８を再度行う。測定が、最適又は十分な空間電力分配が達成されたと決定する場合、この方法は、現在フェーズに対応する空間電力分配を複数の電力ドメインに適用するステップ５２２を含む。次いで、この方法は、図４に示すように、すなわち、システム変更、アプリケーション変更、電力上限変更又は選択されたパフォーマンス指標変更があるかどうかを問い合わせるステップ４２２を行うことによって、続く。
【００６６】
以下はさらなる実施形態の例である。例は、方法、方法の動作を実行する手段、機械によって実行されると、その機械に方法、又は、本明細書に記載されている実施形態及び例による拡張ビデオをレンダリングするための機械若しくはシステムの動作を実行させる命令を含む少なくとも一つの機械読み取り可能媒体等の主題を含むことができる。
【００６７】
例１は、電力マネージャを使用して、ノード上で実行するためのタスクを含むアプリケーションに対応する、フェーズのシーケンスを決定するステップであって、該シーケンスはエネルギーバジェットに関連する時間間隔に対応する、ステップと、各フェーズに対して、前記ノード内の複数の電力ドメインに分配される電力の増加又は減少のため、実行時間において測定された応答を含む電力スケーリングを決定するステップと、各フェーズに対する前記電力スケーリングに基づいて、前記シーケンスのフェーズ間での時間的電力分配を決定して、前記エネルギーバジェットを満たし、前記ノードによる前記アプリケーションの実行時間パフォーマンスを改善又は最適化するステップと、を含む方法である。
【００６８】
例２は、パフォーマンス指標、目的関数、及び前記パフォーマンス指標を評価するための測定間隔及び測定イベントのうちの少なくとも一つを選択するステップをさらに含み、前記パフォーマンス指標は、前記ノードによる前記アプリケーションの実行時間パフォーマンスを改善又は最適化するように選択され、前記目的関数は、電力上限内でのパフォーマンスを最大化すること、パフォーマンスを最大化すること、電力上限内でエネルギー効率を最大にすること、及び効率を最大にすることを含む群から選択される、例１に記載の主題である。
【００６９】
例３は、現在フェーズを検出するために前記アプリケーションをモニタするステップと、前記現在フェーズにおいて、前記時間的電力割り当てが前記目的関数を満たさないと決定するステップと、前記決定に応じて、前記シーケンスのフェーズ間で前記電力を時間的に再割り当てするステップと、をさらに含む、例２に記載の主題である。
【００７０】
例４は、前記シーケンスのフェーズ間で前記電力を時間的に再割り当てするステップは、前記シーケンスのフェーズ間で新しい時間的電力割り当てを選択するステップと、前記時間的電力分配に基づいて、前記現在フェーズが省電力又は加速のために指定されているかどうかを決定するステップと、前記現在フェーズが省電力のために指定されている場合、前記新しい時間的電力割り当てに従って前記ノード内の複数の電力ドメインに対する全体の電力リミットを下げるステップと、前記現在フェーズが加速のために指定されている場合、前記新しい時間的電力分配に従って前記ノード内の複数の電力ドメインの全体の電力リミットを上げるステップと、を含む、例３に記載の主題である。
【００７１】
例５は、前記現在フェーズが省電力又は加速のために指定されているかどうかを示す、前記アプリケーションのコンピュータ実行可能コード内のアノテーションを検出するステップをさらに含む、例４に記載の主題である。
【００７２】
例６は、前記ノード内の複数の電力ドメイン間の空間電力分配が前記パフォーマンス指標を満たさないと決定するステップと、前記決定に応じて、前記新しい時間的電力割り当てに基づいて、前記現在フェーズにおける前記複数の電力ドメイン間の前記電力を空間的に再分配するステップと、をさらに含む、例４に記載の主題である。
【００７３】
例７は、前記アプリケーション、前記ノード、電力上限及び前記ノードを含むシステムのうちの少なくとも一つの変化を検出するステップと、検出された前記変化に応じて、前記シーケンスのフェーズ間の時間的電力分配を再構成するステップと、をさらに含む、例１から６のいずれか一つに記載の主題である。
【００７４】
例８は、計算結合フェーズ、記憶結合フェーズ、通信結合フェーズ、アイドルフェーズ、アクティブフェーズ及びそれらのフェーズの任意のものの組み合わせのうち少なくとも２つを検出するステップをさらに含む、例１から７のいずれか一つに記載の主題である。
【００７５】
例９は、前記シーケンスの各フェーズに対して、前記シーケンスの第１反復に基づいた前記時間的電力分配を決定するステップと、前記シーケンスの各フェーズに対して、前記シーケンスの第２反復に前記時間的電力割り当てを適用するステップと、をさらに含む、例１から８のいずれか一つに記載の主題である。
【００７６】
例１０は、少なくとも一部にハードウェアを含むロジックを含む電力マネージャであって、該電力マネージャは、アプリケーションのフェーズのシーケンスを決定するフェーズモジュールであって、該シーケンスはエネルギーバジェットに関連する時間間隔に対応し、各フェーズは、他のフェーズの動作挙動とは異なる動作挙動を呈するアプリケーションのセグメントを有する、フェーズモジュールと、前記シーケンスのフェーズ間の時間的電力分配を決定して、前記エネルギーバジェットを満たし、前記アプリケーションの実行時間パフォーマンスを改善又は最適化する動的時間的電力スケジューラモジュールと、を含む装置である。
【００７７】
例１１は、前記電力マネージャは、パフォーマンス指標、目的関数、及び前記パフォーマンス指標を評価するための測定間隔及び測定イベントのうちの少なくとも一つを選択するように構成され、前記目的関数は、前記アプリケーションの実行時間パフォーマンスを改善又は最適化するように選択される、例１０に記載の主題である。
【００７８】
例１２は、前記フェーズモジュールは、さらに、現在フェーズを検出するために前記アプリケーションをモニタするように構成され、前記動的時間的電力スケジューラモジュールは、さらに、前記現在フェーズにおいて、前記時間的電力割り当てが前記目的関数を満たさないと決定し、前記決定に応じて、前記シーケンスのフェーズ間で電力を時間的に再割り当てするように構成されている、例１１に記載の主題である。
【００７９】
例１３は、前記電力を時間的に再割り当てするために、前記動的時間的電力スケジューラモジュールは、さらに、前記シーケンスのフェーズ間で新しい時間的電力割り当てを選択し、前記時間的電力分配に基づいて、前記現在フェーズが省電力又は加速のために指定されているかどうかを決定し、前記現在フェーズが省電力のために指定されている場合、前記新しい時間的電力割り当てに従って、ノード内の複数の電力ドメインの全体の電力リミットを下げ、前記現在フェーズが加速のために指定されている場合、前記新しい時間的電力分配に従って前記ノード内の複数の電力ドメインの全体の電力リミットを上げる、ように構成されている、例１２に記載の主題である。
【００８０】
例１４は、前記動的時間的電力スケジューラモジュールは、さらに、前記現在フェーズが省電力又は加速のために指定されているかどうかを示す、前記アプリケーションのコンピュータ実行可能コード内のアノテーションを検出するように構成されている、例１３に記載の主題である。
【００８１】
例１５は、前記電力マネージャは、さらに、前記ノード内の複数の電力ドメイン間の空間電力分配が前記目的関数を満たさないと決定し、前記決定に応じて、前記新しい時間的電力割り当てに基づいて、前記現在フェーズにおける前記複数の電力ドメイン間の前記電力を空間的に再分配する、ように構成されている例１３に記載の主題である。
【００８２】
例１６は、前記電力マネージャは、さらに、前記アプリケーション、前記ノード、電力上限及び前記装置を含むシステムのうちの少なくとも一つの変化を検出し、検出された前記変化に応じて、前記シーケンスのフェーズ間の時間的電力分配を再構成する、ように構成されている、例１０から１５のいずれか一つに記載の主題である。
【００８３】
例１７は、システムであって、少なくとも一つのコアドメインと、少なくとも一つのアンコアドメインとを含む複数の電力ドメインと、一つ以上のプロセッサによって実行されると、該一つ以上のプロセッサに動作を実行させる命令を記憶した少なくとも一つのコンピュータ読み取り可能記憶媒体と、を含み、該動作は、当該システムによって実行されるアプリケーションのフェーズのシーケンスを決定するステップであって、該シーケンスは、エネルギーバジェットに関連する時間間隔に対応する、ステップと、各フェーズに対して、当該システム内の前記複数の電力ドメインに分配される電力の増加又は減少のため、実行時間において測定された応答を含む電力スケーリングを決定するステップと、各フェーズに対する前記電力スケーリングに基づいて、前記シーケンスのフェーズ間での時間的電力分配を決定して、前記エネルギーバジェットを満たし、当該システムによる前記アプリケーションの実行時間パフォーマンスを改善又は最適化するステップと、を含む、システムである。
【００８４】
例１８は、前記動作は、パフォーマンス指標、目的関数、及び前記パフォーマンス指標を評価するための測定間隔及び測定イベントのうちの少なくとも一つを選択するステップをさらに含み、前記パフォーマンス指標は、当該システムによる前記アプリケーションの実行時間パフォーマンスを改善又は最適化するように選択される、例１７に記載の主題である。
【００８５】
例１９は、前記動作は、現在フェーズを検出するために前記アプリケーションをモニタするステップと、前記現在フェーズにおいて、前記時間的電力割り当てが前記目的関数を満たさないと決定するステップと、前記決定に応じて、前記シーケンスのフェーズ間で前記電力を時間的に再割り当てするステップと、をさらに含む、例１８に記載の主題である。
【００８６】
例２０は、前記シーケンスのフェーズ間で前記電力を時間的に再割り当てするために、前記動作は、前記シーケンスのフェーズ間で新しい時間的電力割り当てを選択するステップと、前記時間的電力分配に基づいて、前記現在フェーズが省電力又は加速のために指定されているかどうかを決定するステップと、前記現在フェーズが省電力のために指定されている場合、前記新しい時間的電力割り当てに従って当該システム内の複数の電力ドメインに対する全体の電力リミットを下げるステップと、前記現在フェーズが加速のために指定されている場合、前記新しい時間的電力分配に従って前記ノード内の複数の電力ドメインの全体の電力リミットを上げるステップと、をさらに含む、例１９に記載の主題である。
【００８７】
例２１は、前記動作は、前記現在フェーズが省電力又は加速のために指定されているかどうかを示す、前記アプリケーションのコンピュータ実行可能コード内のアノテーションを検出するステップをさらに含む、例２０に記載の主題である。
【００８８】
例２２は、前記動作は、前記ノード内の複数の電力ドメイン間の空間電力分配が前記パフォーマンス指標を満たさないと決定するステップと、前記決定に応じて、前記新しい時間的電力割り当てに基づいて、前記現在フェーズにおける前記複数の電力ドメイン間の前記電力を空間的に再分配するステップと、をさらに含む、例２０に記載の主題である。
【００８９】
例２３は、前記フェーズのシーケンスを決定するために、前記動作は、前記アプリケーション、前記ノード、電力上限及び前記ノードを含むシステムのうちの少なくとも一つの変化を検出するステップと、検出された前記変化に応じて、前記シーケンスのフェーズ間の時間的電力分配を再構成するステップと、をさらに含む、例１７から２２のいずれか一つに記載の主題である。
【００９０】
例２４は、前記フェーズのシーケンスを決定するために、前記動作は、計算結合フェーズ、記憶結合フェーズ、通信結合フェーズ、アイドルフェーズ、アクティブフェーズ及びそれらのフェーズの任意のものの組み合わせのうち少なくとも２つを検出するステップをさらに含む、例１７から２３のいずれか一つに記載の主題である。
【００９１】
例２５は、前記動作は、前記シーケンスの各フェーズに対して、前記シーケンスの第１反復に基づいた前記時間的電力分配を決定するステップと、前記シーケンスの各フェーズに対して、前記シーケンスの第２反復に前記時間的電力割り当てを適用するステップと、をさらに含む、例１７から２４のいずれか一つに記載のシステムである。
【００９２】
例２６は、例１から９のいずれか一つに記載の方法を実装する又は装置を実現する機械読み取り可能命令を含む機械読み取り可能ストレージである。
【００９３】
例２７は、電力マネージャを使用して、ノード上で実行するためのタスクを含むアプリケーションに対応する、フェーズのシーケンスを決定する手段であって、該シーケンスはエネルギーバジェットに関連する時間間隔に対応する、手段と、各フェーズに対して、前記ノード内の前記複数の電力ドメインに分配される電力の増加又は減少のため、実行時間において測定された応答を含む電力スケーリングを決定する手段と、各フェーズに対する前記電力スケーリングに基づいて、前記シーケンスのフェーズ間での時間的電力分配を決定して、前記エネルギーバジェットを満たし、前記ノードによる前記アプリケーションの実行時間パフォーマンスを改善又は最適化する手段と、を含む装置である。
【００９４】
例２８は、パフォーマンス指標、目的関数、及び前記パフォーマンス指標を評価するための測定間隔及び測定イベントのうちの少なくとも一つを選択する手段をさらに含み、前記パフォーマンス指標は、前記ノードによる前記アプリケーションの実行時間パフォーマンスを改善又は最適化するように選択される、前記目的関数は、電力上限内でのパフォーマンスを最大化すること、パフォーマンスを最大化すること、電力上限内でエネルギー効率を最大にすること、及び効率を最大にすることを含む群から選択される、例２７に記載の主題である。
【００９５】
例２９は、現在フェーズを検出するために前記アプリケーションをモニタする手段と、前記現在フェーズにおいて、前記時間的電力割り当てが前記目的関数を満たさないと決定する手段と、前記決定に応じて、前記シーケンスのフェーズ間で前記電力を時間的に再割り当てする手段と、をさらに含む、例２８に記載の主題である。
【００９６】
例３０は、前記シーケンスのフェーズ間で前記電力を時間的に再割り当てする手段は、前記シーケンスのフェーズ間で新しい時間的電力割り当てを選択する手段と、前記時間的電力分配に基づいて、前記現在フェーズが省電力又は加速のために指定されているかどうかを決定する手段と、前記現在フェーズが省電力のために指定されている場合、前記新しい時間的電力割り当てに従って前記ノード内の複数の電力ドメインに対する全体の電力リミットを下げる手段と、前記現在フェーズが加速のために指定されている場合、前記新しい時間的電力分配に従って前記ノード内の複数の電力ドメインの全体の電力リミットを上げる手段と、を含む、例２９に記載の主題である。
【００９７】
例３１は、前記現在フェーズが省電力又は加速のために指定されているかどうかを示す、前記アプリケーションのコンピュータ実行可能コード内のアノテーションを検出する手段をさらに含む、例３０に記載の主題である。
【００９８】
例３２は、前記ノード内の複数の電力ドメイン間の空間電力分配が前記パフォーマンス指標を満たさないと決定する手段と、前記決定に応じて、前記新しい時間的電力割り当てに基づいて、前記現在フェーズにおける前記複数の電力ドメイン間の前記電力を空間的に再分配する手段と、をさらに含む、例３０に記載の主題である。
【００９９】
例３３は、前記アプリケーション、前記ノード、電力上限及び前記ノードを含むシステムのうちの少なくとも一つの変化を検出する手段と、検出された前記変化に応じて、前記シーケンスのフェーズ間の時間的電力分配を再構成する手段と、をさらに含む、例２７から３２のいずれか一つに記載の主題である。
【０１００】
例３４は、計算結合フェーズ、記憶結合フェーズ、通信結合フェーズ、アイドルフェーズ、アクティブフェーズ及びそれらのフェーズの任意のものの組み合わせのうち少なくとも２つを検出する手段をさらに含む、例２７から３３のいずれか一つに記載の主題である。
【０１０１】
例３５は、前記シーケンスの各フェーズに対して、前記シーケンスの第１反復に基づいた前記時間的電力分配を決定する手段と、前記シーケンスの各フェーズに対して、前記シーケンスの第２反復に前記時間的電力割り当てを適用する手段と、をさらに含む、例２７から３４のいずれか一つに記載の主題である。
【０１０２】
上記の説明は、本明細書に説明されている実施形態の完全な理解のための多数の特定の詳細を提供する。しかし、当業者であれば、特定の詳細の一つ以上は省略されてもよく、他の方法、コンポーネント、又は材料が使用されてもよいことを認識するであろう。場合によっては、周知の特徴、構造、又は操作は、詳細には示されておらず、記載されていない。
【０１０３】
さらに、説明されている特徴、動作又は特性は、広範囲の異なる構成でアレンジ及び設計されることができ、及び／又は一つ以上の実施形態において任意の適切な方法で組み合わせられることができる。したがって、システム及び方法の発明を実施するための形態は、特許請求の範囲に記載されている本開示の範囲を限定するものではなく、本開示の可能な実施形態の単なる代表例である。さらに、開示された実施形態に関連して説明されている方法のステップ又は行動の順序は、当業者には明らかであるように変更され得ることは容易に理解されるものである。したがって、図面又は発明を実施するため形態の順序は、説明を目的とするのみであり、順序を必要とすると指定されない限り、順序が必要とされることを示唆することを意図していない。
【０１０４】
用語「結合された」は、本明細書では、問題となっているコンポーネント間の直接的又は間接的な任意のタイプの関係を示すために使用され、電気的、機械的、流体的、光学的、電磁的、電気機械的、その他の接続に適用されることができる。追加的に、用語「第１」、「第２」等は、本明細書では説明を容易にするためにのみ使用されることができ、特に示されない限り、なんら特定の時間的又は時系列的な意味はない。
【０１０５】
本明細書において、「一実施形態」、「実施形態」、「例示的実施形態」等の言及は、実施形態に関連して説明される特定の特徴、構造又は特性が、少なくとも一つの実施形態に含まれることを意味している。本明細書の様々な場所においてそのような語句が出現するが、必ずしも全てが同じ実施形態を示しているとは限らない。さらに、特定の特徴、構造又は特性が任意の実施形態に関連して記載されている場合、他の実施形態に関連したそのような特徴、構造、又は特性に影響を及ぼすことは、当業者の理解の範囲内である。
【０１０６】
様々な実施形態は、ハードウェア要素、ソフトウェア要素及び／又はその両方の組み合わせを使用して実装されることができる。ハードウェア要素の例は、プロセッサ、マイクロプロセッサ、回路、回路要素（例えば、トランジスタ、抵抗器、コンデンサ、インダクタ等）、集積回路、特定用途向け集積回路（ＡＳＩＣ）、プログラマブル論理デバイス（ＰＬＤ）、デジタル信号プロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセット等を含む。ソフトウェアの例は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、機械プログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、機能、方法、手順、ソフトウェアインタフェース、アプリケーションプログラムインタフェース（ＡＰＩ）、命令セット、計算コード、コンピュータコード、コードセグメント、コンピュータコードセグメント、単語、値、記号、又はそれらの任意の組み合わせを含む。
【０１０７】
少なくとも一つの実施形態の一つ以上の態様は、プロセッサ内に様々なロジックを呈し、機械によって読み取られると、機械に本明細書で説明されている技術を実行するためのロジックを組み上げさせる機械読み取り可能媒体に格納された代表的な命令によって実装されることができる。「ＩＰコア」として知られるそのような表現は、有形の機械読み取り可能媒体に記憶されることができ、様々な顧客又は製造施設に供給され、実際にロジック又はプロセッサを製造する製造機械にロードされる。
【０１０８】
多くの例示的な実施形態を参照して実施形態を説明したが、当業者によって、本開示の原理の精神及び範囲内に入る多くの他の修正及び実施形態が考案されることができることを理解されたい。より詳細には、本開示、図面、及び添付の特許請求の範囲の範囲内の主題の組み合わせアレンジメントのコンポーネントの部分及び／又はアレンジメントにおいて、様々な変更及び修正が可能である。コンポーネントの部品及び／又はアレンジメントの変更及び修正に加えて、代替の使用もまた当業者には明らかであろう。したがって、本発明の範囲は、添付の特許請求の範囲によってのみ決定されるべきである。
【図１】
0006668355.tif 000005
【図２Ａ】
0006668355.tif 000006
【図２Ｂ】
0006668355.tif 000007
【図２Ｃ】
0006668355.tif 000008
【図３】
0006668355.tif 000009
【図４】
0006668355.tif 000010
【図５】
0006668355.tif 000011