(57)【要約】単一の集積回路チップに内蔵されたプロセッシングノード（１２）は、第１プロセッサコア（１８Ａ）および第２プロセッサコア（１８Ｂ）を備える。さらに、このプロセッシングノードは、第１プロセッサコアおよび第２プロセッサコアのいずれかで実行するオペレーティングシステム（１３Ａ、１３Ｂ）を備える。オペレーティングシステムは、第１プロセッサコアおよび第２プロセッサコアの電流利用度を監視し得る。オペレーティングシステムは、利用しきい値未満で動作する第１プロセッサコアの検出に応答して、第１プロセッサコアをシステムの最大パフォーマンスレベルよりも低いパフォーマンスレベルで動作させ、第２プロセッサコアをシステムの最大パフォーマンスレベルよりも高いレベルで動作させるようにする。
2009503728.tif 000002
【特許請求の範囲】
【請求項１】
単一の集積回路チップに内蔵されたプロセッサノード（１２）であって、
第１プロセッサコア（１８Ａ）、
第２プロセッサコア（１８Ｂ）、
前記第１プロセッサコアおよび前記第２プロセッサコアのいずれかで実行され、前記第１プロセッサコアおよび前記第２プロセッサコアのいずれかの電流利用度レベルに応じて、前記第１プロセッサコアおよび第２プロセッサコアの各々のパフォーマンスレベルを独立して制御するように構成されているオペレーティングシステム（１３Ａ、１３Ｂ）、を含むプロセッシングノード（１２）。
【請求項２】
前記第１プロセッサコアの前記電流利用度レベルの低下を検出したことに応答して、前記オペレーティングシステムは、システムの最大パフォーマンスレベルを超えた分に対応する量によって、前記第１プロセッサコアのパフォーマンスレベルを低下させ、前記第２プロセッサコアのパフォーマンスレベルを増加させるように構成される、請求項１記載のプロセッシングノード。
【請求項３】
前記第２プロセッサコアの前記電流利用度レベルの低下を検出したことに応答して、前記オペレーティングシステムは、システムの最大パフォーマンスレベルを超えた分に対応する量によって、前記第２プロセッサコアのパフォーマンスレベルを低下させ、前記第１プロセッサコアのパフォーマンスレベルを増加させるように構成される、請求項１記載のプロセッシングノード。
【請求項４】
前記第１プロセッサコアの前記電流利用度が最小利用度レベル未満に低下したことを検出したことに応答して、前記オペレーティングシステムは、前記第１プロセッサコアを最小電力供給状態にし、前記第２プロセッサコアの前記パフォーマンスレベルをコアの最大パフォーマンスレベルに増加させるように構成される、請求項１記載のプロセッシングノード。
【請求項５】
前記システムの最大パフォーマンスレベルは、前記第１プロセッサコアおよび第２プロセッサコアの両方が動作している場合は最大周波数および電圧レベルに対応し、前記コアの最大パフォーマンスレベルは、前記第１プロセッサコアおよび前記第２プロセッサコアの各々が動作可能な最大周波数および電圧に対応する、請求項１記載のプロセッシングノード。
【請求項６】
命令を実行する第１プロセッサコア（１８Ａ）、
命令を実行する第２プロセッサコア（１８Ｂ）、
前記第１プロセッサコアおよび前記第２プロセッサコアのいずれかで実行され、前記第１プロセッサコアおよび前記第２プロセッサコアのいずれかの電流利用度レベルに応じて、前記第１プロセッサコアおよび第２プロセッサコアの各々のパフォーマンスを独立して制御するオペレーティングシステム（１３Ａ、１３Ｂ）、を含む方法。
【請求項７】
前記第１プロセッサコアの前記電流利用度レベルの低下を検出したことに応答して、前記オペレーティングシステムは、システムの最大パフォーマンスレベルを超えた分に対応する量によって、前記第１プロセッサコアのパフォーマンスレベルを低下させ、前記第２プロセッサコアのパフォーマンスレベルを増加させる、請求項６記載の方法。
【請求項８】
前記第２プロセッサコアの前記電流利用度レベルの低下を検出したことに応答して、前記オペレーティングシステムは、システムの最大パフォーマンスレベルを超えた分に対応する量によって、前記第２プロセッサコアのパフォーマンスレベルを低下させ、前記第１プロセッサコアのパフォーマンスレベルを増加させる、請求項６記載の方法。
【請求項９】
前記第１プロセッサコアの前記電流利用度が最小利用度レベル未満に低下したことを検出したことに応答して、前記オペレーティングシステムは、前記第１プロセッサコアを最小電力供給状態にし、前記第２プロセッサコアの前記パフォーマンスレベルをコアの最大パフォーマンスレベルに増加させる、請求項６記載の方法。
【請求項１０】
前記システムの最大パフォーマンスレベルは、前記第１プロセッサコアおよび第２プロセッサコアの両方が動作している場合は最大周波数および電圧レベルに対応し、前記コアの最大パフォーマンスレベルは、前記第１プロセッサコアおよび前記第２プロセッサコアの各々が動作可能な最大周波数および電圧に対応する、請求項６記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチコアプロセッサに関し、より詳細には、マルチコアプロセッサ環境内のワークロードパフォーマンスに関する。
【背景技術】
【０００２】
チップマルチプロセッサ（ＣＭＰ）はますます多く出回るようになっている。ＣＭＰは、同じ集積回路に実装された、２以上のプロセッサコアを有する。ＣＭＰは、例えば、より精巧な単一のプロセッサよりも、集積回路に含まれる何百万ものトランジスタをより有効に利用する。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ＣＭＰは多くの場合、２以上のプロセッサに中央処理タスクを実行させることでシステムのコンピューティング能力を増加させるように使用され。加えて、ＣＭＰ中のプロセッシングワークロードを共有することで、処理効率が増加し、その一方で、最大周波数で動作する単一コアプロセッサと比べると、全体的な熱および電力収支が低減され得る。
【０００４】
しかし、あるＣＭＰにおいて利用可能な処理帯域幅のある一部は、ＣＭＰに設けられた熱および電力の制約により浪費される場合がある。例えば、デュアルコア設計では、両コアはそれぞれ３ギガヘルツ（ＧＨｚ）で動作可能であり得る。しかし、パッケージの熱収支およびシステムの電力収支により、両プロセッサコアは、２．７ＧＨｚでの動作に制限される場合がある。
【課題を解決するための手段】
【０００５】
マルチコアプロセッシングノードの様々な実施形態が開示されている。概して、プロセッシングノードに内蔵されるマルチプルプロセッサコアの１つで実行するオペレーティングシステムが、プロセッサコアの各々の利用を監視するプロセッシングノードが検討される。利用しきい値未満で動作する１以上のプロセッサコアが検出されたことに応答して、オペレーティングシステムは、所望に応じて、この１以上のプロセッサコアを、パフォーマンスステートを落として動作させるか、最小の電力ステートにする。加えて、オペレーティングシステムはさらに、利用されているプロセッサコアを、システムの最大パフォーマンスステートよりも高いパフォーマンスステートで動作させるようにする。
【０００６】
一実施形態では、単一の集積回路チップに内蔵されるプロセッシングノードは、第１プロセッサコアと第２プロセッサコアとを備える。プロセッシングノードは、第１プロセッサコアおよび第２プロセッサコアのいずれかで実行するオペレーティングシステムを備える。オペレーティングシステムは、第１プロセッサコアおよび第２プロセッサコアの電流利用度を監視するように構成され得る。オペレーティングシステムは、第１プロセッサコアに、システムの最大パフォーマンスレベル未満のパフォーマンスレベルで動作させ、利用しきい値未満で動作する第１プロセッサコアの検出に応答して、第２プロセッサコアにシステムの最大パフォーマンスレベルよりも高いパフォーマンスレベルで動作させるようにしてもよい。
【０００７】
１つの特定の実施形態では、第１プロセッサコアの利用レベルが最小利用しきい値未満に低下したことを検出すると、オペレーティングシステムは、第１プロセッサコアを最小電力供給状態にし、第２プロセッサコアのパフォーマンスレベルを、コアの最大パフォーマンスレベルに増加させる。システムの最大パフォーマンスレベルは、第１プロセッサコアと第２プロセッサコアの両方が共に動作する場合は、最大周波数および電圧レベルに対応し、コアの最大パフォーマンスレベルは、第１プロセッサコアと第２プロセッサコアの各々が、単独で動作する場合に、動作可能な最大周波数および電圧レベルに対応し得る。
【発明を実施するための最良の形態】
【０００８】
本発明は、様々な改良を行い、また、他の形態で実施することができるが、ここに説明されている特定の実施例は、例示として示さたものであり、以下にその詳細を記載する。しかし当然のことながら、ここに示した特定の実施例は、本発明を開示されている特定の形態に限定するものではなく、むしろ本発明は添付の請求項によって規定されている発明の範疇に属する全ての改良、等価物、及び変形例をカバーするものである。本明細書中の見出しは文章構成のためのものに過ぎず、本明細書の説明または特許請求の範囲を限定または解釈のために用いるべきものではないことに注意されたい。さらに、本明細書において用いられる「できる（may）」という用語は、許可的な意味合い（つまり、そのような可能性を持つ、または可能である）に用いられ、強制的な意味合い[つまり、「しなければいけない（must）」ではない]ことに注意すべきである。「含む（include）」という用語およびその派生語は「含むが、それに限定されない」ことを意味する。「接続される」という用語は「直接的または間接的に接続される」ことを意味し、「結合される」という用語は「直接的または間接的に結合される」ことを意味する。
【０００９】
図１にコンピュータシステム１０の一実施形態のブロック図を示す。例示の実施形態では、コンピュータシステム１０は、プロセッシングノード１２、メモリ１４、周辺ハブ１６、周辺装置１７、センサー３５、電圧レギュレータ４５Ａおよび４５Ｂ、およびベーシック入力／出力システム（ＢＩＯＳ）３０を備える。プロセッシングノード１２は、プロセッサコア１８Ａ−１８Ｂを備える。これらのプロセッサコアは、ノードコントローラ２０に結合される。さらに、ノードコントローラは、メモリコントローラ２２と、複数のHyper Transport（R）（ＨＴ）インターフェース回路２４Ａ〜２４Ｃに(本実施形態ではＨＴインターフェースを介して）結合される。ＨＴ回路２４Ｂは、周辺ハブ１６に結合される。この周辺ハブ１６は、デイジーチェーン構造で（本実施形態ではＨＴインターフェースを使用して）周辺装置１７に結合される。さらに、周辺ハブ１６は、ＢＩＯＳ３０に結合される。メモリコントローラ２２は、メモリ１４に結合される。
一実施形態では、プロセッサコア１８Ａ−１８Ｂの各々は、対応のキャッシュ（図示せず）を含んでもよい。一実施形態では、プロセッシングノード１２は、図１に示す回路を備えた単一の集積回路チップであってもよい。つまり、プロセッシングノード１２は、チップマルチプロセッサ（ＣＭＰ）であってもよい。他の実施形態は、所望に応じて２以上の別々の集積回路としてプロセッシングノード１２を実装してもよい。任意のレベルの統合コンポーネント、又は個別コンポーネントコンポーネントやディスクリートコンポーネントを使用してもよい。他の実施形態では、任意の数のプロセッサコアをノード１２内で使用してもよいことに留意されたい。さらに、数字と文字の両方を使用した参照符号が付けられたコンポーネントは、簡素化のために適宜数字だけで参照される場合がある。
【００１０】
概して、プロセッサコア１８Ａおよび１８Ｂはそれぞれ、所与の命令セットアーキテクチャにおいて定義される命令を実行するように設計された回路を備え得る。つまり、プロセッサコア回路は、命令セットアーキテクチャで定義される命令の結果をフェッチし、デコードし、実行し、格納するように構成されてもよい。プロセッサコア１８は、スーパーパイプライン化構造、スーパースカラ構造あるいはその組合せを含む任意の所望の構造を含んでもよい。その他の構造としては、スカラ構造、パイプライン化構造、非パイプライン化構造が挙げられ得る。各種実施形態は、アウトオブオーダー投機的実行あるいはインオーダー実行を採用し得る。プロセッサコアは、上述のいずれかの構造と組み合わせて、１以上の命令またはその他の機能に対するマイクロコードを含んでもよい。各種実施形態は、キャッシュ、トランスレーションルックアサイドバッファ（ＴＬＢｓ）などの様々なその他の設計上の特徴を実装してもよい。
【００１１】
一実施形態では、プロセッシングノード１２は、プロセッサコア１８Ａ−１８Ｂの両方を制御するオペレーティングシステムインスタンスを実行してもよい。ＯＳカーネルはＯＳ１３ＡおよびＯＳ１３Ｂと示され、プロセッサコア１８Ａ−１８Ｂのいずれかでそれぞれ実行してもよい。一実施形態では、プロセッサコア１８Ａ−１８Ｂの一方はシステムを初期化する間、ブートストラップコアとして指定されてもよく、もう一方のプロセッサコアは（場合によっては同じコア）は、ノード１２のＯＳカーネル１３を実行するように指定されてもよい。
【００１２】
一実施形態では、各プロセッサコア１８およびＯＳ１３は、ＯＳ１３が各プロセッサコアのパフォーマンスレベルと電力供給レベルとを制御可能とする特徴および機能を含み得る。例えば、ある特定のレジスタ（例えば、レジスタ１９Ａ‐１９Ｂ）の使用により、ＯＳ１３は各プロセッサコア１８に、１以上の周波数で、および／あるいは電圧レベルの組合せで動作させることもある。より詳細には、電力制御インターフェース（Advanced Configuration and Power Interface (ACPI)）の仕様書では、プロセッサを含むシステムコンポーネントとシステムの電力供給レベルおよびパフォーマンスレベルを定義している。このように、プロセッサコアの周波数と電圧とは、電力供給とパフォーマンスとを実際にトレードオフするように、動作中に動的に調整することができる。例えば、アプリケーションソフトのなかには、他のアプリケーションソフトほど要求が厳しくないものもある。したがって、ＯＳ１３は、十分なパフォーマンスを提供しつつ、バッテリー寿命を向上させるように、周波数および／あるいは電圧を下げてもよい。同様に、未使用期間の電力消費を減らすために、プロセッサコアを実効的に最小電力供給状態（例えば、スリープ状態）にすることができる様々な電力供給状態が定義される。さらに、ＯＳ１３は、例えば各プロセッサコア１８の利用度などのパラメータによって、各プロセッサコア１８の電力供給状態およびパフォーマンス状態を別々に動的に調整するように構成されてもよい。
【００１３】
概して、ノードコントローラ２０は、プロセッサコア１８Ａ‐１８Ｂ、メモリコントローラ２２、およびＨＴ回路２４Ａ−２４Ｃからの通信を受信し、これらの通信を通信タイプ、通信においてのアドレスなどに応じてプロセッサコア１８Ａ−１８Ｂ、ＨＴ回路２４Ａ−２４Ｃ、およびメモリコントローラ２２へ送るように構成されてもよい。一実施形態では、ノードコントローラ２０は、プロセッサノードの温度や他のシステム環境情報などのシステム管理情報を受信するように構成され得るシステム管理ユニット２１を含む。システム管理ユニット２１は、ＡＣＰＩコンプライアント機能（ACPI compliant functionality）を供給する回路を備えてもよい。以下により詳しく記載しているように、ノードコントローラ２０内のシステム管理ユニット２１は、ＯＳカーネル１３に、ある特定のシステム管理イベントを通知するように構成されてもよい。一実施形態では、システム管理メッセージは、プロセッサコア１８Ａ−１８Ｂを特定の状態に入らせるようにする要求であってもよい。例えば、このような状態としては、電力管理状態、あるいはパフォーマンス管理状態（上述しているような）が挙げらることができる。他の実施形態では、以下に記載しているような他のシステム管理メッセージを定義してもよい。
【００１４】
例示の実施形態では、センサー３５は、環境条件を監視するために使用される任意の形式の装置であってもよい。例えば、一実施形態では、センサー３５は、プロセッシングノード１２内の基準ダイオードのジャンクション温度を決定するように構成され得る温度感知装置であってもよい。さらに、センサー３５は、システム管理ユニット２１に温度を表示するように構成されてもよい。
【００１５】
例示的実施形態では、電圧レギュレータ４５Ａおよび４５Ｂは、プロセッサコア１８Ａおよび１８Ｂにそれぞれ供給される動作電圧をプログラム可能に規制し制御するように構成されてもよい。例えば、一実施形態では、ＯＳカーネル１３は、コアの一方あるいは両方の動作電圧の変更要求をノードコントローラ２０へ送信してもよい。ノードコントローラ２０は、電圧変更に影響を及ぼすことがある電圧レギュレータ４５Ａおよび４５Ｂに対応付けられる信号を送信してもよい。このような実施形態では、プロセッサコア１８Ａおよび１８Ｂの独立電圧制御を可能とするように、プロセッシングノード１２はプロセッサコア１８Ａおよび１８Ｂの各々に別々の電圧供給ピン（例えば、ＶＤＤおよびＧｎｄ）を備えてもよい。
【００１６】
概して、プロセッサコア１８Ａ−１８Ｂは、コンピュータシステム１０の他のコンポーネント（例えば、周辺ハブ１６および装置１７、他のプロセッサコア、メモリコントローラ２２など）と通信するように、ノードコントローラ２０へのインターフェースを使用してもよい。このインターフェースは任意の所望の形式で設計されてもよい。このインターフェースに対しては、キャッシュコヒーレント通信が定義されてもよい。一実施形態では、ノードコントローラ２０とプロセッサコア１８Ａ−１８Ｂ間のインターフェース上の通信は、ＨＴインターフェース上で使用されるパケットに類似したパケット形式であってもよい。他の実施形態では、任意の所望の通信を用いてもよい（例えば、バスインターフェース上のトランザクション、異なる形式のパケットなど）。他の実施形態では、プロセッサコア１８Ａ−１８Ｂはノードコントローラ２０へのインターフェースを共有してもよい。
【００１７】
メモリ１４は任意の適切な装置を備えてもよい。例えば、メモリ１４は、１以上のＲＡＭＢＵＳ  ＤＲＡＭｓ（ＲＤＲＡＭＳ）、シンクロナスＤＲＡＭｓ（ＳＤＲＡＭｓ）、ダブルデータレート（ＤＤＲ）ＳＤＲＡＭ、スタティックＲＡＭなどを備えてもよい。コンピュータシステム１０のアドレススペースは、メモリ１４と、他のプロセッシングノードの任意の同様のメモリ（図示せず）の間で分割され得る。このような場合、各ノード１２は、メモリ１４にマップされるアドレスを判断し、従って、特定のアドレスのメモリリクエストをルートする必要のあるノード１２を判断するために（例えば、ノードコントローラ２０に）メモリマップを含んでもよい。メモリコントローラ２２は、メモリ１４とインターフェース接続するための制御回路を備えてもよい。さらに、メモリコントローラ２２は、メモリリクエストなどを待ち行列に入れるためのリクエストキューを備えてもよい。
【００１８】
ＨＴ回路２４Ａ〜２４Ｃは、ＨＴリンクからパケットを受信し、ＨＴリンクにパケットを送信する様々なバッファと制御回路とを備えてもよい。ＨＴインターフェースは、パケットを送信するための一方向のリンクを含む。各ＨＴ回路２４Ａ〜２４Ｃは、２つのこのようなリンク（１つが送信用、１つが受信用）に結合されてもよい。所与のＨＴインターフェースは、（例えば、２つのノード１２間で）キャッシュコヒーレント形式で、あるいは、（例えば、周辺ハブ１６／装置１７への）非コヒーレント形式で動作してもよい。例示の実施形態では、ＨＴ回路２４Ｃは、ノード間で通信するように、コヒーレントＨＴリンクを介して、別のノード(図示せず）の同様のＨＴインターフェースに結合されてもよい。ＨＴ回路２４Ａは未使用状態であり、ＨＴ回路２４Ｂは非コヒーレントリンクを介して周辺ハブ１６／装置１７に結合されている。
【００１９】
周辺ハブ１６および周辺装置１７は、任意のタイプの周辺装置であってもよい。例えば、周辺ハブ１６／装置１７には、装置を結合できる別のコンピュータシステムと通信する装置を含んでもよい（例えば、ネットワークインターフェースカード、コンピュータシステムの主回路基板あるいはモデムに内蔵されるネットワークインターフェース機能を実装した回路）。さらに、周辺ハブ１６／装置１７は、ビデオアクセラレータ、オーディオカード、ハードまたはフロッピーディスクドライブまたはドライブコントローラ、ＳＣＳＩ（小型コンピュータ用周辺機器インターフェース）アダプタおよび電話カード、サウンドカード、および、ＧＰＩＢ又はフィールドバスインターフェースカードのような種々のデータ取得カードを備えてもよい。“周辺装置”という用語は、入力／出力（Ｉ／Ｏ）装置を包含することを意図する点に留意されたい。
【００２０】
本発明は、ノード間およびノードと周辺装置間の通信用にＨＴインターフェースを使用するが、他の実施形態ではいずれの通信にも任意の所望のインターフェースを使用できる点に留意されたい。例えば、他のパケットベースのインターフェース、バスインターフェース、様々な規格の周辺インターフェース（例えば、ＰＣＩ、ＰＣＩエクスプレスなど）などを使用してもよい。
【００２１】
上述したように、ＯＳカーネル１３は、プロセッサコア１８Ａ−１８Ｂのいずれかで実行してもよい。ＯＳカーネル１３は、システム機能を監視して制御し、特定の実行スレッドを実行するプロセッサコア１８を決定し割当て得る。より詳細には、ＯＳカーネル１３は、プロセッサコア１８Ａ−１８Ｂの各々の利用度を監視し得る。加えて、各プロセッサコア１８Ａ−１８Ｂと他のシステムパラメータの利用度に応じて、ＯＳカーネル１３は、各プロセッサコア１８Ａ−１８Ｂの電力供給状態とパフォーマンス状態の両方を独立して制御する。
【００２２】
図２に、図１のプロセッシングノード１２の一実施形態の動作を例示したフローチャートを示す。図１および図２を集合的に参照すると、システムを初期化する間、プロセッシングコア１８Ａ−１８Ｂを実行するために初期パフォーマンスレベルと電力レベルとが用いられてもよい（ブロック２０５）。初期設定は、例えばレジスタ１９Ａ−１９Ｂに書込まれるデフォルト設定であってもよい。一実施形態では、レジスタ１９Ａ−１９Ｂは、モデル固有のレジスタ（ＭＳＲ）であってもよいが、これに限らず任意のレジスタが使用されてもよい。デフォルト設定は、ヒューズを介してハードコードされてもよく、あるいは、例えば、起動において、または、パワーオンセルフテスト（ＰＯＳＴ）ルーチンにおいて、ＢＩＯＳを介して書込まれてもよい。いずれの場合においても、ＯＳ１３は各プロセッサコア１８Ａ−１８Ｂの動作周波数、電圧、および電流供給状態を決定するために、レジスタ１９Ａおよび１９Ｂに記録された値を使用してもよい。初期あるいはデフォルト設定は、システム分析に基づいた所定の値であってもよい。例えば、周波数および電圧設定は、システムの最大パフォーマンスレベルに設定されてもよい。システムの最大パフォーマンスレベルは、両プロセッサコア１８Ａ−１８Ｂがプロセッシングノード１２の熱収支を超過することなく共に動作し得る周波数および電圧レベルに対応し得る。システムの最大パフォーマンスレベルは、典型的にはコアの最大パフォーマンスレベルとは異なる。コアの最大パフォーマンスレベルは、所与のプロセッサコア１８が動作可能であり得る周波数および電圧レベルに対応する。コアの最大パフォーマンスレベル（core maximum）は、製造時の試験と特徴づけによって決定される。
【００２３】
一実施形態では、プロセッシングノード１２の動作において、ＯＳ１３は任意の適切なユーティリティを使用して、各プロセッサコア１８の電流利用度を監視し得る。加えて、ＯＳ１３は、システム管理パラメータを監視してもよく、例えば、任意の内部あるいは外部のシステム管理が割り込みしているか、あるいはリクエストメッセージが受信されたかどうか、監視してもよい。（ブロック２１０）。
【００２４】
プロセッサコア１８Ａあるいは１８Ｂのいずれかの利用度が、所定のしきい値未満になったことをＯＳ１３が判断すれば（ブロック２１５）、ＯＳは、そのコアが最小しきい値よりも低くなったかどうかを判断し（ブロック２２０）、ＯＳ１３は利用度の低いプロセッサコアをパワーダウンさせる、あるいは最小の電力供給状態で動作させるようにしてもよい（ブロック２３０）。加えて、ＯＳ１３は、利用されているプロセッサコア１８に、コアの最大レベルで動作させるようにしてもよい（ブロック２３５）。
【００２５】
例示のために、プロセッサコア１８Ａ−１８Ｂの各々は、どのようなシステムレベルあるいは熱的条件に関係なく、３ＧＨｚで動作可能であると仮定する。従って、各プロセッサコア１８のコアの最大パフォーマンスレベルは３ＧＨｚである。しかし、両プロセッサコア１８が同じパッケージにあるときは、両コアが３ＧＨｚでともに動作すれば、熱収支は超過してしまう。したがって、システムの最大パフォーマンスレベルは、プロセッサコア１８がともに動作しているときに２．６ＧＨｚを越えないように設定してもよい。
【００２６】
現在、アプリケーションは、単一スレッドアプリケーションを実行している場合のように、プロセッサコア１８Ａだけで実行されており、プロセッサコア１８Ｂはアイドル状態であってもよい。このように、ＯＳ１３は、プロセッサコア１８Ｂをパワーダウンさせ、プロセッサ１８Ａに、その最大のパフォーマンスレベルで動作させるようにしてもよい。このようにすると熱収支は超過せず、また、アプリケーションは最大のパフォーマンスレベルで実行される。
【００２７】
加えて、利用度が、最大と最小との間で明確に線引きされない場合もある。したがって、ＯＳ１３は、様々なしきい値に対する電流利用度をチェックするように構成されてもよい。したがって、ＯＳ１３は、１つのプロセッサコアのパフォーマンスレベルを動的に下げ、一方で、もう一方のプロセッサコアのパフォーマンスレベルを、熱収支を越えることなくインクリメント量を様々に変えて上昇させるようにしてもよい。したがって、ブロック２２０に戻ると、プロセッサコアが最小の利用しきい値未満ではないが、いくつかの他のしきい値未満であるＯＳ１３が判断すれば、ＯＳ１３は、利用度の低いプロセッサコアのパフォーマンスレベルを段階的に下げ、利用度の高いプロセッサコアのパフォーマンスレベルを増加させる（ブロック２２５）。動作は次に、ブロック２１０に記載しているように進行する。ここでは、ＯＳ１３は各プロセッサコア１８の電流利用度を監視する。
【００２８】
ブロック２１５に戻ると、プロセッサコア１８のどちらも利用しきい値未満ではないとＯＳ１３が判断すれば、ＯＳ１３は、システム温度が最小しきい値未満であるかどうかを判断し得る。例えば、プロセッサコア１８の典型的なダイの動作温度は、９０℃であってもよい。この温度はセンサー３５で監視され得る。一実施形態では、センサー３５は、プロセッサコア１８Ａおよび／あるいは１８Ｂ内の基準ダイオードの温度を検出し得る。センサー３５は、システム管理ユニット２１の温度を示す信号を送り得る。一実施形態では、例えば、最小しきい値は７５℃であり、一方で最大しきい値は８８℃であってもよい。したがって、ＯＳ１３は、温度が最小しきい値未満であれば、温度が最小しきい値（ブロック２４０）と最大しきい値（ブロック２５０）の範囲内になるまで、一方の、あるいは両方のプロセッサパフォーマンスレベルを段階的に増加させる（ブロック２４５）。ブロック２４０および２４５における動作は、所望のパフォーマンスレベルおよび温度を得るように、何度も繰返し行われてもよい。動作はブロック２１０に記載しているように進行する。ここでは、ＯＳ１３は各プロセッサコア１８の電流利用度を監視する。
【００２９】
ブロック２５０を参照すると、温度が最大しきい値よりも高いかどうかが判断される（ブロック２５０）。温度が最小しきい値を越えていれば、ＯＳ１３は、温度が最小しきい値と最大しきい値の範囲内になるまで、一方の、あるいは両方のプロセッサコアのパフォーマンスレベルを段階的に下げてもよい（ブロック２４５）。しかし、この上限において、ＯＳ１３は、温度をできるだけ早く下げるために、パフォーマンスレベルのステップサイズを増加させてもよい。動作はブロック２１０に記載しているように進行する。ここでは、ＯＳ１３は各プロセッサコア１８の電流利用度を監視する。
【００３０】
動作電圧は周波数と同じ方法で段階的に増加あるいは低下させてもよいことに留意されたい。一実施形態では、電圧は周波数とともに調整され、一方で別の実施形態では、電圧は周波数に関係なく調整されてもよい。例えば、上述したように、ＯＳ１３はノードコントローラ２０にリクエストを送信することで動作電圧を増加あるいは低下させてもよい。ノードコントローラ２０は、電圧を増加あるいは低下させるのに必要な電圧レギュレータ４５Ａおよび／あるいは４５Ｂに信号を送信してもよい。
【００３１】
実施形態をかなり詳細に記載されているが、上記の発明を完全に理解したならば、当業者にとっては様々なバリエーションおよび修正が明らかであろう。以下の請求の範囲はこのようなバリエーションおよび修正を全て包含するものと解釈される。
【産業上の利用可能性】
【００３２】
概して、本発明はマルチプルコアプロセッサに応用可能である。
【図面の簡単な説明】
【００３３】
【図１】チップマルチプロセッサを含むコンピュータシステムの一実施形態のブロック図。
【図２】図１に示すプロセッシングノードの一実施形態の動作を説明したフローチャート。
【図１】
2009503728.tif 000003
【図２】
2009503728.tif 000004
【手続補正書】
【提出日】平成19年7月17日(2007.7.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
単一の集積回路チップに内蔵されたプロセッサノード（１２）であって、
第１プロセッサコア（１８Ａ）、
第２プロセッサコア（１８Ｂ）、
前記第１プロセッサコアおよび前記第２プロセッサコアのいずれかで実行され、前記第１プロセッサコアおよび前記第２プロセッサコアのいずれかの電流利用度レベルに応じて、前記第１プロセッサコアおよび第２プロセッサコアの各々のパフォーマンスレベルを独立して制御するように構成されているオペレーティングシステム（１３Ａ、１３Ｂ）、を含み、
前記第１プロセッサコアの前記電流利用度レベルの低下を検出したことに応答して、前記オペレーティングシステムは、システムの最大パフォーマンスレベルを超える分に対応する量によって、前記第１プロセッサコアのパフォーマンスレベルを低下させ、前記第２プロセッサコアのパフォーマンスレベルを増加させるように構成される、プロセッシングノード（１２）。
【請求項２】
前記第２プロセッサコアの前記電流利用度レベルの低下を検出したことに応答して、前記オペレーティングシステムは、システムの最大パフォーマンスレベルを超える分に対応する量によって、前記第２プロセッサコアのパフォーマンスレベルを低下させ、前記第１プロセッサコアのパフォーマンスレベルを増加させるように構成される、請求項１記載のプロセッシングノード。
【請求項３】
前記第１プロセッサコアの前記電流利用度が最小利用度レベル未満に低下したことを検出したことに応答して、前記オペレーティングシステムは、前記第１プロセッサコアを最小電力供給状態にし、前記第２プロセッサコアの前記パフォーマンスレベルをコアの最大パフォーマンスレベルに増加させるように構成される、請求項１記載のプロセッシングノード。
【請求項４】
前記システムの最大パフォーマンスレベルは、前記第１プロセッサコアおよび第２プロセッサコアの両方が動作している場合は最大周波数および電圧レベルに対応し、前記コアの最大パフォーマンスレベルは、前記第１プロセッサコアおよび前記第２プロセッサコアの各々が動作可能な最大周波数および電圧に対応する、請求項１記載のプロセッシングノード。
【請求項５】
命令を実行する第１プロセッサコア（１８Ａ）、
命令を実行する第２プロセッサコア（１８Ｂ）、
前記第１プロセッサコアおよび前記第２プロセッサコアのいずれかで実行し、前記第１プロセッサコアおよび前記第２プロセッサコアのいずれかの電流利用度レベルに応じて、前記第１プロセッサコアおよび第２プロセッサコアの各々のパフォーマンスを独立して制御するオペレーティングシステム（１３Ａ、１３Ｂ）、を含み、
前記第１プロセッサコアの前記電流利用度レベルの低下を検出したことに応答して、前記オペレーティングシステムは、システムの最大パフォーマンスレベルを超える分に対応する量によって、前記第１プロセッサコアのパフォーマンスレベルを低下させ、前記第２プロセッサコアのパフォーマンスレベルを増加させる、方法。
【請求項６】
前記第２プロセッサコアの前記電流利用度レベルの低下を検出したことに応答して、前記オペレーティングシステムは、システムの最大パフォーマンスレベルを超える分に対応する量によって、前記第２プロセッサコアのパフォーマンスレベルを低下させ、前記第１プロセッサコアのパフォーマンスレベルを増加させる、請求項５記載の方法。
【請求項７】
前記第１プロセッサコアの前記電流利用度が最小利用度レベル未満に低下したことを検出したことに応答して、前記オペレーティングシステムは、前記第１プロセッサコアを最小電力供給状態にし、前記第２プロセッサコアの前記パフォーマンスレベルをコアの最大パフォーマンスレベルに増加させる、請求項5記載の方法。
【請求項８】
前記システムの最大パフォーマンスレベルは、前記第１プロセッサコアおよび第２プロセッサコアの両方が動作している場合は最大周波数および電圧レベルに対応し、前記コアの最大パフォーマンスレベルは、前記第１プロセッサコアおよび前記第２プロセッサコアの各々が動作可能な最大周波数および電圧に対応する、請求項５記載の方法。
【国際調査報告】
2009503728.tif 000005
2009503728.tif 000006