(57)【要約】【課題】ポータブルコンピュータのＣＰＵの動的動作特性を検出して活動レベルを予測し、電力節約や温度管理を動的に行う方法と装置を提供する。【解決手段】ＣＰＵが第１クロック速度で動作中に（１３４）少なくとも１つの動的ＣＰＵ動作特性を検出する（１４０）方法と回路を含む。この装置（１３０）は、少なくとも１つの検出されたＣＰＵの動的動作特性が前記少なくとも１つの動的動作特性に関連する所定の設定点に対して所定の関係を確立する（１４０）ことにより、設定点割り込み条件が存在するかどうかを決定する（１４０）。設定点割り込み条件が存在する場合は、第１クロック速度に対してクロック速度を制御する（１４４）。設定点割り込み条件が存在しない場合は、割り込み条件を決定してクロック速度を制御する上記ステップを繰り返す。またこの方法と装置（１３０）はＣＰＵが計算指向状態にあるかどうかを決定する（１４２）。【選択図】図５
2007128556.tif 000002
【特許請求の範囲】
【請求項１】
検出されたプロセッサ動作特性を制御する方法であって、
（ａ）  第１のクロック速度で動作するプロセッサの少なくとも１つの動的動作特性を検出し、
（ｂ）  前記少なくとも１つの動的動作特性に関連する所定の設定点に対して所定の関係を前記少なくとも１つの動的動作特性が確立することにより、設定点割り込み条件が存在することを決定し、
（ｃ）  前記設定点割り込み条件が存在する場合は、前記第１のクロック速度を変更し、
（ｄ）  前記設定点割り込み条件が存在しない場合は、前記プロセッサが計算束縛状態にあるかを決定する
ステップを含む、方法。
【請求項２】
請求項１に記載の方法において、前記プロセッサが計算束縛状態にある場合は、前記計算束縛状態中に前記割り込み条件が存在するかをさらに決定する、方法。
【請求項３】
請求項１に記載の方法において、前記プロセッサが計算束縛状態にある場合は、前記少なくとも１つの動的動作特性が前記計算束縛状態中の前記割り込み条件内に存在するかを決定し、前記計算束縛状態中に前記割り込み条件が存在する場合は、前記割り込み条件を変更する、方法。
【請求項４】
請求項１に記載の方法において、前記プロセッサが計算束縛状態にある場合は、前記計算束縛状態中に前記プロセッサが実行すべき計算束縛命令の量を決定することにより前記計算束縛状態の期間を決定する、方法。
【請求項５】
請求項１に記載の方法において、前記プロセッサが計算束縛状態にある場合は、前記計算束縛状態中に前記プロセッサが実行すべき計算束縛命令の量を決定することにより前記計算束縛状態の期間を決定し、前記計算束縛状態中に前記割り込み条件が存在する場合は前記割り込み条件を変更する、方法。
【請求項６】
請求項１に記載の方法において、前記プロセッサが計算束縛状態にある場合は、前記計算束縛状態の期間を決定し、さらに前記計算束縛状態中の前記割り込み条件の存在を避けるために前記第１のクロック速度を変更する、方法。
【請求項７】
検出されたプロセッサ動作特性を制御する装置であって、
（ａ）  第１のクロック速度で動作するプロセッサの少なくとも１つの動的動作特性を検出する検出回路と、
（ｂ）  前記少なくとも１つの動的動作特性に関連する所定の設定点に対して所定の関係を前記少なくとも１つの動的動作特性が確立することにより、設定点割り込み条件が存在することを決定するために前記プロセッサ上で動作する設定点命令と、
（ｃ）  前記設定点割り込み条件が存在する場合に、前記第１のクロック速度を変更するための制御命令と、
（ｄ）  前記プロセッサが計算束縛状態にある場合に、前記プロセッサが計算束縛状態にあるかを決定するための計算束縛決定命令と
を含む、装置。
【請求項８】
請求項７に記載の装置において、前記プロセッサが計算束縛状態にある場合に、前記計算束縛状態中に前記割り込み条件が存在するかを前記計算束縛決定命令がさらに決定する、装置。
【請求項９】
請求項７に記載の装置において、前記設定点命令は、前記少なくとも１つの動的動作特性が前記計算束縛状態中の前記割り込み条件内に存在するかを決定する命令をさらに含み、前記計算束縛状態中に前記割り込み条件が存在する場合に前記割り込み条件を変更するための変更命令をさらに含む、装置。
【請求項１０】
請求項７に記載の装置において、前記プロセッサが計算束縛状態にある場合に、前記計算束縛状態中に前記プロセッサが実行すべき計算束縛命令の量を決定することにより前記計算束縛状態の期間を決定する、装置。
【請求項１１】
請求項７に記載の装置において、前記計算束縛決定命令は、前記計算束縛状態中に前記プロセッサが実行すべき計算束縛命令の量を決定することにより前記計算束縛状態の期間をさらに決定し、さらに、前記計算束縛状態中に前記割り込み条件が存在する場合に前記割り込み条件を変更する、装置。
【請求項１２】
請求項７に記載の装置において、前記プロセッサが計算束縛状態にある場合に、前記計算束縛決定命令は、前記計算束縛状態の期間をさらに決定し、さらに、前記計算束縛状態中の前記割り込み条件の存在を避けるために前記第１のクロック速度を変更する、装置。
【請求項１３】
請求項１〜６のいずれかに記載の方法において、前記プロセッサは中央処理ユニット（ＣＰＵ）である、方法。
【請求項１４】
請求項７〜１２のいずれかに記載の装置において、前記プロセッサは中央処理ユニット（ＣＰＵ）である、装置。
【請求項１５】
請求項１〜６のいずれかに記載の方法において、前記プロセッサは計算装置内にある、方法。
【請求項１６】
請求項１〜６のいずれかに記載の方法において、前記ステップ（ａ）〜（ｄ）は計算装置内で発生する、方法。
【請求項１７】
請求項７〜１２のいずれかに記載の装置を含むシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は実時間のコンピュータ中央処理装置（ＣＰＵ）制御に関し、より詳しくは、中央処理装置（ＣＰＵ）内の実時間活動レベルから生じるＣＰＵ温度や温度の変化や電力消費などの動的動作特性を検出し、これに基づいてＣＰＵのクロック速度を調整する装置と方法に関する。
【背景技術】
【０００２】
パーソナルコンピュータ産業の初期の発展段階では、移動可能なポータブルコンピュータは非常に人気があった。初期のポータブルコンピュータは大きな電源を用いており、実際は小型のデスクトップパーソナルコンピュータであった。しかし現在のポータブルコンピュータはデスクトップパーソナルコンピュータにくらべて小型で軽く、しかもユーザはデスクトップコンピュータと同じソフトウエアを用いることができる。
【０００３】
第１世代の「ポータブル」コンピュータは交流電力だけで動作した。より新しい次世代のパーソナルコンピュータは電池を使っているので真の意味でポータブルである。このように可搬性が向上したのは、ディスプレイ技術や、ディスクの記憶容量や、要素の重量および容積技術が発達したためである。
【０００４】
このような発達によってポータブルコンピュータの大きさは減少したが、動作上の限界はまだ存在する。たとえば、現在のポータブルコンピュータが用いるソフトウエアはデスクトップパーソナルコンピュータが用いるものと一般に同じである。したがって、電池で動作するポータブルコンピュータに特有の機能的限界や考慮すべき点があるにもかかわらず、ポータブルコンピュータはデスクトップコンピュータの機能をすべて備えなければならない。ポータブルコンピュータは一方ではデスクトップコンピュータと同じデータ流れ速度を持つが、他方では電力供給が短時間に限られ、またデスクトップコンピュータにくらべて熱放散能力が限られている。現在のポータブルコンピュータは用いるソフトウエアの異なるプラットフォームに対して特別の対応策を持たない。オペレーティングシステム（たとえばＭＳ−ＤＯＳ）や、基本入出力システム（ＢＩＯＳ）ソフトウエアや、第三者の応用ソフトウエアは、ポータブルコンピュータでもデスクトップコンピュータでも実質的に同じである。これは特に、ＣＰＵの異なる動的動作特性をソフトウエアシステムが処理する方法において当てはまる。
【０００５】
ソフトウエア技術者やプログラマがより高機能のソフトウエアシステムを開発するに従って、デスクトップコンピュータはシステム性能の実質的にすべての分野において性能を高めることができる。演算能力を高めたＣＰＵの採用から始まってメモリ容量の増加やディスクドライブの高速高性能化まで、デスクトップコンピュータの動作能力に対する要求は急速に高まっている。ポータブルコンピュータのメーカーは、このような要求に何とかついてゆくしかない。
【０００６】
しかし現在まで、ポータブルコンピュータは交流電力でだけか、または大きくて重い電池で動作している。デスクトップコンピュータや新しいソフトウエアの性能要求に追従するため、ポータブルコンピュータの中には高価な要素を用いて必要電力を削減しているものがある。それでも、コンピュータ用の重い電池は長時間にわたって電力を供給することができない。つまり従来のポータブルコンピュータのユーザは、第三者の応用ソフトウエアシステムが期待する性能を出すためには、電源配線から得た交流電流を用いるか、電池で短時間だけ動作するかしかない。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
電力を節約する、すなわち電池で長く動作できるポータブルコンピュータを設計するため、ユーザがコンピュータを使用していない間はポータブルコンピュータの電力消費を減らすようにしたポータブルコンピュータ電源方式もある。またある設計では、キーボードを用いていないときはコンピュータのディスプレイを消すことにより電力を節約する。このような方式はたしかに電力を節約するが、コンピュータの動作を妨げるので実用的でないか、またはコンピュータの中で最大の電力消費が起こったときに電力を節約することができない。これまでのポータブルコンピュータの電力節約方式は、意味のある仕事にユーザがコンピュータを使っているときは電力を節約することができない。
【０００８】
しかしポータブルコンピュータの電力供給方式の問題はこれだけではない。現在のポータブルコンピュータシステムには、ＣＰＵの動的動作特性に応えるような知的なシステムがない。ＣＰＵの動的動作特性は、ＣＰＵ温度や、温度の変化や、電力消費などの広範囲の特性を含む。電池の電力の節約や最適な使用を管理する方法や装置は存在しない。ＣＰＵが複雑な命令を計算するときに、高速で動作する高密度の電子回路の温度を適切に監視して管理する方法や装置は存在しない。さらに、ＣＰＵを入出力回路から実際上切り離したときに、ＣＰＵの動的動作特性から望ましくない影響が起こらないようにする方法も装置も存在しない。起こり得る望ましくない状態または影響とは、ＣＰＵが過度に電力を消費することや、入出力機能を含まない大量の命令をＣＰＵが実行するときに過大な温度に達することなどである。
【課題を解決するための手段】
【０００９】
ＣＰＵ内の活動レベルを予測し、この予測を用いてＣＰＵの動的動作特性を自動的に管理する装置と方法が必要である。
【００１０】
ユーザが自動的な活動レベルの予測を修正し、この修正した予測を用いてＣＰＵの動的動作特性を自動的に管理することができる、フィードバックの方法と装置が必要である。
【００１１】
ＣＰＵの動的動作特性の管理に応じてクロック速度を実時間で減少させたり回復させたりしてＣＰＵを休止の期間から完全な処理速度に戻し、しかもソフトウエアプログラムやユーザには透明であるような装置と方法がさらに必要である。
【００１２】
さらに、動的動作特性に基づいて、ＣＰＵの活動レベルに従ってＣＰＵを休止させてよいまたは休止させなければならないかどうかを決定し、この決定に従ってハードウエアセレクタを起動するような装置と方法が必要である。ＣＰＵを休止させすなわち休眠させてよい場合は、ハードウエアセレクタは休眠クロックレベルの振動を与える。ＣＰＵを活動させなければならない場合は、ハードウエアセレクタは高速クロックレベルの振動を与える。
【００１３】
この発明は、ＣＰＵの活動状態だけでなく、オペレータと動作中の応用ソフトウエアプログラムの活動を調べる。この発明はこの活動を実時間でサンプリングし、ＣＰＵの性能レベルを調整して、電力節約や、コンピュータ電力および温度条件や、また他の任意の適当な所望の動的動作特性を管理する。これらの調整はＣＰＵサイクル内で行うので、ユーザは性能や他のソフトウエアプログラムの動作が変わったことには気が付かない。
【００１４】
この発明の好ましい実施態様は検出したＣＰＵの動的動作特性を制御する方法と装置を与えるもので、少なくとも１台のＣＰＵの動的動作特性を検出するステップを含む。この方法と装置は、動作特性を検出するときにＣＰＵのクロック速度を検出する。少なくとも１つの動的動作特性が前記少なくとも１つの動的動作特性に関連する所定の設定点に対して所定の関係を確立することにより設定点割り込み条件が存在することを決定することが、この発明の方法の次のステップである。設定点割り込み条件が存在する場合は、この方法と装置はＣＰＵのクロック速度を制御して所定の設定点を調整するか、または別の方法でＣＰＵの動的動作特性を管理する。他方、設定点割り込み条件が存在しない場合は、この方法と装置は上記の決定および制御のステップを繰り返し、ＣＰＵの動的動作特性を効果的に管理する。
【００１５】
したがってオペレーティングシステム／ＢＩＯＳの第三者ソフトウエアのオペレータがコンピュータを使用していないときは、この発明は電力を節約するために、必要になるまでＣＰＵを急速に止めるかまたは遅くして、動作特性をより低い状態に移行させる。必要になると、このシステムは性能が変わったことに気付かれずにＣＰＵ動作を急速に完全に回復する。「遅い」モードから完全な動作への切り替えを行うのにはユーザが要求する必要がなく、またコンピュータが「作動可能」状態に戻るのを待っているときにコンピュータの動作が遅れることはない。
【００１６】
この発明の技術的利点は、ＣＰＵの動作特性を予見すなわち予測できることである。この発明は、命令の数を数えてその種類を決定することにより、入出力がほとんどない計算指向モードにＣＰＵが入るかどうかを決定するので、ＣＰＵの遅れやＣＰＵへの入出力は起こらない。この予見により、関連する所定の設定点に１つ以上のＣＰＵの動的動作特性が達するかどうかを、計算指向モード中に決定することができる。達するようであれば、この発明はクロック速度を調整したり、所定の設定点を修正したり、またはその他のＣＰＵ動作の変更を行うことにより、特定の所定の設定点に達して悪い結果が生じることがないようにする。
【００１７】
この発明のさらに別の技術的利点は、単一ＣＰＵコンピュータの場合だけでなく、多数のまたは並列のＣＰＵコンピュータシステムの場合も、ＣＰＵの動的動作特性の変化に対応できることである。実際に、この発明により１組の並列ＣＰＵを構成して、ＣＰＵの動的動作特性に関して起こる割り込み条件に応じて１台以上のＣＰＵを調整することにより、すべてのＣＰＵの間で所望の平均クロック速度を維持することができる。
【００１８】
以下の説明は、この発明の電力節約に関する。しかしこの発明は電力節約または消費の他に、他のＣＰＵの動的動作特性を制御する方法と装置をさらに含む。
【００１９】
任意のシステムのコンピュータ活動の期間を調べる場合、ＣＰＵおよび関連する要素には利用率がある。たとえばユーザがキーボードからデータを入力する場合は、キーを打つ間の時間はＣＰＵサイクルに比べて非常に長い。この間にコンピュータは、報告書を印刷するなど多くのことを行うことができる。報告書を印刷している間でも、クロック／カレンダ表示の背景を更新するなど別の動作を行う時間がある。それでもなお、ＣＰＵが用いられていない空き時間がほとんど常にある。この発明はこの空き時間にＣＰＵを止めまたは遅くして実時間の電力節約を行い、コンピュータの電池の寿命を延ばす方法を提供する。
【００２０】
この発明の好ましい実施態様では、ＭＳ−ＤＯＳだけでなく、ＯＳ／２、ＵＮＩＸ（登録商標）、Ｗｉｎｄｏｗｓ（登録商標）などのオペレーティングシステムやアップルコンピュータのオペレーティングシステムの下でのＣＰＵの動的動作特性を制御するためには、ハードウエアとソフトウエアの組み合わせを必要とする。この実施態様は任意のシステムで動作するので、実現する際にはシステム毎にわずかな違いはあるものの、この発明の範囲はＭＳ−ＤＯＳまたはその他の特定のオペレーティングシステムの下で動作するコンピュータシステムに限定されないことに注意していただきたい。
【００２１】
この発明の好ましい実施態様では、コンピュータシステムの要素を遅くしまたは停止させることにより電力消費を減らし、動作温度を下げ、またはその他の方法で動的動作特性を制御する。もちろん制御または変化の量はシステムによって異なってよい。したがってこの実施態様では、クロックを止めれば（しかし実際にはクロックを止められないＣＰＵもある）クロックを遅くするだけより電力の消費を減らすことができる。
【００２２】
一般に、毎秒のＣＰＵ動作（すなわち命令）の数はＣＰＵクロックにほぼ比例すると考えてよい。
命令／秒＝命令／サイクル＊サイクル／秒                （１）
【００２３】
簡単のために、同じ命令を繰り返し実行して毎秒の命令が一定であると仮定すると、上の関係は次のようになる。
Ｆｑ＝Ｋ１＊  Ｃｌｋ                                      （２）
ただし、Ｆｑは毎秒の命令数、Ｋ１はサイクル毎の命令の単位を持つ値、Ｃｌｋは毎秒のサイクル数を表す。したがって大まかに言えば、実行速度はＣＰＵクロックの周波数と共に増加する。
【００２４】
任意の瞬間にコンピュータが使う電力量もＣＰＵクロックの周波数に、したがってＣＰＵの実行速度に関係する。一般にこの関係は次の式で表される。
Ｐ＝Ｋ２＋（Ｋ３＊  Ｃｌｋ）                              （３）
ただし、Ｐは電力（ワット）、Ｋ２はワットの単位を持つ定数、Ｋ３はワット秒／サイクルの数を表す定数、Ｃｌｋは毎秒のＣＰＵクロックのサイクル、である。式（３）から、ＣＰＵクロック周波数が増加すると所定の時刻にＣＰＵが消費する電力量も増加することが分かる。
【００２５】
所定の期間Ｔをｎ個の間隔に分けて、各間隔中の電力Ｐが一定になるようにすることができる。また全期間中にＣＰＵが消費するエネルギーの量Ｅは次式で表される。
Ｅ＝Ｐ（１）ΔＴ１＋Ｐ（２）ΔＴ２＋．．．＋Ｐ（ｎ）ΔＴＮ    （４）
さらに、ＣＰＵクロックＣｌｋは「オン」か「オフ」の２つの状態だけと仮定する。ここで「オン」状態はＣＰＵが動作する最大周波数でのＣＰＵクロックの状態を表し、「オフ」状態は最小周波数でのクロックの状態を表す。この最小クロック速度は、自分のクロックを止めることができるＣＰＵではゼロである。
【００２６】
ＣＰＵクロックが常に「オン」という条件では前式の各Ｐ（ｉ）は等しく、全エネルギーは
Ｅ（ｍａｘ）＝Ｐ（オン）＊（ΔＴ１＋ΔＴ２＋．．．＋ΔＴＮ）
＝Ｐ（オン）＊Ｔ                              （５）
である。ただし、Ｐ（オン）はクロックが「オン」状態の時に消費する電力を表し、Ｐ（オフ）はクロックが「オフ」のときに消費する電力を表す。これは、ＣＰＵの動的動作特性を制御しない場合の、コンピュータの最大電力消費を表す。間隔１から４の一部でＣＰＵクロックが「オフ」の場合は、各間隔は２つの電力レベルを含む。クロックが「オン」の時間間隔をすべて合計してＴ（オン）とし、「オフ」の間隔を合計してＴ（オフ）とすると、次式が得られる。
Ｔ＝Ｔ（オン）＋Ｔ（オフ）                                  （６）
【００２７】
ところで、ＣＰＵが期間Ｔの間に使うエネルギーは次式のようになる。
Ｅ＝〔Ｐ（オン）＊Ｔ（オン）〕＋〔Ｐ（オフ）＊Ｔ（オフ）〕  （７）
【００２８】
これらの条件の下で、ＣＰＵが消費する全エネルギーは時間間隔Ｔ（オフ）を多くすることにより減少させることができる。したがってクロックが「オフ」状態にある期間を制御することにより、この実施態様はＣＰＵが使うエネルギーの量を減らす。期間Ｔ中のＴ（オフ）の期間を多数の間隔に分けると、各間隔の幅がゼロに近付くに従ってエネルギー消費は最大値になることがこの実施態様から分かる。逆に、Ｔ（オフ）の間隔の幅を大きくするとエネルギー消費は減少する。
【実施例】
【００２９】
「オフ」の間隔とＣＰＵが通常休止している期間とを一致させると、この実施態様は性能が低下したことをユーザに気付かれずに全エネルギー消費をＥ（最大）状態から減少させて、コンピュータシステムを動作させることができる。Ｔ（オフ）間隔とＣＰＵ休止期間とを一致させるために、この実施態様は、閉ループ、たとえば図１に示す閉ループ１０、を用いてＣＰＵ活動レベルの幅Ｔ（オフ）間隔を決定する。図１ではＣＰＵ活動レベルをステップ１２で決定する。このレベルが直前の決定より増加している場合は、判断１４により流れ図はステップ１６に進み、この発明はＴ（オフ）間隔を減少させる。ステップ１６から流れはステップ１２に進んで、ＣＰＵ活動レベルを決定する。他方、ＣＰＵ活動レベルが直前の決定より減少している場合は、この発明はステップ１８に示すようにＴ（オフ）間隔を増加させ、流れはステップ１２に進んで再びＣＰＵ活動レベルを決定する。このようにして、閉ループ１０は絶えずＴ（オフ）間隔を調整して、ＣＰＵ活動レベルを合わせる。
【００３０】
どのオペレーティングシステムにも２つの重要な論理の要点がある。すなわち、（１）オペレーティングシステム内のアイドルすなわち「何もしない」ループと（２）通常、応用ソフトウエアが必要とするサービスに利用できるオペレーティングシステム要求チャンネルである。これらの論理の要点と調和する論理を用いることにより、この実施態様は応用ソフトウエアが行うまたは将来行う予定の活動要求の種類を評価することができる。この種の情報を持っているので、この実施態様はフィードバックと制御を行ってＣＰＵの動的動作特性を管理することができる。たとえば活動要求の種類が分かると、電力節約を開始し、スライス期間の決定を開始することができる。スライス期間は時間軸のＴ（オン）対Ｔ（オフ）の数を活動レベルによって計算したものである。
【００３１】
この実施態様では、ＣＰＵの活動レベルを決定するのに１つの仮定を行う。この実施態様が行う仮定は、サービスを必要とするソフトウエアプログラムは通常さらに別のサービスを必要とすることと、サービス要求の間の期間を用いて、コンピュータ上を走って電力などのＣＰＵの動的動作特性を制御する任意の応用ソフトウエアの活動レベルを決定したり節約のためのスライス数を決めたりしてよいことである。
【００３２】
たとえば、電力節約スライス中に、すなわちＴ（オフ）中に、この実施態様がＣＰＵに割り込みを行うと、ＣＰＵは割り込みソフトウエアに向かう前に割り込みを受けたルーチンの状態を保存する。電力節約ソフトウエアはこの節約スライス中に動作していたので、この実施態様は活動的な電力節約ループに制御を返す。前記活動的な電力節約ループはＣＰＵクロックを監視するだけであって、電力節約モードから出る条件が存在することを決定してＴ（オフ）状態からＴ（オン）状態に出る。図１に関して上に説明したように、処理の流れは監視した活動レベルに従って次の電力節約状態の間隔を調整する。ある実現ではハードウエア論理によってＴ（オフ）からの自動的な出口を作り、電力節約ループから自動的に出て、Ｔ（オン）間隔中にＣＰＵ命令を実行する。
【００３３】
図２から図４は、この実施態様の活動的な電力モニタ機能を示す。動作を説明すると、ＣＰＵのリードオンリーメモリ（ＲＯＭ）が記憶するプログラムから、またはランダムアクセスメモリ（ＲＡＭ）内にプログラムを記憶する外部装置から、ＣＰＵは活動的な電力モニタ機能２０をインストールする。ＣＰＵが活動的な電力モニタ機能２０をロードすると、活動的な電力モニタ機能２０の処理の流れは初期化ステップ２２に進んで、システム割り込みの初期化や、ユーザ構成の設定や、システム／応用の特定の初期化のステップを行う。アイドルすなわち「何もしない」機能のためのハードウエアまたはソフトウエア割り込みが発生すると、アイドル分岐２４を実行する。これについては図３ａに詳細に示す。アイドルすなわち「何もしない」ループ（すなわち計画的な休止状態）に入るＣＰＵはこの種類の割り込みを発生する。オペレーティングシステムや、入出力サービス要求や、応用プログラムや、内部オペレーティングシステム機能によって起こるソフトウエアまたはハードウエア割り込みが発生すると、流れ図の活動分岐２６を実行する。これについては図４に詳細に示す。
【００３４】
プログラムはたとえばディスク入出力機能や、読み出しや、印刷や、ロードや、その他のサービスの要求であってよい。選択した分岐が何であっても、復帰ベクトル２８は処理の流れを最終的にＣＰＵのオペレーティングシステムに戻す。好ましい実施態様は、ＣＰＵが活動的な電力モニタ機能２０をＲＯＭ内のプログラムによりロードする場合は１度だけ、またＣＰＵがモニタ機能２０を外部の装置のＲＡＭからロードする場合はパワーアップ中は毎回、初期化分岐（図２に詳細に示す）を実行する。活動的な電力モニタ機能２０の初期化分岐２２が完全にモニタ機能を行った後、処理の流れはＣＰＵ活動の種類に従ってアイドル分岐２４か活動分岐２６に分岐する。オペレーティングシステムが電力節約モードに入ると、ＣＰＵ活動の種類に従ってアイドル分岐２４か活動分岐２６を選択する。すなわち、計画的な休止中の電力節約ではアイドル分岐２４を選択し、ＣＰＵ活動中の電力節約では活動分岐２６を選択する。
【００３５】
さらに図２の初期化分岐２２を詳細に見ると、すべてのシステム割り込みと変数を初期化した後、処理の流れはステップ３０で、ＰＯＷＥＲ＿ＬＥＶＥＬパラメータをＤＥＦＡＵＬＴ＿ＬＥＶＥＬに等しく設定する。ＰＯＷＥＲ＿ＬＥＶＥＬの入力をユーザが制御するオペレーティングシステムでは、ステップ３２でプログラムはＵＳＥＲ＿ＬＥＶＥＬパラメータをすでに選択したかどうか調べる。ＵＳＥＲ＿ＬＥＶＥＬパラメータがゼロより小さいかまたはＭＡＸＩＭＵＭ＿ＬＥＶＥＬより大きい場合は、システムはＤＥＦＡＵＬＴ＿ＬＥＶＥＬパラメータ値を用いる。そうでない場合は、初期化分岐２２はステップ３４に進んで、ＰＯＷＥＲ＿ＬＥＶＥＬパラメータ値をＵＳＥＲ＿ＬＥＶＥＬパラメータに等しく設定する。
【００３６】
この発明のこの実施態様では、初期化分岐２２はステップ３６で変数ＩＤＬＥ＿ＴＩＣＫをゼロに、変数ＡＣＴＩＶＩＴＹ＿ＴＩＣＫをゼロに設定する。ＭＳ／ＤＯＳを用いる場合は、ＩＤＬＥ＿ＴＩＣＫ変数は「何もしない」ループ内の割り込みの数である。ＡＣＴＩＶＩＴＹ＿ＴＩＣＫ変数は、活動割り込みによる割り込みの数を表す。この割り込みの数はＣＰＵ活動レベルを決定する。チックのカウントは次の割り込みのデルタ時間ΔＴｉを表す。ＩＤＬＥ＿ＴＩＣＫは、ソフトウエア割り込みが起こってこの期間に上書きするのでなければ、チックの間の一定デルタ時間ΔＴｉである。すなわち、ソフトウエア割り込みは割り込みの間のデルタ時間を再プログラムすることができる。
【００３７】
ＩＤＬＥ＿ＴＩＣＫ変数とＡＣＴＩＶＩＴＹ＿ＴＩＣＫ変数をゼロに設定した後で、初期化分岐２２は設定ステップ３８に進み、ここで初期化分岐２２はシステムに特有の詳細を用いて応用に特有の構成の微同調を行い、設定ステップ３８で活動的な電力モニタ機能２０を初期化する。次に初期化分岐２２はステップ４０で割り込み入出力にハードウエアへの命令を準備する。これは次の割り込みでそのハードウエアが制御を受け持ってよいことを示す。次に初期化分岐２２は復帰ベクトル２８を経て、オペレーティングシステムに、または活動的な電力モニタ２０を呼んだ元の機能に出る。
【００３８】
図３ａは、活動的な電力モニタ機能２０のアイドル分岐２４を詳細に示す。ＣＰＵの計画的な休止期間に応じて、活動的な電力モニタ機能２０は、アイドル分岐２４に入ることができるかどうか知るためにまず活動割り込みＡが現在使用中かどうか決定する。判断４２でパラメータＢＵＳＹ＿Ａが再入フラグＢＵＳＹ＿ＦＬＡＧの値に等しい場合は、現在ＣＰＵは使用中であって休眠にはできないことを意味する。したがって活動的な電力モニタ機能２０はすぐ復帰Ｉステップ４４に進んでルーチンから出る。復帰Ｉステップ４４は、前のオペレーティングシステムのアイドルベクトル割り込みに戻って通常の処理を行うための間接ベクトルである。ＣＰＵは、活動的な電力モニタ機能２０に入る前にこの間接ベクトルを記憶する。言い換えると、復帰Ｉステップ４４によりすぐ前の連鎖ベクトルに割り込み復帰する。
【００３９】
判断４２でＢＵＳＹ＿Ａ割り込みフラグが使用中でないと決定した場合は、活動的な電力モニタ機能２０はステップ４６で、ＢＵＳＹ＿ＩＤＬＥ割り込みフラグがＢＵＳＹ＿ＦＬＡＧに等しいかどうか調べる。等しければ、活動的な電力モニタ機能はすでにアイドル分岐２４にあることを示し、したがってＣＰＵ割り込みがあってはならない。ＢＵＳＹ＿ＩがＢＵＳＹ＿ＦＬＡＧに等しい場合は、アイドル分岐２４の処理の流れはステップ４４に進む。
【００４０】
しかしＢＵＳＹ＿Ａ再入フラグもＢＵＳＹ＿Ｉ再入フラグもセットされていない場合は、再入保護のために、ステップ４８でアイドル分岐２４はＢＵＳＹ＿Ｉフラグをセットする。すなわちＢＵＳＹ＿ＩをＢＵＳＹ＿ＦＬＡＧと同じ値にする。ステップ５０で、ＩＤＬＥ＿ＴＩＣＫ変数を１だけ増やす。ＩＤＬＥ＿ＴＩＣＫ変数はあるＴ（オフ）間隔の前のＴ（オン）の数である。アイドル割り込みおよび設定割り込みの数とＣＰＵ活動レベルによりＩＤＬＥ＿ＴＩＣＫの値が決まる。ＩＤＬＥ＿ＴＩＣＫ変数を１だけ増やして事象を平滑化する。これにより、限界（ｃｒｉｔｉｃａｌ）入出力活動は平滑化を制御することができる。
【００４１】
ステップ５２で、活動的な電力モニタ機能２０はＩＤＬＥ＿ＴＩＣＫ変数が所定の一定値ＩＤＬＥ＿ＭＡＸＴＩＣＫＳに等しいかどうか調べる。ＩＤＬＥ＿ＭＡＸＴＩＣＫＳは初期化分岐２２の設定ステップ３８で初期化する定数の１つで、所定のＣＰＵでは一定である。この実施態様では、一定のパラメータＩＤＬＥ＿ＭＡＸＴＩＣＫＳにより活動レベルの自己同調ができる。変数ＩＤＬＥ＿ＴＩＣＫが定数ＩＤＬＥ＿ＭＡＸＴＩＣＫＳに等しくない場合は、アイドル分岐２４はステップ５４でＢＵＳＹ＿Ｉフラグをクリアし、復帰Ｉ間接ベクトル４４に進んで処理の流れから出る。しかしＩＤＬＥ＿ＴＩＣＫ変数がＩＤＬＥ＿ＭＡＸＴＩＣＫＳに等しい場合は、ステップ５６でＩＤＬＥ＿ＴＩＣＫ変数をＩＤＬＥ＿ＳＴＡＲＴ＿ＴＩＣＫＳ定数（ゼロまたは非ゼロ）に等しくする。
【００４２】
一般に、特定のＣＰＵがそのクロックを停止してしかも正しく機能することができる場合は、ＩＤＬＥ＿ＳＴＡＲＴ＿ＴＩＣＫＳはゼロである。そうでない場合は、ＩＤＬＥ＿ＳＴＡＲＴ＿ＴＩＣＫＳは所定のＣＰＵに適した所定の値を取る。このステップは、活動的な電力モニタ機能２０が残りの休眠機能を何度実行してよいかを指定することにより、この実施態様の自己同調の態様を決定する。ＩＤＬＥ＿ＳＴＡＲＴ＿ＴＩＣＫＳをＩＤＬＥ＿ＭＡＸＴＩＣＫＳから１を引いた値に等しく設定することにより、この実施態様は連続的なＴ（オフ）間隔を得る。判断５８で、アイドル分岐２４はＰＯＷＥＲ＿ＬＥＶＥＬパラメータのレベルを調べる。ＰＯＷＥＲ＿ＬＥＶＥＬパラメータがゼロの場合は、アイドル分岐２４はステップ５４でＢＵＳＹ＿Ｉフラグをクリアし、復帰Ｉ間接ベクトル４４に進んで、制御をオペレーティングシステムに返す。したがって、オペレーティングシステムは活動的な電力モニタ機能２０に入る前に行っていた仕事を続けてよい。
【００４３】
しかし、判断５８でＰＯＷＥＲ＿ＬＥＶＥＬパラメータの値がゼロでない場合は、アイドル分岐２４は割り込みマスクがあるかどうか決定する。システム／応用ソフトウエアはＩＮＴＥＲＲＵＰＴ＿ＭＡＳＫ変数を設定して、活動的な電力モニタ機能２０に割り込みを行ってよいかどうかを決定する。判断６０で割り込みマスクがＮＯＴ＿ＡＶＡＩＬＡＢＬＥと決定した場合は、アイドル分岐２４はＢＵＳＹ＿Ｉ再入フラグをクリアして制御をオペレーティングシステムに返し、ＣＰＵは活動的な電力モニタ機能２０に入る前に実行していた仕事を続ける。オペレーティングシステムも応用ソフトウエアも、割り込みマスクをＮＯＴ＿ＡＶＡＩＬＡＢＬＥ値すなわちフラグと同じ値に設定することにより、連続的なＴ（オン）状態を作るようにＴ（オン）間隔を設定することができる。
【００４４】
割り込みマスクがＡＶＡＩＬＡＢＬＥの場合は、活動的な電力モニタ機能２０は電力節約サブルーチン６２に進み、ハードウエア状態が確立したＴ（オフ）の１期間中、電力節約サブルーチン６２を十分に実行する。たとえば好ましい実施態様では、可能な最長間隔は恐らく１８ミリ秒で、これは実時間クロックからの２つのチックすなわち割り込みの間の最長時間である。電力節約サブルーチン６２の間は、ＣＰＵクロックは速度を落として休眠クロックレベルになる。
【００４５】
限界入出力動作によりＴ（オン）間隔が開始すると、アイドル分岐２４の割り込みは引き続き別の限界入出力要求に対して作動可能である。ＣＰＵが限界入出力で使用中になると、利用可能なＴ（オフ）間隔は少なくなる。逆に限界入出力要求が減少してその間の時間間隔が増加すると、利用可能なＴ（オフ）間隔は多くなる。アイドル分岐２４は、活動割り込みからのフィードバック（ＣＰＵ活動レベルが低下するにつれてＴ（オフ）間隔を増やす）に基づく自己同調システムを与える。
【００４６】
図３ｂと関連する説明によって示すように、活動的な電力モニタ機能２０が電力節約サブルーチン６２を完了すると、ステップ５４でＢＵＳＹ＿Ｉ再入フラグをクリアし、流れは復帰Ｉベクトル４４を経て、活動的な電力モニタ機能２０を要求した元のオペレーティングシステムに戻る。
【００４７】
図３ｂをより詳細に参照すると、流れ図８０は電力節約サブルーチン６２の説明である。活動的な電力モニタ機能２０はステップ８２で入出力ハードウエア高速クロックを決定する。電力節約サブルーチン６２の次のステップ８４で、ＣＵＲＲＥＮＴ＿ＣＬＯＣＫ＿ＲＡＴＥを適当な高速クロックに等しく設定して、多レベルの高速クロックを持つＣＰＵにこの値を保存する。したがって、あるＣＰＵが１２ＭＨｚと６ＭＨｚの高速クロックを持つ場合は、活動的な電力モニタ機能２０は、活動的な電力モニタ機能２０が電力を減少させる前に、どちらの高速クロックでＣＰＵを制御するかを決めなければならない。これによりＣＰＵは、目覚めたときにＣＰＵを適切な高速クロックで再設定することができる。ステップ８４で、電力節約サブルーチンはＳＡＶＥ＿ＣＬＯＣＫ＿ＲＡＴＥ変数を、ステップ８２で決定したＣＵＲＲＥＮＴ＿ＣＬＯＣＫ＿ＲＡＴＥの値に等しくする。ＣＰＵの高速クロックが１個だけの場合はＳＡＶＥ＿ＣＬＯＣＫ＿ＲＡＴＥ８４は使わない。次に活動的な電力モニタ機能２０は休眠クロックステップ８６に進み、パルスをハードウエアセレクタ（図７に示す）に送ってクロック周波数を下げまたは止めることにより、ＣＰＵクロックを休眠させる。入出力ポートハードウエア休眠クロックの振動は、ＣＰＵクロックの通常の振動よりはるかに低い。
【００４８】
この時点で２つの事象のどちらかが起こる。すなわちシステム／応用割り込みか、実時間クロック割り込みが起こる。システム／応用割り込み８８が起こる場合は、活動的な電力モニタ機能２０は割り込みルーチン９０に進む。電力節約ルーチン６２はこの割り込みをすぐ処理してステップ９２で入出力割り込みを準備し、判断９４に戻って、割り込みがあるかどうか決定する。この場合は割り込みがあったので、ステップ９６でＳＡＶＥ＿ＣＬＯＣＫ＿ＲＡＴＥの値を用いて、どちらの高速クロックでＣＰＵを戻すかを決定する。電力節約サブルーチン６２の流れ図８０は復帰ベクトル９８で終了する。
【００４９】
しかし判断９４でシステム／応用割り込みがないと決定した場合は、電力節約サブルーチン６２は判断９４で実時間クロック割り込みが起こるまで待ち続ける。実時間割り込みが起こると、電力節約サブルーチン６２はＣＰＵを、記憶したＳＡＶＥ＿ＣＬＯＣＫ＿ＲＡＴＥに再設定する。休眠クロック速度が停止クロック速度でなかった場合、すなわち休眠クロック速度がゼロでなかった場合は、制御は遅いクロックで進み、電力節約サブルーチン６２は判断９４とステップ８８から９２を通る割り込みループを実行する。他方、制御が休眠クロック速度ゼロで進む場合は、電力節約サブルーチン６２は、判断９４とステップ８８から９２を含む割り込みループを一度だけ実行した後ＣＰＵクロックをＳＡＶＥ＿ＣＬＯＣＫ＿ＲＡＴＥ９６に戻し、その後流れは復帰ベクトル９８に進む。
【００５０】
次に図４において流れ図１００は、システム／応用の活動要求がオペレーティングシステムサービス要求の割り込みによりトリガする、活動分岐２６の処理の流れを示す。活動分岐２６は再入保護から始まる。ステップ１０２で活動的な電力モニタ機能２０は、ＢＵＳＹ＿Ｉ変数がＢＵＳＹ＿ＦＬＡＧ値に等しく設定されているかどうかを決定する。等しい場合は、活動的な電力モニタ機能２０システムは既にアイドル分岐２４にあり、割り込みできないことを意味する。ＢＵＳＹ＿ＩがＢＵＳＹ＿ＦＬＡＧ値に等しい場合は、処理の流れは復帰Ｉベクトル４４に進んで、活動的な電力モニタ機能２０から出る。復帰Ｉベクトル４４は元の活動ベクトル割り込みに戻って通常の処理を行うための間接ベクトルである。復帰Ｉベクトル４４は割り込みベクトルによりＣＰＵ動作を通常の位置に戻す。これは要求されたサービスをオペレーティングシステムが行った後に動作する。
【００５１】
ＢＵＳＹ＿Ｉフラグ変数がＢＵＳＹ＿ＦＬＡＧ値に等しくない場合は、活動的な電力モニタ機能２０がアイドル分岐２４にアクセスしていないことを意味する。活動的な電力モニタ機能２０は判断１０４で、ＢＵＳＹ＿ＡフラグがＢＵＳＹ＿ＦＬＡＧ値に等しいかどうか決定する。等しければ、活動分岐２６はこの時点で制御をコンピュータシステムに戻す。これは、すでに活動分岐２６に入っているので割り込みできないことを意味する。ＢＵＳＹ＿Ａフラグがセットされていない場合は、すなわちＢＵＳＹ＿ＡがＢＵＳＹ＿ＦＬＡＧ値に等しくない場合は、活動的な電力モニタ機能２０はステップ１０６でＢＵＳＹ＿ＡパラメータをＢＵＳＹ＿ＦＬＡＧ値に等しく設定し、実行中の割り込みを防ぐ。
【００５２】
判断１０８で、活動分岐２６はＰＯＷＥＲ＿ＬＥＶＥＬパラメータ値を決定する。ＰＯＷＥＲ＿ＬＥＶＥＬパラメータ値がゼロの場合は、活動的な電力モニタ機能２０はまずステップ１１０でＢＵＳＹ＿Ａ再入フラグをクリアした後、活動分岐２６から出る。しかしＰＯＷＥＲ＿ＬＥＶＥＬパラメータ値がゼロでない場合は、活動分岐２６は次に、入出力ハードウエアのＣＵＲＲＥＮＴ＿ＣＬＯＣＫ＿ＲＡＴＥパラメータの値を決定する。図３ｂの電力節約サブルーチンのステップ８４でそうであったように、所定のＣＰＵに多レベルの高速クロックがある場合は、図４の活動分岐２６はステップ１１２でＣＵＲＲＥＮＴ＿ＣＬＯＣＫ＿ＲＡＴＥパラメータ値を用いる。多レベルでない場合は、ＣＵＲＲＥＮＴ＿ＣＬＯＣＫ＿ＲＡＴＥパラメータ値は常にＣＰＵの高速クロックに等しい。ステップ１１２でＣＵＲＲＥＮＴ＿ＣＬＯＣＫ＿ＲＡＴＥパラメータ値を決定した後、ステップ１１４でＩＤＬＥ＿ＴＩＣＫパラメータ値を一定のＳＴＡＲＴ＿ＴＩＣＫＳに等しく設定する。ＳＴＡＲＴ＿ＴＩＣＫＳ定数は、前に決定したＣＵＲＲＥＮＴ＿ＣＬＯＣＫ＿ＲＡＴＥに設定する。活動的な現在の高速クロックがＴ（オフ）間隔を設定する。
【００５３】
活動分岐２６の次のステップ判断１１６では、要求があったことを決定する。要求は、特定の種類の必要なサービスのためにコンピュータ上を走る応用ソフトウエアからの入力である。判断１１６で、活動分岐２６は要求が限界入出力かどうか決定する。限界入出力は、Ｔ（オン）がＴ（オフ）より大きくなるまで絶えずＴ（オン）を長くする。要求が限界入出力の場合は、活動的な電力モニタ機能２０はまずステップ１１０でＢＵＳＹ＿Ａ再入フラグをクリアした後、活動分岐２６から出る。
【００５４】
他方、要求が限界入出力でない場合は、活動分岐２６はステップ１１８でＡＣＴＩＶＩＴＹ＿ＴＩＣＫパラメータを１だけ増やす。処理の流れは判断１２０に進み、ＡＣＴＩＶＩＴＹ＿ＴＩＣＫパラメータ値がＡＣＴＩＶＩＴＹ＿ＭＡＸＴＩＣＫＳ一定値に等しいかどうか決定する。判断１２０のチェックにより限界入出力からの平滑化が可能になり、次のＡＣＴＩＶＩＴＹ＿ＴＩＣＫのＴ（オン）間隔中にシステムを別の限界入出力に備えさせる。ＡＣＴＩＶＩＴＹ＿ＴＩＣＫパラメータ値がＡＣＴＩＶＩＴＹ＿ＭＡＸＴＩＣＫＳ一定値に等しくない場合は、活動分岐２６の処理の流れはステップ１１０でＢＵＳＹ＿Ａ再入フラグをクリアした後で、復帰Ｉベクトル４４に進む。他方、ＡＣＴＩＶＩＴＹ＿ＴＩＣＫが一定値ＡＣＴＩＶＩＴＹ＿ＭＡＸＴＩＣＫＳに等しい場合は、ステップ１２２で、活動分岐２６はＡＣＴＩＶＩＴＹ＿ＴＩＣＫパラメータを一定値ＬＥＶＥＬ＿ＭＡＸＴＩＣＫＳに設定する。活動分岐２６はＬＥＶＥＬ＿ＭＡＸＴＩＣＫＳ値を、判断１０８で決定する特定の電力レベルに設定する。
【００５５】
判断１２４で、活動分岐２６は割り込みマスクが存在するかどうか決定する。システム／応用ソフトウエアは割り込みマスクを設定する。割り込みマスクをＮＯＴ＿ＡＶＡＩＬＡＢＬＥフラグ値に設定すると連続的なＴ（オン）状態を作る。これは、現在割り込みが利用できないことを意味する。この場合は、活動分岐２６の処理の流れはステップ１１０に進み、ＢＵＳＹ＿Ａ再入フラグをクリアして、復帰Ｉベクトル４４に進む。しかし割り込みマスクがＡＶＡＩＬＡＢＬＥの場合は、活動分岐２６は判断１２６で、判断１１６で識別した要求が遅いＩ／Ｏ＿ＩＮＴＥＲＲＵＰＴだったかどうか決定する。遅いＩ／Ｏ＿ＩＮＴＥＲＲＵＰＴ要求は、入出力装置が「作動可能」になるまで遅れてよい。「作動可能にする」動作中に連続的なＴ（オフ）間隔が始まって電力の節約を続ける。
【００５６】
したがって、要求が遅いＩ／Ｏ＿ＩＮＴＥＲＲＵＰＴでない場合は、活動分岐２６の処理の流れはステップ１１０に進んでＢＵＳＹ＿Ａ再入フラグをクリアし、続いて復帰Ｉベクトル４４に進む。しかし要求が遅いＩ／Ｏ＿ＩＮＴＥＲＲＵＰＴで、かつ入出力装置が「作動可能」になるまでにまだ時間がある場合は、活動分岐２６は判断１２８で、入出力要求が完了したかどうか決定する。したがって本質的に、判断１２８は関連する入出力装置が作動可能かどうか決定する。入出力装置が作動可能でない場合は、活動的な電力モニタ機能２０はＴ（オフ）を長くする。これによりＣＰＵは、遅い入出力装置が作動可能になるまで待たされすなわち休眠させられて、電力を節約する時間がある。したがって活動分岐２６は、図２ｃと関連する説明で詳細に示した電力節約サブルーチン６２に入る。判断１２８で入出力要求が完了したと決定すると、処理の流れはステップ１１０に進んでＢＵＳＹ＿Ａ再入フラグをクリアし、復帰Ｉベクトル４４を経て、制御はオペレーティングシステムに戻る。
【００５７】
この発明のこの実施態様は活動的な電力監視を行うだけでなく、他のＣＰＵの動的動作特性を管理する方法と装置も提供する。他の動的動作特性とは、たとえば望ましくない電磁周波数放射線の放出や、この発明に従って繰り返し調整してもＣＰＵが所定の温度帯域内で動作を継続することができない、などである。詳しく言うと、図５に示すように、この実施態様は積極的に温度を管理する方法や、ユーザに透明で図３ｂの電力節約サブルーチン６２と同様な方法で動作する、温度制御用の実時間フィードバックループを含む装置を提供する。
【００５８】
図５は、ステップ１３２から始まる温度管理サブルーチンの流れ図１３０を示す。温度管理サブルーチン１３２を実現するには、活動的な電力モニタ機能２０を修正して、関連するＣＰＵおよびコンピュータシステムにより電力消費だけでなく他のＣＰＵの動的動作特性を監視できるよう、より一般的な活動的なモニタ機能にする。従って本質的に、活動的な電力モニタ機能２０がアイドル分岐２４と活動分岐２６により電力節約サブルーチン６２を呼ぶのと同様に、より一般的な活動的なモニタ機能は、温度管理サブルーチン１３２にＣＰＵの温度制御動作を行わせるときは温度管理サブルーチン１３２を呼ぶ。しかし重要な差は、電力節約サブルーチン６２を呼ぶのは活動レベルが低いときであるのに反して、この実施態様は、温度条件がＣＰＵの温度限界に近付いたときまたは近づきそうなときに温度管理サブルーチン１３２を呼ぶ点である。
【００５９】
詳しく言うと、この実施態様の活動的なモニタ機能は、ＢＵＳＹ＿ＡパラメータがＢＵＳＹ＿ＦＬＡＧ一定値に等しいときに、活動分岐２６内で温度管理サブルーチン１３２を呼ぶ。それ以後の処理の流れは温度管理サブルーチン１３２に示すように進む。
【００６０】
図５をより詳細に参照すると、ステップ１３２は温度管理サブルーチンの最初のステップである。温度管理サブルーチン１３２はステップ１３４でＣＵＲＲＥＮＴ＿ＣＬＯＣＫ＿ＲＡＴＥパラメータの値を決定する。次のステップ１３６で、ＣＰＵが多レベルの高速クロックを持つ場合は、ＣＵＲＲＥＮＴ＿ＣＬＯＣＫ＿ＲＡＴＥパラメータを適当な高速クロックに等しく設定し、この値を保存する。したがって、あるＣＰＵが１２ＭＨｚと６ＭＨｚの高速クロックを持つ場合は、活動的なモニタ機能はＣＰＵ内の過度の温度または温度変化条件に応じるために、活動的なモニタ機能がどの高速クロックでＣＰＵを制御するかを決定しなければならない。これにより、ＣＰＵは目覚めたときに適当な高速で動作を再設定することができる。ステップ１３６で、温度管理サブルーチン１３２はステップ１３４で決定した値にＳＡＶＥ＿ＣＬＯＣＫ＿ＲＡＴＥパラメータ値を設定する。この実施態様では、ＣＰＵの高速クロックが１個だけの場合はＳＡＶＥ＿ＣＬＯＣＫ＿ＲＡＴＥステップ１３６を用いない方がよい。
【００６１】
温度管理サブルーチン１３２はステップ１３８に進み、ＣＰＵが処理する予定の命令の数を数える。この実施態様は、関連するコンピュータシステムのＲＯＭが記憶するルックアップテーブルを含んでよい。ルックアップテーブルは、入出力を要求する命令と入出力なしのＣＰＵ動作に関する命令とを区別する。
【００６２】
命令のリストを数えるステップ１３８の次に、判断１４０はＴＨＥＲＭＡＬ＿ＩＮＴＥＲＲＵＰＴパラメータ値が一定値ＴＨＥＲＭＡＬ＿ＳＥＴＰＯＩＮＴに等しいかどうか決定する。これは温度割り込みの必要性を示す。温度割り込みは、温度条件が望ましくない場合にＣＰＵの動作を止めるか変えるための割り込みである。ＴＨＥＲＭＡＬ＿ＩＮＴＥＲＲＵＰＴパラメータの値がＴＨＥＲＭＡＬ＿ＳＥＴＰＯＩＮＴの値に等しくない場合は、温度管理サブルーチン１３２の処理の流れは計算指向サブルーチン１４２に進む。他方、ＴＨＥＲＭＡＬ＿ＩＮＴＥＲＲＵＰＴがＴＨＥＲＭＡＬ＿ＳＥＴＰＯＩＮＴに等しい場合は処理の流れはステップ１４４に進み、ここでＣＰＵクロックはより低い休眠クロック速度に移行する。処理の流れは休眠クロック速度ステップ１４４から判断１４６に進み、処理の流れが温度管理サブルーチン１３２から出るかどうか調べる。処理の流れが温度管理サブルーチン１３２から出ない場合は、処理の流れは判断１４０に戻り、引き続き温度割り込み条件が存在するかどうか調べる。
【００６３】
ＣＰＵが温度管理サブルーチン１３２から出る場合は、処理の流れは判断１４６から復帰ベクトル１４８に進む。処理の流れはここから前に説明した活動的なモニタ機能に戻る。これには種々の場合がある。たとえば、活動的なモニタ機能が図３ａのアイドル分岐２４に飛ぶなど。温度割り込み条件が存在する限り、温度管理サブルーチン１３２はステップ１４４のより遅い休眠クロック速度でＣＰＵを動作させる。
【００６４】
温度管理サブルーチン１３２の処理の流れが計算指向サブルーチン１４２に向かう場合は、処理の流れは図６に示す計算指向サブルーチン流れ図１５０のようになる。計算指向サブルーチンはステップ１４２で始まり、処理の流れは判断１５２に進んで、ＣＰＵが計算指向状態にあるかどうか調べる。ＣＰＵが計算指向状態になければ、処理の流れは復帰ベクトル１５４に進む。復帰ベクトル１５４は、温度管理サブルーチン１３２の処理の流れをＴＨＥＲＭＡＬ＿ＩＮＴＥＲＲＵＰＴ判断１４０に戻す（図５参照）。
【００６５】
ＣＰＵが計算指向状態にある場合は、計算指向サブルーチン１４２の処理の流れは判断１５６に進む。この発明が与える技術的な利点は、ＣＰＵの動作特性を予見すなわち予測できることである。命令の数を数えてその種類を決定することにより、この実施態様はＣＰＵが計算指向動作モードにあって、入出力はほとんどないか、したがってＣＰＵの減速もＣＰＵへの入出力機能も起こらないかどうか決定する。ＣＰＵが計算指向状態にあるかどうかの決定は、命令のリストを数えるステップ１３８で数えた、ＣＰＵが実行する予定の命令の数から得られる。
【００６６】
この実施態様は、ＣＰＵが実行する予定の命令とコンピュータシステムがＲＯＭに保持しているルックアップテーブルの要素とを比較する比較器を備える。このルックアップテーブルは、命令の種類が入出力機能を含むものか、入出力機能を含まずにＣＰＵの処理と計算動作だけに関するものかという特徴付けを行う。この実施態様は、入出力機能を含む断続した入出力命令を持たない、連続した計算命令の数についての所定のしきい値を与える。入出力機能を含まない命令の数が所定のしきい値数を超える場合は、この実施態様は、ＣＰＵが計算指向状態にあると判断する。
【００６７】
ＣＰＵが計算指向状態にあると計算指向サブルーチン１４２が決定すると、処理の流れは判断１５６に進み、ＣＰＵが計算指向状態中に温度割り込み条件を設定するかどうか調べる。この設定は、ＣＰＵが温度割り込みに達するのを防ぐために、または所望であれば、この温度割り込みを新しい温度割り込みレベルにするために行う。したがって計算指向サブルーチン１４２が判断１５６で、計算指向状態中にＣＰＵが温度割り込みに達すると決定すると、処理の流れは判断１５８に進む。他方、計算指向状態中に温度割り込み条件が起こらない場合は、処理の流れは復帰ベクトル１５４に進んで、温度管理サブルーチン１３２内の処理を続ける。
【００６８】
たとえばＣＰＵが計算指向状態中に温度割り込み設定点を必要とはするが、計算指向状態が十分長くないのでＣＰＵに悪い影響を与えない場合は、この実施態様は一定値ＴＨＥＲＭＡＬ＿ＳＥＴＰＯＩＮＴを調整することができる。言い換えると、通常の条件下で、ＣＰＵがこの温度に達しても安全の余裕があってＣＰＵが温度による損傷を受けることがないように、温度割り込み条件を設定する。たとえばＣＰＵ温度が一定値ＴＨＥＲＭＡＬ＿ＳＥＴＰＯＩＮＴに達する理由が分かる場合は、かなりの調整可能な安全余裕がある。計算指向ＣＰＵの外箱の温度の上昇速度に従って、ＣＰＵの温度は既知の予測可能な状態で上昇する。
【００６９】
計算指向状態でＣＰＵが実行する命令の数と種類が分かると、これに基づいて計算指向サブルーチン１４２は、ＣＰＵはＣＰＵの温度設定点ＴＨＥＲＭＡＬ＿ＳＥＴＰＯＩＮＴに達するかまたは超えるが、そうなるのはほんの短い期間だけであると決定することができる。計算指向サブルーチン１４２が決定するこの短い期間ではＣＰＵの損傷やその恐れはない。この状態に対処するために、計算指向サブルーチン１４２は判断１５８で現在のＴＨＥＲＭＡＬ＿ＳＥＴＰＯＩＮＴの値を調整する必要があるかどうか調べる。現在のＴＨＥＲＭＡＬ＿ＳＥＴＰＯＩＮＴの値を調整する必要がある場合は、処理の流れはステップ１６０に進んで、ＴＨＥＲＭＡＬ＿ＳＥＴＰＯＩＮＴの値を調整する。ステップ１６０から、処理の流れは復帰ベクトル１５４に進む。他方、ＴＨＥＲＭＡＬ＿ＳＥＴＰＯＩＮＴを現在の値に保つ場合は処理の流れは判断１６２に進み、ＴＨＥＲＭＡＬ＿ＩＮＴＥＲＲＵＰＴパラメータの値をＴＨＥＲＭＡＬ＿ＳＥＴＰＯＩＮＴの一定値に設定するかどうか調べる。
【００７０】
ＴＨＥＲＭＡＬ＿ＩＮＴＥＲＲＵＰＴパラメータの値をＴＨＥＲＭＡＬ＿ＳＥＴＰＯＩＮＴの一定値に設定する場合は処理の流れはステップ１６４に進み、計算指向サブルーチン１４２はＴＨＥＲＭＡＬ＿ＩＮＴＥＲＲＵＰＴパラメータの値をＴＨＥＲＭＡＬ＿ＳＥＴＰＯＩＮＴの一定値に設定する。次に、処理の流れは復帰ベクトル１５４に進む。他方、ＴＨＥＲＭＡＬ＿ＩＮＴＥＲＲＵＰＴパラメータの値をＴＨＥＲＭＡＬ＿ＳＥＴＰＯＩＮＴの値に設定しない場合は、処理の流れはそのまま復帰ベクトル１５４に進む。この後、処理の流れは復帰ベクトル１４８に進んで、温度管理サブルーチン１３２に戻る。
【００７１】
自己同調は連続フィードバックループの制御システムに固有のものである。この発明のソフトウエアはＣＰＵの活動が低いとき、したがってこの発明の電力節約態様を起動してよいときを検出することができる。他方この実施態様は、ＣＰＵの活動が高くて温度管理を起動してよい時を決定する。電力節約モニタが起動すると、その間隔内でＣＰＵクロック動作は最高速度に急速に復帰するのでコンピュータの性能は低下しない。同様に、温度設定点の条件がなくなって温度管理の必要がなくなると、ＣＰＵ内のＣＰＵクロック動作は最高速度に急速に復帰して、温度管理の影響はほとんど気付かれない。この最高速度のＣＰＵクロック動作に急速に復帰させるため、この発明の好ましい実施態様はいくつかの関連するハードウエアを用いる。
【００７２】
次に図７は、活動的な電力節約および温度管理用の、この発明に用いる関連ハードウエアを表す簡単化した略図である。ＣＰＵがいつでも休眠できる状態にあると決定した場合は、活動的な電力モニタ機能２０は入出力ポート（図示せず）に書き込んで休眠線にパルスを出す。休眠線のこのパルスの立ち上がり端で、フリップフロップのＱは高に、Ｑ−は低になる。これにより、ＡＮＤゲート２０２および２０４とＯＲゲート２０６を含むＡＮＤ／ＯＲ論理は、休眠クロック発振器２０８から休眠クロック線に出るパルスを選択して、ＣＰＵクロックに送って使用する。休眠クロック発振器２０８は、通常のＣＰＵ活動中に用いるＣＰＵクロックより遅いクロックである。
【００７３】
フリップフロップ２００のＱから来る高信号は、休眠クロック発振器２０８から来るパルスとの論理積をＡＮＤゲート２０２でとり、またフリップフロップ２００のＱ−からの低信号との論理和をＯＲゲート２０６でとり、さらに高速クロック発振器２１０から高速クロック線に出るパルスとの論理積をＡＮＤゲート２０４でとって、ＣＰＵクロックを作る。入出力ポートが休眠クロックを指定すると、ＣＰＵクロックは休眠クロック発振器２０８の値に等しくなる。他方、割り込みが起こると割り込み値はフリップフロップ２００をクリアし、この割り込みにより、ＡＮＤゲート２０２および２０４とＯＲゲート２０６を備えるＡＮＤ／ＯＲセレクタは高速クロック値を選択する。ＡＮＤ／ＯＲセレクタは、ＣＰＵクロック値を高速クロック発振器２１０から来る値に戻す。したがってＣＰＵの電力節約動作中にシステム内で割り込みを検出すると、ＣＰＵ動作を最高クロック速度に回復してから割り込みを受けて処理する。
【００７４】
任意のシステムの各ＣＰＵ以外の必要な関連ハードウエアは、用いるオペレーティングシステムや、ＣＰＵが止められるか、などによって異なってよいことに注意していただきたい。しかし、多くの使用可能なポータブルコンピュータシステム内でこの発明が活動的に電力を節約しまたは温度条件を管理するのに、この発明の範囲はシステムに特有の必要な変更によって制限されるものではない。例として、２つの実際の実施態様を図８と図９に示して以下に説明する。
【００７５】
現在、多くのＶＬＳＩ設計ではＣＰＵ速度のクロック切り替えが可能である。ゼロクロックまたは遅いクロックから速いクロックに切り替える論理は、ユーザがキーボード命令により速度を変える論理と同じである。このような切り替え論理を活動的なモニタ機能の論理に追加することにより、割り込みを検出するとすぐ高速クロックに戻すことができる。この簡単な論理が、ＣＰＵに割り込みを行って割り込みを最高速度で処理できるようにするのに必要なハードウエア支援の鍵である。
【００７６】
ＭＳ−ＤＯＳの下で電力消費および温度を含むＣＰＵの動的動作特性を管理する方法は、ＭＳ−ＤＯＳアイドルループトラップを用いて、「何もしない」ループにアクセスする。アイドルループは、アイドル状態すなわち低活動状態にある応用ソフトウエアおよびオペレーティングシステムの動作に特殊なアクセスを行うためのもので、システム内の任意の部分で活動レベルを決定するには慎重な調査が必要である。活動レベルを決定するには、割り込み２１Ｈサービス要求からのフィードバックループを用いる。活動レベルの予測は割り込み２１Ｈ要求から決定し、これから、この発明はＣＰＵを「休眠させる」（すなわち、遅くするかまたは止める）ためのスライス期間を設定する。追加の機能により、ユーザは割り込み２１Ｈの活動レベルに従ってスライスを変更することができる。
【００７７】
図８は、インテル８０３８６などのシステム用の実際の休眠ハードウエアの実現の略図である。ちなみに、インテル８０３８６ＣＰＵはクロックを止めることはできない。アドレス可能バス２２０およびアドレスバス２２２からデマルチプレクサ２２４にＣＰＵ入力を与える。デマルチプレクサ２２４の出力は、ＳＬＥＥＰＣＳを経てＯＲゲート２２６および２２８の入力になる。ＯＲゲート２２６および２２８の他の入力は、それぞれ入出力書き込み制御線と入出力読み出し制御線である。これらのゲートの出力は、ＮＯＲゲート２３０の出力と共にＤフリップフロップ２３２に入ってポートを復号する。「ＩＮＴＲ」は入出力ポート（周辺装置）からＮＯＲゲート２３０に入る割り込み入力で、これにより論理ハードウエアは切り替わって高速クロックに戻る。次に、フリップフロップ２３２の出力はＯＲゲート２２６からの出力と共に３状態バッファ２３４に入る。これにより、バッファ２３４はポート上にあるものを読み戻すことができる。読み出し／書き込み入出力ポート（周辺装置）は、上に述べたすべてのハードウエアを用いて電力節約「休眠」動作を選択する。出力「ＳＬＯＷ−」は図２から図４の「ＳＬＥＥＰ」と同じもので、後で説明するフリップフロップ２３６に入力する。
【００７８】
休眠クロック発振器２３８の出力は、Ｄフリップフロップ２４０および２４２により２つの遅いクロックに分割される。図８に示す特定の実現では、１６ＭＨｚの休眠クロック発振器２３８は４ＭＨｚと８ＭＨｚクロックに分割される。ジャンパーＪ１により、どちらのクロックを「休眠クロック」にするか選択する。
【００７９】
この特定の実現では、高速クロック発振器２４４は３２ＭＨｚ発振器である。ただしこの特定の速度はこの発明では必要条件ではない。３２ＭＨｚの発振器は抵抗器（この実現では３３オーム）に直列であり、抵抗器は２個のコンデンサ（１０ｐＦ）に直列である。この発振の出力をＤフリップフロップ２４６および２４８のクロックに接続する。
【００８０】
Ｄフリップフロップ２３６、２４６、２４８は同期したフリップフロップである。Ｄフリップフロップ２３６および２４６は図２から図４の活動的な電力モニタ機能２０の簡単化した休眠ハードウエアには示さなかったが、これらのフリップフロップにより、クロック切り替えはクロックの端だけで起こる。図８に示すように、図７のフリップフロップ２００と同様に、ＣＰＵが休眠する（「ＦＡＳＴＥＮ−」）か目覚めるか（「ＳＬＯＷＥＮ−」）かに従って、フリップフロップ２４８の出力はＯＲゲート２５０かＯＲゲート２５２を起動する。
【００８１】
ＯＲゲート２５０および２５２とＡＮＤゲート２５４は、図７のＡＮＤ／ＯＲセレクタと機能的に同じものである。これらにより、「ＳＬＯＷＣＬＫ」（遅いクロック、また休眠クロックとも言う）か高速クロック（入力線に３２ＭＨｚと指定されている）かを選択する。この実現では、ジャンパーＪ１に従って遅いクロックは４ＭＨｚか８ＭＨｚであり、高速クロックは３２ＭＨｚである。ＡＮＤゲート２５４の出力（図のＡＴＵＣＬＫ信号）はＣＰＵクロックの速度を設定する。これは、図７のＣＰＵクロックと同じものである。
【００８２】
次に図９は、インテル８０２８６などのシステムの、別の実際の休眠ハードウエア実現の略図を示す。ちなみに、インテル８０２８６はクロックを止めることができる。速度の切り替えにはウエスタン・ディジタルＦＥ３６００ＶＬＳＩを特殊な外部装置ＰＡＬ２５６と共に用い、割り込みが来るとＣＰＵを目覚めさせる割り込みゲートを制御する。この発明のソフトウエア電力節約態様により、割り込み受け付けが起こるのを監視する。これは割り込み後の次のＰ（ｉ）ΔＴｉ間隔を起動する。
【００８３】
ＣＰＵへの割り込み要求があると、システムは通常の動作に戻る。ＣＰＵへの割り込み要求ＩＮＴＲＱにより、ＰＡＬはＲＥＳＣＰＵ線にＷＡＫＥ＿ＵＰ信号を出してＦＥ３００１に送り、ＦＥ３００１はＣＰＵとＤＭＡクロックを使用可能にして、システムを通常の状態に戻す。これは、図７の「ＩＮＴＥＲＲＵＰＴ−」と同じものである。状態機械の混乱を避けるために割り込み要求は同期をとっているので、割り込み信号ＩＮＴＤＥＴはサイクルが活動化しているときだけ検出される。ＲＥＳＣＰＵ信号の立ち上がり端によりＦＥ３００１は目を覚まし、システム全体を休眠モードから解放する。
【００８４】
３８６ＳＸで実現する場合は、この実施態様のＣＰＵの動的動作特性機能を実行する外部のハードウエアとソフトウエアループが異なるだけである。割り込みが起こると、ソフトウエアループは割り込みを実行する前に外部ハードウエアを高速クロックに切り替える。電力節約ソフトウエアに戻ると、活動的なモニタ機能は高速クロックサイクルを検出して、高速クロック動作用のハードウエアをリセットする。
【００８５】
ＯＳ／２で実現する場合は、優先度の低い背景動作で走るスレッド（ＴＨＲＥＡＤ）としてプログラムされた「何もしない」ループを用いる。スレッドを起動すると、割り込みが発生してＣＰＵを元のクロック速度に戻すまでは、ＣＰＵは休眠すなわち低速度クロック動作になる。
【００８６】
この発明の好ましい実施態様では割り込みを用いてＣＰＵを目覚めさせたが、システム内のまたはシステムに与えられる任意の周期的活動を用いても同じ機能を実現することができる。
【００８７】
この発明の電力節約態様と温度管理態様との違いは、温度管理態様ではＣＰＵの温度を検出する必要があることである。これはサーミスタまたはその他の直接検出機構を用いて行い、温度の測定値を温度管理サブルーチン１３２に与える。サーミスタまたはその他の温度検出装置はこの技術でよく知られている。さらに、検出された動作特性は、特定の応用で関心のあるＣＰＵの動的動作特性に従って、他の直接読み取り装置すなわちセンサにより得ることができる。
【００８８】
要約すると、この発明は検出されたＣＰＵの動的動作特性を制御する方法を与えるもので、少なくとも１つのＣＰＵの動的動作特性を検出するステップを含む。この発明は、少なくとも１つの動的動作特性を検出したときのＣＰＵのクロック速度を検出する。この方法と装置は、少なくとも１つのＣＰＵの動的動作特性が前記少なくとも１つのＣＰＵの動的動作特性に関連する所定の設定点に対して所定の関係を確立することにより、設定点割り込み条件が存在することを決定する。割り込み条件が存在する場合は、この発明は、検出したクロック速度に対してクロック速度を制御するステップを含む。他方、設定点割り込み条件が存在しない場合は、この発明は、上記の決定および制御ステップを繰り返すためのステップと回路を含む。
【００８９】
この発明の別の優れた特徴は、電力消費や温度などの検出されたＣＰＵの動的動作特性に従って単一のＣＰＵを制御するだけでなく、所定のコンピュータシステムを支援する多数のＣＰＵを制御できることである。たとえば二重ＣＰＵコンピュータシステムでは、この発明は検出されたＣＰＵの動的動作特性の制御を調整して、コンピュータシステムの性能を全体的に所望のレベルに維持する。たとえば、両方のＣＰＵに与えられた計算指向サブルーチン１４２の決定に従って、一方のＣＰＵは計算指向モードにあり、二重ＣＰＵコンピュータの他方のＣＰＵは計算指向ではなく、多くの入出力機能を含む命令を実行しているとする。計算指向ＣＰＵの外箱温度の上昇係数によって現在のクロック速度ではＣＰＵ温度が上昇することが分かると、この発明は計算指向ＣＰＵのクロックを減速させて、温度の設定点に達しないようにする。コンピュータシステムの性能を一定にする必要があるかどうかに従って、この発明は他のＣＰＵのクロック速度を上げて、平均のまたは全体のクロック速度を一定に保ち、コンピュータシステムの性能レベルを均一にする。
【００９０】
この発明の多重ＣＰＵ実施態様の一態様を例示する図１０は、多重ＣＰＵ開始ステップ２８２で始まる多重ＣＰＵ流れ図２８０を示す。多重ＣＰＵ開始ステップ２８２は、まず判断２８４で１個以上のＣＰＵを制御する必要があるかどうか調べる。１個以上のＣＰＵを制御する場合は、処理の流れは判断２８６に進む。そうでない場合は、処理の流れは復帰ベクトル２８８に進んで、ＣＰＵは多重ＣＰＵサブルーチン２８２を実行する前に行っていた動作に戻る。
【００９１】
判断２８６で、多重ＣＰＵサブルーチン２８２は多重ＣＰＵを調整して管理するかどうか調べる。調整しない場合は処理の流れは復帰ベクトル２８８に進む。調整する場合は処理の流れはステップ２９０に進む。ステップ２９０は、多重ＣＰＵのそれぞれの制御を導くベクトルの役目をする。検出されたＣＰＵの動的動作特性により制御されるＣＰＵ毎に、処理の流れは活動的なモニタサブルーチン２９２に進む。活動的なモニタサブルーチン２９２は本質的に、活動的な電力モニタ機能２０や、温度管理サブルーチン１３２のモニタ機能などの活動的なモニタ機能や、電力節約と温度管理を調整するモニタ機能や、１つ以上の検出されたＣＰＵの動的動作特性に応じてＣＰＵを制御する他のモニタ機能またはサブルーチンと同じである。
【００９２】
多重ＣＰＵサブルーチン２８２の処理の流れがＣＰＵ毎に進むと、判断２９４で、少なくとも１つの調整されたＣＰＵに設定点割り込み条件があるかどうか調べる。このような設定点関連の割り込み条件がない場合は処理の流れは判断２９４に戻って、設定点関連の割り込み条件があるかどうかの調査を続ける。このような割り込み条件があると処理の流れは判断２９６に進んで、影響を受けないＣＰＵのクロック速度を多重ＣＰＵサブルーチン２８２が制御または調整する希望または予定があるか調べる。影響を受けないＣＰＵを調整しない場合は、判断２９６から処理の流れは復帰ベクトル２８８に進む。調整する場合は、処理の流れはステップ２９８に進み、影響を受けないＣＰＵのクロック速度を調整して、コンピュータシステム全体のクロック速度を一定に保つかまたは所望の値を得る。
【００９３】
この発明の好ましい実施態様のいくつかの実現を示して説明したが、当業者は種々の修正や別の実施態様を考えることができる。したがって、この発明は特許請求の範囲によってだけ限定されるものである。
【００９４】
以上の説明に関してさらに以下の項を開示する。
（１）  検出されたＣＰＵの動的動作特性を制御する方法であって、
（ａ）  コンピュータ内の第１クロック速度で動作する、コンピュータ内の中央処理装置（ＣＰＵ）の少なくとも１つの動的動作特性を検出し、
（ｂ）  前記少なくとも１つの動的動作特性が前記少なくとも１つの動的動作特性に関連する所定の設定点に対して所定の関係を確立することにより、設定点割り込み条件が存在することを決定し、
（ｃ）  前記設定点割り込み条件が存在する場合は、前記クロック速度を前記第１クロック速度に対して制御し、
（ｄ）  前記設定点割り込み条件が存在しない場合は、ステップ（ｂ）と（ｃ）を繰り返す、
ステップを含む、検出されたＣＰＵの動的動作特性を制御する方法。
【００９５】
（２）  検出されたＣＰＵの動的動作特性を制御する前記方法はＣＰＵの動的動作特性を管理する方法を含み、さらに、前記少なくとも１つの動的動作特性を検出する前記ステップは前記ＣＰＵの動作温度を検出するステップを含み、またさらに前記決定するステップは割り込み条件の存在を決定するステップを含み、前記動作温度は所定の温度設定点に対して所定の関係を確立する、第１項記載の検出されたＣＰＵの動的動作特性を制御する方法。
【００９６】
（３）  前記少なくとも１つの動的動作特性を検出する前記ステップは前記ＣＰＵの動作温度を検出するステップを含み、またさらに前記決定するステップは前記ＣＰＵが計算指向状態にある期間中に前記動作温度が所定の温度設定点に近いことを決定するステップを含む、第１項記載の検出されたＣＰＵの動的動作特性を制御する方法。
（４）  前記ＣＰＵが計算指向状態にあるかどうかを決定し、前記計算指向状態中に前記割り込み条件が存在するかどうかをさらに決定する、ステップをさらに含む、第１項記載の検出されたＣＰＵの動的動作特性を制御する方法。
【００９７】
（５）  （ａ）前記ＣＰＵが計算指向状態にあるかどうかを決定し、（ｂ）前記計算指向状態中に前記少なくとも１つの動的動作特性に前記割り込み条件が存在するかどうかを決定し、（ｃ）前記計算指向状態中に前記割り込み条件が存在する場合は前記割り込み条件を修正する、ステップをさらに含む、第１項記載の検出されたＣＰＵの動的動作特性を制御する方法。
（６）  前記ＣＰＵの電力節約が可能かどうかを決定し、前記ＣＰＵの電力節約が可能な場合は、前記電力節約から生じる前記割り込み条件および制御信号の存在に従って前記クロック速度を前記保存されたクロック速度に対して制御する、ステップをさらに含む、第１項記載の検出されたＣＰＵの動的動作特性を制御する方法。
【００９８】
（７）  前記ＣＰＵが計算指向状態にあるかどうかを決定し、前記計算指向状態中に前記ＣＰＵが実行する予定の計算指向命令の量を決定することにより前記計算指向状態の継続時間を決定する、ステップをさらに含む、第１項記載の検出されたＣＰＵの動的動作特性を制御する方法。
（８）  前記ＣＰＵが計算指向状態にあるかどうかを決定し、前記計算指向状態中に前記ＣＰＵが実行する予定の計算指向命令の量を決定することにより前記計算指向状態の継続時間を決定し、さらに前記計算指向状態中に前記割り込み条件が存在する場合は前記割り込み条件を修正する、ステップをさらに含む、第１項記載の検出されたＣＰＵの動的動作特性を制御する方法。
【００９９】
（９）  前記ＣＰＵが計算指向状態にあるかどうかを決定し、前記計算指向状態の継続時間を決定し、さらに前記クロック速度を前記保存されたクロック速度に対して修正して前記計算指向状態中に前記割り込み条件が存在しないようにする、ステップをさらに含む、第１項記載の検出されたＣＰＵの動的動作特性を制御する方法。
（１０）  前記ＣＰＵの前記少なくとも１つのＣＰＵの動的動作特性を検出する前記ステップは、サーミスタ検出装置を用いて前記ＣＰＵの動作温度を検出するステップを含む、第１項記載の検出されたＣＰＵの動的動作特性を制御する方法。
【０１００】
（１１）  前記所定の関係と前記所定の設定点を前記コンピュータのメモリ位置内に記憶するステップをさらに含む、第１項記載の検出されたＣＰＵの動的動作特性を制御する方法。
（１２）  前記所定の関係と前記所定の設定点を前記コンピュータのレジスタを備えるメモリ位置内に記憶するステップをさらに含む、第１項記載の検出されたＣＰＵの動的動作特性を制御する方法。
（１３）  前記所定の関係と前記所定の設定点を前記コンピュータに関連し前記ＣＰＵ以外の回路を備えるメモリ位置内に記憶するステップをさらに含む、第１項記載の検出されたＣＰＵの動的動作特性を制御する方法。
【０１０１】
（１４）  第２項記載の方法であって、実時間電力節約を調整し前記ＣＰＵ内の検出された動的動作特性を制御する方法をさらに含み、前記実時間電力節約法は前記検出されたＣＰＵ動的温度特性の前記制御法に関連して動作し、
（ｅ）  前記ＣＰＵの電力節約が可能かどうかを決定し、
（ｆ）  前記ＣＰＵの電力節約が可能な場合は、前記ＣＰＵの現在のクロック速度を決定し、
（ｇ）  前記ＣＰＵに与えられている現在のクロック速度を減らすか止めるようハードウエアセレクタに示し、
（ｈ）  電力節約割り込みが起こったかどうか決定し、
（ｉ）  前記電力節約割り込みが起こらなかった場合はこのステップ（ｉ）を繰り返し、前記電力節約割り込みが起こるまで前記ＣＰＵは前記電力節約モードに留まり、
（ｊ）  前記電力節約割り込みが起こった場合は、前記決定された現在のクロック速度を前記ＣＰＵに回復するよう前記ハードウエアセレクタに示す、
ステップを含む、実時間電力節約を調整し前記ＣＰＵ内の検出された動的動作特性を制御する方法。
【０１０２】
（１５）  前記ＣＰＵに与えられている現在のクロック速度を減らすか止めるようハードウエアセレクタに示す前記ステップ（ｇ）は、
前記ハードウエアセレクタへの通信線を通して前記ハードウエアセレクタに電力節約のＣＰＵ命令をパルスで与え、
前記電力節約のＣＰＵ命令に基づいて前記ハードウエアセレクタにより電力節約クロックを選択し、
前記電力節約クロックから前記ＣＰＵにパルスを送って前記ＣＰＵを電力節約モードにする、
ステップをさらに含む、第１４項記載の実時間電力節約を調整し前記ＣＰＵ内の検出された動的動作特性を制御する方法。
【０１０３】
（１６）  コンピュータ内の中央処理装置（ＣＰＵ）の電力節約が可能かどうかを決定する前記ステップ（ｅ）は、
前記ＣＰＵがすでに前記電力節約モードにあるかどうか調べ、
前記ＣＰＵがまだ前記電力節約モードにない場合は、前記ＣＰＵが前記電力節約モードになる前に前記ＣＰＵを目覚めさせる電力節約割り込みが使用可能かどうか決定し、
電力節約割り込みが使用可能な場合は、前記ＣＰＵが前記電力節約モードに入ることを妨げる、
ステップをさらに含む、第１４項記載の実時間電力節約を調整し前記ＣＰＵ内の検出された動的動作特性を制御する方法。
【０１０４】
（１７）  コンピュータ内の中央処理装置（ＣＰＵ）の電力節約が可能かどうかを決定する前記ステップ（ｅ）は、
前記ＣＰＵが要求を受けたかどうかを調べ、
前記ＣＰＵが要求を受けた場合は、前記要求は限界入出力かどうかを決定し、
前記要求が限界入出力の場合は前記ＣＰＵが前記電力節約モードに入らないようにし、
前記要求が限界入出力でない場合は、前記ＣＰＵが前記電力節約モードに入る前に前記ＣＰＵを目覚めさせる電力節約割り込みが使用可能かどうか決定し、
前記ＣＰＵが前記電力節約モードに入らないようにし、
前記要求は前記入出力装置が作動可能になるまで遅れを持つ入出力からかどうかを決定し、
前記要求が遅れを持つ入出力からでない場合は前記ＣＰＵが前記電力節約モードに入らないようにする、
ステップをさらに含む、第１４項記載の実時間電力節約を調整し前記ＣＰＵ内の検出された動的動作特性を制御する方法。
【０１０５】
（１８）  複数のＣＰＵの検出された動的動作特性を制御する方法であって、
（ａ）  計算システムの複数の中央処理装置（ＣＰＵ）の少なくとも１つの動的動作特性を検出し、
（ｂ）  各前記複数のＣＰＵの第１クロック速度を検出し、
（ｃ）  各前記複数のＣＰＵ毎に少なくとも１つの設定点割り込み条件が存在することを決定し、１つ以上の前記少なくとも１つの検出された動的動作特性は前記少なくとも１つの動的動作特性の対応する１つに関連する所定の設定点に対する所定の関係を確立し、
（ｄ）  少なくとも１つの割り込み条件が存在する場合は、前記少なくとも１つの設定点割り込み条件に対応する前記複数のＣＰＵの１つの前記第１クロック速度に対して少なくとも前記クロック速度を制御し、
（ｅ）  前記複数のＣＰＵのどれにも割り込み条件が存在しない場合はステップ（ｂ）と（ｃ）を繰り返す、
ステップを含む、複数のＣＰＵの検出された動的動作特性を制御する方法。
【０１０６】
（１９）  前記割り込み条件に対応する前記ＣＰＵ以外の少なくとも１つの前記複数のＣＰＵを制御して、前記計算システムが前記複数のＣＰＵの間でほぼ一定の平均クロック速度を保持するようにするステップをさらに含む、第１８項記載の複数のＣＰＵの検出された動的動作特性を制御する方法。
【０１０７】
（２０）  検出されたＣＰＵの動的動作特性を制御する装置であって、
ＣＰＵ活動検出器と、
ＣＰＵクロックと、
少なくとも第１パルスを第１速度で、また第２パルスを第２速度で与える少なくとも１個の発振器と、
前記第１パルスと前記第２パルスを選択的に制御し選択するハードウエアセレクタであって、前記ハードウエアセレクタはさらに前記第１パルスと前記第２パルスの前記選択された方を前記ＣＰＵクロックに送り、また少なくとも１つの検出されたＣＰＵの動的動作特性が前記検出されたＣＰＵの動的動作特性に関連する所定の設定点に対して所定の関係を確立することにより存在する、設定点割り込み条件に応じる、ハードウエアセレクタと、
検出されたＣＰＵの活動を前記ＣＰＵ活動検出器から受け、さらに前記ハードウエアセレクタに送るパルスを発生して前記ハードウエアセレクタがどのパルスを選択すべきかを指定する、ＣＰＵ休眠管理装置と、
を備える、検出されたＣＰＵの動的動作特性を制御する装置。
【０１０８】
（２１）  検出されたＣＰＵの動的動作特性を制御する装置であって、
（ａ）  コンピュータ内の第１クロック速度で動作する中央処理装置（ＣＰＵ）の少なくとも１つの動的動作特性を検出する検出回路と、
（ｂ）  前記少なくとも１つの動的動作特性が前記少なくとも１つの動的動作特性に関連する所定の設定点に対して所定の関係を確立することにより、設定点割り込み条件が存在することを決定する、前記ＣＰＵ上で動作する設定点命令と、
（ｃ）  前記設定点割り込み条件が存在する場合は、前記クロック速度を前記第１クロック速度に対して制御する制御命令と、
（ｄ）  前記設定点割り込み条件が存在しない場合は、ステップ（ｂ）と（ｃ）を繰り返す繰り返し命令と、
を備える、検出されたＣＰＵの動的動作特性を制御する装置。
【０１０９】
（２２）  ＣＰＵの動的動作特性を管理する管理命令をさらに含み、また前記温度検出回路はさらに、前記ＣＰＵの動作温度を含む前記少なくとも１つの動的動作特性を検出する動的温度検出回路を備え、またさらに前記設定点命令は割り込み条件の存在を決定する命令をさらに含み、前記動作温度は所定の温度設定点に対して所定の関係を確立する、第２１項記載の検出されたＣＰＵの動的動作特性を制御する装置。
【０１１０】
（２３）  前記検出回路は前記ＣＰＵの動作温度を検出する回路をさらに備え、またさらに前記設定点命令は前記ＣＰＵが計算指向状態にある期間中に前記動作温度が所定の温度設定点に近いことを決定する命令をさらに含む、第２１項記載の検出されたＣＰＵの動的動作特性を制御する装置。
（２４）  前記ＣＰＵが計算指向状態にあるかどうかを決定し、前記計算指向状態中に前記割り込み条件が存在するかどうかをさらに決定する、計算指向決定命令をさらに含む、第２１項記載の検出されたＣＰＵの動的動作特性を制御する装置。
【０１１１】
（２５）  前記ＣＰＵが計算指向状態にあるかどうかを決定する計算指向決定命令をさらに含み、前記設定点命令は前記計算指向状態中に前記少なくとも１つの動的動作特性に前記割り込み条件が存在するかどうかを決定する命令をさらに含み、前記計算指向状態中に前記割り込み条件が存在する場合は前記割り込み条件を修正する修正命令をさらに含む、第２１項記載の検出されたＣＰＵの動的動作特性を制御する装置。
（２６）  前記ＣＰＵの電力節約が可能かどうかを決定し、前記ＣＰＵの電力節約が可能な場合は、前記電力節約から生じる前記割り込み条件の存在と制御信号に従って前記クロック速度を前記保存されたクロック速度に対して制御する、電力節約命令をさらに含む、第２１項記載の検出されたＣＰＵの動的動作特性を制御する装置。
【０１１２】
（２７）  前記ＣＰＵが計算指向状態にあるかどうかを決定し、前記計算指向状態中に前記ＣＰＵが実行する予定の計算指向命令の量を決定することにより前記計算指向状態の継続時間を決定する、計算指向決定命令をさらに含む、第２１項記載の検出されたＣＰＵの動的動作特性を制御する装置。
（２８）  前記ＣＰＵが計算指向状態にあるかどうかを決定し、前記計算指向状態中に前記ＣＰＵが実行する予定の計算指向命令の量を決定することにより前記計算指向状態の継続時間を決定し、さらに前記計算指向状態中に前記割り込み条件が存在する場合は前記割り込み条件を修正する、計算指向決定命令をさらに含む、第２１項記載の検出されたＣＰＵの動的動作特性を制御する装置。
【０１１３】
（２９）  前記ＣＰＵが計算指向状態にあるかどうかを決定し、前記計算指向状態の継続時間を決定し、さらに前記クロック速度を前記保存されたクロック速度に対して修正して前記計算指向状態中に前記割り込み条件が存在しないようにする、計算指向決定命令をさらに含む、第２１項記載の検出されたＣＰＵの動的動作特性を制御する装置。
（３０）  前記検出回路はサーミスタ検出装置を備える、第２１項記載の検出されたＣＰＵの動的動作特性を制御する装置。
（３１）  前記所定の関係と前記所定の設定点を前記コンピュータのメモリ位置内に記憶するメモリ回路をさらに備える、第２１項記載の検出されたＣＰＵの動的動作特性を制御する装置。
【０１１４】
（３２）  検出されたＣＰＵの動的動作特性を制御する方法と装置（１３０）であって、ＣＰＵが第１クロック速度で動作中に（１３４）少なくとも１つの動的ＣＰＵ動作特性を検出する（１４０）方法と回路を含む。装置（１３０）は、少なくとも１つの検出されたＣＰＵの動的動作特性が前記少なくとも１つの動的動作特性に関連する所定の設定点に対して所定の関係を確立する（１４０）ことにより、設定点割り込み条件が存在するかどうかを決定する（１４０）。設定点割り込み条件が存在する場合は、回路と命令は第１クロック速度に対してクロック速度を制御する（１４４）。設定点割り込み条件が存在しない場合は、回路と命令は割り込み条件を決定してクロック速度を制御する上記ステップを繰り返す。またこの方法と装置（１３０）はＣＰＵが計算指向状態にあるかどうかを決定する（１４２）。この動作は、実時間の電力節約装置および方法（２０）と共に、この発明の特に優れた機能である。
【図面の簡単な説明】
【０１１５】
【図１】この発明の好ましい実施態様の自己同調状態を述べる流れ図。
【図２】この発明の実施態様で用いる活動的な電力節約モニタを説明する流れ図。
【図３】この発明の実施態様で用いる活動的な電力節約モニタを説明する流れ図。
【図４】この発明の実施態様で用いる活動的な電力節約モニタを説明する流れ図。
【図５】この発明が用いる温度管理法の簡単化した流れ図。
【図６】この発明が用いる計算指向決定ステップの流れ図。
【図７】この発明の実施態様が用いる、活動的な電力節約に関連するハードウエアを表す簡単化した略図。
【図８】この発明の一実施態様の休眠ハードウエアの略図。
【図９】この発明の別の実施態様の休眠ハードウエアの略図。
【図１０】この発明の別の実施態様の多重ＣＰＵの動的動作特性の制御機能の流れ図。
【符号の説明】
【０１１６】
１３０  ＣＰＵの動的動作特性の制御装置
１３４  現在のクロック速度の決定
１４０  設定点割り込み条件の存在の決定
１４２  ＣＰＵが計算指向状態にあることの決定
１４４  休眠クロック速度の制御
【図１】
2007128556.tif 000003
【図２】
2007128556.tif 000004
【図３】
2007128556.tif 000005
【図４】
2007128556.tif 000006
【図５】
2007128556.tif 000007
【図６】
2007128556.tif 000008
【図７】
2007128556.tif 000009
【図８】
2007128556.tif 000010
【図９】
2007128556.tif 000011
【図１０】
2007128556.tif 000012