(57)【要約】【課題】検索用データベースのエントリ更新時においても検索処理を停止することなく検索処理の継続が可能な検索装置およびデータ処理装置を得ること。【解決手段】検索処理装置であるデバイス１３は、前段の検索処理回路である検索処理回路５１と、後段の検索処理回路である検索処理回路５２、５３とを備える。検索用デースは運用面にある内蔵ＲＡＭ５７、５８、５９、６０に分割して格納されている。検索用データベースの更新時には、待機面にある内蔵ＲＡＭ６１、６２、６３、６４に更新データを書き込み、待機面と運用面を切り替える。このとき、後段の検索処理回路においては、後段の検索処理回路の処理能力を前段の検索処理回路を上回るようにすることにより、検索途中のデータが前段の検索処理回路から後段の検索処理回路へ入力されない時間を利用して、運用面と待機面との切り替えを行う。【選択図】        図７
2008165616.tif 000002
【特許請求の範囲】
【請求項１】
検索キーを入力としメモリ内に格納された検索用データベースを検索して検索結果を出力する検索装置であって、
前記検索キーが入力される前段の検索処理回路と、
この前段の検索処理回路の後段に設けられ、前記前段の検索処理回路の検索処理結果に基づいて、順次、検索処理を行う１または複数の後段の検索処理回路と、
前記前段の検索処理回路が検索を行うための前記検索用データベースの一部が格納され、前記前段の検索処理回路に対応して設けられた前段の運用メモリと、
この前段の運用メモリと対になって設けられ、前記検索用データベースの更新時まで、待機を行う前段の待機メモリと、
前記検索用データベースの残部が全体として格納されるように、前記各後段の検索処理回路が検索を行うためのデータがそれぞれ格納され、前記各後段の検索処理回路にそれぞれ対応して設けられた後段の運用メモリと、
前記各後段の運用メモリと対になって設けられ、前記検索用データベースの更新時まで、待機を行う後段の待機メモリと、
前記検索用データベースの更新時に、更新後の検索用データベースを書き込むことにより前記前段および前記各後段の待機メモリの内容を更新するメモリ更新回路と、
前記メモリ更新回路からの更新通知に基づいて、前記前段の検索処理回路が検索をするメモリを前記前段の運用メモリから前記前段の待機メモリへと切り替える前段の選択回路と、
前記メモリ更新回路からの更新通知に基づいて、前記各後段の検索処理回路が検索をするメモリを前記各後段の運用メモリからそれと対になる前記各後段の待機メモリへと切り替える後段の選択回路と、
を備え、
前記前段の検索処理回路が検索処理に要する検索処理時間は、前記各後段の検索処理回路が検索処理に要する検索処理時間よりも長いことを特徴とする検索装置。
【請求項２】
前記前段の検索処理回路は、前記前段の運用メモリに対して複数回アクセスすることにより検索処理を行い、前記各後段の検索処理回路は、対応する前記各後段の運用メモリに対して、前記前段の検索処理回路のアクセス回数よりも少ない回数アクセスすることにより検索処理を行うことを特徴とする請求項１に記載の検索装置。
【請求項３】
前記各後段の選択回路による前記各後段の運用メモリから前記各後段の待機メモリへのメモリの切り替えは、前記前段の検索処理回路からの検索処理結果が前記各後段の検索処理回路へ入力されるまでの時間のうち、前記各後段の検索処理回路が前記各後段の運用メモリへアクセスしている時間を除いた時間を利用して行われることを特徴とする請求項２に記載の検索装置。
【請求項４】
前記前段の検索処理回路には、少なくとも所定の時間間隔を隔てて検索キーが入力され、前記所定の時間間隔は、前記前段の検索処理回路に既に入力した検索キーに対する検索途中のデータと次に入力する検索キーとが前記前段の検索処理回路の内部で衝突しないように間隔を隔てるものであることを特徴とする請求項２または３に記載の検索装置。
【請求項５】
前記後段の運用メモリはその格納データが分割して割り当てられた複数のメモリから構成され、前記後段の待機メモリは前記後段の運用メモリと同数のメモリから構成され、前記後段の運用メモリを構成する各メモリと前記後段の待機メモリを構成する各メモリとが対をなしていることを特徴とする請求項１〜４のいずれか１つに記載の検索装置。
【請求項６】
前記前段の選択回路は、前記前段の検索処理装置の内部に設けられていることを特徴とする請求項１〜５のいずれか１つに記載の検索装置。
【請求項７】
前記前段の検索処理回路は、前記前段の運用メモリにアクセス可能な第１の内部検索処理回路と、前記前段の待機メモリにアクセス可能な第２の内部検索処理回路と、を備え、前記検索用データベースの更新通知に基づいて、前記検索キーの送り先を前記第１の内部検索処理回路から前記第２の検索処理回路へと切り替えることにより、前記前段の検索処理回路が検索をするメモリを前記前段の運用メモリから前記前段の待機メモリへと切り替えることを特徴とする請求項１〜６のいずれか１つに記載の検索装置。
【請求項８】
前記検索用データベースのデータ構造はツリー構造であり、前記前段の運用メモリは、前記ツリー構造の起点を含む前記ツリー構造の上段のデータを格納し、前記各後段の運用メモリは、前記前段の運用メモリが格納するデータ以外の、前記ツリー構造の下段のデータを格納し、前記前段の運用メモリが格納する前記上段のデータの段数は、前記後段の運用メモリが格納する前記下段のデータの段数よりも多いことを特徴とする請求項１〜７のいずれか１つに記載の検索装置。
【請求項９】
相互に異なる複数の検索キーを含んで構成される前記入力される検索キーに対して、前記入力される検索キーをその構成要素である複数の検索キーに分離する検索キー分離回路を備え、前記前段の運用メモリおよび前記前段の待機メモリは、それぞれ、同一の検索用データが格納された前記分離される検索キーの個数と同数のメモリから構成され、前記各後段の運用メモリおよび前記各後段の待機メモリは、それぞれ、同一の検索用データが格納された前記分離される検索キーの個数と同数のメモリから構成され、前記前段の検索処理回路は、前記検索キー分離回路により分離された複数の検索キーに対する検索を、前記前段の運用メモリを構成する複数のメモリに分散して並列に行い、前記分離された各検索キーに対する検索処理結果に検索対象となるメモリを識別する識別情報を付加し、前記各後段の検索処理回路は、前記前段の検索処理回路からの検索処理結果に対して、前記検索処理結果に付加された前記識別情報に基づいて、前記各後段の運用メモリを構成するメモリから検索対象となるメモリを選択して検索を行うことを特徴とする請求項１〜８のいずれか１つに記載の検索装置。
【請求項１０】
請求項１〜９のいずれか１つに記載の検索装置を備えたデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検索用データベースの更新時に検索処理を中断することなく、検索の継続が可能な検索装置およびこの検索装置を備えたデータ処理装置に関するものである。
【背景技術】
【０００２】
通信分野においては、パケットのルーティングおよびパケット内の悪意あるコードの検出、また、情報分析分野においては、大量のデータの中からのパターン検出など、検索処理は、幅広い分野において多様な場面で利用されている。特に、近時の情報通信分野全般におけるデータ量の増大および処理の高度化に伴い、検索処理には、高速性、多機能性、さらにインテリジェンス性を備えた処理が求められ、これらの処理をオンデマンドでかつ動的に行うことが求められてきている。
【０００３】
例えば、特許文献１では、半導体メモリを使用して２分探索を実現する半導体集積回路が開示されており、メモリに格納された有効検索対象データの数の減少に応じて、２分探索を開始する半導体メモリ上のアドレスを適切に決定する手段を設けることにより、探索に要する処理サイクル数を減少させ、高速な検索処理を実現している。
【０００４】
また、非特許文献１では、バイナリ検索テーブルを使用したバイナリ検索を例に、テーブルで使用されるデータ構造によっては、検索時にテーブルの更新の実行が困難になることを指摘している。例えば、テーブルにおける項目の追加または削除を行う際には、テーブル全体を並べ直す処理が必要となり、このようなテーブルの更新時には、項目が移動したり変更されたりしているので、テーブルを使った検索の実行が困難になる。そして、その回避方法として、２つの方法を提案している。すなわち、第１の方法は、検索処理が少ない期間まで更新処理を延期し、テーブルの更新処理を行っている間は検索を停止する方法である。また、第２の方法は、２つのテーブルを用意し、一方のテーブルを検索用に使い、他方を更新用としてバックグランドでテーブルの更新を行う。そして、テーブルの更新が完了したら２つのテーブルを交換する方法である。
【０００５】
【特許文献１】特開２０００−２５０７３７号公報
【非特許文献１】Rich  Seifert著、間宮あきら訳「ＬＡＮスイッチング徹底解説」日経ＢＰ社発行、２００１年８月６日、Ｐ８３−８４
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載の従来技術によれば、検索用データベースのエントリ更新時において、検索データの入力を一旦停止する必要がある。そのため、エントリ更新時には、ノン・ストップな検索処理を実現できないという問題があった。
【０００７】
また、非特許文献１に記載の従来技術によれば、テーブルの更新処理を行う際に検索処理を停止する必要がある（上記第１の方法を参照）。そのため、突然、検索パフォーマンスが低下するという問題があった。また、２つのテーブルを用意する上記第２の方法では、テーブルにて使用されるデータ構造が２分探索木のようなツリー構造である場合に、検索処理中にテーブルを交換すると、それまで旧テーブルのツリー構造に基づいて検索を行った検索中のデータは、突然、新テーブルのツリー構造に適用されることになり、誤った検索結果が返ってくる。このように、検索中に、旧テーブル情報で検索中のデータを新テーブル情報では引き継げないという問題があった。
【０００８】
本発明は、上記に鑑みてなされたものであって、検索用データベースのエントリ更新時においても検索処理を停止することなく検索処理の継続が可能な検索装置およびデータ処理装置を得ることを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、本発明にかかる検索処理装置は、検索キーを入力としメモリ内に格納された検索用データベースを検索して検索結果を出力する検索装置であって、前記検索キーが入力される前段の検索処理回路と、この前段の検索処理回路の後段に設けられ、前記前段の検索処理回路の検索処理結果に基づいて、順次、検索処理を行う１または複数の後段の検索処理回路と、前記前段の検索処理回路が検索を行うための前記検索用データベースの一部が格納され、前記前段の検索処理回路に対応して設けられた前段の運用メモリと、この前段の運用メモリと対になって設けられ、前記検索用データベースの更新時まで待機を行う前段の待機メモリと、前記検索用データベースの残部が全体として格納されるように、前記各後段の検索処理回路が検索を行うためのデータがそれぞれ格納され、前記各後段の検索処理回路にそれぞれ対応して設けられた後段の運用メモリと、前記各後段の運用メモリと対になって設けられ、前記検索用データベースの更新時まで待機を行う後段の待機メモリと、前記検索用データベースの更新時に、更新後の検索用データベースを書き込むことにより前記前段および前記各後段の待機メモリの内容を更新するメモリ更新回路と、前記メモリ更新回路からの更新通知に基づいて、前記前段の検索処理回路が検索をするメモリを前記前段の運用メモリから前記前段の待機メモリへと切り替える前段の選択回路と、前記メモリ更新回路からの更新通知に基づいて、前記各後段の検索処理回路が検索をするメモリを前記各後段の運用メモリからそれと対になる前記各後段の待機メモリへと切り替える後段の選択回路と、を備え、前記前段の検索処理回路が検索処理に要する検索処理時間は、前記各後段の検索処理回路が検索処理に要する検索処理時間よりも長いことを特徴とする。
【発明の効果】
【００１０】
本発明によれば、前段の検索処理回路が検索処理に要する検索処理時間を、後段の検索処理回路が検索処理に要する検索処理時間よりも長くするように構成したので、検索用データベースの更新通知に基づいて、前段の検索処理回路が検索するメモリを前段の運用メモリから前段の待機メモリへと切り替え、さらに、前段の検索処理回路から検索途中のデータが後段の検索処理回路へ入力されない時間を利用して、後段の検索処理回路が検索するメモリを後段の運用メモリから後段の待機メモリへと切り替えることにより、検索動作中であっても検索動作を停止せずに、検索用データベースの更新をすることができる。
【発明を実施するための最良の形態】
【００１１】
以下に、本発明にかかる検索装置およびデータ処理装置の実施の形態を図面に基づいて詳細に説明する。なお、以下に示す実施の形態によりこの発明が限定されるものではない。
【００１２】
実施の形態１．
図１は、本発明にかかる検索装置の実施の形態１を利用したネットワーク構成を示す図である。なお、本実施の形態では、データ処理装置としてのルータと、ルータに実装される検索装置を例として説明しているが、本発明の適用分野は通信分野に限定されるものではない。
【００１３】
図１に示すように、本実施の形態のネットワークは、ルータ１、ＰＣ（Personal Computer）端末２、インターネット３、サーバー群４、アクセスポイント５、無線端末６、イントラネット７、制御ＰＣ８、制御リンク９、およびリンク１０から構成されている。ルータ１は、インターネット３、イントラネット７、およびサーバー群４とそれぞれリンク１０により接続されており、ネットワーク間のパケットの転送などを行う。アクセスポイント５は、リンク１０を介してインターネット３、またはイントラネット７に接続されている。ＰＣ端末２はリンク１０を介して、また、無線端末６はアクセスポイント５を介して、それぞれ端末間の相互通信を行う。また、制御ＰＣ８は制御リンク９を介してルータ１に接続されており、ルータ１に対してデータベース更新用のデータ送信などを行う。
【００１４】
図２は、図１で示したルータ１の機能構成例を示す図である。図２に示すように、ルータ１は、送受信ユニット１１、転送ユニット１２、デバイス１３、外部メモリ１４、およびコントローラ１５を含んで構成される。送受信ユニット１１と転送ユニット１２とは転送経路２１で、また、転送ユニット１２とデバイス１３とは検索経路２２で接続されており、デバイス１３、外部メモリ１４、およびコントローラ１５は、それぞれ外部バス接続線２４を介して外部バス２３に接続されている。
【００１５】
次に、各構成要素の機能について述べる。送受信ユニット１１は、インターネット３、サーバー群４、およびイントラネット７にそれぞれリンク１０を介して接続されている。図３は、Ethernet（登録商標）フレームのフォーマットを示す図である。送受信ユニット１１は、リンク１０から受信した図３に示すEthernet（登録商標）フレーム２５からＭＡＣ（Media  Access  Control）ヘッダ２６とＦＣＳ（FＲＡＭe  Check  Sequence）２８を取り除いたＩＰｖ４（Internet Protocol Version 4）パケット２７を転送ユニット１２に転送し、また、転送ユニット１２から送られたＩＰｖ４パケット２７に、ＭＡＣヘッダ２６とＦＣＳ２８を付加してリンク１０に送信する。
【００１６】
転送ユニット１２は、受信したフレームから、そのフレームの転送に必要なルーティング情報を得るための検索処理に必要なデータ（以下、検索キーという）を抽出し、検索経路２２を介してデバイス１３へ検索キーを送る。また、デバイス１３から検索経路２２を介して検索結果（ルーティング情報）を受け取り、その検索結果に基づき、上記の受信したフレームを、転送経路２１を介して送受信ユニット１１へ転送する。
【００１７】
本実施の形態においては、転送ユニット１２で抽出され、検索キーが抽出されるヘッダ情報には、ネットワーク層のヘッダに含まれる宛先・送信元アドレス、プロトコル、トータル長、識別子、フラグ、およびフラグメントオフセットと、トランスポート層のヘッダに含まれる宛先・送信元ポート番号、およびシーケンス番号（但し、ＴＣＰの場合のみ）と、が含まれる。以下、図３〜６を用いて検索キーについて説明する。
【００１８】
なお、以下の例では、ネットワーク層で使用するプロトコルをＩＰｖ４とし、また、トランスポート層で使用するプロトコルをＴＣＰ（Transmission Control Protocol）またはＵＤＰ（User Datagram Protocol）として説明するが、これに限定されることなく、例えば、ネットワーク層で使用するプロトコルをＩＰｖ６（Internet Protocol Version 6）とし、また、トランスポート層で使用するプロトコルをＲＤＰ（Remote Desktop Protocol）としてもよい。
【００１９】
図３に示すように、ＩＰｖ４ヘッダ２９、ＴＣＰヘッダ３０、およびＵＤＰヘッダ３１は、Ethernet（登録商標）フレーム２５にカプセル化されている。
【００２０】
図４は、ネットワーク層のヘッダであるＩＰｖ４ヘッダのフォーマットを示す図である。ＩＰｖ４ヘッダの先頭から３バイト目にＴＯＳ（Type of Service）フィールド３２、４バイト目にトータル長（Total  Length）３３、５バイト目に識別子（Identification）３４、７バイト目のうち上位３ビットがフラグ（Flag）３５であり、７バイト目の下位５ビットと８バイト目がフラグメントオフセット（Fragment  Offset）３６、１０バイト目にプロトコル（Protocol）３７、１３バイト目に送信元ＩＰアドレス（Source  Address）３８、１７バイト目に宛先ＩＰアドレス（Destination  Address）３９が位置している。
【００２１】
図５は、トランスポート層のヘッダであるＴＣＰヘッダのフォーマットを示す図である。ＴＣＰヘッダの先頭から１バイト目に送信元ポート番号（Source  Port）４０、３バイト目に宛先ポート番号（Destination  Port）４１、５バイト目にシーケンス番号（Sequence  Number）４２、９バイト目に確認応答番号（Acknowledgement  Number）４３が位置している。
【００２２】
図６は、トランスポート層のヘッダであるＵＤＰヘッダのフォーマットを示す図である。ＵＤＰヘッダの１バイト目に送信元ポート番号（Source  Port）４４、３バイト目に宛先ポート番号（Destination  Port）４５が位置している。
【００２３】
なお、本実施の形態では、パケットのトレーラーとしてEthernet（登録商標）フレームを用いた場合について説明したが、これに限定されるものではない。例えば、ＡＴＭ（Asynchronous  Transfer  Mode）またはＦＤＤＩ（Fiber-Distributed  Data  Interface）などを用いた場合にも同様に実施できる。
【００２４】
また、上記の検索キーの項目は一例であり、ルーティング情報を検索できる情報ではあれば、これに限らない。検索方法およびプロトコルによっては、上記の検索キー情報の項目の一部を用いない場合もあり、また、上記以外の項目（例えば、フローを識別するフィールドであるＶＬＡＮ（Virtual Local Area Network）ＩＤ等）が含まれることもある。
【００２５】
デバイス１３は、外部メモリ１４に記憶されたデータベースを外部バス２３および外部バス接続線２４を介して取得し、検索経路２２から送出された検索キーをもとに、データベースに対して検索処理を行い、検索結果としてルーティング情報を得る。そして、デバイス１３は、検索結果を、検索経路２２を介して転送ユニット１２に通知する。
【００２６】
外部メモリ１４は、制御ＰＣ８から制御リンク９を介して送られたデータベースを記憶している。データベースは、検索キーを用いて、ルーティング情報を検索するためのもので、検索キーとルーティング情報の対応が含まれているものとする。
【００２７】
コントローラ１５は、制御リンク９を介して制御ＰＣ８から送られるルータ１の外部からのデータを、ルータ１内の外部バス２３で用いるデータフォーマットに変換する。
【００２８】
図７は、図２におけるデバイス１３の内部構成を示す図であり、デバイス１３は本実施の形態の検索装置である。図７に示すように、本実施の形態のデバイス１３は、検索機能を有する前段の検索処理回路である検索処理回路５１と、検索機能を有する後段の検索処理回路である検索処理回路５２および検索処理回路５３と、運用面にある内蔵ＲＡＭ５７、内蔵ＲＡＭ５８、内蔵ＲＡＭ５９、および内蔵ＲＡＭ６０と、待機面にある内蔵ＲＡＭ６１、内蔵ＲＡＭ６２、内蔵ＲＡＭ６３、および内蔵ＲＡＭ６４と、これらの内蔵ＲＡＭ群に接続され、検索用データベースの更新要求に応じて待機面にある内蔵ＲＡＭ群の内容の更新を行うＲＡＭ更新回路６５と、内蔵ＲＡＭ５８および内蔵ＲＡＭ６２と接続され接続先の内蔵ＲＡＭの選択を行うＲＡＭ選択回路５４と、内蔵ＲＡＭ５９および内蔵ＲＡＭ６３と接続され接続先の内蔵ＲＡＭの選択を行うＲＡＭ選択回路５５と、内蔵ＲＡＭ６０および内蔵ＲＡＭ６４と接続され接続先の内蔵ＲＡＭの選択を行うＲＡＭ選択回路５６と、ＲＡＭ更新回路６５からの更新通知を検索処理回路５１、ＲＡＭ選択回路５４、ＲＡＭ選択回路５５、およびＲＡＭ選択回路５６に通知する通知線６６と、を含んで構成される。また、検索処理回路５１は内蔵ＲＡＭ５７および内蔵ＲＡＭ６１と、検索処理回路５２はＲＡＭ選択回路５４と、検索処理回路５３はＲＡＭ選択回路５５およびＲＡＭ選択回路５６と、それぞれ接続されている。次に、各構成要素の詳細について述べる。
【００２９】
運用面にある内蔵ＲＡＭ５７、内蔵ＲＡＭ５８、内蔵ＲＡＭ５９、および内蔵ＲＡＭ６０には、検索用データベースが分割して格納されており、これらの内蔵ＲＡＭ群にアクセスすることにより検索処理が行われる。待機面にある内蔵ＲＡＭ５７、内蔵ＲＡＭ５８、内蔵ＲＡＭ５９、および内蔵ＲＡＭ６０は、検索用データベースの更新時にその内容が更新され、更新後の検索用データベースが格納される。
【００３０】
図８は、検索処理回路５１の内部構成を示す図である。図８に示すように、検索処理回路５１は、検索経路２２から入力された検索キーの出力先を２つの読み込みアドレス生成部から選択する選択回路７７と、選択回路７７の一方の出力先であると共に、選択回路７７から出力された検索キーまたはラッチ７１からの出力をもとに、内蔵ＲＡＭ５７における読み込み先のアドレスを生成し、読み込み先のアドレスを内蔵ＲＡＭ５７へ送出する読み込みアドレス生成部７１と、内蔵ＲＡＭ５７における読み込み先のアドレスのデータを受信し、検索キーと読み込み先のアドレスのデータとの比較を行う読み込みデータ受信部７２と、再度、内蔵ＲＡＭ５７へアクセスするときに、読み込みデータ受信部７２にて得られた受信データを一時待ち合わせ、この受信データを読み込みアドレス生成部７１へ送るラッチ７３と、を含んでいる。
【００３１】
さらに、図８に示すように、検索処理回路５１は、選択回路７７の他方の出力先である読み込みアドレス生成部７４と、読み込みアドレス生成部７４に接続された読み込みデータ受信部７５およびラッチ７６と、読み込みデータ受信部７２および読み込みデータ受信部７５からの検索処理結果が入力され、それを後段の検索処理回路５２へ出力する多重化回路７８と、を含んでいる。
【００３２】
次に、読み込みアドレス生成部７４、読み込みデータ受信部７５およびラッチ７６について説明する。図７に示すように、いま、内蔵ＲＡＭ５７は運用面にあり、内蔵ＲＡＭ６１は待機面にある。ここで、運用面とは、検索処理回路からの読み込み先のアドレスを受け付け、該当するアドレスのデータを出力する内蔵ＲＡＭを指し、待機面とは、検索処理回路からの読み込み先のアドレスが入力されていない内蔵ＲＡＭのことを示す。したがって、内蔵ＲＡＭ６１が待機面から運用面になると、選択回路７７は検索キーの出力先として読み込みアドレス生成部７４を選択し、読み込みアドレス生成部７４、読み込みデータ受信部７５およびラッチ７６の各処理により内蔵ＲＡＭ６１に格納された検索用データベースの検索が行われる。この検索処理は、上述の、読み込みアドレス生成部７１、読み込みデータ受信部７２およびラッチ７３に基づいた検索処理と同様である。選択処理回路７７は、通知線６６に接続されており、通知線を介して得られたＲＡＭ更新回路からの更新通知に応じて、読み込みアドレス生成部の選択を行う。このように本実施の形態においては、検索処理回路５１は、読み込みアドレス生成部７１、読み込みデータ受信部７２、およびラッチ７３を有する検索処理回路と、読み込みアドレス生成部７４、読み込みデータ受信部７５、およびラッチ７６を有する検索処理回路との、２系統の検索処理回路を備えている。
【００３３】
図９は、検索処理回路５２内部の回路構成を示す図である。図９に示すように、検索処理回路５２は、検索処理回路５１の検索処理結果が入力され、この入力データをもとに内蔵ＲＡＭにおける読み込み先のアドレスを生成し、この読み込み先のアドレスをＲＡＭ選択回路５４へ送出する読み込みアドレス送信部８１と、ＲＡＭ選択回路５４から送られてきた読み込み先のアドレスのデータを受信し、検索キーと読み込み先のアドレスのデータとの比較を行い、検索処理結果を検索処理回路５３へ出力する読み込みデータ受信部８２と、を含んで構成されている。ＲＡＭ選択回路５４は、運用面にある内蔵ＲＡＭを選択するので、図７に示す例では、内蔵ＲＡＭ５８にアクセスして読み込み先のアドレスのデータを取得する。
【００３４】
図１０は、検索処理回路５３内部の回路構成を示す図である。図１０に示すように、検索処理回路５３は、検索処理回路５２の検索処理結果が入力され、この入力データをもとに内蔵ＲＡＭにおける読み込み先のアドレスを生成する読み込みアドレス送信部８３と、この読み込みアドレス送信部８３から送出された読み込み先のアドレスを、ＲＡＭ選択回路５５またはＲＡＭ選択回路５６へ送出する選択回路８５と、ＲＡＭ選択回路５５またはＲＡＭ選択回路５６から送られてきたデータを多重化して出力する多重化回路８６と、多重化回路８６から出力された読み込み先のアドレスのデータを受信し、検索処理結果を検索経路２２へ出力する読み込みデータ受信部８４と、を含んで構成されている。ＲＡＭ選択回路５５およびＲＡＭ選択回路５６は、それぞれ運用面にある内蔵ＲＡＭを選択するので、図７に示す例では、それぞれ内蔵ＲＡＭ５９および内蔵ＲＡＭ６０にアクセスして読み込み先のアドレスのデータを取得する。
【００３５】
ＲＡＭ更新回路６５は、検索用データベースの更新時に、外部バス２３を経由して送られてきたエントリデータを、待機面となっている内蔵ＲＡＭ群へ書き込む回路である。図７では、待機面は内蔵ＲＡＭ６１、内蔵ＲＡＭ６２、内蔵ＲＡＭ６３、および内蔵ＲＡＭ６４となっている。さらに、ＲＡＭ更新回路６５は、通知線６６を介して検索処理回路５１、ＲＡＭ選択回路５４、ＲＡＭ選択回路５５、およびＲＡＭ選択回路５６へエントリ変更を通知する。
【００３６】
なお、本実施の形態においては、図７に記載されているように、２ポートの入出力を備えた内蔵ＲＡＭを使用したが、これに限らず、他の入出力の形態を備えた内蔵ＲＡＭを使用することもできる。
【００３７】
次に、検索用データベースのデータ構造と、この検索用データベースを、運用面となっている内蔵ＲＡＭ５７、内蔵ＲＡＭ５８、内蔵ＲＡＭ５９、および内蔵ＲＡＭ６０にどのように格納するのかについて説明する。本実施の形態における検索用データベースのデータ構造は、例えば、２分探索木のツリー構造である。図１１は、本実施の形態で使用する検索用データベースのデータ構造の一例を示すと共に、エントリデータによって構成されたツリーが内蔵ＲＡＭ内部でどのように構成されるのかを示す図である。図１１に示すように、２分探索の起点となる深さ０におけるエントリデータから深さ４におけるエントリデータまで示されている。なお、エントリデータは黒丸で、エントリデータ間の関係はそれらを相互に接続する直線で示されている。内蔵ＲＡＭ５７では、深さ０から深さ２までのツリー情報が登録され、内蔵ＲＡＭ５８では、深さ３のツリー情報が、内蔵ＲＡＭ５９では、深さ４のツリー情報の内の左半分が、内蔵ＲＡＭ６０では、深さ４のツリー情報の内の右半分が、それぞれ登録されている。
【００３８】
このように、本実施の形態においては、一つの大きなＲＡＭにツリーのデータ構造全体を記憶するのではなく、複数個の小さなＲＡＭにツリーの階層毎に分けて記憶する。特に、前段のＲＡＭには、ツリー構造の起点を含むツリー構造の上段のデータ（すなわち、深さの浅いデータ）を格納し、後段のＲＡＭには、ツリー構造の下段のデータ（すなわち、深さの深いデータ）を順次格納し、後段のＲＡＭに格納するデータの段数を１段とすることにより、前段のＲＡＭに格納するデータの段数である３段より少なくしている。このような構造により、例えば、ツリー最深部のエントリデータのみを変更する場合には、変更データを保持する内蔵ＲＡＭ（内蔵ＲＡＭ５９および内蔵ＲＡＭ６０）のみを書き換えるだけでよいため、エントリ変更を検索処理に高速に反映することができる。
【００３９】
なお、図９に示すように、検索処理回路５２の内部構成は、この検索処理回路５２が検索のためにアクセスする内蔵ＲＡＭ５８に格納されたデータの構造（深さ３のツリー情報）に対応して、内蔵ＲＡＭ５８に一回アクセスして検索処理結果を出力するような内部構成となっている。また、検索処理回路５３の内部構成も同様であり、検索処理回路５３はそれぞれ内蔵ＲＡＭ５９または内蔵ＲＡＭ５６に一回アクセスして検索処理結果を出力するような内部構成となっている。一方、検索処理回路５１は、深さ０から深さ２までのデータに対して深さごとに繰り返しアクセスして検索できるように、ラッチ７３、７４を備え、ラッチ７３、７４にて検索途中のデータが次にメモリにアクセスするためのタイミングを調整し、ループ処理を行う。
【００４０】
なお、本実施の形態においては、検索用データベースのデータ構造として２分探索木を使用しているが、これに限らず、他のデータ構造を使用した実施の形態を構成することができる。
【００４１】
次に、本実施の形態の動作について説明する。ここで、内蔵ＲＡＭ５７、内蔵ＲＡＭ５８、内蔵ＲＡＭ５９、および内蔵ＲＡＭ６０には、任意のエントリによる検索用データベースが構築されているものとする。
【００４２】
まず、検索用データベースの更新時以外における、検索処理回路５１、検索処理回路５２、および検索処理回路５３の動作について、図７〜図１０を参照して説明する。まず、デバイス１３には、検索経路２２を介して検索キーが入力され、この検索キーは検索処理回路５１に入力される。
【００４３】
検索処理回路５１に入力された検索キーは、選択回路７７により、運用面にある内蔵ＲＡＭ５７にアクセス可能な読み込みアドレス生成部７１に送られる。ここで、運用面と待機面との選択情報は、ＲＡＭ更新回路６５から通知線６６を介して選択回路７７に通知されている。読み込みアドレス生成部７１は検索キーの入力を受けて、内蔵ＲＡＭ５７における読み込み先のアドレスを生成し、この読み込み先のアドレスを内蔵ＲＡＭ５７に送る。そして、読み込みデータ受信部７２にて、内蔵ＲＡＭ５７から送られてきた読み込み先のアドレスのデータを取得する。読み込みデータ受信部７２では、検索キーと取得された読み込み先のアドレスのデータとを比較し、検索キーに相当する検索結果が得られない場合には、さらに内蔵ＲＡＭ５７にアクセスして検索処理を継続する。すなわち、ラッチ７３で読み込みデータ受信部７２から得られたデータを待ち合わせ、次に、ラッチ７３から出力された読み込み先のアドレスのデータをもとに、読み込みアドレス生成部７１にて、次の読み込み先のアドレスを生成し、内蔵ＲＡＭ５７へ再度生成した読み込み先のアドレスを送る。そして、内蔵ＲＡＭ５７から送られてきた読み込み先のアドレスのデータを読み込みデータ受信部７２にて取得する。このような動作を検索キーと検索対象データベースの構造（ＲＡＭに格納されているデータの段数等）に応じて複数回繰り返した後、読み込み先のアドレスのデータを検索処理結果として検索処理回路５２へ出力する。図１１に示すように、内蔵ＲＡＭ５７には、深さ２までのツリー構造のエントリデータが格納されていることから、検索処理回路５１は、一般に、読み込みデータ受信部７２にて取得されたデータから読み込み先のアドレスを生成し該当アドレスのデータを読み込む、という操作を２回行う。
【００４４】
図１２−１は、図８における選択回路７７、読み込みアドレス生成部７１、読み込みデータ受信部７２、および多重化回路７８での処理のタイミングを示すタイミングチャートである。図１２−１においては、各ユニットの処理遅延、および内蔵ＲＡＭからのリードタイムを１クロックとした場合を示している。ツリーの深さ２までの検索をおこない、ループしたデータと、入力されてくるデータとの衝突を防ぐためには、検索キーを８クロック毎に入力することになる。すなわち、検索処理回路５１は、検索キーの入力から多重化回路７８にて検索処理結果を得るまでに８クロックを要する。なお、図１２−１では、深さ０におけるアドレスの生成、そのアドレスのデータの取得過程は含まれておらず、２分探索木の探索の起点である深さ０におけるエントリデータと検索キーとの比較はアドレスの生成なしに行うことを仮定している。深さ０におけるアドレスの生成、そのアドレスのデータの取得過程を含めてもよいが、その分、検索処理時間が長くなる。
【００４５】
次に、検索処理回路５１から出力された検索処理結果は、検索処理回路５２へ入力される。検索キーに相当する検索結果が既に得られている場合には、この検索処理結果は検索処理回路５３へそのまま送られるが、検索処理の途中である場合には、検索処理回路５２による検索処理が行われる。図９に示すように、読み込みアドレス送信部８１は検索処理回路５１からの出力を受けて、内蔵ＲＡＭにおける読み込み先のアドレスを生成し、この読み込み先のアドレスをＲＡＭ選択回路５４へ送る。ＲＡＭ選択回路５４は、運用面にある内蔵ＲＡＭ５８を選択し、検索処理回路５２にて生成された読み込み先のアドレスを内蔵ＲＡＭ５８へ送る。そして、内蔵ＲＡＭ５８から送られてきた読み込み先のアドレスのデータを読み込みデータ受信部８２にて取得する。この取得されたデータは、図１１における深さ３のエントリデータである。読み込みデータ受信部８２にて取得された読み込み先のアドレスのデータは検索キーと比較される。そして、検索処理結果は、検索処理回路５３へ送られる。
【００４６】
図１２−２は、図９における読み込みアドレス送信部８１および読み込みデータ受信部８２での処理のタイミングを示すタイミングチャートである。図１２−２においては、図１２−１と同様に、各ユニットの処理遅延、および内蔵ＲＡＭからのリードタイムを１クロックとしている。図１２−２に示すように、検索処理回路５２における検索処理時間は、読み込みアドレス送信部８１にて深さ２での検索処理結果を受けてから読み込みデータ送信部８２にて深さ３での検索処理結果を受けるまでの３クロックであり、検索処理回路５１のように、検索途中の結果をループせずに、１回のリード処理で検索を終了する。
【００４７】
次に、検索処理回路５２から出力された検索処理結果は、検索処理回路５３へ入力される。検索キーに相当する検索結果が既に得られている場合には、この検索処理結果は検索経路２２を介して出力される。検索処理の途中である場合には、検索処理回路５３による検索処理が行われる。図１０に示すように、読み込みアドレス送信部８３は検索処理回路５２からの出力を受けて、内蔵ＲＡＭにおける読み込み先のアドレスを生成し、この読み込み先のアドレスを選択回路８５へ送る。選択回路８５は、読み込み先のアドレスに応じてＲＡＭ選択回路５５またはＲＡＭ選択回路５６を選択し、読み込み先のアドレスを送出する。続いて、多重化回路８６は、ＲＡＭ選択回路５５またはＲＡＭ選択回路５６から送られてきた読み込み先のアドレスのデータを、読み込みデータ受信部８４へ送り出す処理を行う。読み込みデータ受信部８４にて取得されたデータは、検索処理結果として検索経路２２を介して出力される。ここで、選択回路８５がＲＡＭ選択回路５５を選択した場合には、ＲＡＭ選択回路５５は運用面にある内蔵ＲＡＭ５９にアクセスし、図１１に示す深さ４のツリーの左半分を検索する。また、選択回路８５がＲＡＭ選択回路５６を選択した場合には、ＲＡＭ選択回路５６は運用面にある内蔵ＲＡＭ６０にアクセスし、図１１に示す深さ４のツリーの右半分を検索する。
【００４８】
図１２−３は、図１０における読み込みアドレス送信部８３、選択回路８５、検索回路からＲＡＭへの経路におけるＲＡＭ選択回路５５またはＲＡＭ選択回路５６、ＲＡＭから検索回路への経路におけるＲＡＭ選択回路５５またはＲＡＭ選択回路５６、多重化回路８６、および読み込みデータ受信８４での処理のタイミングを示すタイミングチャートである。図１２−３においては、図１２−１と同様に、各ユニットの処理遅延、および内蔵ＲＡＭからのリードタイムを１クロックとしている。図１２−３に示すように、検索処理回路５３における検索処理時間は、読み込みアドレス生成部８３にて深さ３での検索処理結果を受けてから読み込みデータ送信部８４にて深さ４での検索処理結果を受けるまでの７クロックであり、検索処理回路５１のように、検索途中の結果をループせずに、１回のリード処理で検索を終了する。また、読み込みアドレス生成部８３には、深さ３での検索処理結果が８クロックごとに入力されている。これは、検索処理回路５３には、前段からの検索処理結果が８クロックごとにパイプライン的に入力されるからである。
【００４９】
次に、検索動作中における検索用データベースの更新方法について説明する。検索用データベースの更新時には、制御ＰＣ８からエントリが変更された新データベースのデータが制御リンク９を介してルータ１に送られる。コントローラ１５は、制御ＰＣ８から送られてきた新データベースのデータを、制御リンク９上でのデータフォーマットから外部バス２３上でのデータフォーマットに変換する。続いて、データフォーマットが変換された新データベースは、外部バス接続線２４を介して外部メモリ１４へ送られ、保持される。
【００５０】
次に、制御ＰＣ８からルータ１内のデバイス１３に検索用データベースの更新指示が送られると、外部バス接続線２４を介してＲＡＭ更新回路６５に対して更新指示が送られる。ＲＡＭ更新回路６５は、更新指示を受けて、待機面となっている内蔵ＲＡＭ６１、内蔵ＲＡＭ６２、内蔵ＲＡＭ６３、および内蔵ＲＡＭ６４に対して、外部メモリ１４に保持されている新データベースを書き込み、新データベースの書き込みが終了すると、検索処理回路５１、ＲＡＭ選択回路５４、ＲＡＭ選択回路５５、およびＲＡＭ選択回路５６に通知線６６を介して運用面の変更を指示する。
【００５１】
運用面の変更が起きると、まず、検索処理回路５１が検索に使用していた内蔵ＲＡＭ５７を内蔵ＲＡＭ６１へ変更するため、選択回路７７において検索キーが入力されていない時間に、検索経路２２から入力される検索キーの出力先を、読み込みアドレス生成部７１から読み込みアドレス生成部７４へ変更する。このように、検索処理回路５１では、選択回路７７により選択される２系統の検索処理回路を利用して、検索に使用する内蔵ＲＡＭの切り替えが行われる。
【００５２】
なお、検索キーが１クロック分以上のビット幅を持つ場合、選択回路７７による内蔵ＲＡＭの変更のタイミングは、検索キーが途中で切れて読み込みアドレス生成部７１、または読み込みアドレス生成部７４に送られないように、一続きの検索キーから次の検索キーへと検索キーの入力が途切れる間となる。
【００５３】
次に、検索処理回路５２では、図１２−２に示すように、８クロックごとに深さ２での検索処理結果が入力されるので、検索処理回路５１にて検索処理を行う内蔵ＲＡＭを切り替え後、新データベースによる検索処理結果が検索処理回路５２に入力されるまでの間（７クロックの間）に、ＲＡＭ選択回路５４において読み込み先のアドレスの出力先を内蔵ＲＡＭ５８から内蔵ＲＡＭ６２へ変更し、新データベースによる検索をおこなう。このとき、内蔵ＲＡＭの切り替えによるデータベースの更新は、検索処理回路５１と検索処理回路５２の処理能力の速度差、言い換えると、単位時間あたりの検索処理回数の差、を利用して行っている。つまり、検索処理回路５１では、検索途中の結果をループし同じ内蔵ＲＡＭにリードすることにより検索を行うのに対し、検索処理回路５２では、検索処理の途中結果をループせずに、１回のリード処理で検索を終了しているため、検索処理回路５２の検索処理能力の速度は、検索処理回路５１の検索処理能力の速度を上回る。このような検索処理能力の速度差が存在すれば、前段の検索処理回路５１から次のデータが入力されるまでの８クロックの間に、後段の検索処理回路５２では検索処理を行うと共に、内蔵ＲＡＭの運用面と待機面との切り替えを行うことができる。図１２−２に示すように、検索処理回路５２における内蔵ＲＡＭの切り替えは、検索処理回路５２が内蔵ＲＡＭ５８にアクセスして検索を行っている時間を除いて可能となっている。なお、図１２−２では、メモリの切り替えが可能なメモリ切替可能時間を斜線で示している。
【００５４】
同様に、検索処理回路５３では、検索処理回路５１、検索処理回路５２と順番に内蔵ＲＡＭを切り替え後、新データベースによる検索結果が検索処理回路５３に入力されるまでの間（７クロックの間）に、ＲＡＭ選択回路５５およびＲＡＭ選択回路５６において、読み込み先のアドレスの出力先を内蔵ＲＡＭ５９および内蔵ＲＡＭ６０から内蔵ＲＡＭ６３および内蔵ＲＡＭ６４へ変更し、次の更新指示があるまで、新データベースによる検索処理を行い続ける。このときも同様に、内蔵ＲＡＭの切り替えによるデータベースの更新は、検索処理回路５１と検索処理回路５３の処理能力の速度差を利用して行っている。すなわち、検索処理回路５１では、検索途中の結果をループし同じ内蔵ＲＡＭにリードすることにより検索を行うのに対し、検索処理回路５３では、検索処理の途中結果をループせずに、１回のリード処理で検索を終了しているため、検索処理回路５３の検索処理能力の速度は、検索処理回路５１の検索処理能力の速度を上回る。図１２−３に示すように、検索処理回路５３における内蔵ＲＡＭの切り替えは、検索処理回路５３が内蔵ＲＡＭ５９または内蔵ＲＡＭ６０にアクセスして検索を行っている時間を除いて可能となっている。図１２−３では、メモリの切り替えが可能なメモリ切替可能時間を斜線で示している。
【００５５】
本実施の形態によれば、前段と後段の検索処理回路の処理能力の速度差を利用し、前段の検索処理回路を上回る処理速度を有する後段の検索処理回路により、検索途中のデータが前段の検索処理回路から後段の検索処理回路へ入力されない時間を利用して新しいエントリ情報を有するメモリへ切り替えることにより、検索動作中であっても検索動作を停止せずに検索用データベースのエントリを更新することができる。
【００５６】
また、本実施の形態においては、検索用データベースのツリー構造を深さ毎に区切って複数個の内蔵ＲＡＭ内に保持しているため、例えば、ツリー最深部のエントリデータのみを変更する場合には、その最深部のデータを保持する内蔵ＲＡＭのみを更新すればよく、エントリ更新を検索処理に高速に反映することができる。図１３は、検索用データベースのツリーの最深部のみにエントリ更新がある場合を示す図であり、深さ４におけるエントリデータが更新される場合を示している。前述のように、この場合には深さ４におけるエントリデータを保持する内蔵ＲＡＭ５９および内蔵ＲＡＭ６０の内容を更新するだけでよいので、更新されたエントリを待機面にある内蔵ＲＡＭ６３および内蔵ＲＡＭ６４に書き込み、ＲＡＭ選択回路５５およびＲＡＭ選択回路５６により、これらの待機面にある内蔵ＲＡＭを運用面に変更すればよい。なお、検索用データベースのデータ構造に基づいて内蔵ＲＡＭの一部のみを更新するなどの判断は、外部の制御ＰＣ８を介して行う。
【００５７】
また、本実施の形態においては、後段の検索処理回路の個数を２個とする例を示したが、これは図１１に示すデータ構造を例に説明を行ったからであり、検索用データベースの構造と量に応じて、後段の検索処理回路を、適宜、任意個数設定することができ、また、これに応じて、内蔵ＲＡＭおよびＲＡＭ選択回路も適宜設定することができる。
【００５８】
また、本実施の形態においては、後段の検索処理回路である検索処理回路５２および検索処理回路５３がそれぞれ運用面にある内蔵ＲＡＭにアクセスして検索を行う回数を１回としたが、これに限定されず、前段の検索処理回路である検索処理回路５１が運用面にある内蔵ＲＡＭにアクセスして検索を行う回数よりも少なければ、任意の回数としてもよい。すなわち、この条件を満たせば、本実施の形態の効果を得ることができる。なお、この場合には、後段の検索処理回路の内部構造、後段の検索処理回路が検索のためにアクセスする内蔵ＲＡＭに格納されているデータ構造等は、アクセスの回数に依存して適宜設定される。
【００５９】
実施の形態２.
本発明にかかる検索装置およびデータ処理装置の実施の形態２について説明する。本実施の形態を利用したネットワーク構成例は、例えば、図１に示す実施の形態１におけるネットワーク構成と同様である。
【００６０】
図１４は、本実施の形態にかかるデータ処理装置としてのルータ１の内部構成を示す図である。図１４に示すルータ１の内部構成と、図２に示す実施の形態１におけるルータ１の内部構成との違いは、図２におけるデバイス１３が、図１４ではデバイス７３で置き換えられている点である。図１４におけるその他の構成は、図２における構成と同様である。そのため、図１４においては、図２と同一の構成物には同一の符号を付して、その詳細な説明を省略する。次に、図２との違いである検索装置としてのデバイス７３の内部構成について述べる。
【００６１】
図１５は、図１４におけるデバイス７３の内部構成を示す図である。図１５に示すように、デバイス７３は、ＲＡＭ更新回路１１２と、検索キー分離回路１０１と、前段の検索処理回路である検索処理回路１０２および検索処理回路１０３と、検索処理回路１０２および検索処理回路１０３からの出力が多重化される検索キー多重化回路１０４と、後段の検索処理回路である検索処理回路１０５と、同じく後段の検索処理回路であると共に、検索処理回路１０５からの検索処理結果が入力される検索処理回路１０６と、ＲＡＭ選択回路１０７、ＲＡＭ選択回路１０８、およびＲＡＭ選択回路１０９と、運用面にある、内蔵ＲＡＭ５７および内蔵ＲＡＭ１２１、内蔵ＲＡＭ５８および内蔵ＲＡＭ１２２、内蔵ＲＡＭ５９および内蔵ＲＡＭ１２３、ならびに内蔵ＲＡＭ６０および内蔵ＲＡＭ１２４と、待機面にある、内蔵ＲＡＭ６１および内蔵ＲＡＭ１３１、内蔵ＲＡＭ６２および内蔵ＲＡＭ１３２、内蔵ＲＡＭ６３および内蔵ＲＡＭ１３３、ならびに内蔵ＲＡＭ６４および内蔵ＲＡＭ１３４と、ＲＡＭ更新回路１１２から検索処理回路１０２および検索処理回路１０３に接続された通知線１１２と、を含んで構成される。次に、各構成要素の内部構成および動作について述べる。
【００６２】
なお、本実施の形態においては、以下に説明するように、同時に２つの異なる検索キーを扱う例について述べるが、検索キーの個数は２つに限定されることはなく、同時に３つ以上の異なる検索キーを扱う実施の形態を実現することができる。
【００６３】
検索キー分離回路１０１には検索経路２２から検索キーが入力される。検索キー分離回路１０１は、後述する検索キーを２つに分離し、分離した検索キーの一方を検索処理回路１０２へ、他方を検索処理回路１０３へ送り出す回路である。このため、検索処理回路１０２および検索処理回路１０３は、検索キー分離回路１０１の後段に並列して設けられている。
【００６４】
図１６は、検索経路２２から検索キー分離回路１０１へ入力される検索キーのフォーマットの一例を示す図であり、検索キー６００は検索キー６０１および検索キー６０２含んで構成されている。検索キー分離回路１０１は、検索キー６１０を検索キー６０１と検索キー６０２とに分離する。
【００６５】
なお、本実施の形態においては、検索キー６０１を検索処理回路１０２へ、検索キー６０２を検索処理回路１０３へ送るという前提で説明を続けるが、この前提は本発明を限定するものではなく、検索キーの送り先を相互に入れ替えてもよい。
【００６６】
図１７は、検索処理回路１０２内部の回路構成を示す図である。図１７に示すように、検索キー分離回路１０１から入力された検索キー６０１は、選択回路１３０にて読み込みアドレス生成部７１へ送り出される。このとき、読み込みアドレス生成部７１は運用面にある内蔵ＲＡＭ５７へ接続され、一方、読み込みアドレス生成部７４は待機面にある内蔵ＲＡＭ６１へ接続されている。読み込みアドレス生成部７１では、入力された検索キー６０１をもとに、内蔵ＲＡＭ５７における読み込み先のアドレスを生成して、内蔵ＲＡＭ５７へ読み込み先のアドレスを送り、内蔵ＲＡＭ５７から送られてきた読み込み先のアドレスのデータを読み込みデータ受信部７２にて取得する。
【００６７】
読み込みデータ受信部７２では、取得された読み込み先のアドレスのデータと検索キー６０１とを比較し、検索キー６０１に相当する検索結果が得られない場合には、さらに内蔵ＲＡＭ５７にアクセスして検索処理を継続する。すなわち、ラッチ７３で読み込みデータ受信部７２からのデータを待ち合わせ、次に、ラッチ７３から出力された読み込み先のアドレスのデータをもとに、読み込みアドレス生成部７１にて、次の読み込み先のアドレスを生成し、内蔵ＲＡＭ５７へ再度生成した読み込み先のアドレスを送る。そして、内蔵ＲＡＭ５７から送られてきた読み込み先のアドレスのデータを読み込みデータ受信部７２にて取得する。このような動作を任意回数繰り返した後、読み込み先のアドレスのデータを多重化回路１３１へ渡して多重化し、通知線１１１を介して送られてきた検索対象となる内蔵ＲＡＭを指定する指定情報（この場合は、内蔵ＲＡＭ５７を指定する指定情報）を付加して、後段の検索キー多重化回路１０４へ出力する。
【００６８】
検索キー多重化回路１０４は、検索処理回路１０２および検索処理回路１０３から送られてきた検索処理結果を検索処理回路１０５へ送り出す処理を行う。ここで、検索処理回路１０３による検索処理も検索処理回路１０２と同様に行われるが、検索処理回路１０３が検索対象とする運用面の内蔵ＲＡＭは、内蔵ＲＡＭ１２１である。
【００６９】
図１８は、検索処理回路１０５内部の回路構成を示す図である。図１８に示すように、検索キー多重化回路１０４から出力された検索処理結果は、検索処理回路１０５へ入力され、検索途中である場合には、読み込みアドレス送信部１４１にて読み込み先のアドレスを生成し、検索処理回路１０２および検索処理回路１０３で付加された検索対象となる内蔵ＲＡＭを指定する指定情報と共に、生成された読み込み先のアドレスをＲＡＭ選択回路１０７へ送る。そして、ＲＡＭ選択回路１０７から送られてきた読み込み先のアドレスのデータを読み込みデータ受信部１４２にて取得し、得られた検索処理結果を検索処理回路１０６へ出力する。
【００７０】
ＲＡＭ選択回路１０７では、検索処理回路１０５から送られてきた検索対象となる内蔵ＲＡＭを指定する指定情報をもとに、検索キー６０１による検索中のデータ（読み込み先のアドレス）に対しては内蔵ＲＡＭ５８を、検索キー６０２による検索中のデータ（読み込み先のアドレス）に対しては内蔵ＲＡＭ１２２をそれぞれ選択し、各検索中のデータをそれぞれ選択された内蔵ＲＡＭへ送り、各内蔵ＲＡＭから該当アドレスのデータを読み出し、その結果を検索処理回路１０５へ出力する。
【００７１】
図１９は、検索処理回路１０６内部の回路構成を示す図である。図１９に示すように、検索処理回路１０５から出力された検索処理結果は、検索処理回路１０６へ入力され、検索処理結果が検索途中である場合には、読み込みアドレス送信部１５１にて読み込み先のアドレスを生成し、検索対象となる内蔵ＲＡＭを指定する指定情報と共にこの読み込み先のアドレスを選択回路１５３へ送る。選択回路１５３では、読み込み先のアドレスに応じてＲＡＭ選択回路１０８またはＲＡＭ選択回路１０９を選択する。例えば、ＲＡＭ選択回路１０８が選択された場合には、ＲＡＭ選択回路１０８は運用面となっている内蔵ＲＡＭを選択し、さらに、検索対象となる内蔵ＲＡＭを指定する指定情報に基づいて、読み込み先のアドレスを内蔵ＲＡＭ５９または内蔵ＲＡＭ１２３へ送る。検索キー６０１による検索中のデータ（読み込み先のアドレス）に対しては内蔵ＲＡＭ５９が、検索キー６０２による検索中のデータ（読み込み先のアドレス）に対しては内蔵ＲＡＭ１２３が選択される。同様に、ＲＡＭ選択回路１０９が選択された場合には、ＲＡＭ選択回路１０９は運用面となっている内蔵ＲＡＭを選択し、さらに、検索対象となる内蔵ＲＡＭを指定する指定情報に基づいて、読み込み先のアドレスを内蔵ＲＡＭ６０または内蔵ＲＡＭ１２４へ送る。検索キー６０１による検索中のデータ（読み込み先のアドレス）に対しては内蔵ＲＡＭ６０が、検索キー６０２による検索中のデータ（読み込み先のアドレス）に対しては内蔵ＲＡＭ１２４が選択される。続いて、読み込み先のアドレスのデータはＲＡＭ選択回路１０８またはＲＡＭ選択回路１０９を経て多重化回路１５４へ送られ、さらに、多重化回路１５４から読み込みデータ受信部１５２へ送られる。読み込みデータ受信部１５２にて取得されたデータは、検索処理結果として検索経路２２を介してデバイス７３から出力される。
【００７２】
ＲＡＭ更新回路１１２は、検索用データベースの更新時に、外部バス２３を経由して送られてきたエントリデータを、待機面となっている内蔵ＲＡＭ群へ書き込む回路である。図１５では、待機面を、内蔵ＲＡＭ６１、内蔵ＲＡＭ６２、内蔵ＲＡＭ６３、内蔵ＲＡＭ６４、内蔵ＲＡＭ１３２、内蔵ＲＡＭ１３２、内蔵ＲＡＭ１３３、および内蔵ＲＡＭ１３４としている。さらに、ＲＡＭ更新回路１１２は、エントリデータの更新指示を、通知線１１１を使って検索処理回路１０２および検索処理回路１０３へ通知する。
【００７３】
図２０は、エントリデータによって構成されたツリーが各内蔵ＲＡＭの内部でどのように構成されるかを示した図である。図２０に示すように、本実施の形態ではテーブル２０１とテーブル２０２からなる２つのテーブルを使用している。テーブル２０１では、内蔵ＲＡＭ５７に深さ０から深さ２までのツリー情報が登録されており、内蔵ＲＡＭ５８に深さ３のツリー情報が、内蔵ＲＡＭ５９に深さ４のツリー情報の左半分が、内蔵ＲＡＭ６０に深さ４のツリー情報の右半分が登録されている。テーブル２０２では、内蔵ＲＡＭ１２１に深さ０から深さ２までのツリー情報が登録されており、内蔵ＲＡＭ１２２に深さ３のツリー情報が、内蔵ＲＡＭ１２３に深さ４のツリー情報の左半分が、内蔵ＲＡＭ１２４に深さ４のツリー情報の右半分が登録されている。
【００７４】
本実施の形態における検索動作中の検索用データベースの更新方法は、実施の形態１と同様である。すなわち、本実施の形態においても、前段の検索処理回路では、検索途中の結果をループし、そのため、毎クロック検索結果が出力されない。一方、後段の検索処理回路では、内蔵ＲＡＭへ１回のリード処理で検索が終了する。そして、前段と後段の検索処理回路の処理能力の速度差を利用し、後段の検索処理回路に入力する検索途中のデータが毎クロックではないことを利用して、その間隙に後段の検索処理回路がアクセスする内蔵ＲＡＭの切り替えを行い、データベースの更新を行う。
【００７５】
本実施の形態によれば、検索動作中であっても検索処理を停止せずに、検索用データベースのエントリの更新ができる。また、検索用データベースのツリー構造を深さ毎に区切って内蔵ＲＡＭ内に保持しているため、例えば、ツリー最深部のエントリデータのみを変更する場合においては、その最深部のデータを保持する内蔵ＲＡＭのみを更新すればよく、エントリ更新を検索処理に高速に反映することができる。また、本実施の形態では、入力される検索キーが２つの分離可能な検索キーを含むことから、前段の検索処理回路が検索対象とする内蔵ＲＡＭを同じ内容のデータが保持された２つの内蔵ＲＡＭとし、後段の検索処理回路が検索対象とする内蔵ＲＡＭを同じ内容のデータが保持された２つの内蔵ＲＡＭとすることで、分離された２つの検索キーに対する検索処理を、前段および後段における２つの内蔵ＲＡＭに分散して行っている。このように、２つの異なる検索キーに対して、実施の形態１で使用するテーブル検索処理機能に加えて、もう一つのテーブル検索処理機能を付加して並列度を上げることで、検索処理速度を上げつつ、高速なエントリ更新機能を実現できる。
【００７６】
また、後段に配置された内蔵ＲＡＭに使用されていないものがあるときに、それを他の検索テーブル用に割り当てることにより、資源を有効利用して検索処理の高速化を実現することができる。
【産業上の利用可能性】
【００７７】
以上のように、本発明にかかる検索装置はデータ検索を行うデータ処理において有用であり、特に、検索処理を中断させずに検索用のデータベースの更新を行う情報通信システムに適している。
【図面の簡単な説明】
【００７８】
【図１】本発明の実施の形態１を利用したネットワーク構成を示す図である。
【図２】実施の形態１のルータの機能構成例を示す図である。
【図３】Ethernet（登録商標）フレームフォーマットを示す図である。
【図４】ＩＰｖ４ヘッダのフォーマットを示す図である。
【図５】ＴＣＰヘッダのフォーマットを示す図である。
【図６】ＵＤＰヘッダのフォーマットを示す図である。
【図７】図２におけるデバイスの内部構成を示す図である。
【図８】検索処理回路の内部構成を示す図である。
【図９】検索処理回路内部の回路構成を示す図である。
【図１０】検索処理回路内部の回路構成を示す図である。
【図１１】実施の形態１で使用する検索用データベースのデータ構造の一例を示すと共に、エントリデータによって構成されたツリーが内蔵ＲＡＭ内部でどのように構成されるのかを示す図である。
【図１２−１】図８における各ユニットでの処理のタイミングを示すタイミングチャートである。
【図１２−２】図９における各ユニットでの処理のタイミングを示すタイミングチャートである。
【図１２−３】図１０における各ユニットでの処理のタイミングを示すタイミングチャートである。
【図１３】検索用データベースのツリーの最深部のみにエントリ更新がある場合を示す図である。
【図１４】実施の形態２のルータの機能構成例を示す図である。
【図１５】図１４におけるデバイスの内部構成を示す図である。
【図１６】検索経路から検索キー分離回路へ入力される検索キーのフォーマットの一例を示す図である。
【図１７】実施の形態２における検索処理回路内部の回路構成を示す図である
【図１８】実施の形態２における検索処理回路内部の回路構成を示す図である。
【図１９】実施の形態２における検索処理回路内部の回路構成を示す図である。
【図２０】実施の形態２で使用する検索用データベースのデータ構造の一例を示すと共に、エントリデータによって構成されたツリーが内蔵ＲＡＭ内部でどのように構成されるのかを示す図である。
【符号の説明】
【００７９】
１  ルータ
２  ＰＣ端末
３  インターネット
４  サーバー群
５  アクセスポイント
６  無線端末
７  イントラネット
８  制御ＰＣ
９  制御リンク
１０  リンク
１１  送受信ユニット
１２  転送ユニット
１３  デバイス
１４  外部メモリ
１５  コントローラ
２２  検索経路
２３  外部バス
２４  外部バス接続線
２５  Ethernet（登録商標）フレーム
２６  ＭＡＣヘッダ
２７  ＩＰｖ４パケット
２８  ＦＣＳ
２９  ＩＰｖ４ヘッダ
３０  ＴＣＰヘッダ
３１  ＵＤＰヘッダ
３２  ＴＯＳフィールド
３３  トータル長
３４  識別子
３５  フラグ
３６  フラグメントオフセット
３７  プロトコル
３８  送信元ＩＰアドレス
３９  宛先ＩＰアドレス
４０  送信元ポート番号
４１  宛先ポート番号
４２  シーケンス番号
４３  確認応答番号
４４  送信元ポート番号
４５  宛先ポート番号
５１、５２、５３  検索処理回路
５７、５８、５９、６０、６１、６２、６３、６４  内蔵ＲＡＭ
５４、５５、５６  ＲＡＭ選択回路
６５  ＲＡＭ更新回路
６６  通知線
６７  待機面
６８  運用面
７１、７４  読み込みアドレス生成部
７２、７５、８２、８４  読み込みデータ受信部
７３、７６  ラッチ
７７、８５  選択回路
７８、８６  多重化回路
８１、８３  読み込みアドレス送信部
【図１】
2008165616.tif 000003
【図２】
2008165616.tif 000004
【図３】
2008165616.tif 000005
【図４】
2008165616.tif 000006
【図５】
2008165616.tif 000007
【図６】
2008165616.tif 000008
【図７】
2008165616.tif 000009
【図８】
2008165616.tif 000010
【図９】
2008165616.tif 000011
【図１０】
2008165616.tif 000012
【図１１】
2008165616.tif 000013
【図１２−１】
2008165616.tif 000014
【図１２−２】
2008165616.tif 000015
【図１２−３】
2008165616.tif 000016
【図１３】
2008165616.tif 000017
【図１４】
2008165616.tif 000018
【図１５】
2008165616.tif 000019
【図１６】
2008165616.tif 000020
【図１７】
2008165616.tif 000021
【図１８】
2008165616.tif 000022
【図１９】
2008165616.tif 000023
【図２０】
2008165616.tif 000024