(57)【要約】【課題】本発明は、システムバスを介して相互に通信可能に接続された、Ｌ２キャッシュを含むＣＰＵと、バスマスタデバイスと、バススレーブデバイスとを含むコンピュータ・システムを提供する。【解決手段】コンピュータ・システム１００は、ＣＰＵ２０とＬ２キャッシュ２５間の第１トランザクションTrC1〜TrCnの状態と、システムバス１０とバスマスタデバイス３０、バススレーブデバイス４０、４２およびＬ２キャッシュ２５との間の第２トランザクションTrB0からTrBnの状態とを監視するトランザクション・モニタ６０と、トランザクション・モニタ６０から受信した第１トランザクションおよび第２トランザクションの状態に応じて、ＣＰＵ２０、システムバス１０およびバススレーブデバイス４０、４２のクロックFreqC1〜FreqS2の周波数を可変することができるクロック発生器７０と、を備える。【選択図】  図１
2014021786.tif 000002
【特許請求の範囲】
【請求項１】
システムバスを介して相互に通信可能に接続された、Ｌ２キャッシュを含むＣＰＵと、バスマスタデバイスと、バススレーブデバイスとを含むコンピュータ・システムであって、
ＣＰＵとＬ２キャッシュ間の第１トランザクションの状態と、システムバスとバスマスタデバイス、バススレーブデバイスおよびＬ２キャッシュとの間の第２トランザクションの状態とを監視するトランザクション・モニタと、
トランザクション・モニタから受信した第１トランザクションおよび第２トランザクションの状態に応じて、ＣＰＵ、システムバスおよびバススレーブデバイスのクロックの周波数を可変することができるクロック発生器と、を備えるコンピュータ・システム。
【請求項２】
前記トランザクション・モニタは、
前記ＣＰＵから前記Ｌ２キャッシュへのアクセスリクエストの頻度と、前記バスマスタデバイスからのアクセスリクエスト、前記Ｌ２キャッシュへのアクセスリクエスト、および前記バススレーブデバイスへのアクセスリクエストの頻度とを計数するカウンタと、
前記バススレーブデバイスへのアクセスリクエストのアドレスを識別するアドレス・デコーダと、を含む請求項１のコンピュータ・システム。
【請求項３】
前記トランザクション・モニタは、さらに、
前記カウンタによる計数値をレジタに格納された所定のしきい値と比較するための比較器と、
比較器の出力を計数するアップダウン・カウンタと、を含む請求項２のコンピュータ・システム。
【請求項４】
前記クロック発生器は、
入力基準信号を受けて所定の周波数のクロックを発生するためのＰＬＬ回路と、
前記アップダウン・カウンタの計数値に応じて、前記ＰＬＬ回路が出力するクロックの前記所定の周波数を可変するための分周器と、を含む請求項３のコンピュータ・システム。
【請求項５】
前記バススレーブデバイスは、システムバスにバスブリッジを介して接続する第２システムバスに接続する第２バススレーブデバイスを含む、請求項１〜４のいずれか１項のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・システムに関し、より具体的には、コンピュータ・システムにおけるクロック信号の周波数を可変することによるコンピュータ・システムの省電力化に関する。
【背景技術】
【０００２】
ＰＣやサーバシステムなどを含むコンピュータ・システムにおいて、電源、空調装置、あるいは冷却装置などの負荷軽減のために省電力化を行うことが重要となっている。そのために、従来から例えば特許文献１〜３に示されるように、ＣＰＵ／ＧＰＵ等の負荷、稼働率、温度（発熱）などの状態を監視し、それらに応じた省電力化が積極的に行われている。
【０００３】
その場合、ＣＰＵ／ＧＰＵの稼働率はＳ／Ｗでアイドルプロセスの割合を計測することによりモニタされ、稼働率に応じた制御もＳ／Ｗが行なうことが多い。また、制御対象もＩＣチップ全体の周波数を落としたり、電源電圧を落としたりしている。
【０００４】
この従来の方法は、電力削減の効果は大きい反面、ＩＣチップ全体のパフォーマンスを落としてしまうため、ＣＰＵ以外のバスマスタデバイスのパフォーマンスが落ちてしまい、さらにＣＰＵがフル稼働する時にほとんど動作していないブロック（チップ領域）も電力を消費してしまうという欠点がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表2009-545048号公報
【特許文献２】特開2008-217628号公報
【特許文献３】特開平9-128107号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、コンピュータ・システムにおいて、システムバスのトランザクションの状態を監視することにより省電力化を図ることである。
【０００７】
本発明の目的は、コンピュータ・システムにおいて、システムバスのバスのトランザクションの状態に応じてクロックの周波数を動的に変更するＨ／Ｗを用いることによって、Ｓ／Ｗの介在を必要としない省電力化を図ることである。
【課題を解決するための手段】
【０００８】
本発明は、システムバスを介して相互に通信可能に接続された、Ｌ２キャッシュを含むＣＰＵと、バスマスタデバイスと、バススレーブデバイスとを含むコンピュータ・システムを提供する。そのコンピュータ・システムは、ＣＰＵとＬ２キャッシュ間の第１トランザクションの状態と、システムバスとバスマスタデバイス、バススレーブデバイスおよびＬ２キャッシュとの間の第２トランザクションの状態とを監視するトランザクション・モニタと、トランザクション・モニタから受信した第１トランザクションおよび第２トランザクションの状態に応じて、ＣＰＵ、システムバスおよびバススレーブデバイスのクロックの周波数を可変することができるクロック発生器と、を備える。
【０００９】
本発明のコンピュータ・システムによれば、ＣＰＵとＬ２キャッシュ間の第１トランザクションの状態に応じてＣＰＵのクロック信号の周波数を可変することができ、さらに、システムバスとバスマスタデバイス、バススレーブデバイスおよびＬ２キャッシュとの間の第２トランザクションの状態に応じてシステムバスおよびバススレーブデバイスのクロック信号の周波数を可変することができる。その結果、本発明のコンピュータ・システムによれば、ＣＰＵ、システムバスおよび各デバイスの活動状態を推認しながら、個々の活動状態に応じて対応するクロックの周波数を可変することにより、コンピュータ・システム全体のパフォーマンスを維持しつつ省電力化を図ることができる。
【図面の簡単な説明】
【００１０】
【図１】本発明のコンピュータ・システムの構成例を示すブロック図である。
【図２】本発明のトランザクション・モニタとクロック発生器の構成例を示すブロック図である。
【発明を実施するための形態】
【００１１】
図面を参照しながら本発明の実施の形態を説明する。図１は、本発明のコンピュータ・システム１００の構成例を示すブロック図である。コンピュータ・システム１００は、システムバス１０を介して相互に通信可能に接続された、Ｌ２キャッシュ２５を含むＣＰＵ２０と、バスマスタデバイス３０と、バススレーブデバイス４０、４２、４４とを含む。コンピュータ・システム１００は、さらに、トランザクション・モニタ６０と、クロック発生器７０とを備える。
【００１２】
ＣＰＵ２０として、複数のＣＰＵ（１〜ｎ）を含むことができ、個々のＣＰＵ２０がＬ２キャッシュ２５を含む（利用する）ことができる。バスマスタデバイス３０は、ＣＰＵ２０を介さずに直接バススレーブデバイス等にアクセス可能なデバイスであり、ＣＰＵと同様に複数のデバイスを含むことができる。
【００１３】
バススレーブデバイス４０は、例えばメモリコントローラ（ＭＣ）からなり、ＤＤＲメモリ等のメモリ（ＤＲＡＭ）５０に接続する。バススレーブデバイス４２は、例えばグラフィックス・プロセッシング・ユニット（ＧＰＵ）からなり、ＤＤＲメモリ等のメモリ（ＤＲＡＭ）５２に接続する。バススレーブデバイス４４は、システムバス１０にバスブリッジ１２を介して接続する第２システムバス１４に接続する。
【００１４】
図１の構成において、各デバイスおよびバスはそれぞれ対応するクロック（クロック周波数）で動作することができる。具体的には、複数のＣＰＵ（１〜ｎ）は、個々に対応するクロックFreqC1〜FreqCnで動作可能である。システムバス１０は、クロックFreqB1で動作可能である。バススレーブデバイス４０、４２は、それぞれクロックFreqS1、FreqS2で動作可能である。第２システムバス１４は、クロックFreqB2で動作可能である。なお、図１の破線で囲まれた領域（ブロック）Ｃ１〜Ｃｎ、Ｂ１、Ｂ２、Ｓ１、Ｓ２は、それぞれ上述した対応する各クロックで動作する領域（ブロック）を意味している。
【００１５】
トランザクション・モニタ６０は、ＣＰＵ２０とＬ２キャッシュ２５間の第１トランザクションTr-C1〜Tr-Cnの状態と、システムバス１０とバスマスタデバイス３０、バススレーブデバイス４０、４２およびＬ２キャッシュ２５との間の第２トランザクションTr-B0〜Tr-Bnの状態とを監視する。クロック発生器７０は、トランザクション・モニタ６０から受信した第１トランザクションTr-C1〜Tr-Cnおよび第２トランザクションTr-B0〜Tr-Bnの状態に応じて、ＣＰＵ２０、システムバス１０、第２システムバス１４およびバススレーブデバイス４０、４２の上述した各クロックFreqC1〜FreqCn、FreqB1、FreqB2、FreqS1、FreqS2の周波数を可変して出力することができる。この各クロックの周波数の可変について以下に説明する。
【００１６】
（ａ）ＣＰＵクロックFreqC1〜FreqCnの周波数の可変  
トランザクション・モニタ６０は、ＣＰＵ２０とＬ２キャッシュ２５との間のトランザクションをTr-C1〜Tr-Cn をモニタすることにより、ＣＰＵ２０の活動状況を検知することができる。例えば、トランザクションTr-C1が少ない場合は、ＣＰＵ１のアクセスが全てＬ１キャッシュにヒットしているか、あるいはＣＰＵ１がアイドル状態であると考えられる。しかし、一般にＯＳ上にプログラムを実装しているためＬ１キャッシュにヒットし続けることはなく、ＣＰＵ１が活動中であればＬ２キャッシュ２５へのアクセスは発生する。
【００１７】
したがって、トランザクションTr-C1が少ない場合は、ＣＰＵ１がアイドル状態であると判断し、トランザクション・モニタ６０はクロック発生器７０に対してＣＰＵ１のクロックFreqC1の周波数を下げるように命令する。逆にトランザクションTr-C1が増えてきたと判断した場合、ＣＰＵ１が活動状態になったと判断し、トランザクション・モニタ６０はクロック発生器７０に対してＣＰＵ１のクロックFreqC1の周波数を上げるように命令する。同様な操作を各ＣＰＵに対して行なうことにより活動していないＣＰＵ２０のクロック周波数を自動的に下げて、消費電力を下げることが可能となる。
【００１８】
（ｂ）バスクロックFreqB1、FreqB2の周波数の可変  
トランザクション・モニタ６０は、Ｌ２キャッシュ２５やバスマスタデバイス３０からシステムバス１０へのトランザクションTr-B0〜Tr-Bnをモニタする。このシステムバス１０を介したトランザクションTr-B0〜Tr-Bnが少ないと判断した場合、トランザクション・モニタ６０は、クロック発生器７０に対してバスクロックFreqB1の周波数を下げる様に命令をする。
【００１９】
さらに、トランザクション・モニタ６０は、アクセスリクエストのアドレスを解析（識別）し、第２システムバス１４へのトランザクションが少ないと判断した場合は、クロック発生器７０に対して第２システムバス１４のクロックFreqB2の周波数を下げる様に命令をする。逆に第２システムバス１４へのトランザクションが増えてきたと判断した場合、第２システムバス１４が活動状態になったと判断し、トランザクション・モニタ６０はクロック発生器７０に対してバスクロックFreq B2の周波数を上げるように命令する。これにより第２システムバス１４が活動していない場合にバスクロックFreqB2の周波数を自動的に下げて、消費電力を下げることが可能となる。
【００２０】
（ｃ）スレーブクロックFreqS1、FreqS2の周波数の可変
トランザクション・モニタ６０は、アクセスリクエストのアドレスを解析し、バススレーブデバイス４０、４２のいずれかへのトランザクションが少ないと判断した場合は、クロック発生器７０に対して該当するバススレーブデバイスのクロック（FreqS1またはFreqS2）の周波数を下げる様に命令する。逆にバススレーブデバイス４０、４２へのトランザクション増えてきたと判断した場合、バススレーブデバイスが活動状態になったと判断し、トランザクション・モニタ６０は、クロック発生器７０に対してクロック（FreqS1、FreqS2）の周波数を上げるように命令する。これによりバススレーブデバイスが活動していない場合にスレーブクロックFreqS1、FreqS2の周波数を自動的に下げて、消費電力を下げることが可能となる。
【００２１】
図２は、本発明のトランザクション・モニタとクロック発生器の構成例を示すブロック図である。トランザクション・モニタ６０は、３つのブロック（ａ）〜（ｃ）を含む。ブロック（ａ）は、上述した（ａ）ＣＰＵクロックFreqC1〜FreqCnの周波数の可変に対応する。ブロック（ｂ）は、上述した（ｂ）バスクロックFreqB1、FreqB2のうちのバスクロックFreqB1の周波数の可変に対応する。ブロック（ｃ）は、上述した（ｂ）バスクロックFreqB1、FreqB2のうちのバスクロックFreqB2の可変および（ｃ）スレーブクロックFreqS1、FreqS2の周波数の可変に対応する。クロック発生器７０は、トランザクション・モニタ６０に各出力に対応したブロック７１０〜７３２を含み、各ブロックは位相同期回路（ＰＬＬ）と分周器（１／Ｎ）を含む。
【００２２】
トランザクション・モニタ６０のブロック（ａ）の構成は、ＣＰＵ２０の数（１〜ｎ）に対応して複数（ｎ）設けられる。ブロック（ａ）は、トランザクション・カウンタ６１０、しいき値レジスタ６２０、比較器６３０、およびアップダウン・カウンタ６４０を含む。トランザクション・カウンタ６１０は、ＣＰＵ２０とＬ２キャッシュ２５との間のトランザクションTr-C1〜Tr-Cnの数をカウント（計数）する。トランザクションTr-C1〜Tr-Cnの数は、例えば所定のクロック数当たりのＣＰＵ２０からＬ２キャッシュ２５へのアクセスリクエストの数が該当する。
【００２３】
トランザクション・カウンタ６１０の計数値は、比較器６３０において、しいき値レジスタ６２０に格納された所定のしきい値と比較される。所定のしきい値は、ＣＰＵ２０のアクセスが全てＬ１キャッシュにヒットしているか、あるいはＣＰＵ２０がアイドル状態であると判断可能な基準値として、経験的／実験的に適正な値として設定される。比較器６３０は、入力された計数値が所定のしきい値よりも大きい場合に、出力信号としてハイ（Ｈ）信号を出力し、しきい値以下の場合にロー（Ｌ）信号を出力する。このハイ（Ｈ）信号またはロー（Ｌ）信号は、ＣＰＵ２０が活動状態である、またはアイドル状態であることに対応する。
【００２４】
アップダウン・カウンタ６４０は、比較器６３０の出力ハイ（Ｈ）をプラス１（＋１）として、出力ロー（Ｌ）をマイナス１（−１）として計数をおこなう。アップダウン・カウンタ６４０の出力（計数値）は、クロック発生器７０のブロック７１０に入力され、分周器（１／Ｎ）のパラメータＮを可変するために利用される。すなわち、出力（計数値）が大きい場合は、分周器（１／Ｎ）のパラメータＮが大きくなる結果、ＰＬＬの出力クロックFreqC1の周波数が上がり、逆に出力（計数値）が小さい場合は、分周器（１／Ｎ）のパラメータＮが小さくなる結果、ＰＬＬの出力クロックFreqC1の周波数が下がる。これにより、ＣＰＵ２０（ＣＰＵ１〜ＣＰＵｎ）の各々の活動状態に応じてクロックFreqC1〜FreqCnの周波数を上げ下げすることが可能となる。
【００２５】
トランザクション・モニタ６０のブロック（ｂ）の構成は、基本的にブロック（ａ）の構成と同じであり、その動作も同様である。異なる点は、トランザクション・カウンタ６１２がモニタするトランザクション間の数に対応して複数設けられ、各トランザクション・カウンタ６１２が、ＣＰＵ２０とＬ２キャッシュ２５との間のトランザクションTr-C1〜Tr-Cnの数に代わって、システムバス１０を介したトランザクションTr-B0〜Tr-Bnの数をカウウント（計数）することである。トランザクションTr-B0〜Tr-Bnの数は、例えば、所定のクロック数当たりのシステムバス１０を介したバスマスタデバイス４０からのアクセスリクエスト、あるいはＬ２キャッシュへのアクセスリクエスト等の数が該当する。ブロック（ａ）の場合と同様に、アップダウン・カウンタ６４２の出力（計数値）により、ＰＬＬの出力クロックFreqB1の周波数を可変させることができ、その結果システムバス１０の活動状態に応じてクロックFreqB1の周波数を上げ下げすることが可能となる。
【００２６】
トランザクション・モニタ６０のブロック（ｃ）の構成においては、ブロック（ａ）と（ｂ）と異なり、トランザクション・カウンタ６１４が、アドレス・レコーダを備える。また、ブロック（ｃ）の構成は、バススレーブデバイスの数に対応して複数設けられる。アドレス・レコーダは、上述したアクセスリクエストのアドレスを解析（識別）し、いずれのバススレーブデバイスへのトランザクション（アクセス）が多いか少ないかを判断するために用いられる。トランザクション・カウンタ６１４は、アドレス・レコーダによって識別（特定）されたバススレーブデバイスへのトランザクション（アクセスリクエスト）の数をカウント（計数）する。その計数以降の動作は、上述したブロック（ａ）、（ｂ）の場合と同様である。他のブロックの場合と同様に、アップダウン・カウンタ６４４の出力（計数値）により、それぞれ対応したＰＬＬの出力クロックFreqB2、FreqS1あるいはFreqS2の周波数を可変させることができ、その結果バススレーブデバイスの活動状態に応じて対応するクロックの周波数を上げ下げすることが可能となる。
【００２７】
以上述べたように、本発明は、システムバスのトランザクションをモニタして、動作率の高い領域（ブロック）はクロックの周波数を下げずに、動作率の低いブロックのクロックの周波数を下げる。これによりシステム全体のパフォーマンスを維持したまま消費電力を下げることが可能となる。また、本発明では、動作率の低い領域（ブロック）の動作率が上がった場合、短時間でクロックの周波数を上げて通常動作に復帰させることができる。さらに、本発明は、Ｈ／Ｗで自動的に行われるので、特別なＳ／Ｗを準備する必要がない。
【００２８】
本発明の実施形態について、図を参照しながら説明をした。しかし、本発明はこれらの実施形態に限られるものではない。本発明はその趣旨を逸脱しない範囲で当業者の知識に基づき種々なる改良、修正、変形を加えた態様で実施できるものである。
【符号の説明】
【００２９】
１０  シシテムバス
２０  ＣＰＵ
３０  バスマスタデバイス
４０、４２、４４  バススレーブデバイス
５０、５２  メモリ
６０  トランザクション・モニタ
７０  クロック発生器
１００  コンピュータ・システム
【図１】
2014021786.tif 000003
【図２】
2014021786.tif 000004