(57)【要約】  本発明の実施例は、一般にネットワークにおけるデータフロー制御に関し、より詳細には、リングインターコネクト（１２０）における同期的パケットフロー制御に関する。一実施例による方法は、非バッファ処理同期的リングインターコネクト（１２０）などの半導体チップのリングインターコネクト上のデスティネーションノード（１１０（１〜ｎ））に到着するパケットを、デスティネーションノードのバッファのすべてが利用可能でない場合には拒絶し、リングインターコネクト（１２０）上の拒絶されたパケットにリングの探索を継続させ、デスティネーションノード（１１０（１〜ｎ））に到着すると、バッファが利用可能である場合には拒絶されたパケットを受け付けることから構成される。他の実施例では、本方法は、拒絶されたパケットがリングインターコネクト（１２０）を探索するとき、拒絶されたパケットを追跡することを有するようにしてもよい。一実施例による装置は、双方向リングインターコネクトと、該双方向リングインターコネクトに接続される複数のノードとを有する半導体チップを有する。各ノードはバッファを有し、バッファが利用可能である場合、リングインターコネクトに到着するパケットを格納し、バッファが利用可能でない場合、到着するパケットを拒絶する。上記実施例は、非バッファ処理同期的リングインターコネクト上の効率的なパケットのフロー制御を提供する。一例となる適用は、チップマルチプロセッシングを含む。
2008500773.tif 000002
【特許請求の範囲】
【請求項１】
半導体チップのリング構造上のデスティネーションノードへの到着に応答して、前記デスティネーションノードの複数のバッファのすべてが利用可能でない場合、パケットを拒絶するステップと、
前記リング構造上の前記拒絶されたパケットに前記リング構造の探索を継続させるステップと、
前記デスティネーションノードへの到着に応答して、前記複数のバッファの１つが利用可能である場合、前記拒絶されたパケットを受け付けるステップと、
を有することを特徴とする方法。
【請求項２】
請求項１記載の方法であって、さらに、
前記拒絶されたパケットが前記リングを探索するとき、前記拒絶されたパケットを追跡するステップを有することを特徴とする方法。
【請求項３】
請求項２記載の方法であって、
前記追跡するステップは、前記拒絶されたパケットが前記デスティネーションノードに戻るサイクルカウントを計算することから構成され、
前記サイクルカウントは、前記拒絶されたパケットが前記リング構造を探索し、前記デスティネーションノードに戻るクロックサイクル数を現在のクロックサイクルに加えたものに等しい、
ことを特徴とする方法。
【請求項４】
請求項３記載の方法であって、
前記受け付けるステップは、前記拒絶されたパケットの前記デスティネーションノードへの到着に応答して、前記サイクルカウントが実際のクロックサイクルに等しい場合、前記拒絶されたパケットを受け付けることから構成されることを特徴とする方法。
【請求項５】
請求項２記載の方法であって、
前記追跡するステップは、前記デスティネーションノードの識別番号を表すよう前記拒絶されたパケットのデータバイトを設定することから構成されることを特徴とする方法。
【請求項６】
請求項５記載の方法であって、
前記追跡するステップはさらに、前記デスティネーションノードが前記拒絶されたパケットを拒絶する毎に、前記データバイトをインクリメントすることから構成されることを特徴とする方法。
【請求項７】
請求項６記載の方法であって、
前記受け付けるステップは、前記データバイトが前記デスティネーションノードの識別番号に対応する場合、前記拒絶されたパケットを受け付けることから構成されることを特徴とする方法。
【請求項８】
請求項２記載の方法であって、さらに、
前記拒絶されたパケットが前記複数のバッファの利用可能な１つに受け付けられた後、次に拒絶されたパケットを追跡するステップを有することを特徴とする方法。
【請求項９】
請求項１記載の方法であって、さらに、前記複数のバッファの少なくとも２つが利用可能である場合、
前記拒絶されたパケットを受け付ける前に、拒絶されていないパケット又は以降に拒絶されるパケットを受け付けるステップと、
前記拒絶されたパケットを受け付けるため、前記少なくとも２つのバッファの１つを確保するステップと、
を有することを特徴とする方法。
【請求項１０】
請求項１記載の方法であって、さらに、
前記複数のバッファの１つしか利用可能でない場合、前記拒絶されたパケットを受け付ける前に、以前に拒絶されていないパケット又は他の以前に拒絶されたパケットを拒絶し、追跡しないステップを有することを特徴とする方法。
【請求項１１】
請求項１記載の方法であって、
前記探索は、前記拒絶されたパケットの受付前に少なくとも一度、前記リング構造上の前記拒絶されたパケットに前記リング構造を探索させることから構成されることを特徴とする方法。
【請求項１２】
請求項１記載の方法であって、
前記探索は、前記リング構造上の前記拒絶されたパケットにクロックサイクル毎に前記リング構造の少なくとも１つのノードを探索させることから構成されることを特徴とする方法。
【請求項１３】
請求項１記載の方法であって、
前記探索は、複数のクロックサイクル期間中に前記リング構造上の前記拒絶されたパケットに前記リング構造の１つのノードを探索させることから構成されることを特徴とする方法。
【請求項１４】
第１状態が存在する場合、半導体チップのリング構造上のデスティネーションノードに到着するパケットを拒絶するステップと、
前記リング構造上の前記拒絶されたパケットに前記リング構造を探索させるステップと、
第２状態が存在する場合、前記拒絶されたパケットが前記デスティネーションノードに戻ることに応答して、前記拒絶されたパケットを前記デスティネーションノードにおいて受け付けるステップと、
を有することを特徴とする方法。
【請求項１５】
請求項１４記載の方法であって、
前記第１状態は、利用可能でないバッファであり、
前記第２状態は、利用可能なバッファである、
ことを特徴とする方法。
【請求項１６】
請求項１４記載の方法であって、
前記第１状態は、前記到着したパケットの個数が乱数に等しいことであり、
前記第２状態は、前記到着したパケットの個数が乱数に等しくないことである、
ことを特徴とする方法。
【請求項１７】
請求項１４記載の方法であって、さらに、
前記拒絶されたパケットが前記リング構造を探索するとき、前記拒絶されたパケットを追跡するステップを有することを特徴とする方法。
【請求項１８】
請求項１４記載の方法であって、
前記追跡するステップは、
前記拒絶されたパケットに識別番号を関連付けるステップと、
前記識別番号をインクリメントするステップと、
前記インクリメントされた識別番号を次に拒絶されるパケットに関連付けるステップと、
から構成されることを特徴とする方法。
【請求項１９】
請求項１８記載の方法であって、
前記受け付けるステップは、
すべての拒絶されたパケットのうち、最小の識別番号を有する拒絶されたパケットを受け付けるステップと、
前記拒絶されたパケットの受け付けに応答して、前記最小の識別番号を次に最小の識別番号にリセットするステップと、
から構成されることを特徴とする方法。
【請求項２０】
双方向リング構造と、
前記双方向リング構造に接続される複数のノードと、
から構成される半導体チップであって、
各ノードは、バッファを有し、該バッファが利用可能である場合には前記双方向リング構造上の該ノードに到着するパケットを格納し、前記バッファが利用可能でない場合には前記パケットを拒絶することを特徴とする半導体チップ。
【請求項２１】
請求項２０記載の半導体チップであって、
各ノードは、前記バッファが利用可能になるまで、前記拒絶されたパケットを前記双方向リング構造上に放置することを特徴とする半導体チップ。
【請求項２２】
請求項２０記載の半導体チップであって、
各ノードは、前記拒絶されたパケットが前記双方向リング構造を探索するとき、前記拒絶されたパケットを追跡することを特徴とする半導体チップ。
【請求項２３】
請求項２２記載の半導体チップであって、
各ノードは、前記拒絶されたパケットが該ノードに戻るサイクルカウントを計算する加算器を有し、前記サイクルカウントに従って前記拒絶されたパケットを追跡することを特徴とする半導体チップ。
【請求項２４】
請求項２２記載の半導体チップであって、
各ノードは、前記拒絶されたパケットが該ノードに戻るサイクルカウントを計算するプログラム可能な有限状態マシーンを有し、前記サイクルカウントに従って前記拒絶されたパケットを追跡することを特徴とする半導体チップ。
【請求項２５】
請求項２２記載の半導体チップであって、
各ノードは、前記拒絶されたパケットが該ノードに戻るサイクルカウントを計算するプロセッサを有し、前記サイクルカウントに従って前記拒絶されたパケットを追跡することを特徴とする半導体チップ。
【請求項２６】
各ノードがパケットを格納するバッファを有する複数のノードと、該複数のノードに接続される少なくとも１つの双方向リング構造とを有するマルチプロセッサチップと、
該マルチプロセッサチップに接続されるバスと、
から構成されることを特徴とするシステム。
【請求項２７】
請求項２６記載のシステムであって、
各ノードは、プロセッサから構成されることを特徴とするシステム。
【請求項２８】
請求項２７記載のシステムであって、
前記プロセッサは、前記ノードのバッファが、前記少なくとも１つの双方向リング構造からパケットを受信するのに利用可能であるか判断し、前記バッファが利用可能でない場合、前記パケットを拒絶し、
前記拒絶されたパケットは、前記バッファが利用可能になるまで、前記少なくとも１つの双方向リング構造を探索する、
ことを特徴とするシステム。
【請求項２９】
請求項２８記載のシステムであって、
前記プロセッサはさらに、前記拒絶されたパケットに対する追跡タグを計算し、前記バッファが利用可能である場合、前記拒絶されたパケットが前記ノードに戻ることに応答して、前記追跡タグを有する拒絶されたパケットを受け付けることを特徴とするシステム。
【請求項３０】
請求項２９記載のシステムであって、
前記追跡タグは、前記拒絶されたパケットが前記少なくとも１つの双方向リング構造を探索し、前記ノードに戻るクロックサイクル数に現在のクロックサイクルを加えたものに等しいサイクルカウントを有することを特徴とするシステム。
【請求項３１】
請求項２９記載のシステムであって、
前記追跡タグは、前記ノードに対応する識別番号を有することを特徴とするシステム。
【請求項３２】
請求項２６記載のシステムであって、
各ノードは、プロセッサ、キャッシュバンク、メモリインタフェース、加算器、プログラム可能な有限状態マシーン、及び入出力ポートの１つから構成されることを特徴とするシステム。
【請求項３３】
請求項２６記載のシステムであって、
バッファがフルである場合、該バッファは利用可能でないことを特徴とするシステム。
【請求項３４】
請求項２６記載のシステムであって、
バッファが利用可能でない期間後、前記バスは、前記マルチプロセッサチップから前記バッファ宛てのパケットを転送することを特徴とするシステム。
【請求項３５】
請求項３４記載のシステムであって、
前記期間は、２ｎクロックサイクルであって、ｎはノード数であることを特徴とするシステム。
【請求項３６】
半導体チップのリング構造上のデスティネーションノードへの到着に応答して、前記デスティネーションノードの複数のバッファのすべてが利用可能でない場合、パケットを拒絶するステップと、
前記リング構造上の前記拒絶されたパケットに前記リング構造の探索を継続させるステップと、
前記デスティネーションノードへの到着に応答して、前記複数のバッファの１つが利用可能である場合、前記拒絶されたパケットを受け付けるステップと、
を有する方法を実行するためのマシーンにより実行可能なコンピュータプログラムを有することを特徴とするマシーン可読媒体。
【請求項３７】
請求項３６記載のマシーン可読媒体であって、
前記方法はさらに、
前記拒絶されたパケットが前記リングを探索するとき、前記拒絶されたパケットを追跡するステップと、
前記拒絶されたパケットが前記追跡に基づき前記デスティネーションノードに到着した場合、前記拒絶されたパケットを受け付けるステップと、
を有することを特徴とするマシーン可読媒体。
【請求項３８】
請求項３７記載のマシーン可読媒体であって、
前記方法はさらに、前記拒絶されたパケットが前記複数のバッファの利用可能な１つに受け付けられた後、次の拒絶されたパケットを追跡するステップを有することを特徴とするマシーン可読媒体。
【請求項３９】
請求項３６記載のマシーン可読媒体であって、
前記方法はさらに、前記複数のバッファの少なくとも２つが利用可能である場合、
前記拒絶されたパケットを受け付ける前に、拒絶されていないパケット又は以降に拒絶されるパケットを受け付けるステップと、
前記拒絶されたパケットを受け付けるため、前記少なくとも２つのバッファの１つを確保するステップと、
を有することを特徴とするマシーン可読媒体。
【請求項４０】
請求項３６記載のマシーン可読媒体であって、
前記方法はさらに、
前記複数のバッファの１つしか利用可能でない場合、前記拒絶されたパケットを受け付ける前に、以前に拒絶されていないパケット又は他の以前に拒絶されたパケットを拒絶し、追跡しないステップを有することを特徴とするマシーン可読媒体。
【請求項４１】
第１状態が存在する場合、半導体チップのリング構造上のデスティネーションノードに到着するパケットを拒絶するステップと、
前記リング構造上の前記拒絶されたパケットに前記リング構造を探索させるステップと、
第２状態が存在する場合、前記拒絶されたパケットが前記デスティネーションノードに戻ることに応答して、前記拒絶されたパケットを前記デスティネーションノードにおいて受け付けるステップと、
を有する方法を実行するためのマシーンにより実行可能なコンピュータプログラムを有することを特徴とするマシーン可読媒体。
【請求項４２】
請求項４１記載のマシーン可読媒体であって、
前記第１状態は、利用可能でないバッファであり、
前記第２状態は、利用可能なバッファである、
ことを特徴とするマシーン可読媒体。
【請求項４３】
請求項４１記載のマシーン可読媒体であって、
前記第１状態は、前記到着したパケットの個数が乱数に等しいことであり、
前記第２状態は、前記到着したパケットの個数が乱数に等しくないことである、
ことを特徴とするマシーン可読媒体。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
［発明の技術分野］
本発明の実施例は、一般にネットワークにおけるデータフロー制御に関し、より詳細には、リングネットワークにおける同期的パケットフロー制御に関する。
【０００２】
［背景］
コンピュータネットワークにおけるフロー制御機能は、ソースノードからデスティネーションノードへのパケットの転送を規定する。典型的なフロー制御機構は、ネガティブ−アクノリッジメント（ＮＡＣＫ）／リトライ、ドロップ／ソース−タイムアウト／リトライ、クレジット／デビット及びネットワークバッファリングを含む。一般に、ソースノードは、パケットをデスティネーションノードに送信し、デスティネーションノードは、処理前にソースノードから受信したパケットを保持するため、有限量の「イングレスバッファリング（ｉｎｇｒｅｓｓ  ｂｕｆｆｅｒｉｎｇ）」を有する。
【０００３】
ＮＡＣＫ／リトライフロー制御機構は、パケットがデスティネーションノードに到着し、デスティネーションノードが入力パケットのため利用可能なバッファリングがない場合、当該パケットをドロップし、ＮＡＣＫメッセージがデスティネーションノードからソースノードに送り返される。その後、ソースノードは、以降にパケットの送信をリトライするであろう。
【０００４】
しかしながら、ＮＡＣＫ／リトライの問題点は、ソースノードがＡＣＫ（アクノリッジメント）又はＮＡＣＫメッセージを受信するまで、デスティネーションノードがパケットを保持するのに利用可能なバッファを有しているか否かわからないという理由のため、送信されたパケットに対するバッファリングを提供しなければならないということである。そうでない場合には、デスティネーションノードがパケットをドロップし、ソースノードがパケットを自らのバッファに保持しない場合、パケットは消失する。
【０００５】
より大きな問題点は、ＮＡＣＫされたパケットを再送するためソースノードにおいて「リトライ」フローによりもたらされる複雑さである。
【０００６】
さらなる他の問題点は、ＮＡＣＫ／リトライを利用した任意の構成は、ＮＡＣＫメッセージが送信されたパケットによりネットワークが混雑しているときでも、ネットワークを介しソースノードに送信可能であることを保証しなければならないということである。さらに、ＮＡＣＫメッセージ自体は、そうでない場合にパケットに対して利用可能な貴重な帯域幅を使用してしまう。
【０００７】
ドロップ／ソース−タイムアウト／リトライフロー機構は、ＮＡＣＫ／リトライと同様である。送信されたパケットは、ドロップされる可能性があり、デスティネーションノードがバッファリングを有していないとき、レスポンスがソースノードに送り返される。さらに、ドロップ／ソース−タイムアウト／リトライでは、送信されるパケットは、ネットワーク混雑が大きくなりすぎるときは常に、送信されたパケットはドロップされる可能性がある。ソースノードは、ある一定の期間又はタイムアウト後、デスティネーションノードからレスポンスを受信しない場合には、パケットの送信を自動的にリトライするであろう。
【０００８】
ＮＡＣＫ／リトライの問題点に加えて、ドロップ／ソース−タイムアウト／リトライは、それのタイムアウトに関する問題点を有する。タイムアウトは、長すぎるか、あるいは短すぎるかもしれない。タイムアウトが長すぎる場合、デスティネーションノードがパケットをドロップすると、デスティネーションノードは、再送されたパケットを受信するため長く待機しすぎるに違いなく、これにより、システム遅延が増大する。他方、タイムアウトが短すぎる場合、ソースノードが不必要にパケットを２回送信する可能性が増大する。また、システムは、同一のパケットの２つ（又はそれ以上）のインスタンスを処理することが可能でなければならず、混雑の増大と共に複雑さ及びハードウェアコストの増大を招く。
【０００９】
クレジット／デビットフロー制御機構では、ソースノードは、「クレジット（ｃｒｅｄｉｔ）」及び「デビット（ｄｅｂｉｔ）」を利用することによって、デスティネーションノードにおいて利用可能なバッファ数を記録する。ソースノードは、パケットを受け付けるためデスティネーションノードにおいて利用可能なフリーなバッファが存在することを知っている場合に限って、パケットをデスティネーションノードに送信するであろう。ソースノードがパケットをデスティネーションノードに送信するとき、ソースノードは、デスティネーションノードが有する利用可能なフリーなバッファ数のローカルカウントを「デビット（デクリメント）」する。デスティネーションノードがそれの入力バッファからパケットを削除すると、デスティネーションノードは、ソースノードに「クレジット」メッセージを送信し、ソースノードは、デスティネーションノードが有する利用可能なフリーなバッファ数のローカルカウントを「クレジット（インクリメント）」する。
【００１０】
クレジット／デビット機構は、ｎ個のソースノードへのデスティネーションノードの入力バッファの固定された分割を要求する。デスティネーションノードがトータルでＢ個の入力バッファを有する場合、それは、各ソースノードにＢ／ｎ個のバッファエントリを割り当てるかもしれない。これは、すべてのソースノードからデスティネーションノードへのトラフィックが正確に一様である場合には、良好に機能する。しかしながら、一様なトラフィックからの乖離は、Ｂ個のバッファの利用性を非効率にするであろう。この構成の退化した形態は、すべての可能なパケットに対してすべてのデスティネーションノードにおける十分なバッファリングを提供することである。言い換えると、ｎ個のソースノードのそれぞれが転送中のＰ個のパケットを有することが可能である場合、各デスティネーションノードは、Ｐ＊ｎ個のバッファエントリを有する必要がある。この機構の問題点は、バッファ利用性が通常は大変低いものであるため、非効率なエリアハングリー（ａｒｅａ−ｈｕｎｇｒｙ）な構成を招くということである。
【００１１】
ネットワークバッファリングフロー機構では、ネットワーク自体は、デスティネーションノードにおいて受け付けることができないパケットに対するバッファリングを提供する。ネットワークは、パケットがネットワークに「ストール（ｓｔａｌｌ）」することを可能にし、ストールされたパケットの後方のネットワーク上で転送されるパケットがこのストールされたパケットをブロックしてしまう。あるいは、特別なルートアラウンド（ｒｏｕｔｅ−ａｒｏｕｎｄ）ロジック及びバッファリングが、ストールされたパケットの後方のパケットが当該ストールされたパケットを追い越すことを可能にするのに利用可能である。
【００１２】
このタイプの構成は特定のトポロジーについては有効であるかもしれないが、それは、リングトポロジーなどの他のトポロジーにおけるパケット配信を妨げる。リングトポロジーでは、パケットは循環的なルートを転送されるため、複雑であってハードウェア集中的なルートアラウンドスキームが使用されていない場合には、ストールされたパケットの後方のパケットの配信を完全にブロックすることができる。
【００１３】
従って、特にリングトポロジーでは、パケット転送のための典型的なフロー制御機構の問題点を解決する必要がある。
【００１４】
［詳細な説明］
本発明の実施例は、バッファ処理されない同期的リングインターコネクトにおけるパケットフローの制御方法を提供する。一実施例では、本方法は、デスティネーションノードのバッファが利用可能でない場合、半導体チップのリングインターコネクト上のデスティネーションノードに到着するパケットを拒絶し、リングインターコネクト上の拒絶されたパケットにリングインターコネクトを探索し続けさせ、デスティネーションノードのバッファの１つが利用可能になる場合、デスティネーションノードへの到着に応答して拒絶されたパケットを受け付けることを含むかもしれない。他の実施例では、本方法はまた、拒絶されたパケットがリングインターコネクトを探索しているとき、当該拒絶されたパケットを追跡し、この追跡されているパケットが想定時間内にデスティネーションノードに到着し、デスティネーションノードバッファが追跡されているパケットを受け付けるのに利用可能である場合、追跡されているパケットを受け付けることを含むかもしれない。
【００１５】
本発明の実施例はまた、リングインターコネクトと当該リングインターコネクトに接続されるノードを含む半導体チップを提供するようにしてもよい。ここで、各ノードは、バッファが利用可能な場合には、到着するパケットを格納し、利用可能でない場合には、到着するパケットを拒絶するためのバッファを有するようにしてもよい。
【００１６】
本発明の実施例は、効果的には、リングインターコネクトにおけるパケットの効率的なフロー制御を提供するかもしれない。特に、これらの実施例は、ＮＡＣＫ／リトライ及びドロップ／ソース−タイムアウト／リトライフロー制御の複雑さを回避するかもしれない。例えば、ソースノードの送信されたパケットのリトライフロー又はバッファリングは必要でない。これらの実施例はまた、ネットワークバッファリングフロー機構におけるルートアラウンドのハードウェアコンプレクシティ及びクレジット／デビットフロー機構によって求められるさらなるバッファの必要性を回避するかもしれない。これらの実施例は、チップマルチ処理に対するオンチップリングインターコネクトにおいて特に有用であるかもしれない。
【００１７】
図１は、本発明の実施例による双方向なリングインターコネクトに接続される複数のノードを有する半導体チップである。ノード１１０（１）〜１１０（ｎ）は、様々なアクセスポイント又はストップにおける双方向リングインターコネクト１２０に接続されてもよい。パケットは、時計回り又は反時計回りによりインターコネクト１２０上でノード１１０（１）〜１１０（ｎ）の間を転送されるかもしれない。
【００１８】
ノード１１０（１）〜１１０（ｎ）は、プロセッサ、キャッシュバンク、メモリインタフェース、グローバルコヒーレンスエンジンインタフェース、入出力インタフェース及び半導体チップ上にある他の任意のこのようなパケット処理コンポーネントを含むかもしれない。
【００１９】
図１において、本発明の実施例では、ノード１１０（１）〜１１０（ｎ）は、単一の大規模共有化キャッシュをサブセットに論理的に分割することによって、キャッシュバンクノードとして実現されてもよい。各キャッシュバンクノードは、単一のキャッシュにアドレススペースの一部を含めるようにしてもよく、当該単一のキャッシュのアドレススペースの一部に対して独立にブロックリクエスト（リード、ライト、無効化など）を提供するようにしてもよい。インターコネクト１２０上では、各キャッシュバンクノードは、それ自体のアクセスポイント又はストップを有するようにしてもよい。
【００２０】
図１において、インターコネクト１２０は、複数の一方向配線（図示せず）を有してもよく、ここで、一方向配線の第１セットが時計回りによりパケットを転送し、第２セットが反時計回りによりパケットを転送するようにしてもよい。一方向配線の各セットは、特定用途向け（アドレスコマンドの送信など）又は汎用向け（複数のパケットタイプ（アドレスリクエスト、データ、キャッシュコヒーレンスプロトコルメッセージなど）のサポートなど）であってもよい。あるいは、各一方向配線セットは、単一のパケットタイプを転送するよう指定されていてもよい。
【００２１】
あるいは、図１において、インターコネクト１２０は、双方向にパケットを転送可能な複数の双方向配線を有するようにしてもよい。本実施例では、半導体チップは、特定のトランザクション中にパケットを転送するため、所望の方向に各配線を切り替えるロジックをスイッチすることを含むかもしれない。
【００２２】
インターコネクト１２０は、各種レートにおいてパケットを転送するようにしてもよい。例えば、インターコネクト１２０は、クロックサイクル毎に１以上のノードのレートにより、又は２以上のクロックサイクル毎に１つのノードのレートによりパケットを転送するようにしてもよい。トラフィック量、クロックレート、ノード間の距離など、多くの要因が転送レートを決定するかもしれない。一般に、ノードは、インターコネクト１２０上及びノードにおける何れかの既存のパケットがノードを通過するまで、パケットをインターコネクト２１０に投入するのを待機する。
【００２３】
図２は、本発明の実施例による複数のリングインターコネクトに接続される複数のノードを有する半導体チップである。ノード２１０（１）〜２１０（ｎ）は、各アクセスポイント又はストップにおいてリングインターコネクト２２０（１）〜２２０（ｍ）に接続されてもよい。各ノードは、パケットを他のノードに転送するリングインターコネクト２２０（１）〜２２０（ｍ）の何れかを選択するようにしてもよい。
【００２４】
一実施例では、図２のすべてのインターコネクトは一方向であってもよく、一部のインターコネクトは時計回りにのみパケットを転送し、他のインターコネクトは反時計回りにのみパケットを転送する。
【００２５】
他の実施例では、図２のいくつかのインターコネクトは一方向であり、他方は双方向であってもよい。本実施例では、一方向インターコネクトの一部は時計回りにのみパケットを転送し、他のものは反時計回りにのみパケットを転送するかもしれない。双方向インターコネクトは、図１の双方向インターコネクトの動作と整合して、双方向にパケットを転送するかもしれない。
【００２６】
図３は、本発明の実施例によるフロー制御方法のフローチャートである。図３において、非バッファ同期リングインターコネクトなどのリングインターコネクト上のパケットは、パケットがリングインターコネクト上にあると、バッファリング又はストーリングが存在しないように、リングインターコネクトを上をすべてのサイクルで進捗する。リングインターコネクトは、リングインターコネクトをパケットが進捗するリングスロット系列としてみなされるかもしれない。
【００２７】
一実施例によると、パケットがリングインターコネクト上のリングスロットのデスティネーションノードに到着すると、デスティネーションノードは、パケットを受信するのに利用可能なバッファがデスティネーションノードに存在するか判断するようにしてもよい（３１０）。利用可能なバッファが存在する場合、デスティネーションノードは、利用可能なバッファに当該パケットを受け付け（３２０）、当該パケットをリングスロットから削除する。利用可能なバッファが存在しない場合、デスティネーションノードは、当該パケットを拒絶し（３３０）、拒絶されたパケットがデスティネーションノードに戻るまでリングインターコネクトを探索し続けるため、拒絶されたパケットをリングインターコネクト上のリングスロットに放置し、これにより、デスティネーションノードは、当該ノードに利用可能なバッファが存在するか再び判断し、本方法が上述のように継続されるようにしてもよい。
【００２８】
拒絶されたパケットがリングインターコネクトを探索している間、デスティネーションノードのバッファが利用可能になるかもしれない。この場合、拒絶されたパケットが再びデスティネーションノードに到着すると、デスティネーションノードは、当該パケットを受け付けるようにしてもよい（３２０）。他方、拒絶されたパケットがデスティネーションノードに到着し、バッファが依然として利用可能でない場合、デスティネーションノードは、当該パケットを再び拒絶し（３３０）、バッファがデスティネーションノードにおいて利用可能になるまで、リングインターコネクトを探索するように、リングインターコネクト上に２回拒絶されたパケットを放置する。
【００２９】
図４〜７は、本発明の実施例によるリングインターコネクトにおける図３のフロー制御方法の処理を示す。本例では、リングインターコネクト４３０は、リングインターコネクト４３０上でパケットを転送するため、リングスロット４２０（１）〜４２０（８）を有するようにしてもよい。各リングスロットは、クロックサイクル中にリングスロットの転送を同期させるため、システムクロック信号ライン４４０に接続されるようにしてもよい。リングインターコネクト４３０は、ノード４１０（１）〜４１０（８）に接続されてもよい。各ノードは、当該ノードがリングスロット４２０（１）〜４２０（８）に対してパケットを投入又は受け付けることを可能にするリングインターコネクト４３０上にアクセスポイント又はストップを有するかもしれない。各ノードは、隣接するリングスロットにおいてパケットを投入又は受け付けるようにしてもよい。この例では、リングインターコネクト４３０は、時計回りにパケットを転送するため、１つの一方向のリングインターコネクトであってもよい。しかしながら、本発明の実施例は、特定のタイプのリングインターコネクト又はパケット転送方向に限定されるものではない。
【００３０】
図４において、３つのパケットが、クロックサイクルＣにおいてリングインターコネクト４３０上にあるかもしれない。左から始めて、パケット１は、ノード４１０（３）と指定されたデスティネーションを有するリングスロット４２０（１）にあるかもしれない。パケット２は、ノード４１０（８）に指定されたデスティネーションを有するリングスロット４２０（２）にあるかもしれない。パケット３は、ノード４１０（５）に指定されたデスティネーションを有するリングスロット４２０（４）にあるかもしれない。リングインターコネクトの残りのリングスロットは、占有されてもよいし、占有されていなくてもよい。しかしながら、説明の簡単化のため、上述したリングスロットのみが占有されている。
【００３１】
図５は、次のクロックサイクルＣ＋１におけるリングインターコネクト４３０の状態を示す。各パケットは、クロックサイクルＣの間にそれのリングスロットにおいて時計回りに進捗した。パケット３は、それのデスティネーションノードであるノード４１０（５）に到達した。従って、本発明の実施例によると、ノード４１０（５）が、それが利用可能なバッファを有すると判断すると（３１０）、ノード４１０（５）は、次のクロックサイクルにおいてパケット３をそれのバッファに受け付けるようにしてもよい（３２０）。そうでない場合、ノード４１０（５）は、それが利用可能なバッファを有していないと判断すると（３１０）、パケット３は、リングインターコネクト４３０上を進捗するため拒絶されたパケット３であるかもしれない。
【００３２】
図６は、第３クロックサイクルＣ＋２におけるリングインターコネクト４３０の状態を示す。ノード４１０（５）が利用可能なバッファを有するため、パケット３はノード４１０（５）に受け付けられている。残りのパケットは、それらのリングスロットにおいて時計回りに進捗している。パケット１は、それのデスティネーションノードであるノード４１０（３）に到着している。従って、ノード４１０（３）は、当該ノードが利用可能なバッファを有していると判断する場合（３１０）、ノード４１０（３）は、このクロックサイクルＣ＋２の間にパケット１をそれのバッファに受け付けるようにしてもよい（３２０）。そうでない場合、ノード４１０（３）は、それが利用可能なバッファを有していないと判断する場合（３１０）、パケット１は、リングインターコネクト４３０を進捗するよう拒絶されてもよい（３３０）。
【００３３】
図７は、第４クロックサイクルＣ＋３におけるリングインターコネクト４３０の状態を示す。この場合、ノード４１０（３）は、それが利用可能なバッファを有していないと判断した（３１０）。この結果、パケット１は拒絶され（３３０）、リングインターコネクト４３０上に残された。パケット１は、ノード４１０（３）を通過してそれのリングスロットにおいて進捗し、パケット１がノード４１０（３）に戻るとき、パケット１を受け付けるため（３２０）、バッファがノード４１０（３）において利用可能になるまで、リングインターコネクト４３０を探索し続けるようにしてもよい。
【００３４】
本例は説明のためのものであって、当該構成を図示されたものに限定するものではないということは理解されるであろう。リングインターコネクトは、一方向又は双方向にパケットを転送可能な１以上のリング構造を有するかもしれない。さらに、リングスロットの個数は、ノードの個数に等しくなる必要はない。複数のリングスロットが、任意の時点において２つのノード間に存在するようにしてもよい。その逆に、複数のノードが、任意の時点において２つのリングスロット間に存在するようにしてもよい。パケット転送レートは、クロックサイクル毎に１つのノードに限定されるものではなく、その用途に応じて、複数のクロックサイクル毎に１つのノード又はクロックサイクル毎に複数のノードを有するようにしてもよい。
【００３５】
さらに、パケットの受付又は拒絶の条件はバッファの利用性に限定されるものではなく、パケットを拒絶する任意の条件を有するようにしてもよいということは理解されるであろう。他の実施例では、例えば、デスティネーションノードは、ｎがランダムに生成された数である場合、到着するｎ番目のパケット毎を拒絶するようにしてもよい。
【００３６】
図３において、バッファが利用可能になると（すなわち、スタベーション（ｓｔａｒｖａｔｉｏｎ））、デスティネーションノードにより近接した他のパケットを受け付けしながら、拒絶されたパケットがリングインターコネクトを無限に探索することを回避するため、さらなる制御が提供されるようにしてもよい。例えば、拒絶されたパケットを追跡する方法は、デスティネーションノードにおいて利用可能なバッファが拒絶されたパケットに対してセーブされることを保証するかもしれない。
【００３７】
図８は、本発明の他の実施例のフロー制御方法のフローチャートである。図８において、本方法は、すべての拒絶されたパケットがタイムリーに受付されることを保証するため、非バッファ同期的リングインターコネクトなどのリングインターコネクト上で拒絶されたパケットを追跡することを有するようにしてもよい。パケットがリングインターコネクトのデスティネーションノードに到着すると、デスティネーションノードは、それがパケットを受信するのに利用可能なバッファを有しているか判断するようにしてもよい（８１０）。
【００３８】
図８において、デスティネーションノードが、それが到着したパケットのための利用可能なバッファを有していないと判断すると（８１０）、デスティネーションノードは、当該パケットを拒絶し（８３０）、インターコネクトを探索するため、拒絶されたパケットをリングインターコネクトに残す。デスティネーションノードは、パケットが現在追跡されているか判断するようにしてもよい（８４５）。デスティネーションノードが、パケットを現在追跡していないと判断すると（８４５）、デスティネーションノードは、ちょうど拒絶されたパケットを追跡するようにしてもよい（８５０）。そうでない場合、デスティネーションノードが、現在パケットを追跡していると判断すると（８４５）、デスティネーションノードは、追跡されていないリングインターコネクト上に拒絶されたパケットを残すようにしてもよい。デスティネーションノードによって利用可能な追跡機構が、以下に説明される。
【００３９】
デスティネーションノードは、他のパケットの到着を待機するかもしれない（８５５）。デスティネーションノードが、他のパケットがデスティネーションノードに到着したと判断すると、デスティネーションノードは、それが到着したパケットのために利用可能なバッファを有しているか判断するようにしてもよい（８１０）。
【００４０】
図８において、デスティネーションノードは、それが利用可能なバッファを有していると判断すると（８１０）、到着したパケットが現在追跡中のものであるか判断するようにしてもよい（８１５）。デスティネーションノードが、到着したパケットが追跡中のものであると判断すると（８１５）、デスティネーションノードは、追跡されているパケットを利用可能なバッファに受け付け、デスティネーションノードの次の拒絶されたパケットを、後述される追跡機構の何れかを利用して追跡するようにしてもよい（８２５）。デスティネーションノードは、新たに追跡されたパケット又は他のパケットの到着を待機するようにしてもよい（８５５）。
【００４１】
図８において、到着したパケットが追跡中のパケットでないと判断されると（８１５）、デスティネーションノードは、複数のデスティネーションノードバッファが利用可能であるか判断するようにしてもよい（８３５）。複数のバッファが利用可能であると判断されると（８３５）、追跡されていないパケットは、利用可能なバッファの１つに受け付けされ、他の利用可能なバッファが追跡されているパケットをセーブするようにしてもよい。デスティネーションノードは、追跡されているパケット又は他のパケットの到着を待機するようにしてもよい。そうでない場合、１つのみのバッファしか利用可能でないと判断されると、追跡されていないパケットは拒絶され（８３０）、リングインターコネクトに残され、利用可能な１つのバッファが、追跡されているパケットをセーブするようにしてもよい。
【００４２】
この方法は、追跡されたパケットに対して、少なくとも１つの利用可能なバッファが確保されることを保証するが、追加的なバッファが利用可能な場合には、追跡されていないパケットが受け付けられることを可能にする。また、拒絶されたパケットは、バッファスペースが限られているとき、デスティネーションノードにおける受け付けが保証されるようにしてもよい。さらに、バッファスペースが、以降に投入されるパケットについてリングインターコネクトをフリーに維持することに限定されないときには、他のパケットが受け付けられてもよい。
【００４３】
追跡は、リングインターコネクトを探索した後、拒絶されたパケットがデスティネーションノードに戻ることが予想されるサイクルカウントを計算することを有するかもしれない。このサイクルカウントは、パケットがリングインターコネクトを探索するためのクロックサイクル数に、デスティネーションノードがパケットを拒絶するときの実際のクロックサイクルを加えたものに等しいものであってもよい。例えば、デスティネーションノードがクロックサイクルＣにおいてパケットを拒絶し、パケットがリングインターコネクトを探索するのにＤクロックサイクルかかる場合、サイクルカウントはＣ＋Ｄに等しくなるかもしれない。従って、バッファが利用可能である場合、デスティネーションノードは追跡されている拒絶されたパケットとして、クロックサイクルＣ＋Ｄにおいて到着したパケットを受け付けるようにしてもよい。複数のバッファが利用可能である場合、デスティネーションノードは、他のクロックサイクルで到着するパケットを受け付けるようにしてもよいが、利用可能なバッファの１つがクロックサイクルＣ＋Ｄにおいて到着したパケットに対して確保されることを保証するようにしてもよい。
【００４４】
あるいは、追跡は、デスティネーションノードの識別番号を表すため、パケットにおいてデータバイトを設定することを有するようにしてもよい。例えば、識別番号Ｎを有するデスティネーションノードがパケットを拒絶すると、拒絶されたパケットのデータバイトは、Ｎに設定されてもよい。当該ノードを宛先とする他のすべてのデータパケットは、０に設定されたデータバイトを有するようにしてもよい。複数のバッファが利用可能な場合、デスティネーションノードは、設定されていないデータバイトにより到着したパケットを受け付けるが、利用可能なバッファの１つが、Ｎに設定されたデータバイトによるパケットに対して確保されていることを保証するかもしれない。
【００４５】
あるいは、デスティネーションノードは、それの拒絶されたパケットのすべてを追跡し、それらが拒絶された順序により拒絶されたパケットを受け付けるようにしてもよい。例えば、識別番号Ｎを有するデスティネーションノードがパケットを拒絶する場合、拒絶されたパケットのデータバイトは、それがデスティネーションノードによって拒絶された最初のパケットであることを示すため、Ｎ１に設定されるようにしてもよい。デスティネーションノードは、第２の拒絶されたノードのデータバイトをＮ２に設定し、以下同様に設定するようにしてもよい。デスティネーションノードは、変数を現在拒絶された最も小さな識別番号、この場合にはＮ１に設定するようにしてもよい。バッファが利用可能であるとき、デスティネーションノードは、それが到着するとＮ１のパケットを受け付け、変数を次に小さな識別番号Ｎ２に設定する。複数のバッファが利用可能である場合、デスティネーションノードは、それらがより大きな識別番号を有しているとしても、到着するパケットを受け付けるようにしてもよいが、利用可能なバッファの１つが最も小さな識別番号を有するパケットに対して確保されることを保証してもよい。
【００４６】
追跡はここで説明された機構に限定されるものではなく、ネットワークにおいてパケットを追跡する任意の適切な機構を含むようにしてもよい。例えば、追跡タグ又は追跡フラグが、拒絶されたパケットを識別及び追跡するのに利用可能である。
【００４７】
図９〜１６は、本発明の実施例によるリングインターコネクトにおける図８のフロー制御方法の処理を示す。この構成は、図４〜７に関して説明されたものと同一である。
【００４８】
図９において、３つのパケットが、クロックサイクルＣにおいてリングインターコネクト４３０上に存在するかもしれない。左から始めて、パケット１はリングスロット４２０（８）に、パケット２はリングスロット４２０（２）に、パケット３はリングスロット４２０（４）にあってもよい。すべてのパケットが、ノード４１０（４）と指定されたデスティネーションを有するようにしてもよい。残りのリングスロットは、占有されていなくてもよく、あるいは占有されていてもよい。しかしながら、説明の簡単化のため、上述したリングスロットのみが占有される。図９において、パケット３は、それのデスティネーションノードであるノード４１０（４）に到着している。従って、本発明の実施例によると、ノード４１０（４）は、それが利用可能なバッファを有していると判断すると、ノード４１０（４）は、このクロックサイクルＣの期間中にパケット３を受け付けるようにしてもよい。そうでない場合、ノード４１０（４）は、それが利用可能なバッファを有していないと判断すると、パケット３は拒絶され（８３０）、リングインターコネクト４３０上で進捗するようにしてもよい。ノード４１０（４）が、それが現在パケットを追跡していないと判断すると、ノード４１０（４）は、パケット３を追跡するようにしてもよい（８５０）。ノード４１０（４）が、それがパケットを現在追跡中であると判断すると、パケット３は、リングインターコネクト４３０上で追跡されないままにされなくてもよい。
【００４９】
図１０は、次のクロックサイクルＣ＋１におけるリングインターコネクト４３０の状態を示す。この場合、ノード４１０（４）は、それが利用可能なバッファを有しないと判断し（８４５）、パケット３を拒絶した（８３０）。ノード４１０（４）は、パケット３がノード４１０（４）によって拒絶された最初のパケットであると判断したため（８４５）、本発明の追跡機構によると、パケット３がリングインターコネクト４３０の探索を継続するとき、ノード４１０（４）はパケット３を追跡するようにしてもよい（８５０）。パケット１及び２は、それらのリングスロットを時計回りに進捗した。
【００５０】
図１１は、次のクロックサイクルＣ＋２におけるリングインターコネクト４３０の状態を示す。パケット２は、それのデスティネーションノードであるノード４１０（４）に到着した。前のクロックサイクルＣ＋１の期間中、ノード４１０（４）は、それが１つの利用可能なバッファを有すると判断したと仮定する。しかしながら、本発明の実施例によると、ノード４１０（４）は、パケット２が追跡されているパケットであるか判断するようにしてもよい（８１５）。この場合、ノード４１０（４）は、パケット２が追跡されているパケットでないと判断するかもしれず（８１５）、さらに、１つののみのバッファしか利用可能でないと判断するかもしれない。ノード４１０（４）は、パケット２を拒絶し（８３０）、リングインターコネクト４３０にパケット２を放置するようにしてもよい。ノード４１０（４）は、それが現在パケット３を追跡していると判断してもよい（８４５）。この結果、ノード４１０（４）は、リングインターコネクト４３０上に拒絶されたパケット２を追跡しないままにしてもよい。
【００５１】
図１２は、次のクロックサイクルＣ＋３におけるリングインターコネクト４３０の状態を示す。上述のように、パケット２は拒絶されているが（８３０）、パケット３はすでに追跡されているため、追跡されない（８４５）。ノード４１０（４）は、パケット１、２又は３の到着を待機するようにしてもよい。ノード４１０（４）は、それがパケット２を拒絶したため、依然として１つの利用可能なバッファを有する。
【００５２】
図１３は、次のクロックサイクルＣ＋４におけるリングインターコネクト４３０の状態を示す。パケット１は、それのデスティネーションノードであるノード４１０（４）に到着している。前のクロックサイクルＣ＋３の期間中に、ノード４１０（４）は、それが第２の利用可能なバッファを有していると判断した（８１０）。ノード４１０（４）は現在、２つの利用可能なバッファを有しているかもしれない。従って、本発明の実施例によると、ノード４１０（４）は、到着したパケット１が追跡されているか判断するようにしてもよい。パケット１が追跡されていないため（パケット３が追跡されている）、ノード４１０（４）は、それが複数の利用可能なバッファを有しているか判断するようにしてもよい（８３５）。ノード４１０（４）が利用可能な２つのバッファを有していると判断したため（８３５）、ノード４１０（４）はパケット１を受け付け（８４０）、それが到着するとき、追跡されたパケット３に対して利用可能なバッファをセーブするようにしてもよい。
【００５３】
図１４は、次のクロックサイクルＣ＋５におけるリングインターコネクト４３０の状態を示す。パケット１はノード４１０（４）において受け付けされ（８４０）、現在、ノード４１０（４）は、１つの利用可能なバッファを有している。追跡されているパケット３と追跡されていないパケット２は、リングインターコネクト４３０を時計回りに探索を継続するようにしてもよい。
【００５４】
パケット２及び３は、図１５に示されるように、クロックサイクルＣ＋８において、パケット３がそれのデスティネーションノードであるノード４１０（４）に再び到着するまで、リングインターコネクト４３０の探索を継続するようにしてもよい。この場合、ノード４１０（４）は、１つの利用可能なバッファを有する。従って、本発明の実施例によると、ノード４１０（４）は、それが利用可能な１つのバッファを有すると判断し（８１０）、到着したパケット３が追跡されていると判断するかもしれない（８１５）。ノード４１０（４）は、追跡されているパケット３を利用可能なバッファに受け付けるようにしてもよい（８２０）。
【００５５】
図１６は、次のクロックサイクルＣ＋９におけるリングインターコネクト４３０の状態を示す。パケット３は、ノード４１０（４）の利用可能な最後のバッファに受け付けられた（８２０）。パケット２は、ノード４１０（４）により受け付けられるまで追跡されるようにしてもよい（８２５）。ノード４１０（４）は、それがパケット２の到着の際に利用可能なバッファを有していないと判断すると、ノード４１０（４）は、再びパケット２を拒絶し（８３０）、パケット２の追跡を継続するようにしてもよい。
【００５６】
図１と同様の半導体チップの実施例が、本発明の実施例による方法を実現することが可能である。一実施例では、半導体チップ１１０は、リングインターコネクト１２０と当該リングインターコネクト１２０に接続されたノード１１０（１）〜１１０（ｎ）とを有するようにしてもよい。各ノードは、リングインターコネクト１２０へのパケット到着時にバッファが利用可能である場合にはパケットを格納し、バッファが利用可能でない場合にはパケットを拒絶する少なくとも１つのバッファを有するかもしれない。各ノードはまた、拒絶されたパケットを追跡するため、サイクルカウントを計算する加算器（図示せず）を有するようにしてもよい。
【００５７】
あるいは、各ノードは、拒絶されたパケットを追跡するため、サイクルカウントを計算するようプログラムされるプログラマブル有限状態マシーン（図示せず）を有するようにしてもよい。あるいは、各ノードは、サイクルカウントを計算するため、プロセッサ（図示せず）を有するようにしてもよい。
【００５８】
同様に、図２と同様の半導体チップの実施例は、本発明の実施例による方法を実現するものであるかもしれない。
【００５９】
本発明の実施例は、通信バスを介し他の半導体チップを有するシステムに接続されるようにしてもよい。バスは、パケットが到着する際、又はチップを離れる際に、本発明の実施例によりパケットを転送するようにしてもよい。一実施例では、バスは、例えば、チップのリングインターコネクト上でノードを複数回探索した後、又はいくつかのクロックサイクルが経過した後など、拒絶されたパケットがある特定期間後には受け付けされない場合には、チップから拒絶されたパケットを転送するようにしてもよい。
【００６０】
図１７は、本発明の実施例により使用される１以上のマルチプロセッサ及びメモリを含む構成状態を含むコンピュータシステムのブロック図である。図１７において、コンピュータシステム１７００は、システムロジック１７３０に接続可能なプロセッサバス１７２０に接続される１以上のマルチプロセッサ１７１０（１）〜１７１０（ｎ）を有するようにしてもよい。１以上のマルチプロセッサ１７１０（１）〜１７１０（ｎ）のそれぞれは、Ｎビットプロセッサであってもよく、デコーダ（図示せず）及び１以上のＮビットレジスタ（図示せず）を有するようにしてもよい。本発明の実施例によると、１以上のマルチプロセッサ１７１０（１）〜１７１０（ｎ）のそれぞれは、Ｎビットプロセッサ、デコーダ及び１以上のＮビットレジスタに接続するため、双方向及び／又は一方向のリングインターコネクト（図示せず）を有するようにしてもよい。
【００６１】
システムロジック１７３０は、バス１７５０を介しシステムメモリ１７４０に接続されてもよく、周辺バス１７６０を介し不揮発性メモリ１７７０及び１以上の周辺装置１７８０（１）〜１７８０（ｍ）に接続されてもよい。周辺バス１７６０は、例えば、１以上のＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バス（１９９８年１２月１８日に公開された“ＰＣＩ  Ｓｐｅｃｉａｌ  Ｇｒｏｕｐ（ＳＩＧ）  ＰＣＩ  Ｌｏｃａｌ  Ｂｕｓ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，Ｒｅｖｉｓｉｏｎ  ２．２”）、ＥＩＳＡ（Ｅｘｔｅｎｄｅｄ  ＩＳＡ）バス（１９９２年に公開された“ＢＣＰＲ  Ｓｅｒｖｉｃｅ  Ｉｎｃ．ＥＩＳＡ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，Ｖｅｒｓｉｏｎ  ３．１２，１９９２”）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）（１９９８年９月２３日に公開された“ＵＳＢ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，Ｖｅｒｓｉｏｎ  １．１”）及び同様の周辺バスを表すかもしれない。不揮発性メモリ１７７０は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリなどの静的な記憶装置であってもよい。周辺装置１７８０（１）〜１７８０（ｍ）は、例えば、キーボード、マウス、ポインティング装置、ハードディスクドライブなどの大容量記憶装置、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）ドライブ、光ディスク、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｉｄｅｏ  Ｄｉｓｃ）ドライブ、ディスプレイなどを含むかもしれない。
【００６２】
本発明の実施例は、実施例の教示に従ってプログラムされた汎用マイクロプロセッサなどの任意のタイプのコンピュータを使用して実現可能である。従って、本発明の実施例はまた、本発明の実施例による方法を実行するためプロセッサをプログラムするのに使用される命令を含むマシーン可読媒体を含む。この媒体は、以下に限定されるものではないが、フロッピー（登録商標）ディスク、光ディスク、ＣＤ−ＲＯＭを含む任意のタイプのディスクを含むかもしれない。
【００６３】
本発明の実施例を実現するのに使用されるソフトウェアの構成は、単一又は複数のプログラムなどの任意の所望の形式をとるものであってもよいということは理解されるかもしれない。さらに、本発明の実施例の方法は、ソフトウェア、ハードウェア又はそれらの組み合わせにより実現可能であるということが理解されるかもしれない。
【００６４】
上記において、本発明の好適な実施例が詳細に説明された。出願人が権利を与えられる本発明の完全な範囲は、以降の請求項によって規定される。請求項の範囲は、上述したもの以外の他の実施例とそれらに均等なものをカバーするかもしれない。
【図面の簡単な説明】
【００６５】
【図１】図１は、本発明の実施例による単一のリングインターコネクトに接続される複数のノードを有する半導体チップである。
【図２】図２は、本発明の実施例による複数の一方向及び／又は双方向リングインターコネクトに接続される複数のノードを有する半導体チップである。
【図３】図３は、本発明の実施例によるフロー制御方法のフローチャートである。
【図４】図４は、本発明の実施例によるリングインターコネクトにおける図３のフロー制御方法の処理を示す。
【図５】図５は、本発明の実施例によるリングインターコネクトにおける図３のフロー制御方法の処理を示す。
【図６】図６は、本発明の実施例によるリングインターコネクトにおける図３のフロー制御方法の処理を示す。
【図７】図７は、本発明の実施例によるリングインターコネクトにおける図３のフロー制御方法の処理を示す。
【図８】図８は、本発明の他の実施例によるフロー制御方法のフローチャートである。
【図９】図９は、本発明の他の実施例によるリングインターコネクトにおける図８のフロー制御方法の処理を示す。
【図１０】図１０は、本発明の他の実施例によるリングインターコネクトにおける図８のフロー制御方法の処理を示す。
【図１１】図１１は、本発明の他の実施例によるリングインターコネクトにおける図８のフロー制御方法の処理を示す。
【図１２】図１２は、本発明の他の実施例によるリングインターコネクトにおける図８のフロー制御方法の処理を示す。
【図１３】図１３は、本発明の他の実施例によるリングインターコネクトにおける図８のフロー制御方法の処理を示す。
【図１４】図１４は、本発明の他の実施例によるリングインターコネクトにおける図８のフロー制御方法の処理を示す。
【図１５】図１５は、本発明の他の実施例によるリングインターコネクトにおける図８のフロー制御方法の処理を示す。
【図１６】図１６は、本発明の他の実施例によるリングインターコネクトにおける図８のフロー制御方法の処理を示す。
【図１７】図１７は、本発明の実施例を実現するコンピュータシステムのブロック図である。
【図１】
2008500773.tif 000003
【図２】
2008500773.tif 000004
【図３】
2008500773.tif 000005
【図４】
2008500773.tif 000006
【図５】
2008500773.tif 000007
【図６】
2008500773.tif 000008
【図７】
2008500773.tif 000009
【図８】
2008500773.tif 000010
【図９】
2008500773.tif 000011
【図１０】
2008500773.tif 000012
【図１１】
2008500773.tif 000013
【図１２】
2008500773.tif 000014
【図１３】
2008500773.tif 000015
【図１４】
2008500773.tif 000016
【図１５】
2008500773.tif 000017
【図１６】
2008500773.tif 000018
【図１７】
2008500773.tif 000019
【国際調査報告】
2008500773.tif 000020
2008500773.tif 000021
2008500773.tif 000022