(57)【要約】【課題】【解決手段】第１の態様では、処理集積回路において電力を節約するための方法が提供される。この方法は、（１）命令、および命令に対応するデータを実行するための電力消費量を計算する４０１〜４０８ステップと、（２）こうした実行が所定の電力レベルを超えない場合には、命令を実行する４０９、４１０ステップとを含む。第２の態様では、複数の実行ユニットを使用する処理集積回路において、電力を節約するための方法が提供される。この方法は、（１）処理集積回路によって消費される総電力を、処理集積回路のパワー・バジェットと比較する３０１、３０２ステップと、（２）総電力がパワー・バジェットを超える場合は、実行が凍結されたところから、後で命令の実行を継続させるように、複数の実行ユニットのうちの１つによる命令の実行を凍結する３０４ステップとを含む。システムおよび装置として、他の多数の態様が提供される。
2005527010.tif 000002
【特許請求の範囲】
【請求項１】
処理集積回路において電力を節約する方法であって、
命令、および前記命令に対応するデータを実行するための電力消費量を計算するステップと、
こうした実行が所定の電力レベルを超えない場合は、前記命令を実行するステップとを含む方法。
【請求項２】
電力消費量を計算することが、前記命令が以前に実行されたときに消費された電力量に基づいて電力消費量を計算することを含む、請求項１に記載の方法。
【請求項３】
電力消費量を計算することが、
前記命令が以前に実行されたときに消費された電力量に基づいて予測電力を決定すること、
以前に実行された前記命令に対応するデータを決定すること、および
前記予測電力、および以前に実行された前記命令に対応する前記データに基づいて、前記命令を実行するための電力消費量を計算することを含む、請求項２に記載の方法。
【請求項４】
電力消費量を計算することが、
遷移係数を生成するために、実行される前記命令に対応する前記データを、以前に実行された前記命令に対応する前記データと比較すること、および
前記予測電力を、前記遷移係数で調節することを含む、請求項３に記載の方法。
【請求項５】
予測電力を調節することが、前記予測電力に、前記遷移係数を掛けることを含む、請求項４に記載の方法。
【請求項６】
前記計算された電力消費量および前記命令に対応するデータを格納することをさらに含む、請求項３に記載の方法。
【請求項７】
電力消費量を計算することが、前記命令の実行のシミュレーションから得られた電力量に基づいて電力消費量を計算することを含む、請求項１に記載の方法。
【請求項８】
電力消費量を計算することが、
前記命令の実行のシミュレーションから得られた電力量に基づいて予測電力を決定すること、
前記シミュレーション時に使用されるデータを決定すること、および
前記予測電力およびシミュレーション時に使用される前記データに基づいて、前記命令を実行するための消費電力を計算することを含む、請求項７に記載の方法。
【請求項９】
電力消費量を計算することが、
遷移係数を生成するために、実行される前記命令に対応する前記データを、シミュレーション時に使用される前記データと比較すること、および
前記予測電力を、前記遷移係数で調節することを含む、請求項８に記載の方法。
【請求項１０】
こうした実行が所定の電力レベルを超えない場合に、前記命令を実行することが、
前記命令およびデータを実行する実行ユニットの使用可能電力を決定すること、
前記実行ユニットの前記使用可能電力を、前記命令およびデータを実行するための前記計算された電力消費量と比較すること、および
前記実行ユニットの前記使用可能電力が、前記命令およびデータを実行するための前記計算された電力消費量より大きい場合は、前記実行ユニットで前記命令およびデータを実行することを含む、請求項１に記載の方法。
【請求項１１】
実行ユニットの前記使用可能電力を決定することが、
前記実行ユニットのパワー・バジェットを決定すること、
前記実行ユニットによって部分的に実行された命令およびデータの実行を完了するのに必要な電力量を決定すること、および
前記部分的に実行された命令およびデータの実行を完了するのに必要な電力量を、前記実行ユニットの前記パワー・バジェットから減算することによって、前記実行ユニットの前記使用可能電力を計算することを含む、請求項１０に記載の方法。
【請求項１２】
処理集積回路において電力を節約する方法であって、
命令、および前記命令に対応するデータを実行するための電力消費量を計算するステップと、
実行ユニットのパワー・バジェットを決定するステップと、
前記実行ユニットによって部分的に実行された命令およびデータの実行を完了するのに必要な電力量を決定するステップと、
前記部分的に実行された命令およびデータの実行を完了するのに必要な電力量、ならびに前記実行ユニットの前記パワー・バジェットに基づいて、前記実行ユニットの使用可能電力を計算するステップと、
前記実行ユニットの前記使用可能電力を、前記命令およびデータを実行するための前記計算された電力消費量と比較するステップと、
前記実行ユニットの前記使用可能電力が、前記命令およびデータを実行するための前記計算された電力消費量より大きい場合には、前記実行ユニットで前記命令およびデータを実行するステップとを含む方法。
【請求項１３】
複数の実行ユニットを使用する処理集積回路において、電力を節約する方法であって、
前記処理集積回路によって消費される総電力を、前記処理集積回路のパワー・バジェットと比較するステップと、
前記総電力が前記パワー・バジェットを超える場合は、実行が凍結されたところから、後で命令の実行を継続させるように、前記複数の実行ユニットのうちの１つによる命令の実行を凍結するステップとを含む方法。
【請求項１４】
前記処理集積回路によって消費される総電力を、前記処理集積回路のパワー・バジェットと比較することが、
クロック・サイクル中に、前記処理集積回路によって消費される総電力を決定すること、および
前記処理集積回路のパワー・バジェットを決定することを含む、請求項１３に記載の方法。
【請求項１５】
総電力を決定することが、
それぞれの実行ユニットから、クロック・サイクル中に、前記処理ユニットによって消費される電力に関する情報を受信すること、および
前記実行ユニットから受信した前記情報に基づいて前記総電力を決定することを含む、請求項１４に記載の方法。
【請求項１６】
前記複数の実行ユニットのうちの１つによる命令の実行を凍結することが、前記実行ユニットの一回遷移論理の少なくとも１つの遅い選択入力を非アクティブに保つことを含む、請求項１３に記載の方法。
【請求項１７】
データ処理システムの実行ユニットであって、
命令および前記命令に対応するデータを実行するための電力消費量を計算し、
こうした実行が所定の電力レベルを超えない場合には、前記実行ユニットに、前記命令を実行させるように、
適応されるローカル・パワー・コントローラを含む実行ユニット。
【請求項１８】
前記ローカル・パワー・コントローラが、
前記命令が前記実行ユニットによって以前に実行されたときに消費された電力量と、
前記命令が前記実行ユニットによって以前に実行されたときの前記命令のオペランドとに基づいて、
前記命令および前記命令に対応するデータを実行するための電力消費量を計算するように適応された第１の計算論理を含む、請求項１７に記載の実行ユニット。
【請求項１９】
前記ローカル・パワー・コントローラがさらに、
前記命令が前記実行ユニットによって以前に実行されたときに消費された電力量に関する第１の情報を格納するように適応された第１のレジスタと、
前記命令が前記実行ユニットによって以前に実行されたときの前記命令のオペランドに関する第２の情報を格納するように適応された第２のレジスタとを含み、
前記第１計算ロジックが、前記第１および第２レジスタの内容に基づいて、前記命令および前記命令に対応するデータを実行するための電力消費量を計算するように適応される、請求項１８に記載の実行ユニット。
【請求項２０】
前記ローカル・パワー・コントローラが、
前記命令の実行のシミュレーションから得られた電力量と、
シミュレーション時に使用されたオペランドと
に基づいて、前記命令と前記命令に対応するデータを実行するための電力消費量を計算するように適応された第１計算論理を含む、請求項１７に記載の実行ユニット。
【請求項２１】
前記ローカル・パワー・コントローラがさらに、前記命令およびデータを実行するために使用可能な電力を計算するように適応された第２の計算論理を含む、請求項１８に記載の実行ユニット。
【請求項２２】
前記ローカル・パワー・コントローラがさらに、
前記実行ユニットのパワー・バジェットを格納するように適応された第１のレジスタと、
以前の命令の実行を完了するのに必要な電力を格納するように適応された第２のレジスタとを含み、
前記第２の計算論理が、前記第１および第２レジスタの内容に基づいて、前記命令およびデータを実行するために使用可能な前記電力を計算するように適応される、請求項２１に記載の実行ユニット。
【請求項２３】
前記ローカル・パワー・コントローラが、
前記命令および前記命令に対応するデータを実行するための電力消費量を、前記命令およびデータを実行するために使用可能な電力と比較し、
前記命令および前記命令に対応するデータを実行するための前記電力消費量が、前記命令およびデータを実行するために使用可能な前記電力を超える場合には、前記命令およびデータの実行を凍結するように、
適応された比較回路を含む、請求項２１に記載の実行ユニット。
【請求項２４】
少なくとも１つの遅い選択入力を含む一回遷移論理をさらに含み、前記ローカル・パワー・コントローラが、前記命令および前記命令に対応するデータを実行するための前記電力消費量が、前記命令およびデータを実行するために使用可能な前記電力を超える場合には、前記少なくとも１つの遅い選択入力を非アクティブに保つように適応される、請求項２１載の実行ユニット。
【請求項２５】
複数の実行ユニットを使用する処理集積回路において電力を節約するためのグローバル・パワー・コントローラであって、
前記処理集積回路によって消費される総電力を、前記処理集積回路のパワー・バジェットと比較するように適応された比較回路と、
前記総電力が前記パワー・バジェットを超える場合は、実行が凍結されたところから、後で命令の実行を継続させるように、前記命令の実行を凍結する実行ユニットを選択するように適応された選択回路とを含む、グローバル・パワー・コントローラ。
【請求項２６】
前記複数の実行ユニットのそれぞれから、クロック・サイクル中に消費される実際の電力に関する情報を受信し、前記受信された情報に基づいて前記処理集積回路によって消費される前記総電力を計算するように適応された加算回路をさらに含む、請求項２５に記載のグローバル・パワー・コントローラ。
【請求項２７】
前記パワー・バジェットに、前記パワー・バジェットが前記総電力を超過する分の何らかの電力量を加算するように適応された加算回路をさらに含む、請求項２５に記載のグローバル・パワー・コントローラ。
【請求項２８】
前記選択回路が、前記総電力が前記パワー・バジェットより小さい場合は、実行を継続するために、以前に凍結された実行ユニットを選択するようにさらに適応される、請求項２５に記載のグローバル・パワー・コントローラ。
【請求項２９】
前記処理集積回路によって消費される総電力を、処理集積回路のパワー・バジェットと比較するように適応された比較回路と、
前記総電力が前記パワー・バジェットを超える場合は、実行が凍結されたところから、後で命令の実行を継続させるように、前記命令の実行を凍結する実行ユニットを選択するように適応された選択回路とを含むグローバル・パワー・コントローラと、
複数の実行ユニットであって、それぞれが、
前記グローバル・パワー・コントローラと通信しており、また
命令および前記命令に対応するデータを実行するための電力消費量を計算し、
前記グローバル・パワー・コントローラに、電力消費量情報を伝達し
こうした実行が所定の電力レベルを超えない、また前記グローバル・パワー・コントローラによって前記実行ユニットによる前記実行が凍結されていない場合には、前記実行ユニットに前記命令を実行させるように、
適応されたローカル・パワー・コントローラを含む実行ユニットとを含む、データ処理システム。
【請求項３０】
前記グローバル・パワー・コントローラが、命令およびデータが割り当てられた第１実行ユニットによる実行が前記第１実行ユニットのローカル・パワー・コントローラによって凍結される場合には、前記命令およびデータの実行を別の実行ユニットに再び割り当てるように適応される、請求項２９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般には、マイクロプロセッサ、マイクロコントローラ、論理回路など、データ処理を実施する集積回路に関し、より詳細には、こうした集積回路の電力消費量を削減することに関する。
【背景技術】
【０００２】
現代のマイクロプロセッサ、マイクロコントローラ、論理回路など（すなわち処理集積回路）は、ＡＣ操作時（回路が駆動され、命令またはデータあるいはその両方を処理しているときなど）に、そのパワー・バジェットの大半を消費する。使用されていない処理集積回路の部分（処理集積回路の非アクティブな部分など）の電力消費量を削減しようと試みる、多くの電力管理技術が存在するが、こうした回路のアクティブ部分のためのパワー・バジェットを維持するのは難しいままである。
【０００３】
処理集積回路のアクティブ部分の電力消費量を配分するための従来技術のほとんどは、マルチプレクサを使用して論理切替えを減らし、または制御論理によって実施される論理切替えを減らすことに依存する。たとえば、米国特許第６，０５４，８７７号は、無効データのマルチプレクサ（ＭＵＸ：multiplexer）出力遷移を回避し、こうした「無効な」ＭＵＸ出力遷移によるＡＣ電力消費量を削減することができる「一回遷移ＭＵＸ（Transition-OnceMUX）」を開示している。同特許の全体を本明細書中で参考として援用する。同様に、米国特許第６，２３７，１０１号は、現在の命令を実行するために、制御信号の値／レベルを変更する必要がない場合には、直前の命令を復号化するときに定められた値／レベルで、制御信号を維持することによって、現在の命令を復号化するときのマイクロプロセッサの消費電力量を削減するための技術を開示している。同特許の全体を本明細書中で参考として援用する。
【０００４】
ポータブル・パーソナル・コンピュータの電力消費量を制御するための別の従来技術が、米国特許第６，１６７，５２４号に開示されている。同特許の全体を本明細書中で参考として援用する。米国特許第６，１６７，５２４号は、たとえば、アクティブな実行ユニットの予想される消費電力量の値を合計して、予想される総電力消費量が、最適なバッテリ電力効率値を超えるかどうかを判断することを開示している。そうである場合は、（たとえば、電力の消費が、バッテリ／コンバータ最適効率の範囲内（within a regime）にとどまるように）アクティブな実行単位の量が制限される（第６欄４７〜６１行）。各実行ユニットの予想電力消費量値は、シミュレーションによって計算される、実行ユニット内に関連する切替え電力の平均値に基づくことができる（第５欄６０行〜第６欄３行）。
【特許文献１】米国特許第６，０５４，８７７号
【特許文献２】米国特許第６，２３７，１０１号
【特許文献３】米国特許第６，１６７，５２４号
【発明の開示】
【発明が解決しようとする課題】
【０００５】
こうしたおよび他の電力管理技術は、現在のクロック・サイクル中に、操作を受ける（operateon）実際のデータを考慮せず、かつ／または特に、命令がある実行ユニットにディスパッチされると、リアルタイムの電力バランシングを行うことができない。したがって、処理集積回路のアクティブな部分のパワー・バジェットを維持することは難しいままである。
【課題を解決するための手段】
【０００６】
本発明の第１の態様によれば、処理集積回路において電力を節約するための方法が提供される。この方法は、（１）命令、および命令に対応するデータを実行するための電力消費量を計算するステップと、（２）こうした実行が所定の電力レベルを超えない場合は、命令を実行するステップとを含む。
【０００７】
本発明の第２の態様によれば、複数の実行ユニットを使用する処理集積回路において、電力を節約するための方法が提供される。この方法は、（１）処理集積回路によって消費される総電力を、処理集積回路のパワー・バジェットと比較するステップと、（２）総電力がパワー・バジェットを超える場合は、実行が凍結されたところから、後で命令の実行を継続させるように、複数の実行ユニットのうちの１つによる命令の実行を凍結するステップとを含む。システムおよび装置として、本発明の他の多数の態様が提供される。
【０００８】
本発明の他の目的、特徴および利点は、以下の詳細な説明、添付の特許請求の範囲、および添付の図面から、より完全に明らかになろう。
【発明を実施するための最良の形態】
【０００９】
図１は、本発明に従って構成された新規なデータ処理システム１００の概略図である。データ処理システム１００は、命令ディスパッチ・ユニット１０４および複数の実行ユニット１０６ａ〜ｎに結合されたメモリ１０２を含む。命令ディスパッチ・ユニット１０４は、グローバル・パワー・コントローラ１０８を含み、それぞれの実行ユニット１０６ａ〜ｎは、ローカル・パワー・コントローラ１１０ａ〜ｎを含む。メモリ１０２、命令ディスパッチ・ユニット１０４、実行ユニット１０６ａ〜ｎ、ならびにグローバル・パワー・コントローラ１０８またはローカル・パワー・コントローラ１１０ａ〜ｎあるいはその両方は、以下で詳述するように、様々なデータ（オペランドなど）、命令または他の制御信号あるいはその両方を交換するように構成される。
【００１０】
メモリ１０２および命令ディスパッチ・ユニット１０４は、当技術分野で周知の従来のデータ処理システム・コンポーネントであり得る。グローバル・パワー・コントローラ１０８およびローカル・パワー・コントローラ１１０ａ〜ｎの例示的な実施形態について、図２〜７を参照して以下に述べる。実行ユニット１０６ａ〜ｎのうちの１つの例示的な一実施形態について、図８および９を参照して以下に述べる。
【００１１】
図２は、図１のローカル・パワー・コントローラ１１０ａの例示的な一実施形態と通信する、グローバル・パワー・コントローラ１０８の例示的な一実施形態の概略図である。ローカル・パワー・コントローラ１１０ｂ〜ｎも同じように構成され得る。
【００１２】
図２を参照すると、グローバル・パワー・コントローラ１０８が、データ処理システム１００のパワー・バジェットの合計を格納するように適応されたレジスタ２０４を含んでいる。本発明の一実施形態では、レジスタ２０４は、ランダム・アクセス・メモリ（ＲＡＭ：random access memory）などのプログラマブルなレジスタを含むが、別の従来のレジスタを使用することもできる。データ処理システム１００のパワー・バジェットの合計は、たとえば、前記で援用した米国特許第６，１６７，５２４号に記載されているようなバッテリ作動のシステムの電力効率を最大にするために必要な電力、または当技術分野で周知の他の任意の所定パワー・レベルであり得る。
【００１３】
ローカル・パワー・コントローラ１１０ａは、ＲＯＭ２０６、ＲＡＭ２０８、第１のレジスタ２１０、第２のレジスタ２１２および加算回路２１４を含む。（以下に詳述するように）ＲＯＭ２０６は、それぞれの実行可能命令について、（１）実行ユニット１０６ａ（図１）が命令を実行するのに必要な電力の平均値または他の代表値または（２）命令タイプの「典型的な」オペランドまたは他の代表的なオペランドあるいはその両方を格納するように適応される１つまたは複数のＲＯＭである。こうした平均電力および典型的なオペランドは、シミュレーションに基づく（たとえば、前記で援用した米国特許第６，１６７，５２４号に記載されているような、各実行ユニットについてのサイクル当たりの電力消費量を決定する、物理的なキャパシタンス・ベースのシミュレーション・ツールによって、実行中のアプリケーション・コードあるいは他の周知の技術の使用に基づく）ことができる。
【００１４】
ＲＡＭ２０８は、実行ユニット１０６ａによって実行される各命令について、（１）命令実行のため実行ユニット１０６ａが必要とする実際の電力または（２）命令による操作を受けたオペランドあるいはその両方を格納するように適応された１つまたは複数のＲＡＭである。第１のレジスタ２１０は、実行ユニット１０６ａのパワー・バジェットを格納するように適応され、ＲＡＭなどの任意の従来レジスタを含み得る。パワー・バジェットは、任意の従来技術を用いて決定され得る。第２のレジスタ２１２は、図３〜９を参照して以下に詳述するように、停止または「凍結」された前の命令の実行を終了するのに必要な電力を格納するように適応される。第２のレジスタ２１２も同様に、ＲＡＭなどの任意の従来のレジスタを含み得る。
【００１５】
図３は、図１および２の本発明のデータ処理システム１００のグローバル・パワー・コントローラ１０８によって実施することができる、節電のための例示的な処理３００のフローチャートである。図３を参照すると、ステップ３０１で、処理３００が開始されている。ステップ３０２で、グローバル・パワー・コントローラ１０８は、現在のクロック・サイクルで、データ処理システム１００によって消費される総電力（「Total_Chip_Power」）を計算する。Total_Chip_Powerは、現在のクロック・サイクル中に、各実行ユニット１０６ａ〜ｎによって消費される実際の電力に基づいて（たとえば、現在のクロック・サイクル中に、各実行ユニット１０６ａ〜ｎによって消費される実際の電力を合計することによって）計算される。たとえば、図４を参照して以下に述べるように、現在のクロック・サイクル中に各実行ユニット１０６ａ〜ｎによって消費される実際の電力は決定され、グローバル・パワー・コントローラ１０８に提供され得る。
【００１６】
ステップ３０３で、グローバル・パワー・コントローラ１０８が、Total_Chip_Powerが、データ処理システム１００のパワー・バジェット（「Chip_Power_Budget」）を超えるかどうかを判断する。上述したように、Chip_Power_Budgetは、たとえば図２のレジスタ２０４内に格納することができる。Total_Chip_Powerが、Chip_Power_Budgetを超える場合は、ステップ３０４で、グローバル・パワー・コントローラ１０８が、１つまたは複数の実行ユニット１０６ａ〜ｎを停止または「凍結」する（たとえば、現在のサイクル中に、Total_Chip_Powerが実際に、Chip_Power_Budgetを超えないようにする。）図４を参照して以下に述べるように、各実行ユニット１０６ａ〜ｎは、命令の実行中に、停止または「凍結」され、その後で、実行が停止された同じところから再開され得るように構成される。このようにして、凍結された命令の実行を、実行ユニットによって完了するのに必要な電力を、その後に、データ処理システム１００が予算超過でないときに消費することができる。たとえば、ステップ３０３で、Total_Chip_Powerが、Chip_Power_Budgetを超えないと判断される場合は、ステップ３０５で、グローバル・パワー・コントローラ１０８は、１つまたは複数の以前に凍結された実行ユニット１０６ａ〜ｎを再開することができる。したがって、データ処理システム１００は、動的なリアルタイム電力管理を用いることができる。
【００１７】
図４および図５は、図１および図２の本発明のデータ処理システム１００の実行ユニット１０６ａ〜ｎのローカル・パワー・コントローラ１１０ａ〜ｎによって実施することができる、電力を節約するための例示的な処理４００のフローチャートである。便宜上、処理４００について、図１および図２のローカル・パワー・コントローラ１１０ａを参照して説明する。ローカル・パワー・コントローラ１１０ｂ〜ｎのうちの１つまたは複数もまた、同様の処理を実施できることが理解されよう。
【００１８】
図４および図５を参照すると、ステップ４０１で、処理４００が開始されている。ステップ４０２で、ローカル・パワー・コントローラ１１０ａが、実行ユニット１０６ａが命令ディスパッチ・ユニット１０４から新しい命令を受け取り、その新しい命令を復号化しているか（または復号化したか）どうかを判断する。そうである場合は、処理４００は、ステップ４０３に進み、そうでない場合は、ローカル・パワー・コントローラ１１０ａは、実行ユニット１０６ａが新しい命令を受け取ったかどうかを再チェックする（ステップ４０２）。
【００１９】
ステップ４０３で、ローカル・パワー・コントローラ１１０ａが、実行ユニット１０６ａによって受信された新しい命令が以前に受信されたことがあるかどうかを（たとえば命令の演算コードすなわち「命令コード」に基づいて）判断する。そうである場合は、処理４００は、ステップ４０４に進み、そうでない場合は、処理４００は、ステップ４０５に進む。
【００２０】
ステップ４０４で、ローカル・パワー・コントローラ１１０ａは、実行ユニット１０６ａによって命令が前回実行されたときに基づいて、新しい命令を実行するのに必要な予測電力（「Predicted_Power」）を決定する。たとえば、ＲＡＭ２０８（図２）は、命令実行のため以前に必要とされた電力を格納することができる。ローカル・パワー・コントローラ１１０ａは、命令が前回実行されたときに使用されたオペランドをも決定する。Last_Operandsも同様に、ＲＡＭ２０８に格納することができる。次いで、処理４００は、ステップ４０６に進む。
【００２１】
ステップ４０３で、実行ユニット１０６ａによって受信された新しい命令が、実行ユニット１０６ａによってそれ以前に受信されていなかった場合には、ステップ４０５で、ローカル・パワー・コントローラ１１０ａが、（たとえば図２のＲＯＭ２０６に格納されている）シミュレーション・データに基づいて、Predicted_PowerおよびLast_Operandsを決定する。たとえば、Predicted_Powerは、シミュレーションからの平均電力とすることができ、Last_Operandsは、シミュレーション時に使用される典型的なオペランドであり得る。上記で援用した米国特許第６，１６７，５２４号に記載されているものなど、適切な任意のシミュレーション技術を用いることができる。次いで、処理４００は、ステップ４０６に進む。
【００２２】
ステップ４０６で、ローカル・パワー・コントローラ１１０ａが、Predicted_Powerに基づいて、新しい命令の実行に必要な実際の電力（「True_Power」）を計算する。本発明の少なくとも１つの実施形態では、以下で詳述するように、True_Powerは、Predicted_Powerに、新しい命令（「New_Operands」）およびLast_Operandsに関連する実際のオペランドに対して実施される、ＸＮＯＲまたは他のＸＯＲライクな（XOR-like）演算の結果である遷移係数（「Transition_Factor」）を掛けることによって計算される。ステップ４０７で、ローカル・パワー・コントローラ１１０ａが、次に実行ユニット１０６ａによって命令が次に実行されるときに備えて、ＲＡＭ２０８に、True_PowerおよびNew_Operandsを格納する。
【００２３】
ステップ４０８で、ローカル・パワー・コントローラ１１０ａが、現在のクロック・サイクル中に、実行ユニット１０６ａが使用できる使用可能電力（「Avail_Power」）を計算する。本発明の少なくとも１つの実施形態では、Avail_Powerは、実行ユニット１０６ａのパワー・バジェット（たとえばローカル・パワー・コントローラ１１０ａのレジスタ２１０に格納された「EX_Power_Budget」）から、グローバル・パワー・コントローラ１０８またはローカル・パワー・コントローラ１１０ａによって凍結された以前のクロック・サイクルからの命令を終了するのに必要な何らかの電力を減算したものに等しい（以下で詳述する）。
【００２４】
ステップ４０９で、ローカル・パワー・コントローラ１１０ａは、True_Power（命令実行のため実行ユニット１０６ａが必要とする電力）がAvail_Power（実行ユニット１０６ａが使用できる電力）より大きいかどうかを判断する。つまり、ローカル・パワー・コントローラ１１０ａは、新しい命令が実行された場合に、実行ユニット１０６ａがパワー・バジェット超過になるかどうかを判断する。そうでない場合は、ステップ４１０で、ローカル・パワー・コントローラ１１０ａは、実行ユニット１０６ａが命令の実行を続行できるようにするが、そうでない場合は、ステップ４１１で、ローカル・パワー・コントローラ１１０ａは、（以下で詳述するように）実行ユニット１０６ａが命令を実行できないようにする。命令の実行は、実行前でも、実行中でも停止（凍結）することができる。少なくとも１つの実施形態では、ローカル・パワー・コントローラ１１０ａは、命令の実行を完了するのに必要な電力量を（たとえば図２のレジスタ２１２内に）格納する。この格納された電力量を、実行ユニット１０６ａのAvail_Powerを次に計算するときに使用することができる（ステップ４０８）。
【００２５】
図５は、図１および２のローカル・パワー・コントローラ１１０ａの例示的な一実施形態をより詳細に示す図である。図５を参照すると、ローカル・パワー・コントローラ１１０ａが、（１）ＲＡＭ５０３に結合された第１のレジスタ５０１、（２）ＲＡＭ５０３、第１のＲＯＭ５０７および乗算器５０９に結合された第１のマルチプレクサ５０５、（３）乗算器５０９、第２のマルチプレクサ５１３および第２のレジスタ５１５に結合されたＸＯＲライクな論理回路５１１、ならびに（４）第２マルチプレクサ５１３に結合された第２のＲＯＭ５１７および第３のレジスタ５１９を含んでいる。ローカル・パワー・コントローラ１１０ａは、（１）乗算器５０９、比較器５２３および第４のレジスタ５２５に結合された第１の加算器５２１ならびに（２）比較器５２３および第５のレジスタ５２９に結合された第２の加算器５２７も含む。レジスタ５０１、５１５、５１９、５２５および５２９は、１つまたは複数のＲＡＭなどの、１つまたは複数の従来のレジスタを含み得る。ＸＯＲライク論理回路５１１は、比較器５２３のように、ＸＮＯＲ論理回路などの任意の従来の比較回路を含み得る。マルチプレクサ５０５および５１３、乗算器５０９、ならびに加算器５２１および５２７は、任意の周知の適切な論理回路を含み得る。
【００２６】
動作において、命令が実行ユニット１０６ａによって受信されると、その命令が、第１レジスタ５０１に格納され、ローカル・パワー・コントローラ１１０ａは、上述のように、実行ユニット１０６ａによる命令実行のためのPredicted_Powerを決定する。図６の実施形態では、Predicted_Powerは、（前述したように）２つのやり方のいずれかで決定される：（１）命令が前回実行されたときに、実行ユニット１０６ａによって消費された電力を用いる、または（２）シミュレーションによって判断された電力を用いる。具体的には、ローカル・パワー・コントローラ１１０ａは、実行ユニット１１０ａによって受信された命令が、実行ユニット１０６ａによって、それ以前に受信されているかどうかを判断する。そうである場合は、ローカル・パワー・コントローラ１１０ａは、第１ＲＡＭ５０３のアドレスとして、その命令の命令コードを（命令コードによって識別される、ＲＡＭ５０３内のアドレスに格納されている、命令が前回実行されたときに実行ユニットによって消費された電力）使用して、その命令についてのPredicted_Powerを決定する。そうでない場合は、Predicted_Powerが、第１ＲＯＭ５０７に格納されている電力データのシミュレーションから提供される。第１マルチプレクサ５０５を使用して、適切なPredicted_Powerを選択し、乗算器５０９に渡す。
【００２７】
ローカル・パワー・コントローラ１１０ａは、Predicted_Powerを決定する前、その最中、またその後で、実行ユニット１０６ａによって受信された命令に付随するオペランドのTransition_Factorを決定する。Transition_Factorは、命令に付随するオペランドと、命令が前回実行されたときに使用されたオペランド（レジスタ５１９内に格納されているLast_Operandsなど）またはシミュレーション時に使用される典型的なオペランド（ＲＯＭ５１７に格納されているLast_Operandsなど）の間で、ＸＮＯＲや他の比較演算などのＸＯＲライクな関数を実施することによって計算される。第２のマルチプレクサ５１３を使用して、適切なLast_Operandsを選択し、ＸＯＲライクな回路５１１に渡す。次いで、ＸＯＲライクな回路５１１は、そのＸＯＲライクな演算の結果（Transition_Factor）を乗算器５０９に出力する。
【００２８】
乗算器５０９は、Predicted_Powerに、Transition_Factorを掛けることによって、Predicted_Powerに基づいて、命令の実行に必要な実際の電力（「True_Power」）を計算する。ローカル・パワー・コントローラ１１０ａは、その命令が実行ユニット１０６ａによって次に実行されるときに備えて、ＲＡＭ５０３にTrue_Powerを、またレジスタ５１９に現在の命令のオペランドを格納する。乗算器５０９は、第１加算器５２１、グローバル・パワー・コントローラ１０８、比較器５２３およびＲＡＭ５０３に、True_Powerを出力する。
【００２９】
ローカル・パワー・コントローラ１１０ａはまた、実行ユニット１０６ａのパワー・バジェット（レジスタ５２９に格納されている）から、グローバル・パワー・コントローラ１０８またはローカル・パワー・コントローラ１１０ａによって停止または凍結された前のクロック・サイクルからの命令を完了するのに必要な何らかの電力（レジスタ５２５に格納されている）を減算することによって、現在のクロック・サイクル中に、実行ユニット１０６ａが使用することができる使用可能な電力（Avail_Power）をも計算する。減算演算は、加算器５２７を介して実施され、結果のAvail_Powerが、加算器５２７から比較器５２３に提供される。比較器５２３が、True_Power（現在の命令を実行するのに必要な電力）が、Avail_Power（凍結されたいずれかの命令実行を完了するのに必要な電力によって補正された命令ユニットのパワー・バジェット）を超えると判断した場合には、ローカル・パワー・コントローラ１１０ａは、実行ユニット１０６ａの操作を凍結する。ローカル・パワー・コントローラ１１０ａは、グローバル・パワー・コントローラ１０８に通知することができ、グローバル・パワー・コントローラ１０８は、その命令を別の実行ユニットに再び割り当てることができる。あるいは、ローカル・パワー・コントローラ１０８は、命令の実行を完了するのに必要な電力量を、レジスタ５２５内に格納することができる。True_Powerが、Avail_Powerを超えない場合には、ローカル・パワー・コントローラ１１０ａは、実行ユニット１０６ａが命令を実施させ、（またグローバル・パワー・コントローラ１０８にそれを通知する。）実行ユニットによる命令実行の凍結の一実施形態について、図８を参照して以下に述べる。
【００３０】
加算器５２１は、True_Powerを（レジスタ５２５に格納されている）凍結されているいずれかの命令を完了するのに必要な電力に加算することによって、実行ユニット１０６ａによる命令の実行によって、消費される実際の電力（「ActualPower Dissipated」）を決定する。図７を参照して以下で述べるように、Actual Power Dissipatedが、グローバル・パワー・コントローラ１０８に提供される。ローカル・パワー・コントローラ１１０ｂ〜ｎもまた、図６のローカル・パワー・コントローラ１１０ａと同じように構成することができる。上記の機能を実施するのに必要な制御論理は、関連分野の技術者によって開発することができ、それについて本明細書では詳述しない。
【００３１】
図７は、図６のローカル・パワー・コントローラ１１０ａとともに使用することができる、図１および２のグローバル・パワー・コントローラ１０８の例示的な一実施形態を、より詳細に示す図である。図７を参照すると、グローバル・パワー・コントローラ１０８は、第１の加算器６０３および比較器６０５に結合された第１のレジスタ６０１を含んでいる。比較器６０５は、第２の加算器６０７および選択回路６０９にも結合される。レジスタ６０１、加算器６０３および６０７、比較器６０５、ならびに選択回路６０９は、任意の周知の適切な論理回路を含み得る。
【００３２】
動作において、グローバル・パワー・コントローラ１０８は、第２加算器６０７を使用して、各ローカル・パワー・コントローラ１１０ａ〜ｎから受信された「Actual Power Dissipated」情報（前述の、各実行ユニット１０６ａ〜ｎによって消費される電力）を合計することによって、現在のクロック・サイクルについて、データ処理システム１００によって消費される総電力を計算する。この総電力が、データ処理システム１００のTotal__Chip_Powerである。次いで、比較器６０５は、データ処理システム１００のパワー・バジェット（レジスタ６０１内に格納されているChip_Power_Budget）を、Total_Chip_Powerと比較する。Total_Chip_Powerが、Chip_Power_Budgetより小さい場合は、グローバル・パワー・コントローラ１０８は、各実行ユニット１０６ａ〜ｎが、グローバル・パワー・コントローラ１０８からの干渉を受けずに、命令を実行できるようにする。いずれかの「余剰」電力（たとえば、Chip_Power_BudgetがTotal_Chip_Powerを超えた分の量）が、加算器６０３を介して、Chip_Power_Budgetに加算される（たとえば、次のクロック・サイクル中の、データ処理システム１００のパワー・バジェットを増加させる）。余剰電力をChip_Power_Budgetに加算するのでななく、グローバル・パワー・コントローラ１０８は、以前に凍結された１つまたは複数の実行ユニット１０６ａ〜ｎを再び開始することができる。
【００３３】
（比較器６０５によって判断され）Total_Chip_Powerが、Chip_Power_Budgetより大きい場合は、グローバル・パワー・コントローラ１０８は、（選択回路６０９を介して）１つまたは複数の実行ユニット１０６ａ〜ｎを選択し、選択された実行ユニットによる命令の実行を凍結する。凍結する特定の実行ユニットの選択は、任意の関連要因に基づくことができる。少なくとも１つの実施形態では、選択回路６０９は、現在のサイクル中に、各実行ユニット１０６ａ〜ｎによって消費される電力に基づいて（たとえば、各実行ユニット１０６ａ〜ｎのTrue_Powerに基づいて）凍結する実行ユニットの適切な組合せを選択する。他の要因には、凍結する実行ユニットの数や実行ユニットによって実行される命令のタイプなどが含まれる。たとえば、グローバル・パワー・コントローラ１０８は、（上記で援用した米国特許第６，１６７，５２４号に記載の）投機的実行ユニットだけを凍結することを選択することができる。上記の機能を実施するのに必要な制御論理は、関連分野の技術者によって開発することができ、それについて本明細書では詳述しない。
【００３４】
図８は、図１のデータ処理システム１００の操作を説明するのに有用な、図１の実行ユニット１０６ａの論理回路の例示的な一実施形態である。他の論理回路を、どの実行ユニット１０６ａ〜ｎも使用することができ、図８の論理回路は例示的なものにすぎないことが理解されよう。
【００３５】
図８を参照すると、実行ユニット１０６ａが、４つの論理ユニット７０２、７０４、７０６、および７０８を含んでいる。それぞれの論理ユニットは、データ処理システム１００によって使用される命令およびオペランドを処理するように適応された任意の従来の論理回路を含み得る。図８の実施形態では、第１の論理ユニット７０２が、実行ユニット１０６ａの総電力の約１０％を消費し、第２の論理ユニット７０４が、実行ユニット１０６ａの総電力の約４０％を消費し、第３の論理ユニット７０６が、実行ユニット１０６ａの総電力の約３０％を消費し、第４の論理ユニット７０８が、実行ユニット１０６ａの総電力の約２０％を消費する。こうしたパーセンテージは、例示的なものにすぎない。ローカル・パワー・コントローラ１１０ａは、こうしたパーセンテージの知識によって、事前にプログラムすることができる。こうした情報は、たとえば、ＲＯＭに格納することができる。
【００３６】
それぞれの論理ユニット７０２〜７０８の前にそれぞれ、「一回遷移」バッファまたはマルチプレクサ（「一回遷移論理」）７１０、７１２、７１４および７１６がある。一回遷移マルチプレクサについて、上記で援用した米国特許第６，０５４，８７７号に詳しく記載されている。一回遷移バッファを、（たとえば複数の入力のうちから選択を行うのに必要な論理を追加せずに）一回遷移バッファを同じように構成することができる。一回遷移論理７１０、７１２、７１４および７１６がそれぞれ、一回遷移バッファを含むと仮定すると、それぞれの一回遷移バッファ７１０〜７１６に、遅い選択入力（slow select input）、ならびに遅い選択入力によって選択が行われない場合（遅い選択入力が「非アクティブ」である場合）に、その値を保持する、パス・ゲート／ラッチ（図示せず）が提供される。
【００３７】
動作において、ローカル・パワー・コントローラ１１０ａ（たとえば、図４の処理４００のステップ４１１）またはグローバル・パワー・コントローラ１０８（たとえば、図３の処理３００のステップ３０４）によって生成される「凍結」信号に応答して、ローカル・パワー・コントローラ１１０ａは、一回遷移論理７１０、７１２、７１４および７１６の１つまたは複数の遅い選択入力をディセーブルする。たとえば、ローカル・パワー・コントローラ１１０ａが、実行ユニット１０６ａが電力を消費しないようにする場合は、すべての一回遷移論理７１０〜７１６の遅い選択入力をディセーブルすることができる。このようにして、実行ユニット１０６ａに提供されるどの命令およびオペランドも一回遷移論理７１０によって「保持」される。命令およびオペランドは、一回遷移論理７１０〜７１６の遅い選択入力をイネーブルすることによって、それ以降のいずれかの時点で、実行ユニット１０６ａに伝搬できるようにされ得る。グローバル・パワー・コントローラ１０８が、一回遷移論理７１０〜７１６の遅い選択入力を直接に制御できるようにすることができる。
【００３８】
別の例として、一回遷移論理７１０および７１２の遅い選択入力が適切に選択されたことによって、命令およびオペランドが、論理ユニット７０２と論理ユニット７０４の両方に伝搬できるようになっていると仮定する。（たとえば、ローカル・パワー・コントローラ１１０ａまたはグローバル・パワー・コントローラ１０８による凍結信号に応答して）ローカル・パワー・コントローラ１１０ａが、実行ユニット１０６ａの操作を凍結する場合、一回遷移論理７１４および７１６には、「アクティブな」遅い選択入力が提供されない。これを、たとえば図８のタイミング図に図示する。この図では、参照クロック信号（ＣＬＫ）、一回遷移論理７１０に適用される遅い選択入力（slow_select A）、一回遷移論理７１２に適用される遅い選択入力（slow_select B）、一回遷移論理７１４に適用される遅い選択入力（slow_selectC）、および一回遷移論理７１６に適用される遅い選択入力（slow_select D）が示されている。一回遷移論理７１４および７１６への遅い選択入力を非アクティブに保たれることよって、実行ユニット１０６ａに適用される命令およびオペランドが、論理ユニット７０２および７０４にだけ伝搬される。論理ユニット７０４による結果の出力は、一回遷移論理７１４によって保持される。命令およびオペランドの処理は、一回遷移論理７１４および７１６の遅い選択入力を適切にアクティブ化することによって、後で継続することができる。命令およびオペランドの実行は、論理ユニット７０２から７０４までの再処理を必要とせずに、実行が凍結されたところから開始できることに留意されたい。それによって、大幅な省電力化を実現することができる。
【００３９】
上記の例では、実行ユニット１０６ａが命令およびオペランドを処理するのに必要な電力のおよそ５０％が消費されている。本発明の少なくとも１つの実施形態では、この情報は、図５のレジスタ５２５内に格納される。たとえば、ある命令を実行するのに、実行ユニット１０６ａが消費する総電力は、０．２ワットであると仮定する。一回遷移論理７１０、７１２の遅い選択入力だけがアクティブである場合は、ローカル・パワー・コントローラ１１０ａは、実行ユニット１０６ａによって約０．１ワットの電力が消費され、また実行ユニット１０６ａがその命令処理を完了するのに追加０．１ワットの電力が必要であると判断することができる。
【００４０】
本発明を使用することによって、命令およびオペランドによる電力消費量をクロック・サイクルごとに監視し、（たとえば、電力供給の一定した現在消費量を維持するために）要望に応じて調整することができるので、データ処理システム１００の電力消費量を非常に迅速にかつ正確に調節できることが理解されよう。たとえば本発明の少なくとも１つの実施形態では、グローバル・パワー・コントローラ１０８は、（たとえばローカル・パワー・コントローラ１１０ａ〜ｎによって提供される）すべての実行ユニット１０６ａ〜ｎによって消費される総電力を計算し、総電力を一定に維持しようと試みる。これは、たとえば、（１）実行ユニット１０６ａ〜ｎのうちの１つまたは複数に対する新しい命令のディスパッチを一時的に停止または（２）１つまたは複数の実行ユニット１０６ａ〜ｎによる命令の実行を一時的に凍結（図３の処理３００のステップ３０４など）あるいはその両方を行うことによって、実現することができる。（図８および９を参照して上述したように）停止／凍結された命令の実行が再開されるときは、実行が停止されたところから、実行が再開される。したがって、実行時のほぼどんな時点でも、命令の実行を「一時停止」し、再開することができる。
【００４１】
上述したように、各ローカル・パワー・コントローラ１１０ａ〜ｎは、各命令およびオペランドによって消費されるサイクル当たりの電力を「予測」することができ、サイクル当たりの電力を、関連する実行ユニット１０６ａ〜ｎのパワー・バジェットと比較することができる。本発明の少なくとも１つの実施形態では、特定の命令の実行によって、実行ユニットのパワー・バジェットを超える場合は、関連するローカル・パワー・コントローラ１１０ａ〜ｎが、その実行ユニットのパイプラインからその命令を取り除く。その実行ユニットによる命令の実行を、（たとえば、実行ユニットの遅い選択入力を非アクティブ化することによって）停止することができ、グローバル・パワー・コントローラ１０８に、このサイクルでは、その実行ユニットが命令を実行することができないことを通知することができる。グローバル・パワー・コントローラ１０８は、別の実行ユニットに、その命令を再び割り当てることができ、後続の命令を処理するために停止された実行ユニットを再開することができる。本発明の一実施形態では、すべての計算またはデータ操作あるいはその両方（たとえば、Predicted_Power、Last_Operands、True_Power、Avail_Power、その様々な比較などの計算／判断）が単一のクロック・サイクル内で行われるので、命令を実行させるかどうかについて迅速に判断することができる。さらに別の実施形態では、それぞれのローカル・パワー・コントローラ１１０ａ〜ｎは、クロック・サイクルの最初にだけ、実行ユニットによる命令の実行を凍結することができ、（たとえば、グローバル・パワー・コントローラ１０８が、命令の実行を継続させたならば、データ処理システム１００のパワー・バジェット超過になると判断した場合は）グローバル・パワー・コントローラ１０８が、サイクルの最中で、命令の実行を凍結することができる。データ処理システム１００には動的リアルタイム電力制御が設けられる。
【００４２】
上記の説明は、本発明の例示的な実施形態を開示したものにすぎず、本発明の範囲内に含まれる、上記に開示した装置および方法の修正が、当業者には容易に明らかになろう。たとえば、ある実行ユニット内の複数段階でのシミュレートされたまたは実際の電力消費データを、所望であれば、ローカル・パワー・コントローラ１１０ａ〜ｎによって格納することができる。
【００４３】
したがって、本発明を、その例示的な実施形態に関連して開示したが、以下の特許請求の範囲によって定められるように、他の実施形態も、本発明の精神および範囲の範囲内に含まれ得ることを理解されたい。
【図面の簡単な説明】
【００４４】
【図１】本発明に従って構成された新規なデータ処理システムの概略図である。
【図２】図１のローカル・パワー・コントローラの例示的な一実施形態と通信する、図１のグローバル・パワー・コントローラの例示的な一実施形態の概略図である。
【図３】図１および２の本発明のデータ処理システムのグローバル・パワー・コントローラによって実施することができる、電力を節約するための例示的な処理のフローチャートである。
【図４】図１および図２の本発明のデータ処理システムの実行ユニットのローカル・パワー・コントローラによって実施することができる、電力を節約するための例示的な処理のフローチャートである。
【図５】図１および図２の本発明のデータ処理システムの実行ユニットのローカル・パワー・コントローラによって実施することができる、電力を節約するための例示的な処理のフローチャートである。
【図６】図１および２のローカル・パワー・コントローラのうちの１つの、例示的な一実施形態をより詳細に示す図である。
【図７】図６のローカル・パワー・コントローラとともに使用することができる、図１および２のグローバル・パワー・コントローラの例示的な一実施形態をより詳細に示す図である。
【図８】図１のデータ処理システムの操作を説明するのに有用な、図１の実行ユニットのうちの１つの論理回路の例示的な一実施形態を示す図である。
【図９】図８の実行ユニットの操作を説明するのに有用なタイミング図である。
【図１】
2005527010.tif 000003
【図２】
2005527010.tif 000004
【図３】
2005527010.tif 000005
【図４】
2005527010.tif 000006
【図５】
2005527010.tif 000007
【図６】
2005527010.tif 000008
【図７】
2005527010.tif 000009
【図８】
2005527010.tif 000010
【図９】
2005527010.tif 000011
【手続補正書】
【提出日】平成15年10月8日(2003.10.8)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
処理集積回路において電力を節約する方法であって、
命令、および前記命令に対応するデータを実行するための電力消費量を計算するステップであって、前記命令が以前に実行されたときに、実際に消費された電力量に基づいて前記電力消費量を計算することを含むステップと、
こうした実行が所定の電力レベルを超えない場合は、前記命令を実行するステップとを含む方法。
【請求項２】
（削除）
【請求項３】
電力消費量を計算することが、
前記命令が以前に実行されたときに消費された電力量に基づいて予測電力を決定すること、
以前に実行された前記命令に対応するデータを決定すること、および
前記予測電力、および以前に実行された前記命令に対応する前記データに基づいて、前記命令を実行するための電力消費量を計算することを含む、請求項１に記載の方法。
【請求項４】
電力消費量を計算することが、
遷移係数を生成するために、実行される前記命令に対応する前記データを、以前に実行された前記命令に対応する前記データと比較すること、および
前記予測電力を、前記遷移係数で調節することを含む、請求項３に記載の方法。
【請求項５】
予測電力を調節することが、前記予測電力に、前記遷移係数を掛けることを含む、請求項４に記載の方法。
【請求項６】
前記計算された電力消費量および前記命令に対応するデータを格納することをさらに含む、請求項３に記載の方法。
【請求項７】
電力消費量を計算することが、前記命令の実行のシミュレーションから得られた電力量に基づいて電力消費量を計算することを含む、請求項１に記載の方法。
【請求項８】
電力消費量を計算することが、
前記命令の実行のシミュレーションから得られた電力量に基づいて予測電力を決定すること、
前記シミュレーション時に使用されるデータを決定すること、および
前記予測電力およびシミュレーション時に使用される前記データに基づいて、前記命令を実行するための消費電力を計算することを含む、請求項７に記載の方法。
【請求項９】
電力消費量を計算することが、
遷移係数を生成するために、実行される前記命令に対応する前記データを、シミュレーション時に使用される前記データと比較すること、および
前記予測電力を、前記遷移係数で調節することを含む、請求項８に記載の方法。
【請求項１０】
こうした実行が所定の電力レベルを超えない場合に、前記命令を実行することが、
前記命令およびデータを実行する実行ユニットの使用可能電力を決定すること、
前記実行ユニットの前記使用可能電力を、前記命令およびデータを実行するための前記計算された電力消費量と比較すること、および
前記実行ユニットの前記使用可能電力が、前記命令およびデータを実行するための前記計算された電力消費量より大きい場合は、前記実行ユニットで前記命令およびデータを実行することを含む、請求項１に記載の方法。
【請求項１１】
実行ユニットの前記使用可能電力を決定することが、
前記実行ユニットのパワー・バジェットを決定すること、
前記実行ユニットによって部分的に実行された命令およびデータの実行を完了するのに必要な電力量を決定すること、および
前記部分的に実行された命令およびデータの実行を完了するのに必要な電力量を、前記実行ユニットの前記パワー・バジェットから減算することによって、前記実行ユニットの前記使用可能電力を計算することを含む、請求項１０に記載の方法。
【請求項１２】
処理集積回路において電力を節約する方法であって、
命令、および前記命令に対応するデータを実行するための電力消費量を計算するステップであって、前記命令が以前に実行されたときに、実際に消費された電力量に基づいて前記電力消費量を計算することを含むステップと、
実行ユニットのパワー・バジェットを決定するステップと、
前記実行ユニットによって部分的に実行された命令およびデータの実行を完了するのに必要な電力量を決定するステップと、
前記部分的に実行された命令およびデータの実行を完了するのに必要な電力量、ならびに前記実行ユニットの前記パワー・バジェットに基づいて、前記実行ユニットの使用可能電力を計算するステップと、
前記実行ユニットの前記使用可能電力を、前記命令およびデータを実行するための前記計算された電力消費量と比較するステップと、
前記実行ユニットの前記使用可能電力が、前記命令およびデータを実行するための前記計算された電力消費量より大きい場合には、前記実行ユニットで前記命令およびデータを実行するステップとを含む方法。
【請求項１３】
複数の実行ユニットを使用する処理集積回路において、電力を節約する方法であって、
前記処理集積回路によって消費される総電力を、前記処理集積回路のパワー・バジェットと比較するステップであって、前記消費される総電力が、命令が以前に実行されたときに、前記実行ユニットによって実際に消費された電力量に基づくステップと、
前記総電力が前記パワー・バジェットを超える場合は、実行が凍結されたところから、後で命令の実行を継続させるように、前記複数の実行ユニットのうちの１つによる命令の実行を凍結するステップとを含む方法。
【請求項１４】
前記処理集積回路によって消費される総電力を、前記処理集積回路のパワー・バジェットと比較することが、
クロック・サイクル中に、前記処理集積回路によって消費される総電力を決定すること、および
前記処理集積回路のパワー・バジェットを決定することを含む、請求項１３に記載の方法。
【請求項１５】
総電力を決定することが、
それぞれの実行ユニットから、クロック・サイクル中に、前記処理ユニットによって消費される電力に関する情報を受信すること、および
前記実行ユニットから受信した前記情報に基づいて前記総電力を決定することを含む、請求項１４に記載の方法。
【請求項１６】
前記複数の実行ユニットのうちの１つによる命令の実行を凍結することが、前記実行ユニットの一回遷移論理の少なくとも１つの遅い選択入力を非アクティブに保つことを含む、請求項１３に記載の方法。
【請求項１７】
データ処理システムの実行ユニットであって、
前記命令が前記実行ユニットによって以前に実行されたときに実際に消費された電力量に基づいて、命令および前記命令に対応するデータを実行するための電力消費量を計算し、
こうした実行が所定の電力レベルを超えない場合には、前記実行ユニットに、前記命令を実行させるように、
適応されるローカル・パワー・コントローラを含む実行ユニット。
【請求項１８】
（削除）
【請求項１９】
前記ローカル・パワー・コントローラがさらに、
前記命令が前記実行ユニットによって以前に実行されたときに消費された電力量に関する第１の情報を格納するように適応された第１のレジスタと、
前記命令が前記実行ユニットによって以前に実行されたときの前記命令のオペランドに関する第２の情報を格納するように適応された第２のレジスタとを含み、
前記第１計算ロジックが、前記第１および第２レジスタの内容に基づいて、前記命令および前記命令に対応するデータを実行するための電力消費量を計算するように適応される、請求項１７に記載の実行ユニット。
【請求項２０】
前記ローカル・パワー・コントローラが、
前記命令の実行のシミュレーションから得られた電力量と、
シミュレーション時に使用されたオペランドと
に基づいて、前記命令と前記命令に対応するデータを実行するための電力消費量を計算するように適応された第１計算論理を含む、請求項１７に記載の実行ユニット。
【請求項２１】
前記ローカル・パワー・コントローラがさらに、前記命令およびデータを実行するために使用可能な電力を計算するように適応された第２の計算論理を含む、請求項１８に記載の実行ユニット。
【請求項２２】
前記ローカル・パワー・コントローラがさらに、
前記実行ユニットのパワー・バジェットを格納するように適応された第１のレジスタと、
以前の命令の実行を完了するのに必要な電力を格納するように適応された第２のレジスタとを含み、
前記第２の計算論理が、前記第１および第２レジスタの内容に基づいて、前記命令およびデータを実行するために使用可能な前記電力を計算するように適応される、請求項２１に記載の実行ユニット。
【請求項２３】
前記ローカル・パワー・コントローラが、
前記命令および前記命令に対応するデータを実行するための電力消費量を、前記命令およびデータを実行するために使用可能な電力と比較し、
前記命令および前記命令に対応するデータを実行するための前記電力消費量が、前記命令およびデータを実行するために使用可能な前記電力を超える場合には、前記命令およびデータの実行を凍結するように、
適応された比較回路を含む、請求項２１に記載の実行ユニット。
【請求項２４】
少なくとも１つの遅い選択入力を含む一回遷移論理をさらに含み、前記ローカル・パワー・コントローラが、前記命令および前記命令に対応するデータを実行するための前記電力消費量が、前記命令およびデータを実行するために使用可能な前記電力を超える場合には、前記少なくとも１つの遅い選択入力を非アクティブに保つように適応される、請求項２１載の実行ユニット。
【請求項２５】
複数の実行ユニットを使用する処理集積回路において電力を節約するためのグローバル・パワー・コントローラであって、
前記処理集積回路によって消費される総電力を、前記処理集積回路のパワー・バジェットと比較するように適応された比較回路であって、前記消費される総電力が、命令が以前に実行されたときに、前記実行ユニットによって実際に消費された電力量に基づく比較回路と、
前記総電力が前記パワー・バジェットを超える場合は、実行が凍結されたところから、後で命令の実行を継続させるように、前記命令の実行を凍結する実行ユニットを選択するように適応された選択回路とを含む、グローバル・パワー・コントローラ。
【請求項２６】
前記複数の実行ユニットのそれぞれから、クロック・サイクル中に消費される実際の電力に関する情報を受信し、前記受信された情報に基づいて前記処理集積回路によって消費される前記総電力を計算するように適応された加算回路をさらに含む、請求項２５に記載のグローバル・パワー・コントローラ。
【請求項２７】
前記パワー・バジェットに、前記パワー・バジェットが前記総電力を超過する分の何らかの電力量を加算するように適応された加算回路をさらに含む、請求項２５に記載のグローバル・パワー・コントローラ。
【請求項２８】
前記選択回路が、前記総電力が前記パワー・バジェットより小さい場合は、実行を継続するために、以前に凍結された実行ユニットを選択するようにさらに適応される、請求項２５に記載のグローバル・パワー・コントローラ。
【請求項２９】
前記処理集積回路によって消費される総電力を、前記処理集積回路のパワー・バジェットと比較するように適応された比較回路と、
前記総電力が前記パワー・バジェットを超える場合は、実行が凍結されたところから、後で命令の実行を継続させるように、前記命令の実行を凍結する実行ユニットを選択するように適応された選択回路とを含むグローバル・パワー・コントローラと、
複数の実行ユニットであって、それぞれが、
前記グローバル・パワー・コントローラと通信しており、また
命令および前記命令に対応するデータを実行するための電力消費量を計算し、前記電力消費量は、前記命令が以前に実行されたときに実際に消費された電力量に基づいて計算され、
前記グローバル・パワー・コントローラに、電力消費量情報を伝達し
こうした実行が所定の電力レベルを超えない、また前記グローバル・パワー・コントローラによって前記実行ユニットによる前記実行が凍結されていない場合には、前記実行ユニットに前記命令を実行させるように、
適応されたローカル・パワー・コントローラを含む実行ユニットとを含む、データ処理システム。
【請求項３０】
前記グローバル・パワー・コントローラが、命令およびデータが割り当てられた第１実行ユニットによる実行が前記第１実行ユニットのローカル・パワー・コントローラによって凍結される場合には、前記命令およびデータの実行を別の実行ユニットに再び割り当てるように適応される、請求項２９に記載のシステム。
【国際調査報告】
2005527010.tif 000012