IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドの特許一覧 ▶ エーティーアイ・テクノロジーズ・ユーエルシーの特許一覧

特許7419605電力推定機構のアプリケーションオーバーライド
<>
  • 特許-電力推定機構のアプリケーションオーバーライド 図1
  • 特許-電力推定機構のアプリケーションオーバーライド 図2
  • 特許-電力推定機構のアプリケーションオーバーライド 図3
  • 特許-電力推定機構のアプリケーションオーバーライド 図4
  • 特許-電力推定機構のアプリケーションオーバーライド 図5
  • 特許-電力推定機構のアプリケーションオーバーライド 図6
  • 特許-電力推定機構のアプリケーションオーバーライド 図7
  • 特許-電力推定機構のアプリケーションオーバーライド 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-12
(45)【発行日】2024-01-22
(54)【発明の名称】電力推定機構のアプリケーションオーバーライド
(51)【国際特許分類】
   G06F 1/26 20060101AFI20240115BHJP
   G06F 1/3228 20190101ALI20240115BHJP
   G06F 1/324 20190101ALI20240115BHJP
   G06F 1/3296 20190101ALI20240115BHJP
   G06F 1/3206 20190101ALI20240115BHJP
【FI】
G06F1/26
G06F1/3228
G06F1/324
G06F1/3296
G06F1/3206
【請求項の数】 20
(21)【出願番号】P 2023527065
(86)(22)【出願日】2021-11-10
(65)【公表番号】
(43)【公表日】2023-11-17
(86)【国際出願番号】 US2021058840
(87)【国際公開番号】W WO2022103879
(87)【国際公開日】2022-05-19
【審査請求日】2023-11-14
(31)【優先権主張番号】17/094,283
(32)【優先日】2020-11-10
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(73)【特許権者】
【識別番号】508301087
【氏名又は名称】エーティーアイ・テクノロジーズ・ユーエルシー
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ジョナサン デイビッド ハウケ
(72)【発明者】
【氏名】アダム クラーク
【審査官】豊田 真弓
(56)【参考文献】
【文献】米国特許出願公開第2011/0291746(US,A1)
【文献】特開2020-135714(JP,A)
【文献】米国特許出願公開第2014/0330764(US,A1)
【文献】特開2013-168041(JP,A)
【文献】米国特許出願公開第2016/0162006(US,A1)
【文献】中国特許出願公開第104601822(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 1/26
G06F 1/3228
G06F 1/324
G06F 1/3296
G06F 1/3206
(57)【特許請求の範囲】
【請求項1】
コンピューティングシステムであって、
1つ以上の機能回路と、
電力管理回路と、を備え、
前記電力管理回路は、
第1のアプリケーションの実行を開始することに応じて、電力推定パラメータの既存のセットを、前記第1のアプリケーションに関連するオーバーライド電力推定パラメータの第1のセットに置き換えることと、
前記コンピューティングシステムが前記第1のアプリケーションを実行している間に、ランタイム測定値と、前記オーバーライド電力推定パラメータの第1のセットと、に基づいて、ランタイム中の前記1つ以上の機能回路による電力消費の第1の推定値を生成することと、
前記電力消費の第1の推定値に基づいて、前記1つ以上の機能回路の1つ以上の電力関連設定を調整することと、
を行うように構成されている、
コンピューティングシステム。
【請求項2】
前記電力推定パラメータの既存のセットは、デプロイ前の特性評価段階中に生成されたデフォルトの電力推定パラメータであり、前記1つ以上の電力関連設定は、供給電圧の大きさ及びクロック周波数のうち少なくとも1つを含む、
請求項1のコンピューティングシステム。
【請求項3】
前記電力管理回路は、第2のアプリケーションの実行を検出したことに応じて、
前記第2のアプリケーションの実行に応じて、前記オーバーライド電力推定パラメータの第1のセットを、前記第2のアプリケーションに関連するオーバーライド電力推定パラメータの第2のセットに置き換えることと、
前記コンピューティングシステムが前記第2のアプリケーションを実行している間に、前記オーバーライド電力推定パラメータの第2のセットに基づいて、前記1つ以上の機能回路による電力消費の第2の推定値を生成することと、
前記電力消費の第2の推定値に基づいて、前記1つ以上の機能回路の1つ以上の電力関連設定を調整することと、
を行うように構成されている、
請求項1のコンピューティングシステム。
【請求項4】
前記オーバーライド電力推定パラメータの第1のセットは、前記1つ以上の機能回路のキャパシタンス係数、1つ以上のフィルタ係数、誤差係数、及び、誤差率係数のうち1つ以上を含む、
請求項1のコンピューティングシステム。
【請求項5】
前記1つ以上の機能回路は、中央処理ユニット(CPU)及びグラフィックス処理ユニット(GPU)を含む、
請求項1のコンピューティングシステム。
【請求項6】
前記第1のアプリケーションは、オーバーライドモードで動作することを示すことによって、前記デフォルトの電力推定パラメータのオーバーライドを可能にするように構成されている、
請求項2のコンピューティングシステム。
【請求項7】
非オーバーライドモードで動作する場合に、前記電力推定パラメータの既存のセットは、前記オーバーライド電力推定パラメータの第1のセットに置き換えられない、
請求項6のコンピューティングシステム。
【請求項8】
方法であって、
第1のアプリケーションの実行を開始することに応じて、電力推定パラメータの既存のセットを、前記第1のアプリケーションに関連するオーバーライド電力推定パラメータの第1のセットに置き換えることと、
コンピューティングシステムが前記第1のアプリケーションを実行している間に、電力管理回路が、ランタイム測定値と、前記オーバーライド電力推定パラメータの第1のセットと、に基づいて、ランタイム中の1つ以上の機能回路による電力消費の第1の推定値を生成することと、
前記電力消費の第1の推定値に基づいて、前記1つ以上の機能回路の1つ以上の電力関連設定を調整することと、を含む、
方法。
【請求項9】
前記電力推定パラメータの既存のセットは、デプロイ前の特性評価段階中に生成されたデフォルトの電力推定パラメータであり、前記1つ以上の電力関連設定は、供給電圧の大きさ及びクロック周波数のうち少なくとも1つを含む、
請求項8の方法。
【請求項10】
第2のアプリケーションの実行を検出したことに応じて、
前記第2のアプリケーションの実行に応じて、前記オーバーライド電力推定パラメータの第1のセットを、前記第2のアプリケーションに関連するオーバーライド電力推定パラメータの第2のセットに置き換えることと、
前記コンピューティングシステムが前記第2のアプリケーションを実行している間に、前記オーバーライド電力推定パラメータの第2のセットに基づいて、前記1つ以上の機能回路による電力消費の第2の推定値を生成することと、
前記電力消費の第2の推定値に基づいて、前記1つ以上の機能回路の1つ以上の電力関連設定を調整することと、を含む、
請求項8の方法。
【請求項11】
前記オーバーライド電力推定パラメータの第1のセットは、前記1つ以上の機能回路のキャパシタンス係数、1つ以上のフィルタ係数、誤差係数、及び、誤差率係数のうち1つ以上を含む、
請求項8の方法。
【請求項12】
前記1つ以上の機能回路は、中央処理ユニット(CPU)及びグラフィックス処理ユニット(GPU)を含む、
請求項8の方法。
【請求項13】
前記第1のアプリケーションが、オーバーライドモードで動作することを示すことによって、前記デフォルトの電力推定パラメータのオーバーライドを可能にすることを含む、
請求項9の方法。
【請求項14】
前記第1のアプリケーションは、レジスタへの書き込みを実行することによって、前記オーバーライドモードで動作することを示すように構成されている、
請求項13の方法。
【請求項15】
装置であって、
制御回路を備え、
前記制御回路は、
第1のアプリケーションのランタイム実行を開始することに応じて、電力推定パラメータの既存のセットを、前記第1のアプリケーションに関連するオーバーライド電力推定パラメータの第1のセットに置き換えることと、
コンピューティングシステムが前記第1のアプリケーションを実行している間に、ランタイム測定値と、前記オーバーライド電力推定パラメータの第1のセットと、に基づいて、ランタイム中の前記コンピューティングシステムの1つ以上の機能回路による電力消費の第1の推定値を生成することと、
前記電力消費の第1の推定値に基づいて、前記1つ以上の機能回路の1つ以上の電力関連設定に対して調整を行うことと、
を行うように構成されている、
装置。
【請求項16】
前記電力推定パラメータの既存のセットは、デプロイ前の間に生成されたデフォルトの電力推定パラメータである、
請求項15の装置。
【請求項17】
前記制御回路は、
第2のアプリケーションの実行に応じて、前記オーバーライド電力推定パラメータの第1のセットを、前記第2のアプリケーションに関連するオーバーライド電力推定パラメータの第2のセットに置き換えることと、
前記コンピューティングシステムが前記第2のアプリケーションを実行している間に、前記オーバーライド電力推定パラメータの第2のセットに基づいて、前記1つ以上の機能回路による電力消費の第2の推定値を生成することと、
前記電力消費の第2の推定値に基づいて、前記1つ以上の機能回路の1つ以上の電力関連設定を調整することと、
を行うように構成されている、
請求項15の装置。
【請求項18】
前記オーバーライド電力推定パラメータの第1のセットは、前記1つ以上の機能回路のキャパシタンス係数、1つ以上のフィルタ係数、誤差係数、及び、誤差率係数のうち1つ以上を含む、
請求項15の装置。
【請求項19】
前記制御回路は、前記第1のアプリケーションによって生成されたオーバーライドモードの指標に応じて、前記電力推定パラメータの既存のセットを、前記オーバーライド電力推定パラメータの第1のセットに置き換えるように構成されている、
請求項15の装置。
【請求項20】
前記電力消費の第1の推定値は、前記1つ以上の機能回路の各々に対する電力の第1の割り当てを生じさせ、前記電力消費の第2の推定値は、前記1つ以上の機能回路のうち少なくとも1つの機能回路から異なる機能回路への電力の再割り当てを生じさせる、
請求項17の装置。
【発明の詳細な説明】
【背景技術】
【0001】
(関連技術の説明)
現代の集積回路(integrated circuit、IC)の電力消費は、半導体チップの世代ごとに増大する設計課題となっている。ICは、多くの場合、汎用プロセッサ、グラフィックプロセッサ、他の処理ユニット及び他の構成要素等の様々な構成要素の電力消費を管理するための電力管理ユニット(power management unit、PMU)を含む。PMUは、様々な要因に基づいて動的電圧及び周波数スケーリング(dynamic voltage and frequency scaling、DVFS)技術を使用して電力性能状態(P状態)を調整し得る。P状態調整のためのアルゴリズムは、最悪の場合の熱的条件を想定し得る。しかしながら、典型的な使用及び環境の間、最悪の場合の熱的条件が実際には適用されない場合がある。その結果、アルゴリズムにおける想定に起因して、より低い性能状態がこれらの時間中に不必要に選択される場合がある。一般的に言えば、性能が高いほど、消費される電力量が大きくなる。逆に、消費される電力量を制限することは、コンピュータ又は他のタイプのプロセッサベースの電子システムの潜在的な性能を制限する。
【0002】
いくつかのタイプのコンピューティングシステムでは、システムは、全てのアプリケーションについて固定クロック周波数で動作するようにプログラムされる。多くの異なるタイプのアプリケーションがコンピューティングシステム上で動作することができるので、クロック周波数は最悪の場合のシナリオのために選択され、全てのアプリケーションはこの最悪の場合のクロック周波数を使用する。しかしながら、アプリケーションの挙動は典型的に変化し、異なるアプリケーションによって消費される電力量は、固定周波数で動作している間に大きく変化し得る。
【0003】
本明細書に記載の方法及び機構の利点は、添付の図面と併せて以下の説明を参照することによってより良く理解され得る。
【図面の簡単な説明】
【0004】
図1】コンピューティングシステムの一実施形態のブロック図である。
図2】ソフトウェアが電力管理のためのハードウェア機構をオーバーライドすることを可能にするためのシステムの一実施形態のブロック図である。
図3】電力コントローラアルゴリズムの一実施形態のブロック図である。
図4】電力推定機構のアプリケーションオーバーライドを可能にする方法の一実施形態を示す概略的なフロー図である。
図5】新しい電力推定方程式をロードする方法の一実施形態を示す概略的なフロー図である。
図6】オーバーライドパラメータのアプリケーションごとのセットを使用する方法の一実施形態を示す概略的なフロー図である。
図7】電力バジェットをコンピューティングシステムの構成要素に割り当てる方法の一実施形態を示す概略的なフロー図である。
図8】チューニングされた電力推定パラメータに調整を適用する方法の一実施形態を示す概略的フロー図である。
【発明を実施するための形態】
【0005】
以下の説明では、本明細書に提示される方法及び機構の十分な理解を提供するために、多数の具体的な詳細が記載されている。しかしながら、当業者は、これらの具体的な詳細なしで様々な実施形態が実施され得ることを認識すべきである。いくつかの例では、本明細書に記載のアプローチを不明瞭にすることを避けるために、周知の構造、構成要素、信号、コンピュータプログラム命令及び技術が詳細に示されていない。説明を簡単且つ明確にするために、図に示される要素は必ずしも縮尺どおりに描かれているわけではないことを理解されたい。例えば、いくつかの要素の寸法は、他の要素に対して誇張されている場合がある。
【0006】
電力推定パラメータのソフトウェアオーバーライドを可能にするためのシステム、装置及び方法が開示される。一実施形態では、コンピューティングシステムは、様々な電力推定パラメータをチューニングするために実際の状況下での特性評価(post-silicon characterization)を受ける。次いで、これらのチューニングされた電力推定パラメータは、システムにハードコードされる。電力管理ユニットは、これらのハードコードされたパラメータを、実世界環境におけるデプロイ(deployment)中の後続の電力推定計算のために使用する。しかしながら、総電力バジェットの一部をシステム内の異なる構成要素に分配する場合に実行される電力バジェッティング(power budgeting)を最適化するために、電力管理ユニットは、システム上で実行されるソフトウェアが、チューニングされた電力推定パラメータをアプリケーションごとにオーバーライドすることを可能にする。これにより、新しいアプリケーションをシステム上でプロファイリングして、チューニングされた電力推定パラメータの代替セットを生成することができる。この代替セットは、新しいアプリケーションを実行する場合に電力管理ユニットにロードされる。これら及び他の強化された電力推定技術について、本開示の残りの部分を通して記載される。
【0007】
図1を参照すると、コンピューティングシステム100の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム100は、少なくともプロセッサ105A~105N、入力/出力(input/output、I/O)インターフェース120、バス125、メモリコントローラ130、ネットワークインターフェース135、メモリデバイス140、表示コントローラ150、ディスプレイ155、及び、電力管理ユニット(PMU)160を含む。他の実施形態では、コンピューティングシステム100は他の構成要素を含み、及び/又は、コンピューティングシステム100は別様に構成される。プロセッサ105A~105Nは、システム100に含まれる任意の数のプロセッサを表す。
【0008】
一実施形態では、プロセッサ105Aは、中央処理ユニット(central processing unit、CPU)等の汎用プロセッサである。この実施形態では、プロセッサ105Aは、システム100内の他のプロセッサのうち1つ以上と通信するための、及び/又は、それらのプロセッサのうち1つ以上の動作を制御するためのドライバ110(例えば、グラフィックドライバ)を実行する。実施形態に応じて、ドライバ110は、ハードウェア、ソフトウェア及び/又はファームウェアの任意の好適な組み合わせを使用して実装することができることに留意されたい。一実施形態では、プロセッサ105Nは、高並列アーキテクチャを有するデータ並列プロセッサである。データ並列プロセッサは、グラフィックス処理ユニット(graphics processing unit、GPU)、デジタル信号プロセッサ(digital signal processor、DSP)、フィールドプログラマブルゲートアレイ(field programmable gate array、FPGA)、特定用途向け集積回路(application specific integrated circuit、ASIC)等を含む。いくつかの実施形態では、プロセッサ105A~105Nは、複数のデータ並列プロセッサを含む。一実施形態では、プロセッサ105Nは、ディスプレイ155に伝達されるように表示コントローラ150にピクセルを提供するGPUである。
【0009】
メモリコントローラ130は、プロセッサ105A~105Nによってアクセス可能な任意の数及びタイプのメモリコントローラを表す。メモリコントローラ130は、プロセッサ105A~105Nから分離されているものとして示されているが、これは、単に1つの可能な実施形態を表すことを理解されたい。他の実施形態では、メモリコントローラ130は、プロセッサ105A~105Nのうち1つ以上の内部に埋め込むことができ、及び/又は、メモリコントローラ130は、プロセッサ105A~105Nのうち1つ以上と同じ半導体ダイ上に位置することができる。メモリコントローラ130は、任意の数及びタイプのメモリデバイス140に結合されている。メモリデバイス140は、任意の数及びタイプのメモリデバイスを表す。例えば、メモリデバイス140内のメモリのタイプは、ダイナミックランダムアクセスメモリ(Dynamic Random Access Memory、DRAM)、スタティックランダムアクセスメモリ(Static Random Access Memory、SRAM)、NANDフラッシュメモリ、NORフラッシュメモリ、強誘電体ランダムアクセスメモリ(Ferroelectric Random Access Memory、FeRAM)等を含む。
【0010】
I/Oインターフェース120は、任意の数及びタイプのI/Oインターフェース(例えば、ペリフェラルコンポーネントインターコネクト(peripheral component interconnect、PCI)バス、PCI-Extended(PCI-X)、PCIE(PCI Express)バス、ギガビットイーサネット(登録商標)(gigabit Ethernet、GBE)バス、ユニバーサルシリアルバス(universal serial bus、USB))を表す。様々なタイプの周辺デバイス(図示せず)がI/Oインターフェース120に結合されている。そのような周辺デバイスは、ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティック、他のタイプのゲームコントローラ、メディア記録デバイス、外部記憶デバイス、ネットワークインターフェースカード等を含む(が、これらに限定されない)。ネットワークインターフェース135は、ネットワークを介してネットワークメッセージを受信及び送信することができる。
【0011】
PMU160は、ランタイム中のシステム100の電力消費及び温度に基づいて、システム100の様々な機能ユニットに提供される様々な動作設定(例えば、電圧レベル、クロック周波数)を調整することによって、システム100の電力消費を管理する。一実施形態では、PMU160は、デプロイ中にシステム100の電力消費の推定値を生成するために使用されるハードコードされたパラメータ165を含む。一実施形態では、パラメータ165は、システム100のプロファイリング段階中に決定される。これらのパラメータ165は、1つ以上のキャパシタンス係数、1つ以上のフィルタ係数、1つ以上の誤差係数、1つ以上の誤差率係数、及び、システム100の機能ユニットに関連付けられている他の変数等の変数を含むことができる。一実施形態では、PMU160は、プロセッサ105A~105N上で実行されるソフトウェアが、アプリケーションごとにパラメータ165をオーバーライドすることを可能にする。ソフトウェアは、ハードコードされたパラメータ165を、新しいアプリケーションのためにチューニングされたパラメータの新しいセットに置き換えることができる。これにより、新しいアプリケーションが、システム100の電力推定機構及び電力分配機構をファインチューニングし、ハードコードされたパラメータ165を使用して可能であるよりも高い性能を潜在的に達成することができる。これら及び他の電力推定パラメータオーバーライド技術について、本開示の残りの部分を通して記載される。
【0012】
様々な実施形態では、コンピューティングシステム100は、コンピュータ、ラップトップ、モバイルデバイス、ゲームコンソール、サーバ、ストリーミングデバイス、ウェアラブルデバイス、又は、様々な他のタイプのコンピューティングシステム若しくはデバイスのうち何れかである。コンピューティングシステム100の構成要素の数は、実施形態ごとに変化することに留意されたい。例えば、他の実施形態では、図1に示される数よりも多い又は少ない各構成要素が存在する。また、他の実施形態では、コンピューティングシステム100は、図1に示されていない他の構成要素を含むことにも留意されたい。加えて、他の実施形態では、コンピューティングシステム100は、図1に示される以外の方法で構築される。
【0013】
図2を参照すると、ソフトウェアが電力管理のためのハードウェア機構をオーバーライドすることを可能にするためのシステム200の一実施形態のブロック図が示されている。一実施形態では、システム200は、様々な構成要素245A~245Nの電力消費及び/又は電力性能状態を制御するための電力管理ユニット220を含む。電力管理ユニット220は、回路及び/又はプログラム命令の任意の好適な組み合わせを使用して実装され得る。一実施形態では、電力管理ユニット220の制御ユニット222は、構成要素245A~245Nに提供されるクロック周波数及び電圧を調整して、システム200が指定された電力、電流及び熱的制限内で動作していることを保証する。加えて、様々な実施形態では、電力管理ユニット220の制御ユニット222は、電力、電流及び熱的制限を満たしながら、システム200の性能を最大にしようと試みる。構成要素245A~245Nは、任意の数及びタイプの構成要素(例えば、CPU、GPU、メモリサブシステム、キャッシュサブシステム、I/Oデバイス)を表す。
【0014】
一実施形態では、システム200は、製造後に特定の物理的構成要素の特性に基づいて生成された様々なハードコードされたパラメータ205A~205Nを用いて、電力管理目的のためにチューニングされる。これらのパラメータ205A~205Nは、第1のフィルタアルファ値、第2のフィルタアルファ値、CPU誤差係数、CPU誤差率係数、GPU誤差係数、GPU誤差率係数、キャパシタンス係数値等のうち1つ以上を含む。しかしながら、以前にチューニングされたパラメータ205A~205Nのみを使用するのではなく、システム200は、ソフトウェアがこれらのパラメータ205A~205Nのうち1つ以上をオーバーライドすることを可能にする。例えば、一実施形態では、ソフトウェアは、マルチプレクサ210A~210Nに結合されるオーバーライド値203A~203Nを送信して、ソフトウェアが、記憶されたパラメータ205A~205Nをパラメータごとにオーバーライドすることを可能にする。マルチプレクサ210A~210Nは、個々のパラメータ205A~205Nをオーバーライドするソフトウェアの能力の論理的表現を示すことを意図しているにすぎず、オーバーライド機構の正確な表現であることを意図していないことを理解されたい。
【0015】
例えば、別の実施形態では、ソフトウェアがオーバーライド値203A~203Nをメモリ内の特定のロケーションに書き込み、次いで、ソフトウェアがオーバーライド要求又はコマンドを送信して(例えば、オーバーライド値をオーバーライドレジスタに書き込む)、オーバーライドモードが有効にされることを電力管理ユニット220に通知する。それに応じて、電力管理ユニット220は、これらのオーバーライド値203A~203Nを、電圧235A~235Nの電圧レベル及びクロック240A~240Nの周波数をどのようにプログラムするかを決定するために実行される計算の一部として使用する。ソフトウェアから電力管理ユニット220にオーバーライド値を供給する他の方法及びオーバーライドモードを開始するための他の技術が可能であり、企図されることに留意されたい。
【0016】
一実施形態では、オペレーティングシステム(operating system、OS)(又は他のシステムソフトウェア)は、チューニングされたパラメータ205A~205Nをアプリケーションごとにオーバーライドするかどうかを決定する。例えば、一実施形態では、第1のアプリケーションは、ソフトウェアオーバーライド値の第1のセットを有し、第2のアプリケーションは、ソフトウェアオーバーライド値の第2のセットを有し、以下同様である。これにより、各アプリケーションは、アプリケーションがシステム200上でどのように実行されるかのプロファイリング及び分析に基づいて、システム200の性能及び電力消費をファインチューニングすることができる。
【0017】
様々な実施形態において、電力管理ユニット220は、センサから様々な入力及び/又は測定値を受信する。これらの入力及び/又は測定値は、温度測定値、電流測定値等を含む。また、電力管理ユニット220は、インターフェース212A~212Nを介してオーバーライド値203A~203N及び/又はハードコードされたパラメータ205A~205Nを受信し、電力管理ユニット220は、オーバーライド値203A~203N及び/又はハードコードされたパラメータ205A~205Nをセンサ入力及び測定値に適用することに基づいて、システム200のリアルタイム電力消費の推定値を生成する。インターフェース212A~212Nは、実施形態に応じて単一のインターフェース又は複数のインターフェースとして実装され得ることに留意されたい。電力推定値を生成した後、電力管理ユニット220は、電力推定値を使用して、構成要素245A~245Nに供給される様々な電圧235A~235N及びクロック240A~240Nの周波数をどのように調整するかを決定する。
【0018】
例えば、一実施形態では、電力管理ユニット220は、所定の構成要素245A~245Nに供給される電圧の指標を受信する。また、電力管理ユニット220は、所定の構成要素245A~245Nの対応するキャパシタンス係数を取り出す。キャパシタンス係数は、元のハードコードされた値であってもよいし、ソフトウェアによって提供されるオーバーライド値であってもよい。次いで、一実施形態では、電力管理ユニット220は、キャパシタンス係数に、スケーリング係数(アルファ)を乗算したクロック周波数を乗算した2乗した電圧を乗算する(すなわち、C*V*F*アルファ)。スケーリング係数は、元のハードコードされた値であってもよいし、ソフトウェアによって提供されるオーバーライド値であってもよい。乗算の結果は、所定の構成要素245A~245Nの電力消費の推定値として使用される。電力管理ユニット220は、同様の方法で他の構成要素245A~245Nの電力消費の推定値を生成し、次いで、それらの推定値を加算して、システム200全体の電力消費の推定値を生成する。これは、電力推定値を生成する一例にすぎないことを理解されたい。当業者は、電力推定値を生成するための他の技術が他の実施形態で使用され得ることを理解するであろう。
【0019】
様々な実施形態では、システム200の電力推定値を生成した後、電力管理ユニット220は、電力推定値を総電力バジェットと比較する。一実施形態では、電力推定値が総電力バジェットよりも大きい場合、電力管理ユニット220は、構成要素245A~245Nに供給される電圧及び/又は周波数を減少させて、システム200の電力消費を減少させる。一実施形態では、電圧及び/又は周波数が減少される量は、電力推定値と総電力バジェットとの差に比例する。電力推定値が総電力バジェット未満である場合、電力管理ユニット220は、構成要素245A~245Nに供給される電圧及び/又は周波数を増加させて、システム200のより高い性能を可能にする。別の実施形態では、電力管理ユニット220は、各構成要素245A~245Nを所定の構成要素電力バジェット内に保つ一方で、システム200全体を総電力バジェット内に保とうと試みる。
【0020】
最適な性能を達成するために、構成要素245A~245Nに電力を分配するための他の技術を実装することができる。例えば、別の実施形態では、システム200は全体として電力バジェットを有し、1つの構成要素245A~245Nが、特定の構成要素ごとの制限に制約されるのではなく、電力バジェットからの残りの電力の全てを利用する。システムレベルの電力計算を実行する場合、電力管理ユニット220は、個々の構成要素245A~245Nのためのバジェット値又は計算値の何れかを使用することができる。また、更なる実施形態では、電力管理ユニット220は、ソフトウェアアプリケーション及び/又はOSが、各構成要素245A~245Nに供給される周波数及び電圧を制御することを可能にする。例えば、一実施形態では、周波数及び電圧は、プロファイリング結果に基づいてOS又はアプリケーションによって設定される。システム200を指定された電力バジェット内に保ちながら、構成要素245A~245Nの間で電力を分配する他の方法が可能であり、企図される。
【0021】
一実施形態では、システム200は、任意の数の異なるゲームを実行することができるビデオゲームコンソールである。典型的には、システム200は製造後に特性評価され、電力計算に使用される下位レベルのパラメータ及び変数(例えば、ハードコードされたパラメータ205A~205N)は、この特性評価段階中にチューニングされる。しかしながら、これは、システム200上でプレイされる異なるタイプのゲームに対してシステム200がどのように電力を消費するかの違いを考慮していない。ゲームは、製造後にシステム200上でプロファイリングすることができるが、これは、システム200が既にデプロイされた後に開発される新しいゲームでは可能ではない。したがって、これらのシナリオを緩和するために、システム200は、下位レベルの変数が、各異なるゲームタイトルに対して、タイトルごとにソフトウェアによってオーバーライドされることを可能にする。これにより、システム200上でプレイされる異なるゲームごとに性能を最適化することができる。この例ではビデオゲームコンソールが記載されるが、他のタイプのシステム及び装置も、本明細書に記載の方法及び機構から利益を得ることができることを理解されたい。
【0022】
図3を参照すると、電力コントローラアルゴリズム300の一実施形態のブロック図が示されている。一実施形態では、電力コントローラアルゴリズム300は、電力エンベロープ(すなわち、電力消費の所定の範囲)内に留まるように、システムの構成要素の動作条件を調整するために、コンピューティングシステム(例えば、図1のシステム100、図2のシステム200)によって用いられる。別の実施形態では、電力コントローラアルゴリズム300は、システムを熱的エンベロープ(すなわち、所与の温度範囲)内に保つために使用される。更なる実施形態では、電力コントローラアルゴリズム300は、システムを電力エンベロープ及び熱的エンベロープ内に保つために使用される。
【0023】
一実施形態では、コンピューティングシステムの電力消費の推定値を生成するために電力計算305が実行される。コンピューティングシステムによって実行されているアプリケーションに応じて、電力計算305は、パラメータ値の所定のセットを使用することができるか、又は、電力計算305は、特定のアプリケーションに合わせられたパラメータ値のターゲットセットを使用することができる。一実施形態では、電力計算305は、実際の状況下での特性評価中に以前に決定されたシステムのロードされたパラメータ値のセットをオーバーライドするパラメータのセットを用いて実行される。電力計算305の例は、先に提示した電力方程式(電力=C*V*F*アルファ)である。しかしながら、他の実施形態では、他のタイプの電力方程式を使用することができる。
【0024】
電力推定値を生成するために電力計算305が実行された後、この電力推定値は入力としてフィルタ310に提供される。一実施形態では、フィルタ310は、時定数を定義する1つの係数(例えば、アルファ係数315)を有する無限インパルス応答フィルタを有する2段アルファフィルタである。アルファ係数315は、電力方程式で使用されるアルファ変数とは異なる変数であることに留意されたい。2段フィルタは、直列の2つのアルファフィルタとして実装することができる。一実施形態によるフィルタ310の例が、フィルタ310の下の破線ボックス312内の方程式に示されている。この実施形態では、フィルタ310は、値(ALPHA)及び(1-ALPHA)に基づいて計算される2つの出力段(OUTPUT_STAGE1及びOUTPUT_STAGE2)を有する。破線ボックス312内の方程式は、フィルタ310を実装するための1つの方法を表すにすぎないことを理解されたい。他の実施形態では、フィルタ310を実装する場合に他のタイプのフィルタ方程式を使用することができることに留意されたい。
【0025】
フィルタ310の出力(すなわち、破線ボックス322内のFILTER_OUTPUT)は、比例微分(proportional-derivative、PD)コントローラ320に提供される。一実施形態では、PDコントローラ320は、P係数及びD係数325に基づくが、積分係数が0に設定された比例微分制御ループ機構を使用して、制御されているクロックの周波数ターゲットを調整する。P係数及びD係数325は、それぞれ誤差係数及び誤差率係数とも呼ばれ得ることに留意されたい。比例微分制御ループ機構の実施形態の一例が、破線ボックス322の方程式に示されている。他の実施形態では、PDコントローラ320は、比例微分制御に基づくもの以外の他のタイプの制御ループ機構を使用することができる。
【0026】
破線ボックス322の方程式に示されているように、誤差項は、絶対誤差ではなく百分率誤差として計算される。破線ボックス322の方程式では、誤差係数は「ERROR_COEFF」と称され、誤差率係数は「ERROR_RATE_COEFF」と称される。比例微分コントローラ320の出力は、制御されているクロックの周波数ターゲットを変更するために周波数変更ブロック330に提供される。一実施形態では、PDコントローラ320の出力が計算されると、この出力は、所定のコントローラの前の周波数ターゲットに対する周波数ターゲットに加算される。次いで、最終周波数ターゲットは、そのクロックの最大周波数及び最小周波数内にあるように制限される。所定の構成要素について周波数変更を開始した後、電力管理ユニットは、再び開始して新しい電力計算305を行う前に、待機ブロック335によって示されるように、ある量の時間(例えば、1ミリ秒(ms))待機する。
【0027】
次に、図4を参照すると、電力推定機構のアプリケーションオーバーライドを可能にするための方法400の一実施形態が示されている。説明のために、この実施形態におけるステップ及び図5図8のステップは順番に示されている。しかしながら、記載された方法の様々な実施形態では、記載された要素のうち1つ以上が、示されたものとは異なる順序で同時に実行されてもよいし、完全に省略されてもよいことに留意されたい。必要に応じて、他の追加の要素も実行される。本明細書に記載の様々なシステム又は装置の何れも、方法400を実施するように構成されている。
【0028】
コンピューティングシステムは、新しいソフトウェアアプリケーションの実行の開始を検出する(ブロック405)。新しいソフトウェアアプリケーションが開始されていることを検出したことに応じて、コンピューティングシステムは、新しいソフトウェアアプリケーションの実行中に、電力推定オーバーライドモードで動作するかどうかを決定する(ブロック410)。一実施形態では、新しいソフトウェアアプリケーションは、新しいソフトウェアアプリケーションの実行中に、電力推定オーバーライドモードを使用するかどうかを指定する指標又は設定を含む。他の実施形態では、電力推定オーバーライドモードを実施するかどうかを決定する他の方法が使用され得る。
【0029】
コンピューティングシステムが電力推定オーバーライドモードで動作することを決定した場合(条件付きブロック415、「はい」)、コンピューティングシステムは、新しいソフトウェアアプリケーションに関連付けられたオーバーライドパラメータの所定のセットをロードする(ブロック420)。次に、コンピューティングシステムは、オーバーライドパラメータの所定のセットを電力管理ユニットにプログラムする(ブロック425)。新しいソフトウェアアプリケーションの実行中に、電力管理ユニットは、様々な電力関連値に関連付けられたランタイム測定値及び設定を受信する(ブロック430)。例えば、これらの測定値は、温度測定値、電流測定値、電圧レベル、周波数設定、並びに、他の測定値及び設定を含むことができるが、これらに限定されない。次いで、電力管理ユニットは、オーバーライドパラメータの所定のセットをランタイム測定値及び設定に適用することに基づいて、新しいアプリケーションのランタイム実行中に、電力推定値を生成する(ブロック435)。次に、電力管理ユニットは、生成された電力推定値に基づいて、1つ以上の構成要素に供給される電圧レベル及び/又はクロック周波数を調整する(ブロック445)。一実施形態では、電力管理ユニットは、所定の電力ターゲットを満たすように、生成された電力推定値に基づいて1つ以上の構成要素に供給される電圧レベル及び/又はクロック周波数を調整する。ブロック445の後、方法400は終了する。
【0030】
そうではなく、コンピューティングシステムが標準電力推定モードで動作すると決定した場合(条件付きブロック415、「いいえ」)、電力管理ユニットは、パラメータの所定のセットをランタイム測定値及び設定に適用することに基づいて、新しいアプリケーションのランタイム実行中に電力推定値を生成する(ブロック440)。ブロック440の後、電力管理ユニットは、生成された電力推定値に基づいて、1つ以上の構成要素に供給される電圧レベル及び/又はクロック周波数を調整する(ブロック445)。
【0031】
図5を参照すると、新しい電力推定方程式をロードするための方法500の一実施形態が示されている。コンピューティングシステムは、実行されている新しいアプリケーションを検出する(ブロック505)。次に、コンピューティングシステムは、新しいアプリケーションに関連付けられた新しい電力推定方程式をロードする(ブロック510)。新しい電力推定方程式は、新しいアプリケーションが、現在のコンピューティングシステムに類似又は一致するテストコンピューティングシステム上で実行されている間に、プロファイリング段階中に生成され得ることに留意されたい。システム上で実行されるソフトウェア(例えば、OS)は、新しい電力推定方程式を使用するように電力管理ユニットをプログラムする(ブロック515)。電力管理ユニットは、新しい電力推定方程式によって置き換えられる(すなわち、プリエンプトされる)既存の電力推定方程式を含み、新しい電力推定方程式は、既存の電力推定方程式とは異なることに留意されたい。既存の電力推定方程式は「第1の電力推定方程式」と呼ばれ、新しい電力推定方程式は「第2の電力推定方程式」と呼ばれることに留意されたい。代替的に、電力管理ユニットは、既存の電力推定方程式を保持することができ、アプリケーションは、既存の電力推定方程式又は新しい電力推定方程式の何れかを使用するように選択することができる。他の実施形態では、電力管理ユニットは、3つ以上の個別の電力推定方程式を維持し、任意の方程式が所定のアプリケーションによって選択され得る。
【0032】
次に、新しいアプリケーションの実行中に、電力管理ユニットは、新しい電力推定方程式を使用して電力推定値を生成する(ブロック520)。電力管理ユニットは、電力推定値に基づいて、1つ以上の構成要素の動作条件(例えば、電圧レベル、クロック周波数)の調整を行う(ブロック525)。ブロック525の後、方法500は終了する。コンピューティングシステムが後の時点で異なるアプリケーションを実行する場合、コンピューティングシステムは、前の電力推定方程式に戻るか、又は、他のアプリケーションに固有の別の新しい電力推定方程式をロードすることができることに留意されたい。場合によっては、各アプリケーションは、アプリケーションの一意のプロファイルを追跡する、それ自体のファインチューニングされた電力推定方程式を有することが可能である。ブロック520及びブロック525は、複数の電力推定値を生成し、対応する調整を行うために、新しいアプリケーションの実行中に任意の回数繰り返すことができることにも留意されたい。
【0033】
図6を参照すると、オーバーライドパラメータのアプリケーションごとのセットを使用するための方法600の一実施形態が示されている。プロセッサが、電力推定パラメータオーバーライド機構を含む電力管理ユニットを有するコンピューティングシステム上で第1のアプリケーションを実行する(ブロック605)。第1のアプリケーションを実行する前又は実行している間、プロセッサは、オーバーライドパラメータの第1のセットを電力管理ユニットに渡す(ブロック610)。電力管理ユニットは、第1のアプリケーションの実行中に、オーバーライドパラメータの第1のセットを使用してコンピューティングシステムの電力推定値を計算する(ブロック615)。次に、電力管理ユニットは、計算された電力推定値に基づいて、1つ以上の動作設定(例えば、構成要素ごとの供給電圧の大きさ、構成要素ごとのクロック周波数)を調整する(ブロック620)。後の時点で、プロセッサは、第1のアプリケーションとは異なる第2のアプリケーションに実行を切り替える(ブロック625)。
【0034】
第2のアプリケーションの実行前又は実行中に、プロセッサは、電力管理ユニットに伝達される電力推定パラメータオーバーライド要求を生成する(ブロック630)。また、プロセッサは、オーバーライドパラメータの第2のセットを電力管理ユニットに渡し、オーバーライドパラメータの第2のセットは、オーバーライドパラメータの第1のセットとは異なる(ブロック635)。一実施形態では、オーバーライドパラメータの第2のセットは、第2のアプリケーションによって指定及び/又は提供される。電力推定パラメータオーバーライド要求を検出したことに応じて、電力管理ユニットは、第2のアプリケーションの実行中に、オーバーライドパラメータの第2のセットを使用してコンピューティングシステムの電力推定値を計算する(ブロック640)。次いで、電力管理ユニットは、計算された電力推定値に基づいて1つ以上の動作設定を調整する(ブロック645)。ブロック645の後、方法600は終了する。方法600は、任意の数の他のアプリケーションに対して実行することができ、各アプリケーションは、それ自体のオーバーライドパラメータのセットを有することに留意されたい。また、一実施形態では、第1及び第2のアプリケーションは、ゲームコンソール上で実行されている第1及び第2のゲームを表すことに留意されたい。他の実施形態では、第1及び第2のアプリケーションは、他のタイプのコンピューティングシステム上で実行される他のタイプのソフトウェアアプリケーションであり得る。
【0035】
図7を参照すると、電力バジェットをコンピューティングシステムの構成要素に割り当てるための方法700の一実施形態が示されている。電力管理ユニットは、N個の構成要素から構成されるコンピューティングシステム全体の総電力バジェットの指標を取り出す(ブロック705)。「N」個の構成要素の数は、システムごとに異なる場合があり、Nは1よりも大きい正の整数である。電力管理ユニットは、コンピューティングシステム全体の総電力バジェットを超えないように、N個の構成要素の各々に電力を割り当てる(ブロック710)。ランタイム中、電力管理ユニットは、複数の下位レベル変数を使用してN個の構成要素の電力消費を計算する(ブロック715)。複数の下位レベル変数は、実際の状況下での特性評価中に決定されたチューニングされた変数だけでなく、OS又はソフトウェアアプリケーションによって提供されるオーバーライド変数を含むことができる。
【0036】
次に、電力管理ユニットは、総電力バジェットから「N-1」個の構成要素ごとの電力消費値を減算することによって、システム全体の利用可能な電力バジェットを決定する(ブロック720)。次に、電力管理ユニットは、利用可能な電力バジェットの全てをN番目の構成要素に割り当てる(ブロック725)。方法700のN番目の構成要素は、任意のタイプの構成要素とすることができ、そのタイプは実施形態ごとに異なる。例えば、一実施形態では、N番目の構成要素はGPUである。他の実施形態では、N番目の構成要素は、様々な他のタイプの構成要素のうち何れかであり得る。ブロック725の後、方法700は終了する。方法700は、N番目の構成要素に割り当てられる電力バジェットを更新するために周期的に繰り返すことができることに留意されたい。
【0037】
図8を参照すると、チューニングされた電力推定パラメータに調整を適用するための方法800の一実施形態が示されている。コンピューティングシステムは、システム上で実行される所定のアプリケーションをロードする(ブロック805)。所定のアプリケーションをロードすることの一部として、コンピューティングシステムは、複数のオーバーライド調整値を電力管理ユニットにプログラムする(ブロック810)。電力管理ユニットは、複数の調整値を複数のチューニングされた電力推定パラメータに適用する(ブロック815)。例えば、12個の異なるチューニングされたパラメータがある場合、ソフトウェアは、これらの12個のチューニングされたパラメータに適用する12個の調整値を指定することができる。場合によっては、ソフトウェアは、チューニングされたパラメータの全てを変更するのではなく、チューニングされたパラメータのサブセットについての調整値を指定することができる。各調整値は、一実施形態では、第1の調整値が120%であり、第2の調整値が90%であり、以下同様であるような百分率であり得る。この例では、調整値にチューニングされたパラメータ値を乗算して、調整されたパラメータ値を生成する。
【0038】
次に、所定のアプリケーションの実行中に、電力管理ユニットは、チューニングされた電力推定パラメータに適用される調整に基づいて電力推定値を生成する(ブロック820)。次いで、電力管理ユニットは、生成された電力推定値に基づいて様々な構成要素に電力を割り当てる(ブロック825)。ブロック825の後、方法800は終了する。
【0039】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、本明細書に記載の方法及び/又は機構を実装する。例えば、汎用又は専用プロセッサによって実行可能なプログラム命令が企図される。様々な実施形態では、そのようなプログラム命令は、高レベルプログラミング言語によって表される。他の実施形態では、プログラム命令は、高レベルプログラミング言語からバイナリ、中間又は他の形式にコンパイルされる。代替的に、ハードウェアの挙動又は設計を説明するプログラム命令が書かれる。そのようなプログラム命令は、C等の高レベルプログラミング言語によって表される。代替的に、Verilog等のハードウェア設計言語(hardware design language、HDL)が使用される。様々な実施形態では、プログラム命令は、様々な非一時的なコンピュータ可読記憶媒体の何れかに記憶される。記憶媒体は、プログラム実行のためにプログラム命令をコンピューティングシステムに提供するために、使用中にコンピューティングシステムによってアクセス可能である。一般的に言えば、そのようなコンピューティングシステムは、少なくとも1つ以上のメモリと、プログラム命令を実行するように構成された1つ以上のプロセッサと、を含む。
【0040】
上記の実施形態は、実施形態の非限定的な例にすぎないことを強調しておきたい。上記の開示が十分に理解されると、多数の変形及び修正が当業者に明らかになるであろう。以下の特許請求の範囲は、全てのそのような変形及び修正を包含するものと解釈されることが意図されている。
図1
図2
図3
図4
図5
図6
図7
図8