JP5059061B2 - 部分読出と非スヌープアクセスとの間のメモリ順序付け要件の充足 - Google Patents

部分読出と非スヌープアクセスとの間のメモリ順序付け要件の充足 Download PDF

Info

Publication number
JP5059061B2
JP5059061B2 JP2009159799A JP2009159799A JP5059061B2 JP 5059061 B2 JP5059061 B2 JP 5059061B2 JP 2009159799 A JP2009159799 A JP 2009159799A JP 2009159799 A JP2009159799 A JP 2009159799A JP 5059061 B2 JP5059061 B2 JP 5059061B2
Authority
JP
Japan
Prior art keywords
message
data
node
cache
logic
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.)
Active
Application number
JP2009159799A
Other languages
English (en)
Other versions
JP2010015572A (ja
Inventor
エイチ. ビアーズ ロバート
チョウ チン−ツン
ジェイ. サフラネク ロバート
ヴァッシュ ジェイムズ
Original Assignee
インテル コーポレイション
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 インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2010015572A publication Critical patent/JP2010015572A/ja
Application granted granted Critical
Publication of JP5059061B2 publication Critical patent/JP5059061B2/ja
Active 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • 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
    • 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
    • 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/0817Cache consistency protocols using directory methods
    • G06F12/0824Distributed directories, e.g. linked lists of caches
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • 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/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • 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/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-uniform memory access [NUMA] architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、高速ポイント・ツー・ポイント相互接続リンクに関し、より具体的には、コヒーレント相互接続アーキテクチャを実施するコヒーレンス・プロトコルに関する。
電子システムが複数のキャッシュメモリを有する場合に、システムに保持されているデータの妥当性、すなわちコヒーレンスは、データ演算のインテグリティを確かにするよう保たれている。コヒーレンスは、しばしば、キャッシュ・コヒーレンス・プロトコルに従ってデータを扱うことによって達成される。キャッシュ及び/又はプロセッサの数が増えるにつれて、コヒーレンスを保つ複雑性は増す。これにより、潜在的に、システムの複数のコンポーネントの間でのコンフリクトの数は増大することとなる。
例えば、複数のコンポーネント(例えば、キャッシュメモリ、プロセッサ)が同じデータブロックを要求する場合に、これらの複数のコンポーネントの間のコンフリクトは、データの妥当性を保つように解消される。以前のキャッシュ・コヒーレンス・プロトコルは、通常、コンフリクト解決に関与する単一コンポーネントを有する。しかし、システムの複雑性が増すにつれ、コンフリクト解決のための単一コンポーネントへの依存はシステム全体の性能を低下させうる。
一般に、キャッシュ・コヒーレンスを提供する2つの基本的なスキームがある。それは、スヌーピング(現在、しばしば、対称型マルチプロセッシング(SMP)と呼ばれる。)及びディレクトリ(しばしば、分散共有メモリ(DSM)と呼ばれる。)である。これら2つのスキームの間の基本的な違いは、メタ情報、すなわち、どこにキャッシュラインのコピーが保持されているかに関する情報への配置及びアクセスを中心に展開する。
ディレクトリに基づくスキームに関して、キャッシュ無しデータが記憶されている固定位置に加えて、どこにキャッシュコピーが存在するかを示す固定ロケーション、すなわちディレクトリがある。新しい方法でキャッシュラインにアクセスするために、ノードは、ディレクトリを有するノード(通常、キャッシュ無しデータを有する同じノードである。)と通信すべきであり、主記憶コピーが有効である場合に応答ノードがデータを供給することを可能にする。ディレクトリシステムにおけるこのようなノードは、ホームノードと呼ばれる。
ディレクトリは、二通りに分配され得る。第1に、主記憶データ(キャッシュ無しリポジトリ)は、しばしば、ノード間で分配され、一方、ディレクトリも同じように分配される。第2に、ラインがキャッシュされるかどうか及びラインがキャッシュされる場合にはどこに単一コピーが存在するかについて、少ない情報としてホームノードに保持しながら、メタ情報自体が分配され得る。例えば、SCIはこのスキームを使用し、キャッシュコピーを有する各ノードは、キャッシュコピーを有する他のノードへのリンクを保ち、集合的に完全なディレクトリを保持する。
スヌーピングキャッシュに関して、メタ情報は、キャッシュラインの有効なコピーの夫々が、キャッシュラインにアクセスして然るべく応答する要求を認識すべきユニットによって保持されるように、キャッシュコピー自体を有して分配される。通常、データがキャッシュされない状態で、すなわち、その元のロケーションに、保持されているリポジトリがある。しばしば、この元のロケーションに関与するエージェント又はユニットは、ホームノードと呼ばれる。キャッシュラインへのアクセスを要求する場合に、要求ノードは、しばしば、必要とされるパーミッションと共に、要求されるキャッシュラインのアドレスを送信し、要求されるキャッシュラインのコピーを保持するノードは然るべく応答する。
しかし、現在のコヒーレンス及びメッセージングプロトコルの幾つかで、キャッシュラインの部分読出及び非スヌープメモリアクセス、すなわち、コヒーレントなアーキテクチャでの非コヒーレントアクセスは、或る環境下で、潜在的に、要求側へ無効なデータを転送する事態を生じさせる。しばしば、かかる環境は、プロトコル内のメモリ順序付け規則の違反に起因する。結果として、不正な動作が、無効なデータを受け取ったエージェントによって行われる。これは、潜在的に、システム内の不安定性につながる。
本発明の一実施形態で、データ要素の読出に関連し、ピアエージェントに、前記データ要素に関連するキャッシュラインが無効にされるべきであり、前記ピアエージェントが前記キャッシュラインを要求エージェントに転送すべきでないことを示すことができる第1のメッセージを生成するプロトコルレイヤロジックと、スヌープメッセージを前記ピアエージェントへ送信するよう前記プロトコルレイヤロジックへ結合される物理レイヤロジックとを有する装置が提供される。
また、本発明の一実施形態で、データを参照するスヌープ無効化メッセージを受け取る受信ロジックと、前記データを保持するキャッシュラインを有するキャッシュメモリと、前記受信ロジック及び前記キャッシュメモリへ結合されるプロトコルロジックとを有し、前記プロトコルロジックは、前記受信ロジックが前記データを参照する前記スヌープ無効化メッセージを受け取り且つ前記キャッシュラインが第1のキャッシュ・コヒーレンス状態で保持されることに応答して、前記データに関連するホームノードへの前記データのライトバックを生成し、前記第1のキャッシュ・コヒーレンス状態から無効キャッシュ・コヒーレンス状態への前記キャッシュラインの遷移を開始する、装置が提供される。
また、本発明の一実施形態で、データ要素を参照する第1のメッセージ及び第2のメッセージを生成する第1のプロトコルレイヤと、前記第1のメッセージをホームノードへ及び前記第2のメッセージを第2のピアノードへ送信する第1の物理レイヤとを有する第1の相互接続スタックを実施する第1のピアノードを有し、前記第2のピアノードは、ポイント・ツー・ポイントリンクを介して前記第1のピアノードへ結合され、前記データ要素のキャッシュコピーを保持するキャッシュメモリを有し、前記第2のメッセージを受け取る第2の物理レイヤと、前記第1のピアノードへ直接に前記データ要素の前記キャッシュコピーを転送せず、前記第2の物理レイヤが前記第2のメッセージを受け取ることに応答して前記データ要素の前記キャッシュコピーを無効コヒーレンス状態へ移す第2のプロトコルレイヤとを有する第2の相互接続スタックを実施し、前記ホームノードは、ポイント・ツー・ポイントリンクを介して前記第1のピアノードへ結合され、前記第1のメッセージを受け取る第3の物理レイヤと、該第3の物理レイヤが前記第1のメッセージを受け取ることに応答して前記データ要素の正確なコピーを前記第1のピアノードへ供給するデータメッセージを生成する第3のプロトコルレイヤとを有する第3の相互接続スタックを実施する、システムが提供される。
また、本発明の一実施形態で、データを参照する第1のメッセージを要求ノードにより生成する段階と、前記データを参照する前記第1のメッセージをピアノードにより受信する段階と、前記ピアノードによる前記第1のメッセージの受信に応答して、前記ピアノードにあるキャッシュメモリのキャッシュラインに保持されている前記データのコピーを前記要求ノードへ直接に転送せず、前記キャッシュラインを無効化する段階とを有する方法が提供される。
本発明の実施形態により、部分的且つ非コヒーレントなメモリアクセスの観点からキャッシュ・コヒーレンス・リンクに基づく相互接続においてメモリ順序付けを保つことが可能となる。
プロトコルアーキテクチャの実施例を表す。 ポイント・ツー・ポイント相互接続を用いてチップセットへ結合される複数のプロセッサを有するシステムの実施例を表す。 階層化入出力(I/O)スタックを用いる双方向相互接続アーキテクチャに係るブロック図の実施例を表す。 潜在的に無効なデータへのアクセスを生じさせる複数のノード間のメッセージングプロトコルに係るプロトコルダイアグラムの実施例を表す。 部分的な非スヌープメモリアクセスに応答して有効なデータを提供するプロトコルダイアグラムの実施例を表す。 潜在的に無効なデータへのアクセスを生じさせる複数のノード間のメッセージングプロトコルに係るプロトコルダイアグラムの他の実施例を表す。 部分的な非スヌープメモリアクセスに応答して有効なデータを提供するプロトコルダイアグラムの他の実施例を表す。
以下、添付の図面を参照して、一例として本発明の実施形態をあらわす。なお、本発明はこの実施形態に限定されない。
以下の記載で、特定の相互接続アーキテクチャ、特定のメッセージ、特定の擬似コード、特定の相互接続アーキテクチャレイヤ等の例のような多数の特定の詳細が、本発明の徹底的な理解を与えるために挙げられている。なお、当業者には明らかなように、これらの特定の詳細が本発明を実施するために用いられる必要はない。他の例で、特定の相互接続レイヤの構造上の詳細や、特定の非適合メッセージ及びプロトコルや、プロセッサ及びキャッシュの特定の動作上の詳細等、よく知られているコンポーネント又は方法は、本発明を不必要に不明りょうとすることを避けるために、詳細には記載されていない。
ここで記載される方法及び装置は、相互接続アーキテクチャにおいて部分アクセスと非スヌープメモリアクセスとの間で適切なメモリ順序付けを提供するためものである。特に、メモリ順序付け要件の順守は、主として、実例となるキャッシュ−コヒーレントリンクに基づく相互接続アーキテクチャに関して論じられている。なお、適切なメモリ順序付け要件を提供する方法及び装置はそのように限定されず、それらは如何なる相互接続アーキテクチャにより実施されてもよい。
[実例となる相互接続アーキテクチャの実施例]
図1は、高レベル簡易プロトコルアーキテクチャの実施例を表す。一実施例で、プロトコルアーキテクチャは、衝突する要求の間と同様に、通常のトランザクションの間、アーキテクチャ内のキャッシュにおいてデータ間のデータ整合性を保つべきである。更に、プロトコルアーキテクチャは、一実施例で、また、それぞれの要求が満足され引っ込められるように、夫々の要求についてフォワード・プログレス(forward progress)を提供する。
プロトコルアーキテクチャは、ノード又はエージェントを幾つ有してもよい。一実施例で、ノードは、内部キャッシュメモリ、外部キャッシュメモリ、及び/又は外部メモリと関連するプロセッサを有する。なお、ノード又はエージェントは、例えば、プロセッサ、メモリコントローラハブ、及びI/Oハブ、汎用コントローラハブ、I/Oデバイス、I/Oデバイスの一群、あるいは、メモリにアクセス可能ないずれかの他のデバイス/コンポーネント等、相互接続アーキテクチャにおける如何なる装置又はそのような装置の一群であってもよい。他の実施例で、ノードは他の電子システムと相互接続されている電子システム(例えば、コンピュータシステム、モバイルデバイス)である。また、他のタイプのノード構成が使用されてもよい。
表されるように、アーキテクチャ100は、キャッシングノード/エージェント105及び106と、ホームエージェント110乃至112とを有する。一実施例で、ホームエージェント110乃至112は、コヒーレントなメモリ空間の最終リポジトリであるメモリロケーションを保護すべきである。言い換えると、エージェント110は、コヒーレントなメモリ空間のデータについて複数の元の物理的なメモリロケーションに関与するホームエージェントである。ホームエージェント110乃至112は、キャッシングエージェント105及び106からのキャッシュ状態トランザクションの追跡と、キャッシングエージェント105及び106の間のコンフリクトの管理と、メモリへのインターフェースと、データ及び/又はオーナーシップの提供と、いずれかの他のホームエージェントに関連するタスクとを含むタスクの如何なる組合せも実行することができる。
一実施例で、キャッシングエージェント105及び106は、キャッシュメモリ及びキャッシングI/Oプロキシエンティティを含むプロセッサ等、キャッシュメモリと関連するエージェントを有する。キャッシングエージェント105及び106は、コヒーレントメモリ空間への読出及び書込要求の実行、コヒーレントメモリ空間からのデータのキャッシュコピーの保持、及び他のピアキャッシングエージェントへのキャッシュコピーの供給等のタスク及びいずれかの他のタスクの如何なる組合せも実行することができる。キャッシングエージェント又はノードは、また、他のキャッシングエージェントに関してピアエージェント/ノードと呼ばれることがある。図1に具体的に現されていないが、プロトコルアーキテクチャは、入出力(I/O)デバイスに代わってトランザクションに参加し又はそれを経験するI/Oハブ等の非キャッシングエージェントを更に有してよい。
一実施例で、キャッシングエージェント105及び106並びにホームエージェント110乃至112は、ネットワーク構造101を介するメッセージの交換を通して、データ整合性を保持しフォワード・プログレスを提供する。一実施例で、構造101は、ポイント・ツー・ポイント相互接続ネットワークを通して1つのエージェント/ノードから他のエージェント/ノードへのメッセージの伝送を助ける。しばしば、図1は、基盤ネットワークのキャッシュ・コヒーレンス・プロトコルの抽象的な見方を表すと言われる。
一実施例で、相互接続アーキテクチャ100は、下記の同時係属出願で記載されるように、新規の特徴の如何なる組合せも組み入れてよい。例えば、米国特許第6,922,756号(発明の名称「forward State for Use in Cache Coherency in a Multi-Node System」)は、フォワードキャッシュ・コヒーレンス状態(Fステート)の利用について記載する。更に、様々な状況でのコヒーレンス・プロトコルの例は、2004年4月27日に出願された米国特許出願第10/833,963号(事件整理番号P15925)(発明の名称「A Two-Hop Cache Coherency Protocol」)、2004年4月27日に出願された米国特許出願第10/833,965号(事件整理番号P18890)(発明の名称「A Messaging Protocol」)、2004年4月27日に出願された米国特許出願第10/833,977号(事件整理番号P18891)(発明の名称「A Cache Coherence Protocol」)、2006年1月11日に出願された米国特許出願第11/330,977号(事件整理番号P22376)(発明の名称「A Two-Hop Source Snoop Based Cache Coherence Protocol」)、及び2006年1月11日に出願された米国特許出願第11/331,301号(事件整理番号P23106)(発明の名称「A Two-Hop Source Snoop Based Messaging Protocol」)で論じられている。
他の例は、2002年12月19日に出願された米国特許出願第10/325,427号(事件整理番号P13923)(発明の名称「Speculative Distributed Conflict Resolution for a Cache Coherency Protocol」)、2002年12月19日に出願された米国特許出願第10/326,234号(事件整理番号P13984)(発明の名称「Hierarchical Directories for Cache Coherency in a Multiprocessor System」)、2002年12月19日に出願された米国特許出願第10/324,711号(事件整理番号P13985)(発明の名称「Hierarchical Virtual Model of a Cache Hierarchy in a Multiprocessor System」)、及び2002年12月19日に出願された米国特許出願第10/326,232号(事件整理番号P13986)(発明の名称「Non-Speculative Distributed Conflict Resolution for a Cache Coherency Protocol」)を含む。
前述の同時係属出願に記載される特徴は、本願明細書等に記載される実施例に組み込まれ得る点に留意すべきである。なお、本願明細書等に記載される実施例はそのように限定されず、それらは、潜在的に前述の特徴のいずれも有さないだけではなく、付加的な特徴を有してよい。
図2は、ポイント・ツー・ポイント相互接続アーキテクチャを利用するチップセットへ結合されている複数のプロセッサを有するシステムの実施例を表す。図2のシステムは、また、複数のプロセッサを有してよい。それらのプロセッサのうち2つのプロセッサ205及び210しか、明りょうさのために、示されない。表されるように、プロセッサ205及び210は、夫々、2つの処理要素(PE)206及び207又は211及び212を有する。なお、プロセッサ205及び210には処理要素が幾つ含まれてもよい。
処理要素は、スレッドユニット、処理ユニット、コンテキスト、論理プロセッサ、ハードウェアスレッド、コア、及び/又はいずれかの他の要素を言い、例えば実行状態又は構造上の状態等のプロセッサの状態を保つことができる。言い換えると、処理要素は、一実施例で、例えば、ソフトウェアスレッド、オペレーティングシステム、アプリケーション、又は他のコード等のコードと独立して関わることができる如何なるハードウェアも言う。一例として、通常、物理プロセッサは集積回路を表し、これは潜在的にコア又はハードウェアスレッド等の他の処理要素を幾つでも有する。
コアは、しばしば、独立した構造上の状態を保つことができる集積回路に配置されるロジックを言う。夫々の独立して保たれる構造上の状態は、少なくとも幾つかの専用の実行リソースと関連する。コアとは対照的に、物理スレッドと呼ばれることもあるハードウェアスレッドは、通常、独立した構造上の状態を保つことができる集積回路に配置されるあらゆるロジックを言う。独立して保たれる構造上の状態は、実行リソースへのアクセスを共有する。そのため、明らかなように、例えば単一スレッド・アプリケーションの複数の複製等の複数のソフトウェアスレッドは、一実施例で、コア又はハードウェアスレッド等の前述の処理要素のいずれかの組合せを含む複数の処理要素で並行して実行され得る。
また、プロセッサ205及び210の中にはリソース208及び213が表されている。リソース208及び213は、通常、レジスタ、ユニット、ロジック、ファームウェア、メモリ、及び他のリソースを有し、コードを実行し又は他のデバイスとインターフェース接続する。上述されるように、リソースの幾つかは、部分的に又は完全に処理要素のために設けられてよく、一方、残りのリソースは、処理要素の間で共有される。例えば、命令ポインタ及びリネームロジック等のより小さいリソースは、物理スレッドについて複製されてよい。リオーダー/リタイアメント・ユニットにおけるリオーダーバッファ、命令ルックアサイド・トランスレーション・バッファ(ILTB)、負荷/記憶バッファ、及びキュー等の幾つかのリソースは、パーティショニングを通して共有されてよい。汎用内部レジスタ、ページテーブル・ベース・レジスタ、低レベルデータキャッシュ、データTLB、実行ユニット、及びアウト・オブ・オーダー・ユニット等の他のリソースは、潜在的に完全にスレッドの間で共有される。対照的に、コアは、第2レベルキャッシュ(L2)等のより高いレベルのキャッシュの少なくとも一部を共有しながら、専用の実行リソースを有してよい。
一実施例で、リソース208及び213はプロセッサ・パイプラインを有する。プロセッサ・パイプラインは、パイプライン段を幾つでも有してよい。パイプライン段の一般的な例には、命令ポインタ段、フェッチ段、デコード段、ドライブ段、及び割当て段、リネーム段、キュー段、リオーダー段、スケジュール段、ディスパッチ段、実行段、メモリアクセス段、並びにレジスタアクセス段が含まれる。ここに列挙される段は、あらゆる既知のパイプライン段がプロセッサ100に含まれうる場合に、プロセッサ・パイプライン段の例となる非包括的な羅列を有する点に留意すべきである。
プロセッサ205及び210は、夫々、メモリコントローラ又はローカルメモリコントローラハブ(MCH)を更に有してよく、然るべくメモリ209又は214とインターフェース接続する。メモリ209及び214は、例えば、ランダムアクセスメモリ(RAM)、キャッシュメモリ、フラッシュメモリ、又は他のメモリデバイス等のあらゆるメモリデバイスを有する。一実施例で、メモリ214は上位キャッシュメモリを有し、一方、リソース213は下位キャッシュメモリを有する。他の実施例で、メモリ209は、プロセッサ205に付随する動的ランダムアクセスメモリ(DRAM)を有する。プロセッサ205は、DRAM209からのデータをキャッシュに格納するようキャッシュメモリを有する。これは実例となる実施形態である点に留意すべきであり、メモリ209及び214は、潜在的に如何なるスタイルメモリデバイスも有する。
一実施例で、メモリ209及び214が、プロセッサ205及び210に含まれているか又は(表されるように)その外部にあるキャッシュメモリを有する場合に、プロセッサ205及び210は、ピアキャッシングノードはもちろんホームノードであることができる。例えば、トランザクションがメモリ209内のメモリロケーションを参照する場合に、メモリ209に関与するエージェント、すなわちプロセッサ205は、トランザクション及びメモリロケーションに関してホームエージェントであると判断される。同様に、トランザクションが他のメモリロケーション(例えば、メモリ214でのロケーション)を参照する場合に、プロセッサ205はピアキャッシングエージェントであると判断される。
明らかなように、ポイント・ツー・ポイントリンク220乃至222は、ポイント・ツー・ポイント形式でコンポーネントを連結させる。物理リンク220乃至222は、一実施例で、夫々、図3を参照して以下で論じられる物理レイヤと関連する物理リンク等の、双方向の差動シグナリング相互接続を有する。結果として、プロセッサ205及び210並びにチップセット230は、互いに直接に通信することができる。
チップセット230は、しばしば、入出力(I/O)ハブへ結合されているメモリコントローラハブ等の、複数の集積回路への総称指示である。なお、一実施例で、エージェントが夫々メモリとインターフェース接続するメモリコントローラハブのバージョンを有する場合に、チップセット230はI/Oハブ又は他のコントローラハブを言う。一実施例で、チップセット230は、上述されるように、トランザクションに参加し又はそれを経験する非キャッシングエージェントである。なお、チップセット230はそのように限定されず、他の実施例では、チップセット230は、キャッシュメモリを有するキャッシングエージェント及び/又はデータの元のメモリロケーション・リポジトリを有するメモリを有するホームエージェントである。
表されるように、チップセット230は、また、例えば、周辺コンポーネント相互接続(PCI)又はPCIエクスプレス(PCI−E)デバイス261、集積デバイスエレクトロニクス(IDE)又はアドバンスト・トランスファー・アタッチメント(ATA)デバイス262、ユニバーサル・シリアル・バス(USB)デバイス263、ローカルエリアネットワーク(LAN)又は無線LAN(WLAN)デバイス264、オーディオデバイス265、及び他のI/Oデバイス266等の複数の相互接続及びI/Oデバイスとインターフェース接続すべきである。チップセット230は、また、ここで記載されるようにI/Oデバイスを結合する他の相互接続アーキテクチャを有してよい。
図3を参照すると、階層化相互接続スタックを利用する双方向相互接続アーキテクチャに係るブロック図の実施例が表されている。例えば物理レイヤ302等の図3のレイヤへの言及には、例えば物理レイヤ302a及び物理レイヤ302b等の、異なるエージェントで実施され得る一般的なレイヤの議論が含まれる。表されるように、相互接続スタックは5つのレイヤに分けられる。かかるレイヤのうち1又はそれ以上は、潜在的に、設計実施に基づいて任意である。例えば、ルーティングレイヤ304は、一実施例で、リンクレイヤ303の機能性に組み込まれる。従って、ルーティングレイヤは、一実施例では、別個のレイヤでない。
一実施例で、物理レイヤ302は、物理媒体での情報の電気伝送に関与する。例えば、物理的なポイント・ツー・ポイントリンクがリンクレイヤエンティティ303a及び303bの間で利用される。実例として、物理リンクは、双方向差動シグナリング対351及び352を有する差動シグナリングスキームを有する。この場合に、物理レイヤは、潜在的に論理的に電気サブブロック及び論理サブブロックに分けられ、これにより、物理レイヤは、情報の電気伝送から残りのスタックを分離し且つリンクレイヤ303と通信することができる。
一実施例で、リンクレイヤ303は、スタックの上位レイヤから物理レイヤ302を抽出し、例えば、接続されるエージェント/エンティティの間の信頼できるデータ伝送及びフロー制御並びに多重仮想チャネル又はメッセージクラスへの物理チャネル/インターフェースの仮想化等のリンク関連サービスを提供する。ここで、仮想チャネルは、スタックの上位層による使用のための多重仮想ネットワークと考えられてよい。例えば、プロトコルレイヤ306は、プロトコルメッセージをメッセージクラスに、ひいては、1又はそれ以上の仮想チャネルへマッピングするよう、潜在的に、リンクレイヤ303によって提供されるアブストラクションに依存する。
ルーティングレイヤ304は、一実施例で、ソースからあて先へパケットを送るための柔軟な方法を提供する。上述されるように、極めて簡単なトポロジで、ルーティングレイヤ304は明示的でなく、むしろリンクレイヤ303の機能性に組み込まれうる。例えば、ルーティングレイヤ304は、パケットを送るべく<ポート,仮想ネットワーク>対を特定するためにリンクレイヤ303のアブストラクションに依存してよい。ここで、ルーティングテーブル情報は、パケットにルーティング情報を提供するよう保持される。
一実施例で、トランスポートレイヤ305は、エンド・ツー・エンドの信頼できる伝送サービスを提供する。ルーティングレイヤ304と同じく、トランスポートレイヤ305も設計実施に基づいて任意である。一例として、トランスポートレイヤ305は、プロトコルレイヤ306に信頼できる伝送サポートを提供するようルーティングレイヤ304サービスに依存する。相互接続アーキテクチャ内で、一実施例で、一部のコンポーネントはトランスポートレイヤ305を有する。結果として、この一部のコンポーネントは、トランスポートレイヤ305に関するパケットのサブフィールドを定義し、一方、他のコンポーネントは、潜在的にかかるサブフィールドを定義しない。
プロトコルレイヤ306は、一実施例で、例えばキャッシュ・コヒーレンス、順序付け、ピア・ツー・ピア通信、割り込み転送等の、ノード/エージェント間の上位通信プロトコルを実施することができる。言い換えると、プロトコルレイヤ306は、ホームノード、ピアノード、キャッシングノード、及び非キャッシングノード等のノード又はエージェントについて、然るべく、許容されるメッセージ、要求、応答、フェーズ、コヒーレンス状態等を定義する。ホームノードメッセージ、スヌープメッセージ、応答メッセージ等のメッセージの例については以下で論じる。
レイヤ及びそれに関連するロジックの議論は如何なる方法で結合されてもよい点に留意すべきである。例えば、プロトコルロジックは物理レイヤ、すなわち、送信又は受信ロジックへ結合されてもよい。ここで、図3から分かるように、一実施例で、プロトコルロジックは、物理レイヤロジックへ直接には結合されずに、むしろ他のレイヤロジックを介して結合されてよい。更に、相互接続スタックは、一実施例で、適切なキャッシュ・コヒーレンス動作を開始するよう、例えばキャッシュ制御又はキャッシュメモリロジック等の内部コンポーネントロジックへ結合される。
[MESIFプロトコルの実施例の概説]
一実施例で、基本MESIF(Modified Exclusive Shared Invalid Forward)プロトコルは、単一のシリアライジング・バスの潜在的な制限を伴わずにスヌープ・プロトコルと同様のプロトコルを提供する。スヌーピング・キャッシュ・プロトコルのように、MESIFは、コヒーレンスを保つために、データのキャッシュコピーを有するノードに依存する。同期集中ブロードバンドよりむしろポイント・ツー・ポイントリンクの使用は、タイムワープの問題、すなわち、事象が異なるノードの側からすれば異なる順序で起こるように見えるという事実を持ち込む。一例として、MESIFプロトコルは、タイムワープに起因する潜在的エラーの認識を通してタイムワープを扱い、そのプロトコル又はソフトウェアソリューションを提供する。
ホームノードは、しばしば、データのキャッシュ無しコピーと関連する。結果として、ホームノードは、そのホームノードと関連するデータに関するトランザクションに関与する。しかし、ホームノードは、トランザクションと関連する“クリティカルパス”に含まれる必要はなく、むしろ、ホームノードは、コンフリクト及びタイムワープ問題を解決するようトランザクションに介入する。かかるスキームの同時ブロードキャスト性のために、一実施例で、MESIFは、スヌーピング・プロトコルと関連する低レイテンシーを達成し、一方で、ある場合には、最低限のレイテンシー、すなわち、単一ラウンドトリップ要求−応答で、データのキャッシュ可能なコピーを取得する。
一実施例で、MESIFプロトコルに関する基本的なトランザクションは、ホームノードはもちろん全てのピアノードへ最初の要求を送信することを伴う。コピーがステートE、F又はMコヒーレンス状態でキャッシュされる場合に、それは応答に含まれる。次いで、第2のメッセージがホームノードへ送信され、要求が満足されたことをホームノードに知らせる。要求されるラインがキャッシュされない場合、又はSステートのコピーしか存在しない場合は、ホームノードへ送信される第2の要求は、前の要求を確認するために使用される。この前の要求をホームノードは既に自身のメモリからフェッチしていてよい。いずれの場合にも、ホームノードは、同期及びコンフリクトの解消のために第2の要求(及び潜在的に、たとえそれらが時々結合され得るとしても、第1の要求)に応答する。ホームノードは1又はそれ以上のキャッシュを有してよい点に留意すべきであり、従って、それは、いずれの他のノードとも同じように最初の要求に応答することができる。
一実施例で、コンフリクトは分散的に扱われる。タイムワープ問題は、個々の要求が任意に長い時間遅延しうるので、コンフリクトを検出することを困難にする。しかし、コンフリクトは、夫々のノードが要求後にコンフリクトについて監視する場合に検出される。複数のノードが潜在的にコンフリクトを検出してよいが、一例として、それらのノードのうちの少なくとも1つがコンフリクトを検出しうる。結果として、ノードからの応答は、一実施例で、潜在的にコンフリクト情報を有する。
一実施例で、応答からデータのコピーを受け取ったノードは、受け取った直後に内部データを使用することを許可されるが、ノードが確認を受け取るまでは、他のシステムにとって可視的な、すなわち、グローバルに可視的なデータを使用するという作用を引き起こさない。確認は、また、要求ノードがそのコピーを他のノードへ転送すべき命令を含み、ことによると、そのノードを自身のキャッシュから退かせる。
最後に、ノードがキャッシュデータを供給することによって他のノードからの要求に応答する場合に、ノードは、一実施例で、ノードがデータを転送したと認めるホームノードからの応答をノードが受け取るまで、同じキャッシュラインについて自身が受け取る他の要求を留保し、このようにして、全てのノードが(場合により書込可能な)キャッシュラインの伝送の同じ順序を守ることを確かにする。
ホームノードは、上述されるように、キャッシュ無しデータのリポジトリであるが、ホームノードは、また、プロセッサ及びキャッシュを有してよい。ここで、ホームノードのプロセッサがキャッシュを逃す場合に、ホームノードは他の全ての(ピア)ノードへ要求を送信し、ホームノードは、ホームノードに到着したいずれの他の要求と同じく内部でその要求を扱う。これは、ホームノードが自身(ホームノード)へメッセージを明示的に送信する特別の場合である点に留意すべきである。更に、外部からの要求が、局所的にキャッシュされるデータについて到着する場合に、ホームノードは適切に応答する。
開示されているメッセージプロトコルは、コヒーレンス(キャッシュ及びホーム)エージェント、非キャッシングエージェント、及び他のエージェント(メモリコントローラ、プロセッサ等)の間の許容されているメッセージの組を定義する。コヒーレンス・プロトコルは、考えられるコヒーレントを表すアルゴリズムでワード及び文法としてメッセージを使用する。このアルゴリズムは、分別よく要求を順序付け、コンフリクトを解消し、キャッシングエージェント間の相互作用を表す。MESIFプロトコルについて上述されたが、MESIFキャッシュ・コヒーレンス・プロトコルは利用される必要がない。例えば、既知のMESIFプロトコルの利用をもたらすフォワード状態は利用されなくてよい。更に、上記にはMESIFプロトコルにかかる実施例の典型的な概説が含まれる点に留意すべきである。結果として、上述される様々なコンポーネントは別々の実施例で相違しうる。メッセージング及び/又はコヒーレンス・プロトコルで利用される潜在的なメッセージの非包括的な例となる羅列は以下に含まれる。
[スヌープメッセージ]
一実施例で、スヌープメッセージは、例えばピアキャッシングエージェント等のキャッシングエージェントへ向けられる。通常、スヌープメッセージはホームノード識別子(ID)を有さず、これより、それらはホームノードには送られずにピアキャッシングエージェントに送られる。
Snoop Data(SnpData):これは、E、F又はSステートでデータを得るスヌープである。
Snoop Invalidation Own(SnpInvOwn):これは、E又はMステートでデータを得るスヌープである。一実施例で、ピアエージェントは、データを自身のローカルメモリにE又はMステートで保持することに応答してデータを提供することができる。
Snoop Invalidation Invalid to Exclusive(SnpInvItoE):これは、ピアキャッシングエージェントを無効にし、ホームノードへのあらゆるMステートデータをフラッシュ(flush)するスヌープである。
Snoop Invalidation X to Invalid(SnpInvXtoI):これは、ピアキャッシングエージェントを無効にし、ホームノードへのあらゆるMステートデータをフラッシュするスヌープである。
Snoop Invalidation No Forward(SnpInvNoFwd):これは、ピアエージェントに(1)あるキャッシュ・コヒーレンス状態で保持されているメモリへデータをライトバックさせ、(2)ローカルメモリに保持されているデータを無効にさせ、(3)要求ノードへ直接にデータを供給させないデータを得るスヌープである。一実施例で、ピアエージェントは、Mステートで保持されているデータをライトバックすることができる。他の実施例で、ピアエージェントは、また、E状態、S状態、F状態、又はそれらの組合せで保持されているデータをライトバックすることもできる。
[ホームメッセージ]
下記のメッセージはホームノードと関連する。一例として、下記の幾つかはホームノードへの要求メッセージである。実際には、スヌープメッセージ及びホームメッセージのうち幾つかの間の類似性に留意すべきである。例えば、上記SnpInvNoFwd及び下記RdInvNoFwdは、スヌープメッセージがピアキャッシングエージェントへ向けられ且つ読み出しメッセージがホームエージェントへ向けられる点を除き、類似している。結果として、SnpInvNoFwd及びRdInvNoFwdは両方とも、例えばRead Invalidateタイプ、Snoop Invalidateタイプ、Read Invalidate No Forwardタイプ、及びSnoop Invalidate No Forwardタイプ等の同じメッセージタイプであると言われている。
他のホームメッセージは、ホーム・ライトバック・マーカーメッセージを含む。ここで、データは、WbDataメッセージを介して別個に送信されてよく、マーカーメッセージに対して如何なる順序で受信されてもよい。以下に含まれるホームメッセージの他の例は、キャッシングエージェントからホームエージェントへのホームスヌープ応答メッセージ、及びコンフリクトフェーズの開始を知らせるコンフリクトメッセージのホーム確認応答である。
Read Data(RdData);これは、排他的(Exclusive)(E)状態、更には、潜在的に、実施例に依存してフォワード(Forward)(F)状態又は共有(Shared)(S)状態でのデータの要求である。
Read Invalidate Own(RdInvOwn):これは、M又はEステートでのキャッシュラインの要求である。
Invalidate Invalid to Exclusive(InvItoE):これは、データを有さないキャッシュラインの要求である。
Non-Snoop Read(NonSnpRd):これは、メモリからのコヒーレントでない読出を実行する要求である。
Non-Snoop Write(NonSnpW):これは、メモリへのコヒーレントでない書込を実行する要求である。
Read Invalidate No Forward(RdInvNoFwd):これは、メモリからデータを読み出す要求である。一実施例で、ホームノードは、データがこのメッセージの受信に応答してキャッシングエージェントからライトバックされるのを待ち、次いで、ライトバックされたデータを受信した後に要求エージェントへ正確なデータを供給することができる。他の実施例で、ホームノードは、参照ラインが無効状態に保たれているというピアキャッシングエージェントからの応答メッセージを受信することができる。ここで、ホームノードは、自身のローカルメモリ又は元のメモリリポジトリから正確なデータを供給することができる。
留意すべきは、上述されるように、RdInvNoFwdはSnpInvNoFwdメッセージと類似しているが、しばしば、スヌープメッセージにより、ホームノード識別子(ID)がそのメッセージに含まれない点である。これより、スヌープはホームノードへは送られず、一方、RdInvNoFwdはホームノードへ送られる。
WriteBack Modified to Invalid、Shared、又はExclusive(WbMtoI、WbMtoS、及びWbMtoE):これは、Mステートにあるキャッシュラインをメモリにライトバックして、然るべくキャッシュラインの状態を無効状態、共有状態、又は排他状態へ遷移させる要求である。一実施例で、かかるメッセージは、データが送信されるべきことを示すマーカーメッセージであり、一方、データは、実際には、別々のメッセージ(例えば、Wb*Data*メッセージ)を介して伝送される。
Response Invalid又はShared(RspI又はRspS):ピアエージェントは、然るべく無効状態で又は共有状態でキャッシュを持ち続ける。
Response Forward Invalid又はShared(RspFwdI又はRspFwdS):ピアはデータを要求側へ送信しており、ラインは然るべく無効状態又は共有状態のままである。
Response Forward Invalid又はShared WriteBack(RspFwdIwb又はRspFwdSWb):ピアはデータを要求側へ及びWbIDataをホームノードへ送信しており、ラインは然るべく無効状態又は共有状態のままである。
Response Invalid又はShared WriteBack(RespIWb又はRespSWb):ピアはインフライト(in-flight)のWbIDataメッセージを有するデータをホームへ退かせており、如何なるメッセージも要求側へ送信していない。
Response Conflict(RspCnflt):ピアは無効状態でラインを持ち続け、ピアはコンフリクトする対抗する要求を有する。
Acknowledge Conflict(AckCnflt):データ完了(completion)/グラント(grant)及び完了/フォース(force)確認応答コンフリクトの確認応答受信。
[無データ応答メッセージ]
一実施例で、無データ応答メッセージは、データを送信することなくラインのオーナーシップを認めるグラントメッセージを有する。無データ応答メッセージは、また、完了を知らせる完了メッセージを有し、潜在的に、コンフリクト状態下でオーナーからデータを取り出す。
Grant_Completion(GntCmp):データによらずに排他的オーナーシップを付与。
Grant Force Acknowledge Conflict(Gnt_FrcAckCnflt):データ及びフォース確認応答コンフリクトによらずに排他的オーナーシップを付与。
Completion(CMP):全てのスヌープ応答が収集され、コンフリクトは検出されない。
Force Acknowledge Conflict(FrcAckCnflt):確認応答コンフリクトについて、スヌープ応答が収集される。
Complete Forward Invalidate Own(Cmp_FwdInvOwn):要求を完了し、排他的状態又は変形(Modified)(M)状態でのラインを要求側へ転送し、ローカルコピーを無効化。
[データ応答メッセージ]
DataC_*:対応するMESIF状態でのデータ。
DataC_*_Cmp:完了を伴う対応するESIF状態でのデータ。
DataC_*_FrcAckCnflt:FrcAckCnfltを伴う対応するESIF状態でのデータ。
Wb*Data:データをライトバックし、対応するE、S又はIステートへ遷移。
Non-Snoop Write Data(NonSnpWr):これは、メモリへの非コヒーレントな書込である。
図4aを参照すると、複数のノードの間でのメッセージングのためのプロトコルダイアグラムの実施例が表されている。4つのノード又はエージェントが表されている。すなわち、I/Oハブ、ホームノード、キャッシュを有するプロセッサA、及びキャッシュを有するプロセッサBである。留意すべきは、表されるように、プロセッサA及びBはピアキャッシングエージェントを有し、一方、I/Oハブは非キャッシングエージェント、すなわち、ウィットネス(witness)である点である。
図4aに表されるプロトコルは、下記の単純化し過ぎた相互作用パターンに応答する:
ProcessorB:X=1 //BはデータXに書込
ProcessorA:if(X==1)Y=1 //AはXの部分読出を実行しYへ書込
IOH:if(Y==1)assert(X==1) //I/OハブはY及びXの非スヌープ読出を実行
ここで、留意すべきは、一実施例で、相互接続アーキテクチャは部分的なメモリアクセス及び非スヌープメモリアクセスをサポートする点である。一例として、部分メモリアクセス(キャッシュ不可(UC)メモリアクセスとも呼ばれる。)はキャッシュラインの一部へのアクセスを有する。ここで、キャッシュラインの一部は潜在的に無効データを有するので、メモリアクセスに従って、一部は更新又は読出のいずれかをされる。更に、非スヌープメモリアクセスは、例えばI/Oハブ等の非キャッシングエージェントからの非コヒーレントメモリアクセスを言う。
図4aに対する具体的な参照で、プロセッサBはデータXへの書込(すなわち、X=1)を実行する。プロセッサAからのデータXの部分読出に応答して、RdInvOwn(X)メッセージがホームノードへ送信され、SnpInvOwn(X)メッセージがピアエージェントBへ送信される。Bは目下、データXと関連するキャッシュラインを変形状態に保持しているので、SnpInvOwn(X)の受信に応答して、エージェントBは、DataC_M(X=1)メッセージでデータXを要求エージェントAへ供給し、更に、データを要求エージェントAへ供給し且つキャッシュラインを無効状態(すなわち、LLC=M,I)で持ち続けていることを示すようRspFwdI(X)メッセージをホームノードへ送信する。ここで、ホームノードは、トランザクションの完了を示すようプロセッサAへCmp(X)メッセージを送信する。
しかし、エージェントBがデータを要求エージェントAへ送信した後であって、エージェントAが完了メッセージを受信する前に、エージェントBは、要求メッセージ、すなわちSnpInvOwn(X)を発してデータXを要求する。これは、破線で別個のトランザクションとして表されている。結果として、エージェントAはデータXに関するコンフリクトを検出する。その結果、エージェントAは、RspCnfltをホームノードへ送信し、後にデータ/完了メッセージの受信に応答してAckCnflt(X)をホームノードへ送信する。
結果として、ホームノードは、コンフリクトのアービトレータ(arbitrator)として、Cmp_FwdInvOwnをエージェントAへ送信する。それに応じて、エージェントAは、メッセージマーカーRspIWb(X)及びデータメッセージWbIData(X=1)によりX=1をホームノードへライトバックし、エージェントAはYへのキャッシュ可能な書き込み(すなわち、Y=1)を実行する。ここで、Y=1は、マーカーWbMtoI(Y)及びデータメッセージWbIData(Y=1)によりホームエージェントへライトバックされる。
しかし、Xの値を1として与えるエージェントAからのライトバックメッセージは幾つかの理由により遅延する。一方、非キャッシングエージェントI/Oハブは、Yの非スヌープ読出、すなわちNonSnpRd(Y)、及びXの非スヌープ読出、すなわちNonSnpRd(X)を実行する。図から明らかなように、NonSnpRd(X)に応答するDataC_I_Cmp(X=0)メッセージで、Xは、エージェントAからホームノードへのライトバックメッセージの遅延に起因して、1ではなく0の値を有する。原則的に、無効値0は、コンフリクトに関わる先の部分読出と、正確なデータがホームノードで受信される前に非キャッシングエージェントによって実行される非スヌープ読出との結果である有効値1の代わりに、I/Oハブへ供給される。
ここで、潜在的な問題は次のようにまとめられ得る。Read Invalidate Ownメッセージは、潜在的に、ピアエージェントにメモリへのライトバックを伴わずに変形コピーを部分読出の要求側(A)へ転送させ、また、Aがグローバルな観測に達してXの正確な値をホームノードへ返す時までに、ホームノードは、既に、潜在的に、誤った値をI/Oハブへ供給している。
従って、一実施例で、特定のメッセージタイプは、例えば部分読出等の部分メモリアクセスのために利用される。一実施例で、メッセージタイプは、関連するキャッシュラインが無効にされるべきであって部分読出の要求側へ転送されるべきでないことを示すよう、ピアエージェントに向けられたスヌープ無効化メッセージを有する。更に、他の実施例で、メッセージは、また、例えば変形状態等の特定のキャッシュ・コヒーレンス状態でのデータがメモリ(すなわち、ホームノード)にライトバックされるべきことをピアエージェントに示すことができる。
同様に、特定のメッセージタイプは、一実施例で、ピアエージェントに向けられるスヌープ無効化メッセージに代えて、ホームノードに向けられる読出無効化メッセージを有する。一実施例で、ホームノードは、読出無効化メッセージの受信に応答して、正確なデータを部分読出の要求側へ供給することができる。ここで、正確なデータを供給することは、潜在的に、スヌープメッセージを受け取ったキャッシュエージェントが例えば変形状態等の特定のキャッシュ・コヒーレンス状態で保持されているデータに係るそれ自体のコピーをライトバックするのを待つこと、及びそのコピーを部分読出の要求側へ与えることを含む。他の実施例で、正確なデータを供給することは、潜在的に、キャッシュラインを無効状態に保つピアエージェントからの応答を受信すること、及びホームノードでのデータのローカルコピー又はホームノードと関連する元のリポジトリから部分読出の要求側へデータのコピーを与えることを含む。
第1の例として、メッセージタイプはRead Invalidate No Forward(RdInvNoFwd)メッセージを有する。この場合に、ピアエージェントへのスヌープ無効化メッセージはSnoop Invalidate No Forward(SnpInvNoFwd)メッセージを有し、ホームノードへの読出無効化メッセージはRead Invalidate No Forwardメッセージを有する。しかし、メッセージタイプ及びメッセージはそのように限定されない。実際には、他の実施例では、他のスヌープ無効化メッセージ(例えば、SnpInvItoE等)が使用される。ここで、上述されるように、スヌープは無効にしており、メッセージ自体を通して、又は一般的なプロトコルの実施を通して、データが受信エージェントから部分読出要求エージェントへ直接に転送されるべきでないことを示す。
図4bは、部分的な非スヌープメモリアクセスに応答して有効データを供給するプロトコルダイアグラムの実施例を表す。図4aのダイアグラムと同様に、同じエージェントが前述の相互接続パターンに関与する。しかし、ここでは、エージェントAによる部分読出要求に応答してRdInvOwn(X)メッセージをホームノードへ及びSnpInvOwn(X)メッセージをピアエージェントBへ送信することに代えて、部分読出要求に応答して、RdInvNoFwd(X)メッセージがホームノードへ送信され、SnpInvNoFwd(X)メッセージがピアエージェントBへ送信される。
ここで、ピアエージェントBがSnpInvOwn(X)メッセージを受信するとき、データに関連するキャッシュラインは変形キャッシュ・コヒーレンス状態に保たれる。従って、データの変形コピー(すなわち、X=0)は、図4aでのようにデータを部分読出要求エージェントAへ供給することに代えて、メッセージRspIWb(X)及びWbIData(X=1)を介してホームノードへライトバック(すなわち、プッシュバック)される。
次いで、図4aと同様のプロトコルフローがコンフリクトフェーズを続ける。しかし、NonSnpRd(X)(すなわち、非スヌープ読出)がI/Oハブによって要求される場合に、X=1の有効データは、RspI(X)の遅延がその非スヌープ読出の後に起こっても、既にメモリへライトバックされている点に留意すべきである。従って、この実施例で、部分読出のためのSnoop Invalidate Ownメッセージに代わるSnoop Invalidate No Forwardメッセージの使用は、前述の潜在的な問題の是正をもたらす。言い換えると、部分読出のためのSnoop Invalidate No Forwardメッセージに応答して、データは部分読出の要求側へ直接に転送されず、変形データのライトバックは、I/Oハブによる非スヌープ読出の前に起こる。
図5aを参照すると、潜在的にメモリ順序付け違反を引き起こす異なるシナリオのためのプロトコルダイアグラムの実施例が表されている。図5aに表されるプロトコルは、下記の例となる相互作用パターンに応答する:
IOH:Data=New;Flag=New; //データ及びフラグへNew書込
A:If(Flag==New)assert(Data==New); //データ及びフラグの部分読出
B:ReadData==Old; //データのキャッシュ可能な読出
最初に、エージェントBは、データのキャッシュ・コヒーレント読出トランザクションを開始する。RdDataメッセージ及びSnpDataメッセージはホームノード及びピアエージェントAへ送信される。ピアノードAは、データと関連するキャッシュラインが無効状態のままであることを示すようRspIによりホームノードに応答する。結果として、ホームノードは、DataC_E_CmpメッセージをエージェントBへ供給する。エージェントBは、零に等しいデータ(すなわち、Old)を有してキャッシュラインを排他的状態へ遷移させる。更に、I/Oハブ又はプロデューサ(producer)は、ホームノードとの非スヌープ書込トランザクションを開始する。これにより、データ及びフラグは夫々、New(すなわち、1の値)に更新される。
次いで、コンシューマ(consumer)エージェントAは、フラグ及びデータの部分読出トランザクションを開始する。しかし、ピアエージェントBがSnpInvOwn(D)を受信するとき、エージェントBは、データと関連するキャッシュラインを排他的状態に保つ。結果として、ピアエージェントBは、データに係る自身のキャッシュコピー(すなわち、Data=Old)及びRspFwdIメッセージをホームノードへ供給する。残念なことに、プロデューサであるI/Oハブがメモリに預けたデータの最近のコピーをフェッチすることに代えて、エージェントAのデータ読出は、エージェントBのキャッシュにあるステール(stale)データを、たとえAのフラグ読出が最新のコピーをメモリから得ているとしても、Aへ転送させる。
一例として、I/OハブはプロセッサAと通信するI/Oデバイスに代わって非スヌープ書込を実行しているとする。理想的には、プロセッサAは、いつ新しいデータが届いたかを確かめるべくフラグを確認する。これは、データが操作される状態となるまでプロセッサが他の動作を実行することを可能にする。しかし、表される条件設定では、プロセッサAは、新しいデータが到着したことを示すようNewとしてフラグを読み出し、新しいフラグ値に基づいてそれが新しいデータであると信じて無効な/古いデータに作用する。結果として、このメモリ順序付け違反は、潜在的に、無効な実行を生じさせる。
図5bを参照すると、前述の相互作用パターンに適切なメモリ順序付けを提供するプロトコルダイアグラムの実施例が表されている。ここで、元のコヒーレント読み出しトランザクションは、要求、応答及び完了フェーズにより実行される。同様に、非キャッシングエージェントからの非スヌープ書込は、データ及びフラグを更新するよう実行される。なお、フラグ及びデータの部分読出のために、Read Invalidate No Forwardメッセージ及びSnoop Invalidate No Forwardメッセージが利用される。結果として、ピアエージェントBは、いずれの場合にも、コンシューマ/部分読出要求エージェントAへ直接にデータを転送しない。代わりに、排他的状態に保たれているデータにより、本実施例で、RspIはホームノードへ送信され、キャッシュラインは無効状態へと遷移する。更に、ホームノードは、I/Oハブプロデューサによって預けられた正確なデータ(すなわち、Data=New)を供給する。
従って、上記から明らかなように、部分読出及び非コヒーレントメモリアクセスにより生ずるメモリ順序付け違反は、部分読出がピアエージェントに無効にさせてそれらのキャッシュコピーを転送させないためのプロトコルメッセージの使用を通して回避される。メモリ順序付け違反及びどのようにそれらが是正され得るかに係る幾つかの事例について論じてきた。更に、部分アクセス及び非コヒーレントアクセスの間の潜在的に多数の更なる相互接続パターンは、このようなメッセージの使用を通して修正可能である。更に、一実施例におけるプロトコルロジック内でのかかるプロトコルメッセージの実施は、潜在的に、レガシーソフトウェアがメモリ順序付け違反を引き起こす危険性の低下をもたらし、メモリ順序付けを強制すべくソフトウェア制約に従うソフトウェアプログラマの負担を減らし、新しいハードウェア及びソフトウェア使用モデルを可能にする。
ここで使用されるモジュールは、如何なるハードウェア、ソフトウェア、ファームウェア、又はそれらの組合せも言う。しばしば、別個なものとして表されるモジュール境界は一般的に変化し、潜在的には重なる。例えば、第1及び第2のモジュールは、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組合せを共有しながら、潜在的に或る独立したハードウェア、ソフトウェア、又はファームウェアを保ってよい。一実施例で、用語「ロジック」の使用は、例えばトランジスタや抵抗等のハードウェア、及び例えばプログラム可能なロジックデバイス等の他のハードウェアを含む。なお、他の実施例で、「ロジック」は、また、例えばファームウェア又はミクロコード等の、ハードウェアと一体化したソフトウェア又はコードを含む。
ここで使用される「値」は、数、状態(ステート)、論理状態、又は2進論理状態のあらゆる既知の表現を含む。しばしば、論理レベル、論理変数、又は論理値の使用は、“1”及び“0”と呼ばれることがある。これは容易に2進論理状態を表す。例えば、“1”は高論理レベルに言及し、“0”は低論理レベルに言及する。一実施例で、トランジスタ又はフラッシュセル等の記憶セルは、単一の論理値又は複数の論理値を保持する能力を有してよい。なお、コンピュータシステムでの値の他の表現が使用されている。例えば、10進数“10”は、また、“1010”の2進値及び16進文字“A”として表されてもよい。従って、「値」は、コンピュータシステムで保持され得る情報のあらゆる表現を含む。
更に、「状態(ステート)」は値又は値の一部分によって表され得る。一例として、論理“1”等の第1の値はデフォルト又は初期状態を表すことができ、一方、論理“0”等の第2の値は非デフォルト状態を表すことができる。更に、用語「リセット」及び「設定(セット)」は、一実施例で、夫々、デフォルトの及び更新された値又は状態を言う。例えば、デフォルト値は、潜在的に、高論理値、すなわちリセットを有し、一方、更新される値は、潜在的に、低論理値、すなわちセットを有する。留意すべきは、値の如何なる組合せも、あらゆる数の状態を表現するために利用される点である。
前述の方法、ハードウェア、ソフトウェア、ファームウェア又はコードの実施例は、処理要素によって実行可能である機械アクセス可能な又は機械読出可能な媒体に格納されている命令又はコードを介して実施されてよい。機械アクセス可能/読出可能な媒体は、コンピュータ又は電子システム等の機械によって読出可能な形式で情報を提供(すなわち、記憶及び/又は送信)するあらゆるメカニズムを有する。例えば、機械アクセス可能な媒体には、静的RAM(SRAM)又は動的RAM(DRAM)等のランダムアクセスメモリ(RAM)、ROM、磁気若しくは光記憶媒体、フラッシュメモリデバイス、電気記憶デバイス、光記憶デバイス、音響記憶デバイス、又は他の形態の伝播信号(例えば、搬送波、赤外線信号、デジタル信号)記憶デバイス等がある。例えば、機械は、例えば搬送波等の伝播信号で送信される情報を保持することができる媒体から伝播信号を受信することにより記憶媒体にアクセスしてよい。
本明細書の全体を通して“一実施例”又は“実施例”との言及は、その実施形態に関連して記載される特定の特徴、構造、又は事項が本発明の少なくとも1つの実施例に含まれることを意味する。このように、本明細書の全体を通して様々な場所でのフレーズ“一実施例で”又は“実施例で”の出現は、必ずしも全て同じ実施形態に言及しているわけではない。更に、特定の特徴、構成、又は事項は、1又はそれ以上の実施例で何らかの適切な方法で組み合わされてよい。
以上、詳細な記載が特定の具体的な実施形態を参照して与えられた。なお、様々な改良及び変形が、添付の特許請求の範囲に記載される本発明の幅広い精神及び適用範囲から外れることなく行われてよいことは明らかである。従って、明細書及び図面は、限定の観点よりむしろ例示の観点で受け止められるべきである。更に、実施例及び他の例となる用語の使用は、必ずしも同じ実施例又は同じ例に言及しているわけではなく、潜在的に同じ実施例はもちろん異なる個別の実施例に言及していることがある。
100 相互接続アーキテクチャ
101 ネットワーク構造
105,106 キャッシングエージェント
110〜112 ホームエージェント
205,210 プロセッサ
206,207,211,212 処理要素(PE)
208,213 リソース
209,214 メモリ
220〜222 ポイント・ツー・ポイントリンク
230 チップセット
261〜266 相互接続及びI/Oデバイス
302a,302b 物理レイヤ
303a,303b リンクレイヤ
304a,304b ルーティングレイヤ
305a,305b トランスポートレイヤ
306a,306b プロトコルレイヤ
351,352 双方向差動シグナリング対

Claims (23)

  1. データ要素の読出に関連し、ピアエージェントに、前記データ要素に関連するキャッシュラインが無効にされるべきであり、前記ピアエージェントが前記キャッシュラインを要求エージェントに転送すべきでないことを示すことができる第1のメッセージを生成するプロトコルレイヤロジックと、
    スヌープメッセージを前記ピアエージェントへ送信するよう前記プロトコルレイヤロジックへ結合される物理レイヤロジックと
    を有し、
    前記第1のメッセージは、Snoop Invalidate No Forwardメッセージを含み、該Snoop Invalidate No Forwardメッセージは、前記ピアエージェントに、前記データ要素が前記ピアエージェントにおいて変形キャッシュ・コヒーレンス状態に保たれていることに応答して前記データ要素を該データ要素に関連するホームエージェントへライトバックさせ、前記キャッシュラインを無効にさせ、且つ、前記データ要素を前記要求エージェントへ直接には供給させないようにする、装置。
  2. 前記プロトコルレイヤロジックは、更に、前記データ要素に関連する前記ホームエージェントへ送られるRead Invalidate No Forwardメッセージを生成することができる、請求項記載の装置。
  3. 前記データ要素の前記読出は、前記キャッシュラインからの前記データ要素の部分的な読出を含む、請求項1記載の装置。
  4. 前記プロトコルレイヤロジックは、相互接続レイヤスタックが前記物理レイヤロジック、リンクレイヤロジック、及び前記プロトコルレイヤロジックを有するように、前記相互接続レイヤスタックで前記物理レイヤロジックへ結合される、請求項1記載の装置。
  5. 前記物理レイヤロジックは、前記ピアエージェントへのシリアル・ポイント・ツー・ポイントリンクへ結合することができ、前記プロトコルレイヤロジックは、MESIFキャッシュ・コヒーレンス・プロトコルを実施することができる、請求項記載の装置。
  6. データを参照するスヌープ無効化メッセージを受け取る受信ロジックと、
    前記データを保持するキャッシュラインを有するキャッシュメモリと、
    前記受信ロジック及び前記キャッシュメモリへ結合されるプロトコルロジックと
    を有し、
    前記プロトコルロジックは、前記受信ロジックが前記データを参照する前記スヌープ無効化メッセージを受け取り且つ前記キャッシュラインが第1のキャッシュ・コヒーレンス状態で保持されることに応答して、前記データに関連するホームノードへの前記データのライトバックを生成し、前記第1のキャッシュ・コヒーレンス状態から無効キャッシュ・コヒーレンス状態への前記キャッシュラインの遷移を開始し、
    前記スヌープ無効化メッセージは、Snoop Invalidate No Forwardメッセージを含み、該Snoop Invalidate No Forwardメッセージは、前記プロトコルロジックに、前記データが前記プロトコルロジックにおいて前記第1のキャッシュ・コヒーレンス状態に保たれていることに応答して前記データを前記ホームノードへライトバックさせ、前記キャッシュラインを無効にさせ、且つ、前記データを前記スヌープ無効化メッセージに関連する要求エージェントへ直接には供給させないようにする、装置。
  7. 前記プロトコルロジックは、前記受信ロジックが前記データを参照する前記スヌープ無効化メッセージを受け取ることに応答して、更に、前記キャッシュラインが如何なるキャッシュ・コヒーレンス状態で保持されていようとも、前記スヌープ無効化メッセージに関連する要求エージェントへ前記データを直接には供給することができない、請求項記載の装置。
  8. 前記第1のキャッシュ・コヒーレンス状態は変形キャッシュ・コヒーレンス状態である、請求項記載の装置。
  9. 前記プロトコルロジックは、前記受信ロジックが前記データを参照する前記スヌープ無効化メッセージを受け取り且つ前記キャッシュラインが排他的状態又は共有状態で保持されることに応答して、更に、前記データに関連するホームノードへ前記データに関連するホームノードへResponse Invalidateメッセージを供給することができる、請求項記載の装置。
  10. 前記プロトコルロジック及び前記受信ロジックは、論理的に相互接続レイヤスタックに編成され、該相互接続レイヤスタックは、少なくとも、前記受信ロジックを含む物理レイヤと、リンクレイヤと、前記プロトコルロジックを含むプロトコルレイヤとを有する、請求項記載の装置。
  11. 前記受信ロジックは高速ポイント・ツー・ポイントリンクへ結合され得る、請求項記載の装置。
  12. データ要素を参照する第1のメッセージ及び第2のメッセージを生成する第1のプロトコルレイヤと、前記第1のメッセージをホームノードへ及び前記第2のメッセージを第2のピアノードへ送信する第1の物理レイヤとを有する第1の相互接続スタックを実施する第1のピアノードを有し、
    前記第2のピアノードは、
    ポイント・ツー・ポイントリンクを介して前記第1のピアノードへ結合され、前記データ要素のキャッシュコピーを保持するキャッシュメモリを有し、
    前記第2のメッセージを受け取る第2の物理レイヤと、前記第1のピアノードへ直接に前記データ要素の前記キャッシュコピーを転送せず、前記第2の物理レイヤが前記第2のメッセージを受け取ることに応答して前記データ要素の前記キャッシュコピーを無効コヒーレンス状態へ移す第2のプロトコルレイヤとを有する第2の相互接続スタックを実施し、
    前記ホームノードは、
    ポイント・ツー・ポイントリンクを介して前記第1のピアノードへ結合され、
    前記第1のメッセージを受け取る第3の物理レイヤと、該第3の物理レイヤが前記第1のメッセージを受け取ることに応答して前記データ要素の正確なコピーを前記第1のピアノードへ供給するデータメッセージを生成する第3のプロトコルレイヤとを有する第3の相互接続スタックを実施し、
    前記第2のメッセージは、Snoop Invalidate No Forwardメッセージを含み、該Snoop Invalidate No Forwardメッセージは、前記第2のピアノードに、前記データ要素が前記第2のピアノードにおいて変形キャッシュ・コヒーレンス状態に保たれていることに応答して前記データ要素を前記ホームノードへライトバックさせ、前記キャッシュラインを無効にさせ、且つ、前記データ要素を前記第1のピアノードへ直接には供給させないようにする、システム。
  13. 前記第2のプロトコルレイヤは、更に、前記キャッシュコピーが無効状態のままにされることを前記ホームノードに示す応答メッセージを生成し、
    前記第2の物理レイヤは、更に、当該第2の物理レイヤが前記第2のメッセージを受け取り且つ前記データ要素の前記キャッシュコピーが前記キャッシュメモリに排他的又は共有コヒーレンス状態で保持されることに応答して、前記応答メッセージを前記ホームノードへ送信する、請求項12記載のシステム。
  14. 前記第2のプロトコルレイヤは、更に、前記データ要素の前記キャッシュコピーを前記ホームノードへ供給するライトバックメッセージを生成し、
    前記第2の物理レイヤは、当該第2の物理レイヤが前記第2のメッセージを受け取り且つ前記データ要素の前記キャッシュコピーが前記キャッシュメモリに変形コヒーレンス状態で保持されることに応答して、前記データ要素の前記キャッシュコピーを前記ホームノードへ供給するよう前記ライトバックメッセージを送信する、請求項12記載のシステム。
  15. 前記データ要素の前記正確なコピーを前記第1のピアノードへ供給するよう前記データメッセージを生成する前記第3のプロトコルレイヤは、前記第3の物理レイヤが前記第1のメッセージを受け取り且つ前記第2のピアノードから前記データ要素の前記キャッシュコピーを受け取ることに応答して、前記データ要素の前記キャッシュコピーを供給するよう前記データメッセージを生成する前記第3のプロトコルレイヤを有する、請求項14記載のシステム。
  16. 前記第1のメッセージは読出無効化メッセージを含み
    前記データメッセージはライトバックマーカーメッセージ及びライトバックデータメッセージを含み、
    前記第1のプロトコルレイヤは、前記データ要素の部分的な読出に応答して前記読出無効化メッセージ及び前記Snoop Invalidate No Forwardメッセージを生成する、請求項15記載のシステム。
  17. 前記読出無効化メッセージはRead Invalidate No Forward(RdInvNoFwd)メッセージを含み
    前記ライトバックマーカーメッセージはResponse Invalid Writeback(RspIWb)メッセージを含み、
    前記ライトバックデータメッセージはWriteback Invalid Data(WbIData)メッセージを含む、請求項16記載のシステム。
  18. データを参照する第1のメッセージを要求ノードにより生成する段階と、
    前記データを参照する前記第1のメッセージをピアノードにより受信する段階と、
    前記ピアノードによる前記第1のメッセージの受信に応答して、前記ピアノードにあるキャッシュメモリのキャッシュラインに保持されている前記データのコピーを前記要求ノードへ直接に転送せず、前記キャッシュラインを無効化する段階と
    を有し、
    前記第1のメッセージは、Snoop Invalidate No Forwardメッセージを含み、該Snoop Invalidate No Forwardメッセージは、前記ピアノードに、前記データ要素が前記ピアノードにおいて変形キャッシュ・コヒーレンス状態に保たれていることに応答して前記データ要素を該データ要素に関連するホームノードへライトバックさせ、前記キャッシュラインを無効にさせ、且つ、前記データ要素を前記要求ノードへ直接には供給させないようにする、方法。
  19. 前記データを参照する第1のメッセージを要求ノードにより生成する段階は、前記要求ノードによる部分読出要求に応答して前記要求ノードに実装されている相互接続状態のプロトコルレイヤで前記データを参照する前記第1のメッセージを生成する段階を有する、請求項18記載の方法。
  20. 前記ピアノードによる前記第1のメッセージの受信に応答して、前記キャッシュメモリが変形キャッシュ・コヒーレンス状態にあるかどうかを決定する段階と、
    前記キャッシュメモリが前記変形キャッシュ・コヒーレンス状態にあるとの決定に応答して、前記ピアノードにある前記キャッシュメモリの前記キャッシュラインに保持されている前記データの前記コピーを前記ホームノードへ転送する段階と
    を更に有する請求項18記載の方法。
  21. 前記キャッシュラインが前記変形キャッシュ・コヒーレンス状態にないとの決定に応答して、前記データの前記コピーが無効キャッシュ・コヒーレンス状態でキャッシュラインに保持されていることを示すよう前記ピアノードから前記ホームノードへ応答メッセージを送信する段階を更に有する、請求項20記載の方法。
  22. 前記ホームノードから前記ピアノードから前記応答メッセージを受信することに応答して、前記ホームノードから前記要求ノードへ前記データを転送する段階と、
    前記ホームノードが前記ピアノードから当該ホームノードに転送された前記データの前記コピーを受け取ることに応答して、前記ホームノードから前記要求ノードへ、前記ピアノードから前記ホームノードへ転送された前記データの前記コピーを転送する段階と
    を更に有する請求項21記載の方法。
  23. 前記要求ノード、前記ピアノード及び前記ホームノードは夫々、ポイント・ツー・ポイントシリアルリンクを通して互いに相互接続される、請求項22記載の方法。
JP2009159799A 2008-07-07 2009-07-06 部分読出と非スヌープアクセスとの間のメモリ順序付け要件の充足 Active JP5059061B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/168,613 US8250311B2 (en) 2008-07-07 2008-07-07 Satisfying memory ordering requirements between partial reads and non-snoop accesses
US12/168,613 2008-07-07

Publications (2)

Publication Number Publication Date
JP2010015572A JP2010015572A (ja) 2010-01-21
JP5059061B2 true JP5059061B2 (ja) 2012-10-24

Family

ID=41465231

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009159799A Active JP5059061B2 (ja) 2008-07-07 2009-07-06 部分読出と非スヌープアクセスとの間のメモリ順序付け要件の充足

Country Status (4)

Country Link
US (5) US8250311B2 (ja)
JP (1) JP5059061B2 (ja)
CN (1) CN101625663B (ja)
DE (1) DE102009032076B4 (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7930459B2 (en) * 2007-09-28 2011-04-19 Intel Corporation Coherent input output device
US8205045B2 (en) * 2008-07-07 2012-06-19 Intel Corporation Satisfying memory ordering requirements between partial writes and non-snoop accesses
US8250311B2 (en) 2008-07-07 2012-08-21 Intel Corporation Satisfying memory ordering requirements between partial reads and non-snoop accesses
WO2013095388A1 (en) * 2011-12-20 2013-06-27 Intel Corporation Protocol for conflicting memory transactions
WO2013103347A1 (en) * 2012-01-06 2013-07-11 Intel Corporation Improving value of forward state by increasing local caching agent forwarding
US20140095807A1 (en) * 2012-09-28 2014-04-03 Qualcomm Technologies, Inc. Adaptive tuning of snoops
CN104380269B (zh) * 2012-10-22 2018-01-30 英特尔公司 高性能互连相干协议
US9342306B2 (en) 2012-10-23 2016-05-17 Analog Devices Global Predicate counter
US9201828B2 (en) * 2012-10-23 2015-12-01 Analog Devices, Inc. Memory interconnect network architecture for vector processor
US9152501B2 (en) 2012-12-19 2015-10-06 International Business Machines Corporation Write performance in fault-tolerant clustered storage systems
US9213643B2 (en) 2013-03-13 2015-12-15 Applied Micro Circuits Corporation Broadcast messaging and acknowledgment messaging for power management in a multiprocessor system
US20140281270A1 (en) * 2013-03-15 2014-09-18 Henk G. Neefs Mechanism to improve input/output write bandwidth in scalable systems utilizing directory based coherecy
US9785556B2 (en) * 2014-12-23 2017-10-10 Intel Corporation Cross-die interface snoop or global observation message ordering
US9684603B2 (en) * 2015-01-22 2017-06-20 Empire Technology Development Llc Memory initialization using cache state
US9424192B1 (en) 2015-04-02 2016-08-23 International Business Machines Corporation Private memory table for reduced memory coherence traffic
US9842050B2 (en) 2015-04-30 2017-12-12 International Business Machines Corporation Add-on memory coherence directory
KR102428563B1 (ko) 2015-09-30 2022-08-03 삼성전자주식회사 수눕 작동을 관리하는 코히런트 인터커넥트와 이를 포함하는 데이터 처리 장치들
US11126564B2 (en) 2016-01-12 2021-09-21 Hewlett Packard Enterprise Development Lp Partially coherent memory transfer
JP2018195183A (ja) * 2017-05-19 2018-12-06 富士通株式会社 演算処理装置および演算処理装置の制御方法
US10599567B2 (en) 2017-10-06 2020-03-24 International Business Machines Corporation Non-coherent read in a strongly consistent cache system for frequently read but rarely updated data
US10917198B2 (en) * 2018-05-03 2021-02-09 Arm Limited Transfer protocol in a data processing network
GR20180100189A (el) 2018-05-03 2020-01-22 Arm Limited Δικτυο επεξεργασιας δεδομενων με συμπυκνωση ροης για μεταφορα δεδομενων μεσω streaming
US10613996B2 (en) * 2018-05-03 2020-04-07 Arm Limited Separating completion and data responses for higher read throughput and lower link utilization in a data processing network
US10877836B2 (en) * 2018-08-29 2020-12-29 Arm Limited Method and apparatus for coherent interconnect recovery with protocol layer re-transmission
US11113232B2 (en) * 2018-10-26 2021-09-07 Super Micro Computer, Inc. Disaggregated computer system
US11294707B2 (en) * 2019-05-24 2022-04-05 Texas Instruments Incorporated Global coherence operations
US10999397B2 (en) * 2019-07-23 2021-05-04 Microsoft Technology Licensing, Llc Clustered coherent cloud read cache without coherency messaging
CN110727465B (zh) * 2019-09-11 2021-08-10 无锡江南计算技术研究所 一种基于配置查找表的协议可重构一致性实现方法
US20200133649A1 (en) * 2019-12-23 2020-04-30 Intel Corporation Processor controlled programmable logic device modification
US11544193B2 (en) 2020-09-11 2023-01-03 Apple Inc. Scalable cache coherency protocol
WO2022246848A1 (zh) * 2021-05-28 2022-12-01 华为技术有限公司 分布式缓存系统和数据缓存方法

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5467460A (en) * 1990-02-14 1995-11-14 Intel Corporation M&A for minimizing data transfer to main memory from a writeback cache during a cache miss
US6065099A (en) * 1997-08-20 2000-05-16 Cypress Semiconductor Corp. System and method for updating the data stored in a cache memory attached to an input/output system
JP2000132531A (ja) 1998-10-23 2000-05-12 Pfu Ltd マルチプロセッサ
JP2002108836A (ja) * 2000-09-29 2002-04-12 Hitachi Ltd プロセッサシステム
GB2367646B (en) * 2000-10-03 2002-11-20 Sun Microsystems Inc Resource access control
US7471675B2 (en) * 2002-07-12 2008-12-30 Intel Corporation Arrangements facilitating ordered transactions
US6922756B2 (en) 2002-12-19 2005-07-26 Intel Corporation Forward state for use in cache coherency in a multiprocessor system
US6954829B2 (en) 2002-12-19 2005-10-11 Intel Corporation Non-speculative distributed conflict resolution for a cache coherency protocol
US7917646B2 (en) 2002-12-19 2011-03-29 Intel Corporation Speculative distributed conflict resolution for a cache coherency protocol
US7111128B2 (en) 2002-12-19 2006-09-19 Intel Corporation Hierarchical virtual model of a cache hierarchy in a multiprocessor system
US7130969B2 (en) 2002-12-19 2006-10-31 Intel Corporation Hierarchical directories for cache coherency in a multiprocessor system
TWI242134B (en) * 2004-02-12 2005-10-21 Via Tech Inc Data extraction method and system
US20050262250A1 (en) 2004-04-27 2005-11-24 Batson Brannon J Messaging protocol
US20050240734A1 (en) * 2004-04-27 2005-10-27 Batson Brannon J Cache coherence protocol
US7822929B2 (en) 2004-04-27 2010-10-26 Intel Corporation Two-hop cache coherency protocol
US9727468B2 (en) * 2004-09-09 2017-08-08 Intel Corporation Resolving multi-core shared cache access conflicts
WO2006090328A2 (en) * 2005-02-28 2006-08-31 Koninklijke Philips Electronics N.V. Multiprocessor system, testing device and method for generating cache coherence testing traffic
US7376793B2 (en) 2005-07-21 2008-05-20 Sun Microsystems, Inc. Cache coherence protocol with speculative writestream
US7512741B1 (en) 2006-01-11 2009-03-31 Intel Corporation Two-hop source snoop based messaging protocol
US7543115B1 (en) 2006-01-11 2009-06-02 Intel Corporation Two-hop source snoop based cache coherence protocol
US7451277B2 (en) * 2006-03-23 2008-11-11 International Business Machines Corporation Data processing system, cache system and method for updating an invalid coherency state in response to snooping an operation
US7506108B2 (en) * 2006-06-30 2009-03-17 Intel Corporation Requester-generated forward for late conflicts in a cache coherency protocol
US20080065835A1 (en) * 2006-09-11 2008-03-13 Sun Microsystems, Inc. Offloading operations for maintaining data coherence across a plurality of nodes
US7657710B2 (en) 2006-11-17 2010-02-02 Sun Microsystems, Inc. Cache coherence protocol with write-only permission
US8250311B2 (en) 2008-07-07 2012-08-21 Intel Corporation Satisfying memory ordering requirements between partial reads and non-snoop accesses

Also Published As

Publication number Publication date
US9703712B2 (en) 2017-07-11
CN101625663B (zh) 2013-07-10
US10019366B2 (en) 2018-07-10
CN101625663A (zh) 2010-01-13
US8694736B2 (en) 2014-04-08
JP2010015572A (ja) 2010-01-21
US20120317369A1 (en) 2012-12-13
US20150178210A1 (en) 2015-06-25
US8250311B2 (en) 2012-08-21
US20100005246A1 (en) 2010-01-07
DE102009032076A1 (de) 2010-02-25
US9058271B2 (en) 2015-06-16
DE102009032076B4 (de) 2016-11-03
US20170308471A1 (en) 2017-10-26
US20140115275A1 (en) 2014-04-24

Similar Documents

Publication Publication Date Title
JP5059061B2 (ja) 部分読出と非スヌープアクセスとの間のメモリ順序付け要件の充足
JP5575870B2 (ja) 部分読出と非スヌープアクセスとの間のメモリ順序付け要件の充足
US7657710B2 (en) Cache coherence protocol with write-only permission
JP3661761B2 (ja) 共用介入サポートを有する不均等メモリ・アクセス(numa)データ処理システム
JP4928812B2 (ja) タグ付きキャッシュ状態に基づいて下位レベル・キャッシュへの参照なしに相互接続ファブリック上にリクエストを送出するためのデータ処理システム、キャッシュ・システム、および方法
US6832282B2 (en) System and method for providing forward progress and avoiding starvation and livelock in a multiprocessor computer system
TWI431475B (zh) 用於在本地代理者之記憶體鏡像及遷移之裝置、系統及方法
US7568073B2 (en) Mechanisms and methods of cache coherence in network-based multiprocessor systems with ring-based snoop response collection
CN101354682B (zh) 一种用于解决多处理器访问目录冲突的装置和方法
US8111615B2 (en) Dynamic update of route table
WO2014065876A1 (en) High performance interconnect coherence protocol
JP2009064471A (ja) マルチプロセッサ・システムにおけるキャッシュ・コヒーレンスにおいて用いるフォワード状態
TW200815992A (en) An exclusive ownership snoop filter
JP2007199999A (ja) マルチプロセッサシステム及びその動作方法
US20070011408A1 (en) Adaptive snoop-and-forward mechanisms for multiprocessor systems
US7779210B2 (en) Avoiding snoop response dependency
US20050262250A1 (en) Messaging protocol

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120104

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120330

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120404

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120425

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: 20120703

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: 20120801

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

Free format text: PAYMENT UNTIL: 20150810

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5059061

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250