JP2006524477A - 共用マルチバンク・メモリのための方法および装置 - Google Patents

共用マルチバンク・メモリのための方法および装置 Download PDF

Info

Publication number
JP2006524477A
JP2006524477A JP2006513192A JP2006513192A JP2006524477A JP 2006524477 A JP2006524477 A JP 2006524477A JP 2006513192 A JP2006513192 A JP 2006513192A JP 2006513192 A JP2006513192 A JP 2006513192A JP 2006524477 A JP2006524477 A JP 2006524477A
Authority
JP
Japan
Prior art keywords
buffer
data
bank
packet
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006513192A
Other languages
English (en)
Other versions
JP5089167B2 (ja
Inventor
チン,チュン,クアン
ヤウ ファン
マイヤーズ,ロイ,ティー.,ジュニヤ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Agere Systems LLC
Original Assignee
Agere Systems LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Agere Systems LLC filed Critical Agere Systems LLC
Publication of JP2006524477A publication Critical patent/JP2006524477A/ja
Application granted granted Critical
Publication of JP5089167B2 publication Critical patent/JP5089167B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/103Packet switching elements characterised by the switching fabric construction using a shared central buffer; using a shared memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/101Packet switching elements characterised by the switching fabric construction using crossbar or matrix
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/111Switch interfaces, e.g. port details
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • H04L49/201Multicast operation; Broadcast operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/351Switches specially adapted for specific applications for local area network [LAN], e.g. Ethernet switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

入力ポートで受け取られたデータ・パケットのシーケンシャル・データ単位を共用メモリのバッファの連続するバンクに保管する方法および装置を開示する。バッファ・メモリ利用を、単一のバッファに複数のパケットを保管することによって改善することができる。バッファごとに、パケットのそれぞれがあてられた出力ポートの個数の合計(バッファで表されるすべてのパケットに関する)を示すバッファ使用カウントが保管される。バッファ使用カウントは、バッファが空いている時を判定する機構を提供する。バッファ使用カウントは、マルチキャスティング動作を実行するためにパケットの宛先ポートの個数も示すことができる。バッファに、1つまたは複数のグループを含めることができ、グループのそれぞれに、複数のバンクを含めることができる。

Description

本願は、2003年4月22日出願の米国仮出願第60/464462号の利益を主張するものである。
本発明は、パケットベースのスイッチング・ファブリックに関し、具体的には、中央共用バッファ・メモリを介してデータ・パケットを効率的に切り替える方法および装置に関する。
インターネットおよびマルチメディア・アプリケーションのユビキタスな展開から生じる帯域幅に関する需要の増大が、より高速でより効率的なネットワークおよびネットワーク・スイッチ、主にパケット・スイッチの必要を生んできた。入力ポートから出力ポートにデータ・パケットを転送するパケット・スイッチに使用される少なくとも3つの一般的なスイッチング・アーキテクチャすなわち、クロスポイント(クロスバとも称する)マトリックス、共用バス、および共用メモリがある。クロスバ・マトリックスは、本質的に、データ・パケット(またはデータ・パケットのサブセット)交換の持続時間の間に、パケットのエントリ・ポートによって獲得されるデータ・パケット内の宛先アドレスおよび/または他の情報に基づいて、2つのポートの間で過渡的「回路」を作成する。スイッチを介する待ち時間は、パケットを転送する処理中にスイッチ内でデータ・パケット全体を保管する必要がないので、最小限である。クロスバ・マトリックス・アーキテクチャの短所は、複数のエントリ・ポートが同一のエクシット・ポートにデータを送ることを試みる時に発生するヘッドオブライン・ブロッキング(head−of−line blocking)である。共用バス・アーキテクチャでは、ポートの間のデータ・パケット用の交換機構として共通バスを使用する。設計に応じて、各入力ポートおよび各出力ポート(またはポートの小さいグループ)が、それ自体のメモリを有することができる。クロスバ・マトリックスに似て、共用バス・アーキテクチャは、ビジー・ポートでのブロッキングをこうむりやすい。
共用メモリ・アーキテクチャは、ポートの間のデータ・パケット用の交換機構として、単一の共通メモリを使用する。すべてのポートが、共用メモリ・バスを介して共用メモリにアクセスする。時分割多重などの調停機構が、メモリへのポート・アクセスを制御し、各エントリ・ポートが受け取られたデータを保管する機会を確保し、このデータに、エクシット・ポートによってアクセスすることができる。しかし、現在の共用メモリ・アーキテクチャに関する問題は、これらが、メモリへのポート・アクセスをブロックせずに、あるポートから別のポートに数ギガビット毎秒のデータを転送するのに十分に高速でないことである。そのような転送レートは、ローカル・エリア・ネットワーク(LAN)、広域ネットワーク(WAN)、テレフォニ、および他の種類のスイッチング・システムで使用されるより新しく極端に高速のパケット・スイッチを必要とする。
米国仮出願第60/464462号
したがって、より新しいネットワークに追い付くのに必要な極端に高いデータ・レートでスイッチを介してデータをトランスポートできるスイッチング・デバイス用の改善された共用メモリ・アーキテクチャの必要がある。
一般に、共用メモリ内のバッファの連続するバンクにデータ・パケットのシーケンシャル・データ単位を保管する方法および装置を開示する。データ・パケットは、複数のバッファを介して延びることができる(次バッファ・リンケージ情報は、次データ単位リンケージ情報より効率的である)。バッファ・メモリ利用は、単一のバッファに複数のパケットを保管することによってさらに質を高めることができる。
本発明のもう1つの態様は、共用メモリを管理する技法を提供する。バッファ使用カウントが、少なくとも1つのバッファについて維持される。バッファ使用カウントは、パケットのそれぞれがあてられた出力ポートの数の、バッファ内のすべてのパケットに関する合計の表示を提供する。バッファ使用カウントは、バッファが空いている時を判定する機構を提供する。バッファ使用カウントは、マルチキャスティング動作を実行するためにパケットの宛先ポートの個数を示すこともできる。
本発明ならびに本発明のさらなる特徴および利益のより完全な理解は、次の詳細な説明および図面を参照することによって得られる。
図1は、本発明の特徴を組み込んだ共用メモリ・スイッチの全体的なブロック図である。この詳細な説明では、本明細書で使用される用語としての「データ単位」が、所与のデータ経路を介して並列に伝送されるデータの量を指す。通常、データ単位に、バイト、ワード、ダブル・ワード、およびクワッドワードが含まれる。データ単位のサイズは、データ経路に固有であり、あるデータ経路を介して伝送されるデータ単位は、同一システム内であっても、異なるデータ経路を介して伝送されるデータ単位と異なるサイズを有する場合がある。図1の実施形態では、データ単位が、すべての可視のデータ経路についてクワッドワードである。
ブロックは、本明細書で使用されるよりグローバルな概念であり、データ経路サイズに依存しない。特定のデータ経路が、データのブロック全体を並列に伝送する場合に、そのブロックは、定義により、1つのデータ単位だけを含む。データ経路が、一時に各ブロックの半分だけを伝送する場合に、そのデータ経路に関して、1ブロックに2つのデータ単位が含まれる。図1の実施形態では、1ブロックに8つのデータ単位が含まれることがわかる。本明細書で使用される用語「パケット」は、任意のプロトコルに従って生成されたデータ単位を指す。パケットは、プロトコルに応じて、サイズにおいて固定または可変とすることができる。本明細書で説明する実施形態は、可変サイズ・データ・パケットを効率的に処理するように設計されている。しかし、これらの実施形態は、固定サイズ・データ・パケットを処理することもできる。本明細書で使用する「データ・セグメント」は、データのセグメントを暗示するに過ぎない。したがって、データ・セグメントは、パケット、ブロック、フレーム、セル、データ単位、およびその一部、ならびに固定または可変の任意の長さのデータの他のすべてのグループ化に対して総称的である。
共用メモリ・スイッチング・ファブリックに、複数、この例では16個のファブリック入力ポート112−0から112−15(集合的に112)を有する入口装置110が含まれる。図1の単純化された実施形態では、入口装置が、16個の入口装置データ書込ポート115−0から115−15(集合的に115)を有する。各入口装置データ書込ポート115−iに、とりわけ、下でより十分に説明するように、アドレス部分115Aiとデータ部分115Di(図には別々に図示せず)の両方が含まれる。
図1の図では、メモリ114が、16個のバンク116に分割されている。入口装置データ書込ポート115は、それぞれ、共用マルチバンク・メモリ114のめいめいのメモリ・バンク116のめいめいのデータ書込ポートに接続される。しかし、実際のデバイスでは、メモリの異なるバンクが、図面に示されているように配置されない場合があり、互いに物理的に隣接する必要もない。バンク116は、この図では、116−0から116−15の番号を付けられている。一般的に言って、メモリ・バンク116−iのデータ書込ポートは、入口装置データ書込ポート115−iに結合され、i=0…15である。
共用マルチバンク・メモリ114は、さらに、複数のバッファ118に水平に分割されている。バッファには、118−0から118−(nbf−1)の番号が付けられている。各バッファ番号は、バンク116の1つの中での異なるアドレスを表す。したがって、データが、入口装置データ書込ポート115の1つから共用マルチバンク・メモリのメモリ・バンク116の1つに書き込まれる時に、入口装置は、共用マルチバンク・メモリ114の適当なデータ書込ポートに、書き込まれるデータだけではなく、データが対応するメモリ・バンク116内に書き込まれるアドレスまたはバッファ番号も指定する。本明細書で説明する実施形態では、データが、クワッドワード(QWD)(8バイト)データ単位で共用メモリ114のデータ書込ポートに供給される。各バンク内で、各バッファは、1つのクワッドワードのデータを保持するサイズにされている。さらに、この単純化された実施形態では、メモリ114内に16個のバンク116があるので、各バッファは、16個のクワッドワードまたは128バイトのデータを保持することができる。例示的実施形態では、共用メモリ114に、1664個のバッファが含まれ、これは、アドレッシングに11ビットを必要とする。
メモリ構造は、図1では行および列に配置されて示され、各列が「バッファ」と呼ばれ、各行が「バンク」と呼ばれているが、物理構造を異なるものにすることができることを諒解されたい。列を、本明細書では「バッファ」と呼ぶが、この用語を、本明細書でメモリのセクション以外の構造または目的を暗示するものと解釈してはならない。同様に、メモリ「バンク」は、各バッファをメモリ・セグメントに分割する。通常、すべてのバッファに、同一の個数のメモリ・セグメントが含まれるが、これは、本発明のいくつかの態様で、絶対必要条件ではない。
共用メモリ114の各バンク116は、バンク内の指定されたバッファからクワッドワードのデータを読み取るための対応するデータ読取ポートを関連付けられてもいる。各読取データ・ポートは、出口装置120の対応するポートに結合される。入口装置データ書込ポート112に似た形で、出口装置データ読取ポートに、122−0から122−15の番号が付けられている。各出口装置データ読取ポート122−iに、出口装置120から共用メモリ114に向かって流れるアドレス部分122Aiと、共用メモリ114から出口装置120に向かって流れるデータ部分122Diが含まれる。共用メモリ114の特定のバンク内の特定のバッファからデータ単位を読み取るために、出口装置は、共用メモリ114の適当な読取データ・ポートに読取アドレス(バッファ番号)を供給する。共用メモリ114は、指定されたバッファからデータを取り出し、このデータを、読取アドレスが供給されたのと同一の出口装置データ読取ポートで出口装置120に供給する。出口装置120は、16個の出口装置出力ポート(ファブリック出力ポートとも称する)124−0から124−15(集合的に124)も有する。
図1のスイッチング・ファブリックに、入口装置110によって受け取られ、共用メモリ114に書き込まれた各データ・パケットを伝送するシーケンス順序および宛先ファブリック出力ポート124を判定するパケット記述子プロセッサ(PDP)126も含まれる。PDPは、データ・パケットがファブリック入力ポートの到着した時にそのデータ・パケットのヘッダ内の情報に基づいて宛先ファブリック出力ポートを決定し、それがファブリックに到着したシーケンスならびに各パケットのサービスのクラスに基づいて、ファブリック出力ポートを介する送信のためにパケットがキューイングされるシーケンスを決定する。PDPは、より高い優先順位のパケットへのより高い優先順位の切替を許可するために、発信データ・パケットを1ブロック(8クワッドワード、64バイト)境界でプリエンプトさせることができる。図1のスイッチング・ファブリックに、とりわけ、共用メモリ114内のバッファを割り振り、その使用を記憶するメモリ管理ユニット(MMU)128(下で図4、5、および15に関してより十分に説明する)も含まれる。図1のスイッチング・ファブリックには、図1のファブリックの動作を監督するのに必要なプロセッサおよびさまざまな他の制御機能を含めることができる、制御回路130も含まれる。制御ユニット130は、図1では別々の単一モジュールとして示されているが、実際の実装で、制御ユニット130のさまざまな部分または機能を、実際にはファブリックのさまざまなモジュールの間で分散することができることを諒解されたい。
入口装置110に、ファブリック入力ポート112ごとに1つの受信ポート・コントローラ(RXPC)140(下で図2および10に関してより十分に説明する)が含まれる。各受信ポート・コントローラ140−iは、それに対応するファブリック入力ポート112−iからデータ単位をストリームで受け取る。下でより詳細に説明するある任意選択の並べ換えの後に、RXPC 140−iは、めいめいのストリーム132−iで、書込スイッチ134の対応する入力ポートにデータ単位を供給する。各ストリーム132−iに、他の情報の中でも、アドレス部分132Aiとデータ部分132Di(別々には図示せず)の両方が含まれる。データ部分132Diは、1クワッドワードのデータを担持し、アドレス部分132Aiは、データが書き込まれるバッファ・アドレスを担持する。書込スイッチは、入口装置110のデータ書込ポート115を形成する16個の出力ポートを有する。書込スイッチ134は、本質的に、その出力115−iのそれぞれで、受信ポート・コントローラの回転するシーケンスからの情報を供給する循環データ経路ローテータ(cyclical data path rotator)である。したがって、あるサイクルのk番目のタイム・スロットごとに、書込スイッチ134は、その出力ポート115−iのそれぞれで、RXPC 140−(i+k)からのアドレスとデータの組合せを供給する。言い換えると、受信ポート・コントローラ140によってそのめいめいの出力データ・ストリーム132に出力されるデータ単位は、入口装置データ書込ポートの回転するシーケンスに現れ、各RXPC 140−iによってその出力データ経路132−iに出力される各k番目のデータ単位が、入口装置データ書込ポート115−{(i+k)mod16}に現れる。各データ単位が、書込スイッチ134の循環回転に従って共用メモリ114の正しいバンク116に書き込まれるために正しい時に書込スイッチ134に供給されることを保証するのは、受信ポート・コントローラの責任である。
本明細書で使用する用語「タイム・スロット」は、参照の特定の入力で経験される定義された時間期間を指す。「特定の時間スロットに」あるユニットから別のユニットに供給される情報は、その特定のタイム・スロット内に宛先ユニットに達するのに適当な時にソース・ユニットから供給される。パイプライン化遅延および他の遅延に起因して、情報は、ソース・ユニットによってより以前のタイム・スロット中にアサートされる場合があり、その結果、この情報が、所望の特定のタイム・スロット内に宛先で受け取られるようになる。1実施形態で、タイム・スロットは、宛先参照ユニットで受け取られるクロック信号によって定義することができ、各タイム・スロットは、完全な1クロック・サイクル(セットアップ時間およびホールド時間を除く)と等しい持続時間を有する。複数の出力が、「特定のタイム・スロットに」情報を供給すると言われる場合に、その情報が、異なるタイム・スロット中に異なる出力によってアサートされる可能性があるが、これらの情報のすべてが、共通の「特定の」タイム・スロット中に参照ユニットに現れる。もう1つの実施形態で、タイム・スロットを、連続する複数のクロック期間によって定義することができる。この場合に、複数の出力が「特定のタイム・スロットに」情報を供給すると言われる場合に、システムは、各出力が、その特定のタイム・スロット内の特定のクロック・エッジに間に合って宛先参照ユニットで受け取られるのに間に合ってその情報をアサートするように設計することができる。したがって、情報は、スタッガード式または時間領域多重化(time domain multiplexed、TDM)の形で宛先ユニットに供給し、宛先ユニット内でクロッキングすることができ、各ソース出力は、特定のタイム・スロット内のめいめいの事前に割り当てられたイベントに間に合って宛先ユニットに達するように情報をアサートする。
出口装置120には、ファブリック出力ポート124ごとに1つの送信ポート・コントローラ(TXPC)142(下で図3、13、および14に関してより十分に説明する)も含まれる。各送信ポート・コントローラ142は、共用メモリ114内のデータ・パケットからのストリーム内の、対応するファブリック出力ポート124宛のデータ単位を送出する。PDP 126は、データ単位の取出を開始すべき共用メモリ114内の開始アドレス(バッファ番号およびバンク番号)について各TXPC 142に通知し、TXPC 142は、読取スイッチ136を介して適当なデータ単位をシーケンシャルに要求する。読取スイッチ136は、その16個のデータ読取ポート122が共用メモリ114の対応するデータ読取ポートに接続されているという点で書込スイッチ134に似ている。書込スイッチ134に似て、読取スイッチ136は、個々のTXPC 142からのデータ取出要求(一部はアドレス)を、循環式に回転するシーケンスでメモリ114のさまざまなバンク116のさまざまなデータ読取ポートに運ぶ。ある[固定された???]時間の後に、共用メモリ114から取り出されたデータが、データ読取ポートのデータ部分122D(別々には図示せず)を介して要求元のTXPC 142に返される。読取スイッチ136内の戻りデータ経路は、その取出要求を運ぶ経路と同一の形で回転するが、各データ単位がそれを要求したものと同一のTXPC 142に返されることを保証するために、適当な固定されたクロック・サイクル数だけ遅延されている。各TXPC 142−iは、めいめいの通信経路138−iのアドレス部分138A−i(別々には図示せず)でそのデータ取出要求のアドレスを供給し、めいめいの通信経路138−iのデータ部分138D−i(別々には図示せず)を介して戻りデータを受け取る。
あるサイクルのk番目のタイム・スロットごとに、共用メモリ・データ読取ポートで、読取スイッチ136が、共用メモリ114のデータ読取ポートのアドレス部分122Aiに向かって、TXPC 142−{(i+k)mod16}からの取出アドレスを供給する。言い換えると、送信ポート・コントローラによってそのめいめいの取出アドレス線138Aで生成されたデータ取出アドレスは、共用メモリ114のデータ読取ポートに向かって出口装置ポートの回転するシーケンスに現れ、各TXPC 142−iによって読取スイッチ136に向けてその経路138Aiで生成された各k番目のデータ取出アドレスが、それぞれ出口装置読取データ・ポート122−{(i+k)mod16}に現れる。各データ取出アドレスが、読取スイッチ136の循環回転に従って共用メモリ114の正しいバンク116のデータ読取ポートに供給されるために正しい時に読取スイッチ136に供給されることを保証するのは、送信ポート・コントローラ142の責任である。
同様に、i番目の共用メモリ・データ読取ポートで、あるサイクルのk番目のタイム・スロットごとに、読取スイッチ136は、データ読取ポート122−iのデータ部分122Di(別々には図示せず)から、k番目のタイム・スロットについてTXPC 142−iによって要求されたデータ単位を運ぶ。読取スイッチ136は、そのようなデータ単位をデータ経路138D{(i+k)mod16}に転送する。言い換えると、そのめいめいの戻りデータ線138Dで送信ポート・コントローラ142に返されるデータは、バンク116の回転するシーケンスから読み取られ、経路138Diで読取スイッチ136によって各TXPC 142−iに向かって転送される各k番目のデータ単位は、バンク116{(i+k)mod16}から取り出される。
全体的な動作
図1のファブリックの全体的な動作で、データ・パケットは、個々のRXPC 140によって入口装置110に受け取られ、RXPC 140は、このデータ・パケットを共用マルチバンク・メモリ114に書き込む。RXPC 140は、送出すべきパケットの可用性についてPDP 126に通知し、PDP 126は、適当な1つまたは複数のTXPC 142にパケットの送出を開始するように通知する。RXPC 140は、データのパケットをメモリ114に書き込む時に、パケットのシーケンシャル・データ単位をバッファの連続するバンクに書き込む。データ・パケットが、バッファの終りの前に終了する場合に、RXPC 140は、次のデータ・パケットを、同一のバッファの次の連続するバンクに書き込む。RXPC 140が、データ・パケットの終りに達する前にバッファの終りに達した場合には、MMU 128が、新しいバッファをRXPC 140に割り振り、このRXPC 140は、新しいバッファのバンク0から開始して、パケットのさらなるデータ単位の書込を継続する。所与の着信データ・パケットのシーケンシャル・データ単位が、共用メモリ114内の各バッファの連続するバンクに書き込まれるので、各次のシーケンシャル・データ単位を見つけるべき場所を示すリンキング情報を、共用メモリ114内のパケットのシーケンシャル・データ単位に含める必要はない。ある従来技術の設計では、そのようなリンキング情報が、共用メモリ内の空間の20%程度を占める可能性がある。さらに、複数のデータ・パケットの単位を単一のバッファにパックすることができることによって、図1のファブリックは、各パケットが新しいバッファのバンク0から始まることを必要とするシステムで浪費される可能性がある、パケットの終りを超えるバッファ空間のすべてを浪費することを防止する。
本明細書で使用される、2つのデータ単位が「シーケンシャル」であるのは、これらが伝送線に到着する際に時間的に連続している場合すなわち、一方が、間の他のデータ単位なしで他方に続く場合である。本明細書で「データ・パケット内でシーケンシャル」と記述されるデータ単位は、それでも、他のデータ単位、たとえば異なるインターリーブされたデータ・パケットのデータ単位によって、互いに分離されることができる。特定のデータ・パケット内のデータ単位だけを考慮する時に、2つのデータ単位がシーケンシャルである限り、この2つのデータ単位は、本明細書では「データ・パケット内でシーケンシャル」と考えられる。データ・パケットは、互いにインターリーブされている場合であっても「シーケンシャル」と考えられ、この場合のシーケンスは、データ・パケットが始まるシーケンスである。RXPC 140内で、「シーケンシャル」に到着したデータは、別の形で並列化または再編成することができる。しかし、通常、データのシーケンシャルな性質は、少なくとも論理的に維持される。
メモリ内の「連続する」ストレージは、メモリ内の連続するアドレスを有する。2つのアドレスが連続するのは、デバイスが、アドレスが増分される決定論的シーケンスを使用し、その決定論的シーケンスに従うアドレスの一方の1回の増分が、他方のアドレスを作る場合である。必ずではないが通常、決定論的シーケンスは、各次のアドレスが、前のアドレスより1つ高くなるものである。連続するメモリ位置は、連続するアドレスが決定論的シーケンスに従って厳密に数値的にシーケンシャルである場合であっても、物理的に隣接する必要がない。
共用メモリ114に保管されたパケットは、通常は、もちろん、メモリに書き込まれたのと同一の順序で伝送のために取り出されるのではない。したがって、特定のバッファ118に、複数のデータ・パケットからの単位が含まれる場合に、あるデータ・パケットの完全な取出は、必ずしも、そのバッファを再利用のために入口装置に解放できることを意味しない。バッファ使用および解放の情報を記憶するために、図1のファブリック、具体的にはMMU 128は、使用中のバッファ118ごとに、バッファが「空」と考えられる前に必要なバッファ「タッチ(touch)」の個数を示すストアを維持する。本明細書で使用される、メモリの部分(たとえば、バンクまたはバッファ)が「空」であるのは、それに含まれるデータについてそれ以上の使用が行われない場合である。メモリの部分が消去されている必要はない。
図1の実施形態でのバッファ「タッチ」には、そのバッファからのパケットの最後のデータ単位の読取が含まれ、そのバッファの最後のデータ単位の読取も含まれる(パケットの最後のデータ単位がバッファの最後のデータ単位と一致する場合には、1つのタッチだけが登録される)。1実施形態で、バッファが空と考えられる前に必要なバッファ・タッチの個数は、そのバッファ内で「表される」データ・パケットの個数と同一である。データ・パケットがバッファ内で「表される」のは、そのバッファに、そのパケットの少なくとも1つのデータ単位が含まれる場合である。したがって、最初のデータ単位が、所与のバッファの途中で終わり、次のデータ単位が、次の連続するバンクで始まり、別のバッファにオーバーフローしている場合に、所与のバッファのパケット使用カウントは2すなわち、最初のデータ・パケットの最後のデータ単位を取り出すための1つと、バッファの最後のデータ単位を取り出すための1つである。
バッファ使用カウントを維持することによって、マルチキャスト機能の実装も可能になる。具体的に言うと、特定のバッファ内で表される特定のデータ・パケットが、複数、たとえば3つのファブリック出力ポート124宛である場合に、その特定のバッファのバッファ使用カウントは、3タッチを計上するはずである。より一般的に言うと、バッファ使用カウントは、バッファ内で表されるすべてのパケットに関する、バッファ内で表されるパケットのそれぞれがあてられた出力ポートの個数の合計を示す。パケットがユニキャスト・パケットである場合に、そのパケットは1つのファブリック出力ポートだけにあてられているので、バッファ使用カウントに、そのパケットについて1つのタッチだけが含まれる。パケットがマルチキャスト・パケットであり、N個のファブリック出力ポート宛である場合に、バッファ使用カウントに、そのパケットについてNタッチが含まれる。図1のファブリックでは、特定のパケットのために保管されたバッファからデータを取り出すように各宛先出力ポート124のTXPC 142に指示するのは、PDP 126の仕事である。3つのファブリック出力ポート124宛のマルチキャスト・パケットについて、PDP 126は、対応する3つのTXPC 142のそれぞれに、同一のデータを取り出すように指示する。各そのようなTXPCは、パケット・データのそれ自体の取り出しに関連して、1つのバッファ・タッチについてMMU 128に通知する。MMU 128は、受け取ったタッチの個数を記憶し、バッファで表された各データ・パケットがあてられたTXPC 142のすべてがタッチを示した時に限ってバッファを解放する。
共用メモリ114のTDMインターフェースを除いて、RXPC 140は、互いとおよびTXPC 142と独立に動作する。図2は、RXPC 140によって実行される主要な機能を示す単純化された流れ図である。本明細書で流れ図を示す時には、図示されたステップの多くを、達成される機能に影響せずに並列にまたは異なるシーケンスで実行できることを諒解されたい。図2の流れ図では、MMU 128が、RXPC 140に空きバッファを割り振る(ステップ210)。RXPC 140は、空きバッファ番号プリフェッチFIFOを維持し、空きバッファ番号プリフェッチFIFOは、FIFOが満杯でない時に、必ず、MMU 128に次の空きバッファ番号を事前要求する。ステップ212中に、RXPC 140が、対応するファブリック入力ポート112からデータ・パケットのデータ単位を受け取る。ステップ222中に、テストを実行して、受け取ったデータ単位がパケットの最初のデータ単位であるかどうかを判定する。それがパケットの最初のデータ単位であると判定される場合に(ステップ214)、RXPC 140が、パケット記述子情報を保管し(ステップ216)、これがPDP 126に送られる。パケット記述子情報には、共用メモリ114内でのパケットの開始アドレス(バッファ番号およびバンク番号)、サービスのクラス、およびこの説明に関係しない他の情報が含まれる。パケット記述子情報には、PDP 126が宛先の1つまたは複数のTXPC 142(ユニキャストまたはマルチキャスト)を決定するのに使用できる着信パケット・ヘッダからの情報も含まれる。
ステップ218で、RXPC 140が、現在のデータ・パケットを計上するために現在のバッファのパケット使用カウントを更新する、すなわち、ユニキャスト・パケットの場合に、RXPC 140は、パケット使用カウントによって示されるカウントを1つ増分するか、これが現在のバッファへの最初の書込である場合にはカウントをクリアする。マルチキャスト・パケットの場合には、前に述べたように、RXPC 140は、このパケットがあてられたTXPC 142(その情報は着信フレーム・ヘッダから入手可能である)の総数だけパケット使用カウントを増分するか、これが現在のバッファへの最初の書込である場合にはその数をカウントにセットする。本明細書で使用する情報の項目を「示す」値は、必ずしも、情報のそのような項目が直接に指定されることを必要としない。情報は、インダイレクションの1つまたは複数の層を介して実際の情報を単純に参照することによって、または情報の実際の項目を判定するのに十分な1つまたは複数の異なる情報の項目を識別することによって、「示す」ことができる。さらに、用語「識別する」は、本明細書では「示す」と同一のことを意味する。図1の実施形態では、バッファ使用カウントを「示す」ために保管される実際の値が、実際のカウントより1つ少ない。他の実施形態では、他の形でこのカウントを示すことができる。
ステップ220で、現在のデータ単位がパケットの最初のデータ単位であるか否かにかかわらず、RXPC 140が、共用メモリ114内の現在のバッファ118の最初の(次の)メモリ・バンクへの書込のために現在のデータ単位をキューイングする。ステップ222中に、テストを実行して、現在のバッファが満杯であるかどうかすなわち、バッファの終りに達したかどうか、または現在のバッファへの最後の書込以降にタイムアウトが経過したかどうかを判定する。現在のバッファが満杯であるか、現在のバッファへの最後の書込以降にタイムアウトが経過したと判定さる場合には、RXPC 140が、現在のバッファの最後のバッファ使用カウントについてMMU 128に通知する(ステップ224)。空きバッファ番号プリフェッチFIFOからの次空きバッファ番号が、現行バッファ番号になり、空きバッファ番号プリフェッチFIFOが、MMU 128に次空きバッファ番号を事前要求する(ステップ226)。ステップ228で、RXPC 140が、最後のバッファ番号から現行バッファ番号へのリンケージ(TXPC 142の動作に関連して使用される)についてMMU 128に通知する。現在のデータ単位が、パケットの最後のデータ単位でもある場合には、このリンケージ情報が絶対に使用されないことに留意されたい。したがって、もう1つの実施形態では、RXPCは、バッファの最後のデータ単位がパケットの最後のデータ単位でもある場合に、バッファ・リンケージについてMMUに通知することを省略することができる。
ステップ230で、フレーム・フォーマットによって示されるように(着信フレームのトレーラ内のパケットの終り(EOP)表示など)、現在のデータ単位がパケットの最後のデータ単位である場合に、RXPC 140は、その保管されたパケット記述子情報とパケット長情報をPDP 126に送る。
図3は、TXPC 142(図1)によって実行される主要な機能を示す単純化された流れ図である。ステップ310で、TXPC 142は、データの特定のパケットを共用メモリ114から送る指示をPDP 126から受け取る。そのような指示は、TXPC
142内のパケット送信指示FIFO(図示せず)に蓄積され、共用メモリ内のパケットの開始アドレス(バッファ番号およびバンク番号)、パケット長、サービスのクラス、およびこの説明に重要でない他の情報を含む。ステップ312で、指定された開始バッファ番号が、現行バッファ番号になる。ステップ314で、TXPC 142が、現行バッファ番号を供給することによって、MMUに次のリンクされたバッファ番号を事前要求する。TXPC 142は、MMU 128からの次のリンクされたバッファ番号の事前フェッチFIFO(図示せず)を維持し、バッファ番号がこのFIFOの先頭から取られる時に、必ず末尾からこのFIFOを再充てんする。
ステップ316で、TXPC 142は、現在のバッファの指定された開始(または次の連続する)メモリ・バンクからデータ単位を取り出し、TXPC 142に関連するファブリック出力ポート124への送出のためにキューイングする。ステップ318中に、テストを実行して、取り出されたデータ単位がパケットの最後のデータ単位であるかどうか(PDP 126からの指示のパケット長値によって示される)、または取り出されたデータ単位が現在のバッファの最後のデータ単位であるかどうかを判定する。取り出されたデータ単位が、パケットの最後のデータ単位であると判定された場合、または、取り出されたデータ単位が、現在のバッファ内の最後のデータ単位であると判定された場合(ステップ318)に、TXPC 142は、現在のバッファのタッチについてMMU 128に通知する(ステップ320)。次に、テストを実行して、取り出されたデータ単位が現在のバッファ内の最後のデータ単位であるかどうかを判定する(ステップ322)。取り出されたデータ単位が現在のバッファ内の最後のデータ単位であると判定された場合に、事前要求された次のリンクされたバッファ番号が、現行バッファ番号になる(ステップ324)。ステップ326中に、テストを実行して、取り出されたデータ単位が、パケットの最後のデータ単位であるかどうかを判定する。取り出されたデータ単位がパケットの最後のデータ単位であると判定された場合(ステップ326)に、TXPC 142は、ステップ310に戻って、PDP 126からの次のパケット送信指示を処理し、そうでない場合には、TXPC 142は、ステップ316に戻って、現在のバッファの次の連続するバンクから次のデータ単位を取り出す。
MMU 128によって実行されるさまざまな動作または機能を最もよく理解するために、まず、共用メモリ114内のバッファ使用を管理するためにMMU 128が使用するさまざまなリストおよびメモリを識別することが有用である。図4に、これらのリストの単純化された組を示す。図からわかるように、MMUは、前に図1に関して説明したバッファ使用カウントの表示を含むバッファ状況ストア408を維持する。このストアは、バッファ番号によってインデクシングされ、前に述べたように、このリストに含まれる実際の値は、対応するバッファ118が空と考えられる前にMMU 128が通知(TXPC 142から)を受け取らなければならないタッチの数より1つ少ない。カウントは、RXPC 140によって供給されるバッファ使用カウントに応答して「書き込まれ」、TXPC 142からのタッチ通知に応答して「更新される」。本明細書で使用する値の「書込」は、その前に以前の値の読取があってもなくてもよく、値の「更新」は、以前の値に依存する値の書込を指す(メモリからの読取(read−modify−write)または他所からの読取のいずれであれ)。
1実施形態で、バッファ状況ストア408に、現在のカウントを含む単一のリストを含めることができ、この現在のカウントは、RXPC 140によって書き込まれ、TXPC 142によってタッチに従って減分される。そのような実施形態では、バッファは、そのバッファの現在のカウントが0になった時に、空であり、再利用に使用可能と考えることができる。しかし、図4の実施形態では、バッファ状況ストア408に、2つの別々のリストすなわち、両方がバッファ番号によってインデクシングされる、バッファ使用カウンタ・リスト410およびバッファ解放カウンタ・リスト412が含まれる。MMU 128がバッファに関するタッチ通知を受け取った時に必ず各バッファのバッファ使用カウントを減分するのではなく、MMU 128は、その代わりに、バッファ解放カウンタ・リスト412の対応する項目を増分する。この2つのカウントが等しい時に、空のバッファが示される。両方の実施形態で、特定のバッファのカウント「によって示される」数は、本明細書での用語「示す」の使用のゆえに、そのバッファのタッチ通知に応答して「減分される」と言うことができる。
MMU 128に、RXPC 140への割振りのための空きバッファ番号を含む空きバッファ・リスト414も含まれる。空きバッファ・リスト414は、FIFO構造である。バッファ番号は、このFIFOの先頭からRXPC 140に供給され、TXPC 142によって空にされ、解放された(バッファ使用カウンタ・リスト410およびバッファ解放カウンタ・リスト412に従って)バッファは、空きバッファ・リスト414の末尾に追加される。他の実施形態では、空きバッファ・リスト414を、それぞれがめいめいのバッファに対応し、それぞれがバッファが空いているかどうかを示すビットのベクトルなど、他の形で構成することができる。MMU 128に、バッファ・リンケージ・リスト416も含まれる。バッファ・リンケージ・リスト416は、現行バッファ番号によってインデクシングされ、前にRXPC 140によって供給された次のリンクされたバッファ番号をその項目内で示す。
MMU 128には、一連の循環「トレース」メモリまたはリスト418−0から418−15も含まれ、1つのリストが、RXPC 140のそれぞれに対応する。各メモリ418は、ある長さのC個の項目を有し、対応するRXPC 140に最も最近に割り振られたC個のバッファ番号のリストを含む。メモリ418は、回転するサイクルでのみ書き込まれ、新しい項目が、最も最近のC個より古い、以前の項目を上書きするようになっている。1実施形態で、C=6である。循環トレース・メモリ418の目的を、後で説明する。
図5A、5B、5C、5D、および5E(集合的に図5)は、MMU 128によって実行される5つの特定の機能を示す流れ図である。図5Aに、RXPC 140からバッファ要求を受け取った時に実行される機能が示されている。ステップ510で、MMU 128が、空きバッファ・リスト414の先頭にあるバッファ番号をRXPC 140に送る。ステップ512で、MMU 128が、割り振られたバッファ番号を、空きバッファのリスト414から、それを要求したRXPC 140の循環トレース・メモリ418の末尾に移動する。
図5Bでは、MMU 128が、RXPC 140からバッファ使用カウント・レポートを受け取った時に、RXPC 140からのバッファ使用カウントを、指定されたバッファ番号によってインデクシングされるバッファ使用カウンタ・リスト410に書き込む(ステップ514)。
図5Cでは、MMU 128が、次のリンクされたバッファの要求をTXPC 142から受け取った時に、バッファ・リンケージ・リスト416の供給された現行バッファ番号の項目に保管されたバッファ番号を取り出す(ステップ516)。
図5Dでは、MMU 128が、TXPC 142からバッファ・タッチ通知を受け取る場合に、MMU 128は、バッファ解放カウンタ・リスト412の指定された現行バッファ番号に対応する項目からバッファ解放カウントを取り出し、バッファ使用カウンタ・リスト410の指定されたバッファ番号に対応する項目からバッファ使用カウントを取り出す。次に、テストを実行して、この2つのカウントが等しいかどうかを判定する。ステップ518中に、この2つのカウントが等しくない(バッファがまだ空でない)と判定される場合には、MMU 128は、指定されたバッファのバッファ解放カウントを増分し(ステップ520)、この手順が終了する。2つのカウントが等しい(バッファが空である)場合には、MMU 128は、バッファ解放カウンタ・リスト412内の指定されたバッファのバッファ解放カウントをクリアし(ステップ522)、ステップ524で、MMU 128は、指定されたバッファ番号を空きバッファ・リスト414の末尾に追加する。バッファ・リンケージ・リスト416から、解放されたばかりのバッファ番号を消去する必要はない。というのは、それを現在含んでいる項目が、前のバッファ番号によってインデクシングされる項目であり、関連するバッファが新たにリンクされたバッファ番号によって既に上書きされた後になるまでもう一度読み取られないからである。
バッファのスクラビング(Scrubbing)
共用メモリ114(実際には、すべての共用メモリ)は、入口装置110からのデータ単位を保管するのに使用可能な限られた個数のバッファ118を有する。バッファは、入口装置110によって使用され、その後、空にされた後に、出口装置120によって解放される。図1の実施形態のMMU 128は、バッファ118を記憶し、必要な時にバッファ118を入口装置110に割り振り、空になった時に空きリスト414に解放する責任を負う。バッファが失われることが発生する可能性がある。たとえば、MMU 128が、RXPC 140の1つに空きバッファ番号を提供する場合に、アルファ粒子が、RXPC 140にクロッキングされる時にバッファ番号の1つのビットを反転させる可能性がある。この場合に、RXPC 140は、MMU 128によって割り振られたものと異なるバッファ番号を受け取る可能性がある。RXPC 140は、次のデータ単位を誤ったバッファに書き込み、その後、通常に進行する。MMU 128によって割り振られたバッファ番号は、どのRXPC 140によっても書き込まれず、MMUの空きバッファ・リスト414にないので別のRXPC 140に割り振るのに使用可能ではなく、RXPC 140からPDP 126に送られるパケット・バッファ情報で絶対に言及されず、PDP 126がどのTXPC 142にも絶対にそのバッファ番号から読み取るように指示しないので絶対に出口装置120によって解放されない。したがって、MMU
128によって割り振られたこのバッファ番号が、失われる。数時間、数日、または数週間の期間を経て、共用メモリ114内のかなりの個数のバッファ118が、同様の形で失われる可能性がある。
この問題を克服し、すべての失われたバッファを回復するために、制御ユニット130は、時々(たとえば、数時間程度)バッファ・スクラブ動作を実行するようにMMU 128に指示する。図5Eは、そのような指示に応答してMMU 128内のバッファ・スクラブ論理によって実行される動作を示す流れ図である。ステップ526で、MMU 128が、すべてのバッファ番号を通るループを開始する。たとえば、共用メモリ114に1664個のバッファが含まれる場合に、MMU 128は、番号0〜1663を通ってループする。もう1つの実施形態で、一部またはすべてのバッファ番号を並列に検査することができるが、図1の実施形態では、バッファ消失が、失われたバッファの回復に対する緊急性がないのに十分に低い頻度で発生するので、シリアル・ループが十分に高速である。
バッファ番号が失われていない場合に、任意の所与の時に、そのバッファ番号は、空きバッファ・リスト414にあるか、RXPC 140の1つに割り振られ、したがってRXPC 140の循環トレース・メモリ418内で表されているのいずれかである。ステップ528で、この2つの可能性を処理する。第3の可能性は、バッファ番号がRXPC 140に割り当てられ、対応する循環トレース・メモリ418に書き込まれたが、その後、同一のRXPC 140に割り振られた後続のバッファ番号によって循環トレース・メモリ418内で上書きされたことである。この場合に、バッファが失われていないならば、それが割り振られたRXPC 140が、最終的にそのバッファを見つけ、PDP 126が、最終的に出口装置120にそれを空にさせる。この第3の可能性が、ステップ532および534で処理される。
したがって、ステップ528で、MMU 128内のバッファ・スクラブ論理が、現行バッファ番号について空きバッファ・リスト414およびすべての循環トレース・メモリ418をスキャンする。バッファ番号ごとに、テストを実行して、そのバッファ番号がこれらのメモリの1つに保管されているかどうかを判定する(ステップ530)。バッファ番号がこれらの位置の1つに保管されていると判定された場合に(ステップ530)、このルーチンは、ステップ526に戻って、次のバッファ番号を調べるが、そうでない場合には、スクラブ論理は、所定の(ソフトウェア・プログラム可能)ウォッチ期間の間、現行バッファ番号のバッファ解放コンパレータをウォッチする(ステップ532)。ウォッチ期間には、少なくとも、パケットがファブリックをトラバースする最大の期待される待ち時間と、RXPC 140がバッファを満たすのに期待される最大の時間の合計程度がセットされることが好ましい。したがって、バッファが、循環トレース・メモリ418の1つで既に上書きされたので空きバッファ・リスト414およびすべての循環トレース・メモリ418に存在しない場合に、そのバッファは、ウォッチ期間中に確かに解放される。ウォッチ期間の終りまでにバッファが解放された場合に(ステップ534)、現行バッファ番号は、失われておらず、バッファ・スクラブ論理は、ステップ526に戻って次のバッファ番号を調べる。現行バッファ番号が、ウォッチ期間の終りまでに解放されなかった場合に(ステップ534)、そのバッファ番号は、失われたと考えることができ、回復されなければならない。もう1つの実施形態では、バッファ・スクラブ論理は、TXPCからのバッファ・タッチ表示自体など、バッファ解放論理の異なる部分をウォッチすることができる。スクラブ論理は、ステップ536で、失われたバッファ番号を空きバッファ・リスト414に書き込むことによって、失われたバッファを回復する。次に、バッファ・スクラブ論理は、ステップ526に戻って、次のバッファ番号を調べる。すべてのバッファ番号を検査した時に、バッファ・スクラブ手順が終了する(ステップ538)。
共用マルチバンク・メモリ
共用メモリ114(図1)は、バンクごとに1つの16個のレジスタ・ファイルを用いて構成することができる。メモリ・バンク116は、単一ポート・メモリとすることができ、その場合に、メモリへの出口アクセスは、メモリへの入口アクセスと交番するように設計することができる。しかし、図1の実施形態では、各バンク116が、1つの読取ポートと1つの書込ポートのデュアル・ポート・メモリを用いて構成されている。デュアル・ポート・メモリは、読取と書込を同時に行うことを可能にし、メモリによって許容されるデータ・レートが効果的に2倍になる。
データ・レートは、グループでメモリの追加バンクを追加し、バンク116の各グループにM個のバンク・メンバが含まれるようにすることによってさらに高めることができる。図6は、メモリ・バンクの各グループにM個のメンバがある、メモリ・バンクのN個のグループを有する共用メモリ114の編成を示すブロック図である。図1のファブリックでは、N=16およびM=1である。図6を参照すると、バンクのN個のグループ616、616−0から616−(N−1)が示されている。グループ616−0に、M個のバンク・メンバ617−(0,0)から617−(0,(M−1))が含まれる。同様に、グループ616−(N−1)に、M個のバンク・メンバ617−((N−1),0)から617−((N−1),(M−1))が含まれる。一般に、グループ616−gに、M個のバンク・メンバ617−(g,0)から617−(g,(M−1))が含まれる。メモリ114は、図1に示されているように、水平次元でバッファ118に分割されたままである。
図に示され、本明細書に記載された番号付けは、説明の正確さのために便利であるが、図の項目番号とデバイス上の物理的項目の間の対応が、完全に任意であることを諒解されたい。この対応の唯一の必要条件は、図で異なる番号を担う項目が、物理デバイスの異なるめいめいの項目に対応することである。さらに、項目の組が、本明細書ではハイフン指定を用いて番号を付けられているが、ハイフン付きのサフィックスがない同一の指定が、これらの項目の例示的な1つを指すことを理解されたい。たとえば、グループのg番目のメンバに、616−gという番号を付ける場合があるが、そのグループのすべての例示的メンバを、本明細書で単に616として参照する場合があることを理解されたい。
各メモリ・バンク・グループ616−gに、M個のデータ書込ポート612(g,0)から612−(g,(M−1))(例示的に612)およびM個のデータ読取ポート622−(g,0)から622−(g,(M−1))(例示的に622)が含まれ、これらのすべてを同時にアクティブにすることができる。各データ書込ポートに、データ部分およびアドレス部分だけではなく、データ有効信号(図示せず)と、メモリ114のグループ化された構成を最もよく利用するためにグループ・メンバ選択信号が含まれる。グループ・メンバ選択信号の使用を介して、入口装置110は、メモリ・バンクのグループのいずれかのデータ書込ポートのデータ部分のデータを、グループの任意のバンク・メンバ内の指定されたアドレスに書き込むことを指示することができる。たとえば、データ書込ポート612−(0,0)で、グループ・メンバ選択信号が、データをグループ616−0のM個のバンク617のいずれかの指定されたアドレスに書き込むことを指定することができる。類似する機能が、データ読取ポート622側で出口装置120に提供される。したがって、効果的に、入口装置110および出口装置120のそれぞれが、メモリ114の所与のグループの所与のバンクとの間でそれぞれデータを書き込むか読み取るためのM個の使用可能な経路を有する。この機能によって、効果的に、メモリ114の使用可能データ・スループットがM倍になる。
図7Aおよび7Bは、メモリ114内のバンクのグループ616−gをどのように実装できるかを示すブロック図である。図7Aに、メモリ114のデータ書込側を示し、図7Bに、メモリ114のデータ読取側を示す。1つのグループ616−gだけが示されているが、他のグループ616は類似する。図7Aを参照すると、データ書込ポート612−(g,0)に、メンバ0データ部分710−0、メンバ0アドレス部分712−0、およびグループ・メンバ選択信号714−0が含まれる。同様に、データ書込ポート612−(g,1)に、メンバ1データ部分710−1、メンバ1アドレス部分712−1、およびグループ・メンバ選択信号714−1が含まれる。データ書込ポート612−(g,(M−1))に、メンバ(M−1)データ部分710−(M−1)、メンバ(M−1)アドレス部分712−(M−1)、およびグループ・メンバ選択信号714−(M−1)が含まれる。バンク617のそれぞれ自体が、M個のデータ書込ポートおよびM個のデータ読取ポートを含むマルチポート・メモリである。
バンク617のそれぞれのデータ書込ポート612のそれぞれに、さらに、ポートのデータおよびアドレスの情報が有効であるかどうかを示すイネーブル信号入力が含まれる。イネーブル線725がアサートされているデータ書込ポート612だけが、バンクにデータを書き込む。グループのデータ書込ポート612の各j番目のデータ書込ポートのアドレス部分およびデータ部分710−jおよび712−jは、それぞれ、グループのすべてのバンク617のj番目のデータ書込ポート612のアドレス部分およびデータ部分に共通して接続される。グループのデータ書込ポート612の各j番目のデータ書込ポートのグループ・メンバ選択信号714−jは、0から(M−1)までの範囲の番号を担持し、M個のバンク・メンバのうちのどれに、データ書込ポートjからのデータがロードされるかを示す。各グループ・メンバ選択信号714−jは、めいめいのデコーダ716−jに供給され、デコーダ716−jは、信号714−jをM個の別々のイネーブル信号にデコードし、このイネーブル信号のうちの1つだけを、ある時にアサートすることができる。各デコーダ716−jは、「valid」信号(図示せず)も受け取り、この信号は、アサートされていない場合に、デコーダ716−jに、そのイネーブル線出力のすべてをアンアサートさせる。各デコーダ716−jの各b番目の出力は、b番目のバンク617−(g,b)のj番目のデータ書込ポート612のイネーブル入力に供給される。したがって、グループ内の各b番目のバンク・メンバ617の各j番目のデータ書込ポート612のデータ部分のデータは、アドレス線712−jで指定されたアドレスに書き込まれるが、グループ・メンバ選択入力714−jによって指定されたバンクのみに、ポート612−(g,j)のvalid信号がアサートされている場合に限って書き込まれる。
図7Bを参照すると、データ読取ポート622−(g,0)に、メンバ0データ部分720−0、メンバ0アドレス部分722−0、およびグループ・メンバ選択信号724−0が含まれる。同様に、データ読取ポート622−(g,1)に、メンバ1データ部分720−1、メンバ1アドレス部分722−1、およびグループ・メンバ選択信号724−1が含まれる。データ読取ポート622−(g,(M−1))に、メンバ(M−1)データ部分720−(M−1)、メンバ(M−1)アドレス部分722−(M−1)、およびグループ・メンバ選択信号724−(M−1)が含まれる。
バンク617のそれぞれのデータ読取ポート622のそれぞれに、さらに、読取アドレスがそのデータ読取ポート622で有効であるかどうかを示すイネーブル信号入力が含まれる。そのイネーブル線735がアサートされているデータ読取ポート622だけが、取り出されるデータを出口装置120にアサートする。グループのデータ読取ポート622の各j番目のデータ読取ポートのアドレス部分およびデータ部分は、それぞれ、グループのすべてのバンク617のj番目のデータ読取ポート622のアドレス部分およびデータ部分に共通して接続される。グループのデータ読取ポート622の各j番目のデータ読取ポートのグループ・メンバ選択信号724−iは、0から(M−1)までの範囲の番号を担持し、M個のバンク・メンバのどれが、グループのデータ読取ポートjに向かってデータを駆動するかを示す。各グループ・メンバ選択信号724−jは、めいめいのデコーダ726−jに供給され、デコーダ726−jは、信号724−jをM個の別々のイネーブル線にデコードし、このイネーブル線のうちの1つだけを、ある時にアサートすることができる。各デコーダ726−jは、「valid」信号(図示せず)も受け取り、この信号は、アサートされていない場合に、デコーダ726−jに、そのイネーブル線出力のすべてをアンアサートさせる。各デコーダ726−jの各b番目の出力は、b番目のバンク617−(g,b)のj番目のデータ読取ポート622のイネーブル入力に供給される。したがって、そのグループ・メンバ選択入力724−jがアサートされているバンク・メンバ617だけのj番目のデータ読取ポート622が、ポート622−(g,j)のvalid信号がアサートされている場合に限って、アドレス線722−jで指定されたアドレスからのデータをデータ読取ポート622−(g,j)に駆動する。
グループ・メンバ選択信号724−jは、返されるデータと共に、対応するグループ・メンバ・ソース信号730−jとして出口装置120に返され、その結果、そのデータを受け取る送信ポート・コントローラ142が、そのデータが実際のどのバンク617から来たかを知るようになる。各グループ・メンバ・ソース信号730−jは、メモリ・バンク617の時間遅れと同等のめいめいの遅延要素728−jによって遅延される。
M=2である実施形態を、これから説明する。図8を参照すると、メモリ・バンク817の16個のグループ816が示されており、各グループ816に、2つのバンク817が含まれる。各g番目のグループ816−gは、gおよびg+16という番号を付けられた2つのデータ書込ポートと、同様の番号を付けられた2つのデータ読取ポートを有する。一般に、バンクのN個のグループおよび各グループ内のM=2個のメンバについて、g番目のグループ816−gのデータ読取ポートおよびデータ書込ポートは、gおよびg+Nという番号を付けられる。便宜上、各グループの2つのメンバを、本明細書では、時々、下メンバおよび上メンバと称し、下メンバは、0…15の範囲の番号を有するメンバであり、上メンバは、16…31の範囲の番号を有するメンバである。
各メモリ・バンク・グループ816−gに、メモリ・バンク・グループ816−gの、それぞれ本明細書で時々上データ書込ポートおよび下データ書込ポートとも称する2つのデータ書込ポート812−gおよび812−(g+16)が含まれる。各メモリ・バンク・グループ816−gに、2つのデータ読取ポート822−gおよび822−(g+16)も含まれる。所与のメモリ・バンク・グループ816のすべてのデータ読取ポートおよびデータ書込ポートを、同時にアクティブにすることができる。各データ書込ポートに、データ部分およびアドレス部分だけでなく、データ有効信号(図示せず)およびグループ・メンバ選択信号も含まれ、グループ・メンバ選択信号は、データ書込ポートがグループ816の上バンクと下バンクのどちらでデータ書込要求を実行するかを選択する。同様に、各データ読取ポートに、データ読取ポート822がグループ816の上バンクと下バンクのどちらから要求されたデータを取り出すかを選択するグループ・メンバ選択信号が含まれる。したがって、効果的に、入口装置110および出口装置120のそれぞれが、メモリ114の任意の所与のグループ816の所与のバンクとの間でデータを書き込むか読み取る2つの(1つは主、1つは代替)の使用可能なルート(1つは主、1つは代替)を有する。この機能によって、メモリ114の使用可能スループットが効果的に2倍になる。
入口装置
図9は、図8のM=2実施形態と共に使用される入口装置110の全体ブロック図である。これには、16個のRXPC 140および書込要求クロスバ・スイッチ134が含まれる。各RXPCは、メモリ・バンク817(図8)のグループ816の上データ書込ポートおよび下データ書込ポートを参照する2つの書込要求経路910Lおよび910Uを有する。書込要求クロスバ・スイッチ134は、16個の入力ポートI0−I15を有し、この入力ポートのそれぞれは、RXPC 140の対応する1つからの書込要求経路の対を受けるように接続される。この実施形態の書込要求経路910Lまたは910Uのそれぞれが、64ビット・データ単位、バッファ番号アドレス、RXPC 140内のバンク・カウンタの最上位ビット(MSB)を示す1ビット、および有効性を示す1ビットを担持することがわかる。
書込要求クロスバ・スイッチ134は、16個の出力ポートO0−O15も有する。書込要求クロスバ・スイッチ入力ポートと同様に、各書込要求クロスバ・スイッチ出力ポートは、2つの77ビット書込要求経路912Lおよび912Uを担持し、この実施形態には合計154ビットがある。各書込要求クロスバ・スイッチ出力ポートからの2つの書込要求経路912は、共用メモリ814のメモリ・バンク817の対応するグループ816の2つのめいめいのデータ書込ポートに供給される。図8に示されたポートおよびバンクの番号付けを参照すると、各経路912L−iは、共用メモリ814のデータ書込ポートiに接続され、各経路912U−iは、共用メモリ814のデータ書込ポートi+16に接続される。より一般的には、N個の書込要求クロスバ・スイッチ出力ポートがあり、それぞれにM個の書込要求経路912が含まれ、それぞれがM個のバンク817を含むメモリのN個のグループ816がある場合に、各i番目の書込要求クロスバ・スイッチ出力ポートの各j番目の経路912は、共用メモリ814の(i+N*j)番目のデータ書込ポートに接続され、i=0…(N−1)およびj=0…(M−1)である。
動作中に、書込要求クロスバ・スイッチ134は、その入力ポートの情報を、クロック・パルスごとに循環式に回転するシーケンスで出力ポートにルーティングする。たとえば、クロック・パルス0について、書込要求クロスバ・スイッチ134は、その入力ポートの各i番目をその出力ポートの対応するi番目にルーティングする。クロック・パルス1について、書込要求クロスバ・スイッチ134は、入力ポートI15が出力ポートO0に接続されることを除いて、その入力ポートの各i番目をその出力ポートの対応する(i+1)番目にルーティングする。一般的にいえば、書込要求クロスバ・スイッチ134のN個の入力ポートおよびN個の出力ポートについて、k番目のタイム・スロットごとに、スイッチ134は、そのi番目の入力ポートを{(i+k)mod16}番目の出力ポートにルーティングする。より一般的にいえば、それぞれがM個の書込要求経路910を有するN個のRXPC 140と、それぞれがM個のメモリ・バンク817を有するN個のグループ816について、k番目のタイム・スロットごとに、書込要求クロスバ・スイッチ134は、そのi番目のRXPC 140の各j番目の書込要求出力を、共用メモリ814の{{(i+k)modN}+N*j}番目のデータ書込ポートにルーティングする。
タイム・スロットkは、TDM回転カウンタ914によって書込要求クロスバ・スイッチ134に識別される。書込要求クロスバ・スイッチ134自体は、この実施形態ではパイプライン式に動作し、あるクロック・パルスに間に合ってその入力に現れる情報が、4クロック・パルス後になるまでその出力に現れないようになっている。それでも、書込要求クロスバ・スイッチ134の入力ポートに供給された情報は、メモリ114のデータ書込ポートで測定されるk番目のタイム・スロットの「ために」供給される。
受信ポート・コントローラ
図10は、RXPC 140(図9)を示す機能ブロック図である。ファブリック入力ポート112から着信したデータ単位は、バンクFIFO 1012のアレイ1010に供給される。図10の実施形態には、それぞれが共用メモリ814の各データ書込ポート812に対応する32個のバンクFIFO 1012がある。図10の実施形態では、バンクFIFO 1012の各j番目のバンクFIFOに書き込まれた書込要求が、最終的に共用メモリ814のj番目のデータ書込ポート812−jによって実行され、この書込要求には、そのようなデータ書込ポート812がグループ816の下バンクまたは上バンクのどちらにデータを書き込まなければならないかの表示が含まれる。ファブリック入力ポート112からのデータ単位は、最終的なPDP 126(図1)への伝送のために着信データ・パケットのヘッダからの情報を保管するための現行バッファ・ヘッダ情報ストア1014にも供給される。この実施形態では、3つのサポートされるサービスのクラスすなわち、優先順位の降順でTS(time sensitive)、BP(bandwidth provisioned)、およびBE(best efforts)のそれぞれに対応する3つまでの着信データ・パケットを、一緒にインターリーブすることができる。インターリーブされたパケットは、より高い優先順位クラスのデータ・パケットによる、より低い優先順位クラスのデータ・パケットのプリエンプションから生じる。この環境は、データ・パケットがそれ自体のクラスの別のデータ・パケットをプリエンプトできないように定義されているので、一時に3つまでのインターリーブされたデータ・パケットが可能である。
RXPC 140には、各書込要求の一部としてバンクFIFO 1012に書き込まれるバッファ番号アドレスを供給するアドレス・ジェネレータ1016も含まれる。アドレス・ジェネレータ1016には、RXPC 140に割り振られた3つまでの現行バッファ番号を保管する3つのレジスタ1018が含まれる。やはり、一時に3つまでのインターリーブされたパケットを着信することができるので、3つの現行バッファ番号だけをレジスタ1018に保管する必要がある。新たに割り振られたバッファ番号は、空きバッファ番号プリフェッチFIFO 1020の先頭から適当な現行バッファ番号レジスタ1018に書き込まれ、空きバッファ番号プリフェッチFIFO 1020は、MMU 128によって末尾から充てんされる。ファブリック入力ポート112から着信する各次のデータ単位を含むデータ・パケットのクラスに基づいて、マルチプレクサ1022が、そのデータ単位に対応する現在のバンクFIFO 1012に書き込むための正しい現行バッファ番号を選択する。
RXPC 140には、着信データ単位を書き込まなければならない各次のバンクFIFO 1012を記憶するバンク・エンキューイング選択論理1024も含まれる。やはり、潜在的に保留中のインターリーブされたパケットごとに1つの、3つの別々のバンク・カウンタが、バンク・カウンタ1026内で維持される。マルチプレクサ1028は、現在受け取られているデータ・パケットのクラスに正しいカウントを選択する。バンク・カウンタ1026のそれぞれは、独立に動作し、それぞれが、現行バッファ番号レジスタ1018内の3つの割り振られたバッファ番号の対応する1つの現行バンク番号カウントを保持する。バンク・カウンタ1026の1つがラップ・アラウンドして、もう一度バンクFIFO 0をポイントした時に、そのバンク・カウンタに対応する現行バッファ番号レジスタ1018が、バッファ番号プリフェッチFIFO 1020からの新たに割り振られたバッファ番号をロードする。したがって、第2データ・パケットが第1データ・パケットに割り込み、その後、第1データ・パケットが再開される、例の着信データ・パケットでは、RXPC 140が、第1のバンク・カウンタ1026に依存するバンクFIFO 1012の第1シーケンスに従ってバンクFIFO 1012に第1データ・パケットのシーケンシャル・データ単位を書き込み、次に、第2のバンク・カウンタ1024に依存するバンクFIFO 1012の第2のシーケンスに従ってバンクFIFO 1012に第2データ・パケットのシーケンシャル・データ単位を書き込む。次に、第1データ・パケットを再開する時に、RXPC 140は、バンクFIFO 1012の第1シーケンスに従って、バンクFIFO 1012への第1データ・パケットのさらなるシーケンシャル・データ単位の書込を再開する。再開は、割込みの前の最後のデータ単位の後の次のシーケンシャル・バンク番号に従って行われ、データ単位がバッファの終りと一致しない限り、同一のバッファ番号アドレスに関連して書き込まれる。第3データ・パケットによるインターリーブは、同様に動作する。
カウンタ1026は、32個すべてのバンクFIFO 1012を通じて循環式にカウントするが、メモリ814の任意の所与のバンク817への書込要求に使用可能な2つの経路を利用するために、バンク・エンキューイング選択論理1024は、主経路のバンクFIFO 1012が満杯の場合に、代替経路のバンクFIFO 1012に着信データ単位をエンキューする能力も有する。したがって、バンク・エンキューイング選択論理に、MSBトグル論理1030が含まれる。MSBトグル論理1030は、マルチプレクサ1028のカウント出力と、バンクFIFO 1012のそれぞれからの「full」信号も受け取る。バンク・カウンタ1026が現在ポイントしているバンクFIFO 1012が満杯の場合に、MSBトグル論理1030は、カウントの最上位ビットをトグルして、現在の着信データ単位がエンキューされるバンクFIFO 1012を決定する。カウントの上位ビットのトグルは、カウントに16を加算し、結果の16を法とする剰余をとることと同一である。したがって、現在のカウントが6であるが、バンクFIFO 1012−6が満杯の場合に、バンク・エンキューイング選択論理1024は、その代わりに、データ単位を保管するためにバンク1012−22を選択する。バンクFIFO 1012の深さは、主バンクFIFOと代替バンクFIFO 1012の両方が満杯になることが不可能になるように選択される。バンク・エンキューイング選択論理1024は、16…31の範囲内のカウントであっても、所与のカウントについて代替バンクFIFO
1012よりも主バンクFIFO 1012を必ず選ぶが、異なる実施形態は、その選択を組み込む必要がない。
代替バンクFIFO 1012にエンキューされたデータ単位が、それでもメモリ814の正しいメモリ・バンク817に書き込まれることを保証するために、バンク・エンキューイング選択論理1024は、トグルの前に、マルチプレクサ1028のカウント出力のMSBを、選択されたバンクFIFO 1012に書き込む。このビットは、データ単位およびバッファ番号と共にバンクFIFOに書き込まれ、書込要求クロスバ・スイッチ134を介して、メモリ814の対応するデータ書込ポートに運ばれる。メモリ814で、このビットは、データが書き込まれるグループ816のバンク817を選択するためのグループ・メンバ選択信号として働く。MSBが0であった場合に、データは、グループのどのデータ書込ポートがその要求を受け取ったかにかかわりなく、グループの下バンクに書き込まれる。MSBが1であった場合に、データは、グループのどのデータ書込ポートがその要求を受け取ったかにかかわりなく、グループの上バンクに書き込まれる。あるグループの両方のポートで受け取られるグループ・メンバ選択信号が、グループ内の同一のバンクをポイントすることが可能である。この場合には、書込アドレスが異なり、2書込ポート・バンク・メモリは、両方の書込を同時に実行することができる。
図10のRXPC 140を一般化し、図6の共用メモリ構造を参照すると、メモリ114内にそれぞれバンクのM個のメンバ617のN個のグループ616を有する実施形態で、RXPC 140に、M*N個のバンクFIFO 1012の組を含めることができる。バンク・カウンタ1026は、通常、組のすべてのM*N個のバンクFIFO 1012をサイクルするが、バンク・エンキューイング選択論理は、バンク・カウンタ1026によって示されるバンク617を含むグループ616のM個の書込要求ポートのいずれかに対応するバンクFIFO 1012に着信データ単位(および現行バッファ番号)を書き込む能力を有する。言い換えると、バンクFIFOアレイ1010に、バンクFIFOのN個のグループのそれぞれにM個のバンクFIFO 1012が含まれる。バンクFIFO 1012−(i+N*j)のすべてが、バンクFIFOのi番目のグループのメンバであり、i=0…(N−1)、j=0…(M−1)である。関連するバンク・カウンタ1026の現在のカウントがiである時に、バンク・エンキューイング選択論理1024は、現在のデータ単位およびそれに対応するバッファ・アドレスを、バンクFIFOのi番目のグループの任意のバンクFIFO 1012に書き込むことができる。現在のカウントの上位ビットが、データ単位およびバッファ番号アドレスと共に、選択されたバンクFIFO 1012に書き込まれて、バンク・グループ616−iのどのバンク・メンバ617がそのデータ単位を受け取らなければならないかが示される。
図10に戻って、バンクFIFO 1012は、0…15からの厳密な数値シーケンス・サイクリングでデキューされる。バンク・デキューイング・カウンタ1032が、現行デキューイング・カウントを供給する。2つのバンクすなわち、バンク・デキューイング・カウンタ1032によって指定されるバンク番号およびそのバンク番号に16を加えたものが、同時にデキューされる。RXPC 140は、2つのデータ・セレクタすなわち、バンクFIFO 1012−0から1012−15(下位バンクFIFO)の間から書込要求情報を選択するデータ・セレクタと、バンクFIFO 1012−16から1012−31(上位バンクFIFO)の間から書込要求情報を選択するデータ・セレクタを有すると考えることができる。両方のデータ・セレクタが、同一のバンク・デキューイング・カウンタ1032に応答する。選択された下位バンクFIFO 1012−0…15からデキューされた書込要求情報に、データ単位、そのデータ単位がメモリ・バンク817内で書き込まれるバッファ番号アドレス、およびメモリ814の指定されたグループ816内のデータが書き込まれるバンク817を示すカウンタMSBが含まれる。この情報は、書込要求経路910L上で共用メモリ814に運ばれる。選択された上位バンクFIFO 1012−16…31からデキューされた書込要求情報は、同一の情報を含み、書込要求経路910U上で共用メモリ814に運ばれる。どちらの場合でも、選択されたバンクFIFO 1012が空の場合に、アドレス、データ、およびMSB情報が、無意味であり、書込要求と共に運ばれる有効ビットが、アンアサートされる。
もう一度一般化し、図6の共用メモリ構造を参照すると、メモリ114内にバンクのM個のメンバ617のN個のグループ616を有する実施形態で、RXPC 140に、グループ内のバンク・メンバごとに1つのM個のデータ・セレクタが含まれる。RXPC 140に、連続するタイム・スロットにグループ0…(N−1)のすべてをサイクルするデキューイング・カウンタ1032も含まれる。カウント値kごとに、各j番目のデータ・セレクタが、デキューのためにバンクFIFO 1012−(k+N*j)を選択し、j=0…(M−1)である。
書込要求クロスバ・スイッチ134(図9)の循環スタッガ式多重化のゆえに、各RXPC−iが特定のタイム・スロットkにデキューしなければならないバンクFIFO 1012のブロックは、タイム・スロットkにRXPC−(i−1)についてデキューされるバンクFIFO 1012のグループより1つ上である。一般に、各k番目のタイム・スロットに、各i番目のRXPC 140の下位データ・セレクタは、デキューのために{(i+k)modN}番目のバンクFIFO 1012を選択し、書込要求クロスバ・スイッチ134は、そのように選択された書込要求情報を、共用メモリ114の対応する{(i+k)modN}番目のデータ書込ポートにルーティングする。さらに、メモリ・バンクが図8のように対にされている場合に、各k番目のタイム・スロットに、各i番目のRXPC 140の上位データ・セレクタは、デキューのために{N+(i+k)modN}番目のバンクFIFO 1012を選択し、書込要求クロスバ・スイッチ134は、そのように選択された書込要求情報を、共用メモリ114の対応する{N+(i+k)modN}番目のデータ書込ポートにルーティングする。より一般的に、メモリ・バンクのグループにM個のバンクが含まれる場合に、各i番目のRXPC 140のj番目のデータ・セレクタは、デキューのために{j*N+(i+k)modN}番目のバンクFIFO 1012を選択し、書込要求クロスバ・スイッチ134は、そのように選択された書き込み要求情報を、共用メモリ114の対応する{j*N+(i+k)modN}番目のデータ書込ポートにルーティングする。したがって、所与のRXPC 140内の各バンクFIFO 1012は、共用メモリ814の単一の固定されたデータ書込ポートに対応する。
それぞれがメモリ814のデータ書込ポートの異なる1つに対応するバンクFIFO 1012の組を、書込要求を保管するのに使用することによって、インターリーブされたデータ・パケットでファブリック入力ポート112に着信する単位の並べ換えが容易になり、これらを、高速で効率的なTDMデータ書込ポート調停方式を使用して、バッファ(またはバッファのリンクされたシーケンス)の連続するバンクに書き込めるようになる。したがって、着信データ・パケットは、着信データ・ストリーム内で互いにインターリーブされている可能性があるが、RXPCバンクFIFO機構によって再組立され、共用メモリ114の1つまたは複数のリンクされたバッファのシーケンス内の連続するバンクに書き込まれる。着信データ・パケットを互いにインターリーブできない環境では、これほど多数のバンクFIFO 1012を含める必要がない場合があることを諒解されたい。単一の入力FIFOで十分である場合がある。メモリの各バンクへの2つの書込要求経路がある場合に、一部の実施形態に、2つの入力FIFOを含めることができる。
前に述べたように、図10の図は、RXPC 140の論理的機能性だけを表し、多数の異なる実装が可能である。たとえば、バンクFIFO 1012のアレイ1010を、単一のデュアル・ポート(1つの書込ポートおよび1つの読取ポート)アドレッサブル・メモリとして実装することができる。図11は、そのような実装の直接関係のある特徴を示す機能ブロック図である。図11を参照すると、バンクFIFOアレイ1010(図10)に、1読取ポート−1書込ポート・バンクFIFOアレイ・メモリ1110が含まれる。メモリ1110は、16個のセグメントに分割され、各セグメントに、バンクFIFO 1012−jおよび1012−(j+16)の1対の項目が含まれ、j=0…15である。各セグメントは、対の2つのバンクFIFOの間で共用される4つの書込要求項目を保持するのに十分に大きい。FIFOアレイ1010には、末尾ポインタ1112の組も含まれ、末尾ポインタ1112の現在値は、バンク・エンキューイング選択論理1124の制御の下で、マルチプレクサ1114によってバンクFIFOアレイ・メモリ1110のデータ書込ポートの書込アドレス部分に選択される。データ単位、バッファ番号、およびバンク・カウンタMSBを含む書込要求情報は、バンクFIFOアレイ・メモリ1110のデータ書込ポートのデータ部分に供給される。読取側では、FIFOアレイ1010に、先頭ポインタ1116の組が含まれ、先頭ポインタ1116の現在値は、バンク・デキューイング論理1132の制御の下で、マルチプレクサ1118によってバンクFIFOアレイ・メモリ1110のデータ読取ポートのアドレス部分に選択される。末尾ポインタ1112と先頭ポインタ1116の両方に、それぞれポインタ増分機能1120および1122が含まれる。バンクFIFOアレイ・メモリのデータ読取ポートのデータ部分は、2つの選択されたバンクFIFO 1012からの書込要求情報を、上下の経路910Lおよび910Uの両方で共用メモリ814に向かって供給する。多数の他の実装が明白になるであろう。
出口装置
図12は、図8のM=2実施形態と共に使用される出口装置120を示す全体ブロック図である。これには、16個のTXPC 142、読取アドレス・クロスバ・スイッチ1210、およびデータ戻りクロスバ・スイッチ1212が含まれる。アドレスおよびデータのクロスバ・スイッチ1210および1212は、少なくとも出口側で論理的に別々でなければならない(一緒に実装することはできるが)。というのは、データ読取要求およびそのような読取要求からの戻りデータが、反対方向に移動し、時間的に分離されているからである。各TXPC 142は、メモリ814(図8)のデータ読取ポートのグループ816の上メンバおよび下メンバに関連する2つの読取要求経路1214Lおよび1214Uを有する。読取アドレス・クロスバ・スイッチ1210は、16個の入力ポートI0〜I15を有し、この入力ポートのそれぞれが、TXPC 142の対応する1つからの読取要求経路の対を受けるように接続される。この実施形態の読取要求経路1214Lまたは1214Uのそれぞれが、バッファ番号と、TXPCデキューイング・バンク・カウンタのMSBを担持することがわかる。各読取アドレス・クロスバ・スイッチ1210入力ポートは、読取要求経路のうちの2つを受ける。
読取アドレス・クロスバ・スイッチ1210は、16個の出力ポートO0からO15も有し、このそれぞれが、この実施形態で合計24ビットの2つの読取要求経路1216Lおよび1216Uを担持する。各読取アドレス・クロスバ・スイッチ出力ポートからの2つの読取要求経路は、共用メモリ814内のメモリ・バンク817の対応するグループ816の2つのめいめいのデータ読取ポートに供給される。図8に示されたポートおよびバンクの番号付けを参照すると、各読取要求アドレス経路1216L−iは、共用メモリ814のデータ読取ポートiのアドレス部分に接続され、各読取要求アドレス経路1216U−iは、共用メモリ814のデータ読取ポートi+16のアドレス部分に接続される。より一般的に、N個のアドレス・クロスバ・スイッチ出力ポートがあり、それぞれにM個の読取要求アドレス経路1216が含まれ、それぞれがM個のバンク817を含むメモリのN個のグループ816がある場合に、各i番目の読取アドレス・クロスバ・スイッチ出力ポートの各j番目の経路1216は、共用メモリ814の(i+N*j)番目のデータ読取ポートのアドレス部分に接続され、i=0…(N−1)、j=0…(M−1)である。
各TXPC 142は、やはりメモリ114のデータ読取ポートのグループ816の上メンバおよび下メンバに関連する2つのデータ戻り経路1218Lおよび1218Uも有する。データ戻りクロスバ・スイッチ1212は、16個の出力ポートO0からO15を有し、この出力ポートのそれぞれに、2つのデータ戻り経路が含まれる。この実施形態の各データ戻り経路は、64ビット・データ単位およびバンク・カウンタMSBを担持する。データ戻りクロスバ・スイッチ1212は、それぞれがめいめいの経路1220Lおよび1220Uで2つの読取要求の戻りデータを担持する16個の入力ポートI0からI15も有する。各データ戻りクロスバ・スイッチ入力ポートの2つの戻りデータ経路は、メモリ・バンク817の対応するグループ816の2つのめいめいのデータ読取ポートのデータ部分に接続される。やはり図8に示されたポートおよびバンクの番号付けを参照すると、各データ戻り経路1220L−iは、共用メモリ814のデータ読取ポートiのデータ部分に接続され、各データ戻り経路1220U−iは、共用メモリ814のデータ読取ポートi+16のデータ部分に接続される。さらに図6に示されているように一般化すると、N個のデータ戻りクロスバ・スイッチ入力ポートがあり、それぞれにM個のデータ戻り経路が含まれ、それぞれがM個のバンク617を含むメモリのN個のグループ616がある場合に、各i番目のデータ戻りクロスバ・スイッチ入力ポートの各j番目のデータ戻り経路は、共用メモリの(i+N*j)番目のデータ読取ポートのデータ部分に接続され、i=0…(N−1)、j=0…(M−1)である。
動作中に、読取アドレス・クロスバ・スイッチ1210は、読取要求をその入力ポートからその出力ポートへ、クロック・パルスごとに循環式に回転するシーケンスでルーティングする。一般的に言って、読取アドレス・クロスバ・スイッチ1210のN個の入力ポートおよびN個の出力ポートについて、各k番目のタイム・スロットに、読取アドレス・クロスバ・スイッチ1210は、そのi番目の入力ポート対をその{(i+k)mod16}番目の出力ポート対にルーティングする。より一般的に言うと、それぞれがM個の読取要求経路1214を有するN個のTXPC 142およびそれぞれがM個のメモリ・バンク617のN個のグループ616について、各k番目のタイム・スロットに、読取アドレス・クロスバ・スイッチ1210は、各i番目のTXPC 142の各j番目の読取要求出力を共用メモリ814の{{(i+k)modN}+N*j}番目のデータ読取ポートのアドレス部分にルーティングする。
データ戻りクロスバ・スイッチ1212は、動作中に、クロック・パルスごとの類似する循環式に回転するシーケンスで、戻りデータをその入力ポートからその出力ポートにルーティングする。それぞれがM個のデータ経路1218を有するN個のTXPC 142およびそれぞれM個のメモリ・バンク617のN個のグループ616について、各k番目のタイム・スロットに、データ戻りクロスバ・スイッチ1212は、各i番目のTXPC 142の各j番目のデータ戻り入力に、共用メモリ614の{{(i+k)modN}+N*j}番目のデータ読取ポートのデータ部分をルーティングする。
入口側と同様に、タイム・スロットkは、TDM回転カウンタ1222によって、読取アドレス・クロスバ・スイッチ1210およびデータ戻りクロスバ・スイッチ1212に識別される。1実施形態で、2つのクロスバ・スイッチ1210および1222のそれぞれに1つの、2つの別々の回転カウンタ1222が使用される。データが、対応する読取要求がメモリに送られた後の固定されたクロック数で必ず共用メモリから返される場合に最も有用なもう1つの実施形態で、単一の回転カウンタ1222を使用することができ、データ戻りクロスバ・スイッチに供給されるkは、読取アドレス・クロスバ・スイッチ1210に供給されるkから固定された個数のクロック・サイクルだけ遅れている。さらに、回転カウンタ1222は、1実施形態では入口装置110の回転カウンタ914と同一とすることができ、もう1つの実施形態では別々のカウンタとすることができる。書込要求クロスバ・スイッチ134と同様に、読取アドレス・クロスバ・スイッチ1210とデータ戻りクロスバ・スイッチ1212の両方が、好ましい実施形態でパイプライン式の形で動作する。
送信ポート・コントローラ
各TXPC 142に、PDP 126からパケット送信指示を受け取り、これをブロック・データ読取要求に変換するブロック・アドレス・キューイング・スケジューラ1230が含まれる。スケジューラ1230は、PDP 126からのサービスのクラスごとに2つの記述子をプリフェッチする。クラスごとの記述子が空であるか使い果たされた時に、次の記述子が、プリフェッチ・エリアからデキューされる。各パケット記述子には、とりわけ、開始バッファ・アドレス、開始バンク番号、パケット長、およびサービスのクラスが含まれる。スケジューラ1230は、パケット記述子の1つに従って取り出されるブロックをスケジューリングする時に、残りの長さおよび次バンク番号を維持する内部レジスタも更新する。また、スケジューラ1230は、現行バッファ番号アドレスを用いてMMU 128に照会して、各パケットの次バッファ番号をバッファ・リンケージ・リスト416(図4)からプリフェッチする。
ブロック・アドレス・キューイング・スケジューラ1230は、クラスごとの情報を収集して、次に読み取るブロックを選択する。スケジューラ1230は、クラス優先順位、特定のクラスについて保留中のパケット記述子があるかどうか、および特定の候補パケット記述子の最初に必要なメモリ・バンクのバンク要求FIFO(下で説明する)が既に満杯であるかどうかを含む複数の要因に基づいて、3つのクラスからパケット記述子を選択する。次ブロックをスケジューリングするパケットを選択した後に、スケジューラ1230は、ブロックに2ビットのシーケンス番号(SN)をタグ付けする。各バンク・アクセスは、2つの別々のデータ要求経路を介して要求することができるので、要求されたデータがメモリ814からアウトオブオーダーで返される可能性がある。2ビットの要求シーケンス番号は、このデータの並べ換えを容易にするのに十分である。スケジューラ1230は、要求される次ブロックの開始バンク番号、そのブロックを見つけるべきバッファ番号、必要な場合にプリフェッチされた次のリンクされたバッファ番号、および少なくともブロックの最初のデータ単位に関連するシーケンス番号を、TXPC読取アドレス・ジェネレータ1224に転送する。また、スケジューラ1230は、パケット・ヘッダ情報およびシーケンス番号を含むあるブロック情報をTXPC読取データ並べ換え機能1226に転送して、戻りデータを正しく並べ返るのを助ける。
TXPC読取アドレス・ジェネレータ1224は、32個のバンク要求FIFOを含み、ブロック・アドレス・キューイング・スケジューラ1230から受け取った各ブロック読取要求に応答して、8つまでのメモリ読取要求をエンキューする。バンク要求FIFOは、デキューされ、読取アドレス・クロスバ・スイッチ1210を介して共用メモリ814に向かって送出される。また、読取アドレス・ジェネレータ1224は、ある情報を固定遅延の毎要求戻りFIFO 1228を介してTXPC読取データ並べ換え機能1226に向かって送り、この情報がそれに関連する戻りデータユニットと調整されてTXPC読取データ並べ換え機能1226に達するようにする。TXPC読取データ並べ換え機能1226は、メモリ814から返されたデータ単位を受け取り、必要に応じて並べ換え、特定のTXPCのファブリック出力ポート124から送信する。
図13は、TXPC読取アドレス・ジェネレータ1224の機能ブロック図である。多くの形で、このユニットの動作は、RXPC 140の動作に似ている。TXPC読取アドレス・ジェネレータ1224には、バンク要求FIFO 1312のアレイ1310が含まれる。RXPC 140のFIFOアレイ1010に似て、バンク要求FIFOのアレイ1310は、16個のセグメントに分割され、各セグメントにバンク要求FIFO 1312の1対に対応する項目が含まれる単一のアドレッサブル・メモリとして実装することができる。各セグメントは、対の2つのバンク要求FIFOの間で共用される4つの読取要求を保持するのに十分に大きい。RXPC 140と同様に、図13の実施形態には32個のバンク要求FIFO 1312があり、1つのバンク要求FIFOが、共用メモリ814の各データ読取ポートに対応する。バンク要求FIFO 1312の各j番目のバンク要求FIFOに書き込まれたデータ読取要求は、最終的に、共用メモリ814のj番目のデータ読取ポートにルーティングされ、読取要求には、そのデータ読取ポートがグループ816の上バンクまたは下バンクのどちらからデータを取り出さなければならないかの表示が含まれる。
TXPC読取アドレス・ジェネレータ1224に、読取要求が書き込まれる各次のバンク要求FIFO 1312を記憶するバンク・エンキューイング選択論理1314も含まれる。バンク・エンキューイング選択論理1314には、ブロック・アドレス・キューイング・スケジューラ1230によって供給される開始バンク番号からロードされ、0…31の範囲内の8つまでのシーケンシャル・バンク番号について増分するバンク・カウンタが含まれる。データ読取要求に、現行バンク番号がバンク0にラップ・アラウンドするまでブロック・アドレス・キューイング・スケジューラ1230によって供給される開始バッファ・アドレスが含まれ、ラップ・アラウンドの後には、ブロック・アドレス・キューイング・スケジューラ1230によって供給される次のリンクされたバッファ・アドレスが含まれる。RXPC 140と同様に、メモリ814の任意の所与のバンク817への読取要求に使用可能な2つの経路を利用するために、バンク・エンキューイング選択論理1314は、主経路のバンク要求FIFO 1312が満杯の場合に、代替経路のバンク要求FIFO 1312に読取要求をエンキューする能力も有する。したがって、RXPC 140と同様に、バンク・エンキューイング選択論理1314は、現行カウンタ値に対応するバンク要求FIFOが満杯であるかどうかに基づいて、現行バンク・カウンタのMSBをトグルすることができる。
各クロックに、読取アドレス・ジェネレータ1224は、バンク・エンキューイング選択論理1314によって選択されたバンク要求FIFO 1312に、現行バッファ番号(または、ブロック・アドレス・キューイング・スケジューラ1230からのバンク・カウントがラップ・アラウンドした後の場合には次のリンクされたバッファ番号)ならびにトグルの前のバンク・カウンタMSBを書き込む。入口側と同様に、バンク・カウンタMSBは、読取アドレス・クロスバ・スイッチ1210(図12)を介してメモリ814の対応するデータ読取ポートに運ばれ、そこで、データが読み取られるグループ816のバンク817を選択するグループ・メンバ選択信号として働く。また、TXPC読取アドレス・ジェネレータ1224は、各読取要求に対応して、選択されたバンク要求FIFO 1312にシーケンス番号を書き込む。最初のシーケンス番号は、ブロック・アドレス・キューイング・スケジューラ1230がTXPC読取データ並べ換え機能1226に供給したブロック情報で供給されたシーケンス番号と同一であるが、後続シーケンス番号は、異なる可能性がある。
TXPC読取アドレス・ジェネレータ1224のエンキューイング部分は、図10のRXPC 140のエンキューイング部分と同一の形で、メモリ114(図6)内のバンクのM個のメンバ617のN個のグループ616を有する実施形態に一般化することができる。バンク・エンキューイング選択論理1314内のバンク・カウンタは、通常、組のすべてのM*N個のバンク要求FIFO 1312を通ってサイクルするが、バンク・エンキューイング選択論理は、バンク・カウンタによって示されるバンク617を含むグループ616のM個のデータ読取ポートのいずれかに対応するバンク要求FIFO 1312に読取要求を書き込む能力を有する。現行カウントの上位ビットは、読取要求と共に、選択されたバンク要求FIFO 1312に書き込まれて、バンク・グループのどのバンク・メンバ617がその読取要求に応答しなければならないかを示す。
図13に戻って、バンク要求FIFO 1312は、0…15からの厳密な数値シーケンス・サイクリングでデキューされる。バンク・デキューイング・カウンタおよび論理1316が、現行デキューイング・カウントを供給する。バンク・デキューイング・カウンタおよび論理1316が、空であるバンク要求FIFO 1312をデキューしないことを除いて、2つのバンク要求FIFO 1312−iおよび1312−(i+16)が、同時にデキューされる。下位バンク要求FIFO 1312−0から1312−15の選択された1つからの読取要求が、読取要求経路1214Lで読取アドレス・クロスバ・スイッチ1210に向かって出力され、上位バンク要求FIFO 1312−16から1312−31の選択された1つからの読取要求が、読取要求経路1214Uで読取アドレス・クロスバ・スイッチ1210に向かって出力される。これらの読取要求に、バッファ番号と、そのバッファ番号と共にバンク要求FIFO 1312にエンキューされたバンク・カウンタMSBが含まれる。やはりバッファ番号と共にエンキューされたシーケンス番号は、毎要求戻りFIFO 1228(図12)に向かって転送される。両方がTXPC読取アドレス・ジェネレータ1224から同時に発行された2つの要求が、同一のメモリ・バンク817から、そのバンク内の異なるアドレスからデータを要求することが可能であることに留意されたい。この場合に、2つのシーケンス番号が、異なり、TXPC読取データ並べ換え機能1226は、それに基づいてこれらを区別することができる。エンキューイング機能と同様に、TXPC読取アドレス・ジェネレータ1224のデキューイング機能も、RXPC 140のデキューイング機能と同一の形で一般化することができる。
毎要求戻りFIFO 1228に、バンク要求FIFO 1312のそれぞれについて別々のFIFOが含まれる。これらのFIFOの各項目に、要求のシーケンス番号と、要求のそのデータ単位がパケットの終り(EOP)を構成するかどうかのビット表示が含まれる。各毎要求戻りFIFOは、戻りデータがTXPC読取データ並べ換え機能1226に達する前に経過するクロック・サイクル数と等しい固定されたクロック・サイクル数の遅延を導入する。
図14は、TXPC読取データ並べ換え機能1226の機能ブロック図である。これには、それぞれがメモリの各データ読取ポートに対応する32個のキューを含むデータ並べ換えキュー1412のアレイ1410が含まれる。データ並べ換えキュー1412のそれぞれに、それぞれが1つのデータ単位を保持するのに十分な4つの項目が含まれる。データ並べ換えキューは、2つのデータ書込ポートおよび1つのデータ読取ポートを有し、データの読取はシーケンシャルに行われるが、キューイング1412の4つの項目のいずれかへのデータの書込は、戻りデータのシーケンス番号に基づいてランダムである。1実施形態で、すべてのデータ並べ換えキュー1412が、それぞれ32項目の4つのセグメントを有する共通戻りデータ・メモリで実装される。4つのセグメントは、個々のキュー1412内の4つの項目に対応する。また、各データ並べ換えキュー1412は、有効ベクトル1414およびパケットの終り(EOP)ベクトル1416を関連付けられ、このそれぞれが、1412内のキューの4つの項目に対応する4ビットを有する。下位データ戻り経路1218Lでデータ戻りクロスバ・スイッチ1212から返されたデータ単位は、すべてのデータ並べ換えキュー1412の一方のデータ書込ポートに共通して供給される。上位データ戻り経路1218Uでデータ戻りクロスバ・スイッチ1212から返されたデータ単位は、すべてのデータ並べ換えキュー1412の他方のデータ書込ポートに共通して供給される。戻りデータ経路のそれぞれに付随するMSBは、TXPC読取データ並べ換え機能1226内のバンク・エンキューイング論理1418に供給される。
バンク・エンキューイング論理1418には、回転カウンタ1222(図12)と調整して数0…15を通ってサイクルするバンク・カウンタが含まれる。このカウントおよびデータ戻りクロスバ・スイッチ1212から返されるMSBに基づいて、バンク・エンキューイング論理1418は、戻りデータを受け入れるために、正しいデータ並べ換えキュー1412の正しいデータ書込ポートをイネーブルする。具体的に言うと、バンク・エンキューイング論理1418内のバンク・カウンタが、番号jを出力する時に、この論理は、下データ戻り経路の返されたMSBが0の場合にデータ並べ換えキュー1412−jの下ポート、下データ戻り経路の返されたMSBが1の場合にデータ並べ換えキュー1412−(j+16)の下ポートをイネーブルする。同様に、この論理は、上データ戻り経路の返されたMSBが0の場合にデータ並べ換えキュー1412−jの上ポート、上データ戻り経路の返されたMSBが1の場合にデータ並べ換えキュー1412−(j+16)の上ポートをイネーブルする。この形で、戻りMSBは、各データ単位が取り出されるグループ816のバンク・メンバ817を示すインジケータのグループ・メンバ・ソースとして働く。各経路1218での戻りデータが選択されたデータ並べ換えキューに書き込まれる項目番号(0…3)は、適当な毎要求戻りFIFO 1228からのシーケンス番号によって与えられる。さらに、この装置は、データ単位が書き込まれるデータ並べ換えキュー1412のそれぞれの各項目に対応する有効ベクトル1414のビットをセットする。TXPC読取データ並べ換え機能1226のエンキューイング機能を、TXPC読取アドレス・ジェネレータ1224のデキューイング機能およびRXPC 140のデキューイング機能とほぼ同一の形で一般化できることを諒解されたい。
TXPC読取データ並べ換え機能1226には、バンク・デキューイング論理1420も含まれる。このユニットには、メモリ114から返されたデータのブロックごとに、送信戻りFIFO 1422の先頭からロードされるカウンタが含まれる。このFIFOには、TXPCブロック・アドレス・キューイング・スケジューラ1230(図12)からのブロック情報が含まれる。そのようなブロック情報は、データの各戻りブロックが始まるメモリ・バンク617、したがって、データ並べ換えキュー1412を指定する。バンク・デキューイング論理1420は、そのカウンタを8回増分して、デキューのためにデータ並べ換えキュー1412の8つのシーケンシャル・キューを指定する。このカウンタが、31から0にラップ・アラウンドした場合に、バンク・デキューイング論理1420は、バッファの終りタッチについてMMU 128に通知する。キュー1412が、デキューイングのために指定される時に、識別されたキュー1412の先頭にあるデータ単位が、マルチプレクサ1424を介して送信FIFO 1426に供給され、送信FIFO 1426は、データ単位をファブリック出力ポート124を介して供給する。
バンク・デキューイング論理1420は、データ並べ換えキュー1412のそれぞれに対応するベクトル1414からの有効ビットも受け取る。バンク・デキューイング論理1420のバンク・カウンタが、キューの先頭に対応する有効ビットがセットされていないキュー1412を示す場合に、バンク・デキューイング論理1420は、それがセットされるまで単純に待つ。この形で、有効ビット1414は、デキューイング動作が充てん動作の先に進むことを防ぐ。さらに、バンク・デキューイング論理1420は、ベクトル1416から、データ並べ換えキュー1412のそれぞれに対応するパケットの終りビットを受け取る。セットされている場合に、このビットは、パケットが、現在のブロックの終りの前に終了したことを示す。したがって、バンク・カウンタが、キューの先頭に対応するパケットの終りビットがセットされているキュー1412を示す場合に、バンク・デキューイング論理1420は、現在のブロックのさらなるデータ単位のデキューイングを停止し、送信戻りFIFO 1422の次の項目で示されるブロック情報に進む。また、バンク・デキューイング論理1420は、セットされているパケットの終りビットを検出した時に、現在のバッファのパケットの終りタッチをMMUに示す。
送信戻りFIFO 1422には、上で述べたように、ブロック開始バンク番号、ブロック長、ブロックの最初のバンクのシーケンス番号、および他のヘッダ情報が含まれる。他のヘッダ情報は、適当な時および場合に、マルチプレクサ1424を介する送信FIFO 1426への挿入のために、ヘッダ・ジェネレータ1428によって使用される。
奇数/偶数バッファ・リンケージ
図1および3を参照すると、前に述べたように、TXPC 142のそれぞれは、バッファの終りに達した時およびデータ・パケットの終りに達した時に、必ず、バッファ「タッチ」についてMMU 128に通知する。TXPC 142がファブリックの残りとインターフェースするのに用いる他のデータ経路に似て、TXPC 142とMMU 128の間の通信経路は、時間領域多重化され、各TXPC 142は、16個の各サイクルで1クロックを割り振られる。発信データ・パケットが、長さにおいて少なくとも16データ単位である(それぞれが少なくとも128バイトである)多くの場合に、各パケットの終りバッファ・タッチの後、TXPC 142が次のパケットの終りバッファ・タッチについてMMU 128に通知する必要が生じる前に、少なくとも16クロック・サイクルが経過する。したがって、16クロック・サイクルごとに1つのタッチ通知というデータ・レートが、その状況に十分である。発信データ・パケットが、それぞれ16データ単位より短い場合、またはパケットの終りに達する直前もしくは直後にバッファの終りに達する場合に、16クロック・サイクルごとに1つの通知という帯域幅が不十分になることを諒解されたい。タッチ通知帯域幅が、TXPCが生成する通知に追い付くのに不十分である場合に、TXPC 142の送信FIFO 1426(図14)が、枯渇し、ファブリックのスループットが劣化する可能性がある。
図1の実施形態は、バッファの終りが64バイト・パケット内で発生する場合であっても、それぞれ8データ単位(64バイト)ほどの短いデータ・パケットについてフル・スループットを可能にする形でこの問題を回避する。より短いデータ・パケットが許容されるが、フル・スループットは保証されない。この実施形態によれば、メモリ114のバッファ118が、2つの組に分割される。この実施形態では、組を、偶数および奇数と称し、すべての偶数番号のバッファ118が、偶数組に属し、すべての奇数番号のバッファ118が、奇数組に属する。もう1つの実施形態で、バッファを異なる形で分割することができる。もう1つの実施形態で、バッファを、3つ以上の組に分割することができる。さらに、RXPC 140は、MMU 128にバッファ番号を要求する時に、必ず、1つは偶数組、もう1つは奇数組の2つを一時に受け取り、必ず交番する偶数奇数シーケンスでバッファを使用する、すなわち、パケットが2つのバッファ118にまたがる場合に、一方のバッファが、必ず偶数組に含まれ、他方のバッファが、必ず奇数組に含まれる。MMU 128が各RXPC 140に空きバッファ番号を通信する通信経路は、割り振られた2つのバッファ番号を同時に運ぶのに十分に広い。
MMU 128内のメモリのうちの複数が、所望のタッチ通知レートを達成する形で実装される。図15は、この実装を示す図である。図15を参照すると、空きバッファのリスト414が、2つのメモリ・アレイとして実装され、一方のアレイ414Aに、空き偶数バッファ番号だけが含まれ、他方のアレイ414Bに、空き奇数バッファ番号だけが含まれる。TXPCタッチ通知が、バッファ118の解放を引き起こす時に、新に解放されたバッファ番号が、そのバッファ番号が偶数または奇数のどちらであるかに応じて、アレイ414Aおよび414Bのうちの適当な1つに書き込まれる。RXPC 140の空きバッファ番号プリフェッチFIFO 1020が新しい空きバッファ番号を要求する時に、MMUは、アレイ414Aおよび414Bのそれぞれから1つの2つ空きバッファ番号を一時に供給する。
図15に示されたMMU 128には、それぞれ偶数バッファ番号および奇数バッファ番号用の、2つのバッファ状況ストア408Aおよび408Bに分割されたものとしてバッファ状況ストア408が示されている。TXPC 142がバッファ・タッチについてそれによってMMU 128通知できるデータ経路は、偶数番号バッファの1つと奇数番号バッファの1つの2つのバッファ・タッチ通知を一時に収容するのに十分に広い。したがって、バッファ状況ストア408を分割することによって、バッファ状況ストア408Aと408Bの両方のバッファ状況情報を同時に更新できるようになる。本明細書で使用される2つのストアの「同時」アクセスは、総合アクセス時間が、アクセスが単一のストアにシーケンシャルに行われた場合より短くなる範囲まで、時間的にオーバーラップする形を意味する。正確な同時性は不要である。
単一のバッファ状況ストア408と同様に、各バッファ状況ストア408Aまたは408Bは、それぞれ偶数バッファまたは奇数バッファのバッファ使用カウントを記憶するバッファ使用カウンタ・アレイ410Aまたは410Bと、それぞれ偶数バッファおよび奇数バッファのバッファ解放カウントを記憶するバッファ解放カウンタ・アレイ412Aおよび412Bを用いて実装される。RXPC 140が、バッファ使用カウントについてMMU 128に通知する場合に、MMU 128は、バッファ番号に応じて、そのカウントをバッファ使用カウンタ・アレイ410Aまたは410Bのうちの適当な1つに書き込む。TXPC 142がバッファ・タッチについてMMU 128に通知する場合に、MMUは、やはりバッファ番号に応じて、バッファ解放カウンタ・アレイ412Aまたは412Bのうちの適当な1つの指定されたバッファのカウントを増分する。
MMU 128内のバッファ・リンケージ・リスト416は、偶数および奇数のバッファ番号によって分割されないが、TXPC 142が次のリンクされたバッファ番号を要求できるデータ・レートについてゆくために、バッファ・リンケージ・リスト416は、2読取ポート/2書込ポート・メモリとして実装される。8つのTXPC 142の固定されたサブセット(たとえば、TXPC 142−0から142−7)が、一方の読取ポートを共用するように接続され、TXPC 142のもう1つの固定されたサブセット(たとえば、TXPC 142−8から142−15)が、他方の読取ポートを共用するように接続される。同様に、8つのRXPC 140の1つの固定されたサブセットが、一方のデータ書込ポートを共用するように接続され、RXPC 140のもう1つの固定されたサブセットが、他方のデータ書込ポートを共用するように接続される。循環トレース・メモリ418は、このメモリの読取および書込に関する緊急性がないので、この実施形態では機能強化されない。
バッファ使用カウンタ・アレイ410Aおよび410Bに関して、単一のRXPC 140が、バッファ118を充てんできるのより高い頻度でバッファ使用カウンタ・リストのいずれかに使用カウントを書き込む必要はない。RXPC 142が、16クロック・サイクル未満で単一のバッファ118を充てんすることができず、16個のRXPC 140があるので、バッファ使用カウンタ・リスト410の書込帯域幅が、クロック・サイクルごとに1つの書込を超える必要がないからである。しかし、送信側では、フル・スループットで64バイト・パケットに対処するために、各TXPC 142が、16クロック・サイクルごとに1回ほど頻繁に2つのパケットの終りバッファ・タッチを(すなわち、8クロック・サイクルごとに1つのパケットの終りバッファ・タッチほど頻繁に)MMU 128に通知できなければならない。したがって、16個のTXPC 142があるので、バッファ解放カウンタ・リスト412は、クロックごとに少なくとも2タッチを処理できなければならない。さらに、64バイト・パケットが2つのバッファにまたがる場合など、バッファの終りがパケットの終りの前または後の非常に近くで発生する状況に対処するために、このスループット要件を2倍にしなければならない。この状況では、TXPCは、16クロックごとに4つまでのタッチ通知を通信しなければならず、バッファ解放カウンタ・リスト412のワースト・ケース・タッチ通知帯域幅要件が、2倍のクロックあたり4タッチになる。さらに、バッファ解放カウンタ・リスト412のスループット要件は、各バッファ・タッチがread−modify−write動作で2つのアクセスを必要とするので、さらに2倍になる。したがって、バッファ解放カウンタ・リスト412は、パケットあたり64バイトでフル・スループットを保証するために、クロック・サイクルあたり少なくとも8アクセスを処理できなければならない。
メモリ814でのバッファ番号の奇数/偶数分割は、この問題を軽減する上で重要な役割を演じる。8クロック・サイクルあたり2回ほど頻繁に発生するシーケンシャル・バッファ・タッチが、偶数バッファ番号と奇数バッファ番号で交番する必要があるので、バッファ解放カウンタ・リストの偶数アレイおよび奇数アレイ412Aおよび412Bへの分割によって、各アレイのバッファ・スループット要件が半分になる。スループットの残りは、バッファ解放カウンタ・アレイおよびバッファ使用カウンタ・アレイに4ポート(2読取/2書込ポート)メモリを使用することによって達成される。図16は、偶数バッファ番号のバッファ状況ストア408Aをどのように実装できるかを示す機能ブロック図である。奇数バッファ番号のバッファ状況ストア408Bは、類似する。説明および議論を明瞭にするために、図16の図では、パイプライン化などのある実装特徴が省略されている。
図16を参照すると、8つのRXPC 140−0から140−7からのバッファ番号および対応する使用カウントが、マルチプレクサ1610を介して偶数バッファ使用カウンタ・アレイ410Aの第1データ書込ポートに供給される。他方の8つのRXPC 140−8から140−15からのバッファ番号および対応する使用カウントは、マルチプレクサ1612を介して偶数バッファ使用カウンタ・アレイ410Aの第2データ書込ポートに供給される。どの場合にも、バッファ番号は、めいめいのデータ書込ポートのアドレス部分に供給され、バッファ使用カウントは、データ部分に供給される。同様に、8つのTXPC 142−0から142−7からのタッチ通知のバッファ番号は、マルチプレクサ1614を介して偶数バッファ使用カウンタ・アレイ410Aの第1データ読取ポートのアドレス部分に供給され、他方の8つのTXPC 142−8から142−15からのタッチ通知のバッファ番号は、マルチプレクサ1616を介して偶数バッファ使用カウンタ・アレイ410Aの第2データ読取ポートのアドレス部分に供給される。
偶数バッファ使用カウンタ・アレイ410Aの第1データ読取ポートのアドレス部分に供給された各バッファ番号は、偶数バッファ解放カウンタ・アレイ412Aの第1データ読取ポートのアドレス部分および偶数バッファ解放カウンタ・アレイ412Aの第1データ書込ポートのアドレス部分にも供給される。同様に、偶数バッファ使用カウンタ・アレイ410Aの第2データ読取ポートのアドレス部分に供給された各バッファ番号は、偶数バッファ解放カウンタ・アレイ412Aの第2データ読取ポートのアドレス部分および偶数バッファ解放カウンタ・アレイ412Aの第2データ書込ポートのアドレス部分にも供給される。
偶数バッファ使用カウンタ・アレイ410Aの第1データ読取ポートのデータ部分および偶数バッファ解放カウンタ・アレイ412Aの第1データ読取ポートのデータ部分は、バッファ解放コンパレータ1618のめいめいの入力に供給され、バッファ解放コンパレータ1618は、この2つのカウント値が等しいかどうかを判定する。偶数バッファ解放カウンタ・アレイ412Aの第1データ読取部分のデータ部分は、バッファ解放コンパレータ1618の同等性出力と同様に、変更論理1620にも供給される。変更論理1620は、偶数バッファ解放カウンタ・アレイ412Aの第1データ読取ポートのデータ部分からのカウントを増分するか、バッファ解放コンパレータ1618の同等性出力がアサートされている場合にはこれをクリアする。変更論理1620の出力は、偶数バッファ解放カウンタ・アレイ412Aの第1データ書込ポートのデータ部分に供給される。
同様に、偶数バッファ使用カウンタ・アレイ410Aの第2データ読取ポートのデータ部分および偶数バッファ解放カウンタ・アレイ412Aの第2データ読取ポートのデータ部分は、もう1つのバッファ解放コンパレータ1622のめいめいの入力に供給され、バッファ解放コンパレータ1622は、この2つのカウント値が等しいかどうかを判定する。偶数バッファ解放カウンタ・アレイ412Aの第2データ読取ポートのデータ部分は、バッファ解放コンパレータ1622の同等性出力と同様に、変更論理1624にも供給される。変更論理1624は、偶数バッファ解放カウンタ・アレイ412Aの第2データ読取ポートのデータ部分からのカウントを増分するか、バッファ解放コンパレータ1622の同等性出力がアサートされている場合にはこれをクリアする。変更論理1624の出力は、偶数バッファ解放カウンタ・アレイ412Aの第2データ書込ポートのデータ部分に供給される。
偶数バッファ使用カウンタ・アレイ410Aの第1のおよび第2のデータ読取ポートでアドレッシングされるバッファ番号は、バッファ解放コンパレータ1618および1622のそれぞれの同等性出力と同様に、バッファ解放論理1626にも供給される。バッファ解放論理1626は、TXPC 142によるタッチ通知の対象であり、バッファ解放コンパレータ1618または1622が同等性をアサートしたバッファ番号を示すバッファ解放信号を生成する。
動作中に、RXPC 140は、必要に応じて、マルチプレクサ1610および1612を介して偶数バッファ使用カウンタ・アレイ410Aにバッファ使用カウントを書き込む。TXPC 142からは、タッチ通知バッファ番号が、偶数バッファ使用カウンタ・アレイ410Aからの指定されたバッファ番号のバッファ使用カウントと、偶数バッファ解放カウンタ・アレイ412Aからの指定されたバッファ番号のバッファ解放カウントの現在値の両方を読み出すのに使用される。この2つのカウント値は、適宜バッファ解放コンパレータ1618または1622によって比較され、これらが等しい場合に、前に説明したように、バッファ解放論理1626が、MMU 128にバッファ番号を解放させる。また、バッファ解放コンパレータ1618または1622は、適宜、変更論理1620または1624に、偶数バッファ解放カウンタ・アレイ412Aの新に解放されたバッファ番号に対応するアドレスに、クリアされたカウント値を書き込ませる。2つのカウントが等しくない場合には、偶数バッファ解放カウンタ・アレイ412Aから読み取られた現行バッファ解放カウントが、変更論理1620または1624によって増分され、偶数バッファ解放カウンタ・アレイ412Aの同一位置に書き戻される。
図2、3、5A、5B、5D、および5Eの流れ図は、バッファ118の偶数/奇数分離を実装するために、次のように変更される。RXPC 140内で、ステップ210(図2)で、MMU 128が、1つではなく2つすなわち奇数と偶数の開始空きバッファ番号を割り振る。このうちの1つが、現行バッファ番号になる。RRXPC空きバッファ番号プリフェッチFIFO 1020(図10)は、4つの空きバッファ番号を保持するが、これらは、交番する奇数と偶数になる。
TXPC 142では、TXPC 142がMMUに各次のリンクされたバッファ番号を要求する時(図3のステップ314)に、MMU 128が、やはり一時に1つの次バッファ番号だけを供給する。しかし、MMU 128は、2つの読取ポートおよび2つの書込ポートを有する単一のバッファ・リンケージ・リスト416からこれを行う。TXPC 142−0から142−7は、すべてが一方の読取ポートを使用するように任意に割り当てられ、TXPC 142−8から142−15は、すべてが他方の読取ポートを使用するように任意に割り当てられる。ステップ320で、TXPC 142は、バッファ・タッチについてMMU 128に通知する時に、現行バッファ番号が偶数の場合には「偶数」バッファ・タッチ通知でそれを行い、現行バッファ番号が奇数の場合には「奇数」バッファ・タッチ通知でそれを行う。
MMU 128では、RXPC 140から空きバッファ番号を受け取った時に(図5A)、MMUが、空きバッファ・リスト414の前面にあるバッファ番号ではなく、空きバッファの偶数アレイおよび奇数アレイ414Aおよび414Bのそれぞれの前面にあるバッファ番号を要求元のRXPC 140に報告する。また、MMUは、そのようなアレイの両方からの割り振られたバッファ番号を、このRXPC 140に割り振られたバッファの循環トレース・メモリ418の末尾に移動する。
TXPC 142からのバッファ使用カウント報告(図5B)は、MMUへのRXPCの偶数バスまたは奇数バスのいずれかでMMU 128によって受け取られる。MMU 128は、したがって、MMU 128が報告を受け取ったバスに応じて、バッファ使用カウンタ・アレイ410Aまたは410Bの指定されたバッファ番号の位置にRXPC 140からのパケット使用カウントを書き込む。
TXPC 142からのバッファ・タッチ通知(図5D)も、MMUへのTXPCの偶数バスまたは奇数バスのいずれかでMMU 128によって受け取られる。次に、MMU 128は、MMU 128がタッチ通知を受け取ったバスに応じて、偶数または奇数のいずれかのバッファ使用ストアおよびバッファ解放ストアで、図16に関して上で説明したタッチ通知の機能を実行する。
外部コントローラからバッファ・スクラブ・コマンドを受け取った時に(図5E)、MMUスクラブ論理は、やはりすべてのバッファ番号をループする。MMUスクラブ論理は、偶数および奇数のバッファ番号を同時には検索しない。というのは、速度が、この動作では重要でないからである。バッファ番号ごとに、スクラブ論理は、適宜、空きバッファの偶数アレイまたは奇数アレイおよびすべてのトレース・メモリからそのバッファ番号を検索する。見つからず、現行バッファ番号が偶数の場合には、スクラブ論理は、TXPC
142によるバッファの可能な解放について、ウォッチ期間の間、偶数のバッファ解放コンパレータ1618および1622をウォッチする。現行バッファ番号が奇数の場合には、スクラブ論理は、奇数バッファ状況ストア408B内の奇数解放コンパレータ(図示せず)をウォッチする。現行バッファ番号がそれでも見つからない場合には、MMU 128は、バッファ番号を、適宜偶数または奇数の空きバッファ・アレイ414Aまたは414Bの末尾に書き込むことによってそのバッファを再利用する。スクラブ論理は、次に、ループ・バックして次のバッファ番号を検査する。
本明細書で使用される、所与の信号、イベント、または値は、先祖の信号、イベント、または値が所与の信号、イベント、または値に影響した場合に、先祖の信号、イベント、または値に「応答」する。間に入る処理要素、ステップ、または時間期間がある場合に、所与の信号、イベント、または値は、それでも先祖の信号、イベント、または値に「応答」することができる。間に入る処理要素またはステップが、複数の信号、イベント、または値を組み合わせる場合に、その処理要素またはステップの信号出力は、信号入力、イベント入力、または値入力のそれぞれに「応答」すると考えられる。所与の信号、イベント、または値が、先祖の信号、イベント、または値と同一である場合に、これは、単に、所与の信号、イベント、または値が先祖の信号、イベント、または値に「応答」する退化した事例である。所与の信号、イベント、または値の別の信号、イベント、または値に対する「依存性」は、同様に定義される。
本明細書で示し、説明した実施形態および変形形態が、本発明の原理の例示にすぎないことと、本発明の趣旨および範囲から逸脱せずに、当業者がさまざまな変形形態を実施できることを理解されたい。たとえば、本明細書で、別々のバスまたは導体で担持されるものとして情報が図示されるか説明された場合には、必ず、別の実施形態で、同一の情報を、1つまたは複数の共通のバスまたは導体で担持するために一緒に符号化または多重化することができる。もう1つの例として、図4および15でMMU 128内に配置されて示されたリストおよびメモリのいずれかまたはすべてを、スイッチング・ファブリックの異なる機能ユニット内に配置するか、それらの間で分散することができる。もう1つの例として、書込要求クロスバ・スイッチ134は、スイッチ134を介して1単位としてルーティングするためにデータ書込要求の対を組み合わせるが、別の実施形態では、そのようなデータ書込要求を独立にルーティングすることができる。同一のことが、読取アドレス・クロスバ・スイッチ1210およびデータ戻りクロスバ・スイッチ1212についても言える。本明細書で説明した実施形態は、本発明の原理およびその実用的応用例を最もよく説明し、これによって、企図される特定の使用に適するようにさまざまな変更を加えてさまざまな実施形態について当業者が本発明を理解することを可能にするために選択され、説明されたものである。
本発明の特徴を組み込んだ共用メモリ・スイッチング・ファブリックを示すブロック図である。 図1の受信ポート・コントローラによって実行される機能を示す流れ図である。 図1の送信ポート・コントローラによって実行される機能を示す流れ図である。 図1のMMU内のメモリおよびリストを示す図である。 図1のMMUによって実行されるいくつかの機能を示す流れ図である。 図1のMMUによって実行されるいくつかの機能を示す流れ図である。 図1のMMUによって実行されるいくつかの機能を示す流れ図である。 図1のMMUによって実行されるいくつかの機能を示す流れ図である。 図1のMMUによって実行されるいくつかの機能を示す流れ図である。 本発明の特徴を組み込んだ代替の共用メモリ・スイッチング・ファブリックを示すブロック図である。 図6または8のメモリ・バンク・グループのある内部機能を示す機能ブロック図である。 図6または8のメモリ・バンク・グループのある内部機能を示す機能ブロック図である。 本発明の特徴を組み込んだ共用メモリ構造を示す図である。 図8の共用メモリ構造と共に使用される入口装置を示す図である。 図9の受信ポート・コントローラを示す図である。 図10のバンクFIFOアレイの例示的実装を示す図である。 図8の共用メモリ構造と共に使用される出口装置を示す図である。 図12の送信ポート・コントローラ読取アドレス・ジェネレータを示す図である。 図12の送信ポート・コントローラ読取データ並べ換え機能を示す図である。 図1のMMU内のメモリおよびリストを示す図である。 図15の偶数バッファ状況ストアの可能な実装を示す図である。

Claims (24)

  1. パケット・スイッチ内の共用メモリにパケットを保管する方法であって、前記共用メモリが、1つまたは複数のバッファを含み、前記1つまたは複数のバッファのそれぞれが、複数のバンクを含み、
    第1バッファの連続するバンクにパケットの少なくとも一部を保管するステップ
    を含む方法。
  2. 前記パケットが、複数のデータ単位を含み、前記データ単位の1つが前記第1バッファの最後のバンクに保管され、かつ前記第1バッファの前記最後のバンクに保管された前記データ単位が前記パケットの最後のデータ単位でない場合に、前記パケットの追加部分を第2バッファの連続するバンクに保管するステップをさらに含む、請求項1に記載の方法。
  3. 前記1つまたは複数のバッファのそれぞれが、1つまたは複数のグループを含み、前記グループのそれぞれが、複数のバンクを含む、請求項1に記載の方法。
  4. 複数のパケットのそれぞれの少なくとも一部が、前記バッファのうちの1つに保管される、請求項1に記載の方法。
  5. 1つまたは複数のデータ・ポートに循環式にアクセスするステップをさらに含み、前記データ・ポートのそれぞれが、前記複数のバンクのうちの1つまたは複数に対応する、請求項1に記載の方法。
  6. 前記バンクが、バンクの第1組およびバンクの第2組に分割され、バッファ要求に応答して、前記第1組からの1つまたは複数のバンクを含むバッファおよび前記第2組からの1つまたは複数のバンクを含むバッファを割り振るステップをさらに含む、請求項1に記載の方法。
  7. 前記共用メモリが、前記パケット・スイッチ内のポートの間でパケットを交換する、請求項1に記載の方法。
  8. 前記パケットの前記シーケンシャル・データ単位が、前記1つまたは複数のバッファのうちの少なくとも1つの連続するバンクに保管される、請求項1に記載の方法。
  9. パケット・スイッチ内の共用メモリを管理する方法であって、前記共用メモリが、1つまたは複数のバッファを含み、
    前記バッファのうちの少なくとも1つについてバッファ使用カウントを維持するステップ
    を含む方法。
  10. ある出力ポート宛のパケットが前記バッファに保管されていることを示すために前記バッファ使用カウントを1つ増分するステップをさらに含む、請求項9に記載の方法。
  11. データ単位が前記バッファから読み取られ、前記データ単位がパケットの最後のデータ単位または前記バッファの最後のデータ単位である時に、前記バッファ使用カウントを1つ減分するステップをさらに含む、請求項9に記載の方法。
  12. 前記バッファ使用カウントが、マルチキャスティング動作を実行するためにパケットの宛先ポートの個数を示す、請求項9に記載の方法。
  13. 前記バッファ使用カウントに基づいてバッファが空いているかどうかを判定するステップをさらに含む、請求項9に記載の方法。
  14. 前記バッファ使用カウントが、前記パケットのそれぞれがあてられた出力ポートの個数の、前記バッファのうちの前記少なくとも1つのすべてのパケットに関する合計の表示を提供する、請求項9に記載の方法。
  15. 空きバッファ・リストを検索するステップと、
    循環トレース・メモリを検索するステップと
    を含む、パケット・スイッチの共用メモリ内の失われたバッファを検出する方法。
  16. 事前定義の期間だけ前記バッファの解放の表示を待つステップをさらに含む、請求項15に記載の方法。
  17. 前記バッファの解放が前記待機期間中に発生しない場合に、前記失われたバッファを空きバッファ・リストに追加するステップをさらに含む、請求項15に記載の方法。
  18. それぞれが複数のバンクを含む1つまたは複数のバッファであって、パケットの少なくとも一部が第1バッファの連続するバンクに保管される、1つまたは複数のバッファ
    を含む、前記パケットを保管する共用メモリ。
  19. 前記パケットが、複数のデータ単位を含み、前記パケットの追加部分が、前記データ単位の1つが前記第1バッファの最後のバンクに保管され、かつ前記第1バッファの前記最後のバンクに保管された前記データ単位が前記パケットの最後のデータ単位でない場合に、第2バッファの連続するバンクに保管される、請求項18に記載の共用メモリ。
  20. 前記1つまたは複数のバッファのそれぞれが、1つまたは複数のグループを含み、前記グループのそれぞれが、複数のバンクを含む、請求項18に記載の共用メモリ。
  21. 複数のパケットのそれぞれの少なくとも一部が、前記バッファのうちの1つに保管される、請求項18に記載の共用メモリ。
  22. 前記バンクが、バンクの第1組およびバンクの第2組に分割され、バッファ要求に応答して、前記第1組からの1つまたは複数のバンクを含むバッファおよび前記第2組からの1つまたは複数のバンクを含むバッファを割り振るステップをさらに含む、請求項18に記載の共用メモリ。
  23. 前記共用メモリが、パケット・スイッチ内のポートの間でパケットを交換する、請求項18に記載の共用メモリ。
  24. 前記パケットのそれぞれがあてられた出力ポートの個数の、前記バッファの前記少なくとも1つ内のすべてのパケットに関する合計の表示を提供するバッファ使用カウントを監視するカウンタをさらに含む、請求項18に記載の共用メモリ。
JP2006513192A 2003-04-22 2004-04-21 共用マルチバンク・メモリのための方法および装置 Expired - Fee Related JP5089167B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US46446203P 2003-04-22 2003-04-22
US60/464,462 2003-04-22
PCT/US2004/012305 WO2004095286A2 (en) 2003-04-22 2004-04-21 Method and apparatus for shared multi-bank memory in a packet switching system

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2009007601A Division JP4918104B2 (ja) 2003-04-22 2009-01-16 共用マルチバンク・メモリのための方法および装置

Publications (2)

Publication Number Publication Date
JP2006524477A true JP2006524477A (ja) 2006-10-26
JP5089167B2 JP5089167B2 (ja) 2012-12-05

Family

ID=33310893

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2006513192A Expired - Fee Related JP5089167B2 (ja) 2003-04-22 2004-04-21 共用マルチバンク・メモリのための方法および装置
JP2009007601A Expired - Fee Related JP4918104B2 (ja) 2003-04-22 2009-01-16 共用マルチバンク・メモリのための方法および装置

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2009007601A Expired - Fee Related JP4918104B2 (ja) 2003-04-22 2009-01-16 共用マルチバンク・メモリのための方法および装置

Country Status (6)

Country Link
US (1) US8861515B2 (ja)
EP (2) EP2077648A1 (ja)
JP (2) JP5089167B2 (ja)
KR (1) KR101086592B1 (ja)
DE (1) DE602004021371D1 (ja)
WO (1) WO2004095286A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010067091A (ja) * 2008-09-11 2010-03-25 Fujitsu Ltd 共有メモリシステム

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050198361A1 (en) * 2003-12-29 2005-09-08 Chandra Prashant R. Method and apparatus for meeting a given content throughput using at least one memory channel
US7505405B2 (en) * 2004-10-08 2009-03-17 International Business Machines Corporation Method, apparatus, and computer program product for optimizing packet flow control through buffer status forwarding
US8331380B2 (en) * 2005-02-18 2012-12-11 Broadcom Corporation Bookkeeping memory use in a search engine of a network device
US20060187917A1 (en) * 2005-02-18 2006-08-24 Broadcom Corporation Pre-learning of values with later activation in a network device
US7802028B2 (en) * 2005-05-02 2010-09-21 Broadcom Corporation Total dynamic sharing of a transaction queue
US7577133B1 (en) * 2005-09-09 2009-08-18 Juniper Networks, Inc. Scalable central memory switching fabric
US20070121499A1 (en) * 2005-11-28 2007-05-31 Subhasis Pal Method of and system for physically distributed, logically shared, and data slice-synchronized shared memory switching
US7593330B1 (en) * 2006-01-30 2009-09-22 Juniper Networks, Inc. Processing of partial frames and partial superframes
US7991926B1 (en) * 2006-02-22 2011-08-02 Marvell Israel (M.I.S.L) Ltd. Scalable memory architecture for high speed crossbars using variable cell or packet length
JP2007243545A (ja) * 2006-03-08 2007-09-20 Nec Corp 多重化スイッチング回路及び多重化スイッチング方法
TWI307101B (en) * 2006-11-02 2009-03-01 Via Tech Inc Memory device and related method for realizing two-port mrmory functions
US7620770B2 (en) * 2006-11-09 2009-11-17 Ethernity Networks Ltd. Device and method for storing and processing data units
US8190561B1 (en) * 2006-12-06 2012-05-29 At&T Mobility Ii Llc LDAP replication priority queuing mechanism
US9634960B2 (en) * 2006-12-14 2017-04-25 Maged E. Beshai Petabits-per-second packet switch employing cyclically interconnected switch units
US8370557B2 (en) * 2008-12-19 2013-02-05 Intel Corporation Pseudo dual-port SRAM and a shared memory switch using multiple memory banks and a sideband memory
JP5394897B2 (ja) * 2009-11-11 2014-01-22 エスアイアイ・ネットワーク・システムズ株式会社 パケット転送装置およびパケット転送方法
WO2011058659A1 (ja) * 2009-11-16 2011-05-19 富士通株式会社 Fifoバッファ及びfifoバッファの制御方法
US20120066444A1 (en) * 2010-09-14 2012-03-15 Advanced Micro Devices, Inc. Resolution Enhancement of Video Stream Based on Spatial and Temporal Correlation
JP5748288B2 (ja) * 2011-12-27 2015-07-15 日本電信電話株式会社 パケットバッファ装置およびパケットバッファ制御方法
TWI517633B (zh) * 2012-04-30 2016-01-11 新唐科技股份有限公司 路由電路及具有路由電路的電路
US20140321471A1 (en) * 2013-04-26 2014-10-30 Mediatek Inc. Switching fabric of network device that uses multiple store units and multiple fetch units operated at reduced clock speeds and related method thereof
CN104125171A (zh) * 2013-04-26 2014-10-29 联发科技股份有限公司 交换机结构以及入口流量处理方法
US9224454B2 (en) * 2013-10-25 2015-12-29 Cypress Semiconductor Corporation Multi-channel physical interfaces and methods for static random access memory devices
US9361973B2 (en) 2013-10-28 2016-06-07 Cypress Semiconductor Corporation Multi-channel, multi-bank memory with wide data input/output
US10055365B2 (en) * 2015-07-24 2018-08-21 Mediatek Inc. Shared buffer arbitration for packet-based switching
US9990160B2 (en) 2016-06-27 2018-06-05 Altera Corporation Methods and apparatus for smart memory interface
US10176857B1 (en) * 2017-06-22 2019-01-08 Globalfoundries Inc. Read and write scheme for high density SRAM
JP7042138B2 (ja) * 2018-03-30 2022-03-25 日立Astemo株式会社 処理装置
WO2019214801A1 (en) * 2018-05-07 2019-11-14 Huawei Technologies Co., Ltd. Memory device for a high bandwidth high capacity switch
CN108833203B (zh) * 2018-05-23 2021-04-30 新华三信息安全技术有限公司 一种报文统计方法及装置
WO2020197964A1 (en) * 2019-03-26 2020-10-01 Axis Semiconductor, Inc. Computing device with circuit switched memory access
CN110519181B (zh) * 2019-07-23 2022-09-06 中国航空无线电电子研究所 基于跨频段时间触发通信的交换方法
TWI763131B (zh) * 2020-11-18 2022-05-01 瑞昱半導體股份有限公司 網路介面裝置、包含該網路介面裝置之電子裝置,及網路介面裝置的操作方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07191908A (ja) * 1993-12-27 1995-07-28 Nec Corp マイクロプロセッサとその制御方法
JPH118636A (ja) * 1997-03-21 1999-01-12 Brocade Commun Syst Inc ファイバチャネルスイッチングシステム及びその方法
JP2000115178A (ja) * 1998-10-01 2000-04-21 Mitsubishi Electric Corp セル同報装置
JP2000149426A (ja) * 1998-11-05 2000-05-30 Sony Corp メモリアクセス装置および方法、並びにデータ処理装置
JP2000516423A (ja) * 1996-12-16 2000-12-05 ジュニパー ネットワークス 高速スイッチング装置
JP2001109659A (ja) * 1999-10-07 2001-04-20 Nec Kofu Ltd メモリ制御方式
JP2002344502A (ja) * 2001-05-14 2002-11-29 Fujitsu Ltd パケットバッファ
JP2003508966A (ja) * 1999-08-31 2003-03-04 モサイド・テクノロジーズ・インコーポレイテッド インタリーブされた非ブロッキングパケットバッファのための方法および装置

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5504741A (en) 1993-02-15 1996-04-02 Mitsubishi Denki Kabushiki Kaisha Data queuing apparatus and ATM cell switch based on shifting and searching
US5905729A (en) * 1995-07-19 1999-05-18 Fujitsu Network Communications, Inc. Mapping a data cell in a communication switch
US6240065B1 (en) 1996-01-08 2001-05-29 Galileo Technologies Ltd. Bit clearing mechanism for an empty list
IL116707A (en) 1996-01-08 2000-01-31 Galileo Technology Ltd Method and apparatus for managing packet memory
IL116986A (en) 1996-01-31 2000-01-31 Galileo Technology Ltd Switching ethernet controller providing packet routing
IL116989A (en) 1996-01-31 1999-10-28 Galileo Technology Ltd Switching ethernet controller
IL116988A (en) 1996-01-31 1999-12-31 Galileo Technology Ltd Bus protocol
IL117134A (en) 1996-02-14 2000-01-31 Galileo Technology Ltd First-in first-out (fifo) buffer
US5909440A (en) 1996-12-16 1999-06-01 Juniper Networks High speed variable length best match look-up in a switching device
US5905725A (en) * 1996-12-16 1999-05-18 Juniper Networks High speed switching device
US5893162A (en) * 1997-02-05 1999-04-06 Transwitch Corp. Method and apparatus for allocation and management of shared memory with data in memory stored as multiple linked lists
US6021132A (en) * 1997-06-30 2000-02-01 Sun Microsystems, Inc. Shared memory management in a switched network element
US6295299B1 (en) 1997-08-29 2001-09-25 Extreme Networks, Inc. Data path architecture for a LAN switch
US6151321A (en) * 1997-11-14 2000-11-21 Fore Systems, Inc. Method and system for sending ATM cells to an ATM network from a host
FR2771573B1 (fr) * 1997-11-27 2001-10-19 Alsthom Cge Alkatel Element de commutation de paquets a memoires tampons
US6470021B1 (en) 1998-01-27 2002-10-22 Alcatel Internetworking (Pe), Inc. Computer network switch with parallel access shared memory architecture
US6247058B1 (en) * 1998-03-30 2001-06-12 Hewlett-Packard Company Method and apparatus for processing network packets using time stamps
US6320861B1 (en) 1998-05-15 2001-11-20 Marconi Communications, Inc. Hybrid scheme for queuing in a shared memory ATM switch buffer
US6601089B1 (en) * 1999-06-21 2003-07-29 Sun Microsystems, Inc. System and method for allocating buffers for message passing in a shared-memory computer system
US6434662B1 (en) 1999-11-02 2002-08-13 Juniper Networks, Inc. System and method for searching an associative memory utilizing first and second hash functions
US6532503B1 (en) * 2000-02-18 2003-03-11 3Com Corporation Method and apparatus to detect lost buffers with a descriptor based queue
US6501757B1 (en) * 2000-02-29 2002-12-31 Centre For Development Of Telematics ATM switch
US7007071B1 (en) * 2000-07-24 2006-02-28 Mosaid Technologies, Inc. Method and apparatus for reducing pool starvation in a shared memory switch
US7301906B2 (en) * 2001-12-17 2007-11-27 Lsi Corporation Methods and structures for improved buffer management and dynamic adaption of flow control status in high-speed communication networks
US6809557B2 (en) 2002-02-19 2004-10-26 Sun Microsystems, Inc. Increasing power supply noise rejection using linear voltage regulators in an on-chip temperature sensor
US6812929B2 (en) * 2002-03-11 2004-11-02 Sun Microsystems, Inc. System and method for prefetching data from a frame buffer
US20120155466A1 (en) * 2002-05-06 2012-06-21 Ian Edward Davis Method and apparatus for efficiently processing data packets in a computer network
CA2706654C (en) * 2003-02-20 2014-01-28 Nortel Networks Limited Circulating switch

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07191908A (ja) * 1993-12-27 1995-07-28 Nec Corp マイクロプロセッサとその制御方法
JP2000516423A (ja) * 1996-12-16 2000-12-05 ジュニパー ネットワークス 高速スイッチング装置
JPH118636A (ja) * 1997-03-21 1999-01-12 Brocade Commun Syst Inc ファイバチャネルスイッチングシステム及びその方法
JP2000115178A (ja) * 1998-10-01 2000-04-21 Mitsubishi Electric Corp セル同報装置
JP2000149426A (ja) * 1998-11-05 2000-05-30 Sony Corp メモリアクセス装置および方法、並びにデータ処理装置
JP2003508966A (ja) * 1999-08-31 2003-03-04 モサイド・テクノロジーズ・インコーポレイテッド インタリーブされた非ブロッキングパケットバッファのための方法および装置
JP2001109659A (ja) * 1999-10-07 2001-04-20 Nec Kofu Ltd メモリ制御方式
JP2002344502A (ja) * 2001-05-14 2002-11-29 Fujitsu Ltd パケットバッファ

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010067091A (ja) * 2008-09-11 2010-03-25 Fujitsu Ltd 共有メモリシステム

Also Published As

Publication number Publication date
WO2004095286A3 (en) 2005-03-03
JP2009077453A (ja) 2009-04-09
US8861515B2 (en) 2014-10-14
EP1616415A2 (en) 2006-01-18
KR20060009263A (ko) 2006-01-31
JP4918104B2 (ja) 2012-04-18
EP1616415B1 (en) 2009-06-03
WO2004095286A2 (en) 2004-11-04
EP2077648A1 (en) 2009-07-08
DE602004021371D1 (de) 2009-07-16
KR101086592B1 (ko) 2011-11-23
JP5089167B2 (ja) 2012-12-05
US20060221945A1 (en) 2006-10-05

Similar Documents

Publication Publication Date Title
JP4918104B2 (ja) 共用マルチバンク・メモリのための方法および装置
US8081646B1 (en) Old virtual queues technique for routing data packets in a packet switch
US7443836B2 (en) Processing a data packet
US5790545A (en) Efficient output-request packet switch and method
US6795886B1 (en) Interconnect switch method and apparatus
US7555579B2 (en) Implementing FIFOs in shared memory using linked lists and interleaved linked lists
US7653072B2 (en) Overcoming access latency inefficiency in memories for packet switched networks
US5982771A (en) Controlling bandwidth allocation using a pace counter
EP1398922B1 (en) Balanced linked lists for high performance data buffers in a network device
US8995445B2 (en) System and method for re-sequencing data packets on a per-flow basis
US6791992B1 (en) Earliest-deadline-first queuing cell switching architecture and method
US7439763B1 (en) Scalable shared network memory switch for an FPGA
US20030227933A1 (en) Prefetching techniques for network interfaces
JPH0581121A (ja) 先入れ先出し式メモリ・バツフア
US7991926B1 (en) Scalable memory architecture for high speed crossbars using variable cell or packet length
US20030053470A1 (en) Multicast cell buffer for network switch
US20050204103A1 (en) Split queuing
US9824058B2 (en) Bypass FIFO for multiple virtual channels
US7568074B1 (en) Time based data storage for shared network memory switch
US20040131055A1 (en) Memory management free pointer pool
EP0870415B1 (en) Switching apparatus
US20060140203A1 (en) System and method for packet queuing
US7996604B1 (en) Class queue for network data switch to identify data memory locations by arrival time
WO2002084959A1 (en) Non-blocking scalable switching fabric
WO1997004570A1 (en) Controlling bandwidth allocation using a pace counter

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080612

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080716

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20081016

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20081023

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090330

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090630

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090707

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091214

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100312

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100319

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100614

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100823

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101224

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20110216

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120326

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120330

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120426

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120502

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120911

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150921

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees
S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350