(57)【特許請求の範囲】
【請求項１】
情報処理装置であって、
第１のメモリと、
前記第１のメモリよりも高速に動作する第２のメモリと、
前記第１のメモリと前記第２のメモリとから、他の装置との通信に用いるデータの検索処理を行う検索手段とを有し、
前記検索手段による検索処理には、前記第１のメモリもしくは前記第２のメモリのいずれかにおいて前記データが検出されると前記検索処理を終了する第１の検索方法と、前記第１のメモリもしくは前記第２のメモリのいずれかにおいて前記データが検出された場合であっても前記検索処理を継続する第２の検索方法とがあり、
更に、
前記第１の検索方法の検索処理によって、前記第１のメモリで前記データが検出された場合には当該検出されたデータを前記第１のメモリから前記第２のメモリに移動させ、前記第２の検索方法の検索処理によって前記第１のメモリで前記データが検出された場合には当該検出されたデータを前記第１のメモリから前記第２のメモリに移動させない制御手段を有することを特徴とする情報処理装置。
【請求項２】
前記制御手段は、前記第１の検索方法の検索処理によって、前記第２のメモリで前記データが検出された場合には当該検出されたデータの格納位置を前記第２のメモリの内部で変更することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記制御手段は、前記第２のメモリの内部における前記検出されたデータの格納位置を、前検索手段によって前記第２のメモリにおいて最初に検索される位置に変更することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記検索手段は、前記他の装置とのTCP/IPに準拠した通信に用いるデータの検索処理を行うことを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
第１のメモリと、前記第１のメモリよりも高速に動作する第２のメモリとを備える情報処理装置の制御方法であって、
前記第１のメモリと前記第２のメモリとから、他の装置との通信に用いるデータの検索処理を行う検索工程であって、前記検索工程による検索処理には、前記第１のメモリもしくは前記第２のメモリのいずれかにおいて前記データが検出されると前記検索処理を終了する第１の検索方法と、前記第１のメモリもしくは前記第２のメモリのいずれかにおいて前記データが検出された場合であっても前記検索処理を継続する第２の検索方法とがある、前記検索工程と、
前記第１の検索方法の検索処理によって、前記第１のメモリで前記データが検出された場合には当該検出されたデータを前記第１のメモリから前記第２のメモリに移動させ、前記第２の検索方法の検索処理によって前記第１のメモリで前記データが検出された場合には当該検出されたデータを前記第１のメモリから前記第２のメモリに移動させない制御工程と、
を有することを特徴とする情報処理装置の制御方法。
【請求項６】
請求項５に記載の情報処理装置の制御方法の各工程をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検索装置、検索装置の制御方法及びプログラムに関する。
【背景技術】
【０００２】
近年、汎用ＰＣのみならず組み込み機器においてもネットワークプロトコル処理を高速に実行可能にすることが要求されている。ソフトウェアによるプロトコル処理でギガビットイーサネット（登録商標）の十分な速度を達成するために、組み込み機器が搭載するプロセッサ能力をはるかに超えている。
【０００３】
そこで、ＴＯＥ（ＴＣＰ／ＩＰ  Ｏｆｆｌｏａｄ  Ｅｎｇｉｎｅ）といったプロトコル処理に特化した補助的デバイスを付加して広帯域なネットワーク通信を実現することが一般化している。ＴＣＰ／ＩＰにおけるプロトコル処理においては、ＴＣＰ処理におけるソケット検索やＬｉｓｔｅｎ状態検索がある。また、ＩＰｓｅｃ処理におけるＳＰＤ（Ｓｅｃｕｒｉｔｙ  Ｐｏｌｉｃｙ  Ｄａｔａｂａｓｅ）検索やＳＡＤ（Ｓｅｃｕｒｉｔｙ  Ａｓｓｏｃｉａｔｉｏｎ  Ｄａｔａｂａｓｅ）検索がある。また、ＩＰ処理におけるリアセンブル検索等もあり、様々な用途の検索を行う必要がある。その中で、ＴＣＰ／ＩＰによる送信処理と受信処理とを高速化するために、プロトコル処理における検索処理を、ＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）を使用して高速化する手法がある。しかし、ＣＡＭを利用した連想メモリは高価なため、その代替としてＲＡＭを用いて逐次比較の結果を出力する方式の連想メモリが使用されている。検索装置を利用した検索処理は、検索キーにより検索装置から該当アドレスを取得し、取得したアドレスを用いてデータの読出し、書き込みを行う。
【０００４】
さらに、ＴＣＰ／ＩＰによる送信処理と受信処理とを高速化するため、複数のプロセッサにより、プロトコル処理をパイプライン化又は並列化する手法がある。ここで、これら複数のプロセッサにより検索装置を共有する場合を考える。検索処理を行うプロセッサが、２つ以上同時に検索装置へアクセスした場合、あるプロセッサが検索処理中に別のプロセッサがデータの書き換えを行ってしまうと検索に支障をきたす。そのため、排他制御を行う必要があり、長い時間検索装置が一つのプロセッサにより占有されてしまうという問題が生じる。
【０００５】
この問題に対して、プロセッサから直接データへのアクセスを行わせず、検索処理受付部にコマンドを投入し、処理が完了したら検索結果表示によって結果を返すといった手法がとられている。また、複数のプロセッサによって検索装置を共有するためキュー形式をとるという手法が提案されている。（特許文献１参照）
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１０−１７１７７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ネットワーク規模の増大に対応するためには、ソケットと、ＳＰ（Ｓｅｃｕｒｉｔｙ  Ｐｏｌｉｃｙ）と、ＳＡ（Ｓｅｃｕｒｉｔｙ  Ａｓｓｏｃｉａｔｉｏｎ）等とのエントリ登録上限数を増加させる必要がある。しかし、エントリ登録上限数の増加に比例して連想メモリの容量を増加させる必要があり、実装コストが高くなってしまう。そこで、検索テーブルの一部をＤＲＡＭ等の外部メモリ上に格納し、オンチップ上のＳＲＡＭ等の内部メモリに格納された検索テーブルと外部メモリに格納された検索テーブルとを論理的に１つの検索テーブルとして構成して、検索処理を行う。このように、メモリの実装コストの増加を抑えながらも登録可能な検索対象データとなるエントリの個数を増やすという手法が考えられる。
【０００８】
特許文献１に示す方法は、1つの検索ジョブが完了してから次の検索ジョブを処理するため、１ジョブ単位の検索処理自体の性能低下に対して効果がない。つまり、検索装置において、高速な内部メモリと低速な外部メモリとを併用して検索テーブルを構成すると、外部メモリの検索に時間を要し、１ジョブ単位の検索処理性能が低下するという課題があった。また、複数のプロセッサにより検索装置を共有する場合、処理に時間のかかる検索ジョブが他の検索ジョブの処理を遅延させ、検索装置を占有する時間が長くなり、効率的に検索要求を処理できないという課題がある。またプロトコル処理における検索では検索対象から１つのエントリを見つければよい検索がある。これを高速な内部メモリと低速な外部メモリとを併用して検索テーブルを構成すると、外部メモリに登録されたエントリをヒットさせる場合は処理時間がかかってしまう。プロトコル処理において連続するパケットの検索では同一エントリが検索ヒットとなることが統計的に多く、それが外部メモリに登録されたエントリであった場合は効率的ではないという課題がある。
【課題を解決するための手段】
【０００９】
上記課題を鑑み、本発明は、検索装置において、高速な内部メモリと低速な外部メモリとを併用して検索テーブルを構成する際に生じる１ジョブ単位の検索処理性能の低下を防止する。また、複数のプロセッサによって検索装置を共有する場合に、処理に時間のかかる１つの検索ジョブが他の検索ジョブの処理に与える遅延時間を削減して連続する検索要求を効率的に処理する。また高速な内部メモリを低速な外部メモリより優先して使用するように内部メモリエントリ削除時に検索テーブル内のエントリを再配置し、検索処理性能を最大限に発揮する。さらに、内部メモリテーブル又は外部メモリテーブルに登録されているエントリデータが１つでも検索キーと一致すれば検索を終了するモードである場合に外部メモリテーブルで検索ヒットしたエントリを任意の内部メモリエントリと入れ替え連続するパケットの検索要求を効率的に処理する。
【００１０】
上記の目的の少なくとも何れか１つを達成する本発明に係る情報処理装置は、
情報処理装置であって、
第１のメモリと、
前記第１のメモリよりも高速に動作する第２のメモリと、
前記第１のメモリと前記第２のメモリとから、他の装置との通信に用いるデータの検索処理を行う検索手段とを有し、
前記検索手段による検索処理には、前記第１のメモリもしくは前記第２のメモリのいずれかにおいて前記データが検出されると前記検索処理を終了する第１の検索方法と、前記第１のメモリもしくは前記第２のメモリのいずれかにおいて前記データが検出された場合であっても前記検索処理を継続する第２の検索方法とがあり、
更に、
前記第１の検索方法の検索処理によって、前記第１のメモリで前記データが検出された場合には当該検出されたデータを前記第１のメモリから前記第２のメモリに移動させ、前記第２の検索方法の検索処理によって前記第１のメモリで前記データが検出された場合には当該検出されたデータを前記第１のメモリから前記第２のメモリに移動させない制御手段を有することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、検索装置において、高速な内部メモリと低速な外部メモリとを併用して検索テーブルを構成する際に生じる１ジョブ単位の検索処理性能の低下を防止することが可能となる。また、複数のプロセッサによって検索装置を共有する場合に、処理時間のかかる１つの検索ジョブが他の検索ジョブの処理に与える遅延時間を部分的に削減することが可能となり、連続する検索要求を効率的に処理することが可能となる。また、高速な内部メモリを低速な外部メモリより優先して使用し、検索処理性能を最大限に発揮することが可能となる。さらに外部メモリに登録されたエントリが連続するパケットの検索の対象エントリであった場合の遅延時間を削減することが可能となり、連続するパケットの検索要求を効率的に処理することが可能となる。
【図面の簡単な説明】
【００１２】
【図１】第１及び第２実施形態に係るＴＯＥサブシステム構成を示す図。
【図２】第１実施形態に係る検索装置の構成を説明する図。
【図３】第２実施形態に係る検索装置の構成を説明する図。
【図４】第１及び第２実施形態に係る通信装置を俯瞰する図。
【図５】第１及び第２実施形態に係る各サブプロセッサの役割と各プロトコル処理パイプラインステージの関係を示す図。
【図６】第１及び第２実施形態に係るパケット受信処理時の検索処理について、サブプロセッサと検索装置のシーケンスを示した図。
【図７】第１実施形態に係る検索装置内の処理シーケンスを示した図。
【図８】第１実施形態に係る共通検索部内の処理シーケンスを示した図。
【図９】第２実施形態に係る検索装置内の処理シーケンスを示した図。
【図１０】第１実施形態に係る検索ジョブの開始、終了等のタイミングを示す図（全検索モード）。
【図１１】第１実施形態に係る検索ジョブの開始、終了等のタイミングを示す図（シングルヒットモード）。
【図１２】第２実施形態に係る検索ジョブの開始、終了等のタイミングを示す図（全検索モード）。
【図１３】第２実施形態に係る検索ジョブの開始、終了等のタイミングを示す図（シングルヒットモード）。
【図１４】第１及び第２実施形態に係る検索装置の検索処理フローについて示した図。
【図１５】第１実施形態に係る検索装置の検索処理起動時の検索制御処理フローを示した図。
【図１６】第１及び第２実施形態に係る検索装置の検索終了判定時の検索制御処理フローを示した図。
【図１７】第１及び第２実施形態に係るエントリ削除処理受付フローを示した図。
【図１８】第１及び第２実施形態に係るエントリ登録処理受付処理フローを示した図。
【図１９】第１及び第２実施形態に係るエントリ入れ替え処理フローを示した図。
【発明を実施するための形態】
【００１３】
（第１実施形態）
第１実施形態に係るＴＯＥサブシステム１０５を含む通信装置の構成の例について説明する。
【００１４】
図１及び図４のシステムバス１０２は英国ＡＲＭ社が提唱するＡＭＢＡ３．０ＡＸＩ（Ａｄｖａｎｃｅｄ  ｅＸｔｅｎｓｉｂｌｅ  Ｉｎｇｅｒｆａｃｅ）仕様に代表されるクロスバースイッチ構造のオンチップバスである。システムバス１０２は通信装置に求められる送受信データの並行転送動作が可能である。第１実施形態に係るＴＯＥサブシステム１０５は通信装置のシステムバス１０２に接続されている。
【００１５】
通信装置はＴＯＥサブシステム１０５が備えるＰＨＹ（Ｐｈｙｓｉｃａｌ  ＬａｙｅｒＣｈｉｐ）１３４を介してイーサネット（登録商標）１３５に接続されている（図１参照）。ＨＤ（Ｈａｒｄ  Ｄｉｓｋ）装置４０６は二次記憶制御部４０５を介してシステムバス１０２に接続されている（図４参照）。ＨＤ装置４０６には通信装置の機能を実現するソフトウェアとその関連データと、各サブシステム内のサブプロセッサで動作するファームウエアとその関連データとが格納されている。更に、ＨＤ装置４０６は通信装置の動作履歴や通信履歴等の履歴情報を格納する。ソフトウェアは、通信装置の各機能を実現するアプリケーションソフトウエアと、アプリケーションプロトコルと、関連ハードウエアを制御するためのデバイスドライバと、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）と備えている。
【００１６】
Ｆｌａｓｈメモリ４１３はメモリ制御部４１２を介してシステムバス１０２に接続されている。Ｆｌａｓｈメモリ４１３は書き換え可能な不揮発性メモリである。Ｆｌａｓｈメモリ４１３には通信装置の起動時に動作するブートプログラムと通信装置の初期状態設定に必要なパラメータとが格納される。更に、Ｆｌａｓｈメモリ４１３は通信装置の起動時に各ハードウエアを制御するためのデバイスドライバプログラムと各ハードウエア起動時の設定パラメータ等とを保存する。
【００１７】
コンピュータである通信装置の主プロセッサ１０１はＦｌａｓｈメモリ４１３内のブートプログラムを実行する。更に、主プロセッサ１０１は通信装置の各ハードウエアとサブシステムとを初期化した後、ＨＤ装置４０６に格納されているソフトウェアを主メモリ１０４にロードして、ソフトウェアが備えるＯＳを起動する。また、主プロセッサ１０１は、サブシステムの初期化時にＴＯＥサブシステム１０５に内蔵されているサブプロセッサＡからＥの５個のサブプロセッサ（１１１〜１１５）が実行する各ファームウエアを主メモリ１０４上に展開して、各サブプロセッサを起動する。各サブプロセッサ（１１１〜１１５）は主メモリ１０４上に展開された各ファームウエアを、各サブプロセッサに内蔵する命令キャッシュメモリにロードして、ファームウエアプログラムを実行する。
【００１８】
通信装置のシステムバス１０２には、各ハードウエアやＴＯＥサブシステム１０５からの割り込みイベントを主プロセッサ１０１に伝達する、割り込み制御部４０１が接続されている。また、通信装置は、ソフトウェア等により起動され、時間計測やタイムアウトイベントを発生させるタイマ４０２を備える。また、通信装置は、通信装置の動作モードの設定やＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレスに代表される各通信パラメータを入力するための入力キー４１０を備える。更に、通信装置は、アプリケーション通信装置の状態や設定内容等を表示する表示装置４０４と、ＩＥＥＥ８０２．１１ａ／ｂ／ｇ／ｎ規格に準拠した無線ＬＡＮに接続するための無線ＬＡＮサブシステム４０８とを備える。
【００１９】
ＴＯＥサブシステム１０５は、内部にサブシステムバス１２３を備え、バスブリッジ１１６を介してシステムバス１０２に接続されている（図１参照）。このサブシステムバス１２３はクロスバースイッチ接続である。ＴＯＥサブシステム１０５が内蔵する５個の各サブプロセッサ（１１１〜１１５）は、サブシステムバス１２３に接続されている。これらの各サブプロセッサによるマルチプロセッサ処理により、主システムからＴＣＰ／ＩＰプロトコル処理をオフロードし、高速に実行する。
【００２０】
また、ＴＯＥサブシステム１０５は、５個の各サブプロセッサＡ〜Ｅ（１１１〜１１５）間の通信部と、情報共有の為の共有メモリ１２５と、ＴＣＰ／ＩＰプロトコル処理に必要な時間計測及びタイムアウトイベントを発生させる通信タイマ１２４とを備える。さらに、ＴＯＥサブシステム１０５は、イーサネット（登録商標）１３５に接続するためのＰＨＹ１３４とＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）１３３とを備える。ＰＨＹ１３４はＯＳＩ参照モデルの第１層に位置するＰＨＹ（物理）層５０７のプロトコル処理と電気信号を扱うハードウエアである。ＭＡＣ１３３はＯＳＩ参照モデルのデータリンク層（第２層）の下位副層に相当するＭＡＣ層５０６のプロトコルを処理するハードウエアである。
【００２１】
ＴＯＥサブシステム１０５は、受信パケットデータと送信パケットデータとを、例えば主メモリ１０４あるいは共有メモリ１２５であるメモリデバイスと、ＭＡＣ１３３との間でＤＭＡ転送機能を有するデータバス制御部１３２を備える。データバス制御部１３２は転送処理中に、パケットデータのチェックサム演算を行う。さらに、ＴＯＥサブシステム１０５は、プロトコル処理の様々な管理情報の格納と検索処理とを行う連想メモリを保有する検索装置１２２を備える。
【００２２】
ＴＯＥサブシステム１０５は、暗号通信プロトコル処理を実行する。暗号通信プロトコルとしては、ＩＰｓｅｃ（Ｓｅｃｕｒｉｔｙ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｆｏｒ  Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）などがある。また、ＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔ  Ｌａｙｅｒ）、ＴＬＳ（Ｔｒａｎｓｐｏｒｔ  Ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙ）等の暗号通信プロトコル処理も実行する。そのために、ＴＯＥサブシステム１０５は鍵管理部１２６と、乱数発生器１２７と、暗号器１２９とを備える。鍵管理部１２６は暗号通信プロトコル処理のために生成した暗号鍵と、乱数及び素数を機密に保持する。乱数発生器１２７は、暗号処理に必要となる乱数値を生成する。また、ＴＯＥサブシステム１０５が備える暗号器１２９は、米国商務省標準技術局（ＮＩＳＴ）によって選定されたＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号器を備える。また、認証やデジタル署名などに使われるＳＨＡ−１（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ  １）ハッシュ関数器を備える。また、ＲＦＣ１３２１としてＩＥＴＦで標準化されているＭＤ５（Ｍｅｓｓａｇｅ  Ｄｉｇｅｓｔ  ５）ハッシュ関数器等を備える。
【００２３】
図５を参照し、ＴＯＥサブシステム１０５の各サブプロセッサＡ〜Ｅ（１１１〜１１５）の役割を説明する。図５の５０１〜５０７はＴＣＰ／ＩＰプロトコル処理を階層構造で示している。それぞれ、アプリケーション層５０１と、ソケットＡＰＩ５０２と、トランスポート層（ＴＣＰ／ＵＤＰ層）５０３と、インターネット層（ＩＰ層）５０４と、ＭＡＣドライバ５０５と、ＭＡＣ層５０６と、ＰＨＹ層５０７とを示している。ＴＯＥサブシステム１０５の処理機能は、層５１０の範囲をカバーする。すなわち、ＩＰプロトコルを処理するＩＰ層５０４の処理機能と、ＴＣＰプロトコルとＵＤＰプロトコルとを処理するＴＣＰ／ＵＤＰ層５０３の処理機能とを備える。さらに、ＭＡＣ層５０６との間で通信データと通信情報を交換するＭＡＣドライバ５０５の機能を備える。また、アプリケーション通信のＡＰＩである、ソケットＡＰＩ５０２の一部の機能を備える。
【００２４】
これらの機能は各サブプロセッサに分割して処理する。例えば、ソケットＡＰＩ５０２部分の処理をサブプロセッサＡ１１１に割り当て、ＴＣＰプロトコルとＵＤＰプロトコルとの処理の内、受信動作に関わる処理をサブプロセッサＢ１１２に割り当て、送信動作に関わる処理をサブプロセッサＣ１１３に割り当てる。ＭＡＣドライバ５０５とＩＰプロトコルとの処理の内、受信動作に関わる処理をサブプロセッサＤ１１４に割り当て、送信動作に関わる処理をサブプロセッサＥ１１５に割り当てる。このような分割の意図は、一連のプロトコル処理を３つのパイプラインステージ（５１１〜５１３）に分割し、パイプライン動作をさせることにある。また、送信動作と受信動作を分割することで、それぞれの機能を担当するサブプロセッサ同士が並列的に動作することができる。
【００２５】
本実施形態では、各サブプロセッサ間の処理データの伝達と制御情報の共有は共有メモリ１２５を介して行われる。例えば、ＴＣＰプロトコルは転送データの到達保証を行う観点から、データ受信側から送信側に対して確認応答と称する到達確認情報をコネクション間で伝達する。この確認応答処理を行うには、サブプロセッサＢ１１２とサブプロセッサＣ１１３との間で確認応答の伝達５１４が必要となる（図５参照）。このようなＴＣＰ通信の制御情報の伝達は共有メモリ１２５を介して行われる。各サブプロセッサ間における到達確認情報の伝達と制御情報の共有とは、主メモリ１０４を用いて行ってもよい。
【００２６】
ＴＯＥサブシステム１０５が備える検索装置１２２の構成例を説明する。図２のように、読出処理と比較処理とによりデータの検索処理を実行する検索装置１２２はＴＯＥサブシステム１０５のサブシステムバス１２３に接続されている。検索装置１２２はプロトコル処理における検索処理を各サブプロセッサから要求されることにより実行され、検索結果を各サブプロセッサに返す。その際、サブプロセッサは検索キーと、検索モード等とのパラメータを設定し、検索処理要求を行う。検索モードには、検索テーブルに登録されているエントリデータが１つでも検索キーと一致すれば検索処理を終了するシングルヒットモードがある。また、検索テーブルに登録されている全てのエントリデータと検索キーとが一致するか否かを比較した後に検索処理を終了する全検索モードがある。全検索モードでは、複数のエントリデータが見つかる可能性がある。
【００２７】
また、検索装置１２２は検索テーブルへのエントリデータの登録処理と、削除処理とをサブプロセッサからの要求により行う。検索装置１２２は、検索処理と、検索装置内のメモリ及び検索装置が参照する外部メモリへのエントリデータの登録処理と、削除処理とを受け付ける検索処理受付部２０１を備える。
【００２８】
また、検索処理受付部２０１は検索ジョブを内部メモリ処理ジョブ（第１分割ジョブ）と外部メモリ処理ジョブ（第２分割ジョブ）とに分割する。図１に示すシステムでは、外部メモリとは主メモリ１０４に相当する。また、検索装置１２２は、内部メモリ処理ジョブをキューイングする、第１のキューイング手段としての内部メモリ処理キュー２０２を備える。また、外部メモリ処理ジョブをキューイングする、第２のキューイング手段としての外部メモリ処理キュー２０３を備える（図２参照）。また、検索装置１２２は、これら二つのキューにキューイングされた各ジョブから処理を実行する共通検索部２１１を備える。また、検索装置１２２は、共通検索部２１１が処理した結果を、検索処理要求を行ったサブプロセッサに通知する検索結果通知部２０９を備える。
【００２９】
共通検索部２１１は内部メモリ処理ジョブと外部メモリ処理ジョブとを解析し、検索処理と、登録処理と、削除処理とを制御する検索制御部２０４を備える。また、共通検索部２１１は検索対象となるエントリを格納する、第１の記憶手段としての内部メモリテーブル２０６と、内部メモリテーブル２０６を制御する内部メモリテーブル制御部２０５とを備える。内部メモリとしては、ＳＲＡＭ２５０等が用いられる。また、共通検索部２１１は検索対象となるエントリを格納する、第２の記憶手段としての外部メモリテーブル２０８と、外部メモリテーブル２０８を制御する外部メモリテーブル制御部２０７とを備える。また、共通検索部２１１は、内部メモリテーブル制御部２０５と外部メモリテーブル制御部２０７とが読出したエントリデータと検索キーとの比較処理を行う比較部２１０を備える。なお、内部メモリテーブル２０６はＴＯＥサブシステム１０５が備える共有メモリ１２５を用いて制御してもよい。
【００３０】
共通検索部２１１の検索処理のタイミングについて説明する。検索ジョブ１と検索ジョブ２とが両方ともに検索モードが全検索モードで処理要求が行われた場合について、図１０を参照して説明する。
【００３１】
タイミング１００１において、検索処理要求が行われると検索ジョブ１が投入される。検索ジョブ１の投入後直ちに検索ジョブ１が開始され、分割された内部メモリ検索ジョブ１と外部メモリ検索ジョブ１とのそれぞれの検索処理が開始される。検索処理は、エントリデータの読出処理と、読み出したエントリデータと予め設定された検索キーとの比較処理とにより処理を実行する。内部メモリ検索ジョブ１と、外部メモリ検索ジョブ１との比較処理は外部メモリの読出しの（バースト）単位で共通検索部２１１により読出処理と比較処理とを切り替えて行われる。内部メモリ検索処理が行われている間には外部メモリの読出処理が行われ、外部メモリの読出処理が一定単位終了すると、外部メモリから読出したエントリデータと検索キーとの比較を行う。この読出しの単位は検索対象データとなるエントリサイズと同サイズであることが望ましい。エントリサイズと読出し単位のサイズとが異なる場合には、比較部２１０における比較処理に際して予め設定された検索キーと読出したエントリデータとを、部分的に比較する必要がある。
【００３２】
タイミング１００２において、次の検索処理要求が行われると検索ジョブ２が投入される。このとき内部メモリテーブル制御部２０５と、外部メモリテーブル制御部２０７とはそれぞれ検索処理を行っている。そのため、検索ジョブ２が分割された内部メモリ検索ジョブ２と外部メモリ検索ジョブ２とはそれぞれ内部メモリ処理キュー２０２と外部メモリ処理キュー２０３との各処理キューにエンキューされる。外部メモリ検索ジョブ２は、内部メモリテーブル制御部２０５が内部メモリ検索ジョブ１の検索処理を終えて、次の内部メモリ検索ジョブとしてデキューされるまでの期間１００９、内部メモリ処理キュー２０２にキューイングされる。また、外部メモリ検索ジョブ２も同様に、外部メモリテーブル制御部２０７が外部メモリ検索ジョブ１の処理を終えて、次の外部メモリ検索ジョブとしてデキューされるまでの期間１０１０、外部メモリ処理キュー２０３にキューイングされる。
【００３３】
タイミング１００３において、検索キーと検索ジョブ１の内部メモリテーブル２０６の全エントリデータとの比較が完了し内部メモリ検索ジョブ１が終了すると、直ちにタイミング１００４において内部メモリ検索ジョブ２がデキューされ検索処理が開始される。タイミング１００５において、検索キーと、検索ジョブ１の外部メモリテーブル２０８の全エントリデータとの比較が完了し、外部メモリ検索ジョブ１が完了すると検索ジョブ１が完了する。検索結果通知部２０９は、検索処理要求を行ったサブプロセッサに検索結果を通知する。タイミング１００４とタイミング１００５との間は、検索ジョブ１に係る外部メモリ検索ジョブ１と検索ジョブ２に係る内部メモリ検索ジョブ２とを一定の時間毎に切り替えて処理が実行される。
【００３４】
タイミング１００６において、タイミング１００５で検索キーと、検索ジョブ１の外部メモリテーブル２０８の全エントリデータとの比較が完了して外部メモリ検索ジョブ１が終了すると、直ちに外部メモリ検索ジョブ２がデキューされて検索処理が開始される。タイミング１００７において、検索キーと、検索ジョブ２の内部メモリテーブル２０６の全エントリデータとの比較処理が完了して内部メモリ検索ジョブ２が終了する。この時点では次の内部メモリ検索ジョブがキューイングされていないため、内部メモリテーブル制御部２０５は次の内部メモリ検索ジョブが投入されるまで待機する。
【００３５】
タイミング１００８において、検索キーと、検索ジョブ２の外部メモリテーブル２０８の全エントリデータとの比較が完了し、外部メモリ検索ジョブ２が完了する。検索ジョブ２が完了し、検索結果通知部２０９は検索結果を検索処理要求を行ったサブプロセッサに通知する。タイミング１００７とタイミング１００８との間は、内部メモリ検索処理が行われていないため、外部メモリ検索処理のみが行われる。
【００３６】
タイミング１００１とタイミング１００５との間は、検索ジョブ１が実行されている時間となり、タイミング１００４とタイミング１００８との間は、検索ジョブ２が実行されている時間となる。
【００３７】
区間１０２１、区間１０２３、区間１０２５、区間１０２７は、検索ジョブ１における内部メモリ検索処理と外部メモリ読出処理とを行っている時間である。区間１０２２、区間１０２４、区間１０２６は、検索ジョブ１における外部メモリから読出したエントリデータと検索キーとの比較処理を行っている時間及び内部メモリ読出処理を行っている時間である。区間１０２８、区間１０３０、区間１０３２、区間１０３４は、検索ジョブ１における外部メモリから読出したエントリデータと検索キーとの比較処理を行っている時間及び検索ジョブ２における内部メモリ読出処理を行っている時間である。区間１０２９、区間１０３１、区間１０３３は、検索ジョブ１における外部メモリ読出処理を行っている時間及び検索ジョブ２における内部メモリ検索処理を行っている時間である。区間１０３５は検索ジョブ２における外部メモリ読出処理を行っている時間及び内部メモリ検索処理を行っている時間である。区間１０３６は検索ジョブ２における外部メモリ検索処理を行っている時間である。このように内部メモリ検索処理を行っている間に外部メモリの読出処理を並列に実行する。また、比較部２１０による比較処理は一定単位で共通検索部２１１により読出処理と比較処理とを切り替えて並行処理を実行するため、効率的に検索処理が可能となる。
【００３８】
図１１を参照し、検索ジョブ１と検索ジョブ２とが両方ともに検索モードが、シングルヒットモードで処理要求が行われた場合について説明する。タイミング１１０１において、検索処理要求が行われると検索ジョブ１が投入される。検索ジョブ１の投入後直ちに検索ジョブ１が開始され、検索ジョブ１が分割された二つのジョブである内部メモリ検索ジョブ１と、外部メモリ検索ジョブ１とのそれぞれの検索処理が開始される。内部メモリ検索ジョブ１と外部メモリ検索ジョブ１との比較処理は外部メモリの読出しの（バースト）単位で切り替えて行われる。内部メモリ検索処理が行われている間には外部メモリの読出処理が行われ、外部メモリの読出しが一定単位終了すると外部メモリから読出したエントリデータと検索キーとの比較処理を行う。
【００３９】
タイミング１１０２において、次の検索処理要求が行われると検索ジョブ２が投入される。このとき内部メモリテーブル制御部２０５と、外部メモリテーブル制御部２０７とは、それぞれ検索ジョブ１が分割された二つのジョブである内部メモリ検索ジョブ１と外部メモリ検索ジョブ１との処理を行っている。そのため検索ジョブ２が分割された二つのジョブである内部メモリ検索ジョブ２と、外部メモリ検索ジョブ２とは、それぞれ内部メモリ処理キュー２０２と、外部メモリ処理キュー２０３とにエンキューされる。内部メモリ検索ジョブ２は、内部メモリテーブル制御部２０５が内部メモリ検索ジョブ１の処理を終了して、次の内部メモリ検索ジョブとしてデキューされるまでの期間１１０８、内部メモリ処理キュー２０２にキューイングする。また、外部メモリ検索ジョブ２も同様に外部メモリテーブル制御部２０７が外部メモリ検索ジョブ１の処理を終了して、次の外部メモリ検索ジョブとしてデキューされるまでの期間１１０９、外部メモリ処理キュー２０３にキューイングされる。
【００４０】
タイミング１１０３において、検索キーと、内部メモリテーブル２０６の全エントリデータとの比較処理を実行しても１つもヒット（一致）せずに内部メモリ検索ジョブ１が終了する。すると、直ちにタイミング１００４において内部メモリ検索ジョブ２がデキューされて、次の検索処理が開始される。タイミング１１０５において、検索キーと、外部メモリテーブル２０８のエントリデータとの比較処理の結果、検索がヒット（一致）して、外部メモリ検索ジョブ１が終了すると検索ジョブ１が完了する。すると、検索結果通知部２０９は検索結果を検索処理要求を行ったサブプロセッサに通知する。タイミング１１０４とタイミング１１０５との間は、検索ジョブ１の外部メモリ検索と検索ジョブ２の内部メモリ検索とが切り替わりながら処理が行われる。
【００４１】
タイミング１１０６において、タイミング１１０５で外部メモリ検索ジョブ１が終了すると直ちに外部メモリ検索ジョブ２がデキューされ検索処理が開始される。タイミング１１０７において、検索ジョブ２の内部メモリ検索処理が、検索キーと内部メモリテーブル２０６の全エントリデータとの比較処理の結果、検索がヒット（一致）して終了すると検索ジョブ２が完了する。検索結果通知部２０９は検索結果を検索処理要求を行ったサブプロセッサに通知する。また、外部メモリ検索ジョブ２は外部メモリ処理キュー２０３にキューイングされており、検索処理開始待ちの状態である。よって、検索制御部２０４により、外部メモリ検索ジョブ２を外部メモリ処理キュー２０３から取り消す。この時点では次の内部メモリ処理ジョブと外部メモリ処理ジョブとがキューイングされていないため、次の検索ジョブが投入されるまで待機する。タイミング１１０１とタイミング１１０５との間は、検索ジョブ１が実行されている時間となり、タイミング１１０４とタイミング１１０７との間は、検索ジョブ２が実行されている時間となる。
【００４２】
区間１１２１、区間１１２３、区間１１２５、区間１１２７は、検索ジョブ１における内部メモリ検索処理と検索ジョブ１における外部メモリ読出処理とを行っている時間である。区間１１２２、区間１１２４、区間１１２６は、検索ジョブ１における外部メモリから読出したエントリデータと検索キーとの比較処理と、検索ジョブ１における内部メモリ読出処理とを行っている時間である。区間１１２８、区間１１３０は、検索ジョブ１における外部メモリから読出したエントリデータと検索キーとの比較処理と検索ジョブ２における内部メモリ読出処理とを行っている時間である。区間１１２９は、検索ジョブ１における外部メモリ読出処理と検索ジョブ２における内部メモリ検索処理とを行っている時間である。区間１１３１、区間１１３３は、検索ジョブ２における外部メモリ読出処理と検索ジョブ２における内部メモリ検索処理とを行っている時間である。区間１１３２は、検索ジョブ２における外部メモリから読出したエントリデータと検索キーとの比較処理と検索ジョブ２における内部メモリ読出処理とを行っている時間である。
【００４３】
このように、内部メモリ検索処理を行っている間に外部メモリの読出処理を並列に行い、比較部２１０による比較処理を一定単位で切り替えて並行に処理を行うため、効率的に検索処理が可能となる。また、シングルヒットモードにより1つのエントリデータが見つかった時点で検索ジョブを終了するため、検索処理をより早く終えることが期待できる。
【００４４】
検索装置１２２の検索処理フローについて説明する。図１４におけるステップＳ１４０１において、各サブプロセッサによって処理要求がレジスタに書き込まれることにより、検索処理受付部２０１は処理要求を受け付ける。検索処理受付部２０１は処理要求を解析し、検索ジョブを内部メモリ検索ジョブと外部メモリ検索ジョブとに分割し、それぞれ内部メモリ処理キュー２０２と外部メモリ処理キュー２０３とにエンキューする。
【００４５】
ステップＳ１４０２において、検索制御部２０４は、内部メモリテーブル制御部２０５と、外部メモリテーブル制御部２０７との状態に応じて検索処理の起動を行う。ここで、図１５を参照し、ステップＳ１４０２の検索制御部２０４の検索処理起動手順について説明する。ステップＳ１５０１において、検索制御部２０４は内部メモリテーブル制御部２０５と外部メモリテーブル制御部２０７とのどちらか一方が検索処理を終了しているか否かを調べる。検索処理が終了している内部メモリテーブル制御部又は外部メモリテーブル制御部が無い場合は、検索制御部２０４は少なくともどちらか一方の検索処理が終了するまで待機する。
【００４６】
ステップＳ１５０２において、検索制御部２０４はステップＳ１５０１で処理が終了していると判定した内部メモリテーブル制御部に対応する内部メモリ処理キュー２０２に、内部メモリ検索ジョブがキューイングされるまで待機する。同様に、検索制御部２０４は、外部メモリテーブル制御部に対応する外部メモリ処理キュー２０３に外部メモリ検索ジョブがキューイングするまで待機する。
【００４７】
ステップ１５０３において、内部メモリ処理キュー２０２又は外部メモリ処理キュー２０３から次の内部メモリ検索ジョブ又は外部メモリ検索ジョブをデキューする。ステップ１５０４において、ステップ１５０３でデキューした内部メモリ検索ジョブ又は外部メモリ検索ジョブから検索モードを取得する。ステップ１５０５において、ステップ１５０３でデキューした内部メモリ検索ジョブ又は外部メモリ検索ジョブから検索キーを取得し、比較部２１０に検索キーを設定する。ステップ１５０６において検索処理を起動する。以上が検索制御部２０４の検索処理起動手順である。
【００４８】
また、図１４におけるステップ１４０３において、共通検索部２１１は検索処理を実行する。内部メモリ検索ジョブの場合、検索処理は内部メモリテーブル制御部２０５と比較部２１０とによって実行される。一方、外部メモリ検索ジョブの場合、検索処理は外部メモリテーブル制御部２０７と比較部２１０とによって実行される。
【００４９】
内部メモリ検索ジョブと外部メモリ検索ジョブとは非同期に開始される。内部メモリ検索ジョブと外部メモリ検索ジョブとは、検索テーブルの各エントリデータを順次読み出し、比較部２１０は読み出したエントリデータと検索キーとの比較処理を行い、比較結果を検索制御部２０４に通知する。比較結果の通知処理では、内部メモリ検索ジョブと外部メモリ検索ジョブとのどちらの検索ジョブであるかの情報と、エントリのメモリアドレス情報と、比較結果が一致あるいは不一致であったか等の情報とが伝達される。
【００５０】
また、内部メモリテーブル制御部２０５と外部メモリテーブル制御部２０７とは、それぞれ、対象である検索テーブルの全エントリデータの読み出しを終了すると、検索制御部２０４に対して全エントリデータの読み出し終了を通知する。ステップ１４０４において、検索制御部２０４は検索処理の終了判定を行う。ステップＳ１４０４の処理は、検索制御部２０４によって実行される。
【００５１】
ここで、図１６を参照し、検索制御部２０４の検索処理終了時の処理について説明する。ステップＳ１６０１において、比較部２１０から比較結果を受け取る。ステップＳ１６０２において、ステップＳ１６０１で受け取った比較の結果、検索がヒットしたか否かを判定する。ヒットした場合はステップＳ１６０３へ進む。ヒットしなかった（不一致）場合はステップＳ１６０５へ進む。ステップＳ１６０３において、検索ジョブの検索モードがシングルヒットモードであるか否かを判定する。シングルヒットモードでない場合は、全検索モードである。
【００５２】
シングルヒットモードのときは、ステップＳ１６０４において、分割した検索ジョブのもう一方のジョブが終了しているか判定する。分割した検索ジョブのもう一方のジョブが終了していた場合はステップＳ１６１１へ進む。一方、分割した検索ジョブのもう一方のジョブが終了していなかった場合はステップＳ１６０７へ進む。ステップＳ１６０７において、分割した検索ジョブのもう一方のジョブが処理を開始しているか否かを判定する。処理を開始していた場合はステップＳ１６０９において、分割した検索ジョブのもう一方のジョブの実行を終了する。処理を開始していなかった（処理キューにキューイングしていた）場合は、ステップＳ１６０８において、処理キューにキューイングしているもう一方のジョブを取り消す。ステップ１６１１においてエントリの格納場所の入れ替え処理を行う。検索テーブルのエントリデータを入れ替える際の、検索制御部２０４の処理について説明する。
【００５３】
図１９のステップＳ１９０１において、パケット処理情報検索テーブルの外部メモリで検索ヒットしたか否かを判定する。外部メモリでエントリがヒットしていた場合は、ステップＳ１９０２において、パケット処理情報検索テーブルの外部メモリでヒットしたエントリと任意の内部メモリエントリを入れ替える（第１入れ替え）ジョブを発行しそれぞれの処理キューにキューイングする。任意の内部メモリエントリとは先頭を除いたラウンドロビンで管理され、外部メモリエントリとの入れ替えが行われるたびに選択されるエントリが更新される。本実施形態では以上のように入れ替えを行う内部メモリエントリを選択したが、入れ替える内部メモリエントリは内部メモリの先頭エントリであってもよいし、ＬＲＵ等その他任意のアルゴリズムによって選択された内部メモリエントリであってもよい。一方、内部メモリでヒットした場合は、ステップＳ１９０３へ進む。ステップＳ１９０３において内部メモリテーブルの先頭エントリか否かを判定する。内部メモリの先頭エントリであった場合はエントリ入れ替え処理を終了する。一方、内部メモリテーブルの先頭エントリでなかった場合はステップＳ１９０４へ進む。ステップＳ１９０４においてパケット処理情報検索テーブルの内部メモリに格納された先頭エントリとヒットしたエントリをすぐに入れ替える（第２入れ替え）。この際、エントリの入れ替えを行わずに、次回検索時にヒットしたエントリから検索を始めるといった方式であってもよい。また、先頭エントリでなく、優先的に検索が行われる複数のエントリグループであってもよい。本実施形態では以上のような手順でエントリデータ入れ替え処理を行うが、内部メモリと外部メモリとに配置して論理的に１つの検索テーブルを構成するための整合性が取れる手順であればよい。
【００５４】
Ｓ１６０３において、検索モードがシングルヒットモードでなく全検索モードであった場合は、ステップＳ１６０５において、全エントリデータと検索キーとの比較を行ったか否かを判定する。つまり、検索制御部２０４が全エントリデータ読出し完了通知を外部メモリテーブル制御部２０７又は内部メモリテーブル制御部２０５から受け取ったか否かを判定する。全エントリデータと検索キーとの比較を行っていた場合はステップＳ１６０６へ進む。全エントリデータと検索キーとの比較を行っていなかった場合はステップＳ１６０１へ戻る。ステップＳ１６０６において、分割した検索ジョブのもう一方のジョブが終了しているか否かを判定する。分割した検索ジョブのもう一方のジョブが終了していた場合は処理を終了する。分割したもう一方のジョブが終了していなかった場合は、ステップＳ１６１０において、分割した検索ジョブのもう一方のジョブが完了するまで待機し、完了すると処理を終了する。以上が検索制御部２０４の検索処理終了時の検索制御処理フローである。
【００５５】
図１４におけるステップＳ１４０５において、検索結果通知部２０９は検索の終了と検索結果とを、検索処理要求を行ったサブプロセッサに通知する。
【００５６】
検索テーブルへ新規にエントリデータを登録する際の、検索処理受付部２０１の処理について説明する。
【００５７】
図１７のステップＳ１７０１において、検索テーブルを構成する内部メモリに空きがあるか否かを判定する。空きがあった場合は、ステップＳ１７０２において、検索テーブルの内部メモリにエントリデータを新規に追加するジョブを発行し、内部メモリ処理キュー２０２にその追加ジョブをエンキューする。空きがなかった場合は、ステップＳ１７０３において、検索テーブルの外部メモリにエントリデータを新規に追加するジョブを発行し、外部メモリ処理キュー２０３にその追加ジョブをエンキューする。
【００５８】
登録処理においては内部メモリ処理ジョブと、外部メモリ処理ジョブとのどちらか一方のみの追加ジョブを発行する。本実施形態では以上のような手順で登録処理を行うが、内部メモリと外部メモリとに配置して論理的に１つの検索テーブルを構成するための整合性が取れる手順であればよい。
【００５９】
検索テーブルからエントリデータを削除する際の、検索処理受付部２０１の削除処理について説明する。図１８のステップＳ１８０１において、指定した検索テーブルのエントリデータが内部メモリに格納されているか否かを判定する。内部メモリに格納されていなかった場合は、ステップＳ１８０２において、指定した検索テーブルの外部メモリのエントリデータを削除するジョブを発行し、外部メモリ処理キュー２０３にその削除ジョブをエンキューする。内部メモリに格納されていた場合は、ステップＳ１８０３において、外部メモリに検索テーブルのエントリデータが登録されているか否かを判定する。登録されていなかった場合は、ステップＳ１８０４において、指定した検索テーブルの内部メモリのエントリデータを削除するジョブを発行し、内部メモリ処理キュー２０２に削除ジョブをエンキューする。
【００６０】
登録されていた場合は、ステップＳ１８０５において、外部メモリに格納された検索テーブルの任意のエントリデータを削除対象の内部メモリのエントリデータに格納する格納ジョブを発行し、内部メモリ処理キュー２０２にその格納ジョブをエンキューする。ステップＳ１８０６において、内部メモリに格納するエントリデータを外部メモリから削除する削除ジョブを発行し、外部メモリ処理キュー２０３に削除ジョブをエンキューする。ステップＳ１８０５で発行した格納ジョブと、ステップＳ１８０６で発行した削除ジョブはどちらが先にエンキューされ実行されてもよい。ステップＳ１８０５で発行した格納ジョブが先に実行された場合は、外部メモリから内部メモリへ移動するエントリデータを内部メモリテーブル制御部２０５が外部メモリから読み出し、内部メモリのエントリデータに登録する。その際、ステップＳ１８０６で発行された削除ジョブはステップＳ１８０２で発行された削除ジョブと同様にエントリデータの削除処理のみを行う。
【００６１】
一方、ステップＳ１８０６で発行された削除ジョブが先に実行された場合は、外部メモリから内部メモリへ移動するエントリデータを外部メモリテーブル制御部２０７が外部メモリから読み出し、検索制御部２０４へ渡してエントリデータを削除する。検索制御部２０４は、内部メモリ処理キュー２０２にキューイングされているステップＳ１８０５で発行された格納ジョブに、読み出した外部メモリのエントリデータを追加する。内部メモリテーブル制御部２０５は格納ジョブに加えられた外部メモリのエントリデータを内部メモリに登録する。ステップＳ１８０５で発行された格納ジョブが実行される際には、この外部メモリのエントリデータが追加されているか否かで、外部メモリを読み出すか否かを判定する。
【００６２】
本実施形態では以上のような手順で検索テーブルに登録されているエントリデータの削除処理を行うが、内部メモリと外部メモリに配置して論理的に１つの検索テーブルを構成するための整合性が取れる手順であればよい。また、内部メモリエントリが削除された場合に内部メモリへ移動する外部メモリエントリは任意のエントリでよいが、外部メモリの最後尾のエントリを選択すると外部メモリ検索時の効率がよい。また外部メモリエントリが削除された場合は同様にして、外部メモリエントリの最後尾のエントリを削除された外部メモリエントリのメモリに移動し格納すると外部メモリエントリ検索時の効率がよい。
【００６３】
次に、ＴＯＥサブシステム１０５が備える複数のサブプロセッサによるパケット受信処理で実行する検索処理のシーケンスについて説明する。図６と、図７と、図８とは上から下方向に時間軸が進む。図６におけるステップＳ６０１において、サブプロセッサＤ１１４は、パケットＡを受信すると、パケットの受信処理のうちＭＡＣドライバ５０５とＩＰプロトコル処理とを開始する。ステップＳ６０２において、サブプロセッサＤ１１４はパケット処理の過程で、パケット処理情報１の検索処理を行う。ステップＳ６０３において、サブプロセッサＤ１１４はパケット処理情報１の検索処理を行うため、検索キーの設定と、検索モード（条件）等のパラメータの設定と、検索処理要求とを検索装置１２２に対して行う。検索キーと検索モード（条件）等とのパラメータは検索装置１２２内のレジスタに書き込む方式と、メモリ上に定められた形式でブロック上に配置して、そのアドレスをレジスタに書き込む方式との何れの方式で行ってもよい。なお、この際検索モードは複数の該当エントリデータが見つかる可能性がある全検索モードで動作するよう設定する。
【００６４】
ステップＳ６０４において、検索装置１２２は設定された検索キーと、検索モード（条件）とに応じた検索処理を行う。ステップＳ６０５において、検索処理が完了した検索装置１２２は検索の終了と検索結果とをサブプロセッサＤ１１４に通知する。検索の終了通知はサブプロセッサＤ１１４への割り込み方式で行っても、レジスタやメモリ上のフラグをサブプロセッサＤ１１４がポーリングする方式で行ってもよい。また、検索結果は検索結果通知部２０９のレジスタに表示しても、メモリ上に配置しても、何れの方法で行ってもよい。
【００６５】
ステップＳ６０６において、サブプロセッサＤ１１４は、ＭＡＣドライバ５０５とＩＰプロトコル処理とが完了すると、サブプロセッサＢ１１２にパケットＡを受け渡す。そしてサブプロセッサＢ１１２はパケットの受信処理の内、ＴＣＰまたはＵＤＰプロトコル処理を開始する。一方、ステップＳ６０７において、次のパケットＢを受信すると、ステップＳ６０１と同様にパケット処理を開始する。ステップＳ６０８において、サブプロセッサＤ１１４はステップＳ６０２と同様に検索処理を行う。ステップＳ６０９において、シングルヒットモードで、ステップＳ６０３と同様に検索処理要求を行う。
【００６６】
ステップＳ６１０において、検索装置１２２は設定された検索キーと、検索モード（条件）とに応じた検索処理を行う。ステップＳ６１０の動作については図７の参照により後述する。ステップＳ６１１において、パケット処理の過程で、サブプロセッサＢ１１２はパケット処理情報２の検索処理を行う。
【００６７】
ステップＳ６１２において、サブプロセッサＢ１１２はパケット処理情報２の検索を行うため、検索キーと、検索モード（条件）等とのパラメータを設定し、検索処理要求を検索装置１２２に対して行う。なお、この際、検索モードは検索キーと一致する１つのエントリデータが見つかればよいシングルヒットモードで動作するよう設定する。
【００６８】
ステップＳ６１３において、検索処理が完了するとステップＳ６０５と同様に、検索終了通知と、検索結果とが、検索装置１２２によりサブプロセッサＢ１１２に伝達される。ステップＳ６１４において、検索処理が完了するとステップＳ６１３と同様に、検索終了通知と、検索結果とが、検索装置１２２によりサブプロセッサＤ１１４に伝達される。
【００６９】
本実施形態では、ステップＳ６１３、ステップＳ６１４の順に処理する例を示したが、実際には検索処理が終了した順に、検索終了通知と検索結果とが、サブプロセッサＢ１１２とサブプロセッサＤ１１４とに伝達される。
【００７０】
ステップＳ６１５において、ステップＳ６０６と同様にパケットＢの受け渡しを行う。ステップＳ６０９とステップＳ６１２とに見られるように、連続する受信パケットの処理では、検索装置１２２が検索処理を実行中であっても他のプロセッサから検索を要求されることがある。以上、図６に示したシーケンスにより、各サブプロセッサから処理要求が行われて検索装置１２２が動作する。
【００７１】
ここで検索装置１２２のステップＳ６１０における検索処理について、図７を参照して説明する。ステップＳ７０１の処理とステップＳ６０９の処理とは同一の処理である。またステップＳ７０８の処理とステップＳ６１２の処理とは同一の処理である。ステップＳ７０１において、サブプロセッサＤ１１４により検索キーと検索モード（条件）等とのパラメータの設定と、検索処理要求とが行われると、検索処理受付部２０１は検索処理要求を受け付け、検索ジョブ１を作成する。ここでは検索モードは全検索モードが指定される。
【００７２】
ステップＳ７０２において、検索処理受付部２０１は検索ジョブ１を内部メモリ検索ジョブ１と外部メモリ検索ジョブ１とに分割する。ステップＳ７０３において、ステップＳ７０２で分割された内部メモリ検索ジョブ１を内部メモリ処理キュー２０２にエンキューする。ステップＳ７０４において、ステップＳ７０２で分割された外部メモリ検索ジョブ１を外部メモリ処理キュー２０３にエンキューする。ステップＳ７０５において、外部メモリ処理キュー２０３にキューイングしている外部メモリ検索ジョブ１を共通検索部２１１がデキューする。ステップＳ７０６において、内部メモリ処理キュー２０２にキューイングしている内部メモリ検索ジョブ１を共通検索部２１１がデキューする。ステップＳ７０７において、共通検索部２１１は内部メモリ検索ジョブ１と外部メモリ検索ジョブ１との検索処理を実行する。
【００７３】
ステップＳ７０８において、ステップＳ７０１と同様にして検索処理受付部２０１は検索処理要求を受け付けて、検索ジョブ２を作成する。本実施形態では検索モードはシングルヒットモードが指定される。ステップＳ７０９において、ステップＳ７０２と同様にして検索ジョブ２を内部メモリ検索ジョブ２と外部メモリ検索ジョブ２とに分割する。ステップＳ７１０において、ステップＳ７０３と同様にして内部メモリ検索ジョブ２を内部メモリ処理キュー２０２にエンキューする。ステップＳ７１１において、ステップＳ７０４と同様にして外部メモリ検索ジョブ２を外部メモリ処理キュー２０３にエンキューする。ステップＳ７１２において、内部メモリ検索ジョブ２を内部メモリ処理キュー２０２にキューイングする。ステップＳ７１３において、外部メモリ検索ジョブ２を外部メモリ処理キュー２０３にキューイングする。
【００７４】
ステップＳ７１４において、共通検索部２１１のステップＳ７０７における内部メモリ検索ジョブ１が終了したため、内部メモリ処理キュー２０２にキューイングしている内部メモリ検索ジョブ２を共通検索部２１１によってデキューする。これらの詳細動作に関しては図８の参照により後述する。ステップＳ７１５において、共通検索部２１１は内部メモリ検索ジョブ２と外部メモリ検索ジョブ１との検索処理を実行する。
【００７５】
ステップＳ７１６において、検索ジョブ２の指定された検索モードの求められる検索結果がシングルヒットであったため、内部メモリ検索ジョブ２でエントリデータと検索キーとがヒットして処理が終了する。すると、共通検索部２１１は検索ジョブ２の検索結果を検索結果通知部２０９に伝達する。これらの詳細動作に関しては図８の参照により後述する。ステップＳ７１７において、内部メモリ検索ジョブ２の終了によって検索ジョブ２が終了する。よって、検索制御部２０４は、外部メモリ処理キュー２０３にキューイングされている外部メモリ検索ジョブ２を取り消す。
【００７６】
ステップＳ７１８において、検索結果通知部２０９は検索ジョブ２の終了と検索結果とをステップＳ７０８において検索処理要求を行ったサブプロセッサＢ１１２に通知する。ステップＳ７１９において、検索ジョブ１が終了し、共通検索部２１１は検索結果通知部２０９に検索ジョブ１の検索結果を渡す。ステップＳ７２０において、検索結果通知部２０９は、検索ジョブ１の終了通知及び検索結果をステップＳ７０１において処理要求を行ったサブプロセッサＤ１１４に通知する。ステップＳ７０５以降の共通検索部２１１の動作については、図８の参照により後述する。
【００７７】
本実施形態では内部メモリ検索が先に終了して処理される例を示したが、実際には処理が終了した順に、外部メモリ処理キュー２０３又は内部メモリ処理キュー２０２から次の外部メモリ検索ジョブまたは内部メモリ検索ジョブがデキューされ処理が開始される。以上、図７に示したシーケンスにより検索装置１２２は検索ジョブの処理を行う。
【００７８】
ここで図７のステップＳ７０７に示した、共通検索部２１１の検索処理について、図８を参照して説明する。ステップＳ８０１の処理はステップＳ７０６の処理と同一の処理である。また、ステップＳ８０２の処理はステップＳ７０５の処理と同一の処理である。また、ステップＳ８３７の処理はステップＳ７１４の処理と同一の処理である。ステップＳ８０１において、検索制御部２０４は内部メモリ処理キュー２０２から内部メモリ検索ジョブ１をデキューする。ステップＳ８０２において、検索制御部２０４は外部メモリ処理キュー２０３から外部メモリ検索ジョブ１をデキューする。ステップＳ８３７において、検索制御部２０４は内部メモリ処理キュー２０２から内部メモリ検索ジョブ２をデキューする。ステップＳ８０３において、検索制御部２０４はステップＳ８０１においてデキューした内部メモリ検索ジョブ１から検索キーを取得して、比較部２１０に内部メモリ検索用の検索キーを設定する。
【００７９】
ステップＳ８０４において、検索制御部２０４は内部メモリテーブル制御部２０５に対して読出処理要求を行い、内部メモリテーブル制御部２０５による検索ジョブ１における内部メモリテーブル２０６のエントリデータの読出処理を起動する。ステップＳ８０５において、検索制御部２０４はステップＳ８０１においてデキューした外部メモリ検索ジョブ１から検索キーを取得して、比較部２１０に外部メモリ検索用の検索キーを設定する。ステップＳ８０６において、検索制御部２０４は外部メモリテーブル制御部２０７に対して読出処理要求を行い、外部メモリテーブル制御部２０７による検索ジョブ１における外部メモリテーブル２０８のエントリデータの読出処理を起動する。
【００８０】
ステップＳ８３８において、検索制御部２０４は内部メモリテーブル制御部２０５に対して読出処理要求を行い、内部メモリテーブル制御部２０５による検索ジョブ２における内部メモリテーブル２０６のエントリの読出処理を起動する。ステップＳ８３９において、検索制御部２０４はステップＳ８３７でデキューした内部メモリ検索ジョブ２から検索キーを取得して、比較部２１０に内部メモリ検索用の検索キーを設定する。
【００８１】
ステップＳ８０７とステップＳ８１１とステップＳ８１５とステップＳ８２１とステップＳ８２７とステップＳ８４３とステップＳ８４７とにおいて内部メモリテーブル制御部２０５は内部メモリテーブル２０６からエントリデータの読出処理を行う。このうちステップＳ８０７とステップＳ８１１とステップＳ８１５とステップＳ８２１とステップＳ８２７との処理は検索ジョブ１における内部メモリからの検索テーブルエントリデータの読出処理である。またステップＳ８４３とステップＳ８４７との処理は検索ジョブ２における内部メモリからの検索テーブルのエントリデータの読出処理である。
【００８２】
ステップＳ８０９とステップＳ８１３とステップＳ８１９とステップＳ８２５とステップＳ８３１とステップＳ８４５とにおいて、内部メモリテーブル制御部２０５は読み出したエントリデータを比較部２１０に受け渡す。このうちステップＳ８０９とステップＳ８１３とステップＳ８１９とステップＳ８２５とステップＳ８３１との処理は検索ジョブ１におけるエントリデータの受け渡し処理である。またステップＳ８４５の処理は検索ジョブ２におけるエントリデータの受け渡し処理である。
【００８３】
ステップＳ８１０とステップＳ８１４とステップＳ８２３とステップＳ８２６とステップＳ８３５とステップＳ８４６とにおいて、比較部２１０は比較処理を行う。このうちステップＳ８１０とステップＳ８１４とステップＳ８２３とステップＳ８２６とステップＳ８３５との処理は検索ジョブ１における比較処理である。またステップＳ８４６は検索ジョブ２における比較処理である。これらの比較処理の際、検索キーは検索制御部２０４によって設定された内部メモリ検索用の検索キーを用い、検索対象データは内部メモリテーブル制御部２０５から受け取ったデータを使用する。ステップＳ８０８とステップＳ８１７とステップＳ８２９とステップＳ８４２とにおいて、外部メモリテーブル制御部２０７は外部メモリテーブル２０８から検索テーブルのエントリデータの読出処理を行う。これらステップＳ８０８とステップＳ８１７とステップＳ８２９とステップＳ８４２との処理は検索ジョブ１における外部メモリからの検索テーブルのエントリデータの読出処理である。
【００８４】
ステップＳ８１６とステップＳ８２８とステップＳ８４０とステップＳ８５２とにおいて、外部メモリテーブル制御部２０７は読み出した検索テーブルのエントリデータを比較部２１０に受け渡す。これらステップＳ８１６とステップＳ８２８とステップＳ８４０とステップＳ８５２との処理は検索ジョブ１におけるエントリデータの受け渡し処理である。
【００８５】
ステップＳ８２０とステップＳ８３３とステップＳ８４１とステップＳ８５３とにおいて、比較部２１０は比較処理を行う。このうちステップＳ８２０とステップＳ８３３とステップＳ８４１とステップＳ８５３との処理は検索ジョブ１における比較処理である。これらの比較処理の際、検索キーは検索制御部２０４によって設定された外部メモリ検索用の検索キーを用い、検索対象データは外部メモリテーブル制御部２０７から受け取ったエントリデータを使用する。ステップＳ８３２において、内部メモリテーブル制御部２０５は、検索ジョブ１における内部メモリテーブル２０６のエントリデータの読み出しがすべて終了したことを検索制御部２０４に通知する。ステップＳ８５４において、外部メモリテーブル制御部２０７は、検索ジョブ１における外部メモリテーブル２０８からのエントリデータの読み出しがすべて完了したことを検索制御部２０４に通知する。ステップＳ８１２とステップＳ８１８とステップＳ８２４とステップＳ８３０とステップＳ８３６とステップＳ８４８とにおいて、比較部２１０は内部メモリ検索用の検索キーとエントリデータとの比較結果とを検索制御部２０４に通知する。このうちステップＳ８１２とステップＳ８１８とステップＳ８２４とステップＳ８３０とステップＳ８３６との処理は検索ジョブ１における通知処理である。また、ステップＳ８４８の処理は検索ジョブ２における通知処理である。比較結果の通知を受けた検索制御部２０４は、図１６に示した検索処理終了時の処理フローにより終了判定を行う。ステップＳ８３６の処理後の終了判定において、検索制御部２０４は内部メモリテーブル２０６のエントリデータの読み出しがすべて終了した通知を内部メモリテーブル制御部２０５から受け取っているため、内部メモリ検索ジョブ１を終了する。またステップＳ８４８の処理後の検索制御部２０４による終了判定において、検索ジョブ２は、１つのエントリデータが見つかり、且つシングルヒットモードであるため検索ジョブ２の終了処理を開始する。
【００８６】
ステップＳ８２２とステップＳ８３４とステップＳ８４４とステップＳ８５５とにおいて、比較部２１０は外部メモリ検索用の検索キーとエントリデータとの比較結果を検索制御部２０４に通知する。これらステップＳ８２２とステップＳ８３４とステップＳ８４４とステップＳ８５５との処理は検索ジョブ１における比較処理である。比較結果の通知を受けた検索制御部２０４は、図１６に示した検索処理終了時の処理フローにより終了判定を行う。なお、ステップＳ８５５の処理後の終了判定において、検索制御部２０４は外部メモリテーブル２０８のエントリの読出しがすべて終了した通知を外部メモリテーブル制御部２０７から受け取っているため、外部メモリ検索ジョブ１を終了する。さらに、これにより内部メモリ検索ジョブ１と外部メモリ検索ジョブ１とが終了するので、検索ジョブ１の終了処理を開始する。
【００８７】
ステップＳ８４９において、検索ジョブ２を終了するために、検索制御部２０４は内部メモリテーブル制御部２０５に対して読出し終了通知を行う。ステップＳ８５０において、検索ジョブ２を終了するために、検索制御部２０４は外部メモリ処理キュー２０３にキューイングされている外部メモリ検索ジョブ２の取消処理を行う。ステップＳ８５１において、検索ジョブ２が終了したため、検索制御部２０４は検索ジョブ２の検索処理結果を検索結果通知部２０９へ渡す。ステップＳ８５６において、検索ジョブ１が終了したため、検索制御部２０４は検索ジョブ１の検索処理結果を検索結果通知部２０９へ渡す。
【００８８】
図８において、期間８６０では検索ジョブ１の処理が行われている。また期間８６１では、検索ジョブ２の処理が行われている。以上、ＴＯＥサブシステム１０５のパケット受信処理が実行する検索を例に挙げ、検索装置１２２の処理を説明した。
【００８９】
本実施形態によれば、検索ジョブを内部メモリ検索ジョブと外部メモリ検索ジョブとに分割して、それぞれのジョブを並行に処理することにより、外部メモリ読出処理を行っている間に内部メモリ検索処理を行うことができる。これにより内部メモリと外部メモリとで論理的に一つの検索テーブルを構成した場合の検索処理の性能低下を低減することができる。さらに、投入された検索要求のジョブが一方のメモリを検索中であっても、もう一方のメモリの検索が終了していれば、次の検索要求の検索ジョブを開始することができる。また、検索モードを指定することにより、シングルヒットモードの場合に、一方の検索がヒットするともう一方のジョブを直ちに終了することにより分割したジョブが不要な処理をしなくて済む。また、外部メモリ処理キュー又は内部メモリ処理キューから外部メモリ検索ジョブ又は内部メモリ検索ジョブを取り消すことにより、分割したジョブが不要な処理をしなくて済む。このため、複数のサブプロセッサによって検索装置を共有する場合に、検索処理に時間のかかる１つの検索ジョブが他のジョブに与える遅延時間を部分的に削減でき、連続する検索要求を効率的に処理することが可能となる。また、内部メモリエントリ削除時に任意の外部メモリエントリを削除された内部メモリエントリに格納することにより高速な内部メモリを低速な外部メモリより優先して使用し、検索処理性能を最大限に発揮することが可能となる。また、シングルヒットモードの場合に外部メモリテーブルで検索ヒットしたエントリの格納場所を任意の内部メモリエントリの格納場所と入れ替えることにより、連続するパケットの検索要求を効率的に処理することが可能となる。
【００９０】
（第２実施形態）
図１、図４、図５、図６、図１４、図１６、図１７、図１８は第１実施形態と共通の図である。
【００９１】
第２実施形態に係るＴＯＥサブシステム１０５が備える検索装置１２２の構成の例を説明する。図３の検索装置１２２はＴＯＥサブシステム１０５のサブシステムバス１２３に接続されている。検索装置１２２は、プロトコル処理における検索処理を各サブプロセッサから要求されることによって実行し、検索結果を各サブプロセッサに返す。その際、各サブプロセッサは検索キーの設定と、検索モード等のパラメータを設定と、検索処理要求とを行う。検索モードは求められる検索結果が検索対象データとなるエントリデータが１つ見つかればよいシングルヒットモードと、すべてのエントリデータと検索キーとの比較を行う必要のある全検索モードとがある。また、検索装置１２２は、検索テーブルへの登録処理と、削除処理とを各サブプロセッサからの要求により行う。検索装置１２２は検索処理と、検索装置１２２の内部メモリ及び検索装置１２２が参照する外部メモリへの登録処理と削除処理とを受け付け、内部メモリ処理ジョブと外部メモリ処理ジョブとを発行する検索処理受付部３０１を備える。図１に示すシステムでは、外部メモリとは主メモリ１０４に相当する。また図３において検索装置１２２は内部メモリ処理ジョブをキューイングする第１のキューイング手段としての内部検索キュー３０２と外部メモリ処理ジョブをキューイングする第２のキューイング手段としての外部検索キュー３０３とを備える。また検索装置１２２は検索処理受付部３０１によって受け付けた内部メモリ処理ジョブと、外部メモリ処理ジョブとを解析し、検索処理と、登録処理と、削除処理とを制御する検索制御部３０４を備える。さらに検索対象となるエントリデータを格納する内部メモリテーブル３０６と、内部メモリテーブル３０６に対する処理を行う内部メモリ検索制御部３０５とを備える。内部メモリテーブル３０６はＴＯＥサブシステム１０５が備える共有メモリ１２５を用いてもよい。また、検索装置１２２は検索対象となるエントリデータを格納する外部メモリテーブル３０８に対する処理を行う外部メモリ検索制御部３０７を備える。内部メモリ検索制御部３０５と外部メモリ検索制御部３０７とは検索制御部３０４が各検索キューからデキューしたジョブに従い処理を行い、その結果を検索制御部３０４に通知する。内部メモリ検索制御部３０５が検索処理を行う場合は、内部メモリテーブル３０６からのエントリデータの読み出しと、検索キーとの比較と、一連の検索処理とを行う。本実施形態ではこのような一連の動作を内部メモリ検索制御部３０５と外部メモリ検索制御部３０７とで行うが、内部メモリ検索処理と外部メモリ検索処理とが並列に処理可能であれば、共通の処理を行う機構で一連の動作を行ってもよい。
【００９２】
内部メモリ検索制御部３０５と外部メモリ検索制御部３０７との検索処理のタイミングについて説明する。図１２と図１３とは左から右方向へ時間が進む。検索ジョブ１と検索ジョブ２との両方とも検索モードが全検索モードで処理要求が行われた場合について、図１２を参照して説明する。タイミング１２０１において、検索処理要求が行われると検索ジョブ１が投入される。検索ジョブ１投入後直ちに検索ジョブ１が開始され、検索ジョブ１が分割された内部メモリ検索ジョブ１と外部メモリ検索ジョブ１とのそれぞれの検索処理を開始する。内部メモリ検索ジョブ１は内部メモリ検索制御部３０５が実行し、外部メモリ検索ジョブ１は外部メモリ検索制御部３０７が実行する。内部メモリ検索制御部３０５と外部メモリ検索制御部３０７とは並列に処理を実行する。
【００９３】
タイミング１２０２において、次の検索処理要求が行われると検索ジョブ２が投入される。このとき内部メモリ検索制御部３０５と、外部メモリ検索制御部３０７とは、それぞれ内部メモリ検索ジョブ１と外部メモリ検索ジョブ１との処理を行っている。そのため、検索ジョブ２が分割された内部メモリ検索ジョブ２と外部メモリ検索ジョブ２とは、それぞれ内部検索キュー３０２と外部検索キュー３０３との各処理キューにエンキューされる。内部メモリ検索ジョブ２は、内部メモリ検索制御部３０５が内部メモリ検索ジョブ１の処理を終えて、検索制御部３０４により次のジョブとしてデキューされるまでの期間１２０９、内部検索キュー３０２にキューイングする。外部メモリ検索ジョブ２も同様に、外部メモリ検索制御部３０７が外部メモリ検索ジョブ１の処理を終えて、検索制御部３０４により次のジョブとしてデキューされるまでの期間１２１０、外部検索キュー３０３にキューイングする。
【００９４】
タイミング１２０３において内部メモリ検索制御部３０５により全エントリデータの検索が完了し、内部メモリ検索ジョブ１が終了すると、直ちにタイミング１２０４において内部メモリ検索ジョブ２が検索制御部３０４によってデキューされて処理を開始する。タイミング１２０５において、内部メモリ検索制御部３０５により全エントリデータの検索が完了し、内部メモリ検索ジョブ２が終了する。この時点では次の内部メモリ検索ジョブがキューイングされていないため、内部メモリ検索制御部３０５は次の内部メモリ検索ジョブが投入されて起動されるまで待機する。タイミング１２０６において、外部メモリ検索制御部３０７により全エントリデータの検索が完了し、外部メモリ検索ジョブ１が完了すると検索ジョブ１が完了し、検索結果通知部３０９は検索結果を検索処理要求を行ったサブプロセッサに通知する。また、タイミング１２０７において、外部メモリ検索ジョブ２が検索制御部３０４によってデキューされて処理が開始される。タイミング１２０８において、外部メモリ検索制御部３０７により全エントリデータの検索が完了し、外部メモリ検索ジョブ２が完了すると検索ジョブ２が完了し、検索結果通知部３０９は検索結果を検索処理要求を行ったサブプロセッサに通知する。
【００９５】
タイミング１２０１とタイミング１２０６との間は検索ジョブ１が実行されている時間であり、タイミング１２０４とタイミング１２０８との間は検索ジョブ２が実行されている時間である。区間１２２１は検索ジョブ１における内部メモリ検索制御部３０５が内部メモリ検索ジョブ１の処理を行っている時間である。区間１２２２は検索ジョブ１における外部メモリ検索制御部３０７が外部メモリ検索ジョブ１の処理を行っている時間である。区間１２２３は検索ジョブ２における内部メモリ検索制御部３０５が内部メモリ検索ジョブ２の処理を行っている時間である。区間１２２４は検索ジョブ２における外部メモリ検索制御部３０７が外部メモリ検索ジョブ２の処理を行っている時間である。このように内部メモリ検索ジョブの処理と外部メモリ検索ジョブの処理とを並列に行う。
【００９６】
検索ジョブ１と検索ジョブ２とが両方とも検索モードがシングルヒットモードで処理要求が行われた場合について、図１３を参照して説明する。
【００９７】
タイミング１３０１において、検索処理要求が行われると検索ジョブ１が投入される。検索ジョブ１の投入後直ちに検索ジョブ１が開始され、分割された内部メモリ検索ジョブ１と外部メモリ検索ジョブ１とのそれぞれの検索処理を開始する。内部メモリ検索ジョブ１は内部メモリ検索制御部３０５が実行し、外部メモリ検索ジョブ１は外部メモリ検索制御部３０７が実行する。内部メモリ検索制御部３０５と外部メモリ検索制御部３０７とは並列に処理を実行する。タイミング１３０２において、次の検索処理要求が行われると検索ジョブ２が投入される。このとき内部メモリ検索制御部３０５と、外部メモリ検索制御部３０７とはそれぞれ検索ジョブ１が分割された内部メモリ検索ジョブ１と外部メモリ検索ジョブ１との各処理を行っている。そのため、検索ジョブ２が分割された内部メモリ検索ジョブ２と外部メモリ検索ジョブ２とは、それぞれ内部検索キュー３０２と外部検索キュー３０３との各処理キューにエンキューされる。内部メモリ検索ジョブ２は、内部メモリ検索制御部３０５が内部メモリ検索ジョブ１の処理を終えて、次の内部メモリ検索ジョブとしてデキューされるまでの期間１３０７、内部検索キュー３０２にキューイングする。外部メモリ検索ジョブ２も同様に外部メモリ検索制御部３０７が外部メモリ検索ジョブ１の処理を終えて、次の外部メモリ検索ジョブとしてデキューされるまでの期間１３０８、外部検索キュー３０３にキューイングする。
【００９８】
タイミング１３０３において、内部メモリ検索制御部３０５が全エントリデータの検索を行った結果、どのエントリデータも検索キーにヒットせずに完了すると、内部メモリ検索ジョブ１が終了する。すると直ちにタイミング１３０４において、内部メモリ検索ジョブ２が検索制御部３０４によってデキューされ検索を開始する。シングルヒットモードの検索ジョブ１は、内部メモリ検索でヒットせずに終了したため、外部メモリ検索の結果が通知されるまで待機する。
【００９９】
タイミング１３０５において、内部メモリ検索ジョブ２がヒットして完了すると検索ジョブ２が完了し、検索結果通知部３０９は検索結果を検索処理要求を行ったサブプロセッサに通知する。この時外部メモリ検索ジョブ２はキューイングされ、処理待ちの状態なのでこのジョブを外部検索キュー３０３から取り消す。この時点では次の内部メモリ処理ジョブがキューイングされていないため、内部メモリ検索制御部３０５は次の内部メモリ処理ジョブが投入されるまで待機する。
【０１００】
タイミング１３０６において、外部メモリ検索ジョブ１がヒットして完了すると検索ジョブ１が完了し、検索結果通知部３０９は検索結果を検索処理要求を行ったサブプロセッサに通知する。この時点では次の外部メモリ処理ジョブがキューイングされていないため、外部メモリ検索制御部３０７は次の外部メモリ処理ジョブが投入されるまで待機する。タイミング１３０１とタイミング１３０６との間は検索ジョブ１が実行されている時間であり、タイミング１３０３とタイミング１３０５との間は検索ジョブ２が実行されている時間である。
【０１０１】
区間１３２１は検索ジョブ１における内部メモリ検索制御部３０５が内部メモリ検索ジョブ１の処理を行っている時間である。区間１３２２は検索ジョブ１における外部メモリ検索制御部３０７が外部メモリ検索ジョブ１の処理を行っている時間である。区間１３２３は検索ジョブ２における内部メモリ検索制御部３０５が内部メモリ検索ジョブ２の処理を行っている時間である。
【０１０２】
このように内部メモリ検索処理と外部メモリ検索処理とを並列に行うため、またシングルヒットモードにより1つのエントリデータが検索キーと一致した時点でジョブを終了するため、検索処理をより早く終えることが期待できる。
【０１０３】
図６に示したＴＯＥサブシステム１０５内部の複数のサブプロセッサによるパケット受信処理で実行する検索処理のシーケンスのうち、ステップＳ６１０における検索処理について説明する。 図９におけるステップＳ９０１の処理と図６におけるステップＳ６０９の処理とは同一の処理である。同様に、ステップＳ９１１の処理とステップＳ６１２の処理とは同一の処理である。
【０１０４】
ステップＳ９０１において、サブプロセッサＤ１１４により、検索キーの設定と、検索モード（条件）等のパラメータの設定と、検索処理要求とが行われると、検索処理受付部３０１は処理を受け付けて、検索ジョブ１を解析する。ステップＳ９０２において、検索処理受付部３０１は検索ジョブ１を内部メモリ検索ジョブ１と外部メモリ検索ジョブ１とに分割する。
【０１０５】
ステップＳ９０３において、検索処理受付部３０１は外部メモリ検索ジョブ１を外部検索キュー３０３にエンキューする。ステップＳ９０４において、検索処理受付部３０１は内部メモリ検索ジョブ１を内部検索キュー３０２にエンキューする。ステップＳ９０５において、外部検索キュー３０３にキューイングしている外部メモリ検索ジョブ１を検索制御部３０４によってデキューする。ステップＳ９０６において、内部検索キュー３０２にキューイングしている内部メモリ検索ジョブ１を検索制御部３０４によってデキューする。ステップＳ９０７において、検索制御部３０４は内部メモリ検索ジョブ１を実行するため内部メモリ検索制御部３０５に内部メモリ検索ジョブ１から取得した検索キーの設定と検索モードの設定と検索処理要求とを行う。
【０１０６】
ステップＳ９０８において、検索制御部３０４は外部メモリ検索ジョブ１を実行するため外部メモリ検索制御部３０７に外部メモリ検索ジョブ１から取得した検索キーの設定と検索モードの設定と検索処理要求とを行う。ステップＳ９０９において、内部メモリ検索制御部３０５は内部メモリテーブル３０６に格納された検索対象データとなるエントリデータを読み出して、読み出したエントリデータと検索キーとの比較処理を順次行う。検索モードに全検索モードが設定されているため、全エントリデータの検索処理を行った時点で検索終了となる。ステップＳ９１０において、外部メモリ検索制御部３０７は外部メモリテーブル３０８に格納された検索対象データとなるエントリデータを読み出して、読み出したエントリデータと検索キーとの比較処理を順次行う。検索モードに全検索モードが設定されているため、全エントリデータの検索処理を行った時点で検索終了となる。
【０１０７】
ステップＳ９１１において、サブプロセッサＢ１１２により検索キーの設定と検索モード（条件）等のパラメータの設定と検索処理要求とが行われると、検索処理受付部３０１は検索処理を受け付け、検索ジョブ２を解析する。ステップＳ９１２において、検索処理受付部３０１は検索ジョブ２を内部メモリ検索ジョブ２と外部メモリ検索ジョブ２とに分割する。ステップＳ９１３において、検索処理受付部３０１は外部メモリ検索ジョブ２を外部検索キュー３０３にエンキューする。
【０１０８】
ステップＳ９１４において、検索処理受付部３０１は内部メモリ検索ジョブ２を内部検索キュー３０２にエンキューする。ステップＳ９１５において、内部検索キュー３０２は内部メモリ検索ジョブ２をキューイングする。ステップＳ９１６において、外部検索キュー３０３は外部メモリ検索ジョブ２をキューイングする。ステップＳ９１７において、内部メモリ検索制御部３０５は内部メモリ検索ジョブ１が終了したため、内部メモリ検索処理結果を検索制御部３０４に通知する。ステップＳ９１８において、内部メモリ検索制御部３０５の内部メモリ検索ジョブ１が終了したため、内部検索キュー３０２にキューイングしている内部メモリ検索ジョブ２を検索制御部３０４によってデキューする。
【０１０９】
ステップＳ９１９において、検索制御部３０４は内部検索ジョブ２を実行するため内部メモリ検索制御部３０５に対して内部メモリ検索ジョブ２から取得した検索キーと、検索モードの設定と、検索処理要求とを行う。
【０１１０】
ステップＳ９２０において、内部メモリ検索制御部３０５は内部メモリテーブル３０６に格納された検索対象データとなるエントリデータを読み出して、読み出したエントリデータと検索キーとの比較処理を順次行う。検索モードにシングルヒットモードが設定されているため、検索キーと一致するエントリデータが一つ見つかった時点で比較処理を終了する。
【０１１１】
ステップＳ９２１において、内部メモリ検索制御部３０５は内部メモリ処理ジョブ２の検索処理結果を検索制御部３０４に通知する。通知の内容は、検索がヒットして終了したことと、該当エントリデータのアドレスとである。この通知を受け取った検索制御部３０４は、検索モードがシングルヒットモードである内部メモリ検索ジョブ２がヒットして終了したため、検索ジョブ２の終了処理を開始する。
【０１１２】
ステップＳ９２２において、検索制御部３０４は検索ジョブ２の検索結果を検索結果通知部３０９に通知する。ステップＳ９２３において、検索制御部３０４は、内部メモリ検索ジョブ２の終了によって検索ジョブ２が終了したため、外部検索キュー３０３にキューイングしている外部メモリ検索ジョブ２を取り消す。
【０１１３】
ステップＳ９２４において、検索結果通知部３０９は、検索ジョブ２の終了通知と検索結果とをステップＳ９１１において処理要求を行ったサブプロセッサＢ１１２に通知する。ステップＳ９２５において、外部メモリ検索制御部３０７は、外部メモリ検索ジョブ１が終了したため、外部メモリ検索ジョブ１の検索処理結果を検索制御部３０４に通知する。この通知を受け取った検索制御部３０４は、検索ジョブ１が分割された内部メモリ検索ジョブ１と外部メモリ検索ジョブ１とが終了したため、検索ジョブ１の終了処理を開始する。
【０１１４】
ステップＳ９２６において、検索制御部３０４は検索ジョブ１の検索結果を検索結果通知部３０９に通知する。ステップＳ９２７において、検索結果通知部３０９は検索ジョブ１の終了通知と検索結果とを、ステップＳ９０１において処理要求を行ったサブプロセッサＤ１１４に通知する。本実施形態では内部メモリ検索ジョブが先に終了し処理される例を示したが、実際には処理が終了した順に各処理キューから次のジョブがデキューされて各処理が開始される。以上、図９に示したシーケンスにより検索装置１２２は検索ジョブの処理を行う。
【０１１５】
本実施形態によれば、検索ジョブを、内部メモリ検索ジョブと外部メモリ検索ジョブとに分割して、それぞれのジョブを並列に処理することにより、外部メモリ検索を行っている間に内部メモリ検索を行うことが可能となる。これにより内部メモリと外部メモリとで論理的に一つの検索テーブルを構成した場合の検索処理の性能低下を低減することが可能となる。さらに、投入された検索ジョブが一方のメモリを検索中であっても、もう一方のメモリの検索が終了していれば、次の検索ジョブを開始することが可能となる。また、検索モードを指定することで、シングルヒットモードの場合に、分割した一方の検索ジョブがヒットするともう一方のジョブを直ちに終了することにより又はキューからもう一方のジョブを取り消すことにより、分割したジョブが不要な処理をしなくて済む。このため、複数のプロセッサによって検索装置を共有する場合に、処理に時間のかかる１つの検索ジョブが他のジョブの処理に与える遅延時間を部分的に削減でき、連続する検索要求を効率的に処理することが可能となる。
【０１１６】
（その他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005451498.tif 000002
【図２】
0005451498.tif 000003
【図３】
0005451498.tif 000004
【図４】
0005451498.tif 000005
【図５】
0005451498.tif 000006
【図６】
0005451498.tif 000007
【図７】
0005451498.tif 000008
【図８】
0005451498.tif 000009
【図９】
0005451498.tif 000010
【図１０】
0005451498.tif 000011
【図１１】
0005451498.tif 000012
【図１２】
0005451498.tif 000013
【図１３】
0005451498.tif 000014
【図１４】
0005451498.tif 000015
【図１５】
0005451498.tif 000016
【図１６】
0005451498.tif 000017
【図１７】
0005451498.tif 000018
【図１８】
0005451498.tif 000019
【図１９】
0005451498.tif 000020