(57)【特許請求の範囲】
【請求項１】
命令がノン・オペレーションであった場合にノン・オペレーション専用ビット以外の命令データを持ち、クロックの前縁で動作する第１の命令メモリと、
前記ノン・オペレーション専用ビットのみを格納し、前記クロックの半サイクル前の後縁で動作する第２の命令メモリと、
前記第２の命令メモリから前記ノン・オペレーション専用ビットが読み出された時に前記第１の命令メモリのクロックを停止させる第１のクロック制御回路と、
複数のパイプラインにおける初段のパイプラインのフェッチステージに配置され、第２の命令メモリから読み出された前記ノン・オペレーション専用ビットのタイミングを調整してノン・オペレーション信号を出力する第１のフリップフロップと、
前記複数のパイプラインにおける各パイプライン間に配置され、前記ノン・オペレーション信号を前記各パイプラインに伝搬させる複数の第２のフリップフロップと、
前記複数のパイプラインにおける各パイプラインに配置され、前記各パイプラインに前記ノン・オペレーションが伝搬する際には、前記各パイプラインのステージにおいて、前記ノン・オペレーション信号に基づき、前記各パイプラインのステージを動作させるためのクロックを停止させ、且つ、前記各パイプラインのステージにおける入力データも保持させる複数の第２のクロック制御回路と、
を有することを特徴とするマイクロプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高速化手法の１つであるパイプライン構成を採用したRISC方式のマイクロプロセッサ（以下「MPU」という。）、特にこのMPUにおける消費電力低減化技術に関するものである。
【背景技術】
【０００２】
MPUは、コンピュータ内で基本的な演算処理を行う半導体チップである。このMPUの処理では、先ず、メモリ（記憶装置）に記憶されたプログラムを読み込み、次に、プログラムの指示に従って入力装置やメモリ等からデータを受け取り、データをプログラム通りに演算等をした上で、このデータをメモリやディスプレイ（表示装置）等の出力装置等へ送る、という流れになっている。
【０００３】
このようなMPUの基本設計には、大きく分けるとCISC方式とRISC方式の２つがある。CISC方式では、MPUが多数の命令を処理できるようにして命令セットを高級言語に近づけ、複雑な処理を実行できるようにすることで、処理能力の向上を図っている。これに対してRISC方式では、１つ１つの命令を単純にすることで複数の命令を効率良く同時に実行できるようにして処理能力の向上を図っている。しかし、両方式は互いの長所を取り込む形で発展を続けているため、両者の区別が不明確になりつつある。
【０００４】
一方、MPUの高速化手法の１つにパイプライン処理がある。MPU内での１つの命令の処理は、命令の読み込み、解釈、実行、結果の書き込み等のように、複数の段階（工程（ステージ））からなるサイクルで構成され、通常は、前の命令のサイクルが完全に終わらないと、次の命令の処理を始めることができない。そこで高速化を図るために、各段階の処理機構を独立して動作させることにより、流れ作業的に、前の命令のサイクルが終わる前に、次の命令を処理し始めるのがパイプライン処理である。このようなパイプライン機構（構成）を備えたMPUでは、前の命令の実行を行っている時に次の命令の解釈を行うといった処理が可能になる。
【０００５】
図２は、従来のRISC方式のMPUにおけるパイプライン構成例を示す概略図である。
【０００６】
この概略図では、フェッチ（以下「FE」という。）／デコード（以下「DC」という。）／実行（以下「EX」という。）／メモリ（以下「MEM」という。）／ライトバック（以下「WB」という。）の5つのステージを持つ5段パイプラインの例が示されている。
【０００７】
MPUは、アドレス生成レジスタ１、命令メモリ２、命令デコーダ３、レジスタ群４、演算ユニット（ALU)５、及びデータメモリ６を有している。更に、アドレス生成レジスタ１と命令メモリ２との間にプログラムカウンタ（以下「PC」という。)７、命令メモリ２と命令デコーダ３との間にFE/DCステージ間のパイプラインレジスタ（以下「FE/DCパイプラインレジスタ」という。）８、命令デコーダ３及びレジスタ群４と演算ユニット５との間にDC/EXステージ間のパイプラインレジスタ（以下「DC/EXパイプラインレジスタ」という。）９、演算ユニット５とデータメモリ６との間にEX/MEMステージ間のパイプラインレジスタ（以下「EX/MEMパイプラインレジスタ」という。）１０、データメモリ６とレジスタ群４との間にMEM/WB間のパイプラインレジスタ（以下「MEM/WBパイプラインレジスタ」という。）１１が、それぞれ設けられている。PC７、命令メモリ２、及び各パイプラインレジスタ８〜１１は、クロックCKに同期して動作する。
【０００８】
このMPUのパイプライン処理では、次の（１）〜（５）のステージが順に実行される。
【０００９】
（１）  FEステージ
命令メモリ２から命令（プログラムデータ）を取り出す。
【００１０】
（２）  DCステージ
フェッチされた命令を命令デコーダ３でデコードする。同時に、レジスタ群４からレジスタオペランドをリード（フェッチ）する。
【００１１】
（３）  EXステージ
デコード結果に基づいて演算ユニット５で演算を行い、若しくはレジスタ群４の値のバイパスを行う。つまり、このEXステージでは、デコード結果とフェッチしたレジスタ群４の値を基に、演算ユニット５で演算を行う（命令を実行する）。例えば、ロード／ストア命令の場合は、実効アドレスの計算を行う。分岐命令の場合は、分岐先アドレスを計算する。
【００１２】
（４）  MEMステージ（これはオペランドフェッチ(MEM)ステージともいう）
データメモリ６へのリード（読み出し）／ライト（書き込み）を行ったり（即ち、EXステージで計算したアドレスに対応するデータメモリ６の値をリードしたり、そのデータメモリ６へのライトを行ったり）、或いは、演算結果に対するレジスタ群４へのバイパスを行う。
【００１３】
（５）  WBステージ
EXステージで計算した結果、又はMEMステージでフェッチしたオペランドをレジスタ群４に格納する（即ち、レジスタ群４への書き戻しを行う）。
【００１４】
これらの各ステージ（１）〜（５）の間には、FE/DCパイプラインレジスタ８、DC/EXパイプラインレジスタ９、EX/MEMパイプラインレジスタ１０、MEM/WBパイプラインレジスタ１１があり、各ステージ間のデータの受け渡しを行う。
【００１５】
ところが、このようなパイプライン構成では、オペレーションが行われないノン・オペレーション(no-operation、以下「nop」という。）時にも、nop命令に割り当てられた命令コードが命令メモリ２からフェッチされ、その後nop命令のパイプライン動作が行われる。即ち、オペレーションが行われないnop時にも関わらずパイプラインレジスタ８〜１１やレジスタ群４、演算ユニット５も動作するので、余分な電力を消費するという問題があった。
【００１６】
これを解消するための従来のMPUの技術として、例えば、次のような文献に記載されるものがある。
【００１７】
【特許文献１】特開平８−１０１８２０号公報
【００１８】
この特許文献１に記載されたMPUの技術では、データパス部においてオペレーションが行われない場合には、データパス部の入力段に設けられたラッチ回路により入力データを保持し、データパス内部回路の動作を停止させる工夫をしている。
【発明の開示】
【発明が解決しようとする課題】
【００１９】
しかしながら、従来の特許文献１に記載されたMPUの技術では、データパス内部回路の動作停止を実現させるため、データパス部の入力段にラッチ回路等を設けなければならないので、回路規模が大きくなる上に、回路全体で見ると、パイプラインレジスタ８〜１１等の動作している回路部分は未だ多く、消費電力低減の効果が低いといった問題があり、これらを解決することが困難であった。
【課題を解決するための手段】
【００２２】
本発明のMPUは、命令がnopであった場合にnop専用ビット以外の命令データを持ち、クロックの前縁で動作する第１の命令メモリと、前記nop専用ビットのみを格納し、前記クロックの半サイクル前の後縁で動作する第２の命令メモリと、前記第２の命令メモリから前記nop専用ビットが読み出された時に前記第１の命令メモリのクロックを停止させる第１のクロック制御回路と、複数のパイプラインにおける初段のパイプラインのFEステージに配置され、第２の命令メモリから読み出された前記nop専用ビットのタイミングを調整してnop信号を出力する第１のF/Fと、前記複数のパイプラインにおける各パイプライン間に配置され、前記nop信号を前記各パイプラインに伝搬させる複数の第２のF/Fと、前記複数のパイプラインにおける各パイプラインに配置され、前記各パイプラインに前記nopが伝搬する際には、前記各パイプラインのステージにおいて、前記nop信号に基づき、前記各パイプラインのステージを動作させるためのクロックを停止させ、且つ、前記各パイプラインのステージにおける入力データも保持させる複数の第２のクロック制御回路とを有している。
【発明の効果】
【００２７】
本発明のMPUによれば、命令がnopであった場合に例えば論理‘Ｈ’を示す１ビットのnop専用ビット以外の命令データを持ち、例えばクロックの立ち上がりエッジで動作する第１の命令メモリと、nop専用ビットのみを格納し、例えばクロックの立ち下がりエッジで動作する第２の命令メモリと、この第２の命令メモリから読み出された信号に基づき、例えば論理‘Ｈ’であった場合に第１の命令メモリのクロックを停止させるクロック制御回路と、第２の命令メモリから読み出されたnop専用ビットのタイミングを調整するために、FEステージに配置されたF/Fを備えている。
【００２８】
そして、第２の命令メモリより例えばクロックの立ち下がりエッジでnop専用ビットをリードする第１の処理と、リードされた信号が例えば論理‘Ｈ’であった場合に、第１の命令メモリのクロックを停止させる第２の処理と、前記読み出された信号をFEステージに配置されたF/Fによりタイミングを調整し、nop信号として使用する第3の処理と、以降は、各パイプラインにnopが伝搬する際、パイプラインレジスタやメモリ等のクロックを停止させ、且つ、各パイプラインステージにおける入力データも保持させるようにしている。そのため、nop専用ビットを他の命令データよりも半クロックサイクル前にリードし、nopであった場合には、他の命令データのフェッチを停止させることによって、第１の命令メモリからフェッチされた命令データから、nopを検出するためのnop検出回路が不要となる。この結果、nop検出回路で消費される電力が削減でき、且つ、nop検出回路における遅延時間もなくなるため、より高速動作が可能となる。更に、第１の命令メモリにおける消費電力も低減できる。
【発明を実施するための最良の形態】
【００３１】
MPUは、命令メモリよりフェッチされた命令データからnopを検出し、１ビットのnop信号を出力するnop検出回路と、nop信号を各パイプラインに伝搬させるために、各パイプライン間に配置されたF/Fと、各パイプラインステージにおいて、nop信号に基づき、クロックを停止させるクロック制御回路を備えている。
【００３２】
nop検出回路においてnopが検出されると、論理‘Ｈ’のnop信号を出力する第１の処理と、各パイプライン間に配置されたF/Fによって、検出されたnop信号を各パイプラインに伝搬させる第２の処理と、各パイプラインにnopが伝搬する際には、各パイプラインに配置されているクロック制御回路により、クロックを停止させる第3の処理により、各パイプラインにnopが伝搬する際、パイプラインレジスタやメモリ等のクロックを停止させ、且つ、各パイプラインステージにおける入力データも保持させる。
【実施例１】
【００３３】
（実施例１の構成）
図１は、本発明の実施例１に係るRISC方式のMPUにおけるパイプライン構成例を示す概略図である。
【００３４】
この概略図では、従来の図２と同様に、FE/DC/EX/MEM/WBの5つのステージを持つ5段パイプラインの例が示されている。
【００３５】
本実施例１のMPUでは、従来の図２と同様に、アドレス生成レジスタ２１、命令メモリ２２、命令デコーダ２３、レジスタ群２４、演算ユニット（ALU)２５、及びデータメモリ２６を有し、更に、アドレス生成レジスタ２１と命令メモリ２２との間にPC２７、命令メモリ２２とデコード２３との間にFE/DCパイプラインレジスタ２８、命令デコーダ２３及びレジスタ群２４と演算ユニット２５との間にDC/EXパイプラインレジスタ２９、演算ユニット２５とデータメモリ２６との間にEX/MEMパイプラインレジスタ３０、データメモリ２６とレジスタ群２４との間にMEM/WBパイプラインレジスタ３１が、それぞれ設けられている。
【００３６】
本実施例１の特徴は、従来のMPUの構成に加え、命令メモリ２２からのフェッチデータ（命令データ）Ｓ２２からnop命令を検出するnop検出回路４１と、それぞれのパイプラインのステージに設置されているクロック制御回路４２〜４５と、nop検出回路４１から出力される、命令がnop命令であることを示す１ビットのnop信号Ｓ４１を各パイプラインに伝搬させるため、各パイプラインのステージ間に配置されたF/F４６〜４８を備えている。
【００３７】
各F/F４６〜４８からは、１ビットのnop信号Ｓ４６〜Ｓ４８が出力される。命令メモリ２２、及びクロック制御回路４２〜４５は、クロックCKに同期して動作する。各クロック制御回路４２〜４５は、各１ビットのnop信号Ｓ４１，Ｓ４６〜Ｓ４７がイネイブル信号（活性化信号）として与えられ、クロックCKに基づきゲーテッドクロックＳ４２〜Ｓ４５を生成する回路である。各ゲーテッドクロックＳ４２〜Ｓ４５に同期して各パイプラインレジスタ２８〜３１が動作すると共に、ゲーテッドクロックＳ４２に基づきレジスタ群２４が動作し、ゲーテッドクロックＳ４４に基づきデータメモリ２６が動作する構成になっている。このような構成が本実施例１の特徴であり、従来のMPUと異なる点である。
【００３８】
図３は、図１中のnop検出回路４１の構成例を示す回路図である。
このnop検出回路４１は、命令データＳ２２のデコード結果により、nop命令を検出し、nop信号Ｓ４１の‘H’を出力する回路であり、nop命令のコードにもよるが、例えば、全ビットゼロの場合、否定論理和ゲート（以下「NORゲート」という。）４１ａにより構成される。
【００３９】
図４（A)、（Ｂ）は、図１中のクロック制御回路４２の構成例を示す図であり、同図（A)は回路図、及び同図（Ｂ）はその入出力のタイミングチャートである。
【００４０】
図１中の各クロック制御回路４２〜４５は、同一の回路構成である。図４（A)に示すように、クロック制御回路４２は、例えば、クロックCKの反転信号に基づき、イネイブル信号としてnop信号Ｓ４１を取り込むD型ラッチ回路４２aと、このD型ラッチ回路４２aの出力信号Ｓ４２aとクロックCKとの論理積を求めてゲーテッドクロックＳ４２を出力する論理積ゲート（以下「ANDゲート」という。）４２bとにより構成されている。このクロック制御回路４２は、イネイブル信号であるnop信号Ｓ４１がいかなるタイミングで入力されても、ゲーテッドクロックＳ４２にハザードが乗らないようにするために、D型ラッチ回路４２aに入力される、イネイブル信号であるnop信号Ｓ４１に応じて、ANDゲート４２bによりクロックCKをゲートし、このANDゲート４２bからゲーテッドクロックＳ４２を出力する機能を有している。
【００４１】
図４（Ｂ）に示すように、D型ラッチ回路４２aは、クロックCKの立ち下がりエッジによりnop信号Ｓ４１の‘Ｈ’を取り込み、出力信号Ｓ４２ａをANDゲート４２bへ出力する。ANDゲート４２bは、出力信号Ｓ４２aが‘Ｈ’の時に開いてクロックCKを通過させ、ゲーテッドクロックＳ４２を出力する。
【００４２】
このゲーテッドクロックＳ４２は、FE/DCパイプラインレジスタ２８のクロック入力端子とDCステージにおけるレジスタ群２４のクロック入力端子とに入力される。同様に、以降のEX,MEM,WBステージにおいても、クロック制御回路４３，４４，４５へは、前段から伝搬してきたnop信号Ｓ４６，Ｓ４７，Ｓ４８が入力され、これらのクロック制御回路４３，４４，４５の出力信号Ｓ４３，Ｓ４４，Ｓ４５が次段のパイプラインレジスタ２９，３０，３１やデータメモリ２６へ入力される構成になっている。
【００４３】
（実施例１の動作）
図１のMPUの全体的な動作を説明すると、先ず、命令メモリ２２から読み出された命令データＳ２２から、nop検出回路４１によりnopが検出された場合、このnop検出回路４１から出力されるnop信号Ｓ４１がイネイブル（この場合は論理‘H’）となる。クロック制御回路４２は、nop信号Ｓ４１が‘H’の期間では、出力するゲーテッドクロックＳ４２を停止する。一方、nop信号Ｓ４１は、FE/DCステージ間に設置されたF/F４６にも入力されており、次段のDCステージヘ伝搬し、同様の動作を行う。
【００４４】
図５は、図１のMPUの具体的な動作例を示すタイミングチャートである。
このタイミングチャートでは、例えば、アドレス２番地（A2)においてnopが出力され、それ以外はnopではない場合のタイミングが示されている。
【００４５】
PC２７で生成されたアドレス２番地(A2)が命令メモリ２２に与えられると、次のクロックCKの立ち上がりエッジで、命令メモリ２２からnopに相当する命令データＳ２２（D2)が出力され、nop検出回路４１からnop信号Ｓ４１が出力される。これを受けて各FE,DC,EX,MEM,WBステージのクロック制御回路４２〜４５からゲーテッドクロックＳ４２〜Ｓ４５がそれぞれ出力され、パイプラインレジスタ２８〜３１、レジスタ群２４、及びデータメモリ２６へ送られる。このようなnop信号Ｓ４１が生成されるタイミングと、各FE,DC,EX,MEM,WBステージのnop信号Ｓ４６〜Ｓ４８と、次段パイプラインレジスタ２８〜３１等へのゲーテッドクロックＳ４２〜Ｓ４５の流れが図５に示されている。
【００４６】
このような信号の流れにより、本実施例１におけるMPUの回路構成によって、各FE,DC,EX,MEM,WBステージにおいてnopが伝搬するのに合わせて、次段パイプラインレジスタ２８〜３１等へのゲーテッドクロックＳ４２〜Ｓ４５を停止させることが出来る。
【００４７】
（実施例１の効果）
本実施例１によれば、nopの伝搬に合わせて、動作不要なパイプラインレジスタ２８〜３１等のゲーテッドクロックＳ４２〜Ｓ４５を停止させることによって、nop時に動作不要なパイプラインレジスタ２８〜３１、レジスタ群２４、或いはデータメモリ２６等の消費電力を低減させることが出来る。更に、パイプラインレジスタ２８〜３１のゲーテッドクロックＳ４２〜Ｓ４５を停止させることにより、各FE,DC,EX,MEM,WBステージにおける入力データが保持され、各FE,DC,EX,MEM,WBステージ内の組み合わせ回路の動作も停止するため、更に大きな消費電力低減が期待出来る。
【実施例２】
【００４８】
（実施例２の構成）
図６は、本発明の実施例２に係るRISC方式のMPUにおけるパイプライン構成例を示す概略図であり、実施例１を示す図１中の要素と共通の要素には共通の符号が付されている。
【００４９】
本実施例２のMPUでは、実施例１のnop検出回路４１に代えて、命令メモリ２２から出力される命令データＳ２２の中に、nop命令である場合に論理‘H’を示すnop専用ビットＳ２２ａを設け、このnop専用ビットＳ２２ａを直接クロック制御回路４２、及びFE/DCステージ間のF/F４６に入力させる構成となっている。その他の構成は、実施例１と同様である。
【００５０】
（実施例２の動作）
命令メモリ２２からフェッチされた命令データＳ２２がnopの場合、nop専用ビットＳ２２ａが論理‘Ｈ’になる。従って、FEステージでは、命令メモリ２２から読み出された１ビットのnop専用ビットＳ２２ａをクロック制御回路４２へそのまま入力することによって、FE/DCパイプラインレジスタ２８や、レジスタ群２４のゲーテッドクロックＳ４２を停止させることが出来る。同時に、nop専用ビットＳ２２ａをFE/DCステージ間のF/F４６へ入力させることにより、以降のEX,MEM,WBステージでも同様のゲーテッドクロック制御が可能である。
【００５１】
（実施例２の効果）
クロック周波数が高い場合、実施例１における命令メモリ２２から、nop検出回路４１、クロック制御回路４２、又はFE/DCステージ間のF/F４６に至るパスの遅延時間が問題になる可能性がある。
【００５２】
このような場合、実施例２に見られるように、命令データＳ２２の中にnop専用ビットＳ２２ａを設け、このビットＳ２２ａを直接クロック制御信号として使用することによって、実施例１のようなnop検出回路４１における遅延時間が無くなり、より高速な周波数に対しても対応することが可能になる。更に、実施例１のようなnop検出回路４１で消費される電力も削減することが出来る。
【実施例３】
【００５３】
（実施例３の構成）
図７は、本発明の実施例３に係るRISC方式のMPUにおけるパイプライン構成例を示す概略図であり、実施例２を示す図６中の要素と共通の要素には共通の符号が付されている。
【００５４】
本実施例３のMPUでは、実施例２の１つの命令メモリ２２、命令データＳ２２、及びnop専用ビットＳ２２aに代えて、クロックCKを反転するインバータ５１と、ゲーテッドクロックＳ５４に基づき、PC２７からのアドレスで指定される命令データＳ５２を出力する命令メモリ５２と、インバータ５１から出力される反転クロックに基づき、PC２７からのアドレスで指定されるnop専用ビットＳ５３を出力する命令メモリ５３と、クロックCKとnop専用ビットＳ５３に基づいてゲーテッドクロックＳ５４を出力するクロック制御回路５４と、nop専用ビットＳ５３を入力してnop信号Ｓ５５をクロック制御回路４２及びF/F４６へ出力するF/F５５とを設けている。その他の構成は、実施例２と同様である。
【００５５】
即ち、本実施例３のMPUでは、実施例２の構成に対し、２つの命令メモリ５２，５３を備えている。一方の命令メモリ５２には、nop専用ビットを除く命令データＳ５２が格納されている。他方の命令メモリ５３は、nop専用ビットＳ５３のみが格納されている１ビットのメモリである。これらの命令メモリ５２，５３には、PC２７から、同一のプログラムアドレスが同一タイミングで与えられている。命令メモリ５３の出力は、前述の通りnop専用ビットＳ５３を示すが、これがクロック制御回路５４に入力されており、その状態によってクロックCKを停止させる。クロック制御回路５４の出力であるゲーテッドクロックＳ５４は、命令メモリ５２のクロックとして用いられる。一方、命令メモリ５３から出力される１ビットのnop専用ビットＳ５３は、FEステージに配置されているF/F５５に入力され、この出力である1サイクル遅延させた信号が、nop信号Ｓ５５としてクロック制御回路４２と、FE/DCステージ間のF/F４６に入力されている。
【００５６】
（実施例３の動作）
図８は、図７のMPUの動作を示すタイミングチャートである。
【００５７】
PC２７のアドレス２番地（A2）がnop命令を示すものとする。命令メモリ５２と命令メモリ５３には、PC２７が出力する同一のアドレスが入力されているが、nop専用ビットＳ５３が格納されている命令メモリ５３には、クロックCKがインバータ５１で反転されて入力されているため、アドレス２番地（A2）入力期間のクロックの立ち下がりエッジで、nop専用ビットＳ５３を出力する。
【００５８】
命令メモリ５３から出力されるnop専用ビットＳ５３は、命令メモリ５２のクロックを制御するクロック制御回路５４に入力されているため、命令メモリ５３から出力される命令データＳ５３がnopを示す論理‘Ｈ’出力の場合、次サイクルのゲーテッドクロックＳ５４を停止する。命令メモリ５３から出力される命令データＳ５３がnopでないことを示す論理‘Ｌ’の場合には、ゲーテッドクロックＳ５４は入力される。これは、nop専用ビットＳ５３のみを半クロックサイクル前に出力し、nopを示す場合には、次サイクルのゲーテッドクロックＳ５４を停止、即ち、nop命令時には、nop専用ビットＳ５３以外の命令データＳ５２のフェッチを行わないことを示している。
【００５９】
一方、命令メモリ５３から出力されるnop専用ビットＳ５３は、FEステージに配置されているF/F５５に入力され、1クロックサイクル遅延させてFE/DCステージ間のF/F４６へ入力されており、この出力は更に1サイクル遅延して、DCステージのnop信号Ｓ４６として使用される。以降の動作は、実施例２と同様である。
【００６０】
（実施例３の効果）
本実施例３によれば、nop専用ビットＳ５３のみを格納する命令メモリ５３を用意し、これを他の命令データＳ５２の半クロックサイクル前に読み出し、その命令データＳ５２がnopを示している場合に、不要となる他の命令データのフェッチを停止することによって、nop時における命令メモリ５２で消費される電力を削減することが出来、且つ、実施例１、２と同等のクロック制御手段をとることが可能となるため、より大きな低消費電力効果が得られる。
【実施例４】
【００６１】
（実施例４の構成）
図９は、本発明の実施例４に係るRISC方式のMPUにおけるパイプライン構成例を示す概略図であり、実施例３を示す図７中の要素と共通の要素には共通の符号が付されている。
【００６２】
本実施例４のMPUでは、実施例３の構成に加え、制御信号生成回路６１、論理和ゲート（以下「ORゲート」という。）６２，６５，６７、及びF/F６３，６４，６６が設けられ、その他の構成は実施例３と同様である。
【００６３】
即ち、本実施例４では、実施例３の構成に加え、DCステージには、制御信号生成回路６１が設けられ、命令デコーダ２３のデコード結果より、各ステージ以降のクロックを制御するための複数のクロクイネイブル信号Ｓ６１a,Ｓ６１b,Ｓ６１cが出力されている。Ｓ６１aはDCステージ以降を、Ｓ６１bはEXステージ以降を、Ｓ６１cはMEMステージ以降のクロックを制御するためのクロックイネイブル信号である。
【００６４】
DCステージ以降のクロックを制御するクロックイネイブル信号Ｓ６１aは、DCステージにおいて、FEステージのF/F４６から伝搬してきたnop信号Ｓ４６とORゲート６２で論理和が取られ、クロック制御回路４３に入力されている他、EXステージ以降のnop信号Ｓ４７として、F/F４７により伝搬される。EXステージ以降のクロックを制御するクロックイネイブル信号Ｓ６１bは、DC/EXステージ間に配置されたF/F６４に入力され、この出力は、EXステージにおいて、DCステージと同様にORゲート６５によってnop信号Ｓ４７との論理和が取られ、クロック制御回路４４に入力されている他、MEMステージに伝搬される。MEMステージ以降のクロックを制御するクロックイネイブル信号Ｓ６１cは、DC/EXステージに配置されたF/F６３と、EX/MEMステージ間に配置されたF/F６６によりMEMステージに伝搬し、同様の処理が行われる構成になっている。
【００６５】
図１０は、図９中の制御信号生成回路６１の構成例を示す回路図である。
この制御信号生成回路６１は、例えば、命令デコーダ２３のデコード結果により、パイプラインの途中で処理が終了する命令（例えば、分岐命令等）を検出し、この検出結果に基づきセレクタ６１aを切り替えて‘Ｈ’のクロックイネーブル信号Ｓ６１ｂ又はＳ６１ｃを出力する回路である。
【００６６】
（実施例４の動作）
DCステージに配置されている命令デコーダ２３により、例えば、DCステージで実行される分岐命令が検出された場合を考える。分岐命令が実行されるのはDCステージであり、その後のEX,MEM,WBステージはなにも行わずに素通りするため、nopとして扱っても何も問題にならない。そこで、分岐命令をEXステージ以降のパイプラインステージではnopとして扱うようにするため、制御信号生成回路６１は、クロックイネイブル信号Ｓ６１aを論理‘Ｈ’とする。
【００６７】
一方、クロックイネイブル信号Ｓ６１aと、FEステージのF/F４６より伝搬されたnop信号Ｓ４６は、分岐命令であるので論理‘Ｌ’となっているが、DCステージで生成されたクロックイネイブル信号Ｓ６１aとORゲート６２により論理和が取られるため、クロック制御回路４３への入力は論理‘Ｈ’となる。これにより、DC/EXステージ間のパイプラインレジスタ２９のクロックが停止されると共に、論理和の出力信号が、次のEXステージのnop信号として、F/F４７によりEXステージに伝搬する。EXステージ以降は、このnop信号により同様にクロックが制御される。
【００６８】
（実施例４の効果）
本実施例４によれば、DCステージの命令デコーダ２３により検出された命令によって、パイプラインの途中で処理が終了する場合（例えば、命令実行の最後にレジスタ群２４への書き込みを行わない分岐命令、ストア命令、比較命令等の場合）、制御信号生成回路６１等により、以降のパイプライン動作をnopと同等に変換する（即ち、実施例１におけるnopの場合と同様に、パイプラインレジスタ２９，３０，３１をゲーティングする）ことによって、nop以外の多くの命令（例えば、パイプラインの途中で処理が終了する分岐命令、ストア命令、比較命令等）に適用範囲を広げることが出来、より高い低消費電力効果が期待出来る。
【実施例５】
【００６９】
（実施例５の構成）
図１１は、本発明の実施例５に係るRISC方式のMPUにおけるパイプライン構成例を示す概略図であり、実施例４を示す図９中の要素と共通の要素には共通の符号が付されている。
【００７０】
本実施例５のMPUでは、実施例４の制御信号生成回路６１及びF/F６４に代えて、制御信号生成回路７１、F/F群７２、クロック制御回路７３，７４、及びEX/MEMパイプラインレジスタ７５，７５が設けられている。
【００７１】
即ち、本実施例５では、実施例４の構成に加え、クロックイネイブル信号生成用の制御信号生成回路７１からは、クロックイネーブル信号Ｓ７１a,Ｓ７１cの他に、複数のクロック停止制御信号（例えば、クロックイネイブル信号）Ｓ７１bが出力され、DC/EX間に配置されているF/F群７２に入力されている。F/F群７２からは、EXステージで使用されるクロック制御回路７３，７４へ信号が出力されている。クロック制御回路７３，７４は、EX/MEMプラインレジスタ７５，７６へのクロックを供給している。以降の構成は、実施例４と同様である。
【００７２】
本実施例５において、F/F群７２、クロック制御回路７３，７４、及びEX/MEMパイプラインレジスタ７５，７６をそれぞれ複数個ずつ設ける理由は、次の通りである。EX/MEMパイプラインレジスタ３０、及びMEM/WBパイプラインレジスタ３１内には、それぞれ複数個のレジスタが存在し、これらのレジスタは命令によって使用、不使用が決まる。従って、命令によってクロック制御を行うレジスタが決まるため、各レジスタ毎にクロック制御回路７３，７４が必要になるからである。
【００７３】
（実施例５の動作）
本実施例５の特徴的な動作を説明すると、DCステージにある制御信号生成回路７１は、命令デコーダ２３が解読した命令を基に、EXパイプラインレジスタ７５，７６を停止させるための制御信号であるクロックイネーブル信号Ｓ７１bを出力する。F/F群７２は、そのクロックイネーブル信号Ｓ７１bを受け、実行している命令とタイミングを合わせるために1サイクル遅延させる。もし、遅延させないと、今DCステージで解読されている命令が、１つ先の命令が使用しようとしているEX/MEMパイプラインレジスタ３０のゲーティングを行ってしまうから、これを避けるためである。
【００７４】
EXステージにあるクロック制御回路７３，７４は、F/F群７２からの信号を受けて、EX/MEMパイプラインレジスタ７５，７６へのクロックを停止する。
【００７５】
（実施例５の効果）
本実施例５によれば、命令がnopではないときに、各パイプラインレジスタ２８〜３１で使わない一部のレジスタ（例えば、EX/MEMパイプラインレジスタ７５，７６）のクロックを停止させ、データを変化させないようにしている。
【００７６】
例えば、EX/MEMステージには、address、WBV、BPRの３つのパイプラインレジスタがあるとする。パイプラインレジスタaddressは、データメモリ２６へのアドレス出力となっている。そのため、演算命令の場合、パイプラインレジスタaddressは使用しない。そこで、演算命令の場合に、パイプラインレジスタaddressのクロックを停止させ、データを変化させないことによって、パイプラインレジスタaddressの出力をトグルさせないようにしている。
【００７７】
このような構成により、各パイプラインレジスタ２８〜３１の消費電力を低減することが出来、より幅広い部分で消費電力を低減させる効果を得ることができる。
【００７８】
（変形例）
本発明は、図示の実施例１〜５に限定されず、種々の利用形態や変形が可能である。この利用形態や変形例としては、例えば、次の（ａ）〜（ｄ）のようなものがある。
【００７９】
（ａ）  実施例では、５段パイプラインの場合の例を示しているが、パイプライン段数に拘わらず本発明を適用することが可能である。
【００８０】
（ｂ）  本発明は、デジタル信号処理装置等、パイプラインシステムを持つ全ての回路に広く適用可能である。
【００８１】
（ｃ）  実施例では、nopを示す制御信号として論理‘Ｈ’を用いたが、これに限定されるものではない。
【００８２】
（ｄ）  実施例３では、命令メモリ５２のクロック入力端子に入力されるゲーテッドクロックＳ５４を制御することによる消費電力低減方法を示しているが、例えば、命令メモリ５２がイネイブル信号入力端子等を備える場合、このイネイブル信号入力端子等にゲーテッドクロックＳ５４を入力することにより、nopをフェッチすることがなくなり、消費電力の低減を図ることも可能である。
【図面の簡単な説明】
【００８３】
【図１】発明の実施例１に係るRISC方式のMPUにおけるパイプライン構成例を示す概略図である。
【図２】従来のRISC方式のMPUにおけるパイプライン構成例を示す概略図である。
【図３】図１中のnop検出回路４１の構成例を示す回路図である。
【図４】図１中のクロック制御回路４２の構成例を示す図である。
【図５】図１のMPUの具体的な動作例を示すタイミングチャートである。
【図６】本発明の実施例２に係るRISC方式のMPUにおけるパイプライン構成例を示す概略図である。
【図７】本発明の実施例３に係るRISC方式のMPUにおけるパイプライン構成例を示す概略図である。
【図８】図７のMPUの動作を示すタイミングチャートである。
【図９】本発明の実施例４に係るRISC方式のMPUにおけるパイプライン構成例を示す概略図である。
【図１０】図９中の制御信号生成回路６１の構成例を示す回路図である。
【図１１】本発明の実施例５に係るRISC方式のMPUにおけるパイプライン構成例を示す概略図である。
【符号の説明】
【００８４】
２２，５２，５３      命令メモリ
２３      命令デコーダ
２４      レジスタ群
２５      演算ユニット
２６      データメモリ
２８〜３１，７５，７６      パイプラインレジスタ
４１      nop検出回路
４２〜４５，５４，７３，７４      クロック制御回路
４６〜４８，５５，６３，６４，６６      F/F
６１，７１      制御信号生成回路
６２，６５，６７      ORゲート
７２      F/F群
【図１】
0004747026.tif 000002
【図２】
0004747026.tif 000003
【図３】
0004747026.tif 000004
【図４】
0004747026.tif 000005
【図５】
0004747026.tif 000006
【図６】
0004747026.tif 000007
【図７】
0004747026.tif 000008
【図８】
0004747026.tif 000009
【図９】
0004747026.tif 000010
【図１０】
0004747026.tif 000011
【図１１】
0004747026.tif 000012