(57)【要約】【課題】フレーム制御ブロックの中の所望のフィールド情報を獲得するメモリへのアクセスの回数を減らすための方法およびシステムを提供する。【解決手段】本発明の一実施形態では、システムは、データ・フレームを処理するように構成されたプロセッサを含む。プロセッサは、関連するフレーム制御ブロックをそれぞれが有する可能性があるデータ・フレーム受信し、伝送するように構成されたデータ・フロー部を含むことが可能である。各フレーム制御ブロックは、第１の制御ブロック、および第２の制御ブロックを含む。プロセッサは、第１の制御ブロックに関するフィールド情報を記憶するように構成されたデータ・フロー部に結合された第１のメモリをさらに含むことが可能である。プロセッサは、データ・フロー部によって受信されたデータ・フレームをスケジュール設定するように構成された、データ・フロー部に結合されたスケジューラをさらに含むことが可能である。スケジューラは、第２の制御ブロックに関するフィールド情報を記憶するように構成された第２のメモリを含むことが可能である。【特許請求の範囲】
【請求項１】
データ・フレームを処理するように構成されたプロセッサであって、
第１の制御ブロックおよび第２の制御ブロックをそれぞれが含む関連するフレーム制御ブロックをそれぞれが有する前記データ・フレームを受信し、伝送するように構成されたデータ・フロー部と、
前記フレーム制御ブロックの前記第１の制御ブロックに関するフィールド情報を記憶する第１のフレーム・バッファ制御部を含む、前記データ・フロー部に結合された第１のメモリと、
前記データ・フロー部によって受信されたデータ・フレームをスケジュール設定するように構成され、前記フレーム制御ブロックの前記第２の制御ブロックに関するフィールド情報を記憶する第２のフレーム・バッファ制御部を含む第２のメモリを含む前記データ・フロー部に結合されたスケジューラとを含むプロセッサを含むシステム。
【請求項２】
前記データ・フロー部が、１つまたは複数の前記フレーム制御ブロックが中に存在する複数の待ち行列を含む請求項１に記載のシステム。
【請求項３】
前記データ・フロー部の前記複数の待ち行列の１つの中に存在する１つまたは複数の前記フレーム制御ブロックの前記第１の制御ブロックのフィールドの中の情報が、前記第１のメモリの前記第１のフレーム・バッファ制御部の中に記憶される請求項２に記載のシステム。
【請求項４】
前記スケジューラが、１つまたは複数の前記フレーム制御ブロックが中に存在する第１の待ち行列を含む請求項１ないし３のいずれかに記載のシステム。
【請求項５】
前記第１の待ち行列の中に存在する１つまたは複数の前記フレーム制御ブロックの前記第２の制御ブロックのフィールドの中の情報が、前記第２のメモリの前記第２のフレーム・バッファ制御部の中に記憶される請求項４に記載のシステム。
【請求項６】
フレーム制御ブロックのそれぞれが、第１の制御ブロックおよび第２の制御ブロックを含み、前記第１の制御ブロックが、第１のメモリに関連し、前記第２の制御ブロックが、第２のメモリに関連し、前記第１のメモリが、第１のフレーム・バッファ制御部を含み、前記第１のフレーム・バッファ制御部が、前記フレーム制御ブロックの前記第１の制御ブロックに関するフィールド情報を記憶し、前記第２のメモリが、第２のフレーム・バッファ制御部を含み、前記第２のフレーム・バッファ制御部が、前記フレーム制御ブロックの前記第２の制御ブロックに関するフィールド情報を記憶する前記フレーム制御ブロックの中の所望の情報を獲得するメモリ・アクセスの回数を減らすための方法であって、
前記第１のメモリにアクセスして、１つまたは複数の前記フレーム制御ブロックの前記第１の制御ブロックのフィールドの中の情報の読取り、または書込みを行うステップと、
前記第２のメモリにアクセスして、１つまたは複数の前記フレーム制御ブロックの前記第２の制御ブロックのフィールドの中の情報の読取り、または書込みを行うステップとを含む方法。
【請求項７】
１つまたは複数の前記フレーム制御ブロックが、前記第１のメモリに関連するデータ・フロー部内部の複数の待ち行列の１つの中に存在する請求項６に記載の方法。
【請求項８】
前記１つまたは複数のフレーム制御ブロックが前記データ・フロー部内部の前記複数の待ち行列の１つの中に存在するとき、１つまたは複数の前記フレーム制御ブロックの前記第１の制御ブロックのフィールドの中の情報の読取り、または書込みを行うのに、第１のメモリにアクセスが行われる請求項７に記載の方法。
【請求項９】
１つまたは複数の前記フレーム制御ブロックが、前記第２のメモリに関連するスケジューラ内部の待ち行列の中に存在する請求項６ないし８のいずれかに記載の方法。
【請求項１０】
前記１つまたは複数のフレーム制御ブロックが前記スケジューラの前記待ち行列の中に存在するとき、１つまたは複数の前記フレーム制御ブロックの前記第２の制御ブロックのフィールドの中の情報の読取り、または書込みを行うのに、第２のメモリにアクセスが行われる請求項９に記載の方法。
【請求項１１】
コンピュータ・システム上で実行されたとき、請求項１ないし５のいずれかに記載のシステムを実施するようにコンピュータ・システムに命令するためのコンピュータ可読記憶媒体上に記憶されたコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーキング通信システムに関し、より詳細には、メモリに対するアクセスの回数を最小限に抑えることに関する。
【背景技術】
【０００２】
パケット交換網は、ネットワークに接続された送信側と受信側の間でデータを伝送するためのスイッチング・ポイントまたはスイッチング・ノードを有する。このスイッチング・ポイントによって行われるスイッチングは、実際には、スイッチング・ポイントまたはスイッチング・ノードによって受信されたデータのパケット、つまり「フレーム」をネットワーク内のさらなるノードに転送する動作である。そのようなスイッチング動作は、通信データがパケット交換網を介して運ばれる手段である。
【０００３】
各ノードは、パケット、つまりデータ・フレームを処理するように構成されたパケット・プロセッサを含む。データの各フレームは、データの関連するフレームを記述するように構成されたフレーム制御ブロック（ＦＣＢ）に関連することが可能である。通常、ＦＣＢは、パケット・プロセッサ内部のメモリによって、例えば、４倍データ転送速度（Quadruple Data Rate）スタティック・ランダム・アクセス・メモリ（ＱＤＲ  ＳＲＡＭ）によって供給される様々な情報フィールドを含む。つまり、ＦＣＢの中の情報フィールドは、パケット・プロセッサ内部のメモリに、例えば、ＱＤＲ  ＳＲＡＭにアクセスすることによって獲得される。
【０００４】
したがって、情報を必要とするフィールド制御ブロックの中のフィールドの数を制限して、これにより、メモリ・アクセスの回数を減らし、メモリ空間の効率、すなわち、メモリの帯域幅の効率を向上させることが望ましい。
【特許文献１】
米国出願第０９／７９１，３３６号（整理番号ＲＡＬ００００９５の同時係属ＰＣＴ出願）
【特許文献２】
米国出願第０９／７９２，５５７号
【特許文献３】
米国出願第０９／７９２，５３３号
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、第１のメモリに関連することが可能な第１の制御ブロック、および第２のメモリに関連することが可能な第２の制御ブロックとして表わされる論理上のフィールド制御ブロック（ＦＣＢ）を提供する。各メモリ、すなわち、第１のメモリおよび第２のメモリは、それぞれ、パケット・プロセッサのデータ・フロー部およびスケジューラにさらに関連することが可能である。パケット・プロセッサのデータ・フロー部は、データ・フレームを受信し、伝送するように構成されることが可能である。パケット・プロセッサのスケジューラは、パケット交換網内の別のスイッチ、または別のポートに伝送されるべきデータ・フレームをスケジュールするように構成されることが可能である。ＦＣＢが、データ・フロー部内部の待ち行列の中に存在するとき、情報は、第２の制御ブロックのフィールドの中にではなく、第１の制御ブロックのフィールドの中に記憶されることが可能である。第２の制御ブロックのフィールドから読取りを行う／第２の制御ブロックのフィールドに書込みを行うのに、第２のメモリへのアクセスは行われないため、これにより、第２のメモリの帯域幅の効率が向上する。ＦＣＢが、スケジューラ内部の待ち行列の中に存在するとき、情報は、第１の制御ブロックのフィールドの中にではなく、第２の制御ブロックのフィールドの中に記憶されることが可能である。第１の制御ブロックのフィールドから読取りを行う／第１の制御ブロックのフィールドに書込みを行うのに、第１のメモリへのアクセスは行われないので、これにより、第１のメモリの帯域幅の効率が向上する。
【課題を解決するための手段】
【０００６】
一態様によれば、本発明は、関連するフレーム制御ブロックをそれぞれが有し、第１の制御ブロックおよび第２の制御ブロックをそれぞれが含むデータ・フレームを受信し、伝送するように構成されたデータ・フロー部と、前記フレーム制御ブロックの前記第１の制御ブロックに関するフィールド情報を記憶する第１のフレーム・バッファ制御部を含む、前記データ・フロー部に結合された第１のメモリと、前記データ・フロー部によって受信されたデータ・フレームをスケジュール設定するように構成され、前記フレーム制御ブロックの前記第２の制御ブロックに関するフィールド情報を記憶する第２のフレーム・バッファ制御部を含む第２のメモリを含む、前記データ・フロー部に結合されたスケジューラとを含む、前記データ・フレームを処理するように構成されたプロセッサを含むシステムを提供する。
【０００７】
好ましくは、データ・フロー部は、前記フレーム制御ブロックの１つまたは複数がいずれかの中に存在する複数の待ち行列を含む。好ましい実施形態では、前記データ・フロー部の前記複数の待ち行列の１つの中に存在する１つまたは複数の前記フレーム制御ブロックの前記第１の制御ブロックのフィールドの中の情報は、前記第１のメモリの前記第１のフレーム・バッファ制御部の中に記憶される。
【０００８】
適切には、スケジューラは、１つまたは複数の前記フレーム制御ブロックが中に存在する第１の待ち行列を含む。より適切には、前記第１の待ち行列の中に存在する１つまたは複数の前記フレーム制御ブロックの前記第２の制御ブロックのフィールドの中の情報は、前記第２のメモリの前記第２のフレーム・バッファ制御部の中に記憶される。
【０００９】
別の態様では、本発明は、フレーム制御ブロックのそれぞれが、第１の制御ブロックおよび第２の制御ブロックを含み、前記第１の制御ブロックが、第１のメモリに関連し、前記第２の制御ブロックが、第２のメモリに関連し、前記第１のメモリが、第１のフレーム・バッファ制御部を含み、前記第１のフレーム・バッファ制御部が、前記フレーム制御ブロックの前記第１の制御ブロックに関するフィールド情報を記憶し、前記第２のメモリが、第２のフレーム・バッファ制御部を含み、前記第２のフレーム・バッファ制御部が、前記フレーム制御ブロックの前記第２の制御ブロックに関するフィールド情報を記憶する前記フレーム制御ブロックの中の所望の情報を獲得するメモリ・アクセスの回数を減らすための方法であって、前記第１のメモリにアクセスして、１つまたは複数の前記フレーム制御ブロックの前記第１の制御ブロックのフィールドの中の情報の読取り、または書込みを行うステップと、前記第２のメモリにアクセスして、１つまたは複数の前記フレーム制御ブロックの前記第２の制御ブロックのフィールドの中の情報の読取り、または書込みを行うステップとを含む方法を提供する。
【００１０】
好ましくは、１つまたは複数の前記フレーム制御ブロックは、前記第１のメモリに関連するデータ・フロー部内部の複数の待ち行列の１つの中に存在する。より好ましくは、前記１つまたは複数のフレーム制御ブロックが前記データ・フロー部内部の前記複数の待ち行列の１つの中に存在するとき、１つまたは複数の前記フレーム制御ブロックの前記第１の制御ブロックのフィールドの中の情報の読取り、または書込みを行うのに、第１のメモリにアクセスが行われる。さらにより好ましくは、１つまたは複数の前記フレーム制御ブロックは、前記第２のメモリに関連するスケジューラ内部の待ち行列の中に存在する。適切には、前記１つまたは複数のフレーム制御ブロックが前記スケジューラ内部の前記待ち行列の中に存在するとき、１つまたは複数の前記フレーム制御ブロックの前記第２の制御ブロックのフィールドの中の情報の読取り、または書込みを行うのに、第２のメモリにアクセスが行われる。
【００１１】
さらに別の態様によれば、本発明は、コンピュータ・システム上で実行されたとき、前述したシステムを実施するようにコンピュータ・システムに命令するためのコンピュータ可読記憶媒体上に記憶されたコンピュータ・プログラム製品を提供する。
【００１２】
次に、本発明を、例としてのみ、添付の図面に例示する本発明の好ましい実施形態を参照して説明する。
【発明を実施するための最良の形態】
【００１３】
本発明は、フレーム制御ブロックの中の所望のフィールド情報を得るメモリへのアクセスの回数を減らすための方法およびシステムを提供する。本発明の一実施形態では、システムが、データ・フレームを処理するように構成されたプロセッサを含む。プロセッサは、関連するフレーム制御ブロックをそれぞれが有することが可能なデータ・フレームを受信し、伝送するように構成されたデータ・フロー部を含むことが可能である。各フレーム制御ブロックは、第１の制御ブロック、および第２の制御ブロックを含むことが可能である。プロセッサは、第１のフレーム・バッファ制御部を含む、データ・フロー部に結合された第１のメモリをさらに含むことが可能である。第１のフレーム・バッファ制御部は、フレーム制御ブロックの第１の制御ブロックに関するフィールド情報を記憶することが可能である。プロセッサは、データ・フロー部によって受信されたデータ・フレームをスケジュール設定するように構成されることが可能な、データ・フロー部に結合されたスケジューラをさらに含むことが可能である。スケジューラは、第２のフレーム・バッファ制御部を含む第２のメモを含むことが可能である。第２のフレーム・バッファ制御部は、フレーム制御ブロックの第２の制御ブロックに関するフィールド情報を記憶することが可能である。フレーム制御ブロックがデータ・フロー部内部の待ち行列の中に存在するとき、情報は、第２の制御ブロックのフィールドの中にではなく、第１の制御ブロックのフィールドの中に記憶されることが可能である。第２の制御ブロックの中のフィールドから読取りを行う／第２の制御ブロックの中のフィールドに書込みを行うように第２のメモリに対するアクセスが行われないため、これにより、第２のメモリの帯域幅の効率が向上する。フレーム制御ブロックがスケジューラ内部の待ち行列の中に存在するとき、情報は、第１の制御ブロックのフィールドの中にではなく、第２の制御ブロックのフィールドの中に記憶されることが可能である。第１の制御ブロックの中のフィールドから読取りを行い／第１の制御ブロックの中のフィールドに書込みを行うように第１のメモリに対するアクセスが行われないため、これにより、第２のメモリの帯域幅の効率が向上する。
【００１４】
図１は、パケット・プロセッサ１００を示している。パケット・プロセッサ１００は、パケット交換網の特定のスイッチ（図示せず）、または特定のポート（図示せず）からデータのデジタル・パケット、すなわち、フレームを受信し、データのデジタル・パケット、すなわち、フレームをパケット交換網内の別のスイッチ、またはポートに、例えば、スイッチ／ポート１２０に伝送するように構成されたデータ・フロー部１１０を含むことが可能である。各データ・フレームは、関連するデータ・フレームを記述するフレーム制御ブロック（ＦＣＢ）に関連することが可能である。データ・フレームに関連する各ＦＣＢは、１つまたは複数のバッファ制御ブロック（ＢＣＢ）に関連することが可能であり、ＦＣＢに関連する各ＢＣＢは、データ記憶部１４０内部のバッファに関連することが可能である。ＢＣＢは、米国出願第０９／７９１，３３６号（整理番号ＲＡＬ００００９５の同時係属ＰＣＴ出願）に記載されるとおり、次の連鎖するＢＣＢに関連するバッファを記述するように構成されることが可能である。一実施形態では、データ・フロー部１１０は、集積回路上に、すなわち、集積チップ上に存在することが可能である。データ・フロー部１１０は、パケット交換網内のスイッチ（図示せず）、またはポート（図示せず）からデータ・フロー部１１０によって受信されたデータ・フレームを一時的に記憶するように構成されたデータ記憶部１４０に結合されることが可能である。データ・フロー部１１０は、データ・フロー部１１０からスイッチ／ポート１２０に伝送されるデータ・フレームをスケジュール設定するように構成されたスケジューラ１３０にさらに結合されることが可能である。一実施形態では、スケジューラ１３０は、集積回路上、すなわち、集積チップ上に存在することが可能である。さらに、データ・フロー部１１０は、データ・フロー部１１０によって受信されたデータ・フレームを処理するように構成された組込み型プロセッサ１５０にさらに結合されることが可能である。
【００１５】
図２は、データ・フロー部１１０をより詳細に示している。データ・フロー部１１０は、パケット交換網内のスイッチ（図示せず）またはポート（図示せず）から受信されたデータのパケット、すなわち、フレームを受け取り、一時的に記憶するように構成された受信機コントローラ２０３を含むことが可能である。データ・フロー部１１０は、フレーム・データを変更し、パケット交換網内のスイッチ（図示せず）またはポート（図示せず）に変更されたフレーム・データを伝送するように構成された送信機コントローラ２０１をさらに含むことが可能である。データ・フロー部１１０は、組み込み型プロセッサ１５０によって処理されるフレームを交換するように構成された組み込み型プロセッサ・インターフェース・コントローラ２０２をさらに含むことが可能である。
【００１６】
データのパケット、すなわち、フレームは、ポート／スイッチ・インターフェース部２２１によって受信されることが可能である。ポート／スイッチ・インターフェース部２２１は、データ・フロー部１１０がイグレス・モードで動作するとき、パケット交換網内のスイッチ（図示せず）からデータを受信することが可能である。そうでなく、データ・フロー部１１０がイングレス・モードで動作するとき、ポート／スティッチ・インターフェース部２２１は、パケット交換網に対するインターフェースとして動作するポート（図示せず）からデータを受信することが可能である。データ・フロー部１１０によって受信されたデータは、複数のスライス２０５ＡＦによって代表されることが可能なデータ記憶部１４０の中に記憶されるのに先立って、受信準備エリア・メモリ２２０の中に一時的に記憶されることが可能である。スライス２０５ＡＦは、全体として、または個々に、スライス群２０５またはスライス２０５と呼ぶことが可能である。図２におけるスライス２０５の数は、例示的なものであり、本発明によるデータ・フロー部１１０の実施形態は、他の所定の数のスライス２０５を有することが可能である。各スライスは、複数のバッファを含むことが可能である。各スライスは、メモリ・スライス、例えば、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）を表わし、メモリ帯域幅を最大化するために、フレーム・データを異なるスライスにおける異なるバッファの中に書き込むことができるようになっていることが可能である。メモリ・アービタ２０４が、受信機コントローラ２０３、送信機コントローラ２０１、および組込み型プロセッサ・インターフェース・コントローラ２０２から要求、例えば、読取り要求、書込み要求を収集し、後に、特定のデータ・ストア・メモリ・スライスに対する、すなわち、特定のスライス２０５における特定のバッファに対するアクセスをスケジュール設定するように構成されることが可能である。例えば、受信機コントローラ２０３は、受信されたデータを特定のスライス２０５における個々のバッファに書き込むため、メモリ・アービタ２０４に書込み要求を発行するように構成されることが可能である。
【００１７】
前述したとおり、フレーム・データは、データ記憶部１４０の中に、すなわち、複数のスライス２０５の中に記憶されることが可能である。一実施形態では、フレーム・データは、バッファを一緒に連鎖させることにより、それぞれの特定のフレームの中のデータが再構成されることが可能であるように、１つまたは複数のスライス２０５における１つまたは複数のバッファの中に記憶されることが可能である。つまり、特定のフレームの中のデータが、１つまたは複数のバッファにそのデータが書き込まれた順序で、一緒に連鎖させられた１つまたは複数のバッファの中に記憶されることが可能である。１つまたは複数のバッファを連鎖させることは、データ・フロー部１１０に結合されたメモリ内部の、例えば、４倍データ転送速度スタティック・ランダム・アクセス・メモリ（ＱＤＲ  ＳＲＡＭ）内部のバッファ制御ブロック部（ＢＣＢＵ）２０８によって制御されることが可能である。ＢＣＢＵ２０８は、バッファにデータが書き込まれた順序で一緒に連鎖させられた１つまたは複数のバッファのそれぞれのアドレスを含むように構成されることが可能である。同じフレームのデータを含む異なるバッファは、ＢＣＢＵ２０８の中に記憶されたポインタを使用して一緒にリンクされることが可能である。
【００１８】
前述したとおり、データの各フレームは、関連するデータ・フレームを記述するフレーム制御ブロック（ＦＣＢ）に関連することが可能である。メモリ２１０内部の、例えば、ＱＤＲ  ＳＤＲＡＭ内部のフレーム制御ブロック部１（ＦＣＢＵ１）２０９が、ＦＣＢのフィールドの中に埋められる情報、例えば、フレーム制御情報を記憶するように構成されることが可能である。つまり、ＦＣＢの中の情報のフィールドは、メモリ２１０に、すなわち、メモリ２１０のＦＣＢＵ１  ２０９にアクセスすることによって得ることが可能である。情報のフィールドを記憶するメモリ２１０のＦＣＢＵ１  ２０９に関するさらなる詳細については、図３の説明で述べる。
【００１９】
バッファの中に記憶されたフレーム・データは、処理されるべき各フレームのヘッダを組込み型プロセッサ１５０に伝送することにより、組込み型プロセッサによって処理されることが可能である。前述したとおり、各データ・フレームは、ＦＣＢによって表わされることが可能である。このＦＣＢは、Ｇ待ち行列（ＧＱ）２１８の中に一時的に記憶されることが可能である。ディスパッチャ論理２１７が、次のＦＣＢをＧＱ２１８から取り出すように構成されることが可能である。ディスパッチャ論理２１７は、次のＦＣＢを取り出すと、読取り要求をメモリ・アービタ２０４に発行して、取り出されたＦＣＢに関連するデータ記憶部１４０の中に記憶されたフレームの先頭における、すなわち、フレームのヘッダにおけるデータを読み取る。ディスパッチャ論理２１７によって読み取られたデータは、次に、組込み型プロセッサ１５０によって処理される。
【００２０】
フレーム・データが組込み型プロセッサ１５０によって処理されると、処理済みのフレーム・データは、処理済みのフレーム・データを１つまたは複数のスライス２０５における個々のバッファに書き込むようにメモリ・アービタ２０４に書込み要求を発行する組込み型プロセッサ論理２１６によって、データ記憶部１４０の中に、すなわち、スライス２０５の中に一時的に記憶されることが可能である。
【００２１】
フレーム・データが組込み型プロセッサ１５０によって処理されると、組込み型プロセッサ論理２１６が、処理済みのフレームに関連するＦＣＢをスケジューラ１３０に対してさらに発行する。スケジューラ１３０は、ＦＣＢを記憶するように構成されたフロー待ち行列２２３を含むように構成されることが可能である。スケジューラ１３０は、メモリ２２４内部に、例えば、ＱＤＲ  ＳＲＡＭ内部に、ＦＣＢＵ１  ２０９と同様に動作するように構成されたフレーム制御ブロック部２（ＦＣＢＵ２）２２５をさらに含むことが可能である。ＦＣＢＵ２  ２２５は、ＦＣＢがフロー待ち行列２２３の中に一時的に存在しているとき、ＦＣＢのフィールドの中に埋められるべき情報を記憶するように構成されることが可能である。情報のフィールドを記憶するスケジューラ１３０のメモリ２２４内部のＦＣＢＵ２  ２２５に関するさらなる詳細については、図３の説明で述べている。スケジューラ１３０は、フロー待ち行列２２３の中に記憶されたＦＣＢを、受信されたＦＣＢをＴＢＱ２１５の中に入れるように構成された目標ブレード待ち行列（ＴＢＱ）エンキュー論理２２７に伝送するように構成されることが可能である。
【００２２】
ＴＢＱ２１５の中に入れられたＦＣＢは、ＴＢＱスケジューラ２２８によってＴＢＱ２１５から取り出され、ポート制御ブロック（ＰＣＢ）２２４の中にロードされるようにスケジュール設定されることが可能である。ＴＢＱスケジューラ２２８は、ＴＢＱ２１５から次のＦＣＢを取り出し、そのＦＣＢをＰＣＢ２２４の中で待ち行列に入れるように構成されることが可能である。次のＦＣＢが、ＰＣＢ２２４の中で待ち行列に入れられると、ＰＣＢ２２４は、メモリ・アービタ２０４に対して読取り要求を発行して、待ち行列から出されたＦＣＢに関連するデータ記憶部１４０の中に記憶されたフレームの先頭における、すなわち、フレームのヘッダにおけるデータを読み取ることができる。ＰＣＢ２２４によって読み取られたデータは、パケット交換網内のスイッチ（図示せず）またはポート（図示せず）に処理済みのフレーム・データを伝送するのに先立って、データ準備エリア・メモリ２１４の中に一時的に記憶されることが可能である。ＰＣＢ２２４は、それぞれの特定の読取り要求で、処理済みのフレームの中に記憶されたデータの一部分を読み取るように構成されることが可能であることを、明確にするために述べておく。つまり、処理済みのフレームの中に記憶されたデータ全体が、ＰＣＢ２２４によって提供される複数の読取り要求で、読み取られることが可能である。処理済みのフレームの中に記憶されたデータ全体が読み取られると、データ記憶部１４０は、さらなるフレーム・データを記憶することができる。
【００２３】
送信機コントローラ２０１は、データ準備エリア・メモリ２１４の中に一時的に記憶された処理済みのフレームを変更するコマンドを受け取るように構成されたフレーム変更準備エリア・メモリ２１３をさらに含むことが可能である。このコマンドは、一般に、フレーム変更コマンドと呼ばれ、フレーム変更コマンドは、米国出願第０９／７９２，５５７号により詳細に記載されるとおり、組込み型プロセッサ１５０によって発行されて、組込み型プロセッサ論理２１６によって特定のバッファの中の特定のバンクの中に記憶される。一実施形態では、ＰＣＢ２２４が、特定のバッファの中の特定のバンクの中に記憶されたフレーム変更コマンドを取り出して、フレーム変更準備エリア・メモリ２１３の中に記憶するように構成されることが可能である。フレーム変更（ＦＡ）論理部２１２が、フレーム変更準備エリア・メモリ２１３の中に記憶されたコマンドを実行して、データ準備エリア・メモリ２１４の中に一時的に記憶された処理済みのフレームの内容を変更するように構成されることが可能である。ＦＡ論理２１２が処理済みのフレームの内容を変更すると、変更された処理済みのフレームが、次に、スイッチ／ポート・インターフェース部２１１を介して伝送されることが可能である。スイッチ／ポート・インターフェース部２１１は、データ・フロー部１１０がイグレス・モードで動作するとき、パケット交換網に対するインターフェースとして動作するポート（図示せず）にデータを伝送することが可能である。そうでなく、データ・フロー部１１０がイングレス・モードで動作するとき、スイッチ／ポート・インターフェース部２１１は、パケット交換網内のスイッチ（図示せず）にデータを伝送することが可能である。
【００２４】
データ・フロー部１１０は、送信機コントローラ２０１、組込み型プロセッサ・インターフェース・コントローラ２０２、および受信機コントローラ２０３からの、ＢＣＢＵ２０８に対して読取り、または書込みを行う相異なるＢＣＢ要求の間で仲裁をするように構成されたバッファ制御ブロック（ＢＣＢ）アービタ２０７をさらに含むことが可能である。ＢＣＢアービタ２０７は、メモリ帯域幅を可能な限り効率的に利用するため、異なるアクセスをスケジュール設定するように構成されることが可能である。データ・フロー部１１０は、組込み型プロセッサ・インターフェース・コントローラ２０２、受信機コントローラ２０３、および送信機コントローラ２０１からの異なるＦＣＢの間で仲裁を行って、ＦＣＢＵ１  ２０９に対して読取り、または書込みを行うように構成されたフレーム制御ブロック（ＦＣＢ）アービタ２０６をさらに含むことが可能である。
【００２５】
前述したとおり、各データ・フレームは、ＦＣＢに関連することが可能である。処理済みのフレームが、データ記憶部１４０から、例えば、ＤＤＲ  ＤＲＡＭから読み取られ、処理済みのフレームが変更されて、パケット交換網内のスイッチ（図示せず）またはポート（図示せず）に伝送されると、その処理済みのフレームに関連するＦＣＢは、特定のデータ・フレームを表わさなくなる。ＦＣＢが、もはやフレーム・データに関連しなくなると、そのＦＣＢは、ＦＣＢアービタ２０６内部のＦＣＢ空き待ち行列２２２の中に記憶されることが可能である。ＦＣＢ空き待ち行列２２２が、特定のフレーム・データにもはや関連していない複数のＦＣＢを含むように構成されることが可能である。ＦＣＢ空き待ち行列２２２は、特定のフレーム・データにもはや関連していない任意の数のＦＣＢを含むことが可能であることに留意されたい。データ・フロー部１１０が、データのパケット、すなわち、フレームを受け取ると、受信機コントローラ２０３の再組立て制御ブロック（ＲＣＢ）２１９が、ＦＣＢ空き待ち行列２２２からの特定のＦＣＢを受信されたデータ・フレームに関連付けることができ、次に、新たに関連付けられたＦＣＢが、ＲＣＢ２１９によってＧＱ２１８の中に入れられることが可能である。
【００２６】
前述したとおり、各データ・フレームは、ＦＣＢに関連することが可能である。データ・フレームに関連する各ＦＣＢは、１つまたは複数のＢＣＢに関連することが可能であり、ＦＣＢに関連する各ＢＣＢは、データ記憶部１４０の特定のバッファに関連することが可能である。データ記憶部１４０のバッファの中に記憶された処理済みのフレーム・データが、送信機コントローラ２０１によって取り出され、後に、変更されて、パケット交換網内のスイッチ（図示せず）またはポート（図示せず）に伝送されると、もはや全くフレーム・データを含まない特定のバッファに関連するＢＣＢが、全く有効な情報を含まなくなる。つまり、もはや全くフレーム・データを含まない特定のバッファに関連するＢＣＢは、そのＢＣＢに関連する特定のバッファが、もはや全くフレーム・データを含まないので、有用ではないデータを含む。ＢＣＢが、全く有効な情報を含まなくなると、すなわち、その特定のバッファの中のフレーム・データが伝送されると、そのＢＣＢは、ＢＣＢアービタ２０６内部のＢＣＢ空き待ち行列２２６の中に記憶されることが可能である。ＢＣＢ空き待ち行列２２６は、有効な情報を全く含まない複数のＢＣＢを含むように構成されることが可能である。ＢＣＢ空き待ち行列２２６は、全く有効な情報を含まない任意の数のＢＣＢを含むことが可能であることに留意されたい。受信機コントローラ２０３が、データ記憶部１４０の特定のバッファに受信されたフレーム・データを書き込むと、受信機コントローラ２０３のＲＣＢ２１９が、受信されたデータ・フレームを記憶した特定のバッファに関連するＢＣＢ空き待ち行列２２６の中のその特定のＢＣＢに有効な情報を書き込むことができる。
【００２７】
前述したとおり、ＦＣＢは、ＦＣＢ空き待ち行列２２２の中に一時的に存在すること、またはその他の待ち行列、例えば、ＧＱ２１８、フロー待ち行列２２３、ＴＢＱ２１５のいずれかの中に一時的に存在することが可能である。ＦＣＢが、最初に、ＦＣＢ空き待ち行列２２２の中に記憶され、待ち行列を通して、例えば、ＧＱ２１８、フロー待ち行列２２３、ＴＢＱ２１５を通して転送され、最後にＦＣＢ空き待ち行列２２２の中に入れられるＦＣＢの「ライフ・サイクル」のより詳細な説明は、図３の説明で述べる。ＦＣＢは、ＦＣＢの「ライフ・サイクル」中にＦＣＢ空き待ち行列２２２から一時的に除去されることが可能であるため、ＦＣＢ空き待ち行列２２２から「リース」されるという言い方をすることができる。待ち行列、例えば、ＧＱ２１８、フロー待ち行列２２３、ＴＢＱ２１５、ＦＣＢ空き待ち行列２２２のそれぞれは、１つまたは複数の異なるＦＣＢを同時に含むことが可能であることに留意されたい。さらに、ＦＣＢは、「ライフ・サイクル」中、待ち行列、例えば、ＧＱ２１８、フロー待ち行列２２３、ＴＢＱ２１５、ＦＣＢ空き待ち行列２２２のそれぞれの中に一時的に存在することに留意されたい。
【００２８】
背景技術の情報セクションで述べたとおり、ＦＣＢは、パケット・プロセッサ１００内部のメモリ２１０および２２４によって供給される情報の様々なフィールドを含む。つまり、ＦＣＢの中の情報のフィールドは、パケット・プロセッサ１００内部のメモリ２１０に、例えば、ＱＤＲ  ＳＲＡＭにアクセスすることによって得られる。したがって、以下に述べるとおり、情報を必要とするフィールド制御ブロックの中のフィールドの数を制限し、これにより、メモリ・アクセスの回数を減らし、メモリ２１０および２２４に課せられる帯域幅の要求を減らすことが望ましい。
【００２９】
図３は、フレーム制御ブロックの中の所望のフィールド情報を得るメモリに対する、例えば、メモリ２１０、メモリ２２４に対するアクセスの回数を減らし、これにより、メモリ、例えば、メモリ２１０、メモリ２２４の帯域幅の効率を向上させるための方法３００の流れ図を示している。メモリ２１０は、データ・フロー部１１０に関連するメモリであり、他方、メモリ２２４は、スケジューラ１３０に関連するメモリである。
【００３０】
前述したとおり、各データ・フレームは、フレーム制御ブロック（ＦＣＢ）に関連することが可能である。本発明の一実施形態では、２つのメモリ２１０および２２４が存在するので、論理ＦＣＢは、２つ異なる制御ブロックとして表わすことができる。例えば、基本ＦＣＢ（ＢＦＣＢ）は、メモリ２１０に関連することが可能である。フローＦＣＢ（ＦＦＣＢ）は、メモリ２２４に関連することが可能である。以上の２つの異なる制御ブロック、すなわち、ＢＦＣＢおよびＦＦＣＢは、同一のメモリ・アドレス、すなわち、物理メモリ・アドレスを共有することが可能であるが、この２つの異なる制御ブロックのフィールドの中で提供されるデータは、別々のメモリの中に、例えば、メモリ２１０、メモリ２２４の中に存在することが可能である。
【００３１】
ステップ３０１で、ＦＣＢアービタ２０６のＦＣＢ空き待ち行列２２２の中に存在するＦＣＢが、ＲＣＢ２１９によってＦＣＢ空き待ち行列２２２から取り出されることが可能である。図４は、ＦＣＢ空き待ち行列２２２の中に存在するＦＣＢのＢＦＣＢ４００のフィールドを示している。ＢＦＣＢ４００は、それぞれが３６ビットである２つのエントリまたは行を含むことが可能である。ＢＦＣＢ４００は、任意のビット数を含む任意の数のフィールドおよび任意の数の行を含むことが可能であり、図４は、例示的なものであることに留意されたい。
【００３２】
ＦＣＢ空き待ち行列２２２の中に存在するＦＣＢのＢＦＣＢ４００は、２つのフィールド、例えば、ＮＦＡ（次のＦＣＢアドレス）およびＥＣＣ（誤り訂正コード）を含むことが可能である。ＮＦＡフィールドは、次のＦＣＢアドレスをポイントし、これにより、ＦＣＢを連鎖させることが可能になる。ＥＣＣフィールドは、米国出願第０９／７９２，５３３号に記載されるとおり、誤り訂正コードのためのコードを含むことが可能である。
【００３３】
図５は、ＦＣＢ空き待ち行列２２２の中に存在するＦＣＢのＦＦＣＢ５００のフィールドを示している。ＦＦＣＢ５００は、３６ビットであるエントリまたは行を含むことが可能である。ＦＦＣＢ５００は、任意のビット数を含む任意の数のフィールドおよび任意の数の行を含むことが可能であり、図５は、例示的なものであることに留意されたい。
【００３４】
ＦＣＢ空き待ち行列２２２の中に存在するＦＣＢのＦＦＣＢ５００は、２つのフィールド、例えば、ＮＦＡ、ＦＣＢに関連する１つまたは複数のバッファのバイト・カウント（ＢＣＮＴ）とともに、パリティ・ビット（ＰＴＹ）を含むことが可能である。ＮＦＡフィールドは、次のＦＣＢアドレスに対するポインタを含むことが可能であり、これにより、ＦＣＢ空き待ち行列２２２の中のＦＣＢを連鎖させることが可能になる。ＢＣＮＴフィールドは、ＦＣＢに関連する１つまたは複数のＢＣＢのバイト・カウント長を含むことが可能である。ただし、メモリ２２４のＦＣＢＵ２  ２２５にアクセスして情報を取り出して、ＦＣＢ空き待ち行列２２２の中に存在するＦＣＢのＦＦＣＢ５００のフィールドの中に記憶することは行われない可能性がある。というのは、ＦＣＢ空き待ち行列２２２の中に存在するＦＣＢのＦＦＣＢ５００は、データ・フレームに関連していない可能性があるからである。つまり、ＦＣＢ空き待ち行列２２２の中に存在するＦＣＢのＦＦＣＢ５００のフィールドは、重要ではなく、したがって、ＦＦＣＢ５００に関連するメモリ２２４のＦＣＢＵ２  ２２５にアクセスする必要は全くない。１つまたは複数のＢＣＢとのＦＣＢの関連、ならびにＦＣＢのフィールドの中に記憶された情報に関するさらなる詳細は、米国出願番号０９／７９１，３３６に記載されている。ＦＣＢの中のパリティ・ビットの詳細は、米国出願第０９／７９２，５３３号で提供されている。
【００３５】
以下にさらに説明するとおり、ＦＣＢ空き待ち行列２２２は、スケジューラ１３０によってではなく、データ・フロー部１１０によって扱われるため、情報は、ＦＦＣＢ５００の中にではなく、ＢＦＣＢ４００の中に記憶されることが可能である。したがって、ＦＣＢ空き待ち行列２２２の中に存在するＦＣＢのＢＦＣＢ４００の中のフィールドが、有効な情報を含み、他方、ＦＣＢ空き待ち行列２２２の中に存在するＦＣＢのＦＦＣＢ５００の中のフィールドが、無効な情報を含むことが可能である。
【００３６】
前述したとおり、データ・フロー部１１０が、パケット交換網内のスイッチ（図示せず）、またはパケット交換網に対するインターフェースとして動作するポート（図示せず）から、ポート／スイッチ・インターフェース部２２１を介してフレーム・データを受信したとき、ステップ３０１で、受信されたフレーム・データをＦＣＢに関連付けるため、データ・フロー部１１０のＲＣＢ２１９によってＦＣＢ空き待ち行列２２２からＦＣＢが取り出される。ＦＣＢは、ＲＣＢ２１９が、ＦＣＢ空き待ち行列２２２の中のＦＣＢのＢＦＣＢ４００の中のフィールドＮＦＡおよびＥＣＣに関する情報を取り出すように、メモリ２１０のＦＣＢＵ１  ２０９に対して読取り要求を発行することにより、ＦＣＢ空き待ち行列２２２から取り出される。データ・フロー部１１０のＲＣＢ２１９は、メモリ２２４のＦＣＢＵ２  ２２５に対してではなく、メモリ２１０のＦＣＢＵ１  ２０９に対してだけ、読取り要求を発行することができる。というのは、メモリ２１０は、データ・フロー部１１０に関連し、メモリ２２４は、スケジューラ１３０に関連しているからである。したがって、ＲＣＢ２１９は、ＦＣＢ空き待ち行列２２２の中に存在するＦＣＢのＦＦＣＢ５００のフィールド、例えば、ＮＦＡ、ＢＣＮＴに関する情報を取り出すのに、メモリ２２４のＦＣＢＵ２  ２２５にはアクセスしない。メモリ２２４にアクセスしないことにより、メモリ２２４の帯域幅の効率が向上する。
【００３７】
ステップ３０２で、ＦＣＢ空き待ち行列２２２から取り出されたＦＣＢが、ＲＣＢ２１９によってＧＱ２１８の中に入れられることが可能である。図６は、ＧＱ２１８の中に存在するＦＣＢのＢＦＣＢ６００のフィールドを示している。ＢＦＣＢ６００は、それぞれが３６ビットである２つのエントリを含む。ＢＦＣＢ６００は、任意のビット数を含む任意の数のエントリを含むことが可能であり、図６は、例示的なものであることに留意されたい。
【００３８】
ＧＱ２１８の中に存在するＦＣＢのＢＦＣＢ６００は、２つのフィールド、例えば、次のＦＣＢアドレス（ＮＦＡ）、バイト・カウント長（ＢＣＮＴ）および、パリティ・ビット（ＰＴＹ）を第１のエントリの中に含むことが可能である。ＧＱ２１８の中に存在するＦＣＢのＢＦＣＢ６００の第２のエントリは、３つのフィールド、例えば、第１のＢＣＢアドレス（ＦＢＡ）、ＦＣＢに関連する第１のＢＣＢに関連するバッファの開始バイト位置（ＳＢＰ）、ＦＣＢに関連する第１のＢＣＢに関連するバッファの終了バイト位置（ＥＢＰ）とともに、パリティ・ビット（ＰＴＹ）、ＦＣＢタイプ・ビット（ＦＴＯ）、および打切りビット（ＡＢＯＲ）を含むことが可能である。ＮＦＡフィールドは、ＧＱ２１８の中の次のＦＣＢアドレスをポイントすることが可能であり、これにより、ＧＱ２１８の中のＦＣＢを連鎖させることが可能になる。ＢＣＮＴフィールドは、ＦＣＢに関連する１つまたは複数のＢＣＢのバイト・カウント長を含むことが可能である。ＦＢＡは、ＦＣＢに関連する第１のＢＣＢのアドレスを含むことが可能である。ＳＢＰは、ＦＣＢに関連する第１のＢＣＢに関連するバッファの開始バイト位置を含むことが可能である。ＥＢＰは、ＦＣＢに関連する第１のＢＣＢに関連するバッファの終了バイト位置を含むことが可能である。前述したとおり、ＦＣＢのフィールドの中に、例えば、ＦＢＡ、ＳＢＰ、ＥＢＰの中に記憶される情報に関するさらなる詳細は、米国特許出願番号０９／７９１，３３６に記載されている。ＦＴＯビットは、ＦＣＢのタイプを含むことが可能である。ＡＢＯＲビットは、ＦＣＢに関連するフレーム・データが例外条件に出会っており、ＦＣＢを有効と見なしてはならないことを示すことが可能である。
【００３９】
図７は、ＧＱ２１８の中に存在するＦＣＢのＦＦＣＢ７００のフィールドを示している。ＦＦＣＢ７００は、３６ビットであるエントリを含む。ＦＦＣＢ７００は、任意のビット数を含む任意の数のエントリを含むことが可能であり、図７は、例示的なものであることに留意されたい。
【００４０】
ＧＱ２１８の中に存在するＦＣＢのＦＦＣＢ７００は、２つのフィールド、例えば、ＮＦＡ、フレーム・バイト・カウント（ＢＣＮＴ）とともに、パリティ・ビット（ＰＴＹ）を含むことが可能である。ＮＦＡフィールドは、次のＦＣＢアドレスをポイントすることが可能であり、これにより、ＧＱ２１８の中のＦＣＢを連鎖させることが可能になる。ＢＣＮＴフィールドは、ＦＣＢに関連する１つまたは複数のＢＣＢのバイト・カウント長を含むことが可能である。ただし、メモリ２２４のＦＣＢＵ２  ２２５にアクセスして情報を取り出して、ＧＱ２１８の中に存在するＦＣＢのＦＦＣＢ７００のフィールドの中に記憶することは行われない可能性がある。というのは、ＧＱ２１８の中に存在するＦＣＢのＦＦＣＢ７００は、データ・フレームに関連していない可能性があるからである。つまり、ＧＱ２１８の中に存在するＦＣＢのＦＦＣＢ７００のフィールドは、重要ではなく、したがって、ＦＦＣＢ７００に関連するメモリ２２４のＦＣＢＵ２  ２２５にアクセスする必要はない。
【００４１】
情報は、ＦＦＣＢ７００の中にではなく、ＢＦＣＢ６００の中に記憶されることが可能である。というのは、ＧＱ２１８は、以下にさらに説明するとおり、スケジューラ１３０によってではなく、データ・フロー部１１０によって扱われるからである。したがって、ＧＱ２１８の中に存在するＦＣＢのＢＦＣＢ６００の中のフィールドは、有効な情報を含み、他方、ＧＱ２１８の中に存在するＦＣＢのＦＦＣＢ７００の中のフィールドは、無効な情報を含むことが可能である。
【００４２】
前述したとおり、ＲＣＢ２１９が、ＦＣＢ空き待ち行列２２２から取り出されたＦＣＢをＧＱ２１８の中に入れる。ＲＣＢ２１９は、ＧＱ２１８の中のＦＣＢのＢＦＣＢ６００のフィールドに情報を書き込むよう、メモリ２１０のＦＣＢＵ１  ２０９に対して２つの書込み要求を発行することができる。第１の書込み要求は、第１のエントリのフィールドに、例えば、ＮＦＡ、ＢＣＮＴに情報を書き込むことである。第２の書込み要求は、第２のエントリのフィールド、例えば、ＦＢＡ、ＳＢＰ、ＥＢＰに情報を書き込むことである。ＲＣＢ２１９は、メモリ２２４のＦＣＢＵ２  ２２５に対してではなく、メモリ２１０のＦＣＢＵ１  ２０９に対してだけ、２つの書込み要求を発行することができる。というのは、メモリ２１０は、データ・フロー部１１０に関連し、メモリ２２４は、スケジューラ１３０に関連しているからである。したがって、ＲＣＢ２１９は、ＦＣＢ空き待ち行列２２２の中に存在するＦＣＢのＦＦＣＢ５００のフィールドに関する、例えば、ＮＦＡ、ＢＣＮＴに関する情報を取り出すのに、メモリ２２４のＦＣＢＵ２  ２２５にアクセスしない。メモリ２２４にアクセスしないことにより、メモリ２２４の帯域幅効率が向上する。
【００４３】
ステップ３０３で、図２の説明で述べるとおり、ＧＱ２１８の中のＦＣＢが、ディスパッチャ論理２１７によって取り出されて、ＦＣＢに関連するフレーム・データが、組込み型プロセッサ１５０によって処理されることが可能になる。ディスパッチャ論理２１７は、ＧＱ２１８の中のＦＣＢのＢＦＣＢ６００のフィールドの中の情報を読み取るよう、メモリ２１０のＦＣＢＵ１  ２０９に対して２つの読取り要求を発行することができる。第１の読取り要求は、第１のエントリのフィールド、例えば、ＮＦＡ、ＢＣＮＴの中の情報を読み取るためのものである。第２の読取り要求は、第２のエントリのフィールド、例えば、ＦＢＡ、ＳＢＰ、ＥＢＰの中の情報を読み取るためのものである。ディスパッチャ論理２１７は、メモリ２２４のＦＣＢＵ２  ２２５にではなく、メモリ２１０のＦＣＢＵ１  ２０９に対してだけ、２つの読取り要求を発行することができる。というのは、メモリ２１０は、データ・フロー部１１０に関連し、メモリ２２４は、スケジューラ１３０に関連しているからである。つまり、ディスパッチャ論理２１７は、メモリ２２４のＦＣＢＵ２に対してではなく、メモリ２１０のＦＣＢＵ１  ２０９に対してだけ、読取り要求を発行することができる。というのは、ＧＱ２１８の中のＦＣＢのＦＦＣＢ７００のフィールドの中の情報は、重要ではない、すなわち、無効な情報だからである。メモリ２２４にアクセスしないことにより、メモリ２２４の帯域幅の効率が向上する。
【００４４】
ステップ３０４で、ＦＣＢが、スケジューラ１３０内部のフロー待ち行列２２３の中に入れられることが可能である。前述したとおり、組込み型プロセッサ論理２１６が、処理済みのフレーム・データに関連するＦＣＢをスケジューラ１３０に対して発行する。スケジューラ１３０は、受け取られたＦＣＢをフロー待ち行列２２３の中に記憶するように構成されることが可能である。図８は、フロー待ち行列２２３の中に存在するＦＣＢのＢＦＣＢ８００のフィールドを示している。ＢＦＣＢは、それぞれが３６ビットである２つのエントリを含むことが可能である。ＢＦＣＢ８００は、任意のビット数の任意の数のフィールドおよび任意の数の行を含むことが可能であり、図８は、例示的なものであることに留意されたい。
【００４５】
フロー待ち行列２２３の中に存在するＦＣＢのＢＦＣＢ８００は、第１のエントリの中に１つのフィールド、例えば、次のフレーム制御バッファ・アドレス（ＮＦＡ）を含み、また第２のエントリの中に３つのフィールド、例えば、第１のＢＣＢアドレス（ＦＢＡ）、ＦＣＢに関連する第１のＢＣＢに関連するバッファの開始バイト位置（ＳＢＰ）、ＦＣＢに関連する第１のＢＣＢに関連するバッファの終了バイト位置（ＥＢＰ）を含むことが可能である。ＮＦＡフィールドは、フロー待ち行列２２３の中の次のＦＢＣアドレスをポイントすることが可能であり、これにより、フロー待ち行列２２３の中のＦＣＢを連鎖させることが可能になる。ＦＢＡは、ＦＣＢに関連する第１のＢＣＢのアドレスを含むことが可能である。ＳＢＰは、ＦＣＢに関連する第１のＢＣＢに関連するバッファの開始バイト位置を含むことが可能である。ＥＢＰは、ＦＣＢに関連する第１のＢＣＢに関連するバッファの終了バイト位置を含むことが可能である。ただし、メモリ２１０のＦＣＢＵ１  ２０９にアクセスして情報を取り出して、フロー待ち行列２２３の中に存在するＦＣＢのＢＦＣＢ８００のフィールドの中に記憶することは行われない可能性がある。というのは、フロー待ち行列２２３の中に存在するＦＣＢのＢＦＣＢ８００は、データ・フレームに関連していない可能性があるからである。フロー待ち行列２２３の中に存在するＦＣＢのＢＦＣＢ８００の第１のエントリの中のフィールドは、重要でない情報を含み、第２のエントリの中のフィールドは、記憶されている必要のある情報を含むことが可能である。その後、ＢＦＣＢ８００に関連するメモリ２１０のＦＣＢＵ１  ２０９にアクセスする必要はない。
【００４６】
つまり、フロー待ち行列２２３の中に存在するＦＣＢのＢＦＣＢ８００のフィールドは、重要ではなく、したがって、ＢＦＣＢ８００に関連するメモリ２１０のＦＣＢＵ１  ２０９にアクセスする必要はない。
【００４７】
図９は、フロー待ち行列２２３の中に存在するＦＣＢのＦＦＣＢ９００のフィールドを示している。ＦＦＣＢ９００は、３６ビットであるエントリを含むことが可能である。ＦＦＣＢ９００は、任意のビット数を含む任意の数のフィールドおよび任意の数の行を含むことが可能であり、図９は、例示的なものであることに留意されたい。
【００４８】
フロー待ち行列２２３の中に存在するＦＣＢのＦＦＣＢ９００は、２つのフィールド、例えば、ＮＦＡおよびフレーム・バイト・カウント（ＢＣＮＴ）とともに、パリティ・ビット（ＰＴＹ）を含むことが可能である。ＮＦＡフィールドは、次のＦＣＢアドレスをポイントすることが可能であり、これにより、フロー待ち行列２２３の中のＦＣＢを連鎖させることが可能になる。ＢＣＮＴフィールドは、ＦＣＢに関連する１つまたは複数のＢＣＢのバイト・カウント長を含むことが可能である。
【００４９】
情報は、ＢＦＣＢ８００の中にではなく、ＦＦＣＢ９００の中に記憶されることが可能である。というのは、フロー待ち行列２２３は、以下にさらに説明するとおり、データ・フロー部１１０によってではなく、スケジューラ１３０によって扱われるからである。
【００５０】
前述したとおり、組込み型プロセッサ論理２１６は、フレーム・データを処理した後、処理済みのフレーム・データに関連するＦＣＢをスケジューラ１３０に対して発行する。スケジューラ１３０は、ステップ３０４で、取り出されたＦＣＢをフロー待ち行列２２３の中に入れるように構成されることが可能である。スケジューラ１３０は、フロー待ち行列２２３の中のＦＣＢのＦＦＣＢ９００のフィールドに情報を書き込むよう、メモリ２２４のＦＣＢＵ２  ２２５に１つの書込み要求を発行することができる。この書込み要求は、ＦＦＣＢ９００のフィールドに、例えば、ＮＦＡ、ＢＣＮＴに情報を書き込むことであることが可能である。スケジューラ１３０は、メモリ２１０のＦＣＢＵ１  ２０９に対してではなく、メモリ２２４のＦＣＢＵ２  ２２５に対してだけ、１つの読取り要求を発行することができる。というのは、メモリ２２４は、スケジューラ１３０に関連し、メモリ２１０は、データ・フロー部１１０に関連しているからである。メモリ２１０にアクセスしないことにより、メモリ２１０の帯域幅の効率が向上する。
【００５１】
ステップ３０５で、フロー待ち行列２２３の中のＦＣＢが、スケジューラ１３０によって取り出されることが可能である。スケジューラ１３０は、フロー待ち行列２２３の中のＦＣＢのＦＦＣＢ９００のフィールドの中の情報を読み取るよう、メモリ２２４のＦＣＢＵ２  ２２５に対して１つの読取り要求を発行することができる。この読取り要求は、ＦＦＣＢ９００のフィールド、例えば、ＮＦＡ、ＢＣＮＴの中の情報を読み取ることである。スケジューラ１３０は、メモリ２１０のＦＣＢＵ１  ２０９に対してではなく、メモリ２２４のＦＣＢＵ２  ２２５に対してだけ、読取り要求を発行することができる。というのは、メモリ２２４は、スケジューラ１３０に関連し、メモリ２１０は、データ・フロー部１１０に関連しているからである。つまり、スケジューラ１３０は、メモリ２２４のＦＣＢＵ２  ２２５、およびメモリ２１０のＦＣＢＵ１  ２０９に対して１つの読取り要求を発行することができる。というのは、フロー待ち行列２２３の中のＦＣＢのＢＦＣＢ８００のフィールドの中の情報は、重要でない、すなわち、無効な情報だからである。メモリ２１０にアクセスしないことにより、メモリ２１０の帯域幅の効率が向上する。
【００５２】
ステップ３０６で、フロー待ち行列２２３から取り出されたＦＣＢが、送信機コントローラ２１０のＴＢＱエンキュー論理２２７によってＴＢＱ２１５に入れられることが可能である。図１０は、ＴＢＱ２１５の中に存在するＦＣＢのＢＦＣＢ１０００のフィールドを示している。ＢＦＣＢ１０００は、それぞれが３６ビットを含む２つのエントリを含むことが可能である。ＢＦＣＢ１０００は、任意のビット数を含む任意の数のフィールドおよび任意の数の行を含むことが可能であり、図１０は、例示的なものであることに留意されたい。
【００５３】
ＴＢＱ２１５の中に存在するＦＣＢのＢＦＣＢ１０００は、第１のエントリの中に、２つのフィールド、例えば、次のフレーム制御バッファ・アドレス（ＮＦＡ）、ＦＣＢに関連する１つまたは複数のＢＣＢのバイト・カウント（ＢＣＮＴ）長および、パリティ・ビット（ＰＴＹ）を含み、また第２のエントリの中に、４つのフィールド、例えば、第１のＢＣＢアドレス（ＦＢＡ）、ＦＣＢに関連する第１のＢＣＢに関連するバッファの開始バイト位置（ＳＢＰ）、ＦＣＢに関連する第１のＢＣＢに関連するバッファの終了バイト位置（ＥＢＰ）、フレーム・タイプ・フィールド（ＦＴ）とともに、パリティ・ビット（ＰＴＹ）を含むことが可能である。ＮＦＡフィールドは、ＴＢＱ２１５の中の次のＦＣＢアドレスをポイントすることが可能であり、これにより、ＴＢＱ２１５の中のＦＣＢを連鎖させることが可能になる。ＢＣＮＴフィールドは、ＦＣＢに関連する１つまたは複数のＢＣＢのバイト・カウント長を含むことが可能である。ＦＢＡは、ＦＣＢに関連する第１のＢＣＢのアドレスを含むことが可能である。ＳＢＰは、ＦＣＢに関連する第１のＢＣＢに関連するバッファの開始バイト位置を含むことが可能である。ＥＢＰは、ＦＣＢに関連する第１のＢＣＢに関連するバッファの終了バイト位置を含むことが可能である。ＦＴフィールドは、ＦＣＢのタイプを含むことが可能である。
【００５４】
図１１は、ＴＢＱ２１５の中に存在するＦＣＢのＦＦＣＢ１１００のフィールドを示している。ＦＦＣＢは、３６ビットであるエントリを含むことが可能である。ＦＦＣＢ１１００は、任意のビット数の任意の数のフィールドおよび任意の数の行を含むことが可能であり、図１１は、例示的なものであることに留意されたい。
【００５５】
ＴＢＱ２１５の中に存在するＦＣＢのＦＦＣＢ１１００は、２つのフィールド、例えば、ＮＦＡ、ＦＣＢに関連する１つまたは複数のＢＣＢのバイト・カウント（ＢＣＮＴ）長とともに、パリティ・ビット（ＰＴＹ）を含むことが可能である。ＮＦＡフィールドは、次のＦＣＢアドレスをポイントすることが可能であり、これにより、ＴＢＱ２１５の中のＦＣＢを連鎖させることが可能になる。ＢＣＮＴフィールドは、ＦＣＢに関連する１つまたは複数のＢＣＢのバイト・カウント長を含むことが可能である。ただし、メモリ２２４のＦＣＢＵ２  ２２５にアクセスして情報を取り出して、ＴＢＱ２１５の中に存在するＦＣＢのＦＦＣＢ１１００のフィールドの中に記憶することは行われない可能性がある。というのは、ＴＢＱ２１５の中に存在するＦＣＢのＦＦＣＢ１１００は、データ・フレームに関連しない可能性があるからである。つまり、ＴＢＱ２１５の中に存在するＦＣＢのＦＦＣＢ１１００のフィールドは、重要ではなく、したがって、ＦＦＣＢ１１００に関連するメモリ２２４のＦＣＢＵ２  ２２５にアクセスする必要はない。
【００５６】
情報は、ＦＦＣＢ１１００の中にではなく、ＢＦＣＢ１０００の中に記憶されることが可能である。というのは、ＴＢＱ２１５は、以下にさらに説明するとおり、スケジューラ１３０によってではなく、データ・フロー部１１０によって扱われるからである。したがって、ＴＢＱ２１５の中に存在するＦＣＢのＢＦＣＢ１０００のフィールドは、有効な情報を含み、他方、ＴＢＱ２１５の中に存在するＦＣＢのＦＦＣＢ１１００のフィールドは、有効な情報を含まないことが可能である。
【００５７】
前述したとおり、ＴＢＱエンキュー論理２２７は、スケジューラ１３０から受け取られたＦＣＢをＴＢＱ２１５の中に入れる。ＴＢＱエンキュー論理２２７は、ＦＣＢのＢＦＣＢ１０００のフィールド、例えば、ＮＦＡ、ＢＣＮＴの中の情報をＴＢＱ２１５に書き込むよう、メモリ２１０のＦＣＢＵ１  ２０９に対して１つの書込み要求を発行することができる。ＴＢＱエンキュー論理２２７は、送信機コントローラ２１０がスケジューラ１３０からＦＣＢを受け取ったとき、スケジューラ１３０からＦＦＣＢ９００の中のＢＣＮＴフィールドの中の情報のコピーを受け取ることができる。ＴＢＱエンキュー論理２２７は、ＦＦＣＢ９００のＢＣＮＴフィールドの中の情報をＢＦＣＢ１０００のＢＣＮＴフィールドに書き込むように構成されることが可能である。ＴＢＱエンキュー論理２２７は、第２のエントリのフィールドに情報を書き込む別の書込み要求を発行しない。というのは、ＢＦＣＢ８００の第２のエントリのフィールドの中の情報は、フロー待ち行列２２３の中にある間、更新されなかったからである。その後、ＴＢＱエンキュー論理２２７は、２回ではなく、一回だけ、メモリ２１０のＦＣＢＵ１  ２０９にアクセスし、これにより、メモリ２１０の帯域幅の効率が向上する。さらに、ＴＢＱエンキュー論理２２７は、メモリ２２４のＦＣＢＵ２  ２２５に対してではなく、メモリ２１０のＦＣＢＵ１  ２０９に対してだけ、書込み要求を発行することができる。というのは、メモリ２１０は、データ・フロー部１１０に関連し、メモリ２２４は、スケジューラ１３０に関連しているからである。したがって、ＴＢＱエンキュー論理２２７は、ＴＢＱ２１５の中に存在するＦＣＢのＦＦＣＢ１１００のフィールドに、例えば、ＮＦＡ、ＢＣＮＴに情報を書き込むのに、メモリ２２４のＦＣＢＵ２  ２２５にアクセスしない。メモリ２２４にアクセスしないことにより、メモリ２２４の帯域幅の効率が向上する。
【００５８】
ステップ３０７で、図２の説明に述べるとおり、ＴＢＱ２１５の中のＦＣＢが、ＴＢＱスケジューラ２２８によって取り出されることが可能であり、ＦＣＢに関連するフレーム・データが、ＴＢＱスケジューラ２２８によって読み取られることが可能であるようになる。ＴＢＱスケジューラ２２８は、ＴＢＱ２１５の中のＦＣＢのＢＦＣＢ１０００のフィールドの中の情報を読み取るよう、メモリ２１０のＦＣＢＵ１  ２０９に対して２つの読取り要求を発行することが可能である。第１の読取り要求は、第１のエントリのフィールド、例えば、ＮＦＡ、ＢＣＮＴの中の情報を読み取ることであることが可能である。第２の読取り要求は、第２のエントリのフィールド、例えば、ＦＢＡ、ＦＴ、ＳＢＰ、ＥＢＰのフィールドの中の情報を読み取ることであることが可能である。ＴＢＱスケジューラ２２８は、メモリ２２４のＦＣＢＵ２  ２２５に対してではなく、メモリ２１０のＦＣＢＵ１  ２０９に対してだけ、２つの読取り要求を発行することができる。というのは、メモリ２１０は、データ・フロー部１１０に関連し、メモリ２２４は、スケジューラ１３０に関連しているからである。したがって、ＴＢＱスケジューラ２２８は、ＴＢＱ２１５の中に存在するＦＣＢのＦＦＣＢ１１００のフィールド、例えば、ＮＦＡ、ＢＣＮＴに関する情報を取り出すのに、メモリ２２４のＦＣＢＵ２  ２２５にアクセスしない。メモリ２２４にアクセスしないことにより、メモリ２２４の帯域幅が、向上する。
【００５９】
ＦＣＢに関連する処理済みのフレーム・データが、スイッチ／ポート・インターフェース部２１１を介して、パケット交換網内のスイッチ（図示せず）、またはパケット交換網に対するインターフェースとして動作するポート（図示せず）に伝送されると、ステップ３０８で、ＦＣＢは、ＦＣＢアービタ２０６のＦＣＢ空き待ち行列２２２の中に入れられることが可能である。ＦＣＢアービタ２０６は、送信機コントローラのＰＣＢ２２４からの伝送された処理済みのフレーム・データに関連するＦＣＢを受け取るように構成され、ＦＣＢが、ＰＣＢ２２４によってＦＣＢ空き待ち行列２２２の中に入れられることが可能である。
【００６０】
前述したとおり、図４は、ＦＣＢ空き待ち行列２２２の中に存在するＦＣＢのＢＦＣＢ４００のフィールドを示している。ＦＣＢ空き待ち行列２２２の中に存在するＦＣＢのＢＦＣＢ４００は、２つのフィールド、例えば、ＮＦＡ（次のＦＣＢアドレス）、ＥＣＣ（誤り訂正コード）を含むことが可能である。ＮＦＡフィールドは、次のＦＣＢアドレスをポイントし、これにより、ＦＣＢ空き待ち行列２２２の中のＦＣＢを連鎖させることが可能になる。ＥＣＣフィールドは、米国出願第０９／７９２，５３３号に記載するとおり、誤り訂正コードのためのコードを含むことが可能である。
【００６１】
前述したとおり、図５は、ＦＣＢ空き待ち行列２２２の中に存在するＦＣＢのＦＦＣＢ５００のフィールドを示している。ＦＦＣＢ５００は、３６ビットであるエントリを含むことが可能である。ＦＣＢ空き待ち行列２２２の中に存在するＦＣＢのＦＦＣＢ５００は、２つのフィールド、例えば、ＮＦＡ，ＦＣＢに関連する１つまたは複数のＢＣＢのバイト・カウント（ＢＣＮＴ）長とともに、パリティ・ビット（ＰＴＹ）を含むことが可能である。ＮＦＡは、次のＦＣＢアドレスをポイントし、これにより、ＦＣＢ空き待ち行列２２２の中のＦＣＢを連鎖させることが可能になる。ＢＣＮＴフィールドは、ＦＣＢに関連する１つまたは複数のＢＣＢのバイト・カウント長を含むことが可能である。
【００６２】
情報は、ＦＦＣＢ５００の中にではなく、ＢＦＣＢ４００の中に記憶されることが可能である。というのは、ＦＣＢ空き待ち行列２２２は、以下にさらに説明するとおり、スケジューラ１３０によってではなく、データ・フロー部１１０によって扱われるからである。したがって、ＦＣＢ空き待ち行列２２２の中に存在するＦＣＢのＢＦＣＢ４００の中のフィールドは、有効な情報を含み、他方、ＦＣＢ空き待ち行列２２２の中に存在するＦＣＢのＦＦＣＢ５００の中のフィールドは、無効な情報を含むことが可能である。
【００６３】
前述したとおり、ＦＣＢアービタ２０６は、送信機コントローラのＰＣＢ２２４からの送信された処理済みのフレーム・データに関連するＦＣＢを受け取るように構成されることが可能であり、ＦＣＢは、ＰＣＢ２２４によってＦＣＢ空き待ち行列２２２の中に入れられることが可能である。ＰＣＢ２２４は、ＦＣＢ空き待ち行列２２２の中のＦＣＢのＢＦＣＢ４００にフィールドＮＦＡおよびＥＣＣに関する情報を書き込むようにメモリ２１０のＦＣＢＵ１  ２０９に書込み要求を発行することができる。ＰＣＢ２２４は、メモリ２２４のＦＣＢＵ２  ２２５に対してではなく、メモリ２１０のＦＣＢＵ１  ２０９に対してだけ、書込み要求を発行することができる。というのは、メモリ２１０は、データ・フロー部１１０に関連し、メモリ２２４は、スケジューラ１３０に関連しているからである。したがって、ＰＣＢ２２４は、ＦＣＢ空き待ち行列２２２の中に存在するＦＣＢのＦＦＣＢ５００のフィールド、例えば、ＮＦＡ、ＢＣＮＴに関連する情報を取り出すのに、メモリ２２４のＦＣＢＵ２  ２２５にアクセスしない。メモリ２２４にアクセスしないことにより、メモリ２２４の帯域幅の効率が向上する。
【００６４】
方法３００は、ＦＣＢの「ライフ・サイクル」を記述していることに留意されたい。さらに、方法３００は、ネットワーク・プロセッサ１００内部の他のＦＣＢの「ライフ・サイクル」も記述できることに留意されたい。さらに、１つまたは複数の異なるＦＣＢが、各待ち行列、例えば、ＧＱ２１８、フロー待ち行列２２３、ＴＢＱ２１５、ＦＣＢ空き待ち行列２２２の中に同時に存在することが可能であることにも留意されたい。
【図面の簡単な説明】
【００６５】
【図１】本発明に従って構成されたパケット・プロセッサを示す図である。
【図２】本発明に従って構成されたデータ・フロー部を示す図である。
【図３】フレーム制御ブロックの中の所望の情報を得るメモリ・アクセスの回数を減らすための方法を示す流れ図である。
【図４】データ・フロー部のＦＣＢ空き待ち行列の中に存在するＦＣＢの基本ＦＣＢの本発明の実施形態を示す図である。
【図５】データ・フロー部のＦＣＢ空き待ち行列の中に存在するＦＣＢのフローＦＣＢの本発明の実施形態を示す図である。
【図６】データ・フロー部のＧＱの中に存在するＦＣＢの基本ＦＣＢの本発明の実施形態を示す図である。
【図７】データ・フロー部のＧＱの中に存在するＦＣＢのフローＦＣＢの本発明の実施形態を示す図である。
【図８】スケジューラのフロー待ち行列の中に存在するＦＣＢの基本ＦＣＢの本発明の実施形態を示す図である。
【図９】スケジューラのフロー待ち行列の中に存在するＦＣＢのフローＦＣＢの本発明の実施形態を示す図である。
【図１０】データ・フロー部のＴＢＱの中に存在するＦＣＢの基本ＦＣＢの本発明の実施形態を示す図である。
【図１１】データ・フロー部のＴＢＱの中に存在するＦＣＢのフローＦＣＢの本発明の実施形態を示す図である。
【図１】
2004530323.tif 000002
【図２】
2004530323.tif 000003
【図３】
2004530323.tif 000004
【図４】
2004530323.tif 000005
【図５】
2004530323.tif 000006
【図６】
2004530323.tif 000007
【図７】
2004530323.tif 000008
【図８】
2004530323.tif 000009
【図９】
2004530323.tif 000010
【図１０】
2004530323.tif 000011
【図１１】
2004530323.tif 000012
【国際公開パンフレット】
2004530323.tif 000013
2004530323.tif 000014
2004530323.tif 000015
2004530323.tif 000016
2004530323.tif 000017
2004530323.tif 000018
2004530323.tif 000019
2004530323.tif 000020
2004530323.tif 000021
2004530323.tif 000022
2004530323.tif 000023
2004530323.tif 000024
2004530323.tif 000025
2004530323.tif 000026
2004530323.tif 000027
2004530323.tif 000028
2004530323.tif 000029
2004530323.tif 000030
2004530323.tif 000031
2004530323.tif 000032
2004530323.tif 000033
2004530323.tif 000034
2004530323.tif 000035
2004530323.tif 000036
2004530323.tif 000037
2004530323.tif 000038
2004530323.tif 000039
2004530323.tif 000040
2004530323.tif 000041
2004530323.tif 000042
2004530323.tif 000043
【国際公開パンフレット（コレクトバージョン）】
2004530323.tif 000044
【国際調査報告】
2004530323.tif 000045
2004530323.tif 000046