(57)【特許請求の範囲】
【請求項１】
命令が入力される命令処理回路と、
該命令処理回路の出力を入力とする第１のレジスタと、
該第１のレジスタの出力を入力とする命令デコーダと、
前記命令デコーダのデコード結果に従い演算を行う演算器とを有し、
前記命令処理回路は、入力された命令が所定命令の場合、前記入力された命令を前記命令デコーダに出力し、入力された命令が前記所定命令以外の命令の場合、前記第１のレジスタへのクロック供給を停止することを特徴とするマイクロプロセッサ。
【請求項２】
請求項１に記載のマイクロプロセッサにおいて、
前記命令処理回路は、命令判定回路とクロックが制御されてクロックを前記第１のレジスタに供給する制御回路とを有し、
前記命令判定回路は、前記命令処理回路に入力された命令が前記所定命令であるか否かを判定し、
前記制御回路は、当該判定の結果に基づき、前記第１のレジスタへのクロック供給を停止することを特徴とするマイクロプロセッサ。
【請求項３】
請求項１または２記載のマイクロプロセッサにおいて、
前記所定命令は、前記演算器に演算を行わせるための命令であることを特徴とするマイクロプロセッサ。
【請求項４】
請求項１から３のいずれかに記載のマイクロプロセッサにおいて、
前記演算器は、特定演算回路の演算器であることを特徴とするマイクロプロセッサ。
【請求項５】
請求項４に記載のマイクロプロセッサにおいて、
前記特定演算回路はＦＰＵであることを特徴とするマイクロプロセッサ。
【請求項６】
請求項１から５のいずれかに記載のマイクロプロセッサにおいて、
前記演算器は、第１のラッチに格納されたデータの演算を行い、演算結果を第２のラッチに出力し、
前記命令デコーダに前記第１の命令が入力されたとき、前記第１のラッチと前記第２のラッチとに対して供給されるクロックが停止されることを特徴とするマイクロプロセッサ。
【請求項７】
請求項１から６のいずれかに記載のマイクロプロセッサにおいて、
前記マイクロプロセッサは、更に、命令を受ける第２のレジスタと、
該第２のレジスタに接続された第２の命令デコーダと、
該第２の命令デコーダの出力によって制御される第２の演算器とを有し、
前記命令処理回路に供給される命令と前記第２のレジスタとに入力される命令とは同じ命令であることを特徴とするマイクロプロセッサ。
【請求項８】
請求項１から７のいずれかに記載のマイクロプロセッサにおいて、
前記マイクロプロセッサは、同一の半導体基板上に形成されていることを特徴とするマイクロプロセッサ。
【請求項９】
メモリからの命令が入力される命令処理回路と、
該命令処理回路の出力をデコードする第１のデコーダと、
該第１のデコーダのデコード結果に従い演算を行う第１の演算器と、
前記命令処理回路の出力を入力とする命令レジスタと、
該命令レジスタの出力をデコードする第２のデコーダと、
該第２のデコーダのデコード結果に従い演算を行う第２の演算器とを有し、
前記命令処理回路に入力された命令が第２の演算器に演算を行わせる命令でない場合、前記命令レジスタへのクロック供給を停止することを特徴とするマイクロプロセッサ。
【請求項１０】
命令が入力される命令処理回路と、
該命令処理回路の出力を入力とする命令レジスタと、
該命令レジスタの出力が入力される命令デコーダと、
前記命令デコーダのデコード結果に従って演算を行う演算器とを有し、
前記命令処理回路は、クロックが制御されてクロックを前記命令レジスタに供給する制御回路と、前記入力された命令の所定ビットが入力される判定回路とを有し、
前記判定回路は、前記所定ビットが第１の状態であるか否かを判定し、
前記制御回路は、前記所定ビットが第１の状態でなかった場合、前記第１のレジスタへのクロック供給を停止することを特徴とするマイクロプロセッサ。
【請求項１１】
請求項１０に記載のマイクロプロセッサにおいて、
前記演算器は、特定演算回路の演算器であることを特徴とするマイクロプロセッサ。
【請求項１２】
請求項１１に記載のマイクロプロセッサにおいて、
前記特定演算回路はＦＰＵであることを特徴とするマイクロプロセッサ。
【請求項１３】
請求項１０から１２のいずれかに記載のマイクロプロセッサにおいて、
前記演算器は、第１のラッチに格納されたデータの演算を行い、演算結果を第２のラッチに出力し、
前記命令デコーダに前記第１の命令が入力されたとき、前記第１のラッチと前記第２のラッチとに対して供給されるクロックが停止されることを特徴とするマイクロプロセッサ。
【請求項１４】
請求項１０から１３のいずれかに記載のマイクロプロセッサにおいて、
前記マイクロプロセッサは、更に、命令を受ける第２のレジスタと、
該第２のレジスタに接続された第２の命令デコーダと、
該第２の命令デコーダの出力によって制御される第２の演算器とを有し、
前記命令処理回路に供給される命令と前記第２のレジスタとに入力される命令とは同じ命令であることを特徴とするマイクロプロセッサ。
【請求項１５】
請求項１０から１４のいずれかに記載のマイクロプロセッサにおいて、
前記マイクロプロセッサは、同一の半導体基板上に形成されていることを特徴とするマイクロプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロプロセッサに関する。例えば、浮動小数点演算ユニット（ＦＰＵ）又はディジタル信号処理プロセッサ（ＤＳＰ）のように特定用途の専用回路を有するコプロセッサを有し、ＰＤＡやモバイルコンピュータのような電池駆動の携帯用電子機器において使用される低消費電力型マイクロプロセッサに適用して有用な技術に関する。更には、前記マイクロプロセッサを組み込んだマイクロプロセッサに適用して有用な技術に関する。
【０００２】
【従来の技術】
携帯用電子機器に搭載されるマイクロプロセッサは、演算の高速処理に加え、電池駆動において長時間の使用を可能とするべく低電力化を達成する必要がある。演算の高速処理を達成するためには、マイクロプロセッサに、ＦＰＵなどのコプロセッサを設ける技術などが知られている。
【０００３】
また、マイクロプロセッサの低電力技術としては以下が知られている。
【０００４】
まず、携帯用電子機器では待機時間が多いため、待機時用の低消費電力モードを用意し、待機時にはマイクロプロセッサを動作させるためのクロック周波数を下げる方法がある。具体的な構成としては、クロック周波数を下げるためのクロック分周器を有し、低消費電力モードが選択された際、マイクロプロセッサに前記分周器で分周された周波数を供給する。このことにより、クロック消費電力及び単位時間あたりのトランジスタのスイッチングによる電力が削減され、マイクロプロセッサの低消費電力化が達成される。
【０００５】
また、待機時にクロック周波数を下げる方法とは異なり、使用しないモジュールに供給するクロックを遮断する方法がある。例えば、ユーザーブレークコントローラは、プログラムのデバッグを容易にするための回路であるため、通常のプロセッサ動作時には動作していない。ユーザーブレークコントローラなど、通常時動作しないモジュールに対しては、通常時にクロックを遮断しても問題は生じない。クロックを遮断することは、前述した、供給するクロック周波数を下げる方法に比べて低電力化の効果が大きい。クロック遮断を行う具体的な構成としては、クロックの遮断を制御するための制御レジスタにモジュール単位で使用しないモジュールを設定しておき、低消費電力を実行するためのクロック停止命令を実行することにより、前記制御レジスタに設定されているモジュールのクロックを停止させる。この方法では、制御レジスタに設定されたモジュールの消費電力が０となる。制御レジスタに設定されたモジュールを使用する際は、割り込みにより所定のモジュールを復帰させ、クロックの供給を再開させる。しかし、モジュール毎にクロックの供給や遮断を行う方法は、制御レジスタに値を設定するなどのオーバーヘッドが大きくなり、モジュールの実行又は停止が頻繁に切り替わるモジュールには対しては適さない。
特開平８−１０１８２０号では、オペレーションを行う部分であるデータパスの電力削減のために、データパスでオペレーションが行われない場合、データパス部の内部回路の動作を停止させる制御信号ＮＯＰ（Ｎｏ ｏｐｅｒａｔｉｏｎ）信号を生成する方式が示されている。命令をデコードし、デコードの結果、データパス部でオペレーションが行われない命令であった場合、１ビットのＮＯＰ信号ＣＣ＝１を出力する。ＮＯＰ信号ＣＣ＝１のとき、データパス制御信号用のラッチを更新しないようにし、制御信号を不変とする。また、データパスの入出力ラッチを更新しないようにし、入出力データを固定とする。このとき、入力データと制御信号が変化しないので、データパス部でスイッチングを行わないため低消費電力化が可能となる。
【０００６】
【発明が解決しようとする課題】
上記に示した、データパス部の内部回路の動作を停止させる制御信号ＮＯＰ信号を生成する方式は、以下の問題点を抱えている。
【０００７】
ＮＯＰ信号生成方式は、データパスの電力削減が目的であるため、制御部のデコーダで消費する電力は削減されない。制御部のデコーダは、命令発行制御に加え、例外処理、制御信号生成論理等があり、そこで消費される電力は無視できない。
【０００８】
更に、電力削減回路は付加回路であることが望ましい。何故なら、例えば、ＩＰ（Ｉｎｔｅｌｌｅｃｔｕａｌ  Ｐｒｏｐｅｒｔｙ）による機能部品をコプロセッサとして使用する場合、組み込むＩＰとしてのコプロセッサの内部に手を加えずに、組み込むＩＰ部位以外に電力削減用の回路を付加するようにすれば、ＩＰ回路内部を変更する場合に対して検証工数が削減できる。
【０００９】
そこで、本発明の目的は、デコーダ等の制御部及びデータパス部の電力を削減し、かつ電力削減のための付加回路を設ける構成とすることで、低消費電力化と構成の容易化を図ったマイクロプロセッサを提供することである。
【００１０】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び図面から明らかになるであろう。
【００１１】
【課題を解決するための手段】
上記目的を達成するため、本発明の代表的な実施形態のマイクロプロセッサでは、命令が入力される判定回路と、前記判定回路によって制御される命令選択回路と、前記命令をデコードする命令デコーダと、前記命令デコーダのデコード結果に従い演算を行う演算回路とにより構成され、前記命令選択回路は、前記演算回路に演算を行わせるための命令とは異なる命令が前記判定回路に入力されたとき、前記命令デコーダに第１の命令を供給することを特徴とする。これにより、無関係な命令が入力されたとき、デコーダ内部におけるスイッチング回数が減少し、トランジスタのスイッチング回数が減少し、トランジスタの貫通電流が削減され、デコーダでの消費電力が削減される。
【００１２】
更に、本発明の別の代表的な実施形態のマイクロプロセッサでは、命令が入力される判定回路と、前記判定回路によって制御される命令無効化回路と、前記命令を受ける命令レジスタと、前記命令レジスタの出力をデコードする命令デコーダと、前記命令デコーダのデコード結果に従い演算を行う演算回路とにより構成され、前記命令無効化回路は、前記演算回路に演算を行わせるための命令とは異なる命令が前記判定回路に入力されたとき、前記命令レジスタに供給するクロックを停止させることを特徴とする。これにより、命令レジスタの動作が停止し、命令レジスタから命令デコーダへ命令が出力されない。つまり、上記と同様に、デコーダ内部のトランジスタの貫通電流が減少し、デコーダでの消費電力が削減される。
【００１３】
更に、本発明の他の代表的な実施形態のマイクロプロセッサでは、命令が入力される判定回路と、前記判定回路によって制御される命令無効化回路と、前記命令を受けるスイッチ回路と、前記スイッチ回路の出力をデコードする命令デコーダと、前記命令デコーダのデコード結果に従い演算を行う演算回路とにより構成され、前記命令無効化回路は、前記演算回路に演算を行わせるための命令とは異なる命令が前記判定回路に入力されたとき、前記スイッチ回路を開放し、前記命令デコーダに命令を供給することを停止させる特徴とする。これにより、上記と同様に命令デコーダでの消費電力の削減が可能となる。
【００１４】
【発明の実施の形態】
以下、本発明の代表的な実施形態を図面を用いて説明する。
【００１５】
図１は、マイクロプロセッサとその周辺の構成を示している。マイクロプロセッサ１０１は一つの半導体基板上に形成されている。マイクロプロセッサはバスインタフェースユニット（ＢＩＵ：Ｂｕｓ  Ｉｎｔｅｒｆａｃｅ  Ｕｎｉｔ）６を介してデータバス４とアドレスバス５とに接続されている。データバス４とアドレスバス５とは、図ではメインメモリ３に接続されている。データバス及びアドレスバスには、メインメモリ以外の外部デバイスに接続される構成も可能であるが、本明細書では省略している。また、半導体装置の集積度の向上に伴い、データバス、アドレスバス及びメインメモリをマイクロプロセッサと同一の基板上に形成しても良い。
【００１６】
前記マイクロプロセッサは、前述したＢＩＵ６の他、データキャッシュ７、命令キャッシュ８、中央処理装置（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１、浮動小数点演算ユニット（ＦＰＵ：Ｆｌｏａｔｉｎｇ Ｐｏｉｎｔ Ｕｎｉｔ）２及びクロックパルスジェネレータ（ＣＰＧ：Ｃｌｏｃｋ  Ｐｕｌｓｅ  Ｇｅｎｅｒａｔｏｒ）１８とを有する。マイクロプロセッサは、前記以外に、メモリを制御するためのＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｅｒ）等を有することも可能であるが、本明細書及び図面では省略している。
【００１７】
マイクロプロセッサ内に形成されているＦＰＵは、浮動小数点の演算を集中的に処理するためのコプロセッサである。但し、マイクロプロセッサ内に形成されるコプロセッサは、ＦＰＵに制限されることはなく、ＦＰＵ以外、ＤＳＰ等のように、ＣＰＵの処理を補完するための専用処理回路であればよい。更に、専用処理回路に限定されることも無く、複数ＣＰＵで構成されたマイクロプロセッサにおけるそれぞれのＣＰＵであってもよい。本明細書では、複数のＣＰＵで構成されたマイクロプロセッサにおけるＣＰＵについても、本発明の趣旨を逸脱しない範囲で、コプロセッサと称することとする。また、図１では、ＣＰＵとコプロセッサであるＦＰＵとは同一の半導体基板上に形成されていることになっているが、コプロセッサを別チップで構成することも可能である。コプロセッサを別チップで構成した場合、チップが複数となり実装効率は低下するが、ＣＰＵと同一基板上にコプロセッサを形成するための半導体装置の設計の必要が無く、既存のコプロセッサチップをＣＰＵに接続することが可能となり生産が容易となる。本明細書では、便宜上、コプロセッサを別チップとした場合でも、ＣＰＵチップとコプロセッサチップとを併せてマイクロプロセッサと呼称するものとする。
【００１８】
メインメモリ３はプログラム及びデータを格納している。データバス４は、マイクロプロセッサとメモリ間で行われるデータ転送の経路となる。アドレスバス５は、マイクロプロセッサとメモリとがデータの転送を行う際、マイクロプロセッサからメモリ等へ、アドレスを転送する際の経路となる。ＢＩＵ６はメインメモリや外部デバイスと間のアドレス及びデータ転送の制御を行う。データキャッシュ７は、マイクロプロセッサ内のＣＰＵ及びＦＰＵで処理される或いは処理されたデータを格納する。命令キャッシュ８は、ＣＰＵ及びＦＰＵで実行される命令を格納する。ＣＰＧ１８は、ＣＰＵ及びＦＰＵの動作クロックを生成する。
【００１９】
以下、ＣＰＵ１とＦＰＵ２の具体的な構成について示す。ＣＰＵは命令ＩＡを受け取り、命令レジスタ１０に命令を格納する。ＦＰＵも同様に、命令キャッシュから命令ＩＡを受取、命令レジスタ１１に命令を格納する。ＣＰＵの命令とＦＰＵの命令とは、同一の命令キャッシュに記憶されている。命令キャッシュから出力される命令は、ＣＰＵ側の命令レジスタとＦＰＵ側の命令レジスタとに並列に供給される。それぞれのレジスタへと分岐する方法については、分岐手段で行うことが可能である。単なる半導体基板上の金属やシリコン化合物で形成された配線をそれぞれ同じ幅で分岐するなどの方法があるが、特に制限されない。ＣＰＵ命令レジスタ１０及びＦＰＵ命令レジスタ１１は、ＣＰＧ１８で生成されたＣＬＫ１の立上がりで変化するエッジトリガラッチである。但し、図面で示している如く、命令キャッシュとＦＰＵ側の命令レジスタとの間には、本発明の特徴である無効化回路９が形成されている。無効化回路については後述する。図面では、命令レジスタ１０及び無効化回路とは命令キャッシュからの命令を受ける構成となっているが、特に制限されることなく、直接メインメモリから命令を受ける構成でも良い。更には、メインメモリ以外から命令を受ける構成であっても良い。また、ＦＰＵの命令レジスタ１１はＣＰＵ内に形成されているが、ＦＰＵ内に形成してもよい。ＩＰとして、ＦＰＵをＣＰＵと同一の半導体基板上に形成する場合、或いは別チップとしてＦＰＵをＣＰＵに接続する場合において、組み込むＦＰＵに命令レジスタが形成されているかされていないかによって異なる。また、無効化回路もＣＰＵ側に形成されているが、ＦＰＵ以外のコプロセッサをＣＰＵに接続した場合、或いは従前とは異なるＦＰＵを接続した場合、無効化回路がＣＰＵ内にあれば、導入するＦＰＵの内部回路の変更が不要となり、導入が容易となる。一方、ＦＰＵを提供することを考えると、提供するＦＰＵに無効化回路があればＣＰＵ側の回路変更が不要となる。つまり、無効化回路をＣＰＵ或いはコプロセッサの何れに形成するかは、設計及び顧客との関係等により変更することが可能である。但し、無効化回路とレジスタとがＦＰＵ内に形成された場合、供給される命令はＣＰＵを経由しないと言うことも可能だが、その場合についても、本明細書では便宜上、ＣＰＵを経由してＦＰＵに供給される、と見なす。また、ＦＰＵがメモリから命令を受ける際、無効化回路を通してレジスタ１１に命令がフェッチされる構成となっているが、無効化回路とレジスタ１１の順序は逆であってもよい。但し、命令レジスタの前に無効化回路を設けることで有利な点はあるが、それについては後述する。前述した如く、ＣＰＵとＦＰＵとの何れに無効化回路及びレジスタが形成されているかによってその構成は変更することが可能である。
【００２０】
ＣＰＵ命令レジスタ１０にフェッチされた命令はＣＰＵ内の整数デコーダ１２に送られ、命令のデコードが行われる。整数デコーダ１２は、整数レジスタ１４のリード／ライト制御信号を出力する。また、整数デコーダ１２の出力制御信号はラッチ手段１３でラッチされ、演算を行うＡＬＵ１６に対して演算処理のための制御信号として出力される。又、ＣＰＵと無関係の命令例えば、ＮＯＰ（ＮｏＯｐｅｒａｔｉｏｎ）命令では、低消費電力のためＡＬＵの入力ラッチ１５と出力ラッチ１７とが更新されないよう制御される。具体的には、ＮＯＰ命令が整数デコーダ１２に入力された場合、整数デコーダ１２は、ＡＬＵの入力ラッチ１５、出力ラッチ１７に対し、クロックイネーブル信号“０”（“０”はディスエーブルの意味）を出力し、クロックを停止することによりラッチ更新を防ぐ。一方、ＦＰＵ命令レジスタ１１にフェッチされた命令はＣＰＵモジュールからＦＰＵモジュールに送られ、浮動小数点デコーダ１９によって命令のデコードが行われる。浮動小数点デコーダ１９は、浮動小数点レジスタ２１のリード／ライト制御信号ＣＡを出力する。浮動小数点データや浮動小数点演算結果を保持する浮動小数点レジスタ２１は、制御信号ＣＡに従って、データＩｎＡがラッチ２２に出力され、ラッチされる。ラッチ２２にラッチされたデータは演算部である浮動小数点データパス２３に入力される。また、浮動小数点デコーダ１９より出力される制御信号は、ラッチ２０にてラッチされ、ラッチ２０は浮動小数点データパスの制御信号ＣＢを出力する。ラッチ２２と２０とは、ＣＰＧ１８によって出力されるＣＬＫ２の立上がりで変化するエッジトリガラッチである。浮動小数点データパス２３はラッチ２２より出力される浮動小数点演算のためのデータを入力し、浮動小数点演算の結果としての出力ＯＡは、ラッチ２４にラッチされる。ラッチ２４はＣＬＫ１の立上がりで変化するエッジトリガラッチである。ラッチ２４の出力ＯＢはレジスタに２１入力され、演算結果がレジスタに書き込まれる。データパス入力ラッチ２２とデータパス出力ラッチ２４とはそれぞれ、ラッチのイネーブル信号ＥＡまたはＥＢによってラッチの更新が制御される。ラッチのイネーブル信号ＥＡ、ＥＢは、それぞれ浮動小数点デコーダ、浮動小数点デコーダラッチ出力から生成される。浮動小数点デコーダに入力される命令がＮＯＰ命令の場合は、デコードにより、ＥＡ＝ＥＢ＝０を出力し、クロック信号とのＡＮＤにより、浮動小数点データパス入出力ラッチへのクロック供給を停止する。ＮＯＰ命令以外の場合は、ＥＡ＝ＥＢ＝１を出力し、浮動小数点データパス入出力ラッチのクロックは供給される。上述した整数デコーダ及び浮動小数点デコーダは、一般的には命令デコーダと呼ばれるデコーダである。命令デコーダとは、一般的には、命令レジスタからの命令を受け、演算器及び演算器に入力されたり演算器から出力するデータをラッチするラッチ回路等の装置を制御するための信号を生成するものである。
【００２１】
以下、本発明の特徴となる、上述したＣＰＵモジュール内の無効化回路９についての説明を行う。命令キャッシュから読み出される命令は、上述した通り、ＣＰＵ命令レジスタ１０とにフェッチされると同時にＦＰＵの命令無効化回路に入力される。その際、ＣＰＵに対してのみ関係する命令であり、ＦＰＵには無関係の命令が命令キャッシュから読み出された場合、無効化回路９はＦＰＵ命令レジスタに対してＮＯＰ命令を出力する。つまり、ＦＰＵに関係のない命令の場合、ＦＰＵ命令レジスタにはＮＯＰ命令がフェッチされることとなる。ＦＰＵに無関係の命令が連続して命令キャッシュから送られてくる際、ＦＰＵ命令レジスタには常にＮＯＰ命令がフェッチされる。それにより、ＦＰＵモジュールの浮動小数点デコーダ１９は、ＦＰＵに無関係の命令がＣＰＵで処理されている間、連続したＮＯＰ命令のデコードのみを行うこととなる。つまり、デコーダでのスイッチング動作が行われないため、スイッチングによる貫通電流が流れることなく、低消費電力化を達成できる。
【００２２】
更に、ＮＯＰ命令では浮動小数点データパスの入力ラッチ２２と出力ラッチ２４が更新されないようラッチのイネーブル信号ＥＡ又はＥＢを用いて制御されるため、ＮＯＰ命令が連続すると、デコードの制御信号ＣＡとＣＢが一定となり、ラッチはスイッチングを行わない。また、データパスの入出力ラッチが更新されないため、データパスの入出力データＩｎＢとＯＢは不変となる。このとき、入力データと制御信号が変化しないので、データパス部でスイッチングを行わず、低消費電力化が可能となる。
【００２３】
図２では、図１の命令キャッシュからＣＰＵに出力される命令コード列の一例を示している。図示された命令コード列を用いて浮動小数点命令レジスタに接続される命令無効化回路の動作を示す。図２の命令コード列では、整数命令（ＣＰＵ命令）と浮動小数点演算命令（ＦＰＵ命令）が混在している。命令キャッシュからは図示された如く、ＣＰＵ命令とＦＰＵ命令とが混在した状態で順次ＣＰＵに送られてくる。上述した命令無効化回路は、命令キャッシュから送られてくる図２に示している命令コード列の中から、ＦＰＵに無関係な命令を無効ＮＯＰ命令に置き換える。置き換えられた命令コード列を図３に示している。つまり、図１のＣＰＵ命令レジスタ１０には図２に示されている命令コード列が入力され、図１のＦＰＵ命令レジスタ１１には図３の命令コード列が入力されることとなる。図２の命令コード列の１番目、４番目のＦＰＵ命令はそのままＦＰＵ命令レジスタに出力され、他のＣＰＵ命令は均一なＮＯＰ命令に置き換えられＦＰＵ命令レジスタに出力される。
【００２４】
図４には、入力された命令を処理する命令無効化回路の具体的な構成例を示す。命令キャッシュから送られてくる命令のそれぞれが図示されている命令コードのフォーマットで記載されているとする。命令コード内の２つの斜線部分のそれぞれが、条件Ａと条件Ｂとを同時に満たしている場合に、その命令がＦＰＵ命令であると仮定する。命令無効化回路に命令コード４０１が入力された場合、２つの斜線部分が条件Ａ及び条件Ｂを満たしているか否かを比較器４０２、４０３で比較する。比較器出力をＡＮＤゲート４０４により論理和することで、入力された命令コード４０１がＦＰＵ命令であるか否かを判定する。条件Ａ及び条件Ｂとが共に成立した時はセレクタ４０５で命令無効化回路に入力された命令コード４０１が選択され、命令無効化回路の出力としてＦＰＵ命令レジスタに出力される。条件Ａ及び条件Ｂが成立しない時は、入力された命令がＦＰＵには関係の無い命令と判断され、命令無効化回路はＦＰＵ命令レジスタに対してＮＯＰ命令を出力する。一方、命令フォーマットによっては、命令コードの１ビットの参照で、ＦＰＵ命令かどうか判定できる場合がある。この場合は図４の比較器が不要であり、ＦＰＵ命令であるか否かを示す１ビットをセレクタの制御信号とすることで、命令無効化回路が構成できる。命令を処理する無効化回路の構成については、マイクロプロセッサの命令コードの中の、ＦＰＵを制御する命令の形態によって拘束されることとなるが、本発明の趣旨を逸脱しない範囲で様々な変更例が考えられる。
【００２５】
ところで、本実施形態では、命令無効化回路が命令キャッシュと命令レジスタとの間に形成されているが、特に制限される訳ではない。例えば、命令無効化回路を浮動小数点デコーダの中に形成することも可能である。この場合、図１の無効化回路９は浮動小数点デコーダ１９の中に形成されることとなる。この場合も無効化回路は、デコードに先立って、命令コード４０１の所定ビットをもとに、デコードに入力された命令がＦＰＵ命令か否かを判断し、入力された命令がＦＰＵ命令であれば入力された命令をデコードしてＦＰＵでの演算を行う。一方、所定ビットにより、入力された命令がＦＰＵ命令では無いと判断した場合は、命令デコード手段に対してＮＯＰ命令を出力する。
【００２６】
図５にタイミングチャートを用いて、図１の命令無効化回路による浮動小数点演算ユニットの電力削減機構を示す。命令キャッシュからフェッチされる命令列は図２と同一とする。まず、浮動小数点命令での動作を説明する。浮動小数点無効化回路の入力をＩＡ、出力をＩＢとする。無効化回路によって、ＣＰＵ命令はＮＯＰ命令に置き換えられ、ＦＰＵ命令はそのまま出力されるので、ＩＢは図３と同じ命令列となる。ＦＰＵ命令レジスタ１１はＩＢを入力とし、命令コードＩＣを出力する。ＩＣがＦＰＵ１命令のとき（ｔｉｍｅ＝３：図５の３）、浮動小数点デコーダ１９は、浮動小数点レジスタ、浮動小数点データパス回路でＦＰＵ１演算を行うようｔｉｍｅ＝３で制御信号ＣＡとしてＦＰＵ１命令用制御信号ｆｐｕ＿ｃｏｎｔ１を出力する。制御信号ＣＡがｆｐｕ＿ｃｏｎｔ１のとき、ｔｉｍｅ＝３で浮動小数点レジスタ２１から入力データｉｎｐｕｔ１が読み出され、ラッチ２２に出力される。また、浮動小数点データパス制御信号ＣＢは、制御信号ラッチ２０でラッチされた後、ＦＰＵ１命令用制御信号ｆｐｕ＿ｃｏｎｔ１が出力される。浮動小数点のデータパスの入力ラッチ２２のイネーブル信号ＥＡ＝１と出力ラッチ２４のイネーブル信号ＥＢ＝１となることから、ｔｉｍｅ＝４で入力ＩｎＢがｉｎｐｕｔ１で、浮動小数点データパス回路でＦＰＵ１演算が行なわれ、出力ラッチ２４で結果ｏｕｔｐｕｔ１をラッチし、ｔｉｍｅ＝５でＯＢとして出力する。
【００２７】
次に、ＦＰＵにおけるＣＰＵ命令での動作を説明する。浮動小数点無効化回路の入力をＩＡ、出力をＩＢとすると、図３と同様にＩＢではＣＰＵ命令がＮＯＰ命令に置き換わる。浮動小数点命令レジスタ１１はＩＢを入力とし、命令コードＩＣを出力する。ＩＣがＮＯＰ命令のとき（ｔｉｍｅ＝５）、浮動小数点デコーダ１９は制御信号ＣＡとして、演算を行なわない制御信号ｃｏｎｔ＿ＮＯＰをｔｉｍｅ＝５で出力する。制御信号ＣＡにより浮動小数点レジスタファイル２１からＩｎＡが読み出され、ラッチ２２の入力となる。制御信号ＣＡがｃｏｎｔ＿ＮＯＰのとき、ＮＯＰ命令の命令コードからレジスタ値が読み出され、入力値はｉｎｐｕｔ＿ＮＯＰとなる。浮動小数点データパスの入力ラッチ２２のクロック信号はＣＰＧからのＣＬＫ２とイネーブル信号ＥＡとのＡＮＤとなり、演算に無関係なラッチは更新されない。ＮＯＰ命令の場合は制御信号ＣＡがｃｏｎｔ＿ＮＯＰでＥＡ ＝０となり、ラッチ２２出力すなわちＩｎＢは更新されない。
【００２８】
つまり、ＮＯＰ命令の場合（ｔｉｍｅ＝６〜９）、ラッチ２２の出力ＩｎＢは、ＦＰＵ１命令と同じくｉｎｐｕｔ１である。ラッチ２０は常に更新されるため、浮動小数点データパス制御信号ＣＢは、ＮＯＰ命令の場合ｃｏｎｔ＿ＮＯＰを出力する。浮動小数点データパス回路２３は入力はＩｎＢ、制御信号はＣＢなので、入力はｉｎｐｕｔ１であり、ｔｉｍｅ＝４のＦＰＵ1命令と共通であるが、制御信号がｆｐｕ＿ｃｏｎｔ１からｃｏｎｔ＿ＮＯＰと異なるため、出力ＯＡはｔｉｍｅ＝６〜９でｏｕｔｐｕｔ１＊となる。浮動小数点データパスの出力ラッチ２４のクロック信号はＣＬＫ１とイネーブル信号ＥＢとのＡＮＤなので、浮動小数点データパス入力ラッチ２２と同様に、演算に無関係なラッチは更新されない。ＮＯＰ命令中は、ｔｉｍｅ＝６〜９でＥＢ＝０で更新されずラッチ２４の出力ＯＢはｏｕｔｐｕｔ１で不変である。
【００２９】
以上のようにＣＰＵ命令が連続すると、無効化回路で連続するＮＯＰ命令に置き換えられ、浮動小数点データパス入力ＩｎＢとデータパス制御信号ＣＢが一定となり、データパス回路のスイッチングが行なわれない。また、浮動小数点デコーダ入力ＩＣが一定となり、浮動小数点デコーダと浮動小数点レジスタのスイッチングが行なわれない。このため、データパス回路、浮動小数点デコーダと浮動小数点レジスタの消費電力を削減することができる。ＦＰＵ命令とＣＰＵ命令が交互に並ぶ場合でも、浮動小数点データパス入出力ラッチ２２、２４のスイッチング回数が減少し、消費電力が削減される。
【００３０】
本発明の命令無効化回路は、命令レジスタの前段に置けばよく、ＦＰＵの内部を変更することがない。
【００３１】
図６には、本発明の別の実施形態を示している。ここでの実施形態では、命令無効化回路を図１のデコード方式に換えて、無効制御レジスタによる構成としている。具体的には、浮動小数点演算ユニット（ＦＰＵ：Ｆｌｏａｔｉｎｇ Ｐｏｉｎｔ Ｕｎｉｔ）を持つマイクロプロセッサについて、無効制御レジスタを用いた命令無効化回路による浮動小数点演算ユニットの電力削減機構の構成をとっている。図６に示す実施例の特徴とするところは、図１に示す構成に対して、モジュール単位で有効/無効を決定する無効制御レジスタを備え、無効化回路を制御することにある。無効制御レジスタ５１に無効（１）と設定されたモジュールの命令コード無効化回路９をアクティブにする。無効制御レジスタをソフトウェアで書き換えられるようにすれば、ソフトウェアでモジュール単位で命令コード無効化を設定できる。図１の実施形態と図６の実施形態との相違点は、図１の実施形態がＦＰＵモジュールに無関係な命令を検出し、モジュールに無関係な命令をＮＯＰ命令に置き換え、命令レジスタの入力とするのに対し、図６の実施形態では、無効制御レジスタに無効と設定されたモジュールは命令コードを無条件にＮＯＰ命令に置き換え、命令レジスタの入力とすることである。
【００３２】
図７には、図６の実施形態の命令無効化回路の構成例を示す。命令キャッシュより命令コード７０２を入力、無効制御レジスタ７０１出力をセレクタ制御信号とし、無効制御レジスタでモジュールが無効（１）と設定された場合、セレクタ７０３でＮＯＰ命令が選択され、モジュールが有効（０）と設定された場合、命令コードが選択され、命令無効化回路出力７０４となる。他の回路構成は図１と同様であり、タイミングチャートは図５と同様である。図６の実施形態は、図１の実施形態に対し、命令無効化回路は簡易となるが、無効命令レジスタを変更するためのオーバーヘッドが増加する。もちろん、図６の実施形態と図１の実施形態とを組み合わせた構成とすることも可能である。具体的には、無効制御レジスタでモジュールを無効と設定した場合は、図６の実施形態の如く、無条件にＮＯＰ命令を対象のモジュールに出力する。一方、無効制御レジスタでモジュールを有効と設定した場合も、図１の実施形態の如く、対象となるモジュールに関係のない命令に関してはＮＯＰ命令を対象となるモジュールに出力する。この構成であれば回路構成は複雑となるが、きめの細かい低消費電力制御が可能となる。
【００３３】
図８には、本発明の第三の実施形態として、コプロセッサ７１を持つマイクロプロセッサを示している。図８に示す実施例の特徴とするところは、図１に対して、ＣＰＵモジュール内にコプロセッサ用デコーダ１９を備えていることである。無効化回路は、コプロセッサ７１と無関係な命令をＮＯＰ命令に置き換え、コプロセッサ用のデコーダに出力する。コプロセッサに関係の無い命令、つまりＮＯＰ命令が連続することで、デコーダの消費電力は削減される。更に、コプロセッサ回路６２の制御信号を一定とし、コプロセッサのラッチ６１を更新しないことで、ラッチ６１のスイッチング回数が減少し、電力を削減することも可能である。コプロセッサ用無効化回路は図４と同様に構成できる。本実施形態は、コプロセッサモジュールの中に命令のデコーダを設けていないため、ＩＰとしてコプロセッサを導入する際、第１の実施形態に比べて、ＩＰの選択の幅が広がる。
【００３４】
図９には本発明の第四の実施例を示す。図９に示す実施例の特徴とするところは、コプロセッサ７１を持つ図８のマイクロプロセッサに対して、モジュール単位で有効/無効を決定する無効制御レジスタを備え、無効化回路を制御することである。無効化回路は図７と同様に構成できる。図８に対して命令無効化回路は簡易となるが、無効命令レジスタを変更するためのオーバーヘッドが増加する。
【００３５】
図１０には別の実施形態を示している。上述した何れの実施形態においても、無効化回路は、ＮＯＰ命令を出力するとしているが、命令としてのＮＯＰ命令でなくても可能である。具体的には、レジスタ１１に供給されるクロックを停止させることで達成することも可能である。ＮＯＰ命令を出力する代わりに、レジスタ１１のクロック供給を停止したとしても、デコーダに供給される命令は変化しなくなる。つまり、無効化回路に入力された命令がＦＰＵに無関係な命令であった場合、制御回路に対して制御信号を出力する。制御回路は、前記制御信号が入力されることで、レジスタ１１に供給されるクロックを停止する。それにより、デコーダに供給される命令は固定され、デコーダ内でのスイッチング回数は減少し、デコーダでの消費電力は削減される。その際、ＮＯＰ命令がデコーダに入力された場合にはクロックの供給が停止されるレジスタ２０，２２，２４に対して、ＮＯＰ命令がデコーダに供給されたのと同じ状態にするため、レジスタ２０，２２，２４に供給するクロックを停止させることも可能である。これにより、レジスタ２０，２２，２４での消費電力の低減が可能となる。制御回路は、ＣＰＧ１８とレジスタ及び各ラッチとの間に設けられている。制御回路は、ＦＰＵモジュール側に設けているが、勿論ＣＰＵ側に設けることも可能である。
【００３６】
更に、図示はしていないが、更なる実施形態も可能である。例えば、ＦＰＵとは無関係な命令がＦＰＵに入力された場合、デコーダに供給する命令を遮断することも可能である。具体的には、デコーダの前段に遮断回路を設け、ＦＰＵとは無関係な命令が無効化回路に入力された場合、遮断回路によりデコーダとレジスタ或いはレジスタと無効化回路とを開放する方法も考えられる。この方法だと、より確実にデコーダの動作を停止させることが可能となる。更に、前記遮断回路を命令レジスタの手前に設けることで、命令レジスタでの消費電力も削減できる。また、本実施形態では、命令の一つとしてのＮＯＰ命令に特筆しているが、命令としてのＮＯＰに特定される訳ではない。例えば、ＦＰＵ命令とは無関係な命令が無効化回路に入力された場合、選択手段により、全てが“１”のコードをデコーダに供給することも可能である。この場合も、デコーダでのスイッチング回数は削減され、デコーダでの消費電力低減が可能となる。勿論、“１”以外に“０”も可能であるし、その他の特定のコードでも可能である。また、ＦＰＵの命令コードを参照して、ＦＰＵ以外の命令が入力された場合にデコードを固定する際、スイッチング回数が最も削減されるコードをシミュレーション等で計算し、そのコードを無効化回路によってデコーダに供給することも可能である。この方だと、デコーダでの電力削減効果がより大きくなる。
【００３７】
上述した実施形態においては、命令無効化回路をコプロセッサのデコーダ前、具体的にはＦＰＵモジュール側に設けているが、無効化回路をＣＰＵ側のデコーダの前段に設けることも可能である。これにより、ＣＰＵに無関係の命令つまりコプロセッサ命令によりコプロセッサが処理している間、ＣＰＵ命令レジスタに対してＮＯＰ命令を供給することが可能となり、ＣＰＵの整数デコーダでのスイッチング回数を削減でき、ＣＰＵの消費電力削減を実現することも可能となる。併せて、ＣＰＵ側のデータパスのラッチを固定することで一層の電力削減効果が期待できる。また、上述の方法とコプロセッサのデコーダのデコードを停止させる方法とを組み合わせることで更なる電力削減が可能となる。また、複数のＣＰＵと複数のコプロセッサとの組合せにより構成されたマイクロプロセッサにおいて、複数存在する命令デコーダに、本発明の無効化回路を設けることで、それぞれの処理装置の電力削減が可能となり、全体としての電力削減が達成できる。また、単一のＣＰＵについても本発明を応用することは可能である。
【００３８】
また、本実施形態では、ＮＯＰ命令等が連続することで、デコーダでのスイッチングを停止させることを記載しているが、処理装置に無関係な命令が入力される場合に比べてスイッチングの回数が減少する場合も含むものである。演算器に関係の無い命令が連続して無効化回路に入力された場合、一つ目の命令をＮＯＰ１命令へ、２つ目の命令をＮＯＰ２命令へ、３つ目の命令をＮＯＰ３へと変換し、４つ目の命令を再びＮＯＰ１命令へと変換させる等の方法により、デコーダの少しのトランジスタを動作させたとしても、それらの命令により、無関係な命令がデコーダに入力され場合に比べて電力削減の効果が期待できる。つまり、前述した命令も、実質的に本明細書で記すＮＯＰ命令であると考えられる。勿論、前述したＮＯＰ命令に準ずる“１”、“０”或いは、コプロセッサの命令を基に決定された命令などの固定された命令についても同じである。
【００３９】
以上、本発明の具体的な実施形態を述べてきたが、それらに制限される訳ではない。デコーダでの電力削減との本発明の思想を逸脱しない範囲で様々な実施形態が考えられる。
【００４０】
更に、上記に示したマイクロプロセッサを、携帯電話やＰＤＡ、モバイルコンピュータなどの、電池で駆動される場面のある携帯電子機器に搭載することで、携帯電子機器の消費電力が低減され、電池の使用可能時間が延び、携帯電子機器の利便性が向上する。
【００４１】
【発明の効果】
以上説明したように、ＦＰＵを持つマイクロプロセッサにおいて、本発明の無効化回路によって、ＦＰＵと無関係な命令列を均一なＮＯＰ命令等に置き換えてＦＰＵに供給する。これにより、ＦＰＵと無関係な命令の場合、ＮＯＰ命令がＦＰＵの命令デコーダに供給され、浮動小数点デコーダを構成しているトランジスタのスイッチング回数を削減し、消費電力の低減化が実現できる。同様に、コプロセッサを持つプロセッサにおいて、本発明の無効化回路によりコプロセッサの消費電力を低減できる。ＣＰＵにおいても、ＣＰＵ命令デコーダの前段に命令無効化回路を備えることにより、ＣＰＵと無関係な命令、例えば浮動小数点演算命令をＮＯＰ命令に置き換えることができ、同様の理由で、ＣＰＵの命令デコーダで消費電力を削減できる。これらの命令無効化回路は、ＦＰＵあるいはコプロセッサの内部を変更する必要のない付加回路で構成することも可能である。新規設計の検証工数を削減するだけでなく、既存回路にも適用が可能である。
【００４２】
更に、上記マイクロプロセッサを携帯情報機器等のマイクロプロセッサシステムに組み込むことで、携帯電子機器等の低消費電力化が可能である。
【図面の簡単な説明】
【図１】本発明の第一の実施例を示す低電力マイクロプロセッサの構成図である。
【図２】本発明の無効化回路の入力となる命令列を示す図である。
【図３】本発明の無効化回路の出力となる命令列を示す図である。
【図４】本発明の無効化回路の構成図である。
【図５】図１に示す構成のタイミングチャート図である。
【図６】本発明の第二の実施例に係わる無効制御レジスタを用いた無効化回路を有する低電力マイクロプロセッサの構成図である。
【図７】本発明の無効制御レジスタを用いた無効化回路の構成図である。
【図８】本発明の第三の実施例に係わる無効化回路を有する低電力マイクロプロセッサの構成図である。
【図９】本発明の第四の実施例に係わる無効制御レジスタを用いた無効化回路を有する低電力マイクロプロセッサの構成図である。
【図１０】本発明の第５の実施例に係わる無効化回路を有する低電力マイクロプロセッサの構成図である。
【符号の説明】
１０１：マイクロプロセッサ
１：ＣＰＵ、２：ＦＰＵ
３：メインメモリ、４：データバス、５：アドレスバス、６：ＢＩＵ
７：データキャッシュ、８：命令キャッシュ
９：命令無効化回路
１０：ＣＰＵ用命令レジスタ、１１：ＦＰＵ用命令レジスタ
１２：整数デコーダ、１３：整数デコーダ用ラッチ、
１４：整数レジスタファイル、１５：ＡＬＵ入力ラッチ、１６：ＡＬＵ
１７：ＡＬＵ出力ラッチ
１８：ＣＰＧ
１９：浮動小数点デコーダ
２０：浮動小数点デコーダ用ラッチ、２１：浮動小数点レジスタファイル
２２：浮動小数点データパス入力ラッチ
２３：浮動小数点データパス回路
２４：浮動小数点データパス出力ラッチ
５１, ７０１：無効制御レジスタ
６１：コプロセッサ用ラッチ
６２：コプロセッサ回路
７１：コプロセッサ
４０１, ７０２：命令コード
４０２, ４０３：比較器
４０４        ：ＡＮＤゲート
４０５, ７０３：２入力セレクタ
４０６, ７０４：無効化回路出力。
【図１】
0003705022.tif 000002
【図２】
0003705022.tif 000003
【図３】
0003705022.tif 000004
【図４】
0003705022.tif 000005
【図５】
0003705022.tif 000006
【図６】
0003705022.tif 000007
【図７】
0003705022.tif 000008
【図８】
0003705022.tif 000009
【図９】
0003705022.tif 000010
【図１０】
0003705022.tif 000011