(58)【調査した分野】(Int.Cl.,DB名)
前記マルチコアプロセッサを含むマルチプロセッサシステムの他のマルチコアプロセッサが前記低電力状態にあるとき、前記PCUは前記クロックゲーティングを行う、請求項1に記載のマルチコアプロセッサ。
複数の期間、前記複数の論理ユニットが継続して空き状態にない場合、前記PCUは、前記複数の期間の2回目の反復の間、前記複数の論理ユニットが継続して空き状態にあるかどうかを判断し、前記2回目の反復の間、前記複数の論理ユニットが継続して空き状態にある場合、前記クロックゲーティングを行う、請求項1または2に記載のマルチコアプロセッサ。
前記1つの非コアが空き状態にない、または、帯域外インタフェース(OOBインタフェース)を介して、入力トランザクションが受信されたとき、前記PCUは前記クロックゲーティングを終了する、請求項1から4のいずれか1項に記載のマルチコアプロセッサ。
複数のプロセッサソケットがソケット低電力状態に移行することを交渉したか判断し、前記複数のプロセッサソケットの第1プロセッサソケットの非コアが空き状態にあることを判断する段階と、
前記空き状態にある場合、前記非コアに結合された帯域外チャネル(OOBチャネル)からのトランザクションを防止し、前記非コアが第1期間の後、まだ前記空き状態にあるかどうか判断する段階と、
まだ前記空き状態にある場合、前記非コアに結合された1以上のオフソケットチャネルから入力トランザクションを防止し、前記非コアが第2期間の後、まだ前記空き状態にあるかどうか判断する段階と、
前記非コアが前記第2期間の後、まだ前記空き状態にあるとの判断に応答して前記非コアの複数のユニットのクロックゲーティングを行う段階と
を備える方法。
前記クロックゲーティングに応答して、前記非コアがクロックゲーティングされた状態にあることを示すよう非コアクロックゲーティング状態信号を更新し、前記OOBチャネル上の入力トランザクションに応答して前記クロックゲーティングを無効化出来るよう前記OOBチャネル上のトランザクションを有効化する段階をさらに備える、請求項8に記載の方法。
前記第1期間をカウントする継続期間タイマーを開始し、前記第1期間の間、前記非コアが継続して前記空き状態にあったかどうか、前記第1期間の後、判断する段階をさらに備える、請求項8または9に記載の方法。
前記第2期間をカウントするドレインタイマーを開始し、前記第2期間の間、前記非コアが継続して前記空き状態にあったかどうか、前記第2期間の後、判断する段階をさらに備える、請求項10または11に記載の方法。
前記第2期間の間、前記非コアが継続して前記空き状態になかった場合、前記1以上のオフソケットチャネルからの前記入力トランザクションを有効化し、前記OOBチャネル上のトランザクションを有効化する段階をさらに備える、請求項12に記載の方法。
クロックゲーティング有効化信号をアサートし、クロックゲーティングタイマーを開始し、前記クロックゲーティングタイマーの期限切れに応答して前記クロックゲーティングを指示するよう状態インジケータを設定する段階をさらに備える、請求項12または13に記載の方法。
前記非コアが前記空き状態のままであり、前記OOBチャネルを介してリクエスト信号が受信されない間、前記クロックゲーティングを継続し、そうでなければ、前記状態インジケータおよび前記クロックゲーティング有効化信号をディアサートする段階と、
前記ディアサートに応答してクロックアンゲーティングタイマーを開始し、前記クロックアンゲーティングタイマーの期限切れに応じて、前記1以上のオフソケットチャネルからの前記入力トランザクションを防止するフロー制御信号をディアサートする段階と
をさらに備える、請求項14に記載の方法。
【発明を実施するための形態】
【0005】
実施形態によると、プロセッサソケットのアイドル状態時の非コアの動的電力を低減することにより、サーバーのアイドル状態時の全体的な電力の低減が可能となる。より詳細には実施形態により、「マクロクロックゲーティング(MCG)」を可能とすることにより、非コア自体の多くが例えばクロックゲーティングを介して無効化され得る低電力状態にソケットの非コアが移行可能になる。いくつかの実施形態において、非コアを含むソケットが低電力状態にあるだけでなく、マルチソケットシステムの追加のソケットも低電力状態にあると判断された場合に、このMCG動作に移行し得る。
【0006】
一実施形態において、MCG動作は、インフライトトランザクションを失うことなく、非コア内の論理回路の大部分のクロックをゲーティングすることを含み得る。非コアに残っているインフライトトランザクションが存在しないときに、MCG移行フローの終わりにMCG状態に移行し得る。加えて、MCG終了フローによると、MCG動作は、外部のリクエスト、若しくは内部または外部のイベントが発生しないとき、最小の遅延で非コアの論理回路のクロックをアンゲーティングすることを含み得る。
【0007】
図1は、本願発明の一実施形態に係るプロセッサのブロック図を示す。詳細には、
図1は、マルチコアプロセッサであり、サーバーベースのアプリケーションに適切であり得るプロセッサ100を示す。示されるようにプロセッサ100は、複数のコア110
0〜110
11を含む。
図1の実施形態においては特定数のコアが示されているが、本願発明の態様はこの点に関して限定されない。各コアは、例えば1以上のレベルのキャッシュメモリなどプライベート記憶装置などと関連付けられ得る。加えて各コアは、対応するキャッシュバンクコントローラ115
0〜115
11を介して、例えば複数のスライス120
0〜120
11から形成されるラストレベルキャッシュ(LLC)など、共有キャッシュメモリのスライスに結合されている。
【0008】
示されるように、異なる複数のコアおよびキャッシュを介した通信が、双方向性の拡張可能なリング相互接続160a−bであり得るリングベースの相互接続を介して行われ得る。オフチップ通信を行うべく、様々な異なる複数のポートとエージェントとが存在し得る。詳細には、示されるように、例えば、拡張可能メモリ相互接続(scalable memory interconnect。SMI)を介してソケットに結合されたダイナミックランダムアクセスメモリ(DRAM)などシステムメモリのローカル部分へソケットを結合するメモリI/Oポート175に加えて、複数のポイントツーポイント(PtP)入出力(I/O)ポート170が存在し得る。プロセッサの様々なエージェントを用いて、キャッシュコヒーレンスプロトコルが実装され得る。一実施形態において、PtPリンクにより、物理層、リンク層、およびプロトコル層を含む複数の層を有するキャッシュコヒーレンスプロトコルであるIntel(登録商標)Quick Path Interconnect(QPI)プロトコルに準拠した通信が可能となる。このプロトコルを用いることにより、複数のキャッシュエージェントを含むシステム内で、コヒーレントな通信が行われ得る。本願発明の一実施形態によると、「キャッシュエージェント」は、メモリデータのコピーをリクエストし、キャッシュし得る(および当該データを変更し得る)キャッシュ論理回路を一般的に表し得る。そのようなキャッシュエージェントは、メモリのリクエストをルーティングするキャッシュコントローラを含み得る。プロトコルにより、PtPリンクを介して互いに結合されたデバイス間の通信を可能とする低遅延リンクに沿った、複数のチャネルおよび仮想ネットワーク上での様々な通信が可能となる。当然ながら、本願発明の態様はこの点に関して限定されず、他の実施形態においては、PtPリンクは他の通信プロトコルに準拠してもよい。
【0009】
図1に示されるように、ルータ130は、ホームエージェント140
0、140
1のペアに結合し、そしてホームエージェント140
0、140
1は対応するメモリコントローラ145
0〜145
1と通信を行い得る。そしてこれらのメモリコントローラ145は、例えばメモリI/Oポート175を介したSMI相互接続を介し、例えばプロセッサに結合された1以上のデュアルインラインメモリモジュール(DIMM)などシステムメモリのローカル部分に結合され得る。
【0010】
図1の実施形態において、非コアは、ルータ130、LLC120、キャッシュバンクコントローラ115、ホームエージェント140、システムリングインタフェース160、メモリコントローラ145、および電力制御ユニット(PCU)150により一般的に構成されている。これらのユニットのそれぞれは、非コアクロックと呼ぶ共通のクロック信号によりクロックされ得る。図示を分かりやすくするべく示されてはいないが、非コアクロックは、非コアのクロック生成回路により生成され得る。MCG動作によると、非コアの特定のユニットにおける非コアクロックのゲーティングにより、低い動的電力が実質的に実現され得る。一実施形態において、非コアのいくつかのユニットは、MCGモードの間、電力が供給され(アクティブなクロック信号により)アクティブなままであってもよい。つまり他の実施形態においては、ルータ130およびPCU150に電力が供給されたままであってもよく、追加の、または異なるユニットのクロックゲーティングが行われてもよい。一般的にルータ130は、入力されるQPIリンクパケットを適切なオンチップの宛て先へルーティングしてもよい。加えてルータ130は、オンチップユニット間で送信されるパケットをルーティングしてもよい。よって、外部のソケットおよびI/Oハブから入力されるパケットは、ルータ130の入力ポートに提供される。電力制御ユニット150は、コア(およびパッケージ)のC状態への移行およびC状態の終了など他の電力管理タスクの対応に加えて、MCGへの移行およびMCGの終了プロセスを順番付けし制御するマイクロコントローラおよび他の制御論理回路を含み得る。
図1の実施形態においてはこの特定の実施例が示されているが、本願発明はこの点に関して限定されず、他の実施形態においてマルチコアプロセッサは異なる構成を有し得る。
【0011】
「デバイス」または「エージェント」などの用語は一般的に用いられており、リンクに結合されるいかなる電気部材をも指し得る。「リンク」または「相互接続」という用語は、メッセージ、つまり所定の形式の情報のための通信経路を確立する情報伝達媒体として一般的に定義される。リンクまたは相互接続は、有線の物理媒体(例えば、バス、1以上の電気配線、トレース、ケーブルなど)、または無線媒体(例えば、無線の信号伝達技術と組み合わせての空気)であってもよい。
【0012】
実施形態は、多くの異なるシステムタイプで用いられ得る。特定の実施例において、システムは、非一様なメモリアーキテクチャ(non−uniform memory architecture。NUMA)を有するマルチプロセッササーバなどマルチソケットシステムであり得る。
図2は、本願発明の一実施形態に係るシステムのブロック図である。
図2に示されるように、システム200は、複数のソケット210
0〜210
3を含む。各ソケットは、
図1に関連して説明したものなどマルチコアプロセッサを含み得るが、当然ながら他の実装も可能である。各ソケットは、PtPリンクを介して他のソケットへ結合され得る。
【0013】
図2に示されるように、各プロセッサ210は中央処理装置(CPU)と一般的に呼ばれ得る。さらに示されるように、
図1の実施形態などのマルチコアソケットまたはパッケージに対応する各プロセッサ210は、メモリ相互接続を介してシステムメモリ230のローカル部分とインタフェース接続する統合型メモリコントローラ(integrated memory controller)を含む。示されるように、各プロセッサ210
Xは、メモリ相互接続を介して、様々な実施形態においてDRAMとして実装され得るシステムメモリの対応する部分230
Xと通信を行い得る。様々な周辺デバイスなどシステムの他の部材とのインタフェースを設けるべく、プロセッサ210のそれぞれは、少なくとも1つのI/Oハブに結合され得る。詳細には、プロセッサ210
0、210
2は、I/Oハブ220
0に結合され得、同様にプロセッサ210
1、210
3は、I/Oハブ220
1に結合され得る。
図2の実施形態においてはこの基本的な高レベルの構成を示しているが、本願発明の態様はこの点に関して限定されない。
【0014】
一般的に、MCG移行プロセスは、非コアが位置付けられているソケットだけでなく、マルチソケットシステム内の他の全てのソケットが任意の低電力状態にあると判断されたときに開始され得る。このようにするのは、あるソケットが低電力状態にあるときのみMCGへ移行され得るとなると、他のソケットからトランザクションが入力される可能性が高く、MCGへの移行フローを完了することが出来ない、若しくは、MCGへ移行することによって生じるコストは、非コアがMCG状態にあり得る小さなウィンドウに見合わないからである。
【0015】
より詳細には、一実施形態において、MCG移行フローに従ったMCG状態への移行の開始が許可される前に、様々な前提条件がまず設定され得る。最初に、任意のソケットに関し、全てのコアが、例えばACPI規格のC3またはC6スリープ状態などの所定の低電力状態にある。限定ではなく例示を目的とし、本明細書においては、C3およびC6のスリープ状態に関して実施形態を説明するが、他のスリープ状態も採用され得る。全てのコアがC6またはC3状態になると、非コアの電力制御ユニットは「パッケージC6」(コアがC6にある場合)、または「パッケージC3」(コアがC3にある場合)と呼ばれるソケット全体の低電力アイドル状態に実質的に移行しようとする。
【0016】
パッケージC3およびパッケージC6移行プロセスの延長としてMCG状態に移行し得る。よってMCG状態は実質的に、パッケージC6またはパッケージC3状態にあるときの、非コアのアイドル状態時の電力低減状態である。しかし、現行のACPI規格はこの状態をサポートしていないので、MCG状態はACPI規格とは独立していてもよい。異なる低電力状態に用いられる他の実施形態において、オペレーティングシステム(OS)の電力制御とは独立してMCG状態に移行し、MCG状態を終了してもよく、代わりに、非コアPCUなどプロセッサのマイクロコントローラにより制御されてもよい。
【0017】
MCG状態への移行の他の前提条件として、プラットフォーム内の全ての他のソケットがパッケージC3またはパッケージC6状態にある(または移行しようとしている)。共通の低電力状態が存在するこの状態を可能とするべく、パッケージC6および/またはパッケージC3への移行が調整され、当該移行が全てのソケット、並びにI/Oハブの間で合意されるように、様々なソケットの間で交渉プロセスが起こり得る。
【0018】
このことにより、全てのソケットが共にパッケージC6またはパッケージC3へ移行するようになり、MCG状態である期間が最大化される。MCG状態のためのさらに他の前提条件として、メモリサブシステムも、SMIリンクがアクティブでないことを示す、一実施形態においては「SMIキル」状態と呼ぶ低電力状態に移行していてもよい。この低電力状態により、メモリコントローラおよびホームエージェントの論理回路がクロックゲーティングされ得る。これらの前提条件が満たされると、各非コアをMCG状態に移行させようとするべく、様々なソケットの非コアにおいてMCG移行フローが開始され得る。
【0019】
一実施形態において、MCG状態で、キャッシュバンクコントローラ、ホームエージェント、メモリコントローラ、およびシステムリングインタフェースユニットなどの非コアユニットを含む非コアの様々な回路が全てゲーティングされ得る。このゲーティングは領域毎のクロックバッファレベルで行われ得、これにより、細粒度のゲーティング方式の複雑さを避けることが出来る。
【0020】
これらの前提条件が満たされると、MCGへの移行が進められ得る。なお、非コアの物理的大きさが故に、異なる複数の実施形態において、クロックゲーティングプロセス自体が、異なる数の非コアクロックサイクル(例えば、およそ10〜20サイクル)を要し得る。これは、ゲーティングされる全てのユニットにクロックゲーティング信号が到達出来るようにするためである。クロックゲーティングプロセスが問題なく行われるようにするため、様々なメカニズムが設けられ得る。一例として、非コアの各ユニットは、空き状況を示す、空き状態インジケータ、または「空き状態」信号を生成してもよい。よってこの状況は、対応するユニットが内部にインフライトトランザクションを有さないことを示す。全ての非コアユニットの空き状態は、合わせて論理的にAND処理を行われ、非コア全体としての空き状況が判断され得る。一実施形態において、論理的なAND処理は、PCUで実行され得るが、本願発明の態様はこの点に関して限定されない。
【0021】
加えて、MCG移行フローは入力トランザクションのフローを制御するメカニズムを用い得る。つまり、クロックゲーティングを行うという判断がされると、新たなトランザクションはクロックゲーティングされるユニットに送信されてはならない。このフロー制御は、入力トランザクションの全てを、クロックゲーティングされるユニットに入れないようにブロックすることにより実施することが出来る。一実施形態において、このフロー制御メカニズムは非コアのルータ内に位置付けられ、クロックゲーティングが問題なく行われるまで、様々なPtP相互接続などオフチップインタフェースから他のソケット(またはI/Oハブ)への全てのトランザクションをブロックしてもよい。一例としてルータは、ソケットへのトランザクションの送信を制限すべく、他のソケット/I/Oハブへのオフチップの相互接続を介してフロー制御信号を送信してもよい。
【0022】
帯域外(OOB)インタフェースから入ってくるトランザクションがクロックゲーティングにより失われることがないよう、さらに他のメカニズムがMCG移行フローにおいて用いられ得る。この機能性を可能とすべく、一実施形態において、クロックゲーティングされた論理回路へアクセスしようとする新たな入力OOBトランザクションは実質的に受信確認されない(NACK応答される)ので、後の時間に再試行される。なお、クロックゲーティングされた論理回路へアクセスする必要のないOOBトランザクションの処理は通常通りに進められ、完了され得る。そのようなトランザクションの一例は、ダイ温度に関するPCUへの問い合わせである。
【0023】
図3は、本願発明の一実施形態に係るMCG状態に移行する際に実施される様々な動作を示すフロー図である。
図3に示されるように、方法250は、例えば、いくつかの実施形態においては非コアのPCUの一部であってもよい、非コアの制御論理回路で実施され得る。一般的に、方法250は、MCG状態への移行を試みることが適切だと判断し、様々なタイマーのタイムアウトに対応し得る、複数の決定された期間の間、非コアが空き状態であると判断された場合にMCG状態に移行するための動作を行うことにより進められ得る。
図3に示されるように、方法250は、全てのソケットが、例えばC3またはC6パッケージ状態などの任意のC状態である低電力ソケット状態にある、または当該任意のC状態へ移行しようとしていると判断することにより開始され得る(ブロック255)。この判断は、プラットフォームのソケット間の交渉の結果に基づいてもよい。次に、非コアが空き状態にあると判断され得る(ブロック260)。つまりこの判断は、非コアの様々なユニット内にペンディング中のトランザクションがないことを意味し、このことは、非コアの全ての論理ユニットからの空き状態信号の論理的なAND処理によって識別され得る。次に、OOBチャネル上のトランザクションが防止し得る(ブロック265)。MCGイベントの間、そのようなトランザクションが受信されるのを防止する様々なメカニズムについては以下に説明する。続いて、非コアがまだ空き状態にあるかどうか判断され得るブロック270の制御が行われる。
【0024】
この判断の結果が肯定的な場合、ソケットに接続された様々なPtP相互接続などオフソケットチャネルから、入力トランザクションが入ってくるのを防止するブロック275の制御が行われる。さらに再びブロック280において、非コアがまだ空き状態にあると判断され得る。よってこのことは、ペンディング中のトランザクションがないということを示しており、MCG状態に移行するのが適切であるということを示している。したがって、様々な非コアユニットがクロックゲーティングされ得るブロック285の制御が行われる。このクロックゲーティングを実行するための異なる複数のメカニズムについては以下に説明する。最終的にブロック290において、非コアがMCG状態にあることを示すよう非コアクロックゲーティング状況が更新され、さらにこの時点において、OOBチャネル上のトランザクションが有効化され得る。つまり、非コアはこの時点でクロックゲーティングされた状態にあるので、そのようなトランザクションが有効化され、非コア論理回路がOOBトランザクションを扱う必要がある場合には、MCG状態を終了することが出来る。
図3の実施例ではこの高レベルの構成が示されているが、本願発明の態様はこの点に関して限定されない。例えば、直線的なフローが示されたが、フローの様々な時点で非コアの空き状態を判断することにより、MCG移行フローが再開され得、または特定の動作が再試行され得る。
【0025】
図4は、本願発明の一実施形態に係るMCG移行フローに従う動作のフロー図である。
図4に示すように方法300は、例えば非コアのPCU内のMCG論理回路によって実施され得る。なおMCG状態に移行する前提条件として、ブロック310において、パッケージ内の全てのコアが選択された低電力状態にあり(または、選択された低電力状態に移行するプロセスにあり)、同じことが全てのプロセッサソケットに関しても当てはまることが判断され得る。加えて、プロセッサに結合されたメモリも、低電力メモリ相互接続状態(例えば、アクティブSMIキル信号)により示されるように例えばセルフリフレッシュ状態などの低電力状態にあると判断され得る。
【0026】
この判断の結果が肯定的である場合、MCG状態に移行する条件が満たされたことになる。したがって、MCGへの移行の第1段階が実行され得る。最初にひし形315において、非コアが空き状態にあるかどうか判断される。もし判断の結果が肯定的であれば、OOBインタフェースがドレインされ、タイマーの初期化と共に様々な制御信号が設定され得るブロック320の制御が行われる(ブロック320)。より詳細には、この第1段階において、OOBインタフェースに、クロックゲーティングされることになる論理回路にアクセスしようとする全てのトランザクションに対しNACK応答を開始させる「NACK Enable」ビットが設定され、そのようなアクセスを試みる全てのインフライトOOBトランザクションが(例えば、トランザクションを適切に扱うことにより)ドレインされる。一実施形態において、OOBインタフェースは、アサートされた場合にMCGを終了させ得る「NACK Request」信号を有する。この信号のアサートは、この時点において無効化される。その後、非コアの空き状態が、空き状態継続期間と呼ばれるプログラム可能な特定の期間の間、継続的にサンプリングされ、非コアが継続的に空き状態にあることを確認する。この期間は、このブロック320において初期化される継続期間タイマーと呼ばれるタイマーによってトラッキングされ得る。継続期間タイマーの長さはプログラム可能であり得、一実施形態においては、およそ50〜1000サイクルの間であり得る。一実施形態において、このタイマーおよび説明される他のタイマーはPCU内に存在し得る。
【0027】
この期間が終わり、空き状態継続期間の全体に亘り(1つの非コアクロックサイクルの間においても)ディアサートイベントが起こることなく非コア空き状態信号がアサートされたままであるとの判断がひし形325において行われ、MCG移行フローの第2段階がトリガされる。なお、この非コア空き状態信号が第1段階のいずれかの時間においてサンプリングされディアサートされた場合、(ひし形330およびブロック335で示されるフローで)移行プロセスが中止され、OOB NACKEnableが再設定される。
【0028】
この第2段階において、ひし形340において非コアがまだ空き状態にあると判断されたものと仮定すると、フロー制御メカニズムが有効化され得るブロック350の制御が行われる。より詳細には、QPIリンクのフロー制御が行われ、ルータ入力ポートを超える新たなパケットの送信を防止する。この段階においても、「ドレイン期間」と呼ばれるプログラム可能な特定の期間の間、非コア空き状態信号が継続的にサンプリングされる。この期間は、「ドレインタイマー」と呼ばれるタイマーによりトラッキングされ得る。このドレインタイマーの長さはプログラム可能であり得、一実施形態においては、およそ50〜1000サイクルの間であり得る。この第2段階は、フロー制御信号がアサートされる直前に到着したインフライトトランザクションの処理が問題なく進められ、最終的に非コア空き状態信号をディアサートすることを実質的に可能とする。なお、この入力信号は、非コア空き状態信号のディアサートを引き起こし、よって、MCG移行フロー全体の再開を引き起こす。(ひし形360および375における判断の結果が肯定的であり)この期間が終わり、「ドレイン期間」の全体に亘り1つの非コアクロックサイクルの間もディアサートイベントが起こることなく非コア空き状態信号がアサートされたままである場合、第3段階がトリガされる。(ひし形365または375の判断により)非コア空き状態信号が第2段階のいずれかの時間においてサンプリングされディアサートされた場合、移行プロセスが中止され、(ひし形370および335において)NACK Enableが再設定され、QPIリンクフロー制御がディアサートされる。
【0029】
MCG移行フローのこの最終段階である第3の段階において、ブロック380で実際のクロックゲーティング信号がアサートされる。加えて、クロックゲーティング信号の生成位置から比較的遠く離れたユニットに到達するクロックゲーティング信号の伝搬遅延に対応すべく、「クロックゲーティング」タイマーが開始され、このタイマーの期限が切れると、クロックゲーティングが完了したと見なされる。クロックゲーティングタイマーの長さはプログラム可能であってよく、一実施形態においては、10〜30サイクルの範囲内であり得る。(ひし形385の判断により)このタイマーの期限が切れるとMCGへの移行が行われたものと見なされ、「Uncore Clock Gated」状態信号がブロック390において設定される。この状態信号が設定されると、OOBインタフェースは「CLK Req」信号をアサートすることによりMCGの終了を指示出来る(よって、システムをクロックアンゲーティング状態に戻す)。なお、「CLK Req」信号は「Uncore Clock Gated」状態信号が設定されているとき(つまりクロックがゲーティングされているとき)のみ有効である。またブロック390において、「NACK Enable」信号もディアサートされる。よってこの時点において、非コアは、ルータおよびPCUを除く全ての非コアユニットがクロックゲーティングされたMCG低電力状態にあり、動的消費電力が低減される。非コアは、任意のイベントまたは出来事によって終了がトリガされるまでこの状態のままである。
【0030】
一般的にクロックゲーティングまたはMCG状態の終了は、複数の条件のうち1つに応じて起こり得る。一実施形態において、第1条件は、QPIリンクの1つを介してルータ入力ポートから新たなトランザクションが受信され、非コア空き状態信号がディアサートされるということである。第2条件は、非コアクロックを有さないユニットを用いる新たなOOBトランザクションが受信され、「OOB Clk Req」信号のアサートが起こるということである。
【0031】
図5は、本願発明の一実施形態に係るMCG終了フローのフロー図である。
図5に示されるように、一実施形態において終了フロー400は同様に、PCUのMCG制御論理回路を介して実施され得る。
図5に示されるように方法400は、MCG状態がアクティブである、言い換えると、Uncore Clock Gated状態信号がアクティブであるときに開始される(ブロック410)。ひし形420において、非コアが空き状態にあり、クロックリクエストがアサートされていないかが判断される。判断の結果が肯定的であれば、非コアはMCG状態のままである。そうでなければ、ブロック430の制御が行われる。ブロック430において、クロックゲーティング有効化信号がディアサートされ、クロックアンゲーティングタイマーが開始される。加えて、Uncore Clock Gated状態信号が非アクティブ化され得る。なお、クロックアンゲーティングプロセスは、ある程度の回数のサイクルの実行を要し得る。このアンゲーティング期間は、「クロックアンゲーティング」期間と呼ばれ得る。一実施形態においてこの期間は、「クロックアンゲーティング」タイマーを用いてトラッキングされ得る。クロックアンゲーティングタイマーの長さはプログラム可能であってよく、一実施形態において、およそ10〜30サイクルの範囲であり得る。本願発明の態様はこの点に関して限定されないが、(ひし形440の判断において)このタイマーの期限が切れると、(ブロック450において)リンクフロー制御信号がディアサートされ得、「Uncore Clock Gated」信号が再設定される。このことにより、この時点でOOBインタフェースは制限なく非コアの全てのユニットへアクセス出来るので、Clk Req信号の必要性がなくなる。
図5の実施形態においてはこの特定の実施例が示されているが、本願発明の態様はこの点に関して限定されない。
【0032】
実施形態は、異なるコアアーキテクチャを有するマルチコアプロセッサに用いられ得る。
図6は、本願発明の一実施形態に係るプロセッサコアのブロック図である。
図6に示されるように、プロセッサコア500はマルチステージパイプラインアウトオブオーダープロセッサであり得、関連する非コアがMCU移行フローを開始する前に低電力状態(例えば、C3またはC6状態)であり得る存在する複数のコアのうち1つであり得る。
【0033】
図6に示されるように、コア500は、実行される命令をフェッチし、それら命令を後にプロセッサで用いられ得るようにするフロントエンドユニット510を含む。例えばフロントエンドユニット510は、フェッチユニット501、命令キャッシュ503、および、命令デコーダ505を含み得る。いくつかの実施例において、フロントエンドユニット510はさらに、マイクロコード記憶装置、およびマイクロオペレーション記憶装置と併せてトレースキャッシュを含み得る。フェッチユニット50
1は、例えばメモリまたは命令キャッシュ503からマクロ命令をフェッチし、当該マクロ命令を基本命令、つまりプロセッサにより実行されるマイクロオペレーションにデコードすべく命令デコーダ505に供給する。
【0034】
フロントエンドユニット510と実行ユニット520との間には、マイクロ命令を受信しそれらを実行され得るようにするアウトオブオーダー(OOO)エンジン515が結合される。より詳細にはOOOエンジン515は、マイクロ命令フローを再度順序付け、実行のために必要な様々なリソースを割り当て、レジスタファイル530および拡張レジスタファイル535などの様々なレジスタファイル内の格納位置へ論理レジスタの名前を変更する様々なバッファを含み得る。レジスタファイル530は、整数および浮動小数点操作のための別個のレジスタファイルを含み得る。拡張レジスタファイル535は、例えばレジスタあたり256または512ビットなどのベクトルサイズの単位での格納部を実現する。
【0035】
例えば様々な整数、浮動小数点、および単一命令複数データ(SIMD)論理ユニット、およびその他専用のハードウェアを含む様々なリソースが実行ユニット520に存在し得る。例えば、そのような実行ユニットは、1以上の算術論理演算ユニット(ALU)522およびその他の実行ユニットを含み得る。
【0036】
実行ユニットからの結果は、リタイア論理回路、つまり、リオーダーバッファ(ROB)540に提供され得る。より詳細には、ROB540は、実行される命令に関する情報を受信する様々なアレイおよび論理回路を含み得る。その後この情報は、ROB540によって検証され、命令が正当にリタイアされ得、プロセッサのアーキテクチャ状況にコミットしたデータを生じさせるか、または、命令の適切なリタイアを防止する1以上の例外状況が発生したかどうかの判断が行われる。当然ながら、ROB540はリタイアに関する他の動作も扱い得る。
【0037】
図6に示されるように、ROB540はキャッシュ550に結合され、キャッシュ550は一実施形態において、低レベルキャッシュ(例えばL1キャッシュ)であり得るが、本願発明の態様はこの点に関して限定されない。また、実行ユニット520は直接キャッシュ550に結合され得る。キャッシュ550から、高レベルキャッシュ、システムメモリなどとのデータ通信が行われ得る。
図6においてはこの高レベルの構成が示されているが、本願発明の態様はこの点に関して限定されない。例えば、
図6の実装例は、いわゆるx86命令セットアーキテクチャ(ISA)などのアウトオブオーダーマシンに関するが、本願発明の態様はこの点に関して限定されない。代わりにコアは、インオーダープロセッサ、ARMベースプロセッサなど縮小命令セットコンピューティング(RISC)プロセッサ、または、エミュレーションエンジンおよび関連付けられた論理回路を介して異なるISAの命令および動作をエミュレート出来る他のタイプのISAのプロセッサとして実装され得る。
【0038】
実施形態は、多くの異なるタイプのシステムにおいて実装され得る。
図7は、本願発明の一実施形態に係るシステムのブロック図である。
図7に示すようにマルチプロセッサシステム600は、ポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続650を介して互いに結合された第1プロセッサ670と第2プロセッサ680とを含む。
図7に示されるように、プロセッサ670、680のそれぞれは、第1および第2プロセッサコア(つまり、プロセッサコア674a、674b、およびプロセッサコア684a、684b)を含む多数のコアを有するプロセッサであり得る。なお、より多くのコアがプロセッサ内に存在していてもよい。加えて各プロセッサは、本願発明の一実施形態に係るMCGフローを実施する非コア675、685を含み得る。
【0039】
続けて
図7を参照すると、第1プロセッサ670はさらに、メモリコントローラハブ(MCH)672と、ポイントツーポイント(P−P)インタフェース676、678とを含む。同様に、第2プロセッサ680はMCH682とP−Pインタフェース686、688とを含む。
図7に示されるように、MCH672、682はプロセッサを、各プロセッサにローカルに取り付けられたシステムメモリ(例えばDRAM)の一部であってもよい各メモリ、つまり、メモリ632およびメモリ634に結合する。第1プロセッサ670および第2プロセッサ680は、P−P相互接続652、654を介してチップセット690に結合されてもよい。
図7に示されるようにチップセット690は、P−Pインタフェース694、698を含む。
【0040】
さらに、チップセット690は、P−P相互接続639によりチップセット690を高性能グラフィクスエンジン638に結合するインタフェース692を含む。そしてチップセット690は、インタフェース696を介して第1バスに結合され得る。
図7に示されるように、第1バス616を第2バス620に結合するバスブリッジ618と併せて、様々な入出力(I/O)デバイス614が、第1バス616に結合され得る。例えばキーボード/マウス622、通信デバイス626、および、データ記憶ユニット628を含む様々なデバイスが第2バス620に結合され得る。一実施形態においてデータ記憶ユニット628は、コード630を含み得るディスクドライブ、または他の大容量記憶デバイスであり得る。さらに、オーディオI/O624が第2バス620に結合され得る。実施形態は、スマートセルラーフォン、タブレットコンピュータ、ネットブックなどのモバイルデバイスを含む他のタイプのシステムに組み込まれ得る。
【0041】
実施形態はコードを用いて実装されてもよく、当該コードは、命令を格納した記憶媒体に格納され得、当該記憶媒体を用いて、システムが当該命令を実行するようプログラムされ得る。記憶媒体には、フロッピー(登録商標)ディスク、光ディスク、半導体ドライブ(SSD)、CD−ROM、CD−RW、および光磁気ディスクを含むディスクなどの何らかのタイプの非一時的記憶媒体、読取専用メモリ(ROM)などの半導体デバイス、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、消去可能プログラム可能読取専用メモリ(EPROM)、フラッシュメモリ、電気的消去可能プログラム可能読取専用メモリ(EEPROM)などのランダムアクセスメモリ(RAM)、磁気カードまたは光カード、若しくは、電子命令を格納するのに適した他の何らかのタイプの媒体が含まれ得るが、これらに限定されない。
【0042】
本願発明について限られた数の実施形態に関して説明してきたが、当業者であれば、様々な修正例および変形例が実施可能であることを理解されよう。以下の請求項は、そのような修正例および変形例の全てを本願発明の思想および態様に含まれるものとして包含するよう意図されている。