(57)【要約】【課題】  本発明は、二重ポートメモリのように動作するが従来の単一ポートメモリセルから実現でき、大きなＦＩＦＯメモリの製造を可能にする。【解決手段】  パケット通信のラインカード（２０）を含むネットワーク・ノード（５）が開示される。ラインカード内の通信をバッファリングする送信ＦＩＦＯバッファ（２４Ｔ）及び受信ＦＩＦＯバッファ（２４Ｒ）を含む。各バッファは、データ・ワードの書込み及び読出し要求を非同期的に受信する二重ポート態様で動作する。バッファの各々は、従来の単一ポートＳＲＡＭのメモリ配列（４５）を含む。クロック・サイクルが、交互に内部読出し及び書込みサイクルとして割当てられる。書込みバッファ（４２）が、内部書込みサイクルで、メモリ配列へ二倍データ・ワード書込みをスケジュールする。読出し要求バッファ（４４）が、メモリ配列から二倍データ・ワード読出しをスケジュールする。【選択図】          図５
2005018768.tif 000002
【特許請求の範囲】
【請求項１】
ファーストイン・ファーストアウト・メモリであって、
メモリ配列と、
クロック信号を受信するためのクロック端子と、
書込み可能化信号を受信するための書込み可能化端子と、
入力データ・ワードを受信するための入力と、
読出し可能化信号を受信するための読出し可能化端子と、
入力データ・ワードと同じワード幅の出力データ・ワードを与える出力と、
入力とメモリセル配列に接続されて、書込み可能化端子における対応する書込み可能化信号と一緒に入力から第１及び第２入力データ・ワードのシーケンスを受信し、単一書込みサイクルにおいて第１及び第２入力データ・ワードをメモリ配列に書込むための書込みバッファと、
読出し可能化端子における第１及び第２読出し可能化信号の受信に応答して、メモリ配列の読出し要求をするための読出し回路と、
メモリ配列の読出し要求に応答してメモリ配列から第１及び第２出力データ・ワードを受信して、第１及び第２出力データ・ワードを順番に出力に与えるための読出しバッファと、
を含むファーストイン・ファーストアウト・メモリ。
【請求項２】
メモリ回路と共にデータ・ワードをバッファするための方法であって、
メモリ回路の入力端子において入力データ・ワードのシーケンスを受信するステップと、
第１入力データ・ワード及び第２入力データ・ワードの受信に応答して、第１及び第２入力データ・ワードを単一の書込みサイクルにおいてメモリ回路のメモリ配列中に書込むステップと、
読出しストロボ信号を受信するステップと、
第１及び第２読出しストロボ信号に応答して、第１及び第２出力データ・ワードを単一の読出しサイクルにおいてメモリ配列から読出すステップと、
第１及び第２出力データ・ワードをメモリ回路の出力端子に順番に提供するステップと、
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路メモリアーキテクチャの分野に関し、より詳細には、ファーストイン・ファーストアウト（ＦＩＦＯ）バッファに使用されるメモリアーキテクチャに関する。
【背景技術】
【０００２】
最近の広範囲のコンピュータ・ネットワークの使用と配備は、主として、イーサネット（登録商標）技術に依存している。この分野では良く知られているように、イーサネット・ネットワークは、パケット・ベースの通信の使用を含み、これにより各通信は複数パケットで通信される。各パケットはメッセージの宛先及びソース・アドレス及び全体の通信を構成するシーケンス内のパケット位置などの識別情報を含む。この手法は構造的に大変複雑な高容量ネットワークの効率的な配備を、異なるタイプ及び大きさのデジタル・データの効率的且つ成功的な送信の高い信頼性を可能とする態様でできる。実際、イーサネット技術はインターネットの発展と配備に主要な役割を果たしている。
【０００３】
パケットに基づいた通信は、デジタル・マルチメデイア通信及び変化するサービス品質（ＱｏＳ）レベルの通信で主要な役割を果たしている。異なるＱｏＳレベルは異なるデータ性能を指定し、そして異なる優先通信を支援し、そして、ユーザに対して課金できる異なるレート又は料金を支援する。ＱｏＳレベル又はクラスの例は、一定ビット・レート（ＣＢＲ）、未指定ビット・レート（ＵＢＲ、最良努力ともいう）、及び可変ビット・レート（ＶＢＲ）を含む。これらの周知のカテゴリは、通信チャンネル上で利用可能な帯域幅の公平な割当てを可能にする。
【０００４】
典型的に、イーサネット・コンテキストで損失のない流れ制御は、ネットワーク中での各ノードにおいて送信されたデータのある量のバッファリングを含む。このバッファリングは、与えられたネットワークのアーキテクチャの可変な性質のため、そしてボトルネックが与えられたネットワーク・ノードから下流のネットワークのどこかで存在する可能性のため、しばしば必要である。損失がないようにするため、十分なバッファ容量が、下流ボトルネックの際にノードの受信側と送信側に１つ又は複数のパケットを格納するために設けられなければならない。そして、バッファされたパケットはネットワーク状態が許すならば後で転送できる。このバッファリングはしばしば二重ポート・ファーストイン・ファーストアウト（ＦＩＦＯ）バッファとして動作する二重ポート・メモリにより達成される。二重ポート・バッファは、バッファへの同時的且つ非同期的な、読出しと書込みを許容して、与えられたネットワーク・ノードの両側での通信の非同期的な性質を考慮すると特に有利である。十分な容量のＦＩＦＯバッファが与えられると、損失のない流れ制御を容易に実行できる。
【０００５】
しかし、現代のイーサネット技術は、現在人気のある１０ギガビット・イーサネット・バックボーン・ネットワークなど、非常に高いデータ・レートで運ぶことができる。このデータ・レートでは、相対的に大きなＦＩＦＯバッファが損失のない流れ制御を達成するために必要となる。また、損失のない流れ制御のために必要なバッファの大きさは、ネットワーク・ノード間の距離が増大するにつれて増加する。バッファの大きさとデータ・レートとノード距離との間の関係は、ネットワーク接続上の送信及び受信ノードの間で実行される流れ制御操作でのハンドシェイク方法から発生する。例えば、ネットワーク・ノードの受信ＦＩＦＯバッファは、ボトルネックが受信ノードから下流で発生した場合、急速に満たされる。このＦＩＦＯが閾値を越えて満たされると、受信ノードの送信側は送信ネットワーク・ノードへ停止要求を出し、データ・パケットの送信の停止を要求する。停止要求の受信の際、送信ノードは現在のパケットの送信を終了し、その残りは送信が損失のないようにするために受信ノードにおいてバッファされなければならない。従って、受信ノードのＦＩＦＯバッファは、受信ノードが停止要求を開始するために必要な遅延の間、停止要求を受信して処理する送信ノードの遅延の間、そして現在のパケットの残りの間に送信されるデータの容量を記憶するために十分な大きさを持つ必要がある。したがって、損失のない操作のために、高いデータ・レートは相当に大きいバッファを必要とする。ネットワーク・ノード間の長距離もまた、ＦＩＦＯが施設上に送信されているビットをバッファしなければならないために、必要なＦＩＦＯの大きさに寄与する。
【０００６】
本発明に関連して、従来の二重ポートメモリＦＩＦＯは、ギガビット・イーサネット・メトロエリアネットワーク（ＭＡＮ）実現中の合理的なケーブル長に対して小さすぎることが発見された。これは、二重ポートメモリが集積回路チップ領域（シリコン領域）の観点から非常に高価であるからである。例えば、現在のアプリケーション特有集積回路（ＡＳＩＣ）技術では、二重ポートＲＡＭ又は二重ポート・レジスタ・ファイルは、現実的に、約２５０ｋビットの大きさに限定されている。不幸なことに、２５０ｋビットＦＩＦＯは、この大きさのバッファは最も寛大な１０ＧＥクラス（普通のパケットのみを支援する１０ＧＢＡＳＥ−Ｘ）でさえ約２ｋｍのケーブル長を越えて支援できないため、損失のないギガビット・イーサネットに対して実質的に役に立たない。
【０００７】
これと対照的に、現実的なメトロエリアネットワーク（ＭＡＮ）は、４０ｋｍの程度のケーブル長を持ち、１０ＧＢＡＳＥ−Ｗに従いジャンボ・パケットを支援するギガビット・イーサネット通信が可能でなければならない。上記の解析から、この機能は数メガバイト程度のＦＩＦＯの大きさを必要とし、特に、イーサネットについてメディアアクセス制御（ＭＡＣ）回路及び他のパケットベース・ネットワーキングを単一集積回路内に集積する最近の傾向を考えると、二重ポートＲＡＭを介して実現するにはもちろん禁止的に高価である。これらの理由のため、ＦＩＦＯメモリについて利用可能な技術とＭＡＮ環境中でのギガビット・イーサネットの機能的必要性との間に、切断が存在する。
【０００８】
さらなる背景技術として、二重ポートメモリの多くの他の応用が当該技術に存在する。典型的には、二重ポートメモリは、非同期的システム要素間のどんな大きなデータ・レート、又はデータ品質、インターフェイスで有用である。このようなインターフェイスの例は、コンピュータ・サブシステム又は入出力装置、及び主コンピュータ・バス、非パケットベース・ネットワーキング・アプリケーションの間のデータ転送インターフェイス、マルチプロセシング環境、エミュレーション・システム等の異なるマイクロプロセッサ又はＣＰＵ間インターフェイスを含む。
【０００９】
従って、高速パケットベース・ネットワーク通信のみならず、多くのシステム及びシステム応用において、費用効率的な二重ポートメモリに対する必要性が存在する。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
従って、本発明の１つの目的は、二重ポート能力を有する低コストメモリ・アーキテクチャを提供することである。
【００１１】
本発明の別の目的は、二重ポート態様でアクセス可能な単一ポートメモリセルの配列を持つようなメモリ・アーキテクチャを提供することである。
【００１２】
本発明の別の目的は、大規模論理装置内の埋め込みメモリとして効率的な実現に適するようなメモリ・アーキテクチャを提供することである。
【００１３】
本発明の別の目的は、送信及び受信ＦＩＦＯバッファリングのためにこのようなメモリ・アーキテクチャを組み込んだ高速パケットベース・ネットワーク通信のためのメディアアクセスコントローラを提供することである。
【００１４】
本発明の別の目的は、例えば、メトロエリアネットワーク（ＭＡＮ）文脈中の、数十キロメートル程度及びそれ以上のケーブル長について、ギガビット・イーサネット文脈中で損失のない流れ制御を実現するコントローラを提供することである。
本発明の他の目的及び長所は、添付の図面を参照した以下の詳細な説明から当業者にとり明らかとなるであろう。
【課題を解決するための手段】
【００１５】
本発明は、通常の単一ポートメモリセルの二倍幅配列を含むメモリ・アーキテクチャ内に実現できる。メモリ配列は外部データ幅と比較して二倍ワード幅である。書込みバッファは、二倍ワード幅であるメモリ配列に書込む、２データ・ワードをバッファする。読出し側では、外部読出し要求は、メモリ配列からの読出しが受信された二つ又はそれ以上の要求について実行される、二倍ワードとなるようにバッファされる。順次論理が、非同期外部読出し及び書込みがメモリ配列に対してスケジュールされた読出し及び書込みとして内部的に実行されるように制御する。
【発明の効果】
【００１６】
本発明によると、大変に費用効率的なＦＩＦＯメモリが提供される。本発明のＦＩＦＯメモリは、対外的な機能が、非同期的な書込み及び読出しを受信可能な二重ポートメモリのように見える。しかし、本発明によるＦＩＦＯメモリは従来の単一ポートメモリセルから実現できる。従って、現代の技術で集積化及び実現可能な二重ポートＦＩＦＯの大きさを越えた、二重ポート機能を持つ大変大きいＦＩＦＯメモリの製造を可能にする。
【００１７】
本発明により構成された二重ポートＦＩＦＯの大きさは、ネットワーク通信のコンテキストにおいて、特に、１０Ｇビットイーサネットのような高いデータ・レート・ネットワークにおいて、特に有利である。本発明のＦＩＦＯにより提供されるバッファ機能は、キロメートルの程度の大きさで、ネットワーク・ノードを分離することを可能にし、損失のない流れ制御を達成するための効率的で単純な方法を提供し、メトロネットワークで非常に高いデータ・レート・ネットワークの実現を可能にする。
【００１８】
さらに、本発明の二重ポートＦＩＦＯは、この装置を含むネットワーク・ノードにおいて、パケット通信が容易に実行できるようにパケット管理機能を含む。
【発明を実施するための最良の形態】
【００１９】
本発明が、好適な実施の形態に関連して、すなわち、高データ・レート・イーサネット・ネットワーク・ノードの送信及び受信バッファに実現されたものとして、説明される。この例の説明は、本発明がこの環境に与える特定の利益のために選ばれた。しかし、本明細書を読んだ当業者には本発明がファーストイン・ファーストアウト（ＦＩＦＯ）バッファの一般に関連して使用でき、そして広い範囲の応用に実現できることが理解される。従って、以下の説明は例示として与えられ、請求項に記載された本発明の範囲を限定する意図がないことに理解すべきである。
【００２０】
図１ａには、本発明の好適な実施の形態が実現されている高データ・レート通信システムの一例が、機能的なデータ流れの形式で示されている。この例では、２つのネットワーク・ノード５Ａ、５Ｂが互いに、この例では光ファイバ施設ＦＯである媒体上で、交信している。ネットワーク・ノード５のいずれか又は両方がメトロエリアネットワーク（ＭＡＮ）ノード、ローカルエリアネットワーク（ＬＡＮ）スイッチ等であり、図１ａのシステム機能図では一般的にネットワーク・ノード５として示されている。各ネットワーク・ノード５Ａ、５Ｂは、送信側及び受信側の両方を含み、各々がＦＩＦＯバッファリング及びメディアアクセス制御（ＭＡＣ）機能を含む。例えば、ネットワーク５Ａを見ると、送信ＭＡＣＦＩＦＯ２Ａは、送信ＭＡＣ機能４Ａを経由して施設ＦＯ上に送信されるべきデータをバッファし、受信側では、受信ＭＡＣ機能６Ａが施設ＦＯからのデータを受信して受信されたデータを受信ＭＡＣＦＩＦＯ８Ａに転送する。ネットワーク・ノード５Ｂは同様に構成されている。
【００２１】
図１ａのネットワーク・ノード５Ａ、５Ｂが実現される特定のハードウェアは、利用可能な技術に従い変化し、そして通信施設のタイプ（例えば、光ファイバ、同軸ケーブル、ツイステッド対、無線）など、特定のシステムの属性に従い変化する。このようにして、ネットワーク・ノード５は、別の従来のネットワーク要素又はネットワーク線のラインカードの形式で実現できる。図２は、光ネットワーク実現のためのギガビット・イーサネット・ラインカードの例示的な実現による、典型的なネットワーク・ノード５のハードウェア実現をブロック図で示す。もちろん、ネットワーク５Ａ、５Ｂは図２で示されるものと異なる方法で構成できる。実際、適当な通信プロトコルが各々により遵守される限り、互いに同様な構成である必要はない。
【００２２】
図２に示すように、ネットワーク・ノード５は、図１ａの全体通信ネットワーク中のノード５の機能を一般的に指すシステム１０を含む。例えば、もし、ネットワーク・ノード５がスイッチ又はルーターに対応する場合、システム１０はこれらスイッチング及びルーテイング機能に対応する。代替的に、もし、ネットワーク・ノード５がサーバである場合、システム１０はサーバ・アーキテクチャにより実現される。システム１０は、スイッチング・ファブリックにより、又はあるアーキテクチャにおいては単に他のラインカードに接続されたバスにより、実現できる。
【００２３】
ラインカード２０は、光ファイバ施設ＦＯを介して下流機能１０からのデータを送信すること及び下流機能１０のため光ファイバ施設ＦＯから信号を受信することを含むさまざまの機能を実行する。ラインカード２０により実行される機能は、層２プロトコル・プロセッシング（例えば、メディアアクセス制御、又はＭＡＣ）及び物理的（ＰＨＹ）プロトコル層に含まれる機能を含む。このように、ラインカード２０はそのシステム側を下流機能１０に接続し、そしてそのライン側をレーザ・ダイオード及び増幅器３２（送信用）及びフォト・ダイオード及び増幅器３４（受信用）を経由して光ファイバ施設ＦＯに接続している。
【００２４】
本発明の好適な実施の形態によると、ラインカード２０はコスト低減と性能改良のために単一の集積回路装置で実現される。ラインカード２０のこの実現は、アプリケーション特有信号プロセッサ（ＡＳＳＰ）と呼ばれ、そして１つ又は開く数のデジタル信号プロセッサ（ＤＳＰ）により実現できる。代替的に、ラインカード２０は、チップセットとしていくつかの装置で実現でき、又は下流機能１０の全て又はいくつかの追加の機能と一緒に集積化できる。
【００２５】
図２の例では、ラインカード２０は機能的には送信側と受信側を持つとみなすことができる。典型的に、ラインカード２０の受信側及び送信側の各々の機能のいくつかは、ＤＳＰコア又はカスタム論理などの同じ物理的なハードウェアにより実行できる。しかし、説明の簡潔さのために、本発明の好適な実施の形態によるラインカードの構造は、その送信側及び受信側によるラインカード２０の構成を指す。管理論理２５が、送信及び受信機能の操作と調整を制御するために、好ましくはラインカード２０中に設けられる。
【００２６】
ラインカード２０の送信側を最初に説明すると、送信システム・インターフェイス２２Ｔは、好ましくは、システム・パケット・インターフェイス（ＳＰＩ）標準などの現代のインターフェイス・プロトコルに従い、下流機能１０とインターフェイスする。インターフェイス２２は、下流機能１０からデータを受信し、そしてこのデータを光ファイバ施設ＦＯを介しての最終的な送信のために送信ＦＩＦＯ２４Ｔへ転送する。図１ａの機能図中の送信ＭＡＣＦＩＦＯ２Ａ又は２Ｂと同一視される送信ＦＩＦＯ２４Ｔは、データがラインカード２０中の送信ＭＡＣプロセッサ２６Ｔに転送できるまで、下流機能１０から受信されたデータをバッファする。本発明の好適な実施の形態による送信ＦＩＦＯ２４Ｔの構成が、層２プロトコル・プロセッシング層がメディアアクセス制御（ＭＡＣ）層と同一視されるギガビット・イーサネット実現の例について、下に詳細に説明されている。もちろん、本発明は特定のプロトコルについて特有のものではなく、ギガビット・イーサネット通信に関する本発明の好適な実施の形態の説明は例示目的のためにのみ提供される。
【００２７】
送信ＭＡＣプロセッサ２６Ｔは、置かれている特定のプロトコルに従い、施設ＦＯ上で送信されるために適当な形式にバッファされた受信データを処理する。典型的に、ＬＳＢ最初からＭＳＢ最初へバイトをフリッピングし、イーサネット・ヘッダーをストリッピングし、バイト計算し、制御バイトを挿入し、文字又は記号整列し、そしてパケットにフォーマットするような操作は、送信ＭＡＣプロセッサ２６Ｔにより実行されると考えられる。そして、ＸＧＭＩＩ（１０Ｇビットメディア独立インターフェイス）などの適当なフォーマットにフォーマットされて処理されたデータは、ＸＡＵＩ２８Ｔへ転送される。
【００２８】
送信ＸＡＵＩ（１０Ｇビット・アタッチメント・ユニット・インターフェイス）２８Ｔはデータを、例えば、４０ビット４チャンネル・データ経路である適当なフォーマットに変換する。このＸＡＵＩフォーマット化データは、送信シリアライザ３０Ｔへ転送されて、並列チャンネルデータを送信標準と一致する直列ストリームに変換する。例えば、送信ＸＡＵＩ２８Ｔの出力が並列な１０ビットの４チャンネルとして提供される場合、送信シリアライザ３０Ｔはこれらの４つのチャンネルを、各々が１０Ｇビット通信のために３．１２５Ｇｂｐｓの程度の高速度で動作する４つの単一ビット直列チャンネルに直列化する。送信シリアライザ３０Ｔにより出力された直列データはレーザダイオード及び増幅器ブロック３２に加えられて、光ファイバ施設ＦＯに加えられる適当な光信号を生成する。
【００２９】
ラインカード２０の受信側では処理が反転される。入力する光信号は、フォトダイオード及び増幅器３４により電気信号に変換されて、ラインカード２０のデシリアライザ３０Ｒに転送される。並列出力がデシリアライザ３０Ｒから受信ＸＡＵＩ２８Ｒへチャンネルされ、信号が例えばＸＧＭＩＩの所望のフォーマットへ再フォーマットされて、そして受信信号が受信ＭＡＣプロセッサ２６Ｒに加えられる。ＭＡＣプロセッサ２６Ｒは、ＭＳＢ最初をＬＳＢ最初への翻訳、イーサネット・ヘッダーの追加、バイト計数、制御バイトの削除、文字又は記号の整列、及び所望のパケット構造へのフォーマットなどの機能を実行する。この点に関して、送信及び受信ＸＡＵＩ２８Ｔ、２８Ｒ、シリアライザ３０Ｔ、デシリアライザ３０Ｒは、当該技術分野で送受信機と呼ばれる単一の集積回路装置内に具体化できる。もちろん、ラインカード２０中に使用される集積回路の特定の境界は、利用可能な機能と製造技術に依存して大変広く変化する。
【００３０】
受信ＦＩＦＯ２４Ｒは、図１ａ中の機能図中の受信ＭＡＣＦＩＦＯ８Ａ又は８Ｂと同一視できる。図２の実施の形態では、受信ＦＩＦＯ２４Ｒは、データが下流機能１０に転送されるまで、光ファイバ施設ＦＯ上で受信されてフォーマットされ処理されるデータをバッファする。本発明の好適な実施の形態による送信ＦＩＦＯ２４Ｒの構成もまた、下に詳細に説明される。受信ＦＩＦＯ２４Ｒは、バッフアされたデータを受信システム・インターフェイス２２Ｒへ出力し、好ましくは、システム・パケット・インターフェイス（ＳＰＩ）標準などの現代のインターフェイス・プロトコルに従って、下流機能１０とインターフェイスする。
【００３１】
図１ａの機能図を再び参照すると、損失のない流れ制御は受信ＭＡＣＦＩＦＯ８Ａ、８Ｂにより開始される。上述の通り、受信ＭＡＣＦＩＦＯ８Ａ、８Ｂは、図２に示され上述した受信ＦＩＦＯ２４Ｒとしてラインカード２０内に実現できる。ネットワーク・ノード５Ａでの損失のない流れ制御の例では、一旦、受信ＭＡＣＦＩＦＯ８Ａが閾値レベル（「充満」閾値）を越えて満たされると、ネットワーク・ノード５Ｂからのトラフイックはデータが下流に転送できるよりも高い速度で受信されるため、受信ＭＡＣＦＩＦＯ８Ａはその送信ＭＡＣ機能４Ａへ停止フレーム（ｐａｕｓｅ＿ｆｒ＿ｒｅｑ）のための要求を送信する。そして、送信ＭＡＣ機能４Ａは、ネットワーク・ノード５Ｂへ、指定された期間（ｐａｕｓｅ＿ｔｉｍｅ）の停止フレームの要求（ｐａｕｓｅ＿ｆｒ）を送信する。実際は、停止フレームは、オン及びオフのメッセージであり、オンのメッセージは最大の停止定量を持つフレームであり、オフのメッセージはゼロの停止定量を持つフレームである。受信ＭＡＣ機能６Ｂは、この要求を受信して、現在送信中のパケットの完了後に、従来方法で停止カウンタにより測定される指定される期間の間、その対応する送信ＭＡＣ機能４Ｂのデータの送信を停止させる。
【００３２】
損失のない通信を確保するために、使用されている特定のＭＡＣプロトコルに関係なく、受信ＭＡＣＦＩＦＯ８Ａ（例えば、ラインカード２０内の受信ＦＩＦＯ２４）は、その停止フレーム要求が送信された後で停止が実際に開始されるまで送信され続けるパケット・データを記憶するため、それが停止フレーム要求を送信する閾値の大きさを越えて、十分な大きさを持たなければならない。受信ＭＡＣＦＩＦＯ８Ａの大きさ、及びそれが停止フレーム要求を送信する閾値は、このトラフイックの吸収を考慮しなければならない。この大きさは、停止フレーム要求が送信されてから停止が送信ノードにより実際に行われるまでの時間を含む遅延時間、好ましくは、クロック数を推定し、これら遅延時間の合計にデータ送信速度を掛算することで必要な大きさを得ることで推定できる。この大きさの決定は図１ｂを参照してより簡単にできる。図１ｂは、ネットワーク・ノード５Ａをいくぶん抽象的にプロトコルから独立に表示していて、送信及び受信回路を一般的な送受信機７Ａとして示す。図１ｂに示すように、遅延時間Ｄt_intは、受信ＦＩＦＯ８Ａがその「充満」閾値に到達するクロックサイクルと停止フレーム要求が外部ＰＨＹ媒体（ＦＯ施設）の端に伝搬するクロックサイクルとの間、ネットワーク・ノード５Ａの内部の遅延時間である。遅延時間Ｄextは、停止要求が光ファイバ施設ＦＯ上をネットワーク・ノード５Ｂへ送信される時の停止要求の遅延、及び、ネットワーク・ノード５Ｂからネットワーク・ノード５Ａまで導く光ファイバ施設ＦＯの端へ伝搬する停止トラフイックの先端の遅延である。ネットワーク５Ａの受信側では、内部遅延時間Ｄr_intは、停止要求を受信した送受信機７Ａ、停止要求を処理するプロトコル機能６Ａ、及び受信ＦＩＦＯ８Ａで受信トラフイックの実際の停止の間の内部的遅延時間である。さらに、現在のパケットの完了に必要な時間、すなわち、遅延時間Ｄpkt、を考慮しなければならない。受信ＦＩＦＯ８Ａについての「充満」閾値は典型的に、その全容量Ｃの半分に設定されることを考慮し、そしてネットワーク５Ｂがネットワーク５Ａと同様に構成されていて、等しい内部遅延時間を含むと仮定すると、この容量Ｃは以下の様に定義できる。
【００３３】
Ｃ／２＝２（Ｄt_int＋Ｄext＋Ｄr_int）＋Ｄpkt        （１）
ここで、遅延時間Ｄは、「ビット時間」（すなわち、クロック・サイクル数にサイクル当たりに送信されるビットを掛算したもの）により測定される。
【００３４】
典型的にこの技術分野で知られているように、受信ＦＩＦＯ８Ａは、その「充満」閾値よりはるか下の範囲で変動するデータ量を始めは記憶する。しかし、一旦、この「充満」閾値に達すると、受信ＦＩＦＯ８Ａ内に記憶されるデータ量は「充満」閾値の周りで変動する傾向を持ち、送信ノードへ停止フレーム要求を送信することにより維持される。
ＦＩＦＯバッファの実際の物理的大きさは、特定の通信プロトコル及びシステムについて計算できる。例えば、いわゆる、「メトロ・ネットワーク」を実現する現代の１０ギガビット・イーサネット・ワイドエリアネットワーク（ＷＡＮ）では、典型的にパケット長は、１５２６バイト・ペイロードに１１８オーバーヘッド・バイトを持つ程度に長い。もし、いわゆる「ジャンボ」パケットが可能な場合、パケット長は１００００バイトに７８０オーバーヘッド・バイトを持つ程長い。従って、ジャンボＷＡＮパケットに対する最悪の場合の遅延時間Ｄpktは、約８６，２４０ビット時間である（１０７８０＊８）。内部遅延成分Ｄintは、１０ＧＥコーデイングの特定のタイプ（すなわち、１０ＧＢＡＳＥ−Ｒ、−Ｗ、又は−Ｘ）に依存して１４８４８から３０７２０ビット時間まで変化できる。外部遅延成分Ｄextはもちろんネットワーク・ノード５Ａ、５Ｂ間のケーブル長及び施設内の光の相対的速度に依存する。
【００３５】
Ｄext＝１００Ｍ／３ｎ（ビット時間）                      （２）
ここで、Ｍはメートルのケーブル長であり、ｎはケーブル内の光の相対的速度（自由空間内の光速ｃに相対的な）であり、０．４乃至０．９で変化する。
【００３６】
式（１）及び（２）の組合わせから、受信ＭＡＣＦＩＦＯ８Ａ、８Ｂに対して必要なメモリ容量Ｃを評価できる。さらに、上流データ源が、損失のない流れ制御のトラフイック停止の時間の間、送信されるべきデータを転送し続けることを考慮すると、送信ＭＡＣＦＩＦＯ２Ａ、２Ｂは同じ容量を持たなければならない。与えられたＦＩＦＯ容量Ｃにより支援できる最大距離Ｍを考慮することが有用である。このような評価から、２５０ｋビット又はそれ以下の容量Ｃは、この容量が最も寛大な１０ＧＥクラス（１０ＧＢＡＳＥ−Ｘ、ｎ＝０．９について、通常のパケットのみを支援する）についてさえもせいぜい２ｋｍ程度のケーブル長しか与えないため、損失のない流れ制御機能に対してはほとんど役に立たないことが発見された。通常のメトロエリアネットワークについてより望ましい設置は、１０ＧＢＡＳＥ−Ｗに従いジャンボ・パケットを支援し、４０ｋｍ程度のケーブル長Ｍである。この機能は、数メガバイト程度のＦＩＦＯ容量Ｃを必要とする。
【００３７】
上述したように、ＦＩＦＯバッファは典型的に従来の二重ポート・アーキテクチャのメモリにより実現される。二重ポート・アーキテクチャは、各メモリセルへの２つのポートがＦＩＦＯ自身の非同期バッファ機能に一致した効率的な非同期態様で動作できるため、効率的なＦＩＦＯ動作を可能にする。しかし、上述したように、メガビット容量の二重ポートメモリは、特に、このようなメモリをＶＬＳＩ集積回路内のオンチップ機能として集積化することを考慮する時に、禁止的に高価である。対照的に、従来のこの大きさの単一ポートメモリは、合理的なチップ領域で実現でき、図２のラインカード２０のようなギガビット・イーサネット送受信機機能に含まれる論理のような複雑な論理回路中に実現するのに適している。
【００３８】
従って、本発明の好適な実施の形態によると、ラインカード２０の送信及び受信ＦＩＦＯ２４Ｔ、２４Ｒは、例えば、数メガビット程度までの容量の単一ポートメモリ配列を持つメモリとして構成されているが、外部回路に対しては二重ポート・バッファとして見え、そしてＦＩＦＯ２４Ｔ、２４Ｒへ書込み及びから読出す機能を持つように見える。すなわち、ＦＩＦＯ２４Ｔ、２４Ｒは図１ａのネットワーク構成において送信及び受信ＭＡＣＦＩＦＯ２、８として機能し、例えば、キロメートル程度のノード間の距離を持つＭＡＮ文脈中でのギガビット・イーサネット通信における相対的に長距離間の高速通信の実現を可能にする。
【００３９】
図３を参照して、本発明の好適な実施の形態によるＦＩＦＯメモリの構成を詳細に説明する。上述の説明から明らかなように、本発明のこの好適な実施の形態によるこのＦＩＦＯメモリは、図１ａに機能的に示されるシステム内のＭＡＣＦＩＦＯバッファ機能２Ａ、２Ｂ、８Ａ、８Ｂを実行するため、図２のネットワーク・ノード中に送信及び受信ＦＩＦＯ２４Ｔ、２４Ｒのいずれか１つとして実現できる。本発明の好適な実施の形態によるＦＩＦＯメモリの構成は、高速ネットワーク通信を超えて、他のＦＩＦＯバッファリングの応用においても有利である。このような他の使用例は、コンピュータ・サブシステム又は入力／出力装置及びメインコンピュータ・バス間のインターフェイス、非パケットベース・ネットワーキング応用、マルチプロセシング環境、エミュレーションシステム等の異なるマイクロプロセッサ又はＣＰＵ間のインターフェイスのデータ転送を含む。
【００４０】
しかし、図２のネットワーク・ノードの例及び図１ａのネットワーク実現に対して、本発明の好適な実施の形態によるＦＩＦＯメモリの構造は最適である。この例では、ＦＩＦＯメモリは、共通クロックを使用して、非同期読出し及び書込み可能化信号を処理し、そして非同期書込みデータ応用を処理できなければならない。図３は、本発明の好適な実施の形態による、ＦＩＦＯメモリ４０に対するインターフェイスの単純化したモデルである。この例では、クロックＣＬＫが、ＦＩＦＯメモリ４０及びその動作についてのシステムクロックとして機能するために、ＦＩＦＯメモリ４０に加えられている。書込み側では、ＦＩＦＯメモリ４０が書込み可能化信号ＷＲＥＮを受信する。このＷＲＥＮは、ＦＩＦＯメモリ４０へのデータ源が入力データ線ＷＲＤＡＴＡ上に存在するデータの書込み操作を要求していることを指示する。入力データ線ＷＲＤＡＴＡのデータ幅は、少なくとも１バイト（８ビット）、好ましくは、１データ・ワード（１６又は３２ビット）幅であると考えられる。読出し側では、ＦＩＦＯメモリ４０は、読出し可能信号ＲＤＥＮを受信する。このＲＤＥＮは、ＦＩＦＯメモリ４０からのデータの宛先がデータの読出しを要求していることを示す。ＦＩＦＯメモリ４０は、典型的には入力データ線ＷＲＤＡＴＡと同じデータ幅である出力データ線ＲＤＤＡＴＡ上にデータを出力する。
【００４１】
図４ａ及び図４ｂを参照して、本発明の実施の形態によるＦＩＦＯメモリ４０への書込み及び読出しインターフェイスの外部動作を説明する。図４ａは、非同期書込み及び読出し動作のシーケンス時のＦＩＦＯメモリ４０への書込みインターフェイスの動作を示す。図４ｂは、図４ａに示されるのと同じサイクル上でのＦＩＦＯメモリ４０への読出しインターフェイスの動作を示す。
【００４２】
図４ａでは、入力データ線ＷＲＤＡＴＡがデータ値ＷＲ１を運ぶ時などには、書込み可能化線ＷＲＥＮが高い活性レベルに取られる。書込みサイクルｗｃｙｃ１において、クロックＣＬＫの次の上昇端で、データ値ＷＲ１がＦＩＦＯメモリ４０中に書き込まれる。書込み可能線ＷＲＥＮが高くとどまる間に、入力データ線ＷＲＤＡＴＡは次のデータ値ＷＲ２を受信する。このデータ値ＷＲ２は、書込みサイクルｗｃｙｃ２において、クロックＣＬＫの次の上昇端で、ＦＩＦＯメモリ４０中に書き込まれる。この例では、書込み可能線ＷＲＥＮが、１サイクル程度の間、不活性低に取られる。そして、入力データ線ＷＲＤＡＴＡがデータ値ＷＲ３を運ぶ時に再び活性化される。このデータ値ＷＲ３は、書込みサイクルｗｃｙｃ３において、クロックＣＬＫの次の上昇端で、ＦＩＦＯメモリ４０内に書き込まれる。入力データ線ＷＲＤＡＴＡは次のデータ値ＷＲ４を受信する。このデータ値は書込み可能化線ＷＲＥＮがサイクル中に高にとどまっているため、クロックＣＬＫの次の上昇端でＦＩＦＯメモリ４０中に書き込まれる。
【００４３】
図４ａに示すように、ＦＩＦＯメモリ４０からの読出し操作は書込み操作中に実行される。書込み及び読出し可能化信号ＷＲＥＮ、ＲＤＥＮの非整列的性質から明らかのように、そして入力及び出力データ線ＷＲＤＡＴＡ、ＲＤＤＡＴＡ上の非整列的活動からも明らかのように、これらの読出しは書込み操作と非同期的である。図４ｂは、本発明の好適な実施の形態によるＦＩＦＯメモリ４０からこれらのサイクル中に実行される読出し操作の動作を示す。
【００４４】
図４ｂのクロックＣＬＫの最初の上昇端の前に、読出し可能化線ＲＤＥＮが高い活動に取られる。そして、クロックＣＬＫの上昇端がＦＩＦＯメモリ４０からの読出しを開始し、データがアクセス時間後（例えば、クロックＣＬＫの１サイクル）に出力データ線ＲＤＤＡＴＡ上に出現する。この第１例では、クロックＣＬＫの最初の上昇端からのデータ値はデータ値ＲＤ１として示されている。この例では、読出し可能化線ＲＤＥＮはクロックＣＬＫの次の上昇端の間、高に留まる。これに応答して、ＦＩＦＯメモリ４０は次のデータ値ＲＤ２を出力データ線ＲＤＤＡＴＡ上に与える。この例では、読出し可能化線ＲＤＥＮが１サイクル程度の間、不活性化されて、クロックＣＬＫの次の上昇端に応答した読出しを阻止する。読出しを要求するために読出し可能化線ＲＤＥＮが再び高に駆動されて、この例では、３サイクルの間、高に留まる時、クロックＣＬＫの３つの連続する上昇端が、図４ｂに示すように、連続するサイクルでデータ値ＲＤ３、ＲＤ４、ＲＤ５の対応するシーケンスを出力させる。
【００４５】
図４ａ及び図４ｂの例に示されるように、本発明のこの実施の形態によるＦＩＦＯメモリ４０は、読出し及び書込みが互いに非同期的態様で効果的に要求されて実行されるため、対外的には全く二重ポートＲＡＭのように見える。ＦＩＦＯメモリ４０に書き込まれ及びから読み出されるデータは、ＦＩＦＯメモリ４０に書き込まれた最初のデータ値がそこから読み出される最初の値であるＦＩＦＯ態様で、互いに関係する。本発明の好適な実施の形態によると、ＦＩＦＯメモリ４０は二重ポートＲＡＭのような対外的な機能として見られるが、それは単一ポートＲＡＭアーキテクチャから構成されていて、従って、その実現のために必要とされるシリコン領域及びコストを大幅に節約する。実際に、本発明は禁止的でないコストで二重ポート能力を持つ相当に大きなＦＩＦＯメモリを製造することを可能にする。本発明により製造される二重ポートＦＩＦＯ機能は、事実、上述したようなネットワーク通信に使用される論理機能と同じ集積回路中に組み込むことができる。
【００４６】
図５を参照して、本発明の好適な実施の形態によるＦＩＦＯメモリ４０の一般的な構成及び一般的な動作を説明する。ＦＩＦＯメモリ４０は、当該技術分野で知られている従来の典型的なＳＲＡＭ配列のような適当なアドレス回路、センス増幅器、及び入力／出力回路と一緒に、行及び列に配列された単一ポートメモリセルの配列として構成されたＳＲＡＭ配列４５に基づいている。ＳＲＭ配列４５中のメモリセルは、従来の６トランジスタ、又は４トランジスタ、２抵抗セルであってよい。しかし、本発明のこの実施の形態によると、ＳＲＡＭ配列４５への及びからの入力及び出力データ幅は、ＦＩＦＯメモリ４０への読出し及び書込みインターフェイスのワード幅に対して、２ワード幅である。例えば、もし、ＦＩＦＯメモリへの外部インターフェイス・ワード幅が１６ビットの場合、ＳＲＡＭメモリ４５への入力及び出力データ経路幅は３２ビットである。すなわち、図５に示されるＦＩＦＯメモリ４０は、以下に説明するように、ＳＲＡＭ配列４５及びそれのインターフェイス回路を含み、「二倍ワード幅領域」を含む。以下の説明から明らかなように、この二倍ワード幅領域は、ＳＲＡＭ配列４５中の単一ポートメモリセルを使用しながら、ＦＩＦＯメモリ４０が対外的には二重ポートとして見えることを可能にし、ＳＲＡＭ配列４５への書込み及び読出し衝突を解決する役割を果たす。
【００４７】
ＦＩＦＯメモリ４０はまた、当該技術では普通の適当な電源及びクロック制御回路を含む。図５はまた、以下に説明するような操作によることも含む、ＦＩＦＯメモリ４０の操作を制御するための適当な論理を含んだ制御論理及びクロック回路を示す。さらに、制御論理及びクロック回路４７は、クロックＣＬＫを受信し、そして、最終的にはクロックＣＬＫに応答する、本発明の好適な実施の形態による交替的な内部読出し及び書込みクロック・サイクルを含んだ適当な内部クロックを発生するための回路を含む。当業者には理解されるように、別のクロック回路がシステムクロックＣＬＫを受信してバッファするために代替的にＦＩＦＯメモリ４０内に設けることができ、そして、必要に応じて、ＦＩＦＯメモリ４０の構成機能へシステムクロックＣＬＫに基づいた内部クロックを生成して転送する。本明細書から明らかなように、ＦＩＦＯメモリ４０の制御の多くは好ましくは、以下に説明する状態図に従い、順次論理により実現される。この順次論理は図５の制御論理及びクロック回路４７により示唆されるように中心位置に実現できる。又は、必要に応じて、ＦＩＦＯメモリ４０中に分散できる。特定の応用のため、これらの制御機能の特定の実現は本明細書を読めば当業者により容易に達成できることが理解される。
【００４８】
ＦＩＦＯメモリ４０への書込みインターフェイスは、本発明の好適な実施の形態によれば、書込みバッファ４２により実現される。図５に示されるように、書込みバッファ４２は、書込み可能化信号ＷＲＥＮを受信し、そして入力データＷＲＤＡＴＡも受信する。書込みバッファ４２は、書込み可能化信号ＷＲＥＮにより可能化されている時にクロックＣＬＫの上昇端で、入力データＷＲＤＡＴＡの各入力するデータ・ワードをバッファする。一般に、ＦＩＦＯメモリ４０への各単一ワード書込み要求及びその対応するデータは、書込みバッファ４２にバッファされる。ＳＲＡＭ配列４５の適当な位置への実際の書込みは、２つのワードが受信されて内部書込みサイクルが利用可能となる時に実行される。一般に、クロックＣＬＫのサイクルは等しく分配され、そして、ＳＲＡＭ配列４５への内部書込みサイクル及びからの内部読出しサイクルの間に好ましくは交互に配される。書込みバッファによる単一データ・ワードの受信、及び書込みバッファ４２によるＳＲＡＭ配列４５への二倍ワードの書込みは、本発明のこの実施の形態によるデータ・ワード幅変換機能を効率的に実行する。この操作が以下に詳細に説明される。
【００４９】
本発明の好適な実施の形態によると、上述の説明から明らかなように、二倍ワード幅内部入力及び出力から及びへ単一ワード幅内部入力及び出力を変換することは、ＳＲＡＭ配列４５中の単一ポートメモリセルを使用して、ＦＩＦＯメモリ４０の実現を可能にする。ＦＩＦＯメモリ４０の二倍ワード幅領域は、読出しサイクル又は書込みサイクルのいずれかを各クロック・サイクルへ割当てることにより、そして読出し及び書込みインターフェイスの両方に２ステージ、２ワード幅バッファを含むことにより、ＳＲＡＭ配列４５への非同期的読出し及び書込みの間の衝突を解決する。
【００５０】
図６に、このバッファリングの一例が説明されている。この例では、書込みバッファ４２が、それぞれ、書込み及び読出しインターフェイスに２つの行（０，１）と２つの列（ａ，ｂ）に配列されたエントリイを含む。各エントリイａ０、ａ１、ｂ０、ｂ１は、単一データ・ワードを記憶する。本発明のこの実施の形態によると、書込み及び読出しデータ（バッファに依存して）は、固定された順序、例えば、ａ１、ａ０、ｂ１、ｂ０、ａ１、ａ０、ｂ１、ｂ０等、でバッファ内に登録される。命名法として、バッファの列は、もしその両エントリイが占められた場合に、「熟した」とみなされる。内部的読出し及び書込みの衝突の解決は、これらのバッファ内のエントリイの占有、線ＷＲＥＮ、ＲＤＥＮ上の書込み信号の状態、及び現在のクロック・サイクルが読出しサイクル又は書込みサイクルかどうか、に基づいている。本発明の好適な実施の形態によると、クロックＣＬＫの交替するサイクルは、場合に応じて、ＳＲＡＭ配列４５及び書込みバッファ４２又は出力幅変換器４６の間の読出し及び書込みサイクルとして指示される（図６では、読出しサイクルＲＣＹＣ、及び書込みサイクルＷＣＹＣとして示されている）。
【００５１】
要約すると、本発明の好適な実施の形態によるバッファリングの操作は、（ｉ）各サイクルにおいて、固定された順序（ａ１、ａ０、ｂ１、ｂ０、・・・）で入力及び出力データをバッファ内に登録し、（ｉｉ）もし、列が読出し及び書込みバッファ中で熟した場合、それぞれ、対応する読出し又は書込みサイクルにおいて読出し又は書込み操作を実行する、ことを含む。この態様の書込みバッファ４２の操作が、図７の状態図と関連して以下に説明される。
【００５２】
ＦＩＦＯメモリ４０のリセット又は初期化の後、又は、ＦＩＦＯメモリ４０が満杯となるような誤り状態時に、書込みバッファ４２は「全て空」状態５０に入る。図７に示すように、この状態５０では、書込みバッファ４２の４つのデータ・ワード・エントリイのいずれも登録済みのデータを含まず、書込みバッファ４２は実際に空である。書込み可能化線ＷＲＥＮが不活性（図７中では、〜ＷＲＥＮにより示される）であるクロックＣＬＫのサイクル（読出し又は書込み）に対して、書込みバッファ４２は空状態に留まる。書込み可能化線が活性（ＷＲＥＭ）になると、書込みバッファ４２はクロックＣＬＫの次のサイクルで状態５２に入り、入力データ・ワードがそのエントリイａ１中に登録される。
【００５３】
その状態５２において書込みバッファ４２内の列が完全に登録されていないため、この状態からはＳＲＡＭ配列４５への書込みは実行されない。書込み可能化線ＷＲＥＮが不活性な追加のクロック・サイクルは、書込みバッファ４２を状態５２に保つ。書込み可能化線ＷＲＥＮ上の活性信号は、書込みバッファ４２がエントリイａ０内にデータ・ワードを登録させて、書込みバッファ４２を完全な列（列ａ）が登録済みのデータを含む状態５４へ移動させる。この列は現在熟したので、次の書込みサイクル（ＷＣＹＣ）で、二倍データ・ワードが書込みバッファ４２からＳＲＡＭ配列４５に書込み可能となる。もし、次の書込みサイクルＷＣＹＣが書込み可能化線ＷＲＥＮ上の活性化レベルと一緒に発生すると、二倍データ・ワードが書込みバッファ４２の列ａから書き込まれ、そしてデータ・ワードが書込みバッファのエントリイｂ１中に受信されて、書込みバッファ４２を図７に示す状態５５に移す。状態５２と同様な態様で、書込みバッファ４２は、不活性な書込可能化信号〜ＷＲＥＮにより１つ又はそれ以上の連続したサイクルの間、状態５５に留まる。書込み可能化線ＷＲＥＮ上の活性化レベルを持つ次のサイクルにおいて、書込みバッファはデータ・ワードをエントリイｂ０に登録して、状態５７に移る。状態５４に戻って参照すると、もし、逆に次の書込みサイクルＷＣＹＣが書込み可能化線ＷＲＥＮ上の不活性化レベルと一緒に発生すると、列ａからの二倍データ・ワードがＳＲＡＭ配列４５に書き込まれて、新データ・ワードが受信されない。この場合、書込みバッファ４２は空の状態５０に戻る。読出しサイクルＲＣＹＣにおいて、書込みバッファ４２は別のデータ・ワードをエントリイｂ１中に登録し、もし、書込み可能化線ＷＲＥＮが活性ならば、状態５６へ移り、もし、書込み可能化線ＷＲＥＮが不活性ならば、追加のデータ・ワードはないから状態５４を維持する。
【００５４】
状態５６で、書込みバッファ４２の列ａが熟し、そしてエントリイｂ１もデータにより登録される。状態５６は読出しサイクルＲＣＹＣの間だけ入るため、クロックＣＬＫの次のサイクルは本発明のこの実施の形態では必ず書込みサイクル（ＷＣＹＣ）である。従って、状態５６からの状態変化は、書込み可能化線ＷＲＥＮ上に活性レベルが受信されるかどうかに依存する。もし、次の書込みサイクル（ＷＣＹＣ）で書込み可能化線ＷＲＥＮが不活性（〜ＷＲＥＮ）の場合、新しいデータは受信されないが、二倍データ・ワードが熟した列ａからＳＲＡＭメモリ４５に書き込まれて、この結果、書込みバッファ４２は状態５５に入る。一方、もし、書込み可能化線ＷＲＥＮが活性である場合、データ・ワードがエントリイｂ０内に登録されて、二倍データ・ワードが書込みバッファ４２の列ａからＳＲＡＭ配列４５中に書き込まれ、そして書込みバッファ４２は状態５７に移る。
【００５５】
状態５７で、列ｂが熟する。よって、次の書込みクロック・サイクル（ＷＣＹＣ）がこの列ｂをＳＲＡＭ配列４５中に書き込む。もし、次の書込みサイクル（ＷＣＹＣ）が書込み可能化線ＷＲＥＮの活性レベルと一緒に発生する場合、二倍データ・ワードが列ｂからＳＲＡＭ配列４５へ書き込まれて、新データ・エントリイがエントリイａ１に登録され、書込みバッファ４２を状態５２に置く。もし、書込み可能化線がこの次の書込みサイクルにおいて不活性の場合、二倍データ・ワードのみが列ｂからＳＲＡＭ配列４５へ書き込まれて、新しいデータ・ワードは受信されず、書込みバッファ４２を空の状態５０に置く。逆に、もし、次のサイクルが読出しサイクル（ＲＣＹＣ）の場合、書込みバッファ４２の列ｂは熟したままに維持されて、ＳＲＡＭ配列４５には書き込まれない。もし、この読出しサイクルが活性の書込み可能化（ＷＲＥＮ）と一緒に発生する場合、新しいデータ・ワードがエントリイａ１中に登録されて、書込みバッファ４２は状態５８に入る。逆に、もし、この読出しサイクルにおいて不活性の書込み可能化（〜ＷＲＥＮ）が受信される場合、書込みバッファ４２の内容には変化はなく、状態５７に留まる。
【００５６】
再び図５を参照すると、ＦＩＦＯメモリ４０の読出しインターフェイスは読出しバッファ４６ｓ出力ＦＩＦＯ４８を含む。この特定の構成は、パケットの読み出しはパケットから十分な量のデータがＦＩＦＯメモリ４０内に記憶されるまで開始されないという制約を実行することにより、パケット・ストリームの整合性を確保するため、図１及び図２に関して上述したように、ネットワーク応用中のＦＩＦＯメモリ４０の使用に対して特に有益である。この機能は、パケット状態（十分なデータ又は完全なパケット）がＦＩＦＯメモリ４０中のパケット・ストリーム・データの読み出しを行うことを可能であると示す時、制御線ＲＤ＿ＲＤＹ上に活性信号を出力することにより、ＦＩＦＯメモリ４０中で実行される。
【００５７】
また、読出しのコンテキストにおいては、しばしば、読出しデータの宛先（例えば、図２の例では送信ＭＡＣ２６Ｔ）が、例えば、ネットワーク通信のためにそのパケット処理でデータ・ワードを挿入するために、時々、パケット・ストリームを停止する必要がある。これは、ＦＩＦＯメモリ４０が提供するデータと同期化するために、宛先からＦＩＦＯメモリ４０へ読出しストロボ（又は読出し要求）信号を必要とする。従来の二重ポートメモリでは、この読出しストロボを出力データと同期化することは容易に行うことができる。しかし、本発明の実施の形態によると、読出しと書込みの衝突を回避するため、外部からＦＩＦＯメモリ４０への非同期的読出し及び書込みは内部的にはスケジュールされた読出し及び書込みに変換されなければならない。従って、スケジュールされた読出しは外部の非同期的、読出しストロボ又は要求と必ずしも同期化できるものではない。本発明のこの実施の形態によると、この同期化は、ＳＲＡＭ配列４５からのデータ出力の応答時間差を効率的に吸収する、好ましくは、小さな真の二重ポートメモリで構成される、出力ＦＩＦＯバッファ４８により行われる。
【００５８】
図５の例を参照すると、ＳＲＡＭ配列４５がデータを提供する準備ができて、それを実行するために線ＳＲＡＭ＿ｒｄ＿ｒｄｙ上に信号を送る時、今度は出力ＦＩＦＯ４８はデータがＦＩＦＯメモリ４０から読出すことができる時に、外部の下流のデータの宛先に対して線ＲＦ＿ＲＤＹ上に信号を送る。例えば、パケットについてパケット終了（ＥＯＰ）指示がＳＲＡＭ配列４５中に記憶された時、又は、あるパケットに対して十分な量のデータが記憶された時、ＦＩＦＯメモリ４０は読み出される準備ができる。そして、出力ＦＩＦＯ４８は、線ＲＤＥＮ上の活性信号により作られる、外部が発生した読出し要求又は読出しストロボを受信することが可能となる。これらの外部要求は、ＦＩＦＯ＿ｒｄｅｎ線を経由して読出し要求バッファ４４へ転送される。読出し要求バッファ４４は入力する要求を記憶して、内部的にＦＩＦＯメモリ４０に利用可能となる読出しクロック・サイクルと一緒に２つのこのような要求がなされる時、ＳＲＡＭ配列４５からの２つのデータ・ワードのスケジュールされた読出しを、次の内部的な読出しサイクルが利用可能となる時に発生するように行う。
【００５９】
ＳＲＡＭ配列４５からの二倍ワード幅出力は出力データ変換器４６に加えられて、そして、出力データ変換器４６は、読出されたデータの単一ワードを出力ＦＩＦＯ４８へ送るためデータ線ＳＲＡＭ＿ｒｄｄａｔａ上に、このデータ線ＳＲＡＭ＿ｒｄｄａｔａ上に有効なデータが転送されていることを示す線ＳＲＡＭ＿ｒｄｖａｌ上の活性信号と一緒に、加える。この例では、出力ＦＩＦＯ４８は、好ましくは、読出し要求を制御して実行するため及び線ＲＤＥＮ上の要求に対して相対的に一定の時間関係で線ＲＤＤＡＴＡ上に加えられるべき出力データを同期化するためのさまざまな制御論理と一緒にした、小さな量の二重ポートＲＡＭとして構成される。このように、出力ＦＩＦＯ４８は、ＦＩＦＯメモリ４０内の内部的読出し及び書込みが互いにスケジュールされているにもかかわらず、実効的に出力データ・ストリームを同期化する。出力ＦＩＦＯ４８はデータ線ＲＤＤＡＴＡ上に要求されたデータ・ワードを転送し、そして有効なデータの存在を示すために、線Ｄ＿ＶＡＬ上に活性レベルを出力する。
【００６０】
図１及び図２のネットワーク通信のコンテキストでは、ＦＩＦＯメモリ４０に書込まれる及びから読出されるデータ・ストリームは上述したように、パケットに基づいている。当該技術分野では知られているように、パケットの終りは、パケット終了（ＥＯＰ）指示子として符号化されたデータ・ワードにより指示される。ＥＯＰ指示子は奇数データ・ワードに存在することがもちろん可能である（実際は、同様にありうる）。書込みバッファ４２は熟した列のみをＳＲＡＭ配列４５中に書込むから、ＥＯＰ指示子が書込みバッファ４２の列の最初のエントリイ中で不明瞭にならないようにするため、各ＥＯＰ指示子には、少なくとも１つのアイドルのデータ・ワードが続くようにすべきである。
【００６１】
従って、本発明のこの実施の形態による、交互の読出し及び書込みクロック・サイクル（ＲＣＹＣ、ＷＣＹＣ）と２つの二倍データ・ワード・エントリイを持つ書込みバッファとの組合わせは、外部ソースからＦＩＦＯメモリ４０への非同期的な書込みを可能にしながら、ＦＩＦＯメモリ４０内の単一ポートＳＲＡＭ配列４５へのスケジュールされた書込みを可能にする。
【００６２】
本発明の好適な実施の形態によるＦＩＦＯメモリの上記構成は、対外的には二重ポートメモリとしていて見えるが、従来の単一ポートＲＡＭセルにより実現できるメモリを提供することにより、電子システム中のＦＩＦＯバッファの全ての応用に有用である。ＦＩＦＯメモリ４０を通過するデータがパケットで構成される又は構成されるべきネットワーク通信のコンテキストでは、ＦＩＦＯメモリ４０は好ましくは、これらパケットを管理するための追加の制御機能を含む。本発明の好適な実施の形態によるパケット管理のためのこの制御機能が、図８の状態図と関連して以下に説明される。この制御機能は、制御論理及びクロック回路４７内のパケット管理として、ＦＩＦＯメモリ４０内に中心にまたは分散形式のいずれかで実現される。
【００６３】
一般に、パケット管理論理は、ＦＩＦＯメモリ４０から読出されるパケットの一貫性を確保するために提供される。この点に関し、制御論理４７がＦＩＦＯメモリ４０内に記憶されているパケット数を把握することが重要である。さらに、本発明のこの実施の形態によるＦＩＦＯメモリ４０は、構成可能な閾値よりも大きなパケットを「カット・スルー」処理する能力を持つ。この閾値よりも大きいパケットに対しては、ＦＩＦＯメモリ４０からパケットの最初を読出すことがパケットの終わりを書込む前に可能である。このように、「カット・スルー」パケットは、いかなる時点でもＦＩＦＯメモリ４０内に始まりと終わりの両方を持つことがない。
【００６４】
図８の状態図は、パケット管理機能を制御するＦＩＦＯメモリ４０の制御論理４７内の順次論理の状態を言及する。この状態図は、一組の状態変数と一緒に動作する。この内で、ＳＯＰはデータ・ストリーム内のパケット開始指示子を指す。ＥＯＰはパケット終了指示子を指す。
【００６５】
2005018768.tif 000003
【００６６】
これら及び他の状態変数が、ＦＩＦＯメモリ４０から読出され及びへ書込まれるパケットを管理するための制御論理４７と一緒に動作する。
【００６７】
図８を参照すると、ＦＩＦＯメモリ４０のリセット時に、最初のｎｏ＿ｐｋｔ状態７０が入力される。状態７０では、ＦＩＦＯメモリ４０内にはどんなパケットの部分も記憶されていない。ＦＩＦＯメモリ４０は、ＳＯＰがＦＩＦＯメモリ４０内に書込まれていること（ｗｒｉｔｅ＿ｓｏｐ）の指示を受信する時、ｆｉｓｔ＿ｓｏｐ状態７２に遷移し、この事象に応答して、ｗｒｉｔｉｎｇ＿ｐｋｔ状態変数がセットされる。ｆｉｒｓｔ＿ｓｏｐ状態７２からの遷移はこの最初のパケットの終わりが書込まれる時（ｗｒｉｔｅ＿ｅｏｐ）に発生し、これに応答して、ｗｉｔｉｎｇ＿ｐｋｔ状態変数がクリアされ、そして＃ｐｋｔ状態変数が値１に増加されて、１つの完全なパケットがＦＩＦＯメモリ４０内に書込まれたことを示す。そして、制御論理４７は、ｏｎｅ＿ｐｋｔ＿ｒｄｙ状態７４に入る。
【００６８】
制御論理４７は、次のパケットの開始がＦＩＦＯメモリ４０内に書込まれている（ｗｒｉｔｅ＿ｓｏｐ）後も、ｏｎｅ＿ｐｋｔ＿ｒｄｙ状態７４に留まり、この時間中はｗｒｉｔｉｎｇ＿ｐｋｔ状態変数がセットされている。ＦＩＦＯメモリ４０へのこのパケットの書込み完了時（ｗｒｉｔｅ＿ｅｏｐ）に、制御論理４７は、ｐｋｔｓ＿ｒｄｙ状態７５に遷移して、ｗｒｉｔｉｎｇ＿ｐｋｔ状態変数をクリアし、そして＃ｐｋｔ状態変数を新カウント（＃ｐｋｔ＝２）に増加する。ｐｋｔｓ＿ｒｄｙ状態７５は、ＦＩＦＯメモリ４０内に複数のパケットが記憶されていることを示す。
【００６９】
一方、ｏｎｅ＿ｐｋｔ＿ｒｄｙ状態７４から、もし、この単一パケットが読出される場合（ｒｅａｄ＿ｓｏｐ）、制御論理４７はｔｘ＿ｌａｓｔ＿ｐｋｔ状態７６への遷移を行い、ｓｅｎｄｉｎｇ＿ｐｋｔ状態の変数をセットする。その名前から明らかなように、ｔｘ＿ｌａｓｔ＿ｐｋｔ状態７６は、唯一の又は最後の残ったパケットがＦＩＦＯメモリ４０から読出されている過程中の状態を示す。この最後又は唯一のパケットの読出しの完了時に（＃ｐｋｔ−１＝０の状態の確認と組合わせられた、ｒｅａｄ＿ｅｏｐ）、制御論理４７は、以下に説明するｐｋｔ＿ｂｒａｋｅ状態８０への遷移を行う。一方、もし、新パケットの開始が読出された場合（ｗｒｉｔｅ＿ｓｏｐ）、制御論理４７はｔｘ＿ｌａｓｔ＿ｐｋｔ状態７６に留まり、状態変数ｗｒｉｔｉｎｇ＿ｐｋｔをセットする。もし、最後のパケットが読出される前に、この次のパケットの終わりが書込まれる場合（＃ｐｋｔ＋１が２に等しいか又はそれより大きい状態の確認と組合わせられた、ｗｒｉｔｅ＿ｅｏｐ）、制御論理４７はｐｋｔｓ＿ｒｄｙ状態７５への遷移を行い、状態変数＃ｐｋｔを増加して、状態変数ｗｒｉｔｉｎｇ＿ｐｋｔをクリアする。
【００７０】
ＦＩＦＯメモリ４０のこの操作はこの方法で続き、制御論理４７はゼロ、１つ、又は複数の可能性の記憶されているパケットを管理する。「カット・スルー」パケットを処理するために、制御論理４７は、真の状態ではＳＯＰが書込まれた（状態７２）パケットの大きさが予め選択された閾値よりも大きいことを示す状態変数ｐａｓｓ＿ｃｕｔ＿ｔｈｒｕ＿Ｔｈに応答して、ｆｉｒｓｔ＿ｓｏｐ状態７２からｃｕｔ＿ｔｈｒｕ状態７８に入る。この遷移と関連して、状態変数ｓｅｎｄｉｎｇ＿ｐｋｔはこのパケットがＦＩＦＯメモリ４０から読出し可能であることを示すためにセットされる。両状態変数ｗｒｉｔｉｎｇ＿ｐｋｔ及びｓｅｎｄｉｎｇ＿ｐｋｔがこの条件にセットされて、同じ大きなパケットが同時に書込まれて読出されていることの両方を示す。ｃｕｔ＿ｔｈｒｕ状態７８で、ＦＩＦＯメモリ４０によるジャンボ・パケットの終わりの受領は（ｗｒｉｔｅ＿ｅｏｐ）、制御論理４７をｔｘ＿ｌａｓｔ＿ｐｋｔ状態７６へ遷移させて、状態変数＃ｐｋｔを増加させて、ｗｒｉｔｉｎｇ＿ｐｋｔ状態変数をクリアする。この時点でＦＩＦＯメモリ４０内に残っているパケットは、ジャンボ・パケットの残りである。
【００７１】
上述したように、図１及び図２に関して説明されたネットワーク通信のコンテキストにおけるＦＩＦＯメモリ４０の実現は好ましくは、読出しストロボＲＤＥＮと同期してＦＩＦＯメモリ４０からの読出しが停止できるコンテキストで、ＦＩＦＯメモリ４０が動作することを考慮する。上記のアーキテクチャでは、ＦＩＦＯメモリ４０の内部のＳＲＡＭ配列４５の読出しは、非同期的又はストロボされた読出しではなく、スケジュールされた読出しのため、これは幾分困難である。本発明の好適な実施の形態によると、ＳＲＡＭ配列４５からのデータの読出しの同期的な停止の必要性は、２つの状況で発生する。第１の状況では、ＳＲＡＭ配列４５が次のパケットのＥＯＰを受信する前に全ての利用可能なデータがＦＩＦＯメモリ４０から読出されたアンダーフロー状態を回避するために、もし、次のデータのフレームが準備できない場合（すなわち、ＳＲＡＭ配列４５内に一杯に記憶されておらず、又は「カット・スルー」フレームにも対応していないため）、ＦＩＦＯメモリ４０から対外的にＥＯＰが出力された後に、ＳＲＡＭ配列４５からの読出しは好ましくは停止される。第２のこのような状況は、外部の下流の宛先が、パケットの終了又はパケットの中間のいずれかで、読出し可能化信号を出力しなくなる時に発生する。本発明の好適な実施の形態では、図９に関連して以下に説明するように、出力ＦＩＦＯ４８がこれら２つの状況における「読出しブレーキ」機能を実行するために設けられる。
【００７２】
本発明のこの実施の形態による出力ＦＩＦＯ４８は、図９に示すような構成を有する。図９に示すように、出力ＦＩＦＯ４８は、二重ポートＦＩＦＯ９２、出力レジスタ９４、及びストロボ・バッファ９０（図５の読出し要求バッファ４４に対応する）を含む。ストロボ・バッファ９０は、データ宛先からの外部読出し可能化線ＲＤＥＮ上に読出しストロボを受信して、この読出しストロボを二重ポートＦＩＦＯ９２に加えられる信号中にバッファする。二重ポートＦＩＦＯ９２は、従来の小さなＦＩＦＯメモリであり、好ましくは、二重ポートメモリセルで構成されている。しかし、典型的に、二重ポートＦＩＦＯ９２はＳＲＡＭ配列４５よりはずっと小さく、数データ・ワードを維持するのに十分な大きさを必要とするだけである。レジスタ９２は、同期を達成するために、二重ポートＦＩＦＯ９２により出力された後で出力データ線ＲＤＤＡＴＡ上に加えられる前に一時的にデータ・ワードを記憶する。
【００７３】
上述したように、ＦＩＦＯメモリ４０からのデータの下流の外部宛先は、データ・アクセスを要求及び停止するために、それぞれ、読出し可能化線ＲＤＥＮ上に読出しストロボ信号を出力し及び出力しない。本発明のこの実施の形態によると、上述したように、出力ＦＩＦＯ４８の１つの機能は、読出し可能化線ＲＤＥＮが不活性になる時、出力データの即座の停止を行うことである。図９を参照すると、これは読出し可能化線ＲＤＥＮ上の不活性状態を検知するストロボ・バッファ９０により達成され、これに応答してレジスタ９４から出力を直ちに不可能化する。ストロボ・バッファ９０はまた、線Ｄ＿ＶＡＬ上の有効データ信号を出力せず、線ＲＤＤＡＴＡ上のデータはもはや有効でないことを指示する。
【００７４】
また、この場合、ストロボ・バッファ９０は読出し可能化線ＲＤＥＮ上の読出しストロボが出力されないことに応答して、信号を二重ポートＦＩＦＯ９２へ転送する。そして、二重ポートＦＩＦＯ９２は、ＦＩＦＯ＿ｒｄｅｎ線を不活性状態にする。この時、ＳＲＡＭ配列４５からの読出しがスケジュール化されたままの範囲内で、このスケジュール化された読出しが実行され続けて、結果を二重ポートＦＩＦＯ９２内に記憶する。このようにして、外部読出し要求又は読出しストロボの停止は、ＦＩＦＯメモリ４０からの対外的な出力データの即座の停止を結果し、一方、スケジュールされたままのＳＲＡＭ配列４５の読出しを行うことを可能にする。
【００７５】
「読出しブレーキ」機能が有用な別の状況は、ＦＩＦＯメモリ４０内に記憶された最後の完全なパケットの終わりの読出し又は送信の時に発生する。これはＦＩＦＯメモリ４０でのアンダーフロー状態が可能である。図５に戻ると、ＳＲＡＭ配列４５はその最後又は唯一のパケットについてのＥＯＰ指示子を出力する時、線ＳＲＡＭ＿ｒｄ＿ｒｄｙ上の制御信号の出力を停止する。この信号は、ＲＤ＿ＲＤＹ制御線を経由して下流の宛先装置により受信されて、これに応答して、この下流の外部装置は読出し可能化線ＲＤＥＮ上に読出しストロボ信号を送信することを停止する。しかし、読出し操作を完全に停止するためにはいくつかのクロック・サイクルを含むため、ＦＩＦＯメモリ４０は所望の時点又は状態でその操作を停止できるように「読出しブレーキ」機能を含む。そうでない場合は、パケットの出力が準備される前に、次のパケットの開始が不要に読み出されて、パケットの損失を生ずる。
【００７６】
図９に戻り図８を併せて参照すると、送信されるべき最後のパケットに対するＥＯＰの読出し（ｔｘ＿ｌａｓｔ＿ｐｋｔ状態７６から）は、状態変数ｒｅａｄ＿ｅｏｐと、状態変数＃ｐｋｔの値が１であり（すなわち、＃ｐｋｔ−１＝０）及び状態変数ｓｏｐ＿ｃｎｔも１に等しくて別のパケットの開始が既にメモリ内にあることを意味しているとの組合わせにより指示される。この場合、制御論理４７は、ｒｅａｄ＿ｂｒａｋｅ状態８０へ遷移して、状態変数ｓｅｎｄｉｎｇ＿ｐｋｔをリセットする。もし、次のパケットに対するＳＯＰの読出しが後で要求されたとしても（この場合、状態変数ｓｅｎｄｉｎｇ＿ｐｋｔがセットされる）、制御論理４７はｒｅａｄ＿ｂｒａｋｅ状態８０に留まる。その次のパケットに対するＥＯＰの書込み時に（ｗｒｉｔｅ＿ｅｏｐ）、もし、パケットがまだ送信されていなければ（ｓｅｎｄｉｎｇ＿ｐｋｔがクリア）、制御論理４７はｏｎｅ＿ｐｋｔ＿ｒｄｙ状態７４に遷移し、そしてパケット・カウント状態変数＃ｐｋｔを増加する。もし、ＳＯＰが書き込まれている新パケットが、その長さがカット・スルー閾値を超えるようなジャンボ・パケットの場合（ｐａｓｓ＿ｃｕｔ＿ｔｈｒｕ＿Ｔｈがセット）、制御論理４７はジャンボ・パケットを処理するために、ｃｕｔ＿ｔｈｒｕ状態７８へ渡される。
【００７７】
さらに、出力ＦＩＦＯ４８は、下流機能へ準備信号ＲＤ−ＲＤＹを発生して、また、ＳＲＡＭ配列４５から出力ＦＩＦＯ４８へのデータ流れを制御するために閾値論理を含む。図１０は、この閾値の好適な例と、これによりこの閾値論理の動作を概略的に示す。ここでは、出力ＦＩＦＯ４８は３つの閾値に従い動作する。もし、出力ＦＩＦＯ４８が、出力ＦＩＦＯ４８の容量の中点に近い閾値ＦＩＦＯ＿ｒｅａｄｙを越えて充満すると、下流のデータ宛先はそのＦＩＦＯメモリ４０から読出しが可能なことを示す信号を受信する。第２の閾値ｓｔｏｐ＿ｒｅａｄは、閾値ＦＩＦＯ＿ｒｅａｄｙよりも高い。出力ＦＩＦＯ４８の充満容量がこの閾値ｓｔｐ＿ｒｅａｄを越える時、出力ＦＩＦＯ４８のオーバーフローを回避するために、ＳＲＡＭ配列４５の読出しが停止される。出力ＦＩＦＯ４８の充満容量が閾値ＦＩＦＯ＿ｒｅａｄｙよりも低い第３の閾値ｓｔａｒｔ＿ｒｅａｄよりも下に落ちる時、出力ＦＩＦＯ４８がアンダーフローにならないことを確保するため、ＳＲＡ配列４５から出力ＦＩＦＯ４８へのデータの読出しが開始される。この出力ＦＩＦＯ４８からの多レベル制御は、ＦＩＦＯメモリ４０を通じての効率的なデータ流れを維持するのに特に有用である。
【００７８】
本発明の好適な実施の形態によると、大変に費用効率的なＦＩＦＯメモリが提供された。本発明のＦＩＦＯメモリは、対外的な機能が、非同期的な書込み及び読出しを受信可能な二重ポートメモリのように見える。しかし、本発明によるＦＩＦＯメモリは従来の単一ポートメモリセルから実現できる。従って、現代の技術で集積化及び実現可能な二重ポートＦＩＦＯの大きさを越えた、二重ポート機能を持つ大変大きいＦＩＦＯメモリの製造を可能にする。
【００７９】
本発明により構成された二重ポートＦＩＦＯの大きさは、ネットワーク通信のコンテキストにおいて、特に、１０Ｇビットイーサネットのような高いデータ・レート・ネットワークにおいて、特に有利である。本発明のＦＩＦＯにより提供されるバッファ機能は、キロメートルの程度の大きさで、ネットワーク・ノードを分離することを可能にし、損失のない流れ制御を達成するための効率的で単純な方法を提供し、メトロネットワークで非常に高いデータ・レート・ネットワークの実現を可能にする。
【００８０】
さらに、本発明の好適な実施の形態による二重ポートＦＩＦＯは、この装置を含むネットワーク・ノードにおいてパケット通信が容易に実行できるようにパケット管理機能を含む。
【００８１】
好適な実施の形態により本発明が説明されたが、これらの実施の形態についてもちろん修正及び変形が考えられ、このような修正及び変形も本発明の利点及び効果を有することが、本明細書と添付図面を参照すれば当業者にとっては明らかである。このような修正及び変形も特許請求の範囲の請求項に記載された本発明の範囲内であると考えられる。
以上の記載に関して、以下の各項を開示する。
【００８２】
１．ファーストイン・ファーストアウト・メモリであって、
メモリ配列と、
クロック信号を受信するためのクロック端子と、
書込み可能化信号を受信するための書込み可能化端子と、
入力データ・ワードを受信するための入力と、
読出し可能化信号を受信するための読出し可能化端子と、
入力データ・ワードと同じワード幅の出力データ・ワードを与える出力と、
入力とメモリセル配列に接続されて、書込み可能化端子における対応する書込み可能化信号と一緒に入力から第１及び第２入力データ・ワードのシーケンスを受信し、単一書込みサイクルにおいて第１及び第２入力データ・ワードをメモリ配列に書込むための書込みバッファと、
読出し可能化端子における第１及び第２読出し可能化信号の受信に応答して、メモリ配列の読出し要求をするための読出し回路と、
メモリ配列の読出し要求に応答してメモリ配列から第１及び第２出力データ・ワードを受信して、第１及び第２出力データ・ワードを順番に出力に与えるための読出しバッファと、
を含むファーストイン・ファーストアウト・メモリ。
【００８３】
２．書込みバッファが、
複数のバッファ記憶位置と、
バッファ記憶位置の選択された１つに入力から受信された入力データ・ワードを記憶するために書込みバッファを記憶し、メモリ配列へ記憶された入力データ・ワードの対を転送するために書込みバッファを制御するための順次論理と、
を含む１項記載のメモリ回路。
【００８４】
３．複数のバッファ記憶位置が、第１及び第２行の記憶位置を持つバッファ記憶位置の第１及び第２列を含んだ、行及び列に配列されている２項記載のメモリ回路。
【００８５】
４．順次論理が、第１入力データ・ワードをバッファ記憶位置の第１行及び第１列に記憶し、第２入力データ・ワードをバッファ記憶位置の第２行及び第１列に記憶するように書込みバッファを制御し、
順次論理が、そして内部書込みサイクルにおいて第１及び第２入力データ・ワードをメモリ配列へ転送するように書込みバッファを制御する３項記載のメモリ回路。
【００８６】
５．周期的なクロック信号を受信するためのクロック入力と、
周期的なクロック信号の交互のサイクルを内部書込み及び内部読出しサイクルとして割当てるためのクロック回路と、
をさらに含む４項記載のメモリ回路。
【００８７】
６．順次論理が、内部書込みサイクルの前に第３データ・ワードを受信する入力に応答して、第３入力データ・ワードをバッファ記憶位置の第２列に記憶するために、書込みバッファを制御する５項記載のメモリ回路。
【００８８】
７．読出しバッファが、
メモリ配列から読出された二倍幅の出力データ・ワードを出力データ・ワードの順番に変換するための出力幅変換器と、
出力幅変換器に接続されて、ファーストイン・ファーストアウトの態様で出力データ・ワードをバッファするための出力ＦＩＦＯと、
を含む１項に記載のメモリ回路。
【００８９】
８．読出しバッファがさらに、
読出し可能化信号を受信する読出し回路に応答して、データ有効信号と一緒に、出力において出力ＦＩＦＯから受信された出力データ・ワードを提供するための出力レジスタを含む７項に記載のメモリ回路。
【００９０】
９．出力ＦＩＦＯが、第１閾値を越えた出力データ・ワード数を記憶したその内容に応答して、読出し準備信号を発生する７項に記載のメモリ回路。
【００９１】
１０．出力ＦＩＦＯが、第１閾値よりも高い第２閾値を越えた出力データ・ワード数を記憶したその内容に応答してメモリ配列へ読出し停止信号を発生し、そして
出力ＦＩＦＯが、第１閾値よりも低い第３閾値を下回る出力データ・ワード数を記憶したその内容に応答してメモリ配列へ読出し開始信号を発生する９項に記載のメモリ回路。
【００９２】
１１．入力データ・ワード及び出力データ・ワードがパケットに配列されたデータに対応し、各パケットがパケット開始指示子及びパケット終了指示子を含み、そして
パケット開始指示子及びパケット終了指示子の書込みの検出に応答して、パケットに対応した出力データ・ワードの出力を可能化するように、メモリ回路の動作を制御するためのパケット管理論理をさらに含む１項に記載のメモリ回路。
【００９３】
１２．パケット管理論理が、閾値よりも大きい長さを持つパケットを示すパケット大きさ指示子及びパケット開始指示子の書込みの検出に応答して、ジャンボ・パケットに対応する出力データ・ワードの出力を可能にするように、メモリ回路の動作を制御する１１項に記載のメモリ回路。
【００９４】
１３．パケット管理論理が、メモリ配列内に記憶されているパケット数のカウントを維持する１１項に記載のメモリ回路。
【００９５】
１４．パケット管理論理が、パケットについてのパケット終了指示子の出力及び追加のパケットが記憶されていないことを示すカウントに応答して、出力データ・ワードの出力を不可能化する１３項に記載のメモリ回路。
【００９６】
１５．読出しバッファが、
メモリ配列から読み出された二倍幅の出力データ・ワードを出力データ・ワードのシーケンスに変換するための出力幅変換器と、
出力幅変換器に接続されて、ファーストイン・ファーストアウトの態様で出力データ・ワードをバッファするための出力ＦＩＦＯと、
読出し可能化信号を受信する読出し回路に応答して、データ有効信号と一緒に、出力において出力ＦＩＦＯから受信された出力データ・ワードを提供するための出力レジスタとを含み、そして
パケット管理論理が、パケットについてのパケット終了指示子の出力及び追加のパケットが記憶されていないことを示すカウントに応答して、出力データ・ワードの出力を不可能化するために出力レジスタを制御する１４項に記載のメモリ回路。
【００９７】
１６．メモリ回路と共にデータ・ワードをバッファするための方法であって、
メモリ回路の入力端子において入力データ・ワードのシーケンスを受信するステップと、
第１入力データ・ワード及び第２入力データ・ワードの受信に応答して、第１及び第２入力データ・ワードを単一の書込みサイクルにおいてメモリ回路のメモリ配列中に書込むステップと、
読出しストロボ信号を受信するステップと、
第１及び第２読出しストロボ信号に応答して、第１及び第２出力データ・ワードを単一の読出しサイクルにおいてメモリ配列から読出すステップと、
第１及び第２出力データ・ワードをメモリ回路の出力端子に順番に提供するステップと、
を含む方法。
【００９８】
１７．入力データ・ワードの受信に応答して、入力データ・ワードを、各列がそれぞれ第１及び第２行に関連した第１及び第２バッファ記憶位置を持つ、行及び列に配列された複数のバッファ記憶位置を持つ書込みバッファ中に記憶するステップをさらに含み、
書込むステップが、第１及び第２入力データ・ワードをそれぞれ記憶する第１列の第１及び第２バッファ記憶位置に応答して実行される１６項に記載の方法。
【００９９】
１８．周期的なシステム・クロック信号を受信するステップと、
内部書込みサイクル及び内部読出しサイクルを、システム・クロック信号に対応した内部クロックの交互の１つに割当てるステップと、をさらに含む１７項に記載の方法。
【０１００】
１９．書込むステップが、内部書込みサイクルと組合わせられて、それぞれ第１及び第２入力データ・ワードを記憶する第１列の第１及び第２バッファ記憶位置に応答して実行される１８項に記載の方法。
【０１０１】
２０．第３入力データ・ワードを受信するステップと、
第３入力データ・ワードの受信及びそれぞれ第１及び第２入力データ・ワードを記憶する第１列の第１及び第２バッファ記憶位置に応答して、内部書込みサイクル前に、第３入力データ・ワードを第２列のバッファ記憶位置に記憶するステップと、
をさらに含む１９項に記載の方法。
【０１０２】
２１．読出すステップの後で且つ提供するステップの前に、第１及び第２出力データ・ワードを出力ＦＩＦＯバッファ中にバッファリングするステップと、
提供するステップの前に、第１閾値を越えた出力データ・ワード数を記憶する出力ＦＩＦＯバッファに応答して、読出し準備信号を発生するステップと、をさらに含み、
提供するステップが、読出し準備信号を発生した後に読出しストロボ信号を受信したことに応答して実行される１６項に記載の方法。
【０１０３】
２２．第１閾値よりも高い第２閾値を越えた出力データ・ワード数を記憶する出力ＦＩＦＯバッファに応答して、メモリ配列へ読出し停止信号を発生するステップと、
第１閾値よりも低い第３閾値を下回る出力データ・ワード数を記憶する出力ＦＩＦＯバッファに応答して、メモリ配列へ読出し開始信号を発生するステップと、
をさらに含む２１項に記載の方法。
【０１０４】
２３．データ・ワードの各パケットがパケット開始指示子及びパケット終了指示子を含む、パケットで構成されたデータ・ワードの通信を管理する方法であって、
メモリ回路の入力端子において、入力データ・ワードのシーケンスを受信し、
第１入力データ・ワード及び第２入力データ・ワードの受信に応答して、第１及び第２入力データ・ワードを単一書込みサイクルでメモリ回路のメモリ配列中に書込み、
パケット開始指示子及びパケット終了指示子を含む入力データ・ワードの書込みの検出に応答して、パケットに対応したデータ・ワードの出力を可能化し、
読出しストロボ信号を受信し、
第１及び第２読出しストロボ信号の受信に応答し、メモリ配列から単一読出しサイクルで第１及び第２出力データ・ワードを読出し、
メモリ回路の出力端子において第１及び第２出力データ・ワードを順番に提供する、
ことを含む方法。
【０１０５】
２４．閾値よりも大きい長さを持つパケットを示すパケット大きさ指示子及びパケット開始指示子の書込みの検出に応答して、パケットに対応するデータ・ワードの出力を可能にする、ことをさらに含む２３項に記載の方法。
【０１０６】
２５．パケット終了指示子の書込みの検出に応答して、メモリ配列内に記憶されたパケット数のカウントを増加する、ことをさらに含む２３項に記載の方法。
【０１０７】
２６．パケットについてのパケット終了指示子の出力及び追加のパケットが記憶されていないことを示すカウントに応答して、出力データ・ワードの出力を不可能化する、ことをさらに含む２５項に記載の方法。
【０１０８】
２７．不可能化することが、
出力端子に出力データ・ワードを提供することを不可能化するために出力レジスタを制御する、ことをさらに含む２６項に記載の方法。
【０１０９】
２８．通信施設上でパケットに基づいたデータの受信及び送信を制御するためのネットワーク・ノードであって、
システムからの送信データを受け取り、システムへ処理された受信信号を出力するためのシステム・インターフェイスと、
システム・インターフェイスにおいて受け取られた送信データをバッファするための送信ＦＩＦＯバッファと、
通信施設を送信データに対応した送信信号により駆動し及び通信施設から信号を受信するための送受信機と、
受信信号をバッファリングするための受信ＦＩＦＯバッファと、を含み、
送信及び受信ＦＩＦＯバッファの各々が、
メモリ配列と、
クロック信号を受信するためのクロック端子と、
書込み可能化信号を受信するための書込み可能化端子と、
入力データ・ワードを受信するための入力と、
読出し可能化信号を受信するための読出し可能化端子と、
入力データ・ワードと同じワード幅の出力データ・ワードを提供するための出力と、
入力に接続されて、書込み可能化端子における対応した書込み可能化信号と組合わせられて入力からの第１及び第２入力データ・ワードのシーケンスを受け取り、そして単一書込みサイクルでメモリ配列中に第１及び第２入力データ・ワードを書込むための書込みバッファと、
読出し可能化端子において第１及び第２読出し可能化信号を受信することに応答して、メモリ配列の読出しを要求するための読出し回路と、
メモリ配列の読出し要求に応答してメモリ配列から第１及び第２出力データ・ワードを受信して、第１及び第２出力データ・ワードを順番に出力に提供するための読出しバッファと、
を有するネットワーク・ノード。
【０１１０】
２９．送受信機が、
送信データを直列化するためのシリアライザと、
シリアライザからのシリアル信号により通信施設を駆動するためのライン・ドライバと、
通信施設からシリアル信号を受信するための受信機と、
受信機により受信された信号を非直列化するためのデシリアライザと、
を含む２８項に記載のネットワーク・ノード。
【０１１１】
３０．送信ＦＩＦＯバッファによりバッファされた送信データを処理するための送信メディアアクセス制御機能と、
受信信号を処理し、処理された受信信号を受信ＦＩＦＯバッファへ加えるための受信メディアアクセス制御機能と、
をさらに含む２８項に記載のネットワーク・ノード。
【０１１２】
３１．送信及び受信ＦＩＦＯバッファの各々の書込みバッファが、
第１及び第２行に記憶位置を持つバッファ記憶位置の第１及び第２列を含む、行及び列に配置された複数のバッファ記憶位置と、
第１列及び第１行のバッファ記憶位置に第１入力データ・ワードを記憶し、第１列及び第２行のバッファ記憶位置に第２入力データ・ワードを記憶し、そしてメモリ配列に第１及び第２入力データ・ワードを内部書込みサイクルで転送するために書込みバッファを制御する順次論理と、を含む２８項に記載のネットワーク・ノード。
【０１１３】
３２．送信及び受信ＦＩＦＯバッファの各々の書込みバッファが、
周期的なクロック信号を受信するためのクロック入力と、
周期的なクロック信号の交互のサイクルを内部書込み及び内部読出しサイクルとして割当てるためのクロック回路と、を含み、
順次論理が、内部書込みサイクル前に第３入力データ・ワードを受信する入力に応答して、第３入力データ・ワードを第２列のバッファ記憶位置に記憶するために書込みバッファを制御する３１項に記載のネットワーク・ノード。
【０１１４】
３３．送信及び受信ＦＩＦＯバッファの各々の読出しバッファが、
メモリ配列から読出された二倍幅の出力データ・ワードを出力データ・ワードのシーケンスに変換するための出力幅変換器と、
出力幅変換器に接続されて、ファーストイン・ファーストアウト態様で出力データ・ワードをバッファするための出力ＦＩＦＯと、
を含む２８項に記載のネットワーク・ノード。
【０１１５】
３４．読出し回路がさらに、
読出し回路が読出し可能化信号を受信することに応答して、データ有効信号と一緒に、出力ＦＩＦＯから受信された出力データ・ワードを出力に提供するための出力レジスタを含む３３項に記載のネットワーク・ノード。
【０１１６】
３５．出力ＦＩＦＯが、閾値を越えた出力データ・ワード数を記憶したその内容に応答して読出し準備信号を発生する３３項に記載のネットワーク・ノード。
【０１１７】
３６．出力ＦＩＦＯが、第１閾値よりも高い第２閾値を越えた出力データ・ワード数を記憶したその内容に応答してメモリ配列へ読出し停止信号を発生し、そして
出力ＦＩＦＯが、第１閾値よりも低い第３閾値を下回る出力データ・ワード数を記憶したその内容に応答してメモリ配列へ読出し開始信号を発生する３５項に記載のネットワーク・ノード。
【０１１８】
３７．データ・ワードの各パケットがパケット開始指示子及びパケット終了指示子を含み、そして
送信及び受信ＦＩＦＯバッファの各々が、
パケット開始指示子及びパケット終了指示子の書込みの検出に応答して、パケットに対応した出力データ・ワードの出力を可能化するように、メモリ回路の動作を制御するためのパケット管理論理をさらに含む２８項に記載のネットワーク・ノード。
【０１１９】
３８．パケット管理論理が、閾値よりも大きい長さを持つパケットを示すパケット大きさ指示子及びパケット開始指示子の書込みの検出に応答して、ジャンボ・パケットに対応する出力データ・ワードの出力を可能化する３７項に記載のネットワーク・ノード。
【０１２０】
３９．パケット管理論理が、メモリ配列内に記憶されたパケット数のカウントを維持する３７項に記載のネットワーク・ノード。
【０１２１】
４０．パケット管理論理が、パケットについてのパケット終了指示子の出力及び追加のパケットが記憶されていないことを示すカウントに応答して、出力データ・ワードの出力を不可能化する３９項に記載のネットワーク・ノード。
【０１２２】
４１．読出しバッファが、
メモリ配列から読み出された二倍幅の出力データ・ワードを出力データ・ワードのシーケンスに変換するための出力幅変換器と、
出力幅変換器に接続されていて、ファーストイン・ファーストアウトの態様で出力データ・ワードをバッファするための出力ＦＩＦＯと、
読出し可能化信号を受信する読出し回路に応答して、データ有効信号と一緒に、出力において出力ＦＩＦＯから受信された出力データ・ワードを提供するための出力レジスタとを含み、そして
パケット管理論理が、パケットについてのパケット終了指示子の出力及び追加のパケットが記憶されていないことを示すカウントに応答して、出力データ・ワードの出力を不可能化するために出力レジスタを制御する４０項に記載のネットワーク・ノード。
【０１２３】
４２．パケットに基づいたデータ通信のためのラインカード（２０）を含むネットワーク・ノード（５）が開示される。ラインカード（２０）は、ラインカード（２０）内の通信をバッファリングするために送信ＦＩＦＯバッファ（２４Ｔ）及び受信ＦＩＦＯバッファ（２４Ｒ）を含む。バッファ（２４Ｔ、２４Ｒ）の各々は、バッファ（２４Ｔ、２４Ｒ）へデータ・ワードを書込み及びからデータ・ワードを受信するための書込み及び読出し要求を非同期的に受信する、二重ポート態様で動作する。バッファ（２４Ｔ、２４Ｒ）の各々は、例えば、スタチックＲＡＭセルの従来の単一ポートランダムアクセスメモリセルのメモリ配列（４５）を含む。クロック・サイクルがバッファ（２４Ｔ、２４Ｒ）により、交互に、内部読出し及び内部書込みサイクルとして割当てられる。書込みバッファ（４２）は入力データ・ワードを受信して、一対の入力データ・ワードの受信する時、次の内部書込みサイクルにおいて、メモリ配列（４５）への二倍データ・ワード書込みをスケジュールする。読出し要求バッファ（４４）は、下流機能から読出しストロボ又は読出し可能化信号を受信して、２つのこのようなストロボを受信する時、メモリ配列（４５）からの二倍データ・ワード読出しをスケジュールする。非同期的読出し及び書込み要求をそれぞれスケジュールされた読出し及び書込みに変換することにより、バッファ（２４Ｔ、２４Ｒ）は二重ポートＦＩＦＯバッフアとして動作する。
【図面の簡単な説明】
【０１２４】
【図１ａ】本発明の好適な実施の形態が実現された２つのネットワーク・ノード中のメディアアクセス制御（ＭＡＣ）機能を含んだ、高速データネットワークの機能的データ流れを示すブロック図。
【図１ｂ】本発明の好適な実施の形態による、損失のない流れ制御を確保するために含まれるさまざまな遅延時間を示す、図１ａのネットワークの電気回路の抽象的なブロック図。
【図２】本発明の好適な実施の形態が実現された例示的な送受信装置を含む図１ａのネットワーク・ノードの電気回路のブロック図。
【図３】本発明の好適な実施の形態による、ファーストイン・ファーストアウト（ＦＩＦＯ）メモリ間の外部通信を示す機能的なブロック図。
【図４ａ】本発明の好適な実施の形態による、ＦＩＦＯメモリに対する非同期的な読出し及び書込みの例を示すタイミング図。
【図４ｂ】本発明の好適な実施の形態による、ＦＩＦＯメモリに対する非同期的な読出し及び書込みの例を示すタイミング図。
【図５】本発明の好適な実施の形態による、ＦＩＦＯメモリの構造の電気回路のブロック図。
【図６】本発明の好適な実施の形態による、ＦＩＦＯメモリに使用される単一ポートメモリへのデータ入出力の書込み及び読出しバッファリングを示すデータ流れ図。
【図７】本発明の好適な実施の形態によるＦＩＦＯメモリに使用されるメモリ配列へのデータ書込み操作を示す状態図。
【図８】本発明の好適な実施の形態による、ＦＩＦＯメモリからのデータ読出し操作を示す状態図。
【図９】本発明の好適な実施の形態による、ＦＩＦＯメモリの読出しブレーキ機能を示す電気回路のブロック図。
【図１０】開始及び停止操作のための閾値を示す出力ＦＩＦＯバッファ容量の図。
【符号の説明】
【０１２５】
５            ネットワーク・ノード
１０          システム
２０          ラインカード
２４Ｒ        受信ＦＩＦＯバッファ
２４Ｔ        送信ＦＩＦＯバッファ
４２          書込みバッファ
４４          読出し要求バッファ
４５          メモリ配列
４６          出力幅変換器
４７          制御論理及びクロック回路
４８          出力ＦＩＦＯ
【図１ａ】
2005018768.tif 000004
【図１ｂ】
2005018768.tif 000005
【図２】
2005018768.tif 000006
【図３】
2005018768.tif 000007
【図４ａ】
2005018768.tif 000008
【図４ｂ】
2005018768.tif 000009
【図５】
2005018768.tif 000010
【図６】
2005018768.tif 000011
【図７】
2005018768.tif 000012
【図８】
2005018768.tif 000013
【図９】
2005018768.tif 000014
【図１０】
2005018768.tif 000015