(57)【要約】【課題】複数のプロトコル処理手段によるパイプライン処理を破綻させることなく、例えばＴＣＰＣＢ等のプロトコル制御情報へのアクセスを短時間に行うことを可能とする。【解決手段】サブプロセッサＡ１１１又はＤ１１４は、主メモリ１０４からプロトコル制御情報を転送し、主メモリ１０４より高速アクセス可能なＰＣＢキャッシュメモリ１２１に格納するための指示等を行う。サブプロセッサＢ１１２又はＣ１１３は、ＰＣＢキャッシュメモリ１２１に格納されるプロトコル制御情報にアクセスしてプロトコル処理を行う。サブプロセッサＡ１１１又はＤ１１４は、プロトコルスタックにおいてサブプロセッサＢ１１２又はＣ１１３より前段の処理を行う。【選択図】図２
2008146486.tif 000002
【特許請求の範囲】
【請求項１】
プロトコルスタックを処理して通信を行う通信装置であって、
プロトコル処理を制御するためのプロトコル制御情報を格納する第１の記録媒体からプロトコル制御情報を転送し、前記第１の記録媒体より高速アクセス可能な第２の記録媒体に格納するための指示、及び、プロトコル制御情報を新規に生成して前記第２の記録媒体に格納するための指示の少なくとも何れか一方の指示を行う第１のプロトコル処理手段と、
前記第２の記録媒体内に格納されるプロトコル制御情報にアクセスしてプロトコル処理を行う第２のプロトコル処理手段とを有し、
前記第１のプロトコル処理手段は、前記プロトコルスタックにおいて前記第２のプロトコル処理手段より前段の処理を行う手段であることを特徴とする通信装置。
【請求項２】
前記第１のプロトコル処理手段からの指示に応じて、前記第２の記録媒体に対する前記プロトコル制御情報の格納を制御する制御手段を更に有し、
前記制御手段は、前記第２の記録媒体にプロトコル制御情報を格納することができない場合、前記第２の記録媒体に格納されるプロトコル制御情報のうち、最終アクセスが古い記録領域のプロトコル制御情報から前記第１の記録媒体に対する転送を制御した後、前記第１のプロトコル処理手段からの指示に対応するプロトコル制御情報を前記第２の記録媒体に格納させることを特徴とする請求項１に記載の通信装置。
【請求項３】
前記制御手段による制御によって前記第２の記録媒体に格納されたプロトコル制御情報の記録領域に対する最終アクセスが新しいものとして管理する管理手段を更に有し、
前記制御手段は、前記管理手段による管理内容に従って、前記第２の記録媒体から最終アクセスが古い記録領域のプロトコル制御情報から前記第１の記録媒体に転送していくことを特徴とする請求項２に記載の通信装置。
【請求項４】
前記管理手段は、前記第２の記録媒体に格納されるプロトコル制御情報のうち、前記第２の記録媒体に転送を禁止するプロトコル制御情報が何れであるかを管理することを特徴とする請求項３に記載の通信装置。
【請求項５】
プロトコル通信チャネルを識別するための識別情報を、前記第２の記録媒体内のプロトコル制御情報にアクセスするためのアドレスに変換するアドレス変換手段を更に有することを特徴とする請求項１乃至４の何れか１項に記載の通信装置。
【請求項６】
プロトコルスタックを処理して通信を行う通信装置の制御方法であって、
プロトコル処理を制御するためのプロトコル制御情報を格納する第１の記録媒体からプロトコル制御情報を転送し、前記第１の記録媒体より高速アクセス可能な第２の記録媒体に格納するための指示、及び、プロトコル制御情報を新規に生成して前記第２の記録媒体に格納するための指示の少なくとも何れか一方の指示を行う第１のプロトコル処理ステップと、
前記第２の記録媒体内に格納されるプロトコル制御情報にアクセスしてプロトコル処理を行う第２のプロトコル処理ステップとを含み、
前記第１のプロトコル処理ステップは、前記プロトコルスタックにおいて前記第２のプロトコル処理ステップより前段の処理を行うことを特徴とする通信装置の制御方法。
【請求項７】
プロトコルスタックを処理して通信を行う通信装置の制御方法をコンピュータに実行させるためのプログラムであって、
プロトコル処理を制御するためのプロトコル制御情報を格納する第１の記録媒体からプロトコル制御情報を転送し、前記第１の記録媒体より高速アクセス可能な第２の記録媒体に格納するための指示、及び、プロトコル制御情報を新規に生成して前記第２の記録媒体に格納するための指示の少なくとも何れか一方の指示を行う第１のプロトコル処理ステップと、
前記第２の記録媒体内に格納されるプロトコル制御情報にアクセスしてプロトコル処理を行う第２のプロトコル処理ステップとをコンピュータに実行させ、
前記第１のプロトコル処理ステップは、前記プロトコルスタックにおいて前記第２のプロトコル処理ステップより前段の処理を行うことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロトコルスタックを処理して通信処理を行う技術に関するものである。
【背景技術】
【０００２】
ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）と総称されるプロトコル群の中で、特に、ＴＣＰは、中心的役割を担うコネクション型のプロトコルである。ＴＣＰコネクションは、２つのネットワークデバイスのそれぞれのＩＰアドレスとＴＣＰポート番号、これら４つの情報の組み合わせで表される。これらの情報の組み合わせをソケットペア又は単にソケットと称する。
【０００３】
近年、ＴＣＰ／ＩＰを搭載してネットワークに接続し、顧客の利便性を向上させる組み込み機器が急増している。これらの機器においては、ネットワーク上の任意のＰＣや携帯端末（携帯電話を含む）から組み込み機器の状態確認、設定変更、並びに、音声、静止画像及び動画像の授受を可能とさせるために、ＨＴＴＰサーバ機能を搭載している。
【０００４】
一方、イーサーネット（登録商標）に代表される通信メディアの速度も飛躍的に伸びている。それに伴い、ネットワークプロトコル処理を高速に実行できることも要求されている。
【０００５】
ところで、ギガビットイーサーネットのＦｕｌｌ−ｗｉｒｅの速度を達成するためには、動作周波数３ＧＨｚ程度のプロセッサが必要になると言われている。これは、今日の組み込み機器が一般的に搭載するプロセッサ能力をはるかに超えている。そこで、ＴＯＥ（ＴＣＰ／ＩＰオフロードエンジン）といったプロトコル処理に特化した補助的デバイスをシステムに付加し、広帯域なネットワーク通信を実現することが一般的になりつつある。ＴＯＥの従来例として、特許文献１に開示される技術を挙げることができる。
【０００６】
さて、プロトコル処理において重要となるのはＰＣＢの扱いである。ＰＣＢとは、プロトコル制御ブロック（Protocol Control Block）の略で、任意の通信プロトコルを処理する場合に必要なコンテキスト情報やその集合体の名称である。特に、ＴＣＰ／ＩＰプロトコルにおいては、ＴＣＰプロトコル制御ブロック（TCP Protocol Control Block）と称し、一般に、ＴＣＰＰＣＢ、ＴＣＰＣＢ、ＴＣＢ等と略す。
【０００７】
ＴＣＰＣＢは、コネクション毎に用意されている、数十種類のパラメータ（変数）で構成される。また、ＴＣＰパケットを受信する度に、どのＴＣＰＣＢを使うかを検索し、決定する必要がある。なお、ＴＣＰＣＢの各要素は、ＴＣＰ処理中に頻繁にアクセスされる変数であり、ＴＣＰ処理においては要になる変数である。
【０００８】
特許文献１に開示される発明においては、ＴＣＰ処理を行うのに必要なＰＣＢを、主メモリからＳＲＡＭ（スタティックランダムアクセスメモリ）等の高速な一次メモリに複製して保持することによりアクセスの高速化を実現している。このとき、コネクションの数が増え、全てのＰＣＢが一次メモリに収まらない場合は、必要なＰＣＢのみ一次メモリに存在するように主メモリとの間で入れ替え処理を行っている。
【０００９】
また、特許文献２には、プロトコルスタックを複数のプロセッサによってパイプライン的に処理することが開示されている。
【００１０】
【特許文献１】特表２００２−５２４００５号公報
【特許文献２】特開昭６２−１１７０５０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
特許文献１に開示される発明は、ＴＣＰパケットを受信する度に、どのＰＣＢを使うかを検索し、決定する必要がある。ＰＣＢの各要素は、ＴＣＰ処理中に頻繁にアクセスされる変数であり、ＴＣＰ処理の高速化を図るには、ＰＣＢの検索とアクセスの高速化は必須とされている。
【００１２】
また、特許文献２に開示される発明は、ＴＣＰ／ＩＰのような階層化されたプロトコルスタックを複数のプロセッサでパイプライン的に処理しており、高速化にとって有効である。しかしながら、パイプライン処理を破綻させないように処理を構成する必要がある。
【００１３】
この両者を組み合わせてプロトコルスタック処理を飛躍的に高速化させることが期待される。しかしながら、従来の方法では、ＰＣＢへのアクセス時に発生したキャッシュミス時のキャッシュ更新をオンデマンド的に行うので、パイプライン処理を破綻させてしまい、組み合わせの障害になっていた。このキャッシュミスは、ＰＣＢのキャッシュサイズがコネクション数に比べ小さい場合に頻発する。また、組込み系のシステムでは、コスト面からＰＣＢのキャッシュサイズを大きくできないので深刻である。
【００１４】
また、上述した組み込み機器上のＨＴＴＰサーバにおいては、異なるコネクションの通信パケットが入れ替わりに次々と組み込み機器に到達することが想定される。ＰＣＢへのアクセスを高速化する目的で高速アクセス可能な一次メモリである内蔵メモリやキャッシュメモリにＰＣＢを配置する方式であっても、前述の状況ではＰＣＢを頻繁に入れ替えなければならない。従って、ＰＣＢをキャッシュすることによる効果は無くなり、パフォーマンスの大幅な低下をきたす。
【００１５】
また、ＰＣＢの頻繁な入れ替えによって、却って、組み込み機器内のデータバス等の帯域を圧迫し、組み込み機器内の他のサービス性能の低下となり、追い討ち的に組み込み機器システム全体のパフォーマンス低下を招く結果となっている。
【００１６】
また、ＳＳＬ／ＴＬＳ通信においても、複数のセッションを識別し、そのセッション毎のＰＣＢが必要となる。ここでセッションは、ＴＣＰ通信のコネクションに相当する。このＳＳＬ／ＴＬＳ通信においてもＨＴＴＰサーバと同様な課題を抱える。
【００１７】
そこで、本発明の目的は、複数のプロトコル処理手段によるパイプライン処理を破綻させることなく、例えばＴＣＰＣＢ等のプロトコル制御情報へのアクセスを短時間に行うことを可能とすることにある。
【課題を解決するための手段】
【００１８】
本発明の通信装置は、プロトコルスタックを処理して通信を行う通信装置であって、プロトコル処理を制御するためのプロトコル制御情報を格納する第１の記録媒体からプロトコル制御情報を転送し、前記第１の記録媒体より高速アクセス可能な第２の記録媒体に格納するための指示、及び、プロトコル制御情報を新規に生成して前記第２の記録媒体に格納するための指示の少なくとも何れか一方の指示を行う第１のプロトコル処理手段と、前記第２の記録媒体内に格納されるプロトコル制御情報にアクセスしてプロトコル処理を行う第２のプロトコル処理手段とを有し、前記第１のプロトコル処理手段は、前記プロトコルスタックにおいて前記第２のプロトコル処理手段より前段の処理を行う手段であることを特徴とする。
本発明の通信装置の制御方法は、プロトコルスタックを処理して通信を行う通信装置の制御方法であって、プロトコル処理を制御するためのプロトコル制御情報を格納する第１の記録媒体からプロトコル制御情報を転送し、前記第１の記録媒体より高速アクセス可能な第２の記録媒体に格納するための指示、及び、プロトコル制御情報を新規に生成して前記第２の記録媒体に格納するための指示の少なくとも何れか一方の指示を行う第１のプロトコル処理ステップと、前記第２の記録媒体内に格納されるプロトコル制御情報にアクセスしてプロトコル処理を行う第２のプロトコル処理ステップとを含み、前記第１のプロトコル処理ステップは、前記プロトコルスタックにおいて前記第２のプロトコル処理ステップより前段の処理を行うことを特徴とする。
本発明のプログラムは、プロトコルスタックを処理して通信を行う通信装置の制御方法をコンピュータに実行させるためのプログラムであって、プロトコル処理を制御するためのプロトコル制御情報を格納する第１の記録媒体からプロトコル制御情報を転送し、前記第１の記録媒体より高速アクセス可能な第２の記録媒体に格納するための指示、及び、プロトコル制御情報を新規に生成して前記第２の記録媒体に格納するための指示の少なくとも何れか一方の指示を行う第１のプロトコル処理ステップと、前記第２の記録媒体内に格納されるプロトコル制御情報にアクセスしてプロトコル処理を行う第２のプロトコル処理ステップとをコンピュータに実行させ、前記第１のプロトコル処理ステップは、前記プロトコルスタックにおいて前記第２のプロトコル処理ステップより前段の処理を行うことを特徴とする。
【発明の効果】
【００１９】
本発明においては、第２のプロトコル処理手段がプロトコル処理を行うタイミングには、プロトコルスタックにおいて前段の処理を行う第１のプロトコル処理手段によって、高速アクセス可能な第２の記録媒体にプロトコル制御情報が既に格納されている。従って、本発明によれば、複数のプロトコル処理手段によるパイプライン処理を破綻させることなく、例えばＴＣＰＣＢ等のプロトコル制御情報へのアクセスを短時間に行うことが可能となる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明を適用した好適な実施形態を、添付図面を参照しながら詳細に説明する。
【００２１】
図１は、本発明の実施形態に係る通信装置の構成を示すブロック図である。ＨＤ（Hard Disk）装置１２０６は、二次記憶制御部１２０５を介してシステムバス１０２に接続されている。ＨＤ装置１２０６は、通信装置の機能を実現するソフトウェアや関連データ、各サブシステム内のサブプロセッサやシーケンサで動作するファームウェア、マイクロコード及び関連データ並びに履歴情報を格納する。なお、履歴情報には、通信データ及び通信装置の動作履歴や通信履歴等が含まれる。
【００２２】
ＨＤ装置１２０６に格納されるソフトウェアには、通信装置の各機能を実現するアプリケーションソフトウェア、アプリケーションプロトコル、関連ハードウェアを制御するためのデバイスドライバ及びＯＳ（Operating System）が含まれる。
【００２３】
Ｆｌａｓｈメモリ１２１３、ＳＲＡＭ１２１４は、メモリ制御部１２１２を介してシステムバス１０２に接続されており、書き換え可能な不揮発性メモリである。Ｆｌａｓｈメモリ１２１３は、通信装置の起動時に動作するブートプログラム、通信装置の初期状態設定に必要なパラメータ、通信装置の起動時に各ハードウェアを制御するためのデバイスドライバ及び各ハードウェア起動時の設定パラメータ等を保存する。
【００２４】
通信装置の主プロセッサ１０１は、Ｆｌａｓｈメモリ１２１３内のブートプログラムを実行し、通信装置の各ハードウェアやサブシステムを初期化する。その後、主プロセッサ１０１は、ＨＤ装置１２０６に格納されているソフトウェアを主メモリ１０４（第１の記録媒体）にロードし、ソフトウェアに含まれるＯＳを起動する。また、サブシステムの初期化時にＴＯＥサブシステム１０５に内蔵されている各サブプロセッサが実行する各ファームウェアも主メモリ１０４上に展開され、各サブプロセッサが起動される。
【００２５】
通信装置は、割り込み制御部１２０１、タイマ１２０２、入力キー１２１０、表示装置１２０４及び無線ＬＡＮサブシステム１２０８を備える。割り込み制御部１２０１は、各ハードウェアやサブシステムからの割り込みイベントを主プロセッサに伝達する。タイマ１２０２は、ソフトウェア等により起動され、時間計測やタイムアウトイベントを発生させる。入力キー１２１０は、汎用ＩＯインタフェース１２０９を介してシステムバス１０２に接続され、通信装置の動作モードの設定やＩＰ（Internet Protocol）アドレスに代表される各通信パラメータを入力するためのキーである。表示装置１２０４は、表示制御装置１２０３の制御によって、アプリケーション通信装置の状態や設定内容等を表示する。無線ＬＡＮサブシステム１２０８は、ＩＥＥＥ８０２．１１Ｍａ／ｂ／ｇ／ｎ規格に準拠した無線ＬＡＮに接続するためのサブシステムである。主ＤＭＡ制御部１２０７は、システムバス１０２に接続された記憶デバイス、例えば主メモリ１０４とＴＯＥサブシステム１０５間のデータ転送を制御する。
【００２６】
図１に示すＴＯＥサブシステム１０５とシステムバス１０２との接続形態の他、図１４に示すような接続形態も挙げられる。即ち、汎用バスインタフェース１２１１、例えばＰＣＩ ＳＩＧにより策定され、業界標準の汎用バスとなっているＰＣＩバスを介してＴＯＥサブシステム１０５がシステムバス１０２に接続されてもよい。なお、ＰＣＩ ＳＩＧは、PCI Special Interest Groupの略称である。ＰＣＩは、Peripheral Component Interconnectの略称である。
【００２７】
図２は、本実施形態に係るＴＯＥサブシステム１０５の構成を詳細に示すブロック図である。図２に示すように、ＴＯＥサブシステム１０５は、通信装置のシステムバス１０２に接続されている。システムバス１０２は、英国ＡＲＭ社が提唱するＡＭＢＡ３．０ＡＸＩ（Advanced eXtensible Interface）仕様に代表されるクロスバースイッチ構造のオンチップバスである。このオンチップバスは、通信装置で求められる送受信データの並行転送動作が可能である。通信装置は、ＴＯＥサブシステム１０５内のＰＨＹ（Physical Layer Chip）１３５によってイーサーネット１３６に接続されている。
【００２８】
図２に示すように、ＴＯＥサブシステム１０５は、内部にサブシステムバス１２３を備え、バスブリッジ１１６を介してシステムバス１０２に接続されている。このサブシステムバス１２３は、クロスバースイッチ接続である。
【００２９】
ＴＯＥサブシステム１０５は、主プロセッサ１０１からオフロードされたＴＣＰ／ＩＰプロトコル処理を実行する５個のサブプロセッサ１１１〜１１５を備える。
【００３０】
サブプロセッサ１１１〜１１５は、サブシステムバス１２３に接続されている。各サブプロセッサ１１１〜１１５は、主メモリ１０４上に展開された各ファームウェアプロトコルを、内蔵するそれぞれの命令キャッシュメモリにロードし、ファームウェアプログラムを実行する。
【００３１】
また、ＴＯＥサブシステム１０５は、５個のサブプロセッサ１１１〜１１５間の通信と情報共有の為の共有メモリ１２５、並びに、ＴＣＰ／ＩＰプロトコル処理に必要な時間計測及びタイムアウトイベントを発生させる通信タイマ１２４を備える。
【００３２】
また、ＴＯＥサブシステム１０５は、イーサーネット１３６に接続するためのＰＨＹ１３５とＭＡＣ（Media Access Control）１３４を備える。ＰＨＹ１３５は、ＯＳＩ参照モデルの第１層に位置するＰＨＹ（物理）層３０７（図３参照）のプロトコル処理と電気信号を扱うハードウェアである。ＭＡＣ１３４は、 HYPERLINK "http://e-words.jp/w/OSIE58F82E785A7E383A2E38387E383AB.html" ＯＳＩ参照モデルのデータリンク層（第２層）の下位副層に相当するＭＡＣ層３０６（図３参照）のプロトコルを処理するハードウェアである。
【００３３】
データパス制御部１３３は、不図示の、受信バッファメモリ、受信バッファメモリコントローラ、送信バッファメモリ、送信バッファメモリコントローラ、第１のＤＭＡ制御ユニット、チェックサム演算器及び第２のＤＭＡ制御ユニットを有する。
【００３４】
受信バッファメモリは、ＭＡＣ１３４で処理された受信フレームを一時的に保持する。受信バッファメモリコントローラは、受信バッファメモリに保持された受信フレーム中の各階層のプロトコルヘッダをバス１３２、サブシステムバス１２３を介して、各サブプロセッサ１１１〜１１５から参照可能とする制御を行う。第１のＤＭＡ制御ユニットは、受信バッファメモリ及び送信バッファメモリとシステムバス１０２に接続された記憶デバイス、例えば主メモリ１０４との間のバス１３１、システムバス１０２を介したデータ転送を制御する。チェックサム演算器は、ＤＭＡ処理の最中にチェックサム演算を行う。第２のＤＭＡ制御ユニットは、受信バッファメモリ及び送信バッファメモリとＭＡＣ１３４との間のデータ転送を制御する。
【００３５】
また、ＴＯＥサブシステム１０５は、ＩＰｓｅｃやＳＳＬ／ＴＬＳ等の暗号通信プロトコル処理のための暗号器１２９を備える。暗号器１２９としては、米国商務省標準技術局（ＮＩＳＴ）によって選定されたＡＥＳ暗号器や認証やデジタル署名等に使われるＳＨＡ−１ハッシュ関数器等が挙げられる。その他に、ＲＦＣ−１３２１としてＩＥＴＦで標準化されているＭＤ５（Message Digest 5）ハッシュ関数器等も適用可能である。なお、ＡＥＳは、Advanced Encryption Standardの略称である。ＳＨＡ−１は、Secure Hash Algorithm 1の略称である。
【００３６】
また、ＴＯＥサブシステム１０５は、暗号通信プロトコル処理のため生成した暗号鍵や乱数及び素数を機密保持するための鍵管理部１２６、及び、ＴＣＰ／ＩＰプロトコル処理及び暗号通信プロトコル処理のため乱数発生器１２７を備える。
【００３７】
次に、図３を参照しながら、ＴＯＥサブシステム１０５の各サブプロセッサ１１１〜１１５の役割を説明する。
【００３８】
ＴＯＥサブシステム１０５の処理機能は、ＭＡＣドライバ３０５、インターネット層（ＩＰ層）３０４、トランスポート層（ＴＣＰ／ＵＤＰ層）３０３及びソケットＡＰＩ３０２の一部の機能（３１０の範囲）をカバーする。ＭＡＣドライバ３０５は、ＭＡＣ層３０６との間で通信データと通信情報を交換する。インターネット層３０４は、ＩＰプロトコルを処理する。トランスポート層３０３は、ＴＣＰ及びＵＤＰプロトコルを処理する。これらの機能は、主にプロトコルを選択しデータの受け渡しと情報の伝達を中継する機能である。
【００３９】
上記の機能は、各サブプロセッサに分割され処理される。例えば、ソケットＡＰＩ３０２の一部の処理をサブプロセッサＡ１１１に実行させる。また、ＴＣＰ及びＵＤＰプロトコル処理のうち、受信動作に関わる処理をサブプロセッサＢ１１２に実行させる。また、ＴＣＰ及びＵＤＰプロトコル処理のうち、送信動作に関わる処理をサブプロセッサＣ１１３に実行させる。また、ＭＡＣドライバ３０５及びＩＰプロトコル処理のうち、受信動作に関わる処理をサブプロセッサＤ１１４に実行させる。ＭＡＣドライバ３０５及びＩＰプロトコル処理のうち、送信動作に関わる処理をサブプロセッサＥ１１５に実行させる。このように、上記の機能をそれぞれのサブプロセッサに振り分ける。なお、サブプロセッサＡ１１１及びサブプロセッサＤ１１４は、本発明における第１のプロトコル処理手段の一つの適用例となる構成である。また、サブプロセッサＢ１１２及びサブプロセッサＣ１１３は、本発明における第２のプロトコル処理手段の一つの適用例となる構成である。
【００４０】
この分割の意図は、これら一連のプロトコル処理を３つのパイプラインステージ３１１〜３１３に分割し、パイプライン動作をさせることにある。また、送信動作と受信動作を分割することで、それぞれの機能を担当するサブプロセッサ同士が並列的に動作する。ＴＣＰプロトコルは、転送データの到達保証を行う観点から、コネクション間でデータ受信側から送信側に対して確認応答と称する到達確認情報を伝達する。この確認応答処理を行うには、サブプロセッサＢ１１２とサブプロセッサＣ１１３間で到達確認情報の伝達３１４が必要となる。この情報伝達と情報共有、パイプラインステージ間の情報伝達と情報共有、パイプラインステージを構成する各サブプロセッサ１１１〜１１５と主プロセッサ１０１間の情報伝達と情報共有は、共有メモリ１２５を介して行われる。もちろん、これらの情報伝達と情報共有を、主メモリ１０４を使って行ってもよい。
【００４１】
ＴＯＥサブシステム１０５は、各通信プロトコルを処理する際に使用しているコンテキスト情報をＰＣＢとして保持管理し、各サブプロセッサ１１１〜１１５から短時間に参照や書き換えが可能である。これを実現するために、ＴＯＥサブシステム１０５は、ＰＣＢを一時的に保持するＰＣＢキャッシュメモリ１２１、並びに、ＰＣＢの生成、抹消、ＰＣＢへのアクセス制御及びＰＣＢを保持管理するためのＰＣＢ制御部１２０を備える。ＰＣＢキャッシュメモリ１２１（第２の記録媒体）は、主メモリ１０４より高速アクセス可能なメモリである。
【００４２】
また、ＴＯＥサブシステム１０５は、ＣＡＭ（Content Addressable Memory）１（１１７）、ＣＡＭ２（１１８）、・・・、ＣＡＭｎ（１１９）を備える。例えば、ＣＡＭ１（１１７）は、ＰＣＢ制御部１２０が受信フレームから取り出した情報を検索キーとしてＰＣＢを特定するための検索に用いられる。ＣＡＭ２（１１８）は、所望のＰＣＢがＰＣＢキャッシュメモリ１２１上に有るかどうかを判定するために使用される。
【００４３】
ＰＣＢは、ＴＣＰ処理においてＴＣＰＣＢ（プロトコル制御情報）とも称される。ＴＣＰＣＢに含まれる個々の要素の抜粋を図４に示す。図４において、接頭辞snd_から始まるパラメータは送信パラメータ、rcv_から始まるパラメータは受信パラメータである。なお、図４には図示されていないが、この他、送信先ＩＰアドレス、送信先ポート番号、送信元ＩＰアドレス、送信元ポート番号等多数の要素が存在する。また、ＴＣＰＣＢは一つのコネクション当たり２Ｋビット程度のサイズである。
【００４４】
ＴＣＰ／ＩＰプロトコル処理の中で、ＴＣＰＣＢ５０７は、図５（ａ）に示すように１ビット要素５０１、４ビット要素５０２、８ビット要素５０３、・・・というように、各要素がサイズ毎の分類５０１〜５０５で纏められ配置されている。
【００４５】
各要素は、これらのいずれかのサイズに合うよう正規化されている。また、このサイズ区切りは、ＴＯＥファームウェアが識別する論理的なもので、ＴＯＥファームウェアをコンパイルする際に与える各種パラメータを纏めたヘッダファイルの記述によって各サイズ及び要素数や要素の順番を定義し直すことができる。また、主メモリ１０４に配置されたＴＣＰＣＢ群５０８〜５１０は、図５（ｂ）に示すように、ＴＣＰコネクションを識別しているソケット番号順に並べられ、格納されている。
【００４６】
ＴＣＰ／ＩＰプロトコル処理の中で、ＴＣＰＣＢは、サブプロセッサ１１１、サブプロセッサ１１２、サブプロセッサ１１３からアクセスされる。このアクセスを円滑に行うために、各サブプロセッサ１１１〜１１３からアクセスするタイミングには、各ＴＣＰＣＢはＰＣＢキャッシュメモリ１２１に複製されている。
【００４７】
ＰＣＢキャッシュメモリ１２１上の各ＴＣＰＣＢの配置状態の一例を図５（ｃ）に示す。アクセスされるＴＣＰＣＢ５１４、５１６、５１７は、ＰＣＢキャッシュメモリ１２１上のキャッシュブロック（記録領域）群５２０に複製されている。ただし、新規のＴＣＰコネクション用に生成されたＴＣＰＣＢの場合、ＰＣＢキャッシュメモリ１２１上にあって、主メモリ１０４に退避されていない場合もある。ここで退避等、ＰＣＢキャッシュメモリ１２１と主メモリ１０４間のＴＣＰＣＢ転送は、後述するＰＣＢ制御シーケンサ２０３の指示でＤＭＡ制御部２０５が行う。
【００４８】
図６は、ＰＣＢ制御部１２０の構成を詳細に示すブロック図である。ＰＣＢ制御シーケンサ２０３は、バス１２２を介してサブシステムバス１２３と接続されており、ＴＯＥサブシステム１０５内の各部とデータの授受を行うとともに、ＰＣＢ制御部１２０内の各部を統括的に制御する。主プロセッサ１０１によってＰＣＢ制御シーケンサ２０３の命令キャッシュメモリにマイクロコードがロードされ、ＰＣＢ制御シーケンサ２０３がこれを実行することにより、後述の図９乃至図１１に示す処理動作が実現される。本実施形態では、ＰＣＢ制御シーケンサ２０３をプログラム可能なシーケンサとしたが、より高速にするために有限状態マシン（専用マシン）のハードウェアで構成してもよい。なお、ＰＣＢ制御シーケンサ２０３は、本発明における制御手段の一つの適用例となる構成である。
【００４９】
ＣＡＭ制御部２０１は、バス２０２で接続されるＰＣＢ制御シーケンサ２０３からの指示に応じて、ＣＡＭ１（１１７）〜ＣＡＭｎ（１１９）に対する各種データの書き込み及び読み出しを行う。ＤＭＡ制御部２０５は、バス２０４で接続されるＰＣＢ制御シーケンサ２０３からの指示に応じて、ＰＣＢキャッシュメモリ１２１と主メモリ１０４間におけるバス１１０、２０８、システムバス１０２を介したＴＣＰＣＢ転送を制御する。
【００５０】
ＬＲＵテーブル２０６は、ＰＣＢ制御シーケンサ２０３とバス２０７を介して接続されており、どのキャッシュブロックが利用されているか、どのキャッシュブロックのデータの退避が禁止されているか等を管理するためのテーブルである。なお、ＬＲＵテーブル２０６を用いてＰＣＢ制御シーケンサ２０３がキャッシュブロックに対する最終アクセス等を管理する機能は、本発明における管理手段の一つの適用例となる機能である。
【００５１】
ＰＣＢ管理部２１１は、ＰＣＢ管理テーブル２１０を用いて、ソケット番号の使用の有無等、ソケット番号に関する管理を行う。ＰＣＢキャッシュメモリ制御部２１２は、バス２０９、２０８を介して、ＰＣＢ制御シーケンサ２０３、ＤＭＡ制御部２０５と接続され、それらの指示に基づいて、ＰＣＢキャッシュメモリ１２１に対する各種データの書き込み及び読み出しを制御する。
【００５２】
次に、ＴＯＥサブシステム１０５のＴＣＰ／ＩＰプロトコル処理について、図７乃至図９のフローチャートと適宜他の図面とを参照して説明する。なお、図７乃至図９で示す処理は、ＰＣＢ制御シーケンサ２０３内部の命令キャッシュメモリに格納されたマイクロコードをＰＣＢ制御シーケンサ２０３が実行することにより実現するものである。
【００５３】
図７は、ＴＣＰＣＢの生成時におけるＰＣＢ制御部１２０の処理の流れを示すフローチャートである。なお、ＴＣＰＣＢは、ＴＣＰコネクション確立時に生成される。
【００５４】
ＴＣＰコネクション確立は、サブプロセッサＡ１１１によって行われ、コネクション確立時に交換される情報からソケットペアの情報を得る。本説明においては、ソケットペアの情報、つまり、送信先ＩＰアドレス、送信先ポート番号、送信元ＩＰアドレス及び送信元ポート番号の４つの情報の組み合わせをソケット情報と称する。ソケット情報は、上記４つの情報の組み合わせでプロトコル通信チャネルを識別可能な識別情報である。コネクション確立時に送受信される各ＴＣＰパケットのＴＣＰヘッダにはソケット情報が含まれる。
【００５５】
ステップ１０１１において、ＰＣＢ制御シーケンサ２０３は、サブプロセッサＡ１１１からＴＣＰＣＢの生成が指令され、その際に、サブプロセッサＡ１１１からＰＣＢ制御シーケンサ２０３にソケット情報等が伝達される。ＰＣＢ制御シーケンサ２０３は、ソケット情報等に基づいてＴＣＰＣＢを生成する。
【００５６】
ステップ１０１２において、ＰＣＢ制御シーケンサ２０３は、ＰＣＢ管理部２１１から未使用のソケット番号１００２を取得する。本実施形態では、ソケット番号という一連の番号群の中から、ソケットペアを識別するためにユニークなソケット番号を割り当てている。ＰＣＢ管理部２１１は、未使用のソケット番号を管理しており、ＰＣＢ制御シーケンサ２０３から取得要求に応じて、未使用のソケット番号を発行する。
【００５７】
ＰＣＢ管理部２１１は、図１０（ｂ）に示すように、ＰＣＢ管理テーブル２１０上に、ソケット番号の使用の有無を示すビットマップ７１６を形成してソケット番号を管理している。ＰＣＢ管理部２１１は、ＰＣＢ制御シーケンサ２０３から未使用のソケット番号を要求されると、予めビットマップ７１６を検索して得ていた未使用のソケット番号を報告する。この報告とは別に、バックグラウンドの動作で、ＰＣＢ管理テーブル２１０の更新や次の未使用ソケット番号検索が行われることは云うまでもないことである。
【００５８】
また、コネクション解放時には、サブプロセッサＡ１１１からＰＣＢ制御シーケンサ２０３を介して使用済みソケット番号がＰＣＢ管理部２１１に返却される。使用済みソケット番号が返却されると、ＰＣＢ管理部２１１は、ＰＣＢ管理テーブル２１０を更新するとともに、未使用ソケット番号検索を行う。
【００５９】
ステップ１０１３において、ソケット番号の取得が成功した場合は、ステップ１０１４へ、失敗した場合はステップ１０２７へ進む。
【００６０】
ここで、ＣＡＭは、検索キーであるデータとＣＡＭに登録されたデータとが一致した場合に、そのデータが格納されているアドレス情報を検索結果として報告するためのメモリである。一致しているものが無い場合は、ＣＡＭ制御部２０１は、ＰＣＢ制御シーケンサ２０３に対して検索不成功を報告する。また、ＣＡＭ中に複数の同一データある場合は、その全てのアドレス情報が報告されるが、本実施形態では、このように同一データが複数あることはない。ＣＡＭ１（１１７）は、このようなＣＡＭで構成され、ステップ１０１４において、図１１（ｂ）に示されるような形式でソケット情報が登録される。即ち、ＰＣＢ制御シーケンサ２０３は、ステップ１０１２で得られたソケット番号で示されるアドレスに、ステップ１０１１で得たソケット情報１００１を登録するようＣＡＭ制御部２０１に指示する。ＣＡＭ制御部２０１は、当該アドレスにソケット情報１００１を登録する。
【００６１】
ステップ１０１５において、ＰＣＢ制御シーケンサ２０３は、ＴＣＰＣＢをＰＣＢキャッシュメモリ１２１上に生成する準備として、ＰＣＢ管理部２１１から未使用のキャッシュブロック番号１００３を取得する。図１０（ａ）に示すように、キャッシュブロック番号の有無は、ソケット番号と同様に、ＰＣＢ管理テーブル２１０上にキャッシュブロック番号の使用の有無を示すビットマップ７０７を形成して管理されている。
【００６２】
ステップ１０１６において、未使用のキャッシュブロック番号が枯渇していて、未使用のキャッシュブロック番号の取得に失敗した場合、ステップ１０１７へ、成功した場合はステップ１０２３へ進む。
【００６３】
ステップ１０１７及びステップ１０１８は、ＰＣＢキャッシュメモリ１２１上に新たなキャッシュブロックを生成するため、利用フラグと退避ロックフラグとがセットされていない古いキャッシュブロックを主メモリ１０４に退避し、空きの領域を作る処理である。ここで利用フラグは、いずれかのサブプロセッサ１１１〜１１３がキャッシュブロックを利用していることを示すフラグである。また、退避ロックフラグは、退避を禁止し、ＰＣＢキャッシュメモリ１２１から削除できないキャッシュブロックであることを示すフラグである。
【００６４】
ステップ１０１７において、ＰＣＢ制御シーケンサ２０３は、ＬＲＵテーブル２０６から利用フラグと退避ロックフラグがセットされていない、アクセスの最も古いキャッシュブロック番号１００４と対応するソケット番号１００５を取得する。
【００６５】
図１２（ａ）は、ＬＲＵテーブル２０６に格納されるデータの形式を示しており、図１２（ｂ）は、図１２（ａ）に示すデータ形式に沿ってＬＲＵテーブル２０６に格納されたデータ構造の例を示す図である。
【００６６】
ＬＲＵテーブル２０６においては、ＰＣＢ制御シーケンサ２０３が保持する２つのポインタ情報、先頭ポインタ８１０及び終端ポインタ８１５によって有効なキャッシュブロックが連結されている。
【００６７】
連結された各キャッシュブロックは、２つのポインタ情報、Previous_Pointer８０６及びNext_Pointer８０７によって連結状態８１１〜８１４が示される。先頭ポインタ８１０は、連結の先頭のキャッシュブロックを示し、終端ポインタ８１５は、連結の終端のキャッシュブロックを示す。新たに生成されたキャッシュブロックは、終端ポインタ８１５の手前に連結され、最も古いキャッシュブロックは、先頭ポインタ８１０が示すことになる。
【００６８】
また、任意のキャッシュブロックの取り外しも対象のキャッシュブロックと前後のキャッシュブロックのPrevious_Pointer８０６及びNext_Pointer８０７を操作するだけでよい。この際、先頭ポインタ８１０は、Next_Pointer８０７として機能し、終端ポインタ８１５はPrevious_Pointer８０６として機能する。
【００６９】
これらの各ポインタの他、ＬＲＵテーブル２０６には、フラグ８０１、退避ロックフラグ８０２、利用フラグ８０３〜８０５及び対応するソケット番号が格納されている。フラグ８０１は、キャッシュブロックが有効であることを示すフラグである。退避ロックフラグ８０２は、ＰＣＢキャッシュメモリ１２１から退避することを禁じるフラグである。利用フラグ８０３〜８０５は、どのサブプロセッサ１１１〜１１３が利用しているかを示すフラグである。
【００７０】
ＰＣＢ制御シーケンサ２０３によるＬＲＵテーブル２０６の登録、削除等の更新操作は、以上述べたポインタやフラグを参照したり、書き換えたりすることで行われる。
【００７１】
ステップ１０１８において、ＤＭＡ制御部２０５は、ＰＣＢキャッシュメモリ１２１上のキャッシュブロック番号１００４のＴＣＰＣＢを、主メモリ１０４上のＴＣＰＣＢ群５０８〜５１０のソケット番号１００５の位置に退避する。
【００７２】
ステップ１０１９において、ＰＣＢ制御シーケンサ２０３は、ＣＡＭ２（１１８）のキャッシュブロック番号１００４のアドレスにソケット番号１００２を登録するようＣＡＭ制御部２０１に対して指示する。これを受けて、ＣＡＭ制御部２０１は、ＣＡＭ２（１１８）のキャッシュブロック番号１００４のアドレスにソケット番号１００２を登録する。
【００７３】
図１１（ａ）は、ＣＡＭ２（１１８）におけるデータの格納例を示す図である。ＣＡＭ２（１１８）は、ＣＡＭ１（１１７）と同様のＣＡＭで構成されていて、ソケット番号を検索キーとして検索した場合、検索されたソケット番号に対応するキャッシュブロック番号を報告するためのメモリである。ＣＡＭ２（１１８）への登録は、アドレスとしてキャッシュブロック番号を指定し、ソケット番号を登録する。
【００７４】
ステップ１０２０において、ＰＣＢ制御シーケンサ２０３は、ＰＣＢキャッシュメモリ１２１上のキャッシュブロック番号１００４のキャッシュブロックを初期化するようＰＣＢキャッシュメモリ制御部２１２に対して指示する。これを受けて、ＰＣＢキャッシュメモリ制御部２１２は、ＰＣＢキャッシュメモリ１２１上のキャッシュブロック番号１００４のキャッシュブロックを初期化する。
【００７５】
ステップ１０２１において、ＰＣＢ制御シーケンサ２０３は、キャッシュブロックの初期化に応じて、ＬＲＵテーブル２０６を更新する。この更新では、対象となるキャッシュブロックを終端ポインタ８１５の手前に繋ぎ換える。この意図は、この処理フロー以降でこのキャッシュブロックがサブプロセッサＣ１１３によってアクセスされることが予測されるため、当該キャッシュブロックに対する最終アクセスが新しいものとして退避の可能性を低めるための処置である。
【００７６】
ステップ１０２２において、ＰＣＢ制御シーケンサ２０３は、キャッシュブロック番号１００４をステップ１０１２で取得したソケット番号１００２と共にＰＣＢキャッシュメモリ制御部２１２内のアドレス変換器１３０３に格納する。このとき、ＰＣＢ制御シーケンサ２０３は、生成したＴＣＰＣＢをＰＣＢキャッシュメモリ１２１内におけるキャッシュブロック番号１００４のアドレスに登録する。
【００７７】
このアドレス変換器１３０３は、図１３に示すように、ＰＣＢ制御シーケンサ２０３やＤＭＡ制御部２０５が要求するソケット番号のアドレス１３０１をＰＣＢキャッシュメモリ１２１内におけるキャッシュブロック番号のアドレス１３０５に変換するものである。アドレス変換器１３０３は、本発明のアドレス変換手段の一適用例となる構成である。
【００７８】
一方、ステップ１０２３においては、ＰＣＢ制御シーケンサ２０３は、ＣＡＭ２（１１８）のキャッシュブロック番号１００３のアドレスにソケット番号１００２を登録するようＣＡＭ制御部２０１に対して指示する。これを受けて、ＣＡＭ制御部２０１は、ＣＡＭ２（１１８）のキャッシュブロック番号１００３のアドレスにソケット番号１００２を登録する。
【００７９】
ステップ１０２４において、ＰＣＢ制御シーケンサ２０３は、ＰＣＢキャッシュメモリ１２１上のキャッシュブロック番号１００３のキャッシュブロックを初期化するようＰＣＢキャッシュメモリ制御部２１２に対して指示する。これを受けて、ＰＣＢキャッシュメモリ制御部２１２は、ＰＣＢキャッシュメモリ１２１上のキャッシュブロック番号１００３のキャッシュブロックを初期化する。
【００８０】
ステップ１０２５において、ＰＣＢ制御シーケンサ２０３は、上記キャッシュブロックの初期化に応じて、ＬＲＵテーブル２０６を更新する。ここでは、ステップ１０２１と同様の更新処理が行われる。
【００８１】
ステップ１０２６において、ＰＣＢ制御シーケンサ２０３は、取得したキャッシュブロック番号１００３と対応するソケット番号１００２と共にＰＣＢキャッシュメモリ制御部２１２のアドレス変換器１３０３に格納する。このとき、ＰＣＢ制御シーケンサ２０３は、生成したＴＣＰＣＢをＰＣＢキャッシュメモリ１２１内におけるキャッシュブロック番号１００４のアドレスに登録する。
【００８２】
一方、ステップ１０２７においては、未使用ソケット番号が枯渇した場合、ＰＣＢ管理部２１１から要求元のサブプロセッサにその旨が通知され、結果的にコネクション確立は不成功となる。ＰＣＢ管理部２１１が管理している未使用ソケット番号が枯渇する場合がある。ソケット番号の総数は、ＴＣＰＣＢ群５０８〜５１０が主メモリ１０４上に配置されるため、主メモリ１０４の容量の制約を受ける。一般にコネクション確立は交渉事であり不成立もあり得る。
【００８３】
図８は、サブプロセッサからＰＣＢ制御部１２０に対してＴＣＰＣＢの取得要求が行われた場合のＰＣＢ制御部１２０の動作を示すフローチャートである。
【００８４】
ＴＣＰパケット送信（図３の３１６）の場合、ＴＣＰＣＢの取得要求は、ソケット番号が既知の場合として扱われ、ステップ９１３から処理が開始される。ＴＣＰＣＢの取得要求は、ＴＣＰ処理パイプラインステージ３１２の前処理であるパイプラインステージ３１１を担うサブプロセッサＡ１１１が行う。サブプロセッサＡ１１１は、主プロセッサ１０１からの送信指示を受けたときにＰＣＢ制御部１２０に対してＴＣＰＣＢの取得を要求する。
【００８５】
一方、ＴＣＰパケット受信（図３の３１５）の場合、ＴＣＰ処理パイプラインステージ３１２の前処理であるＩＰ処理パイプラインステージ３１３を担うサブプロセッサＤ１１４がＴＣＰＣＢの取得要求を行う。
【００８６】
イーサーネット１３６から受けた受信フレームは、ＰＨＹ１３５及びＭＡＣ１３４を介してデータパス制御部１３３内の受信バッファメモリに格納される。受信バッファメモリ格納開始と同時にデータパス制御部１３３からサブプロセッサＤ１１４に受信開始が通知される。
【００８７】
この後、データパス制御部１３３は、受信バッファメモリに送られてくる受信フレームがＩＰパケットの場合、ＩＰヘッダ及び上位プロトコルヘッダ領域の全部又は殆どの部分が転送されたところでサブプロセッサＤ１１４にＩＰパケットのヘッダ受信を通知する。
【００８８】
この通知を受けて、サブプロセッサＤ１１４は、ＩＰパケットのヘッダ解析を開始する。サブプロセッサＤ１１４は、データパス制御部１３３内の受信バッファメモリにアクセスしてヘッダを読み取る。次に、サブプロセッサＤ１１４は、ヘッダ中のＩＰデータグラム長以外の項目についてＩＰヘッダの妥当性を検証し、上位プロトコルがＴＣＰである場合、ソケット情報を取得する。
【００８９】
ステップ９１１において、ＰＣＢ制御部１２０は、サブプロセッサＤ１１４からＴＣＰＣＢ取得の指示を受け、ソケット情報を得る。
【００９０】
ステップ９１２及びステップ９２８において、ＰＣＢ制御シーケンサ２０３は、ソケット情報を検索キーとしてソケット番号９０１を取得する。このステップにおける処理は、ステップ１０１４で説明したように、ソケット情報を検索キーとしてＣＡＭ１（１１７）からソケット番号を得るものである。コネクションが確立していれば、ＴＣＰＣＢ生成の過程で対象となるソケット情報は登録されている。検索が成功してソケット番号を取得できた場合は、ステップ９１３へ進む。ソケット番号の取得に失敗した場合は、ステップ９２９へ進む。
【００９１】
ステップ９２９においては、ＰＣＢ制御部１２０からソケット番号取得失敗がサブプロセッサ１１４に通知される。ソケット番号取得失敗は、受信したＴＣＰパケットがコネクション確立時に交換するＳＹＮパケットか不正パケットのどちらかであることを示す。これ以降の処理は、この通知を受けたサブプロセッサＤ１１４からＴＣＰ処理パイプラインステージ３１２のサブプロセッサＢ１１２へ引き継がれていく。
【００９２】
一方、ステップ９１３においては、ＰＣＢ制御シーケンサ２０３は、ソケット番号９０１を検索キーとしてキャッシュブロック番号９０２を取得する。この検索処理では、ソケット番号を検索キーとしてＣＡＭ２（１１８）が検索され、検索されたソケット番号９０１に対応するキャッシュブロック番号９０２がＣＡＭ制御部２０１からＰＣＢ制御シーケンサ２０３に報告される。
【００９３】
ステップ９１４において、キャッシュブロック番号の取得が成功した場合は、ステップ９２７へ、失敗した場合はステップ９１５へ進む。取得の失敗は、対象となるＴＣＰＣＢがＰＣＢキャッシュメモリ１２１に無いことを表す。
【００９４】
ステップ９１５において、ＰＣＢ制御シーケンサ２０３は、ＰＣＢ管理部２１１から未使用のキャッシュブロック番号９０３を取得する。このステップにおける処理はステップ１０１５と同様である。
【００９５】
ステップ９１６において、未使用のキャッシュブロック番号が枯渇していて、未使用のキャッシュブロック番号９０３の取得に失敗した場合、ステップ９１７へ、成功した場合９２３へ進む。
【００９６】
ステップ９１７において、ＰＣＢ制御シーケンサ２０３は、ＬＲＵテーブル２０６から最終アクセスの最も古いキャッシュブロック番号９０４と対応するソケット番号９０５を取得する。このステップにおける処理は、ステップ１０１７と同様である。
【００９７】
ステップ９１８において、ＤＭＡ制御部２０５は、ＰＣＢキャッシュメモリ１２１上のキャッシュブロック番号９０４のＴＣＰＣＢを、主メモリ１０４上のソケット番号９０５のＴＣＰＣＢの格納位置に退避する。このステップにおける処理はステップ１０１８と同様である。
【００９８】
ステップ９１９において、ＰＣＢ制御シーケンサ２０３は、ＣＡＭ２（１１８）のキャッシュブロック番号９０４にソケット番号９０１を登録する。このステップにおける処理はステップ１０１９と同様である。
【００９９】
ステップ９２０において、ＤＭＡ制御部２０５は、主メモリ１０４上のソケット番号９０１のＴＣＰＣＢを取得し、ＰＣＢキャッシュメモリ１２１上のキャッシュブロック番号９０４のキャッシュブロックに読み込む。
【０１００】
ステップ９２１において、ＰＣＢ制御シーケンサ２０３は、ＬＲＵテーブル２０６を更新する。この更新では、対象となるキャッシュブロックを終端ポインタ８１５の手前に繋ぎ換える。この意図は、この処理フロー以降でこのキャッシュブロックがサブプロセッサＢ１１２によってアクセスされることが予想されるため、当該キャッシュブロックに対する最終アクセスが新しいものとして退避の可能性を低めるための処置である。
【０１０１】
ステップ９２２において、ＰＣＢ制御シーケンサ２０３は、取得したキャッシュブロック番号９０４をソケット番号９０１と共にＰＣＢキャッシュメモリ制御部２１２のアドレス変換器１３０３に格納する。
【０１０２】
一方、ステップ９２３においては、ＰＣＢ制御シーケンサ２０３は、ＣＡＭ２（１１８）のキャッシュブロック番号９０３にソケット番号９０１を登録するようＣＡＭ制御部２０１に対して指示する。これを受けて、ＣＡＭ制御部２０１は、ＣＡＭ２（１１８）のキャッシュブロック番号９０３にソケット番号９０１を登録する。
【０１０３】
ステップ９２４において、ＤＭＡ制御部２０５は、主メモリ１０４上のソケット番号９０１のＴＣＰＣＢを取得し、ＰＣＢキャッシュメモリ１２１上のキャッシュブロック番号９０３のキャッシュブロック位置に読み込む。
【０１０４】
ステップ９２５において、ＰＣＢ制御シーケンサ２０３は、ＬＲＵテーブル２０６を更新する。ここでは、ステップ９２１と同様に、対象となるキャッシュブロックを終端ポインタ８１５の手前に繋ぎ換える。
【０１０５】
ステップ９２６において、ＰＣＢ制御シーケンサ２０３は、取得したキャッシュブロック番号９０３をソケット番号９０１と共にＰＣＢキャッシュメモリ制御部２１２のアドレス変換器１３０３に格納する。
【０１０６】
一方、ステップ９２７においては、ＰＣＢ制御シーケンサ２０３は、取得したキャッシュブロック番号９０２をＰＣＢキャッシュメモリ制御部２１２のアドレス変換器１３０３に格納する。
【０１０７】
図９は、サブプロセッサ１１１からＰＣＢ制御部１２０にＴＣＰＣＢの抹消要求が行われた場合のＰＣＢ制御部１２０の動作を示すフローチャートである。
【０１０８】
ＴＣＰＣＢの抹消は、コネクション解放等でＴＣＰＣＢが不要となった場合、ソケット番号やキャッシュブロック番号の返却を行い、併せて関連するリソースを解放する処理である。
【０１０９】
ステップ１１１１において、ＰＣＢ制御シーケンサ２０３は、サブプロセッサＡ１１１からＴＣＰＣＢ抹消要求を受けると同時に、対応するソケット番号１１０１をサブプロセッサＡ１１１から取得する。
【０１１０】
ステップ１１１２において、ＰＣＢ制御シーケンサ２０３は、ＣＡＭ制御部２０１に対してＣＡＭ１（１１７）上のソケット番号１１０２の内容を消去するよう指示する。これを受けて、ＣＡＭ制御部２０１は、ＣＡＭ１（１１７）上のソケット番号１１０２の内容を消去する。
【０１１１】
ステップ１１１３において、抹消の対象のＴＣＰＣＢがＰＣＢキャッシュメモリ１２１にあるか否かを調べる。そのために、ＰＣＢ制御シーケンサ２０３は、ソケット番号１１０２を検索キーとしてＣＡＭ２（１１８）内のキャッシュブロック番号の有無を調べるよう指示する。これを受けて、ＣＡＭ制御部２０１は、ソケット番号１１０２を検索キーとしてＣＡＭ２（１１８）内のキャッシュブロック番号の有無を調べ、その結果をＰＣＢ制御シーケンサ２０３に返す。
【０１１２】
ステップ１１１４において、キャッシュブロック番号の取得に失敗した場合、ＴＣＰＣＢの抹消は完了する。成功した場合は１１１５へ進む。キャッシュブロック番号の取得に失敗した場合、抹消の対象のＴＣＰＣＢがＰＣＢキャッシュメモリ１２１上には存在しない。そのため、ＬＲＵテーブル２０６の更新は無く、主メモリ１０４上のソケット番号１１０２のＴＣＰＣＢは、新たなＴＣＰＣＢ生成以降に書き換えられるので消去する必要は無い。
【０１１３】
ステップ１１１５において、ＰＣＢ制御シーケンサ２０３は、ＰＣＢ管理部２１１にキャッシュブロック番号１１０３とソケット番号１１０２を返却する。これにより、ＰＣＢ管理部２１１は、キャッシュブロック番号１１０３及びソケット番号１１０２が未使用であることを示すようにＰＣＢ管理テーブル２１０を更新する。
【０１１４】
ステップ１１１６において、ＰＣＢ制御シーケンサ２０３は、ＣＡＭ２（１１８）のキャッシュブロック番号１１０３を消去するようＣＡＭ制御部２０１に対して指示する。これを受けて、ＣＡＭ制御部２０１は、ＣＡＭ２（１１８）のキャッシュブロック番号１１０３の内容を消去する。
【０１１５】
ステップ１１１７において、ＰＣＢ制御シーケンサ２０３は、ＰＣＢキャッシュメモリ１２１上のソケット番号１１０２のＴＣＰＣＢを消去するようＰＣＢキャッシュメモリ制御部２１２に指示する。これを受けて、ＰＣＢキャッシュメモリ制御部２１２は、ＰＣＢキャッシュメモリ１２１上のソケット番号１１０２のＴＣＰＣＢを消去する。
【０１１６】
ステップ１１１８において、ＰＣＢ制御シーケンサ２０３は、ＬＲＵテーブル２０６を更新する。この更新処理は、ステップ１０１７で述べた方法と同じ方法であり、抹消するＴＣＰＣＢが使用していたキャッシュブロックをＬＲＵテーブル２０６上の連結から取り外す。
【０１１７】
ところで、ＴＣＰは、アプリケーション要求の送信処理や受信処理以外に確認応答のための処理が含まれる。この確認応答の処理の流れ（図３の３１４）において、対象となるＴＣＰＣＢは、受信処理を行うサブプロセッサＢ１１２から送信処理を行うサブプロセッサＣ１１３に引き継がれるので、ＰＣＢキャッシュメモリ１２１の更新は不要である。
【０１１８】
既に述べたように、ＴＣＰ処理が行われるパイプラインステージの前段でＴＣＰＣＢがＰＣＢキャッシュメモリ１２１に読み込まれている。よって、サブプロセッサＢ１１２やＣ１１３がＴＣＰ処理を行うタイミングでは、既にＴＣＰＣＢがＰＣＢキャッシュメモリ１２１上に存在するのでパイプライン処理を破綻させることなく、ＴＣＰＣＢアクセスが短時間に行える。同時に多数のコネクションが生成されていて、ＰＣＢキャッシュメモリ１２１の更新が頻繁に行われている場合も、パイプライン処理を破綻させることがない。その結果、ＴＣＰＣＢのキャッシュとパイプライン処理の組み合わせ効果により、非常に重い処理であったプロトコルスタックの処理時間を大幅に短縮することが可能となった。本実施形態においては、僅か１００ＭＨｚ程度の動作周波数のシステムでギガビットイーサーネットのＦｕｌｌ−ｗｉｒｅスピードを達成することができた。この性能を一般的なＰＣで実現している従来の方式では、３ＧＨｚ程度の動作周波数でプロセッサを稼働させなければならないという報告がある。
【０１１９】
本実施形態では、プロトコル処理の代表的事例としてＴＣＰプロトコルについて述べたが、ＳＳＬ／ＴＬＳプロトコル通信において複数のセッションを識別し、そのセッション毎のＰＣＢが必要となる。ここで、セッションは、ＴＣＰ通信のコネクションに相当する。
【０１２０】
ＳＳＬ／ＴＬＳは、ソケットＡＰＩ３０２上のセキュリティ通信プロトコルであり、サブプロセッサＡ１１１内で処理される。ＳＳＬ／ＴＬＳのセッション識別を前段のパイプラインステージのサブプロセッサＢ１１２で行い、対応するＰＣＢをＰＣＢキャッシュメモリ１２１に読み込む。送信においては、前段のパイプラインステージを主プロセッサ１０１が処理することになる。勿論、ＰＣＢキャッシュメモリ１２１、ＰＣＢ管理テーブル２１０及びＬＲＵテーブル２０６にはＳＳＬ／ＴＬＳセッション用の領域が確保され、専用のキャッシュブロック、ＬＲＵテーブル及びキャッシュブロック番号管理用のビットマップテーブルが用意される。
【０１２１】
以上述べたことから、ＴＣＰプロトコルやＳＳＬ／ＴＬＳプロトコルのほかＩＰｓｅｃなど、プロトコル処理の中で通信相手毎に異なるコンテキスト情報を保持し処理を行うプロトコルには、本方式が適用可能であることは明白である。
【０１２２】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体をシステム或いは装置に供給し、そのシステム等のコンピュータが記憶媒体からプログラムコードを読み出し実行することによっても達成される。
【０１２３】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、プログラムコード自体及びそのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１２４】
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【０１２５】
また、コンピュータが読み出したプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ等が実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０１２６】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに接続された機能拡張ユニット等に備わるメモリに書込まれた後、そのプログラムコードの指示に基づきＣＰＵ等が実際の処理を行い、前述した実施形態の機能が実現される場合も含まれる。
【図面の簡単な説明】
【０１２７】
【図１】本発明の実施形態に係る通信装置の構成を示すブロック図である。
【図２】本発明の実施形態に係るＴＯＥサブシステムの構成を詳細に示す図である。
【図３】ＴＯＥサブシステムの各サブプロセッサの役割を説明するための図である。
【図４】ＴＣＰＣＢに含まれる個々の要素の抜粋を示す図である。
【図５】ＴＣＰＣＢの構成及びＴＣＰＣＢの格納例を示す図である。
【図６】ＰＣＢ制御部の構成を詳細に示すブロック図である。
【図７】ＴＣＰＣＢの生成時におけるＰＣＢ制御部の処理の流れを示すフローチャートである。
【図８】サブプロセッサからＰＣＢ制御部に対してＴＣＰＣＢの取得要求が行われた場合のＰＣＢ制御部の動作を示すフローチャートである。
【図９】サブプロセッサからＰＣＢ制御部にＴＣＰＣＢの抹消要求が行われた場合のＰＣＢ制御部の動作を示すフローチャートである。
【図１０】ＰＣＢ管理テーブルの構成を示す図である。
【図１１】ＣＡＭ１及びＣＡＭ２内において格納されるデータ構成例を示す図である。
【図１２】ＬＲＵテーブル内において格納されるデータ構成例を示す図である。
【図１３】アドレス変換器について説明するための図である。
【図１４】本発明の他の実施形態に係る通信装置の構成を示すブロック図である。
【符号の説明】
【０１２８】
１０１  主プロセッサ
１０２  システムバス
１０３  主メモリ制御部
１０４  主メモリ
１０５  ＴＯＥサブシステム
１２０１  割り込み制御部
１２０２  タイマ
１２０３  表示制御部
１２０４  表示装置
１２０５  二次記憶制御部
１２０６  ＨＤ装置
１２０７  主ＤＭＡ制御部
１２０８  無線ＬＡＮサブシステム
１２０９  汎用ＩＯインタフェース
１２１０  入力キー
１２１１  汎用バスインタフェース
１２１２  メモリ制御部
１２１３  Ｆｌａｓｈメモリ
１２１４  ＳＲＡＭ
１１１〜１１５  サブプロセッサＡ〜Ｅ
１１７〜１１９  ＣＡＭ１〜ｎ
１２０  ＰＣＢ制御部
１２１  ＰＣＢキャッシュメモリ
１２２、１３１、１３２  バス
１２３  サブシステムバス
１２４  通信タイマ
１２５  共有メモリ
１２６  鍵管理部
１２７  乱数発生器
１２９  暗号器
１３３  データパス制御部
１３４  ＭＡＣ
１３５  ＰＨＹ
２０１  ＣＡＭ制御部
２０２、２０４、２０７、２０８、２０９  バス
２０３  ＰＣＢ制御シーケンサ
２０５  ＤＭＡ制御部
２０６  ＬＲＵテーブル
２１０  ＰＣＢ管理テーブル
２１１  ＰＣＢ管理部
２１２  ＰＣＢキャッシュメモリ制御部
【図１】
2008146486.tif 000003
【図２】
2008146486.tif 000004
【図３】
2008146486.tif 000005
【図４】
2008146486.tif 000006
【図５】
2008146486.tif 000007
【図６】
2008146486.tif 000008
【図７】
2008146486.tif 000009
【図８】
2008146486.tif 000010
【図９】
2008146486.tif 000011
【図１０】
2008146486.tif 000012
【図１１】
2008146486.tif 000013
【図１２】
2008146486.tif 000014
【図１３】
2008146486.tif 000015
【図１４】
2008146486.tif 000016