(57)【要約】【課題】システムの電力／熱バジェットを超えることなく、デバイスの性能を最適化できるようクロック速度を制御する。【解決手段】様々な要因及び目的に基づいて、システム内の各デバイス(146〜156,106〜108)又はバス(110〜118,124)に対する、或いは複数のデバイス又はバスに対するクロック周波数を自動的に選択する(408,506,708,810,812)周波数マネージャ(158,180,200)である。これらの要因及び目的は、システムの電力／熱バジェットを超えることなくデバイスの性能を最適化することを含むことができる。該周波数マネージャは、従って、これらのデバイス又はバスに対する選択された周波数（複数可）を有するクロック信号を生成し提供する回路(120,182,212)を制御する(410,508,710,814)ことができる。例えばデバイスがフル実装されているわけではないシステム内において、本発明の実施例はフル実装されたシステムが利用する周波数よりも高いクロック周波数を選択することができる(408)。【選択図】図１Ａ
2005071367.tif 000002
【特許請求の範囲】
【請求項１】
零か又は１つ以上の他の電子デバイスと共にシステム内に実装された第１の電子デバイスと第２の電子デバイスとに対するクロック周波数を決定する方法であって、
前記第１の電子デバイスは、第１のバスに接続されており、前記第２の電子デバイスは、第２のバスに接続されており、
前記システム内に実装された前記第１の電子デバイスと前記第２の電子デバイスと前記零か又は１つ以上の他の電子デバイスとについての情報（３００）に少なくとも基づいて、前記第１の電子デバイス対する第１のクロック周波数と、前記第２の電子デバイスに対する第２のクロック周波数とを自動的に選択するステップ（４０８、５０６）
を含むことからなる、方法。
【請求項２】
前記第１のクロック周波数を有する第１のクロック信号を、前記第１の電子デバイスに提供し、前記第２のクロック周波数を有する第２のクロック信号を、前記第２の電子デバイスに提供するステップ（４１０）を更に含む、請求項１に記載の方法。
【請求項３】
前記第１の電子デバイスと前記第２の電子デバイスとについての前記情報は、前記第１及び第２の電子デバイスの帯域幅特性についての情報（３１２）を含む、請求項１に記載の方法。
【請求項４】
前記システム内に実装された前記第１の電子デバイスと前記第２の電子デバイスと前記零か又は１つ以上の他の電子デバイスとについての情報の少なくともいくつかを自動的に確認するステップ（４０４、５０４）を更に含む、請求項１に記載の方法。
【請求項５】
情報の少なくともいくつかを自動的に確認する前記ステップは、
前記第１の電子デバイスと前記第２の電子デバイスとのうちの少なくとも１つに照会するステップ（４０２、５０２）と、
前記照会するステップに応答して、前記第１の電子デバイスと前記第２の電子デバイスとのうちの少なくとも１つから情報を受け取るステップ（４０４、５０４）
とを含むことからなる、請求項４に記載の方法。
【請求項６】
前記第１の電子デバイスと、前記第２の電子デバイスと、前記零か又は１つ以上の他の電子デバイスとについての前記情報は、前記第１の電子デバイスと、前記第２の電子デバイスと、前記零か又は１つ以上の他の電子デバイスとのうちの少なくとも１つが、クロック周波数に関連して生成する熱量についての情報（３０８）を含み、該クロック周波数で、対応する前記第１の電子デバイスと前記第２の電子デバイスと前記零か又は１つ以上の他の電子デバイスとのうちの少なくとも１つが動作することからなる、請求項１に記載の方法。
【請求項７】
零か又は１つ以上の他の電子デバイスと共にシステム内に実装された第１の電子デバイスと第２の電子デバイスとに対するクロック周波数を決定するための周波数マネージャであって、
前記第１の電子デバイスは、第１のバスに接続されており、前記第２の電子デバイスは、第２のバスに接続されており、
前記システム内に実装された前記第１の電子デバイスと前記第２の電子デバイスと前記零か又は１つ以上の他の電子デバイスとについての情報（２０４、２０６）に少なくとも基づいて、前記第１の電子デバイスに対する第１のクロック周波数と前記第２の電子デバイスに対する第２のクロック周波数とを自動的に選択する周波数計算機（２０８）と、
前記周波数計算機と第１のクロック信号発生器と第２のクロック周波数発生器とに接続されたインターフェース（２１０）であって、該インターフェースは、
前記第１のクロック周波数でクロック信号を生成するために、コマンドを前記第１のクロック信号発生器に送り、
前記第２のクロック周波数でクロック信号を生成するために、コマンドを前記第２のクロック周波数発生器に送ることからなる、インターフェース
とを備えることからなる、周波数マネージャ。
【請求項８】
前記第１の電子デバイスと前記第２の電子デバイスとについての前記情報（２０４、２０６）は、前記第１及び第２の電子デバイスの帯域幅特性についての情報（３１２）を含む、請求項７に記載の周波数マネージャ。
【請求項９】
前記周波数計算機（２０８）は、前記システムに対する熱バジェットに更に基づいて、第１のクロック周波数と第２のクロック周波数とを自動的に選択する、請求項７に記載の周波数マネージャ。
【請求項１０】
前記周波数計算機（２０８）は、前記システムに対する電力消費バジェットに更に基づいて、第１のクロック周波数と第２のクロック周波数とを自動的に選択する、請求項７に記載の周波数マネージャ。
【請求項１１】
前記第１の電子デバイスと第２の電子デバイスとについての情報の少なくともいくつかを自動的に確認する情報入力（２０２）を更に備える、請求項７に記載の周波数マネージャ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピュータバスに対するクロック信号を生成するための装置及び方法に関し、特に、コンピュータシステムの電力バジェット（又はパワーバジェット、又は電力収支、(power budget)）、又は熱バジェット（又はサーマルバジェット、又は熱収支、(thermal budget）)を超えることなくコンピュータデバイスの性能を最適化するために、該クロック信号のための周波数を選択する装置及び方法に関する。
【０００２】
本明細書は、下記の同一出願人に所有された米国特許出願に関連する。
【０００３】
すなわち、２００３年８月２２日に発明者Andrew H. Barr、Ricardo Espinoza-Ibarra、及びKevin Somervillによって出願された「BUS CLOCK FREQUENCY MANAGEMENT BASED ON DEVICE LOAD」と題する米国特許出願第１０／６４６，０７９号、並びに２００３年８月２２日に発明者Andrew H. Barr、 及びRicardo Espinoza-Ibarraによって出願された「BUS CLOCK FREQUENCY MANAGEMENT BASED ON CHARACTERISTICS OF AN APPLICATION PROGRAM」と題する米国特許出願第１０／６４６，０７８号に関連するものである。
【背景技術】
【０００４】
プロセッサ、メモリ、及びグラフィックコントローラのような多くの電子デバイスの性能は、これらのデバイスが動作するクロック周波数に依存する。このようなデバイスは典型的には、デバイスにクロック信号を提供するバス又は他の回路に接続される。クロック信号は典型的には、正確にタイミングがとられた方形波パルスの列である。バスのクロック周波数は一般に「バス速度」と呼ばれ、２つの連続するクロックパルス間の期間は、一般に「クロックサイクル」又は「バスサイクル」と呼ばれる。
【０００５】
クロック信号は、デバイスが動作する速度を決定する。典型的にはデバイスは、１クロックサイクル当たりに、固定数の動作を実行する。例えば、プロセッサによっては、４といったような固定された係数により、クロック信号を内部で乗算するものもあるが、クロック信号が、プロセッサが命令を実行する周波数を決定する。同様に、クロック信号は、メモリ、ネットワークインターフェース、ディスクコントローラ、又は他の周辺デバイスに、データを送ることができるか、又はメモリ、ネットワークインターフェース、ディスクコントローラ、又は他の周辺デバイスからデータを取り出すことができる周波数を決定し、従って、デバイスの「帯域幅」を決定する。例えば、メモリが３２ビット（４バイト）のデータを一度に受け入れることができるか、又は提供することができ、且つ、そのクロック周波数が２００ＭＨｚの場合には、メモリの帯域幅は４バイト×２００ＭＨｚ＝８００Ｍバイト／秒となる。同様の解析が他のデバイスにも当てはまる。従って一般に、電子デバイスは、より高いクロック周波数又はバス速度で動作する時に、より高い性能を発揮する。より高いクロック周波数で動作するデバイスの製造を可能にする技術の進歩と併せて、絶えず増大している性能レベルの市場需要によって、時が経つにつれて次第により高いデバイスクロック周波数を使用されるようになってきた。
【０００６】
電子デバイスは電力を消費し、熱を放出する。過剰の熱は電子デバイスにダメージを与える可能性があるため、これらデバイスを十分に冷却しなければならない。従って放熱は、特に高密度なシステム内に問題をもたらす。不都合なことに、一般にクロック速度がより高くなるにつれ、電子デバイスにより多くの電力を消費させ、より多く放熱させる。例えば、ＣＭＯＳノード（電子デバイス内の一般的な構成要素）は、バイナリ状態を変化させる時には常に、その負荷容量を充電又は放電しなければならず、それにより、電流が消費されるか、又は熱の形で蓄えられたエネルギーのうちのいくらかを失う。電子デバイス内のＣＭＯＳノードが状態を変更させる速度は、デバイスの動作周波数に関連付けられるため、このようなデバイスによる動的電力消費及び放熱は、一般にデバイスのクロック周波数に比例する。
【０００７】
システムは典型的には、電力／熱バジェット内で動作するように設計される。すなわち、各システムは、これらデバイスによる総計で、所定の最大電力量までをシステム内のデバイスに提供するように、且つ、所定の最大発熱量までを放熱するように設計される。ＰＣＩスロット、ＡＧＰスロット、又はメモリソケットのような零か又は１つ以上の拡張モジュールを選択的に実装（又は装填）することができる拡張スロットを有するシステムは、典型的には、「ワーストケース」のシナリオ、すなわち、全ての拡張スロットがフル実装されるシナリオを想定した電力／熱バジェットを用いて設計される。例えば、このようなシステムは典型的には、拡張スロット内に実装される可能性のある最大数の拡張モジュールを処理することができる電源を備える。更に、バス速度は、全ての拡張スロットが実装された場合であっても、システムの熱バジェットを越えないようにセットされる。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
この保守的な設計哲学は、特にシステムが拡張モジュールによってフル実装されているわけではない場合に、実装されたデバイスのクロック速度を、従って性能を、人為的に制限する。いくつかの又は全ての実装されたデバイスによる潜在的な性能は、無視される。何故ならば、拡張モジュールによってフル実装されているわけではないシステム内において、実装されたデバイスの少なくともいくつかは、システムの電力バジェット又は熱バジェットを超えることなく、より高いクロック周波数で動作するかもしれないからである。従って購入者は、高い性能を引き出すことが可能なデバイスに対して割増料金を払っているにも関わらず、従来技術の設計哲学は、購入者がこういったデバイスの潜在的な性能から十分に利益を得ることを妨げている。
【課題を解決するための手段】
【０００９】
本発明の一態様において、零か又は１つ以上の他の電子デバイスと共にシステム内に実装された第１の電子デバイスと第２の電子デバイスとに対するクロック周波数を決定する方法であって、該第１の電子デバイスは、第１のバスに接続されており、該第２の電子デバイスは、第２のバスに接続されていることからなる、方法が開示される。該方法は、システム内に実装された第１の電子デバイスと第２の電子デバイスと零か又は１つ以上の他の電子デバイスとについての情報に少なくとも基づいて、第１の電子デバイスに対する第１のクロック周波数と、第２の電子デバイスに対する第２のクロック周波数とを自動的に選択するステップを含む。
【００１０】
本発明の他の態様において、製品が開示される。該製品は、零か又は１つ以上の他の電子デバイスと共にシステム内に実装された第１の電子デバイスと第２の電子デバイスとに対するクロック周波数を決定することができるコンピュータ実行可能命令を含む。該第１の電子デバイスは、第１のバスに接続されており、該第２の電子デバイスは、第２のバスに接続されている。該コンピュータ実行可能命令はまた、システム内に実装された第１の電子デバイスと第２の電子デバイスと零か又は１つ以上の他の電子デバイスとについての情報に少なくとも基づいて、第１の電子デバイスに対する第１のクロック周波数と第２の電子デバイスに対する第２のクロック周波数とを自動的に選択することもできる。
【００１１】
本発明の更に他の態様において、零か又は１つ以上の他の電子デバイスと共にシステム内に実装された第１の電子デバイスと第２の電子デバイスとに対するクロック周波数を決定するための周波数マネージャであって、該第１の電子デバイスは、第１のバスに接続されており、該第２の電子デバイスは、第２のバスに接続されていることからなる、周波数マネージャが開示される。該周波数マネージャは、システム内に実装された第１の電子デバイスと第２の電子デバイスと零か又は１つ以上の他の電子デバイスとについての情報に少なくとも基づいて、第１の電子デバイスに対する第１のクロック周波数と第２の電子デバイスに対する第２のクロック周波数とを自動的に選択する周波数計算機を備える。該周波数マネージャはまた、周波数計算機と、第１のクロック信号発生器と、第２のクロック周波数発生器とに接続されたインターフェースも備える。該インターフェースは、第１のクロック周波数でクロック信号を生成させるために、コマンドを第１のクロック信号発生器に送ることができ、第２のクロック周波数でクロック信号を生成させるために、コマンドを第２のクロック周波数発生器に送ることができる。
【発明の効果】
【００１２】
システムの電力／熱バジェットを超えることなくクロック速度（複数可）を制御することで、デバイスの性能を最適化できる。
【実施例】
【００１３】
本発明のこれらの及び他の特徴及び利点、並びに本発明の様々な実施形態の構成及び動作は、添付図面を参照して下記に詳細に説明される。図面内では、同じ参照番号は、同一の又は機能的に類似の要素を示し、各アイテムの各参照番号の最初の一桁は、そのアイテムが最初に紹介された図を特定する。
【００１４】
本発明は、システムの電力／熱バジェットを超えることなく、デバイスの性能を最適化するために、システム内の１つ又は複数のデバイスに対する（本明細書においては「クロック周波数（複数可）」とも呼ぶ）クロック速度（複数可）を決定し、制御するための装置及び方法を提供する。デバイスは、ソケットにプラグイン接続される拡張カード又は拡張モジュール、回路基板に恒久的に接続される又はソケットにプラグイン接続されるディスクリート回路又は集積回路、ドーターカード、プロセッサ、メモリ、又はそれに類するもの、又はこれらの組み合わせとすることができる。これらのデバイスは典型的には、クロック信号をデバイスに提供するバス又は他の回路（下記ではまとめて「バス」と呼ばれる）に接続され、このクロック信号が、これらのデバイスが動作する速度、従って、これらデバイスが消費する電力量と、これらデバイスの放熱量とを決定する。本発明の実施形態は、様々な要因及び目的に基づいて、各デバイス又はバスに対する、或いは複数のデバイス又はバスに対するクロック周波数を自動的に選択するために、「周波数マネージャ」及び関連付けられた構成要素、並びに方法を提供する。これらの周波数マネージャ、関連付けられた構成要素、及び方法は従って、選択された周波数（複数可）を有するクロック信号を生成し、これらのデバイス又はバスに提供する回路を制御することができる。
【００１５】
該要因及び目的を、従来技術の保守的な「ワーストケース」の設計哲学を使用して達成できること以上に、システム内のデバイスの性能を最適化するために使用することができる。例えば、デバイスがフル実装されているわけではないシステム内において、本発明の実施形態は、フル実装されたシステムが利用するクロック周波数よりも、より高いクロック周波数を選択することができる。本発明の実施形態によっては、狭帯域のデバイスに対するよりも、広帯域のデバイスに対してより高いクロック周波数を選択するものもあれば、どのデバイスをこれらのアプリケーションプログラムが頻繁にアクセスするかといったような、システムによって実行されるアプリケーションプログラムについての情報を使用して、頻繁にアクセスされるデバイスに対してより高いクロック周波数を選択するものもある。更に他の実施形態では、アプリケーションプログラムがよりメモリを多用するか、それともよりＩ／Ｏデバイスを多用するかどうかについての情報を用いて、メモリサブシステム、或いはＩ／Ｏサブシステムのいずれかに、より高いクロック周波数を割り振る。
【００１６】
システムのデバイスによって安全に放熱されることができる総熱量は、システムの熱バジェットとして知られている。システムデバイスに、総計でシステムの熱バジェットに等しい熱量を放熱させるクロック速度のセットは、システムの「クロック速度バジェット」として考えることができる。デバイスの放熱は、そのクロック速度に比例するため、システムの熱バジェットはシステムのクロック速度バジェットと等価である。熱バジェットのように、クロック速度バジェットをシステムのデバイス間に割り振ることができる。すなわち、異なるデバイスを、異なるクロック速度で動作させることが可能である。個々のデバイスは、相対的により高い又は低いクロック速度で動作されることができるため、システムの熱バジェット又はクロック速度バジェットをより多く、又はより少なく消費するが、全てのデバイスによる総消費量はバジェットを超えるべきではない。
【００１７】
システムによってそのデバイスに提供されることのできる総電力量は、システムの電力バジェットとして知られている。デバイスの電力消費量はそのクロック速度に比例するため、システム内のデバイスのクロック速度は、デバイスが全体としてシステムの電力バジェットを超えないように選択されるべきである。
【００１８】
システムの電力バジェットを、システムの電源及びシステムの冷却システムの相対的な容量に依存して、システムの熱バジェットよりも大きくすることもできるし、又は小さくすることもできる。従って、これらバジェットの一方が他方を超えるということを前提としないで、システムのデバイスが動作すべきクロック速度を決定する時に、システムの熱バジェットとシステムの電力バジェットとの両方が好ましくは考慮されるべきである。本発明の実施形態は、本質的には、デバイス（複数可）、バス（複数可）、或いは１つ又は複数のデバイス又はバスのグループ（複数可）に対するクロック速度を指定することにより、システムの熱バジェット、電力バジェット、又は両方の一部を、各デバイス又はバスに、或いは１つ又は複数のデバイス又はバスのグループに割り振る。
【００１９】
一例を提供する目的で、本発明は、サーバ又はワークステーションとして使用されることができるような汎用コンピュータに関連して記載される。しかしながら、当業者であれば、本明細書における教示を、他の状況にも適用することができる。その状況においては、デバイス、メモリユニット又はバスは、上記又は下記に例が提示されているクロック周波数で動作する。
【００２０】
図１Ａは、本発明の一実施形態が、どのように有利に実施されることができるかを示すための例示的なコンピュータ１００のブロック図を含む。コンピュータ１００は、１つ又は複数のプロセッサ１０２及び１０４、１つ又は複数のメモリユニット１０６及び１０８、並びに１つ又は複数のＰＣＩバス１１０、１１２、１１４、１１６、及び１１８を備え、これらは全てメモリ＆Ｉ／Ｏコントローラ１２０によって相互に接続されている。プロセッサ１０２及び１０４は、好ましくは、（時には「フロントサイドバス」と呼ばれる）プロセッサバス１２２により、メモリ＆Ｉ／Ｏコントローラ１２０に接続される。
【００２１】
メモリユニット１０６及び１０８は、好ましくは、メモリバス１２４によりメモリ及びＩ／Ｏコントローラ１２０に接続される。メモリユニット１０６及び１０８は、メモリバス１２４に恒久的に接続されることができ、又はソケットを介してバスに接続されることもできる。１つのみのメモリバス１２４が示されているが、２つ以上のメモリバスを、メモリ＆Ｉ／Ｏコントローラ１２０に接続された付随のメモリユニットと共に有することも可能である。同様に、メモリバス１２４は、２つのメモリユニット１０６と１０８とがそこに接続された状態で示されるが、より多数の、又はより少数のメモリユニットが、どのメモリバスにも接続されることができる。
【００２２】
各ＰＣＩバス１１０〜１１８は、好ましくは、Ｉ／Ｏアダプタ１２６、１２８、１３０、１３２、及び１３４（のそれぞれ）により、並びに同期バス１３６、１３８、１４０、１４２、及び１４４（のそれぞれ）により、メモリ＆Ｉ／Ｏコントローラ１２０に接続される。図１Ａに示されるように、Ｉ／Ｏアダプタ１２６のようないくつかのＩ／Ｏアダプタは、同期バス１３６及び１３８のような２つ以上の同期バスによってメモリ＆Ｉ／Ｏコントローラ１２０に接続されることができ、Ｉ／Ｏアダプタとメモリ＆Ｉ／Ｏコントローラとの間により広い帯域幅のパスを提供する。図１Ａにもまた示すように、Ｉ／Ｏアダプタ１３２及び１３４のようないくつかのＩ／Ｏアダプタは、同期バス１４４のように同期バスを共有することができる。コンピュータシステム１００は、Ｉ／Ｏアダプタ１２６〜１３４及び同期バス１３６〜１４４のような中間ユニットを、ＰＣＩバス１１０〜１１８と、メモリ＆Ｉ／Ｏコントローラ１２０との間に使用するが、ＰＣＩバスをメモリ＆Ｉ／Ｏコントローラに直接接続することも許容可能である。バス１１０〜１１８は、ＰＣＩバスとして示されているが、ＡＧＰ又はＳＣＳＩのような他の標準バスアーキテクチャ、又は所有権があるバスアーキテクチャが使用されることもできる。
【００２３】
図１Ａはまた、ＰＣＩバス１１０〜１１８に接続されたデバイス１４６、１４８、１５０、１５２、１５４、及び１５６も示す。これらデバイス１４６〜１５６は、典型的には、ネットワークインターフェース及びディスクコントローラのようなＩ／Ｏデバイスであるが、それらを、プロセッサ、メモリ、又はＰＣＩバス１１０〜１１８に接続されることができる任意の他のタイプのデバイスとすることもできる。デバイス１４６〜１５６は、それぞれのＰＣＩバス１１０〜１１８に恒久的に接続されることができるか、又はソケットを介してそれぞれのＰＣＩバスに接続されることもできるか、又は恒久的な接続及びソケットの組み合わせによりそれぞれのＰＣＩバスに接続されることもできる。図１Ａに示されるように、ＰＣＩバス１１０、１１２、１１６、及び１１８のようないくつかのＰＣＩバスには、１つのみのデバイスがそれぞれに取り付けられている。一方、ＰＣＩバス１１４には、２つ以上のデバイス１５０及び１５２が接続されている。サーバのような高性能コンピュータシステムは、１つのバス当たりに、１つのみのデバイスを有する場合が多い。
【００２４】
メモリ＆Ｉ／Ｏコントローラ１２０は、メモリバス１２４及び同期バス１３６〜１４４に対するクロック信号を生成する。Ｉ／Ｏアダプタ１２６〜１３４は、各同期バス１３６〜１４４を介して受け取ったクロック信号を使用して、各ＰＣＩバス１１０〜１１８に対するクロック信号を生成する。一般に、Ｉ／Ｏアダプタ１２６〜１３４は、各同期バス１３６〜１４４を介して受け取ったクロック信号を乗算器によって乗算することにより、ＰＣＩバス１１０〜１１８に対するクロック信号を生成する。その生成されたクロック信号は、受け取ったクロック信号よりも大きく、又は小さく、又は等しくされることができる。代替として、Ｉ／Ｏアダプタ１２６〜１３４は、同期バス１３６〜１４４からのクロック信号を使用することなく、ＰＣＩバス１１０〜１１８に対するクロック信号を生成することができる。例えば、Ｉ／Ｏアダプタ１２６〜１３４は、水晶発振器、周波数シンセサイザ、又は他の適切な回路を使用することができる。
【００２５】
これまで述べたように、コンピュータ１００は従来のものである。このようなコンピュータは、HP server rx5670、又はHP server rx2600という商品名で、カリフォルニア州パロアルトに所在のHewlett-Packardから利用可能であり、メモリ＆Ｉ／Ｏコントローラ１２０、及びＩ／Ｏアダプタ１２６〜１３４は、HP zx１ chipsetという商品名で、利用可能である。コンピュータ１００は、単一のモノリシックな（又は一体構造の）メモリ＆Ｉ／Ｏコントローラ１２０と共に示されているが、メモリ＆Ｉ／Ｏコントローラの構成要素は、分離した回路として実施されることもできる。例えば、分離したディスクリート回路、又は集積回路を、様々なバス１１０〜１１８及び１２４のそれぞれに対するクロック信号を生成するために使用することができる。
【００２６】
図２は、図１Ａに記載されたコンピュータ１００のようなコンピュータ内において使用されることができる周波数マネージャ２００の一実施形態のブロック図である。周波数マネージャ２００は、以下に更に詳細に述べるように、コンピュータと、コンピュータに接続されたデバイス及び／又はメモリとについての情報を得る情報入力２０２を備える。情報入力２０２は、デバイス及び／又はメモリ、ＲＯＭ／ＥＥ−ＰＲＯＭ、コンソール、サービスプロセッサ、ユーザインターフェース、及び／又はＬＡＮ（まとめて２０４）に直接的に又は間接的に接続されることができ、それにより、情報入力は、この情報を得ることができる。情報入力２０２により集められた情報は、データベース２０６に格納される。そのデータベース２０６は、例えばＲＡＭとすることができる。周波数計算機２０８が、データベース２０６に格納されている情報を使用して、以下に更に詳細に述べるように、デバイス及び／又はメモリに対する１つ又は複数のバス周波数を計算する。クロック信号発生器インターフェース２１０は、クロック信号発生器によって生成されたクロック信号の周波数（複数可）をセットするために、周波数マネージャ２００を１つ又は複数のクロック信号発生器２１２に相互接続する。
【００２７】
図１Ａは、接続１５９を介してメモリ＆Ｉ／Ｏコントローラ１２０に接続された周波数マネージャ１５８の一実施形態を示す。周波数マネージャ１５８は、以下に更に詳細に述べるように、デバイス又はメモリユニットについての情報を得るために、デバイス１４６〜１５６、メモリユニット１０６及び１０８、又はデータベースに照会することができる。この情報に基づいて、周波数マネージャ１５８は、ＰＣＩバス１１０〜１１８及びメモリバス１２４に対して生成されるクロック信号の周波数を制御することができる。ＰＣＩバス１１０〜１１８及びメモリバス１２４に接続された１つ又は複数のデバイス又はメモリユニットは、それぞれのバスのクロック信号の周波数で動作する。
【００２８】
図１Ａに示される周波数マネージャ１５８の実施形態は、マイクロプロセッサであることができる制御プロセッサ１６０と、ＲＡＭ及び／又はＲＯＭ１６２と、オプションのコンソール１６４及び／又は外部コンソールに対するインターフェース１６６と、ユーザインターフェース又はそれに類するもの１６８と、オプションのディップスイッチ１７０とを備えることができ、これらは全て内部バス１７２によって相互接続されている。周波数マネージャ１５８は、ＲＡＭ／ＲＯＭ１６２内に格納されたソフトウェア命令又はファームウェア命令として実施されることができ、前述及び後述のように、プロセッサ１６０によって実行され、他の構成要素を制御する。周波数マネージャ１５８は、ハードウェア構成要素１６０〜１７２を他の機能と共に共有することができる。例えば、これらのハードウェア構成要素１６０〜１７２はまた、電源投入時の自己診断テスト（「ＰＯＳＴ」）機能を実行することもできるし、又はサービスプロセッサを実行することもできる。
【００２９】
周波数マネージャ１５８は、接続１５９を介してコマンド及びクエリを、メモリ＆Ｉ／Ｏコントローラ１２０に送ることができる。これらクエリは、デバイス１４６〜１５６及びメモリユニット１０６〜１０８についての情報を得るために使用されることができる。周波数マネージャ１５８は、以下で更に詳細に述べられるように、この情報を自動的に、又はユーザ入力を通して得ることもできる。周波数マネージャ１５８は、デバイス１４６〜１５６及びメモリユニット１０６〜１０８についての情報をＲＡＭ１６２内に格納することができる。
【００３０】
メモリ＆Ｉ／Ｏコントローラ１２０により、同期バス１３６〜１４４とメモリバス１２４とに対して生成されるクロック信号の周波数を指定するために、コマンドが使用されることができる。代替として、又は追加として、メモリ＆Ｉ／Ｏコントローラ１２０は、同期バス１３６〜１４４を介してこれらのコマンド及びクエリのうちの適切なものを、Ｉ／Ｏアダプタ１２６〜１３４に転送することができ、そして必要な時には、Ｉ／Ｏアダプタを通してデバイス１４６〜１５６に転送することができる。同様に、メモリ＆Ｉ／Ｏコントローラ１２０は、メモリバス１２４を介してこれらコマンド及びクエリのうちの適切なものを、メモリユニット１０６〜１０８に転送することができる。これら転送されたコマンドは、Ｉ／Ｏアダプタ１２６〜１３４に指定されたクロック周波数のクロック信号を生成するよう指示するために使用されることができる。例えば、これらコマンドは、各同期バス１３６〜１４４のクロック信号に適用されるための乗算器を指定することができる。以前にも述べたように、Ｉ／Ｏアダプタ１２６〜１３４は、ＰＣＩバス１１０〜１１８に対するクロック信号を生成するために、同期バス１３６〜１４４を介して受信したクロック信号に乗算器を適用する。代替として、これらのコマンドは、ローカルなクロック信号発生器を使用して、Ｉ／Ｏアダプタ１２６〜１３４によって生成されるためのクロック信号の周波数を明確に指定することができる。
【００３１】
図１Ｂは、クロックシンセサイザ１８２に接続された周波数マネージャ１８０の代替の実施態様を示す。クロックシンセサイザ１８２は次に、メモリ＆Ｉ／Ｏコントローラ１２０に接続される。この実施形態では、周波数マネージャ１８０は、マイクロプロセッサ／メモリの組み合わせ、ＡＳＩＣ、ＦＰＧＡ、又はそれらに類するもののような専用の集積回路、又は目的が共有された集積回路、あるいは集積回路の組み合わせとして実施される。周波数マネージャ１８０は、ＲＯＭ／ＥＥ−ＰＲＯＭ、ディップスイッチ、コンソール、サービスプロセッサ、ユーザインターフェース、又はＬＡＮ（まとめて１８４）の任意の組み合わせから入力を受け取ることができる。図１Ａを参照して述べた実施形態におけるように、周波数マネージャ１８０は、デバイス１４６〜１５６及びメモリユニット１０６〜１０８に照会するために、乗算器の指定等々を行うために、クロックシンセサイザ１８２を介して、メモリ＆Ｉ／Ｏコントローラ１２０、及びＩ／Ｏアダプタ１２６〜１３４と通信することができる。
【００３２】
クロックシンセサイザ１８２は、例えば、Ｉ２Ｃ  Ｉ／Ｏ拡張器により制御された従来のクロック信号発生器として実施されることができ、このＩ２Ｃ拡張器は、Ｉ２Ｃバス１８６を介して周波数マネージャ１８０と通信することができる。この実施形態では、メモリ＆Ｉ／Ｏコントローラ１２０は、内部クロック信号発生器を備えない。その代わりに、メモリ＆Ｉ／Ｏコントローラ１２０は、クロックシンセサイザ１８２によって生成されたクロック信号を受信し、このクロック信号を使用して、メモリバス１２４及び同期バス１３６〜１４４に対するクロック信号を生成する。
【００３３】
先も触れたように、周波数マネージャ１５８又は１８０は、様々な要因及び目的に基づいて、各デバイス１４６〜１５６、ＰＣＩバス１１０〜１１８、又はメモリバス１２４に対する、或いは複数のこれらデバイス又はバスに対する、クロック周波数を自動的に選択する。（簡単のために、残りの説明は周波数マネージャ１５８を参照してなされる。しかしながら、その説明はまた周波数マネージャ２００にも適用される）。これら要因は、周波数マネージャによって管理されるデバイス又はバスの数と、デバイス又はメモリユニットの放熱特性、特にこれらの特性として、これらデバイス又はメモリユニットが動作するクロック速度に関連する特性、すなわち、これらデバイス又はメモリユニットが動作中に、及び様々なクロック速度で、放熱する度合いと、デバイス又はメモリユニットの標準の、最小の、及び最大の帯域幅の要件と、デバイス又はメモリユニットの電力消費特性と、アプリケーションプログラムがどのデバイス（複数可）を使用するか、どれだけのメモリをアプリケーションプログラムが必要とするか、アプリケーションプログラムがよりメモリを多用するか又はよりＩ／Ｏを多用するかどうか、といったデバイス又はメモリユニットを備えたシステムによって実行されるためのアプリケーションプログラムの特性とを含むことができる。周波数マネージャ１５８の実施形態は、以下に述べられる様々な技法によりデバイス１４６〜１５６及びメモリユニット１０６〜１０８についてのこの及び他の情報を得ることができる。
【００３４】
図３は、周波数マネージャ１５８によって、デバイス１４６〜１５６又はメモリユニット１０６〜１０８のうちの１つ（周波数マネージャ１５８はそれに対するクロック周波数を選択することができる）についての情報を格納するために使用される例示的なデータ構成３００の図である。周波数マネージャ１５８は、これらデータ構成をＲＡＭ１６２内に格納する。
【００３５】
フィールド３０２は、デバイス又はメモリユニットの識別子（ＩＤ）を含む。フィールド３０４は、デバイスの又はメモリユニットの機能についての情報を含む。例えば、この情報は、デバイス又はメモリユニットが、ネットワークインターフェース、ディスクコントローラ、グラフィックコントローラ、プロセッサ、又はメモリであることを示すことができる。フィールド３０６は、デバイス又はメモリユニットの電力消費特性についての情報を含むことができる。これは、最小の、平均の、及び最大の電力消費量、並びにクロック周波数に関連付けられた電力消費量を含むことができる。この関連付けは、例えば、表、もしくは式の形とすることができる。フィールド３０８は、デバイス又はメモリユニットの放熱特性についての情報を含むことができる。これは、最小の、平均の、及び最大の放熱量、並びにクロック周波数に関連付けられた放熱量を含むことができる。この関連付けは、例えば、表、もしくは式の形とすることができる。フィールド３１０は、動作周波数の情報を含むことができる。これは、デバイス又はメモリユニットが動作可能な最小の、平均の、及び最大のクロック周波数を含むことができる。フィールド３１２は、帯域幅、及び他の情報を含むことができる。例えば、これは、ネットワークインターフェースが動作することのできる接続速度と、メモリユニットの記憶容量と、ディスクの最大転送速度とを含むことができる。
【００３６】
周波数マネージャ１５８の実施形態は、様々な技法によってデバイス１４６〜１５６及びメモリユニット１０６〜１０８についての情報を得ることができる。例えば、電源投入時の自己診断テスト（「ＰＯＳＴ」）中に、周波数マネージャ１５８は、以前にも述べたように、デバイス１４６〜１５６及びメモリユニット１０６〜１０８の中のレジスタ又は記憶位置に照会することができる。代替として、プロセッサ１６０により、又はデバイス１４６〜１５６及びメモリユニット１０６〜１０８により実行されるＢＩＯＳ命令が、この情報を収集することができ、周波数マネージャ１５８に報告するか、又はＲＡＭ１６２のような、周波数マネージャによって続けてアクセス可能な位置内に格納することができる。更に、又は代替として、周波数マネージャ１５８は、この情報をＲＡＭ／ＲＯＭ１６２、コンソール１６４、又はディップスイッチ１７０から得ることができる。例えば、ＲＯＭ１６２は、コンピュータ１００の製造中にＲＯＭ内に格納された情報を含むことができる。更に、ユーザ又は自動化されたシステムが、外部インターフェース１６８を通してこの情報を周波数マネージャ１５８に提供することもできる。同様に、周波数マネージャ１５８は、コンピュータ１００の電力バジェット及び／又は熱バジェットについての情報を得ることができ、この情報をＲＡＭ１６２内に格納することができる。
【００３７】
周波数マネージャ１５８がデバイス１４６〜１５６及びメモリユニット１０６〜１０８について得た情報を用いて、周波数マネージャは、様々な目的に従って、ＰＣＩバス１１０〜１１８及びメモリバス１２４に対する、従ってデバイス１４６〜１５６に対するクロック周波数を選択することができる。その目的は、全てのデバイスを単一のクロック周波数で動作させることを含むことができ、そのクロック周波数は、システムの電力バジェット及び／又は熱バジェットを超えることなく、可能な最も高いクロック周波数（又は、この可能な最も高いクロック周波数よりも低い都合の良いクロック周波数）となるよう選択されている。
【００３８】
この目的を達成するために、周波数マネージャ１５８は、データ構成３００内に格納されているデバイス１４６〜１５６及びメモリユニット１０６〜１０８についての情報にアクセスすることができ、このクロック周波数を計算することができる。例えば、周波数マネージャは、任意のクロック周波数を選択することができ、デバイス１４６〜１５６及びメモリユニット１０６〜１０８が選択されたクロック周波数で動作させられた場合には、これらデバイス及びメモリユニットの対応する総電力消費量及び／又は総放熱量を計算することができる。次に、周波数マネージャ１５８は、計算された総電力消費量及び／又は総放熱量を、システムの電力バジェット及び／又は熱バジェットと比較することができる。計算された総電力消費量及び／又は総放熱量が対応するバジェットを超える場合には、周波数マネージャ１５８は、より低いクロック周波数を反復的に選択することができ、バジェット（複数可）を超えないクロック周波数を見つけるまで計算を繰り返すことができる。一方、計算された総電力消費量及び／又は総放熱量が対応するバジェットを超えない場合には、周波数マネージャ１５８は、より高いクロック周波数を反復的に選択することができ、バジェットを超えるクロック周波数を見つけるまで計算を繰り返して、それより低いクロック周波数を選択することができる。代替として、周波数マネージャ１５８は、反復手法の代わりに、電力消費量及び／又は放熱量を動作周波数に関連付ける式を使用することができ、最適なクロック周波数に関してこれらの式を解くことができる。
【００３９】
代替として、周波数マネージャ１５８は、システムの熱バジェット、電力バジェット、又は熱バジェットと電力バジェットとのうちの低い数値の方を、デバイス１４６〜１５６及びメモリユニット１０６〜１０８の総数で除算して、各デバイス及びメモリユニットに対する熱バジェット又は電力バジェットを計算することもできる。各デバイス１４６〜１５６及びメモリユニット１０６〜１０８の放熱及び／又は電力消費についての情報を用いて、それぞれのデバイスの又はメモリユニットの動作周波数に関連して、周波数マネージャ１５８は、平均してデバイスの又はメモリユニットの熱バジェットを超えない、全てのデバイス及びメモリユニットを動作させるための１つのクロック周波数を計算することができる。代替として、周波数マネージャ１５８は、各デバイス１４６〜１５６及びメモリユニット１０６〜１０８の熱バジェットに基づいて、デバイス１４６〜１５６及びメモリユニット１０６〜１０８のそれぞれに対する個別のクロック周波数を計算することができる。
【００４０】
周波数マネージャ１５８は、クロック周波数を選択すると、先に述べたように、コマンドをメモリ＆Ｉ／Ｏコントローラ１２０に送り、同期バス１３６〜１４４及び／又はメモリバス１２４のクロック周波数をセットすることができる。代替として、先に述べたように、周波数マネージャ１５８は、コマンドをＩ／Ｏアダプタ１２６〜１３４に送り、ＰＣＩバス１１０〜１１８のクロック周波数をセットすることができる。いずれの場合でも、メモリバス１２４に対するクロック周波数が、ＰＣＩバス１１０〜１１８に対するクロック周波数と同じである必要はない。
【００４１】
図４は、本発明の一実施形態のフローチャート４００である。４０２においてデバイスの電力消費特性及び／又は放熱特性についての情報を得るために、デバイスが照会される。４０４において、この情報が受け取られる。代替として、４０６に示されるように、ユーザインターフェースを介してこの情報を得ることができる。代替として、先に述べたように、この情報をＲＡＭ又はＲＯＭから得ることもできる。４０８において、この情報に基づいてクロック周波数が計算される。このクロック周波数は、例えば、デバイスがシステムの電力バジェット及び／又は熱バジェットを超えることなく動作することのできる最も高いクロック周波数であることができる。４１０において、ハードウェア、ファームウェア、又はソフトウェアが、計算された周波数に従ってクロック信号を生成するようにセットされる。
【００４２】
他の目的（その目的に従って周波数マネージャ１５８がＰＣＩバス１１０〜１１８及びメモリバス１２４に対するバス周波数を選択することができる）は、デバイスのそれぞれの帯域幅要件に比例して、システムの電力バジェット及び／又は熱バジェットをデバイスの間に割り振ること、すなわち広帯域のデバイスを、狭帯域のデバイスよりも高いクロック速度で動作させることである。この目的を達成させるために、周波数マネージャ１５８は、上述のように、デバイス１４６〜１５６及び／又はメモリユニット１０６〜１０８がシステムの電力バジェット又は熱バジェットを超えるえることなく動作することができる高いクロック周波数を選択することができる。次に、周波数マネージャ１５８は、各デバイス１４６〜１５６及びメモリユニット１０６〜１０８の帯域幅要件に基づいて、ＰＣＩバス１１０〜１１８及び／又はメモリバス１２４のクロック周波数を調整することができる。例えば、周波数マネージャ１５８は、全てのデバイス１４６〜１５６及びメモリユニット１０６〜１０８の平均帯域幅要件を計算することができる。従って、帯域幅要件がこの平均よりも上、又は下であるデバイスに対して、周波数マネージャ１５８は、デバイスの帯域幅要件と平均帯域幅要件との間の差に比例して、それぞれのＰＣＩバス１１０〜１１８のクロック周波数を増加又は低減することができる。
【００４３】
周波数マネージャ１５８は、これらのクロック周波数を選択すると、先に述べたように、コマンドをメモリ＆Ｉ／Ｏコントローラ１２０に、又はＩ／Ｏアダプタ１２６〜１３４に送り、ＰＣＩバス１１０〜１１８及びメモリバス１２４のクロック周波数をセットすることができる。いずれの場合でも、メモリバス１２４に対するクロック周波数が、ＰＣＩバス１１０〜１１８に対するクロック周波数と同じである必要はない。
【００４４】
図５は、本発明の一実施形態のフローチャート５００である。５０２において、デバイスの電力消費特性及び／又は放熱特性についての情報を得るために、デバイスが照会される。５０４において、この情報が受け取られる。代替として、先に述べたように、この情報をＲＡＭ又はＲＯＭから得ることもできる。５０６において、この情報に基づいてクロック周波数が計算される。これらのクロック周波数は、例えば、デバイスの相対的な帯域幅要件について調整された、これらデバイスがシステムの電力バジェット及び／又は熱バジェットを超えることなく動作することができる最も高いクロック周波数であることができる。５０８において、ハードウェア、ファームウェア、又はソフトウェアが、これらの計算された周波数に従ってクロック信号を生成するようにセットされる。
【００４５】
他の目的（その目的に従って周波数マネージャ１５８がＰＣＩバス１１０〜１１８及びメモリバス１２４に対するバス周波数を選択することができる）は、アプリケーションプログラムによって予期される要求に比例して、システムの電力バジェット又は熱バジェットを割り振ること、すなわち頻繁にアクセスされるデバイスを滅多にアクセスされないデバイスよりも高いクロック速度で動作させることである。この目的を達成させるために、周波数マネージャ１５８は、上述のように、デバイス１４６〜１５６及び／又はメモリユニット１０６〜１０８がシステムの電力バジェット又は熱バジェットを超えることなく動作することができる高いクロック周波数を選択することができる。次に、周波数マネージャ１５８は、どのデバイス又はメモリユニットにアプリケーションプログラムが頻繁にアクセスするか、又は代替として、これらの頻繁にアクセスされるデバイス又はメモリユニットの帯域幅要件に基づいて、ＰＣＩバス１１０〜１１８及び／又はメモリバス１２４のクロック周波数を調整することができる。例えば、周波数マネージャ１５８は、アプリケーションプログラムがアクセスしないデバイス又はメモリユニットを無視することができ、上述のように、残りのデバイス１４６〜１５６及び／又はメモリユニット１０６〜１０８がシステムの電力バジェット又は熱バジェットを超えることなく動作することができる高いクロック周波数を、選択することができる。これにより、使用されないデバイスにクロック信号が提供されない結果となることができる。代替として、周波数マネージャ１５８は、最小クロック周波数を、滅多にアクセスされないデバイス及び／又は使用されないデバイスに割り振ることができ、高いクロック周波数を頻繁にアクセスされるデバイスに割り振ることができる。代替として、頻繁にアクセスされるデバイスに対するクロック周波数を、上述のようにデバイスのそれぞれの帯域幅要件に比例して割り振ることができる。
【００４６】
図６は、周波数マネージャ１５８がアプリケーションプログラム情報を保持するために使用することができる例示的なデータ構成６００を示す。このデータ構成６００は、例えば、ＲＡＭ１６２内に格納されることができる。データ構成６００に関する情報を、ＲＡＭ／ＲＯＭ１６２、コンソール１６４、ディップスイッチ１７０、又は外部インターフェース１６８から得ることができる。例えば、個別のアプリケーションプログラムアナライザがアプリケーションプログラムを解析することができ、例えば外部インターフェース１６８を通して、この情報を周波数マネージャ１５８に提供することができる。代替として、又は追加として、アプリケーションプログラムを実行しているオペレーティングシステムが、この情報を提供することもできる。
【００４７】
フィールド６０２は、アプリケーションプログラム名称を含む。フィールド６０４は、アプリケーションプログラムの版数を含む。フィールド６０６は、アプリケーションプログラムがメモリをアクセスする頻度についての情報のようなアプリケーションプログラムのメモリ帯域幅特性についての情報を含む。フィールド６０８は、アプリケーションプログラムによって必要とされるメモリ量のようなアプリケーションプログラムのメモリ使用特性についての情報を含む。フィールド６１０は、アプリケーションプログラムがＩ／Ｏデバイスを利用する頻度についての情報のようなアプリケーションプログラムのＩ／Ｏ帯域幅特性についての情報を含む。フィールド６１２は、アプリケーションプログラムがアクセスする各デバイスの識別子、及びアプリケーションプログラムがデバイスにアクセスする頻度のような、アプリケーションプログラムのＩ／Ｏデバイス利用特性についての情報を含む。
【００４８】
図７は、本発明の一実施形態のフローチャート７００である。７０２において、デバイスの電力消費特性及び／又は放熱特性についての情報を得るために、デバイスが照会される。７０４において、この情報が受け取られる。代替として、上述のように、この情報をＲＡＭ又はＲＯＭから得ることもできる。７０６において、アプリケーションプログラムについての情報が得られる。７０８において、デバイス及びアプリケーションプログラムについての情報に基づいて、クロック周波数が計算される。これらのクロック周波数は、例えば、デバイスの相対的な帯域幅要件について調整された、プログラムによりアクセスされたデバイスがシステムの電力バジェット及び／又は熱バジェットを超えることなく動作することができる最も高いクロック周波数であることができる。７１０において、ハードウェア、ファームウェア、又はソフトウェアが、これらの計算された周波数に従ってクロック信号を生成するようにセットされる。
【００４９】
他の目的（その目的に従って周波数マネージャ１５８がＰＣＩバス１１０〜１１８及びメモリバス１２４に対するバス周波数を選択することができる）は、アプリケーションプログラムによって予期される要求に比例して、システムの電力バジェット及び／又は熱バジェットを割り振ること、すなわち、アプリケーションプログラムによってメモリ（及びＩ／Ｏデバイス）に与えられる相対的な負荷に依存して、相対的により高いか又はより低いクロック速度でメモリを動作させる（及び相対的により低いか又はより高いクロック速度でＩ／Ｏデバイスを動作させる）ことである。アプリケーションプログラムによってこれらのアイテムに与えられる相対的な負荷についての情報を、例えば、データ構成６００から得ることができる。この目的は本質的に、アプリケーションプログラムの予期される要求に依存して、メモリのパフォーマンスをＩ／Ｏのパフォーマンスに、又はその逆に交換することである。
【００５０】
この目的を達成するために、周波数マネージャ１５８は、先に述べたように、アプリケーションプログラムがどのデバイス又はメモリユニットに頻繁にアクセスするか、又は代替として、これらの頻繁にアクセスされるデバイス又はメモリユニットの帯域幅要件に基づいて、ＰＣＩバス１１０〜１１８及び／又はメモリバス１２４に対するクロック周波数を選択することができる。次に、周波数マネージャ１５８はクロック周波数を更に調整することができる。例えば、アプリケーションプログラムがメモリを多用する場合には、周波数マネージャ１５８は、メモリバス１２４に対するクロック周波数を上げることができ、ＰＣＩバス１１０〜１１８に対するクロック周波数を下げることができる。一方、アプリケーションプログラムがＩ／Ｏを多用する場合には、周波数マネージャ１５８は、メモリバス１２４に対するクロック周波数を下げることができ、ＰＣＩバス１１０〜１１８に対するクロック周波数を上げることができる。
【００５１】
図８は、本発明の一実施形態のフローチャート８００である。８０２において、デバイスの電力消費特性及び／又は放熱特性についての情報を得るために、デバイスが照会される。８０４において、この情報が受け取られる。代替として、先に述べたように、この情報をＲＡＭ又はＲＯＭから得ることもできる。８０６において、アプリケーションプログラムについての情報が得られる。８０８において、アプリケーションプログラムがメモリを多用する場合には、制御は８１２に移り、アプリケーションプログラムがメモリを多用しない場合には、制御は８１０に移る。８１０において、デバイス及びアプリケーションプログラムについての情報に基づき、Ｉ／Ｏデバイスに有利にクロック周波数が計算される。すなわち、そうしない場合よりも、Ｉ／Ｏデバイスにより高いクロック周波数を割り振り、メモリユニットにより低いクロック周波数を割り振る。８１２において、デバイス及びアプリケーションプログラムについての情報に基づき、メモリユニットに有利なようにクロック周波数が計算される。すなわち、そうしない場合よりも、メモリユニットにより高いクロック周波数を割り振り、Ｉ／Ｏデバイスにより低いクロック周波数を割り振る。これらクロック周波数は、例えば、デバイスの相対的な帯域幅要件について調整された、プログラムによりアクセスされたデバイスがシステムの電力バジェット及び／又は熱バジェットを超えることなく動作することができる最も高いクロック周波数であることができ、アプリケーションプログラムの特性に依存してＩ／Ｏデバイス又はメモリユニットを有利にすることができる。８１４において、ハードウェア、ファームウェア、又はソフトウェアが、これらの計算された周波数に従ってクロック信号を生成するようにセットされる。
【００５２】
ＰＣＩバス１１０〜１１８、ＰＣＩデバイス１４６〜１５６、メモリバス１２４、及びメモリユニット１０６〜１０８を備えるコンピュータ１００に関して、本発明を説明してきたが、本発明の他の実施では、本発明による本発明の装置及び方法は、他のクロック動作させられるバスで使用されるクロック信号に対する、並びに、メモリ、プロセッサ、及びＩ／Ｏデバイスを含めた他のクロック動作させられるデバイスで使用されるクロック信号に対する周波数を選択することが可能である。
【００５３】
本発明の周波数マネージャ及び他の態様は、好ましくは、メモリに格納されることができるソフトウェア又はファームウェアにおいて実施され、上述のように、制御プロセッサの動作を制御するか、もしくはパーソナルコンピュータのようなコンピュータ、又は他のシステム内に組み込まれたマイクロプロセッサの動作を制御する。メモリは、マイクロプロセッサを備える集積回路の一部であることができるが、そうである必要はない。ソフトウェア又はファームウェアを、ＣＤ−ＲＯＭ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＷ、ＺＩＰディスク、ハードディスク、又はフロッピーディスクのような、取り外し可能な又は固定されたコンピュータ読み出し可能媒体に格納することができる。更に、このソフトウェア又はファームウェアは、コンピュータネットワーク又は電話網のような、無線又は有線の通信リンクを介して伝送されることが可能である。代替として、本発明の周波数マネージャ及び他の態様は、特定用途向け集積回路（ＡＳＩＣ）、又はフィールドプログラマブルゲートアレイ（ＦＰＧＡ）のようなハードウェア内で実施されることも可能である。
【００５４】
本明細書において用いられた用語及び表現は、限定ではなく説明として使用される。従って、これら用語及び表現の使用の際に、図示された又は記載された特徴、あるいはその一部のどの等価物も除外する意図はない。当業者であれば、上述の実施形態に基づいて本発明の更なる特徴及び利点を認識し、その他の変更が本発明の特許請求の範囲内で可能であることを認識するであろう。従って本発明は、添付の特許請求の範囲によって指示されるものを除いて、具体的に図示し説明したものによって限定されるべきではない。本明細書において引用された全ての刊行物及び参照は、その全てが参照により本明細書に明示的に組み込まれる。
【図面の簡単な説明】
【００５５】
【図１Ａ】本発明の態様を実施することができる例示的なコンピュータのブロック図、及び本発明による周波数マネージャの第１の実施態様のブロック図である。
【図１Ｂ】本発明の態様を実施することができる例示的なコンピュータのブロック図、及び本発明による周波数マネージャの第２の実施態様のブロック図である。
【図２】本発明による周波数マネージャの例示的な一実施形態のブロック図である。
【図３】本発明の実施形態により使用される例示的なデバイス／メモリ情報データ構成の図である。
【図４】本発明の一実施形態の動作を示す例示的なフローチャートである。
【図５】本発明の他の実施形態の動作を示す例示的なフローチャートである。
【図６】本発明の実施形態により使用される例示的なアプリケーションプログラム情報データ構成の図である。
【図７】本発明の他の実施形態の動作を示す例示的なフローチャートである。
【図８】本発明の更に他の実施形態の動作を示す例示的なフローチャートである。
【符号の説明】
【００５６】
２０２  情報入力
２０４  他の電子デバイス
２０６  情報
２０８  周波数計算機
２１０  インターフェース
３００  電子デバイスについての情報
３０８  熱量についての情報
３１２  帯域幅特性についての情報
４０２  デバイスに照会するステップ
４０４  情報を自動的に確認するステップ
４０８  クロック周波数を自動的に選択するステップ
４１０  クロック信号を電子デバイスに提供するステップ
４０２  デバイスに照会するステップ
５０４  情報を自動的に確認するステップ
５０６  クロック周波数を自動的に選択するステップ
【図１Ａ】
2005071367.tif 000003
【図１Ｂ】
2005071367.tif 000004
【図２】
2005071367.tif 000005
【図３】
2005071367.tif 000006
【図４】
2005071367.tif 000007
【図５】
2005071367.tif 000008
【図６】
2005071367.tif 000009
【図７】
2005071367.tif 000010
【図８】
2005071367.tif 000011