(57)【要約】      （修正有）【課題】プラットフォーム非依存型パワー管理を提供する。【解決手段】プロセッサは少なくとも１つの機能ブロック１２０Ａ、１２０Ｎおよび中央パワーコントローラ１１０を含む。その少なくとも１つの機能ブロックは少なくとも１つのブロックコンポーネント１２５およびブロックパワーロジック１３０を含み得る。当該ブロックパワーロジックは、当該少なくとも１つの機能ブロックにおいて第１低減パワーモードを開始する第１要求を受け取り、当該第１要求に応答して、通知信号を中央パワーコントローラに送ることができる。当該中央パワーコントローラは、当該通知信号に応答して、当該少なくとも１つの機能ブロックの第１状態を記憶し、当該少なくとも１つの機能ブロックにおいて当該第１低減パワーモードを開始することができる。【選択図】図１
2014179080.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つの機能ブロックを備えるプロセッサであって、前記少なくとも１つの機能ブロックは、
少なくとも１つのブロックコンポーネントと、
ブロックパワーロジックとを有し、
前記ブロックパワーロジックは、
前記少なくとも１つの機能ブロックにおいて第１低減パワーモードを開始する第１要求を受け取り、
前記第１要求に応答して、通知信号を中央パワーコントローラに送り、
前記中央パワーコントローラは、前記通知信号に応答して、
前記少なくとも１つの機能ブロックの第１状態を記憶し、
前記少なくとも１つの機能ブロックにおいて前記第１低減パワーモードを開始する、
プロセッサ。
【請求項２】
前記中央パワーコントローラはさらに、
前記少なくとも１つの機能ブロックにおいて第２低減パワーモードを開始する第２要求を受け取り、
前記第２要求に応答して、前記少なくとも１つの機能ブロックの第２状態を記憶する、
請求項１に記載のプロセッサ。
【請求項３】
前記中央パワーコントローラはさらに、前記第２要求に応答して、前記少なくとも１つの機能ブロックにおいて前記第２低減パワーモードを開始するために少なくとも１つのパワー制御動作を実行する、請求項２に記載のプロセッサ。
【請求項４】
前記中央パワーコントローラは、前記中央パワーコントローラに含まれる少なくとも１つのレジスタビットを用いて前記第２要求を受け取る、請求項２に記載のプロセッサ。
【請求項５】
前記中央パワーコントローラはさらに、前記中央パワーコントローラに含まれる前記少なくとも１つのレジスタビットを用いて前記通知信号を受け取る、請求項４に記載のプロセッサ。
【請求項６】
前記第２要求は、オペレーティングシステムカーネルにより要求される、請求項２に記載のプロセッサ。
【請求項７】
前記第２要求は、バスドライバを用いて送られる、請求項２に記載のプロセッサ。
【請求項８】
前記ブロックパワーロジックは、前記ブロックパワーロジックに含まれる１つ以上のレジスタビットを用いて前記第１要求を受け取る、請求項１に記載のプロセッサ。
【請求項９】
前記中央パワーコントローラは、前記少なくとも１つの機能ブロックの前記第１状態を前記中央パワーコントローラのメモリに記憶させる、請求項１に記載のプロセッサ。
【請求項１０】
前記プロセッサは、複数の機能ブロックを含み、前記メモリは前記複数の機能ブロックの全てのために状態情報を記憶する容量を含む、請求項９に記載のプロセッサ。
【請求項１１】
前記中央パワーコントローラは、前記第１低減パワーモードを開始するために１つ以上のパワー制御動作を実行し、前記１つ以上のパワー制御動作はパワーゲーティング、電圧低減、およびクロックレート低減を含む、請求項１に記載のプロセッサ。
【請求項１２】
プロセッサの第１機能ブロックに含まれるブロックパワーロジックにより、前記第１機能ブロックにおける第１低減パワーモードを要求する第１要求を受け取ることと、
前記第１要求に応答して、前記ブロックパワーロジックにより、通知信号を前記プロセッサの中央パワーコントローラに送ることと、
前記中央パワーコントローラにより、前記第１機能ブロックの第１状態を第１ストレージに記憶させることと、
前記第１機能ブロックにおいて前記第１低減パワーモードを開始することと、
を含む方法。
【請求項１３】
前記中央パワーコントローラにより、前記プロセッサの第２機能ブロックにおける第２低減パワーモードを要求する第２要求を受け取ることと、
前記第２要求に応答して、
前記中央パワーコントローラにより、前記第２機能ブロックの第２状態を前記第１ストレージに記憶させることと、
前記第２機能ブロックにおいて前記第２低減パワーモードを開始することと、
をさらに含む、請求項１２に記載の方法。
【請求項１４】
前記第２要求を受け取ることは、前記中央パワーコントローラに含まれる少なくとも１つのレジスタビットを用いることを含む、請求項１３に記載の方法。
【請求項１５】
前記記憶された第１状態に基づいて前記第１機能ブロックをリストアすることと、
前記第１機能ブロックにおいて通常パワーモードを開始することと、
をさらに含む、請求項１２に記載の方法。
【請求項１６】
前記第１低減パワーモードを開始することは、前記中央パワーコントローラにより、１つ以上のパワー制御動作を実行することを含む、請求項１２に記載の方法。
【請求項１７】
前記１つ以上のパワー制御動作は、前記第１機能ブロックへのパワーをゲーティングすることと、前記第１機能ブロックに供給される電圧を低減させることと、および前記第１機能ブロックのためのクロック周波数を低減させることと、のうちの少なくとも１つを含む、請求項１６に記載の方法。
【請求項１８】
前記第１要求を受け取ることは、前記ブロックパワーロジックに含まれる１つ以上のレジスタビットを用いることを含む、請求項１２に記載の方法。
【請求項１９】
デバイスドライバにより前記第１要求を送ることをさらに含む、請求項１２に記載の方法。
【請求項２０】
請求項１２から１９のいずれか１項に記載の方法を実行するように構成された通信デバイス。
【請求項２１】
コンピューティングデバイス上で実行され、前記コンピューティングデバイスに請求項１２から１９のいずれか１項に記載の方法を実行させる複数の命令を含むプログラム。
【請求項２２】
請求項１２から１９のいずれか１項に記載の方法を実行するように構成された、命令を処理するための装置。
【請求項２３】
請求項１２から１９のいずれか１項に記載の方法を実行するための手段を含む、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
実施態様は一般的に電子デバイスのパワー管理に関連する。
【背景技術】
【０００２】
従来、電子デバイスは１つ以上の低減パワーモードを含むことがあり、それは当該デバイスの少なくとも１つのコンポーネントが低減パワー状態に置かれる動作モードを意味する。低減パワーモードを用いれば、"覚醒"あるいは通常動作モードと比べて消費される電力の量を減らすことができる。このような低減パワーモードは、例えば、効率モード、スリープモード、スタンバイモード、ハイバネーションモード、サスペンドモード、"グリーン"モードなどを含み得る。
【図面の簡単な説明】
【０００３】
【図１】１つ以上の実施態様に従うブロック図である。
【０００４】
【図２Ａ】１つ以上の実施態様に従うブロック図である。
【図２Ｂ】１つ以上の実施態様に従うブロック図である。
【０００５】
【図３】１つ以上の実施態様に従うシーケンスである。
【０００６】
【図４】本発明の実施態様に従うプロセッサのブロック図である。
【０００７】
【図５】本発明の他の実施態様に従うマルチドメインプロセッサのブロック図である。
【０００８】
【図６】複数のコアを含むプロセッサの実施態様のブロック図である。
【０００９】
【図７】本発明の実施態様に従うシステムのブロック図である。
【発明を実施するための形態】
【００１０】
或る実施態様によれば、パワー管理アーキテクチャは種々のプラットフォームソフトウェア（例えば、オペレーティングシステム、デバイスドライバ、ファームウェアなど）とコンパチブルであり得る。１つ以上の実施態様において、パワー管理アーキテクチャは、複数の機能ブロックの各々に置かれているパワーロジック（"ブロックパワーロジック"）および当該機能ブロックの外側の中央パワーコントローラを含み得る。
【００１１】
或る実施態様では、中央パワーコントローラは、オペレーティングシステムから第１のタイプのモード要求（すなわち、１つ以上の機能ブロックにおいて低減パワーモードを開始する要求）を受け取り得る。あるいは、機能ブロックのためのブロックパワーロジックは、当該機能ブロックのためのデバイスドライバから第２のタイプのモード要求を受け取り得る。どちらのタイプのモード要求でも、中央パワーコントローラは、当該機能ブロックの状態を保存し、これにより当該機能ブロックが低減パワーモード終了時に前の状態にリストアされることを可能にし得る。従って、実施態様は、種々のタイプのプラットフォームソフトウェアが機能ブロックのパワー状態を管理することを可能にし得る。
【００１２】
下記の実施態様は、コンピューティングプラットフォームあるいはプロセッサなどの特定の集積回路におけるエネルギー保存およびエネルギー効率と関連して記述されるが、他の実施態様は他のタイプの集積回路およびロジックデバイスに応用可能である。本書に記載された実施態様の類似の技術及び教示は、より良いエネルギー効率およびエネルギー保存から同じく利益を受ける他のタイプの回路または半導体デバイスに応用され得る。例えば、開示された実施態様は、特定のタイプのコンピュータシステムに限定されず、ハンドヘルドデバイス、システムズオンチップ（ｓｙｓｔｅｍｓ  ｏｎ  ｃｈｉｐ（ＳｏＣｓ））、および埋め込みアプリケーションなどの他のデバイスにも使用され得る。ハンドヘルドデバイスの幾つかの例は、セルラ電話機、インターネットプロトコルデバイス、デジタルカメラ、パーソナルデジタルアシスタント（ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ（ＰＤＡ））、およびハンドヘルドＰＣを含む。埋め込みアプリケーションは、典型的には、マイクロコントローラ、デジタル信号プロセッサ（ｄｉｇｉｔａｌ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｏｒ（ＤＳＰ））、ネットワークコンピュータ（ＮｅｔＰＣ）、セットトップボックス、ネットワークハブ、ワイドエリアネットワーク（ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ（ＷＡＮ））スイッチ、あるいは以下で教示される機能および動作を実行できる任意の他のシステムを含む。
【００１３】
さらに、本書に記載された装置、方法、およびシステムは、物理的コンピューティングデバイスには限定されず、エネルギー保存および効率のためのソフトウェア最適化にも関連し得る。以下の記述で容易に明らかになるであろうが、本書に記載された方法、装置、およびシステムの実施態様（ハードウェア、ファームウェア、ソフトウェア、あるいはそれらの組み合わせと関連する）は、米国経済の大きな部分を含む製品におけるパワー保存およびエネルギー効率のためのものなど、'グリーン技術'の未来にとって極めて重要である。
【００１４】
図１を参照すると、１つ以上の実施態様に従うシステム１００のブロック図が示されている。或る実施態様では、システム１００は、電子デバイスまたはコンポーネントの全体または部分であり得る。例えば、システム１００は、セルラ電話機、コンピュータ、サーバ、ネットワークデバイス、プロセッサ、システムオンアチップ（ＳｏＣ）、コントローラ、無線トランシーバ、電源ユニットなどであり得る。さらに、或る実施態様では、システム１００は、データセンタ、コンピューティングクラスタ、ピアツーピア（Ｐ２Ｐ）ネットワーク、ローカルエリアネットワーク（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ（ＬＡＮ））、ワイドエリアネットワーク（ＷＡＮ）、無線アドホックネットワークなどの、関連付けられたあるいは相互接続されたデバイスの任意のグルーピングであり得る。
【００１５】
図１に示されているように、システム１００は、中央パワーコントローラ１１０、プラットフォームソフトウェア１５０、および／または任意の数の機能ブロック１２０Ａ−１２０Ｎを含み得る。システム１００がデバイスの全体または部分である実施態様においては、各機能ブロック１２０は、指定された機能（または複数の機能）を実行するように構成された１つ以上のブロックコンポーネント１２５を含む。例えば、機能ブロック１２０Ａ−１２０Ｎは、システムオンアチップ（ＳｏＣ）に含まれるＩＰ（ｉｎｔｅｌｌｅｃｔｕａｌ  ｐｒｏｐｅｒｔｙ）ブロック、コンピュータに含まれるハードウェアモジュール、プロセッサに含まれる処理コア、無線通信デバイスに含まれる無線インターフェースモジュールなどを表し得る。さらに、ブロックコンポーネント１２５は、ロジックユニット、メモリ／ストレージコンポーネント、インターフェースユニット、パワーコンポーネントなどを含み得る。
【００１６】
さらに、システム１００が複数のデバイスのグルーピングである実施態様においては、各機能ブロック１２０は、そのようなデバイスのうちの１つを表し得る。例えば、そのような実施態様においては、機能ブロック１２０Ａ−１２０Ｎは、データセンタに含まれるコンピュータ、コンピューティングクラスタに含まれるノード、エンクロージャに含まれるブレードサーバ、ストレージアレイに含まれるドライブなどを表し得る。
【００１７】
示されているように、１つ以上の実施態様において、各機能ブロック１２０はブロックパワーロジック１３０を含み得る。ブロックパワーロジック１３０は、機能ブロック１２０の１つ以上の低減パワーモードを制御あるいは管理する機能性を含む。或る実施態様では、機能ブロック１２０の各々の低減パワーモードは、"覚醒"あるいは通常動作モードと比べて、低減されたレベルの機能性および／またはパワー消費の特定の組み合わせに対応する。例えば、或る実施態様では、ブロックパワーロジック１３０は、比較的に低いレベルのパワー節約を有するが比較的に高いレベルの機能性を維持するか、あるいは完全な機能性をリストアするために比較的に短い時間を必要とし得る低減パワーモードを意味する"浅い"低減パワーモードを提供する。さらに、ブロックパワーロジック１３０は、比較的に高いレベルのパワー節約を有する（例えば、機能ブロックにパワーがほとんどあるいは全く提供されない）低減パワーモードを意味する"深い"低減パワーモードを提供することができる。或る実施態様では、ブロックパワーロジック１３０は、当該浅い低減パワーモードおよび当該深い低減パワーモードのレベルの間に機能性および／またはパワー節約のレベルを有する追加の低減パワーモードも提供する（例えば、"中間"モード、"中−浅"モード、"中−深"モード、など）。
【００１８】
１つ以上の実施態様において、ブロックパワーロジック１３０は、モード要求に応答して機能ブロック１２０において低減パワーモードを開始する機能性を含む。第１タイプのモード要求は、機能ブロック１２０と関連付けられたデバイスドライバによりブロックパワーロジック１３０に送られる信号でよい。このモード要求の受け取りに応答して、ブロックパワーロジック１３０は機能ブロック１２０のための状態情報を得ることができる。例えば、機能ブロック１２０がプロセッサコアである場合には、そのような状態情報は、レジスタ値、アキュムレータ値、キャッシュされたデータ、フラグセッティングなどを含む、コアの全エレメントの状態および／または内容を含み得る。さらに、ブロックパワーロジック１３０は、中央パワーコントローラ１１０により記憶されるべき状態情報を提供することができる。さらに、ブロックパワーロジック１３０は、当該モード要求に応答して機能ブロック１２０において低減パワーモードを開始することができる。
【００１９】
１つ以上の実施態様において、中央パワーコントローラ１１０は、機能ブロック１２０において１つ以上の低減パワーモードを開始および／または制御する機能性を含み得る。特に、或る実施態様では、中央パワーコントローラ１１０は、所与の機能ブロック１２０において低減パワーモードを開始する第２タイプのモード要求をオペレーティングシステムから受け取ることができる。このモード要求に応答して、中央パワーコントローラ１１０は、当該機能ブロック１２０のための状態情報を得て、その後に当該機能ブロック１２０において当該低減パワーモードを開始することができる。例えば、或る実施態様では、中央パワーコントローラ１１０は、ブロックパワーロジック１３０に当該機能ブロック１２０において当該低減パワーモードを開始するように命令することができる。他の例では、或る実施態様において、中央パワーコントローラ１１０は、当該機能ブロック１２０において当該低減パワーモードを開始する１つ以上のパワー制御動作を実行することができる。そのようなパワー制御動作は、例えば、機能ブロック１２０へのパワーをゲーティングすること、当該機能ブロック１２０に供給される電圧の低減、当該機能ブロック１２０のためのクロック周波数の変更（例えば、低減）、などを含み得る。
【００２０】
１つ以上の実施態様において、ブロックパワーロジック１３０は、自主的に（すなわち、外部のモード要求に応答してではなく）低減パワーモードを開始する機能性を含むこともできる。例えば、或る実施態様では、ブロックパワーロジック１３０は、機能ブロック１２０について無活動の期間を検出することができる（例えば、最後の１０マイクロ秒の間にネットワークおよび／またはバスの活動が無かった、最後の５０マイクロ秒の間にユーザインタラクションが無かった、など）。そして、ブロックパワーロジック１３０は、当該機能ブロック１２０がアイドルであり、従って潜在的に低減パワーモードに入るのが適切であることを中央パワーコントローラ１１０に通知することができる。或る実施態様では、中央パワーコントローラ１１０およびブロックパワーロジック１３０は、その後、当該機能ブロック１２０において当該低減パワーモードを開始する特定の時間（もしあるなら）を決定するためにインタラクトすることができる。この決定は、例えば、過去のデータ、使用パターン、システム可用性および／または応答性の要求レベル、ペリオディックタイマ（ｐｅｒｉｏｄｉｃ  ｔｉｍｅｒｓ）、バッテリレベル、などに基づくことができる。
【００２１】
ここで図２Ａを参照すると、１つ以上の実施態様に従うダイアグラム２００が示されている。より具体的には、ダイアグラム２００は、図１に示されているシステム１００の実施例に一般的に対応し得る。
【００２２】
示されているように、或る実施態様では、プラットフォームソフトウェア１５０は、オペレーティングシステム（ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ（ＯＳ））カーネル１５２、ＯＳドライバ１５４、デバイスドライバ１５６、および／またはプラットフォームファームウェア１５８を含み得る。或る実施態様では、プラットフォームファームウェア１５８は、アドバンスドコンフィグレーションアンドパワーインターフェース（Ａｄｖａｎｃｅｄ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  Ｐｏｗｅｒ  Ｉｎｔｅｒｆａｃｅ  （ＡＣＰＩ））規格（例えば、２００６年１０月１０日に公表された改訂版３．０ｂ）を実施し得る。
【００２３】
１つ以上の実施態様において、機能ブロック１２０のブロックパワーロジック１３０は１つ以上のブロックパワーロジック（ｂｌｏｃｋ  ｐｏｗｅｒ  ｌｏｇｉｃ（ＢＰＬ））レジスタ１３５を含み得る。１つ以上の実施態様において、ＢＰＬレジスタ１３５は、機能ブロック１２０と関連付けられているデバイスドライバ１５６から受け取られたモード要求に応答してセットされ得る。例えば、さまざまなＢＰＬレジスタ１３５が、種々のパワーモードおよび／またはレベルを求める要求を示すようにセットされ得る。ブロックパワーロジック１３０は、その後、ＢＰＬレジスタ１３５がセットされると機能ブロック１２０内で対応するパワーモードを開始し得る。さらに、或る実施態様では、ブロックパワーロジック１３０は、さらに、当該機能ブロック１２０が特定のパワーモードに入っていることを中央パワーコントローラ１１０に通知するために通知信号を送る。
【００２４】
１つ以上の実施態様において、中央パワーコントローラ１１０は、１つ以上の中央パワーコントローラ（ｃｅｎｔｒａｌ  ｐｏｗｅｒ  ｃｏｎｔｒｏｌｌｅｒ（ＣＰＣ））レジスタ１１５およびメモリ１１２を含み得る。１つ以上の実施態様において、ＣＰＣレジスタ１１５は、ＯＳカーネル１５２から受け取られたモード要求に応答してセットされ得る。例えば、様々なＣＰＣレジスタ１１５が、種々のパワーモードおよび／またはレベルを求める要求を示すようにセットされ得る。或る実施態様では、モード要求は、ＯＳカーネル１５２からＯＳドライバ１５４のうちの１つ以上（例えば、バスドライバ）を介してＣＰＣレジスタ１１５に送られ得る。さらに、或る実施態様では、ＣＰＣレジスタ１１５は、ブロックパワーロジック１３０から受け取られた通知信号（例えば、ＢＰＬレジスタ１３５がセットされた後にブロックパワーロジック１３０により送られる通知信号）に応答してセットされることもできる。中央パワーコントローラ１１０は、対応するＣＰＣレジスタ（１つまたは複数）１１５がセットされたことに応答して特定のパワーモードを開始することができる。
【００２５】
或る実施態様では、メモリ１１２は、システム１００に含まれている機能ブロック１２０Ａ−１２０Ｎの全てのための状態情報を同時に記憶する記憶容量を含み得る。例えば、図２Ａに示されているように、メモリ１１２は中央パワーコントローラ１１０に含まれているスタティックランダムアクセスメモリ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ−Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＳＲＡＭ））であり得る。あるいは、他の実施態様では、メモリ１１２は、任意のタイプのストレージデバイスであってよく、これに代えて、またはこれに加えて、任意の他のコンポーネントに含まれてもよい。例えば、或る実施態様では（示されていない）、メモリ１１２は、機能ブロック１２０に含まれているが中央パワーコントローラ１１０の外側にあるＳＲＡＭであってよく、機能ブロック１２０の外側のダイナミックランダムアクセスメモリ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ−Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＤＲＡＭ））であってもよい。
【００２６】
１つ以上の実施態様において、中央パワーコントローラ１１０は、機能ブロック１２０を通常動作モードまたはパワー状態に戻すことの一部として当該機能ブロック１２０の状態をリストアする機能性を含み得る。或る実施態様では、中央パワーコントローラ１１０は、メモリ１１２に記憶されている状態情報を用いて機能ブロック１２０の状態をリストアすることができる。
【００２７】
ここで、中央パワーコントローラ１１０およびブロックパワーロジック１３０は、ＡＣＰＩ規格などの、プラットフォームファームウェア１５８のパワー管理面に依存しないことおよび／またはそれと相補的であり得るということに留意されたい。ＡＣＰＩによれば、プロセッサは種々の性能状態またはレベル、すなわちＰ０からＰＮまで、で動作することができる。一般的に、Ｐ１性能状態は、ＯＳにより要求され得る最高の保証された性能状態に対応し得る。このＰ１状態に加えて、ＯＳはさらに、より高い性能状態、すなわちＰ０状態、を要求することができる。従って、このＰ０状態は、パワーおよび／または熱バジェットが利用可能である場合に、プロセッサハードウェアが当該プロセッサまたは少なくともその部分を保証された周波数より高い周波数で動作するように構成することのできる適時的な状態であり得る。多くの実現形態において、プロセッサは、Ｐ１周波数とも称される、保証された最大周波数より高い複数のいわゆるビン周波数（ｂｉｎ  ｆｒｅｑｕｅｎｃｉｅｓ）を含むことができる。さらにＡＣＰＩによれば、プロセッサは種々のパワー状態またはレベルで動作することができる。パワー状態に関して、ＡＣＰＩは、一般的にＣ状態、Ｃ０、Ｃ１ないしＣｎ状態と称される様々なパワー消費状態を定めている。コアは、コアがアクティブである場合に、Ｃ０状態で動作し、コアがアイドルである場合に、コア非ゼロＣ状態（例えば、Ｃ１−Ｃ６状態）とも称されるコア低パワー状態に置かれることができ、各Ｃ状態はより低いパワー消費レベルにある（Ｃ６はＣ１より深い低パワー状態であるなど）。
【００２８】
ここで図２Ｂを参照すると、１つ以上の実施態様に従うダイアグラム２５０が示されている。より具体的には、ダイアグラム２５０は、図１に示されているシステム１００の他の実施例に一般的に対応し得る。
【００２９】
１つ以上の実施態様において、中央パワーコントローラ１１０はＯＳカーネル１５２からモード要求を受け取ることができる。応答して、中央パワーコントローラ１１０は、ブロックパワーロジック１３０と通信して低減パワーモードを開始することができる。ブロックパワーロジック１３０は、その後、機能ブロック１２０において低減パワーモードを開始することができる。さらに、ブロックパワーロジック１３０は、ファブリック２６０を用いて他のコンポーネント（図示されていない）に通知することができる。
【００３０】
或る実施態様では、中央パワーコントローラ１１０は、１つ以上のパワーゲーティングコンポーネント２７０とインタラクトして機能ブロック１２０への給電をゲーティングすることができる。例えば、一実施態様では、パワーゲーティングコンポーネント２７０は、機能ブロック１２０に供給される電圧（例えば、Ｖｎｎ）を低減あるいはゲーティングするために電界効果トランジスタ（ＦＥＴ）を含み得る。
【００３１】
ここで図３を参照すると、１つ以上の実施態様に従う、低減パワーモードを管理するためのシーケンス３００が示されている。１つ以上の実施態様において、シーケンス３００は、図１に示されている中央パワーコントローラ１１０および／またはブロックパワーロジック１３０の部分であり得る。シーケンス３００は、ハードウェア、ソフトウェア、および／またはファームウェアで実現され得る。ファームウェアおよびソフトウェア実施態様においては、それは、光、半導体、または磁気ストレージデバイスなどの、非一時的コンピュータ可読媒体に記憶されているコンピュータ実行命令により実現され得る。
【００３２】
ステップ３１０で、機能ブロックにおいて低減パワーモードを開始するモード要求が、当該機能ブロックに含まれるブロックパワーロジックにより受け取られ得る。例えば、図１および２Ａを参照すると、機能ブロック１２０に含まれるブロックパワーロジック１３０はデバイスドライバ１５６からモード要求を受け取ることができる。或る実施態様では、デバイスドライバ１５６は機能ブロック１２０と（あるいは機能ブロック１２０に含まれる１つ以上のブロックコンポーネント１２５と）関連付けられる。モード要求は、機能ブロック１２０のパワー消費と関連付けられた１つ以上の特性（例えば、アイドル時間、負荷レベル、スレショルド、定義された状態、など）に基づいて生成された信号であり得る。さらに、或る実施態様では、モード要求を受け取ることは、ＢＰＬレジスタ１３５をセットすることを含み得る。
【００３３】
ステップ３１５で、ブロックパワーロジックは、当該ブロックパワーロジックにより受け取られたモード要求を中央パワーコントローラに通知する通知信号を送ることができる。例えば、図１および２Ａを参照すると、機能ブロック１２０のブロックパワーロジック１３０は通知信号を中央パワーコントローラ１１０に送ることができる。
【００３４】
ステップ３２０で、（ステップ３１５で）ブロックパワーロジックにより送られた通知信号は中央パワーコントローラにより受け取られ得る。あるいは、ステップ３２０で、モード要求が中央パワーコントローラにより受け取られ得る。例えば、図１および２Ａを参照すると、中央パワーコントローラ１１０は、ブロックパワーロジック１３０から通知信号を受け取ることができる。１つ以上の実施態様において、当該通知信号を受け取ることはＣＰＣレジスタ１１５をセットすることを含み得る。あるいは、中央パワーコントローラ１１０はＯＳカーネル１５２からモード要求を受け取ることができる。或る実施態様では、当該モード要求は、ＯＳドライバ１５４（例えば、バスドライバ）を用いてＯＳカーネル１５２から中央パワーコントローラ１１０に送られることができる。さらに、或る実施態様では、ＯＳカーネル１５２は、１つ以上の機能ブロック１２０および／または全体としてのシステム１００のパワー消費と関連付けられた１つ以上の特性に基づいて当該モード要求を生成することができる。１つ以上の実施態様において、中央パワーコントローラ１１０により当該モード要求を受け取ることはＣＰＣレジスタ１１５をセットすることを含み得る。
【００３５】
ステップ３３０で、機能ブロックのための状態情報が記憶され得る。例えば、図１および２Ａを参照すると、中央パワーコントローラ１１０は、機能ブロック１２０のための状態情報を得ることができ、当該状態情報をメモリ１１２に記憶させることができる。或る実施態様では、当該状態情報は、中央パワーコントローラ１１０に含まれるＳＲＡＭ、機能ブロック１２０に含まれるが中央パワーコントローラ１１０の外側にあるＳＲＡＭ、機能ブロック１２０の外側にあるＤＲＡＭなどに記憶され得る。
【００３６】
ステップ３４０で、要求された低減パワーモードが当該機能ブロックにおいて開始され得る。例えば、図１および２Ａを参照すると、ブロックパワーロジック１３０は、機能ブロック１２０と関連付けられているデバイスドライバによるモード要求に応答して、当該ブロックパワーロジックの機能ブロック１２０において低減パワーモードを開始することができる。他の１つの例では、オペレーティングシステムによるモード要求に応答して、中央パワーコントローラ１１０は当該機能ブロック１２０において低減パワーモードを開始するために１つ以上のパワー制御動作を実行することができる。別の１つの例では、中央パワーコントローラ１１０は、当該機能ブロック１２０において低減パワーモードを開始するようにブロックパワーロジック１３０に命令することができる。
【００３７】
ステップ３５０で、（ステップ３４０で開始された）低減パワーモードから出るか否かの決定が行われる。例えば、図１および２Ａを参照すると、ブロックパワーロジック１３０および／または中央パワーコントローラ１１０は、低減パワーモードから出るか否かを決定するために機能ブロック１２０および／またはシステム１００の動作状態を評価することができる。
【００３８】
ステップ３５０において低減パワーモードから出ないと決定されれば、シーケンス３００はステップ３５０に戻って、低減パワーモードから出るか否かを決定し続けることができる。しかし、ステップ３５０で低減パワーモードから出ると決定されれば、次にステップ３６０で、当該機能ブロックは（ステップ３３０で記憶された）状態情報に基づいてリストアされ得る。例えば、図１および２Ａを参照すると、中央パワーコントローラ１１０および／またはブロックパワーロジック１３０は、機能ブロック１２０を、当該低減パワーモードに入る前の当該機能ブロックの状態にリストアすることができる。当該機能ブロック１２０の当該リストアは、メモリ１１２に記憶されている状態情報に基づくことができる。
【００３９】
ステップ３７０で、通常パワーモードが当該機能ブロックにおいて開始され得る。例えば、図１および２Ａを参照すると、ブロックパワーロジック１３０は、当該機能ブロック１２０において通常パワーモードを開始することができる。他の１つの例では、中央パワーコントローラ１１０は、当該機能ブロック１２０において通常パワーモードを開始するために１つ以上のパワー制御動作を実行することができる。ステップ３７０の後、シーケンス３００は終了する。
【００４０】
図１、２Ａ、２Ｂ、および３に示されている例は、説明のために提供されていて、実施態様を限定するように意図されていないということに留意されたい。例えば、明瞭性を得るために実施態様が簡単化された形で示される場合もあるが、実施態様は任意の数および／または配置のプロセッサ、コア、および／または追加のコンポーネント（例えば、バス、ストレージ媒体、コネクタ、パワーコンポーネント、バッファ、インターフェース、など）を含み得る。特に、実施態様は図示されているもの以外の任意の数のブロック、コンポーネント、またはコントローラを含み得るということ、および、一定の実現形態では図示されているコンポーネントの異なる配置が生じ得るということ、が熟慮されている。さらに、図１、２Ａ、２Ｂ、および３に示されている例における詳細は１つ以上の実施態様のどこでも使用され得るということが熟慮されている。
【００４１】
ここで図４を参照すると、本発明の実施態様に従うプロセッサのブロック図が示されている。図４に示されているように、プロセッサ４００は、コアドメインの複数のコア４１０ａ−４１０ｎを有する第１ダイ４０５を含むマルチコアプロセッサであり得る。種々のコア４１０ａ−４１０ｎは、相互接続４１５を介して、種々のコンポーネントを含むシステムエージェントまたは無コアドメイン４２０に結合され得る。分かるように、無コアドメイン４２０は、最終レベルキャッシュであり得る共有キャッシュ４３０を含み得る。さらに、当該無コアドメイン４２０は統合メモリコントローラ４４０、パワー制御ユニット（ｐｏｗｅｒ  ｃｏｎｔｒｏｌ  ｕｎｉｔ（ＰＣＵ））４７０、および種々のインターフェース４５０を含み得る。
【００４２】
図４では説明を容易にするために示されていないが、或る実施態様では、コア４１０ａ−４１０ｎの各々は、図１に示されている中央パワーコントローラ１１０および／またはブロックパワーロジック１３０を含み得る。あるいは、或る実施態様では、中央パワーコントローラ１１０はＰＣＵ４７０に含まれ得、コア４１０ａ−４１０ｎの各々はブロックパワーロジック１３０を含み得る。
【００４３】
さらに図４を参照すると、プロセッサ４００は、例えばメモリバスを介して、システムメモリ４６０と通信することができる。さらに、インターフェース４５０により、周辺デバイス、大容量記憶装置などの種々のパッケージ外コンポーネントへの接続を行うことができる。図４の実施態様においてはこの特定の実現形態と共に示されているが、本発明の範囲は、この点では限定されない。
【００４４】
ここで図５を参照すると、本発明の他の実施態様に従うマルチドメインプロセッサのブロック図が示されている。図５の実施態様において示されているように、プロセッサ５００は複数のドメインを含む。具体的には、コアドメイン５１０は複数のコア５１０ａ−５１０ｎを含むことができ、グラフィクスドメイン５２０は１つ以上のグラフィクスエンジンを含むことができ、システムエージェントドメイン５５０がさらに存在し得る。図５において説明を容易にするために示されていないが、或る実施態様では、コア５１０ａ−５１０ｎの各々は、図１に関連して上で記述されたブロックパワーロジック１３０を含むことができる。３つのドメインと共に示されているだけであるが、本発明の範囲はこの点では限定されず、他の実施態様では追加のドメインが存在し得ることを理解されたいことに留意されたい。例えば、少なくとも１つのコアをそれぞれ含む複数のコアドメインが存在し得る。
【００４５】
一般的に、各コア５１０は、種々の実行ユニットおよび追加の処理エレメントの他に低レベルキャッシュをさらに含み得る。次に、種々のコアは、互いに、さらに最終レベルキャッシュ（ｌａｓｔ  ｌｅｖｅｌ  ｃａｃｈｅ（ＬＬＣ））５４０ａ−５４０ｎの複数のユニットから形成される共有キャッシュメモリに、結合され得る。種々の実施態様において、ＬＬＣ５４０は、コアおよびグラフィクスエンジン間で、さらに種々の媒体処理回路間で、共有され得る。従って、見られるように、リング相互接続５３０は、コア同士を結合させ、コア、グラフィクスドメイン５２０およびシステムエージェントドメイン５５０間に相互接続を提供する。図５の実施態様では、システムエージェントドメイン５５０は、関連付けられているディスプレイの制御および当該ディスプレイへのインターフェースを提供し得るディスプレイコントローラ５５２を含み得る。さらに見られるように、システムエージェントドメイン５５０は、ＣＰＵおよび非ＣＰＵドメインにパワーを割り当てるためのパワー制御ユニット５５５をも含み得る。或る実施態様では、パワー制御ユニット５５５は、図１と関連して上で記述された中央パワーコントローラ１１０および／またはブロックパワーロジック１３０の機能性の一部または全てを含み得る。
【００４６】
図５においてさらに見られるように、プロセッサ５００は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）などのシステムメモリへのインターフェースを提供し得る統合メモリコントローラ（ｉｎｔｅｇｒａｔｅｄ  ｍｅｍｏｒｙ  ｃｏｎｔｒｏｌｌｅｒ（ＩＭＣ））５７０をさらに含むことができる。プロセッサおよび他の回路間の相互接続を可能にするために複数のインターフェース５８０ａ−５８０ｎが存在し得る。例えば、一実施態様では、少なくとも１つのダイレクトメディアインターフェース（ｄｉｒｅｃｔ  ｍｅｄｉａ  ｉｎｔｅｒｆａｃｅ（ＤＭＩ））インターフェースが、１つ以上のペリフェラルコンポーネントインターコネクトエクスプレス（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩ  Ｅｘｐｒｅｓｓ（商標）（ＰＣＩｅ（商標）））インターフェースと同様に設けられ得る。なおさらに、追加のプロセッサまたは他の回路などの他のエージェント間の通信を提供するために、Ｉｎｔｅｌ（登録商標）Ｑｕｉｃｋ  Ｐａｔｈ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＱＰＩ）プロトコルに従う１つ以上のインターフェースも設けられ得る。さらに見られるように、周辺コントローラハブ（ｐｅｒｉｐｈｅｒａｌ  ｃｏｎｔｒｏｌｌｅｒ  ｈｕｂ（ＰＣＨ））５９０もプロセッサ５００内に存在し得、或る実施態様では別のダイ上に実装されることができる。あるいは、或る実施態様では、ＰＣＨ５９０はプロセッサ５００の外側に存在し得る。図５の実施態様においてこの高レベルで示されているが、本発明の範囲はこの点では限定されないことを理解されたい。
【００４７】
図６を参照すると、複数のコアを含むプロセッサの実施態様が示されている。プロセッサ１１００は、マイクロプロセッサ、埋め込みプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、ネットワークプロセッサ、ハンドヘルドプロセッサ、アプリケーションプロセッサ、コプロセッサ、システムオンアチップ（ＳＯＣ）、あるいはコードを実行する他のデバイスなど、任意のプロセッサまたは処理デバイスを含む。プロセッサ１１００は、一実施態様では、非対称的コアまたは対称的コア（図示されている実施態様）を含み得る少なくとも２つのコア、すなわちコア１１０１および１１０２、を含む。しかし、プロセッサ１１００は、対称的または非対称的であり得る任意の数の処理エレメントを含み得る。図６において説明を容易にするために示されていないが、或る実施態様では、コア１１０１および１１０２の各々は、図１と関連して上で記述された中央パワーコントローラ１１０および／またはブロックパワーロジック１３０を含むことができる。
【００４８】
一実施態様では、処理エレメントは、ソフトウェアスレッドをサポートするハードウェアまたはロジックを指す。ハードウェア処理エレメントの例は、スレッドユニット、スレッドスロット、スレッド、プロセスユニット、コンテクスト、コンテクストユニット、論理プロセッサ、ハードウェアスレッド、コア、および／または実行状態またはアーキテクチャ状態などのプロセッサのための状態を保持することのできる任意の他のエレメントを含む。換言すれば、処理エレメントは、一実施態様では、ソフトウェアスレッド、オペレーティングシステム、アプリケーション、または他のコードなどのコードと独立に関連付けられることのできる任意のハードウェアを指す。物理的プロセッサは、典型的には、コアまたはハードウェアスレッドなどの任意の数の他の処理エレメントを潜在的に含む集積回路を指す。
【００４９】
コアは、しばしば、独立のアーキテクチャ状態を維持することのできる集積回路上に置かれたロジックを指し、各々の独立に維持されるアーキテクチャ状態は少なくとも幾つかの専用実行リソースと関連付けられる。コアとは対照的に、ハードウェアスレッドは、典型的には、独立のアーキテクチャ状態を維持することのできる集積回路上に置かれた任意のロジックを指し、それらの独立に維持されるアーキテクチャ状態は実行リソースへのアクセスを共有する。分かるように、一定のリソースが共有され他が１つのアーキテクチャ状態に専用される場合、ハードウェアスレッドおよびコアの用語の間の線は重なり合う。しばしば、コアおよびハードウェアスレッドはオペレーティングシステムにより個々の論理プロセッサと見なされ、当該オペレーティングシステムは各論理プロセッサでの操作を個別にスケジュールすることができる。
【００５０】
物理的プロセッサ１１００は、図６に示されているように、２つのコア、すなわちコア１１０１および１１０２、を含む。ここで、コア１１０１および１１０２は対称的コア、すなわち同じ構成、機能ユニット、および／またはロジックを有するコア、と考えられる。他の１つの実施態様では、コア１１０１はアウトオブオーダプロセッサコアを含み、コア１１０２はインオーダプロセッサコアを含む。しかし、コア１１０１および１１０２は、ネイティブコア、ソフトウェア管理コア、ネイティブ命令セットアーキテクチャ（ｉｎｓｔｒｕｃｔｉｏｎ  ｓｅｔ  ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＳＡ））を実行するように適合させられているコア、変換されたＩＳＡを実行するように適合させられているコア、コデザインされたコア、あるいは他の既知のコアなど、任意のタイプのコアから個別に選択され得る。さらに議論を進めるために、コア１１０２内のユニットは同様の仕方で動作するので、コア１１０１内に示されている機能ユニットが以下でさらに詳しく記述される。
【００５１】
示されているように、コア１１０１は２つのハードウェアスレッド１１０１ａおよび１１０１ｂを含み、これらはハードウェアスレッドスロット１１０１ａおよび１１０１ｂとも称され得る。従って、オペレーティングシステムなどのソフトウェアエンティティは、潜在的に、プロセッサ１１００を４つの別々のプロセッサ、すなわち４つのソフトウェアスレッドを同時に実行することのできる４つの論理プロセッサまたは処理エレメント、と見なす。上で言及されたように、第１スレッドはアーキテクチャ状態レジスタ１１０１ａと関連付けられ、第２スレッドはアーキテクチャ状態レジスタ１１０１ｂと関連付けられ、第３スレッドはアーキテクチャ状態レジスタ１１０２ａと関連付けられ得、第４スレッドはアーキテクチャ状態レジスタ１１０２ｂと関連付けられ得る。ここで、上記のように、アーキテクチャ状態レジスタ（１１０１ａ、１１０１ｂ、１１０２ａ、および１１０２ｂ）の各々は処理エレメント、スレッドスロット、あるいはスレッドユニットと称され得る。
【００５２】
図示されているように、アーキテクチャ状態レジスタ１１０１ａはアーキテクチャ状態レジスタ１１０１ｂにおいて複製されているので、個々のアーキテクチャ状態／コンテクストが論理プロセッサ１１０１ａおよび論理プロセッサ１１０１ｂのために記憶されることができる。コア１１０１において、アロケータおよび名前変更ブロック１１３０内の命令ポインタおよび名前変更ロジックなどの、他のより小さなリソースもスレッド１１０１ａおよび１１０１ｂのために複製され得る。リオーダ／リタイアメントユニット１１３５内のリオーダバッファ、ＩＬＴＢ１１２０、ロード／ストアバッファ、およびキューなどの、幾つかのリソースはパーティショニングを通して共有され得る。汎用内部レジスタ、ページ−テーブルベースレジスタ（１つまたは複数）、低レベルデータキャッシュおよびデータ−ＴＬＢ１１１５、実行ユニット（１つまたは複数）１１４０、およびアウトオブオーダユニット１１３５の部分などの他のリソースは潜在的に完全に共有される。
【００５３】
プロセッサ１１００はしばしば他のリソースを含み、それらは処理エレメントにより／処理エレメントに対して完全に共有され得、パーティショニングを通して共有され得、あるいは専用され得る。図６において、例としてのプロセッサの論理ユニット／リソースを有する純粋に代表的なプロセッサの実施態様が示されている。プロセッサは、これらの機能ユニットのいずれをも含み、あるいは省略することができるとともに、描かれていない他の任意の既知の機能ユニット、ロジック、またはファームウェアを含むことができるということに留意されたい。示されているように、コア１１０１は、簡単化された、代表的なアウトオブオーダ（ｏｕｔ−ｏｆ−ｏｒｄｅｒ（ＯＯＯ））プロセッサコアを含む。しかし、異なる実施態様ではインオーダプロセッサが利用され得る。当該ＯＯＯコアは、実行され／取られるべきブランチを予測するためのブランチターゲットバッファ１１２０、および、命令のためのアドレス変換エントリを記憶するための命令変換バッファ（ｉｎｓｔｒｕｃｔｉｏｎ−ｔｒａｎｓｌａｔｉｏｎ  ｂｕｆｆｅｒ（Ｉ−ＴＬＢ）１１２０を含む。
【００５４】
コア１１０１は、フェッチされたエレメントをデコードするためにフェッチユニット１１２０に結合されたデコードモジュール１１２５をさらに含む。フェッチロジックは、一実施態様では、スレッドスロット１１０１ａ、１１０１ｂ、とそれぞれ関連付けられた個々のシーケンサを含む。通常、コア１１０１は第１ＩＳＡと関連付けられ、これはプロセッサ１１００上で実行可能な命令を定義／指定する。しばしば、第１ＩＳＡの部分であるマシンコード命令は命令の部分（オペコードと称される）を含み、これは、実行されるべき命令または操作を参照／指定する。デコードロジック１１２５は、これらの命令を当該命令のオペコードから認識して、デコードされた命令を、第１ＩＳＡにより定められている通りに処理するためのパイプラインへ送る回路を含む。デコーダ１１２５による認識の結果として、アーキテクチャあるいはコア１１０１は、適切な命令と関連付けられているタスクを実行するための特定の、予め定められている動作（例えば、図３に示されている動作のうちの１つ以上）を行う。本書に記載されているタスク、ブロック、操作、および方法のいずれもが単一のあるいは複数の命令に応答して実行され得ること；それらのうちの幾つかは新しい命令あるいは古い命令であり得ること、に留意することは重要である。
【００５５】
一例において、アロケータおよび名前変更ブロック１１３０は、命令処理結果を記憶するためのレジスタファイルなどのリソースを確保するためのアロケータを含む。しかし、スレッド１１０１ａおよび１１０１ｂは潜在的にアウトオブオーダ実行を行うことができ、アロケータおよび名前変更ブロック１１３０は、命令結果を追跡するためのリオーダバッファなどの他のリソースも確保する。ユニット１１３０は、プログラム／命令参照レジスタをプロセッサ１１００内の他のレジスタへ名前変更するためのレジスタリネーマも含み得る。リオーダ／リタイアメントユニット１１３５は、アウトオブオーダ実行をサポートするとともに、アウトオブオーダ実行された命令のインオーダリタイアメントを後でサポートするために、上で言及されたリオーダバッファ、ロードバッファ、およびストアバッファなどのコンポーネントを含む。
【００５６】
スケジューラおよび実行ユニット（１つまたは複数）ブロック１１４０は、一実施態様では、実行ユニットでの命令／操作をスケジュールするためのスケジューラユニットを含む。例えば、浮動小数点命令は、利用可能な浮動小数点実行ユニットを有する実行ユニットのポートでスケジュールされる。当該実行ユニットと関連付けられているレジスタファイルも、情報命令処理結果を記憶するために含まれる。代表的な実行ユニットは、浮動小数点実行ユニット、整数実行ユニット、ジャンプ実行ユニット、ロード実行ユニット、ストア実行ユニット、および他の既知の実行ユニットを含む。
【００５７】
より低いレベルのデータキャッシュおよびデータ変換バッファ（ｄａｔａ  ｔｒａｎｓｌａｔｉｏｎ  ｂｕｆｆｅｒ（Ｄ−ＴＬＢ））１１５０は、実行ユニット（１つまたは複数）１１４０に結合されている。当該データキャッシュは、データオペランドなどの最近使用／操作されたエレメントを記憶するものであり、それらは潜在的にメモリコヒーレンシー状態に保持される。Ｄ−ＴＬＢは最近の仮想／線形から物理アドレスへの変換を記憶するものである。特定の例として、プロセッサは、物理的メモリを複数の仮想ページに分割するためのページテーブル構造を含み得る。
【００５８】
ここで、コア１１０１および１１０２は、より高いレベルのあるいはより外側のキャッシュ１１１０へのアクセスを共有し、それは最近フェッチされたエレメントをキャッシュする。より高いレベルのあるいはより外側のという用語は、キャッシュレベルが実行ユニット（１つまたは複数）からますますあるいはさらに遠くなることを指すということに留意されたい。一実施態様では、より高いレベルのキャッシュ１１１０は、第２または第３レベルのデータキャッシュなどの、最終レベルのデータキャッシュ、すなわちプロセッサ１１００上のメモリハイアラーキにおける最終キャッシュ、である。しかしながら、より高いレベルのキャッシュ１１１０は、命令キャッシュと関連付けられてよく、これに代えて、命令キャッシュを含んでもよいので、そのようには限定されない。代わりに、１つのタイプの命令キャッシュであるトレースキャッシュが、最近デコードされたトレースを記憶するためにデコーダ１１２５の後に結合され得る。
【００５９】
描かれている構成では、プロセッサ１１００はバスインターフェースモジュール１１０５およびパワーコントローラ１１６０も含み、これは本発明の実施態様に従ってパワー共有制御を実行することができる。或る実施態様では、パワーコントローラ１１６０は、図１と関連して上で記述された中央パワーコントローラ１１０および／またはブロックパワーロジック１３０の機能性の部分または全部を含み得る。
【００６０】
歴史的に、コントローラ１１７０はプロセッサ１１００の外側でコンピューティングシステムに含まれてきている。このシナリオでは、バスインターフェース１１０５は、システムメモリ１１７５、チップセット（しばしば、メモリ１１７５に接続するメモリコントローラハブと周辺デバイスを接続するＩ／Ｏコントローラハブとを含む）、メモリコントローラハブ、ノースブリッジ、あるいは他の集積回路など、プロセッサ１１００の外側のデバイスと通信する。さらにこのシナリオでは、バス１１０５は、マルチドロップバス、ポイントツーポイント相互接続、シリアル相互接続、パラレルバス、コヒーレント（例えば、キャッシュコヒーレント）バス、層状プロトコルアーキテクチャ、差動バス、およびＧＴＬバスなど、任意の既知の相互接続を含み得る。
【００６１】
メモリ１１７５は、プロセッサ１１００に専用され、あるいはシステム内の他のデバイスと共有され得る。メモリ１１７５のタイプのありふれた例は、ＤＲＡＭ、ＳＲＡＭ、不揮発性メモリ（ＮＶメモリ）、および他の既知のストレージデバイスを含む。デバイス１１８０はグラフィックアクセラレータ、メモリコントローラハブに結合されたプロセッサもしくはカード、Ｉ／Ｏコントローラハブに結合されたデータストレージ、無線トランシーバ、フラッシュデバイス、オーディオコントローラ、ネットワークコントローラ、または他の既知のデバイスを含み得るということに留意されたい。
【００６２】
しかし、描かれている実施態様ではコントローラ１１７０はプロセッサ１１００の一部として示されていることに留意されたい。近頃、ＳＯＣなど、より多くのロジックおよびデバイスが単一のダイ上に集積されつつあるので、これらのデバイスの各々はプロセッサ１１００に組み込まれ得る。例えば一実施態様では、メモリコントローラハブ１１７０はプロセッサ１１００と同じパッケージおよび／またはダイ上にある。ここで、当該コアの一部分（オンコア部分）は、メモリ１１７５またはグラフィクスデバイス１１８０などの他のデバイスとインターフェースするために１つ以上のコントローラ１１７０を含む。そのようなデバイスとインターフェースするための相互接続およびコントローラを含む構成は、しばしばオンコア（あるいは無コア構成）と称される。一例として、バスインターフェース１１０５は、メモリ１１７５とインターフェースするためのメモリコントローラおよびグラフィクスプロセッサ１１８０とインターフェースするためのグラフィクスコントローラとのリング相互接続を含む。さらに、ＳＯＣ環境では、高機能性及び低パワー消費と共に小フォームファクタを提供するために、もっと多くのデバイス、例えばネットワークインターフェース、コプロセッサ、メモリ１１７５、グラフィクスプロセッサ１１８０、および他の任意の既知のコンピュータデバイス／インターフェースなど、が単一のダイまたは集積回路に集積され得る。
【００６３】
実施態様は多くの様々なシステムタイプにおいて実施され得る。ここで図７を参照すると、本発明の実施態様に従うシステムのブロック図が示されている。図７に示されているように、マルチプロセッサシステム６００は、ポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続６５０を介して結合された第１プロセッサ６７０および第２プロセッサ６８０を含む。図７に示されているように、プロセッサ６７０および６８０の各々は、第１および第２のプロセッサコア（すなわち、プロセッサコア６７４ａおよび６７４ｂならびにプロセッサコア６８４ａおよび６８４ｂ）を含むマルチコアプロセッサであってよく、また、潜在的にはもっと多くのコアが当該プロセッサ内に存在し得る。これらのプロセッサの各々は、図１と関連して上で記述された中央パワーコントローラ１１０および／またはブロックパワーロジック１３０の任意の部分を含むことができる。
【００６４】
なお図７を参照すると、第１プロセッサ６７０は、メモリコントローラハブ（ｍｅｍｏｒｙ  ｃｏｎｔｒｏｌｌｅｒ  ｈｕｂ（ＭＣＨ））６７２ならびにポイントツーポイント（ｐｏｉｎｔ−ｔｏ−ｐｏｉｎｔ（Ｐ−Ｐ））インターフェース６７６および６７８をさらに含む。同様に、第２プロセッサ６８０はＭＣＨ６８２ならびにＰ−Ｐインターフェース６８６および６８８を含む。図７に示されているように、ＭＣＨ６７２および６８２は当該プロセッサをそれぞれのメモリ、すなわちメモリ６３２およびメモリ６３４、に結合させ、これらはそれぞれのプロセッサに局所的に取り付けられたシステムメモリ（例えば、ＤＲＡＭ）の部分であり得る。第１プロセッサ６７０および第２プロセッサ６８０は、それぞれＰ−Ｐ相互接続６５２および６５４を介してチップセット６９０に結合され得る。図７に示されているように、チップセット６９０はＰ−Ｐインターフェース６９４および６９８を含む。
【００６５】
さらに、チップセット６９０は、チップセット６９０をＰ−Ｐ相互接続６３９によって高性能グラフィクスエンジン６３８と結合させるためのインターフェース６９２を含む。次に、チップセット６９０はインターフェース６９６を介して第１バス６１６に結合され得る。図７に示されているように、第１バス６１６を第２バス６２０に結合させるバスブリッジ６１８と共に種々の入力／出力（Ｉ／Ｏ）デバイス６１４が第１バス６１６に結合され得る。例えば、キーボード／マウス６２２、通信デバイス６２６ならびに、一実施態様ではコード６３０を含み得るディスクドライブまたは他の大容量ストレージデバイスなどのデータストレージユニット６２８を含む種々のデバイスが第２バス６２０に結合され得る。さらに、オーディオＩ／Ｏ６２４が第２バス６２０に結合され得る。実施態様は、スマートセルラ電話機、タブレットコンピュータ、ネットブック、Ｕｌｔｒａｂｏｏｋ（商標）などのモバイルデバイスを含む他のタイプのシステムに組み込まれることができる。
【００６６】
プロセッサコアはマルチスレッディング（操作またはスレッドの２つ以上のパラレルなセットを実行すること）をサポートすることができ、そして、タイムスライスドマルチスレッディング（ｔｉｍｅ  ｓｌｉｃｅｄ  ｍｕｌｔｉｔｈｒｅａｄｉｎｇ）、同時マルチスレッディング（単一の物理的コアが、当該物理的コアが同時にマルチスレッディングしているスレッドの各々のために、論理コアを提供する）、またはそれらの組み合わせ（例えば、Ｉｎｔｅｌ（登録商標）Ｈｙｐｅｒｔｈｒｅａｄｉｎｇ技術などにおけるタイムスライスドフェッチングおよびデコーディングならびにその後の同時マルチスレッディング）を含むいろいろな仕方で当該サポートを行うことができるということが理解されるべきである。
【００６７】
本書に記載されているどのプロセッサも、カリフォルニア州サンタクララのインテルコーポレーション（Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ）から入手し得るＣｏｒｅ（商標）ｉ３、ｉ５、ｉ７、２ＤｕｏおよびＱｕａｄ、Ｘｅｏｎ（商標）、Ｉｔａｎｉｕｍ（商標）、ＸＳｃａｌｅ（商標）またはＳｔｒｏｎｇＡＲＭ（商標）プロセッサなどの汎用プロセッサであり得る。あるいは、当該プロセッサは、ＡＲＭホールディングス社（ＡＲＭ  Ｈｏｌｄｉｎｇｓ，Ｌｔｄ）、ＭＰＩＳ、などの他の会社からのものでよい。当該プロセッサは、例えばネットワークまたは通信プロセッサ、圧縮エンジン、グラフィクスプロセッサ、コプロセッサ、埋め込みプロセッサ、などの専用プロセッサであり得る。当該プロセッサは１つ以上のチップ上に実装され得る。当該プロセッサは、例えばＢｉＣＭＯＳ、ＣＭＯＳ、あるいはＮＭＯＳなどの幾つかのプロセス技術のうちの任意のものを用いる１つ以上の基板の一部であり得および／または当該基板上に実装され得る。
【００６８】
本書に記載されているプロセッサはいかなるシステムまたはデバイスにも限定されないことが熟慮されている。ラップトップ、デスクトップ、ハンドヘルドＰＣ、パーソナルデジタルアシスタント、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、埋め込みプロセッサ、デジタル信号プロセッサ（ｄｉｇｉｔａｌ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｏｒ（ＤＳＰ））、グラフィクスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、セル電話機、ポータブルメディアプレーヤ、ハンドヘルドデバイス、および他の種々の電子デバイスのための当該技術分野で知られている他のシステムデザインおよび構成も適切である。一般的に、本書に開示されているプロセッサおよび／または他の実行ロジックを組み込むことのできる非常に多様なシステムまたは電子デバイスが一般的に適切である。
【００６９】
実施態様は、コードで実現されることができ、命令を実行するようにシステムをプログラムするために使用され得る、当該命令が記憶されている非一時的ストレージ媒体に記憶され得る。当該ストレージ媒体は、フロッピー（登録商標）ディスク、光ディスク、ソリッドステートドライブ（ｓｏｌｉｄ−ｓｔａｔｅ  ｄｒｉｖｅ（ＳＳＤ））、コンパクトディスク読み出し専用メモリ（ｃｏｍｐａｃｔ  ｄｉｓｋ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ（ＣＤ−ＲＯＭ））、書き換え可能コンパクトディスク（ｃｏｍｐａｃｔ  ｄｉｓｋ  ｒｅｗｒｉｔａｂｌｅ（ＣＤ−ＲＷ））、および光磁気ディスクを含む任意のタイプのディスク、読み出し専用メモリ（ＲＯＭ）などの半導体デバイス、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）などのランダムアクセスメモリ、消去可能でプログラマブルな読み出し専用メモリ（ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ（ＥＰＲＯＭ））、フラッシュメモリ、電気的に消去可能でプログラマブルな読み出し専用メモリ（ｅｌｅｃｔｒｉｃａｌｌｙ  ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ（ＥＥＰＲＯＭ））、磁気または光カード、あるいは電子命令を記憶するために適する他の任意のタイプのメディアを含み得るが、これらには限定されない。
【００７０】
一般的に、本書に開示されている或る実施態様は、ＯＳおよびデバイスドライバに依存しない仕方で、ＳｏＣにおける低パワー消費を、当該ＳｏＣに接続されているハードウェア機能ブロック（例えば、ＩＰブロック）に対する変更を最小限にとどめながら、可能にすることができる。或る実施態様は、エグジットリードイン（ｅｘｉｔ  ｌｅａｄ−ｉｎ）時に著しい待ち時間を生じさせることなくＩＰブロックを、パワーオフ状態を含む可能な当該ＩＰブロックの最低パワー状態に到達させて、シームレスなユーザ経験を提供するインフラストラクチャを提供する、ＳｏＣにおけるパワー管理（ｐｏｗｅｒ  ｍａｎａｇｅｍｅｎｔ（ＰＭ））アーキテクチャおよびマイクロアーキテクチャを実現することができる。このインフラストラクチャは、現存するオペレーティングシステムのＰＭアーキテクチャの制約条件の中で働き、これにより種々のオペレーティングシステムのために利益を提供することができる。
【００７１】
或る実施態様は、ＳｏＣ内の各ＩＰブロックと通信する中央パワーコントローラ（ｃｅｎｔｒａｌ  ｐｏｗｅｒ  ｃｏｎｔｒｏｌｌｅｒ（ＣＰＣ））、各ＩＰブロックをパワーゲーティングするための当該ＣＰＣおよびＩＰブロック間の標準的ＰＭインターフェースプロトコル、任意のＯＳがデバイスに伝達することを許可する当該ＣＰＣ内の制御レジスタインターフェースのセット、ならびに、パワーダウン状態からのシームレスなエグジットのためにコンテクストを失うことなく各ＩＰがパワーゲーティングされることを可能にするために各ＩＰ状態を保存しリストアするＣＰＣ開始される方法を含み得る。当該ＩＰブロックは、デバイスコントローラもファブリックセグメントまたはファブリックブリッジも含むことができる。
【００７２】
或る実施態様では、パワーゲーティングは、１）ハードウェアアイドル−ＩＰブロックがアイドル性の期間を検出し当該ＩＰブロックが覚醒時間を許容できるとき当該ＩＰブロックがパワーゲーティングされ得ると当該ＩＰブロックが判定する；２）ＯＳ要求（例えば、Ｗｉｎｄｏｗｓ（登録商標）  ＲＴＤ３要求）−ＰＣＩバスドライバが、一定のＩＰブロックがアイドルでパワーゲーティングされ得ることをＣＰＣに知らせる；３）デバイスドライバ開始（例えば、Ａｎｄｒｏｉｄ  Ｄ０ｉｘ要求）−デバイスドライバは、アイドル性と当該デバイスドライバが覚醒時間を許容できることを検出／評価し、パワーゲーティングを開始するデバイスに制御ビットを書き込む；を含む１つ以上の手法を用いて開始され得る。ＣＰＣは、パワーゲーティング時における状態保存とパワーアンゲーティング（ｐｏｗｅｒ  ｕｎ−ｇａｔｉｎｇ）時の状態リストアとを調整する。或る実施態様はハードウェアを用いてコンテクストを保存しリストアすることができ、それはより高速でよりパワー効率的に行われ得る。それは、ＩＰブロックが効率的にパワーゲーティングされ得るようにデバイスが待ち時間要件を知らせることのできるメカニズムをも提供する。或る実施態様は、各ＩＰブロックが標準的な仕方でパワーゲーティングされることを可能にする標準的ハードウェアブロック（例えば、図１に示されているブロックパワーロジック１３０）を提供することもできる。さらに、或る実施態様は、様々なＩＰブロックのためにデバイスドライバおよびＯＳ要求（例えば、それぞれＲＴＤ３およびＤ０ｉｘ）をサポートすることができる。或る実施態様は、パワーゲーティングするための標準的ＣＰＣおよび標準的プロトコル、各ＩＰブロックの状態を保存しリストアするハードウェアベースの方法、ならびに、ＩＰブロックにおけるより少ないエグジット待ち時間およびより低いパワー状態を可能にするデバイスドライバインターフェースを含むことができる。
【００７３】
次の節および／または例は、さらなる実施態様に関連する。一例では、プロセッサは、少なくとも１つの機能ブロックおよび中央パワーコントローラを含み得る。その少なくとも１つの機能ブロックは、少なくとも１つのブロックコンポーネントおよびブロックパワーロジックを含み得る。当該ブロックパワーロジックは、当該少なくとも１つの機能ブロックにおいて第１低減パワーモードを開始する第１要求を受け取り、当該第１要求に応答して中央パワーコントローラに通知信号を送ることができる。当該中央パワーコントローラは、当該通知信号に応答して、当該少なくとも１つの機能ブロックの第１状態を記憶し、当該少なくとも１つの機能ブロックにおいて当該第１低減パワーモードを開始することができる。
【００７４】
１つの例において、当該中央パワーコントローラはさらに、当該少なくとも１つの機能ブロックにおいて第２低減パワーモードを開始する第２要求を受け取り、当該第２要求に応答して、当該少なくとも１つの機能ブロックの第２状態を記憶することができる。
【００７５】
１つの例において、当該中央パワーコントローラはさらに、当該第２要求に応答して、当該少なくとも１つの機能ブロックにおいて当該第２低減パワーモードを開始するために少なくとも１つのパワー制御動作を実行することができる。
【００７６】
１つの例において、当該中央パワーコントローラはさらに、当該中央パワーコントローラに含まれる少なくとも１つのレジスタビットを用いて当該第２要求を受け取ることができる。１つの例において、当該中央パワーコントローラはさらに、当該中央パワーコントローラに含まれる当該少なくとも１つのレジスタビットを用いて当該通知信号を受け取ることができる。
【００７７】
１つの例において、当該第２要求はオペレーティングシステムカーネルにより要求され得る。
【００７８】
１つの例において、当該第２要求はバスドライバを用いて送られ得る。
【００７９】
１つの例において、当該ブロックパワーロジックは、当該ブロックパワーロジックに含まれる１つ以上のレジスタビットを用いて当該第１要求を受け取ることができる。
【００８０】
１つの例において、当該第１要求はデバイスドライバにより送られることができる。
【００８１】
１つの例において、当該中央パワーコントローラは、当該少なくとも１つの機能ブロックの当該第１状態を当該中央パワーコントローラのメモリに記憶させることができる。１つの例において、当該プロセッサは複数の機能ブロックを含むことができ、当該メモリは、当該複数の機能ブロックの全てのために状態情報を記憶する容量を含む。
【００８２】
１つの例において、当該中央パワーコントローラは当該第１低減パワーモードを開始するために１つ以上のパワー制御動作を実行することができ、当該１つ以上のパワー制御動作はパワーゲーティング、電圧低減、およびクロックレート低減を含む。
【００８３】
１つの例において、当該プロセッサは命令を実行するためのプロセッサでよい。
【００８４】
他の１つの例において、システムは複数の機能ブロックおよび中央パワーコントローラを含むことができる。当該複数の機能ブロックの各々は、１つ以上のハードウェアブロックコンポーネントおよびブロックパワーロジックを含むことができる。当該ブロックパワーロジックは、第１低減パワーモードを要求する第１要求を受け取り、通知信号を中央パワーコントローラに送ることができる。当該中央パワーコントローラは、当該複数の機能ブロックのうちの１つから当該通知信号を受け取ったことに応答して、当該複数の機能ブロックのうちの当該１つの第１状態を記憶し、当該複数の機能ブロックのうちの当該１つにおいて当該第１低減パワーモードを開始することができる。
【００８５】
１つの例において、当該システムはシステムオンアチップ（ＳＯＣ）であり得る。
【００８６】
１つの例において、当該中央パワーコントローラはさらに、当該複数の機能ブロックのうちの当該１つにおける第２低減パワーモードを求める第２要求を受け取り、当該第２要求に応答して、当該複数の機能ブロックのうちの当該１つの第２状態を記憶し、当該複数の機能ブロックのうちの当該１つにおいて当該第２低減パワーモードを開始するために少なくとも１つのパワー制御動作を実行することができる。
【００８７】
１つの例において、当該中央パワーコントローラは、当該中央パワーコントローラに含まれる少なくとも１つのレジスタビットを用いて当該第２要求を受け取ることができる。
【００８８】
１つの例において、当該ブロックパワーロジックは、当該ブロックパワーロジックに含まれる１つ以上のレジスタビットを用いて当該第１要求を受け取ることができる。
【００８９】
１つの例において、当該ブロックパワーロジックは当該複数の機能ブロックのうちの当該１つにおいて当該第１低減パワーモードを開始するために少なくとも１つのパワー制御動作を実行することができる。
【００９０】
他の１つの例において実施態様は、プロセッサの第１機能ブロックに含まれるブロックパワーロジックにより、当該第１機能ブロックにおける第１低減パワーモードを要求する第１要求を受け取ること；当該第１要求に応答して、当該ブロックパワーロジックにより、当該プロセッサの中央パワーコントローラに通知信号を送ること；当該中央パワーコントローラによって当該第１機能ブロックの第１状態を第１ストレージに記憶させること、および、当該第１機能ブロックにおいて当該第１低減パワーモードを開始すること、を含む方法であり得る。
【００９１】
１つの例において、当該方法は、当該中央パワーコントローラにより、当該プロセッサの第２機能ブロックにおける第２低減パワーモードを要求する第２要求を受け取ること、ならびに、当該第２要求に応答して、当該中央パワーコントローラにより、当該第２機能ブロックの第２状態を当該第１ストレージに記憶させること、および当該第２機能ブロックにおいて当該第２低減パワーモードを開始すること、をも含むことができる。１つの例において、当該第２要求を受け取ることは、当該中央パワーコントローラに含まれる少なくとも１つのレジスタビットを用いることを含む。
【００９２】
１つの例において、当該方法は、当該記憶された第１状態に基づいて当該第１機能ブロックをリストアすること；および、当該第１機能ブロックにおいて通常パワーモードを開始すること、をも含むことができる。
【００９３】
１つの例において、当該第１低減パワーモードを開始することは、当該中央パワーコントローラによって１つ以上のパワー制御動作を実行することを含むことができる。１つの例において、当該１つ以上のパワー制御動作を実行することは、当該第１機能ブロックへのパワーをゲーティングすること、当該第１機能ブロックに供給される電圧を低減させること、および当該第１機能ブロックのためのクロック周波数を低減させること、のうちの少なくとも１つを含むことができる。
【００９４】
１つの例において、当該第１要求を受け取ることは、当該ブロックパワーロジックに含まれる１つ以上のレジスタビットを用いることを含む。
【００９５】
１つの例において、当該方法は、当該第１要求をデバイスドライバによって送ることをも含むことができる。
【００９６】
１つの例において、当該方法は、プロセッサのパワー消費を管理するための方法である。
【００９７】
１つの他の例において、上の例のうちのいずれの方法を実行するためにも通信デバイスが配置され得る。
【００９８】
他の１つの例において、少なくとも１つの機械可読媒体は、コンピューティングデバイス上で実行されると当該コンピューティングデバイスに上記の例のうちのいずれかの方法を実行させる複数の命令を含むことができる。
【００９９】
他の１つの例では、命令を処理するための装置は、上記の例のうちのいずれかの方法を実行するように構成される。
【０１００】
他の１つの例では、装置は、上記の例のうちのいずれかの方法を実行するための手段を含む。
【０１０１】
この明細書の全体にわたって、"１つの実施態様"または"実施態様"への言及は、その実施態様と関連して記述された特定のフィーチャ、構造、または特性が、本発明に包含される少なくとも１つの実現形態に含まれることを意味する。従って、"１つの実施態様"または"実施態様において"という句の出現は、必ずしも同じ実施態様に関連しない。さらに、その特定のフィーチャ、構造、または特性は、具体的に説明されている特定の実施態様以外の適切な形で設けられることができ、そのような形は全て本出願の請求項に包含されることができる。
【０１０２】
本発明は、具体的説明のために限られた数の実施態様に関して記述されているが、当業者であれば、それらの多数の改変およびバリエーションを認識するであろう。添付されている請求項は、本発明の真の趣旨及び範囲に属するような改変およびバリエーションの全てを包含することが意図されている。
【符号の説明】
【０１０３】
１００  システム  １１０  中央パワーコントローラ  １２０Ａ、１２０Ｎ  機能ブロック  １２５  ブロックコンポーネント  １３０  ブロックパワーロジック  １５０  プラットフォームソフトウェア
【図１】
2014179080.tif 000003
【図２Ａ】
2014179080.tif 000004
【図２Ｂ】
2014179080.tif 000005
【図３】
2014179080.tif 000006
【図４】
2014179080.tif 000007
【図５】
2014179080.tif 000008
【図６】
2014179080.tif 000009
【図７】
2014179080.tif 000010
【外国語明細書】
2014179080000001.pdf