(57)【特許請求の範囲】
【請求項１】
ネットワークとこのネットワークを介して通信を行うホストとの間に接続された通信制御装置において、
前記ネットワークと前記ホストとの間のパケットの送受信処理を行う複数の第１のプロセッサ（１１０）と、
この複数の第１のプロセッサに対して前記送受信処理の割り当てを行う第２のプロセッサ（１２０）と、
前記複数の第1のプロセッサのそれぞれに対応して設けられ、前記ホストにおいて前記パケットの送受信の単位に生成されて前記送受信処理に使用される制御情報を格納するメモリ（１１０６、１１０７）とを含み、
前記メモリは、対応する前記第１のプロセッサが前記制御情報を参照するためにアクセスする第１の領域と、当該アクセスの間に前記制御情報が格納される第２の領域とを含むことを特徴とする通信制御装置。
【請求項２】
前記第１のプロセッサは、前記第１の領域を参照して実行下送受信処理が完了すると、前記第２の領域を参照するよう切り替える切り替え手段を含むことを特徴とする請求項１記載の通信制御装置。
【請求項３】
複数の送受信処理の単位の制御情報を格納する第２のメモリと、
前記第２のメモリから前記メモリに前記制御情報を転送する転送手段（１１０４）とをさらに含むことを特徴とする請求項１記載の通信制御装置。
【請求項４】
前記第２のメモリから前記メモリへの前記制御情報の転送量を設定する手段をさらに含むことを特徴とする請求項３記載の通信制御装置。
【請求項５】
複数の送受信処理の単位の制御情報を格納する第２のメモリと、
前記第２のメモリから前記メモリに前記制御情報を転送する転送手段（１１０４）と、
前記切り替え手段が前記第１および第２の領域を切り替えると、前記第１の領域の前記制御情報が前記第２のメモリに書き戻されることを特徴とする請求項２記載の通信制御装置。
【請求項６】
前記第２のプロセッサは、前記送受信処理を該送受信処理の単位毎に前期複数の第１のプロセッサに対し互いに排他的に割り当てることを特徴とする請求項１記載の通信制御装置。
【請求項７】
前記メモリはデュアルポートメモリであり、少なくとも２バンクで構成されていることを特徴とする請求項１記載の通信制御装置。
【請求項８】
同一単位の送受信処理が連続する場合には前記制御情報を前記第１の領域から前記第２の領域に転送することを特徴とする請求項１記載の通信制御装置。
【請求項９】
前記第１のプロセッサが前記第１の領域の前記制御情報を参照して処理をしている場合に、他の制御情報が必要になり、かつ、該他の制御情報が前記第２の領域に格納されているときは、前記第２の領域から前記第１の領域に該他の制御情報を転送することを特徴とする請求項１記載の通信制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、通信制御装置に関し、特に、ネットワークとホストとの間に接続された通信制御装置に関する。
【０００２】
【従来の技術】
従来、ネットワークサーバはインターネット等の通信ネットワークの処理を行っている。インターネットでは通信プロトコルとしてＴｒａｎｓｍｉｓｓｉｏｎＣｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ（ＴＣＰ／ＩＰ）を用いているが、このプロトコルを処理するための重負荷がネットワークサーバのホストにかかる。
【０００３】
この問題を解決するために、ホストとネットワークとの間に複数の通信制御装置を組み込み、ある程度のＴＣＰ／ＩＰ処理を通信制御装置側で実行させ、ホストの負荷を減らす方法がある。このような従来の通信制御装置がパケットの送受信処理を行う場合、コネクション毎に定義されるコンテキスト情報を参照する必要がある。コンテキスト情報は、そのコネクション間での送受信処理を維持するための情報であって、ホストが所有しており、パケット処理の度にネットワークプロセッサにより参照される。
【０００４】
【発明が解決しようとする課題】
一般的に、コンテキスト情報は、プロトコル種別にもよるが、１２８バイトから１キロバイトに及ぶ。また、ネットワークプロセッサからのコンテキスト情報へのアクセス頻度は高い。従来の通信制御装置では、必要なコンテキスト情報をいちいちホストから獲得するため、コンテキスト情報の高速アクセスと低レイテンシとを達成できないという問題がある。また、コンテキスト情報は通信制御装置がサポートするコネクション数と同数必要である。多数のコネクションをサポートし、かつ、複数のネットワークプロセッサで各コネクション処理を負荷分散する場合、従来の通信制御装置では、コンテキスト情報を保持するメモリの負荷や競合による性能劣化が生じてしまうという問題がある。
【０００５】
そこで、本発明の目的は、コンテキスト情報を高速に獲得できる通信制御装置を提供することにある。
【０００６】
また、本発明の他の目的は、コンテキスト情報を格納するメモリへのアクセス競合を防ぐことができる通信制御装置を提供することにある。
【０００７】
【課題を解決するための手段】
上記課題を解決するために本発明の通信制御装置は、ネットワークとこのネットワークを介して通信を行うホストとの間に接続された通信制御装置であって、前記ネットワークと前記ホストとの間のパケットの送受信処理を行う複数の第１のプロセッサと、この複数の第１のプロセッサに対して前記送受信処理の割り当てを行う第２のプロセッサと、前記複数の第1のプロセッサのそれぞれに対応して設けられ、前記ホストにおいて前記パケットの送受信の単位に生成されて前記送受信処理に使用される制御情報を格納するメモリとを含み、前記メモリは、対応する前記第１のプロセッサが前記制御情報を参照するためにアクセスする第１の領域と、当該アクセスの間に前記制御情報が格納される第２の領域とを含むことを特徴とする。
【０００８】
また、本発明の他の通信制御装置は、前記第１のプロセッサは、前記第１の領域を参照して実行下送受信処理が完了すると、前記第２の領域を参照するよう切り替える切り替え手段を含むことを特徴とする。
【０００９】
さらに、本発明の他の通信制御装置は、複数の送受信処理の単位の制御情報を格納する第２のメモリと、前記第２のメモリから前記メモリに前記制御情報を転送する転送手段とをさらに含むことを特徴とする。
【００１０】
また、本発明の他の通信制御装置は、前記第２のメモリから前記メモリへの前記制御情報の転送量を設定する手段をさらに含むことを特徴とする。
【００１１】
さらに、本発明の他の通信制御装置は、複数の送受信処理の単位の制御情報を格納する第２のメモリと、前記第２のメモリから前記メモリに前記制御情報を転送する転送手段と、前記切り替え手段が前記第１および第２の領域を切り替えると、前記第１の領域の前記制御情報が前記第２のメモリに書き戻されることを特徴とする。
【００１２】
また、本発明の他の通信制御装置は、前記第２のプロセッサは、前記送受信処理を該送受信処理の単位毎に前期複数の第１のプロセッサに対し互いに排他的に割り当てることを特徴とする。
【００１３】
さらに、本発明の他の通信制御装置は、前記メモリはデュアルポートメモリであり、少なくとも２バンクで構成されていることを特徴とする。
【００１４】
また、本発明の他の通信制御装置は、同一単位の送受信処理が連続する場合には前記制御情報を前記第１の領域から前記第２の領域に転送することを特徴とする。
【００１５】
さらに、本発明の他の通信制御装置は、前記第１のプロセッサが前記第１の領域の前記制御情報を参照して処理をしている場合に、他の制御情報が必要になり、かつ、該他の制御情報が前記第２の領域に格納されているときは、前記第２の領域から前記第１の領域に該他の制御情報を転送することを特徴とする。
【００１６】
【発明の実施の形態】
次に本発明の通信制御装置の実施の形態について図面を参照して詳細に説明する。
【００１７】
図１を参照すると、本発明の通信制御装置１００を含むシステムは、少なくとも１つの中央処理装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：ＣＰＵ）１０、プロセッサバス２０、メモリコントローラ３０、ホストメモリ４０、入出力（Ｉ／Ｏ）コントローラ５０、Ｉ／Ｏバス６０、Ｉ／Ｏデバイス７０および通信制御装置１００を含む。
【００１８】
少なくとも１つのＣＰＵ１０は、プロセッサバス２０を介して、メモリコントローラ３０に接続されている。本実施の形態では、２つのＣＰＵ１０がプロセッサバス２０に接続されている。メモリコントローラ３０は、ＣＰＵ１０とホストメモリ４０とＩ／Ｏコントローラ５０との間の制御を行う。Ｉ／Ｏコントローラ５０にはＩ／Ｏバス６０を介して単一または複数のＩ／Ｏデバイス７０が接続されている。通信制御装置１００は、Ｉ／Ｏバス６０に接続されている。通信制御装置１００はイーサーネット（登録商標）などのＬｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＬＡＮ）等のネットワークメディア１５０の制御を行う。通信制御装置１００もＩ／Ｏデバイスの一種である。以後、この基本システムにおけるＩ／Ｏバス６０より上位側を単純にホストという。
【００１９】
なお、このシステムは一例であり、本発明の通信制御装置は上位システムには依存しない。また例として挙げたシステムは、パーソナルコンピュータ、ワークステーションまたはサーバのシステムであってよい。この場合、Ｉ／Ｏバス６０はＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）バスまたはＰＣＩ−Ｘバスで構成してよい。ネットワークメディア１５０はイーサネット（登録商標）、ギガビットイーサネット（イーサネットは登録商標）や無線などのLANまたはインターネットであってよい。
【００２０】
図２を参照すると、通信制御装置１００は、Ｉ／Ｏバスコントローラ１０１、複数のオフロードプロセッサユニット（ＯＰＵ）１１０、スケジューラプロセッサユニット（ＳＰＵ）１２０、メディアアクセスコントローラ１３０、パケット識別子１３１、メモリコントローラ１４０、パケットバッファ１４１、Ｔｘキュー１５０、Ｒｘキュー１６０、ハッシュサーチエンジン１７０、メモリコントローラ１８０およびメモリコントローラ１９０を含む。
【００２１】
Ｉ／Ｏバスコントローラ１０１は、Ｉ／Ｏバス６０と通信制御装置１００との間のデータ転送を制御する。Ｉ／Ｏバスコントローラ１０１は、ＰＣＩコントローラであってよい。
【００２２】
メディアアクセスコントローラ１３０は、ギガビット・イーサネット（イーサネットは登録商標）などのネットワークメディアを制御し、ネットワーク１５１と通信制御装置１００との間のデータの送受信を行う。パケット識別子１３１は、受信パケットのヘッダ部を解析し、コネクションの特定に必要となる情報を抜き出す。ハッシュサーチエンジン１７０は、パケット情報のハッシュサーチを行う。
【００２３】
パケットバッファ１４１は、メモリコントローラ１４０を介して受信パケットおよび送信パケットを格納する。
【００２４】
Ｔｘキュー１５０は、ホストからの送信要求をキューイングする。Ｒｘキュー１６０は、ハッシュサーチの結果をキューイングする。スケジューラプロセッサユニット１２０は、Ｔｘキュー１５０およびＲｘキュー１６０の内容に基づいて送受信のスケジューリングを行う。
【００２５】
メモリコントローラ１８０は、Ｉ／Ｏバスコントローラ１０１および複数のＯＰＵの命令・データメモリ１８１に対する書き込み・読み出しを制御する。命令・データメモリ１８１は、通信制御装置１００内の各プロセッサの命令やデータなどを格納する。メモリコントローラ１９０は、ハッシュサーチエンジン１７０およびＯＰＵ１１０のＰＣＢメモリ１９１に対する書き込み・読み出しを制御する。ＰＣＢメモリ１９１は、ハッシュサーチ用のハッシュテーブルや、ホストによって生成されたそれぞれのコネクション固有のコンテキスト情報などを格納する。本実施の形態では、コンテキスト情報は、プロトコル・コントロール・ブロック（Ｐｒｏｔｏｃｏｌ  Ｃｏｎｔｒｏｌ  Ｂｌｏｃｋ：ＰＣＢ）である。ＰＣＢは、コネクション毎に生成され送受信に使用される。
【００２６】
複数のオフロードプロセッサユニット１１０の各々は、受信パケットのプロトコル解析およびホストメモリ４０へのデータ転送の起動や、送信データ転送の起動および送信処理などを行う。それぞれのオフロードプロセッサユニット１１０は、ネットワークプロセッサユニットを含む。
【００２７】
図３を参照すると、オフロードプロセッサユニット１１０は、ネットワークプロセッサ１１０１、プロセッサコントローラ１１０２、ディスパッチキュー１１０３、ＤＭＡエンジン１１０４、メモリコントローラ１１０５およびローカルデータメモリ１１０６および１１０７を含む。
【００２８】
ネットワークプロセッサ１１０１のプロセッサインタフェースはプロセッサコントローラ１１０２に接続されている。プロセッサコントローラ１１０２は、各種制御用レジスタを持ち、命令／データメモリ１８１を含む通信制御装置１００内のリソースにアクセスすることができる。
【００２９】
メモリコントローラ１１０５は、ネットワークプロセッサ１１０１のローカルデータメモリ１１０６および１１０７に対する書き込み・読み出しを制御する。ローカルデータメモリ１１０６および１１０７は、２バンク構成のデュアルポートメモリである。ローカルデータメモリ１１０６および１１０７の各々の一方のポートはメモリコントローラ１１０５を介してネットワークプロセッサ１１０１に接続され、他方のポートはＤＭＡエンジン１１０４に接続されている。ＤＭＡエンジン１１０４は、ＰＣＢメモリ１９１およびスケジューラプロセッサユニット１２０（のパケット情報メモリ１２１７）に接続されている。ＤＭＡエンジン１１０４は、プロセッサコントローラ１１０２を介してネットワークプロセッサ１１０１からも利用可能となっている。
【００３０】
図４を参照すると、ローカルデータメモリ１１０６は、パケット情報を格納する領域１１０６１およびＰＣＢを格納する領域１１０６２を有する。本実施の形態では、パケット情報は６４バイト、ＰＣＢは１６から１０２４バイトである。ローカルデータメモリ１１０７も同様の構成を有する。
【００３１】
再び図３を参照すると、ネットワークプロセッサ１１０１からアクセスされるローカルデータメモリ１１０６および１１０７は常に一方のみになるように制御される。すなわち、ローカルデータメモリ１１０６および１１０７のうちいずれか一方のバンクがネットワークプロセッサ１１０１からのアクセス対象となる。２つのバンクが同時にネットワークプロセッサ１１０１のアクセス対象となることはない。バンクの切り替えはハードウェアによって制御される。ネットワークプロセッサ１１０１はバンクの切り替えを意識する必要はない。具体的には、バンクの切替はメモリコントローラ１１０５により行われる。１つのディスパッチ処理が完了するとオフロードプロセッサユニット１１０は、プロセス完了レジスタ１１０２３に処理が完了した旨の情報を格納する。メモリコントローラ１１０５は、プロセス完了レジスタ１１０２３にディスパッチ処理完了が書き込まれると、バンクの切替を行う。
【００３２】
ＤＭＡエンジン１１０４は、スケジューラプロセッサユニット１２０からのディスパッチを受けたディスパッチキュー１１０３からＰＣＢＩＤが通知されると、該当するＰＣＢをＰＣＢメモリ１９１からリードし、ネットワークプロセッサ１１０１に現在接続されているローカルデータメモリ１１０６または１１０７のバンク（以後、表バンクまたはプライマリバンクという、ネットワークプロセッサ１１０１に現在接続されていないバンクを裏バンクまたはセカンダリバンクという）に展開する。
【００３３】
ディスパッチキュー１１０３は、本実施の形態では、ローカルデータメモリ１１０６および１１０７のバンク数に対応して２エントリで構成される。
【００３４】
プロセッサコントローラ１１０２は、ディスパッチキューレジスタ１１０２１、ＤＭＡエンジンコントロールレジスタ１１０２２およびプロセス完了レジスタ１１０２３を有している。
【００３５】
図５を参照すると、ディスパッチキューレジスタ１１０２１は、プライマリバンクおよびセカンダリバンクのそれぞれに対応するディスパッチ状況、送信／受信種別およびＰＣＢＩＤを格納している。ディスパッチキューレジスタ１１０２１は、ネットワークプロセッサ１１０１がアイドル状態のときにポーリングし続けるレジスタである。
【００３６】
図６を参照すると、ＤＭＡエンジンコントロールレジスタ１１０２２は、スタート／ビジー、リード／ライトのコマンド、転送サイズ、転送するＰＣＢのＩＤ、ＰＣＢデータのオフセットおよびローカルデータメモリ１１０６および１１０７のオフセットを格納している。
【００３７】
図７を参照すると、プロセス完了レジスタ１１０２３は、スタート／ビジーを格納している。
【００３８】
図８を参照すると、スケジューラプロセッサユニット１２０は、スケジューラプロセッサ１２０１、ＰＣＢＩＤテーブル１２０２およびプロセッサコントローラ１２１０を含む。
【００３９】
スケジューラプロセッサ１２０１は、プロセッサコントローラ１２１０に接続されている。プロセッサコントローラ１２１０は、ディスパッチレジスタ１２１１、比較レジスタ１２１２、結果レジスタ１２１３、Ｔｘキューレジスタ１２１４、Ｒｘキューレジスタ１２１５、ＯＰＵステイタスレジスタ１２１６およびパケット情報メモリ１２１７を含む。
【００４０】
図９を参照すると、ディスパッチレジスタ１２１１は、オフロードプロセッサユニット１１０へディスパッチするときに使用されるもので、送受信の区別、Ｑ．Ｅｎｔｒｙおよびディスパッチされるオフロードプロセッサユニット１１０のＩＤを格納している。Ｑ．Ｅｎｔｒｙは、パケット情報が格納されているパケット情報メモリ１２１７のアドレスを示すものである。
【００４１】
再び図８を参照すると、比較レジスタ１２１２は、これからディスパッチするパケット処理のＰＣＢＩＤを格納するもので、既にディスパッチされているパケット処理のＰＣＢＩＤの比較に使用される。結果レジスタ１２１３は、ＰＣＢＩＤの比較結果を格納する。Ｔｘキューレジスタ１２１４は、Ｔｘキュー１５０の先頭数エントリ分をスケジューラプロセッサ１２０１へ参照させるもので、シフトキュー構造となっている。Ｒｘキューレジスタ１２１５は、Ｒｘキュー１６０の先頭数エントリ分をスケジューラプロセッサ１２０１へ参照させるもので、シフトキュー構造となっている。ＯＰＵステイタスレジスタ１２１６は、オフロードプロセッサユニット１１０の現在のプロセス処理状態を示す。
【００４２】
図１０を参照すると、Ｒｘキューレジスタ１２１５は、本実施の形態では、Ｒｘキュー１６０の先頭８エントリが参照できるよう構成されている。Ｒｘキューレジスタ１２１５において、各エントリには１つのＰＣＢＩＤが格納されている。Ｔｘキューレジスタ１２１４も同様の構成を有する。本実施の形態では、Ｔｘキューレジスタ１２１４およびＲｘキューレジスタ１２１５のエントリ数をそれぞれ８としたが、それに限らず適宜設定してもよい。
【００４３】
図１１を参照すると、ＯＰＵステイタスレジスタ１２１６は、オフロードプロセッサユニット１１０の現在の状況を保持している。本実施の形態では、オフロードプロセッサユニット１１０の数を４個とし、一度に受け付けられるディスパッチの数を、プライマリとセカンダリの２個であるとする。ＯＰＵステイタスレジスタ１２１６は、各オフロードプロセッサユニット１１０に対して送信／受信のどちらのディスパッチが現在なされているかを示している。ＯＰＵステイタスレジスタ１２１６は、プライマリに対応する４つのエントリとセカンダリに対応する４つのエントリを含む。８つのエントリの各々には、「００」、「０１」または「１０」のいずれかが格納される。「００」は対応するオフロードプロセッサユニット１１０がアイドル中であることを示す。「０１」は対応するオフロードプロセッサユニット１１０が受信動作中であることを示す。「１０」は対応するオフロードプロセッサユニット１１０が送信動作中であることを示す。
【００４４】
ＯＰＵステイタスレジスタ１２１６は、各オフロードプロセッサユニット１１０の負荷状況を得るほかにも、複数のオフロードプロセッサユニット１１０全体で処理が送信または受信に偏るのを防ぐためにもスケジューラプロセッサユニット１２０がディスパッチするときに参照される。このような偏りを防ぐための制御は、例えば、本実施の形態では、２つのオフロードプロセッサユニット１１０を受信専用にし２つのオフロードプロセッサユニット１１０を送信専用に決めておき、これを満たすようにスケジューラプロセッサユニット１２０がディスパッチを行うようにすれば良い。
【００４５】
再び図８を参照すると、既にオフロードプロセッサユニット１１０へ、あるＰＣＢＩＤのパケット処理がディスパッチ済みの場合、同一のＰＣＢＩＤのディスパッチ要因（パケット処理）があるときは、該ディスパッチ要因を同じオフロードプロセッサユニット１１０へディスパッチする必要がある。このため、スケジューラプロセッサ１２０１は、現在オフロードプロセッサユニット１１０にディスパッチされているＰＣＢＩＤと、これからディスパッチしようとするＰＣＢＩＤを全比較し、一致するオフロードプロセッサユニット１１０にディスパッチ要因をディスパッチする。この比較に費やされる処理時間は、オフロードプロセッサユニット１１０の数とオフロードプロセッサユニット１１０が受け付け可能なディスパッチ数とに依存するが、スケジューラプロセッサユニット１２０のディスパッチ処理において、実行時間が最も必要とされる処理である。ところで、ネットワークポートを複数持つ通信制御装置においては、複数のポートから同時に送受信要求が発生することがある。本発明の通信制御装置は、図２に示すように、オフロードプロセッサユニット１１０を複数設けておりこれらの送受信要求のパケット処理をパラレルで実行する能力を有している。スケジューラプロセッサユニット１２０は、複数の送受信要求を複数のオフロードプロセッサユニット１１０で均等に処理するよう負荷分散を図りディスパッチする。ところが、通信制御装置は、スケジューラプロセッサユニット１２０を１つ備えている。すなわち、１つのスケジューラプロセッサユニット１２０がディスパッチ処理の全てを一手に請け負っている。本実施の形態では、ディスパッチ処理がスケジューラプロセッサユニット１２０においてシリアルになっており、スケジューラプロセッサユニット１２０が通信制御装置の性能のボトルネックとなる可能性がある。
【００４６】
このように最も処理時間を要し、また、性能にとってクリティカルなＰＣＢＩＤの比較処理を別途ハードウェアでサポートするために、スケジューラプロセッサユニット１２０にＰＣＢＩＤテーブル１２０２が設けられている。ＰＣＢＩＤテーブル１２０２は、スケジューラプロセッサ１２０１が各オフロードプロセッサユニット１１０にディスパッチしたパケット処理のＰＣＢＩＤを全て保持しており、オフロードプロセッサユニット１１０から処理完了が通知されると該当ＰＣＢＩＤをクリアする。ＰＣＢＩＤテーブル１２０２は、複数のオフロードプロセッサユニット１１０のそれぞれについてオフロードプロセッサユニット１１０のディスパッチキュー１１０３のエントリ数と同一数のエントリを有する。本実施の形態では、ディスパッチキュー１１０３のエントリ数が２であるため、各オフロードプロセッサユニット１１０についてプライマリおよびセカンダリの２エントリからなる。具体的には、比較レジスタ１２１２にディスパッチ対象パケット処理のＰＣＢＩＤをセットすると、コンパレータによりＰＣＢＩＤテーブル１２０２内のＰＣＢＩＤ値と比較レジスタ１２１２値とが全比較され、一致したオフロードプロセッサユニット１１０の番号が結果レジスタ１２１２に格納される。更に詳細には、ＰＣＢＩＤテーブル１２０２は、各エントリ毎に対応したコンパレータを有している。本実施の形態では、ＰＣＢＩＤテーブル１２０２は、オフロードプロセッサユニット１１０が４個で、各オフロードプロセッサユニット１１０のディスパッチキュー１１０３の深さがプライマリおよびセカンダリの２であるため、計８個のコンパレータを含む。比較レジスタ１２１２のＰＣＢＩＤがＰＣＢＩＤテーブル１２０２に入力されると、ＰＣＢＩＤテーブル１２０２の全てのエントリのＰＣＢＩＤと一度に比較され、ＰＣＢＩＤが一致したエントリのビットがセットされて返される。ハードウェアによる比較時間は１クロックで完了することから、スケジューラプロセッサユニット１２０のスケジューラプロセッサ１２０１のプログラムであれば数十ステップを費やすような負荷が大きい処理の実行時間を短縮することができる。
【００４７】
図１２を参照すると、本実施の形態のある時間のＰＣＢＩＤテーブル１２０２において、ＯＰＵ＃０のオフロードプロセッサユニット１１０にはＰＣＢＩＤ＃０のコネクションに関するパケット処理がプライマリにディスパッチされている。ＯＰＵ＃１のオフロードプロセッサユニット１１０には、ＰＣＢＩＤ＃１のコネクションに関するパケット処理がプライマリに、ＰＣＢＩＤ＃５のコネクションに関するパケット処理がセカンダリにそれぞれディスパッチされている。ＯＰＵ＃２のオフロードプロセッサユニット１１０にはＰＣＢＩＤ＃２のコネクションに関するパケット処理がプライマリにディスパッチされている。ＯＰＵ＃３のオフロードプロセッサユニット１１０には、ＰＣＢＩＤ＃３のコネクションに関するパケット処理がプライマリに、ＰＣＢＩＤ＃３のコネクションに関するパケット処理がセカンダリにそれぞれディスパッチされている。
【００４８】
パケット情報メモリ１２１７は、パケット情報を格納している。スケジューラプロセッサユニット１２０は、ネットワークプロセッサ１１０１からの要請によりパケット情報を転送する回路を有しており、パケット情報メモリ１２１７に格納されたパケット情報がオフロードプロセッサユニット１１０に転送される。
【００４９】
次に、本発明の動作について図面を参照して説明する。
【００５０】
まず、ホストからネットワーク１５０にパケットを送信する場合に送信処理要求がキューイングされるまでの動作について説明する。
【００５１】
図１を参照すると、ホストが通信制御装置１００に対して送信要求を送付する。この場合、通信のコネクション番号としてＰＣＢＩＤをＩ／Ｏバスコントローラ１０１へ送る。Ｉ／Ｏバスコントローラ１０１は、ＰＣＢＩＤをＴｘキュー１５０へ送る。Ｔｘキュー１５０は、送信要求をキューイングする。
【００５２】
次に、ホストがネットワークからパケットを受信する場合に受信処理要求がキューイングされるまでの動作について説明する。
【００５３】
図２を参照すると、ホストは、ＰＣＢメモリ１９１のハッシュテーブルに対しマッチングパタンとそれに対応するＰＣＢＩＤを事前に登録する。例えば、プロトコル種別がインターネットなどで使用されるＴＣＰであれば、ハッシュのマッチングパタンとして ソースおよびデスティネーションＩＰアドレスと、ソースおよびデスティネーションポートIDとをハッシュテーブルに登録しておく。これらプロトコルと登録すべきマッチングパタンのルールは通信制御装置１００の仕様として規定されるが、本発明とは直接関係はないため、詳細については割愛する。
【００５４】
メディアアクセスコントローラ１３０は、ネットワークからパケットを受信する。メディアアクセスコントローラ１３０は、自分が属する通信制御装置１００宛のパケットをネットワークから取り込む。メディアアクセスコントローラ１３０で受信したパケットは、パケット識別子１３１を通過し、パケットのプロトコル種別の解析と、マッチングパタンのルールに従い、マッチングパタンの抽出が行われる。抽出されたマッチングパタンはパケット情報として、ハッシュサーチエンジン１７０へ送られ、ＰＣＢメモリ１９１に登録されたハッシュテーブルに対してハッシュサーチが行われる。ハッシュサーチの結果、マッチングしなかった場合は未登録コネクションとして、マッチングした場合はコネクション識別を示すＰＣＢＩＤをパケット情報へ書き込み、Ｒｘキュー１６０にキューイングする。
【００５５】
次に、スケジューラプロセッサユニット１２０が送受信要求のパケット処理を複数のオフロードプロセッサユニット１１０にディスパッチする動作について説明する。
【００５６】
図８を参照すると、スケジューラプロセッサ１２０１は、Ｔｘキューレジスタ１２１４とＲｘキューレジスタ１２１５とをポーリングし、ディスパッチ要因の有無を確認する。Ｔｘキューレジスタ１２１４およびＲｘキューレジスタ１２１５はそれぞれＴｘキュー１５０およびＲｘキュー１６０の先頭数エントリを参照することが可能で、各エントリの追い越しが可能なシフトキューである。スケジューラプロセッサ１２０１は、Ｔｘキューレジスタ１２１４およびＲｘキューレジスタ１２１５のそれぞれのエントリを上から順に参照しディスパッチ処理を行う。スケジューラプロセッサユニット１２０は、複数のオフロードプロセッサユニット１１０による共有リソースの競合を防ぐために、同一のＰＣＢＩＤを有するパケット処理を異なるオフロードプロセッサユニット１１０へディスパッチしてはならない。これは、複数のオフロードプロセッサユニット１１０が各コネクションの処理を行うときに、ＰＣＢメモリ１９１内にあるコネクション毎の情報を保持するＰＣＢにアクセスする必要があるためである。このように、スケジューラプロセッサユニット１２０はディスパッチの排他性を保証しなければならない。既にオフロードプロセッサユニット１１０へ、あるＰＣＢＩＤのパケット処理がディスパッチ済みの場合、同一のＰＣＢＩＤのディスパッチ要因（パケット処理）があるときは、該ディスパッチ要因（パケット処理）を同じオフロードプロセッサユニット１１０へディスパッチする必要がある。このため、スケジューラプロセッサ１２０１は、現在オフロードプロセッサユニット１１０にディスパッチされているパケット処理のＰＣＢＩＤと、これからディスパッチしようとするパケット処理のＰＣＢＩＤを全比較し、一致するオフロードプロセッサユニット１１０にディスパッチ要因（パケット処理）をディスパッチする。
【００５７】
図１２に示される例では、比較レジスタ１２１２にセットされたディスパッチ対象のパケット処理のＰＣＢＩＤ＃２が、ＰＣＢＩＤテーブル１２０２の全エントリのＰＣＢＩＤと同時に比較される。ＯＰＵ＃２のオフロードプロセッサユニット１１０のプライマリエントリに格納されたＰＣＢＩＤ＃２が、比較レジスタ１２１２にセットされたディスパッチ対象のＰＣＢＩＤ＃２と一致するため、ＰＣＢＩＤテーブル１２０２はＯＰＵ＃２を結果レジスタ１２１２に格納する。
【００５８】
図１３を参照すると、ＯＰＵ＃２のオフロードプロセッサユニット１１０にＰＣＢＩＤ＃２のパケット処理をディスパッチするため、ディスパッチレジスタ１２１１にＯＰＵ＃２が格納される。この例では、受信パケット処理として、受信を示す情報（Ｒｘ）が格納されている。Ｒｘキューレジスタ１２１５では、エントリ＃２のＰＣＢＩＤ＃２が掃き出され、後続のエントリがシフトする。ＰＣＢＩＤテーブル１２０２のＯＰＵ＃２のオフロードプロセッサユニット１１０に対応するセカンダリエントリには、ＰＣＢＩＤ＃２が格納される。
【００５９】
次に、本発明のディスパッチ処理の動作についてさらに詳細に説明する。
【００６０】
図３、８および１４を参照すると、本発明の通信制御装置では、同一のＰＣＢＩＤのパケット処理はなるべく同一のオフロードプロセッサユニット１１０へ一度にディスパッチする。このようにすれば、後述するように、オフロードプロセッサユニット１１０におけるＰＣＢの獲得が、ＰＣＢをＰＣＢメモリ１９１からいちいち読み出すのではなく、２つのローカルデータメモリ１１０６および１１０７の間でのバンク間コピーで済むためである。また、結果レジスタ１２１２において、示されたオフロードプロセッサユニット１１０が既に２個のディスパッチを受け付け処理中の場合、すなわちアイドル状態で無い場合は、Ｔｘキューレジスタ１２１４の１エントリをスキップして次のエントリを参照し、同様の操作を繰り返す。ただし、同一コネクションにおいては処理順序を保証しなければならないため、スキップした場合、先にスキップしたパケット処理のＰＣＢＩＤと等しいＰＣＢＩＤのパケット処理が現れた場合はさらにスキップする必要がある。スキップし続けた場合、８段あるＴｘキューレジスタ１２１４を全て参照した後、再度先頭に戻ってこの処理を繰り返す。Ｔｘキューレジスタ１２１４のリフィルは適宜行われる。
【００６１】
ステップＡ１において、プロセッサコントローラ１２１０は、Ｔｘキューレジスタのリードポインタを０にセットする。スケジューラプロセッサ１２０１は、Ｔｘキューレジスタのリードポインタが７であるか判別し(ステップＡ２)、７であれば、ステップＡ１に戻る。Ｔｘキューレジスタ１２１４のリードポインタが７でなければ、スケジューラプロセッサ１２０１は、そのリードポインタを用いてＴｘキューレジスタ１２１４を読み出す（ステップＡ３）。ステップＡ４において、スケジューラプロセッサ１２０１は、ディスパッチ要因（パケット処理）があるか否かを判別する。ディスパッチ要因（パケット処理）が無ければステップＡ１に戻る。ディスパッチ要因（パケット処理）があれば、スケジューラプロセッサ１２０１は、現在のリードポインタより前の全てのリードポインタを調べ、ディスパッチ要因（パケット処理）のＰＣＢＩＤと同一のＰＣＢＩＤがあるか否かを判別する（ステップＡ５）。同一のＰＣＢＩＤがあると判別した場合には、スケジューラプロセッサ１２０１はＴｘキューレジスタ１２１４のリードポインタをインクリメントしてステップＡ２に戻る。ステップＡ５において、同一のＰＣＢＩＤが無いと判別した場合、スケジューラプロセッサ１２０１は、Ｔｘキューレジスタ１２１４を読み出し（ステップＡ７）、読み出されたＰＣＢＩＤとＰＣＢＩＤテーブル１２０２のＰＣＢＩＤとを比較する（ステップＡ８）。ステップＡ９において、スケジューラプロセッサ１２０１は、この比較の結果、ディスパッチすべきオフロードプロセッサユニット１１０がヒットしたか否かを判別する。すなわち、スケジューラプロセッサ１２０１は、結果レジスタ１２１２にオフロードプロセッサユニット１１０の番号が格納されている否かにより、オフロードプロセッサユニット１１０がヒットしたか否かを判別する。
【００６２】
ステップＡ９において、オフロードプロセッサユニット１１０がヒットした場合は、スケジューラプロセッサ１２０１は、ヒットしたオフロードプロセッサユニット１１０がアイドル中であるか否かを判別する（ステップＡ１０）。ヒットしたオフロードプロセッサユニット１１０がアイドル中でなければ、ステップＡ６に移行する。ステップＡ１０において、ヒットしたオフロードプロセッサユニット１１０がアイドル中であれば、このオフロードプロセッサユニット１１０にパケット処理をディスパッチする（ステップＡ１１）。スケジューラプロセッサ１２０１は、ヒットした（ディスパッチした）オフロードプロセッサユニット１１０の２段目（セカンダリ）がアイドル中であるか否かを判別する（ステップＡ１２）。２段目がアイドル中で無ければ、ステップＡ１に戻る。２段目がアイドル中であれば、スケジューラプロセッサ１２０１は、Ｔｘキューレジスタ１２１４内に現在のＰＣＢＩＤと同一のＰＣＢＩＤを有するディスパッチ要因があるか否かを判別する（ステップＡ１３）。同一のＰＣＢＩＤを有するディスパッチ要因があれば、このディスパッチ要因もステップＡ１１でディスパッチしたオフロードプロセッサユニット１１０にディスパッチする（ステップＡ１４）。同一のＰＣＢＩＤを有するディスパッチ要因が無ければ、ステップＡ１に戻る。
【００６３】
ステップＡ９において、オフロードプロセッサユニット１１０がヒットしない場合、スケジューラプロセッサ１２０１は、アイドル中であるオフロードプロセッサユニット１１０があるか否かを判別する（ステップＡ１５）。アイドル中のオフロードプロセッサユニット１１０があれば、スケジューラプロセッサ１２０１は、ステップＡ１６において、１つまたは複数のアイドル中のオフロードプロセッサユニット１１０の任意のものに処理をディスパッチする。ステップＡ１５において、アイドル中のオフロードプロセッサユニット１１０が無いと判断されると、すなわち、複数のオフロードプロセッサユニット１１０のうちいずれのものもアイドル中でなければ、ステップＡ１に戻る。
【００６４】
なお、ここでは、Ｔｘキューレジスタ１２１４について説明したが、送信および受信のバランスを取るため、実際にはＴｘキューレジスタ１２１４とＲｘキューレジスタ１２１５の参照は交互に行われる。Ｒｘキューレジスタ１２１５を参照したディスパッチ処理も同様に行われる。
【００６５】
図１５を参照すると、図１４に示されるフローチャートに沿ってディスパッチをした場合のＲｘキューレジスタ１２１５の動作の一例が示される。前提条件として、ＯＰＵ＃３のオフロードプロセッサユニット１１０のみ、ＰＣＢＩＤ＃２が１個だけディスパッチされ、現在処理中であるとする。すなわち、ＰＣＢＩＤテーブル１２０２にはＯＰＵ＃３のプライマリのエントリにのみＰＣＢＩＤが、すなわち、ＰＣＢＩＤ＃２が格納されている。
【００６６】
状態１では、先頭のエントリ＃０としてＰＣＢＩＤ＃０が読み出され、ＰＣＢＩＤテーブル１２０２の全エントリとの比較の結果、ヒットするオフロードプロセッサユニット１１０が存在しない。したがって、アイドル状態の任意のオフロードプロセッサユニット１１０としてＯＰＵ＃０のオフロードプロセッサユニット１１０にディスパッチされる。また、Ｔｘキューレジスタ１２１４の後続に同一のＰＣＢＩＤとしてエントリ＃３にＰＣＢＩＤ＃０が存在しており、ＯＰＵ＃０のオフロードプロセッサユニット１１０は更にもう１個ディスパッチを受け入れることが可能であるから、エントリ＃３のＰＣＢＩＤ＃０をＯＰＵ＃０のオフロードプロセッサ１１０にディスパッチする。
【００６７】
状態２では、エントリ＃０のＰＣＢＩＤ＃１が読み出され、状態１と同様にしてＯＰＵ＃１のオフロードプロセッサユニット１１０にディスパッチされる。後続するエントリ＃３の同一ＰＣＢＩＤのＰＣＢＩＤ＃１もＯＰＵ＃１のオフロードプロセッサユニット１１０にディスパッチされる。
【００６８】
状態３において、エントリ＃０のＰＣＢＩＤ＃２が読み出され、ＰＣＢＩＤテーブルの全エントリとの比較の結果、ＯＰＵ＃３のオフロードプロセッサユニット１１０にヒットする。ＰＣＢＩＤ＃２のパケット処理は、ＯＰＵ＃３のオフロードプロセッサユニット１１０にディスパッチされる。状態３では、後続エントリにＰＣＢＩＤ＃２は格納されていないが、仮に格納されていても、この例では、既に１つのＰＣＢＩＤ＃２のパケット処理がＯＰＵ＃３のオフロードプロセッサユニットにディスパッチされていたため、これ以上ディスパッチすることはできない。
【００６９】
状態４では、エントリ＃０のＰＣＢＩＤ＃０が読み出されＰＣＢＩＤテーブルの全エントリと比較され、ＯＰＵ＃０のオフロードプロセッサユニット１１０にヒットするが、状態１で既に２個のパケット処理をディスパッチしており、この処理がまだ完了していないため、ＯＰＵ＃０のオフロードプロセッサユニット１１０へはこれ以上ディスパッチすることが出来ない。Ｔｘキューレジスタのリードポインタを進めエントリ＃１を読み出しても、このエントリ＃１は「リードポインタ以前に同じＰＣＢＩＤが存在する」という、図１４のフローチャートのステップＡ５のディスパッチルールのためこれもディスパッチすることは出来ない。この制限は同一のコネクションの処理順序を保証するためのものである。したがって、先頭から２エントリスキップしたエントリ＃２のＰＣＢＩＤ＃５が選択され、現状アイドルであるＯＰＵ＃２のオフロードプロセッサユニット１１０にディスパッチされる。
【００７０】
次に、送受信処理がディスパッチされたオフロードプロセッサユニット１１０の動作について詳細に説明する。
【００７１】
図３を参照すると、スケジューラプロセッサユニット１２０がオフロードプロセッサユニット１１０へディスパッチを行うと、ディスパッチキュー１１０３にパケット情報を格納するスケジューラプロセッサユニット１２０のパケット情報メモリ１２１７のアドレスがエンキューされる。ＤＭＡエンジン１１０４はスケジューラプロセッサユニット１２０のパケット情報メモリ１２１７からパケット情報を読み出し、ローカルデータメモリ１１０６および１１０７のうちの表バンクへストアする。パケット情報は、送信の場合はコネクション番号がセットされている。すなわち、パケット送信の場合は、ＰＣＢＩＤのみでパケット情報は無いが、送信または受信によらず、オフロードプロセッサユニット１１０はＰＣＢＩＤを得るためパケット情報メモリ１２１７にパケット情報を引き抜きにくるため、ＰＣＢＩＤ情報のみのパケット情報としてオフロードプロセッサユニット１１０に転送する。パケット受信の場合のパケット情報は、受信パケットに関する情報が６４バイトに集約されており、主にパケットのヘッダ情報、ハッシュサーチにより得られたＰＣＢＩＤ、パケットバッファのストア・アドレスなどが格納されている。
【００７２】
スケジューラプロセッサユニット１２０からのディスパッチを受けたディスパッチキュー１１０３からＰＣＢＩＤが通知されると、ＤＭＡエンジン１１０４は該当するＰＣＢをＰＣＢメモリ１９１からリードし、表バンクに展開する。
【００７３】
図３および４を参照すると、ＤＭＡエンジン１１０４はパケット情報中にセットされているＰＣＢＩＤから、さらにＰＣＢ本体をＤＭＡリードしてローカルデータメモリ１１０６および１１０７のうちの表バンクにストアする。パケット情報／ＰＣＢと、ネットワークプロセッサ１１０１が送受信処理に必要とする全ての情報とがローカルデータメモリ１１０６および１１０７にストアされた時点で、図５に示すディスパッチキューレジスタ１１０２１のプライマリバンクに相当するフィールドにディスパッチ完了通知をストアする。ディスパッチ完了通知は、具体的には、プライマリバリッドとプライマリＰＣＢＩＤとがディスパッチキューレジスタ１１０２１に書き込まれることで行われる。
【００７４】
なお、ＰＣＢの転送サイズを最適化するため、ホストがＰＣＢを生成する場合は、図１６で示されるＰＣＢデータ１１０６２の先頭にディスパッチ時のＤＭＡリードの際のデータ転送長をセットしておく。ＰＣＢデータ１１０６２は、図４に示されるローカルデータメモリ１１０６のＰＣＢを格納する領域１１０６２である。ＰＣＢメモリ１９１のメモリコントローラ１９０はＰＣＢデータを読み出すと同時にこの転送長を保持し、指定転送長に達したところでＤＭＡエンジンへのデータ転送を停止する。通常この転送長はネットワークプロセッサ１１０１における処理に必須となるＰＣＢデータのサイズをセットしておく。例外処理等で、さらに後続のＰＣＢデータが必要な場合は図６に示すＤＭＡエンジンコントロールレジスタ１１０２２により、ネットワークプロセッサ１１０１から直接ＤＭＡエンジン１１０４を操作することによりＰＣＢデータをリードすることが可能である。なお、転送サイズ値はネットワークプロセッサ１１０１によりいつでも書き換え可能であり、状況に応じたＰＣＢデータ転送が可能である。
【００７５】
ネットワークプロセッサ１１０１がプライマリバンクのＰＣＢへアクセスしパケットの送受信処理を実行中に、さらにスケジューラプロセッサユニット１２０からディスパッチを受けた場合、ＤＭＡエンジン１１０４はプライマリバンクと同様のパケット情報／ＰＣＢデータの転送処理をセカンダリバンクに対して行い、ディスパッチキューレジスタ１１０２１のセカンダリバンクに相当するフィールドにディスパッチの完了をセットする。ディスパッチ完了は、具体的には、セカンダリバリッドとセカンダリＰＣＢＩＤとがディスパッチキューレジスタ１１０２１に格納されることで行われる。ネットワークプロセッサ１１０１がプライマリバンクでの送受信処理を終えると図７に示すプロセス完了レジスタ１１０２３へ書き込むことによりバンクの切り替えが行われ、プライマリバンクとセカンダリバンクとが入れ替わる。セカンダリバンクとなった処理済みＰＣＢデータをＰＣＢメモリ１９１へ書き戻すため、ＤＭＡエンジン１１０４が自動的に起動され、ＰＣＢデータがＰＣＢメモリ１９１にＤＭＡ書き込みされる。同時にディスパッチキューレジスタ１１０２１もセカンダリの内容がプライマリへ移される。
【００７６】
図１７を参照すると、プライマリバンクの処理中に、次に処理すべきＰＣＢデータをＰＣＢメモリ１９１からセカンダリバンクへ転送している。
【００７７】
図１８を参照すると、プライマリバンクの処理が完了したことによりバンクを切り替えた時点では既にＰＣＢデータが存在しており、ＰＣＢデータ転送の遅延が隠蔽される。また、セカンダリバンクに移行したバンクのＰＣＢデータは現在のプライマリバンクの処理が行われている裏でＰＣＢメモリ１９１へ書き戻しが行われる。
【００７８】
図１９を参照すると、プライマリバンクおよびセカンダリバンク共に同一のＰＣＢＩＤがディスパッチされた場合は、プライマリバンク側の処理を終えるとバンクの切り替えをせず、セカンダリバンク側からプライマリバンク側へパケット情報のバンク間コピーが行われる。ＰＣＢデータはＰＣＢメモリ１９１から転送されるのではなく、プライマリバンクに既に存在するＰＣＢデータを使用し続ける。
【００７９】
図３および７を参照すると、バンク間コピーの間は、プロセス完了レジスタ１１０２３のビジービットがセットされ、ネットワークプロセッサ１１０１はこの間、ローカルデータメモリ１１０６および１１０７へのアクセスが禁じられる。図１９において、×印がバンク間コピー中はアクセス禁止であることを示している。
【００８０】
また、ネットワークプロセッサ１１０１が送受信処理中に現在処理中のＰＣＢと密接に関連する他ＰＣＢデータが必要となる場合がある。この場合、ネットワークプロセッサはＤＭＡエンジンコントロールレジスタ１１０２２により必要とされるＰＣＢＩＤを指定してＤＭＡ読み出しを行う。もし、指定ＰＣＢＩＤがセカンダリバンクにストア済みのＰＣＢＩＤと一致したならば、ＰＣＢメモリ１９１からＰＣＢデータを転送せず、図２０に示すとおり、セカンダリバンクに存在するＰＣＢデータをプライマリバンクに対しバンク間コピーを行う。
【００８１】
以上のように、本実施の形態では、通信制御装置１００内に複数のネットワークプロセッサ１１０を設け、コネクション毎に存在するコンテキスト情報をネットワークプロセッサ１１０１直近のローカルメモリ１１０６および１１０７にコピーすることにより、ＰＣＢデータへのアクセスの高速化を図り、さらにＰＣＢメモリ１９１でのアクセス競合を防ぐことができる。
【００８２】
また、本実施の形態では、ローカルメモリ１１０６および１１０７を多バンク構成とすることにより、セカンダリバンクに予めＰＣＢを読み出しておき、さらに処理を終えたＰＣＢデータの書き戻しもセカンダリバンクで行うことにより、ＰＣＢデータの転送遅延を防ぐことができる。
【００８３】
さらに、本実施の形態では、同一のＰＣＢがディスパッチされた場合や、セカンダリバンクに存在するＰＣＢデータをリードする場合などはローカルデータメモリ１１０６および１１０７の間でバンク間コピーを行うことにより、ＰＣＢメモリ１９１へのアクセス負荷を減らし、結果的にＰＣＢデータ転送の最適化、ネットワークプロセッサ１１０１の処理能力を効果的に上げることができる。
【００８４】
【発明の効果】
以上説明したように、本発明では、ネットワークプロセッサの直近に該ネットワークプロセッサ専用のローカルデータメモリを設け、ネットワークプロセッサにパケット処理をディスパッチしたときにコンテキスト情報（ＰＣＢデータ）をローカルデータメモリにコピーする。このため、本発明では、パケットの送受信処理のために必要となるコンテキスト情報をネットワークプロセッサが高速に獲得することができる。
【００８５】
本発明では、ローカルデータメモリを複数バンクで構成し、１つのバンクで処理している間に他のバンクへ次に処理すべきコンテキスト情報（ＰＣＢデータ）を転送する。また、本発明では、処理を終えたＰＣＢデータは処理中で無い裏バンクからＰＣＢメモリへ書き戻す。このため、ネットワークプロセッサがコンテキスト情報（ＰＣＢデータ）を必要とするときに常にローカルデータメモリに存在しており、ネットワークプロセッサに対してコンテキスト情報の転送遅延を生じさせないという効果も本発明にはある。
【００８６】
本発明では、最低限必要となるコンテキスト情報（ＰＣＢデータ）の転送サイズをコンテキスト情報（ＰＣＢデータ）の先頭にセットしておくことにより、ディスパッチ時のコンテキスト情報（ＰＣＢデータ）の転送をその指定サイズのみの転送にする。また、この転送サイズはネットワークプロセッサによりいつでも書き換え可能とした。よって、本発明では、通常必要とされない情報（例外処理の情報を含むＰＣＢデータ部分）が転送されず、必要とされるコンテキスト情報（ＰＣＢデータ）のみがネットワークプロセッサへ転送されることになり、コンテキスト情報（ＰＣＢデータ）を格納しているメモリのコンテキスト情報（ＰＣＢデータ）転送負荷を最適化することができる。
【００８７】
本発明において、スケジューラプロセッサはＰＣＢＩＤに基づいて排他的にディスパッチを行い、同一ＰＣＢＩＤの処理を連続して同じネットワークプロセッサにディスパッチする。この場合、パケット情報のみがバンク間コピーされ、コンテキスト情報（ＰＣＢデータ）がＰＣＢメモリよりリードされず、同一バンク上で使い回される。この結果、本発明では、ＰＣＢメモリのコンテキスト情報（ＰＣＢデータ）の転送量が削減され、結果的にコンテキスト情報（ＰＣＢデータ）の転送遅延がさらに小さくなる。
【図面の簡単な説明】
【図１】本発明の実施の形態を示す図である。
【図２】本発明の通信制御装置の実施の形態を示す図である。
【図３】本発明のオフロードプロセッサユニット１１０の実施の形態を示す図である。
【図４】本発明のローカルデータメモリ１１０６を示す図である。
【図５】本発明のディスパッチキューレジスタ１１０２１を示す図である。
【図６】本発明のＤＭＡエンジンコントロールレジスタ１１０２２を示す図である。
【図７】本発明のプロセス完了レジスタ１１０２３を示す図である。
【図８】本発明のスケジューラプロセッサユニット１２０の実施の形態を示す図である。
【図９】本発明のディスパッチレジスタ１２１１を示す図である。
【図１０】本発明のＲｘキューレジスタ１２１５を示す図である。
【図１１】本発明のＯＰＵステイタスレジスタ１２１６を示す図である。
【図１２】本発明のディスパッチ処理を示す図である。
【図１３】本発明のディスパッチ処理を示す図である。
【図１４】本発明のディスパッチ処理の動作の流れを示す図である。
【図１５】本発明のディスパッチ処理を示す図である。
【図１６】本発明のＰＣＢデータ１１０６２を示す図である。
【図１７】本発明のコンテキスト情報の転送を示す図である。
【図１８】本発明のコンテキスト情報の転送を示す図である。
【図１９】本発明のコンテキスト情報の転送を示す図である。
【図２０】本発明のコンテキスト情報の転送を示す図である。
【符号の説明】
１００  通信制御装置
１１０  オフロードプロセッサユニット
１２０  スケジューラプロセッサユニット
１３０  メディアアクセスコントローラ
１３１  パケット識別子
１４０  メモリコントローラ
１４１  パケットバッファ
１５０  Ｔｘキュー
１６０  Ｒｘキュー
１７０  ハッシュサーチエンジン
１８０  メモリコントローラ
１９０  メモリコントローラ
１１０１  ネットワークプロセッサ
１１０２  プロセッサコントローラ
１１０３  ディスパッチキュー
１１０４  ＤＭＡエンジン
１１０５  メモリコントローラ
１１０６、１１０７  ローカルデータメモリ
【図１】
0003757904.tif 000002
【図２】
0003757904.tif 000003
【図３】
0003757904.tif 000004
【図４】
0003757904.tif 000005
【図５】
0003757904.tif 000006
【図６】
0003757904.tif 000007
【図７】
0003757904.tif 000008
【図８】
0003757904.tif 000009
【図９】
0003757904.tif 000010
【図１０】
0003757904.tif 000011
【図１１】
0003757904.tif 000012
【図１２】
0003757904.tif 000013
【図１３】
0003757904.tif 000014
【図１４】
0003757904.tif 000015
【図１５】
0003757904.tif 000016
【図１６】
0003757904.tif 000017
【図１７】
0003757904.tif 000018
【図１８】
0003757904.tif 000019
【図１９】
0003757904.tif 000020
【図２０】
0003757904.tif 000021