(57)【特許請求の範囲】
【請求項１】
電力管理機能を備えたマイクロプロセッサであって、複数の機能ユニットと、各々が１つの機能ユニットに対応し１つの値を記憶する複数のフィールドを有する電力制御レジスタと、各機能ユニットによって消費される電力量を決定するため、各機能ユニットに対応する上記フィールドに記憶された値に応じて各機能ユニットの実行速度を調節する手段と、電力制御レジスタ・フィールドが調節された後当該機能ユニットが使用可能となるまでに要するクロック・サイクル数に対応する待ち時間値を記憶する待ち時間フィールドを有する電力待ち時間レジスタとを含み、上記クロック・サイクル数がコンパイラによって仮定され、上記機能ユニットが、電力制御レジスタの対応するフィールドが該機能ユニットを通常状態に置くように変更された後該機能ユニットが使用可能となるまでその実行を停止させる手段を含む、マイクロプロセッサ。
【請求項２】
上記電力制御レジスタの各フィールドの値がマイクロプロセッサの製造工程中に設定される、請求項１に記載のマイクロプロセッサ。
【請求項３】
上記電力制御レジスタの各フィールドの値がマイクロプロセッサの半導体組立工程中に設定される、請求項２に記載のマイクロプロセッサ。
【請求項４】
上記電力制御レジスタの各フィールドの値がマイクロプロセッサのパッケージング工程中に設定される、請求項２に記載のマイクロプロセッサ。
【請求項５】
上記電力制御レジスタの各フィールドの値がマイクロプロセッサによって実行されるソフトウェアによって設定される、請求項１に記載のマイクロプロセッサ。
【請求項６】
上記マイクロプロセッサがパイプラインを含み、電力制御レジスタの１つのフィールドの上記値に応じて、該パイプラインを停止させる手段を更に含む請求項１に記載のマイクロプロセッサ。
【請求項７】
各機能ユニットの実行速度を調節する上記手段が、電力制御レジスタの対応するフィールドの値に応じて当該機能ユニットの電力を停止するため、機能ユニットと電力供給端子の間に配置されたトランジスタを含む、請求項１に記載のマイクロプロセッサ。
【請求項８】
各機能ユニットの実行速度を調節する上記手段が、電力制御レジスタの対応するフィールドの値に応じて、機能ユニットへのデータ入力に関する状態移行を実行停止状態にさせる手段を含む、請求項１に記載のマイクロプロセッサ。
【請求項９】
上記マイクロプロセッサがクロック信号を生成して該クロック信号を機能ユニットに送信するクロック回路を更に含み、各機能ユニットの実行速度を調節する上記手段が、電力制御レジスタの対応するフィールドの値に応じて上記クロック信号率を調節する手段を含む、請求項１に記載のマイクロプロセッサ。
【請求項１０】
上記クロック信号率を調節する手段が、電力制御レジスタの対応するフィールドの値に応じて、上記クロック信号率をゼロに調節する手段を含む、請求項９に記載のマイクロプロセッサ。
【請求項１１】
上記電力待ち時間レジスタが、対応する機能ユニットに関する待ち時間値を各々が記憶する複数の待ち時間フィールドを含む、請求項１に記載のマイクロプロセッサ。
【請求項１２】
電力管理機能を持つコンピュータであって、複数の機能ユニット、および、各々が上記機能ユニットの１つに対応する複数の電力制御レジスタ・フィールドを持つ電力制御レジスタを備えたマイクロプロセッサと、上記マイクロプロセッサに接続して、上記マイクロプロセッサによる実行が可能な命令を記憶するメモリと、上記メモリに記憶され、電力消費の水準を制御する値を上記電力制御レジスタ・フィールドに保存することを当該マイクロプロセッサに要求する実行可能コードと、上記電力制御レジスタ・フィールドに保存された値に応じて各機能ユニットの実行速度を調節して各機能ユニットによって消費される電力を調整する手段と、を含み、上記マイクロプロセッサが、電力制御レジスタ・フィールドが調節された後当該機能ユニットが使用可能となるまでに要するクロック・サイクル数に対応する待ち時間値を記憶するため各機能ユニットに対応する１つまたは複数の待ち時間レジスタ・フィールドを持つ電力待ち時間レジスタを更に含み、上記クロック・サイクル数がコンパイラによって仮定され、待ち時間値によって指定されたクロック・サイクルの後命令が発せられるが当該機能ユニットがまだ使用可能でない場合該機能ユニットが使用可能になるまでその命令の実行を停止させる手段を上記機能ユニットが含む、コンピュータ。
【請求項１３】
上記マイクロプロセッサがクロック信号を生成して該クロック信号を機能ユニットに送信するクロック回路を更に含み、各機能ユニットの実行速度を調節する上記手段が、電力制御レジスタの対応するフィールドの値に応じて上記クロック信号率を調節する手段を含む、請求項１２に記載のコンピュータ。
【請求項１４】
クロック信号率を調節する上記手段が、クロック信号の周波数を、電力制御レジスタに記憶された値に応じて、整数比率で分割するクロック分割回路を含む、請求項１３に記載のコンピュータ。
【請求項１５】
上記クロック分割回路が、電力制御レジスタに記憶された値に応じて、クロック信号の周波数をゼロに調節する、請求項１４に記載のコンピュータ。
【請求項１６】
電力制御レジスタのフィールドに記憶された値に応じて、データ・バス・インターフェースの幅を第１のビット数から第２のビット数へ減少させる手段を更に含む、請求項１２に記載のコンピュータ。
【請求項１７】
上記マイクロプロセッサが多段階方式のパイプラインを含み、上記機能ユニットが、上記電力制御レジスタ・フィールドに記憶された値に応じて、多数の停止信号を上記パイプラインに送出する、請求項１２に記載のコンピュータ。
【請求項１８】
複数の機能ユニットを有するマイクロプロセッサを備えたコンピュータにおいて消費電力を最小にする方法であって、上記複数の機能ユニットの１つにそれぞれ対応する複数のフィールドを持つ電力制御レジスタおよび電力制御レジスタ・フィールドが調節された後当該機能ユニットが使用可能となるまでに要するクロック・サイクル数に対応する待ち時間値を記憶する待ち時間フィールドを有する電力待ち時間レジスタを備えたマイクロプロセッサを準備し、上記電力制御レジスタの各フィールドに１つの値を記憶し、上記電力待ち時間レジスタの各待ち時間フィールドに待ち時間値を記憶し、マイクロプロセッサによって消費される電力を調節するため、上記電力制御レジスタに記憶した上記値に従って各機能ユニットの実行速度を調節し、上記電力制御レジスタの対応するフィールドが該機能ユニットを通常状態に置くように変更された後該機能ユニットが使用可能となるまでその実行を停止させる、方法。
【請求項１９】
上記各機能ユニットの実行速度調節が、機能ユニットに与えられるクロック信号のクロック速度を調節することを含む、請求項１８に記載の方法。
【請求項２０】
上記各機能ユニットの実行速度調節が、機能ユニットに接続したバスを３態回路で接続することを含む、請求項１８に記載の方法。
【請求項２１】
上記電力制御レジスタの各フィールドへの１つの値の記憶が、各機能ユニットに対する１つの値を記憶することを含む、請求項１８に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般的には電力管理技術に関するもので、特に、電力管理技術のコンピュータ・システムへの応用に関するものである。
【０００２】
【従来の技術】
コンピュータ・システムにおける電力管理は、ラップトップおよびノートブック型コンピュータの出現と共にますます重要となって来ている。これらの携帯型コンピュータは、通常はニッケル・カドミウム（ニカド）またはニッケル・メタル・ハイドライド(nickel-metal-hydride)のバッテリで動作する。あいにく、バッテリ技術の進歩は、現在の携帯型コンピュータの電力需要の増加に歩調を合わすことができなかった。白黒からカラー表示への移行が、マイクロプロセッサのクロック速度およびメイン・メモリのサイズの増加と共に、電力需要の大幅な増大をもたらした。
【０００３】
バッテリ寿命を伸ばすため、コンピュータ・システムはいわゆる「電力管理」技術を取り入れた。このような技術は、コンピュータ・システム全体の中の個々のサブシステムの消費電力を減らすことによってシステムの消費電力を最小にすることを試みる。電力管理機能を備えた従来技術コンピュータ・システム１０の一例が図１に示されている。このシステム１０は、中央処理装置（ＣＰＵ）またはマイクロプロセッサ１２、キーボード１６、ディスク１８、ディスプレイ２０、メイン・メモリ・サブシステム２２およびＩ／Ｏサブシステム２４を含む。ＣＰＵ１２は、バス１４を経由してすべてのサブシステムに接続している。２つの主要な電力管理技術がある。第１は、サブシステムのクロック速度を制御するもので、第２は、例えばアイドル状態のコンポーネントの電源の切断のように、サブシステムに供給される電力の制御を伴うものである。
【０００４】
従来技術において周知の通り、ＣＭＯＳ集積回路（ＩＣ）の消費電力は、ＩＣのスイッチ頻度に直接比例し、このスイッチ頻度は、ＩＣに提供されるクロック速度によって制御される。従って、クロック速度を調整することによって、ＩＣによって消費される電力を低減させることができる。システム１０は、このような利点を活かして、種々のサブシステムに供給されるクロック信号を一定の条件の下で減少または停止させる。この条件は、典型的には、サブシステムが所定の時間アイドルであるということである。その活動の監視は、マイクロプロセッサによって所定のメモリ位置の書き込みまたは読み取りを検出することによって行われる。そのようなメモリ活動が所定の時間間隔の間発生しなかった場合、マイクロプロセッサは、システムへの影響なしにサブシステムを安全に閉じることができると仮定する。
【０００５】
システム１０は、また、マイクロプロセッサ１２によって個別に制御可能な５つのスイッチＳ１−Ｓ５を含む。これらのスイッチは、対応するサブシステムに供給される電力、または、それらに供給されるクロック周波数を制御することができる。スイッチがクロック周波数を制御する場合には、クロック分割回路（図示されていない）によってクロック信号を典型的には２の倍数で分割するかまたはクロック周波数をゼロにする。所定時間のアイドルを検出した後、マイクロプロセッサ１２は、マイクロプロセッサとスイッチの間を連結する線２６のような対応する線上に信号を出すことによってスイッチＳ３のようなスイッチをオンに設定する。これによって、該スイッチが適切な状態に切り替わり、クロックまたは電力が調節されることとなる。サブシステムが活動的になると、マイクロプロセッサ１２は、該信号をオフに設定し、これによってその状態が通常に戻り、クロック周波数が通常の動作周波数に設定されるか、または電力がサブシステムに再供給される。
【０００６】
いずれにせよ、典型的には、マイクロプロセッサがサブシステムを起動させるかまたは「目覚め」させた後、サブシステムは直ちに使用可能になる。従って、マイクロプロセッサ１２は、サブシステムが再び完全に機能的になるまであらかじめ決められた時間量待たなければならない。このような動作は、典型的には、非マスク型割り込みによって起動される割り込みサービス・ルーチンによって取り扱われる。次に、割込みサービス・ルーチンは、サブシステムをアクセスしようとしたシステム・レベル・アプリケーションへ制御を移す前に、サブシステムが操作可能であることを確認する。そのようなシステムには、インテル社のIntel486SL、Advanced Micro Devices社のAM386DY-LVおよびChipset Technologies社のSuperstateなどのシステム管理アーキテクチャによって実施されているシステムがある。
【０００７】
これらの技術のすべては、個々のサブシステムの電力を減らすことに焦点を当てている。（図１に示されているような）マイクロプロセッサのクロック速度を減少させることができるにもかかわらず、そのような技術は、マイクロプロセッサ自身によって浪費される電力に対する非常にきめの粗いレベルの制御を行う。更に、クロック周波数を減じることは、システム処理能力の比例的減退を招来する。マイクロプロセッサ１２は、バス活動を監視する若干の内部論理部を除いてスリープに入る。
【０００８】
いくつかのその他のアプローチは、システム・レベルというよりむしろマイクロプロセッサまたは「チップ」レベルにおける電力管理に焦点を置いた。そのようなチップ・レベルのアプローチは、命令ストリームの中で動的に命令を「感知」し、それらの命令を実行するために必要とされるチップの全体または部分を閉鎖する。ＩＢＭ、モトローラおよびとアップル・コンピュータによる共同開発のＰｏｗｅｒＰＣマイクロプロセッサは、そのようなアプローチを使用する。ＰｏｗｅｒＰＣにおいては、次の４つの異なる電力状態がある。すなわち、Full On(フル活動)、Doze(まどろみ)、Nap(うたた寝)およびSleep(睡眠)である。ＰｏｗｅｒＰＣアーキテクチャは、チップがこれら４つのモードのどのモードに置かれるかを指定するレジスタを含む。ソフトウェア典型的にはオペレーティング・システムは、このレジスタに該当する値を書き込むことによってそのモードを設定する。「Full On(フル活動)」電力モードに設定されると、ＰｏｗｅｒＰＣマイクロプロセッサは、現在の命令を実行する上で必要でない機能ユニットからクロックをはずすかゲートすることによってそれらの機能ユニットを使用停止にする。「Doze(まどろみ)」モードでは、「Full On(フル活動)」モードの場合と同様の方法で、バス監視論理回路および基礎時間減衰計を除いて、すべての機能ユニットが使用停止にされる。「Nap(うたた寝)」モードでは、バス監視論理回路も使用停止にされる。最も電力消費の少ない「Sleep(睡眠)」モードでは、システム・クロック（ＳＹＳＣＬＫ）は取り除かれ、フェーズ・ロック・ループ（ＰＬＬ）が使用停止にされる。
【０００９】
インテル社によって製作されたペンティアム・マイクロプロセッサは、同様のアプローチを使用してその内部浮動小数点機構の消費電力を減らしている。ペンティアムは、動的に現在の命令を感知して、浮動小数点活動が存在しない時、すなわち、浮動小数点命令が浮動小数点機構に送られていない時、その機構に対するクロックを遮断する。
【００１０】
発明名称が"Method and Apparatus for Placing an Integrated Circuit Chipin a Reduced Power Consumption State"であるVolk氏に付与された米国特許第5,388,265号は、特定のチップ活動がないことを検出する場合にそのチップ全体への電力供給を動的に遮断する点を除いて、同様のアプローチを使用する。その電力遮断は、活動を監視する専用のハードウェアによって実行され、チップ全体の電力消費を節約する。発明名称"Microprocessor having Built-in Synchronous Memory with Power-Saving Feature"であるShiraishi氏その他に付与された米国特許第5,276,889号は、チップ搭載同期メモリの電力消費を減少させるため、メモリが現在実行中の命令にとって必要とされない場合該メモリを使用停止にする。命令デコーダが、命令ストリームを動的に監視して、メモリを使用しない命令が実行される時メモリへの電力供給を停止するためメモリ・イネーブル信号をオフにする。
【００１１】
これらの「動的」アプローチが持つ問題点は、それらが命令ストリームを監視して検出するための負荷をハードウェアに課すことである。これは、高度なパイプライン方式のマイクロプロセッサにおいてクロック周期を遅くさせる可能性がある。加えて、ハードウェアにとって、特定の命令が発せられようとしているのか否かを前もって判断することが困難である。検出回路は、命令バッファの待ち行列に入れられた命令をチェックすることはできるが、この形態でも、先行して警告できるのは限られた命令数だけである。このような先行警告では、命令が実行される前に機能ユニットを完全に使用できないようにするには不充分なことがある。また、機能ユニットを目覚めさせるため、パイプライン処理を減速させる必要がある。
【００１２】
別のアプローチが、Perry氏その他に付与の特許名称"Power Conservation in Microprocessor Controlled Devices."である米国特許第5,142,684号に記載されている。このアプローチは、２つのプロセッサを使用する。すなわち、１つは、可変速度でフォアグランド・タスクを実行させる高速プロセッサで、他方はバックグラウンド・タスクを実行する低速プロセッサである。低速プロセッサは、処理量の多いフォアグランド・タスクがスケジュールされる時のみ高速プロセッサを起動する。この形態では、大部分のタスクに関しては低速プロセッサを使用し、必要な場合にのみ高速従って電力消費の多いプロセッサを使用することによって、電力を節約する。更に別のレベルの電源制御がソフトウェアによって提供される。高速プロセッサ・クロックのクロック速度を制御するクロック制御コードが各サブルーチンに組み込まれる。高速プロセッサはこのコードを読み、アプリケーション特有集積回路（すなわちＡＳＩＣ）へそのコードを書き出す。ＡＳＩＣは、そのコードの値に依存する所定量だけ高速クロックを分断する。このようにして、タスク全体が所与のクロック速度で実行される。このアプローチが持つ問題は、追加費用と複雑性を設計に加える第２のプロセッサを必要とする点である。
【００１３】
【発明が解決しようとする課題】
このように、上述のような従来技術の問題点を持たない電力管理機構を備えたマイクロプロセッサの必要性が存在する。
【００１４】
【課題を解決するための手段】
改善された電力管理機構を含むマイクロプロセッサが提供される。該マイクロプロセッサは、マイクロプロセッサの範囲内の個々の機能ユニットの消費電力を個別に制御するため、複数のフィールドを有する電力制御レジスタを備える。機能ユニットが将来必要とされるか否かを判断するため将来を見通すことができる能力を持つソフトウェアによって、電力制御レジスタ・フィールドは設定される。これによって、マイクロプロセッサは、特定の機能ユニットが現在実行中のソフトウェアによって必要とされないとソフトウェアが判断すると、機能ユニットの任意の１つを遮断またはその実行速度を調節することができる。これは、命令活動を動的に検出し解読するタスクの負荷をハードウェアからソフトウェアへ移すものである。加えて、ソフトウェア制御によって、ハードウェアでは可能でない電力管理機能を可能にする。例えば、電力を節約するため、ソフトウェアは、特定ブロックのコードを実行している間、ブランチ予測ハードウェアを動作停止にすることができる。ソフトウェアは、また、特定ブロックのコードが完全に内部キャッシュの範囲内でまかなわれると予測される場合、メイン・メモリに対する外部バス・インターフェースを遮断または低速化することができる。ソフトウェアは、ハードウェアには利用することができない知識を備えることができるので、処理能力に対する影響の最も少ない電力管理意思決定を効果的に行うことができる。
【００１５】
機能ユニットは、電力制御レジスタの対応するフィールドに応じて、そこに記憶されている値に対応するように実行速度を調節する。実行速度は、多くの異なる方法で制御することができる。第１に、機能ユニットに提供されるクロック信号を、電力制御レジスタ・フィールドに対応して分断することができる。これは、機能ユニットがＩ／Ｏ装置であるような場合には機能ユニットのレベルで、さもなければマイクロプロセッサ全体のグローバルなレベルでも実施することができる。第２に、電力制御レジスタ・フィールドに対応して機能ユニットへの電力供給を停止させることによって、機能ユニットの実行速度を調節することができる。これは、機能ユニットと接地の間に、あるいは別の形態では機能ユニットと供給電圧（Ｖｄｄ）の間に、ゲーティング・トランジスタを配置することによって実施することができる。第３のアプローチでは、機能ユニットが多ポート型ランダム・アクセス・メモリ(ＲＡＭ)である場合、電力制御レジスタ・フィールドに対応して、該ＲＡＭの１つまたは複数のポートのセンサおよびバッファ・ドライバを使用停止にする。ポートの１つを使用停止にすることによって、電力が少なくなるので、多ポートＲＡＭのスループットまたは実行速度は低下する。第４のより一般的なアプローチは、制御レジスタ・フィールドに応じて、機能ユニットからデータを取り除くものである。これは、データ・バスと機能ユニットの間に配置された３態バッファを使用停止にすることによって達成される。更に別のアプローチでは、電力制御レジスタ・フィールドを用いて、３２ビットと６４ビットの外部インターフェースの間で切り換えを行いＩ／Ｏ装置の電力を減少させることができる。上記列挙したアプローチは可能なもののすべてではないが、マイクロプロセッサの内部電力管理に対するソフトウェア・アプローチの能力を例証するものである。
【００１６】
本発明の別の１つの側面において、マイクロプロセッサは、クロック・サイクルの単位で電力待ち時間値（すなわちＰＬＶ−Power Latency Valueの頭文字）を記憶する電力待ち時間レジスタを含む。ソフトウェアが、電力制御レジスタにある１つの値を書き込むことによって機能ユニットを「目覚めさせる(wake up)」命令（すなわち機能ユニットの活動、従って電力消費レベルを増加させる命令）を発する場合、該機能ユニットは、実際に使用可能となるまで一定のサイクル数を要する。ＰＬＶ値は、当該機能ユニットに関して目覚ましに要するサイクル数に関するソフトウェアによる仮定を表す。このことは、当該機能ユニットの電力待ち時間レジスタが書き込まれた後ＰＬＶのサイクル数の間、当該機能ユニットに関連する命令が命令ストリームに存在しないことが保証されることを意味する。機能ユニットが使用可能になるまでに要する「実際の」サイクル数（以下Actual Latency Valueの頭文字をとってＡＬＶと呼ぶ）は機能ユニットに記憶されていて、このＡＬＶ値がＰＬＶ値と比較される。機能ユニットがＰＬＶサイクル数より早く使用可能となれば、アクションをとる必要はない。ＰＬＶサイクル数より長くかかる場合は、その機能ユニットが使用可能になるまで別の実行機能ユニットを停止させる停止信号を発する。従って、電力待ち時間レジスタは、機能ユニットからの応答を必要とする命令を監視するため低消費電力状態にある時命令ストリームを動的に監視する必要性から機能ユニットを解放する。この構成の場合、動的に命令を感知する実施形態に比較して複雑性は非常に小さい。本発明の好ましい実施形態において、上記機能を実施するため、２つの減分カウンタおよびいくつかの関連組合せ回路が必要とされる。
【００１７】
ソフトウェアは、機能ユニットを目覚めさせる命令のスケジュールを制御することによって、特定の目標チップについてＡＬＶ値よりＰＬＶ値が大きくなるようにすることができる。機能ユニットの電力遮断に関する異なる方法を使用し、異なるＡＬＶ値を持つチップ実施形態も可能である。上述のメカニズムは、コードに変更を加えない同一のソフトウェアをエラーなしですなわち互換性を保ちながら異なる実現形態上で正確に実行させることを可能にする。更に、特定の実施形態に関する機能ユニットの電力停止を最適化するため、該特定実施形態のＡＬＶ値をソフトウェアによって調べることもできる。
【００１８】
上記発明の課題を解決する手段として、本発明は、複数の機能ユニット、各々が１つの機能ユニットに対応し１つの値を記憶する複数のフィールドを有する電力制御レジスタ、および、各機能ユニットによって消費される電力量を決定するため、各機能ユニットに対応する上記フィールドに記憶された値に応じて各機能ユニットの実行速度を調節する手段を持つ電力管理機能を備えたマイクロプロセッサを含む。
【００１９】
【発明の実施の形態】
図２は、本発明に従うマイクロプロセッサ１００のブロック図である。本明細書において使用するマイクロプロセッサという用語は、所与のタスクを遂行するため、マイクロコードであろうと目的コードであろうがいずれかの形態の命令を実行するＩＣを指す。従って、該マイクロプロセッサは、従来型のＣＰＵの他、デジタル信号プロセッサ(ＤＳＰ)、マイクロコントローラ、コプロセッサ、データ変換器その他を含む。該マイクロプロセッサは、特定の機能を遂行するように構成された一群の（組合せまたは逐次）論理機構として定義される。それらに含められる典型的機能ユニットには、整数加減乗除の各演算、浮動小数点加減乗除の各演算およびロード／ストアを実行する機能ユニットがある。また、その他の機能ユニットとして、入出力（Ｉ／０）機構、マルチメディア装置、多ポート・キャッシュ・メモリ機構、レジスタ・ファイル、命令ディスパッチ機構、ブランチ予測機構、レジスタ保存エンジン、データ・バスがあり、また、特定の機能またはタスクを遂行する専用装置も含まれる。
【００２０】
これら機能ユニット（Functional Unitの頭文字をとって以下ＦＵと略称する場合がある）は、種々の機能ユニットにデータ、アドレスおよび制御情報を提供するバス１０２および１０４によって相互に接続される。電力制御レジスタ１０６もまたマイクロプロセッサ１００に含められる。電力制御レジスタ１０６は、値を記憶するための複数のフィールドを含む。これらの値は、製造工程で設定される場合もあり、あるいはまたソフトウェアによって設定されることもある。各フィールドは、それぞれの機能ユニットに対応する。フィールド１０８のような各電力制御レジスタ・フィールドは、対応する機能ユニットの実行速度従って消費電力を調節する。この制御は、後述する種々の形態で実行される。電力制御レジスタの各フィールドはバスを経由して対応する機能ユニットに接続する。例えば、バス１１０はフィールド１０８を機能ユニットＦＵ1に接続してそのフィールドに記憶されている値を当該機能ユニットに提供する。バス１１２、１１４および１１６は、同様に、それぞれの電力制御レジスタのフィールドの内容を対応する機能ユニットに提供する。電力制御レジスタ１０６は、また、どの機能ユニットにも接続していない付加的フィールドを含むこともできる。それらのフィールドは、マイクロプロセッサ・アーキテクチャの将来の拡張、あるいは、マイクロプロセッサ１００の全域的電力管理制御に備えるものである。そのようなフィールドのビット幅は、要求される制御の分解能に従う。
【００２１】
マイクロプロセッサ１００は、また、待ち時間制御レジスタ１１８を含む。このレジスタ１１８も、各々が１つの機能ユニットに対応する複数のフィールドを含む。電力制御レジスタ・フィールドの場合と同様に、待ち時間制御レジスタのフィールドの内容は、バス１２０、１２２、１２４および１２６経由でそれぞれの機能ユニットへ提供される。図１０および図１１を参照して後述するように、待ち時間制御レジスタ・フィールドに記憶される値は、対応する電力制御レジスタ・フィールドに所定の値を書き込むことによって機能ユニットに再び電力が供給された後機能ユニットが完全に作動する状態になるまでに要するクロック・サイクル数に関する（コンパイラによって設定される）仮定値に対応する。待ち時間制御レジスタ・フィールドの動作の詳細は後述する。
【００２２】
図３には、機能ユニットの実行速度従って電力消費を低下させる第１のアプローチが示されている。このアプローチでは、クロック発振器１３０に接続するクロック分割器１２８が、クロック発振器によって生成されたマスタ・クロック信号(MASTER_CLOCK)を分割する。クロック分割器は、マスタ・クロック(MASTER_CLOCK)を受け取って、刻時ツリー１３２を介してマイクロプロセッサの各部へ分配されるシステム・クロック(SYSTEM_CLOCK)を生成する。刻時ツリー１３２は、マイクロプロセッサ全体にわたってクロック遅延およびクロック片寄りを最小限にとどめるため（従来技術の）複数のクロック・バッファ１３４、１３６および１３８を含む。
【００２３】
クロック分割器１２８は、電力制御レジスタのグロ―バル・フィールド(FUG)１４０に接続してそこに記憶された値を受け取る。このグローバル・レジスタ・フィールド１４０は、特定の機能ユニット専用のものではなく、すべての機能ユニットに供給されるクロック周波数を制御することによってすべての機能ユニットの実行速度を調節する。フィールド１４０に記憶された値が、バス１４２を経由してクロック分割器１２８へ提供される。クロック分割器は、電力制御レジスタ・フィールドに記憶された値に応じてマスタ・クロック信号を細分する。マスタ・クロック信号が分割される度合いは、レジスタ・フィールド１４０のビット数に依存する。好ましい実施形態においては、クロック分割器は、フィールド１４０に記憶された値に応じて(例えば1/2, 1/3, 1/4 ... 1/16のような）整数比率でマスタ・クロック信号を分割する。分解能の量は、電力制御レジスタ・フィールドのビット数の関数であって、設計者によって設定されることができる。また、予め定めた値を使用してマスタ・クロック信号をゼロに分割することもできる。
【００２４】
このアプローチを各機能ユニットに関して適用すれば、対応する電力制御レジスタ・フィールドによって、図４に示されるように、特定の機能ユニットに供給されるクロック速度を調節することができる。しかしながら、ほとんどのパイプライン構成のマイクロプロセッサは、全体を通して単一のクロック周波数を必要とする。統一的クロック信号を必要としない実施形態に関しては、個別のクロック分割回路を使用することができる。
【００２５】
図４には、電力消費を調整または低下させるため、機能ユニットの実行速度を低下させる第２のアプローチが示されている。このアプローチでは、個々の機能ユニットに提供されるクロック信号が、電力制御レジスタの対応するフィールドに記憶された値に応じて閉じられる。図３の場合と同様に、クロック発信器１４４がマスタ・クロック信号(MASTER_CLOCK)を生成するが、マスタ・クロック信号を分割する代わりに、個々の機能ユニットに提供されるクロック信号がＡＮＤゲート１４６のようなＡＮＤゲートによってゲートされる。ＡＮＤゲート１４６は、電力制御レジスタ・フィールド１０８に記憶された値がすべてバイナリ１でない限り、マスタ・クロック信号が機能ユニットＦＵ1に分配されることを禁じる。このように、クロック信号(CLK)は、対応する電力制御レジスタ・フィールド１０８に記憶された値に基づいて、選択的に適用され機能ユニットから取り除かれることができる。このアプローチがすべてのバイナリーが１であるという値に限定されるものではないが、現行の論理機構を変更せずにクロック信号をゲートすることを前提とすればこれが好ましい実施形態であるという点は明らかであろう。
【００２６】
図５には、機能ユニットが入出力（Ｉ／Ｏ）装置である場合の別のアプローチが示されている。この場合、機能ユニットは、対応する電力制御レジスタ・フィールド１０８へ接続してその値を受け取る論理ブロック１４８を含む。論理ブロック１４８は、２つの出力を生成する。第１は、図３で説明したようなクロック分割器１５０に提供されるクロック分割器信号(DIVIDER)出力である。論理ブロック１４８のDIVIDER信号出力は、クロック分割器１５０によってクロック分割器の出力である入出力クロック(I/O_CLK)のクロック速度を決定するために使用される。I/O_CLK信号は、出力ラッチ１５２のクロック(CLK)入力へ送られる。出力ラッチは、Ｉ／Ｏ機能ユニットのデータ出力をゲートまたはラッチするために使用される。このように、機能ユニットの入出力速度は、対応する電力制御レジスタ・フィールド１０８に記憶される値を変更することによって調節することができる。従って、機能ユニットによって消費される電力は、Ｉ／Ｏ速度の関数であって、該フィールドの値を変えることによって調節することができる。
【００２７】
論理ブロック１４８の第２の出力は、出力励振器１５４に接続した使用可能(ENABLE)信号である。この出力励振器１５４は、３態励振器であって、ENABLE信号がオフの場合高いインピーダンス状態に置かれる。励振器の出力は、パッド１５６に接続され、周知の方法でマイクロプロセッサへの外部接続機構を提供する。励振器を使用停止にすることによって、マイクロプロセッサは、パッド５６に接続する寄生容量Ｃｐの充電または放電による消費電力を効果的に低下または最小化することができる。本発明の好ましい実施形態における論理ブロック１４８は、電力制御レジスタに記憶された所定の値に応じてイネーブル信号をオフにする。論理ブロックは、また、クロック率を決定するためクロック分割器に分割器値(DIVIDER)を提供する。このように、実行速度を低下させ、電力消費を低減するため２つのレベルの制御がこのアプローチによって提供される。
【００２８】
図６には、個々の機能ユニットの電力を削減する更に別のアプローチが示されている。このアプローチでは、機能ユニットと供給電圧端子の間にトランジスタが配置される。このアプローチは、機能ユニットを使用停止にすることによって機能ユニットの実行速度を効果的にゼロに低下させる。図６に示されるように、機能ユニットの接地端子(GND)とマイクロプロセッサの接地の間にＮＰＮトランジスタ１５８が配置される。トランジスタ１５８のゲートは、電力制御レジスタ・フィールド１０８に記憶された値に応じてイネーブル(ENABLE)信号をトランジスタのゲートに提供する論理ブロック１６０に接続される。このアプローチでは、電力制御レジスタ・フィールドは単一ビットでよく、論理ブロックは単純な誘導因子にすぎない。しかし、電力制御レジスタ・フィールドを複数ビットとして、論理ブロック１６０が予め定められた値を解読してその値が検出される時イネーブル信号をオフにするように働く組合せ論理機構とすることもできる。トランジスタを正の電源(SUPPLY Vdd)と機能ユニットの正の電力入力端子との間に配置することもできる点は当業者に明らかであろう。図６に示されるように、その他の機能ユニットの各々も、その実行速度を制御するためそれぞれのトランジスタを備え持つ。これらのトランジスタは、電力制御レジスタの対応するフィールドに記憶された値に従う。対応する論理ブロックおよび種々の接続機構は簡略化のため図示されていない。
【００２９】
図７には、機能ユニットが多ポート型メモリである場合に電力制御レジスタのフィールドに応答して機能ユニットの処理速度を調節する別のアプローチが示されている。多くのマイクロプロセッサは、メモリに対する複数の同時並行アクセスを可能にする多ポート型メモリを含む。典型的には、このようなメモリは、レジスタ・ファイルあるいはキャッシュ・メモリで使用される。図７には、２ポート型静的ランダム・アクセス・メモリー（ＳＲＡＭ）１６２が示されている。センス・アンプ(SENSE AMP)、励振器、アドレス・デコーダ(DECODER)およびプルアップ・トランジスタ(PULL-UP)が、ポート１(PORT1）およびポート２(PORT2)の各ポートに接続されている。
【００３０】
このアプローチでは、１つのポートまたは両方のポートに関するセンス・アンプ、励振器、アドレス・デコーダおよびプルアップ・トランジスタが、電力制御レジスタ・フィールド１０８に記憶された値に応じて選択的に使用停止(DISABLE)とされる。論理ブロック１６４が、レジスタ・フィールド１０８に接続してそこに記憶されている値を解読する。論理ブロック１６４が電力制御レジスタに記憶された所定の値を検出すると、第１ポートに関係するコンポーネントに与えられているイネーブル信号(ENABLE1)をオフにすることによって、センス・アンプ１６６、アドレス・デコーダ(DECODE1およびDECODE2)１６７、バッファ１６８およびプルアップ・トランジスタ(PULL-UP1およびPULL-UP2)１６９を使用停止にする。これらのコンポーネントは、使用停止とされ、第１ポートによって消費される電力を減少させる。
【００３１】
論理ブロック１６４は、また、第２のイネーブル信号(ENABLE2)を生成し、同様の方法で第２ポート(PORT2)に関係するコンポーネントを制御する。ENABLE1およびENABLE2信号は、フィールド１０８のビット数および分解能に従って、電力制御レジスタに記憶されている同一または異なる値に応答して、オン／オフすることができる。代替形態として、異なるフィールドを各メモリ・ポートに割り当てことができる。これらのコンポーネントを選択的に使用停止にすることによって、機能ユニットＦＵ1の実行速度従って消費電力をそれに応じて調節することができる。
【００３２】
マイクロプロセッサによって消費される電力量を制御するために使用することができる更なるアプローチが図８に示されている。このアプローチでは、データが、電力制御レジスタの対応するフィールドに記憶されている値に応じて機能ユニットから選択的に取り除かれる。これは、データを機能ユニットに接続させるバッファを３態化(tri-state)化させるかまたは使用停止にすることによって達成される。例えば、図８に示されるように、データ・バス１７０はバッファ１７２のような３態バッファを経由して種々の機能ユニットに接続している。論理ブロック１７４が、機能ユニットＦＵ1に対応する電力制御レジスタ・フィールド１０８と３態バッファ１７２の間に配置される。論理ブロック１７４は、レジスタ・フィールド１０８の中に検出されるあらかじめ定められた値に応じて、バッファ１７２に送られるイネーブル信号(ENABLE)をオフにすることによってバッファ１７２を選択的に使用停止にする。バッファ１７２を使用停止にすることによって、バス１７６上の寄生容量を充電／放電することによって消費される電力および該バスに接続する論理ブロック部分によって消費される電力が節減される。このアプローチは、また、機能ユニットはデータなしで実行することができないので、機能ユニットの実行速度を調節するものと見なすことができる。
【００３３】
代替形態として、データ・バスそれ自体を１つの機能ユニットとみなすことができる。その場合、すべての機能ユニットからデータを同時に取り除く機能を持つ３態バッファ１７５を使用停止にすることによってデータ・バスを完全に遮断することができる。これは、データ・バス上の寄生容量を充電／放電することによって消費される電力を節約する。
【００３４】
機能ユニットがＩ／Ｏ装置である場合に実行速度を調節し従って消費電力を節約する更なるアプローチが図９に示されている。このアプローチでは、マイクロプロセッサへの外部インタフェースが、３２ビット・インターフェースと６４ビット・インターフェースの間で切り換えられる。論理ブロック１７８は、マルチプレクサ１８０のセレクト入力に提供されるＭＵＸ信号を生成する。マルチプレクサ１８０は、セレクト信号（すなわちＭＵＸ）の状態に従って、その入力Ａで与えられるデータかその入力Ｂで与えられるデータかいずれかを供給するという既知の方法で動作する。マルチプレクサ１８０は、ＭＵＸ信号に応じてＡとＢの入力の間を切り換えることによって、６４ビットすべてのデータを連続した２つの３２ビット・ワードの形で出力させることができる。
【００３５】
論理ブロック１７８は、電力制御レジスタ・フィールド１０８に記憶されている値に応じてＭＵＸ信号を生成する。従って、電力制御レジスタ・フィールド１０８は、３２ビットと６４ビットのインターフェースの間で、機能ユニット従ってマイクロプロセッサを切り換えるために使用することができ、これによって、駆動されるデータ線の数が減少するため電力消費がそれに応じて変化する。これは、例えばモトローラ６８０４０マイクロプロセッサで使用されている動的バス幅変更技術に類似しているが、本発明のバス幅変更は、マイクロプロセッサに与えられる外部入力によらず、電力制御レジスタに記憶されている値に応じて行われる点が相違する。
【００３６】
本発明の別の側面が図１０および図１１に示されている。上記の諸アプローチのどれが使用されるとしても、対応する電力制御レジスタ・フィールドが機能ユニットに通常電力を供給するため変更された後ただちに当該機能ユニットが使用可能または動作可能とならない点は当業者に明らかであろう。例えば、電力制御レジスタ・フィールドに適切な値を記憶することによって電力を機能ユニットに再供給する場合、機能ユニットがその機能を実行するまでにいくつかのクロック・サイクルを要するであろう。従って、命令がその機能ユニットにあまりに早く発せられると、その結果エラーとなる場合がある。そのため、本発明は、機能ユニット内に電力待ち時間レジスタ１１８および関連論理機構を具備して、上記のような条件が発生する場合マイクロプロセを停止させる。相当なハードウェア負荷を機能ユニットに課する従来技術と異なって、このアプローチは、機能ユニットが命令を監視することはせず、単に、機能ユニットに記憶される実際の待ち時間レジスタ値と電力待ち時間レジスタ１１８の対応する電力待ち時間レジスタ・フィールドの間の簡単な比較を実行するだけである。
【００３７】
図１０に示されるように、機能ユニットは、実際待ち時間レジスタおよび停止論理ブロックを含む。実際待ち時間レジスタは、機能ユニットが電力節約状態から完全動作状態に変わった後機能ユニットが完全に動作可能となるまでに要する実際のクロック・サイクル数を表す値を含む。上述から明らかなように、これは、機能ユニットの実行速度を制御する電力制御レジスタ・フィールドが電力節約状態に対応する値から完全電力供給状態に対応する値へ変る場合の状況に対応する。一方、電力待ち時間レジスタ１１８の中の対応するフィールドは、実際待ち時間レジスタの値に関するコンパイラの仮定に対応する。対応する電力制御レジスタ・フィールドが電力節約状態に対応する値から完全電力供給状態に対応する値へ変わった後この仮定した値に相当するサイクル数が経過するまで当該機能ユニットへ命令が発せられないことを保証するためコンパイラはこの仮定を使用する。これは、命令をチェックする責任を機能ユニットからコンパイラへダウンロードするものである。これは、機能ユニットが命令を動的に監視する必要がなくなるので、従来技術に比較してすぐれたアプローチである。このアプローチは、１９９３年５月６日出願の米国特許出願第08/059,041号(発明名称"Method and Apparatus for Simplifying Interlock Hardware" )に記載のものと似ている。しかし、コンパイラによって設定された仮定が実際待ち時間レジスタによって指定されたものと合致しない場合に問題が起きる。そのような場合、機能ユニットは、マイクロプロセッサを停止させて、実際待ち時間レジスタに記憶された値の指定の通り、機能ユニットが完全に動作可能となるまで待たなければならない。これを実現するために必要な論理が、図１０および図１１に示されている。
【００３８】
図１０において、各装置は、実際待ち時間レジスタ（ＡＰＬＲ）および関連停止論理ブロックを持つ。例えば、機能ユニットＦＵ1は、実際待ち時間レジスタ２００および関連停止論理ブロック２０２を含む。停止論理ブロック２０２は、次の３つの入力部を含む。すなわち、第１は、レジスタ２００に接続して実際待ち時間値を受け取る入力、第２は、電力待ち時間レジスタ１１８の対応するフィールドに接続して待ち時間仮定値を受け取る入力、および第３は、電力制御レジスタ１０６の対応するフィールド１０８に接続する入力である。停止論理ブロックは、電力制御レジスタ・フィールド１０８を監視して、そこに記憶された値が動作可能状態における増加に対応する値に変化したことを検出しなければならない。本発明の好ましい実施形態において、これは機能ユニットが完全に使用可能な状態または通常の状態に置かれる状況に対応する。しかし、この値は、任意の動作状態にも、または機能ユニットが動作する多数の状態にも対応させることができる。
【００３９】
停止論理ブロック２０２は、マイクロプロセッサの多段階パイプラインを制御するパイプライン制御機構２０４へ送る停止信号(POWER-STALL1)を生成する。信号線２０６は、パイプライン制御機構２０４へこの停止信号を渡す。停止論理ブロックは、コンパイラが実際待ち時間値について誤った仮定を設定した場合、電力停止信号(POWER-STALL1)をオンにする。電力制御レジスタの対応するフィールド１０８が低消費電力から全電力または通常電力へ変更された後実際待ち時間レジスタ値による指定に従って必要サイクル数が経過するまで、この信号はオンのままにされる。その他の機能ユニットも、同様の条件で電力停止信号（(POWER-STALL2...POWER-STALLn)を生成する。
【００４０】
パイプライン制御機構２０４は、これらの電力停止信号のいずれかがオンにされた時、あるいは、その他の機能停止発生源のいずれかが対応する停止条件を生成した時、停止信号を生成する。上記その他の機能停止発生源には、周知の通り、制御またはデータの損壊が含まれる。マイクロプロセッサのパイプラインは、機能停止信号がオフにされるまで停止させられる。パイプライン制御機構２０４の実施形態は当業界において既知のものであるから、本明細書では説明を行わない。この技術は、例えば、John L.HennessyおよびDavid A. Patterson両氏共著の"Computer Architecture:A Quantitative Approach 251-343(1990)"に記載されている。
【００４１】
図１１の停止論理ブロック２０２は、電力制御レジスタ１０８に接続され、当該フィールドが低消費電力から全電力または通常電力へ変更されたことを検出する変更検出器２０８を含む。変更検出器の出力は、２つのロード可能なカウンタ器２１０および２１２に接続される。変更検出器２０８が生成するロード信号に応答して、カウンタ２１０および２１２は、それらのデータ入力部(DIN)に提示された値をロードする。カウンタ２１０に関しては、ロードされる値は、実際待ち時間レジスタ２００に記憶されている値であり、カウンタ２１２に関しては、その値は電力待ち時間レジスタ・フィールド２０１に記憶されている値である。これらカウントタ２１０および２１２の両方は、システムクロックＣＬＫによって刻時されるクロック入力を持つ。カウンタ２１０および２１２は、更に、カウンタの現在時通算値であるデータの出力部(DOUT)を含む。このように、カウンタがロードされた後、データ出力値は、カウンタにロードされた値に対応する。カウンタが減分されるにつれ、データ出力値は、その減分された値に対応する。
【００４２】
カウンタ２１０の出力データ(COUNT1)がゼロに等しくなると、ゼロ信号(ZERO1)を生成するゼロ検出器２１４へ送られる。同様に、ゼロ検出器２１６は、カウンタ２１２のデータ出力がゼロに等しくなる時を検出するためカウンタ２１２に接続される。カウンタ２１２によって生成されるCOUNT2信号がゼロに等しくなると、ゼロ検出器２１６はゼロ信号ZERO2を発する。
【００４３】
出力信号ZERO1はインバータ２２０を経由してＡＮＤゲート２１８へ送られ、一方、出力信号ZERO2はＡＮＤゲート２１８へ直接送られる。ＡＮＤゲート２１８は、信号ZERO2がオンで信号ZERO1オンでない時停止信号POWER-STALL1を生成する。この条件は、カウンタ２１２がカウンタ２１０より前に減分を終了した状況に対応する。これは、電力待ち時間レジスタ・フィールド２０１に記憶された値がレジスタ２００に記憶された実際待ち時間値より小さい場合に発生する。この場合、信号POWER-STALL1はカウンタ２１０のカウントダウンが終了するまでオンのままにされる。このようにして、信号POWER-STALL1は、電力待ち時間レジスタ・フィールド２０１に記憶された値とレジスタ２００に記憶された実際待ち時間値との間の差に等しいクロック数の間オンのままにされる。このサイクル数経過後、危機は去って、POWER-STALL1はオフにされる。検出器２２２が、POWER-STALL1上の１から０への状態移行を検出して、それに応じて、カウンタ２１０および２１２をリセットする。このように、停止論理ブロック２０２は、命令がそれに発せられる前に機能ユニットが完全に使用可能となることを保証する。ＩＢＭ、モトローラおよびアップル社によるＰｏｗｅｒＰＣマイクロプロセッサにおいて実施されているように命令を明示的に監視する形態をとることなく、本発明の上記機能は達成される。
【００４４】
実際待ち時間レジスタに記憶される値は、ソフトウェアにとって利用可能であるので、そこに記憶される電力待ち時間レジスタ値の内容をソフトウェアが変更することが可能である。（例えばステータス・レジスタのような）他の制御レジスタが読み取られる場合と全く同じ方法で、実際待ち時間レジスタの内容を読む命令によってこれを達成することができる。この能力は、各々が異なる実際待ち時間値を持つようなマイクロプロセッサの複数のバージョンについて共通のプログラム・コードを使用することを可能にする。このプログラム・コードが適切な値を電力待ち時間レジスタ・フィールドに書き込むことができる。
【００４５】
実行ユニット速度を調節する電力制御レジスタおよび関連手段を備えるマイクロプロセッサ１００によって、ソフトウェアが該マイクロプロセッサの消費電力を調節または制御することが可能となる。この形態は、ソフトウェアが将来どのような機能ユニットが必要とされるかを判断するため将来を見通すことができるので、ハードウェア実施形態に比較して、有利である。必要とされない機能ユニットは、電力制御レジスタ・フィールドの対応する値を設定することによって低消費電力または無電力状態に設定することができる。更に、この能力によって、ソフトウェアは、さもなければ並列的に実行されるタスクを順次に実行することによって、あらかじめ決められた量以下に消費電力を保つことができる。この形態はマイクロプロセッサの処理能力を抑えることを含むけれども、電力を節約し、それによって、同じシリコン色素が、低コストのプラスチック・パッケージを含む種々の異なるパッケージまたは放熱板なしのパッケージで使用されることを可能にする。シリコンがパッケージに許容される以上の電力を消費しないことを保証するため、製造工程中に値を設定することによって、またはウェーハによって、または部品のパッケージングによって、特定の機能ユニットを永久に使用停止または低消費電力状態に設定することもできる。次にソフトウェアがこの設定値をを感知してそれに応じてタスクを直列化することもできる。
【００４６】
マイクロプロセッサは、図１に示されるような従来からのコンピュータ・システムで使用されることができる。次に、電力制御レジスタに書き込みを行うソフトウェアはメイン・メモリ２２に記憶される。本明細書において開示される電力管理技術は、従来技術によって提供されるシステム・レベルのアプローチと関連して使用して、マイクロプロセッサおよびシステム・レベルの電力管理の改善に供することもできる。
【００４７】
以上本発明の原理を特定の実施形態を用いて記述したが、本発明の構成および細部はそのような原理を逸脱することなく修正することができる点は明らかであろう。
【００４８】
本発明には、例として次のような実施様態が含まれる。
（１）電力管理機能を備えたマイクロプロセッサであって、複数の機能ユニットと、各々が１つの機能ユニットに対応し１つの値を記憶する複数のフィールドを有する電力制御レジスタと、各機能ユニットによって消費される電力量を決定するため、各機能ユニットに対応する上記フィールドに記憶された値に応じて各機能ユニットの実行速度を調節する手段と、を備えるマイクロプロセッサ。
（２）上記電力制御レジスタの各フィールドの値がマイクロプロセッサの製造工程中に設定される、上記（１）に記載のマイクロプロセッサ。
（３）上記電力制御レジスタの各フィールドの値がマイクロプロセッサの半導体組立工程中に設定される、上記（２）に記載のマイクロプロセッサ。
（４）上記電力制御レジスタの各フィールドの値がマイクロプロセッサのパッケージング工程中に設定される、上記（２）に記載のマイクロプロセッサ。
（５）上記電力制御レジスタの各フィールドの値がマイクロプロセッサによって実行されるソフトウェアによって設定される、上記（１）に記載のマイクロプロセッサ。
（６）上記マイクロプロセッサがパイプラインを含み、電力制御レジスタの１つのフィールドの上記値に応じて、該パイプラインを停止させる手段を更に含む上記（１）に記載のマイクロプロセッサ。
（７）各機能ユニットの実行速度を調節する上記手段が、電力制御レジスタの対応するフィールドの値に応じて当該機能ユニットの電力を停止するため、機能ユニットと電力供給端子の間に配置されたトランジスタを含む、上記（１）に記載のマイクロプロセッサ。
（８）各機能ユニットの実行速度を調節する上記手段が、電力制御レジスタの対応するフィールドの値に応じて、機能ユニットへのデータ入力に関する状態移行を実行停止状態にさせる手段を含む、上記（１）に記載のマイクロプロセッサ。
【００４９】
（９）上記マイクロプロセッサがクロック信号を生成して該クロック信号を機能ユニットに送信するクロック回路を更に含み、各機能ユニットの実行速度を調節する上記手段が、電力制御レジスタの対応するフィールドの値に応じて上記クロック信号率を調節する手段を含む、上記（１）に記載のマイクロプロセッサ。
（１０）上記クロック信号率を調節する手段が、電力制御レジスタの対応するフィールドの値に応じて、上記クロック信号率をゼロに調節する手段を含む、上記（９）に記載のマイクロプロセッサ。
（１１）上記マイクロプロセッサが、電力制御レジスタ・フィールドが調節された後当該機能ユニットが使用可能となるまでに要するクロック・サイクル数に対応する待ち時間値を記憶する待ち時間フィールドを有する電力待ち時間レジスタを更に含み、上記クロック・サイクル数がソフトウエアによって仮定され、上記機能ユニットが、電力制御レジスタの対応するフィールドが該機能ユニットを通常状態に置くように変更された後該機能ユニットが使用可能となるまでその実行を停止させる手段を含む、上記（１）に記載のマイクロプロセッサ。
（１２）上記電力待ち時間レジスタが、対応する機能ユニットに関する待ち時間値を各々が記憶する複数の待ち時間フィールドを含む、上記（１１）に記載のマイクロプロセッサ。
【００５０】
（１３）電力管理機能を持つコンピュータであって、複数の機能ユニット、および、各々が上記機能ユニットの１つに対応する複数の電力制御レジスタ・フィールドを持つ電力制御レジスタを備えたマイクロプロセッサと、上記マイクロプロセッサに接続して、上記マイクロプロセッサによる実行が可能な命令を記憶するメモリと、上記メモリに記憶され、電力消費の水準を制御する値を上記電力制御レジスタ・フィールドに保存することを当該マイクロプロセッサに要求する実行可能コードと、上記電力制御レジスタ・フィールドに保存された値に応じて各機能ユニットの実行速度を調節して各機能ユニットによって消費される電力を調整する手段と、を含むコンピュータ。
（１４）上記マイクロプロセッサがクロック信号を生成して該クロック信号を機能ユニットに送信するクロック回路を更に含み、各機能ユニットの実行速度を調節する上記手段が、電力制御レジスタの対応するフィールドの値に応じて上記クロック信号率を調節する手段を含む、上記（１３）に記載のコンピュータ。
（１５）クロック信号率を調節する上記手段が、クロック信号の周波数を、第１に記憶された値に応じて、最大周波数を分母とする分数に調節するクロック分割回路を含む、上記（１４）に記載のコンピュータ。
【００５１】
（１６）上記クロック分割回路が、第２に記憶された値に応じて、クロック信号の周波数をゼロに調節する、上記（１５）に記載のコンピュータ。
（１７）電力制御レジスタのフィールドに記憶された値に応じて、データ・バス・インターフェースの幅を第１のビット数から第２のビット数へ減少させる手段を更に含む、上記（１３）に記載のコンピュータ。
（１８）上記マイクロプロセッサが、電力制御レジスタ・フィールドが調節された後当該機能ユニットが使用可能となるまでに要するクロック・サイクル数に対応する待ち時間値を記憶するため各機能ユニットに対応する１つまたは複数の待ち時間レジスタ・フィールドを持つ電力待ち時間レジスタを更に含み、上記クロック・サイクル数がソフトウエアによって仮定され、待ち時間値によって指定されたクロック・サイクルの後命令が発せられるが当該機能ユニットがまだ使用可能でない場合該機能ユニットが使用可能になるまでその命令の実行を停止させる手段を上記機能ユニットが含む、上記（１３）に記載のコンピュータ。
（１９）上記マイクロプロセッサが多段階方式のパイプラインを含み、上記機能ユニットが、上記電力制御レジスタ・フィールドに記憶された値に応じて、多数の停止信号を上記パイプラインに送出する手段を含む、上記（１３）に記載のコンピュータ。
【００５２】
（２０）複数の機能ユニットを有するマイクロプロセッサを備えたコンピュータにおいて消費電力を最小にする方法であって、
上記複数の機能ユニットの１つにそれぞれ対応する複数のフィールドを持つ電力制御レジスタを備えたマイクロプロセッサを準備し、上記電力制御レジスタの各フィールドに１つの値を記憶し、マイクロプロセッサによって消費される電力を調節するため、上記電力制御レジスタに記憶した上記値に従って各機能ユニットの実行速度を調節する方法。
（２１）上記各機能ユニットの実行速度調節が、機能ユニットに与えられるクロック信号のクロック速度を調節することを含む、上記（２０）に記載の方法。
（２２）上記各機能ユニットの実行速度調節が、機能ユニットに接続したバスを３態回路で接続することを含む、上記（２０）に記載の方法。
（２３）上記電力制御レジスタの各フィールドへの１つの値の記憶が、各機能ユニットに対する１つの値を記憶することを含む、上記（２０）に記載の方法。
【００５３】
【発明の効果】
本発明は、命令ストリームを監視する負荷をハードウェアに課す従来技術の電力管理技術の動的アプローチが持つ問題点を解決し、マイクロプロセッサの機能ユニット毎のソフトウェアによる柔軟な消費電力節約が実現する。
【図面の簡単な説明】
【図１】従来技術の電力管理能力を持つコンピュータ・システムのブロック図である。
【図２】本発明に従うソフトウェアによる制御可能な電力管理機能を備えるマイクロプロセッサのブロック図である。
【図３】図２のマイクロプロセッサの電力管理機能の１側面を示すブロック図である。
【図４】図２のマイクロプロセッサの電力管理機能の第２の側面を示すブロック図である。
【図５】図２のマイクロプロセッサの電力管理機能の第３の側面を示すブロック図である。
【図６】図２のマイクロプロセッサの電力管理機能の第４の側面を示すブロック図である。
【図７】図２のマイクロプロセッサの電力管理機能の第５の側面を示すブロック図である。
【図８】図２のマイクロプロセッサの電力管理機能の第６の側面を示すブロック図である。
【図９】図２のマイクロプロセッサの電力管理機能の第７の側面を示すブロック図である。
【図１０】本発明の第２の実施形態を示すブロック図である。
【図１１】図１０の電力停止論理部分のブロック図である。
【符号の説明】
１００    マイクロプロセッサ
１０２、１０４、１１０、１１２、１１４、１１６、１２０、１２２、１２４、１２６、１４２、１７６    バス
１０６    電力制御レジスタ
１０８    電力制御レジスタのフィールド
１１８    待ち時間制御レジスタ
１２８、１５０    クロック分割器
１３０、１４４    クロック発振器
１３２    刻時ツリー
１３４、１３６、１３８    クロック・バッファ
１４０    電力制御レジスタのグローバル・フィールド
１４６    ＡＮＤゲート
１４８、１６０、１６４、１７４、１７８    論理ブロック
１５２    出力ラッチ
１５４    出力励振器
１５６    パッド
１５８    ＮＰＮトランジスタ
１６２    多ポートＳＲＡＭ
１６６    センス・アンプ
１６７    アドレス・デコーダ
１６８    バッファ
１６９    プルアップ・トランジスタ
１７２、１７５    ３態バッファ
１８０    マルチプレクサ
２００    実際待ち時間レジスタ
２０２    停止論理ブロック
２０４    パイプライン制御機構
２０６    信号線
２０８    変更検出器
２１０、２１２    カウンタ
２１４、２１６    ゼロ検出器
２２２    検出器
【図１】
0003734888.tif 000002
【図２】
0003734888.tif 000003
【図３】
0003734888.tif 000004
【図４】
0003734888.tif 000005
【図５】
0003734888.tif 000006
【図６】
0003734888.tif 000007
【図７】
0003734888.tif 000008
【図８】
0003734888.tif 000009
【図９】
0003734888.tif 000010
【図１０】
0003734888.tif 000011
【図１１】
0003734888.tif 000012