(57)【要約】【課題】複数種類のイベントが多重化されているイベント列を処理する演算装置等を提供する。【解決手段】演算装置１００は、第１のイベント１０００を入力してイベントの種類に対応付けられているイベントＩＤを出力するイベント識別部２０００と、イベントＩＤを入力して当該イベントＩＤに対応する第１の演算途中結果を出力する演算途中結果保持部３０００と、第１のイベント１０００及び第１の演算途中結果を入力して演算処理を行い第２のイベント１１００及び第２の演算途中結果を出力する時系列演算処理部４０００とを備えている。そして、演算途中結果保持部３０００は、第２の演算途中結果を入力して第２の演算途中結果とイベントＩＤとを対応付けて保持する。
2013137067.tif 000002
【特許請求の範囲】
【請求項１】
第１のイベントを入力してイベントの種類に対応付けられているイベントＩＤを出力するイベント識別部と、
前記イベントＩＤを入力して当該イベントＩＤに対応する第１の演算途中結果を出力する演算途中結果保持部と、
前記第１のイベント及び前記第１の演算途中結果を入力して演算処理を行い第２のイベント及び第２の演算途中結果を出力する時系列演算処理部とを備え、
前記演算途中結果保持部は、前記第２の演算途中結果を入力して当該第２の演算途中結果と前記イベントＩＤとを対応付けて保持する、
演算装置。
【請求項２】
第１のイベントを入力してイベントの種類に対応付けられている第１のイベントＩＤを出力し、新たに第２のイベントＩＤを生成し出力するとともに前記イベントの種類と当該第２のイベントＩＤとを対応付けて保持するイベント識別部と、
前記第１のイベントＩＤを入力して当該第１のイベントＩＤに対応する第１の演算途中結果を出力する演算途中結果保持部と、
前記第１のイベント及び前記第１の演算途中結果を入力して演算処理を行い第２のイベント及び第２の演算途中結果を出力する時系列演算処理部とを備え、
前記演算途中結果保持部は、前記第２の演算途中結果及び前記第２のイベントＩＤを入力して当該第２の演算途中結果と当該記第２のイベントＩＤとを対応付けて保持する、
演算装置。
【請求項３】
前記演算処理は、関数を要素とした正規表現の演算処理である、
請求項１又は２記載の演算装置。
【請求項４】
イベント識別部、演算途中結果保持部及び時系列演算処理部を備えた演算装置に用いられる演算方法であって、
前記イベント識別部が、第１のイベントを入力してイベントの種類に対応付けられているイベントＩＤを出力し、
前記演算途中結果保持部が、前記イベントＩＤを入力して当該イベントＩＤに対応する第１の演算途中結果を出力し、
前記時系列演算処理部が、前記第１のイベント及び前記第１の演算途中結果を入力して演算処理を行い第２のイベント及び第２の演算途中結果を出力し、
前記演算途中結果保持部が、前記第２の演算途中結果を入力して当該第２の演算途中結果と前記イベントＩＤとを対応付けて保持する、
演算方法。
【請求項５】
イベント識別部、演算途中結果保持部及び時系列演算処理部を備えた演算装置に用いられる演算方法であって、
前記イベント識別部が、第１のイベントを入力してイベントの種類に対応付けられている第１のイベントＩＤを出力し、新たに第２のイベントＩＤを生成し出力するとともに前記イベントの種類と当該第２のイベントＩＤとを対応付けて保持し、
前記演算途中結果保持部が、前記第１のイベントＩＤを入力して当該第１のイベントＩＤに対応する第１の演算途中結果を出力し、
前記時系列演算処理部が、前記第１のイベント及び前記第１の演算途中結果を入力して演算処理を行い第２のイベント及び第２の演算途中結果を出力し、
前記演算途中結果保持部が、前記第２の演算途中結果及び前記第２のイベントＩＤを入力して当該第２の演算途中結果と当該記第２のイベントＩＤとを対応付けて保持する、
演算方法。
【請求項６】
前記演算処理は、関数を要素とした正規表現の演算処理である、
請求項４又は５記載の演算方法。
【請求項７】
イベント識別手段、演算途中結果保持手段及び時系列演算処理手段をコンピュータに機能させるための演算プログラムであって、
前記イベント識別手段が、第１のイベントを入力してイベントの種類に対応付けられているイベントＩＤを出力し、
前記演算途中結果保持手段が、前記イベントＩＤを入力して当該イベントＩＤに対応する第１の演算途中結果を出力し、
前記時系列演算処理手段が、前記第１のイベント及び前記第１の演算途中結果を入力して演算処理を行い第２のイベント及び第２の演算途中結果を出力し、
前記演算途中結果保持手段が、前記第２の演算途中結果を入力して当該第２の演算途中結果と前記イベントＩＤとを対応付けて保持する、
演算プログラム。
【請求項８】
イベント識別手段、演算途中結果保持手段及び時系列演算処理手段をコンピュータに機能させるための演算プログラムであって、
前記イベント識別手段が、第１のイベントを入力してイベントの種類に対応付けられている第１のイベントＩＤを出力し、新たに第２のイベントＩＤを生成し出力するとともに前記イベントの種類と当該第２のイベントＩＤとを対応付けて保持し、
前記演算途中結果保持手段が、前記第１のイベントＩＤを入力して当該第１のイベントＩＤに対応する第１の演算途中結果を出力し、
前記時系列演算処理手段が、前記第１のイベント及び前記第１の演算途中結果を入力して演算処理を行い第２のイベント及び第２の演算途中結果を出力し、
前記演算途中結果保持手段が、前記第２の演算途中結果及び前記第２のイベントＩＤを入力して当該第２の演算途中結果と当該記第２のイベントＩＤとを対応付けて保持する、
演算プログラム。
【請求項９】
前記演算処理は、関数を要素とした正規表現の演算処理である、
請求項７又は８記載の演算プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、イベント列を処理するのに好適な演算装置等に関し、特に、複数種類のイベントが多重化されているイベント列を処理する演算装置等に関する。
【背景技術】
【０００２】
＜関連技術１：決められた長さのイベント列を切り出し、演算処理を行うハードウェアの構成方法＞【０００３】
イベント列を処理する演算装置及び演算方法の、関連技術の一例が、非特許文献１に記載されている。非特許文献１は、入力イベント列から、決められた長さのイベント列（「ウィンドウ」と呼ばれることがある。）を切り出し、該イベント列に対して所定の演算処理を適用するハードウェアの構成方法を開示している。【０００４】
非特許文献１の技術は、例えば、一つのイベントが（連番、銘柄名、価格、売買高）の４つ組からなるイベント列のうち、直近４個のイベントのなかに、銘柄名が予め決められた文字列（例えば、“UBSN”）であるようなイベントがいくつ出現したかを数え上げる、といった演算処理（非特許文献１のＱ３）を行うハードウェアを構成することができる。【０００５】
あるいは、非特許文献１の技術は、例えば、一つのイベントが（連番、銘柄名、価格、売買高）の４つ組からなるイベント列のうち、銘柄名が予め決められた文字列（例えば、“UBSN”）であるような直近４つのイベント列を抜き出し、該４つのイベントにそれぞれ含まれている価格の加重平均を算出する、といった演算処理（非特許文献１のＱ４）を行うハードウェアを構成することができる（非特許文献１の図６）。【０００６】
＜関連技術２：関数の正規表現で与えられるイベント列を検出し、演算処理を行うハードウェアの構成方法＞【０００７】
イベント列を処理する演算装置及び演算方法の、別の関連技術の一例が、非特許文献２に記載されている。非特許文献２は、入力イベント列から、所定の正規表現にマッチするイベント列を検出し、該イベント列に対して所定の演算処理を適用するハードウェアの構成方法を開示している。非特許文献２の図５には、正規表現の基本的な演算子をハードウェア化するための４つの構成パターンが図示されている。【０００８】
非特許文献２の技術は、例えば、一つのイベントが（価格、時刻）の２つ組からなるイベント列のうち、連続する４つのイベントの価格の移動平均を算出するといった演算処理を行うハードウェア（非特許文献２の図６(a)）や、価格の極点（極大、又は、極小）を検出するといった演算処理を行うハードウェア（非特許文献２の図６(b)）を構成することができる。【０００９】
＜その他の関連技術＞
その他の関連技術が、例えば特許文献１、２に開示されている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開平０５−０８１４４２号公報
【特許文献２】特開平０４−０５４５３６号公報
【非特許文献】
【００１１】
【非特許文献１】Ｒ．ミューラー（Mueller）他著、"Streams on Wires ― A Query Compiler for FPGAs"、Proceedings of Very Large Data Base Endowment、米国、２００９年８月、第２巻issue 1、２２９−２４０ページ
【非特許文献２】井上他著、"20Gbps C-Based Complex Event Processing"、Proceedings of int’l Conf. on Field Programmable Logic and Applications、ギリシャ、２０１１年8月、９７−１０２ページ
【非特許文献３】Ｌ．ウッズ（Woods）他著、"Complex Event Detection at Wire Speed with FPGAs"、Proceedings of Very Large Data Base Endowment、米国、２０１０年９月、第３巻issue 1-2、６６０−６６９ページ
【非特許文献４】Ｒ．ミューラー（Mueller）他著、" FPGA Acceleration for the Frequent Item Problem"、Proceedings 26th Int'l Conference on Data Engineering (ICDE)、米国、２０１０年３月、６６９−６８０ページ
【発明の概要】
【発明が解決しようとする課題】
【００１２】
関連技術の問題点は、複数種類のイベントが多重化されているイベント列に対する並行処理を行うハードウェアを、効率的に構成できないことにある。複数種類のイベントが多重化されているイベント列に対する並行処理とは、以下のような処理である。図１７を参照すると、一つのイベントが（連番、銘柄名、価格、売買高）の４つ組からなるイベント列が例示されている。図１７のイベント列において、銘柄名をイベントの種類と考え、銘柄名が異なるイベントを種類が異なるイベントと考える。そうすると、図１７のイベント列は、複数種類のイベントが多重化されているイベント列と考えることができる。【００１３】
非特許文献１の技術は、同一種類のイベント列への所定の演算処理を行うことができる。又は、多重化されたイベント列から同一種類のイベントを取り出したイベント列（以下、イベント種類毎のサブイベント列と呼ぶ。）に対して、所定の演算処理を行うことができる。例えば、図１７の多重化されたイベント列から銘柄名が予め決められた文字列（例えば、“UBSN”）であるような直近４つのイベントに対して、該イベントの価格の加重平均を算出するといった演算処理を行うハードウェアを構成することができる。【００１４】
これに対して、複数種類のイベントが多重化されているイベント列に対する並行処理とは、例えば、図１７のイベント列から、銘柄名が同じイベント列（以下、銘柄ごとのサブイベント列と呼ぶ。）をそれぞれ取り出して、銘柄毎に独立かつ並行して、銘柄ごとのサブイベント列の中の連続する４つのイベントに対して価格の加重平均を算出するといった演算処理である。【００１５】
非特許文献１は、上述の多重化されているイベント列に対する並行処理を効率的に行うハードウェアの構成方法を開示していない。したがって、非特許文献１の技術を持って、上述の多重化されているイベント列に対する並列処理を行おうとする場合、図１８のように、銘柄毎に独立したハードウェアを構成する必要がある。図１８には、並列処理を実行する、ＵＳＢＮに対する演算回路、ＧＯＯＧに対する演算回路、ＷＭＨ．Ｌに対する演算回路、ＢＩＤＵに対する演算回路が示されている。【００１６】
例えば、非特許文献３や非特許文献４では、イベントの種類ごとに独立したハードウェアを構成する手法が開示されている。この理由は、所定の演算処理を複数のイベント（ここでは、連続する４つのイベント）に対して行わなければならないことから、イベントの到着ごとに演算処理を終了することができず、常に演算処理の途中結果を保持する必要があるためである。しかも、ある銘柄の演算処理中に到着する他の銘柄のイベントを処理するために、演算処理の途中結果を銘柄ごとに保持する必要があるためである。【００１７】
しかしながら、多重化されているイベント列においては、一度に一つのイベントしか到着しないという状況が考えられる。そのような場合、図１８のように銘柄ごとに独立したハードウェアを構成したとき、一つのイベントの到着に対して一つの銘柄に対応する演算処理を行うハードウェアしか動作しない。しかも、銘柄ごとに独立したハードウェアはほとんどの部分が同じ処理を行うハードウェアとなっている。具体的には、各ハードウェアは、多重化されたイベント列から注目する銘柄のイベントを取り出す部分が異なるのみであり、銘柄ごとのサブイベント列の中の連続する４つのイベントに対して価格の加重平均を算出する演算回路は共通して有している。このように、同時に動作しない共通部分を多数有するような構成方法は効率的ではない。【００１８】
一方で、半導体回路に搭載可能なハードウェアリソースは有限である。そのため、非効率な構成方法を採ることにより、回路規模が増大し、一つの半導体回路で処理可能な銘柄数が限られることにもつながる。【００１９】
そこで、本発明の目的は、複数種類のイベントが多重化されているイベント列を処理する演算装置及び演算方法を提供することにある。
【課題を解決するための手段】
【００２０】
本発明に係る演算装置は、
第１のイベントを入力してイベントの種類に対応付けられているイベントＩＤを出力するイベント識別部と、
前記イベントＩＤを入力して当該イベントＩＤに対応する第１の演算途中結果を出力する演算途中結果保持部と、
前記第１のイベント及び前記第１の演算途中結果を入力して演算処理を行い第２のイベント及び第２の演算途中結果を出力する時系列演算処理部とを備え、
前記演算途中結果保持部は、前記第２の演算途中結果を入力して当該第２の演算途中結果と前記イベントＩＤとを対応付けて保持する、
ものである。【００２１】
本発明に係る演算方法は、
イベント識別部、演算途中結果保持部及び時系列演算処理部を備えた演算装置に用いられる演算方法であって、
前記イベント識別部が、第１のイベントを入力してイベントの種類に対応付けられているイベントＩＤを出力し、
前記演算途中結果保持部が、前記イベントＩＤを入力して当該イベントＩＤに対応する第１の演算途中結果を出力し、
前記時系列演算処理部が、前記第１のイベント及び前記第１の演算途中結果を入力して演算処理を行い第２のイベント及び第２の演算途中結果を出力し、
前記演算途中結果保持部が、前記第２の演算途中結果を入力して当該第２の演算途中結果と前記イベントＩＤとを対応付けて保持する、
ものである。【００２２】
本発明に係る演算プログラムは、
イベント識別手段、演算途中結果保持手段及び時系列演算処理手段をコンピュータに機能させるための演算プログラムであって、
前記イベント識別手段が、第１のイベントを入力してイベントの種類に対応付けられているイベントＩＤを出力し、
前記演算途中結果保持手段が、前記イベントＩＤを入力して当該イベントＩＤに対応する第１の演算途中結果を出力し、
前記時系列演算処理手段が、前記第１のイベント及び前記第１の演算途中結果を入力して演算処理を行い第２のイベント及び第２の演算途中結果を出力し、
前記演算途中結果保持手段が、前記第２の演算途中結果を入力して当該第２の演算途中結果と前記イベントＩＤとを対応付けて保持する、
ものである。
【発明の効果】
【００２３】
本発明によれば、複数種類のイベントが多重化されているイベント列を処理する演算装置等を提供することができる。
【図面の簡単な説明】
【００２４】
【図１】実施形態１の構成を示すブロック図である。
【図２】実施形態１の構成を示すプロック図である。
【図３】実施形態１の構成を示すプロック図である。
【図４】実施形態１の構成を示すプロック図である。
【図５】実施形態１の構成を示すプロック図である。
【図６】実施形態１の動作を示す流れ図である。
【図７】実施形態１の動作の具体例を示す図である。
【図８】実施形態１の動作の具体例を示す図である。
【図９】実施形態１の動作の具体例を示す図である。
【図１０】実施形態２の構成を示すブロック図である。
【図１１】実施形態２の構成を示すブロック図である。
【図１２】実施形態２の構成を示すブロック図である。
【図１３】実施形態２の動作を示す流れ図である。
【図１４】実施形態２の動作の具体例を示す図である。
【図１５】実施形態２の動作の具体例を示す図である。
【図１６】実施形態２の動作の具体例を示す図である。
【図１７】複数種類のイベントが多重化されたイベント列の具体例を示す図である。
【図１８】複数種類のイベントが多重化されたイベント列を処理する演算装置の一例を示すブロック図である。
【発明を実施するための形態】
【００２５】
以下、添付図面を参照しながら、本発明を実施するための形態（以下「実施形態」という。）について説明する。以下の実施形態は、複数種類のイベントが多重化されたイベント列に対して所定の演算処理をするものであって、複数種類のイベントが多重化されたイベント列から複雑なイベントの検出と、検出したイベント列に対応して定義された計算と、を実現することができる演算装置等に、本発明を適用したものである。
【００２６】
ここで、複数種類のイベントが多重化されたイベント列について説明する。本実施形態における演算装置は、入力されたイベントに対して、所定の処理を行う。所定の処理には、イベントが所定の条件に合致するか否かの検出、及び、イベントを用いた所定の演算が含まれる。ここでの「イベント」とは、「ある事象の発生に伴って生成された各種の情報、あるいは情報の組」を意味する。所定の検出とは、例えば、イベントに含まれる情報（以降、「イベント情報」という。）がある情報に一致するか否かの検出である。あるいは、所定の検出とは、例えば、イベント情報がある閾値以上（又は以下）であるかの検出である。あるいは、所定の検出とは、例えば、イベントに含まれる複数のイベント情報が所定の関係を満たすか否かの検出である。所定の演算とは、例えば、イベント情報を用いた演算である。あるいは、所定の演算とは、例えば、イベント情報と他のある情報との演算である。更に、複数のイベントが時系列的に入力される場合、すなわち、イベント列が入力される場合には、イベント列を構成する各イベントに対して行う、連続的な処理を定義することができる。
【００２７】
一方、１つのイベントは、これが含むイベント情報のうち、１つ以上のイベント情報に注目して分類することができる。これをイベントの種類と呼ぶ。例えば、所定のイベント情報の値で分類をすることができる。（連番、銘柄名、値段、売買高）という４つのイベント情報を持つイベントを、銘柄名の値により分類するなどである。あるいは、あるイベント情報の値がある集合に含まれているか否かによって分類することができる。（連番、銘柄名、値段、売買高）という４つのイベント情報を持つイベントを、銘柄名がある集合（例えば、日経平均構成銘柄）に含まれているかによって分類することができる。
【００２８】
複数のイベントが時系列的に入力される場合、すなわち、イベント列が入力される場合には、イベント列を構成する各イベントに対して、分類を行うことができる。分類を行うと、複数のイベントが時系列的に入力されるイベント列から、同一種類のイベントを取り出したイベント列（以下、イベント種類毎のサブイベント列と呼ぶ。）を構成することができる。このように分類可能なイベントから構成されるイベント列を、複数種類のイベントが多重化されたイベント列と呼ぶ。
【００２９】
（実施形態１：構成）
本実施形態１の演算装置は、１以上のデータ（以下、入力データという。）を含むデータ群（以下、イベントという）を入力とし、所定の演算を実行するものである。具体的には、第１のイベント１０００を時系列的に入力し、所定の演算を行い、第２のイベント１１００を時系列的に出力するものである。
【００３０】
図１は、本実施形態１の演算装置を示す図である。本実施形態１の演算装置１００は、第１のイベント１０００を入力してイベントの種類に対応付けられているイベントＩＤを出力するイベント識別部２０００と、イベントＩＤを入力して当該イベントＩＤに対応する第１の演算途中結果を出力する演算途中結果保持部３０００と、第１のイベント１０００及び第１の演算途中結果を入力して演算処理を行い第２のイベント１１００及び第２の演算途中結果を出力する時系列演算処理部４０００とを備えている。そして、演算途中結果保持部３０００は、第２の演算途中結果を入力して第２の演算途中結果とイベントＩＤとを対応付けて保持する。
【００３１】
図１に示すように、演算装置１００は、第１のイベント１０００の種類を識別するイベント識別部２０００と、演算装置１００で実行される時系列演算処理の途中結果を前記イベントの種類に対応付けて保持する演算途中結果保持部３０００と、所定の時系列演算処理を行う時系列演算処理部４０００とを有している。これらの手段は、それぞれ概略次のように動作する。
【００３２】
演算装置１００に入力されるイベントは、予め１以上のイベント情報により分類されている。これをイベントの種類と呼ぶ。イベントの種類は、例えば、１以上のイベント情報の値によって分類される。また、例えば、１以上のイベント情報の値が、予め定められた集合に含まれるか否かで分類される。また、例えば、複数のイベント情報の値が同じであるか否かで分類される。また、あるいは、イベントが演算装置１００に入力される時間に基づき分類される。更に、イベントの種類に対して識別子（以下、イベントＩＤと呼ぶ。）が対応付けられており、イベント識別部２０００にはイベントの種類とイベントＩＤの対応関係が予め保持されている。
【００３３】
イベント識別部２０００は、演算装置１００に入力された第１のイベント１０００の種類を識別し、該イベント種類に対応するイベントＩＤを演算途中結果保持部３０００に送る。イベント種類の識別には、例えば、割当対応表が使用される。このとき、割当対応表は例えばメモリで実現される。また、例えば、レジスタで実現される。また、イベント種類の識別には、例えば、連想記憶メモリ（Content Addressable memory; CAM）が使用される。また、イベント種類の識別には、例えば、２分探索木に基づく検索器が使用される。
【００３４】
演算途中結果保持部３０００には、直前までの演算処理の途中結果がイベントの種類毎にイベントＩＤに対応付けられて予め保持されている。演算途中結果保持部３０００は、イベント識別部２０００から送られてきた前記イベントＩＤに対応する第１の演算処理途中結果を時系列演算処理部４０００に送る。
【００３５】
時系列演算処理部４０００は、第１のイベント１０００を受け取る。更に、演算途中結果保持部３０００より第１の演算処理途中結果を受け取る。更に、第１のイベント１０００と前記第１の演算処理途中結果に基づき、所定の時系列演算処理を行う。時系列演算処理部４０００の構成には、例えば、非特許文献１記載の、多量のイベントから特定の条件を満たすイベント列を検出する回路を構成する技術を使用できる。あるいは、非特許文献２の「関数を要素とした正規表現の演算」を行うハードウェアを構成する技術を使用できる。
【００３６】
時系列演算処理部４０００は、所定の時系列演算処理により第２のイベント１１００を生成する。第２のイベントは演算装置１００の演算結果として出力される。更に、時系列演算処理部４０００は、所定の時系列演算処理により第２の演算処理途中結果を生成する。第２の演算処理途中結果は演算途中結果保持部３０００に送られる。
【００３７】
演算途中結果保持部３０００は、時系列演算処理部４０００から第２の演算処理途中結果を受け取りイベントＩＤと対応付けて保持する。
【００３８】
図２は、図１に示すイベント識別部２０００の詳細を示す図である。図２を参照すると、イベント識別部２０００は、検索キー抽出部２１０１とイベントＩＤ検索部２２０１とを有する。
【００３９】
図３は、図１に示す演算途中結果保持部３０００の詳細を示す図である。図３を参照すると、演算途中結果保持部３０００は、メモリ３１０１と、メモリ読み込み制御部３２０１と、メモリ書き込み制御部３４０１とを有する。
【００４０】
図４は、図１に示す時系列演算処理部４０００の詳細を示す図である。図４を参照すると、時系列演算処理部４０００は、時系列演算処理計算部４１００と、第１の演算結果保持部４２００と、第２の演算結果保持部４３００とを有する。
【００４１】
第１の演算結果保持部４２００は、演算途中結果保持部３０００から第１の演算処理途中結果を受け取り保持する。
【００４２】
時系列演算処理計算部４１００は、第１のイベントを受け取る、更に、演算結果保持部４２００より第１の演算処理途中結果を受け取る。更に、該第１のイベントと該第１の演算処理途中結果とにより、所定の時系列演算処理を行い、第２のイベント、第２の演算処理途中結果を生成する。該演算処理途中結果を第２の演算結果保持部４３００に送る。
【００４３】
第２の演算結果保持部４３００は、時系列演算処理計算部４１００より第２の演算処理途中結果を受け取り、演算途中結果保持部３０００に送る。
【００４４】
図５は、図１に示す時系列演算処理部４０００の一具体例を示す図である。第１の演算結果保持部４２００は、レジスタ４２０１を有し、演算途中結果保持部３０００より送られてきた第１の演算処理途中結果を保持し、更に、該第１の演算処理途中結果を時系列演算処理計算部４１００に送る。
【００４５】
時系列演算処理計算部４１００は、所定の時系列演算処理を行う時系列演算処理計算回路４１０１を有し、イベント１０００と第１の演算処理途中結果とを受け取り、所定の時系列演算処理を行い、第２のイベントと第２の演算処理途中結果とを生成する。
【００４６】
第２の演算結果保持部４３００は、レジスタ４２０１を有し、時系列演算処理計算回路４１０１が生成した第２の演算処理途中結果を保持し、更に、該演算処理途中結果を演算途中結果保持部３０００に送る。
【００４７】
（実施形態１：動作）
次に、図１乃至図５のブロック図及び図６のフローチャートを参照して本実施形態１の全体の動作について詳細に説明する。
【００４８】
まず、図１に示すように、演算装置１００には、１以上の入力データを有する第１のイベント１０００が入力される（図６のステップＡ１０１）。
【００４９】
次に、図１のイベント識別部２０００が、第１のイベント１０００の種類を識別し、該イベントの種類に対応付けられたイベントＩＤ２００１を出力する（図６のステップＡ１０２）。
【００５０】
次に、イベント識別部２０００は、イベントＩＤ２００１を演算途中結果保持部３０００に送る。演算途中結果保持部３０００は、内部に保持している演算途中結果の中からイベントＩＤ２００１に対応付けられた演算途中結果を選択し、第１の演算途中結果３００１として出力する（図６のステップＡ１０３）。
【００５１】
次に、演算途中結果保持部３０００は、第１の演算途中結果３００１を時系列演算処理部４０００に送る。更に、時系列演算処理部４０００は第１のイベント１０００を受け取る。時系列演算処理部４０００は、第１の演算途中結果３００１と第１のイベント１０００に基づき、所定の時系列演算処理を行い、第２のイベント１１００と第２の演算途中結果３００２を出力する。第２のイベント１１００は、演算装置１００の演算結果として外部に出力される。（図６のステップＡ１０４）。
【００５２】
次に、時系列演算処理部４０００は、第２の演算途中結果３００２を演算途中結果保持部３０００に送る。演算途中結果保持部３０００は、第２の演算途中結果３００２をイベントＩＤ２００１と対応付けて内部に保持する（図６のステップＡ１０５）。
【００５３】
最後に、図６のステップＡ１０１に戻り、新たに入力されたイベントの処理を開始する。
【００５４】
（実施形態１：効果）
次に、本実施形態１の効果について説明する。本実施形態１では、イベント識別部と、演算途中状態保持部と、時系列演算処理部とを備え、イベント識別部が第１のイベントを入力して該イベントの種類に対応付けられているイベントＩＤを出力し、演算途中状態保持部が前記イベントＩＤを入力して該イベントＩＤに対応する第１の演算途中結果を出力し、時系列演算処理部が第１のイベントと第１の演算途中結果とを入力して所定の演算処理を行い第２のイベントと第２の演算途中結果とを出力し、更に演算途中状態保持部が前記第２の演算途中結果を入力して前記イベントＩＤと対応付けて保持するように動作するため、複数種類のイベントが多重化されているイベント列に対する演算処理を達成することができる。
【００５５】
（実施形態１：演算方法及び演算プログラム）
本実施形態１の演算方法は、本実施形態１の演算装置１００の動作を方法の発明として捉えたものである。すなわち、本実施形態１の演算方法は、イベント識別部２０００、演算途中結果保持部３０００及び時系列演算処理部４０００を備えた演算装置１００に用いられる演算方法であって、イベント識別部２０００が、第１のイベント１０００を入力してイベントの種類に対応付けられているイベントＩＤを出力し、演算途中結果保持部３０００が、イベントＩＤを入力してイベントＩＤに対応する第１の演算途中結果を出力し、時系列演算処理部４０００が、第１のイベント１０００及び第１の演算途中結果を入力して演算処理を行い第２のイベント１１００及び第２の演算途中結果を出力し、演算途中結果保持部３０００が、第２の演算途中結果を入力して第２の演算途中結果とイベントＩＤとを対応付けて保持するものである。
【００５６】
本実施形態１の演算装置１００は、ソフトウェアによって実現してもよい。本実施形態１の演算プログラムは、本実施形態１の演算装置１００の各部を各手段に置き換え、各手段をコンピュータに機能させるためのものである。すなわち、本実施形態１の演算プログラムは、イベント識別手段（２０００）、演算途中結果保持手段（３０００）及び時系列演算処理手段（４０００）をコンピュータに機能させるための演算プログラムであって、イベント識別手段（２０００）が、第１のイベント１０００を入力してイベントの種類に対応付けられているイベントＩＤを出力し、演算途中結果保持手段（３０００）が、イベントＩＤを入力してイベントＩＤに対応する第１の演算途中結果を出力し、時系列演算処理手段（４０００）が、第１のイベント１０００及び第１の演算途中結果を入力して演算処理を行い第２のイベント１１００及び第２の演算途中結果を出力し、演算途中結果保持手段（３０００）が、第２の演算途中結果を入力して第２の演算途中結果とイベントＩＤとを対応付けて保持するものである。コンピュータは、メモリ、ＣＰＵ、入出力インタフェースなどからなる一般的なものでよい。本プログラムは、メモリにロードされ、ＣＰＵによって一行ずつ読み出され、解釈され、実行される。また、本プログラムは、非一時的な記録媒体（non-transitory storage medium）、例えば光ディスク、半導体メモリなどに記録されてもよい。その場合、本プログラムは、記録媒体からコンピュータによって読み出され、実行される。
【００５７】
（実施形態２：構成）
図１０は、本実施形態２の演算装置を示す図である。本実施形態２の演算装置２００は、第１のイベント１０００を入力してイベントの種類に対応付けられている第１のイベントＩＤを出力し、新たに第２のイベントＩＤを生成し出力するとともにイベントの種類と第２のイベントＩＤとを対応付けて保持するイベント識別部５０００と、第１のイベントＩＤを入力して第１のイベントＩＤに対応する第１の演算途中結果を出力する演算途中結果保持部６０００と、第１のイベント１０００及び第１の演算途中結果を入力して演算処理を行い第２のイベント１１００及び第２の演算途中結果を出力する時系列演算処理部４０００とを備えている。そして、演算途中結果保持部６０００は、第２の演算途中結果及び第２のイベントＩＤを入力して第２の演算途中結果と記第２のイベントＩＤとを対応付けて保持する。
【００５８】
図１０の演算装置２００は、図１の演算装置１００に比べて、イベント識別部２０００の代わりに第２のイベント識別部５０００を、演算途中結果保持部３０００の代わりに第２の演算途中結果保持部６０００を、それぞれ備える点で異なる。
【００５９】
図１０の第２のイベント識別部５０００は、イベントの種類を識別し、該イベントに対応付けて記憶している第１のイベントＩＤを第２の演算途中結果保持部６０００に送る。同時に、該イベントの種類に対して新たに第２のイベントＩＤを対応づけ、該第２のイベントＩＤを保持する。同時に、第２のイベントＩＤを第２の演算途中結果保持部６０００に送る。新たに対応付けられる第２のイベントＩＤは、例えば、他のイベントの種類に対応付けられていないイベントＩＤであってもよい。また、例えば、他のイベントの種類のうち所定の条件を満たすイベント種類に対応付けられているイベントＩＤを再利用してもよい。前記所定の条件とは、例えば、ある一定期間演算装置に到着していないイベント種類であってもよい。
【００６０】
図１１は、図１０に示す第２のイベント識別部５０００の詳細を示す図である。図１１を参照すると、第２のイベント識別部５０００は、図２のイベント識別部２０００に比べて、検索キー抽出部２１０１の代わりに第２の検索キー抽出部５１０１を、イベントＩＤ検索部２２０１の代わりに第２のイベントＩＤ検索部５２０１を、それぞれ有する点で異なる。
【００６１】
図１０の第２の演算途中結果保持部６０００は、第２のイベント識別部５０００から、第１のイベントＩＤと、第２のイベントＩＤとを、それぞれ受け取る。更に、第１のイベントＩＤに対応する演算処理途中結果を、時系列演算処理部４０００に送る。更に、第２の演算途中結果保持部６０００は、時系列演算処理部４０００から送られてきた演算途中結果を、第２のイベントＩＤと対応付け、保持する。
【００６２】
図１２は、図１０に示す第２の演算途中結果保持部６０００の詳細を示す図である。図１２を参照すると、第２の演算途中結果保持部６０００は、図２の演算途中結果保持部３０００に比べて、メモリ書き込み制御部３４０１の機能が異なる。つまり、メモリ書き込み制御部３４０１は、イベントＩＤ２００１の代わりに第２のイベントＩＤ２２０１を受け取り、時系列演算処理部４０００から受け取った第２の演算途中結果３００２と第２のイベントＩＤ２２０１とを対応付けてメモリ３１０１に書き込む。
【００６３】
（実施形態２：動作）
次に、図１０乃至図１３のブロック図及び図１３のフローチャートを参照して本実施形態の全体の動作について詳細に説明する。図１３のフローチャートは、図６のフローチャートに対して、ステップＡ１０２の代わりにＡ２０２を、ステップＡ１０３の代わりにＡ２０３を、ステップＡ１０５の代わりにＡ２０５を、それぞれ備える点で異なる。
【００６４】
ステップＡ２０２では、第２のイベント識別部５０００が、第１のイベント１０００に基づき、イベント種類を識別し、該イベント種類に対応付けられた第１のイベントＩＤ２１０１を出力する。同時に、新たに第２のイベントＩＤ２２０１を生成し出力する。更に、第２のイベントＩＤ２２０１を前記イベント種類に対応付け保持する。
【００６５】
ステップＡ２０３では、演算途中結果保持部６０００が、イベント識別部５０００から、第１のイベントＩＤ２１０１、及び、第２のイベントＩＤ２２０１を受け取る。更に、演算途中結果保持部６０００は、内部に保持している演算途中結果から、第１のイベントＩＤ２１０１に対応付けられた第１の演算途中結果３００１を選択する。更に、演算途中結果保持部６０００は、選択した第１の演算途中結果３００１を、時系列演算処理部４０００に出力する。
【００６６】
ステップＡ２０５では、演算途中結果保持部６０００が、時系列演算処理部４０００から、第２の演算途中結果３００２を受け取る。更に、演算途中結果保持部６０００は、第２の演算途中結果３００２と、第２のイベントＩＤ２２０１とを対応付けて保持する。
【００６７】
（実施形態２：効果）
次に、本実施形態２の効果について説明する。本実施形態２の演算装置は、第２のイベント識別部と、第２の演算途中状態保持部と、時系列演算処理部を備え、イベント識別部が第１のイベントを入力して該イベントの種類に対応付けられている第１のイベントＩＤと該イベントに対して新たに生成する第２のイベントＩＤとを出力するとともに第２のイベントＩＤを前記イベント種類に対応付けて保持し、第２の途中状態保持部が前記第１のイベントＩＤを入力して該イベントＩＤに対応する第１の演算途中結果を出力し、時系列演算処理部が第１のイベントと第１の演算途中結果を入力して所定の演算処理を行い第２のイベントと第２の演算途中結果を出力し、更に演算途中状態保持部が前記第２の演算途中結果を入力して前記第２のイベントＩＤと対応付けて保持するように動作するため、複数種類のイベントが多重化されているイベント列に対する演算処理を達成することができる。
【００６８】
更に、本実施形態２では、第２のイベント識別部が第２のイベントＩＤを新たに割り当てるように動作するため、演算装置に入力される得るイベント種類が予め分からない場合でも、イベントＩＤを対応付けることができる。また、本実施形態２では、第２のイベント識別部が第２のイベントＩＤを新たに割り当てるように動作するため、演算装置に入力されるイベントの種類の数がイベントＩＤの数よりも多い場合でも、イベントＩＤを対応付けることができる。
【００６９】
（実施形態２：演算方法及び演算プログラム）
本実施形態２の演算方法は、本実施形態２の演算装置１００の動作を方法の発明として捉えたものである。すなわち、本実施形態２の演算方法は、イベント識別部５０００、演算途中結果保持部６０００及び時系列演算処理部４０００を備えた演算装置２００に用いられる演算方法であって、イベント識別部５０００が、第１のイベント１０００を入力してイベントの種類に対応付けられている第１のイベントＩＤを出力し、新たに第２のイベントＩＤを生成し出力するとともにイベントの種類と第２のイベントＩＤとを対応付けて保持し、演算途中結果保持部６０００が、第１のイベントＩＤを入力して第１のイベントＩＤに対応する第１の演算途中結果を出力し、時系列演算処理部４０００が、第１のイベント１０００及び第１の演算途中結果を入力して演算処理を行い第２のイベント１１００及び第２の演算途中結果を出力し、演算途中結果保持部６０００が、第２の演算途中結果及び第２のイベントＩＤを入力して第２の演算途中結果と記第２のイベントＩＤとを対応付けて保持するものである。
【００７０】
本実施形態１の演算装置２００は、ソフトウェアによって実現してもよい。本実施形態２の演算プログラムは、本実施形態２の演算装置２００の各部を各手段に置き換え、各手段をコンピュータに機能させるためのものである。すなわち、本実施形態１の演算プログラムは、イベント識別手段（５０００）、演算途中結果保持手段（６０００）及び時系列演算処理手段（４０００）をコンピュータに機能させるための演算プログラムであって、イベント識別手段（５０００）が、第１のイベント１０００を入力してイベントの種類に対応付けられている第１のイベントＩＤを出力し、新たに第２のイベントＩＤを生成し出力するとともにイベントの種類と第２のイベントＩＤとを対応付けて保持し、演算途中結果保持手段（６０００）が、第１のイベントＩＤを入力して第１のイベントＩＤに対応する第１の演算途中結果を出力し、時系列演算処理手段（４０００）が、第１のイベント１０００及び第１の演算途中結果を入力して演算処理を行い第２のイベント１１００及び第２の演算途中結果を出力し、演算途中結果保持手段（６０００）が、第２の演算途中結果及び第２のイベントＩＤを入力して第２の演算途中結果と記第２のイベントＩＤとを対応付けて保持するものである。コンピュータは、メモリ、ＣＰＵ、入出力インタフェースなどからなる一般的なものでよい。本プログラムは、メモリにロードされ、ＣＰＵによって一行ずつ読み出され、解釈され、実行される。また、本プログラムは、非一時的な記録媒体（non-transitory storage medium）、例えば光ディスク、半導体メモリなどに記録されてもよい。その場合、本プログラムは、記録媒体からコンピュータによって読み出され、実行される。
【００７１】
次に、具体的な実施例を用いて実施形態１，２の動作を説明する。
【００７２】
（実施例１）
図７は、実施形態１に対応する実施例１である。本実施例１の演算装置１００に入力されるイベント１００１は、イベント情報として、都市 city と気温 temp を有する。本実施例ではイベントを都市 city の値で分類する。すなわち、複数種類のイベントが多重化されたイベント列を形成する。図７の演算装置１００は、前記第１のイベントを時系列的に入力し、都市ごとに直近３日間の平均気温を計算し、都市 city と平均気温 temp のイベント情報を有する第２のイベントを時系列的に出力する。
【００７３】
演算装置１００に入力されたイベント１００１は、イベント識別部２０００の検索キー抽出部２１０１と、時系列演算処理計算部４１００のレジスタ４２０１Ａへ、それぞれ送られる。イベント識別部２０００の検索キー抽出部２１０１は、イベント１００１中の都市 city の値を検索キーとして抽出し、イベントＩＤ検索部２２０１に送る。
【００７４】
イベント識別部２０００のイベントＩＤ検索部２２０１は、予め、都市 key とイベントＩＤ event_id の組を保持している。図７を参照すると、広島、名古屋、長野、札幌、福岡に対応するイベントＩＤが、それぞれ 1, 2, 3, 4, 5 であることが例示されている。イベントＩＤ検索部２２０１は、検索キー抽出部２１０１より、検索キー key を受け取り、該検索キーに対するイベントＩＤを演算途中結果保持部３０００のメモリ読み込み制御部３２０１へ送る。
【００７５】
演算途中結果保持部３０００のメモリ３１０１には、イベントＩＤ event_id、前日の気温 t0、前々日の気温 t1 が、それぞれ予め記憶されている。メモリ３１０１に対して、イベントＩＤ event_id の値が示す番地の値を読み出すことで、都市ごとの前日の気温 t0、前々日の気温 t1 をそれぞれ読み出すことができる。図７のメモリ３１０１には、例えば、イベントＩＤ event_id = 1 の値として（メモリの１番地に）、前日の気温 t0 = 20、前々日の気温 t1 = 22 がそれぞれ格納されている。  
【００７６】
演算途中結果保持部３０００のメモリ読み込み制御部３２０１は、イベントＩＤ検索部２２０１からイベントＩＤ event_id を受け取り、該イベントＩＤ event_id の値が示す番地の値を読み出す。同時に、イベントＩＤ event_id をメモリ書き込み制御部３４０１へ送る。更に、時系列演算処理計算部４１００が有するレジスタ４２０１Ｂに、メモリから読み出した前日の気温 t0 を、レジスタ４２０１Ｃに前々日の気温 t1 に、それぞれ格納する。
【００７７】
時系列演算処理部４０００の時系列演算処理計算部４１００は、レジスタ４２０１Ａからイベントを、レジスタ４２０１Ｂから第１の前日の気温 prev_t0 を、レジスタ４２０１Ｃから第1の前々日の気温 prev_t1 を読み出す。更に、イベント ev からイベント情報の気温 ev.temp を取り出し、第１の前日の気温 prev_t0 と第１の前々日の気温 prev_t1 との平均を算出する。算出した平均値を、計算結果 ave のイベント情報の気温 ave.temp に格納する。更に、イベント ev からイベント情報の都市 city を取り出し、計算結果 ave のイベント情報 ave.city へ格納する。更に、計算結果 ave をレジスタ４３０１Ａに格納する。更に、イベント ev のイベント情報の気温 ev.temp の値を第２の前日の気温 next_t0 としてレジスタ４３０１Ｂに格納する。更に、第１の前日の気温 prev_t0 を、第２の前々日の気温 next_t1 としてレジスタ４３０１Ｃに格納する。
【００７８】
演算途中結果保持部３０００のメモリ書き込み制御部３４０１は、メモリ読み込み制御部３２０１からイベントＩＤ event_id を受け取る。更に、レジスタ４３０１Ｂ、及び、レジスタ４３０１Ｃから、第２の前日の気温、第２の前々日の気温を読み出す。更に、メモリ３１０１の前記イベントＩＤ event_id が示す番地に、前記第２の前日の気温、及び、前記第２の前々日の気温を書き込む。
動作１（イベント１００１＿１ { city = 札幌、temp = -3 }）
【００７９】
次に、本実施例１の演算装置のイベント列の処理方法について説明する。図８は、図７で示した都市ごとに直近３日間の平均気温を計算する演算装置における、動作の一例を示す図である。図８は、入力として都市 city が札幌、気温 temp が -3 のイベント１００１＿１が処理装置に与えられる例を示している。
【００８０】
まず、イベント１００１＿１は、イベント識別部２０００の検索キー抽出部２１０１、及び、時系列演算処理部４０００のレジスタ４２０１Ａに、それぞれ送られる。検索キー抽出部２１０１は、送られてきたイベント１００１＿１から都市city の値（札幌）を取り出し、検索キーとしてイベントＩＤ検索部２２０１に送る。イベントＩＤ検索部２２０１は、検索キーの値（札幌）に基づきイベントＩＤ event_id の値 (4) を検索し、該イベントＩＤを演算途中結果保持部３０００のメモリ読み込み制御部３２０１に送る。
【００８１】
メモリ読み込み制御部３２０１は、前記イベントＩＤ event_id の値 (4) に基づき、メモリ３１０１の４番地から第1の前日の気温 t0 と第１の前々日の気温 t1 を読み出す。このとき読み出す値は、それぞれ、{t0 = -8, t1 = -4} である。メモリ読み込み制御部３２０１は、前記値を時系列演算処理部４０００のレジスタ４２０１Ｂとレジスタ４２０１Ｃにそれぞれ格納する。
【００８２】
時系列演算処理計算部４１００は、レジスタ４２０１Ａ，４２０１Ｂ，４２０１Ｃの値をそれぞれ読み出し所定の演算を行う。第２のイベントとして都市 city が札幌、気温 temp が -5 が作成され、演算装置１００の出力データとして出力される。更に、第２の前日の気温 next_t0 の値 (-3) がレジスタ４３０１Ｂに、第２の前々日の気温 next_t1 の値 (-8) がレジスタ４３０１Ｃに格納される。
【００８３】
メモリ書き込み制御部３４０１は、メモリ読み込み制御部３２０１よりイベント event_id を受け取り、同時にレジスタ４３０１Ｂ，４３０１Ｃより、第２の前日の気温、及び、第２の前々日の気温をそれぞれ読み出す。更に、前記イベントＩＤ event_id の値 (4) 基づき、メモリ３１０１の４番地に、第２の前日の気温の値 (-3)、第２の前々日の気温の値 (-8) を格納する。
動作２（イベント１００１＿２ {city = 広島、temp = 25}）
【００８４】
図９は、図７で示した都市ごとに直近３日間の平均気温を計算する演算装置の動作の一例を示す図である。図９は、図８の動作が完了した直後を示している。図８に比べて図９では、メモリ３１０１の４番地が、第２の前日の気温の値 (-3)、第２の前々日の気温の値 (-8) で更新されていることがわかる。更に、図９は、入力として都市 city が広島、気温 temp が 25 のイベント１００１＿２が処理装置に与えられる例を示している。
【００８５】
イベント識別部２０００は、イベント１００１＿２から検索キー（広島）を取り出し、該検索キーに基づきイベントＩＤ event_id の値 (1) を取得し、演算途中結果保持部３０００に送る。演算途中結果保持部３０００は、イベントＩＤ event_id の値 (1) に基づき、第１の前日の気温、及び、第１の前々日の気温の値 {t0 = 20, t1 = 22} を取得し、時系列演算処理部４０００に送る。
【００８６】
時系列演算処理部４０００は、第１のイベント ev 、第１の前日の気温、第１の前々日の気温に基づき、所定の演算を行い、第２のイベント ave の値 {city = 広島、temp = 22}、第２の前日の気温の値 (25)、第２の前々日の気温の値 (20) を生成する。第２の前日の気温、第２の前々日の気温は、演算途中結果保持部３０００に送られる。演算途中結果保持部３０００は、イベントＩＤ event_id の値 (1) に基づき、メモリ３１０１の１番地に第２の前日の気温の値 (25)、及び、第２の前々日の気温の値 (20) を、それぞれ格納する。
【００８７】
（実施例２）
図１４は、実施形態２に対応する実施例２である。本実施例２の演算装置２００に入力されるイベント１００２は、イベント情報として、センサーの種類 SensorType、場所 Area、時刻 TimeStamp, 値 Value を有する。センサーの種類 SensorType は、温度センサー Temperature と煙センサー Smoke という２種類の値をとる。値 Value は、センサーの種類が温度センサー Temperature であるときに温度値をとる。また、値 Value は、センサーの種類が煙センサー Smoke であるときに煙の有無をとる。本実施例２では、イベントを場所 Area の値で分類する。すなわち、場所ごとに、センサー種類、センサー値、時刻、値を有するイベントが時系列的に到着する、複数種類のイベントが多重化されたイベント列を形成する。
【００８８】
図１４の演算装置２００は、このような複数種類のイベントが重化されたイベントを入力し、場所 Areaごとに注目するイベント列を検出するものである。本実施例２での注目するイベント列とは以下のようなものである。
イベント列を場所ごとに分類したサブイベント列において、
温度センサーの値が４５以上であるようなイベントが到着し、
引き続き、煙センサーの値が１であるようなイベントが５分以内に到着する。
【００８９】
これは、例えば、温度センサーと煙センサーを用いて火災の発生を検出する処理装置であって、火災の発生の検出として「温度が４５度以上」で、かつ、「ほぼ同時に煙が検出される」というイベント列の検出を使用するもの、の一つの実現例である。また、例えば、温度センサーと煙センサーを用いて機器の異常を検出する処理装置であって、機器の異常を検出として「温度が４５度以上」で、かつ、「ほぼ同時に煙が検出される」というイベント列の検出を使用するもの、の一つの実現例である。
【００９０】
演算装置２００に入力されたイベント１００２は、イベント識別部５０００の検索キー抽出部２１０１に送られる。イベント識別部５０００の検索キー抽出部２１０１は、イベント１００２中の場所 Area と時刻 TimeStamp の値を検索キーとして抽出し、イベントＩＤ検索部５２０１に送る。イベント識別部５０００のイベントＩＤ検索部５２０１は、予め、場所 Area とイベントＩＤ event_id と時刻 TimeStamp との組を保持している。
【００９１】
図１４を参照すると、場所 Area の値が 1F, 3F, 5F, 7F, 9F に対応する、イベントＩＤの値がそれぞれ 1, 2, 3, 4, 5 であり、時刻 TimeStamp の値がそれぞれ、 9:00, 9:01, 9:02, 9:03, 9:04 であることが例示されている。
【００９２】
イベントＩＤ検索部５２０１は、検索キー抽出部５１０１より検索キー key = {Area, TimeStamp} を受け取る。更に、第１のイベントＩＤと第２のイベントＩＤを以下の規則に基づき検索する。規則１．予め保持している、「場所 Area とイベントＩＤ event_id と時刻 TimeStamp の組」の中に、 key 中の Area の値が一致する組が存在する場合には、その組の event_id の値を、第１のイベントＩＤ event_id_1 と第２のイベントＩＤ event_id_2 とする。
【００９３】
規則２．前記「場所 Area とイベントＩＤ event_id と時刻 TimeStamp の組」の中に、key 中の Area の値が一致する組が存在しない場合には、第１のイベントＩＤ event_id_1 の値を 0 とする。更に、予め保持している「場所 Area とイベントＩＤ event_id と時刻 TimeStamp の組」の中で、TimeStamp の値が最も古い組を選び、該組の event_id の値を第２のイベントＩＤ event_id_2 とする。そして、前記検索キー key と第２のイベントＩＤを対応付け、前記の組と置き換えて保持する。
【００９４】
イベントＩＤ検索部５２０１は、検索した第１のイベントＩＤ event_id_1 と第２のイベントＩＤ event_id_2 とを、第２の演算途中結果保持部６０００に送る。第２の演算途中結果保持部６０００は、イベントＩＤと時系列演算処理計算部４１００の計算途中結果とを対応付けてメモリ３１０１に予め記憶している。本実施例２の計算途中結果は、直前のイベントが「温度センサーの値が４５以上であるようなイベント」であるかの判定結果 A と、該イベントの時刻の値 ts である。
【００９５】
メモリ３１０１は、例えば、第１のイベントＩＤ event_id = 1 の値として（メモリの１番地）に、直前イベント判定結果 A = 0, イベント時刻 ts = 9:00 がそれぞれ格納されており、第１のイベントＩＤ event_id_1 の値が示す番地の値を読み出すことで、イベント判定結果 A の値とイベント時刻 ts の値とがそれぞれ読み出される。読み出された値は、第１のイベント判定結果 A 、及び、第１のイベント時刻として時系列演算処理計算部４１００に送られる。
【００９６】
図１４の時系列演算処理計算部４１００は、入力イベントが「温度センサーの値が４５以上である」イベントＡであるかどうかを判別する時系列演算処理計算部４１０２Ａと、入力イベントが「煙センサーの値が１であるようなイベントであり、かつ、直前のイベント時刻と、該イベント時刻の差が５分以内である」イベントＢであるかを判別する時系列演算処理計算部４１０２Ｂとを有する。更に、イベント列をイベント種類毎に分類したサブイベント列中にイベントＡとイベントＢが連続して出現することを判別する論理回路４１０３Ａ，４１０３Ｂを有する。論理回路４１０３Ａ，４１０３Ｂの構成には、例えば、非特許文献２に記載の、「関数を要素とした正規表現の演算」を行うハードウェアの構成方法を利用できる。
【００９７】
時系列演算処理計算部４１００は、第１のイベントと、第１のイベント判定結果 A と、第１のイベント時刻 ts とを受け取り、所定の演算を行い、第２のイベントと、第２のイベント判定結果 A と、第２のイベント時刻 ts とを生成する。第２のイベントは、演算装置２００の演算結果として出力される。第２のイベント判定結果 A と第２のイベント時刻 ts とは、第２の演算途中結果保持部６０００に送られる。
【００９８】
第２の演算途中結果保持部６０００は、第２のイベント判定結果 A と第２のイベント時刻 ts とを受け取り、第２のイベントＩＤと対応付けて保持する。すなわち、第２のイベントＩＤ event_id_2 の値をアドレスとして、メモリ３１０１に、第２のイベント判定結果 A の値と第２のイベント時刻 ts の値とを書き込む。
動作１（イベント１００２＿１ { SensorType = Smoke, Area = 3F, TimeStamp = 9:05, Value = 1 } ）
【００９９】
次に、本実施例２の演算装置のイベント列の処理方法について説明する。図１５は、図１４で示した演算装置の動作の一例を示す図である。図１５は、入力としてセンサー種類 SensorType が煙 Smoke、場所 Area が 3F、時刻 TimeStamp が 9:05、値 Value が 1 のイベント１００２＿１が処理装置に与えられる例を示している。
【０１００】
まず、イベント１００２＿１は、イベント識別部５０００の検索キー抽出部５１０１に送られる。検索キー抽出部５１０１は、送られてきたイベント１００２＿１から、場所 Area の値 (3F) と、時刻 (9:05) を取り出して検索キー key とし、第２のイベントＩＤ検索部５２０１に送る。
【０１０１】
第２のイベントＩＤ検索部５２０１は、検索キーの値({Area = 3F, TimeStamp = 9:05})と所定の手順に基づき、場所 Area が一致する組を検索する。第２のイベントＩＤ検索部５２０１には、場所 Area の値が 3F の組を予め保持しているため、該組のイベントＩＤ event_id の値 (2) を取得する。取得したイベントＩＤ event_id の値を、第１のイベントＩＤ event_id_1 と第２のイベントＩＤ event_id_2 の値とする。更に、取得した該第１のイベントＩＤと第２のイベントＩＤとを、第２の演算途中結果保持部６０００に送る。
【０１０２】
第２の演算途中結果保持部６０００では、メモリ読み込み制御部３２０１が、前記第１のイベントＩＤ event_id_1 を受け取り、該第１のイベントＩＤ event_id_1 の値 (2) に基づき、メモリ３１０１の２番地から、イベント判定結果 A の値 (1) と、イベント時刻 ts の値 (9:01) の値を、それぞれ読み出す。更に、第１のイベント判定結果 A と、第１のイベント時刻として、時系列演算処理計算部４１００に送る。送られた値は、レジスタ４２０２Ａに第１のイベント判定結果 A の値が、レジスタ４２０２Ｂに第１のイベント時刻 ts の値が、それぞれ格納される。
【０１０３】
時系列演算処理部４０００の時系列演算処理計算部４１００は、レジスタ４２０２Ａ，４２０２Ｂ、４２０２Ｃの値をそれぞれ読み出し、所定の演算を行う。「温度センサーの値が４５以上である」イベントＡであるかどうかを判別する時系列演算処理計算部４１０２Ａは、レジスタ４２０２Ｃから読み出されるイベント１００２＿１のセンサー種類 SensorType が 煙センサー Smoke であることから、イベント判定結果 A の値 0 をレジスタ４３０２Ａに格納する。同時に、イベント１００２＿１の時刻 TimeStamp の値 9:05 をレジスタ４３０２Ｂに格納する。
【０１０４】
「煙センサーの値が１であるようなイベントであり、かつ、直前のイベント時刻と、該イベント時刻の差が５分以内である」イベントＢであるかを判別する時系列演算処理計算部４１０２Ｂは、レジスタ４２０２Ｃから読み出されるイベント１００２＿１のセンサー種類 SensorType が煙センサー Smoke であり、値 Value が 1 であること、更に、レジスタ４２０２Ｂから読み出した直前のイベント時刻 9:01 と、イベント１００２＿１のイベント時刻 9:05 の差が５分以内であることから、イベントＢであると判別する。更に、レジスタ４２０２Ａから読み出した、直前のイベント判定結果 A の値が 1 であり、時系列演算処理計算部４１０２Ｂが出力するインベントＢの判定結果 B の値が 1 であることから、場所 Area の値が 3F であるようなイベントからなるイベント列中にイベントＡ、Ｂが連続して出現すると判別し、レジスタ４３０２Ｃに結果の値 1 を格納する。
【０１０５】
第２の演算途中結果保持部６０００のメモリ書き込み制御部３４０１は、第２のイベントＩＤ検索部５２０１から第２のイベントＩＤ event_id_2 を受け取り、同時にレジスタ４３０２Ａ，４３０２Ｂより、第２のイベント判定結果 A、及び、第２のイベント時刻 ts をそれぞれ読み出す。更に、前記第２のイベントＩＤ event_id_2 の値 (2) に基づき、メモリ３１０１の２番地に、第２のイベント判定結果の値 (0) 、第２のイベント時刻の値 (9:05) を格納する。
【０１０６】
最後に、レジスタ４３０２Ｃに格納された値 1 は、演算装置２００の出力である第２のイベントとして出力される。すなわち、例えば、火災の発生の検出が検出される。また、例えば、機器の異常が検出される。
動作２（イベント１００２＿２ { SensorType = Temperature, Area = 2F, TimeStamp = 9:07, Value = 50 } ）
【０１０７】
図１６は、図１４で示した演算装置の動作の一例を示す図である。図１６は図１５の動作が完了した直後を示している。図１５に比べて図１６では、メモリ３１０１の２番地が、第２のイベント判定結果の値 (0)、第２のイベント時刻の値 (9:05) で更新されていることがわかる。更に、図１６は、入力として、入力としてセンサー種類 SensorType が温度 Temperature、場所 Area が 2F、時刻 TimeStamp が 9:07、値 Value が 50 のイベント１００２＿２が処理装置に与えられる例を示している。
【０１０８】
第２のイベント識別部５０００は、イベント１００２＿２から検索キー（{Area = 2F, TimeStamp = 9:07}）を取り出す。そして、所定の手続きに従い、該検索キーに基づき，場所 Area が一致する組を検索する。第２のイベント識別部５０００は、場所 Area の値 2F の組を保持していないため、第１のイベントＩＤ event_id_1 の値を 0 とする。更に、予め保持している組の中から時刻 TimeStamp が最も古い組（１行目）のイベントＩＤ event_id の値 (1) を、第２のイベントＩＤの値とする。そして、前記検索キー key= { Area = 2F, TimeStamp = 9:07}と第２のイベントＩＤの値 (1) を対応付け、前記組（１行目）と置き換えて保持する。更に、取得した該第１のイベントＩＤと第２のイベントＩＤとを、第２の演算途中結果保持部６０００に送る。
【０１０９】
第２の演算途中結果保持部３０００は、第１のイベントＩＤ event_id_1 の値 (0) に基づき、第１のイベント判定結果 A と、第１のイベント時刻 ts を取得しようとするが、メモリ３１０１の０番地にはデータが存在しないため、第１のイベント判定結果 A の値として 0 を、第１のイベント時刻として無効値 n/a を、それぞれ、時系列演算処理部４０００に送る。
【０１１０】
時系列演算処理部４０００は、第１のイベント、第１のイベント判定結果 (0)、第１のイベント時刻 (n/a) に基づき所定の演算を行い、第２のイベント (0) と、第２のイベント判定結果 A(1) と、第２のイベント時刻 (9:07) とを、それぞれ生成する。 
【０１１１】
演算途中結果保持部６０００は、第２のイベントＩＤ event_id_2 の値 (1) に基づき、メモリ３１０１の１番地に第２のイベント判定結果 A の値 (1) と、及び、第２のイベント時刻の値 (9:07) とを、それぞれ格納する。
【０１１２】
本実施例２では、第２のイベントＩＤ検索部が、場所 Area が 2F であるようなイベント種類が初めて出現した時に、新しいイベントＩＤを対応付けることで、第２の演算途中結果保持部３０００が、場所 Area が 2F であるようなイベント列の演算途中結果を保持していない場合でも、次のイベントの到着に備えて演算途中結果を保持することができる。
【０１１３】
以上、上記各実施形態及び実施例を参照して本発明を説明したが、本発明は上記各実施形態及び実施例に限定されるものではない。本発明の構成や詳細については、当業者が理解し得るさまざまな変更を加えることができる。また、本発明には、上記各実施形態及び実施例の構成の一部又は全部を相互に適宜組み合わせたものも含まれる。
【０１１４】
上記の実施形態及び実施例の一部又は全部は以下の付記のようにも記載され得るが、本発明は以下の構成に限定されるものではない。
【０１１５】
［付記１］第１のイベントを入力してイベントの種類に対応付けられているイベントＩＤを出力するイベント識別部と、
前記イベントＩＤを入力して当該イベントＩＤに対応する第１の演算途中結果を出力する演算途中結果保持部と、
前記第１のイベント及び前記第１の演算途中結果を入力して演算処理を行い第２のイベント及び第２の演算途中結果を出力する時系列演算処理部とを備え、
前記演算途中結果保持部は、前記第２の演算途中結果を入力して当該第２の演算途中結果と前記イベントＩＤとを対応付けて保持する、
演算装置。
【０１１６】
［付記２］第１のイベントを入力してイベントの種類に対応付けられている第１のイベントＩＤを出力し、新たに第２のイベントＩＤを生成し出力するとともに前記イベントの種類と当該第２のイベントＩＤとを対応付けて保持するイベント識別部と、
前記第１のイベントＩＤを入力して当該第１のイベントＩＤに対応する第１の演算途中結果を出力する演算途中結果保持部と、
前記第１のイベント及び前記第１の演算途中結果を入力して演算処理を行い第２のイベント及び第２の演算途中結果を出力する時系列演算処理部とを備え、
前記演算途中結果保持部は、前記第２の演算途中結果及び前記第２のイベントＩＤを入力して当該第２の演算途中結果と当該記第２のイベントＩＤとを対応付けて保持する、
演算装置。
【０１１７】
［付記３］前記演算処理は、関数を要素とした正規表現の演算処理である、
付記１又は２記載の演算装置。
【０１１８】
［付記４］イベント識別部、演算途中結果保持部及び時系列演算処理部を備えた演算装置に用いられる演算方法であって、
前記イベント識別部が、第１のイベントを入力してイベントの種類に対応付けられているイベントＩＤを出力し、
前記演算途中結果保持部が、前記イベントＩＤを入力して当該イベントＩＤに対応する第１の演算途中結果を出力し、
前記時系列演算処理部が、前記第１のイベント及び前記第１の演算途中結果を入力して演算処理を行い第２のイベント及び第２の演算途中結果を出力し、
前記演算途中結果保持部が、前記第２の演算途中結果を入力して当該第２の演算途中結果と前記イベントＩＤとを対応付けて保持する、
演算方法。
【０１１９】
［付記５］イベント識別部、演算途中結果保持部及び時系列演算処理部を備えた演算装置に用いられる演算方法であって、
前記イベント識別部が、第１のイベントを入力してイベントの種類に対応付けられている第１のイベントＩＤを出力し、新たに第２のイベントＩＤを生成し出力するとともに前記イベントの種類と当該第２のイベントＩＤとを対応付けて保持し、
前記演算途中結果保持部が、前記第１のイベントＩＤを入力して当該第１のイベントＩＤに対応する第１の演算途中結果を出力し、
前記時系列演算処理部が、前記第１のイベント及び前記第１の演算途中結果を入力して演算処理を行い第２のイベント及び第２の演算途中結果を出力し、
前記演算途中結果保持部が、前記第２の演算途中結果及び前記第２のイベントＩＤを入力して当該第２の演算途中結果と当該記第２のイベントＩＤとを対応付けて保持する、
演算方法。
【０１２０】
［付記６］前記演算処理は、関数を要素とした正規表現の演算処理である、
付記４又は５記載の演算方法。
【０１２１】
［付記７］イベント識別手段、演算途中結果保持手段及び時系列演算処理手段をコンピュータに機能させるための演算プログラムであって、
前記イベント識別手段が、第１のイベントを入力してイベントの種類に対応付けられているイベントＩＤを出力し、
前記演算途中結果保持手段が、前記イベントＩＤを入力して当該イベントＩＤに対応する第１の演算途中結果を出力し、
前記時系列演算処理手段が、前記第１のイベント及び前記第１の演算途中結果を入力して演算処理を行い第２のイベント及び第２の演算途中結果を出力し、
前記演算途中結果保持手段が、前記第２の演算途中結果を入力して当該第２の演算途中結果と前記イベントＩＤとを対応付けて保持する、
演算プログラム。
【０１２２】
［付記８］イベント識別手段、演算途中結果保持手段及び時系列演算処理手段をコンピュータに機能させるための演算プログラムであって、
前記イベント識別手段が、第１のイベントを入力してイベントの種類に対応付けられている第１のイベントＩＤを出力し、新たに第２のイベントＩＤを生成し出力するとともに前記イベントの種類と当該第２のイベントＩＤとを対応付けて保持し、
前記演算途中結果保持手段が、前記第１のイベントＩＤを入力して当該第１のイベントＩＤに対応する第１の演算途中結果を出力し、
前記時系列演算処理手段が、前記第１のイベント及び前記第１の演算途中結果を入力して演算処理を行い第２のイベント及び第２の演算途中結果を出力し、
前記演算途中結果保持手段が、前記第２の演算途中結果及び前記第２のイベントＩＤを入力して当該第２の演算途中結果と当該記第２のイベントＩＤとを対応付けて保持する、
演算プログラム。
【０１２３】
［付記９］前記演算処理は、関数を要素とした正規表現の演算処理である、
付記７又は８記載の演算プログラム。
【０１２４】
この出願は２０１２年３月１５日に出願された日本出願特願２０１２−０５９２６２を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１２５】
本発明によれば、センサーや端末からのリアルタイム情報（イベント列）の処理を行うといった用途に適用できる。特に、大量のセンサーや大量の端末から送信されるイベント列に対して、個別のセンサーごとにイベントを分類し、個々の分類ごとに所定の処理を行うといった用途に適用できる。また、センサーを予め決められた集合に属しているか否かによって分類し（各家庭に配置されているセンサー、各ビルに配置されているセンサー、ビルの各階に配置されているセンサー等）、個々の分類ごとに所定の処理を行うといった用途に適用できる。
【符号の説明】
【０１２６】
１００，２００  演算装置
１０００  第１のイベント
１１００  第２のイベント
１００１、１００２  第１のイベントの例
１１０１、１１０２  第２のイベントの例
２０００  イベント識別部
２００１  イベントＩＤ
２１０１  検索キー抽出部
２２０１  イベントＩＤ検索部
３０００  演算途中結果保持部
３００１  第１の演算途中結果
３００２  第２の演算途中結果
３１０１  メモリ
３２０１  メモリ読み込み制御部
３３０１  メモリ書き込み制御部
４０００  時系列演算処理部
４１００  時系列演算処理計算部
４１０２Ａ，４１０２Ｂ  時系列演算処理計算部
４１０３Ａ，４１０３Ｂ  論理回路
４２００  第１の演算結果保持部
４２０１Ａ，４２０１Ｂ，４２０１Ｃ  レジスタ
４２０２Ａ，４２０２Ｂ，４２０２Ｃ  レジスタ
４３００  第２の演算結果保持部
４３０１Ａ，４３０１Ｂ，４３０１Ｃ  レジスタ
４３０２Ａ，４３０２Ｂ，４３０２Ｃ  レジスタ
５０００  第２のイベント識別部
５００１  第１のイベントＩＤ
５００２  第２のイベントＩＤ
５１０１  第２の検索キー抽出部
５２０１  第２のイベントＩＤ検索部
６０００  第２の演算途中結果保持部
【図１】
2013137067.tif 000003
【図２】
2013137067.tif 000004
【図３】
2013137067.tif 000005
【図４】
2013137067.tif 000006
【図５】
2013137067.tif 000007
【図６】
2013137067.tif 000008
【図７】
2013137067.tif 000009
【図８】
2013137067.tif 000010
【図９】
2013137067.tif 000011
【図１０】
2013137067.tif 000012
【図１１】
2013137067.tif 000013
【図１２】
2013137067.tif 000014
【図１３】
2013137067.tif 000015
【図１４】
2013137067.tif 000016
【図１５】
2013137067.tif 000017
【図１６】
2013137067.tif 000018
【図１７】
2013137067.tif 000019
【図１８】
2013137067.tif 000020
【国際調査報告】
2013137067.tif 000021
2013137067.tif 000022
2013137067.tif 000023