(57)【要約】コンピュータ命令のプログラムの実行中に、分岐命令の実行が検出され、それに応じて分岐命令に後続する命令の実行中の処理回路のアクティビティが測定される。測定されたアクティビティについての各情報は複数の分岐命令の各々に対して記録される。測定されたアクティビティは、各分岐命令に遭遇した後、処理回路の電力消費モードを調整するためにその後使用される。
2006521618.tif 000002
【特許請求の範囲】
【請求項１】
−  命令メモリと、
−  命令アドレスを前記命令メモリに供給するために結合される命令アドレッシングユニットと、
−  前記命令メモリからのアドレスされた命令を受信すると共に実行するために結合され、前記命令は分岐命令を含み、前記分岐命令に応答して前記命令アドレスを制御するために前記命令アドレッシングユニットに結合される命令処理回路と、
−  前記命令の実行中に前記装置の少なくとも一部でアクティビティをモニタすると共に、前記分岐命令の各命令に後続する命令の実行中に起こるアクティビティの測定をもたらすためのアクティビティモニタと、
−  前記アクティビティモニタに結合され、前記分岐命令の各命令に関連して前記アクティビティの測定についての情報を記録するエントリを記憶するように構成されるアクティビティテーブルメモリと  
を有する命令処理装置。
【請求項２】
前記アクティビティテーブルメモリは、少なくとも次の実行された分岐命令まで前記分岐命令の後に実行される命令から開始させられる命令の実行中に前記測定されたアクティビティについての情報を取得するように構成される請求項１に記載の命令処理装置。  
【請求項３】
前記処理回路によって電力消費に影響を与える前記処理回路の動作のモードを制御するためのモード選択ユニットを有し、前記アクティビティテーブルメモリは、前記モードの選択を制御するために前記分岐命令の特定の一つの命令のフェッチ及び／又は実行の検出時に前記分岐命令の前記特定の一つの命令に対して前記アクティビティの測定についての情報からもたらされるデータを出力するために前記モード選択ユニットに結合される出力部を有する請求項１に記載の命令処理装置。
【請求項４】
前記アクティビティテーブルメモリは、所定の数の分岐命令に対する位置を有し、前記分岐命令の何れに対して前記エントリが前記位置に保持されるかを選択するため、及び情報が前記分岐命令の前記特定の一つの命令に対して保持されていないときに既定の情報の供給を前記モード選択ユニットに向けさせるためのテーブルメモリ管理ユニットを有する請求項３に記載の命令処理装置。  
【請求項５】
前記アクティビティテーブルメモリは、前記分岐が成立させられるときと、前記分岐が成立させられないときとの両方の場合に各々前記アクティビティの測定についての情報を保持するように構成され、前記処理回路は、前記分岐の結果に依存してどの情報が更新されるべきかを信号送出する請求項１に記載の命令処理装置。
【請求項６】
前記処理回路によって電力消費に影響を与える前記処理回路の動作のモードを調整するためのモード選択ユニットを有し、前記アクティビティテーブルメモリは、前記モードの選択を制御するために前記分岐命令の特定の一つの命令のフェッチ及び／又は実行の検出時に前記分岐命令の前記特定の一つの命令に対して前記アクティビティの測定についての情報からもたらされるデータを出力するために前記モード選択ユニットに結合される出力部を有し、前記情報は前記分岐命令の前記特定の一つの命令が成立させられるか否かに依存して選択される請求項５に記載の命令処理装置。
【請求項７】
前記アクティビティテーブルメモリは分岐予測ユニットの部分であり、前記分岐命令が、後続して遭遇されるときに成立させられるかどうかを予測するために、前記分岐命令の前記各命令が成立させられる周波数についての情報は前記エントリに記録される請求項１に記載の命令処理装置。
【請求項８】
−  分岐命令の実行を検出するステップと、
−  処理回路のアクティビティの各測定を決定し、命令の実行中の各々のアクティビティの測定は、前記分岐命令の検出に応答して前記分岐命令の各命令に後続するステップと、
−  前記分岐命令の各命令を識別する情報に関連して前記アクティビティの各測定についての情報を記録するステップと  
を有する命令のプログラムを実行する方法。
【請求項９】
前記分岐命令の前記各命令に後続する前記命令の少なくとも一部の実行中に使用されるべき各電力消費設定モードを選択するために前記アクティビティの記録された測定についての情報を使用するステップを有する請求項８に記載の命令のプログラムを実行する方法。
【請求項１０】
前記各電力消費設定モードを選択するステップが、前記分岐命令の各命令に後続する命令の各ブロックに対する前記プログラムの先行する実行からのアクティビティの蓄積された測定値を使用して、前記プログラムの実行に先行して統計的に行われる請求項９に記載の命令のプログラムを実行する方法。
【請求項１１】
前記各電力消費設定モードを選択するステップが、前記分岐命令の特定の一つの命令に後続する命令に対するアクティビティの測定についての現在の情報に依存して、前記プログラムの実行中に動的に行われる請求項９に記載の命令のプログラムを実行する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、命令のプログラムの実行中（実行の間）の電力供給消費を低減させるための方法及び命令処理装置に関する。
【背景技術】
【０００２】
欧州特許出願第1182556号公報は、コンピュータデバイスにおいて電力供給消費を制限するためにとられ得る手段を開示している。当該特許出願はエネルギ消費をスケジューリングタスク（scheduling task）の基準として使用する。タスクを実行することに関与するアクティビティ（活動（activity））についての情報は、タスクによる電力消費の予測（値）を計算するために使用される。当該予測は、タスクがいつ実行されるかを選択するため、又はタスクが低下（デグレード）態様（degraded manner）で実行されなければならないかどうかを選択するために使用され、これによって、より少ない電力供給消費がもたらされる。従って例えば電力供給消費制限が超過されるか、又は電力供給消費が最小限化され得ることは回避され得る。
【０００３】
当然のことながら予測された電力供給消費が正確に実電力供給消費に対応する必要はない。電力供給消費は例えばデータ依存性を有していてもよい。欧州特許出願第1182556号公報は、スケジューリングタスクの実行中に、デバイスの実アクティビティ（動作）又はデバイスの異なる部分の実アクティビティがモニタ（監視）される態様を開示している。欧州特許出願第1182556号公報は、実測アクティビティがタスクをスケジュール変更（リスケジュール（reschedule））するために使用され得ることを開示している。当該ダイナミックな調整（adaptation）はタスクレベルでしか作用（機能）しない。これは粗粒度、それ故に電力供給消費に渡るやや最適な制御しか許容しない。
【０００４】
米国特許第6282663号公報は他の電力節減技術を開示している。当該特許は、最新のプロセッサが、条件分岐命令（conditional branch instruction）に後続する（従う）命令の投機的（スペキュレイティブ）実行（speculative execution）を使用することを開示している。米国特許第6282663号公報は投機的実行が電力節減モードで選択的に抑圧され得る態様を開示している。投機的実行は、条件分岐命令の結果の予測をするステップを含んでいる。好ましくは予測は条件分岐命令の先行する実行についての統計的な情報に基づいている。このため、プログラムにおける異なる位置での分岐命令に対するエントリ（entry）で分岐来歴（履歴）テーブル（branch history table）が使用され、分岐命令がなされている周波数に関する情報はエントリに入力される。分岐の最も頻繁な結果は繰り返され、対応する命令は投機的に実行されることが仮定される。しかしながら電力節減モードにおいて、予測が十分に確かなものでないとき投機的実行は抑圧される。
【０００５】
より一般的には、欧州特許出願第1182556号公報において記載されているように、処理デバイスのクロック周波数及び／又は電力供給電圧を低減させることによって、電力供給消費を低減することが知られている。しかしながらこのことは、実時間要求仕様又は課された性能（動作）電力供給消費比と競合し得るプログラムの実行時間を増大させるため、当該技術に対する制限が存在する。それ故に当該技術は、実行時間に課される制約下での許容事項よりも更には適用され得ない。  
【発明の開示】
【発明が解決しようとする課題】
【０００６】
中でも本発明の目的は、プログラムの実行の調整のため、好ましくは電力供給消費を調整するために使用され得る態様で命令のプログラムの実行中のアクティビティの細粒度（fine
grain）の測定をもたらすことにある。
【０００７】
中でも本発明の更なる目的は、少ないオーバヘッド回路（overhead circuitry）しか必要としないアクティビティの細粒度の測定をもたらすことにある。        
【課題を解決するための手段】
【０００８】
本発明による命令処理装置は請求項１に示されている。本発明によれば、分岐命令の実行の検出は、装置におけるアクティビティが測定される時間インタバルの開始をトリガするために使用される。好ましくは次の分岐命令までの命令の実行を含む時間インタバルの間のアクティビティが測定される。特定の分岐命令に対する測定されたアクティビティについての情報は記憶されるので、当該情報は、分岐命令の識別部（アイデンティフィケーション（identification））に基づいて選択的に取り出され得る（検索され得る）。それ故にアクティビティのデータ依存測定値（data dependent measurement）が得られ得ると共に記録され得る。
【０００９】
好ましくは測定されたアクティビティについての情報は、測定されたアクティビティについての情報に依存して分岐命令の実行と共に電力供給消費モードを調整するために使用される。それ故に例えば電力供給モードは、高いアクティビティに先行して関与する分岐後、命令の実行中のクロック周波数及び電力供給電圧を低減するために調整されてもよく、当該命令が低いアクティビティに関与する場合、調整されなくてもよい。
【００１０】
アクティビティが記録される時間インタバルをトリガするための分岐命令の使用により、アクティビティの優れた予測性でアクティビティの細粒度の解析が可能となる。分岐命令は通常、関連するアクティビティを備える命令を含むプログラムのセクション（区分（section））をマークし（印を付け）、それによりプログラムセクションは、電力供給消費モードを調整するための便宜的（コンビニエント）ユニット（convenient unit）と分岐命令によって境界付けられる。
【００１１】
測定されたアクティビティについての情報の記憶のために、好ましくは分岐予測のために使用される種類の分岐来歴テーブルが使用されるが、本発明の実施例によれば、当該テーブルは、分岐に後続する測定されたアクティビティについての情報を記憶する。本発明は分岐予測から独立してもたらされてもよいが、分岐予測における使用の場合、好ましくはテーブルは分岐の結果についての情報を記憶するためにも使用される。
【００１２】
全ての分岐命令に対して測定されたアクティビティについての情報を記憶することは必要とされない。好ましくは情報は、より頻繁に、又はより新しく実行された分岐命令に対してのみ記憶される。他の分岐命令に対してデフォルト（既定）のアクティビティが仮定されてもよい。従って情報を記憶するためのメモリ空き容量（スペース）（memory space）は節減されることが可能であり、最も頻繁及び／又は最も新しい命令が優位（支配的）になるため、処理モードの最適な調整に近いアクティビティの効果は依然として可能である。
【００１３】
本発明は、分岐予測のために使用される分岐来歴テーブルに使用される構造体と同様の記憶構造体を使用してもよいが、分岐予測に対する記憶構造体との差が存在してもよい。例えばアクティビティの測定（程度（メジャー（measure）））についての各情報は、分岐命令の各々の結果に対して記憶されてもよく、当該結果に従って使用されるべきである。他の例として、前記情報は、分岐命令の命令アドレスでちょうど分岐予測に対してアクセスされるようにアクセスされてもよいが、代わりに実行の間に分岐命令に後続する後のアドレス（later address）が使用されてもよく、又はアクセスが、まさに自身の命令アドレスの点でというよりも、処理回路による分岐命令の検出に従っていてもよい。  
【００１４】
本発明のこれら及び他の目的と有利な態様は、以下図面を参照して記載されるであろう。
【発明を実施するための最良の形態】
【００１５】
図１は命令メモリ１０と、アドレッシングユニット１１と、処理回路１２と、分岐来歴記憶ユニット１４と、アクティビティモニタ１６と、モード選択ユニット１８と、分岐データレジスタ１９とを備える処理装置を示している。前記装置は集積回路デバイスとして実現されてもよい。命令メモリ１０は、アドレッシングユニット１１のアドレス出力部に結合されるアドレス入力部と、処理回路１２に結合される命令出力部とを有する。処理回路１２はアドレッシングユニット１１のアドレス出力部に結合される。処理回路１２は、出力１３ａ及びｂを信号送出する分岐命令を有する。第一の出力１３ａは、分岐命令が検出されているときに信号送出するために使用され、第二の出力１３ｂは、検出された分岐命令についての情報を信号送出するために使用される。第一の出力１３ａは、アドレッシングユニット１１と、アクティビティモニタ１６と、分岐来歴記憶ユニット１４と、レジスタ１９とに結合される。第二の出力１３ｂはアドレッシングユニット１１と、分岐データレジスタ１９とに結合される。分岐来歴記憶ユニット１４はアクティビティテーブルメモリ１４０を含む。分岐来歴記憶ユニット１４は、アドレッシングユニット１１のアドレス出力部に結合される入力部と、モード選択ユニット１８及びアドレッシングユニット１１に結合される出力部とを有する。
【００１６】
動作中、分岐来歴記憶ユニット１４は複数の各分岐命令の各々に対して、分岐命令に後続して装置のアクティビティの測定についての各情報を記録する。特定の分岐命令が再び実行されるとき、分岐来歴記憶ユニット１４は、分岐命令に対するアクティビティの測定についての情報をモード選択ユニット１８に供給する。それに応答してモード選択ユニット１８は、分岐命令に後続する命令の実行の先行する実行の間にデバイスのアクティビティの測定についての記録された情報に依存して分岐命令に後続する命令の実行の間に実行のモードを調整する。例えばモード選択ユニット１８は、アクティビティの記録された測定値が閾値よりも上になるとき、デバイスのクロック周波数及び供給電圧を低減されたレベルにセット（設定）し、アクティビティの記録された測定値が閾値よりも下になるとき、より高いレベルにセットする。
【００１７】
動作中、処理デバイスは、少なくとも一時的に命令メモリ１０に記憶される命令のプログラムを実行する。アドレッシングユニット１１は命令メモリ１０に命令のアドレスを連続的に供給し、それに応答して命令メモリは実行のために、アドレスされた命令を処理回路１２に供給する。通常、アドレッシングユニット１１はインクリメントするアドレス（incrementing address）を連続的に供給するが、通常のアドレスインクリメントは分岐命令の実行によって影響され得る。分岐命令は、通常分岐命令において特定される分岐条件に依存して、プログラムされた目標（宛先）アドレス（ターゲットアドレス（target address））との置換によって、又はプログラムされたオフセットを現在の命令アドレスにもたらす結果として、命令アドレスにおいてプログラムされたジャンプをもたらし得るいかなる命令であってもよい。ジャンプがもたらされる場合、すなわち分岐条件が条件分岐命令の場合に満たされるとき、分岐命令はいわゆる“（分岐）成立（成功）（taken）”されることになる。
【００１８】
処理回路１２が分岐命令を検出すると、それによりアクティビティモニタ１６はリセットされる。その後、アクティビティモニタ１６は、元の分岐命令の検出後、処理デバイスにおいてアクティビティＡの測定値を積む（ビルドアップ（build up））ためにインクリメントしながらアクティビティを記録（登録）する。アクティビティＡの測定は例えばゲートが回路においてスイッチしている回数の測定又はアクティビティモニタ１６がリセットされてからのその一部の測定となる。これは例えば、電源電圧V及びゲート毎のスイッチング容量Cを仮定すると電流はA*C*Vに比例することが知られているため、回路又はその部分によって消費される電力供給電流から測定され得る。
【００１９】
検出された分岐命令についての情報はレジスタ１９に記憶される。前記情報は分岐命令のアドレス及び分岐命令が成立しているかどうかを示す情報を含む。上述の分岐命令はこの場合“元の（オリジナル（original））”分岐命令と称されるであろう。処理回路１２が、次の分岐命令は検出されていることを示すとき、このことは、元の分岐命令が信号送出されたときからアクティビティモニタ１６によって積まれるアクティビティＡの測定値をアクティビティモニタ１６から読み出す分岐来歴記憶ユニット１４に信号送出される。次の分岐命令まで元の分岐命令に後続すると共に次の分岐命令を含む元の分岐命令に後続する命令は命令の“基本ブロック（basic block）”と称される。各基本ブロックはそれぞれ、各分岐命令及び／又は分岐命令の宛先（転送先）に後続する命令から開始させられ、次の分岐命令で終了させられる。
【００２０】
従って分岐来歴記憶ユニット１４は、各基本ブロックに対して測定されているアクティビティの測定からもたらされる情報を記録する。例えばアクティビティの測定値自体は記録され、先行して記録されたアクティビティの何れかの測定値を置換する。分岐来歴記憶ユニット１４はアクティビティの測定からもたらされる情報を記憶するので、元の分岐命令のアドレスに基づいて取り出され得る。好ましくは分岐来歴記憶ユニット１４は元の分岐命令の分岐アドレス及び元の分岐命令を成立させることについての情報も記憶する。
【００２１】
分岐来歴記憶ユニット１４は、アクティビティの測定についての記録された情報を取り出すために命令アドレッシングユニット１１から受信される命令アドレスを使用する。アクティビティの測定についての情報が記録されている分岐命令に命令アドレスが対応するとき、分岐来歴記憶ユニット１４は当該情報を制御モード選択ユニット１８に供給する。
【００２２】
モード選択ユニット１８は、プログラム実行中の電力供給消費をある制約内で最小限化するように、測定されたアクティビティに依存してデバイスの動作を調整するように構成される。アクティビティに依存するモード選択はそれ自体知られている。それ故にモード選択ユニット１８は詳細に記載されないであろう。通常の制約は実行時間にある。プログラムの実行時間は、実行された基本ブロックの実行時間の合計になる。すなわち、
T = sum over blocks Nb*Tb
ここで、Nbは基本ブロックが実行される回数であり、Tbは基本ブロックbの実行時間である。前記ブロックの実行時間は、命令実行を制御するクロック周波数に逆比例する。一方、電力供給消費は、ブロックの実行中に消費される平均電力の合計となる。すなわち、
E = sum over blocks Nb*Eb
ここで、Ebはブロックbの実行中の平均電力供給消費である。平均電力供給消費はブロックの実行中の回路の平均アクティビティAb掛ける電力供給電圧の２乗に比例する。
【００２３】
電力供給消費Eは、電力供給電圧を低減させることによって低減され得るが、電力供給電圧が低減させられるとき、可能な最大クロック周波数も低減させられる。それ故に電力供給電圧が低減させられるとき、クロック周波数も低減させられる必要があり、これにより実行時間Tの増加がもたらされる。しかしながら電力供給消費Eと実行時間Tとの効果の比率は、ブロックにおけるアクティビティAbに依存して異なるブロックbの間で違う。電力供給電圧低減は、より高いアクティビティAbを備えるブロックの電力供給消費について、より低いアクティビティAbを備えるブロックの電力供給消費よりも大きな効果を有するが、二つのブロックの実行時間についての対応する効果は同じになる。
【００２４】
モード選択ユニット１８は、より低いアクティビティが先行して記録されているブロックの実行時間の間、あるならばより少なくなるように、更により高いアクティビティが先行して記録されているブロックの実行時間の間、より多くなるように、電力供給電圧及びクロック周波数を選択的に低減させることによってこの効果を使用する。分岐来歴記憶ユニット１４は、分岐命令が遭遇しているモード選択ユニット１８に信号送出するとき、分岐来歴記憶ユニット１４は、分岐命令に後続するブロックの実行に先行して関与するアクティビティの測定についての情報を、当該情報が利用可能である場合に信号送出する。当該情報に基づいてモード選択ユニット１８は電源電圧及びクロック周波数を選択し、分岐命令に後続する命令の実行の間、選択された電源電圧及びクロック周波数で動作するように回路を制御する。
【００２５】
アクティビティの測定についての情報が分岐命令に対して利用可能でない場合、分岐来歴記憶ユニット１４は分岐命令を信号送出しないか、又は分岐命令を信号送出すると共にアクティビティに対してデフォルト値を供給する。前者の場合、モード選択ユニット１８はモードを変更せず、後者の場合、モード選択ユニット１８はデフォルト値に従ってモードを変更する。当然のことながらアクティビティ情報の無いことが分岐命令に対して信号送出されるとき、モード選択ユニットも所定のモードをセットするように構成される。
【００２６】
更に分岐来歴記憶ユニット１４は好ましくは投機的実行における使用に対して分岐予測を導くために、記録された情報を使用する。このこと自体は知られている。分岐が成立させられる周波数についての情報に基づいて、命令アドレッシングユニットは、分岐命令のアドレスに後続するか、又は分岐命令の分岐宛先アドレス（branch target address）から開始させられるメモリ１０における位置を、どちらが先行して最も頻繁に実行されるかに依存してアドレスすることによって継続させられる。処理回路１２が分岐命令の結果を決定するまで処理回路１２はこれらの命令を投機的に実行する。前記結果が正確に予測された場合、投機的に実行された命令は確定（コミット（commit））される。前記結果が前記予測と異なる場合、いわゆるミス予測（予測失敗（miss prediction））が発生したことになる。この場合投機的命令は取り消され、命令アドレッシングユニット１１は正確なアドレスからアドレスを供給し始めるようにセットされる。
【００２７】
アクティビティの記録された測定値の使用が好ましくは分岐予測と結合されるが、このことは分岐予測から別個にもたらされ得ると共に分岐予測が使用されないときでさえもたらされ得ることは評価されるべきである。分岐予測が使用されるか否かにかかわらず、（分岐命令の結果を予測するための情報を記録するために分岐命令についての情報を記録する）分岐来歴テーブルを実現するためのいかなる知られている技術も、アクティビティについての情報の記録を実現するために使用され得る。これらの技術は詳細に記載されないであろう。
【００２８】
例えば連想（アソシエーティブ）メモリ（associative memory）がアクティビティテーブルメモリ１４０として分岐来歴記憶ユニット１４において使用されてもよい。この場合、アクティビティテーブルメモリ１４０における異なるメモリ位置（メモリロケーション（memory location））が各々、各分岐命令に対する情報を記憶するために割り当てられてもよいので、分岐命令のための情報を更新（アップデート）又は取り込むために分岐命令のアドレスはメモリ位置を識別するように使用され得る。アクティビティテーブルメモリ１４０におけるエントリは各々、例えば少なくとも二つの要素、すなわち
分岐命令の分岐アドレス、及び
アクティビティの測定値
である。
この場合、処理回路１２及び命令アドレッシングユニット１１は命令アドレスを分岐来歴記憶ユニット１４に供給するべきである。この場合、分岐来歴記憶ユニット１４は、例えば最も古く使用された分岐命令又は最も稀に遭遇させられた分岐命令に対する位置を再使用することによって新たに遭遇させられた分岐命令に対してメモリ位置を再割り当てするために管理の形態を使用し得る。分岐来歴記憶ユニット１４が分岐の結果を予測するためにも使用されるとき、エントリは少なくとも三つの要素、すなわち
分岐命令の命令アドレス
アクティビティの測定値、及び
成立されている分岐の周波数の測定値    
を含む。  
この場合、処理回路１２は、分岐が成立させられたか否かについての情報を分岐来歴記憶ユニット１４に供給するべきである。アクティビティの測定値及び／又は周波数の測定値は、複数の実行から蓄積される統計的な情報、又は最も新しい実行からの単なる情報を反映（表わ）してもよい。測定値は異なる番号を参照する符号（コード）又は番号を表していてもよい。
【００２９】
他の例として、分岐命令の命令アドレスの一部が、アクティビティテーブルメモリ１４０における異なるメモリ位置（例えばアドレスの最下位部分）をアドレスするために使用されてもよく、随意的に同じアドレス部分を備える、異なった分岐命令を明確化するためにアクティビティテーブルメモリ１４０がいくつかの測定値で増加させられてもよい。
【００３０】
異なる分岐命令に対するアクティビティの測定についての情報を記憶するために使用される技術はエラーフリー（誤り無し）になる必要がないことは注意されるべきである。上述のようにアクティビティテーブルメモリ１４０は、全ての分岐命令に対する情報を記憶するのに十分なメモリを含まなくてもよいので、分岐命令のサブセットについての情報のみが記憶され、アクティビティの測定に対するデフォルトの仮定が他の分岐命令に対してなされなければならないであろう。同様に例えば、分岐命令の部分的な識別のための技術が使用されてもよく、ときとして誤った分岐命令に対するアクティビティの測定についての情報供給若しくはアクティビティの誤った測定値又は分岐命令が存在しない箇所における分岐命令の信号送出がもたらされる。このようなエラー（誤り）は、完璧な障害（故障）に至るが、ほぼ最適な電力供給消費になるだけなので許容され得る。例えば複数の間違えられた分岐命令が他よりもずっと頻繁に実行される場合、又はこのようなエラーが滅多に起こらない場合、このことは必ずしも重大な問題とはならない。
【００３１】
分岐来歴記憶ユニット１４において情報を管理するための基本的なアーキテクチャが、分岐予測のための情報の知られている管理のために使用される何れのアーキテクチャともほとんど同様になり得るが、いくつかの違いが存在してもよいことは評価されるであろう。  
【００３２】
例えば分岐来歴記憶ユニット１４は、分岐命令の予測に対する従来例と同じくらい早く、又は分岐予測の場合、普通であるようにパイプラインアーキテクチャを使用してすぐにアクティビティの測定についての情報をモード選択ユニット１８に供給する必要がない。分岐来歴記憶ユニット１４は、処理回路１２が分岐命令は検出されていることを信号送出した後にのみ、又は処理回路１２が分岐命令の結果を信号送出した後にさえ当該情報を供給してもよい。これは例えば、分岐来歴記憶ユニット１４における情報を識別するために分岐命令の命令アドレスの部分を使用することによって分岐来歴記憶ユニット１４における情報の記憶を簡略化するために使用されてもよく、前記情報は、処理回路１２が分岐命令はアドレス部分に対して検出されていることを信号送出したときにのみ供給される。
【００３３】
本発明の他の実施例のように、分岐来歴記憶ユニット１４は各々の分岐命令に対してアクティビティの二つの測定値（一方は分岐が成立させられる場合で、他方は分岐が成立させられない場合）を記録する。分岐が成立させられているか否かを示す処理回路１２によって供給される情報はどこで分岐来歴記憶ユニット１４がアクティビティモニタ１６からの情報を記憶するかを制御する。同様に処理回路１２からの当該情報は前記情報のどの記憶部分がモード選択ユニット１８に供給されるかを決定する。
【００３４】
他の例として、実行の間に分岐命令に後続する命令のアドレスはアクティビティの測定についての情報を識別するために使用されてもよい。当該実施例において分岐命令に後続する命令の命令アドレスは分岐命令の検出で取得（獲得）され、後続する命令のアクティビティについての情報の更新を識別するために分岐来歴記憶ユニット１４に供給される。後続する実行の間、当該識別アドレスが、実行の間に使用される命令アドレスと比較されてもよく、命令アドレスが識別アドレスと等しいときアクティビティの測定についての対応する情報は供給されてもよい。従って分岐が成立させられるかどうかの情報は自動的に含まれる。
【００３５】
更に他の例として、アクティビティの測定についての情報は、前記情報は記録されている分岐結果の表示と共に、分岐の最も頻繁な結果又は最も新しい結果に対してのみ記憶されてもよい。この場合、分岐来歴記憶ユニット１４が好ましくは、処理回路によって示される分岐の結果に依存してモード選択ユニット１８に供給されるべき情報を選択する。
【００３６】
ここでも上述のように、モード選択ユニット１８に供給される情報におけるエラーの量は許容され得る。それ故に上記の例において、例えば分岐の結果についての情報は無視されてもよいので、最も頻繁に発生する結果が供給される。
【００３７】
同様にアクティビティの測定は基本ブロックにおける全ての命令に対して決定される必要がなく、基本ブロックの外側では全く決定される必要がない。例えばモード選択ユニット１８は、分岐命令がフェッチされた後、複数のサイクルの後にのみ分岐の信号送出に応答してモードを選択することが知られている場合、アクティビティの測定は好ましくは、分岐命令の後の前記複数のサイクルから、及び次の分岐命令が経過した前記複数のサイクルから記録される。それ故にモード変更の効果のより正確な予測が得られる。通常、アクティビティの測定は好ましくは分岐来歴記憶ユニット１４からの情報に応答して変更モードで実行されることが知られている命令に対して決定される。
【００３８】
アクティビティをモニタする最適なインタバルからの逸脱により、やや最適な決定がもたらされるが、当該決定はしばしば許容され得る。アクティビティの測定が基本ブロックのいくつかの部分に対して決定される限り、電力供給消費における改善は実現され得る。
【００３９】
測定されたアクティビティについての情報を記録する様々な形態が使用され得る。例えば基本ブロックの最後の実行の間のアクティビティの測定が記録されてもよい。ブロックの実行の数に渡るアクティビティの実行平均（running average）が例えば式
I'b=w*Ab-(1-w)*Ib
に従って記録されてもよい。ここでI'b及びIbはそれぞれ、ブロックに対して新たに記録された情報及び先行して記録された情報であり、Abはブロックの現在の実行の間の、測定されたアクティビティである。同様に、測定されたアクティビティが先行するアクティビティとあまり異なっていない場合にのみ情報の更新はもたらされてもよい。代わりに、ブロックのいくつかの更に新たな実行の、測定されたアクティビティが記録されてもよく、中央値（メジアン（median））がモード選択ユニット１８に供給される。ブロックの次の実行に対する予測値を有する記録のいかなる形態も使用され得る。
【００４０】
アクティビティモニタ１６は、いかなる知られている形態でもアクティビティを測定し得る。一つの例は、複数の命令の実行の間に処理回路１２に供給される累積電流Iを測定するステップを含む。アクティビティAは関係式I=AVから従う。モードがモード選択ユニット１８によって選択される場合、電圧Vは決定され得る。電圧V及び累積電流IでアクティビティAは計算され得る。本発明はアクティビティモニタ１６のリセットの点から記載されているが、分岐命令の検出に応答して当然のことながら電流累積アクティビティ値をサンプリングすること、及び測定インタバルの終わりに前記値を電流アクティビティ値から減算することも代わりに可能である。この場合、アクティビティモニタ１６は続けられることが許容されてもよい。
【００４１】
本発明は、処理回路又はデバイス全体のアクティビティの単一のアクティビティ測定の点から記載されているが、本発明の範囲から逸脱することなく複数の異なるアクティビティ測定がなされてもよく、例えば処理回路１２又はデバイスの異なるコンポーネントに対して並列に記録されてもよいことは評価されるであろう。この場合、モード選択ユニット１８は異なる態様で異なる部分のモードを調整してもよい。
【００４２】
モード選択ユニット１８が電圧及び周波数を調整する例がもたらされているが、例えば予測（期待）されるアクティビティに依存して異なる処理ユニット（例えば低速且つ低電力ユニット又は高速且つ高電力ユニット）に命令実行を割り当てることによって、電力供給消費に影響を及ぼすいかなるパラメータも調整され得ることは評価されるであろう。同様に、最大実行時間を超えないという制約の下で消費電力は最小限化されなければならない例がもたらされているが、例えばプログラムの一部に対する最大実行時間についての制約、又は複数の次の命令に対する実行制約といった制約のいかなる他の形態が使用されてもよい。実際、実行時間と異なる制約が含まれてもよい。同様に、測定されたアクティビティは、電力供給消費と異なるパラメータを最適化するために使用されてもよい。
【００４３】
更に、記録されたアクティビティに依存して異なるモードを選択するためにいかなるアルゴリズムが使用されてもよい。簡単なアルゴリズムにおいて、ブロックに対して測定されたアクティビティは閾値よりも下か、又は上かに依存して二つの電力消費モードの一つが基本ブロック又はその部分に対して選択される。この場合、閾値は利用可能な実行時間の量に依存して調整されてもよい。より複雑な例において、二つよりも多くの異なるモードの間で選択がなされてもよい。他の例において、プログラムの構造についての情報、例えば異なる基本ブロックbが実行されることはなお必要とされる回数Nbの数が、異なるブロックに対してモードの選択を導くように使用されてもよいので、制約全体は満たされ、電力供給消費は最小限化される。
【００４４】
更に、プログラム進行の実行として“実行中（on the fly）”にモード選択が行われる必要はない。他の実施例において、異なる基本ブロックに対するアクティビティの測定についての記録された情報は、ある時間に分岐来歴記憶ユニット１４から読み出され、測定されたアクティビティは自身で繰り返すという仮定の下でのプログラムの将来の実行のために、又は電力供給消費を低減するためのプログラムの再構成のためにさえ、異なる基本ブロックに対するモードの割り当てを探索するように使用される。この場合、実行時間及び消費電力に対して知られている数学的な式が使用されてもよく、異なる基本ブロックに対するモードの割り当てのために探索（サーチ（search））がなされてもよい。このために、分岐来歴記憶ユニット１４における異なる基本ブロックにおけるアクティビティの簡単な和（合計）の記録が満たされる。更に命令が、選択モードをセットするプログラムに追加されてもよい。
【００４５】
分岐命令の検出は、アクティビティの測定についての情報の供給及び更新をトリガするために使用されるが、情報の記憶は分岐命令の命令アドレスを含む必要がないことは評価されるであろう。代わりに基本ブロックにおける命令のアドレス、例えば基本ブロックの始め（開始部）近くのアドレス又は基本ブロックの始めにおける命令のアドレスが使用されてもよい。この場合、分岐命令の検出はトリガとして使用され、ブロックにおける命令のアドレスは、トリガに応答して更新及び／又は取り出しのための情報を選択するために使用される。二つの命令アドレスが使用されてもよい。この場合、一方は（基本ブロックの終わりで）更新するための情報を選択するためのものであり、他方は、（基本ブロックの始めで）取り出すための情報である。    
【図面の簡単な説明】
【００４６】
【図１】処理装置を示している。
【図１】
2006521618.tif 000003
【国際調査報告】
2006521618.tif 000004
2006521618.tif 000005
2006521618.tif 000006