(57)【特許請求の範囲】
【請求項１】
プロセッサ命令を実行するパイプラインと、
ある機能を第１の速度で実行する第１の回路と、
前記機能を、前記第１の速度よりも遅い第２の速度で実行する第２の回路と、
前記機能を実行するために第１と第２の回路のどちらかを選択する制御システムと、
制御システムが第１と第２の回路のどちらを選択したかに依存して、前記パイプラインのクロック速度を変更する機構と、
を含むマイクロプロセッサ。
【請求項２】
第１の回路が、通常の高速度で機能を実行するデフォルト回路であり、第２の回路が、より低速度で機能を実行し、より少ない電力を必要とする低電力回路である、請求項１記載のマイクロプロセッサ。
【請求項３】
制御システムが、所定の命令コードが検出されたとき、第２の回路を使用して機能を実行させる、請求項１または２記載のマイクロプロセッサ。
【請求項４】
パイプラインのクロック速度を変更する前記機構が、前記機能に必要な時間調整の量を決定するルックアップ・テーブルを含む、請求項１〜３のいずれか１項記載のマイクロプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般に、集積回路の分野に関し、より詳細には、電力削減のため複数の等価機能ユニットを含むことができるマイクロプロセッサなどの集積回路に関する。
【０００２】
【従来の技術】
最新の集積回路の設計において、電池の電力を利用する応用例がより長い期間動作できるように、消費電力を削減する要件がますます強くなっている。たとえば、セルラー・フォン、パーソナル・デジタル・アシスタント、ラップ・トップはすべて、集積回路を利用する電池ベースのシステムの例である。そのようなシステムにおける電力の主な消費装置は、可能な限り高い速度と性能を提供するように設計されたマイクロプロセッサである。残念ながら、概して、マイクロプロセッサの速度は、電力消費量に比例する。したがって、多くのシステムは、高い性能を必要としない期間電力消費を少なくするために、マイクロプロセッサのクロック速度を遅くする機構を含む。他の類似の機構は、マイクロプロセッサを、少ない電力を利用する「スリープ・モード」にするが、ウェイクアップさせてからでなければ動作を続行することができない。
【０００３】
そのようなシステムでは、マイクロプロセッサがその動作を実行し続けなければならないことがあるが、必ずしも最高性能の期間中に必要とされるものと同じ速度（すなわち、電力量）である必要のないことが分かっている。したがって、「スリープ・モード」と正常な高速動作の間にある動作モードで、システムの要件が十分に満たされるはずである。たとえば、パーソナル・デジタル・アシスタントは、キーボードや画面からの入力を受けるまで、その最高能力で動作する必要がない。前述のように、中央処理装置（ＣＰＵ）の電力のこのような削減を達成する現在の方法は、プロセッサ・ユニットに対するクロックを遅くすることによるものである。相補型金属酸化膜半導体（ＣＭＯＳ）の設計は、速度と電力との間に線形関係がある。したがって、クロック速度が低下すると電力消費が減少する。しかし、最も重要な機能ユニット（たとえば、乗算器回路）に対するクロック速度を低下させると、動作を完了するために必要なエネルギーの総量は減らず、エネルギーが消費される期間が延長されるだけである。したがって、同じ量のエネルギーが、単により長い期間にわたって使用されることになる。したがって、クロック速度の低下は、マイクロプロセッサが必要とする全電力消費の削減を必ずしも保証しない。
【０００４】
電力消費が、回路内のワイヤまたはネットのトグリング（toggling）の量に直接関係することが分かっている。ワイヤが、低電圧レベルと高電圧レベルとの間でトグルするたびに、一定量の電力が消費される。ほとんどの高速機能回路では、設計の重点は、電力消費ではなく速度に置かれる。高速機能回路を実装するためには、多数の並列動作を同時に実装する必要がある。したがって、高速機能動作を実行すると、きわめて短時間に多数のトグリングが行われ、多量の電力が消費される。さらに、そのような動作は、個々の計算の完了に異なる長さの時間を必要とする多数の並列プロセスを利用するので、並列処理動作の出力ノードは、最終結果（すなわち、安定状態）に達するまでに何度もトグルすることがある。その一例を、図３に示すが、この図では、高速乗算回路の出力信号３３を示す。参照番号６０において、出力信号３３が定常状態に達するまでに何度もトグルすることが分かる。機能的には、クロック・サイクル６２の終了前に定常状態に達する限りトグリングに問題はない。残念ながら、ほとんどの高速回路で特徴となる不要なトグリング６０は、電力を消費し、したがってシステムの電池を消耗させる。
【０００５】
【発明が解決しようとする課題】
したがって、クロックをその最低周波数まで下げた後でも、電力を削減するための解決策が必要である。低電力性能を提供できるプロセッサがなければ、電池駆動の応用例を完全に活用することができない。
【０００６】
【課題を解決するための手段】
本発明は、マイクロプロセッサの性能を維持しながらその電力消費を削減するシステムを提供する。本発明は、プロセッサ内の任意の所与の機能に関して、第２の等価な機能を実装できるようにする。電力消費を削減するために、第２の等価な機能を、より低速でエネルギー消費の少ない回路で実装することができる。したがって、マイクロプロセッサは、同じ動作を完了するために第２の等価な機能により多くの時間が提供されるように設計され、あるいはプロセッサ内で利用可能なより低速のオプションを使用して必要な追加サイクルの数を最小限に抑えるように設計される。したがって、本発明は、ある機能を第１の通常速度で実行する第１の回路と、同じ機能を第２のより低速度で実行する第２の回路と、その機能を実行するために第１と第２の回路のどちらかを選択する制御システムとを備える処理システムを含む。
【０００７】
処理システムはさらに、プロセッサ命令の実行速度を制御する機構を含む。特に、機能を完了するのに要する時間の長さは、制御システムがどちらの回路を選択するかに依存するため、その機能が完了するまで、プロセッサのパイプライン内の次のプロセッサ命令の実行を待たなければならないことがある。実行速度の制御は、パイプラインに対するクロック速度を変化させるか、またはパイプラインを制御機構に調べさせて機能が完了したかどうかを判定することによって達成することができる。最後に、通常速度の回路と機能的に等価なより低速の回路のどちらを選択するかの判断は、命令ストリーム内の命令コードまたは外部信号によって制御することができる。
【０００８】
【発明の実施の形態】
次に図を参照すると、図１は、様々な等価な機能２６および２８を含むプロセッサ１０を示す。各機能は、組合せ論理回路によって実装できるどんな機能も含むことができる、特定の動作のためのハードウェア実装を表す。なんらかのプロセスを実装する機能２６のそれぞれごとに、論理的に等価な機能２８も含まれる。たとえば、回路Ａ２０は、機能的に等価な対応する回路Ａ'２２を有する。したがって、論理機能回路Ａが何を実行しようと（たとえば、乗算）、回路Ａ'２２は、同じ論理機能を実行することができる。回路Ａ２０と回路Ａ'２２の違いは、回路Ａ'２２は動作が遅く、したがって必要なエネルギーが少ないことである。同様に、回路Ｂは、機能的に等価な対応する回路Ｂ'を有し、回路Ｃは、機能的に等価な対応する回路Ｃ'を有する。
【０００９】
プロセッサ１０はさらに、こうした状況下で適切な回路を選択するための制御機構１８を含む。たとえば、制御機構１８は、高速乗算が必要であると判断し、したがって回路Ａ２０にその演算を実行するよう指示することができる。あるいは、制御機構１８は、乗算が必要であるが、その演算を実行する速度は重要ではないことを認識することもできる。この場合、制御機構１８は、回路Ａ'２２を選択することになる。信号経路３２を介して送られる外部信号２４によって、あるいは信号経路３０を介して送られるパイプライン１２内の命令から、通常回路とその低電力等価回路のどちらを利用するかを制御機構１８に指示することができる。さらに、制御機構に高電力回路か低電力回路を選択させるために、ソフトウェア、外部信号、電池監視装置などの他のどんなシステムも利用できることを理解されたい。
【００１０】
従来のプロセッサ動作にしたがって、プロセッサ命令が、パイプライン１２にロードされ、次に実行のためにディスパッチされる。各命令は、機能回路を実装するためにプロセッサを必要とすることがあり、そのとき、制御機構１８は、通常電力回路、高電力回路２６、または低電力回路２８の選択肢のどれを選択するかを決定することができる。制御機構１８が低電力回路２８を選択する場合、低電力回路がその動作を完了することを保証するようにパイプライン内の次の命令の実行速度を変更しなければならない。図１は、パイプライン内での命令の実行速度を、そのような変更を達成するように制御する可能な２つの方法を示す。第１の方法は、パイプライン１２のクロック速度を遅くするクロック制御機構１４を組み込むものである。パイプライン１２のクロック速度を遅くすることによって、低速の機能は、その機能に関連する指定のクロック・サイクル数よりも前にまたはその範囲内でその動作を完了させる時間があることになる。これを達成するには、制御機構１８は、低速の機能を実行し続いてパイプライン１２を制御するクロック信号に必要な調整を加えるのに必要な時間の量を分析しなければならない。これは、それぞれの機能に必要な時間調整の量を決定するルックアップ・テーブルを使って達成することができる。
【００１１】
パイプライン１２内の命令の実行速度を制御する第２の方法は、より低速な回路がそのタスクを完了するまで命令の次のディスパッチを本質的に遅延させるパイプライン・ストール機構１６を利用するものである。この実装では、より低速の機能が完了するまで、パイプライン・ストール機構１６が、制御機構１８と通信することが必要となることがある。これは、結果が正しくなるまで、パイプライン・ストール機構１６に待機信号を制御機構１８にアサートさせることによって達成することができる。完了した後、パイプライン・ストール機構１６は、パイプラインを再開させ、正常な処理を続行する。この実装では、プロセッサの現行速度を使用して、より低速の回路が使用されている間にストール時間をどれだけパイプラインに追加しなければならないかを決定することができる。これは、機能を完了するのに必要な時間と、クロックが動作する速度とを調べるアルゴリズムによって達成することができる。たとえば、クロック周期が１０ナノ秒で、機能が完了するのに１５ナノ秒かかる場合、必要な結果を保証するストール時間は２０ナノ秒となる。
【００１２】
パイプライン１２を制御する追加の方法は、プロセッサ１０によって実行されているソフトウェア内の命令を利用して後続の動作を遅延させることである。この制御を実装するために、コンパイラを使用して、適切なソフトウェアの命令コードおよびパディング（たとえば、ストールやノーオペレーション命令）により別々の「低速機能ルーチン」を生成することができる。さらにこの手法では、適切な動作を保証するためにコンパイラがクロック速度を完全に制御する命令を生成することが必要となることがある。本発明はまた、それぞれ同じ機能を実行することができる複数の実行ユニットを含む、Ｐｅｎｔｉｕｍプロセッサなどのスーパー・スカラー・アーキテクチャ上で実装することもできる。したがって、低速でより安価な実行ユニットと高速でより高価な実行ユニットを利用することができる。このような実装において、プロセッサは、低電力の機能に動作をディスパッチし、次いで他の無関係の動作をディスパッチするか、または新しい命令コードをディスパッチしないことによって、時間の増加を補償することができる。
【００１３】
次に、図２を参照すると、低電力乗算回路４０と高電力乗算回路４２の特定の実装が示してある。この例によれば、データ入力信号３１が、別々の２つのラッチ３６および３８に供給される。乗算機能が必要なとき、デコード機構３４が、ラッチ３６とラッチ３８のどちらかを介してデータ入力３１を適切な回路にラッチさせる適切な信号を提供する。どちらの回路を使用するかの制御は、適切な回路をイネーブルする働きをする保持信号３５および３７によって達成することができる。この例では、高速かつ高電力の乗算回路４２が必要とされる場合は、ラッチ３８がイネーブルされる。あるいは、低電力かつ低速の乗算回路４０でよい場合は、ラッチ３６がイネーブルされる。それぞれの回路がその動作を完了した後、結果として生じたデータが、データ出力信号３３としてラッチ４４からラッチアウトされる。加算器、比較器、デコーダ、ルックアップ・テーブルなどの追加の機能４６も、同様にして実装することができる。
【００１４】
次に、図３を参照すると、より低速の乗算回路に対応するようにパイプライン１２に対するクロック信号を変化させた場合に、高速乗算回路と低速乗算回路がどのような影響を受けるかを示すタイミング図が示してある。高速乗算回路が動作可能な場合、動作を駆動するために高速のクロック信号５２が使用されることになる。そのような場合、データ入力信号３１が、時間ｔ0に高速回路にラッチされる。次いで、高速乗算回路が、それぞれのクロック・サイクル６２の終りの時間ｔ1までに、その結果を迅速に計算し、データ出力信号３３を提供することが必要となる。あるいは、低速乗算回路を実装するために、低速クロック信号５０が使用され、データ入力信号３１が、高速乗算クロック信号５２と同じ時間ｔ0にシステムにラッチされる。しかし、この場合、低速の乗算回路は、計算を行ってデータ出力信号３３'を生成するために、時間ｔ2で終わるより長いクロック・サイクル６４を与えられる。したがって、パイプラインに対するロック信号を変化させることによって、低速機能は、パイプラインの動作をひどく妨害することなく、その機能を実装するためにより多くの時間が与えられる。
【００１５】
前述のように、高速クロック信号５２が維持されるが、より低速の機能には、その機能を完了するために追加のクロック・サイクルが与えられる、システムを実装することも可能である。図３に示したケースでは、低速乗算ユニットは、データ出力信号３３'を出力するために、２つのクロックサイクル（ｔ0〜ｔ2）を与えられる。そのようなストール機構を実装するどんな手段も本発明の一部として企図される。たとえば、前述のように、パイプラインは、次の命令をディスパッチする前に低速機能が完了したかどうかを検索するシステムを含むことができる。これは、たとえば、所与の機能の最悪の場合の動作時間を反映する遅延連鎖を用いて達成することができる。そのような場合、遅延連鎖は、信号が端まで伝播したときに「１」を出力し、それにより所与の機能の最悪の場合のタイミング・シナリオを提供することができる。あるいは、各低速機能に必要なクロック・サイクル数を、システムにハードワイヤし、それによって、それぞれの低速機能に、その処理を完了するために所定の長さの時間を与えることもできる。
【００１６】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００１７】
（１）処理手段と、
前記処理手段の制御のもとに所定の機能をそれぞれ別々に実行することができ、それぞれ異なる処理速度で動作し、それぞれ前記機能の実行に異なる量のエネルギーを必要とする、複数の回路とを含み、
前記処理手段が、前記機能を実行するために前記複数の回路のうちの１つだけを選択する、処理システム。
（２）パイプラインをさらに含み、前記パイプラインが、選択された回路の処理速度に依存する速度で動作する、上記（１）に記載の処理システム。
（３）パイプラインと、選択された回路が前記機能の実行を完了するまで前記パイプラインをストールする手段とをさらに含む、上記（１）に記載の処理システム。
（４）前記複数の回路のうちの１つの前記選択が、前記処理手段にロードされた命令コードによって決定される、上記（１）に記載の処理システム。
（５）前記複数の回路のうちの１つの前記選択が、処理システムに入力される外部信号によって決定される、上記（１）に記載の処理システム。
（６）ある機能を第１の速度で実行する第１の回路と、
前記機能を第２の速度で実行する第２の回路と、
前記機能を実行するために第１と第２の回路のどちらかを選択する制御システムと
を含むマイクロプロセッサ。
（７）プロセッサ命令を保持するパイプラインと、
前記プロセッサ命令の実行速度を制御する機構とを含み、前記プロセッサ命令の前記実行速度が、制御システムが第１と第２の回路のどちらを選択したかに依存する、上記（６）に記載のマイクロプロセッサ。
（８）前記プロセッサ命令の実行速度を制御する前記機構が、パイプラインのクロック速度を変更する機構を含む、上記（７）に記載のマイクロプロセッサ。
（９）前記プロセッサ命令の実行速度を制御する前記機構が、前記機能の実行が完了するまで前記パイプラインの動作をストールする機構を含む、上記（７）に記載のマイクロプロセッサ。
（１０）第１の回路が、通常の高速度で機能を実行するデフォルト回路であり、第２の回路が、より低速度で機能を実行しより少ない電力を必要とする低電力回路である、上記（６）に記載のマイクロプロセッサ。
（１１）制御システムが、所定の命令コードが検出されたとき、第２の回路を使用して機能を実行させる、上記（１０）に記載のマイクロプロセッサ。
（１２）制御システムが、外部信号が検出されたとき、第２の回路を使用して機能を実行させる、上記（１０）に記載のマイクロプロセッサ。
（１３）プロセッサ命令を保持しディスパッチするパイプライン手段と、
第１の量のエネルギーを使用して所定の機能を実行する第１の回路手段と、
第１の量よりも少ない第２の量のエネルギーを使用して所定の機能を実行する第２の回路手段と、
所定のプロセッサ命令がパイプライン手段からディスパッチされたとき、所定の機能を実行するために第１と第２の回路手段のどちらかを選択する制御手段とを含む処理システム。
（１４）パイプライン手段の処理速度を変更する手段をさらに含み、処理速度を変更する手段が、制御手段によって選択された回路に依存する、上記（１３）に記載の処理システム。
（１５）処理速度を変更する手段が、パイプライン手段を駆動するクロック速度を変更する手段を含む、上記（１４）に記載の処理システム。
（１６）処理速度を変更する手段が、所定の機能が完全に実行されるまでパイプライン手段をストールする手段を含む、上記（１４）に記載の処理システム。
【図面の簡単な説明】
【図１】本発明の好ましい実施形態による機能的に等価な回路を備えたプロセッサを示す図である。
【図２】本発明の好ましい実施形態による機能的に等価な２つの回路の実装の例を示す図である。
【図３】パイプラインに対するクロック制御を変化させることによって好ましい実施形態をどのように実装できるかを詳細に示すタイミング図である。
【符号の説明】
１０  プロセッサ
１２  パイプライン
１４  クロック制御機構
１６  パイプライン・ストール機構
１８  制御機構
２４  外部信号
２６  高電力回路
２８  低電力回路
３０  信号経路
３１  データ入力信号
３２  信号経路
３３  データ出力信号
３４  デコード機構
３５  保持信号
３６  ラッチ
３７  保持信号
３８  ラッチ
４０  低電力乗算回路
４２  高電力乗算回路
４４  ラッチ
５０  低速クロック信号
５２  高速クロック信号
６２  クロックサイクル
６４  クロックサイクル
【図１】
0004129345.tif 000002
【図２】
0004129345.tif 000003
【図３】
0004129345.tif 000004