JP2005328149A - 検索プログラム、検索用回路及びルータ - Google Patents

検索プログラム、検索用回路及びルータ Download PDF

Info

Publication number
JP2005328149A
JP2005328149A JP2004142288A JP2004142288A JP2005328149A JP 2005328149 A JP2005328149 A JP 2005328149A JP 2004142288 A JP2004142288 A JP 2004142288A JP 2004142288 A JP2004142288 A JP 2004142288A JP 2005328149 A JP2005328149 A JP 2005328149A
Authority
JP
Japan
Prior art keywords
address
data
unit
search
digit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2004142288A
Other languages
English (en)
Inventor
Hirohiko Shibata
大彦 柴田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Electronics Corp
Original Assignee
NEC Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Electronics Corp filed Critical NEC Electronics Corp
Priority to JP2004142288A priority Critical patent/JP2005328149A/ja
Publication of JP2005328149A publication Critical patent/JP2005328149A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】 ルーティング用のデータベースの検索時間の不確定性を低減する。
【解決手段】 データの登録時、検索キーを用いて検索される登録データをn−1個の0と1個の1とからなるn桁のワンホット表現に変換する。その検索キーを所定桁数ごとに区切る。区切られた検索キーを順次用いてメモリ空間上のアドレスを指定する。そのアドレスからn桁のデータを抽出してワンホット表現と各桁ごとに論理和を取り同じアドレスに書き込む。データの検索時、検索キーを所定桁数ごとに区切る。区切られた第1番目の検索キーを用いてメモリ空間上のアドレスを指定する。そのアドレスからn桁のデータを抽出して全ての桁が1からなるデータと各桁ごとに論理積を取り、同じアドレスに書き込む。区切られた第2番目以降の検索キーを順次用いてメモリ空間上のアドレスを指定する。そのアドレスからn桁のデータを抽出して各桁ごとに論理積を取り、同じアドレスに書き込む。
【選択図】図1

Description

本発明は、IPルータのパケット転送動作での経路決定に用いられるような、テーブル構築/検索方法に関する。
IPパケットのルーティングには、データベースを検索することが必要とされる。IPルータの場合、一例として、パケットに含まれるIPヘッダに書かれたあて先IPアドレスは、データベースにより、装置内で複数ある次段の処理回路のうちそのパケットを転送すべき処理回路を特定するデータに関連づけられる。
このような処理のうち最も単純な方法は線形探索法である。線形探索法においては、あて先IPアドレスと次段の処理回路のアドレスとを結合したデータをメモリの1アドレスに書き込んだメモリ空間上の表が用意される。パケットが受け取られたとき、そのヘッダからあて先IPアドレスが取り出される。次に、上記メモリ空間上の表のあて先IPアドレスが端から順次読み出され、読み出されたIPアドレスと上記ヘッダから取り出されたIPアドレスとが照合され、一致したものに上記メモリ空間上の表で関連づけられた次段の処理回路に、そのパケットが転送される。
線形探索法よりも高速に動作する検索方法がいくつか存在する。基本的で効果的な方法として、ハッシュ方式が知られている。以降、上記のような照合対象となるデータはキーと呼ばれる。
ハッシュ方式では、線形探索法におけるメモリ空間上の表に似た表を格納するメモリ空間が用意される。さらに、ハッシュ関数が用意される。ハッシュ関数により、大きなサイズのキー(例示:IPルータにおけるIPv4でのアドレス(32bit))と小さいサイズのデータ(ハッシュ値)とに多対一の対応が与えられる。
図1を参照すると、ハッシュ方式のデータベースを示すイメージ図が示されている。線形探索法でのメモリ空間上の表においてあて先IPアドレスと次段の処理回路のアドレスとを関連づけたデータに相当するのが、図1における登録キー域2、データ域4、ポインタ域6を持った結合データ(構造体)である。メモリ空間には他に、ハッシュ値をアドレスとして指されるそのサイズに見合った小さい領域(ハッシュ表)が用意され、この領域は運用前に特定の末尾記号8で初期化されている。
図2を参照すると、ハッシュ方式のデータベースにデータを登録する手順を示すフローチャートが示されている。
ステップS102:登録が必要になるとまずこの構造体のメモリPが一領域確保される。
ステップS104:登録キーからハッシュ関数によって小さいサイズのハッシュ値が計算される。
ステップS106:あて先IPアドレスに当る登録キーが登録キー域2に書き込まれる。
ステップS108:次段の処理回路のアドレスに当たる登録データがデータ域4に書き込まれる。
ステップS110:ハッシュ表上でハッシュ値の指す位置にある記憶域の内容はこのPを指すポインタに変更され、初期にハッシュ表にあった末尾記号は構造体上のPのポインタ域に移される。
ステップS112:複数の登録キーに対して繰り返されるこのフローにおいて、ハッシュ値が以前の登録キーのハッシュ値と同一であった場合(シノニムと呼ばれる)には、ハッシュ表上のハッシュ値の指す位置にある記憶域の内容はそのとき新たに確保された領域Pを指す構造体上のポインタ域に移される。
結果として、ハッシュ値が指すハッシュ表の位置から始まって最初に確保された領域(ポインタ域に末尾記号が登録されている)までの、図1に示されるような連鎖(シノニムチェーン)が出来上がる。
図3を参照すると、ハッシュ方式のデータベースを検索する手順を示すフローチャートが示されている。
ステップS122:検索キーが与えられると、ハッシュ関数によってハッシュ値が計算され、ハッシュ表上においてそのハッシュ値の指す位置にある記憶域の内容が参照される。
ステップS124:ハッシュ表内容が末尾記号の場合は検索キーが登録されていないと判断され、失敗が通知されて検索が終了される。
ステップS126:ハッシュ表内容が末尾記号以外の場合、その内容をポインタとしてメモリから構造体Pが読み出される。
ステップS128:検索キーと読み出された構造体Pの登録キー域2とが照合される。
ステップS134:照合の結果が一致であった場合、領域Pのデータ域4が検索結果として出力され、検索が終了される。
ステップS130:照合の結果が一致しない場合、ポインタ域6が参照され、末尾記号であるか否かの判定(末尾記号であったら失敗が通知されて終了)が行われる。
ステップS132:末尾記号でなかったら領域Pのポインタ域の指す構造体の次の領域が新たにPとして読み取られ、ステップS128に戻る。
以上に示されるようなハッシュ方式のデータベース構築/検索手順は、線形探索に比べればはるかに高速だが、キーの一致判定や末尾記号の判定の結果によって検索動作自身を繰り返す手順によって低速になる要素もある。
さらに、検索が終了するまでの時間が一定でないという性質もある。そのため、検索の終了を監視する手順と手段が必要である。
他に高速なデータベースの検索方法としては、特殊な回路構成のメモリセルの配列に前面アクセスする連想メモリ方式や、データをツリー構造に登録することで読み出し回数を減らすツリー検索方式などがある。
同一キーに対してデータチェーンを作る方法、アドレスレジスタにある最新のデータベースアクセス痕跡を使って、登録キー/検索キー比較の結果が早く一致するようにシノニムチェーンを再構成する方法が知られている(特許文献1参照)。
特定のアプリケーション(MPEG4)において、検索キーがもつ特定の強い性質:RUN/LEVEL/LASTの領域を持ちこれらを分離することで簡単な処理系が得られるという性質を使った処理速度改善方法が知られている(特許文献2参照)。
似通った文字列に対しても偏りの少ないハッシュ値を確実に発生するための工夫が知られている(特許文献3参照)。
連想メモリとパトリシアツリーの組み合わせが知られている(特許文献4参照)。
特開平05−143648号公報 特開2000−105770号公報 特開2002−49645号公報 特開2003−234762号公報
本発明の目的は、検索が一定の時間で終了する検索プログラム、検索用回路、及びルータを提供することである。
本発明の他の目的は、検索が終了したタイミングを監視する手段を必要としない検索プログラム、検索用回路、及びルータを提供することである。
本発明のさらに他の目的は、検索動作が高速な検索プログラム、検索用回路、及びルータを提供することである。
以下に、[発明を実施するための最良の形態]で使用される番号を括弧付きで用いて、課題を解決するための手段を説明する。これらの番号は、[特許請求の範囲]の記載と[発明を実施するための最良の形態]との対応関係を明らかにするために付加されたものである。ただし、それらの番号を、[特許請求の範囲]に記載されている発明の技術的範囲の解釈に用いてはならない。
本発明による検索プログラム(22)は、登録用プログラム(24)と、検索用プログラム(26)とを備えている。
登録用プログラム(24)は、検索キーを用いて検索される登録データを、n−1個の0と1個の1とからなるn桁のワンホット表現に変換するステップ(S2、S42)と、検索キーを所定桁数ごとに区切るステップ(S6、S16、S46、S56)と、区切られた検索キーを順次、用いてメモリ空間上のアドレスを指定する指定ステップ(S8、S48)と、指定ステップにおいて指定されたアドレスからn桁のデータを抽出してワンホット表現と各桁ごとに論理和を取り、同じアドレスに書き込むステップ(S10、S50)とを備えている。
検索用プログラム(26)は、入力された検索キーを所定桁数ごとに区切るステップ(S24、S34、S68、S78)と、区切られた第1番目の検索キーを用いてメモリ空間上のアドレスを指定する第2指定ステップ(S26の一回目、S70の一回目)と、第2指定ステップにおいて指定されたアドレスからn桁のデータを抽出して、全ての桁が1からなるデータと各桁ごとに論理積を取り、一時データに書き込むステップ(S28の一回目、S72の一回目)と、区切られた第2番目以降の検索キーを順次又は並列して用いてメモリ空間上のアドレスを指定する第3指定ステップ(S26の二回目以降、S70の二回目以降)と、第3指定ステップにおいて指定されたアドレスからn桁のデータを抽出して一時データと各桁ごとに論理積を取って一時データを更新するステップ(S28の二回目以降、S72の二回目以降)と、第3指定ステップにおいて検索キーの全ての区切りが用いられたとき、一時データを出力するステップ(S36Yes、S80Yes)とを備えている。
本発明による検索用回路(50)は、登録部(60)と、検索部(70)とを備えている。
登録部(60)は、検索キーを用いて検索される登録データを、n−1個の0と1個の1とからなるn桁のワンホット表現に変換するワンホット表現変換部(62)と、検索キーを所定桁数ごとに区切る検索キー区切り部(63)と、区切られた検索キーを順次、用いてメモリ空間上のアドレスを指定するアドレス指定部(64)と、アドレス指定部により指定されたアドレスからn桁のデータを抽出してワンホット表現と各桁ごとに論理和を取り、同じアドレスに書き込む論理和書込部(65)とを備えている。
検索部(70)は、入力された検索キーを所定桁数ごとに区切る第2検索キー区切り部(71)と、区切られた第1番目の検索キーを用いてメモリ空間上のアドレスを指定する第2アドレス指定部(72)と、第2アドレス指定部により指定されたアドレスからn桁のデータを抽出して、全ての桁が1からなるデータと各桁ごとに論理積を取り、一時データとして保存する論理積書込部(73)と、区切られた第2番目以降の検索キーを順次又は並列して用いてメモリ空間上のアドレスを指定する第3アドレス指定部(74)と、第3アドレス指定部により指定されたアドレスからn桁のデータを抽出して一時データと各桁ごとに論理積を取って一時データを更新する第2論理積書込部(75)と、第3アドレス指定部により検索キーの全ての区切りが用いられたとき、一時データを出力する出力部(77)を備えている。
本発明によるルータは、登録部(60)と、検索部(70)とを備えている。
登録部(60)は、検索キーを用いて検索される登録データを、n−1個の0と1個の1とからなるn桁のワンホット表現に変換するワンホット表現変換部(62)と、検索キーを所定桁数ごとに区切る検索キー区切り部(63)と、区切られた検索キーを順次、用いてメモリ空間上のアドレスを指定するアドレス指定部(64)と、アドレス指定部により指定されたアドレスからn桁のデータを抽出してワンホット表現と各桁ごとに論理和を取り、同じアドレスに書き込む論理和書込部(65)とを備えている。
検索部(70)は、入力された検索キーを所定桁数ごとに区切る検索キー区切り部(71)と、区切られた第1番目の検索キーを用いてメモリ空間上のアドレスを指定する第2アドレス指定部(72)と、第2アドレス指定部により指定されたアドレスからn桁のデータを抽出して、全ての桁が1からなるデータと各桁ごとに論理積を取り、一時データとして保存する論理積書込部(73)と、区切られた第2番目以降の検索キーを順次又は並列して用いてメモリ空間上のアドレスを指定する第3アドレス指定部(74)と、第3アドレス指定部により指定されたアドレスからn桁のデータを抽出して一時データと各桁ごとに論理積を取り、一時データを更新する第2論理積書込部(75)と、第3アドレス指定部により検索キーの全ての区切りが用いられたとき、一時データを出力する出力部(77)とを備えている。
本発明によれば、検索が一定の時間で終了する検索プログラム、検索用回路、及びルータが提供される。
さらに本発明によれば、検索が終了したタイミングを監視する手段を必要としない検索プログラム、検索用回路、及びルータが提供される。
さらに本発明によれば、検索動作が高速な検索プログラム、検索用回路、及びルータが提供される。
以下、図面を参照しながら本発明を実施するための最良の形態における検索プログラム、検索用回路、ルータについて説明する。
(第1実施例)
図4を参照すると、本実施例における検索プログラム又は検索用回路の構成が示されている。検索プログラム又は検索用回路50は、登録部60と検索部70とを備えている。
登録部60は、入力部61と、ワンホット表現変換部62と、検索キー区切り部63と、アドレス指定部64と、論理和書込部65を備えている。検索部70は、第2検索キー区切り部71と、第2アドレス指定部72と、論理積書込部73と、第3アドレス指定部74と、第2論理積書込部75と、ワンホット表現逆変換部76と、出力部77とを備えている。検索キー区切り部63と、第2検索キー区切り部71とは同一のプログラム又は回路により実現されていてもよい。アドレス指定部64と、第2アドレス指定部72と、第3アドレス指定部74とは、同一のプログラム又は回路により実現されていてもよい。論理積書込部73と、第2論理積書込部75とは同一のプログラム又は回路により実現されていてもよい。
検索プログラム又は検索用回路50は、検索キーを入力して対応する登録データを出力する検索動作を行う。検索キーは例えばネットワーク中でデータが送られるあて先アドレスを表し、登録データは例えばデータが次に送られる回路のアドレスを表す。検索プログラム又は検索用回路50はさらに、検索キーとそれに対応する登録データとを登録する登録動作も行う。
登録動作において、入力部61は、検索キーと対応する登録データとを読み込む。ワンホット表現変換部62は、読み込まれた登録データ(バイナリデータ等の形式をしている)を、n−1個の0と1個の1とからなるn桁のワンホット表現に変換する。検索キー区切り部63は、検索キーを所定桁数ごとに区切る。アドレス指定部64は、区切られた検索キーを順次、用いてメモリ空間上のアドレスを指定する。論理和書込部65は、アドレス指定部により指定されたアドレスからn桁のデータを抽出して、登録データから得られたワンホット表現と各桁ごとに論理和を取り、同じアドレスに書き込む。
検索動作において、入力部61は、検索キーを読み込む。第2検索キー区切り部71は、入力された検索キーを所定桁数ごとに区切る。第2アドレス指定部72は、区切られた第1番目の検索キーを用いてメモリ空間上のアドレスを指定する。論理積書込部73は、第2アドレス指定部により指定されたアドレスからn桁のデータを抽出して、全ての桁が1からなるデータと各桁ごとに論理積を取り、同じアドレスに書き込む。第3アドレス指定部74は、区切られた第2番目以降の検索キーを順次、用いてメモリ空間上のアドレスを指定する。第2論理積書込部75は、第3アドレス指定部により指定されたアドレスからn桁のデータを抽出して各桁ごとに論理積を取り、同じアドレスに書き込む。この動作が検索キーの最後の区切りまで行われたとき、ワンホット表現逆変換部76は、得られた論理積をワンホット表現から元のバイナリデータ等のデータに戻す。これにより登録データが得られる。得られた登録データは、出力部77により出力される。
こうした構成は、電子回路によってハードウェア的に(半導体上の回路構成として)実現することも可能であり、ソフトウェアによって実現することも可能である。一部はソフトウェア、他の一部は電子回路によって構成されてもよい。
図5を参照すると、本実施例におけるルータの構成が示されている。ルータ2は、通信部8と、入力部10と、出力部12と、検索部14とを備えている。検索部14は、演算制御部16と記憶部18とを備えている。
外部回路4から検索キー(IPアドレスなどのあて先アドレス)を含むデータを通信部8が受信すると、入力部10はその検索キー11を抽出して検索部14に送る。検索部14では、後述するテーブルとプログラムを用いて、検索キー11に対応づけられた次段の送り先のアドレスである登録データを検索する。検索された登録データは出力部12に出力される。通信部8は、出力部12から登録データ13を受け取り、その登録データ13に示されるアドレス(次段の処理回路のアドレス)を有する外部回路6に、外部回路4から受け取ったデータを転送する。以下の記述において、この動作は検索動作と呼ばれる。
さらに、ルータ2は、外部回路4を経由して送られてくるデータを用いて、検索キー11と登録データ13との関連づけを変更する。以下の記述において、この動作は登録動作と呼ばれる。
図6を参照すると、記憶部18は、テーブル20と、検索プログラム22とを格納している。検索プログラム22は、登録用プログラム24と、検索用プログラム26と、ワンホット表現プログラム28とを含んでいる。
以下の説明においては、図4に示される構成は検索プログラム22により実現されているものとして説明がなされるが、検索プログラム22に代えて、電子回路によりハードウェア的に実現されることも可能である。
以下において、記憶部18に格納されたプログラムを演算制御部16が読み出し、そのプログラムに記述された手順に従って行う動作は、当該プログラム自身が行う動作として記述される。
ワンホット表現プログラム28は、バイナリデータ等のデータを、“000・・・0”の中のいずれか一つ、そして唯一つの桁が“1”である表現(ワンホット表現)に変換する機能を有する。ワンホット表現プログラム28はさらに、ワンホット表現をバイナリデータ等のデータに逆変換する機能を有する。
図7を参照すると、ワンホット表現プログラム28が行う変換の最も簡単な例が示されている。十進数で0、すなわちバイナリ表現で0の値は、ワンホット表現では最も下位の桁のみ1で他の桁はすべて0の表現、“000001”で表現される。十進数で1、すなわちバイナリ表現で1の値は、ワンホット表現では二桁目のみ1で他の桁はすべて0の表現、“000010”で表現されている。十進数で2、すなわちバイナリ表現で10の値は、ワンホット表現では三桁目のみ1で他の桁はすべて0の表現、“000100”で示されている。以下同様である。
図8を参照すると、検索キー11(以下、データベースにデータが登録される登録動作について述べる場合には登録キー、データベースのデータを検索する検索動作について述べる場合には検索キーと称される。図8には両者の場合を合わせて登録/検索キーと書かれている)、登録データ13、テーブル20、及びそれらの関係を示す矢印の一例が示されている。
図9は、登録用プログラム24が行う、データをテーブル20に登録する際の登録動作を示すフローチャートである。テーブル20の初期値は、全て0である。
ステップS2:登録用プログラム24は、ワンホット表現プログラム28を用いて、外部回路4から入力部10を介して入力された登録データをワンホット表現に変換する。図8に対応して例示すれば、登録データ“1”はワンホット表現“00・・・0000010”に変換され、登録データ“5”はワンホット表現“00・・・0100000”に変換される。まず図8における登録/検索キー1、登録データ=1の例を挙げて、以下の説明を行う。
ステップS4:あらかじめ定義された値であるオフセット値を、テーブル20に使用するメモリ空間の先頭アドレスに設定する。図8においてアドレスを指定することは、行を指定することに相当する。
ステップS6:登録用プログラム24は、外部回路から入力部10を介して入力された登録キー(例えば32ビットのバイナリデータ)の最初の部分(本例ではMSB側8ビット)を抽出する。抽出された部分は説明上、a1と表現される。
ステップS8:テーブル20から、a1にオフセット値を加算した値のアドレスに登録されているデータが読み出される。登録キーから抽出する部分を8ビットであるとすると、アドレスはオフセット値+0からオフセット値+255までの、2^8=256のアドレスのうちのいずれかのアドレス(このアドレスにより指示されるテーブル20のメモリ空間が図8においてメモリ空間T1として示されている)に登録されたデータが読み出される。最初に読み出されるデータは、テーブル20の初期値が全て0だから、“00・・・0000000”という行である。
ステップS10:読み出されたデータ“00・・・0000000と登録データ“00・・・0000010”とに対して、桁ごとに論理和が取られ、読み出されたデータと同じアドレスに演算の結果が書き込まれる。図8においては、メモリ空間T1のなかの“00・・・0000010”と書かれた行が、書き込まれた結果である。
ステップS12:登録キーがすべて取り込まれたか否かが判定される。登録キーの取り込みが終了した場合(図8でa1からanまで登録された場合)、登録動作は完了する。登録キーの取り込みが終了していない場合、例えばa1のみ取り込みが終了している場合、動作はステップS14に移行する。
ステップS14:オフセット値に256を加算した値が新たなオフセット値として設定される。その結果、登録されるメモリ空間は例えばメモリ空間T1からT2に移動する。
ステップS16:登録キーの次の部分a2(例えば8ビットのバイナリデータ)が抽出される。以下、ステップS8、S10の動作が行われる。但し、上記の説明中、a1はa2に読み替えられ、T1はT2に読み替えられる。その後、a3、a4、…anと登録キーがすべて取り込まれるまで、ステップS12の動作により、ステップS8からステップS16までの動作が繰り返される。
以上の動作により、図8に示される登録/検索キー1、登録データ=1の登録が完了する。登録/検索キー2、登録データ=5についても、同様に登録される。但し、上記の説明中、a1、a2、…anはb1、b2、…bnに、“00・・・0000010”は“00・・・0100000”にそれぞれ読み替えられる。
以上の登録動作により構築されたデータベースは、登録キーのa1の部分に対応して登録データのワンホット表現がメモリ空間T1に現れ、登録キーのa2の部分に対応して登録データのワンホット表現がメモリ空間T2に現れ、以下同様、となっている。
異なる登録/検索キーから、偶発的に同じアドレスに対する書き込みが行われる場合がある。図8の例では、a2とb2とが同じ値であったために、メモリ領域T2において、“00・・・0000010”が書き込まれた後で“00・・・0100000”との論理和が取られ、”00・・・0100010”と、1が二箇所に現れる「ツーホット表現」となっているアドレスが示されている。登録される登録/検索キーが多くなれば、1が二箇所以上に現れるアドレスが多くなる。
図10は、検索用プログラム26が行う、データをテーブル20から検索する際の検索動作を示すフローチャートである。
ステップS20:検索用プログラム26は、全ての桁が1からなる一時データ“11・・・1111111”を用意する。
ステップS22:あらかじめ定義された値であるオフセット値を、テーブル20に使用するメモリ空間の先頭アドレスに設定する。
ステップS24:外部回路から入力部10を介して入力された検索キー(例えば32ビットのバイナリデータ)の最初の部分(本例ではMSB側8ビット)を抽出する。抽出された部分は説明上、a1と表現される。
ステップS26:テーブル20から、a1にオフセット値を加算した値のアドレスに登録されているデータが読み出される。登録キーが8ビットであるとすると、アドレスはオフセット値+0からオフセット値+255までの、2^8=256のアドレスのうちのいずれかのアドレス(このアドレスにより指示されるテーブル20のメモリ空間が図8においてメモリ空間T1として示されている)に登録されたデータが読み出される。
ステップS28:読み出されたデータと一時データ“11・・・1111111”とに対して、桁ごとに論理積が取られ、新たな一時データとして保存される。例えば読み出されたデータが“00・・・0100110”であった場合、一時データとして、論理積の結果“00・・・0100110”が保存される。
ステップS30:検索キーがすべて取り込まれたか否かが判定される。検索キーの取り込みが終了した場合(図8でa1からanまで検索された場合)、動作はステップS36に移行する。検索キーの取り込みが終了していない場合、例えばa1のみ取り込みが終了している場合、動作はステップS32に移行する。
ステップS32:オフセット値に256を加算した値が新たなオフセット値として設定される。
ステップS34:検索キーの次の部分a2(例えば8ビットのバイナリデータ)が抽出される。以下、ステップS26、S28の動作が行われる。但し、上記の説明中、a1はa2に読み替えられ、T1はT2に読み替えられる。その後、a3、a4、…anと検索キーがすべて取り込まれるまで、ステップS30の動作により、ステップS26からステップS34までの動作が繰り返される。
ある検索キーに対して、ステップS34でその検索キーの中から8ビットづつ順次、抽出され、ステップS28で順次、論理積を取られる過程で、一時データに含まれる“1”の桁は徐々に減り、ワンホット表現に近づく。
ステップS36:入力された検索キーの取り込みが完了したら、その時点での一時データがワンホット表現となっているか否かが判定される。ワンホット表現となっていなかったら、検索が失敗したことを示す信号が出力される。ワンホット表現になっていたら、ステップS38の処理に移行する。
ステップS38:検索用プログラム26は、ワンホット表現プログラム28を用いて、以上の手順で得られたワンホット表現をバイナリデータ等にエンコードし、出力部12に登録データとして出力する。
以上が、本実施の形態における検索動作である。尚、テーブル20に登録されているデータのうち不要になったものは、登録の手順をわずかに変更した次の手順で削除することができる。即ち、登録の手順において用意されたワンホット表現を、削除データのワンホット表現の反転(“11111・・・1”の中に一つの“0”がある表現)に変える。これと、テーブル20に登録されているデータとの論理積を取ることにより、登録データを示す位置の“1”が“0”に換わり、削除が実現される。
本発明による検索プログラムでは、登録時、図8のメモリ領域T2にあるような登録データの重ね合わせがメモリ上に記憶される。検索時、読み出しデータと一時データとの論理積を検索キーの最後の部分まで繰り返した時点で、重ね合わせが解消しワンホット表現が現れるようになっている。即ち、登録データをワンホット表現にしたことにより、メモリ中のデータはハッシュ方式におけるシノニムと性質の異なる分離可能な重ね合わせとなる。これによって、ハッシュ方式の検索手順にあった登録/検索キーの一致判定結果による処理手順の分岐が不要となり、検索が一定の論理積繰り返し回数で決まる時間で終了する。
さらに、上記の説明では検索結果がワンホット表現でない場合検索失敗と判定する方式が説明されたが、ワンホット表現による重ね合わせは分離可能であることを最も重要な性質としている。例えば、図7に示されるようにワンホット表現→バイナリ表現の対応が“000010”→“001”、“001000”→“011”であるとき、“001010”→“001”、“011”というように、ツーホット表現からは2つのバイナリデータがエンコードによって得られる。このとき、一つのワンホット表現“001010”から二つの登録データ“001”、“011”が得られる。そのため、二つ以上のデータが登録されているとして、各“1”の位置についてバイナリ表現に戻す方式は、例えば1対多通信方式として充分に動作する。
さらに、検索結果はワンホット表現のまま他の回路等に送信されてもよい。この場合も、ハッシュ方式の検索手順にあった登録/検索キーの一致判定結果による分岐が不要となり、検索が一定の論理積繰り返し回数で決まる時間で終了する点は同じである。
(実施の第2形態)
実施の第2形態は、実施の第1形態におけるアドレスオフセットの動作を、書き込み・読み出しデータのビット方向の操作に変更した形態になっている。
実施の第2形態における検索プログラムを使用するルータの構成は、図5に示されたものと同じである。図6に示された記憶部18の構成のうち、テーブル20の構成、登録用プログラム24と検索用プログラム26の動作が実施の第1形態と異なっている。
図11を参照すると、検索キー11(以下、データベースにデータが登録される動作(登録時の動作)について述べる場合には登録キー、データベースのデータを検索する動作(検索時の動作)について述べる場合には登録キーと称される。図11には両者の場合を合わせて登録/検索キーと書かれている)、登録データ13、テーブル20、及びそれらの関係を示す矢印の一例が示されている。
図12は、登録用プログラム24が行う、データをテーブル20に登録する際の登録動作を示すフローチャートである。テーブル20の初期値は、全て0である。
ステップS42:登録用プログラム24は、ワンホット表現プログラム28を用いて、外部回路4から入力部10を介して入力された登録データをワンホット表現に変換する。図8に対応して例示すれば、登録データ“1”はワンホット表現“00・・・0000010”に変換され、登録データ“5”はワンホット表現“00・・・0100000”に変換される。まず図8における登録/検索キー1、登録データ=1の例を挙げて、以下の説明を行う。
ワンホット表現に変換された登録データは、その登録データの幅のn倍(nは2以上の整数)の、すべての桁が“0”であるデータの左端に埋め込まれる。以後、この登録データが埋め込まれたデータをDと呼ぶ。
ステップS44:あらかじめ定義された値であるオフセット値を、テーブル20に使用するメモリ空間の先頭アドレスに設定する。図11においてアドレスを指定することは、行を指定することに相当する。
ステップS46:登録用プログラム24は、外部回路から入力部10を介して入力された登録キー(例えば32ビットのバイナリデータ)の最初の部分(例えばMSB側8ビット。その場合、図11に示されるテーブル20の縦は2^8=256行)を抽出する。抽出された部分は説明上、a1と表現される。
ステップS48:テーブル20から、a1にオフセット値を加算した値のアドレスに登録されているデータが読み出される。最初に読み出されるデータは、テーブル20の初期値が全て0だから、“00・・・0000000”という行である。
ステップS50:読み出されたデータ“00・・・0000000”とDとに対して、桁ごとに論理和が取られ、読み出されたデータと同じアドレスに演算の結果が書き込まれる。最初のDは、左端に登録データが埋め込まれているから、図11において左端のメモリ空間T1に“0・・・0000010”と書かれた行が、登録キーのa1の部分に対応している。
ステップS52:登録キーがすべて取り込まれたか否かが判定される。登録キーの取り込みが終了した場合(図11でa1からanまで登録された場合)、登録動作は完了する。登録キーの取り込みが終了していない場合、例えばa1のみ取り込みが終了している場合、動作はステップS54に移行する。
ステップS54:登録データのワンホット表現をその幅分右に移動し、左に0を埋め込んだものが新たなDとされる。図14に示されているのはこの操作の一例である。これにより、テーブル20においてワンホット表現が登録される部分が、例えばメモリ領域T1からT2へ、ひとつぶん右に移動する。
ステップS56:登録キーの次の部分a2(例えば8ビットのバイナリデータ)が抽出される。以下、ステップS48、S50の動作が行われる。但し、上記のステップS48、S50の説明中、a1はa2に読み替えられ、T1はT2に読み替えられる。さらにステップS52の動作により、登録キーがすべて取り込まれるまでステップS48からステップS56までの動作が繰り返される。
以上の動作により、図11に示される登録/検索キー1、登録データ=1の登録が完了する。登録/検索キー2、登録データ=5についても、同様に登録される。但し、上記の説明中、a1、a2、…anはb1、b2、…bnに、“00・・・0000010”は“00・・・0100000”にそれぞれ読み替えられる。
以上の登録動作により構築されたデータベースは、登録キーのa1の部分に対応して登録データのワンホット表現がメモリ空間T1に現れ、登録キーのa2の部分に対応して登録データのワンホット表現がメモリ空間T2に現れ、以下同様、となっている。
異なる登録/検索キー2から、偶発的にテーブル20の中の同じ位置に対する書き込みが行われる場合がある。図8の例では、a2とb2とが同じ値であったために、メモリ領域T2において、“00・・・0000010”が書き込まれた後で“00・・・0100000”との論理和が取られ、”00・・・0100010”と、1が二箇所に現れる「ツーホット」となっているアドレスが示されている。登録される登録/検索キーが多くなれば、1が二箇所以上に現れるアドレスが多くなる。
図13は、検索用プログラム26が行う、データをテーブル20から検索する際の検索動作を示すフローチャートである。
ステップS62:検索用プログラム26は、全ての桁が1からなり登録データの区切りと同じ桁数の一時データ“11・・・1111111”を用意する。
ステップS64:登録データのワンホット表現のn倍の幅の読み出しデータ中から、後述するステップS72において一時データと論理積を取る部分を説明上、「指定部分」と名づける。指定部分は、最初は左端に設定される。
ステップS66:あらかじめ定義された値であるオフセット値を、テーブル20に使用するメモリ空間の先頭アドレスに設定する。
ステップS68:外部回路から入力部10を介して入力された検索キー(例えば32ビットのバイナリデータ)の最初の部分(例えばMSB側8ビット)を抽出する。抽出された部分は説明上、a1と表現される。
ステップS70:テーブル20から、a1にオフセット値を加算した値のアドレスに登録されているデータが読み出される。
ステップS72:読み出されたデータと一時データ“11・・・1111111”とに対して、指定部分に関して桁ごとに論理積が取られ、新たな一時データとして保存される。
ステップS73:指定部分が登録データのワンホット表現の幅分、右に移される。
ステップS74:検索キーがすべて取り込まれたか否かが判定される。検索キーの取り込みが終了した場合(図11でa1からanまで検索された場合)、動作はステップS80に移行する。検索キーの取り込みが終了していない場合、例えばa1のみ取り込みが終了している場合、動作はステップS76に移行する。
ステップS76:指定部分が登録データのワンホット表現の幅分、右に移される。
ステップS78:検索キーの次の部分a2(例えば8ビットのバイナリデータ)が抽出される。以下、ステップS70、S72の動作が行われる。但し、上記の説明中、a1はa2に読み替えられ、T1はT2に読み替えられる。さらにステップS74の動作により、検索キーがすべて取り込まれるまでステップS70からステップS78までの動作が繰り返される。
ある検索キーに対して、ステップS78でその検索キーの中から所定幅、例えば8ビットづつ順次、抽出され、ステップS72で順次、論理積を取られる過程で、一時データに含まれる“1”の桁は徐々に減り、ワンホット表現に近づく。
ステップS80:入力された検索キーの取り込みが完了したら、その時点での一時データがワンホット表現となっているか否かが判定される。ワンホット表現となっていなかったら、検索が失敗したことを示す信号が出力される。ワンホット表現になっていたら、ステップS82の処理に移行する。
ステップS82:検索用プログラム26は、ワンホット表現プログラム28を用いて、以上の手順で得られたワンホット表現をバイナリデータ等にエンコードし、出力部12に登録データとして出力する。
以上の説明においては、検索キーをa1、a2、…anと逐次に区切って抽出する動作が説明された。しかし、検索キーを最初にa1、a2、…anと区切っておき、区切りの全てに対してテーブルへの登録動作を並列に行っても、登録動作は全く同じように行われる。同様に検索動作においても、ある検索キーに対応するテーブルのT1、T2、…Tnに書き込まれた登録内容をすべて並列して読み出して一時データとして保存し、それらの論理積を取ることにより、検索動作が行われる。回路、ソフトウェア等の構成によっては、こうした並列動作が行われたほうが登録・検索動作が高速となり好ましい。
実施の第2形態において、登録/検索キーの区切りが8ビットである例を挙げたが、この区切りはもっと大きくてもよい。この区切りが大きくても、テーブル20が使用するメモリのアドレス(行を指定)が実施の第1形態に比べて少なくてすむためである。
実施の第2形態における検索プログラムは、幅の広いメモリを用いる点で、半導体チップ内で実現する方法に適している。
本発明による検索プログラム、その検索用回路、及びルータによれば、データベースの検索に要する時間が揺らがないという効果がある。これにより、検索の終了を監視する手順、手段を用意することなく効率的にシステム全体を構成することができる。
図1は、ハッシュ方式のデータベースを示すイメージ図である。 図2は、ハッシュ方式のデータベースを登録する手順を示すフローチャートである。 図3は、ハッシュ方式のデータベースを検索する手順を示すフローチャートである。 図4は、検索プログラム又は検索用回路の構成を示す。 図5は、ルータの構成を示す。 図6は、記憶部の構成を示す。 図7は、ワンホット表現を説明するための図である。 図8は、実施の第1形態におけるテーブル検索方法を説明するためのメモリマップのイメージ図である。 図9は、実施の第1形態におけるデータベースを登録する手順を示すフローチャートである。 図10は、実施の第1形態におけるデータベースを検索する手順を示すフローチャートである。 図11は、実施の第2形態におけるテーブル検索方法を説明するためのメモリマップのイメージ図である。 図12は、実施の第2形態におけるデータベースを登録する手順を示すフローチャートである。 図13は、実施の第2形態におけるデータベースを検索する手順を示すフローチャートである。 図14は、実施の第2形態における登録動作を説明するための図である。
符号の説明
2…ルータ
11…検索キー
13…登録データ
14…検索部
22…検索プログラム
50…検索プログラム又は検索用回路
60…登録部
70…検索部

Claims (5)

  1. 登録用プログラムと、
    検索用プログラム
    とを具備し、
    前記登録用プログラムは、
    検索キーを用いて検索される登録データを、n−1個の0と1個の1とからなるn桁のワンホット表現に変換するステップと、
    前記検索キーを所定桁数ごとに区切るステップと、
    区切られた前記検索キーを順次、用いてメモリ空間上のアドレスを指定する指定ステップと、
    前記指定ステップにおいて指定された前記アドレスから前記n桁のデータを抽出して前記ワンホット表現と各桁ごとに論理和を取り、同じ前記アドレスに書き込むステップ
    とを備え、
    前記検索用プログラムは、
    入力された前記検索キーを前記所定桁数ごとに区切るステップと、
    区切られた第1番目の前記検索キーを用いて前記メモリ空間上のアドレスを指定する第2指定ステップと、
    前記第2指定ステップにおいて指定された前記アドレスから前記n桁のデータを抽出して、全ての桁が1からなるデータと各桁ごとに論理積を取り、一時データに書き込むステップと、
    区切られた第2番目以降の前記検索キーを順次又は並列して用いて前記メモリ空間上のアドレスを指定する第3指定ステップと、
    前記第3指定ステップにおいて指定された前記アドレスから前記n桁のデータを抽出して前記一時データと各桁ごとに論理積を取って前記一時データを更新するステップと、
    前記第3指定ステップにおいて前記検索キーの全ての区切りが用いられたとき、前記一時データを出力するステップ
    とを備える
    検索プログラム。
  2. 登録部と、
    検索部
    とを具備し、
    前記登録部は、
    検索キーを用いて検索される登録データを、n−1個の0と1個の1とからなるn桁のワンホット表現に変換するワンホット表現変換部と、
    前記検索キーを所定桁数ごとに区切る検索キー区切り部と、
    区切られた前記検索キーを順次、用いてメモリ空間上のアドレスを指定するアドレス指定部と、
    前記アドレス指定部により指定された前記アドレスから前記n桁のデータを抽出して前記ワンホット表現と各桁ごとに論理和を取り、同じ前記アドレスに書き込む論理和書込部
    とを備え、
    前記検索部は、
    入力された前記検索キーを前記所定桁数ごとに区切る第2検索キー区切り部と、
    区切られた第1番目の前記検索キーを用いて前記メモリ空間上のアドレスを指定する第2アドレス指定部と、
    前記第2アドレス指定部により指定された前記アドレスから前記n桁のデータを抽出して、全ての桁が1からなるデータと各桁ごとに論理積を取り、一時データとして保存する論理積書込部と、
    区切られた第2番目以降の前記検索キーを順次又は並列して用いて前記メモリ空間上のアドレスを指定する第3アドレス指定部と、
    前記第3アドレス指定部により指定された前記アドレスから前記n桁のデータを抽出して前記一時データと各桁ごとに論理積を取って前記一時データを更新する第2論理積書込部と、
    前記第3アドレス指定部により前記検索キーの全ての区切りが用いられたとき、前記一時データを出力する出力部
    とを備える
    検索用回路。
  3. 登録部と、
    検索部
    とを具備し、
    前記登録部は、
    検索キーを用いて検索される登録データを、n−1個の0と1個の1とからなるn桁のワンホット表現に変換するワンホット表現変換部と、
    前記検索キーを所定桁数ごとに区切る検索キー区切り部と、
    区切られた前記検索キーを順次、用いてメモリ空間上のアドレスを指定するアドレス指定部と、
    前記アドレス指定部により指定された前記アドレスから前記n桁のデータを抽出して前記ワンホット表現と各桁ごとに論理和を取り、同じ前記アドレスに書き込む論理和書込部
    とを備え、
    前記検索キー区切り部は更に、入力された前記検索キーを所定桁数ごとに区切り、
    前記アドレス指定部は更に、区切られた第1番目の前記検索キーを用いて前記メモリ空間上のアドレスを指定し、
    前記検索部は、
    前記アドレス指定部により指定された前記アドレスから前記n桁のデータを抽出して、全ての桁が1からなるデータと各桁ごとに論理積を取り、一時データとして保存する論理積書込部を備え、
    前記アドレス指定部は更に、区切られた第2番目以降の前記検索キーを順次又は並列して用いて前記メモリ空間上のアドレスを指定し
    前記検索部は更に、
    前記アドレス指定部により指定された前記アドレスから前記n桁のデータを抽出して前記一時データと各桁ごとに論理積を取って前記一時データを更新する第2論理積書込部と、
    前記アドレス指定部により前記検索キーの全ての区切りが用いられたとき、前記一時データを出力する出力部
    とを備える
    検索用回路。
  4. 登録部と、
    検索部
    とを具備し、
    前記登録部は、
    検索キーを用いて検索される登録データを、n−1個の0と1個の1とからなるn桁のワンホット表現に変換するワンホット表現変換部と、
    前記検索キーを所定桁数ごとに区切る検索キー区切り部と、
    区切られた前記検索キーを順次、用いてメモリ空間上のアドレスを指定するアドレス指定部と、
    前記アドレス指定部により指定された前記アドレスから前記n桁のデータを抽出して前記ワンホット表現と各桁ごとに論理和を取り、同じ前記アドレスに書き込む論理和書込部
    とを備え、
    前記検索部は、
    入力された前記検索キーを前記所定桁数ごとに区切る検索キー区切り部と、
    区切られた第1番目の前記検索キーを用いて前記メモリ空間上のアドレスを指定する第2アドレス指定部と、
    前記第2アドレス指定部により指定された前記アドレスから前記n桁のデータを抽出して、全ての桁が1からなるデータと各桁ごとに論理積を取り、一時データとして保存する論理積書込部と、
    区切られた第2番目以降の前記検索キーを順次又は並列して用いて前記メモリ空間上のアドレスを指定する第3アドレス指定部と、
    前記第3アドレス指定部により指定された前記アドレスから前記n桁のデータを抽出して前記一時データと各桁ごとに論理積を取って前記一時データを更新する第2論理積書込部と、
    前記第3アドレス指定部により前記検索キーの全ての区切りが用いられたとき、前記一時データを出力する出力部
    とを備える
    ルータ。
  5. 登録部と、
    検索部
    とを具備し、
    前記登録部は、
    検索キーを用いて検索される登録データを、n−1個の0と1個の1とからなるn桁のワンホット表現に変換するワンホット表現変換部と、
    前記検索キーを所定桁数ごとに区切る検索キー区切り部と、
    区切られた前記検索キーを順次、用いてメモリ空間上のアドレスを指定するアドレス指定部と、
    前記アドレス指定部により指定された前記アドレスから前記n桁のデータを抽出して前記ワンホット表現と各桁ごとに論理和を取り、同じ前記アドレスに書き込む論理和書込部
    とを備え、
    前記検索キー区切り部は更に、入力された前記検索キーを所定桁数ごとに区切り、
    前記アドレス指定部は更に、区切られた第1番目の前記検索キーを用いて前記メモリ空間上のアドレスを指定し、
    前記検索部は、
    前記アドレス指定部により指定された前記アドレスから前記n桁のデータを抽出して、全ての桁が1からなるデータと各桁ごとに論理積を取り、一時データとして保存する論理積書込部を備え、
    前記アドレス指定部は更に、区切られた第2番目以降の前記検索キーを順次又は並列して用いて前記メモリ空間上のアドレスを指定し
    前記検索部は更に、
    前記アドレス指定部により指定された前記アドレスから前記n桁のデータを抽出して前記一時データと各桁ごとに論理積を取って前記一時データを更新する第2論理積書込部と、
    前記アドレス指定部により前記検索キーの全ての区切りが用いられたとき、前記一時データを出力する出力部
    とを備える
    ルータ。
JP2004142288A 2004-05-12 2004-05-12 検索プログラム、検索用回路及びルータ Withdrawn JP2005328149A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004142288A JP2005328149A (ja) 2004-05-12 2004-05-12 検索プログラム、検索用回路及びルータ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004142288A JP2005328149A (ja) 2004-05-12 2004-05-12 検索プログラム、検索用回路及びルータ

Publications (1)

Publication Number Publication Date
JP2005328149A true JP2005328149A (ja) 2005-11-24

Family

ID=35474174

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004142288A Withdrawn JP2005328149A (ja) 2004-05-12 2004-05-12 検索プログラム、検索用回路及びルータ

Country Status (1)

Country Link
JP (1) JP2005328149A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104346103A (zh) * 2013-08-09 2015-02-11 群联电子股份有限公司 指令执行方法、存储器控制器与存储器储存装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104346103A (zh) * 2013-08-09 2015-02-11 群联电子股份有限公司 指令执行方法、存储器控制器与存储器储存装置

Similar Documents

Publication Publication Date Title
US9647684B2 (en) Memory-based history search
US8095526B2 (en) Efficient retrieval of variable-length character string data
JP2502469B2 (ja) 文字デ―タを圧縮し圧縮済みデ―タを展開するための静的辞書構造を提供する方法および手段
US9672234B2 (en) Database and database processing methods
US6963924B1 (en) IP routing lookup scheme and system for multi-gigabit switching routers
KR20050065642A (ko) 데이터 갱신 시스템, 데이터 갱신 시스템의 차분 데이터생성장치 및 프로그램, 및 갱신 후 파일 복원장치 및프로그램
KR100586461B1 (ko) 파이프라인 이진 트리를 이용한 ip 어드레스 검색 방법,하드웨어 구조 및 기록매체
KR20130062889A (ko) 데이터 압축 방법 및 시스템
Wang et al. Memory-based architecture for multicharacter Aho–Corasick string matching
CN105264525A (zh) 内部搜索引擎架构
JP4610360B2 (ja) 重複Webサイト検出装置
JP2004194343A (ja) パイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンにおけるパス圧縮最適化のためのシステム及び方法
US9703484B2 (en) Memory with compressed key
US7154892B2 (en) Method and apparatus for managing LPM-based CAM look-up table, and recording medium therefor
CN1312890C (zh) 用于产生具有数量减少的特里块的特里结构的方法
US10795580B2 (en) Content addressable memory system
JP2005328149A (ja) 検索プログラム、検索用回路及びルータ
US20160105363A1 (en) Memory system for multiple clients
WO2010095004A1 (en) Priority search trees
JPH10222535A (ja) データ検索回路
JP2012150562A (ja) N分木内部ノードの圧縮方法及び装置及びプログラム
JP3754043B2 (ja) データ検索装置
JP2009123050A (ja) 情報検索装置、及び情報検索装置へのエントリ情報の登録方法
JP2005242668A (ja) パターンマッチング装置および方法ならびにプログラム
CN116303412A (zh) 模型训练方法,模型同步方法和相关装置

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20070807