(57)【要約】２つの単一ポートメモリを使用するデュアルポートメモリエミュレーション方式をサポートするスイッチファブリック。格納されているパケットを取り出すための読出し動作が一方の単一ポートメモリに対してスケジュールされている場合、パケットを格納するための書込み動作は他方の単一ポートメモリ上で実施される。それぞれのパケットは、同時に１データワードずつメモリに格納され、またメモリに格納されている直前のデータワードを参照する前ポインタのリンクリストによって参照され、それぞれのデータワードに関するポインタ情報の書込みが単一のステップで行われるようになる。格納されたパケットを取り出す際に、それぞれのデータワードは、前ポインタのリンクリストに従って逆方向に取り出され、すなわちパケットの末尾が最初に取り出され、パケットの先頭が最後に取り出される。
2004536515.tif 000002
【特許請求の範囲】
【請求項１】
デュアルポートメモリエミュレーション方式によるスイッチファブリックであって、
入力端と
前記入力端に接続され、第１メモリユニットおよび第２メモリユニットを含むメモリとを備え、前記第１メモリユニットまたは前記第２メモリユニットが、第１パケットの少なくとも一部に対して第１メモリアクセス動作を実施するように選択され、前記選択が第２パケットの少なくとも一部に対して第２メモリアクセス動作を実施するように選択されるメモリユニットに基づいて行われるスイッチファブリック。
【請求項２】
前記第１メモリアクセス動作が書込み動作である請求項１に記載のスイッチファブリック。
【請求項３】
前記第２メモリアクセス動作が読出し動作である請求項１に記載のスイッチファブリック。
【請求項４】
前記第１メモリユニットが、前記第２メモリアクセス動作を実施するように選択される場合は、前記第２メモリユニットが、前記第１メモリアクセス動作を実施するように選択され、前記第２メモリユニットが、前記第２メモリアクセス動作を実施するように選択される場合は、前記第１メモリユニットが、前記第１メモリアクセス動作を実施するように選択される請求項１に記載のスイッチファブリック。
【請求項５】
それぞれのメモリユニットが、単一のデータインポートと、単一のアドレスポートと、単一のデータアウトポートとを含む単一ポートメモリユニットである請求項１に記載のスイッチファブリック。
【請求項６】
直前の第１メモリアクセス動作のためにアクセスされたメモリ位置への前参照を格納するバッファをさらに含む請求項１に記載のスイッチファブリック。
【請求項７】
前記第１メモリアクセス動作が前記バッファから取り出された前記前参照を格納することを特徴とする請求項６に記載のスイッチファブリック。
【請求項８】
前記前参照がＮＵＬＬポインタである請求項７に記載のスイッチファブリック。
【請求項９】
前記バッファが、前記第１メモリアクセス動作を実施するように選択された前記第１または第２メモリユニット上のメモリ位置への参照で更新される請求項６に記載のスイッチファブリック。
【請求項１０】
前記第１パケットが複数の第１データワードを含み、前記第２パケットが複数の第２データワードを含み、前記第１データワードが、前記第１メモリアクセス動作のための第１順序に従って選択され、前記第２データワードが、前記第２メモリアクセス動作のための第２順序に従って選択される請求項１に記載のスイッチファブリック。
【請求項１１】
前記第１順序が、前記第１パケットの末尾に付随するデータワードに対して適用される前に、前記第１パケットの先頭に付随するデータワードに対して適用され、前記第２順序が、前記第２パケットの先頭に付随するデータワードに対して適用される前に、前記第２パケットの末尾に付随するデータワードに対して適用される請求項１０に記載のスイッチファブリック。
【請求項１２】
デュアルポートメモリエミュレーション方式によるスイッチファブリックであって、
単一の第１入力ポートと、単一の第１アドレスポートと、単一の第１出力ポートとを含む第１の単一ポートメモリと、
単一の第２入力ポートと、単一の第２アドレスポートと、単一の第２出力ポートとを含む第２の単一ポートメモリとを備え、第２メモリアクセス動作が前記第１単一ポートメモリ上で実施される場合は、第１メモリアクセス動作が前記第２単一ポートメモリ上で実施され、また前記第２メモリアクセス動作が前記第２単一ポートメモリ上で実施される場合は、前記第１メモリアクセス動作が前記第１単一ポートメモリ上で実施されるスイッチファブリック。
【請求項１３】
前記第１メモリアクセス動作が書込み動作である請求項１２に記載のスイッチファブリック。
【請求項１４】
前記第２メモリアクセス動作が読出し動作である請求項１２に記載のスイッチファブリック。
【請求項１５】
前記第１および第２アクセス動作がノンブロッキングで同時に実施される請求項１２に記載のスイッチファブリック。
【請求項１６】
単一の第１入力ポート、単一の第１アドレスポート、および単一の第１出力ポートを含む第１単一ポートメモリと、単一の第２入力ポート、単一の第２アドレスポート、および単一の第２出力ポートを含む第２単一ポートメモリとを備えるスイッチファブリックにアクセスするための方法であって、
第２メモリアクセス動作のためのメモリアドレスを決定すること、
前記メモリアドレスが前記第１単一ポートメモリに関連する場合は、前記第２単一ポートメモリ上で第１メモリアクセス動作を実施すること、および
前記メモリアドレスが前記第２単一ポートメモリに関連する場合は、前記第１単一ポートメモリ上で前記第１メモリアクセス動作を実施することを含む方法。
【請求項１７】
前記第１メモリアクセス動作が書込み動作である請求項１６に記載の方法。
【請求項１８】
前記第２メモリアクセス動作が読出し動作である請求項１６に記載の方法。
【請求項１９】
前記第１および第２メモリアクセス動作がノンブロッキングで同時に実施される請求項１６に記載の方法。
【請求項２０】
直前の第１メモリアクセス動作中にアクセスされたメモリ位置への前参照をバッファに維持することをさらに含む請求項１６に記載の方法。
【請求項２１】
前記第１メモリアクセス動作中に、前記バッファから前記前参照を取り出すこと、および前記バッファから取り出された前記前参照を格納することをさらに含む請求項２０に記載の方法。
【請求項２２】
前記前参照がＮＵＬＬポインタである請求項２１に記載の方法。
【請求項２３】
前記バッファを、前記第１メモリアクセス動作を実施するように選択された前記第１または第２メモリユニット上のメモリ位置への参照で更新することをさらに含む請求項２０に記載の方法。
【請求項２４】
前記第１メモリアクセス動作が、複数の第１データワードを含む第１パケットに対して実施され、前記第２メモリアクセス動作が、複数の第２データワードを含む第２パケットに対して実施され、前記方法が、前記第１メモリアクセス動作のための第１順序に従って前記第１データワードを選択すること、および前記第２メモリアクセス動作のための第２順序に従って前記第２データワードを選択することをさらに含む請求項１６に記載の方法。
【請求項２５】
前記第１順序が、前記第１パケットの末尾に付随するデータワードに対して適用される前に、前記第１パケットの先頭に付随するデータワードに対して適用され、前記第２順序が、前記第２パケットの先頭に付随するデータワードに対して適用される前に、前記第２パケットの末尾に付随するデータワードに対して適用される請求項２４に記載の方法。
【請求項２６】
パケットを格納し、第１メモリユニットおよび第２メモリユニットを含むメモリを備えるスイッチファブリックからパケットを取り出すための方法であって、
到着パケットを受信すること、
前記第１メモリユニット上の使用可能なメモリ位置への第１参照を取り出すこと、
前記第２メモリユニット上の使用可能なメモリ位置への第２参照を取り出すこと、
前記第１参照または前記第２参照を、格納されたパケットの読出し動作を実施するように選択されるメモリユニットに基づいて選択すること、および
前記選択された参照によって参照されるメモリ位置上に到着パケットの少なくとも一部を書き込むことを含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般には、パケット交換システムに関し、より詳細には、デュアルポートスイッチファブリックメモリをエミュレートする単一ポートスイッチファブリックメモリに関する。
【背景技術】
【０００２】
データ通信交換機におけるスイッチファブリックによって、パケットを宛先に転送するために受信したデータパケットを入口ポートから出口ポートへ移送することが容易になる。スイッチファブリックは、クロスバー・スイッチ、セルスイッチ、または共有メモリパケットスイッチとして実装することができる。他のタイプのスイッチファブリックと比べると、共有メモリパケットスイッチには、重いトラフィック負荷に対して堅牢であるという利点がある。共有パケットメモリスイッチを用いると一般に、他のタイプのスイッチファブリックと比べて、パケットロスが少なくなり、また待ち時間が短くなる。
【０００３】
共有パケットメモリスイッチ内のメモリは一般に、単一ポートのＤＲＡＭ（dynamic random access memory：ダイナミックランダムアクセスメモリ）として実装される。図１は、当技術分野で見られる典型的な単一ポートメモリ６０の例示的なブロック図である。メモリは、単一のアドレスバス６２、制御バス６４およびデータバス６６を含む。単一のアドレスバス、制御バスおよびデータバスを使用して、書込みコマンドに応答してパケットを受信し、それをメモリに格納し、また読出しコマンドに応答して、格納されたパケットをメモリから取り出し送信する。
【０００４】
しかし、単一ポートメモリには、読出しアクセスであれ書込みアクセスであれ、一時に１つのメモリアクセスしかサポートしないという欠点がある。したがって、複数の読出しアクセスも複数の書込みアクセスも同時に実施することはできず、メモリ帯域幅（bandwidth to and from the memory）が限られ、ボトルネックが生じてシステムパフォーマンスが制限される。さらに、読出し動作を書込み動作と同時に行おうとすると、読み書きの衝突が起こることがあり、しばしばパケットの読出しまたは書込みを停止させることがある。
【０００５】
読み書きの衝突を回避しようと試みる際の一般的な手法は、単一ポートＲＡＭをデュアルポートＲＡＭで置き換えることである。図２は、当技術分野で見られる典型的なデュアルポートメモリ８０の例示的なブロック図である。デュアルポートメモリ８０は、２本のアドレスバス８２ａ、８２ｂ、制御バス８４ａ、８４ｂ、およびデータバス８６ａ、８６ｂを含む。デュアルポートメモリでは、読み書きの衝突のリスクを伴わずに、別個のバスを介して、同じメモリ８０からのパケットの取出しおよびそこへの格納を同時に行うことができ、メモリに対するデータ入出力のスループットを、アクセスタイミングを変更せずに２倍にすることができる。
【０００６】
デュアルポートメモリによって、読み書きの衝突は回避されるが、しばしば、スイッチファブリックに必要なメモリ容量を有するデュアルポートメモリは入手できず、またデュアルポートメモリは、こうしたスイッチファブリック用に一般に使用されるＤＲＡＭとしては使用可能でない。さらに、デュアルポートメモリは一般に、単一ポートメモリに比べて面積効率がよくない。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
したがって、読み書きの衝突のリスクを伴わずに、データスループットを最大にする単一ポートメモリを用いたスイッチファブリックが求められている。
【課題を解決するための手段】
【０００８】
本発明は、単一ポートメモリを使用するデュアルポートメモリエミュレーション方式によるスイッチファブリックを対象とする。一実施形態によれば、スイッチファブリックは、入力端と、この入力端に接続され、第１メモリユニットおよび第２メモリユニットを含むメモリとを備え、第１メモリユニットまたは第２メモリユニットが、第１パケットの少なくとも一部に対して第１メモリアクセス動作を実施するように選択され、この選択が第２パケットの少なくとも一部に対して第２メモリアクセス動作を実施するように選択されたメモリユニットに基づいて行われることを特徴とする。
【０００９】
別の実施形態によれば、本発明は、デュアルポートメモリエミュレーション方式によるスイッチファブリックを対象とする。このスイッチファブリックは、単一の第１入力ポート、単一の第１アドレスポート、および単一の第１出力ポートを含む第１の単一ポートメモリと、単一の第２入力ポート、単一の第２アドレスポート、および単一の第２出力ポートを含む第２の単一ポートメモリとを含む。この実施形態によれば、第２メモリアクセス動作が第１単一ポートメモリに対して実施される場合、第１メモリアクセス動作は第２単一ポートメモリに対して実施される。さらに、第２メモリアクセス動作が第２単一ポートメモリに対して実施される場合、第１メモリアクセス動作は第１単一ポートメモリに対して実施される。
【００１０】
一実施形態によれば、第１メモリアクセス動作は書込み動作であり、第２メモリアクセス動作は読出し動作である。
【００１１】
別の実施形態によれば、第１および第２メモリアクセス動作は、ノンブロッキングで同時に行われる。
【００１２】
したがって、本発明では、単一ポートメモリを使用したデュアルポートメモリのエミュレーションが可能になることを理解されたい。所与の任意のサイクルにおいて、読出し動作と書込み動作が異なる単一ポートメモリで行われるので、読出し動作と書込み動作を同じ動作サイクル内でノンブロッキングで実施することができる。したがって、本発明は、読み書きの衝突のリスクを伴わずに、データスループットを最大にすることができる。
【００１３】
本発明のこれらのおよび他の特徴、側面および利点は、以下の詳細の説明、添付の特許請求の範囲および添付の図面について考慮すれば、より深く理解されよう。もちろん、本発明の実際の範囲は、添付の特許請求の範囲によって定義される。
【発明を実施するための最良の形態】
【００１４】
図３は、本発明の一実施形態による、デュアルポートメモリエミュレーション方式を用いたパケット交換システムの概略ブロック図である。このシステムは、スイッチファブリックに接続された入口制御装置（ＩＣＵ）１０および出口制御装置（ＥＣＵ）１２を含む。このスイッチファブリックは、ＩＣＵ１０から受信したパケットを格納および転送するパケットバッファ装置（ＰＢＵ）１４から構成される。このＩＣＵ１０は、１つまたは複数の関連する入力ポート２０を備えることができ、ＥＣＵ１２は、１つまたは複数の関連する出力ポート２２を備えることができる。所与の任意の時点で、入力ポート２０のうちのすべてまたはサブセットが、出力ポート２２のうちのすべてまたはサブセット宛のデータパケットを受信する。パケットは、それだけには限らないが、イーサネット（登録商標）フレーム、ＡＴＭセル、ＴＣＰ／ＩＰおよび／またはＵＤＰ／ＩＰパケットを含むことができ、他の層２（データリンク／ＭＡＣ層）、層３（ネットワーク層）または層４（トランスポート層）データ単位を含むこともできる。
【００１５】
ＩＣＵ１０はパケットを受信すると、パケットを格納のためＰＢＵ１４に転送する。ＰＢＵ１４は、パケットをメモリに格納し、そのパケットの受信に関係し得るＥＣＵに通知を送信する。ＰＢＵ１４は、そのパケットを、ＥＣＵから要求されるまでメモリに維持する。ＥＣＵは、スケジューリングアルゴリズムに基づいてパケットを転送すべきときであると決定すると、パケット取出しのための要求をＰＢＵ１４に送信する。ＰＢＵは要求に応答してパケットを取り出し、１つまたは複数の出口ポート２２を介した転送のためそれをＥＣＵに送信する。
【００１６】
図３に示す実施形態には、単一のＰＢＵに接続された単一のＩＣＵおよびＥＣＵが示されているが、２００２年５月１５日出願され、本願と同一の譲受人に譲渡された米国特許出願「Distributed Shared Memory Packet Switch」（整理番号４７９００／ＪＥＣ／Ｘ２号）に記載されているように、パケット交換システムは、高速シリアルリンクを介して、複数のＰＢＵに接続された複数のＩＣＵおよびＥＣＵを含むことができるので、それぞれのＩＣＵおよびＥＣＵがそれぞれのＰＢＵと通信できることが当業者には理解されよう。同特許の内容を本明細書中で参考として援用する。
【００１７】
図４は、本発明の一実施形態による例示的なＩＣＵ１０の概略ブロック図である。図示した実施形態のＩＣＵは、入口データストア３０に接続された入口プロセッサ３２を含み、この入口データストアは、入口インターフェイス３４に接続される。入口パケットプロセッサ３２は、到着パケットを受信し、ポリシング、アカウンティング、転送、および当技術分野において通常のパケットに対する他のどんなパケット処理タスクも実施する。
【００１８】
入口データストア３０は、到着データパケットを受信し、一時的に格納するための先入れ先出し（ＦＩＦＯ：first-in-first-out）バッファである。入口ポート２０のうちの１つまたは複数ポートのデータ転送速度が、ＰＢＵ１４とのリンク１６のデータ転送速度よりも速いまたは遅い場合には、入口データストア３０があることが望ましいことがある。しかし、ＩＣＵ１０が入口データストア３０を含まない実施形態もあり得る。
【００１９】
入口インターフェイス３４は、リンク１６を介して、ＰＢＵに到着データパケットを転送する。スイッチファブリックが複数のＰＢＵ１４で構成されている実施形態では、それぞれのＰＢＵに関連する重み情報によって調整される疑似ランダムアルゴリズムに基づいて特定のＰＢＵを選択することができ、様々なＰＢＵ間でワークロードのバランスを取ることができる。
【００２０】
図５は、本発明の一実施形態による例示的なＰＢＵ１４の概略ブロック図である。図示した実施形態のＰＢＵは、ＩＣＵ１０から受信したパケットを格納するための、共有パケットデータメモリ４０を含む。特定のパケットの異なる部分が、ポインタのリンクリストを介してアクセスされる、データメモリの異なるメモリ位置に格納される。本発明の一実施形態によれば、メモリは、上部データメモリ４０ａと下部データメモリ４０ｂに分割される。上部データメモリ４０ａは、第１の単一ポートメモリとして実装され、下部データメモリ４０ｂは、第２の単一ポートメモリとして実装される。それぞれ単一ポートメモリは、たとえば、同じサイズの単一ポートＤＲＡＭである。あるいは、それぞれの単一ポートメモリは、サイズが異なってもよい。
【００２１】
ＰＢＵ１４は、ＰＢＮバッファ４２をさらに含み、このＰＢＮバッファは、ＤＲＡＭ（dynamic random access memory）またはＳＲＡＭ（static RAM：静的ＲＡＭ）として実装することができる。ＰＢＮバッファ４２の各エントリは、ＰＢＮアドレスと称されるアドレスを含み、このアドレスは、少なくともパケットの一部が格納されているデータメモリ４０を指すポインタである。本発明の一実施形態によれば、ＰＢＮアドレスは、パケットの末尾部分を格納するメモリ位置を指すポインタである。
【００２２】
ＰＢＮバッファ４２は、入口メモリマネージャ４４と称される記憶装置に結合される。この入口メモリマネージャは、ＩＣＵ１０からデータメモリ４０へ流されるパケットのトラッキングを維持する。入口メモリマネージャ４４は、空きポインタバッファ４６から空きメモリ位置を指すポインタを取り出す。空きポインタバッファ４６は、上部バッファ部分４６ａおよび下部バッファ部分４６ｂを含む。上部バッファ部分４６ａは、上部データメモリ４０ａの使用可能なメモリ位置を指すポインタを格納し、下部バッファ部分４６ｂは、下部データメモリ４０ｂの使用可能なメモリ位置を指すポインタを格納する。
【００２３】
入口メモリマネージャ４４は、空きポインタバッファ４６から取り出した１つまたは複数の空きメモリ位置に、あるパケットの全体または一部を格納する。入口メモリマネージャ４４は、そのパケットの直前の部分を格納するのに使用した直前のポインタのトラッキングを維持しており、また直前のポインタをパケットデータと共に空きメモリ位置に格納する。これによって、パケットの異なる部分が逆方向ポインティング機構を介してリンクされる。この逆方向ポインティング機構では、パケットの現在の部分がパケットのその直前の部分を参照する。
【００２４】
パケット全体がデータメモリ４０に書き込まれると、入口メモリマネージャ４４は、新たに格納されたパケットについて、ＰＢＮバッファ４２にエントリを追加する。一実施形態によれば、エントリは、パケットの末尾部分を指すポインタを含む。
【００２５】
ＰＢＵ１４は、出口メモリマネージャ４８と称される処理装置も含み、この出口メモリマネージャは、データメモリ４０からＥＣＵ１２に流されるパケットのトラッキングを維持する。出口メモリマネージャ４８は、特定のメモリ位置からのデータ取出しのためデータメモリ４０に読取りコマンドを送信する。出口メモリマネージャはさらに、メモリ４０内に維持する必要がないパケットを検出し、その関連するメモリ位置を解放する。
【００２６】
上記の内容に加え、ＰＢＵ１４は、入力コントローラ５０および出力コントローラ５２を含む。入力コントローラ５０は、ＩＣＵ１０およびＥＣＵ１２から様々なタイプのメッセージを受信し、その様々なタイプのメッセージを処理し分離して、ＰＢＵ上の適切なコンポーネントに転送する。
【００２７】
たとえば、入力コントローラ５０は、ＩＣＵ１０から到着パケットを受信し、このパケットは、データメモリへの格納のため入口メモリマネージャ４４に転送される。入力コントローラ５０はさらに、パケット要求メッセージを受信し、このメッセージは、ＥＣＵ１２向けのパケットを取り出すためにＰＢＮバッファ４２に転送される。別の実施形態では、入力コントローラ５０は、ＥＣＵから追加のメッセージ、たとえば、ＥＣＵから要求されるまでパケットをメモリに維持するよう指示する、メモリに格納されたパケットに関連するブッキングメッセージなどを受信することができる。
【００２８】
出力コントローラ５２は、ＥＣＵがその受信に関係し得るパケットが受信され、データメモリ４０に格納されていることを示す、通知メッセージをＥＣＵに送信する。出力コントローラ５２はまた、データメモリ４０から取り出されたパケットを受信し、ＥＣＵからの要求に応じてＥＣＵ１２にこうしたパケットを転送する。
【００２９】
もちろん、図５は、ＰＢＵを作成するために必要なまたは望ましいことがある追加の要素および／またはコンポーネントによって、本発明の発明性のある側面を不明瞭にしないようにしたＰＢＵ１４のブロック図であることが理解されよう。たとえば、ＰＢＵは、ＥＣＵに通知を転送するための別個の通知ロジックおよび関連するテーブルを含むことができる。ＰＢＵは、ＥＣＵから受信したブッキングメッセージを反映するブッキングバッファを含むこともできる。こうした追加のコンポーネントは、上記で参照した米国特許出願「Distributed Shared Memory Packet Switch」に詳述されている。
【００３０】
図６は、本発明の一実施形態による例示的なＥＣＵ１２の概略ブロック図である。図示するこの実施形態によれば、ＥＣＵ１２は、ＰＢＵ１２から様々なタイプのパケットを受信する出口インターフェイス７０を含む。出口インターフェイス７０は、こうしたパケットを処理し、適切な出口コンポーネントに転送する。
【００３１】
本発明の一実施形態によれば、出口インターフェイス７０は、ＰＢＵ１２から受信したデータパケットを、１つまたは複数の出口ポート２２を介して転送する前に一時的に格納するため、出口データストア７２に送信する。出口データストア７２は、先入れ先出し（ＦＩＦＯ）バッファとして実装することができる。１つまたは複数の出口ポート２２のデータ転送速度が、ＰＢＵ１２と通信するために使用するリンク１８のデータ転送速度よりも速いまたは遅い場合には、出口データストア７２があることが望ましいことがある。しかし、ＥＣＵ１２が出口データストア７２を含まない実施形態も存在し得る。
【００３２】
出口インターフェイス７０はさらに、ＥＣＵが受信に関係し得るパケットがデータメモリ４０に格納されたことを示す通知メッセージをＰＢＵ１２から受信する。そのパケットに関連する１つまたは複数の出口キュー７６のキューレベルが高すぎる場合、そのレベルが高すぎると識別されるキューについて、通知が廃棄される。他の関連するキューについて、出口インターフェイス７０は、そのパケットに関連するＰＢＮをキューに格納する。一実施形態によれば、出口インターフェイス７０は、ＰＢＵ１４にブッキングメッセージを送信することができる。このブッキングメッセージは、ＰＢＮがエンキューされたことを示し、また関連するパケットをデータメモリ４０に維持するように指示するものである。
【００３３】
ＥＣＵ１２は、出口スケジューラ７８を含み、この出口スケジューラは、特定のスケジューリングアルゴリズム、たとえば加重ラウンドロビンアルゴリズム、クラスベースのデキューなどに従って、それぞれの出口キュー７６からＰＢＮ番号をデキューする。エンキューされているＰＢＮに関連するパケットが転送されるようにスケジュールされているとスケジューリング機構によって決定されたとき、出口インターフェイスは、ＰＢＵ１２にパケット要求メッセージを送信する。一実施形態によれば、パケット要求メッセージは、エンキューされたＰＢＮを含むことができ、このＰＢＮによってＰＢＵは取り出すべき適切なパケットを認識することができる。パケットが受信されると、ＥＣＵは、出口データストア７２にパケットを一時的に格納する。ＰＢＵは、パケットの末尾を最初に取り出し、パケットの末尾を最後に取り出すというように逆方向でパケットを取り出すので、１つまたは複数の適切な出口ポートを介してパケットを転送する際に、ＥＣＵもパケットを逆方向に読み出し、ＰＢＵによる逆方向での取出しを順方向に戻す（neutralize）。このようにして、パケットの先頭を最初に転送し、パケットの末尾を最後に転送するという正しい順序で、パケットがＥＣＵによって転送される。
【００３４】
次に、共有パケットデータメモリ４０のアクセスについて詳述する。本発明の一実施形態によれば、データメモリ４０は、上部データメモリ４０ａおよび下部データメモリ４０ｂにメモリを分割することによって、デュアルポートメモリをエミュレートし、上部および下部データメモリのそれぞれが、単一ポートメモリとして実装される。デュアルポートエミュレーションによって、データメモリ４０にデータを格納する際に、入口メモリマネージャ４４によって呼び出される書込み動作を、データメモリからデータを取り出す際に出口メモリマネージャ４８によって呼び出される読出し動作と同じ動作サイクルで、ノンブロッキングで行うことができる。読出し動作が必要ない場合、単一の動作サイクルで、２重の書込み動作を行うこともできる。したがって、デュアルポートエミュレーション方式は、読み書きの衝突のリスクを伴わずに、単一のポートメモリを介して、スループットを増加させるのに役立つ。
【００３５】
本発明の一実施形態によれば、読出し動作が書込み動作よりも優先される。この実施形態によれば、次にスケジュールされている読出し動作のアドレスによって、スケジュールされている書込み動作のためにアクセスされるデータメモリの部分が決まる。読出し動作が上部データメモリ４０ａで行われるようにスケジュールされている場合、書込み動作は下部データメモリ４０ｂで行われ、逆の場合も同様である。したがって、それぞれのサイクルにおいて、読出し動作と書込み動作をノンブロッキングで同時に実施することができる。
【００３６】
書込み動作中、データパケットは、メモリの異なるメモリ位置に、データワードごとに格納され、それぞれのメモリ位置には、現在のデータワードおよび隣接するデータワードを指すポインタが格納される。ポインタが次のデータワードを指す次ポインタである場合、データワードの順方向ポインティング機構を生成することができる。しかし、読出し動作が書込み動作よりも優先される単一ポートメモリを用いてデュアルポートメモリをエミュレートする際には、現在の読出し動作によって次の書込み動作をどこで行うかが決まり、したがって次の読出し動作をどこで行うかも決まる。したがって、次ポインタ情報は、現在の書込み動作によって生成されるのではなく、次の読出し動作によって生成される。これは、パケットデータの現在の部分が格納される現在の書込み動作中には、ポインタの格納を扱うことができないことを意味する。そうではなく、次の読出し動作によって次書込みポインタの内容が決まるまで、ポインタ情報は完成されず、これは、次ポインタ情報を取り出し、正確にセットするために読出し、修正および書込みの追加のステップを要することを意味している。
【００３７】
本発明の一実施形態によれば、適切な次書込みポインタ情報を取得し訂正するために追加の動作サイクルを必要とする順方向ポインティング機構を使用するのではなく、逆方向ポインティング機構を使用する。この逆方向ポインティング機構では、データワード、およびパケットの次のデータワードを指すポインタを格納する代わりに、直前のデータワードを指すポインタを格納する。現在のデータワード格納時に、その直前のポインタ情報は使用可能であるので、単一の現書込みステップ中に、データとポインタ情報の両方を格納することができる。したがって、単一の動作サイクルにおいて、読出しステップと書込みステップを同時に実施し完了することができる。
【００３８】
別の実施形態では、０と１の間で連続的に切り換わる１ビットの内部カウンタを維持することによって、順方向ポインティング機構を実装することができる。このカウンタを用いて、値０を上部データメモリと関連付け、値１を下部データメモリと関連付け、読出しと書込みを交互に行い、ある時点では、読出し＝上部メモリ、書込み＝下部メモリとし、その次の時点では、読出し＝上部メモリ、書込み＝下部メモリとなるようにする。次の書込み動作が行われるメモリユニットが事前に分かっているので、現データパケットとともに格納するためにその次の書込みポインタをプリフェッチすることができ、順方向ポインティング機構が可能になる。
【００３９】
別の実施形態では、書込み動作を読出し動作よりも優先させることによって、順方向ポインティング機構を実装することができる。このようにして、次にスケジュールされている書込み動作のためにアクセスされるメモリユニットを現書込み動作によって決定することができ、その次の書込みポインタを識別されたメモリユニットからプリフェッチすることができる。次にスケジュールされている読出し動作のためにアクセスされるメモリユニットも現書込み動作によって決定することができる。しかし、実際の次にスケジュールされている読出し動作は、次にスケジュールされている読出し動作のアドレスが選択されたメモリユニットと合致するかどうかに応じて、行われることも、行われないこともある。
【００４０】
図７は、本発明の一実施形態による、図５のＰＢＵ１４の一部のより詳細なブロック図である。入口メモリマネージャ４４は、ＰＢＮレジスタ１０６および前書込みポインタレジスタ１０８を含む。ＰＢＮレジスタ１０６は、パケットがデータメモリ４０に格納されると、そのパケットを指すポインタを格納するために、ＰＢＮと称されるＰＢＮバッファへのアドレスを一時的に格納する。入口メモリマネージャによってパケットの先頭（ＳＯＰ）が検出されると、ＰＢＮは、たとえば空き（ｆｒｅｅ）ＰＢＮバッファ（図示せず）から選択される。
【００４１】
前書込みポインタレジスタ１０６は、パケットの直前の部分を格納するのに使用されたメモリ位置を指すポインタを格納する。前書込みポインタレジスタ１０６は、流されるパケットのそれぞれの部分がデータメモリ４０の使用可能な位置に格納されるときに更新される。前書込みポインタレジスタ１０６内のポインタは、データパケットの現部分と一緒にメモリに格納される。
【００４２】
空きポインタバッファ４６は、パケットを格納することができるデータメモリ４０上の使用可能な位置を指す空きポインタ１０４のリストを格納する。空きポインタ１０４リストは、上部バッファ部分４６ａおよび下部バッファ部分４６ｂに分けられる。上部バッファ部分は、上部データメモリ４０ａ上の使用可能なメモリ位置を指すポインタを格納し、下部バッファ部分は、下部データメモリ上の使用可能なメモリ位置を指すポインタを格納する。
【００４３】
一実施形態によれば、格納されるパケットのそれぞれの部分について、空きバッファが入口メモリマネージャ４４に、上部バッファ部分４６ａからの空き上部ポインタと下部バッファ部分４６ｂからの空き下部ポインタの両方を送信する。空き上部ポインタは、上部メモリアドレスセレクタ１０５に送信され、空き下部ポインタは、下部メモリアドレスセレクタ１０７に送信される。データを格納するためのメモリアドレスとして選択される実際のポインタは、Ｕ／Ｌ（upper/lower：上部／下部）読出しインディケータ１０９によって決定され、このインディケータが、次のスケジュールされている読出し動作に基づいて、空き上部ポインタまたは空き下部ポインタをイネーブルする。トランザクションごとに、１つの空きポインタしか消費されず、未使用のポインタは空きポインタバッファに戻される。次の読出しが下部データメモリ４０ｂでスケジュールされている場合、Ｕ／Ｌ読出しインディケータによって、パケットの現部分の書込み用のアドレスとして、空き上部ポインタが選択されるようになる。このようにして、デュアルポートメモリをエミュレートして、同じ動作サイクル内で、読出し動作と書込み動作をノンブロッキングで同時に実施することができる。
【００４４】
一実施形態によれば、読出し動作がスケジュールされていない場合、加重疑似ランダムアルゴリズムを使用して、空き上部ポインタを選択するか、それとも空き下部ポインタを選択するかを決定する。それに従って、上部バッファ部分および下部バッファ部分の空きポインタの数に基づいて重みが配分される。別の実施形態によれば、読出し動作がスケジュールされていない場合には、両方の空きポインタを使用して２つの書込み動作を同時に実施する。
【００４５】
データメモリ４０は、上部データメモリ４０ａおよび下部データメモリ４０ｂを含む。データメモリのそれぞれの部分が、単一のデータインポート１００、単一のアドレスポート１０１、および単一のデータアウトポート１０２を備える単一ポートメモリとして実装される。データインポート１００は、メモリマネージャ４４から、格納されるパケットの一部および前書込みポインタを受信する。アドレスポート１０１は、データの格納および取出しのために使用されるデータメモリ上のアドレスを受信する。データアウトポート１０２は、メモリから取り出されたデータを送信する。
【００４６】
入口メモリマネージャ４４によってパケットの末尾（ＥＯＰ）が検出されると、パケットの末尾部分は、空きポインタバッファ４６から取り出された現空きポインタが示すメモリ位置に格納される。現空きポインタは、ＰＢＮバッファの、ＰＢＮレジスタ１０６内のＰＢＮが示すアドレスに格納される。またＰＢＮを使用して格納されているパケットを取り出すことができることを示す通知が、ＰＢＮを付加して出力コントローラ５２から関係するＥＣＵに送信される。
【００４７】
ＰＢＮバッファ４２は、複数のＰＢＮアドレス１１２を含み、それぞれのＰＢＮアドレスは、特定のパケットの全体または一部を格納するメモリ位置を参照する。一実施形態によれば、それぞれのＰＢＮアドレスは、パケットの末尾を格納するメモリ位置を参照する。それぞれのＰＢＮアドレスは、それに関連するＰＢＮ１１０によってアクセスすることができる。
【００４８】
出口書込みテーブル４８は、ＰＢＮレジスタ１１４および現読出しポインタレジスタ１１６を含む。ＰＢＮレジスタは、ＥＣＵ１２から要求されたパケットのＰＢＮを格納する。ＰＢＮを使用して、ＰＢＮバッファ４２から関連するＰＢＮアドレスを取り出す。取り出されたＰＢＮアドレスを現読出しポインタレジスタ１１６に格納する。ＰＢＮアドレスは、要求されたパケットを格納するデータメモリ４０上のメモリ位置を指すポインタのリンクリストの開始アドレスとして使用される。出口メモリマネージャ４８はさらに、ＰＢＮアドレスが上部データメモリ４０ａを参照するか、それとも下部データメモリ４０ｂを参照するかを決定し、それに従って、Ｕ／Ｌ読出しインディケータ１０９をセットする。
【００４９】
パケットの現部分を読み出すとき、取り出されるパケットの次の部分は、取り出されたデータと共に格納されている前ポインタによって決まる。出口書込みテーブル４８は、現読出しポインタレジスタ１１６を前ポインタで更新し、前ポインタに関連するデータを取り出すことを可能にする。
【００５０】
図８は、本発明の一実施形態による、上部データメモリ４０ａおよび下部データメモリ４０ｂに分割されたデータメモリ４０の概略レイアウト図である。データメモリのそれぞれの部分は、複数のエントリを含み、それぞれのエントリは、パケットデータ１３０および関連する前ポインタ１３２を含む。メモリ上のエントリが特定のパケットの先頭部分を格納する場合、関連する前ポインタはＮＵＬＬポインタである。パケットの他の全ての部分は、メモリに格納されているパケットの直前部分を参照する前ポインタと一緒に格納される。このようにして、パケット全体を逆方向に参照することができる。すなわち、前ポインタのリンクリストを用いて、パケットの末尾を最初に、パケットの先頭を最後に参照する。順方向ポインティング機構では、ポインタ情報を後で決定し埋めるのに追加のステップが必要なことがあるが、その代わりに、こうした逆方向ポインティング機構を使うと、ポインタを決定し格納するために単一の書込みステップを用いることができる。
【００５１】
読出し動作によってパケットを取り出す際に、パケットの末尾に関連するデータを最初に取り出し、その関連する前ポインタを使用して、パケットの中間に関連するデータを取り出す。ＮＵＬＬポインタに達するまで、取り出されたパケットの中間に関連する前ポインタをさらに使用して、パケットの追加の中間部分を取り出し、パケットの先頭に関連するデータを最後に取り出す。
【００５２】
このように逆方向に取り出されたパケットは、要求元のＥＣＵに送信される。またこのＥＣＵは、逆方向のパケット取出しを順方向に戻すために、出口ポートを介して送信する前に逆方向にパケットを読み出す。ＥＣＵが逆方向に読み出すことで、パケットは正しい順序で送信されるようになり、パケットの先頭が最初に、パケットの末尾が最後に送信される。
【００５３】
図９は、デュアルポートメモリエミュレーション方式による、パケットを格納する際にＰＢＵ１４によって実行されるプロセスのフローチャートである。プロセスが開始し、ステップ１４０で、ＰＢＵ１４は、到着パケットの一部を受信し、入口メモリマネージャ４４にその部分を送信する。入口メモリマネージャ４４は、受信されたパケットの部分がＳＯＰか、ＭＯＰか、それともＥＯＰであるかを判定する。ステップ１４２で、受信されたパケットがＳＯＰである場合、ステップ１４４で、入口メモリマネージャ４４は、使用可能なＰＢＮを識別する。さらに、ステップ１４６で、入口メモリマネージャは、空きポインタバッファ４６から空き上部ポインタおよび空き下部ポインタを取り出す。データメモリ４０上で実施される次にスケジュールされている読出し動作に基づいて、空き上部ポインタを使用するか、それとも空き下部ポインタを使用するかを判定する。ステップ１４８で、上部空きポインタを使用すると判定された場合、現書込みポインタを空き上部ポインタにセットする。ステップ１５２で、上部データメモリの、空き上部ポインタが示すメモリ位置にパケットデータを格納する。入口メモリマネージャ４４によって維持されている前書込みポインタもそのメモリ位置に格納する。パケットの先頭については、前ポインタをＮＵＬＬにセットする。
【００５４】
空き下部ポインタが使用される場合、ステップ１５６で、現書込みポインタを空き下部ポインタにセットする。ステップ１５８で、空き下部ポインタが示すメモリ位置に、パケットデータおよび関連する前ポインタを格納する。
【００５５】
ステップ１５４で、入口メモリマネージャ４４の前ポインタレジスタ１０８を、現書込みポインタで更新する。
【００５６】
ステップ１６０で、格納されるパケットの次部分がＭＯＰである場合、ステップ１４６〜１５４を再び実施し、空き上部ポインタおよび空き下部ポインタを取り出し、次にスケジュールされている読出し動作に基づいて、パケットの格納に使用するために空きポインタのうちの１つを選択し、前ポインタを現書込みポインタで更新する。
【００５７】
ステップ１６２で、格納されるパケットの次の部分がＥＯＰである場合、空き上部ポインタおよび空き下部ポインタを空きポインタバッファ４６から取り出して、次のスケジューラ読出し動作に基づいて、空き上部ポインタを使用するか、それとも空き下部ポインタを使用するかを判定する。ステップ１６４で、空き上部ポインタが使用されるとされた場合、ステップ１６６で、現書込みポインタを空き上部ポインタにセットする。ステップ１６８で、パケットの末尾部分および前ポインタを、上部データメモリの、空き上部ポインタが示すメモリ位置に格納する。
【００５８】
そうでなく、空き下部ポインタが使用される場合、ステップ１７４で、現書込みポインタを空き下部ポインタにセットし、ステップ１７６で、パケットの末尾部分および前ポインタを、下部データメモリに格納する。
【００５９】
ステップ１７０で、現ポインタをＰＢＮアドレスとし、ステップ１７２で、ＰＢＮアドレスをＰＢＮバッファ４２の、識別されたＰＢＮによってアドレス指定されるエントリに格納する。
【００６０】
図１０は、デュアルポートメモリエミュレーション方式による、パケットを取り出す際にＰＢＵ１４によって実行されるプロセスのフローチャートである。プロセスが開始し、ステップ１８０で、ＰＢＵは、ＥＣＵからパケット要求メッセージを受信する。一実施形態によれば、パケット要求メッセージは、所望のパケットのＰＢＮを含む。ステップ１８２で、ＰＢＮを取り出し、ステップ１８４で、ＰＢＮバッファ４２から関連するＰＢＮアドレスを取り出す。一実施形態によれば、ＰＢＮアドレスは、所望のパケットの末尾部分を格納するメモリ位置のアドレスである。
【００６１】
ステップ１８６で、現読出しポインタを取り出されたＰＢＮアドレスにセットする。ステップ１８８で、現読出しポインタが上部データメモリ４０ａを参照するか、それとも下部データメモリ４０ｂを参照するかを判定する。現読出しポインタが上部データメモリを参照する場合、ステップ１９２で、Ｕ／Ｌ読出しインディケータを「上部」にセットする。そうでない場合、ステップ１９０で、Ｕ／Ｌ読出しインディケータを「下部」にセットする。
【００６２】
ステップ１９４で、現読出しポインタ位置に格納されているデータおよび前ポインタを取り出す。また現読出しポインタは、マルチキャスト伝送では、それがパケットのある部分の最終読出しである場合、空きポインタバッファ４６に戻される。
【００６３】
ステップ１９６で、取り出された前ポインタがＮＵＬＬポインタかどうかを判定する。答えが「はい」であれば、パケットの先頭は取出し済みであり、プロセスは終了する。そうでなければ、パケットのリンクリストからパケットの直前部分を取り出すため、現書込みポインタを取り出された前ポインタにセットする。
【００６４】
いくつかの特定の実施形態について本発明を説明したが、当業者は本発明の範囲および精神から決して逸脱しない変形形態を難なく考案されよう。たとえば、図９および１０のフローチャートに示したステップは、そこに示した順序でも、当業者によって考案され得る他の任意の順序によって実施することもできる。したがって、本発明は、具体的に示したものとは別の方法で実施できることを理解されたい。すなわち、本発明のこうした実施形態は、あらゆる点において、限定的でなく、例示的なものであると見なすべきである。本発明の範囲は、前述の説明ではなく、添付の特許請求の範囲およびその均等物によって示されるものである。
【図面の簡単な説明】
【００６５】
【図１】当技術分野で見られる典型的な単一ポートメモリを示す例示的なブロック図である。
【図２】当技術分野で見られる典型的なデュアルポートメモリを示す例示的なブロック図である。
【図３】本発明の一実施形態による、デュアルポートメモリエミュレーション方式を用いたパケット交換システムを示す概略ブロック図である。
【図４】本発明の一実施形態による例示的な入口制御装置を示す概略ブロック図である。
【図５】本発明の一実施形態による例示的なパケットバッファ装置を示す概略ブロック図である。
【図６】本発明の一実施形態による例示的な出口制御装置を示す概略ブロック図である。
【図７】本発明の一実施形態による、図５のパケットバッファ装置の一部をより詳細に示すブロック図である。
【図８】本発明の一実施形態による、デュアルポートメモリをエミュレートするために上部データメモリおよび下部データメモリに分割された図５のパケットバッファ装置上のデータメモリを示す概略レイアウト図である。
【図９】デュアルポートメモリエミュレーション方式による、パケットを格納する際に図５のパケットバッファ装置によって実行されるプロセスを示すフローチャートである。
【図１０】デュアルポートメモリエミュレーション方式による、パケットを取り出す際に図５のパケットバッファ装置によって実行されるプロセスを示すフローチャートである。
【図１】
2004536515.tif 000003
【図２】
2004536515.tif 000004
【図３】
2004536515.tif 000005
【図４】
2004536515.tif 000006
【図５】
2004536515.tif 000007
【図６】
2004536515.tif 000008
【図７】
2004536515.tif 000009
【図８】
2004536515.tif 000010
【図９】
2004536515.tif 000011
【図１０】
2004536515.tif 000012
【国際公開パンフレット】
2004536515.tif 000013
2004536515.tif 000014
2004536515.tif 000015
2004536515.tif 000016
2004536515.tif 000017
2004536515.tif 000018
2004536515.tif 000019
2004536515.tif 000020
2004536515.tif 000021
2004536515.tif 000022
2004536515.tif 000023
2004536515.tif 000024
2004536515.tif 000025
2004536515.tif 000026
2004536515.tif 000027
2004536515.tif 000028
2004536515.tif 000029
2004536515.tif 000030
2004536515.tif 000031
2004536515.tif 000032
2004536515.tif 000033
2004536515.tif 000034
2004536515.tif 000035
2004536515.tif 000036
2004536515.tif 000037
2004536515.tif 000038
2004536515.tif 000039
【国際調査報告】
2004536515.tif 000040