(57)【要約】【課題】  従来技術における問題を生じないアーキテクチャを提供すること。【解決手段】プロセッサとメモリとを有するコンピュータにおいて実行される、複数のリソースを有するマイクロプロセッサの性能に対する要件を満たすための方法は、実行前コードをメモリに読み出すステップと、実行前コードからマシン・コードを構築するステップとを含む。実行前コードは、特定の実行前コードのブロックの開始と終了とを示すインジケータと、特定の実行前コードのブロックの実行を完了するのに要求される制限時間とを含む。構築するステップは、制限時間と実際の実行にかかる時間とのパーセンテージ差を計算する命令と、求めた差をオペレーティング・システムに渡すためのシステムコールをマシン・コードに挿入するステップを含む。【選択図】  図２
2008165815.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサとメモリとを有するコンピュータにおいて実行される、複数のリソースを有するマイクロプロセッサの性能に対する要件を満たすための方法であって、
実行前コードを前記メモリに読み出すステップと、
前記プロセッサの処理により、前記実行前コードからマシン・コードを構築するステップとを含み、
前記実行前コードは、特定の実行前コードのブロックの開始と終了とを示すインジケータと、前記特定の実行前コードのブロックの実行を完了するのに要求される制限時間とを含み、
前記構築するステップは、前記制限時間と実際の実行にかかる時間とのパーセンテージ差を計算する命令と、求めた前記差をオペレーティング・システムに渡すためのシステムコールを前記マシン・コードに挿入するステップを含む、
方法。
【請求項２】
複数のリソースを有するマイクロプロセッサの性能に対する要件を満たすためのコンピュータであって、
実行前コードを格納するメモリと、
前記実行前コードからマシン・コードを構築する手段とを含み、
前記実行前コードは、特定の実行前コードのブロックの開始と終了とを示すインジケータと、前記特定の実行前コードのブロックの実行を完了するのに要求される制限時間とを含み、前記構築する手段は、前記制限時間と実際の実行にかかる時間とのパーセンテージ差を計算する命令と、求めた前記差をオペレーティング・システムに渡すためのシステムコールを前記マシン・コードに挿入する、
コンピュータ。
【請求項３】
請求項１に記載の方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、マイクロプロセッサの電力消費に関し、更に特定すれば、マシン・コード・ビルダによって得られるマイクロプロセッサのための電力消費低減に関する。
【背景技術】
【０００２】
携帯型コンピュータの使用傾向が続く中で、コンピュータ・システムにおける電力管理はますます重要になっている。特に、コンピュータ業界は、より多くの内部回路を有し高速で動作するいっそう強力なマイクロプロセッサを用いるようになっている。しかしながら、バッテリの技術は、現在の携帯型コンピュータの電力消費の増大に十分に追いつけるほど進歩していない。この問題に対処するため、電力消費を低減する目的で、様々な電力管理技法が実施されている。
【０００３】
従来のマイクロプロセッサは、様々な特別の機能ユニットまたはリソースを含む場合がある。これらを用いて、より効率的に命令を実行し、電力を節約し、ソフトウェアよりも性能を上げている。かかるユニットには、浮動小数点ユニット、コプロセッサ、分岐予測ユニット等が含まれ得るが、これらが全てではない。多くの電力管理技法は、これらのユニットの電力消費の低減に焦点を当てている。特に、漏れスタンバイ電力が全プロセッサ電力の大きな部分を占めるようになると、可能な場合にはユニットをオフにすることが望ましい。
【０００４】
電力管理技法を可能とするために、２つの一般的な手法が存在する。第１のものは、ハードウェア論理を用いて、マイクロプロセッサ・ユニットに供給される電力を動的に制御することを含む。第２のものは、マイクロプロセッサ・ハードウェアでなくソフトウェアに電力管理処理の責任を負わせることを含む。
【０００５】
動的制御技法に関して、とりわけＩＢＭ社から入手可能なＰｏｗｅｒＰＣマイクロプロセッサは、命令ストリームを監視し、命令を実行するために必要でないユニットを活動停止にすることによって、電力消費を動的に制御する一つの例である。動的制御に伴う問題は、命令ストリームを連続的に監視し解読するために、電力を消費するハードウェアを必要とすることである。
【０００６】
米国特許第５９９６０８３号は、マイクロプロセッサ・ハードウェアでなくソフトウェアに電力管理処理の責任を負わせる、発展しつつある技法の一例である。Ｇｕｐｔａ等の特許では、機能ユニットごとに電力制御レジスタを有するマイクロプロセッサが記載されている。この米国特許は、ソフトウェアによって、各機能ユニットの電力レジスタの設定を調整すると述べている。電力レジスタは、例えばクロック周波数または電圧供給を制御することによって、各機能ユニットの電力消費を制御する。しかしながら、この米国特許は、電力制御レジスタにどのような値を書き込むべきであるかをソフトウェアが知っていることを仮定しており、ソフトウェアがどの機能ユニットを管理するかをどのように決定するかについては何の指示も示していない。ソフトウェアによって制御される電力管理の別の例は、Ｔｒａｎｓｍｅｔａ社のＣｒｕｓｏｅプロセッサであり、これは、ｘ８６ベースのＣＰＵチップである。Ｃｒｕｓｏｅプロセッサが用いる方法論においては、ソフトウェア翻訳層がｘ８６命令をＣｒｕｓｏｅ命令に翻訳する。更に、プロセッサは、命令を解釈し、繰り返し命令のセットを認識する。翻訳において消費される電力を最小に抑えるために、情報を翻訳キャッシュに格納し、格納したブロックを繰り返し命令のために再使用することができる。
【０００７】
ソフトウェアによって制御される電力管理に伴う別の問題は、ソフトウェアが従来、効率的な電力消費ではなく、速度効率の観点で高性能が得られるように構成されているということである。例えば、ソフトウェアは、実行中にある特定の機能ユニットを多くの異なる時点で呼び出せるように、速度を重視して構成される。このソフトウェアを実装すると、結果として、機能ユニットは実行中に何度も電力消費が調整されることがある。多くの場合、この連続的な電力消費の変動は、電力の節約効果を小さくし、これが性能を低下させることがある。ある特定のソフトウェア最適化技法は、性能を向上させるためのプロファイル指向コンパイルを含む。フィードバック再コンパイルは、前の実行中に発生したプロファイル・データを用いて、基本ブロック再配列等の実行時最適化を行い、誤って予測された分岐および命令キャッシュ・ミスの数を減らす。残念ながら、上述の最適化技法はどれも、電力消費および性能に焦点を当てて適用されていない。
【０００８】
従来の電力管理技法の別の課題は、性能の維持である。例えば、ソフトウェアによって制御される電力管理方式において、機能ユニットを頻繁にオンおよびオフする場合がある。これは電力をある程度節約するが、リソースに再び通電するためには、ＧＨｚ級のプロセッサ上で多くのサイクル（例えば＞１０００）を要し得るので、著しく性能が損なわれる。上記の米国特許は、選択された機能ユニットがフル・パワーに達するまでマイクロプロセッサの動作を一時的に停止させることで、この状況に対処しようとしている。しかしながら、この解決策は、リソースの再通電の間に生じる性能の低下には対処しない。
【特許文献１】米国特許第５９９６０８３号
【発明の開示】
【発明が解決しようとする課題】
【０００９】
前述のことに鑑み、背景技術における問題を生じない電力管理技法およびアーキテクチャに対する要望が存在する。
【課題を解決するための手段】
【００１０】
本発明は、プロセッサとメモリとを有するコンピュータにおいて実行される、複数のリソースを有するマイクロプロセッサの性能に対する要件を満たすための方法を提供する。
【００１１】
当該方法は、実行前コードをメモリに読み出すステップと、プロセッサの処理により、実行前コードからマシン・コードを構築するステップを含む。
【００１２】
実行要件は、特定の実行前コードのブロックの開始と終了とを示すインジケータと、特定の実行前コードのブロックの実行を完了するのに要求される制限時間とを含む。
【００１３】
そしてマシン・コードの構築の際、制限時間と実際の実行にかかる時間とのパーセンテージ差を計算する命令と、求めた差をオペレーティング・システムに渡すためのシステムコールがマシン・コードに挿入される。
【００１４】
本発明はそのような方法を実行するコンピュータ、またそのような方法をコンピュータに実行させるためのプログラムとして把握することもできる。
【００１５】
以下、本発明の実施形態について、図面を参照しながら、詳細に説明する。本発明の上述のおよび他の特徴は、以下の詳細な説明から明らかとなろう。
【発明を実施するための最良の形態】
【００１６】
構成の目的のためにのみ、ここでの説明は以下の項目を含む。すなわち、I．概要、II．読み取り−構築、Ａ．ユーザ定義指令、Ｂ．ビルダ誘導のリソース使用、Ｃ．再構成コード、III．電力節約プロファイリング、IV．コード・ブロック実行要件、V．再通電中のリソース・エミュレーション、およびVI．機能コンテキスト保管である。
【００１７】
Ｉ．概要
本発明は、とりわけ、実行前コードをマシン・コード・ビルダに読み取り、実行前コードからマシン・コードを構築して、持続時間すなわちリソースが必要とされない時間量を最大化することによって電力消費を低減するための、電力管理技法および関連するアーキテクチャを含む。
【００１８】
添付図面を参照すると、図１は、マイクロプロセッサまたは中央演算処理装置（ＣＰＵ）１２を含むコンピュータ・システム１０のブロック図である。システム１０は、メモリ１４、入出力デバイス（Ｉ／Ｏ）１６、バス１７、１以上のリソース・レジスタ２０、リソース通電レジスタ２１および他のハードウェア・レジスタ（図示せず）を含むスタック・フレーム１８、ならびに電力節約マシン・コード・ビルダ２２（以後、ＭＣビルダと呼ぶ）を含む。処理タスクに関連するデータを格納するため、データベース２３も設けることができる。更に、システム１０は、キーボード、ディスプレイ、マウス、ネットワーク・システム、モデム、スキャナ、音声認識システム、プリンタ、ディスク・ドライブ等（図示せず）の様々な周知のインタフェースのいずれかを含むことも可能である。システム１０内に、キャッシュ・メモリ、通信システム、システム・ソフトウェア等の追加の構成要素も組み込むことができる。メモリ１４は、プログラム・プロダクト２４を含み、これは、マイクロプロセッサ１２によって実行されると、様々な機能を実現する。更に、メモリ１４は、機能−リソース・レジスタ・データ・テーブル６０を含む。その目的は以下で説明する。図１において、ＭＣビルダ２２は独立した構造として示すが、ハードウェア内に設けることも可能であり、あるいは、ソフトウェアとして、すなわちＭＣビルダを適用するアプリケーションとは別個のプログラム・プロダクト２４として設けることも可能である。
【００１９】
また、マイクロプロセッサ１２は、複数のリソースＲ１〜Ｒｎを含む。リソースとは、ここでは、特定の機能を実行するように構成された一組の論理として定義する。リソースは、例えば、特定の機能をより効率的に実行し、電力を節約し、性能を向上させるために設けることができる。例示的には、リソースは、浮動小数点ユニット、固定小数点ユニット、分岐予測ユニット、整数ユニット、Ｉ／Ｏ、キャッシュ・メモリ、デジタル信号プロセッサ、レジスタ保管エンジン、バス、マルチメディア・サブシステム、コプロセッサ、データ変換器、マイクロコントローラ、その他の特定の目的、機能、またはタスクの提供に専用の論理を含み得るが、これらが全てではない。リソースＲ１〜Ｒｎは、マイクロプロセッサ１２の一部として示すが、マイクロプロセッサ１２の外部に設けることも可能である。
【００２０】
各リソース・レジスタ（ＲＳＲＣ＿ＲＥＧ）２０は、電力消費に関してリソースに指示する値を格納する。リソース・レジスタ２０の各ビットは、特定のリソースに対する要求を規定する。例えば、ビット０は、浮動小数点ユニット（ＦＰ）、例えばリソースＲ１、用に予約されている。ビット０がゼロの場合、ＦＰユニットを電力節約モードにすべきであることを示すことができる。ハードウェアは、リソース・レジスタ２０の値を用いて、特定のリソースをオフにしたり、低電力モードに切り替えたりする。
【００２１】
図２を参照すると、ＭＣビルダ２２が更に詳細に示されている。ＭＣビルダ２２の動作は、後で説明するように、既知のまたは後に作成されるある種の実行前コードからマシン・コードを発生するために、任意の段階において行うことができる。例えば、ＭＣビルダ２２は、コンパイル、合体、変換、最適化、リンク、リンク後最適化、および、実行前コードからマシン・コードを生成するための既知のまたは後に作成される任意の他のステップ、のうちのいずれの段階でも動作可能である。ここで、実行前コードとは、ソース・コード、または、まだ実行可能マシン・コードではない中間タイプのコードを指す。ソース・コードとは、事前コンパイルされたユーザ書き込み可能な任意のコード・フォーマットを指す。マシン・コードとは、アプリケーションとして実行するための任意の最終コードを指す。マイクロプロセッサ１２（図１）は、マシン・コード２８の命令を実行する。ＭＣビルダ２２は、読み取りユニット３２および構築ユニット３４を含む。更に、ＭＣビルダ２２は、プロファイル・ユニット３６、再通電エミュレーション・ユニット３８、コード・ブロック実行要件ユニット４０、および機能コンテキスト保管ユニット４２を含むことができる。上述のアーキテクチャの詳細および機能については、以下で更に詳細に述べる。また、ＭＣビルダ２２は、性能向上に向けてマシン・コードを構築するように機能する従来の性能オプティマイザ／プロファイラ５０を含んでいてもよい。
【００２２】
II．読み取り−構築
上述のように、本発明は、とりわけ、読み取りユニット３２（図２）を用いて実行前コードをＭＣビルダ２２に読み取り、構築ユニット３４（図２）を用いて実行前コードからマシン・コード２８を構築して、リソースを必要としない持続時間を最大化することによって電力消費を低減する、電力管理技法および関連するアーキテクチャを含む。
【００２３】
Ａ．ユーザ定義リソース指令
一実施形態では、ソース・コード内のリソース指令５２によって、マシン・コード２８の少なくとも１つのブロックの実行中に必要でない１つのリソースＲ１〜Ｒｎ（図１）を識別する。この場合、実行前コード２６はソース・コードである。ここで、リソース指令とは、リソース使用または電力消費に関係するソース・コード命令である。リソース指令５２は、特定のコード・ブロックに必要でないのはどのリソースであるかを知っているソフトウェア開発者によって、ソース・コードに挿入することができる。構築ユニット３４は、この指令を、マシン・コード２８において、リソースＲ１〜Ｒｎの使用または電力消費を指示するために各リソース・レジスタ２０（図１）への書き込みを指示する適切なマシン・コード命令（以下、ＭＣ命令）５４に翻訳する。各リソース指令５２は、ソース・コード内のどこにでも配置することができ、ソフトウェア開発者によって知られている未使用リソースを指定する。リソース指令５２は、プログラム・スコーピング・ルールによって左右され、当該スコープが終了するまで、ソース・コード・ブロックまたは機能ブロック内に配置された指令は有効のままであるようになっている。
【００２４】
例示的なリソース指令５２は、＃ｒｅｓｏｕｒｃｅ＜ｒｅｓｏｕｒｃｅ＿ｎａｍｅ＞＝＜ｂｉｎａｒｙ＿ｖａｌｕｅ＞とすることができる。ここで、＜ｒｅｓｏｕｒｃｅ＿ｎａｍｅ＞は、リソース、例えば浮動小数点ユニットのＦＰ、分岐予測ユニットのＢＰ、固定小数点ユニットのＦＸ等の名前である。＜ｂｉｎａｒｙ＿ｖａｌｕｅ＞は、リソースが必要でない場合はゼロであり、リソースが常に必要である場合は非ゼロである。実際の例は、＃ｒｅｓｏｕｒｃｅ  ＦＰ＝０、ＢＰ＝０、ＦＸ２＝０とすることができる。この例は、浮動小数点ユニット、分岐予測ユニット、および第２の固定小数点ユニットが必要でないことを示す。構築ユニット３４は、これらの指令をＭＣ命令５４（図２）に変換し、それによって、これらのリソースの電源を切る、すなわちオフにする。ＭＣ命令５４は、既知の方法で各リソースの電力消費または使用を指示するリソース・レジスタ２０（図１）への書き込みを行う。例えば、リソース・レジスタ２０は、リソースのクロック周波数をゼロにするよう指示して、リソースの電源を切ることができる。ＰｏｗｅｒＰＣをベースとするプロセッサでは、「ｍｔｓｐｒ」命令を用いてこの機能を提供することができる。
【００２５】
Ｂ．ビルダ誘導のリソース使用
第２の代替的な実施形態では、マシン・コード２８の少なくとも１つのブロックの実行中に必要とされないリソースＲ１〜Ｒｎ（図１）を、構築ユニット３４が、実行前コード２６から決定する。すなわち、構築ユニット３４は、実行前コードを分析して、リソース要求を決定する。この場合、構築ユニット３４は、各機能またはブロックの範囲内で実行前コード２６を分析して、どのリソースＲ１〜Ｒｎ（図１）を用いるかまたは用いないかを決定するための機構を含む。一例では、構築ユニット３４は、実行前コード２６を分析して、リソース固有コードを含む分岐コードを探し出すことができる。この分析から、１以上の共通未使用リソースを有するマシン・コードの１以上のブロックを決定することができる。同様に、構築ユニット３４は、例えばマルチメディア・コプロセッサが用いられていない実行前コード２６のブロックを識別することができる。
【００２６】
Ｃ．再構成コード
構築ユニット３４は、分析法を用いて、マシン・コード２８を再配列または再構成して、リソースを必要としない持続時間を最大化することによって、電力消費を低減する。一例では、構築ユニット３４は、性能最適化のために一般的に用いられるものと同様の依存関係分析を用いるが、それはマシン・コード２８を再構成して、リソースを必要としない持続時間を最大化するためである。一例では、構築ユニット３４は、１以上の共通未使用リソースを有するマシン・コード・ブロックを取得し、それらを順次実行するよう再構成し、これによって、未使用のリソースを必要としない持続時間を最大化することができる。これは、ＭＣ命令５４を再構成して性能を最大化する従来のコンパイラ最適化とは対照的である。また、構築ユニット３４は、マシン・コードのあるブロックがプロセッサのリソースを用いない場合、このブロックの実行中は通電を止めるようリソースに指示する。例えば、リソースＲ１がマシン・コード・ブロック中に用いられない場合、リソースＲ１をオフにする。また、構築ユニット３４は、従来の性能オプティマイザ／プロファイラ５０と共に動作して、ユーザの好みに従って性能および電力消費を最適化することができる。
【００２７】
III．電力節約プロファイリング
本発明の別の態様は、ＭＣビルダ２２の一部として設けられるプロファイル・ユニット３６を含む。動作において、構築ユニット３４は、実行前コード２６からマシン・コード２８を生成し、プロファイル・ユニット３６は、構築ユニット３４が発生したマシン・コード２８を実行し、実行環境から実行時データを収集して、リソース要求を判定する。次いで、構築ユニット３４が実行時データを用いて、マシン・コード２８を再構成し、リソースを必要としない持続時間を最大化することによって、電力消費を低減する。動作を例示するために、リソースＲ１（図１）が漏れ電流によって多くの電力を消費し、まれにしか用いられず、従って、長期間にわたってオフされていると好ましいものと仮定する。また、初期分析の間に、構築ユニット３４は、マシン・コード２８を構築して、リソースＲ１を呼び出し、その各機能を実行すると仮定する。しかしながら、プロファイル・ユニット３６を用いた分析は、最初のマシン・コード２８の実行から、リソースＲ１は必要であるが、他の使用可能なリソースＲ２およびＲ３がリソースＲ１と同じ機能をそれより高い電力効率で実行すると示し得る。次いで、プロファイル・ユニット３６は、構築ユニット３４に、リソースＲ１の呼び出しを、リソースＲ２およびＲ３に対する適切な命令によって置換するよう指示する。結果として、特定の機能が実施され、リソースＲ１は長時間にわたってオフのままであり、このため電力消費が低減される。
【００２８】
IV．コード・ブロック実行要件
本発明の別の様態によって、リソース性能を調整して、マシン・コード・ブロックに対するリアルタイム実行要件を満たすことができる。特に、ソフトウェア開発者は、ソース・コード・ブロックに対する実行要件を知っていると、上述のリソース指令５２を、ソース・コード内のどこにでも提供して、その要件を実装することができる。ＭＣビルダ２２のコード・ブロック実行要件ユニット４０（以下、ＣＰＥＲユニットと呼ぶ）は、実行要件（すなわちリソース指令５２）に応答して、構築ユニット３４に、マシン・コード２８に実行要件（ＥＲ）命令６８を挿入するよう指示し、これによってリソースの性能を調整して実行要件を満たす。
【００２９】
実行要件は、様々な形態を取り得る。一実施形態では、実行要件は、各リソースＲ１〜Ｒｎに対する性能レベルとすることができる。この点で、マシン・コード・ブロックは、例えば、ある特定の１００万命令／秒（ＭＩＰＳ）性能レベルを必要とする場合がある。別の実施形態では、実行要件は、時間制約すなわち各マシン・コード・ブロックが実行しなければならない持続時間または時間期間とすることができる。この点で、マシン・コード・ブロックは、多くの場合、既知の実行時間制約を有する。例えば、ビデオ・ゲームは、ある数のグラフィック表示フレームが毎秒表示されること、例えば１フレームが毎秒３０回表示されることを要求する場合がある。換言すれば、ある機能を完了しなければならない、時点Ａから時点Ｂまでの予め設定された持続時間は、既知である。また、他のタイプの実行要件も可能である。
【００３０】
実行要件構造に関して、同時に多数の実行要件に対処可能とするため、各リソース指令５２には記号名が関連付けられている。例えば、時間制約タイプの実行要件の指令は、＃ＴＩＭＥ＿ＳＴＡＭＰ  ｆｒａｍｅｓ＿ｐｅｒ＿ｓｅｃｏｎｄ，３３とすることができる。
【００３１】
性能レベル・タイプの実行要件の場合は、リソース指令５２は単に性能レベルを指定することだけが必要である。一例は、リソース指令５２に、例えば＃ＰＥＲＦ＿ＳＴＡＭＰ３５０のようなドライストンＭＩＰＳ（ＤＭＩＰＳ）相当値を提供することであろう。ここで、３５０は、用いるＭＩＰＳ値を示す。この場合、ＣＰＥＲユニット４０は、構築ユニット３４に、ＥＲ命令６８を挿入するよう指示して、単にこの値をシステム・コールによってオペレーティング・システムに渡し、このため、オペレーティング・システムは、適切なリソース性能レベルを調節して指定された性能レベルを満たすことができる。プロセッサのＤＭＩＰＳレベルは周波数に比例するので、各マイクロプロセッサ１２は、適切な調節が可能なＤＭＩＰＳ／ＭＨｚレベルを有していれば良い。
【００３２】
時間制約タイプの実行要件の実装では、「性能に影響を与えるパラメータ」を分析するよう構成されたＥＲ命令６８を必要とし、実行要件を満たすためにどのようなリソース性能調整を行わなければならないかを決定する。性能に影響を与えるパラメータには、例えば、初期クロック周波数、プロセッサ速度、実行しなければならない命令数、命令を完了させるために必要な平均サイクル数、その他の性能に影響を与える任意のパラメータを含み得る。このタイプの実行要件のリソース指令は、例えば、＃ＴＩＭＥ＿ＳＴＡＭＰ  ｆｒａｍｅｓ＿ｐｅｒ＿ｓｅｃｏｎｄ，３３とすることができる。この指令５２は、同じ「ｆｒａｍｅ＿ｐｅｒ＿ｓｅｃｏｎｄ」記号名を参照する前のタイム・スタンプに遭遇してから３３ミリ秒後に、実行がコードのこの点まで進むべきであることを示す。ここで、タイム・スタンプとは、どこで時間制約が開始または終了するかを示す、ソース・コード内のポインタまたはインジケータである。この実行要件に基づいて、ＣＰＥＲユニット４０は、必要な性能パラメータを分析し適切な性能調整を指示することができるＥＲ命令６８を発生するよう構築ユニット３４に指示する。例えば、ＥＲ命令６８は、初期性能パラメータによって実行要件を満足させることができるかを決定する。
【００３３】
初期設定によって実行要件を満足させることができない場合、マシン・コード２８の各ブロックのために性能を調整する。性能調整は、クロック周波数調整、電圧調整、リソースの再割り当て（すなわち機能を実行するために用いるリソースの変更）、複数の機能を実行中の場合の「機能」スケジューリングの調整、および性能に影響を与える他の任意の調整のうちの少なくとも１つ等、様々な形態を取ることができる。ここで、機能とは、マイクロプロセッサ１２を呼び出してタスクを完了させる任意のソフトウェア・プリケーション、ハードウェア（他のプロセッサを含む）とすることができる。実行要件を超えた場合、ＥＲ命令６８は、例えばクロック周波数の低下のような性能の低減を指示して、処理速度を遅くし、従ってリソースによる電力消費を小さくする。例えば、実行要件がマシン・コードの１０００万命令について３３ｍｓの持続時間を要求し、かつＥＲ命令６８が、実際の実行時間が２０ｍｓとなることを決定する場合、コード・ブロックの実行中にクロック周波数を遅くすることができる。これに対して、実行要件が満足されない場合、ＥＲ命令６８は、例えばクロック周波数を高くして処理速度を上げるような性能の向上を指示することができる。
【００３４】
実行要件を正確に満足させることが必要でない場合があることは認められよう。この場合、性能を向上させるまたは低下させる量は、制御を十分に作用させるための何らかのダンピングおよびヒステリシスに加えて、目標と実際の実行とのパーセンテージ差を考慮しなければならない。
【００３５】
更に、時間制約実行要件の実装に関して、どのようにこれをＥＲ命令６８にコンパイルすることができるかについての一実施形態について、ここで説明する。しかしながら、これを実装できる他の多くの方法が存在し、その全ては本発明の範囲内であると考えられることは認められよう。説明の目的のため、マイクロプロセッサ１２の命令セット・アーキテクチャ（ＩＳＡ）に付加的な命令は追加されないと仮定するが、かかるサポートを提供することが有利な場合もある。代わりに、オペレーティング・システムにおいてｔｉｍｅ＿ｓｔａｍｐシステム・コールが定義され、以下のように機能によって用いられると仮定する。構築ユニット３４は、リソース指令５２の記号名によって参照される大域変数として長整数を割り当て、タイム・スタンプを保持する。上述の例では、ｆｒａｍｅｓ＿ｐｅｒ＿ｓｅｃｏｎｄが記号名である。タイム・スタンプは、機能によってゼロに初期化する。すなわち、有効なタイム・スタンプは無い。構築ユニット３４によってリソース指令５２のために発生したマシン・コード２８は、最初に、現在のタイム・スタンプをリソース・レジスタ２０にロードする。このタイム・スタンプは、タイム・ベースまたはリアルタイム・クロック機構（図示せず）から得られる。次に、メモリ内の大域変数に保持されている時間制約のための前の値を別のレジスタ２０にロードする。前の値がゼロである場合、新しい値を大域変数に格納し、処理が継続する。前の値が有効タイム・スタンプである場合、前の値と現在の値との差を、目標の一定値、例えば上述の例では３３ｍｓと比較して、構築ユニット３４によって他の大域変数と共に格納する。パーセンテージ差すなわち（（現在の値−前の値）−目標の値）／目標の値を計算し、システム・コール機構を用いてオペレーティング・システムに渡す。レジスタ・サイズがタイム・スタンプを保持するのに十分なほど広いと仮定すると、擬似ＥＲ命令６８は以下のようにすることができる。
【表１】
2008165815.tif 000003
【００３６】
V．再通電中のリソース・エミュレーション
浮動小数点ユニット等のリソースＲ１〜Ｒｎ（図１）を再通電することは、ＧＨｚ級のプロセッサで１０００サイクル以上を要する場合がある。この処理時間を利用するため、本発明が提供する手法においては、リソースを再通電している間にマシン・コード２８（図２）がリソースを用いないリソース・エミュレーション・コードに分岐することを可能とする。特に、リソース通電レジスタ２１（図１）は、リソースの電源が入って使用可能であるか否かを示すように定義することができる。再通電エミュレーション・ユニット３８は、実行前コード２６を分析して、特定のリソースのための命令を含む分岐コードが存在するかを決定する。リソースのための分岐コードが存在する場合、再通電エミュレーション・ユニット３８は、構築ユニット３４に、マシン・コード２８に再通電命令ブロック（ＲＩブロック）７０を挿入するよう指示する。ＲＩブロック７０は、決定命令７２を含み、これは、実行中にリソース通電レジスタ２１（図１）を調べて、リソースが通電されて使用可能であるかを調べる。テストが否定結果を戻すと、ＲＩブロック７０の分岐命令７４（図２）は、リソースが実行する命令をエミュレートすることができるリソース・エミュレーション・コード７６を含む代替的なコード・ブロックに分岐する。決定命令７２は定期的に反復されて、リソースの通電レジスタ２１（図１）のテストを継続し、リソースが通電されているかを調べる。リソースが通電されると、リソース通電レジスタ２１は有効と示され、決定命令７２のテスト結果が肯定となる。この場合、分岐命令７４は実行をマシン・コード２８に戻し、これがリソースを用いる。
【００３７】
VI．機能コンテキスト保管
当業者には既知のように、マイクロプロセッサ１２は、呼び出されて、保留中の様々な機能のためにマシン・コード２８を実行することができる。ここでも、機能とは、マイクロプロセッサ１２を呼び出してタスクを完了する任意のソフトウェア・アプリケーション、ハードウェア（他のプロセッサを含む）とすることができる。これらの動作に対応するため、マイクロプロセッサ１２は、それを用いているエンティティ間のコンテキスト切り替えを実行する。例えば、１ｍｓの間はあるアプリケーションのコードを実行し、次の１ｍｓの間は別のアプリケーションのコードを実行する等によって、タイム・スライシングを行うことができる。しかしながら、各機能は、異なるリソース使用および電力消費を必要とする場合がある。従って、マイクロプロセッサ１２は、各機能の好ましいリソース電力消費データの間の切り替えを迅速に行う能力を備えると有利である。ここで言うリソース電力消費データは、機能ごとに、使用中または未使用のリソース、各使用中リソースの電力消費設定、およびリソースの電力管理に有用な任意の他の情報を含み得る。
【００３８】
この動作に対応するため、ＭＣビルダ２２の機能コンテキスト保管ユニット４２を構成して、構築ユニット３４に、マシン・コード２８にコンテキスト切り替え保管コード８０を挿入するよう指示する。コンテキスト切り替え保管コード８０は、待ち状態の機能のためのリソース電力消費データを保管するための命令、および、コンテキスト切り替えが生じた場合すなわち機能の変化が生じた場合に次の機能のためのリソース電力消費データを呼び戻すための命令を含む。リソース電力消費データは、多くの形態で格納することができる。一実施形態では、リソース電力消費データは、機能−リソース・データ・テーブル６０（図１）の形態で複数の機能について格納される。次の機能を呼び出すと、コンテキスト切り替え保管コード８０は、呼び出された機能についてリソース電力消費データを呼び戻し、適切な値をリソース・レジスタ２０（図１）に置く。図１に示すように、スタック・フレーム１８を拡張して、リソース・レジスタ２０のためのスペースを含ませる。新たな機能について、各リソース電力消費データ値を、スタック・フレーム１８の一部としてスタックにプッシュし、リソース・レジスタ２０を形成する。機能コンテキスト保管によって、マイクロプロセッサ１２は、機能間で迅速に切り替えを行うことができ、機能ごとの好ましい電力管理設定を呼び戻すことができる。
【００３９】
先の考察において、記載した方法ステップは、メモリに格納されているプログラム・プロダクト２４の命令を実行する、システム１０のＣＰＵ１２等のプロセッサによって実行されることは理解されよう。ここに記載した様々なデバイス、モジュール、機構、およびシステムは、ハードウェア、ソフトウェア、またはハードウェアおよびソフトウェアの組み合わせにおいて実現可能であり、図示以外の態様で区分できることは理解されよう。それらは、ここに述べた方法を実行するように構成されたいかなるタイプのコンピュータ・システムまたは他の装置によっても実施可能である。ハードウェアおよびソフトウェアの典型的な組み合わせは、コンピュータ・プログラムを有する汎用コンピュータ・システムであり、このプログラムはロードされて実行されると、ここに記載した方法を実行するようにコンピュータ・システムを制御する。あるいは、本発明の機能タスクの１つ以上を実行するための専用のハードウェアを含む特定用途コンピュータも使用可能である。また、本発明は、コンピュータ・プログラム・プロダクトに埋め込むことも可能であり、このプロダクトは、ここに記載した方法および機能の実装を可能とする機構の全てを備え、コンピュータ・システムにロードされると、これらの方法および機能を実行することができる。ここで、コンピュータ・プログラム、ソフトウェア・プログラム、プログラム、プログラム・プロダクト、またはソフトウェアは、情報処理機能を有するシステムが、直接的に、または（ａ）別の言語、コードもしくは表記への変換、（ｂ）異なる形態での再生の後に、特定の機能を実行するように意図された一組の命令の、任意の言語、コードまたは表記による任意の表現を意味する。
【００４０】
本発明について、先に概説した特定の実施形態に関連付けて説明したが、当業者には、多くの代替、修正、および変形を行い得ることは明らかであろう。従って、上述の本発明の実施形態は、限定ではなく例示的なものとして意図される。特許請求の範囲に示される本発明の精神および範囲から逸脱することなく、様々な変更を行うことができる。
【図面の簡単な説明】
【００４１】
【図１】ソフトウェアによって制御される電力管理のためのマシン・コード・ビルダを有するコンピュータ・システムのブロック図である。
【図２】図１のマシン・コード・ビルダのブロック図である。
【図１】
2008165815.tif 000004
【図２】
2008165815.tif 000005