(57)【特許請求の範囲】
【請求項１】
装置であって、
プロセッサのコアクロックを設定する周波数と、前記プロセッサに結合されたバスを設定する周波数との間の比（コア／バス比）を、マシンレジスタから求める第１の手段と、
プロセッサの動作電圧を前記コア／バス比の変化に応じて調整する第２の手段と、
を含み、
前記第２の手段は、
前記プロセッサ内に格納され、前記コア／バス比に対応する前記プロセッサの動作電圧を計算するための命令が前記プロセッサによって実行されると、前記コア／バス比を変数とする一次方程式に従って前記動作電圧を調整し、
前記一次方程式の勾配は、最小許容コア／バス比に対応する前記プロセッサの最小許容動作電圧と最大許容コア／バス比に対応する前記プロセッサの最大許容電圧範囲との差、および前記最大許容コア／バス比および前記最小許容コア／バス比の間の差の比によって定められ、かつ前記一次方程式の切片として前記プロセッサの最小許容動作電圧が定められ、
前記第２の手段は、前記コア／バス比に変化があるたびに前記動作電圧を自動的に調整し、前記プロセッサをリブートしなくても前記プロセッサが各動作電圧で機能できる、装置。
【請求項２】
前記第２の手段が、前記一次方程式を実装するためのプロセッサロジックを含む、請求項１に記載の装置。
【請求項３】
前記一次方程式を実装するために、前記第２の手段がコンピュータ読み取り可能なマイクロアーキテクチャ命令とプロセッサロジックとの組み合わせを含む、請求項１に記載の装置。
【請求項４】
マシンレジスタからプロセッサのコアクロック周波数と前記プロセッサがコンピュータシステム内の他のエージェントとの通信に使用するバスの周波数との間の比（コア／バス比）の変化を検出する工程と、
前記コア／バス比に対応する前記プロセッサの動作電圧を計算するための命令が前記プロセッサによって実行されると、前記コア／バス比の前記変化の検出に応じて、前記コア／バス比を変数とする一次方程式に従って前記プロセッサの動作電圧を動的に調整する工程と、を含み、
前記一次方程式の勾配は、最小許容コア／バス比に対応する前記プロセッサの最小許容動作電圧と最大許容コア／バス比に対応する前記プロセッサの最大許容電圧範囲との間の差、および前記最大許容コア／バス比および前記最小許容コア／バス比の間の差の比によって定められ、かつ前記一次方程式の切片として前記プロセッサの最小許容動作電圧が定められ、
前記調整する工程は、前記プロセッサをリブートしなくても前記プロセッサが各動作電圧で機能すべく前記コア／バス比に変化があるたびに前記動作電圧を自動的に調整する工程を含む、方法。
【請求項５】
前記検出する工程が、前記コア／バス比を制御するためのマシンレジスタに書き込まれるコマンドを解釈する工程を含む、請求項４に記載の方法。
【請求項６】
前記コマンドが前記コア／バス比を制御するためのマシンレジスタに書き込まれた場合に、前記一次方程式の勾配を計算する、請求項５に記載の方法。
【請求項７】
値を前記プロセッサの電源にプログラミングすることによって前記プロセッサの動作電圧を調整する、請求項４から６のいずれか１項に記載の方法。
【請求項８】
プロセッサの論理回路を介して前記一次方程式を実装する、請求項４から７のいずれか１項に記載の方法。
【請求項９】
プロセッサロジックと前記プロセッサ内のマイクロアーキテクチャ命令との組み合わせによって前記一次方程式を実装する、請求項４から７のいずれか１項に記載の方法。
【請求項１０】
システムであって、
複数の装置間で情報を伝達するためのバスと、
前記バスに結合されたプロセッサであって、前記プロセッサの動作電圧を、マシンレジスタに格納された前記プロセッサのコア周波数とバス周波数との比（コア／バス比）の変化に応じて、前記プロセッサをリブートせずに動的に切り替え、コア／バス周波数と前記動作電圧との組み合わせがユーザによって前記プロセッサを損傷しうる組み合わせにされることを防止するためのロジックを含むプロセッサと、を含み、
前記ロジックは、前記コア／バス比に対応する前記動作電圧を計算するための命令が前記プロセッサによって実行されると、前記コア／バス比を変数とする一次方程式に従って前記動作電圧を調整し、
前記一次方程式の勾配は、最小許容コア／バス比に対応する前記プロセッサの最小許容動作電圧と最大許容コア／バス比に対応する前記プロセッサの最大許容電圧範囲との差、および前記最大許容コア／バス比および前記最小許容コア／バス比の間の差の比によって定められ、かつ前記一次方程式の切片として前記プロセッサの最小許容動作電圧が定められる、システム。
【請求項１１】
電圧識別値（Ｖｉｄ）を前記プロセッサに結合された可変電源にプログラミングすることによって前記動作電圧を調整する、請求項１０に記載のシステム。
【請求項１２】
前記バスに結合された命令を格納するためのメモリと前記バスに結合されたオーディオ装置とをさらに含む、請求項１０または１１に記載のシステム。
【請求項１３】
プロセッサのコアクロックを設定する周波数と、前記プロセッサに結合されたバスを設定する周波数との間の比（コア／バス比）を、マシンレジスタから求めるための第１のロジックと、
前記第１のロジックによって求められた前記コア／バス比の変化に応じて前記プロセッサの動作電圧を調整し、前記プロセッサの前記動作電圧がユーザによって調整されることを防止するための第２のロジックと
を含み、
前記第２のロジックは、前記コア／バス比に対応する前記動作電圧を計算するための命令が前記プロセッサによって実行されると、前記コア／バス比を変数とする一次方程式に従って前記動作電圧を調整し、
前記一次方程式の勾配は、最小許容コア／バス比に対応する前記プロセッサの最小許容動作電圧と最大許容コア／バス比に対応する前記プロセッサの最大許容電圧範囲との差、および前記最大許容コア／バス比および前記最小許容コア／バス比の間の差の比によって定められ、かつ前記一次方程式の切片として前記プロセッサの最小許容動作電圧が定められ、
前記第２のロジックは、前記コア／バス比に変化があるたびに前記動作電圧を自動的に調整し、前記プロセッサをリブートしなくても前記プロセッサが各動作電圧で機能できる、プロセッサ。
【請求項１４】
ユーザが利用可能なマシンレジスタを使わずに、前記プロセッサの電源を構成することによって前記第２のロジックが前記動作電圧を調整する、請求項１３に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の複数の実施態様は、複数のマイクロプロセッサおよび複数のマイクロプロセッサシステムに関する。より具体的には、本発明の複数の実施態様は、プロセッサのコア／バス周波数に基づき１つのマイクロプロセッサの動作電圧を動的に制御する方法に関する。
【背景技術】
【０００２】
マイクロプロセッサによっては、１つの動作電圧を１つのプロセッサのコアクロック速度に応じて調整できるもの、プロセッサが１つのコンピュータシステム内の他の複数の装置と通信するための外部バス（以降「バス」と呼ぶ）の速度に応じて調整できるもの、または、コアクロックおよびバスクロックの両速度のある数学的組み合わせ（たとえば１つの比あるいは１つの積）に応じて調整できるものもある。一部のコンピュータシステムにおいては、バスは１つの「フロントサイドバス」として公知であるが、他の複数のコンピュータシステムにおいては、たとえば１つのポイントツーポイント相互接続内では、バスは１つの「リンク」として公知である。
【０００３】
プロセッサの動作電圧をバスおよび／あるいはコア周波数の１つの関数として調整する従来技術の手法では、動作電圧の設定は、オペレーティングシステムおよび／あるいはベーシック入出力ソフトウェア（ＢＩＯＳ）により、通常、１つのマシン固有レジスタを介して設定されてきた。たとえば、少なくとも１つの従来技術の実装では、複数の許容動作電圧および複数のバス／コア周波数比対を含む１つのテーブルをハードウェアメモリあるいはシステムメモリのどちらかに生成して、このテーブルに従ってプロセッサの電源を調整しなければならない。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
これら複数の従来技術の手法では、１人のユーザが動作電圧および／あるいは複数のバスおよび／あるいはコアクロック周波数をそれぞれ個別に変更できるので、動作電圧とコア／バス周波数との組み合わせによってはプロセッサの損傷あるいはプロセッサの動作の信頼性低下を引き起こしうるので都合が悪い。
【課題を解決するための手段】
【０００５】
本発明の複数の実施形態は、１つのマイクロプロセッサ内の電源制御に関する。より具体的には、本発明の複数の実施形態は、プロセッサの動作電圧をプロセッサのバスおよび／あるいはコアクロック周波数の１つの関数として制御するための１つの手法に関する。
【０００６】
本発明の複数の実施形態は、プロセッサのコアおよび／あるいはバスクロック周波数の１つの変化に応じて、１つのプロセッサの動作電圧の計算及び調整を行う。さらに、本発明の複数の実施形態において、プロセッサの動作電圧を自動的に調整する方法は、コアおよび／あるいはバス周波数の１つの変化に応じてプロセッサが適切な動作電圧を設定できることによるので、ユーザが動作電圧を変更しなくてすむ。本発明の１つの実施形態は、プロセッサのバス／コア周波数比（Ｒ）の１つの変化に応じて、１つのプロセッサの動作電圧を計算及び調整する。さらに、少なくとも１つの実施形態は、１つの最小許容動作電圧／Ｒ点と１つの最大許容動作電圧／Ｒ点との間の１つの曲線から求められた１つの動作電圧値「Ｖｉｄ」に応じて１つのプロセッサの動作電圧を調整する。
【０００７】
個々の図面を参照しながら本願明細書で説明するいくつかの実施形態は、１つのプロセッサコア／バス周波数比に応じて１つのプロセッサの１つの動作電圧をどのように変えることができるかを示すが、他の複数の実施形態では、プロセッサのコア周波数だけに応じてプロセッサの動作電圧を変えてもよい。さらに、他の複数の実施形態では、バス周波数に応じてプロセッサの動作電圧を変えてもよく、また他の複数の実施形態では、コアおよびバス周波数の他の何らかの数学的組み合わせ（たとえば積）に応じて動作電圧を変えてもよい。
【発明を実施するための最良の形態】
【０００８】
図１は、１つのプロセッサの動作電圧Ｖｉｄをコア／バス周波数比Ｒの１つの関数として示す１つのグラフである。本発明の１つの実施形態では、曲線１０１の勾配およびｙ軸切片１０５を求めることによって、１つの所与のＲ値に対して適切な図１のＶｉｄが計算される。ｙ軸切片は、プロセッサの最小許容動作電圧に対応して、さまざまなプロセッサ間で異なりうる。少なくとも１つの実施形態においては、Ｖｉｄ範囲をコア／バス比範囲で割ることによって図１の曲線の勾配を計算する。Ｖｉｄ範囲は、最小許容コア／バス周波数比に対応するプロセッサの最小許容動作電圧と、最大許容コア／バス周波数比１１０に対応するプロセッサの最大許容電圧範囲との間の差である。
【０００９】
図１の曲線の勾配が計算されると、一次方程式Ｖｉｄ＝ｍＲ＋ＶｉｄＭｉｎによって１つの所与のコア／バス周波数比から何れの動作電圧Ｖｉｄでも計算しうる。式中のｍは曲線の勾配であり、Ｒは１つの特定のコア／バス比に相当するｘ軸上の一点であり、ＶｉｄＭｉｎは図１のｙ軸切片に相当するプロセッサの最小許容動作電圧である。
【００１０】
１つのコア／バス比Ｒが与えられると、図１の曲線から何れの動作電圧Ｖｉｄでも求めうる。１つの実施形態においては、Ｒに１つの変化があるたびに、プロセッサの動作中にプロセッサをリブートしなくても動作電圧が動的に切り替わる。本発明の１つの実施形態においては、コア／バス周波数比の１つの変化を検出して、図１の曲線に応じて１つの新しいＶｉｄ値を計算することによって動作電圧の動的切り替えを容易にすることができる。さらに、プロセッサのコア／バス周波数比だけを構成することによってプロセッサにＶｉｄを自動的に選択させうるので、従来技術のようにオペレーティングシステムあるいはＢＩＯＳがコア／バス周波数比および複数のＶｉｄ値の両方を１つのマシン固有レジスタに書き込まなくてよい。この方法では、プロセッサの動作電圧の切り替えが動的に行われるばかりでなく、従来技術に比べより安全に行われるが、この理由はプロセッサが複数のユーザによってプロセッサの損傷あるいはプロセッサの動作の信頼性低下を引き起こしうるＶｉｄ／Ｒの１つの組み合わせに置かれる可能性がなくなるからである。
【００１１】
一般に、最大許容コア／バス周波数比および最小許容コア／バス周波数比は、プロセッサ内に格納されている、対応する１つの二進値を通じて検出できる。さらに、１つのプロセッサが動作する１つのコア／バス周波数比は、１つのマシン固有レジスタ（ＭＳＲ）などの１つのマシンレジスタ内の１つの対応値を読み取ることによって検出できる。ただし、得られたＶｉｄを１つのＭＳＲに書き込まなくてもよく、代わりにプロセッサがＶｉｄを自動的に計算し、結果として得られた値を用いてプロセッサの電源制御装置を構成しうるので、ユーザによるＶｉｄの直接の変更の危険性および可能性を回避しうる。
【００１２】
１つの実施形態においては、プロセッサ内の一般に「マイクロコード」として公知の複数のコンピュータ読み取り可能マイクロアーキテクチャ命令によって、図１の曲線のような１つの曲線に応じて１つの特定のコア／バス周波数比に対応する動作電圧を計算することができる。さらに、他の複数の実施形態においては、プロセッサのロジックによって、あるいはプロセッサのロジックとマイクロコードとの１つの組み合わせによって、複数のＶｉｄ計算をすることができる。他の複数の実施形態においては、システムのニーズに応じて、マイクロコード以外の他のソフトウェアを用いてこれら複数の計算を実行してもよい。電源制御装置は、ユーザが利用できない複数のマイクロアーキテクチャ命令を含み、当該マイクロアーキテクチャ命令がプロセッサによって実行されると、コア／バス比に応じてプロセッサの動作電圧が調整される。
【００１３】
図２は、本発明の１つの実施形態による複数の工程を示す１つのフローチャートである。図２においては、プロセッサの複数の状態遷移を制御するプロセッサのロジックあるいはマイクロコードなどのソフトウェアを用いて、プロセッサの動作電圧およびコア／バス周波数比を変更することができる。たとえば、工程２０１においては、１つの値を１つのＭＳＲレジスタに書き込むコマンドなどの１つのコマンドの宛先が、プロセッサの動作電圧および／あるいはコア／バス周波数比を制御する１つのマシンレジスタであるかどうかを判定する。そうである場合は、次に工程２０５において、要求されたコア／バス比がプロセッサの許容範囲内であるかどうかを判定する。そうでない場合は、工程２０７において、１つの障害条件を通知する。そうである場合は、図１に一例として示したＶｉｄ／Ｒ曲線の勾配を工程２１０で計算することができ、さらに工程２１５で要求されたコア／バス比に対応する目標Ｖｉｄを計算できる。次に工程２２０において、この目標Ｖｉｄを使用してプロセッサの可変電源をプログラミングしうる。
【００１４】
図３は、本発明の１つの実施形態を使用しうる１つのフロントサイドバス（ＦＳＢ）コンピュータシステムを示す。プロセッサ３０５は、レベル１（Ｌ１）の１つのキャッシュメモリ３１０およびメインメモリ３１５のデータにアクセスする。本発明の他の複数の実施形態においては、このキャッシュメモリは、１つのコンピュータシステムの１つのメモリ階層内のレベル２（Ｌ２）の１つのキャッシュメモリあるいは他のメモリでもよい。さらに、実施形態によっては、図３のコンピュータシステムに１つのＬ１キャッシュと１つのＬ２キャッシュとを含めてもよく、この場合は、コヒーレンシーデータをＬ１キャッシュとＬ２キャッシュとの間で共有するための１つの包含的キャッシュ階層を含む。
【００１５】
図３のプロセッサ内に、本発明３０６の１つの実施形態が示されている。ただし、本発明の他の複数の実施形態は、このシステム内の他の複数の装置内、たとえば１つの個別バスエージェント内、に実装してもよく、あるいはシステム全体のハードウェア、ソフトウェア、またはこれらの組み合わせに分散させてもよい。
【００１６】
メインメモリは、動的ランダムアクセスメモリ（ＤＲＡＭ）などの各種メモリソース、１つのハードディスクドライブ（ＨＤＤ）３２０、あるいはさまざまな複数の記憶装置および複数の技術を含むネットワークインタフェース３３０を介してコンピュータシステムから離れた場所にある１つのメモリソースに実装してもよい。キャッシュメモリは、プロセッサ内あるいはプロセッサの近傍、たとえばプロセッサのローカルバス３０７上に配置してもよい。さらに、キャッシュメモリは、１つの６トランジスタ（６Ｔ）セルなど比較的高速な複数のメモリセル、あるいはアクセス速度がほぼ同じかより速い他のメモリセルを含んでもよい。
【００１７】
図３のコンピュータシステムは、ポイントツーポイント（ＰｔＰ）ネットワーク上の各エージェント専用の複数のバス信号を介して通信する、複数のマイクロプロセッサなどの複数のバスエージェントから成る１つのＰｔＰネットワークでもよい。複数の格納動作が複数のバスエージェント間で１つの迅速な方法で行われるように、発明３０６の少なくとも１つの実施形態は、各バスエージェント内に存在するか、あるいは各バスエージェントに少なくとも対応付けられる。
【００１８】
図４は、１つのポイントツーポイント（ＰｔＰ）構成に構成された１つのコンピュータシステムを示す。特に、図４は、複数のプロセッサ、メモリ、および複数の入出力装置がいくつかのポイントツーポイントインタフェースによって相互接続されている１つのシステムを示す。
【００１９】
図４のシステムは、いくつかのプロセッサをさらに含みうるが、明確にする目的で、そのうちの２つのプロセッサ４７０、４８０だけが図示されている。複数のプロセッサ４７０、４８０は、メモリ２２、２４と接続するべく、それぞれ１つのローカルメモリコントローラハブ（ＭＣＨ）４７２、４８２を含みうる。複数のプロセッサ４７０、４８０は、複数のＰｔＰインタフェース回路４７８、４８８を使用して、１つのポイントツーポイント（ＰｔＰ）インタフェース４５０経由でデータを交換してもよい。複数のプロセッサ４７０、４８０は、複数のポイントツーポイントインタフェース回路４７６、４９４、４８６、４９８をそれぞれ使用して、個々のＰｔＰインタフェース４５２、４５４経由で１つのチップセット４９０とデータを交換してもよい。チップセット４９０もまた、１つの高性能グラフィックスインタフェース４３９経由で１つの高性能グラフィックス回路４３８とデータを交換してもよい。
【００２０】
本発明の少なくとも１つの実施形態は、図４の複数のＰｔＰバスエージェントのそれぞれの内部にある複数のＰｔＰインタフェース回路内に配置してもよい。ただし、本発明の他の複数の実施形態は、図４のシステム内の他の複数の回路、複数の論理演算ユニット、あるいは複数の装置に存在してもよい。さらに、本発明の他の複数の実施形態を、図４に示すいくつかの回路、いくつかの論理演算装置、あるいはいくつかの装置に分散させてもよい。
【００２１】
複数の実施例を参照しながら本発明を説明してきたが、この説明は本発明を限定するためのものではない。上記複数の実施例のさまざまな変更、並びに他の複数の実施形態が本発明の精神と範囲に含まれることは、本発明に関係する業界の当業者には明らかであろう。
【図面の簡単な説明】
【００２２】
本発明の複数の実施形態を複数の添付図面の複数の図に示すが、これは例示を目的としたものであり、本発明の範囲を限定するものではない。これらの添付図面において同様の参照符号は同様の要素を示す。
【図１】本発明の１つの実施形態による１つのプロセッサの動作電圧を該プロセッサのバス／コア周波数比の１つの関数として示す１つのグラフである。
【図２】本発明の少なくとも１つの実施形態で用いられる複数の工程を示す１つのフローチャートである。
【図３】本発明の少なくとも１つの実施形態を実装しうる１つのフロントサイドバスコンピュータシステムである。
【図４】本発明の１つの実施形態を使用しうる１つのポイントツーポイント（ｐ２ｐ）コンピュータシステムを示す。
【図１】
0004921765.tif 000002
【図２】
0004921765.tif 000003
【図３】
0004921765.tif 000004
【図４】
0004921765.tif 000005