以下に、本発明にかかる検索装置およびデータ処理装置の実施の形態を図面に基づいて詳細に説明する。なお、以下に示す実施の形態によりこの発明が限定されるものではない。
実施の形態1.
図1は、本発明にかかる検索装置の実施の形態1を利用したネットワーク構成を示す図である。なお、本実施の形態では、データ処理装置としてのルータと、ルータに実装される検索装置を例として説明しているが、本発明の適用分野は通信分野に限定されるものではない。
図1に示すように、本実施の形態のネットワークは、ルータ1、PC(Personal Computer)端末2、インターネット3、サーバー群4、アクセスポイント5、無線端末6、イントラネット7、制御PC8、制御リンク9、およびリンク10から構成されている。ルータ1は、インターネット3、イントラネット7、およびサーバー群4とそれぞれリンク10により接続されており、ネットワーク間のパケットの転送などを行う。アクセスポイント5は、リンク10を介してインターネット3、またはイントラネット7に接続されている。PC端末2はリンク10を介して、また、無線端末6はアクセスポイント5を介して、それぞれ端末間の相互通信を行う。また、制御PC8は制御リンク9を介してルータ1に接続されており、ルータ1に対してデータベース更新用のデータ送信などを行う。
図2は、図1で示したルータ1の機能構成例を示す図である。図2に示すように、ルータ1は、送受信ユニット11、転送ユニット12、デバイス13、外部メモリ14、およびコントローラ15を含んで構成される。送受信ユニット11と転送ユニット12とは転送経路21で、また、転送ユニット12とデバイス13とは検索経路22で接続されており、デバイス13、外部メモリ14、およびコントローラ15は、それぞれ外部バス接続線24を介して外部バス23に接続されている。
次に、各構成要素の機能について述べる。送受信ユニット11は、インターネット3、サーバー群4、およびイントラネット7にそれぞれリンク10を介して接続されている。図3は、Ethernet(登録商標)フレームのフォーマットを示す図である。送受信ユニット11は、リンク10から受信した図3に示すEthernet(登録商標)フレーム25からMAC(Media Access Control)ヘッダ26とFCS(FRAMe Check Sequence)28を取り除いたIPv4(Internet Protocol Version 4)パケット27を転送ユニット12に転送し、また、転送ユニット12から送られたIPv4パケット27に、MACヘッダ26とFCS28を付加してリンク10に送信する。
転送ユニット12は、受信したフレームから、そのフレームの転送に必要なルーティング情報を得るための検索処理に必要なデータ(以下、検索キーという)を抽出し、検索経路22を介してデバイス13へ検索キーを送る。また、デバイス13から検索経路22を介して検索結果(ルーティング情報)を受け取り、その検索結果に基づき、上記の受信したフレームを、転送経路21を介して送受信ユニット11へ転送する。
本実施の形態においては、転送ユニット12で抽出され、検索キーが抽出されるヘッダ情報には、ネットワーク層のヘッダに含まれる宛先・送信元アドレス、プロトコル、トータル長、識別子、フラグ、およびフラグメントオフセットと、トランスポート層のヘッダに含まれる宛先・送信元ポート番号、およびシーケンス番号(但し、TCPの場合のみ)と、が含まれる。以下、図3〜6を用いて検索キーについて説明する。
なお、以下の例では、ネットワーク層で使用するプロトコルをIPv4とし、また、トランスポート層で使用するプロトコルをTCP(Transmission Control Protocol)またはUDP(User Datagram Protocol)として説明するが、これに限定されることなく、例えば、ネットワーク層で使用するプロトコルをIPv6(Internet Protocol Version 6)とし、また、トランスポート層で使用するプロトコルをRDP(Remote Desktop Protocol)としてもよい。
図3に示すように、IPv4ヘッダ29、TCPヘッダ30、およびUDPヘッダ31は、Ethernet(登録商標)フレーム25にカプセル化されている。
図4は、ネットワーク層のヘッダであるIPv4ヘッダのフォーマットを示す図である。IPv4ヘッダの先頭から3バイト目にTOS(Type of Service)フィールド32、4バイト目にトータル長(Total Length)33、5バイト目に識別子(Identification)34、7バイト目のうち上位3ビットがフラグ(Flag)35であり、7バイト目の下位5ビットと8バイト目がフラグメントオフセット(Fragment Offset)36、10バイト目にプロトコル(Protocol)37、13バイト目に送信元IPアドレス(Source Address)38、17バイト目に宛先IPアドレス(Destination Address)39が位置している。
図5は、トランスポート層のヘッダであるTCPヘッダのフォーマットを示す図である。TCPヘッダの先頭から1バイト目に送信元ポート番号(Source Port)40、3バイト目に宛先ポート番号(Destination Port)41、5バイト目にシーケンス番号(Sequence Number)42、9バイト目に確認応答番号(Acknowledgement Number)43が位置している。
図6は、トランスポート層のヘッダであるUDPヘッダのフォーマットを示す図である。UDPヘッダの1バイト目に送信元ポート番号(Source Port)44、3バイト目に宛先ポート番号(Destination Port)45が位置している。
なお、本実施の形態では、パケットのトレーラーとしてEthernet(登録商標)フレームを用いた場合について説明したが、これに限定されるものではない。例えば、ATM(Asynchronous Transfer Mode)またはFDDI(Fiber-Distributed Data Interface)などを用いた場合にも同様に実施できる。
また、上記の検索キーの項目は一例であり、ルーティング情報を検索できる情報ではあれば、これに限らない。検索方法およびプロトコルによっては、上記の検索キー情報の項目の一部を用いない場合もあり、また、上記以外の項目(例えば、フローを識別するフィールドであるVLAN(Virtual Local Area Network)ID等)が含まれることもある。
デバイス13は、外部メモリ14に記憶されたデータベースを外部バス23および外部バス接続線24を介して取得し、検索経路22から送出された検索キーをもとに、データベースに対して検索処理を行い、検索結果としてルーティング情報を得る。そして、デバイス13は、検索結果を、検索経路22を介して転送ユニット12に通知する。
外部メモリ14は、制御PC8から制御リンク9を介して送られたデータベースを記憶している。データベースは、検索キーを用いて、ルーティング情報を検索するためのもので、検索キーとルーティング情報の対応が含まれているものとする。
コントローラ15は、制御リンク9を介して制御PC8から送られるルータ1の外部からのデータを、ルータ1内の外部バス23で用いるデータフォーマットに変換する。
図7は、図2におけるデバイス13の内部構成を示す図であり、デバイス13は本実施の形態の検索装置である。図7に示すように、本実施の形態のデバイス13は、検索機能を有する前段の検索処理回路である検索処理回路51と、検索機能を有する後段の検索処理回路である検索処理回路52および検索処理回路53と、運用面にある内蔵RAM57、内蔵RAM58、内蔵RAM59、および内蔵RAM60と、待機面にある内蔵RAM61、内蔵RAM62、内蔵RAM63、および内蔵RAM64と、これらの内蔵RAM群に接続され、検索用データベースの更新要求に応じて待機面にある内蔵RAM群の内容の更新を行うRAM更新回路65と、内蔵RAM58および内蔵RAM62と接続され接続先の内蔵RAMの選択を行うRAM選択回路54と、内蔵RAM59および内蔵RAM63と接続され接続先の内蔵RAMの選択を行うRAM選択回路55と、内蔵RAM60および内蔵RAM64と接続され接続先の内蔵RAMの選択を行うRAM選択回路56と、RAM更新回路65からの更新通知を検索処理回路51、RAM選択回路54、RAM選択回路55、およびRAM選択回路56に通知する通知線66と、を含んで構成される。また、検索処理回路51は内蔵RAM57および内蔵RAM61と、検索処理回路52はRAM選択回路54と、検索処理回路53はRAM選択回路55およびRAM選択回路56と、それぞれ接続されている。次に、各構成要素の詳細について述べる。
運用面にある内蔵RAM57、内蔵RAM58、内蔵RAM59、および内蔵RAM60には、検索用データベースが分割して格納されており、これらの内蔵RAM群にアクセスすることにより検索処理が行われる。待機面にある内蔵RAM57、内蔵RAM58、内蔵RAM59、および内蔵RAM60は、検索用データベースの更新時にその内容が更新され、更新後の検索用データベースが格納される。
図8は、検索処理回路51の内部構成を示す図である。図8に示すように、検索処理回路51は、検索経路22から入力された検索キーの出力先を2つの読み込みアドレス生成部から選択する選択回路77と、選択回路77の一方の出力先であると共に、選択回路77から出力された検索キーまたはラッチ71からの出力をもとに、内蔵RAM57における読み込み先のアドレスを生成し、読み込み先のアドレスを内蔵RAM57へ送出する読み込みアドレス生成部71と、内蔵RAM57における読み込み先のアドレスのデータを受信し、検索キーと読み込み先のアドレスのデータとの比較を行う読み込みデータ受信部72と、再度、内蔵RAM57へアクセスするときに、読み込みデータ受信部72にて得られた受信データを一時待ち合わせ、この受信データを読み込みアドレス生成部71へ送るラッチ73と、を含んでいる。
さらに、図8に示すように、検索処理回路51は、選択回路77の他方の出力先である読み込みアドレス生成部74と、読み込みアドレス生成部74に接続された読み込みデータ受信部75およびラッチ76と、読み込みデータ受信部72および読み込みデータ受信部75からの検索処理結果が入力され、それを後段の検索処理回路52へ出力する多重化回路78と、を含んでいる。
次に、読み込みアドレス生成部74、読み込みデータ受信部75およびラッチ76について説明する。図7に示すように、いま、内蔵RAM57は運用面にあり、内蔵RAM61は待機面にある。ここで、運用面とは、検索処理回路からの読み込み先のアドレスを受け付け、該当するアドレスのデータを出力する内蔵RAMを指し、待機面とは、検索処理回路からの読み込み先のアドレスが入力されていない内蔵RAMのことを示す。したがって、内蔵RAM61が待機面から運用面になると、選択回路77は検索キーの出力先として読み込みアドレス生成部74を選択し、読み込みアドレス生成部74、読み込みデータ受信部75およびラッチ76の各処理により内蔵RAM61に格納された検索用データベースの検索が行われる。この検索処理は、上述の、読み込みアドレス生成部71、読み込みデータ受信部72およびラッチ73に基づいた検索処理と同様である。選択処理回路77は、通知線66に接続されており、通知線を介して得られたRAM更新回路からの更新通知に応じて、読み込みアドレス生成部の選択を行う。このように本実施の形態においては、検索処理回路51は、読み込みアドレス生成部71、読み込みデータ受信部72、およびラッチ73を有する検索処理回路と、読み込みアドレス生成部74、読み込みデータ受信部75、およびラッチ76を有する検索処理回路との、2系統の検索処理回路を備えている。
図9は、検索処理回路52内部の回路構成を示す図である。図9に示すように、検索処理回路52は、検索処理回路51の検索処理結果が入力され、この入力データをもとに内蔵RAMにおける読み込み先のアドレスを生成し、この読み込み先のアドレスをRAM選択回路54へ送出する読み込みアドレス送信部81と、RAM選択回路54から送られてきた読み込み先のアドレスのデータを受信し、検索キーと読み込み先のアドレスのデータとの比較を行い、検索処理結果を検索処理回路53へ出力する読み込みデータ受信部82と、を含んで構成されている。RAM選択回路54は、運用面にある内蔵RAMを選択するので、図7に示す例では、内蔵RAM58にアクセスして読み込み先のアドレスのデータを取得する。
図10は、検索処理回路53内部の回路構成を示す図である。図10に示すように、検索処理回路53は、検索処理回路52の検索処理結果が入力され、この入力データをもとに内蔵RAMにおける読み込み先のアドレスを生成する読み込みアドレス送信部83と、この読み込みアドレス送信部83から送出された読み込み先のアドレスを、RAM選択回路55またはRAM選択回路56へ送出する選択回路85と、RAM選択回路55またはRAM選択回路56から送られてきたデータを多重化して出力する多重化回路86と、多重化回路86から出力された読み込み先のアドレスのデータを受信し、検索処理結果を検索経路22へ出力する読み込みデータ受信部84と、を含んで構成されている。RAM選択回路55およびRAM選択回路56は、それぞれ運用面にある内蔵RAMを選択するので、図7に示す例では、それぞれ内蔵RAM59および内蔵RAM60にアクセスして読み込み先のアドレスのデータを取得する。
RAM更新回路65は、検索用データベースの更新時に、外部バス23を経由して送られてきたエントリデータを、待機面となっている内蔵RAM群へ書き込む回路である。図7では、待機面は内蔵RAM61、内蔵RAM62、内蔵RAM63、および内蔵RAM64となっている。さらに、RAM更新回路65は、通知線66を介して検索処理回路51、RAM選択回路54、RAM選択回路55、およびRAM選択回路56へエントリ変更を通知する。
なお、本実施の形態においては、図7に記載されているように、2ポートの入出力を備えた内蔵RAMを使用したが、これに限らず、他の入出力の形態を備えた内蔵RAMを使用することもできる。
次に、検索用データベースのデータ構造と、この検索用データベースを、運用面となっている内蔵RAM57、内蔵RAM58、内蔵RAM59、および内蔵RAM60にどのように格納するのかについて説明する。本実施の形態における検索用データベースのデータ構造は、例えば、2分探索木のツリー構造である。図11は、本実施の形態で使用する検索用データベースのデータ構造の一例を示すと共に、エントリデータによって構成されたツリーが内蔵RAM内部でどのように構成されるのかを示す図である。図11に示すように、2分探索の起点となる深さ0におけるエントリデータから深さ4におけるエントリデータまで示されている。なお、エントリデータは黒丸で、エントリデータ間の関係はそれらを相互に接続する直線で示されている。内蔵RAM57では、深さ0から深さ2までのツリー情報が登録され、内蔵RAM58では、深さ3のツリー情報が、内蔵RAM59では、深さ4のツリー情報の内の左半分が、内蔵RAM60では、深さ4のツリー情報の内の右半分が、それぞれ登録されている。
このように、本実施の形態においては、一つの大きなRAMにツリーのデータ構造全体を記憶するのではなく、複数個の小さなRAMにツリーの階層毎に分けて記憶する。特に、前段のRAMには、ツリー構造の起点を含むツリー構造の上段のデータ(すなわち、深さの浅いデータ)を格納し、後段のRAMには、ツリー構造の下段のデータ(すなわち、深さの深いデータ)を順次格納し、後段のRAMに格納するデータの段数を1段とすることにより、前段のRAMに格納するデータの段数である3段より少なくしている。このような構造により、例えば、ツリー最深部のエントリデータのみを変更する場合には、変更データを保持する内蔵RAM(内蔵RAM59および内蔵RAM60)のみを書き換えるだけでよいため、エントリ変更を検索処理に高速に反映することができる。
なお、図9に示すように、検索処理回路52の内部構成は、この検索処理回路52が検索のためにアクセスする内蔵RAM58に格納されたデータの構造(深さ3のツリー情報)に対応して、内蔵RAM58に一回アクセスして検索処理結果を出力するような内部構成となっている。また、検索処理回路53の内部構成も同様であり、検索処理回路53はそれぞれ内蔵RAM59または内蔵RAM56に一回アクセスして検索処理結果を出力するような内部構成となっている。一方、検索処理回路51は、深さ0から深さ2までのデータに対して深さごとに繰り返しアクセスして検索できるように、ラッチ73、74を備え、ラッチ73、74にて検索途中のデータが次にメモリにアクセスするためのタイミングを調整し、ループ処理を行う。
なお、本実施の形態においては、検索用データベースのデータ構造として2分探索木を使用しているが、これに限らず、他のデータ構造を使用した実施の形態を構成することができる。
次に、本実施の形態の動作について説明する。ここで、内蔵RAM57、内蔵RAM58、内蔵RAM59、および内蔵RAM60には、任意のエントリによる検索用データベースが構築されているものとする。
まず、検索用データベースの更新時以外における、検索処理回路51、検索処理回路52、および検索処理回路53の動作について、図7〜図10を参照して説明する。まず、デバイス13には、検索経路22を介して検索キーが入力され、この検索キーは検索処理回路51に入力される。
検索処理回路51に入力された検索キーは、選択回路77により、運用面にある内蔵RAM57にアクセス可能な読み込みアドレス生成部71に送られる。ここで、運用面と待機面との選択情報は、RAM更新回路65から通知線66を介して選択回路77に通知されている。読み込みアドレス生成部71は検索キーの入力を受けて、内蔵RAM57における読み込み先のアドレスを生成し、この読み込み先のアドレスを内蔵RAM57に送る。そして、読み込みデータ受信部72にて、内蔵RAM57から送られてきた読み込み先のアドレスのデータを取得する。読み込みデータ受信部72では、検索キーと取得された読み込み先のアドレスのデータとを比較し、検索キーに相当する検索結果が得られない場合には、さらに内蔵RAM57にアクセスして検索処理を継続する。すなわち、ラッチ73で読み込みデータ受信部72から得られたデータを待ち合わせ、次に、ラッチ73から出力された読み込み先のアドレスのデータをもとに、読み込みアドレス生成部71にて、次の読み込み先のアドレスを生成し、内蔵RAM57へ再度生成した読み込み先のアドレスを送る。そして、内蔵RAM57から送られてきた読み込み先のアドレスのデータを読み込みデータ受信部72にて取得する。このような動作を検索キーと検索対象データベースの構造(RAMに格納されているデータの段数等)に応じて複数回繰り返した後、読み込み先のアドレスのデータを検索処理結果として検索処理回路52へ出力する。図11に示すように、内蔵RAM57には、深さ2までのツリー構造のエントリデータが格納されていることから、検索処理回路51は、一般に、読み込みデータ受信部72にて取得されたデータから読み込み先のアドレスを生成し該当アドレスのデータを読み込む、という操作を2回行う。
図12−1は、図8における選択回路77、読み込みアドレス生成部71、読み込みデータ受信部72、および多重化回路78での処理のタイミングを示すタイミングチャートである。図12−1においては、各ユニットの処理遅延、および内蔵RAMからのリードタイムを1クロックとした場合を示している。ツリーの深さ2までの検索をおこない、ループしたデータと、入力されてくるデータとの衝突を防ぐためには、検索キーを8クロック毎に入力することになる。すなわち、検索処理回路51は、検索キーの入力から多重化回路78にて検索処理結果を得るまでに8クロックを要する。なお、図12−1では、深さ0におけるアドレスの生成、そのアドレスのデータの取得過程は含まれておらず、2分探索木の探索の起点である深さ0におけるエントリデータと検索キーとの比較はアドレスの生成なしに行うことを仮定している。深さ0におけるアドレスの生成、そのアドレスのデータの取得過程を含めてもよいが、その分、検索処理時間が長くなる。
次に、検索処理回路51から出力された検索処理結果は、検索処理回路52へ入力される。検索キーに相当する検索結果が既に得られている場合には、この検索処理結果は検索処理回路53へそのまま送られるが、検索処理の途中である場合には、検索処理回路52による検索処理が行われる。図9に示すように、読み込みアドレス送信部81は検索処理回路51からの出力を受けて、内蔵RAMにおける読み込み先のアドレスを生成し、この読み込み先のアドレスをRAM選択回路54へ送る。RAM選択回路54は、運用面にある内蔵RAM58を選択し、検索処理回路52にて生成された読み込み先のアドレスを内蔵RAM58へ送る。そして、内蔵RAM58から送られてきた読み込み先のアドレスのデータを読み込みデータ受信部82にて取得する。この取得されたデータは、図11における深さ3のエントリデータである。読み込みデータ受信部82にて取得された読み込み先のアドレスのデータは検索キーと比較される。そして、検索処理結果は、検索処理回路53へ送られる。
図12−2は、図9における読み込みアドレス送信部81および読み込みデータ受信部82での処理のタイミングを示すタイミングチャートである。図12−2においては、図12−1と同様に、各ユニットの処理遅延、および内蔵RAMからのリードタイムを1クロックとしている。図12−2に示すように、検索処理回路52における検索処理時間は、読み込みアドレス送信部81にて深さ2での検索処理結果を受けてから読み込みデータ送信部82にて深さ3での検索処理結果を受けるまでの3クロックであり、検索処理回路51のように、検索途中の結果をループせずに、1回のリード処理で検索を終了する。
次に、検索処理回路52から出力された検索処理結果は、検索処理回路53へ入力される。検索キーに相当する検索結果が既に得られている場合には、この検索処理結果は検索経路22を介して出力される。検索処理の途中である場合には、検索処理回路53による検索処理が行われる。図10に示すように、読み込みアドレス送信部83は検索処理回路52からの出力を受けて、内蔵RAMにおける読み込み先のアドレスを生成し、この読み込み先のアドレスを選択回路85へ送る。選択回路85は、読み込み先のアドレスに応じてRAM選択回路55またはRAM選択回路56を選択し、読み込み先のアドレスを送出する。続いて、多重化回路86は、RAM選択回路55またはRAM選択回路56から送られてきた読み込み先のアドレスのデータを、読み込みデータ受信部84へ送り出す処理を行う。読み込みデータ受信部84にて取得されたデータは、検索処理結果として検索経路22を介して出力される。ここで、選択回路85がRAM選択回路55を選択した場合には、RAM選択回路55は運用面にある内蔵RAM59にアクセスし、図11に示す深さ4のツリーの左半分を検索する。また、選択回路85がRAM選択回路56を選択した場合には、RAM選択回路56は運用面にある内蔵RAM60にアクセスし、図11に示す深さ4のツリーの右半分を検索する。
図12−3は、図10における読み込みアドレス送信部83、選択回路85、検索回路からRAMへの経路におけるRAM選択回路55またはRAM選択回路56、RAMから検索回路への経路におけるRAM選択回路55またはRAM選択回路56、多重化回路86、および読み込みデータ受信84での処理のタイミングを示すタイミングチャートである。図12−3においては、図12−1と同様に、各ユニットの処理遅延、および内蔵RAMからのリードタイムを1クロックとしている。図12−3に示すように、検索処理回路53における検索処理時間は、読み込みアドレス生成部83にて深さ3での検索処理結果を受けてから読み込みデータ送信部84にて深さ4での検索処理結果を受けるまでの7クロックであり、検索処理回路51のように、検索途中の結果をループせずに、1回のリード処理で検索を終了する。また、読み込みアドレス生成部83には、深さ3での検索処理結果が8クロックごとに入力されている。これは、検索処理回路53には、前段からの検索処理結果が8クロックごとにパイプライン的に入力されるからである。
次に、検索動作中における検索用データベースの更新方法について説明する。検索用データベースの更新時には、制御PC8からエントリが変更された新データベースのデータが制御リンク9を介してルータ1に送られる。コントローラ15は、制御PC8から送られてきた新データベースのデータを、制御リンク9上でのデータフォーマットから外部バス23上でのデータフォーマットに変換する。続いて、データフォーマットが変換された新データベースは、外部バス接続線24を介して外部メモリ14へ送られ、保持される。
次に、制御PC8からルータ1内のデバイス13に検索用データベースの更新指示が送られると、外部バス接続線24を介してRAM更新回路65に対して更新指示が送られる。RAM更新回路65は、更新指示を受けて、待機面となっている内蔵RAM61、内蔵RAM62、内蔵RAM63、および内蔵RAM64に対して、外部メモリ14に保持されている新データベースを書き込み、新データベースの書き込みが終了すると、検索処理回路51、RAM選択回路54、RAM選択回路55、およびRAM選択回路56に通知線66を介して運用面の変更を指示する。
運用面の変更が起きると、まず、検索処理回路51が検索に使用していた内蔵RAM57を内蔵RAM61へ変更するため、選択回路77において検索キーが入力されていない時間に、検索経路22から入力される検索キーの出力先を、読み込みアドレス生成部71から読み込みアドレス生成部74へ変更する。このように、検索処理回路51では、選択回路77により選択される2系統の検索処理回路を利用して、検索に使用する内蔵RAMの切り替えが行われる。
なお、検索キーが1クロック分以上のビット幅を持つ場合、選択回路77による内蔵RAMの変更のタイミングは、検索キーが途中で切れて読み込みアドレス生成部71、または読み込みアドレス生成部74に送られないように、一続きの検索キーから次の検索キーへと検索キーの入力が途切れる間となる。
次に、検索処理回路52では、図12−2に示すように、8クロックごとに深さ2での検索処理結果が入力されるので、検索処理回路51にて検索処理を行う内蔵RAMを切り替え後、新データベースによる検索処理結果が検索処理回路52に入力されるまでの間(7クロックの間)に、RAM選択回路54において読み込み先のアドレスの出力先を内蔵RAM58から内蔵RAM62へ変更し、新データベースによる検索をおこなう。このとき、内蔵RAMの切り替えによるデータベースの更新は、検索処理回路51と検索処理回路52の処理能力の速度差、言い換えると、単位時間あたりの検索処理回数の差、を利用して行っている。つまり、検索処理回路51では、検索途中の結果をループし同じ内蔵RAMにリードすることにより検索を行うのに対し、検索処理回路52では、検索処理の途中結果をループせずに、1回のリード処理で検索を終了しているため、検索処理回路52の検索処理能力の速度は、検索処理回路51の検索処理能力の速度を上回る。このような検索処理能力の速度差が存在すれば、前段の検索処理回路51から次のデータが入力されるまでの8クロックの間に、後段の検索処理回路52では検索処理を行うと共に、内蔵RAMの運用面と待機面との切り替えを行うことができる。図12−2に示すように、検索処理回路52における内蔵RAMの切り替えは、検索処理回路52が内蔵RAM58にアクセスして検索を行っている時間を除いて可能となっている。なお、図12−2では、メモリの切り替えが可能なメモリ切替可能時間を斜線で示している。
同様に、検索処理回路53では、検索処理回路51、検索処理回路52と順番に内蔵RAMを切り替え後、新データベースによる検索結果が検索処理回路53に入力されるまでの間(7クロックの間)に、RAM選択回路55およびRAM選択回路56において、読み込み先のアドレスの出力先を内蔵RAM59および内蔵RAM60から内蔵RAM63および内蔵RAM64へ変更し、次の更新指示があるまで、新データベースによる検索処理を行い続ける。このときも同様に、内蔵RAMの切り替えによるデータベースの更新は、検索処理回路51と検索処理回路53の処理能力の速度差を利用して行っている。すなわち、検索処理回路51では、検索途中の結果をループし同じ内蔵RAMにリードすることにより検索を行うのに対し、検索処理回路53では、検索処理の途中結果をループせずに、1回のリード処理で検索を終了しているため、検索処理回路53の検索処理能力の速度は、検索処理回路51の検索処理能力の速度を上回る。図12−3に示すように、検索処理回路53における内蔵RAMの切り替えは、検索処理回路53が内蔵RAM59または内蔵RAM60にアクセスして検索を行っている時間を除いて可能となっている。図12−3では、メモリの切り替えが可能なメモリ切替可能時間を斜線で示している。
本実施の形態によれば、前段と後段の検索処理回路の処理能力の速度差を利用し、前段の検索処理回路を上回る処理速度を有する後段の検索処理回路により、検索途中のデータが前段の検索処理回路から後段の検索処理回路へ入力されない時間を利用して新しいエントリ情報を有するメモリへ切り替えることにより、検索動作中であっても検索動作を停止せずに検索用データベースのエントリを更新することができる。
また、本実施の形態においては、検索用データベースのツリー構造を深さ毎に区切って複数個の内蔵RAM内に保持しているため、例えば、ツリー最深部のエントリデータのみを変更する場合には、その最深部のデータを保持する内蔵RAMのみを更新すればよく、エントリ更新を検索処理に高速に反映することができる。図13は、検索用データベースのツリーの最深部のみにエントリ更新がある場合を示す図であり、深さ4におけるエントリデータが更新される場合を示している。前述のように、この場合には深さ4におけるエントリデータを保持する内蔵RAM59および内蔵RAM60の内容を更新するだけでよいので、更新されたエントリを待機面にある内蔵RAM63および内蔵RAM64に書き込み、RAM選択回路55およびRAM選択回路56により、これらの待機面にある内蔵RAMを運用面に変更すればよい。なお、検索用データベースのデータ構造に基づいて内蔵RAMの一部のみを更新するなどの判断は、外部の制御PC8を介して行う。
また、本実施の形態においては、後段の検索処理回路の個数を2個とする例を示したが、これは図11に示すデータ構造を例に説明を行ったからであり、検索用データベースの構造と量に応じて、後段の検索処理回路を、適宜、任意個数設定することができ、また、これに応じて、内蔵RAMおよびRAM選択回路も適宜設定することができる。
また、本実施の形態においては、後段の検索処理回路である検索処理回路52および検索処理回路53がそれぞれ運用面にある内蔵RAMにアクセスして検索を行う回数を1回としたが、これに限定されず、前段の検索処理回路である検索処理回路51が運用面にある内蔵RAMにアクセスして検索を行う回数よりも少なければ、任意の回数としてもよい。すなわち、この条件を満たせば、本実施の形態の効果を得ることができる。なお、この場合には、後段の検索処理回路の内部構造、後段の検索処理回路が検索のためにアクセスする内蔵RAMに格納されているデータ構造等は、アクセスの回数に依存して適宜設定される。
実施の形態2.
本発明にかかる検索装置およびデータ処理装置の実施の形態2について説明する。本実施の形態を利用したネットワーク構成例は、例えば、図1に示す実施の形態1におけるネットワーク構成と同様である。
図14は、本実施の形態にかかるデータ処理装置としてのルータ1の内部構成を示す図である。図14に示すルータ1の内部構成と、図2に示す実施の形態1におけるルータ1の内部構成との違いは、図2におけるデバイス13が、図14ではデバイス73で置き換えられている点である。図14におけるその他の構成は、図2における構成と同様である。そのため、図14においては、図2と同一の構成物には同一の符号を付して、その詳細な説明を省略する。次に、図2との違いである検索装置としてのデバイス73の内部構成について述べる。
図15は、図14におけるデバイス73の内部構成を示す図である。図15に示すように、デバイス73は、RAM更新回路112と、検索キー分離回路101と、前段の検索処理回路である検索処理回路102および検索処理回路103と、検索処理回路102および検索処理回路103からの出力が多重化される検索キー多重化回路104と、後段の検索処理回路である検索処理回路105と、同じく後段の検索処理回路であると共に、検索処理回路105からの検索処理結果が入力される検索処理回路106と、RAM選択回路107、RAM選択回路108、およびRAM選択回路109と、運用面にある、内蔵RAM57および内蔵RAM121、内蔵RAM58および内蔵RAM122、内蔵RAM59および内蔵RAM123、ならびに内蔵RAM60および内蔵RAM124と、待機面にある、内蔵RAM61および内蔵RAM131、内蔵RAM62および内蔵RAM132、内蔵RAM63および内蔵RAM133、ならびに内蔵RAM64および内蔵RAM134と、RAM更新回路112から検索処理回路102および検索処理回路103に接続された通知線112と、を含んで構成される。次に、各構成要素の内部構成および動作について述べる。
なお、本実施の形態においては、以下に説明するように、同時に2つの異なる検索キーを扱う例について述べるが、検索キーの個数は2つに限定されることはなく、同時に3つ以上の異なる検索キーを扱う実施の形態を実現することができる。
検索キー分離回路101には検索経路22から検索キーが入力される。検索キー分離回路101は、後述する検索キーを2つに分離し、分離した検索キーの一方を検索処理回路102へ、他方を検索処理回路103へ送り出す回路である。このため、検索処理回路102および検索処理回路103は、検索キー分離回路101の後段に並列して設けられている。
図16は、検索経路22から検索キー分離回路101へ入力される検索キーのフォーマットの一例を示す図であり、検索キー600は検索キー601および検索キー602含んで構成されている。検索キー分離回路101は、検索キー610を検索キー601と検索キー602とに分離する。
なお、本実施の形態においては、検索キー601を検索処理回路102へ、検索キー602を検索処理回路103へ送るという前提で説明を続けるが、この前提は本発明を限定するものではなく、検索キーの送り先を相互に入れ替えてもよい。
図17は、検索処理回路102内部の回路構成を示す図である。図17に示すように、検索キー分離回路101から入力された検索キー601は、選択回路130にて読み込みアドレス生成部71へ送り出される。このとき、読み込みアドレス生成部71は運用面にある内蔵RAM57へ接続され、一方、読み込みアドレス生成部74は待機面にある内蔵RAM61へ接続されている。読み込みアドレス生成部71では、入力された検索キー601をもとに、内蔵RAM57における読み込み先のアドレスを生成して、内蔵RAM57へ読み込み先のアドレスを送り、内蔵RAM57から送られてきた読み込み先のアドレスのデータを読み込みデータ受信部72にて取得する。
読み込みデータ受信部72では、取得された読み込み先のアドレスのデータと検索キー601とを比較し、検索キー601に相当する検索結果が得られない場合には、さらに内蔵RAM57にアクセスして検索処理を継続する。すなわち、ラッチ73で読み込みデータ受信部72からのデータを待ち合わせ、次に、ラッチ73から出力された読み込み先のアドレスのデータをもとに、読み込みアドレス生成部71にて、次の読み込み先のアドレスを生成し、内蔵RAM57へ再度生成した読み込み先のアドレスを送る。そして、内蔵RAM57から送られてきた読み込み先のアドレスのデータを読み込みデータ受信部72にて取得する。このような動作を任意回数繰り返した後、読み込み先のアドレスのデータを多重化回路131へ渡して多重化し、通知線111を介して送られてきた検索対象となる内蔵RAMを指定する指定情報(この場合は、内蔵RAM57を指定する指定情報)を付加して、後段の検索キー多重化回路104へ出力する。
検索キー多重化回路104は、検索処理回路102および検索処理回路103から送られてきた検索処理結果を検索処理回路105へ送り出す処理を行う。ここで、検索処理回路103による検索処理も検索処理回路102と同様に行われるが、検索処理回路103が検索対象とする運用面の内蔵RAMは、内蔵RAM121である。
図18は、検索処理回路105内部の回路構成を示す図である。図18に示すように、検索キー多重化回路104から出力された検索処理結果は、検索処理回路105へ入力され、検索途中である場合には、読み込みアドレス送信部141にて読み込み先のアドレスを生成し、検索処理回路102および検索処理回路103で付加された検索対象となる内蔵RAMを指定する指定情報と共に、生成された読み込み先のアドレスをRAM選択回路107へ送る。そして、RAM選択回路107から送られてきた読み込み先のアドレスのデータを読み込みデータ受信部142にて取得し、得られた検索処理結果を検索処理回路106へ出力する。
RAM選択回路107では、検索処理回路105から送られてきた検索対象となる内蔵RAMを指定する指定情報をもとに、検索キー601による検索中のデータ(読み込み先のアドレス)に対しては内蔵RAM58を、検索キー602による検索中のデータ(読み込み先のアドレス)に対しては内蔵RAM122をそれぞれ選択し、各検索中のデータをそれぞれ選択された内蔵RAMへ送り、各内蔵RAMから該当アドレスのデータを読み出し、その結果を検索処理回路105へ出力する。
図19は、検索処理回路106内部の回路構成を示す図である。図19に示すように、検索処理回路105から出力された検索処理結果は、検索処理回路106へ入力され、検索処理結果が検索途中である場合には、読み込みアドレス送信部151にて読み込み先のアドレスを生成し、検索対象となる内蔵RAMを指定する指定情報と共にこの読み込み先のアドレスを選択回路153へ送る。選択回路153では、読み込み先のアドレスに応じてRAM選択回路108またはRAM選択回路109を選択する。例えば、RAM選択回路108が選択された場合には、RAM選択回路108は運用面となっている内蔵RAMを選択し、さらに、検索対象となる内蔵RAMを指定する指定情報に基づいて、読み込み先のアドレスを内蔵RAM59または内蔵RAM123へ送る。検索キー601による検索中のデータ(読み込み先のアドレス)に対しては内蔵RAM59が、検索キー602による検索中のデータ(読み込み先のアドレス)に対しては内蔵RAM123が選択される。同様に、RAM選択回路109が選択された場合には、RAM選択回路109は運用面となっている内蔵RAMを選択し、さらに、検索対象となる内蔵RAMを指定する指定情報に基づいて、読み込み先のアドレスを内蔵RAM60または内蔵RAM124へ送る。検索キー601による検索中のデータ(読み込み先のアドレス)に対しては内蔵RAM60が、検索キー602による検索中のデータ(読み込み先のアドレス)に対しては内蔵RAM124が選択される。続いて、読み込み先のアドレスのデータはRAM選択回路108またはRAM選択回路109を経て多重化回路154へ送られ、さらに、多重化回路154から読み込みデータ受信部152へ送られる。読み込みデータ受信部152にて取得されたデータは、検索処理結果として検索経路22を介してデバイス73から出力される。
RAM更新回路112は、検索用データベースの更新時に、外部バス23を経由して送られてきたエントリデータを、待機面となっている内蔵RAM群へ書き込む回路である。図15では、待機面を、内蔵RAM61、内蔵RAM62、内蔵RAM63、内蔵RAM64、内蔵RAM132、内蔵RAM132、内蔵RAM133、および内蔵RAM134としている。さらに、RAM更新回路112は、エントリデータの更新指示を、通知線111を使って検索処理回路102および検索処理回路103へ通知する。
図20は、エントリデータによって構成されたツリーが各内蔵RAMの内部でどのように構成されるかを示した図である。図20に示すように、本実施の形態ではテーブル201とテーブル202からなる2つのテーブルを使用している。テーブル201では、内蔵RAM57に深さ0から深さ2までのツリー情報が登録されており、内蔵RAM58に深さ3のツリー情報が、内蔵RAM59に深さ4のツリー情報の左半分が、内蔵RAM60に深さ4のツリー情報の右半分が登録されている。テーブル202では、内蔵RAM121に深さ0から深さ2までのツリー情報が登録されており、内蔵RAM122に深さ3のツリー情報が、内蔵RAM123に深さ4のツリー情報の左半分が、内蔵RAM124に深さ4のツリー情報の右半分が登録されている。
本実施の形態における検索動作中の検索用データベースの更新方法は、実施の形態1と同様である。すなわち、本実施の形態においても、前段の検索処理回路では、検索途中の結果をループし、そのため、毎クロック検索結果が出力されない。一方、後段の検索処理回路では、内蔵RAMへ1回のリード処理で検索が終了する。そして、前段と後段の検索処理回路の処理能力の速度差を利用し、後段の検索処理回路に入力する検索途中のデータが毎クロックではないことを利用して、その間隙に後段の検索処理回路がアクセスする内蔵RAMの切り替えを行い、データベースの更新を行う。
本実施の形態によれば、検索動作中であっても検索処理を停止せずに、検索用データベースのエントリの更新ができる。また、検索用データベースのツリー構造を深さ毎に区切って内蔵RAM内に保持しているため、例えば、ツリー最深部のエントリデータのみを変更する場合においては、その最深部のデータを保持する内蔵RAMのみを更新すればよく、エントリ更新を検索処理に高速に反映することができる。また、本実施の形態では、入力される検索キーが2つの分離可能な検索キーを含むことから、前段の検索処理回路が検索対象とする内蔵RAMを同じ内容のデータが保持された2つの内蔵RAMとし、後段の検索処理回路が検索対象とする内蔵RAMを同じ内容のデータが保持された2つの内蔵RAMとすることで、分離された2つの検索キーに対する検索処理を、前段および後段における2つの内蔵RAMに分散して行っている。このように、2つの異なる検索キーに対して、実施の形態1で使用するテーブル検索処理機能に加えて、もう一つのテーブル検索処理機能を付加して並列度を上げることで、検索処理速度を上げつつ、高速なエントリ更新機能を実現できる。
また、後段に配置された内蔵RAMに使用されていないものがあるときに、それを他の検索テーブル用に割り当てることにより、資源を有効利用して検索処理の高速化を実現することができる。