JP2005242997A - データ検索装置及び方法 - Google Patents

データ検索装置及び方法 Download PDF

Info

Publication number
JP2005242997A
JP2005242997A JP2005015049A JP2005015049A JP2005242997A JP 2005242997 A JP2005242997 A JP 2005242997A JP 2005015049 A JP2005015049 A JP 2005015049A JP 2005015049 A JP2005015049 A JP 2005015049A JP 2005242997 A JP2005242997 A JP 2005242997A
Authority
JP
Japan
Prior art keywords
search
character string
pattern
searched
state transition
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.)
Granted
Application number
JP2005015049A
Other languages
English (en)
Other versions
JP4120888B2 (ja
Inventor
Akihiro Motoki
顕弘 元木
Kiyohisa Ichino
清久 市野
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 Corp
Original Assignee
NEC 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 Corp filed Critical NEC Corp
Priority to JP2005015049A priority Critical patent/JP4120888B2/ja
Priority to US11/045,090 priority patent/US7769753B2/en
Publication of JP2005242997A publication Critical patent/JP2005242997A/ja
Application granted granted Critical
Publication of JP4120888B2 publication Critical patent/JP4120888B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】 被検索文字列からパターンを検索するデータ検索装置において、検索速度を向上させる。
【解決手段】 CAM20の各エントリには、状態番号と遷移条件となるN文字の文字列とが登録されている。アソシエートデータRAM23には、CAM20の各エントリと対応付けて、次の状態番号が登録されると共に、上記パターンのパターン番号が登録されている。CAM20は、状態番号と被検索文字列101中の連続するN文字(Nは複数)との組が入力される毎に、上記エントリを検索して、一致エントリのアドレス122を出力するというエントリ検索処理を、既に実行しているエントリ検索処理と並行して実行する。アソシエートデータRAM33は、CAM20からアドレス122が出力される毎に、次の状態番号とパターン番号とを読み出すという読み出し処理を、既に実行している読み出し処理と並行して実行する。
【選択図】 図1

Description

本発明は、比較的長い被検索文字列中に、別途与えられたパターンと呼ばれる比較的短い文字列が、部分文字列として存在するか否かを判定し、部分文字列が存在する場合は存在するパターンを抽出するデータ検索技術、特に、決定性有限オートマトンに基づいてデータ検索を行うデータ検索技術に関する。
必要メモリ量の少ない文字列検索手法として、検索文字列(以後、パターンと称する)から状態遷移表を作成しておき、その状態遷移表が格納された連想メモリ(Content Addressable Memory、以後CAMと略す)を参照しながら決定性有限オートマトンに基づいた文字列検索を行う方法が従来から知られている(例えば、特許文献1参照)。
図10は、特許文献1に記載されている従来の文字列検索器50の構成を示すブロック図である。
文字列検索器50は、入力された被検索文字列500について決定性有限オートマトンに基づくパターン検索を実施し、一致検索されたパターンの番号を表すパターン番号501を出力する。
決定性有限オートマトンの状態遷移表は、CAM70と、このCAM70に付随するアソシエートデータRAM73にあらかじめ登録される。
CAM70の各エントリは、現状態番号格納域71と照合文字格納域72との2つの領域から構成される。現状態番号格納域71には、状態遷移前の状態の番号(状態番号)が格納される。照合文字格納域72には、状態遷移条件となる文字(1文字)が格納される。
アソシエートデータRAM73の各エントリは、次状態番号格納域74とパターン番号格納域75との2つの領域から構成される。次状態番号格納域74には、状態遷移後の状態の状態番号が格納される。パターン番号格納域75には、この状態遷移によって検出されるパターンの番号が格納される。
図11にCAM70及びアソシエートデータRAM73の内容例を示す。この例は、2種類のパターン“ABC”、“BCD”を検索する場合についてのものであり、パターン“ABC”、“BCD”のパターン番号は、それぞれ“1”、“2”となっている。また、図12は、CAM70およびアソシエートデータRAM73の内容に対応した状態遷移図を示す。
被検索文字レジスタ76は、被検索文字列500を1文字ずつ取り込み、被検索文字521として出力する。
CAM70は、現状態番号520と被検索文字521との組を検索キーとしてエントリを検索し、見つかったエントリのアドレス522をアソシエートデータRAM73に対して出力する。
アソシエートデータRAM73は、アドレス522に対応するエントリの内容を読み出し、次状態番号523とパターン番号524として出力する。
状態番号レジスタ77は、次状態番号523を保持し、現状態番号520として出力する。
パターン番号レジスタ78は、パターン番号524を保持し、パターン番号501として出力する。なお、特許文献1には、CAM70の検索の成否を示す信号と、CAM70の検索に失敗したときに状態番号レジスタ77をリセットする回路が記載されているが、それらは従来技術の問題点とは無関係であるため省略されている。
次に、従来の文字列検索器50の動作について述べる。
被検索文字列500は1文字ずつ被検索文字レジスタ76に取り込まれる。CAM70は、状態番号レジスタ77から出力される現状態番号520と被検索文字レジスタ76から出力される被検索文字521との組を検索キーとして検索処理を行い、一致したエントリのアドレス522をアソシエートデータRAM73に対して出力する。例えば、現状態番号“1”と被検索文字“A”との組が検索キーとして入力された場合は、アドレス“3”をアソシエートデータRAM73に対して出力し、また、例えば、現状態番号“2”と被検索文字“C”との組が検索キーとして入力された場合は、アドレス“7”をアソシエートデータRAM73に対して出力する(図11参照)。
アソシエートデータRAM73は、CAM70から入力されたアドレス522に対応するエントリの内容を、次状態番号523とパターン番号524として出力する。例えば、アドレス522として“3”が入力された場合は、次状態番号523及びパターン番号524として各々“1”及び“0”を出力し、また、例えば、アドレス522として“7”が入力された場合は、次状態番号523及びパターン番号524として各々“4”及び“1”を出力する。
次状態番号523は状態番号レジスタ77にラッチされ、次回の検索時に使用される。また、パターン番号524はパターン番号レジスタ78にラッチされ、パターン番号501として出力される。以上の動作を被検索文字列500の全ての文字について繰り返し行うことにより、文字列検索が実行される。
特開昭62−179083号公報
特許文献1に記載されている従来の技術には、検索が低速であるという問題点がある。その理由は、被検索文字列500の中の1文字を処理するたびに、CAM70のエントリ検索処理とアソシエートデータRAM73のデータ読み出し処理の完了を待たなければならないからである。
そこで、本発明の目的は、一度に複数の被検索文字について検索を実施することにより、検索速度を向上させることにある。
上記目的を達成するために、本発明のデータ検索装置は、予め与えられた1種類以上のパターンを被検索文字列から検索するデータ検索装置において、検索キーとして状態番号と前記被検索文字列中の連続するN文字(Nは2以上の整数)との組が入力される毎に、状態番号と前記パターン中の状態遷移条件となる各文字列との組み合わせに対して、次の状態番号と該次の状態番号に遷移したときに検索したことになる全てのパターンのパターン番号とを関連付けた状態遷移表を検索して該当する次の状態番号と該当する全てのパターン番号とを出力するという検索処理を、既に実行中の検索処理と並行して実行する状態遷移格納メモリと、前記状態遷移格納メモリに対して検索キーの一部として入力した前記被検索文字列中の連続するN文字よりも先頭文字を1文字ずらしたN文字と、前記状態遷移格納メモリから出力された次の状態番号との組を検索キーとして前記状態遷移格納メモリに入力する入力手段とを備えたことを特徴とする。
本発明のデータ検索方法は、予め与えられた1種類以上のパターンを被検索文字列から検索するデータ検索方法において、状態番号と前記パターン中の状態遷移条件となる各文字列との組み合わせに対して、次の状態番号と該次の状態番号に遷移したときに検索したことになる全てのパターンのパターン番号とを関連付けた状態遷移表を状態遷移格納メモリに登録しておき、検索キーとして状態番号と前記被検索文字列中の連続するN文字(Nは2以上の整数)との組が入力される毎に、前記状態遷移表を検索して該当する次の状態番号と該当する全てのパターン番号とを出力するという検索処理を、既に実行中の検索処理と並行して実行し、前記検索処理によって出力された次の状態番号と、前記被検索文字列中の次のN文字とを、次の検索に使用する検索キーとすることを特徴とする。
本発明のデータ検索装置及び方法では、被検索文字列中のN文字の部分文字列を含む検索キーに対する検索処理が終了する前に、その部分文字列から1文字ずらしたN文字の部分文字列を含む検索キーに対する検索処理を開始する。従来のデータ検索装置では、1文字単位で状態遷移を行っていたため、前の文字の状態遷移先が決定するまでは、次の文字の検索処理を開始できなかった。本発明のデータ検索装置では、N文字単位で状態遷移を行うため、N文字の部分文字列に対する状態遷移先が決定していなくても、その部分文字列から1文字ずらしたN文字の部分文字列を含む検索キーの検索処理を開始することができる。このように、検索処理を並行して行うことにより、1文字単位で状態遷移を行う従来のデータ検索装置に比して、データ検索に要する時間を短縮できる。
本発明のデータ検索装置では、前記状態遷移格納メモリに対して検索キーの一部として入力した前記被検索文字列中の連続するN文字よりも先頭文字を1文字ずらしたN文字と、N文字前の前記被検索文字列の検索結果として前記状態遷移格納メモリから出力された次の状態番号との組を検索キーとして前記状態遷移格納メモリに入力する入力手段とを備えたことを特徴とする構成を採用できる。この場合、状態遷移格納メモリは、被検索文字列中のN文字の部分文字列(例えば“123456”中の“456”)と、前N文字(“123”)の検索処理による状態遷移の結果とを検索キーとして検索処理を行う。
本発明のデータ検索装置では、前記入力手段が、前記被検索文字列をシフトするN段構成のシフトレジスタと、前記アソシエートデータメモリから出力される次の状態番号を保持する状態番号レジスタとを含む構成を採用できる。この場合、シフトレジスタが、被検索文字列を1文字づつ読み込み、新たに取り込んだ1文字を含むN文字を検索キーの一部として出力することにより、被検索文字列中の連続するN文字よりも先頭文字を1文字ずらしたN文字を、新たな検索キーの一部として状態遷移格納メモリに入力できる。
本発明のデータ検索装置では、前記状態遷移格納メモリが、状態番号と前記パターン中の状態遷移条件となる各文字列との組み合わせ毎のエントリを有し、前記入力手段から検索キーが入力される毎に、前記エントリを検索して一致エントリを示す一致エントリ情報を出力するというエントリ検索処理を、既に実行中のエントリ検索処理と並行して実行する連想メモリと、該連想メモリの各エントリに対応するエントリであって、次の状態番号と該次の状態番号に遷移したときに検索したことになる全てのパターンのパターン番号とが登録されたエントリを有し、前記連想メモリから一致エントリ情報が出力される毎に、前記一致エントリ情報によって示されるエントリから次の状態番号とパターン番号とを読み出すという読み出し処理を、既に実行中の読み出し処理と並行して実行するアソシエートデータメモリとから構成される構成を採用できる。また、本発明のデータ検索方法では、連想メモリの各エントリに、状態番号と前記パターン中の状態遷移条件となる文字列とを登録しておくと共に、アソシエートデータメモリの各エントリに、次の状態番号と該次の状態番号に遷移したときに検索したことになる全てのパターンのパターン番号とを登録しておき、前記連想メモリが、前記入力手段から検索キーが入力される毎に、前記エントリを検索して一致エントリを示す一致エントリ情報を出力するというエントリ検索処理を、既に実行中のエントリ検索処理と並行して実行し、前記アソシエートデータメモリが、前記連想メモリから一致エントリ情報が出力される毎に、前記一致エントリ情報によって示されるエントリから次の状態番号とパターン番号とを読み出すという読み出し処理を、既に実行中の読み出し処理と並行して実行する構成を採用できる。このように、連想メモリとアソシエートデータメモリをパイプライン的に動作させることで、連想メモリのエントリ検索処理とアソシエートデータメモリの読み出し処理に要する遅延時間を隠蔽し、検索速度を向上させることができる。
本発明のデータ検索装置及び方法では、前記アソシエートデータメモリから出力される、同一最終文字に対する複数のパターン番号の中から、所定の選択ルールに従って1つのパターン番号を選択して出力する選択手段を備えたことを特徴とする。例えば、あるパターンの末尾が、他のパターンの末尾部分と一致する場合には、同じ時点で、複数のパターンが検索されることとなる。このような場合には、例えばパターン番号の大小に基づいて、複数のパターンのうちのいずれかを出力させる構成を採用することができる。
本発明のデータ検索装置では、前記選択手段が、前記アソシエートデータメモリから出力された、前記アソシエートデータメモリの或るエントリに登録されているパターン番号を、前記或るエントリと対応する前記連想メモリのエントリに登録されている文字列における、前記パターン番号に対応する最終文字の位置に応じた時間だけ遅延させる遅延回路と、該遅延回路から出力されるパターン番号の中から、予め定められたルールに従って1つのパターン番号を選択する選択回路とを含む構成を採用できる。この場合、パターン末尾文字のN文字中の位置に応じて、パターン番号を出力できる。
本発明のデータ検索装置では、前記状態遷移格納メモリが、検索キーとして状態番号と前記被検索文字列中の連続するN文字(Nは2以上の整数)との組が入力される毎に、状態番号と前記パターン中の状態遷移条件となる各文字列との組み合わせに対して、次の状態番号と該次の状態番号に遷移したときに検索したことになる全てのパターンのパターン番号とを関連付けた状態遷移表を検索して該当する次の状態番号と該当する全てのパターン番号とを出力するという検索処理を実行する、複数の状態遷移メモリと、状態遷移格納メモリへ入力された検索キーを前記状態遷移メモリへ振り分けを行う検索要求振り分け部と、前記状態遷移メモリからの検索結果出力の多重を行う検索結果多重部から構成される構成を採用できる。また、本発明のデータ検索方法では、前記状態遷移格納メモリに、前記入力手段から検索キーが入力される毎に、検索キーとして状態番号と前記被検索文字列中の連続するN文字(Nは2以上の整数)との組が入力される毎に、状態番号と前記パターン中の状態遷移条件となる各文字列との組み合わせに対して、次の状態番号と該次の状態番号に遷移したときに検索したことになる全てのパターンのパターン番号とを関連付けた状態遷移表を検索して該当する次の状態番号と該当する全てのパターン番号とを出力するという検索処理を実行する、複数の状態遷移メモリの中から、検索を実行する状態遷移メモリを選択し、エントリ検索処理を実行し、一つ以上の状態遷移メモリから出力される検索結果を多重して出力する構成を採用できる。この場合、検索処理を複数の状態遷移メモリに振り分けることで、検索処理を並列に行うことができる。
本発明のデータ検索装置及び方法は、決定性有限オートマトンに基づいて文字列検索を行うことを特徴とする構成を採用できる。
本発明の別の視点のデータ検索装置は、被検索文字列中のN文字の部分文字列と現在状態とに従って次状態を決定して状態遷移を行いつつ、予め与えられた1種類以上のパターンを被検索文字列から検索するデータ検索装置であって、被検索文字列を先頭から順次に1文字ずつラッチし、該ラッチした被検索文字列のN文字の部分文字列を保持する被検索文字レジスタと、現在の状態番号を示す現在状態番号を保持する現在状態番号レジスタとを有し、前記被検索文字レジスタが保持するN文字の部分文字列と、前記現在状態番号レジスタが保持する現在状態番号とを検索キーとして出力する検索要求部と、前記検索キーが入力されるごとに、該検索キーをキーとして、現在状態番号及び照合文字列の組合せと、該組合せによって遷移する次の状態の番号を示す次状態番号、及び、次状態に遷移した際に検索されたこととなる全てのパターンのパターン番号とを対応付けて記憶するテーブルを検索し、前記検索キーに一致する現在状態番号及び照合文字列の組合せに対応する次状態番号及びパターン番号を出力する検索処理部とを備え、前記検索要求部は、前記検索処理部が前記検索キーをキーとする検索を終了する前に、当該検索キーに含まれるN文字の部分文字列から1文字分ずらしたN文字の部分文字列を含む新たな検索キーを出力し、前記検索処理部は、既に行っている検索と並行に、前記検索要求部が出力する新たな検索キーをキーとする検索を開始することを特徴とする。
また、本発明の別の視点のデータ検索方法は、被検索文字列中のN文字の部分文字列と現在状態とに従って次状態を決定して状態遷移を行いつつ、予め与えられた1種類以上のパターンを被検索文字列から検索するデータ検索方法であって、被検索文字列から連続するN文字をラッチし、該ラッチしたN文字の部分文字列と現在の状態番号を示す現在状態番号とを検索キーとして出力する検索キー出力ステップと、前記検索キーが入力されるごとに、該検索キーをキーとして、現在状態番号及び照合文字列の組合せと、該組合せによって遷移する次の状態の番号を示す次状態番号、及び、次状態に遷移した際に検索されたこととなる全てのパターンのパターン番号とを対応付けて記憶するテーブルを検索し、前記検索キーに一致する現在状態番号及び照合文字列の組合せに対応する次状態番号及びパターン番号を出力する検索処理ステップとを備え、前記検索キー出力ステップが、既に出力された検索キーに従う検索処理ステップが終了する前に、当該検索キーに含まれるN文字の部分文字列から1文字分ずらしたN文字の部分文字列を含む新たな検索キーを出力し、既に開始している検索処理ステップと並行に、前記新たな検索キーをキーとして検索をする検索処理ステップが開始することを特徴とする。
本発明の別の視点のデータ検索装置及び方法では、N文字単位で状態遷移を行い、検索処理を、既に実行中の検索処理と並行して行う。このため、1文字単位で状態遷移を行う従来のデータ検索装置に比して、データ検索に要する時間を短縮できる。
本発明の別の視点のデータ検索装置及び方法では、前記テーブルは、前記パターン番号と、前記N文字の部分文字列中の何文字目で当該パターンが検索されたこととなるかとを対応付けて記憶することが好ましい。この場合、パターンが、N文字中のどの位置で検索されたかを知ることができる。
本発明の別の視点のデータ検索装置及び方法では、前記照合文字列が、前記N文字の部分文字列との間で比較の対象とならないことを示すドントケア表現を含む構成を採用できる。この場合、パターンの末尾がN文字に満たない場合でも、パターンの検索ができる。
本発明の別の視点のデータ検索装置及び方法では、被検索文字列中のN文字の部分文字列を含む検索キーをキーとする検索による次状態番号及びパターン番号を出力すると、当該次状態番号と、前記N文字の部分文字列に後続する被検索文字列のN文字の部分文字列とを新たな検索キーとして出力する構成を採用できる。被検索文字列中のN文字に対する状態遷移先は、そのN文字に選考するN文字に対する状態遷移先が決定していないと決定することができない。例えば、被検索文字列が“123456”であるときに、“6”を取り込むべきタイミングで、まだ“123”に対する状態遷移先が決定していないときには、状態遷移先が決定するまで“6”の取り込みを遅延することで、“456”に対する状態遷移先を決定することができる。
本発明に係るデータ検索装置、データ検索回路及びデータ検索方法は、複数文字単位の状態遷移表を作成し、一度に複数の被検索文字について検索を実施し、状態遷移格納メモリにおける検索キーに対する検索処理を並列に行うことにより、状態遷移格納メモリの検索処理に要する遅延時間を隠蔽し、検索速度を向上させることができる。また、選択回路を設ける場合には、選択回路が、同一最終文字に対する複数のパターン番号の中から所定のルールに従って1つのパターン番号を選択することで、複数のパターンが同時に検索された場合でも、検索結果をその内の1つに絞り込むことができる。
次に本発明の実施の形態について図面を参照して詳細に説明する。
第1実施形態
〔実施の形態の構成〕
図1は、本発明の第1実施形態のデータ検索装置の構成を機能ブロック図で示している。データ検索装置10は、状態遷移格納メモリ200、検索要求部201、及び、出力パタン決定部202を有する。決定性オートマトンにおける入力文字列と状態遷移との関係はあらかじめ与えられており、データ検索装置10は、入力された被検索文字列101について決定性有限オートマトンに基づくパターン検索を実施し、一致検索されたパターンを表すパターン番号102を出力する。
クロック信号100は、データ検索装置10を駆動させるクロックである。データ検索装置10は、クロック信号100に同期して動作する。説明を簡易化するため、以降の説明において、データ検索装置10はクロック信号100の立ち上がりエッジに同期するものとする。被検索文字列101は、1つ以上の任意の個数の文字から構成され、クロック信号100の立ち上がり毎に、先頭文字から順に1文字ずつデータ検索装置10に取り込まれる。ここで、文字とは、人間が認識可能な文字だけでなく、バイナリデータも含む。また、文字を表現するのに必要なビット数に制限はなく、1文字が8ビットで表現されても良く、或いは、16ビットで表現されてもよい。
検索要求部201は、被検索文字列101を取り込んで保持するシフトレジスタ26と、状態番号レジスタ27から構成される。検索要求部201は、被検索文字列101をデータ検索装置10に取り込み、状態遷移格納メモリ200に入力する検索キー126を生成する。
シフトレジスタ26は、それぞれ被検索文字列101中の一文字を保持する被検索文字レジスタ26−1〜26−N(Nは2以上の整数)を有する。これら被検索文字レジスタ26−1〜Nは、それぞれ、初期状態では、パターン中に使用されない文字、例えば“−(ハイフン)”を記憶している。被検索文字レジスタ26−1〜26−Nが保持する文字は、クロック信号100の立ち上がりで1文字分シフトされる。具体的には、被検索文字レジスタ26−M(2≦M≦N)の内容が、被検索文字レジスタ26−(M−1)に取り込まれ、新たに取り込まれた被検索文字列101の次の1文字が、被検索文字レジスタ26−Nにラッチされる。状態番号レジスタ27は、クロック信号100の立ち上がりで次状態番号123をラッチしてこれを保持する。
シフトレジスタ26は、被検索文字レジスタ26−1〜26−Nが保持する各文字を、被検索文字121−1〜121−Nとして出力する。状態番号レジスタ27は、保持する状態番号を、現状態番号120として出力する。検索要求部2021は、現状態番号120と被検索文字121−1〜Nとを、検索キー126として、状態遷移格納メモリ200に入力する。
例えば、被検索文字列101が“ABCDABC・・・”であり、N=3である場合について考える。この場合、被検索文字レジスタ26−1が先頭文字“A”、被検索文字レジスタ26−2が“B”、被検索文字レジスタ“C”を有しているときには、検索要求部201は、現状態番号120と“ABC”とを検索キーとして、状態遷移格納メモリ200に入力する。クロック信号100の1クロック後には、被検索文字レジスタ26−2、26−3が格納する文字が、被検索文字レジスタ26−1、26−2にそれぞれシフトされ、データ検索装置10に新たに取り込まれた文字“D”が被検索文字レジスタ26−3に格納される。検索要求部201は、現状態番号120と“BCD”とを検索キーとして、状態遷移格納メモリ200に入力する。
状態遷移格納メモリ200は、検索対象にするパターンに応じた状態遷移表を保持している。前記状態遷移表は、状態番号と、パターン中の状態遷移条件となる各文字列との組み合わせに対して、次状態番号とこの次状態番号に遷移したときに検索したことになる全てのパターンのパターン番号とを関連付けた表である。状態遷移格納メモリ200は、検索要求部201から出力される検索キー126を入力し、状態遷移表を検索して、該当する次状態番号123とパターン番号124−1〜124−Nとを、検索結果として出力する。状態遷移格納メモリ200は、このような検索処理を、既に入力されている検索キーに従った検索処理を行っている間も実行する並列検索機能を有する。
図2は、状態遷移格納メモリ200における検索処理の実行の様子を示している。同図において、矢印は、1つの検索処理が開始されてから、その検索処理が終了するまでを表している。この例では、N=5であり、状態遷移格納メモリ200は、5つの検索処理を並行して行う。時刻t1で、検索要求部201から検索キー126が入力されると、状態遷移格納メモリ200は、その検索キー126に従った検索400−1を開始する。同図の例では、検索400−1は、時刻t5とt6の間で終了し、検索400−1の検索結果が得られる。時刻t5とt6の間で検索が終了するといった場合、時刻t6において、その直前に得られた検索結果(次状態番号)を用いて、次の検索処理200−6を開始できることを意味する。時刻t2で、検索要求部201から、新た検索キー126が入力されると、既に開始している検索400−1の検索完了を待たずに、これと並列して、新たな検索キー126に従った検索400−2を開始する。検索400−2は、時刻t6とt7の間で終了し、検索400−2の検索結果が得られる。このように、状態遷移格納メモリ200は、既に入力されている検索キーに従った検索処理の完了を待たずに別の検索キーを連続的に受け付け、入力順と同じ順序で、検索結果を出力する機能を有する。
本実施の形態では、上述した機能を有する状態遷移格納メモリ200を、CAM20及びアソシエートデータRAM23により実現している。CAM20及びアソシエートデータRAM23には、決定性有限オートマトンにおける状態遷移に関する情報が予め格納されている。このような状態遷移格納メモリ200は、例えばNetLogicマイクロシステムズ社のCAM NSE5512(http://www.netlogicmicro.com/)と市販のSRAMを組み合わせることにより実現可能である。前記CAM NSE5512は後述するCAMの要件も満たす。
状態遷移格納メモリ200に格納する状態遷移表の作成方法について、以下に具体例を挙げて説明する。状態遷移表の作成は、検索対象にするパターンから状態遷移図を作成するステップと、作成した状態遷移図を状態遷移表に変換するステップとの、2ステップより構成される。以下では、検索対象にするパターンが“E”(パターン番号「1」)、“BC”(パターン番号「2」)、“ABCDE” (パターン番号「3」)、“BCDABCD” (パターン番号「4」)の4種類であり、N=3の例について説明する。
本実施形態では、N文字の文字列に対して状態遷移を行う。状態遷移図の作成は、(1)検索対象パターンの登録、(2)部分一致パターンの解決、(3)状態遷移図の完成、の3つのステップに大きく分けられる。
「ステップ1」検索対象パターンの登録
検索対象パターンの登録を行う。本ステップは、初期状態から開始して、遷移先の状態を追加し、検索対象パターン各々について状態遷移の登録作業を繰り返し行う。パターンを全く登録していない状態では、初期状態である状態“0”のみが存在する。はじめに、検索対象とするパターンを先頭からN文字単位で分解する(ステップ1−1)。次いで、分解したN文字の文字列のうち、検索対象のパターン末尾でない文字列について、初期状態から順番に状態遷移図を辿り、着目した状態において該当するN文字の文字列に対応する遷移先が存在するか否かを判断する。遷移先が存在しない場合には、新たに遷移先の状態番号を割り当てて、状態遷移図に追加する。遷移先が既に存在する場合は、対応する遷移先に移動する。この作業を、分解したN文字の文字列がパターン末尾に達するまで繰り返す(ステップ1−2)。最後に、パターン末尾の文字列とパターン番号の対応付けを行う。具体的には、現在着目している状態において、パターン末尾の文字列に対応するN文字の文字列入力があった場合にパターンに一致したことが分かるように、着目中の状態に関連づけを行う(ステップ1−3)。
具体例として、ステップ1の作業を、“BCDABCD”(パターン4)を追加する場合について、図3を用いて説明する。同図(a)に示すように、パターン4の登録を行う前に、パターン1〜3が既に登録されているものとする。同図(a)において、丸数字xは状態番号を表している。また、三角内の数字yと三角の右にある文字列zとは、それぞれ、その状態において文字列zに一致する文字列が入力された際に、パターン番号yのパターンが検出されることを示す。
最初に、パターン4を、N(=3)文字毎の文字列に分解すると、先頭から順に“BCD”、“ABC”、“D”の3つの文字列が得られる。このとき、パターン4のパターン末尾の文字“D”のように、パターン末尾の文字列がN(=3)文字に満たない場合は、末尾の文字列を左詰めとし、残りの文字数分を比較の対象にならないことを示すドントケア(don‘t care;以下、記号*で表す)で埋める。この例では、“D**”とする。この3つの文字列“BCD”、“ABC”、“D**”を、順番に状態遷移図に追加する。
まず、パターン初期状態である状態“0”において、文字列“BCD”が入力された場合に遷移する状態“2”を追加する(図3(b))。次に、状態“2”において文字列“ABC”が入力された場合に遷移する状態“3”を追加する(図3(b))。その後、3つ目の文字列“D”は、パターン末尾の文字列であるので、状態“3”とパターン番号「4」との対応付けを行う。状態“3”において、文字列“D**”が入力されると、“D”の入力時点で被検索文字列101の中にパターン4が含まれていることが分かるように、状態“3”に三角内の“4”を追加して、パターン4との対応付けを行う(図3(b))。
「ステップ2」部分一致パターンの解決
ステップ1により検索対象となるパターンを登録しただけでは、あるパターンが他のパターンの部分文字列となるようなパターンを探すことができない。例えば、図3(b)の状態“2”で、文字列“ABC”が連続して入力されると、状態“2”から状態“3”への状態遷移が行われるが、“ABC”という文字列は、状態“0”から状態“1”への遷移条件となっている。この状態で、続けて“DE*”が入力されると、状態“3”において“D**”と一致するためパターン4に一致すると同時に、状態“1”において“DE*”と一致するため、パターン3にも一致することが分かる。つまり、状態“2”から“ABC”+“DE*”という文字列が入力された場合には、パターン3とパターン4との双方に一致する。このため、状態3でのパターン対応付けとして、入力文字列“DE*”に対し、パターン3、4の両方を関連づける必要がある(図3(c))。
上記のような部分一致パターンの解決を、全ての状態番号について実施する。実際には、着目している状態よりも初期状態(状態0)からの遷移数が少ない状態に関連づけられている部分パターンに一致するものがないかを確認すれば十分である。例えば、状態2について確認を行う場合、状態2の初期状態からの遷移数は1であるため、初期状態からの遷移数が0(つまり初期状態)からの状態遷移に、関連する部分パターンがあるかどうかを確認すればよい。
「ステップ3」状態遷移図の完成
図3(c)において、パターン番号が関連づけられている状態において、状態遷移先がない入力に対して状態“0”に戻る遷移を追加すると、同図(d)に示す状態遷移図が完成する。例えば、同図(c)において、状態1で“DE*”が入力されるとパターン3にマッチするが、“DE*”が入力された場合に対応する状態遷移先がない。対応する状態遷移先がないということは初期状態に戻ることを意味するため、状態“0”への遷移を追加する。同図(d)の状態“1”から状態“0”への添字“DE*”の矢印がこれに該当する。以上により、状態遷移図が完成され、図4に示すような状態遷移図が得られる。
図5は、状態遷移メモリ200に格納される状態遷移表の内容を示している。図4に示す状態遷移図から状態遷移図表を作成し、これをCAM20及びアソシエートデータRAM23に格納すると、図5に示すようになる。CAM20の各エントリ、及び、そのエントリに対応するアソシエートデータRAM23の各エントリには、状態遷移が1つずつ格納される。CAM20の各エントリは、現状態番号格納域21と照合文字列格納域22との2つの領域を有する。現状態番号格納域21には、状態遷移前の状態の番号が格納され、照合文字列格納域22には、状態遷移条件となる文字列が格納される。照合文字列格納域22はN文字分の容量を有する。照合文字列格納域22に格納される文字列の長さがN文字に満たない場合には、その文字列は左詰めされ、余剰領域はドントケア(*)で埋められる。
ここで、CAM20の要件について述べる。CAM20は、完全一致検索だけでなく、部分一致検索の能力も有していなければならない。すなわち、CAM20は、値「0」と値「1」に加えて、比較の対象にしないことを示すドントケアの3値を記憶できるものとする。また、CAM20を検索した際に、同時に複数のエントリに一致した場合は、最も若いアドレスのエントリが採用されるものとする。例えば、図5において、現状態番号120=“2”、被検索文字121−1=“A”、被検索文字121−2=“B”、被検索文字121−3=“C”からなる検索キーがCAM20に入力されると、アドレス“2”、“5”、“9”の3つのエントリにヒットするが、最も若いアドレスである“2”がCAM20の出力になる。
アソシエートデータRAM23の各エントリは、次状態番号格納域24とパターン番号群格納域25との2つの領域を有する。次状態番号格納域24には、状態遷移後の状態の番号が格納される。パターン番号群格納域25には、状態遷移によって検出されるパターンの番号を格納する領域をN個有する。ここで、パターン番号“0”は、いずれのパターンにも一致していないことを示している。
パターン番号群格納域25へのパターン番号の格納方法について述べる。パターン番号群格納域25には、入力文字列の何文字目でパターンを検出するかに応じて、パターン番号が格納される位置が決定される。例えば、照合文字列格納域22の左から1文字目で検出されるパターンの番号は、パターン番号群格納域25の左から1番目に格納される。照合文字列格納域22の左から2文字目で検出されるパターンの番号は、パターン番号群格納域25の左から2番目に格納される。具体的に、あるエントリの照合文字列格納域22が”BCD”であるときには、その2文字目でパターン“BC”(パターン番号“2”)を検出したいため、パターン番号群格納域25の2番目にパターン番号“2”を格納し、パターン番号格納域25は、“020”となる。
CAM20に状態遷移の情報を格納後、CAM20の使用されていないエントリの内容を、全てドントケア(*)とする。また、アソシエートデータRAM23の使用されていないエントリの内容を、全て”0”とする。これは、検索キー126が、CAM20のどのエントリとも一致しなかった場合に、強制的に初期状態に遷移させるためである。
以上、具体例を挙げて説明したCAM20及びアソシエートデータRAM23への状態遷移表の格納方法を、一般的に説明すると次のようになる。先ず、検索対象とするパターンに基づいて、状態遷移図を作成する。次いで、作成した状態遷移図に含まれる全ての状態遷移を、CAM20及びアソシエートデータRAM23の各エントリに1つずつ格納する。その際、以下の2つの条件を満たすようにする。
・遷移前の状態が初期状態(状態番号=“0”)である状態遷移を、そうでない状態遷移よりも後のアドレス(大きなアドレス)のエントリに格納する。
・同一状態から遷移する2つの状態遷移については、遷移条件となる文字列が長い方の状態遷移を、短いものよりも若いアドレス(小さなアドレス)のエントリに格納する。
そして、最後に、CAM20の現状態番号格納域21の内容が“0”(=初期状態)であるエントリについて、現状態番号格納域の内容を“*”に書き換える。
次に、CAM20及びアソシエートデータRAM23の機能について説明する。CAM20は、現状態番号120と被検索文字121−1〜121−Nとの組を検索キーとしてエントリを検索し、見つかったエントリのアドレス122をアソシエートデータRAM23に出力する。CAM20は、このようなエントリ検索処理を、クロック信号100の1周期に、少なくとも1回、常に開始できる。言い換えれば、CAM20は、複数のエントリ検索処理を並行して実行することができる。ただし、エントリ検索処理に要する時間(検索が要求されてから、アドレス122を出力するまでの遅延時間)には、制約がない。なお、本実施の形態では、CAM20として、クロック信号100の1周期につき、少なくとも1回、常にエントリ検索処理を開始できるものを使用したが、クロック信号100のK周期(Kは整数)に1回しかエントリ検索処理を開始できないCAMを使用した場合には、クロック信号100をK逓倍したクロック信号を、CAMの動作クロックとすれば良い。
アソシエートデータRAM23は、アドレス122に対応するエントリの内容を読み出し、その内容を次状態番号123とパターン番号124−1〜124−Nとして出力する。アソシエートデータRAM23は、このような読み出し処理を、クロック信号100の1周期に、少なくとも1回、常に開始できる。言い換えれば、アソシエートデータRAM23は、複数の読み出し処理を並行して実行することができる。ただし、読み出し処理に要する時間(アドレス122が入力されてから、次状態番号123とパターン番号124−1〜124−Nを出力するまでの遅延時間)には、制約がない。なお、本実施の形態では、アソシエートデータRAM23として、クロック信号100の1周期につき、少なくとも1回、常に読み出し処理を開始できるものを使用したが、クロック信号100のK周期に1回しか読み出し処理を開始できないアソシエートデータRAMを使用した場合には、クロック信号100をK逓倍したクロック信号をアソシエートデータRAMの動作クロックとすれば良い。
状態番号レジスタ27は、クロック信号100の立ち上がりで、アソシエートデータRAM23が出力する次状態番号123をラッチしてこれを保持する。状態番号レジスタ27の初期値は“0”である。状態番号レジスタ27は、保持する状態番号を、現状態番号120として出力する。
パターン番号レジスタ28−M(1≦M≦N)は、それぞれクロック信号100の立ち上がりで、アソシエートデータRAM23が出力するパターン番号124−Mをラッチする。パターン番号レジスタ28−M(2≦M≦N)それぞれの出力値は、遅延器29−Mによってクロック信号100の(M−1)周期分だけ遅延させられて、パターン番号125−Mとして出力される。
パターン選択回路30は、パターン番号125−1〜125−Nを入力し、それらの中で最も大きいものをパターン番号102として出力する。これにより、同時に複数のパターンが検索された場合には、大きいパターン番号が割り当てられているパターンが優先されることになる。例えば、被検索文字列101が“ABCDE”のとき、その5文字目において、パターン1(“E”)、及び、パターン3(“ABCDE”)の両方が同時に検出されるが、パターン番号の大小関係により、パターン3(“ABCDE”)が採用される。なお、本実施の形態では、パターン選択回路30を使用して、パターン番号125−1〜125−Nの中から最も大きなパターン番号を選択するようにしているが、他の選択ルール(例えば、最も小さなパターン番号を選択する)に従ってパターン番号を選択する選択回路を使用することもできる。
数値Nの最適値について説明する。Nは自然数であり、CAM20の検索に要する時間の最大値と、アソシエートデータRAM23の読み出しに要する時間の最大値との、合計によって決まる。この合計時間をATと表記し、クロック信号100の周期をCTと表すと(ATとCTの単位は同一でなければならない)、
N×CT=AT
を関係を満たすNが、Nの最適値である。
検索キーとする文字列の文字数(=シフトレジスタ26の段数)Nは、2文字以上であればどのような値でも良いが、本実施の形態の説明で用いたように、Nとして上記式により求めた値を採用すると最も効率的な検索を行うことが可能となる。検索キーとする文字列の文字数Nが、上記式より求めた値より大きい場合には、N文字後の検索キーが検索要求部201に取り込まれるより前に、状態遷移格納メモリ200から次状態番号123が出力され、状態番号レジスタ27から出力される現状態番号120と検索キー126の出力のタイミングがずれる。この場合には、状態遷移格納メモリ200から出力される次状態番号123を、遅延器によって遅延して状態番号レジスタ27に入力することで、タイミングズレを回避すればよい。遅延器による遅延量は、(N−AT)/CTにより求めることができる。逆に、検索キーとする文字列の文字数Nが、上記式よりもとめた値より小さい場合には、N文字前の検索キーに対応する検索結果が状態遷移格納メモリ200から出力されるまで、検索要求部201の処理(シフトレジスタ26への新たな被検索文字の取り込み及び状態遷移格納メモリ200への検索キーの出力)を停止して、タイミングズレを回避すればよい。
[実施の形態の動作]
以下、図1のデータ検索装置10の動作について、具体例を挙げて詳細に説明する。図6は、データ検索装置10の各部の動作状況をタイミングチャートで示している。この例では、N=3とし、被検索文字列101を“ABCDABCDEF”とする。また、CAM20とアソシエートデータRAM23は、図5に示す内容を記憶しており、データ検索装置10は、図4に示す状態遷移図に従って、パターン1からパターン4を検出する。以下では、クロック信号100の10回目の立ち上がり時の動作について述べる。その他のタイミングにおける動作も同様であるため、それらの説明を割愛する。
クロック信号100の10回目の立ち上がりエッジでは、被検索文字レジスタ26−1〜26−3に格納された文字が1文字分シフトされ、被検索文字列101の10文字目“F”が被検索文字レジスタ26−3に格納される。この結果、被検索文字121−1〜121−3は、“DEF”となる。また、次状態番号123の値“3”が状態番号レジスタ27にラッチされ、現状態番号120が“3”になる。
検索要求部201は、現状態番号120の値“3”、及び、被検索文字121−1〜121−3の値“DEF”を、検索キー126としてCAM20に入力し、CAM20では、入力された検索キー126に従った検索が開始される。この検索キー126に一致するCAM20のエントリのアドレスは、“3”、“4”、“9”であり、前述のように、複数のエントリに同時にヒットした場合は、最もアドレスの小さいエントリが採用されるため、CAM20が最終的に出力するアドレス122は”3”となる。次に、アドレス122の値“3”に対応するアソシエートデータRAM23のエントリの内容が読み出され、次状態番号123が“0”に、パターン番号124−1〜124−3がそれぞれ“4”、“3”、“0”になる。
本例ではNの値を“3”としているから、CAM20のエントリ検索処理とアソシエートデータRAM23の読み出し処理に、クロック信号100の3周期分の時間を要する。従って、現状態番号120の値“3”と、被検索文字121−1〜121−3の値“DEF”がCAM20に入力されてから、クロック信号100の3周期後(すなわち、クロック信号100の13回目の立ち上がり時)に、次状態番号123の値“0”が状態番号レジスタ27にラッチされ、パターン番号124−1〜124−3の値“430”がパターン番号レジスタ28−1〜28−3にラッチされる。また、CAM20のエントリ検索処理及びアソシエートデータRAM23の読み出し処理と並行して、クロック信号100の11回目の立ち上がり時に入力された検索キー(現状態番号“1”と被検索文字列“EF−”との組)及び12回目の立ち上がり時に入力された検索キー(現状態番号“0”と被検索文字列“F−−”との組)に従ったCAM20のエントリ検索処理及びアソシエートデータRAM23の読み出し処理も行われる。
パターン番号125−1は、パターン番号レジスタ28−1の出力値であるから、クロック信号100の13回目の立ち上がり時にパターン番号125−1は“4”になる。パターン番号レジスタ28−2の出力値は、遅延器29−2によりクロック信号100の1周期分だけ遅延される。また、パターン番号レジスタ28−3の出力値は、遅延器29−3によりクロック信号100の2周期分だけ遅延される。従って、クロック信号100の14回目の立ち上がりでパターン番号125−2は“3”になり、クロック信号100の15回目の立ち上がりでパターン番号125−3は“0”になる。
クロック信号100の13回目の立ち上がりの際、パターン番号125−1〜125−3が“400”になり、このときのパターン番号102は、それらの値の最大値である“4”になる。よって、パターン番号“4”に対応するパターン“BCDABCD”が一致検索されたことになる。このような操作を繰り返すことにより検索対象のパターンの検出を行うことができる。
従来のデータ検索装置では、1文字単位で状態遷移を行っており、1つ前の入力文字による状態遷移先が確定しないと、その次の文字の状態遷移が決定できず、状態遷移格納メモリの検索中に、次の文字を入力することができなかった。本実施形態では、状態遷移格納メモリ200は、N文字単位で状態遷移を行う状態遷移表を格納しており、入力された検索キー126に一致するエントリの次状態番号123及びパターン番号124−1〜124−Nを出力する。また、状態遷移格納メモリ200は、検索キー126を基づく検索を複数並列に実行できる。このため、1文字単位で状態遷移を行う従来に比して、パターン検出を高速化することができる。
本発明の効果を得るためのポイントに関して整理する。検索速度の向上という本発明の効果は、(1)並列検索機能を持つ状態遷移格納メモリ200と、(2)入力文字N文字単位の状態遷移表と、(3)N文字単位の状態遷移表において長さがN文字に満たない場合の状態遷移を表すドントケア表現を格納できるCAM20との3つを組み合わせることにより、初めて得ることができる。これら3つの要素のうち、いずれかひとつが欠けても本発明の効果を最大限に得ることはできない。
第2実施形態
本発明の第2実施形態のデータ検索装置は、図1に示す第1実施形態のデータ検索装置10と同様な構成を有する。第1実施形態では、状態遷移格納メモリ200は、検索キー126に対する検索結果を、一定の時間で出力している。本実施形態では、状態遷移格納メモリ200による検索時間が一定の時間で終了せず、可変時間となる点で、第1実施形態のデータ検索装置10と異なる。また、本実施形態では、状態番号レジスタ27は最大N個の検索結果を保持する機能を有する。
図7は、本実施形態の検索要求部201の検索キー126の生成時の動作手順をフローチャートで示している。データ検索装置100は、クロック信号100に同期した、被検索文字列101の次の1文字を取り込む(ステップS1)。本実施形態では、状態遷移格納メモリ200において検索結果が得られるまでにかかる時間が一定時間ではないため、N文字前の検索結果が得られている保証がない。そこで、検索要求部201は、状態遷移格納メモリ200においてN文字前の検索結果が得られているか否か、つまり、N文字前の検索結果の状態番号が状態番号レジスタ27に保持されたか否かを判断する(ステップS2)。
例えば被検索文字列が“ABCDEF”で、N=3であり、ステップS1で6文字目の“F”を取り込んだときには、ステップS2では、シフトレジスタ26が保持する3文字の文字列“DEF”の3文字前の“ABC”の検索結果が得られているか否かを判断する。検索要求部201は、ステップS2で、検索結果が得られていないと判断したときには、クロック信号100の入力を待ち(ステップS3)、ステップS2に戻り、N文字前の検索結果が得られるまで処理を遅延する。検索要求部201は、ステップS2で検索結果が得られていると判断すると、前N文字の検索結果による次状態番号を、現状態番号120として、検索キー126を生成して、これを状態遷移格納メモリ200に入力する(ステップS4)。検索要求部201は、以上のような動作手順により、検索キー126を生成して、状態遷移格納メモリ200に検索キー126を入力する。
図8は、本実施形態の状態遷移格納メモリ200における検索処理の様子を示している。この例では、N=4とし、被検索文字列101を“ABCDEFGHIKLM・・・”とする。検索要求部201は、ステップ41で、クロック信号の6回目の立ち上がりエッジ(時刻t6)で被検索文字列中101の“I”を取り込むと、ステップS2で、新たに取り込んだ“I”を末尾の文字とする文字列401−6“FGHI”の4文字前の文字列401−2“BCDE“を検索キー126に含む検索402−2の検索結果が得られているか否かを判断する。
図8では、時刻t6では、検索402−2の検索はまだ終了しておらず、検索結果は得られていない。このため、検索要求部201は、ステップS4で、クロック信号100の1周期分だけ処理を遅延し、時刻t7で、再び検索402−2の検索結果が得られているか否かを判断する。検索402−2は、時刻t6と時刻t7の間で終了し、現状態番号レジスタ27は、時刻t7で、その検索結果による次状態番号をラッチする。検索要求部201は、時刻t7で、検索結果が得られていると判断し、現状態番号レジスタ27の内容と、文字列401−6“FGHI”とを、検索キー126として状態遷移格納メモリ200に入力する。
状態遷移格納メモリ200は、時刻t7で、入力された検索キー126に従った検索処理202−6を開始する。その後、次のクロックである時刻t8で、新たに文字“K”を取り込み、文字列401−3“CDEF”の検索402−3の検索結果が得られているか否かを判断する。図6では、検索402−3の検索結果は時刻t8と時刻t9の間で得られるため、検索要求部201は、クロック信号100の1周期分だけ処理を遅延して、文字列401−7“GHIK”を含む検索キー126を、状態遷移格納メモリ200に入力し、状態遷移格納メモリ200は、検索402−7を開始する。
本実施形態では、状態遷移格納メモリ200の検索に要する時間が一定ではないため、先に開始した検索の結果が得られるよりも前に、後に開始した検索の結果が得られることが考えられる。このような場合に備えて、状態番号レジスタ27は、複数の検索結果を保持できるように構成される。状態番号レジスタ27が保持できる検索結果の数は、最大で、状態遷移格納メモリ200の検索処理の並列実行数であり、状態番号レジスタ27は、最大N個の検索結果を保持することができる。
例えば図6では、検索402−7は、検索402−3の結果を用いて行われるが、検索402−7を開始する時刻t9より前に、検索402−3よりも後に開始した検索402−4、202−5の検索結果が得られている。この場合、状態番号レジスタ27は、検索402−4の検索結果及び検索402−5の検索結果を、後に使用する検索結果として保持しておく。状態番号レジスタ27が保持する検索402−4の検索結果は、文字列401−4“DEFG”に後続する文字列401−8“HIKL”に対する検索402−8を開始する時刻t10で、現在状態番号120として、状態遷移格納メモリ200に入力される。状態遷移格納レジスタ27に保持された検索結果は、次のN文字先の文字列と共に検索キー126として状態遷移格納メモリ200に入力された後に、任意のタイミングで削除される。
本実施形態では、状態遷移格納メモリ200における検索キー126に対する検索時間が、可変時間で終了する。このような場合には、N文字前の検索結果が得られるまで、検索キー126の入力を遅延することで、N文字前の状態遷移結果に基づいて、次のN文字の状態遷移を行うことができる。これにより、本実施形態では、第1実施形態と同様な効果を得ることができる。
第3実施形態
図9は、本発明の第3実施形態のデータ検索装置の構成を示している。本実施形態のデータ検索装置100aは、状態遷移格納メモリの構成が、第1及び第2実施形態と相違する。本実施形態の状態遷移格納メモリ300は、検索要求振り分け回路302、状態遷移メモリ301−1〜301−M(Mは2以上の整数)、及び、検索結果多重回路303を備える。
状態遷移メモリ301−1〜301−Mは、それぞれ、図4に示すようなN文字単位の状態遷移図から作成した状態遷移表を格納し、状態遷移表に基づいて検索処理を実行する。各状態遷移格納メモリ301は、状態遷移表を格納し、検索処理を実行する機能を持っていれば、どのような構成であっても構わない。各状態遷移メモリ301の具体的な構成は、例えば第1実施形態状態遷移格納メモリ200のように並列検索機能を持つものであってもよく、或いは、同時に1つの検索処理しか実行できないものであってもよく、また、その他の状態遷移表に基づく検索装置であってもよい。
検索要求振り分け回路302は、状態遷移格納メモリ300に検索キー126が入力されると、状態遷移メモリ301−1〜301−Mのうち、いずれか一つの状態遷移メモリを選択し、選択した状態遷移メモリに検索キー126を入力する。このとき、検索キー126を入力する状態遷移メモリの選択にあたっては、どの状態遷移メモリを選択してもよいが、検索処理を実行中でない状態遷移メモリを選択するのが望ましい。
検索キー126が入力された状態遷移メモリ301は、状態遷移表に基づいて検索処理を実行し、検索結果として、次状態番号とパターン番号群を出力する。検索結果多重回路303は、状態遷移メモリ301−1〜301−Mから出力された検索結果(次状態番号とパターン番号群)を多重し、次状態番号123とパターン番号124−1〜124−Nを出力する。
本実施形態では、複数の状態遷移メモリ301を用いることにより、状態遷移格納メモリ300aの並列検索機能を実現する。本実施形態においても、第1実施形態と同様な効果を得ることができる。
以上、本発明をその好適な実施形態に基づいて説明したが、本発明のデータ検索装置及びデータ検索方法は、上記実施形態例にのみ限定されるものではなく、上記実施形態の構成から種々の修正及び変更を施したものも、本発明の範囲に含まれる。例えば、図1に示した構成をLSI化してデータ検索回路を構成する等の変更が可能である。
本発明の第1実施形態のデータ検索装置の構成を示すブロック図。 状態遷移格納メモリ200における検索処理の様子を示すタイムチャート。 (a)〜(d)は、状態遷移図の作成の様子を示す図。 第1実施形態における決定性有限オートマトンの状態遷移図の具体例を示す図。 状態遷移格納メモリ200に格納された状態遷移表の内容を示す図。 データ検索装置100の動作例を示すタイムチャート。 本発明の第2実施形態のデータ検索装置の動作手順を示すフローチャート。 データ検索装置の動作例を示すタイムチャート。 本発明の第3実施形態のデータ検索装置の構成を示すブロック図。 従来のデータ検索装置の構成を示すブロック図。 従来のデータ検索装置のCAM70及びアソシエートデータRAM73が記憶する内容を示す図。 従来のデータ検索装置における状態遷移図のぐらい例を示す図。
符号の説明
10:データ検索装置
200:状態遷移格納メモリ
201:検索要求部
202:出力パタン決定部
20:CAM
21:現状態番号格納域
22:照合文字列格納域
23:アソシエートデータRAM
24:次状態番号格納域
25:パターン番号群格納域
26:シフトレジスタ
26−1〜26−N:被検索文字レジスタ
27:状態番号レジスタ
28−1〜28−N:パターン番号レジスタ
29−2〜29−N:遅延器
30:パターン選択回路
100:クロック信号
101:被検索文字列
102:パターン番号
120:現状態番号
121−1〜121−N:被検索文字
122:アドレス
123:次状態番号
124−1〜124−N:パターン番号
125−1〜125−N:パターン番号
126:検索キー

Claims (21)

  1. 予め与えられた1種類以上のパターンを被検索文字列から検索するデータ検索装置において、
    検索キーとして状態番号と前記被検索文字列中の連続するN文字(Nは2以上の整数)との組が入力される毎に、状態番号と前記パターン中の状態遷移条件となる各文字列との組み合わせに対して、次の状態番号と該次の状態番号に遷移したときに検索したことになる全てのパターンのパターン番号とを関連付けた状態遷移表を検索して該当する次の状態番号と該当する全てのパターン番号とを出力するという検索処理を、既に実行中の検索処理と並行して実行する状態遷移格納メモリと、
    前記状態遷移格納メモリに対して検索キーの一部として入力した前記被検索文字列中の連続するN文字よりも先頭文字を1文字ずらしたN文字と、前記状態遷移格納メモリから出力された次の状態番号との組を検索キーとして前記状態遷移格納メモリに入力する入力手段とを備えたことを特徴とするデータ検索装置。
  2. 前記状態遷移格納メモリに対して検索キーの一部として入力した前記被検索文字列中の連続するN文字よりも先頭文字を1文字ずらしたN文字と、N文字前の前記被検索文字列の検索結果として前記状態遷移格納メモリから出力された次の状態番号との組を検索キーとして前記状態遷移格納メモリに入力する入力手段を更に備えたことを特徴とする、請求項1に記載のデータ検索装置。
  3. 前記入力手段が、
    前記被検索文字列をシフトするN段構成のシフトレジスタと、
    前記アソシエートデータメモリから出力される次の状態番号を保持する状態番号レジスタとを含むことを特徴とする、請求項2の何れか一に記載のデータ検索装置。
  4. 前記状態遷移格納メモリが、
    状態番号と前記パターン中の状態遷移条件となる各文字列との組み合わせ毎のエントリを有し、前記入力手段から検索キーが入力される毎に、前記エントリを検索して一致エントリを示す一致エントリ情報を出力するというエントリ検索処理を、既に実行中のエントリ検索処理と並行して実行する連想メモリと、
    該連想メモリの各エントリに対応するエントリであって、次の状態番号と該次の状態番号に遷移したときに検索したことになる全てのパターンのパターン番号とが登録されたエントリを有し、前記連想メモリから一致エントリ情報が出力される毎に、前記一致エントリ情報によって示されるエントリから次の状態番号とパターン番号とを読み出すという読み出し処理を、既に実行中の読み出し処理と並行して実行するアソシエートデータメモリとから構成されることを特徴とする、請求項1〜3の何れか一に記載のデータ検索装置。
  5. 前記アソシエートデータメモリから出力される、同一最終文字に対する複数のパターン番号の中から、所定の選択ルールに従って1つのパターン番号を選択して出力する選択手段を備えたことを特徴とする、請求項4に記載のデータ検索装置。
  6. 前記選択手段が、
    前記アソシエートデータメモリから出力された、前記アソシエートデータメモリの或るエントリに登録されているパターン番号を、前記或るエントリと対応する前記連想メモリのエントリに登録されている文字列における、前記パターン番号に対応する最終文字の位置に応じた時間だけ遅延させる遅延回路と、
    該遅延回路から出力されるパターン番号の中から、予め定められたルールに従って1つのパターン番号を選択する選択回路とを含むことを特徴とする、請求項5に記載のデータ検索装置。
  7. 前記状態遷移格納メモリが、
    検索キーとして状態番号と前記被検索文字列中の連続するN文字(Nは2以上の整数)との組が入力される毎に、状態番号と前記パターン中の状態遷移条件となる各文字列との組み合わせに対して、次の状態番号と該次の状態番号に遷移したときに検索したことになる全てのパターンのパターン番号とを関連付けた状態遷移表を検索して該当する次の状態番号と該当する全てのパターン番号とを出力するという検索処理を実行する、複数の状態遷移メモリと、
    状態遷移格納メモリへ入力された検索キーを前記状態遷移メモリへ振り分けを行う検索要求振り分け部と、
    前記状態遷移メモリからの検索結果出力の多重を行う検索結果多重部から構成されることを特徴とする、請求項1〜3の何れか一に記載のデータ検索装置。
  8. 決定性有限オートマトンに基づいて文字列検索を行うことを特徴とする、請求項1〜7の何れか一に記載のデータ検索装置。
  9. 被検索文字列中のN文字の部分文字列と現在状態とに従って次状態を決定して状態遷移を行いつつ、予め与えられた1種類以上のパターンを被検索文字列から検索するデータ検索装置であって、
    被検索文字列を先頭から順次に1文字ずつラッチし、該ラッチした被検索文字列のN文字の部分文字列を保持する被検索文字レジスタと、現在の状態番号を示す現在状態番号を保持する現在状態番号レジスタとを有し、前記被検索文字レジスタが保持するN文字の部分文字列と、前記現在状態番号レジスタが保持する現在状態番号とを検索キーとして出力する検索要求部と、
    前記検索キーが入力されるごとに、該検索キーをキーとして、現在状態番号及び照合文字列の組合せと、該組合せによって遷移する次の状態の番号を示す次状態番号、及び、次状態に遷移した際に検索されたこととなる全てのパターンのパターン番号とを対応付けて記憶するテーブルを検索し、前記検索キーに一致する現在状態番号及び照合文字列の組合せに対応する次状態番号及びパターン番号を出力する検索処理部とを備え、
    前記検索要求部は、前記検索処理部が前記検索キーをキーとする検索を終了する前に、当該検索キーに含まれるN文字の部分文字列から1文字分ずらしたN文字の部分文字列を含む新たな検索キーを出力し、前記検索処理部は、既に行っている検索と並行に、前記検索要求部が出力する新たな検索キーをキーとする検索を開始することを特徴とするデータ検索装置。
  10. 前記テーブルは、前記パターン番号と、前記N文字の部分文字列中の何文字目で当該パターンが検索されたこととなるかとを対応付けて記憶する、請求項9に記載のデータ検索装置。
  11. 前記照合文字列が、前記N文字の部分文字列との間で比較の対象とならないことを示すドントケア表現を含む、請求項9又は10に記載のデータ検索装置。
  12. 前記検索処理部が、被検索文字列中のN文字の部分文字列を含む検索キーをキーとする検索による次状態番号及びパターン番号を出力すると、前記検索要求部は、当該次状態番号を現在状態番号レジスタに格納し、当該次状態番号と、前記N文字の部分文字列に後続する被検索文字列のN文字の部分文字列とを新たな検索キーとして出力する、請求項9〜11の何れか一に記載のデータ検索装置。
  13. 予め与えられた1種類以上のパターンを被検索文字列から検索するデータ検索方法において、
    状態番号と前記パターン中の状態遷移条件となる各文字列との組み合わせに対して、次の状態番号と該次の状態番号に遷移したときに検索したことになる全てのパターンのパターン番号とを関連付けた状態遷移表を状態遷移格納メモリに登録しておき、
    検索キーとして状態番号と前記被検索文字列中の連続するN文字(Nは2以上の整数)との組が入力される毎に、前記状態遷移表を検索して該当する次の状態番号と該当する全てのパターン番号とを出力するという検索処理を、既に実行中の検索処理と並行して実行し、
    前記検索処理によって出力された次の状態番号と、前記被検索文字列中の次のN文字とを、次の検索に使用する検索キーとすることを特徴とするデータ検索方法。
  14. 連想メモリの各エントリに、状態番号と前記パターン中の状態遷移条件となる文字列とを登録しておくと共に、アソシエートデータメモリの各エントリに、次の状態番号と該次の状態番号に遷移したときに検索したことになる全てのパターンのパターン番号とを登録しておき、
    前記連想メモリが、検索キーが入力される毎に、前記エントリを検索して一致エントリを示す一致エントリ情報を出力するというエントリ検索処理を、既に実行中のエントリ検索処理と並行して実行し、
    前記アソシエートデータメモリが、前記連想メモリから一致エントリ情報が出力される毎に、前記一致エントリ情報によって示されるエントリから次の状態番号とパターン番号とを読み出すという読み出し処理を、既に実行中の読み出し処理と並行して実行することを特徴とする、請求項13に記載のデータ検索方法。
  15. 前記アソシエートデータメモリから出力される、同一最終文字に対する複数のパターン番号の中から、所定の選択ルールに従って1つのパターン番号を選択して出力することを特徴とする、請求項14に記載のデータ検索方法。
  16. 前記状態遷移格納メモリに、検索キーが入力される毎に、
    検索キーとして状態番号と前記被検索文字列中の連続するN文字(Nは2以上の整数)との組が入力される毎に、状態番号と前記パターン中の状態遷移条件となる各文字列との組み合わせに対して、次の状態番号と該次の状態番号に遷移したときに検索したことになる全てのパターンのパターン番号とを関連付けた状態遷移表を検索して該当する次の状態番号と該当する全てのパターン番号とを出力するという検索処理を実行する、複数の状態遷移メモリの中から、検索を実行する状態遷移メモリを選択し、エントリ検索処理を実行し、一つ以上の状態遷移メモリから出力される検索結果を多重して出力することを特徴とする、請求項13〜15の何れか一に記載のデータ検索方法。
  17. 決定性有限オートマトンに基づいて文字列検索を行うことを特徴とする、請求項13〜16の何れか一に記載のデータ検索方法。
  18. 被検索文字列中のN文字の部分文字列と現在状態とに従って次状態を決定して状態遷移を行いつつ、予め与えられた1種類以上のパターンを被検索文字列から検索するデータ検索方法であって、
    被検索文字列から連続するN文字をラッチし、該ラッチしたN文字の部分文字列と現在の状態番号を示す現在状態番号とを検索キーとして出力する検索キー出力ステップと、
    前記検索キーが入力されるごとに、該検索キーをキーとして、現在状態番号及び照合文字列の組合せと、該組合せによって遷移する次の状態の番号を示す次状態番号、及び、次状態に遷移した際に検索されたこととなる全てのパターンのパターン番号とを対応付けて記憶するテーブルを検索し、前記検索キーに一致する現在状態番号及び照合文字列の組合せに対応する次状態番号及びパターン番号を出力する検索処理ステップとを備え、
    前記検索キー出力ステップが、既に出力された検索キーに従う検索処理ステップが終了する前に、当該検索キーに含まれるN文字の部分文字列から1文字分ずらしたN文字の部分文字列を含む新たな検索キーを出力し、既に開始している検索処理ステップと並行に、前記新たな検索キーをキーとして検索をする検索処理ステップが開始することを特徴とするデータ検索方法。
  19. 前記テーブルは、前記パターン番号と、前記N文字の部分文字列中の何文字目で当該パターンが検索されたこととなるかとを対応付けて記憶する、請求項18に記載のデータ検索方法。
  20. 前記照合文字列が、前記N文字の部分文字列との間で比較の対象とならないことを示すドントケア表現を含む、請求項18又は19に記載のデータ検索方法。
  21. 前記検索処理ステップが、被検索文字列中のN文字の部分文字列を含む検索キーをキーとする検索による次状態番号及びパターン番号を出力すると、前記検索キー出力ステップは、当該出力された次状態番号と、前記N文字の部分文字列に後続する被検索文字列のN文字の部分文字列とを新たな検索キーとして出力する、請求項18〜20の何れか一に記載のデータ検索装置。
JP2005015049A 2004-01-30 2005-01-24 データ検索装置及び方法 Expired - Fee Related JP4120888B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005015049A JP4120888B2 (ja) 2004-01-30 2005-01-24 データ検索装置及び方法
US11/045,090 US7769753B2 (en) 2004-01-30 2005-01-31 Method and system for retrieving a data pattern

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004022842 2004-01-30
JP2005015049A JP4120888B2 (ja) 2004-01-30 2005-01-24 データ検索装置及び方法

Publications (2)

Publication Number Publication Date
JP2005242997A true JP2005242997A (ja) 2005-09-08
JP4120888B2 JP4120888B2 (ja) 2008-07-16

Family

ID=34810165

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005015049A Expired - Fee Related JP4120888B2 (ja) 2004-01-30 2005-01-24 データ検索装置及び方法

Country Status (2)

Country Link
US (1) US7769753B2 (ja)
JP (1) JP4120888B2 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009517782A (ja) * 2005-12-02 2009-04-30 エクセジー・インコーポレイテツド 高性能正規表現パターンマッチングのための方法および装置
WO2009147794A1 (ja) * 2008-06-04 2009-12-10 日本電気株式会社 有限オートマトン生成システム
US8326819B2 (en) 2006-11-13 2012-12-04 Exegy Incorporated Method and system for high performance data metatagging and data indexing using coprocessors
US8379841B2 (en) 2006-03-23 2013-02-19 Exegy Incorporated Method and system for high throughput blockwise independent encryption/decryption
US8626688B2 (en) 2007-01-12 2014-01-07 Nec Corporation Pattern matching device and method using non-deterministic finite automaton
US8879727B2 (en) 2007-08-31 2014-11-04 Ip Reservoir, Llc Method and apparatus for hardware-accelerated encryption/decryption
US8880501B2 (en) 2006-11-13 2014-11-04 Ip Reservoir, Llc Method and system for high performance integration, processing and searching of structured and unstructured data using coprocessors

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7634500B1 (en) * 2003-11-03 2009-12-15 Netlogic Microsystems, Inc. Multiple string searching using content addressable memory
US7353332B2 (en) * 2005-10-11 2008-04-01 Integrated Device Technology, Inc. Switching circuit implementing variable string matching
US20070133593A1 (en) * 2005-11-21 2007-06-14 Udaya Shankara Searching Strings Representing a Regular Expression
US7921046B2 (en) 2006-06-19 2011-04-05 Exegy Incorporated High speed processing of financial information using FPGA devices

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0746362B2 (ja) 1986-02-03 1995-05-17 日本電信電話株式会社 文字列照合方法
JP2745710B2 (ja) 1989-08-23 1998-04-28 株式会社日立製作所 ストリングサーチ方法およびそのための装置
JPH10307840A (ja) 1997-05-09 1998-11-17 Canon Inc 情報処理装置及びその方法
JP3521176B2 (ja) * 1997-09-26 2004-04-19 株式会社東芝 検索方法および検索装置
JP4155382B2 (ja) * 2001-01-25 2008-09-24 富士通株式会社 パターン検索方法、パターン検索装置、パターン検索プログラムを記録したコンピュータ読み取り可能な記録媒体、パターン検索システムおよびパターン検索プログラム
JP3842573B2 (ja) * 2001-03-30 2006-11-08 株式会社東芝 構造化文書検索方法、構造化文書管理装置及びプログラム
US7222129B2 (en) * 2002-03-29 2007-05-22 Canon Kabushiki Kaisha Database retrieval apparatus, retrieval method, storage medium, and program
US20050273450A1 (en) * 2004-05-21 2005-12-08 Mcmillen Robert J Regular expression acceleration engine and processing model

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009517782A (ja) * 2005-12-02 2009-04-30 エクセジー・インコーポレイテツド 高性能正規表現パターンマッチングのための方法および装置
US8737606B2 (en) 2006-03-23 2014-05-27 Ip Reservoir, Llc Method and system for high throughput blockwise independent encryption/decryption
US8379841B2 (en) 2006-03-23 2013-02-19 Exegy Incorporated Method and system for high throughput blockwise independent encryption/decryption
US8983063B1 (en) 2006-03-23 2015-03-17 Ip Reservoir, Llc Method and system for high throughput blockwise independent encryption/decryption
US8326819B2 (en) 2006-11-13 2012-12-04 Exegy Incorporated Method and system for high performance data metatagging and data indexing using coprocessors
US11449538B2 (en) 2006-11-13 2022-09-20 Ip Reservoir, Llc Method and system for high performance integration, processing and searching of structured and unstructured data
US10191974B2 (en) 2006-11-13 2019-01-29 Ip Reservoir, Llc Method and system for high performance integration, processing and searching of structured and unstructured data
US9396222B2 (en) 2006-11-13 2016-07-19 Ip Reservoir, Llc Method and system for high performance integration, processing and searching of structured and unstructured data using coprocessors
US8880501B2 (en) 2006-11-13 2014-11-04 Ip Reservoir, Llc Method and system for high performance integration, processing and searching of structured and unstructured data using coprocessors
US9323794B2 (en) 2006-11-13 2016-04-26 Ip Reservoir, Llc Method and system for high performance pattern indexing
US8626688B2 (en) 2007-01-12 2014-01-07 Nec Corporation Pattern matching device and method using non-deterministic finite automaton
US9363078B2 (en) 2007-03-22 2016-06-07 Ip Reservoir, Llc Method and apparatus for hardware-accelerated encryption/decryption
US8879727B2 (en) 2007-08-31 2014-11-04 Ip Reservoir, Llc Method and apparatus for hardware-accelerated encryption/decryption
WO2009147794A1 (ja) * 2008-06-04 2009-12-10 日本電気株式会社 有限オートマトン生成システム
JP5429164B2 (ja) * 2008-06-04 2014-02-26 日本電気株式会社 有限オートマトン生成システム

Also Published As

Publication number Publication date
US20050171943A1 (en) 2005-08-04
US7769753B2 (en) 2010-08-03
JP4120888B2 (ja) 2008-07-16

Similar Documents

Publication Publication Date Title
JP4120888B2 (ja) データ検索装置及び方法
US7508985B2 (en) Pattern-matching system
US9043272B2 (en) System and method for determining the start of a match of a regular expression
US7725510B2 (en) Method and system for multi-character multi-pattern pattern matching
US8095526B2 (en) Efficient retrieval of variable-length character string data
US8972450B2 (en) Multi-stage parallel multi-character string matching device
KR100555997B1 (ko) 메모리 엔진과, 데이터 조사 및 정정 방법
US20060259508A1 (en) Method and apparatus for detecting semantic elements using a push down automaton
US20030130981A1 (en) Enhanced multiway radix tree and related methods
JP3644494B2 (ja) 情報検索装置
JP2003242179A (ja) 文字列照合方法、これを用いた文書処理装置及びプログラム
JP2005242672A (ja) パターンマッチング装置および方法ならびにプログラム
JP6091140B2 (ja) 情報処理装置及び情報処理方法及びプログラム
US20030187843A1 (en) Method and system for searching for a list of values matching a user defined search expression
JP4992824B2 (ja) 検索回路
JP2006215679A (ja) 情報処理装置及び情報処理方法並びに記録媒体
Zhang et al. High-Throughput Cuckoo Hashing Accelerator on FPGA Using One-Step BFS
JPH01259418A (ja) 文字列検索装置
JP2005242668A (ja) パターンマッチング装置および方法ならびにプログラム
JP4061283B2 (ja) 字句をデータに変換する装置、方法及びプログラム
JP5048396B2 (ja) データ管理プログラム
JPH04182828A (ja) 擬似乱数によるテーブル内エントリー選択方式
Lumburovska Casovno učinkoviti algoritmi ujemanja nizov in metoda grobe sile
JP2002157252A (ja) 文書検索装置および文書検索方法、並びに文書検索方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体
JPH11161666A (ja) ドキュメントデータ検索方法および装置、並びにドキュメント編集装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20071227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080310

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080403

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080416

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110509

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110509

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120509

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120509

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130509

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140509

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees