(57)【特許請求の範囲】
【請求項１】
ｎ個（ｎ≧２）の命令を同時に読み出してデコードし、ｎ個の演算回路を用いてパイプラインステージ毎に演算処理を実行するマイクロプロセッサにおいて、
前記各演算回路を操作する命令を先行検出する検出手段と、
該検出手段により検出された命令に対応する演算回路を、次の演算ステージの開始に先行して活性化する手段を有することを特徴とするマイクロプロセッサ。
【請求項２】
請求項１のマイクロプロセッサにおいて、
前記活性化された演算回路が演算終了した後に、該演算回路を不活性化する手段を有することを特徴とするマイクロプロセッサ。
【請求項３】
請求項１のマイクロプロセッサにおいて、
前記ｎ個（ｎ≧２）の命令を同時に読み出してデコードした後に、前記検出手段により検出された命令に対応した演算回路を演算ステージの開始に先行して活性化する手段を有することを特徴とするマイクロプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高速アクセスや多ビット出力等を要求される内蔵キャッシュメモリ等の低消費電力化が望まれる機能回路ブロックを有する、マイクロプロセッサ等の半導体集積回路に関するものである。
【背景技術】
【０００２】
以下、従来の技術をマイクロプロセッサを例に取り説明する。
【０００３】
近年の高速性能マイクロプロセッサ（以下ＭＰＵと記す）は、内部の命令実行速度と外部主メモリからの命令およびオペランドの内部への転送速度の不一致によって生じる問題を解決するために、ＭＰＵ内部にキャッシュメモリを内蔵することや並列度を高めて処理性能の向上を図るため複数の演算器を内蔵させることが一般的になってきており、その結果、消費電力の増大が深刻な問題になってきている。
【０００４】
キャッシュメモリを内蔵する主目的は、ＭＰＵの実行速度を見合ったスピードで命令やデータを高速にフェッチすることである。
【０００５】
今日、最高速のＣＩＳＣ型ＭＰＵのクロック周期は２５〜４０ＭＨｚであるが、近い将来、ＲＩＳＣ型で１００ＭＨｚを越えるＭＰＵが登場することが予想される。
【０００６】
このような、超高速ＭＰＵでは内蔵キャッシュメモリとして数ｎｓ以下の超高速アクセスが要求される。
【０００７】
また、内蔵キャッシュメモリは、ワード数は比較的少ないが、１ワード当りの読出しビット数が極端に多い（汎用ＳＲＡＭでは最大８ビット）と云う特徴を有している。たとえば、今日の３２ビットＭＰＵでも数百ビットの並列読出し等は一般的に実現されており、将来ＭＰＵの６４ビット化が進めば、並列読出し数がさらに増大すると思われる。
【０００８】
ここで、一般に、超高速メモリのセンスアンプとしては、バイポーラトランジスタによる差動型の高感度センスアンプが好適である。しかし、この回路は定常的に比較的大きな電力を消費する。また、メモリの他の部分でも特別な電力節減手段がなければメモリアクセスが起こらなくても電力を消費する。
【０００９】
すなわち、超高速アクセス、多ビット並列出力のキャッシュメモリを内蔵する単一チップＭＰＵではメモリ回路の消費電力が極端に大きくなるため適切な低消費電力化手段がなければ、キャッシュメモリのオンチップ化そのものが、やがて不可能になると予想される。
【００１０】
低消費電力化技術として知られている第１の従来技術としては、メモリアドレス信号と等価なチップセレクト信号ＣＳにより、メモリ回路をスタンドバイモードの消費電力と通常動作モードの消費電力に切換え実効的な消費電力を低減するものがある。
【００１１】
また、第２の従来技術としては、たとえばＡＴＤ（Addres Transition Detector）回路により、アドレス信号の変化を検知し、その信号により内部動作に必要なクロックパルスを生成し、メモリのセンスアンプ等を必要な期間だけ動作させて消費電力を低減するものが知られている。
【００１２】
また、特許文献１などに記載されているように、ＭＰＵなどの論理ＬＳＩではａ）複数の機能ブロックに対応して電力制御命令を設け、プログラムにより該当する機能ブロックを活性又は非活性状態に切換えることにより低消費電力を実現する方法、ｂ）機能ブロック毎にクロック制御回路を設け、クロック供給の有無を制御することにより低消費電力を実現する方法、ｃ）機能ブロック毎に電力制御回路を設け、命令実行時に使用しない機能ブロックの電源供給を遮断することにより低消費電力を実現する方法、などが公知である。しかしながら、上記従来技術では通常電力消費状態と低消費電力状態相互間の切換え時の電源電流の急激な変化によって電源線や接地線に誘起される雑音に対する考慮が欠如しており、以下のような問題点がある。
１）低消費電力状態と通常動作状態とで回路電流が短時間に大きく変化するため電源線，ＧＮＤ線のインダクタンスや抵抗により、大きな雑音電圧が発生する。
２）上記雑音電圧により、機能回路自身あるいは他の内部回路が誤動作する。また、仮に誤動作が起きなかった場合でも上記雑音電圧が消滅するまでには一定の時間が必要なため、メモリアクセススピードの実効的な低下が引き起こされる。
【００１３】
図２４（Ａ）は電源系の雑音電圧発生を説明するための図である。同図において、1300は電源、１３１０は例えばメモリ回路などの機能回路ブロック１３２１，１３２２は、それぞれ電源，ＧＮＤ系のインダクタンス１３３１，１３３２はそれぞれ電源系，ＧＮＤ系の抵抗である。
【００１４】
図２４（Ｂ）はＳＷを時刻ｔ1 でオンし、時間ｔ2 でオフした場合の電源電流ｉの変化、電源電位ｖ1 ，ＧＮＤ電位ｖ2 の変化の様子を示したものである。
【００１５】
図示するように、時刻ｔ1 でスイッチＳＷをオンにしたとき、回路電流ｉはΔｔ1 時間の間に０から定常電流まで変化する。このとき、図示のように回路の電源電位ｖ1 は負方向にピークを持つように大きく変化し、ＧＮＤ電位ｖ2 は正方向にピークを持つように大きく変化する。逆に、時刻ｔ2 でスイッチＳＷをオフしたとき、回路電流ｉは△ｔ2 時間の間に定常電流から０まで変化する。このとき、回路の電源電位ｖ1 は正方向にピークを持つように大きく変化し、ＧＮＤ電位ｖ2 は負方向にピークを持つように大きく変化する。
【００１６】
例えば、今、図２４の回路１３１０が５００ケのセンスアンプであり、１回路当り２
ｍＡの電流を消費するものとし、この電流をΔｔ＝１ｎｓで０から定常電流まで切換えるものとする。このとき、抵抗１３３１，１３３２を無視し、インダクタンス１３２１，
１３２２をＬ＝５ｎＨと仮定すると電源ノイズｖn は以下のようになる。
【００１７】
【数１】
0003729827.tif 000002
【００１８】
すなわち、５Ｖ又はそれ以下の電源電圧で動作する今日の半導体集積回路では前記のような大きな電源雑音は許容しがたいものになる。
【００１９】
また、仮に前記雑音を適正な大きさまで低減できたとしても、図２４（Ｂ）に示すように、電源、ＧＮＤ雑音が消失するまでにはΔｔ1 時間，Δｔ2 時間が必要である。この時間は電流の切換え時間に依存するが通常１〜３ｎｓが必要である。数ｎｓ以下のアクセスタイムが必要な超高速メモリなどではこの時間は受け入れ難いものであり、高速動作の大きな障害になる。
【００２０】
上記のように、電源電流の変化による雑音の問題は半導体チップ内の複数の演算器やその他の機能回路ブロックについても同様である。
【００２１】
ちなみに、近年の高性能ＭＰＵは、その処理能力を上げる目的で、いろいろな技術が導入されはじめている。計算機の処理性能は、次式により評価される。
【００２２】
【数２】
0003729827.tif 000003
【００２３】
ＣＰＩとは、１命令に要するサイクル数である。
【００２４】
ここ数年の技術で注目されるのが、ＰＩＳＣプロセッサである。ＲＩＳＣは、上式の
ＣＰＩを１に近づけることにより性能を向上させることを主目的としている。
【００２５】
最近、ＲＩＳＣの次の技術として、Super Scalar，ＶＬＩＷなどが注目されはじめた。この技術は、最大ｎ個の命令を同時に読み出し、ｎ個の命令を同時に解釈し、ｎ個の命令を同時に実行するもので、ハードウエアの並列度を増すことにより上式のＣＰＩを１／ｎまで下げて、計算機の性能を向上させるものである。このSuper Scalar，ＶＬＩＷなどの高速動作の演算回路としては、バイポーラトランジスタなどによる差動型の論理回路や
BiCMOSによる低振幅回路などが用いられるようになってきたが、直流電流を流す回路は、定常的に比較的大きな電力を消費する。
【００２６】
Super Scalar，ＶＬＩＷなどのＭＰＵでは、同一機能を持つ高速動作の演算回路がｎ個要求されるわけであり、それに供ない、演算回路の消費電力もｎ倍に増えてしまうという問題がある。
【００２７】
なお、この種の技術として関連するものには、例えば非特許文献１において論じられている。
【００２８】
【特許文献１】特開昭６１−４５３５４号公報
【非特許文献１】日経エレクトロニクスＮo.４８７、１９８９年１１月２７日号の  Ｐ１９１〜２００
【発明の開示】
【発明が解決しようとする課題】
【００２９】
以上の説明で明らかなように、従来のマイクロプロセッサなどの半導体集積回路や電子回路における低消費電力化技術は、電力切換え時に電源線や接地線に発生する雑音の問題が考慮されていないため、回路の誤動作を引き起したり、雑音が消失するまで一定の時間がかかるため、迅速なスタートアップが出来ないと云う問題があった。
【００３０】
特に、従来のオンチップメモリを有するＭＰＵでは電力切換え時の低ノイズ化とメモリアクセスの高速化にはトレードオフの関係があるため、超高速化が困難であるという問題を生じていた。
【００３１】
また、以上、キャッシュメモリを有するマイクロプロセッサにつき述べたが、高速化を要求される機能ブロックを有する半導体集積回路や電子回路においても同様な問題が生じる。
【００３２】
そこで、本発明は、機能回路ブロックの低消費電力化と高速化が可能な半導体集積回路装置、特に、キャッシュメモリ等のオンチップメモリを有すマイクロプロセッサを提供することを目的とする。
【００３３】
なお、ここで、活性化とは回路の動作上必要な所定の電力を供給することを意味し、不活性とは前記所定の電力より小さい電力を供給することを意味する。
【課題を解決するための手段】
【００３４】
本発明の半導体集積回路装置によれば、電源系インダクタンスＬ，許容電源ノイズＶn ，回路電流の切換え幅ΔＩの機能回路ブロックと、該機能回路ブロックを、その動作開始に時間Ｔ先行して活性化する動作開始予告信号を発生する手段を有し、かつ、
前記Ｔ，Ｌ，Ｖn およびΔＩは、
【００３５】
【数３】
0003729827.tif 000004
【００３６】
の関係を満たす。
【００３７】
また、本発明のメモリによれば動作の開始を予告する予告信号を受信し、該予告信号受信時より所定の時間をかけて回路電流を所定の値まで増加することにより低電力消費モードより通常電力消費モードに移行し、動作の実行が終了後、所定の時間をかけて回路電流を低電力消費モード電流まで減少し、低電力消費モードに移行する機能を有することを特徴とする機能回路ブロックを提供し、また、アクセスを予告するアクセス予告信号により活性化し、アドレス信号とリード・ライト制御信号とデータ入出力信号とに基づいて、所定のメモリ動作を実行する。
【００３８】
また、本発明のマイクロプロセッサは、ｎ個（ｎ≧２）の命令を同時に読み出してデコードし、ｎ個の演算回路を用いて同時に演算を実行するマイクロプロセッサであって、各演算回路を操作する命令を先行検出する検出手段と、この検出手段により検出された命令に対応した演算回路を１つ以上演算実行に先立って活性化し、演算終了後に、活性化された演算回路を不活性化する手段とを有する。
【００３９】
更に、本発明のマイクロプロセッサは同時に実行する命令間で各種の競合状態が生じることを検出する手段を有し、競合状態が生じている場合には、競合する命令に対応する前記演算回路のうち１つを、演算実行に先立って活性化し、かつその他の演算回路を不活性化するための信号を前記先行検出手段に送る。
【発明の効果】
【００４０】
本発明によれば、機能回路ブロックの低消費電力化と高速化が可能な半導体集積回路装置、特に、キャッシュメモリ等のオンチップメモリを有するマイクロプロセッサを提供することができる。
【発明を実施するための最良の形態】
【００４１】
以下、本発明に係る半導体集積回路の実施例をマイクロプロセッサを例にとり説明する。
【実施例】
【００４２】
図１に、本発明の第１の実施例に係るマイクロプロセッサ（ＭＰＵ）の構成を示す。
【００４３】
図中、１００が単一チップＭＰＵであるが、説明の便宜上、以下に、その内部構成は本実施例の理解に必要な構成要素だけを記し、その他の部分は省略する。
【００４４】
図中、１０１はプログラムカウンタであり、クロック信号ＣＬＫに同期して命令データの読み出しアドレスを発生する。１０２はメモリアドレスレジスタであり、命令キャッシュメモリ１０３の読み出しアドレスを保持する。１０４は命令データレジスタであり、命令キャッシュメモリ１０３から読み出した命令データを保持する。
【００４５】
また、１１１は他のメモリアドレスレジスタであり、データキャッシュメモリ１１２のリード又はライトアドレスを保持する。１１３はメモリデータレジスタであり、データキャッシュメモリ１１２のリードデータまたはデータキャッシュ１１２へのライトデータを保持する。
【００４６】
命令データレジスタ１０４とデータレジスタ１１３は内部データバス１７２に結合されており、入出力制御回路１６０を介して外部データバス１６１との間でデータのやりとりを行う。
【００４７】
１２０は第１の命令デコーダであり、命令レジスタ１０４の出力１０５をデコードし、所定の命令制御信号１２１，１２２を出力する。１４０は演算器であり、レジスタファイル１５０から内部バス１７３を介して演算に必要なデータを受取り、算術演算，論理演算，シフト演算などを実行し、その結果を内部バス１７４を介してレジスタファイル１５０に書き込む。また、他のケースでは演算結果を内部バス１７５を介してメモリアドレスレジスタ１１１に書き込む。
【００４８】
命令デコーダ１２０の出力１２１は演算器１４０に演算の内容を指定する。また、命令デコーダ１２０の出力１２２はレジスタファイル１５０に対してリードやライトの動作を指定する。
【００４９】
１３０は第２の命令デコーダであり、命令レジスタ１０４の出力１０５を解釈し、例えばデータキャッシュ１１２に対するメモリアクセスを予知し、所定の加工を施した後、データキャッシュ１１２に対してメモリアクセス予告信号１３１を出力する。
【００５０】
データキャッシュ１１２はこの信号とメモリアドレスレジスタ１１１からのアドレス信号とリード／ライト制御信号（図中省略されている。）とから所定のメモリアクセスを実行する。
【００５１】
なお、第２の命令デコーダ１３０は演算器１４０，レジスタファイル１５０、その他にも必要に応じて動作開始予告信号１３２，１３３を発生する機能を持たせることができる。
【００５２】
図２に本実施例に係るＭＰＵの代表的な命令実行ステージを示す。
【００５３】
図中、命令１，命令２はＲ−Ｒ演算（レジスタ−レジスタ間演算）の実行ステージを示している。
【００５４】
図中のＩＦステージで命令キャッシュ１０３から命令データをフェッチし、Ｄステージで命令デコーダ１２０によりデコードし、ＥＸステージで演算器１４０により所定の演算を実行する。最後にＷステージで演算結果をレジスタファイル１５０に書き込む。
【００５５】
次に、図中、中段に示す。データキャッシュ１１２に対するアクセスが発生するLOAD命令，ＳＴＯＲＥ命令では、ＩＦステージとＤステージまでは前述のＲ−Ｒ演算と同様であるが、次のＡＣステージではデータキャッシュ１１２をアクセスするための実効アドレス計算を行い、次のＣＡステージでデータキャッシュ１１２をアクセスする。最後にＷステージでは読み出したデータをレジスタファイル１５０に書き込む。
【００５６】
以上のように、ＬＯＡＤ／ＳＴＯＲＥ命令ではデコードステージＤとメモリアクセスステージＣＡ間に実効アドレス計算ステージＡＣが必ず介在しており、本実施例ではＣＡステージより２ステージ前のＤステージでメモリアクセスの発生を予知し、キャッシュメモリ１１２に対してアクセス予告信号を出力することを特徴とする。
【００５７】
次に、図３に、この命令のフェッチからアクセス予告信号の発生，メモリアクセスの実行までの動作タイミングをさらに詳細に示す。
【００５８】
図中、３ａはシステムクロックＣＬＫであり、この周期は図３の命令実行ステージの１ステージと同じ長さであり、例えば５ｎｓである。３ｂはＩＦステージであり、図では
Ｍ1〜Ｍ5のＬＯＡＤ，ＳＴＯＲＥ命令がフェッチされることを示している。
【００５９】
３ｃはＤステージであり、ＩＦステージの次のステージでＭ1〜Ｍ5のＬＯＡＤまたは
ＳＴＯＲＥ命令がデコードされることを示している。
【００６０】
３ｄはＡＣステージであり、３ｃのＤステージでデコードされたＬＯＡＤ／ＳＴＯＲＥ命令Ｍ1〜Ｍ5に対する実行アドレスＡ1〜Ａ5の計算が実行される。
【００６１】
３ｅはアドレス計算結果のメモリアドレスＡ1〜Ａ5であり、このアドレスを使って３ｆのＣＡステージで実際のメモリアクセスが実行される。
【００６２】
３ｇは図１に示した第２の命令デコーダ１３０で得られるメモリアクセス予知信号Ｍ1〜Ｍ4 であり、３ｃのＤステージのＭ1〜Ｍ5のデコード結果として得られる。また、３ｈは３ｇのメモリアクセス予知信号Ｍ1〜Ｍ5に所定の加工を施して得られたメモリアクセス予告信号１３１であり、データキャッシュ１１２に出力される。
【００６３】
ここで、アクセス予告信号３ｈは実際のメモリアクセスが行われる３ｆのＥ1 ステージに対して１ステージ前に先行して発生しており、同様にＥａステージに対して１ステージ前に先行して発生する。
【００６４】
ここで、図４（Ａ）にメモリアクセス予告信号１３１を発生する第２の命令デコーダ
１３０（図１参照）の内部構成を、図４（Ｂ）にその動作タイミングを示す。
【００６５】
図中、４１０はメモリアクセス予知回路であり、命令レジスタ１０４が出力する命令データがメモリアクセスを伴う命令であるかどうかを検知する。具体的にはＬＯＡＤ命令とＳＴＯＲＥ命令を検出し、図４（Ｂ）の３ｇに示すような検知信号ＤＥＴを発生する。
４２０は検知信号ＤＥＴ３ｇをクロック信号ＣＬＫ３ａでラッチするフリップフロップであり、その出力／Ｑ４ａは図４（Ｂ）に示すような信号になる（ここで、／ＱはＱの反転出力を表わす）。４３０はインバータであり、フリップフロップ４２０の出力／Ｑ４ａを反転して図４（Ｂ）に示すようなアクセス予告信号ＰＲ３ｈを発生する。
【００６６】
なお、ＰＲ信号１３１の極性は本質的なものではないが、本実施例では正極性のアクティブ信号としている。
【００６７】
次に、図５にデータキャッシュメモリ１１２（図１参照）の内部構成を示す。
【００６８】
図中、５１０はアドレスバッファであり、アドレス信号Ａｉを受けて、アドレスデコーダ・ドライバ５２０に必要な正，負のアドレス信号として出力する。アドレスデコーダ・ドライバ５２０の出力はメモリアレイ５３０に出力され、リードまたはライトすべきメモリアレイを選択する。
【００６９】
５４０は、センスアンプであり、メモリアレイ５３０から読み出した微小信号を所定の信号レベルまで増幅して出力する。５５０は出力ドライバであり、比較的重い付加を持つ出力Ｄo を駆動するために設けられている。
【００７０】
５６０は書き込み制御回路であり、書き込みデータＤｉを書き込み制御信号ＷＥを使ってメモリアレイ５３０の所定のアドレスに書き込む。
【００７１】
５７０は電流制御信号発生回路であり、アクセス予告信号ＰＲを受けて、少なくとも１以上の電流制御信号５７５を発生する。本例においては、データキャッシュメモリ１１２が共有される場合や、命令の実行以外のアクセス要因がある場合等の例をも提示するために、複数の予告信号ＰＲ1…ＰＲnを受けて、少なくとも１以上の電流制御信号５７５を発生する場合について示している。
【００７２】
電流制御信号５７５による回路電流の制御はキャッシュメモリ１１２内の電流制御信号発生回路５７０を除くすべての回路要素に対して適用可能である。どの回路を制御の対象に選ぶかは、適用する実際のハードウエア構成や用途に従う。
【００７３】
図６（Ａ）に、電流制御信号発生回路５７０（図５参照）の構成例を、同図（Ｂ）は、その動作タイミングを示す。
【００７４】
図中、６１０はオアゲートであり、アクセス予告信号ＰＲ1〜ＰＲnのオアをとり、その出力をインバータ６２０とフリップフロップ６６０に供給する。６３０はノアゲートであり、インバータ６２０の出力とフリップフロップ６３０の／Ｑ出力のノアをとり、図６
（Ｂ）の６ｃに示すような信号ＰＵＰを出力する。
【００７５】
６４０はアンドゲートであり、フリップフロップ６６０のＱ出力６ｂとクロック信号
ＣＬＫ３ａのアンドをとり、図６（Ｂ）の６ｄに示すＭＣＬＫ信号を出力する。また、
６５０と６７０はそれぞれオアゲートおよびデイレイ回路であり、オアゲート６５０は前記ＭＣＬＫ信号６ｄとＭＣＬＫ信号をデイレイ回路６７０で所定時間遅延させた信号とのオアをとり、図６（Ｂ）の６ｆに示すΦＳＡ信号を出力する。
【００７６】
なお、図６（Ｂ）のＭＡ６ｅはメモリアクセス実行サイクルのメモリアドレスを示している。
【００７７】
図６（Ｂ）に示すように、メモリアドレスＡ1，Ａ2に対するメモリアクセスはｔ2とｔ3のステージ６ｇで行われる。これに対して６ｃのＰＵＰ信号はｔ2 ステージより１ステージ前のｔ1 ステージで立上り、ｔ3 ステージの終りで立下る信号になっている。
【００７８】
このＰＵＰ信号６ｃを基に回路電流を制御するが、このようすを図７に示す。図７の
７ａに示すように、ＰＵＰ信号６ｃに基づいて、ｔ1 ステージの間に対象とする回路の電流をｉ1 から所定の電流値ｉ2 まで立上げ、ｔ2 ，ｔ3 のメモリアクセスステージではその電流値を維持し、メモリアクセスが完了したｔ4 ステージの始めから、電流値の所定の低電流値ｉ2 まで立下げる。
【００７９】
次に、ＭＣＬＫ信号６ｄ（図６Ｂ）はメモリアクセスステージｔ2 ，ｔ3 のそれぞれに対応して発生されるパルス信号であり、クロック同期式のメモリで実現する場合のメモリクロックとして有用である。なお、クロック同期型メモリについては文献１）〜３）を参照されたい。
文献
１）Kevin j.O'connor：Modular Embeded Cache Memory for a 32b Piplined RISC 
Microprocessor.1987 IS SCC p.256，257
２）Masanori Odaka et al ：A 512 kb／5ns BiCMOS RAM with 1KG／150ps Logic Gate 
Array.1989 IS SCC p.28，29
３）Masayoshi Kimoto et al：A 1.4ns／64kb RAM with 85ps／3688 Logic Gate Array.
1989 CI CC p.15.8.1〜15.8.4
また、ΦＳＡ信号６ｆはメモリアクセスステージｔ2 ，ｔ3 のそれぞれに対応して発生されるパルス信号であり、例えばセンスアンプを所定期間だけパルス動作させる信号として有用である。
【００８０】
すなわち、センスアンプのみを独立に活性化制御することにより、電流切り替えにより生じる電源ノイズを許容範囲に納め、かつ、高電力消費源であるセンスアンプの活性化時間を極力短くする信号等として用いることができる。
【００８１】
以上のＰＵＰ信号，ΦＳＡ信号を用いて実際に回路電流を制御する例を以下に示す。
【００８２】
まず、図８（Ａ）にＰＵＰ信号を使って、回路電流を制御する回路の第１の例を、同図（Ｂ）にその動作波形を示す。
【００８３】
図中、８１１，８１２はＰＭＯＳであり、それぞれのソースは電源Ｖ1 に接続され、それぞれのゲートは共通接続されてPMOS811 のドレインにも接続されている。また、８２１，８２２，８２３はＮＭＯＳであり、８２１のドレインはPMOS811 のドレインに、ゲートはＰＵＰ信号に、ソースは基準電位に接続されている。
【００８４】
NMOS822のドレインはPMOS812のドレインに、ゲートはインバータ８３０の出力に、ソースは基準電位に接続され、インバータ８３０の入力はＰＵＰ信号に接続されている。
【００８５】
また、８４０は例えば差動アンプのような能動回路でありデータキャッシュメモリ112や演算器１４０やレジスタファイル１５０(図１参照)等の機能回路ブロックに備えられているものであり、NMOS823 を介して定電流源８５０で定めた所定の動作電流を流すようになっている。さらにNMOS823 のゲートと、ＧＮＤ間には積分用のコンデンサＣが接続されている。
【００８６】
PMOS811，812とNMOS821，823はカレントミラー回路を構成しており、同図(Ｂ)に示すように、ＰＵＰ信号が“０”レベルから“１”レベルに立上がるとPMOS812 からコンデンサＣに、所定の充電電流が流れ、NMOS823 のゲート電圧Ｖｇおよび回路８４０の電流ｉは同図（Ｂ）中段および下段に示すように所定のslewrateでなだらかに立上がる。この立上り時間ｔ1 は、前述した図７に示したステージｔ1 に相当する時間である。
【００８７】
同様にＰＵＰが“１”レベルから“０”レベルに変化すると電圧Ｖｇおよび電流ｉは所定のslewrateでなだらかに立下り、この立下り時間ｔ4 は同様に図７に示したｔ4 に相当する時間になる。
【００８８】
なお、電流ｉの立上げ時間ｔ1 と立下げ時間ｔ4 は必ずしも同じである必要はなく、回路の動作が終了した後なので立下げるときは、特別な不都合が生じない範囲でｔ4 を短くすることもできる。
【００８９】
図９（Ａ）にＰＵＰ信号を使って回路電流を制御する回路の第２の例を、同図（Ｂ）にその動作波形を示す。
【００９０】
図中、９１１〜９１４はインバータ、９２１〜９２３はＮＭＯＳ、９３１〜９３３は定電流源、９４０は例えば差動アンプのような能動回路であり、データキャッシュメモリ
１１２や演算器１４０やレジスタファイル１５０（図１参照）等の機能回路ブロックに備えられているものである。
【００９１】
ここで、インバータ９１２〜９１４の遅延時間を９１４，９１３，９１２の順に大きくなるように設計するとＰＵＰ信号が同図（Ｂ）のように“０”から“１”レベルに変化したとき、NMOS921〜923を流れる電流ｉ1〜ｉ3も所定の時間差をもって立上り、能動回路
９４０の動作電流は時刻ｔ1 後にｉ1＋ｉ2＋ｉ3 の定常電流まで階段状に立上がる。
【００９２】
同様に、ＰＵＰ信号が“１”から“０”レベルに変化すると能動回路９４０の回路電流はｔ4 の時間内に段階状に立下がり、実効的に前述した図８の実施例と同様になだらかな電流変化を得ることができる。
【００９３】
この立上り時間ｔ1 および立下り時間ｔ2 は第１の例と同様に図７のステージｔ1 およびステージｔ4 の時間に相当する。
【００９４】
なお、以上、ＰＵＰ信号，ΦＳＡ信号を用いて実際に回路電流を制御する例を示したが、本実施例はこれに限定されるものではなく、他の一般の、回路電流を制御する方法によっても本実施例は実現できる。
【００９５】
以下、前記第１の回路電流制御回路を用いた場合を例にとり、データキャッシュメモリ１１２（図１参照）の各部における回路電流制御の例を示す。
【００９６】
図１０はデータキャッシュメモリ１１２の図５の５１０で示したアドレスバッファの電流制御の実施例である。
【００９７】
図中、１０１１〜１０１４はＮＰＮトランジスタ、１０２１，１０２２は抵抗、1031〜１０３３はＮＭＯＳ、１０４１〜１０４３は定電流源である。
【００９８】
NPN1011 と１０１２のエミッタは共通接続され、NMOS1031を介して定電流源１０４１に接続されている。NPN1011 と１０１２のベースはそれぞれアドレス信号Ａｉと基準電源
ＶR に接続され、それぞれのコレクタは抵抗１０２１，１０２２を介して電源Ｖ1 に接続されている。NPN1013，1014 のコレクタは電源Ｖ1 に接続され、それぞれのベースは
NPN1011のコレクタとNPN1012のコレクタに接続されている。また、NPN1013，1014 のそれぞれのエミッタはNMOS1032，1033を介してそれぞれ定電流源１０４２，１０４３に接続されている。
【００９９】
出力／ａｉは入力Ａｉの非反転出力としてNPN1014 のエミッタから取り出され、出力／ａｉは入力Ａｉの反転出力としてNPN1013 のエミッタから取り出されている。NMOS1031〜1033のゲートは制御信号Ｖｇに共通に接続されている。なお、制御信号Ｖｇは前述した図８にて示した信号Ｖｇに相当するものである。
【０１００】
ここで、NPN1011，1012 、抵抗１０２１，１０２２と定電流源１０４１は差動アンプを構成しており、いま、電流制御信号Ｖｇが“１”レベルで、アドレス信号ＡｉがＶｇより高いとき、NPN1011がオン，NPN1012がオフになり、NPN1011のコレクタが“０”レベル、
NPN1012 のコレクタが“１”レベルになる。
【０１０１】
NPN1011 のコレクタはエミッタフォロワトランジスタ１０１３のベースに接続されており、そのエミッタから“０”レベルの出力／ａｉが得られる。同様にNPN1012 のコレクタはエミッタフォロワトランジスタ１０１４のベースに接続されており、そのエミッタから“１”レベルの出力／ａｉが得られる。
【０１０２】
アドレス信号ＡｉがＶR より低いとき、NPN1011とNPN1012は逆の動作をし、／ａｉ出力は“１”レベル、ａｉ出力は“０”レベルになる。
【０１０３】
次に、電流制御信号Ｖｇが“０”レベルの場合、NMOS1031〜1033はすべてオフになり、このとき、電源Ｖ1 からＧＮＤへの電流パスがなくなるため、この回路は電力を消費しなくなる。
【０１０４】
ここで、電流制御信号Ｖｇは前述した図８（Ｂ）で示したように立上り，立下り時間が所定の時間になるように設定されるので電流の変化も図７の７ａで示したようになだらかなものとすることができる。
【０１０５】
したがって、前述した図２４（Ｂ）に示したような電流切換え時の電源、ＧＮＤノイズ
（図２４Ｂ参照）を所望の大きさに抑制することができる。
【０１０６】
次に、図１１にデータキャッシュメモリ内のデコーダ・ドライバ５２０，メモリアレイ５３０，センスアンプ５４０（図５参照）の部分の回路電流制御の例を示す。
【０１０７】
図中、１１６１，１１６２はＮＯＲゲートであり、アドレスデコーダの最終段に該当する。
【０１０８】
１１７１，１１７２はアンドゲートからなるワードドライバであり、一方の入力にアドレスデコーダ１１６１，１１６２の出力が接続され、他方の入力に制御信号Ｖｇが接続されその出力によりワード線ＷＬ1，ＷＬ2をそれぞれ駆動する。
【０１０９】
１１００は、特に限定するものではないが４ＭＯＳ型のメモリセルであり、説明の便宜上、１セルだけを図示する。
【０１１０】
１１１１，１１１２はビット線プルアップ用の負荷ＭＯＳである。また、１１１３〜
１１１６はビット線選択用のＭＯＳスイッチであり、カラム選択信号Ｃ1，Ｃ2により所望のビット線がコモンデータ線１１２０に結合される。
【０１１１】
１１２１，１１２２はＮＰＮトランジスタによりエミッタフォロワ回路であり、コモンデータ線１１２０の信号をＶＢＥ（ベース・エミッタ間電圧）だけレベルシフトして
NPN1123，1124のそれぞれのベースに伝える。NPN1123，1124のエミッタは共通接続され、
NMOS1141を介して電流源１１５１に接続されている。NPN1123，1124 のコレクタは抵抗
１１３１，１１３２を介して電源Ｖ1 に接続される。
【０１１２】
NPN1123，1124 、抵抗１１３１，１１３２および電流源１１５１とは差動アンプを構成しており、メモリセル１００より読み出した微小信号を所定の振幅まで増幅する。同様に、１１５０は２ケの抵抗と２ケのＮＰＮからなる差動アンプを構成しておりNMOS1142を介して定電流源１１５２に接続されている。
【０１１３】
１１５０の２つの入力はNPN1123，1124 のコレクタに接続されており、それらの信号を更に増幅して端子１１５１に所定の振幅の出力信号を得るものである。
【０１１４】
ここで、アンドゲート１１７１，１１７２の一方の入力には前述した電流制御信号Ｖｇ（図８参照）が接続されているため、Ｖｇが“１”レベルのとき、アンドゲート１１７１，１１７２は選択的に駆動され、ワード線ＷＬ1，ＷＬ2を選択的に駆動する。一方、Ｖｇが“０”レベルのとき、アンドゲート１１７１，１１７２を始めとするワードドライバはすべてオフになる。したがって、このときメモリセル１１００を始めとするすべてのメモリセルに流入する電流が遮断される。したがって、メモリアクセスしない状態での無駄な電力消費がカットされる。
【０１１５】
同様に、NMOS1141，1142のゲートには電流制御信号Ｖｇが接続されている。Ｖｇが
“１”レベルのときNMOS1141，1142はオン、Ｖｇが“０”レベルのときオフになる。
【０１１６】
したがって、メモリアクセスしない状態ではセンスアンプの電流は流れないため、無駄な電力消費がカットされる。
【０１１７】
ここで、電流制御信号Ｖｇによる回路電流の変化は図７の７ａに示すようになるため、電流切り換えによる電源、ＧＮＤのノイズを許容値に抑制できるばかりでなく、メモリアクセスの開始時点には上記ノイズは消滅しているため高速な動作が可能となる。
【０１１８】
なお、図１１でスイッチSW1180を信号ΦＳＡ側に切り換えるとNMOS1141，1142がパルス的に動作される。ΦＳＡ信号は前述したように（図６（Ｂ）参照）メモリアクセスステージｔ2 ，ｔ3 の所定時間だけ“１”レベルになるパルス信号であり、本例の場合、メモリアクセス中の一定時間だけセンスアンプに電力を供給することになり、低電力化を図ることができる。
【０１１９】
次に、図１２にデータキャッシュメモリ１１２の出力ドライバ５５０（図５参照）の回路電流制御の例を示す。
【０１２０】
図中、PMOS1211のドレイン，ゲート，ソースはそれぞれNPN1241 のベース，入力ＶIN，電源Ｖ1 に接続されている。NMOS1221のドレイン，ゲート，ソースはそれぞれNPN1241 のベース，入力ＶIN，抵抗１２５１の一端に接続されている。PMOS1222のドレイン，ゲート，ソースはそれぞれNMOS1221のドレイン，電流制御信号Ｖｇ，NPN1241 のベースに接続されている。また、抵抗１２５１の両端にはコンデンサ１２６１が接続されている。ダイオード１２３１のアノードとカソードはそれぞれNPN1241 のコレクタとベースに接続されており、NPN1241のコレクタには電源Ｖ1 が接続されている。NPN1241のエミッタは出力端子であり、出力端子と電源Ｖ2 間には終端抵抗１２５２が接続されている。
【０１２１】
いま、電流制御信号Ｖｇが“１”レベルのとき、PMOS1222はオフである。このとき、入力ＶINが“０”レベルなら、PMOS1211がオン，NMOS1221がオフになる。
【０１２２】
したがって、この時、PMOS1211を介してNPN1241 のベース電圧を立上げ、出力ＶOUT は
“１”レベルになる。逆に、ＶINが“１”レベルのとき、PMOS1211がオフ，NMOS1221がオンになり、NPN1241のベース電圧を引下げ、出力ＶOUTは“０”レベルになる。
【０１２３】
なお、ダイオード１２３１はNPN1241 のベース電位の低下を所定値に抑えるためのクランパーである。
【０１２４】
また、抵抗１２５１は電流制限用、コンデンサ１２６１はスピードアップ用である。
【０１２５】
次にＶｇが“０”レベルのとき、PMOS1222はオンになる。このとき、NPN1241 のベース電位は入力ＶINのレベルに関係なく引き下げられ、出力ＶOUT は“０”レベルになる。したがって、NPN1241 のコレクタ電圧ＶOUT は“１”レベルのときよりも小さくなり低消費電力化が図れる。
【０１２６】
したがって、前述したアドレスバッファ５１０，デコーダ・ドライバ５２０，メモリアレイ５３０，センスアンプ５４０の回路電流制御と同様な効果が得られる。
【０１２７】
以上、前記第１の回路電流制御回路を用いた場合を例にとり、データキャッシュメモリ１１２（図１参照）の各部における回路電流制御の例を示したが、回路電流制御回路としては、前記第２の回路電流制御回路（図９参照）や他の回路電流制御回路を用いても良い。
【０１２８】
以上、本実施例においては、アクセス予告信号を使ったメモリのアクセス方法による低電力化の例を中心に説明したが、前述したように、例えば単一チップＭＰＵ内の演算器やレジスタファイルなど命令語の解釈によって動作を制御されるすべての機能回路において同様に適用することができる。また、本実施例においては、回路電流を動作実行ステージの前ステージに同期して立上げを開始する例について、説明したが、これは、必ずしも同期させる必要はなく、電流変化による電源や接地線のノイズを所定の値に抑制できる時間分、実行ステージの開始に先行して、立上げを開始すれば良い。この場合、前記ＰＵＰ信号を、実行ステージの前ステージに同期してではなく所望のタイミングで有意信号とすれば良い。
【０１２９】
以上、本実施例によれば、単一チップマイクロプロセッサに含まれるメモリ回路やその他の機能回路は実際の動作に先立つアクセス予告信号により回路電流を動作開始までに所定の割合で立上げた後、所定の動作を実行する。このため、これらの機能回路は実際に動作する時だけ回路性能上必要な電力を消費するため、単一チップマイクロプロセッサの低電力化に効果がある。
【０１３０】
また低電力化した分だけ、新しい機能を付加することもできるため、高機能化，高集積化にも効果がある。
【０１３１】
また、各機能回路は所定の割合で回路電流を変化させられるため、電流変化による電源や接地線のノイズを所定の値に抑制できる。このため、信頼性の高い回路動作を実現できる効果がある。
【０１３２】
さらにまた、本実施例を適用した各機能回路では実際の動作を開始する時点で前記電源線や接地線のノイズが消滅しているため、最良の電源状態で動作することができ、回路の高速動作にも効果がある。
【０１３３】
次に、本発明をSuper Scalar型のＲＩＳＣプロセッサに適用した場合を説明する。
【０１３４】
Super Scalar型のＲＩＳＣプロセッサとは、主にレジスタファイルを共用する複数の演算ユニットを設け、命令を簡単にしてパイプライン段数を少なくし、かつ、１マシンサイクルに複数の命令を読み出し、複数演算ユニットを制御するものである。つまり、１マシンサイクルで複数の命令が同時に読み出され、実行されるため、複数の演算ユニットが同時に動き、処理能力を高めることができる。
【０１３５】
図１３は、第２の実施例で述べるプロセッサの命令一覧である。これらの命令を大きく類別すると、基本命令，分岐命令，ロード・ストア命令，システム制御命令に分けられる。なお、説明の都合上、簡単のために、上記の如く命令数を制限しているが、これは、本発明を制限するものではなく、さらに命令を増やしてもよい。
【０１３６】
第２の実施例の構成を示したのが、図１４である。１４００はメモリインタフェース、１４０１はデータキャッシュ、１４０２はシーケンサ、１４０３は命令キャッシュ、1404は３２ビットの第１命令レジスタ、１４０５は３２ビットの第２命令レジスタ、１４０６は第１命令用第１のデコーダ、１４０８は、第１命令用第２のデコーダ、１４０９は、第２命令用第２のデコーダ、１４０７は、第２命令用第１のデコーダ、１４１３は第１，第２命令間の競合検出回路、１４１０は第１演算ユニット、１４１２は第２演算ユニット、１４１１はレジスタファイルである。本実施例では、１マシンサイクルの間に最大２つの命令が並列して読み出され実行される。本実施例でのパイプライン処理の最も基本的な動作を示したものが、図１５である。パイプラインはＩＦ(Instruction Fetch),Ｄ(Decode)，ＥＸ（Execution），Ｔ（Test），Ｗ（Write）の５段で構成される。
【０１３７】
次いで、図１４を用いて、動作を説明する。ＩＦステージでは、シーケンサ１４０２内のプログラムカウンタによって指される２つの命令が命令キャッシュ１４０３より読み出され、バス１４１５，１４１７を通して、それぞれ第１命令レジスタ１４０４，第２命令レジスタ１０５にセットされる。
【０１３８】
Ｄステージでは、第１命令レジスタ１４０４の内容が第１デコーダ１４０６でデコードされ、また、第２命令レジスタ１４０５の内容が第２デコーダ１４０７でデコードされる。その結果、第１命令レジスタ１４０４の第１ソースレジスタフィールドで指されるレジスタの内容がバス１４２５を通して、第２ソースレジスタフィールドで指されるレジスタの内容がバス１４２６を通して、第１演算ユニット１４１０へ送出される。また、第２命令レジスタの第１ソースレジスタで指されるレジスタの内容がバス１４２７を通して、第２ソースレジスタフィールドで指されるレジスタの内容がバス１４２８を通して、第２演算ユニット１４１２に送出される。
【０１３９】
次にＥＸステージの動作について説明する。ＥＸステージでは、第１命令レジスタのオペコードの内容に従って、第１演算ユニット１４１０において、バス１４２５，１４２６により送られてきたデータ間の演算を行う。並列して、第２命令レジスタ１４０５のオペコードの内容に従って、第２演算ユニット１４１２において、バス１４２７，１４２８により送られてきたデータ間の演算を行う。ロードストア命令はここでアドレス計算を行う。
【０１４０】
次にＴステージの動作について説明する。Ｔステージでは、基本命令は、データを保持し続ける。ロードストア命令は、このステージで、前のＥＸステージで計算したアドレスをバス１４２９、又はバス１４３１を通して出力されたアドレスをもとにデータキャッシュ１４０１に対してメモリアクセスを実行する。なお、ストア命令の時は、同時に格納すべきデータがパス１４３７を通して出力される。
【０１４１】
最後にＷステージの動作を説明する。Ｗステージでは、第１演算ユニット１４１０の演算結果が、バス１４２９を通して、第１命令レジスタのディスティネーションフィールドで指されるレジスタに格納される。また、第２演算ユニット１４１２の演算結果が、バス１４３１を通して、第２命令レジスタのディスティネーションフィールドで指されるレジスタに格納される。さらに、ロード命令の時は、ロード命令内のディスティネーションフィールドで指されるレジスタへ、バス１４３０を通して、格納される。
【０１４２】
図１５は、基本命令を連続して処理するフローを示したものである。１マシンサイクルに２命令ずつ処理される。また、この例では、第１演算ユニットと第２演算ユニットは常に並列して動作している場合について描かれている。
【０１４３】
しかしながら、第１命令と第２命令との組み合せによっては、両命令を同時に実行できないことがある。これを競合と呼ぶ。
【０１４４】
例えば、第１命令のディスティネーションレジスタフィールドで指されるレジスタと、第２命令の第１ソースレジスタフィールドで指されるレジスタ、又は、第２命令の第２ソースレジスタフィールドＳ２で指されるレジスタが一致する時である。
【０１４５】
このような競合が発生した時、ハードウエアは第１命令レジスタに入っている命令を１マシンサイクルかけて実行し、続いて次の１マシンサイクルで第２命令レジスタを実行するように制御される。つまり、第１命令，第２命令ともに、それぞれ１マシンサイクルかけて実行される。図１６に、競合が入った場合のパイプラインを示す。この例では、第１命令，第２命令共に加算命令であり、アドレス２の２命令について考えると第１命令はレジスタＲ（１），レジスタＲ（２）の内容を加算して、レジスタＲ（３）に格納するものであり、第２命令はレジスタＲ（４）とレジスタＲ（３）の内容を加算して、レジスタＲ（５）に格納するものである。ここで、第１命令のディスティネーションレジスタＲ(３)と、第２命令のソースレジスタＲ（３）競合している。このような場合、図１６に示す通り、１マシンサイクルごとに、各命令を実行する。
【０１４６】
つまり、ＰＣ２で第１命令を実行し、並行して行われる第２命令を無効化し、続いて、次のサイクルで第１命令を無効化し、並行して行われる第２命令を実行することで実現できる。なお、１サイクルずらした場合のディスティネーションとソースのぶつかりは従来からよく知られているショートパスを使えばよい。
【０１４７】
Super Scalar型のＲＩＳＣプロセッサは、図１４で示した通り、演算ユニットを２つ持っており、上記のような競合の時は、必ずどちらか１つの演算ユニットしか使われない。残りの演算ユニットは、無意味な処理をしている。
【０１４８】
Super Scalar型のＲＩＳＣプロセッサにおいて、各種競合が見つけられた時に、使用される方の演算ユニットを動作開始に先立って、検出し活性化することが重要である。この様子を図１４で詳しく述べる。ＩＦステージで、第１命令，第２命令が読み出された後、Ｄステージで第１命令，第２命令の間の各種競合チェックが競合検出回路１４１３で行われる。
【０１４９】
各種競合チェック後、競合が生じていると認められると、一方の演算ユニットだけで実行されるので、信号１４３２，１４３３を通して、使用される演算ユニットを活性化すればよい。
【０１５０】
なお、競合が生じていない場合には、両方の演算器を活性化する。活性化された演算ユニットは、１マシンサイクルの後半に、次のマシンサイクルのための制御信号が活性化を伝えてくれば、演算ユニットは、連続して活性化される。また、活性化を伝えてこなければ、そのマシンサイクル終了後、演算器は、不活性化される。
【０１５１】
競合が生じた場合について、詳しく記述する。第１，第２命令の競合検出回路が競合を検出すると、初めに第１命令を実行するため、第１演算ユニットは、１４３３を経由して、制御信号１４３５より活性化を伝えられ、活性化される。同時刻、第２演算ユニットは、制御信号１４３２を経由して、制御信号１４３６より活性化しないことが伝えられる。このため、第２演算ユニットは、不活性のまま、つまり、低消費電力のままである。
【０１５２】
この時、信号１４３４は、競合が検出されたことをシーケンサ１４０２に伝えるものである。
【０１５３】
次のサイクルで、第２命令を実行するため、第１演算ユニットは、１４３３を経由して、制御信号１４３５より、活性化しないことが伝えられる。このため、第１演算ユニットは、不活性になる。同時刻、第２演算ユニットは、制御信号１４３２を経由して制御信号１４３６より、活性化することが伝えられる。
【０１５４】
以上、本実施例のように、２命令同時処理において、各種競合が見つけられた時に、使用される方の演算ユニットを動作開始に先立って、検出し活性化することにより、活性化されない演算ユニットは、電力の消費を抑えることが可能であり、全体の消費電力を抑える効果がある。
【０１５５】
図１７〜図１９は、図１４の第１演算ユニット１４１０，第２演算ユニット１４１２，レジスタファイル１４１１を抜き出したものであり、接続関係は省略して書いてある。
【０１５６】
図１７は、第１，２演算ユニットに少なくとも１つ以上差動入力を利用した回路、例えばＥＣＬ回路で構成したものを示している。このような演算ユニットで構成したSuper 
Scalar型のマイクロプロセッサにおいて、競合が検出された時、１マシンサイクルずつ実行されるため、実際に使用する第１又は第２演算ユニットは、信号線１４３５又は1436によって、活性化され予め目的の動作をするために定められた値の電流を電流源より流し実行されるが、残りの活性化されなかった演算器は電流源の流す電流を小さくするか流さない状態のままであるため、電力を消費しない。
【０１５７】
図１８，図１９，図２０は、第１，２演算ユニットに少なくとも１つ以上のバイポーラトランジスタのベース・エミッタ間で論理をとる回路、例えば、ＥＣＬ回路，BiCMOS回路で構成したものを示している。なお、この回路構成そのものは、特開昭60−175167号公報に詳しく記述されている。この回路は、バイポーラトランジスタがＯＮしていると、直流電流が流れ、電力が増える欠点を持つ。このため、競合などが生じた時使用していない演算ユニットの電力を消費させないことは有効である。制御方法は、図１７で説明したものと同様である。
【０１５８】
図１８と図１９の違いは、電力を削減する方法が異なる点である。図１８は、バイポーラトランジスタのコレクタ側とＶｃｃの間にＰチャネルＭＯＳトランジスタが挿入されており、このＰチャネルＭＯＳトランジスタをＯＮさせた時、動作状態になり、ＯＦＦさせた時、不活性状態となる。
【０１５９】
図１９は、回路としては、動作状態にあるが、信号１４３５又は１４３６がＯＮになると、強制的にバイポーラトランジスタをＯＦＦさせ、バイポーラトランジスタのコレクタ−エミッタ間電流を流さなくさせる。これは、強制的に直流電流をカットさせたことを意味しており、これにより消費電力を削減できる。
【０１６０】
図２０は、図１４の第１演算ユニット１４１０，第２演算ユニット１４１２，レジスタファイル１４１１、さらにそれらのタイミングをとるクロック分配系を抜き出したものである。図２０の分配系で注目すべき点は、分配系内のクロックドライバＡである。
【０１６１】
クロックドライバＡは、それぞれ第１演算ユニット１４１０，レジスタファイル1411，第２演算ユニット１４１２だけに独立にクロックを供給している。このような分配系を含む演算ユニットで構成されたSuper Scalar型のマイクロプロセッサにおいて、競合が検出された時、１マシンサイクルごとに実行されるが、実際に使用しない第１又は第２演算ユニットは、信号線１４３５又は、１４３６によって、クロック分配系の特定エリアへのクロックを止めるように制御する。これにより、各ブロックに供給するクロック分配系以下の論理が固定される。つまり、２つある演算ユニット内のどちらか一方の演算ユニットは、クロックが供給されており、動作しているが、残りの一方の演算ユニットは、クロックの供給が行われない。
【０１６２】
ＣＭＯＳ回路やBiCMOS基本回路は、コンプリメンタリな特性を持ち、通常の消費電力はきわめて小さいが、入力データが変化する過渡期に電力を消費する。クロックの供給が止められることは、論理が固定され、変化しないことを意味する。このため、消費電力が削減できる効果があり、図２０の制御方法は、ＣＭＯＳ回路やBiCMOS基本回路を含む演算ユニットで構成されたものに有効である。
【０１６３】
以上、図１７〜図２０までで述べたように、演算ユニットを構成する回路形式に対応して、不活性時の消費電力を削減することが可能である。なお、図１７，図１８の回路形式の組み合せによる演算ユニットの構成においてもそれぞれに対応して消費電力を削減できることは明白である。
【０１６４】
本実施例では、レジスタ間の競合同士の組み合せにより同時処理できないもの、（例えば、ロード命令とロード命令の組み合せなど）が挙げられる。その例として、図２１にその組み合せを示す。しかしながら、その組み合せは、ハードウエア上のインプリメンテーションで決まるもので本発明とは直接関係ない。つまり、図２１でその組み合せに１つ以上の組み合せに制約があった時、命令の組み合せによる競合が成立したことになる。
【０１６５】
更に、図１４に戻って、競合検出回路１４１３及び、デコーダ１４０６，１４０８，
１４０９，１４０７の他の動作につき、第３の実施例として説明する。
【０１６６】
先に述べた例は、各種競合が見つけられた時に、使用される方の演算ユニットの動作開始に先立って、検出し活性化したが、本第３の実施例は、各種競合が見つけられた時、使用されない方の演算ユニットを動作開始に先立って、検出し、不活性化するものである。この様子を図１４を用いて同様に詳しく述べる。ＩＦステージで、第１命令，第２命令が読み出された後、Ｄステージで、第１命令，第２命令の間の各種競合チェックが第１命令，第２命令間の競合検出回路１４１３で行われる。各種競合チェック後、競合が生じていることが認められるが、一方の演算ユニットだけで実行されるので、信号１４３２，1433を通して残りの演算ユニットを不活性化すればよい。つまり第１，第２命令間の競合検出回路が競合を検出すると、初めに、第１命令を実行するが、第２命令は信号１４３２によって第２命令用第１デコーダを無効化し、第２演算ユニットを制御信号１４３６を通して不活性化させる。この時信号１４３４は、競合が検出されたことをシーケンサ１４０２に伝えるものである。次のサイクルで、競合検出回路の出力１４３３により、第１命令用第１デコーダを無効化し、第１演算ユニットを制御信号１４３５を通して不活性化させる。これと並行して、第２命令は実行される。なお、不活性化された演算ユニットは、１マシンサイクル内の後半で再び活性化するように制御することで、続く命令の実行は可能となる。
【０１６７】
以上、本実施例のように、２命令同時処理において、同時に実行する可能性のある２命令間に競合があるか否かを検出し、競合がある場合に、使用しない演算ユニットを不活性化することにより全体の消費電力を抑える効果がある。
【０１６８】
図１７〜図１９は、図１４の第１演算ユニット１４１０，第２演算ユニット１４１２，レジスタファイル１４１１を抜き出したものであり、接続関係は省略して書いてある。各演算ユニットへの低消費電力の仕方は先の第２の実行例と同様である。
【０１６９】
このような演算ユニットで構成したSuper Scalar型のマイクロプロセッサにおいて、競合が検出された時、１マシンサイクルずつ実行されるが、実際に使用しない第１又は第２演算ユニットは、信号線１４３５又は１４３６によって、使用しない方の消費電力を削減する。この時、実際に使用されている第１又は第２演算ユニットは、目的の動作をするために設けられた値の電流を電流源より流し続ける。つまり、どちらか一方は、所定の電流が流れ続け、残りの一方が消費電力を削減するように制御する。
【０１７０】
なお、第２の実施例と同様に、図１７，図１８の回路形式の組み合わせによる演算ユニットの構成においてもそれぞれに対応して消費電力を削減できることは明白である。
【０１７１】
本実施例では、レジスタ間の競合について述べたが、その他の競合として、先の第２の実施例の中でも説明したように命令同士の組み合せにより同時処理できないもの、（例えば、ロード命令とロード命令の組み合せなど）が挙げられる。図２１はその組み合せの例を示す。しかしながら、その組み合せは、ハードウエア上のインプリメンテーションで決まるもので本発明とは直接関係ないのは、先の第２の実施例でも述べた通りであり、図
２１でその組み合せに１つ以上の組み合せに制約があった時、命令の組み合せによる競合が成立したことになる。
【０１７２】
さらに、本実施例では、基本命令の組み合せについて述べたが、分岐，命令，ロード命令のすぐ次の命令でロードしたデータを使用する（これをロードユースと呼ぶ）時にも、演算ユニットは、無意味な処理をする場合がある。この場合も本発明は有効である。図
２２は、分岐命令の時を示すものであり、図２３は、ロードユースの時である。なお、これらの動作は、容易に類推可能であるため省略する。
【０１７３】
さらに、ＮＯＰ命令，システム制御命令など、演算ユニットを実際に操作しない命令が検出された時、検出された側の演算ユニットを不活性化することも可能である。
【０１７４】
図１４において、第１命令用第２デコーダ１４０８，第２命令用第２デコーダ１４０９は、それぞれの命令が演算ユニットを実際に操作するかどうかの命令をデコードすることで検出する回路である。
【０１７５】
第１命令用第２デコーダ１４０８で検出すると信号線１４３５を通して第１演算ユニット１４１０を不活性化し、さらに第２命令用第２デコーダ１４０９で検出すると、信号線１４３６を通して、第２演算ユニット１４１２を不活性化する。これによって、演算ユニットの消費電力は削減できる効果がある。
【０１７６】
さらに、本実施例では、２命令のSuper Scalar型のマイクロプロセッサについて述べたSuper Scalar型の別の制御方式においても有効であり、さらに２命令に限るものではなく、複数命令の同時処理機能を持つプロセッサに有効である。また、ＲＩＳＣプロセッサに限定されることなく、ＣＩＳＣプロセッサに適用できることは言うまでもない。
【０１７７】
なお、以上、本実施例においては、単一チップマイクロプロセッサを例にとり説明したが、他の１チップＬＳＩ等の半導体集積回路装置等においても、その各機能回路ブロックの動作開始を予知し機能回路ブロックの回路電流を制御することにより同様の効果を得ることができる。この場合、その動作開始の予知方法、および、回路電流制御のタイミングは適用する装置の構成，用途に従うが、動作開始に先立ち、動作開始を予知し、電流切り替え等に起因する誤動作が生じないよう動作開始に一定時間先行して機能回路ブロックを活性化することにより、低消費電力化と正常動作を確保し、ひいては装置の高速化を図るという本実施例の本質に何ら異なるものではない。
【０１７８】
なお、さらに本実施例は半導体集積回路のみならず、一般の電子回路においても、同様に実現可能である。
【図面の簡単な説明】
【０１７９】
【図１】本発明の第１の実施例に係るマイクロプロセッサの構成を示すブロック図。
【図２】マイクロプロセッサの命令実行ステージを示す説明図。
【図３】マイクロプロセッサの動作タイミングを示すタイミングチャートを示す図。
【図４】アクセス予告信号発生回路の構成を示すブロックおよびその動作を示すタイミングチャートを示す図。
【図５】キャッシュメモリの構成を示すブロック図。
【図６】電流制御信号発生回路を示す回路およびその動作を示すタイミングチャートを示す図。
【図７】アクセス予告信号と電源電流の関係を示すタイムチャートを示す図。
【図８】電流制御信号発生回路の構成を示すブロックおよびその動作を示すタイミングチャートを示す図。
【図９】電流制御信号発生回路を示すブロックおよびその動作を示すタイミングチャートを示す図。
【図１０】アドレスバッファの構成を示す回路。
【図１１】メモリセル周辺回路を示すブロック図。
【図１２】出力ドライブ回路を示す回路図。
【図１３】命令一覧を示す図。
【図１４】第２の実施例に係るマイクロプロセッサの構成を示すブロック図。
【図１５】第２の実施例で示されたマイクロプロセッサの命令実行ステージを示す説明図。
【図１６】各種競合が行った時のマイクロプロセッサの命令実行ステージを示す説明図。
【図１７】演算ユニット内の回路例を示す図。
【図１８】演算ユニット内の他の回路例を示す図。
【図１９】演算ユニット内の他の回路例を示す図。
【図２０】演算ユニットへ供給されるクロック信号の分配系の回路を示す図。
【図２１】２命令同時処理における命令同士の組み合せルールを示す説明図。
【図２２】分岐命令の命令実行ステージを示す説明図。
【図２３】ロードユース時の命令実行ステージを示す説明図。
【図２４】回路電流の変化とノイズ電圧の関係を示す説明図。
【符号の説明】
【０１８０】
１０１…プログラムカウンタ、１０２…メモリアドレスレジスタ、１０３…命令キャッシュメモリ、１０４…命令データレジスタ、１１１…メモリアドレスレジスタ、１１２…データキャッシュメモリ、１１３…メモリデータレジスタ、１２０…第１の命令デコーダ、１３０…第２の命令デコーダ、１４０…演算器、１５０…レジスタファイル、１６０…入出力制御回路、４１０…メモリアクセス予知回路、５７０…電流制御信号発生回路、
９４０…能動回路、１１００…メモリセル、１１５０…センスアンプ。
【図１】
0003729827.tif 000005
【図２】
0003729827.tif 000006
【図３】
0003729827.tif 000007
【図４】
0003729827.tif 000008
【図５】
0003729827.tif 000009
【図６】
0003729827.tif 000010
【図７】
0003729827.tif 000011
【図８】
0003729827.tif 000012
【図９】
0003729827.tif 000013
【図１０】
0003729827.tif 000014
【図１１】
0003729827.tif 000015
【図１２】
0003729827.tif 000016
【図１３】
0003729827.tif 000017
【図１４】
0003729827.tif 000018
【図１５】
0003729827.tif 000019
【図１６】
0003729827.tif 000020
【図１７】
0003729827.tif 000021
【図１８】
0003729827.tif 000022
【図１９】
0003729827.tif 000023
【図２０】
0003729827.tif 000024
【図２１】
0003729827.tif 000025
【図２２】
0003729827.tif 000026
【図２３】
0003729827.tif 000027
【図２４】
0003729827.tif 000028