(57)【特許請求の範囲】
【請求項１】
ネットワーク・システム内の複数の低速データ・ポート及び複数の高速データ・ポート間で共用されるバッファ・メモリをパケット・スイッチ内で管理する装置であって、
複数の低速データ・ポートと前記バッファ・メモリの間で第１のデータ・レートでデータを送るように構成された複数の低速データ・ポート・インタフェースと、
複数の高速データ・ポートと前記バッファ・メモリの間で第２のデータ・レートでデータを送るように構成された複数の高速データ・ポート・インタフェースと、
前記複数の低速データ・ポート・インタフェースに結合され、前記複数の低速データ・ポートのうちの１つのアクセス要求を選択し、アクセス要求を出力するように構成された第１のレベル・アービタと、
前記複数の高速データ・ポート・インタフェースと第１のレベル・アービタの出力とに結合され、前記高速データ・ポート・インタフェースからの複数のアクセス要求のうちのアクセス要求および前記第１のレベル・アービタからのアクセス要求から前記バッファ・メモリによって処理されるべきアクセス要求を選択するように構成された第２のレベル・アービタとを含む装置。
【請求項２】
前記第１のレベル・アービタが、
前記複数の低速データ・ポートからの複数のメモリ書込みアクセス要求を受け取り、書込み許可信号を低速データ・ポートのうちの１つに送るように構成された調停回路と、
前記複数の低速データ・ポートからの複数のコマンド・ビットを受け取り、前記調停回路からの信号に応答してコマンド・ビットのうち１つを出力するように構成されたコマンド・マルチプレクサと、
前記複数の低速データ・ポートからの少なくとも１つのデータ・ワードの少なくとも１つのセグメントを受け取り、前記調停回路からの信号に対応してデータ・ワードのセグメントを出力するように構成されたデータ・マルチプレクサと、
を含む第１のレベル書込みアービタ回路を含む請求項１に記載の装置。
【請求項３】
前記第１のレベル書込みアービタがさらに、
コマンド・ビットを受け取るように構成されたロード回路と、
連続的なデータ・セグメントが前記データ・マルチプレクサから受信され、前記ロード回路からの信号に応答して蓄積され、前記複数の低速データ・ポートの１つからのデータ・ワード、タグ・ワード、および書込みアドレスを形成する蓄積回路を含む請求項２に記載の装置。
【請求項４】
前記蓄積回路が、第１のデータ・レジスタからの蓄積されたデータを並列に前記バッファ・メモリに出力し、同時に、第２のデータ・ワードを連続的なセグメントで第２のデータ・レジスタ内に蓄積する請求項３に記載の装置。
【請求項５】
データのセグメントの幅が１６ビットであり、データ・ワードの幅が１２８ビットである請求項４に記載の装置。
【請求項６】
前記第１のレベル・アービタがさらに、
前記複数の低速データ・ポートからの複数のメモリ読取りアクセス要求を受け取り、前記複数の低速データ・ポートの１つに読取り許可信号を送るように構成された調停回路と、
前記複数の低速データ・ポートからの複数の読取りアドレスを受け取り、前記調停回路からの信号に応答して複数の読取りアドレスのうちの１つを前記バッファ・メモリに送るように構成された読取りアドレス・マルチプレクサとを含む第１のレベル読取りアービタ回路を含む請求項２に記載の装置。
【請求項７】
前記第２のレベル・アービタが、
読取りアクセス要求および書込みアクセス要求を含む前記複数の高速データ・ポート・インタフェースからの複数のアクセス要求と、読取り要求および書込み要求を含む前記第１のレベル・アービタからのアクセス要求を受け取り、読取り許可信号、書込み許可信号、メモリ制御信号をメモリ・コントローラに出力するように構成された調停回路と、
前記複数の高速データ・ポート・インタフェースおよび前記第１のレベル・アービタから情報を受け取り、前記調停回路からの信号に応答して情報を出力するように構成された複数のマルチプレクサとを含む請求項１に記載の装置。
【請求項８】
前記複数のマルチプレクサが受け取った情報は、データ情報、アドレス情報、およびタグ情報を含み、前記複数のマルチプレクサが前記調停回路によってアクセス要求が許可されているポートに関連する情報を出力する請求項７に記載の装置。
【請求項９】
前記第２のレベル・アービタがさらに、読取りアドレスおよび書込みアドレスを受け取り、前記調停回路からの信号に応答して読取りアドレスまたは書込みアドレスを出力するように構成された前記アドレス・マルチプレクサを含む請求項８に記載の装置。
【請求項１０】
前記第２のレベル・アービタがさらに、前記バッファ・メモリに書き込まれるべきデータおよびタグ情報を格納するように構成されたパイプライン・レジスタを含む請求項９に記載の装置。
【請求項１１】
前記複数の低速データ・ポートがデータを１００Ｍｂｐｓのレートで送り、前記複数の高速データ・ポートが前記複数の低速データ・ポートの１０倍のレートでデータを送る請求項１に記載の装置。
【請求項１２】
異なるデータ・レートで動作するネットワーク・クライアントによるネットワーク内の共用資源へのアクセスを制御するための方法であって、
第１のデータ・レートで動作するように構成された少なくとも１つの低速クライアントからのアクセス要求を受け取るステップであって、低速書込みアクセス要求を受け取るステップと、低速書込みアクセス要求に関連するコマンド・ビット、書込みデータ、および書込みアドレスを受け取るステップと、を更に含むステップと、
第２のデータ・レートで動作するように構成された少なくとも１つの高速クライアントからのアクセス要求を受け取るステップと、
低速クライアントのアクセス要求を選択するために低速クライアントのアクセス要求を調停するステップと、
共用資源によって処理されるべきアクセス要求を選択するために高速クライアントのアクセス要求と低速クライアントのアクセス要求の間を調停するステップと
を含む方法。
【請求項１３】
低速書込みアクセスが許可された時、書込みデータおよび書込みアドレスを格納するために低速クライアントの間で共用された格納位置の領域を、コマンド・ビットを使用して識別するステップをさらに含む請求項１２に記載の方法。
【請求項１４】
高速クライアントからのアクセス要求を受け取るステップが、
高速書込みアクセス要求を受け取るステップと、
高速書込みアクセス要求に関連するコマンド・ビット、書込みデータ、および書込みアドレスを受け取るステップとを含む請求項１３に記載の方法。
【請求項１５】
高速アクセス要求が許可された時、コマンド・ビットを使用して、書込みデータおよび書込みアドレスを高速クライアントに関連する格納領域内でアセンブルするステップと、
アセンブルされた書込みデータおよび書込みアドレスを共用資源に書込むステップとをさらに含む請求項１４に記載の方法。
【発明の詳細な説明】
発明の分野
本発明は、ネットワーク化されたコンピュータ環境内のパケット・ルーティング・スイッチの分野に関する。
発明の背景
コンピュータ・ネットワークを使用すると、多数のプロセッサが互いに通信することができる。コンピュータ・ネットワークは種々のタイプのコンピュータおよびメモリ装置とリンクする場合がある。データは一般に、ネットワーク上の構成要素の間をパケットで伝送される。パケットは通常、各々所定の長さのデータ・ワードのグループである。ネットワークがより大きく複雑になるに従って、パケットを効率的にルーティングし格納する能力がますます重要になってくる。パケットは、１つのネットワーク構成要素から別のネットワーク構成要素までルーティングするプロセスの間に、一時的に格納される場合も多い。これは一部には入力ポートと出力ポートのトラフィックの分布がランダムであるためと同時に、異なるレートでデータを伝送するポート間におけるレートを調節するためでもある。したがって、パケットの格納、すなわちバッファリングが切替機能の不可欠な部分である。バッファリングは、スイッチ回路の一部であるメモリ内（スイッチ回路と同じダイ上）、または、スイッチ回路とは別のメモリで行われる。バッファ・メモリは１つのポートに関連するかまたは、いくつかのポート間で共用される。
データ・パケットがルーティングの間に格納される場合、メモリ・アクセスが遅延、したがってネットワーク性能劣化の原因にならないように、格納装置またはメモリへの高速で効率的なアクセスを行えることが重要である。ネットワーク・スイッチは、ネットワーク構成要素間でパケットのルーティングと格納を処理する装置である。ネットワーク・スイッチには、データをスイッチに伝送し、またデータをスイッチから受け取る多数のネットワーク構成要素へ接続するための入力ポートと出力ポートが含まれる。スイッチを使用したネットワーク構成要素は、スイッチのクライアントとして知られる。単一のスイッチは、単一のメモリ装置を使用して、異なるレートでデータを送る多数のクライアントからのデータを格納する場合がある。ネットワーク・スイッチがメモリ帯域幅を最大にするような方法で、異なるデータ・レート能力を持つ多数のクライアントによるメモリ・アクセスを処理することが重要である。しかし、ネットワーク・スイッチ・アーキテクチャを設計する時には、メモリ帯域幅を最大化するニーズは他の配慮と競合せざるを得ない。たとえば、クライアントからバッファ・メモリへより広いデータ・パスを構成すると、メモリ帯域幅は向上するが、特別のハードウェアと追加の相互接続が必要になる。したがって、スイッチ・アーキテクチャが効率的、経済的、フレキシブルに機能するためには、妥協を図らなければならない。
発明の概要
ネットワーク・システム内で多数のポート間で共用されているパケット・スイッチ内でバッファ・メモリを管理するための方法と装置。この装置は、低速データ・ポートとバッファ・メモリの間で第１のデータ・レートでデータを送るように構成された複数の低速データ・ポート・インタフェースと、高速データ・ポートとバッファ・メモリの間で第２のデータ・レートでデータを送るように構成された複数の高速データ・ポート・インタフェースを含む。第１のレベル・アービタは複数の低速データ・ポート・インタフェースに結合されている。第１のレベル・アービタは低速データ・ポートのうちの１つのアクセス要求を選択し、アクセス要求を出力する。第２のレベル・アービタは複数の高速データ・ポート・インタフェースと、第１のレベル・アービタの出力に結合されている。第２のレベル・アービタは、高速データ・ポート・インタフェースからの複数のアクセス要求の間と、第１のレベル・アービタからのアクセス要求から１つのアクセス要求を選択し、選択されたアクセス要求をメモリへ中継する。
【図面の簡単な説明】
第１図は、本発明の実施形態による、メモリ・コントローラを含むネットワーク・スイッチ要素の構成図である。
第２図は、本発明の一実施形態による、共用バッファ・メモリ・コントローラ（ＢＭＣ）の構成図である。
第３図は、本発明の一実施形態による、高速／構成可能なポート・インタフェースの構成図である。
第４図は、本発明の一実施形態による、低速ポート・インタフェースの構成図である。
第５図は、本発明の一実施形態による、第１のレベル・アービタの書込み部分の構成図である。
第６図は、本発明の一実施形態による第１のレベル・アービタの読取り部分の構成図である。
第７図は、本発明の一実施形態による第２のレベル・アービタ／スケジューラの構成図である。
第８図は、本発明の一実施形態による多重レベル調停の図である。
詳細な説明
ネットワーク・クライアントによる共用バッファ・メモリへのアクセスを可能にするメモリ・コントローラについて説明する。一実施形態では、バッファ・メモリ・コントローラ（ＢＭＣ）はスイッチ要素ダイに常駐し、一部には、異なるデータ・レートでデータを送るポートに別々のインタフェースを配置することによって、共用メモリ装置の帯域幅を最大にする。メモリ帯域幅は、バッファ・メモリ・コントローラ内でデータの処理をパイプラインすることによって、また、共用バッファ・メモリへの読取り動作と書込み動作を効率的にスケジューリングすることによって、さらに最適化される。
第１図は、本発明の一実施形態によるスイッチ要素のアーキテクチャを示す単純化された構成図である。スイッチ要素１００は、中央処理装置（ＣＰＵ）インタフェース１０２、ネットワーク・インタフェース１０６、カスケード・インタフェース１０８、共用メモリ・マネジャー１１０を含む。共用メモリ・マネジャー１１０は共用バッファ・メモリ・コントローラ（ＢＭＣ）１１２を含む。
イーサネット・パケットは３つのインタフェース１０６または１０２、１０８のうち任意の１つのインタフェースを介してスイッチ要素１００に入るか、またはスイッチ要素１００から出る。簡単に言えば、この実施形態ではネットワーク・インタフェース１０６はイーサネット・プロトコルによってパケットをネットワーク（図示せず）から受け取り、１つまたは複数の外部ポート（図示せず）を介してイーサネット・パケットをネットワークに送る。オプションのカスケード・インタフェース１０８は、より大きなスイッチを作り出すためにスイッチ要素を相互接続するための１つまたは複数の内部リンク（図示せず）を含む。
ＣＰＵはＣＰＵインタフェース１０２を介してスイッチ要素１００にコマンドまたはパケットを送る。このような方法で、ＣＰＵで実行される１つまたは複数のソフトウェア・プロセスは新しい入力の追加、不必要な入力の無効化など、外部の中継／フィルタリング・データベース（図示せず）内の入力を管理する。しかし代替実施形態では、ＣＰＵは中継／フィルタリング・データベースへの直接アクセスができる。どの場合でも、パケットの中継の目的で、ＣＰＵインタフェース１０２のＣＰＵポートはスイッチ要素１００への一般的な入力／出力ポートに相似しており、別の外部ネットワーク・インタフェース・ポートとまったく同じように扱うことができる。
ネットワーク・インタフェース１０６、ＣＰＵインタフェース１０２、カスケード・インタフェース１０８は、共用メモリ・マネジャ１１０に結合されている。共用メモリ・マネジャ１１０は、着信パケットのバッファリングのための、外部の共用メモリへの効率的な集中インタフェースである。
本発明では、イーサネット・パケットは、共用メモリ・マネジャ１１０によって中央でバッファリングされ、管理されている。共用メモリ・マネジャ１１０は各入力ポートと出力ポートのインタフェースであり、それらのためにダイナミックなメモリ割振りと割振り解除をそれぞれ実行する。入力パケット処理の間、１つまたは複数のバッファが外部共用メモリ内に割り振られ、着信パケットは、たとえばネットワーク・インタフェース１０６から受け取ったコマンドに応答して共用メモリ・マネジャ１１０によって格納される。その後、出力パケット処理の間、共用メモリ・マネジャ１１０は外部共用メモリからパケットを検索し、使用されなくなったバッファの割振りを解除する。すべての出力ポートがその中に格納されたデータの送り出しを完了するまで、どのバッファも解放しないことを確認するために、好ましくは共用メモリ・マネジャ１１０はバッファの所有権をも追跡する。
本発明は、高速イーサネット・パケットおよびギガビット・イーサネット・パケットのワイヤ速度ルーティングと中継を行うスイッチ要素１００のようなスイッチ要素に含まれることもある。しかし、インタフェースは他のネットワーク・プロトコルにも同じように適合するように構成されている。また、機能は上記とは異なるように分割される場合もあることを理解されたい。たとえば、説明した実施形態で多数の装置が、共用メモリ・マネジャ１１０に関連してダイナミックな割振り、割振り解除、追跡を実行する場合もある。さらに、スイッチ要素は好ましくは高度に統合され、ハードウェア内で性能が重要な機能を実行する単一の特定用途向け集積回路（ＡＳＩＣ）を含む場合もあるが、代替実施形態は２つ以上のＡＳＩＣを含むチップ・セットを含む。最終的に、ハードウェアとソフトウェアの間の機能の分割も同様に調停される場合があることを理解されたい。
第２図は、一実施形態によるバッファ・メモリ・コントローラ（ＢＭＣ）１１２の構成図を示す。ＢＭＣ１１２はネットワーク・コンピュータ・システム内の種々のポートについて、共用ＳＲＡＭメモリ（図示せず）へのアクセスを制御する。ＢＭＣ１１２はネットワーク内の他のポートに比べて比較的遅いデータ・レートで動作する低速ポート２０２のために共用メモリへのアクセスを制御する。ホスト装置はまた、通常は周辺構成要素インタフェース（ＰＣＩ）バスなどのローカル・バス上で、ＢＭＣ１１２のホスト・ポート２０４を介して共用メモリへアクセスする。高速ポート２２２はまたＢＭＣ１１２を介して共用メモリへもアクセスする。高速ポート２２２はまた、ＢＭＣ１１２を介して共用メモリへアクセスする。高速ポート２２２は低速ポート２０２に比べて比較的速いデータ・レートで動作する。構成可能なポート２２０は、ＢＭＣ１１２を介して共用メモリへアクセスする。構成可能なポート２２０とは、低速ポート２０２のデータ・レートまたは高速ポート２２２のデータ・レートで動作するように構成することができるポートのことである。本発明の一実施形態によれば、低速ポート２０２はイーサネット・プロトコルまたは高速イーサネット・プロトコルに従って動作する。一実施形態によれば、ホスト・ポート２０４はＰＣＩバス・プロトコルに従う。この実施形態によれば、高速ポート２２２は、ギガビット・イーサネット・プロトコルに従って動作する。低速ポート２０２の高速イーサネット・レートは１００Ｍｂｐｓである。一実施形態によれば、１００Ｍｂｐｓの帯域幅はホスト・ポート２０４に割り振られている。ギガビット高速ポート２２２のデータ・レートは、高速イーサネット低速ポート２０２と、ホスト・ポート２０４の１０倍のデータ・レートである。本発明の一実施形態によれば、ＢＭＣ１１２は３つの高速（ギガビット）ポート、５つのプログラム可能なポート、１１の低速（高速イーサネット）ポート、１つのホスト・ポートに接続されている。
ＢＭＣ１１２は、低速ポート・インタフェース２０６と高速／構成可能なポート・インタフェース２０８を含む。以下にさらに詳細に説明されているように、ＢＭＣ１１２は、共用メモリ・デバイスの帯域幅を最大にするように、異なるデータ・レートで動作するポート間（この実施形態では、ギガビット・ポートと高速イーサネット・ポート）のトランザクションを異なった方法で処理する。この帯域幅最大化の１つの側面は、第２図に示されたように２レベルの調停である。具体的には、低速ポート・インタフェース２０６は、アクセス要求が第１のレベル・アービタ２１０と第２のレベル・アービタ／スケジューラ２１４を通過しないと共用メモリにアクセスできない。高速／構成可能なポート・インタフェース２０８などのギガビット・レートで動作する能力のあるポート・インタフェースは、第２のレベル・アービタ／スケジューラ２１４を介して共用メモリ・デバイスにアクセスする。第２のレベル・アービタ／スケジューラ２１４は共用メモリへのアクセス要求の間を調停し、制御信号をＳＲＡＭコントローラ２１６へ渡す。インタフェース・ポートが共用メモリへのアクセスを許可されると、第２のレベル・アービタ／スケジューラ２１４はＳＲＡＭアドレス、書込みデータ（ＷＤＡＴＡ）情報、書込みタグ（ＷＴＡＧ）情報を、共用メモリ・デバイスへ格納するために送る。読取りパイプ２１８は、正しいポートが共用メモリ・デバイスから読取りデータ（ｒｄ＿ｄａｔａ）情報と読取りタグ（ｒｄ＿ｔａｇ）情報を受け取ることができるように一時的にポート識別を格納することによって、共用メモリ・デバイスからの読取りを促進する。
第３図は、１つの高速／構成可能なポート・インタフェース２０８に接続された１つの高速ポート２２２を示す構成図である。高速／構成可能なポート・インタフェース２０８は、読取りパイプ２１８と第２のレベル・アービタ／スケジューラ２１４に結合されている。示されている高速ポートは、高速出力ポート２２２ａと高速入力ポート２２２ｂを含む。示されているように、出力ポート２２２ａは、出力インタフェース回路３４２に結合され、高速入力ポート２２２ｂは、高速入力インタフェース回路３４４に結合されている。高速入力ポート２２２ｂと高速出力ポート２２２ａは、独自のコマンド、アドレス、データ・バスを介してＢＭＣ１１２の高速／構成可能なポート・インタフェース２０８と通信する。高速入力インタフェース回路３４４は共用メモリへの書込み動作だけを実行し、出力インタフェース回路３４２は共用メモリへの読取り動作だけを実行する。
図示のように、高速入力ポート２２２ｂに接続されたネットワーク・クライアントが共用メモリに書込み動作を要求すると、高速入力ポート２２２ｂは１６ビット・セグメントのデータ、アドレス、タグ情報をデータ回線を介してレジスタ３３０に送る。この実施形態では、３つのコマンド・ビットもレジスタ３２８に送られる。レジスタ３２８と３３０は、同期化の目的で高速入力インタフェース回路３４４に含まれている。この実施形態では、データは１２８ビット・ワードで共用メモリに書き込まれ、格納される。本発明によれば、コマンド・ビットの使用によって、クライアントと共用メモリ間のより狭い物理的インタフェース、すなわちこの実施形態では１２８ビットの代わりに１６ビットの物理的なインタフェースが達成される。この場合ははるかに少ない接続ハードウェアで済むと同時に、効率的なメモリ・アクセスを保持する。３つのコマンド・ビットは、高速入力インタフェース回路３４４に到着する１６ビット・セグメントのデータをデータ保持レジスタ３３４、アドレス保持レジスタ３３８、タグ保持レジスタ３４０へ方向づける。３つのコマンド・ビットは高速入力ポート２２２ｂ内で符号化され、コマンド復号器有限状態マシン（ｆｓｍ）３３２内で復号化される。一実施形態によれば、コマンド・ビットは復号化され、動作がないこと、第１のアドレスの書込み、第２のアドレスの書込み、第１のデータの書込み、ｗｒ＿ｄａｔａの書込み、パケットの最後のワードの書込み、また状態の書込みを示す。この実施形態によれば、高速入力ポート２２２ｂは２つのｗｒ＿ａｄｄｒコマンドをＢＭＣ１１２へ送信し、１９ビット・アドレスを形成する。高速入力ポート２２２ｂはそれから書込み第１データ・コマンドを送信し、第１の１６ビット・データ・セグメントをデータ・バス上で高速入力インタフェース回路３４４に送る。このデータは１６バイト・レジスタであるデータ保持レジスタ３３４内に保持する。高速入力ポート２２２ｂは、保持レジスタ３３４が満たされるまで７つの追加データｗｒ＿ｃｍｄ信号を送信し続ける。それからｗｒ＿ｒｅｑが生成され、第２のレベル・アービタ／スケジューラ２１４に送られる。同時に書込み待ち（ｗｒ＿ｗａｉｔ）信号が高速インタフェース・ポート２２２ｂに送られ、保持レジスタがビジーでこれ以上データを取り込めないことを示す。ｗｒ＿ｗａｉｔ信号は、コマンド復号器ｆｓｍ３３２から受信された「フル」信号と、第２のレベル・アービタ２１４から受信された書込み許可（ｗｒ＿ｇｎｔ）信号によって生成される。
この実施形態では、第２のレベル・アービタ／スケジューラ２１４はラウンドロビン調停方式を使用して、高速入力ポート２２２ｂへのアクセスを許可する。第２のレベル・アービタ／スケジューラ２１４はまた、共用メモリ装置に書き込まれるべきアドレス、データ、タグをスケジューリングする。その後アドレスとデータは次のクロック・サイクルでメモリ内に書き込まれる。好ましい実施形態ではＳＲＡＭ技術が使用される。使用されるＳＲＡＭ技術は完全にパイプラインされているので、アービタ／スケジューラ２１４は連続的に書込み動作をスケジューリングすることができる。データのパケットの終端に到達すると、高速入力ポート２２２ｂは書込み状態コマンドを、状態情報と共に高速入力インタフェース回路３４４に送る。パケット・メモリ内に書き込まれる最後のデータと状態は、次に高速入力インタフェース回路３４４によってスケジューリングされる。
出力インタフェース回路３４２は共用メモリからの読取り動作について、高速出力ポート２２２ａによる共用メモリへのアクセスを制御する。高速出力ポート２２２ａに接続されたネットワーク・クライアントが共用メモリへの読取りアクセスを要求すると、高速出力ポート２２２ａはそれぞれレジスタ３０２と３０４に送られるコマンドとアドレス・ビットを公式化する。レジスタ３０２と３０４は、同期化の目的で使用される。３つのコマンド・ビットがコマンド復号器ｆｓｍ３０６に入力され、復号化される。コマンド・ビットの復号化された重要さに応じて、出力ポート・インタフェース回路３４２に入力する１６ビットのアドレス・セグメントはレジスタ３１０または３１２にロードされる。レジスタ３１０または３１２のどちららか１つは現在のアドレスを保持し、もう１つは次のパケットのアドレスを保持する。現在のアドレスを保持しているレジスタは、現在のパケットの各アドレスが１つ増えるごとに１つずつ増える。次のパケットの第１のアドレスは、現在のパケットの最後のワードの書込みと、次のパケットの最初のワードの書込みの間に待ち時間が生じないように、他のレジスタ内で使用可能に保持されている。マルチプレクサ３１４は、次の読取りアドレス（ｒｄ＿ａｄｄｒ）として第２のレベル・アービタ／スケジューラ２１４に送られるべき、適切なレジスタ３１０または３１２内に格納されている現在の１９ビットのアドレスを選択する。コマンド復号器ｆｓｍ３０６は、現在のアドレスまたは次のアドレスがレジスタ３１０または３１２を満たした時にｆｓｍ３０８にロードするように、現在のフル（ｃｆｕｌｌ）信号または次のフル（ｎｆｕｌｌ）信号のうち適切な方を送る。論理（ｌｏｇｉｃ）３２４は同期化の目的のために、ｒｄ＿ｔａｇを保持している読取りパイプ２１８のレジスタ３２６を介してメモリからｒｄ＿ｔａｇを受け取る。論理３２４はｒｄ＿ｔａｇを使用して、ｆｓｍ３０８にロードするパケット終端（ｅｏｐ）信号を生成する。ロードｆｓｍ３０８は、第２のレベル・アービタ／スケジューラ２１４へ、読取り要求（ｒｄ＿ｒｅｑ）信号を生成する。共用メモリへのアクセスについての調停が完了すると、第２のレベル・アービタ／スケジューラ２１４はロードｆｓｍ３０８へ、読取り許可（ｒｄ＿ｇｎｔ）を送る。アンロードｆｓｍ３２２は、共用メモリから読取りパイプ２１８を介して高速出力ポート２２２ａへのデータのアンロードを調停する。メモリからの読取りデータは、１２８ビット・ワードで並列的にレジスタ３１８または３２０のどちらか１つに送られる。レジスタ３１８または３２０のどちらか１つは、メモリから並列にロードされた後、マルチプレクサ３１６を介して１６ビット・セグメントにアンロードされる。アンロードｆｓｍ３２２とｒｄ＿ｔａｇからの情報によって命令されたように、出力インタフェース回路３４２は、共用メモリ帯域幅が最適化され、同時に、高速出力ポート２２２ａへの狭いデータ・インタフェース（１６ビット）が維持されるように、効率的に読込パイプ２１８からのデータの二重バッファリングを処理する。アンロードｆｓｍ３３２はまた、高速出力ポート２２２ａへのコマンドとｒｄ＿ｗａｉｔ信号を生成する。ｒｄ＿ｗａｉｔ信号は、ｒｄ＿ｗａｉｔ信号がアサート解除されるまで次のｒｄ＿ｒｅｑｓ信号を送るのを待たなければならないことを高速出力ポート２２２ａに伝える流れ制御信号として機能する。
第４図は、低速ポート・インタフェース２０６の構成図である。第４図は、低速ポート・インタフェース２０６から低速ポート２０２のうち１つへの接続を示す。図示のように、各低速ポート２０２は低速出力ポート２０２ａと低速入力ポート２０２ｂを有する。低速ポート・インタフェース２０６はまた、読取りパイプ２１８、第１のレベル・アービタ２１０と通信する。本発明によれば、共用メモリへの効率的なアクセスが異なるデータ・レートで動作するネットワーク・クライアントに許可されているが、それは一部には、低速入力ポートを介して低速クライアントから共用メモリへ書き込まれているデータは物理的なリソースを共用する一方、高速入力ポートを介したｗｒ＿ｄａｔａは物理的なリソースを共用していないためである。上記の実施形態では、この構成は、それほど専用化されていないハードウェア・リソースでもまったく同じように効率的に、より低速なデータが処理できるという事実を利用して選択された設計を表わす。第４図に示されているように、低速ポート・インタフェース２０６は低速入力ポート２０２ｂを介して入ってくるｗｒ＿ｄａｔａに対しては、バッファリング回路も制御回路も含んでいない。つまり、低速ポート・インタフェース２０６は第３図の高速入力インタフェース回路３４４と類似の回路を保持していないのである。そのかわりに、低速クライアント入力ポートｒｄ＿ｒｅｑコマンドとデータ信号は直接第１のレベル・アービタ２１０に送られ、ｗｒ＿ｇｎｔ信号は第１のレベル・アービタ２１０から直接低速入力ポート２０２ｂに送られる。
出力インタフェース回路４４２は、出力インタフェース回路３４２に関して説明したのと全く同じように動作するが、１つだけ例外がある。低速ポート・インタフェース２０６の出力インタフェース回路４４２は、１つのレベルの調停ではなく２つのレベルの調停によって共用メモリへのアクセスを得なければならない。具体的には、ｒｄ＿ｒｅｑ信号とｒｄ＿ａｄｄｒ信号が第１のレベル・アービタ２１０へ送られる。調停が完了すると、ｒｄ＿ｇｎｔ信号を第２のレベル・アービタ／スケジューラから受け取る。
第５図は、共用メモリへの書込み動作を処理する第１のレベル・アービタ２１０の一部を詳しく示す図である。第１のレベル書込みアービタ２１０ａは、調停回路５１０、コマンド・マルチプレクサ５１２、データ・マルチプレクサ５１４を含む。この実施形態では、調停回路５１０は１００Ｍｂｐｓで動作する１１のポートからｗｒ＿ｒｅｑｓを受け取る。この実施形態では、調停回路５１０はまた、１００Ｍｂｐｓのデータ・レートで動作するポートのうちの１つからｗｒ＿ｒｅｑｓを受け取る。他の実施形態では、上記の実施形態とは異なるデータ・レートで動作し、異なるプロトコルにしたがった異なる数の種々のタイプのポートが調停回路５１０によって処理される。調停回路５１０は、ラウンドロビン調停方式を使用して、次にアクセスを許可される特定のポートを選択する。許可信号５０４は、第２のレベル・アービタ／スケジューラ２１４から第１のレベル書込みアービタ２１０ａを介して、個別の要求するポートへ送られる個別のｗｒ＿ｇｎｔ信号である。コマンド・ライン５０６はそれぞれ、１つの低速入力ポート内で発生し、コマンド情報を３つのビット・セグメントでマルチプレクサ５１２へ送る。調停が完了すると、調停回路５１０からの選択信号は、要求する低速ポートのうち１つからのコマンド情報をロード状態マシン５１６に送る。データ回線５０８はそれぞれ、１つの低速入力ポートで発生する。データ回線５０８はそれぞれ、１６ビット・セグメントでデータ情報をマルチプレクサ５１４へ送る。調停が完了すると、ポートのうち１つからのコマンド情報は調停回路５１０からの選択信号によってマルチプレクサ５１４から送られる。１６ビット・セグメントのデータは、ロード状態マシン５１６内で復号化されたコマンド・ビットによって指示された通りに、ｍｕｘ５１４から、ｗｒ＿ｄａｔａレジスタ５２０または５２２、またはレジスタ５２６、５２８のうちの１つに送られる。レジスタ５２０と５２２は、書込みデータ（ｆｅ＿ｗｒ＿ｄａｔａ）を１２８ビット・ワードでアセンブルするために使用される。レジスタ５２８は、１６ビットの高速イーサネット書込みタグ（ｆｅ＿ｗｒ＿ｔａｇ）をアセンブルするために使用される。レジスタ５２６は、１９ビットの書込みアドレス（ｆｅ＿ｗｒ＿ａｄｄｒ）をアセンブルするために使用される。アンロード状態マシン５１８の制御下で、マルチプレクサ５２４は１２８ビット・データのワードを共用メモリに書き込むために、レジスタ５２０または５２２のどちらかから送る。アンロード状態マシン５１８は、書込み要求（ｆｅ＿ｗｒ＿ｒｅｑ）を第２のレベル・アービタ／スケジューラ２１４へ送り、第２のレベル・アービタ／スケジューラ２１４から書込み許可（ｆｅ＿ｗｒ＿ｇｎｔ）信号を受け取る。
第６図は、第１のレベル・アービタ２１０の読取りアービタ部分２１０ｂの構成図である。第１のレベル読取りアービタ２１０ｂは、調停回路６０８とマルチプレクサ６１０を含む。読取り要求（ｒｄ＿ｒｅｑ）回線６０２は、１１の低速（この実施形態では高速イーサネット）出力ポートと、１つのホスト出力ポートから要求信号を搬送する。読取り許可（ｒｄ＿ｇｎｔ）回線６０４は、調停回路６０８からのｒｄ＿ｇｎｔ信号を、読取り動作を要求している個別のポートに搬送する。読取りアドレス（ｒｄ＿ａｄｄｒ）回線６０６は、要求しているポートから１９ビットの読取りアドレスを搬送する。１つの１９ビットの読取りアドレス（ｆｅ＿ｒｄ＿ａｄｄｒ）は、調停回路６０８からマルチプレクサ６１０への選択信号によって、第２のレベル・アービタ／スケジューラ２１４へ中継される。調停回路６０８はラウンドロビン調停が完了すると、要求しているポートのうちの１つからの単一の読取り要求（ｆｅ＿ｒｄ＿ｒｅｑ）を送る。調停回路６０８は、第２のレベル・アービタ／スケジューラ２１４からの読取り許可（ｆｅ＿ｒｄ＿ｇｎｔ）信号を受け取る。
第７図は、第２のレベル・アービタ／スケジューラ２１４の構成図である。第７図はまた、第２のレベル・アービタ／スケジューラ２１４に結合されたＳＲＡＭコントローラ２１６も示す。第２のレベル・アービタ／スケジューラ２１４は、調停回路７０２と、ｗｒ＿ａｄｄｒｓ、ｒｄ＿ａｄｄｒｓ、ｗｒ＿ｄａｔａ、ｗｒ＿ｔａｇｓをそれぞれ受け取るマルチプレクサ７０４、７０６、７０８、７１０を含む。要求回線７２８はｒｄ＿ｒｅｑｓとｗｒ＿ｒｅｑｓを調停回路７０２に送る。８つのｗｒ＿ｒｅｑ信号は調停回路７０２に送られる。この実施形態では、８つのｗｒ＿ｒｅｑ信号は８つの高速（ギガビット・イーサネット）ポートまたは３つのギガビット・ポートと、ギガビット・ポートとして構成された５つの構成可能なポートからの要求を示す。１つのｆｅ＿ｗｒ＿ｒｅｑ信号が、第１のレベル・アービタ２１０から調停回路７０２に入力される。調停回路７０２はまた、上述の８つのｗｒ＿ｒｅｑ信号に対応する８つの読取り要求（ｒｄ＿ｒｅｑ）信号を受け取る。最終的には、調停回路７０２は第１のレベル・アービタ２１０から１つのｆｅ＿ｒｄ＿ｒｅｑを受け取る。調停回路７０２はこの実施形態ではラウンドロビン調停を実行し、それに応じてｆｅ＿ｒｄ＿ｇｎｔ信号、ｒｄ＿ｇｎｔ信号、ｆｅ＿ｗｒ＿ｇｎｔ信号、及びｗｒ＿ｇｎｔ信号を発行する。調停回路７０２はさらに、それに応じて書込みコマンド（ｗｒ＿ｃｍｄ）信号と読取りコマンド（ｒｄ＿ｃｍｄ）信号を、ＳＲＡＭコントローラ２１６に送る。図示のように調停が完了すると、調停回路７０２は現在の動作が要求する通りに、書込み選択（ｗｒ＿ｓｅｌ）信号か読取り選択（ｒｄ＿ｓｅｌ）信号をマルチプレクサ７０４、７０６、７０８、７１０に送る。ｗｒ＿ａｄｄｒ回線７３０はｗｒ＿ａｄｄｒ信号と、１つのｆｅ＿ｗｒ＿ａｄｄｒ信号をマルチプレクサ７０４へ送る。
図示の実施形態で要求信号７２８に関して説明したように、８つのギガビット・ポートからのｗｒ＿ａｄｄｒ信号（直接送られた）と、第１のレベル・アービタ２１０からの１つのｆｅ＿ａｒ＿ａｄｄｒ信号は、マルチプレクサ７０４によって受け取られる。同様に、ｒｄ＿ａｄｄｒ信号とｆｅ＿ｒｄ＿ａｄｄｒ信号は、ｒｄ＿ａｄｄｒ回線７３２上でマルチプレクサ７０６に送られる。ｗｒ＿ｄａｔａ信号とｆｅ＿ｗｒ＿ｄａｔａ信号は、ｗｒ＿ａｄｄｒ回線７３４上でマルチプレクサ７０８へ送られる。ｗｒ＿ｔａｇ信号と１つのｆｅ＿ｗｒ＿ｔａｇ信号は、ｗｒ＿ｔａｇ回線７３６上でマルチプレクサ７１０へ送られる。調停が完了すると、マルチプレクサ７１２は１９ビットのｗｒ＿ａｄｄｒまたは１９ビットのｒｄ＿ａｄｄｒのどちらかを選択し、レジスタ７１４とＳＲＡＭコントローラ２１６へ送る。さらに、調停が完了すると、回線７３４のうちの１つの回線上にあるｗｒ＿ｄａｔａが同期化レジスタ７１６、７１８、７２２を介して共用メモリへ送られる。同期化レジスタ７２２、７２４、７２６を介してＳＲＡＭタグ情報として送られるべき１６ビットのｗｒ＿ｔａｇ情報が、回線７３６のうちの１つの回線から選択される。
好ましい実施形態では、ゼロ・バス・ターン・アラウンドをサポートする完全にパイプライン化されたＳＲＡＭが共用メモリとして使用される。したがって、読取りサイクルの後に書込みサイクルが続く場合、待ち時間は生じない。これによって、第２のレベル・アービタ／スケジューラ２１４が、任意のシーケンスで要求をスケジュールすることが可能になる。一実施形態では、第２のレベル・アービタ／スケジューラ２１４は、後に続く書込み要求と共に読取り要求をスケジューリングする。この実施形態では、読取りトランザクションと書込みトランザクション間の交替の間に性能の低下を被るメモリ・デバイスが使用されている場合でも、その低下は最小化される。
第８図は、一実施形態による、共用メモリへのアクセスについて２レベルの調停を簡単に図にしたものである。この実施形態では、読取り要求と書込み要求は、３つの高速ポート２２２、５つの構成可能なポート２２０、１１の低速ポート２０２、および１つのホスト・ポート２０４というポートからサポートされている。第８図に示されたように、第１のレベル・アービタ２１０と第２のレベル・アービタ／スケジューラ２１４は、この図ではギガビット・イーサネット（ＧＥ）と、高速イーサネット（ＦＥ）とラベル付けされている高速ポートと低速ポートからの読取り要求と書込み要求を処理する。ＦＥ読取り（ＦＥｒｄ）要求信号８０６とホスト読取りプロセス（ＨＲＰ）要求信号８０８は第１のレベル読取りアービタ２１０ｂによってラウンドロビン方式で調停される。この調停の結果、単一のＦＥｒｄ要求は第２のレベル・アービタ／スケジューラ２１４へ送られる。第２のレベル・アービタ／スケジューラ２１４は、第１のレベル・アービタ２１０ｂ、３つのＧＥ読取り（ＧＥｒｄ）要求８０２、５つの構成可能なＧＥ／ＦＥ読取り（ＧＥ／ＦＥｒｄ）要求８０４によって実行された調停の結果の間を調停する。書込み要求についての２レベルの調停も同様な方法で処理される。図示のように、第１のレベル書込みアービタ２１０ａは、ＦＥ書込み（ＦＥｗｒ）要求８１４と、ホスト送信プロセス（ＨＴＰ）要求８１６の間で調停する。第２のレベル・アービタ／スケジューラ２１４は、第１レベルアービタ２１０ａ、ＧＥ書込み（ＧＥｗｒ）要求８１０、ＧＥ／ＦＥ書込み（ＧＥ／ＦＥｗｒ）要求８１２によって実行された調停の結果の間で調停する。このように、メモリ帯域幅は最適化され、資源が節約される。
第８図に示された実施形態では、共用メモリのアクセスへの要求は、左から右へ示された順序にスケジューリングされ、読取り要求は時間的に最初になり、次に書込み要求が続く。この構成によって、読込アクセスと書込みアクセスの間の切替の時、待ち状態を引き起こすメモリの待ち状態が最小限になる。他の実施形態では他の方法で読取りと書込みの順序を構成するが、２つのレベルの調停方式の増大した効率の利益はそのまま得られる。
以上、本発明について特定の実施形態に関して説明したが、当業者なら、以下の請求の範囲に記載した本発明の精神および範囲から逸脱することなく種々の変更および代替を行うことができることを理解されたい。
【図１】
0004024875.tif 000002
【図２】
0004024875.tif 000003
【図３】
0004024875.tif 000004
【図４】
0004024875.tif 000005
【図５】
0004024875.tif 000006
【図６】
0004024875.tif 000007
【図７】
0004024875.tif 000008
【図８】
0004024875.tif 000009