(57)【特許請求の範囲】
【請求項１】
コンピュータシステムであって、
マイクロプロセッサと、
前記マイクロプロセッサに結合されるローカルバスと、
周辺バスと、
前記ローカルバスと前記周辺バスとに結合され、前記ローカルバスと前記周辺バスとの間でのデータおよびアドレス信号の転送を制御しかつ前記周辺バスの統御を調停するように構成されるバスインタフェースおよびアービタユニットと、
前記周辺バス上に周辺バスクロック信号を与えるように結合されたクロックジェネレータ回路とを含み、前記周辺バスクロック信号は選択的に制御されるように構成され、前記コンピュータシステムは、
前記周辺バスに或るアクセス速度でアクセスを求める代替バスマスタをさらに含み、前記代替バスマスタは前記周辺バスに結合され、前記コンピュータシステムはさらに、
前記代替バスマスタと前記クロックジェネレータ回路とに結合され、通常モードの間第１の予め定められた速度で前記周辺バスクロック信号を駆動するように構成される、クロック制御回路を含み、
前記クロック制御回路は、さらに電力低減モードの間第２の予め定められた速度で少なくとも１つのクロックエッジを与えるように構成され、前記第２の予め定められた速度は前記第１の予め定められた速度より低く、前記第２の予め定められた速度は前記代替バスマスタの前記アクセス速度に基づき、前記クロック制御回路は、前記代替バスマスタ内の記憶場所から前記代替バスマスタのアクセス速度を指示する値を読出すように構成される、コンピュータシステム。
【請求項２】
前記代替バスマスタは前記少なくとも１つのクロックエッジを受けると前記周辺バスにアクセスを要求するよう構成される、請求項１に記載のコンピュータシステム。
【請求項３】
前記第２の予め定められた速度は最大待ち時間速度の２倍である、請求項１に記載のコンピュータシステム。
【請求項４】
前記周辺バスはＰＣＩバスである、請求項１に記載のコンピュータシステム。
【請求項５】
コンピュータシステムであって、
マイクロプロセッサと、
前記マイクロプロセッサに結合されたローカルバスと、
周辺バスと、
前記ローカルバスと前記周辺バスとに結合され、前記ローカルバスと前記周辺バスとの間でのデータおよびアドレス信号の転送を制御しかつ前記周辺バスの統御を調停するように構成されるバスインタフェースおよびアービタユニットと、
前記周辺バス上に周辺バスクロック信号を与えるように結合されたクロックジェネレータ回路とを含み、前記周辺バスクロック信号は選択的に制御されるように構成され、前記コンピュータシステムは、
前記周辺バスに結合された代替バスマスタを含み、さらに、前記コンピュータシステムは、
前記代替バスマスタと前記クロックジェネレータ回路とに結合されるクロック制御回路を含み、前記クロック制御回路は、通常モードの間第１の予め定められた速度で前記周辺バスクロック信号を駆動し、電力低減モードの間第２の予め定められた速度で前記周辺バスクロック信号を駆動するように構成され、前記第２の予め定められた速度は前記第１の予め定められた速度より低く、
前記クロック制御回路は前記電力低減モードの間に前記第２の予め定められた速度で少なくとも１つのクロックエッジを与えるように構成され、前記第２の予め定められた速度は前記代替バスマスタが前記周辺バスにアクセスを求める、最大待ち時間に基づき、前記クロック制御回路は、前記代替バスマスタ内の記憶場所から前記代替バスマスタのアクセス速度を指示する値を読出すように構成される、コンピュータシステム。
【請求項６】
コンピュータシステムであって、
マイクロプロセッサと、
前記マイクロプロセッサに結合されたローカルバスと、
周辺バスと、
前記ローカルバスと前記周辺バスとに結合され、前記ローカルバスと前記周辺バスとの間でのデータおよびアドレス信号の転送を制御するための手段とを含み、前記制御手段は前記周辺バスの統御を調停するための手段を含み、前記コンピュータシステムは、
前記周辺バス上に周辺バスクロック信号を選択的に発生させるための手段を含み、前記選択的に発生させる手段は前記周辺バスクロック信号のクロック速度を選択するための手段を含み、前記クロック速度は、通常モードに対応する第１のクロック速度と、動作の電力低減モードに対応する第２のクロック速度を含み、前記第２のクロック速度は前記第１のクロック速度より低く、前記コンピュータシステムは、
前記周辺バスに結合されたバスマスタを含み、前記バスマスタは前記周辺バスにアクセスを要求するのにクロック信号を必要とし、前記コンピュータシステムはさらに、
前記電力低減モードの間に前記バスマスタがバスアクセスを要求できるように前記周辺バス上に前記第２のクロック速度を与えるための手段を含み、前記第２のクロック速度は、前記バスマスタのアクセス速度に基づき、前記バスマスタは、前記バスマスタのアクセス速度を指示する値を保持する記憶場所を含む、コンピュータシステム。
【請求項７】
請求項１に記載のコンピュータシステムであって、前記クロック制御回路は前記アクセス速度を検出するよう、前記代替バスマスタにポーリングを行なう、コンピュータシステム。
【発明の詳細な説明】
【０００１】
【発明の分野】
本発明は、コンピュータシステム内の電力管理に関し、より特定的には、周辺バスクロック信号を制御するためのシステムおよびその方法に関する。
【０００２】
【関連技術の説明】
製造業者によって進められている開発の１つの目標は、コンピュータシステムの電力消費量を低減することである。電力消費量を低減すると典型的にはシステムにおける熱の発生が低減し、それによって信頼性が向上しコストを削減することができる。さらに、バッテリによって電力供給されるポータブルコンピュータシステムの動作寿命を最大限に引き延ばすという点で、電力を低減することは特に重要である。
【０００３】
コンピュータシステムの電力消費量を低減するための種々の技術が考案されている。これらの技術には、回路の集積度を向上させること、改良した回路や電力管理ユニット（ＰＭＵ）を組込むことなどがある。ある特定の電力低減技術では、非活性回路部を駆動するクロック信号を停止させることができることが必要である。そのような技術を用いたシステムは、典型的には、非活性回路部を検出または予測し、それに応じて非活性回路部に関連するクロック信号を停止させる電力管理ユニットを含む。非活性回路部を駆動する「使用されない」クロック信号をオフにすることにより、システム全体の電力消費量は少なくなる。それに類似した技術では、時間が重要でない動作モードの間回路部を駆動するクロック信号の周波数を低減させることができることが必要である。
【０００４】
「使用されない」クロック信号を停止させることができる、ということは電力消費量を低減することにおいては一般に成功したが、この技術は一般に、それに結合される代替バスマスタを有する周辺バスを駆動するクロック信号には適用されていない。以下の例を読めば、このように制限がある理由が最もよく理解できる。
【０００５】
図１は、マイクロプロセッサ（ＣＰＵ）１２、システムメモリ１４、ブリッジ／メモリコントローラ１６、ならびにバスインタフェースおよびアービタユニット１８を含むコンピュータシステム１０を示すブロック図である。ＣＰＵローカルバス２０は、マイクロプロセッサ１２をブリッジ／メモリコントローラ１６とバスインタフェースおよびアービタユニット１８とに結合する。システムメモリバス２２は、システムメモリ１４をブリッジ／メモリコントローラ１６に結合する。「マスタ１」として示される代替バスマスタ２６、および「マスタ２」として示される第２の代替バスマスタ２８は、周辺バス３０を介してバスインタフェースおよびアービタユニット１８に結合される。同様に、スレーブ装置３１も周辺バス３０を介してバスインタフェースおよびアービタユニット１８に結合される。
【０００６】
代替バスマスタ２６が周辺バス３０の統御を要求すると、ＲＥＱ１として示されるリクエスト信号が代替バスマスタ２６によってアサートされ、バスインタフェースおよびアービタユニット１８によって検出される。内部調停論理に従ってそのバスの統御が許可されると、バスインタフェースおよびアービタユニット１８はＧＮＴ１として示される許可信号をアサートし、それに応じて代替バスマスタ２６は周辺バス３０の統御を得て、所望のサイクルを実行することができる。
【０００７】
図１のシステムでは、周辺バスクロック信号ＣＬＫと同期のリクエスト信号ＲＥＱｘ（すなわち、ＲＥＱ１またはＲＥＱ２）が関連する代替バスマスタによってアサートされなければならない。この要件は、ＰＣＩバス規格等のいくつかの広く用いられている周辺バス規格によって特定される。このような要件があるため、そのような周辺バス規格を採用するシステムは、周辺バスクロック信号ＣＬＫが常にオンにされ、それにより代替バスマスタが同期リクエスト信号を発生することができるようにするように設計される。しかしながら、そのようなシステムでは、周辺バスがアイドル状態であるときに電力が浪費されてしまう。
【０００８】
スレーブ装置は周辺バスサイクルが終わった後もクロック信号を必要とし得るため、クロックを停止させる（またはクロックを低速にする）ことによる電力低減技術を周辺バスに採用する際にさらなる問題が生じる。たとえば、周辺バスサイクルの終了時に、スレーブ装置３１が内部ＦＩＦＯを空にするための付加的なクロックサイクルが必要とされ得る。そのような状況の間にクロック信号が停止されれば、データの完全性だけではなくシステムの性能にも悪影響が及ぼされ得る。
【０００９】
電力管理の目的のために周辺バスクロック信号を停止させるまたは低速にすることに関連するさらに別の問題は、もし周辺装置が周辺バスクロック信号を再始動させることができないか、または所与の時間内にクロックエッジを受取らなければ、外部バスマスタが停止するかまたはデータを損失し得る。したがって、システムの性能が悪化する、またはデータの完全性に悪影響が及ぼされる可能性がある。いかなるコンピュータシステムにおいてもデータの整合性は重要であり、従来の周辺バスマスタは典型的には関連する周辺バスクロック信号を制御することができないため、そのような従来のバスマスタ装置は、電力管理のために周辺クロック信号が停止されるかまたは低速にされるコンピュータシステムと互換することができない場合がある。したがって、そのようなコンピュータシステムと従来の周辺装置との逆方向の互換性が制限されてしまうおそれがある。
【００１０】
【発明の概要】
上述の問題の大部分は、本発明に従った、周辺バスクロック信号を制御するためのシステムおよび方法によって解決される。このシステムは、たとえば電力管理ユニットに応答して周辺バスクロック信号を停止させる（または低速にする）ことができる電力節約法を適用する。周辺バスクロック信号が停止されているときに代替バスマスタが周辺バスの統御を要求すると、周辺バスクロックを再始動させるためのクロックリクエスト信号をアサートするように構成され得る。クロックリクエスト信号は周辺バス上に送られ、したがってクロック制御回路によって受取られる。クロック制御回路は、それに応答して周辺バスクロック信号を再始動させる。その後、代替バスマスタは、周辺バスクロック信号と同期のバスリクエスト信号を発生することができ、それによってバスアービタユニットから許可信号を得ることができる。
【００１１】
このシステムはさらに、バスリクエスト信号を内部で発生できない従来の代替バスマスタとの逆方向の互換性が得られるように構成され得る。そのような実施例では、システムのリセットの際に、ＢＩＯＳブートコードが、各々の代替バスマスタ内の構成レジスタを読取る。ＰＣＩベースのシステムに関しては、この構成レジスタは、いわゆるＭＡＸＬＡＴレジスタ（またはフィールド）が可能である。構成レジスタの内容は、特定のマスタが周辺バスにアクセスを要求し得る頻度を表わす。システムは、各々のマスタのＭＡＸＬＡＴフィールドを読取る際に、周辺バスへのアクセスを最も頻繁に要求するマスタに対応するＭＡＸＬＡＴ値に従ってクロック制御タイマを設定する。最も頻繁に周辺バスを要求するマスタがたとえば２μ秒の最大待ち時間を指定すれば、システムはクロック制御タイマが１μ秒（すなわち、指定された最大待ち時間の半分）ごとにサイクルを開始する（またはトリガする）ように設定する。その後、電力管理ユニットが周辺バスクロックを停止させるという決定を下せば、クロック制御タイマがサイクルを開始する。クロック制御タイマは、１μ秒ごとに、クロックジェネレータに少なくとも１つのクロックエッジ（すなわち、ワンショットまたはマルチショット）を与えさせる。これにより、周辺バスに結合されるいかなるバスマスタも、クロックリクエスト信号を発生することができなくても、同期バスリクエスト信号を発生することができ、それにより周辺バスの統御を得ることができる。さらに、このシステムでは、それぞれの周期的クロックエッジ間でできるだけ長くクロック信号を停止させることによって電力管理の最適化を適用する。代替的にもし電力管理ユニットが電力節約モードの間に周辺バスクロック信号を低速にする場合、各々のマスタのＭＡＸＬＡＴフィールドから読取られる値が、クロック信号が低速にされ得る最小周波数を決定するために用いられ得る。すなわち、クロックジェネレータは、最も頻繁に周辺バスを要求するマスタのＭＡＸＬＡＴフィールド内で指定された最大待ち時間の半分以下の期間で周辺バスクロック信号を発生するように設定されるであろう。本発明に従ったシステムを用いれば、周辺バスの統御を得るために同期バスリクエスト信号をアサートしなければならない代替バスマスタを適用しながら電力管理のために周辺バスクロック信号を停止させるまたは低速にすることができる。
【００１２】
本発明の他の目的および利点は、添付の図面を参照して以下に示す詳細な説明を読めば明らかになるであろう。
【００１３】
本発明には種々の変形例および代替例が可能であるが、特定の実施例のみを例示的に図面に示し、以下に詳細に説明する。しかしながら、これらの図面およびそれに対する詳細な説明は本発明を開示される特定の形に限定するものではなく、本発明は、前掲の特許請求の範囲によって規定されるような本発明の精神および範囲内にあるすべての変形例、均等物および代替例を含むものとする。
【００１４】
【好ましい実施例の詳細な説明】
次に、図２を参照すると、周辺バス１０２がバスインタフェースおよびアービタユニット１０６を介してＣＰＵローカルバス１０４に結合されるコンピュータシステム１００の一部分がブロック図で示されている。「マスタ１」として示される代替バスマスタ１０８、および「マスタ２」として示される第２の代替バスマスタ１１０は周辺バス１０２に結合され、マイクロプロセッサ（ＣＰＵ）１１９はＣＰＵローカルバス１０４に結合される。さらに、電力管理ユニット１１１、フリップフロップ１１２、１１４、および信号ドライバ１１６、１１８は、バスインタフェースおよびアービタユニット１０６に結合される。
【００１５】
代替バスマスタ１０８および１１０を、種々の特定の周辺バス装置によって実施してもよい。たとえば、代替バスマスタ１０８を、他のコンピュータシステムを周辺バス１０２に接続するローカルエリアネットワーク（ＬＡＮ）装置によって実施してもよい。同様に、代替バスマスタ１１０を、周辺バス１０２を他の周辺バスに接続する拡張バスインタフェースによって実施してもよい。
【００１６】
周辺バス１０２は、予め定められたビット幅を有し、ＣＤ−ＲＯＭ装置等の種々の他の周辺装置に接続され得る。一実施例では、周辺バス１０２はＰＣＩ規格バス構成を用いて実現されるが、代替的に他の周辺バス規格構成を用いてもよい。ＰＣＩ規格バス構成は、ＰＣＩスペシャル・インタレスト・グループ（ＰＣＩ  Ｓｐｅｃｉａｌ  Ｉｎｔｅｒｅｓｔ  Ｇｒｏｕｐ）による１９９３年４月３０日出版の「ＰＣＩローカルバス仕様（ＰＣＩ  Ｌｏｃａｌ  Ｂｕｓ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ）」改訂版２に記載されている。この文献全体を引用によりここに援用する。
【００１７】
マイクロプロセッサ１１９は、予め定められた命令セットを実現するデータ処理ユニットである。例示的な処理ユニットには、モデル８０３８６マイクロプロセッサ、モデル８０４８６マイクロプロセッサなどがある。なお、ＣＰＵローカルバス１０４は、マイクロプロセッサ１１９をキャッシュメモリ、メモリコントローラなどの種々の他のコンポーネントに結合し得る。
【００１８】
バスインタフェースおよびアービタユニット１０６は、制御信号、データ信号およびアドレス信号を調整したり、マイクロプロセッサ１１９と周辺バス１０２に結合される装置との間でそれらの信号の転送を行なったりする周知のインタフェース機能を制御する従来の回路を含む。バスインタフェースおよびアービタユニット１０６はさらに、周辺バス１０２の統御に関して競合する装置を調停しかつそれらの装置に優先順位を付ける。図１に関して上で説明した例と同様に、バスインタフェースおよびアービタユニット１０６内の調停論理は、代替バスマスタによってアサートされる同期リクエスト信号を検出し、周辺バス１０２の統御を達成することができれば関連する許可信号を発生するように構成される。バスインタフェースおよびアービタユニット１０６は、ライン１２３および１２４でそれぞれ同期リクエスト信号ＳＲＥＱ１およびＳＲＥＱ２を受取り、ライン１２５および１２６でそれぞれ許可信号ＧＮＴ１およびＧＮＴ２を発生する。バスインタフェースおよびアービタユニット１０６のこれらの部分を種々の特定の回路構成を用いて実現してもよいこと、および例示的な回路構成が既知の先行技術の多くの出版物に記載されていることが当業者に認識されるであろう。
【００１９】
バスインタフェースおよびアービタユニット１０６は付加的にクロック制御回路１２０およびクロックジェネレータ１２２を含む。クロックジェネレータ１２２は、代替バスマスタ１０８、代替バスマスタ１１０等の周辺装置を駆動するための「ＣＬＫ」として示される周辺バスクロック信号を発生する。以下により詳細に説明するように、クロック制御回路１２０は、電力管理ユニット１１１が周辺バスクロック信号ＣＬＫを停止させた後代替バスマスタに適応するようにクロックジェネレータ１２２の再始動を制御する。
【００２０】
次に、コンピュータシステム１００の動作について説明する。この議論に関しては、まず、電力管理ユニット１１１がクロックジェネレータ１２２をオフにさせ、それにより周辺バスクロック信号ＣＬＫが停止されると仮定する。電力管理ユニット１１１は、たとえばバスインタフェースおよびアービタユニット１０６内で現在バスリクエスト信号が保留になっていないときにマイクロプロセッサ１１９によって実行される周辺バスサイクルが終了するとクロックジェネレータ１２２をオフにするように構成され得る。
【００２１】
代替バスマスタ１０８または１１０のうちの１つが周辺バス１０２の統御を要求すると、その装置によって対応する非同期バスリクエスト信号がアサートされる。たとえば、代替バスマスタ１０８が周辺バス１０２の統御を要求する場合、非同期リクエスト信号ＡＲＥＱ１がライン１２８でローにアサートされる。図１の例と同様に、ライン１２３においてバスインタフェースおよびアービタユニット１０６によって受取られるリクエスト信号は周辺バスクロック信号ＣＬＫと同期でなければならない。しかしながら、この時点で、クロックジェネレータ１２２はオフにされている。したがって、同期リクエスト信号を与えるためには、非同期リクエスト信号ＡＲＥＱ１を信号ドライバ１１６を介してバッファ処理し、これによりライン１２７の非同期クロックリクエスト信号ＣＬＫＲＥＱをローにアサートさせる。クロック制御回路１２０がクロックリクエスト信号ＣＬＫＲＥＱのローへのアサーションを検出すると、信号ＩＤＬＥがクロック制御回路１２０によってハイにデアサートされ、これにより（信号ＯＮ／ＯＦＦをハイに駆動することによって）電力管理ユニット１１１にクロックジェネレータ１２２をオンにさせ、したがって周辺バスクロック信号ＣＬＫを再始動させる。
【００２２】
最初の周辺クロック信号ＣＬＫの立上がりエッジで、ライン１２８の論理ロー信号（すなわち、信号ＡＲＥＱ１）はフリップフロップ１１２にラッチされ、フリップフロップ１１２の出力で駆動される。したがって、フリップフロップ１１２の出力状態によって左右される同期リクエスト信号ＳＲＥＱ１はローになる。なお、信号ＳＲＥＱ１のローへの遷移は、クロック信号ＣＬＫと同期的に生じる。
【００２３】
バスインタフェースおよびアービタユニット１０６が同期リクエスト信号ＳＲＥＱ１のローへのアサーションを検出すると、バスインタフェースおよびアービタユニット１０６は、その内部調停論理に従って許可信号ＧＮＴ１を発生し、その結果、代替バスマスタ１０８に周辺バス１０２の統御を許可する。
【００２４】
好ましい実施例では、周辺バス１０２の統御が望まれると、代替バスマスタ１０８は合計２クロックサイクルの間非同期リクエスト信号ＡＲＥＱ１をアサートする。クロック制御回路１２０がライン１２７で結果として得られたローの信号を検出すると、２クロックサイクル後に代替バスマスタ１０８によって非同期リクエスト信号ＡＲＥＱ１がデアサートされていても、クロック制御回路１２０は引続いて駆動を行ないライン１２７で論理ロー信号を維持する。電力管理ユニット１１１によってＩＤＬＥ信号がハイにデアサートされクロックジェネレータ１２２がオンにされると、電力管理ユニット１１１がクロックジェネレータ１２２を停止させることができるという決定を下し得る時点であるシステムマイクロプロセッサ１１９が再び周辺バス１０２の統御を得る時点まで、周辺バスクロック信号ＣＬＫを停止させることができない。たとえば、上述のように、電力管理ユニット１１１は、バスインタフェースおよびアービタユニット１０６内で現在バスリクエスト信号が保留になっていなければマイクロプロセッサ１１９によって実行される周辺バスサイクルが終了すると周辺バスクロック信号ＣＬＫを停止させるように構成され得る。電力管理ユニット１１１がそのような予め定められた状態に従って周辺バスクロック信号ＣＬＫを停止させることができると判断すると、クロック制御回路１２０は１クロックサイクルの間クロックリクエスト信号ＣＬＫＲＥＱをハイに駆動する。その後、クロック制御回路１２０はクロックリクエスト信号ＣＬＫＲＥＱおよびトライステートライン１２６の駆動を解放する。その後、電力管理ユニット１１１は、信号ＯＮ／ＯＦＦをローに駆動することによってクロックジェネレータ１２２をオフにし、それによって周辺バスクロック信号ＣＬＫを停止させる。
【００２５】
なお、好ましい実施例では、最後の周辺バスクロック信号ＣＬＫの立上がりエッジの間にライン１２７がハイとしてサンプリングされたときにのみ信号ドライバ１１６および１１８がイネーブルされる。これにより、クロック制御回路１２０がライン１２７をハイに駆動するのと同時に非同期リクエスト信号ＡＲＥＱｘ（すなわちＡＲＥＱ１またはＡＲＥＱ２）がローにアサートされた場合にライン１２７で信号の競合が起こる可能性を防ぐことができる。この特徴の実現例は図３に示されており、図３では、フリップフロップ１２９は、周辺クロック信号ＣＬＫの各サイクルの間にライン１２７をサンプリングし、かつ、ライン１２７がハイとしてサンプリングされたときにのみ信号ドライバ１１６および１１８をイネーブルするために用いられる。
【００２６】
再び図２を参照して、非同期リクエスト信号ＡＲＥＱ１およびＡＲＥＱ２が同時にまたは一斉にアサートされ、代替バスマスタ１０８および１１０の両方が周辺バス１０２の統御を要求していることを示せば、クロックリクエスト信号ＣＬＫＲＥＱは再びローに駆動され、それによって周辺バスクロック信号ＣＬＫを再始動させる。それに応じてフリップフロップ１１２および１１４の出力においてそれぞれ同期リクエスト信号ＳＲＥＱ１およびＳＲＥＱ２が与えられ、バスインタフェースおよびアービタユニット１０６において受取られる。その後、許可信号ＧＮＴ１またはＧＮＴ２のうちの一方が内部調停論理によって確立された予め定められた優先順位に従ってアサートされ、他方の許可信号は「優先順位の高い方の」代替バスマスタがそれに対応するバスサイクルを終了するまで遅延される。その後、バスインタフェースおよびアービタユニット１０６はその他方の許可信号をアサートして、「優先順位の低い方の」代替バスマスタがその対応するバスサイクルを実行できるようにする。
【００２７】
次に、クロック制御回路１２０の内部論理について考える。図４は、クロック制御回路１２０内で実施されるアルゴリズムステートマシン３００を示す図である。ステートマシン３００は、４つの状態３１０、３２０、３３０、３４０を含む。周辺バスクロック信号ＣＬＫが停止されると、ステートマシン３００はアイドル状態３１０になる。ステートマシン３００はクロックリクエスト信号ＣＬＫＲＥＱがハイである限り状態３１０のままである。
【００２８】
クロックリクエスト信号ＣＬＫＲＥＱがローになると、ステートマシン３００は状態３２０に入る。この遷移は、非同期リクエスト信号ＡＲＥＱｘのうちの１つが代替バスマスタのうちの１つによってアサートされると生じる。状態３２０の間、クロック制御回路１２０はライン１２７をローに駆動し、信号ＩＤＬＥをハイにデアサートする。電力管理ユニット１１１は信号ＩＤＬＥのデアサーションを検出し、その結果、クロックジェネレータ１２２をオンにして周辺バスクロック信号ＣＬＫを再始動させる。
【００２９】
ステートマシン３００はその次に、信号ＩＤＬＥがハイにデアサートされ続ける状態３３０に入る。ステートマシン３００は、同期リクエスト信号ＳＲＥＱｘがローである限り状態３３０のままである。すべての同期リクエスト信号がハイであれば、ステートマシン３００は、内部タイマによって確立された遅延時間に従った予め定められた時間の間状態３３０のままである。この遅延時間は、クロック信号ＣＬＫを再始動させた後（フリップフロップ１１２または１１４によって）対応する同期リクエスト信号ＳＲＥＱｘがローに駆動されるのに十分な時間が確実に与えられるようにするために設けられる。一実施例では、状態３３０の内部タイマは、ステートマシン３００が状態３３０から出て行くまでに少なくとも４クロックサイクルが確実に経過するように規定される。
【００３０】
同期リクエスト信号ＳＲＥＱｘがハイでありかつタイマが切れると、ステートマシン３００は状態３４０に入る。状態３４０の間、クロックリクエスト信号ＣＬＫＲＥＱはクロック制御回路１２０によって１クロックサイクルの間ハイに駆動される。さらにＩＤＬＥ信号がローにアサートされる。
【００３１】
ステートマシン３００はその次に再びアイドル状態３１０に戻り、クロック制御回路１２０はクロックリクエストライン１２７をトライステートにする。その後、システムマイクロプロセッサ１１９が再び周辺バス１０２の統御を得ると、または他のいずれかの所望の電力管理機構に従って、電力管理ユニット１１１はクロックジェネレータ１２２をオフにし得る。その後、周辺バスクロック信号ＣＬＫは、クロックリクエスト信号をローにアサートすることによって上述の態様で別の代替バスマスタによって再び再始動され得る。
【００３２】
再び図２を参照して、フリップフロップ１１２、１１４および信号ドライバ１１６、１１８を代替バスマスタ１０８、１１０と一体の部分として組込まれてもよいことに注目されたい。さらに、簡略化のために信号ライン１２３〜１２７を周辺バス１０２と別々にして示しているが、信号ライン１２３〜１２７は、周辺バス１０２の予め規定された制御ラインであってもよい。
【００３３】
図５に示すような別の実施例では、ステートマシンは、クロックリクエスト信号ＣＬＫＲＥＱおよび同期リクエスト信号ＳＲＥＱｘを発生するように各々の代替バスマスタ内に組込まれる。図２の回路部に対応する回路部には同じ参照番号が付されている。図６は、そのような実施例の各々の代替バスマスタ内に組込まれるアルゴリズムステートマシン５００を示す図である。ステートマシン５００は、状態５１０、５２０および５３０を含む。
【００３４】
図４および図５とともに図６を参照して、リセットの後、クロックリクエスト信号がハイになると、ステートマシン５００は状態５１０に遷移する。この時点で、電力管理ユニット１１１はクロックを停止させるようにクロックジェネレータ１２２に信号を送り得る。マスタ周辺装置がクロックを必要としていなければ、ステートマシン５００は状態５１０のままである。システムの事象によりクロックリクエスト信号がローにされれば、ステートマシン５００は状態５３０に戻る。状態５１０にある間にマスタがクロックを必要とすれば、ステートマシン５００は状態５２０に遷移し、クロックリクエスト信号ＣＬＫＲＥＱをローに駆動させる。その後、クロック制御回路１２０はクロックが停止されていればそれを再始動させるようにクロックジェネレータ１２２に信号を送る。マスタは今、バスを獲得しそのトランザクションを行なうようにその同期バスリクエスト信号ＳＲＥＱｘをアサートし得る。マスタがそのバスリクエストを維持している限り、ステートマシンは状態５２０のままである。マスタがそのバスリクエストをデアサートすると、ステートマシンは状態５３０に遷移し、クロックリクエスト信号ＣＬＫＲＥＱをトライステートにさせる。
【００３５】
図２および図５に示すシステムを用いれば、周辺バスの統御を得るために同期バス信号をアサートしなければならない代替バスマスタを適用しながらなおかつ電力管理のために周辺バスクロック信号を停止させることができる。したがって、幅広い互換性を維持しながらコンピュータシステムの電力消費量を低減することができる。
【００３６】
次に、図７を参照して、スレーブ装置６００が周辺バス１０２に結合される類似したコンピュータシステムの一部分が示されている。図５の回路ブロックに対応する回路ブロックには同じ参照番号を付している。
【００３７】
スレーブ装置６００は、周辺クロック信号ＣＬＫを受取るように結合され、ライン１２７に結合される。以下により詳細に説明するように、図７の実施例を用いれば、スレーブ装置６００は、周辺バスサイクルの後にスレーブによって周辺バスクロック信号が要求されると周辺バスクロック信号が停止されないようにすることができる。たとえば、スレーブ装置６００は、内部ＦＩＦＯバッファを空にするために周辺バス転送サイクルの終了後に周辺バスクロック信号を必要とし得る。
【００３８】
図７の実施例の動作の間、スレーブ装置６００はライン１２７のクロックリクエスト信号ＣＬＫＲＥＱをモニタする。スレーブ装置６００がクロックリクエスト信号ＣＬＫＲＥＱのハイへのアサーションを検出かつスレーブ装置がまだ周辺バスクロック信号ＣＬＫを必要としていれば、スレーブ装置６００は、周辺バスクロック信号ＣＬＫが停止されないようにするために、その次のクロックサイクルでライン１２７を再びローに駆動する。
【００３９】
図８は、スレーブ装置６００内で実施されるアルゴリズムステートマシン７００を示す図である。システムがリセットされると、ステートマシン７００は、ライン１２７がスレーブ６００によってトライステートにされる状態７１０に入る。ライン１２７のクロックリクエスト信号ＣＬＫＲＥＱがローである限り、ステートマシン７００は状態７１０のままである。
【００４０】
ライン１２７のクロックリクエスト信号ＣＬＫＲＥＱがハイになると、ステートマシン７００は状態７２０に入る。状態７２０の間、ライン１２７はスレーブ装置６００によってトライステートにされ続ける。クロックリクエスト信号ＣＬＫＲＥＱがハイのままでありかつ周辺バスクロック信号ＣＬＫＲＥＱが必要でない間はステートマシン７００は状態７２０のままである。
【００４１】
ライン１２７のクロックリクエスト信号ＣＬＫＲＥＱが再びローになると、ステートマシン７００は状態７１０に戻る。一方、スレーブ６００が周辺バスクロック信号ＣＬＫを必要とし、ライン１２７のクロックリクエスト信号がハイであれば、ステートマシン７００は状態７３０に入る。状態７３０の間、ライン１２７のクロックリクエスト信号は２クロックサイクルの間スレーブ装置６００によってローに引下げられる。その後、ステートマシン７００は再び状態７１０に入り、ライン１２７はスレーブ装置６００によってトライステートにされる。
【００４２】
図９は、図２、図５、図７のクロック制御回路１２０内で実施されるステートマシン８００の代替実施例を示す図である。ステートマシン８００は、マスタおよびスレーブ装置によってアサートされるクロックリクエスト信号（すなわち、ＣＬＫＲＥＱ）に応答する。この実施例では、周辺バスクロック信号の再始動および停止は、クロック制御回路１２０によって直接制御される。なお、電力管理ユニット１１１は、コンピュータシステムの動作の間普段はクロックジェネレータ１２２を制御するように構成されてもよい。
【００４３】
リセットされると、ステートマシン８００は、ライン１２７のクロックリクエスト信号ＣＬＫＲＥＱがクロック制御回路１２０によってトライステートにされ受動的にハイに引上げられ、かつ、周辺バスクロック信号ＣＬＫがオンである状態８１０に入る。ライン１２７のクロックリクエスト信号が予め定められたクロック数（すなわち、Ｍクロックサイクル）の間ハイとして検出されれば、ステートマシン８００は状態８２０に入る。
【００４４】
状態８２０の間、ライン１２７は、クロック制御回路１２０によってトライステートにされかつハイに引上げられ、周辺バスクロック信号ＣＬＫは停止される。なお、クロックジェネレータ１２２は、周辺バスクロック信号ＣＬＫを停止させるようにクロック制御回路１２０によって電力管理ユニット１１１を介して直接制御される。ライン１２７のクロックリクエスト信号ＣＬＫＲＥＱがたとえば代替バスマスタ１０８によってローに引下げられるまで、ステートマシン８００は状態８２０のままである。クロックリクエスト信号ＣＬＫＲＥＱがローにアサートされると、ステートマシン８００は状態８１０に戻り、周辺バスクロック信号ＣＫＬが再始動される。
【００４５】
その次のクロックサイクルで、クロックリクエスト信号ＣＬＫＲＥＱがローにアサートされ続ければ、ステートマシン８００は状態８３０に入る。状態８３０の間、クロック制御回路１２０は、マスタまたはスレーブ装置が駆動を解放できるようにライン１２７でのローへの駆動を維持する。同期バスリクエスト信号（すなわち、ＳＲＥＱｘ）がアサートされれば、バスリクエスト信号がハイにデアサートされるまでステートマシン８００は状態８３０のままである。どのバスリクエスト信号ＳＲＥＱｘもローにアサートされずに予め定められたクロックサイクル数（すなわち、Ｎクロック）が経過すると、ステートマシン８００は状態８４０に入る。状態８４０の間、ライン１２７のクロックリクエスト信号ＣＬＫＲＥＱは１クロックサイクルの間クロック制御回路１２０によってハイにアサートされる。その後、ステートマシン８００は状態８１０に戻る。
【００４６】
ライン１２７のクロックリクエスト信号が再びローに引下げられそれによってステートマシン８００を状態８３０に入らせるまで、またはＭクロックサイクルが経過してステートマシン８００が状態８２０に入り周辺バスクロック信号が停止されるまで、ステートマシン８００は状態８１０のままである。
【００４７】
以上のことから、スレーブ装置６００は、周辺クロック信号ＣＬＫがオンのままであることを要求すれば、クロック制御回路１２０によるライン１２７のクロックリクエスト信号（一般に「インジケータ」信号と呼ばれる）のローへのアサーションを検出し（すなわち、図４の状態３４０の間、または図９の状態８４０の間）、ステートマシン３００の状態３３０（図４）による、またはステートマシン８００の状態８３０（図９）による決定に応じた付加的な期間クロックを動作させ続けるようにクロックリクエスト信号をローに駆動する。
【００４８】
次に図１０を参照して、バスインタフェースおよびアービタユニット１０６の代替的な構成がブロック図で示されている。図を簡略化し明瞭にするために、図５の回路部に対応する回路部には同じ参照番号が付されている。
【００４９】
図１０のシステムは、クロックリクエスト信号ＣＬＫＲＥＱを発生することができるバスマスタ（すなわち、マスタ１０８等）に関して図５を参照して上で記載した説明に従って動作する。このシステムも、クロックリクエスト信号を発生するようには設計されていない従来のバスマスタに適応する。マスタ９０２は、１つのそのような従来のバスマスタを表わしている。
【００５０】
内部でクロックリクエスト信号を発生できない従来の代替バスマスタとの逆方向の互換性を可能にするために、バスマスタ（すなわち、マスタ９０２）が同期バスリクエスト信号ＳＲＥＱｘを確実に発生できるように電力節約モードの間クロック信号のエッジの周期的な発生を制御するプログラマブルクロック制御回路９０６が設けられる。以下の説明からよりよく理解されるように、電力節約モードの間にクロックエッジが発生される周期速度は、従来のバスマスタの内部構成レジスタから読取られる値に依存する。
【００５１】
コンピュータシステム９００がリセットされると、マイクロプロセッサ１１９はＢＩＯＳブートコードの実行を開始する。ブーティングの手順の間、マスタ９０２の構成レジスタ９０４の内容を読取るために読取動作が実行される。この構成レジスタ９０４の特定の内容に関して以下に詳細に議論する。
【００５２】
ＢＩＯＳコードはまた、マスタ９０２がクロックリクエスト信号ＣＬＫＲＥＱを発生できるかどうかを表わす状態ビットを含む（マスタ９０２内の）予め定められたレジスタ位置に対して別の読出リクエストを呼出す（なお、クロックリクエスト信号は同様に「クロックラン」信号ＣＬＫＲＵＮとも呼ばれ得る）。マスタ９０２の場合、状態ビットは、マスタ９０２がクロックリクエスト信号ＣＬＫＳＲＥＱを発生できないことをシステムＢＩＯＳに示す。その後、システムＢＩＯＳは、マスタ１０８等の周辺バス１０２に接続され得る他のいかなるバスマスタ内の類似した状態および構成レジスタをも読取るために付加的な読取リクエストを開始し得る。
【００５３】
マスタ９０２の構成レジスタ９０４の内容は、マスタが周辺バス１０２へのアクセスを必要とし得る頻度を表わしている。周辺バス１０２がＰＣＩ規格構成バスである好ましい実施例では、構成レジスタ９０４は、いわゆるＭＡＸＬＡＴ（最大待ち時間）レジスタまたはフィールドとして実施され得る。当業者に容易に認識されるように、ＭＡＸＬＡＴフィールドは、特定の装置に必要とされるバンド幅、したがってバス調停のためのその優先順位レベルを決定するための他のフィールドとともに用いられる。特定のマスタの待ち時間の値の所望の設定を特定するために、ＭＡＸＬＡＴ値も用いられる。上で引用したＰＣＩ仕様に示されるように、ＭＡＸＬＡＴフィールドは、特定の装置がＰＣＩバスへのアクセスを必要とする頻度を特定するために用いられる。その値は、１／４μ秒の単位で期間を特定する。値０は、装置が（特定のマスタ内の）待ち時間タイマの設定を特には必要としてないことを表わす。
システムがリセットされると、ＢＩＯＳブートコードは、周辺バス１０２に接続される各々の代替バスマスタ内の指定されたＭＡＸＬＡＴ構成レジスタを読取り、どのバスマスタがクロックリクエスト信号の発生を支持できるかを判断する。各々のマスタのＭＡＸＬＡＴを読取ると、システムは、（クロックリクエスト信号ＣＬＫＲＥＱを発生できないマスタの中で）周辺バス１０２へのアクセスを最も頻繁に要求するマスタに対応するＭＡＸＬＡＴ値に従ってクロック制御タイマ９０８を設定する。周辺バス１０２を最も頻繁に要求するマスタがたとえば２μ秒という最大待ち時間を特定すれば、システムは、１μ秒（すなわち、特定された最大待ち時間の半分）ごとにサイクルを開始する（またはトリガする）ようにクロック制御タイマ９０８を設定する。その後、電力管理ユニット１１１が周辺バスクロックを停止させる決定を下すと、クロック制御タイマ９０８がサイクルを開始する。１μ秒ごとに、クロック制御回路９０６はクロックジェネレータ１２２に少なくとも１クロックエッジ（すなわち、ワンショットまたはマルチショット）を与えるようにさせる。これにより、周辺バス１０２に結合されるマスタ９０２等のいかなるバスマスタも、そのマスタがクロックリクエスト信号ＣＬＫＲＥＱを発生できなくても、周辺バス１０２の統御を得るために同期バスリクエスト信号（すなわち、ＳＲＥＱ２）を確実に発生できる。同期バスリクエスト信号ＳＲＥＱｘがリセットされると、プログラマブルクロック制御回路９０６は、電力管理ユニット１１１に、周辺バスクロック信号がその最大（または通常）の周波数で駆動される通常動作モードに再び入らせる。それにより、リクエストを出しているマスタがサービスされることが可能となる。
【００５４】
なお、好ましい実施例ではクロック制御タイマ９０８は特定された最大待ち時間の半分の期間で設定されるが、特定された最大待ち時間に比例する（またはそれに依存する）他の値でクロック制御タイマ９０８を設定してもよい。たとえば、システムに応じて、最大待ち時間の１／３の期間でクロック制御タイマ９０８を設定することも可能である。しかしながら、最大待ち時間の１／２の期間を設定することにより、各々のマスタがデータを損失することなく周辺バスの統御を確実に得ることができるようにしながら最適な電力の最適化が行なわれると考えられる。
【００５５】
したがって、図１０のシステムは、周期的なクロックエッジのエッジとエッジとの間でクロック信号をできるだけ長く停止させることにより、電力管理の最適化を適用する。図１１は、図１０のシステムの動作を示すフロー図である。ステップ９５０の間、システムＢＩＯＳは、スレーブ装置だけが周辺バス１０２に結合されるかどうかを判断する。もしそうであれば、ステップ９５２の間に、プログラマブルクロック制御回路はクロックリクエスト信号ＣＬＫＲＥＱを発生できないバスマスタを適用せずに図５および図７のシステムに従って動作するように設定される。ステップ９５４による判断に応じて周辺バス１０２に接続されるマスタの各々がクロックリクエスト信号ＣＬＫＲＥＱを発生できる場合、同様の動作が設定される。周辺バス１０２に接続される１つ以上のマスタがクロックリクエスト信号の発生を支持できなれば、ステップ９５６の間にマスタのＭＡＸＬＡＴフィールドが読取られ、ステップ９５８の間にクロック制御タイマ９０８はもっとも頻繁にアクセスを要求するマスタ装置によって必要とされる期間の半分の値で設定される。
【００５６】
代替的に、電力管理ユニット１１１が（クロックジェネレータ１２２を介して）電力節約モードの間（クロック信号を完全に停止させるのではなく）周辺バスクロック信号を低速にする場合、各々のマスタのＭＡＸＬＡＴフィールドから読取られる値は、クロック信号が低速にされ得る最小の周波数を決定するために用いられ得る。そのような実施例は図１２に示されている。図１２の実施例では、クロックジェネレータ１２２は、最も頻繁に周辺バスを要求するマスタのＭＡＸＬＡＴフィールド内で特定される最大待ち時間の値の半分以下の期間で周辺バスクロック信号を発生するようにプログラマブルクロック制御回路９０６によって設定される。たとえば、マスタ９０２がレジスタ９０４の値に従って２μ秒ごとに周辺バス１０２へのアクセスを必要とし得ることを示し、（クロックリクエスト信号の発生を支持できないマスタのうち）周辺バス１０２へのアクセスを最も頻繁に要求するのがそのマスタである場合、プログラマブルクロック制御回路９０６は、電力節約モードの間クロックジェネレータ１２２に１μ秒（または１μ秒以下）の期間で周辺バスクロック信号を駆動させる周波数制御信号をライン９０７で発生する。これにより、マスタ９０２が、少なくとも必要とし得る回数だけ、確実に同期バスリクエスト信号を発生できる。なお、一旦特定のマスタによってバスリクエスト信号ＳＲＥＱｘが発生されると、電力管理ユニット１１１はクロックジェネレータ１２２に十分な周波数で周辺バスクロック信号を駆動させる。
【００５７】
本発明に従ったシステムを用いれば、周辺バスの統御を得るために同期バスリクエスト信号をアサートしなければならない代替バスマスタを適用しながらなおかつ電力管理のために周辺バスクロック信号を停止させるまたは低速にすることができる。
【００５８】
周知の種々の回路縮小技術を採用することにより、上述のアルゴリズムステートマシン３００、５００、７００および８００を順序論理回路に縮小することが可能である。たとえば、ステートマシン３００、５００、７００および８００を順序論理回路に縮小するために、計算機援用設計ツールを用いてもよい。例示的な計算機援用設計ツールには、ＶＨＳＩＣハードウェア記述言語、およびＶＥＲＩＬＯＧ記述言語が含まれる。
【００５９】
図２および図５の電力管理ユニット１１１は、上述のものの他に種々の付加的な電力管理機能を実現するように構成されてもよい。たとえば、電力管理ユニット１１１は、１９９２年１１月２４日スミス（Ｓｍｉｔｈ  ）他に発行された米国特許番号第５，１６７，０２４号に記載される機能と類似した機能を実現するように設計されてもよい。この特許全体を引用によりここに援用する。
【００６０】
なお、スレーブ装置６００を、種々の特定の周辺装置によって実現することが可能である。たとえば、スレーブ装置６００は、ディスクコントローラ装置またはオーディオコントローラ装置であってもよい。
【００６１】
さらに、上述の実施例ではクロックジェネレータ１２２がバスインタフェースおよびアービタユニット１０６内にあるように示されているが、コンピュータシステム１００の種々の代替的な回路ブロックにクロックジェネレータ１２２を組込むことも可能である。
【００６２】
本願は、ゲファート（Ｇｅｐｈａｒｄｔ）他による１９９３年９月２２日出願の「周辺バスクロック信号を再始動させ周辺バスの統御を要求するためのシステムおよび方法（Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｒｅ−Ｓｔａｒｔｉｎｇ  ａ  Ｐｅｒｉｐｈｅｒａｌ  Ｂｕｓ  Ｃｌｏｃｋ  Ｓｉｇｎａｌ  ａｎｄ  Ｒｅｑｕｅｓｔｉｎｇ  Ｍａｓｔｅｒｓｈｉｐ  ｏｆ  ａ  Ｐｅｒｉｐｈｅｒａｌ  Ｂｕｓ  」と題された同一出願人に譲渡された同時係属中の出願連続番号第０８／１２５，４０６号、およびマクドナルド（ＭａｃＤｏｎａｌｄ  ）による１９９３年１０月１日出願の「スレーブ装置を介して周辺バスクロック信号を制御するためのシステムおよび方法（Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  Ｆｏｒ  Ｃｏｎｔｒｏｌｌｉｎｇ  Ａ  Ｐｅｒｉｐｈｅｒａｌ  Ｂｕｓ  Ｃｌｏｃｋ  Ｓｉｇｎａｌ  Ｔｈｒｏｕｇｈ  Ａ  Ｓｌａｖｅ  Ｄｅｖｉｃｅ）」と題された同一出願人に譲受された同時係属中の出願連続番号第０８／１３１，０９２号に関連している。これらの同時係属中の出願を引用によりここに援用する。
【００６３】
以上の開示を十分に認識すれば、多数の変形例および変更例が当業者に明らかになるであろう。たとえば、電力節約モードの間クロック信号を完全に停止させる（０Ｈｚ）のではなく、周辺バスクロック信号をいかなる周波数レベルにも低減できることを理解されたい。前掲の特許請求の範囲は、そのような変形例および変更例をすべて含むものとして解釈されるものである。
【図面の簡単な説明】
【図１】周辺バスとそれに結合される複数の代替バスマスタとを含むコンピュータシステムのブロック図である。
【図２】周辺バスクロック信号を再始動させるためのクロック制御回路を含むコンピュータシステムの一部分を示すブロック図である。
【図３】１対の信号ドライバをイネーブルするためのフリップフロップを含むコンピュータシステムの一部分を示すブロック図である。
【図４】図２のクロック制御回路内で実施されるアルゴリズムステートマシンを示す図である。
【図５】内部ステートマシンを有し、周辺バスクロック信号をリクエストしかつ同期バスリクエスト信号を発生するための代替バスマスタを含むコンピュータシステムの一部分を示すブロック図である。
【図６】代替バスマスタ内で実施されるアルゴリズムステートマシンを示す図である。
【図７】クロックリクエスト信号をアサートすることができるスレーブ装置を含むコンピュータシステムを示すブロック図である。
【図８】スレーブ装置内で実施されるアルゴリズムステートマシンを示す図である。
【図９】クロック制御回路内で実施されるアルゴリズムステートマシンを示す図である。
【図１０】従来のマスタ装置を含むコンピュータシステムを示すブロック図である。
【図１１】図１０のコンピュータシステム内のプログラマブルクロック制御回路の動作を説明するためのフロー図である。
【図１２】従来のマスタ装置を含むコンピュータシステムを示すブロック図である。
【符号の説明】
１０２  周辺バス
１０４  ローカルバス
１０６  バスインタフェースおよびアービタユニット
１０８  バスマスタ
１１０  バスマスタ
１１１  電力管理ユニット
１２０  クロック制御回路
１２２  クロックジェネレータ
【図１】
0003633998.tif 000002
【図２】
0003633998.tif 000003
【図３】
0003633998.tif 000004
【図４】
0003633998.tif 000005
【図５】
0003633998.tif 000006
【図６】
0003633998.tif 000007
【図７】
0003633998.tif 000008
【図８】
0003633998.tif 000009
【図９】
0003633998.tif 000010
【図１０】
0003633998.tif 000011
【図１１】
0003633998.tif 000012
【図１２】
0003633998.tif 000013