JP5804047B2 - 演算装置及び演算実行方法 - Google Patents

演算装置及び演算実行方法 Download PDF

Info

Publication number
JP5804047B2
JP5804047B2 JP2013500710A JP2013500710A JP5804047B2 JP 5804047 B2 JP5804047 B2 JP 5804047B2 JP 2013500710 A JP2013500710 A JP 2013500710A JP 2013500710 A JP2013500710 A JP 2013500710A JP 5804047 B2 JP5804047 B2 JP 5804047B2
Authority
JP
Japan
Prior art keywords
event
function
data
calculation
result
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.)
Active
Application number
JP2013500710A
Other languages
English (en)
Other versions
JPWO2012114399A1 (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 JP2013500710A priority Critical patent/JP5804047B2/ja
Publication of JPWO2012114399A1 publication Critical patent/JPWO2012114399A1/ja
Application granted granted Critical
Publication of JP5804047B2 publication Critical patent/JP5804047B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques

Landscapes

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

Description

本発明は、イベントを処理するのに好適な演算装置及び演算実行方法に関し、特に、正規表現に基づいて、イベント処理関数の実行を制御する演算装置及び演算実行方法に関する。
図37A〜Dは、特許文献1に記載の図であり、与えられた文字列から、正規表現にマッチする文字列を検出するハードウェアの構成方法を示している。図37A〜Dには、正規表現の基本的な演算子をハードウェア化するための4つの構成パターンが図示されている。
例えば、正規表現で記述された文字列(a|b)*cでは、aとbの和(aとbの少なくとも一方が含まれることを意味する。)が0回以上、繰り返された後にcが続くような文字列を表す。従って、例えば、文字列abcdefghに対しては、文字列abcが上記の正規表現で記述された文字列にマッチする。
ここで、この正規表現を回路化する場合、まずaとbとcが図37Aに示す文字比較、すなわち、それぞれの文字に相当するかを検出する回路で置き換えられる。次に、a|bは、図3Bに示す和、すわなち、aとの文字比較回路とbとの文字比較回路を論理和を用いたパターンに従って接続する。そして、(a|b)*は、図37Dに示す繰り返し、すなわち、a|bを基礎単位とした回路を所定のパターンに従って接続する。最後に、(a|b)*cは、図37Cに示す連接、すなわち、図37Dの(a|b)*の回路とcとの文字比較回路を基礎単位とした回路を、直列に接続する。以上のように、文字比較回路を基礎単位として、文字比較回路を所定のパターンで接続することにより、どのような正規表現であってもシステマティックに回路に変換することが可能である。
上記の文字列照合回路は、一例である。正規表現を用いて、特定の関数が特定の順序で呼ばれているかどうかを判定する装置は、例えば、特許文献2にも記載されている。
さらに、関数型とは異なる特殊な言語を用いて、多量のイベントから特定の条件を満たすイベント列を検出する、非特許文献1に記載のような回路も提案されている。また、繰り返しを表現する正規表現の演算子を実現する、非特許文献2に記載のような回路も提案されている。
特開2009-093599 特開平07-262044
R.ミューラー(Mueller)他著、"Streams on Wires ― A Query Compiler for FPGAs"、Proceedings of Very Large Data Base Endowment、米国、2009年8月、第2巻issue 1、229−240ページ L.ウッズ(Woods)他著、"Complex Event Detection at Wire Speed with FPGAs"、Proceedings of Very Large Data Base Endowment、米国、2010年9月、第3巻issue 1-2、660−669ページ
後述のように、本明細書における「イベント」とは、「発生した事象」ではなく、その事象の発生に伴って生成された各種の情報を意味する。この情報は、1種類には限定されない。すなわち、ある事情の発生に伴って生成された1種類の情報または複数種類の情報の組を「イベント」という。このように、イベントは、1種類または複数種類の情報で構成される。イベントを構成する情報を、「イベント情報」という。
そして、上記のように定義された、複数個のイベントが時系列的に発生した場合、そのイベントの連なりを「イベント列」と呼ぶ。なお、便宜上、イベント列には、単独のイベントも含まれるものとする。
また、入力されるイベント列に対して、所定のイベント列を検出し、検出したイベント列に応じて所定の処理を行うことがある。イベント列に対するこのような処理を、「イベント処理」という。
イベント列の処理には、イベント列の検出が含まれる。そのため、イベント処理に特許文献1に記載された文字列照合回路を適用することも考えられる。しかしながら、特許文献1に記載の技術をイベント処理に適用した場合、以下の問題点がある。
特許文献1記載の技術は、文字の比較による文字列中の個々の文字の検出と、正規表現された文字列の検出に関しては対応可能である。個々の文字は、各文字を識別するための情報、例えば、文字の種類に関する情報のみを備える。
一方、上記のように、イベントは複数のイベント情報で構成される場合がある。そのため、特許文献1記載の技術は、本発明で取り扱うイベントの検出に適用することはできない。なぜなら、イベントを構成するイベント情報が複数種類である場合には、ある1種類のイベント情報についてのみしか、イベント情報の検出およびイベント情報の列の検出に対応することができないからである。従って、一般のイベントおよびイベント列を検出することができない。
さらに、特許文献1記載の技術では元々文字列の照合のみが想定されており、各文字に対応して何らかの演算を行うことは想定されていない。そのため、イベント列の処理への、特許文献1記載の技術の適用を図った場合、マッチしたイベント列に対応したデータ、すなわちイベント情報(例:温度など)に対して演算を行うことはできない。
以上の条件から、特許文献1記載の技術は、イベント処理に必要な2つの条件
1)イベント列を検出できること
2)イベント列に付随したデータに対して演算が実行できること
を満足することができず、結果、システマティックにイベント処理の回路を構成することはできない。
また、特許文献2に記載の技術においては、関数の呼び出し順序をソフトウェア的に検出するだけである。すなわち、関数の呼び出し順序の検出ができるだけで、マッチした正規表現されたイベント列に対応して定義された計算をすることができない。
さらに、非特許文献1に記載の技術では、繰り返しを表現するような正規表現の演算子を回路的に実現しておらず、複雑なイベント列の検出が非常に困難である。また、マッチしたイベント列に対応して定義された計算も予め固定された機能しか利用することができない。
さらにまた、非特許文献2に記載の技術では、マッチしたイベント列に対応して定義された計算手法が開示されておらず、イベント列に対応して定義された計算ができないという問題点がある。
すなわち、いずれの従来技術においても、イベント処理において、複雑なイベント列の検出と、マッチしたイベント列に対応して定義された計算とを両立することは非常に困難であるという問題点がある。
本発明は、このような問題点を解決するためになされたものであり、イベントの検出とイベント列に対応して定義された計算が可能な演算装置及び演算実行方法を提供することを目的とする。
上記目的を達成する本発明は、その概略を述べれば以下の通りである。本発明に係る演算装置は、第1のイベントに含まれる第1の入力データを引数とする第1の関数に規定された第1の演算を実行する第1の関数処理手段を有する第1のデータ処理手段と、前記第1の関数の第1の戻り値を使用して、前記第1のイベントを検出する第1の制御処理手段とを有し、前記第1の関数処理手段は、前記第1の演算を実行して第1の結果を出力する第1のデータ計算手段と、前記第1の入力データと前記第1のイベントを特定する第1のデータとの比較結果を前記第1の戻り値として前記第1の制御処理手段に出力する第1の制御比較手段とを有するものである。
本発明に係る演算実行方法は、第1の演算を実行して第1の結果を出力すると共に、第1のイベントに含まれる第1の入力データと前記第1のイベントを特定する第1のデータとの比較結果を第1の戻り値として出力することで、前記第1の入力データを引数とする第1の関数に規定された第1の演算を実行し、前記第1の関数の前記第1の戻り値を使用して、前記第1のイベントを検出する、ものである。
本発明にかかるプログラムを格納した非一時的なコンピュータ可読媒体は、第1の演算を実行して第1の結果を出力すると共に、第1のイベントに含まれる第1の入力データと前記第1のイベントを特定する第1のデータとの比較結果を第1の戻り値として出力することで、前記第1の入力データを引数とする第1の関数に規定された第1の演算を実行する第1のデータ処理と、前記第1の関数の前記第1の戻り値を使用して、前記第1のイベントを検出する第1の制御処理とを、コンピュータに実行させるプログラムを格納するものである。
本発明によれば、イベント又はイベント列の検出と、検出したイベント又はイベント列に対応して定義された計算を実現することができる演算装置、演算実行方法及びプログラムを格納した非一時的なコンピュータ可読媒体を提供することができる。
本発明の実施の形態1にかかる演算装置を示す図である。 本発明の実施の形態1にかかる関数演算を実施する演算装置を示す図である。 本発明の実施の形態1にかかる関数処理部4000の詳細を示す図である。 本発明の実施の形態2にかかる演算子を説明する図である。 本発明の実施の形態2における演算装置が演算を実施する正規表現の連接を示す図である。 本発明の実施の形態2における演算装置が演算を実施する正規表現の連接を示す図である。 本発明の実施の形態2における演算装置が演算を実施する正規表現の和を示す図である。 本発明の実施の形態2における演算装置が演算を実施する正規表現の和を示す図である。 本発明の実施の形態2における演算装置が演算を実施する正規表現の繰り返しを示す図である。 本発明の実施の形態2における演算装置が演算を実施する正規表現の繰り返しを示す図である。 本発明の実施の形態3における正規表現の連接の例を示す図である。 図8で示した正規表現の連接を演算処理する本発明の実施の形態3にかかる演算装置を示す図である。 図9で示した正規表現の連接の演算を実施する本発明の実施の形態3にかかる演算装置の動作の一例を示す図である。 図9で示した正規表現の連接の演算を実施する本発明の実施の形態3にかかる演算装置の動作の一例を示す図である。 図9で示した正規表現の連接の演算を実施する本発明の実施の形態3にかかる演算装置の動作の一例を示す図である。 図9で示した正規表現の連接の演算を実施する本発明の実施の形態3にかかる演算装置の動作の一例を示す図である。 本発明の実施の形態4における正規表現の和の例を示す図である。 図14で示した正規表現の和の演算を実施する本発明の実施の形態4にかかる演算装置を示す図である。 図15で示した正規表現の和の演算を実施する演算装置の動作の一例を示す図である。 図15で示した正規表現の和の演算を実施する演算装置の動作の一例を示す図である。 図15で示した正規表現の和の演算を実施する演算装置の動作の一例を示す図である。 図15で示した正規表現の和の演算を実施する演算装置の動作の一例を示す図である。 図15で示した正規表現の和の演算を実施する演算装置の動作の一例を示す図である。 本発明の実施の形態5における正規表現の繰り返しの例を示す図である。 図21で示した正規表現の繰り返し演算を実施する本発明の実施の形態5にかかる演算装置を示す図である。 図22で示した正規表現の繰り返しの演算処理を実施する本発明の実施の形態5にかかる演算装置の動作の一例を示す図である。 図22で示した正規表現の繰り返しの演算処理を実施する本発明の実施の形態5にかかる演算装置の動作の一例を示す図である。 図22で示した正規表現の繰り返しの演算処理を実施する本発明の実施の形態5にかかる演算装置の動作の一例を示す図である。 図22で示した正規表現の繰り返しの演算処理を実施する本発明の実施の形態5にかかる演算装置の動作の一例を示す図である。 図22で示した正規表現の繰り返しの演算処理を実施する本発明の実施の形態5にかかる演算装置の動作の一例を示す図である。 関数の戻り値が複数ビットの場合の関数を実行する本発明の実施の形態6にかかる演算装置を示す図である。 複数ビットの戻り値を持つ関数に対する和の演算を行う場合の制御パス要素の接続を説明する図である。 複数ビットの戻り値を持つ関数に対する和の演算を行う場合のデータパス要素の接続を説明する図である。 複数ビットの戻り値を有する関数に対する繰り返しの演算を行う場合の制御パス要素の接続を説明する図である。 複数ビットの戻り値を有する関数に対する繰り返しの演算を行う場合のデータパス要素の接続を説明する図である。 Ready信号、及びValid信号を扱う本発明の実施の形態7にかかる演算装置を示す図である。 本発明の実施の形態7における正規表現の連接の例を示す図である。 本発明の実施の形態7における正規表現の和の例を示す図である。 本発明の実施の形態7における正規表現の繰り返しの例を示す図である。 本発明の実施の形態8にかかるプログラムを実行する装置の一例を示す図である。 本発明の実施の形態8にかかるプログラムのイベント検出動作を示すフローチャートである。 特許文献1に記載の図であって、正規表現の基本的な演算子(文字比較)をハードウェア化するための構成パターンを示す図である。 特許文献1に記載の図であって、正規表現の基本的な演算子(和)をハードウェア化するための構成パターンを示す図である。 特許文献1に記載の図であって、正規表現の基本的な演算子(連接)をハードウェア化するための構成パターンを示す図である。 特許文献1に記載の図であって、正規表現の基本的な演算子(繰り返し)をハードウェア化するための構成パターンを示す図である。
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。この実施の形態は、本発明を、「関数を要素とした正規表現の演算」をするものであって、複雑なイベントの検出と、マッチしたイベント列に対応して定義された計算を実現することができる演算装置、演算実行方法及びプログラムに適用したものである。
ここで、「関数を要素とした正規表現の演算」について説明する。本実施形態における演算装置は、入力されたイベントに対して、関数ごとに定義された所定の処理を行う。所定の処理には、イベントが所定の条件に合致するか否かの検出、およびイベントを用いた所定の演算が含まれる。ここでの「イベント」とは、前述の「ある事象の発生に伴って生成された各種の情報、あるいは情報の組」を意味する。所定の検出とは、例えば、イベントに含まれる情報(以降、「イベント情報」という。)がある情報に一致するか否かの検出である。所定の演算とは、例えば、イベント情報を用いた演算である。
複数のイベントが時系列的に入力される場合、すなわち、イベント列が入力される場合には、イベント列を構成する各イベントに対して行う、連続な処理を定義することができる。すなわち、連続する関数との意味で、「関数列」と定義することができる。関数列は、異なる処理の連続や繰返し、一方の処理のみの実行などが定義可能である。従って、文字列の場合と同様に、関数列も正規表現で表すことができる。
このように、「関数を要素とした正規表現の演算」とは、関数において定義された、連続して実行される演算の実行順序、実行条件などを、正規表現で表したものである。
本実施の形態においては、以下に説明するシステマティックな構成方法により、CAD(Computer Aided Design)などを用いて、演算装置の自動合成を行うことができる。さらに、従来のような特殊な言語を用いるアプローチとは異なり、手続き型言語と正規表現という、ユーザが親しみやすいインタフェースを有するため、様々な応用の開発に好適である。
(1)本発明の実施の形態1.
本実施の形態にかかる演算装置は、1以上のデータ(以下、入力データという。)を含むデータ群(イベント)を入力とし、所定の演算を実行するものである。具体的には、イベントを入力とし、入力データを引数とする関数において規定された演算を実行し結果を出力すると共に、入力データの比較結果を戻り値として出力し、また、関数の戻り値を使用してイベントを検出する処理を実行する。
図1は、本実施の形態にかかる演算装置を示す図である。図1に示すように、演算装置100は、データ処理手段としてのデータパス要素3000と、制御処理手段としての制御パス要素2000とを有している。データパス要素3000は、イベント1000を構成するイベント情報を引数とする関数に規定された演算を実行する関数処理部4000を有する。制御パス要素2000は、関数の戻り値retを使用して、1以上のイベント情報を含むイベントを検出する。
ここで、関数処理部4000は、演算を実行して結果dを出力するデータ計算部4001と、イベント情報又は第1のデータとの比較結果を戻り値retとしての制御パス要素2000に出力する制御比較部4002とを有する。以下、本実施の形態にかかる演算装置について更に具体的に説明する。
図2は、本実施の形態にかかる演算装置であって、図1に示す演算装置の一具体例を示す図である。図2に示すように、演算装置には、1以上の入力データを有するイベント1000が入力される。ここでの入力データは、上述のイベント情報に相当する。この演算装置1は、関数の演算処理を実施する関数処理部4000を有するデータ処理手段としてのデータパス要素3000と、関数の戻り値retを使用してイベントを検出する制御処理手段としての制御パス要素2000とを有する。
関数処理部4000は、入力データを引数とする、関数に規定された演算を実行し、出力するデータ計算部(後述)と、入力データの比較結果を前記戻り値として制御パス要素2000に出力する制御比較部(後述)とを有する。データ計算部は、入力データを格納、比較又は演算して出力する。
関数処理部4000は、ユーザに指定された関数ごとに定義された演算を実行するもので、イベント1000及び入力引数inを入力とし、戻り値retを出力し、出力引数outを出力する。ここで、入力inは、例えば前段の演算結果dの一部がMUX100で選択された値であり、演算結果dのうち不要なものは関数処理部4000に入力されず、レジスタ102を介して、関数処理部4000の演算結果outと共に出力dとして出力される。
また、制御パス要素2000は、関数処理部4000の戻り値retと、直前の要素の真偽値との論理積をとる回路AND101と、AND101の結果を格納するレジスタ103とから構成される。データパス要素3000は、関数処理部4000に加え、直前の計算結果のうち、関数処理部4000に必要とされる引数を与え、必要でない引数をバイパスするマルチプレクサMUX100と、関数処理部4000の出力結果及びバイパスされたデータを格納するレジスタ102とから構成される。
ここで、関数の戻り値retは、入力されたイベント1000をチェックした結果、イベントに含まれる入力データがイベントを特定する所定のデータであるか、すなわちある特定のイベントが発生したか否かの真偽値を示す。一方、個々の引数に対しては、イベント1000に含まれるイベント情報を用いた所定の演算の結果の参照ないし格納がなされる。
図3は、本実施の形態にかかる関数処理部4000の詳細を示す図である。図3に示すように、関数処理部4000は、制御比較部4001とデータ計算部4002とを有する。制御比較部4001は、データ計算部4002で行われた演算の結果又は演算の途中の計算値と、イベント1000とから、当該イベントが発生したか否かを戻り値retとして出力する。一方、データ計算部4002は、直前の計算結果を引数inとして持ち、イベント1000に基づいて関数に規定される所定の演算を実施し、引数outに演算結果を出力する。なお、制御比較部4001には、少なくともイベント1000が入力されればよい。また、データ計算部4002は、関数に規定される演算によっては、イベント1000のみを引数としてもよい。
また、関数に規定される演算の内容は特に限定されない。例えば、演算は、所定の文字又は文字列との比較であってもよい。さらに、演算は、何も処理をしないものであってもよい。すなわち、演算は、直前の計算結果を引数in、または入力データを単に格納し、そのまま引数outとして出力するものであってもよい。
例えば、関数処理部4000の制御比較部4001でイベントが検出されると、戻り値retとして1が出力される。このとき、制御パス要素2000に入力する信号ciを1に設定しておけば、制御パス要素2000は、イベントが発生した場合に、イベント検出結果信号cにイベントが検出されたことを示す"1"を出力することができる。同時に、イベントに対してデータ計算部4002で演算を実行して出力outを通して結果信号dとして出力することができ、イベントが検出された場合の演算結果を得ることができる。
ここで、上述の文字列についての正規表現においては、計算に資する引数がない。従って、文字列の照合処理は、単純に内部で該当文字が与えられたどうかを比較して戻り値として返す関数とみなすことができる。
これに対し、本実施の形態においては、関数処理部4000にて処理される、少なくとも1つの関数は、引数を有する関数として定義される。このため、本実施の形態においては、イベント列(単独のイベントも含む。)を検出するのみではなく、個々のイベントに対して実行すべき演算を定義することができる。
従って、この演算装置を組み合わせることによって、複雑なイベント列を検出し、必要に応じて個々のイベントに所定の演算を実行することができる演算装置を構成することができる。以下の実施の形態においてその詳細を説明する。
(2)本発明の実施の形態2.
次に、本発明の実施の形態2について説明する。本実施の形態においては、イベントからなるイベント列を入力とし、1以上の関数と演算子とを含む正規表現の演算を実施する演算装置について説明する。
図4は、本実施の形態にかかる演算子を説明する図である。図4に示すように、演算子としては、一の関数の後に次の関数の演算の実行を記述する連接、2つの関数のいずれの演算の結果を選択するかを記述する和、又は1回以上の関数の演算の連続した実行を記述する繰り返し等がある。
ここで、「グルーピング」は、関数と演算子の曖昧性解決のために便宜的に設けられた記法である。つまり、関数列がe1e2|e3e4と書かれた場合、この関数列がe1の連接として、e2とe3の和があり、さらにその連接としてe4があるのか、あるいは、e1とe2の連接と、e3とe4の連接と、両者の和であるのかを判別するために用いられる。関数列が前者を意味する場合は、関数列はe1(e2|e3)e4と記述される。関数列が後者を意味する場合は、関数列は(e1e2)|(e3,e4)として記述される。すなわち、グルーピングは、関数列の意味の解釈に必要な表現記法であり、本質的に特定の回路要素にマップされるわけではない。
本実施の形態では、関数列は正規表現を用いて表現される。そして、関数列を構成する個々の関数は、イベントを入力とし、すなわち、正規表現で表現される関数列の個々の関数のうち、少なくとも1つの関数は1以上の引数を有する。イベントに含まれる入力データの一部又は全部が関数の引数となるが、関数が前段の演算装置における1以上の演算結果を参照する場合はこれも引数となる。そして、関数は、戻り値としてある特定の入力データが検出されたか否かを示す真偽値を出力する。
ここで、本実施の形態にかかる演算装置おいては、複数の入力データを含むイベントがイベント列として入力される。例えば、演算装置は、入力されるイベント列から、ある特定のイベント列を検出すると共にその際の演算結果を出力する。ここで、イベントとは、前述のように、ある一事象に付随して発生したデータ(イベント情報)からなることを意味する。イベントの具体例には、イベント情報として、例えば、患者の名前、薬の名前、薬の量、薬を飲む時間、体温等がある。この場合、演算装置は、ある患者Aが薬B1、B2、B3をこの順に飲んだ場合を検出対象のイベント列として検出する。そして、演算装置は、個々のイベントに対して実行される関数からなる関数列で定義された演算の結果として、例えば平均体温を出力することができる。
イベント列には、イベント情報の列、すなわち、連続する情報が含まれる。従って、イベント列の具体例には、例えば、センサーや端末等から入力されるリアルタイム情報がある。なお、本実施の形態については、イベントには複数のイベント情報(入力データ)が含まれるものとして説明するが、入力データは1つであってもよい。
演算装置として、上述のようにイベント列を検出し、各イベントに対応した演算を実行する場合は、実施の形態1に記載の演算装置1を、検出するイベントの数だけ設けてもよい。また、複数の演算装置により一の演算装置を構成する場合、少なくとも実施の形態1に記載の演算装置1を含めばよく、他の演算装置は別の構成であってもよいことは勿論である。
次に、上述の実施の形態1にかかる演算装置を1又は2つ使用して本実施の形態にかかる演算装置を構成する場合について説明する。
(2−1)関数の連接
図5A及び図5Bは、本実施の形態における演算装置によって実行される演算の、正規表現における連接を示す。本例における演算装置は、実施の形態1にかかる演算装置を2つ用いて構成されてもよい。あるいは、本例における演算装置は、制御パス要素及びデータパス要素を有する2つの演算装置からなり、少なくとも一方が実施の形態1にかかる演算装置であってもよい。
図5A及び図5Bに、制御パスとデータパスの各々の接続方法が示されている。図5Aには、制御パスの接続方法が示されている。制御パスに関しては、制御パス要素2100と制御パス要素2101が直列に接続される。図5Bには、データパスの接続方法が示されている。データパス要素に関しては、データパス要素3100とデータパス要素3101が直列に接続される。なお、各々の制御パス要素とデータパス要素は、図4で示した正規表現の規則に従い、関数だけでなく、関数列から構成されてもよい。このように、データパス要素3101は、データパス要素3100の演算処理結果に基づき演算処理結果を出力し、制御パス要素2101は、制御パス要素2100の結果に基づき検出結果を出力する。
(2−2)関数の和
図6A及び図6Bは、本実施の形態における演算装置によって実行される演算の、正規表現における和を示す。本例における演算装置も、実施の形態1にかかる演算装置を2つ用いて構成されてもよい。あるいは、本例における演算装置は、制御パス要素及びデータパス要素を有する2つの演算装置からなり、少なくとも一方が実施の形態1にかかる演算装置であってもよい。
図6A及び図6Bに、制御パスとデータパスの各々の接続方法が示されている。図6Aには、制御パスの接続方法が示されている。す制御パスに関しては、直前の制御パスの出力結果cが、制御パス要素2100と制御パス要素2101とに並列に入力される。さらに、制御パス要素2100と制御パス要素2101のそれぞれの出力c、cが、論理和(OR)202で接続される。OR202の出力Cがイベント検出結果となる。つまり、OR202は、制御パス要素2100及び制御パス要素2101のいずれか一方以上がイベントを検出した場合にイベント列を検出したと判断する判定手段として機能する。
図6Bには、データパスの接続方法が示されている。データパス要素に関しては、直前のデータパスの出力結果dが、データパス要素3200とデータパス要素3201とに並列に入力される。そして、データパス要素3200の結果dとデータパス要素3201の結果dは、マルチプレクサMUX201に接続される。マルチプレクサMUX201は、制御パス2200の出力結果cが1であれば、データパス要素3200の結果dを、制御パス2201の出力結果cが1であれば、データパス要素3201の結果dを出力する。すなわち、マルチプレクサMUX201の出力結果dがイベント列に対応する演算の演算結果となる。
ここで、両制御パスの結果c、cが1である場合は、データパス要素d、dのいずれかの結果を出力する。また、両制御パスの結果c、cが0である場合は、データパス要素d、dのいずれか結果を出力してもよいし、任意の値を出力してもよい。つまり、マルチプレクサMUX201は、制御パス要素2100及び制御パス要素2101の出力結果c、cに応じてデータパス要素3200及びデータパス要素3201の演算結果d、dのいずれか一方を選択して出力する第1の選択手段として機能する。
なお、各々の制御パス要素とデータパス要素は、図4で示した正規表現の規則に従い、関数だけでなく、関数列から構成されてもよい。
(2−3)関数の繰り返し
図7A及び図7Bは、本実施の形態における演算装置によって実行される演算の、正規表現における繰り返しを示す。本例における演算装置は、実施の形態1にかかる演算装置1つを構成に含んでもよい。
図7に、制御パスとデータパスの各々の接続方法が示されている。図7Aには、制御パスの接続方法が示されている。制御パスに関しては、直前の制御パスの結果c、または1を、制御パス要素の2300に入力するマルチプレクサMUX301を備える。マルチプレクサMUX301は、制御パス要素2300の出力結果cが0の場合は、直前の制御パスの結果cを、制御パス要素2300の出力結果cが1の場合は、1を制御パス要素2300に入力する。つまり、マルチプレクサMUX301は、制御パス要素の2300の出力結果cに応じて、前段の制御パス要素の出力cを当該制御パス要素2300に入力するか否かを決定する第2の判定手段として機能する。
図7Bには、データパスの接続方法が示されている。データパス要素に関しては、直前のデータパス要素の結果d、またはデータパス要素3300の出力結果dを、データパス要素3300に入力するマルチプレクサMUX302を備える。マルチプレクサMUX302は、制御パス要素2300の出力結果cが0の場合は、直前のデータパス要素の結果dを、制御パス要素2300の出力結果cが1の場合は、データパス要素3300の出力結果dを、データパス要素3300に入力する。つまり、マルチプレクサMUX302は、データパス要素3300及び前段のデータパス要素の出力結果d、dのいずれか一方を、制御パス要素2300の出力結果cに応じて、当該データパス要素3300に選択入力する第3の判定手段として機能する。
なお、上述した図2、図6、及び図7に示した例では、マルチプレクサ、レジスタ、論理積、又は論理和等を構成要素として説明したが、同じ論理動作を実現するものであれば、どのような回路構成であってもかまわない。
ところで、近年、センサーや端末からのリアルタイム情報(イベント列)の処理を行う新しいサービスが提供されている。本明細書においては、イベントは、複数のイベント情報(データ)かなる構造体を用いて表現されてもよい。イベントが大量に発生した場合、いわゆる、実時間で処理するためには、通常のCPU(Central Processing Unit)だけではなく、ASIC(Application Specific Integrated Circuit)やFPGA(Field-Programmable Gate Array)といったハードウェアで、イベント処理を代替することが重要となる。ここで、上記のイベント処理を実現するには、
1)イベントがどのような順序で発生したかを検出すること(例:イベントAの後にイベントBがきて、最後にイベントCがくる)
2)所定の条件にマッチした各イベントに対して、定義された計算ができること(例:イベントAで渡された温度とイベントBで渡された温度の平均をとる)
の両者を満足することが重要である。
上述したように、ハードウェアでこれら2つを実現することは、困難であった。これに対し、本実施の形態においては、演算装置がイベントに含まれる入力データを引数とする関数に付随する演算を実行し結果を出力すると共に、入力データの比較結果を戻り値として出力する関数処理部を備える。そのため、当該戻り値を使用してイベント列を検出できると共に、関数処理部によりイベントに対応して定義された演算を実行することができる。従って、イベント列の処理をハードウェアにより構成された演算装置で実施することで、高速に処理することができる。
なお、一方で、本願発明は、ソフトウェアで構成することも可能である。詳細は、後述する。ソフトウェアで実現することによって、演算装置にイベント処理用の専用回路を備える必要がなくなる。従って、演算装置の回路規模を削減することができる。
(3)本発明の実施の形態3.
次に、本発明の実施の形態3について説明する。本実施の形態における演算装置は、実施の形態1にかかる演算装置2つを上述の実施の形態2における連接を用いて接続したものである。
先ず、本実施の形態にかかる演算装置により演算する関数について説明する。図8は、本発明の実施の形態3における正規表現の連接の例を示す。図8に示すように、正規表現としては、sumを引数に持つAとBという関数の連接として記述されている(「RULE」の行を参照)。すなわち、関数A及び関数Bは正規表現で表現される関数列を構成している。そして、イベントは、そのイベント情報であるセンサーのID及びそのセンサーの測定した温度tempから構成される。
ここで、関数Aは、イベント情報のうちの温度を引数sumに出力し、入力イベントのセンサーのIDが100であったら1を、異なれば0を返す。一方、関数Bは、関数Aの引数sumの値と、入力イベントの温度との和を求め、2で割ることで、2つのイベントの温度の平均値を計算する。そして、入力イベントのIDが200であれば1を、異なれば0を返す。
図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とが、それぞれ連接として接続されている。
ここで、関数処理部4000Aの制御比較部4001Aは入力イベントのIDが100と一致するか否かを判定し、戻り値retを出力する。データ計算部4002Aは入力イベントの温度tempを出力引数sumに格納する。一方、関数処理部4000Bの制御比較部4001Bは、入力イベントのIDが200と一致するか否かを判定し、戻り値retを出力する。データ計算部4002Bは入力イベントの温度tempと関数Aの温度、具体的にはデータパス要素3100Aのレジスタ102Aに格納された値との平均をとる。なお、本例においては、制御パス要素2100Aの入力は、直前の結果がないため1に固定され、データパス要素3100Aは、前段からの入力を必要としないので、何も値が与えられていない。
(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となる。
(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となる。
(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とわかる。
(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の出力結果は、無効なデータとして扱われ、本演算装置の正規の出力結果として採用されない。
以上のように、本実施の形態にかかる演算装置は、従って、関数A(sum)B(sum)で記述される正規表現の演算を行い、関数に規定される比較結果にマッチしたイベント列を検出し、その際の演算結果を出力することができる。
本実施の形態にかかる演算装置は、図2、図3、及び図5の規則に従い、制御パス要素2100Aと制御パス要素2101B、データパス要素3100Aと3101Bとが、それぞれ連接として接続されている。この構成により、関数A(sum)B(sum)で記述される正規表現の演算を行うことができる。また、各データパス要素3100Aと3101Bは、制御比較部4001A、4001Bを有するため、関数に規定される比較結果にマッチしたイベント列を検出することができる。更に、データ計算部4002A、4002Bを有するため、各関数に規定された演算を実行し演算結果を出力することができる。
(4)本発明の実施の形態4.
次に本発明の実施の形態4について説明する。本実施の形態における演算装置は、実施の形態1にかかる演算装置2つを上述の実施の形態2における和を用いて接続したものである。
図14は、本発明の実施の形態4で示した正規表現における和の例を示す図である。図14に示すように、正規表現としては、yenを引数にもつAとBという関数の和として記述されている(「RULE」の行を参照)。そして、イベントは、イベント情報として、通貨の名称currencyと通貨量Amountから構成される。
ここで、関数Aは、イベント情報のうちの通貨量を引数yenに出力し、入力イベントの通貨の名称が円であったら1を、異なれば0を返す。一方、関数Bは、入力イベントの通貨量に80をかけたものを引数yenに出力し、入力イベントの通過の名称がドルであったら1を、異なれば0を返す。すなわち、この例では、通貨を円に統一する例が示されている。
図15は、図14で示した正規表現における和の演算を実施する本実施の形態にかかる演算装置を示す図である。図14に示すように、図2、図3、及び図6の規則に従い、本実施の形態にかかる演算装置は、制御パス要素2110Aと制御パス要素2111Bが論理和(OR)212を介して、データパス要素3110Aと3111BとがマルチプレクサMUX211を介して接続されている。
データパス要素3110Aは、関数4010A、及びレジスタ112Aを含み、データパス要素3111Bは、関数4010B、及びレジスタ112Bを含む。制御パス要素2110Aは、AND111A、及びレジスタ113Aを含み、制御パス要素2111Bは、AND111B、及びレジスタ113Bを含む。また、関数4010Aは、制御比較部4011A及びデータ計算部4012Aを有し、関数4010Bは、制御比較部4011B及びデータ計算部4012Bを有する。
ここで、関数4010Aの制御比較部4011Aは入力イベントの通貨の名称が円と一致するか否かを検出し、戻り値retを出力する。データ計算部4012Aは入力イベントの通貨量amountを出力引数yenに格納する。一方、関数4010Bの制御比較部4011Bは、入力イベントの通貨の名称がドルと一致するか否かを検出し、戻り値retを出力する。データ計算部4012Bは入力イベントの通貨量amountに80を掛けてyenとして出力する。なお、制御パス要素2110Aと2111Bの入力は、直前の結果がないので1に固定され、データパス要素3110Aと3111Bは前段からの入力を必要としないので、何も値が与えられない。
(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となる。
(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とわかる。
(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となる。
(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とわかる。
(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の出力結果は、共に無効なデータとして扱われ、本演算装置の正規の出力結果として採用されない。
本実施の形態にかかる演算装置は、図2、図3、及び図6の規則に従い、制御パス要素2110Aと制御パス要素2111B、データパス要素3110Aと3111Bとが、それぞれ和として接続されている。この構成により、関数A(sum)|B(sum)で記述される正規表現の演算を行うことができる。また、各データパス要素3110Aと3111Bは、制御比較部4011A、4011Bを有するため、関数に規定される比較結果にマッチしたイベント列を検出することができる。更に、データ計算部4012A、4012Bを有するため、各関数に規定された演算を実行し演算結果を出力することができる。
(5)本発明の実施の形態5.
次に本発明の実施の形態5について説明する。本実施の形態における演算装置は、実施の形態1にかかる演算装置を2つとし上述の実施の形態2で説明した和を用いて接続したものである。
図21は、本発明の実施の形態5で示した正規表現における繰り返しの例を示す。図21に示すように、正規表現としては、毎秒降水量の合計totalを引数に持つ関数Aの繰り返しと、毎秒降水量の合計totalを入力とし、雨天中の積算降水量の毎秒平均を出す関数Bとの連接として記述されている(「RULE」の行を参照)。そして、イベントは、イベント情報として、天気状況weatherと毎秒降水量reinfall_amountから構成される。なお、イベントは毎秒ごとに送られると仮定する。
ここで、関数Aは、イベント情報のうちの毎秒降水量をtotalに積算して出力し、入力イベントの天気状況が雨であったら1を、異なれば0を返す。一方、関数Bは、関数Aの毎秒降水量の積算を入力とし、get_num_eventという組込み関数により、今までのイベント数(積算秒)による平均値を出力し、入力イベントの天気状況が晴れであったら1を、異なれば0を返す。すなわち、この例では、晴れるまでの雨天中の毎秒降水量を積算し、その平均を出力する。
図22は、図21で示した正規表現における繰り返し演算を実施する本実施の形態にかかる演算装置を示す図である。図22に示すように、図2、図3、図5、及び図7の規則に従い、本実施の形態にかかる演算装置は、制御パス要素2120Aと制御パス要素2121B、データパス要素3120Aと3121Bとが、上述した実施の形態2における繰り返しとして接続されている。
データパス要素3120Aは、関数4020A、及びレジスタ122Aを含み、データパス要素3121Bは、関数4020B、及びレジスタ122Bを含む。制御パス要素2120Aは、AND121A、及びレジスタ123Aを含み、制御パス要素2121Bは、AND121B、及びレジスタ123Bを含む。また、関数4020Aは、制御比較部4021A及びデータ計算部4022Aを有し、関数4020Bは、制御比較部4021B及びデータ計算部4022Bを有する。
ここで、関数4020Aの制御比較部4021Aは入力イベントの天気状況が雨と一致するか否かを判定し、戻り値retを出力する。データ計算部4022Aは入力イベントの毎秒降水量を積算する。一方、関数4020Bの制御比較部4021Bは入力イベントの天気状況が晴れと一致するか否かを判定し、戻り値retを出力する。データ計算部4022Bは関数Aの出力である積算毎秒降水量を積算秒数で割った、雨天時の平均毎秒降水量を出力する。なお、マルチプレクサMUX321Aへの直前値の入力は、直前の結果がないので1に固定され、マルチプレクサMUX322Aへの直前値の入力は、積算のために0に固定される。
(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となる。
(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となる。
(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となる。
(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とわかる。
(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の出力結果は、無効なデータとして扱われ、本演算装置の正規の出力結果として採用されない。
本実施の形態にかかる演算装置は、図2、図3、図5、及び図7の規則に従い、制御パス要素2120Aの繰り返しと制御パス要素2121Bとが連接として接続され、データパス要素3120Aの繰り返しとデータパス要素3121Bとが連接として接続されている。この構成により、関数A(sum)+B(sum)で記述される正規表現の演算を行うことができる。また、各データパス要素3120Aと3121Bは、制御比較部4021A、4021Bを有するため、関数に規定される比較結果にマッチしたイベント列を検出することができる。更に、データ計算部4022A、4022Bを有するため、各関数に規定された演算を実行し演算結果を出力することができる。
(6)本発明の実施の形態6.
以上の実施の形態においては、関数の戻り値は、真偽値を表す1ビットの情報である。関数の戻り値は、複数ビットに拡張されてもよい。本実施の形態においては、演算装置で実施する関数の戻り値が複数ビットである場合の例を示す。
関数の戻り値が複数ビットで表示される具体例としては、戻り値がイベントの発生確率を意味する場合がある。すなわち、関数の戻り値は、イベントの発生の有無ではなく、イベントの発生確率を示す。イベントの発生確率は、イベントが発生した可能性と解釈することもできる。このように、各イベントの発生確率を定義することができるので、イベント列の発生確率を定義することもできる。
イベントの発生確率を示す戻り値は、以下のようにして求めることができる。イベントに含まれるデータ(イベント情報)が物理的なゆらぎに従う値の場合、例えば、熱源での温度を表すのであれば、熱源に関する物理法則から予め計算される確率分布に従い、当該温度の発生確率を求めることができる。また、イベント情報がそのような物理法則に従わないようなデータの場合、例えば、テストの点などにおいては、ロジスティクス分布や正規分布などの、よく知られた分布を仮定し、その分布から発生確率を計算することができる。さらに、過去のイベント列で発生したデータ頻度に従って現在のイベント発生確率を計算してもよい。他にも、イベント発生確率の計算には、ベイズ法や最尤法など、統計計算・データマイニング分野で使われる手法であれば、どのような手法を用いてもかまわない。
また、戻り値が複数ビットである場合、実施形態1乃至5のように、戻り値同士の論理演算は定義できない。複数ビットの戻り値同士の演算方法については、以下に具体例を示す。
本実施の形態においては、ある確率以上で発生するイベント列を検出するものとして説明する。図28は、関数の戻り値が複数ビットの場合の関数を実行する本実施の形態にかかる演算装置を示す図である。ここで、この複数ビットは、この関数のイベントの発生確率を表すものとする。イベントの発生確率を戻り値として定義した場合、図2とは異なり、前段の制御パス要素の結果cと関数演算部4200からの結果の論理和AND101の代わりに、図28に示すように、乗算器110を備える。これにより、前段の制御パス要素のイベント発生確率cと、本関数演算部4200からのイベント発生確率retの積を出力することで、レジスタ103は、イベント列自体の発生確率cを出力する。ここで、関数の戻り値retはイベントの発生確率だけにとどまらず、他の状態を表現してもよい。その場合、乗算器ではなく、異なる演算器を備えてもよい。
このように関数の戻り値を複数ビットに定義した場合、正規表現の規則の中で、和と繰り返し規則の構成に違いが生じる。図29A及び図29Bは、複数ビットの戻り値を持つ関数に対する和の演算を行う場合の制御パス要素、データパス要素の接続を説明する図である。図6A及び図6Bとは異なり、制御パス要素2200と制御パス要素2201の結果の論理和202を行うのではなく、図29Aに示すように、制御パス要素2200と制御パス要素2201のうち、いずれか大きい方の値を選択して出力する最大値選択演算部232を備える。これは、より大きなイベントの発生確率を出力した関数が選ばれることを意味する。
この構成に伴い、データパス要素3200の出力dとデータパス要素3201の出力dは、制御パス要素2200、2201の出力結果c、cの大きさによって選択される(図29B)。すなわち、出力結果cが大きいときは出力dが、出力結果cが大きいときは出力dが、最大値選択MUX231によって選択され、出力dとして出力される。
なお、最大値選択演算部232および最大値選択MUX231における選択条件は一例であり、上記以外の条件判断に基づいて、関数または出力結果を選択してもよい。
図30A及び図30Bは、複数ビットの戻り値を有する関数に対する繰り返しの演算を行う場合の制御パス要素、データパス要素の接続を説明する図である。図7A及び図7Bとは異なり、制御パス要素2300の入力と、データパス要素3300の入力には、MUXを用いるのではなく、イベントの発生確率がある閾値を超えているかどうかで入力を選択する閾値付MUX311、312を備える。すなわち、繰り返し発生するイベントの連続発生確率がある閾値を下回ると、例え、単体イベントとして十分の発生確率があったとしても、以降は前段からの制御パス要素及びデータパス要素の結果c、dが選択され、入力されることになる。すなわち、単体イベントの発生確率が80%であったとしても例えば10回繰り返されれば10%の確率になることを示す。
本実施の形態においては、関数の正規表現を演算処理する演算装置において、関数の戻り値が複数ビットで表現された場合にも対応することができる。従って、イベント列の発生の有無だけでなく、イベント列の発生確率に基づく処理を行うことができる。すなわち、イベント列を構成する各イベントに対応した演算を実行し、イベント列の発生確率に基づいて、適切な演算結果を出力することができる。
(7)本発明の実施の形態7.
次に、本発明の実施の形態7について説明する。本実施の形態にかかる演算装置は、後段に位置する演算装置から入力される動作停止要求を扱い、各演算装置における関数演算のサイクル数の違いに対応するものである。
図31は、本実施の形態にかかる演算装置の構成を示す図である。なお、図31において、同一名及び同一符号を付した処理部であって、以下に言及しない処理部は、実施の形態1、2と基本的に同じ処理を行う。
本実施の形態にかかる演算装置1は、図2に示す構成と同様に、制御パス要素2000と、データパス要素3000を有している。また、データパス要素3000は、関数処理部4000を有しており、関数処理部4000は、制御比較部4001と、データ計算部4002とを有している。
演算装置1は、図2の構成に加え、データパス要素3000内にレジスタ104を有する。さらに、演算装置1は、論理積AND105と、キュー106と、を有する。
制御パス要素2000には、直前の制御パスの出力結果cが入力される。関数処理部4000には、直前のデータパスの出力結果dに加え、直前のデータパスの出力結果の有効性を示す有効性情報(以下、当該有効性情報は、0または1の値をとるデジタル信号形式で入力されるものとし、Valid信号と記載する。)vが入力される。Valid信号vは、0の場合に無効を示し、1の場合に有効を示す。
さらに、論理積AND105には、後段に位置する演算装置から出力された動作停止要求r(以下、当該要求は、0または1の値をとるデジタル信号形式で入力されるものとし、Ready信号と記載する。)が入力される。Ready信号rは、後段に位置する演算装置が動作停止を要求するか否かを示す信号であり、1の場合に動作停止を要求しないことを示し、0の場合に動作停止を要求することを示す。
演算装置1は、Ready信号rが0のとき、データ計算部4002の処理を停止させることができる。例えば、処理速度が遅い後段の演算装置が、演算処理の実行中に、前段の演算装置に対して0の値を持つReady信号rを出力する。このとき、演算装置1は、データ計算部4002の処理を停止させてもよい。そして、演算装置1は、後段の演算装置の演算処理が完了しReady信号rが1になるのを待って、データ計算部4002の処理を再開させてもよい。
なお、データ計算部4002の処理が完了していないときは、Ready信号rが0であっても、演算装置1は、データ計算部4002の処理を直ちに停止させる必要はない。
このように、演算装置1は、Ready信号rの値に応じて、データ計算部4002の処理の停止・許可の制御を行うことができる。
キュー106には、イベント1000が入力される。キュー106は、イベント1000を順次保持する保持手段として機能する。Valid信号vは、キュー106にも入力される。キュー106は、入力されたValid信号vの値が1(有効)の場合、先頭に位置するイベントをデータ計算部4002に入力する。また、キュー106は、イベントを保持しているかいなかを示す情報(イベント保持情報)であるempty信号(1:イベントを保持している、0:イベントを保持していない)を論理積AND105に入力する。
論理積AND105は、empty信号またはReady信号rのいずれかが0である場合、前段の演算装置に0の値をもつReady信号rを入力する。すなわち、論理積AND105は、前段の演算装置に入力するReady信号を生成する動作停止要求生成手段として動作する。empty信号またはReady信号rのいずれかが0である場合、データ計算部4002は、演算の実行が不可能な状態である。それ以外の場合(empty信号とReady信号rの双方とも1の場合)、データ計算部4002は、演算の実行が可能な状態である。このとき、論理積AND105は、前段の演算装置に対し、データ計算部4002が演算の実行が可能であるか否かを示す実行可否状態を伝達する。
上述の構成にすることにより、演算装置1は、後段に位置する演算装置の処理状況をReady信号により把握することができる。これにより、例えば前段の演算装置として処理速度の速い演算装置を用い、後段の演算装置として処理速度の遅い演算装置を用いて演算を行う場合であっても、前段の演算装置は、後段の演算装置に確実に演算結果を伝達することができる。従って、正常に演算を行うことができる。
なお、図31の構成は、前段へのReady信号の伝搬が1サイクルで終了すると仮定した構成である。AND105やキュー106の周辺の回路の構成等によってReady信号の伝搬に複数サイクル要する場合、キュー106が空になること、または後段の演算装置の演算処理が遅れることを予測する予測機構を新たに設ければ良い。当該予測機構による予測に応じて、Ready信号の値を設定することにより、Ready信号を正確に伝搬できる。
たとえば、予測機構は、自身のキュー106の構成から何クロックか後に空になること、または後段の演算装置の演算処理に何クロックか必要なことがわかっているため後段からのReady信号受信が何クロックか遅れることが予測される場合、先にReady信号を0にする
次に、図31に示す演算装置2つを用い、上述の実施の形態2で説明した連接を用いて接続する例について説明する。図32は、正規表現の連接を図31に示す演算装置2つを用いて構成した図を示す。第1の演算装置Aは、制御パス要素2130Aと、データパス要素3130Aとを有する。第2の演算装置Bは、制御パス要素2131Bと、データパス要素3131Bとを有する。図2、図3、及び図5の規則に従い、制御パス要素2130Aと制御パス要素2131B、データパス要素3130Aとデータパス要素3131Bとが、それぞれ連接として接続されている。
この際、データパス要素3130Aには、Valid信号vが入力され、データパス要素3130Aは、演算結果に応じてValid信号vをデータパス要素3131Bに入力する。データパス要素3131Bは、Valid信号vを後段の演算装置に入力する。
同様に、第2の演算装置Bには、Ready信号rが入力され、第2の演算装置Bは、Ready信号rを第1の演算装置Aに入力する。
図32に示す演算装置の構成は、図2、図3、及び図5の規則に従い、制御パス要素2130Aと制御パス要素2131B、データパス要素3130Aとデータパス要素3131Bとが、それぞれ連接として接続されている。この構成により、連接により記述される正規表現の演算を行うことができる。さらに、実施の形態3と同様に、関数に規定される比較結果にマッチしたイベント列の検出、及び各関数に規定されて演算の実行を行うことができる。
次に、図31に示す演算装置2つを用い、上述の実施の形態2で説明した和を用いて接続する例について説明する。図33は、正規表現の和を図31に示す演算装置2つを用いて構成した図を示す。
第1の演算装置Aは、制御パス要素2140Aと、データパス要素3140Aとを有する。第2の演算装置Bは、制御パス要素2141Bと、データパス要素3141Bとを有する。図2、図3、及び図6の規則に従い、制御パス要素2140Aと制御パス要素2141B、データパス要素3140Aとデータパス要素3141Bとが、それぞれ和として接続されている。
ここで、図15に示す構成に加え、第1の演算装置A及び第2の演算装置Bには、Valid信号v及びReady信号rが入力される。
第1の演算装置Aは、シフタ204に接続される。同様に、第2の演算装置Bは、シフタ205に接続される。シフタ204には、制御パス要素2140Aの制御パス出力結果c、データパス要素3140Aのデータパスの出力結果d、及びデータパス要素3140AのValid信号vが入力される。シフタ205には、制御パス要素2141Bの制御パス出力結果c、データパス要素3141Bのデータパスの出力結果d、及びデータパス要素3141BのValid信号vが入力される。
シフタ204及びシフタ205は、第1の演算装置Aと第2の演算装置Bの演算サイクル数の違いをなくすために遅延を与える遅延手段として動作する。例えば、第1の演算装置Aの演算サイクルが第2の演算装置Bの演算サイクルよりも3サイクル少ない場合、シフタ204は、各信号に3サイクル分の遅延を与える。なお、第1の演算装置Aの演算サイクルと、第2の演算装置Bの演算サイクルが同じ場合、シフタ204及び205を備える必要はない。
論理積AND203には、データパス要素3140AのValid信号v、及びデータパス要素3141BのValid信号vが入力される。論理積AND203は、両者(Valid信号v、及びValid信号v)が1である場合にのみ、後段の演算装置にValid信号として1を入力する。
論理積AND206には、第1の演算装置AからのReady信号r、第2の演算装置BからのReady信号rが入力される。論理積AND203は、どちらかのReady信号が0である場合に、前段に位置する演算装置に、0の値を持つReady信号を入力する。
図33に示す演算装置の構成は、図2、図3、及び図6の規則に従い、制御パス要素2140Aと制御パス要素2141B、データパス要素3140Aとデータパス要素3141Bとが、それぞれ和として接続されている。この構成により、和により記述される正規表現の演算を行うことができる。さらに、実施の形態4と同様に、関数に規定される比較結果にマッチしたイベント列の検出、及び各関数に規定されて演算の実行を行うことができる。
次に、図31に示す演算装置を用いて、上述の実施の形態2で説明した正規表現における繰り返しを実現する例について説明する。図34は、正規表現の繰り返しを図31に示す演算装置を用いて構成した図を示す。当該演算装置は、制御パス要素2150Aと、データパス要素3150Aを有する。
図34に示すように、演算装置に繰り返し論理400が接続されている。繰り返し論理400は、前述のマルチプレクサMUX301等を含む処理部であり、正規表現における繰り返しを制御する処理を行う。
繰り返し論理400には、直前の制御パスの出力結果c、直前のデータパス要素の結果d、及び直前のValid信号vに加え、制御パス要素2150Aの出力結果c、データパス要素3150Aの結果d、及びデータパス要素3150Aの出力するValid信号vが入力される。
制御パス要素2150Aの出力結果cが有効であり、かつ0である場合、繰り返し論理400は、前段に位置する演算装置の出力であるc、d、及びvを選択し、制御パス要素2150A、データパス要素3150Aに入力する。
一方、制御パス要素2150Aの出力結果cが有効であり、かつ1である場合、繰り返し論理400は、制御パス要素2150Aの出力であるc、データパス要素3150Aの出力である、d、及びvを選択し、制御パス要素2150A、データパス要素3150Aに入力する。
ここで、演算装置(詳細にはデータパス要素3150A)の演算処理中に、前段の演算装置から入力があると、演算装置は、その入力を処理できない。そのため、繰り返し論理400は、データパス要素3150Aによる演算の処理中には、前段の演算装置に対して供給するReady信号rが0になるように制御する。なお、繰り返し論理400は、後段演算装置から0の値を持つReady信号rが入力された場合も、前段演算装置に対して供給するReady信号rが0になるように制御する。
なお、繰り返し論理400は、演算装置内に設けられても良く、演算装置外に設けられても良い。
図34に示す構成により、繰り返しを示す正規表現の演算を行うことができる。さらに、実施の形態5と同様に、関数に規定される比較結果にマッチしたイベント列の検出、及び各関数に規定された演算の実行を行うことができる。
(8)本発明の実施の形態8.
次に、本発明の実施の形態8について説明する。上述の説明においては、演算装置は、基本的にハードウェアであるものとして説明したが、ソフトウェア、すなわち、1以上の入力データを含むイベントを入力とする演算処理を、コンピュータに実行させるためのプログラムとすることも可能である。
すなわち、本実施の形態にかかるプログラムは、入力データを引数とする関数に規定された演算を実行し結果を出力すると共に、入力データの比較結果を戻り値として出力する処理を関数処理部に実施させるデータ処理と、関数の戻り値を使用してイベントを検出する制御処理とを実行する。
図35は、本実施の形態にかかるプログラムの動作を示すフローチャートの例である。図35に示すように、イベントが入力されると(ステップS1)、プログラムはイベントに含まれる入力データを引き数とし、関数に規定された演算処理を実施する(ステップS2)。一方で、イベントに含まれる入力データが所定のデータか否かを比較する(ステップS3)。上記制御処理として、ステップS2及びS3は、第1乃至第7の実施形態では関数処理部が実行するデータ処理である。また、ステップS3における戻り値を、入力されたイベントが検出対象のイベントであるか否かを示す比較結果とし、必要であれば前段の比較結果と合わせて、所定のイベント又はイベント列が発生したか否かを検出する(ステップS4)。
以上のようなイベント検出処理及び関数に規定された演算処理は、専用コンピュータ、又はパーソナルコンピュータ(PC)などのコンピュータにより実現可能である。但し、コンピュータは、物理的に単一である必要はなく、分散処理を実行する場合には、複数であってもよい。図36は、本実施の形態にかかるプログラムを実行する装置の構成例を示す図である。
図36に示すように、コンピュータ5100は、CPU5101(Central Processing Unit)と、ROM(Read Only Memory)又はRAM5103(Random Access Memory)等からなるメモリ5102を有する。尚、コンピュータを動作させるためのOS(Operation System)などが、この情報処理装置を構築するコンピュータに備えられているもよい。
CPU5101は、メモリ5102に記憶されている各種プログラム5103をロードし、このプログラム5103に従って各種の処理を実行する。本実施の形態においては、例えば、上述のデータ処理及び制御処理等の処理を実行する。メモリ5102にはまた、CPU5101が各種の処理を実行する上において必要なデータなども適宜記憶される。
ここで、本実施の形態にかかるプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(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)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
以上のように、本実施形態のプログラムは、すべての演算処理をソフトウェアによって処理する。このように、本発明の演算処理は、ハードウェアとしての演算装置を用いずに、ソフトウェアによって処理することも可能である。
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
この出願は、2011年2月21日に出願された日本出願特願2011−034906、及び2011年8月24日に出願された日本出願特願2011−182707を基礎とする優先権を主張し、その開示の全てをここに取り込む。
100、201、301、302マルチプレクサ(MUX)
101、105論理積回路(AND)
102、103、104レジスタ
106キュー
202論理和(OR)
203、206論理積(AND)
204、205シフタ
400繰り返し論理
1000、1010、1020、1030イベント
2100、2101、2200、2201,2300、
2110、2111、2210、2211,2310、
2120、2121、2220、2221,2320、
2130、2131、2140、2141、2150、制御パス要素
3100、3101、3200、3201、3300
3110、3111、3210、3211、3310
3120、3121、3220、3221、3320、
3130、3131、3140、3141、3150、データパス要素
4000関数
4001制御比較部
4002データ計算部

Claims (35)

  1. 第1のイベントに含まれる第1の入力データを引数とする第1の関数に規定された第1の演算を実行する第1の関数処理手段を有する第1のデータ処理手段と、
    前記第1の関数の第1の戻り値を使用して、前記第1のイベントを検出する第1の制御処理手段とを有し、
    前記第1の関数処理手段は、前記第1の演算を実行して第1の結果を出力する第1のデータ計算手段と、前記第1の入力データと前記第1のイベントを特定する第1のデータとの比較結果を前記第1の戻り値として前記第1の制御処理手段に出力する第1の制御比較手段とを有する、演算装置。
  2. 第2のイベントに含まれる第2の入力データを引数とする第2の関数に規定された第2の演算を実行する第2の関数処理手段を有する第2のデータ処理手段と、
    前記第2の関数の第2の戻り値を使用して、前記第2のイベントを検出する第2の制御処理手段とを有し、
    前記第2の関数処理手段は、前記第2の演算を実行して第2の結果を出力する第2のデータ計算手段と、前記第2の入力データと前記第2のイベントを特定する第2のデータとの比較結果を前記第2の戻り値として前記第2の制御処理手段に出力する第2の制御比較手段を有し、
    前記第1の戻り値および前記第2の戻り値に基づいて、前記第1のイベント及び前記第2のイベントを含むイベント列を検出する、請求項1記載の演算装置。
  3. 前記第1の関数及び前記第2の関数は正規表現で表現される関数列を構成し、
    前記第1のデータ計算手段は、前記第1の入力データ及び前記第1の結果のうちの少なくとも一つを引数として前記第1の演算を実行して前記第1の結果を出力し、
    前記第2のデータ計算手段は、前記第2の入力データ、前記第1の結果および前記第2の結果のうちの少なくとも一つを引数として前記第2の演算を実行し前記第2の結果を出力し、
    前記正規表現に基づいて、前記第1の結果および前記第2の結果の少なくとも一方を用いて第3の結果を出力する、請求項2記載の演算装置。
  4. 前記第1の関数処理手段は、入力された第1の動作停止要求の値に応じて、前記第1の演算を行うか否かを決定する、請求項1乃至請求項3のいずれかに記載の演算装置。
  5. 前記第2の関数処理手段は、入力された第2の動作停止要求の値に応じて、前記第2の演算を行うか否かを決定する、請求項2または請求項3のいずれかに記載の演算装置。
  6. 前記第1のイベントを保持するとともに、前記第1のイベントの保持数が0であるか否かを示す第1のイベント保持情報を出力し、前記第1のイベントを入力した順に前記第1の関数処理手段に供給する第1の保持手段と、
    前記第1のイベント保持情報、及び前記第1の動作停止要求の値に基づいて前段の演算装置の演算実行を制御する第3の動作停止要求を生成する第1の動作停止要求生成手段と、を備える請求項4に記載の演算装置。
  7. 前記第2のイベントを保持するとともに、前記第2のイベント保持数が0であるか否かを示す第2のイベント保持情報を出力し、前記第2のイベントを入力した順に前記第2の関数処理手段に供給する第2の保持手段と、
    前記第2のイベント保持情報、及び前記第2の動作停止要求の値に基づいて前段の演算装置の演算実行を制御する第4の動作停止要求を生成する第2の動作停止要求生成手段と、を備える請求項5に記載の演算装置。
  8. 前記第1の保持手段は、前段の演算装置の演算実行結果が有効であるか否かを示す第1の有効性情報に基づいて、前記第1のイベントを前記第1の関数処理手段に供給するか否かを決定する、請求項6に記載の演算装置。
  9. 前記第2の保持手段は、前段の演算装置の演算実行結果が有効であるか否かを示す第2の有効性情報に基づいて、前記第2のイベントを前記第2の関数処理手段に供給するか否かを決定する、請求項7に記載の演算装置。
  10. 第1の関数の演算処理を実施する第1の演算装置と、
    第2の関数の演算処理を実施する第2の演算装置とを備え、
    前記第1の演算装置は、
    第1のイベントに含まれる第1の入力データを引数とする第1の関数に規定された第1の演算を実行する第1の関数処理手段を有する第1のデータ処理手段と、
    前記第1の関数の第1の戻り値を使用して、前記第1のイベントを検出する第1の制御処理手段とを有し、
    前記第1の関数処理手段は、前記第1の演算を実行して第1の結果を出力する第1のデータ計算手段と、前記第1の入力データと前記第1のイベントを特定する第1のデータとの比較結果を前記第1の戻り値として前記第1の制御処理手段に出力する第1の制御比較手段とを有する、演算装置。
  11. 前記第2の演算装置は、
    第2のイベントに含まれる第2の入力データを引数とする第2の関数に規定された第2の演算を実行する第2の関数処理手段を有する第2のデータ処理手段と、
    前記第2の関数の第2の戻り値を使用して、前記第2のイベントを検出する第2の制御処理手段とを有し、
    前記第2の関数処理手段は、前記第2の演算を実行して第2の結果を出力する第2のデータ計算手段と、前記第2の入力データと前記第2のイベントを特定する第2のデータとの比較結果を前記第2の戻り値として前記第2の制御処理手段に出力する第2の制御比較手段を有し、
    前記第1の戻り値および前記第2の戻り値に基づいて、前記第1のイベント及び前記第2のイベントを含むイベント列を検出する、請求項10に記載の演算装置。
  12. 前記演算装置には、リアルタイム情報であって、2以上の前記イベントからなるイベント列が入力される、請求項1乃至11のいずれか1項記載の演算装置。
  13. 前記データ計算手段は、前記入力データを格納、比較又は演算して出力する、請求項1乃至12のいずれか1項記載の演算装置。
  14. 前記第1の関数及び前記第2の関数は正規表現で表現される関数列を構成し、
    前記正規表現は、前記関数と演算子とを含み、
    前記演算子は、一の関数の後に次の関数の演算の実施を記述する連接、2つの関数のいずれの演算を選択するかを記述する和、及び1回以上の関数の演算を記述する繰り返し、のいずれか1以上を有する、請求項2、3、5、7、9、10又は11に記載の演算装置。
  15. 前記正規表現が、前記第1及び第2の関数と、前記第1の関数の後に前記第2の関数の演算の実施を記述する連接とを含むものである場合、
    前記第2のデータ処理手段は、前記第1のデータ処理手段の演算処理結果に基づき演算処理結果を出力し、
    前記第2の制御処理手段は、前記第2の制御処理手段の結果に基づき検出結果を出力する、請求項2、3、5、7、9又は11を引用する請求項14記載の演算装置。
  16. 前記正規表現が、前記第1及び第2の関数と、前記第1の関数の後に前記第2の関数の演算の実施を記述する連接とを含むものである場合、
    前記第1及び第2のデータ処理手段は直列に接続され、前記第1及び第2の制御処理手段は直列接続される、請求項2、3、5、7、9又は11を引用する請求項14記載の演算装置。
  17. 前記正規表現が、前記第1及び第2の関数と、前記第1及び第2の関数のいずれの演算を選択するかを記述する和とを含むものである場合、
    前記第1及び第2の制御処理手段のいずれか一方以上がイベントを検出した場合にイベント列を検出したと判断する判定手段と、
    前記第1及び第2の制御処理手段の出力結果に応じて前記第1及び第2のデータ処理手段の演算結果のいずれか一方を選択出力する第1の選択手段とを有する、請求項2、3、5、7、9又は11を引用する請求項14記載の演算装置。
  18. 前記正規表現が、前記第1及び第2の関数と、前記第1及び第2の関数のいずれの演算を選択するかを記述する和とを含むものである場合、
    論理和を演算する論理回路及び第1のマルチプレクサを有し、
    前記第1及び第2の制御処理手段の出力は前記論理回路に入力され、その論理和がイベント列検出結果として出力され、
    前記第1及び第2のデータ処理手段は、各演算結果を前記第1のマルチプレクサの入力に入力し、
    当該第1のマルチプレクサは、前記第1及び第2の制御処理手段の出力結果に応じて前記第1及び第2のデータ処理手段の演算結果のいずれか一方を出力する、請求項2、3、5、7、9又は11を引用する請求項14記載の演算装置。
  19. 前記第1の演算結果が有効値であるか否かを示す情報と、前記第2の演算結果が有効値であるか否かを示す情報と、の論理積を演算結果の有効性を示す情報として後段の演算装置に供給し、
    前記第1のデータ計算手段の実行可否状態と、前記第2のデータ計算手段の実行可否状態と、の論理積を後段の演算装置に供給する動作停止要求として出力する請求項18記載の演算装置。
  20. 前記第1及び第2のデータ処理手段の演算に要するサイクル数に基づいて、前記第1及び第2のデータ処理手段のいずれか一方の出力を遅延させる遅延手段を有する請求項18または請求項19に記載の演算装置。
  21. 前記第1の制御処理手段の出力結果に応じて前段の制御処理手段の出力を当該第1の制御処理手段に入力するか否かを決定する第2の判定手段と、
    前記第1のデータ処理手段及び前段のデータ処理手段の出力結果のいずれか一方を前記第1の制御処理手段の出力結果に応じて、当該第1のデータ処理手段に選択入力する第3の判定手段とを有する、請求項10記載の演算装置。
  22. 前記第1の制御処理手段の出力結果に応じて、前記第1の制御処理手段及び前記第1のデータ処理手段への入力を繰り返す繰り返し論理を備え、
    前記繰り返し論理は、前記第1のデータ処理手段が演算中である場合に演算処理の停止を要求する固定値を前段の演算装置に入力する、請求項10に記載の演算装置。
  23. 第2及び第3のマルチプレクサを有し、
    前記第2のマルチプレクサは、前記第1の制御処理手段の出力結果に応じて前段の制御処理手段の出力を当該第1の制御処理手段に入力するか否かを決定し、
    前記第3のマルチプレクサは、前記第1のデータ処理手段及び前段のデータ処理手段の出力結果のいずれか一方を前記第1の制御処理手段の出力結果に応じて、当該第1のデータ処理手段に選択入力する、請求項10項記載の演算装置。
  24. 第1の演算を実行して第1の結果を出力すると共に、第1のイベントに含まれる第1の入力データと前記第1のイベントを特定する第1のデータとの比較結果を第1の戻り値として出力することで、前記第1の入力データを引数とする第1の関数に規定された第1の演算を実行し、
    前記第1の関数の前記第1の戻り値を使用して、前記第1のイベントを検出する、演算実行方法。
  25. 前記イベントからなるイベント列を入力とし、前記第1の関数及び1回以上の前記第1の関数の演算を記述する繰り返しを記述する演算子を含む正規表現の演算を実施する請求項24記載の演算実行方法。
  26. 1以上の第1の入力データを含む第1のイベント及び1以上の第2の入力データを含む第2のイベンを有するイベント列を入力とし、第1の関数の演算処理を実施し、
    前記イベント列を入力とし、第2の関数の演算処理を実施するものであり、
    前記第1の関数の演算処理は、
    前記第1の関数に規定された第1の演算を実行して第1の結果を出力すると共に、前記第1の入力データと前記第1のイベントを特定する第1のデータとの比較結果を第1の戻り値として出力することで、前記第1の入力データを引数とする前記第1の演算を実行し、
    前記第1の関数の前記第1の戻り値を使用して、前記第1のイベントを検出するものである、演算実行方法。
  27. 前記第2の関数の演算処理は、
    前記第2の関数に規定された第2の演算を実行して第2の結果を出力すると共に、前記第2の入力データと前記第2のイベントを特定する第2のデータとの比較結果を第2の戻り値として出力することで、前記第2の入力データを引数とする前記第2の演算を実行し、
    前記第2の関数の前記第2の戻り値を使用して、前記第2のイベントを検出するものであり、
    前記第1の戻り値および前記第2の戻り値に基づいて、前記イベント列が検出される、請求項26記載の演算実行方法。
  28. 前記イベント列は、リアルタイム情報である、請求項25乃至27のいずれか1項記載の演算実行方法。
  29. 前記入力データを引数とする前記第1の関数に規定された演算は、前記入力データを格納、比較又は演算する処理である、請求項24乃至28のいずれか1項記載の演算実行方法。
  30. 第1の演算を実行して第1の結果を出力すると共に、第1の入力データと第1のデータとの比較結果を第1の戻り値として出力することで、前記第1の入力データを引数とする第1の関数に規定された第1の演算を実行する第1のデータ処理と、
    前記第1の関数の前記第1の戻り値を使用して、1以上の前記第1の入力データを含む第1のイベントを検出する第1の制御処理とを、コンピュータに実行させるプログラム。
  31. 前記イベントからなるイベント列を入力とし、前記第1の関数及び1回以上の前記第1の関数の演算を記述する繰り返しを記述する演算子を含む正規表現の演算を実施する請求項30記載のプログラム。
  32. 所定の動作をコンピュータに実行させるためのプログラムであって、
    1以上の第1の入力データを含む第1のイベント及び1以上の第2の入力データを含む第2のイベンを有するイベント列を入力とし、第1の関数の演算処理を実施する第1の演算処理と、
    前記イベント列を入力とし、第2の関数の演算処理を実施する第2の演算処理とを有し、
    前記第1の演算処理は、
    前記第1の関数に規定された第1の演算を実行して第1の結果を出力すると共に、前記第1の入力データと前記第1のイベントを特定する第1のデータとの比較結果を第1の戻り値として出力することで、前記第1の入力データを引数とする前記第1の演算を実行する第1のデータ処理と、
    前記第1の関数の前記第1の戻り値を使用して、前記第1のイベントを検出する第1の制御処理とを有するプログラム。
  33. 前記第2の演算処理は、
    前記第2の関数に規定された第2の演算を実行して第2の結果を出力すると共に、前記第2の入力データと前記第2のイベントを特定する第2のデータとの比較結果を第2の戻り値として出力することで、前記第2の入力データを引数とする前記第2の演算を実行する第2のデータ処理と、
    前記第2の関数の前記第2の戻り値を使用して、前記第2のイベントを検出する第2の制御処理とを有し、
    前記第1の戻り値および前記第2の戻り値に基づいて、前記イベント列が検出される、請求項32記載のプログラム。
  34. 前記イベント列は、リアルタイム情報である、請求項31乃至33のいずれか1項記載のプログラム。
  35. 前記入力データを引数とする前記第1の関数に規定された演算は、前記入力データを格納、比較又は演算する処理である、請求項30乃至34のいずれか1項記載のプログラム。
JP2013500710A 2011-02-21 2011-10-21 演算装置及び演算実行方法 Active JP5804047B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013500710A JP5804047B2 (ja) 2011-02-21 2011-10-21 演算装置及び演算実行方法

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
JP2011034906 2011-02-21
JP2011034906 2011-02-21
JP2011182707 2011-08-24
JP2011182707 2011-08-24
JP2013500710A JP5804047B2 (ja) 2011-02-21 2011-10-21 演算装置及び演算実行方法
PCT/JP2011/005905 WO2012114399A1 (ja) 2011-02-21 2011-10-21 演算装置及び演算実行方法

Publications (2)

Publication Number Publication Date
JPWO2012114399A1 JPWO2012114399A1 (ja) 2014-07-07
JP5804047B2 true JP5804047B2 (ja) 2015-11-04

Family

ID=46720221

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013500710A Active JP5804047B2 (ja) 2011-02-21 2011-10-21 演算装置及び演算実行方法

Country Status (4)

Country Link
US (1) US9032421B2 (ja)
EP (1) EP2680131A4 (ja)
JP (1) JP5804047B2 (ja)
WO (1) WO2012114399A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9791511B2 (en) * 2013-03-15 2017-10-17 Teradyne, Inc. Method and apparatus for low latency communication in an automatic testing system
JP6079385B2 (ja) * 2013-03-29 2017-02-15 富士通株式会社 照合処理回路及び照合処理回路の制御方法
US11461297B1 (en) * 2021-06-09 2022-10-04 T-Mobile Usa, Inc. Ensuring database integrity using a data flow in a graph, such as for use by a wireless telecommunications service provider

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0527945A (ja) * 1991-07-18 1993-02-05 Matsushita Electric Ind Co Ltd レコード変換装置
WO2010107114A1 (ja) * 2009-03-19 2010-09-23 日本電気株式会社 パターンマッチング装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07262044A (ja) 1994-03-25 1995-10-13 Hitachi Ltd イベントトレース解析方法
US8621425B1 (en) * 2005-04-08 2013-12-31 The Mathworks, Inc. Generating code based at least on one or more output arguments designated as not being present
US7805392B1 (en) * 2005-11-29 2010-09-28 Tilera Corporation Pattern matching in a multiprocessor environment with finite state automaton transitions based on an order of vectors in a state transition table
JP4957500B2 (ja) 2007-10-12 2012-06-20 日本電気株式会社 文字列照合回路
JP2011034906A (ja) 2009-08-05 2011-02-17 Hitachi Cable Ltd 同軸ケーブルの製造方法、及び同軸ケーブル
JP5607955B2 (ja) 2010-03-09 2014-10-15 こもろ布引いちご園株式会社 枠付きパネルおよび農業用ハウスの屋根構造

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0527945A (ja) * 1991-07-18 1993-02-05 Matsushita Electric Ind Co Ltd レコード変換装置
WO2010107114A1 (ja) * 2009-03-19 2010-09-23 日本電気株式会社 パターンマッチング装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JPN6011065035; Sidhu, R. et al.: '"Fast Regular Expression Matching using FPGAs"' The 9th Annual IEEE Symposium on Field-Programmable Custom Computing Machines (FCCM'01) , 200104, P.227-238 *
JPN6011065036; 川中洋祐、外: '"パターン非依存型正規表現ストリングマッチングマシンとそのFPGA実装"' 電子情報通信学会論文誌 D Vol.J92-D, No.12, 20091201, P.2159-2167 *

Also Published As

Publication number Publication date
EP2680131A1 (en) 2014-01-01
US20140208334A1 (en) 2014-07-24
US9032421B2 (en) 2015-05-12
EP2680131A4 (en) 2017-01-18
JPWO2012114399A1 (ja) 2014-07-07
WO2012114399A1 (ja) 2012-08-30

Similar Documents

Publication Publication Date Title
KR20180057300A (ko) 딥 러닝을 이용하여 환자의 진단 이력으로부터 질병 예후를 예측하는 방법 및 시스템
US20040068708A1 (en) Method of using clock cycle-time in determining loop schedules during circuit design
US20190138929A1 (en) System and method for automatic building of learning machines using learning machines
JP7387017B2 (ja) アドレス生成方法及びユニット、深層学習処理器、チップ、電子機器並びにコンピュータプログラム
TW202240384A (zh) 可重組態處理器的儀器分析
JP7256811B2 (ja) アドバンストインタコネクト技術を利用してaiトレーニングを加速するための方法及びシステム
CN112818621B (zh) 用于预测软ip部件的性能、功率和面积表现的系统和方法
JP5804047B2 (ja) 演算装置及び演算実行方法
GB2529170A (en) Circuit design generator
WO2019010656A1 (zh) 性能指标评估方法及装置
Lu et al. Doomed run prediction in physical design by exploiting sequential flow and graph learning
CN116070557A (zh) 使用强化学习的数据路径电路设计
CN116266119A (zh) 生成依赖于使用的代码嵌入的方法、装置和制品
CN107769987B (zh) 一种报文转发性能评估方法和装置
Li et al. Heterogeneous systems with reconfigurable neuromorphic computing accelerators
US20220321579A1 (en) Methods and apparatus to visualize machine learning based malware classification
CN115469931A (zh) 一种循环程序的指令优化方法、装置、系统、设备及介质
US11175957B1 (en) Hardware accelerator for executing a computation task
WO2021086486A1 (en) Neural network instruction streaming
US10289786B1 (en) Circuit design transformation for automatic latency reduction
US20220318595A1 (en) Methods, systems, articles of manufacture and apparatus to improve neural architecture searches
WO2024065535A1 (en) Methods, apparatus, and articles of manufacture to generate hardware-aware machine learning model architectures for multiple domains without training
Thillai Rani et al. Recurrent deep neural learning classification algorithm based high level synthesis in VLSI circuit with runtime adaptability
US20230136209A1 (en) Uncertainty analysis of evidential deep learning neural networks
KR102123117B1 (ko) 다중 노드 시스템에서 성능과 전력을 예측하는 장치 및 그 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140911

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150616

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150708

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150817

R150 Certificate of patent or registration of utility model

Ref document number: 5804047

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150