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