(57)【特許請求の範囲】
【請求項１】
複数のコアと１つの非コアとを含むマルチコアプロセッサであって、
前記１つの非コアは、少なくとも１つのキャッシュメモリと、ルータを含む複数の論理ユニットと、電力制御ユニット（ＰＣＵ）と、少なくとも１つの他の論理ユニットとを有し、
前記マルチコアプロセッサが低電力状態にあり、前記複数の論理ユニットが継続してトランザクションの空き状態にあり、前記複数の論理ユニットにインフライトトランザクションがない複数の期間が発生した後、前記ＰＣＵは、前記複数の論理ユニットのうち少なくとも１つの論理ユニット、および、前記少なくとも１つのキャッシュメモリのクロックゲーティングを行い、
前記ＰＣＵは、それぞれが前記複数の期間のうち一の期間のトラッキングを行う複数のタイマーを含み、
前記クロックゲーティングは、前記複数の期間の少なくともそれぞれの間、前記１つの非コアが継続して空き状態にある場合に行われる、マルチコアプロセッサ。
【請求項２】
前記マルチコアプロセッサを含むマルチプロセッサシステムの他のマルチコアプロセッサが前記低電力状態にあるとき、前記ＰＣＵは前記クロックゲーティングを行う、請求項１に記載のマルチコアプロセッサ。
【請求項３】
複数の期間、前記複数の論理ユニットが継続して空き状態にない場合、前記ＰＣＵは、前記複数の期間の２回目の反復の間、前記複数の論理ユニットが継続して空き状態にあるかどうかを判断し、前記２回目の反復の間、前記複数の論理ユニットが継続して空き状態にある場合、前記クロックゲーティングを行う、請求項１または２に記載のマルチコアプロセッサ。
【請求項４】
前記少なくとも１つの論理ユニットがクロックゲーティングされているとき、前記ＰＣＵおよび前記ルータはクロックされたままである、請求項１から３のいずれか１項に記載のマルチコアプロセッサ。
【請求項５】
前記１つの非コアが空き状態にない、または、帯域外インタフェース（ＯＯＢインタフェース）を介して、入力トランザクションが受信されたとき、前記ＰＣＵは前記クロックゲーティングを終了する、請求項１から４のいずれか１項に記載のマルチコアプロセッサ。
【請求項６】
前記ＰＣＵは、入力トランザクションの前記マルチコアプロセッサによる受信を防止する、前記クロックゲーティングされた状態への移行フローを実行する、請求項１から５のいずれか１項に記載のマルチコアプロセッサ。
【請求項７】
前記移行フローの後、および前記クロックゲーティングされた状態の間、前記ＰＣＵは前記入力トランザクションを有効化する、請求項６に記載のマルチコアプロセッサ。
【請求項８】
複数のプロセッサソケットがソケット低電力状態に移行することを交渉したか判断し、前記複数のプロセッサソケットの第１プロセッサソケットの非コアが空き状態にあることを判断する段階と、
前記空き状態にある場合、前記非コアに結合された帯域外チャネル（ＯＯＢチャネル）からのトランザクションを防止し、前記非コアが第１期間の後、まだ前記空き状態にあるかどうか判断する段階と、
まだ前記空き状態にある場合、前記非コアに結合された１以上のオフソケットチャネルから入力トランザクションを防止し、前記非コアが第２期間の後、まだ前記空き状態にあるかどうか判断する段階と、
前記非コアが前記第２期間の後、まだ前記空き状態にあるとの判断に応答して前記非コアの複数のユニットのクロックゲーティングを行う段階と
を備える方法。
【請求項９】
前記クロックゲーティングに応答して、前記非コアがクロックゲーティングされた状態にあることを示すよう非コアクロックゲーティング状態信号を更新し、前記ＯＯＢチャネル上の入力トランザクションに応答して前記クロックゲーティングを無効化出来るよう前記ＯＯＢチャネル上のトランザクションを有効化する段階をさらに備える、請求項８に記載の方法。
【請求項１０】
前記第１期間をカウントする継続期間タイマーを開始し、前記第１期間の間、前記非コアが継続して前記空き状態にあったかどうか、前記第１期間の後、判断する段階をさらに備える、請求項８または９に記載の方法。
【請求項１１】
前記第１期間の間、前記非コアが継続して前記空き状態になかった場合、前記ＯＯＢチャネルのトランザクションを有効化する段階をさらに備える、請求項１０に記載の方法。
【請求項１２】
前記第２期間をカウントするドレインタイマーを開始し、前記第２期間の間、前記非コアが継続して前記空き状態にあったかどうか、前記第２期間の後、判断する段階をさらに備える、請求項１０または１１に記載の方法。
【請求項１３】
前記第２期間の間、前記非コアが継続して前記空き状態になかった場合、前記１以上のオフソケットチャネルからの前記入力トランザクションを有効化し、前記ＯＯＢチャネル上のトランザクションを有効化する段階をさらに備える、請求項１２に記載の方法。
【請求項１４】
クロックゲーティング有効化信号をアサートし、クロックゲーティングタイマーを開始し、前記クロックゲーティングタイマーの期限切れに応答して前記クロックゲーティングを指示するよう状態インジケータを設定する段階をさらに備える、請求項１２または１３に記載の方法。
【請求項１５】
前記非コアが前記空き状態のままであり、前記ＯＯＢチャネルを介してリクエスト信号が受信されない間、前記クロックゲーティングを継続し、そうでなければ、前記状態インジケータおよび前記クロックゲーティング有効化信号をディアサートする段階と、
前記ディアサートに応答してクロックアンゲーティングタイマーを開始し、前記クロックアンゲーティングタイマーの期限切れに応じて、前記１以上のオフソケットチャネルからの前記入力トランザクションを防止するフロー制御信号をディアサートする段階と
をさらに備える、請求項１４に記載の方法。
【請求項１６】
第１の複数のコアおよび第１の非コアを有する第１マルチコアプロセッサと、
第２の複数のコアおよび第２非コアを有する第２マルチコアプロセッサと、
前記第１マルチコアプロセッサおよび前記第２マルチコアプロセッサに結合されたダイナミックランダムアクセスメモリ（ＤＲＡＭ）と
を備え、
前記第１マルチコアプロセッサおよび前記第２マルチコアプロセッサがパッケージ低電力状態に移行することを交渉したとき、前記第２非コアは、少なくとも前記第２非コアの一部のクロックゲーティングを行い、
前記第２非コアは、前記第２非コアが継続してトランザクションの空き状態にある複数の期間が発生した後、前記クロックゲーティングを行う電力制御ユニット（ＰＣＵ）を含み、
前記ＰＣＵは、それぞれが前記複数の期間のうち１つのトラッキングを行う複数のタイマーを含み、
前記第２非コアは、前記第２マルチコアプロセッサに結合された帯域外チャネル（ＯＯＢチャネル）からのトランザクションを防止し、その後、前記複数のタイマーのうち第１期間をカウントする第１タイマーを開始し、前記第１期間の後、前記第２マルチコアプロセッサに結合された１以上のオフソケットチャネルからの入力トランザクションを防止し、その後、前記複数のタイマーのうち第２期間をカウントする第２タイマーを開始し、前記第２期間の後、前記クロックゲーティングを行わせる、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
従来のプロセッサの多くは、複数の独立したコアと、「非コア」と呼ばれることが多い追加の論理回路を含むマルチコアの形態で実装される。非コアは、共有キャッシュメモリ、コントローラ、入出力（Ｉ／Ｏ）回路、電力制御回路などを含む。一般的にプロセッサが任意のレベルの低電力モードに移行すると、１以上のコアの回路は無効化され得、コアが有用な動作をする必要がないときに電力消費を低減する。しかし、Ａｄｖａｎｃｅｄ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  Ｐｏｗｅｒ  Ｉｎｔｅｒｆａｃｅ（ＡＣＰＩ）規格（例えば２００６年１０月１０日に発行されたＲｅｖ．３．０ｂ）のいわゆるＣ状態などこれらのモードにおいて、非コアは完全に電力が供給されたままである。
【背景技術】
【０００２】
このように非コアに電力が供給されるという特徴があることの結果として、プロセッサソケット全体の所望されない大きさの電力消費が、低電力モードでも依然として起こり得る。このことは、マルチソケットプラットフォームなどのサーバプロセッサなど特定のプロセッサにおいて特に起こり得る。なぜなら、これらのデバイスは典型的には、ラストレベルキャッシュバンク、キャッシュコントローラ、オフチップリンク、メモリコントローラなどの非コアユニットの数に関して、多くの要求を満たす必要があるからである。このような機能性を満たすべく、かなりの数の論理回路が非コアに存在し得る。そしてこのことにより、動的消費電力は、ソケットがアイドル状態にある場合でもかなりの量となる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
サーバーのアイドル状態時の消費電力の大幅な低減を消費者も規格化団体も要望しているので、このことは解決すべき課題である。
【図面の簡単な説明】
【０００４】
【図１】本願発明の一実施形態に係るプロセッサのブロック図である。
【図２】本願発明の一実施形態に係るマルチプロセッサシステムのブロック図である。
【図３】本願発明の一実施形態に係るマクロクロックゲーティング状態に移行する方法のフロー図である。
【図４】本願発明の一実施形態に係るマクロクロックゲーティング移行フローのフロー図である。
【図５】本願発明の一実施形態に係るマクロクロックゲーティング終了フローのフロー図である。
【図６】本願発明の一実施形態に係るプロセッサコアのブロック図である。
【図７】本願発明の一実施形態に係るシステムのブロック図である。
【発明を実施するための形態】
【０００５】
実施形態によると、プロセッサソケットのアイドル状態時の非コアの動的電力を低減することにより、サーバーのアイドル状態時の全体的な電力の低減が可能となる。より詳細には実施形態により、「マクロクロックゲーティング（ＭＣＧ）」を可能とすることにより、非コア自体の多くが例えばクロックゲーティングを介して無効化され得る低電力状態にソケットの非コアが移行可能になる。いくつかの実施形態において、非コアを含むソケットが低電力状態にあるだけでなく、マルチソケットシステムの追加のソケットも低電力状態にあると判断された場合に、このＭＣＧ動作に移行し得る。
【０００６】
一実施形態において、ＭＣＧ動作は、インフライトトランザクションを失うことなく、非コア内の論理回路の大部分のクロックをゲーティングすることを含み得る。非コアに残っているインフライトトランザクションが存在しないときに、ＭＣＧ移行フローの終わりにＭＣＧ状態に移行し得る。加えて、ＭＣＧ終了フローによると、ＭＣＧ動作は、外部のリクエスト、若しくは内部または外部のイベントが発生しないとき、最小の遅延で非コアの論理回路のクロックをアンゲーティングすることを含み得る。
【０００７】
図１は、本願発明の一実施形態に係るプロセッサのブロック図を示す。詳細には、図１は、マルチコアプロセッサであり、サーバーベースのアプリケーションに適切であり得るプロセッサ１００を示す。示されるようにプロセッサ１００は、複数のコア１１００〜１１０１１を含む。図１の実施形態においては特定数のコアが示されているが、本願発明の態様はこの点に関して限定されない。各コアは、例えば１以上のレベルのキャッシュメモリなどプライベート記憶装置などと関連付けられ得る。加えて各コアは、対応するキャッシュバンクコントローラ１１５０〜１１５１１を介して、例えば複数のスライス１２００〜１２０１１から形成されるラストレベルキャッシュ（ＬＬＣ）など、共有キャッシュメモリのスライスに結合されている。
【０００８】
示されるように、異なる複数のコアおよびキャッシュを介した通信が、双方向性の拡張可能なリング相互接続１６０ａ−ｂであり得るリングベースの相互接続を介して行われ得る。オフチップ通信を行うべく、様々な異なる複数のポートとエージェントとが存在し得る。詳細には、示されるように、例えば、拡張可能メモリ相互接続（ｓｃａｌａｂｌｅ  ｍｅｍｏｒｙ  ｉｎｔｅｒｃｏｎｎｅｃｔ。ＳＭＩ）を介してソケットに結合されたダイナミックランダムアクセスメモリ（ＤＲＡＭ）などシステムメモリのローカル部分へソケットを結合するメモリＩ／Ｏポート１７５に加えて、複数のポイントツーポイント（ＰｔＰ）入出力（Ｉ／Ｏ）ポート１７０が存在し得る。プロセッサの様々なエージェントを用いて、キャッシュコヒーレンスプロトコルが実装され得る。一実施形態において、ＰｔＰリンクにより、物理層、リンク層、およびプロトコル層を含む複数の層を有するキャッシュコヒーレンスプロトコルであるＩｎｔｅｌ（登録商標）Ｑｕｉｃｋ  Ｐａｔｈ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＱＰＩ）プロトコルに準拠した通信が可能となる。このプロトコルを用いることにより、複数のキャッシュエージェントを含むシステム内で、コヒーレントな通信が行われ得る。本願発明の一実施形態によると、「キャッシュエージェント」は、メモリデータのコピーをリクエストし、キャッシュし得る（および当該データを変更し得る）キャッシュ論理回路を一般的に表し得る。そのようなキャッシュエージェントは、メモリのリクエストをルーティングするキャッシュコントローラを含み得る。プロトコルにより、ＰｔＰリンクを介して互いに結合されたデバイス間の通信を可能とする低遅延リンクに沿った、複数のチャネルおよび仮想ネットワーク上での様々な通信が可能となる。当然ながら、本願発明の態様はこの点に関して限定されず、他の実施形態においては、ＰｔＰリンクは他の通信プロトコルに準拠してもよい。
【０００９】
図１に示されるように、ルータ１３０は、ホームエージェント１４００、１４０１のペアに結合し、そしてホームエージェント１４００、１４０１は対応するメモリコントローラ１４５０〜１４５１と通信を行い得る。そしてこれらのメモリコントローラ１４５は、例えばメモリＩ／Ｏポート１７５を介したＳＭＩ相互接続を介し、例えばプロセッサに結合された１以上のデュアルインラインメモリモジュール（ＤＩＭＭ）などシステムメモリのローカル部分に結合され得る。
【００１０】
図１の実施形態において、非コアは、ルータ１３０、ＬＬＣ１２０、キャッシュバンクコントローラ１１５、ホームエージェント１４０、システムリングインタフェース１６０、メモリコントローラ１４５、および電力制御ユニット（ＰＣＵ）１５０により一般的に構成されている。これらのユニットのそれぞれは、非コアクロックと呼ぶ共通のクロック信号によりクロックされ得る。図示を分かりやすくするべく示されてはいないが、非コアクロックは、非コアのクロック生成回路により生成され得る。ＭＣＧ動作によると、非コアの特定のユニットにおける非コアクロックのゲーティングにより、低い動的電力が実質的に実現され得る。一実施形態において、非コアのいくつかのユニットは、ＭＣＧモードの間、電力が供給され（アクティブなクロック信号により）アクティブなままであってもよい。つまり他の実施形態においては、ルータ１３０およびＰＣＵ１５０に電力が供給されたままであってもよく、追加の、または異なるユニットのクロックゲーティングが行われてもよい。一般的にルータ１３０は、入力されるＱＰＩリンクパケットを適切なオンチップの宛て先へルーティングしてもよい。加えてルータ１３０は、オンチップユニット間で送信されるパケットをルーティングしてもよい。よって、外部のソケットおよびＩ／Ｏハブから入力されるパケットは、ルータ１３０の入力ポートに提供される。電力制御ユニット１５０は、コア（およびパッケージ）のＣ状態への移行およびＣ状態の終了など他の電力管理タスクの対応に加えて、ＭＣＧへの移行およびＭＣＧの終了プロセスを順番付けし制御するマイクロコントローラおよび他の制御論理回路を含み得る。図１の実施形態においてはこの特定の実施例が示されているが、本願発明はこの点に関して限定されず、他の実施形態においてマルチコアプロセッサは異なる構成を有し得る。
【００１１】
「デバイス」または「エージェント」などの用語は一般的に用いられており、リンクに結合されるいかなる電気部材をも指し得る。「リンク」または「相互接続」という用語は、メッセージ、つまり所定の形式の情報のための通信経路を確立する情報伝達媒体として一般的に定義される。リンクまたは相互接続は、有線の物理媒体（例えば、バス、１以上の電気配線、トレース、ケーブルなど）、または無線媒体（例えば、無線の信号伝達技術と組み合わせての空気）であってもよい。
【００１２】
実施形態は、多くの異なるシステムタイプで用いられ得る。特定の実施例において、システムは、非一様なメモリアーキテクチャ（ｎｏｎ−ｕｎｉｆｏｒｍ  ｍｅｍｏｒｙ  ａｒｃｈｉｔｅｃｔｕｒｅ。ＮＵＭＡ）を有するマルチプロセッササーバなどマルチソケットシステムであり得る。図２は、本願発明の一実施形態に係るシステムのブロック図である。図２に示されるように、システム２００は、複数のソケット２１００〜２１０３を含む。各ソケットは、図１に関連して説明したものなどマルチコアプロセッサを含み得るが、当然ながら他の実装も可能である。各ソケットは、ＰｔＰリンクを介して他のソケットへ結合され得る。
【００１３】
図２に示されるように、各プロセッサ２１０は中央処理装置（ＣＰＵ）と一般的に呼ばれ得る。さらに示されるように、図１の実施形態などのマルチコアソケットまたはパッケージに対応する各プロセッサ２１０は、メモリ相互接続を介してシステムメモリ２３０のローカル部分とインタフェース接続する統合型メモリコントローラ（ｉｎｔｅｇｒａｔｅｄ  ｍｅｍｏｒｙ  ｃｏｎｔｒｏｌｌｅｒ）を含む。示されるように、各プロセッサ２１０Ｘは、メモリ相互接続を介して、様々な実施形態においてＤＲＡＭとして実装され得るシステムメモリの対応する部分２３０Ｘと通信を行い得る。様々な周辺デバイスなどシステムの他の部材とのインタフェースを設けるべく、プロセッサ２１０のそれぞれは、少なくとも１つのＩ／Ｏハブに結合され得る。詳細には、プロセッサ２１００、２１０２は、Ｉ／Ｏハブ２２００に結合され得、同様にプロセッサ２１０１、２１０３は、Ｉ／Ｏハブ２２０１に結合され得る。図２の実施形態においてはこの基本的な高レベルの構成を示しているが、本願発明の態様はこの点に関して限定されない。
【００１４】
一般的に、ＭＣＧ移行プロセスは、非コアが位置付けられているソケットだけでなく、マルチソケットシステム内の他の全てのソケットが任意の低電力状態にあると判断されたときに開始され得る。このようにするのは、あるソケットが低電力状態にあるときのみＭＣＧへ移行され得るとなると、他のソケットからトランザクションが入力される可能性が高く、ＭＣＧへの移行フローを完了することが出来ない、若しくは、ＭＣＧへ移行することによって生じるコストは、非コアがＭＣＧ状態にあり得る小さなウィンドウに見合わないからである。
【００１５】
より詳細には、一実施形態において、ＭＣＧ移行フローに従ったＭＣＧ状態への移行の開始が許可される前に、様々な前提条件がまず設定され得る。最初に、任意のソケットに関し、全てのコアが、例えばＡＣＰＩ規格のＣ３またはＣ６スリープ状態などの所定の低電力状態にある。限定ではなく例示を目的とし、本明細書においては、Ｃ３およびＣ６のスリープ状態に関して実施形態を説明するが、他のスリープ状態も採用され得る。全てのコアがＣ６またはＣ３状態になると、非コアの電力制御ユニットは「パッケージＣ６」（コアがＣ６にある場合）、または「パッケージＣ３」（コアがＣ３にある場合）と呼ばれるソケット全体の低電力アイドル状態に実質的に移行しようとする。
【００１６】
パッケージＣ３およびパッケージＣ６移行プロセスの延長としてＭＣＧ状態に移行し得る。よってＭＣＧ状態は実質的に、パッケージＣ６またはパッケージＣ３状態にあるときの、非コアのアイドル状態時の電力低減状態である。しかし、現行のＡＣＰＩ規格はこの状態をサポートしていないので、ＭＣＧ状態はＡＣＰＩ規格とは独立していてもよい。異なる低電力状態に用いられる他の実施形態において、オペレーティングシステム（ＯＳ）の電力制御とは独立してＭＣＧ状態に移行し、ＭＣＧ状態を終了してもよく、代わりに、非コアＰＣＵなどプロセッサのマイクロコントローラにより制御されてもよい。
【００１７】
ＭＣＧ状態への移行の他の前提条件として、プラットフォーム内の全ての他のソケットがパッケージＣ３またはパッケージＣ６状態にある（または移行しようとしている）。共通の低電力状態が存在するこの状態を可能とするべく、パッケージＣ６および／またはパッケージＣ３への移行が調整され、当該移行が全てのソケット、並びにＩ／Ｏハブの間で合意されるように、様々なソケットの間で交渉プロセスが起こり得る。
【００１８】
このことにより、全てのソケットが共にパッケージＣ６またはパッケージＣ３へ移行するようになり、ＭＣＧ状態である期間が最大化される。ＭＣＧ状態のためのさらに他の前提条件として、メモリサブシステムも、ＳＭＩリンクがアクティブでないことを示す、一実施形態においては「ＳＭＩキル」状態と呼ぶ低電力状態に移行していてもよい。この低電力状態により、メモリコントローラおよびホームエージェントの論理回路がクロックゲーティングされ得る。これらの前提条件が満たされると、各非コアをＭＣＧ状態に移行させようとするべく、様々なソケットの非コアにおいてＭＣＧ移行フローが開始され得る。
【００１９】
一実施形態において、ＭＣＧ状態で、キャッシュバンクコントローラ、ホームエージェント、メモリコントローラ、およびシステムリングインタフェースユニットなどの非コアユニットを含む非コアの様々な回路が全てゲーティングされ得る。このゲーティングは領域毎のクロックバッファレベルで行われ得、これにより、細粒度のゲーティング方式の複雑さを避けることが出来る。
【００２０】
これらの前提条件が満たされると、ＭＣＧへの移行が進められ得る。なお、非コアの物理的大きさが故に、異なる複数の実施形態において、クロックゲーティングプロセス自体が、異なる数の非コアクロックサイクル（例えば、およそ１０〜２０サイクル）を要し得る。これは、ゲーティングされる全てのユニットにクロックゲーティング信号が到達出来るようにするためである。クロックゲーティングプロセスが問題なく行われるようにするため、様々なメカニズムが設けられ得る。一例として、非コアの各ユニットは、空き状況を示す、空き状態インジケータ、または「空き状態」信号を生成してもよい。よってこの状況は、対応するユニットが内部にインフライトトランザクションを有さないことを示す。全ての非コアユニットの空き状態は、合わせて論理的にＡＮＤ処理を行われ、非コア全体としての空き状況が判断され得る。一実施形態において、論理的なＡＮＤ処理は、ＰＣＵで実行され得るが、本願発明の態様はこの点に関して限定されない。
【００２１】
加えて、ＭＣＧ移行フローは入力トランザクションのフローを制御するメカニズムを用い得る。つまり、クロックゲーティングを行うという判断がされると、新たなトランザクションはクロックゲーティングされるユニットに送信されてはならない。このフロー制御は、入力トランザクションの全てを、クロックゲーティングされるユニットに入れないようにブロックすることにより実施することが出来る。一実施形態において、このフロー制御メカニズムは非コアのルータ内に位置付けられ、クロックゲーティングが問題なく行われるまで、様々なＰｔＰ相互接続などオフチップインタフェースから他のソケット（またはＩ／Ｏハブ）への全てのトランザクションをブロックしてもよい。一例としてルータは、ソケットへのトランザクションの送信を制限すべく、他のソケット／Ｉ／Ｏハブへのオフチップの相互接続を介してフロー制御信号を送信してもよい。
【００２２】
帯域外（ＯＯＢ）インタフェースから入ってくるトランザクションがクロックゲーティングにより失われることがないよう、さらに他のメカニズムがＭＣＧ移行フローにおいて用いられ得る。この機能性を可能とすべく、一実施形態において、クロックゲーティングされた論理回路へアクセスしようとする新たな入力ＯＯＢトランザクションは実質的に受信確認されない（ＮＡＣＫ応答される）ので、後の時間に再試行される。なお、クロックゲーティングされた論理回路へアクセスする必要のないＯＯＢトランザクションの処理は通常通りに進められ、完了され得る。そのようなトランザクションの一例は、ダイ温度に関するＰＣＵへの問い合わせである。
【００２３】
図３は、本願発明の一実施形態に係るＭＣＧ状態に移行する際に実施される様々な動作を示すフロー図である。図３に示されるように、方法２５０は、例えば、いくつかの実施形態においては非コアのＰＣＵの一部であってもよい、非コアの制御論理回路で実施され得る。一般的に、方法２５０は、ＭＣＧ状態への移行を試みることが適切だと判断し、様々なタイマーのタイムアウトに対応し得る、複数の決定された期間の間、非コアが空き状態であると判断された場合にＭＣＧ状態に移行するための動作を行うことにより進められ得る。図３に示されるように、方法２５０は、全てのソケットが、例えばＣ３またはＣ６パッケージ状態などの任意のＣ状態である低電力ソケット状態にある、または当該任意のＣ状態へ移行しようとしていると判断することにより開始され得る（ブロック２５５）。この判断は、プラットフォームのソケット間の交渉の結果に基づいてもよい。次に、非コアが空き状態にあると判断され得る（ブロック２６０）。つまりこの判断は、非コアの様々なユニット内にペンディング中のトランザクションがないことを意味し、このことは、非コアの全ての論理ユニットからの空き状態信号の論理的なＡＮＤ処理によって識別され得る。次に、ＯＯＢチャネル上のトランザクションが防止し得る（ブロック２６５）。ＭＣＧイベントの間、そのようなトランザクションが受信されるのを防止する様々なメカニズムについては以下に説明する。続いて、非コアがまだ空き状態にあるかどうか判断され得るブロック２７０の制御が行われる。
【００２４】
この判断の結果が肯定的な場合、ソケットに接続された様々なＰｔＰ相互接続などオフソケットチャネルから、入力トランザクションが入ってくるのを防止するブロック２７５の制御が行われる。さらに再びブロック２８０において、非コアがまだ空き状態にあると判断され得る。よってこのことは、ペンディング中のトランザクションがないということを示しており、ＭＣＧ状態に移行するのが適切であるということを示している。したがって、様々な非コアユニットがクロックゲーティングされ得るブロック２８５の制御が行われる。このクロックゲーティングを実行するための異なる複数のメカニズムについては以下に説明する。最終的にブロック２９０において、非コアがＭＣＧ状態にあることを示すよう非コアクロックゲーティング状況が更新され、さらにこの時点において、ＯＯＢチャネル上のトランザクションが有効化され得る。つまり、非コアはこの時点でクロックゲーティングされた状態にあるので、そのようなトランザクションが有効化され、非コア論理回路がＯＯＢトランザクションを扱う必要がある場合には、ＭＣＧ状態を終了することが出来る。図３の実施例ではこの高レベルの構成が示されているが、本願発明の態様はこの点に関して限定されない。例えば、直線的なフローが示されたが、フローの様々な時点で非コアの空き状態を判断することにより、ＭＣＧ移行フローが再開され得、または特定の動作が再試行され得る。
【００２５】
図４は、本願発明の一実施形態に係るＭＣＧ移行フローに従う動作のフロー図である。図４に示すように方法３００は、例えば非コアのＰＣＵ内のＭＣＧ論理回路によって実施され得る。なおＭＣＧ状態に移行する前提条件として、ブロック３１０において、パッケージ内の全てのコアが選択された低電力状態にあり（または、選択された低電力状態に移行するプロセスにあり）、同じことが全てのプロセッサソケットに関しても当てはまることが判断され得る。加えて、プロセッサに結合されたメモリも、低電力メモリ相互接続状態（例えば、アクティブＳＭＩキル信号）により示されるように例えばセルフリフレッシュ状態などの低電力状態にあると判断され得る。
【００２６】
この判断の結果が肯定的である場合、ＭＣＧ状態に移行する条件が満たされたことになる。したがって、ＭＣＧへの移行の第１段階が実行され得る。最初にひし形３１５において、非コアが空き状態にあるかどうか判断される。もし判断の結果が肯定的であれば、ＯＯＢインタフェースがドレインされ、タイマーの初期化と共に様々な制御信号が設定され得るブロック３２０の制御が行われる（ブロック３２０）。より詳細には、この第１段階において、ＯＯＢインタフェースに、クロックゲーティングされることになる論理回路にアクセスしようとする全てのトランザクションに対しＮＡＣＫ応答を開始させる「ＮＡＣＫ  Ｅｎａｂｌｅ」ビットが設定され、そのようなアクセスを試みる全てのインフライトＯＯＢトランザクションが（例えば、トランザクションを適切に扱うことにより）ドレインされる。一実施形態において、ＯＯＢインタフェースは、アサートされた場合にＭＣＧを終了させ得る「ＮＡＣＫ  Ｒｅｑｕｅｓｔ」信号を有する。この信号のアサートは、この時点において無効化される。その後、非コアの空き状態が、空き状態継続期間と呼ばれるプログラム可能な特定の期間の間、継続的にサンプリングされ、非コアが継続的に空き状態にあることを確認する。この期間は、このブロック３２０において初期化される継続期間タイマーと呼ばれるタイマーによってトラッキングされ得る。継続期間タイマーの長さはプログラム可能であり得、一実施形態においては、およそ５０〜１０００サイクルの間であり得る。一実施形態において、このタイマーおよび説明される他のタイマーはＰＣＵ内に存在し得る。
【００２７】
この期間が終わり、空き状態継続期間の全体に亘り（１つの非コアクロックサイクルの間においても）ディアサートイベントが起こることなく非コア空き状態信号がアサートされたままであるとの判断がひし形３２５において行われ、ＭＣＧ移行フローの第２段階がトリガされる。なお、この非コア空き状態信号が第１段階のいずれかの時間においてサンプリングされディアサートされた場合、（ひし形３３０およびブロック３３５で示されるフローで）移行プロセスが中止され、ＯＯＢ  ＮＡＣＫＥｎａｂｌｅが再設定される。
【００２８】
この第２段階において、ひし形３４０において非コアがまだ空き状態にあると判断されたものと仮定すると、フロー制御メカニズムが有効化され得るブロック３５０の制御が行われる。より詳細には、ＱＰＩリンクのフロー制御が行われ、ルータ入力ポートを超える新たなパケットの送信を防止する。この段階においても、「ドレイン期間」と呼ばれるプログラム可能な特定の期間の間、非コア空き状態信号が継続的にサンプリングされる。この期間は、「ドレインタイマー」と呼ばれるタイマーによりトラッキングされ得る。このドレインタイマーの長さはプログラム可能であり得、一実施形態においては、およそ５０〜１０００サイクルの間であり得る。この第２段階は、フロー制御信号がアサートされる直前に到着したインフライトトランザクションの処理が問題なく進められ、最終的に非コア空き状態信号をディアサートすることを実質的に可能とする。なお、この入力信号は、非コア空き状態信号のディアサートを引き起こし、よって、ＭＣＧ移行フロー全体の再開を引き起こす。（ひし形３６０および３７５における判断の結果が肯定的であり）この期間が終わり、「ドレイン期間」の全体に亘り１つの非コアクロックサイクルの間もディアサートイベントが起こることなく非コア空き状態信号がアサートされたままである場合、第３段階がトリガされる。（ひし形３６５または３７５の判断により）非コア空き状態信号が第２段階のいずれかの時間においてサンプリングされディアサートされた場合、移行プロセスが中止され、（ひし形３７０および３３５において）ＮＡＣＫ  Ｅｎａｂｌｅが再設定され、ＱＰＩリンクフロー制御がディアサートされる。
【００２９】
ＭＣＧ移行フローのこの最終段階である第３の段階において、ブロック３８０で実際のクロックゲーティング信号がアサートされる。加えて、クロックゲーティング信号の生成位置から比較的遠く離れたユニットに到達するクロックゲーティング信号の伝搬遅延に対応すべく、「クロックゲーティング」タイマーが開始され、このタイマーの期限が切れると、クロックゲーティングが完了したと見なされる。クロックゲーティングタイマーの長さはプログラム可能であってよく、一実施形態においては、１０〜３０サイクルの範囲内であり得る。（ひし形３８５の判断により）このタイマーの期限が切れるとＭＣＧへの移行が行われたものと見なされ、「Ｕｎｃｏｒｅ  Ｃｌｏｃｋ  Ｇａｔｅｄ」状態信号がブロック３９０において設定される。この状態信号が設定されると、ＯＯＢインタフェースは「ＣＬＫ  Ｒｅｑ」信号をアサートすることによりＭＣＧの終了を指示出来る（よって、システムをクロックアンゲーティング状態に戻す）。なお、「ＣＬＫ  Ｒｅｑ」信号は「Ｕｎｃｏｒｅ  Ｃｌｏｃｋ  Ｇａｔｅｄ」状態信号が設定されているとき（つまりクロックがゲーティングされているとき）のみ有効である。またブロック３９０において、「ＮＡＣＫ  Ｅｎａｂｌｅ」信号もディアサートされる。よってこの時点において、非コアは、ルータおよびＰＣＵを除く全ての非コアユニットがクロックゲーティングされたＭＣＧ低電力状態にあり、動的消費電力が低減される。非コアは、任意のイベントまたは出来事によって終了がトリガされるまでこの状態のままである。
【００３０】
一般的にクロックゲーティングまたはＭＣＧ状態の終了は、複数の条件のうち１つに応じて起こり得る。一実施形態において、第１条件は、ＱＰＩリンクの１つを介してルータ入力ポートから新たなトランザクションが受信され、非コア空き状態信号がディアサートされるということである。第２条件は、非コアクロックを有さないユニットを用いる新たなＯＯＢトランザクションが受信され、「ＯＯＢ  Ｃｌｋ  Ｒｅｑ」信号のアサートが起こるということである。
【００３１】
図５は、本願発明の一実施形態に係るＭＣＧ終了フローのフロー図である。図５に示されるように、一実施形態において終了フロー４００は同様に、ＰＣＵのＭＣＧ制御論理回路を介して実施され得る。図５に示されるように方法４００は、ＭＣＧ状態がアクティブである、言い換えると、Ｕｎｃｏｒｅ  Ｃｌｏｃｋ  Ｇａｔｅｄ状態信号がアクティブであるときに開始される（ブロック４１０）。ひし形４２０において、非コアが空き状態にあり、クロックリクエストがアサートされていないかが判断される。判断の結果が肯定的であれば、非コアはＭＣＧ状態のままである。そうでなければ、ブロック４３０の制御が行われる。ブロック４３０において、クロックゲーティング有効化信号がディアサートされ、クロックアンゲーティングタイマーが開始される。加えて、Ｕｎｃｏｒｅ  Ｃｌｏｃｋ  Ｇａｔｅｄ状態信号が非アクティブ化され得る。なお、クロックアンゲーティングプロセスは、ある程度の回数のサイクルの実行を要し得る。このアンゲーティング期間は、「クロックアンゲーティング」期間と呼ばれ得る。一実施形態においてこの期間は、「クロックアンゲーティング」タイマーを用いてトラッキングされ得る。クロックアンゲーティングタイマーの長さはプログラム可能であってよく、一実施形態において、およそ１０〜３０サイクルの範囲であり得る。本願発明の態様はこの点に関して限定されないが、（ひし形４４０の判断において）このタイマーの期限が切れると、（ブロック４５０において）リンクフロー制御信号がディアサートされ得、「Ｕｎｃｏｒｅ  Ｃｌｏｃｋ  Ｇａｔｅｄ」信号が再設定される。このことにより、この時点でＯＯＢインタフェースは制限なく非コアの全てのユニットへアクセス出来るので、Ｃｌｋ  Ｒｅｑ信号の必要性がなくなる。図５の実施形態においてはこの特定の実施例が示されているが、本願発明の態様はこの点に関して限定されない。
【００３２】
実施形態は、異なるコアアーキテクチャを有するマルチコアプロセッサに用いられ得る。図６は、本願発明の一実施形態に係るプロセッサコアのブロック図である。図６に示されるように、プロセッサコア５００はマルチステージパイプラインアウトオブオーダープロセッサであり得、関連する非コアがＭＣＵ移行フローを開始する前に低電力状態（例えば、Ｃ３またはＣ６状態）であり得る存在する複数のコアのうち１つであり得る。
【００３３】
図６に示されるように、コア５００は、実行される命令をフェッチし、それら命令を後にプロセッサで用いられ得るようにするフロントエンドユニット５１０を含む。例えばフロントエンドユニット５１０は、フェッチユニット５０１、命令キャッシュ５０３、および、命令デコーダ５０５を含み得る。いくつかの実施例において、フロントエンドユニット５１０はさらに、マイクロコード記憶装置、およびマイクロオペレーション記憶装置と併せてトレースキャッシュを含み得る。フェッチユニット５０１は、例えばメモリまたは命令キャッシュ５０３からマクロ命令をフェッチし、当該マクロ命令を基本命令、つまりプロセッサにより実行されるマイクロオペレーションにデコードすべく命令デコーダ５０５に供給する。
【００３４】
フロントエンドユニット５１０と実行ユニット５２０との間には、マイクロ命令を受信しそれらを実行され得るようにするアウトオブオーダー（ＯＯＯ）エンジン５１５が結合される。より詳細にはＯＯＯエンジン５１５は、マイクロ命令フローを再度順序付け、実行のために必要な様々なリソースを割り当て、レジスタファイル５３０および拡張レジスタファイル５３５などの様々なレジスタファイル内の格納位置へ論理レジスタの名前を変更する様々なバッファを含み得る。レジスタファイル５３０は、整数および浮動小数点操作のための別個のレジスタファイルを含み得る。拡張レジスタファイル５３５は、例えばレジスタあたり２５６または５１２ビットなどのベクトルサイズの単位での格納部を実現する。
【００３５】
例えば様々な整数、浮動小数点、および単一命令複数データ（ＳＩＭＤ）論理ユニット、およびその他専用のハードウェアを含む様々なリソースが実行ユニット５２０に存在し得る。例えば、そのような実行ユニットは、１以上の算術論理演算ユニット（ＡＬＵ）５２２およびその他の実行ユニットを含み得る。
【００３６】
実行ユニットからの結果は、リタイア論理回路、つまり、リオーダーバッファ（ＲＯＢ）５４０に提供され得る。より詳細には、ＲＯＢ５４０は、実行される命令に関する情報を受信する様々なアレイおよび論理回路を含み得る。その後この情報は、ＲＯＢ５４０によって検証され、命令が正当にリタイアされ得、プロセッサのアーキテクチャ状況にコミットしたデータを生じさせるか、または、命令の適切なリタイアを防止する１以上の例外状況が発生したかどうかの判断が行われる。当然ながら、ＲＯＢ５４０はリタイアに関する他の動作も扱い得る。
【００３７】
図６に示されるように、ＲＯＢ５４０はキャッシュ５５０に結合され、キャッシュ５５０は一実施形態において、低レベルキャッシュ（例えばＬ１キャッシュ）であり得るが、本願発明の態様はこの点に関して限定されない。また、実行ユニット５２０は直接キャッシュ５５０に結合され得る。キャッシュ５５０から、高レベルキャッシュ、システムメモリなどとのデータ通信が行われ得る。図６においてはこの高レベルの構成が示されているが、本願発明の態様はこの点に関して限定されない。例えば、図６の実装例は、いわゆるｘ８６命令セットアーキテクチャ（ＩＳＡ）などのアウトオブオーダーマシンに関するが、本願発明の態様はこの点に関して限定されない。代わりにコアは、インオーダープロセッサ、ＡＲＭベースプロセッサなど縮小命令セットコンピューティング（ＲＩＳＣ）プロセッサ、または、エミュレーションエンジンおよび関連付けられた論理回路を介して異なるＩＳＡの命令および動作をエミュレート出来る他のタイプのＩＳＡのプロセッサとして実装され得る。
【００３８】
実施形態は、多くの異なるタイプのシステムにおいて実装され得る。図７は、本願発明の一実施形態に係るシステムのブロック図である。図７に示すようにマルチプロセッサシステム６００は、ポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続６５０を介して互いに結合された第１プロセッサ６７０と第２プロセッサ６８０とを含む。図７に示されるように、プロセッサ６７０、６８０のそれぞれは、第１および第２プロセッサコア（つまり、プロセッサコア６７４ａ、６７４ｂ、およびプロセッサコア６８４ａ、６８４ｂ）を含む多数のコアを有するプロセッサであり得る。なお、より多くのコアがプロセッサ内に存在していてもよい。加えて各プロセッサは、本願発明の一実施形態に係るＭＣＧフローを実施する非コア６７５、６８５を含み得る。
【００３９】
続けて図７を参照すると、第１プロセッサ６７０はさらに、メモリコントローラハブ（ＭＣＨ）６７２と、ポイントツーポイント（Ｐ−Ｐ）インタフェース６７６、６７８とを含む。同様に、第２プロセッサ６８０はＭＣＨ６８２とＰ−Ｐインタフェース６８６、６８８とを含む。図７に示されるように、ＭＣＨ６７２、６８２はプロセッサを、各プロセッサにローカルに取り付けられたシステムメモリ（例えばＤＲＡＭ）の一部であってもよい各メモリ、つまり、メモリ６３２およびメモリ６３４に結合する。第１プロセッサ６７０および第２プロセッサ６８０は、Ｐ−Ｐ相互接続６５２、６５４を介してチップセット６９０に結合されてもよい。図７に示されるようにチップセット６９０は、Ｐ−Ｐインタフェース６９４、６９８を含む。
【００４０】
さらに、チップセット６９０は、Ｐ−Ｐ相互接続６３９によりチップセット６９０を高性能グラフィクスエンジン６３８に結合するインタフェース６９２を含む。そしてチップセット６９０は、インタフェース６９６を介して第１バスに結合され得る。図７に示されるように、第１バス６１６を第２バス６２０に結合するバスブリッジ６１８と併せて、様々な入出力（Ｉ／Ｏ）デバイス６１４が、第１バス６１６に結合され得る。例えばキーボード／マウス６２２、通信デバイス６２６、および、データ記憶ユニット６２８を含む様々なデバイスが第２バス６２０に結合され得る。一実施形態においてデータ記憶ユニット６２８は、コード６３０を含み得るディスクドライブ、または他の大容量記憶デバイスであり得る。さらに、オーディオＩ／Ｏ６２４が第２バス６２０に結合され得る。実施形態は、スマートセルラーフォン、タブレットコンピュータ、ネットブックなどのモバイルデバイスを含む他のタイプのシステムに組み込まれ得る。
【００４１】
実施形態はコードを用いて実装されてもよく、当該コードは、命令を格納した記憶媒体に格納され得、当該記憶媒体を用いて、システムが当該命令を実行するようプログラムされ得る。記憶媒体には、フロッピー（登録商標）ディスク、光ディスク、半導体ドライブ（ＳＳＤ）、ＣＤ−ＲＯＭ、ＣＤ−ＲＷ、および光磁気ディスクを含むディスクなどの何らかのタイプの非一時的記憶媒体、読取専用メモリ（ＲＯＭ）などの半導体デバイス、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、消去可能プログラム可能読取専用メモリ（ＥＰＲＯＭ）、フラッシュメモリ、電気的消去可能プログラム可能読取専用メモリ（ＥＥＰＲＯＭ）などのランダムアクセスメモリ（ＲＡＭ）、磁気カードまたは光カード、若しくは、電子命令を格納するのに適した他の何らかのタイプの媒体が含まれ得るが、これらに限定されない。
【００４２】
本願発明について限られた数の実施形態に関して説明してきたが、当業者であれば、様々な修正例および変形例が実施可能であることを理解されよう。以下の請求項は、そのような修正例および変形例の全てを本願発明の思想および態様に含まれるものとして包含するよう意図されている。
【図１】
0005771327.tif 000002
【図２】
0005771327.tif 000003
【図３】
0005771327.tif 000004
【図４】
0005771327.tif 000005
【図５】
0005771327.tif 000006
【図６】
0005771327.tif 000007
【図７】
0005771327.tif 000008