(57)【要約】グラフィックス・エンジンにおける電力消費を管理する方法及び装置が開示される。アプリケーション・レベル・インタフェースを介してグラフィックス・エンジンの電力使用量を管理する例示的な方法は、前記アプリケーション・レベル・インタフェースを介して、前記グラフィックス・エンジンのポリシ・ディレクティブを取得する取得ステップであって、前記ポリシ・ディレクティブは、第１のグラフィックス状態で動作する前記グラフィックス・エンジンにより消費される電力に対応する閾値を識別する、取得ステップを含む。例示的な当該方法はまた、オペレーション中に前記グラフィックス・エンジンにより消費された電力を決定するステップを含む。例示的な当該方法はまた、前記の消費された電力を前記ポリシ・ディレクティブの前記閾値と比較するステップと、前記閾値が満たされた場合、前記グラフィックス・エンジンが前記ポリシ・ディレクティブに適合するように、前記グラフィックス・エンジンを第２のグラフィックス状態に設定するステップと、を含む。
2016503549.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーション・レベル・インタフェースを介してグラフィックス・エンジンの電力使用量を管理する方法であって、
前記アプリケーション・レベル・インタフェースを介して、前記グラフィックス・エンジンのポリシ・ディレクティブを取得する取得ステップであって、前記ポリシ・ディレクティブは、第１のグラフィックス状態で動作する前記グラフィックス・エンジンにより消費される電力に対応する閾値を識別する、取得ステップと、
オペレーション中に前記グラフィックス・エンジンにより消費された電力を決定する決定ステップと、
前記の消費された電力を前記ポリシ・ディレクティブの前記閾値と比較するステップと、
前記閾値が満たされた場合、前記グラフィックス・エンジンが前記ポリシ・ディレクティブに適合するように、前記グラフィックス・エンジンを第２のグラフィックス状態に設定するステップと、
を含む、方法。
【請求項２】
前記決定ステップは、前記グラフィックス・エンジンにおける複数の実行ユニットからの複数の電力値を合計するステップを含む、請求項１記載の方法。
【請求項３】
前記グラフィックス・エンジンの前記第１のグラフィックス状態は、前記複数の実行ユニットのうちの少なくとも１つの第１の周波数設定に対応する、請求項２記載の方法。
【請求項４】
前記グラフィックス・エンジンの前記第２のグラフィックス状態は、前記複数の実行ユニットのうちの少なくとも１つの第２の周波数設定に対応する、請求項２記載の方法。
【請求項５】
前記第２のグラフィックス状態に設定したことに応答して、通知を生成するステップ
をさらに含む、請求項１記載の方法。
【請求項６】
前記ポリシ・ディレクティブの前記閾値を満たしたことに応答して、訂正期間タイマを呼び出すステップ
をさらに含む、請求項１記載の方法。
【請求項７】
前記グラフィックス・エンジンを前記第２のグラフィックス状態に設定する前に、ある訂正期間の間、前記グラフィックス・エンジンにより消費される電力をモニタリングするステップ
をさらに含む、請求項６記載の方法。
【請求項８】
アプリケーション・レベル・インタフェースを介してグラフィックス・エンジンの電力使用量を管理するシステムであって、
前記アプリケーション・レベル・インタフェースを介して、前記グラフィックス・エンジンのために設定されたポリシ・ディレクティブを取得するノード電力コントローラであって、前記ポリシ・ディレクティブは、前記グラフィックス・エンジンの第１のグラフィックス状態の電力使用量の閾値を識別する、ノード電力コントローラと、
前記グラフィックス・エンジンによる電力使用量を検出するセンサ・モニタであって、前記ノード電力コントローラは、前記電力使用量を前記ポリシ・ディレクティブの前記閾値と比較し、前記閾値が満たされた場合、前記ノード電力コントローラは、前記グラフィックス・エンジンが前記ポリシ・ディレクティブに適合するように、前記グラフィックス・エンジンを第２のグラフィックス状態に設定する、センサ・モニタと、
を備えた、システム。
【請求項９】
前記グラフィックス・エンジンは、前記アプリケーション・レベル・インタフェースを介して受信されるタスクを実行する実行ユニットを有する、請求項８記載のシステム。
【請求項１０】
前記グラフィックス・エンジンの前記第１のグラフィックス状態は、前記実行ユニットの第１の周波数設定に対応する、請求項９記載のシステム。
【請求項１１】
前記グラフィックス・エンジンの前記第２のグラフィックス状態は、前記実行ユニットの第２の周波数設定に対応する、請求項９記載のシステム。
【請求項１２】
前記ノード電力コントローラは、前記第２のグラフィックス状態に設定したことに応答して、通知を生成する、請求項８記載のシステム。
【請求項１３】
前記ノード電力コントローラは、前記ポリシ・ディレクティブの前記閾値を満たしたことに応答して、訂正期間タイマを呼び出す、請求項８記載のシステム。
【請求項１４】
前記ノード電力コントローラは、前記グラフィックス・エンジンを前記第２のグラフィックス状態に設定する前に、ある訂正期間の間、前記グラフィックス・エンジンによる前記電力使用量をモニタリングする、請求項１３記載のシステム。
【請求項１５】
命令を含む有体のマシン読み取り可能記憶媒体であって、前記命令が実行されたとき、前記命令は、マシンに、少なくとも、
アプリケーション・レベル・インタフェースを介して、グラフィックス・エンジンのポリシ・ディレクティブを取得させ、ここで、前記ポリシ・ディレクティブは、第１のグラフィックス状態の前記グラフィックス・エンジンにより消費される電力に対応する閾値を識別する、
オペレーション中に前記グラフィックス・エンジンにより消費された電力を決定させ、
前記の消費された電力を前記ポリシ・ディレクティブの前記閾値と比較させ、
前記閾値が満たされた場合、前記グラフィックス・エンジンが前記ポリシ・ディレクティブに適合するように、前記グラフィックス・エンジンを第２のグラフィックス状態に設定させる、有体のマシン読み取り可能記憶媒体。
【請求項１６】
前記命令が実行されたとき、前記命令は、前記マシンに、
前記グラフィックス・エンジンにおける複数の実行ユニットからの複数の電力値を合計させる、請求項１５記載の有体のマシン読み取り可能記憶媒体。
【請求項１７】
前記命令が実行されたとき、前記命令は、前記マシンに、
前記第２のグラフィックス状態に設定したことに応答して、通知を生成させる、請求項１６記載の有体のマシン読み取り可能記憶媒体。
【請求項１８】
前記命令が実行されたとき、前記命令は、前記マシンに、
前記ポリシ・ディレクティブの前記閾値を満たしたことに応答して、訂正期間タイマを呼び出させる、請求項１５記載の有体のマシン読み取り可能記憶媒体。
【請求項１９】
前記命令が実行されたとき、前記命令は、前記マシンに、
前記グラフィックス・エンジンを前記第２のグラフィックス状態に設定する前に、ある訂正期間の間、前記グラフィックス・エンジンにより消費される電力をモニタリングさせる、請求項１８記載の有体のマシン読み取り可能記憶媒体。
【請求項２０】
前記命令が実行されたとき、前記命令は、前記マシンに、
ある訂正期間の間、前記グラフィックス・エンジンによる平均電力使用量を計算させ、
前記平均電力使用量が前記閾値を満たした場合、前記グラフィックス・エンジンを前記第２のグラフィックス状態に設定させる、請求項１８記載の有体のマシン読み取り可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、電力管理に関し、より詳細には、グラフィックス・エンジンの電力消費を管理する方法、システム、及び装置に関する。
【背景技術】
【０００２】
メディア配信は複雑なオペレーションを伴う。オンライン・メディアの配信に対する需要が増えるにつれ、対応するグラフィックス・ハードウェアのパフォーマンスもまた増大しなければならなくなった。しかしながら、パフォーマンスの増大は、一般に、グラフィックス・ハードウェアによる電力消費の増大に対応する。
【図面の簡単な説明】
【０００３】
【図１】グラフィックス・エンジンの電力消費を管理するための本開示の教示に従った例示的な環境において使用される例示的な電力コントローラの概略図。
【図２】図１の例示的な環境における例示的なノードのブロック図。
【図３】図１の例示的な環境における例示的なデータ・センタのブロック図。
【図４】電力消費を管理するために実行することができる例示的なマシン読み取り可能命令を示すフローチャート。
【図５】電力消費を管理するために実行することができる例示的なマシン読み取り可能命令を示すフローチャート。
【図６】図１〜図３の例示的なシステム及び装置を実装するために図４及び図５の命令を実行することができる例示的なプロセッサ・プラットフォームの概略図。
【発明を実施するための形態】
【０００４】
データ・センタの少なくとも１つの財政的負担は、電力量のコストに関連する。データ・センタにおいて使用されるコンピューティング・リソースの量が増大するにつれ、データ・センタのデータ処理要件を満たすために、電力量／エネルギのコストも増大する。いくつかのデータ・センタにおいて、電力量のコストは、データ・センタのオペレーティング・コストの半分を構成し得る。したがって、データ・センタにより消費される電力を管理することは、非常に重要である。
【０００５】
データ・センタは、列をなす数百又は数千のサーバを収容し得る。そこでは、列が、ラックに分割され得る。各ラックは、サーバの集合を表し得る。各サーバは、通常、チップセットを含み、チップセットは、集積グラフィックス・ハードウェアを有する中央処理装置（ＣＰＵ）又は（チップセットの一部としての）他のグラフィックス・ハードウェアへの１以上の通信コネクションを有するＣＰＵを含む。例えば、ＣＰＵは、１以上のコア・プロセッサと、グラフィックス・プロセッサ又はグラフィックス・エンジンとを含み得る。
【０００６】
いくつかの既知のシステムにおいて、グラフィックス・ワークロード（graphics  workload）が、ＣＰＵ内の処理コアからドライバ・レベルに位置するグラフィックス・ドライバ（又は、オペレーティング・システム・カーネル）に伝達される。グラフィックス・ドライバは、ワークロードを、ＣＰＵに含まれるグラフィックス・エンジンのための命令に変換する。ワークロードは、グラフィックス・エンジンに含まれる実行ユニット（又は、グラフィックス・エンジン・ブロック）により実行される１以上のタスクに分割される。いくつかの既知のグラフィックス・エンジンは、２つの電力状態、すなわち、処理状態（例えば、グラフィックス状態Ｇ０）又はアイドル状態（例えば、グラフィックス状態Ｇ１）で動作する。電力状態は、電圧及び周波数の別個の組合せを示す。最高の実行電力状態（例えば、Ｇ０状態）にある間、既知のグラフィックス・エンジンは、例えば、グラフィックス・エンジン・メーカにより設定された高い（例えば、最大の）グラフィックス処理周波数で動作する。Ｇ０状態とは反対に、既知のグラフィックス・エンジンが、より低い電力消費状態（例えば、Ｇ１状態）にあるとき、グラフィックス・エンジンは、ベースライン・グラフィックス処理周波数で動作する。本明細書において使用されるとき、「ベースライン」周波数とは、グラフィックス・エンジンがアイドル状態にあるときに動作する周波数を指す。したがって、既知のグラフィックス・エンジンが、ワークロードを実行しているとき（例えば、ビデオ・ファイルをトランスコードしているとき）、例示的なグラフィックス・ドライバは、グラフィックス・エンジンをＧ０状態に設定して、高い（例えば、最大の）利用可能なグラフィックス処理周波数を利用する。その結果、既知のグラフィックス・エンジンは、より高いグラフィックス処理周波数で動作しているので、既知のグラフィックス・エンジンは、より高い電力量を消費する。ワークロードの処理が完了すると、ワークロードが完了したことを示す情報が、既知のグラフィックス・ドライバに伝達され、グラフィックス・ドライバは、グラフィックス・エンジンをＧ１状態に設定して、グラフィックス・エンジンのためにベースライン周波数を確立する。しかしながら、既知のグラフィックス・エンジンは、処理パフォーマンスを犠牲にすることなく、より低いグラフィックス処理周波数でワークロードを処理することができ得る。したがって、ワークロードを処理している間、不必要な電力が、既知のグラフィックス・プロセッサにより消費される。
【０００７】
グラフィックス・エンジンにより消費される電力は、グラフィックス処理周波数に比例し、グラフィックス・エンジンを動作させるために使用される電圧の２乗に比例する。したがって、いくつかのシステムにおいて、電力消費を管理することは、グラフィックス処理周波数及び／又は電圧を管理することを含む。いくつかのシステムにおいてグラフィックス処理周波数を操作することは、面倒なプロセス及び／又は非実用的なプロセスであり得る。例えば、ターゲット内プローブ（in-target  probe）を使用して、プロセッサをアンロックし、次いで、目標周波数を制御するために、設定及び／又は電圧を調整する場合がある。しかしながら、この方法は、処理プラットフォームの開発フェーズ中にのみ利用可能なものであり、処理プラットフォームの開発フェーズ及び／又は実行（動作）フェーズの後では利用可能でない。したがって、いくつかのシステムに関してグラフィックス状態に対応するグラフィックス処理周波数を操作することは、データ・センタ等の大規模なサーバ展開、クラウド展開、若しくは、数十、数百、又は数千のサーバを有するインターネット・データ・センタにおいては実用的でない。本明細書で開示する例示的な方法、装置、システム、及び／又は製品は、サーバにおけるきめの細かい統合されたグラフィックス電力管理を提供し、これが、今度は、大規模なサーバ展開における１以上のサーバに拡張され得る。すなわち、本明細書で開示する例示的な方法、システム、及び／又は製品は、面倒な１以上のターゲット内プローブ（例えば、回路内プローブ）の必要性なく、きめの細かい統合されたグラフィックス電力管理を容易にする。
【０００８】
図１は、サーバにおけるきめの細かい統合されたグラフィックス電力管理を容易にする例示的な環境１００の図である。図１の例示的な環境１００は、例示的な管理コンソール１０２と、例示的なサーバ又はノード１３２と、を含む。いくつかの例において、管理コンソール１０２は、複数のデバイスを用いて実装される。例えば、管理コンソール１０２は、互いに通信する複数のワークステーション（例えば、デスクトップ・コンピュータ、ワークステーション・サーバ、ラップトップ等）を含み得る。いくつかの例において、管理コンソール１０２は、オペレーティング・システムを動作させる。図１に示した例において、管理コンソール１０２は、ネットワーク１０６により表される１以上の有線ネットワーク及び／又は無線ネットワークを介して、ノード１３２と通信する。例示的なネットワーク１０６は、１以上の任意の適切な有線ネットワーク及び／又は無線ネットワークを用いて実装され得る。そのようなネットワークとして、例えば、１以上のデータ・バス、１以上のローカル・エリア・ネットワーク（ＬＡＮ）、１以上の無線ＬＡＮＳ、１以上のセルラ・ネットワーク、インターネット等がある。本明細書において使用されるとき、派生形を含む「通信する」という語句は、直接通信及び／又は１以上の中間コンポーネントを介した非直接通信を含み、直接の物理的通信（例えば、有線通信）を要しない。
【０００９】
図１に示した例において、ノード１３２の電力管理は、３つの異なるレベル又はレイヤ（例えば、例示的なアプリケーション・レベル１３４、例示的なオペレーティング・システム（ＯＳ）カーネル１３６、及び例示的なハードウェア・レイヤ１３８）で生じる。
【００１０】
図１に示した例において、アプリケーション・レベル１３４は、アクティビティを実行するためのインタフェースをユーザに提供する。例えば、１以上のソフトウェア又はアプリケーションは、アプリケーション・レベル１３４で実行され得る。例示的なソフトウェア又はアプリケーションにより、ユーザ及び／又はメモリに記憶されたプロファイルは、１以上のタスクを実行することが可能となり、そのようなタスクをどのように実行するかを可能とする。例えば、ユーザは、アプリケーション・レベル１３４でメディア・プレーヤを利用して、ノード又はサーバにビデオ・ファイルをストリーミングするよう指示することができる。図１に示した例において、ＯＳカーネル１３６は、アプリケーション・レベル１３４とハードウェア・レイヤ１３８との間のブリッジとして動作するソフトウェア（又は、ソフトウェア及び／又はファームウェアの集合）である。図１に示した例において、ＯＳカーネル１３６は、ハードウェア・レイヤ１３８のコンピューティング・リソースを管理する実行コード（又は、１以上のドライバ）を含む。例えば、ＯＳカーネル１３６上で実行される実行コードは、ハードウェア・コンポーネントが、アプリケーション・レベル１３４で実行されるプログラムからの命令を実行するときを判定することができる。いくつかの例において、ＯＳカーネル１３６において実行される実行コードは、特定のコンピューティング・リソースを制御又は管理することができる。例えば、ＯＳカーネル１３６上で実行されるグラフィックス・トランスレータ（graphics  translator）１０８（しばしばグラフィックス・ドライバと呼ばれる）は、ビデオ・ファイルをストリーミングするために、アプリケーション・レベル１３４で実行されるメディア・プレーヤから命令を受信する。例示的なグラフィックス・トランスレータ１０８は、次いで、処理すべきデータ、そのデータをいつ処理すべきか、そのデータをどのように処理すべきか等に関して、例示的なグラフィックス・エンジン１２２に指示することができる。図１に示した例において、ハードウェア・レイヤ１３８は、データ処理を実行するハードウェア・コンポーネントを含む。例えば、グラフィックス・エンジン１２２は、グラフィックス・トランスレータ１０８からの命令に対応するデータを受け取り、ビデオ・トランスコーディングを実行することができる。
【００１１】
図１に示した例において、情報技術（ＩＴ）専門家等のユーザ１３０は、アプリケーション・レベル１３４で実行されるプログラムを介して、ノード１３２（又は、ノード１３２のコンポーネント（例えば、グラフィックス・エンジン１２２））のポリシ・ディレクティブ（policy  directive）１４０を設定する。例えば、ＩＴ専門家１３０は、管理コンソール１０２を介して、ノード１３２（又は、ノード１３２のコンポーネント）のサービス・レベル・アグリーメント（ＳＬＡ）を入力することができる。例示的なポリシ・ディレクティブ１４０（又は、ＳＬＡ）は、ノード１３２のための１以上の動作条件を指定する。例えば、ＳＬＡ１４０は、ノード１３２に割り当てられるワット（例えば、電力バジェット（power  budget）又は電力上限（power  cap））、ワークロードを実行している間の目標グラフィックス処理周波数、どのくらい長くポリシが実施されるか（例えば、ポリシ期間）、及び／又は、例えば、アラーム又はアラートを送信するかどうか、時折の電力スパイク（power  spike）を考慮するために訂正期間（correction  period）を可能にするかどうか、ノード１３２（又は、ノード１３２のコンポーネント）がポリシ・ディレクティブ１４０に適合することができなかった場合にどのような種類のアラーム／アラートを出力すべきか等、電力バジェットに違反したときの時間にどのように対処するか（例えば、１以上のポリシ・メンテナンス・パラメータ（policy  maintenance  parameter）、ポリシ・メンテナンス条件）を指定し得る。図１に示した例において、管理コンソール１０２は、１以上のポリシ・ディレクティブ１４０を記憶するために、ポリシ・ディレクティブ・ストレージ１４２と通信する。いくつかの例において、ポリシ・ディレクティブ・ストレージ１４２は、１以上のネットワーク及び／又はローカル通信インタフェースを介して管理コンソール１０２と通信するメモリ又はデータベースである。いくつかの例において、ポリシ・ディレクティブ・ストレージ１４２は、管理コンソール１０２に対してローカルにある、且つ／あるいは管理コンソール１０２と統合される。
【００１２】
図１に示した例において、管理コンソール１０２は、電力マネージャ１０４を含む。例示的な電力マネージャ１０４は、例示的な管理コンソール１０２上で実行され、アプリケーション・レベル１３４へのインタフェースを容易にするアプリケーション又はアプリケーション・プログラミング・インタフェース（ＡＰＩ）である。例えば、電力マネージャ１０４は、ＩＴ専門家１３０がノード１３２を管理することを可能にするウェブ・サービスＡＰＩを含み得る。図１に示した例において、電力マネージャ１０４は、例示的なノード１３２に対する１以上のポリシ・ディレクティブ１４０を設定するためのインタフェースをＩＴ専門家１３０に提供することができる。いくつかの例において、電力マネージャ１０４は、ノード１３２に適用するために、ポリシ・ディレクティブ・ストレージ１４２から１以上のポリシ・ディレクティブ１４０を取得することができる。例えば、電力マネージャ１０４は、例示的なポリシ・ディレクティブ１４０から取得されたメンテナンス・パラメータ、スケジュール（例えば、時刻）、現在のアクティビティ傾向（例えば、ワークロードの増大は、電力バジェットを増大させ得る）等に基づいて、ノード１３２の電力バジェットを変更することができる。いくつかの例において、管理コンソール１０２は、レビュー及び／又は調整のために、現在のポリシ・ディレクティブ・メンテナンス・パラメータ（又は、設定）をＩＴ専門家１３０に表示することができる。いくつかの例において、電力マネージャ１０４は、ノード１３２の電力消費をモニタリングすることができる、且つ／あるいはＩＴ専門家１３０がノード１３２の電力消費をモニタリングするのを可能にし得る。例えば、電力マネージャ１０４を介して、管理コンソール１０２は、ノード１３２からの周期的なステータス通知、非周期的なステータス通知、スケジュールされたステータス通知、及び／又はマニュアルのステータス通知を出力（例えば、表示）することができる。さらに他の例において、管理コンソール１０２は、ノード１３２がポリシ・ディレクティブ１４０に適合しないときに、可聴アラーム、可聴アラート、視覚アラーム、及び／又は視覚アラートを出力することができる。
【００１３】
図１に示した例において、ポリシ・ディレクティブ１４０は、（例えば、ネットワーク１０６を介して）管理コンソール１０２からノード１３２に伝達される。例示的なノード１３２において、例示的なポリシ・ディレクティブ１４０は、ノード１３２に含まれるソフトウェア、ファームウェア、及び／又はハードウェアにより処理される。例示的なノード１３２は、例示的なグラフィックス・トランスレータ１０８、例示的なセンサ・モニタ１１０、及び例示的な中央処理装置（ＣＰＵ）１１２を含む。例示的なセンサ・モニタ１１０は、例示的なＯＳカーネル１３６上で動作する。例示的なＣＰＵ１１２は、例示的なハードウェア・レイヤ１３８で動作する。上述したように、ＯＳカーネル１３６上で実行される実行コードは、アプリケーション・レベル１３４で実行されるプログラムと、ハードウェア・レイヤ１３８におけるハードウェア・コンポーネントとの間のブリッジとして動作する。
【００１４】
図１に示した例において、ノード１３２は、グラフィックス・トランスレータ１０８、センサ・モニタ１１０、及び中央処理装置（ＣＰＵ）１１２を含む。いくつかの例において、グラフィックス・トランスレータ１０８（又は、グラフィックス・ドライバ）は、管理コンソール１０２から伝達されるデータ又は情報を、例示的なＣＰＵ１１２により実行及び／又は解釈若しくは実施され得る命令に変換する実行可能命令（例えば、ソフトウェア）により実装される。例えば、ポリシ・ディレクティブ１４０は、管理コンソール１０２の電力マネージャ１０４を介してＣＰＵ１１２に伝達される命令を含み得る。例示的なグラフィックス・トランスレータ１０８は、例示的なポリシ・ディレクティブ１４０からの情報を、例示的なＣＰＵ１１２が実行する命令に変換することができる。例えば、グラフィックス・トランスレータ１０８は、ＩＴ専門家１３０により設定された電力バジェット及び／又はノード１３２のポリシ・ディレクティブ１４０をＣＰＵ１１２に伝達することができる。いくつかの例において、グラフィックス・トランスレータ１０８は、ＣＰＵ１１２から受信したデータ又は情報を、電力マネージャ１０４のための情報に変換することができる。そのような情報として、例えば、例示的なポリシ・ディレクティブ１４０が満たされているか、あるいは例示的なポリシ・ディレクティブ１４０に違反しているかを示す、ＣＰＵ１１２からの出力がある。例示的なグラフィックス・トランスレータ１０８は、例示的なＣＰＵ１１２からのインジケーションを、ステータス通知として出力する、例示的な電力マネージャ１０４のための情報に変換することができる。ステータス通知は、例示的なポリシ・ディレクティブ１４０が満たされていないか（例えば、アラーム又はアラートとして）、あるいは満たされているか（例えば、アクノレッジメントを介して、アラーム又はアラートなく）を示す。ノード１３２がポリシ・ディレクティブ１４０に適合しない例示的なインスタンスは、閾値（例えば、ある値）を超える電力又はエネルギの量を消費するノード１３２を含む。
【００１５】
いくつかの例において、センサ・モニタ１１０は、ハードウェア・レイヤ１３８に含まれるハードウェア・コンポーネントに接続された１以上のセンサをモニタリングし、ハードウェア・コンポーネント（例えば、電力コントローラ１１６、グラフィックス・エンジン１２２等）の現在のプロファイル及び／又はステータスを決定する。例えば、センサ・モニタ１１０は、ＣＰＵ１１２に接続された１以上の電力センサから現在の電力情報を収集し、収集した情報に基づいて、ＣＰＵ１１２により消費された即時電力（instant  power）を決定することができる。いくつかの例において、センサ・モニタ１１０は、１以上の時間期間にわたって消費された電力の範囲等、消費された電力に対応するインジケーションを出力する。
【００１６】
図１に示した例において、ＣＰＵ１１２は、例示的なハードウェア・レイヤ１３８に位置するハードウェア・コンポーネントとして動作する、あるいは例示的な管理コンソール１０２に通信可能に接続された仮想マシン・モニタにより制御される仮想マシンとして動作する。いくつかの例において、ＣＰＵ１１２は、アプリケーション・レベル１３４で実行されるプログラム及び／又はＯＳカーネル１３６上で実行される実行コードと通信する。例示的なＣＰＵ１１２はまた、メモリに記録された情報を取得して、その情報を１以上のグラフィックス・エンジンに伝達する等、ハードウェア・レイヤ１３８における他のハードウェア・コンポーネント間の情報の伝達を円滑にすることができる。
【００１７】
図１に示した例において、ＣＰＵ１１２は、１以上のコア（又は、プロセッサ）１１４、電力コントローラ１１６、及びグラフィックス・エンジン１２２を含む。グラフィックス・エンジン１２２は、実行ユニット（ＥＵ）１２４、１２６、１２８を含む。図１に示した例において、コア１１４は、電力マネージャ１０４、グラフィックス・トランスレータ１０８、及び／又はセンサ・モニタ１１０からの命令を読み書きする。いくつかの例において、コア１１４は、アプリケーション・レベル１３４で実行されるプログラム（例えば、例示的な電力マネージャ１０４）及び／又はＯＳカーネル１３６上で実行される命令（例えば、ソフトウェア）（例えば、例示的なグラフィックス・トランスレータ１０８）から情報を受信する。例示的なコア１１４は、情報のタイプに基づいてどのコンポーネントに情報を伝達するかを決定することができる。例えば、コア１１４は、例示的なポリシ・ディレクティブ１４０の設定に対応する命令を、グラフィックス・トランスレータ１０８から受信することができる。その結果、例示的なコア１１４は、例示的なポリシ・ディレクティブ１４０の設定に対応する情報を、例示的な電力コントローラ１１６に伝達することができる。例えば、コア１１４は、グラフィックス・エンジン１２２の電力バジェットの変化を電力コントローラ１１６に伝達する。
【００１８】
図１に示した例において、電力コントローラ１１６は、グラフィックス・エンジン１２２により消費される電力を管理及び／又は構成する。上述したように、グラフィックス・エンジン１２２がＧ０状態又はＧ１状態のいずれかで動作するのではなく、電力コントローラ１１６は、１以上の追加のグラフィックス状態又は代替のグラフィックス状態を含み、各グラフィックス状態は、異なる周波数で動作し得る。結果として、例示的な各グラフィックス状態は、例示的なグラフィックス・エンジン１２２による電力消費の異なる量に対応する。図１に示した例において、電力コントローラ１１６は、グラフィックス・エンジン１２２が処理することができる最大周波数のあるパーセンテージとしてグラフィックス・エンジン１２２が動作する周波数を指定するデータ構造１１８（例えば、テーブル、ビット・アレイ等）を含む。例えば、例示的なグラフィックス・エンジン１２２が例示的なＧ２状態に設定された場合、グラフィックス・エンジン１２２は、グラフィックス・エンジン１２２の最大動作周波数の８０パーセントで動作する（行１２０参照）。
【００１９】
いくつかの例において、グラフィックス状態の数、及び対応する周波数は、（例えば、ワークロードを実行している間の）オペレーション中の電力消費の履歴の解析に基づいて生成される。例えば、２週間の期間にわたってグラフィックス・エンジン１２２の電力消費をモニタリングすることにより、３つのエネルギ・レベル（例えば、電力消費レベル、周波数レベル等）のうちの１つで、時間の大多数を費やすことを明らかにする。いくつかの例において、これらのエネルギ・レベルが、複数の周波数又は周波数レベルに変換され得る。図１の例示的なデータ構造１１８に記憶された例示的なグラフィックス状態は、電力消費周波数に対応するように変更される。すなわち、例示的なデータ構造１１８は、３つのグラフィックス状態を記録するように更新され得る。３つのグラフィックス状態の各グラフィックス状態は、３つの電力消費レベルのうちの１つ、あるいは３つの電力消費レベルのうちの１つの近くにおける、例示的なグラフィックス・エンジン１２２による電力消費に対応する周波数を有する。いくつかの例において、データ構造１１８は、ポリシ・ディレクティブ１４０のメンテナンス・パラメータ（又は、条件）を反映する。例示的な各ポリシ・ディレクティブ１４０は、任意の数の例示的なデータ構造１１８を含み得る。例えば、ポリシ・ディレクティブ１４０は、ピーク時間中に実行されるグラフィックス状態を有する第１のデータ構造１１８と、オフピーク時間中に実行されるグラフィックス状態を有する第２のデータ構造１１８と、を含み得る。
【００２０】
図１の例示的なグラフィックス・エンジン１２２は、任意のタイプのグラフィカル・ワークロードを処理する。例えば、グラフィックス・エンジン１２２は、ビデオ・ファイル・トランスコーディングを実行することができ、そこでは、グラフィックス・エンジン１２２は、ビデオ・ファイルをトランスコードする命令を受信し、ワークロードが、グラフィックス・エンジン１２２の実行ユニット１２４、１２６、１２８間で分割される。図１の例示的なグラフィックス・エンジン１２２は、３つの実行ユニット１２４、１２６、１２８を含むが、本明細書で開示する例示的な方法、システム、及び／又は製品は、任意の数の実行ユニットを含んでもよく、その数は、グラフィックス・エンジンのタイプに基づいて変わり得る。しかしながら、例示的な実行ユニット１２４、１２６、１２８がビデオ・ファイルをトランスコードする速度は、例示的な電力コントローラ１１６により設定される例示的なグラフィックス状態に依存する。
【００２１】
図２は、図１の例示的なノード１３２のブロック図である。図２に示した例において、電力コントローラ１１６は、ポリシ・ディレクティブ１４０に対応する情報に基づいて、グラフィックス・エンジン１２２のグラフィックス状態を設定する。例えば、電力コントローラ１１６は、ポリシ・ディレクティブ１４０及び／又は１以上のデータ構造１１８により規定される、グラフィックス・エンジン１２２の電力バジェット２０２（例えば、閾値）（例えば、グラフィックス・エンジン１２２により消費される電力の上限）に対応する情報を受信することができる。いくつかの例において、グラフィックス・エンジン１２２の電力バジェット２０２は、アプリケーション・レベル１３４で実行されるソフトウェア（例えば、電力マネージャ１０４）を介して、ユーザ１３０（例えば、ＩＴ専門家）により直接設定され得る。いくつかの例において、グラフィックス・エンジン１２２の電力バジェット２０２は、ＩＴ専門家１３０により間接的に設定され得る。例えば、ＩＴ専門家１３０は、複数のノードに対して、単一の電力バジェット（例えば、グループ電力バジェット）を設定することができ、グラフィックス・エンジン１２２の電力バジェット２０２は、電力マネージャ１０４により設定され得る。さらに他の例において、電力バジェット２０２は、例示的な電力マネージャ１０４によりアクセスされる１以上のポリシ・ディレクティブ１４０により、マニュアルで、スケジュールされて、周期的に、且つ／あるいは非周期的に設定され得る。
【００２２】
図２に示した例において、電力コントローラ１１６は、電力バジェット２０２に適合しながらワークロードを実行するために、グラフィックス・エンジン１２２のグラフィックス状態を設定する。いくつかの例において、電力コントローラ１１６は、各グラフィックス状態の消費（例えば、電力消費、周波数値等）を電力バジェット２０２と比較し、電力バジェット２０２が許容するよりも多く電力を消費することなく、電力バジェット２０２に最も近い消費値を選択する。いくつかの例において、電力コントローラ１１６は、グラフィックス・エンジン１２２を、デフォルトのグラフィックス状態（又は、予め定められたグラフィックス状態）に設定することができる。例えば、グラフィックス・エンジン１２２が、実行すべきワークロード（例えば、ビデオ・ファイルをトランスコードする命令）を受信するとき、電力コントローラ１１６は、Ｇ２状態における電力消費を電力バジェット２０２と比較することなく、グラフィックス・エンジン１２２をＧ２状態に設定することができる。いくつかの例において、電力コントローラ１１６は、履歴情報に基づいて、グラフィックス・エンジン１２２をあるグラフィックス状態に設定することができる。例えば、電力コントローラ１１６は、グラフィックス・エンジン１２２が、Ｇ３状態に設定されたまま受信したワークロードの大多数を実行すると決定することができる。したがって、例示的な電力コントローラ１１６は、グラフィックス・エンジン１２２をＧ３状態に設定することができる。いくつかの例において、電力コントローラ１１６は、グラフィックス・エンジン１２２を、グラフィックス・エンジン１２２が前のワークロードの実行を完了したグラフィックス状態に設定することができる。いくつかの例において、電力コントローラ１１６は、グラフィックス・エンジン１２２が、グラフィックス・エンジン１２２に含まれる１以上の実行ユニット１２４、１２６、１２８のグラフィックス状態を変更しながら、ワークロードを実行し、電力バジェット２０２を満たすことができると決定することができる。例えば、グラフィックス・エンジン１２２は、ワークロードの実行を完了し、実行ユニット１２４がＧ２グラフィックス状態に設定され、実行ユニット１２６、１２８が例えばＧ３グラフィックス状態に設定されたまま、電力バジェット２０２以下に保つことができる。したがって、例示的な電力コントローラ１１６は、利用可能なコンピューティング・リソース及び／又はグラフィックス・エンジン１２２のために設定された電力バジェット２０２に基づいて、ワークロードを完了するのを円滑にする。
【００２３】
図２に示した例において、電力コントローラ１１６により設定されたグラフィックス状態に基づいて、グラフィックス・エンジン１２２は、１以上の対応する周波数でワークロードを実行する。いくつかの例において、１以上のセンサは、実行ユニット１２４、１２６、１２８のうちの１以上に接続され得る、且つ／あるいは実行ユニット１２４、１２６、１２８のうちの１以上の近くに配置され得る。例えば、電力消費を測定することができるセンサは、実行ユニット１２４、１２６、１２８の近くに配置され得る。図２に示した例において、センサ・モニタ１１０は、１以上のタスクを実行している間及び／又はグラフィックス・エンジン１２２により消費された即時電力を計算している間に、各実行ユニット１２４、１２６、１２８により消費された電力に対応する、実行ユニット１２４、１２６、１２８に位置する、あるいは実行ユニット１２４、１２６、１２８の近くに位置するセンサにより収集された情報を集約する。いくつかの例において、センサ・モニタ１１０は、グラフィックス・エンジン１２２により消費された即時電力を、電力バジェット２０２に基づいて修正されるべきフィードバック・ループとして、電力コントローラ１１６に伝達することができる。他の例において、センサ・モニタ１１０は、消費された即時電力が１以上の電力消費閾値（power  consumption  threshold）の範囲内にあることを伝達することができる。
【００２４】
図２に示した例において、電力コントローラ１１６は、センサ・モニタ１１０から取得された即時電力消費値を、ポリシ・ディレクティブ１４０に関連付けられた１以上の値又はメンテナンス・パラメータ（例えば、グラフィックス・エンジン１２２の電力バジェット２０２）と比較する。比較の結果に基づいて、例示的な電力コントローラ１１６は、例示的なグラフィックス・エンジン１２２の現在設定されているグラフィックス状態に対する調整を行うかどうかを判定する。例えば、即時電力消費が、電力バジェット２０２に到達した場合、及び／又は電力バジェット２０２を超えた場合、電力コントローラ１１６は、電力バジェット２０２を満たすために、グラフィックス・エンジン１２２の１以上のグラフィックス状態に対して行う調整を決定することができる。例えば、電力コントローラ１１６は、実行ユニット１２４、１２６、１２８のうちの１以上を、より低い電力消費グラフィックス状態に設定することができる（例えば、実行ユニット１２４、１２６、１２８のうちの１以上のグラフィックス処理周波数を調整することができる）。いくつかの例において、電力消費が、電力バジェット２０２未満の場合、電力コントローラ１１６は、グラフィックス・エンジン１２２により実行されるワークロードを増大させるアクションを実行することができる。いくつかの例において、電力コントローラ１１６は、電力バジェット２０２を満たすのを容易にするために、２つのグラフィックス状態間で、グラフィックス・エンジン１２２のグラフィックス状態を調節することができる。例えば、グラフィックス・エンジン１２２の電力バジェット２０２は、Ｇ３状態で動作している間は、グラフィックス・エンジン１２２の電力消費よりも多い場合があるが、Ｇ２状態で動作している間は、グラフィックス・エンジン１２２の電力消費よりも少ない場合がある。そのような例において、ある時間期間にわたって、例えば、Ｇ２状態とＧ３状態との間の切り替えにより生じるグラフィックス・エンジン１２２の平均電力消費は、電力バジェット２０２を満たし得る。
【００２５】
グラフィックス状態を調節することが容認可能な調整であるかどうかは、例えば、ＩＴ専門家１３０により設定されたポリシ・ディレクティブ１４０のメンテナンス・パラメータ（又は、条件）に依存する。例示的なポリシ・ディレクティブ１４０は、即時電力消費が、ポリシ・ディレクティブ１４０の下で、オペレーション中の任意の時間において、電力バジェット２０２を超えることがない（例えば、電力バジェット２０２を満たす）ことを示し得る。いくつかの例において、ポリシ・ディレクティブ１４０は、訂正期間を含み得る。例えば、ポリシ・ディレクティブ１４０は、グラフィックス・エンジン１２２の即時電力消費及び／又は平均電力消費が、１秒という期間にわたって、電力バジェット２０２を超えることがないことを示し得る。すなわち、例示的な電力コントローラ１１６が、電力バジェット２０２を超える１秒以内に、電力バジェット２０２を満たすために、例示的なグラフィックス・エンジン１２２の即時電力消費及び／又は平均電力消費に対して調整を行うことができない場合、電力コントローラ１１６は、グラフィックス・エンジン１２２が、現在実施されている電力バジェット２０２及び／又はポリシ・ディレクティブ１４０に適合することができない、あるいは現在実施されている電力バジェット２０２及び／又はポリシ・ディレクティブ１４０を満たすことができないというインジケーションを出力することができる。いくつかの例において、グラフィックス・エンジン１２２の即時電力消費及び／又は平均電力消費が、電力バジェット２０２を超えたとき、訂正期間タイマが、電力コントローラ１１６により呼び出される。例示的な電力コントローラ１１６は、ある訂正期間の間、即時電力消費及び／又は平均電力消費をモニタリングすることができ、訂正期間が満了したとき、あるいは即時電力消費及び／又は平均電力消費が電力バジェット２０２に適合するとき、グラフィックス・エンジン１２２の１以上のグラフィックス状態を調整することができる。
【００２６】
例示的な電力コントローラ１１６は、例示的なグラフィックス・エンジン１２２を動作させることが、例示的なポリシ・ディレクティブ１４０のメンテナンス・パラメータを満たすことができないと判定することができる。ベースライン周波数で動作している間、電力バジェット２０２が、グラフィックス・エンジン１２２により消費された電力未満のときがある。いくつかの例において、ポリシ・ディレクティブ１４０は、より高い（例えば、最大の）グラフィックス処理周波数で動作している間にグラフィックス・エンジン１２２により消費される電力よりも低い、グラフィックス・エンジン１２２により消費される電力のための、より低い（例えば、最小の）限界を設定することができる。いくつかのそのような例において、電力コントローラ１１６が、グラフィックス・エンジン１２２がポリシ・ディレクティブ１４０のメンテナンス・パラメータを満たすことができないと判定したとき、電力コントローラ１１６は、例えば、アラーム・インジケーションを出力する。そのような例において、図１のグラフィックス・トランスレータ１０８は、アラーム・インジケーションを受信することができ、ＩＴ専門家１３０に対してアラームを出力するために、且つ／あるいはノード１３２のパフォーマンスのログ・ファイルを出力するために、そのインジケーションを電力マネージャ１０４に伝達することができる。例えば、電力マネージャ１０４のインタフェースは、色を変えてもよいし、ポップアップ・ウィンドウが、電力マネージャ１０４のインタフェース上に出現してもよい、等である。
【００２７】
このように、例示的な電力コントローラ１１６は、電力バジェット２０２に適合するように、例示的なグラフィックス・エンジン１２２の電力設定（例えば、周波数設定）をモニタリング及び／又は構成する。さらに、電力バジェット２０２を満たしつつ最低の電力消費を有するグラフィックス状態を選択することにより、グラフィックス・エンジン１２２の電力消費を、時間にわたって数十ワット又は数百ワット低減させることができ、それにより、ノード１３２を維持するコスト又はノード１３２を動作させるコストを低減させることができる。
【００２８】
上述したように、図１及び図２の例示的な電力コントローラ１１６は、電力マネージャ１０４により制御される、且つ／あるいは電力マネージャ１０４にアクセス可能な１以上のポリシ・ディレクティブ１４０と調和して動作するように、例示的なグラフィックス・エンジン１２２のグラフィックス状態を設定する。例示的な電力コントローラ１１６は、ポリシ・ディレクティブ１４０のメンテナンス・パラメータ（又は、条件）（例えば、電力バジェット２０２）と、グラフィックス状態の各々に対応する電力消費とに基づいて、１以上のグラフィックス状態を選択する。例示的な電力コントローラ１１６はまた、ワークロードを処理している間に例示的なグラフィックス・エンジン１２２により消費された即時電力を、電力バジェット２０２と比較する。その比較に基づいて、例示的な電力コントローラ１１６は、例示的なグラフィックス・エンジン１２２の１以上のグラフィックス状態（例えば、グラフィックス処理周波数）を調整することができる。結果として、例示的な電力コントローラ１１６は、例示的なグラフィックス・エンジン１２２がより少ない電力を消費しながらワークロードを処理することを可能にする。これは、ノード１３２により消費される電力を、時間にわたって数十ワット又は数百ワット低減させる。図２のノード電力管理をより有用なものにするために、この電力管理は、任意の数のノード１３２（例えば、サーバ、コア、プロセッサ、コンピュータ処理装置）に関する電力消費を集合的に管理するよう拡張され得る。
【００２９】
図３は、複数のノードを有する例示的なデータ・センタ３０２のブロック図である。図３に示した例において、データ・センタ３０２は、ｎ個のノード１３２Ａ、１３２Ｂ．．．１３２Ｎを含む。例示的なノード１３２Ａ、１３２Ｂ．．．１３２Ｎの各々は、図１及び図２の例示的なノード１３２と同様に動作する。例えば、図３の各ノード１３２Ａ、１３２Ｂ．．．１３２Ｎは、それぞれの電力コントローラ１１６Ａ、１１６Ｂ．．．１１６Ｎ、それぞれのグラフィックス・エンジン１２２Ａ、１２２Ｂ．．．１２２Ｎ、及びそれぞれのセンサ・モニタ１１０Ａ、１１０Ｂ．．．１１０Ｎを含む。図３に示した例において、各ノード１３２Ａ、１３２Ｂ．．．１３２Ｎは、データ・センタ電力マネージャ３０４と通信する。いくつかの例において、データ・センタ電力マネージャ３０４は、図１の電力マネージャ１０４と同様のアプリケーション・レベル１３４のプログラムである。いくつかの例において、データ・センタ電力マネージャ３０４は、ユーザ（例えば、ＩＴ専門家１３０）が１以上のポリシ・ディレクティブ１４０を設定するために使用することができるインタフェースを含む。そのような例において、ＩＴ専門家１３０は、単一のノード１３２のポリシ又はノード１３２Ａ、１３２Ｂ．．．１３２Ｎ（例えば、複数のノード）のグループのポリシを設定することができる。例えば、ＩＴ専門家１３０は、データ・センタ３０２に含まれるノード１３２Ａ、１３２Ｂ．．．１３２Ｎ（例えば、サーバ）の１以上のラックのポリシ・ディレクティブ１４０を設定することができる。そのような例において、ポリシ・ディレクティブ１４０は、単一のノード１３２のポリシ・ディレクティブではなく、累積的ポリシ・ディレクティブ（又は、グループ・ポリシ・ディレクティブ）である。いくつかの例において、データ・センタ電力マネージャ３０４は、ＩＴ専門家１３０がデータ・センタ３０２に含まれるノード１３２Ａ、１３２Ｂ．．．１３２Ｎの電力消費をモニタリングすることを可能にする。例えば、データ・センタ電力マネージャ３０４は、各ノード１３２Ａ、１３２Ｂ．．．１３２Ｎ及び／又はノード１３２Ａ、１３２Ｂ．．．１３２Ｎのグループの電力消費に対応する情報を出力することができる。例えば、データ・センタ電力マネージャ３０４は、第１のポリシ・ディレクティブの下で動作するノード１３２Ａ、１３２Ｂ．．．１３２Ｎのグループのステータス、第２のポリシ・ディレクティブの下で動作するノード１３２Ａ、１３２Ｂ．．．１３２Ｎのグループのステータス、あるポリシ・ディレクティブの下で動作しないノード１３２Ａ、１３２Ｂ．．．１３２Ｎのステータスを示すことができる。
【００３０】
図３に示した例において、データ・センタ電力マネージャ３０４は、データ・センタ３０２において現在機能している１以上のポリシ・ディレクティブ１４０のメンテナンス・パラメータに基づいてデータ・センタ３０２のノード１３２Ａ、１３２Ｂ．．．１３２Ｎにより消費される電力を管理及び／又は構成する。ポリシ・ディレクティブ１４０に含まれる各ノード１３２Ａ、１３２Ｂ．．．１３２Ｎにおいて利用可能なコンピューティング・リソースに基づいて、例示的なデータ・センタ電力マネージャ３０４は、各ノード１３２Ａ、１３２Ｂ．．．１３２Ｎのノード電力バジェット２０２Ａ、２０２Ｂ．．．２０２Ｎを伝達する。例えば、最高の実行電力状態（例えば、Ｇ０状態）は、１以上のノード１３２Ａ、１３２Ｂ．．．１３２Ｎに対して変わり得る。したがって、（例えば、グループ電力バジェット３１２と、グループに含まれるノードの数とに基づく）均一のノード電力バジェットをノード１３２Ａ、１３２Ｂ．．．１３２Ｎに伝達するのではなく、例示的なデータ・センタ電力マネージャ３０４は、全てのノード１３２Ａ、１３２Ｂ．．．１３２Ｎに対して結合されたときにグループ電力バジェット３１２を満たす、各ノード１３２Ａ、１３２Ｂ．．．１３２Ｎの個別のノード電力バジェット２０２Ａ、２０２Ｂ．．．２０２Ｎを計算することができる。図３に示した例において、グループ電力バジェット３１２及びノード電力バジェット２０２Ａ、２０２Ｂ．．．２０２Ｎは、ノード電力データベース３１０に記憶され、ノード電力データベース３１０は、データ・センタ電力マネージャ３０４と通信する。
【００３１】
図３に示した例において、データ・センタ電力マネージャ３０４により提供されるノード電力バジェット２０２Ａ、２０２Ｂ．．．２０２Ｎは、図２において説明したプロセスと同様のプロセスを用いて、各ノード１３２Ａ、１３２Ｂ．．．１３２Ｎにより処理される。例えば、電力コントローラ（例えば、電力コントローラ１１６Ａ）は、グラフィックス・エンジン（例えば、グラフィックス・エンジン１２２Ａ）においてどのコンピューティング・リソースが利用可能であるかを判定し、グラフィックス・エンジンにより消費された即時ノード電力を集約する。いくつかの例において、電力コントローラ１１６Ａは、消費された即時ノード電力をデータ・センタ電力マネージャ３０４に出力する。
【００３２】
図３に示した例において、データ・センタ電力マネージャ３０４は、各ノード１３２Ａ、１３２Ｂ．．．１３２Ｎにより消費された即時ノード電力３０８Ａ、３０８Ｂ．．．３０８Ｎを合計し、その合計値をグループ電力バジェット３１２と比較することができる。図２において説明したプロセスと同様のプロセスを用いて、例示的なデータ・センタ電力マネージャ３０４は、１以上の比較結果に基づいて、ノード電力バジェット２０２Ａ、２０２Ｂ．．．２０２Ｎを調整することができる。このように、例示的なデータ・センタ電力マネージャ３０４は、対象とする１以上のノード１３２Ａ、１３２Ｂ．．．１３２Ｎにより消費される電力を管理する。図２において説明した電力管理プロセスは、ノードの電力消費を、時間にわたって数十ワット又は数百ワット低減させることができるので、図３において説明したデータ・センタ電力管理プロセスは、データ・センタの電力消費を、時間にわたって数十キロワット又は数百キロワット低減させることができる。
【００３３】
例示的なノード１３２及び管理コンソール１０２を実装する例示的な方法について図１〜図３において示したが、図１〜図３に示した要素、プロセス、及び／又はデバイスのうちの１以上は、結合されてもよいし、分割されてもよいし、再構成されてもよいし、省略されてもよいし、取り除かれてもよいし、且つ／あるいは任意の他の態様で実装されてもよい。さらに、図１〜図３の例示的な電力マネージャ１０４、例示的なネットワーク１０６、例示的なグラフィックス・トランスレータ１０８、例示的なセンサ・モニタ１１０、例示的なＣＰＵ１１２、例示的なコア１１４、例示的な電力コントローラ１１６、例示的なグラフィックス・エンジン１２２、例示的な実行ユニット１２４、１２６、１２８、例示的なポリシ・ディレクティブ・ストレージ１４２、例示的なデータ・センタ３０２、例示的なデータ・センタ電力マネージャ３０４、例示的なノード電力データベース３１０、並びに／又は、より一般的に、例示的なノード１３２及び例示的な管理コンソール１０２は、ハードウェア、ソフトウェア、ファームウェア、並びに／又は、ハードウェア、ソフトウェア、及び／若しくはファームウェアの任意の組合せにより実装され得る。したがって、例えば、図１〜図３の例示的な電力マネージャ１０４、例示的なネットワーク１０６、例示的なグラフィックス・トランスレータ１０８、例示的なセンサ・モニタ１１０、例示的なＣＰＵ１１２、例示的なコア１１４、例示的な電力コントローラ１１６、例示的なグラフィックス・エンジン１２２、例示的な実行ユニット１２４、１２６、１２８、例示的なポリシ・ディレクティブ・ストレージ１４２、例示的なデータ・センタ３０２、例示的なデータ・センタ電力マネージャ３０４、例示的なノード電力データベース３１０、並びに／又は、より一般的に、例示的なノード１３２及び例示的な管理コンソール１０２のいずれも、１以上の回路、プログラマブル・プロセッサ、特定用途向け集積回路（ＡＳＩＣ）、プログラマブル論理デバイス（ＰＬＤ）、及び／又はフィールド・プログラマブル論理デバイス（ＦＰＬＤ）等により実装することができる。本特許の装置の請求項又はシステムの請求項のいずれも、完全なソフトウェア実装及び／又はファームウェア実装をカバーするものとして読まれるとき、例示的な管理コンソール１０２、例示的な電力マネージャ１０４、例示的なネットワーク１０６、例示的なグラフィックス・トランスレータ１０８、例示的なセンサ・モニタ１１０、例示的なＣＰＵ１１２、例示的なコア１１４、例示的な電力コントローラ１１６、例示的なグラフィックス・エンジン１２２、例示的な実行ユニット１２４、１２６、１２８、例示的なノード１３２、例示的なポリシ・ディレクティブ・ストレージ１４２、例示的なデータ・センタ３０２、例示的なデータ・センタ電力マネージャ３０４、及び／又は例示的なノード電力データベース３１０のうちの少なくとも１つは、ソフトウェア及び／又はファームウェアを記憶するメモリ、ＤＶＤ、ＣＤ、ブルーレイ（登録商標）等の有体のコンピュータ読み取り可能記憶媒体を含むよう、本明細書では明確に定められる。さらに、図１〜図３の例示的なノード１３２及び例示的な管理コンソール１０２は、図１〜図３に示したものに加えて、あるいはそれらに代えて、１以上の要素、プロセス、及び／又はデバイスを含んでもよいし、且つ／あるいは図示した要素、プロセス、及びデバイスのいずれか又は全てのうちのいずれかを超えるものを含んでもよい。
【００３４】
図１〜図３のノード１３２及び管理コンソール１０２を実装するための例示的なマシン読み取り可能命令を示すフローチャートが、図４及び図５に示されている。これらの例において、マシン読み取り可能命令は、図６を参照して以下で説明する例示的な処理プラットフォーム６００において示すプロセッサ６１２等のプロセッサにより実行されるプログラムを含む。プログラムは、ＣＤ−ＲＯＭ、フロッピ・ディスク、ハード・ドライブ、デジタル多用途ディスク（ＤＶＤ）、ブルーレイ（登録商標）ディスク、又はプロセッサ６１２に関連付けられたメモリ等の有体のコンピュータ読み取り可能記憶媒体に記憶されたソフトウェアにより具現化され得るが、プログラム全体及び／又はプログラムの一部は、代替的に、プロセッサ６１２以外のデバイスにより実行されてもよいし、且つ／あるいはファームウェア又は専用ハードウェアにより具現化されてもよい。さらに、例示的なプログラムが、図４及び図５に示すフローチャートを参照して説明されるが、図１〜図３のノード１３２及び管理コンソール１０２を実装する多くの他の方法が代替的に使用されてもよい。例えば、ブロックの実行の順番は、変更されてもよいし、且つ／あるいは説明するブロックの一部は、変更されてもよいし、取り除かれてもよいし、結合されてもよい。
【００３５】
図４及び図５の例示的なプロセスは、有体のコンピュータ読み取り可能記憶媒体（例えば、コンピュータ読み取り可能記憶デバイス又は記憶ディスク）に記憶された符号化命令（例えば、コンピュータ読み取り可能命令）を用いて実装され得る。そのような有体のコンピュータ読み取り可能記憶媒体として、ハード・ディスク・ドライブ、フラッシュ・メモリ、読み取り専用メモリ（ＲＯＭ）、コンパクト・ディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、キャッシュ、ランダム・アクセス・メモリ（ＲＡＭ）、及び／又は情報が任意の期間（例えば、拡大された時間期間の間、永久的に、瞬間的に、一時的なバッファのため、且つ／あるいは情報のキャッシュのため）記憶される任意の他の物理的記憶構造等がある。本明細書において使用されるとき、有体のコンピュータ読み取り可能記憶媒体という用語は、任意のタイプのコンピュータ読み取り可能記憶デバイス又は記憶ディスクを含み、伝搬信号を含まないよう明確に定められる。追加的に又は代替的に、図４及び図５の例示的なプロセスは、非一時的なコンピュータ読み取り可能記憶媒体に記憶された符号化命令（例えば、コンピュータ読み取り可能命令）を用いて実装されてもよい。そのような非一時的なコンピュータ読み取り可能媒体として、ハード・ディスク・ドライブ、フラッシュ・メモリ、読み取り専用メモリ、コンパクト・ディスク、デジタル多用途ディスク、キャッシュ、ランダム・アクセス・メモリ、及び／又は情報が任意の期間（例えば、拡大された時間期間の間、永久的に、瞬間的に、一時的なバッファのため、且つ／あるいは情報のキャッシュのため）記憶される任意の他の記憶媒体等がある。本明細書において使用されるとき、非一時的なコンピュータ読み取り可能記憶媒体という用語は、任意のタイプのコンピュータ読み取り可能記憶媒体を含み、伝搬信号を含まないよう明確に定められる。本明細書において使用されるとき、「少なくとも」という語句が、請求項のプリアンブルにおいて移行句として使用される場合、これは、「備える、含む、有する（comprising）」という用語がオープン・エンドであるのと同様、オープン・エンドである。したがって、プリアンブルにおいて移行句として「少なくとも」という用語を用いる請求項は、請求項中に明確に記載された要素に加えて、他の要素を含んでもよい。
【００３６】
図４に示した例において、電力コントローラ１１６は、ノード１３２のグラフィックス・エンジン１２２により消費される電力を管理する。図４のプログラム４００は、例示的な電力コントローラ１１６がグラフィックス・エンジン１２２の電力バジェット２０２０を受信及び／又は取得することにより開始する（ブロック４０５）。上述したように、例示的な電力バジェット２０２は、（例えば、ユーザ、ＩＴ専門家１３０等により設定される）ポリシ・ディレクティブ１４０のメンテナンス・パラメータ（又は、条件若しくは設定）である。電力バジェット２０２は、グラフィックス・エンジン１２２及び／又は実行ユニット１２４、１２６、１２８の各々が消費することができる電力の上限であり、これは、例示的なグラフィックス・エンジン１２２が処理することができる最大周波数のパーセンテージとして表され得る。いくつかの例において、電力バジェット２０２は、グラフィックス・エンジン１２２のために直接的に（例えば、記憶されたポリシ・ディレクティブ１４０により、ＩＴ専門家１３０により）設定されるのに対し、他の例においては、グループ電力バジェット３１２は、ノード１３２Ａ、１３２Ｂ．．．１３２Ｎのグループのために設定される。さらに、例示的なデータ・センタ電力マネージャ（例えば、データ・センタ電力マネージャ１０４、３０４）は、グラフィックス・エンジン１２２の１以上のノード電力バジェット２０２Ａ、２０２Ｂ．．．２０２Ｎ（例えば、電力バジェット）を決定することができる。
【００３７】
電力バジェット２０２に基づいて、例示的な電力コントローラ１１６は、例示的なグラフィックス・エンジン１２２の１以上のグラフィックス状態を設定する（ブロック４１０）。例えば、電力コントローラ１１６は、グラフィックス・エンジン１２２の実行ユニット１２４、１２６、１２８のうちの１以上のために、異なるグラフィックス状態を設定することができる。各グラフィックス状態は、例示的なグラフィックス・エンジン１２２の最大周波数の異なるパーセンテージに対応し、結果として、異なる電力消費に対応し得る。ワークロードを処理するために利用可能なコンピューティング・リソース（例えば、実行ユニット１２４、１２６、１２８）に基づいて、例示的な電力コントローラ１１６は、グラフィックス・エンジン１２２の１以上のグラフィックス状態を選択する。
【００３８】
例示的なグラフィックス・エンジン１２２がワークロードを処理している間、例示的な電力コントローラ１１６は、グラフィックス・エンジン１２２により消費された即時電力を電力バジェット２０２と比較する（ブロック４１５）。例えば、センサ・モニタ１１０は、実行ユニット１２４、１２６、１２８の近くに位置する１以上のセンサからの消費された電力に対応する情報を収集することができる。例示的なセンサ・モニタ１１０は、その値を合計し、例示的なグラフィックス・エンジン１２２により消費された即時電力を例示的な電力コントローラ１１６に提供することができる。
【００３９】
例示的なグラフィックス・エンジン１２２により消費された電力が、電力バジェット２０２に適合するとき（ブロック４２０）、電力コントローラ１１６は、ステータス通知を出力する（ブロック４２５）。例えば、電力コントローラ１１６は、グラフィックス・エンジン１２２が電力バジェットに適合して動作しているというアクノレッジメント信号を出力することができる。次いで、図４の例示的なプログラム４００は終了する。
【００４０】
例示的なグラフィックス・エンジン１２２により消費された電力が、電力バジェット２０２に適合していないとき（電力バジェット２０２に違反しているとき）（ブロック４２０）、例示的な電力コントローラ１１６は、グラフィックス・エンジン１２２の１以上のグラフィックス状態に対して調整を行うことができる。例えば、制御をブロック４１０に戻して、１以上の実行ユニット１２４、１２６、１２８をより低い電力消費グラフィックス状態に設定することができる。いくつかの例において、電力コントローラ１１６は、電力バジェットに適合するように、指定された回数、１以上のグラフィックス状態を設定することを試みることができる。いくつかの例において、電力コントローラ１１６は、グラフィックス・エンジン１２２が電力バジェット２０２に適合していないとき（ブロック４２０）、又は電力コントローラ１１６が電力バジェット２０２に適合するようにグラフィックス・エンジン１２２の電力消費を調整することができない場合、ステータス通知を出力することができる。例えば、電力コントローラ１１６は、管理コンソール１０２において出力するアラーム又はアラートを出力することができる。次いで、図４の例示的なプログラム４００は終了する。
【００４１】
図５に示した例において、１以上のノード（又は、サーバ）により消費される電力がモニタリング及び／又は調整される。図５の例示的なプログラム５００は、例示的なデータ・センタ電力マネージャ３０４がポリシ・ディレクティブ１４０を受信及び／又は取得したとき（ブロック５０５）開始する。例えば、ＩＴ専門家１３０は、サービス・レベル・アグリーメント（ＳＬＡ）を、データ・センタ３０２におけるノード１３２のラックに適用することができる。例示的なＳＬＡは、ノード１３２Ａ、１３２Ｂ．．．１３２Ｎのラックの例示的なグループ電力バジェット３１２を提供する。例示的なデータ・センタ電力マネージャ３０４は、ワークロードを実行するために、データ・センタ電力マネージャ３０４にどのリソースが利用可能であるかを判定する（ブロック５１０）。例えば、ラックに含まれる１以上のノード１３２Ａ、１３２Ｂ．．．１３２Ｎが、すでにワークロードを処理している場合があり、したがって、それらのノードが、あるグラフィックス状態及び消費電力に設定されている。しかしながら、それらのノード１３２は、最大周波数（例えば、Ｇ０状態）で動作していない場合がある。したがって、例示的なデータ・センタ電力マネージャ３０４は、ワークロードを処理するために、どのコンピューティング・リソース（例えば、ノード１３２Ａ、１３２Ｂ．．．１３２Ｎ）が利用可能であるかを識別し、次いで、ノード電力バジェット２０２Ａ、２０２Ｂ．．．２０２Ｎを、グループ電力バジェット３１２に含まれるノード１３２Ａ、１３２Ｂ．．．１３２Ｎに伝達する（ブロック５１５）。ノード電力バジェット２０２Ａ、２０２Ｂ．．．２０２Ｎは、それぞれの例示的な電力コントローラ１１６Ａ、１１６Ｂ．．．１１６Ｎが適合することを試みる電力バジェットである。例示的な各電力コントローラ１１６Ａ、１１６Ｂ．．．１１６Ｎからの即時ノード電力消費３０８Ａ、３０８Ｂ．．．３０８Ｎが、ノード１３２Ａ、１３２Ｂ．．．１３２Ｎの各々から、例示的なデータ・センタ電力マネージャ３０４により集約され、グループ電力バジェット３１２と比較される（ブロック５２０）。
【００４２】
例示的なノード１３２Ａ、１３２Ｂ．．．１３２Ｎの集約された電力消費が、例示的なグループ電力バジェット３１２に適合しているとき、制御はブロック５４５に進み、データ・センタ電力マネージャ３０４は、ステータス通知（例えば、適合アクノレッジメント（compliance  acknowledgement）を出力する（ブロック５４５）。次いで、図５の例示的なプログラム５００は終了する。
【００４３】
例示的なノード１３２Ａ、１３２Ｂ．．．１３２Ｎの集約された電力消費が、例示的なグループ電力バジェット３１２に適合していないとき（例えば、グループ電力バジェット３１２に違反しているとき）（ブロック５２５）、データ・センタ電力マネージャ３０４は、比較に基づいて、各ノード１３２のノード電力バジェットを調整する（ブロック５３０）。例えば、データ・センタ電力マネージャ３０４は、ノード１３２Ａのグラフィックス・エンジン１２２Ａのノード電力バジェット２０２Ａを、より低い電力消費に対応するノード電力バジェット２０２Ａに調整することができる。例示的なデータ・センタ電力マネージャ３０４は、再度、調整されたノード電力バジェット２０２Ａ、２０２Ｂ．．．２０２Ｎが例示的なそれぞれのノード１３２Ａ、１３２Ｂ．．．１３２Ｎに伝達された後の集約されたノード電力消費を、グループ電力バジェット３１２と比較する（ブロック５３５）。集約されたノード電力消費が、グループ電力バジェット３１２に適合しているとき（ブロック５４０）、例示的なデータ・センタ電力マネージャ３０４は、ステータス通知（例えば、適合アクノレッジメント）を出力し（ブロック５４５）、次いで、図５の例示的なプログラム５００は終了する。
【００４４】
集約されたノード電力消費が、例示的なグループ電力バジェット３１２に適合していないとき（ブロック５４０）、制御はブロック５３０に戻り、例示的なデータ・センタ電力マネージャ３０４は、再度、１以上のノード電力バジェット２０２Ａ、２０２Ｂ．．．２０２Ｎを調整することを試みることができる。いくつかの例において、データ・センタ電力マネージャ３０４は、グループ電力バジェット３１２に適合するように、指定された回数、集約されたノード電力消費を調整することを試みることができる。試行回数が、指定された回数に到達すると、例示的なデータ・センタ電力マネージャ３０４は、グループ電力バジェット３１２に含まれるノードがグループ電力バジェット３１２に適合することができないというステータス・インジケーションを出力することができる（ブロック５４５）。例えば、データ・センタ電力マネージャ３０４は、アラーム・インジケーション又はアラート・インジケーションを出力することができる。さらに、例示的なデータ・センタ電力マネージャ３０４は、ノード１３２の集約された電力消費がグループ電力バジェットに適合していないときに、アラーム又はアラートを出力することができる。いくつかの例において、データ・センタ電力マネージャ３０４は、集約された電力消費がグループ電力バジェットに適合しているとき、アクノレッジメントを出力しないが、ノード１３２の集約された電力消費がグループ電力バジェットに適合していないとき、アラーム又はアラートを出力することができる。
【００４５】
図６は、図１〜図３のノード１３２及び管理コンソール１０２を実装するための図４及び図５の命令を実行することができる例示的な処理プラットフォーム６００のブロック図である。処理プラットフォーム６００は、例えば、サーバ、パーソナル・コンピュータ、インターネット機器、又は任意の他のタイプのコンピューティング・デバイスとすることができる。
【００４６】
この例の処理プラットフォーム６００は、プロセッサ６１２を含む。例えば、プロセッサ６１２は、所望のファミリ又はメーカから入手した１以上のマイクロプロセッサ又はコントローラにより実装され得る。
【００４７】
プロセッサ６１２は、ローカル・メモリ６１３（例えば、キャッシュ）を含み、バス６１８を介して、揮発性メモリ６１４及び不揮発性メモリ６１６を含むメイン・メモリと通信する。揮発性メモリ６１４は、シンクロナス・ダイナミック・ランダム・アクセス・メモリ（ＳＤＲＡＭ）、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）、ＲＡＭＢＵＳダイナミック・ランダム・アクセス・メモリ（ＲＤＲＡＭ）、及び／又は任意の他のタイプのランダム・アクセス・メモリ・デバイスにより実装され得る。不揮発性メモリ６１６は、フラッシュ・メモリ及び／又は任意の他の所望のタイプのメモリ・デバイスにより実装され得る。メイン・メモリ６１４、６１６へのアクセスは、メモリ・コントローラにより制御される。
【００４８】
処理プラットフォーム６００はまた、インタフェース回路６２０を含む。インタフェース回路６２０は、Ｅｔｈｅｒｎｅｔ（登録商標）インタフェース、ユニバーサル・シリアル・バス（ＵＳＢ）、及び／又はＰＣＩエクスプレス・インタフェース等の任意のタイプのインタフェース標準により実装され得る。
【００４９】
１以上の入力デバイス６２２は、インタフェース回路６２０に接続される。１以上の入力デバイス６２２は、ユーザがデータ及びコマンドをプロセッサ６１２に入力することを可能にする。１以上の入力デバイス６２２は、例えば、キーボード、マウス、タッチスクリーン、トラックパッド、トラックボール、ｉｓｏｐｏｉｎｔ、及び／又は音声認識システムにより実装され得る。
【００５０】
１以上の出力デバイス６２４もまた、インタフェース回路６２０に接続される。１以上の出力デバイス６２４は、例えば、ディスプレイ・デバイス（例えば、液晶ディスプレイ、ＣＲＴディスプレイ、プリンタ、及び／又はスピーカ）により実装され得る。したがって、インタフェース回路６２０は、通常、グラフィックス・ドライバ・カードを含む。
【００５１】
インタフェース回路６２０はまた、ネットワーク６２６（例えば、Ｅｔｈｅｒｎｅｔ（登録商標）接続、デジタル加入者線（ＤＳＬ）、電話回線、同軸ケーブル、セルラ電話システム等）を介して外部コンピュータとのデータ交換を容易にするモデム又はネットワーク・インタフェース・カード等の通信デバイスを含む。
【００５２】
処理プラットフォーム６００はまた、ソフトウェア及びデータを記憶するための１以上の大容量記憶デバイス６２８を含む。そのような大容量記憶デバイス６２８の例は、フロッピ・ディスク・ドライブ、ハード・ドライブ・ディスク、コンパクト・ディスク・ドライブ、及びデジタル多用途ディスク（ＤＶＤ）ドライブを含む。大容量記憶デバイス６２８は、ローカル記憶デバイスを実装し得る。
【００５３】
図４及び図５のマシン読み取り可能命令を表す符号化命令６３２は、大容量記憶デバイス６２８、揮発性メモリ６１４、不揮発性メモリ６１６、及び／又はＣＤ若しくはＤＶＤ等のリムーバブル記憶ディスクに記憶され得る。
【００５４】
グラフィックス・エンジンの電力消費を管理する方法、システム、及び装置が開示される。いくつかの開示する例示的な方法は、アプリケーション・レベル・インタフェースを介して、グラフィックス・エンジンのポリシ・ディレクティブを取得する取得ステップであって、ポリシ・ディレクティブは、第１のグラフィックス状態で動作するグラフィックス・エンジンにより消費される電力に対応する閾値を識別する、取得ステップと、オペレーション中にグラフィックス・エンジンにより消費された電力を決定するステップと、消費された電力をポリシ・ディレクティブの閾値と比較するステップと、閾値が満たされた場合、グラフィックス・エンジンがポリシ・ディレクティブに適合するように、グラフィックス・エンジンを第２のグラフィックス状態に設定するステップと、を含む。他の開示する例示的な方法は、グラフィックス・エンジンにおける複数の実行ユニットからの複数の電力値を合計するステップを含む。他の開示する例示的な方法は、第２のグラフィックス状態に設定したことに応答して、通知を生成するステップを含む。他の開示する例示的な方法は、ポリシ・ディレクティブの閾値を満たしたことに応答して、訂正期間タイマを呼び出すステップを含む。他の開示する例示的な方法は、グラフィックス・エンジンを第２のグラフィックス状態に設定する前に、ある訂正期間の間、グラフィックス・エンジンにより消費される電力をモニタリングするステップを含む。
【００５５】
アプリケーション・レベル・インタフェースを介してグラフィックス・エンジンの電力使用量を管理する例示的なシステムは、アプリケーション・レベル・インタフェースを介して、グラフィックス・エンジンのために設定されたポリシ・ディレクティブを取得するノード電力コントローラであって、ポリシ・ディレクティブは、グラフィックス・エンジンの第１のグラフィックス状態の電力使用量の閾値を識別する、ノード電力コントローラと、グラフィックス・エンジンによる電力使用量を検出するセンサ・モニタであって、ノード電力コントローラは、電力使用量をポリシ・ディレクティブの閾値と比較し、閾値が満たされた場合、ノード電力コントローラは、グラフィックス・エンジンがポリシ・ディレクティブに適合するように、グラフィックス・エンジンを第２のグラフィックス状態に設定する、センサ・モニタと、を含む。他の開示する例示的なシステムは、アプリケーション・レベル・インタフェースを介して受信されるタスクを実行する実行ユニットを有するグラフィックス・エンジンを含む。他の開示する例示的なシステムは、第２のグラフィックス状態に設定したことに応答して、通知を生成するノード電力コントローラを含む。他の開示する例示的なシステムは、ポリシ・ディレクティブの閾値を満たしたことに応答して、訂正期間タイマを呼び出すノード電力コントローラを含む。他の開示する例示的なシステムは、グラフィックス・エンジンを第２のグラフィックス状態に設定する前に、ある訂正期間の間、グラフィックス・エンジンによる電力使用量をモニタリングするノード電力コントローラを含む。
【００５６】
いくつかの開示する例示的なマシン読み取り可能記憶媒体は命令を含み、命令が実行されたとき、命令は、マシンに、少なくとも、アプリケーション・レベル・インタフェースを介して、グラフィックス・エンジンのポリシ・ディレクティブを取得させ、ここで、ポリシ・ディレクティブは、第１のグラフィックス状態のグラフィックス・エンジンにより消費される電力に対応する閾値を識別する、オペレーション中にグラフィックス・エンジンにより消費された電力を決定させ、消費された電力をポリシ・ディレクティブの閾値と比較させ、閾値が満たされた場合、グラフィックス・エンジンがポリシ・ディレクティブに適合するように、グラフィックス・エンジンを第２のグラフィックス状態に設定させる。いくつかの例示的なマシン読み取り可能記憶媒体は、グラフィックス・エンジンにおける複数の実行ユニットからの複数の電力値を計算することを含む。他の例示的なマシン読み取り可能記憶媒体は、第２のグラフィックス状態に設定したことに応答して、通知を生成することを含む。他の開示する例示的なマシン読み取り可能記憶媒体は、ポリシ・ディレクティブの閾値を満たしたことに応答して、訂正期間タイマを呼び出すことを含む。他の開示する例示的なマシン読み取り可能記憶媒体は、グラフィックス・エンジンを第２のグラフィックス状態に設定する前に、ある訂正期間の間、グラフィックス・エンジンにより消費される電力をモニタリングすることを含む。他の開示する例示的なマシン読み取り可能記憶媒体は、ある訂正期間の間、グラフィックス・エンジンによる平均電力使用量を計算すること、及び、平均電力使用量が閾値を満たした場合、グラフィックス・エンジンを第２のグラフィックス状態に設定することを含む。
【００５７】
上記記載から、上記で開示した方法、装置、及び製品は、統合されたグラフィックス・エンジンを含むノードにおける電力消費のきめの細かい電力管理を可能にし、そのきめの細かい電力管理が、大規模のサーバ展開において拡張及び使用され得ることが理解されよう。
【００５８】
所定の例示的な方法、装置、及び製品について本明細書で説明したが、本特許のカバー範囲は、そのように限定されるものではない。そうではなく、本特許は、本特許の請求項の範囲に属する全ての方法、装置、及び製品をカバーする。
【図１】
2016503549.tif 000003
【図２】
2016503549.tif 000004
【図３】
2016503549.tif 000005
【図４】
2016503549.tif 000006
【図５】
2016503549.tif 000007
【図６】
2016503549.tif 000008
【手続補正書】
【提出日】平成27年5月20日(2015.5.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
アプリケーション・レベル・インタフェースを介してグラフィックス・エンジンの電力使用量を管理する方法であって、
前記アプリケーション・レベル・インタフェースを介して、前記グラフィックス・エンジンのポリシ・ディレクティブを取得する取得ステップであって、前記ポリシ・ディレクティブは、第１のグラフィックス状態で動作する前記グラフィックス・エンジンにより消費される電力に対応する閾値を識別する、取得ステップと、
オペレーション中に前記グラフィックス・エンジンにより消費された電力を決定する決定ステップと、
前記の消費された電力を前記ポリシ・ディレクティブの前記閾値と比較するステップと、
前記閾値が満たされた場合、前記グラフィックス・エンジンが前記ポリシ・ディレクティブに適合するように、前記グラフィックス・エンジンを第２のグラフィックス状態に設定するステップと、
を含む、方法。
【請求項２】
前記決定ステップは、前記グラフィックス・エンジンにおける複数の実行ユニットからの複数の電力値を合計するステップを含む、請求項１記載の方法。
【請求項３】
前記グラフィックス・エンジンの前記第１のグラフィックス状態は、前記複数の実行ユニットのうちの少なくとも１つの第１の周波数設定に対応する、請求項２記載の方法。
【請求項４】
前記グラフィックス・エンジンの前記第２のグラフィックス状態は、前記複数の実行ユニットのうちの少なくとも１つの第２の周波数設定に対応する、請求項２又は３記載の方法。
【請求項５】
前記第２のグラフィックス状態に設定したことに応答して、通知を生成するステップ
をさらに含む、請求項１乃至４いずれか一項記載の方法。
【請求項６】
前記ポリシ・ディレクティブの前記閾値を満たしたことに応答して、訂正期間タイマを呼び出すステップ
をさらに含む、請求項１乃至５いずれか一項記載の方法。
【請求項７】
前記グラフィックス・エンジンを前記第２のグラフィックス状態に設定する前に、ある訂正期間の間、前記グラフィックス・エンジンにより消費される電力をモニタリングするステップ
をさらに含む、請求項６記載の方法。
【請求項８】
アプリケーション・レベル・インタフェースを介してグラフィックス・エンジンの電力使用量を管理するシステムであって、
前記アプリケーション・レベル・インタフェースを介して、前記グラフィックス・エンジンのために設定されたポリシ・ディレクティブを取得するノード電力コントローラであって、前記ポリシ・ディレクティブは、前記グラフィックス・エンジンの第１のグラフィックス状態の電力使用量の閾値を識別する、ノード電力コントローラと、
前記グラフィックス・エンジンによる電力使用量を検出するセンサ・モニタであって、前記ノード電力コントローラは、前記電力使用量を前記ポリシ・ディレクティブの前記閾値と比較し、前記閾値が満たされた場合、前記ノード電力コントローラは、前記グラフィックス・エンジンが前記ポリシ・ディレクティブに適合するように、前記グラフィックス・エンジンを第２のグラフィックス状態に設定する、センサ・モニタと、
を備えた、システム。
【請求項９】
前記グラフィックス・エンジンは、前記アプリケーション・レベル・インタフェースを介して受信されるタスクを実行する実行ユニットを有する、請求項８記載のシステム。
【請求項１０】
前記グラフィックス・エンジンの前記第１のグラフィックス状態は、前記実行ユニットの第１の周波数設定に対応する、請求項９記載のシステム。
【請求項１１】
前記グラフィックス・エンジンの前記第２のグラフィックス状態は、前記実行ユニットの第２の周波数設定に対応する、請求項９又は１０記載のシステム。
【請求項１２】
前記ノード電力コントローラは、前記第２のグラフィックス状態に設定したことに応答して、通知を生成する、請求項８乃至１１いずれか一項記載のシステム。
【請求項１３】
前記ノード電力コントローラは、前記ポリシ・ディレクティブの前記閾値を満たしたことに応答して、訂正期間タイマを呼び出す、請求項８乃至１２いずれか一項記載のシステム。
【請求項１４】
前記ノード電力コントローラは、前記グラフィックス・エンジンを前記第２のグラフィックス状態に設定する前に、ある訂正期間の間、前記グラフィックス・エンジンによる前記電力使用量をモニタリングする、請求項１３記載のシステム。
【請求項１５】
命令を含むマシン読み取り可能記憶媒体であって、前記命令が実行されたとき、前記命令は、マシンに、少なくとも、
アプリケーション・レベル・インタフェースを介して、グラフィックス・エンジンのポリシ・ディレクティブを取得させ、ここで、前記ポリシ・ディレクティブは、第１のグラフィックス状態の前記グラフィックス・エンジンにより消費される電力に対応する閾値を識別する、
オペレーション中に前記グラフィックス・エンジンにより消費された電力を決定させ、
前記の消費された電力を前記ポリシ・ディレクティブの前記閾値と比較させ、
前記閾値が満たされた場合、前記グラフィックス・エンジンが前記ポリシ・ディレクティブに適合するように、前記グラフィックス・エンジンを第２のグラフィックス状態に設定させる、マシン読み取り可能記憶媒体。
【請求項１６】
前記命令が実行されたとき、前記命令は、前記マシンに、
前記グラフィックス・エンジンにおける複数の実行ユニットからの複数の電力値を合計させる、請求項１５記載のマシン読み取り可能記憶媒体。
【請求項１７】
前記命令が実行されたとき、前記命令は、前記マシンに、
前記第２のグラフィックス状態に設定したことに応答して、通知を生成させる、請求項１５又は１６記載のマシン読み取り可能記憶媒体。
【請求項１８】
前記命令が実行されたとき、前記命令は、前記マシンに、
前記ポリシ・ディレクティブの前記閾値を満たしたことに応答して、訂正期間タイマを呼び出させる、請求項１５乃至１７いずれか一項記載のマシン読み取り可能記憶媒体。
【請求項１９】
前記命令が実行されたとき、前記命令は、前記マシンに、
前記グラフィックス・エンジンを前記第２のグラフィックス状態に設定する前に、ある訂正期間の間、前記グラフィックス・エンジンにより消費される電力をモニタリングさせる、請求項１８記載のマシン読み取り可能記憶媒体。
【請求項２０】
前記命令が実行されたとき、前記命令は、前記マシンに、
ある訂正期間の間、前記グラフィックス・エンジンによる平均電力使用量を計算させ、
前記平均電力使用量が前記閾値を満たした場合、前記グラフィックス・エンジンを前記第２のグラフィックス状態に設定させる、請求項１８又は１９記載のマシン読み取り可能記憶媒体。
【国際調査報告】
2016503549.tif 000009
2016503549.tif 000010