(57)【特許請求の範囲】
【請求項１】
ネットワークシステムにおいて共用メモリへのアクセスを制御する装置であって、
第１の幅のセグメントで第１のデータ転送速度にて、ネットワーク・クライアントからデータ、アドレス、コマンドの情報を順次に受取るように構成されている、少なくとも１つの高速ポート・インタフェース回路であって、
前記データとアドレスの情報を一時的に蓄積するように構成された高速インタフェース・レジスタと、
前記コマンドの情報に応じて、前記データとアドレスの情報のセグメントを、高速インタフェース・レジスタが満たされるまで、高速インタフェース・レジスタに順次に格納するコマンド解読回路と
を含み、
その高速インタフェース・レジスタが前記共用メモリへ並列に読み出されるように構成されている、
少なくとも１つの高速ポート・インタフェース回路と、
第１の幅のセグメントで第２のデータ転送速度にて、ネットワーク・クライアントからデータ、アドレス、コマンドの情報を受取り、これらのデータ、アドレス、コマンドの情報を、記憶回路に転送する、少なくとも１つの低速ポート・インタフェース回路であって、
前記記憶回路は、低速ポート・インタフェース回路間で共用され、複数の低速インタフェース・レジスタを有し、１つの低速インタフェース・レジスタの内容が共用メモリへ並列に読出されると同時に別の低速インタフェース・レジスタにデータ・セグメントが順次に格納される、
少なくとも１つの低速ポート・インタフェース回路と
を備えることを特徴とする装置。
【請求項２】
低速ポート・インタフェース回路は、複数の出力インタフェース・レジスタを含む出力ポート・インタフェースを備え、１つの出力インタフェース・レジスタの内容が第１の幅の順次セグメントで出力ポートに出力されると同時に、別の出力インタフェース・レジスタが共用メモリから並列にデータを受取るように構成されていることを特徴とする請求項１記載の装置。
【請求項３】
高速ポート・インタフェース回路が、出力ポート・インタフェースをさらに備えることを特徴とする請求項２記載の装置。
【請求項４】
高速ポート・インタフェース回路と、共用メモリへの読取り書込み操作のリクエストを受取る共用記憶回路とに接続されたスケジューリング回路であって、前記書込み操作の前に、すべての前記読取り操作が完了するように、前記読取り書込み操作をスケジュールするように構成されたスケジューリング回路をさらに備えることを特徴とする請求項３記載の装置。
【請求項５】
前記スケジューリング回路と共用メモリとに接続されたメモリ・コントローラであって、前記スケジューリング回路からメモリ・アドレスを受取って、コマンドを共用メモリに出すように構成されたメモリ・コントローラをさらに備え、前記コマンドが読取り書込み操作を指示する、ことを特徴とする請求項４記載の装置。
【請求項６】
出力ポート・インタフェースには、コマンド情報を受取って、復号し、それに応じて、読取りアドレスを読取りアドレス・レジスタに集めて、共用メモリに向けて、読取りリクエストを発生させるように構成されたコマンド復号回路がさらに備えられることを特徴とする請求項３記載の装置。
【請求項７】
出力ポート・インタフェースが、共用メモリとフロー制御回路に接続された出力データ・レジスタをさらに備え、前記出力データ・レジスタが、共用メモリからデータを受取って、そのデータを、第１の幅のセグメントで、出力データ・レジスタの１つから、出力ポートに出力し、そして、データが、出力データ・レジスタに準備できてないときには、フロー制御回路が、出力ポートに読取り待ち信号を出すことを特徴とする請求項６記載の装置。
【請求項８】
読取りをリクエストする出力ポートのポート識別名を受取って、読取りタグをフロー制御回路に出力して、出力データ・レジスタからのデータが送られるポートを前記フロー制御回路に指示させる読取りパイプをさらに備えることを特徴とする請求項７記載の装置。
【請求項９】
第１の幅が１６ビットであり、高速インタフェース・レジスタと、それぞれの低速インタフェース・レジスタは第２の幅を持ち、第２の幅は第１の幅の８倍であることを特徴とする請求項１記載の装置。
【請求項１０】
出力ポート・インタフェースが、現在の読取りアドレスを格納するように構成された現在のアドレス・レジスタと、次の読取りアドレスを格納するように構成された次のアドレス・レジスタとを含めて、複数の読取りアドレス・レジスタを備えている、ことを特徴とする請求項６記載の装置。
【請求項１１】
現在のパケットからのデータが共用メモリに書込まれるたびに、現在のアドレス・レジスタが増分されるように、構成されていることを特徴とする請求項１０記載の装置。
【発明の詳細な説明】
発明の分野
本発明は、ネットワーク・コンピューティング環境におけるパケット・ルーティング・スイッチの分野に属する。
発明の背景
コンピュータ・ネットワークにより、複数のプロセッサが、互いにやり取りすることができる。コンピュータ・ネットワークは、様々なタイプのコンピュータや記憶装置をリンクできる。データは、一般にネットワーク上の構成要素間で、パケットで転送される。パケットは、通常、それぞれ或る長さのデータワードから成るグループである。ネットワークが大きく、かつ複雑になるにつれて、効率的に、パケットのルーティング（経路指定）とストア（蓄積）を実行できることが、ますます重要となってくる。パケットは、あるネットワーク構成要素から、別のネットワーク構成要素にルーティングを行う処理の間、一時的に蓄積されることが多い。この理由は、異なる速度でデータを転送するポート間の速度整合のため、および、部分的には出力トラフィック分配のランダム性のためである。したがって、パケットの蓄積すなわちバッファリングは、スイッチング機能の一構成部分である。バッファリングは、スイッチ回路の一部である（スイッチ回路と同じダイ上の）メモリ内か、あるいはスイッチ回路とは別個のメモリ上で行われる。バッファ・メモリは、１つのポートと結び付けられるか、あるいは、いくつかのポートで共用される。
データ・パケットが、ルーティングの間に蓄積されるときには、メモリアクセスが、遅れの原因、それゆえ、ネットワーク性能劣化の原因とならないように、記憶装置すなわちメモリに、高速に、かつ効率的にアクセスすることが重要である。
ネットワーク・スイッチは、ネットワーク構成要素間のパケットのルーティングと蓄積を処理する装置である。ネットワーク・スイッチは、データをスイッチに送り、またスイッチからデータを受取る複数のネットワーク構成要素に接続するために、入力ポートと出力ポートを含む。スイッチを使用するネットワーク構成要素は、スイッチのクライアントとして知られている。単一スイッチは、異なる速度でデータを送る複数のクライアントからのデータを蓄積するために、単一の記憶装置を使用する。メモリ帯域幅を最大にするようなやり方で、異なるデータ転送速度性能の複数のクライアントによるメモリ・アクセスを処理することが、ネットワーク・スイッチにとって重要である。とはいえ、ネットワーク・スイッチのアーキテクチュアを設計するときに、メモリ帯域幅を最大にする必要性は、他の関係機能での必要性と競合する。例えば、クライアントからバッファ・メモリへのデータ経路を広げると、メモリ帯域幅は増すが、ただし、余分のハードウェアと追加的な相互接続という犠牲が払われることになる。それゆえ、スイッチのアーキテクチュアを、それが効率的にも、経済的にも機能するように設計する際のトレードオフとなる。
発明の概要
ネットワーク・システムにおいて、共用メモリへのアクセスを制御する方法と装置が開示される。この装置は、少なくとも１つの高速ポート・インタフェース回路をみ、この高速ポート・インタフェース回路は、第１の幅のセグメントで第１のデータ転送速度にて、ネットワーク・クライアントからデータ、アドレス、コマンドの情報を順次に受取るように構成された高速入力ポート・インタフェースを備えている。高速入力ポート・インタフェースそれぞれは、データおよびアドレスの情報を一時的に蓄積するように構成された高速インタフェース・レジスタを備えている。さらに、それぞれの高速入力ポート・インタフェースは、コマンド解読回路も備え、そのコマンド解読回路は、コマンド情報を受取って、それに応じて、データとアドレスの情報のセグメントを、高速インタフェース・レジスタが一杯になるまで高速インタフェース・レジスタに順次に格納するよう構成され、その高速インタフェース・レジスタは共用メモリと並行して読み出されるように構成されている。さらに、この装置は、少なくとも１つの低速ポート・インタフェース回路も含み、それぞれの低速ポート・インタフェース回路は、第１の幅のセグメントで第２のデータ転送速度にて、ネットワーク・クライアントからデータ、アドレス、コマンドの情報を受取り、このデータ、アドレス、コマンドの情報を、複数の低速ポート・インタフェース回路で共用されている記憶回路に送るように構成されている。共用記憶回路は、複数の低速インタフェース・レジスタを備え、そこでは、データ・セグメントが、低速インタフェース・レジスタの１つに順次に格納され、同時に、別の低速インタフェース・レジスタの内容が、共用メモリと並行して、読出される。
【図面の簡単な説明】
図１は、本発明の一実施形態によるメモリ・コントローラを含むネットワーク・スイッチ要素のブロック図である。
図２は、本発明の一実施形態による共用バッファ・メモリ・コントローラ（ＢＭＣ）のブロック図である。
図３は、本発明の一実施形態による高速／構成可能ポート・インタフェースのブロック図である。
図４は、本発明の一実施形態による低速ポート・インタフェースのブロック図である。
図５は、本発明の一実施形態による第１レベルのアービタの書込み部分のブロック図である。
図６は、本発明の一実施形態による第１レベルのアービタの読取り部分のブロック図である。
図７は、本発明の一実施形態による第２レベルのアービタ／スケジューラのブロック図である。
図８は、本発明の一実施形態による多重レベル・アービトレーションのブロック図である。
詳細な説明
ネットワーク・クライアントが共用バッファ・メモリにアクセスできるようにするメモリ・コントローラが記述される。一実施形態において、バッファ・メモリ・コントローラ（ＢＭＣ）は、スイッチ要素のダイ上にあって、一部、異なるデータ転送速度でデータを送るポートに別々のインタフェースを提供することにより、共用記憶装置の帯域幅を最大にする。さらに、メモリ帯域幅は、バッファ・メモリ・コントローラ内でのデータ処理のパイプラインを通じて、また共用バッファ・メモリへの読取り・書込み操作の効率的なスケジューリングにより、最適化される。
図１は、本発明の一実施形態によるスイッチ要素のアーキテクチャを図解した簡略ブロック図である。スイッチ要素１００は、中央処理装置（ＣＰＵ）インタフェース１０２、ネットワーク・インタフェース１０６、カスケード・インタフェース１０８、共用メモリ・マネージャ１１０を含む。共用メモリ・マネージャ１１０は、共用バッファ・メモリ・コントローラ（ＢＭＣ）１１２を含む。
パケットは、３つのインタフェース１０６、１０２、または１０８のうちの任意の１つを通じて、スイッチ要素１００に入るか、または、スイッチ要素１００から出る。要するに、ネットワーク・インタフェース１０６は、この実施形態により、イーサネット・プロトコルに基づいて動作して、ネットワーク（図には示されていない）からイーサネット・パケットを受取って、１つ、または複数の外部ポート（図には示されていない）を介して、ネットワーク上にイーサネット・パケットを送る。オプションのカスケード・インタフェース１０８は、スイッチング要素を相互接続して、さらに大きいスイッチを生成するために、１つ、または複数の内部リンク（図には示されていない）を含むことがある。
ＣＰＵは、ＣＰＵインタフェース１０２を介して、スイッチ要素１００にコマンドまたはパケットを送る場合がある。このようにして、ＣＰＵ上で実行する１つ、または複数のソフトウェア処理は、外部の（新たなエントリの追加および不所望のエントリの無効ないし削除などを行う）中継（フォワーディング）およびフィルタリング用データベース（図には示されていない）内のエントリを管理することができる。代わりの実施形態においては、ＣＰＵは、中継およびフィルタリング用データベースへの直接アクセスを備えていてもよい。いずれにせよ、パケットを中継する目的では、ＣＰＵインタフェース１０２のＣＰＵポートは、スイッチ要素１００への一般入力ポートに類似しており、単に別の外部ネットワーク・インタフェース・ポートであるかのように見える。
ネットワーク・インタフェース１０６、ＣＰＵインタフェース１０２、カスケード・インタフェース１０８は、共用メモリ・マネージャ１１０に接続されている。共用メモリ・マネージャ１１０は、効率的な集中型インタフェースを、入来パケットのバッファリングのために外部共用メモリに提供する。
この実施形態において、パケットは、共用メモリ・マネージャ１１０により、中央でバッファリングされて、管理される。共用メモリ・マネージャ１１０は、あらゆる入力ポートと出力ポートのインターフェイスを行い、それらのポートのために、動的なメモリ割当てと割当て解除それぞれを行う。入力パケット処理の間、外部共用メモリにおいて１以上のバッファが割当てられ、入来パケットが、例えばネットワーク・インタフェース１０６から受取られたコマンドに応じて、共用メモリ・マネージャ１１０により格納される。その後で、出力パケット処理の間、共用メモリ・マネージャ１１０は、外部共用メモリから、当該パケットを取り出し、もう使われないバッファの割当てを解除する。すべての出力ポートが、格納しているデータの伝送を完了するまで、バッファの割当てを解除できないようにするために、共用メモリ・マネージャ１１０は、好ましくは、バッファのオーナシップ（所有権）も追跡する。
本発明は、ファスト（高速）・イーサネットとギガビット・イーサネットのパケットのワイヤ・スピードのルーティングと中継（フォワーディング）を行うスイッチ要素（例えば、スイッチ要素１００）に含めることができる。しかし、これらのインタフェースは、他のネットワーク・プロトコルにも適合するように構成されることができる。さらに、諸機能は、上述のものとは異なるように区分化（パーティション化）され得ることもわかる。例えば、複数のユニットは、示された実施形態において、共用メモリ・マネージャ１１０と関係のある動的な割当て、割当て解除、追跡（トラッキング）を行うことができる。さらに、このスイッチ要素は、好ましくは集積度を高くし、ハードウェアにおいて性能面で重要な機能を実施する単一の特定用途向け集積回路（ＡＳＩＣ）であるが、代わりの実施形態では、２つ以上のＡＳＩＣ、あるいは他のタイプの論理素子またはサブシステムを備えたチップセットを含むことがある。最後に、ハードウェアとソフトウェア間での機能の区分化も変更できることがわかる。
図２は、一実施形態によるバッファ・メモリ・コントローラ（ＢＭＣ）１１２のブロック図である。この実施形態において、ＢＭＣ１１２は、ネットワーク・コンピュータ・システムにおいて、様々なポート向けの共用ＳＲＡＭメモリ（図には示されていない）へのアクセスを制御する。ＢＭＣ１１２は、このネットワークにおいて、他のポート（ここでは、高速ポートと呼ばれる）と比べて、相対的に遅いデータ転送速度で動作する低速ポート２０２向けの共用メモリへのアクセスを制御する。ホスト装置はまた、通常、ＰＣＩバスなどのローカルバスを使って、ＢＭＣ１１２のホスト・ポート２０４を通じて、共用メモリにアクセスする。高速ポート２２２も、ＢＭＣ１１２を通じて、共用メモリにアクセスする。高速ポート２２２は、低速２０２と比べて、相対的に速いデータ転送速度で動作する。構成可能ポート２２０は、ＢＭＣ１１２を通じて、共用メモリにアクセスする。構成可能ポート２２０は、低速ポート２０２のデータ転送速度で、または高速ポート２２２のデータ転送速度で動作するように構成できるポートである。本発明の一実施形態により、低速ポート２０２は、イーサネット・プロトコル、またはファスト・イーサネット・プロトコルにしたがって、動作する。ホスト・ポート２０４は、一実施形態において、ＰＣＩバス・プロトコルにしたがう。この実施形態により、高速ポート２２２は、ギガビット・イーサネット・プロトコルにしたがって動作する。低速ポート２０２のファスト・イーサネットの伝送速度は、１００Ｍｂｐｓである。一実施形態において、ホスト・ポート２０４に対しては、１００Ｍｂｐｓの帯域幅が割当てられる。ギガビット高速ポート２２２のデータ転送速度は、ファースト・イーサネットの低速ポート２０２やホスト・ポート２０４のデータ転送速度の１０倍である。本発明の一実施形態において、ＢＭＣ１１２は、３つの高速（ギガビット）ポート、５つのプログラマブル・ポート、１１の低速（ファスト・イーサネット）ポート、１つのホスト・ポートに接続される。
ＢＭＣ１１２は、低速ポート・インタフェース２０６と高速／構成可能ポート・インタフェース２０８を含む。以下でさらに詳しく説明されるとおり、ＢＭＣ１１２は、共用記憶装置の帯域幅を最大にするように、様々なやり方で、様々なデータ転送速度（この実施形態においては、ギガビットのポートと、ファスト・イーサネットのポート）にて動作するポート間のトランザクションを処理する。この帯域幅最大化の一面は、図２に示される通りの２つのレベルのアービトレーションである。具体的に言えば、低速ポート・インタフェース２０６は、アクセス・リクエストが第１レベルのアービタ２１０と第２レベルのアービタ／スケジューラ２１４を通過した後でのみ、共用メモリにアクセスすることができる。高速／構成可能ポート・インタフェース２０８のように、ギガビット速度で動作できるポート・インタフェースは、第２レベルのアービタ／スケジューラ２１４を通じて、共用記憶装置にアクセスする。第２レベルのアービタ／スケジューラ２１４は、共用メモリへのアクセスのリクエストのなかで、アービトレーションを行って、制御信号をＳＲＡＭコントローラ２１６に渡す。インタフェース・ポートに、共用メモリへのアクセスを与えると、第２レベルのアービタ／スケジューラ２１４は、ＳＲＡＭのアドレス、書込みデータ（ＷＤＡＴＡ）、書込みタグ（ＷＴＡＧ）の情報を送って、共用記憶装置に蓄積する。読取りパイプ２１８は、適正なポートが、共用記憶装置から、読取りデータ（ｒｄ＿ｄａｔａ）と読取りタグ（ｒｄ＿ｔａｇ）の情報を受取れるようにするポート識別名を一時的に蓄積することにより、共用記憶装置からの読取りを容易にしている。
図３は、１つの高速／構成可能ポート・インタフェース２０８に接続された１つの高速ポート２２２を示すブロック図である。さらに、高速／構成可能ポート・インタフェース２０８は、読取りパイプ２１８と第２レベルのアービタ／スケジューラ２１４にも接続されている。図に示される高速ポートは、高速出力ポート２２２ａと高速入力ポート２２２ｂを含む。図に示されるように、出力ポート２２２ａは、出力インタフェース回路３４２に接続され、また高速入力ポート２２２ｂは、高速入力インタフェース回路３４４に接続されている。高速入力ポート２２２ｂと、高速出力ポート２２２ａは、それらのポート自体のコマンドバス、アドレスバス、データバスを通じて、ＢＭＣ１１２の高速／構成可能ポート・インタフェース２０８とやり取りする。高速入力インタフェース回路３４４は、共用メモリへの書込み操作だけを行い、また出力インタフェース回路３４２は、共用メモリへの読取り操作だけを行う。
高速入力ポート２２２ｂに接続されたネットワーク・クライアントが、共用メモリへの書込み操作をリクエストすると、高速入力ポート２２２ｂは、データライン間で１６ビットのセグメントで、データ、アドレス、タグの情報を、図に示されるレジスタ３３０に転送する。さらに、この実施形態では、３つのコマンド・ビットが、レジスタ３２８に送られる。レジスタ３２８と３３０は、同期をとる目的で高速入力インタフェース回路３４４に含める。この実施形態において、データは、１２８ビットのワードで共用メモリに書込まれ、蓄積される。本発明により、コマンド・ビットを使用することで、この実施形態では、１２８ビットでなく１６ビットという、クライアントと共用メモリ間のさらに狭い物理インタフェースが達成される。これは、効率的なメモリ・アクセスを持ち続けながら、接続ハードウェアをさらに少なくすることを考慮に入れている。３つのコマンド・ビットは、高速入力インタフェース回路３４４に入来するデータの１６ビット・セグメントを、データ保持レジスタ３３４、アドレス保持レジスタ３３８、タグ保持レジスタ３４０宛てに送る。３つのコマンド・ビットは、高速入力ポート２２２ｂにおいて符号化され、またコマンド・デコーダ有限状態マシン（ｆｓｍ）３３２において復号される。一実施形態により、コマンド・ビットは、復号されて、ノー・オペレーション（無動作）、第１アドレス書込み、第２アドレス書込み、第１データ書込み（ｗｒ＿ｄａｔａ）、パケット最終ワード書込み、あるいは状態書込みを指示することができる。この実施形態により、高速入力ポート２２２ｂは、２つのｗｒ＿ａｄｄｒコマンドをＢＭＣ１１２に送って、１９ビットのアドレスを形成する。次に、高速入力ポート２２２ｂは、第１データ書込みのコマンドを送って、データバス上の第１の１６ビット・データセグメントを、高速入力インタフェース回路３４４に送る。このデータは、１６バイトのレジスタであるデータ保持レジスタ３３４に格納される。高速入力ポート２２２ｂは、保持レジスタ３３４が満たされるまで、７つの追加データｗｒ＿ｃｍｄ信号を送り続ける。次に、ｗｒ＿ｒｅｑを発生させて、第２レベルのアービタ／スケジューラ２１４に送る。同時に、書込み待ち（ｗｒ＿ｗａｉｔ）信号が、高速インタフェース・ポート２２２ｂに送られ、そこで、保持レジスタがビジーであって、これ以上データを受取れないことを示す。ｗｒ＿ｗａｉｔ信号は、コマンド・デコーダ有限状態マシン３３２から受取った「満杯」信号と、第２レベルのアービタ２１４からの書込み許可（ｗｒ＿ｇｎｔ）信号から、アンロード有限状態マシン３３６により発生させる。
第２レベルのアービタ／スケジューラ２１４は、この実施形態において、ラウンドロビン・アービトレーション方式を用いて、高速入力ポート２２２ｂへのアクセスを与える。第２レベルのアービタ／スケジューラ２１４は、このアドレス、データ、タグを、共用記憶装置に書込むようにスケジュールする。次に、アドレスとデータは、次のクロックサイクルにおいて、メモリに書込まれる。好適な実施形態において、ＳＲＡＭ技術が使用される。使用されるＳＲＡＭ技術は、完全パイプライン方式であるから、第２レベルのアービタ／スケジューラ２１４は、連続的な書込み操作をスケジュールできる。データ・パケットが終ると、高速入力ポート２２２ｂが、書込み状態コマンドを、この状態の情報といっしょに、高速入力インタフェース回路３４４に送る。次に、パケットメモリに書込まれる最後のデータと状態は、高速入力インタフェース回路３４４によりスケジュールされる。
出力インタフェース回路３４２は、共用メモリからの読取り操作のために、高速出力ポート２２２ａによる共用メモリへのアクセスを制御する。高速出力ポート２２２ａに接続されたネットワーク・クライアントが、共用メモリへの読取りアクセスを必要とするときには、高速出力ポート２２２ａは、レジスタ３０２と３０４に、それぞれ送られるコマンド・ビットとアドレス・ビットを形成する。レジスタ３０２と３０４は、同期目的で使用される。３つのコマンド・ビットは、コマンド・デコーダ有限状態マシン３０６に入って、復号される。これらのコマンド・ビットの復号化有効桁により、出力ポート・インタフェース回路３４２に入る１６ビットのアドレス・セグメントが、レジスタ３１０または３１２にロードされる。レジスタ３１０または３１２の一方は、現在のアドレスを保持し、またこれら２つのレジスタの他方は、次のパケットのアドレスを保持している。現在のアドレスを保持するレジスタは、現在のパケットのアドレスがメモリに書込まれるたびに、増分される。次のパケットの第１のアドレスは、別のレジスタで利用できるようにしておき、現在のパケットの最後のワードの書込みから、次のパケットの第１のワードの書込みまでの期間中、待ち時間を招かないようにしている。マルチプレクサ３１４は、次の読取りアドレス（ｒｄ＿ａｄｄｒ）として、第２レベルのアービタ／スケジューラ２１４に送られるように、適切なレジスタ３１０または３１２に格納された現在の１９ビットのアドレスを選択する。現在のアドレスまたは次のアドレスが、レジスタ３１０または３１２を満たすと、コマンド・デコーダ有限状態マシン３０６は、ロード有限状態マシン３０８に、適宜、現在の満杯信号（ｃｆｕｌｌ）、または次の満杯信号（ｎｆｕｌｌ）を送る。ロジック３２４は、同期目的でｒｄ＿ｔａｇを保持している、読取りパイプ２１８のレジスタ３２６を介して、そのメモリからｒｄ＿ｔａｇを受取る。ロジック３２４は、ｒｄ＿ｔａｇを使用して、ロード有限状態マシン３０８に向けて、パケット終了（ｅｏｐ）信号を発生させる。ロード有限状態マシン３０８は、第２レベルのアービタ／スケジューラ２１４に向けて、読取りリクエスト（ｒｄ＿ｒｅｑ）信号を発生させる。共用メモリへのアクセスのためのアービトレーションが完了すると、第２レベルのアービタ／スケジューラ２１４は、読取り許可（ｒｄ＿ｇｎｔ）をロード有限状態マシン３０８に送る。アンロード有限状態マシン３２２は、データを、共用メモリから、読取りパイプ２１８を経て、高速出力ポート２２２ａにアンロードする操作を調整する。共用メモリからの読取りデータは、並列にしたレジスタ３１８または３２０の１つに、１２８ビットのワードで転送される。レジスタ３１８または３２０の１つは、メモリから、並行にロードされた後で、マルチプレクサ３１６を通じて、１６ビットのセグメントでアンロードされる。アンロード有限状態マシン３２２とｒｄ＿ｔａｇからの情報で指示されるとおり、出力インタフェース回路３４２は、読取りパイプ２１８からのデータの二重バッファリングを効率的に処理して、共用メモリの帯域幅を最適化できるようにし、同時に、高速出力ポート２２２ａへの狭いデータ・インタフェース（１６ビット）を維持する。アンロード有限状態マシン３２２は、高速出力ポート２２２ａに向けて、コマンドとｒｄ＿ｗａｉｔ信号を発生させる。ｒｄ＿ｗａｉｔ信号は、フロー制御信号の働きをして、ｒｄ＿ｗａｉｔ信号が消されるまで、さらなるｒｄ＿ｒｅｑ信号を送るのを待つように、高速出力ポート２２２ａに知らせる。
図４は、低速ポート・インタフェース２０６のブロック図である。図４は、低速ポート・インタフェース２０６を、低速ポート２０２の１つに接続することを示している。それぞれの低速ポート２０２は、図に示されるとおり、低速出力ポート２０２ａと低速入力ポート２０２ｂを有する。低速ポート・インタフェース２０６は、読取りパイプ２１８、及び、第１レベルのアービタ２１０とやり取りする。本発明により、異なるデータ転送速度で動作するネットワーク・クライアントに、共用メモリへの効率的なアクセスが与えられる。その理由の一部として、低速クライアントから低速入力ポートを通じて共用メモリに書込まれているデータは、物理資源を共用するが、一方、高速入力ポートを通るｗｒ＿ｄａｔａは物理資源を共用しないからである。説明中の実施形態における配置構成は、遅いデータの扱いは、少ない専用ハードウェア資源で効率的に扱うのと丁度ど同じように行えるという事実を利用した設計選択を表している。図４に示されるとおり、低速ポート・インタフェース２０６は、低速入力ポート２０２ｂを経てやってくるｗｒ＿ｄａｔａに対しては、バッファリングすなわち制御回路を有さない。すなわち、低速ポート・インタフェース２０６は、図３の高速入力インタフェース回路３４４に類似した回路を有さない。代わりに、低速クライアント入力ポートｒｄ＿ｒｅｑコマンドとデータ信号は、直接に第１レベルのアービタ２１０に送られ、またｗｒ＿ｇｎｔ信号は、直接に第１レベルのアービタ２１０から、低速入力ポート２０２ｂに送られる。
出力インタフェース回路４４２は、１つの例外を除き、出力インタフェース回路３４２に関して述べられるとおりに正確に動作する。低速ポート・インタフェース２０６の出力インタフェース回路４４２は、１つではなくて、２つのレベルのアービトレーションにより、共用メモリにアクセスしなければならない。具体的に言えば、ｒｄ＿ｒｅｑ信号と、ｒｄ＿ａｄｄｒ信号が、第１レベルのアービタ２１０に送られる。アービトレーションが完了すると、第２レベルのアービタ／スケジューラ２１４から、ｒｄ＿ｇｎｔ信号が受取られる。
図５は、第１レベルのアービタ２１０のうち、共用メモリへの書込み操作を処理する部分の詳細を示すブロック図である。第１レベルの書込みアービタ２１０ａは、アービトレーション回路５１０と、それぞれコマンドとデータのマルチプレクサ５１２と５１４を含む。アービトレーション回路５１０は、この実施形態において、１００Ｍｂｐｓで動作する１１のポートからｗｒ＿ｒｅｑを受取る。この実施形態において、アービトレーション回路５１０はまた、１００Ｍｂｐｓポートのデータ転送速度で動作する１つのホスト・ポートからｗｒ＿ｒｅｑを受取る。他の実施形態において、記述された実施形態のものとは異なるプロトコルにしたがって、異なるデータ転送速度で動作する様々なタイプの様々な数のポートが、アービトレーション回路５１０により処理される。アービトレーション回路５１０は、ラウンドロビン・アービトレーション方式を用いて、次にアクセスが与えられる特定のポートを選択する。許可信号５０４は、第２レベルのアービタ／スケジューラ２１４から、第１レベルの書込みアービタ２１０ａを経て、個々のリクエスト・ポートに送られる個々のｗｒ＿ｇｎｔ信号である。コマンドライン５０６はそれぞれ、１つの低速入力ポートから出て、コマンド情報を、３ビットのセグメントでマルチプレクサ５１２に転送する。アービトレーションが完了すると、アービトレーション回路５１０からの選択信号により、リクエスト低速ポートの１つからのコマンド情報をロード状態マシン５１６に転送することができる。データライン５０８はそれぞれ、１つの低速入力ポートから出る。データライン５０８はそれぞれ、データ情報を１６ビットのセグメントでマルチプレクサ５１４に転送する。アービトレーションが完了すると、これらのポートの１つからのコマンド情報が、アービトレーション回路５１０からの選択信号により、マルチプレクサ５１４から転送される。ロード状態マシン５１６の中で復号されたコマンド・ビットで指示される通りに、データは、１６ビットのセグメントで、マルチプレクサ５１４から、ｗｒ＿ｄａｔａレジスタ５２０または５２２の１つに、あるいはレジスタ５２６と５２８に転送される。レジスタ５２０と５２２は、１２８ビット・ワードの書込みデータ（ｆｅ＿ｗｒ＿ｄａｔａ）を集めるために使用される。レジスタ５２８は、１６ビットの書込みタグ（ｆｅ＿ｗｒ＿ｔａｇ）を集めるために使用される。レジスタ５２６は、１９ビットの書込みアドレス（ｆｅ＿ｗｒ＿ａｄｄｒ）を集めるために使用される。アンロード状態マシン５１８の制御のもとに、マルチプレクサ５２４は、レジスタ５２０または５２２の１つから１２８ビットのデータワードを送って、共用メモリに書込む。アンロード状態マシン５１８は、書込みリクエスト（ｆｅ＿ｗｒ＿ｒｅｑ）を第２レベルのアービタ／スケジューラ２１４に送って、第２レベルのアービタ／スケジューラ２１４から、書込み許可（ｆｅ＿ｗｒ＿ｇｎｔ）信号を受取る。
図６は、第１レベルのアービタ２１０の読取りアービタ部分２１０ｂのブロック図である。第１レベルの読取りアービタ２１０ｂは、アービトレーション回路６０８とマルチプレクサ６１０を含む。読取りリクエスト（ｒｄ＿ｒｅｑ）ライン６０２は、１１の低速（この実施形態において、ファスト・イーサネット）出力ポートと、１つのホスト出力ポートから、リクエスト信号を伝える。読取り許可（ｒｄ＿ｇｎｔ）ライン６０４は、ｒｄ＿ｇｎｔ信号を、アービトレーション回路６０８から、読取り操作をリクエストする個々のポートに伝える。読取りアドレス（ｒｄ＿ａｄｄｒ）ライン６０６は、リクエスト・ポートから、１９ビットの読取りアドレスを伝える。１つの１９ビット読取りアドレス（ｆｅ＿ｒｄ＿ａｄｄｒ）は、アービトレーション回路６０８からマルチプレクサ６１０への選択信号により、第２レベルのアービタ／スケジューラ２１４に転送される。アービトレーション回路６０８は、ラウンドロビン・アービトレーションを完了すると、リクエスト・ポートの１つから、単一の読取りリクエスト（ｆｅ＿ｒｄ＿ｒｅｑ）を転送する。アービトレーション回路６０８は、第２レベルのアービタ／スケジューラ２１４から、読取り許可（ｆｅ＿ｒｄ＿ｇｎｔ）信号を受取る。
図７は、第２レベルのアービタ／スケジューラ２１４のブロック図である。図７は、第２レベルのアービタ／スケジューラ２１４に接続されたＳＲＡＭコントローラも示している。第２レベルのアービタ／スケジューラ２１４は、アービトレーション回路７０２と、ｗｒ＿ａｄｄｒ、ｒｄ＿ａｄｄｒ、ｗｒ＿ｄａｔａ、ｗｒ＿ｔａｇを受取るためのマルチプレクサ７０４、７０６、７０８、７１０を含む。リクエストライン７２８は、ｒｄ＿ｒｅｑとｗｒ＿ｒｅｑをアービトレーション回路７０２に送る。８つのｗｒ＿ｒｅｑ信号は、アービトレーション回路７０２に送られる。この実施形態において、８つのｗｒ＿ｒｅｑ信号は、８つの高速（ギガビット・イーサネット）ポート、すなわち、３つのギガビット・ポートと、ギガビット・ポートとして構成される５つの構成可能ポートを表している。１つのｆｅ＿ｗｒ＿ｒｅｑ信号は、第１レベルのアービタ２１０からアービトレーション回路７０２に入る。アービトレーション回路７０２はまた、前述の８つのｗｒ＿ｒｅｑ信号に対応する８つの読取りリクエスト（ｒｄ＿ｒｅｑ）信号も受取る。最後に、アービトレーション回路７０２は、第１レベルのアービタ２１０から、１つのｆｅ＿ｒｄ＿ｒｅｑを受取る。アービトレーション回路７０２は、この実施形態において、ラウンドロビン・アービトレーションを実行して、適宜、ｆｅ＿ｒｄ＿ｇｎｔ信号、ｒｄ＿ｇｎｔ信号、ｆｅ＿ｗｒ＿ｇｎｔ信号、ｗｒ＿ｇｎｔ信号を出す。さらに、アービトレーション回路７０２は、適宜、書込みコマンド（ｗｒ＿ｃｍｄ）信号と読取りコマンド（ｒｄ＿ｃｍｄ）信号を、ＳＲＡＭコントローラ２１６に送る。アービトレーションが完了すると、アービトレーション回路７０２は、現在の操作で求められるように、書込み選択（ｗｒ＿ｓｅｌ）信号または読取り選択（ｒｄ＿ｓｅｌ）信号を、図に示されるマルチプレクサ７０４、７０６、７０８、７１０に送る。Ｗｒ＿ａｄｄｒライン７３０は、複数のｗｒ＿ａｄｄｒ信号と１つのｆｅ＿ｗｒ＿ａｄｄｒ信号をマルチプレクサ７０４に送る。
図に示される実施形態において、リクエスト信号７２８に関して説明されるとおり、８つのギガビット・ポートからのｗｒ＿ａｄｄｒ信号（直接に送られる）と、第１レベルのアービタ２１０からの１つのｆｅ＿ｗｒ＿ａｄｄｒ信号が、マルチプレクサ７０４で受取られる。同様に、ｒｄ＿ａｄｄｒ信号とｆｅ＿ｒｄ＿ａｄｄｒ信号が、ｒｄ＿ａｄｄｒライン７３２上のマルチプレクサ７０６に送られる。Ｗｒ＿ｄａｔａ信号とｆｅ＿ｗｒ＿ｄａｔａ信号が、ｗｒ＿ａｄｄｒライン７３４上のマルチプレクサ７０８に送られる。複数のＷｒ＿ｔａｇ信号と１つのｆｅ＿ｗｒ＿ｔａｇ信号が、ｗｒ＿ｔａｇライン７３６上のマルチプレクサ７１０に送られる。アービトレーションが完了すると、マルチプレクサ７１２は、１９ビットのｗｒ＿ａｄｄｒまたは１９ビットのｒｄ＿ａｄｄｒの１つを選択して、レジスタ７１４とＳＲＡＭコントローラ２１６に送る。さらに、アービトレーションが完了すると、ライン７３４の１つのｗｒ＿ｄａｔａが、同期レジスタ７１６、７１８、７２２を経て、共用メモリに送られる。１６ビットのｗｒ＿ｔａｇ情報が、ライン７３６の１つから選択されて、同期レジスタ７２２、７２４、７２６を通じて、ＳＲＡＭタグ情報として送られる。
好適な実施形態において、ゼロのバス・ターンアラウンドをサポートする完全パイプラインＳＲＡＭが、共用メモリとして使用される。それゆえ、読取りサイクルが書込みサイクルの後にくるときには、待ち時間は発生しない。このことから、第２レベルのアービタ／スケジューラ２１４は、どんな順序でもリクエストをスケジュールすることができる。一実施形態において、第２レベルのアービタ／スケジューラ２１４は、読取りリクエストをまとめ、その後に書込みリクエストが続くようにスケジュールする。この実施形態においては、読取りトランザクションと書込みトランザクションを交互に行うときに性能劣化を受ける記憶装置が用いられる場合に、そのような劣化が最小限に抑えられる。
図８は、一実施形態による共用メモリにアクセスするための２レベル・アービトレーションの簡略ブロック図である。この実施形態において、読取りリクエストと書込みリクエストが、３つの高速ポート２２２、５つの構成可能ポート２２０、１１の低速ポート２０２、１つのホストポート２０４からサポートされる。図８に示されるとおり、第１レベルのアービタ２１０と第２レベルのアービタ／スケジューラ２１４は、高速ポートと低速ポート（この図では、ギガビット・イーサネット（ＧＥ）とファスト・イーサネット（ＦＥ）と標記されている）から、読取りリクエストと書込みリクエストを処理する。ＦＥ読取り（ＦＥｒｄ）リクエスト信号８０６とホスト読取り処理（ＨＲＰ）リクエスト信号８０８は、第１レベルの読取りアービタ２１０ｂにより、ラウンドロビン方式でアービトレーションを行う。このアービトレーションの結果として、単一のＦＥｒｄリクエストが、第２レベルのアービタ／スケジューラ２１４に送られる。第２レベルのアービタ／スケジューラ２１４は、第１レベルの読取りアービタ２１０ｂで行われたアービトレーションの結果と、３つのＧＥ読取り（ＧＥｒｄ）リクエスト８０２、５つの構成可能ＧＥ／ＦＥ読取り（ＧＥ／ＦＥｒｄ）リクエスト８０４の間で、アービトレーションを行う。書込みリクエストの２レベル・アービトレーションは、同様なやり方で処理される。図で示されるとおり、第１レベルの書込みアービタ２１０ａは、ＦＥ書込み（ＦＥｗｒ）リクエスト８１４と、ホスト伝送処理（ＨＴＰ）リクエスト８１６との間で、アービトレーションを行う。第２レベルのアービタ／スケジューラ２１４は、第１レベルの書込みアービタ２１０ａで行われたアービトレーションの結果と、ＧＥ書込み（ＧＥｗｒ）リクエスト８１０とＧＥ／ＦＥ書込み（ＧＥ／ＦＥｗｒ）リクエスト８１２の間で、アービトレーションを行う。このようにして、メモリ帯域幅は最適化されて、資源が保存される。
図８に示される実施形態において、共用メモリにアクセスするリクエストは、図の左から右へと順番にスケジュールされ、まず最初に読取りリクエストがきて、その後で、書込みリクエストが続く。このような構成は、読取りアクセスと書込みアクセスを交互に行うときに待ち状態を招くメモリの待ち状態を最小限に抑える。他の実施形態は、他のやり方で、読取りと書込みの順序を取り決め、さらに、２レベル・アービトレーション方式の効率向上によっても利益を得る。
本発明は、特定の模範的な実施形態に関して述べられてきた。しかし、様々な変形や変更が、請求の範囲に記載した発明の精神と範囲から逸脱することなしに、当業者により行われ得るものである。例えば、本発明は、異なるデータ転送速度で共用メモリにアクセスする２つのタイプのポートへの使用においても、２つの異なるデータ転送速度においても、実施形態の特定のデータ転送速度に限定されることはない。本発明は、イーサネット・ネットワーク・プロトコルへの使用に限定されることはない。本発明は請求の範囲のみで定義される。
【図１】
0004124491.tif 000002
【図２】
0004124491.tif 000003
【図３】
0004124491.tif 000004
【図４】
0004124491.tif 000005
【図５】
0004124491.tif 000006
【図６】
0004124491.tif 000007
【図７】
0004124491.tif 000008
【図８】
0004124491.tif 000009