(57)【特許請求の範囲】
【請求項１】
複数の回路ブロックと、
各回路ブロックに値が異なる複数の電源電圧を切り換えて供給するための電源供給回路と、
各回路ブロックに周波数が異なる複数のクロックを切り換えて供給するためのクロック供給回路と、
上記電源供給回路と上記クロック供給回路に、各回路ブロックに供給するクロックの切り換えとその回路ブロックに供給する電源電圧の切り替えを指示する制御回路とを有し、
上記複数のクロックの内の最大周波数を有する最高速クロックは、上記複数の電源電圧の内の最大電源電圧が供給された回路ブロックで使用可能であり、
上記最高速クロックより低速のいずれかのクロックは、上記最大電源電圧より低いいずれかの電源電圧が供給された回路ブロックでも使用可能であり、
上記制御回路は、いずれかの回路ブロックに上記最高速クロックと上記最大電源電圧を供給したときには、少なくとも一つの他の回路ブロックには、上記最高速クロックより低速のいずれかのクロックと上記最大電源電圧より低い電源電圧を供給するマイクロプロセッサ。
【請求項２】
上記制御回路は、上記複数の回路ブロックの内、少なくとも一つの回路ブロックに供給するクロックを、その回路ブロックにそれまで供給していたクロックより高速のクロックへの切り替えるのを上記クロック供給回路に指示するときには、他の少なくとも一つの回路ブロックに供給するクロックを、その回路ブロックにそれまで供給していたクロックよりも低速のクロックへ切り替えるように、上記クロック供給回路に指示する請求の範囲１記載のマイクロプロセッサ。
【請求項３】
上記制御回路は、上記他の一つの回路ブロックに供給するクロックを上記より低速のクロックに切り替えるときには、その切り替え前に上記他の一つの回路ブロックに供給していた電源電圧を、上記クロックの切り替え後も引き続き上記他の一つの回路ブロックに供給させるように上記電源供給回路を制御する請求の範囲第２項記載のマイクロプロセッサ。
【請求項４】
上記制御回路は、上記他の一つの回路ブロックに供給するクロックを上記より低速のクロックに切り替えるときには、上記他の一つの回路ブロックに供給する電源電圧を、その切り替え前に上記他の一つの回路ブロックに供給していた電源電圧より低い電源電圧に切り替えることを上記電源供給回路に指示する請求の範囲第２項記載のマイクロプロセッサ。
【請求項５】
上記制御回路は、上記他の少なくとも一つの回路ブロックに供給するクロックを上記より低速のクロックへ切り替えるとの上記指示を、上記一つの回路ブロックに供給すべき上記より高速なクロックが、定常動作状態でその回路ブロックに供給されるクロックより高速のクロックであるときに実行し、
上記他の少なくとも一つの回路ブロックに供給すべき上記より低速のクロックは、定常動作状態で上記他の一つの回路ブロックに供給されるクロックより低速なクロックである請求の範囲第２項記載のマイクロプロセッサ。
【請求項６】
上記制御回路は、定常動作状態では、上記複数の回路ブロックに、上記最高速クロックより低速のクロックと上記最大電源電圧より低い電源電圧を供給するように上記クロック供給回路と上記電源供給回路を制御し、
上記複数の回路ブロックの一つが上記より高速なクロックが供給される上記一つの回路ブロックとして使用可能であり、
上記複数の回路ブロックの一つが、上記より低速なクロックが供給される上記他の一つの回路ブロックとして使用可能である請求の範囲第５項記載のマイクロプロセッサ。
【請求項７】
上記制御回路は、定常動作状態では、上記複数の回路ブロックの内の少なくとも一つに、上記最高速のクロックと上記最大電源電圧を供給し、上記複数の回路ブロックの内の少なくとも一つには上記最高速クロックより低速のクロックと上記最大電源電圧より低い電源電圧を供給するように上記クロック供給回路と上記電源供給回路を制御し、
定常動作状態で上記最高速クロックより低速のクロックが供給される上記少なくとも一つの他の回路ブロックが、上記より高速なクロックが供給される上記一つの回路ブロックとして使用可能であり、
定常動作時に上記最高速のクロックが供給される上記少なくとも一つの他の回路ブロックが、上記より低速なクロックが供給される上記他の一つの回路ブロックとして使用可能である請求の範囲第５項記載のマイクロプロセッサ。
【請求項８】
上記制御回路は、上記他の一つの回路ブロックに供給するクロックを上記より低速のクロックに切り替えるときには、定常動作時に上記他の一つの回路ブロックに供給していた電源電圧を、上記クロックの切り替え後も引き続き上記他の一つの回路ブロックに供給させるように上記電源供給回路を制御する請求の範囲第５項記載のマイクロプロセッサ。
【請求項９】
上記制御回路は、上記他の一つの回路ブロックに供給するクロックを上記より低速のクロックに切り替えるときには、上記他の一つの回路ブロックに供給する電源電圧を、定常動作時に上記他の一つの回路ブロックに供給していた電源電圧より低い電源電圧に切り替えることを上記電源供給回路に指示する請求の範囲第５項記載のマイクロプロセッサ。
【請求項１０】
上記制御回路は、上記より低速のクロックへの切り替えの指示を、上記一つの回路ブロックに供給すべき上記より高速なクロックが上記最高速クロックであるときに実行する請求の範囲第２項記載のマイクロプロセッサ。
【請求項１１】
上記制御回路は、上記他の一つの回路ブロックに供給するクロックを上記より低速のクロックに切り替えるときには、その切り替え前に上記他の一つの回路ブロックに供給していた電源電圧を、上記クロックの切り替え後も引き続き上記他の一つの回路ブロックに供給させるように上記電源供給回路を制御する請求の範囲第１０項記載のマイクロプロセッサ。
【請求項１２】
上記制御回路は、上記他の一つの回路ブロックに供給するクロックを上記より低速のクロックに切り替えるときには、上記他の一つの回路ブロックに供給する電源電圧を、その切り替え前に上記他の一つの回路ブロックに供給していた電源電圧より低い電源電圧に切り替えることを上記電源供給回路に指示する請求の範囲第１０項記載のマイクロプロセッサ。
【請求項１３】
上記制御回路は、上記マイクロプロセッサで実行中のプログラム内に設けられた、クロックと電源電圧を切り替えるための特定の命令に応答して、その命令が指定するクロックと電源電圧を切り替えるための情報に基づいて、上記複数の回路ブロックの内、そこに供給すべきクロックと電源電圧の少なくとも一方を切り替えるべき少なくとも一つの回路ブロックと、クロックと電源電圧の少なくとも一方の切り替え後の値を指示する変更信号を生成し、その変更信号を上記クロック供給回路と上記電源供給回路に供給する回路を有する請求の範囲第２項記載のマイクロプロセッサ。
【請求項１４】
上記変更信号は、それぞれ上記複数の回路ブロックの一つに供給すべきクロックと電源電圧を指示する一組の変更信号からなる請求の範囲第１３項記載のマイクロプロセッサ。
【請求項１５】
上記制御回路は、複数組の変更信号を記憶するメモリと、
上記特定の命令が指定する上記切り替えのための情報に基づいて上記メモリから一組の変更信号を読み出し、上記電源供給回路と上記クロック供給回路に供給する回路とを有し、
各組の変更信号は、それぞれ上記複数の回路ブロックの一つに供給すべきクロックと電源電圧を指示する一組の変更信号からなる請求の範囲第１４項記載のマイクロプロセッサ。
【請求項１６】
上記メモリは電気的に書き換え可能なメモリからなり、
上記制御回路は、特定の書き換え命令に応答して、上記メモリに記憶された上記複数組の更新信号を書き換える回路を有する請求の範囲第１５項記載のマイクロプロセッサ。
【請求項１７】
上記クロック供給回路は、
上記複数の回路ブロックに共通に設けられ、上記複数のクロックを発生するクロック発生回路と、
それぞれ一つの回路ブロックに対応して設けられ、それぞれ上記クロック発生回路により発生された上記複数のクロックの一つを選択し、対応する回路ブロックに供給するための複数のクロック切り換え回路を有する請求の範囲第２項記載のマイクロプロセッサ。
【請求項１８】
上記クロック発生回路により発生された上記複数のクロックを上記複数の回路ブロックに転送するための複数のクロック信号線をさらに有し、
上記複数のクロック切り換え回路の各々は、対応する回路ブロック内に設けられ、上記複数のクロック信号線上の上記複数のクロックの一つを選択する回路からなる請求の範囲第１７項記載のマイクロプロセッサ。
【請求項１９】
上記複数のクロック切り換え回路は、
上記複数の回路ブロックの外部に位置し、上記マイクロプロセッサの周辺部に近い位置に設けられている請求の範囲第１７項記載のマイクロプロセッサ。
【請求項２０】
上記電源供給回路は、
上記複数の回路ブロックに共通に設けられ、それぞれ上記複数の電源電圧を供給するための複数の電源配線と、
それぞれ一つの回路ブロックに対応して設けられ、それぞれ上記複数の電源配線上の複数の電源電圧の一つを選択し、上記対応する回路ブロックに供給するための複数の電源切り替え回路とを有する請求の範囲第２項記載のマイクロプロセッサ。
【請求項２１】
上記複数の電源配線は、上記複数の回路ブロックの近傍まで延在し、
上記複数の電源切り替え回路は、それぞれ対応する回路ブロック内に設けられている請求の範囲第２０項記載のマイクロプロセッサ。
【請求項２２】
上記複数の電源切り替え回路は、上記複数の回路ブロックの外部に位置し、上記マイクロプロセッサの周辺部に近い位置に設けられている請求の範囲第２０項記載のマイクロプロセッサ。
【請求項２３】
上記複数の電源電圧を、上記マイクロプロセッサの外部から上記複数の電源配線に供給する手段をさらに有する請求の範囲第２０項記載のマイクロプロセッサ。
【請求項２４】
電圧変換回路と、
上記複数の電源電圧の一つを上記マイクロプロセッサの外部から上記電圧変換回路および上記複数の電源配線の一方に供給する手段をさらに有し、
上記電圧変換回路は、上記一つの電源電圧から上記複数の電源電圧の内の他方の電源電圧を発生し、上記複数の電源配線の内の他方に供給する請求の範囲第２０項記載のマイクロプロセッサ。
【請求項２５】
複数の回路ブロックと、
各回路ブロックに値が異なる複数の電源電圧を切り換えて供給するための電源供給回路と、
各回路ブロックに周波数が異なる複数のクロックを切り換えて供給するためのクロック供給回路と、
各回路ブロックに供給するクロックの切り換えとその回路ブロックに供給する電源電圧の切り替えを一定の条件下で上記電源供給回路と上記クロック供給回路に指示する制御回路とを有し、
上記制御回路は、定常動作時には、上記複数の回路ブロックの内の所定の複数の回路ブロックに、上記複数のクロックの内の最大周波数を有する最高速クロックより低速のクロックと上記最大電源電圧より低い電源電圧を供給し、その後上記所定の複数の回路ブロックの内、最高速で動作させるべき少なくとも一つの回路ブロックに上記最高速クロックと上記最大電源電圧を供給するように上記電源供給回路と上記クロック供給回路を制御するマイクロプロセッサ。
【請求項２６】
複数の回路ブロックと、
各回路ブロックに値が異なる複数の電源電圧を切り換えて供給するための電源供給回路と、
各回路ブロックに周波数が異なる複数のクロックを切り換えて供給するためのクロック供給回路と、
上記電源供給回路と上記クロック供給回路に、各回路ブロックに供給するクロックの切り換えとその回路ブロックに供給する電源電圧の切り替えを一定の条件下で指示する制御回路とを有し、
上記制御回路は、
上記複数の回路ブロックの内の第１の回路ブロックに供給するクロックと電源電圧より高速のクロックおよび高い電源電圧を、上記複数の回路ブロックの内の第２の回路ブロックに供給する第１のモードと、上記第１の回路ブロックに供給するクロックと電源電圧と同じクロックおよび電源電圧を上記第２の回路ブロックに供給する第２のモードと、上記第１の回路ブロックに供給するクロックと電源電圧より低速のクロックおよび低い電源電圧を上記第２の回路ブロックに供給する第３のモードを切り替えて上記クロック供給回路と上記電源供給回路に指示可能であるマイクロプロセッサ。
【請求項２７】
上記第１の回路ブロックは、中央処理ユニットを構成するための回路ブロックである請求の範囲第２６項記載のマイクロプロセッサ。
【請求項２８】
上記第２の回路ブロックは、浮動小数点演算ユニットを構成するための回路ブロックである請求の範囲第２７項記載のマイクロプロセッサ。
【発明の詳細な説明】
技術分野
本発明は、消費電力を増大しないで特定の回路ブロックを高速に動作できるマイクロプロセッサに関する。
背景技術
従来からもマイクロプロセッサの消費電力を下げる技術がいろいろ提案されている。例えば特開平８−２７２５７９号明細書「可変クロック発生装置」に見られるように、従来技術の多くは、マイクロプロセッサ内の複数のユニットの内、高速動作を必要としないユニットに供給するクロックの周波数を下げることにより消費電力を低減しようとしている。マイクロプロセッサの多くはＣＭＯＳ回路で構成されているため、クロック周波数を低減することはＣＭＯＳ回路が動作する割合（活性化率）を下げることになる。したがって、その方法は消費電力の低減に効果的である。
近年、マルチメディア分野の進展が著しく、それに適したマイクロプロセッサが要求されている。このような用途のマイクロプロセッサには、グラフィックスや画像処理のような複雑な処理を高速に実行できることが要求され、近年マイクロプロセッサのマシーンクロックも増大する方向にある。このため消費電力が増大するので、マイクロプロセッサでは消費電力の低減が重要課題である。
とくに最近では、たとえば、デジタルＴＶやゲーム機用のマイクロプロセッサのように、一般家庭などに普及していくマイクロプロセッサが多くなっている。このような用途に使用されるマイクロプロセッサには、低コスト化のために安価なパッケージを使用できること、また、無風状態での使用に耐えることが要求期待される。これらの期待に応えるには、マイクロプロセッサの消費電力が低いことがとくに必要である。
このように、マイクロプロセッサには、とくに、マルチメディア分野に使用するマイクロプロセッサには、高性能かつ低消費電力のマイクロプロセッサへの市場ニーズが高まっている。しかし、従来技術は、マイクロプロセッサの消費電力を低減できるが、その消費電力の低減と性能向上を同時に満たすことを考慮していない。
本発明の目的は、上記の問題を解決し、消費電力を増大しないで性能のを向上できるマイクロプロセッサを提供することである。
発明の開示
本発明では、特定の回路ブロックの動作速度をより高速なものに変更できるように、マイクロプロセッサに含まれる複数の回路ブロックの各々に、値が異なる複数の電源電圧を切り換えて供給し、周波数が異なる複数のクロックを切り換えて供給する。以下では周波数が高いクロックを高速なクロックと呼ぶことがある。
マイクロプロセッサの多くはＣＭＯＳ回路により構成される。一般にＣＭＯＳ回路等の論理回路の動作可能な最大周波数は、その回路に供給される電源電圧にほぼ比例して大きくなる。したがって、ＣＭＯＳ回路をより高速のクロックで駆動するためには、より高い電源電圧を供給する必要がある。このために本発明では複数の電源電圧を使用する。上記複数のクロックの内の最大周波数を有する最高速クロックは、上記複数の電源電圧の内の最大電源電圧が供給された回路ブロックで使用可能な周波数を有し、上記最高速クロックより低速のいずれかのクロックは、上記最大電源電圧より低いいずれかの電源電圧が供給された回路ブロックでも使用可能な周波数を有するように、上記複数のクロックの周波数および上記複数の電源電圧の値が選ばれる。上記最大の電源電圧が供給される回路ブロックは、その電源電圧が供給された状態で正常に動作可能なように、その電源電圧に対する耐圧を有する回路素子から構成される。
本発明では、マイクロプロセッサの高速化を実現するだけでなく、消費電力も低減する。一般に、ＣＭＯＳ回路等の論理回路の消費電力は、その回路の動作周波数に比例し、そこに供給される電源電圧の自乗に比例する。したがって、本発明では、上記最大電源電圧と最高速クロックを同時に供給する回路ブロックの数を制限している。
より具体的には、本発明では、
各回路ブロックに値が異なる複数の電源電圧を切り換えて供給するための電源供給回路と、
各回路ブロックに周波数が異なる複数のクロックを切り換えて供給するためのクロック供給回路と、
上記電源供給回路と上記クロック供給回路に、各回路ブロックに供給するクロックの切り換えとその回路ブロックに供給する電源電圧の切り替えを指示する制御回路とが設けられる。
上記制御回路は、いずれかの回路ブロックに上記最高速クロックと上記最大電源電圧を供給したときには、少なくとも一つの他の回路ブロックには、上記最高速クロックより低速のいずれかのクロックと上記最大電源電圧より低い電源電圧を供給する。
さらに具体的には、上記複数の回路ブロックの内、少なくとも一つの回路ブロックに供給するクロックを、その回路ブロックにそれまで供給していたクロックより高速のクロックへの切り替えるときには、他の少なくとも一つの回路ブロックに供給するクロックを、その回路ブロックにそれまで供給していたクロックよりも低速のクロックへ切り替えられる。
こうして上記一つの回路ブロックの動作速度を増大したときに生じる消費電力の増大を、上記他の回路ブロックの消費電力の減少により償い、マイクロプロセッサ全体としての消費電力が所定の限界消費電力以下に抑える。
このような、ある回路ブロックへ供給するクロックの高速化と同時に他の回路ブロックに供給するクロックの低速化を併用することは、いろいろの態様で使用できる。
たとえば、ある回路ブロックを定常動作状態よりも高速に動作させることができる。その回路ブロックに定常動作状態で供給されるクロックより高速のクロックを供給すればよい。必要であれば、その回路ブロックに供給する電源電圧も増大する。たとえば、そのより高速なクロックが上記最高速クロックであるときには、その回路ブロックに上記最高の電源電圧を供給する。こうしてその回路ブロックの動作速度を増大する。このときに、いずれかの他の回路ブロックに供給するクロックを、定常動作状態で当該他の回路ブロックに供給されるクロックより低速なクロックに変更する。
あるいは、上記最高速クロックより低速のクロックで駆動されているいずれかの回路ブロックを上記最高速クロックで駆動することができる。このとき、他のいずれかの回路ブロックのクロックをより低速なものに変更する。たとえば、それまで上記最高速クロックが供給されていた他の回路ブロックがある場合には、当該回路ブロックに供給するクロックをより低速のクロックに変更する。
発明を実施するための最良の形態
以下、本発明に係るマイクロプロセッサを図面に示した実施の形態を参照してさらに詳細に説明する。なお、以下においては、同じ参照番号は同じものもしくは類似のものを表わすものとする。また、第２の実施の形態以降においては、第１の実施の形態との相違点を主に説明するに止める。
＜発明の実施の形態１＞
図１に示すように、マイクロプロセッサ１２００は、単一の大規模集積回路（ＬＳＩ）上に構成され、記憶制御ユニット１０４、中央処理装置（ＣＰＵ）１０５、浮動小数点演算ユニット（ＦＰＵ）１０６、周辺入出力ユニット１０７等の複数の機能ユニットと電源・クロック制御ユニット１０１を有する。これらのユニットは、それぞれ一つの回路ブロックにより構成されているが、実際には、いずれかの機能ユニットが複数の回路ブロックにより構成されてもよく、また、複数の機能ユニットに属する回路が同じ一つの回路ブロックに含まれてもよい。上記ユニット１０１、１０４〜１０７は、データバス１１０、アドレスバス１１１および図示しない制御バスでもって互いに接続されている。なお、このマイクロプロセッサ１２００には、ＲＡＭ（ランダム・アクセス・メモリ）、ＲＯＭ（リード・オンリー・メモリ）等の他のメモリユニットも上記複数のバスに接続されているが、ここでは簡単化のためにこれらのメモリユニットは図示せず、その動作も説明しない。これらのメモリユニットは、複雑なタイミングで動作するので、それらへ供給する電源電圧とクロックは変化させない。他の機能ユニットが設けられていてもよいことは言うまでもない。
記憶制御ユニット１０４は、図示しないＲＡＭに対するキャッシュメモリ（図示せず）を内蔵し、ＲＡＭに対するアクセス要求をそのキャッシュメモリに対して実行し、アクセス対象のデータがそのキャッシュメモリにないときには、ＲＡＭに対してアクセスする回路（図示せず）を含む。さらに、記憶制御ユニット１０４には、バス１１０，１１１に対するバスアービタ（図示せず）も設けられる。なお、後に説明するように、バス１１０，１１１を使用する異なる機能ユニットが異なるクロックで駆動される。しかし、それぞれのユニットがそれらのバスへのデータの送出タイミングあるいはそれらのバスからのデータの受信タイミングを決めるので、これらのバスの利用に関してはとくに問題は生じない。
周辺入出力ユニット１０７は、図示しない外部の周辺装置とＣＰＵ１０５との間でデータの転送を行う。
本実施の形態では、これらの機能ユニット１０４〜１０７に、動作クロックとして複数の、ここでは３つの、周波数が異なるクロックＣＬＫ−ａ、ＣＬＫ−ｂ、ＣＬＫ−ｃがクロック線１１５ａ〜１１５ｃを介して同時に供給される。ここではクロックＣＬＫ−ａは最も周波数が高い最高速のクロックであり、クロックＣＬＫ−ｂはそれより低い周波数を有する中間速のクロックであり、クロックＣＬＫ−ｃは最も低い周波数を有する低速のクロックである。電源・クロック制御ユニット１０１には、これらの３つのクロックを発生するクロック分配回路１０３が設けられている。さらに、全機能ユニットには、電源電圧として、複数の、ここでは２つの値が異なる電源電圧ＶＨ、ＶＬが電源配線１１６ａ、１１６ｂを介して同時に供給される。
各機能ユニットには、後に説明するように、クロック切り換え回路（４０２（図７））と電源切り換え回路（４０１（図７））と同じ回路が設けられ、それぞれは、その機能ユニットに供給された３つのクロックと２つの電源電圧から、その機能ユニットが使用する一つのクロックおよび一つの電源電圧をそれぞれ選択する。本実施の形態では上記クロック分配回路１０３と各機能ユニットに設けられたクロック切り換え回路が本発明で使用するクロック供給回路を実現する。また、各機能ユニットに設けられた電源切り換え回路が本発明で使用するクロック供給回路を実現する。
ＣＰＵ１０５には、後に詳しく説明するように、動作環境制御回路５０３（図３）が設けられている。この回路はＣＰＵ１０５内で動作環境変更命令が実行されたときに、動作環境制御信号ＥＮＶ（１１２）を生成し、電源・クロック制御ユニット１０１に供給する。この信号ＥＮＶ（１１２）は、基本的には、各機能ユニットが使用するクロックと電源電圧とを各機能ユニット毎に選択可能にする情報を含んでいる。
電源・クロック制御ユニット１０１には消費電力制御回路１０２がさらに設けられている。この回路１０２は、動作環境制御信号ＥＮＶ（１１２）に応答して、４つの機能ユニット１０４〜１０７のそれぞれにおいて使用するクロックと電源電圧の選択を制御する４つの電源・クロック切り換え信号１１３ａから１１３ｄを生成し、それぞれの機能ユニットのクロック切り換え回路（４０２（図７））と電源切り換え回路（４０１（図７））に供給する。こうして、動作環境制御回路５０３（図３）と消費電力制御回路１０２が、各機能ユニットのクロック切り換え回路と電源切り換え回路を制御して、その機能ユニットが使用する電源電圧とクロックを、各機能ユニットごとに変更する制御回路として機能する。
本実施の形態では、定常動作状態では、全ての機能ユニットは、中間速のクロックＣＬＫ−ｂを使用すると仮定している。したがって、このクロックＣＬＫ−ｂは、定常動作状態で使用するクロックで、このクロックＣＬＫ−ｂはこのマイクロプロセッサの正規あるいは基準のクロックであるとも言える。このクロックにより、定常状態での動作速度あるいは正規の動作速度が実現される。最高速のクロックＣＬＫ−ａは、クロックＣＬＫ−ｂにより実現可能な動作速度よりも高速な動作速度を実現するために使用される。本発明は、消費電力の低減だけでなく、動作の高速化も図る。クロックＣＬＫ−ａはこの高速化のために使用される。低速のクロックＣＬＫ−ｃは、電力消費を低減することを目的として低速動作を実行させるのに使用される。
なお、機能ユニットの構造によっては、各クロックたとえばクロックＣＬＫ−ａと周波数が同じで位相が異なる他のクロックも必要な場合もある。本実施の形態でもそのような他のクロックを使用可能であるが、そのような他のクロックは、クロックＣＬＫ−ａと同じと見なし、別に図示あるいは説明しない。
低い電源電圧ＶＬは、定常動作時に使用する電源電圧である。この電源電圧はこのマイクロプロセッサの正規あるいは基準の電源電圧であるとも言える。この電源電圧は上記クロックＣＬＫ−ｂまたはクロックＣＬＫ−ｃを使用する機能ユニットで使用される。高い電源電圧ＶＨは、電源電圧ＶＬで実現できる定常動作より高速動作を実現するために使用される。
一般にＣＭＯＳ回路の動作可能な最大周波数は、その回路に供給される電源電圧にほぼ比例して大きくなる。したがって、ＣＭＯＳ回路により高速の動作をさせるには、より高い電源電圧を供給する必要がある。このような高い電源電圧が供給される回路ブロックは、その電源電圧が供給された状態で正常に動作可能なように、その電源電圧に対する耐圧を有する回路素子から構成される。
本実施の形態でも、マイクロプロセッサは、ＣＭＯＳ回路により構成されていると仮定する。高い電源電圧ＶＨは、各機能ユニット内の回路を最高速クロックＣＬＫ−ａに応答可能にする値を有するように定められる。この電源電圧ＶＨは、ある機能ユニットが最高速クロックＣＬＫ−ａに応答して高速動作をするときにその機能ユニットにより使用される。電源電圧ＶＬは、各機能ユニット内の回路をクロックＣＬＫ−ｂに応答可能にするに必要な値を有する電源電圧である。この電源電圧ＶＬは、ある機能ユニットがクロックＣＬＫ−ｂに応答して定常動作をするときにその機能ユニットにより使用される。この実施の形態では、この電源電圧ＶＬは、その機能ユニットがクロックＣＬＫ−ｃに応答して低速動作をするときにも使用される。
このように本発明では、回路ブロック用に用意された複数のクロックの内、最高速のクロックをいずれかの回路ブロックに供給するときに、回路ブロック用に用意された複数の電源電圧の内の最大の電源電圧をその回路ブロックに供給する。逆に、いずれかの回路ブロックに上記複数の電源電圧の内、上記最大電源電圧より低い電源電圧を供給するときには、上記複数のクロックの内、上記最高速のクロックより低速のクロックを供給する。
本発明では、マイクロプロセッサの高速化を実現するだけでなく、消費電力も低減する。したがって、各回路ブロックが使用するクロックと電源電圧を選択するときに、これらの二つの要件を満たすように、この選択動作が制御される。一般に、ＣＭＯＳ回路の消費電力は、その回路の動作周波数に比例し、そこに供給される電源電圧の自乗に比例する。したがって、全ての回路ブロックに上記最高速のクロックＣＬＫ−ａと最大電圧ＶＨを供給した場合、マイクロプロセッサの消費電力は、定常動作の場合（今の例では、全ての回路ブロックに中間のクロックＣＬＫ−ｂと低い電源電圧ＶＬを供給した場合）よりはるかに増大する。
しかし、実際にはマイクロプロセッサが実行するプログラムの処理速度を増大するには、全ての回路ブロックを同時に高速化させる必要がない場合がある。したがって、本発明では、全ての回路ブロックを同時に高速に動作させるのではなく、プログラムの処理の高速化に寄与するいずれか一つまたは複数の回路ブロックを選択的に高速動作させる。そのために、それらの回路ブロックが使用するクロックと電源電圧を増大する。図１の場合には、上記最高速のクロックＣＬＫ−ａと高い電源電圧ＶＨを使用させる。
このような動作だけでは、定常動作状態よりは、マイクロプロセッサの消費電力は増大する。したがって、本発明では、いずれかの回路ブロックの動作クロックを増大するときには、他の回路ブロックの動作クロックを下げるようにする。これによりマイクロプロセッサ全体の消費電力を、予めマイクロプロセッサに対して定められた限界消費電力を超えないようにする。図１の場合には、具体的には、他の機能ユニットが使用するクロックを定常動作時のクロックＣＬＫ−ｂから省電力用のクロックＣＬＫ−ｃに変更する。こうして、クロックＣＬＫ−ａを使用した機能ユニットの消費電力の増大を、クロックＣＬＫ−ｃを使用した機能ユニットの消費電力の減少により償う。
このように、本発明では、複数の回路ブロックのいずれか一つに与えるクロックあるいはクロックと電源電圧とを、より高速なクロックあるいはそのクロックとそのクロックのためのより高い電源電圧に変えるときには、上記複数の回路ブロックの内の少なくも一つの他の回路ブロックに供給しているクロックをより低速のクロックに変える。
なお、従来技術を適用したマイクロプロセッサの場合には、いずれかの機能ユニットに供給するクロックの周波数を低下させることにより、その機能ユニットでの消費電力が変化する、特定の機能ユニットの性能は向上しない。すなわち、従来技術では、定常動作状態では全ての機能ユニットを一定のクロックで動作させ、その後いずれかの機能ユニット、例えば、ＣＰＵとＦＰＵの両方の処理性能を低下させてもよい状態になった場合には、これらの二つの機能ユニットに供給するクロックの周波数を定常動作時より低減する。この結果、マイクロプロセッサの電力は大幅に低下する。また、ＣＰＵのみ処理性能を低下させてもよい場合には、ＣＰＵのクロックの周波数のみを低下させる。この場合でも定常動作時より消費電力が低下する。この従来技術にはある機能ユニットの消費電力を低減するために、その機能ユニットの性能を低下しているだけである。定常動作時より高い動作速度でいずれかの機能ユニットを動作させるという技術はない。したがって、定常動作時に使用するクロックより周波数が高いクロックを使用するあるいはそれに合わせて定常動作時に使用する電源電圧より高い電源電圧を使用するという技術もない。
以下、本実施の形態をさらに詳細に説明する。図２に示すように、電源・クロック制御ユニット１０１内のクロック分配回路１０３は、発振器８００、分周回路８０２からなる一般的な構成である。発振器８００から出力される元のクロック８０１を分周回路８０２に入力し、これを必要に応じて分周することでクロックＣＬＫ−ａ〜クロックＣＬＫ−ｃを作り出す。
図３に示すように、ＣＰＵ１０５には、ＣＰＵ本来の処理を実行するための命令処理回路５００の他に、クロック切り換え回路５０２と電源切り換え回路５０１とが新たに設けられている。命令処理回路５００内に動作環境制御回路５０３とラッチ５０４とが新たに設けられている。
本実施の形態では実行中のプログラム内に動作環境を変更するための命令が新たに設けられる。この命令は、特定のオペレーションコードとオペランドを有し、オペランドではこのマイクロプロセッサで実現する複数の動作環境を指定する。各動作環境は、各機能ユニットに与えるクロックと電源電圧の異なる組み合わせの一つを表す。本実施の形態では後述するように４つの動作環境を用いる。したがって、このオペランドは２ビットからなる。動作環境制御回路５０３は、この命令を解読すると、その２ビットのオペランドをラッチ５０４に出力する。ラッチ５０４に保持された２ビットのオペランドは、動作環境制御信号ＥＮＶ（１１２）として電源・クロック制御ユニット１０１内の消費電力制御回路１０２に送出され、この消費電力制御回路１０２は、この信号１１２に応答してマイクロプロセッサの動作環境を変更する。その動作は後述する。
なお、命令処理回路５００には、以下に説明するように種々の命令を実行するための種々の回路の他に整数演算回路および一群の内部レジスタを含むが、これらの回路は簡単化のために図示していない。命令処理回路５００は、実行すべき命令を図示しないＲＯＭもしくはＲＡＭから読み出すためのメモリアクセス命令を記憶制御ユニット１０４に、アドレスバス１１１、図示しない制御バスを使用して送出し、記憶制御ユニット１０４内の図示しないキャッシュメモリあるいは図示しないＲＡＭもしくはＲＯＭからその命令が読み出されたときに、その命令を解読し、その命令の実行を制御する。解読された命令が図示しないＲＯＭまたはＲＡＭに対するデータアクセス命令であるときには、メモリアクセス要求を記憶制御ユニット１０４にデータバス１１０、アドレスバス１１１、図示しない制御バスを使用して送る。解読された命令が整数演算命令であるときには、命令処理回路５００内の整数演算回路（図示せず）によりその命令が要求する演算を実行させる。解読された命令が浮動小数点演算命令であるときは、その命令をＦＰＵ１０６に送り、このユニットによりその命令を実行させる。その命令が周辺入出力ユニット１０７を使用する命令であるときも同様にして、その命令を周辺入出力ユニット１０７に送る。
図４に示すように、電源・クロック制御ユニット１０１内の消費電力制御回路１０２は、電力制御マップメモリ６００を有する。本メモリは、電源・クロック切り換え信号１１３ａ〜１１３ｄを生成する情報を含む電力制御マップを記憶する回路であり、本実施の形態では、この回路はＲＯＭで構成される。このＲＯＭは、動作環境制御信号ＥＮＶ（１１２）が採りうる複数の値をアドレスとする複数の記憶位置の各々に、それぞれの動作環境制御信号ＥＮＶ（１１２）の値に対応する一組の電源・クロック切り換え信号１１３ａ〜１１３ｄを記憶する。電源・クロック切り換え信号１１３ａ〜１１３ｄはそれぞれ記憶制御ユニット１０４、ＣＰＵ１０５、ＦＰＵ１０６、周辺入出力ユニット１０７に供給される電源・クロック切り換え信号である。なお、電力制御マップメモリ６００に代えて同じような信号を生成できるゲート回路を使用してもよい。
本実施の形態ではたとえば動作環境制御信号ＥＮＶ（１１２）を２ビット（ｄ１、ｄ０）とし、電源・クロック切り換え信号１１３ａ〜１１３ｄの各々を３ビット（ｐ、ｃ１、ｃ０）とする。図５に電力制御マップメモリ６００の内容を示す。ｐビットは電源選択ビットで、ｐは電源電圧の選択を指示するためのビットで、ｐ＝０が通常電源電圧（ＶＬ）、ｐ＝１が高い電源電圧（ＶＨ）の選択を示す。また、（ｃ１，ｃ０）は、クロック選択ビットで、以下のように、使用するクロックの選択を指示する。
（ｃ１、ｃ０）＝（０、０）  中間速クロックＣＬＫ−ｂ
（ｃ１、ｃ０）＝（０、１）  低速クロックＣＬＫ−ｃ
（ｃ１、ｃ０）＝（１、０）  最高速クロックＣＬＫ−ａ
なお（ｃ１、ｃ０）＝（１、１）は使用されない。
本実施の形態では、次の４つの動作モードを使用する。
（Ａ）全機能ユニット：定常動作
ここでは図１のマイクロプロセッサの全機能ユニットは、定常動作状態では中間速のクロックＣＬＫ−ｂと低い電源電圧ＶＬで駆動されると仮定する。このときには、（ｄ１、ｄ０）＝（０、０）である。このモードでは図５から分かるように、電源・クロック切り換え信号１１３ａ〜ｃはいずれも（０、０、０）となる。この動作モードは、マイクロプロセッサを電源オンしたときまたは、下記のモードの動作が終了し、このモードを使用することを指定する動作環境変更命令が実行されたときに使用される。
このときのマイクロプロセッサ全体の限界消費電力は、パッケージ、冷却条件などから決定され、マイクロプロセッサを構成する機能ユニットをどのように動作させるかに拘わらず、マイクロプロセッサ全体の消費電力がこの限界消費電力を越えないように、マイクロプロセッサを設計する必要がある。以下では簡単化のために、供給するクロックと電源電圧を切り替える機能ユニット１０４〜１０７における消費電力のみを議論する。これらのユニットにおける消費電力あるいはこれらのユニットに対する限界消費電力をあたかもマイクロプロセッサ全体の消費電力あるいはマイクロプロセッサ全体に対する限界消費電力として議論する。
このモードの時のマイクロプロセッサの消費電力Ｐは、図６の区間Ａに示すように、図に点線で示す限界消費電力を越えないように定められている。たとえば、マイクロプロセッサの限界消費電力は２．１ｗａｔｔで、低い電源電圧ＶＬ＝２．０ｖ、中間速クロックＣＬＫ−ｂは２００ＭＨｚで、この定常動作時の消費電力はたとえば２．０ｗａｔｔであると仮定する。記憶制御ユニット１０４、ＣＰＵ１０５、ＦＰＵ１０６、周辺入出力ユニット１０７が定常動作状態で消費する消費電力の割合をそれぞれ０．１５，０．３，０．３，０．２５と仮定する。すなわち、定常動作状態では、これらの機能ユニットでの消費電力はそれぞれ０．３，０．６，０．６，０．５ｗａｔｔである。
（Ｂ）ＦＰＵ：高速動作
ここではＦＰＵ１０５と記憶制御ユニット１０４に最高速のクロックＣＬＫ−ａと高い電源電圧ＶＨを供給し、これらの機能ユニットを高速動作させる。ＣＰＵ１０５と周辺入出力ユニット１０７には低速のクロックＣＬＫ−ｃと低い電源電圧ＶＬを供給し、低速動作をさせる。
このときには、（ｄ１、ｄ０）＝（０、１）である。このモードでは図５から分かるように、記憶制御ユニット１０４とＦＰＵ１０６に対する電源・クロック切り換え信号１１３ａ、１１３ｃがいずれも（１、１、０）となる。ＣＰＵ１０５に対する電源・クロック切り換え信号１１３ｂと周辺入出力ユニット１０７に対する電源・クロック切り換え信号１１３ｄは（０、０、１）となる。
このモードは、たとえばＣＰＵ１０５が実行するプログラム部分の命令の多くが、ＦＰＵ１０６を使用する命令であるときに使用される。このモードでは、ＣＰＵ１０５と周辺入出力ユニット１０７が使用するクロックを低いクロックに変更した結果、これらの機能ユニットの動作速度が遅くなるが、そのことがプログラムの処理速度に影響がなければ、この後者の機能ユニットの動作速度の低下は問題にならない。逆に、そのように動作速度の低下がプログラムの処理速度に影響を実質的に与えないような機能ユニットを選ぶ必要があり、このような選択はプログラムによっては可能である。元々ＦＰＵ１０６の性能向上を行なう必要があるプログラム部分を実行する場合、そのプログラム部分によるＣＰＵ１０５の使用頻度は低く、したがって、ＣＰＵ１０５の回路の活性化率は低い。したがって、ＣＰＵ１０５の低速動作は、このこれらのマイクロプロセッサ全体の処理性能へ大きな影響を与えないと考えられる。
図１の場合、後に説明するように、いずれかの機能ユニットのクロックを変化させるときには、ＣＰＵ１０５が実行するプログラムの中に、特定の命令を含ませ、ＣＰＵ１０５がこの命令を解読したときに、上記クロックの変更が行われる。
このモードで、記憶制御ユニット１０４も高速動作させるのは、これらの命令をより高速に図示しないＲＡＭまたはＲＯＭもしくは記憶制御ユニット１０４内の図示しないキャッシュメモリより高速に読み出し、さらにそれらの命令が使用するデータをＲＡＭまたはＲＯＭもしくは図示しないキャッシュメモリから高速に読み出すかあるいはその命令の実行結果データをそれらのメモリに高速に書き込むためである。
定常動作モードからこのモードに変更するときには、ＦＰＵ１０６のクロックの周波数と電源電圧が定常モードの時のそれらより増大することになる。この結果生じるＦＰＵ１０６の性能Ｓは、図６の区間Ｂに示すように、最高の性能となる。一方、ＣＰＵ１０５と周辺入出力ユニット１０７に供給するクロックの周波数が下げられる。このように、定常動作モードより、ＦＰＵ１０６を高速に動作させる場合、ＦＰＵ１０６を高速動作させたことにより生じる消費電力の増加を、ＣＰＵ１０５と周辺入出力ユニット１０７を低速動作をさせることにより償っていると言える。
本実施の形態では、ＣＰＵ１０５と周辺入出力ユニット１０７が使用する電源電圧は下げないで、ＣＰＵ１０５と周辺入出力ユニット１０７が使用するクロックを、動作環境変更前に使用していた通常のクロックＣＬＫ−ｂから低速のクロック１１５ｃに切り換えることで、ＣＰＵ１０５と周辺入出力ユニット１０７の低消費電力化を達成する。これによりマイクロプロセッサ全体としての消費電力が、限界電力を超えないようにする。
したがって、最高速クロックＣＬＫ−ａ、低速クロックＣＬＫ−ｃの周波数は、クロックＣＬＫ−ｂに代えてクロックＣＬＫ−ｃを使用する機能ユニットにおける消費電力の低下が、クロックＣＬＫ−ｂに代えてクロックＣＬＫ−ａを使用する機能ユニットでの消費電力の増大を償うことが出来るように定める。
たとえば、最高速クロックＣＬＫ−ａは２５０ＭＨｚ、低速クロックＣＬＫ−ｃは５０ＭＨｚ、高い電源電圧ＶＨは２．５ｖと仮定する。この動作モードでは、記憶制御ユニット１０４の消費電力は０．５８５ｗａｔｔ、ＦＰＵ１０６での消費電力は１．７５８ｗａｔｔ、ＣＰＵ１０５の消費電力は０．１５ｗａｔｔ、周辺入出力ユニット１０７の消費電力は０．１２５ｗａｔｔとなり、これらの合計は、２．０３ｗａｔｔとなる。したがって、この動作モードでも、図６の区間Ｂに示すように、マイクロプロセッサの消費電力は、上記定常動作時の消費電力２．０ｗａｔｔより少し増大するが、限界消費電力２．１ｗａｔｔよりは小さく抑えられる。
（Ｃ）ＣＰＵ：高速動作
ここではＣＰＵ１０５と記憶制御ユニット１０４に最高速のクロックＣＬＫ−ａと高い電源電圧ＶＨを供給し、これらの機能ユニットを高速動作させる。ＦＰＵ１０６と周辺入出力ユニット１０７には低速のクロックＣＬＫ−ｃと低い電源電圧ＶＬを供給し、低速動作をさせ、る。
このときには、（ｄ１、ｄ０）＝（１、０）である。このモードでは図５から分かるように、記憶制御ユニット１０４とＣＰＵ１０５に対する電源・クロック切り換え信号１１３ａ、１１３ｃがいずれも（１、１、０）となる。ＦＰＵ１０６と周辺入出力ユニット１０７に対する電源・クロック切り換え信号１１３ｃは（０、０、１）となる。
したがって、定常動作モードからこのモードに変更するときには、ＣＰＵ１０５のクロックの周波数と電源電圧が定常モードの時のそれらより増大することになる。それに伴いＦＰＵ１０６と周辺入出力ユニット１０７のクロックの周波数が下げられるのはＦＰＵを高速に動作させる前述の動作モードの場合と同じである。
したがって、本実施の形態は、ある機能ユニットを定常動作状態より高速に動作させるときに、他の機能ユニットに定常動作状態よりも低速な動作をさせる考えることができる。また、ＦＰＵを高速に動作させる前述の動作モードから、本動作モードに変更した場合には、ＣＰＵ１０５のクロックの周波数が増大された。したがって、本実施の形態は、このような場合には他の機能ユニットたとえばＦＰＵ１０６のクロックの周波数を下げたと考えることもできる。また、ＦＰＵを高速に動作させる前述の動作モードから、本動作モードに変更した場合には、ＣＰＵ１０５に供給するクロックを最高速クロックに変化し、そこに供給される電源電圧が最大電源電圧に変化されたことになる。したがって、本実施の形態は、このような場合に、最高速のクロックと最大電源電圧をすでに供給されている他の機能ユニット、たとえばＦＰＵ１０６のクロックの周波数と電源電圧をより低速のクロックとより低い電源電圧に変化したと考えることもできる。
このモードは、たとえばＣＰＵ１０５が実行するプログラム部分の命令の多くが、ＣＰＵ１０５内の図示しない整数演算回路を使用する命令であるときに使用される。ＣＰＵ１０５を高速動作させたことにより生じる消費電力の増加を、ＦＰＵ１０６を低速動作をさせることにより償っている。このモードは、このモードを指定する動作環境変更命令が実行されたときに使用される。このモードで、記憶制御ユニット１０４も高速動作させる理由は、モードＢの場合と同じである。
（Ｄ）全機能ユニット：省電力動作
ここでは、全ての機能ユニットを低速クロックＣＬＫ−ｃと低い電源電圧ＶＬで動作させる。このときには、（ｄ１、ｄ０）＝（１、１）である。このモードでは図５から分かるように、電源・クロック切り換え信号１１３ａ〜ｃはいずれも（０、０、１）となる。このモードは、たとえば実行中のプログラムがＣＰＵ１０５、ＦＰＵ１０６での処理をそれほど必要としないとき、たとえば、外部からのデータの入力待ちのときに使用される。このモードも、このモードを指定する動作環境変更命令が実行されたときに使用される。なお、この省電力動作モードから、他の動作モードに動作モードが変更するときには、省電力モードの時より高速に動作させられる機能ユニットはあるが、いずれの機能ユニットの動作も低速になることはない。したがって、この時には本発明は適用されていない。これは、省電力動作モードは、消費電力が最小の動作モードであり、動作モードを他のいずれの動作モードに変更しても、いずれかの機能ユニットの消費電力を低減する必要がないからである。このような動作モードの変更には本発明を適用しなくてよいのは当然である。
機能ユニット１０４〜１０７は、電源・クロック切り換え信号１１３ａ〜１１３ｄに応答するために以下のように構成されている。
図７に示すように、ＦＰＵ１０６には、浮動小数点演算を実行する浮動小数点演算回路４００の他に、クロック切り換え回路４０２と電源切り換え回路４０１とが新たに設けられている。
クロック切り換え回路４０２は、消費電力制御回路１０２から供給される電源・クロック切り換え信号１１３ｃに応答して、クロック分配回路１０３から線１１５ａ〜１１５ｃを介して供給される３つのクロックＣＬＫ−ａ〜クロックＣＬＫ−ｃの内、このユニットが使用する１つのクロックを選択する。クロック切り換え回路４０２は、たとえば図８に示すように、３つのクロック１１５ａ〜１１５ｃの選択を行なうためのＡＮＤゲート１１００、１１０１、１１０２、ＯＲゲート１１０４及びＮＡＮＤゲート１１０３から成る。３ビットの電源・クロック切り換え信号１１３ｃの内の２ビット（ｃ１、ｃ０）がそれぞれ（０、０）、（０、１）、（１、０）であるときに、中間即クロックＣＬＫ−ｂ、低速クロックＣＬＫ−ｃ、最高速クロックＣＬＫ−ａを選択し、線４０５を介してＦＰＵ１０６内の浮動小数点演算回路４００に供給する。
電源切り換え回路４０１は、電源・クロック切り換え信号１１３ｃに応答して、電源配線１１６ａ、１１６ｂを介して供給される２つの電源電圧ＶＨ、ＶＬの内、このユニット１０６が使用する電源電圧を選択する。電源切り換え回路４０１は、たとえば図９に示すように、２つの電源ＶＨ、ＶＬを切り換えるためのＭＯＳスイッチ１０００、１００１と、これらを駆動するバッファ回路１００２、１００３から成り、３ビットの電源・クロック切り換え信号１１３ｃの内のｐビットが０または１のときにそれぞれ電源電圧ＶＬ、ＶＨを選択する。選ばれた電源電圧は電源配線４０４によりＦＰＵ１０６内の浮動小数点演算回路４００に電源を供給する。
電源切り換え回路４０１とクロック切り換え回路４０２は、いずれもＦＰＵ１０６内に設けられ、その内部の浮動小数点演算回路４００に電源電圧とクロックを供給するが、これらの回路は、実質的にＦＰＵ１０６に電源電圧とクロックを供給すると考えることが出来る。また、これらの回路４０１、４０２はＦＰＵ１０６の外に設けられていても良い。したがって、本明細書では、これらの回路が、ＦＰＵ１０６に電源電圧とクロックを供給する回路である呼ぶことがある。このことは他の機能ユニットについても同じである。
図３に示したように、ＣＰＵ１０５には、命令処理回路５００の他に、電源切り換え回路５０１とクロック切り換え回路５０２が設けられている。これらの回路５０１、５０２は、図９、８に示した電源切り換え回路４０１とクロック切り換え回路４０２と同じ回路であり、電源・クロック切り換え信号１１３ｂに応答する。記憶制御ユニット１０４にも、ＦＰＵ１０６内のクロック切り換え回路４０２と電源切り換え回路４０１と同じ構造を有し、電源・クロック切り換え信号１１３ｄに応答する回路（図示せず）が設けられる。周辺入出力ユニット１０７にもＦＰＵ１０６内のクロック切り換え回路４０２と電源切り換え回路４０１と同じ構造を有し、電源・クロック切り換え信号１１３ａに応答する回路（図示せず）が設けられる。
マイクロプロセッサ１２００への給電は、たとえば図１０に示すように、外部より２つの電源電圧ＶＨ、ＶＬを電源配線１１６ａ、１１６ｂを介して直接各機能ユニット１０１、１０４〜１０７に供給すればよい。また、図１１に示すように、マイクロプロセッサ１２０１に、外部より一つの電源電圧たとえばＶＨを供給し、変圧回路１２０２により他の電源電圧ＶＬを発生させてもよい。
本実施の形態によれば、プログラムにより特定の機能ユニットたとえば浮動小数点演算ユニットに高速性能が要求されたときに、その機能ユニットに供給するクロックの周波数を高め、それにより、その機能ユニットをより高性能に動作させる。一方、この高性能動作によって生じる消費電力の増加を他の機能ユニットに供給するクロックの周波数を低減することにより償い、マイクロプロセッサ全体の消費電力は、予め設定した消費電力を越えないようにしている。
＜発明の実施の形態２＞
本実施の形態では消費電力制御回路１０２内の電力制御マップメモリ６００がＲＡＭにより構成され、これにより電力制御マップメモリ６００内の制御情報がソフトウェアにより更新でき、多様な制御を可能となる。
図１２に示すように、ＲＡＭにより構成された電力制御マップメモリ６０００手前にマルチプレクサ１３００が配置される。ＣＰＵ１０５が実行するプログラム内に、電力制御マップメモリ６００を書き換える命令を設け、ＣＰＵ１０５内に、この命令を解読し、ソース選択信号１３０２を生成し、この命令が指定するマップアドレス１３０１とマップ更新データ１３０３を出力する回路を設ける。
マルチプレクサ１３００は、ソース選択信号１３０２が供給されないときには、実施の形態１と同じように、動作環境制御信号ＥＮＶ（１１２）を選択して電力制御マップメモリ６００から一組の電源・クロック切り換え信号１１３ａ〜１１３ｄを読み出す。ソース選択信号１３０２が供給されたときには、マルチプレクサ１３００は、マップアドレス１３０１を選択し、電力制御マップメモリ６００に書き込みアドレスとして供給し、マップ更新データ１３０３の書き込みを指示する。こうして、電力制御マップメモリ６００プログラムにより所望の内容に書き換えることができる。
＜発明の実施の形態３＞
以上の実施の形態で示したマイクロプロセッサは、汎用のマイクロプロセッサであったが、とくにマルチメディア向けのマイクロプロセッサでは、ＦＰＵに代えて、グラフィックスや画像処理のような特殊な処理を実行する一つまたは複数の機能ユニットが使用される。これらの機能ユニットを高速に動作させるために、以上に説明した技術が適用できる。これらの特殊な処理は一般に処理時間が長い。したがって、それぞれの処理を実行する間、それぞれの処理を実行する機能ユニットを高速に動作させることがマイクロプロセッサの処理速度の向上に有効である。それでいて、マイクロプロセッサ全体の消費電力を限界消費電力以下に抑えることが出来る。
＜変形例＞
以上のいくつかの実施の形態の変形例がいくつかすでに以上の説明の中に記載された。また、以下にはいくつかの他の変形例を記載する。本発明は、以上の実施の形態に限られるのではなく、これらの変形例および他の変形例を含むいろいろの変形例によっても実現可能であることはいうまでもない。
（１）実施の形態１では周辺入出力ユニット１０７は定常動作か省電力動作しかしなかった。しかし、このユニットに高速動作をさせることもできる。たとえば、この周辺入出力ユニット１０７としてモデム用の周辺入出力ユニットを使用するときには、この機能ユニットを高速動作させることが望ましいことがある。
（２）実施の形態１では、クロック生成回路１０３が全機能ユニットに共通に設けられ、全機能ユニットに複数のクロックを複数の共通のクロック線を介して同時に供給している。各機能ユニット内にクロック切り換え回路が設けられた。しかし、これに代えて電源・クロック制御ユニット内に各機能ユニット用のクロック切り換え回路を設け、ここで各機能ユニットに供給すべきクロックを選択させ、選択されたクロックを、その機能ユニット用に設けられたクロック線を介して供給することもできる。あるいは複数の機能ユニットに設けた共通のクロック切り換え回路により、それぞれの機能ユニット用のクロックを別々に出力させることもできる。このような構造の回路も、本発明では、各機能ユニット毎に、クロックを切り換える回路と考える。
実施の形態１では、全機能ユニットに全クロックを供給する信号線を使用したが、本変形例では、各機能ユニットに対応して一つのクロック信号線のみを使用すればよい。したがって、クロック信号線が占めるチップ面積は少なくできる可能性がある。
同様に、実施の形態１では、全機能ユニットに複数の電源電圧が複数の共通の電源配線を介して同時に供給し、各機能ユニットに電源切り換え回路を設けている。これに代えて、上記クロック切り換え回路の変形例と同様に電源電圧の切り換え回路を構成できる。本発明では、このような構造の電源切り換え回路も、各機能ユニット毎に電源電圧を切り換える回路と考える。
電源切り換え回路は、大電流の切替を必要とするので、他の回路に供給する電源電圧が変動する恐れがある。したがって、この回路を、各機能ユニットの外部、とくにチップ周辺部に設ける方が望ましいことがある。同様に、クロック切り替え回路も各機能ユニットの外部とくにチップ周辺部に設けることが望ましい場合もある。
（３）実施の形態１では、定常動作時には全機能ユニットが同じクロックと同じ電源電圧でもって動作した。しかし、本発明は、この場合に限らず、定常動作の時に、いずれかの機能ユニットに供給されるクロックあるいはクロックと電源電圧が他の機能ユニットに供給されるクロックあるいはクロックと電源電圧とは異なっていてもよい。
すなわち、定常動作の時に、いずれかの機能ユニットに供給されるクロックが他の機能ユニットに供給されるクロックより低速のクロックであってもよい。たとえば、定常動作時にはＦＰＵ１０６あるいは周辺入出力ユニット１０７のみ低速クロックＣＬＫ−ｃを供給し、省電力動作を実行させ、他の機能ユニットには中間即のクロックＣＬＫ−ｂと低い電源電圧ＶＬを供給しても良い。このときに、ＦＰＵ１０６を中間速クロックＣＬＫ−ｂまたは最高速クロックＣＬＫ−ａで動作させるときに、他の機能ユニットたとえばＣＰＵ１０５に供給するクロックをより低速のクロックＣＬＫ−ｃに変更すればよい。
また、定常動作の時に、いずれかの機能ユニットに供給されるクロックが他の機能ユニットに供給されるクロックより高速のクロックが供給されてもよい。たとえば、定常動作時にはＣＰＵ１０５のみに最高速クロックＣＬＫ−ａと最高電源電圧ＶＨを供給し、高速動作を実行させ、他の機能ユニットには、中間即のクロックＣＬＫ−ｂと低い電源電圧ＶＬを供給しても良い。このときに、ＦＰＵ１０６を最高速クロックＣＬＫ−ａと最高電源電圧ＶＨで動作させるときには、たとえばＣＰＵ１０５に供給するクロックをより低速のクロックＣＬＫ−ｂまたはクロックＣＬＫ−ｃに変更すればよい。
（４）本発明は実施の形態１で使用した３つクロックより多いクロックを使用する場合にも適用できるのは言うまでもない。さらに、本発明は実施の形態１で使用した２つ電源電圧より多い電源電圧を使用する場合にも適用できるのは言うまでもない。しかし、この場合でも、いずれかの機能ユニットに最高速クロック使用するときには、最大電源電圧を使用し、最大の電源電圧より小さい電源電圧を使用するときには、最高速クロックより低速のクロック使用する。
（５）実施の形態１では、いずれかの機能ユニットを定常動作状態から最高速動作状態に変更する場合に、本発明に従って、他の機能ユニットの動作速度を低減した。しかし、より多数のクロックと電源電圧が使用される場合において、いずれかの機能ユニットのクロックを最高速でないクロックからそれより高速であるが最高速でないクロックに変更する場合において、最高速のクロックより低速のクロックが供給されている他の機能ユニットのクロックを、より低速のクロックに変更し、それによりマイクロプロセッサ全体の消費電力が限界消費電力を超えないようにすることもできる。
（６）以上の実施の形態では、省電力動作では、各機能ユニットには定常動作時と同じ電源電圧を与え、クロックのみをより低速のクロックに変更した。しかし、この場合、電源電圧として、省電力用の電源電圧を用意し、これを省電力動作をさせる機能ユニットに供給することもできる。この方法を採れば、省電力動作する各機能ユニットの消費電力はさらに低減される。
（７）本発明は実施の形態１で用いた４つの動作モードと異なる複数の動作モードを使用する場合にもあるいはこれらの４つの動作モードに他の動作モードを追加する場合にも適用できるのは言うまでもない。
（８）実施の形態１では各機能ユニットが一つの回路ブロックにより実現されているマイクロプロセッサの例であるが、本発明は、より一般には複数の回路ブロックに区分されているマイクロプロセッサに適用できる。また、一つの回路ブロックの全体が同じクロックと同じ電源電圧で駆動される必要はなく、その一部が他と異なるクロックと電源電圧で駆動されてもよい。
（９）実施の形態１では、いずれかの機能ユニットに供給するクロックを中間速クロックＣＬＫ−ｂから低速クロックＣＬＫ−ｃに変更するときは、電源電圧は低い電源電圧ＶＬのままとした。しかし、これに代えて、低速クロック用のさらに低い電源電圧を用意し、低速クロックＣＬＫ−ｃを使用するときに、電源電圧をこのさらに低い電源電圧に変更することもできる。この方法では、低速クロックＣＬＫ−ｃを供給された回路ブロックの消費電力はさらに低減できる利点がある。但し、実施の形態１よりも必要な電源配線の数が増大する。また、各回路ブロックへ供給する電源電圧の切り替え回数が増大する。
（１０）本発明はＣＭＯＳからなるマイクロプロセッサに限定されるのではなく、他の種類の回路たとえばＢｉＣＭＯＳ回路からなるマイクロプロセッサにも適用できるのは言うまでもない。
（１１）実施の形態１では、定常動作状態では、全機能ユニットに低い電源電圧ＶＬと中間速クロックＣＬＫ−ｂを供給し、いずれかの機能ユニットを最高速で動作させたいときに、その機能ユニットに最高速クロックＣＬＫ−ａと最大電源電圧ＶＨとを供給した。しかし、低い電源電圧は使用しないで、定常動作状態では、全機能ユニットに高い電源電圧ＶＨと、中間速クロックＣＬＫ−ｂを供給する方法も考えられる。
（１２）実施の形態１では、図示しないＲＡＭ、ＲＯＭという特定の回路ブロックに供給するクロックと電源電圧は常に一定の周波数と電圧を有していた。本発明は、このように一部の回路ブロックに供給されるクロックの周波数が変化されない場合でも、他の複数の回路ブロックに供給されるクロックの周波数がそれぞれの回路ブロックごとに変更される場合にも適用できる。もちろん全ての回路ブロックについて、それぞれに供給するクロックの周波数が変更される場合にも本発明は適用できる。同様に、いずれかの回路ブロックに供給されるクロックの周波数が、他のいずれかの回路ブロックに供給されるクロックの周波数とは同一であるという条件を満たしながら変更される場合にも本発明は適用できる。本発明では、マイクロプロセッサ内の全ての回路ブロックの内の少なくとも複数の回路ブロックに供給するクロックをそれぞれの回路ブロックごとに変更するクロック供給回路を使用すればよい。言い換えると、このように一部の回路ブロックに供給するクロックの周波数をそれぞれの回路ブロックごとに変更するクロック供給回路を使用する限り、そのクロック供給回路は、マイクロプロセッサ内の複数の回路ブロック毎に、異なる周波数のクロックを切り替えて供給する回路と考えることができる。以上のことは電源電圧供給回路についても同じであり、一部の回路ブロックに供給する電源電圧の値をそれぞれの回路ブロックごとに変更する電源電圧供給回路を使用する限り、その電源電圧供給回路は、マイクロプロセッサ内の複数の回路ブロック毎に、異なる値の電源電圧を切り替えて供給する回路と考えることができる。
以上に詳述したごとく、本発明によれば、特定の回路ブロックを高速で動作でき、それでいてマイクロプロセッサ全体の消費電力が一定の限界消費電力を超えないマイクロプロセッサが得られる。
【図面の簡単な説明】
図１は、本発明の一実施の形態によるマイクロプロセッサの概略ブロック図である。
図２は、図１の装置で本発明を好適に実施するためのクロック分配回路の概略ブロック図である。
図３は、図１の装置で本発明を好適に実施するための中央処理装置の概略ブロック図である。
図４は、図１の装置で本発明を好適に実施するための消費電力制御回路の概略ブロック図である。
図５は、図５の装置に含まれた電力制御マップメモリの内容を示した図であるである。
図６は、図１のマイクロプロセッサでの消費電力と処理速度の変化を例示する図である。
図７は、図１の装置で本発明を好適に実施するための浮動小数点演算ユニットの構成を示す図である。
図８は、本発明の一実施の形態におけるクロック切り換え回路の概略ブロック図である。
図９は、本発明の一実施の形態における電源切り換え回路の概略ブロック図である。
図１０は、本発明の一実施の形態での電源供給手段の概略ブロック図である。
図１１は、本発明の一実施の形態で使用できる他の電源供給手段の構成を示した図である。
図１２は、本発明の他の実施の形態での消費電力制御回路の構成を示した図である。
【図１】
0003857052.tif 000002
【図２】
0003857052.tif 000003
【図３】
0003857052.tif 000004
【図４】
0003857052.tif 000005
【図５】
0003857052.tif 000006
【図６】
0003857052.tif 000007
【図７】
0003857052.tif 000008
【図８】
0003857052.tif 000009
【図９】
0003857052.tif 000010
【図１０】
0003857052.tif 000011
【図１１】
0003857052.tif 000012
【図１２】
0003857052.tif 000013