(第1実施形態)
第1実施形態に係るTOEサブシステム105を含む通信装置の構成の例について説明する。
図1及び図4のシステムバス102は英国ARM社が提唱するAMBA3.0AXI(Advanced eXtensible Ingerface)仕様に代表されるクロスバースイッチ構造のオンチップバスである。システムバス102は通信装置に求められる送受信データの並行転送動作が可能である。第1実施形態に係るTOEサブシステム105は通信装置のシステムバス102に接続されている。
通信装置はTOEサブシステム105が備えるPHY(Physical LayerChip)134を介してイーサネット(登録商標)135に接続されている(図1参照)。HD(Hard Disk)装置406は二次記憶制御部405を介してシステムバス102に接続されている(図4参照)。HD装置406には通信装置の機能を実現するソフトウェアとその関連データと、各サブシステム内のサブプロセッサで動作するファームウエアとその関連データとが格納されている。更に、HD装置406は通信装置の動作履歴や通信履歴等の履歴情報を格納する。ソフトウェアは、通信装置の各機能を実現するアプリケーションソフトウエアと、アプリケーションプロトコルと、関連ハードウエアを制御するためのデバイスドライバと、OS(Operating System)と備えている。
Flashメモリ413はメモリ制御部412を介してシステムバス102に接続されている。Flashメモリ413は書き換え可能な不揮発性メモリである。Flashメモリ413には通信装置の起動時に動作するブートプログラムと通信装置の初期状態設定に必要なパラメータとが格納される。更に、Flashメモリ413は通信装置の起動時に各ハードウエアを制御するためのデバイスドライバプログラムと各ハードウエア起動時の設定パラメータ等とを保存する。
コンピュータである通信装置の主プロセッサ101はFlashメモリ413内のブートプログラムを実行する。更に、主プロセッサ101は通信装置の各ハードウエアとサブシステムとを初期化した後、HD装置406に格納されているソフトウェアを主メモリ104にロードして、ソフトウェアが備えるOSを起動する。また、主プロセッサ101は、サブシステムの初期化時にTOEサブシステム105に内蔵されているサブプロセッサAからEの5個のサブプロセッサ(111〜115)が実行する各ファームウエアを主メモリ104上に展開して、各サブプロセッサを起動する。各サブプロセッサ(111〜115)は主メモリ104上に展開された各ファームウエアを、各サブプロセッサに内蔵する命令キャッシュメモリにロードして、ファームウエアプログラムを実行する。
通信装置のシステムバス102には、各ハードウエアやTOEサブシステム105からの割り込みイベントを主プロセッサ101に伝達する、割り込み制御部401が接続されている。また、通信装置は、ソフトウェア等により起動され、時間計測やタイムアウトイベントを発生させるタイマ402を備える。また、通信装置は、通信装置の動作モードの設定やIP(Internet Protocol)アドレスに代表される各通信パラメータを入力するための入力キー410を備える。更に、通信装置は、アプリケーション通信装置の状態や設定内容等を表示する表示装置404と、IEEE802.11a/b/g/n規格に準拠した無線LANに接続するための無線LANサブシステム408とを備える。
TOEサブシステム105は、内部にサブシステムバス123を備え、バスブリッジ116を介してシステムバス102に接続されている(図1参照)。このサブシステムバス123はクロスバースイッチ接続である。TOEサブシステム105が内蔵する5個の各サブプロセッサ(111〜115)は、サブシステムバス123に接続されている。これらの各サブプロセッサによるマルチプロセッサ処理により、主システムからTCP/IPプロトコル処理をオフロードし、高速に実行する。
また、TOEサブシステム105は、5個の各サブプロセッサA〜E(111〜115)間の通信部と、情報共有の為の共有メモリ125と、TCP/IPプロトコル処理に必要な時間計測及びタイムアウトイベントを発生させる通信タイマ124とを備える。さらに、TOEサブシステム105は、イーサネット(登録商標)135に接続するためのPHY134とMAC(Media Access Control)133とを備える。PHY134はOSI参照モデルの第1層に位置するPHY(物理)層507のプロトコル処理と電気信号を扱うハードウエアである。MAC133はOSI参照モデルのデータリンク層(第2層)の下位副層に相当するMAC層506のプロトコルを処理するハードウエアである。
TOEサブシステム105は、受信パケットデータと送信パケットデータとを、例えば主メモリ104あるいは共有メモリ125であるメモリデバイスと、MAC133との間でDMA転送機能を有するデータバス制御部132を備える。データバス制御部132は転送処理中に、パケットデータのチェックサム演算を行う。さらに、TOEサブシステム105は、プロトコル処理の様々な管理情報の格納と検索処理とを行う連想メモリを保有する検索装置122を備える。
TOEサブシステム105は、暗号通信プロトコル処理を実行する。暗号通信プロトコルとしては、IPsec(Security Architecture for Internet Protocol)などがある。また、SSL(Secure Socket Layer)、TLS(Transport Layer Security)等の暗号通信プロトコル処理も実行する。そのために、TOEサブシステム105は鍵管理部126と、乱数発生器127と、暗号器129とを備える。鍵管理部126は暗号通信プロトコル処理のために生成した暗号鍵と、乱数及び素数を機密に保持する。乱数発生器127は、暗号処理に必要となる乱数値を生成する。また、TOEサブシステム105が備える暗号器129は、米国商務省標準技術局(NIST)によって選定されたAES(Advanced Encryption Standard)暗号器を備える。また、認証やデジタル署名などに使われるSHA−1(Secure Hash Algorithm 1)ハッシュ関数器を備える。また、RFC1321としてIETFで標準化されているMD5(Message Digest 5)ハッシュ関数器等を備える。
図5を参照し、TOEサブシステム105の各サブプロセッサA〜E(111〜115)の役割を説明する。図5の501〜507はTCP/IPプロトコル処理を階層構造で示している。それぞれ、アプリケーション層501と、ソケットAPI502と、トランスポート層(TCP/UDP層)503と、インターネット層(IP層)504と、MACドライバ505と、MAC層506と、PHY層507とを示している。TOEサブシステム105の処理機能は、層510の範囲をカバーする。すなわち、IPプロトコルを処理するIP層504の処理機能と、TCPプロトコルとUDPプロトコルとを処理するTCP/UDP層503の処理機能とを備える。さらに、MAC層506との間で通信データと通信情報を交換するMACドライバ505の機能を備える。また、アプリケーション通信のAPIである、ソケットAPI502の一部の機能を備える。
これらの機能は各サブプロセッサに分割して処理する。例えば、ソケットAPI502部分の処理をサブプロセッサA111に割り当て、TCPプロトコルとUDPプロトコルとの処理の内、受信動作に関わる処理をサブプロセッサB112に割り当て、送信動作に関わる処理をサブプロセッサC113に割り当てる。MACドライバ505とIPプロトコルとの処理の内、受信動作に関わる処理をサブプロセッサD114に割り当て、送信動作に関わる処理をサブプロセッサE115に割り当てる。このような分割の意図は、一連のプロトコル処理を3つのパイプラインステージ(511〜513)に分割し、パイプライン動作をさせることにある。また、送信動作と受信動作を分割することで、それぞれの機能を担当するサブプロセッサ同士が並列的に動作することができる。
本実施形態では、各サブプロセッサ間の処理データの伝達と制御情報の共有は共有メモリ125を介して行われる。例えば、TCPプロトコルは転送データの到達保証を行う観点から、データ受信側から送信側に対して確認応答と称する到達確認情報をコネクション間で伝達する。この確認応答処理を行うには、サブプロセッサB112とサブプロセッサC113との間で確認応答の伝達514が必要となる(図5参照)。このようなTCP通信の制御情報の伝達は共有メモリ125を介して行われる。各サブプロセッサ間における到達確認情報の伝達と制御情報の共有とは、主メモリ104を用いて行ってもよい。
TOEサブシステム105が備える検索装置122の構成例を説明する。図2のように、読出処理と比較処理とによりデータの検索処理を実行する検索装置122はTOEサブシステム105のサブシステムバス123に接続されている。検索装置122はプロトコル処理における検索処理を各サブプロセッサから要求されることにより実行され、検索結果を各サブプロセッサに返す。その際、サブプロセッサは検索キーと、検索モード等とのパラメータを設定し、検索処理要求を行う。検索モードには、検索テーブルに登録されているエントリデータが1つでも検索キーと一致すれば検索処理を終了するシングルヒットモードがある。また、検索テーブルに登録されている全てのエントリデータと検索キーとが一致するか否かを比較した後に検索処理を終了する全検索モードがある。全検索モードでは、複数のエントリデータが見つかる可能性がある。
また、検索装置122は検索テーブルへのエントリデータの登録処理と、削除処理とをサブプロセッサからの要求により行う。検索装置122は、検索処理と、検索装置内のメモリ及び検索装置が参照する外部メモリへのエントリデータの登録処理と、削除処理とを受け付ける検索処理受付部201を備える。
また、検索処理受付部201は検索ジョブを内部メモリ処理ジョブ(第1分割ジョブ)と外部メモリ処理ジョブ(第2分割ジョブ)とに分割する。図1に示すシステムでは、外部メモリとは主メモリ104に相当する。また、検索装置122は、内部メモリ処理ジョブをキューイングする、第1のキューイング手段としての内部メモリ処理キュー202を備える。また、外部メモリ処理ジョブをキューイングする、第2のキューイング手段としての外部メモリ処理キュー203を備える(図2参照)。また、検索装置122は、これら二つのキューにキューイングされた各ジョブから処理を実行する共通検索部211を備える。また、検索装置122は、共通検索部211が処理した結果を、検索処理要求を行ったサブプロセッサに通知する検索結果通知部209を備える。
共通検索部211は内部メモリ処理ジョブと外部メモリ処理ジョブとを解析し、検索処理と、登録処理と、削除処理とを制御する検索制御部204を備える。また、共通検索部211は検索対象となるエントリを格納する、第1の記憶手段としての内部メモリテーブル206と、内部メモリテーブル206を制御する内部メモリテーブル制御部205とを備える。内部メモリとしては、SRAM250等が用いられる。また、共通検索部211は検索対象となるエントリを格納する、第2の記憶手段としての外部メモリテーブル208と、外部メモリテーブル208を制御する外部メモリテーブル制御部207とを備える。また、共通検索部211は、内部メモリテーブル制御部205と外部メモリテーブル制御部207とが読出したエントリデータと検索キーとの比較処理を行う比較部210を備える。なお、内部メモリテーブル206はTOEサブシステム105が備える共有メモリ125を用いて制御してもよい。
共通検索部211の検索処理のタイミングについて説明する。検索ジョブ1と検索ジョブ2とが両方ともに検索モードが全検索モードで処理要求が行われた場合について、図10を参照して説明する。
タイミング1001において、検索処理要求が行われると検索ジョブ1が投入される。検索ジョブ1の投入後直ちに検索ジョブ1が開始され、分割された内部メモリ検索ジョブ1と外部メモリ検索ジョブ1とのそれぞれの検索処理が開始される。検索処理は、エントリデータの読出処理と、読み出したエントリデータと予め設定された検索キーとの比較処理とにより処理を実行する。内部メモリ検索ジョブ1と、外部メモリ検索ジョブ1との比較処理は外部メモリの読出しの(バースト)単位で共通検索部211により読出処理と比較処理とを切り替えて行われる。内部メモリ検索処理が行われている間には外部メモリの読出処理が行われ、外部メモリの読出処理が一定単位終了すると、外部メモリから読出したエントリデータと検索キーとの比較を行う。この読出しの単位は検索対象データとなるエントリサイズと同サイズであることが望ましい。エントリサイズと読出し単位のサイズとが異なる場合には、比較部210における比較処理に際して予め設定された検索キーと読出したエントリデータとを、部分的に比較する必要がある。
タイミング1002において、次の検索処理要求が行われると検索ジョブ2が投入される。このとき内部メモリテーブル制御部205と、外部メモリテーブル制御部207とはそれぞれ検索処理を行っている。そのため、検索ジョブ2が分割された内部メモリ検索ジョブ2と外部メモリ検索ジョブ2とはそれぞれ内部メモリ処理キュー202と外部メモリ処理キュー203との各処理キューにエンキューされる。外部メモリ検索ジョブ2は、内部メモリテーブル制御部205が内部メモリ検索ジョブ1の検索処理を終えて、次の内部メモリ検索ジョブとしてデキューされるまでの期間1009、内部メモリ処理キュー202にキューイングされる。また、外部メモリ検索ジョブ2も同様に、外部メモリテーブル制御部207が外部メモリ検索ジョブ1の処理を終えて、次の外部メモリ検索ジョブとしてデキューされるまでの期間1010、外部メモリ処理キュー203にキューイングされる。
タイミング1003において、検索キーと検索ジョブ1の内部メモリテーブル206の全エントリデータとの比較が完了し内部メモリ検索ジョブ1が終了すると、直ちにタイミング1004において内部メモリ検索ジョブ2がデキューされ検索処理が開始される。タイミング1005において、検索キーと、検索ジョブ1の外部メモリテーブル208の全エントリデータとの比較が完了し、外部メモリ検索ジョブ1が完了すると検索ジョブ1が完了する。検索結果通知部209は、検索処理要求を行ったサブプロセッサに検索結果を通知する。タイミング1004とタイミング1005との間は、検索ジョブ1に係る外部メモリ検索ジョブ1と検索ジョブ2に係る内部メモリ検索ジョブ2とを一定の時間毎に切り替えて処理が実行される。
タイミング1006において、タイミング1005で検索キーと、検索ジョブ1の外部メモリテーブル208の全エントリデータとの比較が完了して外部メモリ検索ジョブ1が終了すると、直ちに外部メモリ検索ジョブ2がデキューされて検索処理が開始される。タイミング1007において、検索キーと、検索ジョブ2の内部メモリテーブル206の全エントリデータとの比較処理が完了して内部メモリ検索ジョブ2が終了する。この時点では次の内部メモリ検索ジョブがキューイングされていないため、内部メモリテーブル制御部205は次の内部メモリ検索ジョブが投入されるまで待機する。
タイミング1008において、検索キーと、検索ジョブ2の外部メモリテーブル208の全エントリデータとの比較が完了し、外部メモリ検索ジョブ2が完了する。検索ジョブ2が完了し、検索結果通知部209は検索結果を検索処理要求を行ったサブプロセッサに通知する。タイミング1007とタイミング1008との間は、内部メモリ検索処理が行われていないため、外部メモリ検索処理のみが行われる。
タイミング1001とタイミング1005との間は、検索ジョブ1が実行されている時間となり、タイミング1004とタイミング1008との間は、検索ジョブ2が実行されている時間となる。
区間1021、区間1023、区間1025、区間1027は、検索ジョブ1における内部メモリ検索処理と外部メモリ読出処理とを行っている時間である。区間1022、区間1024、区間1026は、検索ジョブ1における外部メモリから読出したエントリデータと検索キーとの比較処理を行っている時間及び内部メモリ読出処理を行っている時間である。区間1028、区間1030、区間1032、区間1034は、検索ジョブ1における外部メモリから読出したエントリデータと検索キーとの比較処理を行っている時間及び検索ジョブ2における内部メモリ読出処理を行っている時間である。区間1029、区間1031、区間1033は、検索ジョブ1における外部メモリ読出処理を行っている時間及び検索ジョブ2における内部メモリ検索処理を行っている時間である。区間1035は検索ジョブ2における外部メモリ読出処理を行っている時間及び内部メモリ検索処理を行っている時間である。区間1036は検索ジョブ2における外部メモリ検索処理を行っている時間である。このように内部メモリ検索処理を行っている間に外部メモリの読出処理を並列に実行する。また、比較部210による比較処理は一定単位で共通検索部211により読出処理と比較処理とを切り替えて並行処理を実行するため、効率的に検索処理が可能となる。
図11を参照し、検索ジョブ1と検索ジョブ2とが両方ともに検索モードが、シングルヒットモードで処理要求が行われた場合について説明する。タイミング1101において、検索処理要求が行われると検索ジョブ1が投入される。検索ジョブ1の投入後直ちに検索ジョブ1が開始され、検索ジョブ1が分割された二つのジョブである内部メモリ検索ジョブ1と、外部メモリ検索ジョブ1とのそれぞれの検索処理が開始される。内部メモリ検索ジョブ1と外部メモリ検索ジョブ1との比較処理は外部メモリの読出しの(バースト)単位で切り替えて行われる。内部メモリ検索処理が行われている間には外部メモリの読出処理が行われ、外部メモリの読出しが一定単位終了すると外部メモリから読出したエントリデータと検索キーとの比較処理を行う。
タイミング1102において、次の検索処理要求が行われると検索ジョブ2が投入される。このとき内部メモリテーブル制御部205と、外部メモリテーブル制御部207とは、それぞれ検索ジョブ1が分割された二つのジョブである内部メモリ検索ジョブ1と外部メモリ検索ジョブ1との処理を行っている。そのため検索ジョブ2が分割された二つのジョブである内部メモリ検索ジョブ2と、外部メモリ検索ジョブ2とは、それぞれ内部メモリ処理キュー202と、外部メモリ処理キュー203とにエンキューされる。内部メモリ検索ジョブ2は、内部メモリテーブル制御部205が内部メモリ検索ジョブ1の処理を終了して、次の内部メモリ検索ジョブとしてデキューされるまでの期間1108、内部メモリ処理キュー202にキューイングする。また、外部メモリ検索ジョブ2も同様に外部メモリテーブル制御部207が外部メモリ検索ジョブ1の処理を終了して、次の外部メモリ検索ジョブとしてデキューされるまでの期間1109、外部メモリ処理キュー203にキューイングされる。
タイミング1103において、検索キーと、内部メモリテーブル206の全エントリデータとの比較処理を実行しても1つもヒット(一致)せずに内部メモリ検索ジョブ1が終了する。すると、直ちにタイミング1004において内部メモリ検索ジョブ2がデキューされて、次の検索処理が開始される。タイミング1105において、検索キーと、外部メモリテーブル208のエントリデータとの比較処理の結果、検索がヒット(一致)して、外部メモリ検索ジョブ1が終了すると検索ジョブ1が完了する。すると、検索結果通知部209は検索結果を検索処理要求を行ったサブプロセッサに通知する。タイミング1104とタイミング1105との間は、検索ジョブ1の外部メモリ検索と検索ジョブ2の内部メモリ検索とが切り替わりながら処理が行われる。
タイミング1106において、タイミング1105で外部メモリ検索ジョブ1が終了すると直ちに外部メモリ検索ジョブ2がデキューされ検索処理が開始される。タイミング1107において、検索ジョブ2の内部メモリ検索処理が、検索キーと内部メモリテーブル206の全エントリデータとの比較処理の結果、検索がヒット(一致)して終了すると検索ジョブ2が完了する。検索結果通知部209は検索結果を検索処理要求を行ったサブプロセッサに通知する。また、外部メモリ検索ジョブ2は外部メモリ処理キュー203にキューイングされており、検索処理開始待ちの状態である。よって、検索制御部204により、外部メモリ検索ジョブ2を外部メモリ処理キュー203から取り消す。この時点では次の内部メモリ処理ジョブと外部メモリ処理ジョブとがキューイングされていないため、次の検索ジョブが投入されるまで待機する。タイミング1101とタイミング1105との間は、検索ジョブ1が実行されている時間となり、タイミング1104とタイミング1107との間は、検索ジョブ2が実行されている時間となる。
区間1121、区間1123、区間1125、区間1127は、検索ジョブ1における内部メモリ検索処理と検索ジョブ1における外部メモリ読出処理とを行っている時間である。区間1122、区間1124、区間1126は、検索ジョブ1における外部メモリから読出したエントリデータと検索キーとの比較処理と、検索ジョブ1における内部メモリ読出処理とを行っている時間である。区間1128、区間1130は、検索ジョブ1における外部メモリから読出したエントリデータと検索キーとの比較処理と検索ジョブ2における内部メモリ読出処理とを行っている時間である。区間1129は、検索ジョブ1における外部メモリ読出処理と検索ジョブ2における内部メモリ検索処理とを行っている時間である。区間1131、区間1133は、検索ジョブ2における外部メモリ読出処理と検索ジョブ2における内部メモリ検索処理とを行っている時間である。区間1132は、検索ジョブ2における外部メモリから読出したエントリデータと検索キーとの比較処理と検索ジョブ2における内部メモリ読出処理とを行っている時間である。
このように、内部メモリ検索処理を行っている間に外部メモリの読出処理を並列に行い、比較部210による比較処理を一定単位で切り替えて並行に処理を行うため、効率的に検索処理が可能となる。また、シングルヒットモードにより1つのエントリデータが見つかった時点で検索ジョブを終了するため、検索処理をより早く終えることが期待できる。
検索装置122の検索処理フローについて説明する。図14におけるステップS1401において、各サブプロセッサによって処理要求がレジスタに書き込まれることにより、検索処理受付部201は処理要求を受け付ける。検索処理受付部201は処理要求を解析し、検索ジョブを内部メモリ検索ジョブと外部メモリ検索ジョブとに分割し、それぞれ内部メモリ処理キュー202と外部メモリ処理キュー203とにエンキューする。
ステップS1402において、検索制御部204は、内部メモリテーブル制御部205と、外部メモリテーブル制御部207との状態に応じて検索処理の起動を行う。ここで、図15を参照し、ステップS1402の検索制御部204の検索処理起動手順について説明する。ステップS1501において、検索制御部204は内部メモリテーブル制御部205と外部メモリテーブル制御部207とのどちらか一方が検索処理を終了しているか否かを調べる。検索処理が終了している内部メモリテーブル制御部又は外部メモリテーブル制御部が無い場合は、検索制御部204は少なくともどちらか一方の検索処理が終了するまで待機する。
ステップS1502において、検索制御部204はステップS1501で処理が終了していると判定した内部メモリテーブル制御部に対応する内部メモリ処理キュー202に、内部メモリ検索ジョブがキューイングされるまで待機する。同様に、検索制御部204は、外部メモリテーブル制御部に対応する外部メモリ処理キュー203に外部メモリ検索ジョブがキューイングするまで待機する。
ステップ1503において、内部メモリ処理キュー202又は外部メモリ処理キュー203から次の内部メモリ検索ジョブ又は外部メモリ検索ジョブをデキューする。ステップ1504において、ステップ1503でデキューした内部メモリ検索ジョブ又は外部メモリ検索ジョブから検索モードを取得する。ステップ1505において、ステップ1503でデキューした内部メモリ検索ジョブ又は外部メモリ検索ジョブから検索キーを取得し、比較部210に検索キーを設定する。ステップ1506において検索処理を起動する。以上が検索制御部204の検索処理起動手順である。
また、図14におけるステップ1403において、共通検索部211は検索処理を実行する。内部メモリ検索ジョブの場合、検索処理は内部メモリテーブル制御部205と比較部210とによって実行される。一方、外部メモリ検索ジョブの場合、検索処理は外部メモリテーブル制御部207と比較部210とによって実行される。
内部メモリ検索ジョブと外部メモリ検索ジョブとは非同期に開始される。内部メモリ検索ジョブと外部メモリ検索ジョブとは、検索テーブルの各エントリデータを順次読み出し、比較部210は読み出したエントリデータと検索キーとの比較処理を行い、比較結果を検索制御部204に通知する。比較結果の通知処理では、内部メモリ検索ジョブと外部メモリ検索ジョブとのどちらの検索ジョブであるかの情報と、エントリのメモリアドレス情報と、比較結果が一致あるいは不一致であったか等の情報とが伝達される。
また、内部メモリテーブル制御部205と外部メモリテーブル制御部207とは、それぞれ、対象である検索テーブルの全エントリデータの読み出しを終了すると、検索制御部204に対して全エントリデータの読み出し終了を通知する。ステップ1404において、検索制御部204は検索処理の終了判定を行う。ステップS1404の処理は、検索制御部204によって実行される。
ここで、図16を参照し、検索制御部204の検索処理終了時の処理について説明する。ステップS1601において、比較部210から比較結果を受け取る。ステップS1602において、ステップS1601で受け取った比較の結果、検索がヒットしたか否かを判定する。ヒットした場合はステップS1603へ進む。ヒットしなかった(不一致)場合はステップS1605へ進む。ステップS1603において、検索ジョブの検索モードがシングルヒットモードであるか否かを判定する。シングルヒットモードでない場合は、全検索モードである。
シングルヒットモードのときは、ステップS1604において、分割した検索ジョブのもう一方のジョブが終了しているか判定する。分割した検索ジョブのもう一方のジョブが終了していた場合はステップS1611へ進む。一方、分割した検索ジョブのもう一方のジョブが終了していなかった場合はステップS1607へ進む。ステップS1607において、分割した検索ジョブのもう一方のジョブが処理を開始しているか否かを判定する。処理を開始していた場合はステップS1609において、分割した検索ジョブのもう一方のジョブの実行を終了する。処理を開始していなかった(処理キューにキューイングしていた)場合は、ステップS1608において、処理キューにキューイングしているもう一方のジョブを取り消す。ステップ1611においてエントリの格納場所の入れ替え処理を行う。検索テーブルのエントリデータを入れ替える際の、検索制御部204の処理について説明する。
図19のステップS1901において、パケット処理情報検索テーブルの外部メモリで検索ヒットしたか否かを判定する。外部メモリでエントリがヒットしていた場合は、ステップS1902において、パケット処理情報検索テーブルの外部メモリでヒットしたエントリと任意の内部メモリエントリを入れ替える(第1入れ替え)ジョブを発行しそれぞれの処理キューにキューイングする。任意の内部メモリエントリとは先頭を除いたラウンドロビンで管理され、外部メモリエントリとの入れ替えが行われるたびに選択されるエントリが更新される。本実施形態では以上のように入れ替えを行う内部メモリエントリを選択したが、入れ替える内部メモリエントリは内部メモリの先頭エントリであってもよいし、LRU等その他任意のアルゴリズムによって選択された内部メモリエントリであってもよい。一方、内部メモリでヒットした場合は、ステップS1903へ進む。ステップS1903において内部メモリテーブルの先頭エントリか否かを判定する。内部メモリの先頭エントリであった場合はエントリ入れ替え処理を終了する。一方、内部メモリテーブルの先頭エントリでなかった場合はステップS1904へ進む。ステップS1904においてパケット処理情報検索テーブルの内部メモリに格納された先頭エントリとヒットしたエントリをすぐに入れ替える(第2入れ替え)。この際、エントリの入れ替えを行わずに、次回検索時にヒットしたエントリから検索を始めるといった方式であってもよい。また、先頭エントリでなく、優先的に検索が行われる複数のエントリグループであってもよい。本実施形態では以上のような手順でエントリデータ入れ替え処理を行うが、内部メモリと外部メモリとに配置して論理的に1つの検索テーブルを構成するための整合性が取れる手順であればよい。
S1603において、検索モードがシングルヒットモードでなく全検索モードであった場合は、ステップS1605において、全エントリデータと検索キーとの比較を行ったか否かを判定する。つまり、検索制御部204が全エントリデータ読出し完了通知を外部メモリテーブル制御部207又は内部メモリテーブル制御部205から受け取ったか否かを判定する。全エントリデータと検索キーとの比較を行っていた場合はステップS1606へ進む。全エントリデータと検索キーとの比較を行っていなかった場合はステップS1601へ戻る。ステップS1606において、分割した検索ジョブのもう一方のジョブが終了しているか否かを判定する。分割した検索ジョブのもう一方のジョブが終了していた場合は処理を終了する。分割したもう一方のジョブが終了していなかった場合は、ステップS1610において、分割した検索ジョブのもう一方のジョブが完了するまで待機し、完了すると処理を終了する。以上が検索制御部204の検索処理終了時の検索制御処理フローである。
図14におけるステップS1405において、検索結果通知部209は検索の終了と検索結果とを、検索処理要求を行ったサブプロセッサに通知する。
検索テーブルへ新規にエントリデータを登録する際の、検索処理受付部201の処理について説明する。
図17のステップS1701において、検索テーブルを構成する内部メモリに空きがあるか否かを判定する。空きがあった場合は、ステップS1702において、検索テーブルの内部メモリにエントリデータを新規に追加するジョブを発行し、内部メモリ処理キュー202にその追加ジョブをエンキューする。空きがなかった場合は、ステップS1703において、検索テーブルの外部メモリにエントリデータを新規に追加するジョブを発行し、外部メモリ処理キュー203にその追加ジョブをエンキューする。
登録処理においては内部メモリ処理ジョブと、外部メモリ処理ジョブとのどちらか一方のみの追加ジョブを発行する。本実施形態では以上のような手順で登録処理を行うが、内部メモリと外部メモリとに配置して論理的に1つの検索テーブルを構成するための整合性が取れる手順であればよい。
検索テーブルからエントリデータを削除する際の、検索処理受付部201の削除処理について説明する。図18のステップS1801において、指定した検索テーブルのエントリデータが内部メモリに格納されているか否かを判定する。内部メモリに格納されていなかった場合は、ステップS1802において、指定した検索テーブルの外部メモリのエントリデータを削除するジョブを発行し、外部メモリ処理キュー203にその削除ジョブをエンキューする。内部メモリに格納されていた場合は、ステップS1803において、外部メモリに検索テーブルのエントリデータが登録されているか否かを判定する。登録されていなかった場合は、ステップS1804において、指定した検索テーブルの内部メモリのエントリデータを削除するジョブを発行し、内部メモリ処理キュー202に削除ジョブをエンキューする。
登録されていた場合は、ステップS1805において、外部メモリに格納された検索テーブルの任意のエントリデータを削除対象の内部メモリのエントリデータに格納する格納ジョブを発行し、内部メモリ処理キュー202にその格納ジョブをエンキューする。ステップS1806において、内部メモリに格納するエントリデータを外部メモリから削除する削除ジョブを発行し、外部メモリ処理キュー203に削除ジョブをエンキューする。ステップS1805で発行した格納ジョブと、ステップS1806で発行した削除ジョブはどちらが先にエンキューされ実行されてもよい。ステップS1805で発行した格納ジョブが先に実行された場合は、外部メモリから内部メモリへ移動するエントリデータを内部メモリテーブル制御部205が外部メモリから読み出し、内部メモリのエントリデータに登録する。その際、ステップS1806で発行された削除ジョブはステップS1802で発行された削除ジョブと同様にエントリデータの削除処理のみを行う。
一方、ステップS1806で発行された削除ジョブが先に実行された場合は、外部メモリから内部メモリへ移動するエントリデータを外部メモリテーブル制御部207が外部メモリから読み出し、検索制御部204へ渡してエントリデータを削除する。検索制御部204は、内部メモリ処理キュー202にキューイングされているステップS1805で発行された格納ジョブに、読み出した外部メモリのエントリデータを追加する。内部メモリテーブル制御部205は格納ジョブに加えられた外部メモリのエントリデータを内部メモリに登録する。ステップS1805で発行された格納ジョブが実行される際には、この外部メモリのエントリデータが追加されているか否かで、外部メモリを読み出すか否かを判定する。
本実施形態では以上のような手順で検索テーブルに登録されているエントリデータの削除処理を行うが、内部メモリと外部メモリに配置して論理的に1つの検索テーブルを構成するための整合性が取れる手順であればよい。また、内部メモリエントリが削除された場合に内部メモリへ移動する外部メモリエントリは任意のエントリでよいが、外部メモリの最後尾のエントリを選択すると外部メモリ検索時の効率がよい。また外部メモリエントリが削除された場合は同様にして、外部メモリエントリの最後尾のエントリを削除された外部メモリエントリのメモリに移動し格納すると外部メモリエントリ検索時の効率がよい。
次に、TOEサブシステム105が備える複数のサブプロセッサによるパケット受信処理で実行する検索処理のシーケンスについて説明する。図6と、図7と、図8とは上から下方向に時間軸が進む。図6におけるステップS601において、サブプロセッサD114は、パケットAを受信すると、パケットの受信処理のうちMACドライバ505とIPプロトコル処理とを開始する。ステップS602において、サブプロセッサD114はパケット処理の過程で、パケット処理情報1の検索処理を行う。ステップS603において、サブプロセッサD114はパケット処理情報1の検索処理を行うため、検索キーの設定と、検索モード(条件)等のパラメータの設定と、検索処理要求とを検索装置122に対して行う。検索キーと検索モード(条件)等とのパラメータは検索装置122内のレジスタに書き込む方式と、メモリ上に定められた形式でブロック上に配置して、そのアドレスをレジスタに書き込む方式との何れの方式で行ってもよい。なお、この際検索モードは複数の該当エントリデータが見つかる可能性がある全検索モードで動作するよう設定する。
ステップS604において、検索装置122は設定された検索キーと、検索モード(条件)とに応じた検索処理を行う。ステップS605において、検索処理が完了した検索装置122は検索の終了と検索結果とをサブプロセッサD114に通知する。検索の終了通知はサブプロセッサD114への割り込み方式で行っても、レジスタやメモリ上のフラグをサブプロセッサD114がポーリングする方式で行ってもよい。また、検索結果は検索結果通知部209のレジスタに表示しても、メモリ上に配置しても、何れの方法で行ってもよい。
ステップS606において、サブプロセッサD114は、MACドライバ505とIPプロトコル処理とが完了すると、サブプロセッサB112にパケットAを受け渡す。そしてサブプロセッサB112はパケットの受信処理の内、TCPまたはUDPプロトコル処理を開始する。一方、ステップS607において、次のパケットBを受信すると、ステップS601と同様にパケット処理を開始する。ステップS608において、サブプロセッサD114はステップS602と同様に検索処理を行う。ステップS609において、シングルヒットモードで、ステップS603と同様に検索処理要求を行う。
ステップS610において、検索装置122は設定された検索キーと、検索モード(条件)とに応じた検索処理を行う。ステップS610の動作については図7の参照により後述する。ステップS611において、パケット処理の過程で、サブプロセッサB112はパケット処理情報2の検索処理を行う。
ステップS612において、サブプロセッサB112はパケット処理情報2の検索を行うため、検索キーと、検索モード(条件)等とのパラメータを設定し、検索処理要求を検索装置122に対して行う。なお、この際、検索モードは検索キーと一致する1つのエントリデータが見つかればよいシングルヒットモードで動作するよう設定する。
ステップS613において、検索処理が完了するとステップS605と同様に、検索終了通知と、検索結果とが、検索装置122によりサブプロセッサB112に伝達される。ステップS614において、検索処理が完了するとステップS613と同様に、検索終了通知と、検索結果とが、検索装置122によりサブプロセッサD114に伝達される。
本実施形態では、ステップS613、ステップS614の順に処理する例を示したが、実際には検索処理が終了した順に、検索終了通知と検索結果とが、サブプロセッサB112とサブプロセッサD114とに伝達される。
ステップS615において、ステップS606と同様にパケットBの受け渡しを行う。ステップS609とステップS612とに見られるように、連続する受信パケットの処理では、検索装置122が検索処理を実行中であっても他のプロセッサから検索を要求されることがある。以上、図6に示したシーケンスにより、各サブプロセッサから処理要求が行われて検索装置122が動作する。
ここで検索装置122のステップS610における検索処理について、図7を参照して説明する。ステップS701の処理とステップS609の処理とは同一の処理である。またステップS708の処理とステップS612の処理とは同一の処理である。ステップS701において、サブプロセッサD114により検索キーと検索モード(条件)等とのパラメータの設定と、検索処理要求とが行われると、検索処理受付部201は検索処理要求を受け付け、検索ジョブ1を作成する。ここでは検索モードは全検索モードが指定される。
ステップS702において、検索処理受付部201は検索ジョブ1を内部メモリ検索ジョブ1と外部メモリ検索ジョブ1とに分割する。ステップS703において、ステップS702で分割された内部メモリ検索ジョブ1を内部メモリ処理キュー202にエンキューする。ステップS704において、ステップS702で分割された外部メモリ検索ジョブ1を外部メモリ処理キュー203にエンキューする。ステップS705において、外部メモリ処理キュー203にキューイングしている外部メモリ検索ジョブ1を共通検索部211がデキューする。ステップS706において、内部メモリ処理キュー202にキューイングしている内部メモリ検索ジョブ1を共通検索部211がデキューする。ステップS707において、共通検索部211は内部メモリ検索ジョブ1と外部メモリ検索ジョブ1との検索処理を実行する。
ステップS708において、ステップS701と同様にして検索処理受付部201は検索処理要求を受け付けて、検索ジョブ2を作成する。本実施形態では検索モードはシングルヒットモードが指定される。ステップS709において、ステップS702と同様にして検索ジョブ2を内部メモリ検索ジョブ2と外部メモリ検索ジョブ2とに分割する。ステップS710において、ステップS703と同様にして内部メモリ検索ジョブ2を内部メモリ処理キュー202にエンキューする。ステップS711において、ステップS704と同様にして外部メモリ検索ジョブ2を外部メモリ処理キュー203にエンキューする。ステップS712において、内部メモリ検索ジョブ2を内部メモリ処理キュー202にキューイングする。ステップS713において、外部メモリ検索ジョブ2を外部メモリ処理キュー203にキューイングする。
ステップS714において、共通検索部211のステップS707における内部メモリ検索ジョブ1が終了したため、内部メモリ処理キュー202にキューイングしている内部メモリ検索ジョブ2を共通検索部211によってデキューする。これらの詳細動作に関しては図8の参照により後述する。ステップS715において、共通検索部211は内部メモリ検索ジョブ2と外部メモリ検索ジョブ1との検索処理を実行する。
ステップS716において、検索ジョブ2の指定された検索モードの求められる検索結果がシングルヒットであったため、内部メモリ検索ジョブ2でエントリデータと検索キーとがヒットして処理が終了する。すると、共通検索部211は検索ジョブ2の検索結果を検索結果通知部209に伝達する。これらの詳細動作に関しては図8の参照により後述する。ステップS717において、内部メモリ検索ジョブ2の終了によって検索ジョブ2が終了する。よって、検索制御部204は、外部メモリ処理キュー203にキューイングされている外部メモリ検索ジョブ2を取り消す。
ステップS718において、検索結果通知部209は検索ジョブ2の終了と検索結果とをステップS708において検索処理要求を行ったサブプロセッサB112に通知する。ステップS719において、検索ジョブ1が終了し、共通検索部211は検索結果通知部209に検索ジョブ1の検索結果を渡す。ステップS720において、検索結果通知部209は、検索ジョブ1の終了通知及び検索結果をステップS701において処理要求を行ったサブプロセッサD114に通知する。ステップS705以降の共通検索部211の動作については、図8の参照により後述する。
本実施形態では内部メモリ検索が先に終了して処理される例を示したが、実際には処理が終了した順に、外部メモリ処理キュー203又は内部メモリ処理キュー202から次の外部メモリ検索ジョブまたは内部メモリ検索ジョブがデキューされ処理が開始される。以上、図7に示したシーケンスにより検索装置122は検索ジョブの処理を行う。
ここで図7のステップS707に示した、共通検索部211の検索処理について、図8を参照して説明する。ステップS801の処理はステップS706の処理と同一の処理である。また、ステップS802の処理はステップS705の処理と同一の処理である。また、ステップS837の処理はステップS714の処理と同一の処理である。ステップS801において、検索制御部204は内部メモリ処理キュー202から内部メモリ検索ジョブ1をデキューする。ステップS802において、検索制御部204は外部メモリ処理キュー203から外部メモリ検索ジョブ1をデキューする。ステップS837において、検索制御部204は内部メモリ処理キュー202から内部メモリ検索ジョブ2をデキューする。ステップS803において、検索制御部204はステップS801においてデキューした内部メモリ検索ジョブ1から検索キーを取得して、比較部210に内部メモリ検索用の検索キーを設定する。
ステップS804において、検索制御部204は内部メモリテーブル制御部205に対して読出処理要求を行い、内部メモリテーブル制御部205による検索ジョブ1における内部メモリテーブル206のエントリデータの読出処理を起動する。ステップS805において、検索制御部204はステップS801においてデキューした外部メモリ検索ジョブ1から検索キーを取得して、比較部210に外部メモリ検索用の検索キーを設定する。ステップS806において、検索制御部204は外部メモリテーブル制御部207に対して読出処理要求を行い、外部メモリテーブル制御部207による検索ジョブ1における外部メモリテーブル208のエントリデータの読出処理を起動する。
ステップS838において、検索制御部204は内部メモリテーブル制御部205に対して読出処理要求を行い、内部メモリテーブル制御部205による検索ジョブ2における内部メモリテーブル206のエントリの読出処理を起動する。ステップS839において、検索制御部204はステップS837でデキューした内部メモリ検索ジョブ2から検索キーを取得して、比較部210に内部メモリ検索用の検索キーを設定する。
ステップS807とステップS811とステップS815とステップS821とステップS827とステップS843とステップS847とにおいて内部メモリテーブル制御部205は内部メモリテーブル206からエントリデータの読出処理を行う。このうちステップS807とステップS811とステップS815とステップS821とステップS827との処理は検索ジョブ1における内部メモリからの検索テーブルエントリデータの読出処理である。またステップS843とステップS847との処理は検索ジョブ2における内部メモリからの検索テーブルのエントリデータの読出処理である。
ステップS809とステップS813とステップS819とステップS825とステップS831とステップS845とにおいて、内部メモリテーブル制御部205は読み出したエントリデータを比較部210に受け渡す。このうちステップS809とステップS813とステップS819とステップS825とステップS831との処理は検索ジョブ1におけるエントリデータの受け渡し処理である。またステップS845の処理は検索ジョブ2におけるエントリデータの受け渡し処理である。
ステップS810とステップS814とステップS823とステップS826とステップS835とステップS846とにおいて、比較部210は比較処理を行う。このうちステップS810とステップS814とステップS823とステップS826とステップS835との処理は検索ジョブ1における比較処理である。またステップS846は検索ジョブ2における比較処理である。これらの比較処理の際、検索キーは検索制御部204によって設定された内部メモリ検索用の検索キーを用い、検索対象データは内部メモリテーブル制御部205から受け取ったデータを使用する。ステップS808とステップS817とステップS829とステップS842とにおいて、外部メモリテーブル制御部207は外部メモリテーブル208から検索テーブルのエントリデータの読出処理を行う。これらステップS808とステップS817とステップS829とステップS842との処理は検索ジョブ1における外部メモリからの検索テーブルのエントリデータの読出処理である。
ステップS816とステップS828とステップS840とステップS852とにおいて、外部メモリテーブル制御部207は読み出した検索テーブルのエントリデータを比較部210に受け渡す。これらステップS816とステップS828とステップS840とステップS852との処理は検索ジョブ1におけるエントリデータの受け渡し処理である。
ステップS820とステップS833とステップS841とステップS853とにおいて、比較部210は比較処理を行う。このうちステップS820とステップS833とステップS841とステップS853との処理は検索ジョブ1における比較処理である。これらの比較処理の際、検索キーは検索制御部204によって設定された外部メモリ検索用の検索キーを用い、検索対象データは外部メモリテーブル制御部207から受け取ったエントリデータを使用する。ステップS832において、内部メモリテーブル制御部205は、検索ジョブ1における内部メモリテーブル206のエントリデータの読み出しがすべて終了したことを検索制御部204に通知する。ステップS854において、外部メモリテーブル制御部207は、検索ジョブ1における外部メモリテーブル208からのエントリデータの読み出しがすべて完了したことを検索制御部204に通知する。ステップS812とステップS818とステップS824とステップS830とステップS836とステップS848とにおいて、比較部210は内部メモリ検索用の検索キーとエントリデータとの比較結果とを検索制御部204に通知する。このうちステップS812とステップS818とステップS824とステップS830とステップS836との処理は検索ジョブ1における通知処理である。また、ステップS848の処理は検索ジョブ2における通知処理である。比較結果の通知を受けた検索制御部204は、図16に示した検索処理終了時の処理フローにより終了判定を行う。ステップS836の処理後の終了判定において、検索制御部204は内部メモリテーブル206のエントリデータの読み出しがすべて終了した通知を内部メモリテーブル制御部205から受け取っているため、内部メモリ検索ジョブ1を終了する。またステップS848の処理後の検索制御部204による終了判定において、検索ジョブ2は、1つのエントリデータが見つかり、且つシングルヒットモードであるため検索ジョブ2の終了処理を開始する。
ステップS822とステップS834とステップS844とステップS855とにおいて、比較部210は外部メモリ検索用の検索キーとエントリデータとの比較結果を検索制御部204に通知する。これらステップS822とステップS834とステップS844とステップS855との処理は検索ジョブ1における比較処理である。比較結果の通知を受けた検索制御部204は、図16に示した検索処理終了時の処理フローにより終了判定を行う。なお、ステップS855の処理後の終了判定において、検索制御部204は外部メモリテーブル208のエントリの読出しがすべて終了した通知を外部メモリテーブル制御部207から受け取っているため、外部メモリ検索ジョブ1を終了する。さらに、これにより内部メモリ検索ジョブ1と外部メモリ検索ジョブ1とが終了するので、検索ジョブ1の終了処理を開始する。
ステップS849において、検索ジョブ2を終了するために、検索制御部204は内部メモリテーブル制御部205に対して読出し終了通知を行う。ステップS850において、検索ジョブ2を終了するために、検索制御部204は外部メモリ処理キュー203にキューイングされている外部メモリ検索ジョブ2の取消処理を行う。ステップS851において、検索ジョブ2が終了したため、検索制御部204は検索ジョブ2の検索処理結果を検索結果通知部209へ渡す。ステップS856において、検索ジョブ1が終了したため、検索制御部204は検索ジョブ1の検索処理結果を検索結果通知部209へ渡す。
図8において、期間860では検索ジョブ1の処理が行われている。また期間861では、検索ジョブ2の処理が行われている。以上、TOEサブシステム105のパケット受信処理が実行する検索を例に挙げ、検索装置122の処理を説明した。
本実施形態によれば、検索ジョブを内部メモリ検索ジョブと外部メモリ検索ジョブとに分割して、それぞれのジョブを並行に処理することにより、外部メモリ読出処理を行っている間に内部メモリ検索処理を行うことができる。これにより内部メモリと外部メモリとで論理的に一つの検索テーブルを構成した場合の検索処理の性能低下を低減することができる。さらに、投入された検索要求のジョブが一方のメモリを検索中であっても、もう一方のメモリの検索が終了していれば、次の検索要求の検索ジョブを開始することができる。また、検索モードを指定することにより、シングルヒットモードの場合に、一方の検索がヒットするともう一方のジョブを直ちに終了することにより分割したジョブが不要な処理をしなくて済む。また、外部メモリ処理キュー又は内部メモリ処理キューから外部メモリ検索ジョブ又は内部メモリ検索ジョブを取り消すことにより、分割したジョブが不要な処理をしなくて済む。このため、複数のサブプロセッサによって検索装置を共有する場合に、検索処理に時間のかかる1つの検索ジョブが他のジョブに与える遅延時間を部分的に削減でき、連続する検索要求を効率的に処理することが可能となる。また、内部メモリエントリ削除時に任意の外部メモリエントリを削除された内部メモリエントリに格納することにより高速な内部メモリを低速な外部メモリより優先して使用し、検索処理性能を最大限に発揮することが可能となる。また、シングルヒットモードの場合に外部メモリテーブルで検索ヒットしたエントリの格納場所を任意の内部メモリエントリの格納場所と入れ替えることにより、連続するパケットの検索要求を効率的に処理することが可能となる。
(第2実施形態)
図1、図4、図5、図6、図14、図16、図17、図18は第1実施形態と共通の図である。
第2実施形態に係るTOEサブシステム105が備える検索装置122の構成の例を説明する。図3の検索装置122はTOEサブシステム105のサブシステムバス123に接続されている。検索装置122は、プロトコル処理における検索処理を各サブプロセッサから要求されることによって実行し、検索結果を各サブプロセッサに返す。その際、各サブプロセッサは検索キーの設定と、検索モード等のパラメータを設定と、検索処理要求とを行う。検索モードは求められる検索結果が検索対象データとなるエントリデータが1つ見つかればよいシングルヒットモードと、すべてのエントリデータと検索キーとの比較を行う必要のある全検索モードとがある。また、検索装置122は、検索テーブルへの登録処理と、削除処理とを各サブプロセッサからの要求により行う。検索装置122は検索処理と、検索装置122の内部メモリ及び検索装置122が参照する外部メモリへの登録処理と削除処理とを受け付け、内部メモリ処理ジョブと外部メモリ処理ジョブとを発行する検索処理受付部301を備える。図1に示すシステムでは、外部メモリとは主メモリ104に相当する。また図3において検索装置122は内部メモリ処理ジョブをキューイングする第1のキューイング手段としての内部検索キュー302と外部メモリ処理ジョブをキューイングする第2のキューイング手段としての外部検索キュー303とを備える。また検索装置122は検索処理受付部301によって受け付けた内部メモリ処理ジョブと、外部メモリ処理ジョブとを解析し、検索処理と、登録処理と、削除処理とを制御する検索制御部304を備える。さらに検索対象となるエントリデータを格納する内部メモリテーブル306と、内部メモリテーブル306に対する処理を行う内部メモリ検索制御部305とを備える。内部メモリテーブル306はTOEサブシステム105が備える共有メモリ125を用いてもよい。また、検索装置122は検索対象となるエントリデータを格納する外部メモリテーブル308に対する処理を行う外部メモリ検索制御部307を備える。内部メモリ検索制御部305と外部メモリ検索制御部307とは検索制御部304が各検索キューからデキューしたジョブに従い処理を行い、その結果を検索制御部304に通知する。内部メモリ検索制御部305が検索処理を行う場合は、内部メモリテーブル306からのエントリデータの読み出しと、検索キーとの比較と、一連の検索処理とを行う。本実施形態ではこのような一連の動作を内部メモリ検索制御部305と外部メモリ検索制御部307とで行うが、内部メモリ検索処理と外部メモリ検索処理とが並列に処理可能であれば、共通の処理を行う機構で一連の動作を行ってもよい。
内部メモリ検索制御部305と外部メモリ検索制御部307との検索処理のタイミングについて説明する。図12と図13とは左から右方向へ時間が進む。検索ジョブ1と検索ジョブ2との両方とも検索モードが全検索モードで処理要求が行われた場合について、図12を参照して説明する。タイミング1201において、検索処理要求が行われると検索ジョブ1が投入される。検索ジョブ1投入後直ちに検索ジョブ1が開始され、検索ジョブ1が分割された内部メモリ検索ジョブ1と外部メモリ検索ジョブ1とのそれぞれの検索処理を開始する。内部メモリ検索ジョブ1は内部メモリ検索制御部305が実行し、外部メモリ検索ジョブ1は外部メモリ検索制御部307が実行する。内部メモリ検索制御部305と外部メモリ検索制御部307とは並列に処理を実行する。
タイミング1202において、次の検索処理要求が行われると検索ジョブ2が投入される。このとき内部メモリ検索制御部305と、外部メモリ検索制御部307とは、それぞれ内部メモリ検索ジョブ1と外部メモリ検索ジョブ1との処理を行っている。そのため、検索ジョブ2が分割された内部メモリ検索ジョブ2と外部メモリ検索ジョブ2とは、それぞれ内部検索キュー302と外部検索キュー303との各処理キューにエンキューされる。内部メモリ検索ジョブ2は、内部メモリ検索制御部305が内部メモリ検索ジョブ1の処理を終えて、検索制御部304により次のジョブとしてデキューされるまでの期間1209、内部検索キュー302にキューイングする。外部メモリ検索ジョブ2も同様に、外部メモリ検索制御部307が外部メモリ検索ジョブ1の処理を終えて、検索制御部304により次のジョブとしてデキューされるまでの期間1210、外部検索キュー303にキューイングする。
タイミング1203において内部メモリ検索制御部305により全エントリデータの検索が完了し、内部メモリ検索ジョブ1が終了すると、直ちにタイミング1204において内部メモリ検索ジョブ2が検索制御部304によってデキューされて処理を開始する。タイミング1205において、内部メモリ検索制御部305により全エントリデータの検索が完了し、内部メモリ検索ジョブ2が終了する。この時点では次の内部メモリ検索ジョブがキューイングされていないため、内部メモリ検索制御部305は次の内部メモリ検索ジョブが投入されて起動されるまで待機する。タイミング1206において、外部メモリ検索制御部307により全エントリデータの検索が完了し、外部メモリ検索ジョブ1が完了すると検索ジョブ1が完了し、検索結果通知部309は検索結果を検索処理要求を行ったサブプロセッサに通知する。また、タイミング1207において、外部メモリ検索ジョブ2が検索制御部304によってデキューされて処理が開始される。タイミング1208において、外部メモリ検索制御部307により全エントリデータの検索が完了し、外部メモリ検索ジョブ2が完了すると検索ジョブ2が完了し、検索結果通知部309は検索結果を検索処理要求を行ったサブプロセッサに通知する。
タイミング1201とタイミング1206との間は検索ジョブ1が実行されている時間であり、タイミング1204とタイミング1208との間は検索ジョブ2が実行されている時間である。区間1221は検索ジョブ1における内部メモリ検索制御部305が内部メモリ検索ジョブ1の処理を行っている時間である。区間1222は検索ジョブ1における外部メモリ検索制御部307が外部メモリ検索ジョブ1の処理を行っている時間である。区間1223は検索ジョブ2における内部メモリ検索制御部305が内部メモリ検索ジョブ2の処理を行っている時間である。区間1224は検索ジョブ2における外部メモリ検索制御部307が外部メモリ検索ジョブ2の処理を行っている時間である。このように内部メモリ検索ジョブの処理と外部メモリ検索ジョブの処理とを並列に行う。
検索ジョブ1と検索ジョブ2とが両方とも検索モードがシングルヒットモードで処理要求が行われた場合について、図13を参照して説明する。
タイミング1301において、検索処理要求が行われると検索ジョブ1が投入される。検索ジョブ1の投入後直ちに検索ジョブ1が開始され、分割された内部メモリ検索ジョブ1と外部メモリ検索ジョブ1とのそれぞれの検索処理を開始する。内部メモリ検索ジョブ1は内部メモリ検索制御部305が実行し、外部メモリ検索ジョブ1は外部メモリ検索制御部307が実行する。内部メモリ検索制御部305と外部メモリ検索制御部307とは並列に処理を実行する。タイミング1302において、次の検索処理要求が行われると検索ジョブ2が投入される。このとき内部メモリ検索制御部305と、外部メモリ検索制御部307とはそれぞれ検索ジョブ1が分割された内部メモリ検索ジョブ1と外部メモリ検索ジョブ1との各処理を行っている。そのため、検索ジョブ2が分割された内部メモリ検索ジョブ2と外部メモリ検索ジョブ2とは、それぞれ内部検索キュー302と外部検索キュー303との各処理キューにエンキューされる。内部メモリ検索ジョブ2は、内部メモリ検索制御部305が内部メモリ検索ジョブ1の処理を終えて、次の内部メモリ検索ジョブとしてデキューされるまでの期間1307、内部検索キュー302にキューイングする。外部メモリ検索ジョブ2も同様に外部メモリ検索制御部307が外部メモリ検索ジョブ1の処理を終えて、次の外部メモリ検索ジョブとしてデキューされるまでの期間1308、外部検索キュー303にキューイングする。
タイミング1303において、内部メモリ検索制御部305が全エントリデータの検索を行った結果、どのエントリデータも検索キーにヒットせずに完了すると、内部メモリ検索ジョブ1が終了する。すると直ちにタイミング1304において、内部メモリ検索ジョブ2が検索制御部304によってデキューされ検索を開始する。シングルヒットモードの検索ジョブ1は、内部メモリ検索でヒットせずに終了したため、外部メモリ検索の結果が通知されるまで待機する。
タイミング1305において、内部メモリ検索ジョブ2がヒットして完了すると検索ジョブ2が完了し、検索結果通知部309は検索結果を検索処理要求を行ったサブプロセッサに通知する。この時外部メモリ検索ジョブ2はキューイングされ、処理待ちの状態なのでこのジョブを外部検索キュー303から取り消す。この時点では次の内部メモリ処理ジョブがキューイングされていないため、内部メモリ検索制御部305は次の内部メモリ処理ジョブが投入されるまで待機する。
タイミング1306において、外部メモリ検索ジョブ1がヒットして完了すると検索ジョブ1が完了し、検索結果通知部309は検索結果を検索処理要求を行ったサブプロセッサに通知する。この時点では次の外部メモリ処理ジョブがキューイングされていないため、外部メモリ検索制御部307は次の外部メモリ処理ジョブが投入されるまで待機する。タイミング1301とタイミング1306との間は検索ジョブ1が実行されている時間であり、タイミング1303とタイミング1305との間は検索ジョブ2が実行されている時間である。
区間1321は検索ジョブ1における内部メモリ検索制御部305が内部メモリ検索ジョブ1の処理を行っている時間である。区間1322は検索ジョブ1における外部メモリ検索制御部307が外部メモリ検索ジョブ1の処理を行っている時間である。区間1323は検索ジョブ2における内部メモリ検索制御部305が内部メモリ検索ジョブ2の処理を行っている時間である。
このように内部メモリ検索処理と外部メモリ検索処理とを並列に行うため、またシングルヒットモードにより1つのエントリデータが検索キーと一致した時点でジョブを終了するため、検索処理をより早く終えることが期待できる。
図6に示したTOEサブシステム105内部の複数のサブプロセッサによるパケット受信処理で実行する検索処理のシーケンスのうち、ステップS610における検索処理について説明する。 図9におけるステップS901の処理と図6におけるステップS609の処理とは同一の処理である。同様に、ステップS911の処理とステップS612の処理とは同一の処理である。
ステップS901において、サブプロセッサD114により、検索キーの設定と、検索モード(条件)等のパラメータの設定と、検索処理要求とが行われると、検索処理受付部301は処理を受け付けて、検索ジョブ1を解析する。ステップS902において、検索処理受付部301は検索ジョブ1を内部メモリ検索ジョブ1と外部メモリ検索ジョブ1とに分割する。
ステップS903において、検索処理受付部301は外部メモリ検索ジョブ1を外部検索キュー303にエンキューする。ステップS904において、検索処理受付部301は内部メモリ検索ジョブ1を内部検索キュー302にエンキューする。ステップS905において、外部検索キュー303にキューイングしている外部メモリ検索ジョブ1を検索制御部304によってデキューする。ステップS906において、内部検索キュー302にキューイングしている内部メモリ検索ジョブ1を検索制御部304によってデキューする。ステップS907において、検索制御部304は内部メモリ検索ジョブ1を実行するため内部メモリ検索制御部305に内部メモリ検索ジョブ1から取得した検索キーの設定と検索モードの設定と検索処理要求とを行う。
ステップS908において、検索制御部304は外部メモリ検索ジョブ1を実行するため外部メモリ検索制御部307に外部メモリ検索ジョブ1から取得した検索キーの設定と検索モードの設定と検索処理要求とを行う。ステップS909において、内部メモリ検索制御部305は内部メモリテーブル306に格納された検索対象データとなるエントリデータを読み出して、読み出したエントリデータと検索キーとの比較処理を順次行う。検索モードに全検索モードが設定されているため、全エントリデータの検索処理を行った時点で検索終了となる。ステップS910において、外部メモリ検索制御部307は外部メモリテーブル308に格納された検索対象データとなるエントリデータを読み出して、読み出したエントリデータと検索キーとの比較処理を順次行う。検索モードに全検索モードが設定されているため、全エントリデータの検索処理を行った時点で検索終了となる。
ステップS911において、サブプロセッサB112により検索キーの設定と検索モード(条件)等のパラメータの設定と検索処理要求とが行われると、検索処理受付部301は検索処理を受け付け、検索ジョブ2を解析する。ステップS912において、検索処理受付部301は検索ジョブ2を内部メモリ検索ジョブ2と外部メモリ検索ジョブ2とに分割する。ステップS913において、検索処理受付部301は外部メモリ検索ジョブ2を外部検索キュー303にエンキューする。
ステップS914において、検索処理受付部301は内部メモリ検索ジョブ2を内部検索キュー302にエンキューする。ステップS915において、内部検索キュー302は内部メモリ検索ジョブ2をキューイングする。ステップS916において、外部検索キュー303は外部メモリ検索ジョブ2をキューイングする。ステップS917において、内部メモリ検索制御部305は内部メモリ検索ジョブ1が終了したため、内部メモリ検索処理結果を検索制御部304に通知する。ステップS918において、内部メモリ検索制御部305の内部メモリ検索ジョブ1が終了したため、内部検索キュー302にキューイングしている内部メモリ検索ジョブ2を検索制御部304によってデキューする。
ステップS919において、検索制御部304は内部検索ジョブ2を実行するため内部メモリ検索制御部305に対して内部メモリ検索ジョブ2から取得した検索キーと、検索モードの設定と、検索処理要求とを行う。
ステップS920において、内部メモリ検索制御部305は内部メモリテーブル306に格納された検索対象データとなるエントリデータを読み出して、読み出したエントリデータと検索キーとの比較処理を順次行う。検索モードにシングルヒットモードが設定されているため、検索キーと一致するエントリデータが一つ見つかった時点で比較処理を終了する。
ステップS921において、内部メモリ検索制御部305は内部メモリ処理ジョブ2の検索処理結果を検索制御部304に通知する。通知の内容は、検索がヒットして終了したことと、該当エントリデータのアドレスとである。この通知を受け取った検索制御部304は、検索モードがシングルヒットモードである内部メモリ検索ジョブ2がヒットして終了したため、検索ジョブ2の終了処理を開始する。
ステップS922において、検索制御部304は検索ジョブ2の検索結果を検索結果通知部309に通知する。ステップS923において、検索制御部304は、内部メモリ検索ジョブ2の終了によって検索ジョブ2が終了したため、外部検索キュー303にキューイングしている外部メモリ検索ジョブ2を取り消す。
ステップS924において、検索結果通知部309は、検索ジョブ2の終了通知と検索結果とをステップS911において処理要求を行ったサブプロセッサB112に通知する。ステップS925において、外部メモリ検索制御部307は、外部メモリ検索ジョブ1が終了したため、外部メモリ検索ジョブ1の検索処理結果を検索制御部304に通知する。この通知を受け取った検索制御部304は、検索ジョブ1が分割された内部メモリ検索ジョブ1と外部メモリ検索ジョブ1とが終了したため、検索ジョブ1の終了処理を開始する。
ステップS926において、検索制御部304は検索ジョブ1の検索結果を検索結果通知部309に通知する。ステップS927において、検索結果通知部309は検索ジョブ1の終了通知と検索結果とを、ステップS901において処理要求を行ったサブプロセッサD114に通知する。本実施形態では内部メモリ検索ジョブが先に終了し処理される例を示したが、実際には処理が終了した順に各処理キューから次のジョブがデキューされて各処理が開始される。以上、図9に示したシーケンスにより検索装置122は検索ジョブの処理を行う。
本実施形態によれば、検索ジョブを、内部メモリ検索ジョブと外部メモリ検索ジョブとに分割して、それぞれのジョブを並列に処理することにより、外部メモリ検索を行っている間に内部メモリ検索を行うことが可能となる。これにより内部メモリと外部メモリとで論理的に一つの検索テーブルを構成した場合の検索処理の性能低下を低減することが可能となる。さらに、投入された検索ジョブが一方のメモリを検索中であっても、もう一方のメモリの検索が終了していれば、次の検索ジョブを開始することが可能となる。また、検索モードを指定することで、シングルヒットモードの場合に、分割した一方の検索ジョブがヒットするともう一方のジョブを直ちに終了することにより又はキューからもう一方のジョブを取り消すことにより、分割したジョブが不要な処理をしなくて済む。このため、複数のプロセッサによって検索装置を共有する場合に、処理に時間のかかる1つの検索ジョブが他のジョブの処理に与える遅延時間を部分的に削減でき、連続する検索要求を効率的に処理することが可能となる。
(その他の実施形態)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。