(57)【特許請求の範囲】
【請求項１】
マルチプロセッサコンピューティング環境におけるメッセージ受渡しのオーバランを防止するコンピュータシステムであって、
インタコネクションと、
該インタコネクションに接続されたマルチプロセッサノード群と、
該インタコネクションに結合され、該マルチプロセッサノード群を通してのメッセージの受渡しを制御するクレジットベーズドメッセージ受信手段であって、クレジットレジスタ群に結合されたメッセージバッファを含み、一つの受信側ノード内の該クレジットレジスタ群の各クレジットレジスタを一つの送信側ノードに対応させ、該クレジットレジスタに格納されたクレジット値に基づいて該メッセージバッファへの書込みを制御し、該クレジット値が、一つの関連する送信側ノードからパケット群を受信するために該メッセージバッファの利用可能な容量を表す、クレジットベーズドメッセージ受信手段と、
を具備するコンピュータシステム。
【請求項２】
該メッセージバッファが、読取り／書込みアクセスのための一組のポインタを有するＦＩＦＯによって構成される、請求項１に記載のコンピュータシステム。
【請求項３】
該メッセージバッファのサイズが次の条件、バッファサイズ≧パケットサイズ＊ノード１つ当たりのクレジット＊ノード数、を満たす、請求項１に記載のコンピュータシステム。
【請求項４】
該クレジット値が、該利用可能な容量を、メッセージの最大数として表す、請求項１に記載のコンピュータシステム。
【請求項５】
該クレジット値が、該利用可能な容量を、パケットの数として表す、請求項１に記載のコンピュータシステム。
【請求項６】
該メッセージバッファ内のメッセージへのアクセスに応じて該クレジット値が更新される、請求項１に記載のコンピュータシステム。
【請求項７】
該クレジット値がプリセットされる、請求項６に記載のコンピュータシステム。
【請求項８】
マルチプロセッサノード群の各ノードが少なくとも一つのプロセッサと一つのメモリとを具備する、請求項７に記載のコンピュータシステム。
【請求項９】
該メッセージバッファと該クレジットレジスタ群とが、マルチプロセッサノード群の各ノード内のメッシュコヒーレンスユニットの一部である、請求項８に記載のコンピュータシステム。
【請求項１０】
該クレジット値は正又はゼロのみである、請求項１に記載のコンピュータシステム。
【請求項１１】
一つの送信側ノードは、他の送信側ノードに割当てられた、該メッセージバッファの部分に書込むことができない、請求項１に記載のコンピュータシステム。
【請求項１２】
該クレジットベーズドメッセージ受信手段は、一つの復号器と該クレジットレジスタ群とに結合された一つのマルチプレクサを具備する、請求項１に記載のコンピュータシステム。
【請求項１３】
インタコネクションと、
該インタコネクションに接続されたマルチプロセッサノード群と、
該インタコネクションに結合されたクレジットベーズドメッセージ受信手段であって、クレジットレジスタ群に結合されたメッセージバッファを含み、一つの受信側ノード内の該クレジットレジスタ群の各クレジットレジスタを一つの送信側ノードに対応させた、クレジットベーズドメッセージ受信手段と、
を具備するマルチプロセッサコンピューティング環境におけるメッセージ受渡しのオーバランを防止する方法であって、
クレジットベーズドメッセージ受信手段が、少なくとも一つの送信側ノードから受信側ノードへのメッセージを一時的に記憶するメッセージバッファを使用する段階と、
クレジットベーズドメッセージ受信手段が、クレジットレジスタ群に記憶されているクレジット値群を使用する段階であって、各クレジット値を、前記少なくとも一つの送信側ノードに対応させ、かつ、該少なくとも一つの送信側ノードからの着信メッセージを該メッセージバッファ内に書込む制御に使用する、段階と、
クレジットベーズドメッセージ受信手段が、該少なくとも一つの送信側ノードに対応する該クレジット値を調整するために、該メッセージバッファに対する該少なくとも一つの送信側ノードのアクセスの数を判定する段階であって、各クレジットレジスタ内のクレジット値が、受信側ノードが該対応する送信側ノードから受取り可能なメッセージの最大数を表すものである、段階と、
を具備する方法。
【請求項１４】
クレジットベーズドメッセージ受信手段が、該送信側ノードに対応するクレジットレジスタを選択するために送信側ノードＩＤを使用する段階、を更に具備する、請求項１３に記載の方法。
【請求項１５】
クレジットベーズドメッセージ受信手段が、割込み信号を受取ることによって又は該メッセージバッファのポインタレジスタ群を周期的にポーリングすることによってメッセージの到着を検出する段階、を更に具備する、請求項１３に記載の方法。
【請求項１６】
クレジットベーズドメッセージ受信手段が、該送信側ノードからの着信メッセージを廃棄すべきか否かを決定するために送信側ノードのクレジット値を使用する段階、を更に具備する、請求項１３に記載の方法。
【請求項１７】
クレジットベーズドメッセージ受信手段が、クレジットの欠如のためにメッセージが廃棄されるときに、割込みを発生させるか、オーバフロー信号を発生させるか、又はオーバフロー情報を記録する段階、を更に具備する、請求項１３に記載の方法。
【請求項１８】
メッセージオーバラン防止コンピューティングシステムであって、
インタコネクションと、
該インタコネクションに接続されたマルチプロセッサノード群と、
を具備し、該マルチプロセッサノード群の各ノードが、
バスと、
該バスに接続されたキャッシュを具備するプロセッサ群と、
該バスに接続された入出力ユニットと、
メモリユニットと、
該バスに接続されたメッシュコヒーレンスユニットと、
を具備し、該メッシュコヒーレンスユニットが、
該メモリユニットを制御するメモリコントローラと、
クレジットベーズドメッセージ受信手段と、
を具備し、該クレジットベーズドメッセージ受信手段が、
該インタコネクションからパケットを受信する入力部と、
該入力部に結合されたバッファと、
該入力部に結合され、該パケットのＩＤを復号する復号器と、
該復号器と該バッファとに結合され、該復号器の復号結果及び該バッファの内容に基づきクレジットを調整する信号を作成するクレジット調整論理ユニットと、
クレジットを調整する該信号に基づきクレジットが調整されるクレジットレジスタを有し、該クレジットレジスタが一つの送信側ユニットに対応するように該クレジット調整論理ユニットに信号を戻すクレジットレジスタ群と、
該復号器と該クレジットレジスタ群とに接続され、該復号器の復号結果に基づき、該クレジットレジスタと関連するクレジット値を決定し受け渡すマルチプレクサと、
該クレジット値とクレジット無しに対応する値とを比較してクレジットが残っているかを決定することにより、受け渡されたクレジット値を評価するクレジット評価器と、
該バッファと該クレジット評価器とに結合され、該クレジット評価器の評価結果を使用して、該パケットが該バッファに書込まれるのを許容すべきか否かを決定する読取り／書込み制御ユニットと、
を具備し、該クレジット調整論理ユニットは、該読取り／書込み制御ユニットに結合され、該バッファに対しパケットが読取られるか、読取られないか、書込まれるか、又は書込まれないか、に依存してクレジットレジスタ群の各クレジット値を調整する、
システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータ通信プロトコルに一般的に係わり、さらに特にマルチプロセッサコンピュータシステムにおけるクレジットベーズドメッセージプロトコルに係わる。
【０００２】
なお、本願は、1998年５月８日付けの米国仮出願No. 60/084,795による利益を請求するものである。
また、本願は、次の同時係属出願と関連している。同時係属米国特許出願番号 09/041,568 、「パイプライン化されたスヌーピープロトコルを有する相互接続用マルチプロセッサノードのためのキャッシュコヒーレンスユニット」の名称で、1998年３月12日に出願、同時係属米国特許出願番号 09/003,771 、「統合されたメッセージパッシングサポートを備える分散共有メモリマルチプロセッサのためのメモリ保護メカニズム」の名称で、1998年１月７日に出願、同時係属米国特許出願番号 09/003,721 、「分散共有メモリマルチプロセッサシステムのための統合されたメッセージパッシングおよびメモリ保護を備えるキャッシュコヒーレンスユニット」の名称で、1998年１月７日に出願、同時係属米国特許出願番号（未知）、「分散共有メモリマルチプロセッサのための分割疎ディレクトリ」の名称で、1998年３月30日に出願、同時係属米国特許出願番号（未知）、「ネットワーク通信におけるデッドロックを回避するためのコンピュータアーキテクチャ」の名称で、1999年４月２日に出願。参考として、上記の出願の全てを本願発明の全体に亘って取り入れている。
【０００３】
【従来の技術】
マルチプロセッサコンピュータシステムは、高速相互接続ネットワークを通じて通信する複数のプロセッサノードによって構成されている。各々のプロセッサノードは、一般的に、プロセッサとローカルランダムアクセスメモリ（ＲＡＭ）とを含む。個々のプロセッサノードで使用可能なリソースの利用を最大化するために、計算タスクが各プロセッサノードに分割される。プロセッサノード間でタスクを分割することは、計算結果を得るために必要とされる時間を減少させることが可能であるが、このことは、１つのノードで処理されているタスクの一部分が、別のプロセッサノードによって処理されているそのタスクの別の部分の結果に依存する可能性があるということを意味する。個々のサブタスクが、ネットワークを介してそのサブタスクの処理に関連した情報を交換し合い、各サブタスクの処理を同期化させなければならない。
【０００４】
様々な通信方法が存在する。共用記憶域通信方法は、各プロセッサが別のプロセッサによって書き込まれた情報を単純に読み取ることが可能なので、非常に高速である。しかし、この方法では、１つのサブタスクによって通信のために使用されるクリティカル記憶域が、別のタスクによってオーバライトされることからは保護されていない。一方、メッセージ受渡しモデルでは、各プロセッサがそれ自体のメモリだけにしかアクセスできず、したがって、メッセージを明示的に構成してそれを他のプロセッサに送ることによってだけ、他のプロセッサと通信することが可能であるにすぎない。１つのプロセッサが別のプロセッサのメモリに書き込むことが不可能なので、このモデルは通信を保護する。
【０００５】
こうした通信方法のどちらにおいても、第１のプロセッサノードが第２のプロセッサノードにメッセージを送るときに、第１のノードが第２のノードからの肯定応答を待機する。メッセージが第２のノードに到達すると、３つの可能性がある。すなわち、メッセージが受け取られるか、メッセージが失われるか、メッセージがブロックされる。メッセージ受信側プロセッサノードがビジー状態であるかまたは満杯状態であるために、そのメッセージを処理することが不可能である場合には、そのメッセージが失われる可能性もある。受信側プロセッサノードがメッセージの損失を示すメッセージを戻す可能性もあり、または、そのノードが沈黙状態のままである可能性がある。メッセージがブロックされる場合には、通信インタフェースがそのシステムを渋滞させ、その渋滞が逆方向に伝播され、ネットワークを輻輳させおよび／またはシステムに損傷を与えることになる。
【０００６】
着信メッセージを受信するための効率的な方法は、当該受信側ノードと通信することが可能である全ての送信側ノードの間で共有される受信側ノードメモリバッファに、着信メッセージが書き込まれることを可能にする。いずれかの特定の送信側ノードが、例えば、その送信側ノードにおけるソフトウェアエラーまたはハードウェアエラーのために、メッセージを連続的に受信側ノードに送り続ける場合には、その送信側ノードが受信側ノードをオーバランして共有バッファを満杯にする可能性がある。この場合には、追加の着信メッセージがネットワーク内で破棄されるか阻止される可能性がある。いずれの場合でも、誤りメッセージの洪水が、他のノードからの適正なメッセージの処理に干渉することになるだろう。
【０００７】
【発明が解決しようとする課題】
したがって、必要とされているものは、上記欠陥を克服するメッセージ受渡しシステムである。
【０００８】
【課題を解決するための手段】
本発明は、マルチプロセッサノードコンピュータシステムにおけるある１つのノードが別のノードから受け取ることが可能であるパケットの最大数を制限するためのクレジットベースの機構を提供する。本発明は、各ノード内にバッファプールとクレジット機構とを含み、このバッファが他のノードによって送られる着信パケットを一時的に記憶する。このクレジット機構は、送信側ノードが上記バッファプールのその割当て部分を越えてバッファを使用することが不可能であるように、ある１つのノードが別のノードから受け取ることが可能である予め決められた個数のパケットを割り当て、したがって、バッファプールがオーバフローしないことを確実なものにする。ノードが不適切なパケットを伝送し続けることが可能であっても、そうしたパケットがパケットバッファプールの中に書き込まれず、したがって、廃棄される。パケットバッファがオーバフローしないので、受信側ノードが他のノードとの通信を続けることが可能である。
【０００９】
【発明の実施の形態】
本発明は、マルチプロセッサノードコンピュータシステムにおける、ある１つのノードが別のノードから受け取ることが可能であるパケットの個数を制限するためのクレジットベースの機構を提供する。
【００１０】
図１は、複数のプロセッサノード１０２ａ−ｔとノードインタコネクション１０４とを含む、マルチプロセッサコンピュータシステム１００のブロック図であり、このインタコネクションはノード１０２間の二点間通信を可能にする。各々のノード１０２は、インタコネクション１０４内において固有ノードＩＤによって識別され、スタンドアロン形コンピュータシステムとして構成されることが可能であり、または、他のプロセッサノード１０２と組み合わされてサイト１０６を形成するように構成されることも可能である。各々のプロセッサノード１０２は、インタコネクション１０４を介して他のノード１０２と通信するために、メッセージ受渡しプロトコルを使用する。本発明では、メッセージ交換速度を増加させるためのプロセッサノード間キャッシュコヒーレンスプロトコルとメッセージ受渡しプロトコルとの両方のために、プロセッサノード１０２が、サイト１０６の場合に、同じ通信チャネル、すなわち、インタコネクション１０４を使用する。これは、メッセージ受渡しプロトコルがキャッシュコヒーレンスプロトコルと緊密に一体化されているからである。したがって、本発明は、入力／出力チャネルとインタコネクションとを経由してメッセージの受渡しを行う従来技術に比較して有利である。さらに、図１は、単なる一例として二点間通信を示しているにすぎず、本発明はさらに同報通信相互接続にも使用可能である。
【００１１】
図２は、一例として示されている図１のプロセッサノード１０２のブロック図であり、複数のプロセッサ２０２ａ−ｄと、メモリサブシステム２０６と、入力／出力サブシステム２０８と、メッシュコヒーレンスユニット（ＭＣＵ）２１０とを含む。各々のプロセッサ２０２ａ−ｄが別々のキャッシュ２０４ａ−ｄを有する。機能ユニット２０２ａ−ｄ、２０６、２０８、２１０が、制御信号とアドレス信号とデータ信号とを伝送するためにプロセッサバス２１２に接続されている。インタコネクション１０４に接続されている、本発明を具体化するＭＣＵ２１０が、プロセッサノード１０２相互間のキャッシュコヒーレンスとメッセージ経路とメモリ保護とを調整する。
【００１２】
ＭＣＵ２１０はクレジットベースのメッセージ受信ユニット３５４を含み、このメッセージ受信ユニット３５４は、送信側ノード１０２が受信側ノード１０２にパケットを過剰に伝送して受信側ノード１０２のメモリを溢れさせることを防止するようにメッセージの受渡しを行うための、バッファプール３０１（図３）と制御機構とを含む。クレジットベーズド受信ユニット３５４が、インタコネクション１０４を経由して、送信側ノード１０２からメッセージを受け取る。この好ましい実施形態では、メッセージが、各パケットが６４バイトである複数のパケットに分割される。クレジットベーズド受信ユニット３５４は、送信側ノード１０２が受信側ノード１０２に送ることが可能であるパケットの個数（すなわち、クレジット）を記憶する。バッファプール３０１が、送信側ノード１０２から受け取られたメッセージを保持する。上記制御機構は、受信側ノード１０２が送信側ノード１０２から受け取ることが可能である予め決められた個数のパケット（すなわち、クレジット）を割り当てる。送信側ノード１０２がパケット割当て個数を越えるパケットを送り出すときには、送信側ノード１０２がそのクレジットを回復するまで、または、そのシステムがリセットされるまで、余分のパケットが廃棄されることになる。パケットが、バッファプール３０１内に書き込まれずに廃棄されるので、バッファ３０１はオーバフローすることがあり得ず、したがって、受信側ノードが他のノードと通信を続けることが可能である。その結果として、本発明は、個々の送信側ノードのための専用バッファを確保する従来技術の方式に比較して有利である。さらに、本発明は、従来技術の方式に比較して、より少ないリソースしか必要とせず、かつ、より低コストである。
【００１３】
この好ましい実施形態では、本発明は、送信側ノードに通知することなしにメッセージを廃棄するので通信を保証しない、Ｉｎｔｅｒｎｅｔ  Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ（ＵＤＰ）のようなプロトコルを使用する。しかし、本発明は、例えば、通信の信頼性が別のソフトウェアレイアによってもたらされるウィンドウベースのプロトコルと組み合わせて使用されることも可能である。このソフトウェアは、それがハードウェアよりも高レベルのレイアにおいてウィンドウベーズドプロトコルを使用する限り、パケット損失を検出するためにパケットのシーケンスを検査することが可能である。本発明は、オーバフローに起因する損失パケットを検出するために、様々なソフトウェアをプロセッサ２０２上で実行することが可能である。本発明は、割込みを発生させるために、情報を記録するために、または、メッセージパケットが廃棄されるときにノード単位でオーバフローフラグを設定するために、追加のハードウェアを追加することが可能である。本発明は、損失パケットの個数をカウントするために１つまたは１組のカウンタを加えることが可能である。
【００１４】
メモリコントローラ３５６が、メッセージ受信ユニット３５４からメモリ２０６への受信パケットの受渡しを制御する。
【００１５】
図３は、図２のクレジットベーズドメッセージ受信ユニット３５４のブロック図であり、このメッセージ受信ユニット３５４は、バッファ３０１と、クレジットレジスタバンク３０２（３０２−１から３０２−Ｎ）と、復号器３０６と、マルチプレクサ３１０と、クレジット評価器３１２と、読取り／書込み制御論理回路３１４と、クレジット調整論理回路３１８とを含む。バッファ３０１は、ライン３００３上で入力パケットを受け取り、ライン３００９によってメモリ２０６に出力パケットを供給する。バッファ３０１は、全ての送信側ノード１０２によって共有されており、この好ましい実施形態では、１組の読取り／書込みポインタを含む先入れ先出し（ＦＩＦＯ）メモリを含む。パケットがバッファ３０１内に書き込まれるときには、書込みポインタが１つだけ先に進められる。同様に、パケットがバッファ３０１から読み取られるときには、読取りポインタが１つだけ先に進められる。送信側ノード１０２が正の「クレジット」を有するときだけ、ライン３００３上のパケットがバッファ３０１内に書き込まれる。送信側ノード１０２が「ゼロ」クレジットを有する場合には、ライン３００３上のパケットはバッファ３０１内に書き込まれることがなく、したがって、このパケットが廃棄される。ライン３０２９上の信号がバッファ３０１の読み書きを制御し、すなわち、この信号は、ライン３００３上のパケットがバッファ３０１内に書き込まれ、さらにその後でバッファ３０１から読み取られることを実行可能化する。バッファ３０１は、受信ユニット３５４の一部分として示されているが、受信ユニット３５４の外側に存在することも可能である。
【００１６】
クレジットレジスタ３０２は、送信側ノード１０２が受信側ノード１０２に送ることが可能であるクレジット、すなわち、パケットの最大数を記憶する。レジスタ３０２の各々は送信側ノード１０２に関連付けられている。システム設計者は、バッファ３０１がオーバフローしないように、各ノード毎のパケット最大数を設定する。したがって、各ノード毎のパケット最大数は、次のように、バッファ３０１のサイズ（バッファサイズ）に関係している。
バッファサイズ≧パケットサイズ＊ノード１つ当たりのクレジット＊ノード数
【００１７】
クレジットレジスタ３０２における値の更新の際の競合状態を回避するために、プロセッサ２０２が上記値を読み取り、上記値を調整し、その調整された値をクレジットレジスタ３０２に書き込んでいる間中は、調整論理回路３１８はクレジットレジスタ３０２内の上記値を調整することは許可されない。そうでない場合には、調整効果が失われる。したがって、この好ましい実施形態では、クレジット調整論理回路３１８が、更新の完了を待つ必要なしに、クレジットを調整する（加算または減算する）ことが可能であるように、クレジットレジスタ３０２に対する書込みが、クレジットレジスタ３０２の現在値に書込みオペランド値を加算する。
【００１８】
復号器３０６はライン３００１上の（送信側ノード１０２の）入力パケットノードＩＤを受け取り、各々のノードＩＤを復号化して、ライン３００５上に選択信号を供給し、この選択信号は、ライン３０２３上のクレジットデータの中の適切な１つを選択するように、マルチプレクサ３１０を制御する。
【００１９】
マルチプレクサ３１０は、ライン３００５上の選択信号に基づいて、選択ライン３０２３上のクレジット値を送信側ノード１０２のクレジットレジスタ３０２からライン３０２７に送る。
【００２０】
クレジット評価器３１２は、送信側ノード１０２がクレジットを有するかどうか、したがって、その送信パケットがバッファ３０１内に記憶されることが許可されるべきがどうかを判定する。クレジット評価器３１２が、ライン３０１３上に信号を供給するために、ライン３０２７上のクレジット値をゼロ値と比較することが好ましい。この値がゼロより大きい場合には、送信側ノード１０２が一時的にそのパケットをバッファ３０１内に記憶することが可能である。そうでない場合には、パケットが記憶されず、したがって廃棄される。その後で、ライン３０１３上の信号が読取り／書込み制御論理回路３１４とクレジット調整論理回路３１８とに入力される。
【００２１】
読取り／書込み制御論理回路３１４は、ライン３０１３上の出力信号に基づいて、ライン３０２９上に制御信号を発生させる。ライン３０１３上の信号が、バッファ３０１への書込みが許可可能であることを示す場合には、読取り／書込み制御論理回路３１４が、ライン３００３上のパケットをバッファ３０１に書き込むことを許可する、ライン３０２９上の「書込みイネーブル（ＷＥ）」を発生させることが好ましい。そうでない場合には、読取り／書込み制御論理回路３１４が、バッファ３０１への書込みを実行不能化するために、ライン３０２９上に信号を発生させる。
【００２２】
ライン３０２９上に信号を発生させる際には、読取り／書込み制御論理回路３１４が、プロセッサ２０２からライン３０１７とライン３０３３上に「再クレジット（ｒｅ−ｃｒｅｄｉｔ）」信号も受け取る。ライン３０１７（およびライン３００９）上の「再クレジット」信号は、例えば、パケットがバッファ３０１から読み取られるときに、適用可能である。バッファ３０１がメモリ２０６の一部分である実施形態では、読取り／書込み制御論理回路３１４がメモリコントローラ３５６の一部分であることが好ましい。
【００２３】
クレジット調整論理回路３１８は、クレジットレジスタ３０２の内容を調整し、すなわち、送信側ノード１０２が受信側ノード１０２に送信することが可能である「クレジット」（すなわち、パケットの個数）を増減する。バッファ３０１からパケットが読み取られる場合にはクレジットが増やされ、ライン３００３上のパケットがバッファ３０１内に書き込まれる場合には、クレジットが減らされる。ライン３００９、３０１３、３０１７、３０２３、３０３１上の入力信号に基づいてクレジット調整論理回路３１８が機能する。ライン３００９上の信号が、バッファ３０１からパケットが読み取られた送信側ノード１０２のノードＩＤをクレジット調整論理回路３１８に供給する。或いは、クレジット調整論理回路３１８が、ライン３０３１を介して同じノードＩＤ情報を得ることが可能である。ライン３０１３上の信号が、送信側ノード１０２からのパケットがバッファ３０１内に書き込まれるかどうかを表示し、この場合には、対応するレジスタクレジットが減少させられなければならない。例えば、パケットがバッファ３０１から読み取られるときに、または、システムがリセットされるときに、ライン３０１７上の信号「再クレジット」により、クレジット調整論理回路３１８は、送信側ノード１０２にクレジットを与えることが可能となる。ライン３０２３−１からライン３０２３−Ｎの上の信号により、クレジット調整論理回路３１８は、送信側ノード１０２に対応するクレジットレジスタ３０２内の値を調整することが可能となる。
【００２４】
図４は、プロセッサ２０２と、メモリコントローラ３５６と、メモリ２０６と、バッファ３０１と、クレジットベーズドメッセージ受信ユニット３６０とを含むシステム３７０の形の、第２の実施形態を示す。この図４の実施形態では、バッファ３０１が、クレジットベーズドメッセージ受信ユニット３５４（図３）の外側にある。したがって、クレジットベーズドメッセージ受信ユニット３６０は、バッファ３０１を除いてクレジットベーズドメッセージ受信ユニット３５４と同じである。プロセッサ２０２とメモリコントローラ３５６とメモリ２０６の機能は、図２のそれらと同一である。システム３７０は、ノード１０２を構成し、インタコネクション１０４に接続されることが可能である。
【００２５】
本発明の第３の実施形態では、バッファ３０１がメモリ２０６の一部分であることが可能であり、したがって、読取り／書込み制御論理回路３１４（図３）がメモリコントローラ３５６の一部分であることが好ましい。
【００２６】
図５は、送信側ノード１０２Ｓからのメッセージの受け取りの際の、受信側ノード１０２Ｒの受信ユニット３５４Ｒを動作させるための方法を示す流れ図である。接尾辞Ｓ、Ｒは、各々に、送信側ノード１０２Ｓと受信側ノード１０２Ｒとに関連付けられている要素を示している。ステップ５０２では、ノード１０２Ｒが、プロセッサ２０２Ｒを経由して、バッファ３０１Ｒとクレジットレジスタ３０２Ｒとを初期化する。ステップ５０４では、ノード１０２Ｒが、ノード１０２Ｒにメッセージを送ることが可能である各ノード１０２Ｓにクレジットの最大数を割り当てるために、システム設計者の入力を使用する。上記のように、ノード１０２Ｓ１つ当たりのクレジットの最大数は、次式によって、バッファ３０１Ｒのサイズ（バッファサイズ）に関係付けられている。
バッファサイズ≧パケットサイズ＊ノード１つ当たりのクレジット＊ノード数
【００２７】
ノード１０２Ｒは、各ノード１０２Ｓにクレジットレジスタ３０２Ｒを１つずつ割り当てる。ステップ５０８では、受信ユニット３５４Ｒが、ノード１０２Ｓからパケット「パケットＳ」を受け取る。ステップ５１２では、復号器３０６ＲがノードＩＤ−Ｓを復号化し、このノードＩＤ−Ｓをライン３００５（図３）上の信号として供給する。ステップ５１６では、送信側ノード１０２Ｓに対応するクレジットレジスタ３０２Ｒによって供給される適切なクレジット値（クレジットＳ）の受渡しのために、マルチプレクサ３１０ＲがこのノードＩＤ−Ｓを使用する。ステップ５２０では、クレジット評価器３１２Ｒが、ノード１０２Ｓのクレジットの使用可能性を評価する。ノード１０２Ｓがゼロのクレジットを有する場合には、クレジット評価器３１２Ｒが、バッファ３０１Ｒに対するパケットＳの書込みを実行不能にするために信号を発生させる。したがって、パケットＳはステップ５２８において暗黙のうちに廃棄され、ステップ５０８では、ノード１０２Ｒが別のパケットＳの受信を待機する。しかし、ノード１０２Ｓが正のクレジットＳを有する場合には、ステップ５３２において、クレジット調整論理回路３１８ＲがクレジットＳを減少させ、ステップ５３６において、読取り／書込み制御論理回路３１４Ｒが、バッファ３０１Ｒ内へのパケットＳの書込みを実行可能化する。プロセッサ２０２Ｒが、バッファ３０１Ｒの書込みポインタもしくは読取り／書込み制御３１４Ｒの状態を周期的にポーリングすることによって、または、受信ユニット３５４Ｒからの割込みを受け入れることによって、バッファ３０１Ｒ内のパケットＳの到着を検出することが可能である。パケットＳが適正に到着している場合、すなわち、パケットＳがバッファ３０１Ｒ内に記憶される場合には、ステップ５３８において、プロセッサ２０２Ｒがバッファ３０１ＲからパケットＳを読み取る。ステップ５４０では、ノード１０２Ｒが、パケットＳがバッファ３０１Ｒから読み取られ終わったかどうかを判定する。そうである場合には、ノード１０２Ｒが、クレジット調整論理回路３１８Ｒを経由して、クレジットレジスタ３０２Ｓを１だけ増加させる。
【００２８】
本明細書で説明した実施形態は、本発明を例示するためのものであって、本発明を限定することは意図されていない。したがって、当業者は、特許請求の範囲と思想とから逸脱することなしに、他の実施形態が実現可能であることを理解することだろう。
【図面の簡単な説明】
【図１】本発明によるマルチプロセッサノードを有するコンピュータシステムのブロック図である。
【図２】本発明を具体化するメッシュコヒーレンスユニットを含む図１のプロセッサノードの実施形態を示す。
【図３】図２のクレジットベーズドメッセージ受信ユニットのブロック図である。
【図４】本発明の第２の実施形態を示す。
【図５】本発明を実行するための方法を示す流れ図である。
【符号の説明】
１００…マルチプロセッサコンピュータシステム
１０２…プロセッサノード
１０４…ノードインタコネクション
１０６…サイト
２０２…プロセッサ
２０４…キャッシュ
２０６…メモリサブシステム
２０８…入力／出力サブシステム
２１０…メッシュコヒーレンスユニット（ＭＣＵ）
２１２…プロセッサバス
３０１…バッファプール
３０２…クレジットレジスタバンク
３０６…復号器
３１０…マルチプレクサ
３１２…クレジット評価器
３１４…読取り／書込み制御論理回路
３１８…クレジット調整論理回路
３５４…クレジットベーズドメッセージ受信ユニット
３５６…メモリコントローラ
３６０…クレジットベーズドメッセージ受信ユニット
【図１】
0003983926.tif 000002
【図２】
0003983926.tif 000003
【図３】
0003983926.tif 000004
【図４】
0003983926.tif 000005
【図５】
0003983926.tif 000006