(57)【要約】【課題】  本発明は、高速交換環境で伝統的にメモリに関連する欠点と問題を減少又は、削除することを目的とする。【解決手段】  高速交換環境でパケットを交換するシステムは、メモリ構造と、各々が、１つ又はそれ以上のメモリ構造の各々に書き込むことができる複数の入力構造と、入力構造をメモリ構造へ接続する第１の交換構造を有する。このシステムは、各々がメモリ構造の各々から読み出し、且つ、入力構造が通信ネットワークの第２構成要素からパケットの第２部分を受信する前に、通信ネットワークの第１構成要素へパケットの第１部分を通信する、複数の出力構造をも有する。このシステムは、複数の出力構造をメモリ構造へ接続する第２交換構造をも有する。第２交換構造は、第１の数のリンクによりメモリ構造へ結合され且つ第２の数のリンクにより複数の出力構造へ結合され、且つ、第１の数のリンクは第２の数のリンクの２倍又はそれ以上である。【選択図】  図３   
2004242332.tif 000002
【特許請求の範囲】
【請求項１】
高速交換環境でパケットを交換するシステムであって、
１つ又はそれ以上のメモリ構造を有し、
各々が、前記１つ又はそれ以上のメモリ構造の各々に書き込むように動作する複数の入力構造を有し、
前記入力構造の各々が、前記１つ又はそれ以上のメモリ構造の各々に書き込むように動作するように、前記入力構造を前記１つ又はそれ以上のメモリ構造へ接続する第１の交換構造を有し、
複数の出力構造を有し、前記構造は各々が、
前記１つ又はそれ以上のメモリ構造の各々から読み出し、
入力構造が通信ネットワークの第２構成要素からパケットの第２部分を受信する前に、前記通信ネットワークの第１構成要素へ前記パケットの第１部分を通信し、
前記出力構造の各々が前記１つ又はそれ以上のメモリ構造の各々から読み出すように動作し、第２交換構造が第１の数のリンクにより前記１つ又はそれ以上のメモリ構造へ結合され且つ第２の数のリンクにより前記複数の出力構造へ結合され、第１の数のリンクは第２の数のリンクの２倍又はそれ以上であるように、前記複数の出力構造を前記１つ又はそれ以上のメモリ構造へ結合する前記第２交換構造を有する、システム。
【請求項２】
前記１つ又はそれ以上のメモリ構造の各々は、各々が１つ又はそれ以上のメモリ装置を有する１つ又はそれ以上のメモリユニットを有し、
ポートモジュールは、前記入力構造の１つと前記出力構造の１つを有し、
相互接続ネットワークは、第１及び第２交換構造を有し、前記相互接続ネットワークは１つ又はそれ以上の交換段階を有する階層構造を有する、請求項１に記載のシステム。
【請求項３】
前記相互接続ネットワークは、１つ又はそれ以上のメモリバンクと、複数のポートモジュールを前記１つ又はそれ以上のメモリバンクに結合する１つ又はそれ以上の交換ユニットを有する多段相互接続ネットワーク（ＭＩＮ）を有し、前記１つ又はそれ以上のメモリバンクは各々が、１つ又はそれ以上のメモリユニットと１つ又はそれ以上のバンク交換ユニットを有する、請求項２に記載のシステム。
【請求項４】
各ポートモジュールは、書き込み動作のための第１リンクと読み出し動作のための第２リンクにより交換ユニットに結合され、
各交換ユニットは、書き込み動作のための第３リンクと読み出し動作のための４つの第４リンクにより各メモリバンクに結合される、請求項３に記載のシステム。
【請求項５】
前記ＭＩＮは、３つのメモリバンクと４つの交換ユニットを有し、各メモリバンクは各々が１つのメモリ装置を有する８つのメモリユニットを有する、請求項３に記載のシステム。
【請求項６】
前記メモリ装置は、スタティックランダムアクセスメモリ（ＳＲＡＭ）装置を有する、請求項２に記載のシステム。
【請求項７】
高速交換環境でパケットを交換する方法であって、
複数の入力構造の１つで、通信ネットワークの第１構成要素から通信されるパケットを受信し、
受信されたパケットを１つ又はそれ以上のメモリ構造の１つ又はそれ以上に書き込み、前記複数の入力構造は、前記入力構造の各々が前記１つ又はそれ以上のメモリ構造の各々に書き込むように動作するように、第１交換構造により前記１つ又はそれ以上のメモリ構造に結合され、
前記メモリ構造から複数の出力構造の１つ又はそれ以上へパケットを読み出し、前記複数の出力構造は、前記複数の出力構造の各々が前記１つ又はそれ以上のメモリ構造の各々から読み出すように動作するように、第２交換構造により前記１つ又はそれ以上のメモリ構造へ結合され、前記１つ又はそれ以上の出力構造の各々は、前記入力構造がパケットの第２部分を受信する前に、前記メモリ構造から前記パケットの第１部分を読み出すように動作し、第２交換構造は第１の数のリンクにより前記１つ又はそれ以上のメモリ構造へ結合され且つ第２の数のリンクにより前記複数の出力構造へ結合され、第１の数のリンクは第２の数のリンクの２倍又はそれ以上であり、
前記パケットを前記複数の出力構造の１つ又はそれ以上から前記通信ネットワークの１つ又はそれ以上の第２構成要素へ通信する、方法。
【請求項８】
イーサネット（登録商標）交換環境、ＩＮＦＩＮＩＢＡＮＤ交換環境、３ＧＩＯ交換環境、ＨＹＰＥＲＴＲＡＮＳＰＯＲＴ交換環境、ＲＡＰＩＤ  ＩＯ交換環境、又は、専用のバックプレーン交換環境を含む、高速交換環境でパケットを交換するシステムであって、前記システムは単一の集積回路（ＩＣ）で具体化され、且つ、
各々が１つ又はそれ以上のメモリユニットを有する、１つ又はそれ以上のメモリ構造を有し、前記メモリユニットの各々は、各々が読み出し動作のための１つのポートと書き込み動作のための１つのポートを有するスタティックランダムアクセスメモリ（ＳＲＡＭ）装置、を有する１つ又はそれ以上のメモリ装置を有し、
各々が前記１つ又はそれ以上のメモリ構造の各々に書き込みできる複数の入力構造を有し、
複数の出力構造を有し、前記構造は各々が、
前記１つ又はそれ以上のメモリ構造の各々から読み出し、
入力構造が通信ネットワークの第２構成要素からパケットの第２部分を受信する前に、前記通信ネットワークの第１構成要素へ前記パケットの第１部分を通信し、
前記入力構造と前記出力構造を前記１つ又はそれ以上のメモリ構造に結合するように動作する多段相互接続ネットワーク（ＭＩＮ）を有し、前記ＭＩＮは、１つ又はそれ以上のメモリバンクと、複数のポートモジュールを前記１つ又はそれ以上のメモリバンクに結合する１つ又はそれ以上の交換ユニットを有する１つ又はそれ以上の交換段階の階層構造を有し、前記１つ又はそれ以上のメモリバンクは各々が１つ又はそれ以上のメモリユニットと１つ又はそれ以上のバンク交換ユニットを有する、システム。
【請求項９】
高速交換環境でパケットを交換するシステムであって、
複数の入力構造の１つで、通信ネットワークの第１構成要素から通信されるパケットを受信する手段を有し、
受信されたパケットを１つ又はそれ以上のメモリ構造の１つ又はそれ以上に書き込む手段を有し、前記複数の入力構造は、前記入力構造の各々が前記１つ又はそれ以上のメモリ構造の各々に書き込むように動作するように、第１交換構造により前記１つ又はそれ以上のメモリ構造に結合され、
前記メモリ構造から複数の出力構造の１つ又はそれ以上へパケットを読み出す手段を有し、前記複数の出力構造は、前記複数の出力構造の各々が前記１つ又はそれ以上のメモリ構造の各々から読み出すように動作するように、第２交換構造により前記１つ又はそれ以上のメモリ構造へ結合され、前記１つ又はそれ以上の出力構造の各々は、前記入力構造がパケットの第２部分を受信する前に、前記メモリ構造から前記パケットの第１部分を読み出すように動作し、第２交換構造は第１の数のリンクにより前記１つ又はそれ以上のメモリ構造へ結合され且つ第２の数のリンクにより前記複数の出力構造へ結合され、第１の数のリンクは第２の数のリンクの２倍又はそれ以上であり、
前記パケットを前記複数の出力構造の１つ又はそれ以上から前記通信ネットワークの１つ又はそれ以上の第２構成要素へ通信する手段を有する、システム。
【請求項１０】
高速交換環境でパケットを交換する論理であって、前記論理は媒体で具体化され、且つ、実行されたときに、
複数の入力構造の１つで、通信ネットワークの第１構成要素から通信されるパケットを受信し、
受信されたパケットを１つ又はそれ以上のメモリ構造の１つ又はそれ以上に書き込み、前記複数の入力構造は、前記入力構造の各々が前記１つ又はそれ以上のメモリ構造の各々に書き込むように動作するように、第１交換構造により前記１つ又はそれ以上のメモリ構造に結合され、
前記メモリ構造から複数の出力構造の１つ又はそれ以上へパケットを読み出し、前記複数の出力構造は、前記複数の出力構造の各々が前記１つ又はそれ以上のメモリ構造の各々から読み出すように動作するように、第２交換構造により前記１つ又はそれ以上のメモリ構造へ結合され、前記１つ又はそれ以上の出力構造の各々は、前記入力構造がパケットの第２部分を受信する前に、前記メモリ構造から前記パケットの第１部分を読み出すように動作し、第２交換構造は第１の数のリンクにより前記１つ又はそれ以上のメモリ構造へ結合され且つ第２の数のリンクにより前記複数の出力構造へ結合され、第１の数のリンクは第２の数のリンクの２倍又はそれ以上であり、
前記パケットを前記複数の出力構造の１つ又はそれ以上から前記通信ネットワークの１つ又はそれ以上の第２構成要素へ通信する、論理。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、通信システムに関連し、特に、高速交換環境でパケットを交換する構造に関連する。
【背景技術】
【０００２】
高速シリアル相互接続が、通信環境で一般的になってきており、そして、その結果、これらの環境でスイッチが行う役割が、更に重要になってきている。伝統的なスイッチは、これらの相互接続をサポートするのに典型的に必要なスケーラビリティと交換速度を提供しない。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
本発明の特定の実施例は、高速交換環境で伝統的パケットを交換することに関連する欠点と問題を減少又は、削除しうる。
【課題を解決するための手段】
【０００４】
本発明の特定の実施例は、高速交換環境で伝統的パケットを交換することに関連する欠点と問題を減少又は、削除しうる。
【０００５】
本発明の実施例では、高速交換環境でパケットを交換するシステムは、１つ又はそれ以上のメモリ構造と、各々が、１つ又はそれ以上のメモリ構造の各々に書き込むことができる複数の入力構造と、入力構造を１つ又はそれ以上のメモリ構造へ接続する第１の交換構造を有する。このシステムは、各々が１つ又はそれ以上のメモリ構造の各々から読み出し、且つ、入力構造が通信ネットワークの第２構成要素からパケットの第２部分を受信する前に、通信ネットワークの第１構成要素へパケットの第１部分を通信する、複数の出力構造をも有する。このシステムは、複数の出力構造を１つ又はそれ以上のメモリ構造へ接続する第２交換構造をも有する。第２交換構造は、第１の数のリンクにより１つ又はそれ以上のメモリ構造へ結合され且つ第２の数のリンクにより複数の出力構造へ結合され、且つ、第１の数のリンクは第２の数のリンクの２倍又はそれ以上である。
【０００６】
本発明の特定の実施例では、１つ又はそれ以上の利点を提供する。特定の実施例は、マルチキャストトラフィックに関連するメモリ要求を減少する。特定の実施例では、ポートモジュールはメモリ資源を共有し、これは、ラインの先頭（ｈｅａｄ−ｏｆ−ｌｉｎｅ）のブロッキングを除去し、メモリ要求を減少し、そして、ポートモジュールでの負荷状態の変化のさらに効率的な取り扱いを可能とする。特定の実施例は、カットスルー転送を提供し、これは、記憶及び転送技術の上の１つ又はそれ以上の利点を提供する。特定の実施例は、遅延されたカットスルー転送を提供し、これも、記憶及び転送技術の上の１つ又はそれ以上の利点を提供する。特定の実施例は、スイッチコアのスループットを増加させる。特定の実施例は、スイッチコアにより交換されるパケットの速度を増加する。特定の実施例は、スイッチコアのフォールスルー待ち時間を減少し、これは、クラスタ応用では重要である。特定の実施例は、単一の集積回路（ＩＣ）又はチップで具体化される。特定の実施例は、スイッチコアの電力消費を減少する。特定の実施例は、イーサネット（登録商標）スイッチ、ＩＮＦＩＮＩＢＡＮＤスイッチ、３ＧＩＯスイッチ、ＨＹＰＥＲＴＲＡＮＳＰＯＲＴスイッチ、ＲＡＰＩＤ  ＩＯスイッチ、又は、専用のバックプレーンスイッチのような異なる応用で使用されることが可能である。ある実施例は、これらの全ての、幾つかの利点を提供し又は提供せず、ある実施例は、図、記述及びここに含まれる請求項から当業者に容易に明らかな、１つ又はそれ以上の他の技術的な利点を提供する。
【０００７】
本発明とその特徴及び利点の更に完全な理解を提供するために、添付の図面と共に、以下の説明を参照する。
【発明を実施するための最良の形態】
【０００８】
図１は、１つ又はそれ以上のサーバシステム１４；１つ又はそれ以上の記憶システム１６；１つ又はそれ以上のネットワークシステム１８；及び、相互接続１２を、１つ又はそれ以上のローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）又は他のネットワークを含む、１つ又はそれ以上の他のネットワーク、に結合する１つ又はそれ以上のルーティングシステム２０の間の通信をサポートするシリアル又は他の相互接続１２を含む例示のシステムエリアネットワーク１０を示す。サーバシステム１４は各々が、１つ又はそれ以上の中央処理ユニット（ＣＰＵ）と１つ又はそれ以上のメモリユニットを有する。記憶システム１６は各々が、１つ又はそれ以上のチャネルアダプタ（ＣＡ）、１つ又はそれ以上のディスクアダプタ（ＤＡ）及び１つ又はそれ以上のＣＰＵモジュール（ＣＭ）を有する。相互接続１２は、１つ又はそれ以上のスイッチ２２を有し、これは、特定の実施例では、以下に更に完全に記載するように、イーサネット（登録商標）スイッチを有する。システムエリアネットワーク１０の構成要素は、１つ又はそれ以上のリンクを使用して互いに結合され、その各々は、１つ又はそれ以上のコンピュータバス、ローカルエリアネットワーク（ＬＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、インターネットの一部又は、他の配線、光、無線又は、他のリンクを有する。システムエリアネットワーク１０は、特定の構成に互いに結合された特定の構成要素を有するように記載され且つ説明されるが、本発明は、適切な構成で互いに結合された適する構成要素を有する適する任意のシステムエリアネットワークを考慮する。
【０００９】
図２は、システムエリアネットワーク１０の例示のスイッチ２２を示す。スイッチ２２は、複数のポート２４とスイッチコア２６を有する。ポート２４は各々が、スイッチコア２６と（サーバシステム１４、記憶システム１６、ネットワークシステム１８、ルーティングシステム２０又は、他のスイッチ２２のような）システムエリアネットワーク１０の構成要素に結合されている。第１ポート２４は、システムエリアネットワーク１０の第１構成要素からパケットを受信し、パケットをシステムエリアネットワーク１０の第２の構成要素へ通信する第２ポート２４へ交換するためにスイッチコア２６へパケットを通信する。パケットへの参照は、適切な、パケット、データグラム、フレーム又は、他のデータの単位を含みうる。スイッチコア２６は、第１ポート２４からパケットを受信し、以下に更に完全に記載するように、１つ又はそれ以上の第２ポート２４へパケットを交換する。特定の実施例では、スイッチ２２は、イーサネット（登録商標）スイッチを含む。特定の実施例では、スイッチ２２は、有線速度又はその付近でパケットを交換できる。
【００１０】
図３は、スイッチ２２のスイッチコア２６の例示の構造２８を示す。構造２８は、１つの方向のトラフィックを扱うことが可能である。構造２８は、１つ又はそれ以上の入力構造３０、１つ又はそれ以上の出力構造３２、２つの交換構造３４及び１つ又はそれ以上のメモリ構造３６を有する。構造２８の構成要素は、バス又は他のリンクを使用して互いに結合される。特定の実施例では、構造２８は、単一のＩＣを使用して具体化される。トラッフィックへの参照は、１つ又はそれ以上のパケット入力、その道を開けること、そして、出力構造２８を含み、そして、トラフィックの方向への参照は、入力構造３０を通してのパケット入力構造２８及び出力構造３２をとしての出力構造２８を含む。構造２８は、異なる応用で使用され得る。例としてそして限定するのではなく、構造２８は、（１０ギガバイトイーサネット（登録商標）スイッチ２２又は特定の実施例のイーサネット（登録商標）スイッチ２２を含む）イーサネット（登録商標）スイッチ２２のスイッチコア２６；ＩＮＦＩＮＩＢＡＮＤスイッチ２２のスイッチコア２６；３ＧＩＯスイッチ２２のスイッチコア２６；ＨＹＰＥＲＴＲＡＮＳＰＯＲＴスイッチ２２のスイッチコア２６；ＲＡＰＩＤ  ＩＯスイッチ２２のスイッチコア２６；又は、記憶システム１６、ネットワークシステム１８又は、両方のための専用のバックプレーンスイッチ２２のスイッチコア２６で使用され得る。
【００１１】
入力構造３０は、スイッチコア２６とスイッチ２２のポート２４の間のインターフェースを提供し、そして、ポート２４からパケットを受信しそして、交換構造３４ａを介して１つ又はそれ以上のメモリ構造３６へパケットを書き込む入力論理を有する。入力構造３０は、１つ又はそれ以上のリンクを使用してポート２４と交換構造３４ａに結合されている。出力構造３２も、スイッチコア２６とポート２４の間のインターフェースを提供するが、しかし、交換構造３４ｂを介して１つ又はそれ以上のメモリ構造３６からパケットを読み出しそしてポート２４へパケットを通信する出力論理を有する。出力構造３２は、１つ又はそれ以上のリンクを使用してポート２４と交換構造３４ｂに結合される。システムエリアネットワーク１０の第１構成要素から入力構造３０により受信されたパケットは、入力構造から１つ又はそれ以上のメモリ構造３６に書き込まれそして、後に、出力構造３２から１つ又はそれ以上のシステムエリアネットワーク１０の第２構成要素へ通信するために、メモリ構造３６から１つ又はそれ以上の出力構造３２へ読み出される。入力構造３０により受信された又は出力構造３２から通信されたパケットへの参照は、受信された又は通信された全体のパケット又は、適切に、受信された又は通信されたパケットの一部のみを含む。同様に、１つ又はそれ以上のメモリ構造３６へ書き込まれている又はそこから読み出されているパケットへの参照は、メモリ構造３６へ書き込まれている又はそこから読み出されている全体のパケット又は、適切に、メモリ構造３６へ書き込まれている又はそこから読み出されているパケットの一部のみを含む。更に完全に以下に説明するように、特定の実施例では、入力構造３０は、入力構造３０と出力構造３２を使用する（以下に説明する）単一のポーモジュール３８が入力論理と出力論理の両方を含むように出力構造３２と結合される。代わりに、特定の実施例では、ポーモジュール３８は、入力論理のみ又は、出力論理のみを含む。
【００１２】
交換構造３４ａは、入力構造３０からパケットを受信しそして、パケットを１つ又はそれ以上のメモリ構造３６へ交換する。交換構造３４ａを介して書き込み動作が、スケジューリング技術に従って、スケジュールされる。例として、特定の実施例では、静的なスケジューリングが交換構造３４ａを介した書き込み動作で使用される。以下で更に詳細に記載されるように、交換構造３４ａは、入力構造３０とメモリ構造３６の間でパケットを交換する１つ又はそれ以上の構成要素を有する。例として、特定の実施例では、交換構造３４ａは、（以下で更に詳細に記載する）複数の交換ユニット４０と（以下で更に詳細に記載する）複数のバンク交換ユニット４２を有する。
【００１３】
交換構造３４ｂは、メモリ構造３６からパケットを受信しそして、パケットを１つ又はそれ以上の出力構造３２へ交換する。交換構造３４ｂを介した読み出し動作は、スケジューリング技術に従って、スケジュールされる。例として、特定の実施例では、オンデマンドスケジューリングが、交換構造３４ｂを介しての読み出し動作に使用される。オンデマンドスケジューリングは、接続及び解法技術を含むことが可能である。以下に更に完全に記載するように、交換構造３４ｂは、出力構造３２とメモリ構造３６の間でパケットを交換する１つ又はそれ以上の構成要素を有する。例として、特定の実施例では、交換構造３４ｂは、複数の交換ユニット４０と複数のバンク交換ユニット４２を有する。交換構造３４ｂは、１つ又はそれ以上のリンクによりメモリ構造３６に結合されそして、上述のように、１つ又はそれ以上のリンクにより出力構造へ結合され得る。交換構造３４ｂをメモリ構造３６に結合するリンクの合計数は、交換構造３４ｂを出力構造３２に結合する合計数よりも大きいことがことが可能である。例として限定するのではなく、交換構造３４ｂをメモリ構造３６に結合するリンクの合計数は、交換構造３４ｂを出力構造３２に結合する合計数の２倍であることが可能である。他の例として、交換構造３４ｂをメモリ構造３６に結合するリンクの合計数は、交換構造３４ｂを出力構造３２に結合する合計数の４倍であることが可能である。
【００１４】
特定の実施例では、交換構造３４ａは、入力構造３０とメモリ構造３６の間で及びメモリ構造３６と出力構造３２の間でパケットを交換する単一構成の構成要素が交換構造３４ａと交換構造３４ｂをの両方を実現するように交換構造３４ｂと結合され得る。これらの実施例では、組合せの１つ又はそれ以上の構成要素は交換構造３４ａと交換構造３４ｂにより共有され得るが、しかし、交換構造３４ａと交換構造３４ｂにより共有される必要はない。代わりに、特定の実施例では、交換構造３４ａは、交換構造３４ｂが実現されるメモリ構造３６と出力構造３２の間でパケットを交換する構成要素の構成から別である、入力構造３０とメモリ構造３６の間でパケットを交換する構成要素の構成で実現されうる。同様に、交換構造３４ｂは、交換構造３４ａが実現される入力構造３０とメモリ構造３６の間でパケットを交換する構成要素の構成から別である、メモリ構造３６と出力構造３２の間でパケットを交換する構成要素の構成で実現されうる。
【００１５】
スイッチコア２６により受信されたパケットは、メモリ構造３６に書き込まれそして、続いて、スイッチコア２６からの通信のためにメモリ構造３６から読み出される。メモリ構造３６は、１つ又はそれ以上のリンクを使用して書き込み動作のために交換構造３４ａに結合される。メモリ構造３６は、１つ又はそれ以上のリンクを使用して読み出し動作のために交換構造３４ｂに結合される。例として、特定の実施例では、メモリ構造３６は１つのリンクをしようして交換構造３４ａに結合され、４つのリンクを使用して交換構造３４ｂに結合され、（１つ又はそれ以上のパケットがメモリ構造３６に書き込まれるスイッチコア２６の一連の１つ又はそれ以上のクロックサイクルを含む）書き込みサイクルあたりメモリ構造３６への１つの書き込み動作及び、（１つ又はそれ以上のパケットがメモリ構造３６から読み出されるスイッチコア２６の一連の１つ又はそれ以上のクロックサイクルを含む）読み出しサイクルあたりメモリ構造３６からの４つの書き込み動作を可能とする。メモリ構造３６は、データを書き込みそして読み出す１つ又はそれ以上の構成要素を有する。例として、特定の実施例では、メモリ構造３６は１つ又はそれ以上のスタティックランダムアクセスメモリ（ＳＲＡＭ）装置を有する。以下に更に詳細に説明するように、特定の実施例では、メモリ構造３６はメモリバンク４４に組織化された１つ又はそれ以上のメモリユニット４６を有する。
【００１６】
特定の実施例では、任意の入力構造３０はメモリ構造３６に書き込むことが可能であり、そして、任意の出力構造３２はメモリ構造３６から読み出すことがことが可能である。入力構造３０と出力構造３２によるこのメモリ構造３６の共有は、ラインの先頭のブロッキングを除去し（それによりスイッチコア２６のスループットを増加し）、スイッチコア２６に関連するメモリ要求を減少し、そして、スイッチコア２６が、入力構造３０、出力構造３２及びその両方の負荷状態の変化を更に効率的に扱うことを可能とする。特定の実施例では、システムエリアネットワーク１０の第１構成要素からスイッチコア２６により受信されたパケットの一部分は、スイッチコア２６が全体のパケットを受信する前に、システムエリアネットワーク１０の１つ又はそれ以上の第２構成要素へスイッチコア２６から通信されうる。特定の実施例では、このカットスルー転送は、（減少された待ち時間、減少されたメモリ要求、及び増加されたスループットのような）記憶及び転送技術の上の１つ又はそれ以上の利点を提供する。
【００１７】
特定の実施例では、スイッチコア２６は、１つのみの方向のトラフィックを扱う１つのみの構造２８を有する。代わりに、特定の実施例では、スイッチコア２６は、２つの方向のトラフィックを扱う２つの構造２８を有する。これらの実施例では、構造２８の１つ又はそれ以上の構成要素は、互いに結合され得る。例として、入力構造３０は出力構造３２と結合され、そして、上述のように、入力論理と出力論理の両方を有するポーモジュール３８で実現される。他の例として、交換構造３４ａは、入力構造３０とメモリ構造３６の間で及びメモリ構造３６と出力構造３２の間でパケットを交換する単一構成の構成要素が、交換構造３４ａと交換構造３４ｂの両方を実現するように、交換構造３４ｂと結合され得る。入力構造３０が出力構造３２と結合されるように記載され、そして、交換構造３４ａが交換構造３４ｂと結合されるように記載されているが、本発明は、任意の適する構成の構造２８の任意の適する構成要素の任意の適する結合を考慮する。例として、２つの構造２８が２つの方向のトラフィックを扱うために互いに結合された実施例では、スイッチコアの１つ又はそれ以上のポーモジュール３８は、１つのみの入力論理又は１つのみの出力論理を有することが可能である。更に加えて、逆に、交換構造３４ａは、交換構造３４ｂが実現される構成要素の構成とは別の構成要素の構成で実現され得る。
【００１８】
図４は、スイッチ２２の例示のスイッチコア２６を示す。スイッチコア２６は２つの方向のトラフィックを扱う２つの構造２８を有する。２つの構造２８を有するスイッチコア２６が、記載され且つ説明されているが、本発明は、任意の適する程度に任意の適する構成で結合された２つの構造２８を有するスイッチコア２６を考慮する。本発明は、特定の実施例で１つのみの構造２８を有するスイッチコア２６を考慮する。スイッチコア２６は、１２のポートモジュール２８、ストリームメモリ４８、タグメモリ５０、中央エージェント５２及びルーティングモジュール５４を有する。スイッチコア２６の構成要素は、バス又は他のリンクを使用して互いに結合される。特定の実施例では、スイッチコア２６は、単一のＩＣで具体化される。スイッチコア２６の省略時（デフォルト）モードでは、システムエリアネットワーク１０の第１構成要素からスイッチコア２６により受信されたパケットは、スイッチコア２６が全体のパケットを受信する前に、スイッチコア２６からシステムエリアネットワーク１０の１つ又はそれ以上の第２構成要素へ通信されうる。特定の実施例では、カットスルー転送は、（減少された待ち時間、減少されたメモリ要求、及び増加されたスループットのような）記憶及び転送技術の上の１つ又はそれ以上の利点を提供する。スイッチコア２６は、異なる応用についても構成されうる。例でありそして限定されないとして、スイッチコア２６は、（特定の実施例のギガバイトイーサネット（登録商標）スイッチ２２を含む）イーサネット（登録商標）スイッチ２２、ＩＮＦＩＮＩＢＡＮＤスイッチ２２、３ＧＩＯスイッチ２２、ＨＹＰＥＲＴＲＡＮＳＰＯＲＴスイッチ２２、ＲＡＰＩＤ  ＩＯスイッチ２２、又は、記憶システム１６、ネットワークシステム１８又は、両方のための専用のバックプレーンスイッチ２２又は、他のスイッチ２２について、構成されることが可能である。
【００１９】
ポートモジュール２８は、スイッチ２２のスイッチコア２６とポート２４の間のインターフェースを提供する。ポートモジュール２８は、ポート２４、ストリームメモリ４８、タグメモリ５０、中央エージェント５２、及びルーティングテーブル３６に結合される。特定の実施例では、ポートモジュール２８は、（システムエリアネットワーク１０の構成要素からパケットを受信しそしてストリームメモリ４８へパケットを書き込むのに使用される）入力論理と（ストリームメモリ４８からパケットを読み出しそしてパケットをシステムエリアネットワーク１０の構成要素へ通信するのに使用される）出力論理の両方を有する。代わりとして、特定の実施例では、ポートモジュール２８は、入力論理のみ又は出力論理のみを有する。ポートモジュール２８への参照は、適切な場合に、入力論理、出力論理又は、両方を有するポートモジュール２８を含む、ポートモジュール２８は、入力フロー制御のための入力バッファも含みうる。イーサネット（登録商標）スイッチ２２では、ポーズ機能が、入力フロー制御について使用され得、これは効果的であるために時間がかかる。ポートモジュール２８の入力バッファは、ポーズ機能が入力するパケットを止める前に送られたパケットの一時的な記憶に使用される。入力フロー制御についてクレジットがエクスポート（移出）される場合には、入力バッファは不要であるので、ＩＮＦＩＮＩＢＡＮＤスイッチ２２の場合のように、入力バッファは任意である。特定の実施例では、ポートモジュール２８をストリームメモリ４８に結合するリンクは、（データがポートモジュール２８からストリームメモリ４８に書き込まれるスイッチコア２６の動作を含む）書き込み動作のためのものとそして、（データがストリームメモリ４８からポートモジュール２８に読み出されるスイッチコア２６の動作を含む）読み出し動作のためのものの、２つのリンクを有する。これらのリンクの各々は、３６ビットを送り、ポートモジュール２８とストリームメモリ４８の間のデータ経路を両方向に３６ビット幅にする。
【００２０】
システムエリアネットワーク１０の第１構成要素から第１ポートモジュール２８により受信されるパケットは、第１ポートモジュール２８からストリームメモリ４８へ書き込まれ、そして後に、第２ポートモジュール２８からシステムエリアネットワーク１０の１つ又はそれ以上の第２構成要素への通信のために、ストリームメモリ４８から１つ又はそれ以上の第２ポートモジュール２８へ読み出される。ポートモジュール２８により受信されている又はそこから通信されているパケットへの参照は、適切に、ポートモジュール２８により受信されている又はそこから通信されている全体のパケット又は、ポートモジュール２８により受信されている又はそこから通信されているパケットの一部を含みうる。同様に、ストリームメモリ４８へ書き込まれている又はそこから読み出されているパケットへの参照は適切に、ストリームメモリ４８へ書き込まれている又はそこから読み出されている全体のパケット又は、ストリームメモリ４８へ書き込まれている又はそこから読み出されているパケットの一部のみを含みうる。入力論理を含むポートモジュール２８は、ストリームメモリ４８に書き込むことが可能であり、そして、出力論理含むポートモジュール２８は、ストリームメモリ４８から読み出すことがことが可能である。特定の実施例では、ポートモジュール２８によるストリームメモリ４８の共有は、ラインの先頭のブロッキングを除去し（それによりスイッチコア２６のスループットを増加し）、スイッチコア２６に関連するメモリ要求を減少し、そして、スイッチコア２６が、ポートモジュール２８での負荷状態の変化を更に効率的に扱うことを可能とする。
【００２１】
スイッチコア２６のストリームメモリ４８は、図５に示されたように、論理的にブロック５６に分割され、これは更に、ワード５８に分割される。行はブロック５６を示しそして、行と列の交差点は、ブロック５６のワード５８を示す。特定の実施例では、ストリームメモリ４８は、１５３６ブロック５６に分割され、各ブロック５６は、２４ワード５８を含み、ワード５８は７２ビットを有する。ストリームメモリ４８は、特定の数のビットを含む特定の数のワード５８に分割された特定の数のブロック５６に分割されているように記述されそして説明されているが、本発明は、ストリームメモリ４８が、適する数のビットを含む適する数のワード５８に分割された適する数のブロック５６に分割されていることを考慮する。パケットサイズは、パケットごとに異なることが可能である。ブロック５６と同じ又はそれより少ないビットを含むパケットが１つのブロック５６に書き込まれることが可能であり、そして、ブロック５６よりも多くのビットを含むパケットは、互いに連続である必要はない、１つより多くのブロック５６に書き込まれることが可能である。
【００２２】
ブロック５６への書き込み又はそこからの読み出しのときには、ポートモジュール２８は、ブロック５６の任意のワード５８から開始でき、そして、順次にブロック５６のワード５８へ書き込み又はそこから読み出すことが可能である。ポートモジュール２８は、ブロック５６へ書き込みそこから読み出しながら、ブロック５６の第１ワード５８へラップアラウンドすることも可能である。ブロック５６は、書き込み動作又は読み出し動作でブロック５６を識別するために使用されるアドレスを有し、そして、オフセットは、書き込み動作又は読み出し動作でブロック５６のワード５８を識別するために使用される。例として、４１７６ビット長のパケットを考えるとする。パケットは、ブロック５６ａのワード５８ｆで開始しそしてブロック５６ｂを含まず、ブロック５６ｄのワード５８ｋへ続く、５８のワード５８に書き込まれる。書き込み動作では、ブロック５６ａのワード５８ｆは、第１アドレスと第１オフセットで識別され、ブロック５６ｃのワード５８ｆは、第２アドレスと第２オフセットで識別され、そして、ブロック５６ｄのワード５８ｆは、第３アドレスと第３オフセットで識別される。パケットは、ブロック５６ａのワード５８ｆで開始しそしてブロック５６ｂを含まず、ブロック５６ｄのワード５８ｋへ続く、ストリームメモリ４８から読み出される。読み出し動作では、ブロック５６ａのワード５８ｆは、第１アドレスと第１オフセットで識別され、ブロック５６ｃのワード５８ｆは、第２アドレスと第２オフセットで識別され、そして、ブロック５６ｄのワード５８ｆは、第３アドレスと第３オフセットで識別される。
【００２３】
タグメモリ５０は、各々が、書き込むべき次のブロック５６を決定するために第１ポートモジュール２８によりそして、そこから読み出すべき次のブロック５６を決定するために１つ又はそれ以上の第２ポートモジュール２８により使用される、複数のリンクされたリストを有する。タグメモリ５０は、以下に更に完全に説明するように、ポートモジュール２８からストリームメモリ４８への書き込み動作のためにポートモジュール２８に有効になされることが可能である次のブロック５６を決定するために、中央エージェント５２により使用され得るリンクされたリストも有する。タグメモリ５０は、複数のエントリを有し、その少なくとも幾つかは各々が、ストリームメモリ４８のブロック５６に対応する。ストリームメモリ４８の各ブロック５６は、タグメモリ５０内に対応するエントリを有する。タグメモリ５０内のエントリは、タグメモリ５０内の他のエントリへのポインタを有することが可能であり、この結果リンクされたリストとなる。
【００２４】
ポートモジュール２８からストリームメモリ４８への書き込み動作のためにポートモジュール２８に有効であるブロック５６に対応するタグメモリ５０内のエントリは、ポートモジュール２８がリンクされたエントリを使用して書き込むべき次のブロック５６を決定できるように、ともにリンクされている。例として、ポートモジュール２８からストリームメモリ４８への書き込み動作のためにポートモジュール２８に有効である４つのブロック５６を考えるとする。第１ブロック５６に対応するタグメモリ５０内の第１エントリは、第２ブロック５６へのポインタを有し、第２ブロック５６に対応するタグメモリ５０内の第２エントリは、第３ブロック５６へのポインタを有し、そして、第３ブロック５６に対応するタグメモリ５０内の第３エントリは、第４ブロック５６へのポインタを有する。ポートモジュール２８は第１ブロック５６へ書き込みそして、ポートモジュール２８が第１ブロック５６に書き込んでいる間に、書き込むべき次のブロック５６を決定するために第１エントリ内のポインタを使用する。ポインタはポートモジュール２８に第２ブロック５６を示し、そして、ポートモジュール２８が第１ブロック５６への書き込みを終了したときに、ポートモジュール２８は第２ブロック５６へ書き込む。ポートモジュール２８が第２ブロック５６へ書き込んでいる間に、ポートモジュール２８は、書き込むべき次のブロック５６を決定するために第２エントリ内のポインタを使用する。ポインタはポートモジュール２８に第３ブロック５６を示し、そして、ポートモジュール２８が第２ブロック５６への書き込みを終了したときに、ポートモジュール２８は第３ブロック５６へ書き込む。ポートモジュール２８が第３ブロック５６へ書き込んでいる間に、ポートモジュール２８は、書き込むべき次のブロック５６を決定するために第３エントリ内のポインタを使用する。ポインタはポートモジュール２８に第４ブロック５６を示し、そして、ポートモジュール２８が第３ブロック５６への書き込みを終了したときに、ポートモジュール２８は第４ブロック５６へ書き込む。タグメモリ５０内のリンクされたリストは、書き込むべき次のブロック５６を決定するために、１つより多くのポートモジュール２８により使用されることができない。
【００２５】
ブロック５６がポートモジュール２８からストリームメモリ４８への書き込み動作のためにポートモジュール２８に有効になされたときには、ブロック５６に対応するタグメモリ５０内のエントリは、ポートモジュール２８が書き込むべき次のブロック５６を決定するために使用しているリンクされたリストへ追加されうる。例として、上述のリンクされたリストを考えるとする。第４エントリがリンクされたリストの最後のエントリである場合には、第５ブロック５６がポートモジュール２８に有効になされるときに、第４エントリは第５ブロック５６へのポインタを含むように修正されうる。
【００２６】
書き込むべき次のブロック５６を決定するために第１ポートモジュール２８が使用しているタグメモリ５０のリンクされたリストも、読み出すべき次のブロック５６を決定するために１つ又はそれ以上の第２のポートモジュール２８により使用され得る。例として、上述のリンクされたリストを考えるとする。パケットの第１部分は、第１ポートモジュール２８から第１ブロック５６へ書き込まれ、パケットの第２部分は、第１ポートモジュール２８から第２ブロック５６へ書き込まれ、そして、パケットの第３及び最終部分は、第１ポートモジュール２８から第３ブロック５６へ書き込まれる。第３ブロック５６にパケットの最終部分が書き込まれたことを示すために第３ブロック５６へエンドマークも書き込まれる。第２ポートモジュール２８は、第１ブロック５６から読み出し、第２ポートモジュール２８が第１ブロック５６から読み出している間に、読み出すべき次のブロック５６を決定するために第１エントリ内のポインタを使用する。ポインタは第２ポートモジュール２８に第２ブロック５６を示し、そして、第２ポートモジュール２８が第１ブロック５６からの読み出しを終了したときに、第２ポートモジュール２８は、第２ブロック５６から読み出す。第２ポートモジュール２８が第２ブロック５６から読み出している間に、ポートモジュール２８は、読み出すべき次のブロック５６を決定するために第２エントリ内のポインタを使用する。ポインタは第２ポートモジュール２８に第３ブロック５６を示し、そして、第２ポートモジュール２８が第２ブロック５６からの読み出しを終了したときに、第２ポートモジュール２８は、第３ブロック５６から読み出す。第２ポートモジュール２８が第３ブロック５６から読み出しそして、第３ブロック５６内のエンドマークを使用し、パケットの最終部分が第３ブロック５６に書き込まれたことを決定する。タグメモリ５０内のリンクされたリストは、書き込むべき次のブロック５６を決定するために、１つより多くの第１ポートモジュール２８により使用されることができないが、リンクされたリストは読み出すべき次のブロック５６を決定するために１つ又はそれ以上の第２ポートモジュール２８により使用されることが可能である。
【００２７】
異なるパケットは、異なる宛先を有しそして、パケットがストリームメモリ４８を通る順序は、先入れ、先出し（ファーストイン、ファーストアウト、ＦＩＦＯ）である。例として、第２パケットが受信されそして１つ又はそれ以上の第２ブロック５６に書き込まれる前に、受信されそして１つ又はそれ以上の第１ブロック５６に書き込まれた第１パケットを考える。第２パケットは、第１パケットよりも前にストリームメモリ４８から読み出されると、第２ブロック５６は第１ブロック５６の前に他の書き込み動作に対して有効となる。特定の実施例では、パケットが書き込まれたストリームメモリ４８のブロック５６は、パケットのポートモジュール２８に指定されている全てのポートモジュール２８によりブロック５６からパケットが読み出されたすぐ後に、ポートモジュール２８からブロック５６への書き込み動作のために、ポートモジュール２８へ有効になされる。パケットの指定されたポートモジュール２８は、システムエリアネットワーク１０の構成要素、スイッチコア２６からの下流、即ちパケットの最終又は中間宛先へ、結合されたポートモジュール２８を有する。
【００２８】
特定の実施例では、クレジットがポートモジュール２８の入力論理に割当てられ、そして、書き込み動作を管理するのに使用される。書き込み動作を管理するのにクレジット使用することは、スイッチコア２６によるカットスルー転送を容易にでき、これは、待ち時間（レーテンシ）を減少し、スループットを増加し、そして、スイッチコア２６に関連するメモリ要求を減少する。また、クレジットが書き込み動作を管理するために使用される場合には、どの時点でどのブロック５６にどのポートモジュール２８が書き込めるかに関する決定が、ポートモジュール２８で局所的に行われることが可能であり、これは、スイッチコア２６のスループットと交換速度を増加する。書き込み動作を管理するのにクレジット使用することは、ラインの先頭のブロッキングも除去できそして、ポートモジュール２８で負荷状態の変化に応じてポートモジュール２８間でメモリ資源の分配のより大きな柔軟性を提供できる。クレジットは、ストリームメモリ４８のブロック５６に対応しそして、ブロック５６に書き込むためにポートモジュール２８により使用されることが可能である。クレジットは、クレジットのプールからポートモジュール２８に割当てられ、これは、中央エージェント５２により管理される。ポートモジュール２８に割当てられているクレジットへの参照は、ポートモジュール２８からブロック５６への、及び逆の、書き込み動作のためにポートモジュール２８に有効になされているクレジットに対応するブロック５６を含む。
【００２９】
クレジットのプール内のクレジットは、どのポートモジュール２８にも割当でき、そして、特定のポートモジュール２８に割当てられる必要はない。ポートモジュール２８は、ポートモジュール２８に有効なクレジットのみを使用でき、そして、他のポートモジュール２８に有効な又はクレジットのプール内にあるクレジットを使用できない。クレジットは、クレジットがポートモジュール２８に割当てられそしてポートモジュール２８がまだクレジットを使用していない場合に、ポートモジュール２８に有効である。ポートモジュール２８に割当てられているクレジットは、ポートモジュール２８がそのクレジットを使用するまでポートモジュール２８に有効である。クレジットは一度に１より多くのポートモジュール２８に割当てられることは出来ず、そしてクレジットは同時に１より多くのポートモジュール２８に有効にされることは出来ない。特定の実施例では、第１ポートモジュール２８がクレジットに対応するブロック５６にパケットを書き込むためにそのクレジットを使用するときには、そのクレジットは、パケットの全ての指定されたポートモジュール２８がブロック５６からパケットを読み出したすぐ後にクレジットのプールに戻される。
【００３０】
中央エージェント５２は、クレジットを、クレジットのプールから、ポートモジュール２８へ割当てることができる。例として、中央エージェント５２は、ポートモジュール２８への予め定められた数のクレジットの初期割当を行うことが可能である。特定の実施例では、中央エージェント５２は、スイッチコア２６の開始で又はスイッチコア２６がリセットされるのに応じて、ポートモジュール２８へのクレジットの初期割当を行うことが可能である。他の例として、中央エージェント５２は、ポートモジュール２８が使用している他のクレジットを置き換えるためにポートモジュール２８へクレジットを割当てることができる。特定の実施例では、ポートモジュール２８が第１クレジットを使用するときには、ポートモジュール２８は、ポートモジュール２８が第１クレジットを使用していることを中央エージェント５２に通知し、そして、ポートモジュール２８が第１クレジットを使用していることを中央エージェント５２に通知するポートモジュール２８に応じて、しかし、ポートモジュール２８により使用されているブロック５６の数が適用可能な限度に合わない又は超えている場合にのみ、中央エージェント５２は第２クレジットを第１クレジットと置き換えるようにポートモジュール２８へ割当る。ポートモジュール２８により使用されているブロック５６への参照は、パケットがポートモジュール２８から書き込まれている及びそれからパケットの全ての指定されたポートモジュール２８がパケットを読み出していない、ブロック５６を含む。適用可能な限度まで、ポートモジュール２８により使用されるクレジットを、置き換えることにより、ポートモジュール２８へ有効なクレジットの数は、比較的一定に保たれ、そして、ポートモジュール２８で負荷状態が上昇する場合には、更なるブロック５６が、ポートモジュール２８での負荷状態の増加に応じてポートモジュール２８へ供給されることが可能である。限度はポートモジュール２８により使用されるブロックの数に適用されることが可能であり、これは、ポートモジュール２８が多すぎるブロック５６を使用しそれにより、多すぎる共有されたメモリ資源を使用することを防止する。限度は、クレジットのプール内のクレジットの数に基づいて動的に制御されうる。クレジットのプール内のクレジットの数が減少する場合には、限度も減少する。限度の計算とクレジットがポートモジュール２８に割当てられるそれに従った処理は、スイッチコア２６を通してパケットのクリティカルパスから発生し、これは、スイッチコア２６の交換速度を増加する。
【００３１】
タグメモリ５０内のリンクされたリストは、ポートモジュール２８に割当てられうる次のクレジットを決定するために中央エージェント５２により使用されることが可能である。リンクされたリストの要素は、順にクレジットのプール内のクレジットに対応するブロック５６に対応するタグメモリ５０内のエントリを含む。例として、クレジットのプール内の４つのクレジットを考える。第１クレジットは第１ブロック５６に対応し、第２クレジットは第２ブロック５６に対応し、第３クレジットは第３ブロック５６に対応し、そして、第４クレジットは第４ブロック５６に対応する。第１ブロック５６に対応するタグメモリ５０内の第１エントリは第２ブロック５６へのポインタを有し、第２ブロック５６に対応するタグメモリ５０内の第２エントリは第３ブロック５６へのポインタを有し、そして、第３ブロック５６に対応するタグメモリ５０内の第３エントリは第４ブロック５６へのポインタを有する。中央エージェント５２は、第１クレジットをポートモジュール２８に割当て、中央エージェント５２は第１クレジットをポートモジュール２８に割当てながら、ポートモジュール２８に割当てる次のクレジットを決定するために第１エントリ内のポインタを使用する。ポインタは、中央エージェント５２に第２ブロック５６を示し、そして、中央エージェント５２がポートモジュール２８への第１クレジットの割当てを終了したときに、中央エージェント５２はポートモジュール２８へ第２クレジットを割当てる。中央エージェント５２は第２クレジットをポートモジュール２８に割当てながら、中央エージェント５２はポートモジュール２８に割当てる次のクレジットを決定するために第２エントリ内のポインタを使用する。ポインタは、中央エージェント５２に第３ブロック５６を示し、そして、中央エージェント５２がポートモジュール２８への第２クレジットの割当てを終了したときに、中央エージェントはポートモジュール２８へ第３クレジットを割当てる。中央エージェント５２は第３クレジットをポートモジュール２８に割当てながら、中央エージェント５２はポートモジュール２８に割当てる次のクレジットを決定するために第３エントリ内のポインタを使用する。ポインタは、中央エージェント５２に第４ブロック５６を示し、そして、中央エージェント５２がポートモジュール２８への第３クレジットの割当てを終了したときに、中央エージェントはポートモジュール２８へ第４クレジットを割当てる。
【００３２】
ブロック５６に対応するクレジットがクレジットのプールに戻されたときに、ブロック５６に対応するタグメモリ５０内のエントリは、ポートモジュール２８に割当てる次のクレジットを決定するために中央エージェント５２が使用しているリンクされたリストの最後に加えられる。例として、上述のリンクされたリストを考える。第４のエントリがリンクされたリストの最後の要素である場合には、第５ブロック５６に対応する第５クレジットがクレジットのプールに追加されたときに、第４エントリは、第５ブロック５６に対応するタグメモリ５０内の第５エントリへのポインタを含めるように修正されうる。タグメモリ５０内のエントリは各々が、ストリームメモリ４８のブロック５６に対応し、ブロック５６へ指すポインタもタグメモリ５０内のエントリを指す。
【００３３】
ポートモジュール２８が入力するパケットを受信するときには、ポートモジュール２８は、ストリームメモリ４８へパケットを書き込むために十分なクレジットがポートモジュール２８に有効かどうかを決定する。特定の実施例では、ストリームメモリ４８へパケットを書き込むために十分なクレジットがポートモジュール２８に有効な場合には、ポートモジュール２８は１つ又はそれ以上のクレジットを使用して、ストリームメモリ４８へパケットを書き込む。特定の実施例では、ストリームメモリ４８へパケットを書き込むために十分なクレジットがポートモジュール２８に有効でない場合には、ポートモジュール２８は、パケットを入力バッファに書き込みそして、後に、ストリームメモリ４８へパケットを書き込むために十分なクレジットがポートモジュール２８に有効になったときに、１つ又はそれ以上のクレジットを使用して、ストリームメモリ４８へパケットを書き込む。入力バッファにパケットを書き込むポートモジュール２８の代わりとして、ポートモジュール２８はパケットを中断することが可能である。特定の実施例では、ストリームメモリ４８へパケットの一部のみを書き込むために十分なクレジットがポートモジュール２８に有効な場合には、ポートモジュール２８は１つ又はそれ以上のクレジットを使用して、ストリームメモリ４８へ書き込まれるべきパケットの一部をストリームメモリ４８に書き込むことができ、そして、パケットの１つ又はそれ以上の他の部分を入力バッファに書き込むことができる。後に、ストリームメモリ４８へパケットの１つ又はそれ以上の他の部分を書き込むために十分なクレジットがポートモジュール２８に有効になったときに、ポートモジュール２８は、１つ又はそれ以上のクレジットを使用して、ストリームメモリ４８へパケットの１つ又はそれ以上の他の部分を書き込むことができる。特定の実施例では、カットスルー転送のような、遅延されたカットスルー転送が、記憶及び転送技術の上の（減少された待ち時間、減少されたメモリ要求、及び増加されたスループットのような）１つ又はそれ以上の利点を提供する。ストリームメモリ４８へパケットを書き込むために十分なクレジットがポートモジュール２８に有効かどうかを決定するポートモジュール２８への参照は、ストリームメモリ４８へ全体のパケットを書き込むために、ストリームメモリ４８へパケットの受信された部分のみを書き込むために又は、ストリームメモリ４８へパケットの少なくとも一部分を書き込むために、十分なクレジットがポートモジュール２８に有効どうかを決定するポートモジュール２８を含む。
【００３４】
特定の実施例では、全体のパケッが受信されるまで入力パケットの長さを知ることができない。これらの実施例では、（標準の適用可能なセットに従った）最大パケットサイズが、ストリームメモリ４８へポートモジュール２８により受信された入力パケットを書き込むために十分なクレジットがポートモジュール２８に有効かどうかを決定するのに使用されることが可能である。電気電子工学会（ＩＥＥＥ）により発行された標準のセットに従って、イーサネット（登録商標）フレームの最大サイズは１５００バイトである。標準のデファクトのセットに従って、イーサネット（登録商標）フレームの最大サイズは９０００バイトである。例としてそして限定しないとして、入力パケットの一部のみを受信したポートモジュール２８を考える。ポートモジュール２８は、ストリームメモリ４８へ全体のパケットを書き込むために十分なクレジットがポートモジュール２８に有効かどうかを決定するのに、（標準の適用可能なセットに従った）最大パケットサイズを使用する。ポートモジュール２８は、最大パケットサイズとポートモジュール２８に有効なクレジットの数を比較することにより、この決定を行うことが可能である。ストリームメモリ４８へ全体のパケットを書き込むために十分なクレジットがポートモジュール２８に有効な場合には、ポートモジュール２８は、１つ又はそれ以上のクレジットを使用してストリームメモリ４８へパケットの受信された部分を書き込むことができそして、ポートモジュール２８がパケットの１つ又はそれ以上の他の部分を受信したときに、１つ又はそれ以上のクレジットを使用してストリームメモリ４８へパケットの１つ又はそれ以上の他の部分を書き込むことができる。
【００３５】
ポートモジュール２８は、カウンタを使用してポートモジュール２８に有効なクレジットの数を監視できる。中央エージェント５２が、クレジットをポートモジュール２８に割当てるときに、ポートモジュール２８はある量だけカウンタを増加しそして、ポートモジュール２８がクレジットを使用するときに、ポートモジュール２８はある量だけカウンタを減じる。カウンタの現在の値は、ポートモジュール２８に有効なクレジットの現在の数を示し、そして、ポートモジュール２８は、ポートモジュール２８からストリームメモリ４８へパケットを書き込むために十分なクレジットがポートモジュール２８に有効かどうかを決定するために、カウンタを使用できる。中央エージェント５２も、カウンタを使用してポートモジュール２８に有効なクレジットの数を監視できる。中央エージェント５２が、クレジットをポートモジュール２８に割当てるときに、中央エージェント５２はある量だけカウンタを増加しそして、ポートモジュール２８がクレジットを使用したことを、ポートモジュール２８が中央エージェント５２に通知するときに、中央エージェント５２は、ある量だけカウンタを減じる。カウンタの現在の値は、ポートモジュール２８に有効なクレジットの現在の数を示し、そして、中央エージェント５２は、ポートモジュール２８へ１つ又はそれ以上のクレジットを割当てるかどうかを決定するために、カウンタを使用できる。中央エージェント５２は、カウンタを使用しているポートモジュール２８により使用されているブロック５６の数も監視できる。ポートモジュール２８が中央エージェント５２へ、ポートモジュール２８がブロック５６へ書き込んだことを通知するときには、中央エージェントは、ある量だけカウンタを増加しそして、ポートモジュール２８が書き込んだブロック５６が解放されそしてブロック５６に対応するクレジットがクレジットのプールに戻されたときに、中央エージェントはある量だけカウンタを減じる。
【００３６】
ポートモジュール２８へ有効なクレジットの数は一定に保たれ、そして、ポートモジュール２８により使用されているブロック５６の数は制限される。制限は、ポートモジュール２８、１つ又はそれ以上の他のポートモジュール２８又は、両方での負荷状態の変化に応じて変化される。特定の実施例では、ポートモジュール２８により使用されているブロック５６の数は、クレジットのプール内のクレジットの数の関数である動的なしきい値に従って、制限される。アクティブなポートモジュール２８は、特定の実施例では、１つ又はそれ以上のブロック５６を使用しているポートモジュール２８を含む。ブロック５６を使用しているポートモジュール２８への参照は、ストリームメモリ４８からパケットの全ての指定されたポートモジュール２８へ読み出しされてないストリームメモリ４８へ少なくとも１つのパケットを書き込んだポートモジュール２８を含む。動的なしきい値は、以下の式を使用して計算されたクレジットのプール内のクレジットの数の一部分を含むことが出き、αはアクティブなポートモジュール２８の数に等しくそしてρはパラメータであり：
【００３７】
【数１】
2004242332.tif 000003
クレジットのプール内のクレジットの数は、各々がポートモジュール２８により使用されているブロック５６の数が、上述の動的なしきい値を含みうる、適用可能な限度を超える場合には、中央エージェント５２がポートモジュール２８へクレジットを割当てることを避けるために確保されうる。クレジットのプール内の１つ又はそれ以上のクレジットを確保することは、アクティブであるポートモジュール２８の数の変化に関連する変化期間中のクッションを提供できる。確保されたクレジットの一部分は、以下の式を使用して計算され、αはアクティブなポートモジュール２８の数に等しくそしてρはパラメータであり：
【００３８】
【数２】
2004242332.tif 000004
上述の式に従って、１つのポートモジュール２８がアクティブで、ρが２の場合には、中央エージェント５２はクレジットの３分の１を確保し、そして、ポートモジュール２８へクレジットの３分の２を割当て；２つのポートモジュール２８がアクティブで、ρが１の場合には、中央エージェント５２はクレジットの３分の１を確保し、そして、アクティブである各ポートモジュール２８へクレジットの３分の１を割当て；１２つのポートモジュール２８がアクティブで、ρが０．５の場合には、中央エージェント５２はクレジットの１４分の２を確保し、そして、アクティブである各ポートモジュール２８へクレジットの１４分の１を割当てる。特定の限度が、ポートモジュール２８により使用されているブロック５６の数に適用されているように記載されているが、本発明は、ポートモジュール２８により使用されているブロック５６の数に適用される任意の適する限度を考慮する。
【００３９】
第１ポートモジュール２８がストリームメモリ４８にパケットを書き込むときには、第１ポートモジュール２８は、パケットの指定されたポートモジュール２８である１つ又はそれ以上の第２ポートモジュール２８を識別するためにルーティングモジュール５４が使用できるパケットのヘッダからの情報（１つ又はそれ以上の宛先アドレスなど）をルーティングモジュール５４へ通信できる。第１ポートモジュール２８は、ストリームメモリ４８からパケットを読むために第２ポートモジュール２８により共に使用されるパケットが書き込まれた第１ブロック５６のアドレスとオフセットをも、ルーティングモジュール５４へ通信できる。ルーティングモジュール５４は、１つ又はそれ以上のルーティングテーブルとパケットのヘッダからの情報を使用して第２ポートモジュール２８を識別できそして、第２ポートモジュール２８の識別後に、第１ブロック５６のアドレスとオフセットを各第２ポートモジュール２８へ通信し、これは、以下に更に完全に記載するように、第２ポートモジュール２８が、出力キューへ追加されることが可能である。
【００４０】
中央エージェント５２は、クレジットに対応するブロック５６に書き込まれたパケットの全ての指定されたポートモジュール２８がブロック５６から読み出した場合にのみ、クレジットをクレジットのプールへ戻す。例として、ブロック５６へ書き込まれそして２つの指定されたポートモジュール２８を有するパケットを考える。第１の指定されたポートモジュール２８は、ブロック５６から読み出しそして、中央エージェント５２へ、第１の指定されたポートモジュール２８がブロック５６から読み出したことを通知する。第２ポートモジュール２８がブロック５６からまだ読み出しておらず、そして、第２の指定されたポートモジュール２８がブロック５６から読み出したことを中央エージェント５２へ通知していない場合には、中央エージェント５２は、第１ポートモジュール２８からの通知に応じてクレジットのプールへブロック５６に対応するクレジットを戻さない。後に、第２の指定されたポートモジュール２８がブロック５６から読み出しそして、第２の指定されたポートモジュール２８がブロック５６から読み出したことを中央エージェント５２へ通知する。第１ポートモジュール２８は、すでにブロック５６から読み出しそして、中央エージェント５２へ、第１の指定されたポートモジュール２８がブロック５６から読み出したことを通知しているので、中央エージェント５２は、第２ポートモジュール２８からの通知に応じてクレジットのプールへブロック５６に対応するクレジットを戻す。
【００４１】
パケットの全ての指定されたポートモジュール２８が、パケットが書き込まれたブロック５６から読み出されたかどうかを決定するために、中央エージェント５２はビットベクトルを使用する。ビットベクトルは、各々がポートモジュール２８に対応しそして、ポートモジュール２８がブロック５６から読み出したかを示す、２つ又はそれ以上の要素を含む。ストリームメモリ４８へパケットが書き込まれるときには、中央エージェント５２は、ビットベクトルの要素を、スイッチコア２６のどのポートモジュール２８がそのパケットのポートモジュール２８に指定されているかを示すために設定し、そして、指定されたポートモジュール２８がストリームメモリ４８からパケットを読むにつれて、中央エージェント５２はビットベクトルの要素をクリアする。
【００４２】
例として、６要素を含むビットベクトルを考える。第１要素は第１ポートモジュール２８に対応し、第２要素は第２ポートモジュール２８に対応し、第３要素は第３ポートモジュール２８に対応し、第４要素は第４ポートモジュール２８に対応し、第５要素は第５ポートモジュール２８に対応し、そして、第６要素は第６ポートモジュール２８に対応する。パケットは、ストリームメモリ４８のブロック５６に書き込まれ、第３ポートモジュール２８、第４ポートモジュール２８、及び第６ポートモジュール２８は全てパケットの指定されたポートモジュール２８である。第３ポートモジュール２８に対応するビットベクトルの第３要素は、第３ポートモジュール２８がパケットの指定されたポートモジュール２８であることを示すために設定され、第４ポートモジュール２８に対応するビットベクトルの第４要素は、第４ポートモジュール２８がパケットの指定されたポートモジュール２８であることを示すために設定され、そして、第６ポートモジュール２８に対応するビットベクトルの第６要素は、第６ポートモジュール２８がパケットの指定されたポートモジュール２８であることを示すために設定される。ビットベクトルの第１要素、ビットベクトルの第２要素、及びビットベクトルの第５要素は、全てクリアされ、第１ポートモジュール、第２ポートモジュール２８及び第５ポートモジュール２８はそれぞれ指定されたポートモジュール２８ではないことを示す。
【００４３】
第３ポートモジュール２８はブロック５６から最初に読み出しそして、第３ポートモジュール２８がブロック５６から読み出すときに、ビットベクトルの第３要素がクリアされる。ビットベクトルは、第４ポートモジュール２８と第６ポートモジュール２８がまだブロック５６からパケットを読み出していないことを示す。第６ポートモジュール２８はブロック５６から次に読み出しそして、第６ポートモジュール２８がブロック５６から読み出すときに、ビットベクトルの第６要素がクリアされる。ビットベクトルは、第４ポートモジュール２８がまだブロック５６からパケットを読み出していないことを示す。第４ポートモジュール２８はブロック５６から最後に読み出しそして、第４ポートモジュール２８がブロック５６から読み出すときに、第４ポートモジュール２８はブロック５６から読み出す最後に指定されたポートモジュール２８であるので、ブロック５６に対応するクレジットがクレジットのプールに戻される。
【００４４】
ビットベクトルはマルチキャスト状態テーブルのエントリに記憶される。マルチキャスト状態テーブルは、複数のエントリを有すことができ、その少なくとも幾つかは各々が、ストリームメモリ４８のブロック５６に対応する。ストリームメモリ４８の各ブロック５６は、タグメモリ５０内に対応するエントリを有する。単一の及び複数のビット誤りを検出するための誤り検出符号（ＥＤＣ）もマルチキャスト状態テーブルのエントリにビットベクトルと共に記憶されうる。パケットがストリームメモリ４８に書き込まれるときには、パケットが書き込まれた第１ブロック５６に対応するマルチキャスト状態テーブル内のエントリ内のビットベクトルの要素は、上述のように、ポートモジュール２８はそのパケットの指定されたポートモジュール２８であることを示すように設定される。パケットが書き込まれた第１ブロック５６に対応するマルチキャスト状態テーブル内のエントリ内のビットベクトルの要素のみが、設定される。指定されたポートモジュール２８が第１ブロック５６から読み出すときには、指定されたポートモジュール２８に対応する要素は、指定されたポートモジュール２８がストリームメモリ４８からパケットの読み出しを開始したことを示すためにクリアされる。最後に指定されたポートモジュール２８が第１ブロック５６から読み出すときには、中央エージェント５２は第１ブロック５６に対応するクレジットをクレジットのプールへ戻す。中央エージェント５２は、最後に指定されたポートモジュール２８が後続のブロック５６から読み出すので、パケットが書き込まれた後続のブロック５６に対応するクレジットをクレジットのプールへ戻す。
【００４５】
例として、ストリームメモリ４８に書き込まれたパケットを考える。パケットの第１部分が第１ブロック５６に書き込まれ、そして、パケットの第２と最終部分が第２ブロック５６に書き込まれる。第１クレジットは、第１ブロック５６に対応し、第２クレジットは、第２ブロック５６に対応する。スイッチコア２６の第５ポートモジュール２８と第７ポートモジュール２８は、パケットの指定されたポートモジュール２８である。マルチキャスト状態テーブルの第１エントリは、第１ブロック５６に対応し、そして、マルチキャスト状態テーブルの第２エントリは、第２ブロック５６に対応する。中央エージェント５２は、それぞれ第５ポートモジュール２８と第７ポートモジュール２８はそのパケットの指定されたポートモジュール２８であることを示すために、第１エントリのビットベクトルの第５要素と第７要素を設定する。中央エージェント５２は、第２エントリ内のビットベクトルのどの要素も設定する必要はない。第７ポートモジュール２８は、第１ブロック５６から読み出しそして、中央エージェント５２に第７ポートモジュール２８が第１ブロック５６から読み出したことを通知する。中央エージェント５２は、第１エントリのビットベクトルから、第７ポートモジュール２８はストリームメモリ４８からパケットの読み出しを開始する最後に指定されたポートモジュール２８ではないことを決定しそして、第１エントリ内のビットベクトルの第７要素をクリアし、第７ポートモジュール２８はストリームメモリ４８からパケットの読み出しを開始されることを示す。第７ポートモジュール２８は、ストリームメモリ４８からパケットの読み出しを開始する最後に指定されたポートモジュール２８ではないので、中央エージェントは第１クレジットをクレジットのプールに戻さない。
【００４６】
第５ポートモジュール２８は、第１ポートモジュール２８から次に読み出しそして、中央エージェント５２に第５ポートモジュール２８が第１ブロック５６から読み出したことを通知する。中央エージェント５２は、第１エントリのビットベクトルから、第５ポートモジュール２８はストリームメモリ４８からパケットの読み出しを開始する最後に指定されたポートモジュール２８ではあることを決定し、そして、第５ポートモジュール２８はストリームメモリ４８からパケットの読み出しを開始する最後に指定されたポートモジュール２８ではあるので、第１クレジットをクレジットのプールに戻す。第７ポートモジュール２８は、そして、第２ポートモジュール２８から読み出しそして、中央エージェント５２に第７ポートモジュール２８が第２ポートモジュール２８から読み出したことを通知する。中央エージェントは、第１エントリのビットベクトルから、第７ポートモジュール２８はストリームメモリ４８からパケットの読み出しを開始する最後に指定されたポートモジュール２８ではないことを決定しそして、第７ポートモジュール２８は、ストリームメモリ４８からパケットの読み出しを開始する最後に指定されたポートモジュール２８ではないので、第２クレジットをクレジットのプールに戻さない。第５ポートモジュール２８は、第２ポートモジュール２８から次に読み出しそして、中央エージェント５２に第５ポートモジュール２８が第２ブロック５６から読み出したことを通知する。中央エージェント５２は、第１エントリのビットベクトルから、第５ポートモジュール２８はストリームメモリ４８からパケットの読み出しを開始する最後に指定されたポートモジュール２８ではあることを決定し、そして、第５ポートモジュール２８はストリームメモリ４８からパケットの読み出しを開始する最後に指定されたポートモジュール２８であるので、第２クレジットをクレジットのプールに戻す。
【００４７】
上述の例では、第５ポートモジュール２８が第７ポートモジュール２８に追いつきそして、第７ポートモジュール２８が第２ブロック５６から読み出す前に第２ブロック５６から読み出した場合には、第２クレジットは、第７ポートモジュール２８が第２ブロック５６から読み出す前にクレジットのプールへ戻されるであろう。第５ポートモジュール２８が第７ポートモジュール２８に追いつ可能性を減少させるために、第５ポートモジュール２８と第７ポートモジュール２８は、両方が、ほぼ同じ速度で、第１ブロック５６と第２ブロック５６から読み出すことができる。
【００４８】
また、上述の例では、第１クレジットが、クレジットのプールに戻された後に、ポートモジュール２８に割当てられそして、第２ポートモジュール２８が第２ブロック５６から読み出す前に第１ブロック５６を書き込むのに使用される場合には、第１エントリ内のビットベクトルは、中央エージェント５２が、第５ポートモジュール２８又は第７ポートモジュール２８が、ストリームメモリ４８からパケットの読み出しを開始する最後のポートモジュール２８であるかどうかを決定できないように、上書きされる。第１エントリ内のビットベクトルが上書きされる可能性を減少させるために、上述のように、動的なしきい値が、ポートモジュール２８に有効であるクレジットの数に適用される。動的なしきい値は、クレジットのプール内のクレジットの数が少なくなることを避けることができるので、パケットの全ての指定されたポートモジュール２８は、ビットベクトルがパケットが書き込まれた第１ブロック５６に対応するマルチキャスト状態テーブル内のエントリに上書きされる前に、ストリームメモリ４８からパケットを読み出す十分な時間を有しない。
【００４９】
ポートモジュール２８は、ポートモジュール２８を通してスイッチコア２６から通信するために、ストリームメモリ４８へ書き込まれたパケットを待たせるのに使用される１つ又はそれ以上の出力キューを有することが可能である。パケットがストリームメモリ４８へ書き込まれるときには、パケットはそのパケットの各指定されたポートモジュール２８の出力キューに追加される。指定されたポートモジュール２８の出力キューは、サービスの品質（ＱｏＳ）のレベルとソースポートモジュール２８の組合せに対応する。例として、３レベルのＱｏＳを提供しそして入力論理と出力論理の両方を含む４つのポートモジュール２８を有するスイッチコア２６を考える。第１ポートモジュール２８は９の出力キュー：第１レベルのＱｏＳと第２ポートモジュール２８に対応する第１出力キュー；第１レベルのＱｏＳと第３ポートモジュール２８に対応する第２出力キュー；第１レベルのＱｏＳと第４ポートモジュール２８に対応する第３出力キュー；第２レベルのＱｏＳと第２ポートモジュール２８に対応する第４出力キュー；第２レベルのＱｏＳと第３ポートモジュール２８に対応する第５出力キュー；第２レベルのＱｏＳと第４ポートモジュール２８に対応する第６出力キュー；第３レベルのＱｏＳと第２ポートモジュール２８に対応する第７出力キュー；第３レベルのＱｏＳと第３ポートモジュール２８に対応する第８出力キュー；第３レベルのＱｏＳと第４ポートモジュール２８に対応する第９出力キューを有する。（１）パケットが第２ポートモジュール２８からストリームメモリ４８に書き込まれ、（２）第１ポートモジュール２８はそのパケットの指定されたポートモジュール２８であり、そして（３）そのパケットのＱｏＳのレベルは第１レベルのＱｏＳである場合には、ストリームメモリ４８に書き込まれたパケットは、第１ポートモジュール２８の第１出力キューに追加される。（１）パケットが第３ポートモジュール２８からストリームメモリ４８に書き込まれ、（２）第１ポートモジュール２８はそのパケットの指定されたポートモジュール２８であり、そして（３）そのパケットのＱｏＳのレベルは第２レベルのＱｏＳである場合には、ストリームメモリ４８に書き込まれたパケットは、第１ポートモジュール２８の第５出力キューに追加される。（１）パケットが第４ポートモジュール２８からストリームメモリ４８に書き込まれ、（２）第１ポートモジュール２８はそのパケットの指定されたポートモジュール２８であり、そして（３）そのパケットのＱｏＳのレベルは第３レベルのＱｏＳである場合には、ストリームメモリ４８に書き込まれたパケットは、第１ポートモジュール２８の第９出力キューに追加される。
【００５０】
第２ポートモジュール２８は９の出力キュー：第１レベルのＱｏＳと第１ポートモジュール２８に対応する第１出力キュー；第１レベルのＱｏＳと第３ポートモジュール２８に対応する第２出力キュー；第１レベルのＱｏＳと第４ポートモジュール２８に対応する第３出力キュー；第２レベルのＱｏＳと第１ポートモジュール２８に対応する第４出力キュー；第２レベルのＱｏＳと第３ポートモジュール２８に対応する第５出力キュー；第２レベルのＱｏＳと第４ポートモジュール２８に対応する第６出力キュー；第３レベルのＱｏＳと第１ポートモジュール２８に対応する第７出力キュー；第３レベルのＱｏＳと第３ポートモジュール２８に対応する第８出力キュー；第３レベルのＱｏＳと第４ポートモジュール２８に対応する第９出力キューを有する。（１）パケットが第１ポートモジュール２８からストリームメモリ４８に書き込まれ、（２）第２ポートモジュール２８はそのパケットの指定されたポートモジュール２８であり、そして（３）そのパケットのＱｏＳのレベルは第１レベルのＱｏＳである場合には、ストリームメモリ４８に書き込まれたパケットは、第２ポートモジュール２８の第１出力キューに追加される。（１）パケットが第３ポートモジュール２８からストリームメモリ４８に書き込まれ、（２）第２ポートモジュール２８はそのパケットの指定されたポートモジュール２８であり、そして（３）そのパケットのＱｏＳのレベルは第２レベルのＱｏＳである場合には、ストリームメモリ４８に書き込まれたパケットは、第２ポートモジュール２８の第５出力キューに追加される。（１）パケットが第４ポートモジュール２８からストリームメモリ４８に書き込まれ、（２）第２ポートモジュール２８はそのパケットの指定されたポートモジュール２８であり、そして（３）そのパケットのＱｏＳのレベルは第３レベルのＱｏＳである場合には、ストリームメモリ４８に書き込まれたパケットは、第２ポートモジュール２８の第９出力キューに追加される。
【００５１】
第３ポートモジュール２８と第４ポートモジュール２８は各々が、上述の第１ポートモジュール２８の出力キューと第２ポートモジュール２８の出力キューと同様な出力キューを有する。ＱｏＳは、伝送のレート、誤りのレート、又は、スイッチコア２６を通るパケットの通信の他の面を含み、ＱｏＳへの参照は、適切なら、サービスのクラス（ＣｏＳ）を含むことが可能である。第１ポートモジュール２８の出力キューは、第２ポートモジュール２８とＱｏＳのレベルに対応するとして記載されているが、第１ポートモジュール２８の出力キューは第２ポートモジュール２８とＱｏＳのレベルに必ずしも対応する必要はない。例として、特定の実施例では、第1ポートモジュール２８の出力キューは、第２ポートモジュール２８に対応しＱｏＳのレベルに対応しない。
【００５２】
ポートモジュール２８の出力キューは、ポートモジュール２８のレジスタと、出力キューに１より多くのパケットがある場合には、以下に記載するように、ポートモジュール２８のメモリ構造内の１つ又はそれ以上のエントリを含む。ポートモジュール２８は、ストリームメモリ４８から読み出されるべき次のパケットを決定するために、１つ又はそれ以上のレジスタと共に、ポートモジュール２８が使用できる１つ又はそれ以上のリンクされたリストを有することが可能である。メモリ構造は、複数のエントリを有し、その少なくとも幾つかは各々が、ストリームメモリ４８のブロック５６に対応する。ストリームメモリ４８の各ブロック５６は、メモリ構造内に対応するエントリを有する。メモリ構造内のエントリは、メモリ構造内の他のエントリへのポインタを含み、リンクされたリストとなる。ポートモジュール２８は、ポートモジュール２８もストリームメモリ４８から読み出されるべき次のパケットを決定するために使用できる、１つ又はそれ以上のレジスタを有することも可能である。レジスタは、書き込みポインタ、オフセット及びリードポインタを有する。書き込みポインタは、第１パケットが書き込まれた第１ブロック５６を示し、オフセットは第１パケットが書き込まれた第１ワード５８を示し、そして、読み出しポインタは、第２パケット（第１パケットと同じ又は第１パケットと異なるパケット）が書き込まれた、第１ブロック５６を示す。メモリ構造内のエントリの各々がストリームメモリ４８のブロック５６に対応するので、ブロック５６を示すポインタもメモリ構造内のエントリを示す。
【００５３】
ポートモジュール２８は、オフセットを書き込むメモリ構造内の次のエントリを決定するために書き込みポインタを使用できる。ポートモジュール２８は、ブロック５６から読み出しを開始するブロック５６のワード５８を決定するためにオフセットを使用できる。ポートモジュール２８は、ストリームメモリ４８から読み出すべき次のパケットを決定するために読み出しポインタを使用できる。ポートモジュール２８は、１より多くのパケットが出力キューにあるかどうかを決定するために、書き込みポインタと読み出しポインタを使用できる。出力キューからでなくそして書き込みポインタと読み出しポインタが両方ともに同じブロック５６を示す場合には、出力キューに１つのパケットのみが存在する。出力キューに１つのパケットのみが存在する場合には、ポートモジュール２８はメモリ構造にアクセスすることなしに、ストリームメモリ４８から読み出すべき次のパケットを決定しそして、ストリームメモリ４８から次のパケットを読み出すことが可能である。
【００５４】
出力キューにパケットがないときに、第１パケットが出力キューに追加される場合には、（１）レジスタ内の書き込みポインタは第１パケットが書き込まれた第１ブロック５６を示すように修正され、（２）オフセットは第１パケットが書き込まれた第１ワード５８を示すように修正され、そして（３）読み出しポインタも第１パケットが書き込まれた第１ブロック５６を示すように修正される。ポートモジュール２８がストリームメモリ４８から第１パケットを読み出す前に、第２パケットが出力キューに追加される場合には、（１）書き込みポインタは第２パケットが書き込まれた第１ブロック５６を示すように修正され、（２）オフセットは第１パケットが書き込まれた第１ブロック５６に対応するメモリ構造内の第１エントリに書き込まれそして、第２パケットが書き込まれた第１ワード５８を示すように修正され、そして（３）第１エントリ内のポインタは第２パケットが書き込まれた第１ブロック５６を示すように修正される。読み出しポインタは、第２パケットが出力キューに追加された後に、読み出しポインタはまだ第１パケットが書き込まれた第１ブロック５６を示すように、変更されずに残る。以下に更に完全に説明するように、読み出しポインタは、ポートモジュール２８がストリームメモリ４８から出力キューのパケットを読むときに変更される。ポートモジュール２８がストリームメモリ４８から第１パケットと第２パケットを読む前に、第３パケットが、出力キューに追加される場合には、（１）書き込みポインタは第３パケットが書き込まれた第１ブロック５６を示すように修正され、（２）オフセットは第２パケットが書き込まれた第１ブロック５６に対応するメモリ構造内の第２エントリに書き込まれそして、第３パケットが書き込まれた第１ワード５８を示すように修正され、そして（３）第２エントリ内のポインタは第３パケットが書き込まれた第１ブロック５６を示すように修正される。読み出しポインタは、第３パケットが出力キューに追加された後に、読み出しポインタはまだ第１パケットが書き込まれた第１ブロック５６を示すように、再び変更されずに残る。
【００５５】
ポートモジュール２８は、ストリームメモリ４８から読むべき次のパケットを決定するために、出力キューを使用する。例として、３パケットがある上述の出力キューを考える。レジスタでは、（１）書き込みポインタは第３パケットが書き込まれた第１ブロック５６を示し、（２）オフセットは第３パケットが書き込まれた第１ワード５８を示しそして、そして（３）読み出しポインタは第１パケットが書き込まれた第１ブロック５６を示す。メモリ構造の第１エントリは、（１）第１パケットが書き込まれた第１ワード５８を示すオフセットと、（２）第２パケットが書き込まれた第１ブロック５６を示すポインタを有する。メモリ構造の第２エントリは、（１）第２パケットが書き込まれた第１ワード５８を示すオフセットと、（２）第３パケットが書き込まれた第１ブロック５６を示すポインタを有する。
【００５６】
ポートモジュール２８は、読み出しポインタと書き込みポインタを比較しそして、比較から、出力キューに１より多くのパケットが存在することを決定する。ポートモジュール２８はそして、ストリームメモリ４８から読み出すべき次のパケットを決定するのに読み出しポインタを使用する。読み出しポインタは、ポートモジュール２８へ第１パケットの第１ブロック５６を示し、そして、出力キューに１より多くのパケットがあるので、ポートモジュール２８は第１パケットが書き込まれた第１ワード５８を示す第１エントリのオフセットにアクセスする。ポートモジュール２８は、そして、第１パケットが書き込まれた第１ブロック５６で開始する、第１エントリのオフセットを使用して、ストリームメモリ４８から第１パケットを読み出す。第１パケットが１より多くのブロック５６へ書き込まれた場合には、ポートモジュール２８は、上述のように、メモリから第１パケットを読み出すためにタグメモリ５０内のリンクされたリストを使用できる。
【００５７】
ポートモジュール２８はストリームメモリ４８から第１パケットを読み出しながら、ポートモジュール２８は、第１エントリのポインタを読み出しポインタへコピーし、そして、読み出しポインタを書き込みポインタを比較し、そして、比較から、出力キューに１つより多くのパケットが存在することを決定する。ポートモジュール２８は、そして、ストリームメモリ４８から読み出す次のパケットを決定するために読み出しポインタを使用する。読み出しポインタは、ポートモジュール２８に第２パケットの第１ブロック５６を示し、そして、出力キューに１つより多くのパケットが存在するので、ポートモジュール２８は、第２パケットが書き込まれた第１ワード５８を示す第２エントリ内のオフセットにアクセスする。ポートモジュール２８がストリームメモリ４８からの第１パケットの読み出しを終了したときに、ポートモジュール２８は、第２パケットが書き込まれた第１ブロック５６から開始する、第２エントリのオフセットを使用して、ストリームメモリ４８から第２パケットを読み出す。第２パケットが１より多くのブロック５６に書き込まれた場合には、ポートモジュール２８は、上述のように、メモリから第２パケットを読み出すために、タグメモリ５０のリンクされたリストを使用できる。
【００５８】
ポートモジュール２８がストリームメモリ４８から第２パケットを読み出している間に、ポートモジュール２８は、第２エントリ内のポインタを読み出しポインタへコピーし、読み出しポインタを書き込みポインタと比較し、そして、比較から、１つのパケットのみが出力キューにあることを決定する。ポートモジュール２８は、ストリームメモリ４８から読み出す次のパケットを決定するために読み出しポインタを使用する。読み出しポインタは、ポートモジュール２８に第２パケットの第３ブロック５６を示し、そして、１つのパケットのみが出力キューにあるので、ポートモジュール２８は、第３パケットが書き込まれた第１ワード５８を示すレジスタのオフセットにアクセスする。ポートモジュール２８が、ストリームメモリ４８からの第２パケットの読み出しを終了したときに、ポートモジュール２８は、第３パケットが書き込まれた第１ブロック５６で開始する、レジスタ内のオフセットを使用して、ストリームメモリ４８から第３パケットを読み出す。第３パケットが１つより多くのブロック５６に書き込まれた場合には、ポートモジュール２８は、上述のように、メモリから、第３パケットを読み出すためにタグメモリ５０のリンクされたリストを使用できる。
【００５９】
ポートモジュール２８が、１つより多くの出力キューを有する場合には、出力キューの間の仲裁（アービトレーション）のためにアルゴリズムが使用される。複数の出力キューの間の仲裁は、ストリームメモリ４８から読み出す次のパケットを決定するのに使用する次の出力キューを決定することを含むことが可能である。複数の出力キューの間の仲裁は、ストリームメモリ４８から読み出す次のパケットを決定するために第２出力キューを使用する前に、ストリームメモリ４８から読み出す第１出力キュー内に幾つのパケットがあるかを決定することも含むことが可能である。本発明は、複数の出力キュー間の仲裁のために適するアルゴリズムを考慮する。例であり及び限定するのではなく、ポートモジュール２８の複数の出力キューの間の仲裁のためのアルゴリズムに従って、ポートモジュール２８は、一連のラウンドで空ではない出力キューにアクセスする。１ラウンド内では、ポートモジュール２８は、連続して予め定められた順序で出力キューをアクセスし、そして、ポートモジュール２８が出力キューをアクセスするときに、ストリームメモリ４８からの出力キュー内の１つ又はそれ以上のパケットを読む。ポートモジュール２８が１ラウンドで出力キューから読み出すパケットの数は、ポートモジュール２８が、同じラウンドで、ポートモジュール２８の１つ又はそれ以上の他の出力キューの各々から読み出すパケットの数の同じであるか又は異なることが可能である。特定の実施例では、１ラウンドで出力キューから読み出され得るパケットの数は、データの量を定義する量値に基づいており、それに従って、より小さなパケットが出力キュー内にある場合には出力キューからより多くのパケットが読み出せ、そして、より大きなパケットが出力キュー内にある場合には出力キューからより少ないパケットが読み出せ、これは、ポートモジュール２８の出力リンクの公平な共有を容易にする。
【００６０】
特定の実施例では、ポートモジュール３８は、ストリームメモリ４８への接続を使用する。これらの実施例では、ポートモジュール３８は、ストリームメモリ４８への接続を確立し、接続を使用してストリームメモリ４８をアクセスし、そして、必要な場合には、接続を解放する。接続を使用してストリームメモリ４８をアクセスするときには、ポートモジュール３８は、他のポートモジュール３８によるブロッキングを経験しない。特定の実施例では、書き込み動作のために、ポートモジュール３８とストリームメモリ４８の間に（且つ仲裁遅延なしで）、常に接続がある。書き込み動作は、一連のサイクルをわたる幾つかのステップを含む（その各々はスイッチコア２６の１つ又はそれ以上のサイクルを有する）。例としてそして限定するのではなく、ストリームメモリ４８は、１つ又はそれ以上の（書き込み動作のワードオフセットを示す）同期ビットをポートモジュール３８へ通信し、そして、ポートモジュール３８はストリームメモリ４８に書き込みそして、ストリームメモリ４８へ、書き込み動作のために、ストリームメモリ４８の１つ又はそれ以上のブロック５６の１つ又はそれ以上のアドレスを通信する。
【００６１】
（仲裁とアクセスがパイプラインにされている）読み出し動作も、一連のサイクルをわたる幾つかのステップを含む。例としてそして限定するのではなく、ポートモジュール３８は、ストリームメモリ４８からの読み出し動作のために接続を要求しそして、ワードオフセットをストリームメモリ４８へ通信する。スイッチコア２６の１つ又はそれ以上のクロックサイクルをわたる仲裁サイクルの後に、ストリームメモリ４８は、要求に応じてポートモジュール３８へ受取通知を通信し、その点で要求された接続が確立される。特定の実施例では、（要求されている接続と通信されている受取通知の間の遅延を含む）ゼロクロックサイクルの推定された最小仲裁遅延と、１４クロックサイクルの推定された最大仲裁遅延がある。仲裁遅延は、スイッチコア２６を通るデータのストリーム内にギャップを発生しそして、ポートモジュール３８が経験する平均仲裁遅延は、スイッチコア２６により経験される負荷が増加するにつれて増加しがちである。ポートモジュール３８は、受取通知を受信した後に、ポートモジュール３８は、ストリームメモリ４８へ読み出し動作のためにストリームメモリ４８のブロック５６の１つ又はそれ以上のアドレスを通信し、そして、１つ又はそれ以上のサイクルの後に、ストリームメモリ４８はそのアドレスのデータをポートモジュール３８へ通信する。ストリームメモリ４８は、ポートモジュール３８がストリームメモリ４８へ読み出し動作の全てのアドレスを通信する前に、データの通信を開始できる。ポートモジュール３８がストリームメモリ４８へ読み出し動作の全てのアドレスを通信したときには、ポートモジュール３８は接続を解放し、そして、特定の実施例では、おそらく同じサイクル内で、他の接続を要求する。ストリームメモリ３０への書き込み動作よりもストリームメモリ３０からの多くの読み出し動作は、時間の期間中にスケジュールされる。例でありそして限定するのではなく、同じ時間の期間をわたる書き込み動作よりも、２倍の多くの読み出し動作が、時間の期間をわたりスケジュールされる。他の例では、同じ時間の期間をわたる書き込み動作よりも、３倍の多くの読み出し動作が、時間の期間を渡りスケジュールされる。
【００６２】
特定の実施例では、ストリームメモリ４８は、互いに並列に使用される幾つかのスタティックランダムアクセスメモリ（ＳＲＡＭ）を含み、ストリームメモリ４８のＳＲＡＭ装置へのアクセスは、適切なインターリービング技術を使用してスケジュールされる。本発明は、１ＲＷ（または単一ポート）ＳＲＡＭ装置、マルチポート及びマルチビットＳＲＡＭ装置又は、他のＳＲＡＭ装置を考慮するが、１ＲＷ  ＳＲＡＭ装置は、より大きな密度、柔軟性、及びデータのストリームへのアクセスのための少ない配線を提供する。スイッチコア２６が、Ｎのポートモジュール３８と、各々がＭビットを有するストリームメモリ４８とポートモジュール３８の間のリンクを有する場合には、ストリームメモリ４８は、特定の実施例では２＊Ｍビット幅のデータ経路を有する１ＲＷ  ＳＲＡＭ装置の２＊Ｎのインスタンスを有する。例としてそして限定するのではなく、スイッチコア２６が、１２のポートモジュール３８とポートモジュール３８を各々が３６ビットを有するストリームメモリ４８に結合するリンクを有する場合には、ストリームメモリ４８は、７２ビット幅のデータ経路を有する１ＲＷ  ＳＲＡＭ装置の２４のインスタンスを有する。ＳＲＡＭ装置のインスタンスの数とデータ経路の幅は、以下の観測に基づいている：（１）ポートモジュール３８の合計の帯域幅は、読み出し動作については秒当りＮ＊Ｍビット及び書き込み動作については秒当りＮ＊Ｍビットであり、そして、ストリームメモリ４８の合計の帯域幅は、秒当り４＊Ｎ＊Ｍビットであり；（２）ストリームメモリ４８からの及びそこへの読み出し動作と書き込み動作は、秒当りＮ＊Ｍビットが書き込み動作について保存されそして、秒当り３＊Ｎ＊Ｍビットが読み出し動作について保存されるように、スケジュールされ；（３）書き込み動作についてよりも読み出し動作について２から３倍の帯域幅を提供することはスイッチコア２６の仲裁遅延を減少させる。ストリームメモリ４８はＳＲＡＭ装置を含むように記載されているが、本発明は、任意の適するメモリ装置を含むストリームメモリ４８を考慮する。
【００６３】
特定の実施例では、交換構造３４ａと交換構造３４ｂを有する多段相互接続ネットワーク（ＭＩＮ）が、ストリームメモリ４８の全ＳＲＡＭ装置とスイッチコアの全ポートモジュール３８の間の接続を提供するために使用される。ＭＩＮは、幾つかの交換ユニット４０と以下に完全に記載するように、バンク交換ユニット４２を含む、（ストリームメモリ４８のＳＲＡＭ装置が組織化される）幾つかのメモリバンク４４を有する階層構造を有する。図４に示されているストリームメモリ４８のＭＩＮは、４つの交換ユニット４０と３つのメモリバンク４４を有する。ストリームメモリ４８は、特定の数の交換ユニット４０と特定の数のメモリバンク４４を有するように記載され且つ示されているが、特定の構成では、本発明は、適する構成の、適する数の交換ユニット４０と適する数のメモリバンク４４を含むストリームメモリ４８を考慮する。バンク交換ユニット４２は、静的にスケジュールされた規則的な交換ユニットを含む。特定の実施例では、静的なスケジュールは、書き込み動作に使用され、そして、交換ユニット４０でのオンデマンドスケジューリングは読み出しに使用される。ストリームメモリ４８のＭＩＮは、ノンブロッキングであるが、しかし冗長性はない。
【００６４】
交換ユニット４０は、ポートモジュール３８からパケットの全部又は一部を受信しそして、受信されたデータをメモリバンク４４へ交換できる。交換ユニット４０を介しての書き込み動作は、任意の適する技術に従ってスケジュールされる。例として、交換ユニット４０での静的なスケジューリングは、書き込み動作いついて使用される。図６は、６つのポートモジュール３８により３つのメモリバンク４４への書き込み動作のための、スイッチコア２６の２つの交換ユニット４０での例示のスケジューリングを示す。特定の実施例では、例としてそして限定するのではなく、交換ユニット４０は、４８サイクル毎に、初期状態へ戻る。４８サイクルをわたり、各ポートモジュール３８は、各メモリバンク４４の（以下に更に完全に説明するように）各メモリユニット４６へ書き込む機会を与えられる。交換ユニット４０は、４８サイクル毎に、初期状態へ戻るように記載されるが、本発明は、任意の適する数のサイクル後に、交換ユニット４０が初期状態へ戻るように、考慮される。各交換ユニット４０は、３つの状態を有しそして、１６サイクル毎に状態を変更する。特定の数のサイクルをわたり特定の数の交換ユニット４０での特定のスケジューリングが、特定の数のポートモジュール３８による特定の数のメモリバンク４４への書き込み動作について、記載されそして説明されているが、本発明は、任意の適する数のポートモジュール３８による任意の適する数のメモリバンク４４への書き込み動作について、任意の適する数のサイクルをわたる任意の適する数の交換ユニット４０での任意の適するスケジュールを考慮する。
【００６５】
交換ユニット４０は、メモリバンク４４からパケットの全て又は一部を受信しそして受信されたデータをポートモジュール３８へ交換できる。交換ユニット４０を介しての読み出し動作は、適する技術に従って、スケジュールされる。例として、交換ユニット４０でのオンデマンドスケジューリングが、読み出し動作について使用される。このスケジューリングは、１より多くのポートモジュール３８が、同じサイクルで、メモリユニット４６から読み出そうとするので、接続及び解放技術を含む。静的なスケジューリングが行われる場合には、特定の実施例では、ポートモジュール３８は、特定のメモリバンク４４の特定のメモリユニット４６から読み出すために４８サイクルまで待たなければならないであろう。この遅延を減少させるために、交換ユニット４０に結合されたポートモジュール３８間の交換ユニット４０での仲裁が、読み出し動作について使用される。読み出し動作についての各メモリユニット４６の有効性が監視されそして、特定のポートモジュール３８は、他のポートモジュール３８がメモリユニット４６から読み出していない場合には、各４又は８サイクル毎に特定のメモリバンク４４の特定のメモリユニット４６から読み出すことが許される。
【００６６】
図７は、ポートモジュール３８により、（メモリバンク４４内の）２４のメモリユニット４６からの読み出し動作についてのスイッチコア２６の交換ユニット４０の例示のスケジューリングを示す。３つのポートモジュール３８が交換ユニット４０に結合され、そして各メモリユニット４６は、ゼロから２３の数によりスケジュール６０で指定されている。読み出し動作は２サイクルにわたり、そして、スケジュール６０に従って、サイクル０、２、４、６、８、１０、１２及び１４で開始する。ポートモジュール３８は、（１つの読み出し動作に２サイクルを含む）読み出しサイクルで、９つのメモリユニット４６の任意の１つから読み出すことができる。サイクルゼロと１をわたる読み出しサイクルでは、ポートモジュール３８は、交換ユニット４０に結合された他のポートモジュール３８がメモリユニット４６から読み出していない場合には、２，４，６，１０，１２，１４，１８，２０又は、２２と指定されたメモリユニット４６から読み出すことができ；サイクル２と３をわたる読み出しサイクルでは、ポートモジュール３８は、交換ユニット４０に結合された他のポートモジュール３８がメモリユニット４６から読み出していない場合には、３，５，７，１１，１３，１５，１９，２１又は、２３と指定されたメモリユニット４６から読み出すことができ；サイクル４と５をわたる読み出しサイクルでは、ポートモジュール３８は、交換ユニット４０に結合された他のポートモジュール３８がメモリユニット４６から読み出していない場合には、０，４，６，８，１２，１４，１６，２０又は、２２と指定されたメモリユニット４６から読み出すことができる；等である。交換ユニット４０で同様なスケジューリングが、メモリユニット３８から交換ユニット４０に結合された他のポートモジュール３８への又はスイッチコア２６内の他の交換ユニットへ結合された他のポートモジュール３８への読み出し動作について使用される。特定の数のサイクルをわたり交換ユニット４０での特定のスケジュールが、ポートモジュール３８による特定の数のメモリユニット４６からの読み出し動作について、記載されそして説明されているが、本発明は、ポートモジュール３８による任意の適する数のメモリユニット４６からの読み出し動作について、任意の適する数のサイクルをわたる交換ユニット４０での任意の適するスケジュールを考慮する。
【００６７】
図８は、スイッチコア２６の例示のメモリバンク４４を示す。メモリバンク４４は、１つ又はそれ以上のメモリユニット４６と（静的にスケジュールされた、規則的な交換ユニットを含む）１つ又はそれ以上のメモリバンク交換ユニット４２を有する。特定の実施例では、１つ又はそれ以上のメモリユニット４６は共に、メモリ構造３６を有する。特定の実施例では、メモリバンク４４は、組み込み自己テスト（ＢＩＳＴ）論理を有する。メモリバンク４４は、ポートモジュール３８により共有され、特定の実施例では、それは、ラインの先頭（ｈｅａｄ−ｏｆ−ｌｉｎｅ）のブロッキングを除去し（それによりスイッチコア２６のスループットを増加し）、スイッチコア２６がポートモジュール３８での負荷状態の変化を更に効率的に扱うことを可能とし、そして、スイッチコア２６に関連するメモリ要求を減少させる。特定の実施例では、例としてそして限定するのではなく、メモリバンク４４は、（図８に示されたように）１８のバンク交換ユニット４２と８のメモリユニット４６を有する。メモリバンク４４は、特定の数のバンク交換ユニット４２と特定の数のメモリユニット４６を有するように記述されそして説明されているが、本発明は、任意の適する構成で、任意の適する数のバンク交換ユニット４２と任意の適する数のメモリユニット４６を有するメモリバンク４４考慮する。メモリユニット４６は１つ又はそれ以上のＳＲＡＭ装置を有する。例としてそして限定するのではなく、ストリームメモリ４８が（上述のように）ＳＲＡＭ装置の２４のインスタンスを有する場合には、ストリームメモリ４８は３つのメモリバンク４４を有し、各メモリバンク４４は８つのメモリユニット４６を有しそして、各メモリユニット４６は１つのＳＲＡＭ装置を有する。特定の実施例では、ストリームメモリ４８が論理的に１５３６のブロック５６に分割されそして、２４のメモリユニット４６を有し、各メモリユニット４６はストリームメモリ４８の６４のブロック５６を有する。
【００６８】
メモリバンク４４を交換ユニット４０へ結合するリンクは、１つ又はそれ以上のリンクを有する。例として、特定の実施例では、メモリバンク４４を交換ユニット４０へ結合するリンクは、１つは書き込み動作のためでありそして４つは読み出し動作のために、５つのリンクを有し、これらの各リンクは３６ビットを有する。図８に示されたメモリバンク４４は、それぞれ、ｕｌ（上方左側）、ｄｌ（下方左側）、ｕｒ（上方右側）及びｄｒ（下方右側）の、４つの交換ユニット４０に結合される。例として、ｕｌは交換ユニット４０ａを示し、ｄｌは交換ユニット４０ｂを示し、ｕｒは交換ユニット４０ｃを示し、ｄｒは交換ユニット４０ｄを示す。Ｗで示されたリンクは各々、交換ユニット４０から任意のメモリユニット３６への書き込み動作のためであり、Ｒで指定されたリンクは各々特定のメモリユニット４６から交換ユニット４０への読み出し動作のためである。特に、Ｒ０１で指定されたリンクは、メモリユニット４６ａとメモリユニット４６ｂからの読み出し動作のためであり；Ｒ２３で指定されたリンクは、メモリユニット４６ｃとメモリユニット４６ｄからの読み出し動作のためであり；Ｒ４５で指定されたリンクは、メモリユニット４６ｅとメモリユニット４６ｆからの読み出し動作のためであり；Ｒ６７で指定されたリンクは、メモリユニット４６ｇとメモリユニット４６ｈからの読み出し動作のためである。−ｕｌで示されたリンクはメモリバンク４４を交換ユニット４０ａに結合し、−ｄｌで示されたリンクはメモリバンク４４を交換ユニット４０ｂに結合し、−ｕｒで示されたリンクはメモリバンク４４を交換ユニット４０ｃに結合し、−ｄｒで示されたリンクはメモリバンク４４を交換ユニット４０ｄに結合する。従って、Ｒ０１−ｕｌで指定されたリンクはメモリユニット４６ａと４６ｂから交換ユニット４０ａへの読み出し動作のためであり、そして、Ｗ−ｄｒで指定されたリンクは交換ユニット４０ｄから任意のメモリユニット４６への書き込み動作のためであり、Ｒ６７−ｕｒで指定されたリンクはメモリユニット４６ｇと４６ｈから交換ユニット４０ｃへの読み出し動作のためである、等である。交換ユニット４０が（図４に示されたように）３つのポートモジュール３８と３つのメモリバンク４４に結合されている場合には、交換ユニット４０は、書き込み動作のために３ｘ３、５４−ビットの交換ユニットと、読み出し動作のために１２ｘ３、３６−ビットの交換ユニットを有する。
【００６９】
上述のように、バンク交換ユニット４２は、静的にスケジュールされた、規則的な交換ユニットを有する。図９は、４つの交換ユニット４０を介した２つのメモリユニット４６への読み出し動作のためのメモリバンク４４の３つのバンク交換ユニット４２での例示のスケジューリングを示す。サイクルＮでは、（メモリユニット４６ａと４６ｂから交換ユニット４０ａへの読み出し動作のための）Ｒ０１−ｕｌと指定されたリンクは、メモリユニット４６ａから読み出すようにスケジュールされ、そして、（メモリユニット４６ａと４６ｂから交換ユニット４０ｃへの読み出し動作のための）Ｒ０１−ｕｒと指定されたリンクは、メモリユニット４６ｂから読み出すようにスケジュールされる。サイクルＮ＋１では、（メモリユニット４６ａと４６ｂから交換ユニット４０ｂへの読み出し動作のための）Ｒ０１−ｄｌと指定されたリンクは、メモリユニット４６ａから読み出すようにスケジュールされ、そして、（メモリユニット４６ａと４６ｂから交換ユニット４０ｄへの読み出し動作のための）Ｒ０１−ｄｒと指定されたリンクは、メモリユニット４６ｂから読み出すようにスケジュールされる。サイクルＮ＋２では、Ｒ０１−ｕｌと指定されたリンクは、メモリユニット４６ｂから読み出すようにスケジュールされ、そして、Ｒ０１−ｕｒと指定されたリンクは、メモリユニット４６ａから読み出すようにスケジュールされる。サイクルＮ＋３では、Ｒ０１−ｄｌと指定されたリンクは、メモリユニット４６ｂから読み出すようにスケジュールされ、そして、Ｒ０１−ｄｒと指定されたリンクは、メモリユニット４６ａから読み出すようにスケジュールされる。同様なスケジューリングは、メモリユニット４６ｃと４６ｄ、メモリユニット４６ｅと４６ｆ、及びメモリユニット４６ｇと４６ｈ、のようなメモリユニット４６の他の対の読み出し動作について使用される。特定の数の交換ユニット４０を介しての特定の数のメモリユニット４６への読み出し動作のために特定の数のサイクルをわたり特定の数のバンク交換ユニット４２での特定のスケジュールが記載され且つ説明されているが、本発明は、任意の適する数の交換ユニット４０を介しての任意の適する数のメモリユニット４６への読み出し動作にために任意の適する数のサイクルをわたり任意の適する数のバンク交換ユニット４２での任意の適するスケジュールを考慮する。
【００７０】
図１０は、４つの交換ユニット４０を介してのメモリバンク４４の８つのメモリユニット４６への書き込み動作及びそれからの読み出し動作についての例示のスケジューリングを示す。各メモリユニット４６は、ゼロから７の数によりスケジュール６２内で指定され；メモリユニット４６ａは数ゼロにより指定され；メモリユニット４６ｂは数１により指定され；メモリユニット４６ｃは数２により指定され；メモリユニット４６ｄは数３により指定され；メモリユニット４６ｅは数４により指定され；メモリユニット４６ｆは数５により指定され；メモリユニット４６ｇは数６により指定され；メモリユニット４６ｈは数７により指定される。スケジュール６２の上方の半分６４は、交換ユニット４０ａと４０ｂをメモリバンク４４へ結合するリンクに適用され、そして、スケジュール６２の上方の半分６６は、交換ユニット４０ｃと４０ｄをメモリバンク４４へ結合するリンクに適用される。偶数サイクル（ゼロ，２，４，６，８，１０，１２及び１４）に対応する列６８は交換ユニット４０ａと４０ｃをメモリバンク４４へ結合するリンクに適用され、奇数サイクル（１，３，５，７，９，１１，１３及び１５）に対応する列６８は、交換ユニット４０ｂと４０ｄをメモリバンク４４へ結合するリンクに適用される。行７０はそれぞれ、交換ユニット４０ａ，４０ｂ、４０ｃ、及び４０ｄをメモリバンク４４へ結合するリンクに対応する。領域７２は、書き込み動作との衝突により読み出し動作が発生しない場合を示す。
【００７１】
スケジュール６２に従って、サイクルゼロで、（交換ユニット４０ａを介しての書き込み動作のための）Ｗ−ｕｌと指定されたリンクは、メモリユニット４６ａへの１つ又はそれ以上の書き込み動作に使用されることが可能であり；（交換ユニット４０ａを介してのメモリユニット４６ｃと４６ｄからの読み出し動作のための）Ｒ２３−ｕｌと指定されたリンクは、メモリユニット４６ｃからの１つ又はそれ以上の読み出し動作に使用されることが可能であり；（交換ユニット４０ａを介してのメモリユニット４６ｅと４６ｆからの読み出し動作のための）Ｒ４５−ｕｌと指定されたリンクは、メモリユニット４６ｅからの１つ又はそれ以上の読み出し動作に使用されることが可能であり；（交換ユニット４０ａを介してのメモリユニット４６ｇと４６ｈからの読み出し動作のための）Ｒ６７−ｕｌと指定されたリンクは、メモリユニット４６ｇからの１つ又はそれ以上の読み出し動作に使用されることが可能であり；（交換ユニット４０ｃを介しての書き込み動作のための）Ｗ−ｕｒと指定されたリンクは、メモリユニット４６ｄへの１つ又はそれ以上の書き込み動作に使用されることが可能であり；（交換ユニット４０ｃを介してのメモリユニット４６ｃと４６ｄからの読み出し動作のための）Ｒ０１−ｕｒと指定されたリンクは、メモリユニット４６ｂからの１つ又はそれ以上の読み出し動作に使用されることが可能であり；（交換ユニット４０ｃを介してのメモリユニット４６ｅと４６ｆからの読み出し動作のための）Ｒ４５−ｕｒと指定されたリンクは、メモリユニット４６ｆからの１つ又はそれ以上の読み出し動作に使用されることが可能であり；（交換ユニット４０ｃを介してのメモリユニット４６ｇと４６ｈからの読み出し動作のための）Ｒ６７−ｕｒと指定されたリンクは、メモリユニット４６ｈからの１つ又はそれ以上の読み出し動作に使用されることが可能である。
【００７２】
サイクル１で、（交換ユニット４０ｂを介しての書き込み動作のための）Ｗ−ｄｌと指定されたリンクは、メモリユニット４６ａへの１つ又はそれ以上の書き込み動作に使用されることが可能であり；（交換ユニット４０ｂを介してのメモリユニット４６ｃと４６ｄからの読み出し動作のための）Ｒ２３−ｄｌと指定されたリンクは、メモリユニット４６ｃからの１つ又はそれ以上の読み出し動作に使用されることが可能であり；（交換ユニット４０ｂを介してのメモリユニット４６ｅと４６ｆからの読み出し動作のための）Ｒ４５−ｄｌと指定されたリンクは、メモリユニット４６ｅからの１つ又はそれ以上の読み出し動作に使用されることが可能であり；（交換ユニット４０ｂを介してのメモリユニット４６ｇと４６ｈからの読み出し動作のための）Ｒ６７−ｄｌと指定されたリンクは、メモリユニット４６ｇからの１つ又はそれ以上の読み出し動作に使用されることが可能であり；（交換ユニット４０ｄを介しての書き込み動作のための）Ｗ−ｄｒと指定されたリンクは、メモリユニット４６ｄへの１つ又はそれ以上の書き込み動作に使用されることが可能であり；（交換ユニット４０ｄを介してのメモリユニット４６ｃと４６ｄからの読み出し動作のための）Ｒ０１−ｄｒと指定されたリンクは、メモリユニット４６ｂからの１つ又はそれ以上の読み出し動作に使用されることが可能であり；（交換ユニット４０ｄを介してのメモリユニット４６ｅと４６ｆからの読み出し動作のための）Ｒ４５−ｄｒと指定されたリンクは、メモリユニット４６ｆからの１つ又はそれ以上の読み出し動作に使用されることが可能であり；（交換ユニット４０ｄを介してのメモリユニット４６ｇと４６ｈからの読み出し動作のための）Ｒ６７−ｄｒと指定されたリンクは、メモリユニット４６ｈからの１つ又はそれ以上の読み出し動作に使用されることが可能である。
【００７３】
サイクル２で、Ｗ−ｕｌと指定されたリンクは、メモリユニット４６ｂへの１つ又はそれ以上の書き込み動作に使用されることが可能であり；Ｒ２３−ｕｌと指定されたリンクは、メモリユニット４６ｄからの１つ又はそれ以上の読み出し動作に使用されることが可能であり；Ｒ４５−ｕｌと指定されたリンクは、メモリユニット４６ｆからの１つ又はそれ以上の読み出し動作に使用されることが可能であり；Ｒ６７−ｕｌと指定されたリンクは、メモリユニット４６ｈからの１つ又はそれ以上の読み出し動作に使用されることが可能であり；Ｗ−ｕｒと指定されたリンクは、メモリユニット４６ｅへの１つ又はそれ以上の書き込み動作に使用されることが可能であり；Ｒ０１−ｕｒと指定されたリンクは、メモリユニット４６ａからの１つ又はそれ以上の読み出し動作に使用されることが可能であり；（交換ユニット４０ｃを介してのメモリユニット４６ｃと４６ｄからの読み出し動作のための）Ｒ２３−ｕｒと指定されたリンクは、メモリユニット４６ｃからの１つ又はそれ以上の読み出し動作に使用されることが可能であり；Ｒ６７−ｕｒと指定されたリンクは、メモリユニット４６ｇからの１つ又はそれ以上の読み出し動作に使用されることが可能である。
【００７４】
この処理は、スケジュール６２従って継続し、１６サイクル後に、（サイクルゼロである）初期状態に達する。特定の数のサイクルをわたる特定の数の交換ユニット４０を介してメモリバンク４４の特定の数のメモリユニット４６への書き込み動作及びそこからの読み出し動作についての特定のスケジュールが記載され且つ説明されたが、本発明は、任意の適する数のサイクルをわたる任意の適する数の交換ユニット４０を介してメモリバンク４４の任意の適する数のメモリユニット４６への書き込み動作及びそこからの読み出し動作についての任意の適するスケジュールを考慮する。
【００７５】
図１１は、スイッチコア２６を使用するパケットを交換するための例示の方法を示す図である。この方法はステップ１００で開始し、入力構造３０がシステムエリアネットワーク１０の第１構成要素から通信されたスイッチ２２の第１ポート２４からパケットを受信する。ステップ１０２で、入力構造３０は、交換構造３４ａを介して１つ又はそれ以上のメモリ構造３６へパケットを書き込む。ステップ１０４では、１つ又はそれ以上の出力構造３２は、交換構造３４ｂを介してメモリ構造３６からパケットを読む。ステップ１０６では、出力構造３２は、システムエリアネットワーク１０の１つ又はそれ以上の第２構成要素へ通信するために、スイッチ２２の１つ又はそれ以上のポート２４へスイッチコア２６からパケットを通信し、この点でこの方法は終了する。図１１に示された方法の特定のステップが、特定の順序で発生するように、記載されそして説明されているが、本発明は、任意の適する順序で発生する上述の方法の任意の適するステップを考慮する。
【００７６】
本発明を幾つかの実施例で説明したが、種々の変更、代用、変形、代替及び修正が、当業者には暗示され、本発明は、添付の請求項の精神と範囲内に含まれる、そのような全ての変更、代用、変形、代替及び修正を包含することを意図している。
【００７７】
（付記）
（付記1）
高速交換環境でパケットを交換するシステムであって、
１つ又はそれ以上のメモリ構造を有し、
各々が、前記１つ又はそれ以上のメモリ構造の各々に書き込むように動作する複数の入力構造を有し、
前記入力構造の各々が、前記１つ又はそれ以上のメモリ構造の各々に書き込むように動作するように、前記入力構造を前記１つ又はそれ以上のメモリ構造へ接続する第１の交換構造を有し、
複数の出力構造を有し、前記構造は各々が、
前記１つ又はそれ以上のメモリ構造の各々から読み出し、
入力構造が通信ネットワークの第２構成要素からパケットの第２部分を受信する前に、前記通信ネットワークの第１構成要素へ前記パケットの第１部分を通信し、
前記出力構造の各々が前記１つ又はそれ以上のメモリ構造の各々から読み出すように動作し、第２交換構造が第１の数のリンクにより前記１つ又はそれ以上のメモリ構造へ結合され且つ第２の数のリンクにより前記複数の出力構造へ結合され、第１の数のリンクは第２の数のリンクの２倍又はそれ以上であるように、前記複数の出力構造を前記１つ又はそれ以上のメモリ構造へ結合する前記第２交換構造を有する、システム。
【００７８】
（付記２）
前記１つ又はそれ以上のメモリ構造の各々は、各々が１つ又はそれ以上のメモリ装置を有する１つ又はそれ以上のメモリユニットを有し、
ポートモジュールは、前記入力構造の１つと前記出力構造の１つを有し、
相互接続ネットワークは、第１及び第２交換構造を有し、前記相互接続ネットワークは１つ又はそれ以上の交換段階を有する階層構造を有する、付記１に記載のシステム。
【００７９】
（付記３）
前記相互接続ネットワークは、１つ又はそれ以上のメモリバンクと、複数のポートモジュールを前記１つ又はそれ以上のメモリバンクに結合する１つ又はそれ以上の交換ユニットを有する多段相互接続ネットワーク（ＭＩＮ）を有し、前記１つ又はそれ以上のメモリバンクは各々が、１つ又はそれ以上のメモリユニットと１つ又はそれ以上のバンク交換ユニットを有する、付記２に記載のシステム。
【００８０】
（付記４）
各ポートモジュールは、書き込み動作のための第１リンクと読み出し動作のための第２リンクにより交換ユニットに結合され、
各交換ユニットは、書き込み動作のための第３リンクと読み出し動作のための４つの第４リンクにより各メモリバンクに結合される、付記３に記載のシステム。
【００８１】
（付記５）
前記ＭＩＮは、３つのメモリバンクと４つの交換ユニットを有し、各メモリバンクは各々が１つのメモリ装置を有する８つのメモリユニットを有する、付記３に記載のシステム。
【００８２】
（付記６）
前記メモリ装置は、スタティックランダムアクセスメモリ（ＳＲＡＭ）装置を有する、付記２に記載のシステム。
【００８３】
（付記７）
前記ＳＲＡＭ装置は、読み出し動作のための１つのポートと書き込み動作のための１つのポートを有する、付記６に記載のシステム。
【００８４】
（付記８）
前記システムは単一の集積回路（ＩＣ）で具体化される、付記１に記載のシステム。
【００８５】
（付記９）
前記高速交換環境は、イーサネット（登録商標）交換環境、ＩＮＦＩＮＩＢＡＮＤ交換環境、３ＧＩＯ交換環境、ＨＹＰＥＲＴＲＡＮＳＰＯＲＴ交換環境、ＲＡＰＩＤ  ＩＯ交換環境、又は、専用のバックプレーン交換環境である、付記１に記載のシステム。
【００８６】
（付記１０）
高速交換環境でパケットを交換する方法であって、
複数の入力構造の１つで、通信ネットワークの第１構成要素から通信されるパケットを受信し、
受信されたパケットを１つ又はそれ以上のメモリ構造の１つ又はそれ以上に書き込み、前記複数の入力構造は、前記入力構造の各々が前記１つ又はそれ以上のメモリ構造の各々に書き込むように動作するように、第１交換構造により前記１つ又はそれ以上のメモリ構造に結合され、
前記メモリ構造から複数の出力構造の１つ又はそれ以上へパケットを読み出し、前記複数の出力構造は、前記複数の出力構造の各々が前記１つ又はそれ以上のメモリ構造の各々から読み出すように動作するように、第２交換構造により前記１つ又はそれ以上のメモリ構造へ結合され、前記１つ又はそれ以上の出力構造の各々は、前記入力構造がパケットの第２部分を受信する前に、前記メモリ構造から前記パケットの第１部分を読み出すように動作し、第２交換構造は第１の数のリンクにより前記１つ又はそれ以上のメモリ構造へ結合され且つ第２の数のリンクにより前記複数の出力構造へ結合され、第１の数のリンクは第２の数のリンクの２倍又はそれ以上であり、
前記パケットを前記複数の出力構造の１つ又はそれ以上から前記通信ネットワークの１つ又はそれ以上の第２構成要素へ通信する、方法。
【００８７】
（付記１１）
前記１つ又はそれ以上のメモリ構造の各々は、各々が１つ又はそれ以上のメモリ装置を有する１つ又はそれ以上のメモリユニットを有し、
ポートモジュールは、前記入力構造の１つと前記出力構造の１つを有し、
相互接続ネットワークは、第１及び第２交換構造を有し、前記相互接続ネットワークは１つ又はそれ以上の交換段階を有する階層構造を有する、付記１０に記載の方法。
【００８８】
（付記１２）
前記相互接続ネットワークは、１つ又はそれ以上のメモリバンクと、複数のポートモジュールを前記１つ又はそれ以上のメモリバンクに結合する１つ又はそれ以上の交換ユニットを有する多段相互接続ネットワーク（ＭＩＮ）を有し、前記１つ又はそれ以上のメモリバンクは各々が、１つ又はそれ以上のメモリユニットと１つ又はそれ以上のバンク交換ユニットを有する、付記１１に記載の方法。
【００８９】
（付記１３）
各ポートモジュールは、書き込み動作のための第１リンクと読み出し動作のための第２リンクにより交換ユニットに結合され、
各交換ユニットは、書き込み動作のための第３リンクと読み出し動作のための４つの第４リンクにより各メモリバンクに結合される、付記１２に記載の方法。
【００９０】
（付記１４）
前記ＭＩＮは、３つのメモリバンクと４つの交換ユニットを有し、各メモリバンクは各々が１つのメモリ装置を有する８つのメモリユニットを有する、付記１２に記載の方法。
【００９１】
（付記１５）
前記メモリ装置は、スタティックランダムアクセスメモリ（ＳＲＡＭ）装置を有する、付記１１に記載の方法。
【００９２】
（付記１６）
前記ＳＲＡＭ装置は、読み出し動作のための１つのポートと書き込み動作のための１つのポートを有する、付記１５に記載の方法。
【００９３】
（付記１７）
前記方法は単一の集積回路（ＩＣ）により実行される、付記１０に記載の方法。
【００９４】
（付記１８）
前記高速交換環境は、イーサネット（登録商標）交換環境、ＩＮＦＩＮＩＢＡＮＤ交換環境、３ＧＩＯ交換環境、ＨＹＰＥＲＴＲＡＮＳＰＯＲＴ交換環境、ＲＡＰＩＤ  ＩＯ交換環境、又は、専用のバックプレーン交換環境である、付記１０に記載の方法。
【００９５】
（付記１９）
イーサネット（登録商標）交換環境、ＩＮＦＩＮＩＢＡＮＤ交換環境、３ＧＩＯ交換環境、ＨＹＰＥＲＴＲＡＮＳＰＯＲＴ交換環境、ＲＡＰＩＤ  ＩＯ交換環境、又は、専用のバックプレーン交換環境を含む、高速交換環境でパケットを交換するシステムであって、前記システムは単一の集積回路（ＩＣ）で具体化され、且つ、
各々が１つ又はそれ以上のメモリユニットを有する、１つ又はそれ以上のメモリ構造を有し、前記メモリユニットの各々は、各々が読み出し動作のための１つのポートと書き込み動作のための１つのポートを有するスタティックランダムアクセスメモリ（ＳＲＡＭ）装置、を有する１つ又はそれ以上のメモリ装置を有し、
各々が前記１つ又はそれ以上のメモリ構造の各々に書き込みできる複数の入力構造を有し、
複数の出力構造を有し、前記構造は各々が、
前記１つ又はそれ以上のメモリ構造の各々から読み出し、
入力構造が通信ネットワークの第２構成要素からパケットの第２部分を受信する前に、前記通信ネットワークの第１構成要素へ前記パケットの第１部分を通信し、
前記入力構造と前記出力構造を前記１つ又はそれ以上のメモリ構造に結合するように動作する多段相互接続ネットワーク（ＭＩＮ）を有し、前記ＭＩＮは、１つ又はそれ以上のメモリバンクと、複数のポートモジュールを前記１つ又はそれ以上のメモリバンクに結合する１つ又はそれ以上の交換ユニットを有する１つ又はそれ以上の交換段階の階層構造を有し、前記１つ又はそれ以上のメモリバンクは各々が１つ又はそれ以上のメモリユニットと１つ又はそれ以上のバンク交換ユニットを有する、システム。
【００９６】
（付記２０）
高速交換環境でパケットを交換するシステムであって、
複数の入力構造の１つで、通信ネットワークの第１構成要素から通信されるパケットを受信する手段を有し、
受信されたパケットを１つ又はそれ以上のメモリ構造の１つ又はそれ以上に書き込む手段を有し、前記複数の入力構造は、前記入力構造の各々が前記１つ又はそれ以上のメモリ構造の各々に書き込むように動作するように、第１交換構造により前記１つ又はそれ以上のメモリ構造に結合され、
前記メモリ構造から複数の出力構造の１つ又はそれ以上へパケットを読み出す手段を有し、前記複数の出力構造は、前記複数の出力構造の各々が前記１つ又はそれ以上のメモリ構造の各々から読み出すように動作するように、第２交換構造により前記１つ又はそれ以上のメモリ構造へ結合され、前記１つ又はそれ以上の出力構造の各々は、前記入力構造がパケットの第２部分を受信する前に、前記メモリ構造から前記パケットの第１部分を読み出すように動作し、第２交換構造は第１の数のリンクにより前記１つ又はそれ以上のメモリ構造へ結合され且つ第２の数のリンクにより前記複数の出力構造へ結合され、第１の数のリンクは第２の数のリンクの２倍又はそれ以上であり、
前記パケットを前記複数の出力構造の１つ又はそれ以上から前記通信ネットワークの１つ又はそれ以上の第２構成要素へ通信する手段を有する、システム。
【００９７】
（付記２１）
高速交換環境でパケットを交換する論理であって、前記論理は媒体で具体化され、且つ、実行されたときに、
複数の入力構造の１つで、通信ネットワークの第１構成要素から通信されるパケットを受信し、
受信されたパケットを１つ又はそれ以上のメモリ構造の１つ又はそれ以上に書き込み、前記複数の入力構造は、前記入力構造の各々が前記１つ又はそれ以上のメモリ構造の各々に書き込むように動作するように、第１交換構造により前記１つ又はそれ以上のメモリ構造に結合され、
前記メモリ構造から複数の出力構造の１つ又はそれ以上へパケットを読み出し、前記複数の出力構造は、前記複数の出力構造の各々が前記１つ又はそれ以上のメモリ構造の各々から読み出すように動作するように、第２交換構造により前記１つ又はそれ以上のメモリ構造へ結合され、前記１つ又はそれ以上の出力構造の各々は、前記入力構造がパケットの第２部分を受信する前に、前記メモリ構造から前記パケットの第１部分を読み出すように動作し、第２交換構造は第１の数のリンクにより前記１つ又はそれ以上のメモリ構造へ結合され且つ第２の数のリンクにより前記複数の出力構造へ結合され、第１の数のリンクは第２の数のリンクの２倍又はそれ以上であり、
前記パケットを前記複数の出力構造の１つ又はそれ以上から前記通信ネットワークの１つ又はそれ以上の第２構成要素へ通信する、論理。
【図面の簡単な説明】
【００９８】
【図１】例示のシステムエリアネットワークを示す図である。
【図２】システムエリアネットワークの例示のスイッチを示す図である。
【図３】スイッチのスイッチコアの例示の構造を示す図である。
【図４】スイッチの例示のスイッチコアを示す図である。
【図５】論理的にブロックに分割されたスイッチコアの例示のストリームメモリを示す図である。
【図６】６ポートモジュールにより３つのメモリバンクへの書き込み動作のためのスイッチコアの２つの交換ユニットでの例示のスケジューリングを示す図である。
【図７】ポートモジュールにより２４のメモリユニットからの読み出し動作のためのスイッチコアの交換ユニットでの例示のスケジューリングを示す図である。
【図８】スイッチコアの例示のメモリバンクを示す図である。
【図９】４つの交換ユニットを介した２つのメモリユニットへの読み出し動作のためのメモリバックの３つのバンク交換ユニットでの例示のスケジューリングを示す図である。
【図１０】４つの交換ユニットを介してのメモリバンクの８のメモリユニットへの書き込み動作とそこからの読み出し動作のための例示のスケジューリングを示す図である。
【図１１】スイッチコアを使用するパケットを交換するための例示の方法を示す図である。
【符号の説明】
【００９９】
１０  システムエリアネットワーク
１２  相互接続
１４  サーバシステム
１６  記憶システム
１８  ネットワークシステム
２０  ルーティングシステム
２２  スイッチ
２４  ポート
２６  スイッチコア
３８  ポートモジュール
４８  ストリームメモリ
５０  タグメモリ
５２  中央エージェント
５４  ルーティングモジュール
５６  ブロック
５８  ワード
４０  交換ユニット
４４  メモリバンク
４２  メモリバンク交換ユニット
４６  メモリユニット
６０  スケジュール
６２  スケジュール
【図１】
2004242332.tif 000005
【図２】
2004242332.tif 000006
【図３】
2004242332.tif 000007
【図４】
2004242332.tif 000008
【図５】
2004242332.tif 000009
【図６】
2004242332.tif 000010
【図７】
2004242332.tif 000011
【図８】
2004242332.tif 000012
【図９】
2004242332.tif 000013
【図１０】
2004242332.tif 000014
【図１１】
2004242332.tif 000015