本発明は、パイプライン処理機能を有した節電を図った演算処理装置に関する。特に、マイクロプロセッサの節電を図った装置に関する。
近年のモバイルプロセッサでは、低消費電力と高性能の両方が要求されている。この要求を満たすために、現在DVS(dynamic voltage scaling)と呼ばれる方式が導入されている。DVSは、例えば、下記非特許文献1、2、3において知られている。DVSはバッテリ持続時間要求やプロセッサ負荷に応じて、動的にクロック周波数と電源電圧を変更するものである。バッテリ持続時間要求が強いか、与えられた負荷が低ければ、クロック周波数を低下させ、消費電力を削減する。さらに、延びたクロックサイクル時間に信号の遅延を合わせ、電源電圧を低下させる。これにより、プログラム実行に要する消費電力を削減する。このように、DVSは消費電力を削減する有効な手法であるが、サブスレッショルドリーク電流の増加によって閾値電圧が下げにくくなる点や、過渡故障の増加という面から、将来のプロセス技術ではその有効性は減少する。
これに対して、下記非特許文献4、5、6に開示されているように、パイプラインステージ統合(PSU: Pipeline Stage Unification)と呼ばれる手法が提案されている。PSUは単純だが効果的に消費電力を削減することができる。PSUではDVSと同様に、プロセッサの消費電力を削減するためにクロック周波数を低下させるが、DVSと異なり、電源電圧を低下させるのではなく、パイプラインレジスタをバイパスさせることによって複数のパイプラインステージを統合する。PSUによって消費電力を削減できる理由は次の2点である。
まず第1に、バイパスされるパイプラインレジスタへのクロックの供給を止めることにより、クロックドライバの総負荷を減少させることができる。さらに、クロックの供給を止めたパイプラインレジスタは動作しないため、D-FF動作の消費電力分が削減できる。第2に、パイプラインステージの統合によりプロセッサのパイプラインが短くなる。これにより、同じクロック周波数で動作するDVSを用いたプロセッサと比較して、プログラムの実行に必要なクロックサイクル数は同等かそれ以下となり、電力を消費する時間を短くすることができる。たとえば、フロントエンドパイプライン部の命令フェッチ部とデコード部のパイプライン段数を短縮させることにより、分岐予測ミスペナルティは削減され、実行サイクル数は削減される。以上の効果が期待されている。
一方、下記特許文献1においては、クロック周波数に応じて、パイプラインの段数を変更する装置が開示されている。すなわち、高速処理が必要な場合には、各ステージでの処理時間の差が小さくなる高段数の高クロック周波数で処理し、高速処理が必要でない場合には、分岐インタロックによるペナルティの少ない低段数の低クロック周波数で動作させて、消費電力も減少させる装置が開示されている。
また、下記特許文献2においては、複数のモジュールを有する演算装置において、命令語毎に、使用しないモジュールに対してクロックの供給を停止して、電力を消費させる装置が開示されている。
また、下記特許文献3においては、プロセッサにおける消費電力を見積もる方法が開示されており、下記特許文献4においては、パーフォーマンス指標を、与えられた消費電力指標範囲において増大させるように、CPUのクロック周波数を増減する技術が開示されている。
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.
特開平9−319578号
特開2005−234968
特開平11−161692号
特開平11−353052号
しかしながら、パイプライン制御を行う演算処理装置において、仕事によって変化する目的とする性能を満たしつつ、消費電力の削減を図った装置は知られていない。近年のマイクロプロセッサなどの演算処理装置は、益々、高速化されてきているが、その分、消費電力も増大してきている。このため、所望の実行速度を達成しつつ、消費電力の低減を図った演算処理装置の開発が望まれている。
本発明は、上記の課題を解決するために成されたものであり、各仕事に関して要求される演算終了時刻を満たしつつ、可能な限り消費電力を削減することを目的とする。
演算速度は、何時の場合においても、最大値でなければならないということはなく、仕事の種類によっては、低速であっても良い。要するに、何時までにある結果を得ることが必要かが決めれるのであり、その条件を満たす最低速度で実行すれば十分である。
本発明は、このことに注目して、平均的な実際の単位時間当たりの命令実行数(スループット)が、要求された単位時間当たりの命令実行数を達成できる範囲で、可能な限り節電を図るようにしたものである。
上記課題を解決するための第1の発明は、パイプラインレジスタにより論理回路が縦続接続されて、パイプライン処理を行う演算処理装置において、単位時間当たりの命令実行数を測定する命令実行数測定手段と、目標となる単位時間当たりの目標命令実行数を設定する目標命令実行数設定手段と、目標命令実行数設定手段により設定された目標命令実行数の命令実行数測定手段により測定された命令実行数に対する偏差の比例・積分による制御値を演算する制御値演算手段と、制御値演算手段により演算された制御値に応じて、選択されたパイプラインレジスタへのクロックの供給を停止し、信号は、そのパイプラインレジスタをスルーさせるように制御することで、パイプラインを部分的に連続させてパイプラインの段数を減少させる統合処理をし、逆に、選択されたパイプラインレジスタへのクロックの供給を再開し、信号をクロックに同期して、そのパイプラインレジスタにラッチさせるようにパイプライン制御することで、連続したパイプラインを部分的に分離させてパイプラインの段数を増加させる統合解除処理をして、パイプラインの段数を変更する段数変更手段と、段数変更手段により変更される段数に応じて、パイプラインレジスタに供給するクロック周波数を変化させるクロック周波数変更手段とを有することを特徴とする演算処理装置である。
ここで、単位時間当たりの命令実行数を測定する命令実行数測定手段は、例えば、所定時間当たりのプログラムカウンタの更新回数や、プログラムカウンタへのデータのロード回数や、フェッチサイクル数を実測する回路で構成される。この更新回数から、単位時間当たりの命令実行数を測定することができる。また、プログラムカウンタが1だけ更新されるのにかかったクロックの数の平均を求めることにより、1命令実行に要する平均クロック数を測定することができ、クロック周期が既知であるので、1命令実行に要する平均時間が測定できる。これにより、単位時間当たりの命令実行数を求めることができる。また、プログラムカウンタの更新回数を測定する他に、他の1命令の実行終了が判別できる信号をカウントするようにしても良い。
また、単位時間当たりの目標命令実行数は、処理すべき仕事にかけることのできる所要時間や演算の種類などから、設定される。本発明では、実測される単位時間当たりの命令実行数が、設定された単位時間当たりの目標命令実行数に追従するようにパイプラインの段数が制御されることが特徴である。したがって、単位時間当たりの命令実行数は、これに関連した値であれば良い。1命令の平均実行時間やサイクル数は、単位時間当たりの命令実行数と等価な値であるから、このような1命令の平均実行時間や平均サイクル数を目標平均実行時間や目標サイクル数に制御することも、本件発明の範囲である。
比例・積分による制御値は、良く知られているように、過去の一定期間の偏差の累積値と、現制御期間における偏差を、それぞれの係数を掛け算して加算した値である。積分項、比例項の係数(ゲイン)を変化させることで、追従制御の特性を変化させることができる。なお、パイプラインの段数を変化させるための制御周期は任意であるが、例えば、100msの制御期間の間は、少なくとも、段数を変化させないようにすることができる。また、命令実行数を測定する時間は、この制御期間に等しくとも、これよりも短い時間の計測値であっても良い。
また、本件第1の発明は、比例項の係数を0とすること、すなわち、制御値を積分項だけとする場合も含む。
パイプラインの各ステージは、一般的には、処理時間が等しくなるように分割されているので、この場合には、段数を減少させる場合には、1/2、1/4、1/8と、連続する2つの段間を統合することで、段数を減少させることになる。しかしながら、各ステージで、処理時間が異なる場合には、統合後の各ステージの処理時間が等しくなるように、任意に、隣接する段間を統合することで、段数を減少させるようにしても良い。
段数の減少は、パイプラインレジスタへのクロックの供給を停止する信号線と、この停止信号とクロックを入力する論理回路とを設けて、停止信号が入力された時に、クロックがそのパイプラインレジスタへ出力されることを禁止するようにすれば良い。また、クロックが停止された場合には、パイプラインレジスタは、入力信号をラッチすることなく、スルーさせるように構成される。
制御値に応じて、段数を変化させる制御は、隣接する制御期間においては、1段だけ、減少又は増加するようにし、2段以上に渡って、段数が急変することを防止するようにしても良いし、制御値の大きさに応じて、2段以上の変化を許可した状態で、段数を変更するようにしても良い。通常は、段数の急変を防止して、各制御期間において、1段を越えて、段数を変化させないようにした方が、省電力効果が高い。
また、クロック周波数は、パイプラインの段数が小さい程、その周波数を小さく、すなわち、クロック周期を長くし、パイプラインの段数が大きい程、その周波数を大きく、すなわち、クロック周期を短くするように制御される(請求項2)。各段の論理回路の段数が多くなる分だけ、処理時間がかかるので、クロックの周期を長くする必要がある。
また、制御値には、比例項、積分項の他に、偏差の微分項を加えても良い(請求項3)。偏差は、単位時間当たりの目標命令実行数から実測される命令実行数を減算した値であるが、段数が変化しない場合には、偏差は仕事により連続的に変化し得る。この変化傾向を段数変化に反映させることで、より目標命令実行数への追従性を向上させることができる。
第4の発明は、段数変更手段は、制御値演算手段により求められた制御値が所定値よりも小さい場合には、段数を減少させる統合処理を実行し、制御値が所定値よりも大きい場合には、段数を増加させる統合解除処理を行う手段であることを特徴とする請求項1乃至請求項3の何れか1項に記載の演算処理装置である。
一般的には、制御値が0の場合には、現実の単位時間当たりの命令実行数(以下、「現命令実行速度」)の平均値(以下、「現平均命令実行速度」という)が、単位時間当たりの目標命令実行数(以下、「目標命令実行速度」)に等しく制御されていることを意味する。制御値が正の場合には、現平均命令実行速度が、目標命令実行速度より小さいことを意味し、制御値が負の場合には、現平均命令実行速度が、目標命令実行速度より大きいことを意味する。
したがって、制御値が正となれば、現平均実行命令速度を増大させるように、段数を増加させ、制御値が負となれば、現実行命令実行速度を減少させるように、段数を減少させるように制御する。段数をクラス分けした場合に、1クラス上、1クラス下の段数となるように、段数の変化を急変させないようにすることや、2クラス上、2クラス下のように、段数を急変させる場合も、本件発明に含まれる。このようにすることで、現平均命令実行速度を目標命令実行速度に追従させることができる。一般的には、上記の所定値は0であるが、これに限定されない。
第5の発明は、段数変更手段は、制御値が第1しきい値以下の場合に、段数が1クラス下の段数となる前記統合処理を実行し、制御値が、第1しきい値よりも大きい第2しきい値以上の場合に、段数が1クラス上の段数となる統合解除処理を実行する手段であることを特徴とする請求項1乃至請求項4の何れか1項に記載の演算処理装置である。
通常は、第1しきい値は負値であり、第2しきい値は正値である。このようにすれば、制御値が、第1しきい値と第2しきい値との間に存在する場合には、段数は変化しない。制御値が第1しきい値以下の場合には、現平均命令実行速度が目標命令実行速度より第1しきい値の絶対値以上に大きいので、1クラス下の段数となるように統合処理が実施される。また、制御値が第2しきい値以上の場合には、現平均命令実行速度が目標命令実行速度より第2しきい値以上に小さいので、1クラス上の多い段数となるように統合解除処理が実行される。このようにすることで、現平均命令実行速度を目標命令実行速度に正確に追従させることができる。
また、第6の発明は、段数変更手段は、制御値の積分項と比例項とが共に負の場合に、段数が1クラス下の段数となる統合処理を実行し、制御値の積分項と比例項とが共に正の場合に、段数が1クラス上の段数となる統合解除処理を実行し、制御値の積分項と比例項の積が負又は零の場合には、段数を変更しない手段であることを特徴とする請求項1又は請求項2に記載の演算処理装置である。
この制御は、制御値に応じて段数を変化させる制御を、制御値の積分項と比例項とに分けて制御するようにしたものである。
第7の発明は、段数変更手段は、統合解除処理を実行した後、次の連続した制御期間において統合解除処理が実行される条件を満たす場合であっても、制御値又は測定された単位時間当たりの命令実行数の平均値の目標命令実行数に対する偏差が増加傾向にある場合には、統合解除処理を実行せずに段数を維持し、又は、統合処理を実行した後、次の連続した制御期間において統合処理が実行される条件を満たす場合であっても、制御値又は単位時間当たりの測定された命令実行数の平均値の目標命令実行数に対する偏差が減少傾向にある場合には、統合処理を実行せずに段数を維持することを特徴とする請求項1乃至請求項6の何れか1項に記載の演算処理装置である。
この発明は、連続する制御期間において、段数のクラスが連続して上昇し、又は、連続して下降しないようにしたものである。連続させてクラスを上昇させたり、連続させてクラスを下降させたりすると、段数の変化幅が大きくなり、節電効果が高くない。したがって、本件発明では、段数のクラスの変化を大きくしないようにしている。すなわち、1クラス上の段数に、統合解除処理をすることで、現平均命令実行速度が大きくなるはずであるので、制御値や現平均命令実行速度の目標命令実行速度に対する偏差が増加傾向にある場合には、次の制御期間においてもなお、1クラス上の段数に統合解除処理をする条件が満たされても、そのように段数の増加処理を実行しない。これにより段数の急上昇を防止している。
逆に、段数が1クラス下の段数となるように、統合処理をすることで、現平均命令実行速度が小さくなるはずであるので、制御値や現平均命令実行速度の目標命令実行速度に対する偏差が減少傾向にある場合には、次の制御期間においてもなお、1クラス下の段数に統合処理をする条件が満たされても、そのように段数の減少処理を実行しない。これにより段数の急降下を防止している。これにより、さらに、効果的な省電力が実現できる。
第8の発明は、段数変更手段は、設定された目標命令実行数に対して、制御値又は偏差(目標命令実行速度−現命令実行速度)が負となる第1クラスの段数と、この段数に隣接した段数であって制御値又は偏差が正となる第2クラスの段数とに、切換段数を拘束することを特徴とする請求項1乃至請求項6の何れか1項に記載の演算処理装置である。
目標命令実行速度以上の命令実行速度を有するクラスの段数で命令を実行すれば、その制御期間における偏差は負となり、その段数で、しばらく実行し続けた場合には、制御値も負となる。逆に、目標命令実行速度以下の命令実行速度を有するクラスの段数で命令を実行すれば、偏差は正となり、その段数で、しばらく実行し続けた場合には、制御値も正となる。この条件判定により、現実の仕事を実行している期間において、目標命令実行速度を間に挟む現命令実行速度が得られる段数のクラスが分かる。
このように各クラスをリアルタイムで得る必要があるのは、仕事により命令語の種類も異なるので各クラスでの、現命令実行速度が変動し、また、要求される性能、すわわち、目標命令実行速度が変化するからである。このために、目標命令実行速度が、現実に、どのクラスとどのクラスとの間に存在するかを判定する必要がある。なお、制御値において、積分項のみとした場合には、(目標命令実行速度−現平均命令実行速度)の正負によって、目標命令実行速度を間に挟む2つの現平均命令実行速度の得られる隣接した2つのクラスが判別されることになる。
本発明は、このようにリアルタイムに判別された隣接した2つのクラスに段数を拘束して、段数の変化を制御することを特徴とする。段数のクラスを拘束するということは、制御値に応じた制御において、現命令実行速度を上昇させる必要があると、連続した制御期間において判定された場合であっても、第1クラスの段数以上には、段数を上昇させないこと、現命令実行速度を低下させる必要があると、連続した制御期間において判定された場合であっても、第2クラスの段数以下には、段数を減少させないことを意味する。このように制御しても、第1クラスと第2クラスとをリアルタイムで検出している限り、そのクラスの命令実行速度の間に目標命令実行速度が存在する限り、いずれ制御値は0付近に制御されることになる。これにより、より効果的な省電力を達成することかできる。また、目標命令実行速度が変化すれば、第1クラス、第2クラスもそれに伴って変化させることができるので、そのような場合であっても、目標命令実行速度に現平均命令実行速度を追従させることができる。
第9の発明は、段数変更手段は、設定された目標命令実行数に対して、制御値又は偏差が負となる段数を第1クラスの段数とし、この段数に隣接したクラスの段数であって制御値又は偏差が正となる段数を第2クラスの段数とし、変更前の段数が第1クラスの段数である場合に、第2クラスの段数が選択される確率を増大させるように、変更前の段数に応じて制御値を補正することを特徴とする請求項1乃至請求項6の何れか1項に記載の演算処理装置である。
本発明では、第8の発明と同様に、目標命令実行速度を間に挟む2つの現命令実行速度の得られる隣接した2つのクラスを、リアルタイムで検出した後、ある制御期間における段数が第1クラスの段数であれば、次の制御期間では、1クラス下の段数の少ない第2クラスの段数が選択される確率を高くするように制御する。このように擬似的に、現命令実行速度を現実以上に仮想的に上昇させて制御値を小さくすれば、第1クラスの段数で制御されている場合に、次の制御期間において、さらに、段数の多い上のクラスに変更されることが防止される。すなわち、省電力効果が大きな第2クラスの段数が選択される確率を意図的に高くして、その第2クラスで実行された後に、次には、第1クラスの段数で実行されることになる。したがって、第1クラスの段数よりさらに上のクラスの段数に段数が上昇することが防止される。すなわち、第1クラスの段数と第2クラスの段数とに、拘束されて、命令が実行される確率が上昇する。
また、第10の発明は、可変し得る段数は、最大段数、中間段数、最小段数の3クラスであり、制御値演算手段は、中間段数の選択確率が増大するように、変更前の段数に応じて、制御値を補正することを特徴とする請求項1乃至請求項6の何れか1項に記載の演算処理装置である。
段数が3クラスの場合には、中間段数が選択される確率を意図的に高くすれれば、中間段数に段数が上昇し、続けて、最大段数に段数が上昇することが抑制される。同様に、中間段数に段数が減少し、続けて、最小段数に段数が減少することが抑制される。
また、第11の発明は、段数変更手段により変更された段数の制御において、給電電圧を段数とクロック周波数とに応じて、低減する給電電圧制御手段を有することを特徴とする。
また、請求項12に記載の発明は、給電電圧制御手段は、段数の変更に際して、給電電圧を徐々に低下、又は、徐々に増加させることを特徴とする。
また、第13の発明は、段数変更手段により段数を統合した場合において、制御値に応じて、連続的にクロック周波数と給電電圧とを変化させるDVS制御手段を有することを特徴とする。
第1、第2の発明では、パイプラインの段数が、実際の測定される単位時間当たりの命令実行数の過去の所定期間における平均値(現平均命令実行速度)が、設定された単位時間当たりの目標命令実行数(目標命令実行速度)に追従するように、フィードバック制御される。そして、パイプラインの段数が減少する時、信号をスルーさせるパイプラインレジスタへのクロックの供給が停止され、クロック周波数がパイプライン段数に応じて変化される。この結果として、パイプライン段数が少ない程、消費電力が減少することになる。また、パイプライン段数を統合した場合には、1クロック周期における命令実行数(IPC)は、統合する前に比べて、約1.46倍程度に、増加するために、クロック周波数が1/2に低下しても、現命令実行速度は、統合前の現命令実行速度に対して、0.73倍程度に低下するだけである。DVS制御の場合には、1段の統合により現命令実行速度は、1/2に低下する。したがって、PSU制御における目標命令実行速度とDVS制御における目標命令実行速度を同一にするならば、結果として、PSU制御の方がDVS制御よりも電力を節減することができる(図19参照)。したがって、仕事に応じて要求され、設定された目標とする性能(目標命令実行速度)を満たす範囲内で、電力を最大限節減することが可能となる。
第3の発明では、制御値に偏差の微分項を加えているので、目標命令実行速度に対する追随性が向上する。例えば、微分項が、積分項や比例項と異なる符合を示す場合には、段数が大きく変更することを抑制する作用をするので、より効果的な節電が達成される。
第4の発明では、所定値を、例えば、0とすれば、制御値が負の場合には、現平均命令実行速度が目標命令実行速度よりも大きいことを意味するので、パイプラインの段数を減少させる統合処理を実行し、制御値が正の場合には、現平均命令実行速度が目標命令実行速度よりも小さいことを意味するので、パイプラインの段数を増加させる統合解除処理を実行する。このことにより、現平均命令実行速度は、目標命令実行速度に正確に遅れなく追従することになる。
第5の発明では、制御値の大きさの判定に第1しきい値と、第2しきい値とを設定し、制御値が第1しきい値と第2しきい値との間に存在する場合には、段数を変化させず、第1しきい値以下の場合、又は、第2しきい値以上の場合に、段数を、それぞれ、1クラス下、又は、1クラス上の段数に、減少又は増加させる統合又は統合解除処理を実行している。したがって、段数の頻繁な変更が防止されると共に、1制御期間では1段だけの変更を許可しているので、大きな段数の変更が防止される。このことは、結果的に、段数の大きく異なるクラスが交互に選択されることが防止されるので、節電効果が大きくなる。
第6の発明では、制御値の大きさ判定を積分項と、比例項とに分けて判定している。積分項と比例項が共に負の場合には、過去の平均命令実行速度も現命令実行速度も共に目標命令実行速度よりも大きいことを意味しているので、段数を減少させる統合処理が実行される。逆に、積分項と比例項が共に正の場合には、過去の平均命令実行速度も現命令実行速度も共に目標命令実行速度よりも小さいことを意味しているので、段数を増加させる統合解除処理が実行される。積分項と比例項との積が0又は負の場合には、次の制御期間において、現平均命令実行速度が目標命令実行速度に接近し得ることを意味しているので、段数の変更は実施されない。このようにして、現平均命令実行速度を目標命令実行速度に追従させることができる。
第7の発明では、段数の増加が行われた後の制御期間において、さらに段数を増加する条件が成立しても、制御値又は測定された単位時間当たりの前記命令実行数の平均値の目標命令実行数に対する偏差が増加傾向にある場合には、段数を増加させることなく、現段数を維持する。これは、段数が増加された後の複数の連続する制御期間において、この条件が満たされれば、現段数を維持する。すなわち、いずれ、現平均命令実行速度が目標命令実行速度に達する傾向を有している。よって、段数を直ぐに増加させる必要はない。この処理により、より段数の大きなクラスへの変更を防止することができる。
逆に、段数の減少が行われた後の制御期間において、さらに段数を減少する条件が成立しても、制御値又は測定された単位時間当たりの命令実行数の平均値の目標命令実行数に対する偏差が減少傾向にある場合には、段数を減少させることなく、現段数を維持する。段数が減少された後の複数の連続する制御期間において、この条件が満たされれば、現段数を維持する。すなわち、いずれ、現平均命令実行速度が目標命令実行速度に達する傾向を有している。したがって、直ちに段数を減少させる必要はない。よって、この処理により、さらに、より段数の小さなクラスへ変更されることを防止することができる。
このことにより、連続しないクラス間で、段数が交互に変化することが防止される。省電力効果は段数が小さくなるほど大きいが、省電力効果と段数との変化特性は、線形ではない。省電力効果の段数に対する変化率は、段数が大きくなるほど、大きい。したがって、目標命令実行速度を実現し得る接近した2つのクラスの段数を選択して、その2つのクラスの段数で、交互に段数を変化することが、最も、電力を節減できることになる。本発明は、現平均命令実行速度の目標命令実行速度に対する正確な追従性を確保して、この省電力効果を増大させる確率を高くすることができる。
第8の発明は、第7の発明に比べれば、現平均命令実行速度の目標命令実行速度に対する追従性が遅れる傾向があるが、省電力効果を最大限に増大させることができる。目標命令実行速度を実現し得る接近した2つのクラスが、段数の大きい第1クラスと段数の小さい第2クラスである。各クラスの段数での現命令実行速度は、仕事に依存するので、現実に仕事を実行している時に、第1クラスと第2クラスとを検出する必要がある。これを実現するのに、制御値又は偏差が負となる第1クラス群と、制御値又は偏差が正となる第2クラス群を決定し、2つの群から、最も段数が接近しているクラスを、それぞれ、第1クラス、第2クラスと特定すれば良い。
そして、制御値に応じた段数制御において、この第1クラスの段数と、第2クラスの段数だけで、交互に段数を変化させれば、現平均命令実行速度を目標命令実行速度に追従させることができる。しかも、隣接した2つのクラスの段数を選択していることから、最大の節電効果を得ることができる。なお、目標命令実行速度と各クラスの段数での命令実行速度との関係が変化した場合であっても、本発明によると、現在の目標命令実行速度を間に挟み、最も接近した2つの命令実行速度が得られる2つのクラスが、リアルタイムで選択されるので、常に、最大節電効果を達成した状態で、現平均命令実行速度を目標命令実行速度に追従させることができる。
第9の発明では、第1クラスと第2クラスの検出は第8の発明と同一である。本請求項の発明は、第8の発明のように、第1クラスと第2クラスの段数に、段数を拘束しない。ある制御期間において段数の大きい第1クラスが選択された場合には、次の制御期間において、段数の小さい第2クラスの段数が選択される確率を増大するように制御値が補正される。これにより、第1クラスの段数から、さらに段数の大きいクラスに段数が変化する確率を減少させ、現平均命令実行速度が目標命令実行速度に対して小さい場合に、第1クラスの段数だけで、追従し得るようになる。これにより、段数の隣接クラスを越える変更が防止されるので、節電効果が大きくなる。
第10の発明は、段数を3クラスとしたものであり、常に、中間段数が優先して選択され得るようになる。これにより、目標命令実行速度が最大段数の命令実行速度と中間段数の命令実行速度との間に存在する場合には、最大段数と中間段数との間のみ段数変更が行われる確率を増大させることができる。また、目標命令実行速度が中間段数の命令実行速度と最小段数の命令実行速度との間に存在する場合には、中間段数と最小段数との間のみ段数変更が行われる確率を増大させることができる。これにより、3段階でのパイプラインの段数変更の場合において、節電効果を最大とすることができる。
第11、12の発明では、段数と、クロック周波数とに応じて、給電電圧を制御する電源電圧制御手段を設けたので、さらに、消費電力の削減を図ることができる。
また、第13の発明では、DVS方式と、PSU方式とおいて、段数を統合した場合において、制御値に応じて給電電圧と周波数とを連続的に制御しているので、さらに、消費電力を低減することができる。
以下、本発明を実施の形態に基づいて説明する。本発明は以下の実施形態に限定されるものではない。
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)が第2しきい値Th2以上か否かが判定される。制御値F(n)が第2しきい値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に維持される。以下、同様な制御が繰り返し実行される。
このように、実施例1では、制御期間9,10,11,15において、さらに、段数が1クラス低下されるが、本実施例3では、現状のクラスが維持される。これにより段数の大きな変化が防止されて、節電効果を大きいものとすることができる。
上記では、段数の維持の判定に制御値を用いたが、測定された命令実行数の平均値の目標命令実行数に対する偏差に基づいて段数を維持するか否かの判定を行うようにしても良い。
次に、目標命令実行速度が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番目のフェーズの実行が終了したとすると、以下のアルゴリズムにしたがって、統合度を変更する。
1.測定した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)のように簡略化できる。
2.TP(n)、TPavg(n)、TPtargetから、表1にしたがって統合度を上下させる。表1による統合度の変更方法は、現時点のスループットの値と実行開始から現時点までのスループットの平均値を用いていることから、この変更方法をPI制御(proportional integral control)と呼ぶ。
3.決定した統合度で(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のオプションでコンパイルし作成した。シミュレーション時間が過大にならないようにするために、命令ミックス、関数の出現頻度など、特徴をほぼ維持しつつ、それぞれのベンチマークプログラムへの入力を調整した。
表3に、シミュレーションにおいて仮定したプロセッサの構成を示す。プロセッサは近年のプロセッサと同様に、深いパイプラインを持つと仮定した。メモリアクセス時間は、プロセッサのクロック周波数の低下に比例して遅くなると仮定した。そのため、プロセッサのクロック周波数によらず、メモリアクセスのサイクル数は一定である。
統合度1、統合度2、統合度4の3種類の統合度(クラス)を仮定する。図11 に統合度1、統合度2、統合度4のパイプラインを示す。また、表4に、これらのパイプラインにおける命令の実行レイテンシ、分岐予測ミスペナルティ、キャッシュヒットレイテンシを示す。表の2行目に示すように、1、2、4ステージを統合した場合、それぞれ最大クロック周波数の100%、50%、25%で動作する。
なお、整数/浮動小数点除算と平方根演算については、同一資源を繰り返し使用し、完全なパイプライン化はされておらず、ステージの統合はできないと仮定した。レイテンシはそれぞれ、20、12、24サイクルとした。
DVSの消費電力はアクティビティファクタをa、スイッチするノードの全容量をC、クロック周波数をf、電源電圧をVとすると、式(4)で表される。PSUの消費電力の計算方法は以下の通りである(上記非特許文献5、6)。図1に示したようにパイプラインステージを統合すると、パイプラインレジスタへのクロック分配が抑制され、クロックネットワークの消費電力が減少する。さらに、クロックの供給を止めたパイプラインレジスタは動作しないため、フリップフロップ動作の消費電力分が削減できる。統合度Uにおいて停止するパイプラインレジスタの割合は(U-1)/Uである。mをプロセッサの全消費電力に対するクロックネットワークの消費電力とすると、統合度Uで動作するPSUの消費電力は式(5)で表される。
評価においては、mは32% (= 12% + 20%)と仮定した。この値は、以下の前提に基づいている。
1.プロセッサの総消費電力に対するクロックネットワーク最終段のドライバの消費電力は12% (= 30%×40%)
・プロセッサの総消費電力に対するクロックの消費電力は30%
・クロックネットワークの総消費電力に対するネットワーク最終段のドライバの消費電力を40%
2.パイプラインレジスタの消費電力は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とした。
評価において、TPtargetは、PSUによってステージを統合せず(統合度1、クロック周波数100%)、各ベンチマークを最初から最後まで実行したときの、実行開始から終了までの平均スループットを100%とした割合で表す。各ベンチマークのTPtarget = 100%の値を表6に示す。
また、今回の評価では、統合度切替えによるオーバヘッドは含めていない。統合度切替えに必要なサイクル数は、プログラムを実行しているサイクル数に比べて十分短く、また、アルゴリズムを実行する頻度も十分に低いからである。
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をできるだけ多く選択するための項となる。
以下に、改良した制御アルゴリズムを用いた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毎のタイマ割込みで、段数を切り換えるか否かの判定を行う監視プログラムを動作させる。段数を切り換える必要があると判定された場合にのみ、命令語のフェッチを停止して、全てのパイプラインレジスタをデータ信号が通過するまで、段数分のクロックを入力させる。その後、上記したパイプラインの段数切換処理と、クロック周波数の切換処理を実行し、フェッチを再開させ、クロックをパイラプラインレジスタに供給する。このようにソフトウエアにより処理することも可能である。
段数制御装置を論理回路で実現する実施例について説明する。本実施例の論理回路は、発行命令数カウント部64、スループット計算部65、パイプライン段数計算部66、パイプライン段数切換部67を有している。論理回路のうち発行命令数カウント部64は、常時、動作するが、100ms毎の段数制御を行う制御期間時は停止する。スループット計算部65、パイプライン段数計算部66、パイプライン段数切換部67は、100ms毎の段数制御を行う制御期間のみ動作し、制御期間以外は、スリープモードで動作するように給電される。
図17は、段数制御装置で論理回路を構成した場合の回路のブロック図である。本実施例では、説明を簡単にするために、フェッチユニット60、デコードユニット61、実行ユニット62、ライトバックユニット63の4段のパイプラインを想定した。しかし、段数は、30段程度でも良く、任意である。デコードユニット61から実行ユニットへ発行する命令の数を発行命令数カウント部64(カウンタ)で数える。この場合計算機内に留まってまだ完了していない命令も数えることになるが、実際の応用では命令単位での正確性を要求するものは少ないので実用上問題ない。
リオーダーバッファがある計算機ならばリオーダーバッファからリタイアする命令数を数えてもよい。この方法は上の場合より正確に完了した命令を数えることができる。第nフェーズのIPCであるIPC(n)を次式により計算する。
フェーズの時間を調節できる場合は1フェーズ内のサイクル数を2nにすればn回シフトで除算ができて回路が簡単になる。
次に、第nフェーズのスループットTP(n)をスループット計算部65により、上記数2式により計算する。
次に、スループット計算部65により、第0フェーズから第nフェースまでの平均TPavg(n)を上記数3式により計算する。
但し、y=TPavg(n-1)×(n-1)の値は第n-1フェーズで計算しているので、その値をレジスタに残しておき、次のフェーズの第nフェーズでは[y+ TP(n)]÷nを計算するようにしても良い。
次に、パイプライン段数決定部66で、次のフェーズのパイプライン統合度Unextが上記数6式により決定する。そして、Unextにより、表8に基づいて、次のフェーズの統合度(パイプライン段数)を決定する。数6式は、TPtarget-TPavg(i)の値が大きい場合には第1項が支配的で、この値が小さくなると第2項が支配的になるように定数a、bを決める。
本実施例は、図18に示すように、クロック発生器52の出力するクロックの周波数と、給電電圧との関係が、ほぼ直線的に変化するように、給電電圧を変化させる電源電圧制御器56を設けている。この電源電圧制御器56は図18に図示されている各機器MPU50、カウンタ41、目標値設定レジスタ51、ROM54、RAM55、I/O53の他、主CPU、その他の機器57への電力を供給している。この実施例は、上記した実施例1〜8のそれぞれに対して、この電源電圧制御器56を設けることができる。この電源電圧制御器56は、表9に示すように、各クラスにおいて、周波数が低くなれば、給電電圧も低くなるように給電電圧を制御する。各クラスkにおける最高周波数f
mkでの給電電圧は、最大電圧V
m(=1.65)に等しい。これは、次の理由による。段数を統合した場合には、1段当たりの論理回路の数が、通常は、2倍となるため、隣接するクラス間では、同一電圧での動作可能周波数は、1/2に低下するためである。
クロック周波数に応じて給電電圧を変化させるDVS制御方式における消費電力は、(4)式で表される。また、本発明におけるPSU制御方式における消費電力は(5)式で表される。また、パイプライン段数を統合した場合には、1クロック周期における命令実行数(IPC)は、統合する前に比べて、約1.46倍程度に、増加するために、クロック周波数が1/2に低下しても、現命令実行速度は、統合前の現命令実行速度に対して、0.73倍程度に低下するだけである。DVS制御の場合には、1段の統合により現命令実行速度は、1/2に低下する。したがって、PSU制御における目標命令実行速度とDVS制御における目標命令実行速度を同一にするならば、結果として、PSU制御の方がDVS制御よりも電力を節減することができる。段数の統合によりIPCの増加を考慮して、各クラスでのクロック周波数は、最大周波数の1/2,1/4,1/8とし、給電電圧を最大電圧Vmとした場合のDVSとPSUとの制御方式における現実行命令速度と消費電力との関係は、図19に示す特性となる。ただし、図19の特性図は、給電電圧を最大電圧Vm、クロック周波数を最大周波数fmとした場合の現実行命令速度を1に、その時の消費電力を1に正規化して、表されている。
上記の全実施例において、段数制御された場合に、各クラスでの周波数を最大クロック周波数fmの1/2,1/4,1/8とする。段数を変更した場合には、その後、その周波数で動作可能な給電電圧まで、給電電圧を徐々に低下させる。また、段数を変更する場合には、変更後のクラスのクロック周波数での動作が可能となるまで、給電電圧を漸増させた後に、段数を切り換える。このようにすることで、給電電圧を変更する制御を行うに際して、CPUを停止させることなく、段数を変更することができる。
また、図19に示すように、現命令実行速度を同一とする場合に、PSU制御の消費電力は、DVS制御による消費電力よりも小さいことが理解される。そこで、上記の全実施例において、次のように制御することも可能である。段数を1段統合して、パイプラインをクラス2とするした後、クロック周波数はfmkを初期値、給電電圧は最大値Vmを初期値とする。そして、段数の変更の後、上記した目標命令実行速度と現命令実行速度との偏差に応じて決定される制御値に応じて、クロック周波数と、給電電圧を可変制御する。すなわち、図19のPSUの特性曲線上において、クラス2とクラス3との間の点Tに、目標命令実行速度が存在するとすると、上記の全実施例では、クラス2とクラス3との制御が、制御値に応じて、交互に実施される。本実施例では、この場合に、点Tの目標命令実行速度を実現するために、クラス2の段数を維持して、クロック周波数と給電電圧とを、制御値に応じて、変化させるものである。もちろん、この場合に、現命令実行速度が目標命令実行速度よりも大きく、前記の制御値が負となる場合には、クラス3の統合が実施される。この場合に、クラス3に関しても、クロック周波数と給電電圧を制御値に応じて連続的に制御するDVS制御を実施しても良い。また、目標命令実行速度が、クラス3とクラス4との間に存在する場合にも、クラス3に関して、クロック周波数と給電電圧を制御値に応じて連続的に制御するDVS制御が実施される。また、クラス3とクラス4との間に目標命令実行速度が存在する場合に、クラス4に関して、DVS制御を実施しても良い。
このようにすることで、給電電圧を低減することができ、より、消費電力を低下させることができる。
このときのDVS制御において、クロック周波数だけを変更して、電圧は、その周波数で動作可能な最低電圧に向けて、徐々に低下させるようにしても良い。
本発明は、最大限の節電効果の得られる演算装置、マイクロプロセッサに用いることができる。
本発明の実施例の動作を説明するためのパイプラインの一部を示した回路図。
本発明の実施例にかかるパイプラインの制御装置の回路図。
本発明の実施例にかかる段数制御装置の構成図。
本発明の実施例1の段数制御装置の処理手順を示したフローチャート。
本発明の実施例3の段数制御装置の処理手順を示したフローチャート。
本発明の実施例3の段数制御装置による制御値と段数変更の様子を示したタイミングチャート。
本発明の実施例4の段数制御装置の処理手順を示したフローチャート。
本発明の実施例4の段数制御装置による制御値と段数変更の様子を示したタイミングチャート。
本発明の実施例5の段数制御装置の処理手順を示したフローチャート。処理手順を示したフローチャート。
本発明の実施例6の段数制御装置の処理手順を示したフローチャート。
本発明の実施例6にかかる仮定したPSUのパイプラインを示した構成図。
本発明の実施例6の段数制御による消費電力をDVSと比較して示した特性図。
本発明の実施例6の段数制御によるスループットをDVSと比較して示した特性図。
本発明の実施例3、4、5、7の段数制御により、節電効果が増大することを説明するための特性図。
本発明の実施例7の段数制御による消費電力を実施例6の段数制御による消費電力と比較して示した特性図。
本発明の実施例7の段数制御によるスループットを実施例6の段数制御による消費電力と比較して示した特性図。
本発明の段数制御装置を論理回路で実現した実施例8の構成を示すブロック図。
本発明の実施例9に係る段数制御装置の構成図。
実施例9の段数制御装置による制御方式を示するための特性図。
符号の説明
101-117…パイプラインレジスタ
201-217…クロックドライバ
302-316…アンドゲート
30…クロック信号線
31…統合信号線
40…プログラムカウンタ
41…カウンタ
51…目標設定レジスタ