(57)【特許請求の範囲】
【請求項１】
方法であって、
複数のコアキャッシュ・クラスタを含むマルチコア・プロセッサの第１のスケーラビリティ・エージェント（ＳＡ）においてシステム相互接続インタフェースから要求データを受信する工程と、
要求側コアを含む第１のコアキャッシュ・クラスタの局所キャッシュの線に前記要求データを記憶する工程と、
前記要求データが前記局所キャッシュの線内に存在しており、前記要求側コアによって要求されているか、又はアクセスされている旨を示すために、前記線のタグ・アレイのベクトルにおけるクラスタ・フィールド及びコア・フィールドを更新する工程とを含み、前記クラスタ・フィールドは、前記複数のコアキャッシュ・クラスタのうちの１つにそれぞれが対応する複数のビットを有し、前記コア・フィールドは、前記第１のコアキャッシュ・クラスタのコアにそれぞれが対応する複数のビットを有する方法。
【請求項２】
請求項１記載の方法であって、前記要求データを前記要求側コアに供給する工程を更に含む方法。
【請求項３】
請求項２記載の方法であって、前記局所キャッシュの前記線においてのみ前記要求データを保持する工程を更に含む方法。
【請求項４】
請求項１記載の方法であって、クロス・スヌープ表示子が第１の状態を有して、前記要求データに対する要求を第２のコアキャッシュ・クラスタから前記第１のスケーラビリティ・エージェントにおいて受信する工程を更に含む方法。
【請求項５】
請求項４記載の方法であって、回答トランザクションにおいて前記要求データを前記第２のコアキャッシュ・クラスタの前記要求側コアに供給し、前記回答トランザクションに関連付けられた局所データ表示子が第１の状態のものの場合、前記要求データを前記第２のコアキャッシュ・クラスタの局所キャッシュに記憶しない工程を更に含む方法。
【請求項６】
請求項４記載の方法であって、回答トランザクションにおいて前記要求データを前記第２のコアキャッシュ・クラスタの前記要求側コアに供給し、前記回答トランザクションに関連付けられた局所データ表示子が第２の状態のものの場合、前記要求データを前記第２のコアキャッシュ・クラスタの局所キャッシュに記憶する工程を更に含む方法。
【請求項７】
請求項１記載の方法であって、前記第１のコアキャッシュ・クラスタの何れかのコアが前記要求データにアクセスした旨を前記ベクトルが示す場合、前記第１のＳＡにアクセスすることなく読み出し要求に応じて、前記線からの前記要求データを前記局所キャッシュから直接前記第１のコアキャッシュ・クラスタに供給する工程を更に含む方法。
【請求項８】
請求項１記載の方法であって、前記クラスタ・フィールド及び前記コア・フィールドを更新する工程は、前記ベクトルにおける前記第１のコアキャッシュ・クラスタ及び前記要求側コアに関連付けられたクラスタ・ビット及びコア・ビットをセットする工程を含む方法。
【請求項９】
装置であって、
第１のダイ及び第２のダイを含むプロセッサ・ソケットであって、前記プロセッサ・ソケットは、
キャッシュ・メモリ、及び前記キャッシュ・メモリと通信する１つ又は複数のプロセッサ・コアとをそれぞれが含む複数のコアキャッシュ・クラスタであって、各コアキャッシュ・クラスタの前記キャッシュ・メモリが非包括的であり、前記コアキャッシュ・クラスタ全ての前記キャッシュ・メモリの集約が包括的であり、よって、データの単一の複製のみが、前記プロセッサ・ソケットの前記キャッシュ・メモリの前記集約内に存在する複数のコアキャッシュ・クラスタと、
前記複数のコアキャッシュ・クラスタのうちの１つにそれぞれが結合された複数のスケーラビリティ・エージェントであって、スケ―ラビリティ・エージェントは、前記複数のコアキャッシュ・クラスタが単一のキャッシング・エージェントとしてみえることを確実にするためのプロトコルに応じて動作する複数のスケーラビリティ・エージェントと、
前記複数のスケーラビリティ・エージェントに結合するための相互接続とを備える装置。
【請求項１０】
請求項９記載の装置であって、前記キャッシュ・メモリの前記集約が併せて共有キャッシュ・メモリを形成する装置。
【請求項１１】
請求項９記載の装置であって、単一のデータ複製のみが、前記キャッシュ・メモリの前記集約に存在している装置。
【請求項１２】
請求項９記載の装置であって、前記複数のスケーラビリティ・エージェントは、データの第１のロード・アクセスを、前記データを要求した前記コアキャッシュ・クラスタの前記キャッシュ・メモリに提供する装置。
【請求項１３】
請求項９記載の装置であって、前記キャッシュ・メモリは、ベクトルを記憶するためのタグ・アレイを含み、各ベクトルは、対応するキャッシュ線をどのコアキャッシュ・クラスタが含むかを示す旨のコアキャッシュ・クラスタ毎のクラスタ・ビットを記憶するための第１のフィールド、及び対応するコアキャッシュ・クラスタのコア毎にコア・ビットを記憶するための第２のフィールドを含む装置。
【請求項１４】
請求項１３記載の装置であって、各コアキャッシュ・クラスタは、それに関連付けられたクラスタ数を有する装置。
【請求項１５】
システムであって、
第１のキャッシュ・メモリ、前記第１のキャッシュ・メモリと通信する第１のプロセッサ・コア、及び第１のスケーラビリティ・エージェント（ＳＡ）をそれぞれが含む第１の複数のコアキャッシュ・クラスタを含む第１のプロセッサであって、各コアキャッシュ・クラスタの前記第１のキャッシュ・メモリは非包括的であり、前記第１の複数のコアキャッシュ・クラスタ全ての前記第１のキャッシュ・メモリの集約は包括的であり、よって、データの単一の複製のみが、前記第１のキャッシュ・メモリの前記集約内に存在する第１のプロセッサと、
第２のキャッシュ・メモリ、前記第２のキャッシュ・メモリと通信する第２のプロセッサ・コア、及び第２のＳＡをそれぞれが含む第２の複数のコアキャッシュ・クラスタを含む第２のプロセッサであって、各コアキャッシュ・クラスタの前記第２のキャッシュ・メモリは非包括的であり、前記第２の複数のコアキャッシュ・クラスタ全ての前記第２のキャッシュ・メモリの集約は包括的であり、よって、データの単一の複製のみが、前記第２のキャッシュ・メモリの前記集約内に存在する第２のプロセッサと、
前記第１のプロセッサを前記第２のプロセッサに結合するためのポイントツーポイント（ＰＴＰ）相互接続と、
前記第１のプロセッサに結合されたダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）とを備えるシステム。
【請求項１６】
請求項１５記載のシステムであって、前記第１のＳＡは、前記第１の複数のコアキャッシュ・クラスタのうちの別のものからのデータに対する要求後に、対応する第１のキャッシュ・メモリの線においてのみデータを保持するシステム。
【請求項１７】
請求項１５記載のシステムであって、前記第１のキャッシュ・メモリの前記集約が併せて前記第１のプロセッサの共有キャッシュ・メモリを形成するシステム。
【請求項１８】
請求項１５記載のシステムであって、前記第１のキャッシュ・メモリは、ベクトルを記憶するためのタグ・アレイを含み、各ベクトルは、対応するキャッシュ線を、前記第１の複数のコアキャッシュ・クラスタのうちのどれが含むかを示す旨の前記第１の複数のコアキャッシュ・クラスタ毎のクラスタ・ビットを記憶するための第１のフィールド、及び前記第１の複数のコアキャッシュ・クラスタのうちの対応するもののコア毎にコア・ビットを記憶するための第２のフィールドを含むシステム。
【請求項１９】
請求項１８記載のシステムであって、前記第１の複数のコアキャッシュ・クラスタそれぞれが、前記タグ・アレイの前記クラスタ・ビットに記憶されるためにそれに関連付けられたクラスタ数を有するシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
マイクロプロセッサは一般に、単一の半導体集積回路（ＩＣ）上に製造された種々の論理回路を含む。前述の論理回路は通常、プロセッサ・コア、メモリや他の構成部分を含む。現在のハイエンド・プロセッサは、同じＩＣ上の複数のプロセッサ・コアを含む。例えば、チップ・マルチプロセッサ（ＣＭＰ）などのマルチコア・プロセッサは、ＩＣ内の複数のプロセッサ・コアを実現するマルチコア構造を特徴とする。
【背景技術】
【０００２】
シリコンの効率の増加により、次に、更なる機能をプロセッサ・シリコンに追加するための新たな機会が提供される。例として、アプリケーションは、同じプロセッサにおける処理コアの増加によって実現されるマルチスレッド機能の強化を利用する。マルチコア・プロセッサの性能は、集約されたプロセッサ・コアが、システム相互接続レーテンシの課題を軽減し、スケーラビリティの課題、及び相互接続の飽和を避けるために一キャッシング・エージェントのようにみえることを確実にすることによって最適化することができる。複数のコアにそれぞれが関連付けられたキャッシュを含むシステムは、別個のキャッシュ領域として各キャッシュがふるまう分離キャッシュとして構造化される。これは、コヒーレンス・ミスの合計数を増加させ、よって、命令毎のミスを増加させる。分離キャッシュは更に、別個のキャッシュ全てにおける共有コード／データの複製による容量を喪失する。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
スケーラビリティ・エージェント・プロトコルは、プロセッサにおけるコアの数のスケーリングのクラスタ化された手法を可能にする。クラスタ化されたスケーリング手法では、コアキャッシュ装置がビルディング・ブロックとして使用され、前述の複数の装置を結合してプロセッサ内のコアの数を増加させる。コアキャッシュ装置は、適切な容量の共有キャッシュを有する２つ以上のコアを含み得る。種々の実施例では、共通システム相互接続（ＣＳＩ）などのシステム相互接続を介して結合されたものなどの、マルチコア・プロセッサの複数のコアキャッシュ・クラスタ（本明細書では「クラスタ」として表す）は、ソケット・ワイドの包括的キャッシュ構造を提供するよう適合することができる一方、個々のクラスタ・キャッシュは非包括的である。「コアキャッシュ・クラスタ」の語は一般に、１つ又は複数のコア、及び共有キャッシュを備えるモジュラ・ユニットとみなされる。コアキャッシュ・クラスタは、スケーラブルなマルチコア・プロセッサのビルディング・ブロックとして使用される。
【課題を解決するための手段】
【０００４】
本発明の一実施例によれば、「スケーラビリティ・エージェント・プロトコル」は、互いに別個に動作するコアキャッシュ・クラスタの集約を可能にし、数の増減にかかわらず、メモリ・コヒーレンシを維持する役割がコアキャッシュ・クラスタのうちでおおよそ等しく分配される「グレースフル」なスケーラビリティを提供する通信手法である。スケーラビリティ・エージェント・プロトコルは、システム・メモリ・アドレス空間におけるアドレス領域において区分可能であるからである。キャッシュコア・クラスタにおけるキャッシュに対するレーテンシは実質的に、コアの数が増加しても変わらない状態に留まる。
【発明を実施するための最良の形態】
【０００５】
「スケーラビリティ・エージェント」は、コアキャッシュ・クラスタに関連付けられたソケットとの間の入力トランザクション及び出力トランザクションのフローを管理し、スケーラビリティ・エージェント・プロトコルをサポートするハードウェア及び／又はソフトウェアである。本発明の一実施例によれば、スケーラビリティ・エージェントは、（ｉ）一キャッシング・エージェントとしてみえるようコアキャッシュ・クラスタを集約し、（ｉｉ）同じＩＣ上のコアキャッシュ・クラスタ間の局所キャッシュ・コヒーレンスを処理し、（ｉｉｉ）他のコアキャッシュ・クラスタが追加されてもコアキャッシュ・クラスタの動作があまり影響を受けないようにスケーラビリティをサポートする。
【実施例】
【０００６】
次に図１を参照すれば、スケーラビリティ・エージェントを有する、クラスタ化されたＣＭＰなどのマルチコア・プロセッサ３００の例示的な実施例を示す。マルチコア・プロセッサ３００は、ダイ上の相互接続３２０を介して互いに通信する複数のコアキャッシュ・クラスタ３１０１乃至３１０ｎ（全体としてクラスタ３１０）を含む。マルチコア・プロセッサ３００は、外部に配置された装置とシステム相互接続インタフェース１４０を介して、かつ、相互接続８０を介して通信する。本発明の一実施例によれば、ダイ上相互接続３２０は、リング相互接続として構成されるが、相互接続メッシュ（例えば、２Ｄメッシュ）として構成することができる。各コアキャッシュ・クラスタ３１０は、複数のキャッシュ３４０１乃至３４０Ｎ（全体としてキャッシュ３４０）のうちの１つを共有する１つ又は複数のコア３３０を含む。コアキャッシュ・クラスタ３１０のアーキテクチャは、キャッシング・ブリッジ・アーキテクチャ又は分散共有キャッシュ・アーキテクチャによるものであり得る。コアキャッシュ・クラスタ３１０に関するトランザクションは、後述するように対応するスケーラビリティ・エージェント（ＳＡ）３５０１乃至３５０ｎ（全体としてスケーラビリティ・エージェント３５０）によって制御される。このアーキテクチャによれば、マルチコア・プロセッサ３００は、プロセッサ３００におけるコアの数の増加にかかわらず、第１の共有キャッシュ３４０のレーテンシが実質的に一定に留り、共有がないか、又は共有が限定されたスレッドのスカラー性能が一定に留まることを確実にすることを可能にする。
【０００７】
本発明の一実施例によるプロセッサは、その全体性能を増加させ、次世代のプロセッサ設計をサポートするよう集約することが可能である。例えば、コアキャッシュ・クラスタがキャッシング・ブリッジ・スタイル・アーキテクチャを使用している場合、２つの（４コア・）コアキャッシュ・クラスタを集約して８つのコアの（８コア・）マルチコア・プロセッサを生成することにより、更に良好な性能を実現することができる。更に、１つの生成において８コア・プロセッサを構築し、次の生成において１２コア・プロセッサを構築し、その後の生成において１６コア・プロセッサを構築することが可能である。最適な性能を達成するための、コアキャッシュ・クラスタ３１０の適切な数「Ｎ」、及び、各コアキャッシュ・クラスタにおけるコアの数を判定することができる。これにより、より単純な実現形態を選ぶための柔軟性及びオプションが提供される。前述の利点に加えて、ＳＡは、共有された最終レベル・キャッシュとして個々のキャッシュが一緒に動作することを可能にし、各コアキャッシュ・クラスタにプライベートなデータがそれ自身のキャッシュに留まり、プライベート・データに対するレーテンシの低下をもたらすことを可能にする。よって、図１に更に示されているように、ＳＡ装置３５０１乃至３５０４（全体としてＳＡ装置３５０）（Ｎ＝４）は、コアキャッシュ・クラスタ３１０に固有に対応し、アドレス空間の部分集合をそれぞれが担う個々のＳＡ装置３５０にアドレス分割することができる。
【０００８】
単一のダイ上に形成されたプロセッサを含むものとして図１に実施例に示しているが、他の実施例では、マルチチップ・パッケージを実現することができる。次に図２を参照するに、本発明の別の実施例によるプロセッサのブロック図が示されている。図２に示すように、マルチチップ・プロセッサ・パッケージであり得るプロセッサ４００は、ポイントツーポイント（ＰＴＰ）相互接続であり得るパッケージ上相互接続４３０を含む。各ダイ４１０（全体として）は、キャッシュ４１５１及び４１５２、並びに複数のコア４２０を含む少なくとも１つのコアキャッシュ・クラスタを含み得る。各ダイ４１０は、スケーラビリティ・エージェント４２５１及び４２５２を更に含む。プロセッサ４００は、特定の実施例では、何れもＰＴＰリンクであり得るシステム相互接続対４４０１及び４４０２を使用してシステムの他の構成部分と通信することができる。当然、他の実現形態も考えられる。例えば、各ダイは、複数のコアキャッシュ・クラスタ等を含み得る。ダイそれぞれ上にＳＡを実現することにより、ダイは相互接続で結合し、よって、コアの数を２倍にすることが可能である。更に、キャッシュ４１５１及び４１５２はこの場合、両方のサイズの共有キャッシュのようにふるまい、性能の向上をもたらす。例えば、各ダイが、８メガバイト（Ｍ）・キャッシュを有する４コア・ダイの場合、組み合わせた８コア・プロセッサは１６Ｍキャッシュとしてふるまい得る。
【０００９】
前述の構成に基づいて、スケーラビリティ・エージェントは、コアキャッシュ・クラスタを集約するスケーラビリティ・エ―ジェント・プロトコルをサポートするよう適合されるが、集約は、通信するようシステム相互接続に結合された装置に対して単一のキャッシング・エージェントにみえる。コアキャッシュ・クラスタの数を遮蔽する目的は２つある。まず、遮蔽により、ダイ上の（又はパッケージの）相互接続を介した反復トラフィックによって生じる相互接続飽和の課題が軽減される。第２に、遮蔽により、ホーム・エージェントの反復的な再構成が回避される。より具体的には、キャッシング・エージェントである「Ｎ」個のクラスタを各プロセッサ・コアが構成した場合、「Ｍ」個のソケット・システムは、システム内のホーム・エージェントに対してＮ＊Ｍ個のキャッシング・エージェント・システムとして認識される。ＳＡは事実上、局所コヒーレンシの負担を負い、コアキャッシュ・クラスタ自体にコヒーレンシの責務を分配することにより、機能する。さもなければ、コアキャッシュ・クラスタが修正又は追加される都度、ホーム・エージェントを再設計しなければならなくなる。遮蔽された集約機能に加えて、スケーラビリティ・エージェント・プロトコルは、同じＩＣ上のコアキャッシュ・クラスタ間の局所コヒーレンスを処理するよう企図されている。
【００１０】
種々の実施例では、分離キャッシュにおいて通常生じる複製を回避するために、ソケットに入れられる、各線のちょうど１つの複製を維持することができる。複製しか存在しないので、この複製は、コアキャッシュ・クラスタのキャッシュのうちの１つに存在する。キャッシュ線の存在が、ソケット内のコア全てにおいて追跡されることを確実にするために、コアビット・フィールドをコアキャッシュ・クラスタ・キャッシュにおいて拡張させることができる。これをやる２つのやり方が存在している。各キャッシュは、ソケット内のコアの合計数に等しいコア・ビットを含むようにすることが可能であるか、又は、どのクラスタが線を含んでいるかを記憶するだけでコア・ビット空間を保存することが可能である。よって、各コアキャッシュ・クラスタ・キャッシュは局所クラスタにおけるコアの数に等しいコア・ビットを有し、ソケット内の他のクラスタに線が存在しているか否かを追跡するクラスタ・ビットを有する。
【００１１】
次に図３を参照するに、本発明の一実施例による方法のフロー図を示す。図３に示すように、方法１０は、キャッシュ線がプロセッサ・ソケットに入れられる場合に入力データを処理するために使用することができる。図３に示すように、方法１０は、システム相互接続インタフェースから要求データを受信することによって開始することができる（ブロック２０）。例えば、前述のキャッシュ線は、データを要求したＳＡによって受信することができる。データは次いで、要求側コアに関連付けられた局所コアの線に記憶することができる（ブロック３０）。
【００１２】
なお図３を参照すれば、次に、クラスタ・ビット及びコア・ビットを、その線のタグ・アレイのベクトルにおいて更新することができる（ブロック４０）。この更新はよって、線がクラスタにおいて存在しており、所定のコアによって要求又はアクセスされていることを示す。次いで、データ自体を、要求側コアに供給することができる（ブロック５０）。よって、データの一複製のみがソケット内に保持される（ブロック６０）。すなわち、そのデータの単一の線のみがソケットに存在し得るが、記憶されたクラスタのコア、又は他のクラスタのコアによってアクセスすることができる。各コアにプライベートなキャッシュ線がそれ自身のクラスタに存在していることを確実にするために、行われるポリシー決定は、第１のローディング・アクセスにより、それ自身のクラスタに線が埋められるようにすることである。よって、所定のアドレス・ハッシング・ポリシーなしで線を分布させる。ランダムな分布よりも局所性に優先度を与える。この同じポリシーに基づけば、分配データは、第１のアクセスに基づいてランダムに分布させる。平均的に、分配データは、ソケット内のコアそれぞれから等距離である。各線の複製は１つに過ぎないので、各クラスタはそれ自身では包括的でない。しかし、ソケットは包括的である。
【００１３】
ソケット内のキャッシュ線毎に、「オーナ」キャッシュが存在している。これは、線を含むクラスタ・キャッシュである。これは、線のソケット・レベル状態を含み、線のコア・ビット及びクラスタ・ビットを把握する。クロス・クラスタのスヌープ・フロー及び入力フローは、オーナのキャッシュによって示されるコア及びクラスタをスヌープ・フローが最終的にスヌープするように企図される。コアからのライトバック・フローは、書込により、オーナ・キャッシュが最終的に更新されるように企図される。よって、包括性はソケット・レベルで維持される。
【００１４】
コアキャッシュ・クラスタ・タグ・アレイに記憶された情報は、ソケット内のクラスタの数に関する更なる情報を含めるよう拡張される。Ｌｏｃａｌ＿Ｄａｔａビットが、各トランザクションの完了メッセージに付加される。ソケットの外部から完了メッセージが戻っている場合、ビットはゼロにされる。ＳＡによって戻される完了メッセージの場合、このビットは１又はゼロであり得る。ｌｏｃａｌ＿ｄａｔａビットが１の場合、これは、ダイ上クラスタによって線が戻され、要求側のキャッシュに満たしてはならない旨を要求側に示す。ｌｏｃａｌ＿ｄａｔａビットがゼロの場合、これは、要求側のキャッシュに線を満たすことが可能であることを示唆している。Ｌｏｃａｌ＿Ｓｎｐビットは、ＳＡとコア・クラスタとの間のスヌープ・インタフェース上で定義される。これは、現在のソケット上で生成されたトランザクションが理由でスヌープが生じたか否かをクラスタに示すために使用される。ＳＮＰ＿ａｌｌビットは、ＳＡとコア・クラスタとの間のスヌープ・インタフェース上で定義される。セットされると、そのキャッシュ・ルックアップ結果と無関係に、クラスタがその線のオーナ・クラスタである場合以外には、そのクラスタにおけるコア全てがスヌープされなければならないことをクラスタに示す。セットされないと、クラスタは、包括的スヌーピングの通常の規則で進むことが可能である。スヌープしなければならないクラスタを示すために、クラスタ・ビットがＳＡにオーナ・クラスタから示される。これらは、局所キャッシュにヒットし、クロス・クラスタ・スヌープ、又はオーナ・クラスタにおける線にヒットするスヌープを必要とする読み出し時に示される。クラスタ・ビットは、コアキャッシュ・クラスタからＳＡへの要求／応答上に示される。クロス・スヌープ（Ｘｓｎｐ＿Ｏｎｌｙ）ビットを、コアキャッシュ・クラスタからＳＡへのインタフェース上で示す。セットされると、オーナ・クラスタであり、クロス・クラスタ・スヌープが必要であることをクラスタは示しているが、現在の要求に外部の要求は必要でない。クラスタ・ビットは常に、Ｘｓｎｐ＿Ｏｎｌｙビットがセットされると示される。Ｒｄ＿Ｍｉｓｓビットは、コアキャッシュ・クラスタからＳＡへの現在の要求が局所キャッシュ・ミスである旨を示すために使用される。これは、ＳＡが、クロス・クラスタ・スヌープを行わなければならないのみならず、外部要求を送出する必要もあり得ることを示唆している。Ｗｒ＿Ｍｉｓｓビットは、エビクションと、局所キャッシュをミスするライトバックとの間で区別するために使用される。ライトバック・トランザクション時にセットされると、現在のライトバックが、局所キャッシュをミスしたライトバックである旨を示す。Ｗｒ＿Ｍｉｓｓビットがセットされない場合、クラスタ・ビットはＳＡに示される。更なるビットであるＭｙ＿ｏｗｎビットは、スヌープ応答時にコア・クラスタとＳＡとの間のインタフェース上に存在する。ビットがセットされた場合、線のオーナである旨、及び示されたクラスタ・ビットが有効である旨をＳＡに示す。
【００１５】
各コアキャッシュ・クラスタにおけるキャッシュは包括的共有キャッシュであるため、キャッシュは、現在の線を含んでいる可能性があり得る、クラスタ内のコアを示すキャッシュ・タグ・アレイに記憶されたベクトルに存在していることがあり得るコア・ビットを含む。ｎ個のコアキャッシュ・クラスタが存在しており、ＳＡアーキテクチャを使用してｉ個のコアを各クラスタが含むことがあり得ることを考えてみる。ソケット内のコアの合計数はｎ＊ｉである。各コアキャッシュ・クラスタ内のキャッシュは、ｉビット幅のコア・ビット・ベクトルを含む。各コアキャッシュ・クラスタにおけるコア・ビット・ベクトルの幅は、ｉ＋ｎである。最初のｉビットは局所コア・ビットとして表され、次のｎビットはクラスタ・ビットとして知られている。局所コア・ビットは、どのコアがキャッシュにアクセスしたかを示す。クラスタ・ビットは、どのクラスタが現在の線を有しているかを示す。
【００１６】
以下に説明するように、読み出しフロー／書き込みフロー／スヌープ・フローは、前述の原理に準拠しながら、コヒーレンスを維持するよう修正することができる。ＳＡとコアキャッシュ・クラスタとの間のインタフェースは、前述のポリシーの実現に助力するよう企図されている。更に、ＬＬＣフローは、ＬＬＣをミスする他のクラスタ、ミス及びライトバック（ＷＢ）に対するスヌープを必要とするヒットを処理するよう修正される。重複を避け、ソケット内の各線の単一の複製を保持するよう企図される。
【００１７】
次に図４を参照するに、本発明の一実施例による方法のフロー図を示す。より具体的には、図４に示すように、方法１００は、要求側コアに関連付けられた局所キャッシュにおけるヒット、及び前述のキャッシュ内のミスに対する要求のキャッシュ管理ポリシー―を示すために使用することができる。次に図４を参照すれば、方法１００は、コア要求が局所キャッシュにおいてヒットするか否かを判定すること（菱形１２０）によって始まり得る。要求が局所キャッシュをヒットし、局所クラスタ・ビットのみが（菱形１２５で判定されるように）セットされる場合、局所クロス・スヌープを起動させることが可能であるか、又はクロス・スヌープなしで線を要求側コアに戻すことができる（菱形１３０）。局所クラスタ・ビットが、特定の他のクラスタ・ビットとともにセットされるか、（又は他のビットのみがセットされる場合）、制御は菱形１３５に移る。現在の要求が読み出しの場合、現在の要求はヒットであり、ＳＡに対する要求は必要でない。よって、コアにデータが供給されるまで、適切な局所コア・ビット及び局所クラスタ・ビットがセットされる（ブロック１４０）。さもなければ、現在の要求がオーナシップに対する要求（ＲＦＯ）の場合、ｘｓｎｐ＿ｏｎｌｙビットがセットされたミス要求は、アドレス・ハッシュに基づき得る適切なＳＡに送出される（ブロック１４５）。ＳＡを介して他のクラスタに送出されるｘｓｎｐのために到着し得る。ｘｓｎｐが完了すると、キャッシュ・データ又は新たなデータが、要求側コアに供給される。次いで、（やはりブロック１４０で）セットされた局所クラスタ・ビット及び要求側コアの局所コア・ビットのみで局所キャッシュに満たされる。
【００１８】
その代わりに菱形１２０でミスが判定された場合、以下のキャッシュ・ミス・ポリシーが採用される。ｘｓｎｐ＿ｏｎｌｙビットをリセットして、ミス要求がＳＡに送出される（ブロック１５０）。ＳＡは、トランザクションを完了すると、ｌｏｃａｌ＿ｄａｔａと呼ばれるビットを送出する。ｌｏｃａｌ＿ｄａｔａビットがセットされている（菱形１５５で判定される）場合、データは、コアに供給され、局所キャッシュに満たされない（ブロック１６０）。ｌｏｃａｌ＿ｄａｔａビットがセットされていない場合、データはコアに供給され、線が局所キャッシュに満たされ、局所クラスタ、及び要求側コアの局所コア・ビットがセットされる（ブロック１６５）。ＳＡは、ｌｏｃａｌ＿ｄａｔａビットを使用して他のキャッシュにおけるデータの複製を制御する。図４の実施例においてこの特定の実現形態を示しているが、本発明の範囲はこの点で限定されるものでない。
【００１９】
ソケットの観点から、トランザクションがおおざっぱに２つのクラス（すなわち、出力トランザクション及び入力トランザクション）に分類される。何れのクラスのトランザクションの場合にも、スケーラビリティ・エージェントは、ダイ上スヌーピング・エージェント、及びスヌープ応答アグリゲータの役割を果たす。本発明の実施例によって提示されるスケーラブルなコアキャッシュ・クラスタ集約アーキテクチャは、コアキャッシュ・クラスタを集約することにより、コアが多数のプロセッサによって使用することが可能である。スケーラビリティ・エージェントのダイ上スヌーピング機能により、同じダイ上のコアキャッシュ・クラスタ間の低レーテンシ・キャッシュ間転送が確実になる。ダイ上相互接続のレーテンシ及び帯域幅はクリティカルでない。プロセッサ・コアからのトラフィックが共有キャッシュによってフィルタリングされるからである。
【００２０】
以下のエビクション・ポリシーを一実施例で採用することができる。局所キャッシュ・エビクションでは、クラスタ・ビットは、（ＷＥメッセージ・タイプである）エビクション要求とともにＳＡに送出される。更に、ｗｒ＿ｍｉｓｓビットがゼロにセットされる。以下の書込ミス・ポリシーが採用される。コアからのＷＢが局所キャッシュをミスする場合がある。これは、線が、別のコアキャッシュ・クラスタに存在し得るからである。これが起きると書込はＳＡにエビクションとしてのみ送出されるが、ｗｒ＿ｍｉｓｓビットがセットされる。以下のスヌープ処理ポリシーが採用される。入力スヌープが受信されると、ｓｎｐ＿ａｌｌビット及びｌｏｃａｌ＿ｓｎｐビットが検査される。ｓｎｐ＿ａｌｌビットがセットされている場合、共有キャッシュ結果と無関係にコア全てにスヌープを送出しなければならないことを示す。オーナ・キャッシュは、ｓｎｐ＿ａｌｌ  ｂｉｔがセットされた状態でスヌープを受信することは決してない。ｌｏｃａｌ＿ｓｎｐビットがセットされ、現在のスヌープが局所キャッシュにおいてヒットした場合、適切な局所コアがスヌープされ、クラスタ・ビット及びｍｙ＿ｏｗｎビットがセットされた状態で、適切な応答により、ＳＡに応答する。クラスタ・ビット及びコア・ビットは適切に更新され得る。ｌｏｃａｌ＿ｓｎｐビットがセットされており、現在のスヌープがミスの場合、ｍｙ＿ｏｗｎビットがリセットされて応答を戻すことができる。ＳＡはダイ上スヌーピングの実行を担う。出力要求及び入力要求の結果としてそのコアキャッシュ・クラスタをスヌープすることに加えて、ソケットにおける各線の単一の複製のみが存在していることを確実にするようクラスタと協働する。更にクラスタ間の競合を解決する。しかし、競合解決は本願の範囲を超えており、トランザクション全てが競合なしであるとみなされる。
【００２１】
クラスタ・ヒットを有する種々の出力トランザクションを表１に示す。表１では、修正済み、排他的、共有、無効（ＭＥＳＩ）キャッシュ・コヒーレンシ・ポリシーを使用して、２つのＳＡユニット（ＳＡ０及びＳＡ１）、並びに２つのコアキャッシュ・クラスタＣＣ０及びＣＣ１を使用することにより、ＳＡフローが示される。局所クロス・スヌープは示しておらず、ＳＡを介したフローのみが表している。
【００２２】
【表１】
0005005631.tif 000002
表１を参照すれば、ＣＣ０における読み出し／無効化／自己トランザクション（ＲｄＩｎｖｌＯｗｎ）ヒットＭ、Ｅ、一部の局所コア・ビット及び一部の他のクラスタ・ビットがセットされる。これは、線が他のコア及びクラスタにおいてＳ又はＩであり得ることを示唆している。１つ又は複数の他のクラスタ・ビットがセットされており、どの局所コア・ビットもセットされておらず、その他のクラスタ・キャッシュ線状態がＥ／Ｓ／Ｉである場合に同じフローがあてはまる。ＣＣ０は、ｘｎｐ＿ｏｎｌｙビットを１にセットし、クラスタ・ビットを１１にセットして、ミス要求をＳＡ０に送出する。ＣＣ１は、そのキャッシュをミスするが、そのコア全てをスヌープし、ＲｓｐＩ及びｍｙ＿ｃｏｐｙをゼロにセットして応答する。ＳＡ０は、ｍｙ＿ｃｏｐｙが０にセットされてＣＣ１から無効化（ＲｓｐＩ）を受信する。ｌｏｃａｌ＿ｄａｔａがゼロにセットされてＣＣ０に、完全なＧｎｔＥ＿Ｃｍｐを送出する。ｌｏｃａｌ＿ｄａｔａがセットされ、これがヒット要求であるので、データがコアに供給され、クラスタ・ビットが、キャッシュ内のＣＣ１にリセットされる。
【００２３】
なお表１を参照すれば、ＲｄＩｎｖｌＯｗｎトランザクション・ビットがＳにヒットするとみなす。局所コア・ビットの一部がセットされるか、若しくは局所コア・ビットが何らセットされず、１つ又は複数の他のクラスタ・ビットがセットされる。これは、事実上、ソケット・ミスであり、ソケット・ミス要求が、ソケット状態をクリーニングした後に送出される。ＣＣ０は、ｘｎｐ＿ｏｎｌｙビットを０にセットし、クラスタ・ビットを０１にセットして、ミス要求をＳＡ０に送出する。ＳＡ０は、クラスタ・ビットを検査し、ｌｏｃａｌ＿ｓｎｐをセットし、ｓｎｐ＿ａｌｌを１にセットしてスヌープをＣＣ１に送出する。ＣＣ１はそのキャッシュをミスするが、そのコア全てをスヌープし、ＲｓｐＩ及びｍｙ＿ｃｏｐｙをゼロにセットして応答する。ＳＡ０は、ｍｙ＿ｃｏｐｙを０にセットして、ＣＣ１からＲＳｐＩを受信する。次いで、システム相互接続上でソース・ブロードキャストを送出する。最終的に、ホーム・ロジックは、要求側クラスタに完了を送出する。ｌｏｃａｌ＿ｄａｔａがゼロにセットされ、これがミス要求であるので、データはコアに供給され、線がＣａｃｈｅ０に満たされる。クラスタ・ビットは１０に初期化され、適切なコア・ビットがセットされる。
【００２４】
表１を参照すれば、読み出しコード／データ・トランザクション（ＲｄＣｏｄｅ／ＲｄＤａｔａ）は、ＣＣ０におけるＭ、Ｅをヒットする。他の１つのクラスタ・ビットのみがセットされる。線状態はその他のクラスタではＩである。ＣＣ０は、ｘｎｐ＿ｏｎｌｙビットを１にセットし、クラスタ・ビットを０１にセットして、ミス要求をＳＡ０に送出する。ＳＡ０は、クラスタ・ビットを検査し、ｌｏｃａｌ＿ｓｎｐ及びｓｎｐ＿ａｌｌを１にセットしてスヌープをＣＣ１に送出する。ＣＣ１はそのキャッシュをミスするが、そのコア全てをスヌープし、ＲｓｐＩ及びｍｙ＿ｃｏｐｙをゼロにセットして応答する。ＳＡ０は、ｍｙ＿ｃｏｐｙが０にセットされてＣＣ１からＲｓｐＩを受信する。ｌｏｃａｌ＿ｄａｔａがゼロにセットされてＣＣ０に、完全なＧｎｔＥ＿ＣｍｐをＣＣ０に送出する。ｌｏｃａｌ＿ｄａｔａがセットされ、これがヒット要求であるので、データがコアに供給され、クラスタ・ビットが、キャッシュ内のＣＣ１にリセットされる。
【００２５】
表１を参照すれば、ＲｄＣｏｄｅ／ＲｄＤａｔａトランザクションは、ＣＣ０におけるＭ、Ｅをヒットする。他の１つのクラスタ・ビットのみがセットされる。線状態はその他のクラスタではＥ、Ｓである。ＣＣ０は、ｘｎｐ＿ｏｎｌｙビットを１にセットし、クラスタ・ビットを１１にセットして、ミス要求をＳＡ０に送出する。ＳＡ０は、クラスタ・ビットを検査し、ｌｏｃａｌ＿ｓｎｐ及びｓｎｐ＿ａｌｌを１にセットしてスヌープをＣＣ１に送出する。ＣＣ１はそのキャッシュをミスするが、そのコア全てをスヌープし、ＲｓｐＳ及びｍｙ＿ｃｏｐｙをゼロにセットして応答する。ＳＡ０は、ｍｙ＿ｃｏｐｙが０にセットされてＣＣ１からＲｓｐＳを受信する。ｌｏｃａｌ＿ｄａｔａがゼロにセットされて、完全なＧｎｔＥ＿ＣｍｐをＣＣ０に送出する。ｌｏｃａｌ＿ｄａｔａ及びこれがヒット要求であるので、データがコアに供給され、局所クラスタ及び局所コア・ビットが線にセットされる。
【００２６】
表１を参照すれば、ＲｄＣｏｄｅ／ＲｄＤａｔａ／ＲｄＩｎｖｌＯｗｎトランザクションは、ＣＣ０におけるＭ、Ｅをヒットする。他の１つのクラスタ・ビットのみがセットされる。線状態はその他のクラスタではＭである。ＣＣ０は、ｘｎｐ＿ｏｎｌｙビットを１にセットし、クラスタ・ビットを０１にセットして、ミス要求をＳＡ０に送出する。ＳＡ０は、クラスタ・ビットを検査し、ｌｏｃａｌ＿ｓｎｐ及びｓｎｐ＿ａｌｌを１にセットしてスヌープをＣＣ１に送出する。ＣＣ１はそのキャッシュをミスするが、そのコア全てをスヌープし、ＲｓｐＦｗｄＩ及びｍｙ＿ｃｏｐｙをゼロにセットして応答する。ＳＡ０は、ｍｙ＿ｃｏｐｙが０にセットされてＣＣ１からＲｓｐＦｗｄＩを受信する。ｌｏｃａｌ＿ｄａｔａがゼロにセットされて、完全なＧｎｔＥ＿ＣｍｐをＣＣ０に送出する。ｌｏｃａｌ＿ｄａｔａ及びこれがヒット要求であるので、データがコアに供給され、局所クラスタ・ビット及び適切な局所コア・ビットが線にセットされる。
【００２７】
以下、表２に示すのは、本発明の一実施例によるクラスタ・ミス時の出力トランザクションの例である。
【００２８】
【表２】
0005005631.tif 000003
表２を参照するに、局所クラスタ・ミス及び遠隔クラスタ・ミスを仮定する。この場合、外部トランザクションが必要である。ＣＣ０は、ｘｎｐ＿ｏｎｌｙビットが０にセットされ、ｒｄ＿ｍｉｓｓビットがセットされて、ミス要求をＳＡ０に送出する。ｒｄ＿ｍｉｓｓがセットされている場合、クラスタ・ビットは関係なく、ＳＡ０はクラスタ・ビットを検査し、ｌｏｃａｌ＿ｓｎｐがセットされ、ｓｎｐ＿ａｌｌが０にセットされてＣＣ１にスヌープを送出する。ｓｎｐ＿ａｌｌが０にセットされているので、ＣＣ１はそのキャッシュをミスする。そのコアをスヌープしないが、ｍｙ＿ｃｏｐｙがゼロにセットされて、ＲｓｐＩをＳＡに戻す。ＳＡ０は、ｍｙ＿ｃｏｐｙが０にされてＣＣ１からＲｓｐＩを受信する。ＣＣ１が線を有していない旨をこのことは示唆している。次いで、システム相互接続上でソース・ブロードキャストを送出する。最終的に、ホーム・ロジックは、要求側クラスタに完了を送出する。ｌｏｃａｌ＿ｄａｔａがゼロにセットされ、これがミス要求であるので、データはコアに供給され、線がＣａｃｈｅ０に満たされる。クラスタ・ビットは１０に初期化され、適切なコア・ビットがセットされる。
【００２９】
表２を参照すれば、ＲｄＣｏｄｅ／ＲｄＤａｔａ局所クラスタはミス、及び遠隔クラスタＭ／Ｅ／Ｓを有し、その局所コア・ビットのみがセットされ、他のクラスタ・ビットはセットされない。ＣＣ０は、ｘｎｐ＿ｏｎｌｙビットが０にセットされ、ｒｄ＿ｍｉｓｓビットがセットされて、ミス要求をＳＡ０に送出する。ＳＡ０はクラスタ・ビットを検査し、ｌｏｃａｌ＿ｓｎｐがセットされ、ｓｎｐ＿ａｌｌが０にセットされてスヌープをＣＣＩに送出する。ＣＣ１はそのキャッシュにおいてヒットする。その局所コア・ビットを検査し、適切な処理を完了する。次いで、ＲｓｐＦｗｄＳでＳＡ０に応答し、データを要求側に直接送出する。ＣＣ０のクラスタ・ビットがＣＣ１においてセットされる。ＲｓｐＦｗｄＳとともに、ｍｙ＿ｃｏｐｙビットがセットされ、クラスタ・ビットがＳＡ０に送出される。ＳＡ０は、セットされたｍｙ＿ｃｏｐｙとともにＲｓｐＦｗｄＳを受信する。ＣＣ１からのクラスタ・ビットを検査し、要求側のクラスタ／他のクラスタをスヌープする必要があるかを決定する。この場合、更なるスヌープは必要でない。ｌｏｃａｌ＿ｄａｔａが１にセットされてＣｍｐをＣＣ０に送出する。ＣＣ０は、ｌｏｃａｌ＿ｄａｔａがセットされている旨を検査し、要求側コアにデータを供給し、そのキャッシュで満たさない。
【００３０】
なお図２を参照すれば、局所クラスタ内のＲｄＩｎｖｌＯｗｎトランザクションは、局所クラスタ、遠隔クラスタＭ／Ｅにおいてミスし、その局所コア・ビットのみがセットされ、他のクラスタ・ビットはセットされない。ＣＣ０は、ｘｎｐ＿ｏｎｌｙビットが０にセットされ、ｒｄ＿ｍｉｓｓビットがセットされて、ミス要求をＳＡ０に送出する。ＳＡ０はクラスタ・ビットを検査し、ｌｏｃａｌ＿ｓｎｐがセットされ、ｓｎｐ＿ａｌｌが０にセットされてスヌープをＣＣ１に送出する。ＣＣ１はそのキャッシュにおいてヒットし、その局所コア・ビットを検査し、適切な処理を完了する。次いで、ＲｓｐＦｗｄＩでＳＡ０に応答し、データを要求側に直接送出する。ＣＣ０のクラスタ・ビットがＣＣ１においてセットされる。ＲｓｐＦｗｄＩとともに、ｍｙ＿ｃｏｐｙビットがセットされ、クラスタ・ビットがＳＡ０に送出される。ＳＡ０は、セットされたｍｙ＿ｃｏｐｙとともにＲｓｐＦｗｄＩを受信する。ＣＣ１からのクラスタ・ビットを検査し、要求側のクラスタ／他のクラスタをスヌープする必要があるかを決定する。この場合、更なるスヌープは必要でない。ｌｏｃａｌ＿ｄａｔａが１にセットされてＣｍｐをＣＣ０に送出する。ＣＣ０は、ｌｏｃａｌ＿ｄａｔａがセットされている旨を検査し、要求側コアにデータを供給し、そのキャッシュで満たさない。
【００３１】
なお図２を参照すれば、ＲｄＩｎｖｌＯｗｎトランザクションは、局所クラスタ・ミス、遠隔クラスタＳを有し、その局所コア・ビットのみがセットされ、他のクラスタ・ビットはセットされない。ＣＣ０は、ｘｎｐ＿ｏｎｌｙビットが０にセットされ、ｒｄ＿ｍｉｓｓビットがセットされて、ミス要求をＳＡ０に送出する。ＳＡ０はクラスタ・ビットを検査し、ｌｏｃａｌ＿ｓｎｐがセットされ、ｓｎｐ＿ａｌｌが０にセットされてスヌープをＣＣ１に送出する。ＣＣ１はそのキャッシュにおいてヒットし、その局所コア・ビットを検査し、適切な処理を完了する。この場合、線は無効化される。次いで、ＲｓｐＩでＳＡ０に応答する。ＲｓｐＩとともに、ｍｙ＿ｃｏｐｙビットがセットされ、クラスタ・ビットがＳＡ０に送出される。ＳＡ０は、セットされたｍｙ＿ｃｏｐｙとともにＲｓｐＩを受信する。ＣＣ１からのクラスタ・ビットを検査し、要求側クラスタ／他のクラスタをスヌープする必要があるかを決定する。この場合、更なるスヌープは必要でない。線がソケットにおいて無効化された状態にあるので、ソース・ブロードキャストのミスを送出する。最終的に、システム領域はデータをＣＣ０に供給し、ｌｏｃａｌ＿ｄａｔａはセットされない。ＣＣ０は、ｌｏｃａｌ＿ｄａｔａがセットされている旨を検査し、要求側コアにデータを供給し、線をそのキャッシュに満たす。適切なコア・ビット及び局所クラスタ・ビットがセットされる。
【００３２】
なお表２を参照すれば、ＲｄＣｏｄｅ／ＲｄＤａｔａ局所クラスタ・ミス、及び遠隔クラスタＭ／Ｅが、局所コア・ビットがセットされずに生じる。要求側クラスタのクラスタ・ビットのみがセットされる。ＲｓｐＩ／ＲｓｐＳ。これは、クリーンアップ・スヌープとして表すことが可能なものを必要とする特定の場合である。第１の段階では、ＳＡはオーナがどのクラスタであるかを知らないので、  ｓｎｐ＿ａｌｌビットがリセットされて、スヌープをクラスタ全てに送出する。一クラスタのみがスヌープ（オーナ・クラスタ）にヒットし、残りは全てミスする。オーナ・クラスタは線のクラスタ・ビットを備えたスヌープ応答を返信し、ｍｙ＿ｏｗｎビットは、応答時にセットされる。ＳＡは、クラスタ・ビットを受信すると、クラスタ・ビットがセットされたクラスタ全てについてｓｎｐ＿ａｌｌビットがセットされてスヌープが再度送出される。このスヌープは、線を含み得るクラスタ全てをクリーンするクリーンアップ・スヌープである。クリーンアップ・スヌープが完了すると、完了が要求側クラスタに示される。ＣＣ０は、ｘｎｐ＿ｏｎｌｙビットが０にセットされ、ｒｄ＿ｍｉｓｓビットがセットされて、ミス要求をＳＡ０に送出する。ｒｄ＿ｍｉｓｓがセットされている場合、クラスタ・ビットは関係ない。ＳＡ０はクラスタ・ビットを検査し、ｌｏｃａｌ＿ｓｎｐがセットされ、ｓｎｐ＿ａｌｌが０にセットされてスヌープをＣＣ１に送出する。ＣＣ１はそのキャッシュにおいてヒットし、その局所コア・ビットを検査し、適切な処理を完了する。ＲｓｐＦｗｄＩでＳＡ０に応答する。データが、Ｄａｔａ＿Ｅとともに要求側に送出される。更に、要求側のクラスタ・ビットがセットされる（この場合、既にセットされている）。応答とともに、ｍｙ＿ｃｏｐｙビットがセットされ、元のクラスタ・ビットがＳＡ０に送出される。ＳＡ０は、セットされたｍｙ＿ｃｏｐｙとともにＲｓｐＦｗｄＩを受信する。ＣＣ１からのクラスタ・ビットを検査し、要求側クラスタをスヌープする必要があるかを決定する。スヌープは、ｓｎｏｏｐ  ａｌｌビットがセットされて要求側クラスタに送出される。ＣＣ０は、スヌープを完了し、ＲｓｐＩ／ＲｓｐＳ  ＳＡ０を送出する。ＳＡ０は次いで、ＣｍｐをＣＣ０に送出する。ＣＣ０は次いで、その局所キャッシュに満たすことなくデータを使用することが可能である。
【００３３】
なお表２を参照すれば、ＲｄＤａｔａ／ＲｄＩｎｖｌＯｗｎ局所クラスタ・ミス、及び遠隔クラスタＭ／Ｅが、局所コア・ビットがセットされずに生じるものとする。要求側クラスタのクラスタ・ビットのみがセットされる。要求側クラスタにおける別のコアは、Ｍ状態における線を含む。ＲｓｐＦｗｄＩ。転送側コアはデータを要求側クラスタ（それ自身のクラスタ）に直接送出する。その局所クラスタは、ＲｓｐＦｗｄＩをＳＡに送出する。この場合、ＳＡは２つのＲｓｐＦｗｄＩを受信する。要求側クラスタはデータを２回受信し、データをホームから廃棄しなければならない。修正データは、要求がＲｄＩｎｖｌＯｗｎタイプの場合、要求側コアに供給される。元の要求がＲｄＤａｔａの場合、局所クラスタは、Ｅ状態において要求側コアにデータを供給し、現在の線のＷｒ＿Ｍｉｓｓフローを起動させる。ＣＣ０は、ｘｎｐ＿ｏｎｌｙビットが０にセットされ、ｒｄ＿ｍｉｓｓビットがセットされて、ミス要求をＳＡ０に送出する。ＳＡ０はクラスタ・ビットを検査し、ｌｏｃａｌ＿ｓｎｐがセットされ、ｓｎｐ＿ａｌｌが０にセットされてスヌープをＣＣ１に送出する。ＣＣ１はそのキャッシュにおいてヒットし、その局所コア・ビットを検査し、適切な処理を完了する。この場合、線はＳ状態に格下げされる。次いで、ＲｓｐＦｗｄＩでＳＡ０に応答する。データが要求側にＤａｔａ＿Ｅとともに送出される。更に、要求側のクラスタ・ビットがセットされる。応答とともに、ｍｙ＿ｏｗｎビットがセットされ、元のクラスタ・ビットがＳＡ０に送出される。ＳＡ０は、セットされたｍｙ＿ｏｗｎとともにＲｓｐＦｗｄＩを受信する。ＣＣ１からのクラスタ・ビットを検査し、要求側クラスタをスヌープする必要があるかを決定する。スヌープは、ｓｎｏｏｐ  ａｌｌビットがセットされて要求側クラスタに送出される。スヌープは、完了し、ＲｓｐＦｗｄＩをＳＡ０に送出する。データがＭコアからコアキャッシュ・クラスタ・ロジックに送出される。このデータは、ＣＣＩから返されたデータに優先する。データはこの場合、Ｍ状態である。ＣＣ０は、ｗｒミス・フローを起動させ、Ｅ状態において要求側にデータを戻す。そのキャッシュは満たさない。
【００３４】
なお表２を参照すれば、ソケット状態がＳであるＲｄＩｎｖｌＯｗｎを仮定する。局所クラスタではミスであり、オーナ・キャッシュ状態は共有状態を示す。基本的には、線がソケットにおいてクリーンアップされ、外部要求が送出される。ＣＣ０は、ｘｎｐ＿ｏｎｌｙビットが０にセットされ、ｒｄ＿ｍｉｓｓビットがセットされて、ミス要求をＳＡ０に送出する。ＳＡ０はクラスタ・ビットを検査し、ｌｏｃａｌ＿ｓｎｐがセットされ、ｓｎｐ＿ａｌｌが０にセットされてスヌープをＣＣ１に送出する。ＣＣ１はそのキャッシュにおいてヒットし、その局所コア・ビットを検査し、適切な処理を完了する。ＲｓｐＩでＳＡ０に応答し、その局所コピーを無効化する。応答とともに、ｍｙ＿ｏｗｎビットがセットされ、元のクラスタ・ビットがＳＡ０に送出される。ＳＡ０は、セットされたｍｙ＿ｏｗｎとともにＲｓｐＩを受信する。ＣＣ１からのクラスタ・ビットを検査し、要求側クラスタをスヌープする必要があるかを決定する。スヌープは、ｓｎｏｏｐ  ａｌｌビットがセットされて要求側クラスタに送出される。ＣＣ０は、スヌープを完了し、ＲｓｐＩをＳＡ０に送出する。ＳＡ０は次いで、ソース・ブロードキャストをＣＳＩ上でＲｄＩｎｖｌＯｗｎとともに送出する。最終的に、システム相互接続はＤａｔａＣ＿Ｅ＿ＣｍｐをＣＣ０に送出する。この線はＣＣ０キャッシュに満たされ、要求側コアに供給される。
【００３５】
なお表２を参照するに、局所キャッシュをミスするコアからのライトバックを仮定する。ＳＡはまず、ノー・オペレーション（ｎｏｐ）スヌープを送出する。このスヌープは、キャッシュ状態に対して影響を何ら及ぼさない。応答に基づいて、ＳＡは、どのクラスタがオーナ・クラスタであるかを判定することが可能である。ＣＣ０は、ｗｒ＿ｍｉｓｓビットが１にセットされて書込ミス要求をＳＡ０に送出し、ｌｏｃａｌ＿ｓｎｐがセットされ、ｓｎｐ＿ａｌｌが０にセットされてＮｏｐスヌープをＣＣ１に送出する。ＣＣ１はそのキャッシュにおいてヒットする。これはヒットであるがｎｏｐであるので、キャッシュ状態への変更は行われない。しかし、ｍｙ＿ｏｗｎビットがセットされて、ＲｓｐＩが送出される。ＳＡ０は次いで、ｄａｔａ＿ｐｕｌｌスヌープをオーナ・クラスタのｉｄとともに要求側クラスタに送出する。ＣＣ０は次いで、ライトバックをオーナ・クラスタに送出する。完了をオーナ・クラスタから受信すると、割り当て解除をＳＡに送出する。
【００３６】
なお表２を参照するに、クラスタ・キャッシュからのエビクションが生じ得る。エビクションはオーナ・キャッシュからのみ生じ得るので、クラスタ・ビットはＳＡに送出される。ＳＡは他のクラスタ・キャッシュの適切なクリーンアップを行い、エビクションが次いで、システム・メモリに送出される。ＣＣ０は、ｗｒ＿ｍｉｓｓビットが０にセットされ、クラスタ・ビットが示されて、書込要求をＳＡ０に送出する。ＳＡ０は、クラスタ・ビットが示されるクラスタ全てにスヌープを送出する。Ｌｏｃａｌ＿ｓｎｐがセットされ、ｓｎｐ＿ａｌｌがセットされる。ＣＣ１は、ＲｓｐＩでスヌープに応答し、ｍｙ＿ｏｗｎビットがリセットされる。応答全てが受信されると、ｄａｔａ＿ｐｕｌｌが要求側クラスタに示される。要求側クラスタは次いで、ＷｂＭｔｏＩを外部システムに直接送出することが可能である。最終的に、トランザクションがＣＳＩ領域において完了し、割り当て解除がＳＡに送出される。
【００３７】
なお表２を参照すれば、入力スヌープ・トランザクションは２つのスヌープ・ステップを行う状態に達する。まず、要求スヌープが行われ、次いで、クリーンアップ・スヌープが行われる。入力スヌープがＳＡ０に割り当てられる。ＳＡ０は、ｌｏｃａｌ＿ｓｎｐがゼロにセットされ、ｓｎｐ＿ａｌｌがゼロにセットされてスヌープをクラスタ全てに送出する。オーナ・クラスタはＲｓｐＦｗｄＩで応答し、ｍｙ＿ｏｗｎビットがセットされる。この場合にはＣＣ０である。ＣＣ１はＲｓｐＩを送出する。ＳＡ０は、組み合わせたＲｓｐＦｗｄＩを入力スヌープのホームに送出する。次いで、データ・プル・メッセージをＣＣ０（オーナ・クラスタ）に送出する。ＣＣ０は、データ・プル・メッセージを受信すると、データ・メッセージを元のスヌープの要求側に送出する。
【００３８】
実施例は、ＣＭＰ間のトラフィックを削減するためにＣＭＰプラットフォームに適していることがあり得る。図５に示すように、マルチプロセッサ・システム５００は、ポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続５５０を介して結合された第１のプロセッサ５７０及び第２のプロセッサ５８０を含むが、システムは、別のバス・アーキテクチャのものであり得る。図５に示すように、プロセッサ５７０及び５８０それぞれは、第１のプロセッサ・コア及び第２のプロセッサ・コア（すなわち、プロセッサ・コア５７４ａ及び５７４ｂ、並びにプロセッサ・コア５８４ａ及び５８４ｂ）を含むマルチコア・プロセッサであり得るが、他のコアも存在し得る。更に、図５に示すように、プロセッサ毎の個々のＳＡの集約であり得るＳＡ５７５及び５８５をそれぞれ、プロセッサ・コア５７４ａ及び５７４ｂ、並びに５８４ａ及び５８４ｂの対それぞれに結合して、本発明の実施例によってメモリ・トラフィックを処理することができる。図５をなお参照すれば、第１のプロセッサ５７０は、メモリ・コントローラ・ハブ（ＭＣＨ）５７２、並びにポイントツーポイント（Ｐ−Ｐ）インタフェース５７６及び５７８を更に含む。同様に、第２のプロセッサ５８０は、ＭＣＨ５８２、並びにＰ−Ｐインタフェース５８６及び５８８を含む。図５に示すように、ＭＣＨ５７２及び５８２は、プロセッサをそれぞれのメモリ（すなわち、メモリ５３２及びメモリ５３４。主メモリの一部（例えば、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ））であり得る）に結合する。
【００３９】
第１のプロセッサ５７０及び第２のプロセッサ５８０はそれぞれＰ−Ｐ相互接続５５２及び５５４を介してチップセット５９０に結合することができる。図５に示すように、チップセット５９０は、Ｐ−Ｐインタフェース５９４及び５９８を含む。更に、チップセット５９０は、高性能グラフィクス・エンジン５３８とチップセット５９０を結合させるためのインタフェース５９２を含む。一実施例では、アドバンスト・グラフィクス・ポート（ＡＧＰ）バス５３９又はポイントツーポイント相互接続を使用してグラフィクス・エンジン５３８をチップセット５９０に結合することができる。図５に示すように、第１のバス５１６を第２のバス５２０に結合するバス・ブリッジ５１８とともに、種々のＩ／Ｏ装置５１４を第１のバス５１６に結合することができる。種々の装置（例えば、キーボード／マウス５２２、通信装置５２６、及び、一実施例においてコード５３０を含み得るデータ記憶装置５２８）を第２のバス５２０に結合することができる。更に、オーディオＩ／Ｏ５２４を第２のバス５２０に結合することができる。
【００４０】
本発明は、限定数の実施例に関して説明してきたが、当業者は数多くの修正及び変形をそこから分かるであろう。特許請求の範囲記載の請求項が、本発明の真の趣旨及び範囲内に収まる限り、前述の修正及び変形を全て包含することを意図している。
【図面の簡単な説明】
【００４１】
【図１】本発明の一実施例によるマルチコア・プロセッサを示すブロック図である。
【図２】本発明の別の実施例によるプロセッサを示すブロック図である。
【図３】本発明の一実施例による方法を示すフロー図である。
【図４】本発明の一実施例による方法を示すフロー図である。
【図５】本発明の一実施例によるマルチプロセッサ・システムを示すブロック図である。
【符号の説明】
【００４２】
１４０  システム相互接続インタフェース
３１０  キャッシュ
３２０  ダイ上相互接続
３３０  コア
３４０  キャッシュ
３５０  スケーラビリティ・エージェント
【図１】
0005005631.tif 000004
【図２】
0005005631.tif 000005
【図３】
0005005631.tif 000006
【図４】
0005005631.tif 000007
【図５】
0005005631.tif 000008