以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
図1は、照合処理回路の構成の一例を示す図である。図1に示す照合処理回路は、照合コア回路10及び型回路列11を含む。型回路列11は、各々が照合対象データと正規表現パターンの一部との照合を行う複数の型回路12−1乃至12−14を含む。複数の型回路12−1乃至12−14は、前段の型回路から次段の型回路に照合対象データと前段の型回路が生成した照合結果とを供給するよう、直列に接続されている。
例えば、型回路12−1乃至12−5にはそれぞれ、正規表現パターンの各部分「[AB]」、「.」、「C+」、「.*」、及び「[^0]」が割り当てられ、これら正規表現パターンの各部分と照合対象データとの照合を行うように設定されている。型回路12−1乃至12−5に対する正規表現パターンの各部分の割り当ては、照合コア回路10により行われる。これらの型回路12−1乃至12−5の直列接続により、「[AB].C+.*[^0]」という正規表現パターンを照合する。
具体的には、型回路12−1乃至12−5を含む型回路列の第1の型回路12−1側から照合対象のデータストリームの文字列を一文字ずつ順次入力する。型回路12−1乃至12−5の各回路では、各サイクルにおいて、自らに割り当てられた正規表現パターンの一部と供給される各文字との照合を行う。先頭の型回路12−1が、正規表現パターンの一部と現在供給される一文字との照合を行うと、その照合結果と供給された一文字とを次段の型回路12−2に供給する。次段以降の型回路12−2乃至12−5は、正規表現パターンの一部と現在供給される一文字との照合を行うと、その照合結果と前段からの照合結果とに基づいて先頭段から自らの段までの全体の照合結果を生成する。全体の照合結果と供給された一文字とは、次段の型回路に供給される。この全体の照合結果を生成する際には、前段からの照合結果が一致を示し、且つ、自らの段の照合結果も一致を示す場合に、全体の照合結果に一致を示す値を設定する。それ以外の場合には、全体の照合結果に不一致を示す値を設定する。これにより、上記の正規表現パターンに一致する文字列が入力された場合には、最終段である第5の型回路12−5から出力される全体の照合結果が、あるサイクルにおいて一致を示すことになる。
図1に示されるように、複数の型回路12−1乃至12−14には、第1乃至第3の正規表現パターン13乃至15が割り当てられている。まず、複数の型回路12−1乃至12−14が直列に接続された型回路列において、一の型回路12−1から一の型回路を起点としてN番目(N:1以上の整数、この例では5)の型回路12−5までのN個の型回路に第1の正規表現パターン13を割り当てる。更に、一の型回路12−1を起点としてN+1番目の型回路12−6からN+M番目の型回路12−7までのM個(M:1以上の整数、この例では2)の型回路に第2の正規表現パターン14を割り当てる。同様にして、型回路12−8から型回路12−14までの7個の型回路に、第3の正規表現パターン15を割り当てる。
そして、一の型回路12−1から型回路12−14まで照合対象データを伝搬させる。これにより、第1の正規表現パターン13に対する第1の照合と、第2の正規表現パターン14に対する第2の照合と、第3の正規表現パターン15に対する第3の照合とをそれぞれ独立に行う。即ち、型回路12−1乃至12−14にそれぞれ割り当てられた正規表現パターンの各部分からなる一つの長い正規表現パターンを照合するのではなく、第1乃至第3の正規表現パターン13乃至15をそれぞれ別個の3つの正規表現パターンとして照合する。
そのためには、各正規表現パターンの先頭にある型回路において、前段の照合結果を用いることなく、自らに割り当てられた正規表現パターンの一部と前段から供給される照合対象データとを照合した結果を、後段に照合結果として伝えればよい。例えば、第3の正規表現パターン15の先頭にある型回路12−8(第3の正規表現パターン15の最初の一部分「D」が割り当てられた型回路)に着目する。この型回路12−8は、前段の型回路12−7からの照合対象データと正規表現パターンの一部「D」との照合により得られた結果に応じて、前段の型回路12−7からの照合結果に依存することなく、後段の型回路12−9に供給する照合結果を生成する。また型回路12−9は、前段の型回路12−8からの照合対象データと正規表現パターンの一部「.」との照合により得られた結果と前段の型回路12−8からの照合結果とに応じて、後段の型回路に供給する照合結果を生成する。その際、型回路12−9は、前段からの照合結果が一致を示し、且つ、自らの段の照合結果(照合対象データと「.」との照合結果)が一致を示すときに、一致を示す照合結果を生成する。それ以外の場合には、不一致を示す照合結果を生成する。このようにして、第1乃至第3の正規表現パターン13乃至15をそれぞれ別個で独立な3つの正規表現パターンとして照合することができる。
上記の動作を実現するために、前段の型回路に接続されている型回路の各々は、第1の動作モードと第2の動作モードとの何れかの動作モードに設定可能であるよう構成される。第1の動作モードでは、前段の型回路からの照合対象データと正規表現パターンの一部との照合により得られた結果と前段の型回路からの照合結果とに応じて、後段の型回路に供給する照合結果を生成する。第2の動作モードでは、前段の型回路からの前記照合対象データと正規表現パターンの一部との照合により得られた結果に応じて、前段の型回路からの照合結果に依存することなく、後段の型回路に供給する照合結果を生成する。
なお図1には、単一の照合コア回路10に接続された単一の型回路列11のみが示されるが、複数のデータストリーム(照合対象データのデータストリーム)に対して照合を行うためには、図1に示す照合処理回路を各データストリーム毎に設ければよい。また或いは、単一の型回路列に複数の照合コア回路を接続してもよい。また複数の型回路12−1乃至12−14はリング状に直列に接続されてもよい。即ち、型回路12−14の出力が型回路12−1の入力となるように、型回路列11の後端の型回路と先端の型回路とが接続されてもよい。
図2は、リング状に直列に接続された複数の型回路に対して複数の照合コア回路が接続された照合処理回路の構成の一例を示す図である。図2及び同様の図において、各ボックスで示される各機能又は回路ブロックと他の機能又は回路ブロックとの境界は、基本的には機能的な境界を示すものであり、物理的な位置の分離、電気的な信号の分離、制御論理的な分離等に対応するとは限らない。各機能又は回路ブロックは、他のブロックと物理的にある程度分離された1つのハードウェアモジュールであってもよいし、或いは他のブロックと物理的に一体となったハードウェアモジュール中の1つの機能を示したものであってもよい。
図2に示す照合処理回路は、照合コア回路20−1乃至20−4、型回路22−1乃至22−28、ストリームデータ読み出し部23、型回路管理部24、及び出力部25を含む。型回路22−1乃至22−28の各々は、照合対象データと正規表現パターンの一部との照合を行うものであり、図1で説明した型回路12−1乃至12−14の各々と同一の機能を有する。型回路22−1乃至22−28は、前段の型回路から次段の型回路に照合対象データと前段の型回路が生成した照合結果とを供給するよう、信号経路26を介してリング状に直列に接続されている。但し、リング状であることは必須要件ではなく、例えば、型回路22−19と型回路22−20との間が接続されて無く、先端と後端とを有する一本の型回路列が形成されていてもよい。以下の説明では、リング状である構成の回路について説明する。
照合コア回路20−1乃至20−4は、複数の型回路22−1乃至22−28のうちのそれぞれ対応する型回路22−6、22−13、22−20、及び22−27に接続され、それら対応する型回路にそれぞれ対応する照合対象データを供給する。照合コア回路20−1が供給する照合対象データは、例えば型回路22−6乃至22−19を順次伝搬し、型回路22−6乃至22−19のうちの少なくとも一つの型回路により照合されてよい。また照合コア回路20−2が供給する照合対象データは、例えば型回路22−13乃至22−26を順次伝搬し、型回路22−13乃至22−26のうちの少なくとも一つの型回路により照合されてよい。また照合コア回路20−3が供給する照合対象データは、例えば型回路22−20乃至22−28及び22−1乃至22−5を順次伝搬し、型回路22−20乃至22−28及び22−1乃至22−5のうちの少なくとも一つの型回路により照合されてよい。また照合コア回路20−4が供給する照合対象データは、例えば型回路22−27乃至22−28及び22−1乃至22−12を順次伝搬し、型回路22−27乃至22−28及び22−1乃至22−12のうちの少なくとも一つの型回路により照合されてよい。
前述のように、複数のデータストリーム(照合対象データのデータストリーム)に対して照合を行うためには、図1に示す照合処理回路を各データストリーム毎に設ければよい。しかしながらそのような構成においては、例えば、あるデータストリームに対しては照合するための正規表現パターンの数が少ない或いは長さが短い等の理由により型回路列11において使用していない型回路が現れる場合がある。そのような余裕のある型回路列11がある一方で、他のデータストリームを処理する他の型回路列11では、照合するための正規表現パターンの数が多い或いは長さが長い等の理由により型回路の数が足りないという場合があり得る。
図2に示す構成では、複数の型回路22−1乃至22−28を直列(且つリング状)に接続し、照合コア回路20−1乃至20−4は、複数の型回路22−1乃至22−28のうちのそれぞれ対応する型回路にそれぞれ対応する照合対象データを供給する。例えば、照合コア回路20−1が供給する第1の照合対象データに対しては、照合のために10個の型回路が必要なのであれば、型回路22−6乃至22−15の型回路に対して、照合コア回路20−1用の一又は複数の正規表現パターンを割り当てればよい。この時、照合コア回路20−2が供給する第2の照合対象データに対しては、照合のために4個の型回路が有ればよいのであれば、型回路22−16乃至22−19の型回路に対して、照合コア回路20−2用の一又は複数の正規表現パターンを割り当てればよい。そして、型回路22−13乃至22−15の3つの型回路については、内部を伝搬していく第1の照合対象データと第2の照合対象データとのうち、第1の照合対象データに対してのみ照合を行うように設定すればよい。照合を行わない方の第2の照合対象データについては、単に素通りさせればよい。また型回路22−16乃至22−19の4つの型回路については、内部を伝搬していく第1の照合対象データと第2の照合対象データとのうち、第2の照合対象データに対してのみ照合を行うように設定すればよい。照合を行わない方の第1の照合対象データについては、単に素通りさせればよい。このような選択的な照合処理は、後述するように、時分割での照合処理或いは型回路間の信号処理経路の複線化により実現することができる。
上記の説明では、照合コア回路20−1と20−2を例として用いて説明したが、他の照合コア回路についても同様である。但し、例えば照合コア回路20−1から供給された照合対象データが型回路22−1乃至22−28が形成するループ内を永遠に伝搬し続けることを避ける必要がある。そこで、上記の例の場合であれば、型回路22−19と型回路22−20との間において、照合コア回路20−1からの第1の照合対象データを破棄すればよい。即ち、任意の照合対象データは、2つの照合コア回路に対応する範囲にある型回路(図2の例では14個の型回路)を伝播して、その後破棄される構成とすればよい。この場合、任意の一つの型回路には、最大で2つの照合コア回路からそれぞれ供給される2つの照合対象データが伝搬することになる。
上記の説明では、任意の一つの照合コア回路は、2つの照合コア回路に対応する範囲にある型回路(図2の例では14個の型回路)に自らが供給する照合対象データを照合するための正規表現パターンを割り当て可能であるとした。即ち、任意の一つの型回路には、最大でも2つの照合コア回路からそれぞれ供給される2つの照合対象データが伝搬するものとした。これは一例に過ぎず、限定を意図するものではない。例えば、任意の一つの照合コア回路は、3つの照合コア回路に対応する範囲にある型回路(図2の例では21個の型回路)に自らが供給する照合対象データを照合するための正規表現パターンを割り当て可能であるとしてよい。即ち、任意の一つの型回路には、最大で3つの照合コア回路からそれぞれ供給される3つの照合対象データが伝搬するものとしてよい。
図2において、ストリームデータ読み出し部23は、各照合コア回路20−1乃至20−4に対してそれぞれのストリームデータ(照合対象データ)を供給する。型回路管理部24は、何れの型回路が既に使用されているか(既に正規表現パターンの一部が割り当てられているか)を示す情報を保持し、何れの型回路を何れの照合コア回路に割り当てるかを決定する。この型回路管理部24の管理下において、照合コア回路20−1乃至20−4が型回路22−1乃至22−28に正規表現パターンの各部分を割り当てる。出力部25は、型回路22−1乃至22−28からの照合結果を受け取り、照合対象データが正規表現パターンに一致したか否かを判定する。例えば、図1の例では、第1の正規表現パターン13に一致する文字列が入力された場合には、最終段である型回路12−5から出力される照合結果が、ある動作サイクルにおいて一致を示すことになる。同様に、図2の構成においても、ある正規表現パターンに一致する文字列が入力された場合には、その正規表現パターンが設定された型回路の最終段から出力される照合結果が、ある動作サイクルにおいて一致を示すことになる。出力部25は、型回路22−1乃至22−28の各々の照合結果の出力を監視することにより、正規表現パターンと照合対象データとが一致したか否かを判定する。
図3は、照合コア回路の構成の一例を示す図である。図2に示す照合コア回路は、図3に示す構成を有してよい。図3に示す照合コア回路は、制御部30、書き込み用回路データ格納部31、タイミング情報供給部32、バッファ33、及びバッファ34を含む。制御部30は、型回路管理部24(図2)に型回路利用要求を送信し、型回路管理部24から利用可能な型回路についての情報を受け取る。制御部30は、ストリームデータ読み出し部23(図2)から正規表現パターンを識別する識別情報(正規表現ID)を受け取り、当該識別情報に一致する書き込み用回路データを書き込み用回路データ格納部31から読み出す。この書き込み用回路データは、識別情報が示す正規表現パターンの各部に対応する照合処理を型回路に実行させるための構成データ(コンフィギュレーションデータ)である。この構成データは、バッファ34を介して各型回路に供給される。正規表現パターンのある一部の構成データを送信する際、制御部30は、タイミング情報供給部32を介して、当該構成データに対応するタイミング情報と、書き込み先ID情報と、書き込み指示とを各型回路に供給する。書き込み先ID情報は書き込み先の型回路を特定するものである。なお制御部30は、書き込み先の型回路がどの型回路であるかについての情報を、型回路利用要求に応答する型回路管理部24から受け取る。
書き込み先ID情報にIDが一致する型回路は、書き込み指示を受け取ると、自分のIDに一致する書き込み先ID情報と共に送られてきた構成データを、内部の照合回路のメモリに書き込む。またこの型回路は、ID情報と共に送られてきたタイミング情報を、内部のタイミング回路に設定する。タイミング回路を設定することにより、例えば第1の照合対象データと第2の照合対象データとの2つの照合対象データが供給されるときに、どちらの照合対象データに対して照合を行うかが制御される。
また制御部30は、バッファ33を制御することにより、ストリームデータ読み出し部23(図2)から供給される照合対象データを、適切なタイミング(適切な動作サイクル)で各型回路に供給する。これにより、各型回路は、照合対象データに対して所望の正規表現パターンの一部との照合を実行し、複数の型回路全体で所望の正規表現パターンの照合を実行する。
図4は、型回路の構成の一例を示す図である。図2に示す型回路のうち、照合コア回路に接続されない型回路は、図4に示す構成を有してよい。図4に示す型回路は、書込み判定部40、タイミング回路41、照合回路42、照合結果バッファ43、バッファ44乃至47、及びセレクタ48を含む。図3に示す照合コア回路が、接続先の一つの型回路に構成データ、タイミング情報、書き込み先ID情報、及び書き込み指示を供給すると、当該型回路に直列に接続される一連の型回路内をこれらのデータが伝搬していく。書込み判定部40は、書き込み指示情報と書き込み先ID情報とを前段の型回路から受け取ると、書き込み先ID情報が自らの型回路のIDに一致するか否かを判定する。IDが一致する場合、書込み判定部40は、タイミング回路41と照合回路42とに書き込み指示をする。
上記書き込み指示を受けて、タイミング回路41には、前段の型回路から供給されるタイミング情報が格納される。これにより、タイミング回路41は、適切な照合対象データに対して照合回路42が照合を実行するように、照合回路42の照合動作のタイミングを制御する。また上記書き込み指示を受けて、照合回路42には、前段の型回路から供給される書き込み用回路データ即ち構成データが格納される。これにより、照合回路42は、構成データに対応する正規表現パターンの一部と照合対象データとの照合を実行することができる。照合対象データは、前段の型回路からストリームデータとして一文字ずつ照合回路42に供給される。
照合回路42は、構成データに応じて第1の動作モード或いは第2の動作モードの何れかで動作するように設定される。第1の動作モードでは、前段の型回路からの照合対象データと正規表現パターンの一部との照合により得られた結果と前段の型回路からの照合結果とに応じて、後段の型回路に供給する照合結果を生成する。第2の動作モードでは、前段の型回路からの前記照合対象データと正規表現パターンの一部との照合により得られた結果に応じて、前段の型回路からの照合結果に依存することなく、後段の型回路に供給する照合結果を生成する。照合回路42が生成した照合結果は、出力部25(図2)に供給される。このとき、タイミング回路41からタイミング情報も出力部25に供給される。なお前段の型回路からの照合結果は、照合結果バッファ43に格納され、照合結果バッファ43から照合回路42に供給される。
前段の型回路からの書き込み指示情報と書き込み先ID情報とは、バッファ44を介して後段の型回路に供給される。前段の型回路からの書き込み用回路データとタイミング情報とは、バッファ45を介して後段の型回路に供給される。前段の型回路からの照合対象データ(ストリームデータ)は、バッファ46を介して後段の型回路に供給される。照合回路42が求めた照合結果又は前段の型回路から供給された照合結果の何れかが、タイミング回路41からの指示に応じてセレクタ48により選択され、バッファ47を介して後段の型回路に供給される。
なお図4に示す型回路は、時分割式の型回路であり、複数所定個の連続する動作サイクルのうち一つの動作サイクルでのみ照合を行う。図2に示す照合処理回路の各部は、共通のクロック信号に同期して各クロックサイクルで所定の動作を実行することにより、照合処理を行う。時分割型の型回路を用いる場合、図2の複数の型回路22−1乃至22−28のうち連続する複数所定数個の型回路(同一の照合対象データを照合する型回路)は、複数所定個の連続する動作サイクルのうち互いに異なる動作サイクルで照合を行うことになる。
この複数所定個の連続する動作サイクルとは、例えば2つの連続する動作サイクルである。この場合、一つの型回路は、偶数サイクル又は奇数サイクルの何れか一方において照合動作を行う。
例えば、図2において型回路22−13乃至22−19が、照合コア回路20−1からの第1の照合対象データと照合コア回路20−2からの第2の照合対象データとを受け取る場合を考える。この場合、例えは、照合コア回路20−1から偶数サイクルで第1の照合対象データを送出し、照合コア回路20−2からも偶数サイクルで第2の照合対象データを送出するように設定する。この設定により、例えば型回路22−14は、偶数サイクルで第1の照合対象データを受け取り、奇数サイクルで第2の照合対象データを受け取ることになる。また例えば次段の型回路22−15は、奇数サイクルで第1の照合対象データを受け取り、偶数サイクルで第2の照合対象データを受け取ることになる。従って、時分割式の各型回路において、偶数サイクル又は奇数サイクルの何れにおいて照合回路42による照合を行うかをタイミング回路41により制御することにより、第1の照合対象データ又は第2の照合対象データの所望の一方に対する照合を行うことができる。即ち各型回路は、複数所定個(2個)の連続する動作サイクルのうち一つの動作サイクルでのみ照合を行う。そして、複数の型回路22−1乃至22−28型回路のうち連続する複数所定数個(2個)の型回路(同一の照合対象データを照合する型回路)は、複数所定個(2個)の連続する動作サイクルのうち互いに異なる動作サイクルで照合を行う。
上記の複数所定個の連続する動作サイクルとは、2つの連続する動作サイクルである必要はなく、任意の数であってよい。例えば、一つの型回路は、第1乃至第3の照合対象データを受け取り、3個の連続する動作サイクルのうち一つの動作サイクルでのみ照合を行うように設定されてよい。この場合、複数の型回路22−1乃至22−28型回路のうち連続する3個の型回路(同一の照合対象データを照合する型回路)は、3個の連続する動作サイクルのうち互いに異なる動作サイクルで照合を行うことになる。
図5は、型回路の構成の一例を示す図である。図2に示す型回路のうち照合コア回路に接続される型回路は、図5に示す構成を有してよい。図5において、図4と同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。図5に示す型回路は、書込み判定部40A、タイミング回路41、照合回路42、照合結果バッファ43、バッファ44乃至47、セレクタ48、並びにセレクタ49−1及び49−2を含む。
図5の型回路は、前段の型回路だけでなく照合コア回路にも接続されるので、書込み判定部40Aは、前段の型回路及び照合コア回路の各々から書き込み先ID情報及び書き込み指示を受け取る。前段の型回路からの書き込み指示を受け取った場合には、書込み判定部40Aは、セレクタ49−1により前段の型回路からの書き込み用回路データ(構成データ)とタイミング情報とを選択する。また照合コア回路からの書き込み指示を受け取った場合には、書込み判定部40Aは、セレクタ49−1により照合コア回路からの書き込み用回路データ(構成データ)とタイミング情報とを選択する。また書込み判定部40Aは、バッファ44への入力も同様にして選択する。これにより、タイミング回路41、照合回路42及びバッファ44には、前段の型回路からの書き込み指示であるか照合コア回路からの書き込み指示であるかに応じて、適切な設定がなされる。
また照合動作時には、タイミング回路41は、設定されたタイミング情報に応じてセレクタ49−2により、照合コア回路からの照合対象データ又は前段の型回路からの照合対象データの何れかを選択し、照合回路42に供給する。これにより、照合回路42により適切な照合対象データを対象とした照合が実行される。
図6は、型回路の構成の別の一例を示す図である。図2に示す型回路のうち、照合コア回路に接続されない型回路は、図6に示す構成を有してよい。図6に示す型回路は、書込み判定部50、タイミング回路51、照合回路52、照合結果バッファ53、バッファ54乃至57、及びセレクタ58−1乃至58−4を含む。図6に示す型回路は、全ての動作サイクルで照合を行ってよい。
図6の型回路は、複線方式の型回路である。この型回路では、型回路間を接続する信号線として、複数の照合コア回路を起源とする複数の同一種のデータを伝達する複数並列の信号線を設ける。前述のように、図3に示す照合コア回路が、接続先の一つの型回路に構成データ、タイミング情報、書き込み先ID情報、及び書き込み指示を供給すると、当該型回路に直列に接続される一連の型回路内をこれらのデータが伝搬していく。例えば3つの照合コア回路からのデータが並列に各型回路を伝搬していくように設計した場合、図6に信号線59−1乃至59−4として示されるように、同一種のデータを伝達する信号線が3本(3セット)並列に設けられることになる。
書込み判定部50は、3セットの書き込み指示情報と書き込み先ID情報とを前段の型回路から受け取ると、何れかのセットの書き込み先ID情報が自らの型回路のIDに一致するか否かを判定する。IDが一致する場合、書込み判定部50は、タイミング回路51と照合回路52とに書き込み指示をすると共に、セレクタ58−2に対して、IDが一致したセットに対応する書き込み用回路データ及びタイミング情報を選択するように指示する。書き込み指示を受けて、タイミング回路51には、前段の型回路から供給されるタイミング情報が格納される。これにより、タイミング回路51は、適切な照合対象データに対して照合回路52が照合を実行するように、セレクタ58−3により照合回路52の照合対象データを選択する。また上記書き込み指示を受けて、照合回路52には、前段の型回路から供給される書き込み用回路データ即ち構成データが格納される。これにより、照合回路52は、構成データに対応する正規表現パターンの一部と照合対象データとの照合を実行することができる。照合対象データは、前段の型回路からストリームデータとして、セレクタ58−3を介して一文字ずつ照合回路52に供給される。
照合回路52は、構成データに応じて前記第1の動作モード或いは第2の動作モードの何れかで動作するように設定される。第1の動作モードでは、前段の型回路からの照合対象データと正規表現パターンの一部との照合により得られた結果と前段の型回路からの照合結果とに応じて、後段の型回路に供給する照合結果を生成する。第2の動作モードでは、前段の型回路からの前記照合対象データと正規表現パターンの一部との照合により得られた結果に応じて、前段の型回路からの照合結果に依存することなく、後段の型回路に供給する照合結果を生成する。なお前段の型回路から供給される照合結果のうち、照合対象データに一致する照合結果が、タイミング回路51により制御されるセレクタ58−4を介して照合結果バッファ53に供給され、照合結果バッファ53から照合回路52に供給される。照合回路52が生成した照合結果は、出力部25(図2)に供給される。このとき、タイミング回路51からタイミング情報も出力部25に供給される。
前段の型回路からの書き込み指示情報と書き込み先ID情報とは、バッファ54を介して後段の型回路に供給される。前段の型回路からの書き込み用回路データとタイミング情報とは、バッファ55を介して後段の型回路に供給される。前段の型回路からの照合対象データ(ストリームデータ)は、バッファ56を介して後段の型回路に供給される。照合回路52が求めた照合結果又は前段の型回路から供給された照合結果の何れかが、タイミング回路51からの指示に応じてセレクタ58−1により選択され、バッファ57を介して後段の型回路に供給される。
図7は、型回路の構成の別の一例を示す図である。図2に示す型回路のうち照合コア回路に接続される型回路は、図7に示す構成を有してよい。図7において、図6と同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。図7に示す型回路は、基本的に、図6に示す型回路と、構成及び動作は同様である。但し、前段の型回路から供給される3セットの信号(例えば書き込み用回路データ及びタイミンク情報)のうち、一セットの信号は用いることなくそのまま破棄される。破棄されたセット以外の残りの2セットの信号及び照合コア回路からの1セットの信号から、当該型回路にて処理される1セットが選択して使用される。
図8は、型回路の構成の別の一例を示す図である。図2に示す型回路のうち、照合コア回路に接続されない型回路は、図8に示す構成を有してよい。図8に示す型回路は、書込み判定部60、タイミング回路61、照合回路62、照合結果バッファ63、バッファ64乃至67、及びセレクタ68−1乃至68−4を含む。図8に示す型回路は、構成としては図6に示す型回路と同一の構成であり、図8に示す型回路の各部は図6示す型回路の各部と同一の動作を実行する。
但し、図8に示す型回路は複線式且つ時分割式の型回路であり、複数所定個の連続する動作サイクルのうち一つの動作サイクルでのみ照合を行う。図2に示す照合処理回路の各部は、共通のクロック信号に同期して各クロックサイクルで所定の動作を実行することにより、照合処理を行う。複線式且つ時分割式の型回路を用いる場合、図2の複数の型回路22−1乃至22−28のうち連続する複数所定数個の型回路(同一の照合対象データを照合する型回路)は、複数所定個の連続する動作サイクルのうち互いに異なる動作サイクルで照合を行うことになる。これにより、例えば3セットの複線化された並列配線と2サイクル(偶数及び奇数サイクル)での時分割により、6(=3×2)個の異なる照合コア回路からのデータに対する選択的な照合処理を実行することができる。複線式の各部動作及び時分割式の各部動作については、前述の型回路と同様であり、その説明は省略する。
図9は、型回路の構成の別の一例を示す図である。図2に示す型回路のうち照合コア回路に接続される型回路は、図9に示す構成を有してよい。図9において、図8と同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。図9に示す型回路は、基本的に、図8に示す型回路と、構成及び動作は同様である。但し、型回路が選択するデータには、当該型回路に直接に接続される照合コア回路からのデータも含まれる。なお図7の型回路では、最終配線のデータは全て破棄しているが、図9の型回路では、最終配線のデータにはT個(T:時分割数)の異なる照合コア回路からのデータが伝搬しているので、当該配線のデータを全て破棄することはできない。タイミング回路61等の選択動作により、前段の型回路から供給されるT×3個の信号のうち、一つの信号は用いることなくそのまま破棄し、その信号の位置に、直接接続される照合コア回路からの信号を代わりに挿入することになる。
図10は、型回路に設けられた照合回路の構成の一例を示す図である。図10に示す照合回路は、メモリ回路70、AND回路71及びOR回路72を含む。メモリ回路70は、RAM(Random Access Memory)等であり、16進数で表現したアドレス0x00乃至0xFFに論理値0又は論理値1の何れかが格納されている。このメモリ回路70の例では、アドレス0x43及び0x44において論理値1であり、それ以外のアドレスにおいて論理値0となっている。このメモリ回路70に、照合対象データとして供給されたアスキーコード一文字をアドレスとして入力すると、そのアドレスに格納される論理値1又は0が読み出される。図10の例では、0x43及び0x44であるアスキーコード文字(即ち「C」又は「D」)が照合対象データとして供給されると、メモリ回路70は論理値1を出力する。それ以外の文字が照合対象データとして供給されると、メモリ回路70は論理値0を出力する。
前述のように、照合回路は、構成データに応じて第1の動作モード或いは第2の動作モードの何れかで動作するように設定される。第1の動作モードでは、OR回路72の一方の入力が0に固定される。この場合、AND回路71は、OR回路72を介して、前段の型回路から照合結果バッファを介して供給される照合結果を一方の入力に受け取る。AND回路71は、前段の型回路からの照合結果とメモリ回路70の出力論理値との論理積を演算する。演算結果が、照合回路の照合結果として出力される。即ち、第1の動作モードでは、前段の型回路からの照合対象データと正規表現パターンの一部との照合により得られた結果と前段の型回路からの照合結果とに応じて、後段の型回路に供給する照合結果を生成する。
第2の動作モードでは、OR回路72の一方の入力が1に固定される。この場合、AND回路71は、メモリ回路70の出力論理値を、照合回路の照合結果としてそのまま出力する。即ち、第2の動作モードでは、照合対象データと正規表現パターンの一部との照合により得られた結果(メモリ回路70の出力)に応じて、前段の型回路からの照合結果に依存することなく、後段の型回路に供給する照合結果を生成する。
図11は、照合処理回路の回路設計時に実行する事前設定の処理手順を示すフローチャートである。この処理は、設計者又は設計用計算機等によって実行される。この処理により、各型回路において照合対象データが伝搬していく一つ又は複数の信号経路に対して、複数の照合コア回路を時分割又は複線化により事前に割り当てる。この事前設定の割り当てにより、何れの照合コア回路を起源とする照合対象データが何れの信号経路を伝搬していくのか、及び、何れの型回路を伝搬していくのかが決定される。
なお図11及び以降のフローチャートにおいて、フローチャートに記載された各ステップの実行順序は一例にすぎず、本願の意図する技術範囲が、記載された実行順序に限定されるものではない。例えば、Aステップの次にBステップが実行されるように本願に説明されていたとしても、Aステップの次にBステップを実行することが可能なだけでなく、Bステップの次にAステップを実行することが、物理的且つ論理的に可能である場合がある。この場合、どちらの順番でステップを実行しても、当該フローチャートの処理に影響する全ての結果が同一であるならば、本願に開示の技術の目的のためには、Bステップの次にAステップが実行されてもよいことは自明である。Aステップの次にBステップが実行されるように本願に説明されていたとしても、上記のような自明な場合を本願の意図する技術範囲から除外することを意図するものではなく、そのような自明な場合は、当然に本願の意図する技術範囲内に属する。
ステップS1で、照合コア回路と接続している型回路を選択する。ステップS2で、選択した型回路の出力および次の型回路の入力における時分割若しくは複線化又はその両方にて分けられた領域にその領域数分の最も近い照合コア回路をそれぞれ割り当てる。これにより、照合コア回路と接続している型回路に対して、複数の照合コア回路が割り当てられる。
ステップS3で、次の型回路を選択する。ステップS4で、選択した型回路が初めに選択した型回路であるか否かを判定する。即ち、処理対象の型回路が、型回路のループを一周して最初の型回路に戻ったか否かを判定する。Yesの場合には、処理を終了する。Noの場合には、ステップS5で、選択された型回路が照合コア回路と接続されているか否かを判定する。
ステップS5の判定において選択された型回路が照合コア回路と接続されていない場合、ステップS6に進む。ステップS6で、選択した型回路の出力および次の型回路の入力における時分割若しくは複線化又はその両方にて分けられた領域に前の型回路と同じ配線で次のタイミングに対応する照合コア回路を割り当てる。ステップS5の判定において選択された型回路が照合コア回路と接続されている場合、ステップS7に進む。ステップS7で、選択した型回路の出力および次の型回路の入力における時分割若しくは複線化又はその両方にて分けられた領域に前型回路と配線番号+1の配線で次のタイミングに対応する照合コア回路を割り当てる。但し、一番遠い照合コア回路を割り当てられることになる配線には、当該型回路に接続されている照合コア回路を割り当てる。
図12は、図2に示す型回路管理部24の処理の一例を示すフローチャートである。型回路管理部24は、ある照合コア回路から回路準備要求(即ち型回路利用要求)を受け取ると、図12に示す処理を実行することにより、当該照合コア回路に対して割り当てる型回路を選択し、選択された型回路を照合コア回路に通知する。
ステップS11で、型回路管理部24は、照合コア回路から回路準備要求と正規表現サイズとを受け取る。ステップS12で、型回路管理部24は、当該照合コア回路と直接に接続されている型回路を対象型回路とする。ステップS13で、型回路管理部24は、対象型回路が使用済みであるか否か(即ち既に照合コア回路に割り当て済みであるか否か)を判定する。
ステップS13での判定により対象型回路が使用済みでないことが判明した場合、ステップS14で、型回路管理部24は、対象型回路を開始型回路とし、型回路サイズを1とする。ステップS15で、型回路管理部24は、型回路サイズが正規表現のサイズに等しいか否かを判断する。型回路サイズが正規表現のサイズに等しくない場合、ステップS16で、型回路管理部24は、次の型回路を対象型回路とする。次にステップS17で、型回路管理部24は、対象型回路が当該照合コア回路にとって利用不可能な型回路(事前設定で当該照合コア回路に割り当てられていない型回路)であるか否かを判定する。利用不可能である場合には、ステップS24で、型回路管理部24は、正規表現パターンの書き込みを断念する。利用不可能でない(利用可能である)場合には、ステップS18で、型回路管理部24は、対象型回路が使用済み(即ち他の正規表現パターンが既に割り当てられている)であるか否かを判定する。使用済みでない場合には、ステップS19で、型回路管理部24は、型回路サイズを+1する。その後ステップS15に戻り、以降の処理を繰り返す。
ステップS13の判定により対象型回路が使用済みであることが判明した場合、又は、ステップS18の判定により対象型回路が使用済みであると判明した場合、ステップS22で、型回路管理部24は、次の型回路を対象型回路とする。次にステップS23で、型回路管理部24は、対象型回路が当該照合コア回路にとって利用不可能な型回路(事前設定で当該照合コア回路に割り当てられていない型回路)であるか否かを判定する。利用不可能である場合には、ステップS24で、型回路管理部24は、正規表現パターンの書き込みを断念する。利用不可能でない(利用可能である)場合には、ステップS13に戻り、以降の処理を繰り返す。
ステップS15の判定により型回路サイズが正規表現のサイズに等しいことが判明した場合、要求される長さ(サイズ)の正規表現パターンを書き込むだけの型回路が見つかったことになる。この場合、ステップS20で、型回路管理部24は、対象型回路を終了型回路とする。最後にステップS21で、型回路管理部24は、開始型回路と終了型回路とを照合コア回路に通知する。通知された照合コア回路は、開始型回路から終了型回路までの型回路に、正規表現パターンと照合タイミング情報とを書きこむ。
図13は、照合コア回路の動作の一例を示す図である。ステップS31で、照合コア回路は、ストリームデータ(照合対象データ)を型回路列に供給するタイミング(サイクル)であるか否かを判定する。ストリームデータを供給するタイミングである場合、ステップS32で、照合コア回路は、ストリームデータの先頭のデータを取り出し、取り出したデータを照合コア回路に直接に接続されている型回路に供給する。次にステップS33で、動作サイクルを次のサイクルに推移してから、ステップS31に戻り以降の処理を繰り返す。
ステップS31の判定によりストリームデータを供給するタイミング(サイクル)でないことが判明した場合、ステップS34で、当該サイクルでは何もしない(型回路にストリームデータを供給しない)。次にステップS33で、動作サイクルを次のサイクルに推移してから、ステップS31に戻り以降の処理を繰り返す。
例えば、時分割方式の型回路の場合には、複数所定個の連続する動作サイクルのうち所定の一つの動作サイクルでのみで、照合コア回路から型回路にストリームデータを供給してよい。例えば2サイクルで時分割する場合には、例えば偶数サイクルのみで、照合コア回路から型回路にストリームデータを供給してよい。また複線式の型回路の場合には、各サイクルで、照合コア回路から型回路にストリームデータを供給してよい。
図14は、出力部25の構成の一例を示す図である。ステップS41で、出力部25は、各型回路から照合結果を受け取る。ステップS42で、出力部25は、型回路からのタイミング情報に基づいて、型回路が照合結果を出力するタイミングであるのか否かを各型回路毎に判定する。照合結果を出力するタイミングである場合には、ステップS43で、照合結果が一致を示すか否かを判定する。照合結果が一致を示す場合には、ステップS44で、入力データストリーム(照合対象データ)が正規表現パターンに一致した旨を示す結果を出力する。次にステップS45で、動作サイクルを次のサイクルに推移してから、ステップS42に戻り以降の処理を繰り返す。
ステップS42の判定により出力タイミングではないことが判明した場合、ステップS46で、当該サイクルでは何もしない(出力部25からは何も出力しない))。次にステップS45で、動作サイクルを次のサイクルに推移してから、ステップS42に戻り以降の処理を繰り返す。
なお上記のフローにおいて、出力部25は、例えば各正規表現パターンが設定された型回路のうちの最終段の型回路を知っていてよい。当該最終段の型回路の出力する照合結果が一致を示すときにのみ、出力部25は、入力データストリーム(照合対象データ)が正規表現パターンに一致した旨を示す結果を出力してよい。また或いは、各型回路は、自らが正規表現パターンの最終部分を照合する型回路(終了型回路)であるか否かを知っており、終了型回路である場合にのみ、照合結果とタイミング情報とを出力部25に供給してもよい。この場合には、出力部25は、照合結果とタイミング情報とが出力されたときに、入力データストリーム(照合対象データ)が正規表現パターンに一致した旨を示す結果を出力してよい。
図15は、型回路の照合動作の一例を示すフローチャートである。このフローチャートに示す動作は、図4に示す型回路のように照合コア回路に接続されない時分割式の型回路により実行される。
ステップS51で、着目型回路は、ストリームデータの一部(照合対象データの一部)と前段の型回路での照合結果とを前段の型回路から受け取る。ここでストリームデータの一部(照合対象データの一部)は、例えば照合対象の一文字のデータ(例えば一文字のアスキー符号)である。ステップS52で、着目型回路のタイミング回路41が、現在の動作サイクルが照合タイミング(照合サイクル)であるのか否かを判断する。例えば2サイクルでの時分割動作の場合、着目型回路にとって、例えば偶数サイクルが照合タイミング(照合サイクル)であり、奇数サイクルが照合タイミング(照合サイクル)でないことになる。
ステップS52において現在の動作サイクルが照合タイミングでないと判断された場合、ステップS53で、着目型回路は、受け取ったデータを後段の型回路にそのまま送る。その後ステップS54で、動作サイクルが次のサイクルに推移した後、ステップS51に戻り以降の処理を繰り返す。
ステップS52において現在の動作サイクルが照合タイミングであると判断された場合、ステップS54で、照合処理を実行する。即ち、着目型回路の照合回路42は、前段の型回路から受け取った照合対象データを照合して得られる照合結果と、照合結果バッファ43に保持されている照合結果とに基づいて新たな照合結果を生成し、生成した照合結果を出力部25へ出力する。また、着目型回路は、生成した照合結果を照合対象データとともに後段の型回路へ送る。また更に、着目型回路の照合結果バッファ43には、前段の型回路から受け取った照合結果を新たに保持する。その後ステップS54で、動作サイクルが次のサイクルに推移した後、ステップS51に戻り以降の処理を繰り返す。
上記説明において、着目型回路の照合回路42は、現在の動作サイクルにおいて前段の型回路から受け取った照合対象データを照合して得られる照合結果と、照合結果バッファ43に保持されている照合結果とに基づいて新たな照合結果を生成している。このとき、照合結果バッファ43に保持されている照合結果は、前回の照合動作を実行した動作サイクルにおいて前段の型回路から受け取り照合結果バッファ43に保持されたものである。このように、現在の照合サイクルで自段にて生成された照合結果と前回の照合サイクルで前段から供給された照合結果とに基づいて新たな照合結果を求めているのは、以下の理由による。照合対象データが正規表現パターンに一致する場合、前段の型回路が照合して一致するのは、照合対象データ(文字列)の例えばK番目のデータ(K番目の文字)である。着目型回路(自段の型回路)は、このK番目のデータについての照合結果とK番目のデータとを、ある照合動作サイクル(例えばk番目の照合動作サイクル)で受け取る。しかしながら、この着目型回路が照合して一致するデータは、照合対象データ(文字列)のK+1番目のデータ(K+1番目の文字)である。このK+1番目のデータ(K+1番目の文字)を、着目型回路は、k+1番目の照合動作サイクルで受け取る。従って、着目型回路は、k番目の照合動作サイクルにおいて前段の型回路から受け取った照合結果を保持しておき、この保持した照合結果とk+1番目の照合動作サイクルでの照合結果とに基づいて、新たな照合結果を生成すればよい。
図16は、型回路の照合動作の一例を示すフローチャートである。このフローチャートに示す動作は、図5に示す型回路のように照合コア回路に接続される時分割式の型回路により実行される。
ステップS61で、着目型回路は、ストリームデータの一部(照合対象データの一部)と前段の型回路での照合結果とを前段の型回路から受け取る。ここでストリームデータの一部(照合対象データの一部)は、例えば照合対象の一文字のデータ(例えば一文字のアスキー符号)である。ステップS62で、着目型回路のタイミング回路41は、現在の動作サイクルが照合コア回路からのデータ読み込みタイミング(サイクル)であるか否かを判断する。現在の動作サイクルが照合コア回路からのデータ読み込みタイミングでない場合には、ステップS63で、タイミング回路41によりセレクタ49−2が、前段の型回路からの照合対象データを選択する。現在の動作サイクルが照合コア回路からのデータ読み込みタイミングである場合には、ステップS64で、タイミング回路41によりセレクタ49−2が、照合コア回路からの照合対象データを選択する。
ステップS65で、着目型回路のタイミング回路41が、現在の動作サイクルが照合タイミング(照合サイクル)であるのか否かを判断する。現在の動作サイクルが照合タイミングでない場合、ステップS66で、着目型回路は、選択したデータを後段の型回路にそのまま送る。その後ステップS68で、動作サイクルが次のサイクルに推移した後、ステップS61に戻り以降の処理を繰り返す。
ステップS65において現在の動作サイクルが照合タイミングであると判断された場合、ステップS67で、照合処理を実行する。即ち、着目型回路の照合回路42は、前段の型回路から受け取った照合対象データを照合して得られる照合結果と、照合結果バッファ43に保持されている照合結果とに基づいて新たな照合結果を生成し、生成した照合結果を出力部25へ出力する。また、着目型回路は、生成した照合結果を照合対象データとともに後段の型回路へ送る。また更に、着目型回路の照合結果バッファ43には、前段の型回路から受け取った照合結果を新たに保持する。その後ステップS68で、動作サイクルが次のサイクルに推移した後、ステップS61に戻り以降の処理を繰り返す。
図17は、型回路の照合動作の一例を示すフローチャートである。このフローチャートに示す動作は、図6に示す型回路のように照合コア回路に接続されない複線式の型回路により実行される。
ステップS71で、着目型回路は、複数のストリームデータの一部(複数の照合対象データの一部)と、それらに対応する照合結果とを前段の型回路から受け取る。ステップS72で、着目型回路のタイミング回路51は、自段の照合対象として割り当てられている照合コア回路を起源とする照合対象データと、それに対応する照合結果とを選択する。ステップS73で、着目型回路の照合回路52は、選択した照合対象データを照合して得られる照合結果と、照合結果バッファ53に保持されている照合結果とに基づいて新たな照合結果を生成し、生成した照合結果を出力部25へ出力する。更に、着目型回路は、生成した照合結果を、選択した照合対象データとともに後段の型回路へ送る。また更に、着目型回路の照合結果バッファ53には、選択した照合結果を新たに保持する。ステップS74で、着目型回路は、選択しなかった照合対象データ及び照合結果を後段の型回路へ送る。その後ステップS75で、動作サイクルが次のサイクルに推移した後、ステップS71に戻り以降の処理を繰り返す。
図18は、型回路の照合動作の一例を示すフローチャートである。このフローチャートに示す動作は、図7に示す型回路のように照合コア回路に接続される複線式の型回路により実行される。
ステップS81で、着目型回路は、複数のストリームデータの一部(複数の照合対象データの一部)と、それらに対応する照合結果とを前段の型回路から受け取ると共に、一つのストリームデータの一部(照合対象データの一部)を照合コア回路から受け取る。ステップS82で、着目型回路のタイミング回路51は、自段の照合対象として割り当てられている照合コア回路を起源とする照合対象データと、対応する照合結果とを選択する。ステップS83で、着目型回路の照合回路52は、選択した照合対象データを照合して得られる照合結果と、照合結果バッファ53に保持されている照合結果とに基づいて新たな照合結果を生成し、生成した照合結果を出力部25へ出力する。更に、着目型回路は、ステップS82で選択したデータの配線番号に対し、その配線番号+1の配線を介して、生成した照合結果を選択した照合対象データとともに後段の型回路へ送る。このとき、照合コア回路についてのデータは、配線番号1の配線を介して後段の型回路へ送る。また更に、着目型回路の照合結果バッファ53には、選択した照合結果を新たに保持する。ステップS84で、着目型回路は、入力側の配線番号に対して配線番号+1の配線を介して、選択しなかった照合対象データ及び照合結果を後段の型回路へ送る。なお入力側の最終配線番号の配線のデータは破棄される。その後ステップS85で、動作サイクルが次のサイクルに推移した後、ステップS81に戻り以降の処理を繰り返す。
図19は、型回路の照合動作の一例を示すフローチャートである。このフローチャートに示す動作は、図8に示す型回路のように照合コア回路に接続されない時分割式且つ複線式の型回路により実行される。
ステップS91で、着目型回路は、複数のストリームデータの一部(複数の照合対象データの一部)と、それらに対応する照合結果とを前段の型回路から受け取る。ステップS92で、着目型回路のタイミング回路61は、自段の照合対象として割り当てられている照合コア回路を起源とする照合対象データと、それに対応する照合結果とを選択する。ステップS93で、着目型回路のタイミング回路61が、現在の動作サイクルが照合タイミング(照合サイクル)であるのか否かを判断する。例えば2サイクルでの時分割動作の場合、着目型回路にとって、例えば偶数サイクルが照合タイミング(照合サイクル)であり、奇数サイクルが照合タイミング(照合サイクル)でないことになる。
ステップS93において現在の動作サイクルが照合タイミングでないと判断された場合、ステップS94で、着目型回路は、受け取ったデータを後段の型回路にそのまま送る。その後ステップS96で、動作サイクルが次のサイクルに推移した後、ステップS91に戻り以降の処理を繰り返す。
ステップS93において現在の動作サイクルが照合タイミングであると判断された場合、ステップS95で、照合処理を実行する。即ち、着目型回路の照合回路62は、選択した照合対象データを照合して得られる照合結果と、照合結果バッファ63に保持されている照合結果とに基づいて新たな照合結果を生成し、生成した照合結果を出力部25へ出力する。また、着目型回路は、生成した照合結果を照合対象データとともに後段の型回路へ送る。また更に、着目型回路の照合結果バッファ63には、選択した照合結果を新たに保持する。なお選択しなかった照合対象データ及び照合結果も、後段の型回路に送られる。その後ステップS96で、動作サイクルが次のサイクルに推移した後、ステップS91に戻り以降の処理を繰り返す。
図20は、型回路の照合動作の一例を示すフローチャートである。このフローチャートに示す動作は、図9に示す型回路のように照合コア回路に接続される時分割式且つ複線式の型回路により実行される。
ステップS101で、着目型回路は、複数のストリームデータの一部(複数の照合対象データの一部)と、それらに対応する照合結果とを前段の型回路から受け取ると共に、一つのストリームデータの一部(照合対象データの一部)を照合コア回路から受け取る。ステップS102で、着目型回路のタイミング回路61は、現在の動作サイクルが照合コア回路からのデータ読み込みタイミング(サイクル)であるか否かを判断する。現在の動作サイクルが照合コア回路からのデータ読み込みタイミングでない場合には、ステップS103に進む。ステップS103で、タイミング回路61によりセレクタ68−3が、自段の照合対象として割り当てられている配線が前段の型回路からの複数の配線中に有れば、その照合対象データと、それに対応する照合結果とを選択する。現在の動作サイクルが照合コア回路からのデータ読み込みタイミングである場合には、ステップS104で、タイミング回路61によりセレクタ68−3が、直接接続の照合コア回路からの照合対象データを選択する。なお現在の動作サイクルにおいて前段の型回路から供給される最終配線番号の配線のデータは、破棄される。この破棄されたデータの位置に、直接接続の照合コア回路からの照合対象データが挿入されることになる。
ステップS105で、着目型回路のタイミング回路61が、現在の動作サイクルが照合タイミング(照合サイクル)であるのか否かを判断する。現在の動作サイクルが照合タイミングでない場合、ステップS106で、着目型回路は、入力側の配線番号に対して配線番号+1の配線を介して、破棄していない照合対象データ及び照合結果を後段の型回路へ送る。この際、最終配線番号の配線のデータは配線番号1のデータとして、後段の型回路へ送る。なお、この配線番号1のデータの中には、直接接続の照合コア回路のデータも含まれる。その後ステップS108で、動作サイクルが次のサイクルに推移した後、ステップS101に戻り以降の処理を繰り返す。
ステップS105において現在の動作サイクルが照合タイミングであると判断された場合、ステップS107で、照合処理を実行する。即ち、着目型回路の照合回路62は、選択した照合対象データを照合して得られる照合結果と、照合結果バッファ63に保持されている照合結果とに基づいて新たな照合結果を生成し、生成した照合結果を出力部25へ出力する。更に、着目型回路は、ステップS103又はS104で選択したデータの配線番号に対し、その配線番号+1の配線を介して、生成した照合結果を選択した照合対象データとともに後段の型回路へ送る。このとき、最終配線番号の配線のデータは配線番号1の配線を介して後段の型回路へ送る。なお、入力側の配線番号に対して配線番号+1の配線を介して、選択しなかった照合対象データ及び照合結果も後段の型回路へ送られる。また更に、着目型回路の照合結果バッファ63には、選択した照合結果を新たに保持する。その後ステップS108で、動作サイクルが次のサイクルに推移した後、ステップS101に戻り以降の処理を繰り返す。
図21乃至図33は、時分割式の場合の照合対象データの伝搬の一例を示す図である。この例では、2サイクルでの時分割を想定している。図21乃至図33において、同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。
図21において、型回路131乃至143は、例えば図2示す構成のようにリング状に直列に接続された複数の型回路の一部に相当する。型回路132に照合コア回路120−1が接続され、型回路137に照合コア回路120−2が接続され、型回路142に照合コア回路120−3が接続されている。図21に示されるように、型回路132乃至136には、照合コア回路120−1からの照合対象データを照合するための第1の正規表現パターン「[AB]+.{1,3}[BC]?.*[^0]」が割り当てられている。また型回路137乃至138には、照合コア回路120−1からの照合対象データを照合するための第2の正規表現パターン「P[0]*」が割り当てられている。また型回路139乃至141には、照合コア回路120−2からの照合対象データを照合するための第3の正規表現パターン「ST?[0-9]+」が割り当てられている。また更に、型回路142には、照合コア回路120−3からの照合対象データを照合するための第4の正規表現パターン「V」が割り当てられている。
利用可能範囲150は、照合コア回路120−1が、自らの供給する照合対象データを照合させる型回路として利用可能な型回路のグループを示す。この利用可能範囲150に属する型回路のみが、照合コア回路120−1からの照合対象データを照合可能であり、この利用可能範囲150に属しない型回路が、照合コア回路120−1からの照合対象データを照合することはない。
図22は、第1サイクルの様子を示す。奇数サイクルである第1サイクルで、照合コア回路120−1、120−2及び120−3から、それぞれ対応する型回路132、137及び142に、それぞれ対応するストリームデータ(照合対象データ)の第1番目の部分を供給する。型回路132及び142は、奇数サイクルにて照合するように設定されており、それぞれ対応するストリームデータ(照合対象データ)の第1番目の部分を照合する。型回路137は、偶数サイクルにて照合するように設定されており、照合コア回路120−2からの照合対象データに対する照合は行わない。
図23は、第2サイクルの様子を示す。偶数サイクルである第2サイクルで、照合コア回路120−1、120−2及び120−3から、それぞれ対応する型回路132、137及び142には、ストリームデータは供給されない。型回路132、137及び142から、次の型回路133、138及び143に、それぞれ対応するストリームデータ(照合対象データ)の第1番目の部分が供給される。型回路133は、偶数サイクルにて照合するように設定されており、対応するストリームデータ(照合対象データ)の第1番目の部分を照合する。型回路138は、奇数サイクルにて照合するように設定されており、照合コア回路120−2からの照合対象データに対する照合は行わない。
図24は、第3サイクルの様子を示す。奇数サイクルである第3サイクルで、照合コア回路120−1、120−2及び120−3から、それぞれ対応する型回路132、137及び142に、それぞれ対応するストリームデータ(照合対象データ)の第2番目の部分を供給する。型回路132及び142は、奇数サイクルにて照合するように設定されており、それぞれ対応するストリームデータ(照合対象データ)の第2番目の部分を照合する。型回路137は、偶数サイクルにて照合するように設定されており、照合コア回路120−2からの照合対象データに対する照合は行わない。型回路133及び138から、次の型回路134及び139に、それぞれ対応するストリームデータ(照合対象データ)の第1番目の部分が供給される。型回路134及び139は、奇数サイクルにて照合するように設定されており、それぞれ対応するストリームデータ(照合対象データ)の第1番目の部分を照合する。なお型回路143の出力については、図面の範囲外となるために図示及び説明をしていない。
このようにして、照合コア回路120−1から供給される照合データは、型回路137及び138では照合されることなく、型回路139により初めて照合されることになる。
図25は第4サイクルの様子、図26は第5サイクルの様子、図27は第6サイクルの様子を示す。これらのサイクルでの動作は、上述の奇数サイクル又は偶数サイクルでの動作と同様である。但し、図27の第6サイクルでは、照合コア回路120−2に接続される型回路137及び照合コア回路120−3に接続される型回路142が、前段の型回路から照合対象データの第1の部分を受け取っている。直前の第5サイクルでは、これらの型回路137及び型回路142は、直接接続される照合コア回路120−2及び照合コア回路120−3からそれぞれ対応するストリームデータ(照合対象データ)の第3番目の部分を受け取っている。従って、型回路137は、連続した2サイクルにおいて、照合コア回路120−2からのデータと照合コア回路120−1からのデータを受け取ることになる。同様に、型回路142は、連続した2サイクルにおいて、照合コア回路120−3からのデータと照合コア回路120−2からのデータを受け取ることになる。
これ以降、例えば型回路137乃至141には、照合コア回路120−2からのデータと照合コア回路120−1からのデータとが、交互に配置されて伝搬することになる。
図28は、第7サイクルの様子を示す。奇数サイクルである第7サイクルで、照合コア回路120−1、120−2及び120−3から、それぞれ対応する型回路132、137及び142に、それぞれ対応するストリームデータ(照合対象データ)の第4番目の部分を供給する。
以降同様に、図29は第8サイクルの様子を示し、図30は第9サイクルの様子を示す。図30の第9サイクルにおいては、型回路137乃至141の全ての型回路には、照合コア回路120−2からのデータと照合コア回路120−1からのデータとが、交互に入力されている。
図31は第10サイクルの様子を示す。照合コア回路120−1からの照合対象データの第1番目の部分が、利用可能範囲150の最後の型回路141に入力されている。
図32は、第11サイクルの様子を示す。利用可能範囲150の範囲外にあり、照合コア回路120−3に接続される型回路142に、照合コア回路120−1からの照合対象データの第1番目の部分が到達している。この型回路142は、奇数サイクルにおいて照合コア回路120−3からのデータを受け取るように設定されているので、照合コア回路120−1からの照合対象データの第1番目の部分は受け取られることなく、破棄されることになる。
図33は、第12サイクルの様子を示す。型回路142から型回路143へは、照合コア回路120−3から供給された照合対象データが供給されており、照合コア回路120−1から供給された照合対象データは消滅している。
図34乃至図44は、正規表現パターンを割り当てる型回路の選択処理の一例を示す図である。図34乃至図44において、図21と同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。
図34に示すように、利用可能範囲150の型回路のうち、型回路136、139及び140において、正規表現パターンが設定されていない。この状態において、照合コア回路120−1が、正規表現パターン「[UV][0]+」を設定する型回路を要求する。この要求に応じて、以下に説明するようにして、図2に示される型回路管理部24に相当する型回路管理部が、正規表現パターン「[UV][0]+」を設定する型回路を選択する。なおこの処理は、図12のフローチャートに示す処理に相当する。
まず図35に示すように、四角枠で囲まれる型回路132を対象型回路とする。この対象型回路は使用済みである。次に図36に示すように、四角枠で囲まれる型回路133を対象型回路とする。この対象型回路は使用済みである。図37乃至図38でも同様であり、選択された対象型回路は使用済みである。
図39において、四角枠で囲まれる型回路136を対象型回路とする。この対象型回路は使用済みでない。そこで、この型回路136を開始型回路とする(図12のフローチャートのステップS14参照)。次に図40に示すように、四角枠で囲まれる型回路137を対象型回路とする。この対象型回路は使用済みである。次に図41に示すように、四角枠で囲まれる型回路138を対象型回路とする。この対象型回路は使用済みである。
その後図42において、四角枠で囲まれる型回路139を対象型回路とする。この対象型回路は使用済みでない。そこで、この型回路139を開始型回路とする。次に図43に示すように、四角枠で囲まれる型回路140を対象型回路とする。この対象型回路は使用済みでない。このとき、開始型回路139から現在の型回路140迄の型回路の数(図12のフローチャートに示す型回路サイズ)は2であり、設定対象の正規表現パターンの長さに一致する。従って、現在の対象型回路である型回路140を終了型回路とする。
以上のようにして、設定対象の型回路が選択されると、照合コア回路120−1が、型回路132乃至138を介して、正規表現パターン「[UV][0]+」を開始型回路139及び終了型回路140に書き込む。これにより、図44に示されるように、正規表現パターン「[UV][0]+」が、開始型回路139及び終了型回路140に設定される。
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。