(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-07-03
(45)【発行日】2025-07-11
(54)【発明の名称】コンピュータ・システムにおける電力分散
(51)【国際特許分類】
G06F 9/50 20060101AFI20250704BHJP
G06F 1/04 20060101ALI20250704BHJP
【FI】
G06F9/50 150D
G06F1/04 550
(21)【出願番号】P 2023504259
(86)(22)【出願日】2021-05-13
(86)【国際出願番号】 EP2021062781
(87)【国際公開番号】W WO2022022872
(87)【国際公開日】2022-02-03
【審査請求日】2023-10-26
(32)【優先日】2020-07-27
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】シャー、パース、サンジャイバイ
(72)【発明者】
【氏名】シェノイ、ランジャル、ゴーサム
(72)【発明者】
【氏名】スリニヴァサン、バイディアナサン
(72)【発明者】
【氏名】ブユクトスノグル、アルパー
(72)【発明者】
【氏名】ヴェガ、アウグスト
(72)【発明者】
【氏名】ボーズ、プラディップ
【審査官】田中 幸雄
(56)【参考文献】
【文献】米国特許出願公開第2020/0065686(US,A1)
【文献】米国特許出願公開第2009/0089602(US,A1)
【文献】特表2009-522688(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
G06F 1/04
(57)【特許請求の範囲】
【請求項1】
コンピュータにより実施される方法であって、
トークン・プールによって、集積回路の複数の電力消費デバイスの第1の電力消費デバイスから電力許容量要求を受信することと、
前記電力許容量要求を受信することに応答して、前記複数の電力消費デバイスのうちの第2の電力消費デバイスが電力許容量余剰を有することを決定することと、
前記第2の電力消費デバイスが前記電力許容量余剰を有することを決定することに応答して、前記第2の電力消費デバイスから前記電力許容量余剰を受信することと、
前記トークン・プールを介して前記電力許容量余剰を前記第1の電力消費デバイスへ伝達することと、
前記第1の電力消費デバイスへ前記電力許容量余剰を伝達することに応答して、(i)前記電力許容量余剰に基づいて前記第1の電力消費デバイスに対応する第1の電力使用量制限を増加させること、および(ii)前記電力許容量余剰に基づいて前記第2の電力消費デバイスに対応する第2の電力使用量制限を減少させることと、
を含む方法。
【請求項2】
前記第1の電力消費デバイスおよび前記第2の電力消費デバイスを含む前記複数の電力消費デバイスと反復的に交信すること
をさらに含む、請求項1に記載の方法。
【請求項3】
前記複数の電力消費デバイスと交信することは、
前記第1の電力消費デバイスと通信することと、
前記第1の電力消費デバイスの電力使用量ステータスを決定することと、
前記第1の電力消費デバイスの前記電力使用量ステータスを決定することに応答して、(i)前記トークン・プールから前記第1の電力消費デバイスへ第1の電力許容量増分を伝達すること、(ii)前記トークン・プールによって、前記第1の電力消費デバイスから第2の電力許容量増分を受信するこ
とからなる群から選択されるアクションを実行することと、
を含む、請求項2に記載の方法。
【請求項4】
前記複数の電力消費デバイスと反復的に交信することは、
第1の特定の順序で前記複数の電力消費デバイスの各電力消費デバイスとの交信の第1のラウンドを、一度に1つの電力消費デバイスに実行することと、
前記第1の特定の順序で前記複数の電力消費デバイスの各電力消費デバイスとの交信の第2のラウンドを、一度に1つの電力消費デバイスに実行することと、
を含む、請求項3に記載の方法。
【請求項5】
前記複数の電力消費デバイスと反復的に交信することは、
第2の特定の順序で前記複数の電力消費デバイスのサブセットとの交信の第3のラウンドを、一度に1つの電力消費デバイスに実行すること
をさらに含む、請求項4に記載の方法。
【請求項6】
前記第1の電力消費デバイスは、電子モジュールの第1の周波数領域
内にあり、前記第2の電力消費デバイスは、前記電子モジュールの第2の周波数領域
内にある、請求項1ないし5のいずれか一項に記載の方法。
【請求項7】
前記電力許容量余剰を前記第1の電力消費デバイスへ伝達することにさらに応答して、
最大周波数を超えることができる作業負荷最適化周波数で前記第1の電力消費デバイスを動作させることと、
前記集積回路の消費電力を所定の最大消費電力内に保つことと、
をさらに含む、請求項1ないし6のいずれか一項に記載の方法。
【請求項8】
1つまたは複数のコンピュータ可読記憶媒体と、前記1つまたは複数のコンピュータ可読記憶媒体にひとまとめに記憶されたプログラム命令と、
を備えるコンピュータ・プログラム製品であって、前記プログラム命令は、
トークン・プールによって、集積回路の複数の電力消費デバイスの第1の電力消費デバイスから電力許容量要求を受信することと、
前記電力許容量要求を受信することに応答して、前記複数の電力消費デバイスのうちの第2の電力消費デバイスが電力許容量余剰を有することを決定することと、
前記第2の電力消費デバイスが前記電力許容量余剰を有することを決定することに応答して、前記第2の電力消費デバイスから前記電力許容量余剰を受信することと、
前記トークン・プールを介して前記電力許容量余剰を前記第1の電力消費デバイスへ伝達することと、
前記第1の電力消費デバイスへ前記電力許容量余剰を伝達することに応答して、(i)前記電力許容量余剰に基づいて前記第1の電力消費デバイスに対応する第1の電力使用量制限を増加させること、および(ii)前記電力許容量余剰に基づいて前記第2の電力消費デバイスに対応する第2の電力使用量制限を減少させることと、
を実行するようにプログラムされた命令を含む、コンピュータ・プログラム製品。
【請求項9】
前記第1の電力消費デバイスおよび前記第2の電力消費デバイスを含む前記複数の電力消費デバイスと反復的に交信すること
を実行するようにプログラムされたプログラム命令をさらに含む、請求項8に記載のコンピュータ・プログラム製品。
【請求項10】
前記複数の電力消費デバイスと交信することは、
前記第1の電力消費デバイスと通信することと、
前記第1の電力消費デバイスの電力使用量ステータスを決定することと、
前記第1の電力消費デバイスの前記電力使用量ステータスを決定することに応答して、(i)前記トークン・プールから前記第1の電力消費デバイスへ第1の電力許容量増分を伝達すること、(ii)前記トークン・プールによって、前記第1の電力消費デバイスから第2の電力許容量増分を受信するこ
とからなる群から選択されるアクションを実行することと、
を実行するようにプログラムされたプログラム命令を含む、請求項9に記載のコンピュータ・プログラム製品。
【請求項11】
前記複数の電力消費デバイスと反復的に交信することは、
第1の特定の順序で前記複数の電力消費デバイスの各電力消費デバイスとの交信の第1のラウンドを、一度に1つの電力消費デバイスに実行することと、
前記第1の特定の順序で前記複数の電力消費デバイスの各電力消費デバイスとの交信の第2のラウンドを、一度に1つの電力消費デバイスに実行することと、
を実行するようにプログラムされたプログラム命令を含む、請求項10に記載のコンピュータ・プログラム製品。
【請求項12】
前記複数の電力消費デバイスと反復的に交信することは、
第2の特定の順序で前記複数の電力消費デバイスのサブセットとの交信の第3のラウンドを、一度に1つの電力消費デバイスに実行すること
を実行するようにプログラムされたプログラム命令をさらに含む、請求項11に記載のコンピュータ・プログラム製品。
【請求項13】
前記第1の電力消費デバイスは、電子モジュールの第1の周波数領域
内にあり、前記第2の電力消費デバイスは、前記電子モジュールの第2の周波数領域
内にある、請求項8ないし12のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項14】
前記電力許容量余剰を前記第1の電力消費デバイスへ伝達することにさらに応答して、
最大周波数を超えることができる作業負荷最適化周波数で前記第1の電力消費デバイスを動作させることと、
前記集積回路の消費電力を所定の最大消費電力内に保つことと、
を実行するようにプログラムされたプログラム命令をさらに含む、請求項8ないし12のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項15】
プロセッサ・セットと、
1つまたは複数のコンピュータ可読記憶媒体と
を備えるコンピュータ・システムであって、
前記プロセッサ・セットは、前記1つまたは複数のコンピュータ可読記憶媒体に記憶されたプログラム命令を実行するように構築され、設置され、接続され、またはプログラムされ、あるいはそれらが組合されており、
前記プログラム命令は、
トークン・プールによって、集積回路の複数の電力消費デバイスの第1の電力消費デバイスから電力許容量要求を受信することと、
前記電力許容量要求を受信することに応答して、前記複数の電力消費デバイスのうちの第2の電力消費デバイスが電力許容量余剰を有することを決定することと、
前記第2の電力消費デバイスが前記電力許容量余剰を有することを決定することに応答して、前記第2の電力消費デバイスから前記電力許容量余剰を受信することと、
前記トークン・プールを介して前記電力許容量余剰を前記第1の電力消費デバイスへ伝達することと、
前記第1の電力消費デバイスへ前記電力許容量余剰を伝達することに応答して、(i)前記電力許容量余剰に基づいて前記第1の電力消費デバイスに対応する第1の電力使用量制限を増加させること、および(ii)前記電力許容量余剰に基づいて前記第2の電力消費デバイスに対応する第2の電力使用量制限を減少させることと、
を実行するようにプログラムされた命令を含む、コンピュータ・システム。
【請求項16】
前記第1の電力消費デバイスおよび前記第2の電力消費デバイスを含む前記複数の電力消費デバイスと反復的に交信すること
を実行するようにプログラムされたプログラム命令をさらに含む、請求項15に記載のコンピュータ・システム。
【請求項17】
前記複数の電力消費デバイスと交信することは、
前記第1の電力消費デバイスと通信することと、
前記第1の電力消費デバイスの電力使用量ステータスを決定することと、
前記第1の電力消費デバイスの前記電力使用量ステータスを決定することに応答して、(i)前記トークン・プールから前記第1の電力消費デバイスへ第1の電力許容量増分を伝達すること、(ii)前記トークン・プールによって、前記第1の電力消費デバイスから第2の電力許容量増分を受信するこ
とからなる群から選択されるアクションを実行することと、
を実行するようにプログラムされたプログラム命令を含む、請求項16に記載のコンピュータ・システム。
【請求項18】
前記複数の電力消費デバイスと反復的に交信することは、
第1の特定の順序で前記複数の電力消費デバイスの各電力消費デバイスとの交信の第1のラウンドを、一度に1つの電力消費デバイスに実行することと、
前記第1の特定の順序で前記複数の電力消費デバイスの各電力消費デバイスとの交信の第2のラウンドを、一度に1つの電力消費デバイスに実行することと、
を実行するようにプログラムされたプログラム命令を含む、請求項17に記載のコンピュータ・システム。
【請求項19】
前記第1の電力消費デバイスは、電子モジュールの第1の周波数領域
内にあり、前記第2の電力消費デバイスは、前記電子モジュールの第2の周波数領域
内にある、請求項15ないし18のいずれか一項に記載のコンピュータ・システム。
【請求項20】
前記電力許容量余剰を前記第1の電力消費デバイスへ伝達することにさらに応答して、
最大周波数を超えることができる作業負荷最適化周波数で前記第1の電力消費デバイスを動作させることと、
前記集積回路の消費電力を所定の最大消費電力内に保つことと、
を実行するようにプログラムされたプログラム命令をさらに含む、請求項15ないし18のいずれか一項に記載のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、コンピュータにおける電力使用量の分野に関し、より詳細には、中央処理装置(CPU)コアのように周波数領域の間の、およびマルチCPUコンピュータ・システムにおけるCPUの間の効率的な電力分散に関する。
【背景技術】
【0002】
電子部品は、動作するために電力を消費(放散)し、これにより部品内に熱を発生させる。この熱は、部品内で温度を上昇させる。熱を運び去る冷却システムは、部品温度を管理するのを助ける。温度を管理する別の方法は、部品によって使用される電力を調節することである。例えば、中央処理装置(CPU)は、上回るとCPUが動作することができなくなる電力使用量を制限する電力バジェットに関係付けられ得る。オン・チップ・コントローラ(OCC)は、電力バジェット制限を超えるのを防ぐようにCPU動作周波数を抑える。
【発明の概要】
【0003】
本発明の態様によれば、(必ずしも以下の順序ではないが)(i)トークン・プールによって、集積回路の複数の電力消費デバイスのうちの第1の電力消費デバイスから電力許容量要求(power allowance request)を受信することと、(ii)電力許容量要求を受信することに応答して、複数の電力消費デバイスのうちの第2の電力消費デバイスが電力許容量余剰(power allowance surplus)を有することを決定することと、(iii)第2の電力消費デバイスが電力許容量余剰を有することに応答して、第2の電力消費デバイスから電力許容量余剰を受信することと、(iv)トークン・プールを介して電力許容量余剰を第1の電力消費デバイスへ伝達することと、(v)第1の電力消費デバイスへ電力許容量余剰を伝達することに応答して、(a)電力許容量余剰に基づいて第1の電力消費デバイスに対応する第1の電力使用量制限を増加させること、および(b)電力許容量余剰に基づいて第2の電力消費デバイスに対応する第2の電力使用量制限を減少させることと、以上の動作を実行する方法、コンピュータ・プログラム製品、およびシステムが提供される。
【図面の簡単な説明】
【0004】
【
図1】本発明の少なくとも1つの実施形態によるシステムの機能ブロック図である。
【
図2】本発明の少なくとも1つの実施形態による少なくとも一部実行される方法を示すフローチャートである。
【
図3】本発明の少なくとも1つの実施形態によるシステムのマシン・ロジック(例えば、ソフトウェア)部を示すブロック図である。
【
図4A】本発明の少なくとも1つの実施形態によるリング・トポロジの概略図である。
【
図4B】本発明の少なくとも1つの実施形態によるリング・トポロジの概略図である。
【
図4C】本発明の少なくとも1つの実施形態によるリング・トポロジの概略図である。
【
図4D】本発明の少なくとも1つの実施形態によるリング・トポロジの概略図である。
【
図4E】本発明の少なくとも1つの実施形態によるリング・トポロジの概略図である。
【
図4F】本発明の少なくとも1つの実施形態によるリング・トポロジの概略図である。
【
図5】本発明の少なくとも1つの実施形態によるリング・トポロジの概略図である。
【
図6A】本発明の少なくとも1つの実施形態によるトークン・プールを初期化する手法を示す擬似コード・リストである。
【
図6B】本発明の少なくとも1つの実施形態による100万命令/秒(MIPS)で計算する手法を示す擬似コード・リストである。
【
図6C】本発明の少なくとも1つの実施形態による追加のトークンを要求する手法を示す擬似コード・リストである。
【
図6D】本発明の少なくとも1つの実施形態による周波数領域(FD)に対応するデーモン・スレッドについての手法を示す擬似コード・リストである。
【発明を実施するための形態】
【0005】
本発明のいくつかの実施形態では、電力管理システムは、電子モジュールの周波数領域の間で一定数の電力トークンを分散させるためにリング・トポロジ(分散トークン・パッシング機構)を用いる。各電力トークンは、電子モジュールが放散することが許される総電力の一部を表す。一定数の電力トークンは、電子モジュールに割り振られた所定の最大消費(放散)電力をひとまとめに表す。
【0006】
電子モジュールは、いくつかの周波数領域を有することができる。各周波数領域は、制御可能であるとともに電子モジュールの他の周波数領域から独立しているクロック周波数で動作する。より高い動作周波数は、周波数領域がより高い速度で作業負荷を処理することでできる一方、結果としてより多くの電力を放散することを意味する。いくつかの実施形態では、(マルチ・コアCPUにおける)CPUコアは、そのような周波数領域の一例である。いくつかの周波数領域によって分散された電力は、それぞれの作業負荷に従って変動する。電力管理システムは、ローテーティング・トークン・プール(rotating token pool)から電力トークンを提供し、これが今度は各周波数領域を(リング・トポロジを使用して)ラウンド・ロビン方式でポーリングし、アドレス指定する。周波数領域は、トークン・プールとの交信と連動して、必要(および利用可能)であれば、トークン・プールから追加のトークンを受け入れるまたは不要なトークンをトークン・プールへ寄贈することができる。トークン・プールが、利用可能な電力トークンを有さない(または十分な電力トークンを有さない)ときに(「電力不足」状態で)より多くの電力トークンを必要としている周波数領域は、他の周波数領域によってトークンがトークン・プールへ放棄されるのを待機する。そのそれぞれのターンにおいてトークン・プールと交信する他の周波数領域は、不要な(余剰)電力トークンをトークン・プールに配置することによって応答することができる。トークン・プールが一巡して戻り、電力不足領域と再び交信すると、電力不足領域は、トークン・プールから利用できる電力トークンを取得することができる。
【0007】
周波数領域は、周波数領域によって保持される電力トークンの個数に従った周波数で動作する。全体としては、(複数の周波数領域を有する)電子モジュールは、その作業負荷をより効率的に実行しつつ、(複数の周波数領域の間で割り振られた電力トークンの総数によって表される)割り当てられた電力バジェット内に留まる。
【0008】
この詳細な説明のセクションは、(i)ハードウェアおよびソフトウェア環境、(ii)例示的実施形態、(iii)さらなるコメントまたは実施形態あるいはその両方、ならびに(iv)定義といったサブセクションに分割される。
I.ハードウェアおよびソフトウェア環境
【0009】
本発明は、あらゆる可能性のある技術的詳細レベルの統合におけるシステム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであり得る。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるコンピュータ可読プログラム命令をそこに有するコンピュータ可読記憶媒体(または媒体)を含むことができる。
【0010】
コンピュータ可読記憶媒体は、命令実行デバイスにより用いられる命令を保持および記憶することができる有体のデバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または前述したものの任意の適切な組合せであってよいが、これらに限定されるものではない。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストには、以下のもの、すなわち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、消去可能プログラマブル・リード・オンリ・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピ・ディスク、機械的に符号化されたデバイス、例えば、パンチ・カード、または命令を記憶した溝内の隆起構造物、および前述したものの任意の適切な組合せが含まれる。本明細書中で使用されるコンピュータ可読記憶媒体は、それ自体、電波もしくは他の自由に伝搬する電磁波、導波路もしくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、または電線を通じて伝送される電気信号などの一時的な信号と解釈されるべきではない。
【0011】
本明細書中で説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスにダウンロードされてよく、あるいは、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくは無線ネットワーク、またはその組合せといったネットワークを介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされてよい。ネットワークは、銅製伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含み得る。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体において記憶するためにコンピュータ可読プログラム命令を転送する。
【0012】
本発明の動作を実行するコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、あるいはSmalltalk(R)またはC++等などのオブジェクト指向プログラミング言語および「C」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで記述したソース・コードまたはオブジェクト・コードであり得る。コンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとして、ユーザのコンピュータ上で完全に実行されてもよく、ユーザのコンピュータ上で部分的に実行されてもよく、ユーザのコンピュータ上で部分的におよびリモート・コンピュータ上で部分的に実行されてもよく、あるいはリモート・コンピュータまたはサーバ上で完全に実行されてよい。後者のシナリオにおいては、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続されてもよく、あるいは(例えば、インターネット・サービス・プロバイダを用いてインターネットを通じて)外部コンピュータへの接続がなされてもよい。いくつかの実施形態では、本発明の態様を実行するために、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、電子回路をパーソナライズするためにコンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行することができる。
【0013】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して本明細書中で説明される。フローチャート図の各ブロックまたはブロック図あるいはその両方、およびフローチャート図のブロックまたはブロック図あるいはその両方の組合せは、コンピュータ可読プログラム命令によって実現することができると理解されよう。
【0014】
これらのコンピュータ可読プログラム命令は、コンピュータのプロセッサまたは他のプログラマブル・データ処理装置によって実行する命令が、フローチャート、またはブロック図の1つもしくは複数のブロック、あるいはその両方で特定される機能/行為を実現するための手段を生成するように、マシンを生成するためにコンピュータのプロセッサ、または他のプログラマブル・データ処理装置へ提供することができる。コンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはその組合せに特定の方法で機能するように指示することができるこれらのコンピュータ可読プログラム命令は、内部に命令を記憶したコンピュータ可読記憶媒体が、フローチャートまたはブロック図の1つもしくは複数のブロックあるいはその両方に特定された機能/行為の態様を実現する命令を含む製品を含むように、コンピュータ可読記憶媒体に記憶することもできる。
【0015】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行する命令がフローチャートまたはブロック図の1つもしくは複数のブロックあるいはその両方に特定された機能/行為を実現するように、コンピュータにより実施されるプロセスを生成するよう、一連の動作ステップをコンピュータ、他のプログラマブル装置、または他のデバイス上で実行させるために、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上へロードすることもできる。
【0016】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能性のある実施のアーキテクチャ、機能性、および動作を示す。この点に関し、フローチャートまたはブロック図中の各ブロックは、特定された論理機能を実現するための1または複数の実行可能命令を含むモジュール、セグメント、または命令の一部を表し得る。いくつかの代替的な実施において、ブロックに示された機能は、図面内に示されたものとは異なる順序で行われてもよい。例えば、連続的に図示される2つのブロックは、実際には、含まれる機能性に応じて、部分的にまたは全体的に時間的に重複するかたちで同時に、ほぼ同時に実行される1ステップとして遂行されてもよく、あるいはブロックは、場合によっては、逆順で実行されてもよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその組合せ中のブロックの組合せは、特定の機能もしくは行為を実行するまたは特定用途向けハードウェア命令とコンピュータ命令との組合せを実施する特定用途向けハードウェア・ベースのシステムによって実現されてよいことにも留意されたい。
【0017】
次に、本発明によるソフトウェアまたは方法あるいはその両方のための可能性のあるハードウェアおよびソフトウェア環境の一実施形態が、図を参照して詳細に説明される。
図1は、サーバ・システム102、クライアント・コンピュータ104、通信ネットワーク114、サーバ・コンピュータ200、通信ユニット202、プロセッサ・セット204、入出力(I/O)インターフェース・セット206、メモリ208、持続的ストレージ210、ディスプレイ212、外部デバイス214、ランダム・アクセス・メモリ(RAM)230、キャッシュ・メモリ232、および電力管理プログラム300を含むネットワーク化されたコンピュータ・システム100の様々な部分を示す機能ブロック図である。
【0018】
サーバ・システム102は、多くの点で、本発明における様々なコンピュータ・サブシステムを表す。したがって、次に、サーバ・システム102のいくつかの部分を、以下の段落で説明する。
【0019】
サーバ・システム102は、ラップトップ・コンピュータ、タブレット・コンピュータ、ネットブック・コンピュータ、パーソナル・コンピュータ(PC)、デスクトップ・コンピュータ、パーソナル・デジタル・アシスタント(PDA)、スマート・フォン、または通信ネットワーク114を介してクライアント・サブシステムと通信することができる任意のプログラマブル電子デバイスであり得る。電力管理プログラム300は、以下、この詳細な説明のセクションの例示的実施形態のサブセクションにおいて詳細に説明されるあるソフトウェア機能を生成、管理、および制御するのに使用される機械可読命令またはデータあるいはその両方の総体である。
【0020】
サーバ・システム102は、通信ネットワーク114を介して他のコンピュータ・サブシステムと通信することができる。通信ネットワーク114は、例えば、ローカル・エリア・ネットワーク(LAN)、インターネットなどのワイド・エリア・ネットワーク(WAN)、または2つの組合せとすることができ、有線接続、無線接続、または光ファイバ接続を含み得る。概して、通信ネットワーク114は、サーバとクライアント・サブシステムの間に通信をサポートする接続とプロトコルの任意の組合せであり得る。
【0021】
サーバ・システム102は、多くのダブル矢印を有するブロック図として示される。これらのダブル矢印(参照番号は別々でない)は、サーバ・システム102の様々な構成要素間の通信をもたらす通信ファブリックを表す。この通信ファブリックは、システム内のプロセッサ(例えば、マイクロプロセッサ、通信およびネットワーク・プロセッサ)、システム・メモリ、周辺機器、および任意の他のハードウェア部品の間でデータまたは制御情報あるいはその両方をパスするために設計された任意のアーキテクチャで実施され得る。例えば、通信ファブリックは、1つまたは複数のバスを用いて、少なくとも一部、実施することができる。
【0022】
メモリ208および持続的ストレージ210は、コンピュータ可読記憶媒体である。概して、メモリ208は、任意の適切な揮発性または不揮発性コンピュータ可読記憶媒体を含むことができる。現在ではまたは近い将来にはあるいはその両方、(i)外部デバイス214は、サーバ・システム102のためのメモリを一部または全部供給することができる可能性がある、および/または(ii)サーバ・システム102の外部のデバイスは、サーバ・システム102のためのメモリを与えることができる可能性があることにさらに留意されたい。
【0023】
電力管理プログラム300は、それぞれのコンピュータ・プロセッサ・セット204の1つまたは複数によるアクセスまたは実行あるいはその両方のために、通常、メモリ208の1つまたは複数のメモリを通じて、持続的ストレージ210に記憶される。持続的ストレージ210は、(i)伝搬中の信号よりも少なくとも持続的であり、(ii)有形の媒体(例えば、磁区または光領域)上に(そのソフト・ロジックまたはデータあるいはその両方を含む)プログラムを記憶し、(iii)永続ストレージほど実質的に持続的でない。代替として、データ・ストレージは、持続的ストレージ210によって与えられるストレージのタイプよりも持続的または永続的あるいはその両方であってもよい。
【0024】
電力管理プログラム300は、機械可読命令と実行可能命令の両方または実データ(すなわち、データベースに記憶されたデータのタイプ)あるいはその両方を含み得る。この特定の実施形態では、持続的ストレージ210は、磁気ハード・ディスク・ドライブを含む。いくつかの可能性のある変形例を挙げると、持続的ストレージ210には、ソリッド・ステート・ハード・ドライブ、半導体記憶デバイス、リード・オンリ・メモリ(ROM)、消去可能プログラマブル・リード・オンリ・メモリ(EPROM)、フラッシュ・メモリ、またはプログラム命令またはデジタル情報を記憶することができる任意の他のコンピュータ可読記憶媒体が含まれ得る。
【0025】
持続的ストレージ210によって使用される媒体は、リムーバブルであることもできる。例えば、リムーバブル・ハード・ドライブが、持続的ストレージ210のために使用されてもよい。他の例には、持続的ストレージ210のやはり一部である別のコンピュータ可読記憶媒体へ移すためにドライブの中に挿入される光ディスクおよび磁気ディスク、サム・ドライブ、ならびにスマート・カードが含まれる。
【0026】
通信ユニット202は、これらの例において、他のデータ処理システム、またはサーバ・システム102の外部のデバイスと通信を行う。これらの例では、通信ユニット202は、1つまたは複数のネットワーク・インターフェース・カードを含む。通信ユニット202は、物理的通信リンクおよび無線通信リンクの一方または両方を使用することによって通信を行うことができる。本明細書中で説明される任意のソフトウェア・モジュールは、通信ユニット(例えば、通信ユニット202)を通じて持続的ストレージ・デバイス(例えば、持続的ストレージ210)へダウンロードされてもよい。
【0027】
I/Oインターフェース・セット206は、サーバ・コンピュータ200とのデータ通信において局所的に接続することができる他のデバイスに対するデータの入出力を可能にする。例えば、I/Oインターフェース・セット206は、外部デバイス214との接続をもたらす。典型的には、外部デバイス214は、キーボード、キーパッド、タッチ・スクリーン、またはいくつかの他の適切な入力デバイス、あるいはその組合せなどのデバイスを含む。外部デバイス214は、ポータブル・コンピュータ可読記憶媒体、例えば、サム・ドライブ、ポータブル光ディスクまたは磁気ディスク、およびメモリ・カード等も含むことができる。本発明の実施形態を実施するために使用されるソフトウェアおよびデータ、例えば、電力管理プログラム300は、そのようなポータブル・コンピュータ可読記憶媒体に記憶することができる。これらの実施形態では、関連ソフトウェアは、I/Oインターフェース・セット206を介して持続的ストレージ210へ全体としてまたは一部としてロードされてもよい(またはされなくてもよい)。I/Oインターフェース・セット206も、ディスプレイ212とのデータ通信で接続する。
【0028】
ディスプレイ212は、ユーザにデータを表示する機構を与え、例えば、コンピュータ・モニタ、またはスマート・フォン・ディスプレイ画面であり得る。
【0029】
本明細書中で説明されるプログラムは、発明の特定の実施形態において、プログラムを実施するアプリケーションに基づいて特定される。しかしながら、本明細書において、任意の特定のプログラム命名法は、単に便宜上の目的で使用され、したがって、本発明は、そのような命名法によって特定されるまたは示唆されるあるいはその組合せの任意の特定のアプリケーションでのみ使用することに限定されるべきでないことを理解されたい。
【0030】
本発明の様々な実施形態の説明は、例示を目的として示されており、包括的である、または開示された実施形態に限定されることが意図されるものではない。多くの修正および変形は、記載された実施形態の範囲から逸脱することなく、当業者に明らかであろう。本明細書中で使用される専門語は、実施形態の原理、実際の用途、または市場に見られる技術に対する技術的改善を最もよく説明するように、あるいは当業者が本明細書中に開示された実施形態を理解することを可能にするように選ばれたものである。
II.例示的実施形態
【0031】
図2は、本発明による方法を示すフローチャート250を示す。
図3は、フローチャート250の方法動作の少なくともいくつかを実行する電力管理プログラム300を示す。次に、この方法および関連したソフトウェアは、
図2(方法動作ブロックについて)および
図3(ソフトウェア・ブロックについて)を広範に参照して、以下の段落にわたって説明される。
【0032】
電力管理プログラム300のトークン・プール420が、集積回路チップの複数の周波数領域を進む場合に、動作S252において、処理が始まる。いくつかの実施形態では、集積回路チップは、中央処理装置(CPU)であり、各周波数領域、例えば、第1の周波数領域306および第2の周波数領域312は、CPUのコアである。周波数領域は、リング・トポロジで構成される。トークン・プール420は、無期限にリングを回って進み、各周波数領域と交信する。トークン・プール420と周波数領域との間の各交信において、限定するものではないが、(i)トークン・プール420が周波数領域からトークンを受信すること、(ii)トークン・プール420が周波数領域にトークンを与えること、(iii)トークン・プール420が、「欠乏」フラグを周波数領域から受信し、これは、周波数領域がより多くのトークンを必要としていることを知らせることを含む様々なイベントが行われ得る。一部の交信では、トークンも「欠乏」フラグも、トークン・プール420と周波数領域との間でパスされない。
【0033】
トークン・プール420がリングを進むとき、トークンは、過剰なトークンを有する周波数領域から離れてより多くのトークンを必要とする周波数領域へ移動する傾向がある。トークンは、トークンを所有している周波数領域が使用することができる電力または動作周波数の増分を表す。CPUに割り当てられたトークンの総数は、CPUが消費し得る総電力を表し、したがって、CPUの物理的冷却能力(およびしたがって、温度制限)を超えないようにCPUを電力バジェット内に維持する。
【0034】
CPUについてトークンの総数によって制約を受けるので、電力管理プログラム300は、周波数領域の相対作業負荷に基づいて周波数領域の間でトークンを分散させる。したがって、高負荷の周波数領域は、より多くのトークンを所有する傾向があり、したがって、より迅速に作業負荷を実行するようにより高い周波数で動作(より多くの電力を消費)し得る。軽負荷の周波数領域についてはその逆である。
【0035】
処理は、動作S255に進み、電力管理プログラム300のトークン・プール420は、電力管理プログラム300の第1の周波数領域306の第1の制御モジュール308と交信する。交信に関連して、トークン・プール420は、第1の制御モジュール308から欠乏フラグ(starvation flag)318を受信する。欠乏フラグ318は、時として、本明細書中で、「欠乏トークン(starvation token)」、「電力要求」、「電力許容量要求」などと呼ばれる。いくつかの実施形態では、欠乏フラグ318は、第1の制御モジュール308によって要求される電力許容量の大きさを示す情報を含む。欠乏フラグ318は、第1の制御モジュール308は、現在の作業負荷により、現在の作業負荷(またはその積み残し)をより迅速に処理するように、より多くの電力を消費する許可を要求することを示す。いくつかの実施形態では、高作業負荷を実行しない制御モジュールは、欠乏フラグがない場合でも、過剰なトークンをトークン・プールへ自発的に寄贈する。欠乏フラグは、「利他的な」(作業負荷要求に基づく公平な分散)原理の下で動作する従来のシステムに追加される新しい特徴である。欠乏フラグは、関連した制御ユニットが、動作の実行を開始するために追加のトークンを緊急に必要とすることを示すことができる。
【0036】
トークン・プール420は、第1の制御モジュール308および第2の制御モジュール314と交互に交信する。いくつかの実施形態は、多くの周波数領域、および多くのそれぞれ対応する制御ユニットを有する。どのくらい多くの周波数領域(および対応する制御ユニット)が一実施形態に存在するのかにかかわらず、周波数領域は、リング・トポロジの中に構成される。トークン・プール420は、リング・トポロジを回って順に多くの制御ユニットと交信し、無限に制御ユニットと交信を行う。
【0037】
図2および
図3に示された実施形態は、2つの周波数領域(第1の周波数領域306、および第2の周波数領域312)と、2つのそれぞれ対応する電力制御モジュール(第1の制御モジュール308、および第2の制御モジュール314)とを有する。トークン・プール420は、第1の制御モジュール308、第2の制御モジュール314と交信し、このシーケンスを無限に繰り返し、対応する周波数領域(306および312)によって処理されている現在の相対作業負荷に従って2つの制御ユニットによって相対的電力使用量をシフトする。この手法は、(i)冷却負荷が冷却システムの能力を超えないように、(ii)デバイス・ジャンクション温度が設計限界を超えないように、(iii)デバイス温度が超えていないように、および/または(iv)信頼性要求が負の影響を受けないようになど、2つの周波数領域の総電力使用量を所定の制限内に保つ。
【0038】
処理は、動作S260に進み、トークン・プール420は、電力管理プログラム300の第2の周波数領域312の第2の制御モジュール314と交信する。交信に関連して、第2の制御モジュール314は、利用できる余剰電力許容量(surplus power allowance)を有し、トークン・プール420中に存在する欠乏フラグ318を検出すると、余剰電力許容量320をトークン・プール420へ放棄する。いくつかの実施形態では、余剰電力許容量320は、欠乏フラグ318によって要求される大きさまで電力許容量の大きさを有する。
【0039】
余剰電力許容量320を放棄することによって、第2の周波数モジュール316は、第2の周波数領域312の動作周波数を減少させる。動作周波数の減少量は、余剰電力許容量320に基づく。動作周波数の減少は、第2の周波数領域312がより遅い速度で動作し、より少ない電力を消費し、一方、割り当てられた作業負荷をよりゆっくり実行することを意味する。第2の周波数領域に割り当てられた現在の作業負荷は、周波数領域312がしばらくの間アイドル状態であるようになっているので、これは、余剰電力許容量320を放棄する望ましい結果である。したがって、周波数領域312は、より少ないアイドル時間(またはアイドル時間無し)でタイムリーに作業負荷をなお処理することができる。
【0040】
処理は、動作S265に進み、トークン・プール420は、第1の制御モジュール308と再び交信する。交信に関連して、トークン・プール420は、余剰電力許容量320を第1の制御モジュール308へ伝達する。
【0041】
処理は、動作S270に進み、電力管理プログラム300の第1の周波数領域306の第1の周波数モジュール310は、第1の周波数領域306の動作周波数を増加させる。動作周波数の増加量は、余剰電力許容量320に基づく。動作周波数の増加は、第1の周波数領域306が、より速い速度で動作し、より多い電力を消費し、割り当てられた作業負荷をより迅速に実行することを意味する。
【0042】
いくつかの実施形態では、第1の周波数領域306および第2の周波数領域312は、(限定するものではない)中央処理装置(CPU)または他の集積回路チップ(図示せず)など、共通のデバイス上に物理的に統合される。第1の周波数領域306によって使用される電力の増加は、第2の周波数領域312によって使用される電力の減少によってオフセットされる。したがって、周波数領域と共通のデバイスの冷却負荷との両方によってひとまとめに使用される電力は、かなり大きな変更なしでそのままである。
III.さらなるコメントまたは実施形態あるいはその両方
【0043】
電子モジュールは、単一の集積回路チップ、例えば(限定するものではないが)中央処理装置(CPU)、共通パッケージに取り付けられた集積回路チップのセット、多くの部品を備えるコンピュータ・マザーボードなどの回路カード、スマートフォンにおける回路、シングル・ボード・コンピュータ、メモリ・カード、ストレージ・コントローラ、および動作可能に結合されるまたは一斉に動作するあるいはその両方の電子デバイスの識別可能なセットを有する任意の電子デバイスを含み得る。本明細書中では簡単にするために、用語「CPU」および「チップ」は、同義であり、少なくとも上述したデバイスを包含するものとして理解されたい。
【0044】
本発明のいくつかの実施形態は、(i)チップに割り当てられた電力トークンの総数は、チップについての電力バジェットに少なくとも一部基づいて、(ii)チップ上で周波数領域の間でトークン(および対応する電力使用量許容量)をパスすることにより、電力バジェット制限内でチップを維持しつつそれぞれの周波数領域についての電力要求をシフトする、(iii)分散型周波数制御アルゴリズムは、システムの電力バジェット制限が遵守されることを確実にする、(iv)電力バジェット制約によるオン・チップ・コントロール(OCC)の抑えを最小にする、(v)より長い期間にわたって作業負荷最適化周波数(WOF)範囲を維持する、および/または(vi)周波数領域にわたって作業負荷スループットを最大にする、という特徴、特性、または利点、あるいはその組合せのうちの1つまたは複数を含み得る。
【0045】
本発明のいくつかの実施形態では、電力管理システムは、制御ユニットにそれぞれ対応する周波数領域の間で電力許容量(電力トークン)を効率的にシフトするために、複数の分散制御ユニットを用いてラウンド・ロビン方式でトークン・パッシング・ストラテジを実行するトークン・プールを備える。電力管理システムは、(i)トークン・プール内の一定数の電力トークン、および(ii)制御ユニットがより長い欠乏の場合に公平なポリシーを要求することができる各制御ユニットに関連した(よって「所有された」)「欠乏フラグ」を初期化する。このシステムは、構成および制御に必要なメタデータを最小にし、したがって、複雑さを増加させない任意のサイズのシステムへスケール変更することができる。
【0046】
いくつかの実施形態では、各制御ユニット(CU)は、CUが利用することができるトークンの個数だけを保持する。「有用な」トークンのこの個数は、CU利用および命令/秒(IPS)値に基づいて決定される。利用おとびIPS値の組合せは、CUへトークンを与えることが有用であるかを決定する。CUが過剰なトークン(CUが使用していないトークン)を有する場合、それは、トークン・プールへ過剰なトークンを寄贈することができ、CUが不要なトークンを保持しないことを確実にする。CUが閾値を上回る時間の長さにわたって欠乏状態にある場合、CUは、欠乏フラグを立てることができ、その後、CUは、平均を上回る個数のトークンを保持しない。欠乏フラグは、「欠乏している」CUが十分なトークンを得ると除去される(これは、制御ユニットが「公平」なポリシーにおける動作に切り換えるので保証される)。
【0047】
いくつかの実施形態では、周波数領域は、対応する制御ユニットによって保持されるトークンの個数に基づいて最大動作周波数(したがって、消費電力)を設定することができる。周波数領域は、最大動作周波数で常に動作する必要はないが、(i)最大周波数、(ii)低周波数、または(iii)「最大周波数」を超えることができる作業負荷最適化周波数(ターボWOF)で動作することができる。電力トークンをトークン・プールへ引き渡す制御ユニットは、引き渡されるトークンの個数に基づいて対応する周波数領域の最大動作周波数を下げる。
【0048】
いくつかの実施形態では、電力トークンは、電子的、機械的、電気機械的、化学的、油圧的等の動作が単独であろうが、任意の組合せで一緒であろうが、任意の電力消費デバイスによる電力使用量許容量の増分を表す。電力使用量は、動作速度、トルク、力、周波数、振動振幅、(電磁気的または音響的放射などの)強度、インピーダンス、流量、温度、デューティ・サイクル、圧力等などの電気的特性、化学的特性、または物理的特性、あるいはその組合せを変調することによって制御することができる。電子デバイスの周波数領域に関して本明細書中で開示される実施形態は、この段落で上述したものなどの任意の他の実施形態を除外するように解釈されるべきではない。
【0049】
本発明のいくつかの実施形態は、所与の周波数領域のエネルギー要求を満たすのに必要な電力トークンの個数を決定するのに必要かつ十分であるパラメータ(例えば、命令/秒(IPS)およびタスク使用率)を特定する。電力トークンは、電力の増分を使用するための許容量を表す。
【0050】
制御ユニットは、制御ユニットによって保持される電力トークンの個数によって表されるものまで電力量を使用する権限を関連した周波数領域に与えることができる。いくつかの実施形態は、周波数領域にデフォルト(ベース)電力量を割り当てる。制御ユニットによって保持される電力トークンは、周波数領域が、制御ユニットが保持する電力トークンの個数によって表されるものまで増分だけベースよりも上に電力使用量を増加させることを許可する。いくつかの実施形態は、制御ユニットにデフォルトの個数の電力トークンを割り当て、周波数領域にデフォルトの電力量を割り当てる。周波数領域が(周波数領域が電力余剰を有することを意味する)デフォルトの電力量未満で使用する場合、制御ユニットは、制御ユニットによって保持される電力トークンの一部または全部をトークン・プールに渡すことができる。
【0051】
いくつかの実施形態では、所与の周波数領域は、周波数領域の電力要求が電力許容量を超えるときに、電力不足の状態にある。この場合には、所与の周波数領域に割り当てられた作業負荷は、タイムリーに処理することができない。それに応じて、トークン・プールが(所与の周波数領域に関連した)所与の制御ユニットと交信するとき、例えば、制御ユニットがある時間閾値にわたって周波数不足に直面する場合、制御ユニットは、トークン・プールへ欠乏フラグを渡す。続いて、トークン・プールがリングを回って移動するときにトークン・プールが他の制御ユニットと交信するとき、他の制御ユニットは、(i)欠乏フラグを検出し、(ii)それらが消費することができる電力トークンの上限にそれら自体を制限し、および(iii)過剰な(余剰)電力トークンをトークン・プールへ放棄する。トークン・プールが再び所与の制御ユニットに回って来るとき、制御ユニットは、余剰電力トークンをピック・アップし、(電力不足を満足させるのに十分な電力トークンが取得されたと仮定すると)トークン・プールから要求トークンを除去する。次いで、制御ユニットは、所与の周波数領域について電力使用量許容量を増加させる。それに応じて、周波数領域は、割り当てられた作業負荷をより迅速に処理するために、増加した周波数で動作する(およびしたがって、より多くの電力を消費する)。したがって、電力不足は、トークン・プールがリングを一度回って進むのにかかる時間内に部分的にまたは完全になくされる。
【0052】
図4Aは、制御ユニット401と、制御ユニット402と、制御ユニット403と、トークン・プール420とを含む本発明のいくつかの実施形態によるリング・トポロジの概略図である。トークン・プール420は、リング・トポロジを通って繰り返し(反復的に)循環し、各サイクル中に全ての制御ユニットと交信する。各制御ユニットは、周波数領域ごとに許される電力使用量に関して周波数領域(図示せず)に関連し、周波数領域(図示せず)を管理し、または調節する、あるいはその組合せである。各制御ユニットは、それぞれ対応する欠乏フラグ、およびトークンのカウント(制御ユニットによって保持されるトークンの個数)に関連している。リング・トポロジは、任意の個数の制御ユニットおよびそれぞれ対応する周波数領域を備え得る。
【0053】
いくつかの実施形態では、トークン・プール420が制御ユニットと交信する順序は動的であり、リング・トポロジ内の制御ユニットの順序付けを有効に変更する。少なくとも1つの実施形態では、制御ユニットの順序付けの変更は、より多くのトークンについての特定の制御ユニットの優先度の高い必要性によってトリガされる。例示的シナリオでは、トークン・プール420は、優先度の高い制御ユニットがより多くの電力トークンを必要とすること示し信号を受信する。それに応じて、トークン・プール420は、以下の通り、優先度の高いミッションをサービスする、すなわち、(i)通常のリング・シーケンスから抜け出し、(ii)1つまたは複数のドナー制御ユニットから余剰トークンをピック・アップし、(iii)優先度の高い制御ユニットへ余剰トークンを送り届け、および/または(iv)優先度の高いミッションをサービスするためにそれが抜け出した通常のリング・シーケンスにおけるその場所で通常の処理を回復する。
【0054】
別の例示的実施形態では、優先度の高いタスクを処理しており、より多くのトークンを必要とする制御ユニットを考える。ドナーが存在する場合、トークン・プールがドナーに到達すると、ドナーは全ての過剰なトークンをトークン・プールに寄贈することが保証される。トークン・プールが、優先度の高いタスクを有する制御ユニットに再び回って来ると、トークン・プールは、制御ユニットへ過剰なトークンを伝達する。いくつかの実施形態では、優先度の高いタスクは、(i)周波数領域によって処理される命令/秒(IPS)、および(ii)周波数領域の使用率に基づいて特定される。制御ユニットは、IPSおよび使用率のパラメータに局所的に基づいて必要な個数のトークンを計算する。
【0055】
いくつかの実施形態では、いくつかの制御ユニットは、(重要性に基づく)所与の相対重み付けである。トークン・プールは、重み付けに基づいてある周波数で制御ユニットを交信する。例えば、5つの制御ユニット(C1、C2、C3、C4、およびC5)を備えるリング・トポロジを考えると、C1は「2」の重み付けを与えられ、C2からC5は「1」の重み付けをそれぞれ与えられる。トークン・プールは、C1、C2、C3、C1、C4、C5、C1、C2...等のシーケンスで制御ユニットと交信し、互いに2倍の頻度でC1と交信する。
【0056】
いくつかの実施形態では、制御ユニットは、周波数領域の間で電力分散および電力割り当てに関して2つ以上の周波数領域を管理する。いくつかの実施形態では、単一の制御ユニットは、集積回路チップ上で複数の周波数領域を管理する。いくつかの実施形態では、単一の制御ユニットは、1つまたは複数の集積回路チップの間で分散される複数の周波数領域を管理する。
【0057】
いくつかの実施形態では、2つ以上の制御ユニットが、単一の周波数領域を管理する。例えば、冗長スキームは、周波数領域を担当する3つの制御ユニットを設定する。制御ユニットは、アクションをとる(例えば、トークン・プールへトークンを寄贈するまたはトークン・プールからトークンを受け入れる)ために少なくとも2つの制御ユニット間の同意を必要とする投票システム上で動作する。このようにして、単一の制御ユニットの故障は、周波数領域に関して電力管理システムの動作に影響を及ぼさない。
【0058】
本発明のいくつかの実施形態では、制御ユニットとの交信ごとに、トークン・プール420は、(限定するものではない)以下のアクション、すなわち、(i)制御ユニットへトークンを渡す、(ii)制御ユニットからトークンを受信する、(iii)制御ユニットから欠乏フラグを受信する、(iv)制御ユニットへ電力要求トークンを戻す、(v)制御ユニットと(一方向にまたは双方向に)ステータス情報を交換する、および/または(vi)アクションをとらないのうちの1つまたは複数を実行することができる。
【0059】
図4Bは、本発明のいくつかの実施形態によるトークン・プールから電力トークンを受け入れる制御ユニットを示す概略図である。詳細には、トークン・プール420は、最初に、100個の電力トークンを有し、制御ユニット401は、どれも有さない。トークン・プール420は、制御ユニット401へ100個の電力トークンのうちの10個を伝達する。伝達後、トークン・プール420は90個のトークンを有し、制御ユニット401は10個を有する。したがって、制御ユニット401は、対応する周波数領域(図示せず)が10個のトークンによって表される電力を超えない増分だけ消費電力を増加させることを可能にする。
【0060】
図4Cは、本発明のいくつかの実施形態による電力トークンをトークン・プールに寄贈する制御ユニットを示す概略図である。詳細には、最初に、トークン・プール420は、90個の電力トークンを有し、制御ユニット402は、50個を有する。制御ユニット402は、トークン・プール420に20個のトークンを寄贈する(余剰電力トークンを表しても表さなくてもよい)。伝達後、トークン・プール420は、110個(90+20=110)のトークンを有し、制御ユニット402は、30個のトークン(50-20=30)を有する。したがって、制御ユニット402は、寄贈される20個のトークンによって表される増分だけ対応する周波数領域(図示せず)の電力使用量制限を減少させる。CUがトークン・プールにトークンを寄贈する場合、トークンは、(CUが必要としないまたは利用できないあるいはその両方の)余剰トークン、または欠乏フラグの存在により寄贈される平均的な個数のトークンを超えるトークンであり得ることに留意されたい。
【0061】
図4Dは、本発明のいくつかの実施形態によるトークン・プールへの制御ユニットによる電力要求トークンの配置を示す概略図である。詳細には、制御ユニット403は、電力不足であり、50個の電力トークンを求める欠乏フラグ405をトークン・プール420へ置く。トークン・プール420は、リング・トポロジを回り続け、今度は、他の制御ユニットと一つずつ交信する。
【0062】
いくつかの実施形態では、トークン・プール420は、制御ユニット・アクティビティに基づいて制御ユニットと交信する。すなわち、トークン・プール420は、制御ユニットが割り込み信号を発するまでアイドル状態を想定する。それに応じて、トークン・プール420は、シグナリング制御ユニットと交信する。トークン・プール420が、制御ユニットが信号を発した理由(例えば、トークン・プール420へ過剰な電力トークンを寄贈するため)を決定すると、トークン・プール420は、(例えば、過剰な電力トークンを受信し、寄贈された電力トークンを「困窮」の制御ユニットに送り届けるために)適切なアクションをとる。もはやアクションが求められなくなると、トークン・プール420は、アイドル状態に再び入る。
【0063】
いくつかの実施形態では、欠乏フラグは、「充填されるべき残りのもの(remaining to be filled)」の数(RTBF数)と呼ばれる関連した制御ユニットによって要求されるいくつかのトークンを特定する。トークン・プールは、電力トークンのRTBF数まで集まり、要求している制御ユニットへ送り届けるためにそれらを取っておき、欠乏フラグを満足する際に要求している制御ユニットへ電力トークンを送り届ける。次いで、トークン・プールは、要求している制御ユニットへ欠乏フラグを戻す(または他の方法で欠乏フラグを取り消す)。
【0064】
いくつかの実施形態では、トークン・プールは、リングを回る第1のトリップにおいて要求された個数の電力トークンを集めることができない。トークン・プールは、リングを回り続け、トークンを集め、トークンが他の制御ユニットによって利用可能にされるように取っておき、取っておいた電力トークンを要求している制御ユニットへ伝達する。取っておいた電力トークンを伝達すると、トークン・プールは、要求している制御ユニットへ伝達される電力トークンの個数だけRTBF数を減らす。RTBF数がゼロに到達すると、要求が実行され、トークン・プールは、要求している制御ユニットへ電力要求トークンを戻すように伝達する。
【0065】
いくつかの実施形態では、トークン・プールは、複数のそれぞれ対応する要求している制御ユニットから複数の電力要求トークンを引き受ける。トークン・プールが余剰トークンを集めるとき、トークン・プールは、全ての要求が実行されてしまうまで、複数の要求している制御ユニットの間で集められた余剰トークンを取っておくために任意の適切な方法を使用することができる。いくつかの実施形態では、余剰トークンは、優先度のより高い制御ユニットへ優先的に割り当てられる。いくつかの実施形態では、余剰トークンは、複数の制御ユニットによって要求される個数に比例して(および/またはそれぞれのRTBF数に基づいて)割り当てられる。
【0066】
図4Eは、本発明のいくつかの実施形態による、欠乏フラグ405に応答しての電力トークンの放棄を示す概略図である。
図4Dを参照して上述したように、制御ユニット403は、トークン・プール420上に欠乏フラグ405を置いた。続いて、トークン・プール420は、リング・トポロジを回って移動し、次に制御ユニット404と交信する。制御ユニット404は、50個の余剰電力トークンを有し、トークン・プール420中に存在する欠乏フラグ405を検出することに応答して、トークン・プール420へ50個の余剰トークンを伝達する。トークン・プール420は、欠乏フラグ405の実践において制御ユニット403へ送り届けるために50個のトークンを取っておく。
【0067】
いくつかの実施形態では、トークン・プールが、所定の時間間隔内に電力不足状態(「困窮の」制御ユニット)で制御ユニットによって要求される全てのトークンを取得することができない場合、制御ユニットは、欠乏フラグを立てる。それに応じて、電力管理システムは、電力不足を緩和させるために「公平」なトークン分散に基づいてトークン・レベリング・プロセス(token leveling process)を開始する。緩和プロセスでは、困窮の制御ユニットによってトークン・プールに置かれた電力要求トークンは、全ての制御ユニットにわたって「公平なトークン分散」をもたらすために、(余剰であろうとなかろうと)ある量のトークンを放棄するように他の制御ユニットに知らせる。困窮の制御ユニットが、要求トークンをトークン・プールの中に置くと、他の制御ユニット(寄与する制御ユニット)は、トークン・プールへ過剰なトークンを放棄する。一部(または全部)の他の制御ユニットが過剰なトークンを有さない場合、他の制御ユニットは、それでも一部のトークンを引き渡す。トークン・プールは、寄与する制御ユニットによって引き渡されるトークンを困窮の制御ユニットへ伝達し、それによって寄与する制御ユニットから困窮の制御ユニットへ一部の電力使用量を有効にシフトする。これは、制御ユニットにひとまとめに割り振られた総電力以内のままでありつつ、全ての制御ユニットの間で少なくともある程度まで電力使用量を平らにする。
【0068】
図4Fは、制御ユニット403へトークン・プール420を戻すと欠乏フラグ405の実行を示す概略図である。
図4Eを参照して上述したように、制御ユニット404は、欠乏フラグ405に応答して50個のトークンを放棄した。トークン・プール420が制御ユニット403へ回って戻ると、トークン・プール420は、制御ユニット404によって寄与を受ける欠乏フラグ405および50個の余剰トークンを制御ユニット403へ伝達する。
【0069】
制御ユニット403は、制御ユニット403が現在所有している50個の追加の電力トークンに基づく量だけ動作周波数を増加させる権限を関連した周波数領域に与える。続いて、周波数領域は、より多くの電力を消費することを犠牲にして作業負荷をより迅速に処理するが、リング・トポロジの全ての周波数領域パーティシパント(frequency domain participant)によって使用される総電力は、総計で、確立された電力バジェット内のままである。
【0070】
図5は、本発明のいくつかの実施形態によるシステムの動作を示す概略図である。トークン・パッシング・モデルは、ハードウェア・スタックまたはソフトウェア・スタックなどのコンピューティング・スタックの様々な層に適用され得る。ハードウェア・スタックにおいて、制御ユニットは、例えば、集積チップ上のディスクリート・モジュールまたは物理的回路であり得る。ハードウェア・レベルで、いくつかの実施形態では、各オン・チップ・コントロール(OCC)は、制御ユニットを表し、共有メモリは、トークン・パッシング機構を表す。
【0071】
対照的に、ソフトウェア・スタックのユーザ・スペース層内に実装された制御ユニットは、共有メモリベースの手法を使用してトークンを渡すオープン・マルチ処理アプリケーション・プログラミング・インターフェース(open multi-processing application programming interface)(MP-API)にスレッドを備える。さらにユーザ・スペースに関して、いくつかの実施形態は、
図5に示されるように、MP-APIスレッド(例えば、MP-APIスレッド501、MP-APIスレッド502、およびMP-APIスレッド503...MP-APIスレッドN)を制御ユニットとして扱い、共有メモリを使用して、隣接するスレッド上へトークン・プールを渡す。また、ソフトウェアの実施では、ユーザ・スペース・アプリケーションとカーネル・スペース・アプリケーションの両方は、トークン・パッシング・モデルを受け継ぐことができる。
【0072】
いくつかの実施形態は、制御ユニットとしてMP-APIプロセスを使用し、メッセージ・パッシング・インターフェース(MPI)を使用することによってなるシステムの間でトークンを渡す。
【0073】
いくつかの実施形態では、オペレーティング・システムのカーネル層内のスケジューリング・ポリシーは、共有メモリを使用してトークンを渡す制御ユニットを表す。
【0074】
いくつかの実施形態では、MP-APIプロセスは、制御ユニットを含み、トークン・プールは、メッセージ・パッシング・インターフェースの使用みによって伝えられる。
【0075】
本発明のいくつかの実施形態は、集積回路チップの制御ユニット以外のデバイスを含む。例えば、本明細書中で説明される技術は、サーバのラック中のサーバに適用されてもよく、ラック中のサーバの間で分散されるトークンは、各サーバに許される電力使用量を調節する。高負荷のサーバは、ラック中のあまり高くない負荷のサーバより多くのトークンを有することができる(およびしたがって、より多くの電力を放散するが許される)。この方法によって、ラック中のサーバは、全体として、総計で、ラックについての電力バジェット制限を超えず、しかも、その中のサーバによって実行される作業負荷を最大にする。
【0076】
同じ技術は、ネスト方式でデータ・センタ全体に適用することができ、それによって(i)第1のレベルのトークンは、データ・センタ内のラック中のサーバの集積回路チップの部分の間で電力分散を調節する、(ii)第2のレベルのトークンは、サーバの構成要素(例えば、集積回路チップ、回路モジュール、回路カードおよび回路基板、ストレージ・デバイス、電源、ネットワーク・アダプタ、メモリ、ストレージ等)の間の電力分散を調節する、(iii)第3のレベルのトークンは、ラック中の複数のサーバの間の電力分散を調節する、または(iv)第4のレベルのトークンは、ラックのグループの間の電力分散を調節する、あるいはその組合せである。
【0077】
本発明のいくつかの実施形態は、リング・トポロジにおけるトークン・パッシングを使用して、例えば、輸送システム、自動車、通信システム、ネットワーキング・システム、製造システム、発電システム、船舶、航空機、宇宙船等などの他のタイプの電力消費デバイスの中で、またはそれらの間で、あるいはその組合せで電力分散を調節する。
【0078】
図6Aは、本発明の少なくとも1つの実施形態によるトークン・プールを初期化する手法を示す擬似コード・リストである。
【0079】
図6Bは、本発明の少なくとも1つの実施形態による100万命令/秒(MIPS)で計算する手法を示す擬似コード・リストである。
【0080】
図6Cは、本発明の少なくとも1つの実施形態による追加のトークンを要求する手法を示す擬似コード・リストである。
【0081】
図6Dは、本発明の少なくとも1つの実施形態による周波数領域(FD)に対応するデーモン・スレッドについての手法を示す擬似コード・リストである。
【0082】
本発明のいくつかの実施形態は、(i)いくつかの中央処理装置(CPU)が、上回るといくつかの中央処理装置(CPU)が動作することができなくなる、明確に定められた電力バジェットを有する、(ii)オン・チップ・コントローラ(OCC)は、CPUが電力バジェットによって課される制限を超えるのを防ぐようにCPU周波数を抑える、(iii)いくつかのCPU周波数調節装置(frequency governor)は、電力バジェットを考慮しないが、代わりに、CPUが変化した周波数から利益を受けるかについて、フィードバックなしで、コア使用率に従ってコア動作周波数を変化させる、(iv)分散手法は、周波数領域にわたって不定の電力欠乏をもたらし得る、(v)リソース欠乏の問題を考慮に入れない、および/あるいは(vi)他のリソースが、十分に利用されていないまたはアイドルである間に、いくつかのリソースを過剰に利用することができる、といった現在の最新技術に関する事実、潜在的問題、または潜在的改善エリア、あるいはその組合せの1つまたは複数を認識することができる。
【0083】
本発明の少なくとも1つの実施形態は、(i)総システム電力バジェットを超えないように様々なCPUコアのそれぞれの動作周波数を設定する効率的なスキームを実施する、(ii)コアの間で電力を選択的に分散させることによってセンタライズド・ボトルネック(centralized bottleneck)を避ける、(iii)システムの他の部分を欠乏させることなく電力を最も必要としているシステムの部分へ電力/エネルギーを向け直す、(iv)システム電力バジェットをコントロール下に保ちつつ、CPUコアのサブセットが定格周波数よりも高くで動作することを可能にする、(v)周波数領域の間で分散トークン・パッシング機構を使用して、動作条件およびその変化に従って実現可能な周波数を決定する、(vi)チップについての電力バジェットに基づいて、回路チップ(例えば、CPUチップ)についてのいくつかのトークンを割り当てる、(vii)割り振りの制限内でチップの総電力使用量を保ちつつ、チップの周波数領域の間でトークン(したがって、電力使用量許容量)をシフトする、(viii)システムの電力バジェット制限が遵守されることを確実にするために分散型周波数制御アルゴリズムを実施する、(ix)電力バジェット制約により抑えるオン・チップ・コントローラ(OCC)を最小にする、(x)より長い期間にわたって作業負荷最適化周波数(WOF)範囲を維持する、(xi)分散手法を用いて知られている問題である周波数領域にわたる無期限の電力欠乏を避ける、ならびに/または(xii)実施するために最小のメタデータを必要とし、したがって、メッセージの複雑さを大きく増大させることなく任意のサイズのシステムへスケール変更可能である、といった特徴、特性、または利点、あるいはその組合せのうちの1つまたは複数を含むことができる。
【0084】
チップに割り当てられたいくつかのトークンは、チップの部品の間の電力分散のために、(電力増分の観点で)細分性を少なくとも一部決定する。例えば、20トークンが割り当てられる20ワットの電力バジェットを有するチップについての粗い細分性を考慮に入れる。チップの様々な周波数領域の間の電力分散は、1.0ワット(20ワット/20トークン=1.0ワット/トークン)の増分で修正することができる。より細かい細分性の実施形態では、100トークンが、チップに割り当てられる。次いで、電力分散は、0.2ワット(20ワット/100トークン=0.2ワット/トークン)の増分で修正することができる。
【0085】
いくつかの実施形態では、チップに割り当てられたいくつかのトークンは、チップの部品の間の電力分散を調節するために、(動作周波数増分の観点で)細分性を少なくとも一部決定する。例えば、1,000個のトークンが割り当てられている3.0ギガヘルツ(3.0GHz、毎秒3,000,000,000サイクルを意味する)の公称動作周波数を有するチップについて粗い細分性を検討する。チップの様々な周波数領域の動作周波数は、3.0メガヘルツ(3.0MHz、毎秒3,000,000サイクルを意味する)(3.0GHz/1000トークン=3.0MHz/トークン)の増分で修正され得る。より細かい細分性の実施形態では、3億(300,000,000)個のトークンが、チップに割り当てられる。次いで、様々な周波数領域の動作周波数は、10Hz(3GHz/300,000,000トークン=10Hz/トークン)の増分で修正され得る。
【0086】
本発明のいくつかの実施形態では、リング・トポロジは、(i)分散された電力シフティングを効率的に実行する分散型制御ユニットを配置する、および/または(ii)リングを回って「移動する」ローテーティング・トークン・プールの形態でトークン・パッシング・ストラテジを定める。(制御ユニットおよびトークン・プールを備える)システムは、トークン・プール内の一定数のトークンで初期化される。各制御ユニットは、電力欠乏を示すために特別のトークン(欠乏フラグ)を有する。
【0087】
いくつかの実施形態は、プールからのどのくらい多くのトークン制御ユニットごとにエネルギー要求を満たすのに必要とされるのか決定するのに必要かつ十分であるパラメータ(例えば、命令/秒(IPS)、タスク使用率、デューティ・サイクル等)を特定する。
【0088】
本発明のいくつかの実施形態では、制御ユニットは他の電力の制御ユニットを無制限に欠乏させることなくトークンを取得する機構は、以下の手順、すなわち、(i)制御ユニットは、利用できる個数のトークンに基づいて,制御ユニットのエネルギー要求の1つ(または複数)が満たされないときに、「電力欠乏」の状態にあり、それに応じて、制御ユニットは、特別の「電力要求トークン」をトークン・プールの中に落とし、(ii)トークン・プールがリングを回って進み、他の制御ユニットと交信するとき、他の制御ユニットは、電力要求トークンを検出し、(現在の電力使用量に基づいて)それらが消費することができるトークンを越える過剰なトークンをプールに戻すように放棄することによって応答し、(iii)最終的に、トークン・プールは、「電力欠乏」状態の制御ユニットに戻り、過剰なトークンを制御ユニットへ伝達し、したがって、リングを回る単一のトリップ内で「電力欠乏」を治し、または少なくとも緩和し、および/あるいは(iv)もはや電力欠乏状態にない制御ユニットは、トークン・プールからその特別の電力要求トークンを除去することを含む。
【0089】
本発明のいくつかの実施形態では、(例えば、周波数領域レベルで)ローカルな判断を介して(例えば、複数の周波数領域を有するチップ全体に関して)グローバルなエネルギー制約を実現するストラテジは、1)電力バジェットを保つこと、および2)次に説明するように、時としてターボ周波数、または作業負荷最適化周波数と呼ばれる定格よりも高い周波数で維持することを含む。
【0090】
1)電力バジェットを保つこと:モジュール(例えば、CPU)についての電力バジェットに応じて、いくつかの実施形態は、個々の制御ユニットによって消費される電力の合計が電力バジェットを超えないように、プール中のトークンの個数を増加または減少させる。各制御ユニットによって保持されるトークンの個数は、制御ユニットによって消費される電力を制限する。言い換えれば、制御ユニットによって消費される最大許容電力は、制御ユニットによって保持されるトークンの個数の関数である。
【0091】
いくつかの実施形態では、機能は、電力制限がトークンの個数に正比例することを意味するリニアである。いくつかの実施形態は、電力使用量をより高負荷の制御ユニットの方へ不均衡に歪め、それらが作業負荷をずっと高速に処理することを可能にするようにするために、あるいはあまり高くない負荷の制御ユニットの方へ電力使用量を不均衡に歪め、そこにより多くの仕事が向けることができるようにするために、トークンと消費電力制限との間の非線形関数関係を用いる。
【0092】
2)ターボ(WOF)周波数の維持:(例えばCPU、または任意のモジュールの周波数領域の)1つまたは複数のコアがアイドルであるときに、アクティブなコアが保持するトークンの個数がデフォルトのトークンの最小個数を超える場合に、アクティブなコアは、定格よりも高い周波数を維持することができる。
【0093】
いくつかの実施形態では、動作アルゴリズムは、動作アルゴリズムが任意のシステム・インフラストラクチャ・スタックにわたって実施できるように本質的に汎用である。例えば、アルゴリズムは、ノードのクラスタにわたって容易にスケール変更することができ、またはアルゴリズムは、制御ユニットとして働くことができるいくつかのシステム・コア上で実施することができる。このアルゴリズムは、制御ユニットの間で電力欠乏の問題を有することなく(または少なくとも最小にするように)スケール変更可能である。
【0094】
本発明のいくつかの実施形態による動作アルゴリズムは、1)トークン・プールの初期化、2)有用な負荷計算、3)周波数マッピングへのトークン、または4)電力欠乏フラグ(時として本明細書中で「欠乏トークン」と呼ばれる)といった構成要素、あるいはその組合せを含む。これらの構成要素は、次に説明される。
【0095】
1)トークン・プールの初期化:システム中で利用できるトークンの総数を定める。トークンの組み合わされた値は、トークンの電力バジェット制約へマップされる。
【0096】
2)有用な負荷計算:各制御ユニットは、「周波数可変」作業負荷と「周波数不変」作業負荷との間で区別することができるシステム使用率および100万命令/秒(MIPS)値から負荷を計算する。これは、周波数不変タスクはトークンが与えられる必要がないので、制御ユニットの間でより良いトークン割り当てをもたらし、これは、代わりに、より長い期間にわたってより高い周波数を維持するために他のタスクに与えられ得る。
【0097】
3)周波数マッピングへのトークン:各制御ユニットは、対応する周波数領域によって処理することができる有用な負荷の組合せに基づいて、トークンをローテーティング・トークン・プールからそれぞれ受信し、またはトークンをローテーティング・トークン・プールへそれぞれ解放する。次いで、動作アルゴリズムは、利用できるトークンを制御ユニットによって実現可能な周波数にマップする。
【0098】
4)電力欠乏フラグ:各制御ユニットは、ある閾値に関してその現在の利用ニーズを満たすために必要なトークを得られないと、電力欠乏の状態にあると考えられる。それに応じて、そのような制御ユニットは、ローテーティング・トークン・プールに「欠乏フラグ」を置く(
図4Dを参照)。電力欠乏フラグは、全ての制御ユニットが「公平」な個数のトークンをやはり有するように、各制御ユニットに余分なトークンを解放するように命じる。これは、競合する制御ユニットの間で周波数需要(したがって、電力許容量分散)を均等にする。
【0099】
本発明のいくつかの実施形態は、(i)カーネル・スペース(例えば、オペレーティング・システム・カーネル)において実施されるとき、従来の手法と比べてより長い期間にわたってより高いターボ周波数をシステムが維持することを可能にする、(ii)より高いスループット、およびより少ない待ち時間という結果になる、(iii)システムのグローバルな電力制約に基づく、(iv)有用な作業負荷能力を計算するためにMIPSメトリックを利用する、または(v)従来の手法と比べて、システムのエネルギー消費を減少させる、あるいはその組合せといった特徴、特性、または利点、あるいはその組合せのうちの1つまたは複数を含むことができる。
【0100】
本発明のいくつかの実施形態は、集積回路チップに一定数の電力トークンを割り当てる。一定数の電力トークンは、回路チップが超えてはならない集積回路チップに割り当てられる電力バジェットに基づく。ローテーティング・トークン・プールは、周波数領域のそれぞれ対応する作業負荷要求(例えば、命令/秒、およびタスク使用率)に基づいて集積回路チップの複数の周波数領域の間に電力トークンを配分する。周波数領域の間で相対作業負荷要求をシフトするとき、ローテーティング・トークン・プールは、軽負荷の周波数領域から離し、より高負荷の周波数領域へ電力トークンをシフトする。この方法によって、(電力使用量許容量に分担を意味する)電力トークンの分担は、高負荷の周波数領域に有利に歪められる。高負荷の周波数領域は、トークン・プールから対応する個数のトークンをそれが受信するときに、作業負荷最適化周波数(WOF)で動作することができる。したがって、作業負荷をより迅速に処理することができ、一方、集積回路チップに割り当てられた電力バジェットを超えない。
【0101】
下記特許請求の範囲における全てのミーンズまたはステップ・プラス・ファンクション要素の対応する構造、材料、行為、および均等物は、具体的にクレームされた他のクレーム要素との組合せで機能を実行する任意の構造、材料、または行為を含むことが意図される。本開示の説明は、例示および説明を目的として示されてきたが、網羅的である、または開示した形態で本開示に限定されることは意図されない。多くの修正および変形が、本開示の範囲から逸脱することなく、当業者に明らかであろう。実施形態は、本開示の原理および実際の用途を最もよく説明し、考えられる特定の使用に適している様々な修正を伴う様々な実施形態について当業者が本開示を理解することを可能にするために選ばれ、説明されたものである。
IV.定義
【0102】
本発明:「本発明」という用語によって説明される主題は、出願されたときの特許請求の範囲、または特許審査後に最終的に発行され得る特許請求の範囲のいずれかによって含まれるという絶対的指示としてとらえられるべきではなく、「本発明」という用語は、本明細書中の開示が潜在的に新しいと信じられる一般的な感覚を読者が得るのを助けるために使用されるが、「本発明」という用語の使用により示されるように、この理解は、仮説的および暫定的であり、関連情報は発展するとともに、特許請求の範囲は補正される可能性があるので、展特許審査の過程で変更される。
【0103】
実施形態:上記の「本発明」の定義を参照されたい。同様の注意が、用語「実施形態」に当てはまる。
【0104】
および/または:包括的、または、例えば、A、B「および/または」Cは、AまたはBまたはCの少なくとも1つが真であり、適用可能であることを意味する。
【0105】
含む(including)/含む(include)/含む(include):別段明示的に示されない限り、「~を含むが、必ずしも~に限定されない」を意味する。
【0106】
ユーザ/利用者は、(i)単一の個人、(ii)ユーザまたは利用者として働くのに十分な知性を有する人工知能エンティティ(artificial intelligence entity)、または(iii)関連したユーザまたは利用者のグループ、あるいはその組合せを含むが、必ずしもこれらに限定されない。
【0107】
データ通信:無線通信、有線通信、ならびに無線部分および有線部分を有する通信経路を含む、現在知られているまたは将来開発される任意の種類のデータ通信方式であり、データ通信は、(i)直接データ通信、(ii)間接データ通信、および/あるいは(iii)フォーマット、パケット化ステータス、媒体、暗号化ステータス、もしくはプロトコル、あるいはその組合せがデータ通信の全過程において一定のままであるデータ通信に必ずしも限定されない。
【0108】
受信/提供/送信/入力/出力/報告:別段明示的に指定されない限り、これらの語は、(i)それらの対象と主体との間の関係に関する任意の特定の直接度(degree of directness)、および/または、(ii)それらの対象と主体の間に介在する中間の構成要素、アクション、または物事、あるいはその組合せが存在しないことを示唆するものとしてとらえられるべきでない。
【0109】
モジュール/サブ・モジュール:モジュールが、(i)単一の局所近傍にあるか、(ii)広いエリアにわたって分散されているか、(iii)ソフトウェア・コードのより大きい部分内の単一の近傍にあるか、(iv)ソフトウェア・コードの単一の部分内に位置するか、(v)単一のストレージ・デバイス、メモリ、または媒体に位置するか、(vi)機械的に接続されるか、(vii)電気的に接続されるか、および/あるいは(viii)データ通信で接続されるかに関係なく、ある種の機能を行うように動作可能に働くハードウェア、ファームウェア、またはソフトウェア、あるいはその組合せの任意のセット。
【0110】
コンピュータ:有意のデータ処理、または機械可読命令読み込み能力、あるいはその両方を有する任意のデバイスであって、デスクトップ・コンピュータ、メインフレーム・コンピュータ、ラップトップ・コンピュータ、フィールド・プログラマブル・ゲート・アレイ(FPGA)ベースのデバイス、スマート・フォン、パーソナル・デジタル・アシスタント(PDA)、身体装着式または挿入式のコンピュータ、組み込みデバイス型コンピュータ、または特定用途向け集積回路(ASIC)ベースのデバイス、あるいはその組合せを含むが、これに限定されないデバイス。