図1は、1つ又はそれ以上のサーバシステム14;1つ又はそれ以上の記憶システム16;1つ又はそれ以上のネットワークシステム18;及び、相互接続12を、1つ又はそれ以上のローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)又は他のネットワークを含む、1つ又はそれ以上の他のネットワーク、に結合する1つ又はそれ以上のルーティングシステム20の間の通信をサポートするシリアル又は他の相互接続12を含む例示のシステムエリアネットワーク10を示す。サーバシステム14は各々が、1つ又はそれ以上の中央処理ユニット(CPU)と1つ又はそれ以上のメモリユニットを有する。記憶システム16は各々が、1つ又はそれ以上のチャネルアダプタ(CA)、1つ又はそれ以上のディスクアダプタ(DA)及び1つ又はそれ以上のCPUモジュール(CM)を有する。相互接続12は、1つ又はそれ以上のスイッチ22を有し、これは、特定の実施例では、以下に更に完全に記載するように、イーサネット(登録商標)スイッチを有する。システムエリアネットワーク10の構成要素は、1つ又はそれ以上のリンクを使用して互いに結合され、その各々は、1つ又はそれ以上のコンピュータバス、ローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、ワイドエリアネットワーク(WAN)、インターネットの一部又は、他の配線、光、無線又は、他のリンクを有する。システムエリアネットワーク10は、特定の構成に互いに結合された特定の構成要素を有するように記載され且つ説明されるが、本発明は、適切な構成で互いに結合された適する構成要素を有する適する任意のシステムエリアネットワークを考慮する。
図2は、システムエリアネットワーク10の例示のスイッチ22を示す。スイッチ22は、複数のポート24とスイッチコア26を有する。ポート24は各々が、スイッチコア26と(サーバシステム14、記憶システム16、ネットワークシステム18、ルーティングシステム20又は、他のスイッチ22のような)システムエリアネットワーク10の構成要素に結合されている。第1ポート24は、システムエリアネットワーク10の第1構成要素からパケットを受信し、パケットをシステムエリアネットワーク10の第2の構成要素へ通信する第2ポート24へ交換するためにスイッチコア26へパケットを通信する。パケットへの参照は、適切な、パケット、データグラム、フレーム又は、他のデータの単位を含みうる。スイッチコア26は、第1ポート24からパケットを受信し、以下に更に完全に記載するように、1つ又はそれ以上の第2ポート24へパケットを交換する。特定の実施例では、スイッチ22は、イーサネット(登録商標)スイッチを含む。特定の実施例では、スイッチ22は、有線速度又はその付近でパケットを交換できる。
図3は、スイッチ22のスイッチコア26の例示の構造28を示す。構造28は、1つの方向のトラフィックを扱うことが可能である。構造28は、1つ又はそれ以上の入力構造30、1つ又はそれ以上の出力構造32、2つの交換構造34及び1つ又はそれ以上のメモリ構造36を有する。構造28の構成要素は、バス又は他のリンクを使用して互いに結合される。特定の実施例では、構造28は、単一のICを使用して具体化される。トラッフィックへの参照は、1つ又はそれ以上のパケット入力、その道を開けること、そして、出力構造28を含み、そして、トラフィックの方向への参照は、入力構造30を通してのパケット入力構造28及び出力構造32をとしての出力構造28を含む。構造28は、異なる応用で使用され得る。例としてそして限定するのではなく、構造28は、(10ギガバイトイーサネット(登録商標)スイッチ22又は特定の実施例のイーサネット(登録商標)スイッチ22を含む)イーサネット(登録商標)スイッチ22のスイッチコア26;INFINIBANDスイッチ22のスイッチコア26;3GIOスイッチ22のスイッチコア26;HYPERTRANSPORTスイッチ22のスイッチコア26;RAPID IOスイッチ22のスイッチコア26;又は、記憶システム16、ネットワークシステム18又は、両方のための専用のバックプレーンスイッチ22のスイッチコア26で使用され得る。
入力構造30は、スイッチコア26とスイッチ22のポート24の間のインターフェースを提供し、そして、ポート24からパケットを受信しそして、交換構造34aを介して1つ又はそれ以上のメモリ構造36へパケットを書き込む入力論理を有する。入力構造30は、1つ又はそれ以上のリンクを使用してポート24と交換構造34aに結合されている。出力構造32も、スイッチコア26とポート24の間のインターフェースを提供するが、しかし、交換構造34bを介して1つ又はそれ以上のメモリ構造36からパケットを読み出しそしてポート24へパケットを通信する出力論理を有する。出力構造32は、1つ又はそれ以上のリンクを使用してポート24と交換構造34bに結合される。システムエリアネットワーク10の第1構成要素から入力構造30により受信されたパケットは、入力構造から1つ又はそれ以上のメモリ構造36に書き込まれそして、後に、出力構造32から1つ又はそれ以上のシステムエリアネットワーク10の第2構成要素へ通信するために、メモリ構造36から1つ又はそれ以上の出力構造32へ読み出される。入力構造30により受信された又は出力構造32から通信されたパケットへの参照は、受信された又は通信された全体のパケット又は、適切に、受信された又は通信されたパケットの一部のみを含む。同様に、1つ又はそれ以上のメモリ構造36へ書き込まれている又はそこから読み出されているパケットへの参照は、メモリ構造36へ書き込まれている又はそこから読み出されている全体のパケット又は、適切に、メモリ構造36へ書き込まれている又はそこから読み出されているパケットの一部のみを含む。更に完全に以下に説明するように、特定の実施例では、入力構造30は、入力構造30と出力構造32を使用する(以下に説明する)単一のポーモジュール38が入力論理と出力論理の両方を含むように出力構造32と結合される。代わりに、特定の実施例では、ポーモジュール38は、入力論理のみ又は、出力論理のみを含む。
交換構造34aは、入力構造30からパケットを受信しそして、パケットを1つ又はそれ以上のメモリ構造36へ交換する。交換構造34aを介して書き込み動作が、スケジューリング技術に従って、スケジュールされる。例として、特定の実施例では、静的なスケジューリングが交換構造34aを介した書き込み動作で使用される。以下で更に詳細に記載されるように、交換構造34aは、入力構造30とメモリ構造36の間でパケットを交換する1つ又はそれ以上の構成要素を有する。例として、特定の実施例では、交換構造34aは、(以下で更に詳細に記載する)複数の交換ユニット40と(以下で更に詳細に記載する)複数のバンク交換ユニット42を有する。
交換構造34bは、メモリ構造36からパケットを受信しそして、パケットを1つ又はそれ以上の出力構造32へ交換する。交換構造34bを介した読み出し動作は、スケジューリング技術に従って、スケジュールされる。例として、特定の実施例では、オンデマンドスケジューリングが、交換構造34bを介しての読み出し動作に使用される。オンデマンドスケジューリングは、接続及び解法技術を含むことが可能である。以下に更に完全に記載するように、交換構造34bは、出力構造32とメモリ構造36の間でパケットを交換する1つ又はそれ以上の構成要素を有する。例として、特定の実施例では、交換構造34bは、複数の交換ユニット40と複数のバンク交換ユニット42を有する。交換構造34bは、1つ又はそれ以上のリンクによりメモリ構造36に結合されそして、上述のように、1つ又はそれ以上のリンクにより出力構造へ結合され得る。交換構造34bをメモリ構造36に結合するリンクの合計数は、交換構造34bを出力構造32に結合する合計数よりも大きいことがことが可能である。例として限定するのではなく、交換構造34bをメモリ構造36に結合するリンクの合計数は、交換構造34bを出力構造32に結合する合計数の2倍であることが可能である。他の例として、交換構造34bをメモリ構造36に結合するリンクの合計数は、交換構造34bを出力構造32に結合する合計数の4倍であることが可能である。
特定の実施例では、交換構造34aは、入力構造30とメモリ構造36の間で及びメモリ構造36と出力構造32の間でパケットを交換する単一構成の構成要素が交換構造34aと交換構造34bをの両方を実現するように交換構造34bと結合され得る。これらの実施例では、組合せの1つ又はそれ以上の構成要素は交換構造34aと交換構造34bにより共有され得るが、しかし、交換構造34aと交換構造34bにより共有される必要はない。代わりに、特定の実施例では、交換構造34aは、交換構造34bが実現されるメモリ構造36と出力構造32の間でパケットを交換する構成要素の構成から別である、入力構造30とメモリ構造36の間でパケットを交換する構成要素の構成で実現されうる。同様に、交換構造34bは、交換構造34aが実現される入力構造30とメモリ構造36の間でパケットを交換する構成要素の構成から別である、メモリ構造36と出力構造32の間でパケットを交換する構成要素の構成で実現されうる。
スイッチコア26により受信されたパケットは、メモリ構造36に書き込まれそして、続いて、スイッチコア26からの通信のためにメモリ構造36から読み出される。メモリ構造36は、1つ又はそれ以上のリンクを使用して書き込み動作のために交換構造34aに結合される。メモリ構造36は、1つ又はそれ以上のリンクを使用して読み出し動作のために交換構造34bに結合される。例として、特定の実施例では、メモリ構造36は1つのリンクをしようして交換構造34aに結合され、4つのリンクを使用して交換構造34bに結合され、(1つ又はそれ以上のパケットがメモリ構造36に書き込まれるスイッチコア26の一連の1つ又はそれ以上のクロックサイクルを含む)書き込みサイクルあたりメモリ構造36への1つの書き込み動作及び、(1つ又はそれ以上のパケットがメモリ構造36から読み出されるスイッチコア26の一連の1つ又はそれ以上のクロックサイクルを含む)読み出しサイクルあたりメモリ構造36からの4つの書き込み動作を可能とする。メモリ構造36は、データを書き込みそして読み出す1つ又はそれ以上の構成要素を有する。例として、特定の実施例では、メモリ構造36は1つ又はそれ以上のスタティックランダムアクセスメモリ(SRAM)装置を有する。以下に更に詳細に説明するように、特定の実施例では、メモリ構造36はメモリバンク44に組織化された1つ又はそれ以上のメモリユニット46を有する。
特定の実施例では、任意の入力構造30はメモリ構造36に書き込むことが可能であり、そして、任意の出力構造32はメモリ構造36から読み出すことがことが可能である。入力構造30と出力構造32によるこのメモリ構造36の共有は、ラインの先頭のブロッキングを除去し(それによりスイッチコア26のスループットを増加し)、スイッチコア26に関連するメモリ要求を減少し、そして、スイッチコア26が、入力構造30、出力構造32及びその両方の負荷状態の変化を更に効率的に扱うことを可能とする。特定の実施例では、システムエリアネットワーク10の第1構成要素からスイッチコア26により受信されたパケットの一部分は、スイッチコア26が全体のパケットを受信する前に、システムエリアネットワーク10の1つ又はそれ以上の第2構成要素へスイッチコア26から通信されうる。特定の実施例では、このカットスルー転送は、(減少された待ち時間、減少されたメモリ要求、及び増加されたスループットのような)記憶及び転送技術の上の1つ又はそれ以上の利点を提供する。
特定の実施例では、スイッチコア26は、1つのみの方向のトラフィックを扱う1つのみの構造28を有する。代わりに、特定の実施例では、スイッチコア26は、2つの方向のトラフィックを扱う2つの構造28を有する。これらの実施例では、構造28の1つ又はそれ以上の構成要素は、互いに結合され得る。例として、入力構造30は出力構造32と結合され、そして、上述のように、入力論理と出力論理の両方を有するポーモジュール38で実現される。他の例として、交換構造34aは、入力構造30とメモリ構造36の間で及びメモリ構造36と出力構造32の間でパケットを交換する単一構成の構成要素が、交換構造34aと交換構造34bの両方を実現するように、交換構造34bと結合され得る。入力構造30が出力構造32と結合されるように記載され、そして、交換構造34aが交換構造34bと結合されるように記載されているが、本発明は、任意の適する構成の構造28の任意の適する構成要素の任意の適する結合を考慮する。例として、2つの構造28が2つの方向のトラフィックを扱うために互いに結合された実施例では、スイッチコアの1つ又はそれ以上のポーモジュール38は、1つのみの入力論理又は1つのみの出力論理を有することが可能である。更に加えて、逆に、交換構造34aは、交換構造34bが実現される構成要素の構成とは別の構成要素の構成で実現され得る。
図4は、スイッチ22の例示のスイッチコア26を示す。スイッチコア26は2つの方向のトラフィックを扱う2つの構造28を有する。2つの構造28を有するスイッチコア26が、記載され且つ説明されているが、本発明は、任意の適する程度に任意の適する構成で結合された2つの構造28を有するスイッチコア26を考慮する。本発明は、特定の実施例で1つのみの構造28を有するスイッチコア26を考慮する。スイッチコア26は、12のポートモジュール28、ストリームメモリ48、タグメモリ50、中央エージェント52及びルーティングモジュール54を有する。スイッチコア26の構成要素は、バス又は他のリンクを使用して互いに結合される。特定の実施例では、スイッチコア26は、単一のICで具体化される。スイッチコア26の省略時(デフォルト)モードでは、システムエリアネットワーク10の第1構成要素からスイッチコア26により受信されたパケットは、スイッチコア26が全体のパケットを受信する前に、スイッチコア26からシステムエリアネットワーク10の1つ又はそれ以上の第2構成要素へ通信されうる。特定の実施例では、カットスルー転送は、(減少された待ち時間、減少されたメモリ要求、及び増加されたスループットのような)記憶及び転送技術の上の1つ又はそれ以上の利点を提供する。スイッチコア26は、異なる応用についても構成されうる。例でありそして限定されないとして、スイッチコア26は、(特定の実施例のギガバイトイーサネット(登録商標)スイッチ22を含む)イーサネット(登録商標)スイッチ22、INFINIBANDスイッチ22、3GIOスイッチ22、HYPERTRANSPORTスイッチ22、RAPID IOスイッチ22、又は、記憶システム16、ネットワークシステム18又は、両方のための専用のバックプレーンスイッチ22又は、他のスイッチ22について、構成されることが可能である。
ポートモジュール28は、スイッチ22のスイッチコア26とポート24の間のインターフェースを提供する。ポートモジュール28は、ポート24、ストリームメモリ48、タグメモリ50、中央エージェント52、及びルーティングテーブル36に結合される。特定の実施例では、ポートモジュール28は、(システムエリアネットワーク10の構成要素からパケットを受信しそしてストリームメモリ48へパケットを書き込むのに使用される)入力論理と(ストリームメモリ48からパケットを読み出しそしてパケットをシステムエリアネットワーク10の構成要素へ通信するのに使用される)出力論理の両方を有する。代わりとして、特定の実施例では、ポートモジュール28は、入力論理のみ又は出力論理のみを有する。ポートモジュール28への参照は、適切な場合に、入力論理、出力論理又は、両方を有するポートモジュール28を含む、ポートモジュール28は、入力フロー制御のための入力バッファも含みうる。イーサネット(登録商標)スイッチ22では、ポーズ機能が、入力フロー制御について使用され得、これは効果的であるために時間がかかる。ポートモジュール28の入力バッファは、ポーズ機能が入力するパケットを止める前に送られたパケットの一時的な記憶に使用される。入力フロー制御についてクレジットがエクスポート(移出)される場合には、入力バッファは不要であるので、INFINIBANDスイッチ22の場合のように、入力バッファは任意である。特定の実施例では、ポートモジュール28をストリームメモリ48に結合するリンクは、(データがポートモジュール28からストリームメモリ48に書き込まれるスイッチコア26の動作を含む)書き込み動作のためのものとそして、(データがストリームメモリ48からポートモジュール28に読み出されるスイッチコア26の動作を含む)読み出し動作のためのものの、2つのリンクを有する。これらのリンクの各々は、36ビットを送り、ポートモジュール28とストリームメモリ48の間のデータ経路を両方向に36ビット幅にする。
システムエリアネットワーク10の第1構成要素から第1ポートモジュール28により受信されるパケットは、第1ポートモジュール28からストリームメモリ48へ書き込まれ、そして後に、第2ポートモジュール28からシステムエリアネットワーク10の1つ又はそれ以上の第2構成要素への通信のために、ストリームメモリ48から1つ又はそれ以上の第2ポートモジュール28へ読み出される。ポートモジュール28により受信されている又はそこから通信されているパケットへの参照は、適切に、ポートモジュール28により受信されている又はそこから通信されている全体のパケット又は、ポートモジュール28により受信されている又はそこから通信されているパケットの一部を含みうる。同様に、ストリームメモリ48へ書き込まれている又はそこから読み出されているパケットへの参照は適切に、ストリームメモリ48へ書き込まれている又はそこから読み出されている全体のパケット又は、ストリームメモリ48へ書き込まれている又はそこから読み出されているパケットの一部のみを含みうる。入力論理を含むポートモジュール28は、ストリームメモリ48に書き込むことが可能であり、そして、出力論理含むポートモジュール28は、ストリームメモリ48から読み出すことがことが可能である。特定の実施例では、ポートモジュール28によるストリームメモリ48の共有は、ラインの先頭のブロッキングを除去し(それによりスイッチコア26のスループットを増加し)、スイッチコア26に関連するメモリ要求を減少し、そして、スイッチコア26が、ポートモジュール28での負荷状態の変化を更に効率的に扱うことを可能とする。
スイッチコア26のストリームメモリ48は、図5に示されたように、論理的にブロック56に分割され、これは更に、ワード58に分割される。行はブロック56を示しそして、行と列の交差点は、ブロック56のワード58を示す。特定の実施例では、ストリームメモリ48は、1536ブロック56に分割され、各ブロック56は、24ワード58を含み、ワード58は72ビットを有する。ストリームメモリ48は、特定の数のビットを含む特定の数のワード58に分割された特定の数のブロック56に分割されているように記述されそして説明されているが、本発明は、ストリームメモリ48が、適する数のビットを含む適する数のワード58に分割された適する数のブロック56に分割されていることを考慮する。パケットサイズは、パケットごとに異なることが可能である。ブロック56と同じ又はそれより少ないビットを含むパケットが1つのブロック56に書き込まれることが可能であり、そして、ブロック56よりも多くのビットを含むパケットは、互いに連続である必要はない、1つより多くのブロック56に書き込まれることが可能である。
ブロック56への書き込み又はそこからの読み出しのときには、ポートモジュール28は、ブロック56の任意のワード58から開始でき、そして、順次にブロック56のワード58へ書き込み又はそこから読み出すことが可能である。ポートモジュール28は、ブロック56へ書き込みそこから読み出しながら、ブロック56の第1ワード58へラップアラウンドすることも可能である。ブロック56は、書き込み動作又は読み出し動作でブロック56を識別するために使用されるアドレスを有し、そして、オフセットは、書き込み動作又は読み出し動作でブロック56のワード58を識別するために使用される。例として、4176ビット長のパケットを考えるとする。パケットは、ブロック56aのワード58fで開始しそしてブロック56bを含まず、ブロック56dのワード58kへ続く、58のワード58に書き込まれる。書き込み動作では、ブロック56aのワード58fは、第1アドレスと第1オフセットで識別され、ブロック56cのワード58fは、第2アドレスと第2オフセットで識別され、そして、ブロック56dのワード58fは、第3アドレスと第3オフセットで識別される。パケットは、ブロック56aのワード58fで開始しそしてブロック56bを含まず、ブロック56dのワード58kへ続く、ストリームメモリ48から読み出される。読み出し動作では、ブロック56aのワード58fは、第1アドレスと第1オフセットで識別され、ブロック56cのワード58fは、第2アドレスと第2オフセットで識別され、そして、ブロック56dのワード58fは、第3アドレスと第3オフセットで識別される。
タグメモリ50は、各々が、書き込むべき次のブロック56を決定するために第1ポートモジュール28によりそして、そこから読み出すべき次のブロック56を決定するために1つ又はそれ以上の第2ポートモジュール28により使用される、複数のリンクされたリストを有する。タグメモリ50は、以下に更に完全に説明するように、ポートモジュール28からストリームメモリ48への書き込み動作のためにポートモジュール28に有効になされることが可能である次のブロック56を決定するために、中央エージェント52により使用され得るリンクされたリストも有する。タグメモリ50は、複数のエントリを有し、その少なくとも幾つかは各々が、ストリームメモリ48のブロック56に対応する。ストリームメモリ48の各ブロック56は、タグメモリ50内に対応するエントリを有する。タグメモリ50内のエントリは、タグメモリ50内の他のエントリへのポインタを有することが可能であり、この結果リンクされたリストとなる。
ポートモジュール28からストリームメモリ48への書き込み動作のためにポートモジュール28に有効であるブロック56に対応するタグメモリ50内のエントリは、ポートモジュール28がリンクされたエントリを使用して書き込むべき次のブロック56を決定できるように、ともにリンクされている。例として、ポートモジュール28からストリームメモリ48への書き込み動作のためにポートモジュール28に有効である4つのブロック56を考えるとする。第1ブロック56に対応するタグメモリ50内の第1エントリは、第2ブロック56へのポインタを有し、第2ブロック56に対応するタグメモリ50内の第2エントリは、第3ブロック56へのポインタを有し、そして、第3ブロック56に対応するタグメモリ50内の第3エントリは、第4ブロック56へのポインタを有する。ポートモジュール28は第1ブロック56へ書き込みそして、ポートモジュール28が第1ブロック56に書き込んでいる間に、書き込むべき次のブロック56を決定するために第1エントリ内のポインタを使用する。ポインタはポートモジュール28に第2ブロック56を示し、そして、ポートモジュール28が第1ブロック56への書き込みを終了したときに、ポートモジュール28は第2ブロック56へ書き込む。ポートモジュール28が第2ブロック56へ書き込んでいる間に、ポートモジュール28は、書き込むべき次のブロック56を決定するために第2エントリ内のポインタを使用する。ポインタはポートモジュール28に第3ブロック56を示し、そして、ポートモジュール28が第2ブロック56への書き込みを終了したときに、ポートモジュール28は第3ブロック56へ書き込む。ポートモジュール28が第3ブロック56へ書き込んでいる間に、ポートモジュール28は、書き込むべき次のブロック56を決定するために第3エントリ内のポインタを使用する。ポインタはポートモジュール28に第4ブロック56を示し、そして、ポートモジュール28が第3ブロック56への書き込みを終了したときに、ポートモジュール28は第4ブロック56へ書き込む。タグメモリ50内のリンクされたリストは、書き込むべき次のブロック56を決定するために、1つより多くのポートモジュール28により使用されることができない。
ブロック56がポートモジュール28からストリームメモリ48への書き込み動作のためにポートモジュール28に有効になされたときには、ブロック56に対応するタグメモリ50内のエントリは、ポートモジュール28が書き込むべき次のブロック56を決定するために使用しているリンクされたリストへ追加されうる。例として、上述のリンクされたリストを考えるとする。第4エントリがリンクされたリストの最後のエントリである場合には、第5ブロック56がポートモジュール28に有効になされるときに、第4エントリは第5ブロック56へのポインタを含むように修正されうる。
書き込むべき次のブロック56を決定するために第1ポートモジュール28が使用しているタグメモリ50のリンクされたリストも、読み出すべき次のブロック56を決定するために1つ又はそれ以上の第2のポートモジュール28により使用され得る。例として、上述のリンクされたリストを考えるとする。パケットの第1部分は、第1ポートモジュール28から第1ブロック56へ書き込まれ、パケットの第2部分は、第1ポートモジュール28から第2ブロック56へ書き込まれ、そして、パケットの第3及び最終部分は、第1ポートモジュール28から第3ブロック56へ書き込まれる。第3ブロック56にパケットの最終部分が書き込まれたことを示すために第3ブロック56へエンドマークも書き込まれる。第2ポートモジュール28は、第1ブロック56から読み出し、第2ポートモジュール28が第1ブロック56から読み出している間に、読み出すべき次のブロック56を決定するために第1エントリ内のポインタを使用する。ポインタは第2ポートモジュール28に第2ブロック56を示し、そして、第2ポートモジュール28が第1ブロック56からの読み出しを終了したときに、第2ポートモジュール28は、第2ブロック56から読み出す。第2ポートモジュール28が第2ブロック56から読み出している間に、ポートモジュール28は、読み出すべき次のブロック56を決定するために第2エントリ内のポインタを使用する。ポインタは第2ポートモジュール28に第3ブロック56を示し、そして、第2ポートモジュール28が第2ブロック56からの読み出しを終了したときに、第2ポートモジュール28は、第3ブロック56から読み出す。第2ポートモジュール28が第3ブロック56から読み出しそして、第3ブロック56内のエンドマークを使用し、パケットの最終部分が第3ブロック56に書き込まれたことを決定する。タグメモリ50内のリンクされたリストは、書き込むべき次のブロック56を決定するために、1つより多くの第1ポートモジュール28により使用されることができないが、リンクされたリストは読み出すべき次のブロック56を決定するために1つ又はそれ以上の第2ポートモジュール28により使用されることが可能である。
異なるパケットは、異なる宛先を有しそして、パケットがストリームメモリ48を通る順序は、先入れ、先出し(ファーストイン、ファーストアウト、FIFO)である。例として、第2パケットが受信されそして1つ又はそれ以上の第2ブロック56に書き込まれる前に、受信されそして1つ又はそれ以上の第1ブロック56に書き込まれた第1パケットを考える。第2パケットは、第1パケットよりも前にストリームメモリ48から読み出されると、第2ブロック56は第1ブロック56の前に他の書き込み動作に対して有効となる。特定の実施例では、パケットが書き込まれたストリームメモリ48のブロック56は、パケットのポートモジュール28に指定されている全てのポートモジュール28によりブロック56からパケットが読み出されたすぐ後に、ポートモジュール28からブロック56への書き込み動作のために、ポートモジュール28へ有効になされる。パケットの指定されたポートモジュール28は、システムエリアネットワーク10の構成要素、スイッチコア26からの下流、即ちパケットの最終又は中間宛先へ、結合されたポートモジュール28を有する。
特定の実施例では、クレジットがポートモジュール28の入力論理に割当てられ、そして、書き込み動作を管理するのに使用される。書き込み動作を管理するのにクレジット使用することは、スイッチコア26によるカットスルー転送を容易にでき、これは、待ち時間(レーテンシ)を減少し、スループットを増加し、そして、スイッチコア26に関連するメモリ要求を減少する。また、クレジットが書き込み動作を管理するために使用される場合には、どの時点でどのブロック56にどのポートモジュール28が書き込めるかに関する決定が、ポートモジュール28で局所的に行われることが可能であり、これは、スイッチコア26のスループットと交換速度を増加する。書き込み動作を管理するのにクレジット使用することは、ラインの先頭のブロッキングも除去できそして、ポートモジュール28で負荷状態の変化に応じてポートモジュール28間でメモリ資源の分配のより大きな柔軟性を提供できる。クレジットは、ストリームメモリ48のブロック56に対応しそして、ブロック56に書き込むためにポートモジュール28により使用されることが可能である。クレジットは、クレジットのプールからポートモジュール28に割当てられ、これは、中央エージェント52により管理される。ポートモジュール28に割当てられているクレジットへの参照は、ポートモジュール28からブロック56への、及び逆の、書き込み動作のためにポートモジュール28に有効になされているクレジットに対応するブロック56を含む。
クレジットのプール内のクレジットは、どのポートモジュール28にも割当でき、そして、特定のポートモジュール28に割当てられる必要はない。ポートモジュール28は、ポートモジュール28に有効なクレジットのみを使用でき、そして、他のポートモジュール28に有効な又はクレジットのプール内にあるクレジットを使用できない。クレジットは、クレジットがポートモジュール28に割当てられそしてポートモジュール28がまだクレジットを使用していない場合に、ポートモジュール28に有効である。ポートモジュール28に割当てられているクレジットは、ポートモジュール28がそのクレジットを使用するまでポートモジュール28に有効である。クレジットは一度に1より多くのポートモジュール28に割当てられることは出来ず、そしてクレジットは同時に1より多くのポートモジュール28に有効にされることは出来ない。特定の実施例では、第1ポートモジュール28がクレジットに対応するブロック56にパケットを書き込むためにそのクレジットを使用するときには、そのクレジットは、パケットの全ての指定されたポートモジュール28がブロック56からパケットを読み出したすぐ後にクレジットのプールに戻される。
中央エージェント52は、クレジットを、クレジットのプールから、ポートモジュール28へ割当てることができる。例として、中央エージェント52は、ポートモジュール28への予め定められた数のクレジットの初期割当を行うことが可能である。特定の実施例では、中央エージェント52は、スイッチコア26の開始で又はスイッチコア26がリセットされるのに応じて、ポートモジュール28へのクレジットの初期割当を行うことが可能である。他の例として、中央エージェント52は、ポートモジュール28が使用している他のクレジットを置き換えるためにポートモジュール28へクレジットを割当てることができる。特定の実施例では、ポートモジュール28が第1クレジットを使用するときには、ポートモジュール28は、ポートモジュール28が第1クレジットを使用していることを中央エージェント52に通知し、そして、ポートモジュール28が第1クレジットを使用していることを中央エージェント52に通知するポートモジュール28に応じて、しかし、ポートモジュール28により使用されているブロック56の数が適用可能な限度に合わない又は超えている場合にのみ、中央エージェント52は第2クレジットを第1クレジットと置き換えるようにポートモジュール28へ割当る。ポートモジュール28により使用されているブロック56への参照は、パケットがポートモジュール28から書き込まれている及びそれからパケットの全ての指定されたポートモジュール28がパケットを読み出していない、ブロック56を含む。適用可能な限度まで、ポートモジュール28により使用されるクレジットを、置き換えることにより、ポートモジュール28へ有効なクレジットの数は、比較的一定に保たれ、そして、ポートモジュール28で負荷状態が上昇する場合には、更なるブロック56が、ポートモジュール28での負荷状態の増加に応じてポートモジュール28へ供給されることが可能である。限度はポートモジュール28により使用されるブロックの数に適用されることが可能であり、これは、ポートモジュール28が多すぎるブロック56を使用しそれにより、多すぎる共有されたメモリ資源を使用することを防止する。限度は、クレジットのプール内のクレジットの数に基づいて動的に制御されうる。クレジットのプール内のクレジットの数が減少する場合には、限度も減少する。限度の計算とクレジットがポートモジュール28に割当てられるそれに従った処理は、スイッチコア26を通してパケットのクリティカルパスから発生し、これは、スイッチコア26の交換速度を増加する。
タグメモリ50内のリンクされたリストは、ポートモジュール28に割当てられうる次のクレジットを決定するために中央エージェント52により使用されることが可能である。リンクされたリストの要素は、順にクレジットのプール内のクレジットに対応するブロック56に対応するタグメモリ50内のエントリを含む。例として、クレジットのプール内の4つのクレジットを考える。第1クレジットは第1ブロック56に対応し、第2クレジットは第2ブロック56に対応し、第3クレジットは第3ブロック56に対応し、そして、第4クレジットは第4ブロック56に対応する。第1ブロック56に対応するタグメモリ50内の第1エントリは第2ブロック56へのポインタを有し、第2ブロック56に対応するタグメモリ50内の第2エントリは第3ブロック56へのポインタを有し、そして、第3ブロック56に対応するタグメモリ50内の第3エントリは第4ブロック56へのポインタを有する。中央エージェント52は、第1クレジットをポートモジュール28に割当て、中央エージェント52は第1クレジットをポートモジュール28に割当てながら、ポートモジュール28に割当てる次のクレジットを決定するために第1エントリ内のポインタを使用する。ポインタは、中央エージェント52に第2ブロック56を示し、そして、中央エージェント52がポートモジュール28への第1クレジットの割当てを終了したときに、中央エージェント52はポートモジュール28へ第2クレジットを割当てる。中央エージェント52は第2クレジットをポートモジュール28に割当てながら、中央エージェント52はポートモジュール28に割当てる次のクレジットを決定するために第2エントリ内のポインタを使用する。ポインタは、中央エージェント52に第3ブロック56を示し、そして、中央エージェント52がポートモジュール28への第2クレジットの割当てを終了したときに、中央エージェントはポートモジュール28へ第3クレジットを割当てる。中央エージェント52は第3クレジットをポートモジュール28に割当てながら、中央エージェント52はポートモジュール28に割当てる次のクレジットを決定するために第3エントリ内のポインタを使用する。ポインタは、中央エージェント52に第4ブロック56を示し、そして、中央エージェント52がポートモジュール28への第3クレジットの割当てを終了したときに、中央エージェントはポートモジュール28へ第4クレジットを割当てる。
ブロック56に対応するクレジットがクレジットのプールに戻されたときに、ブロック56に対応するタグメモリ50内のエントリは、ポートモジュール28に割当てる次のクレジットを決定するために中央エージェント52が使用しているリンクされたリストの最後に加えられる。例として、上述のリンクされたリストを考える。第4のエントリがリンクされたリストの最後の要素である場合には、第5ブロック56に対応する第5クレジットがクレジットのプールに追加されたときに、第4エントリは、第5ブロック56に対応するタグメモリ50内の第5エントリへのポインタを含めるように修正されうる。タグメモリ50内のエントリは各々が、ストリームメモリ48のブロック56に対応し、ブロック56へ指すポインタもタグメモリ50内のエントリを指す。
ポートモジュール28が入力するパケットを受信するときには、ポートモジュール28は、ストリームメモリ48へパケットを書き込むために十分なクレジットがポートモジュール28に有効かどうかを決定する。特定の実施例では、ストリームメモリ48へパケットを書き込むために十分なクレジットがポートモジュール28に有効な場合には、ポートモジュール28は1つ又はそれ以上のクレジットを使用して、ストリームメモリ48へパケットを書き込む。特定の実施例では、ストリームメモリ48へパケットを書き込むために十分なクレジットがポートモジュール28に有効でない場合には、ポートモジュール28は、パケットを入力バッファに書き込みそして、後に、ストリームメモリ48へパケットを書き込むために十分なクレジットがポートモジュール28に有効になったときに、1つ又はそれ以上のクレジットを使用して、ストリームメモリ48へパケットを書き込む。入力バッファにパケットを書き込むポートモジュール28の代わりとして、ポートモジュール28はパケットを中断することが可能である。特定の実施例では、ストリームメモリ48へパケットの一部のみを書き込むために十分なクレジットがポートモジュール28に有効な場合には、ポートモジュール28は1つ又はそれ以上のクレジットを使用して、ストリームメモリ48へ書き込まれるべきパケットの一部をストリームメモリ48に書き込むことができ、そして、パケットの1つ又はそれ以上の他の部分を入力バッファに書き込むことができる。後に、ストリームメモリ48へパケットの1つ又はそれ以上の他の部分を書き込むために十分なクレジットがポートモジュール28に有効になったときに、ポートモジュール28は、1つ又はそれ以上のクレジットを使用して、ストリームメモリ48へパケットの1つ又はそれ以上の他の部分を書き込むことができる。特定の実施例では、カットスルー転送のような、遅延されたカットスルー転送が、記憶及び転送技術の上の(減少された待ち時間、減少されたメモリ要求、及び増加されたスループットのような)1つ又はそれ以上の利点を提供する。ストリームメモリ48へパケットを書き込むために十分なクレジットがポートモジュール28に有効かどうかを決定するポートモジュール28への参照は、ストリームメモリ48へ全体のパケットを書き込むために、ストリームメモリ48へパケットの受信された部分のみを書き込むために又は、ストリームメモリ48へパケットの少なくとも一部分を書き込むために、十分なクレジットがポートモジュール28に有効どうかを決定するポートモジュール28を含む。
特定の実施例では、全体のパケッが受信されるまで入力パケットの長さを知ることができない。これらの実施例では、(標準の適用可能なセットに従った)最大パケットサイズが、ストリームメモリ48へポートモジュール28により受信された入力パケットを書き込むために十分なクレジットがポートモジュール28に有効かどうかを決定するのに使用されることが可能である。電気電子工学会(IEEE)により発行された標準のセットに従って、イーサネット(登録商標)フレームの最大サイズは1500バイトである。標準のデファクトのセットに従って、イーサネット(登録商標)フレームの最大サイズは9000バイトである。例としてそして限定しないとして、入力パケットの一部のみを受信したポートモジュール28を考える。ポートモジュール28は、ストリームメモリ48へ全体のパケットを書き込むために十分なクレジットがポートモジュール28に有効かどうかを決定するのに、(標準の適用可能なセットに従った)最大パケットサイズを使用する。ポートモジュール28は、最大パケットサイズとポートモジュール28に有効なクレジットの数を比較することにより、この決定を行うことが可能である。ストリームメモリ48へ全体のパケットを書き込むために十分なクレジットがポートモジュール28に有効な場合には、ポートモジュール28は、1つ又はそれ以上のクレジットを使用してストリームメモリ48へパケットの受信された部分を書き込むことができそして、ポートモジュール28がパケットの1つ又はそれ以上の他の部分を受信したときに、1つ又はそれ以上のクレジットを使用してストリームメモリ48へパケットの1つ又はそれ以上の他の部分を書き込むことができる。
ポートモジュール28は、カウンタを使用してポートモジュール28に有効なクレジットの数を監視できる。中央エージェント52が、クレジットをポートモジュール28に割当てるときに、ポートモジュール28はある量だけカウンタを増加しそして、ポートモジュール28がクレジットを使用するときに、ポートモジュール28はある量だけカウンタを減じる。カウンタの現在の値は、ポートモジュール28に有効なクレジットの現在の数を示し、そして、ポートモジュール28は、ポートモジュール28からストリームメモリ48へパケットを書き込むために十分なクレジットがポートモジュール28に有効かどうかを決定するために、カウンタを使用できる。中央エージェント52も、カウンタを使用してポートモジュール28に有効なクレジットの数を監視できる。中央エージェント52が、クレジットをポートモジュール28に割当てるときに、中央エージェント52はある量だけカウンタを増加しそして、ポートモジュール28がクレジットを使用したことを、ポートモジュール28が中央エージェント52に通知するときに、中央エージェント52は、ある量だけカウンタを減じる。カウンタの現在の値は、ポートモジュール28に有効なクレジットの現在の数を示し、そして、中央エージェント52は、ポートモジュール28へ1つ又はそれ以上のクレジットを割当てるかどうかを決定するために、カウンタを使用できる。中央エージェント52は、カウンタを使用しているポートモジュール28により使用されているブロック56の数も監視できる。ポートモジュール28が中央エージェント52へ、ポートモジュール28がブロック56へ書き込んだことを通知するときには、中央エージェントは、ある量だけカウンタを増加しそして、ポートモジュール28が書き込んだブロック56が解放されそしてブロック56に対応するクレジットがクレジットのプールに戻されたときに、中央エージェントはある量だけカウンタを減じる。
ポートモジュール28へ有効なクレジットの数は一定に保たれ、そして、ポートモジュール28により使用されているブロック56の数は制限される。制限は、ポートモジュール28、1つ又はそれ以上の他のポートモジュール28又は、両方での負荷状態の変化に応じて変化される。特定の実施例では、ポートモジュール28により使用されているブロック56の数は、クレジットのプール内のクレジットの数の関数である動的なしきい値に従って、制限される。アクティブなポートモジュール28は、特定の実施例では、1つ又はそれ以上のブロック56を使用しているポートモジュール28を含む。ブロック56を使用しているポートモジュール28への参照は、ストリームメモリ48からパケットの全ての指定されたポートモジュール28へ読み出しされてないストリームメモリ48へ少なくとも1つのパケットを書き込んだポートモジュール28を含む。動的なしきい値は、以下の式を使用して計算されたクレジットのプール内のクレジットの数の一部分を含むことが出き、αはアクティブなポートモジュール28の数に等しくそしてρはパラメータであり:
クレジットのプール内のクレジットの数は、各々がポートモジュール28により使用されているブロック56の数が、上述の動的なしきい値を含みうる、適用可能な限度を超える場合には、中央エージェント52がポートモジュール28へクレジットを割当てることを避けるために確保されうる。クレジットのプール内の1つ又はそれ以上のクレジットを確保することは、アクティブであるポートモジュール28の数の変化に関連する変化期間中のクッションを提供できる。確保されたクレジットの一部分は、以下の式を使用して計算され、αはアクティブなポートモジュール28の数に等しくそしてρはパラメータであり:
上述の式に従って、1つのポートモジュール28がアクティブで、ρが2の場合には、中央エージェント52はクレジットの3分の1を確保し、そして、ポートモジュール28へクレジットの3分の2を割当て;2つのポートモジュール28がアクティブで、ρが1の場合には、中央エージェント52はクレジットの3分の1を確保し、そして、アクティブである各ポートモジュール28へクレジットの3分の1を割当て;12つのポートモジュール28がアクティブで、ρが0.5の場合には、中央エージェント52はクレジットの14分の2を確保し、そして、アクティブである各ポートモジュール28へクレジットの14分の1を割当てる。特定の限度が、ポートモジュール28により使用されているブロック56の数に適用されているように記載されているが、本発明は、ポートモジュール28により使用されているブロック56の数に適用される任意の適する限度を考慮する。
第1ポートモジュール28がストリームメモリ48にパケットを書き込むときには、第1ポートモジュール28は、パケットの指定されたポートモジュール28である1つ又はそれ以上の第2ポートモジュール28を識別するためにルーティングモジュール54が使用できるパケットのヘッダからの情報(1つ又はそれ以上の宛先アドレスなど)をルーティングモジュール54へ通信できる。第1ポートモジュール28は、ストリームメモリ48からパケットを読むために第2ポートモジュール28により共に使用されるパケットが書き込まれた第1ブロック56のアドレスとオフセットをも、ルーティングモジュール54へ通信できる。ルーティングモジュール54は、1つ又はそれ以上のルーティングテーブルとパケットのヘッダからの情報を使用して第2ポートモジュール28を識別できそして、第2ポートモジュール28の識別後に、第1ブロック56のアドレスとオフセットを各第2ポートモジュール28へ通信し、これは、以下に更に完全に記載するように、第2ポートモジュール28が、出力キューへ追加されることが可能である。
中央エージェント52は、クレジットに対応するブロック56に書き込まれたパケットの全ての指定されたポートモジュール28がブロック56から読み出した場合にのみ、クレジットをクレジットのプールへ戻す。例として、ブロック56へ書き込まれそして2つの指定されたポートモジュール28を有するパケットを考える。第1の指定されたポートモジュール28は、ブロック56から読み出しそして、中央エージェント52へ、第1の指定されたポートモジュール28がブロック56から読み出したことを通知する。第2ポートモジュール28がブロック56からまだ読み出しておらず、そして、第2の指定されたポートモジュール28がブロック56から読み出したことを中央エージェント52へ通知していない場合には、中央エージェント52は、第1ポートモジュール28からの通知に応じてクレジットのプールへブロック56に対応するクレジットを戻さない。後に、第2の指定されたポートモジュール28がブロック56から読み出しそして、第2の指定されたポートモジュール28がブロック56から読み出したことを中央エージェント52へ通知する。第1ポートモジュール28は、すでにブロック56から読み出しそして、中央エージェント52へ、第1の指定されたポートモジュール28がブロック56から読み出したことを通知しているので、中央エージェント52は、第2ポートモジュール28からの通知に応じてクレジットのプールへブロック56に対応するクレジットを戻す。
パケットの全ての指定されたポートモジュール28が、パケットが書き込まれたブロック56から読み出されたかどうかを決定するために、中央エージェント52はビットベクトルを使用する。ビットベクトルは、各々がポートモジュール28に対応しそして、ポートモジュール28がブロック56から読み出したかを示す、2つ又はそれ以上の要素を含む。ストリームメモリ48へパケットが書き込まれるときには、中央エージェント52は、ビットベクトルの要素を、スイッチコア26のどのポートモジュール28がそのパケットのポートモジュール28に指定されているかを示すために設定し、そして、指定されたポートモジュール28がストリームメモリ48からパケットを読むにつれて、中央エージェント52はビットベクトルの要素をクリアする。
例として、6要素を含むビットベクトルを考える。第1要素は第1ポートモジュール28に対応し、第2要素は第2ポートモジュール28に対応し、第3要素は第3ポートモジュール28に対応し、第4要素は第4ポートモジュール28に対応し、第5要素は第5ポートモジュール28に対応し、そして、第6要素は第6ポートモジュール28に対応する。パケットは、ストリームメモリ48のブロック56に書き込まれ、第3ポートモジュール28、第4ポートモジュール28、及び第6ポートモジュール28は全てパケットの指定されたポートモジュール28である。第3ポートモジュール28に対応するビットベクトルの第3要素は、第3ポートモジュール28がパケットの指定されたポートモジュール28であることを示すために設定され、第4ポートモジュール28に対応するビットベクトルの第4要素は、第4ポートモジュール28がパケットの指定されたポートモジュール28であることを示すために設定され、そして、第6ポートモジュール28に対応するビットベクトルの第6要素は、第6ポートモジュール28がパケットの指定されたポートモジュール28であることを示すために設定される。ビットベクトルの第1要素、ビットベクトルの第2要素、及びビットベクトルの第5要素は、全てクリアされ、第1ポートモジュール、第2ポートモジュール28及び第5ポートモジュール28はそれぞれ指定されたポートモジュール28ではないことを示す。
第3ポートモジュール28はブロック56から最初に読み出しそして、第3ポートモジュール28がブロック56から読み出すときに、ビットベクトルの第3要素がクリアされる。ビットベクトルは、第4ポートモジュール28と第6ポートモジュール28がまだブロック56からパケットを読み出していないことを示す。第6ポートモジュール28はブロック56から次に読み出しそして、第6ポートモジュール28がブロック56から読み出すときに、ビットベクトルの第6要素がクリアされる。ビットベクトルは、第4ポートモジュール28がまだブロック56からパケットを読み出していないことを示す。第4ポートモジュール28はブロック56から最後に読み出しそして、第4ポートモジュール28がブロック56から読み出すときに、第4ポートモジュール28はブロック56から読み出す最後に指定されたポートモジュール28であるので、ブロック56に対応するクレジットがクレジットのプールに戻される。
ビットベクトルはマルチキャスト状態テーブルのエントリに記憶される。マルチキャスト状態テーブルは、複数のエントリを有すことができ、その少なくとも幾つかは各々が、ストリームメモリ48のブロック56に対応する。ストリームメモリ48の各ブロック56は、タグメモリ50内に対応するエントリを有する。単一の及び複数のビット誤りを検出するための誤り検出符号(EDC)もマルチキャスト状態テーブルのエントリにビットベクトルと共に記憶されうる。パケットがストリームメモリ48に書き込まれるときには、パケットが書き込まれた第1ブロック56に対応するマルチキャスト状態テーブル内のエントリ内のビットベクトルの要素は、上述のように、ポートモジュール28はそのパケットの指定されたポートモジュール28であることを示すように設定される。パケットが書き込まれた第1ブロック56に対応するマルチキャスト状態テーブル内のエントリ内のビットベクトルの要素のみが、設定される。指定されたポートモジュール28が第1ブロック56から読み出すときには、指定されたポートモジュール28に対応する要素は、指定されたポートモジュール28がストリームメモリ48からパケットの読み出しを開始したことを示すためにクリアされる。最後に指定されたポートモジュール28が第1ブロック56から読み出すときには、中央エージェント52は第1ブロック56に対応するクレジットをクレジットのプールへ戻す。中央エージェント52は、最後に指定されたポートモジュール28が後続のブロック56から読み出すので、パケットが書き込まれた後続のブロック56に対応するクレジットをクレジットのプールへ戻す。
例として、ストリームメモリ48に書き込まれたパケットを考える。パケットの第1部分が第1ブロック56に書き込まれ、そして、パケットの第2と最終部分が第2ブロック56に書き込まれる。第1クレジットは、第1ブロック56に対応し、第2クレジットは、第2ブロック56に対応する。スイッチコア26の第5ポートモジュール28と第7ポートモジュール28は、パケットの指定されたポートモジュール28である。マルチキャスト状態テーブルの第1エントリは、第1ブロック56に対応し、そして、マルチキャスト状態テーブルの第2エントリは、第2ブロック56に対応する。中央エージェント52は、それぞれ第5ポートモジュール28と第7ポートモジュール28はそのパケットの指定されたポートモジュール28であることを示すために、第1エントリのビットベクトルの第5要素と第7要素を設定する。中央エージェント52は、第2エントリ内のビットベクトルのどの要素も設定する必要はない。第7ポートモジュール28は、第1ブロック56から読み出しそして、中央エージェント52に第7ポートモジュール28が第1ブロック56から読み出したことを通知する。中央エージェント52は、第1エントリのビットベクトルから、第7ポートモジュール28はストリームメモリ48からパケットの読み出しを開始する最後に指定されたポートモジュール28ではないことを決定しそして、第1エントリ内のビットベクトルの第7要素をクリアし、第7ポートモジュール28はストリームメモリ48からパケットの読み出しを開始されることを示す。第7ポートモジュール28は、ストリームメモリ48からパケットの読み出しを開始する最後に指定されたポートモジュール28ではないので、中央エージェントは第1クレジットをクレジットのプールに戻さない。
第5ポートモジュール28は、第1ポートモジュール28から次に読み出しそして、中央エージェント52に第5ポートモジュール28が第1ブロック56から読み出したことを通知する。中央エージェント52は、第1エントリのビットベクトルから、第5ポートモジュール28はストリームメモリ48からパケットの読み出しを開始する最後に指定されたポートモジュール28ではあることを決定し、そして、第5ポートモジュール28はストリームメモリ48からパケットの読み出しを開始する最後に指定されたポートモジュール28ではあるので、第1クレジットをクレジットのプールに戻す。第7ポートモジュール28は、そして、第2ポートモジュール28から読み出しそして、中央エージェント52に第7ポートモジュール28が第2ポートモジュール28から読み出したことを通知する。中央エージェントは、第1エントリのビットベクトルから、第7ポートモジュール28はストリームメモリ48からパケットの読み出しを開始する最後に指定されたポートモジュール28ではないことを決定しそして、第7ポートモジュール28は、ストリームメモリ48からパケットの読み出しを開始する最後に指定されたポートモジュール28ではないので、第2クレジットをクレジットのプールに戻さない。第5ポートモジュール28は、第2ポートモジュール28から次に読み出しそして、中央エージェント52に第5ポートモジュール28が第2ブロック56から読み出したことを通知する。中央エージェント52は、第1エントリのビットベクトルから、第5ポートモジュール28はストリームメモリ48からパケットの読み出しを開始する最後に指定されたポートモジュール28ではあることを決定し、そして、第5ポートモジュール28はストリームメモリ48からパケットの読み出しを開始する最後に指定されたポートモジュール28であるので、第2クレジットをクレジットのプールに戻す。
上述の例では、第5ポートモジュール28が第7ポートモジュール28に追いつきそして、第7ポートモジュール28が第2ブロック56から読み出す前に第2ブロック56から読み出した場合には、第2クレジットは、第7ポートモジュール28が第2ブロック56から読み出す前にクレジットのプールへ戻されるであろう。第5ポートモジュール28が第7ポートモジュール28に追いつ可能性を減少させるために、第5ポートモジュール28と第7ポートモジュール28は、両方が、ほぼ同じ速度で、第1ブロック56と第2ブロック56から読み出すことができる。
また、上述の例では、第1クレジットが、クレジットのプールに戻された後に、ポートモジュール28に割当てられそして、第2ポートモジュール28が第2ブロック56から読み出す前に第1ブロック56を書き込むのに使用される場合には、第1エントリ内のビットベクトルは、中央エージェント52が、第5ポートモジュール28又は第7ポートモジュール28が、ストリームメモリ48からパケットの読み出しを開始する最後のポートモジュール28であるかどうかを決定できないように、上書きされる。第1エントリ内のビットベクトルが上書きされる可能性を減少させるために、上述のように、動的なしきい値が、ポートモジュール28に有効であるクレジットの数に適用される。動的なしきい値は、クレジットのプール内のクレジットの数が少なくなることを避けることができるので、パケットの全ての指定されたポートモジュール28は、ビットベクトルがパケットが書き込まれた第1ブロック56に対応するマルチキャスト状態テーブル内のエントリに上書きされる前に、ストリームメモリ48からパケットを読み出す十分な時間を有しない。
ポートモジュール28は、ポートモジュール28を通してスイッチコア26から通信するために、ストリームメモリ48へ書き込まれたパケットを待たせるのに使用される1つ又はそれ以上の出力キューを有することが可能である。パケットがストリームメモリ48へ書き込まれるときには、パケットはそのパケットの各指定されたポートモジュール28の出力キューに追加される。指定されたポートモジュール28の出力キューは、サービスの品質(QoS)のレベルとソースポートモジュール28の組合せに対応する。例として、3レベルのQoSを提供しそして入力論理と出力論理の両方を含む4つのポートモジュール28を有するスイッチコア26を考える。第1ポートモジュール28は9の出力キュー:第1レベルのQoSと第2ポートモジュール28に対応する第1出力キュー;第1レベルのQoSと第3ポートモジュール28に対応する第2出力キュー;第1レベルのQoSと第4ポートモジュール28に対応する第3出力キュー;第2レベルのQoSと第2ポートモジュール28に対応する第4出力キュー;第2レベルのQoSと第3ポートモジュール28に対応する第5出力キュー;第2レベルのQoSと第4ポートモジュール28に対応する第6出力キュー;第3レベルのQoSと第2ポートモジュール28に対応する第7出力キュー;第3レベルのQoSと第3ポートモジュール28に対応する第8出力キュー;第3レベルのQoSと第4ポートモジュール28に対応する第9出力キューを有する。(1)パケットが第2ポートモジュール28からストリームメモリ48に書き込まれ、(2)第1ポートモジュール28はそのパケットの指定されたポートモジュール28であり、そして(3)そのパケットのQoSのレベルは第1レベルのQoSである場合には、ストリームメモリ48に書き込まれたパケットは、第1ポートモジュール28の第1出力キューに追加される。(1)パケットが第3ポートモジュール28からストリームメモリ48に書き込まれ、(2)第1ポートモジュール28はそのパケットの指定されたポートモジュール28であり、そして(3)そのパケットのQoSのレベルは第2レベルのQoSである場合には、ストリームメモリ48に書き込まれたパケットは、第1ポートモジュール28の第5出力キューに追加される。(1)パケットが第4ポートモジュール28からストリームメモリ48に書き込まれ、(2)第1ポートモジュール28はそのパケットの指定されたポートモジュール28であり、そして(3)そのパケットのQoSのレベルは第3レベルのQoSである場合には、ストリームメモリ48に書き込まれたパケットは、第1ポートモジュール28の第9出力キューに追加される。
第2ポートモジュール28は9の出力キュー:第1レベルのQoSと第1ポートモジュール28に対応する第1出力キュー;第1レベルのQoSと第3ポートモジュール28に対応する第2出力キュー;第1レベルのQoSと第4ポートモジュール28に対応する第3出力キュー;第2レベルのQoSと第1ポートモジュール28に対応する第4出力キュー;第2レベルのQoSと第3ポートモジュール28に対応する第5出力キュー;第2レベルのQoSと第4ポートモジュール28に対応する第6出力キュー;第3レベルのQoSと第1ポートモジュール28に対応する第7出力キュー;第3レベルのQoSと第3ポートモジュール28に対応する第8出力キュー;第3レベルのQoSと第4ポートモジュール28に対応する第9出力キューを有する。(1)パケットが第1ポートモジュール28からストリームメモリ48に書き込まれ、(2)第2ポートモジュール28はそのパケットの指定されたポートモジュール28であり、そして(3)そのパケットのQoSのレベルは第1レベルのQoSである場合には、ストリームメモリ48に書き込まれたパケットは、第2ポートモジュール28の第1出力キューに追加される。(1)パケットが第3ポートモジュール28からストリームメモリ48に書き込まれ、(2)第2ポートモジュール28はそのパケットの指定されたポートモジュール28であり、そして(3)そのパケットのQoSのレベルは第2レベルのQoSである場合には、ストリームメモリ48に書き込まれたパケットは、第2ポートモジュール28の第5出力キューに追加される。(1)パケットが第4ポートモジュール28からストリームメモリ48に書き込まれ、(2)第2ポートモジュール28はそのパケットの指定されたポートモジュール28であり、そして(3)そのパケットのQoSのレベルは第3レベルのQoSである場合には、ストリームメモリ48に書き込まれたパケットは、第2ポートモジュール28の第9出力キューに追加される。
第3ポートモジュール28と第4ポートモジュール28は各々が、上述の第1ポートモジュール28の出力キューと第2ポートモジュール28の出力キューと同様な出力キューを有する。QoSは、伝送のレート、誤りのレート、又は、スイッチコア26を通るパケットの通信の他の面を含み、QoSへの参照は、適切なら、サービスのクラス(CoS)を含むことが可能である。第1ポートモジュール28の出力キューは、第2ポートモジュール28とQoSのレベルに対応するとして記載されているが、第1ポートモジュール28の出力キューは第2ポートモジュール28とQoSのレベルに必ずしも対応する必要はない。例として、特定の実施例では、第1ポートモジュール28の出力キューは、第2ポートモジュール28に対応しQoSのレベルに対応しない。
ポートモジュール28の出力キューは、ポートモジュール28のレジスタと、出力キューに1より多くのパケットがある場合には、以下に記載するように、ポートモジュール28のメモリ構造内の1つ又はそれ以上のエントリを含む。ポートモジュール28は、ストリームメモリ48から読み出されるべき次のパケットを決定するために、1つ又はそれ以上のレジスタと共に、ポートモジュール28が使用できる1つ又はそれ以上のリンクされたリストを有することが可能である。メモリ構造は、複数のエントリを有し、その少なくとも幾つかは各々が、ストリームメモリ48のブロック56に対応する。ストリームメモリ48の各ブロック56は、メモリ構造内に対応するエントリを有する。メモリ構造内のエントリは、メモリ構造内の他のエントリへのポインタを含み、リンクされたリストとなる。ポートモジュール28は、ポートモジュール28もストリームメモリ48から読み出されるべき次のパケットを決定するために使用できる、1つ又はそれ以上のレジスタを有することも可能である。レジスタは、書き込みポインタ、オフセット及びリードポインタを有する。書き込みポインタは、第1パケットが書き込まれた第1ブロック56を示し、オフセットは第1パケットが書き込まれた第1ワード58を示し、そして、読み出しポインタは、第2パケット(第1パケットと同じ又は第1パケットと異なるパケット)が書き込まれた、第1ブロック56を示す。メモリ構造内のエントリの各々がストリームメモリ48のブロック56に対応するので、ブロック56を示すポインタもメモリ構造内のエントリを示す。
ポートモジュール28は、オフセットを書き込むメモリ構造内の次のエントリを決定するために書き込みポインタを使用できる。ポートモジュール28は、ブロック56から読み出しを開始するブロック56のワード58を決定するためにオフセットを使用できる。ポートモジュール28は、ストリームメモリ48から読み出すべき次のパケットを決定するために読み出しポインタを使用できる。ポートモジュール28は、1より多くのパケットが出力キューにあるかどうかを決定するために、書き込みポインタと読み出しポインタを使用できる。出力キューからでなくそして書き込みポインタと読み出しポインタが両方ともに同じブロック56を示す場合には、出力キューに1つのパケットのみが存在する。出力キューに1つのパケットのみが存在する場合には、ポートモジュール28はメモリ構造にアクセスすることなしに、ストリームメモリ48から読み出すべき次のパケットを決定しそして、ストリームメモリ48から次のパケットを読み出すことが可能である。
出力キューにパケットがないときに、第1パケットが出力キューに追加される場合には、(1)レジスタ内の書き込みポインタは第1パケットが書き込まれた第1ブロック56を示すように修正され、(2)オフセットは第1パケットが書き込まれた第1ワード58を示すように修正され、そして(3)読み出しポインタも第1パケットが書き込まれた第1ブロック56を示すように修正される。ポートモジュール28がストリームメモリ48から第1パケットを読み出す前に、第2パケットが出力キューに追加される場合には、(1)書き込みポインタは第2パケットが書き込まれた第1ブロック56を示すように修正され、(2)オフセットは第1パケットが書き込まれた第1ブロック56に対応するメモリ構造内の第1エントリに書き込まれそして、第2パケットが書き込まれた第1ワード58を示すように修正され、そして(3)第1エントリ内のポインタは第2パケットが書き込まれた第1ブロック56を示すように修正される。読み出しポインタは、第2パケットが出力キューに追加された後に、読み出しポインタはまだ第1パケットが書き込まれた第1ブロック56を示すように、変更されずに残る。以下に更に完全に説明するように、読み出しポインタは、ポートモジュール28がストリームメモリ48から出力キューのパケットを読むときに変更される。ポートモジュール28がストリームメモリ48から第1パケットと第2パケットを読む前に、第3パケットが、出力キューに追加される場合には、(1)書き込みポインタは第3パケットが書き込まれた第1ブロック56を示すように修正され、(2)オフセットは第2パケットが書き込まれた第1ブロック56に対応するメモリ構造内の第2エントリに書き込まれそして、第3パケットが書き込まれた第1ワード58を示すように修正され、そして(3)第2エントリ内のポインタは第3パケットが書き込まれた第1ブロック56を示すように修正される。読み出しポインタは、第3パケットが出力キューに追加された後に、読み出しポインタはまだ第1パケットが書き込まれた第1ブロック56を示すように、再び変更されずに残る。
ポートモジュール28は、ストリームメモリ48から読むべき次のパケットを決定するために、出力キューを使用する。例として、3パケットがある上述の出力キューを考える。レジスタでは、(1)書き込みポインタは第3パケットが書き込まれた第1ブロック56を示し、(2)オフセットは第3パケットが書き込まれた第1ワード58を示しそして、そして(3)読み出しポインタは第1パケットが書き込まれた第1ブロック56を示す。メモリ構造の第1エントリは、(1)第1パケットが書き込まれた第1ワード58を示すオフセットと、(2)第2パケットが書き込まれた第1ブロック56を示すポインタを有する。メモリ構造の第2エントリは、(1)第2パケットが書き込まれた第1ワード58を示すオフセットと、(2)第3パケットが書き込まれた第1ブロック56を示すポインタを有する。
ポートモジュール28は、読み出しポインタと書き込みポインタを比較しそして、比較から、出力キューに1より多くのパケットが存在することを決定する。ポートモジュール28はそして、ストリームメモリ48から読み出すべき次のパケットを決定するのに読み出しポインタを使用する。読み出しポインタは、ポートモジュール28へ第1パケットの第1ブロック56を示し、そして、出力キューに1より多くのパケットがあるので、ポートモジュール28は第1パケットが書き込まれた第1ワード58を示す第1エントリのオフセットにアクセスする。ポートモジュール28は、そして、第1パケットが書き込まれた第1ブロック56で開始する、第1エントリのオフセットを使用して、ストリームメモリ48から第1パケットを読み出す。第1パケットが1より多くのブロック56へ書き込まれた場合には、ポートモジュール28は、上述のように、メモリから第1パケットを読み出すためにタグメモリ50内のリンクされたリストを使用できる。
ポートモジュール28はストリームメモリ48から第1パケットを読み出しながら、ポートモジュール28は、第1エントリのポインタを読み出しポインタへコピーし、そして、読み出しポインタを書き込みポインタを比較し、そして、比較から、出力キューに1つより多くのパケットが存在することを決定する。ポートモジュール28は、そして、ストリームメモリ48から読み出す次のパケットを決定するために読み出しポインタを使用する。読み出しポインタは、ポートモジュール28に第2パケットの第1ブロック56を示し、そして、出力キューに1つより多くのパケットが存在するので、ポートモジュール28は、第2パケットが書き込まれた第1ワード58を示す第2エントリ内のオフセットにアクセスする。ポートモジュール28がストリームメモリ48からの第1パケットの読み出しを終了したときに、ポートモジュール28は、第2パケットが書き込まれた第1ブロック56から開始する、第2エントリのオフセットを使用して、ストリームメモリ48から第2パケットを読み出す。第2パケットが1より多くのブロック56に書き込まれた場合には、ポートモジュール28は、上述のように、メモリから第2パケットを読み出すために、タグメモリ50のリンクされたリストを使用できる。
ポートモジュール28がストリームメモリ48から第2パケットを読み出している間に、ポートモジュール28は、第2エントリ内のポインタを読み出しポインタへコピーし、読み出しポインタを書き込みポインタと比較し、そして、比較から、1つのパケットのみが出力キューにあることを決定する。ポートモジュール28は、ストリームメモリ48から読み出す次のパケットを決定するために読み出しポインタを使用する。読み出しポインタは、ポートモジュール28に第2パケットの第3ブロック56を示し、そして、1つのパケットのみが出力キューにあるので、ポートモジュール28は、第3パケットが書き込まれた第1ワード58を示すレジスタのオフセットにアクセスする。ポートモジュール28が、ストリームメモリ48からの第2パケットの読み出しを終了したときに、ポートモジュール28は、第3パケットが書き込まれた第1ブロック56で開始する、レジスタ内のオフセットを使用して、ストリームメモリ48から第3パケットを読み出す。第3パケットが1つより多くのブロック56に書き込まれた場合には、ポートモジュール28は、上述のように、メモリから、第3パケットを読み出すためにタグメモリ50のリンクされたリストを使用できる。
ポートモジュール28が、1つより多くの出力キューを有する場合には、出力キューの間の仲裁(アービトレーション)のためにアルゴリズムが使用される。複数の出力キューの間の仲裁は、ストリームメモリ48から読み出す次のパケットを決定するのに使用する次の出力キューを決定することを含むことが可能である。複数の出力キューの間の仲裁は、ストリームメモリ48から読み出す次のパケットを決定するために第2出力キューを使用する前に、ストリームメモリ48から読み出す第1出力キュー内に幾つのパケットがあるかを決定することも含むことが可能である。本発明は、複数の出力キュー間の仲裁のために適するアルゴリズムを考慮する。例であり及び限定するのではなく、ポートモジュール28の複数の出力キューの間の仲裁のためのアルゴリズムに従って、ポートモジュール28は、一連のラウンドで空ではない出力キューにアクセスする。1ラウンド内では、ポートモジュール28は、連続して予め定められた順序で出力キューをアクセスし、そして、ポートモジュール28が出力キューをアクセスするときに、ストリームメモリ48からの出力キュー内の1つ又はそれ以上のパケットを読む。ポートモジュール28が1ラウンドで出力キューから読み出すパケットの数は、ポートモジュール28が、同じラウンドで、ポートモジュール28の1つ又はそれ以上の他の出力キューの各々から読み出すパケットの数の同じであるか又は異なることが可能である。特定の実施例では、1ラウンドで出力キューから読み出され得るパケットの数は、データの量を定義する量値に基づいており、それに従って、より小さなパケットが出力キュー内にある場合には出力キューからより多くのパケットが読み出せ、そして、より大きなパケットが出力キュー内にある場合には出力キューからより少ないパケットが読み出せ、これは、ポートモジュール28の出力リンクの公平な共有を容易にする。
特定の実施例では、ポートモジュール38は、ストリームメモリ48への接続を使用する。これらの実施例では、ポートモジュール38は、ストリームメモリ48への接続を確立し、接続を使用してストリームメモリ48をアクセスし、そして、必要な場合には、接続を解放する。接続を使用してストリームメモリ48をアクセスするときには、ポートモジュール38は、他のポートモジュール38によるブロッキングを経験しない。特定の実施例では、書き込み動作のために、ポートモジュール38とストリームメモリ48の間に(且つ仲裁遅延なしで)、常に接続がある。書き込み動作は、一連のサイクルをわたる幾つかのステップを含む(その各々はスイッチコア26の1つ又はそれ以上のサイクルを有する)。例としてそして限定するのではなく、ストリームメモリ48は、1つ又はそれ以上の(書き込み動作のワードオフセットを示す)同期ビットをポートモジュール38へ通信し、そして、ポートモジュール38はストリームメモリ48に書き込みそして、ストリームメモリ48へ、書き込み動作のために、ストリームメモリ48の1つ又はそれ以上のブロック56の1つ又はそれ以上のアドレスを通信する。
(仲裁とアクセスがパイプラインにされている)読み出し動作も、一連のサイクルをわたる幾つかのステップを含む。例としてそして限定するのではなく、ポートモジュール38は、ストリームメモリ48からの読み出し動作のために接続を要求しそして、ワードオフセットをストリームメモリ48へ通信する。スイッチコア26の1つ又はそれ以上のクロックサイクルをわたる仲裁サイクルの後に、ストリームメモリ48は、要求に応じてポートモジュール38へ受取通知を通信し、その点で要求された接続が確立される。特定の実施例では、(要求されている接続と通信されている受取通知の間の遅延を含む)ゼロクロックサイクルの推定された最小仲裁遅延と、14クロックサイクルの推定された最大仲裁遅延がある。仲裁遅延は、スイッチコア26を通るデータのストリーム内にギャップを発生しそして、ポートモジュール38が経験する平均仲裁遅延は、スイッチコア26により経験される負荷が増加するにつれて増加しがちである。ポートモジュール38は、受取通知を受信した後に、ポートモジュール38は、ストリームメモリ48へ読み出し動作のためにストリームメモリ48のブロック56の1つ又はそれ以上のアドレスを通信し、そして、1つ又はそれ以上のサイクルの後に、ストリームメモリ48はそのアドレスのデータをポートモジュール38へ通信する。ストリームメモリ48は、ポートモジュール38がストリームメモリ48へ読み出し動作の全てのアドレスを通信する前に、データの通信を開始できる。ポートモジュール38がストリームメモリ48へ読み出し動作の全てのアドレスを通信したときには、ポートモジュール38は接続を解放し、そして、特定の実施例では、おそらく同じサイクル内で、他の接続を要求する。ストリームメモリ30への書き込み動作よりもストリームメモリ30からの多くの読み出し動作は、時間の期間中にスケジュールされる。例でありそして限定するのではなく、同じ時間の期間をわたる書き込み動作よりも、2倍の多くの読み出し動作が、時間の期間をわたりスケジュールされる。他の例では、同じ時間の期間をわたる書き込み動作よりも、3倍の多くの読み出し動作が、時間の期間を渡りスケジュールされる。
特定の実施例では、ストリームメモリ48は、互いに並列に使用される幾つかのスタティックランダムアクセスメモリ(SRAM)を含み、ストリームメモリ48のSRAM装置へのアクセスは、適切なインターリービング技術を使用してスケジュールされる。本発明は、1RW(または単一ポート)SRAM装置、マルチポート及びマルチビットSRAM装置又は、他のSRAM装置を考慮するが、1RW SRAM装置は、より大きな密度、柔軟性、及びデータのストリームへのアクセスのための少ない配線を提供する。スイッチコア26が、Nのポートモジュール38と、各々がMビットを有するストリームメモリ48とポートモジュール38の間のリンクを有する場合には、ストリームメモリ48は、特定の実施例では2*Mビット幅のデータ経路を有する1RW SRAM装置の2*Nのインスタンスを有する。例としてそして限定するのではなく、スイッチコア26が、12のポートモジュール38とポートモジュール38を各々が36ビットを有するストリームメモリ48に結合するリンクを有する場合には、ストリームメモリ48は、72ビット幅のデータ経路を有する1RW SRAM装置の24のインスタンスを有する。SRAM装置のインスタンスの数とデータ経路の幅は、以下の観測に基づいている:(1)ポートモジュール38の合計の帯域幅は、読み出し動作については秒当りN*Mビット及び書き込み動作については秒当りN*Mビットであり、そして、ストリームメモリ48の合計の帯域幅は、秒当り4*N*Mビットであり;(2)ストリームメモリ48からの及びそこへの読み出し動作と書き込み動作は、秒当りN*Mビットが書き込み動作について保存されそして、秒当り3*N*Mビットが読み出し動作について保存されるように、スケジュールされ;(3)書き込み動作についてよりも読み出し動作について2から3倍の帯域幅を提供することはスイッチコア26の仲裁遅延を減少させる。ストリームメモリ48はSRAM装置を含むように記載されているが、本発明は、任意の適するメモリ装置を含むストリームメモリ48を考慮する。
特定の実施例では、交換構造34aと交換構造34bを有する多段相互接続ネットワーク(MIN)が、ストリームメモリ48の全SRAM装置とスイッチコアの全ポートモジュール38の間の接続を提供するために使用される。MINは、幾つかの交換ユニット40と以下に完全に記載するように、バンク交換ユニット42を含む、(ストリームメモリ48のSRAM装置が組織化される)幾つかのメモリバンク44を有する階層構造を有する。図4に示されているストリームメモリ48のMINは、4つの交換ユニット40と3つのメモリバンク44を有する。ストリームメモリ48は、特定の数の交換ユニット40と特定の数のメモリバンク44を有するように記載され且つ示されているが、特定の構成では、本発明は、適する構成の、適する数の交換ユニット40と適する数のメモリバンク44を含むストリームメモリ48を考慮する。バンク交換ユニット42は、静的にスケジュールされた規則的な交換ユニットを含む。特定の実施例では、静的なスケジュールは、書き込み動作に使用され、そして、交換ユニット40でのオンデマンドスケジューリングは読み出しに使用される。ストリームメモリ48のMINは、ノンブロッキングであるが、しかし冗長性はない。
交換ユニット40は、ポートモジュール38からパケットの全部又は一部を受信しそして、受信されたデータをメモリバンク44へ交換できる。交換ユニット40を介しての書き込み動作は、任意の適する技術に従ってスケジュールされる。例として、交換ユニット40での静的なスケジューリングは、書き込み動作いついて使用される。図6は、6つのポートモジュール38により3つのメモリバンク44への書き込み動作のための、スイッチコア26の2つの交換ユニット40での例示のスケジューリングを示す。特定の実施例では、例としてそして限定するのではなく、交換ユニット40は、48サイクル毎に、初期状態へ戻る。48サイクルをわたり、各ポートモジュール38は、各メモリバンク44の(以下に更に完全に説明するように)各メモリユニット46へ書き込む機会を与えられる。交換ユニット40は、48サイクル毎に、初期状態へ戻るように記載されるが、本発明は、任意の適する数のサイクル後に、交換ユニット40が初期状態へ戻るように、考慮される。各交換ユニット40は、3つの状態を有しそして、16サイクル毎に状態を変更する。特定の数のサイクルをわたり特定の数の交換ユニット40での特定のスケジューリングが、特定の数のポートモジュール38による特定の数のメモリバンク44への書き込み動作について、記載されそして説明されているが、本発明は、任意の適する数のポートモジュール38による任意の適する数のメモリバンク44への書き込み動作について、任意の適する数のサイクルをわたる任意の適する数の交換ユニット40での任意の適するスケジュールを考慮する。
交換ユニット40は、メモリバンク44からパケットの全て又は一部を受信しそして受信されたデータをポートモジュール38へ交換できる。交換ユニット40を介しての読み出し動作は、適する技術に従って、スケジュールされる。例として、交換ユニット40でのオンデマンドスケジューリングが、読み出し動作について使用される。このスケジューリングは、1より多くのポートモジュール38が、同じサイクルで、メモリユニット46から読み出そうとするので、接続及び解放技術を含む。静的なスケジューリングが行われる場合には、特定の実施例では、ポートモジュール38は、特定のメモリバンク44の特定のメモリユニット46から読み出すために48サイクルまで待たなければならないであろう。この遅延を減少させるために、交換ユニット40に結合されたポートモジュール38間の交換ユニット40での仲裁が、読み出し動作について使用される。読み出し動作についての各メモリユニット46の有効性が監視されそして、特定のポートモジュール38は、他のポートモジュール38がメモリユニット46から読み出していない場合には、各4又は8サイクル毎に特定のメモリバンク44の特定のメモリユニット46から読み出すことが許される。
図7は、ポートモジュール38により、(メモリバンク44内の)24のメモリユニット46からの読み出し動作についてのスイッチコア26の交換ユニット40の例示のスケジューリングを示す。3つのポートモジュール38が交換ユニット40に結合され、そして各メモリユニット46は、ゼロから23の数によりスケジュール60で指定されている。読み出し動作は2サイクルにわたり、そして、スケジュール60に従って、サイクル0、2、4、6、8、10、12及び14で開始する。ポートモジュール38は、(1つの読み出し動作に2サイクルを含む)読み出しサイクルで、9つのメモリユニット46の任意の1つから読み出すことができる。サイクルゼロと1をわたる読み出しサイクルでは、ポートモジュール38は、交換ユニット40に結合された他のポートモジュール38がメモリユニット46から読み出していない場合には、2,4,6,10,12,14,18,20又は、22と指定されたメモリユニット46から読み出すことができ;サイクル2と3をわたる読み出しサイクルでは、ポートモジュール38は、交換ユニット40に結合された他のポートモジュール38がメモリユニット46から読み出していない場合には、3,5,7,11,13,15,19,21又は、23と指定されたメモリユニット46から読み出すことができ;サイクル4と5をわたる読み出しサイクルでは、ポートモジュール38は、交換ユニット40に結合された他のポートモジュール38がメモリユニット46から読み出していない場合には、0,4,6,8,12,14,16,20又は、22と指定されたメモリユニット46から読み出すことができる;等である。交換ユニット40で同様なスケジューリングが、メモリユニット38から交換ユニット40に結合された他のポートモジュール38への又はスイッチコア26内の他の交換ユニットへ結合された他のポートモジュール38への読み出し動作について使用される。特定の数のサイクルをわたり交換ユニット40での特定のスケジュールが、ポートモジュール38による特定の数のメモリユニット46からの読み出し動作について、記載されそして説明されているが、本発明は、ポートモジュール38による任意の適する数のメモリユニット46からの読み出し動作について、任意の適する数のサイクルをわたる交換ユニット40での任意の適するスケジュールを考慮する。
図8は、スイッチコア26の例示のメモリバンク44を示す。メモリバンク44は、1つ又はそれ以上のメモリユニット46と(静的にスケジュールされた、規則的な交換ユニットを含む)1つ又はそれ以上のメモリバンク交換ユニット42を有する。特定の実施例では、1つ又はそれ以上のメモリユニット46は共に、メモリ構造36を有する。特定の実施例では、メモリバンク44は、組み込み自己テスト(BIST)論理を有する。メモリバンク44は、ポートモジュール38により共有され、特定の実施例では、それは、ラインの先頭(head−of−line)のブロッキングを除去し(それによりスイッチコア26のスループットを増加し)、スイッチコア26がポートモジュール38での負荷状態の変化を更に効率的に扱うことを可能とし、そして、スイッチコア26に関連するメモリ要求を減少させる。特定の実施例では、例としてそして限定するのではなく、メモリバンク44は、(図8に示されたように)18のバンク交換ユニット42と8のメモリユニット46を有する。メモリバンク44は、特定の数のバンク交換ユニット42と特定の数のメモリユニット46を有するように記述されそして説明されているが、本発明は、任意の適する構成で、任意の適する数のバンク交換ユニット42と任意の適する数のメモリユニット46を有するメモリバンク44考慮する。メモリユニット46は1つ又はそれ以上のSRAM装置を有する。例としてそして限定するのではなく、ストリームメモリ48が(上述のように)SRAM装置の24のインスタンスを有する場合には、ストリームメモリ48は3つのメモリバンク44を有し、各メモリバンク44は8つのメモリユニット46を有しそして、各メモリユニット46は1つのSRAM装置を有する。特定の実施例では、ストリームメモリ48が論理的に1536のブロック56に分割されそして、24のメモリユニット46を有し、各メモリユニット46はストリームメモリ48の64のブロック56を有する。
メモリバンク44を交換ユニット40へ結合するリンクは、1つ又はそれ以上のリンクを有する。例として、特定の実施例では、メモリバンク44を交換ユニット40へ結合するリンクは、1つは書き込み動作のためでありそして4つは読み出し動作のために、5つのリンクを有し、これらの各リンクは36ビットを有する。図8に示されたメモリバンク44は、それぞれ、ul(上方左側)、dl(下方左側)、ur(上方右側)及びdr(下方右側)の、4つの交換ユニット40に結合される。例として、ulは交換ユニット40aを示し、dlは交換ユニット40bを示し、urは交換ユニット40cを示し、drは交換ユニット40dを示す。Wで示されたリンクは各々、交換ユニット40から任意のメモリユニット36への書き込み動作のためであり、Rで指定されたリンクは各々特定のメモリユニット46から交換ユニット40への読み出し動作のためである。特に、R01で指定されたリンクは、メモリユニット46aとメモリユニット46bからの読み出し動作のためであり;R23で指定されたリンクは、メモリユニット46cとメモリユニット46dからの読み出し動作のためであり;R45で指定されたリンクは、メモリユニット46eとメモリユニット46fからの読み出し動作のためであり;R67で指定されたリンクは、メモリユニット46gとメモリユニット46hからの読み出し動作のためである。−ulで示されたリンクはメモリバンク44を交換ユニット40aに結合し、−dlで示されたリンクはメモリバンク44を交換ユニット40bに結合し、−urで示されたリンクはメモリバンク44を交換ユニット40cに結合し、−drで示されたリンクはメモリバンク44を交換ユニット40dに結合する。従って、R01−ulで指定されたリンクはメモリユニット46aと46bから交換ユニット40aへの読み出し動作のためであり、そして、W−drで指定されたリンクは交換ユニット40dから任意のメモリユニット46への書き込み動作のためであり、R67−urで指定されたリンクはメモリユニット46gと46hから交換ユニット40cへの読み出し動作のためである、等である。交換ユニット40が(図4に示されたように)3つのポートモジュール38と3つのメモリバンク44に結合されている場合には、交換ユニット40は、書き込み動作のために3x3、54−ビットの交換ユニットと、読み出し動作のために12x3、36−ビットの交換ユニットを有する。
上述のように、バンク交換ユニット42は、静的にスケジュールされた、規則的な交換ユニットを有する。図9は、4つの交換ユニット40を介した2つのメモリユニット46への読み出し動作のためのメモリバンク44の3つのバンク交換ユニット42での例示のスケジューリングを示す。サイクルNでは、(メモリユニット46aと46bから交換ユニット40aへの読み出し動作のための)R01−ulと指定されたリンクは、メモリユニット46aから読み出すようにスケジュールされ、そして、(メモリユニット46aと46bから交換ユニット40cへの読み出し動作のための)R01−urと指定されたリンクは、メモリユニット46bから読み出すようにスケジュールされる。サイクルN+1では、(メモリユニット46aと46bから交換ユニット40bへの読み出し動作のための)R01−dlと指定されたリンクは、メモリユニット46aから読み出すようにスケジュールされ、そして、(メモリユニット46aと46bから交換ユニット40dへの読み出し動作のための)R01−drと指定されたリンクは、メモリユニット46bから読み出すようにスケジュールされる。サイクルN+2では、R01−ulと指定されたリンクは、メモリユニット46bから読み出すようにスケジュールされ、そして、R01−urと指定されたリンクは、メモリユニット46aから読み出すようにスケジュールされる。サイクルN+3では、R01−dlと指定されたリンクは、メモリユニット46bから読み出すようにスケジュールされ、そして、R01−drと指定されたリンクは、メモリユニット46aから読み出すようにスケジュールされる。同様なスケジューリングは、メモリユニット46cと46d、メモリユニット46eと46f、及びメモリユニット46gと46h、のようなメモリユニット46の他の対の読み出し動作について使用される。特定の数の交換ユニット40を介しての特定の数のメモリユニット46への読み出し動作のために特定の数のサイクルをわたり特定の数のバンク交換ユニット42での特定のスケジュールが記載され且つ説明されているが、本発明は、任意の適する数の交換ユニット40を介しての任意の適する数のメモリユニット46への読み出し動作にために任意の適する数のサイクルをわたり任意の適する数のバンク交換ユニット42での任意の適するスケジュールを考慮する。
図10は、4つの交換ユニット40を介してのメモリバンク44の8つのメモリユニット46への書き込み動作及びそれからの読み出し動作についての例示のスケジューリングを示す。各メモリユニット46は、ゼロから7の数によりスケジュール62内で指定され;メモリユニット46aは数ゼロにより指定され;メモリユニット46bは数1により指定され;メモリユニット46cは数2により指定され;メモリユニット46dは数3により指定され;メモリユニット46eは数4により指定され;メモリユニット46fは数5により指定され;メモリユニット46gは数6により指定され;メモリユニット46hは数7により指定される。スケジュール62の上方の半分64は、交換ユニット40aと40bをメモリバンク44へ結合するリンクに適用され、そして、スケジュール62の上方の半分66は、交換ユニット40cと40dをメモリバンク44へ結合するリンクに適用される。偶数サイクル(ゼロ,2,4,6,8,10,12及び14)に対応する列68は交換ユニット40aと40cをメモリバンク44へ結合するリンクに適用され、奇数サイクル(1,3,5,7,9,11,13及び15)に対応する列68は、交換ユニット40bと40dをメモリバンク44へ結合するリンクに適用される。行70はそれぞれ、交換ユニット40a,40b、40c、及び40dをメモリバンク44へ結合するリンクに対応する。領域72は、書き込み動作との衝突により読み出し動作が発生しない場合を示す。
スケジュール62に従って、サイクルゼロで、(交換ユニット40aを介しての書き込み動作のための)W−ulと指定されたリンクは、メモリユニット46aへの1つ又はそれ以上の書き込み動作に使用されることが可能であり;(交換ユニット40aを介してのメモリユニット46cと46dからの読み出し動作のための)R23−ulと指定されたリンクは、メモリユニット46cからの1つ又はそれ以上の読み出し動作に使用されることが可能であり;(交換ユニット40aを介してのメモリユニット46eと46fからの読み出し動作のための)R45−ulと指定されたリンクは、メモリユニット46eからの1つ又はそれ以上の読み出し動作に使用されることが可能であり;(交換ユニット40aを介してのメモリユニット46gと46hからの読み出し動作のための)R67−ulと指定されたリンクは、メモリユニット46gからの1つ又はそれ以上の読み出し動作に使用されることが可能であり;(交換ユニット40cを介しての書き込み動作のための)W−urと指定されたリンクは、メモリユニット46dへの1つ又はそれ以上の書き込み動作に使用されることが可能であり;(交換ユニット40cを介してのメモリユニット46cと46dからの読み出し動作のための)R01−urと指定されたリンクは、メモリユニット46bからの1つ又はそれ以上の読み出し動作に使用されることが可能であり;(交換ユニット40cを介してのメモリユニット46eと46fからの読み出し動作のための)R45−urと指定されたリンクは、メモリユニット46fからの1つ又はそれ以上の読み出し動作に使用されることが可能であり;(交換ユニット40cを介してのメモリユニット46gと46hからの読み出し動作のための)R67−urと指定されたリンクは、メモリユニット46hからの1つ又はそれ以上の読み出し動作に使用されることが可能である。
サイクル1で、(交換ユニット40bを介しての書き込み動作のための)W−dlと指定されたリンクは、メモリユニット46aへの1つ又はそれ以上の書き込み動作に使用されることが可能であり;(交換ユニット40bを介してのメモリユニット46cと46dからの読み出し動作のための)R23−dlと指定されたリンクは、メモリユニット46cからの1つ又はそれ以上の読み出し動作に使用されることが可能であり;(交換ユニット40bを介してのメモリユニット46eと46fからの読み出し動作のための)R45−dlと指定されたリンクは、メモリユニット46eからの1つ又はそれ以上の読み出し動作に使用されることが可能であり;(交換ユニット40bを介してのメモリユニット46gと46hからの読み出し動作のための)R67−dlと指定されたリンクは、メモリユニット46gからの1つ又はそれ以上の読み出し動作に使用されることが可能であり;(交換ユニット40dを介しての書き込み動作のための)W−drと指定されたリンクは、メモリユニット46dへの1つ又はそれ以上の書き込み動作に使用されることが可能であり;(交換ユニット40dを介してのメモリユニット46cと46dからの読み出し動作のための)R01−drと指定されたリンクは、メモリユニット46bからの1つ又はそれ以上の読み出し動作に使用されることが可能であり;(交換ユニット40dを介してのメモリユニット46eと46fからの読み出し動作のための)R45−drと指定されたリンクは、メモリユニット46fからの1つ又はそれ以上の読み出し動作に使用されることが可能であり;(交換ユニット40dを介してのメモリユニット46gと46hからの読み出し動作のための)R67−drと指定されたリンクは、メモリユニット46hからの1つ又はそれ以上の読み出し動作に使用されることが可能である。
サイクル2で、W−ulと指定されたリンクは、メモリユニット46bへの1つ又はそれ以上の書き込み動作に使用されることが可能であり;R23−ulと指定されたリンクは、メモリユニット46dからの1つ又はそれ以上の読み出し動作に使用されることが可能であり;R45−ulと指定されたリンクは、メモリユニット46fからの1つ又はそれ以上の読み出し動作に使用されることが可能であり;R67−ulと指定されたリンクは、メモリユニット46hからの1つ又はそれ以上の読み出し動作に使用されることが可能であり;W−urと指定されたリンクは、メモリユニット46eへの1つ又はそれ以上の書き込み動作に使用されることが可能であり;R01−urと指定されたリンクは、メモリユニット46aからの1つ又はそれ以上の読み出し動作に使用されることが可能であり;(交換ユニット40cを介してのメモリユニット46cと46dからの読み出し動作のための)R23−urと指定されたリンクは、メモリユニット46cからの1つ又はそれ以上の読み出し動作に使用されることが可能であり;R67−urと指定されたリンクは、メモリユニット46gからの1つ又はそれ以上の読み出し動作に使用されることが可能である。
この処理は、スケジュール62従って継続し、16サイクル後に、(サイクルゼロである)初期状態に達する。特定の数のサイクルをわたる特定の数の交換ユニット40を介してメモリバンク44の特定の数のメモリユニット46への書き込み動作及びそこからの読み出し動作についての特定のスケジュールが記載され且つ説明されたが、本発明は、任意の適する数のサイクルをわたる任意の適する数の交換ユニット40を介してメモリバンク44の任意の適する数のメモリユニット46への書き込み動作及びそこからの読み出し動作についての任意の適するスケジュールを考慮する。
図11は、スイッチコア26を使用するパケットを交換するための例示の方法を示す図である。この方法はステップ100で開始し、入力構造30がシステムエリアネットワーク10の第1構成要素から通信されたスイッチ22の第1ポート24からパケットを受信する。ステップ102で、入力構造30は、交換構造34aを介して1つ又はそれ以上のメモリ構造36へパケットを書き込む。ステップ104では、1つ又はそれ以上の出力構造32は、交換構造34bを介してメモリ構造36からパケットを読む。ステップ106では、出力構造32は、システムエリアネットワーク10の1つ又はそれ以上の第2構成要素へ通信するために、スイッチ22の1つ又はそれ以上のポート24へスイッチコア26からパケットを通信し、この点でこの方法は終了する。図11に示された方法の特定のステップが、特定の順序で発生するように、記載されそして説明されているが、本発明は、任意の適する順序で発生する上述の方法の任意の適するステップを考慮する。
本発明を幾つかの実施例で説明したが、種々の変更、代用、変形、代替及び修正が、当業者には暗示され、本発明は、添付の請求項の精神と範囲内に含まれる、そのような全ての変更、代用、変形、代替及び修正を包含することを意図している。
(付記)
(付記1)
高速交換環境でパケットを交換するシステムであって、
1つ又はそれ以上のメモリ構造を有し、
各々が、前記1つ又はそれ以上のメモリ構造の各々に書き込むように動作する複数の入力構造を有し、
前記入力構造の各々が、前記1つ又はそれ以上のメモリ構造の各々に書き込むように動作するように、前記入力構造を前記1つ又はそれ以上のメモリ構造へ接続する第1の交換構造を有し、
複数の出力構造を有し、前記構造は各々が、
前記1つ又はそれ以上のメモリ構造の各々から読み出し、
入力構造が通信ネットワークの第2構成要素からパケットの第2部分を受信する前に、前記通信ネットワークの第1構成要素へ前記パケットの第1部分を通信し、
前記出力構造の各々が前記1つ又はそれ以上のメモリ構造の各々から読み出すように動作し、第2交換構造が第1の数のリンクにより前記1つ又はそれ以上のメモリ構造へ結合され且つ第2の数のリンクにより前記複数の出力構造へ結合され、第1の数のリンクは第2の数のリンクの2倍又はそれ以上であるように、前記複数の出力構造を前記1つ又はそれ以上のメモリ構造へ結合する前記第2交換構造を有する、システム。
(付記2)
前記1つ又はそれ以上のメモリ構造の各々は、各々が1つ又はそれ以上のメモリ装置を有する1つ又はそれ以上のメモリユニットを有し、
ポートモジュールは、前記入力構造の1つと前記出力構造の1つを有し、
相互接続ネットワークは、第1及び第2交換構造を有し、前記相互接続ネットワークは1つ又はそれ以上の交換段階を有する階層構造を有する、付記1に記載のシステム。
(付記3)
前記相互接続ネットワークは、1つ又はそれ以上のメモリバンクと、複数のポートモジュールを前記1つ又はそれ以上のメモリバンクに結合する1つ又はそれ以上の交換ユニットを有する多段相互接続ネットワーク(MIN)を有し、前記1つ又はそれ以上のメモリバンクは各々が、1つ又はそれ以上のメモリユニットと1つ又はそれ以上のバンク交換ユニットを有する、付記2に記載のシステム。
(付記4)
各ポートモジュールは、書き込み動作のための第1リンクと読み出し動作のための第2リンクにより交換ユニットに結合され、
各交換ユニットは、書き込み動作のための第3リンクと読み出し動作のための4つの第4リンクにより各メモリバンクに結合される、付記3に記載のシステム。
(付記5)
前記MINは、3つのメモリバンクと4つの交換ユニットを有し、各メモリバンクは各々が1つのメモリ装置を有する8つのメモリユニットを有する、付記3に記載のシステム。
(付記6)
前記メモリ装置は、スタティックランダムアクセスメモリ(SRAM)装置を有する、付記2に記載のシステム。
(付記7)
前記SRAM装置は、読み出し動作のための1つのポートと書き込み動作のための1つのポートを有する、付記6に記載のシステム。
(付記8)
前記システムは単一の集積回路(IC)で具体化される、付記1に記載のシステム。
(付記9)
前記高速交換環境は、イーサネット(登録商標)交換環境、INFINIBAND交換環境、3GIO交換環境、HYPERTRANSPORT交換環境、RAPID IO交換環境、又は、専用のバックプレーン交換環境である、付記1に記載のシステム。
(付記10)
高速交換環境でパケットを交換する方法であって、
複数の入力構造の1つで、通信ネットワークの第1構成要素から通信されるパケットを受信し、
受信されたパケットを1つ又はそれ以上のメモリ構造の1つ又はそれ以上に書き込み、前記複数の入力構造は、前記入力構造の各々が前記1つ又はそれ以上のメモリ構造の各々に書き込むように動作するように、第1交換構造により前記1つ又はそれ以上のメモリ構造に結合され、
前記メモリ構造から複数の出力構造の1つ又はそれ以上へパケットを読み出し、前記複数の出力構造は、前記複数の出力構造の各々が前記1つ又はそれ以上のメモリ構造の各々から読み出すように動作するように、第2交換構造により前記1つ又はそれ以上のメモリ構造へ結合され、前記1つ又はそれ以上の出力構造の各々は、前記入力構造がパケットの第2部分を受信する前に、前記メモリ構造から前記パケットの第1部分を読み出すように動作し、第2交換構造は第1の数のリンクにより前記1つ又はそれ以上のメモリ構造へ結合され且つ第2の数のリンクにより前記複数の出力構造へ結合され、第1の数のリンクは第2の数のリンクの2倍又はそれ以上であり、
前記パケットを前記複数の出力構造の1つ又はそれ以上から前記通信ネットワークの1つ又はそれ以上の第2構成要素へ通信する、方法。
(付記11)
前記1つ又はそれ以上のメモリ構造の各々は、各々が1つ又はそれ以上のメモリ装置を有する1つ又はそれ以上のメモリユニットを有し、
ポートモジュールは、前記入力構造の1つと前記出力構造の1つを有し、
相互接続ネットワークは、第1及び第2交換構造を有し、前記相互接続ネットワークは1つ又はそれ以上の交換段階を有する階層構造を有する、付記10に記載の方法。
(付記12)
前記相互接続ネットワークは、1つ又はそれ以上のメモリバンクと、複数のポートモジュールを前記1つ又はそれ以上のメモリバンクに結合する1つ又はそれ以上の交換ユニットを有する多段相互接続ネットワーク(MIN)を有し、前記1つ又はそれ以上のメモリバンクは各々が、1つ又はそれ以上のメモリユニットと1つ又はそれ以上のバンク交換ユニットを有する、付記11に記載の方法。
(付記13)
各ポートモジュールは、書き込み動作のための第1リンクと読み出し動作のための第2リンクにより交換ユニットに結合され、
各交換ユニットは、書き込み動作のための第3リンクと読み出し動作のための4つの第4リンクにより各メモリバンクに結合される、付記12に記載の方法。
(付記14)
前記MINは、3つのメモリバンクと4つの交換ユニットを有し、各メモリバンクは各々が1つのメモリ装置を有する8つのメモリユニットを有する、付記12に記載の方法。
(付記15)
前記メモリ装置は、スタティックランダムアクセスメモリ(SRAM)装置を有する、付記11に記載の方法。
(付記16)
前記SRAM装置は、読み出し動作のための1つのポートと書き込み動作のための1つのポートを有する、付記15に記載の方法。
(付記17)
前記方法は単一の集積回路(IC)により実行される、付記10に記載の方法。
(付記18)
前記高速交換環境は、イーサネット(登録商標)交換環境、INFINIBAND交換環境、3GIO交換環境、HYPERTRANSPORT交換環境、RAPID IO交換環境、又は、専用のバックプレーン交換環境である、付記10に記載の方法。
(付記19)
イーサネット(登録商標)交換環境、INFINIBAND交換環境、3GIO交換環境、HYPERTRANSPORT交換環境、RAPID IO交換環境、又は、専用のバックプレーン交換環境を含む、高速交換環境でパケットを交換するシステムであって、前記システムは単一の集積回路(IC)で具体化され、且つ、
各々が1つ又はそれ以上のメモリユニットを有する、1つ又はそれ以上のメモリ構造を有し、前記メモリユニットの各々は、各々が読み出し動作のための1つのポートと書き込み動作のための1つのポートを有するスタティックランダムアクセスメモリ(SRAM)装置、を有する1つ又はそれ以上のメモリ装置を有し、
各々が前記1つ又はそれ以上のメモリ構造の各々に書き込みできる複数の入力構造を有し、
複数の出力構造を有し、前記構造は各々が、
前記1つ又はそれ以上のメモリ構造の各々から読み出し、
入力構造が通信ネットワークの第2構成要素からパケットの第2部分を受信する前に、前記通信ネットワークの第1構成要素へ前記パケットの第1部分を通信し、
前記入力構造と前記出力構造を前記1つ又はそれ以上のメモリ構造に結合するように動作する多段相互接続ネットワーク(MIN)を有し、前記MINは、1つ又はそれ以上のメモリバンクと、複数のポートモジュールを前記1つ又はそれ以上のメモリバンクに結合する1つ又はそれ以上の交換ユニットを有する1つ又はそれ以上の交換段階の階層構造を有し、前記1つ又はそれ以上のメモリバンクは各々が1つ又はそれ以上のメモリユニットと1つ又はそれ以上のバンク交換ユニットを有する、システム。
(付記20)
高速交換環境でパケットを交換するシステムであって、
複数の入力構造の1つで、通信ネットワークの第1構成要素から通信されるパケットを受信する手段を有し、
受信されたパケットを1つ又はそれ以上のメモリ構造の1つ又はそれ以上に書き込む手段を有し、前記複数の入力構造は、前記入力構造の各々が前記1つ又はそれ以上のメモリ構造の各々に書き込むように動作するように、第1交換構造により前記1つ又はそれ以上のメモリ構造に結合され、
前記メモリ構造から複数の出力構造の1つ又はそれ以上へパケットを読み出す手段を有し、前記複数の出力構造は、前記複数の出力構造の各々が前記1つ又はそれ以上のメモリ構造の各々から読み出すように動作するように、第2交換構造により前記1つ又はそれ以上のメモリ構造へ結合され、前記1つ又はそれ以上の出力構造の各々は、前記入力構造がパケットの第2部分を受信する前に、前記メモリ構造から前記パケットの第1部分を読み出すように動作し、第2交換構造は第1の数のリンクにより前記1つ又はそれ以上のメモリ構造へ結合され且つ第2の数のリンクにより前記複数の出力構造へ結合され、第1の数のリンクは第2の数のリンクの2倍又はそれ以上であり、
前記パケットを前記複数の出力構造の1つ又はそれ以上から前記通信ネットワークの1つ又はそれ以上の第2構成要素へ通信する手段を有する、システム。
(付記21)
高速交換環境でパケットを交換する論理であって、前記論理は媒体で具体化され、且つ、実行されたときに、
複数の入力構造の1つで、通信ネットワークの第1構成要素から通信されるパケットを受信し、
受信されたパケットを1つ又はそれ以上のメモリ構造の1つ又はそれ以上に書き込み、前記複数の入力構造は、前記入力構造の各々が前記1つ又はそれ以上のメモリ構造の各々に書き込むように動作するように、第1交換構造により前記1つ又はそれ以上のメモリ構造に結合され、
前記メモリ構造から複数の出力構造の1つ又はそれ以上へパケットを読み出し、前記複数の出力構造は、前記複数の出力構造の各々が前記1つ又はそれ以上のメモリ構造の各々から読み出すように動作するように、第2交換構造により前記1つ又はそれ以上のメモリ構造へ結合され、前記1つ又はそれ以上の出力構造の各々は、前記入力構造がパケットの第2部分を受信する前に、前記メモリ構造から前記パケットの第1部分を読み出すように動作し、第2交換構造は第1の数のリンクにより前記1つ又はそれ以上のメモリ構造へ結合され且つ第2の数のリンクにより前記複数の出力構造へ結合され、第1の数のリンクは第2の数のリンクの2倍又はそれ以上であり、
前記パケットを前記複数の出力構造の1つ又はそれ以上から前記通信ネットワークの1つ又はそれ以上の第2構成要素へ通信する、論理。