JP2002533812A - コヒーレンシ維持のための柔軟なプローブ/プローブ応答経路制御 - Google Patents

コヒーレンシ維持のための柔軟なプローブ/プローブ応答経路制御

Info

Publication number
JP2002533812A
JP2002533812A JP2000590061A JP2000590061A JP2002533812A JP 2002533812 A JP2002533812 A JP 2002533812A JP 2000590061 A JP2000590061 A JP 2000590061A JP 2000590061 A JP2000590061 A JP 2000590061A JP 2002533812 A JP2002533812 A JP 2002533812A
Authority
JP
Japan
Prior art keywords
node
probe
packet
response
transaction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2000590061A
Other languages
English (en)
Other versions
JP4712974B2 (ja
JP2002533812A5 (ja
Inventor
ケラー,ジェイムズ・ビィ
ギューリック,デイル・イー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2002533812A publication Critical patent/JP2002533812A/ja
Publication of JP2002533812A5 publication Critical patent/JP2002533812A5/ja
Application granted granted Critical
Publication of JP4712974B2 publication Critical patent/JP4712974B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • 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
    • 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
    • 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

Landscapes

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

Abstract

(57)【要約】 コンピュータシステム(10)は、複数の処理ノード(12A−12D)を含むことができ、そのうち1つ以上の分散メモリシステムを形成し得る別々のメモリ(14A−14D)に結合されることができる。処理ノード(12A−12D)はキャッシュ(90、94)を含むことができ、コンピュータシステム(10)はキャッシュ(90、94)と分散メモリシステムとの間のコヒーレンシを維持する。特に、コンピュータシステム(10)は柔軟なプローブコマンド/応答経路制御方式を実現化し得る。この方式は、プローブ応答を受信するための受信ノード(12A;12B;12C;12D)を識別するプローブコマンド内での表示を用い得る。たとえば、トランザクションのターゲットまたはソースはトランザクションに対応するプローブ応答を受取るべきことを表示するプローブコマンドを含み得る。

Description

【発明の詳細な説明】
【0001】
【発明の背景】
1.技術分野 この発明は広くはコンピュータシステムに関し、より特定的には、マルチプロ
セッシング演算環境を達成するためのメッセージ通信方式に関する。
【0002】 2.関連技術分野の背景 一般的には、パーソナルコンピュータ(PC)およびその他の種類のコンピュ
ータシステムは、メモリにアクセスするために共用バスシステムを中心に設計さ
れてきた。1つ以上のプロセッサおよび1つ以上の入力/出力(I/O)装置が
、共用バスを介してメモリに結合される。I/O装置は、共用バスとI/O装置
との間の情報の転送を管理するI/Oブリッジを介して共用バスに結合される場
合もある一方、プロセッサは典型的には、直接共用バスに結合されるか、または
キャッシュ階層構造を介して共用バスに結合される。
【0003】 残念ながら、共用バスシステムはいくつかの欠点を有する。たとえば、共用バ
スには多数の装置が装着されることから、バスは典型的には比較的低い周波数で
動作される。多数の装着物は、バス上で信号を駆動する装置に容量的な高負荷を
もたらし、多数の装着点は、比較的複雑な高周波数に対する伝送ラインモデルを
もたらす。したがって、周波数は低く留められ、共用バスで使用できる帯域幅も
同様に比較的低い。低帯域幅は共用バスに付加的な装置を装着するのに障壁にな
り得るが、これは使用できる帯域幅によって性能が制限されるおそれがあるため
である。
【0004】 共用バスシステムの他の欠点は、より多くの装置に対するスケーラビリティの
欠如である。上述のように、帯域幅が固定される(そして、もし付加的な装置の
追加によってバスの動作可能周波数が減じられると、減少し得る)。バスに(直
接的にまたは間接的に)装着された装置の帯域幅要件が、一旦バスの利用可能な
帯域幅を超えると、装置はバスへのアクセスを試みたときにしばしばストールし
得る。全体的な性能が減じられるであろう。
【0005】 上述の問題のうち1つまたはいくつかには、分散メモリシステムを用いて対処
し得る。分散メモリシステムを用いるコンピュータシステムは、複数のノードを
含む。2つ以上のノードがメモリに接続され、それらのノードは何らかの好適な
相互接続を用いて相互接続される。たとえば、ノードの各々は専用ラインを用い
て他のノードに互いに接続されることができる。これに代えて、ノードの各々は
固定された数の他のノードに接続され、トランザクションは第1のノードから1
つ以上の中間ノードを介して、第1のノードに直接接続されていない第2のノー
ドに経路制御されてもよい。メモリアドレス空間は、各々のノードのメモリにわ
たって割当てられる。
【0006】 ノードはさらに、1つ以上のプロセッサを含み得る。プロセッサは典型的には
、メモリから読出したデータのキャッシュブロックをストアするキャッシュを含
む。さらに、ノードはプロセッサの外部の1つ以上のキャッシュを含み得る。プ
ロセッサおよび/またはノードは、他のノードからアクセスされるキャッシュブ
ロックをストアし得るために、ノード内のコヒーレンシを維持するための機構が
望まれる。
【0007】
【発明の開示】
上に概略を述べた問題は、ここに説明するコンピュータシステムによってほと
んどが解決される。このコンピュータシステムは多数の処理ノードを含むことが
でき、そのうち1つ以上は分散メモリシステムを形成し得る別々のメモリに結合
し得る。処理ノードはキャッシュを含むことができ、コンピュータシステムは、
キャッシュと分散メモリシステムとの間のコヒーレンシを維持し得る。特に、こ
のコンピュータシステムは柔軟なプローブコマンド/応答経路制御方式を実現化
し得る。
【0008】 一実施例においては、この方式はプローブコマンド内の表示を用い、これはプ
ローブ応答を受信する受信ノードを識別する。一般的にはプローブコマンドとは
、キャッシュブロックがノード内にストアされているか判断するためのそのノー
ドへの要求であり、かつ、キャッシュブロックがそのノードにストアされていた
場合にそのノードが行なうべき動作の表示である。プローブ応答は、動作が行な
われたことを表示し、かつ、キャッシュブロックがノードによって変更されてい
た場合にはデータの送信を含み得る。送られたコマンドに依存してプローブ応答
を異なった受信ノードに経路制御することへ柔軟性を与えることにより、コヒー
レンシの維持を比較的効率的な態様で(たとえば最少の数のパケット送信を処理
ノード間で用いて)行ない得る一方で、それでもコヒーレンシが維持されること
を確実にする。
【0009】 たとえば、ターゲットまたはトランザクションのソースがトランザクションに
対応するプローブ応答を受取るべきことを表示するプローブコマンドを含み得る
。プローブコマンドは、トランザクションのソースを読出トランザクションに対
する受信ノードとして特定し得る(それによりダーティデータをストアするノー
ドからダーティデータがソースノードに引渡される)。一方で、(データがトラ
ンザクションのターゲットノードでメモリ内に更新される)書込トランザクショ
ンに対しては、プローブコマンドはトランザクションのターゲットを受信ノード
として特定し得る。このようにして、ターゲットはいつ書込データをメモリにコ
ミットするか判断し、書込データとマージされるべきいかなるダーティデータを
も受取ることができる。
【0010】 概略的には、コンピュータシステムが企図される。コンピュータシステムは、
第1の処理ノードと第2の処理ノードとを含み得る。第1の処理ノードは、要求
を送信することによりトランザクションを開始するよう構成し得る。第2の処理
ノードは、第1の処理ノードからの要求を受取るよう結合されて、要求に応答し
てプローブを生成するよう構成し得る。プローブは、プローブに対する応答を受
けるための受信ノードを指定する表示を含み得る。さらに、第2の処理ノードは
トランザクションのタイプに応答して、表示を生成するよう構成し得る。
【0011】 コンピュータシステム内でのコヒーレンシを維持するための方法もまた企図さ
れる。ソースノードからの要求はターゲットノードに送信される。プローブは要
求に応答してターゲットノード内で生成される。プローブ内の表示を介して、プ
ローブに対する応答のための受信ノードが指定される。プローブに対するプロー
ブ応答は、受信ノードに経路制御される。
【0012】 この発明の他の目的と利点とは、以下の詳細な説明を読み、添付の図面を参照
することにより、より明らかとなるであろう。
【0013】 この発明はさまざまな変形と代替形に対処するものであるが、その特定の実施
例を図面において例示の目的で示し、以下に詳述する。しかしながら、図面とそ
の詳細な説明とは開示される発明を特定の形に限定することを意図せず、反対に
、すべての変形、等価物、および代替例は前掲の特許請求の範囲に規定されるこ
の発明の精神および範囲に入ることを意図する。
【0014】
【発明の実施の形態】
例示的なコンピュータシステムの実施例 図1は、マルチプロセッシングコンピュータシステム10の一実施例を示す。
他の実施例が可能であり企図される。図1の実施例においては、コンピュータシ
ステム10はいくつかの処理ノード12A、12B、12C、および12Dを含
む。処理ノードの各々は、処理ノード12A−12Dにそれぞれ含まれるメモリ
コントローラ16A−16Dを介して、それぞれのメモリ14A−14Dに結合
される。さらに、処理ノード12A−12Dは、処理ノード12A−12Dの間
の通信のために用いるインターフェイスロジックを含む。たとえば、処理ノード
12Aは、処理ノード12Bと通信するためのインターフェイスロジック18A
と、処理ノード12Cと通信するためのインターフェイスロジック18Bと、さ
らに別の処理ノード(図示せず)と通信するための第3のインターフェイスロジ
ック18Cを含む。同様に、処理ノード12Bはインターフェイスロジック18
D、18E、および18Fを含み、処理ノード12Cはインターフェイスロジッ
ク18G、18H、および18Iを含み、処理ノード12Dはインターフェイス
ロジック18J、18K、および18Lを含む。処理ノード12Dは、インター
フェイスロジック18Lを介して結合されてI/Oブリッジ20と通信する。他
の処理ノードは同様の様式で他のI/Oブリッジと通信し得る。I/Oブリッジ
20はI/Oバス22に結合される。
【0015】 処理ノード12A−12Dは、ノード通信相互処理のためのパケットベースの
リンクを実現化する。この実施例においては、リンクは単方向ラインの組として
実現化される(たとえば、ライン24Aはパケットを処理ノード12Aから処理
ノード12Bへ送信するために用いられ、ライン24Bはパケットを処理ノード
12Bから処理ノード12Aへ送信するために用いられる)。ライン24C−2
4Hの他の組は、図1に示すようにパケットを他の処理ノード間で通信するため
に用いられる。リンクは、処理ノード間の通信のためにキャッシュコヒーレント
様式で動作するか、または処理ノードとI/Oブリッジとの間の通信のために非
コヒーレント様式で動作し得る。一方の処理ノードから他方へ送信されるべきパ
ケットは、1つ以上の中間ノードを通過し得ることに留意されたい。たとえば、
処理ノード12Aから処理ノード12Dに送信されるパケットは、図1に示すよ
うに、処理ノード12Bまたは処理ノード12Cのいずれかを通過し得る。いか
なる好適な経路制御アルゴリズムをも用い得る。コンピュータシステム10の他
の実施例は、図1に示す実施例よりもより多いかまたはより少ない処理ノードを
含み得る。
【0016】 処理ノード12A−12Dは、メモリコントローラとインターフェイスロジッ
クに加えて、1つ以上のプロセッサを含み得る。概略的には、処理ノードは少な
くとも1つのプロセッサを含み、選択により、メモリおよび所望の他のロジック
との間で通信するためのメモリコントローラを含む。この開示では「ノード」と
いう用語も使用し得る。ノードという用語は、「処理ノード」を意味することを
意図する。
【0017】 メモリ14A−14Dは、何らかの好適なメモリ装置を含み得る。たとえば、
メモリ14A−14Dは、1つ以上のRAMBUS DRAM(RDRAM)、
シンクロナスDRAM(SDRAM)、スタティックRAMなどを含み得る。コ
ンピュータシステム10のアドレス空間は、メモリ14A−14Dの間で分割さ
れる。処理ノード12A−12Dの各々はメモリマップを含むことができ、該メ
モリマップを用いて、どのアドレスがどのメモリにマッピングされているかを判
断し、よって、ある特定のアドレスに対するメモリ要求がどの処理ノード12A
−12Dに経路制御されるべきかを判断する。一実施例においては、コンピュー
タシステム10内のアドレスに対するコヒーレンシ点は、アドレスに対応するバ
イトをストアしているメモリに結合された、メモリコントローラ16A−16D
である。言い換えると、メモリコントローラ16A−16Dは、対応するメモリ
14A−14Dへのメモリアクセスの各々を、キャッシュコヒーレントな様式で
起こることを確実にすることを担当している。メモリコントローラ16A−16
Dは、メモリ14A−14Dにインターフェイスするための制御回路を含み得る
。さらに、メモリコントローラ16A−16Dは、メモリ要求を待ち行列として
管理するための、要求キューを含み得る。
【0018】 一般的には、インターフェイスロジック18A−18Lは、リンクからのパケ
ットを受取り、かつリンクに送信されるべきパケットをバッファするための、さ
まざまなバッファを含み得る。コンピュータシステム10は、パケットを転送す
るための好適なフロー制御であればいずれでも用い得る。たとえば一実施例にお
いては、インターフェイスロジック18の各々は、そのインターフェイスロジッ
クが接続されたリンクの他端のレシーバ内に、いくつかの各種のバッファのカウ
ントをストアする。インターフェイスロジックは、受信インターフェイスロジッ
クがパケットをストアするフリーのバッファを有さない限り、パケットを送信し
ない。パケットを次に経路制御することにより受信バッファが解放されると、受
信インターフェイスロジックは送信インターフェイスロジックにメッセージを送
り、バッファが解放されたことを示す。そのような機構は、「クーポンに基づく
」システムと呼べる。
【0019】 次に図2は、処理ノード12Aおよび12Bのブロック図を示し、それらの間
のリンクの1実施例を詳細に例示する。。図2の実施例においては、ライン24
Aは、クロックライン24AAと、制御ライン24ABと、制御/アドレス/デ
ータバス24ACとを含む。同様に、ライン24Bは、クロックライン24BA
と、制御ライン24BBと、制御/アドレス/データバス24BCとを含む。
【0020】 クロックラインは、制御ラインおよび制御/アドレス/データバスに対するサ
ンプルポイントを示すクロック信号を送信する。特定の一実施例においては、デ
ータ/制御ビットはクロック信号のエッジの各々(すなわち立上がりエッジおよ
び立下がりエッジ)で送信される。したがって、クロックサイクルごとに、ライ
ンごとに2つのデータビットを送信し得る。ラインごとに1ビットを送信するた
めに使用される時間は、ここでは「ビット時間」と呼ぶ。上述の実施例は、クロ
ックサイクルごとに2つのビット時間を含む。パケットは2つ以上のビット時間
で送信し得る。制御/アドレス/データバスの幅に依存して、多数のクロックラ
インを用い得る。たとえば32ビット制御/アドレス/データバスに対しては2
つのクロックラインを用い得る(制御/アドレス/データバスの半分では一方の
クロックラインが参照され、残りの半分の制御/アドレス/データバスと制御ラ
インとでは他方のクロックラインが参照される)。一般的には、「パケット」と
は2つの処理ノード12A−12Dの間の通信である。1つ以上のパケットが「
トランザクション」を形成し得るが、これは一方の処理ノードから他方への情報
の転送である。トランザクションを形成するパケットは、ソースノード(転送を
要求する開始するノード)からのターゲットノード(トランザクションが向けら
れるノード)へのトランザクションを開始する要求パケットと、コヒーレンシを
維持するために他の処理ノード間で送信されるパケットと、データパケットと、
トランザクションを終了させる肯定応答パケットとを含み得る。
【0021】 制御ラインは、制御/アドレス/データバスに送信されたデータが、ビット時
間の制御パケットか、またはビット時間のデータパケットであるかを示す。制御
ラインはアサートされて制御パケットを示し、デアサートされてデータパケット
を示す。ある制御パケットは、後にデータパケットが続くことを示す。データパ
ケットは、対応する制御パケットのすぐ後に続き得る。一実施例においては、他
の制御パケットがデータパケットの送信に割込むおそれがある。そのような割込
は、データパケットの送信の間に制御ラインをいくつかのビット時間アサートし
、かつ制御ラインがアサートされている間にビット時間の制御パケットを送信す
ることにより行なわれる可能性がある。データパケットに割込む制御パケットは
、データパケットが後に続くことを示さないおそれがある。
【0022】 制御/アドレス/データバスは、データ/制御ビットを送信するための1組の
ラインを含む。一実施例においては、制御/アドレス/データバスは、8、16
、または32のラインを含み得る。処理ノードまたはI/Oブリッジの各々は、
設計選択にしたがってサポートされる数のラインのうちのいずれかを用い得る。
他の実施例は、所望により他のサイズの制御/アドレス/データバスをサポート
し得る。
【0023】 一実施例によると、コマンド/アドレス/データバスラインおよびクロックラ
インは、反転データを担持し得る(すなわち、論理1はライン上の低電圧として
表わされ、論理0が高電圧として表わされる)。これに代えて、これらのライン
は非反転データを担持してもよい(論理1はライン上の高電圧として表わされ、
論理0は低電圧として表わされる)。
【0024】 図3から図6は、コンピュータシステム10の一実施例に従って用いられる、
例示的なパケットを示す。図3から図5は制御パケットを示し、図6はデータパ
ケットを示す。他の実施例は、所望により異なったパケット定義を用い得る。パ
ケットの各々は、「ビット時間」の見出しの下に列挙される一連のビット時間で
示される。パケットのビット時間は、リストされたビット時間順序に従って送信
される。図3から図6は、8ビット制御/アドレス/データバス実現化のための
パケットを示す。したがって、ビット時間の各々は、7から0まで番号が付与さ
れた8つのビットを含む。図中、いずれの値も付与されていないビットは、所与
のパケットのために予約されているか、またはパケット特定情報を送信するため
に用いられるかのいずれかであり得る。
【0025】 図3は情報パケット(infoパケット)30を示す。情報パケット30は、8ビ
ットリンク上の2つのビット時間を含む。この実施例においては、コマンド符号
化はビット時間1の間に送信され、かつ6ビットを含む。図4、および図5に示
す他方の制御パケットの各々は、ビット時間1の間に同じビット位置においてコ
マンド符号化を含む。メッセージがメモリアドレスを含まないときに、情報パケ
ット30を用いてこのメッセージを処理ノード間で送信し得る。
【0026】 図4はアドレスパケット(addressパケット)32を示す。アドレスパケット
32は、8ビットリンク上の8つのビット時間を含む。コマンド符号化は、宛先
ノード番号の一部と併せて、ビット時間1の間に送信される。宛先ノード番号の
残りとソースノード番号とは、ビット時間2の間に送信される。ノード番号はコ
ンピュータシステム10内の処理ノード12A−12Dのうちの1つを明確に識
別し、かつ用いられてパケットをコンピュータシステム10を介して経路制御す
る。さらに、パケットのソースは、ビット時間2および3の間に送信されるソー
スタグを割当て得る。ソースタグは、ソースノードによって開始される特定のト
ランザクションに対応するパケットを識別する(すなわち、特定のトランザクシ
ョンに対応するパケットの各々は、同一のソースタグを含む)。ビット時間4か
ら8までを用いて、トランザクションによって影響されたメモリアドレスを送信
する。アドレスパケット32は、トランザクション(たとえば、読出または書込
トランザクション)を開始するのに用いられるだけでなく、トランザクションを
実行する過程において、トランザクションによって影響を受けるメモリアドレス
を担持するコマンドについて、コマンドを送信し得る。
【0027】 図5は、応答パケット(responseパケット)34を示す。応答パケット34は
、コマンド符号化、宛先ノード番号、ソースノード番号、およびアドレスパケッ
ト32と同様のソースタグを含む。さまざまな種類の応答パケットは付加的な情
報を含み得る。たとえば、読出応答パケットは、後に続くデータパケットで提供
される読出データの量を示し得る。プローブ応答は、要求されたキャッシュブロ
ックに対してヒットが検出されたかどうかを示し得る。一般的に、応答パケット
34は、トランザクションを行なう間にトランザクションによって影響されるメ
モリアドレスの送信を必要としないコマンドに対して用いられる。さらに、応答
パケット34を用いて肯定応答パケットを送信してトランザクションを終了させ
ることができる。
【0028】 図6は、データパケット(dataパケット)36を示す。データパケット36は
、図6の実施例において、8ビットリンク上の8つのビット時間を含む。データ
パケット36は、送信されるデータの量に依存して、異なった数のビット時間を
含み得る。たとえば、一実施例においてはキャッシュブロックは64バイトを含
み、したがって8ビットリンク上の64のビット時間を含む。他の実施例では、
キャッシュブロックのサイズを所望により別に定義し得る。さらに、キャッシュ
不可能な読出および書込に対しては、キャッシュブロックサイズよりも小さなサ
イズでデータを送信し得る。キャッシュブロックサイズより小さなデータを送信
するためのデータパケットは、より少ないビット時間を用いる。
【0029】 図3から図6は、8ビットリンクのためのパケットを示す。16および32ビ
ットリンクのためのパケットは、図3から図6に示す連続的なビット時間を連結
することにより形成し得る。たとえば、16ビットリンク上のパケットのビット
時間1は、8ビットリンク上のビット時間1および2の間に送信される情報を含
み得る。同様に、32ビットリンク上のパケットのビット時間1は、8ビットリ
ンク上のビット時間1から4までの間に送信される情報を含み得る。以下の式(
1)および式(2)は、8ビットリンクによるビット時間における、16ビット
リンクのビット時間1および32ビットリンクのビット時間1の構成を示す。
【0030】
【数1】
【0031】 図7は、コンピュータシステム10内のリンクの1つの例示的な実施例によっ
て用いられるコマンドを示すテーブル38を示す。他の実施例も可能であり企図
される。テーブル38は、コマンドの各々に割当てられたコマンド符号化を示す
コマンド符号化列、コマンドの名前を示すコマンド列、およびどのコマンドパケ
ット30−34がそのコマンドに対して用いられるかを示すパケットタイプ列を
含む。
【0032】 読出トランザクションは、ReadSized,RdBlk,RdBlkSまたはRdBlkModのコマン
ドのうち、1つを用いて開始される。サイズ指定された読出コマンドであるRead
Sizedは、キャッシュ不可能な読出のために、またはサイズの合ったキャッシュ
ブロック以外のデータの読出のために用いられる。読出されるべきデータ量は、
ReadSizedコマンドパケット内に符号化される。キャッシュブロックの読出には
、以下の場合以外にRdBlkコマンドを用いることができる。すなわち、(i)キ
ャッシュブロックの書込可能なコピーを所望である場合。この場合はRdBlkModコ
マンドを用い得る。または(ii)キャッシュブロックのコピーを所望するが、ブ
ロックを変更する意図があるとは分らない場合。この場合はRdBlkS コマンドを
用いることができる。RdBlkSコマンドを用いて、ある種のコヒーレントな方式(
たとえばディレクトリに基づくコヒーレントな方式)をより効率化できる。一般
的に、適切な読出コマンドはソースから送信されて、キャッシュブロックに対応
するメモリを有するターゲットノードへの読出トランザクションを開始する。タ
ーゲットノード内のメモリコントローラは、システム内の他のノードにProbe/Sr
cコマンドを送信して、これらのノード内のキャッシュブロックの状態を変化さ
せること、およびキャッシュブロックの更新されたコピーを含むノードにキャッ
シュブロックをソースノードに送らせることにより、コヒーレンシを維持する。
Probe/Srcコマンドを受取ったノードの各々は、ProbeRespパケットをソースノー
ドに送信する。プローブされたノードが読出データの更新されたコピー(すなわ
ちダーティデータ)を有していれば、そのノードはRdResponseパケットおよびダ
ーティデータを送信する。ダーティデータを送信するノードはまた、ターゲット
ノードによる要求された読出データの送信をキャンセルしようと試みて、ターゲ
ットノードにMemCancelパケットをも送信し得る。さらに、ターゲットノード内
のメモリコントローラは、RdResponseパケットとその後に続くデータパケット内
のデータとを用いて要求された読出データを送信する。ソースノードがプローブ
されたノードからRdResponseパケットを受取れば、その読出されたデータが用い
られる。そうでなければ、ターゲットノードからのデータが用いられる。一旦ソ
ースノードにおいてプローブ応答および読出されたデータの各々が受取られると
、ソースノードはトランザクションの終了の肯定応答として、ターゲットノード
にSrcDone応答パケットを送信する。
【0033】 書込トランザクションはWrSizedまたはVicBlkコマンドを用いて開始され、そ
の後に関連のデータパケットが続く。WrSizedコマンドは、キャッシュ不可書込
またはサイズの合わないキャッシュブロックのデータの書込に用いられる。WrSi
zedコマンドに対するコヒーレンシの維持のために、ターゲットノード内のメモ
リコントローラはシステム内の他のノードの各々にProbe/Tgtコマンドを送信す
る。Probe/Tgtコマンドに応答して、プローブされたノードの各々はターゲット
ノードにProbeRespパケットを送信する。もしプローブされたノードがダーティ
データをストアしていれば、プローブされたノードはRdResponseパケットおよび
ダーティデータで応答する。このようにして、WrSizedコマンドによって更新さ
れたキャッシュブロックは、メモリコントローラに返されて、WrSizedコマンド
によって提供されるデータとマージされる。メモリコントローラは、プローブさ
れたノードの各々からプローブ応答を受取ると、ソースノードにTgtDoneパケッ
トを送信してトランザクションの終了の肯定応答を提供する。ソースノードはSr
cDone応答パケットで応答する。
【0034】 ノードによって変更され、かつノード内のキャッシュで置き換えられたヴィク
ティムキャッシュブロックは、VicBlkコマンドを用いてメモリに返される。VicB
lkコマンドに対してはプローブは必要ではない。したがって、ターゲットメモリ
コントローラがビクティムブロックデータをメモリにコミットする準備ができた
とき、ターゲットメモリコントローラはビクティムブロックのソースノードにTg
tDoneパケットを送信する。ソースノードは、データがコミットされるべきこと
を示すSrcDoneパケットか、またはデータが(たとえば介入するプローブに応答
して)VicBlkコマンドの送信とTgtDoneパケットの受信との間で無効化されたこ
とを示すMemCancelパケットのいずれかで応答する。
【0035】 ソースノードにストアされた書込不可能状態のキャッシュブロックへの書込許
可を得るために、ソースノードはChangetoDirtyパケットを送信し得る。Changet
oDirtyコマンドによって開始されるトランザクションは、ターゲットノードがデ
ータを返さないという点を除いて、読出と同様に動作し得る。もしソースノード
がキャッシュブロック全体を更新する意図があるのであれば、ValidateBlkコマ
ンドを用いて、ソースノードによってストアされていないキャッシュブロックへ
の書込許可を得ることができる。そのようなトランザクションに対してはソース
ノードへデータは転送されないが、それ以外では読出トランザクションと同様に
動作する。
【0036】 InterruptBroadcast、InterruptTarget、およびIntrResponseパケットを用い
て、それぞれ割込をブロードキャストし、特定のターゲットノードに割込を送り
、割込に応答し得る。CleanVicBlkコマンドを用いて、(たとえば、ディレクト
リに基づくコヒーレントな方式のために)クリーンなヴィクティムブロックがノ
ードから捨てられたことを伝えることができる。TgtStartコマンドはターゲット
によって用いられて、(たとえば、後のトランザクションの順序付けのために)
トランザクションが開始したことを示す。エラーコマンドを用いて、エラー表示
を送信する。
【0037】 プローブ/プローブ応答経路制御 図8は、プローブパケット40の一実施例のブロック図を示す。異なった態様
でプローブパケットを構成し、代替的な、同様の、または代用の情報を有する他
の実施例も可能であり企図される。プローブパケット40は、図4に示すアドレ
スパケット32の1種である。図8に示すように、プローブパケット40はコマ
ンドフィールド(図8におけるCMD[5:0])、ターゲットノードフィール
ド(図8におけるTgtNode[1:0]およびTgtNode[3:2])、ソースノード
フィールド(図8におけるSrcNode[3:0])、ソースタグフィールド(図8
におけるSrcTag[1:0]およびSrcTag[6:2])、データ移動フィールド(
図8におけるDM)、ネクストステートフィールド(NextState[1:0])、
およびアドレスフィールド(図8におけるビット時間4−8にわたるAddr[39
:0])を含む。
【0038】 コマンドフィールドは符号化されてパケット40をプローブパケットとして識
別する。たとえば、図7に示すProbe/SrcおよびProbe/Tgtに対する符号化を用い
得る。一般的には、トランザクションのターゲットノードはプローブコマンドを
生成して、トランザクションによって影響されるキャッシュブロックのコヒーレ
ンシを維持する。開始されるトランザクションの種類に基づいて、プローブコマ
ンドの組の中の1つがターゲットノードによって選択される。選択されたプロー
ブコマンドは、プローブコマンドに対する応答のための受信ノードを識別する。
多数の使用できる受信ノードのうちの1つに、柔軟にプローブ応答を経路制御す
ることにより、(予め定められた受信ノードにプローブ応答を経路制御すること
とは対照的に)、コヒーレンシの維持は(たとえば、ノード間で送信されるパケ
ットの数の観点から)効率的であって、正確な結果を導く態様で行なうことがで
きる。
【0039】 たとえば、キャッシュブロックをトランザクションのソースノードに転送させ
るトランザクションは、プローブ応答(データを転送する応答を含む)をソース
ノードに向けることにより、コヒーレンシを維持し得る。ソースノードは、他の
ノード(プローブされたノード)の各々からの応答とターゲットノードからの応
答とを待ち、次いでノード内に送信されたキャッシュブロックを確立し、かつタ
ーゲットノードに肯定応答パケットを送信してトランザクションを終了させる。
トランザクションを終了させる前にプローブされたノードからのプローブ応答を
待つことにより、ノードの各々は終了の前にそのトランザクションに対する正し
いコヒーレンシ状態を確立し得る。一方、WrSizedトランザクション(キャッシ
ュブロックに満たない更新をする)は、WrSizedコマンドと関連のデータとをタ
ーゲットノードに送信することにより開始される。ターゲットノードは、ターゲ
ットノードのメモリにデータをコミットするために、ターゲットノードはソース
ノードの代わりにプローブ応答を受信し得る。特に、WrSizedトランザクション
によって更新されたバイトを含むキャッシュブロックがプローブノード内でダー
ティであれば、ターゲットノードはプローブに応答してダーティなデータを受信
し、そのデータをWrSizedコマンドに関連のデータとマージし得る。一旦プロー
ブ応答が受取られると、書込動作によって命令されるコヒーレンシ状態はプロー
ブされたノード内で確立され、書込データはメモリにコミットし得る。したがっ
てこの実施例においては、2つの種類のプローブコマンドがサポートされ、どの
ノードがプローブ応答を受取るべきであるかをプローブされたノードに対して示
す(たとえばソースまたはターゲットノード)。他の実施例は、所望により、付
加的な受信ノードを示す付加的なプローブコマンドをサポートし得る。
【0040】 1つの例示的な実施例においては、ターゲットノード内のメモリコントローラ
は処理されるべき要求のキューからトランザクションを選択することができ、か
つその選択に応答してプローブコマンドを生成し得る。プローブコマンドはコン
ピュータシステム内のプローブされたノードにブロードキャストされることがで
きる。コマンドフィールドは、プローブ応答がターゲットノードまたはソースノ
ードに経路制御されるべきかどうかを示す。たとえば、図7に示すテーブル38
において例示するように、コマンドフィールドのビット0は受信ノードを示し得
る(バイナリ0はソースノードを、バイナリ1はターゲットノードを示す)。タ
ーゲットノードフィールドはトランザクションのターゲットノードを識別し、ソ
ースノードフィールドはトランザクションのソースノードを識別する。プローブ
コマンドもまたターゲットノード内のキャッシュにブロードキャストされ、ター
ゲットノードはプローブ応答を提供し得ることに留意されたい。言い換えると、
ターゲットノードもまたプローブされたノードであり得る。
【0041】 さらに、データ移動フィールド(一実施例においては、たとえば1ビット)を
用いて、プローブされたノード内でキャッシュブロックがダーティであった場合
にプローブに応答してデータが返されるべきかどうかを表示し得る。データ移動
フィールドがいずれの移動も示さなければ(たとえばクリアな状態)、ダーティ
データを持つノードはプローブ応答を宛先指定された受信ノードに戻すが、ダー
ティデータを受信ノードに送信しない。データ移動フィールドが移動を示せば(
たとえばセットされた状態)、ダーティデータを持つノードは、ダーティデータ
を含む読出応答をソースノードに返す。ネクストステートフィールドは、(プロ
ーブされたノードがキャッシュブロックのコピーをストアしている場合)プロー
ブされたノードにおいてキャッシュブロックの次の状態がどうなるかを示す。一
実施例においては、ネクストフィールドの符号化は以下のテーブル1に示すとお
りである。
【0042】 一実施例によると、以下のテーブル2は例示的なトランザクションタイプと対
応のプローブコマンドを示す。
【0043】
【表1】
【0044】 一般的には、「プローブ」または「プローブコマンド」という用語は、プロー
ブノードに対する要求を指し、これによりプローブによって(たとえばアドレス
フィールドを介して)定義されるキャッシュブロックがプローブされたノードに
よってストアされているかどうか判断し、かつプローブされたノードからの所望
の応答を示す。応答は、キャッシュブロックに対する異なったコヒーレンシ状態
を確立すること、および/またはキャッシュブロックを受信ノードに転送するこ
とを含む。プローブされたノードは「プローブ応答」を用いて応答するが、これ
は所望のコヒーレンシ状態変化が行なわれたことを受信ノードに肯定応答する。
プローブ応答は、プローブされたノードがダーティデータをストアしていた場合
、データをも含み得る。
【0045】 図9は、プローブ応答パケット42の一実施例のブロック図を示す。応答パケ
ットを異なった態様で構成し、代替的な、同様の、または代用の情報を有する他
の実施例も可能であり企図される。プローブ応答パケット42は、図5に示す応
答パケット34の1種である。図8に示すプローブパケットと同様に、プローブ
応答パケット42はコマンドフィールド(CMD[5:0])、ソースノードフ
ィールド(SrcNode[3:0])、およびソースタグフィールド(SrcTag[1:
0]およびSrcTag[6:2])を含み得る。さらに、プローブ応答パケット42
は、応答ノードフィールド(図9におけるRespNode[3:2]およびRespNode[
1:0])およびヒット表示(図9におけるHit)を含み得る。
【0046】 プローブされたノードは、プローブパケット40で受信されたアドレスによっ
て識別されたキャッシュブロックに対して、そのキャッシュ内を探索する。キャ
ッシュブロックのコピーを見出すと、プローブされたノードはネクストステート
フィールドにより規定されていることにしたがってキャッシュブロックの状態を
変化させる。さらに、キャッシュがキャッシュブロックのダーティコピーをスト
アしており、かつプローブパケット40のデータ移動フィールドがキャッシュブ
ロックが転送されるべきであることを示すと、プローブされたノードはキャッシ
ュからダーティデータを読出す。
【0047】 プローブされたノードは、プローブ応答パケット42を以下の場合において指
定された受信ノードに経路制御する。すなわち、(i)ダーティデータがない場
合、または(ii)ダーティデータおよびデータ移動フィールドがいずれの移動も
示さない場合。この実施例においてより特定的には、プローブされたノードはプ
ローブパケット40のターゲットノードフィールド(指定された受信ノードがタ
ーゲットノードである場合)か、またはプローブパケット40のソースノードフ
ィールド(指定された受信ノードがソースノードである場合)のいずれかを読出
し、結果として生じるノードIDをプローブ応答パケット42の応答ノードフィ
ールドにストアする。さらに、ヒット表示を用いて、プローブノードがキャッシ
ュブロックのコピーを保持しているかどうかを示す。たとえば、ヒット表示は、
セットされている場合に、プローブされたノードがキャッシュブロックのコピー
を保持していることを示し、そしてクリアされている場合に、プローブされたノ
ードがキャッシュブロックのコピーを保持していないことを示すビットを含み得
る。ヒットビットは、以下の場合にクリアされている。すなわち、(i)プロー
ブされたノード内のキャッシュにおいてキャッシュブロックのコピーが見出され
なかった場合、または(ii)プローブされたノードにおけるキャッシュ内でキャ
ッシュブロックのコピーが見出されたが、プローブコマンドに応答して無効化さ
れていた場合、である。
【0048】 図7のテーブル38に示す一実施例においては、プローブ応答パケット42の
コマンドフィールドはProbRespを示すことができ、さらにプローブ応答がProbe/
Srcコマンドへの応答であるか、またはProbe/Tgtコマンドへの応答であるかをさ
らに示すことができる。より特定的には、コマンドフィールドのビット0はクリ
アされてプローブ応答がProbe/Srcコマンドへの応答であることを示し、セット
されてプローブ応がはProbe/Tgtコマンドへの応答であることを示す。この表示
は受信ノードによって用いられて、プローブ応答が受信ノード内のメモリコント
ローラに経路制御されるべきか(ビット0がセットされている場合)、または受
信ノード内のキャッシュに対するフィル受信ロジックに対して経路制御されるべ
きか(ビット0がクリアされている場合)を判断し得る。
【0049】 図10は、読出応答パケット44の一実施例のブロック図を示す。読出応答パ
ケットを異なった態様で構成し、代替的な、同様の、または代用の情報を有する
他の実施例も可能であり企図される。応答パケット44は図5に示す応答パケッ
ト34の1種である。図9に示すプローブ応答パケットと同様に、読出応答パケ
ット44は、コマンドフィールド(CMD[5:0])、ソースノードフィール
ド(SrcNode[3:0])、ソースタグフィールド(SrcTag[1:0]およびSrc
Tag[6:2])、および応答ノードフィールド(RespNode[3:2]およびRes
pNode[1:0])を含む。さらに、読出応答パケット44は、カウントフィー
ルド(図10におけるCount)、タイプフィールド(図10におけるType)およ
びプローブフィールド(図10におけるPrb)を含む。
【0050】 データ移動が要求されることを示すプローブコマンドに対してダーティデータ
のヒットを検出した、プローブされたノードは、読出パケット44を用いてプロ
ーブ応答およびダーティデータを送信し得る。カウントフィールドを用いて送信
されるデータの量を示し、タイプフィールドはカウントがバイトまたはクワッド
ワード(8バイト)で測定されるかを示す。プローブに対して応答するキャッシ
ュブロック転送に対しては、カウントフィールドは8(バイナリ「111」とし
て符号化される)を示し、タイプフィールドはクワッドワード(たとえば、一実
施例においてはタイプフィールドにおいてセットされたビット)を示す。プロー
ブフィールドを用いて、読出応答パケット44がターゲットノードまたはプロー
ブされたノードのいずれから送信されているかを示す。たとえば、プローブフィ
ールドは、セットされている場合に読出応答パケット44がプローブされたノー
ドから転送されたことを示し、クリアされている場合に読出応答パケット44が
ターゲットノードから送信されたことを示す、ビットを含み得る。したがって、
プローブされたノードは読出応答パケット44を用いる場合にプローブビットを
セットする。
【0051】 読出応答パケット44は、データパケットが後に続くことを示すパケットタイ
プである。したがって、プローブされたノードは読出応答パケット44の後にデ
ータパケットでキャッシュブロックを送信する。プローブされたノードは、読出
応答パケット44を、上述のようにプローブ読出パケット42を経路制御するの
と同様の態様で経路制御する(たとえば、プローブされたノードは(指定された
受信ノードがターゲットノードであれば)プローブパケット40のターゲットノ
ードフィールドを読出すか、または(指定された受信ノードがソースノードであ
れば)プローブパケット40のソースノードフィールドを読出し、結果として生
じるノードIDを読出応答パケット44の応答ノードフィールドにストアする)
【0052】 図7のテーブル38において示される一実施例においては、読出応答パケット
44のコマンドフィールドはRdResponseを示すことができ、さらに読出応答がPr
obe/Srcコマンドへの応答であるか、またはProbe/Tgtコマンドへの応答であるか
を示し得る。より特定的には、コマンドフィールドのビット0はクリアされて読
出応答がProbe/Srcコマンドへの応答であることを示し、セットされて読出応答
がProbe/Tgtコマンドへの応答であることを示す。この表示を受信ノードによっ
て用いて、読出応答が受信ノード内のメモリコントローラに経路制御されるべき
か(ビット0がセットされている場合)、または受信ノード内のキャッシュに対
するフィル受信ロジックに経路制御されるべきか(ビット0がクリアされている
場合)を判断し得る。
【0053】 図11は、例示的な読出ブロックトランザクションに対応する1組のノードの
間のパケットフローを示す図である。ソースノード50、ターゲットノードメモ
リコントローラ52、および1組のプローブされたノード54A−54Nを示す
。図11にはパケットの(時系列での)順序を左から右に示す。言い換えると、
RdBlkパケットはソースノード50からターゲットノードメモリコントローラ5
2に送信され、その後でターゲットノードメモリコントローラ52はProbe/Src
パケットをプローブノード54A−54Nに送り、以下も同様である。パケット
の時間順序を示すために、図11ではソースノード50およびターゲットメモリ
コントローラ52を2箇所に示す。同様に、図12および図13では特定のブロ
ックを1箇所以上に示す。ソースノード50、ターゲットノードメモリコントロ
ーラ52を含むターゲットノード、プローブされたノード54A−54Nの各々
は、図1に示す処理ノード12A−12Dと同様の処理ノードを含み得る。
【0054】 ソースノード50はRdBlkパケットをターゲットノードメモリコントローラ5
2に送信して、読出ブロックトランザクションを開始する。次いでターゲットノ
ードメモリコントローラ52は処理されるべきRdBlkパケットを選択する。ター
ゲットノードメモリコントローラ52はProbe/Srcパケットを生成し、パケット
をプローブされたノード54A−54Nにブロードキャストする。さらに、ター
ゲットノードメモリコントローラ52は、ターゲットノードメモリコントローラ
52が結合されているメモリ14A−14Dからの読出を開始する。メモリ14
A−14Dからの読出が完了すると、ターゲットノードメモリコントローラ52
はデータを含むRdResponseパケットを生成し、パケットをソースノード50に送
信する。
【0055】 プローブされたノード54A−54Nの各々はそのキャッシュ内を探索して、
RdBlkパケットによって読出されたキャッシュブロックがその中にストアされて
いるかどうか判断する。ヒットが検出されると、対応するプローブされたノード
54A−54Nは、ターゲットノードメモリコントローラ52から受取ったプロ
ーブパケット内のネクストステートフィールドに従ってキャッシュブロックの状
態を更新する。さらに、プローブされたノード54A−54Nの各々は(Probe/
Srcパケットが既に受信されているために)、ProbeRespパケットをソースノード
50に経路制御する。この例においては、いずれのプローブされたノード54A
−54Nもキャッシュブロックのダーティコピーをストアしていない。
【0056】 ソースノード50は、プローブされたノード54A−54NからのProbeResp
パケットおよびターゲットメモリコントローラ52からのRdResponseパケットを
待機する。一旦これらのパケットが受取られると、ソースノード50はSrcDone
パケットをターゲットメモリコントローラ52に送信し、トランザクションを終
了する。
【0057】 次いで図12は、第2の例示的な読出ブロックトランザクションを例示する図
を示す。ソースノード50、ターゲットメモリコントローラ52、プローブされ
たノード54A−54Nが示される。ソースノード50、ターゲットメモリコン
トローラ52を含むターゲットノード、およびプローブされたノード54A−5
4Nの各々は、図1に示す処理ノード12A−12Dと同様の処理ノードを含み
得る。
【0058】 図11に示す例と同様に、ソースノード50はRdBlkパケットをターゲットメ
モリコントローラ52に送信する。ターゲットノードメモリコントローラ52は
Probe/Srcパケットをプローブされたノード54A−54Nに送信し、かつRdRes
ponseパケットをソースノード50に送信し得る。
【0059】 図12の例においては、プローブされたノード54Aは読出ブロックトランザ
クションによってアクセスされたキャッシュブロックに対してダーティデータを
検出する。したがって、プローブされたノード54Aは(Probe/Srcコマンドに
より命令されて)ソースノード50に、RdResponseパケットとプローブされたノ
ード54Aの内部キャッシュから読出されたダーティキャッシュブロックとを送
信する。したがって、一実施例においては、プローブされたノード54AはMemC
ancelパケットをターゲットノードメモリコントローラ52に送信し得る。ター
ゲットノードメモリコントローラ52がRdResponseパケットをソースノード50
に送信する前に、MemCancelパケットがターゲットノードメモリコントローラ5
2に到達すると、ターゲットノードメモリコントローラ52はRdResponseパケッ
トを送信しない。よって、ターゲットノードメモリコントローラ52からソース
ノード50への「RdResponse」と表示された線は、その選択的な性質を示すため
に点線で表わされる。MemCancelメッセージに応答して、ターゲットノードメモ
リコントローラ52はTgtDoneパケットをソースノード50に送信する。
【0060】 プローブされたノード54B−54Nは、この実施例においてはダーティデー
タを検出せず、よってProbeRespパケットをソースノード50に経路制御する。
一旦ソースノード50がTgtDone、RdResponse、およびProbeRespパケットを受取
ると、ソースノード50はSrcDoneパケットをターゲットメモリコントローラ5
2に送信して読出ブロックトランザクションを終了させる。
【0061】 図13は、例示的なサイズ指定された書込トランザクションを示す図である。
ソースノード50、ターゲットノードメモリコントローラ52、およびプローブ
されたノード54A−54Nを示す。ソースノード50、ターゲットノードメモ
リコントローラ52を含むターゲットノード、およびプローブされたノード54
A−54Nの各々は、図1に示す処理ノード12A−12Dと同様の処理ノード
を含み得る。
【0062】 ソースノード50は、WrSizedパケットおよび書込まれるべきデータをターゲ
ットノードメモリコントローラ52に送信することにより、サイズ指定された書
込トランザクションを開始する。サイズ指定された書込トランザクションは、キ
ャッシュブロックの一部を更新するが、キャッシュブロックの残りの部分は更新
しないために、ターゲットノードメモリコントローラ52はプローブされたノー
ド54A−54Nから(もし存在すれば)ダーティキャッシュブロックを収集す
る。さらに、キャッシュブロックのクリーンなコピーはプローブされたノード5
4A−54Nにおいて無効化され、コヒーレンシを維持する。ターゲットメモリ
コントローラ52は、処理されるべきサイズ指定された書込トランザクションを
選択する際に、Probe/Tgtパケットをプローブされたノード54A−54Nに送
信する。プローブされたノード54A−54Nは、(Probe/Tgtパケットが受取
られているために)ターゲットノードメモリコントローラ54に、(いずれのダ
ーティデータも検出されなければ)ProbeRespパケットか、または(ダーティデ
ータが検出されると)RdResponseパケットのいずれかを返す。一旦ターゲットノ
ードメモリコントローラ52が、プローブされたノード54A−54Nからの応
答を受取ると、ターゲットノードメモリコントローラ52はTgtDoneパケットを
ソースノード50に送信し、これはサイズ指定された書込トランザクションを終
了させるSrcDoneパケットで応答する。
【0063】 ターゲットノードメモリコントローラ52が、プローブされたノード54A−
54Nのうちの1つからダーティなキャッシュブロックを受取ると、ターゲット
ノードメモリコントローラ52は、ダーティキャッシュブロックとWrSizedデー
タパケット内のソースノード50によって提供されたバイトとのマージを実行す
る。マージを実行するためのいかなる好適な機構をも用い得る。たとえば、ター
ゲットノードメモリコントローラ52はデータをマージし、単一ブロック書込を
行なってメモリを更新してもよい。これに代えて、ダーティブロックが第1にメ
モリに書込まれ、次いでソースノード50によって提供されたバイトの書込が続
いてもよい。
【0064】 この説明は、ノード間で通信されるパケットについて記載する一方で、コマン
ド、応答および他のメッセージを送信するためのいかなる好適な機構をも用い得
ることに留意されたい。
【0065】 図14は、処理のためのトランザクションの選択に応答する、メモリコントロ
ーラ16A−16Dの一実施例の一部の動作を例示するフローチャートを示す。
特に、プローブを生成するメモリコントローラ16A−16Dの部分が示される
。他の実施例も可能であり企図される。図14において、理解を容易にするため
にステップを特定の順序に従って示すが、いかなる好適な順序をも用い得る。さ
らに、ステップはデザイン選択によって所望のように、メモリコントローラ16
A−16D内で並列ハードウェアを用いてステップを並行して行なってもよい。
【0066】 メモリコントローラは、選択されたトランザクションがWrSizedトランザクシ
ョンであるかどうか判断する(判断ブロック60)。もし選択されたトランザク
ションがWrSizedトランザクションであれば、メモリコントローラはProbe/Tgtパ
ケットをプローブノードの各々に送信する(ステップ62)。そうでなければ、
メモリコントローラは選択されたトランザクションがVicBlkまたはCleanVicBlk
トランザクションであるかどうか判断する(判断ブロック64)。選択されたト
ランザクションがVicBlkまたはCleanVicBlkトランザクションであれば、プロー
ブパケットは生成されない。しかしながら、選択されたトランザクションがWrSi
zed、VicBlk、またはCleanVicBlkでなければ、Probe/Srcパケットはプローブさ
れたノードに送信される(ステップ66)。
【0067】 図15は、プローブパケットに応答するプローブされたノードの一実施例の動
作を示すフローチャートである。他の実施例も可能であり企図される。図15に
おいて、理解を容易にするためにステップを特定の順序に従って示すが、いかな
る好適な順序をも用い得る。さらに、設計選択によって所望のように、プローブ
されたノード内で並列ハードウェアを用いてステップを並行して行なってもよい
【0068】 プローブされたノードはそのキャッシュを探索して、プローブによって表示さ
れたキャッシュブロックがその中にストアされているかどうか判断し、もしキャ
ッシュブロックが見出されればその状態を判断する。キャッシュブロックがダー
ティな状態で見出されると(判断ブロック70)、プローブされたノードはRdRe
sponseパケットを生成する。プローブされたノードはRdResponseパケットの後に
キャッシュからダーティデータを読出して、データパケットとして送信する(ス
テップ72)。一方で、キャッシュブロックが見出されないか、またはダーティ
な状態になければ、プローブされたノードはProbeRespパケットを生成する(ス
テップ74)。さらに、キャッシュブロックの状態はプローブパケットのネクス
トステートフィールドに特定されるように更新される。
【0069】 プローブされたノードは受取ったプローブパケットを調べる(判断ブロック7
6)。プローブパケットがProbe/Srcパケットであれば、プローブされたノード
は上で生成された応答を、Probe/Srcパケットに表示されるソースノードに経路
制御する(ステップ78)。言い換えると、プローブされたノードは応答パケッ
ト内のRespNodeフィールドを、Probe/SrcパケットのSrcNodeフィールド内の値に
セットする。一方、プローブパケットがProbe/Tgtパケットであれば、プローブ
されたノードは上で生成された応答を、Probe/Tgtパケットに表示されるターゲ
ットノードに経路制御する(ステップ80)。言い換えると、プローブされたノ
ードは応答パケット内のRespNodeフィールドを、Probe/TgtパケットのTgtNodeフ
ィールド内の値にセットする。
【0070】 図16は、例示的な処理ノード12Aの一実施例のブロック図を示す。他の実
施例も可能であり企図される。図16の実施例においては、処理ノード12Aは
インターフェイスロジック18A、18B、18Cおよびメモリコントローラ1
6Aを含む。さらに、処理ノード12Aは、プロセッサコア92、キャッシュ9
0、コヒーレンシ管理ロジック98、および選択により第2のプロセッサコア9
6および第2のキャッシュ94を含み得る。インターフェイスロジック18A−
18Cは互いに結合され、さらにコヒーレンシ管理ロジック98に結合される。
プロセッサコア92および96は、それぞれキャッシュ90および94に結合さ
れる。キャッシュ90および94は、コヒーレンシ管理ロジック98に結合され
る。コヒーレンシ管理ロジック98はメモリコントローラ16Aに結合される。
【0071】 一般的に、コヒーレンシ管理ロジック98は、メモリコントローラ16Aによ
って処理のために選択されたトランザクションに応答してプローブコマンドを生
成し、かつ処理ノード12Aによって受取られるプローブコマンドに応答するよ
う構成される。コヒーレンシ管理ロジック98は、処理のために選択されたトラ
ンザクションのタイプに依存して、Probe/SrcコマンドまたはProbe/Tgtコマンド
のいずれかをブロードキャストする。さらに、コヒーレンシ管理ロジック98は
、受取ったプローブコマンドによって特定されるキャッシュブロックに対してキ
ャッシュ90および94を探索し、適切なプローブ応答を生成する。さらに、Pr
obe/Tgtコマンドを生成する場合には、コヒーレンシ管理ロジック98は、Probe
/Tgtコマンドに応答して返されたプローブ応答を収集し得る。キャッシュ90お
よび94は、処理ノード12A内で開始された読出要求からのデータの受取を管
理するフィルロジックを含むか、またはコヒーレンシ管理ロジック98内にフィ
ルロジックが含まれてもよい。コヒーレンシ管理ロジック98はさらに、メモリ
コントローラ16Aに対する非コヒーレント要求を経路制御するよう構成されて
もよい。一実施例においては、プロセッサ92とプロセッサ96とは、キャッシ
ュ90、キャッシュ94、およびコヒーレンシ管理ロジック98をバイパスして
、特定のキャッシュ不可および/または非コヒーレントメモリ要求に対して直接
メモリコントローラ16Aにアクセスし得る。
【0072】 キャッシュ90および94は、データのキャッシュブロックをストアするよう
構成された高速キャッシュメモリを含む。キャッシュ90および94は、それぞ
れのプロセッサコア92および96内に統合されてもよい。これに代えて、キャ
ッシュ90および94は、所望のようにプロセッサコア92および96に、バッ
クサイドキャッシュ構成またはインライン構成で結合されてもよい。さらに、キ
ャッシュ90および94はキャッシュ階層構造として実現化されてもよい。プロ
セッサコア92および96に(階層内で)より近いキャッシュは、所望であれば
プロセッサコア92および96に統合されてもよい。
【0073】 プロセッサコア92および96は、予め定められた命令セットに従って命令を
実行するための回路を含む。たとえば、x86命令セットアーキテクチャを選択
し得る。これに代えて、Alpha、PowerPC、または他のいかなる命令セットアーキ
テクチャを選択してもよい。一般的に、プロセッサコアはデータおよび命令のた
めにキャッシュにアクセスする。キャッシュミスが検出されると、読出要求が生
成され、ミスの発生したキャッシュブロックがマッピングされているノード内の
メモリコントローラに送信される。
【0074】 分散メモリシステムを用いて、コンピュータシステム10の特定の実施例を説
明してきたが、分散メモリシステムを用いない実施例も、ここで説明した柔軟な
プローブ/プローブ応答経路制御を用い得ることに留意されたい。そのような実
施例が企図される。
【0075】 上の開示を完全に理解すると、当業者においてはいくつもの変更および変形が
明らかとなるであろう。前掲の特許請求の範囲がすべてのそのような変更および
変形を包含することが理解されることを意図する。
【0076】
【産業上の用途】
この発明は一般的にコンピュータシステムに適用可能である。
【図面の簡単な説明】
【図1】 コンピュータシステムの一実施例のブロック図である。
【図2】 図1に示す1対の処理ノードの間の相互接続の一実施例を強調し
た、ブロック図である。
【図3】 情報パケットの一実施例のブロック図である。
【図4】 アドレスパケットの一実施例のブロック図である。
【図5】 応答パケットの一実施例のブロック図である。
【図6】 データパケットの一実施例のブロック図である。
【図7】 コンピュータシステムの一実施例によって用い得る、例示的なパ
ケットタイプを示すテーブルである。
【図8】 プローブパケットの一実施例のブロック図である。
【図9】 プローブ応答パケットの一実施例のブロック図である。
【図10】 読出応答パケットの一実施例のブロック図である。
【図11】 読出ブロックトランザクションに対応するパケットの例示的な
フローを示す図である。
【図12】 読出ブロックトランザクションに対応するパケットの第2の例
示的なフローを示す図である。
【図13】 サイズ指定された書込トランザクションに対応するパケットの
例示的なフローを示す図である。
【図14】 メモリコントローラの一実施例の動作を示すフローチャートの
図である。
【図15】 プローブパケットを受取る処理ノードの一実施例の動作を示す
フローチャートの図である。
【図16】 処理ノードの一実施例のブロック図である。
【手続補正書】特許協力条約第34条補正の翻訳文提出書
【提出日】平成12年12月20日(2000.12.20)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】0002
【補正方法】変更
【補正の内容】
【0002】 2.関連技術分野の背景 クメール・A(Kumar A)他による「共有メモリハイパーキューブマイクロプ
ロセッサのための、効率的でスケーラブルなキャッシュコヒーレンス方式(Effi
cient and Scalable Cache Coherence Schemes for Shared Memory Hypercube M
icroprocessor)」Proceedings of the Supercomputing Conference、US Los Al
amitos、IEEE、Vol.Conf.7. 1994、pp.498-507は、前掲の請求項1のプリアンブ
ルに記載の特徴を有しキャッシュコヒーレンシが維持されるコンピュータシステ
ムと、前掲の請求項10のプリアンブルの特徴を有しコンピュータシステム内で
キャッシュコヒーレンシを維持するための方法とを開示する。 EP−A−0 817 076は、ローカルおよびグローバルアドレススペー
スと、多数のアクセスモードとを用いる、マルチプロセッシングコンピュータシ
ステムを開示する。ノード内のプロセッサは、ノード間通信を要求するトランザ
クションを開始し得る。要求するノードからホームノードへ要求が送られると、
ホームノードは、要求されたデータのキャッシュコピーを有する従属ノードのい
ずれかに、読出および/または無効化要求を送る。システムは、キャッシュコヒ
ーレンシを維持するためのグローバルコヒーレンシプロトコルを実現化する。 一般的には、パーソナルコンピュータ(PC)およびその他の種類のコンピュ
ータシステムは、メモリにアクセスするために共用バスシステムを中心に設計さ
れてきた。1つ以上のプロセッサおよび1つ以上の入力/出力(I/O)装置が
、共用バスを介してメモリに結合される。I/O装置は、共用バスとI/O装置
との間の情報の転送を管理するI/Oブリッジを介して共用バスに結合される場
合もある一方、プロセッサは典型的には、直接共用バスに結合されるか、または
キャッシュ階層構造を介して共用バスに結合される。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0013
【補正方法】変更
【補正の内容】
【0013】 この発明はさまざまな変形と代替形に対処するものであるが、その特定の実施
例を図面において例示の目的で示し、以下に詳述する。しかしながら、図面とそ
の詳細な説明とは開示される発明を特定の形に限定することを意図せず、反対に
、すべての変形、等価物、および代替例は前掲の特許請求の範囲に規定されるこ
の発明の範囲に入ることを意図する。
【手続補正書】特許協力条約第34条補正の翻訳文提出書
【提出日】平成13年2月19日(2001.2.19)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ケラー,ジェイムズ・ビィ アメリカ合衆国、94303 カリフォルニア 州、パロ・アルト、アイリス・ウェイ、 210 (72)発明者 ギューリック,デイル・イー アメリカ合衆国、78748 テキサス州、オ ースティン、フェスタス・ドライブ、3122 Fターム(参考) 5B005 JJ12 KK03 KK13 MM05 NN12 PP00 PP11 5B045 DD12 DD13 GG01

Claims (13)

    【特許請求の範囲】
  1. 【請求項1】 コンピュータシステムであって、 要求を送信することによりトランザクションを開始するよう構成される第1の
    処理ノード(12A)と、 前記第1の処理ノード(12A)から前記要求を受取るよう結合される第2の
    処理ノード(12B)とを含み、前記第2の処理ノード(12B)は前記要求に
    応答してプローブを生成するよう構成され、前記プローブは、前記プローブに対
    する応答を受取るための受信ノード(12A;12B;12C;12D)を指定
    する表示を含む、コンピュータシステム。
  2. 【請求項2】 前記第2の処理ノード(12B)は、前記トランザクション
    のタイプに応答して前記表示を生成するよう構成される、請求項1に記載のコン
    ピュータシステム。
  3. 【請求項3】 前記プローブはパケット(40)を含み、前記パケット(4
    0)は前記パケット(40)を前記プローブであると識別するコマンドフィール
    ドを含む、請求項2に記載のコンピュータシステム。
  4. 【請求項4】 前記表示は、前記コマンドフィールド内に含まれる、請求項
    3に記載のコンピュータシステム。
  5. 【請求項5】 前記プローブを受取るよう結合される第3の処理ノード(1
    2C)をさらに含む、請求項2に記載のコンピュータシステム。
  6. 【請求項6】 前記第3の処理ノード(12C)は、前記第3の処理ノード
    (12C)内に前記要求に対応するデータがストアされているかどうか判断する
    よう構成される、請求項5に記載のコンピュータシステム。
  7. 【請求項7】 前記第3の処理ノード(12C)は、前記第3の処理ノード
    (12C)内に前記要求に対応する前記データがストアされているかどうかへの
    判断に応答するプローブ応答を生成するよう構成され、前記第3の処理ノード(
    12C)は、前記表示に応答する前記プローブ応答を経路制御するよう構成され
    る、請求項6に記載のコンピュータシステム。
  8. 【請求項8】 前記受信ノード(12A;12B;12C;12D)は、前
    記トランザクションの前記タイプがキャッシュブロックに満たないデータの書込
    であれば前記第2の処理ノード(12B)を含む、請求項2に記載コンピュータ
    システム。
  9. 【請求項9】 前記受信ノード(12A;12B;12C;12D)は、前
    記トランザクションの前記タイプが前記キャッシュブロックに満たないデータの
    前記書込以外であれば、前記第1の処理ノード(12A)を含む、請求項8に記
    載のコンピュータシステム。
  10. 【請求項10】 コンピュータシステム内でコヒーレンシを維持するための
    方法であって、 ソースノード(12A)からターゲットノード(12B)に要求を送信するス
    テップと、 前記要求に応答して前記ターゲットノード(12B)内でプローブを生成する
    ステップと、 前記プローブ内の表示を介して、前記プローブに応答する受信ノード(12A
    ;12B;12C;12D)を指定するステップと、 前記1つ以上のプローブに対するプローブ応答を、前記受信ノード(12A;
    12B;12C;12D)に経路制御するステップとを含む、方法。
  11. 【請求項11】 前記指定するステップは、前記トランザクションのタイプ
    に応答する、請求項10に記載の方法。
  12. 【請求項12】 前記指定するステップは、前記トランザクションの前記タ
    イプがキャッシュブロックに満たないデータの書込であれば、前記ターゲットノ
    ード(12B)を指定するステップを含む、請求項10に記載の方法。
  13. 【請求項13】 前記指定するステップは、前記トランザクションの前記タ
    イプが前記キャッシュブロックに満たないデータの前記書込以外であれば、前記
    ソースノード(12A)を指定するステップをさらに含む、請求項12に記載の
    方法。
JP2000590061A 1998-12-21 1999-08-26 コヒーレンシ維持のための柔軟なプローブ/プローブ応答経路制御 Expired - Fee Related JP4712974B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/217,367 1998-12-21
US09/217,367 US6631401B1 (en) 1998-12-21 1998-12-21 Flexible probe/probe response routing for maintaining coherency
PCT/US1999/019471 WO2000038069A1 (en) 1998-12-21 1999-08-26 Flexible probe/probe response routing for maintaining coherency

Publications (3)

Publication Number Publication Date
JP2002533812A true JP2002533812A (ja) 2002-10-08
JP2002533812A5 JP2002533812A5 (ja) 2006-09-14
JP4712974B2 JP4712974B2 (ja) 2011-06-29

Family

ID=22810782

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000590061A Expired - Fee Related JP4712974B2 (ja) 1998-12-21 1999-08-26 コヒーレンシ維持のための柔軟なプローブ/プローブ応答経路制御

Country Status (7)

Country Link
US (2) US6631401B1 (ja)
EP (1) EP1141839B1 (ja)
JP (1) JP4712974B2 (ja)
KR (1) KR100605142B1 (ja)
BR (1) BR9907499A (ja)
DE (1) DE69904758T2 (ja)
WO (1) WO2000038069A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002533813A (ja) * 1998-12-21 2002-10-08 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド メモリキャンセルメッセージを用いたシステムメモリ帯域幅の節約およびキャッシュコヒーレンシ維持
JP2006513510A (ja) * 2003-01-27 2006-04-20 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 書き込みデータをキャッシュにインジェクトする方法及び装置
JP2007199999A (ja) * 2006-01-26 2007-08-09 Nec Computertechno Ltd マルチプロセッサシステム及びその動作方法
JP2021522610A (ja) * 2018-05-03 2021-08-30 アーム・リミテッド データ処理ネットワーク内の転送プロトコル

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US6631401B1 (en) 1998-12-21 2003-10-07 Advanced Micro Devices, Inc. Flexible probe/probe response routing for maintaining coherency
US7529799B2 (en) * 1999-11-08 2009-05-05 International Business Machines Corporation Method and apparatus for transaction tag assignment and maintenance in a distributed symmetric multiprocessor system
US6757793B1 (en) * 2000-03-29 2004-06-29 Advanced Micro Devices, Inc. Reducing probe traffic in multiprocessor systems using a victim record table
US20020082621A1 (en) 2000-09-22 2002-06-27 Schurr Marc O. Methods and devices for folding and securing tissue
US6745272B2 (en) * 2001-04-04 2004-06-01 Advanced Micro Devices, Inc. System and method of increasing bandwidth for issuing ordered transactions into a distributed communication system
US6574708B2 (en) * 2001-05-18 2003-06-03 Broadcom Corporation Source controlled cache allocation
US7227870B2 (en) 2001-11-20 2007-06-05 Broadcom Corporation Systems including packet interfaces, switches, and packet DMA circuits for splitting and merging packet streams
US7206879B2 (en) * 2001-11-20 2007-04-17 Broadcom Corporation Systems using mix of packet, coherent, and noncoherent traffic to optimize transmission between systems
US7752281B2 (en) 2001-11-20 2010-07-06 Broadcom Corporation Bridges performing remote reads and writes as uncacheable coherent operations
US6748479B2 (en) 2001-11-20 2004-06-08 Broadcom Corporation System having interfaces and switch that separates coherent and packet traffic
US7394823B2 (en) 2001-11-20 2008-07-01 Broadcom Corporation System having configurable interfaces for flexible system configurations
US6912602B2 (en) 2001-11-20 2005-06-28 Broadcom Corporation System having two or more packet interfaces, a switch, and a shared packet DMA circuit
US7395379B2 (en) * 2002-05-13 2008-07-01 Newisys, Inc. Methods and apparatus for responding to a request cluster
US7653790B2 (en) * 2002-05-13 2010-01-26 Glasco David B Methods and apparatus for responding to a request cluster
US6965973B2 (en) 2002-05-15 2005-11-15 Broadcom Corporation Remote line directory which covers subset of shareable CC-NUMA memory space
US6993631B2 (en) 2002-05-15 2006-01-31 Broadcom Corporation L2 cache maintaining local ownership of remote coherency blocks
US7266587B2 (en) 2002-05-15 2007-09-04 Broadcom Corporation System having interfaces, switch, and memory bridge for CC-NUMA operation
US7003631B2 (en) 2002-05-15 2006-02-21 Broadcom Corporation System having address-based intranode coherency and data-based internode coherency
US7296121B2 (en) * 2002-11-04 2007-11-13 Newisys, Inc. Reducing probe traffic in multiprocessor systems
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US8024526B2 (en) * 2003-04-11 2011-09-20 Oracle America, Inc. Multi-node system with global access states
US7334102B1 (en) 2003-05-09 2008-02-19 Advanced Micro Devices, Inc. Apparatus and method for balanced spinlock support in NUMA systems
US7856534B2 (en) 2004-01-15 2010-12-21 Hewlett-Packard Development Company, L.P. Transaction references for requests in a multi-processor network
US7962696B2 (en) * 2004-01-15 2011-06-14 Hewlett-Packard Development Company, L.P. System and method for updating owner predictors
US7240165B2 (en) * 2004-01-15 2007-07-03 Hewlett-Packard Development Company, L.P. System and method for providing parallel data requests
US7818391B2 (en) 2004-01-20 2010-10-19 Hewlett-Packard Development Company, L.P. System and method to facilitate ordering point migration
US8090914B2 (en) * 2004-01-20 2012-01-03 Hewlett-Packard Development Company, L.P. System and method for creating ordering points
US8145847B2 (en) * 2004-01-20 2012-03-27 Hewlett-Packard Development Company, L.P. Cache coherency protocol with ordering points
US7769959B2 (en) * 2004-01-20 2010-08-03 Hewlett-Packard Development Company, L.P. System and method to facilitate ordering point migration to memory
US7177987B2 (en) * 2004-01-20 2007-02-13 Hewlett-Packard Development Company, L.P. System and method for responses between different cache coherency protocols
US7620696B2 (en) * 2004-01-20 2009-11-17 Hewlett-Packard Development Company, L.P. System and method for conflict responses in a cache coherency protocol
US8176259B2 (en) * 2004-01-20 2012-05-08 Hewlett-Packard Development Company, L.P. System and method for resolving transactions in a cache coherency protocol
US7143245B2 (en) * 2004-01-20 2006-11-28 Hewlett-Packard Development Company, L.P. System and method for read migratory optimization in a cache coherency protocol
US7395374B2 (en) * 2004-01-20 2008-07-01 Hewlett-Packard Company, L.P. System and method for conflict responses in a cache coherency protocol with ordering point migration
US20050160238A1 (en) * 2004-01-20 2005-07-21 Steely Simon C.Jr. System and method for conflict responses in a cache coherency protocol with ordering point migration
US8468308B2 (en) * 2004-01-20 2013-06-18 Hewlett-Packard Development Company, L.P. System and method for non-migratory requests in a cache coherency protocol
US7149852B2 (en) * 2004-01-20 2006-12-12 Hewlett Packard Development Company, Lp. System and method for blocking data responses
US7350032B2 (en) 2004-03-22 2008-03-25 Sun Microsystems, Inc. Cache coherency protocol including generic transient states
US20070186043A1 (en) * 2004-07-23 2007-08-09 Darel Emmot System and method for managing cache access in a distributed system
US7296167B1 (en) 2004-10-01 2007-11-13 Advanced Micro Devices, Inc. Combined system responses in a chip multiprocessor
US8254411B2 (en) * 2005-02-10 2012-08-28 International Business Machines Corporation Data processing system, method and interconnect fabric having a flow governor
US7619982B2 (en) * 2005-04-25 2009-11-17 Cisco Technology, Inc. Active probe path management
US7353340B2 (en) * 2005-08-17 2008-04-01 Sun Microsystems, Inc. Multiple independent coherence planes for maintaining coherency
US7398360B2 (en) * 2005-08-17 2008-07-08 Sun Microsystems, Inc. Multi-socket symmetric multiprocessing (SMP) system for chip multi-threaded (CMT) processors
US7529894B2 (en) * 2005-08-17 2009-05-05 Sun Microsystems, Inc. Use of FBDIMM channel as memory channel and coherence channel
US7536515B2 (en) 2006-06-30 2009-05-19 Intel Corporation Repeated conflict acknowledgements in a cache coherency protocol
US7721050B2 (en) * 2006-06-30 2010-05-18 Intel Corporation Re-snoop for conflict resolution in a cache coherency protocol
US7506108B2 (en) * 2006-06-30 2009-03-17 Intel Corporation Requester-generated forward for late conflicts in a cache coherency protocol
US7640401B2 (en) 2007-03-26 2009-12-29 Advanced Micro Devices, Inc. Remote hit predictor
US20080298246A1 (en) * 2007-06-01 2008-12-04 Hughes William A Multiple Link Traffic Distribution
US20080320233A1 (en) * 2007-06-22 2008-12-25 Mips Technologies Inc. Reduced Handling of Writeback Data
US7769957B2 (en) * 2007-06-22 2010-08-03 Mips Technologies, Inc. Preventing writeback race in multiple core processors
US7992209B1 (en) 2007-07-19 2011-08-02 Owl Computing Technologies, Inc. Bilateral communication using multiple one-way data links
JP5283128B2 (ja) * 2009-12-16 2013-09-04 学校法人早稲田大学 プロセッサによって実行可能なコードの生成方法、記憶領域の管理方法及びコード生成プログラム
US20120054439A1 (en) * 2010-08-24 2012-03-01 Walker William L Method and apparatus for allocating cache bandwidth to multiple processors
US10268583B2 (en) 2012-10-22 2019-04-23 Intel Corporation High performance interconnect coherence protocol resolving conflict based on home transaction identifier different from requester transaction identifier
WO2014178854A1 (en) * 2013-04-30 2014-11-06 Hewlett-Packard Development Company, L.P. Memory network to route memory traffic and i/o traffic
US11159636B2 (en) 2017-02-08 2021-10-26 Arm Limited Forwarding responses to snoop requests
US10747298B2 (en) 2017-11-29 2020-08-18 Advanced Micro Devices, Inc. Dynamic interrupt rate control in computing system
US10503648B2 (en) 2017-12-12 2019-12-10 Advanced Micro Devices, Inc. Cache to cache data transfer acceleration techniques
US10776282B2 (en) 2017-12-15 2020-09-15 Advanced Micro Devices, Inc. Home agent based cache transfer acceleration scheme
US11210246B2 (en) 2018-08-24 2021-12-28 Advanced Micro Devices, Inc. Probe interrupt delivery

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002533813A (ja) * 1998-12-21 2002-10-08 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド メモリキャンセルメッセージを用いたシステムメモリ帯域幅の節約およびキャッシュコヒーレンシ維持

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02205963A (ja) 1989-01-27 1990-08-15 Digital Equip Corp <Dec> 読取中断処理
EP0412353A3 (en) 1989-08-11 1992-05-27 Hitachi, Ltd. Multiprocessor cache system having three states for generating invalidating signals upon write accesses
US5303362A (en) 1991-03-20 1994-04-12 Digital Equipment Corporation Coupled memory multiprocessor computer system including cache coherency management protocols
US5412788A (en) * 1992-04-16 1995-05-02 Digital Equipment Corporation Memory bank management and arbitration in multiprocessor computer system
US5590307A (en) 1993-01-05 1996-12-31 Sgs-Thomson Microelectronics, Inc. Dual-port data cache memory
US6049851A (en) 1994-02-14 2000-04-11 Hewlett-Packard Company Method and apparatus for checking cache coherency in a computer architecture
US5537575A (en) 1994-06-30 1996-07-16 Foley; Denis System for handling cache memory victim data which transfers data from cache to the interface while CPU performs a cache lookup using cache status information
US5655140A (en) 1994-07-22 1997-08-05 Network Peripherals Apparatus for translating frames of data transferred between heterogeneous local area networks
US5517494A (en) * 1994-09-30 1996-05-14 Apple Computer, Inc. Method and system of multicast routing for groups with a single transmitter
US5659708A (en) 1994-10-03 1997-08-19 International Business Machines Corp. Cache coherency in a multiprocessing system
US5684977A (en) 1995-03-31 1997-11-04 Sun Microsystems, Inc. Writeback cancellation processing system for use in a packet switched cache coherent multiprocessor system
US5987544A (en) 1995-09-08 1999-11-16 Digital Equipment Corporation System interface protocol with optional module cache
US5659710A (en) 1995-11-29 1997-08-19 International Business Machines Corporation Cache coherency method and system employing serially encoded snoop responses
US5673413A (en) 1995-12-15 1997-09-30 International Business Machines Corporation Method and apparatus for coherency reporting in a multiprocessing system
US5893144A (en) 1995-12-22 1999-04-06 Sun Microsystems, Inc. Hybrid NUMA COMA caching system and methods for selecting between the caching modes
US6038644A (en) 1996-03-19 2000-03-14 Hitachi, Ltd. Multiprocessor system with partial broadcast capability of a cache coherent processing request
US5878268A (en) 1996-07-01 1999-03-02 Sun Microsystems, Inc. Multiprocessing system configured to store coherency state within multiple subnodes of a processing node
US5749095A (en) * 1996-07-01 1998-05-05 Sun Microsystems, Inc. Multiprocessing system configured to perform efficient write operations
US5983326A (en) * 1996-07-01 1999-11-09 Sun Microsystems, Inc. Multiprocessing system including an enhanced blocking mechanism for read-to-share-transactions in a NUMA mode
US5859983A (en) 1996-07-01 1999-01-12 Sun Microsystems, Inc Non-hypercube interconnection subsystem having a subset of nodes interconnected using polygonal topology and other nodes connect to the nodes in the subset
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
US5991819A (en) 1996-12-03 1999-11-23 Intel Corporation Dual-ported memory controller which maintains cache coherency using a memory line status table
US6018791A (en) 1997-04-14 2000-01-25 International Business Machines Corporation Apparatus and method of maintaining cache coherency in a multi-processor computer system with global and local recently read states
US5924118A (en) 1997-04-14 1999-07-13 International Business Machines Corporation Method and system for speculatively sourcing cache memory data prior to upstream cache invalidation within a multiprocessor data-processing system
US5966729A (en) * 1997-06-30 1999-10-12 Sun Microsystems, Inc. Snoop filter for use in multiprocessor computer systems
US6112281A (en) * 1997-10-07 2000-08-29 Oracle Corporation I/O forwarding in a cache coherent shared disk computer system
US6101420A (en) 1997-10-24 2000-08-08 Compaq Computer Corporation Method and apparatus for disambiguating change-to-dirty commands in a switch based multi-processing system with coarse directories
US6108752A (en) 1997-10-24 2000-08-22 Compaq Computer Corporation Method and apparatus for delaying victim writes in a switch-based multi-processor system to maintain data coherency
US6085263A (en) 1997-10-24 2000-07-04 Compaq Computer Corp. Method and apparatus for employing commit-signals and prefetching to maintain inter-reference ordering in a high-performance I/O processor
US6209065B1 (en) 1997-10-24 2001-03-27 Compaq Computer Corporation Mechanism for optimizing generation of commit-signals in a distributed shared-memory system
US6085294A (en) 1997-10-24 2000-07-04 Compaq Computer Corporation Distributed data dependency stall mechanism
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
US6070231A (en) * 1997-12-02 2000-05-30 Intel Corporation Method and apparatus for processing memory requests that require coherency transactions
US6292705B1 (en) 1998-09-29 2001-09-18 Conexant Systems, Inc. Method and apparatus for address transfers, system serialization, and centralized cache and transaction control, in a symetric multiprocessor system
US6012127A (en) 1997-12-12 2000-01-04 Intel Corporation Multiprocessor computing apparatus with optional coherency directory
US6138218A (en) 1998-02-17 2000-10-24 International Business Machines Corporation Forward progress on retried snoop hits by altering the coherency state of a local cache
US6098115A (en) 1998-04-08 2000-08-01 International Business Machines Corporation System for reducing storage access latency with accessing main storage and data bus simultaneously
US6286090B1 (en) 1998-05-26 2001-09-04 Compaq Computer Corporation Mechanism for selectively imposing interference order between page-table fetches and corresponding data fetches
US6295583B1 (en) * 1998-06-18 2001-09-25 Compaq Information Technologies Group, L.P. Method and apparatus for resolving probes in multi-processor systems which do not use external duplicate tags for probe filtering
US6199153B1 (en) 1998-06-18 2001-03-06 Digital Equipment Corporation Method and apparatus for minimizing pincount needed by external memory control chip for multiprocessors with limited memory size requirements
US6631401B1 (en) 1998-12-21 2003-10-07 Advanced Micro Devices, Inc. Flexible probe/probe response routing for maintaining coherency
US6275905B1 (en) * 1998-12-21 2001-08-14 Advanced Micro Devices, Inc. Messaging scheme to maintain cache coherency and conserve system memory bandwidth 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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002533813A (ja) * 1998-12-21 2002-10-08 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド メモリキャンセルメッセージを用いたシステムメモリ帯域幅の節約およびキャッシュコヒーレンシ維持

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002533813A (ja) * 1998-12-21 2002-10-08 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド メモリキャンセルメッセージを用いたシステムメモリ帯域幅の節約およびキャッシュコヒーレンシ維持
JP4718012B2 (ja) * 1998-12-21 2011-07-06 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド メモリキャンセルメッセージを用いたシステムメモリ帯域幅の節約およびキャッシュコヒーレンシ維持
JP2006513510A (ja) * 2003-01-27 2006-04-20 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 書き込みデータをキャッシュにインジェクトする方法及び装置
JP4663329B2 (ja) * 2003-01-27 2011-04-06 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 書き込みデータをキャッシュにインジェクトする方法及び装置
JP2007199999A (ja) * 2006-01-26 2007-08-09 Nec Computertechno Ltd マルチプロセッサシステム及びその動作方法
JP4572169B2 (ja) * 2006-01-26 2010-10-27 エヌイーシーコンピュータテクノ株式会社 マルチプロセッサシステム及びその動作方法
JP2021522610A (ja) * 2018-05-03 2021-08-30 アーム・リミテッド データ処理ネットワーク内の転送プロトコル
JP7284191B2 (ja) 2018-05-03 2023-05-30 アーム・リミテッド データ処理ネットワーク内の転送プロトコル

Also Published As

Publication number Publication date
KR100605142B1 (ko) 2006-07-28
US6631401B1 (en) 2003-10-07
EP1141839A1 (en) 2001-10-10
BR9907499A (pt) 2000-10-03
KR20010082373A (ko) 2001-08-29
JP4712974B2 (ja) 2011-06-29
EP1141839B1 (en) 2003-01-02
US7296122B2 (en) 2007-11-13
WO2000038069A1 (en) 2000-06-29
DE69904758D1 (de) 2003-02-06
US20040024836A1 (en) 2004-02-05
DE69904758T2 (de) 2003-10-16

Similar Documents

Publication Publication Date Title
JP4712974B2 (ja) コヒーレンシ維持のための柔軟なプローブ/プローブ応答経路制御
US6490661B1 (en) Maintaining cache coherency during a memory read operation in a multiprocessing computer system
US6275905B1 (en) Messaging scheme to maintain cache coherency and conserve system memory bandwidth during a memory read operation in a multiprocessing computer system
US6167492A (en) Circuit and method for maintaining order of memory access requests initiated by devices coupled to a multiprocessor system
US7032078B2 (en) Shared memory multiprocessing system employing mixed broadcast snooping and directory based coherency protocols
US6370621B1 (en) Memory cancel response optionally cancelling memory controller&#39;s providing of data in response to a read operation
US6615319B2 (en) Distributed mechanism for resolving cache coherence conflicts in a multi-node computer architecture
US6948035B2 (en) Data pend mechanism
KR100324975B1 (ko) 잠재적인 제3 노드 트랜잭션을 버퍼에 기록하여 통신 대기시간을 감소시키는 비균일 메모리 액세스(numa) 데이터 프로세싱 시스템
US6389526B1 (en) Circuit and method for selectively stalling interrupt requests initiated by devices coupled to a multiprocessor system
US6973543B1 (en) Partial directory cache for reducing probe traffic in multiprocessor systems
US20010013089A1 (en) Cache coherence unit for interconnecting multiprocessor nodes having pipelined snoopy protocol
JP4410967B2 (ja) デッドロックのないコンピュータシステム動作のためのバーチャルチャネルおよび対応するバッファ割当て
US7222220B2 (en) Multiprocessing system employing address switches to control mixed broadcast snooping and directory based coherency protocols transparent to active devices
KR20010101193A (ko) 판독 요청을 원격 처리 노드에 추론적으로 전송하는비정형 메모리 액세스 데이터 처리 시스템
JP2000250883A (ja) 不均等メモリ・アクセス・システムにおいてトランザクションのキャンセルによるデータ損失を避けるための方法およびシステム
US6393529B1 (en) Conversation of distributed memory bandwidth in multiprocessor system with cache coherency by transmitting cancel subsequent to victim write
US7752281B2 (en) Bridges performing remote reads and writes as uncacheable coherent operations
US7797495B1 (en) Distributed directory cache
JPH10134009A (ja) 分散共用メモリ・コンピュータ・システムにおける無ディレクトリ・メモリ・アクセス・プロトコル用の方法および装置
JP4718012B2 (ja) メモリキャンセルメッセージを用いたシステムメモリ帯域幅の節約およびキャッシュコヒーレンシ維持

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060712

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060712

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100112

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100409

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100416

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100511

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101124

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110221

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110315

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110324

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

Free format text: PAYMENT UNTIL: 20140401

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

Free format text: PAYMENT UNTIL: 20140401

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees