【文献】
Sidhu, R. et al.,“Fast Regular Expression Matching using FPGAs”,The 9th Annual IEEE Symposium on Field-Programmable Custom Computing Machines (FCCM'01),2001年 4月,P.227-238
【文献】
川中洋祐、外,“パターン非依存型正規表現ストリングマッチングマシンとそのFPGA実装”,電子情報通信学会論文誌,2009年12月 1日,D Vol.J92-D, No.12,P.2159-2167
(58)【調査した分野】(Int.Cl.,DB名)
前記第1の関数処理手段は、入力された第1の動作停止要求の値に応じて、前記第1の演算を行うか否かを決定する、請求項1乃至請求項3のいずれかに記載の演算装置。
前記第2の関数処理手段は、入力された第2の動作停止要求の値に応じて、前記第2の演算を行うか否かを決定する、請求項2または請求項3のいずれかに記載の演算装置。
前記第1のイベントを保持するとともに、前記第1のイベントの保持数が0であるか否かを示す第1のイベント保持情報を出力し、前記第1のイベントを入力した順に前記第1の関数処理手段に供給する第1の保持手段と、
前記第1のイベント保持情報、及び前記第1の動作停止要求の値に基づいて前段の演算装置の演算実行を制御する第3の動作停止要求を生成する第1の動作停止要求生成手段と、を備える請求項4に記載の演算装置。
前記第1の保持手段は、前段の演算装置の演算実行結果が有効であるか否かを示す第1の有効性情報に基づいて、前記第1のイベントを前記第1の関数処理手段に供給するか否かを決定する、請求項6に記載の演算装置。
前記第2の保持手段は、前段の演算装置の演算実行結果が有効であるか否かを示す第2の有効性情報に基づいて、前記第2のイベントを前記第2の関数処理手段に供給するか否かを決定する、請求項7に記載の演算装置。
前記第1の演算結果が有効値であるか否かを示す情報と、前記第2の演算結果が有効値であるか否かを示す情報と、の論理積を演算結果の有効性を示す情報として後段の演算装置に供給し、
前記第1のデータ計算手段の実行可否状態と、前記第2のデータ計算手段の実行可否状態と、の論理積を後段の演算装置に供給する動作停止要求として出力する請求項18記載の演算装置。
前記第1及び第2のデータ処理手段の演算に要するサイクル数に基づいて、前記第1及び第2のデータ処理手段のいずれか一方の出力を遅延させる遅延手段を有する請求項18または請求項19に記載の演算装置。
第1の演算を実行して第1の結果を出力すると共に、第1のイベントに含まれる第1の入力データと前記第1のイベントを特定する第1のデータとの比較結果を第1の戻り値として出力することで、前記第1の入力データを引数とする第1の関数に規定された第1の演算を実行し、
前記第1の関数の前記第1の戻り値を使用して、前記第1のイベントを検出する、演算実行方法。
前記イベントからなるイベント列を入力とし、前記第1の関数及び1回以上の前記第1の関数の演算を記述する繰り返しを記述する演算子を含む正規表現の演算を実施する請求項24記載の演算実行方法。
前記入力データを引数とする前記第1の関数に規定された演算は、前記入力データを格納、比較又は演算する処理である、請求項24乃至28のいずれか1項記載の演算実行方法。
第1の演算を実行して第1の結果を出力すると共に、第1の入力データと第1のデータとの比較結果を第1の戻り値として出力することで、前記第1の入力データを引数とする第1の関数に規定された第1の演算を実行する第1のデータ処理と、
前記第1の関数の前記第1の戻り値を使用して、1以上の前記第1の入力データを含む第1のイベントを検出する第1の制御処理とを、コンピュータに実行させるプログラム。
前記イベントからなるイベント列を入力とし、前記第1の関数及び1回以上の前記第1の関数の演算を記述する繰り返しを記述する演算子を含む正規表現の演算を実施する請求項30記載のプログラム。
前記入力データを引数とする前記第1の関数に規定された演算は、前記入力データを格納、比較又は演算する処理である、請求項30乃至34のいずれか1項記載のプログラム。
【発明を実施するための形態】
【0027】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。この実施の形態は、本発明を、「関数を要素とした正規表現の演算」をするものであって、複雑なイベントの検出と、マッチしたイベント列に対応して定義された計算を実現することができる演算装置、演算実行方法及びプログラムに適用したものである。
【0028】
ここで、「関数を要素とした正規表現の演算」について説明する。本実施形態における演算装置は、入力されたイベントに対して、関数ごとに定義された所定の処理を行う。所定の処理には、イベントが所定の条件に合致するか否かの検出、およびイベントを用いた所定の演算が含まれる。ここでの「イベント」とは、前述の「ある事象の発生に伴って生成された各種の情報、あるいは情報の組」を意味する。所定の検出とは、例えば、イベントに含まれる情報(以降、「イベント情報」という。)がある情報に一致するか否かの検出である。所定の演算とは、例えば、イベント情報を用いた演算である。
【0029】
複数のイベントが時系列的に入力される場合、すなわち、イベント列が入力される場合には、イベント列を構成する各イベントに対して行う、連続な処理を定義することができる。すなわち、連続する関数との意味で、「関数列」と定義することができる。関数列は、異なる処理の連続や繰返し、一方の処理のみの実行などが定義可能である。従って、文字列の場合と同様に、関数列も正規表現で表すことができる。
【0030】
このように、「関数を要素とした正規表現の演算」とは、関数において定義された、連続して実行される演算の実行順序、実行条件などを、正規表現で表したものである。
【0031】
本実施の形態においては、以下に説明するシステマティックな構成方法により、CAD(Computer Aided Design)などを用いて、演算装置の自動合成を行うことができる。さらに、従来のような特殊な言語を用いるアプローチとは異なり、手続き型言語と正規表現という、ユーザが親しみやすいインタフェースを有するため、様々な応用の開発に好適である。
【0032】
(1)本発明の実施の形態1.
本実施の形態にかかる演算装置は、1以上のデータ(以下、入力データという。)を含むデータ群(イベント)を入力とし、所定の演算を実行するものである。具体的には、イベントを入力とし、入力データを引数とする関数において規定された演算を実行し結果を出力すると共に、入力データの比較結果を戻り値として出力し、また、関数の戻り値を使用してイベントを検出する処理を実行する。
【0033】
図1は、本実施の形態にかかる演算装置を示す図である。
図1に示すように、演算装置100は、データ処理手段としてのデータパス要素3000と、制御処理手段としての制御パス要素2000とを有している。データパス要素3000は、イベント1000を構成するイベント情報を引数とする関数に規定された演算を実行する関数処理部4000を有する。制御パス要素2000は、関数の戻り値retを使用して、1以上のイベント情報を含むイベントを検出する。
【0034】
ここで、関数処理部4000は、演算を実行して結果d
0を出力するデータ計算部4001と、イベント情報又は第1のデータとの比較結果を戻り値retとしての制御パス要素2000に出力する制御比較部4002とを有する。以下、本実施の形態にかかる演算装置について更に具体的に説明する。
【0035】
図2は、本実施の形態にかかる演算装置であって、
図1に示す演算装置の一具体例を示す図である。
図2に示すように、演算装置には、1以上の入力データを有するイベント1000が入力される。ここでの入力データは、上述のイベント情報に相当する。この演算装置1は、関数の演算処理を実施する関数処理部4000を有するデータ処理手段としてのデータパス要素3000と、関数の戻り値retを使用してイベントを検出する制御処理手段としての制御パス要素2000とを有する。
【0036】
関数処理部4000は、入力データを引数とする、関数に規定された演算を実行し、出力するデータ計算部(後述)と、入力データの比較結果を前記戻り値として制御パス要素2000に出力する制御比較部(後述)とを有する。データ計算部は、入力データを格納、比較又は演算して出力する。
【0037】
関数処理部4000は、ユーザに指定された関数ごとに定義された演算を実行するもので、イベント1000及び入力引数inを入力とし、戻り値retを出力し、出力引数outを出力する。ここで、入力inは、例えば前段の演算結果d
iの一部がMUX100で選択された値であり、演算結果d
iのうち不要なものは関数処理部4000に入力されず、レジスタ102を介して、関数処理部4000の演算結果outと共に出力d
0として出力される。
【0038】
また、制御パス要素2000は、関数処理部4000の戻り値retと、直前の要素の真偽値との論理積をとる回路AND101と、AND101の結果を格納するレジスタ103とから構成される。データパス要素3000は、関数処理部4000に加え、直前の計算結果のうち、関数処理部4000に必要とされる引数を与え、必要でない引数をバイパスするマルチプレクサMUX100と、関数処理部4000の出力結果及びバイパスされたデータを格納するレジスタ102とから構成される。
【0039】
ここで、関数の戻り値retは、入力されたイベント1000をチェックした結果、イベントに含まれる入力データがイベントを特定する所定のデータであるか、すなわちある特定のイベントが発生したか否かの真偽値を示す。一方、個々の引数に対しては、イベント1000に含まれるイベント情報を用いた所定の演算の結果の参照ないし格納がなされる。
【0040】
図3は、本実施の形態にかかる関数処理部4000の詳細を示す図である。
図3に示すように、関数処理部4000は、制御比較部4001とデータ計算部4002とを有する。制御比較部4001は、データ計算部4002で行われた演算の結果又は演算の途中の計算値と、イベント1000とから、当該イベントが発生したか否かを戻り値retとして出力する。一方、データ計算部4002は、直前の計算結果を引数inとして持ち、イベント1000に基づいて関数に規定される所定の演算を実施し、引数outに演算結果を出力する。なお、制御比較部4001には、少なくともイベント1000が入力されればよい。また、データ計算部4002は、関数に規定される演算によっては、イベント1000のみを引数としてもよい。
また、関数に規定される演算の内容は特に限定されない。例えば、演算は、所定の文字又は文字列との比較であってもよい。さらに、演算は、何も処理をしないものであってもよい。すなわち、演算は、直前の計算結果を引数in、または入力データを単に格納し、そのまま引数outとして出力するものであってもよい。
【0041】
例えば、関数処理部4000の制御比較部4001でイベントが検出されると、戻り値retとして1が出力される。このとき、制御パス要素2000に入力する信号ciを1に設定しておけば、制御パス要素2000は、イベントが発生した場合に、イベント検出結果信号c
0にイベントが検出されたことを示す"1"を出力することができる。同時に、イベントに対してデータ計算部4002で演算を実行して出力outを通して結果信号d
0として出力することができ、イベントが検出された場合の演算結果を得ることができる。
【0042】
ここで、上述の文字列についての正規表現においては、計算に資する引数がない。従って、文字列の照合処理は、単純に内部で該当文字が与えられたどうかを比較して戻り値として返す関数とみなすことができる。
これに対し、本実施の形態においては、関数処理部4000にて処理される、少なくとも1つの関数は、引数を有する関数として定義される。このため、本実施の形態においては、イベント列(単独のイベントも含む。)を検出するのみではなく、個々のイベントに対して実行すべき演算を定義することができる。
従って、この演算装置を組み合わせることによって、複雑なイベント列を検出し、必要に応じて個々のイベントに所定の演算を実行することができる演算装置を構成することができる。以下の実施の形態においてその詳細を説明する。
【0043】
(2)本発明の実施の形態2.
次に、本発明の実施の形態2について説明する。本実施の形態においては、イベントからなるイベント列を入力とし、1以上の関数と演算子とを含む正規表現の演算を実施する演算装置について説明する。
【0044】
図4は、本実施の形態にかかる演算子を説明する図である。
図4に示すように、演算子としては、一の関数の後に次の関数の演算の実行を記述する連接、2つの関数のいずれの演算の結果を選択するかを記述する和、又は1回以上の関数の演算の連続した実行を記述する繰り返し等がある。
【0045】
ここで、「グルーピング」は、関数と演算子の曖昧性解決のために便宜的に設けられた記法である。つまり、関数列がe1e2|e3e4と書かれた場合、この関数列がe1の連接として、e2とe3の和があり、さらにその連接としてe4があるのか、あるいは、e1とe2の連接と、e3とe4の連接と、両者の和であるのかを判別するために用いられる。関数列が前者を意味する場合は、関数列はe1(e2|e3)e4と記述される。関数列が後者を意味する場合は、関数列は(e1e2)|(e3,e4)として記述される。すなわち、グルーピングは、関数列の意味の解釈に必要な表現記法であり、本質的に特定の回路要素にマップされるわけではない。
【0046】
本実施の形態では、関数列は正規表現を用いて表現される。そして、関数列を構成する個々の関数は、イベントを入力とし、すなわち、正規表現で表現される関数列の個々の関数のうち、少なくとも1つの関数は1以上の引数を有する。イベントに含まれる入力データの一部又は全部が関数の引数となるが、関数が前段の演算装置における1以上の演算結果を参照する場合はこれも引数となる。そして、関数は、戻り値としてある特定の入力データが検出されたか否かを示す真偽値を出力する。
【0047】
ここで、本実施の形態にかかる演算装置おいては、複数の入力データを含むイベントがイベント列として入力される。例えば、演算装置は、入力されるイベント列から、ある特定のイベント列を検出すると共にその際の演算結果を出力する。ここで、イベントとは、前述のように、ある一事象に付随して発生したデータ(イベント情報)からなることを意味する。イベントの具体例には、イベント情報として、例えば、患者の名前、薬の名前、薬の量、薬を飲む時間、体温等がある。この場合、演算装置は、ある患者Aが薬B1、B2、B3をこの順に飲んだ場合を検出対象のイベント列として検出する。そして、演算装置は、個々のイベントに対して実行される関数からなる関数列で定義された演算の結果として、例えば平均体温を出力することができる。
【0048】
イベント列には、イベント情報の列、すなわち、連続する情報が含まれる。従って、イベント列の具体例には、例えば、センサーや端末等から入力されるリアルタイム情報がある。なお、本実施の形態については、イベントには複数のイベント情報(入力データ)が含まれるものとして説明するが、入力データは1つであってもよい。
【0049】
演算装置として、上述のようにイベント列を検出し、各イベントに対応した演算を実行する場合は、実施の形態1に記載の演算装置1を、検出するイベントの数だけ設けてもよい。また、複数の演算装置により一の演算装置を構成する場合、少なくとも実施の形態1に記載の演算装置1を含めばよく、他の演算装置は別の構成であってもよいことは勿論である。
【0050】
次に、上述の実施の形態1にかかる演算装置を1又は2つ使用して本実施の形態にかかる演算装置を構成する場合について説明する。
【0051】
(2−1)関数の連接
図5A及び
図5Bは、本実施の形態における演算装置によって実行される演算の、正規表現における連接を示す。本例における演算装置は、実施の形態1にかかる演算装置を2つ用いて構成されてもよい。あるいは、本例における演算装置は、制御パス要素及びデータパス要素を有する2つの演算装置からなり、少なくとも一方が実施の形態1にかかる演算装置であってもよい。
【0052】
図5A及び
図5Bに、制御パスとデータパスの各々の接続方法が示されている。
図5Aには、制御パスの接続方法が示されている。制御パスに関しては、制御パス要素2100と制御パス要素2101が直列に接続される。
図5Bには、データパスの接続方法が示されている。データパス要素に関しては、データパス要素3100とデータパス要素3101が直列に接続される。なお、各々の制御パス要素とデータパス要素は、
図4で示した正規表現の規則に従い、関数だけでなく、関数列から構成されてもよい。このように、データパス要素3101は、データパス要素3100の演算処理結果に基づき演算処理結果を出力し、制御パス要素2101は、制御パス要素2100の結果に基づき検出結果を出力する。
【0053】
(2−2)関数の和
図6A及び
図6Bは、本実施の形態における演算装置によって実行される演算の、正規表現における和を示す。本例における演算装置も、実施の形態1にかかる演算装置を2つ用いて構成されてもよい。あるいは、本例における演算装置は、制御パス要素及びデータパス要素を有する2つの演算装置からなり、少なくとも一方が実施の形態1にかかる演算装置であってもよい。
【0054】
図6A及び
図6Bに、制御パスとデータパスの各々の接続方法が示されている。
図6Aには、制御パスの接続方法が示されている。す制御パスに関しては、直前の制御パスの出力結果c
iが、制御パス要素2100と制御パス要素2101とに並列に入力される。さらに、制御パス要素2100と制御パス要素2101のそれぞれの出力c
1、c
2が、論理和(OR)202で接続される。OR202の出力C
0がイベント検出結果となる。つまり、OR202は、制御パス要素2100及び制御パス要素2101のいずれか一方以上がイベントを検出した場合にイベント列を検出したと判断する判定手段として機能する。
【0055】
図6Bには、データパスの接続方法が示されている。データパス要素に関しては、直前のデータパスの出力結果d
iが、データパス要素3200とデータパス要素3201とに並列に入力される。そして、データパス要素3200の結果d
1とデータパス要素3201の結果d
2は、マルチプレクサMUX201に接続される。マルチプレクサMUX201は、制御パス2200の出力結果c
1が1であれば、データパス要素3200の結果d
1を、制御パス2201の出力結果c
2が1であれば、データパス要素3201の結果d
2を出力する。すなわち、マルチプレクサMUX201の出力結果d
0がイベント列に対応する演算の演算結果となる。
【0056】
ここで、両制御パスの結果c
1、c
2が1である場合は、データパス要素d
1、d
2のいずれかの結果を出力する。また、両制御パスの結果c
1、c
2が0である場合は、データパス要素d
1、d
2のいずれか結果を出力してもよいし、任意の値を出力してもよい。つまり、マルチプレクサMUX201は、制御パス要素2100及び制御パス要素2101の出力結果c
1、c
2に応じてデータパス要素3200及びデータパス要素3201の演算結果d
1、d
2のいずれか一方を選択して出力する第1の選択手段として機能する。
【0057】
なお、各々の制御パス要素とデータパス要素は、
図4で示した正規表現の規則に従い、関数だけでなく、関数列から構成されてもよい。
【0058】
(2−3)関数の繰り返し
図7A及び
図7Bは、本実施の形態における演算装置によって実行される演算の、正規表現における繰り返しを示す。本例における演算装置は、実施の形態1にかかる演算装置1つを構成に含んでもよい。
【0059】
図7に、制御パスとデータパスの各々の接続方法が示されている。
図7Aには、制御パスの接続方法が示されている。制御パスに関しては、直前の制御パスの結果c
i、または1を、制御パス要素の2300に入力するマルチプレクサMUX301を備える。マルチプレクサMUX301は、制御パス要素2300の出力結果c
0が0の場合は、直前の制御パスの結果c
iを、制御パス要素2300の出力結果c
0が1の場合は、1を制御パス要素2300に入力する。つまり、マルチプレクサMUX301は、制御パス要素の2300の出力結果c
0に応じて、前段の制御パス要素の出力c
iを当該制御パス要素2300に入力するか否かを決定する第2の判定手段として機能する。
【0060】
図7Bには、データパスの接続方法が示されている。データパス要素に関しては、直前のデータパス要素の結果d
i、またはデータパス要素3300の出力結果d
0を、データパス要素3300に入力するマルチプレクサMUX302を備える。マルチプレクサMUX302は、制御パス要素2300の出力結果c
0が0の場合は、直前のデータパス要素の結果d
iを、制御パス要素2300の出力結果c
0が1の場合は、データパス要素3300の出力結果d
0を、データパス要素3300に入力する。つまり、マルチプレクサMUX302は、データパス要素3300及び前段のデータパス要素の出力結果d
0、d
iのいずれか一方を、制御パス要素2300の出力結果c
0に応じて、当該データパス要素3300に選択入力する第3の判定手段として機能する。
【0061】
なお、上述した
図2、
図6、及び
図7に示した例では、マルチプレクサ、レジスタ、論理積、又は論理和等を構成要素として説明したが、同じ論理動作を実現するものであれば、どのような回路構成であってもかまわない。
【0062】
ところで、近年、センサーや端末からのリアルタイム情報(イベント列)の処理を行う新しいサービスが提供されている。本明細書においては、イベントは、複数のイベント情報(データ)かなる構造体を用いて表現されてもよい。イベントが大量に発生した場合、いわゆる、実時間で処理するためには、通常のCPU(Central Processing Unit)だけではなく、ASIC(Application Specific Integrated Circuit)やFPGA(Field-Programmable Gate Array)といったハードウェアで、イベント処理を代替することが重要となる。ここで、上記のイベント処理を実現するには、
1)イベントがどのような順序で発生したかを検出すること(例:イベントAの後にイベントBがきて、最後にイベントCがくる)
2)所定の条件にマッチした各イベントに対して、定義された計算ができること(例:イベントAで渡された温度とイベントBで渡された温度の平均をとる)
の両者を満足することが重要である。
【0063】
上述したように、ハードウェアでこれら2つを実現することは、困難であった。これに対し、本実施の形態においては、演算装置がイベントに含まれる入力データを引数とする関数に付随する演算を実行し結果を出力すると共に、入力データの比較結果を戻り値として出力する関数処理部を備える。そのため、当該戻り値を使用してイベント列を検出できると共に、関数処理部によりイベントに対応して定義された演算を実行することができる。従って、イベント列の処理をハードウェアにより構成された演算装置で実施することで、高速に処理することができる。
なお、一方で、本願発明は、ソフトウェアで構成することも可能である。詳細は、後述する。ソフトウェアで実現することによって、演算装置にイベント処理用の専用回路を備える必要がなくなる。従って、演算装置の回路規模を削減することができる。
【0064】
(3)本発明の実施の形態3.
次に、本発明の実施の形態3について説明する。本実施の形態における演算装置は、実施の形態1にかかる演算装置2つを上述の実施の形態2における連接を用いて接続したものである。
【0065】
先ず、本実施の形態にかかる演算装置により演算する関数について説明する。
図8は、本発明の実施の形態3における正規表現の連接の例を示す。
図8に示すように、正規表現としては、sumを引数に持つAとBという関数の連接として記述されている(「RULE」の行を参照)。すなわち、関数A及び関数Bは正規表現で表現される関数列を構成している。そして、イベントは、そのイベント情報であるセンサーのID及びそのセンサーの測定した温度tempから構成される。
【0066】
ここで、関数Aは、イベント情報のうちの温度を引数sumに出力し、入力イベントのセンサーのIDが100であったら1を、異なれば0を返す。一方、関数Bは、関数Aの引数sumの値と、入力イベントの温度との和を求め、2で割ることで、2つのイベントの温度の平均値を計算する。そして、入力イベントのIDが200であれば1を、異なれば0を返す。
【0067】
図9は、
図8で示した正規表現の連接を演算処理する本実施の形態にかかる演算装置を示す図である。
図9に示すように、
図2、
図3、及び
図5の規則に従い、本実施の形態にかかる演算装置は、制御パス要素2100A、2101Bと、データパス要素3100A、301Bとを有する。データパス要素3100Aは、関数処理部4000A、及びレジスタ102Aを含み、データパス要素3101Bは、関数処理部4000B及びレジスタ102Bを含む。制御パス要素2100Aは、論理積(AND)101A、及びレジスタ103Aを含み、制御パス要素2101Bは、AND10BA、及びレジスタ103Vを含む。関数処理部4000Aは、制御比較部4001A及びデータ計算部4002Aを有し、関数4001Bは、制御比較部4001B及びデータ計算部4002Bを有する。
そして、
図2、
図3、及び
図5の規則に従い、制御パス要素2100Aと制御パス要素2101B、データパス要素3100Aと3101Bとが、それぞれ連接として接続されている。
【0068】
ここで、関数処理部4000Aの制御比較部4001Aは入力イベントのIDが100と一致するか否かを判定し、戻り値retを出力する。データ計算部4002Aは入力イベントの温度tempを出力引数sumに格納する。一方、関数処理部4000Bの制御比較部4001Bは、入力イベントのIDが200と一致するか否かを判定し、戻り値retを出力する。データ計算部4002Bは入力イベントの温度tempと関数Aの温度、具体的にはデータパス要素3100Aのレジスタ102Aに格納された値との平均をとる。なお、本例においては、制御パス要素2100Aの入力は、直前の結果がないため1に固定され、データパス要素3100Aは、前段からの入力を必要としないので、何も値が与えられていない。
【0069】
(3−1)動作1(イベント1000_1{ID=100,temp=50})
次に、本実施の形態にかかる演算装置のイベント列の処理方法について説明する。
図10は、
図9で示した正規表現における連接の演算を実施する本実施の形態にかかる演算装置の動作の一例を示す図である。
図10において、入力としてIDが100、温度が50のイベント1000_1が関数処理部4000A及び4000Bに与えられる例を示している。この結果、制御比較部4001Aの出力結果は1、データ計算部4002Aの出力結果は50、AND101Aの出力結果は1、制御比較部4001Bの出力結果は0、AND101Bの出力結果は0、データ計算部4002Bの出力結果は25となる。
【0070】
(3−2)動作2(イベント1000_2{ID=200,temp=150})
図11は、
図9で示した演算装置の動作の一例を示す図である。
図11は、
図10に示すイベント1000_1入力の後に、入力としてIDが200、温度が150のイベント1000_2が関数処理部4000A及び4000Bに与えられた例を示している。この結果、制御比較部4001Aの出力結果は0、データ計算部4002Aの出力結果は150、論理積AND101Aの出力結果は0、制御比較部4001Bの出力結果は1、論理積AND101Bの出力結果は1、データ計算部4002Bの出力結果は100となる。
【0071】
(3−3)動作3(イベント1000_3{ID=300,temp=0})
図12は、
図9で示した演算装置の動作の一例を示す図である。
図12は、
図11に示すイベント1000_2の入力後に、入力としてIDが300、温度が0のイベント1000_3が関数処理部4000A及び4000Bに与えられる例を示している。この結果、制御比較部4001Aの出力結果は0、データ計算部4002Aの出力結果は0、AND101Aの出力結果は0、制御比較部4001Bの出力結果は0、AND101Bの出力結果は0、データ計算部4002Bの出力結果は75となる。ここで、本例においては、制御パス要素2101Bのレジスタ103Bから出力されるイベント検出結果が1となり、データパス要素3101Bのレジスタ102から出力される関数A(sum)B(sum)の演算結果が100となる。すなわち、レジスタ103Bの出力が1となることから、このイベント列においてマッチが発生したことがわかり、すなわち対象のイベント列が検出されたことを示し、そのときの温度の平均値(演算結果)は、レジスタ102Bの出力結果から100とわかる。
【0072】
(3−4)動作4(イベント1000_4{ID=300,temp=0})
図13は、
図9で示した演算装置の連接の動作の一例を示す図である。
図13は、
図10に示すイベント1000_1の入力の後に、入力としてIDが300、温度が0のイベント1000_4が関数処理部4000A及び4000Bに与えられる例を示している。この結果、制御比較部4001Aの出力結果は0、データ計算部4002Aの出力結果は0、AND101Aの出力結果は0、制御比較部4001Bの出力結果は0、AND101Bの出力結果は0、データ計算部4002Bの出力結果は25となる。この場合は、入力イベント列は関数処理部4000A、4000Bにマッチしないため、レジスタ103Bの出力は0となり、イベント列は検出されない。この場合、データ計算部4002Bの出力結果は、無効なデータとして扱われ、本演算装置の正規の出力結果として採用されない。
【0073】
以上のように、本実施の形態にかかる演算装置は、従って、関数A(sum)B(sum)で記述される正規表現の演算を行い、関数に規定される比較結果にマッチしたイベント列を検出し、その際の演算結果を出力することができる。
本実施の形態にかかる演算装置は、
図2、
図3、及び
図5の規則に従い、制御パス要素2100Aと制御パス要素2101B、データパス要素3100Aと3101Bとが、それぞれ連接として接続されている。この構成により、関数A(sum)B(sum)で記述される正規表現の演算を行うことができる。また、各データパス要素3100Aと3101Bは、制御比較部4001A、4001Bを有するため、関数に規定される比較結果にマッチしたイベント列を検出することができる。更に、データ計算部4002A、4002Bを有するため、各関数に規定された演算を実行し演算結果を出力することができる。
【0074】
(4)本発明の実施の形態4.
次に本発明の実施の形態4について説明する。本実施の形態における演算装置は、実施の形態1にかかる演算装置2つを上述の実施の形態2における和を用いて接続したものである。
【0075】
図14は、本発明の実施の形態4で示した正規表現における和の例を示す図である。
図14に示すように、正規表現としては、yenを引数にもつAとBという関数の和として記述されている(「RULE」の行を参照)。そして、イベントは、イベント情報として、通貨の名称currencyと通貨量Amountから構成される。
【0076】
ここで、関数Aは、イベント情報のうちの通貨量を引数yenに出力し、入力イベントの通貨の名称が円であったら1を、異なれば0を返す。一方、関数Bは、入力イベントの通貨量に80をかけたものを引数yenに出力し、入力イベントの通過の名称がドルであったら1を、異なれば0を返す。すなわち、この例では、通貨を円に統一する例が示されている。
【0077】
図15は、
図14で示した正規表現における和の演算を実施する本実施の形態にかかる演算装置を示す図である。
図14に示すように、
図2、
図3、及び
図6の規則に従い、本実施の形態にかかる演算装置は、制御パス要素2110Aと制御パス要素2111Bが論理和(OR)212を介して、データパス要素3110Aと3111BとがマルチプレクサMUX211を介して接続されている。
【0078】
データパス要素3110Aは、関数4010A、及びレジスタ112Aを含み、データパス要素3111Bは、関数4010B、及びレジスタ112Bを含む。制御パス要素2110Aは、AND111A、及びレジスタ113Aを含み、制御パス要素2111Bは、AND111B、及びレジスタ113Bを含む。また、関数4010Aは、制御比較部4011A及びデータ計算部4012Aを有し、関数4010Bは、制御比較部4011B及びデータ計算部4012Bを有する。
【0079】
ここで、関数4010Aの制御比較部4011Aは入力イベントの通貨の名称が円と一致するか否かを検出し、戻り値retを出力する。データ計算部4012Aは入力イベントの通貨量amountを出力引数yenに格納する。一方、関数4010Bの制御比較部4011Bは、入力イベントの通貨の名称がドルと一致するか否かを検出し、戻り値retを出力する。データ計算部4012Bは入力イベントの通貨量amountに80を掛けてyenとして出力する。なお、制御パス要素2110Aと2111Bの入力は、直前の結果がないので1に固定され、データパス要素3110Aと3111Bは前段からの入力を必要としないので、何も値が与えられない。
【0080】
(4−1)動作1(イベント1010_1{currency=円,amount=100})
次に、本実施の形態にかかる演算装置のイベント列の処理方法について説明する。
図16は、
図15で示した正規表現における和の演算を実施する演算装置の動作の一例を示す図である。
図16は、入力として通貨の名称が円、通過量が100のイベント1010_1が関数4010A及び4010Bに与えられる例を示している。この結果、制御比較部4011Aの出力結果は1、データ計算部4012Aの出力結果は100、AND111Aの出力結果は1、制御比較部4011Bの出力結果は0、AND111Bの出力結果は0、データ計算部4012Bの出力結果は8000となる。
【0081】
(4−2)動作2(イベント1010_2{currency=元,amount=5})
図17は、
図15で示した正規表現における和の演算を実施する演算装置の動作の一例を示す図である。
図17は、
図16に示したイベント1010_1の入力に続き、入力として通貨の名称が元、通過量が5のイベント1010_2が関数4010A及び4010Bに与えられる例を示している。この結果、制御比較部4011Aの出力結果は0、データ計算部4012Aの出力結果は5、AND111Aの出力結果は0、制御比較部4011Bの出力結果は0、AND111Bの出力結果は0、データ計算部4012Bの出力結果は400となる。ここで、イベント検出結果を出力するOR212の出力が1となることから、入力されたイベント列においてマッチが発生、つまりイベントが検出されたことがわかる。そして、そのときの当該正規表現における演算結果、すなわち円建て通貨量は、マルチプレクサMUX211の出力結果から100とわかる。
【0082】
(4−3)動作3(イベント1010_3{currency=ドル,amount=10})
図18は、
図15で示した正規表現における和の演算を実施する演算装置の動作の一例を示す図である。
図18は、入力として通貨の名称がドル、通過量が10のイベント1010_3が関数4010A及び4010Bに与えられる例を示している。この結果、制御比較部4011Aの出力結果は0、データ計算部4012Aの出力結果は10、AND111Aの出力結果は0、制御比較部4011Bの出力結果は1、AND111Bの出力結果は1、データ計算部4012Bの出力結果は800となる。
【0083】
(4−4)動作4(イベント1010_4{currency=元,amount=5})
図19は、
図15で示した正規表現における和の演算を実施する演算装置の動作の一例を示す図である。
図19は、
図18に示したイベント1010_3の入力続き、入力として通貨の名称が元、通過量が5のイベント1010_4が関数4010A及び4010Bに与えられる例を示している。この結果、制御比較部4011Aの出力結果は0、データ計算部4012Aの出力結果は5、AND111Aの出力結果は0、制御比較部4011Bの出力結果は0、AND111Bの出力結果は0、データ計算部4012Bの出力結果は0となる。ここで、本例においても、イベント検出結果を示すOR212の出力が1となることから、入力イベント列においてマッチが発生したことがわかり、そのときの演算結果である円建て通貨量は、マルチプレクサMUX211の出力結果から800とわかる。
【0084】
(4−5)動作5(イベント1010_5{currency=元,amount=5})
図20は
図15で示した正規表現における和の演算を実施する演算装置の動作の一例を示す図である。
図20は、入力として通貨の名称が元、通過量が5のイベント1010_5が関数4010Aと4010Bに与えられる。この結果、制御比較部4011Aの出力結果は0、データ計算部4012Aの出力結果は5、AND111Aの出力結果は0、制御比較部4011Bの出力結果は0、AND111Bの出力結果は0、データ計算部4012Bの出力結果は400となる。ここで、イベントは関数4010Aと4010Bにマッチしないため、検出結果であるOR212の出力が0となり、イベント列は検出されない。この場合、データ計算部4012A、4012Bの出力結果は、共に無効なデータとして扱われ、本演算装置の正規の出力結果として採用されない。
【0085】
本実施の形態にかかる演算装置は、
図2、
図3、及び
図6の規則に従い、制御パス要素2110Aと制御パス要素2111B、データパス要素3110Aと3111Bとが、それぞれ和として接続されている。この構成により、関数A(sum)|B(sum)で記述される正規表現の演算を行うことができる。また、各データパス要素3110Aと3111Bは、制御比較部4011A、4011Bを有するため、関数に規定される比較結果にマッチしたイベント列を検出することができる。更に、データ計算部4012A、4012Bを有するため、各関数に規定された演算を実行し演算結果を出力することができる。
【0086】
(5)本発明の実施の形態5.
次に本発明の実施の形態5について説明する。本実施の形態における演算装置は、実施の形態1にかかる演算装置を2つとし上述の実施の形態2で説明した和を用いて接続したものである。
【0087】
図21は、本発明の実施の形態5で示した正規表現における繰り返しの例を示す。
図21に示すように、正規表現としては、毎秒降水量の合計totalを引数に持つ関数Aの繰り返しと、毎秒降水量の合計totalを入力とし、雨天中の積算降水量の毎秒平均を出す関数Bとの連接として記述されている(「RULE」の行を参照)。そして、イベントは、イベント情報として、天気状況weatherと毎秒降水量reinfall_amountから構成される。なお、イベントは毎秒ごとに送られると仮定する。
【0088】
ここで、関数Aは、イベント情報のうちの毎秒降水量をtotalに積算して出力し、入力イベントの天気状況が雨であったら1を、異なれば0を返す。一方、関数Bは、関数Aの毎秒降水量の積算を入力とし、get_num_eventという組込み関数により、今までのイベント数(積算秒)による平均値を出力し、入力イベントの天気状況が晴れであったら1を、異なれば0を返す。すなわち、この例では、晴れるまでの雨天中の毎秒降水量を積算し、その平均を出力する。
【0089】
図22は、
図21で示した正規表現における繰り返し演算を実施する本実施の形態にかかる演算装置を示す図である。
図22に示すように、
図2、
図3、
図5、及び
図7の規則に従い、本実施の形態にかかる演算装置は、制御パス要素2120Aと制御パス要素2121B、データパス要素3120Aと3121Bとが、上述した実施の形態2における繰り返しとして接続されている。
【0090】
データパス要素3120Aは、関数4020A、及びレジスタ122Aを含み、データパス要素3121Bは、関数4020B、及びレジスタ122Bを含む。制御パス要素2120Aは、AND121A、及びレジスタ123Aを含み、制御パス要素2121Bは、AND121B、及びレジスタ123Bを含む。また、関数4020Aは、制御比較部4021A及びデータ計算部4022Aを有し、関数4020Bは、制御比較部4021B及びデータ計算部4022Bを有する。
【0091】
ここで、関数4020Aの制御比較部4021Aは入力イベントの天気状況が雨と一致するか否かを判定し、戻り値retを出力する。データ計算部4022Aは入力イベントの毎秒降水量を積算する。一方、関数4020Bの制御比較部4021Bは入力イベントの天気状況が晴れと一致するか否かを判定し、戻り値retを出力する。データ計算部4022Bは関数Aの出力である積算毎秒降水量を積算秒数で割った、雨天時の平均毎秒降水量を出力する。なお、マルチプレクサMUX321Aへの直前値の入力は、直前の結果がないので1に固定され、マルチプレクサMUX322Aへの直前値の入力は、積算のために0に固定される。
【0092】
(5−1)動作1(イベント1020_1{weather=雨,rainfall_amount=10})
次に、本実施の形態にかかる演算装置のイベント列の処理方法について説明する。
図23は、
図22で示した正規表現における繰り返しの演算処理を実施する本実施の形態にかかる演算装置の動作の一例を示す図である。
図23は、入力として天気状況が雨、毎秒降水量が10のイベント1020_1が関数4020A及び4020Bに与えられる例を示している。この結果、制御比較部4021Aの出力結果は1、データ計算部4022Aの入力は0、データ計算部4022Aの出力結果は10、AND121Aの出力結果は1、制御比較部4021Bの出力結果は0、AND121Bの出力結果は0、データ計算部4022Bの出力結果は0となる。
【0093】
(5−2)動作2(イベント1020_2{weather=雨,rainfall_amount=20})
図24は、
図22で示した正規表現における繰り返しの演算処理を実施する本実施の形態にかかる演算装置の動作の一例を示す図である。
図24は、
図23に示すイベント1020_1に続き、入力として天気状況が雨、毎秒降水量が20のイベント1020_2が関数4020A及び4020Bに与えられる例を示している。この結果、制御比較部4021Aの出力結果は1、データ計算部4022Aの入力は10、データ計算部4022Aの出力結果は30、AND121Aの出力結果は1、制御比較部4021Bの出力結果は0、AND121Bの出力結果は0、データ計算部4012Bの出力結果は、積算秒数は1のため、30となる。
【0094】
(5−3)動作3(イベント1020_3{weather=晴れ,rainfall_amount=0})
図25は、
図22で示した正規表現における繰り返しの演算処理を実施する本実施の形態にかかる演算装置の動作の一例を示す図である。
図25は、
図24に示すイベント1020_2に続き、入力として天気状況が晴れ、毎秒降水量が0のイベントが関数4020A及び4020Bに与えられる。この結果、制御比較部4021Aの出力結果は0、データ計算部4022Aの入力は30、データ計算部4022Aの出力結果は30、AND121Aの出力結果は0、制御比較部4021Bの出力結果は1、AND121Bの出力結果は1、データ計算部4012Bの出力結果は、積算秒数は2のため、15となる。
【0095】
(5−4)動作4(イベント10_4{weather=曇り,rainfall_amount=0})
図26は、
図22で示した正規表現における繰り返しの演算処理を実施する本実施の形態にかかる演算装置の動作の一例を示す図である。
図26は、
図25に示すイベント1020_3の入力に続き、入力として天気状況が曇り、毎秒降水量が0のイベント1020_4が関数4020A及び4020Bに与えられる例を示している。この結果、制御比較部4021Aの出力結果は0、データ計算部4022Aの入力は0、データ計算部4022Aの出力結果は0、AND121Aの出力結果は0、制御比較部4021Bの出力結果は0、AND121Bの出力結果は0、データ計算部4022Bの出力結果は、積算秒数は1のため、10となる。ただし、イベント検出結果を示すレジスタ123Bの出力が1となることから、このイベント列においてマッチが発生、つまりイベントが検出されたことがわかり、そのとき平均積算毎秒降水量は、レジスタ122Bの出力結果から15とわかる。
【0096】
(5−5)動作5(イベント1010{weather=曇り,rainfall_amount=0})
図27は、
図22で示した正規表現における繰り返しの演算処理を実施する本実施の形態にかかる演算装置の動作の一例を示す図である。
図27は、
図24に示すイベント1020_1の入力に続き、入力として天気状況が曇り、毎秒降水量が0のイベント1010_5が関数4020A及び4020Bに与えられる例を示す。この結果、制御比較部4021Aの出力結果は0、データ計算部4022Aの入力は30、データ計算部4022Aの出力結果は30、AND121Aの出力結果は0、制御比較部4021Bの出力結果は0、AND121Bの出力結果は0、データ計算部4022Bの出力結果は、積算秒数は2のため、15となる。しかしながら、このイベントは関数4020Aと4020Bにマッチしないため、イベント検出結果を示すレジスタ123Bの出力は0となり、イベント列は検出されない。この場合、データ計算部4022Bの出力結果は、無効なデータとして扱われ、本演算装置の正規の出力結果として採用されない。
【0097】
本実施の形態にかかる演算装置は、
図2、
図3、
図5、及び
図7の規則に従い、制御パス要素2120Aの繰り返しと制御パス要素2121Bとが連接として接続され、データパス要素3120Aの繰り返しとデータパス要素3121Bとが連接として接続されている。この構成により、関数A(sum)+B(sum)で記述される正規表現の演算を行うことができる。また、各データパス要素3120Aと3121Bは、制御比較部4021A、4021Bを有するため、関数に規定される比較結果にマッチしたイベント列を検出することができる。更に、データ計算部4022A、4022Bを有するため、各関数に規定された演算を実行し演算結果を出力することができる。
【0098】
(6)本発明の実施の形態6.
以上の実施の形態においては、関数の戻り値は、真偽値を表す1ビットの情報である。関数の戻り値は、複数ビットに拡張されてもよい。本実施の形態においては、演算装置で実施する関数の戻り値が複数ビットである場合の例を示す。
【0099】
関数の戻り値が複数ビットで表示される具体例としては、戻り値がイベントの発生確率を意味する場合がある。すなわち、関数の戻り値は、イベントの発生の有無ではなく、イベントの発生確率を示す。イベントの発生確率は、イベントが発生した可能性と解釈することもできる。このように、各イベントの発生確率を定義することができるので、イベント列の発生確率を定義することもできる。
【0100】
イベントの発生確率を示す戻り値は、以下のようにして求めることができる。イベントに含まれるデータ(イベント情報)が物理的なゆらぎに従う値の場合、例えば、熱源での温度を表すのであれば、熱源に関する物理法則から予め計算される確率分布に従い、当該温度の発生確率を求めることができる。また、イベント情報がそのような物理法則に従わないようなデータの場合、例えば、テストの点などにおいては、ロジスティクス分布や正規分布などの、よく知られた分布を仮定し、その分布から発生確率を計算することができる。さらに、過去のイベント列で発生したデータ頻度に従って現在のイベント発生確率を計算してもよい。他にも、イベント発生確率の計算には、ベイズ法や最尤法など、統計計算・データマイニング分野で使われる手法であれば、どのような手法を用いてもかまわない。
【0101】
また、戻り値が複数ビットである場合、実施形態1乃至5のように、戻り値同士の論理演算は定義できない。複数ビットの戻り値同士の演算方法については、以下に具体例を示す。
【0102】
本実施の形態においては、ある確率以上で発生するイベント列を検出するものとして説明する。
図28は、関数の戻り値が複数ビットの場合の関数を実行する本実施の形態にかかる演算装置を示す図である。ここで、この複数ビットは、この関数のイベントの発生確率を表すものとする。イベントの発生確率を戻り値として定義した場合、
図2とは異なり、前段の制御パス要素の結果c
iと関数演算部4200からの結果の論理和AND101の代わりに、
図28に示すように、乗算器110を備える。これにより、前段の制御パス要素のイベント発生確率c
iと、本関数演算部4200からのイベント発生確率retの積を出力することで、レジスタ103は、イベント列自体の発生確率c
0を出力する。ここで、関数の戻り値retはイベントの発生確率だけにとどまらず、他の状態を表現してもよい。その場合、乗算器ではなく、異なる演算器を備えてもよい。
【0103】
このように関数の戻り値を複数ビットに定義した場合、正規表現の規則の中で、和と繰り返し規則の構成に違いが生じる。
図29A及び
図29Bは、複数ビットの戻り値を持つ関数に対する和の演算を行う場合の制御パス要素、データパス要素の接続を説明する図である。
図6A及び
図6Bとは異なり、制御パス要素2200と制御パス要素2201の結果の論理和202を行うのではなく、
図29Aに示すように、制御パス要素2200と制御パス要素2201のうち、いずれか大きい方の値を選択して出力する最大値選択演算部232を備える。これは、より大きなイベントの発生確率を出力した関数が選ばれることを意味する。
【0104】
この構成に伴い、データパス要素3200の出力d
1とデータパス要素3201の出力d
2は、制御パス要素2200、2201の出力結果c
1、c
2の大きさによって選択される(
図29B)。すなわち、出力結果c
1が大きいときは出力d
1が、出力結果c
2が大きいときは出力d
2が、最大値選択MUX231によって選択され、出力d
0として出力される。
【0105】
なお、最大値選択演算部232および最大値選択MUX231における選択条件は一例であり、上記以外の条件判断に基づいて、関数または出力結果を選択してもよい。
【0106】
図30A及び
図30Bは、複数ビットの戻り値を有する関数に対する繰り返しの演算を行う場合の制御パス要素、データパス要素の接続を説明する図である。
図7A及び
図7Bとは異なり、制御パス要素2300の入力と、データパス要素3300の入力には、MUXを用いるのではなく、イベントの発生確率がある閾値を超えているかどうかで入力を選択する閾値付MUX311、312を備える。すなわち、繰り返し発生するイベントの連続発生確率がある閾値を下回ると、例え、単体イベントとして十分の発生確率があったとしても、以降は前段からの制御パス要素及びデータパス要素の結果c
i、d
iが選択され、入力されることになる。すなわち、単体イベントの発生確率が80%であったとしても例えば10回繰り返されれば10%の確率になることを示す。
【0107】
本実施の形態においては、関数の正規表現を演算処理する演算装置において、関数の戻り値が複数ビットで表現された場合にも対応することができる。従って、イベント列の発生の有無だけでなく、イベント列の発生確率に基づく処理を行うことができる。すなわち、イベント列を構成する各イベントに対応した演算を実行し、イベント列の発生確率に基づいて、適切な演算結果を出力することができる。
【0108】
(7)本発明の実施の形態7.
次に、本発明の実施の形態7について説明する。本実施の形態にかかる演算装置は、後段に位置する演算装置から入力される動作停止要求を扱い、各演算装置における関数演算のサイクル数の違いに対応するものである。
【0109】
図31は、本実施の形態にかかる演算装置の構成を示す図である。なお、
図31において、同一名及び同一符号を付した処理部であって、以下に言及しない処理部は、実施の形態1、2と基本的に同じ処理を行う。
【0110】
本実施の形態にかかる演算装置1は、
図2に示す構成と同様に、制御パス要素2000と、データパス要素3000を有している。また、データパス要素3000は、関数処理部4000を有しており、関数処理部4000は、制御比較部4001と、データ計算部4002とを有している。
【0111】
演算装置1は、
図2の構成に加え、データパス要素3000内にレジスタ104を有する。さらに、演算装置1は、論理積AND105と、キュー106と、を有する。
【0112】
制御パス要素2000には、直前の制御パスの出力結果c
iが入力される。関数処理部4000には、直前のデータパスの出力結果d
iに加え、直前のデータパスの出力結果の有効性を示す有効性情報(以下、当該有効性情報は、0または1の値をとるデジタル信号形式で入力されるものとし、Valid信号と記載する。)v
iが入力される。Valid信号v
iは、0の場合に無効を示し、1の場合に有効を示す。
さらに、論理積AND105には、後段に位置する演算装置から出力された動作停止要求r
i(以下、当該要求は、0または1の値をとるデジタル信号形式で入力されるものとし、Ready信号と記載する。)が入力される。Ready信号r
iは、後段に位置する演算装置が動作停止を要求するか否かを示す信号であり、1の場合に動作停止を要求しないことを示し、0の場合に動作停止を要求することを示す。
演算装置1は、Ready信号r
iが0のとき、データ計算部4002の処理を停止させることができる。例えば、処理速度が遅い後段の演算装置が、演算処理の実行中に、前段の演算装置に対して0の値を持つReady信号r
iを出力する。このとき、演算装置1は、データ計算部4002の処理を停止させてもよい。そして、演算装置1は、後段の演算装置の演算処理が完了しReady信号r
iが1になるのを待って、データ計算部4002の処理を再開させてもよい。
なお、データ計算部4002の処理が完了していないときは、Ready信号r
iが0であっても、演算装置1は、データ計算部4002の処理を直ちに停止させる必要はない。
このように、演算装置1は、Ready信号r
iの値に応じて、データ計算部4002の処理の停止・許可の制御を行うことができる。
【0113】
キュー106には、イベント1000が入力される。キュー106は、イベント1000を順次保持する保持手段として機能する。Valid信号v
iは、キュー106にも入力される。キュー106は、入力されたValid信号v
iの値が1(有効)の場合、先頭に位置するイベントをデータ計算部4002に入力する。また、キュー106は、イベントを保持しているかいなかを示す情報(イベント保持情報)であるempty信号(1:イベントを保持している、0:イベントを保持していない)を論理積AND105に入力する。
【0114】
論理積AND105は、empty信号またはReady信号r
iのいずれかが0である場合、前段の演算装置に0の値をもつReady信号r
0を入力する。すなわち、論理積AND105は、前段の演算装置に入力するReady信号を生成する動作停止要求生成手段として動作する。empty信号またはReady信号r
iのいずれかが0である場合、データ計算部4002は、演算の実行が不可能な状態である。それ以外の場合(empty信号とReady信号r
iの双方とも1の場合)、データ計算部4002は、演算の実行が可能な状態である。このとき、論理積AND105は、前段の演算装置に対し、データ計算部4002が演算の実行が可能であるか否かを示す実行可否状態を伝達する。
【0115】
上述の構成にすることにより、演算装置1は、後段に位置する演算装置の処理状況をReady信号により把握することができる。これにより、例えば前段の演算装置として処理速度の速い演算装置を用い、後段の演算装置として処理速度の遅い演算装置を用いて演算を行う場合であっても、前段の演算装置は、後段の演算装置に確実に演算結果を伝達することができる。従って、正常に演算を行うことができる。
【0116】
なお、
図31の構成は、前段へのReady信号の伝搬が1サイクルで終了すると仮定した構成である。AND105やキュー106の周辺の回路の構成等によってReady信号の伝搬に複数サイクル要する場合、キュー106が空になること、または後段の演算装置の演算処理が遅れることを予測する予測機構を新たに設ければ良い。当該予測機構による予測に応じて、Ready信号の値を設定することにより、Ready信号を正確に伝搬できる。
たとえば、予測機構は、自身のキュー106の構成から何クロックか後に空になること、または後段の演算装置の演算処理に何クロックか必要なことがわかっているため後段からのReady信号受信が何クロックか遅れることが予測される場合、先にReady信号を0にする
【0117】
次に、
図31に示す演算装置2つを用い、上述の実施の形態2で説明した連接を用いて接続する例について説明する。
図32は、正規表現の連接を
図31に示す演算装置2つを用いて構成した図を示す。第1の演算装置Aは、制御パス要素2130Aと、データパス要素3130Aとを有する。第2の演算装置Bは、制御パス要素2131Bと、データパス要素3131Bとを有する。
図2、
図3、及び
図5の規則に従い、制御パス要素2130Aと制御パス要素2131B、データパス要素3130Aとデータパス要素3131Bとが、それぞれ連接として接続されている。
【0118】
この際、データパス要素3130Aには、Valid信号v
iが入力され、データパス要素3130Aは、演算結果に応じてValid信号vをデータパス要素3131Bに入力する。データパス要素3131Bは、Valid信号v
0を後段の演算装置に入力する。
同様に、第2の演算装置Bには、Ready信号r
iが入力され、第2の演算装置Bは、Ready信号rを第1の演算装置Aに入力する。
【0119】
図32に示す演算装置の構成は、
図2、
図3、及び
図5の規則に従い、制御パス要素2130Aと制御パス要素2131B、データパス要素3130Aとデータパス要素3131Bとが、それぞれ連接として接続されている。この構成により、連接により記述される正規表現の演算を行うことができる。さらに、実施の形態3と同様に、関数に規定される比較結果にマッチしたイベント列の検出、及び各関数に規定されて演算の実行を行うことができる。
【0120】
次に、
図31に示す演算装置2つを用い、上述の実施の形態2で説明した和を用いて接続する例について説明する。
図33は、正規表現の和を
図31に示す演算装置2つを用いて構成した図を示す。
【0121】
第1の演算装置Aは、制御パス要素2140Aと、データパス要素3140Aとを有する。第2の演算装置Bは、制御パス要素2141Bと、データパス要素3141Bとを有する。
図2、
図3、及び
図6の規則に従い、制御パス要素2140Aと制御パス要素2141B、データパス要素3140Aとデータパス要素3141Bとが、それぞれ和として接続されている。
【0122】
ここで、
図15に示す構成に加え、第1の演算装置A及び第2の演算装置Bには、Valid信号v
i及びReady信号r
iが入力される。
第1の演算装置Aは、シフタ204に接続される。同様に、第2の演算装置Bは、シフタ205に接続される。シフタ204には、制御パス要素2140Aの制御パス出力結果c
1、データパス要素3140Aのデータパスの出力結果d
1、及びデータパス要素3140AのValid信号v
1が入力される。シフタ205には、制御パス要素2141Bの制御パス出力結果c
2、データパス要素3141Bのデータパスの出力結果d
2、及びデータパス要素3141BのValid信号v
2が入力される。
【0123】
シフタ204及びシフタ205は、第1の演算装置Aと第2の演算装置Bの演算サイクル数の違いをなくすために遅延を与える遅延手段として動作する。例えば、第1の演算装置Aの演算サイクルが第2の演算装置Bの演算サイクルよりも3サイクル少ない場合、シフタ204は、各信号に3サイクル分の遅延を与える。なお、第1の演算装置Aの演算サイクルと、第2の演算装置Bの演算サイクルが同じ場合、シフタ204及び205を備える必要はない。
【0124】
論理積AND203には、データパス要素3140AのValid信号v
1、及びデータパス要素3141BのValid信号v
2が入力される。論理積AND203は、両者(Valid信号v
1、及びValid信号v
2)が1である場合にのみ、後段の演算装置にValid信号として1を入力する。
【0125】
論理積AND206には、第1の演算装置AからのReady信号r
1、第2の演算装置BからのReady信号r
2が入力される。論理積AND203は、どちらかのReady信号が0である場合に、前段に位置する演算装置に、0の値を持つReady信号を入力する。
【0126】
図33に示す演算装置の構成は、
図2、
図3、及び
図6の規則に従い、制御パス要素2140Aと制御パス要素2141B、データパス要素3140Aとデータパス要素3141Bとが、それぞれ和として接続されている。この構成により、和により記述される正規表現の演算を行うことができる。さらに、実施の形態4と同様に、関数に規定される比較結果にマッチしたイベント列の検出、及び各関数に規定されて演算の実行を行うことができる。
【0127】
次に、
図31に示す演算装置を用いて、上述の実施の形態2で説明した正規表現における繰り返しを実現する例について説明する。
図34は、正規表現の繰り返しを
図31に示す演算装置を用いて構成した図を示す。当該演算装置は、制御パス要素2150Aと、データパス要素3150Aを有する。
【0128】
図34に示すように、演算装置に繰り返し論理400が接続されている。繰り返し論理400は、前述のマルチプレクサMUX301等を含む処理部であり、正規表現における繰り返しを制御する処理を行う。
【0129】
繰り返し論理400には、直前の制御パスの出力結果c
i、直前のデータパス要素の結果d
i、及び直前のValid信号v
iに加え、制御パス要素2150Aの出力結果c
0、データパス要素3150Aの結果d
0、及びデータパス要素3150Aの出力するValid信号v
0が入力される。
【0130】
制御パス要素2150Aの出力結果c
0が有効であり、かつ0である場合、繰り返し論理400は、前段に位置する演算装置の出力であるc
i、d
i、及びv
iを選択し、制御パス要素2150A、データパス要素3150Aに入力する。
【0131】
一方、制御パス要素2150Aの出力結果c
0が有効であり、かつ1である場合、繰り返し論理400は、制御パス要素2150Aの出力であるc
0、データパス要素3150Aの出力である、d
0、及びv
0を選択し、制御パス要素2150A、データパス要素3150Aに入力する。
【0132】
ここで、演算装置(詳細にはデータパス要素3150A)の演算処理中に、前段の演算装置から入力があると、演算装置は、その入力を処理できない。そのため、繰り返し論理400は、データパス要素3150Aによる演算の処理中には、前段の演算装置に対して供給するReady信号r
0が0になるように制御する。なお、繰り返し論理400は、後段演算装置から0の値を持つReady信号r
iが入力された場合も、前段演算装置に対して供給するReady信号r
0が0になるように制御する。
【0133】
なお、繰り返し論理400は、演算装置内に設けられても良く、演算装置外に設けられても良い。
【0134】
図34に示す構成により、繰り返しを示す正規表現の演算を行うことができる。さらに、実施の形態5と同様に、関数に規定される比較結果にマッチしたイベント列の検出、及び各関数に規定された演算の実行を行うことができる。
【0135】
(8)本発明の実施の形態8.
次に、本発明の実施の形態8について説明する。上述の説明においては、演算装置は、基本的にハードウェアであるものとして説明したが、ソフトウェア、すなわち、1以上の入力データを含むイベントを入力とする演算処理を、コンピュータに実行させるためのプログラムとすることも可能である。
【0136】
すなわち、本実施の形態にかかるプログラムは、入力データを引数とする関数に規定された演算を実行し結果を出力すると共に、入力データの比較結果を戻り値として出力する処理を関数処理部に実施させるデータ処理と、関数の戻り値を使用してイベントを検出する制御処理とを実行する。
【0137】
図35は、本実施の形態にかかるプログラムの動作を示すフローチャートの例である。
図35に示すように、イベントが入力されると(ステップS1)、プログラムはイベントに含まれる入力データを引き数とし、関数に規定された演算処理を実施する(ステップS2)。一方で、イベントに含まれる入力データが所定のデータか否かを比較する(ステップS3)。上記制御処理として、ステップS2及びS3は、第1乃至第7の実施形態では関数処理部が実行するデータ処理である。また、ステップS3における戻り値を、入力されたイベントが検出対象のイベントであるか否かを示す比較結果とし、必要であれば前段の比較結果と合わせて、所定のイベント又はイベント列が発生したか否かを検出する(ステップS4)。
【0138】
以上のようなイベント検出処理及び関数に規定された演算処理は、専用コンピュータ、又はパーソナルコンピュータ(PC)などのコンピュータにより実現可能である。但し、コンピュータは、物理的に単一である必要はなく、分散処理を実行する場合には、複数であってもよい。
図36は、本実施の形態にかかるプログラムを実行する装置の構成例を示す図である。
【0139】
図36に示すように、コンピュータ5100は、CPU5101(Central Processing Unit)と、ROM(Read Only Memory)又はRAM5103(Random Access Memory)等からなるメモリ5102を有する。尚、コンピュータを動作させるためのOS(Operation System)などが、この情報処理装置を構築するコンピュータに備えられているもよい。
【0140】
CPU5101は、メモリ5102に記憶されている各種プログラム5103をロードし、このプログラム5103に従って各種の処理を実行する。本実施の形態においては、例えば、上述のデータ処理及び制御処理等の処理を実行する。メモリ5102にはまた、CPU5101が各種の処理を実行する上において必要なデータなども適宜記憶される。
【0141】
ここで、本実施の形態にかかるプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM)を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【0142】
以上のように、本実施形態のプログラムは、すべての演算処理をソフトウェアによって処理する。このように、本発明の演算処理は、ハードウェアとしての演算装置を用いずに、ソフトウェアによって処理することも可能である。
【0143】
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【0144】
この出願は、2011年2月21日に出願された日本出願特願2011−034906、及び2011年8月24日に出願された日本出願特願2011−182707を基礎とする優先権を主張し、その開示の全てをここに取り込む。