JP4957500B2 - 文字列照合回路 - Google Patents

文字列照合回路 Download PDF

Info

Publication number
JP4957500B2
JP4957500B2 JP2007266422A JP2007266422A JP4957500B2 JP 4957500 B2 JP4957500 B2 JP 4957500B2 JP 2007266422 A JP2007266422 A JP 2007266422A JP 2007266422 A JP2007266422 A JP 2007266422A JP 4957500 B2 JP4957500 B2 JP 4957500B2
Authority
JP
Japan
Prior art keywords
nfa
character
state
logic circuit
match
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.)
Expired - Fee Related
Application number
JP2007266422A
Other languages
English (en)
Other versions
JP2009093599A (ja
Inventor
顕弘 元木
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 JP2007266422A priority Critical patent/JP4957500B2/ja
Publication of JP2009093599A publication Critical patent/JP2009093599A/ja
Application granted granted Critical
Publication of JP4957500B2 publication Critical patent/JP4957500B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、有限オートマトンを用いた文字列照合回路に関し、特に特定文字の指定回数繰り返しを含む正規表現を利用した文字列照合回路に関する。
高度な文字列照合を行う場合、照合条件の指定方法として正規表現が利用されることが多い。正規表現による文字列照合処理では有限オートマトン(Finite Automaton)と呼ばれる状態遷移マシンが用いられる。文字列照合処理では、まず指定された照合条件を有限オートマトンに変換し、変換された有限オートマトンを用いて文字列照合処理を実行する。
文字列照合用の有限オートマトンとして、ある一つの状態から同じ文字に対して複数の遷移先を許す非決定性オートマトン(NFA;Non-deterministic Finite Automaton)を用いる方法、もしくは決定性オートマトン(DFA;Deterministic Finite Automaton)を用いる方法がある。具体的には、NFAは、非特許文献1に記載されているように、与えられた正規表現等の照合条件から構文木を構築し、これに基づいて生成することができる。また、DFAはNFAを用いて生成することができる。
正規表現による文字列照合処理を行う際には、まず指定された照合条件を有限オートマトンに変換し、変換された有限オートマトンを用いて文字列照合処理を実行する。状態遷移は、有限オートマトンの初期状態から開始され、終了状態に達すると入力された文字列が該当正規表現にマッチしたと判断する。
一般に、ソフトウェアにおける文字列照合処理では、NFAやDFA等の状態をメモリに保存し、状態が遷移する度に、状態に関する情報をメモリから取り出しながら文字列照合処理を行う。この際、NFAではある入力文字に対するある状態からの遷移先として複数の状態が存在するため、どの状態へ遷移すれば正しい結果が得られるか判断できず、ひとまずいずれかの状態に遷移して処理を進め、失敗した場合にはまだ処理を行っていない状態に戻って処理を進めるというバックトラック処理が必要となる。
一方、DFAではある入力文字に対するある状態からの遷移先が一つしかないことから、NFAよりも高速に処理が可能であるという利点がある反面、NFAよりも状態数が増加し、多くのメモリ容量が必要となるという欠点がある。
こうしたソフトウェアにおける文字列照合処理の問題を解決するために、近年、ハードウェア回路にNFAを直接組み込むことにより、その並列動作による高速性を生かし、NFAを用いた高速な文字列照合を実現する方法が提案されている(非特許文献2)。以下、NFAをハードウェア回路に直接埋め込んだ回路を「NFA論理回路」と呼ぶこととする。
非特許文献2で提案されている、NFAをハードウェア回路に直接埋め込む方式の詳細について以下に説明する。
最初に、正規表現からNFAへの変換手法について説明する。
正規表現は、「文字」(その文字自身にマッチする)、「連結」XY(XとYがこの順序で現れる)、「選択」X|Y(XかYが現れる)、「繰り返し」X*(Xが0回以上現れる)の4種類の基本パターンで表現することができる。正規表現の記法には種々のバリエーションが存在するものの、任意の正規表現は、前記の4種類の基本パターンを再帰的に組み合わせること、より具体的には文字自身にマッチする「文字」を「連結」「選択」「繰り返し」を用いて再帰的に組み合わせること、で表現可能である。
正規表現からNFAへの変換は、前記の4種類の基本パターンを図15に示すNFAに割り当てることで実現できる。正規表現N1、N2に対して、図15の(a)、(b)、(c)、(d)は、それぞれ、文字cに対するNFA、N1|N2に対するNFA、N1N2に対するNFA、N1*に対するNFAを示している。なお、図中のεはある状態から入力を読み込まずに別の状態へ遷移するε遷移(ε-transition)を示し、図中のI、FはそれぞれNFAの初期状態、終了状態を示している。
次に、NFAをハードウェア回路に直接埋め込む方法について説明する。本方法は非特許文献2において開示されている方法である。
NFAからハードウェアに埋め込む回路への変換は、正規表現を実現するために必要な前記のNFAの4種類の基本パターンと変換後のNFA論理回路を一対一に対応づけることで行う。具体的な対応関係を図16に示す。図16の(a)、(b)、(c)、(d)は、それぞれ図15に示したNFAの基本パターン(a)、(b)、(c)、(d)の基本パターンに対応しており、図15と同様、これら4つのパターンを再帰的に組み合わせることで全ての正規表現をNFA論理回路に変換することができる。図16(a)は、文字cに対するNFA論理回路であり、任意の正規表現は文字cへのマッチを表す基本NFA論理回路(a)を、(b)(c)(d)の接続パターンを再帰的に用いて接続することで実現することができる。
図16の(a)は、NFAをハードウェア回路に埋め込む方式の基本となる回路であり、これを基本エレメントと呼ぶ。基本エレメントはNFAの各状態を表すために使用される。
基本エレメントは、NFAの当該状態がアクティブであることを示す1つのFlip-Flop(F/F)、入力されたテキスト文字と状態遷移の条件となる文字との比較を行うcomparator、Flip-Flopとcomparatorの出力の論理積をとるANDゲートの3つの要素から構成される。基本エレメントの構成を図17に示す。内容は図16(a)と全く同じである。正規表現からNFA論理回路への詳細な変換手順については、非特許文献2に記載されている。
図17のinputは、当該状態の前状態のoutputから入力される信号線であり、前の状態のoutput信号を当該状態のF/Fに保持し、F/Fの値が‘1’であれば当該状態がアクティブであることを示す。comparatorには、予めその状態から次の状態への遷移条件である文字が格納されている。comparatorは、照合対象文字列から入力された1文字との比較を行い、比較した結果がマッチ(同じ文字)していれば‘1’を、マッチしなければ(異なる文字であれば)‘0’を出力する。比較対象文字列のどの位置にある文字においても比較を行う必要があるため、comparatorに入力されるテキスト文字は全ての基本エレメント中のcomparatorに入力される。今、F/Fが‘1’、かつ、comparatorからの出力が‘1’である場合、NFAの状態遷移が起動を意味し、それらのANDを取った出力outputも‘1’となり次の状態のF/Fへ入力される。このような動作により、基本エレメントはNFAの1つの状態としての機能をもつ。
図17の基本エレメントは以下の説明においても使用するため、以下の説明においては図18に示す簡略表記で表記する。図18の四角形の中央に記載の文字‘c’は、この基本エレメントの状態遷移の条件文字が‘c’であることを示す。
前記変換により得られたNFA論理回路の例を図19に示す。図19は、正規表現“(a|b)*cd”をNFA論理回路に変換した場合の例である。点線枠41,42,43、44がそれぞれ文字‘a’,‘b’,‘c’,‘d’に対する比較を行う基本エレメントであり、点線枠45,46,47,48は、それぞれ(aとbの)選択、((a|b)の)繰り返し、(cとdの)連結、((a|b)*とcdの)連結の基本パターンに対応している。尚、NFA論理回路はクロックに同期して動作する順序回路であり、図19の”text character”には、照合対象文字列がクロック毎に先頭から順番に1文字ずつ入力される。
正規表現の部分表現はいずれも図20に示すように、照合対象文字51とマッチ情報入力52を入力に持ち、マッチ情報出力53を出力に持つ。例えば、図19の枠49-1内は、正規表現“(a|b)*cd”の部分表現“(a|b)”を表しており、照合対象文字51の入力は図19の最下部に記載の“Text character”に対応する。マッチ情報入力52、マッチ情報出力53には、それぞれ点線枠45から枠49−1に入力される信号線、枠49−1から点線枠45へ出力される信号線が対応する。同様に、枠49−2内は正規表現“(a|b)*cd”の部分表現“(a|b)*”を表しており、枠49−2の回路も図20に示す入出力信号を持つ。
次に、NFAをハードウェア回路に直接埋め込む方式において、特定文字の繰り返し回数を指定した正規表現を表現する従来技術について述べる。
正規表現では、前記の基本要素だけでなく、特定文字の繰り返し回数を指定した表現が可能である。“c{min,max}”という正規表現は、文字cのmin回以上max回以下の繰り返しを表す。繰り返し回数指定の派生として、“c{n}”、“c{min,}”、“c{,max}”という表現もあり、それぞれ“c{n}”は文字cのn回繰り返し、“c{min,}”は文字cのmin回以上の繰り返し、”c{,max}”は文字cの0回以上max回以下の繰り返しを表す。
繰り返し回数指定の正規表現は、前記の基本要素の組み合わせで実現することが可能であり、この方式でのNFAのハードウェア回路埋め込み方式での実現方法が非特許文献3の33ページに記載されている。非特許文献3のFigure.12は正規表現“.{3,}a”(任意の一文字の3回以上の繰り返しに文字aが続く)の実現方法であり、Figure.13は正規表現“a.{,2}b”(文字aの後に、任意の一文字の2回以下の繰り返しがあり、文字bが続く)の実現方法である。
近藤嘉雪、定本Cプログラマのためのアルゴリズムとデータ構造、297〜330ページ、1998年 R.Sidhu and V.K.Prasanna,"Fast Regular Expression Matching using FPGAs,"Proceedings of IEEE Symposium on Field-Programmable Custom Computing Machines,pp.Apr.2001. Design of Efficient FPGA Circuits for Matching Complex Patterns in Network Intrusion Detection Systems",Christopher R. Clark,MS Thesis,School of Electrical and Computer Engineering,Georgia Institute of Technology,May 2004(http://users.ece.gatech.edu/~cclark/clark_2004_MS.pdf)
しかしながら、ハードウェアにNFAを直接埋め込んで文字列照合を行う方法で、c{min,max}を実現する場合、以下のような問題がある。
第1の問題点は、文字の繰り返し回数が多くなると、実現に必要なハードウェアの回路規模が大きくなってしまうということである。
非特許文献3に記載の方法で、例えば正規表現“BA{4}C”(Bの後に、文字Aの4回繰り返しが続き、さらにCが続く)を実現すると、図21に示すNFAと図22に示すNFA論理回路となる。図22の81〜86はいずれも図18に示す基本エレメントである。ここでは、繰り返し回数指定の“A{4}”を“AAAA”に展開し、展開した“AAAA”に対するNFAを構築し、構築したNFAからNFA論理回路に変換している。このように、非特許文献3に記載の方法では、文字の繰り返し回数(“A{4}”の例では4)と等しい数だけ、基本エレメントが必要となる。
NFAをハードウェアに直接埋め込む形の文字列照合回路の適用例の一つであるネットワーク侵入検知システムにおける文字列照合ルールでは、文字の繰り返し回数が100回以上など、繰り返し回数が非常に多い例も見られる。例えば、侵入検知システムの一つであるSnortのルールセットには“^http://[^\n]{400}”といった正規表現も含まれている。この表現は、”http://”という文字列の後に改行文字以外の一文字を400回繰り返すことを表している。
第2の問題点は、このように繰り返し回数が非常に多い正規表現があると、繰り返し回数が非常に多い表現が数個あるだけで、回路規模が大きくなってしまい、全体としてハードウェアに収容可能な正規表現の数が減ってしまうことである。
本発明の目的は、NFAをハードウェアに直接埋め込む形の文字列照合回路において、文字の繰り返し回数の大きい正規表現を少ない回路規模で効率的に実現することにある。
本発明の文字列照合回路は、照合条件を表す正規表現から構成したNFAを回路化した文字列照合回路であって、正規表現に含まれる部分表現のうち、指定文字cの繰り返し回数Nを指定した正規表現は、照合対象文字とマッチ情報入力とを入力に持ち、マッチ情報出力を出力に持つc{N}-NFA回路によって回路化されており、且つ、前記c{N}-NFA回路は、入力された照合対象文字と指定文字との連続一致回数を数えるカウンタと、連続一致回数が指定繰り返し回数Nに達したか否かを判定する判定回路とを含む。
第1の効果は、NFAをハードウェアに直接埋め込む形の文字列照合回路において、文字の繰り返し回数の大きい正規表現を、従来技術に比べ数%の回路規模で実現することができることである。
その理由は、文字の繰り返し回数と等しい数だけ、特定文字との文字列照合を行う基本エレメントを繰り返し回数と同じ個数だけ配備する代わりに、入力された照合対象文字が前記特定文字と連続して一致する回数をカウントすることにより判定する回路で実現しているためである。詳細な回路規模削減効果については、発明を実施するための最良の形態の説明の最後に述べる。
第2の効果は、特定文字の繰り返し回数が非常に多い正規表現がある場合であっても、全体の回路規模が前記繰り返し回数の非常に多い表現の影響を受けにくく、全体としてハードウェアに収容可能な正規表現の数が増えることである。
その理由は、第1の効果に記載の通り、文字の繰り返し回数の大きい正規表現が、従来技術に比べ数%の回路規模という小さな回路規模で実現できるためである。
このように本発明によれば、文字の繰り返し回数の大きい正規表現を少ない回路規模で効率的に実現することで、同じ回路規模のデバイスにおいて、より多数の正規表現を収容することが可能となり、NFAをハードウェアに直接埋め込む形の文字列照合回路の高機能化が実現可能となる。また、同じ数の正規表現をより少ない回路規模のデバイスにおいて収容することが可能となり、ハードウェアデバイスの小型化が達成可能となる。
『第一の実施の形態』
次に、本発明の第一の実施の形態について図面を参照して詳細に説明する。
[構成の説明]
図1は、本発明の第一の実施の形態の構成を示すブロック図である。
図1を参照すると、本発明の第一の実施の形態は、照合対象文字列入力部210と、NFAをハードウェアに埋め込んだNFA論理回路200と、マッチ結果出力部211とから構成される。
さらに、NFA論理回路200は、c{N}-NFA論理回路100および基本エレメント40−1、40−2より構成される。NFA論理回路200を構成する基本エレメント40とc{N}-NFA論理回路100の個数および接続は、照合パターンとして指定される正規表現により変化する。基本エレメント40−1、40−2やc{N}-NFA論理回路100間でやり取りされる中間マッチ情報(208,209・・・)の接続は、図16に示した基本パターン(b)(c)(d)を再帰的に用いて行われる。基本エレメント40−1、40−2は、比較対象の文字が異なるのみであり、構成は図18の基本エレメント40と同一である。
図1は、正規表現“BA{4}C”の場合のNFA論理回路200の構成を例として記載しており、図1のNFA論理回路200は、対象文字‘B’の基本エレメント40−1、文字’A’の4回繰り返しに対応するc{N}-NFA論理回路100、対象文字‘C’の基本エレメント40−2が順に接続された構成となっている。それぞれの基本エレメント40−1、c{N}-NFA論理回路100、基本エレメント40−2が図1に記載の通り、部分正規表現“B”、”A{4}”、“C”に対応する。
NFA論理回路200を構成する基本エレメント40とc{N}-NFA論理回路100の個数および接続を決定する方法は、従来技術を下記のように拡張することで実現可能である。従来技術では、正規表現からNFAへの変換を図15に示すNFAの基本パターンに割り当てることで実現し、前記基本パターンをNFA論理回路に一対一に対応づけることでNFAをハードウェア回路に埋め込むことを実現していた。本発明では、従来技術である基本エレメント40に加え、文字cのN回繰り返しを表す正規表現にマッチするNFA論理回路であるc{N}-NFA論理回路100を追加している。正規表現からNFAに変換する際に、文字cのN回繰り返しを表す正規表現“c{N}”に対応する基本パターンを導入し、指定された正規表現中に含まれる文字cのN回繰り返しを表す正規表現“c{N}”を前記の新規に導入した基本パターンに割り当て、さらにNFAをハードウェア回路に埋め込む際に前記の新規に導入した基本パターンをc{N}-NFA論理回路100に対応づけることで、NFA論理回路200を構成する基本エレメント40とc{N}-NFA論理回路100の個数および接続を決定することができる。
本発明の第一の実施の形態の回路は、外部より入力されるクロックに同期して動作する同期回路である。以下の説明および図ではクロック信号を入力信号として特に記載しない。
照合対象文字列入力部210は、照合対象文字列を構成する文字を先頭から順番に照合対象文字80として出力する。照合対象文字80はクロック毎に次の文字に更新される。照合対象文字列入力部210から出力された照合対象文字列は、NFA論理回路200内の全ての基本エレメント40やc{N}-NFA論理回路100に入力される。
基本エレメント40−1,40−2やc{N}-NFA論理回路100から出力された中間マッチ情報(208、209など)は、正規表現より構成されるNFAに基づいて、図16に示す基本接続パターン(b)(c)(d)に基づいて接続され、NFAの次の状態を表す構成要素(基本エレメント40またはc{N}-NFA論理回路100)に入力される。NFAの最後の状態に対応する構成要素(基本エレメント40−1、40−2またはc{N}-NFA論理回路100)から最終マッチ結果89が出力され、マッチ結果出力部211によりマッチ結果として外部に出力される。
正規表現“c{N}”の定義では、N≧0であるが、以下の説明では、繰り返し回数Nは自然数とする。N=0の場合、正規表現“c{0}”は文字‘c’の0回繰り返しであり、該当正規表現は存在する必要がないことになり、例えば正規表現“BA{0}C”は正規表現“BC”と等価であり、0回の繰り返し正規表現を削除することで効率的なNFA論理回路を生成することができる。
次に、c{N}-NFA論理回路100について詳細に説明する。
c{N}-NFA論理回路100は、文字cのN回繰り返しを表す正規表現にマッチするNFA論理回路である。以下の説明で「c{N}-NFA論理回路100の着目文字」と記載した場合、c{N}-NFA論理回路100の繰り返し文字cを意味することとする。なお、文字cと繰り返し回数Nは、c{N}-NFA論理回路100作成時に指定されるパラメータである。
<c{N}-NFA論理回路タイプ選択フロー>
c{N}-NFA論理回路100の具体的な構成は、タイプA、タイプB、タイプC、従来技術利用の4通りがある。
4通りの具体的な構成のうち、いずれの構成を使用するかは、指定された正規表現に応じて、図2に示すタイプ選択フローに基づいて決定する。
図2のタイプ選択フローについて具体的に説明する前に、図2で使用する用語「プレフィックス構成文字」を定義する。指定された正規表現のうち、処理対象となっている繰り返し正規表現“c{N}”より前の部分を「プレフィックス正規表現」と定義し、前記プレフィックス正規表現にマッチする可能性がある文字の集合を「プレフィックス構成文字」と定義する。プレフィックス正規表現全体を対象としてプレフィックス構成文字を求めることもできるが、以降の説明では簡単のため、プレフィックス正規表現のうち、処理対象となっている繰り返し正規表現“c{N}”の直前の1文字をプレフィックス構成文字として使用する。
プレフィックス構成文字の具体例を図3に示す。処理対象となっている繰り返し正規表現“c{N}”はいずれも“X{3}”である。項番1では、プレフィックス正規表現が”ab”であり、文字aと文字bの連結なので、プレフィクス正規表現にマッチする最後の文字はbだけであり、プレフィックス構成文字はbとなる。項番2ではプレフィックス正規表現は“[abc]”であり、これは文字aまたはbまたはcを示すので、プレフィックス構成文字は文字a,b,cの集合となる。項番3ではプレフィクス正規表現は”ab*”である。この場合、プレフィクス正規表現にマッチする文字列は“a”,“ab”,“abb”,”abbb”のようになるので、プレフィックス正規表現にマッチする最後の文字はaまたはbであり、プレフィックス構成文字は文字a,bの集合となる。項番4は、指定された正規表現の先頭に繰り返し正規表現がある場合である。この場合は、プレフィクス正規表現は空文字列となる。繰り返し正規表現が先頭にあるということは、繰り返し正規表現にマッチする文字列(文字Xの3回繰り返し)の前にどんな文字があってもよいということになるので、プレフィックス正規表現は「文字全体」となる。項番5はプレフィックス正規表現にマッチする文字列の最小長が0となる場合である。項番5では、プレフィックス正規表現は”a*”であり、文字aの0回以上の繰り返しである。0回以上の繰り返しということは、文字aがない場合でもよいということであり、繰り返し正規表現にマッチする文字列(文字Xの3回繰り返し)の前にどんな文字があってもよいということになる。項番4と同じ理由でプレフィックス正規表現は「文字全体」となる。
上記の定義に基づき、c{N}-NFA論理回路100の具体的な構成を決定するタイプ選択フローについて図2を用いて説明する。タイプ選択フローは、c{N}-NFA論理回路の着目文字とプレフィックス構成文字が得られた状態から開始する。最初にステップ401にて「プレフィックス構成文字∩着目文字=Φか?」を判定する。この処理は、プレフィックス構成文字と着目文字に共通する文字がない場合に真、ある場合に偽となる。判定結果が偽の場合はステップ403に進み、真の場合にはステップ402に進む。ステップ402ではc{N}-NFA論理回路タイプB202を仮選択し、ステップ406に進む。ステップ401での判定結果が真となる例としては、指定された正規表現が”[ab][cd]{3}”の場合がある。この例では、プレフィックス構成文字の文字集合がa,bであり、着目文字の文字集合がc,dである。したがって、プレフィックス構成文字と着目文字に共通する文字が存在せず、判定結果は真となる。一方、ステップ401での判定結果が偽となる例として、指定された正規表現が”[ab][ac]{3}”の場合には、プレフィックス構成文字の文字集合がa,bであり、着目文字の文字集合がa,cである。したがって、プレフィックス構成文字と着目文字に共通する文字aが存在し、判定結果は偽となる。
ステップ403では「プレフィックス構成文字⊇着目文字か?」を判定する。この処理は、着目文字の集合に入っている文字がすべてプレフィックス構成文字に含まれるかどうかを判定するもので、すべて含まれている場合には真、そうでない場合に偽となる。判定結果が偽の場合はステップ405に進み、真の場合にはステップ404に進む。ステップ404ではc{N}-NFA論理回路タイプC203を仮選択し、ステップ406に進む。ステップ405ではc{N}-NFA論理回路タイプA201を仮選択し、ステップ406に進む。
ステップ406では、仮選択したc{N}-NFA論理回路のタイプが従来構成よりも有利かどうかを判定する。従来構成とは、発明が解決しようとする課題で挙げた非特許文献3に記載の方法を適用した場合の構成であり、繰り返し正規表現を個々の基本エレメントに展開した構成である。従来構成よりも有利かどうかの判定方法としては、論理回路を構成するのに必要なデバイス回路規模で比較し、仮選択したタイプのc{N}-NFA論理回路を用いた方が従来技術を利用した場合に比べ回路規模が小さくなる場合に有利であると判定する方法がある。回路規模を算出する方法については、本発明の回路規模削減効果について述べた箇所において説明している。他の判定方法としては、繰り返し回数Nが閾値以上の場合には仮選択したタイプのc{N}-NFA論理回路を用い、そうでない場合には従来技術利用型を選択する、といった判定方法もある。専用のc{N}-NFA論理回路を使用した方が有利かどうかを判定できる方法であれば、他の判定方法を用いてもよい。ステップ406において、従来構成に比べ有利と判定された場合にはステップ408に進み、仮選択したタイプのc{N}-NFA論理回路を最終的な選択タイプとして選択する。一方、ステップ406において、従来構成の方が有利と判定された場合にはステップ407に進み、c{N}-NFA論理回路のタイプとして従来技術利用型204を選択する。
以上の処理により、c{N}-NFA論理回路100の具体的な構成を決定できる。タイプ選択フローは指定された正規表現内の各々の繰り返し正規表現についてそれぞれ実行し、繰り返し正規表現毎に最適な具体的なタイプを選択する。
<c{N}-NFA論理回路100の内部構成>
次に、c{N}-NFA論理回路100の各タイプである、タイプA、タイプB、タイプC、従来技術利用型の内部構成について説明する。
<タイプA>
最初に、c{N}-NFA論理回路タイプA201の内部構成について図4を参照して説明する。
c{N}-NFA論理回路タイプA201は、連続一致回数カウント部110と、マッチ情報タイミング調整部120と、マッチ情報出力部130とを含む。
c{N}-NFA論理回路タイプA201は、照合対象文字101とマッチ情報入力102の入力を受け、マッチ情報出力103を出力する。背景技術の説明で述べたように、正規表現の部分表現はいずれも図20に示すように、照合対象文字51とマッチ情報入力52を入力に持ち、マッチ情報出力53を出力に持つ。文字cのN回繰り返しを表す正規表現も正規表現の部分表現なので、入力信号である照合対象文字101とマッチ情報入力102はそれぞれ図20の照合対象文字51とマッチ情報入力52に対応し、出力信号であるマッチ情報出力103は図20のマッチ情報出力53に対応する。
連続一致回数カウント部110の状態遷移マシンを図5に示す。状態311、312、313,314の4つの状態が定義されている。本状態遷移マシンは外部からクロックが入力されるたびに動作するが、枠が点線の状態312は説明のための中間状態であり、他の状態から遷移があった際にはクロック入力を待たずに直ちに条件判定を行い、他の状態に遷移する。したがって、本発明の回路にクロックが入力される時点では、他の3状態(311,313,314)のいずれかの状態に状態遷移マシンはいることになる。動作開始時には、状態遷移マシンはIdle状態311から開始する。本状態遷移マシンは以下のように動作する。
Idle状態311にいる場合には、入力された照合対象文字101が着目文字と一致していればAccept状態312に遷移する(310−2)。遷移時に内部で保持する変数であるMatchCountを1にセットする。一致しない場合にはIdle状態311にとどまる(310−1)。Accept状態312では、他の状態から遷移があるとクロック入力を待たずに直ちに遷移を行う。MatchCountが繰り返し回数Nと等しい場合にはMatch状態314に遷移し(310―6)、N未満の場合にはRunning状態313に遷移する(310−3)。Running状態313では、入力された照合対象文字101が着目文字と一致していればAccept状態312に遷移する(310−4)。遷移時に内部で保持する変数であるMatchCountを1増やす。一致しない場合にはIdle状態311に遷移する(310−5)。Match状態314では、入力された照合対象文字101が着目文字と一致していればMatch状態314にとどまる(310−7)。一致しない場合にはIdle状態311に遷移する(310−8)。本状態遷移マシンがMatch状態314に遷移したクロックサイクル、つまり遷移310−6または310−7が行われたクロックサイクルで、連続一致判定結果118として1が出力される。それ以外のクロックサイクルでは連続一致判定結果118として0が出力される。
図4の連続一致回数カウント部110の内部構成は、図5に示す状態遷移マシンの動作を行う連続一致回数カウント部110の構成の一例である。後述するNFA論理回路の回路規模の説明に使用するため、ここに構成例を記載する。外部より照合対象文字101が入力されると、比較器111において、照合対象文字101とc{N}-NFA論理回路タイプA201の着目文字cを比較し、比較結果115を出力する。比較結果115は、照合対象文字101とc{N}-NFA論理回路タイプA201の着目文字cが等しい場合に1、異なる場合に0となる。次に、連続一致カウント部112は、比較結果115が何回連続で1であったかを、比較結果115と前回一致回数117に基づいて計算し、一致回数116として出力する。F/F114は、一致回数116を保持し、その値を前回一致回数117として出力するクロック同期のFlip Flopである。連続一致判定部113は、連続一致カウント部112より出力された一致回数116が、繰り返し回数Nに達しているかどうかを判定し、連続一致判定結果118を出力する。連続一致判定結果118は一致回数116と繰り返し回数Nが等しい場合に1、それ以外の場合は0となる。
マッチ情報タイミング調整部120は、マッチ情報入力102を繰り返し回数であるNクロック分だけ遅延させるブロックである。外部よりマッチ情報入力102を受信すると、受信したマッチ情報入力102を書き込みデータ125として、メモリ123の、書き込みアドレス生成部121より指示された書き込みアドレス124の位置に格納する。一方、読み出しアドレス生成部122は、常に書き込みアドレス生成部121が生成する書き込みアドレス124よりもNアドレス分遅れた読み出しアドレス126を生成し、メモリ123から読み出しデータ127を取得し、マッチ情報出力部130に対して出力する。書き込みアドレス124よりも読み出しアドレス126を繰り返し回数N分だけ遅らせることで、Nクロック分の遅延を実現する。
メモリ123は、データ幅1ビット、ワード数は(N+1)以上のメモリである。マッチ情報入力102は1ビット幅のデータのため、データ幅は1ビットで十分である。また、マッチ情報タイミング調整部120は、外部より受信したマッチ情報入力102を繰り返し回数であるNクロック分だけ遅延させるブロックなので、N+1個の記憶領域が必要であり、ワード数として最低(N+1)ワードが必要である。
マッチ情報出力部130は、連続一致回数カウント部110から出力される連続一致判定結果118と、マッチ情報タイミング調整部120から出力される読み出しデータ127を受信し、これらの論理積(AND)を計算し、マッチ情報出力103として出力する。
ここで、メモリ123の実現方法について述べる。NFAをハードウェア回路に埋め込む方式では、照合ルールとなる正規表現を変更できるようにするという観点から、通常、ハードウェアを実装するデバイスとして、FPGA(Field Programmable Gate Array)などの再構成可能なハードウェアが利用されることが多い。近年の大規模FPGAにはデバイス内部に512ビット程度の小さなオン・チップ・メモリが搭載されている。例えば、有力なFPGAベンダーの一つであるAltera社製FPGAのStratixでは、300〜500個程度の512ビットの小さなオン・チップ・メモリが搭載されている。この小さなオン・チップ・メモリを利用することで、メモリ123を実現することが可能である。
<タイプB>
次に、c{N}-NFA論理回路タイプB202について図7を参照して説明する。
図7を参照すると、c{N}-NFA論理回路タイプB202は、F/F326と状態遷移マシン325とから構成され、マッチ情報入力52と照合対象文字51を入力に持ち、マッチ情報出力53を出力とする。状態遷移マシン325は、c{N}-NFA論理回路タイプA201の連続一致回数カウント部110に相当するブロックである。マッチ情報タイミング調整部120に相当するブロックは存在しない点が特徴である。メモリを必要とするマッチ情報タイミング調整部120が存在しないため、c{N}-NFA論理回路タイプA201と比較すると、c{N}-NFA論理回路タイプB202は実装可能な回数指定繰り返し正規表現の数がデバイスのメモリ数に依存しないというメリットがある。
c{N}-NFA論理回路タイプB202の状態遷移マシン325を図8に示す。状態321、322、323,324の4つの状態が定義されている。本状態遷移マシン325は外部からクロックが入力されるたびに動作するが、枠が点線の状態322および324は説明のための中間状態であり、他の状態から遷移があった際にはクロック入力を待たずに直ちに条件判定を行い、他の状態に遷移する。したがって、本発明の回路にクロックが入力される時点では、他の2状態(321,323)のいずれかの状態に状態遷移マシン325はいることになる。動作開始時には、状態遷移マシン325はIdle状態321から開始する。本状態遷移マシン325は以下のように動作する。
Idle状態321にいる場合には、入力された照合対象文字51が着目文字と一致し、かつマッチ情報入力52が1の場合、Accept状態322に遷移する(320−2)。遷移時に内部で保持する変数であるMatchCountを1にセットする。一致しない場合にはIdle状態321にとどまる(320−1)。Accept状態322では、他の状態から遷移があるとクロック入力を待たずに直ちに遷移を行う。MatchCountが繰り返し回数Nと等しい場合にはMatch状態324に遷移し(320―6)、N未満の場合にはRunning状態323に遷移する(320−3)。Running状態323では、入力された照合対象文字51が着目文字と一致していればAccept状態322に遷移する(320−4)。遷移時に内部で保持する変数であるMatchCountを1増やす。一致しない場合にはIdle状態321に遷移する(320−5)。Match状態324では、他の状態から遷移があるとクロック入力を待たずに直ちに、Idle状態321に遷移する(320−7)。本状態遷移マシン325がMatch状態324に遷移したクロックサイクル、つまり遷移320−6が行われたクロックサイクルで、マッチ情報出力53として1が出力される。それ以外のクロックサイクルではマッチ情報出力53として0が出力される。
c{N}-NFA論理回路タイプB202の状態遷移マシン325の、c{N}-NFA論理回路タイプA201の連続一致回数カウント部110の状態遷移マシンとの動作上の違いは、Idle状態からAccept状態への遷移条件に、「マッチ情報入力53が1」が追加されている点、Match状態に遷移すると無条件に直ちにIdle状態に遷移する点の2点である。
<タイプC>
次に、c{N}-NFA論理回路タイプC203について図10を参照して説明する。
図10を参照すると、c{N}-NFA論理回路タイプC203は、F/F336と状態遷移マシン335とから構成され、マッチ情報入力52と照合対象文字51を入力に持ち、マッチ情報出力53を出力とする。c{N}-NFA論理回路タイプB202と同様の構成であり、状態遷移マシン335の動作のみが異なる。c{N}-NFA論理回路タイプB202と同様に、メモリを必要とするマッチ情報タイミング調整部120が存在しないため、c{N}-NFA論理回路タイプA201と比較すると、c{N}-NFA論理回路タイプC203も実装可能な回数指定繰り返し正規表現の数がデバイスのメモリ数に依存しないというメリットがある。
c{N}-NFA論理回路タイプC203の状態遷移マシン335を図11に示す。状態331、332、333,334の4つの状態が定義されている。本状態遷移マシン335は外部からクロックが入力されるたびに動作するが、枠が点線の状態332は説明のための中間状態であり、他の状態から遷移があった際にはクロック入力を待たずに直ちに条件判定を行い、他の状態に遷移する。したがって、本発明の回路にクロックが入力される時点では、他の3状態(331,333,334)のいずれかの状態に状態遷移マシン335はいることになる。動作開始時には、状態遷移マシン335はIdle状態331から開始する。本状態遷移マシン335は以下のように動作する。
Idle状態331にいる場合には、入力された照合対象文字51が着目文字と一致し、かつマッチ情報入力52が1の場合、Accept状態332に遷移する(330−2)。遷移時に内部で保持する変数であるMatchCountを1にセットする。一致しない場合にはIdle状態331にとどまる(330−1)。Accept状態332では、他の状態から遷移があるとクロック入力を待たずに直ちに遷移を行う。MatchCountが繰り返し回数Nと等しい場合にはMatch状態334に遷移し(330―6)、N未満の場合にはRunning状態333に遷移する(330−3)。Running状態333では、入力された照合対象文字51が着目文字と一致していればAccept状態332に遷移する(330−4)。遷移時に内部で保持する変数であるMatchCountを1増やす。一致しない場合にはIdle状態331に遷移する(330−5)。
Match状態334では、入力された照合対象文字51が着目文字と一致していればMatch状態334にとどまる(330−7)。一致しない場合にはIdle状態331に遷移する(330−8)。本状態遷移マシン335がMatch状態334に遷移したクロックサイクル、つまり遷移330−6または330−7が行われたクロックサイクルで、マッチ情報出力53として1が出力される。それ以外のクロックサイクルではマッチ情報出力53として0が出力される。
c{N}-NFA論理回路タイプC203の状態遷移マシン335の、c{N}-NFA論理回路タイプA201の連続一致回数カウント部110の状態遷移マシンとの動作上の違いは、Idle状態からAccept状態への遷移条件に、「マッチ情報入力53が1」が追加されている点である。
<従来技術利用型>
最後に、c{N}-NFA論理回路の従来技術利用型204の構成について述べる。従来技術利用型204は、発明が解決しようとする課題で挙げた非特許文献3に記載の方法を適用した場合の構成である。発明が解決しようとする課題で挙げた図21および図22の例では、繰り返し正規表現の“A{4}”を文字’A’に対応する基本エレメント4個の連結で構成する。つまり、繰り返し正規表現の“A{4}”に対応するNFA論理回路は、図22の基本エレメント82〜85をこの順序で接続した構成となる。
[動作の説明]
本発明の第一の実施形態の動作について詳細に説明する。本発明で提案するc{N}-NFA論理回路タイプA201、タイプB202、タイプC203を使用した場合についてそれぞれ説明する。
<タイプBの動作>
最初に、c{N}-NFA論理回路タイプB202を使用する場合の動作について、正規表現“BA{4}C”の場合を例に説明する。
NFA論理回路を構成する際には、まず、図2のc{N}-NFA論理回路のタイプ選択フローにしたがって、c{N}-NFA論理回路のタイプ選択が行われる。正規表現“BA{4}C”の場合には、プレフィックス構成文字はBのみ、繰り返し正規表現A{4}の着目文字はAのみなので、ステップ401の判定が真となり、c{N}-NFA論理回路としてc{N}-NFA論理回路タイプB202が選択される。ここでは、c{N}-NFA論理回路タイプB202の説明を行うため、タイプB202の方が従来構成に比べて有利なものとし、ステップ406の判定は真となるものとする。
c{N}-NFA論理回路タイプB202を使用する場合、図1のNFA論理回路200は、基本エレメント40−1に対応する対象文字‘B’の基本エレメント40、c{N}-NFA論理回路100に対応する文字’A’の4回繰り返しに対応するc{N}-NFA論理回路タイプB202、基本エレメント40−2に対応する対象文字‘C’の基本エレメント40が順に接続された構成となっている。それぞれの基本エレメント40−1、c{N}-NFA論理回路タイプB201、基本エレメント40−2が図1に記載の通り部分正規表現“B”、”A{4}”、“C”にそれぞれ対応している。以降の説明では、タイプBであることを明示するため、図1のc{N}-NFA論理回路100をc{N}-NFA論理回路タイプB202と表記する。
この場合、c{N}-NFA論理回路100のパラメータである繰り返し回数Nは4、着目文字cは’A’である。
最初に、照合対象文字列の入力が開始される前の初期状態について説明する。
初期状態では、NFA論理回路200中の全てのFlip Flopは全て0に初期化される。つまり、図17の基本エレメント内のF/Fの値は0である。
また、初期状態では、c{N}-NFA論理回路タイプB202の状態遷移マシンの状態はIdle状態321である。状態遷移マシンが保持する内部変数Match Countは特に初期化されている必要はない(初期化されていてもよい)。
以上が、文字列照合を開始する前の初期状態である。
初期状態に続いて、照合対象文字列として“XBAAAACBAAAZAC”が入力された場合を例にとり、c{N}-NFA論理回路タイプB202を用いた場合の本発明の第一の実施の形態の動作について、図9のタイムチャートを用いて説明する。
図9のタイムチャートにおいて、時刻1〜14は初期状態からのクロック数である。
文字‘B’にマッチする基本エレメント40−1は、正規表現の先頭のためマッチ情報入力は常に1であり、そのため基本エレメント40−1から出力される中間マッチ情報208は、入力照合対象文字80が‘B’の場合にのみ‘1’となる(図9の208 中間マッチ情報の行)。
基本エレメント40−1から出力された中間マッチ情報208は、c{N}-NFA論理回路タイプB202内のF/F326に入力され、1クロックサイクル分遅延されたF/F後マッチ情報入力327として、状態遷移マシン325に入力される。
状態遷移マシン325の初期状態はIdle状態321であり、Idle状態321からは「入力された照合対象文字51が着目文字と一致し、かつF/F後マッチ情報入力327が1の場合」にAccept状態322に遷移する。
時刻1〜2の区間では、入力照合対象文字80(c{N}-NFA論理回路タイプB202の入力照合対象文字51)は着目文字‘A’ではないため、遷移条件が成立せずIdle状態321にとどまる。
時刻3では、入力照合対象文字51が着目文字‘A’と一致し、F/F後マッチ情報入力327も1なので、Idle状態321からAccept状態322への遷移条件が成立し、Accept状態322に遷移する。このとき、MatchCountを1に設定する。Accept状態322での遷移判定も時刻3のうちに行われる。Accept状態322では、MatchCount=1、繰り返し回数N=4なので、Running状態323への遷移条件が成立し、Running状態323に遷移する。図9の「状態遷移マシンの状態」は、時刻3において、“Acpt”と“Run”が上下に並んで2つ記載されているが、これは“Acpt”(Accept状態322の略号)に遷移してから“Run”(Running状態323の略号)に遷移したことを示す。太字で記載されている最下段の状態がその時刻における最終的な状態であり、時刻3ではRunning状態323である。
時刻4,5では、入力照合対象文字51が着目文字‘A’と一致するため、Running状態323→Accept状態322→Running状態323と状態遷移が行われる。同時にMatch Countのカウントアップも行われ、時刻5の処理終了時点でMatch Countは3となる。
時刻6では、入力照合対象文字51が着目文字‘A’と一致するため、Running状態323からAccept状態322への遷移がまず行われる。同時に、Match Countもカウントアップされ、Match Count=4となる。Accept状態322では、Match Count=繰り返し回数N(=4)なので、Match状態324への遷移条件が成立し、Match状態324への遷移が行われる。Match状態324からの遷移も同じ時刻6のうちに行われ、Idle状態321に遷移し、時刻6における状態遷移が終了する。
Match状態324への遷移が行われた時刻6において、c{N}-NFA論理回路タイプB202からのマッチ情報出力53、すなわち中間マッチ情報209として1が出力される。
c{N}-NFA論理回路タイプB202から出力された中間マッチ情報209は、文字’C’を対象にマッチを行う基本エレメント40−2に入力される。中間マッチ情報209は基本エレメント40−2内のF/Fにより1クロック遅延された後、基本エレメント40−2における入力文字比較結果と論理積がとられ、最終マッチ結果89として、マッチ結果出力部211へ出力される。
時刻7では、c{N}-NFA論理回路タイプB202から出力された中間マッチ情報209を基本エレメント40−2内のF/Fで1クロック遅延されたマッチ情報入力が1であり、入力照合対象文字80も基本エレメント40−2の着目文字で’C’と一致するため、基本エレメント40−2からのマッチ情報出力53、すなわち最終マッチ結果89が1となる。
このように、照合対象文字列として“XBAAAACBAAAZAC”が入力された場合に、正規表現“BA{4}C”にマッチする文字列は“BAAAAC”(2文字目から7文字目まで)だが、7文字目の‘C’が入力される時刻7において、正しく最終マッチ結果89が1となっていることが確認できる。
時刻8以降の区間では、繰り返し正規表現A{4}の一致判定が途中で失敗するケースを示している。時刻8から時刻11までは、時刻2から時刻5までの動作と全く同様に動作し、c{N}-NFA論理回路タイプB202の状態遷移マシン325は、あと一回着目文字である‘A’が入力されると、マッチ情報出力53として1を出力する状態になっている。時刻12において、入力照合対象文字80が‘Z’なので、Running状態323からIdle状態321への遷移が発生し、正規表現の照合が失敗し、マッチ情報出力53(=中間マッチ情報209)として0が出力される。
以上がc{N}-NFA論理回路タイプB202を使用する場合の動作である。
<タイプCの動作>
次に、c{N}-NFA論理回路タイプC203を使用する場合の動作について、正規表現“[AB]A{4}C”の場合を例に説明する。
NFA論理回路を構成する際には、まず、図2のc{N}-NFA論理回路のタイプ選択フローにしたがって、c{N}-NFA論理回路のタイプ選択が行われる。正規表現“[AB]A{4}C”の場合には、プレフィックス構成文字はAおよびB、繰り返し正規表現A{4}の着目文字はAのみなので、ステップ401の判定が偽、ステップ403の判定が真となり、c{N}-NFA論理回路としてc{N}-NFA論理回路タイプC203が選択される。ここでは、c{N}-NFA論理回路タイプC203の説明を行うため、タイプC203の方が従来構成に比べて有利なものと仮定し、ステップ406の判定は真となるものとする。
“[AB]A{4}C”に対応するNFA論理回路は、図1のNFA論理回路200に近いものとなる。具体的には、正規表現“[AB]”に対応するNFA論理回路、c{N}-NFA論理回路100に対応する文字’A’の4回繰り返し“A{4}”に対応するc{N}-NFA論理回路タイプC203、基本エレメント40−2に対応する対象文字‘C’の基本エレメント40が順に接続された構成となる。正規表現“[AB]”は正規表現“A|B”と等価であり、正規表現“[AB]”に対応するNFA論理回路は図19の49−1に示す回路で構成される(詳細な動作は従来技術を記載した引用文献を参照)。基本エレメント40−1以外のNFA論理回路200を構成する要素は図1と同じである。以降の説明では、タイプCであることを明示するため、c{N}-NFA論理回路100をc{N}-NFA論理回路タイプC203と表記する。
この場合、c{N}-NFA論理回路100のパラメータである繰り返し回数Nは4、着目文字cは’A’である。
最初に、照合対象文字列の入力が開始される前の初期状態について説明する。
初期状態では、NFA論理回路200中の全てのFlip Flopは全て0に初期化される。つまり、図17の基本エレメント内のF/Fの値は0である。
また、初期状態では、c{N}-NFA論理回路タイプC203の状態遷移マシンの状態はIdle状態331である。状態遷移マシンが保持する内部変数Match Countは特に初期化されている必要はない(初期化されていてもよい)。
以上が、文字列照合を開始する前の初期状態である。
初期状態に続いて、照合対象文字列として“XBAAAAACBAAAZA”が入力された場合を例にとり、c{N}-NFA論理回路タイプC203を用いた場合の本発明の第一の実施の形態の動作について、図12のタイムチャートを用いて説明する。
図12のタイムチャートにおいて、時刻1〜14は初期状態からのクロック数である。
正規表現“[AB]”に対応するNFA論理回路は、正規表現の先頭のためマッチ情報入力は常に1であり、そのため正規表現“[AB]”に対応するNFA論理回路から出力される中間マッチ情報208は、入力照合対象文字80が‘A’または‘B’の場合にのみ‘1’となる(図12の208 中間マッチ情報の行)。
正規表現“[AB]”に対応するNFA論理回路から出力された中間マッチ情報208は、c{N}-NFA論理回路タイプC203内のF/F336に入力され、1クロックサイクル分遅延されたF/F後入力マッチ情報337として、状態遷移マシン335に入力される。
状態遷移マシン335の初期状態はIdle状態331であり、Idle状態331からは「入力された照合対象文字51が着目文字と一致し、かつF/F後マッチ情報入力337が1の場合」にAccept状態332に遷移する(遷移330−2)。
時刻1〜2の区間では、入力照合対象文字80(c{N}-NFA論理回路タイプC203の入力照合対象文字51)は着目文字‘A’ではないため、遷移条件が成立せずIdle状態331にとどまる(遷移330−1)。
時刻3では、入力照合対象文字51が着目文字‘A’と一致し、F/F後マッチ情報入力337も1なので、Idle状態331からAccept状態332への遷移条件が成立し、Accept状態332に遷移する(330−2)。このとき、MatchCountを1に設定する。Accept状態332での遷移判定も時刻3のうちに行われる。Accept状態332では、MatchCount=1、繰り返し回数N=4なので、Running状態333への遷移条件が成立し、Running状態333に遷移する(330−3)。図12の「状態遷移マシンの状態」は、時刻3において、“Acpt”と“Run”が上下に並んで2つ記載されているが、これは“Acpt”(Accept状態332の略号)に遷移してから“Run”(Running状態333の略号)に遷移したことを示す。太字で記載されている最下段の状態がその時刻における最終的な状態であり、時刻3ではRunning状態333である。
時刻4,5では、入力照合対象文字51が着目文字‘A’と一致するため、Running状態333→Accept状態332→Running状態333と状態遷移が行われる。同時にMatch Countのカウントアップも行われ、時刻5の処理終了時点でMatch Countは3となる。
時刻6では、入力照合対象文字51が着目文字‘A’と一致するため、時刻4、5と同様にRunning状態333からAccept状態332への遷移がまず行われる(330−4)。同時に、Match Countもカウントアップされ、Match Count=4となる。Accept状態332では、Match Count=繰り返し回数N(=4)なので、Match状態334への遷移条件が成立し、Match状態334への遷移が行われる(330−6)。タイプB202と異なり、Match状態334が時刻6での最終的な状態となり、時刻6における状態遷移が終了する。
時刻7においても、入力照合対象文字51が着目文字‘A’と一致するため、Match状態334にとどまる(遷移330−7)。
時刻8では、入力照合対象文字51が‘C’であり、着目文字‘A’と一致しないため、Match状態334からIdle状態331に遷移する(遷移330−8)。
Match状態334への遷移が行われた時刻6、および時刻7において、c{N}-NFA論理回路タイプC203からのマッチ情報出力53、すなわち中間マッチ情報209として1が出力される。
c{N}-NFA論理回路タイプC203から出力された中間マッチ情報209は、文字’C’を対象にマッチを行う基本エレメント40−2に入力される。中間マッチ情報209は基本エレメント40−2内のF/Fにより1クロック遅延された後、基本エレメント40−2における入力文字比較結果と論理積がとられ、最終マッチ結果89として、マッチ結果出力部211へ出力される。
時刻7では、c{N}-NFA論理回路タイプC203から時刻6に出力された中間マッチ情報209を、基本エレメント40−2内のF/Fで1クロック遅延されたマッチ情報入力が1だが、入力照合対象文字80は‘A’であり、基本エレメント40−2の着目文字で’C’と一致しないため、基本エレメント40−2からのマッチ情報出力53、すなわち最終マッチ結果89は0となる。
時刻8では、c{N}-NFA論理回路タイプC203から時刻7に出力された中間マッチ情報209を、基本エレメント40−2内のF/Fで1クロック遅延されたマッチ情報入力が1であり、入力照合対象文字80も基本エレメント40−2の着目文字で’C’と一致するため、基本エレメント40−2からのマッチ情報出力53、すなわち最終マッチ結果89が1となる。
このように、照合対象文字列として“XBAAAAACBAAAZA”が入力された場合に、正規表現“[AB]A{4}C”にマッチする文字列は“AAAAAC”(3文字目から8文字目まで)だが、8文字目の‘C’が入力される時刻8において、正しく最終マッチ結果89が1となっていることが確認できる。
時刻9以降の区間では、繰り返し正規表現A{4}の一致判定が途中で失敗するケースを示している。時刻9から時刻12までは、時刻2から時刻5までの動作と全く同様に動作し、c{N}-NFA論理回路タイプC203の状態遷移マシン335は、あと一回着目文字である‘A’が入力されると、マッチ情報出力53として1を出力する状態になっている。時刻13において、入力照合対象文字80が‘Z’なので、Running状態333からIdle状態331への遷移が発生し、正規表現の照合が失敗し、マッチ情報出力53(=中間マッチ情報209)として0が出力される。
以上がc{N}-NFA論理回路タイプC203を使用する場合の動作である。
<タイプAの動作>
次に、c{N}-NFA論理回路タイプA201を使用する場合の動作について、正規表現“[AB][AC]{4}C”の場合を例に説明する。
NFA論理回路を構成する際には、まず、図2のc{N}-NFA論理回路のタイプ選択フローにしたがって、c{N}-NFA論理回路のタイプ選択が行われる。正規表現“[AB][AC]{4}C”の場合には、プレフィックス構成文字はAおよびB、繰り返し正規表現[AC]{4}の着目文字はAおよびCなので、ステップ401の判定とステップ403の判定がともに偽となり、c{N}-NFA論理回路としてc{N}-NFA論理回路タイプA201が選択される。ここでは、c{N}-NFA論理回路タイプA201の説明を行うため、タイプA201の方が従来構成に比べて有利なものと仮定し、ステップ406の判定は真となるものとする。
“[AB][AC]{4}C”に対応するNFA論理回路は、図1のNFA論理回路200に近いものとなる。具体的には、正規表現“[AB]”に対応するNFA論理回路、c{N}-NFA論理回路100に対応する文字’A’または‘C’の4回繰り返し“[AC]{4}”に対応するc{N}-NFA論理回路タイプA201、基本エレメント40−2に対応する対象文字‘C’の基本エレメント40が順に接続された構成となる。正規表現“[AB]”は正規表現“A|B”と等価であり、正規表現“[AB]”に対応するNFA論理回路は図19の49−1に示す回路で構成される(詳細な動作は従来技術を記載した引用文献を参照)。基本エレメント40−1以外のNFA論理回路200を構成する要素は図1と同じである。以降の説明では、タイプAであることを明示するため、c{N}-NFA論理回路100をc{N}-NFA論理回路タイプA201と表記する。
この場合、c{N}-NFA論理回路100のパラメータである繰り返し回数Nは4、着目文字cは’A’と‘C’である。
また、動作の説明では、メモリ123のワード数=8とする。メモリのワード数の決定方法については後で説明する。したがって、メモリ123のアドレスは0〜7の範囲となる。
最初に、照合対象文字列の入力が開始される前の初期状態について説明する。
初期状態では、NFA論理回路200中の全てのFlip Flopは全て0に初期化される。つまり、図17の基本エレメント内のF/Fの値は0である。
初期状態では、c{N}-NFA論理回路タイプA201の状態遷移マシンの状態はIdle状態311である。状態遷移マシンが保持する内部変数Match Countは特に初期化されている必要はない(初期化されていてもよい)。
初期状態では、c{N}-NFA論理回路タイプA201のマッチ情報タイミング調整部120のメモリ123の書き込みアドレス124と読み出しアドレス126は、書き込みアドレス124の方が読み出しアドレス126よりもN=4だけ進んだ状態となる。つまり、読み出しアドレス126が0であれば、書き込みアドレス124は4である。また、メモリ123の各ワードの内容は0に初期化される。
以上が、文字列照合を開始する前の初期状態である。
初期状態に続いて、照合対象文字列として“XBAAAACZABAAAZ”が入力された場合を例にとり、c{N}-NFA論理回路タイプA201を用いた場合の本発明の第一の実施の構成の動作について、図6のタイムチャートを用いて説明する。
図6のタイムチャートにおいて、時刻1〜14は初期状態からのクロック数である。
正規表現“[AB]”に対応するNFA論理回路は、正規表現の先頭のためマッチ情報入力は常に1であり、そのため正規表現“[AB]”に対応するNFA論理回路から出力される中間マッチ情報208は、入力照合対象文字80が‘A’または‘B’の場合にのみ‘1’となる(図6の208 中間マッチ情報の行)。
連続一致回数カウント部110の状態遷移マシンの初期状態はIdle状態311であり、Idle状態311からは「入力された照合対象文字101が着目文字と一致する場合」にAccept状態312に遷移する(遷移310−2)。Idle状態311からAccept状態312への遷移条件が「入力された照合対象文字101が着目文字と一致」だけであり、F/F後マッチ情報入力が遷移条件に含まれない点が、c{N}-NFA論理回路タイプB202およびc{N}-NFA論理回路タイプC203の状態遷移マシンと異なる点である。
時刻1〜2の区間では、入力照合対象文字80(c{N}-NFA論理回路タイプA201の入力照合対象文字101)は着目文字‘A’および‘C’ではないため、遷移条件が成立せずIdle状態311にとどまる(遷移310−1)。
時刻3では、入力照合対象文字101が着目文字の一つである‘A’と一致するので、Idle状態311からAccept状態312への遷移条件が成立し、Accept状態312に遷移する(310−2)。このとき、MatchCountを1に設定する。Accept状態312での遷移判定も時刻3のうちに行われる。Accept状態312では、MatchCount=1、繰り返し回数N=4なので、Running状態313への遷移条件が成立し、Running状態313に遷移する(310−3)。図6の「状態遷移マシンの状態」は、時刻3において、“Acpt”と“Run”が上下に並んで2つ記載されているが、これは“Acpt”(Accept状態312の略号)に遷移してから“Run”(Running状態313の略号)に遷移したことを示す。太字で記載されている最下段の状態がその時刻における最終的な状態であり、時刻3ではRunning状態313である。
時刻4,5では、入力照合対象文字101が着目文字‘A’と一致するため、Running状態313→Accept状態312→Running状態313と状態遷移が行われる。同時にMatch Countのカウントアップも行われ、時刻5の処理終了時点でMatch Countは3となる。
時刻6では、入力照合対象文字101が着目文字‘A’と一致するため、時刻4、5と同様にRunning状態313からAccept状態312への遷移がまず行われる(310−4)。同時に、Match Countもカウントアップされ、Match Count=4となる。Accept状態312では、Match Count=繰り返し回数N(=4)なので、Match状態314への遷移条件が成立し、Match状態314への遷移が行われる(310−6)。タイプC203の状態遷移マシンと同様に、Match状態314が時刻6での最終的な状態となり、時刻6における状態遷移が終了する。
時刻7においては、入力照合対象文字101は‘C’であるが、’C’もc{N}-NFA論理回路タイプA201の着目文字なので、Match状態314にとどまる(遷移310−7)。
時刻8では、入力照合対象文字101が‘Z’であり、着目文字‘A’および‘C’のいずれとも一致しないため、Match状態314からIdle状態311に遷移する(遷移310−8)。
Match状態314への遷移が行われた時刻6、および時刻7において、連続一致回数カウント部110からの一致判定結果118として1が出力される。
一方、基本エレメント40−1から出力された中間マッチ情報208は、c{N}-NFA論理回路201内のマッチ情報タイミング調整部120に入力される。書き込みアドレス124はクロック毎に常に加算されており、入力されたマッチ情報入力102は、書き込みアドレス生成部121より指示された書き込みアドレス124にしたがって、メモリ123の所定の位置に格納される。一方、読み出しアドレス126も読み出しアドレス生成部122においてクロック毎に常に加算されており、初期状態におけるアドレスの差分がN=4であるので、読み出しアドレス126は書き込みアドレス124よりもN=4だけ遅れている。この読み出しアドレス126を用いてメモリ123からデータの読み出しを行う。これにより、メモリ読み出しデータ127は、中間マッチ情報208をN(=4)クロック分遅延させた情報となる。
マッチ情報出力部130は、連続一致回数カウント部110からの連続一致判定結果118と、マッチ情報タイミング調整部120からの読み出しデータ127を受信し、これらの論理積(AND)を計算し、マッチ情報出力103として出力する。
c{N}-NFA論理回路タイプA201が、正規表現”c{N}”を実現するNFA論理回路として機能するためには、
(1)前段の正規表現”[AB]”に対応する構成要素(基本エレメント40−1相当)からマッチ情報入力=1が入力され、正規表現“c{N}”に対応するNFA状態がアクティブになる。
(2)正規表現“c{N}”に対応するNFA状態がアクティブになった状態において、着目文字c(=’A’または‘C’)がN(=4)回連続で入力される。
の二つの条件が同時に成立する必要がある。
マッチ情報出力部130に入力される情報のうち、マッチ情報タイミング調整部120から出力される読み出しデータ127は(1)の条件を表し、連続一致回数カウント部110からの連続一致判定結果118は(2)の条件を表す。
マッチ情報出力部130から出力される、c{N}-NFA論理回路タイプA201のマッチ結果である、中間マッチ情報209は、入力された照合対象文字列が「BAAAA」となるタイミングである時刻6および「AAAAC」となる時刻7で1となり、それ以外の時刻では0となっており、前記の(1)(2)の条件をともに満たしていることが分かる。
c{N}-NFA論理回路タイプA201から出力された中間マッチ情報209は、文字’C’を対象にマッチを行う基本エレメント40−2に入力される。中間マッチ情報209は基本エレメント40−2内のF/Fにより1クロック遅延された後、基本エレメント40−2における入力文字比較結果と論理積がとられ、最終マッチ結果89として、マッチ結果出力部211へ出力される。
時刻7では、c{N}-NFA論理回路タイプC201から時刻6に出力された中間マッチ情報209を、基本エレメント40−2内のF/Fで1クロック遅延されたマッチ情報入力が1であり、入力照合対象文字80も基本エレメント40−2の着目文字で’C’と一致するため、基本エレメント40−2からのマッチ情報出力53、すなわち最終マッチ結果89が1となる。
一方、時刻8では、c{N}-NFA論理回路タイプA201から時刻7に出力された中間マッチ情報209を、基本エレメント40−2内のF/Fで1クロック遅延されたマッチ情報入力が1だが、入力照合対象文字80は‘Z’であり、基本エレメント40−2の着目文字で’C’と一致しないため、基本エレメント40−2からのマッチ情報出力53、すなわち最終マッチ結果89は0となる。
このように、照合対象文字列として“XBAAAACZABAAAZ”が入力された場合に、正規表現“[AB][AC]{4}C”にマッチする文字列は“BAAAAC”(2文字目から7文字目まで)だが、7文字目の‘C’が入力される時刻7において、正しく最終マッチ結果89が1となっていることが確認できる。
時刻8以降の区間では、繰り返し正規表現“[AC]{4}”の一致判定が途中で失敗するケースを示している。時刻7までの説明で触れていない特徴的な点がある連続一致回数カウント部110の状態遷移マシンについてのみ説明する。マッチ情報タイミング調整部120およびマッチ情報出力部130の動作は上記において説明したとおりである。
時刻8では、入力照合対象文字101が‘Z’であり、着目文字‘A’および‘C’のいずれとも一致しないため、連続一致回数カウント部110の状態遷移マシンはMatch状態314からIdle状態311に遷移する(遷移310−8)。
時刻9では、時刻3と同様、入力照合対象文字101が着目文字の一つである‘A’と一致するので、Idle状態311からAccept状態312への遷移条件が成立し、Accept状態312に遷移し(310−2)、さらにAccept状態312での遷移判定も同じ時刻のうちに行われ、最終的にRunniing状態313に遷移する(310−3)。c{N}-NFA論理回路タイプA201の連続一致回数カウント部110の状態遷移マシンでは、Idle状態311からAccept状態312への遷移条件が「入力された照合対象文字101が着目文字と一致」だけであるため、時刻9では、1クロック前の時刻8での”[AB]”に対応するNFA論理回路から出力された中間マッチ情報208が0であるにも関わらず、入力された照合対象文字101が着目文字と一致しただけでIdle状態311からAccept状態312への遷移が行われる。
時刻10では、入力照合対象文字101が‘B’であり、着目文字‘A’および‘C’のいずれとも一致しないため、連続一致回数カウント部110の状態遷移マシンはRunning状態313からIdle状態311に遷移する(遷移310−5)。
時刻11から時刻13までは、時刻3から時刻5までの動作と全く同様に動作し、c{N}-NFA論理回路タイプA201の状態遷移マシン325は、あと一回着目文字である‘A’または‘C’が入力されると、一致判定結果118として1を出力する状態になっている。時刻14において、入力照合対象文字101が‘Z’なので、Running状態313からIdle状態311への遷移が発生し、正規表現の照合が失敗し、一致判定結果118として0が出力される。
以上がc{N}-NFA論理回路タイプA201を使用する場合の動作である。
<従来技術利用型の動作>
c{N}-NFA論理回路従来技術利用型204の動作は非特許文献2において説明されているとおりであり、本発明に適用にするにあたっての特記事項はない。
<動作の説明のまとめ>
上述のように、本発明の第一の実施の形態のNFA論理回路を利用すると、NFAをハードウェアに直接埋め込む形の文字列照合回路において、繰り返し回数指定の正規表現を実現する際に、繰り返し指定回数と同数の基本エレメント40を実装することなく、連続一致回数をカウントする回路と、必要により、メモリによるマッチ情報を遅延させる回路を用いるだけで実現でき、回路規模を削減することができる。
上記の動作の説明では、c{N}-NFA論理回路100が着目する文字cとして、’A’や’B’などの単一文字の場合(タイプB、タイプC)および“[AC]”のように2種類の文字の場合を例に説明をしたが、文字cとして”[ABC]”や“[A-Za-z0-9]”や“[^ABC]”など複数文字のいずれかを示す表現を使用した場合でも、本発明を適用することが可能である。これに対応するためには、c{N}-NFA論理回路100のタイプA、タイプB、タイプC内の状態遷移マシンの図5、図8、図11中の遷移条件「入力照合対象文字=着目文字」を「入力照合対象文字53が着目文字のいずれかと一致する」に、遷移条件「入力照合対象文字≠着目文字」を「入力照合対象文字53が着目文字のいずれとも一致しない」に読み替えればよい。
[回路規模削減効果]
以下に、回路規模の削減効果について具体的に述べ、本発明の回路規模削減効果の優位性について示す。
NFAをハードウェア回路に埋め込む方式では、照合ルールとなる正規表現を変更できるようにするという観点から、通常、ハードウェアを実装するデバイスとして、FPGA(Field Programmable Gate Array)などの再構成可能なハードウェアが利用される。そこで、回路規模の見積もりは、FPGAにおける回路規模の指標であるLogic Element(LE)数を単位として行う。有力なFPGAベンダーの一つであるAltera社製FPGAのStratixでは、一つのLogic Element(LE)は、1ビットのF/Fが一つと、4ビット入力のLUT(Look-Up Table)が一つで構成される。
c{N}-NFA論理回路タイプA201を例として本発明の回路規模削減効果を示す。
c{N}-NFA論理回路タイプA201内の回路規模が比較的大きなブロックとしては、連続一致カウント部112とF/F114より構成されるカウンタ、書き込みアドレス生成部121と読み出しアドレス生成部122のアドレスカウンタ2つが挙げられる。これらのカウンタはいずれも0〜Nまでの値を保持する必要があり、必要なビット数Bは
B=ceil(log2(N+1))
(ceil(x)はxより大きな最小の整数)
で定義される。例えば、繰り返し指定回数N=400の場合、
B=ceil(log2(400+1))=9(bits)
となる。通常、9ビットのカウンタは、9LE程度で実装可能である。
カウンタ以外に回路規模に影響を与えるブロックとしては、比較器111と連続一致判定部113の組み合わせ回路が挙げられる。これらはc{N}-NFA論理回路内にいずれも一つずつ存在する。照合対象文字101としてASCII文字を想定すると、比較器111は8ビットの比較回路となる。また、連続一致判定部113の比較回路のビット幅はカウンタのビット幅と等しいが、前記の例のN=400の場合、9ビット幅となる。8ビット乃至9ビットの比較回路の実装に必要なLE数は3LE程度である。
c{N}-NFA論理回路201の実装に必要なLE数は、
・カウンタ:9LE×3=27LE
・組み合わせ回路:3LE×2=6LE
で、合計33LE程度である。
一方、1個の基本エレメント40は、主に、入力文字に対する比較器が一つと、1ビットのF/Fが一つから構成される。F/Fは一つなので、LE数に大きく影響を与えるのは比較器であり、比較器のビット幅を照合対象文字により決まるのでc{N}-NFA論理回路201の場合と同じく8ビットとすると、必要なLE数は基本エレメント40一つ当たり3LEとなる。
従来技術を用いて、繰り返し回数指定の正規表現を実現するNFA論理回路を作成すると、繰り返し回数Nと等しい数の基本エレメントが必要である。N=400の場合、必要なLE数は3×400=1200LEとなる。
本発明の提案方式で必要な回路規模は、従来技術と比較して、LE数で
本発明適用時のLE数/従来技術でのLE数=33/1200=2.75%≒=3%程度
に削減することが可能である。
c{N}-NFA論理回路タイプB202、c{N}-NFA論理回路タイプC203の場合には、マッチ情報タイミング調整部120に相当する回路が不要となるため、マッチ情報タイミング調整部120内に存在するカウンタ2個と組み合わせ回路1個が不要となる。結果的に、回路規模に大きく影響を与える要素は、カウンタ1個と組み合わせ回路1個となり、c{N}-NFA論理回路タイプBまたはタイプCを実現するために必要なLE数は、カウンタ1個(9LE)+組み合わせ回路(3LE)=12LE程度となる。この場合の回路規模削減効果は、従来技術と比較して、LE数で、N=400の場合で、
本発明適用時のLE数/従来技術でのLE数=12/1200=1%
となり、本発明の効果がさらに得られることが確認できる。
『第二の実施の形態』
本発明の第二の実施の形態は、本発明の第一の実施の形態と比較すると、c{N}-NFA論理回路100のタイプ選択フローのみが異なり、c{N}-NFA論理回路タイプA201もしくは従来技術利用型204のみをc{N}-NFA論理回路の実現方法として使用する。第二の実施の形態における、c{N}-NFA論理回路100のタイプ選択フローを図13に示す。ステップ501の判定で、c{N}-NFA論理回路タイプA201を使用した方が従来技術を利用する場合よりも有利な場合には、c{N}-NFA論理回路タイプA201を使用し(ステップ502)、そうでない場合には従来技術を利用して(ステップ503)、c{N}-NFA論理回路100を実現する。c{N}-NFA論理回路タイプA201の内部構成、動作については、発明を実施するための最良の形態と全く同一である。
c{N}-NFA論理回路タイプB202およびc{N}-NFA論理回路タイプC203は、それぞれ、第一の実施の形態の図2のタイプ選択フローのステップ401、ステップ403の条件が真となる場合にしか、c{N}-NFA論理回路100の実現方法として利用できないのに対し、c{N}-NFA論理回路タイプA201は、図2においてc{N}-NFA論理回路タイプB202やc{N}-NFA論理回路タイプC203を使用する条件においても使用することが可能である。これは、c{N}-NFA論理回路タイプA201が連続一致回数カウント部110とマッチ情報タイミング調整部120という、繰り返し回数指定の正規表現を実現する上で必須の機能をそのまま実現しているためである。これに対して、c{N}-NFA論理回路タイプB202やc{N}-NFA論理回路タイプC203では、c{N}-NFA論理回路100の実現方法として使用する条件を限定することで、内部構成を簡単にしている。
c{N}-NFA論理回路の実現方法としてc{N}-NFA論理回路タイプA201だけを使用することで、以下のメリットが得られる。本発明の第一の実施の形態のタイプ選択フローである図2では、繰り返し回数指定の正規表現より前の部分正規表現を参照してプレフィックス構成文字を決定し、どのタイプの構成を選択するかを決定しているが、正規表現がサポートするメタ文字の種類によってはプレフィックス構成文字を正確に決定するアルゴリズムが複雑になる可能性がある。第二の実施の形態のようにc{N}-NFA論理回路の実現方法としてc{N}-NFA論理回路タイプA201だけを使用することで、従来技術を使用する場合に比べて回路規模を削減するメリットを得つつも、タイプ選択フローを実装するアルゴリズムを単純化することができる。
『第三の実施の形態』
本発明の第三の実施の形態は、特定文字のN回以上の繰り返しを表す正規表現“c{N,}”の実現方法に関するものである。
特定文字のN回以上(Nは自然数)の繰り返しを表す正規表現“c{N,}”に対応するNFA論理回路の構成を図14に示す。正規表現“c{N,}”に対応するNFA論理回路601は、c{N}-NFA論理回路100とc*-NFA論理回路602をこの順序で直列に接続したものであり、c{N}-NFA論理回路100から出力された中間マッチ情報603は、c*-NFA論理回路602のマッチ情報入力となる。N回以上の繰り返しを表す正規表現“c{N,}”は、特定文字のN回の繰り返しを表す正規表現“c{N}”と特定文字の0回以上の繰り返しを表す“c*”の連結である“c{N}c*”と等価である。この等価性を利用することで、図14に記載の構成で、特定文字のN回以上の繰り返しを表す正規表現“c{N,}”に対応するNFA論理回路が構成できる。
c{N}-NFA論理回路100の具体的な構成は、本発明の第一の実施の形態もしくは第二の実施の形態に記載の方法を用いることができ、その動作も前記実施の形態に記載の通りである。c*-NFA論理回路602は従来技術の基本パターンを用いて実現される。例えば、正規表現が“[AB]{50,}”の場合、c*-NFA論理回路602の文字cは”[AB]”つまり”(A|B)”であり、具体的な回路構成は図19の49−2の枠内の通りとなる。
本発明の活用例として、ネットワークサービスに対する攻撃や侵入を検知する侵入検知システム(IDS;Intrusion Detection System;)や侵入防止システム(IPS;Intrusion Protection System)において、正規表現などを利用した高度な攻撃・侵入検知ルールによる文字列照合処理を高速に実現するハードウェアに適用できる。
本発明の第一の実施の形態の全体構成を示すブロック図 c{N}-NFA論理回路100のタイプ選択フローを示す図 プレフィックス構成文字の具体例を示す図 c{N}-NFA論理回路タイプA201の構成を示す図 c{N}-NFA論理回路タイプA201の連続一致回数カウント部110の状態遷移マシンの動作を示す図 c{N}-NFA論理回路タイプA201を用いた構成の動作を説明するためのタイムチャート c{N}-NFA論理回路タイプB202の構成を示す図 c{N}-NFA論理回路タイプB202の状態遷移マシンの動作を示す図 c{N}-NFA論理回路タイプB202を用いた構成の動作を説明するためのタイムチャート c{N}-NFA論理回路タイプC203の構成を示す図 c{N}-NFA論理回路タイプC203の状態遷移マシンの動作を示す図 c{N}-NFA論理回路タイプC203を用いた構成の動作を説明するためのタイムチャート 本発明の第二の実施の形態におけるc{N}-NFA論理回路100のタイプ選択フローを示す図 本発明の第三の実施の形態における特定文字のN回以上の繰り返しを表す正規表現に対応するc{N}-NFA論理回路601の構成を示す図 従来技術の正規表現からNFAへの変換を説明するための図 従来技術のNFAからハードウェアへのNFA埋め込み回路への変換を説明するための図 従来技術のNFA論理回路の基本エレメントの詳細構成を表す図 従来技術のNFA論理回路の基本エレメント40の簡略図 従来技術による正規表現からNFA論理回路への変換例を示す図 NFA埋め込み型ハードウェアにおける正規表現の部分表現に対応するブロックが持つべき入出力信号を示す図 繰り返し回数指定の正規表現を従来技術により変換したNFAを示す図 繰り返し回数指定の正規表現を従来技術により変換したNFA論理回路を示す図
符号の説明
101…照合対象文字
102…マッチ情報入力
103…マッチ情報出力
110…連続一致回数カウント部
111…比較器
112…連続一致カウント部
113…連続一致判定部
114…フリップフロップ
115…比較結果
116…一致回数
117…前回一致回数
118…連続一致判定結果
120…マッチ情報タイミング調整部
121…書き込みアドレス生成部
122…読み出しアドレス生成部
123…メモリ
124…書き込みアドレス
125…書き込みデータ
126…読み出しアドレス
127…読み出しデータ
130…マッチ情報出力部
200…NFA論理回路
210…照合対象文字列入力部
211…マッチ結果出力部

Claims (7)

  1. 照合条件を表す正規表現から構成したNFAを回路化した文字列照合回路であって、
    正規表現に含まれる部分表現のうち、指定文字cの繰り返し回数Nを指定した正規表現は、照合対象文字とマッチ情報入力とを入力に持ち、マッチ情報出力を出力に持つc{N}-NFA回路によって回路化されており、且つ、前記c{N}-NFA回路は、入力された照合対象文字と指定文字との連続一致回数を数えるカウンタと、連続一致回数が指定繰り返し回数Nに達したか否かを判定する判定回路とを含むことを特徴とする文字列照合回路。
  2. 請求項1に記載の文字列照合回路において、前記c{N}-NFA回路は、前記マッチ情報入力を指定繰り返し回数Nの文字が入力されるのに要する時間だけ遅延させるマッチ情報タイミング調整部と、前記マッチ情報タイミング調整部で遅延させた前記マッチ情報入力と前記判定回路の判定結果とを入力し前記マッチ情報出力を出力するマッチ情報出力部とを備えることを特徴とする文字列照合回路。
  3. 請求項2に記載の文字列照合回路において、前記マッチ情報タイミング調整部は、前記マッチ情報入力を記憶するメモリと、前記メモリの書き込みアドレスを生成する書き込みアドレス生成部と、前記書き込みアドレス生成部が生成する書き込みアドレスよりも繰り返し回数N分だけ遅らせた読み出しアドレスを生成する読み出しアドレス生成部とを含むことを特徴とする文字列照合回路。
  4. 請求項1に記載の文字列照合回路において、前記c{N}-NFA回路は、前記マッチ情報入力を保持する記憶素子を備え、前記カウンタは、入力された照合対象文字と指定回数の繰り返しに対応する状態の着目文字が一致し且つ前記記憶素子に保持されたマッチ情報入力がマッチしたことを示す値となる場合に連続一致回数のカウントを開始し、前記連続一致回数のカウント開始後は、入力された照合対象文字と指定回数の繰り返しに対応する状態の着目文字が一致する場合にカウントアップし、入力された照合対象文字と指定回数の繰り返しに対応する状態の着目文字が一致しなかった場合は連続一致回数のカウントをリセットすることを特徴とする文字列照合回路。
  5. 請求項4に記載の文字列照合回路において、前記連続一致回数を数えるカウンタが、連続一致回数が前記指定繰り返し回数Nに達した場合に、連続一致回数のカウントをリセットすることを特徴とする文字列照合回路。
  6. 請求項4に記載の文字列照合回路において、前記連続一致回数を数えるカウンタが、連続一致回数が前記指定繰り返し回数Nに達した場合に、連続一致回数のカウントを前記指定繰り返し回数Nで保持することを特徴とする文字列照合回路。
  7. 照合条件を表す正規表現から構成したNFAを回路化した文字列照合回路であって、
    正規表現に含まれる部分表現のうち、指定文字cの繰り返し回数N以上を指定した正規表現は、請求項1乃至請求項6の何れか1項に記載された前記c{N}-NFA回路と、前記c{N}-NFA回路から出力されるマッチ情報出力と照合対象文字とを入力に持ち、マッチ情報出力を出力に持つc*-NFA回路とを連結した回路によって回路化されていることを特徴とする文字列照合回路。
JP2007266422A 2007-10-12 2007-10-12 文字列照合回路 Expired - Fee Related JP4957500B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007266422A JP4957500B2 (ja) 2007-10-12 2007-10-12 文字列照合回路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007266422A JP4957500B2 (ja) 2007-10-12 2007-10-12 文字列照合回路

Publications (2)

Publication Number Publication Date
JP2009093599A JP2009093599A (ja) 2009-04-30
JP4957500B2 true JP4957500B2 (ja) 2012-06-20

Family

ID=40665497

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007266422A Expired - Fee Related JP4957500B2 (ja) 2007-10-12 2007-10-12 文字列照合回路

Country Status (1)

Country Link
JP (1) JP4957500B2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5429164B2 (ja) * 2008-06-04 2014-02-26 日本電気株式会社 有限オートマトン生成システム
JP5321589B2 (ja) * 2008-08-13 2013-10-23 日本電気株式会社 有限オートマトン生成装置、パターンマッチング装置、有限オートマトン回路生成方法およびプログラム
EP2377917A1 (en) 2009-01-09 2011-10-19 NTN Corporation Microinjection apparatus and microinjection method
US8601013B2 (en) 2010-06-10 2013-12-03 Micron Technology, Inc. Analyzing data using a hierarchical structure
US8803214B2 (en) 2010-06-28 2014-08-12 Micron Technology, Inc. Three dimensional memory and methods of forming the same
EP2668575B1 (en) 2011-01-25 2021-10-20 Micron Technology, INC. Method and apparatus for compiling regular expressions
EP2668574B1 (en) 2011-01-25 2021-11-24 Micron Technology, INC. Utilizing special purpose elements to implement a fsm
KR101607736B1 (ko) * 2011-01-25 2016-03-30 마이크론 테크놀로지, 인크. 오토마톤의 진입 차수 및/또는 진출 차수를 제어하기 위한 양화 언롤링
CN103430148B (zh) 2011-01-25 2016-09-28 美光科技公司 用于元件利用的状态分组
JP5804047B2 (ja) 2011-02-21 2015-11-04 日本電気株式会社 演算装置及び演算実行方法
US8759895B2 (en) 2011-02-25 2014-06-24 Micron Technology, Inc. Semiconductor charge storage apparatus and methods
JPWO2014041783A1 (ja) * 2012-09-11 2016-08-12 日本電気株式会社 文字列検出回路及び文字列検出方法
JP6079385B2 (ja) * 2013-03-29 2017-02-15 富士通株式会社 照合処理回路及び照合処理回路の制御方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5512921A (en) * 1994-06-22 1996-04-30 Microsoft Corporation Visual display system having low energy data storage subsystem with date compression capabilities, and method for operating same
JP4047053B2 (ja) * 2002-04-16 2008-02-13 富士通株式会社 繰り返しを含む順序パターンを用いた検索装置および方法
JP4635147B2 (ja) * 2005-11-17 2011-02-16 国立大学法人 筑波大学 パターンマッチング装置、その形成方法、それを用いたネットワーク不正侵入検知装置の動作方法、およびそれを用いた侵入防止システムの動作方法

Also Published As

Publication number Publication date
JP2009093599A (ja) 2009-04-30

Similar Documents

Publication Publication Date Title
JP4957500B2 (ja) 文字列照合回路
US10089086B2 (en) Method and apparatus for compiling regular expressions
KR101607736B1 (ko) 오토마톤의 진입 차수 및/또는 진출 차수를 제어하기 위한 양화 언롤링
KR101606622B1 (ko) Fsm을 구현하기 위한 특수 목적 요소의 이용
KR101551045B1 (ko) 요소 이용을 위한 상태 그룹화
JP2014506693A5 (ja)
US20140317134A1 (en) Multi-stage parallel multi-character string matching device
CN108463976B (zh) 减少网络中链路状变化的洪泛
JPWO2010107114A1 (ja) パターンマッチング装置
GB2511072A (en) Non-deterministic finite state machine module for use in a regular expression matching system
Sugier Low-cost hardware implementations of Salsa20 stream cipher in programmable devices
KR101276796B1 (ko) 패턴 매칭 장치 및 방법
Marano et al. Partial differential equations--on a Dirichlet problem with p-Laplacian and asymmetric nonlinearity
Chen et al. A hybrid multiple-character transition finite-automaton for string matching engine
Klimushyn et al. Crypto-resistant methods and random number generators in internet of things (iot) devices
JP2019213183A (ja) クラスタリング方法、分類方法、クラスタリング装置、及び、分類装置
Aoki et al. An efficient algorithm for constructing a sequence binary decision diagram representing a set of reversed sequences
Ji et al. An Enhanced 128-bit Asynchronous Authentication and Data Encryption Circuits for loT Sensor Applications
WO2014041783A1 (ja) 文字列検出回路及び文字列検出方法
TWI407370B (zh) 正規表示法電路系統以及其共用方法
CN102831051A (zh) 一种对WuManber算法进行测试的方法和***
JP2005045567A (ja) 端末装置および通信システム
JP2016092748A (ja) 検証装置、検証方法、および、検証プログラム

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20091008

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20091008

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100809

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: 20120221

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120305

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

Free format text: PAYMENT UNTIL: 20150330

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees