JP2009037615A - 複数のコアキャッシュ・クラスタ間の包括的共有キャッシュの提供 - Google Patents

複数のコアキャッシュ・クラスタ間の包括的共有キャッシュの提供 Download PDF

Info

Publication number
JP2009037615A
JP2009037615A JP2008190433A JP2008190433A JP2009037615A JP 2009037615 A JP2009037615 A JP 2009037615A JP 2008190433 A JP2008190433 A JP 2008190433A JP 2008190433 A JP2008190433 A JP 2008190433A JP 2009037615 A JP2009037615 A JP 2009037615A
Authority
JP
Japan
Prior art keywords
core
cache
cluster
clusters
local
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2008190433A
Other languages
English (en)
Other versions
JP5005631B2 (ja
Inventor
Krishnakanth Sistla
シストラ クリシュナカンス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2009037615A publication Critical patent/JP2009037615A/ja
Application granted granted Critical
Publication of JP5005631B2 publication Critical patent/JP5005631B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Abstract

【課題】一実施例では、本発明は、複数のコアキャッシュ・クラスタを含むマルチコア・プロセッサの第1のスケーラビリティ・エージェントにおいてシステム相互接続インタフェースから要求データを受信し、要求側コアを含む第1のコアキャッシュ・クラスタの局所キャッシュの線に要求データを記憶し、線のタグ・アレイのベクトルにおけるクラスタ・フィールド及びコア・フィールドを更新する方法を含む。
【解決手段】他の実施例を本明細書及び特許請求の範囲で記載する。
【選択図】図1

Description

マイクロプロセッサは一般に、単一の半導体集積回路(IC)上に製造された種々の論理回路を含む。前述の論理回路は通常、プロセッサ・コア、メモリや他の構成部分を含む。現在のハイエンド・プロセッサは、同じIC上の複数のプロセッサ・コアを含む。例えば、チップ・マルチプロセッサ(CMP)などのマルチコア・プロセッサは、IC内の複数のプロセッサ・コアを実現するマルチコア構造を特徴とする。
シリコンの効率の増加により、次に、更なる機能をプロセッサ・シリコンに追加するための新たな機会が提供される。例として、アプリケーションは、同じプロセッサにおける処理コアの増加によって実現されるマルチスレッド機能の強化を利用する。マルチコア・プロセッサの性能は、集約されたプロセッサ・コアが、システム相互接続レーテンシの課題を軽減し、スケーラビリティの課題、及び相互接続の飽和を避けるために一キャッシング・エージェントのようにみえることを確実にすることによって最適化することができる。複数のコアにそれぞれが関連付けられたキャッシュを含むシステムは、別個のキャッシュ領域として各キャッシュがふるまう分離キャッシュとして構造化される。これは、コヒーレンス・ミスの合計数を増加させ、よって、命令毎のミスを増加させる。分離キャッシュは更に、別個のキャッシュ全てにおける共有コード/データの複製による容量を喪失する。
スケーラビリティ・エージェント・プロトコルは、プロセッサにおけるコアの数のスケーリングのクラスタ化された手法を可能にする。クラスタ化されたスケーリング手法では、コアキャッシュ装置がビルディング・ブロックとして使用され、前述の複数の装置を結合してプロセッサ内のコアの数を増加させる。コアキャッシュ装置は、適切な容量の共有キャッシュを有する2つ以上のコアを含み得る。種々の実施例では、共通システム相互接続(CSI)などのシステム相互接続を介して結合されたものなどの、マルチコア・プロセッサの複数のコアキャッシュ・クラスタ(本明細書では「クラスタ」として表す)は、ソケット・ワイドの包括的キャッシュ構造を提供するよう適合することができる一方、個々のクラスタ・キャッシュは非包括的である。「コアキャッシュ・クラスタ」の語は一般に、1つ又は複数のコア、及び共有キャッシュを備えるモジュラ・ユニットとみなされる。コアキャッシュ・クラスタは、スケーラブルなマルチコア・プロセッサのビルディング・ブロックとして使用される。
本発明の一実施例によれば、「スケーラビリティ・エージェント・プロトコル」は、互いに別個に動作するコアキャッシュ・クラスタの集約を可能にし、数の増減にかかわらず、メモリ・コヒーレンシを維持する役割がコアキャッシュ・クラスタのうちでおおよそ等しく分配される「グレースフル」なスケーラビリティを提供する通信手法である。スケーラビリティ・エージェント・プロトコルは、システム・メモリ・アドレス空間におけるアドレス領域において区分可能であるからである。キャッシュコア・クラスタにおけるキャッシュに対するレーテンシは実質的に、コアの数が増加しても変わらない状態に留まる。
「スケーラビリティ・エージェント」は、コアキャッシュ・クラスタに関連付けられたソケットとの間の入力トランザクション及び出力トランザクションのフローを管理し、スケーラビリティ・エージェント・プロトコルをサポートするハードウェア及び/又はソフトウェアである。本発明の一実施例によれば、スケーラビリティ・エージェントは、(i)一キャッシング・エージェントとしてみえるようコアキャッシュ・クラスタを集約し、(ii)同じIC上のコアキャッシュ・クラスタ間の局所キャッシュ・コヒーレンスを処理し、(iii)他のコアキャッシュ・クラスタが追加されてもコアキャッシュ・クラスタの動作があまり影響を受けないようにスケーラビリティをサポートする。
次に図1を参照すれば、スケーラビリティ・エージェントを有する、クラスタ化されたCMPなどのマルチコア・プロセッサ300の例示的な実施例を示す。マルチコア・プロセッサ300は、ダイ上の相互接続320を介して互いに通信する複数のコアキャッシュ・クラスタ310乃至310(全体としてクラスタ310)を含む。マルチコア・プロセッサ300は、外部に配置された装置とシステム相互接続インタフェース140を介して、かつ、相互接続80を介して通信する。本発明の一実施例によれば、ダイ上相互接続320は、リング相互接続として構成されるが、相互接続メッシュ(例えば、2Dメッシュ)として構成することができる。各コアキャッシュ・クラスタ310は、複数のキャッシュ340乃至340(全体としてキャッシュ340)のうちの1つを共有する1つ又は複数のコア330を含む。コアキャッシュ・クラスタ310のアーキテクチャは、キャッシング・ブリッジ・アーキテクチャ又は分散共有キャッシュ・アーキテクチャによるものであり得る。コアキャッシュ・クラスタ310に関するトランザクションは、後述するように対応するスケーラビリティ・エージェント(SA)350乃至350(全体としてスケーラビリティ・エージェント350)によって制御される。このアーキテクチャによれば、マルチコア・プロセッサ300は、プロセッサ300におけるコアの数の増加にかかわらず、第1の共有キャッシュ340のレーテンシが実質的に一定に留り、共有がないか、又は共有が限定されたスレッドのスカラー性能が一定に留まることを確実にすることを可能にする。
本発明の一実施例によるプロセッサは、その全体性能を増加させ、次世代のプロセッサ設計をサポートするよう集約することが可能である。例えば、コアキャッシュ・クラスタがキャッシング・ブリッジ・スタイル・アーキテクチャを使用している場合、2つの(4コア・)コアキャッシュ・クラスタを集約して8つのコアの(8コア・)マルチコア・プロセッサを生成することにより、更に良好な性能を実現することができる。更に、1つの生成において8コア・プロセッサを構築し、次の生成において12コア・プロセッサを構築し、その後の生成において16コア・プロセッサを構築することが可能である。最適な性能を達成するための、コアキャッシュ・クラスタ310の適切な数「N」、及び、各コアキャッシュ・クラスタにおけるコアの数を判定することができる。これにより、より単純な実現形態を選ぶための柔軟性及びオプションが提供される。前述の利点に加えて、SAは、共有された最終レベル・キャッシュとして個々のキャッシュが一緒に動作することを可能にし、各コアキャッシュ・クラスタにプライベートなデータがそれ自身のキャッシュに留まり、プライベート・データに対するレーテンシの低下をもたらすことを可能にする。よって、図1に更に示されているように、SA装置350乃至350(全体としてSA装置350)(N=4)は、コアキャッシュ・クラスタ310に固有に対応し、アドレス空間の部分集合をそれぞれが担う個々のSA装置350にアドレス分割することができる。
単一のダイ上に形成されたプロセッサを含むものとして図1に実施例に示しているが、他の実施例では、マルチチップ・パッケージを実現することができる。次に図2を参照するに、本発明の別の実施例によるプロセッサのブロック図が示されている。図2に示すように、マルチチップ・プロセッサ・パッケージであり得るプロセッサ400は、ポイントツーポイント(PTP)相互接続であり得るパッケージ上相互接続430を含む。各ダイ410(全体として)は、キャッシュ415及び415、並びに複数のコア420を含む少なくとも1つのコアキャッシュ・クラスタを含み得る。各ダイ410は、スケーラビリティ・エージェント425及び425を更に含む。プロセッサ400は、特定の実施例では、何れもPTPリンクであり得るシステム相互接続対440及び440を使用してシステムの他の構成部分と通信することができる。当然、他の実現形態も考えられる。例えば、各ダイは、複数のコアキャッシュ・クラスタ等を含み得る。ダイそれぞれ上にSAを実現することにより、ダイは相互接続で結合し、よって、コアの数を2倍にすることが可能である。更に、キャッシュ415及び415はこの場合、両方のサイズの共有キャッシュのようにふるまい、性能の向上をもたらす。例えば、各ダイが、8メガバイト(M)・キャッシュを有する4コア・ダイの場合、組み合わせた8コア・プロセッサは16Mキャッシュとしてふるまい得る。
前述の構成に基づいて、スケーラビリティ・エージェントは、コアキャッシュ・クラスタを集約するスケーラビリティ・エ―ジェント・プロトコルをサポートするよう適合されるが、集約は、通信するようシステム相互接続に結合された装置に対して単一のキャッシング・エージェントにみえる。コアキャッシュ・クラスタの数を遮蔽する目的は2つある。まず、遮蔽により、ダイ上の(又はパッケージの)相互接続を介した反復トラフィックによって生じる相互接続飽和の課題が軽減される。第2に、遮蔽により、ホーム・エージェントの反復的な再構成が回避される。より具体的には、キャッシング・エージェントである「N」個のクラスタを各プロセッサ・コアが構成した場合、「M」個のソケット・システムは、システム内のホーム・エージェントに対してN*M個のキャッシング・エージェント・システムとして認識される。SAは事実上、局所コヒーレンシの負担を負い、コアキャッシュ・クラスタ自体にコヒーレンシの責務を分配することにより、機能する。さもなければ、コアキャッシュ・クラスタが修正又は追加される都度、ホーム・エージェントを再設計しなければならなくなる。遮蔽された集約機能に加えて、スケーラビリティ・エージェント・プロトコルは、同じIC上のコアキャッシュ・クラスタ間の局所コヒーレンスを処理するよう企図されている。
種々の実施例では、分離キャッシュにおいて通常生じる複製を回避するために、ソケットに入れられる、各線のちょうど1つの複製を維持することができる。複製しか存在しないので、この複製は、コアキャッシュ・クラスタのキャッシュのうちの1つに存在する。キャッシュ線の存在が、ソケット内のコア全てにおいて追跡されることを確実にするために、コアビット・フィールドをコアキャッシュ・クラスタ・キャッシュにおいて拡張させることができる。これをやる2つのやり方が存在している。各キャッシュは、ソケット内のコアの合計数に等しいコア・ビットを含むようにすることが可能であるか、又は、どのクラスタが線を含んでいるかを記憶するだけでコア・ビット空間を保存することが可能である。よって、各コアキャッシュ・クラスタ・キャッシュは局所クラスタにおけるコアの数に等しいコア・ビットを有し、ソケット内の他のクラスタに線が存在しているか否かを追跡するクラスタ・ビットを有する。
次に図3を参照するに、本発明の一実施例による方法のフロー図を示す。図3に示すように、方法10は、キャッシュ線がプロセッサ・ソケットに入れられる場合に入力データを処理するために使用することができる。図3に示すように、方法10は、システム相互接続インタフェースから要求データを受信することによって開始することができる(ブロック20)。例えば、前述のキャッシュ線は、データを要求したSAによって受信することができる。データは次いで、要求側コアに関連付けられた局所コアの線に記憶することができる(ブロック30)。
なお図3を参照すれば、次に、クラスタ・ビット及びコア・ビットを、その線のタグ・アレイのベクトルにおいて更新することができる(ブロック40)。この更新はよって、線がクラスタにおいて存在しており、所定のコアによって要求又はアクセスされていることを示す。次いで、データ自体を、要求側コアに供給することができる(ブロック50)。よって、データの一複製のみがソケット内に保持される(ブロック60)。すなわち、そのデータの単一の線のみがソケットに存在し得るが、記憶されたクラスタのコア、又は他のクラスタのコアによってアクセスすることができる。各コアにプライベートなキャッシュ線がそれ自身のクラスタに存在していることを確実にするために、行われるポリシー決定は、第1のローディング・アクセスにより、それ自身のクラスタに線が埋められるようにすることである。よって、所定のアドレス・ハッシング・ポリシーなしで線を分布させる。ランダムな分布よりも局所性に優先度を与える。この同じポリシーに基づけば、分配データは、第1のアクセスに基づいてランダムに分布させる。平均的に、分配データは、ソケット内のコアそれぞれから等距離である。各線の複製は1つに過ぎないので、各クラスタはそれ自身では包括的でない。しかし、ソケットは包括的である。
ソケット内のキャッシュ線毎に、「オーナ」キャッシュが存在している。これは、線を含むクラスタ・キャッシュである。これは、線のソケット・レベル状態を含み、線のコア・ビット及びクラスタ・ビットを把握する。クロス・クラスタのスヌープ・フロー及び入力フローは、オーナのキャッシュによって示されるコア及びクラスタをスヌープ・フローが最終的にスヌープするように企図される。コアからのライトバック・フローは、書込により、オーナ・キャッシュが最終的に更新されるように企図される。よって、包括性はソケット・レベルで維持される。
コアキャッシュ・クラスタ・タグ・アレイに記憶された情報は、ソケット内のクラスタの数に関する更なる情報を含めるよう拡張される。Local_Dataビットが、各トランザクションの完了メッセージに付加される。ソケットの外部から完了メッセージが戻っている場合、ビットはゼロにされる。SAによって戻される完了メッセージの場合、このビットは1又はゼロであり得る。local_dataビットが1の場合、これは、ダイ上クラスタによって線が戻され、要求側のキャッシュに満たしてはならない旨を要求側に示す。local_dataビットがゼロの場合、これは、要求側のキャッシュに線を満たすことが可能であることを示唆している。Local_Snpビットは、SAとコア・クラスタとの間のスヌープ・インタフェース上で定義される。これは、現在のソケット上で生成されたトランザクションが理由でスヌープが生じたか否かをクラスタに示すために使用される。SNP_allビットは、SAとコア・クラスタとの間のスヌープ・インタフェース上で定義される。セットされると、そのキャッシュ・ルックアップ結果と無関係に、クラスタがその線のオーナ・クラスタである場合以外には、そのクラスタにおけるコア全てがスヌープされなければならないことをクラスタに示す。セットされないと、クラスタは、包括的スヌーピングの通常の規則で進むことが可能である。スヌープしなければならないクラスタを示すために、クラスタ・ビットがSAにオーナ・クラスタから示される。これらは、局所キャッシュにヒットし、クロス・クラスタ・スヌープ、又はオーナ・クラスタにおける線にヒットするスヌープを必要とする読み出し時に示される。クラスタ・ビットは、コアキャッシュ・クラスタからSAへの要求/応答上に示される。クロス・スヌープ(Xsnp_Only)ビットを、コアキャッシュ・クラスタからSAへのインタフェース上で示す。セットされると、オーナ・クラスタであり、クロス・クラスタ・スヌープが必要であることをクラスタは示しているが、現在の要求に外部の要求は必要でない。クラスタ・ビットは常に、Xsnp_Onlyビットがセットされると示される。Rd_Missビットは、コアキャッシュ・クラスタからSAへの現在の要求が局所キャッシュ・ミスである旨を示すために使用される。これは、SAが、クロス・クラスタ・スヌープを行わなければならないのみならず、外部要求を送出する必要もあり得ることを示唆している。Wr_Missビットは、エビクションと、局所キャッシュをミスするライトバックとの間で区別するために使用される。ライトバック・トランザクション時にセットされると、現在のライトバックが、局所キャッシュをミスしたライトバックである旨を示す。Wr_Missビットがセットされない場合、クラスタ・ビットはSAに示される。更なるビットであるMy_ownビットは、スヌープ応答時にコア・クラスタとSAとの間のインタフェース上に存在する。ビットがセットされた場合、線のオーナである旨、及び示されたクラスタ・ビットが有効である旨をSAに示す。
各コアキャッシュ・クラスタにおけるキャッシュは包括的共有キャッシュであるため、キャッシュは、現在の線を含んでいる可能性があり得る、クラスタ内のコアを示すキャッシュ・タグ・アレイに記憶されたベクトルに存在していることがあり得るコア・ビットを含む。n個のコアキャッシュ・クラスタが存在しており、SAアーキテクチャを使用してi個のコアを各クラスタが含むことがあり得ることを考えてみる。ソケット内のコアの合計数はniである。各コアキャッシュ・クラスタ内のキャッシュは、iビット幅のコア・ビット・ベクトルを含む。各コアキャッシュ・クラスタにおけるコア・ビット・ベクトルの幅は、i+nである。最初のiビットは局所コア・ビットとして表され、次のnビットはクラスタ・ビットとして知られている。局所コア・ビットは、どのコアがキャッシュにアクセスしたかを示す。クラスタ・ビットは、どのクラスタが現在の線を有しているかを示す。
以下に説明するように、読み出しフロー/書き込みフロー/スヌープ・フローは、前述の原理に準拠しながら、コヒーレンスを維持するよう修正することができる。SAとコアキャッシュ・クラスタとの間のインタフェースは、前述のポリシーの実現に助力するよう企図されている。更に、LLCフローは、LLCをミスする他のクラスタ、ミス及びライトバック(WB)に対するスヌープを必要とするヒットを処理するよう修正される。重複を避け、ソケット内の各線の単一の複製を保持するよう企図される。
次に図4を参照するに、本発明の一実施例による方法のフロー図を示す。より具体的には、図4に示すように、方法100は、要求側コアに関連付けられた局所キャッシュにおけるヒット、及び前述のキャッシュ内のミスに対する要求のキャッシュ管理ポリシー―を示すために使用することができる。次に図4を参照すれば、方法100は、コア要求が局所キャッシュにおいてヒットするか否かを判定すること(菱形120)によって始まり得る。要求が局所キャッシュをヒットし、局所クラスタ・ビットのみが(菱形125で判定されるように)セットされる場合、局所クロス・スヌープを起動させることが可能であるか、又はクロス・スヌープなしで線を要求側コアに戻すことができる(菱形130)。局所クラスタ・ビットが、特定の他のクラスタ・ビットとともにセットされるか、(又は他のビットのみがセットされる場合)、制御は菱形135に移る。現在の要求が読み出しの場合、現在の要求はヒットであり、SAに対する要求は必要でない。よって、コアにデータが供給されるまで、適切な局所コア・ビット及び局所クラスタ・ビットがセットされる(ブロック140)。さもなければ、現在の要求がオーナシップに対する要求(RFO)の場合、xsnp_onlyビットがセットされたミス要求は、アドレス・ハッシュに基づき得る適切なSAに送出される(ブロック145)。SAを介して他のクラスタに送出されるxsnpのために到着し得る。xsnpが完了すると、キャッシュ・データ又は新たなデータが、要求側コアに供給される。次いで、(やはりブロック140で)セットされた局所クラスタ・ビット及び要求側コアの局所コア・ビットのみで局所キャッシュに満たされる。
その代わりに菱形120でミスが判定された場合、以下のキャッシュ・ミス・ポリシーが採用される。xsnp_onlyビットをリセットして、ミス要求がSAに送出される(ブロック150)。SAは、トランザクションを完了すると、local_dataと呼ばれるビットを送出する。local_dataビットがセットされている(菱形155で判定される)場合、データは、コアに供給され、局所キャッシュに満たされない(ブロック160)。local_dataビットがセットされていない場合、データはコアに供給され、線が局所キャッシュに満たされ、局所クラスタ、及び要求側コアの局所コア・ビットがセットされる(ブロック165)。SAは、local_dataビットを使用して他のキャッシュにおけるデータの複製を制御する。図4の実施例においてこの特定の実現形態を示しているが、本発明の範囲はこの点で限定されるものでない。
ソケットの観点から、トランザクションがおおざっぱに2つのクラス(すなわち、出力トランザクション及び入力トランザクション)に分類される。何れのクラスのトランザクションの場合にも、スケーラビリティ・エージェントは、ダイ上スヌーピング・エージェント、及びスヌープ応答アグリゲータの役割を果たす。本発明の実施例によって提示されるスケーラブルなコアキャッシュ・クラスタ集約アーキテクチャは、コアキャッシュ・クラスタを集約することにより、コアが多数のプロセッサによって使用することが可能である。スケーラビリティ・エージェントのダイ上スヌーピング機能により、同じダイ上のコアキャッシュ・クラスタ間の低レーテンシ・キャッシュ間転送が確実になる。ダイ上相互接続のレーテンシ及び帯域幅はクリティカルでない。プロセッサ・コアからのトラフィックが共有キャッシュによってフィルタリングされるからである。
以下のエビクション・ポリシーを一実施例で採用することができる。局所キャッシュ・エビクションでは、クラスタ・ビットは、(WEメッセージ・タイプである)エビクション要求とともにSAに送出される。更に、wr_missビットがゼロにセットされる。以下の書込ミス・ポリシーが採用される。コアからのWBが局所キャッシュをミスする場合がある。これは、線が、別のコアキャッシュ・クラスタに存在し得るからである。これが起きると書込はSAにエビクションとしてのみ送出されるが、wr_missビットがセットされる。以下のスヌープ処理ポリシーが採用される。入力スヌープが受信されると、snp_allビット及びlocal_snpビットが検査される。snp_allビットがセットされている場合、共有キャッシュ結果と無関係にコア全てにスヌープを送出しなければならないことを示す。オーナ・キャッシュは、snp_all bitがセットされた状態でスヌープを受信することは決してない。local_snpビットがセットされ、現在のスヌープが局所キャッシュにおいてヒットした場合、適切な局所コアがスヌープされ、クラスタ・ビット及びmy_ownビットがセットされた状態で、適切な応答により、SAに応答する。クラスタ・ビット及びコア・ビットは適切に更新され得る。local_snpビットがセットされており、現在のスヌープがミスの場合、my_ownビットがリセットされて応答を戻すことができる。SAはダイ上スヌーピングの実行を担う。出力要求及び入力要求の結果としてそのコアキャッシュ・クラスタをスヌープすることに加えて、ソケットにおける各線の単一の複製のみが存在していることを確実にするようクラスタと協働する。更にクラスタ間の競合を解決する。しかし、競合解決は本願の範囲を超えており、トランザクション全てが競合なしであるとみなされる。
クラスタ・ヒットを有する種々の出力トランザクションを表1に示す。表1では、修正済み、排他的、共有、無効(MESI)キャッシュ・コヒーレンシ・ポリシーを使用して、2つのSAユニット(SA0及びSA1)、並びに2つのコアキャッシュ・クラスタCC0及びCC1を使用することにより、SAフローが示される。局所クロス・スヌープは示しておらず、SAを介したフローのみが表している。
Figure 2009037615
表1を参照すれば、CC0における読み出し/無効化/自己トランザクション(RdInvlOwn)ヒットM、E、一部の局所コア・ビット及び一部の他のクラスタ・ビットがセットされる。これは、線が他のコア及びクラスタにおいてS又はIであり得ることを示唆している。1つ又は複数の他のクラスタ・ビットがセットされており、どの局所コア・ビットもセットされておらず、その他のクラスタ・キャッシュ線状態がE/S/Iである場合に同じフローがあてはまる。CC0は、xnp_onlyビットを1にセットし、クラスタ・ビットを11にセットして、ミス要求をSA0に送出する。CC1は、そのキャッシュをミスするが、そのコア全てをスヌープし、RspI及びmy_copyをゼロにセットして応答する。SA0は、my_copyが0にセットされてCC1から無効化(RspI)を受信する。local_dataがゼロにセットされてCC0に、完全なGntE_Cmpを送出する。local_dataがセットされ、これがヒット要求であるので、データがコアに供給され、クラスタ・ビットが、キャッシュ内のCC1にリセットされる。
なお表1を参照すれば、RdInvlOwnトランザクション・ビットがSにヒットするとみなす。局所コア・ビットの一部がセットされるか、若しくは局所コア・ビットが何らセットされず、1つ又は複数の他のクラスタ・ビットがセットされる。これは、事実上、ソケット・ミスであり、ソケット・ミス要求が、ソケット状態をクリーニングした後に送出される。CC0は、xnp_onlyビットを0にセットし、クラスタ・ビットを01にセットして、ミス要求をSA0に送出する。SA0は、クラスタ・ビットを検査し、local_snpをセットし、snp_allを1にセットしてスヌープをCC1に送出する。CC1はそのキャッシュをミスするが、そのコア全てをスヌープし、RspI及びmy_copyをゼロにセットして応答する。SA0は、my_copyを0にセットして、CC1からRSpIを受信する。次いで、システム相互接続上でソース・ブロードキャストを送出する。最終的に、ホーム・ロジックは、要求側クラスタに完了を送出する。local_dataがゼロにセットされ、これがミス要求であるので、データはコアに供給され、線がCache0に満たされる。クラスタ・ビットは10に初期化され、適切なコア・ビットがセットされる。
表1を参照すれば、読み出しコード/データ・トランザクション(RdCode/RdData)は、CC0におけるM、Eをヒットする。他の1つのクラスタ・ビットのみがセットされる。線状態はその他のクラスタではIである。CC0は、xnp_onlyビットを1にセットし、クラスタ・ビットを01にセットして、ミス要求をSA0に送出する。SA0は、クラスタ・ビットを検査し、local_snp及びsnp_allを1にセットしてスヌープをCC1に送出する。CC1はそのキャッシュをミスするが、そのコア全てをスヌープし、RspI及びmy_copyをゼロにセットして応答する。SA0は、my_copyが0にセットされてCC1からRspIを受信する。local_dataがゼロにセットされてCC0に、完全なGntE_CmpをCC0に送出する。local_dataがセットされ、これがヒット要求であるので、データがコアに供給され、クラスタ・ビットが、キャッシュ内のCC1にリセットされる。
表1を参照すれば、RdCode/RdDataトランザクションは、CC0におけるM、Eをヒットする。他の1つのクラスタ・ビットのみがセットされる。線状態はその他のクラスタではE、Sである。CC0は、xnp_onlyビットを1にセットし、クラスタ・ビットを11にセットして、ミス要求をSA0に送出する。SA0は、クラスタ・ビットを検査し、local_snp及びsnp_allを1にセットしてスヌープをCC1に送出する。CC1はそのキャッシュをミスするが、そのコア全てをスヌープし、RspS及びmy_copyをゼロにセットして応答する。SA0は、my_copyが0にセットされてCC1からRspSを受信する。local_dataがゼロにセットされて、完全なGntE_CmpをCC0に送出する。local_data及びこれがヒット要求であるので、データがコアに供給され、局所クラスタ及び局所コア・ビットが線にセットされる。
表1を参照すれば、RdCode/RdData/RdInvlOwnトランザクションは、CC0におけるM、Eをヒットする。他の1つのクラスタ・ビットのみがセットされる。線状態はその他のクラスタではMである。CC0は、xnp_onlyビットを1にセットし、クラスタ・ビットを01にセットして、ミス要求をSA0に送出する。SA0は、クラスタ・ビットを検査し、local_snp及びsnp_allを1にセットしてスヌープをCC1に送出する。CC1はそのキャッシュをミスするが、そのコア全てをスヌープし、RspFwdI及びmy_copyをゼロにセットして応答する。SA0は、my_copyが0にセットされてCC1からRspFwdIを受信する。local_dataがゼロにセットされて、完全なGntE_CmpをCC0に送出する。local_data及びこれがヒット要求であるので、データがコアに供給され、局所クラスタ・ビット及び適切な局所コア・ビットが線にセットされる。
以下、表2に示すのは、本発明の一実施例によるクラスタ・ミス時の出力トランザクションの例である。
Figure 2009037615
表2を参照するに、局所クラスタ・ミス及び遠隔クラスタ・ミスを仮定する。この場合、外部トランザクションが必要である。CC0は、xnp_onlyビットが0にセットされ、rd_missビットがセットされて、ミス要求をSA0に送出する。rd_missがセットされている場合、クラスタ・ビットは関係なく、SA0はクラスタ・ビットを検査し、local_snpがセットされ、snp_allが0にセットされてCC1にスヌープを送出する。snp_allが0にセットされているので、CC1はそのキャッシュをミスする。そのコアをスヌープしないが、my_copyがゼロにセットされて、RspIをSAに戻す。SA0は、my_copyが0にされてCC1からRspIを受信する。CC1が線を有していない旨をこのことは示唆している。次いで、システム相互接続上でソース・ブロードキャストを送出する。最終的に、ホーム・ロジックは、要求側クラスタに完了を送出する。local_dataがゼロにセットされ、これがミス要求であるので、データはコアに供給され、線がCache0に満たされる。クラスタ・ビットは10に初期化され、適切なコア・ビットがセットされる。
表2を参照すれば、RdCode/RdData局所クラスタはミス、及び遠隔クラスタM/E/Sを有し、その局所コア・ビットのみがセットされ、他のクラスタ・ビットはセットされない。CC0は、xnp_onlyビットが0にセットされ、rd_missビットがセットされて、ミス要求をSA0に送出する。SA0はクラスタ・ビットを検査し、local_snpがセットされ、snp_allが0にセットされてスヌープをCCIに送出する。CC1はそのキャッシュにおいてヒットする。その局所コア・ビットを検査し、適切な処理を完了する。次いで、RspFwdSでSA0に応答し、データを要求側に直接送出する。CC0のクラスタ・ビットがCC1においてセットされる。RspFwdSとともに、my_copyビットがセットされ、クラスタ・ビットがSA0に送出される。SA0は、セットされたmy_copyとともにRspFwdSを受信する。CC1からのクラスタ・ビットを検査し、要求側のクラスタ/他のクラスタをスヌープする必要があるかを決定する。この場合、更なるスヌープは必要でない。local_dataが1にセットされてCmpをCC0に送出する。CC0は、local_dataがセットされている旨を検査し、要求側コアにデータを供給し、そのキャッシュで満たさない。
なお図2を参照すれば、局所クラスタ内のRdInvlOwnトランザクションは、局所クラスタ、遠隔クラスタM/Eにおいてミスし、その局所コア・ビットのみがセットされ、他のクラスタ・ビットはセットされない。CC0は、xnp_onlyビットが0にセットされ、rd_missビットがセットされて、ミス要求をSA0に送出する。SA0はクラスタ・ビットを検査し、local_snpがセットされ、snp_allが0にセットされてスヌープをCC1に送出する。CC1はそのキャッシュにおいてヒットし、その局所コア・ビットを検査し、適切な処理を完了する。次いで、RspFwdIでSA0に応答し、データを要求側に直接送出する。CC0のクラスタ・ビットがCC1においてセットされる。RspFwdIとともに、my_copyビットがセットされ、クラスタ・ビットがSA0に送出される。SA0は、セットされたmy_copyとともにRspFwdIを受信する。CC1からのクラスタ・ビットを検査し、要求側のクラスタ/他のクラスタをスヌープする必要があるかを決定する。この場合、更なるスヌープは必要でない。local_dataが1にセットされてCmpをCC0に送出する。CC0は、local_dataがセットされている旨を検査し、要求側コアにデータを供給し、そのキャッシュで満たさない。
なお図2を参照すれば、RdInvlOwnトランザクションは、局所クラスタ・ミス、遠隔クラスタSを有し、その局所コア・ビットのみがセットされ、他のクラスタ・ビットはセットされない。CC0は、xnp_onlyビットが0にセットされ、rd_missビットがセットされて、ミス要求をSA0に送出する。SA0はクラスタ・ビットを検査し、local_snpがセットされ、snp_allが0にセットされてスヌープをCC1に送出する。CC1はそのキャッシュにおいてヒットし、その局所コア・ビットを検査し、適切な処理を完了する。この場合、線は無効化される。次いで、RspIでSA0に応答する。RspIとともに、my_copyビットがセットされ、クラスタ・ビットがSA0に送出される。SA0は、セットされたmy_copyとともにRspIを受信する。CC1からのクラスタ・ビットを検査し、要求側クラスタ/他のクラスタをスヌープする必要があるかを決定する。この場合、更なるスヌープは必要でない。線がソケットにおいて無効化された状態にあるので、ソース・ブロードキャストのミスを送出する。最終的に、システム領域はデータをCC0に供給し、local_dataはセットされない。CC0は、local_dataがセットされている旨を検査し、要求側コアにデータを供給し、線をそのキャッシュに満たす。適切なコア・ビット及び局所クラスタ・ビットがセットされる。
なお表2を参照すれば、RdCode/RdData局所クラスタ・ミス、及び遠隔クラスタM/Eが、局所コア・ビットがセットされずに生じる。要求側クラスタのクラスタ・ビットのみがセットされる。RspI/RspS。これは、クリーンアップ・スヌープとして表すことが可能なものを必要とする特定の場合である。第1の段階では、SAはオーナがどのクラスタであるかを知らないので、 snp_allビットがリセットされて、スヌープをクラスタ全てに送出する。一クラスタのみがスヌープ(オーナ・クラスタ)にヒットし、残りは全てミスする。オーナ・クラスタは線のクラスタ・ビットを備えたスヌープ応答を返信し、my_ownビットは、応答時にセットされる。SAは、クラスタ・ビットを受信すると、クラスタ・ビットがセットされたクラスタ全てについてsnp_allビットがセットされてスヌープが再度送出される。このスヌープは、線を含み得るクラスタ全てをクリーンするクリーンアップ・スヌープである。クリーンアップ・スヌープが完了すると、完了が要求側クラスタに示される。CC0は、xnp_onlyビットが0にセットされ、rd_missビットがセットされて、ミス要求をSA0に送出する。rd_missがセットされている場合、クラスタ・ビットは関係ない。SA0はクラスタ・ビットを検査し、local_snpがセットされ、snp_allが0にセットされてスヌープをCC1に送出する。CC1はそのキャッシュにおいてヒットし、その局所コア・ビットを検査し、適切な処理を完了する。RspFwdIでSA0に応答する。データが、Data_Eとともに要求側に送出される。更に、要求側のクラスタ・ビットがセットされる(この場合、既にセットされている)。応答とともに、my_copyビットがセットされ、元のクラスタ・ビットがSA0に送出される。SA0は、セットされたmy_copyとともにRspFwdIを受信する。CC1からのクラスタ・ビットを検査し、要求側クラスタをスヌープする必要があるかを決定する。スヌープは、snoop allビットがセットされて要求側クラスタに送出される。CC0は、スヌープを完了し、RspI/RspS SA0を送出する。SA0は次いで、CmpをCC0に送出する。CC0は次いで、その局所キャッシュに満たすことなくデータを使用することが可能である。
なお表2を参照すれば、RdData/RdInvlOwn局所クラスタ・ミス、及び遠隔クラスタM/Eが、局所コア・ビットがセットされずに生じるものとする。要求側クラスタのクラスタ・ビットのみがセットされる。要求側クラスタにおける別のコアは、M状態における線を含む。RspFwdI。転送側コアはデータを要求側クラスタ(それ自身のクラスタ)に直接送出する。その局所クラスタは、RspFwdIをSAに送出する。この場合、SAは2つのRspFwdIを受信する。要求側クラスタはデータを2回受信し、データをホームから廃棄しなければならない。修正データは、要求がRdInvlOwnタイプの場合、要求側コアに供給される。元の要求がRdDataの場合、局所クラスタは、E状態において要求側コアにデータを供給し、現在の線のWr_Missフローを起動させる。CC0は、xnp_onlyビットが0にセットされ、rd_missビットがセットされて、ミス要求をSA0に送出する。SA0はクラスタ・ビットを検査し、local_snpがセットされ、snp_allが0にセットされてスヌープをCC1に送出する。CC1はそのキャッシュにおいてヒットし、その局所コア・ビットを検査し、適切な処理を完了する。この場合、線はS状態に格下げされる。次いで、RspFwdIでSA0に応答する。データが要求側にData_Eとともに送出される。更に、要求側のクラスタ・ビットがセットされる。応答とともに、my_ownビットがセットされ、元のクラスタ・ビットがSA0に送出される。SA0は、セットされたmy_ownとともにRspFwdIを受信する。CC1からのクラスタ・ビットを検査し、要求側クラスタをスヌープする必要があるかを決定する。スヌープは、snoop allビットがセットされて要求側クラスタに送出される。スヌープは、完了し、RspFwdIをSA0に送出する。データがMコアからコアキャッシュ・クラスタ・ロジックに送出される。このデータは、CCIから返されたデータに優先する。データはこの場合、M状態である。CC0は、wrミス・フローを起動させ、E状態において要求側にデータを戻す。そのキャッシュは満たさない。
なお表2を参照すれば、ソケット状態がSであるRdInvlOwnを仮定する。局所クラスタではミスであり、オーナ・キャッシュ状態は共有状態を示す。基本的には、線がソケットにおいてクリーンアップされ、外部要求が送出される。CC0は、xnp_onlyビットが0にセットされ、rd_missビットがセットされて、ミス要求をSA0に送出する。SA0はクラスタ・ビットを検査し、local_snpがセットされ、snp_allが0にセットされてスヌープをCC1に送出する。CC1はそのキャッシュにおいてヒットし、その局所コア・ビットを検査し、適切な処理を完了する。RspIでSA0に応答し、その局所コピーを無効化する。応答とともに、my_ownビットがセットされ、元のクラスタ・ビットがSA0に送出される。SA0は、セットされたmy_ownとともにRspIを受信する。CC1からのクラスタ・ビットを検査し、要求側クラスタをスヌープする必要があるかを決定する。スヌープは、snoop allビットがセットされて要求側クラスタに送出される。CC0は、スヌープを完了し、RspIをSA0に送出する。SA0は次いで、ソース・ブロードキャストをCSI上でRdInvlOwnとともに送出する。最終的に、システム相互接続はDataC_E_CmpをCC0に送出する。この線はCC0キャッシュに満たされ、要求側コアに供給される。
なお表2を参照するに、局所キャッシュをミスするコアからのライトバックを仮定する。SAはまず、ノー・オペレーション(nop)スヌープを送出する。このスヌープは、キャッシュ状態に対して影響を何ら及ぼさない。応答に基づいて、SAは、どのクラスタがオーナ・クラスタであるかを判定することが可能である。CC0は、wr_missビットが1にセットされて書込ミス要求をSA0に送出し、local_snpがセットされ、snp_allが0にセットされてNopスヌープをCC1に送出する。CC1はそのキャッシュにおいてヒットする。これはヒットであるがnopであるので、キャッシュ状態への変更は行われない。しかし、my_ownビットがセットされて、RspIが送出される。SA0は次いで、data_pullスヌープをオーナ・クラスタのidとともに要求側クラスタに送出する。CC0は次いで、ライトバックをオーナ・クラスタに送出する。完了をオーナ・クラスタから受信すると、割り当て解除をSAに送出する。
なお表2を参照するに、クラスタ・キャッシュからのエビクションが生じ得る。エビクションはオーナ・キャッシュからのみ生じ得るので、クラスタ・ビットはSAに送出される。SAは他のクラスタ・キャッシュの適切なクリーンアップを行い、エビクションが次いで、システム・メモリに送出される。CC0は、wr_missビットが0にセットされ、クラスタ・ビットが示されて、書込要求をSA0に送出する。SA0は、クラスタ・ビットが示されるクラスタ全てにスヌープを送出する。Local_snpがセットされ、snp_allがセットされる。CC1は、RspIでスヌープに応答し、my_ownビットがリセットされる。応答全てが受信されると、data_pullが要求側クラスタに示される。要求側クラスタは次いで、WbMtoIを外部システムに直接送出することが可能である。最終的に、トランザクションがCSI領域において完了し、割り当て解除がSAに送出される。
なお表2を参照すれば、入力スヌープ・トランザクションは2つのスヌープ・ステップを行う状態に達する。まず、要求スヌープが行われ、次いで、クリーンアップ・スヌープが行われる。入力スヌープがSA0に割り当てられる。SA0は、local_snpがゼロにセットされ、snp_allがゼロにセットされてスヌープをクラスタ全てに送出する。オーナ・クラスタはRspFwdIで応答し、my_ownビットがセットされる。この場合にはCC0である。CC1はRspIを送出する。SA0は、組み合わせたRspFwdIを入力スヌープのホームに送出する。次いで、データ・プル・メッセージをCC0(オーナ・クラスタ)に送出する。CC0は、データ・プル・メッセージを受信すると、データ・メッセージを元のスヌープの要求側に送出する。
実施例は、CMP間のトラフィックを削減するためにCMPプラットフォームに適していることがあり得る。図5に示すように、マルチプロセッサ・システム500は、ポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続550を介して結合された第1のプロセッサ570及び第2のプロセッサ580を含むが、システムは、別のバス・アーキテクチャのものであり得る。図5に示すように、プロセッサ570及び580それぞれは、第1のプロセッサ・コア及び第2のプロセッサ・コア(すなわち、プロセッサ・コア574a及び574b、並びにプロセッサ・コア584a及び584b)を含むマルチコア・プロセッサであり得るが、他のコアも存在し得る。更に、図5に示すように、プロセッサ毎の個々のSAの集約であり得るSA575及び585をそれぞれ、プロセッサ・コア574a及び574b、並びに584a及び584bの対それぞれに結合して、本発明の実施例によってメモリ・トラフィックを処理することができる。図5をなお参照すれば、第1のプロセッサ570は、メモリ・コントローラ・ハブ(MCH)572、並びにポイントツーポイント(P−P)インタフェース576及び578を更に含む。同様に、第2のプロセッサ580は、MCH582、並びにP−Pインタフェース586及び588を含む。図5に示すように、MCH572及び582は、プロセッサをそれぞれのメモリ(すなわち、メモリ532及びメモリ534。主メモリの一部(例えば、ダイナミック・ランダム・アクセス・メモリ(DRAM))であり得る)に結合する。
第1のプロセッサ570及び第2のプロセッサ580はそれぞれP−P相互接続552及び554を介してチップセット590に結合することができる。図5に示すように、チップセット590は、P−Pインタフェース594及び598を含む。更に、チップセット590は、高性能グラフィクス・エンジン538とチップセット590を結合させるためのインタフェース592を含む。一実施例では、アドバンスト・グラフィクス・ポート(AGP)バス539又はポイントツーポイント相互接続を使用してグラフィクス・エンジン538をチップセット590に結合することができる。図5に示すように、第1のバス516を第2のバス520に結合するバス・ブリッジ518とともに、種々のI/O装置514を第1のバス516に結合することができる。種々の装置(例えば、キーボード/マウス522、通信装置526、及び、一実施例においてコード530を含み得るデータ記憶装置528)を第2のバス520に結合することができる。更に、オーディオI/O524を第2のバス520に結合することができる。
本発明は、限定数の実施例に関して説明してきたが、当業者は数多くの修正及び変形をそこから分かるであろう。特許請求の範囲記載の請求項が、本発明の真の趣旨及び範囲内に収まる限り、前述の修正及び変形を全て包含することを意図している。
本発明の一実施例によるマルチコア・プロセッサを示すブロック図である。 本発明の別の実施例によるプロセッサを示すブロック図である。 本発明の一実施例による方法を示すフロー図である。 本発明の一実施例による方法を示すフロー図である。 本発明の一実施例によるマルチプロセッサ・システムを示すブロック図である。
符号の説明
140 システム相互接続インタフェース
310 キャッシュ
320 ダイ上相互接続
330 コア
340 キャッシュ
350 スケーラビリティ・エージェント

Claims (19)

  1. 方法であって、
    複数のコアキャッシュ・クラスタを含むマルチコア・プロセッサの第1のスケーラビリティ・エージェント(SA)においてシステム相互接続インタフェースから要求データを受信する工程と、
    要求側コアを含む第1のコアキャッシュ・クラスタの局所キャッシュの線に前記要求データを記憶する工程と、
    前記線のタグ・アレイのベクトルにおけるクラスタ・フィールド及びコア・フィールドを更新する工程とを含む方法。
  2. 請求項1記載の方法であって、前記要求データを前記要求側コアに供給する工程を更に含む方法。
  3. 請求項2記載の方法であって、前記局所キャッシュの前記線においてのみ前記要求データを保持する工程を更に含む方法。
  4. 請求項1記載の方法であって、クロス・スヌープ表示子が第1の状態を有して、前記要求データに対する要求を第2のコアキャッシュ・クラスタから前記第1のスケーラビリティ・エージェントにおいて受信する工程を更に含む方法。
  5. 請求項4記載の方法であって、回答トランザクションにおいて前記要求データを前記第2のコアキャッシュ・クラスタの前記要求側コアに供給し、前記回答トランザクションに関連付けられた局所データ表示子が第1の状態のものの場合、前記要求データを前記第2のコアキャッシュ・クラスタの局所キャッシュに記憶しない工程を更に含む方法。
  6. 請求項4記載の方法であって、回答トランザクションにおいて前記要求データを前記第2のコアキャッシュ・クラスタの前記要求側コアに供給し、前記回答トランザクションに関連付けられた局所データ表示子が第2の状態のものの場合、前記要求データを前記第2のコアキャッシュ・クラスタの局所キャッシュに記憶する工程を更に含む方法。
  7. 請求項1記載の方法であって、前記第1のコアキャッシュ・クラスタの何れかのコアが前記要求データにアクセスした旨を前記ベクトルが示す場合、前記第1のSAにアクセスすることなく読み出し要求に応じて、前記線からの前記要求データを前記局所キャッシュから直接前記第1のコアキャッシュ・クラスタに供給する工程を更に含む方法。
  8. 請求項1記載の方法であって、前記クラスタ・フィールド及び前記コア・フィールドを更新する工程は、前記ベクトルにおける前記第1のコアキャッシュ・クラスタ及び前記要求側コアに関連付けられたクラスタ・ビット及びコア・ビットをセットする工程を含む方法。
  9. 装置であって、
    キャッシュ・メモリ、及び前記キャッシュ・メモリと通信する1つ又は複数のプロセッサ・コアとをそれぞれが含む複数のコアキャッシュ・クラスタであって、各コアキャッシュ・クラスタの前記キャッシュ・メモリが非包括的であり、前記コアキャッシュ・クラスタ全ての前記キャッシュ・メモリの集約が包括的である複数のコアキャッシュ・クラスタと、
    前記複数のコアキャッシュ・クラスタのうちの1つにそれぞれが結合された複数のスケーラビリティ・エージェントであって、スケ―ラビリティ・エージェントは、前記複数のコアキャッシュ・クラスタが単一のキャッシング・エージェントとしてみえることを確実にするためのプロトコルに応じて動作する複数のスケーラビリティ・エージェントと、
    前記複数のスケーラビリティ・エージェントに結合するための相互接続とを備える装置。
  10. 請求項9記載の装置であって、前記キャッシュ・メモリの前記集約が併せて共有キャッシュ・メモリを形成する装置。
  11. 請求項9記載の装置であって、単一のデータ複製のみが、前記キャッシュ・メモリの前記集約に存在している装置。
  12. 請求項9記載の装置であって、前記複数のスケーラビリティ・エージェントは、データの第1のロード・アクセスを、前記データを要求した前記コアキャッシュ・クラスタの前記キャッシュ・メモリに提供する装置。
  13. 請求項9記載の装置であって、前記キャッシュ・メモリは、ベクトルを記憶するためのタグ・アレイを含み、各ベクトルは、対応するキャッシュ線をどのコアキャッシュ・クラスタが含むかを示す旨のコアキャッシュ・クラスタ毎のクラスタ・ビットを記憶するための第1のフィールド、及び対応するコアキャッシュ・クラスタのコア毎にコア・ビットを記憶するための第2のフィールドを含む装置。
  14. 請求項13記載の装置であって、各コアキャッシュ・クラスタは、それに関連付けられたクラスタ数を有する装置。
  15. システムであって、
    第1のキャッシュ・メモリ、前記第1のキャッシュ・メモリと通信する第1のプロセッサ・コア、及び第1のスケーラビリティ・エージェント(SA)をそれぞれが含む第1の複数のコアキャッシュ・クラスタを含む第1のプロセッサであって、各コアキャッシュ・クラスタの前記第1のキャッシュ・メモリは非包括的であり、前記第1の複数のコアキャッシュ・クラスタ全ての前記第1のキャッシュ・メモリの集約は包括的である第1のプロセッサと、
    第2のキャッシュ・メモリ、前記第2のキャッシュ・メモリと通信する第2のプロセッサ・コア、及び第2のSAをそれぞれが含む第2の複数のコアキャッシュ・クラスタを含む第2のプロセッサであって、各コアキャッシュ・クラスタの前記第2のキャッシュ・メモリは非包括的であり、前記第2の複数のコアキャッシュ・クラスタ全ての前記第2のキャッシュ・メモリの集約は包括的である第2のプロセッサと、
    前記第1のプロセッサを前記第2のプロセッサに結合するためのポイントツーポイント(PTP)相互接続と、
    前記第1のプロセッサに結合されたダイナミック・ランダム・アクセス・メモリ(DRAM)とを備えるシステム。
  16. 請求項15記載のシステムであって、前記第1のSAは、前記第1の複数のコアキャッシュ・クラスタのうちの別のものからのデータに対する要求後に、対応する第1のキャッシュ・メモリの線においてのみデータを保持するシステム。
  17. 請求項15記載のシステムであって、前記第1のキャッシュ・メモリの前記集約が併せて前記第1のプロセッサの共有キャッシュ・メモリを形成するシステム。
  18. 請求項15記載のシステムであって、前記第1のキャッシュ・メモリは、ベクトルを記憶するためのタグ・アレイを含み、各ベクトルは、対応するキャッシュ線を、前記第1の複数のコアキャッシュ・クラスタのうちのどれが含むかを示す旨の前記第1の複数のコアキャッシュ・クラスタ毎のクラスタ・ビットを記憶するための第1のフィールド、及び前記第1の複数のコアキャッシュ・クラスタのうちの対応するもののコア毎にコア・ビットを記憶するための第2のフィールドを含むシステム。
  19. 請求項18記載のシステムであって、前記第1の複数のコアキャッシュ・クラスタそれぞれが、前記タグ・アレイの前記クラスタ・ビットに記憶されるためにそれに関連付けられたクラスタ数を有するシステム。
JP2008190433A 2007-07-31 2008-07-24 複数のコアキャッシュ・クラスタ間の包括的共有キャッシュの提供 Expired - Fee Related JP5005631B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/888,018 US7827357B2 (en) 2007-07-31 2007-07-31 Providing an inclusive shared cache among multiple core-cache clusters
US11/888,018 2007-07-31

Publications (2)

Publication Number Publication Date
JP2009037615A true JP2009037615A (ja) 2009-02-19
JP5005631B2 JP5005631B2 (ja) 2012-08-22

Family

ID=40305186

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008190433A Expired - Fee Related JP5005631B2 (ja) 2007-07-31 2008-07-24 複数のコアキャッシュ・クラスタ間の包括的共有キャッシュの提供

Country Status (5)

Country Link
US (1) US7827357B2 (ja)
JP (1) JP5005631B2 (ja)
CN (1) CN101359310B (ja)
DE (1) DE112008002018B4 (ja)
WO (1) WO2009018005A2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011078014A1 (ja) 2009-12-21 2011-06-30 ソニー株式会社 キャッシュメモリおよびキャッシュメモリ制御装置
JP2017514206A (ja) * 2014-03-14 2017-06-01 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation トランザクション・ステータスを示すためのコヒーレンス・プロトコルの強化

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8028131B2 (en) * 2006-11-29 2011-09-27 Intel Corporation System and method for aggregating core-cache clusters in order to produce multi-core processors
US7827357B2 (en) * 2007-07-31 2010-11-02 Intel Corporation Providing an inclusive shared cache among multiple core-cache clusters
US8380724B2 (en) * 2009-11-24 2013-02-19 Microsoft Corporation Grouping mechanism for multiple processor core execution
US8677371B2 (en) * 2009-12-31 2014-03-18 International Business Machines Corporation Mixed operating performance modes including a shared cache mode
US8312175B2 (en) * 2010-01-21 2012-11-13 Vmware, Inc. Virtual machine access to storage via a multi-queue IO storage adapter with optimized cache affinity and PCPU load balancing
US20130007376A1 (en) * 2011-07-01 2013-01-03 Sailesh Kottapalli Opportunistic snoop broadcast (osb) in directory enabled home snoopy systems
US11109244B2 (en) 2012-04-06 2021-08-31 Plume Design, Inc. Optimization of distributed Wi-Fi networks
KR101858159B1 (ko) * 2012-05-08 2018-06-28 삼성전자주식회사 멀티-cpu 시스템과 이를 포함하는 컴퓨팅 시스템
US9424191B2 (en) * 2012-06-29 2016-08-23 Intel Corporation Scalable coherence for multi-core processors
KR101696124B1 (ko) * 2012-10-22 2017-01-12 인텔 코포레이션 고성능 인터커넥트 물리 계층
US10073779B2 (en) 2012-12-28 2018-09-11 Intel Corporation Processors having virtually clustered cores and cache slices
US9513688B2 (en) 2013-03-16 2016-12-06 Intel Corporation Measurement of performance scalability in a microprocessor
US9519615B2 (en) * 2013-04-09 2016-12-13 Emc Corporation Multiprocessor system with independent direct access to bulk solid state memory resources
CN104252392B (zh) * 2013-06-28 2019-06-18 华为技术有限公司 一种访问数据缓存的方法和处理器
US10817425B2 (en) * 2014-12-26 2020-10-27 Intel Corporation Hardware/software co-optimization to improve performance and energy for inter-VM communication for NFVs and other producer-consumer workloads
EP3268865B1 (en) * 2015-06-26 2021-08-04 Hewlett Packard Enterprise Development LP Self-tune controller
US10019360B2 (en) * 2015-09-26 2018-07-10 Intel Corporation Hardware predictor using a cache line demotion instruction to reduce performance inversion in core-to-core data transfers
CN111651200B (zh) * 2016-04-26 2023-09-26 中科寒武纪科技股份有限公司 一种用于执行向量超越函数运算的装置和方法
US10672745B2 (en) * 2016-10-07 2020-06-02 Xcelsis Corporation 3D processor
CN106453625B (zh) * 2016-11-17 2019-05-17 东软集团股份有限公司 信息同步方法及高可用性集群系统
CN107748674B (zh) * 2017-09-07 2021-08-31 中国科学院微电子研究所 面向比特粒度的信息处理系统
US10558573B1 (en) * 2018-09-11 2020-02-11 Cavium, Llc Methods and systems for distributing memory requests
US11016913B1 (en) 2020-03-30 2021-05-25 Apple Inc. Inter cluster snoop latency reduction
US20230040310A1 (en) * 2021-08-03 2023-02-09 Apple Inc. Cpu cluster shared resource management
US20230289292A1 (en) * 2022-03-10 2023-09-14 Nvidia Corporation Method and apparatus for efficient access to multidimensional data structures and/or other large data blocks
US20240202116A1 (en) * 2022-12-20 2024-06-20 Advanced Micro Devices, Inc. Method and Apparatus for Increasing Memory Level Parallelism by Reducing Miss Status Holding Register Allocation in Caches

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07121442A (ja) * 1993-10-14 1995-05-12 Internatl Business Mach Corp <Ibm> データ処理システム及び制御方法
JP2002304328A (ja) * 2001-02-15 2002-10-18 Bull Sa マルチプロセッサシステム用コヒーレンスコントローラ、およびそのようなコントローラを内蔵するモジュールおよびマルチモジュールアーキテクチャマルチプロセッサシステム
US20030005236A1 (en) * 2001-06-29 2003-01-02 International Business Machines Corporation Imprecise snooping based invalidation mechanism
JP2005234854A (ja) * 2004-02-19 2005-09-02 Hitachi Ltd マルチプロセッサシステム
US7827357B2 (en) * 2007-07-31 2010-11-02 Intel Corporation Providing an inclusive shared cache among multiple core-cache clusters

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5829035A (en) * 1995-12-22 1998-10-27 Apple Computer, Inc. System and method for preventing stale data in multiple processor computer systems
US5893160A (en) 1996-04-08 1999-04-06 Sun Microsystems, Inc. Deterministic distributed multi-cache coherence method and system
US5875472A (en) * 1997-01-29 1999-02-23 Unisys Corporation Address conflict detection system employing address indirection for use in a high-speed multi-processor system
US6009488A (en) 1997-11-07 1999-12-28 Microlinc, Llc Computer having packet-based interconnect channel
US6633958B1 (en) 1997-11-17 2003-10-14 Silicon Graphics, Inc. Multiprocessor computer system and method for maintaining cache coherence utilizing a multi-dimensional cache coherence directory structure
US6467012B1 (en) * 1999-07-08 2002-10-15 International Business Machines Corporation Method and apparatus using a distributed system structure to support bus-based cache-coherence protocols for symmetric multiprocessors
US6405289B1 (en) 1999-11-09 2002-06-11 International Business Machines Corporation Multiprocessor system in which a cache serving as a highest point of coherency is indicated by a snoop response
US6854045B2 (en) 2001-06-29 2005-02-08 Intel Corporation Hardware emulation of parallel ATA drives with serial ATA interface
US6704844B2 (en) 2001-10-16 2004-03-09 International Business Machines Corporation Dynamic hardware and software performance optimizations for super-coherent SMP systems
US7076609B2 (en) * 2002-09-20 2006-07-11 Intel Corporation Cache sharing for a chip multiprocessor or multiprocessing system
US6920532B2 (en) * 2002-11-05 2005-07-19 Newisys, Inc. Cache coherence directory eviction mechanisms for modified copies of memory lines in multiprocessor systems
US9727468B2 (en) 2004-09-09 2017-08-08 Intel Corporation Resolving multi-core shared cache access conflicts
US8407432B2 (en) 2005-06-30 2013-03-26 Intel Corporation Cache coherency sequencing implementation and adaptive LLC access priority control for CMP
US8151059B2 (en) * 2006-11-29 2012-04-03 Intel Corporation Conflict detection and resolution in a multi core-cache domain for a chip multi-processor employing scalability agent architecture
US8028131B2 (en) * 2006-11-29 2011-09-27 Intel Corporation System and method for aggregating core-cache clusters in order to produce multi-core processors

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07121442A (ja) * 1993-10-14 1995-05-12 Internatl Business Mach Corp <Ibm> データ処理システム及び制御方法
JP2002304328A (ja) * 2001-02-15 2002-10-18 Bull Sa マルチプロセッサシステム用コヒーレンスコントローラ、およびそのようなコントローラを内蔵するモジュールおよびマルチモジュールアーキテクチャマルチプロセッサシステム
US20030005236A1 (en) * 2001-06-29 2003-01-02 International Business Machines Corporation Imprecise snooping based invalidation mechanism
JP2005234854A (ja) * 2004-02-19 2005-09-02 Hitachi Ltd マルチプロセッサシステム
US7827357B2 (en) * 2007-07-31 2010-11-02 Intel Corporation Providing an inclusive shared cache among multiple core-cache clusters

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011078014A1 (ja) 2009-12-21 2011-06-30 ソニー株式会社 キャッシュメモリおよびキャッシュメモリ制御装置
US9535841B2 (en) 2009-12-21 2017-01-03 Sony Corporation Cache memory and cache memory control unit
US10102132B2 (en) 2009-12-21 2018-10-16 Sony Corporation Data transfer in a multiprocessor using a shared cache memory
JP2017514206A (ja) * 2014-03-14 2017-06-01 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation トランザクション・ステータスを示すためのコヒーレンス・プロトコルの強化

Also Published As

Publication number Publication date
US20090037658A1 (en) 2009-02-05
DE112008002018B4 (de) 2023-05-17
CN101359310A (zh) 2009-02-04
JP5005631B2 (ja) 2012-08-22
WO2009018005A2 (en) 2009-02-05
DE112008002018T5 (de) 2010-06-10
CN101359310B (zh) 2013-01-02
US7827357B2 (en) 2010-11-02
WO2009018005A3 (en) 2009-04-02

Similar Documents

Publication Publication Date Title
JP5005631B2 (ja) 複数のコアキャッシュ・クラスタ間の包括的共有キャッシュの提供
US11908546B2 (en) In-memory lightweight memory coherence protocol
JP6707605B2 (ja) 異なるキャッシュ・コヒーレンス・ドメインの間の情報共有技法
US6651145B1 (en) Method and apparatus for scalable disambiguated coherence in shared storage hierarchies
US8151059B2 (en) Conflict detection and resolution in a multi core-cache domain for a chip multi-processor employing scalability agent architecture
US7581068B2 (en) Exclusive ownership snoop filter
JP5714733B2 (ja) キャッシュ競合の解決
TWI463318B (zh) 快取一致性處理系統、快取記憶體,及其方法
US8028131B2 (en) System and method for aggregating core-cache clusters in order to produce multi-core processors
JP2020021495A (ja) ハイブリッドメモリキューブシステム相互接続ディレクトリベースキャッシュコヒーレンス方法
US7774551B2 (en) Hierarchical cache coherence directory structure
US8438337B1 (en) System and method for conditionally sending a request for data to a home node
US20090300289A1 (en) Reducing back invalidation transactions from a snoop filter
US8397030B2 (en) Efficient region coherence protocol for clustered shared-memory multiprocessor systems
US8782347B2 (en) Controllably exiting an unknown state of a cache coherency directory
US20130073811A1 (en) Region privatization in directory-based cache coherence
US20090006668A1 (en) Performing direct data transactions with a cache memory
CN1320464C (zh) 用于维持共享高速缓存一致性的方法和设备
US9465739B2 (en) System, method, and computer program product for conditionally sending a request for data to a node based on a determination
KR20230070034A (ko) 스케일러블 영역 기반 디렉토리
WO2024086437A1 (en) Page rinsing scheme to keep a directory page in an exclusive state in.a single complex

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110713

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110719

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111018

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120424

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120523

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150601

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5005631

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees