JP4414096B2 - 多重プロセッサ・コンピュータ・システム用の順序外れスヌーピング - Google Patents

多重プロセッサ・コンピュータ・システム用の順序外れスヌーピング Download PDF

Info

Publication number
JP4414096B2
JP4414096B2 JP2000564132A JP2000564132A JP4414096B2 JP 4414096 B2 JP4414096 B2 JP 4414096B2 JP 2000564132 A JP2000564132 A JP 2000564132A JP 2000564132 A JP2000564132 A JP 2000564132A JP 4414096 B2 JP4414096 B2 JP 4414096B2
Authority
JP
Japan
Prior art keywords
node
snoop
message
request
order
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.)
Expired - Fee Related
Application number
JP2000564132A
Other languages
English (en)
Other versions
JP2002522827A5 (ja
JP2002522827A (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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2002522827A publication Critical patent/JP2002522827A/ja
Publication of JP2002522827A5 publication Critical patent/JP2002522827A5/ja
Application granted granted Critical
Publication of JP4414096B2 publication Critical patent/JP4414096B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means

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)

Description

【0001】
関連する出願:本願および本願と同時に出願された「Passive Message Ordering on a Decentralized Ring」と題する米国特許出願第 号(整理番号42390.P5426)は、基本的に共通の明細書を有するが、異なる主題を請求するものである。本出願および本願と同時に出願された「Decentralized Ring Arbitration For Multiprocessor Computer Systems」と題する出願番号第 号(整理番号42390.P5427)は重複する明細書を有するが、異なる主題を請求するものである。
【0002】
(発明の背景)
発明の技術分野:本発明は、順序外れスヌーピングを可能にする分散化リング上の多重プロセッサ・コンピュータ・システムに関する。
【0003】
背景技術:多重プロセッサ・コンピュータ・システムは、プロセッサ間およびチップセットとプロセッサの間(それぞれをノードと呼ぶ)で通信するバスを含んでいる。バス上での競合を回避するために、チップセット内にある中央アービタは、バス上のどのノードがメッセージをバス上で送信できるか判定する。バス上のメッセージはバス上を通って各ノードにブロードキャストされ、各ノードはメッセージを基本的に同時に受ける。したがってメッセージが送られる順序に関して混乱は起こらない。
【0004】
各ノードがリング上の隣接するノードに結合されるリング・トポロジが開発されてきた。ポイント・ツー・ポイント・リング内で、各ノードは隣接するリング上のノードからリンク(導体)によって分離される。リングの利点はリング上の導体のドライバがシステムのすべてのノードではなく、特定のノードの受信器回路だけをロードすればいいという点である。したがって信号は状態をより迅速に変えることができる。
【0005】
各ノードはメッセージを他の各ノードに送るが、メッセージは中央ポイントからすべてのノードに同時に送られるのではなく、ノードからノードへ順に送られる。したがってすべてのノードによって監視されるリンクは1つもない。普通ノードはメッセージが受け取られるまで、もう1つのノードがメッセージを送ったということを知らない。1つ以上のノードが同時にメッセージを送る場合、メッセージは異なるノードによって異なる順序で受け取られる。スヌープ要求のようなメッセージについては、この方式では誤った結果が生じる。
【0006】
したがって各ノードが一貫してメッセージを順序付けるような、メッセージの順序付けのシステムが必要とされる。
【0007】
(概要)
いくつかの実施態様では、コンピュータ・システムは導体を介して結合されたノードを含んでいる。ノードのうちの少なくともいくつかはそれぞれスヌープ要求をノード受信順序で受け取り、ノード内のメモリのスヌープをスヌープ要求が大域順序になる前に初期化するメモリおよび処理回路を含んでいる。少なくともいくつかのノードはそれぞれ、スヌープ要求を受けるための順序付けバッファを含んでおり、順序付けバッファの出力において要求を大域順序で提供する。
【0008】
本発明は、本発明の実施形態についての下記の詳細な説明および添付の図面からより完全に理解できよう。ただしそれらは本発明を記載の特定の実施形態に限定するものと解するべきではなく、説明と理解のためのものである。
【0009】
(好ましい実施形態の詳細な説明)
1.概要
図1を参照する。例示的コンピュータ・システム10がノードN0、N1、N2、N3を含んでいる。ノードは共有バスではなくポイント・ツー・ポイント・リング・トポロジを介して相互に通信する。信号は導体26を介してノードN0とN1の間を、導体24を介してノードN1とN2の間を、導体26を介してノードN2とN3の間を、導体28を介してノードN3とN4の間を送られる。導体22〜28はそれぞれ多数の並列導体を含んでもよい。導体22のうち異なるいくつかは異なる目的に使用され、導体24のうち異なるいくつかは異なる目的に使用され、導体26のうち異なるいくつかは異なる目的に使用され、導体28のうち異なるいくつかは異なる目的に使用される。例えば、下記の仮想スロットは導体22〜28のいくつかの導体だけを通って送信してもよい。スヌープ応答はスヌープ要求とは異なる導体で送られることもある。いくつかの実施形態では、データ信号のような特定の信号は導体22〜28には含まれない導体を通って送られる。図1は、信号が時計周りの方向にだけ伝わる単方向の例を図示する。例ではノードは大域クロックを共有せずソース同期式の送信を使用する。
【0010】
図3はノードN2の例示的実施形態を図示する。ノードN2はプロセッサ30およびキャッシュ34(プロセッサ30と同じダイ上にあってもよい)を含んでいる。ノードN2は、メモリおよび/または周辺装置への1つ以上のプロセッサおよび/またはチップセットを含んでいることもある。プロセッサ30はネットワーク・インターフェース回路とインターフェースされ、いくつかの実施形態ではネットワーク・インターフェースが受信回路42、制御回路40、送信回路48を含んでいる。キャッシュ34は図示したように後方のバスを介してプロセッサ30に、かつ制御回路40に直接アクセスすることができ、また一方だけまたは他方を通ってもよい。主記憶装置46は任意選択で、他のノードと共有した主記憶装置の一部であってもよい。主記憶装置46はプロセッサおよび/または制御回路40によって直接アクセスすることができる。図3は制御回路40によって分離されている受信回路42および送信回路48を図示するが、信号は受信回路から送信回路へ迅速に送ることができ、いくつかの実施形態では同一の回路を両方に対して使用することもできる。ノードN2は、図3には図示していない構成要素を含んでもよい。ノードは1つ以上のリングの一部であってもよい。ここで述べた制御回路40の機能はプロセッサ30によって実行することもできる。ノードN0、N1、N3は、N2と同じでも異なっていてもよい。単なる例として、導体22〜28はそれぞれおよそ数センチメートルまたはそれ以下の長さであってもよい。もう1つの例としてシステム10は、導体22〜28が例えば数メートルの長さである分散型ネットワークであってもよい。
【0011】
ノードN0内のプロセッサが、ノードN1、N2、N3に関連するキャッシュまたは他のメモリが特定のキャッシュ・ラインを有するかどうかを判定しようとする以下の例を考えてみたい。ノードN1がキャッシュ・ラインを有するかどうかを要求する要求メッセージ(パケットの形をとることもある)が導体22を介してノードN1に送られる。キャッシュ・ラインを持つかどうかをノードN1が決定する前に、メッセージは導体24を介してノードN2に送られ、ノードN2がキャッシュ・ラインを持つかどうか要求する。それがキャッシュ・ラインを持つかどうかをノードN2が決定する前に、メッセージは導体26を介してノードN3に送られ、ノードN3がキャッシュ・ラインを持つかどうかを要求する。メッセージは導体28を介してノードN0に送り返される。例ではメッセージはノードN0〜N4によって送信されているが、もとはノードN0だけによって送信された。
【0012】
システム10は分散化されていて中央アービトレータがない。いくつかの実施形態では、システム10は集中型のバスをベースとしたシステムを模倣し、従来のプロトコル(キャッシュ・コヒーレンスなど)をほとんどまたはまったく変更せずに使用できるようにする。すべてではないが多くのバス・ベース型のシステムでは、ただ1つのエージェントが一度にデータをバス上に挿入し、すべてのエージェントはバス上のメッセージを同一の順序で同時に見る。リング・ベース型のシステムでは、エージェントはこのようなパケットを異なった順序で受ける。本発明のいくつかの実施形態は、ノードが一貫してメッセージを大域順序で順序付けできる仮想スロット抽象化を使用した、受動的なメッセージの順序付けを含んでいる。
【0013】
2.仮想スロット
いくつかの実施形態では、仮想スロットはリングの一部で送られる最大のパケットまたは他の形のメッセージを運ぶのに十分なリングの帯域幅の装置である。このようなパケットが、メッセージを送るために使用可能なリングの導体の数より大きい場合は、エージェントがパケットを送るのに1クロック周期以上がかかるこであろう。仮想スロットの長さは、リングの関連する導体で使用される周期の最大の数である。
【0014】
以下は4つのノードを有するシステム10の例である。無論、本発明は、これより多くのまたは少ない数のノードおよび異なる詳細部分をもって実施することもできる。一対のノード間遅延の合計(フライト時間とノード遅延を足したもの)が9クロック周期だと仮定する。したがって、1つのフリット(flit)(フル・メッセージ・パケットではない)がリングを一周するのに36クロック周期がかかる。ある意味では、リングは36個の別々のフリットを保持できると言える。さらに、ノードがメッセージ・パケットを送るのに5クロック周期かかるとする。したがってリング全体は[36/5]=7つまでのメッセージをいつでも保持することができる。リングを回っている36個のフリットは、7つの仮想スロットおよび1つの不使用のフリットを構成していると考えられる。例ではリングの容量は7仮想スロットである。
【0015】
7つの仮想スロット(S0、S1、S2、S3、S4、S5、S6)は図1および図2に示したように視覚化することができる。使用されない1つのサイクルまたはフリットは図1に示してあるが、図2には示していない。図1はメッセージ・スロットの実際の配置を図示し、図2はメッセージ・スロットの仮想の配置を図示する。
【0016】
リング内の仮想スロットの数を計算するのに使用される多様なタイミングをノードは正確には知ることができない。しかしノードはメッセージを送るのにかかるクロックの数cは知ることができる(上記の例の場合c=5)。これを使用してノードはリング内の仮想スロットの数を計算することができる。例として以下の手順を考えてみたい。システムの起動時に、識別されたノード(例えばN0)がフリットを送り始め、次いでノードがそれをリング内に循環させる。各フリットには増加するシーケンス番号でタグが付けられる。0とラベルされたフリットがそこに戻ってきたときにノードがpフリットを送ったとする。リングがpフリットを含んでいることができ、その時仮想スロットの数がs=[p/c]になることをノードは知っている。これは他のノードに伝達することができる。
【0017】
いくつかの実施形態では、仮想スロットの数が決定されると識別されたノードが各仮想スロットの第1の(ヘッダ)メッセージに印を付ける。ノードは、仮想スロットのヘッダである空いたメッセージだけにパケットを挿入し始める。識別されたノードは各仮想スロットの第1のフリットにスロットIDを付けてそれを識別することができる。次いでノードは、そのメッセージ用にどのフリットを使用できるかを判定するために、これらのスロットIDを持つフリットを検索することができる。ノードは、仮想スロットの始まりである空いたフリットだけにメッセージの第1のフリットを入れる。
【0018】
リング内の仮想スロットの数は時間とともに変化することがある(例えば温度条件の変化などで)。システムは、使用可能な数より少ない仮想スロットを使用する(増加を考慮に入れて)ようにも、または周期的にそれ自体で変更してスロットを加えるかまたは放棄するように設計することもできる。
【0019】
3.受動的メッセージ順序付け
いくつかの実施形態ではメッセージの順序付けは受動的で、メッセージを送るのに必要とされている通信の他には通信を必要としない。ノードの受信順序は、メッセージがノードによって実際に受け取られる順序である(順序は通常各ノードによって異なる)。仮想時間は、仮想スロットがリング内を動くのに従って増加する。仮想時間順序は仮想時間に従ったメッセージの順序である。もとは同じ仮想時間で送信された各メッセージは、同一レベルの仮想時間順序にある。大域順序とは、大域順序付けを受けている各ノードが一致するメッセージ順序である。リング内に、大域順序が何であるかを知らない1つまたは複数のノードがあることもある。例えばノードは、大域順序が関連せず大域順序を把握しない出入力ノードであってもよい。
【0020】
メッセージは順序付けバッファ62から大域順序で引き出される。順序付けバッファ62の底位置にあるメッセージは大域順序になっている。なぜなら大域順序ではそれより早い位置にメッセージを挿入することはできないからである。順序付けバッファ62内の1つ以上のメッセージが同時に大域順序であってもよい。送信ノードおよび送信ノードと受信ノード間の仮想スロットの数に応じて、すでに大域順序にある位置、またはさらにメッセージが受信され次第大域順序になる位置にメッセージが挿入される。2つまたはそれ以上のメッセージが同一の仮想時間順序レベルにある場合、タイブレーク技術が使用されどのメッセージが順序付けバッファ62のより早い位置に挿入されるのかを決定する。共有バスが提供する順序と必ずしも正確に同じ順序ではないがそれに類似した順序を提供するため、大域順序はバス順序と呼ばれることがある。例えばメッセージ2がノード2から送られる前に、メッセージ1がノード1から送られると仮定する。大域順序では、メッセージ1はリングおよび仮想スロットの詳細に応じてメッセージ2の前または後に置かれる。
【0021】
大域順序には以下の3つの特性がある。(特性(1)、(2)、(3)とする)
(1)大域順序でメッセージm1がメッセージm2より先にあるのをノードAが見た場合、大域順序付けを受けているすべてのノードは大域順序でm1がm2より先にあるのを見る。
(2)ノードがまずメッセージm1を送信し次いでメッセージm2を送る場合、大域順序付けを受けているすべてのノードはm1がm2より先にあるのを見る。
(3)ノードがメッセージm1をノード受信順序で受け取り、後にメッセージm2を送った場合、大域順序付けを受けているすべてのノードは大域順序でm1がm2より先にあるのを見る。
【0022】
大域順序が必ずしもメッセージが送られる正確な時間順序に従わないことは、特性(1)、(2)、(3)が与えられる限り一般に重要ではない。
【0023】
特性(1)、(2)、(3)に加え、以下2つの追加の特性(特性(4)、(5)とする)が受動的メッセージ順序付けのある種の応用例において有用である。
(4)ノードがメッセージmをノード受信順序で受けるとき、ノードはすでに受信されているメッセージに相対的なmの大域順序付けを知る。
(5)ノードにおけるメッセージの受信は、それより先に受信されたメッセージの相対的大域順序を変更しない。
【0024】
受動的メッセージ順序がさまざまな目的およびシステム用のメッセージの順序付けで使用できることは強調されるべきである。例えば受動的メッセージ順序付けを使用して、リング上のスヌープ要求の順序付けをすることができる。他の例では受動的メッセージ順序付けをコンピュータの分散型ネットワークで使用して、分散型データベース内のメッセージの一貫した順序付けを行うこともできる。
【0025】
キャッシュ・コヒーレンス・プロトコルなどある種のプロトコルの要素は、すべてのノードがすべてのトランザクションを同一の順序で見るというものである。受動的要求順序付けが提供する大域順序付けを用いると、すべてのノードはすべてのトランザクションを同一の順序で見る。
【0026】
a.仮想スロット抽象化
仮想スロット抽象化は、メッセージ送信の「仮想時間」を決定するのに使用できる。メッセージは順序付けバッファ内でこの仮想時間に従って順序付けされることができる。
【0027】
i.スロットが均等に分割するとき
s個の仮想スロットがリング内にあり、各スロットがc個のフリットを備えるとする。ノードの数(n)が均等に分割する場合、s/n個のスロットが(またはsc/n個のフリットが)各リンク上にあり、その時s/nおよびsc/nは整数である。これはフリットが1つのノードからもう一方のノードに送られるのにsc/nサイクルを要することを意味する。ノードはこの情報を使用してメッセージがいつ送信されたのかを判定することができる。ノードは隣接するアップストリームのノードからメッセージの第1のフリットを受けると、そのメッセージがu sc/nサイクル前に送信されたことを知る。ここでのuはアップストリームのノードの数である。もしすべてが完全に同期されれば、ノードはメッセージの送信時間について正確に一致する。しかしシステムは完全には同期できないので、ノードはクロック・サイクルではなく、リング上の到着する仮想スロットに基づいてその計算を行う。ノードは仮想スロットの抽象化の構造について一致しているので、ノードは実質的に同期される。
【0028】
ノードはフリット(すなわち「仮想サイクル」)を数える必要はない。仮想スロットはリングを回っているので(仮想スロットの第1のフリットは識別可能でありうる)、仮想スロットを数えることで十分である。メッセージがノードに到着すると、ノードはそれがu s/nスロット前に送信されたことを判定する。ノードはメッセージが0スロット前に送信されたことを知り、ノード自体のメッセージをその送信時間に認識することもある。
【0029】
ノードは仮想スロット装置内のメッセージの「年齢」または仮想時間を把握することもできる。メッセージがアップストリームのノードuリンクから受け取られると、受信側はそれがus/nスロットの経過時間であることを認識し、順序付けバッファ内でそれに適切なタグ付けをする。各仮想スロットが受け取られると、メッセージはそれぞれ1スロット古くなる。その経過時間を数として特別にノード内のどこかに記憶する必要はない。その代わりノードは年齢が増すのに従って状態が前進する回路を含んでいる。
【0030】
n−1リンク以上アップストリームのノードはないので、いくつかの実施形態ではu<nしたがってすべての可能なuについてus/n<sになる。ノードが受ける一番古いメッセージは、a−1スロットの経過時間になるはずである。したがってメッセージがs−1の経過時間になると、ノードはその後に到着するメッセージはいずれも仮想時間において後に送信されたものであろうことを認識する。したがって順序付けバッファ内でのメッセージの順序付けは、経過時間がs−1になったときに完了することができる。
【0031】
ii.スロットが均等に分割しないとき
例えば図2のような4つのノードを有し7つの仮想スロットを持つ(n=4およびs=7)リングを考えてみる。この場合リング内のリンク間の仮想スロットを分割すれば十分である。ノードは例えば初期化時に、どのリンクにいくつの仮想スロットがあるかを決定することができる。図2の場合次のように決定される。
・ノード0からノード1のリンクが2つの仮想スロットを持つ。
・ノード1からノード2のリンクが2つの仮想スロットを持つ。
・ノード2からノード3のリンクが2つの仮想スロットを持つ。
・ノード3からノード0のリンクが1つの仮想スロットを持つ。
【0032】
図5はこの決定によるノード間のリンクにおける仮想スロットの配置を図示する。スロットが均等に分割しないときスロット機能は表1のように定義される。
Figure 0004414096
【0033】
スロット機能は受け取ったメッセージの「年齢」を判定するために使用することもできる。特に、遅延(i,j)はノードiがノードjから受け取ったメッセージの「年齢」(スロットの遅延に基づく)であるというように、機能「遅延」を誘導することができる。遅延(i,j)=slots(j)+slots(next(j))+...+slots(prev(i))で、このときprev(i)=n+i-1 mod n if i≠jで、遅延(i,i)=0と計算される。図5について、表2は遅延機能((スロット単位での)メッセージ遅延の計算)を提供する。
Figure 0004414096
表2は例えば、ノード2がノード0から受け取ったメッセージは4スロット前に送信されたことを示している。
【0034】
特定のノードが大域順序付けを受けていない場合、それでも仮想スロット抽象および関連する遅延機能は機能するが、それに応じて変更されることもある。例えばノードN1が順序付けを受けていない場合、それでも表2に示すようにメッセージがノードN0からN2に伝わるのに4仮想スロットを要する。
【0035】
いくつかの実施形態では、メッセージがmスロットの経過時間であるときに(mが遅延機能におけるスロットの最大数であるとき(例えばm=6)であるとき)、同一の仮想時間に送信された要求のメッセージはいずれも受け取られている。この時点で順序付けを完了することができる。
【0036】
図4は、図3のノードN2の制御回路40の例示的実施形態に含まれるある種の回路を図示する。図3および図4を参照すると、位置付け回路60は、導体70上で受信回路42によって受信されたメッセージ、または導体76上でプロセッサ30から受信されたメッセージを順序付けバッファ62内の適切な位置に提供する。処理回路66はメッセージをプロセッサ39に提供するなど多様な機能を実行することもできる。いくつかの実施形態では、処理回路66はキャッシュ34などのメモリのスヌープを開始する。順序付けバッファ62はリング上の各スロット用の位置を含んでいる。位置は大域順序で配置され、最も上にあるものが大域順序では最後になり、底にあるものが大域順序では一番先になる。メッセージが初めに送信された仮想時間によって、1つ以上の位置が同一の仮想時間内にあることがある。位置付け回路60は、その仮想時間に基づいてメッセージを適当な初期位置に置く。次いで新たなメッセージが受け取られると、以前に置かれたメッセージは古くなり順序付けバッファ62の底部に向かって移動する。(いくつかの実施形態では、メッセージは順序付けバッファ62の底部に向かって物理的に位置を変えるのではなく、ビットの変化を受けて古くなることもある。)いくつかの実施形態では、特定のメッセージがともにリンクされていることが望ましい。例えば、同一のアドレスに対する特定のスヌープ要求はポインタを介してリンクしてよい。いくつかの実施形態では、位置付け回路60はこうしたポインタを提供する。また任意選択の調整回路64を使用してデータを位置間で移動および/または変更することもできる。メッセージは位置付け回路60が受け取ったメッセージと比較して調整することもできるが、底位置にあるメッセージは大域順序になっており、これについては各ノードが一致している。メッセージは導体72を介して送信回路48に、または導体76を介してプロセッサ30に、または他の回路に提供される。いくつかの実施形態では、順序付けバッファ62の底位置だけが出て行くメッセージを保持することができる。他の実施形態では、どの位置でも出て行くメッセージを保持することもある。導体72と順序付けバッファ62との結合は、出て行くメッセージを保持するいずれの位置に対してバッファ62を順序付ける順序の出力を表す。混乱を避けるため、および詳細は実施態様に特有であるため、すべての制御回路(例えばインターフェース回路)および図3および図4に関連する導体は図示していない。メッセージは、順序付けバッファ62において、処理回路66によって受信されたときとは異なる形態をとりうることに注意されたい。
【0037】
b.「スカイライン・ダイアグラム」による視覚化
ノード2のための順序付けバッファ62のような順序付けバッファの動作は、「スカイライン・ダイアグラム」によって視覚化することができる。図6は、それぞれノード0、1、2、3に関する例示的スカイライン・ダイヤグラム102、104、106、108を図示する。したがってスカイライン・ダイヤグラム106はノード2内での順序付けバッファ62の動作を図示している。スカイライン・ダイヤグラムはs個以上の位置(sはスロットの数)を示しているが、s個の位置だけを同時にふさぐことができる。位置付け回路(例えば図4の)は、図6に図示するものに類似のデマルチプレクサ(DEMUX)を含んでおり、それがメッセージおよび送信ノードID番号をスロットまたはノード内のプロセッサから受ける。スカイライン・ダイヤグラムのカラムは異なるノードからのメッセージに対応する。デマルチプレクサは、メッセージを送信ノードIDに対応するカラムに割り当てる。すなわち、カラム0はノードN0が送ったメッセージを保持し、カラム1はノードN1が送ったメッセージを保持する等である。カラムの高さは異なり、仮想スロットsから上記で定義された遅延機能を引いた数になる。例えばノード1について図中のカラム3の高さは、s−遅延(1,3)=7−3=4になる。説明を簡潔にするために、7つの仮想スロットを持つリングの場合、カラムのセクションをレベル1、レベル2、レベル3、レベル4、レベル5、レベル6と呼ぶが、全カラムが各レベルを持つわけではない。同一の仮想時間に送信されたメッセージは異なるノードによって異なる仮想時間に受け取られるが、同一のレベルに位置付けされる。
【0038】
メッセージは受け取られると、そのメッセージを送ったノードに対応するカラムの最上部に置かれる。後続のスロットが受け取られると全メッセージは古くなり1レベル下がる。底に到達したときメッセージはs−1スロットの経過時間(この例では6スロットの経過時間)であり、同一のスロット年齢のどのメッセージが優先順位を得るのかを決定することにより、大域順序付けを完了することができる。ノードが例えばナンバ・カウンタを介して仮想時間を把握する必要はないことに注意されたい。むしろ回路は単にメッセージを順序付けバッファ内の適切な位置に配置し、1レベル移動させることによって他のメッセージを古くする。さらに順序付けバッファ62はスカイライン・バッファのすべての構成要素を備える必要はない。例えば、スカイライン・バッファにはスロットの数より多い位置がある。順序付けバッファ62には各スロットに対して1つの位置がある。しかし本発明の実施形態は、順序付けバッファ62とは異なる順序付けバッファをもって実施してもよい。
【0039】
i.例:4スロットが同一の仮想時間に送られる場合
図6、7、8、9は図2のリングについての例を図示する。各ノードは仮想スロット内のメッセージの送信を同一の仮想時間(VT0)に開始する。仮想スロットはリングに沿って移動し、順番に4つのメッセージを搬送する。ノード受信順序は各ノードによって異なる。それでも4つのすべてのノードは4つのメッセージが同一の仮想時間に送信されたことを正確に判定する。
【0040】
仮想時間VT0に、ノードN0がスロットS0内のメッセージを初めに送信し、ノードN1がスロットS2内のメッセージを初めに送信し、ノードN2がスロットS4内のメッセージを初めに送信し、ノードN3がスロットS6内のメッセージを初めに送る。しかしそのことは瞬時には各ノードには知られない。むしろ異なる時間に異なるスロットが異なるノードの順序付けバッファに送られる。仮想時間VT0に、スロットS0、S2、S4、S6はそれぞれノードN0、N1、N2、N3の順序付けバッファに提供される。図6でスロットS0、S2、S4、S6のメッセージはそれぞれ、スカイライン・ダイヤグラム102、104、106、108のカラム0、1、2、3のレベル0において受け取られる。図6〜10で、記号「S0」「S2」「S4」「S6」がスロットS0、S2、S4、S6内に搬送されたメッセージを表すことに注意されたい。無論、スロット自体は順序付けバッファ内にはない。
【0041】
仮想時間VT1に、スロットはそれぞれリング上で1レベル先に進む。すなわちスロット0はVT0時にスロット1があった位置に進み、スロット1はVT0時にスロット2があった位置に進み、以下このようにしてスロット6はVT0時にスロット0があった位置へと進む。スロットがノードに入ると、スカイライン・ダイヤグラム内のメッセージが古くなり次のレベルへ移動する。したがって図7に示すように、スロットS0、S2、S4、S6のメッセージはそれぞれスカイライン・ダイアグラムのカラム0、1、2、3のレベル1へ進む。また仮想時間VT1に、ノード3のスロットS6のメッセージはノードN0の順序付けバッファによって受け取られる。スロットS6のメッセージはスカイライン・ダイヤグラム102のカラム3のレベル1に置かれる。カラム3はカラム0より短いため、スロットS0およびS6のメッセージは仮想時間VT1においてスカイライン・ダイヤグラム102で同一レベルにある。メッセージはもともと同一の仮想時間に送信されたのでこれで意味をなす。
【0042】
リング内でのスロットの各前進にともない、異なるノードから発したが同一の仮想時間に送信されたスロットを異なるノードが受ける。先に受け取られたメッセージは、スロットがリングを移動するのに従ってスカイライン・ダイヤグラムに沿って進められる。下記はどのノードがどのスロットをどのノードから受け取り、そのスロットがどこに置かれるかを要約する。
仮想時間VT0において:
N0はS0をN0から受ける(メッセージはカラム0の最上に置かれる)
N1はS2をN1から受ける(メッセージはカラム1の最上に置かれる)
N2はS4をN2から受ける(メッセージはカラム2の最上に置かれる)
N3はS6をN3から受ける(メッセージはカラム3の最上に置かれる)
仮想時間VT1において:
N0はS6をN3から受ける(メッセージはカラム3の最上に置かれる)
仮想時間VT2において:
N1はS0をN0から受ける(メッセージはカラム0の最上に置かれる)
N2はS2をN1から受ける(メッセージはカラム1の最上に置かれる)
N3はS4をN2から受ける(メッセージはカラム2の最上に置かれる)
仮想時間VT3において:
N0はS4をN2から受ける(メッセージはカラム2の最上に置かれる)
N1はS6をN3から受ける(メッセージはカラム3の最上に置かれる)
仮想時間VT4において:
N2はS0をN0から受ける(メッセージはカラム0の最上に置かれる)
N3はS2をN1から受ける(メッセージはカラム1の最上に置かれる)
仮想時間VT5において:
N0はS2をN1から受ける(メッセージはカラム1の最上に置かれる)
N1はS4をN2から受ける(メッセージはカラム2の最上に置かれる)
N2はS6をN3から受ける(メッセージはカラム3の最上に置かれる)
仮想時間VT6において:
N3はS0をN0から受ける(メッセージはカラム0の最上に置かれる)
【0043】
図8は仮想時間VT4におけるスカイライン・ダイヤグラム102〜108内のメッセージを図示する。
【0044】
図9は仮想時間VT6におけるスカイライン・ダイヤグラム102〜108内のメッセージを図示する。各スカイライン・ダイヤグラムは、4メッセージの同一の組合せを持ち、そのメッセージは同一の仮想時間に送信されたためにこれで意味をなす。各ノードは同じ方式を使用して、同一の仮想時間にメッセージ間で優先順位を決定する。例えばより低いノードIDに関連付けられたメッセージはより高いノードIDに関連付けられたメッセージに対して優先順位を得る。
【0045】
仮想時間VT6になるまで、メッセージのすべてが受け取られるわけではなく、メッセージの大域順序も知られない。例えばカラム0内のメッセージが優先順位を得るとすると、ノード3のカラム0内でメッセージが受け取られるのか、またその場合メッセージの内容が何なのかということは通常VT6になるまで知られない。ある種の技術を使用してノードの動作をスピードアップしてもよい。例えばカラム0が最も高い優先順位を持ちカラム3が最も低い優先順位を持つとすると、ノード2の場合、S0、S2、S4のメッセージが最初の3つの優先順位であることがVT4(レベル4)において知られる。S0、S2、S4のメッセージへの応答がS6のメッセージの内容に依存しないと仮定すると、ノードN3はVT6より前にS0、S2、S4のメッセージに対して作用し始めることができる。最優先メッセージは各ノードに対してVT5において知うることができる。実際、ノード3のカラム0のメッセージ以外の全メッセージはその時までに知られる。その場合ノードN0、N1、N2、N3はVT6より前に最優先メッセージに対して作用し始めることができる。しかし各メッセージがスカイライン・ダイアグラムのレベル6において受け取られるまで、メッセージへの対応が行われないようにノードを実施することもできる。あるスカイライン・ダイアグラムは、1つだけの位置を有する1つ以上のカラムを持つこともでき、その場合各メッセージがレベル6に達する前に大域順序が知られる例は少なくなる。
【0046】
ii.例:スロットが異なる仮想時間に送られる場合
図を簡潔にするために、図6〜9はもともと同一の仮想時間に送信されたメッセージの過程だけを図示する。もともと異なる仮想時間に送信されたスロット内のメッセージは、異なるレベルに位置付けされる。例えば仮想時間VT0にノードN0およびN1がスロットS0およびS2内のメッセージをそれぞれ初めに送信し、仮想時間VT1にノードN0およびN1がスロットS6およびS1内のメッセージをそれぞれ初めに送るが、その他にはメッセージを送信しないと仮定する。仮想時間VT0およびVT1に、ノードN0およびN1の順序付けバッファはこれらのノードが初めに送ったメッセージを受ける。スロットS0、S1、S2、S6のメッセージは、スカイライン・ダイアグラム102および104内で仮想時間の各進行とともに古くなる。仮想時間VT2に、スカイライン・ダイアグラム104のカラム0はスロットS0のメッセージを受け取り、スカイライン・ダイアグラム106のカラム1はスロットS2のメッセージを受ける。図10はVT2時のスカイライン・ダイアグラムを図示する。図を簡潔にするために他のメッセージはいずれも示していない。
【0047】
4.順序外れスヌーピング
キャッシュなどのメモリのスヌープはよく知られている。しかしノードが異なる順序でスヌープ要求メッセージを受けるとき、何らかのメカニズムを使用して、キャッシュ・コヒーレンスを維持するために各ノードが同一の順序で要求を見るようにしなければならない。順序外れスヌーピングは、特性(1)〜(3)を提供するさまざまなネットワークで実行することができる。ネットワークはリング内にある必要はない。ネットワークがリング内にある場合、要求を順序付けるのに上記の受動的メッセージ順序付け技術が有用である。しかしリングが使用される場合でも、上記以外の受動的メッセージ順序付け技術を使用して要求を順序付けることができる。
【0048】
順序外れスヌーピング法は、メッセージが迅速に搬送されるがその最終的な順序付け(互いに相対的な)を知るのが遅れることもあるという、基礎となる通信メカニズムのために設計される。本発明のいくつかの実施形態を用いると、スヌープ要求を受け取ってスヌーピングを開始し、一方で最終的なキャッシュ・コヒーレンスを維持することができるようになる。本発明によって要求の順序付けが完了する前にスヌーピングを開始することができる。
【0049】
下記の順序外れスヌーピングについての詳細な技術は、先に引用した特性(1)〜(5)を含んでいる。しかし特性(4)および(5)は必要ではない。
【0050】
結果(スヌープの結果とライトバックの両方)が大域順序で分散している限り、ノード受信順序でスヌープを実行しても差し支えない。タグに関する変更は、スヌープが大域順序で実行されたときに起こる変更である。すべてのノードは同一のメモリ(キャッシュ・コヒーレンス)のビューを持ち、実施態様によっては中間処理同期の方法(ロック、書込み順序付け、割込み順序付け)が保存される。実施態様によっては、スヌープ応答はクリーン(ラインが見つからないまたは無効の(I)状態)、ヒット(独占的(E)または共有(S)状態)hitm(変更された(M)状態)を含んでいるが、本発明はそのように限定されるものではない。
【0051】
順序付けバッファ62など各ノード内の順序付けバッファは、さまざまなメモリ・ライン・アドレスについてのスヌープ要求を受け取る。重要なのは同一のアドレスに対して2つ以上の未処理の要求がある場合である。
【0052】
いくつかの実施形態では、ノードは要求を(ノード受信順序で)受け取ったとき、ノードはすでに到着している要求またはそのノードが発したいずれかの要求に対してその要求を順序付けることができる。時間上それより後に到着する要求は、現存の要求の相対的な大域順序に影響を及ぼしてはならない。
【0053】
表3はある種の例示的キャッシュ・コヒーレンスのトランザクションおよび本発明との関連でスヌープ要求に含まれることもある省略形を提供する。無論、他のトランザクションを使用することもでき、本発明は表3の詳細に限定されるものではない。
【表1】
Figure 0004414096
【0054】
a.スヌープ・プロセスの概要
いくつかの実施形態では、要求がノードによって受け取られるとすぐにスヌープがそれに関して発行される。よく知られているように、読取り−修正−書込み動作がキャッシュ・タグ上で実行される。通常通り新しいタグがコミットされる間、スヌープ結果は即時には要求元のノードに戻されない。その代わり要求が大域に順序付けられるまで古いタグが記憶される。この時点でノードは、大域順序でスヌープされていたら要求のスヌープ結果はどのようになったかを判定することができる。この結果は要求元のノードに戻される。
【0055】
いくつかの実施形態ではスヌープが実行されタグの一致が検出されると、タグ内のMESI(M、E、SまたはI)状態が潜在的に変更される。この変更はMESIビットに機能fが適用されたと見ることができる。(例えばnew_MESI_bits=f(old_MESI_bits)。表4は、例示的な無効MESI機能を提供する。表5は例示的共用MESI機能を提供する。
Figure 0004414096
【0056】
インテル社のある種のプロセッサを使用すると、表5は新しい状態が現行状態ではMであるSになるというように変更される。
【0057】
いくつかの実施形態では、スヌープはBRILOまたはBILO要求に応答して無効MESI機能を、およびBRL要求に応答して共用MESI機能を使用することもある。これら2つの機能が相互に構成することに注意されたい。
inval°inval=inval°share=share°inval=inval;
share°share=share
【0058】
集合{inval,share}が合成中に閉じているということは、適切なスヌープ結果が順序外れスヌーピングが起こった後で計算されうることを意味する。集合が可換である(inval°share=share°inval)ということは、スヌープが順序外れに実行される場合でも、最終的なスヌープ結果は正しい順序で行ったときと同じになるであろうことを意味する。スヌープ動作がタグ上で実行される順序は、最終的なタグ状態から見れば重要ではない。
【0059】
b.スヌープ・プロセスの詳細
以下は、いくつかの実施形態で含まれる追加の詳細事項である。
・スヌープ結果はスヌープが大域順序で実行されたように報告される。したがってタグの元の状態(所定のスヌープより以前)は、大域順序で所定のスヌープより前にあるスヌープ要求がこれ以上到着しないということが判定されるまで保存される。新しいスヌープが大域順序で古いスヌープより前にあれば、元のタグ状態は新しいスヌープに渡される。
・修正されたタグ状態はスヌープ要求の大域順序が知られた後で、大域順序において後続するスヌープ要求に戻される。このことにより、各スヌープ要求はその結果が大域順序で生じたかのように報告することができる。
・スヌープは受信された順序で、原子読取り−修正−書込みシーケンスで実行される。
・元のタグ状態は保存され、同一のラインにヒットしノード受信順序において後に到着するが大域順序において前に順序付けられるスヌープ要求に渡される。
・同一のラインにヒットする(大域順序で)後続のスヌープ要求に対するポインタ(リンクのための)は保持され、修正されたタグ状態が大域順序において後続の要求に渡されることがある。
【0060】
下表6は、本発明のいくつかの実施形態を理解する上で使用されうる特定の特徴についての用語および表記を提供する。
【表2】
Figure 0004414096
【0061】
表6の定義により以下のようなステートメントが理解できよう。
もし(TAG[Request.Index]==Request.Tag)のとき下記の擬似コードについて何かせよ。
【0062】
順序外れスヌーピングは、上記の受動的メッセージ順序付けで使用された構造によって使用してもよい。例えば、SSRBおよびSRBは図3の順序付けバッファ62内にある。いくつかの実施形態では、SSRBはスカイライン・ダイヤグラムで、順序付けバッファを含んでいるノードから要求を受けるカラムにより表され、SRBは他のカラムにより表されことがある。例えば、スカイライン・ダイヤグラム102を図示する図11で、SSRBはカラム0で表され、SRBはカラム1、2、3で表される。ノードがセルフ・スヌープしない場合でも、他のノードに対するそのノードからのスヌープ要求はなお順序付けバッファ内にあり、各ノードが同一の大域順序を持つことに注意されたい。それ自体のスヌープ要求を保持する要求元のノードの順序付けバッファ内の位置は、SSRBと呼ばれることもあるし呼ばれないこともある。位置付け回路60は、要求間のポインタを介して同一のアドレスを持つスヌープ要求をリンクすることがある。
【0063】
いくつかの実施形態では、順序付けバッファ・エントリ(例えばSRBおよびことによるとSSRB)は表7中のフィールドを含んでいることがある。すべてのフィールドが必要ではなく、追加のフィールドが使用されることもある。
【表3】
Figure 0004414096
【0064】
以下は本発明のいくつかの実施形態の動作を説明し、これは時間1、2、3における順序付けバッファ62を示す図12A、12B、12Cおよび時間1、2、3におけるタグ36のメモリ・タグにおけるアドレスXのMESI状態を示す図13A、13B、13Cに関連する例によって図示される。ノード受信順序ではまずスヌープ要求(1)(コマンドC1を含んでいる)が受信され、次いでスヌープ要求(2)(コマンドC2を含んでいる)が、次いでスヌープ要求(3)(コマンドC3を含んでいる)が順序付けバッファ62によって受け取られる。要求(1)、(2)、(3)はそれぞれアドレスXに対する。他のアドレスに対しての要求が含まれることもあるが、図12A、12B、12Cには示していない。順序付けバッファ62がスヌープ要求1を受ける前に、アドレスXはM、E、S状態またはI状態(一般にMESI状態と記される)を有する。
【0065】
MESIプロトコルはキャッシュ・ライン・コヒーレンス・プロトコルの例である。メモリ・タグ36内のMESI状態は、メモリ・キャッシュ・ライン・コヒーレンス状態の例であり、タグ36内のメモリ・キャッシュ・ライン・コヒーレンス状態ビットによって表される。順序付けバッファ62内のMESI状態は、順序付けバッファ・キャッシュ・ライン・コヒーレンス状態の例であり、順序付けバッファ62内の順序付けバッファ・キャッシュ・ライン・コヒーレンス状態ビットによって表される。表4および5は、キャッシュ・ライン・コヒーレンス機能の例である。本発明はMESIプロトコルによって使用すると限定するものではないが、他のキャッシュ・ライン・コヒーレンス・プロトコル(MESI状態のいくらかまたはすべて、および追加のキャッシュ・ライン・コヒーレンス状態を含んでおりうる)とともに使用してもよい。他のキャッシュ・ライン・コヒーレンス・プロトコルの詳細に応じて、表4および/または表5および/または合成中に閉じていて可換性のある他のキャッシュ・ライン・コヒーレンス機能を使用してもよい。
【0066】
アドレスXに対する新しいスヌープ要求がノードによって受け取られると、その要求は順序付けバッファ62内の大域順序になる位置に位置付けられる。順序付けバッファ62は探索されて、順序付けバッファ62内の、やはりアドレスXに対する最も近い前のスヌープ要求および/または最も近い後のスヌープ要求を識別する(最も近い前の一致要求または最も近い後の一致要求と呼ばれる)。前のスヌープ要求は大域順序で先に起こると考えられ、後のスヌープ要求より前に順序付けバッファ62から出て行く。最も近いとは大域順序において最も近くにあることを意味する。ただ1つの前の一致要求しかない場合でも要求は最も近い前の一致要求でありうること、およびただ1つの後の一致要求しかない場合でも要求は最も近い後の一致要求でありうることに注意されたい。新しい要求は、もしあれば最も近い前の一致要求をポイントし、もしあれば最も近い後の一致要求をポイントする。
【0067】
MESI状態は、新しい要求のために順序付けバッファ62のMESIフィールドに提供される。そのMESI状態がどこから来るかは、後の要求で一致するものがあるかどうかによって決まる。後の要求で一致するものがない場合、メモリ(例えばキャッシュ36)内のアドレスXについてのタグ内のMESI状態(すなわちM、E、SまたはIのいずれか)は、新しい要求のために順序付けバッファ位置に提供される。例えば図12Aでキャッシュ36のMESI状態(時間1以前の状態)は、時間1において要求(1)のMESIフィールドに提供される。この例では時間1、2、3は正確な瞬間ではなく時間の幅であることに注意されたい。例えば時間1における図12Aの事象は、やはり時間1における図13Aの事象の前、またはそれと同時に、または後に起こりうる。
【0068】
後の要求で一致するものがある場合、後の一致する要求のMESI状態はコピーされ新しい要求のMESI状態になる。例えば図12Bで、時間2における要求(2)のMESI状態は、時間1における要求(1)のMESI状態と同じである。一致する前の要求および後の要求を持つ要求があることに注意されたい。例えば要求(3)は要求(1)より前で要求(2)よりも後である。したがって前段で述べたように、要求(1)中のMESI状態は要求(3)のMESI状態にコピーされる。このようにして新しいMESIビットは大域順序で先へ進み、出て行く要求とともに含まれる。
【0069】
いくつかの実施形態では、要求のMESIビットが変更できないことを確かめた時間の後に(例えば要求が順序付けバッファ62を出るときに)、出て行く要求の最も近い後の一致する要求のMESI状態が更新される。更新されたMESI状態は、機能への入力が最も近い後の一致要求内の現在のMESI状態であるときに、適切なMESI機能(例えば表4または5)によって生成された状態である。どのMESI状態が適切であるかは、出て行く要求のコマンドによって決まる。指摘したように、スヌープはBRILOまたはBILOコマンドに応答して「無効(invalid)」(表4)を使用し、BRLコマンドに応答して「共用(share)」(表5)を使用することができる。例えば図12Cで要求(2)が出て行く際、要求(3)のMESI状態はfC2(MESI)であり、すなわち要求(3)を保持する順序付けバッファ62の位置についての新しいMESI状態が、要求が出て行く前にコマンドC2に対するMESI機能に適用された要求(2)のMESI状態の結果であることを意味する。アドレスXに対して他の要求がないと仮定すると、要求(3)が出て行くとき、要求(1)のMESI状態はfC3(fC2(MESI))になるはずである。他の実施形態では最も近い後の一致要求のMESI状態は、順序付けバッファ62が新しい要求を受け取って先の要求のMESI状態が確立されるごとに変更される。いずれの実施形態でも、更新されたMESI状態は先の要求に送られる。調整回路64はMESI状態を修正し、順序付けバッファの位置の間でMESI状態を移動してもよい。例ではfC1、fC2、fC3は、コマンドC1、C2、C3によって表4、表5または類似の表を実施することもできる。例えばC1がBRILOである場合、fC1は表4を実施することができる。
【0070】
メモリ・タグ(例えばキャッシュ62)内のMESI状態は、適切なMESI機能によって生成されるMESI状態によって更新される。その場合メモリ・タグ内の現在のMESI状態はMESI機能への入力である。どのMESI機能が適切であるかは、新しいスヌープ要求のコマンドによる。例えば図13Aで、時間1におけるアドレスXについてのMESI状態はfC1(MESI)であり、それは時間1の前におけるキャッシュ62内のメモリ・タグのMESI状態がコマンドC1についてのMESI機能に適用されることを意味する。図13Bで時間2におけるアドレスXについてのメモリ・タグ内のMESI状態は、fC2(fC1(MESI))である。図13CでアドレスXについてのメモリ・タグ内のMESI状態は時間3においてfC3(fC2(fC1(MESI)))であり、それは要求(2)が出て行く前または後になる。
【0071】
いくつかの実施形態では、図12A、12B、12Cおよび13A、13B、13C中の先述のアクティビティは、順序付けバッファのSRB部分内の要求についてだけ実行される。例えばSRB部分内の要求だけが一致する要求である。他の実施形態では、アクティビティは順序付けバッファのSRBおよびSSRB部分両方の要求について実行することができる。
【0072】
引き出される際の要求のMESI状態と、応答するメモリ・タグのMESI状態は要求のノード受信順序にかかわらず同じである。
【0073】
要求が出て行くときにスヌープ応答(例えばクリーン、ヒット、hitm)は、要求が引き出されるときの要求のMESI状態および出て行く要求のコマンドに基づく機能を通して、制御回路40で計算される。本発明はスヌープ応答の特定のタイプまたはスヌープ応答を計算するための機能に限定されるものではない。いくつかの実施形態では、導体22〜28のうち2つがヒットおよびhitmスヌープ応答信号を専用的に搬送するのに使用される。単なる例であるが、調整回路64はヒットおよびhitm状態を計算しそれらを導体72に供給することもできる。ワイヤードOR技術を使用して、ノードがヒットまたはhitm導体を低くプルすることもできる。ヒットもhitmもアサートされない場合、クリーンなスヌープ応答が推論される。スヌープ応答は要求から固定時間(例えば1リング周期)が経過した後に送られる。本発明は、スヌーピングのまたはスヌープ要求を送る特定の実施態様に制限されるものではない。スヌープすることができるメモリを各ノードが備える必要はない。例からリングは、スヌープするメモリのないチップセットを持つノードを含んでいることができる。そのような実施形態では、そのノードは順序付けバッファを含んでも含まなくてもよい。他のノードの順序付けバッファおよび位置付け回路はそれに応じて構成される。
【0074】
以下の擬似コードは本発明のいくつかの実施形態のスヌーピング動作のもう1つの表現を提供する。実際には擬似コードは、専用ハードウェア、ソフトウェア、ファームウェア、他の何らかの手段またはこれらの組合せによって実施することができる。
//ファンクション・テンプレート
//
//大域順序で後に順序付けられたエントリで一致するものについてSRBを検索せよ
//一致するエントリがなければNULLを戻せ
SRBindex_t
FindPrevMatch(ReqAddr_t);
//大域順序で前に順序付けられたエントリで一致するものについてSRBを検索せよ
//一致するエントリがなければNULLを戻せ
SRBindex_t
FindSuccMatch(ReqAddr_t);
//スヌープがTAG内で有効なエントリをヒットしたらTRUEを戻す
//現在のMESI状態を戻す
//TAGへの読取りアクセスを実行せよ
BOOL
SnoopTAG(Index_t,Tag_t,*MESI_t);
//現在のMESIおよび要求コマンドに基づいてTAG内のMESIビットを更新せよ
//TAGへの書込みアクセスを実行せよ
void
UpdateTAG(Index_t,Cmd_t,MESI_t);
//TAG更新と同様しかしコマンドおよびSRBテーブルのエントリの更新に使用された古いMESIに基づいて新しいMESIビットを計算する
//TAGに対して何のアクセスもしない
MESI_t
UpdateMESI(Cmd_t,MESI_t);
//MESI状態とコマンドのこの組合せについてのスヌープ状況を戻す
SnoopStat_t
SnoopStatus(Cmd_t,MESI_t);
//新しいSRBエントリを割り当て一致するアドレスを検索せよ
SRBindex_t CurrReq;
//CurrReqはSRB内の次の使用可能なエントリのインデックス
//CurrReqをmanageするためのコードがここにない
SRB[CurrReq]=Req; //SRBエントリへの要求のすべてのフィールドを割り当てる。
SRBIndex_t PrevMatch=FindPrevMatch(Req.Addr);
SRBIndex_t SuccMatch=FindSuccMatch(Req.Addr);
// リング順序でタグ上で読取り−修正−書込みを実行せよ
SRB[CurrReq].Match=SnoopTag(Req.Index,Req.Tag,&SRB[CurrReq].MESI);
if(SRB)[CurrReq].Match){ //snoop hit
UpdateTag(Req.Index.SRB[CurrReq].MESI);

// SRBフィールドを割り当てる
if(PrevMatch){
//大域順序で前の要求に一致するものがある
//前のスヌープ要求が出て行くとMESIビットが戻される
SRB[PrevMatch].SuccMatch=CurrReq;

if(SuccMatch){
//大域順序で後の要求に一致するものがある
//前の要求をポイントしMESIビットを押収する
//このようにもとのMESIビットが大域順序で「前へ移動する」
SRB[CurrReq].SuccMatch=SuccMatch;
SRB[CurrReq].MESI=SRB[SuccMatch].MESI;

//大域順序が確立されSRBエントリが「引き出される」と、われわれはスヌープ状況を報告し、その結果生じたMESI状態を後続の一致するエントリに転送し、それが正確にそのスヌープ状況を報告できるようにする。このようにして、エントリが出て行くと更新されたMESIビットは時間において「後ろへ移動する」。「引き出し」は大域順序で次に引き出されるSRBエントリを指す。Retireインデックスを管理するコードはここには含まれない。
SRBindex_t Retire;
SnoopStat_t SnoopPhase=SnoopStatus(
SRB[Retire].Cmd.
SRB[Retire].MESI);
SRB[SRB[Retire].SuccMatchIndex].MESI=UpdateMESI(
SRB[Retire].Cmd.
SRB[Retire].MESI).
【0075】
5.双方向信号送信
リング上の双方向信号送信のタイプは、(1)異なる方向に対して異なる導体を使用する場合と、および(2)両方の方向とも同じ導体を使用する場合を含んでいる。例えばボーカー(Borker)他の米国特許第5,604,450号等を参照されたい。同一の導体を使用する技術のもとでは、どちらのノードも導体が高いままであればもう一方のノードが論理高信号を送ったことを知り、どちらのノードも導体が低いままであればもう一方が論理低信号を送ったことを知る。各ノードは導体が異なる電圧(例えば1/2VDD)に変化すれば、もう一方のノードが信号を異なる状態で送ったことを知る。この場合のVDDは高い。受信ノードは、その受信回路をVDD/2からVDD/4に変更する。他の方式を双方向信号に使用してもよい。双方向信号方式および方向の選択の詳細の選択によっては、搬送速度を上げ性能を平衡させることができる。
【0076】
図14はノードN0とN1、N1とN2、N2とN3、N3とN0がそれぞれ導体122、124、126、128に双方向に接続されている双方向リング120を図示する。システム10の場合と同じように、導体122〜128の異なる導体が異なる種類の信号を搬送するために使用される。双方向のうち少なくともいくつかはタイプ(2)である。図15を参照すると例えばノードN2内の受信回路84および90は異なる方向に信号を受け取り、送信回路86および88は異なる方向に信号を送る。制御回路82は制御回路40に類似するが両方向に信号を取り扱う。
【0077】
仮想スロット・レイヤおよび対応するアクティビティ(例えばアービトレーション)は、2方向について独立して維持される。1方向における輻輳はもう1つの方向のリングのトラフィックを妨害する必要はない。ただしいくつかの実施形態では、メモリの一貫性が必要とするときにはノードはメッセージを順番に発しつづけることもできる。例えばノードの第1のメッセージが時計回りで送信され、第2のメッセージが反時計回りで送信されたとする。時計回りのリングが輻輳し反時計回りのリングがそうでない場合、ノードは時計回りのメッセージがリング状に置かれるまで、反時計回りのメッセージを発行することを試みない(もし順序付けが必要な場合)。
【0078】
反対方向に送信されたメッセージ(例えばスヌープ要求)を一貫して順序付けられるようにするために回路が含まれてもよい。ノードは両方向のための単一の順序付けバッファを維持することもできる。2方向が完全に同期されれば(おそらく非現実的)、スロット間の固定された位置関係を使用してすべての関与するノードが確実にそれらを一貫して処理できるようにすることができる。
【0079】
2方向が完全には同期されない場合、ノードはあたかも特定の位置関係が存在するかのように要求パケットを処理することができる。特に各ノードは処理スロット内の方向を交互に入れ換えることができる。しかしリングが完全には同期されないと、2つの異なる方向から到着するスロットは入れ替わらないこともある。例えばメッセージBが他の方向から到着する前に、ノードがメッセージAおよびCを連続して時計回りで受けるとする。CはBが到着するまで順序付けバッファ内に置くことができない。しかしノードは待っている間にCを転送すること(および新しい時計周りのスロットを受け取ること)を拒否するため、時計回りのリングを単に保持しておくことは不可能である。そのかわりノードはCを通常通りに転送するが、それを順序付けバッファ内に置く代わりに第1の方向バッファ(例えば時計回りのバッファ)内に置きBが到着するまでそこに保管しておく。それに応答する第2の方向バッファ(例えば反時計周りバッファ)がある。一実施形態では、バッファのうち1つは常に空なので、同一の記憶装置をもって実施することができる。図16は例えばノードN0の順序付けバッファ160を図示する。順序付けバッファ160の動作はスカイライン・ダイヤグラムによって各方向について図示してもよい。2つのスカイライン・ダイヤグラムは図16のように異なる外観を呈するかまたは同一の外観(例えば2つのスカイライン・ダイヤグラム102)を呈する。第1および第2の方向バッファ162および168は位置付け回路164および170に要求を提供し、要求はそこから順序付けバッファ160に提供される。他の配置を使用してもよい。処理回路66に類似の処理回路を含んでいることもできる。
【0080】
2つの方向が任意で互いに「同期はずれ」になると、第1および第2の方向バッファのサイズを制限する方法はない。したがって方向が同期しない見込みを制限することが望ましい。これは、ノードの1つ(例えばN0)−−マスタ・ノード−−に、リング回転ごとに1回の頻度で2方向のクロック・パルスを一貫して再生成させることによって行うことができる。これは2つの方向が完全に同期されることを保証するものではないが、方向が互いからドリフトする可能性を制限し、これにより時計回りおよび反時計回りのバッファのサイズを制限することができる。
【0081】
6.追加情報および実施形態
図示した2つの構造の間または連続しているように図示されている構造内(導体など)に、中間構造(バッファなど)または信号を設置してもよい。図中の四角形の境界線は図示する目的のためで、制限的なものではない。矢印は特定の実施形態における特定の信号の流れを示すが、制御信号およびデータの要求などのあらゆる信号を表すものではない。
【0082】
メッセージ間に空の仮想スロットが全くないか比較的少ない場合、通常大域順序はノード受信順序とは異なったものになる。しかしメッセージが十分な間隔で離れている場合、大域順序はノード受信順序と同じになる。
【0083】
いくつかの実施形態ではリングは2つのノードしか持たず、その場合信号は双方向にノード間を送られる(例えば同時に少なくとも1つの導体上を、および/または1つ以上の導体上を単方向に)。
【0084】
本発明は電圧信号を伝導する導体に限定するものではない。例えば導体は光ファイバー導体でもよい。リング内の2つまたはそれ以上のノードは、電磁信号を通して無線式に接続することもできる。
【0085】
明細書が、構成要素、特徴、構造または特性を「含んでもよい」「含んでいることもある」「含んでいることもできる」と述べる場合、その特定の構成要素、特徴、構造または特性を含んでいる必要はない。明細書中の「いくつかの実施形態では」という参照は、実施形態に関して述べられる特定の特徴、構造、または特性が少なくともいくつかの実施形態で含まれるが、必ずしも本発明のすべての実施形態で含まれる必要性はないことを意味する。頻出する「いくつかの実施形態」は必ずしもすべてが同一の実施形態を指すわけではない。
【0086】
ここで使用する場合、ビットが一定の電圧状態を有するかまたはアサートされた状態に関する範囲内にあるときにビットは「アサート」され、異なる状態を有するかまたはアサート解除されることに関する他の範囲内にあるときにビットは「アサート解除」される。アサートされたまたはアサート解除されたビットは、実施態様によって論理1、論理0、VDD/2または何らかの他の値または値の範囲になりうる。
【0087】
保留要求バッファ(PRB)は、まだノード自体の順序付けバッファに発行されていない、またはもう1つのノードに送信されていないノードの要求を保留する。
【0088】
実施態様によっては、要求は順序付けバッファから出た後に表6中で示す未処理要求バッファ(ORB)に記憶される。このバッファは、新しい要求(内部のまたはスヌープの)を1サイクル中のすべての現在のエントリに対して比較できる内容アドレス指定可能メモリ(CAM)として実施することもできる。このバッファを使用することができる理由は、キャッシュ・タグはライン所有権および責任を反映するが、必ずしもデータの存在を反映するとは限らないためである。キャッシュ・ラインについてのスヌープ応答が受け取られると、要求側はラインについての責任を引き受け、それをキャッシュ内のM状態にセットする。同一のラインに対するもう1つのBRILO要求が到着し、ノードによってスヌープされたと仮定する。キャッシュ・ラインはM状態にあり、ノードは正しくHITMをスヌープ要求結果として戻すが、ノードはそれ自体の(優先の)BRILO要求についてのデータを得る(および一度使用する)まで、ラインについてのライトバック(WB)を搬送してはならない。未処理要求についての情報(スヌープ段階を経て、順序付け完了のために付されたがまだデータを受け取ってはいない)はORBに記録される。ORBおよびPRBは図3および4中で枠で表され、または図示していない追加の枠で表される。
【0089】
実施態様によってはノードに戻るデータを把握するために、ノードは独自の静的識別(ID)を有し、バス上で未処理のN要求(例えばN=16。8ビットのフィールドdeferred ID,DID[7:0]:={AgentType,AgentId[2:0],ReqID[4:0]}に至るまで、各要求を独自に識別しその要求に対するデータ応答にタグ付けをする。
【0090】
いくつかの実施形態では、仮想スロットがメッセージを含まない場合、順序付けバッファには何も挿入されないが現存のメッセージは古くなる。他の実施形態では、順序付けバッファ内の位置にビットが挿入され(メッセージが置かれたはずの位置に)現存のメッセージが古くなる。また他の実施形態では何も挿入されず現存のメッセージは古くならない。
【0091】
この開示の利益を受ける当分野の技術者は、先の説明および図面から本発明の範囲内で多くの他の変例が作られることを理解されよう。従ってそれについて修正を含んでいる以下の請求項が発明の範囲を定義する。
【図面の簡単な説明】
【図1】 本発明の例示的実施形態におけるスロットの実際の配置の概略図である。
【図2】 本発明の例示的実施形態におけるスロットの仮想配置の概略図である。
【図3】 本発明の例示的実施形態における図1および図2のノードの1つにおけるある種の回路の概略図である。
【図4】 本発明の例示的実施形態における図3の制御回路の詳細の概略図である。
【図5】 本発明の例示的実施形態において使用される中間ノード・リンクへの仮想的スロットの配置を示す図である。
【図6、7、8、9、10、11】 スカイライン・ダイアグラムおよび特定のメッセージに関連するデータを保持する関連の回路を示す図である。
【図12】 特定の時間における順序付けバッファ内のあるMESI状態を示す図である。
【図13】 特定の時間におけるアドレス用のメモリ内のタグ状態を示す図である。
【図14】 ノード間の同時双方向送信を含んでいる、本発明の例示的実施形態におけるスロットの仮想配置の概略図である。
【図15】 本発明の例示的実施形態における図14のノードの1つにおける特定の回路の概略図である。
【図16】 双方向送信に関連するスカイライン・ダイアグラムを示す図である。

Claims (3)

  1. 少なくともいくつかがそれぞれメモリを含んでいる、導体を介して接続されたノードと、
    スヌープ要求をノード受信順序で受け取り、スヌープ要求が大域順序になる前にノード内のメモリのスヌープを開始する処理回路と、
    スヌープ要求を受け取り、それらを順序付けバッファの出力において大域順序で提供する順序付けバッファと
    を備えた分散化リング上の多重プロセッサ・コンピュータ・システム。
  2. 少なくともそのうちのいくつかがメモリを含んでいるノードと、
    新しいスヌープ要求が大域順序になる前に新しいスヌープ要求および他のスヌープ要求をノード受信順序で受け取り新しいスヌープ要求に対してノード内のメモリのスヌープを開始する処理回路と、
    新しいスヌープ要求および他のスヌープ要求を受け取り、順序付けバッファの出力において新しいスヌープ要求を大域順序で提供する順序付けバッファと、
    新しいスヌープ要求および他のスヌープ要求を順序付けバッファ内で位置付ける位置付け回路と
    を備えた分散化リング上の多重プロセッサ・コンピュータ・システム。
  3. 分散化リング上の多重プロセッサ・コンピュータ・システムにおいて実施される方法であって、
    異なるノードによって異なるノード受信順序で受け取られたスヌープ要求のスヌープ結果を決定するための方法において
    スヌープ要求を異なるノード受信順序で異なるノードによって受け取るステップと、
    スヌープ要求が大域順序になる前に各ノードのメモリのスヌープを開始するステップと、
    各ノードの順序付けバッファ内でスヌープ要求を位置付けするステップと、そして
    スヌープ要求が大域順序になるまで必要に応じて順序付けバッファ内でスヌープ要求を進めるステップ
    を備えた方法。
JP2000564132A 1998-08-06 1999-07-27 多重プロセッサ・コンピュータ・システム用の順序外れスヌーピング Expired - Fee Related JP4414096B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/130,302 1998-08-06
US09/130,302 US6112283A (en) 1998-08-06 1998-08-06 Out-of-order snooping for multiprocessor computer systems
PCT/US1999/017040 WO2000008564A1 (en) 1998-08-06 1999-07-27 Out-of-order snooping for multiprocessor computer systems

Publications (3)

Publication Number Publication Date
JP2002522827A JP2002522827A (ja) 2002-07-23
JP2002522827A5 JP2002522827A5 (ja) 2006-08-31
JP4414096B2 true JP4414096B2 (ja) 2010-02-10

Family

ID=22444049

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000564132A Expired - Fee Related JP4414096B2 (ja) 1998-08-06 1999-07-27 多重プロセッサ・コンピュータ・システム用の順序外れスヌーピング

Country Status (7)

Country Link
US (1) US6112283A (ja)
JP (1) JP4414096B2 (ja)
AU (1) AU5133799A (ja)
DE (1) DE19983443B4 (ja)
GB (1) GB2357867B (ja)
HK (1) HK1035045A1 (ja)
WO (1) WO2000008564A1 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6574219B1 (en) * 1998-08-06 2003-06-03 Intel Corp Passive message ordering on a decentralized ring
US6377582B1 (en) * 1998-08-06 2002-04-23 Intel Corporation Decentralized ring arbitration for multiprocessor computer systems
US6848003B1 (en) * 1999-11-09 2005-01-25 International Business Machines Corporation Multi-node data processing system and communication protocol that route write data utilizing a destination ID obtained from a combined response
US6604162B1 (en) 2000-06-28 2003-08-05 Intel Corporation Snoop stall reduction on a microprocessor external bus
CA2436412A1 (en) * 2001-02-24 2002-09-06 International Business Machines Corporation Data capture technique for high speed signaling
US20030115402A1 (en) * 2001-11-16 2003-06-19 Fredrik Dahlgren Multiprocessor system
JP2003271574A (ja) 2002-03-14 2003-09-26 Hitachi Ltd 共有メモリ型マルチプロセッサシステムにおけるデータ通信方法
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US7069362B2 (en) * 2003-05-12 2006-06-27 International Business Machines Corporation Topology for shared memory computer system
US7644237B1 (en) * 2003-06-23 2010-01-05 Mips Technologies, Inc. Method and apparatus for global ordering to insure latency independent coherence
US7551564B2 (en) * 2004-05-28 2009-06-23 Intel Corporation Flow control method and apparatus for single packet arrival on a bidirectional ring interconnect
US7360008B2 (en) * 2004-12-30 2008-04-15 Intel Corporation Enforcing global ordering through a caching bridge in a multicore multiprocessor system
US7451231B2 (en) * 2005-02-10 2008-11-11 International Business Machines Corporation Data processing system, method and interconnect fabric for synchronized communication in a data processing system
US20060176890A1 (en) * 2005-02-10 2006-08-10 International Business Machines Corporation Data processing system, method and interconnect fabric for improved communication in a data processing system
US7707387B2 (en) 2005-06-01 2010-04-27 Microsoft Corporation Conditional execution via content addressable memory and parallel computing execution model
US7451297B2 (en) 2005-06-01 2008-11-11 Microsoft Corporation Computing system and method that determines current configuration dependent on operand input from another configuration
US7793040B2 (en) 2005-06-01 2010-09-07 Microsoft Corporation Content addressable memory architecture
JP4912789B2 (ja) * 2006-08-18 2012-04-11 富士通株式会社 マルチプロセッサシステム,システムボードおよびキャッシュリプレース要求処理方法
JP4680851B2 (ja) * 2006-08-18 2011-05-11 富士通株式会社 システムコントローラ,同一アドレスリクエストキューイング防止方法および情報処理装置
ATE516542T1 (de) 2007-10-18 2011-07-15 Nxp Bv Schaltung und verfahren mit cachekohärenz- belastungssteuerung
JP5505516B2 (ja) * 2010-12-06 2014-05-28 富士通株式会社 情報処理システムおよび情報送信方法
US8635411B2 (en) * 2011-07-18 2014-01-21 Arm Limited Data processing apparatus and method for managing coherency of cached data
JP6003607B2 (ja) * 2012-12-14 2016-10-05 富士通株式会社 サーバ装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5025365A (en) * 1988-11-14 1991-06-18 Unisys Corporation Hardware implemented cache coherency protocol with duplicated distributed directories for high-performance multiprocessors
US5018063A (en) * 1988-12-05 1991-05-21 International Business Machines Corporation Method for reducing cross-interrogate delays in a multiprocessor system
US5715428A (en) * 1994-02-28 1998-02-03 Intel Corporation Apparatus for maintaining multilevel cache hierarchy coherency in a multiprocessor computer system
US5751986A (en) * 1994-03-01 1998-05-12 Intel Corporation Computer system with self-consistent ordering mechanism
US5682516A (en) * 1994-03-01 1997-10-28 Intel Corporation Computer system that maintains system wide cache coherency during deferred communication transactions
US5623628A (en) * 1994-03-02 1997-04-22 Intel Corporation Computer system and method for maintaining memory consistency in a pipelined, non-blocking caching bus request queue
US5604450A (en) * 1995-07-27 1997-02-18 Intel Corporation High speed bidirectional signaling scheme
US5881303A (en) * 1996-07-01 1999-03-09 Sun Microsystems, Inc. Multiprocessing system configured to perform prefetch coherency activity with separate reissue queue for each processing subnode

Also Published As

Publication number Publication date
HK1035045A1 (en) 2001-11-09
GB2357867A (en) 2001-07-04
GB2357867B (en) 2003-04-09
DE19983443B4 (de) 2007-07-19
GB0102431D0 (en) 2001-03-14
WO2000008564A1 (en) 2000-02-17
DE19983443T1 (de) 2001-07-26
US6112283A (en) 2000-08-29
AU5133799A (en) 2000-02-28
WO2000008564A8 (en) 2000-04-27
JP2002522827A (ja) 2002-07-23

Similar Documents

Publication Publication Date Title
JP4414096B2 (ja) 多重プロセッサ・コンピュータ・システム用の順序外れスヌーピング
US6615319B2 (en) Distributed mechanism for resolving cache coherence conflicts in a multi-node computer architecture
US6745272B2 (en) System and method of increasing bandwidth for issuing ordered transactions into a distributed communication system
US7856534B2 (en) Transaction references for requests in a multi-processor network
JP3199718B2 (ja) キャッシュ整合性維持方法
AU2013217351B2 (en) Processor performance improvement for instruction sequences that include barrier instructions
JP4700773B2 (ja) スイッチをベースとするマルチプロセッサシステムに使用するための順序サポート機構
JP5575870B2 (ja) 部分読出と非スヌープアクセスとの間のメモリ順序付け要件の充足
US5551048A (en) Ring based distributed communication bus for a multiprocessor network
KR100324975B1 (ko) 잠재적인 제3 노드 트랜잭션을 버퍼에 기록하여 통신 대기시간을 감소시키는 비균일 메모리 액세스(numa) 데이터 프로세싱 시스템
US6557048B1 (en) Computer system implementing a system and method for ordering input/output (IO) memory operations within a coherent portion thereof
JP4410967B2 (ja) デッドロックのないコンピュータシステム動作のためのバーチャルチャネルおよび対応するバッファ割当て
JP7153441B2 (ja) データ処理
US7529893B2 (en) Multi-node system with split ownership and access right coherence mechanism
US20080209135A1 (en) Data processing system, method and interconnect fabric supporting destination data tagging
JP2002533812A (ja) コヒーレンシ維持のための柔軟なプローブ/プローブ応答経路制御
US7543115B1 (en) Two-hop source snoop based cache coherence protocol
US20060179253A1 (en) Data processing system, method and interconnect fabric that protect ownership transfer with a protection window extension
US20050013294A1 (en) Multi-node computer system with active devices employing promise arrays for outstanding transactions
US20050027947A1 (en) Multi-node computer system including a mechanism to encode node ID of a transaction-initiating node in invalidating proxy address packets
US6714994B1 (en) Host bridge translating non-coherent packets from non-coherent link to coherent packets on conherent link and vice versa
JPH10134009A (ja) 分散共用メモリ・コンピュータ・システムにおける無ディレクトリ・メモリ・アクセス・プロトコル用の方法および装置
US7225298B2 (en) Multi-node computer system in which networks in different nodes implement different conveyance modes
JP4906226B2 (ja) マルチプロセッサコンピュータシステムにおいて、ポストされたリクエストのための別個のバーチャルチャネルを実現するためのシステムおよび方法
US20190138630A1 (en) Techniques for implementing a split transaction coherency protocol in a data processing system

Legal Events

Date Code Title Description
A521 Request for written amendment filed

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

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080819

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090106

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090512

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090812

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090819

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090914

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20091020

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091119

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

Free format text: PAYMENT UNTIL: 20121127

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees