(57)【要約】【課題】データ処理装置における消費電力を削減する。【解決手段】外部入力のクロックＣＬＫを受けて、設定クロック数格納レジスタ（ＣＳＲ）３１、３２、３３に格納されている設定クロック数に対応するクロックＣＬＫ１、ＣＬＫ２、ＣＬＫ３をそれぞれ命令フェッチブロック（ＩＦＢ）１、命令デコードブロック（ＤＥＣＢ）４、命令実行ブロック（ＥＸＢ）７に供給するクロック制御回路（ＣＣＣ）２４、２５、２６と、各ＣＳＲに格納されている設定クロック数のうちの最大値を判定し、この最大値を各ブロックに供給する最大設定クロック数判定回路（ＭＳＣＲ）４１とが設けられ、このＭＳＣＲからの出力信号によって、パイプラインの１サイクルの周期が決定される。【選択図】　図１
2004094403.tif 000002
【特許請求の範囲】
【請求項１】
パイプラインで制御される複数の機能ブロックを有するデータ処理装置であって、
前記複数の機能ブロックのそれぞれは、１つの機能処理に応じて設定されるクロック数を格納する設定クロック数格納レジスタを含み、
前記データ処理装置は、
外部から入力されるクロックを受けて、前記設定クロック数格納レジスタに格納されている設定クロック数に対応するクロックを前記複数の機能ブロックのそれぞれに供給する複数のクロック制御回路と、
前記設定クロック数格納レジスタに格納されている設定クロック数のうちの最大値を判定し、該最大値を前記複数の機能ブロックに供給して、パイプラインの１サイクルの周期を決定する最大設定クロック数判定回路とを備えたことを特徴とするデータ処理装置。
【請求項２】
パイプラインで制御される複数の機能ブロックを有するデータ処理装置であって、
前記複数の機能ブロックのそれぞれは、１つの機能処理に応じて設定されるクロック数を格納する設定クロック数格納レジスタを含み、
前記データ処理装置は、
外部から入力されるクロックを受けて、前記設定クロック数格納レジスタに格納されている設定クロック数に対応するクロックを前記複数の機能ブロックのそれぞれに供給する複数のクロック制御回路と、
外部から供給される電源電圧を受けて、前記複数の機能ブロックのそれぞれに、前記設定クロック数格納レジスタに格納されている設定クロック数に対応したクロックが供給される期間は、前記外部から供給される電源電圧と同じ電圧値に制御され、パイプラインの１サイクル期間のうちクロックが供給されない期間は、前記外部から供給される電源電圧よりも低い電圧値に制御された電源電圧を供給する複数の電圧制御回路と、
前記設定クロック数格納レジスタに格納されている設定クロック数のうちの最大値を判定し、該最大値を前記複数の機能ブロックに供給して、パイプラインの１サイクルの周期を決定する最大設定クロック数判定回路とを備えたことを特徴とするデータ処理装置。
【請求項３】
前記データ処理装置は、前記複数の電圧制御回路に対して設定される電圧値が格納された複数の電圧制御有効フラグレジスタを備えたことを特徴とする請求項２記載のデータ処理装置。
【請求項４】
前記複数のクロック制御回路は、前記設定クロック数格納レジスタに格納されている設定クロック数に対応する分周比で、前記外部から入力されるクロックを分周して出力することを特徴とする請求項３記載のデータ処理装置。
【請求項５】
パイプラインで制御される、命令デコードブロックを含む複数の機能ブロックを有するデータ処理装置であって、
前記複数の機能ブロックのそれぞれは、１つの機能処理に応じて設定されるクロック数を格納する設定クロック数格納レジスタを含み、
前記命令デコードブロックは、デコード中の命令を実行するのに必要な実行クロック数を判定する実行クロック数判定回路を含み、
前記データ処理装置は、
外部から入力されるクロックを受けて、前記設定クロック数格納レジスタに格納されている設定クロック数に対応するクロックを前記複数の機能ブロックのそれぞれに供給する複数のクロック制御回路と、
外部から供給される電源電圧を受けて、前記複数の機能ブロックのそれぞれに、前記設定クロック数格納レジスタに格納されている設定クロック数に対応したクロックが供給される期間は、前記外部から供給される電源電圧と同じ電圧値に制御され、パイプラインの１サイクル期間のうちクロックが供給されない期間は、前記外部から供給される電源電圧よりも低い電圧値に制御された電源電圧を供給する複数の電圧制御回路と、
前記設定クロック数格納レジスタに格納されている設定クロック数のうちの最大値を判定する最大設定クロック数判定回路と、
前記実行クロック数判定回路により判定された実行クロック数と、前記最大設定クロック数判定回路により判定された設定クロック数の最大値とを比較して、その大きな方の値を選択し、選択された値を前記複数の機能ブロックに供給して、パイプラインの１サイクルの周期を決定する比較選択回路とを備えたことを特徴とするデータ処理装置。
【請求項６】
パイプラインで制御される、命令フェッチブロック、命令デコードブロックおよび命令実行ブロックを含む複数の機能ブロックを有するデータ処理装置であって、
前記複数の機能ブロックのそれぞれは、１つの機能処理に応じて設定されるクロック数を格納する設定クロック数格納レジスタを含み、
前記命令デコードブロックは、デコード中の命令を実行するのに必要な実行クロック数を判定する実行クロック数判定回路を含み、
前記データ処理装置は、
外部から入力されたクロックを受けて、前記複数の機能ブロックのそれぞれに供給するクロックを制御する複数のクロック制御回路と、
外部から入力された電源電圧を受けて、前記複数の機能ブロックのそれぞれに供給する電源電圧を制御する複数の電圧制御回路と、
前記設定クロック数格納レジスタに格納されている設定クロック数のうちの最大値を判定する最大設定クロック数判定回路と、
前記実行クロック数判定回路により判定された前命令までの実行クロック数から、前記最大設定クロック数判定回路により判定された設定クロック数の最大値を減算し、その減算値を残りクロック数として出力する減算器と、
前記減算器からの残りクロック数と前記実行クロック数判定回路により判定された現命令の実行クロック数とを加算する加算器と、
前記加算器による加算値と前記最大設定クロック数判定回路により判定された設定クロック数の最大値とを比較し、その小さい方の値を選択する第１の比較選択回路と、
前記加算器による加算値と前記最大設定クロック数判定回路により判定された設定クロック数の最大値を２倍した値とを比較し、その大きい方に応じた信号を選択出力する第２の比較選択回路とを備え、
前記複数のクロック制御回路は、前記設定クロック数格納レジスタに格納されている設定クロック数に応じたクロックを前記命令フェッチブロックおよび前記命令デコードブロックにそれぞれ供給する第１および第２のクロック制御回路と、前記第１の比較選択回路により選択された小さい方の値に応じたクロックを、次のサイクル期間におけるクロックとして前記命令実行ブロックに供給する第３のクロック制御回路とを含み、
前記複数の電圧制御回路は、前記設定クロック数格納レジスタに格納されている設定クロック数に対応したクロックが供給される期間は、前記外部から供給される電源電圧と同じ電圧値に制御され、クロックが供給されない期間は、前記外部から供給される電源電圧よりも低い電圧値に制御された電源電圧を前記命令フェッチブロックおよび前記命令デコードブロックにそれぞれ供給する第１および第２の電圧制御回路と、前記第１の比較選択回路により選択された小さい方の値に応じたクロックが供給される期間は、前記外部から供給される電源電圧と同じ電圧値に制御され、クロックが供給されない期間は、前記外部から供給される電源電圧よりも低い電圧値に制御された電源電圧を前記命令実行ブロックに供給する第３の電圧制御回路とを含み、
前記第２の比較選択回路は、比較の結果、前記加算器による加算値が前記最大設定クロック数判定回路により判定された設定クロック数の最大値を２倍した値よりも大きい場合、前記命令フェッチブロックおよび前記命令デコードブロックに、現在のサイクル期間における処理を次のサイクル期間まで保持することを示す信号を出力することを特徴とするデータ処理装置。
【請求項７】
前記第２の比較選択回路から、現在のサイクル期間における処理を次のサイクル期間まで保持することを示す信号が出力された場合、前記第１および第２のクロック制御回路はそれぞれ、前記次のサイクル期間において、前記命令フェッチブロックおよび前記命令デコードブロックへのクロックの供給を停止することを特徴とする請求項６記載のデータ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ処理装置における消費電力を削減する技術に関する。
【０００２】
【従来の技術】
図１２は、従来のデータ処理装置の一構成例を示すブロック図である。図１２において、従来のデータ処理装置は、命令フェッチブロック（以下、ＩＦＢと略記する）１と、命令デコードブロック（以下、ＤＥＣＢと略記する）４と命令実行ブロック（以下、ＥＸＢと略記する）７とによって構成されている。ＩＦＢ１内には、フェッチした命令を格納する命令レジスタ（以下、ＩＦＢＲと略記する）２が含まれ、ＩＦＢＲ２からの出力データが信号線３を介してＤＥＣＢ５に入力される。ＤＥＣＢ５内には、ＩＦＢＲ２からの出力データをデコードした信号を格納するデコードレジスタ（以下、ＤＥＣＢＲと略記する）５が含まれ、ＤＥＣＢＲ５からの出力データが信号線６を介してＥＸＢ７に入力される。ＥＸＢ７内にはＤＥＣＢＲ５からの出力データを実行した結果を格納する実行レジスタ（以下、ＥＸＢＲと略記する）８が含まれる。
【０００３】
次に、以上の構成を有するデータ処理装置のパイプライン動作について、図１３を用いて説明する。
【０００４】
図１３は、図１２に示す従来のデータ処理装置における各部の動作を示すタイミングチャートである。図１３において、サイクルＡでは、メモリから命令「１」のフェッチがＩＦＢ１で行われる。
【０００５】
次に、サイクルＢの開始によって、命令「１」の命令コードがＩＦＢＲ２に格納される。同時に、ＩＦＢＲ２の出力データをデコードした命令「１」のデコード信号がＤＥＣＢ４において生成される。また、命令「２」のフェッチがＩＦＢ１で行われる。
【０００６】
次に、サイクルＣの開始によって、命令「１」のデコード信号がＤＥＣＢＲ５に格納され、ＤＥＣＢＲ５の出力データを実行した命令「１」の結果がＥＸＢ７において生成される。同時に、ＩＦＢＲ２の出力データをデコードした命令「２」のデコード信号がＤＥＣＢ４において生成される。また、命令「３」のフェッチがＩＦＢ１で行われる。
【０００７】
次に、サイクルＤの開始によって、命令「１」の実行結果がＥＸＢＲ８に格納され、ＤＥＣＢＲ５の出力データを実行した命令「２」の結果がＥＸＢ７において生成される。同時に、ＩＦＢＲ２の出力データをデコードした命令「３」のデコード信号がＤＥＣＢ４において生成される。また、命令「４」のフェッチがＩＦＢ１で行われる。
【０００８】
以上のように、サイクルＡで命令「１」がメモリからフェッチされ、サイクルＤで命令「１」の実行結果がＥＸＢＲ８に格納される。この一連の処理をパイプラインとして、次々に命令が実行される。
【０００９】
【発明が解決しようとする課題】
連続したパイプライン処理は、図１３に示すように、ＩＦＢ１、ＤＥＣＢ４、ＥＸＢ７のそれぞれが常に動作した場合に処理効率が最も高くなる。しかし、各ブロック全てが動作できない場合が発生する。図１４は、その例を示すタイミングチャートである。
【００１０】
図１４において、メモリから命令をフェッチしてくるＩＦＢ１はクロックＣＬＫの２周期で処理を行う場合を示している。この場合、サイクルＣ、Ｄにおいて、命令「２２」をフェッチするためにクロックＣＬＫの２周期で処理を行うため、命令「１１」に対応する命令コードのＩＦＢＲ２への格納と、命令「２２」に対応する命令コードのＩＦＢＲ２への格納との間に無効なサイクル５１が発生する。また、サイクル５３〜５８も同様に無効なサイクルとなる。この無効なサイクルでも、各ブロックにはクロックＣＬＫ及び電圧が印加され、電力が無駄に消費される、という問題があった。
【００１１】
本発明は、このような問題に鑑みてなされたものであり、その目的は、消費電力の削減を可能としたデータ処理装置を提供することにある。
【００１２】
【課題を解決するための手段】
前記の目的を達成するため、本発明に係る第１のデータ処理装置は、パイプラインで制御される複数の機能ブロックを有するデータ処理装置であって、複数の機能ブロックのそれぞれは、１つの機能処理に応じて設定されるクロック数を格納する設定クロック数格納レジスタ（ＣＳＲ）を含み、データ処理装置は、外部から入力されるクロック（ＣＬＫ）を受けて、設定クロック数格納レジスタに格納されている設定クロック数に対応するクロック（ＣＬＫ１、ＣＬＫ２、ＣＬＫ３）を複数の機能ブロックのそれぞれに供給する複数のクロック制御回路（ＣＣＣ）と、設定クロック数格納レジスタに格納されている設定クロック数のうちの最大値を判定し、該最大値を複数の機能ブロックに供給して、パイプラインの１サイクルの周期を決定する最大設定クロック数判定回路（ＭＳＣＲ）とを備えたことを特徴とする。
【００１３】
この構成によれば、複数の機能ブロックのうち、一番処理の遅い命令フェッチブロックが１つの命令をフェッチするのに要するクロック数に相当するサイクルになるように、処理の速い命令デコードブロックおよび命令実行ブロックに供給するクロックの周期を合わせることで、無効なサイクルが生じて、その間にもクロックを供給する必要がなくなるので、消費電力を削減することができる。
【００１４】
前記の目的を達成するため、本発明に係る第２のデータ処理装置は、パイプラインで制御される複数の機能ブロックを有するデータ処理装置であって、複数の機能ブロックのそれぞれは、１つの機能処理に応じて設定されるクロック数を格納する設定クロック数格納レジスタ（ＣＳＲ）を含み、データ処理装置は、外部から入力されるクロック（ＣＬＫ）を受けて、設定クロック数格納レジスタに格納されている設定クロック数に対応するクロック（ＣＬＫ１、ＣＬＫ２、ＣＬＫ３）を複数の機能ブロックのそれぞれに供給する複数のクロック制御回路（ＣＣＣ）と、外部から供給される電源電圧（ＶＤＩ）を受けて、複数の機能ブロックのそれぞれに、設定クロック数格納レジスタに格納されている設定クロック数に対応したクロックが供給される期間は、外部から供給される電源電圧と同じ電圧値（ＶＤＤ）に制御され、パイプラインの１サイクル期間のうちクロックが供給されない期間は、外部から供給される電源電圧よりも低い電圧値に制御された電源電圧（ＶＤＩ１、ＶＤＩ２、ＶＤＩ３）を供給する複数の電圧制御回路（ＶＣＣ）と、設定クロック数格納レジスタに格納されている設定クロック数のうちの最大値を判定し、該最大値を複数の機能ブロックに供給して、パイプラインの１サイクルの周期を決定する最大設定クロック数判定回路（ＭＳＣＲ）とを備えたことを特徴とする。
【００１５】
この構成によれば、パイプラインの１サイクルの間で、各ブロックにクロックが供給されない期間は、各ブロックに供給する電源電圧を、外部から入力される電源電圧の電圧値よりも低い動作可能な最低電圧に変更することで、第１のデータ処理装置における消費電力の削減効果をさらに高めることができる。
【００１６】
第２のデータ処理装置は、複数の電圧制御回路に対して設定される電圧値が格納された複数の電圧制御有効フラグレジスタを備えることが好ましい。
【００１７】
この構成によれば、各ブロックへの供給電圧を任意に制御することで、システムに応じて消費電力を削減することができる。
【００１８】
第２のデータ処理装置において、複数のクロック制御回路は、設定クロック数格納レジスタに格納されている設定クロック数に対応する分周比で、外部から入力されるクロックを分周して出力することを特徴とする。
【００１９】
前記の目的を達成するため、本発明に係る第３のデータ処理装置は、パイプラインで制御される、命令デコードブロック（ＤＥＣＢ）を含む複数の機能ブロックを有するデータ処理装置であって、複数の機能ブロックのそれぞれは、１つの機能処理に応じて設定されるクロック数を格納する設定クロック数格納レジスタ（ＣＳＲ）を含み、命令デコードブロックは、デコード中の命令を実行するのに必要な実行クロック数を判定する実行クロック数判定回路（ＣＳＣＥＢ）を含み、データ処理装置は、外部から入力されるクロック（ＣＬＫ）を受けて、設定クロック数格納レジスタに格納されている設定クロック数に対応するクロック（ＣＬＫ１、ＣＬＫ２、ＣＬＫ３）を複数の機能ブロックのそれぞれに供給する複数のクロック制御回路（ＣＣＣ）と、外部から供給される電源電圧（ＶＤＩ）を受けて、複数の機能ブロックのそれぞれに、設定クロック数格納レジスタに格納されている設定クロック数に対応したクロックが供給される期間は、外部から供給される電源電圧と同じ電圧値（ＶＤＤ）に制御され、パイプラインの１サイクル期間のうちクロックが供給されない期間は、外部から供給される電源電圧よりも低い電圧値に制御された電源電圧（ＶＤＩ１、ＶＤＩ２、ＶＤＩ３）を供給する複数の電圧制御回路（ＶＤＣ）と、設定クロック数格納レジスタに格納されている設定クロック数のうちの最大値を判定する最大設定クロック数判定回路（ＭＳＣＲ）と、実行クロック数判定回路により判定された実行クロック数と、最大設定クロック数判定回路により判定された設定クロック数の最大値とを比較して、その大きな方の値を選択し、選択された値を複数の機能ブロックに供給して、パイプラインの１サイクルの周期を決定する比較選択回路（ＣＰＳＣ）とを備えたことを特徴とする。
【００２０】
この構成によれば、パイプラインの１つのサイクルにおいて最もクロック数の必要な処理を行うブロックに合わせてサイクルに含まれるクロック数を決定し、そのブロック以外へのクロックは予め設定されたクロック数以外は供給を停止し、また供給クロックを停止している期間では、供給する電源電圧も各ブロックが最低限のパイプライン動作が可能な程度の電圧値にまで落とすことにより、低消費電力化が可能となる。
【００２１】
前記の目的を達成するため、本発明に係る第４のデータ処理装置は、パイプラインで制御される、命令フェッチブロック（ＩＦＢ）、命令デコードブロック（ＤＥＣＢ）および命令実行ブロック（ＥＸＢ）を含む複数の機能ブロックを有するデータ処理装置であって、複数の機能ブロックのそれぞれは、１つの機能処理に応じて設定されるクロック数を格納する設定クロック数格納レジスタ（ＣＳＲ）を含み、命令デコードブロックは、デコード中の命令を実行するのに必要な実行クロック数を判定する実行クロック数判定回路（ＣＳＣＥＢ）を含み、データ処理装置は、外部から入力されたクロック（ＣＬＫ）を受けて、複数の機能ブロックのそれぞれに供給するクロック（ＣＬＫ１、ＣＬＫ２、ＣＬＫ３）を制御する複数のクロック制御回路（ＣＣＣ）と、外部から入力された電源電圧（ＶＤＩ）を受けて、複数の機能ブロックのそれぞれに供給する電源電圧（ＶＤＩ１、ＶＤＩ２、ＶＤＩ３）を制御する複数の電圧制御回路（ＶＣＣ）と、設定クロック数格納レジスタに格納されている設定クロック数のうちの最大値を判定する最大設定クロック数判定回路（ＭＳＣＲ）と、実行クロック数判定回路により判定された前命令までの実行クロック数から、最大設定クロック数判定回路により判定された設定クロック数の最大値を減算し、その減算値を残りクロック数として出力する減算器（ＳＵＢ）と、減算器からの残りクロック数と実行クロック数判定回路により判定された現命令の実行クロック数とを加算する加算器（ＡＤＤ）と、加算器による加算値と最大設定クロック数判定回路により判定された設定クロック数の最大値とを比較し、その小さい方の値を選択する第１の比較選択回路（ＣＰＳＣ）と、加算器による加算値と前記最大設定クロック数判定回路により判定された設定クロック数の最大値を２倍した値とを比較し、その大きい方に応じた信号を選択出力する第２の比較選択回路（ＣＰＳＣ）とを備え、複数のクロック制御回路は、設定クロック数格納レジスタに格納されている設定クロック数に応じたクロック（ＣＬＫ１、ＣＬＫ２）を命令フェッチブロックおよび前記命令デコードブロックにそれぞれ供給する第１および第２のクロック制御回路と、第１の比較選択回路により選択された小さい方の値に応じたクロック（ＣＬＫ３）を、次のサイクル期間におけるクロックとして命令実行ブロックに供給する第３のクロック制御回路とを含み、複数の電圧制御回路は、設定クロック数格納レジスタに格納されている設定クロック数に対応したクロック（ＣＬＫ１、ＣＬＫ２）が供給される期間は、外部から供給される電源電圧（ＶＤＩ）と同じ電圧値（ＶＤＤ）に制御され、クロックが供給されない期間は、外部から供給される電源電圧よりも低い電圧値に制御された電源電圧（ＶＤＩ１、ＶＤＩ２）を命令フェッチブロックおよび命令デコードブロックにそれぞれ供給する第１および第２の電圧制御回路と、第１の比較選択回路により選択された小さい方の値に応じたクロック（ＣＬＫ３）が供給される期間は、外部から供給される電源電圧（ＶＤＩ）と同じ電圧値（ＶＤＤ）に制御され、クロックが供給されない期間は、外部から供給される電源電圧よりも低い電圧値に制御された電源電圧（ＶＤＩ３）を命令実行ブロックに供給する第３の電圧制御回路とを含み、第２の比較選択回路は、比較の結果、加算器による加算値が最大設定クロック数判定回路により判定された設定クロック数の最大値を２倍した値よりも大きい場合、命令フェッチブロックおよび命令デコードブロックに、現在のサイクル期間における処理を次のサイクル期間まで保持することを示す信号を出力することを特徴とする。
【００２２】
この場合、第２の比較選択回路から、現在のサイクル期間における処理を次のサイクル期間まで保持することを示す信号が出力された場合、第１および第２のクロック制御回路はそれぞれ、次のサイクル期間において、命令フェッチブロックおよび命令デコードブロックへのクロックの供給を停止することを特徴とする。
【００２３】
上記の構成によれば、命令実行ブロックにおいて実行処理に必要な実行クロック数が命令毎に変化する場合、命令デコードブロックにて前もって必要な実行クロック数を判定し、その判定結果を命令実行ブロックに反映することで、供給クロックの有効化、パイプライン処理の高速化が図れ、また供給クロックを停止している期間は、供給する電源電圧も、各ブロックが最低限のパイプライン動作が可能な程度の電圧値にまで落とすことにより、低消費電力化が可能となる。
【００２４】
【発明の実施の形態】
以下、本発明の好適な実施形態について、図面を参照しながら説明する。
【００２５】
（第１の実施形態）
図１は、本発明の第１の実施形態によるデータ処理装置の一構成例を示すブロック図である。図１に示すデータ処理装置は、図１２に示す従来例と同様に、命令フェッチブロック（ＩＦＢ）１、命令デコードブロック（ＤＥＣＢ）４、命令実行ブロック（ＥＸＢ）７で構成される３段のパイプラインで命令を処理するものとし、また、図１２と同一の符号を付した要素は、同一もしくはそれ相当の部分であるため、それらの詳細な説明は省略する。
【００２６】
図１において、ＩＦＢ１には、設定クロック数格納レジスタ（以下、ＣＳＲと略記する）３１が、ＤＥＣＢ５にはＣＳＲ３２が、ＥＸＢ７にはＣＳＲ３３が含まれている。
【００２７】
クロック制御回路（以下、ＣＣＣと略記する）２４は、外部から信号線９を介してクロックＣＬＫを受けて、信号線１０１を介してＩＦＢ１にクロックＣＬＫ１を供給する。同様に、ＣＣＣ２５は、外部から信号線９を介してクロックＣＬＫを受けて、信号線１０２を介してＤＥＣＢ４にクロックＣＬＫ２を供給し、ＣＣＣ２６は、外部から信号線９を介してクロックＣＬＫを受けて、信号線１０３を介してＥＸＢ７にクロックＣＬＫ３を供給する。
【００２８】
ＣＳＲ３１から出力された設定クロック数は、信号線１０７を介してＣＣＣ２４に送られる。同様に、ＣＳＲ３２から出力された設定クロック数は、信号線１０８を介してＣＣＣ２５に、ＣＳＲ３３から出力された設定クロック数は、信号線１０９を介してＣＣＣ２６に送られる。
【００２９】
最大設定クロック数判定回路（以下、ＭＳＣＲと略記する）４１は、ＣＳＲ３１、ＣＳＲ３２、ＣＳＲ３３のそれぞれから出力された設定クロック数を受けて、入力された３つの設定クロック数を比較して最も大きい値を判定し、この値を１サイクル当たりのクロック数として、各ブロック１、４、７に信号線１１０を介して出力する。
【００３０】
次に、以上のように構成されたデータ処理装置の動作について説明する。
【００３１】
まず、ＣＳＲ３１、３２、３３に、各ブロックにおけるパイプラインの１サイクル当りに必要なクロック数のデータを格納する。それらの出力により、ＣＣＣ２４、２５、２６は、入力クロックＣＬＫに対してＣＳＲ３１、３２、３３に格納された値のクロック数だけ、パイプラインの１サイクル当りのクロック数としてクロックＣＬＫ１、ＣＬＫ２、ＣＬＫ３をそれぞれ各ブロックに供給する。ＭＳＣＲ４１は、ＣＳＲ３１、３２、３３から入力されたクロック数を示す値を比較して最も大きい値を判定し、この値を１サイクル当たりのクロック数として各ブロックに出力する。
【００３２】
ここで、図２のタイミングチャートを用いてさらに説明を続ける。
【００３３】
図２は、ＩＦＢ１が３クロックで１つの命令をフェッチする処理を行い、ＤＥＣＢ４およびＥＸＢ７がそれぞれ１クロックで１つの命令をデコードおよび実行する処理を行う場合を例とした、３段のパイプライン処理における各ブロックへのクロックおよび各ブロックでの処理を示すタイミングチャートである。
【００３４】
ＣＳＲ３１には、ＣＣＣ２４が入力クロックＣＬＫを１サイクル当たり３クロック分だけクロックＣＬＫ１として出力するようなデータが格納され、ＣＳＲ３２には、ＣＣＣ２５が入力クロックＣＬＫを１サイクル当たり１クロック分だけクロックＣＬＫ２として出力するようなデータが格納され、ＣＳＲ３３には、ＣＣＣ２６が入力クロックＣＬＫを１サイクル当たり１クロック分だけクロックＣＬＫ３として出力するようなデータが格納される。このときのＭＳＣＲ４１は、ＣＳＲ３１、３２、３３の値の最大値、つまり３クロックに対応する値を判定し、これをパイプラインの１サイクル当たりのクロック数として各ブロックに出力する。
【００３５】
これにより、ＣＣＣ２４からＩＦＢ１に供給されるクロックＣＬＫ１は、パイプラインの１サイクル当たり３クロックとなる。また、ＣＣＣ２５からＤＥＣＢ４に供給されるクロックＣＬＫ２は、パイプラインの１サイクル当たり１クロックとなる。更に、ＣＣＣ２６からＥＸＢ７に供給されるクロックＣＬＫ３は、パイプラインの１サイクル当たり１クロックとなる。
【００３６】
まず、サイクルＡでは、メモリから命令「１」のフェッチがＩＦＢ１において３ＣＬＫ１で行われる。
【００３７】
次に、サイクルＢの開始によって、命令「１」の命令コードがＩＦＢＲ２に格納される。同時に、ＩＦＢＲ２の出力データをデコードした命令「１」のデコード信号がＤＥＣＢ４において１ＣＬＫ２で生成される。また、命令「２」のフェッチがＩＦＢ１において３ＣＬＫ１で行われる。
【００３８】
次に、サイクルＣの開始によって、命令「１」のデコード信号が１ＣＬＫ２でＤＥＣＢＲ５に格納され、ＤＥＣＢＲ５の出力データを実行した命令「１」の結果がＥＸＢ７において１ＣＬＫ３で生成される。同時に、ＩＦＢＲ２の出力データをデコードした命令「２」のデコード信号がＤＥＣＢ４において１ＣＬＫ２で生成される。また、命令「３」のフェッチがＩＦＢ１において３ＣＬＫ１で行われる。
【００３９】
次に、サイクルＤの開始によって、命令「１」の実行結果がＥＸＢＲ８に１ＣＬＫ３で格納され、ＤＥＣＢＲ５の出力データを実行した命令「２」の結果がＥＸＢ７において１ＣＬＫ３で生成される。同時に、ＩＦＢＲ２の出力データをデコードした命令「３」のデコード信号がＤＥＣＢ４において１ＣＬＫ２で生成される。
【００４０】
以上のように、サイクルＡで命令「１」がメモリから３クロックでフェッチされ、サイクルＤで命令「１」の実行結果がＥＸＢＲ８に１クロックで格納される。この一連の処理をパイプラインとして、無効なサイクルが生じること無く、次々に命令が実行される。
【００４１】
以上のように、本実施形態によれば、一番処理の遅い命令フェッチブロックが１つの命令をフェッチするのに要するクロック数に相当するサイクルになるように、処理の速い命令デコードブロックおよび命令実行ブロックに供給するクロックの周期を合わせることで、無効なサイクルが生じて、その間にもクロックを供給する必要がなくなるので、消費電力を削減することができる。
【００４２】
（第２の実施形態）
図３は、本発明の第２の実施形態によるデータ処理装置の一構成例を示すブロック図である。なお、図１に示す第１の実施形態と同一の符号を付した要素は同一もしくはそれ相当の部分であるため、それらの詳細な説明は省略する。
【００４３】
本実施形態が第１の実施形態と異なるのは、設定クロック数に応じて各ブロックに供給する電源電圧を制御する電圧制御回路を追加した点にある。
【００４４】
図３において、電圧制御回路（以下、ＶＣＣと略記する）２１は、外部から電源線１０を介して電源電圧ＶＤＩを受けて、電源線１０４を介してＩＦＢ１に電源電圧ＶＤＩ１を供給する。同様に、ＶＣＣ２２は、外部から電源線１０を介して電源電圧ＶＤＩを受けて、電源線１０５を介してＤＥＣＢ５に電源電圧ＶＤＩ２を供給し、ＶＣＣ２３は、外部から電源線１０を介して電源電圧ＶＤＩを受けて、電源線１０６を介してＥＸＢ７に電源電圧ＶＤＩ３を供給する。
【００４５】
ＣＳＲ３１から出力された設定クロック数は、信号線１０７を介してＶＣＣ２１およびＣＣＣ２４に送られる。同様に、ＣＳＲ３２から出力された設定クロック数は、信号線１０８を介してＶＣＣ２２およびＣＣＣ２５に、ＣＳＲ３３から出力された設定クロック数は、信号線１０９を介してＶＣＣ２３およびＣＣＣ２６に送られる。
【００４６】
次に、以上のように構成されたデータ処理装置の動作について説明する。
【００４７】
まず、ＣＳＲ３１、３２、３３に各ブロックにおけるパイプラインの１サイクル当りに必要なクロック数のデータを格納する。それらの出力により、ＣＣＣ２４、２５、２６は、入力クロックＣＬＫに対してＣＳＲ３１、３２、３３に格納された値のクロック数だけ各ブロックにクロックＣＬＫ１、ＣＬＫ２、ＣＬＫ３を供給する。また、ＶＣＣ２１、２２、２３は電源電圧ＶＤＩ（電源投入時ＶＤＤまたは電源遮断時ＶＳＳ）を受けて、それぞれ、電源電圧ＶＤＩ１、ＶＤＩ２、ＶＤＩ３として、電源電圧ＶＤＤと同一もしくは動作が可能な最も低い電圧を供給する。ＭＳＣＲ４１は、ＣＳＲ３１、３２、３３から入力された値を比較して最大値を判定し、この最大値をパイプラインの１サイクル当たりのクロック数として各ブロックに出力する。
【００４８】
ここで、図４のタイミングチャートを用いてさらに説明を続ける。
【００４９】
図４は、第１の実施形態と同様に、ＩＦＢ１が３クロックで１つの命令をフェッチする処理を行い、ＤＥＣＢ４およびＥＸＢ７がそれぞれ１クロックで１つの命令をデコードおよび実行する処理を行う場合を例とした、３段のパイプライン処理における各ブロックへのクロックおよび電源電圧を示すタイミングチャートである。
【００５０】
図４において、ＣＳＲ３１には、ＣＣＣ２４が入力クロックＣＬＫを１サイクル当たり３クロック分だけクロックＣＬＫ１として出力するようなデータが格納され、ＣＳＲ３２には、ＣＣＣ２５が入力クロックＣＬＫを１サイクル当たり１クロック分だけクロックＣＬＫ２として出力するようなデータが格納され、ＣＳＲ３３には、ＣＣＣ２６が入力クロックＣＬＫを１サイクル当たり１クロック分だけクロックＣＬＫ３として出力するようなデータが格納されている。このときのＭＳＣＲ４１は、ＣＳＲ３１、３２、３３の値の最大値、つまり３クロックに対応する値を判定し、これをパイプラインの１サイクル当たりのクロック数として各ブロックに出力する。
【００５１】
これにより、ＣＣＣ２４からＩＦＢ１に供給されるクロックＣＬＫ１は、パイプラインの１サイクル当たり３クロックとなり、ＶＣＣ２１は、ＩＦＢ１に供給する電源電圧ＶＤＩ１を、ＣＣＣ２４から１サイクルの間に３クロックが出力されている間、電源電圧ＶＤＩと同一の電圧（ＶＤＤ）とすることで、パイプライン処理が可能となる。また、ＣＣＣ２５からＤＥＣＢ４に供給されるクロックＣＬＫ２は、パイプラインの１サイクル当たり１クロックとなり、ＶＣＣ２２は、ＤＥＣＢ４に供給する電源電圧ＶＤＩ２を、ＣＣＣ２５から１クロックが出力されている間、電源電圧ＶＤＩと同一の電圧（ＶＤＤ）に設定し、ＣＣＣ２５からクロックが出力されていない間、つまり２クロック分の期間は、電源電圧ＶＤＩよりも低い動作可能な最低電圧に設定することで、パイプライン処理が可能となる。更に、ＣＣＣ２６からＥＸＢ７に供給するクロックＣＬＫ３は、パイプラインの１サイクル当たり１クロックとなり、ＶＣＣ２３は、ＥＸＢ７に供給する電源電圧ＶＤＩ３を、ＣＣＣ２５から１クロックが出力されている間、電源電圧ＶＤＩと同一の電圧（ＶＤＤ）に設定し、ＣＣＣ２６からクロックが出力されていない間、つまり２クロック分の期間は、電源電圧ＶＤＩよりも低い動作可能な最低電圧に設定することで、パイプライン処理が可能となる。
【００５２】
以上のように、本実施形態によれば、パイプラインの１サイクルの間で、各ブロックにクロックが供給されない期間は、各ブロックに供給する電源電圧を動作可能な最低電圧に変更することで、さらに消費電力を削減することができる。
【００５３】
（第３の実施形態）
図５は、本発明の第３の実施形態によるデータ処理装置の一構成例を示すブロック図である。なお、図５において、図３に示す第２の実施形態と同一の符号を付した要素は同一もしくはそれ相当の部分であるため、それらの詳細な説明は省略する。
【００５４】
本実施形態が第２の実施形態と異なるのは、ＤＥＣＢ４に実行クロック数判定回路（以下、ＣＳＣＥＢと略記する）４０を設け、ＣＳＣＥＢ４０から出力される実行クロック数と、ＭＳＣＲ４１から出力される設定クロック数の最大値とを比較し、その大きい方の値をパイプラインの１サイクル当たりのクロック数として各ブロックに供給する比較選択回路（以下、ＣＰＳＣと略記する）４２を設けた点にある。
【００５５】
ＣＳＣＥＢ４０から出力される実行クロック数は、信号線１２４を介して、ＭＳＣＲ４１から出力される設定クロック数の最大値は、信号線１１１を介して、それぞれ、ＣＰＳＣ４２に入力される。ＣＰＳＣ４２は、ＣＳＣＥＢ４０からの実行クロック数とＭＳＣＲ４１からの設定クロック数の最大値とを比較し、その大きい方の値をパイプラインの１サイクル当たりのクロック数として、各ブロックに信号線１１２を介して供給する。
【００５６】
次に、以上のように構成されたデータ処理装置の動作について説明する。
【００５７】
まず、ＣＳＲ３１、３２、３３に格納されたデータによって、ＶＣＣ２１、２２、２３、およびＣＣＣ２４、２５、２６で、各ブロックに供給する電源電圧ＶＤＩ１、ＶＤＩ２、ＶＤＩ３、およびクロックＣＬＫ１、ＣＬＫ２、ＣＬＫ３を制御し、その電圧値および１サイクル当たりのクロック数を任意に設定可能であることは第１および第２の実施形態で述べた通りである。
【００５８】
ここで、図６のタイミングチャートを用いてさらに説明を続ける。
【００５９】
図６は、サイクルＡ、Ｂ、Ｃでは、第２の実施形態と同様に、ＩＦＢ１が３クロックで１つの命令をフェッチする処理を、またＤＥＣＢ４およびＥＸＢ７がそれぞれ１クロックで１つの命令をデコードおよび実行する処理を行い、サイクルＤでは、ＩＦＢ１が３クロックで１つの命令をフェッチする処理を、ＤＥＣＢ４が１クロックで１つの命令をデコードする処理を、またＥＸＢ７が７クロックで１つの命令を実行する処理を行い、サイクルＥでは、ＩＦＢ１およびＤＥＣＢ４が１クロックで１つの命令をフェッチおよびデコードする処理を、またＥＸＢ７が４クロックで１つの命令を実行する処理を行い、サイクルＦでは、ＩＦＢ１、ＤＥＣＢ４、およびＥＸＢ７が１クロックで１つの命令をフェッチ、デコード、および実行する処理を行う場合を例とした、３段のパイプライン処理における各ブロックでの処理、各ブロックへのクロックおよび電源電圧を示すタイミングチャートである。
【００６０】
図６において、ＣＳＲ３１には、ＣＣＣ２４が入力クロックＣＬＫを１サイクル当たり３クロック分だけクロックＣＬＫ１として出力するようなデータが格納され、ＣＳＲ３２には、ＣＣＣ２５が入力クロックＣＬＫを１サイクル当たり１クロック分だけクロックＣＬＫ２として出力するようなデータが格納され、ＣＳＲ３３には、ＣＣＣ２６が入力クロックＣＬＫを１サイクル当たり１クロック分だけクロックＣＬＫ３として出力するようなデータが格納されている。このときのＭＳＣＲ４１は、ＣＳＲ３１、３２、３３の値の最大値、つまり３クロックに対応する値を判定する。
【００６１】
図６に示すように、まず、サイクルＡの期間において、ＩＦＢ１では命令１１がフェッチされる。ＤＥＣＢ４にはまだデコードする命令がないため。ＣＳＣＥＢ４０は実行クロック数を判定しない。また、ＣＰＳＣ４２は、ＣＳＣＥＢ４０からの実行クロック数（なし）とＭＳＣＲ４１からの設定クロック数の最大値（３クロック）とを比較し、その大きい方の値、つまり３クロックに対応する値を選択し、次のサイクルＢの期間は、パイプラインの１サイクル当たりのクロック数が３クロックであることを各ブロックに出力する。
【００６２】
次に、サイクルＢの期間において、ＩＦＢ１では命令１２がフェッチされる。ＤＥＣＢ４では命令１１がデコードされ、ＣＳＣＥＢ４０によって、命令１１を実行処理するためには実行クロック数として１クロック必要であるということが判定される。また、ＣＰＳＣ４２は、ＣＳＣＥＢ４０からの実行クロック数（１クロック）とＭＳＣＲ４１からの設定クロック数の最大値（３クロック）とを比較し、その大きい方の値、つまり３クロックに対応する値を選択し、次のサイクルＣの期間は、パイプラインの１サイクル当たりのクロック数が３クロックであることを各ブロックに出力する。
【００６３】
次に、サイクルＣの期間において、ＩＦＢ１では命令１３がフェッチされる。ＤＥＣＢ５では命令１２がデコードされ、ＣＳＣＥＢ４０によって、命令１２を実行処理するためには実行クロック数として７クロック必要であるということが判定される。また、ＣＰＳＣ４２は、ＣＳＣＥＢ４０からの実行クロック数（７クロック）とＭＳＣＲ４１からの設定クロック数の最大値（３クロック）とを比較し、その大きい方の値、つまり７クロックに対応する値を選択し、次のサイクルＤの期間は、パイプラインの１サイクル当たりのクロック数が７クロックであることを各ブロックに出力する。また、ＣＣＣ２６は、ＥＸＢ７が命令１１の実行に必要である１クロックを供給し、残りの２クロックは供給を停止する。更に、残りの２クロックの期間では、ＶＣＣ２３は、ＥＸＢ７に供給する電源電圧ＶＤＩ３を、電源電圧ＶＤＩよりも低い動作可能な最低電圧に設定する。
【００６４】
次に、サイクルＤの期間において、ＩＦＢ１では命令１４がフェッチされ、サイクルＤでのクロック数は７クロックであるため、ＣＣＣ２４は、ＩＦＢ１がフェッチに必要である３クロックを供給し、残りの４クロックは供給を停止する。また、残りの４クロックの期間では、ＶＣＣ２１は、ＩＦＢ１に供給する電源電圧ＶＤＩ１を、電源電圧ＶＤＩよりも低い動作可能な最低電圧に設定する。また、ＤＥＣＢ４では命令１３がデコードされ、ＣＳＣＥＢ４０によって、命令１３を実行処理するためには実行クロック数として４クロック必要であるということが判定される。また、ＣＰＳＣ４２は、ＣＳＣＥＢ４０からの実行クロック数（４クロック）とＭＳＣＲ４１からの設定クロック数の最大値（３クロック）とを比較し、その大きい方の値、つまり４クロックに対応する値を選択し、次のサイクルＥの期間は、パイプラインの１サイクル当たりのクロック数が４クロックであることを各ブロックに出力する。また、ＣＣＣ２５は、ＤＥＣＢ４がデコードに必要である１クロックを供給し、残りの６クロックは供給を停止する。更に、残りの６クロックの期間では、ＶＣＣ２２は、ＤＥＣＢ４に供給する電源電圧ＶＤＩ２を、電源電圧ＶＤＩよりも低い動作可能な最低電圧に設定する。また、ＥＸＢ７では命令１２が７クロックを要して実行される。
【００６５】
次に、サイクルＥの期間において、ＩＦＢ１では命令１５がフェッチされ、サイクルＥでのクロック数は４クロックであるため、ＣＣＣ２４は、ＩＦＢ１がフェッチに必要である３クロックを供給し、残りの１クロックは供給を停止する。また、残りの１クロックの期間では、ＶＣＣ２１は、ＩＦＢ１に供給する電源電圧ＶＤＩ１を、電源電圧ＶＤＩよりも低い動作可能な最低電圧に設定する。ＤＥＣＢ４では命令１４がデコードされ、ＣＳＣＥＢ４０によって、命令１４を実行処理するためには実行クロック数として１クロック必要であるということが判定される。また、ＣＰＳＣ４２は、ＣＳＣＥＢ４０からの実行クロック数（１クロック）とＭＳＣＲ４１からの設定クロック数の最大値（３クロック）とを比較し、その大きい方の値、つまり３クロックに対応する値を選択し、次のサイクルＦの期間は、パイプラインの１サイクル当たりのクロック数が３クロックであることを各ブロックに出力する。また、ＣＣＣ２５は、ＤＥＣＢ４がデコードに必要である１クロックを供給し、残りの３クロックは供給を停止する。更に、残りの３クロックの期間では、ＶＣＣ２２は、ＤＥＣＢ４に供給する電源電圧ＶＤＩ２を、電源電圧ＶＤＩよりも低い動作可能な最低電圧に設定する。ＥＸＢ７では命令１３が４クロックを要して実行される。
【００６６】
次に、サイクルＦの期間において、ＩＦＢ１では命令１６がフェッチされ、サイクルＦでのクロック数は３クロックであるため、ＣＣＣ２４は、ＩＦＢ１がフェッチに必要である３クロックを供給する。ＤＥＣＢ４では命令１６がデコードされ、ＣＳＣＥＢ４０によって、命令１６を実行処理するために必要な実行クロック数が判定される。また、ＣＰＳＣ４２は、ＣＳＣＥＢ４０からの実行クロック数とＭＳＣＲ４１からの設定クロック数の最大値（３クロック）とを比較し、その大きい方の値を選択し、次のサイクルの期間における、パイプラインの１サイクル当たりのクロック数を各ブロックに出力する。また、ＣＣＣ２５は、ＤＥＣＢ４がデコードに必要である１クロックを供給し、残りの２クロックは供給を停止する。更に、残りの２クロックの期間では、ＶＣＣ２２は、ＤＥＣＢ４に供給する電源電圧ＶＤＩ２を、電源電圧ＶＤＩよりも低い動作可能な最低電圧に設定する。また、ＣＣＣ２６は、ＥＸＢ７が命令１４の実行に必要である１クロックを供給し、残りの２クロックは供給を停止する。更に、残りの２クロックの期間では、ＶＣＣ２３は、ＥＸＢ７に供給する電源電圧ＶＤＩ３を、電源電圧ＶＤＩよりも低い動作可能な最低電圧に設定する。
【００６７】
以上のように、本実施形態によれば、パイプラインの１つのサイクルにおいて最もクロック数の必要な処理を行うブロックに合わせてサイクルに含まれるクロック数を決定し、そのブロック以外へのクロックは予め設定されたクロック数以外は供給を停止し、また供給クロックを停止している期間では、供給する電源電圧も各ブロックが最低限のパイプライン動作が可能な程度の電圧値にまで落とすことにより、低消費電力化が可能となる。
【００６８】
（第４の実施形態）
図７は、本発明の第４の実施形態によるデータ処理装置の一構成例を示すブロック図である。なお、図７において、図５に示す第３の実施形態と同一の符号を付した要素は同一もしくはそれ相当の部分であるため、それらの詳細な説明は省略する。
【００６９】
本実施形態が第３の実施形態と異なるのは、ＣＳＣＥＢ４０の出力信号である実行クロック数からＭＳＣＲ４１の出力信号である設定クロック数の最大値を減算する減算器（以下、ＳＵＢと略記する）４５と、ＣＳＣＥＢ４０からの実行クロック数とＳＵＢ４５からの減算値とを加算する加算器（以下、ＡＤＤと略記する）４４と、ＡＤＤ４４からの加算値とＭＳＣＲ４１からの設定クロック数の最大値とを比較し、その小さい方の値をＣＣＣ２６およびＶＣＣに供給する比較選択回路（以下、ＣＰＳＣと略記する）４３とを設けた点と、ＣＰＳＣ４２に代えて、ＡＤＤ４４からの加算値とＭＳＣＲ４１からの設定クロック数の最大値の２倍とを比較し、その大きい方の値をＩＦＢ１およびＤＥＣＢ４に供給する比較選択回路４６を設け、ＭＳＣＲ４１からの設定クロック数の最大値を各ブロックに供給している点にある。
【００７０】
図７において、ＣＳＣＥＢ４０から出力される実行クロック数は信号線１２０を介し、ＭＳＣＲ４１から出力される設定クロック数の最大値は信号線１１７を介して、ＳＵＢ４５に入力される。ＳＵＢ４５から出力される差分値は信号線１１８を介し、ＣＳＣＥＢ４０から出力される実行クロック数は信号線１２４を介して、ＡＤＤ４４に入力される。
【００７１】
ＡＤＤ４４から出力される加算値は信号線１２２を介し、ＭＳＣＲ４１から出力される設定クロック数の最大値は信号線１２３を介してＣＰＳＣ４３に入力される。ＣＰＳＣ４３からの出力信号は信号線１１９を介してＣＣＣ２６およびＶＣＣ２３に入力される。
【００７２】
また、ＡＤＤ４４から出力される加算値は信号線１１５を介し、ＭＳＣＲ４１から出力される設定クロック数の最大値は信号線１１４を介してＣＰＳＣ４６に入力される。ＣＰＳＣ４６からの出力信号は信号線１２１を介してＩＦＢ１およびＤＥＣＢ４に入力される。
【００７３】
また、ＭＳＣＲ４１から出力される設定クロック数の最大値は信号線１１０を介して、ＩＦＢ１、ＤＥＣＢ４、およびＥＸＢ７に入力される。
【００７４】
次に、以上のように構成されたデータ処理装置の動作について、図８のタイミングチャートを用いて説明する。なお、図８において、ＣＳＲ３１、３２、３３に格納される設定クロック数（それぞれ３、１、１クロック）および命令１１、１２、１３、１４を実行処理するのに必要な実行クロック数（それぞれ１、７、４、１クロック）は、第３の実施形態と同じである。
【００７５】
まず、サイクルＡの期間において、ＩＦＢ１では命令１１がフェッチされる。ＤＥＣＢ４にはまだデコードする命令がないため、ＣＳＣＥＢ４０は実行クロック数を判定しない。ＳＵＢ４５は、ＣＳＣＥＢ４０の出力信号である実行クロック数から、ＭＳＣＲ４１の出力信号である設定クロック数の最大値（３クロック）を減算し、残クロック数は０クロックあることをＡＤＤ４４に出力する。ＡＤＤ４４は、前命令の残クロック数は存在せず、ＣＳＣＥＢ４０から出力される実行クロック数もないため、０クロックを出力する。ＣＰＳＣ４３は、ＡＤＤ４４から出力される加算値（０クロック）とＭＳＣＲ４１からの設定クロック数の最大値（３クロック）とを比較し、その小さい方の値、つまり０クロックを選択し、次のサイクルＢでのＥＸＢ７への供給クロック数は０クロックであることをＣＣＣ２６およびＶＣＣ２３へ出力する。ＣＰＳＣ４６は、ＡＤＤ４４からの加算値（０クロック）とＭＳＣＲ４１からの設定クロック数の最大値の２倍（６クロック）とを比較し、その比較の結果、ＭＳＣＲ４１からの設定クロック数の最大値の２倍の方が大きいため、次のサイクルＢでは、次の命令の処理を行う信号をＩＦＢ１およびＤＥＣＢ４に出力する。
【００７６】
次に、サイクルＢの期間において、ＩＦＢ１では命令１２がフェッチされる。ＤＥＣＢ４では命令１１がデコードされ、ＣＳＣＥＢ４０によって、命令１１を実行処理するためには実行クロック数として１クロック必要であるということが判定される。ＳＵＢ４５は、ＣＳＣＥＢ４０の出力信号である実行クロック数（１クロック）から、ＭＳＣＲ４１の出力信号である設定クロック数の最大値（３クロック）を減算し、残クロック数は０クロックであることをＡＤＤ４４に出力する。ＡＤＤ４４は、前命令の残クロック数は存在しないため、命令１１におけるＣＳＣＥＢ４０の出力信号である１クロックを出力する。ＣＰＳＣ４３は、ＡＤＤ４４からの加算値（１クロック）とＭＳＣＲ４１からの設定クロック数の最大値（３クロック）を比較し、その小さい方の値、つまり１クロックを選択し、次のサイクルＣでのＥＸＢ７への供給クロック数は１クロックであることをＣＣＣ２６およびＶＣＣ２３へ出力する。ＣＰＳＣ４６は、ＡＤＤ４４からの加算値（１クロック）とＭＳＣＲ４１からの設定クロック数の最大値の２倍（６クロック）とを比較し、その比較の結果、ＭＳＣＲ４１からの設定クロック数の最大値の２倍の方が大きいため、次のサイクルＣでは、次の命令の処理を行う信号をＩＦＢ１およびＤＥＣＢ４に出力する。
【００７７】
次に、サイクルＣの期間において、ＩＦＢ１では命令１３がフェッチされる。ＤＥＣＢ４では命令１２がデコードされ、ＣＳＣＥＢ４０によって、命令１２を実行処理するためには実行クロック数として７クロック必要であるということが判定される。ＡＤＤ４４は、命令１１におけるＳＵＢ４５の減算結果により、命令１１の残クロック数は存在しないため、命令１２におけるＣＳＣＥＢ４０の出力信号である７クロックを出力する。ＣＰＳＣ４３は、ＡＤＤ４４からの加算値（７クロック）とＭＳＣＲ４１からの設定クロック数の最大値（３クロック）とを比較し、その小さい方の値、つまり３クロックを選択し、次のサイクルＤでのＥＸＢ７への供給クロック数は３クロックであることをＣＣＣ２６およびＶＣＣ２３へ出力する。ＣＰＳＣ４６は、ＡＤＤ４４からの加算値（７クロック）とＭＳＣＲ４１からの設定クロック数の最大値の２倍（６クロック）とを比較し、その比較の結果、ＡＤＤ４４からの加算値の方が大きいため、次のサイクルＤでは、現サイクルの状態を保持する信号をＩＦＢ１およびＤＥＣＢ４に出力する。ＳＵＢ４５は、ＣＳＣＥＢ４０の出力信号である実行クロック数（７クロック）から、ＭＳＣＲ４１の出力信号である設定クロック数の最大値（３クロック）を減算し、残クロック数は４クロックあることをＡＤＤ４４に出力する。ＥＸＢ７では命令１１が１クロックを要して実行される。
【００７８】
次に、サイクルＤの期間において、ＩＦＢ１では前サイクルにおけるＣＰＳＣ４６からのサイクルＣでの状態を保持する信号によって、命令１３が保持されている。ＤＥＣＢ４では、前サイクルにおけるＣＰＳＣ４６からのサイクルＣでの状態を保持する信号によって、命令１２が保持されている。ＡＤＤ４４は、次の命令１３がデコードできないため、ＣＳＣＥＢ４０から出力される実行クロック数はなく、命令１２におけるＳＵＢ４５の減算結果、つまり命令１２の残クロック数である４クロックを出力する。ＣＰＳＣ４３は、ＡＤＤ４４からの加算値（４クロック）とＭＳＣＲ４１からの設定クロック数の最大値（３クロック）とを比較し、その小さい方の値、つまり３クロックを選択し、次のサイクルＥでのＥＸＢ７への供給クロック数は３クロックであることをＣＣＣ２６およびＶＣＣ２３へ出力する。ＣＰＳＣ４６は、ＡＤＤ４４からの加算値（４クロック）とＭＳＣＲ４１からの設定クロック数の最大値の２倍（６クロック）とを比較し、その比較の結果、ＭＳＣＲ４１からの設定クロック数の最大値の２倍の方が大きいため、次のサイクルＥでは、次の命令の処理を行う信号をＩＦＢ１およびＤＥＣＢ４に出力する。ＳＵＢ４５は、サイクルＤで実行処理できなかった命令１２の残クロック数（４クロック）から、ＭＳＣＲ４１からの設定クロック数の最大値（３クロック）を減算し、残クロック数は１クロックであることをＡＤＤ４４に出力する。ＥＸＢ７では命令１２が３クロック分実行される。
【００７９】
次に、サイクルＥの期間において、ＩＦＢ１では命令１４がフェッチされる。ＤＥＣＢ４では命令１３がデコードされ、ＣＳＣＥＢ４０によって、命令１３を実行処理するためには実行クロック数として４クロック必要であるということが判定される。ＡＤＤ４４は、サイクルＤでのＳＵＢ４５の減算結果、つまり命令１２の残クロック数である１クロックと、命令１３におけるＣＳＣＥＢ４０からの実行クロック数である４クロックとを加算した５クロックを出力する。ＣＰＳＣ４３は、ＡＤＤ４４からの加算値（５クロック）とＭＳＣＲ４１からの設定クロック数の最大値（３クロック）とを比較し、その小さい方の値、つまり３クロックを選択し、次のサイクルＦでのＥＸＢ７への供給クロック数は３クロックであることをＣＣＣ２６およびＶＣＣ２３へ出力する。ＣＰＳＣ４６は、ＡＤＤ４４からの加算値（５クロック）とＭＳＣＲ４１からの設定クロック数の最大値の２倍（６クロック）とを比較し、その比較の結果、ＭＳＣＲ４１からの設定クロック数の最大値の２倍の方が大きいため、次のサイクルＦでは、次の命令の処理を行う信号をＩＦＢ１およびＤＥＣＢ４に出力する。ＳＵＢ４５は、サイクルＥで実行処理できなかった命令１２の残クロック数である１クロックと命令１３におけるＣＳＣＥＢ４０からの４クロックとの加算結果（５クロック）から、ＭＳＣＲ４１からの設定クロック数の最大値（３クロック）を減算し、残クロック数は２クロックであることをＡＤＤ４４に出力する。ＥＸＢ７では命令１２が引き続き３クロック分実行される。
【００８０】
次に、サイクルＦの期間において、ＩＦＢ１では命令１５がフェッチされる。ＤＥＣＢ４では命令１４がデコードされ、ＣＳＣＥＢ４０によって、命令１４を実行処理するためには実行クロック数として１クロック必要であるということが判定される。ＡＤＤ４４は、サイクルＥでのＳＵＢ４５の減算結果、つまり命令１３の残クロック数の２クロックと、命令１４におけるＣＳＣＥＢ４０からの実行クロック数である１クロックとを加算した３クロックを出力する。ＣＰＳＣ４３は、ＡＤＤ４４からの加算値（３クロック）とＭＳＣＲ４１からの設定クロック数の最大値（３クロック）とを比較し、その小さい方の値、つまり３クロックを選択し、次のサイクルＧでのＥＸＢ７への供給クロック数は３クロックであることをＣＣＣ２６およびＶＣＣ２３へ出力する。ＣＰＳＣ４６は、ＡＤＤ４４からの加算値（３クロック）とＭＳＣＲ４１からの設定クロック数の最大値の２倍（６クロック）とを比較し、その比較の結果、ＭＳＣＲ４１からの設定クロック数の最大値の２倍の方が大きいため、次のサイクルＦでは、次の命令の処理を行う信号をＩＦＢ１およびＤＥＣＢ４に出力する。ＳＵＢ４５は、サイクルＦで実行処理できなかった命令１３の残クロック数の２クロックと命令１４におけるＣＳＣＥＢ４０からの１クロックとの加算結果（３クロック）から、ＭＳＣＲ４１からの設定クロック数の最大値（３クロック）を減算し、残クロック数は０クロックであることをＡＤＤ４４に出力する。ＥＸＢ７では命令１２が引き続き１クロック分実行され、命令１２の実行終了後に命令１３が連続して２クロック分実行される。
【００８１】
次に、サイクルＧの期間において、ＩＦＢ１では命令１６がフェッチされる。ＤＥＣＢ４では命令１５がデコードされ、ＣＳＣＥＢ４０によって、命令１５を実行処理するためには実行クロック数として１クロック必要であるということが判定される。ＡＤＤ４４は、サイクルＦでのＳＵＢ４５の減算結果、つまり命令１３の残クロック数の０クロックと、命令１５におけるＣＳＣＥＢ４０からの実行クロック数である１クロックとを加算した１クロックを出力する。ＣＰＳＣ４３は、ＡＤＤ４４からの加算値（１クロック）とＭＳＣＲ４１からの設定クロック数の最大値（３クロック）とを比較し、その小さい方の値、つまり１クロックを選択し、次のサイクルでのＥＸＢ７への供給クロック数は１クロックであることをＣＣＣ２６およびＶＣＣ２３へ出力する。ＣＰＳＣ４６は、ＡＤＤ４４からの加算値（１クロック）とＭＳＣＲ４１からの設定クロック数の最大値の２倍（６クロック）とを比較し、その比較の結果、ＭＳＣＲ４１からの設定クロック数の最大値の２倍の方が大きいため、次のサイクルでは、次の命令の処理を行う信号をＩＦＢ１およびＤＥＣＢ４に出力する。ＳＵＢＤ４５は、命令１４におけるＣＳＣＥＢ４０の出力信号である実行クロック数（１クロック）から、ＭＳＣＲ４１の出力信号である設定クロック数の最大値（３クロック）を減算し、残クロック数は０クロックであることをＡＤＤ４４に出力する。ＥＸＢ７では命令１３が引き続き２クロック分実行され、命令１３の実行終了後に命令１４が連続して１クロックを要して実行される。
【００８２】
以上のように、本実施形態によれば、命令実行ブロックにおいて実行処理に必要な実行クロック数が命令毎に変化する場合、命令デコードブロックにて前もって必要な実行クロック数を判定し、その判定結果を命令実行ブロックに反映することで、供給クロックの有効化、パイプライン処理の高速化が図れ、また供給クロックを停止している期間は、供給する電源電圧も、各ブロックが最低限のパイプライン動作が可能な程度の電圧値にまで落とすことにより、低消費電力化が可能となる。
【００８３】
（第５の実施形態）
図９は、本発明の第５の実施形態によるデータ処理装置の一構成例を示すブロック図である。なお、図９において、図３に示す第２の実施形態と同一の符号を付した要素は同一もしくはそれ相当の部分であるため、それらの詳細な説明は省略する。
【００８４】
本実施形態は、第２の実施形態の構成に、各ブロックに供給する電源電圧の値を格納する電圧制御有効フラグレジスタ（以下、ＶＣＲと略記する）を追加したものである。
【００８５】
ＶＣＲ５１は、信号線１２５を介してＶＣＣ２１に接続されている。同様に、ＶＣＲ５２は、信号線１２６を介してＶＣＣ２２に接続され、ＶＣＲ５３は、信号線１２７を介してＶＣＣ２３に接続されている。
【００８６】
次に、以上のように構成されたデータ処理装置の動作について説明する。
【００８７】
まず、ＣＳＲ３１、３２、３３に各ブロックにおけるパイプラインの１サイクル当りに必要な設定クロック数のデータを格納する。それらの出力により、ＣＣＣ２４、２５、２６は入力クロックＣＬＫに対してＣＳＲ３１、３２、３３に格納された値のクロック数だけ各ブロックにクロックＣＬＫ１、ＣＬＫ２、ＣＬＫ３を供給する。また、ＶＣＲ５１、５２、５３に各ブロックに供給する電圧値を格納する。ＶＣＣ２１、２２、２３は、電源電圧ＶＤＩを制御してＶＣＲ５１、５２、５３に格納された電圧値を各ブロックに供給する。ＭＳＣＲ４１は、ＣＳＲ３１、３２、３３からそれぞれ入力された設定クロック数を比較して、設定クロック数の最大値を判定し、この最大値を１サイクル当たりのクロック数として各ブロックに出力する。
【００８８】
ここで、図１０のタイミングチャートを用いてさらに説明を続ける。
【００８９】
図１０は、第３の実施形態と同様に、ＩＦＢ１が３クロックで１つの命令をフェッチする処理を行い、ＤＥＣＢ４およびＥＸＢ７がそれぞれ１クロックで１つの命令をデコードおよび実行する処理を行う場合を例とした、３段のパイプライン処理における各ブロックへのクロックおよび電源電圧を示すタイミングチャートである。
【００９０】
図１０において、ＣＳＲ３１には、ＣＣＣ２４が入力クロックＣＬＫを３クロック分だけクロックＣＬＫ１として出力するようなデータが格納され、ＣＳＲ３２には、ＣＣＣ２５が入力クロックＣＬＫ２を１クロック分だけクロックＣＬＫ２として出力するようなデータが格納され、ＣＳＲ３３には、ＣＣＣ２６が入力クロックを１クロック分だけクロックＣＬＫ３として出力するようなデータが格納される。このとき、ＭＳＣＲ４１は、ＣＳＲ３１、３２、３３に格納されている設定クロック数の最大値、つまり３クロックに対応する値を判定し、パイプラインの１サイクル当たりのクロック数として各ブロックに出力する。
【００９１】
また、図１０では、ＶＣＲ５１とＶＣＲ５３には、入力電圧ＶＤＩと同じ電圧値（ＶＤＤ）が格納され、ＶＣＲ５２には、入力電圧ＶＤＩよりも低い電圧値が格納された場合を例示している。
【００９２】
ＩＦＢ１に供給される電源電圧ＶＤＩ１は、ＶＣＣ２１によって電源電圧ＶＤＩと同一の電圧値ＶＤＤに設定されている。また、ＤＥＣＢ４に供給される電源電圧ＶＤＩ２は、ＶＣＣ２２によって電源電圧ＶＤＩよりも低い電圧値に設定されている。更に、ＥＸＢ７に供給される電源電圧ＶＤＩ３は、ＶＣＣ２３によって電源電圧ＶＤＩと同一の電圧値ＶＤＤに設定されている。
【００９３】
以上のように、本実施形態によれば、各ブロックへの供給電圧を任意に制御することで、システムに応じて消費電力を削減することができる。
【００９４】
（第６の実施形態）
本発明の第６の実施形態は、図９に示す第５の実施形態と同一の構成を有する。本実施形態が第５の実施形態と異なるのは、ＣＳＲ３１、３２、３３に格納されたデータに従った、ＣＣＣ２４、２５、２６によるクロックＣＬＫ１、ＣＬＫ２、ＣＬＫ３の生成方法にある。以下では、主にこの相違点について、図１１のタイミングチャートを用いて説明する。
【００９５】
図１１において、ＣＳＲ３１には、入力クロックＣＬＫを１分周した、すなわち入力クロックＣＬＫと同じ波形であるクロックＣＬＫ１をＣＣＣ２４が出力するようなデータが格納され、ＣＳＲ３２には、入力クロックＣＬＫを３分周したクロックＣＬＫ２をＣＣＣ２５が出力するようなデータが格納され、ＣＳＲ３３には、入力クロックＣＬＫを３分周したクロックＣＬＫ３をＣＣＣ２６が出力するようなデータが格納される。このとき、ＭＳＣＲ４１は、ＣＳＲ３１、３２、３３に格納された値のうち最大値、つまり入力クロックを１分周するデータに対応する値を判定し、パイプラインの１サイクル当たりのクロック数として各ブロックに出力する。また、第５の実施形態と同様に、ＶＣＲ５１とＶＣＲ５３には、入力電圧ＶＤＩと同じ電圧値（ＶＤＤ）が格納され、ＶＣＲ５２には、入力電圧ＶＤＩよりも低い電圧値が格納される。
【００９６】
ＩＦＢ１に供給されるクロックＣＬＫ１を、ＣＣＣ２４によって、入力クロックＣＬＫの１分周、つまり入力クロックＣＬＫと同じ波形に設定し、ＩＦＢ１に供給される電源電圧ＶＤＩ１を、ＶＣＣ２１によって、電源電圧ＶＤＩと同じ電圧値ＶＤＤに設定することでパイプライン処理が可能となる。また、ＤＥＣＢ４に供給されるクロックＣＬＫ２を、ＣＣＣ２５によって、入力クロックＣＬＫの３分周に設定し、ＤＥＣＢ４に供給される電源電圧ＶＤＩ２を、ＶＣＣ２２によって、電源電圧ＶＤＩよりも低い電圧値に設定することでパイプライン処理が可能となる。更に、ＥＸＢ７に供給されるクロックＣＬＫ３を、ＣＣＣ２６によって、入力クロックＣＬＫの３分周に設定し、ＥＸＢ７に供給される電源電圧ＶＤＩ３を、ＶＣＣ２３によって、電源電圧ＶＤＩと同じ電圧値ＶＤＤに設定することでパイプライン処理が可能となる。
【００９７】
【発明の効果】
以上説明したように、本発明によれば、機能ブロック毎に供給されるクロックと電源電圧を任意に設定することが可能となる。従って、命令の処理にクロック数がさほど必要ないブロックには供給されるクロックを停止する、もしくはクロックを分周し、またその期間における供給電圧を下げることにより、消費電力を削減することが可能になる。
【００９８】
また、デコード中の命令の命令実行に必要なクロック数を判定し、それを設定クロック数の最大値と比較することにより、パイプラインの１サイクルの周期を命令実行毎に決定することが可能となり、消費電力を削減しながらも高速な命令実行が可能になる。
【００９９】
また、デコードした前命令の実行クロック数と設定クロック数の最大値との減算、その減算結果と現命令の実行クロック数との加算、その加算結果と設定クロック数の最大値との比較により、１サイクルを超える命令実行ブロックでの処理を連続して行うことができ、高性能なデータ処理装置を実現することが可能になる。
【０１００】
更に、１つの命令において命令実行ブロックでの処理に２サイクル以上必要な場合には、複数の機能ブロックへの供給クロックと供給電圧を一時停止することにより、消費電力の削減が可能になる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態によるデータ処理装置の一構成例を示すブロック図
【図２】図１のデータ処理装置におけるパイプライン処理動作を説明するためのタイミングチャート
【図３】本発明の第２の実施形態によるデータ処理装置の一構成例を示すブロック図
【図４】図３のデータ処理装置におけるパイプライン処理動作を説明するためのタイミングチャート
【図５】本発明の第３の実施形態によるデータ処理装置の一構成例を示すブロック図
【図６】図５のデータ処理装置におけるパイプライン処理動作を説明するためのタイミングチャート
【図７】本発明の第４の実施形態によるデータ処理装置の一構成例を示すブロック図
【図８】図７のデータ処理装置におけるパイプライン処理動作を説明するためのタイミングチャート
【図９】本発明の第５の実施形態によるデータ処理装置の一構成例を示すブロック図
【図１０】図９のデータ処理装置におけるパイプライン処理動作を説明するためのタイミングチャート
【図１１】本発明の第６の実施形態によるデータ処理装置におけるパイプライン処理動作を説明するためのタイミングチャート
【図１２】従来のデータ処理装置の構成例を示すブロック図
【図１３】図１２のデータ処理装置における一つのパイプライン処理動作を説明するためのタイミングチャート
【図１４】図１２のデータ処理装置における他のパイプライン処理動作を説明するためのタイミングチャート
【符号の説明】
１　命令フェッチブロック（ＩＦＢ）
２　命令レジスタ（ＩＦＢＲ）
４　命令デコードブロック（ＤＥＣＢ）
５　デコードレジスタ（ＤＥＣＢＲ）
７　命令実行ブロック（ＥＸＢ）
８　実行レジスタ（ＥＸＢＲ）
２１、２２、２３　電圧制御回路（ＶＣＣ）
２４、２５、２６　クロック制御回路（ＣＣＣ）
３１、３２、３３　設定クロック数格納レジスタ（ＣＳＲ）
４０　実行クロック数格納レジスタ（ＣＳＣＥＢ）
４１　最大設定クロック数判定回路（ＭＳＣＲ）
４２、４３、４６　比較選択回路（ＣＰＳＣ）
４４　加算器（ＡＤＤ）
４５　減算器（ＳＵＢ）
５１、５２、５３　電圧制御有効フラグレジスタ（ＶＣＲ）
【図１】
2004094403.tif 000003
【図２】
2004094403.tif 000004
【図３】
2004094403.tif 000005
【図４】
2004094403.tif 000006
【図５】
2004094403.tif 000007
【図６】
2004094403.tif 000008
【図７】
2004094403.tif 000009
【図８】
2004094403.tif 000010
【図９】
2004094403.tif 000011
【図１０】
2004094403.tif 000012
【図１１】
2004094403.tif 000013
【図１２】
2004094403.tif 000014
【図１３】
2004094403.tif 000015
【図１４】
2004094403.tif 000016