(57)【特許請求の範囲】
【請求項１】
方法であって：
論理プロセッサの仮想性能状態を読み書きするために、システム管理割り込み（SMI）を用いる工程と；
システム管理モード（SMM）を用いて、物理プロセッサにおける２つ以上の論理プロセッサの性能状態を管理する工程と；
を備え；
該２つ以上の論理プロセッサの各々は、仮想性能状態と実際性能状態とに関連し；
前記管理する工程では、該SMMは、該仮想性能状態と該実際性能状態とをアクセスするのに用いられ、ある論理プロセッサの仮想性能状態が変更されるとき、当該論理プロセッサを含む物理プロセッサについて、当該物理プロセッサにおける全ての論理プロセッサのそれぞれの仮想性能状態に応じて、当該物理プロセッサにおける全ての論理プロセッサの実際性能状態を互いに同一に定めることを特徴とする方法。
【請求項２】
処理システムにおいて実行される場合、該処理システムに方法を行わせる実行可能命令を含むコンピュータ判読可能媒体であって：
該方法は：
第１論理プロセッサの仮想性能状態を取り出し、該第１論理プロセッサの該仮想性能状態を変更するよう、システム管理割り込み（SMI）を用いる工程；
を備え；
該第１論理プロセッサは、2つ以上の論理プロセッサを有する物理プロセッサに含まれ；
該第１論理プロセッサの実際性能状態は該第１論理プロセッサの仮想性能状態よりも高いことがあり得るものであり；
前記工程に伴って、変更された仮想性能状態に対応する第１論理プロセッサを含む物理プロセッサについて、当該物理プロセッサにおける全ての論理プロセッサのそれぞれの仮想性能状態に応じて、当該物理プロセッサにおける全ての論理プロセッサの実際性能状態を互いに同一に定めることを特徴とするコンピュータ判読可能媒体。
【請求項３】
方法であって：
第１論理プロセッサの仮想性能状態を取り出し、該第１論理プロセッサの該仮想性能状態を変更するよう、システム管理割り込み（SMI）を用いる工程；
を備え；
該第１論理プロセッサが、2つ以上の論理プロセッサを有する物理プロセッサに含まれ；
該第１論理プロセッサが動作する対象の実際性能状態は、オペレーティング・システム（OS）に既知の、該第１論理プロセッサの仮想性能状態とは異なり得るものであり；
前記工程に伴って、変更された仮想性能状態に対応する第１論理プロセッサを含む物理プロセッサについて、当該物理プロセッサにおける全ての論理プロセッサのそれぞれの仮想性能状態に応じて、当該物理プロセッサにおける全ての論理プロセッサの実際性能状態を互いに同一に定めることを特徴とする方法。
【請求項４】
システムであって：
メモリに結合される物理プロセッサ；
を備え；
該物理プロセッサは：
第１論理プロセッサと第２論理プロセッサとを含み；
該第１論理プロセッサの性能状態と該第２論理プロセッサの性能状態が：
論理プロセッサの仮想性能状態を読み書きするためにシステム管理割り込み（SMI）を生成することによって管理され；かつ
前記論理プロセッサの各々に関連した仮想性能状態レジスタと、前記論理プロセッサの各々に関連した実際性能状態レジスタとを制御することによって管理され；かつ
変更された仮想性能状態に対応する論理プロセッサを含む物理プロセッサについて、当該物理プロセッサにおける全ての論理プロセッサのそれぞれの仮想性能状態に応じて、当該物理プロセッサにおける全ての論理プロセッサの実際性能状態を互いに同一に定めることによって管理されることを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に、コンピュータ・システムの分野に関し、特に、コンピュータ・システムにおける電力管理の方法及び装置に関する。
【背景技術】
【０００２】
個人向ディジタル・データ端末や携帯電話などの小型ハンドヘルド型電子機器や、セットトップ・ボックスや別の消費者向エレクトロニクスなどの特定用途向電子部品や、中型のモバイル・システムやデスクトップ型システムから、大型のワークステーションやサーバまでの全てを含むコンピュータ・システムが我々の社会において一層浸透してきている。更に強力な消費者向コンピュータ・システムを備えるよう、開発者はプロセッサの動作速度を懸命に増加させ続けようとしている。プロセッサ速度を増加させることの思いがけない結果として、消費電力量の増加がある。電力消費の増加によってバッテリ寿命が短縮される。
【０００３】
コンピュータ・システムにおいて電力消費を削減する種々の手法が公知である。例えば、Advanced  Configuration  and  Power  Interface  (ACPI)  Specification  (Rev.  2.0a,  March  31,2002)は、携帯型コンピュータ・システムやその他のコンピュータ・システムの動的電力消費を削減する方法に関する情報を表している。コンピュータ・システムにおいて用いられるプロセッサに関しては、種々のプロセッサ電力状態（すなわちC状態）が上記ACPI  Specificationに規定されている。
【０００４】
モバイル・コンピュータ・システムは、電力を節減するよう種々のC状態を伝統的に実施してきている。C0は、プロセッサが、アイドル状態になく、コードを実行しており、有用な作業を行っている実行状態にある。プロセッサがアイドル状態にある（例えば、スレッドを何ら実行していない）場合、OSは、プロセッサ停止命令シーケンスを出すことによってプロセッサを停止状態におく場合がある。例えば、OSは、非マスク割り込みが登録されるまでプロセッサを停止状態におく「STI；HLT（割り込みイネーブル；プロセッサ停止）」を発行し得る。C1状態では、プロセッサはスヌープ・トランザクションに応答することができ、コードを実行するか、バス・マスタ・スヌープ・トランザクションを処理するよう非常に速くウェイクアップすることができる。プロセッサは、なお多くの電力を節減するよう、必要に応じてC2、C3、C4など、より低い状態を漸次循環し得る。C2は、通常クロックがダイの大部分にゲートされるストップ・グラント状態又はモバイルの「高速起動」状態である。プロセッサは、C2状態においてスヌープを処理することができる。C2状態は、ソフトウェアが実行をすばやく再開することを可能にするよう相当低いレーテンシ出口もサポートする。C3は、内部又は外部でプロセッサ全体に向けてクロックをゲートし得るディープ・スリープ状態である。C3状態では、プロセッサは、バス・マスタ・トランザクションをスヌープすることができない。最後に、C4状態は、クロックが停止され、電圧が動作レベルに及ばないレベル（プロセッサ状態を維持するのに十分なだけの電圧）に低減される。漏洩電力は当該部分に印加される電圧に関係するので、C4状態は、極めて低いレベルまでプロセッサ電力を低減させるのに極めて好適である。
【０００５】
モバイル・コンピュータ・システムが電力を節減するよう実施した別の手法は、プロセッサが動作する周波数及び電圧を動的に調節するものである。例えば、低周波数及び低電圧でプロセッサを動作させることが、プロセッサ電力消費を低減させることに寄与する場合がある。低周波数及び低電圧でプロセッサを動作させることによって、プロセッサは停止しない場合があるが、プロセッサの性能レベルを変え得る。プロセッサの周波数と電圧とを動的に調節することができることによって、コンピュータ・システムにおいて起こる事象に対するプロセッサの応答性を高めることが可能である。例えば、コンピュータ・システムにおける温度が望ましくないレベルに上昇する場合、プロセッサを停止させてコンピュータ・システムにキーッと音をたてて停止させるかわりに、周波数を低減させ得る。周波数が低減される場合、電圧を低減させ得る。例えば、プロセッサの性能レベルが20%低減される場合、プロセッサの電力消費を最大50%低減させ得る。これは、性能と電力が非線形のトレードオフの関係にあるということである。よって、作業量が少ない場合（例えば、電子メール、ワープロなどの場合）、プロセッサが、低性能及び低電圧で実行し、高効率レベルで動作し、バッテリ寿命を延長させることを可能にする場合がある。あるいは、高性能を必要とするアプリケーションがある場合、考えられる最善の性能を、バッテリ寿命を犠牲にして備えるよう、周波数及び電圧を動的に増加させ得る。
【０００６】
ハイパー・スレッド(HT)技術は、スレッドを並列に単一の物理プロセッサを用いて実行することを可能にするカリフォルニア州サンタクララ(Santa  Clara,  California)のインテル(Intel)（登録商標）社(Corporation)の技術である。物理プロセッサは、物理プロセッサ・ダイを表すか、インテル・ペンティアム（登録商標）4プロセッサ・ファミリの場合には単一のパッケージを表す。HTは２つの論理プロセッサを１つの物理プロセッサ・ダイ上に組み入れている。論理プロセッサは、コードを実行し、システムにおける別のプロセッサからは一意のアーキテクチャ状態を維持することができる、OS管理下の独立プロセッサである。HTは、アーキテクチャ状態を複製することによって達成され、各アーキテクチャ状態は、１つのプロセッサ実行リソース群を共有する。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
プロセッサがHTをサポートする場合、複数のスレッドを同時に実行し得る。両方の論理プロセッサにおけるスレッドが同じ瞬間に機能停止することになる可能性は低いので、共有実行装置は効果的に利用され、その結果、特定のクロック・レートでの高い全体性能をもたらす。HTをサポートするプロセッサがモバイル・コンピュータ・システムで実施される場合、解決する必要がある、性能上の課題と電力管理上の課題とがあり得る。
【課題を解決するための手段】
【０００８】
一実施例では、プロセッサの性能状態を管理する方法を開示している。プロセッサはマルチスレッド・プロセッサである場合があり、2つ以上の論理プロセッサを含み得る。システム管理割り込み（SMI）は、オペレーティング・システム（OS）が所定のアドレス・ポートをアクセスする場合に生成される。アクセスされるアドレス・ポートによって、プロセッサの性能状態は適宜調節し得る。
【発明を実施するための最良の形態】
【０００９】
下記明細書では、説明する目的で、数多くの特定の詳細を表して、本発明が徹底的に分かるようにしている。しかし、本発明をこのような特定の詳細なしで行い得るということは当業者に明らかとなる。別の場合には、周知の構造、処理及び機器は、構成図形式又は要約形式で表して、不必要な詳細なしで説明するようにしている。
【００１０】
添付図面は、本発明の種々の実施例を単に説明する目的で開示するものであり、本発明の範囲を限定することを意図するものでない。
【実施例】
【００１１】
図１は、複数の論理プロセッサをサポートするプロセッサの例を示す構成図である。プロセッサ100は、２つの論理プロセッサ105及び110を含み得る。例えば、プロセッサ100は、ハイパー・スレッド技術（HT）をサポートする場合があり、プロセッサ100を２つの論理プロセッサ105及び110として認識させるよう、２つのアーキテクチャ状態101及び102を含み得る。物理プロセッサが3つ以上の論理プロセッサをサポートする場合があり、その各々が１つのアーキテクチャ状態と関連するということを当業者は認識し得る。２つの論理プロセッサ105及び110は、同じ実行リソース115、同じキャッシュ120、同じシステム・バス125、及び同じ主メモリ130を共有する。論理プロセッサ105と論理プロセッサ110とのどちらが利用可能であるかによって、物理プロセッサ100はスレッドをインタリーブした方式でスケジューリングし得る。例えば、論理プロセッサ110がC0状態にある一方で論理プロセッサ105がC1状態にあることも、両方のプロセッサがC0状態にあることも、両方のプロセッサがC1状態にあることも考えられ得る。一方の論理プロセッサがC1状態にある場合、他方の非アイドル状態にある論理プロセッサが用いるよう共有実行リソース115を開放させ得る。
【００１２】
通常、現在出荷されているオペレーティング・システムは、該システムが、複数の論理プロセッサを有する単一の物理プロセッサを備えているシステムではなくマルチプロセッサ・システムであるという前提に基づいて動作する。図２は、複数の論理プロセッサを有するプロセッサとともに用いる場合にオペレーティング・システムが動作する方法の例を示す構成図である。マルチプロセッサをサポートする、現在出荷されているオペレーティング・システム（例えば、ワシントン州レッドモンド（Redmond,  Washington）のマイクロソフト社（Microsoft  Corporation）のウィンドウズ（登録商標）XPやウィンドウズ（登録商標）2000のプロダクト）は、複数の物理プロセッサに対する処理が行われるよう企図されている場合がある。これらのオペレーティング・システムは、該システムにおけるプロセッサの各々が、別個に管理し得る独立エンティティであるということを仮定し得る。これらのオペレーティング・システムは、各物理プロセッサが、単一の論理プロセッサのみを含んでおり、物理プロセッサにおける個々の論理プロセッサの状態を考慮することなく物理プロセッサの性能を管理するということを当て込んでいる。例えば、図２を参照すれば、OS200は、（マルチプロセッサ・システムにおける）一方の物理プロセッサ100に対する処理が行われる際にはいつでも、その処理の、他方の物理プロセッサへの影響は何らないと見なし得る。今日のOSは、複数のプロセッサが機能的に同等であり、一方のプロセッサに対して行われる処理が他方に影響を及ぼさないということをそのOSが見なしているという点で対称である。論理プロセッサ105及び110が、共通の電圧レイル206と共通の内部クロック208とを共有する同じダイ上にあるので、各論理プロセッサの性能状態を無関係に変更することは可能でない場合がある。１つの論理プロセッサの性能状態への如何なる変更もその他の論理プロセッサの性能状態に影響を及ぼし得る。
【００１３】
システム管理モード(SMM)
一実施例では、図１に示す論理的物理プロセッサ（論理プロセッサ）105及び110は、電力を管理するようシステム管理モード（SMM）をサポートし得る。SMMは、OS又はアプリケーション・プログラムを妨害しない、電力管理のソフトウェア・ルーチン又はハンドラを実行する環境を備える。SMMには、（本明細書及び特許請求の範囲記載の）SMIサービス要求をハードウェア又はソフトウェアを用いて生成することによって入り得る。例えば、SMIが論理プロセッサ105に送出される場合、論理プロセッサ105はSMMに入り、SMRAMアドレス空間におけるSMMソフトウェア・ルーチンを実行して、SMIに関連した要求を処理する。SMRAMアドレス空間は、メモリ130とは別個であり得るメモリ・アドレス空間である。SMRAMアドレス空間は物理プロセッサ100上に備える場合があり、SMMソフトウェア・ルーチンの記憶と実行とに用い得る。SMRAMアドレス空間は、SMMにおいて実行するソフトウェア・ルーチンがOS又はアプリケーション・ソフトウェアと競合しないようにするよう、メモリ130とは別個のものであり得る。SMMは、当業者に既知のものである。
【００１４】
一実施例では、複数の論理プロセッサ（例えば、図１に示すプロセッサ100などの、HTをサポートするプロセッサ）において、SMIが生成されると、論理プロセッサ105と論理プロセッサ110とのどちらに向けてSMIが送出されるかに係わらず、論理プロセッサ105も論理プロセッサ110もSMMに入り得る。論理プロセッサ105及び110は同じSMRAMを共有する場合があるが、SMRAMの別々の領域を用い得る。例えば、論理プロセッサ105に関連したSMRAMにおけるソフトウェア・ルーチンからOSがサービスを要求する場合、OSはSMIを論理プロセッサ105に向けて送出させ得る。更に、OSの実行を一時的に中断させ得る。論理プロセッサ105はその場合、SMMに入り得る。論理プロセッサ110はSMMに入る場合もある。論理プロセッサ105は更に、そのSMRAMにおけるSMIに相当するソフトウェア・ルーチンを実行して要求を処理し得る。論理プロセッサ105はその場合、SMMを出る場合がある。SMMから出る処理は、論理プロセッサ105がRSM（再開）命令を実行する場合に行い得る。論理プロセッサ110はSMMから出る場合もある。OSの実行はその場合、続行し得る。
【００１５】
プロセッサ同期
一実施例では、同期は、論理プロセッサ105も論理プロセッサ110も同時にSMMに入り、SMMを出るようにするのに行い得る。SMIは、生成される場合、プロセッサ（論理プロセッサ及び/又は物理プロセッサ）全てに送出し得る。図３は、一実施例による同期処理の例を示す。第１論理プロセッサがSMMに入ると、第１論理プロセッサはその命令ポインタ（IP）に、第１論理プロセッサ内部の専用ベクトルであり得るSMRAM基底アドレスを指し示させる場合がある。
【００１６】
図３を参照すれば、ブロック305でSMMに入ると、第１論理プロセッサ（例えば、プロセッサ105）は、第２論理プロセッサ（例えば、プロセッサ110）がSMMに入るのを待ち得る。第１論理プロセッサは、ブロック315に表すように、第２論理プロセッサがSMMに入る旨の通知を第１論理プロセッサが第２論理プロセッサから受信するまでループ内で待ち得る。その通知が受信されると、第１論理プロセッサは、ブロック320に表すように、SMIを処理するようソフトウェア・ルーチンの実行に進み得る。なお、このソフトウェア・ルーチンは、第１論理プロセッサの性能状態と第２論理プロセッサの性能状態とを検証して、それらの性能状態を更新する（例えば、より高い性能状態に更新するか、又はより低い性能状態に更新する）必要があるかを判定し得る。図示していないが、ソフトウェア・ルーチンは、別のタスク（例えば、所望の性能状態を現在の性能状態と比較するタスクなど）を行う場合もある。このタスクが完了すると、図３の処理はブロック320からブロック325に進み、ブロック325では、第１論理プロセッサは、第１論理プロセッサがSMMをもうすぐ出ようとしている旨を第２論理プロセッサに通知する。ブロック330では、第１論理プロセッサは、SMMを出るよう命令（例えば、再開命令）を実行する。
【００１７】
図３を参照すれば、第１論理プロセッサがSMMに入ると、ブロック350に表すように、第２論理プロセッサもSMMに入る。ブロック355では、第２論理プロセッサは、第２論理プロセッサがSMMに入っていることを第１論理プロセッサに通知する。第２論理プロセッサは、第１論理プロセッサがSMMを出る際に第１論理プロセッサが通知するのを待ち得る。第２論理プロセッサは、ブロック365に表すように、通知が第１論理プロセッサから受信されるまでループ内で待ち得る。この通知が第１論理プロセッサから受信されると、図３における処理はブロック365からブロック370に進み、ブロック370では、第２論理プロセッサは、SMMを出るよう命令（例えば、再開命令）を実行する。Bのブロック355からAまでを結んでいる点線は、第２論理プロセッサによって第１論理プロセッサに送出される通知の例を示す。Aのブロック325からBまでを結んでいる点線は、第１論理プロセッサによって第２論理プロセッサに送出される通知の例を示す。
【００１８】
ステータス・ポート及び更新ポート
一実施例では、特定のI/OポートをアクセスするI/O命令を論理プロセッサが実行する際にSMIトラップが生成される。例えば、物理プロセッサ100に関連したシステム基本入出力システム（BIOS）は、SMIが生成されることを可能にするよう構成し得る。特定のI/Oポート（又はレジスタ・アドレス）をアクセスするI/O命令を論理プロセッサが実行する場合、システムBIOSは、I/Oポートが、性能状態ステータスを取得するか性能状態を制御するのに用いる特定のポートの１つであるということを認識し、SMIを生成させる。SMIは、OSがSMIの完了する対象のサービスを待って、I/O命令をほうっておいている間に、論理プロセッサ105及び110がSMMに入ることを可能にする。これによって、SMIが仮想I/Oポートをコンピュータ・システムにおいて作成することを可能にする。SMIが処理されている間、OSの実行は一時中断させ得る。OSの状態は、SMMに入る前に保存される場合があり、SMMから出た後に復元させ得る。OSの実行はその場合、次の命令で再開し得る。SMIを生成する別の方法を用いる場合もある。本明細書及び特許請求の範囲記載のI/O命令を用いることは、OSに対して最小の変更しか必要としない場合があるので効果的であり得る。
【００１９】
一実施例では、OSが論理プロセッサの性能状態を知りたい際に、特定のステータス・ポートを読み取る場合があり、OSが論理プロセッサの性能状態を更新したい際に、特定の更新ポートに所望の性能状態を書き込み得る。あるいは、同じポートを両方の目的で用い得る。例えば、ステータス・ポートから読み取るI/O命令をOSが出す場合、論理プロセッサの性能状態が戻される。これは、戻されることをOSが当てにしている場合がある性能状態であり得る。以下に説明するように、OSに戻される性能状態は、論理プロセッサが実際に動作している性能状態であってもなくてもよい。更新ポートに書き込むI/O命令をOSが出す際には、I/O命令中に備えられる所望の性能状態に基づいて、論理プロセッサの性能状態を修正し得る。以下に説明するように、OSによって備えられる所望の性能状態は、論理プロセッサが実際に動作している性能状態を変更するのに用いても用いなくてもよい。
【００２０】
仮想性能状態レジスタ及び実際性能状態レジスタ
一実施例では、論理プロセッサの性能状態を記憶させるよう2つのレジスタ群を用い得る。レジスタは、SMRAMにおけるメモリ場所である場合があり、論理プロセッサがSMMに入る場合にアクセスし得る。一方のレジスタ群は第１論理プロセッサ105と関連する場合があり、他方のレジスタ群は第２論理プロセッサ110と関連し得る。各レジスタ群は、OSに既知であり得る性能状態を記憶させるのに用い得る。これは、仮想性能状態と呼び得る。
【００２１】
各レジスタ群は、実際性能状態レジスタすなわち物理性能状態レジスタを含む場合もある。実際性能状態レジスタは、論理プロセッサが実際に動作している場合がある性能状態を記憶させるのに用い得る。これは、実際性能状態すなわち物理性能状態として表し得る。なお、論理プロセッサの、仮想性能状態と実際性能状態は同様であってもなくてもよい。仮想性能状態と実際性能状態とを有していることによって、論理プロセッサの各々の性能状態をOSが無関係に管理することが可能であるということをOSが見なすことを可能にし得る。
【００２２】
性能状態を取り出す工程
図４は、一実施例による、論理プロセッサの性能状態を取り出すのに用いる処理の例を示す流れ図である。一実施例では、OSが論理プロセッサの性能状態を要求する際にはいつでも、その論理プロセッサの仮想性能状態が戻される。ブロック405では、第１論理プロセッサは、ステータス・ポートを読み取るI/O命令を実行する。ブロック410に表すように、ステータス・ポートを読み取ることによってSMIを生成させ得る。この時点では、物理プロセッサにおける論理プロセッサは全てSMMに入り得る。SMMにいる間、SMIに関連したソフトウェア・ルーチンは、どの論理プロセッサがSMIを受信するかを判定するよう実行させ得る。これは、論理プロセッサが実行する最後の命令を検査し、その最後の命令がI/O命令であり、そのオペランドがステータス・ポートを示すということを識別することによって行い得る。この例では、SMIを受信する論理プロセッサが第１論理プロセッサであるということをソフトウェア・ルーチンが識別する場合、ブロック415に表すように、ソフトウェア・ルーチンは、第１論理プロセッサと関連した仮想性能状態レジスタをアクセスして仮想性能状態を取り出し得る。ブロック420では、第１論理プロセッサの仮想性能状態が戻される。
【００２３】
性能状態の更新
図５は、一実施例による、論理プロセッサの性能状態を更新するのに用いる処理の例を示す流れ図である。ブロック505では、第１論理プロセッサは、更新ポートに所望の性能状態を書き込むI/O命令を実行する。更新ポートに書き込むことによって、ブロック510に表すように、SMIを生成させる場合がある。この時点で、物理プロセッサにおける論理プロセッサは全て、SMMに入り得る。SMMにいる際には、SMIと関連するソフトウェア・ルーチンは、論理プロセッサのうちのどれがSMIを受信したかを判定することを必要とし得る。このことは、論理プロセッサの各々が実行した最後の命令を検査することによって行い得る。この例では、SMIを受信する論理プロセッサが第１論理プロセッサであるということをソフトウェア・ルーチンが識別する場合、ソフトウェア・ルーチンは、第１論理プロセッサに関連した仮想性能状態レジスタをアクセスして、第１論理プロセッサの性能状態をI/O命令が、より高い性能状態に変更させたいか、より低い性能状態に変更させたいかを判定し得る。ブロック515では、ソフトウェア・ルーチンは所望の性能状態を、第１論理プロセッサと関連した実際性能状態レジスタに、必要な場合記憶させ得る。このことは図６に関して更に詳細に説明することとする。上記のように、実際性能状態レジスタは、第１論理プロセッサが実際に動作している場合がある性能状態を示し得る。よって、所望の性能状態が実際性能状態レジスタに記憶される場合、第１論理プロセッサが動作している性能状態は更新し得る。ブロック520では、ソフトウェア・ルーチンは更に、所望の性能状態を仮想性能状態レジスタに記憶させ得る。
【００２４】
性能同期ポリシ
一実施例では、図５のブロック515における動作を行うよう、所望の性能状態を実際性能状態レジスタに書き込むか否かを判定するのに、性能同期ポリシをソフトウェア・ルーチンによって用い得る。図６は、一実施例による、性能同期ポリシの例を示す構成図である。論理プロセッサの性能状態をOSが別個に操作するということをOSが見なすことを可能にするのに同期ポリシを用い得る。
【００２５】
一実施例では、性能同期ポリシは、高位の実際性能状態に偏り過ぎる場合がある。性能同期ポリシは、すなわち、論理プロセッサが動作しているとOSが見なす状態よりも高い実際性能状態で論理プロセッサが動作することを可能にするよう取り決められる場合がある。
【００２６】
一実施例では、物理プロセッサは、論理プロセッサの実際性能状態に等しい性能状態で動作し得る。すなわち、1つ又は複数の論理プロセッサが動作しているとOSが見なす性能状態よりも高い性能状態で物理プロセッサが動作している場合があることが考えられ得る。
【００２７】
論理プロセッサのうちの１つの実際性能状態と仮想性能状態が同じである場合があることが考えられ得る。更に、論理プロセッサの仮想性能状態がその論理プロセッサの実際性能状態以下であることが考えられ得る。しかし、論理プロセッサの仮想性能状態がその論理プロセッサの実際性能状態より高いということが考えられない場合がある。
【００２８】
図６の例を参照すれば、OSは、第１論理プロセッサの性能状態を変更したい場合、所望の性能状態を更新ポートに書き込む。ブロック605では、第１論理プロセッサの仮想性能状態を、第１論理プロセッサに関連した仮想性能状態レジスタから取り出し得る。ブロック610では、SMIと関連したソフトウェア・ルーチンが実行し得る。ソフトウェア・ルーチンは、所望の性能状態を第１論理プロセッサの（、仮想性能状態レジスタに記憶されている）仮想性能状態と比較して、命令が、第１論理プロセッサの性能状態をより高い性能状態に変更させる要求かより低い性能状態に変更させる要求かを判定し得る。
【００２９】
それがより高い性能状態に変更する要求である場合（すなわち、所望の性能状態が、仮想性能状態レジスタに記憶されている仮想性能状態よりも高い場合）、当該処理はブロック610からブロック620に進む。ブロック620では、ソフトウェア・ルーチンは、所望の性能状態を第１論理プロセッサの（、実際性能状態レジスタに記憶されている）実際性能状態と比較し得る。第１論理プロセッサが所望の性能状態以上の性能状態で既に動作している場合、第１論理プロセッサの実際性能状態を変更させる必要がない場合がある。所望の性能状態は更に、第１論理プロセッサに関連した仮想性能状態レジスタに記憶させ得る。この所望の性能状態が、第１論理プロセッサが動作しているとOSが見なしている新規仮想性能状態となる。当該処理は更に、ブロック620からブロック630に進む。
【００３０】
ブロック620から、要求が、論理プロセッサの性能状態をより高い性能状態に変更させるものであり、第１論理プロセッサが、所望の性能状態より低い性能状態で現在動作している場合、当該処理はブロック625に進む。ブロック625では、第１論理プロセッサの実際性能状態が所望の性能状態に更新される。これは、所望の性能状態を実際性能状態レジスタに書き込む工程を含み得る。更に、別の論理プロセッサの全ての実際性能状態も所望の性能状態に更新し得る。なお、この場合には、第１論理プロセッサと関連した仮想レジスタ状態以外は、論理プロセッサの全てに関連した仮想レジスタ状態は変わらない状態のままであり得る。該処理は更に、ブロック625からブロック630に進む。
【００３１】
ブロック610から、それが、より低い性能状態に変更する要求である場合（すなわち、所望の性能状態が、仮想性能状態レジスタに記憶されている仮想性能状態より低い場合）、当該処理はブロック610からブロック615に進み、ブロック615では、全ての論理プロセッサのうちの最高仮想性能状態が判定される。例えば、その他の論理プロセッサの全ては、（それらの仮想性能状態レジスタによって示す）低性能状態で動作するよう要求した場合があるが、それらは全て、第１論理プロセッサが動作している実際性能状態と同様な高い実際性能状態で実行している場合がある。よって、より低い性能状態に変更する要求が受信される場合、ブロック618に表すように、論理プロセッサ（、更には、よって物理プロセッサ）の全ての実際性能状態をより低い性能状態に変更することが考えられ得る。なお、この場合、第１論理プロセッサと関連した仮想レジスタ状態以外は、論理プロセッサの全てと関連した仮想レジスタ状態は変わらない状態のままであり得る。当該処理は更に、ブロック618からブロック630に進む。
【００３２】
なお、図６の上記性能同期ポリシは、選択が２つの論理プロセッサのうちの最高仮想性能状態(ブロック618)又は最高実際性能状態(ブロック625)に基づいて行われるため、高性能に偏り過ぎる場合がある性能指向ポリシである。あるいは、別の控えめな性能同期ポリシを用いる場合もある。例えば、バッテリ寿命を長くするよう、性能同期ポリシは低性能に偏り過ぎる場合がある。一実施例では、選択が、２つの論理プロセッサの最低仮想性能状態又は最低実際性能状態に基づいて行い得る。別の実施例では、選択は、２つの論理プロセッサの性能状態の加重平均に基づいて行い得る。例えば、第１論理プロセッサの実際性能状態の対象が1GHzであり、第２論理プロセッサの実際性能状態の対象が2GHzである場合、何れのプロセッサも1.6GHzで動作するよう設定して、第１論理プロセッサのわずかに高い性能をなおもたらす一方で、第２論理プロセッサの電力をいくらか節減する場合がある。
【００３３】
図７は、一実施例による、物理プロセッサにおける２つの論理プロセッサの仮想性能状態と実際性能状態との例を示す構成図である。この図は図６の性能同期ポリシに基づいて示す。時間T0では、左の列には、第１論理プロセッサの（、仮想性能状態レジスタによって示す）仮想性能状態は第１論理プロセッサが1GHzで動作しているということを示し、第2論理プロセッサの仮想性能状態は第2論理プロセッサが2GHzで動作しているということを示す。一方、右の列には、（実際性能状態レジスタによって示す、）第１論理プロセッサの実際性能状態は第１論理プロセッサが実際に2GHzで動作しているということを示す。同様に、第２論理プロセッサの実際性能状態は第２論理プロセッサが実際に2GHzで動作しているということを示す。この場合には、物理プロセッサは2GHzで動作している場合がある。
【００３４】
時間T1では、OSは、第１論理プロセッサの性能状態を1.5GHzに増加させるよう更新ポートに書き込むI/O命令を出し得る。第１論理プロセッサの実際性能状態は、高性能状態である2GHzにあるので、第１論理プロセッサの実際性能状態は更新する必要がない場合がある。第１論理プロセッサの仮想性能状態はOSに既知であり得る性能状態であるので、第１論理プロセッサの仮想性能状態は、OSが当てにする同じ性能状態（例えば、1.5GHz）に増加される。なお、第１論理プロセッサの実際性能状態も第２論理プロセッサの実際性能状態も2GHzにある。この場合、物理プロセッサが2GHzで動作している場合がある。
【００３５】
時間T2では、OSは、第２論理プロセッサの性能状態を2.5GHzに増加させるよう更新ポートに書き込むI/O命令を出し得る。第２論理プロセッサの実際性能状態は現在、低性能状態である2GHzにあるので、第２論理プロセッサの実際性能状態は2.5GHzに増加させ得る。第２論理プロセッサの仮想性能状態レジスタもOSが当てにする同じ性能状態（例えば、2.5GHz）に増加させ得る。図６記載の同期ポリシは高性能状態に偏り過ぎる場合があるので、その仮想性能状態が1.5GHzで変わらない状態のままにある場合があっても、その第１論理プロセッサの実際性能状態を2.5GHzに変更する場合もある。この場合、物理プロセッサは2.5GHzで動作し得る。
【００３６】
時間T3では、OSは、第１論理プロセッサの性能状態を0.75GHzに低減させるよう更新ポートに書き込むI/O命令を出し得る。第２論理プロセッサの実際性能状態が2.5GHzにあり、同期ポリシは高性能状態に偏り過ぎることを可能にするので、第１論理プロセッサの実際性能状態は0.75GHzに変更されない場合がある一方、2.5GHzで変わらない状態のままであり得る。第１論理プロセッサの仮想性能状態レジスタはOSが当てにする性能状態(例えば、0.75GHz)に変更し得る。第２論理プロセッサの実際性能状態と仮想性能状態とには何ら変更はない。この場合、物理プロセッサは2.5GHzで動作している場合がある。
【００３７】
時間T4では、OSは、第２論理プロセッサの性能状態を0.5GHzに低減させるよう更新ポートに書き込むI/O命令を出し得る。第１の論理プロセッサは最高仮想性能状態を（第２論理プロセッサの場合の0.5GHzに対して）0.75GHzで有するので、第１論理プロセッサの実際性能状態と第２論理プロセッサの実際性能状態とを0.75GHzに低減させ得る。第２論理プロセッサの仮想性能状態は、OSが当てにする性能状態（例えば、0.5GHz）に低減させ得る。第１論理プロセッサの仮想性能状態には変動は何らなく、0.75GHzから変わらない状態のままである。物理プロセッサは0.75GHzで動作している場合がある。
【００３８】
コンピュータ判読可能媒体
これらの種々の方法の動作は、マシン判読可能な記憶媒体と見なし得るメモリに記憶されるコンピュータ・プログラム命令シーケンスを実行する、コンピュータ・システムにおける複数の論理プロセッサをサポートするプロセッサによって実施し得る。メモリは、ランダム・アクセス・メモリ、読み取り専用メモリ、大容量記憶装置などの永久記憶メモリ、又はこれらの装置の何れかの組合せであり得る。命令シーケンスの実行は、例えば、図４乃至図６記載の処理による動作をプロセッサに行わせ得る。
【００３９】
命令は、記憶装置からか、1つ又は複数の別のコンピュータ・システム（例えば、サーバ・コンピュータ・システム）からネットワーク接続によってコンピュータ・システムのメモリにロードし得る。命令はいくつかの記憶装置（例えば、仮想メモリなどの、DRAM及びハード・ディスク）に同時に記憶させ得る。よって、この命令の実行は、プロセッサによって直接行い得る。
【００４０】
別の場合には、命令は、直接行われなくてもよく、プロセッサによって直接実行可能なものでなくてもよい。このような状況下では、実行は、命令を解釈するインタープリタをプロセッサに実行させるか、プロセッサによって直接実行することが可能な命令に受信命令を変換するコンパイラをプロセッサに実行させることによって実行し得る。
【００４１】
別の実施例では、配線回路をソフトウェア命令の代わりに用いるかソフトウェア命令と組み合わせて用いて本発明を実施し得る。よって、本発明は、ハードウェアとソフトウェアとの何れかの特定の組み合わせにも、コンピュータ・システムが実行する命令の何れかの特定のソースにも限定されるものでない。
【００４２】
複数の論理プロセッサ（例えば、HTをサポートするプロセッサ）をサポートするプロセッサを低電力状態におく方法及びシステムを開示している。SMMを用いることによって、論理プロセッサの各々の性能状態を管理し得る。本発明は特定の例示的実施例を参照しながら記載したが、本特許請求の範囲記載の、本発明の概略の趣旨と範囲から逸脱することなくこれらの実施例に種々の修正及び変更を行い得ることが明らかとなる。例えば、HTをサポートするプロセッサは、２つの論理プロセッサを有しているものとして記載しているが、上記手法は、３つ以上のプロセッサが存在する場合に適用可能な場合もある。よって、明細書及び添付図面は、制限する意味合いよりも説明する意味合いで位置付けることとする。
【図面の簡単な説明】
【００４３】
【図１】複数の論理プロセッサをサポートするプロセッサの例を示す構成図である。
【図２】複数の論理プロセッサをサポートするプロセッサとともに用いる場合に、現在出荷されているオペレーティング・システムが動作する方法の例を示す構成図である。
【図３】Aは一実施例による、第１論理プロセッサによって行われる同期処理を示す流れ図であり、Bは一実施例による、第２論理プロセッサによって行われる同期処理を示す流れ図である。
【図４】一実施例による、論理プロセッサの性能状態を取り出すのに用いる処理の例を示す流れ図である。
【図５】一実施例による、論理プロセッサの性能状態を更新するのに用いる処理の例を示す流れ図である。
【図６】一実施例による、同期ポリシの例を示す構成図である。
【図７】一実施例による、物理プロセッサにおける論理プロセッサの、仮想性能状態及び実際性能状態の例を示す構成図である。
【図１】
0004704041.tif 000002
【図２】
0004704041.tif 000003
【図３】
0004704041.tif 000004
【図４】
0004704041.tif 000005
【図５】
0004704041.tif 000006
【図６】
0004704041.tif 000007
【図７】
0004704041.tif 000008