(57)【要約】【課題】マイクロプロセッサにおいて、要求された処理速度を満たし、最大限の節電効果を達成する。【解決手段】目標命令実行数の測定された命令実行数に対する偏差の比例・積分による制御値を演算する。制御値に応じて、選択されたパイプラインレジスタへのクロックの供給を停止し、信号はそのパイプラインレジスタをスルーさせるように制御することで、パイプラインの段数を減少させる統合処理をする。逆に、選択されたパイプラインレジスタへのクロックの供給を再開し、信号をクロックに同期して、そのパイプラインレジスタにラッチさせるようにパイプライン制御することで、パイプラインの段数を増加させる統合解除処理をする。変更される段数に応じて、パイプラインレジスタに供給するクロック周波数を変化させる。【選択図】 図4
2008192124.tif 000002
【特許請求の範囲】
【請求項１】
パイプラインレジスタにより論理回路が縦続接続されて、パイプライン処理を行う演算処理装置において、
単位時間当たりの命令実行数を測定する命令実行数測定手段と、
目標となる単位時間当たりの目標命令実行数を設定する目標命令実行数設定手段と、
前記目標命令実行数設定手段により設定された目標命令実行数の前記命令実行数測定手段により測定された前記命令実行数に対する偏差の比例・積分による制御値を演算する制御値演算手段と、
前記制御値演算手段により演算された前記制御値に応じて、選択されたパイプラインレジスタへのクロックの供給を停止し、信号は、そのパイプラインレジスタをスルーさせるように制御することで、前記パイプラインを部分的に連続させてパイプラインの段数を減少させる統合処理をし、逆に、選択されたパイプラインレジスタへのクロックの供給を再開し、信号をクロックに同期して、そのパイプラインレジスタにラッチさせるようにパイプライン制御することで、連続した前記パイプラインを部分的に分離させてパイプラインの段数を増加させる統合解除処理をして、パイプラインの段数を変更する段数変更手段と、
前記段数変更手段により変更される段数に応じて、前記パイプラインレジスタに供給するクロック周波数を変化させるクロック周波数変更手段と
を有することを特徴とする演算処理装置。
【請求項２】
前記クロック周波数変更手段は、前記段数変更手段により変更された前記段数が小さい程、クロック周波数を小さくし、前記段数変更手段により変更された前記段数が大きい程、クロック周波数を大きくする手段であることを特徴とする請求項１に記載の演算処理装置。
【請求項３】
前記制御値変更手段は、前記偏差の比例・積分に、前記偏差の時間微分を加えた値を制御値とすることを特徴とする請求項１又は請求項２に記載の演算処理装置。
【請求項４】
前記段数変更手段は、前記制御値演算手段により求められた前記制御値が所定値よりも小さい場合には、前記段数を減少させる前記統合処理を実行し、前記制御値が所定値よりも大きい場合には、前記段数を増加させる前記統合解除処理を行う手段であることを特徴とする請求項１乃至請求項３の何れか１項に記載の演算処理装置。
【請求項５】
前記段数変更手段は、前記制御値が第１しきい値以下の場合に、段数が１クラス下の段数となる前記統合処理を実行し、前記制御値が、前記第１しきい値よりも大きい第２しきい値以上の場合に、段数が１クラス上の段数となる前記統合解除処理を実行する手段であることを特徴とする請求項１乃至請求項４の何れか１項に記載の演算処理装置。
【請求項６】
前記段数変更手段は、前記制御値の積分項と比例項とが共に負の場合に、段数が１クラス下の段数となる前記統合処理を実行し、前記制御値の積分項と比例項とが共に正の場合に、段数が１クラス上の段数となる前記統合解除処理を実行し、前記制御値の積分項と比例項の積が負又は零の場合には、段数を変更しない手段であることを特徴とする請求項１又は請求項２に記載の演算処理装置。
【請求項７】
前記段数変更手段は、前記統合解除処理を実行した後、次の連続した制御期間において前記統合解除処理が実行される条件を満たす場合であっても、前記制御値又は測定された前記命令実行数の平均値の前記目標命令実行数に対する偏差が増加傾向にある場合には、統合解除処理を実行せずに段数を維持し、又は、前記統合処理を実行した後、次の連続した制御期間において前記統合処理が実行される条件を満たす場合であっても、前記制御値又は測定された前記命令実行数の平均値の前記目標命令実行数に対する偏差が減少傾向にある場合には、統合処理を実行せずに段数を維持することを特徴とする請求項１乃至請求項６の何れか１項に記載の演算処理装置。
【請求項８】
前記段数変更手段は、設定された前記目標命令実行数に対して、前記制御値又は前記偏差が負となる第１クラスの段数と、この段数に隣接したクラスの段数であって前記制御値又は前記偏差が正となる第２クラスの段数とに、切換段数を拘束することを特徴とする請求項１乃至請求項６の何れか１項に記載の演算処理装置。
【請求項９】
前記段数変更手段は、設定された前記目標命令実行数に対して、前記制御値又は前記偏差が負となる段数を第１クラスの段数とし、この段数に隣接したクラスの段数であって前記制御値又は前記偏差が正となる段数を第２クラスの段数とし、変更前の段数が前記第１クラスの段数である場合に、前記第２クラスの段数が選択される確率を増大させるように、変更前の段数に応じて制御値を補正することを特徴とする請求項１乃至請求項６の何れか１項に記載の演算処理装置。
【請求項１０】
可変し得る段数は、最大段数、中間段数、最小段数の３クラスであり、前記制御値演算手段は、中間段数の選択確率が増大するように、変更前の段数に応じて、前記制御値を補正することを特徴とする請求項１乃至請求項６の何れか１項に記載の演算処理装置。
【請求項１１】
前記段数変更手段により変更された段数の制御において、前記給電電圧を前記段数と前記クロック周波数とに応じて、低減する給電電圧制御手段を有することを特徴とする請求項１乃至請求項１０の何れか１項に記載の演算処理装置。
【請求項１２】
前記給電電圧制御手段は、前記段数の変更に際して、給電電圧を徐々に低下、又は、徐々に増加させることを特徴とする請求項１１に記載の演算処理装置。
【請求項１３】
前記段数変更手段により段数を統合した場合において、前記制御値に応じて、連続的に前記クロック周波数と給電電圧とを変化させるＤＶＳ制御手段を
有することを特徴とする請求項１１に記載の演算処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パイプライン処理機能を有した節電を図った演算処理装置に関する。特に、マイクロプロセッサの節電を図った装置に関する。
【背景技術】
【０００２】
近年のモバイルプロセッサでは、低消費電力と高性能の両方が要求されている。この要求を満たすために、現在DVS(dynamic voltage scaling)と呼ばれる方式が導入されている。DVSは、例えば、下記非特許文献１、２、３において知られている。DVSはバッテリ持続時間要求やプロセッサ負荷に応じて、動的にクロック周波数と電源電圧を変更するものである。バッテリ持続時間要求が強いか、与えられた負荷が低ければ、クロック周波数を低下させ、消費電力を削減する。さらに、延びたクロックサイクル時間に信号の遅延を合わせ、電源電圧を低下させる。これにより、プログラム実行に要する消費電力を削減する。このように、DVSは消費電力を削減する有効な手法であるが、サブスレッショルドリーク電流の増加によって閾値電圧が下げにくくなる点や、過渡故障の増加という面から、将来のプロセス技術ではその有効性は減少する。
【０００３】
これに対して、下記非特許文献４、５、６に開示されているように、パイプラインステージ統合（PSU: Pipeline Stage Unification）と呼ばれる手法が提案されている。PSUは単純だが効果的に消費電力を削減することができる。PSUではDVSと同様に、プロセッサの消費電力を削減するためにクロック周波数を低下させるが、DVSと異なり、電源電圧を低下させるのではなく、パイプラインレジスタをバイパスさせることによって複数のパイプラインステージを統合する。PSUによって消費電力を削減できる理由は次の2点である。
【０００４】
まず第1に、バイパスされるパイプラインレジスタへのクロックの供給を止めることにより、クロックドライバの総負荷を減少させることができる。さらに、クロックの供給を止めたパイプラインレジスタは動作しないため、D-FF動作の消費電力分が削減できる。第2に、パイプラインステージの統合によりプロセッサのパイプラインが短くなる。これにより、同じクロック周波数で動作するDVSを用いたプロセッサと比較して、プログラムの実行に必要なクロックサイクル数は同等かそれ以下となり、電力を消費する時間を短くすることができる。たとえば、フロントエンドパイプライン部の命令フェッチ部とデコード部のパイプライン段数を短縮させることにより、分岐予測ミスペナルティは削減され、実行サイクル数は削減される。以上の効果が期待されている。
【０００５】
一方、下記特許文献１においては、クロック周波数に応じて、パイプラインの段数を変更する装置が開示されている。すなわち、高速処理が必要な場合には、各ステージでの処理時間の差が小さくなる高段数の高クロック周波数で処理し、高速処理が必要でない場合には、分岐インタロックによるペナルティの少ない低段数の低クロック周波数で動作させて、消費電力も減少させる装置が開示されている。
【０００６】
また、下記特許文献２においては、複数のモジュールを有する演算装置において、命令語毎に、使用しないモジュールに対してクロックの供給を停止して、電力を消費させる装置が開示されている。
【０００７】
また、下記特許文献３においては、プロセッサにおける消費電力を見積もる方法が開示されており、下記特許文献４においては、パーフォーマンス指標を、与えられた消費電力指標範囲において増大させるように、ＣＰＵのクロック周波数を増減する技術が開示されている。
【０００８】
【非特許文献１】D.Laird, "Crusoe Processor Products and Technology," Transmeta Corporation, 2000.
【非特許文献２】Intel Corporation，”Intel Pentium M Processor Datasheet,”2003．
【非特許文献３】Advanced Micro Devices，Inc.,"Mobile AMD Athlon 4 Processor Model 6 CPGA Data Sheet," 2001.
【非特許文献４】嶋田 創、 安藤 秀樹、 島田 俊夫、”低消費電力化のための可変パイプライン，”  情報処理学会研究報告，Vol．2001-ARC-145，pp．57-62，2001．
【非特許文献５】嶋田 創、 安藤 秀樹、 島田 俊夫、”パイプラインステージ統合：将来のモバイルプロセッサのための消費エネルギー削減技術，”先進的計算基盤システムシンポジウム， SACSIS2003，pp．283-290，2003．
【非特許文献６】Hajime Shimada and Hideki Ando and Toshio Shimada, "Pipeline Stage Unification: A Low-Energy Consumption Technique for Future Mobile Processors," In ISLPED2003, pp.326-329,2003.
【特許文献１】特開平９−３１９５７８号
【特許文献２】特開２００５−２３４９６８
【特許文献３】特開平１１−１６１６９２号
【特許文献４】特開平１１−３５３０５２号
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、パイプライン制御を行う演算処理装置において、仕事によって変化する目的とする性能を満たしつつ、消費電力の削減を図った装置は知られていない。近年のマイクロプロセッサなどの演算処理装置は、益々、高速化されてきているが、その分、消費電力も増大してきている。このため、所望の実行速度を達成しつつ、消費電力の低減を図った演算処理装置の開発が望まれている。
【００１０】
本発明は、上記の課題を解決するために成されたものであり、各仕事に関して要求される演算終了時刻を満たしつつ、可能な限り消費電力を削減することを目的とする。
演算速度は、何時の場合においても、最大値でなければならないということはなく、仕事の種類によっては、低速であっても良い。要するに、何時までにある結果を得ることが必要かが決めれるのであり、その条件を満たす最低速度で実行すれば十分である。
【００１１】
本発明は、このことに注目して、平均的な実際の単位時間当たりの命令実行数（スループット）が、要求された単位時間当たりの命令実行数を達成できる範囲で、可能な限り節電を図るようにしたものである。
【課題を解決するための手段】
【００１２】
上記課題を解決するための第１の発明は、パイプラインレジスタにより論理回路が縦続接続されて、パイプライン処理を行う演算処理装置において、単位時間当たりの命令実行数を測定する命令実行数測定手段と、目標となる単位時間当たりの目標命令実行数を設定する目標命令実行数設定手段と、目標命令実行数設定手段により設定された目標命令実行数の命令実行数測定手段により測定された命令実行数に対する偏差の比例・積分による制御値を演算する制御値演算手段と、制御値演算手段により演算された制御値に応じて、選択されたパイプラインレジスタへのクロックの供給を停止し、信号は、そのパイプラインレジスタをスルーさせるように制御することで、パイプラインを部分的に連続させてパイプラインの段数を減少させる統合処理をし、逆に、選択されたパイプラインレジスタへのクロックの供給を再開し、信号をクロックに同期して、そのパイプラインレジスタにラッチさせるようにパイプライン制御することで、連続したパイプラインを部分的に分離させてパイプラインの段数を増加させる統合解除処理をして、パイプラインの段数を変更する段数変更手段と、段数変更手段により変更される段数に応じて、パイプラインレジスタに供給するクロック周波数を変化させるクロック周波数変更手段とを有することを特徴とする演算処理装置である。
【００１３】
ここで、単位時間当たりの命令実行数を測定する命令実行数測定手段は、例えば、所定時間当たりのプログラムカウンタの更新回数や、プログラムカウンタへのデータのロード回数や、フェッチサイクル数を実測する回路で構成される。この更新回数から、単位時間当たりの命令実行数を測定することができる。また、プログラムカウンタが１だけ更新されるのにかかったクロックの数の平均を求めることにより、１命令実行に要する平均クロック数を測定することができ、クロック周期が既知であるので、１命令実行に要する平均時間が測定できる。これにより、単位時間当たりの命令実行数を求めることができる。また、プログラムカウンタの更新回数を測定する他に、他の１命令の実行終了が判別できる信号をカウントするようにしても良い。
【００１４】
また、単位時間当たりの目標命令実行数は、処理すべき仕事にかけることのできる所要時間や演算の種類などから、設定される。本発明では、実測される単位時間当たりの命令実行数が、設定された単位時間当たりの目標命令実行数に追従するようにパイプラインの段数が制御されることが特徴である。したがって、単位時間当たりの命令実行数は、これに関連した値であれば良い。１命令の平均実行時間やサイクル数は、単位時間当たりの命令実行数と等価な値であるから、このような１命令の平均実行時間や平均サイクル数を目標平均実行時間や目標サイクル数に制御することも、本件発明の範囲である。
【００１５】
比例・積分による制御値は、良く知られているように、過去の一定期間の偏差の累積値と、現制御期間における偏差を、それぞれの係数を掛け算して加算した値である。積分項、比例項の係数（ゲイン）を変化させることで、追従制御の特性を変化させることができる。なお、パイプラインの段数を変化させるための制御周期は任意であるが、例えば、１００ｍｓの制御期間の間は、少なくとも、段数を変化させないようにすることができる。また、命令実行数を測定する時間は、この制御期間に等しくとも、これよりも短い時間の計測値であっても良い。
【００１６】
また、本件第１の発明は、比例項の係数を０とすること、すなわち、制御値を積分項だけとする場合も含む。
パイプラインの各ステージは、一般的には、処理時間が等しくなるように分割されているので、この場合には、段数を減少させる場合には、１／２、１／４、１／８と、連続する２つの段間を統合することで、段数を減少させることになる。しかしながら、各ステージで、処理時間が異なる場合には、統合後の各ステージの処理時間が等しくなるように、任意に、隣接する段間を統合することで、段数を減少させるようにしても良い。
【００１７】
段数の減少は、パイプラインレジスタへのクロックの供給を停止する信号線と、この停止信号とクロックを入力する論理回路とを設けて、停止信号が入力された時に、クロックがそのパイプラインレジスタへ出力されることを禁止するようにすれば良い。また、クロックが停止された場合には、パイプラインレジスタは、入力信号をラッチすることなく、スルーさせるように構成される。
【００１８】
制御値に応じて、段数を変化させる制御は、隣接する制御期間においては、１段だけ、減少又は増加するようにし、２段以上に渡って、段数が急変することを防止するようにしても良いし、制御値の大きさに応じて、２段以上の変化を許可した状態で、段数を変更するようにしても良い。通常は、段数の急変を防止して、各制御期間において、１段を越えて、段数を変化させないようにした方が、省電力効果が高い。
【００１９】
また、クロック周波数は、パイプラインの段数が小さい程、その周波数を小さく、すなわち、クロック周期を長くし、パイプラインの段数が大きい程、その周波数を大きく、すなわち、クロック周期を短くするように制御される（請求項２）。各段の論理回路の段数が多くなる分だけ、処理時間がかかるので、クロックの周期を長くする必要がある。
【００２０】
また、制御値には、比例項、積分項の他に、偏差の微分項を加えても良い（請求項３）。偏差は、単位時間当たりの目標命令実行数から実測される命令実行数を減算した値であるが、段数が変化しない場合には、偏差は仕事により連続的に変化し得る。この変化傾向を段数変化に反映させることで、より目標命令実行数への追従性を向上させることができる。
【００２１】
第４の発明は、段数変更手段は、制御値演算手段により求められた制御値が所定値よりも小さい場合には、段数を減少させる統合処理を実行し、制御値が所定値よりも大きい場合には、段数を増加させる統合解除処理を行う手段であることを特徴とする請求項１乃至請求項３の何れか１項に記載の演算処理装置である。
【００２２】
一般的には、制御値が０の場合には、現実の単位時間当たりの命令実行数（以下、「現命令実行速度」）の平均値（以下、「現平均命令実行速度」という）が、単位時間当たりの目標命令実行数（以下、「目標命令実行速度」）に等しく制御されていることを意味する。制御値が正の場合には、現平均命令実行速度が、目標命令実行速度より小さいことを意味し、制御値が負の場合には、現平均命令実行速度が、目標命令実行速度より大きいことを意味する。
【００２３】
したがって、制御値が正となれば、現平均実行命令速度を増大させるように、段数を増加させ、制御値が負となれば、現実行命令実行速度を減少させるように、段数を減少させるように制御する。段数をクラス分けした場合に、１クラス上、１クラス下の段数となるように、段数の変化を急変させないようにすることや、２クラス上、２クラス下のように、段数を急変させる場合も、本件発明に含まれる。このようにすることで、現平均命令実行速度を目標命令実行速度に追従させることができる。一般的には、上記の所定値は０であるが、これに限定されない。
【００２４】
第５の発明は、段数変更手段は、制御値が第１しきい値以下の場合に、段数が１クラス下の段数となる前記統合処理を実行し、制御値が、第１しきい値よりも大きい第２しきい値以上の場合に、段数が１クラス上の段数となる統合解除処理を実行する手段であることを特徴とする請求項１乃至請求項４の何れか１項に記載の演算処理装置である。
【００２５】
通常は、第1しきい値は負値であり、第2しきい値は正値である。このようにすれば、制御値が、第１しきい値と第２しきい値との間に存在する場合には、段数は変化しない。制御値が第１しきい値以下の場合には、現平均命令実行速度が目標命令実行速度より第１しきい値の絶対値以上に大きいので、１クラス下の段数となるように統合処理が実施される。また、制御値が第２しきい値以上の場合には、現平均命令実行速度が目標命令実行速度より第２しきい値以上に小さいので、１クラス上の多い段数となるように統合解除処理が実行される。このようにすることで、現平均命令実行速度を目標命令実行速度に正確に追従させることができる。
【００２６】
また、第６の発明は、段数変更手段は、制御値の積分項と比例項とが共に負の場合に、段数が１クラス下の段数となる統合処理を実行し、制御値の積分項と比例項とが共に正の場合に、段数が１クラス上の段数となる統合解除処理を実行し、制御値の積分項と比例項の積が負又は零の場合には、段数を変更しない手段であることを特徴とする請求項１又は請求項２に記載の演算処理装置である。
この制御は、制御値に応じて段数を変化させる制御を、制御値の積分項と比例項とに分けて制御するようにしたものである。
【００２７】
第７の発明は、段数変更手段は、統合解除処理を実行した後、次の連続した制御期間において統合解除処理が実行される条件を満たす場合であっても、制御値又は測定された単位時間当たりの命令実行数の平均値の目標命令実行数に対する偏差が増加傾向にある場合には、統合解除処理を実行せずに段数を維持し、又は、統合処理を実行した後、次の連続した制御期間において統合処理が実行される条件を満たす場合であっても、制御値又は単位時間当たりの測定された命令実行数の平均値の目標命令実行数に対する偏差が減少傾向にある場合には、統合処理を実行せずに段数を維持することを特徴とする請求項１乃至請求項６の何れか１項に記載の演算処理装置である。
【００２８】
この発明は、連続する制御期間において、段数のクラスが連続して上昇し、又は、連続して下降しないようにしたものである。連続させてクラスを上昇させたり、連続させてクラスを下降させたりすると、段数の変化幅が大きくなり、節電効果が高くない。したがって、本件発明では、段数のクラスの変化を大きくしないようにしている。すなわち、１クラス上の段数に、統合解除処理をすることで、現平均命令実行速度が大きくなるはずであるので、制御値や現平均命令実行速度の目標命令実行速度に対する偏差が増加傾向にある場合には、次の制御期間においてもなお、１クラス上の段数に統合解除処理をする条件が満たされても、そのように段数の増加処理を実行しない。これにより段数の急上昇を防止している。
【００２９】
逆に、段数が１クラス下の段数となるように、統合処理をすることで、現平均命令実行速度が小さくなるはずであるので、制御値や現平均命令実行速度の目標命令実行速度に対する偏差が減少傾向にある場合には、次の制御期間においてもなお、１クラス下の段数に統合処理をする条件が満たされても、そのように段数の減少処理を実行しない。これにより段数の急降下を防止している。これにより、さらに、効果的な省電力が実現できる。
【００３０】
第８の発明は、段数変更手段は、設定された目標命令実行数に対して、制御値又は偏差（目標命令実行速度−現命令実行速度）が負となる第１クラスの段数と、この段数に隣接した段数であって制御値又は偏差が正となる第２クラスの段数とに、切換段数を拘束することを特徴とする請求項１乃至請求項６の何れか１項に記載の演算処理装置である。
【００３１】
目標命令実行速度以上の命令実行速度を有するクラスの段数で命令を実行すれば、その制御期間における偏差は負となり、その段数で、しばらく実行し続けた場合には、制御値も負となる。逆に、目標命令実行速度以下の命令実行速度を有するクラスの段数で命令を実行すれば、偏差は正となり、その段数で、しばらく実行し続けた場合には、制御値も正となる。この条件判定により、現実の仕事を実行している期間において、目標命令実行速度を間に挟む現命令実行速度が得られる段数のクラスが分かる。
【００３２】
このように各クラスをリアルタイムで得る必要があるのは、仕事により命令語の種類も異なるので各クラスでの、現命令実行速度が変動し、また、要求される性能、すわわち、目標命令実行速度が変化するからである。このために、目標命令実行速度が、現実に、どのクラスとどのクラスとの間に存在するかを判定する必要がある。なお、制御値において、積分項のみとした場合には、（目標命令実行速度−現平均命令実行速度）の正負によって、目標命令実行速度を間に挟む２つの現平均命令実行速度の得られる隣接した２つのクラスが判別されることになる。
【００３３】
本発明は、このようにリアルタイムに判別された隣接した２つのクラスに段数を拘束して、段数の変化を制御することを特徴とする。段数のクラスを拘束するということは、制御値に応じた制御において、現命令実行速度を上昇させる必要があると、連続した制御期間において判定された場合であっても、第１クラスの段数以上には、段数を上昇させないこと、現命令実行速度を低下させる必要があると、連続した制御期間において判定された場合であっても、第２クラスの段数以下には、段数を減少させないことを意味する。このように制御しても、第１クラスと第２クラスとをリアルタイムで検出している限り、そのクラスの命令実行速度の間に目標命令実行速度が存在する限り、いずれ制御値は０付近に制御されることになる。これにより、より効果的な省電力を達成することかできる。また、目標命令実行速度が変化すれば、第1クラス、第2クラスもそれに伴って変化させることができるので、そのような場合であっても、目標命令実行速度に現平均命令実行速度を追従させることができる。
【００３４】
第９の発明は、段数変更手段は、設定された目標命令実行数に対して、制御値又は偏差が負となる段数を第１クラスの段数とし、この段数に隣接したクラスの段数であって制御値又は偏差が正となる段数を第２クラスの段数とし、変更前の段数が第１クラスの段数である場合に、第２クラスの段数が選択される確率を増大させるように、変更前の段数に応じて制御値を補正することを特徴とする請求項１乃至請求項６の何れか１項に記載の演算処理装置である。
【００３５】
本発明では、第８の発明と同様に、目標命令実行速度を間に挟む２つの現命令実行速度の得られる隣接した２つのクラスを、リアルタイムで検出した後、ある制御期間における段数が第１クラスの段数であれば、次の制御期間では、１クラス下の段数の少ない第２クラスの段数が選択される確率を高くするように制御する。このように擬似的に、現命令実行速度を現実以上に仮想的に上昇させて制御値を小さくすれば、第１クラスの段数で制御されている場合に、次の制御期間において、さらに、段数の多い上のクラスに変更されることが防止される。すなわち、省電力効果が大きな第２クラスの段数が選択される確率を意図的に高くして、その第2クラスで実行された後に、次には、第１クラスの段数で実行されることになる。したがって、第１クラスの段数よりさらに上のクラスの段数に段数が上昇することが防止される。すなわち、第１クラスの段数と第２クラスの段数とに、拘束されて、命令が実行される確率が上昇する。
【００３６】
また、第１０の発明は、可変し得る段数は、最大段数、中間段数、最小段数の３クラスであり、制御値演算手段は、中間段数の選択確率が増大するように、変更前の段数に応じて、制御値を補正することを特徴とする請求項１乃至請求項６の何れか１項に記載の演算処理装置である。
段数が３クラスの場合には、中間段数が選択される確率を意図的に高くすれれば、中間段数に段数が上昇し、続けて、最大段数に段数が上昇することが抑制される。同様に、中間段数に段数が減少し、続けて、最小段数に段数が減少することが抑制される。
また、第１１の発明は、段数変更手段により変更された段数の制御において、給電電圧を段数とクロック周波数とに応じて、低減する給電電圧制御手段を有することを特徴とする。
また、請求項１２に記載の発明は、給電電圧制御手段は、段数の変更に際して、給電電圧を徐々に低下、又は、徐々に増加させることを特徴とする。
また、第１３の発明は、段数変更手段により段数を統合した場合において、制御値に応じて、連続的にクロック周波数と給電電圧とを変化させるＤＶＳ制御手段を有することを特徴とする。
【発明の効果】
【００３７】
第１、第２の発明では、パイプラインの段数が、実際の測定される単位時間当たりの命令実行数の過去の所定期間における平均値（現平均命令実行速度）が、設定された単位時間当たりの目標命令実行数（目標命令実行速度）に追従するように、フィードバック制御される。そして、パイプラインの段数が減少する時、信号をスルーさせるパイプラインレジスタへのクロックの供給が停止され、クロック周波数がパイプライン段数に応じて変化される。この結果として、パイプライン段数が少ない程、消費電力が減少することになる。また、パイプライン段数を統合した場合には、１クロック周期における命令実行数（ＩＰＣ）は、統合する前に比べて、約１．４６倍程度に、増加するために、クロック周波数が１／２に低下しても、現命令実行速度は、統合前の現命令実行速度に対して、０．７３倍程度に低下するだけである。ＤＶＳ制御の場合には、１段の統合により現命令実行速度は、１／２に低下する。したがって、ＰＳＵ制御における目標命令実行速度とＤＶＳ制御における目標命令実行速度を同一にするならば、結果として、ＰＳＵ制御の方がＤＶＳ制御よりも電力を節減することができる（図１９参照）。したがって、仕事に応じて要求され、設定された目標とする性能（目標命令実行速度）を満たす範囲内で、電力を最大限節減することが可能となる。
【００３８】
第３の発明では、制御値に偏差の微分項を加えているので、目標命令実行速度に対する追随性が向上する。例えば、微分項が、積分項や比例項と異なる符合を示す場合には、段数が大きく変更することを抑制する作用をするので、より効果的な節電が達成される。
【００３９】
第４の発明では、所定値を、例えば、０とすれば、制御値が負の場合には、現平均命令実行速度が目標命令実行速度よりも大きいことを意味するので、パイプラインの段数を減少させる統合処理を実行し、制御値が正の場合には、現平均命令実行速度が目標命令実行速度よりも小さいことを意味するので、パイプラインの段数を増加させる統合解除処理を実行する。このことにより、現平均命令実行速度は、目標命令実行速度に正確に遅れなく追従することになる。
【００４０】
第５の発明では、制御値の大きさの判定に第１しきい値と、第２しきい値とを設定し、制御値が第１しきい値と第２しきい値との間に存在する場合には、段数を変化させず、第１しきい値以下の場合、又は、第２しきい値以上の場合に、段数を、それぞれ、１クラス下、又は、１クラス上の段数に、減少又は増加させる統合又は統合解除処理を実行している。したがって、段数の頻繁な変更が防止されると共に、１制御期間では１段だけの変更を許可しているので、大きな段数の変更が防止される。このことは、結果的に、段数の大きく異なるクラスが交互に選択されることが防止されるので、節電効果が大きくなる。
【００４１】
第６の発明では、制御値の大きさ判定を積分項と、比例項とに分けて判定している。積分項と比例項が共に負の場合には、過去の平均命令実行速度も現命令実行速度も共に目標命令実行速度よりも大きいことを意味しているので、段数を減少させる統合処理が実行される。逆に、積分項と比例項が共に正の場合には、過去の平均命令実行速度も現命令実行速度も共に目標命令実行速度よりも小さいことを意味しているので、段数を増加させる統合解除処理が実行される。積分項と比例項との積が０又は負の場合には、次の制御期間において、現平均命令実行速度が目標命令実行速度に接近し得ることを意味しているので、段数の変更は実施されない。このようにして、現平均命令実行速度を目標命令実行速度に追従させることができる。
【００４２】
第７の発明では、段数の増加が行われた後の制御期間において、さらに段数を増加する条件が成立しても、制御値又は測定された単位時間当たりの前記命令実行数の平均値の目標命令実行数に対する偏差が増加傾向にある場合には、段数を増加させることなく、現段数を維持する。これは、段数が増加された後の複数の連続する制御期間において、この条件が満たされれば、現段数を維持する。すなわち、いずれ、現平均命令実行速度が目標命令実行速度に達する傾向を有している。よって、段数を直ぐに増加させる必要はない。この処理により、より段数の大きなクラスへの変更を防止することができる。
【００４３】
逆に、段数の減少が行われた後の制御期間において、さらに段数を減少する条件が成立しても、制御値又は測定された単位時間当たりの命令実行数の平均値の目標命令実行数に対する偏差が減少傾向にある場合には、段数を減少させることなく、現段数を維持する。段数が減少された後の複数の連続する制御期間において、この条件が満たされれば、現段数を維持する。すなわち、いずれ、現平均命令実行速度が目標命令実行速度に達する傾向を有している。したがって、直ちに段数を減少させる必要はない。よって、この処理により、さらに、より段数の小さなクラスへ変更されることを防止することができる。
【００４４】
このことにより、連続しないクラス間で、段数が交互に変化することが防止される。省電力効果は段数が小さくなるほど大きいが、省電力効果と段数との変化特性は、線形ではない。省電力効果の段数に対する変化率は、段数が大きくなるほど、大きい。したがって、目標命令実行速度を実現し得る接近した２つのクラスの段数を選択して、その２つのクラスの段数で、交互に段数を変化することが、最も、電力を節減できることになる。本発明は、現平均命令実行速度の目標命令実行速度に対する正確な追従性を確保して、この省電力効果を増大させる確率を高くすることができる。
【００４５】
第８の発明は、第７の発明に比べれば、現平均命令実行速度の目標命令実行速度に対する追従性が遅れる傾向があるが、省電力効果を最大限に増大させることができる。目標命令実行速度を実現し得る接近した２つのクラスが、段数の大きい第１クラスと段数の小さい第２クラスである。各クラスの段数での現命令実行速度は、仕事に依存するので、現実に仕事を実行している時に、第１クラスと第２クラスとを検出する必要がある。これを実現するのに、制御値又は偏差が負となる第１クラス群と、制御値又は偏差が正となる第２クラス群を決定し、２つの群から、最も段数が接近しているクラスを、それぞれ、第１クラス、第２クラスと特定すれば良い。
【００４６】
そして、制御値に応じた段数制御において、この第１クラスの段数と、第２クラスの段数だけで、交互に段数を変化させれば、現平均命令実行速度を目標命令実行速度に追従させることができる。しかも、隣接した２つのクラスの段数を選択していることから、最大の節電効果を得ることができる。なお、目標命令実行速度と各クラスの段数での命令実行速度との関係が変化した場合であっても、本発明によると、現在の目標命令実行速度を間に挟み、最も接近した２つの命令実行速度が得られる２つのクラスが、リアルタイムで選択されるので、常に、最大節電効果を達成した状態で、現平均命令実行速度を目標命令実行速度に追従させることができる。
【００４７】
第９の発明では、第１クラスと第２クラスの検出は第８の発明と同一である。本請求項の発明は、第８の発明のように、第１クラスと第２クラスの段数に、段数を拘束しない。ある制御期間において段数の大きい第１クラスが選択された場合には、次の制御期間において、段数の小さい第２クラスの段数が選択される確率を増大するように制御値が補正される。これにより、第１クラスの段数から、さらに段数の大きいクラスに段数が変化する確率を減少させ、現平均命令実行速度が目標命令実行速度に対して小さい場合に、第１クラスの段数だけで、追従し得るようになる。これにより、段数の隣接クラスを越える変更が防止されるので、節電効果が大きくなる。
【００４８】
第１０の発明は、段数を３クラスとしたものであり、常に、中間段数が優先して選択され得るようになる。これにより、目標命令実行速度が最大段数の命令実行速度と中間段数の命令実行速度との間に存在する場合には、最大段数と中間段数との間のみ段数変更が行われる確率を増大させることができる。また、目標命令実行速度が中間段数の命令実行速度と最小段数の命令実行速度との間に存在する場合には、中間段数と最小段数との間のみ段数変更が行われる確率を増大させることができる。これにより、３段階でのパイプラインの段数変更の場合において、節電効果を最大とすることができる。
第１１、１２の発明では、段数と、クロック周波数とに応じて、給電電圧を制御する電源電圧制御手段を設けたので、さらに、消費電力の削減を図ることができる。
また、第１３の発明では、ＤＶＳ方式と、ＰＳＵ方式とおいて、段数を統合した場合において、制御値に応じて給電電圧と周波数とを連続的に制御しているので、さらに、消費電力を低減することができる。
【発明を実施するための最良の形態】
【００４９】
以下、本発明を実施の形態に基づいて説明する。本発明は以下の実施形態に限定されるものではない。
【実施例１】
【００５０】
PSUの概要
図1、図2にPSUに関連する信号線とパイプラインレジスタとの結線関係を示す。図2は、16段のパイプラインを示し、図1はその一部の詳細図である。図2に示すように、17個のパイプラインレジスタ101-117が設けられ、それらのレジスタの間に16段の組合せ論路回路1-16が設けられている。各パイプラインレジスタ101-117には、クロックの階層ネットワークの最終段の17個のクロックドライバ201-217の出力が入力されており、そのクロックドライバ201-217のそれぞれには、クロック信号線30からのクロック信号が入力されている。また、PSUのための信号線として、統合、すなわち、パイプラインレジスタの動作の停止を指示する4ビットの統合信号(停止信号)を伝送する統合信号線31が配設されている。図1では、パイプラインレジスタ101とパイプラインレジスタ102との間に第1段の組合わせ論理回路A、パイプラインレジスタ102とパイプラインレジスタ103との間に第2段の組合せ論理回路Bが配設されている。図2に示すように、隣接するパイプラインレジスタの間には、各段の組合せ論理回路1-16が設けられている。信号のラッチ機能を有するパイプライン間の数が段数である。
【００５１】
4ビットの統合信号線上の統合信号(1111)は、全16段を全て使用する統合がない状態を指示する統合信号である。また、1ビットだけLレベルとする統合信号(1110)は、第1段と第2段、第3段と第4段…と、1段おきに統合し、全16段を全8段に統合処理することを指令する信号である。また、2ビットだけLレベルとする統合信号(1100)は、統合された8段の組合せ論理回路をさらに1段おきに統合して、全8段を全4段に統合処理することを指令する信号である。また、3ビットだけLレベルとする統合信号(1000)は、統合された全4段を全2段に統合することを指令する信号線である。さらに、4ビット全てLレベルの統合信号(0000)は、その2段を統合し、全16段を1段に統合処理することを指令する信号である。
【００５２】
各パイプラインレジスタ101-117には、クロックドライバー201-217が入力され、そのうち15個のクロックドライバー202-216には、アンドゲート302-316が接続されている。そして、各アンドゲート302-316には、上記のように、現状から、各ステージを1つおきに段階的に統合するように、4ビットの統合信号線31からの統合信号が入力されるように接続されている。これにより、上記の統合信号のLレベルの信号を入力したアンドゲートは、クロックをクロックドライバに出力しないように構成されている。クロックドライバーは、クロック信号が入力されない場合には、電流が遮断されて増幅動作を停止するように構成されている。また、アンドゲートに入力する統合信号は、パイプラインレジスタにも入力しており、Lレベルの統合信号を入力したパイプラインレジスタは、ラッチ動作をせずに上流の組合せ論理回路からの信号を下流の組合せ論理回路にスルーさせるように構成されている。そして、この状態で、パイプラインレジスタは、電力の消費が極めて小さくなるように構成されている。
【００５３】
図1(a)はステージを統合していない状態、すなわち、最大段数を、図1(b)は、隣接する組合せ論理回路を統合して、1クラス下の段数にした統合状態を示す。図中の実線ブロックで示されたパイプラインレジスタ101、103は、上流からの信号のラッチ動作をしているパイプラインレジスタであり、破線ブロックで示されたパイプラインレジスタ102は、信号のラッチ動作をせずに、信号を下流にスルーさせているレジスタを示している。図2に示されている他のパイプラインレジタについても同様であり、上流側からの信号のラッチ動作をせずに信号のスルー動作のみをしているパイプラインレジスタが1つ置きに存在する。これが1段だけ統合処理されたパイプラインである。この状態からさらに隣接する組合せ論理回路が1段おきに統合処理すると、2クラス下の統合処理された状態となる。以下、3クラス下、4クラス下の統合も同様である。
【００５４】
図1(a)は通常のパイプラインとして動作し、隣接する組合せ論理回路AとBは、それらの回路の間のパイプラインレジスタ101-103が動作しているため、異なったステージとして動作する。一方、図1(b)では、統合信号を1110とすることにより、組合せ論理回路AとBの間のパイプラインレジスタ102へのクロックが入力されなくなり、信号はバイパスされる。したがって、このパイプラインレジスタ102は動作せず、2つの組合せ論理回路A,Bは1つのステージとして動作する。他のパイプラインレジスタにおいても同様である。
【００５５】
段数制御のための装置
本実施例では、通常の本体マイクロプロセッサに、図3に示す段数制御装置を回路パターンとして組み込んでいる。カウンタ41は、マイクロプロセッサのプログラムカウンタ40の更新回数を計測するカウンタである。プログラムカウンタは、現在解読している命令語の記憶アドレスを示している。したがって、このプログラムカウンタが更新される毎に1命令語が読み出されることを意味している。よって、このプログラムカウンタのデータの更新を示す信号をカウンタ41に入力して、命令語の実行数を計測することができる。本段数制御装置には、段数制御のためのMPU50が設けられており、リセット信号をカウンタ41に出力して、リセット後のカウンタの値を読み取ることで、リセットした後の経過時間において実行される命令語数を測定することができる。例えば、MPU50が100ms毎にリセット信号をカウンタ41に与えれば、100ms毎の現実の命令語の実行数を測定することができる。なお、本実施例では、パイプラインの段数を制御する周期も100msとしている。
【００５６】
また、単位時間当たりの目標命令実行数(目標命令実行速度)を設定するための目標設定レジスタ51が設けられている。この目標設定レジスタ51は、本体マイクロプロセッサにより設定される。例えば、ユーザが節電モードを指定した場合には、その節電モードの段階に応じて、目標命令実行速度が本体マイクロプロセッサにより設定される。又は、本体マイクロプロセッサがある仕事を実行している時に、その仕事の処理に掛けることのできる時間を求め、その時間に応じて、目標命令実行速度を設定することができる。又、各種のアプリケーションプログラムや入出力/通信制御プログラムが連続して実行されるか、リアルタイムで並列処理される場合において、各アプリケーションプログラムや入出力/通信制御プログラム毎に、仕事を要求してから完了するまでの許可し得る所要時間を求めて、その所要時間に応じた目標命令実行速度を目標設定レジスタ51に設定しても良い。この設定は、アプリケーョンプログラムの中で設定できるようにすれば良い。
【００５７】
又、クロック発生器52が設けられており、MPU50は、演算して求めた段数に応じた周波数のクロックを発生するようにクロック発生器52に指令を出す。さらに、MPU50は、入出力インタフェース53を介して、4ビットの統合信号を統合信号線31に出力するように構成されている。その他、MPU50の処理プログラムを記憶したROM54とデータを一時記憶するRAM55が設けられている。
【００５８】
次に、MPU50の処理手順について説明する。図4のプログラムは、100msの制御期間毎に間欠的に実行される。制御期間以外は、MPU50は節電モードになるように構成されている。これにより、MPU50が追加になっても、消費電力が増加しないようになっている。ステップ100では、目標設定レジスタ51から目標命令実行速度R(i)が読み込まれ、ステップ102では、現命令実行速度S(n)が、カウンタ41の値に基づいて演算される。100ms毎の制御周期毎にカウンタ41がリセットされ、100ms経過した後のカウンタ41の値が読み込まれるので、100ms間の命令実行数が得られ、それから、1s当たりの
現制御期間nにおける現命令実行速度S (n)が演算される。nは、100ms毎に段数制御が行われる制御期間変数である。
【００５９】
次に、ステップ104で偏差Δ(n)が、R(n)-S(n)により演算される。次に、ステップ106において、制御値F(n)が、aΣΔ(n)+bΔ(n)により演算される。すなわち、積分・比例演算が実行される。a,bは、各項のゲインである。
【００６０】
次に、ステップ108において、制御値F(n)が第1しきい値Th1以下か否かが判定され、制御値F(n)が、第1しきい値Th1以下の場合には、ステップ110において、段数を1クラス低下させる統合信号を出力する。統合信号を下位ビットから0にすれば、1クラス下の段数とすることができる。すなわち、4ビットのデータを上桁方向に1ビットシフトさせ、最下桁を0とすれば良い。また、その段数に応じて、ステップ112で、クロック周波数を現周波数の1/2に低下させる。
【００６１】
次に、ステップ108で、制御値F(n)が第1しきい値Th1以下でないと判定された場合には、ステップ114に移行して、制御値F(n)が第２しきい値Th2以上か否かが判定される。制御値F(n)が第２しきい値Th2以上の場合には、ステップ116へ移行して、段数を1クラス上昇させる統合信号を出力して、統合解除処理を実行する。統合信号を上位ビットから順に1にすれば、1クラス上の段数とすることができる。すなわち、4ビットのデータを下桁方向に1ビットシフトさせ、最上桁を1とすれば良い。また、その段数に応じて、ステップ118で、クロック周波数を現周波数の2倍に上昇させる処理を実行する。又、ステップ114において、Noと判定された場合には、すなわち、制御値F(n)が第1しきい値Th1と第2しきい値Th2の間に存在する場合に、段数の変更は実行せずに、ステップ120において、カウンタ41に対してリセット信号を出力し、制御期間変数nを1だけ更新して、次の制御期間における命令実行数を計数する。
【００６２】
上記の処理を繰り返し実行することにより、制御値F(n)が0となるように、段数のフィードバック制御が実行される。これにより、現平均命令実行速度が目標命令実行速度に追従するように段数が制御されることになる。目標命令実行速度が一定であれば、仕事の種類により、現命令実行速度が変動しても、段数が変化することで、現平均命令実行速度が目標命令実行速度に等しくなるように制御される。また、現命令実行速度が変化しなくとも、目標命令実行速度を実現するために、その速度を挟む速度が得られるクラスの段数で、交互に切換制御されて、現命令実行速度が目標命令速度に等しくなるように制御される。
【実施例２】
【００６３】
実施例1において、ある制御期間(n)において、図4のステップ108の条件が満たされて段数が1クラスだけ低下された後、次の制御期間(n+1)において、また、ステップ108の条件が満たされるとステップ110で段数が1クラスだけ、また、低下される。すなわち、連続して段数が低下することになる。この場合には、節電効果が低くなる。そこで、本実施例では、図4の処理のステップ106において、制御値F(n)に、微分項c(Δ(n)-Δ(n-1)を加算している。仮に、実施例1のステップ108の判定がYesとなる場合であっても、偏差が増加傾向にある場合には、微分項が正となり、制御値を上昇させる。すなわち、段数を低下することを抑制することに作用する。換言すれば、現制御期間(n)において、目標命令実行速度に対して現命令実行速度が今後低下する傾向があることが分かるので、段数を現制御期間では低下させないようにする。これにより、不必要な段数の変化が防止できる。逆に、目標命令実行速度に対して現命令実行速度が、今後、上昇する傾向にあれば、制御値F(n)をより低下させて、早めに、段数を低下させることができる。このようにして、目標命令実行速度に対する追従性が向上すると共に、省電力効果を高めることが可能となる。段数を上昇させる場合も同様である。
【実施例３】
【００６４】
本実施例は、連続した制御周期で、段数が連続して低下したり上昇したりすることを防止したものである。ステップ100-106までは、実施例1の図4に示すプログラムと同一である。図5において、ステップ108で、制御値F(n)が第1しきい値Th1以下と判定されると、ステップ200において、現制御変数nと、段数の上昇を経ることなく直近に段数が降下された時の制御変数uとの差、すなわち、直近の段数降下後の段数が変化しない制御期間の経過期間回数が正で所定回数w1以下か否かが判定される。
【００６５】
判定結果がYesの場合には、ステップ202において、現制御値F(n)が減少傾向(F(n)-F(n-1))<0にあるか否かが判定される。現制御値F(n)が減少傾向にある場合には、段数を減少させても、現平均命令実行速度が目標命令実行速度に対して、まだ、増加する傾向があるので、この場合にのみ、ステップ110、112において、段数をさらに1クラス下の段数に減少させる処理が実行される。現制御値F(n)が減少傾向にない場合には、さらに段数を減少させなくとも、将来の近い制御期間において、制御値F(n)が第1しきい値Th1より大きくなることが予測されるので、この場合には、段数の減少処理が実行されない。
【００６６】
一方、段数が1クラス下に減少した後に、所定数の制御期間が経過してもなお、現制御値F(n)が第1しきい値Th1以下である場合には(ステップ108の判定がYes、ステップ200の判定がNoの場合)、には、現平均命令実行速度が目標命令実行速度よりも大きいことを意味しているので、追従制御のために、さらに、段数を1クラス低下する処理が実行される。
【００６７】
同様に、ステップ114で、制御値F(n)が第2しきい値Th2以上と判定されると、ステップ204において、現制御変数nと段数の降下を経ることなく直近に段数上昇された時の制御変数uとの差、すなわち、直近の段数上昇後の段数が変化しない制御期間の経過回数が正で所定回数w2以下か否かが判定される。
【００６８】
判定結果がYesの場合には、ステップ206において、現制御値F(n)が増加傾向(F(n)-F(n-1))>0にあるか否かが判定される。現制御値F(n)が増加傾向にある場合には、段数を増加させても、現平均命令実行速度が目標命令実行速度に対して、まだ、減少する傾向があるので、この場合にのみ、ステップ116、118において、段数をさらに1クラス上の段数に増加させる処理が実行される。現制御値F(n)が増加傾向にない場合には、さらに段数を増加させなくとも、将来の近い制御期間において、制御値F(n)が第2しきい値Th2より小さくなることが予測されるので、この場合には、段数の増加処理が実行されない。
【００６９】
一方、段数が1クラス上に増加した後に、所定数の制御期間が経過してもなお、現制御値F(n)が第2しきい値Th2以上である場合には(ステップ114の判定がYes、ステップ204の判定がNoの場合)、には、現平均命令実行速度が目標命令実行速度よりも小さいことを意味しているので、追従制御のために、さらに、段数を1クラス上昇する処理が実行される。
【００７０】
このステップ200〜202の処理によって、一旦、段数が1クラス下に低下された後は、所定回数w1だけ段数の変化しない制御期間が経過するまでは、現平均命令実行速度が減少傾向にない場合にのみ段数を減少させるようにしている。したがって、一旦、段数が1クラスだけ低下すると、連続した制御期間では、低下しないようにすることができる。
段数を上昇させる場合も、ステップ204、206の処理が実行されて、一旦、段数が1クラスだけ上昇すると、制御期間の数uを経過するまでは、現命令実行速度が上昇傾向にある場合には、段数を上昇させない。すなわち、段数を上昇させなくとも、目標命令実行速度に近づく可能性が高いからである。このようにして、段数が連続的に上昇することが防止される。この結果として、最大の省電力効果を達成することができる。
【００７１】
この処理による段数制御の様子を図6のタイミングチャートに示す。横軸は制御期間変数nであり、経過時間を示している。縦軸は、(a)は、制御変数F(n)、(b)は、パイプラインの段数(クラス)である。制御期間1において、Th1<F(1)<Th2を満たし、段数はクラス3である。制御期間2では、Th2<F(2)となるので、段数が1クラス上昇されて、クラス2となる。制御期間3,4 では、Th1<F(n)<Th2が満たされるので、クラス2の段数が維持され、制御期間5において、Th2<F(5)となるので、段数が1クラス上昇されて、クラス1となる。制御期間6,7 では、Th1<F(n)<Th2が満たされるので、クラス1の段数が維持され、制御期間8において、F(8)<Th1となるので、段数が1クラス低下されて、クラス2となる。次の制御期間9では、F(9)<Th1となるので、実施例1の図4に示す処理によると、段数は、もう1クラス低下されて、クラス3と連続的に2クラス段数が減少する。しかし、本実施例3では、F(9)は、上昇傾向を示しているので、制御期間9においては、段数の低下処理が実行されることなく現クラス2が維持される。
【００７２】
今、w1=w2=3に設定されているとすると、直近に段数が低下した制御期間8(u=8)の次から3期間の制御期間11までは、F(n)-F(n-1)<0の判定が実行されて、この条件を満たす場合にのみ、F(n)<Th1が満たされると、段数は1クラスだけ低下処理される。しかし、F(n)が減少傾向を示さない(F(n)-F(n-1)≧0)場合には、段数の低下処理は実行されず現段数のクラス2が維持される。
【００７３】
次に、制御期間8から3期間を越える制御期間13において、F(13)<Th1が満たされると、段数は、1クラスだけ低下されて、クラス3となる。次の制御期間14は、直近に段数が低下した制御期間13(u=13)に対して3回以下の制御期間であり、F(14)<Th1が満たされているが、F(n)-F(n-1)<0であり、制御値F(n)はさらに減少傾向を示しているので、この場合には、制御期間14において、さらに、1クラス下の段数に段数が低下されて、クラス4の段数となる。次の制御期間15では、直近に段数が低下した制御期間13から3回以下の制御期間であり、F(14)<Th1を満たしているが、F(n)-F(n-1)<0を満たしていないので(制御値F(n)が増加傾向を示す)、段数は現クラス4に維持される。以下、同様な制御が繰り返し実行される。
【００７４】
このように、実施例１では、制御期間9,10,11,15において、さらに、段数が1クラス低下されるが、本実施例３では、現状のクラスが維持される。これにより段数の大きな変化が防止されて、節電効果を大きいものとすることができる。
【００７５】
上記では、段数の維持の判定に制御値を用いたが、測定された命令実行数の平均値の目標命令実行数に対する偏差に基づいて段数を維持するか否かの判定を行うようにしても良い。
【実施例４】
【００７６】
次に、目標命令実行速度が2つの隣接したクラスの命令実行速度の間に存在するように、その2つのクラスである、第1クラスAとそれより段数の少ない第2クラスBとをリアルタイムで判定しながら、段数の変更を第1クラスと第2クラスとに拘束する場合の実施例を示す。
【００７７】
本実施例の処理手順を図7に示す。ステップ300〜ステップ306は実施例1のステップ100〜ステップ106と同一である。ステップ308において、現制御期間nでの偏差Δ(n)が負か否かが判定され、負であれば、ステップ310において、現クラスkを第1クラスAに設定する。そして、1クラス下のクラスk+1を第2クラスBに設定する。また、ステップ308で偏差が零又は正と判定された場合には、ステップ312において、現クラスkを第2クラスBに、1クラス上のクラスk-1を第1クラスAに設定する。
【００７８】
偏差Δ(n)が負であることは、現命令実行速度が目標命令実行速度よりも大きいことを意味しているから、現クラスkが、第1クラスAであり、1下のクラスk+1が第2クラスBであると、一応、判断できる。また、逆に、偏差Δ(n)が0又は正であることは、現命令実行速度が目標命令実行速度に等しいか小さいことを意味している。したがって、この場合には、現クラスkが、第2クラスBであり、1クラス上のクラスk-1が第1クラスAであると、一応、判断できる。判断の初期状態では、第2クラスBの命令実行速度が目標命令実行速度よりも大きく、第1クラスAの命令実行速度が目標命令実行速度よりも小さい場合も有り得る。しかし、そのような場合には、以下の制御により、制御値F(n)が暫時減少するか増大することになるので、後の制御期間において、目標命令実行速度を挟む命令実行速度を有する2つのクラスA,Bを、ステップ308〜312の処理により検出することができる。
【００７９】
ステップ314、320の処理は、実施例1のステップ108、114の処理と同一である。F(n)≦Th1の場合には、目標命令実行速度に対して現命令実行速度が過大であるので、ステップ316において、現クラスkを第2クラスBとし、ステップ318において、その第2クラスBに対応したクロック周波数を出力する。仮に、現クラスがクラスBよりも段数の大きいクラスであれば、第2クラスBに段数を減少し、命令実行速度を低下させることになる。
【００８０】
また、F(n)≧Th2の場合には、目標命令実行速度に対して現命令実行速度が過小であるので、ステップ322において、現クラスkを第1クラスAとし、ステップ324において、第1クラスAに対応したクロック周波数を出力する。仮に、現クラスがクラスAよりも段数の小さいクラスであれば、第1クラスAに段数を増加し、命令実行速度を上昇させることになる。
【００８１】
この実施例4における制御値F(n)と段数(クラス)の変化の様子を図8に示す。目標命令実行速度が第1クラスAと第2クラスBとの間にあるとし、制御期間1において、段数は第2クラスBに制御されているとする。制御期間2において、F(n)≧Th2が満たされるので、現クラスkは、第1クラスAに1クラスだけ上昇される。次に、制御期間5において、F(n)≧Th2を満たしても、段数を1クラス上昇させることなく、現クラスを第1クラスAに維持する。次に、制御期間8において、F(n)≦Th1を満たすと、命令実行速度が目標命令速度より過大になったことを意味しているので、現クラスkは、第2クラスBに1クラスだけ低下される。その後制御期間12まで、第2クラスBの段数が維持される。次に、制御期間12において、目標命令実行速度が第2クラスBの命令実行速度よりも低下したと仮定する。すると、現クラスである第2クラスB において、偏差Δ(n)<0となるので、制御期間13におけるステップ310において、第1クラスAが現クラスである第2クラスB に1クラス低下され、第2クラスBは、さらに、1クラス低いクラスに変更される。
【００８２】
そして、その制御期間13におけるステップ314において、F(13)≦Th1を満たすので、ステップ316で、現クラスkが、第2クラスBに1クラス低下される。そして、次の制御期間14、15においても、F(n)≦Th1を満たすが、現クラスは、第2クラスBが維持される。そして、制御期間16において、F(14)≧Th2が満たされるので、現クラスkは、第1クラスAに1クラスだけ上昇される。同様に制御期間17では第1クラスAが維持され、制御期間18では、現クラスは第2クラスBに低下される。
【００８３】
このようにして、本実施例では、目標命令実行速度が変化しても、その目標命令実行速度を挟む実行速度を有する隣接した2つのクラスも、追従して変更される。そして、目標命令実行速度か変化しても、段数は、その2つのクラスに拘束されて、目標命令実行速度に追従して変化されることになる。したがって、最大の省電力効果を得ることができる。
【実施例５】
【００８４】
本実施例は、ある制御期間のクラスの命令実行速度が目標命令実行速度よりも大きい場合には、次の制御期間において1クラス下の段数が選択される確率を高くするために制御値を所定値Vだけ低下するようにした実施例である。その処理手順を図9に示す。
【００８５】
ステップ400〜408は、実施例4の図7のステップ300〜308と同一である。ステップ408で、偏差Δ(n)が負か否かが判定され、負の場合には、ステップ410において、制御値F(n)が所定値Vだけ減算される。すなわち、現制御期間nにおいて、命令実行速度が仮想的にVだけ大きいとして、段数変更において、1クラス下の段数が選択され易くしている。すなわち、段数が第1クラスにある場合に、次の制御期間で次の段数にさらに上昇する確率を小さくすることができる。仮に、次のクラスの段数に上昇すると、制御値が小さくなり過ぎて、さらに、次の制御周期では段数が低下し、また、次の制御周期では段数がさらに低下して、制御値が、今度は、大きくなり過ぎる場合がある。結局、この場合には、連続しないクラス間で段数が交互に変化することになり、省電力効果を高くすることができない。
【００８６】
ステップ414〜420は、実施例1の図4のステップ108〜120と同一である。この処理により、段数が連続して上昇し、その結果、隣接しないクラス間で段数が交互に変化することを防止できる。これにより、省電力効果を大きくすることができる。
【実施例６】
【００８７】
以下の説明では、上記のクラスは、統合度として記載する。また、上記の目標命令実行速度や、現命令実行速度、現平均命令実行速度などの実行速度をスループットとして表現する。統合度とはPSUによって統合されているステージ数とする。統合度1(クラス1)は統合しないことを意味する。クロック周波数はある定められたステップで変更するものとする。目標とするスループット(目標命令実行速度)をTPtargetと表し、これはOSより指示されるものとする。これは、Trevor Pering and Tom Burd and Robert Brodersen,"The Simulation and Evaluation of Dynamic Voltage Scaling Algorithms," In ISLPED1998, pp. 76-81, 1998.を参考に、OSが各タスクの実行後に余った時間を調べ、各タスクを規定の時間内で終わらせるのに必要な、最小のスループットを計算して指示すると仮定したためである。
【００８８】
低い統合度を選択すると、クロック周波数が高くなるため、スループット(現平均命令実行速度)が高くなる。逆に、高い統合度を選択すると、クロック周波数が低くなるため、スループット(現命令実行速度)が低くなる。したがって、統合度を上下させることで、スループット(現平均命令実行速度)を上下させることができる。ただし、高い統合度では低い統合度よりもIPCが高くなるため、スループット(現命令実行速度)は単純にクロック周波数に比例するわけではない。また、高い統合度を選択した場合は、低い統合度を選択した場合より消費電力が小さくなる。
【００８９】
以上のスループットと消費電力の関係より、TPtargetを達成しつつ消費電力を最小にするためには、実行開始から終了までの平均スループット(現平均命令実行速度)がTPtargetにできるだけ近い状態が良いと言える。その理由を述べる。実行開始から終了までの平均スループットがTPtargetを大きく下回った場合、消費電力は小さくなるが、TPtargetを達成していないため、OSから与えられた時間内に与えられたタスクを終えることができず、処理に影響を与える。逆に、実行開始から終了までの平均スループットがTPtargetを大きく上回った場合、OSから与えられた時間内に与えられたタスクを終えることができるが、TPtargetを上回った分だけ性能過剰となり、消費電力が大きくなる。したがって、TPtargetを達成しつつ、できるだけ消費電力を小さく抑えるというスループット制御の目標を達成するためには、TPtargetにできるだけ近い平均スループットを達成しなければならないことになる。そこで、実行中に適切に統合度とクロック周波数を変更してスループットの変動を制御しなければならない。
【００９０】
TPtargetを達成するために、実行中に定期的に統合度とクロック周波数を変更する。そのために、プログラムの実行を一定時間ごとに区切る。上記では制御期間として記載されたこの区切られた区間を、以下では、フェーズと呼ぶ。各フェーズの間は一定の統合度、クロック周波数で実行する。各フェーズの長さは、時間で定義している。サイクル数で定義しない理由は、サイクル数で定義した場合、クロック周波数の変化によって各フェーズの区間の時間が長くなったり短くなったりするためである。また、各フェーズの実行中に、スループットの計算に使うためのIPC(instructions per cycle)の測定も行う。ここでIPCとは1サイクルに実行される命令数のことである。
【００９１】
PSUによるスループット制御機構は、統合度を上下させることによって、スループットの制御を行なう。以下、アルゴリズムの詳細について説明する。まず、i番目のフェーズのスループットをTP(i)、1番目のフェーズからi番目のフェーズの平均スループットをTPavg(i)とする。現在、実行開始からn番目のフェーズの実行が終了したとすると、以下のアルゴリズムにしたがって、統合度を変更する。
【００９２】
１．測定したIPCの値からTP(n)を求め、計算によって、TPavg(n-1)からTPavg(n)を求める。ここで、TP(n)の求め方と、TPavg(n-1)からTPavg(n)への更新方法を説明する。まず、TP(n)は、測定した第nフェーズのIPCの値IPC(n)と、第nフェーズのクロック周波数f(n)から、式(1)によって求める。また、TPavg(n-1)からTPavg(n)への更新は、式(2)によって行う。ここで、 time(i)は第iフェーズの時間である。PSUによるスループット制御機構では各フェーズの時間はすべて等しいので、フェーズの時間をTphaseとすると、式(3)のように簡略化できる。
【００９３】
【数１】
2008192124.tif 000003
【数２】
2008192124.tif 000004
【数３】
2008192124.tif 000005
【００９４】
２．TP(n)、TPavg(n)、TPtargetから、表1にしたがって統合度を上下させる。表1による統合度の変更方法は、現時点のスループットの値と実行開始から現時点までのスループットの平均値を用いていることから、この変更方法をPI制御(proportional integral control)と呼ぶ。
【００９５】
【表１】
2008192124.tif 000006
３．決定した統合度で(n+1)番目のフェーズを実行する。
【００９６】
この手順は、図10に示す手順となる。ステップ500で目標スループットTPtarget(n)を入力し、ステップ502において、現フェーズnでのスループットTP(n)を演算し、ステップ504において、現フェーズまでの平均スループットTPavg(n)を上式で演算する。次に、ステップ506において、TPavg(n)≧TPtarget(n)と、TP(n)≧TPtarget(n)が共に成立しているか否かが判定される。すなわち、制御値F(n)の積分項と、比例項とが共に0以上か否かが判定される。両条件が成立すれば、現平均命令実行速度も現命令実行速度も、目標命令実行速度よりも速いことを意味しているので、ステップ510において、段数を少なくする1段統し、現命令実行速度を低下させる。また、ステップ512で、クロック周波数を低下させる。
【００９７】
また、ステップ506で、条件が満たされない場合には、ステップ508で、TPavg(n)＜TPtarget(n)と、TP(n)＜TPtarget(n)が共に成立しているか否かが判定される。すなわち、制御値F(n)の積分項と、比例項とが共に0以下か否かが判定される。両条件が成立すれば、現平均命令実行速度も現命令実行速度も、目標命令実行速度よりも遅いことを意味しているので、両条件が成立すれば、ステップ516において、段数を多くする1段統解除し、現命令実行速度を上昇させる。また、ステップ518で、クロック周波数を上昇させる。ステップ506、508での両条件式が満たされない場合には、現平均命令実行速度が目標命令実行速度に追従する可能性が高いので、段数の変更処理は実行しない。このようにしても、現在の平均スループットを目標スループットに追従させることができる。
【００９８】
次に、本実施例での節電効果のシミュレーション結果について説明する。SimpleScalar Tool Set （Doug Burger and Todd M. Austin, "The SimpleScalar Tool Set, Version 2.0, "Technical Report CS-TR-97-1342, University of Wisconsin-Madison Computer Sciences Dept. 1997.)中のout-of-order実行シミュレータを用いて、パイプラインのステージ数を変化させ、IPCを測定した。命令セットはSimpleScalar PISAである。表2に示すように、ベンチマークプログラムとして、SPECint95の8本を用いた。ベンチマークプログラムのバイナリはgcc ver.2.7.2.3を用い、-O6-funroll-loopsのオプションでコンパイルし作成した。シミュレーション時間が過大にならないようにするために、命令ミックス、関数の出現頻度など、特徴をほぼ維持しつつ、それぞれのベンチマークプログラムへの入力を調整した。
【表２】
2008192124.tif 000007
【００９９】
【表３】
2008192124.tif 000008
表3に、シミュレーションにおいて仮定したプロセッサの構成を示す。プロセッサは近年のプロセッサと同様に、深いパイプラインを持つと仮定した。メモリアクセス時間は、プロセッサのクロック周波数の低下に比例して遅くなると仮定した。そのため、プロセッサのクロック周波数によらず、メモリアクセスのサイクル数は一定である。
【０１００】
統合度1、統合度2、統合度4の3種類の統合度（クラス）を仮定する。図11 に統合度1、統合度2、統合度4のパイプラインを示す。また、表4に、これらのパイプラインにおける命令の実行レイテンシ、分岐予測ミスペナルティ、キャッシュヒットレイテンシを示す。表の2行目に示すように、1、2、4ステージを統合した場合、それぞれ最大クロック周波数の100%、50%、25%で動作する。
【０１０１】
【表４】
2008192124.tif 000009
【０１０２】
なお、整数/浮動小数点除算と平方根演算については、同一資源を繰り返し使用し、完全なパイプライン化はされておらず、ステージの統合はできないと仮定した。レイテンシはそれぞれ、20、12、24サイクルとした。
【０１０３】
DVSの消費電力はアクティビティファクタをa、スイッチするノードの全容量をC、クロック周波数をf、電源電圧をVとすると、式(4)で表される。PSUの消費電力の計算方法は以下の通りである（上記非特許文献5、6)。図1に示したようにパイプラインステージを統合すると、パイプラインレジスタへのクロック分配が抑制され、クロックネットワークの消費電力が減少する。さらに、クロックの供給を止めたパイプラインレジスタは動作しないため、フリップフロップ動作の消費電力分が削減できる。統合度Uにおいて停止するパイプラインレジスタの割合は(U-1)/Uである。mをプロセッサの全消費電力に対するクロックネットワークの消費電力とすると、統合度Uで動作するPSUの消費電力は式(5)で表される。
【０１０４】
【数４】
2008192124.tif 000010
【数５】
2008192124.tif 000011
【０１０５】
評価においては、mは32% (= 12% + 20%)と仮定した。この値は、以下の前提に基づいている。
１．プロセッサの総消費電力に対するクロックネットワーク最終段のドライバの消費電力は12% (= 30%×40%)
・プロセッサの総消費電力に対するクロックの消費電力は30%
・クロックネットワークの総消費電力に対するネットワーク最終段のドライバの消費電力を40%
２．パイプラインレジスタの消費電力は20%
これらの値は、現実のプロセッサのデータを示した以下の文献を参考にして決定した。K.Usami, M.Igarashi, M.Knazawa, M.Takahashi, M. Harada, H.Arakida, T.Terazawa, and T.Kuroda,"Design methodology of ultra low-power MPEG4 codec core exploiting voltage scaling technologies," DAC’98, pp. 483-488, 1998. T.Sakurai,"Low-power circuit design for multimedia CMOS VLSI's," In Proceeding of SASIMI’96. L.T.Clark, et al,"An Embedded 32-b Microprocessor Core for Low Power and High Performance Applications,"Journal of Solid State Circuit, Vol.36, No.11, pp. 1599-1608, 2001.
【０１０６】
なお、消費電力の評価では、PSUによってステージを統合しない場合(統合度1、クロック周波数100%)の消費電力で正規化した値を用いた。このため、aとCは正規化のための除算によって消去され、これらの値は評価に関係ない。また、評価における、DVSの各クロック周波数における電源電圧の値は、Crusoe TM5400(上記非特許文献1)を基に定めた。その値を表5に示す。表5に示しているように、クロック周波数は5%きざみで全20段階の中から選択できるとした。また、PSUでは電源電圧を変化させないため、常に電源電圧は1.65Vとし、先に示したように、選択した統合度に対応してクロック周波数は25%、50%、100%の3段階から選択されるとした。また、最大クロック周波数は1GHzとした。
【表５】
2008192124.tif 000012
【０１０７】
評価において、TPtargetは、PSUによってステージを統合せず(統合度1、クロック周波数100%)、各ベンチマークを最初から最後まで実行したときの、実行開始から終了までの平均スループットを100%とした割合で表す。各ベンチマークのTPtarget = 100%の値を表6に示す。
【０１０８】
【表６】
2008192124.tif 000013
【０１０９】
また、今回の評価では、統合度切替えによるオーバヘッドは含めていない。統合度切替えに必要なサイクル数は、プログラムを実行しているサイクル数に比べて十分短く、また、アルゴリズムを実行する頻度も十分に低いからである。
【０１１０】
PI制御を用いたPSUによるスループット制御機構の消費電力と、DVSの消費電力を比較する。ここで、DVSの消費電力の算出方法を述べる。DVSはPSUとは異なり、クロック周波数の選択が実行中のIPCに影響を与えないため、DVSではf%のクロック周波数を選択した場合、単純にスループットがf%に低下する。したがって、DVSは、プログラムの実行開始から終了までクロック周波数TPtarget%で実行するとして、表5から電源電圧の値を決定し、それらの値を式(4)に代入して得られる値を消費電力の値とする。
【０１１１】
図12に評価結果を示す。グラフの横軸はTPtargetで、縦軸は消費電力のベンチマーク平均である。この消費電力の値は、DVS、PSUを用いない場合の消費電力で正規化した値である。なお、フェーズの時間は1msとした。TPtargetが40%以上では、PSUの消費電力の方が小さくなった。PSUの消費電力と、DVSの消費電力の比較を行ったところ、提案したPI制御を用いたPSUによるスループット制御機構の消費電力はDVSの消費電力よりも最大で40.0%(TPtarget = 60%)、消費電力が削減できていることがわかった。
【０１１２】
TPtargetが低くなると、DVSでは、TPtargetの低下にともなって消費電力が減少しているのに対し、PSUのTPtarget = 40%以下では、TPtargetを低下させても消費電力が減少していない。その理由を述べる。DVSは20段階のクロック周波数の切り替えが可能であるが、PSUは3段階のみ切り替え可能であるとしているため、TPtargetが低くなった場合、プログラムの実行開始から終了まで統合度4を選択し続けても、TPtargetまでスループットが下がらない。したがって、消費電力も減少せず、TPtarget = 40%付近で飽和した。しかしながら、統合度8などさらに高い統合度を仮定する、または、統合度4のままクロック周波数のみを下げることによって、TPtargetが低い場合でもPSUで消費電力が削減可能になる。
【０１１３】
PI制御を用いたPSUのスループットを、図13に示す。グラフの横軸はTPtargetで、 縦軸はTPtargetで正規化したスループットのベンチマーク平均である。なお、DVSは先に述べたような方法で消費電力を求めているため、スループットは常にTPtargetに完全に一致する。
【０１１４】
図13を見ると、TPtargetが低い部分のPSUは、大きくTPtargetから外れている。これについては、PSUでは、TPtargetが低い場合、統合度4を選択し続けても、スループットをTPtargetまで下げられなくなることを、すでに述べた。これに対して、TPtarget = 60%以上では、スループットとTPtargetの差は0.2%未満に収まった。また、個々のベンチマークごとに見ても、スループットが最もTPtargetから外れたベンチマークでもその差は約1%であり、問題のない程度である。
【実施例７】
【０１１５】
PI制御はスループットをTPtargetに近づけることのみを目標としており、消費電力の削減を考慮していないため、最適なアルゴリズムではない。そこで、本実施例では、以下のように制御した。なお、以下の省電力効果の説明は、上記実施例3、4、5における段数切換時のクラスの変更を制限した場合における省電力効果にも当てはまる。
【０１１６】
各統合度で達成できるスループットとその場合の消費電力の関係を以下のようにして調べた。スループット TP(n)は、まず、各統合度のIPCを測定により求め、そのIPCのベンチマーク平均の値とクロック周波数 f(n)の値から式(1)で求めた。対応する消費電力は、式(4)、(5)で求めた値とした。求めた各統合度のスループットと消費電力の関係をグラフにしたものを、図14に示す。横軸はスループット、縦軸は統合度1の消費電力で正規化した消費電力である。実線は統合度1、2、4を結んだもの、点線は統合度1、4のみを結んだものである。このグラフの数値は、プログラムの実行開始から終了までのIPCの、さらにベンチマーク平均をとったものであるから、厳密には実際のスループットと消費電力の値の関係がこのグラフと一致するとは限らないが、説明を簡単にするため、ここでは、完全に一致すると仮定する。
【０１１７】
ここで、通常どおりTPtargetを与えて統合度を変更しながら実行したときの、平均スループットと平均消費電力の関係を図14のグラフ上にプロットしたとき、その点P(TP、power)と呼ぶことにする。P(TP、power)の位置は各統合度を選択した割合によって決まり、グラフの三角形の辺または内側になる。例えば統合度1、2のみを選択すれば、統合度1、2の2点を結んだ線分上にP(TP、power)が位置することになる。その状態からスループットを一定に保ったまま徐々に統合度4の割合を増やせば、P(TP、power)は統合度1、2の2点を結んだ線分上から離れ、徐々に統合度1、4の2点を結んだ線分上の点に近付く。
【０１１８】
グラフからわかるように、統合度1、4を結ぶ線分は、統合度1、2、4を結ぶ線分を常に上回っている。これは、あるTPtargetを達成する場合、統合度1、4のみを選択し達成するよりも、そのTPtargetが統合度1、2のスループットの間にある場合は統合度1、2のみを、そのTPtargetが統合度2、4のスループットの間にある場合は統合度2、4のみ選択して達成した方が、消費電力が小さくなることを示している。ここで、統合度2が統合度1、4を結ぶ線分の下方に位置するというこのグラフの性質は、シミュレーションの仮定には依存しない。その理由を述べる。
【０１１９】
まず、プロセッサのパイプラインステージ数をSとする。統合度1から2に変更したとき、パイプラインステージ数はSからS/2となりS/2ステージ減少するが、統合度2から4に変更したときは、パイプラインステージ数はS/2からS/4となりS/4ステージしか減少しない。したがって、ステージ統合による消費電力削減の効果は、統合度1から2より、統合度2から4の場合の方が小さくなり、その結果、グラフにおいて、統合度1、2を結ぶ線分より統合度2、4を結ぶ線分の傾きの方が小さくなる。
【０１２０】
以上のPSUの特徴より、統合度1、4のみが多く選択されないようにすることで、より多くの消費電力が削減できることがわかる。そこで、スループットがTPtargetから大きく外れない程度に統合度2をできるだけ多く選択するよう、PI制御に改良を加えた。
【０１２１】
なお、この改良において、実施例3では、クラスの急変更を防止し、実施例4では、目標命令実行速度を間に挟む2つの命令実行速度の2つのクラスに段数変更を制限し、実施例5では、目標命令実行速度を間に挟む2つの命令実行速度の2つのクラスにおいて、上のクラスで制御している場合に、次の制御期間において、1クラス下の段数で制御される確率を増大するように制御している。
【０１２２】
以下、改良の詳細について説明する。現在、第iフェーズの実行が終了したとすると、そこで式(6)の計算を行う。ここで、TPavg(i)は第1フェーズから第iフェーズの平均スループット、a、bは、制御における定数である。また、Ucurrent(i)は第iフェーズの統合度に対応した値で、式(7)のように決める。式(7)によって求めたUnextから、表7にしたがって、次のフェーズの統合度を決定する。つまり、式(6)の第1項目がスループットをTPtargetに近づけるための項であり、第2項目が統合度2をできるだけ多く選択するための項となる。
【０１２３】
【数６】
2008192124.tif 000014
【数７】
2008192124.tif 000015
【表７】
2008192124.tif 000016
【０１２４】
以下に、改良した制御アルゴリズムを用いたPSUによるスループット制御機構の評価結果を示す。図15、16に様々なTPtargetにおける、改良した制御機構の消費電力、スループットを示す。図16の横軸はTPtarget、縦軸は消費電力のベンチマーク平均である。図16の横軸はTPtarget、縦軸はTPtargetで正規化したスループットのベンチマーク平均である。グラフ中の、DVSがDVSによるスループット制御機構、PSU PIが実施例6のPIを用いたPSUによるスループット制御機構、UNI feedbackが、実施例6を改良した統合度をフィードバックする制御機構を有する実施例7のもの、PSU idealがPSUの消費電力の削減限界である。このPSU idealの値は、各ベンチマークについて、あらかじめ実行開始から終了までのIPCを測定しておき、TPtargetを満たす最も電力効率の高い統合度の選択方法を算出したものである。また、最大クロック周波数は1GHzとした。加えて、UNI feedbackの式(6)におけるパラメータの値は、a = 100、 b = 1とした。
【０１２５】
図15を見ると、いずれのTPtargetにおいても、UNI feedbackの消費電力が、PSU PIの消費電力とほぼ同等、または下回った。TPtarget = 80%のとき、UNI feedbackの消費電力は、PSU PIに対して、ベンチマーク平均で10.0%、最大で28.8%(compress95)の消費電力が削減できた。このとき、DVSに対するPSUの消費電力削減余地の88.9%の消費電力を削減できた。さらに、DVSの消費電力と比較すると、UNI feedbackの消費電力は、TPtarget = 60%のとき、ベンチマーク平均で39.5%、最大で55.5%(go)の消費電力が削減できた。
【０１２６】
また、図16を見ると、統合度をフィードバックする制御機構のスループットは、PI制御を用いた制御機構のスループットに比べてTPtargetからの外れ方が若干大きい。しかしながら、TPtarget = 60%以上では、スループットのベンチマーク平均とTPtargetの差は2%未満に収まっており、それほど重大な外れ方ではないと考える。
【０１２７】
以上に示すように、PSU PIを改良したUNI feedbackは、それほどスループットをTPtargetから外すことなく、PSUの消費電力削減限界付近まで消費電力を抑えることができた。
【０１２８】
変形例として、上記の全ての実施例において、段数が小さいクラスや、最下クラスよりも、さらに、節電を図る場合には、DVSを併用しても良い。
【０１２９】
上記の全実施例の説明では、段数制御装置を主としてMPU50により実現しているが、これを論理回路で構成しても良い。この論理回路の場合も、100ms毎の制御期間毎に動作させ、制御期間以外は、スリープモードとすることで、段数制御装置による消費電力の増加を抑制することができる。
また、段数制御をOSで行うようにしても良い。100ms毎のタイマ割込みで、段数を切り換えるか否かの判定を行う監視プログラムを動作させる。段数を切り換える必要があると判定された場合にのみ、命令語のフェッチを停止して、全てのパイプラインレジスタをデータ信号が通過するまで、段数分のクロックを入力させる。その後、上記したパイプラインの段数切換処理と、クロック周波数の切換処理を実行し、フェッチを再開させ、クロックをパイラプラインレジスタに供給する。このようにソフトウエアにより処理することも可能である。
【実施例８】
【０１３０】
段数制御装置を論理回路で実現する実施例について説明する。本実施例の論理回路は、発行命令数カウント部６４、スループット計算部６５、パイプライン段数計算部６６、パイプライン段数切換部６７を有している。論理回路のうち発行命令数カウント部６４は、常時、動作するが、100ms毎の段数制御を行う制御期間時は停止する。スループット計算部６５、パイプライン段数計算部６６、パイプライン段数切換部６７は、100ms毎の段数制御を行う制御期間のみ動作し、制御期間以外は、スリープモードで動作するように給電される。
図１７は、段数制御装置で論理回路を構成した場合の回路のブロック図である。本実施例では、説明を簡単にするために、フェッチユニット６０、デコードユニット６１、実行ユニット６２、ライトバックユニット６３の４段のパイプラインを想定した。しかし、段数は、３０段程度でも良く、任意である。デコードユニット６１から実行ユニットへ発行する命令の数を発行命令数カウント部６４（カウンタ）で数える。この場合計算機内に留まってまだ完了していない命令も数えることになるが、実際の応用では命令単位での正確性を要求するものは少ないので実用上問題ない。
リオーダーバッファがある計算機ならばリオーダーバッファからリタイアする命令数を数えてもよい。この方法は上の場合より正確に完了した命令を数えることができる。第nフェーズのIPCであるIPC(n)を次式により計算する。
【数８】
2008192124.tif 000017
フェーズの時間を調節できる場合は1フェーズ内のサイクル数を2nにすればn回シフトで除算ができて回路が簡単になる。
【０１３１】
次に、第nフェーズのスループットTP(n)をスループット計算部６５により、上記数2式により計算する。
【０１３２】
次に、スループット計算部６５により、第0フェーズから第nフェースまでの平均TPavg(n)を上記数3式により計算する。
但し、y=TPavg(n-1)×(n-1)の値は第n-1フェーズで計算しているので、その値をレジスタに残しておき、次のフェーズの第nフェーズでは[y+ TP(n)]÷nを計算するようにしても良い。
【０１３３】
次に、パイプライン段数決定部６６で、次のフェーズのパイプライン統合度Unextが上記数6式により決定する。そして、Unextにより、表8に基づいて、次のフェーズの統合度（パイプライン段数）を決定する。数6式は、TPtarget-TPavg(i)の値が大きい場合には第1項が支配的で、この値が小さくなると第2項が支配的になるように定数a、bを決める。
【０１３４】
【表８】
2008192124.tif 000018
【実施例９】
【０１３５】
本実施例は、図１８に示すように、クロック発生器５２の出力するクロックの周波数と、給電電圧との関係が、ほぼ直線的に変化するように、給電電圧を変化させる電源電圧制御器５６を設けている。この電源電圧制御器５６は図１８に図示されている各機器ＭＰＵ５０、カウンタ４１、目標値設定レジスタ５１、ＲＯＭ５４、ＲＡＭ５５、Ｉ／Ｏ５３の他、主ＣＰＵ、その他の機器５７への電力を供給している。この実施例は、上記した実施例１〜８のそれぞれに対して、この電源電圧制御器５６を設けることができる。この電源電圧制御器５６は、表９に示すように、各クラスにおいて、周波数が低くなれば、給電電圧も低くなるように給電電圧を制御する。各クラスkにおける最高周波数ｆｍｋでの給電電圧は、最大電圧Ｖｍ(=1.65)に等しい。これは、次の理由による。段数を統合した場合には、１段当たりの論理回路の数が、通常は、２倍となるため、隣接するクラス間では、同一電圧での動作可能周波数は、１／２に低下するためである。
【表９】
2008192124.tif 000019
【０１３６】
クロック周波数に応じて給電電圧を変化させるＤＶＳ制御方式における消費電力は、(４)式で表される。また、本発明におけるＰＳＵ制御方式における消費電力は(５)式で表される。また、パイプライン段数を統合した場合には、１クロック周期における命令実行数（ＩＰＣ）は、統合する前に比べて、約１．４６倍程度に、増加するために、クロック周波数が１／２に低下しても、現命令実行速度は、統合前の現命令実行速度に対して、０．７３倍程度に低下するだけである。ＤＶＳ制御の場合には、１段の統合により現命令実行速度は、１／２に低下する。したがって、ＰＳＵ制御における目標命令実行速度とＤＶＳ制御における目標命令実行速度を同一にするならば、結果として、ＰＳＵ制御の方がＤＶＳ制御よりも電力を節減することができる。段数の統合によりＩＰＣの増加を考慮して、各クラスでのクロック周波数は、最大周波数の１／２，１／４，１／８とし、給電電圧を最大電圧Ｖｍとした場合のＤＶＳとＰＳＵとの制御方式における現実行命令速度と消費電力との関係は、図１９に示す特性となる。ただし、図１９の特性図は、給電電圧を最大電圧Ｖｍ、クロック周波数を最大周波数ｆｍとした場合の現実行命令速度を１に、その時の消費電力を１に正規化して、表されている。
【０１３７】
上記の全実施例において、段数制御された場合に、各クラスでの周波数を最大クロック周波数ｆｍの１／２，１／４，１／８とする。段数を変更した場合には、その後、その周波数で動作可能な給電電圧まで、給電電圧を徐々に低下させる。また、段数を変更する場合には、変更後のクラスのクロック周波数での動作が可能となるまで、給電電圧を漸増させた後に、段数を切り換える。このようにすることで、給電電圧を変更する制御を行うに際して、ＣＰＵを停止させることなく、段数を変更することができる。
【０１３８】
また、図１９に示すように、現命令実行速度を同一とする場合に、ＰＳＵ制御の消費電力は、ＤＶＳ制御による消費電力よりも小さいことが理解される。そこで、上記の全実施例において、次のように制御することも可能である。段数を１段統合して、パイプラインをクラス２とするした後、クロック周波数はｆｍｋを初期値、給電電圧は最大値Ｖｍを初期値とする。そして、段数の変更の後、上記した目標命令実行速度と現命令実行速度との偏差に応じて決定される制御値に応じて、クロック周波数と、給電電圧を可変制御する。すなわち、図１９のＰＳＵの特性曲線上において、クラス２とクラス３との間の点Ｔに、目標命令実行速度が存在するとすると、上記の全実施例では、クラス２とクラス３との制御が、制御値に応じて、交互に実施される。本実施例では、この場合に、点Ｔの目標命令実行速度を実現するために、クラス２の段数を維持して、クロック周波数と給電電圧とを、制御値に応じて、変化させるものである。もちろん、この場合に、現命令実行速度が目標命令実行速度よりも大きく、前記の制御値が負となる場合には、クラス３の統合が実施される。この場合に、クラス３に関しても、クロック周波数と給電電圧を制御値に応じて連続的に制御するＤＶＳ制御を実施しても良い。また、目標命令実行速度が、クラス３とクラス４との間に存在する場合にも、クラス３に関して、クロック周波数と給電電圧を制御値に応じて連続的に制御するＤＶＳ制御が実施される。また、クラス３とクラス４との間に目標命令実行速度が存在する場合に、クラス４に関して、ＤＶＳ制御を実施しても良い。
【０１３９】
このようにすることで、給電電圧を低減することができ、より、消費電力を低下させることができる。
【０１４０】
このときのＤＶＳ制御において、クロック周波数だけを変更して、電圧は、その周波数で動作可能な最低電圧に向けて、徐々に低下させるようにしても良い。
【産業上の利用可能性】
【０１４１】
本発明は、最大限の節電効果の得られる演算装置、マイクロプロセッサに用いることができる。
【図面の簡単な説明】
【０１４２】
【図１】本発明の実施例の動作を説明するためのパイプラインの一部を示した回路図。
【図２】本発明の実施例にかかるパイプラインの制御装置の回路図。
【図３】本発明の実施例にかかる段数制御装置の構成図。
【図４】本発明の実施例１の段数制御装置の処理手順を示したフローチャート。
【図５】本発明の実施例３の段数制御装置の処理手順を示したフローチャート。
【図６】本発明の実施例３の段数制御装置による制御値と段数変更の様子を示したタイミングチャート。
【図７】本発明の実施例４の段数制御装置の処理手順を示したフローチャート。
【図８】本発明の実施例４の段数制御装置による制御値と段数変更の様子を示したタイミングチャート。
【図９】本発明の実施例５の段数制御装置の処理手順を示したフローチャート。処理手順を示したフローチャート。
【図１０】本発明の実施例６の段数制御装置の処理手順を示したフローチャート。
【図１１】本発明の実施例６にかかる仮定したPSUのパイプラインを示した構成図。
【図１２】本発明の実施例６の段数制御による消費電力をDVSと比較して示した特性図。
【図１３】本発明の実施例６の段数制御によるスループットをDVSと比較して示した特性図。
【図１４】本発明の実施例３、４、５、７の段数制御により、節電効果が増大することを説明するための特性図。
【図１５】本発明の実施例７の段数制御による消費電力を実施例６の段数制御による消費電力と比較して示した特性図。
【図１６】本発明の実施例７の段数制御によるスループットを実施例６の段数制御による消費電力と比較して示した特性図。
【図１７】本発明の段数制御装置を論理回路で実現した実施例８の構成を示すブロック図。
【図１８】本発明の実施例９に係る段数制御装置の構成図。
【図１９】実施例９の段数制御装置による制御方式を示するための特性図。
【符号の説明】
【０１４３】
101-117…パイプラインレジスタ
201-217…クロックドライバ
302-316…アンドゲート
30…クロック信号線
31…統合信号線
40…プログラムカウンタ
41…カウンタ
51…目標設定レジスタ
【図１】
2008192124.tif 000020
【図２】
2008192124.tif 000021
【図３】
2008192124.tif 000022
【図４】
2008192124.tif 000023
【図５】
2008192124.tif 000024
【図６】
2008192124.tif 000025
【図７】
2008192124.tif 000026
【図８】
2008192124.tif 000027
【図９】
2008192124.tif 000028
【図１０】
2008192124.tif 000029
【図１１】
2008192124.tif 000030
【図１２】
2008192124.tif 000031
【図１３】
2008192124.tif 000032
【図１４】
2008192124.tif 000033
【図１５】
2008192124.tif 000034
【図１６】
2008192124.tif 000035
【図１７】
2008192124.tif 000036
【図１８】
2008192124.tif 000037
【図１９】
2008192124.tif 000038