(57)【要約】内部バスと、１つ以上の外部バスを有する外部バスアーキテクチャの間のネットワークインタフェースは、外部インタフェースエンジンと内部インタフェースを有する。外部インタフェースエンジン(EIE)は外部バスアーキテクチャに結合され、外部インタフェースエンジンは、１つ以上のバスプロトコルに従って外部バスアーキテクチャで通信する。内部インタフェースは外部インタフェースエンジンと内部バスに結合され、内部インタフェースは、内部バスと外部バスアーキテクチャとの間のネットワークデータをバッファする。一実施例では、内部インタフェースは、内部バスに結合された内部インタフェース(IIE)を有し、IIEは、ネットワークデータに対して複数のキューを定める。中間メモリモジュールがIIEとEIEに結合され、中間メモリモジュールは、複数のキューに従ってネットワークデータを収集する。
2005532632.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ内部バスと、１つ以上の外部バスを有する外部バスアーキテクチャとの間のネットワークインタフェースであって、
前記外部バスアーキテクチャに結合され、１つ以上のバスプロトコルに従って前記外部バスアーキテクチャで通信する外部インタフェースエンジンと、
前記外部インタフェースエンジンと前記内部バスに結合され、特定の論理区画に従って前記内部バスと前記外部バスアーキテクチャとの間でネットワークデータをバッファする内部インタフェースと
を有するネットワークインタフェース。
【請求項２】
請求項１に記載のネットワークインタフェースであって、
前記内部インタフェースが、
前記内部バスに結合され、前記ネットワークデータに対して複数のキューを定める内部インタフェースエンジンと、
前記内部インタフェースエンジンと前記外部インタフェースエンジンに結合され、前記複数のキューに従って前記ネットワークデータを収集する中間メモリモジュールと
を有するネットワークインタフェース。
【請求項３】
請求項２に記載のネットワークインタフェースであって、
前記内部インタフェースエンジンが、
前記外部インタフェースエンジンと前記中間メモリモジュールに結合されたマルチチャネルのレジスタ構成と、
前記内部バスに結合された内部バスインタフェースアーキテクチャと、
前記内部バスインタフェースアーキテクチャと前記中間メモリモジュールに結合され、前記内部バスインタフェースアーキテクチャが前記内部バスを介して前記中間メモリモジュールと複数のアドレス可能位置との間で前記ネットワークデータを直接転送することを可能にするダイレクトメモリアクセス(DMA)エンジンアーキテクチャと
を有するネットワークインタフェース。
【請求項４】
請求項３に記載のネットワークインタフェースであって、
前記DMAエンジンアーキテクチャが、
マスターDMAエンジンと、
スレーブDMAエンジンと
を有するネットワークインタフェース。
【請求項５】
請求項４に記載のネットワークインタフェースであって、
前記マスターDMAエンジンが前記マルチチャネルのレジスタ構成に結合され、前記マスターDMAエンジンが前記レジスタ構成からキューの優先データとDMA設定情報を受信するネットワークインタフェース。
【請求項６】
請求項３に記載のネットワークインタフェースであって、
前記内部バスインタフェースが、
内部バスマスターインタフェースと、
内部バススレーブインタフェースと、
前記内部バススレーブインタフェースに結合され、前記複数のアドレス可能位置に関するデータを格納する複数のローカル制御レジスタと
を有するネットワークインタフェース。
【請求項７】
請求項３に記載のネットワークインタフェースであって、
前記マルチチャネルのレジスタ構成が、
前記外部インタフェースエンジンと前記中間メモリモジュールに結合された一式の受信レジスタと、
前記外部インタフェースエンジンと前記中間メモリモジュールに結合された一式の送信レジスタと、
前記受信レジスタと前記送信レジスタに結合され、前記キューを優先順位付けて、前記ネットワークデータに対してDMA設定情報を定める制御ロジックと
を有するネットワークインタフェース。
【請求項８】
請求項２に記載のネットワークインタフェースであって、
前記中間メモリモジュールが、
ランダムアクセスメモリ(RAM)と、
前記RAMと前記外部インタフェースエンジンと前記内部インタフェースエンジンに結合され、前記内部インタフェースエンジンにより定められたキューに基づいて、バッファ区画を確立するRAMコントローラと
を有するネットワークインタフェース。
【請求項９】
請求項８に記載のネットワークインタフェースであって、
前記バッファ区画が可変であるネットワークインタフェース。
【請求項１０】
請求項８に記載のネットワークインタフェースであって、
前記RAMコントローラが、ネットワークの無送信期間(dry  spell)が前記RAMのネットワークデータを破棄することを妨げるように、ハードウェアベースの無送信期間(dry  spell)機構を使用するネットワークインタフェース。
【請求項１１】
請求項８に記載のネットワークインタフェースであって、
前記RAMコントローラが、ネットワークのバーストによりネットワークデータが前記RAMによりドロップされることを妨げるように、ハードウェアベースのオーバーフロー機構を使用するネットワークインタフェース。
【請求項１２】
請求項２に記載のネットワークインタフェースであって、
前記キューが、相互に無関係に前記ネットワークデータを転送するネットワークインタフェース。
【請求項１３】
請求項１に記載のネットワークインタフェースであって、
前記ネットワークデータがパケットを有し、
前記ネットワークインタフェースが、バッチに基づく処理モデルに基づいて前記パケットをバッファするネットワークインタフェース。
【請求項１４】
請求項１３に記載のネットワークインタフェースであって、
前記内部インタフェースがパケットをフレーム化するネットワークインタフェース。
【請求項１５】
請求項１に記載のネットワークインタフェースであって、
前記外部インタフェースエンジンが、
第１のバスプロトコルに従って前記外部バスアーキテクチャで通信する第１の外部バスインタフェースと、
第２のバスプロトコルに従って前記外部バスアーキテクチャで通信する第２の外部バスインタフェースと
を有するネットワークインタフェース。
【請求項１６】
請求項１５に記載のネットワークインタフェースであって、
前記第１の外部バスインタフェースが、第１の外部ダイレクトメモリアクセス(DMA)エンジンを有するネットワークインタフェース。
【請求項１７】
請求項１５に記載のネットワークインタフェースであって、
前記第２の外部バスインタフェースが、第２の外部ダイレクトメモリアクセス(DMA)エンジンを有するネットワークインタフェース。
【請求項１８】
ネットワークインタフェースの外部インタフェースエンジンと内部バスとの間に配置された内部インタフェースであって、
前記内部バスに結合され、ネットワークデータに対して複数のキューを定める内部インタフェースエンジンと、
前記内部インタフェースエンジンと前記外部インタフェースエンジンに結合され、前記複数のキューに従って前記ネットワークデータを収集する中間メモリモジュールと
を有する内部インタフェース。
【請求項１９】
請求項１８に記載の内部インタフェースであって、
前記内部インタフェースエンジンが、
前記外部インタフェースエンジンと前記中間メモリモジュールに結合されたマルチチャネルのレジスタ構成と、
前記内部バスに結合された内部バスインタフェースアーキテクチャと、
前記内部バスインタフェースと前記中間メモリモジュールに結合され、前記内部バスインタフェースアーキテクチャが前記内部バスを介して前記中間メモリモジュールと複数のアドレス可能位置との間で前記ネットワークデータを直接転送することを可能にするダイレクトメモリアクセス(DMA)エンジンアーキテクチャと
を有する内部インタフェース。
【請求項２０】
請求項１９に記載の内部インタフェースであって、
少なくとも１つのアドレス可能位置がプロセッサの一部であり、前記プロセッサが前記内部バスに結合された内部インタフェース。
【請求項２１】
請求項２０に記載の内部インタフェースであって、
前記内部バスインタフェースアーキテクチャが、プロセッサのハンドオフプロトコルに従って前記内部バスに結合されたプロセッサと通信する内部インタフェース。
【請求項２２】
請求項１８に記載の内部インタフェースであって、
前記中間メモリモジュールが、
ランダムアクセスメモリ(RAM)と、
前記RAMと前記外部インタフェースエンジンと前記内部インタフェースエンジンに結合され、前記内部インタフェースエンジンにより定められたキューに基づいて、バッファ区画を確立するRAMコントローラと
を有する内部インタフェース。
【請求項２３】
請求項２２に記載の内部インタフェースであって、
前記バッファ区画が可変である内部インタフェース。
【請求項２４】
内部バスと、１つ以上の外部バスを有する外部バスアーキテクチャとの間のネットワークインタフェースであって、
第１のバスプロトコルに従って前記外部バスアーキテクチャで通信する第１の外部バスインタフェースと、第２のバスプロトコルに従って前記外部バスアーキテクチャで通信する第２の外部バスインタフェースとを有する外部インタフェースエンジンと、
ランダムアクセスメモリ(RAM)と、
前記RAMと前記外部インタフェースエンジンに結合され、複数のキューに基づいてバッファ区画を確立するRAMコントローラと、
前記第１の外部バスインタフェースと前記第２の外部バスインタフェースと前記RAMコントローラに結合され、前記複数のキューを定めるキューデータを生成するマルチチャネルのレジスタ構成と、
前記内部バスに結合された内部バスインタフェースアーキテクチャと、
前記内部バスインタフェースアーキテクチャと前記RAMコントローラに結合され、前記内部バスインタフェースアーキテクチャが前記内部バスを介して前記RAMと複数のアドレス可能位置との間でネットワークデータを直接転送することを可能にするダイレクトメモリアクセス(DMA)エンジンアーキテクチャと
を有するネットワークインタフェース。
【請求項２５】
請求項２４に記載のネットワークインタフェースであって、
少なくとも１つのアドレス可能位置が、プロセッサのオンチップメモリの一部であり、前記プロセッサが前記内部バスに結合されたネットワークインタフェース。
【請求項２６】
請求項２５に記載のネットワークインタフェースであって、
前記内部バスインタフェースアーキテクチャが、プロセッサのハンドオフプロトコルに従って前記プロセッサと通信するネットワークインタフェース。
【請求項２７】
プロセッサ内部バスと、１つ以上の外部バスを有する外部バスアーキテクチャとの間のネットワークデータの転送に対応する方法であって、
１つ以上のバスプロトコルに従って前記外部バスアーキテクチャで通信し、
内部インタフェースにおいて前記内部バスと前記外部バスアーキテクチャとの間でネットワークデータをバッファし、
プロセッサのハンドオフプロトコルに従って前記プロセッサと前記内部バスで通信することを有する方法。
【請求項２８】
請求項２７に記載の方法であって、
前記ネットワークデータに対して複数のキューを定め、
前記複数のキューに従って中間メモリモジュールに前記ネットワークデータを収集することを更に有する方法。
【請求項２９】
請求項２８に記載の方法であって、
前記内部インタフェースが前記内部バスを介して前記中間メモリモジュールと複数のアドレス可能位置との間で前記ネットワークデータを直接転送することを可能にすることを更に有する方法。
【請求項３０】
請求項２８に記載の方法であって、
各キューに所定のクラスのネットワークデータを割り当て、
所定のクラス毎に送信の優先度を定めることを更に有する方法。
【請求項３１】
請求項２８に記載の方法であって、
前記キューに基づいて前記中間メモリモジュールにバッファ区画を確立することを更に有する方法。
【請求項３２】
請求項３１に記載の方法であって、
前記ネットワークデータのスループット要件に基づいて前記区画のサイズを変更することを更に有する方法。
【請求項３３】
請求項２７に記載の方法であって、
第１のバスプロトコルに従って第１の外部バスインタフェースと前記外部バスアーキテクチャで通信し、
第２のバスプロトコルに従って第２の外部バスインタフェースと前記外部バスアーキテクチャで通信することを更に有する方法。
【請求項３４】
請求項２７に記載の方法であって、
可変のビットオーダー又はバイトオーダーに従って前記ネットワークデータをバッファすることを更に有し、
前記可変のビットオーダー又はバイトオーダーは、前記外部バスアーキテクチャで通信するために前記第１のバスプロトコルが使用されているか、又は前記第２のバスプロトコルが使用されているかに前記内部バスでの通信を無関係にすることを可能にする方法。
【請求項３５】
１つ以上のバスプロトコルに従って外部バスアーキテクチャで通信し、
内部インタフェースにおいて内部バスと外部バスアーキテクチャとの間でネットワークデータをバッファし、
プロセッサのハンドオフプロトコルに従ってプロセッサと前記内部バスで通信すること
をプロセッサにより実行可能な一式の命令を格納する機械読取可能媒体。
【請求項３６】
請求項３５に記載の媒体であって、
前記命令が、
前記ネットワークデータに対して複数のキューを定め、
前記複数のキューに従って中間メモリに前記ネットワークデータを収集すること
を更に実行可能な媒体。
【請求項３７】
請求項３６に記載の媒体であって、
前記命令が、
前記内部インタフェースが、前記内部バスを介して前記中間メモリモジュールと複数のアドレス可能位置との間で前記ネットワークを直接転送することを可能にすること
を更に実行可能な媒体。
【請求項３８】
請求項３６に記載の媒体であって、
前記命令が、
各キューを所定のクラスのネットワークデータに割り当て、
所定のクラス毎に送信の優先度を定めること
を更に実行可能な媒体。
【請求項３９】
内部バスを有するプロセッサと、
１つ以上の外部バスを有する外部バスアーキテクチャと、
前記内部バスと前記外部バスアーキテクチャとの間のネットワークインタフェースと
を有するネットワーキングアーキテクチャであって、
前記ネットワークインタフェースは、前記外部バスアーキテクチャに結合された外部インタフェースエンジンを有し、
前記外部インタフェースエンジンは、１つ以上のバスプロトコルに従って前記外部バスアーキテクチャで通信し、
前記ネットワークインタフェースは、前記外部インタフェースエンジンと前記内部バスに結合され、前記内部バスと前記外部バスアーキテクチャとの間でネットワークデータをバッファする内部インタフェースを更に有するネットワーキングアーキテクチャ。
【請求項４０】
請求項３５に記載のアーキテクチャであって、
前記内部バスに結合され、前記ネットワークデータに対して複数のキュー定める内部インタフェースエンジンと、
前記内部インタフェースエンジンと前記外部インタフェースエンジンに結合され、前記複数のキューに従って前記ネットワークデータを収集する中間メモリモジュールと
を有するアーキテクチャ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施例は、概してコンピュータネットワーキングアーキテクチャに関するものである。具体的には、本発明の実施例は、プロセッサ内部バスと拡張ネットワーキング性能を可能にする外部バスとの間のネットワークインタフェースに関するものである。
【背景技術】
【０００２】
非常に競争的なコンピュータ業界では、高速な処理と更なる機能に対するトレンドが十分に裏付けられている。このトレンドは消費者に望ましいが、コンピュータ設計と製造者に多数の課題を提示している。１つの懸念は、特に近代社会で急速に増加するインターネットの人気の観点から、ネットワーキングアーキテクチャに関するものである。チップ上システム(system-on-chip)の一般的なネットワーキングアーキテクチャが図１に10で図示されている。ネットワーキングプロセッサ12が内部バス14に結合し、一般的に内部メモリ18を有することが一般的にわかる。メモリ18はオンチップ(on-chip)でもよく、またオフチップ(off-chip)でもよく、更に内部バス14に結合される。プロセッサ12とメモリ18と内部バス14は“チップ上システム(system-on-chip)”(SOC)の一部でもよい。SOCはまた、内部バス14と外部バス22に結合された外部インタフェースエンジン(EIE)20を有することが更にわかる。外部バス22は、peripheral  component  interconnect(PCI  version2.2、PCI  Special  Interest  Group)プロトコル、universal  test  and  operation  physical  interface  for  asynchronous  transfer  mode(Utopia  Level  1/2/3、ATM  Forum  Technical  Committee)プロトコル、及び／又は必要に応じてその他のもののような、バスプロトコルに対応する。このように、EIE20は、適切なプロトコルに従って外部バス22を通じて通信し、プロセッサ12によって使用するためにメモリ18にネットワークデータを格納し、多様なネットワーク機能を実装するためにメモリ18からネットワークデータを取り出す。
【０００３】
前述のアーキテクチャ10は、特定のネットワーキング環境では十分であるが、かなりの改善の余地が残っている。例えば、従来のEIE20は、１つの外部バスプロトコルに従って通信することしかできない単一のエンジンとして動作する。従って、マルチプロトコルを利用しようとすると、追加のEIEが必要になる。更に、EIEが追加されても、ユーザ定義の優先度に従って複数の論理キューを通じて物理リソースを共有することは困難である。リソースをプロトコルに割り当てるこの困難性は、マルチプロトコルインタフェースへの論理キューのマッピングが存在しないという事実に起因する。
【０００４】
更に、多様なプロトコルは、しばしば異なるデータ順序及び構成を使用する。例えば、あるプロトコルは、外部バスプロトコルに関わらずネットワークデータが同じ“ルック・アンド・フィール”を有するように確保するために、一般的にendian-swappingと呼ばれる技術を必要とすることがある。また、Utopia  Level2からUtopia  Level3への変化のように、ある世代から次の世代へのバスプロトコルの移行として、アップグレードに対応するインタフェースを追加することが望ましいことがある点に留意すべきである。しかし、従来のアーキテクチャ10では、新たなインタフェースを追加することは困難なことがあり、しばしばネットワークデータの内部ルック・アンド・フィールを変更する。更に、そのような変更は処理を複雑にすることがある。
【０００５】
一般的にEIE20がメモリ領域を有さず、それ故に内部バス14と外部バス22との間でネットワークをバッファする機能を欠いていることが更にわかる。このことは、多数の理由からネットワーキング性能に関して望ましくないことがある。例えば、内部データ転送が、ネットワークのバーストと無送信期間(dry  spell)から生じるネットワークの過渡現象から隔離されない。この点について、一般的に処理速度は平均データ到達率と等しい。一般的に回線での最大レートは平均到達率より著しく高い。実際に、あるネットワークプロセッサ12は、毎秒約40メガバイトの情報を通過するように設計されているが、外部バス22を通じたデータは、毎秒100メガバイト程度の速度に到達し得る。従って、内部転送遅延が外部転送遅延から分離されず、オーバーフロー機能がないことでネットワークのバースト中にパケットがドロップするという結果を生じ得る。
【０００６】
特に留意すべき点は、一般的なEIE20は読み書きデータ転送機構を使用しており、データはメモリ18に書き込まれ、プロセッサ12は内部バス14で読み取り動作を介してオフチップのメモリ18にアクセスすることである。遅延の観点からは、データの要求者が返信されるデータについて複数サイクルを待たなければならないことがしばしばあるため、読み取り動作は書き込み動作よりコストが高い。更に、一般的にサイクルの数は正確に予測できない。その結果、効率性に難点が生じることがある。更に、従来ではEIE20は、サービス優先順位付け、トラヒックの分類、及びデータ転送コストの分割償却(amortization)を提供することができない。その結果、プロセッサ12に利用可能な処理時間の多くが、ネットワークデータの管理に費やされなければならず、ネットワークデータの実際のパケットの処理に少ない時間が費やされることがある。
【発明を実施するための最良の形態】
【０００７】
以下の明細書と特許請求の範囲を読むことにより、また以下の図面を参照することにより、本発明の実施例の多様な利点が当業者に明らかになる。
【０００８】
本発明の実施例は、かなりの拡張ネットワーク性能を提供する。図２は、プロセッサ内部バス14と、１つ以上の外部バスを有する外部バスアーキテクチャ28との間に配置されたネットワークインタフェース26を有するネットワーキングアーキテクチャ24を示している。１つ以上のネットワーキングプロセッサ12と内部メモリ18は、前述のように内部バス14に結合されている。“結合”という用語は、直接接続又は間接接続を示すために使用され、如何なる商業的に利用可能な技術により実装されてもよく、また電気的、光学的、磁気的、機械的、又はその何らかの組み合わせでもよい。外部バスアーキテクチャ28は、peripheral  component  interconnect(PCI)や、universal  test  and  operation  physical  interface  for  ATM(Utopia)  Level2の系統のプロトコルのような複数のバスプロトコルに対応可能である。以下に詳細に説明するように、複数のバスプロトコルの使用を可能にすることにより、ネットワークインタフェース26が単一バスの手法より頑強になる。ネットワークインタフェース26は主にPCI及びUtopiaプロトコルに関して説明されるが、本発明の実施例はそれに限定されないことに留意すべきである。実際に、ネットワークインタフェース26は、ネットワーク性能が問題になる如何なるネットワーキングアーキテクチャでも使用可能である。それにもかかわらず、ネットワークインタフェース26が一意に適するプロトコルの複数の形態が存在する。
【０００９】
ネットワークインタフェース26が、外部インタフェースエンジン(EIE)30と内部インタフェース32を有することが一般的にわかる。新たなプロトコルに適応するために、ネットワークインタフェース26の一部のみを変更すればよいことに特に留意すべきである。特に、EIE30を追加することにより、新たなインタフェースが容易に追加され得る。EIE30は外部バス28に結合され、EIE30は１つ以上のバスプロトコルに従って外部バスアーキテクチャ28で通信する。内部インタフェース32はEIE30と内部バス14に結合され、内部インタフェース32は内部バス14と外部バスインタフェース28の間でネットワークデータをバッファする。ネットワークデータをバッファすることにより、多数の利点が達成され得る。例えば、内部転送遅延と外部転送遅延を分離するために、内部データ転送が一時的なネットワークのバースト／無送信期間(dry  spell)から分離され得る。更に、ネットワークデータのパケットの収集に有利に働くある程度の規模の経済が存在する。ここで説明するように、その他の複数の利点も達成される。
【００１０】
特に、内部インタフェース32は内部バス14に結合された内部インタフェースエンジン(IIE)34を有し、IIE34はネットワークデータに対して複数のキューを定めることがわかる。中間メモリモジュール36がIIE34とEIE30に結合され、メモリモジュール36は複数のキューに従ってネットワークデータを収集する。別のキューからのデータは、中間メモリモジュール36の独立のバッファに分離される。
【００１１】
次に図３を参照すると、一般的にIIE34は、EIE30と中間メモリモジュール36に結合されたマルチチャネルのレジスタ構成38を有することがわかる。内部バスインタフェースアーキテクチャ40が内部バス14に結合されていることも更にわかる。ダイレクトメモリアクセス(DMA:direct  memory  access)エンジンアーキテクチャ42は内部バスインタフェースアーキテクチャ40と中間メモリモジュール36に結合されている。DMAエンジンアーキテクチャ42により、内部バスインタフェースアーキテクチャ40が、内部バス14を介して中間メモリモジュール36と複数のアドレス可能位置との間でネットワークデータを直接転送することが可能になる。特に、インタフェースアーキテクチャ40は、内部メモリに加えて、プロセッサにデータを送信し、プロセッサからデータを受信することが可能である。
【００１２】
このように、ネットワークデータは中間メモリモジュール36に書き込まれ、次に内部バス14(入力の場合)又は外部バスアーキテクチャ28(出力の場合)に書き込まれる。従って、結果のデータ転送機構は、データが宛先メモリに書き込まれて当該のプロセッサにより読み取られる従来の“読み書き”機構に対して、“書き込み−書き込み”機構としてみなされ得る。例えば、入力データを処理する従来の手法は、メモリ18がデータの対象の宛先であるか否かに関わらず、全てのネットワークデータを外部又は内部メモリ18(図１)に書き込むことを含んでいる。従って、プロセッサ12(図１)は、メモリ18からデータを取り出すために、読み取り動作を行わなければならない。プロセッサ12がメモリ18から戻されるデータを待たなければならないため、読み取り動作はかなりの処理時間を費やすことに特に留意すべきである。更に、プロセッサ12が待機する必要のある時間を予測することがしばしば困難である。端的に言えば、インタフェースアーキテクチャ40は“書き込み−書き込み”データ転送機構に対応し、その“書き込み−書き込み”転送機構は、従来の“読み書き”機構よりかなり効率的である。
【００１３】
具体的には、DMAエンジンアーキテクチャ42は、マスターDMAエンジン44と、スレーブDMAエンジン46とを有する。マスターDMAエンジン44は、優先度を得たキューに対してDMA設定情報(ソースアドレスや、宛先アドレスや、指示や、DMA長等)を決定するために、キューの優先データを使用する。従って、マスターDMAエンジン44は、どのキューが内部バス14のマスターであるかを決定し、ダイレクトメモリアクセスを実施する。他方、スレーブDMAエンジン46は、内部バス14がデータ転送のマスターになることを効果的に可能にする。したがって、選択されたキューはスレーブアドレスのコード化の関数であり、レジスタ構成38で行われる仲裁(arbitration)により定められない。内部及び外部エンジンは、送受信パスのマスター/スレーブになるように独立して構成され得る。このことにより、最もバス効率のよい構成が可能になる。例えば、装置から送信されるデータについて、内部エンジンはスレーブになり、外部エンジンがマスターになり得る。同じことがデータの受信についても当てはまる。
【００１４】
内部バスインタフェースエンジン40は、内部バスマスターインタフェース48と、内部バススレーブインタフェース50と、内部バススレーブインタフェース50に結合された複数のローカル制御レジスタ52とを有することが更にわかる。ローカル制御レジスタ52は、複数のアドレス可能位置に関するデータと、他のハンドオフ情報(handoff  information)を格納する。
【００１５】
更に、マルチチャネルのレジスタ構成38は、EIE30とメモリモジュール36に結合された一式の受信キューレジスタ54を有する。一式の送信キューレジスタ56は、EIE30とメモリモジュール36に結合され、制御ロジック58が受信キューレジスタ54と送信キューレジスタ56に結合され、キューを優先順位付けてネットワークデータのDMA設定情報を定める。このように、制御ロジック58はキューを仲裁し、優先度が割り当てられた通りに結果を多重化する。
【００１６】
メモリモジュール36は、ランダムアクセスメモリ(RAM)60と、RAM60とEIE30とIIE34に結合されたRAMコントローラ62とを有することがわかる。RAMコントローラ62は、IIE34により定められたキューに基づいてバッファの優先度を確立する。バッファの優先度はネットワークデータのスループット要件に基づいて変化し得ることに特に留意すべきである。構成可能な区画を提供することにより、複数の利益を得ることができる。例えば、異なるクラスのトラヒックが明確なニーズに従って転送されて処理され得る。この手法により、異なる種類のトラヒックに無関係に、プログラマが処理効率／転送効率とデータ転送遅延とのトレードオフをすることも可能になる。更に、DMAに無関係のハンドオフ機構により、複数のパケットがパケットコアで同時に処理され、データ転送コストの分割償却(amortization)が可能になる。
【００１７】
EIE30は、第１の外部バスインタフェース64と、第２の外部バスインタフェース66とを有することが更にわかる。第１の外部バスインタフェース64は、第１のバスプロトコルに従って第１の外部バス28aで通信する。図示の例では、第１のバスプロトコルはUtopia  Level2プロトコルである。第２の外部バスインタフェースは、第２のバスプロトコルに従って第２の外部バス28bで通信する。図示の例では、第２のバスプロトコルはPCIバスプロトコルである。EIE30が複数の外部バスプロトコルに従って動作することを可能にし、この機能を前述の構成可能なキュー構造に組み込むことにより、複数の利点を得ることができる。例えば、ネットワークデータの内部のルック・アンド・フィールを変更することなく、また極度に処理を複雑にすることなく、インタフェースを追加することができる。更に、プロセッサにマイナスのソフトウェア効果を与えることなく、endian-swappingが実行可能であり、リソース管理がかなり容易に実装される。endian-swappingに加えて、EIE30は、可変の幅のインタフェースからデータを取得し、装置内部のあるフォーマットに渡すことが可能になる。例えば、Utopiaは16ビットのインタフェースであるが、PCIは32ビットのインタフェースである。
【００１８】
第２の外部バスインタフェース66は、ホストインタフェースとして第２の外部バスインタフェース66を使用するために、内部バスマスターインタフェース48との直接のリンクを有することに留意すべきである。換言すると、第２の外部バスインタフェース66は、ホスト中央処理装置(CPU)とのインタフェースになり、そのホスト中央処理装置(CPU)がシステムを構成及び初期化し、また呼び出し設定(call  setup)を実行してもよい。ダイレクトブリッジ68で、ホストCPUは内部バス14に直接アクセスする。このモードでは、ダイレクトブリッジ68は外部バスアーキテクチャ28でスレーブとして動作し、内部バス14でマスターとして動作する。ダイレクトマスターDMA70はDMAエンジンであり、内部バス14から外部バスアーキテクチャ28にデータをコピーし、またその逆も行い、双方のバスでマスターとして動作する。
【００１９】
次に図４を参照すると、プログラミング目的のために、プロセッサ内部バスと外部バスとの間でのネットワークデータの転送に対応する方法72が図示されている。一般的に処理ブロック74は、１つ以上のバスプロトコルに従って外部バスで通信することを提供し、ブロック76は、内部バスと外部バスと内部インタフェースの間でネットワークデータをバッファすることを提供する。ブロック78は、プロセッサのハンドオフプロトコルに従って、プロセッサと内部バスで通信することを提供する。内部バスから外部バスへのデータ転送を表すために、ブロック74と78は逆になってもよいことに留意すべきである。従来の手法はネットワークデータをバッファすることを行わず、プロセッサと直接通信することも行わないことにも特に留意すべきである。どちらかと言えば、ネットワークデータがEIEを通じて内部メモリに直接渡され、内部メモリに書き込まれることが一般的である。その結果、プロセッサはネットワークデータを取得するために内部バスと通信しなければならない。他方、図示の手法により、ネットワークデータが最終の宛先(すなわちプロセッサ)に直接送信されることが可能になる。
【００２０】
次に図５を参照すると、ネットワークデータと内部インタフェースをバッファする１つの手法がブロック76’に詳細に図示されている。特に、処理ブロック80で複数のキューがネットワークデータについて定められることがわかる。ブロック82は、複数のキューに従って中間メモリモジュールにネットワークデータを収集することを提供する。このように、ネットワークデータが多数のパケットを有する場合に、プロセッサコアにパケットを書き込み、そこからパケットを読み取る際にある程度の規模の経済を活用するために、複数のパケットが所定のキューに集められ得る。
【００２１】
図６は、ブロック80’に詳細に複数のキューを定める１つの手法を示している。特に、処理ブロック84は、各キューに所定のクラスのネットワークデータを割り当てることを提供することがわかる。ブロック86は、所定のクラス毎に送信優先度を定めることを提供する。ブロック88は、内部インタフェースが内部バスを介して中間メモリモジュールと複数のアドレス可能位置との間でネットワークデータを直接転送することを可能にすることを提供することが更にわかる。
【００２２】
次に図７を参照すると、複数のキューに従ってデータを収集する１つの手法がブロック82’に詳細に図示されている。ブロック90で、キューに基づいて中間メモリモジュールにバッファ区画が確立されることがわかる。ブロック92は、ネットワークデータのスループット要件に基づいて区画のサイズを変更することを提供する。ブロック98は、必要に応じてendian-swappingを提供する。基本的に、ネットワークデータは可変のビットオーダー(すなわち最高から最低へ、又は最低から最高へ)に従ってバッファされる。従って、可変のビットオーダーにより、外部バスで通信するためにUtopiaバスプロトコルが使用されているか、またPICバスプロトコルが使用されているかに内部バスでの通信が無関係になり得る。図８は、ブロック74’に詳細に外部バスで通信する１つの手法を示している。ブロック94は、第１のバスプロトコルに従って第１の外部バスインタフェースと外部バスで通信することを提供する。ブロック96は、第２のバスプロトコルに従って第２の外部バスインタフェースと外部バスで通信することを提供する。
【００２３】
図１−８を参照し続けると、全てのエンジンがレジスタを通じて初期化されてプログラムされ得ることがわかる。更に、ネットワークインタフェース26は、外部への８個の別個の論理送受信キューを提供する。IIE34は、内部バス14を通じたSOCの内部構成要素とRAM60との間の双方向データ転送の役割をするDMAエンジンとして機能する。従って、中間メモリモジュール36は、一時データ記憶装置の役割をする。EIE30は、RAM60と外部ネットワークとの間の双方向データ転送の役割をするDMAエンジンを有する。
【００２４】
IIE34は、集積回路(IC)内でバッチに基づく計算モデルに対応するように設計される。バッチに基づく計算モデルにより、プロセッサ12の全てのリソースが使用されるように、データの移動で計算の真のオーバーラップが可能になる。IIE34は、SOCの内部の転送機構についてマスターになることもでき、スレーブになることもできる。IIE34は、ネットワークから受信したデータを内部バス14に書き込むことにより、プロセッサの如何なる位置にも無関係に転送することができる。データは、一式のプログラム可能レジスタ52と54と56により指定されたアドレスに書き込まれる。従って、各キューは、自由な位置にデータを転送することができる。データが書き込まれると、ハードウェアベースのハンドシェーク機構(handshaking  mechanism)を通じてSOCの内部のプロセッサ12のエージェントにハンドオフされる。逆に、データがネットワークに送信される場合、SOCの内部の処理エージェントはIIE34にデータをハンドオフする。効率的な転送を可能にするために、IIE34は、RAM60にデータを書き込むことを可能にすることにより、外部エージェントから直接データを受け入れることができる。そしてEIE30はRAM60から外部インタフェースにデータを転送する。
【００２５】
計算エンジン／処理エージェントへ／からのデータのハンドオフは、処理バッファの概念に基づく。各バッファは、実際に１つ以上のパケット／セルを有することがある。収集を大きくすることにより、遅延の増加を代償にして、より良い転送効率と処理効率が可能になる。前述のように、バッファの位置とサイズはプログラム可能である。図示の例では、ネットワークインタフェース26は、８個の別個のデータのバッファまでに対応可能である。このことにより、複数のバッファが“作動中(in-flight)”になり、プロセッサコア内で同時に処理されることが可能になる。更に、バッファの数は８に固定される必要はない。各バッファが複数のパケット／セルを有する場合に、IIE34とEIE30のロジックにより、ネットワークインタフェース26が各バッファ内のデータの“フレーム”(例えばIPパケット、又は非同期転送モードのATMセル)を追跡することが可能になる。それにより、外部インタフェースで提供されるフレーム情報がプロセッサ12の内部で維持され、データ処理を支援することが可能になる。更に、レジスタ52と54と56は、各バッファについてデータをどこに配置するかをエンジンに伝える情報を有する。
【００２６】
前述のように、バッファに基づく構成により、プロセッサ12内のバッチ計算モデルが可能になり、計算遅延に対するデータ転送効率／処理効率のトレードオフが可能になる。バッファに基づく構成はまた、SOCリソースの高度な利用を可能にする。複数のキュー構造により、異なるクラスのトラヒックが別々に処理されることが可能になる。更に、異なるクラスのトラヒックは、SOCの異なる位置に向けられ得る。また、複数のキュー構造により、ユーザがプロセッサコアのような他のSOCリソースを(潜在的に異なる機能を備えた)所定のキューにささげることが可能になり、更なる効率性及び／又は容易なソフトウェア設計を提供する。複数バッファ構成により、複数のデータのバッファがコアで同時に処理されることが可能になる。データが如何なるアドレス可能位置の如何なるエージェントにもハンドオフされ得ることが更にわかる。従って、制御トラヒックやデータトラヒックやスルー(through)トラヒックのような複数の種類のトラヒックに対して、単一のキュー構造が使用され得る。データのフレームの対応は、転送の宛先エンドのソフトウェアにフレームの境界の知識を提供し、そのため、境界を決定するためにフレームの内容を解析する必要がなくなる。その結果、かなりの計算時間の節約になる。キューを通じてデータ転送優先度がいくつかの方法で変更されてもよいことがわかる。ソフトウェアが異なる大きさのRAM区画に構成することを可能にすることや、異なるキューに対してDMAのブロックサイズ及びDMAの遅延を変更することのように、リソースを柔軟に割り当てることにより、高い優先度のチャネルの厳格な遅延又は帯域の要件にユーザが対処することに役立ち得る。
【００２７】
ネットワークインタフェース26のアーキテクチャにより、複数のプロトコルからのインタフェースにシームレスに対応できることが更にわかる。外部ネットワークは、PCIバスや、Utopia(Level1、2又は3)、POS/PHY等のような標準的な電気バスでもよく、また独自のバスでもよい。複数の外部バスインタフェース64と66を通じて、単一のネットワークインタフェース(又はバックプレーンインタフェース、BIF)の実装が、複数の異なる独立の物理バスとインタフェース接続されてもよい。更に、異なるプロトコルに存在する変化するデータオーダーの機構に対処するために、各キューは独立のbyte-swapping機構を備えている。
【００２８】
一般的に、Utopia又はPCIインタフェースのようなインタフェースのピークのスループットは、SOCの内部でデータが処理される平均のレートよりかなり高い。逆に、トラヒックバーストに続いて、ネットワークが“ドライ(dry)”になる間の期間が存在し得る。このニーズに対処するため、RAM60により、SOCがネットワークからのデータのバーストを吸収することが可能になる。さもなければデータが失われることがある。ネットワークインタフェース26は、不規則なネットワークトラヒック特性を許容するマルチレイヤ機構を有する。RAM60は、外部転送遅延から内部転送遅延を分離するバッファとしての役割をする。短いネットワークの過渡現象はRAM60により吸収され得る。IIE34は、ハードウェアベースの耐オーバーフロー機構を有し、その耐オーバーフロー機構により、SOCが受信時にネットワークインタフェースでトラヒックの一時バーストを受けたとき、又はネットワークが送信時に輻輳したときにデータをバッファすることが可能になる。ハードウェアベースのオーバーフローは実装が簡単な状態機械機構で定められる。オーバーフローしたデータは、同じルック・アンド・フィールで(すなわち、同じバッファで元のデータと同じ位置に)提示される。従って、内部ソフトウェアアーキテクチャは、オーバーフローのデータに対して別の処理フローを必要としない。逆に、無送信期間(dry  spell)中に、ハードウェア先取り機能が、RAM60に陳腐したデータが存在しないように確保する。この双方の機構がなければ、データ受信の場合にEIE30を通じてネットワークインタフェース26を通じて生じ得るハードウェアバックプレッシャー信号(hardware  backpressure  signal)が存在する。この場合に、送信時にSOCが固まり、受信時にネットワークが固まる。
【００２９】
前述のように、各データキューは独立したレジスタセットを有する。しかし、８個のキューは、RAM60と転送リソースを共有する。８個のキューを通じたリソースの分割はプログラム可能である。これらのキューは、異なる外部インタフェース及び／又はSOC内の異なる内部プロセッサコアに割り当てられてもよい。異なるキューがRAM60の変化する区画サイズを割り当てられてもよく、変化する優先度がIIE34又はEIE30により実行されるDMA転送に割り当てられても良いため、キューの間でリソース割り当ては柔軟性がある。共有のリソースが取得された時に占有される持続時間もまた、自由にプログラム可能である。
【００３０】
ネットワークインタフェース26を備えたSOCは、ネットワークの誤作動を頑強に許容し、さもなければ失われることがあるデータを保護することができる。このことはネットワーク処理の際にきわめて重要である。RAM60はまた、内部と外部のバスインタフェースの遅延を分離する。ネットワークからのバーストトラヒックの期間、一時的なネットワークの輻輳、又はネットワークの無送信期間(dry  spell)がSOCの内部から分離される。マルチレイヤのデータ転送アーキテクチャにより、外部ネットワークがデータを転送することをインタフェースが妨げる回数と、ネットワーク状況に応じてSOCが固まる回数を最小化する。ネットワークインタフェース26により、複数の物理インタフェース(PCIやUtopia等)が共通の電気インタフェース及びプログラムインタフェースをSOCの内部のハードウェア／ソフトウェアに提示することが可能になる。内部のハードウェア及びソフトウェアが異なる外部バスに直接インタフェース接続する他のアーキテクチャに比べて、この共通のインタフェースは設計時間を低減し、SOCの内部のハードウェアブロックとソフトウェアプログラムの双方に対して高度の設計上の抽象化を可能にする。SOCの内部インタフェースを変更することなく、内部アーキテクチャ及び設計に最小の破壊で、新たなネットワークインタフェースが追加され得る。ネットワークインタフェース26のリソースと、それにより全体のSOCのリソースが、多様な構成の複数の外部プロトコルインタフェースを通じてシームレスに共有され得る。
【００３１】
ネットワークインタフェース26は、競争の厳しいマーケットの需要に合致するために必要な設計上の柔軟性と性能レベルを提供する。複数の志願者が同時に外部プラットフォームと通信するマルチプロセッサ環境は、個々の独立のキューにリソースを割り当てる固有の機能を利用することができる。更に、複数のプロトコルが“進行中に”設計に組み込まれることを可能にすることにより、ネットワークインタフェース26は、キューの効率を最大化する強力な機構を提供する。
【００３２】
前述の記述から、本発明の実施例の広い技術が多様な形式で実装され得ることが当業者にわかる。したがって、本発明の実施例は特定の実施例と関連して記載されたが、図面と明細書と特許請求の範囲の研究から他の変更形態も当業者に明らかになるため、本発明の実施例の真の範囲はそれに限定されるべきではない。
【図面の簡単な説明】
【００３３】
【図１】本発明の理解に有用な従来のネットワーキングアーキテクチャの一例のブロック図である。
【図２】本発明の一実施例によるネットワーキングアーキテクチャの一例のブロック図である。
【図３】本発明の一実施例によるネットワークインタフェースの一例のブロック図である。
【図４】本発明の一実施例に従ってネットワークデータの転送に対応する方法の一例のフローチャートである。
【図５】本発明の一実施例に従って内部インタフェースにネットワークデータをバッファする処理の一例のフローチャートである。
【図６】本発明の一実施例に従ってネットワークデータに対して複数のキューを定める処理の一例のフローチャートである。
【図７】本発明の一実施例に従って中間メモリモジュールにネットワークデータを収集する処理の一例のフローチャートである。
【図８】本発明の一実施例に従って外部バスで通信する処理のフローチャートである。
【図１】
2005532632.tif 000003
【図２】
2005532632.tif 000004
【図３】
2005532632.tif 000005
【図４】
2005532632.tif 000006
【図５】
2005532632.tif 000007
【図６】
2005532632.tif 000008
【図７】
2005532632.tif 000009
【図８】
2005532632.tif 000010
【国際調査報告】
2005532632.tif 000011
2005532632.tif 000012
2005532632.tif 000013