(57)【要約】オペレーティングシステムをサポートするための一定の時間基準を用いるコンピュータシステムにおいて、電力管理システムを実現するシステムである。本システムは、ＰＣＩクロック信号とＣＰＵクロック信号を用いて一定の時間基準を生成することにより、電力管理システムがコンピュータシステムのＣＰＵ周波数信号を変化させたとき、または、ＣＰＵ周波数が変わったときに、オペレーティングシステムが前記一定の時間基準を用いるようにする。電力管理システムは、通常の電力管理システム動作間で、オペレーティングシステムをサポートするために用いられる動作の周波数と整合をとるための回路を備えている。
2004512614.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムに対し、当該コンピュータシステムが複数の省電力モードの一つに入るべきことを提示し、
前記提示がなされた場合、ＣＰＵのクロック周波数を、電力を節減するよう変更し、
前記ＣＰＵクロック周波数の変化に関わらず、一定の時間基準信号を生成する、コンピュータシステムにおける節電方法。
【請求項２】
前記提示は、省電力モードレジスタへの複数のビットの書き込みを含み、
前記ＣＰＵクロック周波数の変更は、ＰＬＬ内の省電力値に基づいて行われ、
前記方法は、さらに、
前記省電力モードレジスタの前記複数のビットを用いて、前記提示がなされ、前記ＣＰＵクロック周波数を変更する前に、ＰＬＬ内のどの省電力値を用いるかを決定するステップと、
用いられる省電力値に応じて前記複数の省電力モードの一つに入るステップとを含む、請求項１に記載の方法。
【請求項３】
前記コンピュータシステムが前記複数の省電力モードの一つに入る前に、メモリユニットへ、前記ＣＰＵクロック周波数と独立に動作するよう指示するステップをさらに含む、請求項１に記載の方法。
【請求項４】
前記メモリユニットがＳＤＲＡＭを含み、
前記方法が、さらに、
ＳＤＲＡＭをセルフリフレッシュモードで動作させる複数のビットをメモリコントローラへ書き込むステップと、
入力されるメモリアクセスに対して前記ＳＤＲＡＭをアクティブにするステップと、
前記メモリアクセスが完了したときに、前記ＳＤＲＡＭをセルフリフレッシュモードに戻すステップと、
前記メモリコントローラ内の複数ビットをクリアするステップと、
前記メモリコントローラ内の複数ビットがクリアされたとき、通常のＳＤＲＡＭ動作を再開するステップとを含む、請求項３に記載の方法。
【請求項５】
前記一定の時間基準信号の生成が、
ＣＰＵクロックにより生成された周波数信号を入力するステップと、
前記周波数信号を分割して分割周波数信号を生成するステップと、
前記分割周波数信号を、ＰＣＩクロックにより生成される第２の周波数信号に同期させるステップと、
前記ステップの結果から前記一定の時間基準信号を生成するステップとを含む、請求項１に記載の方法。
【請求項６】
第１データ値を第１レジスタに格納するステップと、
前記第１データ値を、前記一定の時間基準信号の速さで増加させるステップと、
第２データ値を第２レジスタに格納するステップと、
第１データ値と第２データ値とを比較するステップと、
前記比較結果に基づいて、オペレーティングシステムへの割り込みを選択的に生成するステップとをさらに含む、請求項１に記載の方法。
【請求項７】
前記第１データ値と第２データ値との比較が、ＣＰＵクロック周波数の速さで行われ、
前記方法は、
前記第１データ値と第２データ値との比較の結果、第１データ値と第２データ値とが等しい場合、オペレーティングシステムへの割り込みを発生させるステップをさらに含む、請求項６に記載の方法。
【請求項８】
前記一定の時間基準信号の速さで、前記オペレーティングシステムに対して複数の割り込みが選択的に生成され、
前記方法は、
ＣＰＵクロック周波数が変わるときに前記複数の割り込みを選択的に生成するステップをさらに含む、請求項６に記載の方法。
【請求項９】
前記オペレーティングシステムが、オペレーティングシステムタスクを実行するために前記複数の割り込みを使用する、請求項８に記載の方法。
【請求項１０】
コンピュータシステムに対する、当該コンピュータシステムが複数の省電力モードの一つに入るべきことの提示が、複数の特定されたコンピュータ資源が指定された時間アイドル状態であった場合に発生する、請求項１に記載の方法。
【請求項１１】
前記複数の特定コンピュータ資源の動作に応じて前記複数の省電力モードの間でスイッチするステップと、
前記複数の特定コンピュータ資源がアクティブになったとき、前記コンピュータシステムへ、通常のＣＰＵ動作周波数に戻るよう指示するステップとをさらに含む、請求項１０に記載の方法。
【請求項１２】
コンピュータシステムに省電力モードに入るよう指示するソフトウェアと、
前記ソフトウェアによる指示に従って、ＣＰＵクロック周波数を低下させて電力を節減する省電力回路と、
ＣＰＵクロック周波数の変化にかかわらず一定の周波数信号を生成する一定周波数生成部と、
前記一定の周波数信号を用いて、オペレーティングシステムへの割り込みを選択的に生成するオペレーティングシステムサポートとを備えた、コンピュータシステム用の電力管理システム。
【請求項１３】
前記ソフトウェアによる指示は、省電力モードレジスタへの複数のビットの書き込みを含み、
前記システムはさらに、前記省電力モードレジスタの前記複数のビットを用いて、どの省電力モードに入るかを決定するＰＬＬ回路を備えた、請求項１２に記載のシステム。
【請求項１４】
前記ソフトウェアが、ハードウェアを、現在のモードから所望の省電力モードに順序付ける、請求項１２に記載の方法。
【請求項１５】
前記一定周波数生成部が、
ＣＰＵクロックより生成された第１の周波数信号を入力し、前記第１の周波数信号を分割することにより、分割された周波数信号を生成する分周器と、
前記分割された周波数信号とＰＣＩクロックより生成された第２の周波数信号を入力し、前記分割された周波数信号を前記第２の周波数信号と同期させることにより、前記一定周波数信号を生成する周波数同期部とを備えた、請求項１２に記載の方法。
【請求項１６】
前記オペレーティングシステムサポートが、
第１のデータ値を持つ第１のレジスタと、
前記第１のデータ値と前記ＣＰＵ周波数の速さで比較される第２のデータ値を持つ第２のレジスタとを備え、
前記第１のレジスタが、前記第１のデータ値を、前記一定周波数信号の速さで増加させる、請求項１２に記載のシステム。
【請求項１７】
前記第１のデータ値と第２のデータ値との比較が、オペレーティングシステムへの割り込みをいつ発行するかを決定するために用いられる、請求項１６に記載のシステム。
【請求項１８】
前記ＰＬＬ回路が、省電力回路の一部を含み、
前記ＰＬＬ回路が、複数の省電力モードに対する複数の省電力値を持つ複数の分周器を備えた、請求項１３に記載のシステム。
【請求項１９】
前記複数の分周器が、前記コンピュータシステムの異なる動作周波数を示す値を持つ、請求項１８に記載のシステム。
【請求項２０】
前記ＰＬＬ回路が、前記ＰＬＬにおける前記複数の分周器の動作ＣＰＵ周波数の値に基づいて前記ＣＰＵクロック周波数を変化させ、前記動作ＣＰＵ周波数は、省電力モードレジスタの複数ビットにより決定される、請求項１９に記載のシステム。
【発明の詳細な説明】
【０００１】
発明の背景
図１に示すように、近代的なコンピュータシステムは、ハードウェア（１０）、オペレーティングシステム（１２）、アプリケーションプログラム（１４）、および、ユーザ（１６， １８， ２０， ２２）というおよそ４つの概念的要素に分割できる。ハードウェア（１０）、すなわち、マイクロプロセッサ、メモリ、および入出力デバイスは、基本的なコンピュータ資源を提供する。コンパイラ、データベースシステム、ソフトウェア、ビジネスプログラムなどのアプリケーションプログラム（１４）は、ユーザの演算的な問題を解決するためにこれらの資源が用いられる方法を定義する。ユーザ（１６， １８， ２０， ２２）、人間、機械、および他のコンピュータは、ハードウェアを順に稼働させるアプリケーションプログラムを用いて様々な問題を解決する。
【０００２】
オペレーティングシステム（ＯＳ） （１２）は、コンピュータシステムのユーザとコンピュータハードウェアとの間の仲介人として機能するプログラムである。オペれー手雄イングシステムの役割は、ユーザがプログラムを便利にかつ効率的に実行できる環境を提供することにある。コンピュータシステムは、例えば中央処理装置（ＣＰＵ）時間、メモリスペース、ファイル格納スペース、入出力（Ｉ／Ｏ）デバイスなど、問題を解決することが要求される多くの資源（ハードウェアおよびソフトウェア）を有する。オペレーティングシステムは、これらの資源のマネージャとして機能し、タスクに必要な特定のプログラムやユーザへそれらを割り当てる。資源に対する、多くの、おそらく互いに矛盾する要求があり得るので、オペレーティングシステムは、コンピュータシステムを効率的かつ公平に稼働させるために、どの要求を資源へ割り当てるのかを決定しなければならない。
【０００３】
さらに、オペレーティングシステムは、コントロールプログラムとして特徴づけることができる。コントロールプログラムとは、エラーやコンピュータの不正使用を防止するために、ユーザプログラムの実行を制御するものであり、特に、Ｉ／Ｏデバイスの動作に関係する。一般に、オペレーティングシステムは、それが、有用なコンピュータシステムを創造するという問題を解決する合理的な方法であるという理由で存在する。コンピュータシステムの基本的な目標は、ユーザプログラムを実行し、ユーザの問題解決を容易にすることである。この目標に向けて、コンピュータハードウェア（１０）は構築されている。ハードウェアそのもの単体を扱うことは容易ではないので、アプリケーションプログラムが開発された。これらの様々なプログラムは、例えばそれらのＩ／Ｏオペレーション制御のような、いくつかの共通したオペレーションを必要とする。そこで、資源の制御および割り当ての共通機能は、１つのソフトウェアにまとめられた。それがオペレーティングシステムである。オペレーティングシステムは、上述のタスクや、スレッドスケジューリング、プロセススケジューリング、イベントスケジューリング、および他のシステム関連動作などの管理的なタスクをサポートするために、一定の時間基準（ｃｏｎｓｔａｎｔ ｔｉｍｅ ｒｅｆｅｒｅｎｃｅ）を必要とする。
【０００４】
一般的なオペレーティングシステムは、一定の時間基準としてＣＰＵクロックを用いる。最近のＣＰＵは、１６６ＭＨｚから６００ＭＨｚを超える周波数を有する。例えば、カリフォルニアのパロアルトのサン・マイクロシステムズによって開発されたＵｌｔｒａＳｐａｒｃ−ＩＩｅマイクロプロセッサは、５００ＭＨｚ以上のスピードで動作する。これはつまり、このプロセッサが１秒に５００×１０６回のＣＰＵクロックサイクルを完了することを意味する。
【０００５】
電力を節減するために、いくつかのコンピュータシステムは、電力制御機構を取り入れている。例えば、エナジースター（Ｅｎｅｒｇｙ Ｓｔａｒ（“Ｅ＊”））電力条件は、システムがアイドル状態のときのシステムの消費電力が、通常稼働時の消費電力レベルの１５％まで低減されることを要求する。この目標を達成するために、システムは、活動していないデバイス（ディスクドライブ、ネットワークカードなど）の電源を切ったり、あるいは動作周波数を低くしたりしなければならない。さらに、ＣＰＵそのものが省電力モードに入らなければならない。なぜなら、システム中でＣＰＵが最も消費電力が高いデバイスであることが多いからである。
【０００６】
電力を節減するために、ＣＰＵは動作周波数を低くしなければならない。ＣＰＵの電源を完全に切ることはできない。なぜなら、それは、実際、システム全体をシャットダウンすることになるからである。ＣＰＵが動作周波数を低くしたとき、オペレーティングシステムの時間基準が変化し、その結果として、オペレーティングシステムは、変化する基準時間に従って、その任務を果たすこととなる。異なる周波数モードに変化する間に、オペレーティングシステムは、周波数変化の前に保持していた絶対的な時間基準を失い、周波数変化として、異なる割合で増加するＣＰＵコアクロックを用いることで対処する。
【０００７】
オペレーティングシステムは、互いに異なるタスクにシステム資源を指定して割り当てるので、これらのタスクを効果的かつ効率的に動作させるためには、一定の時間基準を持たなければならない。一定の時間基準がなければ、オペレーティングシステムは、変動する時間基準を用いてタスクのスケジュールを試みなければならなくなる。これは、オペレーティングシステムが一定の時間基準が確立されるのを待つ間に多くのクロックサイクルのロスを引き起こし、最終的にはこの影響がシステムパフォーマンスを悪化させることになる。
【０００８】
従来の技術では、システムのＣＰＵコア周波数が変更されるときは、オペレーティングシステムにシステムハードウェアへの要求や割り込みを遅らせるようになっている。このような仕組みを実現するためのハードウェアは、オペレーティングシステムへの定期的な割り込みを生成するためにクロックサイクルの基礎をＣＰＵクロックとするレジスタを有する。しかし、システムが省電力モードに入ったりあるいは省電力モードから脱したりすることによってＣＰＵクロック周波数が変化したとき、割り込み周期が変化することにより、オペレーティングシステムは不確定的にイベントをスケジュールする。従来、オペレーティングシステムが、システムが周波数変化の遷移を完了するのを単純に待ち、多くのクロックサイクルのロスを許容するシステムも実現されている。全ての要求や割り込みは、システム周波数が所望の周波数へ完全に変化するまで待たされる。
【０００９】
発明の要旨
一つの側面において、本発明は、コンピュータ資源がアイドル状態であるときにコンピュータシステムの電力を節減するための電力管理スキームを実施するシステムに関する。このシステムは、さらに、システムソフトウェアに指定されたときに入ることのできる複数の省電力モードを提供する。このシステムは、さらに、事前のシステム条件に対する最小限の変化による電力管理スキームの実現を含む。
【００１０】
他の側面において、本発明は、イベントスケジューリング、プロセススケジューリング、および他の管理的な目的へのオペレーティングシステムサポートへ一定の時間基準を提供する方法に関する。この方法は、さらに、システムが省電力モードへ移行するときや、システムが省電力モードにあるときにも、一定の時間基準を提供することを含む。
【００１１】
他の側面において、本発明は、ソフトウェアが電力管理スキームを実施する方法に関する。この方法は、コンピュータ資源がアイドル状態のときに、ハードウェアがどのように指定された省電力モード要求に応答すべきかを監視し決定することによって電力管理スキームを制御するソフトウェアを含む。
【００１２】
本発明の他の側面および利点は、以下の説明および添付された請求の範囲によって明らかとなるであろう。
【００１３】
発明の詳細な説明
本発明は、コンピュータ資源がアイドル状態のときにコンピュータシステムの電力を節減する電力管理スキームを実施するシステムに関する。このシステムは、また、コンピュータシステムのＣＰＵ周波数が異なる周波数間で切り替わろうとするときに、ＰＣＩインタフェースを用いて、オペレーティングシステム（ＯＳ）サポートに一定の時間基準を提供するシステムに関する。オペレーティングシステムに一定の絶対的な時間基準を提供するために、本発明の実施形態は、ＣＰＵ周波数と共にＰＣＩ周波数を用いることによって一定の時間基準周波数を生成するスキームを実行する。
【００１４】
ＰＣＩは、最近のコンピュータシステムのほとんどにおいて、異なるシステム構成要素を接続するために各システムに組み込まれているローカルバス規格である。ＰＣＩは、通常、３２ビットバスとして実現されているが、６４ビットバスであり、３３ＭＨｚまたは６６ＭＨｚのクロックスピードで動作する。
【００１５】
上述したＥスター（“Ｅ＊”）条件を満たすために、システムはＣＰＵ周波数を低くすることによって電力を節減できる方法を実施しなければならない。表１は、ＵｌｔｒａＳｐａｒｃ−ＩＩｅマイクロプロセッサの異なる周波数モードにおける消費電力の推定レベルを示す。
【００１６】
【表１】
2004512614.tif 000003
【００１７】
消費電力条件を満たすために、ＵｌｔｒａＳｐａｒｃ−ＩＩｅは、ＣＰＵクロックを通常の動作周波数の１／２や１／６に変更することにより、電力管理スキームを実行する。一般的には、スキームの仕様はシステムソフトウェアによりプログラム化が可能である。表２に、システムソフトウェアが電力消費量を上下させるために遂行する順序付けを示す（以下でさらに図３を参照して説明する）。
【００１８】
【表２】
2004512614.tif 000004
【００１９】
１／６という割合の限定は、内部ＰＣＩ同期部の要件である、
ｆＣＰＵ ＞＝ ２ ｆＥＸＴＥＲＮＡＬ＿ＰＣＩ
による。
【００２０】
通常の周波数で動作しているシステムと省電力モードで動作しているシステムとの間の違いの一つは、システムが省電力モードである場合は、全ての要求や割り込みが、より低いクロックレートで処理されることである。
【００２１】
システムソフトウェアは、システムトラフィックを監視し、内部ＣＰＵクロックを、当該ソフトウェアが適切であると判断する任意のモードに戻すことを決定できる。
【００２２】
図２は、本発明の一実施形態のブロック図である。この図は、電力管理ユニット（３０）を含む電力管理スキームのトップレベルのハードウェアレイアウトを示す。電力管理ユニット（３０）のデフォルトの動作モードは、フルパワーでの動作である。コンピュータシステムが所定の期間アイドル状態であることをシステムソフトウェアが検出すると、当該ソフトウェアは、図示しないＥスターモードレジスタ（“ＥＳＴＡＲ＿ＭＯＤＥ”）に０を書き込むことにより、システムハードウェアに消費電力低下を命令する。このコマンドにより、電力管理ユニット（３０）は、指定された省電力モードまで消費電力を下げるために、一連のステップを順次行う。電力管理ユニット（３０）は、まず、ＳＤＲＡＭ（３２）をセルフリフレッシュモードで動作するようプログラムする。ＳＤＲＡＭ（３２）は、従来のメモリよりもはるかに高いクロックスピードで動作することが可能であるダイナミックランダムアクセスメモリ（ＤＲＡＭ）の一種である。省電力モードに入るまえに、ＳＤＲＡＭ（３２）は、コンピュータシステムのＣＰＵバスと同期をとり、機能するために連続的にリフレッシュされる。しかし、省電力モードに入るとき、電力管理ユニット（３０）は、ＳＤＲＡＭ（３２）を、ＣＰＵクロックとは独立にリフレッシュするように、セルフリフレッシュモードで動作するようプログラムする。さらに、ＳＤＲＡＭ（３２）は、通常動作モードにあるときよりも、セルフリフレッシュモードにあるときの方が、消費電力が少ない。
【００２３】
ＳＤＲＡＭ（３２）は、図示しないメモリ制御レジスタ（ＭＣ０）に書き込みを行うことにより、セルフリフレッシュモードで動作するよう構成できる。メモリ制御レジスタは、ソフトウェアが、特定のメモリユニットに対する所望のステータスを表すために、書き込みを行うレジスタである。システムソフトウェアがハードウェアに消費電力低下を指示すると、システムソフトウェアは、セルフリフレッシュ有効ビットを有効化する（ＭＣ０［３３］＝ｌ）。一旦このビットが有効化されると、ソフトウェアはハードウェアに対する命令を生成し、この命令により、ＳＤＲＡＭ（３２）の動作モードをセルフリフレッシュモード（すなわちスリープモード）に変更する。ハードウェアは、ＳＤＲＡＭ（３２）への新たなアクセスがあったとき、すなわち、データをＳＤＲＡＭ（３２）から取り出す必要が生じたときに、自動的にＳＤＲＡＭ（３２）を再起動する。このアクセスが完了すると、ハードウェアはＳＤＲＡＭ（３２）をセルフリフレッシュモードに戻す。通常のＳＤＲＡＭ（３２）の動作を復活させるためには、システムソフトウェアがセルフリフレッシュ有効ビットを明示的にクリアしなければならない（ＭＣ０［３３］＝０）。
【００２４】
一旦、ＳＤＲＡＭ（３２）がスリープモードで動作するようプログラムされると、電力管理ユニット（３０）は、クロック制御ユニット（３６）への信号を生成することにより、ＣＰＵ動作クロック周波数を、通常の動作周波数の１／２または１／６まで下げる。クロック制御ユニット（３６）は、通常、ＣＰＵクロック信号やＰＣＩクロック信号を含む全てのクロック信号を管理している。
【００２５】
それから、電力管理ユニット（３０）は、いくつかの外部ＰＣＩデバイスの動作周波数を低下させあるいは動作停止させるために、多目的出力（ＧＰＯ）ユニット（３４）を経由してクロック制御ユニット（３６）へ入るクロック制御信号の生成を始める。２つのＧＰＯピン（図示せず）が、クロック制御ユニット（３６）へ、外部ＰＣＩデバイスに対するクロックを３３ＭＨｚから０ＭＨｚへ低速化するのか、あるいは、クロックスピードを０ＭＨｚから３３ＭＨｚへ上昇させるのかを指示することを助けるために、設けられている。
【００２６】
一定の時間基準信号をオペレーティングシステムに対して生成するために、電力管理ユニット（３０）は、ＰＣＩバスモジュール（ＰＢＭ）（３８）を備えている。ＰＢＭ（３８）は、外部デバイスと内部システムハードウェアとの間のＰＣＩインタフェースの主要部である。ＰＢＭ（３８）は、外部ＰＣＩデバイスにより発生するダイレクトメモリアクセス（ＤＭＡ）要求だけでなく、プログラムされた入出力（ＰＩＯ）要求のタイミングも取り扱う。ＰＩＯは、ＣＰＵから発生するデータの二つのデバイス間での転送方法である。本発明の実施形態では、電力管理ユニット（３０）は、ＰＢＭ（３８）の一部を使用して、ＰＣＩクロックとＣＰＵクロックを用いた一定の時間基準信号を生成する（以下に説明する）。
【００２７】
システムソフトウェアは、図３のフロー図に示した電力管理スキームを実施する。表３に、図３に示す各々の遷移に必要なステップの一覧を示す。
【００２８】
【表３】
2004512614.tif 000005
【００２９】
高位モードから低位モードへの遷移、すなわち、遷移Ａ，Ｄ，Ｈがいつ起こったとしても、表３に一覧表示されたステップに加えて考慮が必要である。遷移Ａについては、システムソフトウェアは、元のオートリフレッシュカウントを読みとり、新たなオートリフレッシュカウント（ＳＤＲＡＭ仕様に基づいた元のオートリフレッシュカウントよりも低い）をプログラムしなければならない。その後、当該ソフトウェアは、新たなリフレッシュカウントがハードウェアに確実にロードされるように、（６４＊オートリフレッシュカウントサイクル＋ 新たなオートリフレッシュサイクル）だけ待たなければならない。
【００３０】
遷移Ｄの場合、システムソフトウェアは、元のオートリフレッシュカウントを読みとり、新たなオートリフレッシュカウント（ＳＤＲＡＭ仕様に基づいた元のオートリフレッシュカウントよりも低い）をプログラムしなければならない。その後、当該ソフトウェアは、新たなリフレッシュカウントがハードウェアに確実にロードされるように、（６４＊オートリフレッシュカウントサイクルの１／２＋ 新たなオートリフレッシュサイクル）だけ待たなければならない。さらに、遷移Ｈの場合、システムソフトウェアは、元のオートリフレッシュカウントを読みとり、新たなオートリフレッシュカウント（ＳＤＲＡＭ仕様に基づいた元のオートリフレッシュカウントよりも低い）をプログラムしなければならない。
【００３１】
図４は、本発明の一実施形態にかかる電力管理システムのハードウェアのブロック図である。この図は、その一部がＰＢＭ同期ユニット（ＰＢＭ＿ＳＹＮＣ）（４２）として機能するように指定されたＰＢＭユニット（４０）を含む。ＰＢＭ＿ＳＹＮＣ（４２）は、ＰＣＩ周波数信号（すなわちｉｎｔ＿ＰＣＩ）とＣＰＵクロック周波数信号（すなわちＣＰＵクロック）とを用いて、一定周波数を生成する機能を持つ。ＰＢＭ＿ＳＹＮＣ（４２）は、１２分割周波数カウンタ（４４）と周波数同期部（４５）を有する。内部ＰＣＩクロック周波数であるｉｎｔ＿ＰＣＩ周波数信号は、１２分割周波数カウンタ（４４）の入力として与えられる。１２分割周波数カウンタ（４４）は、ｉｎｔ＿ＰＣＩ周波数信号を１２で割り、分割されたｉｎｔ＿ＰＣＩ周波数信号を出力する。分割されたｉｎｔ＿ＰＣＩ周波数信号は、それから、信号周波数同期部（４６）へ渡される。信号周波数同期部（４６）は、分割されたｉｎｔ＿ＰＣＩ周波数信号とＣＰＵクロック周波数信号とを同期させる。例えば、本発明の一実施形態において、ｉｎｔ＿ＰＣＩ周波数信号は、６６ＭＨｚであり、ＣＰＵクロック周波数信号は５００ＭＨｚである。従って、ＰＢＭ＿ＳＹＮＣ（４２）は、ＣＰＵクロック周波数信号と同期がとられた５．５ＭＨｚの周波数信号を出力する。
【００３２】
この結果としてＰＢＭ＿ＳＹＮＣ（４２）より得られた同期出力信号は、ＳＴＩＣＫＤＰユニット（４８）に対するｃｌｏｃｋ＿ｅｎａｂｌｅ信号として機能する。ＳＴＩＣＫＤＰユニット（４８）は、オペレーティングシステムに対してイベントおよびプロセススケジューリングの周期的な割り込みを発生する回路を備えている。ＳＴＩＣＫＤＰユニット（４８）への入力として与えられるｃｌｏｃｋ＿ｅｎａｂｌｅ信号は、ＳＴＩＣＫＤＰユニット（４８）へその動作のための時間基準を与える役割を持つ。図５，６を参照する以下の説明において、ＳＴＩＣＫＤＰユニット（４８）の動作をより詳細に説明する。
【００３３】
ＳＴＩＣＫＤＰユニット（４８）は、データ２ビットを、ＰＬＬユニット（５０）へ渡す。このデータ２ビットは、２ビットバス（ＥＳＴＡＲ＿ＭＯＤＥ［１：０］バス）上で渡され、Ｅスターモードレジスタの２ビット値を含む。ＰＬＬ（５０）は、特定の省電力モード値を格納するために電力管理スキームにより用いられる。例えば、ＰＬＬ（５０）は、特定の省電力モードを示す特定値を割り当てられた分周器（図示せず）を含む。さらに、いくつかの条件（後述）が満たされた場合、ＳＴＩＣＫＤＰユニット（４８）は、プロセッサに対してトラップ信号を生成する必要があることをトラップ（ＴＲＡＰ）ユニット（５２）に知らせるｓｔｉｃｋ＿ａｌｍ信号を出力する。以下に、上述の構成要素についてのより詳しい説明を記載する。
【００３４】
図５は、本発明の一実施形態にかかるＳＴＩＣＫＤＰユニット（６０）のハイレベルブロック図である。ＳＴＩＣＫＤＰユニット（６０）の入出力信号は、図５および表４に示すとおりである。
【００３５】
【表４】
2004512614.tif 000006
【００３６】
ここで、図６に、表４に一覧表示された信号の機能を説明するために、本発明の一実施形態のローレベルブロック図を示す。この図には、ＳＴＩＣＫＤＰユニット（６２）の回路と、ＰＢＭ＿ＳＹＮＣ（７０）およびＴＲＡＰユニット（８４）に対するＳＴＩＣＫＤＰユニット（６２）のインタフェースも共に示す。
【００３７】
ＰＢＭ＿ＳＹＮＣ（７０）は、上述のとおり、１２分割周波数カウンタ（７２）と周波数同期部（７４）とを有する。ｉｎｔ＿ＰＣＩ周波数信号は、１２分割周波数カウンタ（７２）に対する入力となる。１２分割周波数カウンタ（７２）は、ｉｎｔ＿ＰＣＩ周波数信号を１２で割り、分割されたｉｎｔ＿ＰＣＩ周波数信号を周波数同期部（７４）へ出力する。周波数同期部（７４）は、分割されたｉｎｔ＿ＰＣＩ周波数信号を、ＣＰＵクロック周波数信号と同期させる。周波数同期部（７４）は、それから、ｐｂｍ＿ｓｙｎｃ＿ｄｉｖ信号を出力する。このｐｂｍ＿ｓｙｎｃ＿ｄｉｖ信号は、１２分割されたｉｎｔ＿ＰＣＩ周波数信号の周波数を持ち、ＣＰＵクロック周波数信号に同期した信号である。
【００３８】
ｉｎｔ＿ＰＣＩ周波数信号は、上述のように、内部ＰＣＩクロックである。本発明の一実施形態において、外部ＰＣＩクロックの周波数が３３．３ＭＨｚであるとき、ｉｎｔ＿ＰＣＩ周波数信号の周波数は６６．６７ＭＨｚである。ＵｌｔｒａＳｐａｒｃ−ＩＩｅの場合、外部ＰＣＩクロックは、省電力モードにかかわらず、常に固定されたままである。電力管理スキームで実行される省電力モードは、ＣＰＵコア周波数を変化させるだけであり、このスキームでサポートされる全ての省電力モードにおいて、ＰＣＩクロックは変更されずに保持される。
【００３９】
ＵｌｔｒａＳｐａｒｃ−ＩＩｅマイクロプロセッサを用いた本発明の一実施形態の場合、Ｅスターモード１／６をサポートするのであれば、ｉｎｔ＿ＰＣＩ周波数信号が６６ＭＨｚを超えてはならない。これは、ＣＰＵコア周波数とＰＣＩコア周波数との間のインタフェースの制限によるものであり、
ｆＣＰＵ ＞＝ ２ ｆＥＸＴＥＲＮＡＬ＿ＰＣＩ
が条件となる。Ｅスターモード１／６は、通常モードにおいて５００ＭＨｚで動作するプロセッサに対して、通常動作周波数の１／６の値（８３．３ＭＨｚ）も、
ｆＣＰＵ ＞＝ ２ ｆＥＸＴＥＲＮＡＬ＿ＰＣＩ
の条件を満たすように、選択されるものである。
【００４０】
図６に示すＣＰＵクロック周波数信号は、ＣＰＵコア内部クロック周波数であり、一般的には５００ＭＨｚ以上である。
【００４１】
オペレーティングシステムが、周波数が変化する環境（すなわち省電力モードへの出入り）において、プロセスおよびイベントスケジューリングのための時間の経過を常に意識できるようにするために、本発明の実施形態は、Ｅスターモードレジスタ （ＥＳＴＡＲ＿ＭＯＤＥ）（７８）を有するＳＴＩＣＫＤＰユニット（６２）と、スティック比較レジスタ（ＳＴＩＣＫ＿ＣＯＭＰＡＲＥ）（８０）と、スティックレジスタ（ＳＴＩＣＫ＿ＲＥＧ）（８２）と、電力管理システムが用いる追加の回路を有する。ＳＴＩＣＫ＿ＣＯＭＰＡＲＥ（８０）とＳＴＩＣＫ＿ＲＥＧ（８２）は、ＣＰＵクロック周波数信号が変化するか否かにかかわらず、オペレーティングシステムへ周期的な割り込みを提供する機能を持つ。すなわち、ＳＴＩＣＫ＿ＣＯＭＰＡＲＥ（８０）とＳＴＩＣＫ＿ＲＥＧ（８２）は、省電力モードへの出入りの際にＣＰＵクロック周波数信号が変化することで割り込み周期が変化して不確定なイベントスケジューリングが発生することを防止するために設けられている。
【００４２】
ＳＴＩＣＫ＿ＲＥＧ（８２）は、６４ビットのレジスタであり、オペレーティングシステムのカウンタとして機能し、割り込みや処理要求を発行するための一定の時間基準を提供する。
【００４３】
ＳＴＩＣＫ＿ＲＥＧ（８２）（ＳＴＩＣＫ＿ＲＥＧ［６３］）の最上位ビットは、常に“１”であり、このビット位置はプロセッサによって書き込まれず、読み出されもしない。残りの６３ビットは、オペレーティングシステム用の現在のカウントを保持する。ＳＴＩＣＫ＿ＲＥＧ（８２）は、システムリセットの後にカウントを開始する。ＳＴＩＣＫ＿ＣＯＭＰＡＲＥ（８０）は、プロセッサによって書き込まれ、読み出される６４ビットのレジスタである。ＳＴＩＣＫ＿ＣＯＭＰＡＲＥ（８４）が保持するデータ値は、１２分割された内部ＰＣＩクロックの速さでＳＴＩＣＫ＿ＲＥＧ（８２）内のデータ値と比較される。言い換えれば、ＳＴＩＣＫ＿ＣＯＭＰＡＲＥ（８０）は、増加するＳＴＩＣＫ＿ＲＥＧ（８２）と比較されるタイムアウト値を格納するために設けられている。
【００４４】
本発明の一実施形態では、ＳＴＩＣＫ＿ＣＯＭＰＡＲＥ（８０）およびＳＴＩＣＫ＿ＲＥＧ（８２）は、５．５ＭＨｚ（１２分割された内部ＰＣＩクロック）で動作する。しかし、当業者であれば、他の実施形態において、ＰＣＩ周波数に応じた異なる周波数を用いることができることは理解できるであろう。
【００４５】
上述のｐｂｍ＿ｓｙｎｃ＿ｄｉｖ信号は、ＰＢＭ＿ＳＹＮＣ（７０）により出力されたとき、ＯＲゲート（７６）においてｍｉｕ＿ｓｔｉｃｋ＿ＲＥＧ＿ｗｒ＿ｅｎ信号とＯＲ演算される。ｍｉｕ＿ｓｔｉｃｋ＿ＲＥＧ＿ｗｒ＿ｅｎ信号は、図示しないメモリインタフェースユニット（ＭＩＵ）により生成される。ＭＩＵでは、ＳＴＩＣＫ＿ＲＥＧ（８２）のアドレスが、ｒｅａｄ／ｗｒｉｔｅアクセスのためにデコードされる。ｍｉｕ＿ｓｔｉｃｋ＿ＲＥＧ＿ｗｒ＿ｅｎ信号は、ＳＴＩＣＫ＿ＲＥＧ（８２）への書き込み動作の有効信号として機能する。ＯＲゲート（７６）からの出力信号は、実際に、ＳＴＩＣＫ＿ＲＥＧ（８２）が増加しているか否かを判断するＳＴＩＣＫ＿ＲＥＧ（８２）のクロック有効信号として機能する。ＯＲゲート（７６）によるｐｂｍ＿ｓｙｎｃ＿ｄｉｖ信号とｍｉｕ＿ｓｔｉｃｋ＿ＲＥＧ＿ｗｒ＿ｅｎ信号とのＯＲ演算の主な目的は、プロセッサによるＳＴＩＣＫ＿ＲＥＧ（８２）への書き込みプロセスが発生したときに、ＳＴＩＣＫ＿ＲＥＧ（８２）が増加していないことを確認することである。ｍｉｕ＿ｓｔｉｃｋ＿ｒｅｇ＿ｗｒ＿ｅｎ信号がｐｂｍ＿ｓｙｎｃ＿ｄｉｖ信号と同時にアクティブであった場合、ＯＲゲート（７６）からの出力信号は、ＳＴＩＣＫ＿ＲＥＧ（８２）へのクロック有効入力を無効化する。すなわち、ＳＴＩＣＫ＿ＲＥＧ（８２）は、増加しない。ｍｉｕ＿ｓｔｉｃｋ＿ＲＥＧ＿ｗｒ＿ｅｎ信号がアクティブでない場合、ＯＲゲート（７６）は、ＳＴＩＣＫ＿ＲＥＧ（８２）へのクロック有効入力を有効化するアクティブ信号を出力する。これにより、ＳＴＩＣＫ＿ＲＥＧ（８２）は増加する。
【００４６】
上述したＥＳＴＡＲ＿ＭＯＤＥ（７８）は、省電力モードを有効化または無効化するために電力管理ソフトウェアによって用いられるレジスタである。このレジスタは、種々の省電力モード（１／２、１／６モード）に入るためや、通常の動作周波数モード（１／１モード）にとどまるために主に用いられる。ＥＳＴＡＲ＿ＭＯＤＥ（７８）は、６４ビット幅を持つが、最下位の２ビットのみが使用される。この２ビットの値はＰＬＬユニット（以下で図７を用いて説明）に送られる。当業者であれば、異なる数の省電力モードや、省電力モードの他の値を用いた他の実施形態を理解できるであろう。
【００４７】
ｍｉｕ＿ｅｓｔａｒ＿ＭＯＤＥ＿ｗｒ＿ｅｎ信号は、ＥＳＴＡＲ＿ＭＯＤＥ（７８）への入力となり、ＥＳＴＡＲ＿ＭＯＤＥ（７８）へのクロック有効入力として用いられる。ＥＳＴＡＲ＿ＭＯＤＥ（７８）は、ＣＰＵ周波数で動作するので、ＣＰＵクロック周波数も入力する。ｍｉｕ＿ｅｓｔａｒ＿ＭＯＤＥ＿ｗｒ＿ｅｎ信号は、ＥＳＴＡＲ＿ＭＯＤＥ （７８）のアドレスをデコードする図示しないＭＩＵから送られる。省電力モードを選択するために、プロセッサは、ｐｄｐ＿ｍｃｕ＿ｐｉｏ ［６２：０］バスを介して、ＥＳＴＡＲ＿ＭＯＤＥ（７８）へ２ビットを書き込まなければならない。ｐｄｐ＿ｍｃｕ＿ｐｉｏ［６２：０］バスは、ＥＳＴＡＲ＿ＭＯＤＥ （７８）や他のレジスタへ書き込みを行うために、プロセッサが使用する内部バスである。ｍｉｕ＿ｅｓｔａｒ＿ＭＯＤＥ＿ｗｒ＿ｅｎ信号がアクティブの場合、ＥＳＴＡＲ＿ＭＯＤＥ （７８）のクロック有効入力が有効化され、ＥＳＴＡＲ＿ＭＯＤＥ （７８）は、ＣＰＵクロック周波数の速さで、前記２ビットをｐｄｐ＿ｍｃｕ＿ｐｉｏ［６２：０］バスからラッチする。ｍｉｕ＿ｅｓｔａｒ＿ＭＯＤＥ＿ｗｒ＿ｅｎ信号がアクティブでない場合、ＥＳＴＡＲ＿ＭＯＤＥ （７８）のクロック有効入力は無効化され、レジスタ内に存在するビット値が保持される。
【００４８】
ｐｄｐ＿ｍｃｕ＿ｐｉｏ ［６２：０］バスは、また、プロセッサがＳＴＩＣＫ＿ＲＥＧ （８２）へデータを書き込むためにも用いられる。データは、マルチプレクサ（８８）によって増加値（８９）と多重化され、ＳＴＩＣＫ＿ＲＥＧ（８２）へ出力される。例えば、プロセッサが特定のデータ値をＳＴＩＣＫ＿ＲＥＧ（８２）へ書き込む必要がある場合は、プロセッサは、そのデータを、ｐｄｐ＿ｍｃｕ＿ｐｉｏ［６２：０］バス経由でマルチプレクサ（８８）の入力へ送る。マルチプレクサ（８８）は、データをＳＴＩＣＫ＿ＲＥＧ（８２）へ出力する。ＳＴＩＣＫ＿ＲＥＧ（８２）は、その後、プロセッサから受け取ったデータに基づき、増加を続ける。ＳＴＩＣＫ＿ＲＥＧ（８２）は、ＳＴＩＣＫ＿ＲＥＧ（８２）内に既に存在しているデータに基づいて増加し、増加演算部 （８９） は、ＳＴＩＣＫ＿ＲＥＧ（８２）内のデータ値を増加させ、その結果をマルチプレクサ（８８）の入力へ渡す。マルチプレクサ（８８）は、増加されたデータ値をＳＴＩＣＫ＿ＲＥＧ（８２）へ出力する。ＳＴＩＣＫ＿ＲＥＧ（８２） は、プロセッサからのデータをラッチするときに、ＣＰＵクロック周波数を用いる。
【００４９】
ｐｄｐ＿ｍｃｕ＿ｐｉｏ［６２：０］バスは、プロセッサがＳＴＩＣＫ＿ＣＯＭＰＡＲＥ（８０）にデータを書き込むためにも用いられる。ＳＴＩＣＫ＿ＣＯＭＰＡＲＥ（８０）は、ｍｉｕ＿ｓｔｉｃｋ＿ｃｍｐ＿ｗｒ＿ｅｎ信号をそのクロック有効入力として用いる。ｍｉｕ＿ｓｔｉｃｋ＿ｃｍｐ＿ｗｒ＿ｅｎ信号は、図示しないＭＩＵにより生成される。図示しないＭＩＵは、ＳＴＩＣＫ＿ＣＯＭＰＡＲＥ（８０）のアドレスをデコードし、ｍｉｕ＿ｓｔｉｃｋ＿ｃｍｐ＿ｗｒ＿ｅｎ信号を生成する。ｍｉｕ＿ｓｔｉｃｋ＿ｃｍｐ＿ｗｒ＿ｅｎ信号は、アクティブである場合、ＳＴＩＣＫ＿ＣＯＭＰＡＲＥ（８０）のクロック有効入力を有効化する。これにより、ＳＴＩＣＫ＿ＣＯＭＰＡＲＥ（８０）は、 ｐｄｐ＿ｍｃｕ＿ｐｉｏ［６２：０］バスからＣＰＵクロック周波数の速さでデータを読み込むことが可能となる。
【００５０】
ＳＴＩＣＫ＿ＣＯＭＰＡＲＥ（８０）とＳＴＩＣＫ＿ＲＥＧ（８２）は、ｐｂｍ＿ｓｙｎｃ＿ｄｉｖ周波数信号の速さで比較される。これは、この速さが、ＳＴＩＣＫ＿ＲＥＧ（８２）が増加する速さと等しいからである。ＳＴＩＣＫ＿ＣＯＭＰＡＲＥ（８０）およびＳＴＩＣＫ＿ＲＥＧ（８２）のデータ値は、排他的論理和ゲート（８３）への入力となる。ＳＴＩＣＫ＿ＣＯＭＰＡＲＥ （８０）の各ビットは、ゲート（８３）で、ＳＴＩＣＫ＿ＲＥＧ（８２）の対応するビットと排他的論理和演算される。これらにビットが共にｈｉｇｈまたは共にｌｏｗであれば、排他的論理和ゲート（８３）はｌｏｗ信号を出力する。２つのＤフリップフロップ（８１， ８７）が、ＳＴＩＣＫ＿ＣＯＭＰＡＲＥ（８０）と ＳＴＩＣＫ＿ＲＥＧ（８２）の値を一旦比較する際に、各々のビットが排他的論理和ゲート （８３）を通過するのを助けるために設けられている。第１のＤフリップフロップ（８１）は、第２のＤフリップフロップ（８７）の基準フリップフロップである。第１のＤフリップフロップ（８１）はｐｄｐ＿ｍｃｕ＿ｐｉｏ［６３］信号からのビットを入力する。第１のＤフリップフロップ（８１）は、ＣＰＵクロック周波数で動作し、ｍｉｕ＿ｓｔｉｃｋ＿ｃｍｐ＿ｗｒ＿ｅｎ信号もクロック有効入力として入力する。ソフトウェアがＳＴＩＣＫ＿ＣＯＭＰＡＲＥ［６３］へ“０”を書き込むときは、Ｄフリップフロップ （８１）へのＤ入力がｌｏｗであるので（後述）、ｍｉｕ＿ｓｔｉｃｋ＿ｃｍｐ＿ｗｒ＿ｅｎ信号がアクティブになるたびに、第１のＤフリップフロップ（８１）へのＱの反転出力はｈｉｇｈとなる。これにより、ＣＰＵクロック周波数が第１のフリップフロップ（８１）を振動させる。第２のＤフリップフロップ（８７）は、排他的論理和ゲート（８３）の出力を、Ｄ入力として入力する。第２のＤフリップフロップ（８７）も、ＣＰＵクロック周波数によって振動する。第２のＤフリップフロップ（８７）へのクロック有効入力は、常にｈｉｇｈ（“１”）であるので、第２のＤフリップフロップ（８７）は常にＣＰＵクロック周波数によって振動する。第２のＤフリップフロップ（８７）へのクロックパルスの各々について、パルス後のＱの反転出力のビット値は、パルス前のＤ入力のビットの反転値に等しい。第２のＤフリップフロップ（８７）のＱの反転出力のビット値と、第１のＤフリップフロップ（８１）のＱの反転出力のビット値とは、ＡＮＤゲート（８５）に入力される。ＡＮＤゲート（８５）への両方の入力が、ＳＴＩＣＫ＿ＣＯＭＰＡＲＥ（８０）とＳＴＩＣＫ＿ＲＥＧ（８２）から送られた全てのビットについてｈｉｇｈであれば、ＡＮＤゲート（８５）は、ｓｔｉｃｋ＿ａｌｍ信号を生成する。要約すると、排他的論理和ゲート（８３）への二つの入力の値が等しい場合は、排他的論理和ゲート（８３）はｌｏｗを出力し、第２のＤフリップフロップ（８７）は、そのＱの反転出力においてｈｉｇｈを出力する。そして、第１のＤフリップフロップのＱの反転出力（ｈｉｇｈ）に基づいて、ＡＮＤゲート（８５）は、ｈｉｇｈビット値をｓｔｉｃｋ＿ａｌｍ信号に生成する。
【００５１】
ＡＮＤゲート８５で生成されるｓｔｉｃｋ＿ａｌｍ信号は、ＳＴＩＣＫ＿ＣＯＭＰＡＲＥ（８０）の値がＳＴＩＣＫ＿ＲＥＧ（８２）の値に等しいときに生成される。一旦生成されると、ｓｔｉｃｋ＿ａｌｍ信号は、ＴＲＡＰユニット（８４）へ送られる。ｓｔｉｃｋ＿ａｌｍ信号を受け取ると、ＴＲＡＰユニット（８４）は、トラップ信号をプロセッサへ生成する。トラップは、オペレーティングシステムにより、イベントスケジューリング、プロセススケジューリング、処理プロセス要求などの管理的なタスクを実行するために用いられる。
【００５２】
前述したように、ＳＴＩＣＫ＿ＣＯＭＰＡＲＥ（８０）は、６４ビットのレジスタである。ＳＴＩＣＫ＿ＣＯＭＰＡＲＥ（８０）（ＳＴＩＣＫ＿ＣＯＭＰＡＲＥ［６３］）の最上位ビットは、ｓｔｉｃｋ＿ａｌｍ信号の生成を有効化するか無効化するかを示すために用いられる。ソフトウェアは、ＳＴＩＣＫ＿ＣＯＭＰＡＲＥ［６３］へ“１”を書き込むことにより、ｓｔｉｃｋ＿ａｌｍ信号の生成を無効化できる。ＳＴＩＣＫ＿ＣＯＭＰＡＲＥ（８０）（ＳＴＩＣＫ＿ＣＯＭＰＡＲＥ［６２：０］）の残りの６３ビットは、ＳＴＩＣＫ＿ＲＥＧ（８２）と比較すべき値を表す。
【００５３】
ｍｉｕ＿ｓｔｉｃｋ＿ＲＥＧ＿ｒｄ＿ｅｎ信号、ｍｉｕ＿ｅｓｔａｒ＿ＭＯＤＥ＿ｒｄ＿ｅｎ信号、ｍｉｕ＿ｓｔｉｃｋ＿ＣＯＭＰＡＲＥ＿ｒｄ＿ｅｎ信号は、読み出し動作を有効化するために、図示しないＭＩＵによってデコードされる信号である。プロセッサが、ＳＴＩＣＫ＿ＣＯＭＰＡＲＥ（８０）、ＳＴＩＣＫ＿ＲＥＧ（８２）、またはＥＳＴＡＲ＿ＭＯＤＥ（７８）の中のデータを読む必要が生じた場合、プロセッサは、読むべきレジスタのアドレスをロードし、図示しないＭＩＵがそのアドレスをデコードし、所望のレジスタから対応するデータを選択するデコード信号を、マルチプレクサ（８６）を通して供給する。マルチプレクサ（８６）は、ｍｉｕ＿ｓｔｉｃｋ＿ＲＥＧ＿ｒｄ＿ｅｎ信号、ｍｉｕ＿ｅｓｔａｒ＿ＭＯＤＥ＿ｒｄ＿ｅｎ信号、およびｍｉｕ＿ｓｔｉｃｋ＿ＣＯＭＰＡＲＥ＿ｒｄ＿ｅｎ信号を選択入力として用い、ＳＴＩＣＫ＿ＣＯＭＰＡＲＥ（８０）、ＳＴＩＣＫ＿ＲＥＧ（８２）、およびＥＳＴＡＲ＿ＭＯＤＥ（７８）の値を入力として用いる。例えば、プロセッサが、ＥＳＴＡＲ＿ＭＯＤＥ（７８）内のデータを読む必要が生じた場合、ｍｉｕ＿ｅｓｔａｒ＿ＭＯＤＥ＿ｒｅａｄ＿ｅｎ信号が選択され、ＥＳＴＡＲ＿ＭＯＤＥ （７８）の値がマルチプレクサ（８６）の出力へ送られる。マルチプレクサ（８６）からの出力は、 ｍｃｕ＿ｐｄｐ＿ｐｉｏバスを経由してプロセッサへ到達する。ｍｃｕ＿ｐｄｐ＿ｐｉｏバスは、プロセッサがレジスタ（７８， ８０， ８２）からデータを読み出すために用いる読み出しバスである。
【００５４】
図７は、本発明の一実施形態にかかるＰＬＬユニット（１２１）の回路を示す。ＰＬＬ制御は、ＰＬＬユニット（１２１）内の３つの分周器の値を変更するために必要である。 ＰＬＬユニット（１２１）は、ＰＬＬユニット（１２１）の分周器（図示せず）内にロードされた値に基づいて、システムが異なる省電力モードへ移行することを可能とためにある。この実施形態では、ＰＬＬユニット（１２１）内に３つの分周器を設けた。ＥＳＴＡＲ＿ＭＯＤＥ（７８）の内容に基づいて、これら３つの分周器には、別個の値がロードされる。この実施形態では、ＰＬＬユニット（１２１）は、図示しない分周値に基づいて、１／１，１／２，１／６省電力モードへ移行する。当業者であれば、５００ＭＨｚを超える周波数で動作するシステムには、追加の分周器を用いれば良いことが分かるであろう。
【００５５】
ソフトウェアがシステムのモードの変更を決定するたびに、当該ソフトウェアはＥＳＴＡＲ＿ＭＯＤＥ（７８）に書き込む。図７は、ＥＳＴＡＲ＿ＭＯＤＥ（７８）の値によって動作周波数の変化が生じるようにするための選択の仕組みを示す。ＥＳＴＡＲ＿ＭＯＤＥ （７８）は、前述したように、システムのモードを表すために２つにビットを用いる。これらのビット、すなわち、ＥＳＴＡＲ＿ＭＯＤＥ［１］およびＥＳＴＡＲ＿ＭＯＤＥ［０］は、２個の異なるＤフリップフロップ（１２０， １２２）へ、Ｄ入力として、別個に入力される。Ｄフリップフロップ（１２０， １２２）は、ＣＰＵクロック周波数によりそれぞれ振動する。各々のクロックパルスの後で、Ｄフリップフロップ（１２０， １２２）は、各々のＱ出力において、クロックパルスの前のそれぞれのＤ入力の値を生成する。Ｄフリップフロップ（１２０， １２２）の出力である、ｍｕｘ＿ｓｅｌ［１］およびｍｕｘ＿ｓｅｌ［０］は、ハードコード化パターンを入力するマルチプレクサ１２４への選択信号となる。ハードコード化パターンは、プロセッサがＣＰＵ周波数を下げるために用いる特定の省電力モード値を含む。ｍｕｘ＿ｓｅｌ［１］とｍｕｘ＿ｓｅｌ［０］との組み合わせに基づいて、マルチプレクサ（１２４）は、ＥＳＴＡＲ＿ＭＯＤＥ（７８）で指定されたパターンを出力し、特定の省電力モード値を３つのＰＬＬ分周器にロードする。全ての省電力モードにおいて、ＰＬＬ分周器の値のみが変化する。ＰＬＬユニット（１２１）が時間を参照するために用いる電圧制御オシレータは、周波数が全く変わらないので、ＰＬＬユニット（１２１）がそのロックを失うことがない。すなわち、ＰＬＬユニット（１２１）は、他のシステム周波数とは独立したそれ自身の基準時間を持つ。
【００５６】
図８は、本発明の一実施形態にかかるソフトウェア要件に関するフローチャートである。この図は、ソフトウェアが、ＥＳＴＡＲ＿ＭＯＤＥ（７８）（１１０）への二つの連続した書き込みの間、少なくともｎ回のクロックサイクル（１１２）待たなければならないことを示している。この待ち時間は、前回のモードスイッチから、ＰＬＬユニット（１２１）を安定させるために必要である。ｎ回のＣＰＵクロックサイクルの後（すなわちタイムアウト）にのみ、後のモードを表す新たなモードビットが選択入力としてマルチプレクサ（１２４）へ送られる。ｎの値は、工業規格で規定されていないＳＤＲＡＭを有するシステムの場合、１６以上でなければならない。規定されていないＳＤＲＡＭは、本来、データをラッチするためにＣＰＵクロックを用いるメモリである。
【００５７】
本発明の利点は、以下の一つまたはそれ以上を含む。本発明の一つまたはそれ以上の実施形態において、コンピュータシステムは、オペレーティングシステムがシステム管理タスクを実行するために利用する周波数を変更することなく、ＣＰＵ周波数を低くすることにより、電力を節減することが可能である。オペレーティングシステムは、変化する可能性があるＣＰＵクロック周波数を用いないので、オペレーティングシステムに、イベントスケジューリング、プロセススケジューリング、スレッドスケジューリング、プロセス要求等を処理するための、絶対的な時間基準が供給される。オペレーティングシステムは、ＣＰＵが省電力モード周波数の移行を完了させるのを待つ必要がない。従って、オペレーティングシステムについて、ＣＰＵクロックサイクルが無駄にならずに済む。当業者にとっては、本発明が、他の利点や特徴を有しても良いことは明らかであろう。
【００５８】
本発明を、限られた数の実施形態について説明したが、当業者であれば、ここに開示された本発明の範囲から逸脱することなく、他の実施形態を考え出すことが可能である。従って、本発明の範囲は、添付された請求の範囲にのみ限定されるものではない。
【図面の簡単な説明】
【図１】図１は、典型的な従来技術にかかるコンピュータシステムを示す。
【図２】図２は、本発明の一実施形態にかかる電力管理スキームのブロック図を示す。
【図３】図３は、本発明の一実施形態にかかるプロセスを表すフローチャートを示す。
【図４】図４は、本発明の一実施形態にかかる電力管理スキームのブロック図を示す。
【図５】図５は、本発明の一実施形態にかかるコンピュータサブシステムのハイレベルブロック図を示す。
【図６】図６は、本発明の一実施形態にかかる電力管理システムのローレベルブロック図を示す。
【図７】図７は、本発明の一実施形態にかかるコンピュータサブシステムのブロック図を示す。
【図８】図８は、本発明の一実施形態にかかる電力管理スキームのブロック図を示す。
【図１】
2004512614.tif 000007
【図２】
2004512614.tif 000008
【図３】
2004512614.tif 000009
【図４】
2004512614.tif 000010
【図５】
2004512614.tif 000011
【図６】
2004512614.tif 000012
【図７】
2004512614.tif 000013
【図８】
2004512614.tif 000014
【国際公開パンフレット】
2004512614.tif 000015
2004512614.tif 000016
2004512614.tif 000017
2004512614.tif 000018
2004512614.tif 000019
2004512614.tif 000020
2004512614.tif 000021
2004512614.tif 000022
2004512614.tif 000023
2004512614.tif 000024
2004512614.tif 000025
2004512614.tif 000026
2004512614.tif 000027
2004512614.tif 000028
2004512614.tif 000029
2004512614.tif 000030
2004512614.tif 000031
2004512614.tif 000032
2004512614.tif 000033
2004512614.tif 000034
2004512614.tif 000035
2004512614.tif 000036
2004512614.tif 000037
2004512614.tif 000038
2004512614.tif 000039
2004512614.tif 000040
2004512614.tif 000041
2004512614.tif 000042
2004512614.tif 000043
2004512614.tif 000044
2004512614.tif 000045
2004512614.tif 000046
2004512614.tif 000047
2004512614.tif 000048
【国際公開パンフレット（コレクトバージョン）】
2004512614.tif 000049
2004512614.tif 000050
【国際公開パンフレット（コレクトバージョン）】
2004512614.tif 000051
2004512614.tif 000052
2004512614.tif 000053
2004512614.tif 000054
2004512614.tif 000055
2004512614.tif 000056
2004512614.tif 000057
2004512614.tif 000058
2004512614.tif 000059
2004512614.tif 000060
2004512614.tif 000061
2004512614.tif 000062
2004512614.tif 000063
2004512614.tif 000064
2004512614.tif 000065
2004512614.tif 000066
2004512614.tif 000067
2004512614.tif 000068
2004512614.tif 000069
2004512614.tif 000070
2004512614.tif 000071
2004512614.tif 000072
2004512614.tif 000073
2004512614.tif 000074
2004512614.tif 000075
2004512614.tif 000076
2004512614.tif 000077
2004512614.tif 000078
2004512614.tif 000079
2004512614.tif 000080
2004512614.tif 000081
2004512614.tif 000082
2004512614.tif 000083
2004512614.tif 000084
【国際調査報告】
2004512614.tif 000085
2004512614.tif 000086
2004512614.tif 000087