(57)【特許請求の範囲】
【請求項１】
複数のプロセッサコアと、
低消費電力状態からのウェイクイベントを検出して、前記複数のプロセッサコアのうちの第２のプロセッサコアに、完全に機能する消費電力状態より低い電力を消費する消費電力状態に入らせる、前記複数のプロセッサコアのうちの少なくとも第１のプロセッサコアに結合した制御ロジックとを有し、
前記制御ロジックは、前記第２のプロセッサコアに、前記ウェイクイベントのソースに基づき前記低い電力を消費する消費電力状態に入らせる、プロセッサ。
【請求項２】
前記ウェイクイベントに応じて、前記複数のプロセッサコアのうちの第３のプロセッサコアが前記完全に機能する消費電力状態に入る、
請求項１に記載のプロセッサ。
【請求項３】
オペレーティングシステムソフトウェアを記憶するメモリを更に有し、前記オペレーティングシステムソフトウェアが前記ウェイクイベントをトリガーする、請求項１に記載のプロセッサ。
【請求項４】
前記オペレーティングシステムソフトウェアは、タイマーに基づき前記ウェイクイベントをトリガーする、請求項３に記載のプロセッサ。
【請求項５】
前記制御ロジックは、前記プロセッサを有するプラットフォームにおける負荷、シナリオ、使用条件のうちの一または複数に基づき、前記第２のプロセッサコアが前記低い電力を消費する消費電力状態に入るか判断する、請求項１に記載のプロセッサ。
【請求項６】
前記低消費電力状態はアイドル状態またはスタンバイ状態を含む、
請求項１に記載のプロセッサ。
【請求項７】
アプリケーションソフトウェアを記憶するメモリを更に有し、前記アプリケーションソフトウェアが前記ウェイクイベントをトリガーする、
請求項１に記載のプロセッサ。
【請求項８】
前記アプリケーションソフトウェアは、タイマーに基づき前記ウェイクイベントをトリガーする、請求項７に記載のプロセッサ。
【請求項９】
前記第１のプロセッサコアは前記ウェイクイベントに応じて前記第２のプロセッサコアに少なくとも一プロセッサ間割り込みを送る、
請求項１に記載のプロセッサ。
【請求項１０】
前記第１のプロセッサコアはブートストラッププロセッサコアであり、前記第２のプロセッサコアは非ブートストラッププロセッサコアである、
請求項１に記載のプロセッサ。
【請求項１１】
前記ウェイクイベントはプラットフォームアイドル状態からのレジュームを示す、請求項１に記載のプロセッサ。
【請求項１２】
プロセッサの第１のプロセッサコアにおいて低消費電力状態からのウェイクイベントを検出するステップと、
前記プロセッサの第２のプロセッサコアに、完全に機能する消費電力状態より低い電力を消費する消費電力状態に入らせるステップとを有し、
前記第２のプロセッサコアは前記ウェイクイベントのソースに基づき前記低い電力を消費する消費電力状態に入る、方法。
【請求項１３】
前記ウェイクイベントに応じて、前記プロセッサの第３のプロセッサコアに前記完全に機能する消費電力状態に入らせるステップをさらに有する、
請求項１２に記載の方法。
【請求項１４】
前記ウェイクイベントをトリガーするコードを実行するステップをさらに有する、請求項１２に記載の方法。
【請求項１５】
前記プロセッサを有するプラットフォームにおける負荷、シナリオ、使用条件のうちの一または複数に基づき、前記第２のプロセッサコアが前記低い電力を消費する消費電力状態に入るか判断するステップをさらに有する、
請求項１２に記載の方法。
【請求項１６】
前記第１のプロセッサコアが、前記ウェイクイベントに応じて前記第２のプロセッサコアに少なくとも一プロセッサ間割り込みを送るステップをさらに有する、請求項１２に記載の方法。
【請求項１７】
オペレーティングシステムソフトウェアパワーマネジメントドライバを記憶するメモリと、
前記オペレーティングシステムソフトウェアパワーマネジメントドライバを実行する、前記メモリに結合したプロセッサであって、前記プロセッサは、
複数のプロセッサコアと、
低消費電力状態からのウェイクイベントを検出して、前記複数のプロセッサコアのうちの第２のプロセッサコアに、完全に機能する消費電力状態より低い電力を消費する消費電力状態に入らせる、前記複数のプロセッサコアのうちの少なくとも第１のプロセッサコアに結合した制御ロジックとを有し、
前記制御ロジックは、前記第２のプロセッサコアに、前記ウェイクイベントのソースに基づき前記低い電力を消費する消費電力状態に入らせる、
コンピューティングシステム。
【請求項１８】
前記ウェイクイベントに応じて、前記複数のプロセッサコアのうちの第３のプロセッサコアが前記完全に機能する消費電力状態に入る、
請求項１７に記載のシステム。
【請求項１９】
前記オペレーティングシステムソフトウェアパワーマネジメントドライバは前記ウェイクイベントをトリガーする、請求項１７に記載のシステム。
【請求項２０】
前記オペレーティングシステムソフトウェアパワーマネジメントドライバは、タイマーに基づき前記ウェイクイベントをトリガーする、
請求項１９に記載のシステム。
【請求項２１】
前記制御ロジックは、前記コンピューティングシステムにおける負荷、シナリオ、使用条件のうちの一または複数に基づき、前記第２のプロセッサコアが前記低い電力を消費する消費電力状態に入るか判断する、請求項１７に記載のシステム。
【請求項２２】
前記低消費電力状態はアイドル状態またはスタンバイ状態を含む、
請求項１７に記載のシステム。
【請求項２３】
前記メモリはアプリケーションソフトウェアを記憶し、前記アプリケーションソフトウェアが前記ウェイクイベントをトリガーする、
請求項１７に記載のシステム。
【請求項２４】
前記アプリケーションソフトウェアは、タイマーに基づき前記ウェイクイベントをトリガーする、請求項２３に記載のシステム。
【請求項２５】
前記第１のプロセッサコアは前記ウェイクイベントに応じて前記第２のプロセッサコアに少なくとも一プロセッサ間割り込みを送る、
請求項１７に記載のシステム。
【請求項２６】
プロセッサにより実行された時に、前記プロセッサに、
前記プロセッサの第１のプロセッサコアにおいて低消費電力状態からのウェイクイベントを検出し、
前記プロセッサの第２のプロセッサコアに、完全に機能する消費電力状態より低い電力を消費する消費電力状態に入らせ、
前記第２のプロセッサコアは前記ウェイクイベントのソースに基づき前記低い電力を消費する消費電力状態に入らせるコンピュータプログラム。
【請求項２７】
前記ウェイクイベントに応じて、前記プロセッサの第３のプロセッサコアに前記完全に機能する消費電力状態に入らせる、
請求項２６に記載のコンピュータプログラム。
【請求項２８】
前記プロセッサに、前記ウェイクイベントをトリガーするコードを実行させる、請求項２６に記載のコンピュータプログラム。
【請求項２９】
前記第１のプロセッサコアに、前記プロセッサを有するプラットフォームにおける負荷、シナリオ、使用条件のうちの一または複数に基づき、前記第２のプロセッサコアが前記低い電力を消費する消費電力状態に入るか判断させる、
請求項２６に記載のコンピュータプログラム。
【請求項３０】
前記第１のプロセッサコアに、前記ウェイクイベントに応じて前記第２のプロセッサコアに少なくとも一プロセッサ間割り込みを送らせる、
請求項２６に記載のコンピュータプログラム。
【請求項３１】
請求項２６ないし３０いずれか一項に記載のコンピュータプログラムを格納したコンピュータ読み取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概してエレクトロニクスの分野に関する。より具体的には、本発明の一実施形態は、マルチコアプラットフォームにおける制約ブート法（constrained  boot  techniques）に関する。
【背景技術】
【０００２】
いくつかのシステムは性能を上げるため複数の処理コアを有するプロセッサ（多コアシステムとも呼ぶ）を含んでいる。現在、これらのシステムのほとんどは、高い性能を提供することにフォーカスし、ある程度のレベルで構成されたパワーマネジメントは限定されている。例えば、これらの多コアシステムのいくつかは、コアごとのＣｘ状態（per  core  Cx  states）を実行する機能を有している。各Ｃ状態はあるレベルの機能性を示す。例えば、Ｃ０は、プロセッサが動作中であることを示す。Ｃ１は、プロセッサが命令は実行していないが、ほぼ瞬時に実行状態に戻れることを示す。Ｃ２は、プロセッサがすべてのソフトウェアビジブル（software-visible）情報を維持しているが、完全な実行状態に戻るにはより長い時間がかかることを示す。Ｃ３は、プロセッサがスリープしており、そのキャッシュをコヒーレント（coherent）にしておく必要はないことを示す。
【０００３】
しかし、強いオペレーティングシステム（ＯＳ）またはソフトウェア（ＳＷ）ドリブンパワーマネジメントをサポートしているものは概して非常に少なく、特にＯＳの観点ではそうである。さらに、現在ほとんどのＯＳパワーマネジメントストラテジは、プロセッサパワーマネジメントの視点でさえ、またはプラットフォーム全体の視点でさえ、多コアシステムとよくスケールしない傾向にある。
【０００４】
したがって、様々な電力消費状態をどう利用するかによって、プロセッサの性能及び／または電力消費に直接的な影響がある。
【図面の簡単な説明】
【０００５】
詳細な説明は、添付した図面を参照して行う。図中、参照数字の最も左の桁は、その参照数字が最初に現れる図面を指す。異なる図面で同じ参照番号を用いて、同様の又は同一のアイテムを示す。
【図１】ここに説明する様々な実施形態を実装するのに利用可能なコンピューティングシステムの実施形態を示すブロック図である。
【図２】一実施形態による、コンピューティングシステムのプロセッサコアその他のコンポーネントの一部を示すブロック図である。
【図３】いくつかの実施形態によるフローダイヤグラムを示す図である。
【図４】いくつかの実施形態によるフローダイヤグラムを示す図である。
【図５】ここに説明する様々な実施形態を実装するのに利用可能なコンピューティングシステムの実施形態を示すブロック図である。
【図６】ここに説明する様々な実施形態を実装するのに利用可能なコンピューティングシステムの実施形態を示すブロック図である。
【発明を実施するための形態】
【０００６】
以下の説明では、様々な実施形態をよく理解してもらうために、具体的な詳細事項を多数記載する。しかし、本発明の様々な実施形態はこれらの具体的な詳細事項がなくても実施することができる。他の場合には、本発明の具体的な実施形態を分かりにくくしないように、周知の方法、手順、コンポーネント、回路は詳細には説明していない。さらに、本発明の実施形態の様々な態様は、集積半導体回路（「ハードウェア」）、一又は複数のプログラムに組織化されたコンピュータ読み取り可能命令（「ソフトウェア」）、又はハードウェアとソフトウェアの組合せなどの様々な手段を用いて実行できる。本開示の目的において、「ロジック」とはハードウェア、ソフトウェア、またはこれらの組み合わせのどれかを意味するものとする。また、「命令」と「マイクロオペレーション（μop）」は、ここでの説明では交換可能である。
【０００７】
ここに説明する実施形態のいくつかは、マルチコアプロセッサにおける制約ブート法（constrained  boot  techniques）を提供するのに用いられる。ここに説明するように、「制約（constrained）」ブートまたは状態は、概して、一または複数のプロセッサコアが、完全に動作中の電力消費状態より消費電力が小さい電力消費状態に入るまたはブートする状態またはブート法を指す。いくつかの実施形態では、ここに説明する少なくともいくつかの電力消費状態は、電力制御インタフェース（ＡＣＰＩ）仕様第４．０ａ版（２０１０年４月５日）で規定された状態による。
【０００８】
一実施形態では、プロセッサは、どのコアをパワーアップ／ダウンするか、及び／またはこれらのコアがどのパワー状態に入る必要があるか、ＯＳソフトウェア及び／またはソフトウェアアプリケーションからの入力に少なくとも部分的に基づき制御するロジックを含む。さらに、コアのパワーアップ／ダウンとそのレベルを制御する機能を用いて、負荷、シナリオ、使用等に基づいて、プラットフォーム電力消費を最適化できる。さらにまた、ここに説明する少なくともいくつかのＯＳの動作は、ソフトウェアアプリケーション、ファームウェア等により交換可能に実行できる。
【０００９】
一実施形態では、低パワー状態から出る時、特定のプロセッサコアのみがフルパワー状態にされ、残りのプロセッサコアは「制約」状態にある。次いでこれが、プラットフォーム消費電力を大幅に低減する。
【００１０】
さらに、多コアシステムにより性能は大幅に改善されるが、ＯＳまたはＳＷレベルのパワーマネジメントは一般的にレガシーＯＳサポートに依存する。例えば、現在のいくつかのＯＳ（リナックス（登録商標）など）は、ブートされていないすべてのプロセッサ（例えば、最終的なパワーダウン／パワーアップには重要でないもの）を完全にパワーダウンまたはディスエーブルすることをサポートしているが、このアプローチはレイテンシが高く、パワーインパクトが高く、（時として、シナリオに応じて）システム中のすべてのコアを完全にパワーアップする必要はない可能性がある（例えば、ＣＰＵコアをウェイクアップする必要がある単一のインターラプトがあるシナリオや、すべてのＣＰＵをパワーアップして同時に走らせることが実際には必要でないシナリオ）。
【００１１】
ここで説明する手法は、図１、５及び６を参照して説明する、性能状態設定をできるプロセッサで用いることができる。より具体的に、図１は、本発明の一実施形態によるコンピューティングシステム１００を示すブロック図である。システム１００は、一または複数のプロセッサ１０２−１ないし１０２−Ｎ（ここでは「複数のプロセッサ１０２」または「プロセッサ１０２」と総称する）を含む。複数のプロセッサ１０２は、相互接続ネットワークまたはバス１０４を介して通信できる。各プロセッサは様々なコンポーネントを含み、そのうちのいくつかのコンポーネントについては、明確性のためプロセッサ１０２−１のみを参照して説明する。したがって、残りの各プロセッサ１０２−２ないし１０２−Ｎは、プロセッサ１０２−１を参照して説明するのと同じまたは同様のコンポーネントを含み得る。
【００１２】
一実施形態では、プロセッサ１０２−１は、一または複数のプロセッサコア１０６−１ないし１０６−Ｍ（ここで、「複数のコア１０６」またはより一般的には「コア１０６」と総称する）、共有キャッシュ１０８、ルータ１１０及び／またはプロセッサ制御ロジックまたはユニット１２０を含み得る。プロセッサコア１０６は、１つの集積回路（ＩＣ）チップ上に実装できる。さらに、チップは、一または複数の共有キャッシュ及び／またはプライベートキャッシュ（例えば、キャッシュ１０８）、バスまたは相互接続（例えば、バスまたは相互接続ネットワーク１１２）、メモリコントローラ（例えば、図５、６を参照して説明するもの）、またはその他のコンポーネントを含み得る。
【００１３】
一実施形態では、ルータ１１０は、プロセッサ１０２−１及び／またはシステム１００の様々なコンポーネント間の通信に用いられ得る。さらに、プロセッサ１０２−１は２以上のルータ１１０を含み得る。さらに、複数のルータ１１０は、プロセッサ１０２−１の内部または外部の様々なコンポーネント間のデータルーティングを可能にするように通信する。
【００１４】
共有キャッシュ１０８は、コア１０６などのプロセッサ１０２−１の一または複数のコンポーネントにより利用されるデータ（例えば、命令を含む）を格納する。例えば、共有キャッシュ１０８は、プロセッサ１０２のコンポーネントによるより速いアクセスのために、メモリ１１４に格納されたデータをローカルでキャッシュできる。一実施形態では、キャッシュ１０８は、ミッドレベルキャッシュ（例えば、レベル２（Ｌ２）、レベル３（Ｌ３）、レベル４（Ｌ４）またはその他のキャッシュレベル）、ラストレベルキャッシュ（ＬＬＣ）、及び／またはこれらの組み合わせを含む。さらに、プロセッサ１０２−１の様々なコンポーネントは、直接的に、バス（例えば、バス１１２）を通して、及び／またはメモリコントローラまたはハブを通して、共有キャッシュ１０８と通信できる。図１に示したように、いくつかの実施形態では、複数のコア１０６のうちの一または複数のコアは、レベル１（Ｌ１）キャッシュ１１６−１（ここでは「Ｌ１キャッシュ１１６」と総称する）を含み得る。
【００１５】
一実施形態では、制御部１２０は、どのコア１０６がパワーアップ／ダウンされるべきか、及び／またはこれらのコアをどれだけパワーアップ／ダウンする必要があるかを、（例えば、メモリ１１４に格納されている）ＯＳ及び／またはソフトウェアアプリケーションからの入力に基づいて制御する。さらに、制御部１２０は、例えば、ＯＳ及び／またはソフトウェアアプリケーションにより決定される、プラットフォームにおける負荷、シナリオ、使用などの状態に基づき、コアのパワーアップ／ダウンと、そのレベルとを制御して、プラットフォーム消費電力を最適化する。
【００１６】
図２は、本発明の一実施形態による、コンピューティングシステムのプロセッサコア１０６その他のコンポーネントの一部を示すブロック図である。一実施形態では、図２に示した矢印は、コア１０６における命令が流れる方向を示す。（プロセッサコア１０６などの）一または複数のプロセッサコアを、図１を参照して説明したように、１つの集積回路チップ（すなわちダイ）に実装できる。さらに、チップは、一または複数の共有キャッシュ及び／またはプライベートキャッシュ（例えば、図１のキャッシュ１０８）、相互接続（例えば、図１の相互接続１０４及び／または１１２）、制御ユニット、メモリコントローラ、その他のコンポーネントを含み得る。
【００１７】
図２に示すように、プロセッサコア１０６は、実行する命令（条件分岐を含む命令を含む）をフェッチするフェッチユニット２０２を含み得る。命令は、メモリ１１４、及び／または図５ー６を参照して説明するメモリデバイスなどの任意のストレージデバイスからフェッチできる。コア１０６は、フェッチされた命令をデコードするデコード部２０４も含み得る。例えば、デコード部２０４は、フェッチされた命令を複数のuops（マイクロオペレーション）にデコードする。また、コア１０６はスケジュール部２０６を含み得る。スケジュール部２０６は、（例えば、デコード部２０４から受け取った）デコードされた命令がディスパッチできるようになるまで、例えば、デコードされた命令のすべてのソース値が利用可能になるまで、その命令の格納に関連する様々なオペレーションを実行し得る。一実施形態では、スケジュール部２０６は、スケジュールして、デコードされた命令を、実行部２０８に実行のため発行（すなわちディスパッチ）し得る。実行部２０８は、命令が（例えば、デコード部２０４により）デコードされ、（例えば、スケジュール部２０６により）ディスパッチされた後、ディスパッチされた命令を実行し得る。一実施形態では、実行部２０８は２以上の実行部を含み得る。また実行部２０８は、加法、減法、乗法及び／または除法などの様々な算術演算を実行し、一または複数の算術論理演算部（ＡＬＵ）を含み得る。一実施形態では、コプロセッサ（図示せず）が実行部２０８と共に様々な算術演算を実行できる。
【００１８】
さらに、実行部２０８は、命令をばらばらの順序で実行できる。よって、プロセッサコア１０６は一実施形態ではout-of-orderプロセッサであり得る。コア１０６は、リタイアメント部２１０も含む。リタイアメント部２１０は、実行された命令がコミットされた後に、その命令をリタイア（retire）し得る。一実施形態では、実行された命令のリタイアメントの結果、例えば、プロセッサ状態が命令実行からコミットされ、命令により使用された物理的レジスタがデ・アロケート（de-allocate）される。
【００１９】
コア１０６は、プロセッサコア１０６のコンポーネントと他のコンポーネント（図１を参照して説明したコンポーネントなど）との間の、一または複数のバス（例えば、バス１０４及び／または１１２）を介した通信を可能にするバス部２１４も含む。またコア１０６は、コア１０６の様々なコンポーネントによりアクセスされるデータ（例えば、消費電力状態設定に関する値など）を格納する一または複数のレジスタ２１６を含み得る。
【００２０】
さらにまた、図１には制御部１２０が相互接続１１２を介してコア１０６に結合されているものとして図示したが、様々な実施形態では、制御部１２０は他のところにあってもよく、例えばコア１０６内にあっても、バス１０４を介してコアに結合されていても、その他の形態であってもよい。
【００２１】
図３は、一実施形態による、制約初期化オペレーションを示すフローダイヤグラムである。いくつかの実施形態では、図１、２、４−６を参照して説明する様々なコンポーネントは、図３を参照して説明する一または複数のオペレーションを実行するために利用できる。例えば、制御部１２０を用いて一または複数のプロセッサコア１０６の消費電力状態を制御してもよい。いくつかの実施形態では、一または複数の動作３０４−３０８はファームウェアにより実行される。また、様々な実施形態では、一または複数の動作３１０−３１２，３１８、３３６、３３８、及び３４４は、ＯＳにより実行される。
【００２２】
ここに説明するように、「スレッド（thread）」は一般的に論理的プロセッサまたは（ＯＳ及び／またはソフトウェアアプリケーションによりスケジューリングされる）処理の最小単位を指す。「スレッド」は、同じ物理的半導体集積回路（ＩＣ）パッケージ中の他の論理的プロセッサとリソースを共有してもしなくてもよい。「コア」は、概して、同じ物理的半導体ＩＣパッケージ中に、一または複数のプロセッサコアと共存するプロセッサコアを指す。プロセッサコアは、他のプロセッサまたはプロセッサコアとリソースを共有してもしなくてもよい。「パッケージ」は、概して、任意数のコア及びスレッドを含む物理的ＩＣチップを指す。
【００２３】
いくつかの実施形態では、アーキテクチャ的に、及び一般性を損なわずに、どの多コアシステムにおいても、次のもののうち一または複数があると考えることができる：（１）１つのブートストラッププロセッサ（ＢＳＰ）コア、または主プロセッサコア（またはスレッド）；
（２）一または複数の非ＢＳＰコア、すなわち副プロセッサコアまたはプロセッサスレッド（例えば、プラットフォーム中の一または複数のプロセッサコア間で共有されるパワーマネジメント機能その他の機能を開始／処理するにはＢＳＰコアに依存するもの）。
【００２４】
いくつかの実施形態では、非ＢＳＰプロセッサを変更するＯＳルーチンは非ＢＳＰコアプロセッサをディスエーブル及びイネーブルするそれぞれ「disable_nonboot_cpus()」及び「enable_nonboot_cpus()」を含む。一般的レジュームシーケンスでは、ステップ３０２でプロセッサがリセットされる（任意的に、ステップ３０４においてマイクロコードパッチがロードされる）と、ブートフローは「enable_nonboot_cpus()」フローに進み、非ＢＳＰコアをイネーブルする。これには次のものが含まれる：
（１）Ｓｔａｒｔｕｐ  Ｉｎｔｅｒ−Ｐｒｏｃｅｓｓｏｒ  Ｉｎｔｅｒｒｕｐｔ（ＳＩＰＩ）：
副スレッドまたはコアをウェイクアップするため、ＢＳＰは各スレッド及びコアにＳＩＰＩを送る。このＳＩＰＩは、例えばアプリケーションプロセッサ（ＡＰ）が実行を開始しなければならない物理アドレスを示す、ＢＳＰのＬＡＰＩＣ（Local  Advanced  Programmable  Interrupt  Controller）を用いて送られる。
（２）ＡＰ  Ｗｏｋｅｎ  Ｕｐ  ｓｔａｔｅ：
ＳＩＰＩを受け取ると、ＡＰはＳＩＰＩメッセージにより指し示されたコードの実行を開始する。
【００２５】
ファームウェアがＯＳのブートを試みられるようになると、（後でさらに説明するように）ステップ３３２において、全てのプロセッサは、パワーオン状態（「Wait-for-SIPI」）に戻される。これは、システム中のすべての（送信もとコアを除く全ての）ＡＰに、ＢＳＰコアがＩＮＩＴ  ＡＳＳＥＲＴ  ＩＰＩ及びそれに続くＩＮＩＴ  ＤＥＡＳＳＥＲＴ  ＩＰＩを送ることにより実現される。このプロセスは、通常、レイテンシが高く、このプロセスプラットフォーム／プロセッサ中のすべての非ＢＳＰコアについて繰り返されないとならない場合、プラットフォームレジュームプロセス全体のレイテンシが大幅に増大するおそれがある。
【００２６】
いくつかの実施形態によると、非ＢＳＰコアの制約状態へのブートは、図３に示したように低いレイテンシの短いブートフローとすることにより最適化され得る。パッケージレベルＣ６へのエントリーは図３を参照して説明するが、様々な実施形態では、他の（例えば、Ｃ０以外の）パッケージレベルにエンターしてもよい。一般的に、（Ｘ８６プロセッサ状態で最も深い）パッケージレベルＣ６に入るには、コアのスレッドがＣ６を要求していなければならず、そうでなければマイクロコードは２つのプロセッサスレッド状態のうち低い方をピックアップする。
【００２７】
いくつかの実施形態では、スレッド０またはＢＳＰコアは、図３に示したオペレーション３０２−３２０を実行する。例えば、（図４を参照して説明するスタンバイ状態またはアイドル状態から）リセット状態３０２の後、ステップ３０４において、任意的にマイクロコードパッチが適用される。ステップ３０６において、（図５のメモリコントローラ５１０などの）メモリコントローラが初期化される。ステップ３０８において、プラットフォーム及びそのコンテキストが（図１のメモリ１１４または図５のメモリ５１２から）リストアされる。ステップ３１０において、ＯＳカーネルがレジュームされる。ステップ３１２において、プラットフォームの残りの部分が初期化される。ステップ３１４において、プラットフォームがスレッド０／ＢＳＰコアによる実行状態にあると判断されると、ステップ３１６において、ショートブート（例えば、Ｃ６）が実行される。そうでなければ、ステップ３１８において、非ブートコアがイネーブルされる。ステップ３２０において、スタンバイからのレジュームが完了する。
【００２８】
図３を参照して、スレッド１または非ＢＳＰコアがオペレーション３３０−３４４を実行する。すなわち、第１の非ＢＳＰコアは、フロー３３４により、かつリセット状態３３０の後に、制約されたブート状態にブートされ得る。より具体的に、ステップ３３２において、第１の非ＢＳＰコアは上記の通り、（例えば、ステップ３１６からの）ＳＩＰＩを待つ。いくつかの実施形態では、ステップ３３６において、スレッド１は、（例えば、ステップ３１６におけるスレッド０から）ＩＰＩを受け取り、ＩＰＩハンドラーの一部として、ステップ３３８において、Ｃ６に対する要求を繰り返す。ステップ３４０において、制約されたブートにエンターすべきと判断されると、例えば、スレッド１において対応するすべてのタスクが行われた時、ステップ３４２において、深いスリープ状態（例えば、Ｃ＆）に入る。そうでなければ、ステップ３４４において、例えば、（図５のメモリコントローラ５１０などの）メモリマネジメントユニット（ＭＭＵ）の初期化のために、低メモリ（low  memory）をイネーブルすることにより、高レイテンシブートフローが実行される。また、ステップ３４４において、コアごとに、ＧＤＴ（Global  Descriptor  Table）及び／またはＴＳＳ（Task-State  Segment）がセットアップされる。また、いくつかの実施形態では、ステップ３４４において、浮動小数点初期化及び／またはＢＰ（Boot  Processor）イネーブルローカルインターラプトとの同期が実行される。さらに、非タイマーインターラプトに応じてプラットフォームがウェイクアップされると、ＯＳは非ＢＳＰスレッドをイネーブルし、既知の良好な状態に初期化し、プラットフォームがアクティブ状態になった時の性能を犠牲にしない。
【００２９】
この短いブートフロー３３４は複数の場合で使われ得る。例えば、タイマーウェイク実行状態の場合、タイマー割り込みのためにＯＳ同期を実行するためだけにプラットフォームがウェイクアップされるアイドルシナリオでは、タイマー割り込みの処理後比較的すぐに、深いスリープ状態に再び入る可能性がある。このシナリオでは、非ＢＳＰプロセッサスレッドはその最大限の動作をし、再び深いスリープ状態に入ることを試みるので、消費電力の潜在的なペナルティが大きい。その代わりに、非ＢＳＰスレッドは、制約された状態にブートし、消費電力のペナルティが少なく、深いスリープ状態に入れられる。
【００３０】
図４は、一実施形態による、アイドル状態におけるタイマーベース割り込み処理のための制約初期化オペレーションを示すフローダイヤグラムである。いくつかの実施形態では、図１−３、５−６を参照して説明する様々なコンポーネントは、図３を参照して説明する一または複数のオペレーションを実行するために利用できる。例えば、制御部１２０を用いて一または複数のプロセッサコア１０６の消費電力状態を制御してもよい。
【００３１】
ステップ４０２においてプラットフォームがＳ０ｉｘからウェイクアップした後、ステップ４０４においてＯＳ（例えば、ＯＳパワーマネジメント（ＯＳＰＭ）ドライバ）はウェイクソース（wake  source）を決定する。「Ｓ０ｉｘ」は、一般的に、ユーザにより駆動され、またはプラットフォームがアイドルである時間が長すぎる時、従来のアイドル消費電力状態ではなく、（例えば、ＯＳまたはソフトウェアアプリケーション入力に基づく）イベントドリブンであるプラットフォームレベル消費電力管理により実現される改善されたアイドル消費電力状態をいう。ステップ４０２におけるウェイクの理由が非タイマーまたはインターラクティブである場合、イベントは、高速リトライ無しに、ＯＳＰＭフレームワークに送られ処理される。
【００３２】
一実施形態では、プラットフォームパワー状態がＳ０ｉｘである場合、これはＳ０ｉｘ状態にリトライするヒントとして扱われ得る。ＣＰＵアイドルドライバロジック４０６は、ＯＳＰＭドライバ４０４からメッセージまたは信号を受け取り、ステップ４１２において、ＣＰＵ状態を保存させる。また、一実施形態により、パワーマネジメントコマンドは、（Ｓ０ｉ２／３の場合、）（例えば、サウス）コンプレックスシステムコントローラユニット（ＳＣＵ）に送られ、ステップ４１２において、ＣＰＵ状態は（例えば、ＳＲＡＭである）ＳＣＵメモリに格納され得る。ステップ４１０において、ＢＳＰと非ＢＳＰコア／スレッドが両方とも深いスリープ状態（例えば、Ｃ６）にある場合、ステップ４１１において、プラットフォームはＳ０ｉｘに入る。図４に示したように、（一実施形態では、制御部１２０に実装されていてもよい）ＣＰＵアイドルガバナーロジック４０８は、ロジック４０６と通信し、例えば、伝送遅延値と関連するレイテンシヒントに基づき、さらに深い状態（例えば、Ｃ７）にはいってもよい。
【００３３】
いくつかの実施形態のよると次の手法が提供される：
（１）プラットフォームアイドル状態に基づき、及び／またはプラットフォームに対するウェイク原に基づき、最大可能性状態または「制約状態」のどちらかに非ＢＳＰコアを選択的にブートし、
（２）非ＢＳＰコアのブートのレイテンシを低減することによりプラットフォームを速くブートし、及び／または（３）フルパワー状態（例えば、Ｃ０）で使う時間を短縮し、それによりパワーセーブする役に立つ。
【００３４】
図５は、本発明の一実施形態によるコンピューティングシステム５００を示すブロック図である。コンピューティングシステム５００は、相互接続ネットワーク（すなわちバス）５０４を介して通信する一又は複数の中央処理ユニット（ＣＰＵ）５０２又はプロセッサを含む。プロセッサ５０２は、汎用プロセッサ、（コンピュータネットワーク５０３により通信されるデータを処理する）ネットワークプロセッサ、（ＲＩＳＣ（reduced  instruction  set  computer）又はＣＩＳＣ（complex  instruction  set  computer）を含む）その他のタイプのプロセッサを含む。さらに、プロセッサ５０２はシングルコアデザインでもマルチコアデザインでもよい。マルチコアデザインのプロセッサ５０２は、同じ集積回路（ＩＣ）ダイ上に異なるタイプのプロセッサコアを集積したものであってもよい。また、マルチコアデザインのプロセッサ５０２は、対称又は非対称のマルチプロセッサとして実装されてもよい。一実施形態では、一または複数のプロセッサ５０２は図１のプロセッサと同じまたは同様であってもよい。例えば、一または複数のプロセッサ５０２は図１−４を参照して説明した制御部１２０を含み得る。また、図１−４を参照して説明した動作は、システム５００の一又は複数のコンポーネントにより実行できる。
【００３５】
チップセット５０６も相互接続５０４で通信できる。チップセット５０６は、メモリコントロールハブ（ＭＣＨ）５０８を含む。ＭＣＨ５０８は、（図１のメモリ１１４と同じまたは同様な）メモリ５１２と通信するメモリコントローラ５１０を含み得る。メモリ５１２は、ＣＰＵ５０２またはコンピューティングシステム５０２に含まれるその他の任意のデバイスにより実行される命令シーケンスを含むデータを記憶する。本発明の一実施形態では、メモリ５１２は、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、又はその他のタイプの記憶デバイスなどの一又は複数の揮発性ストレージ（すなわちメモリ）を含む。ハードディスクなどの不揮発性メモリも利用できる。複数のＣＰＵ及び／又は複数のシステムメモリなど別のデバイスも、相互接続ネットワーク５０４を介して通信できる。
【００３６】
ＭＣＨ５０８は、ディスプレイ装置５１６と通信するグラフィックスインタフェース５１４も含み得る。本発明の一実施形態では、グラフィックスインタフェース５１４は、ＡＧＰ（accelerated  graphics  port）を介してディスプレイ装置５１６と通信できる。本発明の一実施形態では、（フラットパネルディスプレイなどである）ディスプレイ５１６は、例えば信号変換器によりグラフィックスインタフェース５１４と通信する。信号変換器は、ビデオメモリやシステムメモリなどのストレージデバイスに記憶された画像のデジタル表現をディスプレイ信号に変換する。ディスプレイ信号はディスプレイ５１６により解釈され表示される。ディスプレイデバイスにより生成されたディスプレイ信号は、ディスプレイ５１６により解釈されそれに表示される前に、様々な制御デバイスを通して送られる。
【００３７】
ハブインタフェース５１８により、ＭＣＨ５０８と入出力コントロールハブ（ＩＣＨ）５２０が通信できる。ＩＣＨ５２０は、コンピューティングシステム５００と通信するＩ／Ｏデバイスにインタフェースを提供する。ＩＣＨ５２０は、ペリフェラルコンポーネント相互接続（ＰＣＩ）ブリッジ、ユニバーサルシリアルバス（ＵＳＢ）コントローラ、又はその他のタイプのペリフェラルブリッジやコントローラなどのペリフェラルブリッジ（又はコントローラ）５２４を通してバス５２２と通信できる。ブリッジ５２４は、ＣＰＵ５０２とペリフェラルデバイスとの間にデータパスを提供する。他のタイプのトポロジーも利用できる。また、複数のバスが、例えば複数のブリッジ又はコントローラにより、ICH５２０と通信できる。さらに、ＩＣＨ５２０と通信する他のペリフェラルには、本発明の様々な実施形態において、ＩＤＥ（integrated  drive  electronics）又はＳＣＳＩ（small  computer  system  interface）ハードディスクドライブ、ＵＳＢポート、キーボード、マウス、パラレルポート、シリアルポート、フロッピィ（登録商標）ディスクドライブ、デジタル出力サポート（ＤＶＩ（digital  video  interface）など）、その他のデバイスが含まれる。
【００３８】
バス５２２は、オーディオデバイス５２６、一又は複数のディスクドライブ５２８、及びネットワークインタフェースデバイス５３０と通信できる（これらはコンピュータネットワーク５０３と通信できる）。他のデバイスはバス５２２を介して通信できる。また、本発明のいくつかの実施形態では、様々なコンポーネント（ネットワークインタフェースデバイス５３０など）がＭＣＨ５０８と通信できる。また、プロセッサ５０２とＭＣＨ５０８は結合されて一チップを形成することもできる。さらに、本発明の他の実施形態では、グラフィックアクセラレータ５１６はＭＣＨ５０８内に含まれてもよい。
【００３９】
さらに、コンピューティングシステム５００は揮発性及び／又は不揮発性のメモリ（又はストレージ）を含む。例えば、不揮発性メモリは、次のうち一又は複数を含む：リードオンリメモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気的ＥＰＲＯＭ（ＥＥＰＲＯＭ）、ディスクドライブ（例えば、５２８）、フロッピィ（登録商標）ディスク、コンパクトディスクＲＯＭ（ＣＤ−ＲＯＭ）、デジタルバーサタイルディスク（ＤＶＤ）、フラッシュメモリ、光磁気ディスク、又は（命令などを含む）電子的データを記憶することができる他のタイプの不揮発性機械読み取り可能媒体を含む。
【００４０】
図６は、本発明の一実施形態による、ポイントツーポイント（ＰｔＰ）構成で構成されたコンピューティングシステム６００を示す図である。具体的に、図６は、プロセッサ、メモリ、及び／または入出力装置が複数のポイントツーポイントインタフェースにより相互接続されているシステムを示す。図１−５を参照して説明した動作は、システム６００の一又は複数のコンポーネントにより実行できる。
【００４１】
図６に示したように、システム６００は複数のプロセッサを含んでいてもよく、明確性のため、そのうち２つのプロセッサ６０２、６０４のみを示した。プロセッサ６０２と６０４は、それぞれ、ローカルメモリコントローラハブ（ＭＣＨ）６０６、６０８を含み、メモリ６１０と６１２と通信できる。メモリ６１０及び／または６１２は、図５のメモリ５１２を参照して説明したような様々なデータを格納し得る。
【００４２】
一実施形態では、プロセッサ６０２と６０４は、図５を参照して説明した複数のプロセッサ５０２のうちのものであってもよい。プロセッサ６０２と６０４は、それぞれＰｔＰインタフェース回路６１６と６１８を用いて、ポイントツーポイント（ＰｔＰ）インタフェース６１４を介してデータを交換できる。また、プロセッサ６０２と６０４は、それぞれ、ポイントツーポイントインタフェース回路６２６、６２８、６３０及び６３２を用いて、個々のＰｔＰインタフェース６２２と６２４を介してチップセット６２０とデータを交換できる。さらにチップセット６２０は、例えば、ＰｔＰインタフェース回路６３７を用いて、グラフィックスインタフェース６３６を介してグラフィックス回路６３４とデータを交換できる。
【００４３】
本発明の少なくとも一実施形態は、プロセッサ６０２と６０４に設けることができる。例えば、図１−４の制御部１２０は、プロセッサ６０２と６０４内に配置してもよい。しかし、本発明の他の実施形態は、図６のシステム６００内の他の回路、ロジックユニット、またはデバイスにあってもよい。さらにまた、本発明の他の実施形態は、図６に示した複数の回路、ロジックユニット、またはデバイスに分散していてもよい。
【００４４】
チップセット６２０は、ＰｔＰインタフェース回路６４１を用いてバス６４０を介して通信できる。バス６４０は、バスブリッジ６４２とＩ／Ｏデバイス６４３などの一または複数のデバイスと通信できる。バスブリッジ６４２は、バス６４４を介して、キーボード／マウス６４５、通信デバイス６４６（例えば、モデム、ネットワークインタフェースデバイス、またはコンピュータネットワーク５０３と通信できるその他の通信デバイス）、オーディオＩ／Ｏデバイス６４７、及び／またはデータストレージデバイス６４８などのその他のデバイスと通信できる。データストレージデバイス６４８は、プロセッサ６０２及び／または６０４により実行できるコード６４９を格納できる。
【００４５】
本発明の様々な実施形態において、例えば図１−６を参照してここに説明した動作は、ハードウェア（例えば、ロジック回路）、ソフトウェア、ファームウェア、またはこれらの組み合わせとして実装でき、コンピュータプログラム製品として提供することもでき、これには、ここで説明した方法を実行するようにコンピュータをプログラムするのに使われる命令（またはソフトウェア手順）を格納した、（例えば、一時的でない）機械読み取り可能またはコンピュータ読み取り可能な媒体を含む。機械読み取り可能媒体は、図１−６を参照して説明したような記憶デバイスを含み得る。
【００４６】
また、かかるコンピュータ読み取り可能媒体は、コンピュータプログラム製品としてダウンロード可能であってもよい。この場合、プログラムは、通信リンク（例えば、バス、モデム、又はネットワーク接続）を介して、リモートコンピュータ（例えば、サーバ）から要求コンピュータ（例えば、クライアント）に、搬送はその他の伝搬媒体に化体されたデータ信号により転送できる。
【００４７】
本明細書において「一実施形態」または「いくつかの実施形態」とは、その実施形態に関して説明する機能、構造、特徴が少なくとも１つの実施形態に含まれることを意味している。本明細書ではいろいろな箇所で「一実施形態とは」と記載するが、同じ実施形態を指すものであってもなくてもよい。
【００４８】
また、以下の説明及び請求項において、「coupled」と「connected」との用語及びその変化形を用いることがある。本発明のある実施形態では、「接続された（connected）」という用語を用いて、２以上の要素が互いに物理的または電気的に直接的に接触していることを示している。「結合された」という用語は、２つ以上の要素が物理的または電気的に直接的に接触していることを示している。しかし、「結合された」という用語は、複数の要素が互いに直接的には接触してないが、互いに協働または相互作用することを示している。
【００４９】
よって、本発明の実施形態を構造的特徴及び／又は方法動作の具体的な言葉で説明したが、言うまでもなく、本発明は説明した具体的な特徴や動作に限定されない。むしろ、具体的な特徴や動作は、請求した主題を実施する形式例として開示したものである。
【図１】
0005972981.tif 000002
【図２】
0005972981.tif 000003
【図３】
0005972981.tif 000004
【図４】
0005972981.tif 000005
【図５】
0005972981.tif 000006
【図６】
0005972981.tif 000007