JP2007501466A - リモートデータキャッシュから早い応答を提供する方法および装置 - Google Patents
リモートデータキャッシュから早い応答を提供する方法および装置 Download PDFInfo
- Publication number
- JP2007501466A JP2007501466A JP2006522635A JP2006522635A JP2007501466A JP 2007501466 A JP2007501466 A JP 2007501466A JP 2006522635 A JP2006522635 A JP 2006522635A JP 2006522635 A JP2006522635 A JP 2006522635A JP 2007501466 A JP2007501466 A JP 2007501466A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- cluster
- processor
- coherence controller
- cache coherence
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/082—Associative directories
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
【課題】マルチプロセッサ、マルチクラスタシステムにおけるデータアクセスの効率を向上させるための方法および装置を提供する。
【解決手段】システム中のさまざまなクラスタに関連付けられるリモートデータキャッシュを提供することによって、さまざまなトランザクションがローカルに完了することを可能にするメカニズムが実現される。このリモートデータキャッシュは、リモートクラスタ中に保持されるメモリラインについてのデータおよび状態情報を受け取る。もしリクエストに応答するための情報がリモートデータキャッシュ中で利用可能なら、完了指示子を持つレスポンスがリクエストするプロセッサに提供される。完了指示子は、ローカルまたはリモートノードをプローブする必要なしに、リクエストが満たされることを可能にする。
【選択図】図9
【解決手段】システム中のさまざまなクラスタに関連付けられるリモートデータキャッシュを提供することによって、さまざまなトランザクションがローカルに完了することを可能にするメカニズムが実現される。このリモートデータキャッシュは、リモートクラスタ中に保持されるメモリラインについてのデータおよび状態情報を受け取る。もしリクエストに応答するための情報がリモートデータキャッシュ中で利用可能なら、完了指示子を持つレスポンスがリクエストするプロセッサに提供される。完了指示子は、ローカルまたはリモートノードをプローブする必要なしに、リクエストが満たされることを可能にする。
【選択図】図9
Description
本発明は、2002年11月4日に出願されたDavid B. GlascoによるMethods And Apparatus For Managing Probe Requestsと共に題された米国特許出願第10/288,347号および第10/288,399号に関し、これらの全体が全ての目的のためにここで参照によって援用される。本発明は、2003年5月20日に出願されたDavid B. GlascoによるMethods And Apparatus For Providing Cache State Informationと題された米国特許出願第10/442,845号にも関し、この全体が全ての目的のためにここで参照によって援用される。
本発明は一般にマルチプロセッサシステムにおいてデータにアクセスすることに関する。より具体的には、本発明は、マルチクラスタアーキテクチャを有するマルチプロセッサシステムにおいてキャッシュコヒーレンシを維持しつつ、データアクセス効率を改良する技術を提供する。
パフォーマンスの制限のために、単一のメモリ空間でシステム中のプロセッサ群を接続するポイントツーポイントアーキテクチャが開発されるようになっている。ある例では、個別プロセッサは、互いに複数のポイントツーポイントリンクを通して直接に接続されることによってプロセッサ群のクラスタを形成しえる。プロセッサ群の別個のクラスタも接続されえる。ポイントツーポイントリンクは、コプロセッシングおよびマルチプロセッシング機能のための帯域幅を大きく増加させる。
それぞれのクラスタにおいてコンピュータシステム中のクラスタ内およびクラスタ間のトランザクションの個数を減らすことを可能にするメカニズムが提供される。しかし、多くの場合において、このメカニズムはトランザクションの個数を最適には減らさない。マルチプロセッサ、マルチクラスタシステムにおいては、プロセッサは、ローカルまたはリモートノード内でキャッシュされえる特定のメモリライン上で操作を実行するためにプローブリクエストを送る。一部の共通の操作は、メモリライン上でのリードブロック、リードブロックシェアド、およびリードブロックモディファイド操作を含む。多くの例において、トランザクションは、もし追加のメカニズムが提供されたならトランザクションがローカルに取り扱えるときでさえ、リモートクラスタに転送される。しかしトランザクションをローカルに扱うメカニズムは制限される。
したがって、ポイントツーポイントリンクを用いて接続されたマルチプロセッサのマルチクラスタを有するシステムにおいて、キャッシュアクセスリクエスト効率を改善する技術を提供するのが望ましい。
本発明によれば、マルチプロセッサ、マルチクラスタシステムにおけるデータアクセスの効率を増すための方法および装置が提供される。システム中のさまざまなクラスタに関連付けられるリモートデータキャッシュを提供することによって、さまざまなトランザクションがローカルに完了することを可能にするメカニズムが実現される。このリモートデータキャッシュは、リモートクラスタ中に保持されるメモリラインについてのデータおよび状態情報を受け取る。もしリクエストに応答するための情報がリモートデータキャッシュ中で利用可能なら、完了指示子を持つレスポンスがリクエストするプロセッサに提供される。完了指示子は、ローカルまたはリモートノードをプローブする必要なしに、リクエストが満たされることを可能にする。
ある実施形態において、キャッシュアクセスリクエストへのレスポンスを提供する方法が提供される。キャッシュコヒーレンスコントローラにおけるメモリラインに関連付けられるキャッシュアクセスリクエストがプロセッサ群のクラスタ中のプロセッサから受け取られ、前記プロセッサ群のクラスタは、ポイントツーポイントアーキテクチャにおいて相互接続される。前記キャッシュアクセスリクエストについてのレスポンス情報が、前記キャッシュコヒーレンスコントローラに関連付けられるリモートデータキャッシュから得られる。前記プロセッサへ完了指示子を持つレスポンス情報が提供される。
他の実施形態において、処理クラスタが提供される。この処理クラスタは、複数のプロセッサおよびキャッシュコヒーレンスコントローラを含む。複数のプロセッサ群は、ポイントツーポイントアーキテクチャで相互接続される。キャッシュコヒーレンスコントローラは、前記複数のプロセッサの中の第1プロセッサからのメモリラインに関連付けられるキャッシュアクセスリクエストを受け取り、前記キャッシュコヒーレンスコントローラに関連付けられるリモートデータキャッシュからの前記キャッシュアクセスリクエストについてのレスポンス情報を得て、かつ前記プロセッサに完了指示子を持つレスポンス情報を提供するよう構成される。
本発明の性質および優位性のさらなる理解は、明細書および図面の残りの部分を参照することによって実現されよう。
本発明は、以下の説明を添付の図面と併せて参照することによって最もよく理解されえ、図面は本発明の具体的な実施形態を図示するものである。
本発明を実施するための発明者によって考えられたベストモードを含む本発明のいくつかの具体的な実施形態が詳細にここで参照される。これら具体的な実施形態の例は、添付の図面に示される。本発明は、これら具体的な実施形態について説明されるが、本発明を記載された実施形態に限定するよう意図されてはいないことが理解されよう。むしろ、代替物、改変、および等価物を、添付の特許請求の範囲によって規定される本発明の精神および範囲内に含まれるとしてカバーするよう意図される。そのプロセッサ間でポイントツーポイント通信を有するマルチプロセッサアーキテクチャは、本発明の具体的な実施形態を実現するのに適する。以下の記載において、本発明の完全な理解を促すために多くの具体的な詳細が述べられている。本発明は、これら具体的な詳細の一部または全てなしでも実施されえる。本発明の趣旨を不必要にぼかさないために、よく知られたプロセス操作は詳細には記載されていない。さらに本発明が単一のエンティティを参照する場合、本発明の方法および装置は、文脈上明らかにそうでないと表されない限り、1より多いエンティティを用いて実現可能である。
マルチプロセッサ、マルチクラスタシステムにおいてデータアクセス効率を増す技術が提供される。ポイントツーポイントアーキテクチャにおいて、プロセッサ群のクラスタは、ポイントツーポイントリンクを通して互いに直接に接続されたマルチプロセッサを含む。従来のシェアドバスまたは外部ネットワークの代わりにポイントツーポイントリンクを用いることによって、マルチプロセッサは、同じメモリ空間を共有するシステムにおいて効率的に用いられる。従来のバスおよび外部ネットワークベースのマルチプロセッサアーキテクチャの帯域幅およびレイテンシの制限の多くを回避することによって、処理およびネットワーク効率も改善される。しかしさまざまな実施形態によれば、ポイントツーポイントアーキテクチャ中でプロセッサの個数が直線的に増加することは、マルチプロセッサを接続するために用いられるリンクの個数が指数関数的に増加することにつながる。用いられるリンクの個数を減らし、ポイントツーポイントアーキテクチャを用いたマルチプロセッサをさらにモジュラー化するために、マルチクラスタが用いられる。
さまざまな実施形態によれば、マルチプロセッサクラスタは、ポイントツーポイントアーキテクチャを用いて相互接続される。プロセッサのそれぞれのクラスタは、クラスタ群間の通信を扱うのに用いられるキャッシュコヒーレンスコントローラを含む。ある実施形態においては、プロセッサ群を接続するのに用いられるポイントツーポイントアーキテクチャは、クラスタ群を接続するのにも用いられる。
キャッシュコヒーレンスコントローラを用いることによって、マルチクラスタを必ずしもサポートしないかもしれないプロセッサ群を用いてマルチクラスタシステムが構築されえる。そのようなマルチクラスタシステムは、キャッシュコヒーレンスコントローラを用いて、ローカルトランザクションにおいて非ローカルノードを表現することで、ローカルノードがローカルクラスタの外にあるノードの存在を知る必要がないようにすることによって構築されえる。キャッシュコヒーレンスコントローラのさらなる詳細が以下に述べられる。
単一のクラスタシステムにおいて、キャッシュコヒーレンシは、全てのデータアクセスリクエストをシリアライゼーションポイントを通して送ることによって維持されえる。データアクセスリクエストを順序付けるための任意のメカニズムはここでは、シリアライゼーションポイントと呼ばれる。シリアライゼーションポイントの一例はメモリコントローラである。単一のクラスタシステムにおけるさまざまなプロセッサ群は、データアクセスリクエストをメモリコントローラに送る。ある例では、メモリコントローラは、データアクセスリクエストをシリアライズまたはロックすることによって、与えられたメモリラインについて一つのデータアクセスリクエストだけが任意の特定の時刻において許容されるよう構成される。もし他のプロセッサが同じメモリラインにアクセスすることを試みるなら、データアクセスの試みは、メモリラインがアンロックされるまでブロックされる。メモリコントローラは、キャッシュコヒーレンシがマルチプロセッサ、シングルクラスタシステムにおいて維持されることを可能にする。
シリアライゼーションポイントは、さまざまなクラスタ群中のプロセッサ群が単一のアドレス空間を共有するマルチプロセッサ、マルチクラスタシステムにおいても用いられえる。単一のアドレス空間を用いることによって、内部ポイントツーポイントリンクは、従来の外部ネットワークベースのマルチクラスタシステムに対してクラスタ間通信を大幅に改善するために用いられえる。さまざまなクラスタ中のさまざまなプロセッサは、ホームクラスタのような特定のクラスタに関連付けられたメモリコントローラにデータアクセスリクエストを送る。メモリコントローラは、異なるクラスタからの全てのデータリクエストを同様にシリアライズしえる。しかしマルチプロセッサ、マルチクラスタシステム中のシリアライゼーションポイントは、マルチプロセッサ、シングルクラスタシステムにおけるシリアライゼーションポイントほど効率的ではないかもしれない。すなわち、クラスタ間で転送することから生じるレイテンシのようなファクタから生じるディレイが、さまざまなデータアクセスリクエストに対する応答時間に悪影響を及ぼしえる。ディレイは、マルチプロセッサ環境でのプローブの使用からも生じることに注意されたい。
共有メモリ空間を用いるアーキテクチャにおけるクラスタ間トランザクションのディレイは、イーサネット(登録商標)またはトークンリングのような外部ネットワークを用いる従来のメッセージ引き渡し環境におけるディレイより大幅に小さいが、最小ディレイでさえも大きなファクタである。一部の応用例では、一瞬にしてプロセッサから何百万のデータアクセスリクエストが存在しえる。ディレイが少しでもあるとプロセッサパフォーマンスに悪影響を与えうる。
さまざまな実施形態によれば、プローブ管理は、マルチプロセッサ、マルチクラスタシステムにおいてデータにアクセスする効率を高めるために用いられる。システムにおいてキャッシュコヒーレンシを維持するためにノードからレスポンスを引き出すメカニズムはここではプローブと呼ばれる。ある例では、キャッシュをスヌープするメカニズムがプローブと呼ばれる。プローブに対するレスポンスは、起動するリクエストのソースまたはターゲットに向けられえる。さまざまなノードへ送信されるプローブの個数およびプローブのリクエストをフィルタリングまたは低減する任意のメカニズムは、ここではプローブを管理することと呼ばれる。ある例では、プローブを管理することは、プローブが少なくなった個数のエンティティに送信されえるかを決定するためにプローブリクエストを特徴付けることを伴う。
典型的な実現例において、リクエストは、システム中のさまざまなノードにプローブをブロードキャストするメモリコントローラに送られる。そのようなシステムにおいては、キャッシュライン状態の情報は知られていない。システム中の全てのノードは、プローブされ、リクエストクラスタは、それぞれのノードからレスポンスを受け取る。コヒーレンスディレクトリを持つシステムにおいて、さまざまなメモリラインに関連付けられた状態情報は、トランザクションの個数を減らすために用いられえる。さまざまなメモリラインに関連付けられた状態情報を維持する任意のメカニズムは、ここではコヒーレンスディレクトリと呼ばれる。コヒーレンスディレクトリは、リモートクラスタ内にキャッシュされたローカルクラスタ中のメモリラインについての情報を典型的には含む。さまざまな実施形態によれば、コヒーレンスディレクトリは、ローカルキャッシュの状態を推測することによってリモートクラスタへのプローブの個数を減らすために用いられる。他の実施形態においては、コヒーレンスディレクトリは、ホームクラスタにおいてメモリコントローラへのリクエストの送信をなくすために用いられる。
さまざまな実施形態によれば、それぞれのクラスタ内にキャッシングの他のレベルが提供され、それによってもしそれぞれのプロセッサに関連付けられるキャッシュがリクエストされたメモリラインを保持しないなら、プローブをホームクラスタに転送する前に、そのクラスタに関連付けられるキャッシュがチェックされえる。ある例では、リモートデータキャッシュはそれぞれのクラスタに含まれ、それぞれのクラスタのキャッシュコヒーレンスコントローラによってアクセス可能である。リモートデータキャッシュは、ローカルまたはリモートノードをプローブすることなく、またはそのリクエストをホームメモリコントローラに送ることなく、トランザクションがローカルに完了することを可能にする。
図1Aは、本発明の技術を採用しえるマルチクラスタ、マルチプロセッサシステムの一例の概略図である。それぞれの処理クラスタ101、103、105、および107は、複数のプロセッサを含む。処理クラスタ101、103、105、および107は、互いにポイントツーポイントリンク111a〜fを通して接続される。ある実施形態において、図1Aに示されるマルチクラスタアーキテクチャ中のマルチプロセッサは、同じメモリ空間を共有する。この例では、ポイントツーポイントリンク111a〜fは、マルチクラスタ101、103、105、および107内のマルチプロセッサを接続するために従来のフロントサイドバスに代わって用いられる内部システム接続である。このポイントツーポイントリンクは、任意のポイントツーポイントのコヒーレンスプロトコルをサポートしえる。
図1Bは、本発明の技術を採用しえるマルチクラスタ、マルチプロセッサシステムの他の例の概略図である。それぞれの処理クラスタ121、123、125、および127は、ポイントツーポイントリンク141a〜dを通してスイッチ131に結合される。スイッチおよびポイントツーポイントリンクを用いることは、システム内でマルチクラスタを接続するとき、より少ないポイントツーポイントリンクで実現することを可能にすることに注意されたい。スイッチ131は、コヒーレンスプロトコルインタフェースを持つプロセッサを含みえる。さまざまな実現例によれば、図1Aに示されるマルチクラスタシステムは、図1Bに示されるスイッチ131を用いて拡張されえる。
図2は、例えば図1Aに示されるクラスタ101のようなマルチプロセッサクラスタの概略図である。クラスタ200は、プロセッサ202a〜202d、1つ以上の基本I/Oシステム(BIOS)204、メモリバンク206a〜206dを備えるメモリサブシステム、ポイントツーポイント通信リンク208a〜208e、およびサービスプロセッサ212を含む。ポイントツーポイント通信リンクは、プロセッサ202a〜202d、I/Oスイッチ210、および相互接続コントローラ230の間で相互接続を可能にするよう構成される。サービスプロセッサ212は、リンク214a〜214fによって図2に表されるJTAGインタフェースを介してプロセッサ202a〜202d、I/Oスイッチ210、および相互接続コントローラ230と通信を可能にするよう構成される。他のインタフェースがサポートされることに注意されたい。ある実現例においては、サービスプロセッサは、マルチプロセッサクラスタに含まれないことにも注意されたい。I/Oスイッチ210は、システムの残りをI/Oアダプタ216および220に接続する。
具体的な実施形態によれば、本発明のサービスプロセッサは、システムリソースを以前に特定されたパーティションスキーマに従って分割する(partition)ためのインテリジェンスを有する。パーティショニングは、システムプロセッサに関連付けられたルーティングテーブルをサービスプロセッサによって直接に操作することによって達成されえ、これはポイントツーポイント通信インフラストラクチャによって可能になる。ルーティングテーブルは、さまざまなシステムリソースを制御および分離するために用いられ、リソース間の接続がテーブル中で定義される。
プロセッサ202a〜dは、キャッシュコヒーレンスコントローラ230にもポイントツーポイントリンク232a〜dを通して結合される。キャッシュコヒーレンスを維持しつつ、マルチプロセッサクラスタ間の通信を提供するのに用いられえるメカニズムまたは装置は、ここではキャッシュコヒーレンスコントローラと呼ばれる。キャッシュコヒーレンスコントローラ230は、他のマルチプロセッサクラスタ群に関連付けられたキャッシュコヒーレンスコントローラ群に結合されえる。1つのクラスタにこのようなキャッシュコヒーレンスコントローラが1つより多く存在しえることに注意されたい。キャッシュコヒーレンスコントローラ230は、リモートクラスタと共にプロセッサ202a〜dともポイントツーポイントプロトコルを用いて通信する。
より一般には、図2に示される具体的なアーキテクチャは、単に例示的であって、本発明の実施形態は、異なる構成およびリソース相互結合、および示されたシステムリソースのそれぞれについてさまざまな代替物を有すると想定されることが理解されよう。しかし例示する目的のためにサーバ200の特定の詳細が想定される。例えば、図2に示されるリソースのほとんどは、単一の電子アセンブリ上に常駐すると想定される。加えて、メモリバンク206a〜206dは、デュアルインラインメモリモジュール(DIMM)として物理的に提供されるダブルデータレート(DDR)メモリを備えうる。I/Oアダプタ216は、例えば、永久記憶デバイスにアクセスを提供するウルトラダイレクトメモリアクセス(UDMA)コントローラ、またはスモールコンピュータシステムインタフェース(SCSI)コントローラでありえる。I/Oアダプタ220は、例えばローカルエリアネットワーク(LAN)またはインターネットのようなネットワークと通信を提供するよう構成されたイーサネットカードでありえる。
図2に示される特定の実施形態によれば、I/Oアダプタ216および220の両方が対称I/Oアクセスを提供する。すなわち、それぞれはI/Oの等価なセットにアクセスを提供する。理解されるように、そのような構成は、マルチパーティションが同じタイプのI/Oにアクセスを有するパーティショニングスキームを促進する。しかし、I/Oのないパーティションが作られる実施形態も想定されることが理解されよう。例えば、1つ以上のプロセッサおよび関連するメモリリソース、すなわちメモリコンプレックスを含むパーティションが、メモリコンプレックスを試験する目的で作られえる。
ある実施形態によれば、サービスプロセッサ212は、集積化されたチップセット機能を含むモトローラMPC855Tマイクロプロセッサである。キャッシュコヒーレンスコントローラ230は、ローカルポイントツーポイントコヒーレンスプロトコルをサポートする特定用途向け集積回路(ASIC)である。キャッシュコヒーレンスコントローラ230は、I/Oデバイスとの通信を可能にするために非コヒーレントプロトコルを扱うようにも構成されえる。ある実施形態において、キャッシュコヒーレンスコントローラ230は、プログラマブルロジックデバイスまたはフィールドプログラマブルゲートアレイのような特別に構成されたプログラマブルチップである。
図3は、キャッシュコヒーレンスコントローラ230の一例の概略図である。さまざまな実施形態によれば、キャッシュコヒーレンスコントローラは、マルチプロセッサシステムのさまざまなクラスタ中のプロセッサ群から受け取られたプローブおよびリクエストのようなパケットを扱うよう構成されたプロトコルエンジン305を含む。プロトコルエンジン305の機能は、パフォーマンスを改善するためにいくつかのエンジンにわたって分割されえる。ある例では、パーティショニングは、パケットタイプ(リクエスト、プローブおよびレスポンス)、方向(着信および発信)、またはトランザクションフロー(リクエストフロー、プローブフローなど)に基づいてなされえる。
プロトコルエンジン305は、最近のリクエストおよびプローブのようなトランザクションをキャッシュコヒーレンスコントローラが追跡し、これらトランザクションを特定のプロセッサ群と関連付けることを可能にするペンディングバッファ309へのアクセスを有する。ペンディングバッファ309で維持されるトランザクション情報は、トランザクション宛先ノード、後で起こるコリジョン検出およびプロトコル最適化のためのリクエストのアドレス、レスポンス情報、タグ、および状態情報を含みえる。
キャッシュコヒーレンスコントローラは、外部プロセッサクラスタと共に、クラスタ中の他のプロセッサとキャッシュコヒーレンスコントローラが通信することを可能にするコヒーレントプロトコルインタフェース307を有する。さまざまな実施形態によれば、それぞれのインタフェース307および311は、フルクロスバーとして、またはマルチプレクサおよびバッファのような要素を用いた別個の受信および送信ユニットとしてのいずれかで実現される。またキャッシュコヒーレンスコントローラは、I/Oデバイスと通信する非コヒーレントプロトコルインタフェース311のような他のインタフェースを含みえる。キャッシュコヒーレンスコントローラ230は、コヒーレントおよび非コヒーレントプロトコルインタフェースの両方を提供する必要は必ずしもないことに注意されたい。またあるクラスタ内のキャッシュコヒーレンスコントローラは、他のクラスタ内のキャッシュコヒーレンスコントローラと通信しえることにも注意されたい。
図4は、キャッシュコヒーレンスコントローラを用いることのない単一のクラスタを有するシステムにおけるプロセッサからのキャッシュリクエストについてのトランザクションを示す概略図である。プロセッサ401−1は、リードメモリラインリクエストのようなアクセスリクエストをメモリコントローラ403−1に送る。メモリコントローラ403−1は、このプロセッサ、単一のクラスタ中の他のプロセッサに関連付けられえ、またはASICまたは特別に構成されたプログラマブルロジックデバイス(PLD)のような別個の要素でありえる。キャッシュコヒーレンスを簡単にするために、任意の与えられた時刻において、典型的には1つのプロセッサだけが共有アドレス空間(shared address space)に対応するメモリラインにアクセスすることを許される。他のプロセッサが同じメモリラインにアクセスするのを防ぐために、メモリラインは、メモリコントローラ403−1によってロックされえる。同じメモリラインへの全ての他のリクエストはブロックされるか、またはキューに入れられる。他のプロセッサによるアクセスは、典型的にはメモリコントローラ403−1がメモリラインをアンロックするときだけ許される。
それからメモリコントローラ403−1は、プローブをローカルキャッシュメモリ405、407、および409に送ってキャッシュ状態を決定する。それからローカルキャッシュメモリ405、407、および409は、今度はプローブレスポンスを同じプロセッサ401−2に送る。メモリコントローラ403−1は、リードレスポンスのようなアクセスレスポンスも同じプロセッサ401−3に送る。それからプロセッサ401−3は、完了レスポンス(done response)をメモリコントローラ403−2に送ることによって、メモリコントローラ403−2が後続のリクエストについてメモリラインをアンロックすることを許す。CPU401−1、CPU401−2、およびCPU401−3は同じプロセッサを指すことに注意されたい。
図5A〜5Dは、キャッシュコヒーレンスコントローラ動作を示す概略図である。マルチプロセッサクラスタ中のキャッシュコヒーレンスコントローラの使用によって、それぞれのクラスタ中のプロセッサおよびメモリコントローラのようなローカルノードの機能に影響を与えることなく、マルチプロセッサ、マルチクラスタのコヒーレントドメインが可能になる。場合によっては、プロセッサは、マルチクラスタを許さないシングルクラスタ中の限られた個数のプロセッサだけを許すプロトコルしかサポートしないかもしれない。キャッシュコヒーレンスコントローラは、非ローカルノード群はキャッシュコヒーレンスコントローラ中に実現された単一のローカルノードに過ぎないとローカルプロセッサが信じるようにさせることによって、マルチクラスタを許すように用いられえる。ある例では、クラスタ中のプロセッサは、他のクラスタ中のプロセッサのことを知る必要がない。代わりに、クラスタ中のプロセッサ群は、キャッシュコヒーレンスコントローラが全ての非ローカルノードを代表しているかのように、キャッシュコヒーレンスコントローラと通信する。
リモートクラスタ中のノードは、ここでは非ローカルノードまたはリモートノードと呼ばれることに注意されたい。しかし、非ローカルノードは、リクエストクラスタ中にないノードを指し、リモートクラスタおよびホームクラスタの両方にあるノードを含む。データアクセスまたはキャッシュアクセスリクエストが発生するクラスタは、ここではリクエストクラスタと呼ばれる。シリアライゼーションポイントを含むクラスタは、ここではホームクラスタと呼ばれる。他のクラスタは、リモートクラスタと呼ばれる。ホームクラスタおよびリモートクラスタは、ここでは非ローカルクラスタとも呼ばれる。
図5Aは、集合リモートキャッシュ(aggregate remote cache)として振る舞うキャッシュコヒーレンスコントローラを示す。プロセッサ501−1がローカルメモリコントローラ503−1にデータアクセスリクエストを発生するとき、キャッシュコヒーレンスコントローラ509は、ローカルメモリコントローラ503−1からプローブを受け入れ、それを非ローカルノード部511に転送する。コヒーレンスプロトコルは、いくつかのタイプのメッセージを含みえることに注意されたい。ある例では、コヒーレンスプロトコルは、4つのタイプのメッセージを含み、すなわち、データまたはキャッシュアクセスリクエスト、プローブ、レスポンスまたはプローブレスポンス、およびデータパケットである。データまたはキャッシュアクセスリクエストは、ふつうはホームノードメモリコントローラをターゲットにする。プローブは、システム中のそれぞれのキャッシュをクエリーするのに用いられる。プローブパケットは、特定のラインについてキャッシュが適切にキャッシュ状態を遷移できるようにする情報を運びえる。レスポンスは、プローブレスポンス情報を運ぶため、かつノードが他のノードに与えられたトランザクションの状態を知らせるために用いられる。データパケットは、ライトリクエストおよびリードレスポンスの両方についてのリクエストデータを運ぶ。
さまざまな実施形態によれば、メモリアドレスは、ローカルメモリコントローラに存在する。上述のように、ローカルクラスタの外にプロセッサおよびキャッシュコヒーレンスコントローラを含むノードはここでは非ローカルノードと呼ばれる。それからキャッシュコヒーレンスコントローラ509は、非ローカルノードからのレスポンスを累積(accumulate)し、キャッシュブロック505および507に関連付けられたローカルノードがプロセッサ501ー2に単一のレスポンスを送るのと同じやり方で単一のレスポンスを送る。ローカルプロセッサは、プローブされたそれぞれのローカルノードについて単一のプローブレスポンスを期待しえる。キャッシュコヒーレンスコントローラの使用によって、非ローカルノードが存在するかについて気にすることなくローカルプロセッサが動作できるようになる。
プロセッサ501−1およびプロセッサ501−2のような要素は、トランザクションシーケンスのあいだの異なる時刻における同じ要素をここでは指すことに注意されたい。例えば、プロセッサ501−1は、データアクセスリクエストをイニシエートでき、同じプロセッサ501−2がそのリクエストから生じたプローブレスポンスを後に受け取れる。
図5Bは、プローブするエージェントペアとして働くキャッシュコヒーレンスコントローラ示す。キャッシュコヒーレンスコントローラ521−1がプローブを非ローカルノード531から受け取るとき、キャッシュコヒーレンスコントローラ521−1は、プローブを受け入れ、プローブをキャッシュブロック523、525、および527に関連付けられたローカルノードに転送する。それからキャッシュコヒーレンスコントローラ521−2は、最終レスポンスを非ローカルノード部531に転送する。この例では、キャッシュコヒーレンスコントローラは、プローブの送信元および宛先の両方である。キャッシュブロック523、525、および527に関連付けられたローカルノードは、キャッシュコヒーレンスコントローラがあたかもローカルメモリリクエストを持つローカルプロセッサであるかのように振る舞う。
図5Cは、リモートメモリとして働くキャッシュコヒーレンスコントローラを示す。ローカルプロセッサ541−1がリモートメモリをターゲットとするアクセスリクエストを発生するとき、キャッシュコヒーレンスコントローラ543−1は、そのリクエストを非ローカルノード553に転送する。リモートリクエストがローカルプロービングを特定するとき、キャッシュコヒーレンスコントローラ543−1は、ローカルノードへのプローブを発生し、プローブされたノードは、プロセッサ541−2にレスポンスを提供する。いったんキャッシュコヒーレンスコントローラ543−1がデータを非ローカルノード部553から受け取ると、それはリードレスポンスをプロセッサ541−3に転送する。キャッシュコヒーレンスコントローラはまた、最終のレスポンスを非ローカルノード553に関連付けられたリモートメモリコントローラに転送する。
図5Dは、リモートプロセッサとして働くキャッシュコヒーレンスコントローラを示す。第1クラスタにおけるキャッシュコヒーレンスコントローラ561−1が第2クラスタ中のプロセッサからのリクエストを受け取るとき、キャッシュコヒーレンスコントローラは、第2クラスタプロセッサに代わって第1クラスタプロセッサとして働く。キャッシュコヒーレンスコントローラ561−1は、部分575からリクエストを受け入れ、それをメモリコントローラ563−1に転送する。それからキャッシュコヒーレンスコントローラ561−2は、フェッチされたデータと共に全てのプローブレスポンスを累積し、最終レスポンスを非ローカルノード575と共にメモリコントローラ563−2に転送する。
キャッシュコヒーレンスコントローラが集合リモートキャッシュとして働くことを許すことによって、プロービングエージェントペア、リモートメモリ、およびリモートプロセッサ、マルチクラスタシステムは、マルチクラスタを必ずしもサポートしないかもしれないプロセッサを用いて構築されえる。キャッシュコヒーレンスコントローラは、ローカルノードがローカルクラスタの外のノードの存在を知る必要がないように、ローカルトランザクションにおいて非ローカルノードを代表するために用いられえる。
図6は、キャッシュコヒーレンスコントローラを用いて非ローカルクラスタへ送られたローカルプロセッサからのデータリクエストについてのトランザクションを示す概略図である。マルチクラスタシステムは、リクエストクラスタ600、ホームクラスタ620、およびリモートクラスタ640を含む。上述のように、リクエストクラスタ600を除く任意の他のクラスタと共にホームクラスタ620およびリモートクラスタ640は、ここでは非ローカルクラスタと呼ばれる。ローカルおよび非ローカルクラスタに関連付けられたプロセッサおよびキャッシュコヒーレンスコントローラは、それぞれ、ローカルプロセッサ、ローカルキャッシュコヒーレンスコントローラ、非ローカルプロセッサ、および非ローカルキャッシュコヒーレンスコントローラとここでは同様に呼ばれる。
さまざまな実施形態によれば、ローカルクラスタ600中のプロセッサ601−1は、リードリクエストのようなデータアクセスリクエストをキャッシュコヒーレンスコントローラ603−1に送る。キャッシュコヒーレンスコントローラ603−1は、図3のペンディングバッファ中のトランザクションをトラック(track)し、そのリクエストをホームクラスタ620中のキャッシュコヒーレンスコントローラ621−1に転送する。ホームクラスタにおけるキャッシュコヒーレンスコントローラ621−1は、アクセスリクエストを受け取り、そのペンディングバッファ中のリクエストをトラックする。ある例では、リクエストに関連付けられた情報は、ペンディングバッファ中に記憶される。キャッシュコヒーレンスコントローラ621−1は、アクセスリクエストを、ホームクラスタ620にやはり関連付けられたメモリコントローラ623−1に転送する。この時点において、メモリコントローラ623−1は、リクエストに関連付けられたメモリラインをロックする。ある例では、メモリラインは、リクエストクラスタ600、ホームクラスタ620、およびリモートクラスタ640中のマルチプロセッサによって共有されたメモリ空間中のユニークなアドレスである。メモリコントローラ623−1は、データアクセスリクエストに関連付けられたプローブを発生し、そのプローブを、キャッシュコヒーレンスコントローラ621−2と共に、キャッシュブロック625および627に関連付けられたローカルノードに転送する。
リクエスト、プローブ、レスポンス、およびデータに関連付けられたメッセージは、あるノードから他へ転送されると記載されるが、メッセージそのものはさまざまなものを含みえることに注意されたい。ある例では、マルチクラスタアーキテクチャがさまざまなローカルノードに対してトランスペアレントであることができるように、改変がメッセージになされる。ライトリクエストも扱われえることに注意されたい。ライトリクエストにおいて、ターゲットとされたメモリコントローラは、レスポンス群を集め、集めるのが終わると、そのレスポンス群をプロセッサに送る。
リモートクラスタ640に関連付けられたキャッシュコヒーレンスコントローラ641−1は、キャッシュコヒーレンスコントローラ621−2からプローブを受け取り、キャッシュブロック645、647、および649に関連付けられたローカルノードをプローブする。同様に、リクエストクラスタ600に関連付けられたキャッシュコヒーレンスコントローラ603−2は、プローブを受け取り、そのプローブをキャッシュブロック605、607、および609に関連付けられたローカルノードに転送し、リクエストクラスタ600中のキャッシュブロックをプローブする。プロセッサ601−2は、キャッシュブロック605、607、および609に関連付けられたローカルノードからプローブレスポンスを受け取る。
さまざまな実施形態によれば、キャッシュコヒーレンスコントローラ621−3は、プローブレスポンス群を累積し、それらプローブレスポンス群をキャッシュコヒーレンスコントローラ603−3に送り、このキャッシュコヒーレンスコントローラが今度はプローブレスポンス群をプロセッサ601−3に転送する。キャッシュコヒーレンスコントローラ621−4はまたリードレスポンスをキャッシュコヒーレンスコントローラ603−4に送り、このキャッシュコヒーレンスコントローラはリードレスポンスをプロセッサ601−4に転送する。プローブおよびプローブレスポンスがシステム中のキャッシュコヒーレンシを維持するための情報を運ぶのに対し、リードレスポンスは実際のフェッチされたデータを運びえる。フェッチされたデータを受け取ったあと、プロセッサ601−4は、ソース完了レスポンス(source done response)をキャッシュコヒーレンスコントローラ603−5に送りえる。さまざまな実施形態によれば、トランザクションは、これでリクエストするクラスタ600においては完了である。キャッシュコヒーレンスコントローラ603−5は、ソース完了メッセージ(source done message)をキャッシュコヒーレンスコントローラ621−5に転送する。今度は、キャッシュコヒーレンスコントローラ621−5は、ソース完了メッセージをメモリコントローラ623−2に送る。ソース完了メッセージを受け取ると、メモリコントローラ623−2は、メモリラインをアンロックでき、ホームクラスタ620におけるトランザクションはこれで完了である。他のプロセッサは、これでアンロックされたメモリラインにアクセスできる。
キャッシュコヒーレンスコントローラ621−3は、プローブレスポンスをキャッシュコヒーレンスコントローラ603−3に送る前に、リモートクラスタプローブレスポンスを待つので、ディレイがシステムに発生する。さまざまな実施形態によれば、プローブレスポンスは、キャッシュコヒーレンスコントローラ603−3において集められる。リモートクラスタにプローブレスポンスを、ホームクラスタを通じて送らせることによって、ホームクラスタプローブレスポンスおよびリモートクラスタプローブレスポンスの両方がホームキャッシュコヒーレンスコントローラにおいて遅延されえる。ある例では、リモートクラスタプローブレスポンスは、リクエストクラスタに届くためにはさらなるホップを移動しなければならない。リモートクラスタおよびリクエストクラスタ間のプローブレスポンスの送信のためのレイテンシは、ホームクラスタを通したリモートクラスタおよびリクエストクラスタ間のプローブレスポンスの送信についてのレイテンシより実質的に小さいかもしれない。ホームクラスタプローブレスポンスもこの追加されたホップの結果、遅延される。
当業者には理解されるように、リクエスト、プローブ、およびレスポンスメッセージを伴う具体的なトランザクションシーケンスは、特定の実現例に依存して変わりえる。ある例では、キャッシュコヒーレンスコントローラ621−3は、プローブレスポンスメッセージおよびリードレスポンスメッセージの両方をキャッシュコヒーレンスコントローラ603−3に送信する前に、メモリコントローラ623−1からのリードレスポンスメッセージを受け取るのを待ってもよい。他の例では、キャッシュコヒーレンスコントローラは、リクエストを発生する実際のプロセッサでありえる。いくつかのプロセッサは、プロセッサおよびキャッシュコヒーレンスコントローラの両方として動作しえる。さらに、リードおよびライトに関連付けられたさまざまなデータアクセスリクエストメッセージ、プローブ、およびレスポンスが考えられる。上述のように、キャッシュをスヌープするための任意のメッセージがプローブとして呼ばれえる。同様に、メモリラインがアンロックされるべきであることをメモリコントローラに示すための任意のメッセージは、ソース完了メッセージと呼ばれえる。
図6に示されるトランザクションは、図5A〜5Dを参照して説明されたリモートプロセッサ、集合ローカルキャッシュ、プロービングエージェントペア、およびリモートメモリを含む多くの異なる機能を実行するキャッシュコヒーレンスコントローラの例を示すことに注意されたい。
ホームクラスタにおけるキャッシュコヒーレンスコントローラ621−1は、リモートプロセッサとして働いている。キャッシュコヒーレンスコントローラがリクエストをリクエストクラスタプロセッサから受け取るとき、キャッシュコヒーレンスコントローラは、リクエストクラスタプロセッサの代わりにリクエストするプロセッサ(requesting processor)として働くよう指示される。この場合、キャッシュコヒーレンスコントローラ621−1は、転送されたリクエストをプロセッサ601−1から受け入れ、それをメモリコントローラ623−1に送り、全てのローカルノードおよびメモリコントローラ623−1からのレスポンスを累積し、累積されたレスポンスおよびデータをリクエストするプロセッサ601−3に戻して転送する。キャッシュコヒーレンスコントローラ621−5は、ソース完了をローカルメモリコントローラ623−2に転送することも行う。
リクエストクラスタ600におけるキャッシュコヒーレンスコントローラ603−1は、リモートメモリとして働く。リモートメモリとして、キャッシュコヒーレンスコントローラは、プロセッサからのリクエストを適切なリモートクラスタに転送し、ローカルノードがプローブされることを確実にするよう設計される。この場合、キャッシュコヒーレンスコントローラ603−1は、プローブをホームクラスタ620におけるキャッシュコヒーレンスコントローラ621−1に転送する。キャッシュコヒーレンスコントローラ603−2はまたローカルノード605、607、および609をプローブする。
リクエストクラスタ640におけるキャッシュコヒーレンスコントローラ641−1は、プロービングエージェントペア(probing agent pair)として働いている。上述のように、プロービングエージェントペアとして働いているキャッシュコヒーレンスコントローラがプローブをリモートクラスタから受け取るとき、キャッシュコヒーレンスコントローラは、プローブを受け入れ、それを全てのローカルノードへ転送する。キャッシュコヒーレンスコントローラは、レスポンスを累積し、最終レスポンスをリクエストクラスタに戻して送る。ここで、キャッシュコヒーレンスコントローラ641−1は、プローブをキャッシュブロック645、647、および649に関連付けられたローカルノードに送り、プローブレスポンスを集め、プローブレスポンスをホームクラスタ620におけるキャッシュコヒーレンスコントローラ621−3に送る。同様に、キャッシュコヒーレンスコントローラ603−2は、リクエストクラスタ600におけるプロービングエージェントペアとしても働く。キャッシュコヒーレンスコントローラ603−2は、プローブリクエストをキャッシュブロック605、607、および609に関連付けられたローカルノードを含むローカルノードに転送する。
キャッシュコヒーレンスコントローラ621−2および621−3は、集合リモートキャッシュとしても働いている。キャッシュコヒーレンスコントローラ621−2は、メモリコントローラ623−1からのプローブを受け入れ、そのプローブを他のプロセッサクラスタ600および640に転送する責任をもつ。より具体的には、キャッシュコヒーレンスコントローラ621−2は、プローブをリクエストクラスタ600に対応するキャッシュコヒーレンスコントローラ603−2、およびリモートクラスタ640に対応するキャッシュコヒーレンスコントローラ641−1に転送する。上述のように、マルチクラスタアーキテクチャを用いることは、増加されたトラフィックおよび処理オーバヘッドのような他の不要な要素と共に、遅延を招きえる。
全てのクラスタがプローブされる必要はないが、プローブはマルチクラスタシステム中の全てのクラスタに送信される。例えば、もしプローブリクエストに関連付けられたメモリラインが無効(invalid)またはキャッシュからは存在しないなら、さまざまなクラスタに関連付けられたキャッシュの全てをプローブする必要はないかもしれない。コヒーレンスディレクトリがないシステムにおいては、典型的には全てのクラスタをスヌープすることが必要である。しかし、コヒーレンスディレクトリを用いることによって、システム中のトランザクション数は、トラフィックおよび処理オーバヘッドを最小化するためにシステム中のクラスタのサブセットだけをプローブすることによって、減らすことができる。
コヒーレンスディレクトリを用いることによって、特定のクラスタにおいて、グローバルメモリライン状態情報(それぞれのクラスタについての)はメモリコントローラまたはキャッシュコヒーレンスコントローラによって維持されアクセスされえる。さまざまな実施形態によれば、コヒーレンスディレクトリは、レスポンスの受領と共にプローブの分配をトラックし、かつ管理する。もしコヒーレンスディレクトリ情報が、特定のクラスタのプロービングが必要とされないことを示すなら、その特定のクラスタへのプローブは除去されえる。ある例では、コヒーレンスディレクトリは、リクエストするクラスタおよびリモートクラスタのプロービングが必要ではないことを示す。ホームクラスタにおけるキャッシュコヒーレンスコントローラは、プローブをリクエストおよびリモートクラスタに転送することなく、ローカルノードをプローブする。それからホームクラスタにおけるキャッシュコヒーレンスコントローラは、プローブレスポンスが受け取られた後に、レスポンスをリクエストクラスタに送る。しかし、典型的なマルチクラスタシステムにおいては、リクエストするクラスタは、所定の個数のレスポンスをさまざまなプローブされたクラスタから期待する。ある例では、もしマルチクラスタシステムが4つのクラスタを含むなら、リクエストクラスタは、全ての4つのクラスタ中のノードに関連付けられたプローブレスポンスを期待する。
図7は、プローブの管理およびフィルタリングを可能にするために用いられえるコヒーレンスディレクトリのある例である。さまざまなコヒーレンスディレクトリが利用可能である。ある例では、フルディレクトリがシステム中のそれぞれのメモリラインについてのエントリを提供する。この例では、コヒーレンスディレクトリは、メモリコントローラにおいて維持され、キャッシュコヒーレンスコントローラによってアクセス可能である。しかし、大きな量のシステムメモリを持つシステムにおいては、フルディレクトリは、効率的または実用的ではないかもしれない。さまざまな実施形態によれば、疎なディレクトリが、メモリラインの選択されたセットに関連付けられた限定された個数のエントリについて提供される。ある例では、コヒーレンスディレクトリ701は、メモリライン711に関連付けられた状態情報713、ダーティデータオーナー情報715、およびオキュパンシ−ベクタ717を含む。ある実施形態において、メモリライン状態は、変更され(modified)、所有され(owned)、共有され(shared)、および無効である(invalid)。
無効状態において、メモリラインは、任意のリモートクラスタに関連付けられたキャッシュ中にそのときはキャッシュされていない。共有状態において、メモリラインは、1つより多いキャッシュ中に存在しえ、しかしメモリラインはクリーンであり、これらキャッシュのどれにおいても変更されえない。メモリラインが共有状態にあるとき、どのキャッシュが関連するデータを共有するかを決定するために、オキュパンシーベクタ717がチェックされえる。オキュパンシーベクタ717は、Nビットのストリングとして実現されえ、ここでそれぞれのビットは、Nクラスタ中のキャッシュにおけるデータの利用可能性を表現する。どのクラスタがキャッシュ中で関連するメモリラインのコピーを保持するかをトラックするためのメカニズムは、ここではオキュパンシーベクタと呼ばれる。アドレス741を持つメモリラインは、共有された状態であり、オキュパンシーベクタ717は、クラスタ1および3がそれぞれ共有されたメモリラインをキャッシュ中に有することを示す。
変更された状態において、メモリラインは、変更されており、変更されたコピーが特定のクラスタに関連付けられたキャッシュ中に存在する。メモリラインが変更されるとき、ダーティデータオーナー情報フィールド715は、ダーティデータのオーナーを決定するためにチェックされえる。どのクラスタがキャッシュ中のメモリラインの変更されたコピーを所有するかを示すための任意のメカニズムは、ここではダーティデータオーナー情報フィールドと呼ばれる。ある例では、アドレス781に関連付けられたメモリラインが変更され、ダーティデータオーナーフィールド715はクラスタ2がメモリラインを所有することを示す。
所有された状態において、ダーティメモリラインは、単一のキャッシュによって所有されるが、複数の他のキャッシュ中で共有されて保持されているかもしれない。キャッシュを所有することによって変更されてはいるが、いまやリードオンリーである。この場合、メモリライン中に保持されたコピーは古くなっている。もしメモリラインが所有された状態にあるなら、ダーティデータオーナーフィールド715は、どのクラスタがダーティデータを所有するかを決定するためにアクセスされえる。ある例では、アドレス761に関連付けられたメモリラインは、所有された状態にあり、クラスタ4によって所有される。どの他のキャッシュが関連するデータを有しえるかを決定するためにオキュパンシーベクタ717もチェックされえる。この例では、オキュパンシーベクタ717は、クラスタ2、3、および4がそれぞれキャッシュ中のメモリラインに関連付けられたデータのコピーを有することを示す。
コヒーレンスディレクトリ701は、変更、所有、共有、および無効の4つの状態を含むが、特定の実現例は、異なる状態のセットを用いえることに注意されたい。ある例では、システムは、変更、排他、所有、共有、および無効の5つの状態を有しえる。排他状態においては、メモリラインは、リモートクラスタ中の特定のノードにアクセス可能であるかもしれないが、リモートクラスタ中のノードは、データをキャッシュラインにまだ書き込みしていない。本発明の技術は、さまざまな異なる可能なメモリライン状態と共に用いられえる。
リクエストクラスタ中のプロセッサが特定のメモリラインに対してリードリクエストのようなトランザクションを実行するとき、そのプロセッサは関連するキャッシュにアクセスする。多くの実現例において、特定のクラスタ中のそれぞれのプロセッサは、関連するキャッシュを有する。もしメモリラインがキャッシュ中で利用可能でなければ、リクエストはキャッシュコヒーレンスコントローラを通してホームクラスタへ転送される。ある実施形態においては、ホームクラスタは、リクエストのメモリラインを含むアドレス空間を有するプロセッサのクラスタである。それからキャッシュコヒーレンスコントローラは、どのクラスタがリクエストに答えるためにプローブされなければならないかを決定するために、コヒーレンスディレクトリにアクセスしえる。コヒーレンスディレクトリは、クラスタ間で送信されるプローブの個数を減少させることを可能にする。
コヒーレンスディレクトリにアクセスすることによってシステム中のトランザクションの個数を減少させるためのメカニズムは、出願日2002年11月4日の共に「Methods and Apparatus for Managing Probe Requests」と題された、David B. Glascoによる米国特許出願第10/288,399号および第10/288,347号に記載されており、それらの全体が全ての目的のために参照によって援用される。クラスタ間のトランザクションの個数を減らすことによって、帯域幅が確保されトランザクションレイテンシが減るので、システム効率は改善される。コヒーレンスディレクトリは、クラスタ間トランザクションを減らす一つのメカニズムを提供する。さまざまな実施形態によれば、リモートデータキャッシュは、クラスタ間トランザクションを減らすもう一つのメカニズムである。
さまざまな実施形態によれば、それぞれのクラスタ中にキャッシングのもう1つのレベルが提供されることによって、もしそれぞれのプロセッサに関連付けられたキャッシュがメモリライン中にリクエストを保持しないなら、プローブをホームクラスタに転送する前に、クラスタに関連付けられたキャッシュがチェックされえる。ある例では、リモートデータキャッシュは、それぞれのクラスタ中に含まれ、それぞれのクラスタのキャッシュコヒーレンスコントローラによってアクセス可能である。それぞれのプロセッサに関連付けられたキャッシュとは異なり、この例では、単一のリモートデータキャッシュがクラスタ中の複数のプロセッサのために提供される。もし特定のプロセッサによってリクエストされたメモリラインがそのプロセッサに関連付けられたキャッシュ中に見つからないなら、キャッシュコヒーレンスコントローラは、そのリクエストをホームクラスタに転送する必要は必ずしもない。その代わりキャッシュコヒーレンスコントローラは、メモリラインがリモートデータキャッシュ中に存在するかを決定するためにリモートデータキャッシュをチェックしえる。もしメモリラインがリモートデータキャッシュ中に存在するなら、ホームクラスタにはプローブが転送される必要はなく、キャッシュコヒーレンスコントローラはその代わりにリモートデータキャッシュ中のデータを用いてトランザクションに応答することができる。
本発明の技術を用いることによって、リモートデータキャッシュは、リクエストをホームクラスタに転送することなく、リードブロック、リードブロックシェアド(read block shared)、およびリードブロックモディファイド(read block modified)のようなリクエストに応答しえる。その結果、トランザクションは、ローカルまたはリモートノードをプローブすることなく完了されえる。
図8は、リモートデータキャッシュの概略図である。リモートデータキャッシュは、プローブをリモートクラスタに転送する必要なく、キャッシュコヒーレンスコントローラが効率的にある種のトランザクションをローカルに扱うことを可能にする。ローカルキャッシュの後に、しかしホームクラスタメモリコントローラの前にアクセスされる、ローカルプロセッサによってアクセスされるリモートクラスタからのデータを保持する任意のキャッシュは、ここではリモートデータキャッシュと呼ばれる。ある例では、リモートデータキャッシュは、リード、リードブロックシェアド、またはリードブロックモディファイドリクエストのようなリクエストがホームクラスタに転送される前に、キャッシュコヒーレンスコントローラによってアクセスされる。リモートデータキャッシュは、プローブをリモートクラスタに転送する必要なしに、トランザクションがローカルクラスタにおいて扱われることを可能にする。
さまざまな実施形態によれば、リモートデータキャッシュ801は、メモリラインフィールド811を含む。さまざまなメモリラインのアドレスは、特定のメモリラインがリモートデータキャッシュ中に存在するかを決定するために、キャッシュコヒーレンスコントローラによる効率的なアクセスを可能にするよう、このフィールド内に提供される。エントリは、典型的には、メモリラインがプロセッサキャッシュから追い出されるときに、リモートデータキャッシュに追加される。リモートデータキャッシュ801は、状態情報813および実際のキャッシュされたデータ815も含む。ある例では、アドレス821は、無効の状態を有し、関連付けられたキャッシュデータを有しない。典型的な場合においては、無効な状態にあるメモリラインは、リモートデータキャッシュ中に単に含まれないことに注意されたい。アドレス841は、共有された状態で保持されるデータ843を含む。ある例では、リモートデータキャッシュ中に共有された状態で保持されるデータは、そのリクエストをホームクラスタに転送することなしに、リードブロックおよびリードブロックシェアドリクエストを満たすために用いられえる。アドレス861は、所有された状態で保持されるデータ863を有する。さまざまな実施形態によれば、所有された状態で保持されるデータもリードブロックおよびリードブロックシェアドトランザクションを満たすために用いられえる。
場合によっては、変更された状態においてはリモートデータキャッシュ801にデータが保持されないことに注意されたい。リモートデータキャッシングを持つシステムについては、リモートデータキャッシュは、リモートクラスタからデータをキャッシュするために用いられえる。そのようなシステムにおいては、表示的なMEOSIキャッシュコヒーレンスプロトコルが典型的には採用される。そのようなプロトコルにおいては、ローカルプロセッサキャッシュは、メモリラインをキャッシュから追い出しえ、もしそのラインがダーティなら(変更されたか、所有された状態)、データはメモリにライトバックされる。リモートデータキャッシュは、プロセッサキャッシュおよびシステムメモリの間に位置するが、ライトバックを守り、しかしラインをどのようにリモートデータキャッシュにインストールするかを決定するための充分な情報を有しない。典型的なプロセッサキャッシュは、この情報を有する。
しかし、リモートデータキャッシュは、キャッシュコヒーレンスコントローラと関連付けられる。場合によっては、キャッシュコヒーレンスコントローラは、プロセッサキャッシュから追い出されつつあるラインが変更された、または共有された状態にあったかについての情報を有しない。その結果、リモートデータキャッシュは、保守的なアプローチをとり、そのメモリラインがひょっとすると変更された状態でインストールされたかもしれなくても、所有された状態でメモリラインをインストールする。同じやり方で、リモートデータキャッシュは、そのメモリラインがひょっとすると排他的状態でインストールされたかもしれなくても、時には保守的にメモリラインを共有された状態でインストールする。保守的なアプローチをとることによって、もしメモリラインが排他的または変更された状態であるとわかっていたなら扱えたリードブロックモディファイドのようなトランザクションが、リモートデータキャッシュによっては扱えず、その結果、ホームクラスタに転送される。ホームクラスタに転送することは、必ずしも用いられなければならないわけではないシステムリソースを使う。
本発明の技術は、リモートデータキャッシュがメモリラインを共有された状態および所有された状態でインストールするだけでなく、排他的状態および変更された状態でインストールすることも可能にするいくつかのメカニズムを提供する。ある例では、メモリラインをリモートデータキャッシュにインストールするために用いられる変更された、または所有された状態の情報は、コヒーレンスディレクトリから得られる。他の例では、状態情報は、プロセッサからの拡張されたソース完了メッセージ(augmented source done message)から得られる。
これらメカニズムは、リモートデータキャッシュ中の全てのデータが共有されたまたは所有された状態で保持されることを可能にするだけでなく、変更された状態および排他的状態にデータを保持するメカニズムを提供する。変更された状態または排他的状態に保持されるリモートデータキャッシュ中のデータは、リードブロック、リードブロックシェアド、およびリードブロックモディファイドトランザクションを満たすことができる。リモートデータキャッシュを満たす他のメカニズムは、2003年5月20日に出願されたDavid B. GlascoによるMethods And Apparatus For Providing Cache State Informationと題された米国特許出願第10/442,845号に記載され、この全体が全ての目的のためにここで参照によって援用される。
リモートデータデータキャッシュ801は、ペンディング状態で情報を保持もする。ペンディング状態は、リモートデータキャッシュに初めに入れられるが、まだソース完了によって確認されていないデータを保持するために用いられる。ペンディング状態で保持されるデータは、そのデータが初めにリモートデータキャッシュに書き込まれた後、しかし最終レスポンストランザクションが受け取られる前に、プロセッサによって受け取られたプローブによって無効にされえる。
図9は、リモートデータキャッシュが用いられえるトランザクションフローを示す概略図である。さまざまな実施形態によれば、リクエストクラスタ900中のプロセッサ901−1は、リードリクエストのようなデータアクセスリクエストをキャッシュコヒーレンスコントローラ903−1に送る。キャッシュコヒーレンスコントローラ903−1は、ペンディングバッファ中のトランザクションをトラックし、リモートデータキャッシュ905を用いてリクエストがローカルに扱えるかを決定する。さまざまな実施形態によれば、もしリクエストが特定のメモリラインについてのリードブロックまたはリードブロックシェアドである場合、リクエストは、もしメモリラインがリモートデータキャッシュ中に変更、所有、排他、または共有状態のいずれかで保持されるならローカルに扱いえる。換言すれば、リクエストは、もしメモリラインの有効なコピーがリモートデータキャッシュ中にあるならローカルに扱いえる。しかし、もしリクエストがリードブロックモディファイドのようなトランザクションであるなら、リクエストは、メモリラインがリモートデータキャッシュ中に変更または排他状態で保持される場合のみローカルに扱いえる。もしリクエストがローカルに扱いえるなら、リモートデータキャッシュは、データレスポンスをプロセッサ901−3へ送るキャッシュコヒーレンスコントローラ903−3へ情報を提供する。
典型的な実現例において、リクエストする処理ノードは、トランザクションが完了しえる前に他の処理ノードから応答を期待する。もしトランザクションが、リモートデータキャッシュによってローカルに満たされるなら、他の処理ノードは、最適な場合にはプローブされる必要はなく、その結果、応答を発生しない。トランザクションがリモートデータキャッシュによってローカルに満たされえるシナリオにおいては、キャッシュコヒーレンスコントローラは、プローブされたノードからリクエストするノードへ戻る応答となる、システム中の他のノードへのプローブを発生するか、またはキャッシュコヒーレンスコントローラは、システム中の他のノードの代わりに応答を発生する。しかし、外部へのプローブおよびプローブ応答を送ることは、リモートデータキャッシュがトランザクションをローカルに満足するようにさせることの利点を減らす。キャッシュコヒーレンスコントローラは、リモートデータキャッシュを用いてトランザクションを完了するのに必要な情報の全てを有し、トランザクションが完了したことをリクエストするプロセッサに知らせることができるはずである。
その結果、本発明の技術は、リモートデータキャッシュを持つキャッシュコヒーレンスコントローラが、外部のプローブまたはプローブレスポンスを送る必要なく、トランザクションをローカルに満足することを可能にするメカニズムを提供する。ある実施形態においては、本発明の技術は、リクエストする処理ノードへ、完了指示子と共にレスポンス情報で応答するキャッシュコヒーレンスコントローラを提供する。他のレスポンスが予期されないリクエストする処理ノードに通知する任意のメカニズムは、ここでは完了指示子と呼ばれる。ある例では、完了指示子は、キャッシュコヒーレンスコントローラからレスポンス情報と共に提供される完了ビットである。このレスポンス情報は、リモートデータキャッシュからのデータと共に状態情報を含みえる。さまざまな実施形態によれば、レスポンス情報は、リクエストするプロセッサ901−3に提供される。それからリクエストするプロセッサ901−3は、完了ビットを認識すると、ソース完了をキャッシュコヒーレンスコントローラ903−5に送る。もし完了ビットが提供されないなら、リクエストするプロセッサ901−3は、それから典型的にはシステム中の他のノードからのレスポンスを期待する。ある例では、リクエストするプロセッサ901−3は、ホームクラスタキャッシュコヒーレンスコントローラからのレスポンスと共に、リクエストするプロセッサのクラスタ中のノードからのレスポンスを期待する。
本発明は、その具体的な実施形態を参照して示され記述されてきたが、記載された実施形態の形態および詳細の変更が本発明の精神または範囲から逸脱することなくなされえることが当業者には理解されよう。例えば本発明の実施形態は、ポイントツーポイント、スイッチ、またはバスアーキテクチャを通して接続されたマルチプロセッサクラスタと共に採用されえる。他の例では、プロセッサのマルチクラスタは、単一のキャッシュコヒーレンスコントローラを共有しえ、または複数のキャッシュコヒーレンスコントローラが単一のクラスタ中で用いられえる。従って本発明の範囲は添付の特許請求の範囲を参照して決定されるべきである。
Claims (20)
- キャッシュアクセスリクエストへのレスポンスを提供する方法であって、
キャッシュコヒーレンスコントローラにおけるメモリラインに関連付けられるキャッシュアクセスリクエストをプロセッサ群のクラスタ中のプロセッサから受け取ることであって、前記プロセッサ群のクラスタは、ポイントツーポイントアーキテクチャにおいて相互接続される、受け取ること、
前記キャッシュアクセスリクエストについてのレスポンス情報を、前記キャッシュコヒーレンスコントローラに関連付けられるリモートデータキャッシュから得ること、および
前記プロセッサへ完了指示子を持つレスポンス情報を提供すること
を含む方法。 - 請求項1に記載の方法であって、レスポンス情報は、レスポンスパケット中に提供される方法。
- 請求項1〜2のいずれかに記載の方法であって、レスポンス情報は状態情報を含む方法。
- 請求項2に記載の方法であって、レスポンス情報は、データを含む方法。
- 請求項1〜4のいずれかに記載の方法であって、前記完了指示子は、前記キャッシュコヒーレンスコントローラからの前記レスポンスが唯一のレスポンスであることを前記プロセッサに知らせる方法。
- 請求項1〜5のいずれかに記載の方法であって、前記プロセッサは、リクエストクラスタ中のリクエストプロセッサである方法。
- 請求項1〜6のいずれかに記載の方法であって、前記完了指示子は、前記キャッシュコヒーレンスコントローラがローカルまたはリモートノードをプローブすることを避けることを可能にする方法。
- 請求項1〜7のいずれかに記載の方法であって、前記レスポンス中に前記完了指示子を識別すると、前記プロセッサはソース完了を送る方法。
- 請求項8に記載の方法であって、前記プロセッサは、前記ソース完了を前記キャッシュコヒーレンスコントローラに送る方法。
- 請求項9に記載の方法であって、前記プロセッサは、前記ソース完了をメモリコントローラとして働く前記キャッシュコヒーレンスコントローラに送る方法。
- 処理クラスタであって、
ポイントツーポイントアーキテクチャで相互接続される複数のプロセッサ群、
前記複数のプロセッサの中の第1プロセッサからのメモリラインに関連付けられるキャッシュアクセスリクエストを受け取り、前記キャッシュコヒーレンスコントローラに関連付けられるリモートデータキャッシュからの前記キャッシュアクセスリクエストについてのレスポンス情報を得て、かつ前記プロセッサに完了指示子を持つレスポンス情報を提供するよう構成されるキャッシュコヒーレンスコントローラ
を備える処理クラスタ。 - 請求項11に記載の処理クラスタであって、レスポンス情報は、レスポンスパケット中に提供される処理クラスタ。
- 請求項11〜12のいずれかに記載の処理クラスタであって、レスポンス情報は、状態情報を含む処理クラスタ。
- 請求項12に記載の処理クラスタであって、レスポンス情報は、データを含む処理クラスタ。
- 請求項11〜14のいずれかに記載の処理クラスタであって、前記完了指示子は、前記キャッシュコヒーレンスコントローラからの前記レスポンスが唯一のレスポンスになることを前記第1プロセッサに通知する処理クラスタ。
- 請求項11〜15のいずれかに記載の処理クラスタであって、前記第1プロセッサは、リクエストクラスタ中のリクエストプロセッサである処理クラスタ。
- 請求項11〜16のいずれかに記載の処理クラスタであって、前記完了指示子は、前記キャッシュコヒーレンスコントローラがローカルまたはリモートノードをプローブすることを避けることを可能にする処理クラスタ。
- 請求項1〜7のいずれかに記載の処理クラスタであって、前記レスポンス中に前記完了指示子を識別すると、前記第1プロセッサはソース完了を送る処理クラスタ。
- 請求項18に記載の処理クラスタであって、前記第1プロセッサは、前記ソース完了を前記キャッシュコヒーレンスコントローラに送る処理クラスタ。
- キャッシュコヒーレンスコントローラであって、
キャッシュコヒーレンスコントローラにおけるメモリラインに関連付けられるキャッシュアクセスリクエストをプロセッサ群のクラスタ中のプロセッサから受け取る手段であって、前記プロセッサ群のクラスタは、ポイントツーポイントアーキテクチャにおいて相互接続される、受け取る手段、
前記キャッシュアクセスリクエストについてのレスポンス情報を、前記キャッシュコヒーレンスコントローラに関連付けられるリモートデータキャッシュから得る手段、および
前記プロセッサへ完了指示子を持つレスポンス情報を提供する手段
を備えるキャッシュコヒーレンスコントローラ。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/635,703 US7249224B2 (en) | 2003-08-05 | 2003-08-05 | Methods and apparatus for providing early responses from a remote data cache |
PCT/US2004/024685 WO2005017755A1 (en) | 2003-08-05 | 2004-07-29 | Methods and apparatus for providing early responses from a remote data cache |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007501466A true JP2007501466A (ja) | 2007-01-25 |
Family
ID=34116290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006522635A Pending JP2007501466A (ja) | 2003-08-05 | 2004-07-29 | リモートデータキャッシュから早い応答を提供する方法および装置 |
Country Status (8)
Country | Link |
---|---|
US (1) | US7249224B2 (ja) |
EP (1) | EP1652091B1 (ja) |
JP (1) | JP2007501466A (ja) |
CN (1) | CN1860452A (ja) |
AT (1) | ATE502335T1 (ja) |
CA (1) | CA2533203A1 (ja) |
DE (1) | DE602004031852D1 (ja) |
WO (1) | WO2005017755A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007183915A (ja) * | 2005-12-30 | 2007-07-19 | Internatl Business Mach Corp <Ibm> | マルチプロセッサ・システムのためのディレクトリ・ベースのデータ転送プロトコル(データ一貫性を維持する方法およびシステム) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7216205B2 (en) * | 2004-01-12 | 2007-05-08 | Hewlett-Packard Development Company, L.P. | Cache line ownership transfer in multi-processor computer systems |
US20070079072A1 (en) * | 2005-09-30 | 2007-04-05 | Collier Josh D | Preemptive eviction of cache lines from a directory |
US7680987B1 (en) * | 2006-03-29 | 2010-03-16 | Emc Corporation | Sub-page-granular cache coherency using shared virtual memory mechanism |
JP5338375B2 (ja) * | 2009-02-26 | 2013-11-13 | 富士通株式会社 | 演算処理装置、情報処理装置および演算処理装置の制御方法 |
US8447934B2 (en) * | 2010-06-30 | 2013-05-21 | Advanced Micro Devices, Inc. | Reducing cache probe traffic resulting from false data sharing |
US8656115B2 (en) | 2010-08-20 | 2014-02-18 | Intel Corporation | Extending a cache coherency snoop broadcast protocol with directory information |
KR101975288B1 (ko) * | 2012-06-15 | 2019-05-07 | 삼성전자 주식회사 | 멀티 클러스터 프로세싱 시스템 및 그 구동 방법 |
JP6955648B2 (ja) | 2015-09-01 | 2021-10-27 | ファースト ウェーブ バイオ インコーポレイテッド | 異常炎症反応に関連する状態を処置するための方法および組成物 |
US9792210B2 (en) * | 2015-12-22 | 2017-10-17 | Advanced Micro Devices, Inc. | Region probe filter for distributed memory system |
US10936496B2 (en) | 2019-06-07 | 2021-03-02 | Micron Technology, Inc. | Managing collisions in a non-volatile memory system with a coherency checker |
US10980756B1 (en) | 2020-03-16 | 2021-04-20 | First Wave Bio, Inc. | Methods of treatment |
Family Cites Families (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5524212A (en) * | 1992-04-27 | 1996-06-04 | University Of Washington | Multiprocessor system with write generate method for updating cache |
US5751995A (en) * | 1994-01-04 | 1998-05-12 | Intel Corporation | Apparatus and method of maintaining processor ordering in a multiprocessor system which includes one or more processors that execute instructions speculatively |
US5778437A (en) * | 1995-09-25 | 1998-07-07 | International Business Machines Corporation | Invalidation bus optimization for multiprocessors using directory-based cache coherence protocols in which an address of a line to be modified is placed on the invalidation bus simultaneously with sending a modify request to the directory |
US5778438A (en) * | 1995-12-06 | 1998-07-07 | Intel Corporation | Method and apparatus for maintaining cache coherency in a computer system with a highly pipelined bus and multiple conflicting snoop requests |
US5887138A (en) * | 1996-07-01 | 1999-03-23 | Sun Microsystems, Inc. | Multiprocessing computer system employing local and global address spaces and COMA and NUMA access modes |
US6049847A (en) * | 1996-09-16 | 2000-04-11 | Corollary, Inc. | System and method for maintaining memory coherency in a computer system having multiple system buses |
US5950228A (en) * | 1997-02-03 | 1999-09-07 | Digital Equipment Corporation | Variable-grained memory sharing for clusters of symmetric multi-processors using private and shared state tables |
US6658526B2 (en) * | 1997-03-12 | 2003-12-02 | Storage Technology Corporation | Network attached virtual data storage subsystem |
US6253292B1 (en) * | 1997-08-22 | 2001-06-26 | Seong Tae Jhang | Distributed shared memory multiprocessor system based on a unidirectional ring bus using a snooping scheme |
US6085295A (en) * | 1997-10-20 | 2000-07-04 | International Business Machines Corporation | Method of maintaining data coherency in a computer system having a plurality of interconnected nodes |
US6108737A (en) * | 1997-10-24 | 2000-08-22 | Compaq Computer Corporation | Method and apparatus for reducing latency of inter-reference ordering in a multiprocessor system |
US6014709A (en) * | 1997-11-05 | 2000-01-11 | Unisys Corporation | Message flow protocol for avoiding deadlocks |
US6108797A (en) * | 1997-12-11 | 2000-08-22 | Winbond Electronics Corp. | Method and system for loading microprograms in partially defective memory |
US6480927B1 (en) * | 1997-12-31 | 2002-11-12 | Unisys Corporation | High-performance modular memory system with crossbar connections |
US6631448B2 (en) * | 1998-03-12 | 2003-10-07 | Fujitsu Limited | Cache coherence unit for interconnecting multiprocessor nodes having pipelined snoopy protocol |
US6122715A (en) * | 1998-03-31 | 2000-09-19 | Intel Corporation | Method and system for optimizing write combining performance in a shared buffer structure |
US6052769A (en) * | 1998-03-31 | 2000-04-18 | Intel Corporation | Method and apparatus for moving select non-contiguous bytes of packed data in a single instruction |
US6173393B1 (en) * | 1998-03-31 | 2001-01-09 | Intel Corporation | System for writing select non-contiguous bytes of data with single instruction having operand identifying byte mask corresponding to respective blocks of packed data |
US6205520B1 (en) * | 1998-03-31 | 2001-03-20 | Intel Corporation | Method and apparatus for implementing non-temporal stores |
US6490661B1 (en) * | 1998-12-21 | 2002-12-03 | Advanced Micro Devices, Inc. | Maintaining cache coherency during a memory read operation in a multiprocessing computer system |
US6370621B1 (en) * | 1998-12-21 | 2002-04-09 | Advanced Micro Devices, Inc. | Memory cancel response optionally cancelling memory controller's providing of data in response to a read operation |
US6189078B1 (en) * | 1998-12-22 | 2001-02-13 | Unisys Corporation | System and method for increasing data transfer throughput for cache purge transactions using multiple data response indicators to maintain processor consistency |
US6167492A (en) * | 1998-12-23 | 2000-12-26 | Advanced Micro Devices, Inc. | Circuit and method for maintaining order of memory access requests initiated by devices coupled to a multiprocessor system |
US6374331B1 (en) * | 1998-12-30 | 2002-04-16 | Hewlett-Packard Company | Distributed directory cache coherence multi-processor computer architecture |
US6665767B1 (en) * | 1999-07-15 | 2003-12-16 | Texas Instruments Incorporated | Programmer initiated cache block operations |
US6343347B1 (en) * | 1999-08-04 | 2002-01-29 | International Business Machines Corporation | Multiprocessor system bus with cache state and LRU snoop responses for read/castout (RCO) address transaction |
US20020053004A1 (en) * | 1999-11-19 | 2002-05-02 | Fong Pong | Asynchronous cache coherence architecture in a shared memory multiprocessor with point-to-point links |
US6636906B1 (en) * | 2000-04-28 | 2003-10-21 | Hewlett-Packard Development Company, L.P. | Apparatus and method for ensuring forward progress in coherent I/O systems |
US6738868B2 (en) * | 2000-06-10 | 2004-05-18 | Hewlett-Packard Development Company, L.P. | System for minimizing directory information in scalable multiprocessor systems with logically independent input/output nodes |
US6622217B2 (en) * | 2000-06-10 | 2003-09-16 | Hewlett-Packard Development Company, L.P. | Cache coherence protocol engine system and method for processing memory transaction in distinct address subsets during interleaved time periods in a multiprocessor system |
US6640287B2 (en) * | 2000-06-10 | 2003-10-28 | Hewlett-Packard Development Company, L.P. | Scalable multiprocessor system and cache coherence method incorporating invalid-to-dirty requests |
US6751721B1 (en) * | 2000-08-31 | 2004-06-15 | Hewlett-Packard Development Company, L.P. | Broadcast invalidate scheme |
US6839808B2 (en) * | 2001-07-06 | 2005-01-04 | Juniper Networks, Inc. | Processing cluster having multiple compute engines and shared tier one caches |
US6973543B1 (en) * | 2001-07-12 | 2005-12-06 | Advanced Micro Devices, Inc. | Partial directory cache for reducing probe traffic in multiprocessor systems |
US6976131B2 (en) * | 2002-08-23 | 2005-12-13 | Intel Corporation | Method and apparatus for shared cache coherency for a chip multiprocessor or multiprocessor system |
US7003633B2 (en) * | 2002-11-04 | 2006-02-21 | Newisys, Inc. | Methods and apparatus for managing probe requests |
US6925536B2 (en) * | 2002-11-05 | 2005-08-02 | Newisys, Inc. | Cache coherence directory eviction mechanisms for unmodified copies of memory lines in multiprocessor systems |
US7464227B2 (en) * | 2002-12-10 | 2008-12-09 | Intel Corporation | Method and apparatus for supporting opportunistic sharing in coherent multiprocessors |
US7162589B2 (en) * | 2002-12-16 | 2007-01-09 | Newisys, Inc. | Methods and apparatus for canceling a memory data fetch |
US6986002B2 (en) * | 2002-12-17 | 2006-01-10 | International Business Machines Corporation | Adaptive shared data interventions in coupled broadcast engines |
US7130969B2 (en) * | 2002-12-19 | 2006-10-31 | Intel Corporation | Hierarchical directories for cache coherency in a multiprocessor system |
US7334089B2 (en) | 2003-05-20 | 2008-02-19 | Newisys, Inc. | Methods and apparatus for providing cache state information |
-
2003
- 2003-08-05 US US10/635,703 patent/US7249224B2/en not_active Expired - Fee Related
-
2004
- 2004-07-29 DE DE602004031852T patent/DE602004031852D1/de not_active Expired - Lifetime
- 2004-07-29 AT AT04757398T patent/ATE502335T1/de not_active IP Right Cessation
- 2004-07-29 CN CNA2004800285759A patent/CN1860452A/zh active Pending
- 2004-07-29 JP JP2006522635A patent/JP2007501466A/ja active Pending
- 2004-07-29 CA CA002533203A patent/CA2533203A1/en not_active Abandoned
- 2004-07-29 WO PCT/US2004/024685 patent/WO2005017755A1/en active Application Filing
- 2004-07-29 EP EP04757398A patent/EP1652091B1/en not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007183915A (ja) * | 2005-12-30 | 2007-07-19 | Internatl Business Mach Corp <Ibm> | マルチプロセッサ・システムのためのディレクトリ・ベースのデータ転送プロトコル(データ一貫性を維持する方法およびシステム) |
Also Published As
Publication number | Publication date |
---|---|
WO2005017755A1 (en) | 2005-02-24 |
CN1860452A (zh) | 2006-11-08 |
EP1652091B1 (en) | 2011-03-16 |
US7249224B2 (en) | 2007-07-24 |
EP1652091A1 (en) | 2006-05-03 |
EP1652091A4 (en) | 2008-10-29 |
CA2533203A1 (en) | 2005-02-24 |
ATE502335T1 (de) | 2011-04-15 |
DE602004031852D1 (de) | 2011-04-28 |
US20050033924A1 (en) | 2005-02-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7334089B2 (en) | Methods and apparatus for providing cache state information | |
US7296121B2 (en) | Reducing probe traffic in multiprocessor systems | |
US7024521B2 (en) | Managing sparse directory evictions in multiprocessor systems via memory locking | |
US6920532B2 (en) | Cache coherence directory eviction mechanisms for modified copies of memory lines in multiprocessor systems | |
US6934814B2 (en) | Cache coherence directory eviction mechanisms in multiprocessor systems which maintain transaction ordering | |
US7003633B2 (en) | Methods and apparatus for managing probe requests | |
US6925536B2 (en) | Cache coherence directory eviction mechanisms for unmodified copies of memory lines in multiprocessor systems | |
EP1561162B1 (en) | Methods and apparatus for multiple cluster locking | |
US20030225978A1 (en) | Methods and apparatus for speculative probing of a remote cluster | |
US7103725B2 (en) | Methods and apparatus for speculative probing with early completion and delayed request | |
US7272688B1 (en) | Methods and apparatus for providing cache state information | |
US20030182509A1 (en) | Methods and apparatus for speculative probing at a request cluster | |
EP1652091B1 (en) | Methods and apparatus for providing early responses from a remote data cache | |
US20030182508A1 (en) | Methods and apparatus for speculative probing with early completion and early request | |
US20030225979A1 (en) | Methods and apparatus for speculative probing of a remote cluster | |
US7337279B2 (en) | Methods and apparatus for sending targeted probes | |
US7103726B2 (en) | Methods and apparatus for managing probe requests | |
US7346744B1 (en) | Methods and apparatus for maintaining remote cluster state information | |
US20040117559A1 (en) | Methods and apparatus for canceling a memory data fetch |