(57)【特許請求の範囲】
【請求項１】
クロックに同期して処理を行う処理回路と、
前記処理回路へのクロック供給を制御するクロック供給制御回路を有する情報処理装置のクロック制御方法において、
前記処理回路における処理の実行開始から処理結果の出力までに必要とするサイクル数を抽出する工程と、
抽出された前記サイクル数を前記クロック供給制御回路に伝達する工程と、
前記処理回路における処理の開始からクロック供給を開始する工程と、
前記サイクル数の供給が終了した後、前記処理に後続する処理が無い場合には前記処理回路へのクロック供給を停止する工程を有することを特徴とするクロック制御方法。
【請求項２】
前記サイクル数が、処理実行開始から処理結果出力までの最小サイクル数以上であり、常時供給した場合のサイクル数よりも小さい請求項１記載のクロック制御方法。
【請求項３】
クロックに同期して処理を行う第１の処理回路及び第２の処理回路と、前記第１の処理回路へのクロック供給を制御するクロック供給制御回路とを有し、前記第１の処理回路における処理と前記第２の処理回路における処理とは独立して同時に実行することが可能であり、前記第２の処理回路は前記第１の処理回路における処理結果が入力される処理回路である情報処理装置のクロック制御方法において、
前記第１の処理回路における処理の実行開始から前記第２の処理回路へ処理結果を入力するまでに必要なサイクル数を抽出する工程と、
抽出された前記サイクル数を前記クロック供給制御手段に伝達する工程と、
前記第１の処理回路における処理の開始からクロック供給を開始する工程と、
前記サイクル数分のクロック供給が終了した後、前記第１の処理回路へのクロック供給を停止する工程を有することを特徴とするクロック制御方法。
【請求項４】
クロックに同期して処理を行う第１の処理回路及び第２の処理回路と、
前記第１の処理回路へのクロック供給を制御するクロック供給制御回路と、
前記第１の処理回路における処理結果が入力される第２の処理回路とを有する情報処理装置のクロック制御方法において、
前記第１の処理回路において第１の処理及び第２の処理が連続して処理される場合であり、かつ前記第２の処理回路において前記第１の処理回路の処理結果を入力として第３の処理を開始すると同時に、前記第１の処理回路において前記第２の処理を実行する場合に、
前記第１の処理回路における処理の実行に必要な第１のサイクル数を抽出する第１の工程と、
前記第１のサイクル数を前記クロック供給制御回路に伝達する第２の工程と、
前記第１の処理回路における処理の開始からクロック供給を開始する第３の工程と、
前記第１のサイクル数分のクロック供給が終了した時点で前記第２の処理回路における処理が開始可能か否かを判断する第４の工程と、
前記第１の処理回路における前記第２の処理の処理実行に必要な第２のサイクル数を抽出する第５の工程と、
前記第２のサイクル数を前記クロック供給制御回路に伝達する第６の工程と、
前記第４の工程において処理開始が可能であると判断された場合、前記第１の処理回路における処理結果を前記第２の処理回路に入力する第７の工程と、
前記第４の工程における処理開始が可能であると判断された場合、前記第１の処理回路へ前記第２のサイクル数のクロックを供給開始し、前記第２の処理回路における処理を前記第１の処理回路において処理を開始する第８の工程を含むことを特徴とするクロック制御方法。
【請求項５】
命令をパイプライン処理することが可能な情報処理装置のクロック制御方法において、
実行ステージにおける命令実行に必要なサイクル数を抽出する工程と、
前記実行ステージに属する回路へのクロック供給を制御する工程と、
抽出された前記サイクル数を伝達する工程を含み、
前記実行ステージにおける命令の実行開始から前記サイクル数分だけクロック供給を行い、前記命令がメモリステージに投入されるまでの間は前記クロック供給を停止することを特徴とするクロック制御方法。
【請求項６】
前記サイクル数を抽出する工程において、命令ごとに前記実行ステージにおける実行サイクル数を定め、命令コードをデコードし、命令の種別を判定すると同時に前記実行サイクル数を前記サイクル数として抽出する請求項５記載のクロック制御方法。
【請求項７】
前記サイクル数を抽出する工程において、前記実行ステージにおける実行サイクル数を命令のビットコードで定める実行サイクル数フィールドを設け、命令コードをデコードし、命令の種別を判定すると同時に、前記実行サイクル数フィールドから前記実行ステージにおける命令実行サイクル数を前記サイクル数として抽出する請求項６記載のクロック制御方法。
【請求項８】
前記サイクル数を抽出する工程において、前記情報処理装置が実行するすべての命令を前記実行ステージにおける実行サイクル数によってグループに分別し、分別された前記グループごとにグループ番号を定め、命令コードに前記グループ番号を設定するグループ番号フィールドを設け、命令コードをデコードし、命令の種別を判定すると同時に前記グループ番号を抽出し、前記グループ番号に対応する実行サイクル数を前記サイクル数として抽出する請求項６記載のクロック制御方法。
【請求項９】
前記サイクル数を抽出する工程において、可変長命令を処理する場合には、命令コードの命令語長ごとに前記実行ステージにおける実行サイクル数を定め、前記命令コードをデコードし、実行する命令を判定すると同時にデコードした命令の命令語長から前記実行サイクル数を前記サイクル数として抽出する請求項６記載のクロック制御方法。
【請求項１０】
命令をパイプライン処理することができる情報処理装置のクロック制御方法において、
実行ステージにおける命令実行に必要なサイクル数を抽出する工程と、
前記実行ステージに属する回路へのクロック供給を制御する工程と、
前記サイクル数を伝達する工程と、
前記実行ステージにおける命令の実行開始時点からクロック供給を行うか否かを選択する工程を含み、
前記クロック供給を選択する工程においてクロック供給を行うと選択された場合、前記クロック供給を制御する工程において前記実行ステージにおける命令の実行開始から前記サイクル数分だけクロック供給を開始することを特徴とするクロック制御方法。
【請求項１１】
前記クロック供給を選択する工程において、命令コードに実行ステージにおける命令の実行開始からクロック供給を行うか否かを示すクロック供給許可ビットを設け、前記命令コードのデコードと同時に前記クロック供給許可ビットからクロック供給を行うか否かに関する情報を抽出する請求項１０記載のクロック制御方法。
【請求項１２】
連続する第１の命令と第２の命令との依存関係を解析し、前記第２の命令が前記第１の命令の実行結果を参照する場合には、前記クロック供給許可ビットをオン状態にする請求項１１記載のクロック制御方法。
【請求項１３】
命令をパイプライン処理することができる情報処理装置のクロック制御方法において、
実行ステージにおける命令の実行に必要なサイクル数を抽出する工程と、
前記実行ステージに属する回路へのクロック供給を制御できる工程と、
前記サイクル数を伝達する工程と、
前記実行ステージにおける命令の実行開始時点からクロック供給を行うか否かを選択する工程と、
実行ステージの次のステージの状態を判定する工程を含み、
前記クロック供給を選択する工程においてクロック供給を行うと選択され、前記次のステージの状態を判定する工程において前記次のステージが実行可能であると判定された場合、前記クロック供給を制御する工程において前記実行ステージにおける命令の実行開始から前記サイクル数分だけクロック供給を開始することを特徴とするクロック制御方法。
【請求項１４】
前記クロック供給を選択する工程において、前記実行ステージの次のステージで実行中の第１の命令の実行状態と、前記実行ステージで実行開始する第２の命令と前記第１の命令の依存関係を判定し、
前記第２の命令が前記第１の命令の実行結果に依存する場合には、前記第１の命令の実行完了まで前記第２の命令を前記実行ステージで実行するのに必要なサイクル数のクロック供給を行わないことを選択し、
依存しない場合には、前記実行ステージで実行するのに必要なサイクル数のクロック供給を行うことを選択する請求項１３記載のクロック制御方法。
【請求項１５】
命令をパイプライン処理することができる情報処理装置のクロック制御方法において、
実行ステージにおける命令の実行に必要なサイクル数を抽出する工程と、
前記実行ステージに属する回路へのクロック供給を制御する工程と、
前記サイクル数を伝達する工程と、
実行ステージにおける命令の実行開始時点からクロック供給を行うか否かを選択する工程と、
前記実行ステージより後のすべてのステージで命令実行が完了していることを検出する工程を含み、
前記クロック供給を選択する工程においてクロック供給を行うと選択され、前記実行ステージより後のすべてのステージで命令実行が完了していることが検出された場合、前記クロック供給を制御する工程において、前記実行ステージにおける命令の実行開始から前記サイクル数分だけクロック供給を開始することを特徴とするクロック制御方法。
【請求項１６】
パイプラインの各ステージごとに各ステージへのクロック供給の制御が可能であり、各ステージにおける命令の実行時以外は前記各ステージのクロック供給を停止可能である請求項１５記載のクロック制御方法。
【請求項１７】
命令コードに低速動作ビットが設けられ、前記低速動作ビットがセットされている命令を前記実行ステージで実行する場合には、前記実行ステージより後のステージにおいて先行する命令の実行がすべてのステージで完了したと検出した後に前記サイクル数分のクロック供給を開始する請求項１６記載のクロック制御方法。
【請求項１８】
高級言語で記述されているプログラムに基づいて生成される実行形式コードが用いられるクロック制御方法であって、
前記高級言語によるプログラム記述によって、低速動作を行うか否かが指定される工程を含み、
前記高級言語によって低速動作を行うと指定された前記プログラム記述が実行形式コードに変換される場合に、前記クロック供給開始許可ビットがオン状態とされる請求項１５記載のクロック制御方法。
【請求項１９】
クロックに同期して処理を行う処理回路と、
前記処理回路へのクロック供給を制御するクロック供給制御回路を有する情報処理装置において、
前記処理回路における処理の実行開始から処理結果の出力までに必要とするサイクル数を抽出する手段と、
抽出された前記サイクル数を前記クロック供給制御回路に伝達する手段と、
前記処理回路における処理の開始からクロック供給を開始する手段と、
前記サイクル数の供給が終了した後、前記処理に後続する処理が無い場合には前記処理回路へのクロック供給を停止する手段を有することを特徴とする情報処理装置。
【請求項２０】
命令をパイプライン処理することが可能な情報処理装置において、
実行ステージにおける命令実行に必要なサイクル数を抽出する手段と、
前記実行ステージに属する回路へのクロック供給を制御する手段と、
抽出された前記サイクル数を伝達する手段を含み、
前記実行ステージにおける命令の実行開始から前記サイクル数分だけクロック供給を行い、前記命令がメモリステージに投入されるまでの間は前記クロック供給を停止することを特徴とする情報処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プロセッサを用いる情報処理装置に関する。特に、クロック供給の制御方法に特徴を有する情報処理装置に関する。
【０００２】
【従来の技術】
命令を処理するプロセッサをはじめとした情報処理装置において、命令実行のスループットを向上させるために一般的にパイプライン処理が行われる。一般的なパイプライン構成としては、ＩＦステージ（命令フェッチステージ）、ＤＥＣステージ（命令デコードステージ）、ＥＸステージ（命令実行ステージ）、ＭＥＭステージ（メモリアクセスステージ）、ＷＢステージ（メモリライトバックステージ）の５段階構成が良く用いられている。通常は各ステージに同じ周波数のクロックが供給されることによって、各ステージにおける処理が進行することになる。
【０００３】
また、プロセッサ自体の実行性能を向上させるためには、実行周波数を増加させることによって処理の高速化を図ることが多い。しかしながら、処理の高速化を図るためにクロック周波数を増加させると、クロック周波数に比例してプロセッサの消費電力が増加してしまう。特に、プロセッサが搭載される携帯機器等においては、処理性能の向上とともに消費電力低減が課題となっており、かかる技術的ジレンマをいかに解決していくかが重要な課題の一つとなっている。
【０００４】
従来から、消費電力低減を実現するために、あるステージで複数サイクルの処理を必要とする場合には他のステージのクロック供給を停止するという技術がある。この技術においては、ＥＸステージで複数サイクルの処理を行っている場合には、ＤＥＣステージ及びＩＦステージのクロック供給を停止し、ＤＥＣステージ及びＩＦステージにおける動作を停止させることができることから、パイプラインにおいて処理が停止するステージでの消費電力を低減させることが可能となる。
【０００５】
同様の手法により、ＭＥＭステージにおいて複数サイクル処理を行っている場合に、ＥＸステージ、ＤＥＣステージ、及びＩＦステージのクロック供給を停止させることによって、消費電力を低減させることも可能である。
【０００６】
【発明が解決しようとする課題】
しかしながら、上述したような従来の解決方法では、例えばＭＥＭステージで複数サイクル処理を行っている場合にはＥＸステージのクロック供給が停止されるために、ＥＸステージに存在する命令はＥＸステージに投入されてから実行が停止することになる。このため、ＭＥＭステージで複数サイクルの処理を行っているサイクル期間中にＥＸステージで複数サイクル処理を必要とする命令が投入されても、ＭＥＭステージでの実行が完了していないとＥＸステージでの多サイクル命令の実行が開始できない。このために、ＭＥＭステージの実行が完了した時点ではＥＸステージの命令は実行完了しておらず、ＭＥＭステージでも実行完了後にＥＸステージの命令をすぐにＭＥＭステージに投入することができないという問題点が生じることになる。
【０００７】
図１を参照しながら上述した例における処理のタイミングについて詳細に説明する。図１においては、ＭＥＭステージで７サイクルの処理が行われる命令Ａと、ＥＸステージで５サイクルの処理が行われる命令Ｂが連続して実行される場合のパイプライン状態を示している。
【０００８】
サイクル１−１、１−２において、順次命令Ａおよび命令ＢがパイプラインのＤＥＣステージに投入され、サイクル１−３から命令ＡのＭＥＭステージでの処理が開始される。同時にサイクル１−３において命令ＢはＥＸステージに投入される。
【０００９】
命令ＡはＭＥＭステージで７サイクルの処理であるため、サイクル１−４の期間においては命令Ａの実行によってＭＥＭステージにおけるパイプロックが発生する。従来の技術では、ＭＥＭステージでの処理完了までＥＸステージのクロック供給を停止させるため、サイクル１−４の期間、図１に示すようにＥＸステージクロックは停止されることになる。したがって、ＥＸステージでは命令Ｂの処理が行われるが、ＥＸステージクロックが停止しているため、処理の継続を行うことはできない。
【００１０】
ＥＸステージにクロック供給が再開されるのは、ＭＥＭステージの命令Ａの実行が完了したサイクル１−５からであり、ＥＸステージの命令Ｂの実行再開はサイクル１−５から行われる。
【００１１】
ＥＸステージにクロックが供給されつづけている場合には、命令Ｂは命令ＡがＭＥＭステージで処理を行っている期間でも実行を行うことが可能であり、命令ＡがＷＢステージに投入されるサイクル１−５の時点で命令ＢをＭＥＭステージに投入することが可能である。しかし、消費電力を下げる従来の技術では、命令ＡがＷＢステージに投入されないとＥＸステージの実行が再開されないために、実際にはサイクル１−７でＭＥＭステージに投入されることになる。
【００１２】
すなわち、消費電力を低減させるために、パイプライン処理における実行効率を損なう処理が行われていることになる。また、ハードウェアにおけるすべての命令実行時に上記のようなクロック停止が行われるため、プログラム処理の性質上、クロックを停止せずに通常動作と同等の性能での処理を行いたい場合においては、別途クロックを停止させないように指定する手段を設ける必要が生じることになる。
【００１３】
本発明は、上記問題点を解消するべく、パイプライン処理の実行効率を損なうことなく消費電力を低減することができるクロック制御方法及び当該クロック制御方法を用いた情報処理装置を提供することを目的とする。
【００１４】
【課題を解決するための手段】
上記目的を達成するために本発明にかかるクロック制御方法は、クロックに同期して処理を行う処理回路と、前記処理回路へのクロック供給を制御するクロック供給制御回路を有する情報処理装置のクロック制御方法において、前記処理回路における処理の実行開始から処理結果の出力までに必要とするサイクル数を抽出する工程と、抽出された前記サイクル数を前記クロック供給制御回路に伝達する工程と、前記処理回路における処理の開始からクロック供給を開始する工程と、前記サイクル数の供給が終了した後、前記処理に後続する処理が無い場合には前記処理回路へのクロック供給を停止する工程を有することを特徴とする。
【００１５】
かかる構成により、処理に必要なサイクル数分だけクロックを供給することができることから、無駄なクロック供給を未然に防止することができ、消費電力を低減することが可能となる。
【００１６】
また、本発明にかかるクロック制御方法は、サイクル数が、処理実行開始から処理結果出力までの最小サイクル数以上であり、常時供給した場合のサイクル数よりも小さいことが好ましい。最小サイクル数において最も顕著な効果を得ることができるが、最低限常時供給した場合におけるサイクル数より小さければ同様の効果が期待できるからである。
【００１７】
次に上記目的を達成するために本発明にかかるクロック制御方法は、クロックに同期して処理を行う第１の処理回路及び第２の処理回路と、第１の処理回路へのクロック供給を制御するクロック供給制御回路と、第１の処理回路における処理結果が入力される第２の処理回路とを有する情報処理装置のクロック制御方法において、第１の処理回路において第１の処理及び第２の処理が連続して処理される場合であり、かつ第２の処理回路において第１の処理回路の処理結果を入力として第３の処理を開始すると同時に、第１の処理回路において第２の処理を実行する場合に、第１の処理回路における処理の実行に必要な第１のサイクル数を抽出する第１の工程と、第１のサイクル数をクロック供給制御回路に伝達する第２の工程と、第１の処理回路における処理の開始からクロック供給を開始する第３の工程と、第１のサイクル数分のクロック供給が終了した時点で第２の処理回路における処理が開始可能か否かを判断する第４の工程と、第１の処理回路における第２の処理の処理実行に必要な第２のサイクル数を抽出する第５の工程と、第２のサイクル数をクロック供給制御回路に伝達する第６の工程と、第４の工程において処理開始が可能であると判断された場合、第１の処理回路における処理結果を第２の処理回路に入力する第７の工程と、第４の工程における処理開始が可能であると判断された場合、第１の処理回路へ第２のサイクル数のクロックを供給開始し、第２の処理回路における処理を第１の処理回路において処理を開始する第８の工程を含むことを特徴とする。
【００１８】
かかる構成により、処理に必要なサイクル数分だけクロックを供給することができることから、無駄なクロック供給を未然に防止することができ、消費電力を低減することが可能となる。
【００１９】
次に上記目的を達成するために本発明にかかるクロック制御方法は、クロックに同期して処理を行う第１の処理回路及び第２の処理回路と、第１の処理回路へのクロック供給を制御するクロック供給制御回路と、第１の処理回路における処理結果が入力される第２の処理回路とを有する情報処理装置のクロック制御方法において、第１の処理回路における処理と第２の処理回路における処理とが連続して処理される場合に、第１の処理回路における処理の実行に必要な第１のサイクル数を抽出する第１の工程と、第１のサイクル数をクロック供給制御回路に伝達する第２の工程と、第１の処理回路における処理の開始からクロック供給を開始する第３の工程と、第１のサイクル数分のクロック供給が終了した時点で第２の処理回路における処理が開始可能か否かを判断する第４の工程と、第１の処理回路における第２の処理の処理実行に必要な第２のサイクル数を抽出する第５の工程と、第２のサイクル数をクロック供給制御回路に伝達する第６の工程と、第４の工程において処理開始が可能であると判断された場合、第１の処理回路における処理結果を第２の処理回路に入力する第７の工程と、第４の工程における処理開始が可能であると判断された場合、第１の処理回路へ第２のサイクル数のクロック供給を開始し、第２の処理回路における処理を第１の処理回路において処理を開始する第８の工程を含むことを特徴とする。
【００２０】
次に上記目的を達成するために本発明にかかるクロック制御方法は、命令をパイプライン処理することが可能な情報処理装置のクロック制御方法において、実行ステージにおける命令実行に必要なサイクル数を抽出する工程と、実行ステージに属する回路へのクロック供給を制御する工程と、抽出されたサイクル数を伝達する工程を含み、実行ステージにおける命令の実行開始からサイクル数分だけクロック供給を行うことを特徴とする。
【００２１】
かかる構成により、実行サイクルに必要なクロック供給のみを行うことによって、パイプライン処理の実行効率を損なうことなく消費電力を低減することが可能となる。
【００２２】
また、本発明にかかるクロック制御方法は、サイクル数を抽出する工程において、命令ごとに実行ステージにおける実行サイクル数を定め、命令コードをデコードし、命令の種別を判定すると同時に実行サイクル数をサイクル数として抽出することが好ましい。
【００２３】
また、本発明にかかるクロック制御方法は、サイクル数を抽出する工程において、実行ステージにおける実行サイクル数を命令のビットコードで定める実行サイクル数フィールドを設け、命令コードをデコードし、命令の種別を判定すると同時に、実行サイクル数フィールドから実行ステージにおける命令実行サイクル数をサイクル数として抽出することが好ましい。同様に、ハードウェア的に命令ごとの実行サイクル数を記憶したり、あるいは命令ごとのクロックを生成する回路が不要になることから、デコーダ回路自体の規模を縮小することができ、全体として消費電力を削減することができるからである。
【００２４】
また、本発明にかかるクロック制御方法は、サイクル数を抽出する工程において、情報処理装置が実行するすべての命令を実行ステージにおける実行サイクル数によってグループに分別し、分別されたグループごとにグループ番号を定め、命令コードにグループ番号を設定するグループ番号フィールドを設け、命令コードをデコードし、命令の種別を判定すると同時にグループ番号を抽出し、グループ番号に対応する実行サイクル数をサイクル数として抽出することが好ましい。同様に、ハードウェア的に命令ごとの実行サイクル数を記憶したり、あるいは命令ごとのクロックを生成する回路が不要になることから、デコーダ回路自体の規模を縮小することができ、全体として消費電力を削減することができるからである。
【００２５】
また、本発明にかかるクロック制御方法は、サイクル数を抽出する工程において、可変長命令を処理する場合には、命令コードの命令語長ごとに実行ステージにおける実行サイクル数を定め、命令コードをデコードし、実行する命令を判定すると同時にデコードした命令の命令語長から実行サイクル数をサイクル数として抽出することが好ましい。同様に、ハードウェア的に命令ごとの実行サイクル数を記憶したり、あるいは命令ごとのクロックを生成する回路が不要になることから、デコーダ回路自体の規模を縮小することができ、全体として消費電力を削減することができるからである。
【００２６】
次に上記目的を達成するために本発明にかかるクロック制御方法は、命令をパイプライン処理することができる情報処理装置のクロック制御方法において、実行ステージにおける命令実行に必要なサイクル数を抽出する工程と、実行ステージに属する回路へのクロック供給を制御する工程と、サイクル数を伝達する工程と、実行ステージにおける命令の実行開始時点からクロック供給を行うか否かを選択する工程を含み、クロック供給を選択する工程においてクロック供給を行うと選択された場合、クロック供給を制御する工程において実行ステージにおける命令の実行開始からサイクル数分だけクロック供給を開始することを特徴とする。
【００２７】
かかる構成により、実行ステージにおける命令の実行開始時点からクロック供給を行うか否かを判断して、必要な場合にのみクロック供給を行うことができることから、パイプライン処理の実行効率を損なうことなく消費電力を低減することが可能となる。
【００２８】
また、本発明にかかるクロック制御方法は、クロック供給を選択する工程において、命令コードに実行ステージにおける命令の実行開始からクロック供給を行うか否かを示すクロック供給許可ビットを設け、命令コードのデコードと同時にクロック供給許可ビットからクロック供給を行うか否かの情報を抽出することが好ましい。クロック供給許可ビットからクロック供給を行うか否かを判断できるので、ハードウェア的にクロック供給の必要性を判断する必要が無く、その分消費電力を低減することが可能となるからである。
【００２９】
また、本発明にかかるクロック制御方法は、連続する第１の命令と第２の命令との依存関係を解析し、第２の命令が第１の命令の実行結果を参照する場合には、クロック供給許可ビットをオン状態にすることが好ましい。依存関係にある第１の命令が実行完了次第、第２の命令にクロック供給できるようにするためである。
【００３０】
次に上記目的を達成するために本発明にかかるクロック制御方法は、命令をパイプライン処理することができる情報処理装置の制御方法において、実行ステージにおける命令の実行に必要なサイクル数を抽出する工程と、実行ステージに属する回路へのクロック供給を制御できる工程と、サイクル数を伝達する工程と、実行ステージにおける命令の実行開始時点からクロック供給を行うか否かを選択する工程と、実行ステージの次のステージの状態を判定する工程を含み、クロック供給を選択する工程においてクロック供給を行うと選択され、次のステージの状態を判定する工程において次のステージが実行可能であると判定された場合、クロック供給を制御する工程において実行ステージにおける命令の実行開始からサイクル数分だけクロック供給を開始することを特徴とする。
【００３１】
かかる構成により、実行ステージにおける命令の実行開始時点からクロック供給を行うか否かを判断するとともに、次のステージの状態に応じてクロック供給を行うことができることから、パイプライン処理の実行効率を損なうことなく消費電力を低減することが可能となる。
【００３２】
また、本発明にかかるクロック制御方法は、クロック供給を選択する工程において、実行ステージの次のステージで実行中の第１の命令の実行状態と、実行ステージで実行開始する第２の命令と第１の命令の依存関係を判定し、第２の命令が第１の命令の実行結果に依存する場合には、第１の命令の実行完了まで第２の命令を実行ステージで実行するのに必要なサイクル数のクロック供給を行わないことを選択し、依存しない場合には、実行ステージで実行するのに必要なサイクル数のクロック供給を行うことを選択することが好ましい。依存関係にある場合に第１の命令が完了するまで第２の命令を実行することがないようにするためである。
【００３３】
次に上記目的を達成するために本発明にかかるクロック制御方法は、命令をパイプライン処理することができる情報処理装置の制御方法において、実行ステージにおける命令の実行に必要なサイクル数を抽出する工程と、実行ステージに属する回路へのクロック供給を制御する工程と、サイクル数を伝達する工程と、実行ステージにおける命令の実行開始時点からクロック供給を行うか否かを選択する工程と、実行ステージより後のすべてのステージで命令実行が完了していることを検出する工程を含み、クロック供給を選択する工程においてクロック供給を行うと選択され、実行ステージより後のすべてのステージで命令実行が完了していることが検出された場合、クロック供給を制御する工程において、実行ステージにおける命令の実行開始からサイクル数分だけクロック供給を開始することを特徴とする。
【００３４】
かかる構成により、実行ステージにおける命令の実行開始時点からクロック供給を行うか否かを判断するとともに、パイプライン処理の実行効率を下げてプログラムを実行して良い場合により低消費電力化を図ることが可能となる。
【００３５】
また、本発明にかかるクロック制御方法は、パイプラインの各ステージごとに各ステージへのクロック供給の制御が可能であり、各ステージにおける命令の実行時以外は各ステージのクロック供給を停止可能であることが好ましい。無駄なクロック供給を回避することができるからである。
【００３６】
また、本発明にかかるクロック制御方法は、命令コードに低速動作ビットが設けられ、低速動作ビットがセットされている命令を実行ステージで実行する場合には、実行ステージより後のステージにおいて先行する命令の実行がすべてのステージで完了したと検出した後にサイクル数分のクロック供給を開始することが好ましい。低速動作ビットによって、高速動作が必要とされない処理において、処理にかかる消費電力を低減することができるからである。
【００３７】
また、本発明にかかるクロック制御方法は、高級言語で記述されているプログラムに基づいて生成される実行形式コードが用いられるクロック制御方法であって、高級言語によるプログラム記述によって、低速動作を行うか否かが指定される工程を含み、高級言語によって低速動作を行うと指定されたプログラム記述が実行形式コードに変換される場合に、クロック供給開始許可ビットがオン状態とされることが好ましい。プロセッサが動的に消費電力状態を検出する必要がないため、検出回路のハードウェア実装が不要となり、消費電力の低減効果を得ることができるからである。
【００３８】
次に上記目的を達成するために本発明にかかる情報処理装置は、命令をパイプライン処理することが可能な情報処理装置において、実行ステージにおける命令実行に必要なサイクル数を抽出する手段と、前記実行ステージに属する回路へのクロック供給を制御する手段と、抽出された前記サイクル数を伝達する手段を含み、前記実行ステージにおける命令の実行開始から前記サイクル数分だけクロック供給を行い、前記命令がメモリステージに投入されるまでの間は前記クロック供給を停止することを特徴とする。
【００３９】
かかる構成により、パイプライン処理を行うプロセッサにおいて実行性能を落とさずに消費電力の低減効果を得ることができ、命令コード中に実行サイクル数を定義できるようにすることでハードウェア資源の増加を抑えて、かつ消費電力の低減効果を得ることが可能となる。
【００４０】
【発明の実施の形態】
（実施の形態１）
以下、本発明の実施の形態１にかかるクロック制御方法を用いた情報処理装置について、図面を参照しながら説明する。図２は、本発明の実施の形態１にかかるクロック制御方法を用いた情報処理装置のシステム構成図である。
【００４１】
図２において、２０１はクロックに同期して処理を行う第１の処理回路を、２０２は第１の処理回路２０１のクロックを制御するクロック制御回路を、２０３はサイクル数抽出回路を、２０４はクロック制御回路２０２へ入力されるクロックを、２０８はサイクル数抽出回路２０３で抽出された処理サイクル数を、２１４はクロック２０４を生成するクロックジェネレータを、２０９はクロック制御回路２０２から処理回路２０１に入力される処理回路クロックを、２１０はクロックの最終サイクルを示すクロック終了信号を、それぞれ示す。
【００４２】
また、２０５は第１の処理回路２０１への命令を、２０６は第１の処理回路２０１へのリクエストを、２０７は第１の処理回路２０１への入力データを、それぞれ示しており、これらはシステム制御部２１３から出力される。さらに、２１１は第１の処理回路２０１からの出力データを、２１２は出力データ２１１を新たな入力として動作する第２の処理回路を、それぞれ示してしる。
【００４３】
図３は、本実施の形態１にかかるロック制御方法を用いた情報処理装置における処理の流れ図である。図３において、システム制御部２１３から第１の処理回路２０１における処理の命令及びリクエストがある場合、サイクル数抽出ステップ（ステップＳ３０１）において第１の処理回路２０１での処理に必要なサイクル数を抽出する。
【００４４】
次に、第１の処理回路２０１にクロックを供給開始するとともに（ステップＳ３０２）、データを入力する（ステップＳ３０３）。そして、ステップＳ３０１で抽出したサイクル数のクロック供給を完了したか否かを判定し（ステップＳ３０４）、クロック供給を完了していない場合には（ステップＳ３０４：Ｎｏ）、次の１サイクルのクロックを出力する（ステップＳ３０６）。ステップＳ３０６後、再度ステップＳ３０４を繰り返す。
【００４５】
ステップＳ３０４において抽出したサイクル数のクロック供給を完了したと判定した場合（ステップＳ３０４：Ｙｅｓ）、第１の処理回路２０１における処理は完了したことになり、データを出力することになる（ステップＳ３０５）。
【００４６】
次に、後続する命令があるかどうかを判定し（ステップＳ３０７）、後続する命令がある場合には（ステップＳ３０７：Ｙｅｓ）、ステップＳ３０１から再度処理を行い、後続する命令が無い場合には（ステップＳ３０７：Ｎｏ）、クロック制御回路２０２からのクロック供給を停止して（ステップＳ３０８）、次の命令があるまでステップＳ３０７を繰り返すことになる。
【００４７】
図４に、クロック供給のタイミング図を示す。図４において、リクエストと命令がサイクル４−１で発生すると、処理に必要なサイクル数を抽出して、処理回路クロックの供給を開始する。なお、図４においては、処理が５サイクルで行われる場合について説明する。
【００４８】
すなわち、処理は５サイクルで行われるため、処理回路クロックは５サイクルのクロック供給を行い（サイクル４−２）、その後、処理回路クロックを停止する。
【００４９】
クロックの最終サイクル４−３ではクロック終了信号を出力し、第１の処理回路２０１から処理結果のデータを出力する。あるいは、クロック終了信号が出力されているサイクルでのデータ出力を有効と判断する。
【００５０】
以上のように本実施の形態１によれば、システム制御部２１３から第１の処理回路２０１における処理の命令及びリクエストがある場合、第１の処理回路２０１での処理に必要なサイクル数を事前に抽出しておき、その分だけクロックを供給することから、無駄なクロック供給を未然に回避することが可能となる。
【００５１】
（実施の形態２）
以下、本発明の実施の形態２にかかるクロック制御方法を用いた情報処理装置について、図面を参照しながら説明する。本実施の形態２では、第１の処理回路２０１が、連続して第１の処理と第２の処理を行う場合のクロック制御方法について説明する。図２において、第１の処理回路２０１は、処理が終了すると第２の処理回路２１２にデータを出力し、第２の処理回路２１２が処理を開始すると、第１の処理回路２０１は第２の処理を開始することになる。
【００５２】
また、図１６は、本発明の実施の形態２にかかるクロック制御方法を用いた情報処理装置での第１の処理回路における処理の流れ図である。図１６において、システム制御部２１３から第１の処理回路２０１における処理の命令及びリクエストがある場合、まず第１の処理回路２０１における処理に必要なサイクル数を抽出する（ステップＳ３０１）。
【００５３】
次に、第１の処理回路２０１に対してクロック供給を開始するとともに（ステップＳ３０２）、データを入力する（ステップＳ３０３）。そして、ステップＳ３０１で抽出したサイクル数分のクロック供給を完了していないと判定された場合には（ステップＳ３０４：Ｎｏ）、次の１サイクルのクロックを出力して（ステップＳ３０６）。抽出したサイクル数になるまでステップＳ３０４を繰り返す。
【００５４】
ステップＳ３０４において抽出したサイクル数分のクロック供給を完了したと判定された場合には（ステップＳ３０４：Ｙｅｓ）、第１の処理回路２０１における処理は完了したことになり、データを出力することになる（ステップＳ３０５）。
【００５５】
次に、第１の処理回路２０１への次のリクエストがあるか否かを判定する（ステップＳ１６０１）。次のリクエストがないと判定された場合には（ステップＳ１６０１：Ｎｏ）、クロック供給を停止し（ステップＳ１６０４）、次のリクエストがあるまでクロック供給は行われない。
【００５６】
次のリクエストがあると判定された場合には（ステップＳ１６０１：Ｙｅｓ）、次のリクエストに対する処理実行にかかるサイクル数を抽出し（ステップＳ１６０２）、現在第１の処理回路２０１が出力しているデータを新たな入力として第２の処理回路２１２が処理を開始できるか否かを判定する（ステップＳ１６０３）。
【００５７】
第２の処理回路２１２が処理を開始できると判定された場合には（ステップＳ１６０３：Ｙｅｓ）、第２の処理回路２１２は第１の処理回路２０１における出力データを取り込んで処理の実行を開始し、第１の処理回路２０１はステップＳ３０２に戻って次のリクエストに対する処理を実行する。
【００５８】
第２の処理回路２１２が処理を開始できないと判定された場合には（ステップＳ１６０３：Ｎｏ）、クロック供給を停止し、第２の処理回路２１２で現在第１の処理回路２０１が出力しているデータを用いた処理を開始できるようになるまでクロック供給を停止する（ステップＳ１６０４）。
【００５９】
次に、図１７には本発明の実施の形態２にかかるクロック制御方法を用いた情報処理装置におけるクロック供給のタイミング図を示す。図１７において、第１のリクエスト及び命令がサイクル１７−１で発生すると、処理に必要なサイクル数を抽出して処理回路に対してクロック供給を開始する。
【００６０】
なお、図１７においては、図４と同様に、処理が５サイクルで行われる場合について説明する。すなわち、第１のリクエスト及び命令に対する処理は５サイクルで行われるため、処理回路クロックはサイクル１７−２に示すように５サイクルのクロック供給を行い、５サイクル分のクロック供給が完了したら処理回路クロックが停止する。処理回路クロックの最終サイクル１７−３においてはクロック終了信号を出力し、第１の処理回路２０１から第２の処理回路２１２にデータを出力する。
【００６１】
また、処理回路クロックの最終サイクル１７−３においては、第２の処理回路２１２が処理を開始することができるか否かを判定する。図１７は、サイクル１７−３においては処理を開始することができない場合を示しており、第２の処理回路２１２はサイクル１７−５において処理を開始できることを示している。
【００６２】
すなわち、サイクル１７−５において第２の処理回路２１２が処理開始信号を出力するまで、第１の処理回路２０１は次のリクエスト及び命令が入力されても実行を開始することはなく、またクロック供給も停止されたままとなる。さらに、サイクル１７−３において第２のリクエストが第１の処理回路２０１に入力されたとしても、第１の処理回路２０１は、処理回路クロックの供給が完了してから第２の処理回路が処理を開始できるサイクル１７−５までのサイクル期間１７−４の間は、第２のリクエストに対する処理の実行を開始することはない。サイクル１７−４の期間中は、第１の処理回路２０１における第２のリクエストに対する処理に必要なサイクル数を抽出するのみである。
【００６３】
そして、サイクル１７−５において、第２の処理回路２１２が処理を開始することができるようになると、第２の処理回路２１２は第１の処理回路２０１の出力データを用いて処理を開始し、同時に第１の処理回路２０１は第２のリクエスト及び命令についての処理を開始する。サイクル１７−５においては、第１の処理回路２０１はサイクル１７−１と同様に、処理に必要なクロック数のみクロック供給が開始される。
【００６４】
以上のように本実施の形態２によれば、第２の処理回路で実行中であっても、次の処理を第１の処理回路で実行することができ、無駄なクロック供給を未然に回避することが可能となる。
【００６５】
（実施の形態３）
以下、本発明の実施の形態３にかかるクロック制御システムについて、図面を参照しながら説明する。図５は、本実施の形態３にかかるクロック制御方法を用いたパイプライン処理を行うプロセッサの構成図を示しており、ＥＸステージでの実行サイクル数の抽出を命令デコーダで行うプロセッサを示している。
【００６６】
図５には標準的な５段パイプライン構成のプロセッサを示している。図５において、ＩＦステージ５０１、ＤＥＣステージ５０２、ＭＥＭステージ５０４、ＷＢステージ５０５には、クロックジェネレータ５０９からクロック５１０が供給される。ＥＸステージ５０３には、クロック５１０がクロック制御部５０７で制御されたＥＸステージクロック５１６が供給される。
【００６７】
ＤＥＣステージ５０２内には、命令がＥＸステージ５０３において何サイクルで実行されるかを抽出するサイクル数抽出部５０６を装備している。クロック制御部５０７はＤＥＣステージ５０２内のサイクル数抽出部５０６によって抽出されたサイクル数５１７が出力され、ＥＸステージ５０３での必要サイクル数をＥＸステージ５０３に供給する。
【００６８】
ＥＸステージ５０３と、ＭＥＭステージ５０４には、各ステージでの命令実行状態を判定するＥＸステージ状態判定部５１２、ＭＥＭステージ状態判定部５１１を装備し、ＥＸステージ判定結果５２１とＭＥＭステージ判定結果５２２がＥＸステージ実行開始要求生成部５１３に出力する。
【００６９】
ＤＥＣステージ５０２からのリクエスト５２３が出力されると、ＥＸステージ実行開始要求生成部５１３はＥＸステージ判定結果５２１とＭＥＭステージ判定結果５２２からＥＸステージ５０３に命令投入可能であると判断した場合、実行開始信号５１８をＥＸステージ５０３へ出力する。また、実行開始信号５１８はクロック制御部５０７へも入力される
依存関係判定部５１４はＤＥＣステージ５０２にある命令の情報であるＤＥＣ命令情報５２０と、ＥＸステージ５０３にある命令の情報であるＥＸ命令情報５１９からＤＥＣステージの命令とＥＸステージの命令との依存関係を判定し、依存判定結果５２４を出力する。供給開始信号生成部５０８は実行開始信号５１８と依存判定結果５２４からＥＸステージにいまから投入する命令が先行命令と依存関係が無い場合には供給開始信号５１５をクロック制御部５０７へ出力する。
【００７０】
図６には、命令実行及びクロック供給時における処理の流れ図を示す。図６では、ＤＥＣステージ、ＥＸステージにおける処理の流れ図を示している。
【００７１】
まず、ＤＥＣステージに命令があるかどうかを調べる（ステップＳ６０１）。命令が存在しない場合には（ステップＳ６０１：Ｎｏ）、クロック１サイクル待機する（ステップＳ６０２）。命令が存在する場合には（ステップＳ６０１：Ｙｅｓ）、デコードした命令に対してＥＸステージでの実行サイクル数を抽出する（ステップＳ６０３）。
【００７２】
次に、ＥＸステージへ命令投入が可能かどうかを判定する。まずＥＸステージにおいて先行する命令が存在するかどうかを調べ（ステップＳ６０４）、先行する命令が存在する場合には（ステップＳ６０４：Ｙｅｓ）、当該命令の実行が完了しているか否かを判定する（ステップＳ６０５）。ステップＳ６０５において実行が完了していないと判定された場合には（ステップＳ６０５：Ｎｏ）、クロック１サイクル分だけ待機し（ステップＳ６０６）、実行が完了していると判定された場合には（ステップＳ６０５：Ｙｅｓ）、ＭＥＭステージにおける実行が完了したか否かを調べる（ステップＳ６０７）。
【００７３】
ステップＳ６０７において実行が完了していないと判断された場合には（ステップＳ６０７：Ｎｏ）、クロック１サイクル分だけ待機し（ステップＳ６０８）、実行が完了していると判定された場合には（ステップＳ６０７：Ｙｅｓ）、ＥＸステージに命令投入が可能であるものと判断し、ＥＸステージの実行開始要求を出してＥＸステージへ命令の投入を行う（ステップＳ６０９）。それと同時に、クロック制御部へＥＸステージに供給するサイクル数を入力する（ステップＳ６１０）。また、先行する命令と今からＥＸステージで実行する命令との依存関係の有無を確認する（ステップＳ６１１）。
【００７４】
ステップＳ６１１において依存関係が無いと判断され（ステップＳ６１１：Ｎｏ）、かつステップＳ６０９においてＥＸステージ実行開始要求がある場合には，クロックの供給を開始することになる（ステップＳ６１２）。
【００７５】
ＥＸステージに命令が投入されても、先行する命令にこれからＥＸステージで実行開始する命令が依存している場合、すなわち現在ＭＥＭステージで実行している命令のＭＥＭステージの実行結果をＥＸステージで実行する命令が参照する場合には、ＥＸステージでの命令実行を開始することができない。
【００７６】
したがって、ステップＳ６１１において依存関係があると判断された場合には（ステップＳ６１１：Ｙｅｓ）、先行する命令はＭＥＭステージで実行していることから、ＭＥＭステージにおける実行状態を判定し、ＭＥＭステージにおいて実行が完了しているか否かを判定する（ステップＳ６１３）。ステップＳ６１３において実行が完了していると判定された場合には（ステップＳ６１３：Ｙｅｓ）、ステップＳ６１２においてクロックの供給を開始する。実行が完了していないと判定された場合には（ステップＳ６１１：Ｎｏ）、クロック１サイクル分だけ待機することになる（ステップＳ６１４）。
【００７７】
そして、ステップＳ６１２においてクロック供給が開始されると、１サイクルクロックをＥＸステージに供給し（ステップＳ６１５）、次にサイクル数抽出部において抽出されたサイクル数のクロック供給が完了したか否かを判定する（ステップＳ６１６）。クロック供給が完了していない場合には（ステップＳ６１６：Ｎｏ）、ステップＳ６１５において再度クロックを出力する。
【００７８】
ステップＳ６１６においてクロックの供給が完了したと判断した場合には（ステップＳ６１６：Ｙｅｓ）、ＭＥＭステージの状態を調べてＭＥＭステージにおける命令の実行が完了しているか否かを判定する（ステップＳ６１７）。実行が完了している場合には（ステップＳ６１７：Ｙｅｓ）、ＭＥＭステージへ命令を投入して（ステップＳ６１８）、ＥＸステージでの実行結果をＭＥＭステージに入力する。そして、次の命令をＥＸステージで投入すべくステップＳ６０１から処理を繰り返すことになる。
【００７９】
ステップＳ６１７において実行が完了していないと判断された場合には（ステップＳ６１７：Ｎｏ）、クロック供給を停止し（ステップＳ６１９）、ＭＥＭステージでの実行が完了するまで待機することになる。
【００８０】
上述したような処理によって図７に示すような効果が生じる。図７においては、連続した命令Ａと命令Ｂを実行する場合の従来の技術を利用した場合のパイプライン状態と、本実施の形態２にかかるクロック制御方法を用いた場合のパイプライン状態を示している。
【００８１】
なお、命令ＡはＭＥＭステージでメモリアクセスペナルティーにより実行に７サイクル必要とする命令であり、命令ＢはＥＸステージで５サイクルの実行サイクルを必要とする命令であるものとする。
【００８２】
まず、図７（ａ）には本実施の形態２にかかるクロック制御方法を用いた場合、図７（ｂ）には従来のクロック制御方法を用いた場合のパイプライン状態を示している。
【００８３】
命令Ａは、サイクル７−２からＭＥＭステージに投入されて実行が行われる。しかしながら、メモリペナルティーで７サイクルの実行となるものとする。この時点において、命令ＢはＥＸステージに投入されていることになる。
【００８４】
従来の技術では、図７（ｂ）に示すように、ＭＥＭステージにおいてウェイト状態になった場合にはＥＸステージでのクロック供給が停止されるため、サイクル７−２で命令ＢがＥＸステージに投入されても、サイクル７−２からサイクル７−８までの期間はクロック供給が行われないことになる。
【００８５】
すなわち、図７（ｂ）のＥＸクロックのように、命令ＡのＭＥＭステージでの実行がサイクル７−８で終了して、ＷＢステージに命令Ａが投入されてから、ＥＸステージにはクロック供給が再開され、サイクル７−９から命令ＢのＥＸステージでの実行が再開される。したがって、従来の技術では、命令Ｂの実行サイクル期間は７−２から７−１１の期間となる。
【００８６】
このように、命令Ａがサイクル７−９においてＷＢステージに投入され、ＭＥＭステージに次の命令投入が可能な状態になっているにもかかわらず、ＥＸステージにおいて命令Ｂの実行が完了していないために、ＭＥＭステージに命令Ｂを投入することができないことになってしまう。実際に命令ＢがＭＥＭステージに投入されるのは、命令Ｂの実行が完了した後であるサイクル７−１１となる。
【００８７】
一方、本実施の形態３にかかるクロック制御方法を用いた場合には、図７（ａ）に示すように、命令ＡがＭＥＭステージで７サイクルの実行を行っているサイクル７−２からサイクル７−８の期間であっても、ＥＸステージにおける命令Ｂの実行サイクル数のクロックが供給されるために、サイクル７−２から７−６までの期間も、ＥＸステージにはクロックが供給されることになる。
【００８８】
すなわち、ＭＥＭステージが命令Ａの実行によってウェイト状態であっても、ＥＸステージにおいて命令実行を行うことが可能であり、命令Ｂの実行サイクル期間は７−１５に示す期間となり、従来よりも早期に実行を完了させることが可能となる。さらに、命令ＢがＭＥＭステージに投入されるまでの待機サイクルである７−１６に示す期間は、ＥＸステージにクロックを供給することがないことから、待機状態にあるサイクルでの無駄な電力消費を回避することが可能となる。
【００８９】
要は、サイクル７−９において命令ＡがＷＢステージに投入された時点で、命令ＢをＭＥＭステージに投入することができることになる。したがって、従来のクロック制御方法に比べて、ＭＥＭステージに命令Ｂが投入されるサイクル数が７−１７に示すサイクル期間だけ改善されることになる。また、図７の例における命令Ａ及び命令Ｂの実行の場合、図７（ａ）に示すパイプライン状態は常にＥＸステージにクロック供給を行っている場合と同様になる。
【００９０】
以上のように本実施の形態３によれば、必要なサイクル数のクロックを供給し、ＥＸステージでの命令を実行完了状態で待機状態とさせ、待機状態の場合にはクロックを停止することができることから、パイプライン実行の効率を落とさずに消費電力低減効果を得ることが可能となる。
【００９１】
（実施の形態４）
以下、本発明の実施の形態４について、図面を参照しながら説明する。図８は本実施の形態４にかかるクロック制御方法における命令コード自体の構成例示図を示す。
【００９２】
実施の形態４では、命令コード８１にＥＸステージでのサイクル数を示す実行サイクル数フィールド８２を設け、命令デコードと同時に実行サイクル数フィールド８２からサイクル数を抽出する方法である。
【００９３】
命令コード８１は、実際の実行命令コードである命令ビットフィールド８３と、この命令が実行ステージでの実行サイクル数を示す実行サイクル数フィールド８２から構成される。
【００９４】
ＩＦステージで、命令フェッチを行い読み出しデータから命令コード８１を取り出す。命令コード８１は、ＤＥＣステージで命令ビットフィールド８３から命令をデコードすると同時に、実行サイクル数フィールド８２から命令がＥＸステージで実行される時の実行サイクル数を取り出す。なお、実行サイクル数フィールド８２には、実際のサイクル数を設定しても良いし、グループ分けして、当該グループごとの識別番号を設定するものであっても良い。
【００９５】
例えば、ＥＸステージにおける実行サイクル数が１サイクルである命令はグループ１に、３サイクルの命令はグループ２に、１０サイクルの命令はグループ３に、というように、サイクル数ごとにグループ分けを行い、そのグループ番号を設定する。デコーダ回路では、実行サイクル数フィールド８２に設定されたグループ番号に基づいて、グループ番号に対応したサイクル数を生成し、ＥＸステージのクロック制御部に入力することになる。
【００９６】
以上のように本実施の形態４によれば、命令デコーダのデコード回路においてハードウェア的に命令ごとの実行サイクル数を記憶する、あるいは生成する回路が不要となり、実施の形態２の場合よりもデコーダ回路自体の規模を縮小することが可能となる。
【００９７】
（実施の形態５）
以下、本発明の実施の形態５について、図面を参照しながら説明する。実施の形態５では可変長命令を処理するプロセッサにおいて、可変長命令の命令語長から実行サイクル数を抽出する方法である。
【００９８】
第一の命令はＥＸステージで１サイクル、第二の命令は３サイクル、第三の命令は５サイクルの実行サイクルを必要とするものとする。この場合、第一の命令の命令コードは１バイト、第二の命令コードは３バイト、第三の命令コードは５バイトの命令コードであると定義する。
【００９９】
可変長命令の命令コードがＤＥＣステージでデコードされる場合、命令語長を判定する必要がある。上記のように命令語長ごとに実行サイクルを定義した場合、命令をデコードするために命令データから可変長命令を取り出し、命令語長を判定した時点で命令実行サイクルを抽出することができる。
【０１００】
以上のように本実施の形態５によれば、実施の形態４と同様に実施の形態３と比べてデコーダ回路の規模自体を縮小することが可能となる。
【０１０１】
（実施の形態６）
以下、本発明の実施の形態６について、図面を参照しながら説明する。図９は実施の形態３と同様に、本実施の形態６にかかるクロック制御方法を用いたパイプライン処理を行うプロセッサの構成を示している。
【０１０２】
図９は、ＥＸステージでの実行サイクル数の抽出を命令デコーダで行うプロセッサであり、かつ、ＥＸステージでのクロック供給サイクル数を命令ビットコードから抽出し、ＥＸステージへ命令が投入された時点からクロック供給を開始するか否かをクロック供給開始許可ビットから抽出するプロセッサを示している。
【０１０３】
そのために、本実施の形態５では、命令をデコードするＤＥＣステージ内に命令データからクロック供給開始許可ビットを参照するクロック供給開始許可ビット抽出回路９０１が備えられている。
【０１０４】
図１０には実施の形態６にかかるクロック制御方法を用いたプロセッサの命令コードを示す。図１０において、命令コード１０１はクロック供給開始許可ビット１０４と、実行サイクル数フィールド１０２と実行命令フィールド１０３から構成されている。なお、実行サイクル数フィールド１０２は命令のＥＸステージでの実行サイクル数を示している。
【０１０５】
クロック供給開始許可ビット１０４は、命令がＥＸステージに投入された場合、即座にクロックを供給開始するか、あるいはＭＥＭステージでの先行命令の実行完了後にクロック供給開始するかを判定するためのビットである。
【０１０６】
このビットは、命令がＥＸステージに入ったサイクルから実行の開始ができない場合にセットされ、ＥＸステージで実行しようとする命令と先行命令との間に依存関係がある場合にセットされる。
【０１０７】
図１１に示す２つのプログラム例ＰＲＯＧ−Ａと、ＰＲＯＧ−Ｂを用いてクロック供給開始許可ビット１０４がどのようにセットされるかを説明する。ＰＲＯＧ−Ａ、ＰＲＯＧ−Ｂにはデータを読み出して加算する命令列である。
【０１０８】
ＰＲＯＧ−Ａでは、命令１がアドレスレジスタａ０内のアドレスのデータを読み出してデータレジスタｄ０に格納する命令であり、命令２がデータレジスタｄ１に１６進数の１を加算してｄ１に再び格納する命令である。
【０１０９】
ＰＲＯＧ−Ａの場合、命令１が扱うデータレジスタと命令２が扱うデータレジスタは異なる。すなわち、命令２は命令１に依存していないため、命令２がＥＸステージに投入された場合には、即座にクロック供給を開始して実行を開始することができる。この場合には、クロック供給開始許可ビット１０４に‘１’がセットされることになる。
【０１１０】
一方、ＰＲＯＧ−Ｂの場合、命令３はアドレスレジスタａ０内のアドレスからデータレジスタｄ０にデータを読み出す命令であり、命令４はデータレジスタｄ０の値と１６進数で１を加算してデータレジスタｄ０に格納する命令である。ＰＲＯＧ−Ｂでは、命令４と命令３が扱うデータレジスタが同じであるために、命令４は命令３に依存している。このため、命令４がＥＸステージに投入された場合、ＭＥＭステージにある命令３の実行が完了しないとｄ０レジスタの値が不明であることから、命令４の実行を開始することができないことになる。この場合には、クロック供給開始許可ビット１０４には‘０’がセットされる。
【０１１１】
なお、命令の依存関係は、プログラムを実行形式コードに変換する際に抽出することができる。したがって、ハードウェアにおいて依存関係を抽出する回路は特に必要としないものと考えられる。
【０１１２】
すなわち、図９に示すように、ＤＥＣステージで命令コードをデコードする際にクロック供給開始許可ビット１０４をクロック供給開始許可ビット抽出部９０１において参照し、そのクロック供給開始許可信号９０２をクロック開始要求生成部５０８に入力する。
【０１１３】
クロック開始要求生成部５０８は、ＥＸステージの実行開始要求５１８とクロック供給開始許可ビット９０２から、ＥＸステージのクロック開始要求信号５１５を生成し、クロック制御部５０７に出力する。
【０１１４】
以上のように本実施の形態６によれば、ＥＸステージとＭＥＭステージの命令の依存関係を検出するハードウェアを必要とすることなく、クロック供給開始信号を生成することができ、依存関係を検出するためのハードウェアを削減することが可能となる。
【０１１５】
（実施の形態７）
以下、本発明の実施の形態７について、図面を参照しながら説明する。本実施の形態７は実施の形態６で示したクロック供給開始許可ビットと同等の低速動作ビットを用いてパイプライン実行において高速動作が必要でない場合にさらなる低消費電力を実現する形態である。
【０１１６】
図１２に実施の形態７で用いられる命令コードを示す。図１２では、図１０に示す命令コードとほぼ同じ構成となっているが、クロック供給開始許可ビット１０４に代わって、低速動作ビット１２４を有する点に特徴を有する。
【０１１７】
図１３に実施の形態７にかかるクロック制御方法を用いた情報処理装置におけるプロセッサ構成を示す。図９に示すパイプライン構成では、ＥＸステージにのみクロック制御回路が存在し、ＥＸステージにのみクロック制御を行っていたが、同様にＭＥＭステージのクロック供給制御部１３５、ＷＢステージのクロック供給制御部１３６を設けることで、よりきめ細かいクロック制御を行うものである。
【０１１８】
まず、ＭＥＭステージのクロック制御部１３５は、ＭＥＭステージに命令が存在し実行中か否かを判定するＭＥＭステージ状態判定部５１２の出力５２２に基づいて、ＭＥＭステージに命令が存在し命令実行を行っている場合にのみクロックを供給するように制御する。
【０１１９】
同様に、ＷＢステージクロック供給制御部１３６は、ＷＢステージの状態判定部１３４の出力１３３に基づいてＷＢステージで命令実行を行っている場合にのみＷＢステージにクロックを供給するように制御する。
【０１２０】
命令がＤＥＣステージ５０２に投入され、命令デコードすると同時に命令のＥＸステージでの実行サイクル数がサイクル数抽出部５０６で抽出される。同時に命令コード中の低速動作ビット１２４が低速動作ビット参照部１３１で抽出される。
【０１２１】
低速動作ビット１２４が‘１’にセットされている命令を実行する場合には、ＥＸステージに命令が投入されてもすぐにクロックの供給を開始せず、先行する命令がＭＥＭステージ及びＷＢステージにおいて実行を完了してから実行開始させるようにＥＸステージへのクロック供給を開始させない。すなわち、低速動作ビット１２４がセットされている場合には、ＭＥＭステージ及びＷＢステージには命令が存在せず、ＭＥＭステージ及びＷＢステージのクロック供給が停止してからＥＸステージにクロック供給を開始して実行を開始させることになる。
【０１２２】
図１４にクロック供給の概略を示す。図１４では、連続して互いに依存関係の無い命令Ａ、Ｂ、Ｃを実行した場合のパイプラインチャートを示しており、図１４（ａ）は低速動作ビット１２４が‘０’の場合、図１４（ｂ）は低速動作ビット１２４が‘１’の場合を示している。
【０１２３】
図１４（ａ）に示すように命令Ａ、Ｂ、Ｃのすべての命令の命令コードにおいて低速動作ビット１２４が‘０’の場合、すなわち命令Ａ、Ｂ、Ｃの実行を通常動作させる場合には、命令Ａ、Ｂ、Ｃが順次各ステージでパイプライン処理されていき、ＥＸステージクロック、ＭＥＭステージクロック、ＷＢステージは図１４（ａ）に示すように供給される。
【０１２４】
一方、図１４（ｂ）に示すようにすべての命令の低速動作ビット１２４が‘１’である場合、すなわち命令Ａ、Ｂ、Ｃを低速動作させる場合には、命令ＡがＷＢステージで実行完了するまで命令ＢはＥＸステージに投入されても実行を開始しない。命令ＡがＷＢステージで実行完了してからＥＸステージに指定されたサイクル数供給開始され実行開始される。命令Ｂにクロックが供給され実行完了するとＭＥＭステージに投入されるが、このサイクルまでＭＥＭステージのクロックは供給停止している。また、ＭＥＭステージにＥＸステージの命令が投入されると、命令ＣがＥＸステージに投入されるが、命令Ｃは命令ＢがＷＢステージで実行完了するまでＥＸステージへのクロック供給が開始されないために停止状態となっている。
【０１２５】
命令Ａ、Ｂ、Ｃの命令コードの低速動作ビット１２４がすべて‘１’である場合のＥＸステージクロック、ＭＥＭステージクロック、ＷＢステージは図１４（ｂ）に示すように供給される。
【０１２６】
この方法によれば、ある一定期間において各ステージに供給されるクロックエッジが通常の場合よりも減少し、消費電力を抑制することが可能となる。
【０１２７】
プロセッサで行う処理においては、すべての処理において高速動作を行う必要が無い場合がある。高速処理が必要でない場合には、低速動作ビット１２４を意図的にセットし、実行性能自体は低減するものの、処理にかかる消費電力をより低減することが可能となる。なお、本実施の形態においては命令コードに低速動作ビットを設ける場合を示しているが、特に命令コードに限定されるものではなく、例えばＣＰＵのレジスタ設定によってかかる動作を行うことができるようにする手法であっても良い。
【０１２８】
プログラムの記述時点で実行性能を落とし、かつ消費電力を落として実行させるかどうかを指定することにより、プログラマが消費電力を意識してプログラム可能な手法であるプログラム処理を図１５に示す。
【０１２９】
例えば図１５に示すように、高級言語プログラムの記述において消費電力をおさえるルーチンかどうかを指定可能なように、消費電力を落として実行させるルーチンの開始、および通常の消費電力での処理に復帰する予約語を定義することが考えられる。図１５において、「ＰｏｗｅｒＬｏｗ」はこの予約語以降は低速動作させるルーチンであることを示し、「ＰｏｗｅｒＨｉｇｈ」はこの予約語以降通常の高速動作をさせるルーチンであることを示す予約語である。
【０１３０】
そして、高級言語記述Ｐｒｏｇ０は低速動作させる処理記述を、Ｐｒｏｇ１は高速動作させる処理記述を示している。
【０１３１】
高級言語プログラムＰｒｏｇ０、Ｐｒｏｇ１はプロセッサの機械語プログラムであるアセンブラプログラムに一旦変換されそこから実行形式コードを作成する。このアセンブラプログラムを実際の実行形式コードに変換する時点でアセンブラは命令コードのクロック供給開始許可ビットを操作する。
【０１３２】
例えば図１５では、高級言語プログラムＰｒｏｇ０はａｓｍ０に、Ｐｒｏｇ１はａｓｍ１に変換される。
【０１３３】
Ｐｒｏｇ０は低速動作させる処理であるのでＰｒｏｇ０が変換されたアセンブラコードａｓｍ０中の命令に対する命令コードの低速動作ビット１２４には‘１’がすべてセットされる。
【０１３４】
一方、高速動作させる処理であるＰｒｏｇ１が変換されたアセンブラコードａｓｍ１中の命令に対する命令コードの低速動作ビット１２４にはすべて‘０’がセットされる。
【０１３５】
以上のように、本実施の形態７によれば、プロセッサが動的に消費電力状態を検出することがないため、検出回路をハードウェアで実装する必要がなく、低消費電力化が可能となる。
【０１３６】
また、プログラマが消費電力と実行処理性能との関係を把握し、意図的に操作することができるため、プログラム開発時に消費電力を考慮しながらのプログラム開発も可能となる。
【０１３７】
【発明の効果】
以上のように本発明にかかるクロック制御方法を用いた情報処理装置によれば、パイプライン処理を行うプロセッサにおいて実行性能を落とさずに消費電力の低減効果を得ることが可能となる。また、命令コード中に実行サイクル数を定義できるようにすることでハードウェア資源の増加を抑えてかつ消費電力の低減効果が得られる。
【０１３８】
また、低速動作を定義できる命令コード内のビット、およびプログラム記述手法によって、意図的にパイプライン動作性能を落とし、より消費電力を下げることが可能である。この動作はプログラム内で実現可能であり、実行時の消費電力を考慮しながらプログラム開発が可能となる。
【図面の簡単な説明】
【図１】従来のクロック制御方法におけるクロック供給タイミング図
【図２】本発明の実施の形態１にかかるクロック制御方法を用いた情報処理装置のシステム構成図
【図３】本発明の実施の形態１にかかるクロック制御方法を用いた情報処理装置における処理の流れ図
【図４】本発明の実施の形態１にかかるクロック制御方法を用いた情報処理装置におけるクロック供給タイミング図
【図５】本発明の実施の形態３にかかるクロック制御方法を用いた情報処理装置におけるプロセッサ構成図
【図６】本発明の実施の形態３にかかるクロック制御方法を用いた情報処理装置における処理の流れ図
【図７】本発明の実施の形態３にかかるクロック制御システムにおけるパイプライン効果の比較図
【図８】本発明の実施の形態４にかかるクロック制御方法における命令コード構成図
【図９】本発明の実施の形態６にかかるクロック制御方法を用いた情報処理装置におけるプロセッサ構成図
【図１０】本発明の実施の形態６にかかるクロック制御方法における命令コード構成図
【図１１】本発明の実施の形態６にかかるクロック制御方法におけるプログラム例示図
【図１２】本発明の実施の形態７にかかるクロック制御方法における命令コード構成図
【図１３】本発明の実施の形態７にかかるクロック制御方法を用いた情報処理装置におけるプロセッサ構成図
【図１４】本発明の実施の形態７にかかるクロック制御方法を用いた情報処理装置におけるクロック供給タイミング図
【図１５】本発明の実施の形態７にかかるクロック制御方法における高級言語プログラムの例示図
【図１６】本発明の実施の形態２にかかるクロック制御方法を用いた情報処理装置における処理の流れ図
【図１７】本発明の実施の形態２にかかるクロック制御方法を用いた情報処理装置におけるクロック供給タイミング図
【符号の説明】
８１、１０１、１２１  命令コード
８２、１０２、１２２  実行サイクル数フィールド
８３、１０３、１２３  実行命令フィールド
１０４  クロック供給開始許可ビット
１２４  低速動作ビット
１３１  低速動作ビット参照部
１３３  ＷＢ判定結果
１３４  ＷＢステージ状態判定部
１３５  ＭＥＭクロック制御部
１３６  ＷＢクロック制御部
１３７  ＭＥＭクロック
１３８  ＷＢクロック
２０１  処理回路
２０２  クロック制御回路
２０３  サイクル数抽出回路
２０４、５１０  クロック
２０５  命令
２０６、５２３  リクエスト
２０７  入力データ
２０８  処理サイクル数
２０９  処理回路クロック
２１０  クロック終了信号
２１１  出力データ
２１２  第２の処理回路
２１３  システム制御部
２１４、５０９  クロックジェネレータ
５０１  ＩＦステージ
５０２  ＤＥＣステージ
５０３  ＥＸステージ
５０４  ＭＥＭステージ
５０５  ＷＢステージ
５０６  サイクル数抽出部
５０７  クロック制御部
５０８  供給開始信号生成部
５１１  ＭＥＭステージ状態判定部
５１２  ＥＸステージ状態判定部
５１３  ＥＸステージ実行開始要求生成部
５１４  依存関係判定部
５１５  供給開始信号
５１６  ＥＸステージクロック
５１７  サイクル数
５１８  実行開始信号
５１９  ＥＸ命令情報
５２０  ＤＥＣ命令情報
５２１  ＥＸ判定結果
５２２  ＭＥＭ判定結果
【図１】
0003607209.tif 000002
【図２】
0003607209.tif 000003
【図３】
0003607209.tif 000004
【図４】
0003607209.tif 000005
【図５】
0003607209.tif 000006
【図６】
0003607209.tif 000007
【図７】
0003607209.tif 000008
【図８】
0003607209.tif 000009
【図９】
0003607209.tif 000010
【図１０】
0003607209.tif 000011
【図１１】
0003607209.tif 000012
【図１２】
0003607209.tif 000013
【図１３】
0003607209.tif 000014
【図１４】
0003607209.tif 000015
【図１５】
0003607209.tif 000016
【図１６】
0003607209.tif 000017
【図１７】
0003607209.tif 000018