(57)【要約】  制御ロジックはプログラム可能なプロセッサ中の特定の機能要素（例えば、除算器、または乗算器あるいはこれらに類似するもの）の使用を監視し、特定の機能要素が指定した期間の間使用されていないとき、ユニットの電源を切る。カウンタ（ローカルまたは中央）および時間しきい値は、設定期間が要素を使用することなく経過する時を決定する。制御ロジックはまた、機能ユニットがどのくらいの早さで再起動されるかを監視して電力制御がスラッシングを生じさせるかどうかを決定する。このようなスラッシングの決定の際にユニットがそのしきい期間を自動的に調整しスラッシングを最小化する。ロジックの例において非常に控えめであることをロジックが決定するとき、ロジックはしきい値を下げる。プログラマが電源切断ロジックを無効にして、ロジックを常に電源投入または常に電源切断のどちらかの状態にできるようにするために、モードビットが存在する。【選択図】      図２
2008541274.tif 000002
【特許請求の範囲】
【請求項１】
プログラム可能なプロセッサの電力消費を減少させる方法において、
前記プログラム可能なプロセッサの複数の機能ユニットのうちの１つの演算に対する最終呼び出し以降の時間を監視することと、
前記１つの機能ユニットの前の最終シャットダウン以降の時間を監視することと、
前記最終呼び出し以降の時間が現在のしきい値を超えるとき、前記１つの機能ユニットをシャットダウンして、前記１つの機能ユニットにより消費される電力を減少させることと、
前記１つの機能ユニットの演算に対する後の呼び出しに応答して、前記１つの機能ユニットを再起動することと、
前記１つの機能ユニットを再起動する時に、前記シャットダウン以降の時間が設定値より短い場合、前記現在のしきい値を新しいより高いしきい値に増加させることとを含む方法。
【請求項２】
前記設定値は、前記しきい値の現在の値に等しい請求項１記載の方法。
【請求項３】
前記新しいより高いしきい値は、前記現在のしきい値の２倍である請求項１記載の方法。
【請求項４】
前記１つの機能をシャットダウンする際に、前記１つの機能ユニットの演算に対する前記最終呼び出し以降の時間に基づいて、前記現在のしきい値を調整して、電力低減を最適化することをさらに含む請求項１記載の方法。
【請求項５】
前記現在のしきい値を調整して電力低減を最適化することは、
前記現在のしきい値から前記最終呼び出し以降の時間を減算して、差を取得することと、
１つ以上のビット位置だけ前記差をシフトさせることと、
前記現在のしきい値から前記シフトされた差を減算して、調整されたしきい値を取得することと
を含むステップを実行することにより、前記調整されたしきい値を計算することを含む請求項４記載の方法。
【請求項６】
前記調整されたしきい値の計算は、前記差を前記現在のしきい値を超えないものまでに飽和させることと、前記調整されたしきい値を設定された最小しきい値を超えないものまでに限定することとをさらに含む請求項５記載の方法。
【請求項７】
前記機能ユニットは、演算機能の実行のためのロジック要素を備える請求項１記載の方法。
【請求項８】
前記演算機能は、乗算または除算機能を含む請求項７記載の方法。
【請求項９】
プログラム可能なプロセッサの電力消費を減少させる方法において、
前記プログラム可能なプロセッサの複数の機能ユニットのうちの１つの演算に対する呼び出しを監視することと、
前記呼び出しのうちの後続するものの前に、前記呼び出しのうちの先行する最終のものに続く時間がしきい値の現在の値に到達したとのそれぞれの検出に応答して、前記１つの機能ユニットをシャットダウンすることと、
前記１つの機能ユニットのそれぞれのシャットダウンに続く前記１つの機能ユニットの演算に対する呼び出しに応答して、前記１つの機能ユニットを起動することと、
前記１つの機能ユニットのそれぞれのシャットダウンと前記１つの機能ユニットのそれぞれのその後の起動との間の時間を監視することと、
前記１つの機能ユニットのシャットダウンと前記１つの機能ユニットのその後の起動との間の時間が設定期間より短いことが発生したことに応答して、前記しきい値を新しい現在の値に増加させることとを含む方法。
【請求項１０】
前記設定期間は、前記しきい値の現在の値に等しい請求項９記載の方法。
【請求項１１】
複数の機能ユニットを備えるプログラム可能なプロセッサのための電力制御において、
前記電力制御は、
前記機能ユニットのうちの１つに結合されて、前記１つの機能ユニットを選択的に起動およびシャットダウンする回路と、
前記１つの機能ユニットの演算に対する、前の最終呼び出し以降の時間と前記１つの機能ユニットの前の最終シャットダウン以降の時間とを監視する手段と、
前記回路を制御して、前記１つの機能ユニットの演算に対する最終呼び出し以降の時間がしきい値の現在の値を超えることがそれぞれ発生する際に前記１つの機能ユニットをシャットダウンし、前記１つの機能ユニットに対する呼び出しが、設定値よりも短い、前の最終シャットダウン以降の時間中に発生する場合に、その現在の値に対して前記しきい値を増加させる手段とを具備する電力制御。
【請求項１２】
前記設定値は、前記しきい値の現在の値に等しい請求項１２記載の電力制御。
【請求項１３】
前記しきい値を増加させることは、前記しきい値の現在の値の２倍に等しい新しいしきい値を設定することを含む請求項１３記載の電力制御。
【請求項１４】
前記１つの機能ユニットのそれぞれのシャットダウンの際に、前記１つの機能ユニットに対する最終呼び出し以降の時間の関数として前記しきい値を調整する手段をさらに具備する請求項１２記載の電力制御。
【請求項１５】
プログラム可能なプロセッサにおいて、
命令にしたがってデータを処理する複数の機能ユニットと、
前記機能ユニットのうちの１つに結合されて、前記１つの機能ユニットを選択的に起動およびシャットダウンする回路と、
前記命令の処理中に、前記１つの機能ユニットの演算に対する呼び出しを監視し、前記回路を制御して、調整可能なしきい値に等しい、前記呼び出しのうちの前の最終のもの以降の時間間隔のそれぞれの経過の際に前記１つの機能ユニットをシャットダウンし、シャットダウンの後に続く前記１つの機能ユニットの演算に対するそれぞれの新しい呼び出しに応答して、前記１つの機能ユニットを再起動する電力制御装置と、
前記しきい値を調整する手段とを具備するプログラム可能なプロセッサ。
【請求項１６】
前記手段は、前記１つの機能ユニットのシャットダウンと前記１つの機能ユニットの演算に対する後続する呼び出しとの間の時間の関数として前記しきい値の増加を制御する請求項１５記載のプログラム可能なプロセッサ。
【請求項１７】
前記手段は、前記１つの機能ユニットの演算に対する後続する呼び出しに応答して、前記１つの機能ユニットの演算に対する最終呼び出し以降の時間の関数として前記しきい値の減少を制御する請求項１５記載のプログラム可能なプロセッサ。
【請求項１８】
前記手段は、前記１つの機能ユニットのシャットダウンと前記１つの機能ユニットの演算に対する後続する呼び出しとの間の時間が設定値より短い場合に前記しきい値を増加させ、
さもなければ、前記調整のための手段は、前記１つの機能ユニットの演算に対する最終呼び出し以降の時間の関数として前記しきい値を調整する請求項１５記載のプログラム可能なプロセッサ。
【請求項１９】
前記機能ユニットは、パイプラインの複数の処理ステージを形成し、前記ステージは実行ステージを含み、前記１つの機能ユニットは、前記実行ステージの要素を備える請求項１５記載のプロセッサ。
【請求項２０】
前記実行ステージの要素は、除算器または乗算器を有する請求項１９記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
処理機能がフルな処理能力よりも少ない能力を必要とするとき、本教示は、減少した電力消費とともに複雑な処理ロジックを効率的に提供する技術およびプロセッサアーキテクチャに関する。
【背景】
【０００２】
多くのデバイスは、プログラム命令にしたがってデータ処理機能を実行するために複雑な配列のロジックをともなう、マイクロプロセッサおよびデジタル信号プロセッサのような、組み込まれたプロセッサを利用する。例えば、バッテリ電力供給を有するポータブルデバイス中のこれらのプロセッサの多くのアプリケーションは、電力消費の注意深い制御を保証して、通常、バッテリ電力供給において充電の寿命を延ばす。プロセッサの多くの機能またはアプリケーションは、プロセッサデバイスのフルな処理能力を必要としないか、または非常に限られた時間に対してのみフルな処理能力を必要とする。しかしながら、絶えずフルに電力が供給されているとしても、使用されないロジックが、電力を不必要に消費している。
【０００３】
相補型金属酸化膜半導体（ＣＭＯＳ）ロジックゲートは、回路がアクティブにスイッチするときにダイナミックな電力を消費するだけであるので、相補型金属酸化膜半導体（ＣＭＯＳ）ロジックゲートは通常、アイドル要素により消費される電力を最小化することに大変すぐれている。しかしながら、相補型金属酸化膜半導体（ＣＭＯＳ）ロジックゲートはまた、それらの電力消費に対して、スタティックまたはリーク構成部品を有している。一般に、ダイナミック構成部品は主としてスタティック構成部品より重要である。しかしながら、より新しいディープサブミクロン技術において、スタティック構成部品は、消費電力全体に対して著しい量の一因となり始めている。効率的な電力であるために、最新のデバイスは、損失されるスタティック電力の量をアクティブに制限する必要があるかもしれない。
【０００４】
電力低減を成し遂げるために、セル電話機のようなバッテリ駆動の組み込み型アプリケーションに対して、ロジックの使用されない部分の電源を切り、それによりリーク電力損失を取り除く試みが実行されている。試みのいくつかは、ソフトウェア制御に依拠して、使用されないロジック構成部品の電源を切る。この目的のために、プログラム中の命令は、あるプロセッサ要素を必要とするときにそれらの電源を入れ、必要でないときに電源を切る。これは省電力化を結果として生じるが、ソフトウェアに関して付加的なオーバーヘッドを課して、さまざまなプロセッサ機能をアクティブに制御することをプログラマに要求する。
【０００５】
所定の長さの時間後に、自動システムを使用して、使用されない構成部品をシャットダウンしてもよい。しかしながら、ロジック要素の時間ベースの電源切断に、潜在的に問題がある場合、問題が生じる。構成部品を起動すること、または電源を投入することは、付加的な電力消費を結果として生じ得る。いくつかのケースにおいて、ある短い時間の間要素を単に維持することよりも、要素に電源を投入することの方が多くかかる。また、構成部品に電源を再投入するのに時間がかかる。構成部品を再始動する際に起きる遅延または待ち時間は、プロセッサの機能停止を結果として生じるかもしれず、それは性能を低下させる。
【０００６】
それ故に、短い時間後に電源投入するだけのために、繰り返し構成部品の電源を確実に切らないことが望まれる。繰り返される電源切断と電源投入は、“スラッシング”と呼ばれる。効果的に、電力消費を減少させ、さらに必要以上のスラッシングを回避するために、プロセッサの要素に対して電力を選択的に制御する技術に対する必要性が存在する。
【概要】
【０００７】
１つの観点において、本開示の教示は、プログラム可能なプロセッサの電力消費を減少させる方法に関する。プログラム可能なプロセッサの機能ユニットのうちの１つの演算に対する最終呼び出し以降の時間を監視することを方法は含む。ユニットの、前の最終シャットダウン以降の時間も監視される。最終呼び出し以降の時間が現在のしきい値を超えるとき、１つの機能ユニットにより消費される電力を減少させるために、この方法は１つの機能ユニットをシャットダウンする。１つの機能ユニットの演算に対する後の呼び出しに応答して、ユニットは再起動される。方法はまた、しきい値を調整することを含む。１つの機能ユニットを再起動する時に、シャットダウン以降の時間が設定値よりも短い場合、方法は、現在のしきい値を新しいより高いしきい値に増加させる。
【０００８】
例えば、設定値は、しきい値として使用される現在の間隔値に等しくてもよい。シャットダウンから次の呼び出しまでの時間が短い、例えば、古いしきい値より短い場合、しいき値における増加は、将来のスラッシングを減少させるのに役立つ。前の最終呼び出し以降の間隔に応答して、通常、時間しきい値における減少として、しきい値をインクリメント的に調整してもよい。インクリメント的な減少は、電力節約を最適化するのに役立つ。
【０００９】
本教示の他の観点は、電力制御および／またはしきい値調整による電力制御を使用するプロセッサに関する。
【００１０】
１つの機能ユニットを選択的に起動およびシャットダウンするために、電力制御は、機能ユニットのうちの１つに結合された回路を含んでいてもよい。制御は時間を監視する手段を含む。詳細に述べると、時間は、１つの機能ユニットの演算に対する前の最終呼び出し以降と、ユニットの前の最終シャットダウン以降との両方で監視される。機能ユニットの演算に対する最終呼び出し以降の時間がしきい値の現在の値を超える場合、制御手段は１つの機能ユニットをシャットダウンする。１つの機能ユニットに対する呼び出しが、設定値よりも小さい前の最終シャットダウン以降の時間中に発生する場合、制御手段はまた、しきい値の現在の値に対してしきい値を増加させるように機能する。
【００１１】
本教示のプロセッサの観点は、１つの機能ユニットを選択的に起動およびシャットダウンするために、命令にしたがってデータを処理する機能ユニットおよびそれらのユニットのうちの１つに結合された回路を含んでいてもよい。命令の処理中に、電力制御装置は、１つの機能ユニットの演算に対する呼び出しを監視して、回路を制御してユニットをシャットダウンする。調整可能なしきい値に等しい、呼び出しの前の最終のもの以降の時間間隔のそれぞれの経過の際に、制御装置は１つの機能ユニットをシャットダウンする。シャットダウンの後に続く１つの機能ユニットの演算に対するそれぞれの新しい呼び出しに応答して、制御装置はまた機能ユニットを再起動する。しきい値を調整する手段も提供される。
【００１２】
開示した例は、特定の機能要素（例えば、除算器、または乗算器あるいはこれらに類似するもの）の使用を監視し、特定の機能要素が指定した期間の間使用されていないとき、ユニットの電源を切る制御ロジックを含む。ユニット演算に対する呼び出しがあるたびに、タイムスタンプが記憶される。ロジックはカウンタ（ローカルまたは中央）を使用して、設定期間が要素を使用することなく経過する時を決定する。ロジックはまた、各シャットダウンに対するタイムスタンプを記憶し、ロジックがどのくらいの早さで再起動されるかを監視して電力制御がスラッシングを生じさせるかどうかを決定する。このようなスラッシングの決定の際に、ユニットがそのしきい期間を自動的に調整し、スラッシングを最小化する。同様に、非常に控えめであることをロジックが決定するとき、ロジックはしきい値をインクリメント的に下げる。プログラマが電源切断ロジックを無効にして、ロジックを常に電源投入、または常に電源切断のどちらかの状態にできるようにするために、モードビットが存在する。
【００１３】
それ故に、例示的な技術により、特定の機能ユニットの活動のタイミングに基づいて、ハードウェアがリークベースの電力消費をダイナミックに減少させることができるようになる。電力を減少させるための努力が、度を超えたリサイクリングによる過度の電力消費またはプロセッサの機能停止を生じさせないことを反スラッシングロジックが保証する。しかしながら、スラッシングがないとき、インクリメント的な調整は、電力節約を最適化するのに役立つ。
【００１４】
付加的な利益および新しい特徴は、後に続く記述中の一部分において示され、後に続く添付図面の考察と同時に当業者に明らかになり、あるいは例の提供または動作により理解されるかもしれない。添付した特許請求の範囲において特に示した方法、手段および組み合わせの実施または使用により、本教示の利益を実現または達成してもよい。
【詳細な説明】
【００１５】
後に続く詳細な説明において、関連した教示の完全な理解を提供するために、例により多数の特定の詳細を示す。しかしながら、そのような詳細説明なしで本教示を実施できることが当業者に明らかだろう。他の例において、本教示の不必要に不明瞭な観点を避けるために、詳細説明なしに、比較的に高いレベルで、よく知られている方法、手続き、構成部品および回路を記述している。
【００１６】
特定の機能ユニット（例えば、除算器、または乗算器あるいはこれらに類似するもの）の演算に対して監視される呼び出しに基づいて、以下に記述したプロセッサのアーキテクチャおよび処理のフローのさまざまな例は、そのユニットの動作を制御し、例えば、ある期間ユニットが使用されていない（例えば、新しい呼び出しがない）とき、機能ユニットの電源を切断する。しかしながら、期間またはしきい時間の設定は、要素の使用に基づいて調整される。制御される要素があまり使用されないとき、さらに電力消費を改善するために、しきい値の調整は徐々にしきい値を減少させることができる。スラッシングを防ぐために、シャットダウンの後に続く短い期間中に、例えば、現在のしきい値設定よりも短い期間中に命令がユニットを再び呼び出す場合、プロセッサはしきい値を調整して、その後の中断前のアイドル期間を増加させる。
【００１７】
添付図面に図示し、以下で論ずる例に対して今後詳細に言及する。ここで論ずる電力制御原理は、さまざまな異なるプロセッサアーキテクチャに適合させることができる。しかしながら、理解を容易にするために、例として、パイプライン処理されたプロセッサを考慮することが役に立つかもしれない。図１は、パイプライン処理されたプロセッサ１０の単純化したブロック図である。プロセッサ１０は、例えば、移動電話局またはバッテリ電力を利用する他のポータブル電子デバイス中の低電力アプリケーションに向けられている。そのようなアプリケーションにおいて、マルチメディア処理のための単一命令多重データ（ＳＩＭＤ）プロセッサのような、主プロセッサまたは数値演算コプロセッサにこの技術は適用できる。
【００１８】
論述を容易にするために、パイプライン１０の例は、単一パイプラインを本質的に実現する、スケーラ設計である。しかしながら、ここで論ずる処理はまた、多数のパイプラインを実現するスーパースケーラ設計および他のアーキテクチャに適用できることを当業者は理解するだろう。また、パイプラインの深さ（例えば、ステージの数）は実例に過ぎない。実際のパイプラインは、例におけるパイプライン１０よりも少ないステージまたは多いステージを有していてもよい。
【００１９】
単純化したパイプライン１０は、パイプライン処理ステージの５つの大きなカテゴリ：フェッチ１１、デコード１３、読み出し１５、実行１７および書き戻し１９を含む。図中の矢印はロジカルデータのフローを表し、必ずしも物理的な接続ではない。これらのステージのいくつかは、関連性した機能の一部を実行する多数のステージに分解されてもよく、またはパイプラインは付加的な機能を提供する付加的なステージを含んでもよいことを当業者は認識するだろう。図１中に別に示していないが、状態機械または関連したロジック機能を実現するこれに類似するもの、ならびに、次のステージまたは他のプロセッサリソースに命令および／または何らかの処理結果を渡す、関係付けられたレジスタをパイプライン１０の各ステージは通常含む。
【００２０】
例示的なパイプライン１０において、最初のステージは命令フェッチステージ１１である。フェッチステージ１１は、後のステージにより処理するための命令を取得する。フェッチステージ１１は、（示していない）メモリの階層から命令を取得し、命令の階層は通常、命令またはレベル１（Ｌ１）キャッシュ、レベル２（Ｌ２）キャッシュおよび主メモリを含む。フェッチステージ１１は、各命令をデコードステージ１３に供給する。命令デコードステージ１３のロジックは、受け取った命令バイトをデコードして、結果をパイプラインの次のステージに供給する。
【００２１】
ステージの次の大きなカテゴリは、データアクセスまたは読み出しを提供する。読み出しステージ１５のロジックは、（示していない）汎用目的レジスタすなわち“ＧＰＲ”ファイルにおける指定されたレジスタ中のオペランドデータにアクセスする。各命令およびその必要とされるオペランドデータは、実行機能を提供する１つ以上のステージ１７に渡される。実行ステージ１７は本質的に、検索されたオペランドデータに各命令の特定の機能を実行して結果を生成する。実行機能を提供するステージ１７は、例えば算術ロジックユニット（ＡＬＵ）を実現してもよい。実行ステージ１７は各命令の実行の結果を書き戻しステージ１９に供給する。ステージ１９は、結果をレジスタまたはメモリに書き戻す。
【００２２】
プロセッサ１０の要素は、それらがスイッチしていないときでさえ電力供給を受ける。例えば、バッテリ電力源を使用する多くのアプリケーションにおいて、電力源の寿命は限られている。プロセッサ１０のいくつかの要素は、絶え間なく使用されているわけではない。例における実行ステージ１７中のいくつかの機能ユニットは、相当な期間必要とされないかもしれない。電力消費を減らすために、必要でないとき、それぞれのそのような機能ユニットをシャットダウンすることができる。論述の目的のため、電力制御の主題である機能ユニットは除算器２１であるが、実行ステージ１７のまたはプロセッサ１０における他の場所の、乗算器あるいは任意のさまざまな他の機能要素またはリソースに同様の制御を適用できることを当業者は認識するだろう。
【００２３】
例は電力制御２３を含み、電力制御２３は特定の機能ユニット（例えば、除算器２１）の呼び出しおよび動作を監視する。ユニットがレジスタ２５中の調整可能なしきい値により規定される期間に対して呼び出されていないとき、制御２３はユニットの電源を切る。除算器２１の使用に対する呼び出しがなく設定期間が経過するとき、すなわち要素２１の不活動の期間がしきい値２５に合致するまたは超えるときを電力制御２３が決定する。さらに後で論ずるように、どのくらいの速さで機能ユニット、このケースにおいては除算器２１が、各電源切断後に再度電源投入されるかについても電力制御２３は監視して、電力制御がスラッシングを生じさせるかどうかを決定する。このようなスラッシングの決定の際に、電力制御２３がそのしきい期間を上方に自動的に調整し、スラッシングを最適化する。同様に、非常に控えめであることを電力制御２３が決定するとき、電力制御２３はしきい値２５を下げる。プログラマが電源切断ロジックを無効にして、ユニットを常に電源投入、または常に電源切断のどちらかの状態にできるようにするために、モードビットが存在する。
【００２４】
任意のさまざまな知られている方法で電力制御２３からの選択信号に応答して、制御される機能ユニット、すなわち図１の例における除算器２１のアクティブ状態を制御できる。一般的な論述の目的のために、図１は、除算器２１の演算に必要とされる信号（Ｓ）、および電力制御２３からの電力制御信号に応答して、信号を除算器に選択的に結合させる一般的なゲート回路２７を示す。図１中の２７において一般的に示す回路は、制御２３からの適切な選択信号に応答して適切なタイプの信号を機能ユニットに供給するように構成されるロジックゲート、スイッチ、それらの組み合わせ、または他の任意の回路であってもよい。信号Ｓをユニット２１に供給することにより、ユニットが起動され、または電源が投入されるのに対し、信号Ｓを遮断することまたは停止することにより、ユニット２１がシャットダウンされる。
【００２５】
例えば、ゲート２７の動作が、使用に対する呼び出しにしたがって電源を入れたり切ったりするように、除算器２１に対して電力供給を制御するゲーティングにより、除算器２１を選択的にイネーブルおよびディスエーブルとすることができる。そのような実施において、信号Ｓは電力供給端子または電圧のうちの１つを表す。電力制御２３が除算器２１をディスエーブルするとき、制御２３はゲート２７をトリガして、除算器２１の回路に関して電力端子Ｓのうちの１つに対する接続（例えば、供給または接地）を遮断する。遮断により、その機能ユニットの回路中のダイナミックな電力消費およびリークが削除される。
【００２６】
図１の例は、使用に対する呼び出しに基づいて制御される、単一の機能ユニットである除算器２１を示す。相当な電力供給を受けるが、かなりの期間不活動であるかもしれない多数の要素に対して、所定のプロセッサがいくつかの類似の制御を含むことができることを当業者は認識するだろう。
【００２７】
図２は、レジスタ２５中の調整可能なしきい値に基づいて、除算器２１の起動を制御するための電力制御２３の実施の機能ブロック図である。この例において、電力制御２３は、クロック信号に応答するカウンタ３１を含む。システムクロックあるいはプロセッサ１０中で、またはプロセッサ１０に対して発生する別のクロック信号をカウンタ３１は利用してもよい。いくつかの機能ユニットの間でカウンタ３１を共有でき、またはカウンタ３１を問題の機能ユニットに専用のものとすることができる。カウントは、機能ユニットに対して妥当な時間を単位にしている。それはサイクルから秒まで（またはそれを超えた）の範囲に渡ることができる。電力制御２３はまた、２つのタイムスタンプ（ＴＳ）レジスタ３３および３５を含む。起動されるとき、レジスタ３３または３５は、現在の時間に関連した尺度または値を表す、カウンタ３１からの現在のカウントを記憶する。
【００２８】
機能ユニット（我々の例における除算器２１）が、パイプライン処理されたプロセッサ１０を通じて流れる命令により呼び出されるたびに、レジスタ３３が起動され、カウンタ３１からの現在の時間カウント値を記憶する。ユニットが再度呼び出されるまで、レジスタ３３はそのカウントを保持する。このようにして、レジスタ３３中の値ＴＳ（ＬＣ）は、除算器２１の演算に対する最終の（最も最近の）呼び出しに対するタイムスタンプを表す。
【００２９】
機能ユニット（我々の例における除算器２１）の電源が切られるたびに、レジスタ３５が起動され、カウンタ３１からの現在の時間カウントを記憶する。ユニットの電源が再度切られるまで、レジスタはそのカウントを保持する。このようにして、レジスタ３３中の値ＴＳ（ＬＰＤ）は、除算器２１の最終の電源切断（最も最近の動作停止）に対するタイムスタンプを表す。
【００３０】
カウンタ３１はまた、実行時間に関連したカウントを２つの減算回路３７および３９に供給する。減算回路３７が動作するとき、減算回路３７はまた、レジスタ３３から最終呼び出しタイムスタンプ値ＴＳ（ＬＣ）を受け取る。（現在の時間に関連した）カウンタと記憶されたカウント値ＴＳ（ＬＣ）との間の差Ｉcは、除算器２１に対する、前の最終呼び出し以降のインターディレイ間隔を表す。比較器４１は、最終呼び出し以降のインターディレイ間隔Ｉcと、調整可能なしきい値２５の現在の値とを比較する。このようにして、カウンタ値はレジスタ３３中のデータから減算され、２５において登録されているような現在のしきい値と比較される。代わりに、カウンタ３１の現在の値からレジスタ３３中の古いタイムスタンプとしきい値２５とを減算することにより、これを実施することができ、どちらのケースにおいても、ゼロまたは負の結果は、除算器２１に対する最終呼び出し以降に、しきい値に等しい期間が経過したことを意味する。
【００３１】
Ｉcがしきい値２５の現在の値に到達する（すなわち、合致または超える）場合、制御ロジック４５はゲート２７をディスエーブルして、除算器２１を遮断する。制御ロジックが除算器３５を動作停止するとき、制御ロジックはまた、最終の電源切断タイムスタンプ値ＴＳ（ＬＰＤ）として、カウンタ３１からの新しいカウントをレジスタ３５に記憶させる。除算器２１に対する後の呼び出しに応答して、制御ロジックは除算器２１の電源を投入する。
【００３２】
第２の減算回路３９はレジスタ３５から最終の電源切断タイムスタンプ値ＴＳ（ＬＰＤ）を受け取る。（現在の時間に関連した）カウンタ３１中の値と記憶されたカウント値ＴＳ（ＬＰＤ）との間の差Ｉpは、除算器２１が最後に電源切断された以降のインターディレイ間隔を表す。比較器４３は、最終の電源切断以降の間隔Ｉpと、この例においては調整可能なしきい値２５の現在の値である、設定値とを比較して、結果を制御ロジック４５に供給する。制御ロジック４５は、しきい値２５を調整するためにその内部アルゴリズム中でこの比較結果を使用して、スラッシングを回避する。代わりに、カウンタ３１の現在の値からレジスタ３５中の古い時間スタンプとしきい値２５とを減算することにより、この比較を実施することができ、いずれのケースにおいても、正の結果は、最終の電源切断以降に、しきい値よりも短い期間が経過したことを意味する。しきい値２５を調整するための処理の一部として、除算器が呼出され、または電源投入されるとき、減算回路３７および比較器４１がトリガされる。
【００３３】
使用に基づいたシャットダウンのために、使用される期間を調整する制御ロジック４５により実現されるアルゴリズムは、電力消費を最適化して、さらにスラッシングを最小化することに向けられている。例えば、制御２３が最終の時間以降に、除算器２１をシャットダウンする前に十分長く待たなかった場合、特定の機能ユニットに関して次の電力サイクルに対する不活動の期間の尺度として使用されるしきい値をロジック４５は延ばす。しかしながら、例えば、インターコールディレイがしきい値よりも長いような機能をアルゴリズムが呼出すたびに、アルゴリズムはまた、少し（微調整）しきい値を減少させる。
【００３４】
さらに電力消費を減少させるために、しきい値を下方へ微調整するのに関わるかもしれない動作を最初に考慮する。
【００３５】
最小のシャットダウンしきい値は、最小しきい値レジスタ４７に、ハードワイヤードされるかまたはソフトウェアによりロードされる。レジスタ４７中の最初のしきい値（すなわち、Ｔｈ0）は、レジスタ２５から読み出される最小値である。通常、最小のしきい値は、遮断による省電力化（リーク）が電源投入コストに等しくなるような値に設定されるが、最小のしきい値はこの値より低く設定されてもよい。制御される機能ユニットの始動を待つ命令フロー中で誘発される遅延（例えば、機能停止、フラッシュおよび再フェッチ）のコストを考慮すると、最小のしきい値をより大きく設定することもできる。
【００３６】
機能ユニット（例えば、除算器２１）が呼び出される、または電源を切られるとき、カウンタ３１中の現在の値中の値が、タイムスタンプとして適切なレジスタ３３または３５中に取り込まれる。また、機能ユニットが呼び出される、またはユニットが再度電源投入されるとき、カウンタ３１の現在の値は適切なレジスタ中のデータから減算されて、例えば、上で論じた減算回路および比較器を使用して、現在のしきい値と比較される。代わりに、現在のカウンタ値からそれぞれのタイムスタンプおよびしきい値を減算することにより、これを実施することができ、負の値は、最終のイベントからしきい間隔経過するよりも前にイベントが発生したことを意味する。
【００３７】
本質的に、電力制御ユニット２３が機能ユニットに対する新しい呼び出しを検出するたびに、電力制御は、レジスタ２５中のしきい値を調整するために２つのアルゴリズムを実行する。一方のアルゴリズムは、小さい調整、すなわち微調整を行って、制御２３により電力節約を最適化する。他方のアルゴリズムは、スラッシングを最小化するためにより大きい調整を行う。
【００３８】
微調整のために、ユニットの機能に対して、例えば、ユニット２１による除算に対して呼び出しがあるたびに、呼び出しに対するタイムスタンプ（カウンタ出力）を比較することにより、最終呼び出し以降どのくらいの時間が経っているかが決定される。呼び出し間のインターディレイに対する、この値Ｉcは、古いしきい値Ｔｈnから減算され、本質的に、２の相当乗により除算されるように、差（Δ）は一定の値、例えば３位置だけ右にシフトされる。この結果は古いしきい値Ｔｈnから減算されて、新しいしきい値Ｔｈn+1を生成する。しきい値を調整するためのこのような公式の例は次のようになるだろう：
【数１】
2008541274.tif 000003
【００３９】
このような計算に基づいて、制御ロジック４５はレジスタ２５中のしきい値を調整する。呼び出し間の間隔に応答したこの処理は、しきい値の段階的な調整をひき起こす。非常に大きいインターディレイＩcはしきい値において大きな変化を生じさせ得るので、１つの読み出しがしきい値に必要以上に影響を及ぼすことができないように、差（Δ）を最大値（例えば、前のしきい値Ｔｈn）に飽和できる。このようにして、例えば、新しいしきい値を
【数２】
2008541274.tif 000004
【００４０】
の範囲内に常に保持することができる。Ｉcの非常に大きい値は、省電力化のためになるので、このようなケースにおいてＴｈn／２xだけしきい値を（増加するよりはむしろ）実際に減少することができ、この例の目的のために、Ｉcの非常に大きい値をＴｈn2xより大きいものとして規定することができる。さらに、しきい値の減少の限度として、最小のしきい値を使用できる。
【００４１】
機能ユニットがオンであり、別の呼び出しが受け取られるとき、最終呼び出し以降の時間が現在のしきい値Ｔｈnを経過していないことを、最初の例として仮定する。この例において、制御ロジック４５は機能ユニット２１を電源オンの状態に保持している。ユニットに対する新しい呼び出しが受け取られるとき、インターディレイＩcは現在のしきい値Ｔｈnより小さい。ＴｈnとＩcとの間の差は正のΔ値になるだろう。それ故に、新しいしきい値Ｔｈn+1は、（２xにより除算される）ｘ位置だけシフトされるΔの量だけ、古いしきい値Ｔｈnより減少する、または小さいだろう。別の言い方をすると、電力制御は十分に積極的にされておらず、それで電力制御は、将来ユニットを早く遮断（電力を節約）しようとして、しきい値をインクリメント的に減少させる。
【００４２】
最終呼び出し以降の時間が現在のしきい値を経過して、制御ロジック４５が機能ユニットの電源を切っていることを、第２の例として仮定する。ユニットが次に呼出されるとき、インターディレイＩcは現在のしきい値Ｔｈnより大きい。スラッシングがない場合、ＩpはＴｈnより大きいかまたは等しく、それでＩcは現在のしきい値Ｔｈnの少なくとも２倍である。差は負のΔ値になるだろう。それ故に、公式（１）中の新しいしきい値Ｔｈn+1は、（２xにより除算される）ｘ位置だけシフトされるΔの量だけ、古いしきい値Ｔｈnより増加するか、または大きいだろう。しかしながら、インターディレイＩcが特に大きい場合、Ｔｈn+1からＴｈn（１−１／２x）へ、例における新しいしきい値を電力制御は減少させるだろう。
【００４３】
制御ロジック４５はまた、レジスタ２５中のしきい値を調整して、スラッシングを最小化する。電源切断後、非常に早く機能ユニットの演算に対して新しい呼び出しが来る場合、スラッシングが発生し、そのため、例えば、電源切断により節約されるよりも多い電力を電源投入が消費し、および／または電源投入による遅延のために付加される機能停止が、性能に著しく影響を与える。問題のユニットの機能は電源が切られている場合、ユニットの機能が再度呼び出され、再度電源投入されるとき、ユニットの機能を使用可能にする時間が、電源切断タイムスタンプＴＳ（ＬＰＤ）と比較される。
【００４４】
図２の例において、制御ロジック４５が、除算器２１の演算に対する新しい呼び出しに応答して、除算器２１の電源投入をするとき、ロジックは、カウンタ３１中のカウント値と、レジスタ３５中のタイムスタンプおよびレジスタ２５中のしきい値の結合との比較を読み出す。便宜上、同一のしきい値がここで使用されるが、この調整アルゴリズムにおいて、異なる設定時間値を使用できる。最終の電源切断以降の測定時間間隔が非常に小さい（例えば、電源切断と電源投入との間の遅延の期間がしきい値より小さいかまたは等しい）場合、スラッシングに対する将来の可能性を減少させるように向けられる方法で、しきい値が調整される。この調整は将来の使用のためにしきい値を増加させて、例えば、古いしきい値の２倍にする。こうして、アンチスラッシング構成部品は、しきい値に関して多くの直接の効果を有するのに対し、微調整構成部品はいっそう薄い効果を有する。
【００４５】
不活動に基づいてプロセッサの機能要素の起動と動作停止とを制御する処理と、不活動の時間しきい値を調整する処理は、さまざまな方法で実現されてもよい。しかしながら、上で概説した動作にしたがって、処理のロジカルフローの例を考慮することは役に立つかもしれない。図３は、電力制御２３により実現することができるプロセスフローの例を図示するフローチャートである。
【００４６】
除算器２１が（Ｓ１において）すでに電力供給されているとき、除算器２１の演算に対する前の最終呼び出し以降のインターコールディレイＩcがステップＳ２において計算される。レジスタ３３と減算回路３７とを使用して、例えば、ステップＳ２は、Ｉc＝Ｃｏｕｎｔ−ＴＳ（ＬＣ）を計算する。ステップＳ３は、（比較器４１におけるような）現在のしきい値Ｔｈnに対する比較を伴う。最終呼び出し以降の不活動ディレイＩcが現在のしきい値Ｔｈnに合致しないまたは超えないことを制御論理４５が決定する場合、ステップＳ３における処理は、ステップＳ４に流れる。
【００４７】
ステップＳ４において、制御ロジック４５は、除算器２１の演算に対する呼び出しをチェックする。呼び出しがない場合、ステップＳ４における処理は、ステップＳ５に流れる。ステップＳ５において、カウンタはインクリメントされ、処理はステップＳ２に戻り、最終呼び出し以降のインターディレイに対する値を更新してＳ３において現在のしきい値に対してその遅延を再度チェックする。
【００４８】
論述目的のために、電力制御が除算器２１の演算に対する呼び出しを検出するまで、ステップＳ２からＳ５を通るループが継続することを、今仮定する。それ故に、ステップＳ４において、制御ロジック４５は除算器２１に対する呼び出しを検出して、プロセスはステップＳ４からステップＳ６に流れる。ステップＳ６において、図４のフローチャートに関して、後に論ずるように、制御ロジックはしきい値を調整するルーチンを実現する。注意すべきことは、ユニットは電源切断がされていないので、例におけるこの時点で、調整は将来の使用のためにインクリメント的にしきい値を減少させる。しきい値の調整後、制御２３が除算器２１に対する呼び出しを受け取る、または検出するサイクルにおいて、レジスタ３３中のタイムスタンプＴＳ（ＬＣ）をカウンタ３１中の現在の値に更新（ステップＳ７）することを処理は伴う。ステップＳ５は、再度カウンタをインクリメントし、処理はステップＳ２に戻り、除算器２１の機能に対する最終呼び出し以降のインターディレイＩcに基づいて、解析を再開する。
【００４９】
しきい値の現在の値Ｔｈnに等しいまたはこれより大きい、除算器２１の機能に対する最終呼び出し以降のインターディレイＩcの期間の満了前に、除算器２１の機能に対する新しい呼出しを制御ロジック４５が受け取る限り、ステップＳ２からＳ７を通るループは継続するだろう。しかしながら、最終呼び出し以降の遅延が現在のしきい値に到達することを今仮定する。それ故に、ステップＳ３において、制御ロジック４５は
【数３】
2008541274.tif 000005
【００５０】
を検出し、それはステップＳ３からＳ８に流れる処理を生じさせる。ステップＳ８において、例えば、以前に論じたように除算器２１に対して電源を切ることにより、制御ロジック４５は除算器２１をディスエーブルする。制御ロジック４５は次に、（Ｓ９において）レジスタ３５を起動して、除算器２１の最終の電源切断に対する新しいタイムスタンプ値ＴＳ（ＬＰＤ）として現在のカウント値を取り込む。
【００５１】
ステップＳ１０において、制御ロジックが除算器２１の機能に対する新しい呼び出しを受け取っているか、または検出しているかどうかを知るために制御ロジックが調べる。除算器２１の機能に対する新しい呼び出しを受け取っていない、または検出していない場合、処理はステップＳ１１に流れ、そこでカウンタはインクリメントされ、処理は再度ステップＳ１０に流れる。制御ロジック４５が除算器２１の機能に対する新しい呼び出しを検出するまで、ステップＳ１０とＳ１１は繰り返す。新しい呼び出しが検出されるまで、除算器２１はディスエーブルされたままであり、その結果電力を消費しない。
【００５２】
しかしながら、制御ロジック４５が除算器２１の機能に対する新しい呼び出しを検出するとき、処理はＳ１０からＳ１２へ流れる。Ｓ１２において、制御ロジック４５は、機能ユニット、すなわち我々の例における除算器２１の電源を投入する手続きを開始する。処理は次にしきい値を調整するステップＳ６に流れ、呼び出し間の時間の長さに依存して、しきい値を微調整するか、またはスラッシングを回避するためにしきい値を増加させる。ステップＳ７において、ロジック４５は、最も最終の呼び出しに対するタイムスタンプＴＳ（ＬＣ）にカウンタ３１中の現在の値を設定する。処理は次にステップＳ５を通じてステップＳ２に再度流れて、以前に論じた処理を再開する。
【００５３】
図３および先の段落中のそれらについての記述により示すように、機能ユニットの演算に対する呼び出しがあるたびに、制御ロジック４５は、ステップＳ６における手続きを開始してしきい値を調整する。上で概説した原理にしたがってしきい値を調整するＳ６における処理を、さまざまな方法で実現してもよい。しかしながら、図４のフローチャートに関して、上で概説した動作にしたがって処理のロジカルフローの例を考慮することは役に立つかもしれない。
【００５４】
ステップＳ６１において、除算器２１の最終の電源切断以降の間隔Ｉpが計算される。レジスタ３５および減算回路３９を使用して、例えば、ステップＳ６１は、Ｉp＝Ｃｏｕｎｔ−ＴＳ（ＬＰＤ）を計算する。ステップＳ６２において、この調整動作が除算器２１の電源投入の後に続いたものであるかどうかをロジック４５が決定する。電源投入の後に続いたものである場合、処理はＳ６２からＳ６３に流れる。（例えば、比較器４３におけるような）スラッシングを測定するために使用される設定値に対する、例えば、古いしきい値Ｔｈnに対する比較をステップＳ６３は伴う。最終の電源切断以降の間隔Ｉpが古いしきい値Ｔｈnより小さいことを制御ロジック４５が決定する場合、スラッシングの問題があり、そのためステップＳ６３における処理は、ステップＳ６４に流れる。
【００５５】
ステップＳ６４において、しきい値は増加されて、スラッシングを減少させる。Ｓ６４におけるこの調整は、例えば、古いしきい値の２倍に等しい、増加したしきい値（Ｔｈn+1＝２（Ｔｈn））を生成できる。それ故に、スラッシング条件を検出すると、電源切断のしきい値を２倍にして、将来のサイクルにおける除算器の早めの電源切断を防ぐことができる。
【００５６】
ステップＳ６２に戻ると、機能ユニットが新しい呼び出しに応答して、電源投入されなかった（前の最終呼び出し以降のしきい間隔が経過していなかった）場合、処理はＳ６５に流れるだろう。新しい呼び出しに応答して、電源投入があるが、最終の電源切断以降の間隔Ｉpが古いしきい値より大きいまたは等しかった場合、処理はまたＳ６５に到達する。（前の最終呼び出しが、前の最終の電源切断より前に起こっていたので）前の最終呼び出し以降の期間もしきい値より大きく、機能ユニットは、図３のプロセスフローを通るこのパス上のステップＳ１２において電源投入されたことを、これは意味する。どちらのケースにおいても、スラッシングの問題はないが、しきい値を微調整して、電力節約を最適化する必要があるかもしれない。
【００５７】
注意したように、Ｉcの非常に大きい値は、省電力化のためになる。この例において、Ｉcの非常に大きい値は、Ｔｈn2xより大きいとして規定され、ステップＳ６５において、ロジックはその規定値に対してインターディレイをチェックする。インターディレイＩcがＴｈn2xより大きい場合、処理はステップＳ６６に流れ、そこでしきい値はＴｈn／２xだけ減少される（古い２進値がｘ位置、例えば、１、２、３またはより大きい位置だけ左にシフトされる）。次に、処理はステップＳ６７に流れて、最小のしきい値に対して、減少したしきい値をチェックする。計算された新しいしきい値Ｔｈn+1が最小のしきい値Ｔｈminより小さい場合、ステップＳ６８が新しいしきい値に最小値を設定するように機能する。計算された新しいしきい値Ｔｈn+1が最小のしきい値Ｔｈminより小さくない場合、ステップＳ６６において計算された値に新しいしきい値を設定することにより、処理は調整ルーチンＳ６を抜ける。
【００５８】
ステップＳ６５の考慮に戻る。そこでは、インターディレイ間隔Ｉcが相対的に大きいかどうかが決定される。インターディレイ間隔Ｉcが相対的に大きくない場合、処理はステップＳ６９に流れる。そこで、除算器ユニット２１の演算に対する呼び出し間のインターディレイのための現在の値Ｉcが、古いしきい値Ｔｈnから減算され、本質的に、２の相等乗により除算されるように、差は、一定の値、例えば３位置（ｘ＝３）だけ右にシフトされる。この結果は古いしきい値Ｔｈnから減算されて、新しいしきい値Ｔｈn+1を生成する。上で論じたように、しきい値を調整するこの公式の例は次のようになるだろう：
【数４】
2008541274.tif 000006
【００５９】
非常に大きいインターディレイＩcはしきい値において大きな変化を生じさせるので、１つの読み出しがしきい値に必要以上に影響を及すことができないように、しきい値とインターディレイとの差（Δ）を最大値（例えば、前のしきい値Ｔｈn）に飽和できる。このようにして、例えば、限定ステップＳ７０およびＳ７１により表されるように、新しいしきい値を
【数５】
2008541274.tif 000007
【００６０】
の範囲内に常に保持することができる。
【００６１】
ステップＳ６６は、新しいしきい値と、古いしきい値の２倍とを比較する。ステップＳ６４において計算される新しいしきい値が古いしきい値の２倍より大きい場合、処理はステップＳ６４に流れて、古いしきい値の２倍を新しいしきい値に設定する。ステップＳ６５において計算される新しいしきい値が古いしきい値の２倍より小さいかまたは等しい（超えない）場合、処理はステップＳ６７に流れて、最小のしきい値に対して、微調整されたしきい値をチェックする。計算された新しいしきい値Ｔｈn+1が最小のしきい値Ｔｈminより小さい場合、ステップＳ６８が新しいしきい値に最小値を設定するように機能する。計算された新しいしきい値Ｔｈn+1が最小のしきい値Ｔｈminより小さくない場合、ステップＳ６９ないしＳ７０において計算された値に新しいしきい値を設定することにより、処理は調整ルーチンＳ６を抜ける。
【００６２】
図３の処理フローおよび図４の調整ルーチンは、一例として与えられたに過ぎない。他のルーチンおよび／または他のアルゴリズムを使用して、必要以上のスラッシングを回避しながら電力節約のための本教示を実現できることを、当業者は認識するだろう。
【００６３】
最良のモードおよび／または他の例であると考慮されるものを記述してきたが、それらについてさまざまな修正を実施してもよく、さまざまな形態および例においてここで開示した主な事項を実現してもよく、多数のアプリケーション中でその教示を適用してもよく、それらのいくつかをここで記述したに過ぎないことが理解される。本教示の真の範囲内に入るすべての応用、修正および変形を主張することが特許請求の範囲により意図される。
【図面の簡単な説明】
【００６４】
単なる一例として、限定目的ではなく、本概念にしたがって、描かれている図は１つ以上の実施を描写する。図において、同様の参照数字は、同一または類似の要素を参照する。
【図１】図１は、プロセッサの機能ユニットの調整可能な制御を伴う、パイプライン処理されたプロセッサの単純化したブロック図である。
【図２】図２は、調整可能な時間しきい値に基づいた、除算器の起動を制御するための、電力制御の例の機能ブロック図である。
【図３】図３は、ユニットの活動および調整可能な時間しきい値に関するタイミングに基づいた、プロセッサの機能ユニットを起動および動作停止する処理の簡単な例のフローチャートである。
【図４】図４は、しきい値を調整して、スラッシングを制御しながら電力節約を最適化するために使用されてもよい処理の例のフローチャートである。
【図１】
2008541274.tif 000008
【図２】
2008541274.tif 000009
【図３】
2008541274.tif 000010
【図４】
2008541274.tif 000011
【国際調査報告】
2008541274.tif 000012