『第一の実施の形態』
次に、本発明の第一の実施の形態について図面を参照して詳細に説明する。
[構成の説明]
図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の枠内の通りとなる。