(57)【特許請求の範囲】
【請求項１】
レベル圧縮トライ木構造を利用した最長一致検索を実行するための情報検索装置であって、
前記レベル圧縮トライ木構造中の葉を検索する第１の命令を実行するための第１の処理ユニットと、プレフィックスおよび連想値からなる探索空間における入力語とプレフィックスとを比較して連想値を出力する第２の命令を実行するための第２の処理ユニットとを備え、
第１の処理ユニットが、前記レベル圧縮トライ木構造中の各レベルの検索処理をパイプライン上に展開したデータ駆動プログラム構造を保持した第１のデータ駆動型処理ユニットから構成され、
前記第１の処理ユニットが、
あるレベルの節点を特定する情報であって、子の節数、探索済のプレフィックス長および先頭の節へのポインタを含む情報および入力語を入力して、前記レベル圧縮トライ木構造の各レベルの節点に関する節情報であって、下位のレベルの節点を特定する情報、および、下位の節点が存在しない場合にはプレフィックスの先頭要素を示すポインタ値を含む節点に関する節情報を記憶したメモリをアクセスするためのアドレスを、前記子の節数、探索済のプレフィックス長および先頭の節へのポインタに基づき算出するとともに、当該メモリをアクセスして、前記節情報を取得するメモリアクセス手段と、
前記メモリから取得した節情報から、下位のレベルの節点の有無を判断して、当該下位のレベルの節点が存在する場合には、下位のレベルの節点を特定する情報である節情報および入力語を出力する一方、前記下位のレベルの節点が存在しない場合には、対応するプレフィックスの先頭要素を示すポインタ値を含む節情報および入力語を出力する第１の制御手段とを有し、
前記第２の処理ユニットが、各レベルのプレフィックスの検査をパイプライン上に展開したデータ駆動プログラム構造を保持した第２のデータ駆動型処理ユニットから構成され、
前記第２の処理ユニットが、
前記ポインタ値に基づき、プレフィックスを記憶した第１のメモリにアクセスして、プレフィックスを取得するプレフィックス取得手段と、
前記プレフィックス取得手段と並列的に動作し、前記ポインタ値に基づき、連想値を特定するためのポインタおよび上位のレベルのプレフィックスを特定するためのポインタ値のいずれかを記憶した第２のメモリにアクセスして、前記連想値を特定するためのポインタ値或いは前記上位のレベルのプレフィックスを特定するためのポインタ値を取得する検査情報取得手段と、
前記取得されたプレフィックスと入力語とを比較する比較手段と、
前記比較手段による比較結果に基づき、プレフィックスと入力語が一致した場合には、予め取得された連想値を特定するためのポインタに基づき連想値メモリをアクセスして連想値を取得する連想値取得手段と、
前記連想値が取得された場合には連想値を出力し、プレフィックスと入力語とが一致しない場合には、前記上位レベルのプレフィックスを特定するためのポインタ値を出力する第２の制御手段とを有し、
前記第１の処理ユニットおよび第２の処理ユニットのそれぞれにて、前記パイプラインにより、メモリアクセスレートと等価なレートで、前記第１の命令および第２の命令が実行されることを特徴とする情報検索装置。
【請求項２】
前記第１のデータ駆動型処理ユニットが、パイプラインにおける処理を識別するためのカラー、第１の複合命令、行き先、並びに、前記あるレベルの節点を特定する情報および前記入力語に対応するデータからなるパケットを受理して、処理に必要なデータが揃うことにより発火する発火制御手段を備え、
前記発火制御手段からの指示にしたがって、前記メモリアクセス手段が作動し、
前記第１の制御手段が、下位レベルの節点が存在する場合には、前記第１の複合命令、および、第１のデータ駆動型処理ユニットを行き先とするパケットを出力し、下位レベルの節点が存在しない場合には、第２のデータ駆動型処理ユニットのための第２の複合命令、および、第２のデータ駆動型処理ユニットを行き先とするパケットを出力することを特徴とする請求項１に記載の情報検索装置。
【請求項３】
前記メモリアクセス手段が、特定の単一または複数のレベルに属する節点に関する節情報を記憶した第１の節情報メモリをアクセスする第１の処理部と、前記特定の単一または複数のレベル以外の他のレベルの節点に関する節情報を記憶した第２の節情報メモリをアクセスする第２の処理部とを有し、前記発火制御部からの指示にしたがって、何れかの処理部が作動することを特徴とする請求項２に記載の情報検索装置。
【請求項４】
前記第１の節情報メモリが前記情報検索装置に内部バスにて連結された内部メモリであり、第２の節情報メモリが、外部メモリであることを特徴とする請求項３に記載の情報検索装置。
【請求項５】
前記第２のデータ駆動型処理ユニットが、パイプラインにおける処理を識別するためのカラー、第２の複合命令、行き先およびデータからなるパケットを受理して、処理に必要なデータが揃うことにより発火する第２の発火制御手段を備え、
前記発火制御手段からの指示にしたがって、前記プレフィックス取得手段および検査情報取得手段が作動し、
前記第２の制御手段が、プレフィックスと入力語とが一致しない場合に、第２の複合命令および第２のデータ駆動型処理ユニットを行き先とするパケットを出力するように構成されたことを特徴とする請求項１ないし４の何れか一項に記載の情報検索装置。
【請求項６】
前記プレフィックス取得手段が、外部メモリである第１のメモリにアクセスし、前記検査情報取得手段が、別の外部メモリである第２のメモリにアクセスし、前記連想値取得手段が、内部メモリである連想値メモリにアクセスするように構成されたことを特徴とする請求項５に記載の情報検索装置。
【請求項７】
請求項１ないし６の何れか一項に記載された、少なくとも一以上の第１の処理ユニットと、少なくとも一以上の第２の処理ユニットと、少なくとも一以上の外部メモリとを備えたことを特徴とする情報検索用マルチプロセッサ。
【請求項８】
前記第１の処理ユニットを２つ備えたことを特徴とする請求項７に記載のマルチプロセッサ。
【請求項９】
前記第１の処理ユニットの一方が、第１の外部メモリに接続され、前記第１の処理ユニットの他方が、第２の外部メモリに接続され、かつ、前記第２の処理ユニットが、前記第１および第２の外部メモリに接続されたことを特徴とする請求項８に記載のマルチプロセッサ。
【請求項１０】
請求項１ないし６の何れか一項に記載の情報検索装置を備え、入力語として宛先ＩＰアドレスを受理し、連想語としてネクストホップを出力することを特徴とするルータ。
【請求項１１】
請求項７ないし９の何れか一項に記載のマルチプロセッサを備え、入力語として宛先ＩＰアドレスを受理し、連想語としてネクストホップを出力することを特徴とするルータ。
【発明の詳細な説明】
【０００１】
【産業上の技術分野】
本発明は、情報検索装置に関し、より詳細には、レベル圧縮トライ木を利用した最長一致探索を行う情報検索装置に関する。
【０００２】
【従来の技術】
探索空間において、入力後の部分語に一致するエントリの中で最長のエントリを探索する、最長一致検索処理が知られている。最長一致検索を実現するための種々の手法が提案されている。
上記最長一致検索は、ネットワーク上のＩＰアドレスを検索するためのＩＰルーティングの際に利用される。特に、情報ネットワーク内のデータ通信量は著しく増加しており、ネットワークの高速大容量化などが急務となっている現状において、数Ｔｂｐｓを超えるＤＷＤＭなどの伝送技術が開発される一方で、ルータの高速化の問題がボトルネックとなりつつある。
【０００３】
上記最長一致検索の高速化等に関して、たとえば、（１）“Scalable High Speed IP Routing Lookups”（M. Waldvogel他、「Proc. ACM SIGCOMM’97」第２５頁〜第３６頁 １９９７年９月発行）や、（２）“IP-address lookup using LC-Tries”（S. Nilsson, G. Larlsson、「IEEE J. on Selected Areas in Comm.」第１７巻第６号第１０８３頁〜第１０９２頁  １９９９年７月発行）には、ソフトウェアアルゴリズムが提案されている。また、（３）“Routing Lookups in Hardware at Memory Access Speeds”（Pankaj Gupta, Steven Lin, Nick McKeown、「Proc. IEEE INFOCOM’98」第１２４０頁〜第１２４７頁  １９９８年）には、専用ハードウェアによる検索機構が提案されている。
【０００４】
たとえば、（２）においては、レベル圧縮トライ木（Level Compressed Trie Tree）を利用したＩＰルーティングのアルゴリズムが記載されている。まず、レベル圧縮トライ木につき簡単に説明を加える。
図１はトライ木構造を示す図である。ここでビット列が記載されている節（ノード：図１においては黒丸にて示す）は、有効なデータが存在することを示している。たとえば、符号１０１においては、有効なデータ「００１」は単一の有効な子「００１０１」のみを有している。或いは、符号１０２においては、有効なデータ「１１１」の子は、「１１１０１０００」および「１１１０１００１」である。このように、単一の子を有する連続する節を単一の節に圧縮したものが、図２に示すパス圧縮トライ木構造である。ここでは、圧縮された節にはパス数ｓが示される（符号２０１参照）。さらに、各節が２ｋ個の子を持つように深さ方向に圧縮した多分木構造が、図３に示すレベル圧縮トライ木構造である。この木構造において、たとえば、第２層のレベル（符号３０１参照）では８（＝２３）の子が存在している。また、節「０００」、節「０１１」の子はそれぞれ２つである（符号３０２、３０３参照）。レベル圧縮トライ木構造は、ルーティングテーブル中のエントリをトライ木構造に写像して深さ方向に圧縮し、平均メモリアクセス回数を極小にすることになる。
【０００５】
（２）の文献においては、上記レベル圧縮トライ木構造を利用して、ＩＰｖ４パケットの宛先アドレス検索処理を実行している。ここでは、宛先テーブルを対象にして入力パケットの宛先アドレスに一致する最長のエントリを検索している。レベル圧縮トライ木構造を用いてＩＰｖ４（ＩＰバージョン４）用ルーティングテーブルを表現すると木の深さはＯ（ｌｏｇｌｏｇＮ）となる。ここに、Ｎはテーブルの要素数である。
【０００６】
図４は、上記文献にしたがったレベル圧縮トライ木構造を利用したＩＰアドレス検索処理を示すフローチャートである。図４に示すように、宛先ＩＰアドレスが投入されると、レベル圧縮トライ木構造における「ｉ」番目のレベルＬｉにおける検索が実行される（ステップ４０１）。初期的にこれはＬ１に対して実行される。ここで、部分木が存在すれば（ステップ４０２で(有り)）、さらに次のレベルにおける検索が実行される。
【０００７】
なお、ＩＰｖ４においては、テーブルの要素数Ｎ＝１０６程度であり、ｌｏｇｌｏｇＮ≒４．３２であることから、レベルは５に設定される。したがって、部分木が存在しつづければ「５」番目のレベルＬ５までステップ４０１、４０２が繰り返され得る。節が葉である場合には、部分木が存在しないと判定される（ステップ４０２で「無し」）。この場合には、当該節のレベルに関する、プレフィックス検査が実行される（ステップ４０３）。プレフィックスが宛先ＩＰアドレスと一致しない場合には（ステップ４０４で「不一致」）、一つ上位のレベル、つまりレベルＬｉの「ｉ」をデクリメントして、当該上位のレベルに関するプレフィックス検査が実行される。
その一方、プレフィックスが宛先ＩＰアドレスと一致する場合には（ステップ４０４で「一致」）、ネクストホップが参照され（ステップ４０５）、これが出力される。
【０００８】
【課題を解決するための手段】
しかしながら、（１）および（２）に記載されたものは、逐次処理ソフトウェアによる実現を前提としているため検索性能が低い。これは、従来型のマイクロプロセッサでは、ソフトウェア内の命令が逐次的に処理されることに起因して、単位時間あたりに実行可能な検索処理回数がメモリアクセス回数に反比例するためである。
【０００９】
また、（３）に記載されたものは、専用ハードウェアを用いるものであるため、検索性能は高い。しかしながら、経験則により宛先ＩＰアドレスのうち所定の１６ビット或いは２４ビットを先に検索して、残りのビットをさらに検索するという手法をとっている。したがって、異なる分布を有する探索空間の検索に応用する場合には、ポインタを多量に使用するため膨大なメモリを必要とする。さらに、膨大なメモリの使用はメモリアクセスレートの低下を招き結果的に検索性能が低下する。
【００１０】
本発明は、ＩＰｖ４をはじめ、多様な探索空間に対して高速な検索を実現できる情報検索装置を提供することを目的とする。
【００１１】
【課題を解決するための手段】
本発明の目的は、レベル圧縮トライ木構造を利用した最長一致検索を実行するための情報検索装置であって、前記レベル圧縮トライ木構造中の葉を検索する第１の命令を実行するための第１の処理ユニットと、プレフィックスおよび連想値からなる探索空間における入力語とプレフィックスとを比較して連想値を出力する第２の命令を実行するための第２の処理ユニットとを備え、第１の処理ユニットが、前記レベル圧縮トライ木構造中の各レベルの検索処理をパイプライン上に展開可能な構造を保持し、あるレベルの節点を特定する情報および入力語を入力して、前記レベル圧縮トライ木構造の各レベルの節点に関する節情報を記憶したメモリをアクセスするためのアドレスを算出するとともに、当該メモリをアクセスして、前記節情報を取得するメモリアクセス手段と、前記節情報から部分木の有無を判断して、部分木が存在する場合には次のレベルの節点を特定する情報および入力語を出力する一方、前記部分木が存在しない場合には、対応するプレフィックスを特定するためのポインタ値および入力語を出力する第１の制御手段とを有し、前記第２の処理ユニットが、各レベルのプレフィックスの検査をパイプライン上に展開可能な構造を保持し、前記ポインタ値に基づき、プレフィックスを記憶した第１のメモリにアクセスして、プレフィックスを取得するプレフィックス取得手段と、前記プレフィックス取得手段と並列的に動作し、前記ポインタ値に基づき、連想値を特定するためのポインタおよび次のレベルのプレフィックスを特定するためのポインタ値のいずれかを記憶した第２のメモリにアクセスして、前記連想値或いはポインタ値を取得する検査情報取得手段と、前記取得されたプレフィックスと入力語とを比較する比較手段と、前記比較手段による比較結果に基づき、プレフィックスと入力語が一致した場合には、予め取得されたポインタに基づき連想値メモリをアクセスして連想値を取得する連想値取得手段と、前記連想値が取得された場合には連想値を出力し、プレフィックスと入力語とが一致しない場合には、次のレベルのプレフィックスを特定するためのポインタ値を出力する第２の制御手段とを有し、前記第１の処理ユニットおよび第２の処理ユニットのそれぞれにて、前記パイプラインにより、メモリアクセスレートと等価なレートで、前記第１の命令および第２の命令が実行されることを特徴とする情報検索装置により達成される。
【００１２】
本発明によれば、メモリアクセスレートと等価なレートにて、第１の命令および第２の命令をそれぞれ実行するため、メモリアクセスレートにて、検索、たとえば、ＩＰ検索を実現することが可能となる。
【００１３】
また、第１の命令の実行においてあるレベルにおける節が葉であれば、当該レベルに関するプレフィックス検査を実行することができる。したがって、繰り返し回数が確定していない場合でも適切な検索を実現することができる。
【００１４】
好ましい実施態様においては、第１の処理ユニットが、前記レベル圧縮トライ木構造中の各レベルの検索処理をパイプライン上に展開したデータ駆動プログラム構造を保持した第１のデータ駆動型処理ユニットから構成され、かつ、第２の処理ユニットが、各レベルのプレフィックスの検査をパイプライン上に展開したデータ駆動プログラム構造を保持した第２のデータ駆動型処理ユニットから構成されている。
【００１５】
この実施態様においては、第１のデータ駆動型処理ユニットにおいて、パイプライン処理にてレベル圧縮トライ木構造の検索が実行され、第２のデータ駆動型処理ユニットにおいて、パイプライン処理にてプレフィックスと入力語との比較が実行される。したがって、極めて高速な検索が可能となる。また、第２のデータ駆動型処理ユニットにおいては、ポインタの先読みを実行することで、１回のメモリアクセスにて、プレフィックスの取得およびポインタの取得を実現している。
【００１６】
好ましい実施態様において、前記第１のデータ駆動型処理ユニットが、パイプラインにおける処理を識別するためのカラー、第１の複合命令、行き先およびデータからなるパケットを受理して、処理に必要なデータが揃うことにより発火する発火制御手段を備え、前記発火制御手段からの指示にしたがって、前記メモリアクセス手段が作動し、前記第１の制御手段が、部分木が存在する場合には、前記第１の複合命令、および、第１のデータ駆動型処理ユニットを行き先とするパケットを出力し、部分木が存在しない場合には、第２のデータ駆動型処理ユニットのための第２の複合命令、および、第２のデータ駆動型処理ユニットを行き先とするパケットを出力する。この命令を適宜変更することで、種々の探索空間の検索を実現することが可能となる。
【００１７】
より好ましい実施態様においては、前記メモリアクセス手段が、特定の単一または複数のレベルに属する節点に関する節情報を記憶した第１の節情報メモリをアクセスする第１の処理部と、他の節点に関する節情報を記憶した第２の節情報メモリをアクセスする第２の処理部とを有し、前記発火制御部からの指示にしたがって、何れかの処理部が作動する。
たとえば、前記第１の節情報メモリが前記情報検索装置に内部バスにて連結された内部メモリであり、第２の節情報メモリが、外部メモリであるのが望ましい。
【００１８】
また、別の好ましい実施態様において、前記第２のデータ駆動型処理ユニットは、パイプラインにおける処理を識別するためのカラー、第２の複合命令、行き先およびデータからなるパケットを受理して、処理に必要なデータが揃うことにより発火する第２の発火制御手段を備え、発火制御手段からの指示にしたがって、前記プレフィックス取得手段および検査情報取得手段が作動し、第２の制御手段が、プレフィックスと入力語とが一致しない場合に、第２の複合命令および第２のデータ駆動型処理ユニットを行き先とするパケットを出力する。
【００１９】
より好ましい実施態様においては、プレフィックス取得手段が、外部メモリである第１のメモリにアクセスし、前記検査情報取得手段が、別の外部メモリである第２のメモリにアクセスし、前記連想値取得手段が、内部メモリである連想値メモリにアクセスするように構成されている。
【００２０】
また、本発明の目的は、上記構成の、少なくとも一以上の第１の処理ユニットと、少なくとも一以上の第２の処理ユニットと、少なくとも一以上の外部メモリとを備えた情報検索用マルチプロセッサにより達成される。
第１の処理ユニットは２つ設けられているのが望ましい。ここでは、第１の処理ユニットの一方が、第１の外部メモリに接続され、第１の処理ユニットの他方が、第２の外部メモリに接続され、かつ、第２の処理ユニットが、第１および第２の外部メモリの双方に接続されているのが望ましい。
【００２１】
さらに、本発明の目的は、上記構成の情報検索装置やマルチプロセッサを備え、入力語として宛先ＩＰアドレスを受理し、連想語としてネクストホップを出力することを特徴とするルータによっても達成される。
【００２２】
【発明の実施の形態】
以下、添付図面を参照して本発明の実施の形態につき説明を加える。図５は、本実施の形態にかかる情報検索装置の処理機構を示すダイヤグラムである。図５に示すように、本実施の形態において、情報検索装置は、宛先ＩＰアドレスを受け入れて、レベル圧縮トライ木構造を探索して、部分検索空間へのポインタ（符号５１０参照）を出力する探索部５０１と、ポインタに指示されたプレフィックスと宛先ＩＰアドレスとを受け入れてプレフィックス検査を実行してネクストホップへのポインタ（符号５２０参照）を出力するプレフィックス検査部５１１と、ネクストホップへのポインタを受け入れて、ポインタにより示されたネクストホップを出力するネクストホップ参照部５２１とを備えている。
【００２３】
探索部５０１にて実行される処理自体は、図４のステップ４０１、４０２に略対応し、プレフィックス検査部５１１にて実行される処理自体は、図４のステップ４０３、４０４に略応する。しかしながら、本実施の形態においては、検索部５０１は、パイプライン並列処理が可能となるように、５つのレベルＬ１〜Ｌ５の検索処理をパイプライン上に展開したデータ駆動プログラム構造を備え、各レベルに関して、第１の命令（たとえば、符号５０１−１）が実行できるようになっている。また、プレフィックス検査部５１１は、５つのレベルＬｉ〜Ｌ（ｉ−４）のプレフィックス検査をパイプライン並列処理が可能となるように、これらの検索処理をパイプライン上に展開した第２のデータ駆動プログラム構造を備え、各レベルに関して第２の命令（たとえば、符号５１１−１）が実行できるようになっている。
【００２４】
図６は、本実施の形態にかかる第１の命令を示す図である。図６（ａ）に示すように、第１の命令においては、宛先ＩＰアドレスおよびレベル「ｉ」のトライ節点を特定するための情報を入力として（符号６０１、６０２参照）、トライ木の検索（符号６１０）が実行されて、入力されたものと同じ宛先ＩＰアドレスと、次のレベル「ｉ＋１」のトライ節点を特定するための情報などが出力されるようになっている（符号６１１、６１２参照）。なお、後述するように、処理対象となった節に部分木が存在するか、或いは、部分木が存在せず節が葉であったかにより出力される情報が異なる。
【００２５】
より詳細には、宛先ＩＰアドレス６２１は３２ビットのデータである。その一方、レベル「ｉ」のトライ節点を示す情報（符号６２２）は、図６（ｂ）に示すように、レベル「ｉ」における先頭の節へのポインタｌ、子の節数ｋ、および、探索済プレフィックス長ｐからなるデータの組（ｋ、ｐ、ｌ）から構成されている。これに基づきアドレスが計算されて、処理対象となる節点のデータを取得することが可能となる（ステップ６２３）。
【００２６】
取得されたアドレスにしたがって、メモリがアクセスされて（符号６２４参照）、当該節点に関するデータが取得される（ステップ６２４）。メモリアクセスにより取得されるデータは、当該節点に子が存在する場合、つまり、節が葉ではなく部分木がある場合には（ステップ６２５−２）、次のレベルＬ(i+1)のトライ節点の情報となる（符号６４２参照）である。
その一方、節点に子が存在しない場合、つまり、節が葉であり部分木が存在しない場合には（ステップ６２５−１）、後述する部分検索空間へのポインタとなる。
【００２７】
上記処理につきより具体的に説明を加える。最長一致検索において、探索空間は（プレフィックス、連想値(ネクストホップ)）からなるエントリの集合であり、入力語のプレフィックス（接頭語）に一致する最長のエントリが結果として出力される。本実施の形態においては、３２ビットの宛先ＩＰアドレスが入力語であり、この宛先ＩＰアドレスの先頭から任意のビット数だけを取り出したものがプレフィックスとなる。したがって、エントリ中で宛先ＩＰアドレス中の、原理的には３２種類のプレフィックスに一致したものの中から、最長のプレフィックス長のエントリを選択し、対応するネクストホップが出力される。
【００２８】
図３に示すレベル圧縮トライ木構造は、子の節数ｋ、圧縮パス長ｓおよび先頭の節へのポインタｌを用いて、図１２の表１２００により表すことができる。アドレスは、一組の節情報（ｋ，ｓ，ｌ）が格納されているメモリアドレスを示す。また、ポインタ値ｌに関して、アスタリスク（＊）を付したもの（たとえば符号１２０１参照）は、後述するプレフィックス情報の先頭要素を指し示している。表１２００において、ｋ＝０であるエントリのポインタ値ｌは、プレフィックス情報を示すことが理解できる。
【００２９】
たとえば、入力された３２ビットの宛先ＩＰアドレスが、「１１１００１０１・・・（以下２４ビットは省略する。）」であったと考える。ここでは、この宛先ＩＰアドレスを「Ａ」と称する。
最初の第１の命令の入力は、宛先ＩＰアドレス「Ａ」およびアドレス「０」のレベルＬ０のエントリ（３，０，１）から事前に計算されていた値（ｋ，ｐ，ｌ）＝（３，１，１）となる。
【００３０】
ステップ６２３に示すアドレスの算出においては、ｌ＝１に対して、Ａの先頭ｐビット目からｋビット分、すなわち、データ列「１１１(BIN)」＝７を加算する。これにより、アドレスは「１＋７＝８」となり、ステップ６２４において、アドレス８のエントリにアクセスされる。したがって、レベルＬ１の節情報として図１２のアドレス８に対する節情報（ｋ，ｓ，ｌ）＝（１，４，１７）が取得される（符号１２０２参照）。
【００３１】
ここでは、「ｋ≠０」であり、部分木が存在するため、次のレベルＬ２の節点を示す情報（ｋ，ｐ，ｌ）として、（１，１＋３＋４，１７）が出力される。ここに、探索済プレフィックス長である「ｐ＝１＋３＋４」は、「ｐ１＋ｋ１＋ｓ２」（ｐｉ，ｋｉ，ｓｉにおける添え字ｉは探索対象となっている節が属するレベルを示す。）にて表す。
【００３２】
次いで、レベルＬ２に関する処理が実行される。ここでは、第１の命令における入力は、宛先ＩＰアドレス「Ａ」および節点を示す情報（ｋ，ｐ，ｌ）＝（１，８，１７）である。ステップ６２３に示すアドレスの算出においては、ｌ＝１７に対して、Ａの先頭ｐビット目からｋビット分、すなわち、「１(BIN)」を加算することにより、アドレスは「１７＋１＝１８」となり、ステップ６２４において、アドレス１８のエントリにアクセスされる。したがって、取得される節情報（ｋ，ｓ，ｌ）＝（０，０，１４）となる（符号１２０３参照）。
ここでは、「ｋ＝０」であり、節は葉である。したがって、「１４」はプレフィックス情報へのポインタ値として出力される。プレフィックス情報へのポインタ値についても後に詳述する。
【００３３】
図７は、本実施の形態にかかる第２の命令を示す図である。図７（ａ）に示すように、第２の命令においては、３２ビットの宛先アドレス、および、プレフィックス情報（部分検索空間）へのポインタを入力として（符号７０１、７０２参照）、プレフィックス検査（符号７１０）が実行されて、宛先ＩＰアドレス（符号７１１参照）、および、ネクストホップまたはレベル「ｉ−１」のプレフィックス情報（部分検索空間）へのポインタ（符号７１２参照）が出力されるようになっている。後述するように、ネクストホップは、宛先ＩＰアドレスとプレフィックスとが一致した場合に出力され、これらが一致しない場合には、レベル「ｉ−１」のプレフィックス情報へのポインタが出力されるようになっている。
【００３４】
プレフィックス情報リストは、各々が（プレフィックス，プレフィックス長，ネクストホップへのポインタ，次の要素へのポインタ）という４つの要素を有する線形リストである。たとえば、葉「１１１０１００１」に関して、プレフィックス情報として、
（１１１０１００１，８，０，０）→（１１１，３，１，ｎｕｌｌ）となっている。
【００３５】
図７（ｂ）に示すように、部分検索空間へのポインタ７２２により、メモリがアクセスされて、プレフィックスが取得される（ステップ７２３）とともに、プレフィックス長およびポインタ情報、つまり、リスト構造における次の要素へのポインタおよびネクストホップへのポインタが出力される（ステップ７２４）。
宛先ＩＰアドレスとプレフィックスとが比較され、これらが一致するか否かが判断される（ステップ７２５）。両者が一致する場合には（ステップ７２６−１）、ネクストホップへのポインタを利用してネクストホップテーブル７２７がアクセスされ、宛先ＩＰアドレスとともにネクストホップが出力される（符号７３１、７３２参照）。
【００３６】
その一方、宛先ＩＰアドレスとプレフィックスとが一致しない場合には（ステップ７２６−２参照）、宛先ＩＰアドレスおよびリスト構造における次の要素へのポインタが出力される（符号７３３、７３４参照）。
上記宛先ＩＰアドレス「Ａ」に関して、レベルＬ２の第２の命令では、ポインタ値「１４」にて示されるプレフィックス情報リストが読み出されて、その先頭要素（つまり、プレフィックス）と、宛先ＩＰアドレス「Ａ」の先頭８ビット分である「１１１００１０１」とが比較される。これらは一致しないため、リスト中の４番目の要素、つまり、次の要素のポインタ値「０」が出力される。
【００３７】
次いで、レベルＬ１の第２の命令では、上記ポインタ値にて示されるリストの先頭要素「１１１」と、宛先ＩＰアドレス「Ａ」の先頭３ビット分である「１１１」とが比較される。ここでは両者が一致するため、ネクストホップへのポインタが出力され、これに基づいてネクストホップテーブルが参照される。このような処理によりネクストホップを出力することが可能となる。
【００３８】
本実施の形態においては、このような第1の命令および第２の命令により、図８に示すように、そのデータフローを模式的に示すことができる。図８に示すように、レベルＬ１に関する第１の命令の実行を表す処理ノード８０１が実行され、節点に子が存在する場合には（符号８０６）、レベルＬ２に関する第１の命令の実行を表す処理ノード８０２が実行される。以下、節点に子が存在しなくなるまで、第１の命令の実行を表す処理ノード８０３、８０４、８０５が、順次実行されることになる。あるレベルにおいて節点に子が存在しなくなると（符号８０７参照）、第２の命令の実行を表す処理ノード８１１が実行される。ここでは、第１の命令のレベルに対応するレベルＬｉに関して第２の命令が実行される。
【００３９】
第２の命令の実行を表す処理ノード８１１において、ＩＰアドレスとプレフィックスとが一致しない場合には、これらが一致するまで、第２の命令の実行を表す処理ノード８１２、８１３、８１４、８１５が順次実行されることになる。あるレベルにおいて、これらが一致すると、ネクストホップが出力される。
【００４０】
図６に示す第１の命令は、図９に示すような第１のデータ駆動型処理ユニットにより実現することができる。本実施の形態において、第１のデータ駆動型処理ユニット９００は、必要なデータの入力があるまでデータを保持しておき、データが揃ったときに発火させる発火制御部（または待ち合わせ記憶部、以下、「ＭＭ」と称する。）９０１と、内部メモリ９０４にアクセスするとともに必要な演算を実行する第１のメモリアクセス／演算部（以下、「ＭＡＵ」と称する。）９０２と、後述する外部ＲＡＭなどの外部メモリにアクセスするとともに必要な演算を実行する第２のＭＡＵ９０３と、内部メモリ９０４と、第１の命令を記憶したプログラム記憶部（以下、「ＰＳ」と称する。）９０５とを有している。
【００４１】
入力として、図６を参照して説明したように、入力「ＩＮ」として、宛先ＩＰアドレスおよび節点を特定するための情報（節情報）などが与えられる。たとえば、入力されるパケットは、
（カラー，行き先，命令，データ）
という形式となっている。第１の実施の形態では、上記第１のデータ駆動型ユニット９００に与えられる命令は、第１の命令であり、与えられるデータは、宛先ＩＰアドレスや節点を示す情報（ｋ，ｐ，ｌ）である。また、カラーとはパイプラインにおける処理の識別子である。
【００４２】
ＭＭ９０１は、これら双方のデータが揃うと発火して、これらを第１のＭＡＵ９０２或いは第２のＭＡＵ９０３に出力する。本実施の形態においては、内部メモリ９０４に、レベルＬ１の節情報を記憶し、外部メモリに、レベルＬ２〜Ｌ５の節情報を記憶している。したがって、ＭＭ９０１は、処理対象の節のレベルにしたがって、第１のＭＡＵ９０２或いは第２のＭＡＵ９０３のいずれかにデータを与えている。
【００４３】
上述したように、内部メモリ９０４および第２のＭＡＵ９０３がアクセスする外部メモリには、それぞれ、予め定められたレベルの節情報（ｋ，ｓ，ｌ）（図１２参照）が記憶されている。したがって、ＭＭ９０１からデータを与えられた何れかのＭＡＵ（９０２或いは９０３）は、ポインタｌ、子の節数ｋおよび探索済プレフィックス長ｐから、処理対象となる節の情報が記憶されているアドレスを算出して、内部メモリ９０４或いは外部メモリをアクセスし、必要な節情報（ｋ，ｓ，ｌ）を取得する。次いで、取得した節情報のｋの値にしたがって、出力すべきデータ（節点を示す情報（ｋ、ｐ，ｌ）またはプレフィックス情報へのポインタ）を含むパケットを、ＰＳ９０５に出力する。
【００４４】
ＰＳ９０５は、節の子の有無に基づき、パケット中の行き先や命令を書き換えて出力する。たとえば、子がある場合には、行き先は第１のデータ駆動型処理ユニット９００（並列に配置されている場合には、同等の機能を分担するデータ駆動型処理ユニットともなり得る）であり、命令は第１の命令である。その一方、子が無い場合には、行き先は後述する第２のデータ駆動型処理ユニットであり、命令は第２の命令となる。このようにして、第１のデータ駆動型処理ユニット９００により第１の命令が実行される。
【００４５】
また、図７に示す第２の命令は、図１０に示す第２のデータ駆動型処理ユニットにより実現することができる。第２のデータ駆動型処理ユニット１０００は、ＭＭ１００１と、第１のＭＡＵ１００２と、第２のＭＡＵ１００３と、プレフィックス比較部（以下、「ＰＣＵ」と称する。）１００４と、第３のＭＡＵ１００５と、内部メモリ１００６と、ＰＳ１００７とを有している。
【００４６】
第２のデータ駆動型処理ユニット１０００において、第１のＭＡＵ１００２は、第１の外部メモリにアクセスして、第１の外部メモリに記憶されている、プレフィックスを取得し、その一方、第２のＭＡＵ１００３は、第２の外部メモリにアクセスして、当該第２の外部メモリに記憶されている、プレフィックス情報を構成するプレフィックス長、ネクストホップ情報へのポインタおよび次の要素へのポインタを取得する。また、内部メモリ１００６には、ネクストホップテーブルが格納されている。
【００４７】
図７を参照して説明したように、入力「ＩＮ」として、宛先ＩＰアドレスおよびプレフィックス情報へのポインタが与えられる。
ＭＭ１００１は、双方のデータが揃うと発火して、プレフィックス情報へのポインタを第１および第２のＭＡＵ１００２、１００３に与えるとともに、宛先ＩアドレスをＰＣＵ１００４に与える。
第１のＭＡＵ１００２は、ポインタを利用して第１の外部メモリにアクセスして、対応するプレフィックス等を取得する。第２のＭＡＵ１００３は、ポインタを利用して第２の外部メモリにアクセスして、対応するポインタ情報を取得する。これらは、ＰＣＵ１００４に伝達される。
【００４８】
ＰＣＵ１００４は、宛先ＩＰアドレスとプレフィックスとを比較して、一致した場合には、ネクストホップへのポインタを、一致しない場合には、次の要素へのポインタを第３のＭＡＵ１００５に与える。第３のＭＡＵ１００５は、ネクストホップへのポインタが与えられると、これを利用して内部メモリ１００６をアクセスしてネクストホップを取得する。これにより、第３のＭＡＵ１００５からは、出力すべきデータ（ネクストホップ、または、次の要素へのポインタ）を含むパケットをＰＳ１００７に出力することができる。
【００４９】
ＰＳ１００７は、パケットが次の要素へのポインタを含めば、パケット中の行き先を第２のデータ駆動型処理ユニット１０００（並列に配置されている場合には、同等の機能を分担するデータ駆動型処理ユニットともなり得る）とするようにパケットを変換して出力する。このようにして、第２のデータ駆動型ユニット１０００により第２の命令を実行することができる。
【００５０】
図１１は、上記第１のデータ駆動型処理ユニットおよび第２のデータ駆動型処理ユニットを利用した、ＩＰアドレス検索用データ駆動型マルチプロセッサ装置の例を示すブロックダイヤグラムである。このようにマルチプロセッサ装置１１００は、既存のデータ駆動型処理ユニット１１０１−１、・・・、１１０１−ｎが、インタープロセッサルータ１１０２に接続された形態となっている。この例では、マルチプロセッサ装置１１００は、２つの第１のデータ駆動型処理ユニット１１０３−１、１１０３−２、および、単一の第２のデータ駆動型処理ユニット１１０４を有している。一方の第１のデータ駆動型処理ユニット１１０３−１は、第１の外部メモリ１１０５−１にアクセスでき、他方の第１のデータ駆動型処理ユニット１１０３−２は、第２の外部メモリ１１０５−２にアクセスすることができる。さらに、第２のデータ駆動型処理ユニット１１０４は、第１の外部メモリ１１０５−１および第２の外部メモリ１１０５−２の双方にアクセスすることができる。
【００５１】
典型的なＩＰルーティングテーブル（要素数Ｎ＝５５０００）の場合には、レベルＬ１の節数が６２０００、レベルＬ２の節数が３１０００、レベルＬ３の節数が３４０００、レベルＬ４の節数が４０００、レベルＬ５の節数が１２０となる。この例では、レベルＬ１の節情報を、内部メモリ（図９の符号９０４参照）に格納し、他のレベルの節情報を、外部メモリ１１０５−１、１１０５−２に分散して格納している。また、プレフィックス情報リストのうち、プレフィックスおよびプレフィックス長が第１の外部メモリ１１０５−１に格納し、ネクストホップ情報へのポインタおよび次の要素のポインタを、第２の外部メモリ１１０５−２に格納している。このような構成とすることで、外部メモリへのアクセスレートが支配的となり、略このレートでＩＰアドレス検索を実現することが可能となる。
【００５２】
このように、本実施の形態によれば、レベル圧縮トライ木構造による最長一致検索処理を、パイプライン並列・同時並行処理にて実現できる。また、必要最低限のハードウェアの追加で、複合命令を実行することが可能である。さらに、メモリアクセスの並列パイプライン化によりメモリ参照遅延を隠蔽でき、これにより、外部メモリのバンド幅と等しいレートでの検索が可能となる。また、ルーティングテーブル内のプレフィックス分布に応じて、最適なプログラムやメモリ割り当てを、容易にかつ柔軟に設定することが可能である。
【００５３】
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
たとえば、前記実施の形態においては、ＩＰｖ４のルーティングテーブル検索に本発明を適用したがこれに限定されるものではなく、ＩＰｖ６やＭＰＬＳラベルスイッチにおけるルーティングテーブルの検索、ＣｏＳにおけるサービス内容の検索にも本発明が適用できることは言うまでもない。さらに、自然言語文の形態素解析における文節認識のために本発明にかかる検索を利用することも可能である。したがって、データベース、アクティブネットワークノード、アプリケーションサーバ、ウェブ検索エンジンなどに本発明を適用して、高速な検索を実現することも可能である。
【００５４】
また、前記実施の形態において、データ駆動型マルチプロセッサ装置には、２つの第１のデータ駆動型処理ユニットおよび単一の第２のデータ駆動型処理ユニットを搭載したが、これに限定されるものではなく、ルーティングテーブル内のプレフィックス分布に基づく、外部メモリへのデータの分散記憶などにしたがって、データ駆動型処理ユニットの数は変更できることは言うまでもない。
【００５５】
さらに、大規模ＩＰアドレス検索装置など、大規模な装置においては、図１１に示すデータ駆動型マルチプロセッサ装置を、ディジーチェーン型に複数接続して、負荷分散させても良い。この場合には、レベル圧縮トライ木構造の第１のレベルＬ１をチップ数に応じて分割し、その部分木に関する情報を、各チップに接続された内部メモリ／外部メモリに格納するのが望ましい。これにより、チップ数に比例して（つまり線形に）ＩＰアドレス検索性能を向上させることが可能となる。
【００５６】
また、前記実施の形態において、第１のデータ駆動型処理ユニットは、二つのＭＡＵを有し、一方が内部メモリにアクセスし、他方が外部メモリにアクセスするように構成されているがこれに限定されるものではなく、第１のデータ駆動型処理ユニットにおいて単一のＭＡＵを設け、これが内部メモリ或いは外部メモリにアクセスするような構成をとっても良い。
【００５７】
さらに、前記実施の形態においては、第１の命令を実行する第１のデータ駆動型処理ユニットおよび第２の命令を実行する第２のデータ駆動型処理ユニットから情報検索装置を構成している。しかしながら、上記命令を実行する処理ユニットがデータ駆動型でなくとも、本発明を適用することは可能である。たとえば、ノイマン型の処理ユニットであっても、図５に示すような構造、つまり、パイプライン型処理の形態でレベル木構造の検索およびプレフィックス検査を実行し、かつ、第１の命令および第２の命令をメモリアクセスレートと等価な処理レートにて処理できるようなものであれば良い。
なお、本明細書において、一つの手段の機能が、二つ以上の物理的手段により実現されても、若しくは、二つ以上の手段の機能が、一つの物理的手段により実現されてもよい。
【００５８】
【発明の効果】
本発明によれば、多様な探索空間に対して高速な検索を実現できる情報検索装置を提供することが可能となる。
【図面の簡単な説明】
【図１】  図１は、トライ木構造を示す図である。
【図２】  図２は、パス圧縮トライ木構造を示す図である。
【図３】  図３は、レベル圧縮トライ木構造を示す図である。
【図４】  図４は、レベル圧縮トライ木構造を利用したＩＰアドレス検索処理を示すフローチャートである。
【図５】  図５は、本発明の実施の形態にかかる情報検索装置の処理機構を示すダイヤグラムである。
【図６】  図６は、本実施の形態にかかる第１の命令を示す図である。
【図７】  図７は、本実施の形態にかかる第２の命令を示す図である。
【図８】  図８は、本実施の形態にかかるデータフローを模式的に示す図である。
【図９】  図９は、本実施の形態にかかる第１のデータ駆動型処理ユニットの構成を示すブロックダイヤグラムである。
【図１０】  図１０は、本実施の形態にかかる第２のデータ駆動型処理ユニットの構成を示すブロックダイヤグラムである。
【図１１】  図１１は、本実施の形態にかかる第１のデータ駆動型処理ユニットおよび第２のデータ駆動型処理ユニットを利用した、ＩＰアドレス検索用データ駆動型マルチプロセッサ装置の例を示すブロックダイヤグラムである。
【図１２】  図１２は、本実施の形態にかかる節情報を説明するための図である。
【符号の説明】
５０１    検索部
５１１    プレフィックス検査部
５２１    ネクストホップ参照部
９００    第１のデータ駆動型処理ユニット
９０１    発火制御部
９０２、９０３  メモリアクセス／演算部
９０４    内部メモリ
９０５    プログラム記憶部
１０００  第２のデータ駆動型処理ユニット
１００１  発火制御部
１００２、１００３、１００５  メモリアクセス／演算部
１００４  プレフィックス比較部
１００６  内部メモリ
１００６  プログラム記憶部
【図１】
0004726310.tif 000002
【図２】
0004726310.tif 000003
【図３】
0004726310.tif 000004
【図４】
0004726310.tif 000005
【図５】
0004726310.tif 000006
【図６】
0004726310.tif 000007
【図７】
0004726310.tif 000008
【図８】
0004726310.tif 000009
【図９】
0004726310.tif 000010
【図１０】
0004726310.tif 000011
【図１１】
0004726310.tif 000012
【図１２】
0004726310.tif 000013