(57)【特許請求の範囲】
【請求項１】
第１の処理又は第３の処理を実行し第１の結果データ又は第３の結果データを生成する、再構成可能な第１の処理部と、
第２の処理を実行し第２の結果データを生成する第２の処理部と、
前記第１の処理部によって実行される処理を、前記第１の処理から第３の処理に変更する再構成部と、
前記第１の処理部における前記第１の処理の停止、及び前記第１の処理部における前記第３の処理の起動を実行し、前記第１の結果データ及び前記第３の結果データの出力を許可又は禁止する第１の処理制御部と、
前記第１の処理制御部の指示に基づき、前記第１の結果データ及び前記第３の結果データの出力を許可又は禁止する第１の出力制御部と、
前記第１の結果データに前記第１の処理の内容に対応する第１の識別情報を付加して第１の結果データの組を生成し、前記第２の結果データに前記第２の処理の内容に対応する第２の識別情報を付加して第２の結果データの組を生成し、前記第３の結果データに前記第３の処理の内容に対応する第３の識別情報を付加して第３の結果データの組を生成する情報管理部と、
外部から処理変更指示を受けたとき、前記第１の処理制御部に対して前記第１の処理の停止及び前記第３の処理の起動並びに前記第１の結果データ及び前記第３の結果データの出力の許可又は禁止を指示し、前記再構成部に対して前記第１の処理から前記第３の処理への変更を指示し、前記情報管理部に対して前記第２の識別情報及び前記第３の識別情報の付加を指示する状態管理部と、
前記第３の結果データの組及び前記第２の結果データの組を入力し、前記第３の識別情報及び前記第２の識別情報に基づいて、前記第３の結果データの組又は前記第２の結果データの組の一方を選択し、前記選択された結果データの組に含まれる結果データ出力する出力整合部と、
を備えることを特徴とする時系列データ処理装置。
【請求項２】
前記第１の処理部は、前記第１の処理を完了したことを示す第１の完了通知を前記状態管理部に出力し、
前記再構成部は、前記第１の処理から第３の処理への変更を完了したことを示す第２の完了通知を前記状態管理部に出力し、
前記状態管理部は、前記第１の完了通知に基づいて前記第１の処理制御部に対して前記第１の結果データの出力の禁止を指示し、前記再構成部に対して前記第１の処理から前記第３の処理への変更を指示した後、前記第２の完了通知に基づいて前記第１の処理制御部に対して前記第３の処理の起動及び前記第３の結果データの出力の許可を指示する
ことを特徴とする請求項１記載の時系列データ処理装置。
【請求項３】
前記第２の処理部における前記第２の処理の停止及び起動を実行し、前記第２の結果データの出力を許可又は禁止する第２の処理制御部と、
前記第２の結果データの出力を許可又は禁止する第２の出力制御部と、をさらに備え、
前記第２の処理部は、再構成可能で、前記第２の処理を完了したことを示す第３の完了通知を前記状態管理部に出力し、
前記状態管理部は、前記第２の処理制御部に対して前記第２の結果データの出力の許可又は禁止を指示する
を備えることを特徴とする請求項２記載の時系列データ処理装置。
【請求項４】
前記第１の識別情報は、前記第１の処理の内容を示す第１の識別子及び前記第１の処理の変更履歴を示す第１のバージョン番号を含み、
前記第２の識別情報は、前記第２の処理の内容を示す第２の識別子及び前記第２の処理の変更履歴を示す第２のバージョン番号を含み、
前記第３の識別情報は、前記第３の処理の内容を示す第３の識別子及び前記第３の処理の変更履歴を示す第３のバージョン番号を含み、
前記出力整合部は、前記第２の結果データの組と前記第３の結果データの組とが同時に到着し、前記第２の識別子と前記第３の識別子が等しく、前記第２のバージョン番号よりも前記第３のバージョン番号の方が新しいときは、前記第３の結果データを第４の結果データの組として選択し、前記第２の結果データの組を破棄する
ことを特徴とする請求項３に記載の時系列データ処理装置。
【請求項５】
前記情報管理部は、
前記第３の完了通知を入力する前は、前記第３の識別子として、前記第２の識別子と同じ値を付加し、前記第３のバージョン番号として、前記第２のバージョン番号からより古いバージョン番号を付加し、
前記第３の完了通知を入力した後は、前記第３の識別子として、前記第２の識別子と同じ値を付加し、前記第３のバージョン番号として、前記第２のバージョン番号より新しいバージョン番号を付加する
ことを特徴とする請求項４に記載の時系列データ処理装置。
【請求項６】
第１の処理部において第１の処理を実行して第１の結果データを生成し、
前記第１の結果データに前記第１の処理の内容に対応する第１の識別情報を付加して第１の結果データの組を生成し、
第２の処理部において第２の処理を実行して第２の結果データを生成し、
前記第２の結果データに前記第２の処理の内容に対応する第２の識別情報を付加して第２の結果データの組を生成し、
外部から処理変更指示を受けたとき、前記第１の処理部における前記第１の処理を停止して、前記第１の結果データの出力を禁止し、
前記第１の処理部によって実行される処理を前記第１の処理から第３の処理に変更し、
前記第３の処理を起動して、第３の結果データの出力を許可し、
前記第３の結果データに前記第３の処理の内容に対応する第３の識別情報を付加して第３の結果データの組を生成し、
前記第３の結果データの組及び前記第２の結果データの組を入力し、
前記第３の識別情報及び前記第２の識別情報に基づいて、前記第３の結果データの組又は前記第２の結果データの組の一方を選択し、前記選択された結果データの組に含まれる結果データ出力することを特徴とする時系列データ処理方法。
【請求項７】
第１の処理を実行し第１の結果データを出力する第１の処理部、及び第２の処理を実行し第２の結果データを出力する第２の処理部を備える時系列データ処理装置が備えるコンピュータを、
前記第１の処理部によって実行される処理を、前記第１の処理から第３の処理に変更する再構成手段、
前記第１の処理部における前記第１の処理の停止、及び前記第１の処理部における前記第３の処理の起動を実行し、前記第１の結果データ及び第３の結果データの出力を許可又は禁止する第１の処理制御手段、
前記第１の処理制御手段の指示に基づき、前記第１の結果データ及び前記第３の結果データの出力を許可又は禁止する第１の出力制御手段、
前記第１の結果データに前記第１の処理の内容に対応する第１の識別情報を付加して第１の結果データの組を生成し、前記第２の結果データに前記第２の処理の内容に対応する第２の識別情報を付加して第２の結果データの組を生成し、前記第３の結果データに前記第３の処理の内容に対応する第３の識別情報を付加して第３の結果データの組を生成する情報管理手段、
外部から処理変更指示を受けたとき、前記第１の処理制御手段に対して前記第１の処理の停止及び前記第３の処理の起動並びに前記第１の結果データ及び前記第３の結果データの出力の許可又は禁止を指示し、前記再構成手段に対して前記第１の処理から前記第３の処理への変更を指示し、前記情報管理手段に対して前記第２の識別情報及び前記第３の識別情報の付加を指示する状態管理手段、及び
前記第３の結果データの組及び前記第２の結果データの組を入力し、前記第３の識別情報及び前記第２の識別情報に基づいて、前記第３の結果データの組又は前記第２の結果データの組の一方を選択し、前記選択された結果データの組に含まれる結果データ出力する出力整合手段
として機能させることを特徴とする時系列データ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、時系列データを処理する時系列データ処理装置、時系列データ処理方法及び時系列データ処理プログラム記憶媒体に関する。特に、装置上のある領域における処理の実行を継続したまま、他の任意の領域における処理を変更することができる時系列データ処理装置、時系列データ処理方法及び時系列データ処理プログラム記憶媒体に関する。
【背景技術】
【０００２】
まず、「時系列データに対するデータ処理」について説明する。本明細書において、「時系列データに対するデータ処理」とは、時系列入力データ、すなわち、次々と入力される一連のデータに対して行われる処理をいう。時系列データに対するデータ処理の結果データも、同様に次々と出力される。「次々と入力される」とは、複数のデータがある期間にわたってそれぞれ異なるタイミングで処理装置に到着する、という意味である。時系列データに対するデータ処理の例として、時系列データの直近の２つの値の和を取る、といった処理が挙げられる。以降、時系列データに対するデータ処理を、単に、「時系列データ処理」という。【０００３】
以下の説明においては、データの配列を、［１，２，３，４］のように表し、データの集合を、｛１，２，３，４｝のように表し、データの組を＜１０度，１月１日＞のように、括弧の種類によって区別して表す。また、１、２のような、個々のデータの数値は、”１”、”２”のように表記し、構成要素を示す符号と区別する。【０００４】
また、時系列データ処理装置の動作に用いられるクロックの周期を「サイクル」といい、これを期間の単位として用いる。「サイクルの開始時」とは、その期間の最初の時点を意味し、「サイクルの終了時」とは、その期間の最後の時点を意味する。例えば、クロックの周波数が１ＧＨｚである場合は、ある基準時刻について第１サイクルは、基準時刻プラスゼロ秒から基準時刻プラス１ナノ秒の間の期間を、第Ｎサイクルは基準時刻プラス（Ｎ−１）ナノ秒から基準時刻プラスＮナノ秒の期間を意味する。第Ｍサイクルの開始時は、基準時刻プラス（Ｍ−１）ナノ秒を意味し、第Ｍサイクルの終了時は、基準時刻プラスＭナノ秒を意味する。【０００５】
ここで、入力データは１つ以上の値からなる組である。例として、温度と日付の組、温度のみの組、銘柄と株価と時刻の組、が挙げられる。例えば、温度と日付の組を＜１０度，１月１日＞のように表す。入力データと、装置で扱われる値を、それらが混同されるおそれがない場合は、単に「データ」という。【０００６】
時系列データ処理は、複数の入力データに対して行われることが多い。さらに、時系列データ処理は、時系列データのウィンドウに対して行われることが多い。「ウィンドウ」とは、入力データの集合であり、２種類ある。一つは、予め決められた数をＮ（Ｎは１以上の整数）として、直近のＮ個の入力データの集合である。もう一つは、ある決められた時刻の期間をＰとして、入力データの組の１要素を時刻とみなして、その期間に収まる入力データの集合である。【０００７】
例えば、温度と日付の組を入力データとし、＜１０度、１月１日＞、＜１１度、１月２日＞、＜１０度、１月３日＞、＜１０度、１月４日＞という時系列データが与えられたとする。１月４日から過去３日間にわたる期間に収まるウィンドウは、｛＜１１度、１月２日＞，＜１０度、１月３日＞，＜１０度、１月４日＞｝である。【０００８】
また、ウィンドウ内の入力データの集合、部分集合、要素を「ウィンドウデータ」という。時系列データ処理では、このウィンドウデータが記憶されることが多い。以下の説明では、ウィンドウあるいはウィンドウデータを配列あるいは集合として表す。【０００９】
時系列データ処理を、処理の内容を規定することができる領域（以降、「パーティション」という。）、具体的には、処理を実行する回路を構成するための回路情報等を書き込むことができる領域を複数持つＩＣ（Integrated Circuit）チップを用いて実行するものとする。このようなＩＣチップの例として、ＦＰＧＡ（Field Programmable Gate Array）が挙げられる。あるいは、ＩＣチップとして、メモリからプログラムを読み込んで実行するプロセッサを使用して、時系列データ処理を実行することもできる。この場合は、メモリに処理内容、すなわち、処理の手順を指定するプログラムを書き込めばよい。【００１０】
時系列データデータ処理において、第１のパーティションで第１のユーザ定義処理（「被更新処理」と呼ぶ）を実行し、第２のパーティションで第２のユーザ定義処理（「旧処理」と呼ぶ）を実行しているものとする。このとき、旧処理の実行を継続したまま、被更新処理を第３のユーザ定義処理（「新処理」と呼ぶ）に変更したいというニーズが存在する。すなわち、第２のパーティションでの旧処理の実行を継続しながら、第1の領域での被更新処理を停止して新処理に変更する。そして、新処理の実行を開始し、その後、第２の領域での旧処理を停止する。以上のような手順で旧処理から新処理に変更することにより、時間的な連続性を確保して、時系列データ処理装置の処理内容を変更することができる。【００１１】
例として、株券など金融商品の売買のタイミングを決めるための指標を計算するアプリケーションを考える。売買する金融商品の銘柄と売買戦略に応じて、必要な指標は複数存在し、出力すべき指標の集合は異なる。ある装置は、有限数の指標しか同時に計算できない。時刻に応じて売買する銘柄と戦略は変化する。そのため、そのとき売買する銘柄と売買戦略に応じて、算出する指標を変化させたい、というニーズがある。【００１２】
図２５を用いて、背景技術における、処理の変更の例を説明する。直近の２値の和を取る旧処理を、直近の３値の和を取る新処理に変更する、とする。【００１３】
また、１サイクルごとにデータが入力されるものとし、１サイクルを単位とする時刻を用いて説明する。【００１４】
第１サイクルの開始時に、時系列データ１が入力され、旧処理がその値をウィンドウデータとして保存する。【００１５】
第２サイクルの開始時に、時系列データ２が入力され、旧処理がその値をウィンドウデータとして保存する。また、旧処理が、直近の２値が手に入ったため、結果データとして”３”を出力する。【００１６】
第３サイクルの開始時に、新処理を実行する回路情報への書き換え指示が与えられる。新処理を実行する回路情報が書き込まれる予定の領域で動作している処理が停止され、さらに新処理を実行する回路情報が装置に書き込まれ、動作を開始したとする。ここで、旧処理とは別の領域に新処理を実行する回路情報が書き込まれ、旧処理と新処理がしばらくの間並行に動作するものとする。【００１７】
第３サイクルの開始時に、時系列データ”３”が入力され、新処理がその値をウィンドウデータとして保存する。【００１８】
第４サイクルの開始時に、時系列データ”４”が入力され、新処理がその値をウィンドウデータとして保存する。【００１９】
第５サイクルの開始時に、時系列データ”５”が入力され、新処理がその値をウィンドウデータとして保存する。また、新処理が、直近の３値が手に入ったため、結果データとして”１２”を出力する。【００２０】
ここで、旧処理を停止あるいは削除して、処理の変更が完了する。【００２１】
さらに、新処理の結果及び旧処理の結果の装置外部への出力順序や新処理の結果及び旧処理の結果からの出力対象の処理結果の選択についても制御することが望まれることがある。特に、新処理の結果及び旧処理の結果が混在して装置外部へ出力されないようにすることは重要である。さらに、処理の変更前後の旧処理の結果のうち、新処理の実行開始後も有用であり、利用可能なものを最大限に装置外部に出力することも有効である。なお、出力順序、出力対象の選択を制御し、所望の順序で、所望の結果を出力することを「整合を取る」という。「整合」に関しての詳細な説明は後述する。【００２２】
例として、上記の、ある期間の温度センサの値の平均を取って、火事を含む緊急事態を検知するアプリケーションを考える。このとき、温度変化が激しくなってきたときに、温度変化に追従する速度を高めるために、温度の平均を取る期間の幅を変えることが望ましい。また、旧処理、新処理の結果が混同されないように、両方の結果が混在して装置外部に出力されないように処理を変更することも必要である。さらに、旧処理の結果も依然有用で利用可能であるため、新処理の結果が装置外部に出力されるまでの間、旧処理の結果をなるべく多く装置から受け取ることが望ましい。以上のようなニーズが存在する。【００２３】
もう一つの例として、株券など金融商品の売買の指令を行うアプリケーションを考える。売買する銘柄を変えたいため、売買指示の処理を変える必要がある。変更前の銘柄を「旧銘柄」、変更後の銘柄を「新銘柄」という。また、処理の変更の前後で新旧銘柄に関する指示が混在すると、売買を誤る恐れがある。そのため、新旧処理両方の結果を混在して装置外部に出力しないように処理を変更する必要がある。また、旧銘柄に対して、最後のタイミングまで売買指示が行われるかもしれないため、新処理の結果が装置外部に出力されるまでの間、旧処理の結果をなるべく多く装置から受け取ることが望ましい。以上のようなニーズが存在する。【００２４】
さらに、ユーザ定義処理は、処理が完了した状態になるまで停止できず、従って、そのユーザ定義処理が動作しているパーティションは、新処理を実行する回路情報の書き込みの対象にはできない、という要件がある。【００２５】
例として、上述の、株券など金融商品の売買の指令を出すアプリケーションを考える。ここで、アプリケーションから出される買いの指令と、しばらくして続いて出される売りの指令を必ず組にしなければならないというルールがあるとする。売買の指令を行う処理が、買いの指令を一旦出したら、その後、処理が、売りの指令を出すまでは、ユーザはその処理を停止できない。その後、処理が、次の買いの指令を出すまでの期間には、ユーザはその処理を停止できる。その後、処理が、買いの指令を出したら、ユーザは再び処理を停止できなくなる。
すなわち、装置の第２の領域での旧処理の動作中に、第１のユーザ定義処理（被更新処理）が動作中の、装置の第１の領域に新処理を実行する回路情報を書き込むことにより、旧処理から新処理への変更を実現しようとする。このとき、第１の領域への新処理を実行する回路情報の書き込みは、被更新処理が完了した後の期間に行わねばならない、という要件が存在する。【００２６】
以上のような処理に関連する技術が、特許文献１、２、３、非特許文献１に記載されている。【００２７】
特許文献１には、再構成可能な時系列データ処理装置が開示されている。特許文献１の時系列データ処理装置の構成図を図２６に示す。特許文献１の技術は、ユーザが定義した処理を実行するために構成されるもので、処理部６２１、処理制御部６１１と、再構成部６２２と、処理部の結果を外部への出力ポートへ接続する出力接続部６３１からなる。処理部６２１は処理を実行し、処理制御部６１１は処理部６２１で動作する処理の起動、停止の制御を行う。再構成部６２２は処理部６２１の再構成を行う。出力接続部６３１は、処理部６２１と外部への出力ポートとを、接続又は遮断する。【００２８】
特許文献２には、プログラマブル論理回路を利用した、再構成可能な情報処理システムが開示されている。特許文献２のシステムでは、プログラマブル論理回路の論理セルの使用状況を反映する論理セル状態データを使用し、使用可能な論理セルが判別される。【００２９】
特許文献３には、再構成可能回路が開示されている。特許文献３の再構成可能回路では、再構成セルにリセットフラグを備え、再構成セルをリセットから保護する保護モード又はリセットから保護しない通常モードに設定する。【００３０】
非特許文献１には、再構成可能な時系列データ処理装置が開示されている。【００３１】
非特許文献１の時系列データ処理装置の構成図を図２７に示す。非特許文献１の技術は、ホストコンピュータ５０１、処理部５２１、処理制御部５１１、再構成部５２２、出力接続部５３１を備える。ホストコンピュータ５０１は、処理の変更を指令する。処理部５２１は、ユーザが定義した処理を実行する回路を構成する（処理を実行する回路情報を設定する）ことができる領域であって、処理を実行する。処理制御部５１１は、処理部５２１で動作する処理の起動及び停止を行う。再構成部５２２は、処理部５２１の再構成を行う。出力接続部５３１は、処理部５２１の結果を装置外部への出力ポートへ転送する。【００３２】
図２８から図３３を用いて、非特許文献１の技術の動作を説明する。【００３３】
ここでは、直近の２値の和を取る第１の処理が実行されている状態から、直近の３値の和を取る第２の処理を書き込む、という動作について説明する。処理に関するタイミングについては以下の通りであるものとする。
１）第１の処理も第２の処理も、データを入力したサイクルと同じサイクルに結果を生成する。
２）処理の結果は、処理部５２１から出力接続部５３１へ１サイクルで到達する。
３）１サイクルごとにデータが入力される。以下の説明では、１サイクルを単位とする時刻を用いる。【００３４】
第１サイクルの開始時に、ホストコンピュータ５０１、処理起動部５１１は、処理部５２１で動作する第１の処理を起動した状態にある。出力接続部５３１は、第１の処理の結果の装置外部への出力を許可する。具体的には、出力接続部５３１は、処理部５２１の出力を出力ポートに接続する。【００３５】
第１サイクルの開始時に時系列データとして”１”、第２サイクルの開始時に時系列データとして”２”が入力される。第１の処理は直近２値である［１，２］を得たため、処理部５０１が結果として”３”を計算し出力する。第２サイクルの終了時に、各部分は図２８のような状態になる。【００３６】
第３サイクルの開始時に、第２の処理を書き込む指令がホストコンピュータ５０２より出さる。ホストコンピュータ５０２は、処理制御部５１１に、処理部５２１で動作する処理をリセットする指令を出す。処理制御部５１１は処理部５２１で動作する処理をリセットする。さらに、処理制御部５１１は、出力接続部５３１に、処理部５２１の処理の結果の装置外部への出力を遮断する指令を出す。出力接続部５３１は、処理部５２１と出力ポートとの接続を遮断する。第３サイクルの終了時に、各部分は図２９のような状態になる。【００３７】
第４サイクルの開始時に、ホストコンピュータ５０２は構成情報を再構成部５２２に送る。再構成部５２２は構成情報を処理部５２１に送る。第４サイクルの終了時に、各部分は図３０のような状態になる。【００３８】
第１３サイクルの終了時に再構成が完了する。第１４サイクルの開始時に、再構成部５２２が処理制御部５１１に再構成完了を通知する。第１４サイクルの終了時に、各部分は図３１のような状態になる。【００３９】
第１４サイクルの開始時に、処理制御部５１１が処理部５２１に書き込まれた処理を起動する。例えば、処理制御部５１１はリセット信号をディスアサートする。さらに、処理制御部５１１は、処理が起動したかをチェックする。例えば、処理制御部５１１は、処理部５２１から特定のビットパターンが出力されていることをチェックする。【００４０】
第１５サイクルの開始時に、処理制御部５１１が、出力接続部５３１に、第２の処理の結果の装置外部への出力を許可するよう指令する。出力接続部５３１は、第２の処理の結果の装置外部への出力を許可する。具体的には、出力接続部５３１は、処理部５２１の出力を出力ポートに接続する。第１５サイクルの終了時に、各部分は図３２のような状態になる。【００４１】
以降の時刻で、第２の処理が動作を続ける。第１６サイクルの開始時に時系列データ”３”、第１７サイクルの開始時に時系列データ”４”、第１８サイクルの開始時に時系列データ”５”、が入力される。第２の処理は直近２値である［４，５，６］を得たため、処理部５０１が結果として”１５”を計算し出力する。第１８サイクルの終了時に、各部分は図３３のような状態になる。【００４２】
デバイス上の第１の領域では第１のユーザ定義処理（被更新処理）を実行し、第２の領域では第２のユーザ定義処理（旧処理）を実行する。ここで、処理の更新は、第２の領域での旧処理の実行時に行われる。すなわち、第１の領域で実行されている被更新処理を停止して、第１の領域に第３のユーザ定義処理（新処理）を実行する回路の回路情報を書き込む。そして、新処理の実行を開始して、旧処理を停止する。以上のように、旧処理から新処理への変更が行われる。
【先行技術文献】
【特許文献】
【００４３】
【特許文献１】米国特許第６７４４２７４号公報  （第５−１０カラム、図２）
【特許文献２】特開２０００−０９１４３５号公報  （第４−６頁、図１、２、７）
【特許文献３】国際公開ＷＯ２００９／０６３５９６号公報  （第９−１１頁、図１−３）
【非特許文献】
【００４４】
【非特許文献１】Simon Tam and Martin Kellermann, Fast Configuration of PCI Express Technology through Partial Reconfiguration, Xilinx, 2010
【発明の概要】
【発明が解決しようとする課題】
【００４５】
以上のように、旧処理の実行を継続したまま新処理への変更を実現するには、第１の領域で動作する被更新処理が停止した状態にあることを検知して、そこに新処理を実行する回路の回路情報を書き込まねばならない。さらに、再構成完了通知を受け取った際に、どの領域に対する再構成が完了したのか検知する必要がある。すなわち、第１の領域と第２の領域の状態について把握して、その情報を用いて回路情報の書き換えの操作を行わねばならない。ところが、非特許文献１の技術では１つの領域しか扱わないので、旧処理の実行中の被更新処理から新処理への変更、新処理の開始ができない。【００４６】
また、目的とする処理の変更には、旧処理の結果データ及び新処理の結果データの装置外部への出力の順序や、新処理の結果データ及び旧処理の結果データのうちの出力対象の結果データの選択についての「整合性の確保」という要件がある。【００４７】
「整合性の確保」とは、時系列データ処理装置内に同時に存在する新処理結果データ及び旧処理結果データの、生成順序と出力順序との関係の制御、並びに新処理結果データが生成された時刻に基づき出力対象とする結果データの選択を行うことを意味する。「整合性の確保」の詳細については、実施形態の説明にて詳述する。【００４８】
整合性の確保のためには、旧処理の結果データと、新処理の結果データを識別できるようにして、その情報を用いて操作を行わねばならない。ところが、非特許文献１の技術では１つの領域しか扱わないので、旧処理の結果データと新処理の結果データとの識別は行われない。従って、旧処理と新処理の結果データの装置外部への出力について整合を取ることができない。【００４９】
特許文献１の技術でも、複数の領域の情報の取りまとめができないため、上で説明した、領域の状態の把握とその情報を用いた操作ができないという課題がある。【００５０】
また、特許文献１の技術では、複数の領域の間で情報のやりとりをできないので、旧処理と新処理の結果データの装置外部への出力について整合を取ることができない。【００５１】
特許文献２の技術では、その領域が使用可能であるか否かという、領域の状態の把握は可能である。しかし、特許文献２の技術は、旧処理から新処理への変更を考慮したものではなく、処理内容の識別をするための手段を備えない。すなわち、処理回路から出力された結果データが、旧処理によるものか、新処理によるものかを判別するための情報を備えない。従って、旧処理と新処理の結果データの装置外部への出力について整合を取ることができないという課題がある。【００５２】
特許文献３の技術では、各再構成セルへのリセットの有効性の設定は可能である。しかし、特許文献３の技術も、旧処理から新処理への変更を考慮したものではなく、処理内容の識別をするための手段を備えない。従って、旧処理と新処理の結果データの装置外部への出力について整合を取ることができないという課題がある。【００５３】
以上を整理すると、非特許文献１及び特許文献１の技術には、複数の領域のそれぞれにおける処理について、完了、実行中、停止中、処理回路の再構成中、といった状態を把握して、処理の変更の操作ができないという第１の問題がある。なぜなら、複数の領域における処理について、状態を通知したり、記録したりできないためである。【００５４】
また、非特許文献１及び特許文献１−３の技術には、旧処理の実行中に旧処理から新処理に変更する際に、旧処理及び新処理の結果データの、装置外部への出力の順序や、出力対象の結果データの選択についての整合性を確保することができないという第２の問題がある。なぜなら、結果データがどの処理によって生成されたものであるかといった情報や、旧処理と新処理の現在の状態、といった整合に必要な情報を扱うことができないためである。
（発明の目的）
本発明はこのような事情に鑑みて提案されたものであり、旧処理の実行中の新処理への変更、処理の変更時の出力データの選択及び出力順序の制御が可能な時系列データ処理装置、時系列データ処理方法及び時系列データ処理プログラム記憶媒体を提供することにある。
【課題を解決するための手段】
【００５５】
本発明の時系列データ処理装置は、第１の処理又は第３の処理を実行し第１の結果データ又は第３の結果データを生成する、再構成可能な第１の処理部と、  第２の処理を実行し第２の結果データを生成する第２の処理部と、第１の処理部によって実行される処理を、第１の処理から第３の処理に変更する再構成部と、第１の処理部における第１の処理の停止、及び第１の処理部における第３の処理の起動を実行し、第１の結果データ及び第３の結果データの出力を許可又は禁止する第１の処理制御部と、第１の処理制御部の指示に基づき、第１の結果データ及び第３の結果データの出力を許可又は禁止する第１の出力制御部と、第１の結果データに第１の処理の内容に対応する第１の識別情報を付加して第１の結果データの組を生成し、第２の結果データに第２の処理の内容に対応する第２の識別情報を付加して第２の結果データの組を生成し、第３の結果データに第３の処理の内容に対応する第３の識別情報を付加して第３の結果データの組を生成する情報管理部と、外部から処理変更指示を受けたとき、第１の処理制御部に対して第１の処理の停止及び第３の処理の起動並びに第１の結果データ及び第３の結果データの出力の許可又は禁止を指示し、再構成部に対して第１の処理から第３の処理への変更を指示し、情報管理部に対して第２の識別情報及び第３の識別情報の付加を指示する状態管理部と、第１の出力制御部から第３の結果データの組を第２の出力制御部から第２の結果データの組を入力し、第３の識別情報及び第２の識別情報に基づいて、第３の結果データの組又は第２の結果データの組の一方を選択し、選択された結果データの組に含まれる結果データ出力する出力整合部と、を備えることを特徴とする。【００５６】
本発明の時系列データ処理方法は、第１の処理部において第１の処理を実行して第１の結果データを生成し、第１の結果データに第１の処理の内容に対応する第１の識別情報を付加して第１の結果データの組を生成し、第２の処理部において第２の処理を実行して第２の結果データを生成し、第２の結果データに第２の処理の内容に対応する第２の識別情報を付加して第２の結果データの組を生成し、外部から処理変更指示を受けたとき、第１の処理部における第１の処理を停止して、第１の結果データの出力を禁止し、第１の処理部によって実行される処理を第１の処理から第３の処理に変更し、第３の処理を起動して、第３の結果データの出力を許可し、第３の結果データに第３の処理の内容に対応する第３の識別情報を付加して第３の結果データの組を生成し、第１の出力制御部から第３の結果データの組を入力し、第２の出力制御部から第２の結果データの組を入力し、第３の識別情報及び第２の識別情報に基づいて、第３の結果データの組又は第２の結果データの組の一方を選択し、選択された結果データの組に含まれる結果データ出力することを特徴とする。【００５７】
本発明の時系列データ処理プログラム記憶媒体は、第１の処理を実行し第１の結果データを出力する第１の処理部、及び第２の処理を実行し第２の結果データを出力する第２の処理部を備える時系列データ処理装置が備えるコンピュータを、第１の処理部によって実行される処理を、第１の処理から第３の処理に変更する再構成手段、第１の処理部における第１の処理の停止、及び第１の処理部における第３の処理の起動を実行し、第１の結果データ及び第３の結果データの出力を許可又は禁止する第１の処理制御手段、第１の処理制御手段の指示に基づき、第１の結果データ及び第３の結果データの出力を許可又は禁止する第１の出力制御手段、第１の結果データに第１の処理の内容に対応する第１の識別情報を付加して第１の結果データの組を生成し、第２の結果データに第２の処理の内容に対応する第２の識別情報を付加して第２の結果データの組を生成し、第３の結果データに第３の処理の内容に対応する第３の識別情報を付加して第３の結果データの組を生成する情報管理手段、外部から処理変更指示を受けたとき、第１の処理制御手段に対して第１の処理の停止及び第３の処理の起動並びに第１の結果データ及び第３の結果データの出力の許可又は禁止を指示し、再構成手段に対して第１の処理から第３の処理への変更を指示し、情報管理手段に対して第２の識別情報及び第３の識別情報の付加を指示する状態管理手段、及び第１の出力制御部から第３の結果データの組を、第２の出力制御部から第２の結果データの組を入力し、第３の識別情報及び第２の識別情報に基づいて、第３の結果データの組又は第２の結果データの組の一方を選択し、選択された結果データの組に含まれる結果データ出力する出力整合手段として機能させるためのプログラムを格納する。
【発明の効果】
【００５８】
本発明によれば、時系列データの処理において、旧処理の実行中の新処理への変更、処理の変更時の出力データの選択及び出力順序の制御が可能となる。
【図面の簡単な説明】
【００５９】
【図１】本発明の実施形態の時系列データ処理装置の必須の構成を示すブロック図である。
【図２】本発明の実施形態の時系列データ処理装置の構成を示すブロック図である。
【図３】出力整合部１４１の詳細を示すブロック図である。
【図４】バージョン比較部１２１の実装の第１の例を示すブロック図である。
【図５】バージョン比較部１２１の実装の第２の例を示すブロック図である。
【図６】部分バージョン比較部１００１の実装の例を示すブロック図である。
【図７】本発明の実施形態の時系列データ処理装置における処理例を示すフローチャートである。
【図８】本発明の実施形態の時系列データ処理装置における処理例を示すフローチャートである。
【図９】本発明の実施形態の時系列データ処理装置における処理例を示すフローチャートである。
【図１０】本発明の実施形態の時系列データ処理装置における処理例を示すフローチャートである。
【図１１】本発明の実施形態の時系列データ処理装置における処理例を示すフローチャートである。
【図１２】結果データの組のデータ構造の例を示す図である。
【図１３】本発明の実施形態の動作の具体例の、第サイクル終了時の各部の状態を示す図である。
【図１４】本発明の実施形態の動作の具体例の、第サイクル終了時の各部の状態を示す図である。
【図１５】本発明の実施形態の動作の具体例の、第サイクル終了時の各部の状態を示す図である。
【図１６】本発明の実施形態の動作の具体例の、第サイクル終了時の各部の状態を示す図である。
【図１７】本発明の実施形態の動作の具体例の、第サイクル終了時の各部の状態を示す図である。
【図１８】本発明の実施形態の動作の具体例の、第サイクル終了時の各部の状態を示す図である。
【図１９】本発明の実施形態の動作の具体例の、第サイクル終了時の各部の状態を示す図である。
【図２０】本発明の実施形態の動作の具体例の、第サイクル終了時の各部の状態を示す図である。
【図２１】本発明の実施形態の動作の具体例の、第サイクル終了時の各部の状態を示す図である。
【図２２】本発明の実施形態の動作の具体例の、第サイクル終了時の各部の状態を示す図である。
【図２３】本発明の実施形態の動作の具体例の、第サイクル終了時の各部の状態を示す図である。
【図２４】本発明の実施形態の動作の具体例の、第サイクル終了時の各部の状態を示す図である。
【図２５】背景技術の動作例の旧処理と新処理の状態の時間遷移図である。
【図２６】特許文献１の時系列データ処理装置の構成を示すブロック図である。
【図２７】非特許文献１の時系列データ処理装置の構成を示すブロック図である。
【図２８】非特許文献１の時系列データ処理装置の、第２サイクルの終了時の各部の出力データの状態を示した図である。
【図２９】非特許文献１の時系列データ処理装置の、第３サイクルの終了時の各部の出力データの状態を示した図である。
【図３０】非特許文献１の時系列データ処理装置の、第３サイクルの終了時の構成情報の流れを示した図である。
【図３１】非特許文献１の時系列データ処理装置の、第１４サイクルの終了時の各部の出力データの状態を示した図である。
【図３２】非特許文献１の時系列データ処理装置の、第１５サイクルの終了時の各部の出力データの状態を示した図である。
【図３３】非特許文献１の時系列データ処理装置の、第１８サイクルの終了時の各部の出力データの状態を示した図である。
【発明を実施するための形態】
【００６０】
（第１の実施形態）
次に、本発明の実施形態について図面を参照して詳細に説明する。
【００６１】
本実施形態の時系列データ処理装置は、複数の領域でそれぞれユーザ定義処理を実行し、ある領域における処理の実行時に、他の任意の領域の処理を異なる動作をする処理に変更する。
【００６２】
変更前の処理を「第１のユーザ定義処理」、あるいは「旧処理」と呼び、変更後の処理を「第２のユーザ定義処理」、あるいは「新処理」と呼ぶ。新処理を実行する回路情報が書き込まれる領域を第１の処理部、旧処理を実行する回路情報が書き込まれ、旧処理が動作している領域を第２の処理部と呼ぶ。
【００６３】
処理の変更は次のステップで行われる。
（１）新処理を実行する回路情報を第１の処理部に書き込むため、第１の処理部で動作している処理を停止する。
（２）新処理実行する回路情報を第１の処理部に書き込む、
（３）新処理の動作を開始する、
（４）新処理の出力を開始する、
（５）旧処理の動作を停止する、
（６）旧処理実行する回路情報を削除する。
【００６４】
このステップで処理の変更を行うことにより、結果が出力されない期間を短縮する。
【００６５】
時系列データデータ処理は、処理を実行する回路情報を書き込める領域を複数持つデバイスを用いて実現してもよい。このようなデバイスの例として、ＦＰＧＡが挙げられる。この場合、ＦＰＧＡ内の第１の領域が第１の処理部に相当し、第２の領域が第２の処理部に相当する。あるいは時系列データデータ処理を、複数のチップを用いて実現してもよい。この場合、第１のチップが第１の処理部に相当し、第２のチップが第２の処理部に相当する。
【００６６】
図２は、本発明の実施形態に係る時系列データ処理装置の構成を示すブロック図である。
【００６７】
時系列データ処理装置１００は、第１の処理部１２１−１、第２の処理部１２１−２、状態管理部１０１、処理制御部１１１−１、１１１−２、再構成部１２２、出力接続部１３１−１、１３１−２、情報管理部１４２、出力整合部１４１を備える。
【００６８】
第１の処理部１２１−１は、データを入力し、第１のユーザ定義処理を実行し、結果データを出力接続部１３１に送る。第１の処理部１２１−１は、処理が完了した状態にあるという処理の完了通知を状態管理部１０１に出力する。第１の処理部１２１−１は、処理制御部１１１から処理停止指令を入力して、第１のユーザ定義処理を停止する。
【００６９】
第１の処理部１２１−１は、再構成部１２２によって、第１のユーザ定義処理から第３のユーザ定義処理に、実行する処理を変更される。
【００７０】
第１の処理部１２１−１は、処理制御部１１１から処理起動指令を入力すると、第３のユーザ定義処理を起動し、データを入力し、実行し、結果データを出力接続部１３１に出力する。
【００７１】
第２の処理部１２１−２は、データを入力し、第２のユーザ定義処理を実行し、結果データを出力接続部１１１に出力する。
【００７２】
状態管理部１０１は、第１の処理部１２１−１から処理の完了通知を入力し、第１の処理部１２１−１が、処理が完了した状態にあることを記録する。状態管理部１０１は、第１の処理部１２１−１が処理が完了した状態にあるとき、停止シーケンス指令を出力し、第１の処理部１２１−１が停止状態にあることを記録する。
【００７３】
さらに、状態管理部１０１は、第２のユーザ定義処理及び第３のユーザ定義処理の、処理のＩＤとバージョン番号を情報管理部１４２に記録する。そして、状態管理部１０１は、再構成部１２２に、第１の処理部１２１−１に対する再構成開始を指示し、第１の処理部１２１−１が、再構成中であることを記録する。
【００７４】
状態管理部１０１は、再構成部１２２から再構成完了通知を入力すると、第１の処理部１２１−１への再構成が完了したことを記録し、第１の処理部１２１−１に再構成された第３のユーザ定義処理の起動シーケンス指令を出力する。
【００７５】
処理制御部１１１は、状態管理部１０１から停止シーケンス指令を入力すると、第１の処理部１２１−１へ処理停止指令を出力し、出力接続部１３１へ遮断指令を出力する。
【００７６】
また、処理制御部１１１は、状態管理部１０１から起動シーケンス指令を入力すると、第１の処理部１２１−１へ処理起動指令を出力する。そして、処理制御部１１１は、第１の処理部１２１−１の起動成功を確認し、出力接続部１３１へ接続指令を出力する。
【００７７】
再構成部１２２は、第１の処理部１２１−１に対して再構成を行い、状態管理部１０１へ再構成完了通知を出力する。
【００７８】
出力接続部１３１は、第１の処理部１２１−１あるいは第２の処理部１２１−２の結果データを入力する。出力接続部１３１は、処理制御部１１１から接続指令を入力しているときは、出力整合部１４１に結果データを出力する。出力接続部１３１は、処理制御部１１１から遮断指令を入力しているときは、結果データの出力整合部１４１への転送を遮断する。
【００７９】
情報管理部１４２は、第２のユーザ定義処理及び第３のユーザ定義処理の、処理のＩＤとバージョン番号を記録する。また、情報管理部１４２は、第２のユーザ定義処理の結果データには第２の処理のＩＤとバージョン番号を付加して出力整合部１４１に送り、第３のユーザ定義処理の結果データには第３の処理のＩＤとバージョン番号を付加して出力整合部１４１に送る。
【００８０】
出力整合部１４１は、第２のユーザ定義処理の結果データ、第２の処理のＩＤ及びバージョン番号の組（以降、結果データ、処理のＩＤ及びバージョン番号を含む情報の組を、「結果データの組」という。）と、第３のユーザ定義処理の結果データ、第３の処理のＩＤ及びバージョン番号を含む結果データの組を入力する。そして、出力整合部１４１は、装置外部への出力順序や出力可否を決定し、装置外部へ出力する。
【００８１】
処理制御部１１１及び出力接続部１３１は、処理部１２１−１、処理部１２１−２に対応付けられて、複数個存在する。ただし、処理部１２１−２は処理の起動及び停止機能を備えないので、処理制御部１１１の、処理部１２１−２に対する処理の起動及び停止指令機能は必須ではない。
【００８２】
なお、処理部１２１−２は、処理部１２１−１と同様に、処理の完了通知の出力機能、処理の停止機能、実行する処理の変更機能、及び処理の起動も備えてもよい。この場合は、処理部１２１−２は、処理部１２１−１と全く同じ構成を備える。そして、処理部１２１−１、処理部１２１−２のそれぞれに対応付けられて、同一の機能を持つ処理制御部１１１及び出力接続部１３１が備えられる。処理される内容を区別する必要がないとき、あるいは、第１の処理部１２１−１、第２の処理部１２１−２のいずれにも該当するときは、単に「処理部１２１」と表記する。各処理部１２１には、それぞれを識別するための、識別番号が設定される。
【００８３】
時系列データ処理装置１００は概略次のように動作する。すなわち、第１の処理部１２１−１は、データを入力し、第１のユーザ定義処理を実行し、結果データを出力接続部１３１に出力する。第２の処理部１２１−２は、データを入力し、第２のユーザ定義処理を実行し、結果データを出力接続部１３１に出力する。
【００８４】
第１の処理部１２１−１は、第１の処理が完了した状態にあるという処理の完了通知を状態管理部１０１に出力する。
【００８５】
状態管理部１０１は、処理の完了通知を入力し、第１の処理部１２１−１が処理が完了したことを記録する。状態管理部１０１は、第１のユーザ定義処理が完了した状態にあるとき、停止シーケンス指令を出力する。
【００８６】
処理制御部１１１は、停止シーケンス指令を入力し、第１の処理部１２１−１による第１のユーザ定義処理を停止し、出力遮断指令を出力する。このとき、出力接続部１３１は、出力遮断指令を入力し、第１のユーザ定義処理からの結果データの転送を遮断する。
【００８７】
また、状態管理部１０１は、第２のユーザ定義処理及び第３のユーザ定義処理の、処理のＩＤとバージョン番号を情報管理部１４２に記録する。そして、状態管理部１０１は、第１の処理部１２１−１に対する再構成開始を指示する。
【００８８】
再構成部１２２は、前記再構成指令を入力する。そして、再構成部１２２は、第１の処理部１２１−１へ第３のユーザ定義処理を書き込む、再構成を行い、再構成完了通知を出力する。
【００８９】
状態管理部１０１は、再構成完了通知を入力すると、第１の処理部１２１−１への再構成が完了したことを記録し、第１の処理部１２１−１に再構成された第３のユーザ定義処理の起動シーケンス指令を出力する。
【００９０】
処理制御部１１１は、起動シーケンス指令を入力し、第１の処理部による第３のユーザ定義処理を起動する。そして、処理制御部１１１は、起動成功を確認すると、出力接続指令を出力する。
【００９１】
出力接続部１３１は、出力接続指令を入力すると、第３のユーザ定義処理の結果データの出力整合部１４１への転送を開始する。
【００９２】
第１の処理部１２１−１は、データを入力し、第３のユーザ定義処理を実行し、結果データを出力接続部１３１に出力する。
【００９３】
情報管理部１４２は、第２のユーザ定義処理の結果データには第２の処理のＩＤとバージョン番号を付加し、第３のユーザ定義処理の結果データには第３の処理のＩＤとバージョン番号を付加して出力整合部１４１に出力する。
【００９４】
出力整合部１４１は、第２のユーザ定義処理の結果データを含む結果データの組と、第３のユーザ定義処理の結果データを含む結果データの組を入力する。そして、出力整合部１４１は、装置外部への出力順序や出力可否を決定し、結果データの組を装置外部へ出力する。
【００９５】
図３は、図２に示す出力整合部１４１の詳細を示す図である。出力整合部１４１は、バージョン比較部１２１Ａと同期部１３１Ａを備える。
【００９６】
バージョン比較部１２１Ａは、結果データの組を入力する。そして、同時に到着し、かつ処理のＩＤが同じである結果データの組について、バージョン番号が古いものを捨て、残った結果データの組を同期部１３１Ａに出力する。
【００９７】
同期部１３１Ａは、比較部１２１Ａから、結果データの組を入力する。そして、同期部１３１Ａは、同期部１３１Ａに記録されている処理のＩＤごとの値より古いバージョン番号を持つ結果データの組を捨て、それ以外の結果データの組を装置外部への出力ポートへ出力する。同期部１３１Ａは、結果データの組の出力を行った場合は、同期部１３１に登録されているバージョン番号を、出力を行った結果データの組に付加されていたバージョン番号に更新する。
【００９８】
図４は、バージョン比較部１２１の実装の第１の例を示すブロック図である。バージョン比較部１２１Ａは、４つの処理部１０１を備える時系列データ処理部に対応するもので、４組の結果データの組を受け取る。バージョン比較部１２１Ａは、３つの部分バージョン比較部１００１を備える。３つの部分バージョン比較部１００１の各々は、２組の結果データの組が同時に到着したときは、処理のＩＤが同じものについて、古いバージョン番号が付加されている方の結果データの組を破棄し、その他の結果データの組を出力ポートへ出力する。
【００９９】
図５は、バージョン比較部１２１の実装の第２の例を示すブロック図である。バージョン比較部１２１Ａは、８つの処理部１０１を備える時系列データ処理部に対応するもので、８組の結果データの組を受け取る。バージョン比較部１２１は、７つの部分バージョン比較部１００１を備える。図４、５と同様に、部分バージョン比較部を設けることにより、任意の個数の入力を持つバージョン比較部１２１Ａを構成することができる。
【０１００】
図６は、部分バージョン比較部１００１の実装の例を示すブロック図である。部分バージョン比較部１００１は、入力ポート、出力ポート、待ちデータキュー１００２、調停部１００３を持つ構成で実装してもよい。部分バージョン比較部１００１は、調停部１００３を用いて、２つの入力ポートと待ちデータキュー１００２から受け取った結果データの組について、出力ポートの割り当ての調停を行う。出力ポートが割り当てられた結果データの組は出力ポートに出力される。出力ポートが割り当てられなかった結果データの組は、破棄されるか、待ちデータキュー１００２に挿入される。待ちデータキュー１００２に挿入されたデータは、次のサイクルに再び部分バージョン比較部１００１への入力となる。
【０１０１】
以降の動作の説明は、バージョン比較部１２１Ａが、一つの部分バージョン比較部１００１から構成されている場合についてのみ行う。説明されるバージョン比較部１２１Ａの動作は、２つ以上の部分バージョン比較部１００１を備えるバージョン比較部１２１Ａにも容易に応用可能である。
【０１０２】
次に、本実施の形態に係る時系列データ処理装置１００の動作について説明する前に、いくつかの用語を定義する。
【０１０３】
新たな入力が到着して、次の入力が来る前の期間を、「１入力期間」という。時系列データ処理装置が、所定の動作を完了させるために要する単位時間を規定するクロックの周期を、「１サイクル」という。
【０１０４】
前述のように、デバイス上に処理を実行させることのできる回路を書き込むことのできる区画が複数存在するとし、この区画を「パーティション」という。パーティションには、構成データ、コンフィギュレーションデータと呼ばれる設定情報を送ることで、ユーザ定義の処理を実行する回路を作成することができる。
【０１０５】
「指令する」、「指示する」、「通知する」とは、ある部分（「指令元部分」という。）が、別の部分（「指令先部分」という。）に接続されている配線の信号を操作したり、指令先部分に存在する記憶装置に値を書き込んだりすることを意味する。「登録する」、「設定する」とは、登録元のある部分が、登録先の別の部分に存在する記憶装置に値を書き込むことを意味する。「情報を送る」「データを送る」、「結果を出力する」とは、送り元である、装置のある部分が、送り先である、装置の別の部分に接続されている配線の信号を操作したり、送り先の部分に存在する記憶装置に値を書き込んだりすることを意味する。
【０１０６】
バージョン番号は、整数で表現してもよい。あるいは、Ｍの剰余系を用いてもよい。また、「”１”だけ新しいバージョン番号」は、バージョン番号に整数が用いられた場合は、古いバージョン番号である整数Ｎに対し、（Ｎ＋１）という値を意味する。あるいは、「”１”だけ新しいバージョン番号」は、バージョン番号にＭの剰余系が用いられた場合は、古いバージョン番号である、整数ＮをＭで除した余り、に対し、（Ｎ＋１）をＭで除した余り、を意味する。「”１”だけ古いバージョン番号」は、バージョン番号に整数が用いられた場合は、新しいバージョン番号である整数Ｎに対し、（Ｎ−１）という値を意味する。あるいは、「”１”だけ古いバージョン番号」は、バージョン番号にＭの剰余系が用いられた場合は、新しいバージョン番号である、整数ＮをＭで除した余り、に対し、（Ｎ−１）をＭで除した余り、を意味する。例えば、３の剰余系を用いて、”０”より”１”だけ新しい値は”１”、”１”より”１”だけ新しい値は”２”、”２”より”１”だけ新しい値は”０”、”２”より”１”だけ古い値は”１”、”１”より”１”だけ古い値は”０”、”０”より”１”だけ古い値は”２”、と表現してもよい。
【０１０７】
処理のＩＤは、第１の旧処理から第１の新処理への変更と、第２の旧処理から第２の新処理への変更が同時進行している、といった際に、旧処理と新処理のペアを区別するために用いられる。
【０１０８】
ところで、本実施形態では、時系列データ処理装置１００から出力される結果データが、旧処理によるものから新処理によるものへ変更される。この変更は、図示されないホストコンピュータ等による、時系列データ処理装置１００に対する、処理の変更指示（以降、「処理変更指示」という。）によって許可される。以下の説明では、時系列データ処理装置１００は、既に処理変更指示を受けていることを前提とする。
【０１０９】
本実施の形態に係る時系列データ処理装置１００の動作について、図７から図１１を参照して説明する。
【０１１０】
まず、初期状態では、第１の処理部１２１−１で、第１のユーザ定義処理が実行されている。第１のユーザ定義処理は、第２のユーザ定義処理（旧処理）、及び第３のユーザ定義処理（新処理）とは無関係な処理である。
【０１１１】
次に、第２の処理部１２１−２で、第２のユーザ定義処理（旧処理）が実行されている。旧処理は、次に第３のユーザ定義処理（新処理）に置き換えられる処理である。ただし、処理変更指示を受けると、第２の処理部１２１−２における処理が新処理に変更されるのではない。新処理は、第１の処理部１２１−１における第１の処理から新処理への変更後、第１の処理に代わって実行される。第２の処理部１２１−２における旧処理の実行は、処理変更指示を受けた後も、少なくとも第１の処理部１２１−１における処理の変更までは継続される。
【０１１２】
次に、第１の処理部１２１−１が、そこで実行されている第１のユーザ定義処理が、処理が完了した状態にあることを状態管理部１０１に通知する。
【０１１３】
状態管理部１０１は、複数ある処理部１２１について、ＩＤと、そこで動作する処理の状態を記録している。処理の状態は、処理が完了したことを示す「処理完了」、停止中を示す「停止中」、動作中を示す「動作中」、再構成が進行中であることを示す「再構成中」を含んでもよい。状態管理部１０１はこの通知を受けて、該当する処理部１２１の状態を、「処理完了」に変更する（ステップＳ１１０８）。「処理完了」とは、以下の４つのいずれかを意味する。
【０１１４】
１）所定の処理を完了して次の処理の開始を待っている状態にある。
【０１１５】
２）所定の処理を完了して停止できる状態にある。
【０１１６】
３）もはやその処理の結果データを装置外部に出力する必要がない。
【０１１７】
４）その処理を停止しても装置外部に悪影響が及ばない。
【０１１８】
５）処理状態、処理結果等がある条件を満たしている。
【０１１９】
なお、ユーザ定義処理は処理が完了した状態から再び実行中の状態に移行してもよい。
【０１２０】
次に、状態管理部１０１が、新処理に変更する対象の処理部１２１の識別番号を設定する。すなわち、状態管理部１０１は、処理が完了した状態にあり、従って、その処理を新処理に変更することができる処理部１２１を発見し、その処理部１２１の識別番号を設定する（ステップＳ１１０９）。ここでは、処理内容が新処理に変更される処理部１２１は、第１の処理部１２１−１である。
【０１２１】
後のステップで、第１の処理部１２１−１に対して、状態を変更したり、操作を行ったりするため、第１の処理部１２１−１の識別番号を記憶しておく。また、新処理に変更される第１の処理部１２１−１の識別番号の設定は、状態管理部１０１への入力に従って行ってもよい。例えば、図示しないホストコンピュータが、状態管理部１０１に第１の処理部１２１−１の識別番号を入力してもよい。
【０１２２】
次に、状態管理部１０１は、新処理に変更される第１の処理部１２１で動作している処理の停止の指令である停止シーケンス指令を、処理制御部１１１に出力する。
【０１２３】
停止の指令を入力すると、処理制御部１１１は、第１の処理部１２１−１における第１の処理を停止させる。また、状態管理部１０１は、第１の処理部１２１−１の状態を、「停止中」に変更する（ステップＳ１１１０）。処理の停止は、処理部１２１で動作する処理に対するリセット信号を操作することによって行ってもよい。
【０１２４】
次に、処理制御部１１１は、ステップＳ１１１０で指定した第１の処理部１２１−１に接続される出力接続部１３１に指令を出し、第１の処理部１２１−１からの結果データの、出力整合部１４１への転送を遮断する（ステップＳ１１１１）。転送の遮断は、出力接続部１３１が出力整合部１４１に出力する結果データの、有効又は無効を示す信号を設け、その信号を操作することによって行ってもよい。
【０１２５】
次に、状態管理部１０１は、処理のＩＤとバージョン番号を、情報管理部１４２に登録する（ステップＳ１１１２）。処理のＩＤとバージョン番号は、旧処理から新処理に変更する際に、旧処理と新処理の結果データの、装置外部への出力の順序や、どれを装置外部へ出力するかについて整合を取るために用いられる。情報管理部１４２は、それぞれの処理部１２１について、処理のＩＤとバージョン番号を記録する。
【０１２６】
「整合を取る」の意味を説明する。以下では、処理部１２１が処理を完了し、結果データを出力することを、「結果データを生成する。」という。また、出力整合部１４１が結果データを装置外部へ出力することを、「結果データを出力する。」という。
【０１２７】
本実施形態では、第２の処理部１２１−２における旧処理の実行を継続したまま、第１の処理部１２１−１における処理を新処理に変更する。そのため、新旧処理が一時的に並行して動作し、新処理の結果データ（以降、「新処理結果データ」という。）及び旧処理の結果データ（以降、「旧処理結果データ」という。）が、時系列データ処理装置内に同時に存在する。そのため、装置外部への結果データの出力順序や、いずれの結果データを装置外部に出力するかを決定する必要がある。「整合を取る」とは、時系列データ処理装置内に同時に存在する新処理結果データ及び旧処理結果データの、生成順序と出力順序との関係の制御、並びに新処理結果データが生成された時刻に基づき出力対象とする結果データの選択を行うことを意味する。
【０１２８】
具体的には、「整合を取る」の第１の意味は、新処理結果データ、旧処理結果データのそれぞれが生成された時刻の順序と、それらの結果データが時系列データ処理装置外部に出力される順序が一致するように、結果データの出力順序を決めることである。すなわち、新処理結果データの生成時刻と旧処理結果データの生成時刻との前後関係と、新処理結果データの外部への出力時刻と旧処理結果データの外部への出力時刻との前後関係が一致するように、結果データの出力順序を決めることを「整合を取る」いう。例えば、新処理が起動されて最初に生成された結果データをＮ１、その結果データが生成された時刻をＴ１とする。Ｔ１より前に、旧処理によって生成された結果は、Ｎ１より先に装置外部に出力するように順序を決定する。
【０１２９】
「整合を取る」の第２の意味は、新処理が起動され、最初の新処理結果データが生成された時刻以降に生成された旧処理結果データが出力されないように、新処理結果データ又は旧処理結果データのいずれを装置外部に出力するか決めることを意味する。すなわち、最初の新処理結果データの生成時刻より前の時刻に生成された旧処理結果データは外部に出力し、新処理結果データの生成時刻以降の時刻に生成された旧処理結果データは外部に出力されないようにすることを「整合を取る」いう。
【０１３０】
なお、結果データが出力される時刻は、それが生成された時刻よりも後であり、両者は一致しない。旧処理結果データの出力の有無は、上記のように、あくまでそれが生成された時刻と、最初に新処理結果データが生成された時刻との関係で決定される。例えば、新処理が起動されて最初に生成された結果をＮ１、その結果が生成された時刻をＴ１とする。Ｔ１より前に、旧処理によって生成された結果は装置外部に出力し、Ｔ１以降に旧処理によって生成された結果は装置外部に出力されないようにする。
【０１３１】
次に、整合を取る方法について説明する。ある処理部１２１が結果データを生成したとき、処理部１２１は、処理部１２１の識別番号、及び結果データの生成タイミング情報を、結果データと共に出力する。これらの、処理部１２１の識別情報及び生成タイミング情報を参照することで、装置外部への出力順序の制御、及び装置外部への出力可否を決定する。
【０１３２】
例えば、第１の処理部１２１−１及び第２の処理部１２１−２の識別情報として、処理のＩＤとバージョン番号を用いることができる。このとき、第１の処理部１２１−１、第２の処理部１２１−２のそれぞれの識別情報として、同じ処理のＩＤと異なるバージョン番号とからなる情報の組を割り当てることで、整合を取る処理を行うことができる。さらに具体的には、新処理結果データの処理のＩＤには旧処理結果データの処理のＩＤと同じ値を設定し、新処理の結果データのバージョン番号は、旧処理の結果データのバージョン番号より”１”だけ新しい値に設定する。
【０１３３】
例えば、旧処理の結果データの処理のＩＤは”０”、バージョン番号は”１”、新処理の結果データの処理のＩＤは”０”、バージョン番号は”２”、と設定する。そして、出力整合部１４１に同時に存在する結果データについて、処理のＩＤが同じである結果データのペアについて、バージョン番号が”１”だけ新しいもののみを残す、という操作を行う。これにより、新処理の結果データのみ装置の外部に出力する、という整合を取る操作が可能になる。
【０１３４】
次に、状態管理部１０１は、新処理に変更される第１の処理部１２１−１の再構成開始を再構成部１２２に指示する。状態管理部１０１は、第１の処理部１２１−１の状態を「再構成中」に変更する（ステップＳ１１１３）。
【０１３５】
次に、再構成部１２２は、ステップＳ１１１３で指定した第１の処理部１２１−１を再構成する（ステップ１１１４）。処理部１２１の再構成の実現には、ＦＰＧＡを用いて、チップ内に設けられている再構成を行うためのモジュールに再構成データを入力することによって行ってもよい。再構成情報は、再構成部１２２に記録されていてもよい。あるいは、状態管理部１０１から入力されてもよい。あるいは、図示しないホストコンピュータから入力されてもよい。
【０１３６】
次に、再構成部１２２が再構成完了を通知する。状態管理部１０１は、再構成部１２２からの再構成完了の通知を入力し、ステップＳ１１１３で指定した第１の処理部１２１−１に接続されている処理制御部１１１−１に起動シーケンス指令を出力する。状態管理部１０１は、第１の処理部１２１−１の状態を、「実行中」に変更する（ステップＳ１１１５）。
【０１３７】
起動シーケンス指令の出力は、以下のように行うことができる。すなわち、状態管理部１０１は、処理制御部１１１−１の識別番号と、第１の処理部１２１−１の識別番号とを、同一の番号に設定し、第１の処理部１２１−１の識別番号を記録する。そして、状態管理部１０１は、再構成完了の通知を入力したタイミングで、識別番号を参照して、処理制御部１１１−１に接続されている起動シーケンス指令信号をアクティブにする。
【０１３８】
次に、ステップＳ１１１３で指定した処理制御部１１１−１が、起動シーケンス指令を受けて、第１の処理部１２１−１の処理を起動する（ステップＳ１１１６）。これは、第１の処理部１２１−１で、第３のユーザ定義処理（新処理）の動作を開始することを意味する。なお、「処理部の処理」とは、処理部に再構成された回路により実行される処理を意味する。「処理の起動」とは、処理を、待機状態から、結果データを出力する動作状態に移行させることを意味する。処理の起動は、処理に対するリセット信号を操作することによって行ってもよい。
【０１３９】
次に、処理制御部１１１−１は、第１の処理部１２１−１における第３のユーザ定義処理の起動が成功したか否かを調べる（ステップＳ１１１７）。なぜなら、誤ったあるいは破壊された再構成データの設定、再構成の手続きの失敗、などの理由で、第１の処理部１２１−１の処理の起動が失敗する場合があるためである。処理の起動の成功は、処理から特定のビットパターンが処理制御部１１１に対して出力されていることで調べてもよい。処理の起動が成功している場合は、ステップＳ１１１８に進み、失敗している場合は、ステップＳ１１１３に戻る。
【０１４０】
次に、ステップＳ１１１３で指定した処理制御部１１１−１は、第１の処理部１２１−１が生成した第３のユーザ定義処理の結果データの出力接続指令を出力接続部１３１−１に出力する（ステップＳ１１１８）  。
【０１４１】
次に、出力接続部１３１−１は、出力接続指令を入力して、第１の処理部１２１−１からの第３のユーザ定義処理の結果データが、装置外部へ出力されるように、第１の処理部１２１−１と出力整合部１４１を接続する（ステップＳ１１１９）。第１の処理部１２１−１と出力整合部１４１との接続は、出力接続部１３１−１が出力整合部１４１に出力する結果データの有効又は無効を示す信号を操作することによって行ってもよい。
【０１４２】
以上のステップと並行して、図９に示された以下のステップを実行する。すなわち、情報管理部１４２は、第２の処理部１２１−２が第２の処理の結果データを生成したタイミングで、結果データと共に、登録されている第２の処理部１２１−２の処理のＩＤとバージョン番号を、出力整合部１４１に出力する（ステップＳ１１２０）。これによって、出力整合部１４１への入力情報は、結果データの組になる。結果データの組は、例えば、図１２に示すような構成をとるデータでもよい。
【０１４３】
出力整合部１４１は、第２のユーザ定義処理の結果データを含む結果データの組、及び前記第３のユーザ定義処理の結果データを含む結果データの組を入力する。そして、出力整合部１４１は、複数の処理部１２１から出力される結果データの、装置外部への出力の順序の制御、及び装置外部へ出力する結果データの組の選択、すなわち整合を取る。そして、出力整合部１４１は、整合が取られた順序で、整合が取られた新処理又は旧処理の結果データの組を装置外部へ出力し、ステップＳ１１２０へ戻る（ステップＳ１１２１）。ステップＳ１１２０Ｓ１１２１の動作の詳細については、後述する。
【０１４４】
次に、図１０、図１１を参照して、上記ステップＳ１１２１を詳細に説明する。
【０１４５】
まず、バージョン比較部１２１Ａが、結果データの組を入力する（ステップＳ１２０１）。このときの入力は、入力ポートあるいは待ちデータキューから行う。待ちデータキューとは、バージョン比較部１２１Ａにおいて、捨てられず、かつ出力されなかった結果データの組が挿入されるキューである。待ちデータキューに格納された結果データの組は、次のサイクルにバージョン比較部１２１Ａの入力として扱われる。
【０１４６】
バージョン比較部１２１Ａは、結果データの組のうちで、処理のＩＤが同一かつバージョン番号が異なるペアが残っているか調べる（ステップＳ１２０２）。バージョン比較部１２１Ａは、結果データの組を複数同時に入力した場合は、同時に入力した結果データの組の中について調べる。処理のＩＤが同一かつバージョン番号が異なるペアが残っている場合は、ステップＳ１２０３へ進む。残っていない場合はステップＳ１２０４へ進む。
【０１４７】
バージョン比較部１２１Ａは、バージョン番号が”１”だけ古い方の結果データの組を破棄し（ステップＳ１２０３）、ステップＳ１２０２に戻る。
【０１４８】
バージョン比較部１２１Ａは、入力した結果データの組のうちで、破棄されていないものの間で出力ポートの割り当ての調停を行い、ポートが割り当てられた結果データの組を同期部１３１Ａに送り、ポートが割り当てられなかった結果データの組をバージョン比較部１２１Ａの待ちデータキュー１００２に挿入する（ステップＳ１２０４）。出力ポートとは、バージョン比較部１２１Ａから同期部１３１Ａへの出力の信号線のことである。出力ポートの割り当ての調停とは、出力ポートを使用できるデータを一つ選ぶ行為のことである。このとき、選ばれたデータが「ポートを割り当てられた」又は「ポートを獲得した」、という。
【０１４９】
次に、同期部１３１Ａは、結果データの組を入力する（ステップＳ１３００）。そして、同期部１３１Ａは、入力した結果データの組のバージョン番号が、同期部１３１Ａに記録されている処理のＩＤごとのバージョン番号より古いか調べる（ステップＳ１３０１）。古い場合は、ステップＳ１３０４に進み、古くない場合はステップＳ１３０２に進む。
【０１５０】
同期部１３１Ａは、同期部１３１Ａが記録する処理のＩＤごとのバージョン番号を、到着した結果データの組のものに更新する（ステップ１３０２）。
【０１５１】
次に同期部１３１Ａは、入力した結果データの組を装置外部への出力ポートへ出力し（ステップ１３０３）、ステップＳ１２０１に戻る。
【０１５２】
ステップＳ１３０１において、同期部１３１Ａに記録されている処理のＩＤごとのバージョン番号より、入力した結果データの組のバージョン番号の方が古い場合は、同期部１３１Ａは、入力した結果データの組を破棄し（ステップＳ１３０４）、ステップＳ１２０１に戻る。
（実施形態の動作の具体例）
図７から図１１のフローチャートと、図１３から図２４のブロック図を参照して、実施形態に係る時系列データ処理装置１００の動作の具体例を説明する。
【０１５３】
整数で与えられる時系列データについて、”１”を加算した値を出力する処理（旧処理）を、”２”を加算した値を出力する処理（新処理）に置き換えることを考える。第２の処理部１２１−２では置き換えられる前の処理、すなわち旧処理が動作しており、第１の処理部１２１−１では新旧処理とは無関係な処理が動作している。そして、第１の処理部１２１−１で動作している処理を停止して、第１の処理部１２１−１を新処理に再構成して、新処理を起動する。
【０１５４】
また、時系列データ処理装置の動作に用いられるクロックの周期を「サイクル」といい、これを期間の単位として用いる。「サイクルの開始時」とは、その期間の最初の時点を意味し、「サイクルの終了時」とは、その期間の最後の時点を意味する。例えば、クロックの周波数が１ＧＨｚである場合は、ある基準時刻について第１サイクルは、基準時刻プラスゼロ秒から基準時刻プラス１ナノ秒の間の期間を、第Ｎサイクルは基準時刻プラス（Ｎ−１）ナノ秒から基準時刻プラスＮナノ秒の期間を意味する。第Ｍサイクルの開始時は、基準時刻プラス（Ｍ−１）ナノ秒を意味し、第Ｍサイクルの終了時は、基準時刻プラスＭナノ秒を意味する。入力データは、毎サイクルの開始時に与えられるものとする。
【０１５５】
また、状態管理部１０１において、第１の処理部１２１−１、第２の処理部１２１−２に対しては、共に実行中が登録されている。また、情報管理部１４２において、第１の処理部１２１−１に対しては処理のＩＤとして”１０”、バージョン番号として”０”が、第２の処理部１２１−２に対しては処理のＩＤとして”２０”、バージョン番号として”０”が登録されている。
【０１５６】
この時点で、装置の各部分は図１３に示すような状態になる。図１３において、「実行指令」とは、処理制御部１１１が処理部１２１に構成された回路が実行可能な処理を起動して実行させている、ことを意味する。「接続」とは、出力接続部１３１が処理部１２１が生成した結果データを出力整合部１４１に転送している、ことを意味する。
【０１５７】
第１サイクルの開始時に、第２の処理部１２１−２に入力データ”１”が与えられ、第２の処理部１２１−２が結果データ”２”を生成する。この結果データ”２”が出力接続部１３１−２を経て出力整合部１４１に出力される。これらの処理が、１サイクルで完了する。
【０１５８】
同時に、情報管理部１４２が処理のＩＤとして”２０”、バージョン番号として”０”を出力整合部１４１に出力する（ステップＳ１１２０）。結果として、このサイクルの終了時に、出力接続部１３１と情報管理部１４２が、出力整合部１４１に、結果データと処理のＩＤとバージョン番号の組を出力する。この結果データの組を＜２，２０，０＞と表現する。
【０１５９】
第１サイクルの開始時から、第１の処理部１２１−１が、実行している第１の処理が完了した状態にあることを、状態管理部１０１に通知する（ステップＳ１１０８）。情報管理部１０１は、通知を入力し、第１の処理部１２１−１の状態を「処理完了」に変更する。これらの処理が、１サイクルで完了する。
【０１６０】
第１サイクルの終了時に、装置の各部分は図１４に示すような状態になる。
【０１６１】
第２サイクルの開始時に、第２の処理部１２１−２に入力データ”２”が与えられ、第２の処理部１２１−２が結果データ”３”を生成する。第２サイクルの終了時に、出力整合部１４１に、＜３，２０，０＞が出力される。また、バージョン比較部１２１Ａは、第２サイクルの開始時に、＜２，２０，０＞を入力する（ステップＳ１２０１）。このとき、処理のＩＤが同一かつバージョン番号の異なる結果データの組は存在しないので、ステップＳ１２０４に進む（ステップＳ１２０２）。結果データの組の間で出力ポートの割り当ての調停が行われ、１つしか結果データの組がないので、上記の結果データの組が出力ポートを獲得する。そして、このサイクルの終了時に、この結果データの組が同期部１３１Ａに送られる（ステップＳ１２０３）。
【０１６２】
第２サイクルの開始時から、状態管理部１０１が、処理内容を新処理に置き換える対象の処理部の識別番号を設定する。すなわち、状態管理部１０１は、処理が完了した状態にあり、従って新処理に置き換え可能な処理部を見つけ、その処理部の識別番号を設定する（ステップＳ１１０９）。ここでは、第１の処理部１２１−１に書き込むと設定する。状態管理部１０１は、第１の処理部１２１−１の状態を「停止中」に変更する。
【０１６３】
次に、状態管理部１０１は、第１の処理部−１に接続されている処理制御部１１１−１に指令を出し、処理制御部１１１−１が処理を停止する（ステップＳ１１１０）。
【０１６４】
次に、第１の処理部に接続されている処理制御部１１１−１は、出力接続部１３１−１に指令を出し、結果データの出力整合部１４１への転送を遮断する（ステップＳ１１１１）。
【０１６５】
これらの処理が、１サイクルで完了する。
【０１６６】
第２サイクルの終了時に、装置の各部分は図１５に示すような状態になる。図１５において、「停止指令」とは、処理制御部１１１−１が第１の処理部１２１−１で動作する処理に停止の指令を与えていることを意味する。
【０１６７】
第３サイクルの開始時に、第２の処理部１２１−２に入力データ”３”が与えられ、第２の処理部１２１−２が結果データ”４”を生成し、第３サイクルの終了時に、出力整合部１４１に、＜４，２０，０＞が出力される。また、バージョン比較部１２１Ａは、第３サイクルの開始時に、＜３，２０，０＞を入力し、第３サイクルの終了時に、この結果データの組を同期部１３１Ａに送る。また、同期部１３１Ａは、第３サイクルの開始時に、＜２，２０，０＞を入力する（ステップＳ１３００）。記録している処理のＩＤ２０に対応するバージョン番号は”０”で、入力した結果データの組のものと同一なので、ステップＳ１３０２に進む（ステップＳ１３０１）。記録している処理のＩＤ２０に対応するバージョン番号を更新し（ステップＳ１３０２）、第３サイクルの終了時に、入力した結果データの組を装置外部への出力ポートへ出力する（ステップＳ１３０３）。
【０１６８】
第３サイクルの開始時から、管理部１０１が、第１の処理部１２１−１の処理のＩＤとバージョン番号を情報管理部１４２に登録する（ステップＳ１１１２）。
【０１６９】
この例では、新旧処理の結果データの装置外部への出力の順序や、どれを装置外部へ出力するか、を以下のようにする。新処理が起動されて最初に生成された結果をＮ１、その結果が生成された時刻をＴ１とする。Ｔ１より前に、旧処理によって生成された結果はＮ１より先に装置外部に出力するように順序を決定する。また、Ｔ１以降に旧処理によって生成された結果は装置外部に出力しないようにする。さらに、新処理、旧処理それぞれからの結果データは、結果データが生成された順序で装置外部に出力されるようにする。これを実現するために、新処理、すなわち第１の処理部１２１−１が生成する結果データに付与する処理のＩＤは、旧処理の処理のＩＤと同一のＩＤである”２０”を登録する。そして、新処理、すなわち第１の処理部１２１−１が生成する結果データに付与するバージョン番号は、旧処理より”１”だけ新しい値、すなわち”１”を登録する。これらの処理が、１サイクルで完了する。
【０１７０】
第３サイクルの終了時に、装置の各部分は図１６に示すような状態になる。
【０１７１】
第４サイクルの開始時に、第２の処理部１２１−２に入力データ”４”が与えられ、第２の処理部１２１−２が結果データ”５”を生成し、第４サイクルの終了時に、出力整合部１４１に、＜５，２０，０＞が出力される。また、バージョン比較部１２１Ａは、このサイクルの開始時に、＜４，２０，０＞を入力し、第４サイクルの終了時に、この結果データの組を同期部１３１Ａに送る。また、同期部１３１Ａは、第４サイクルの開始時に、＜３，２０，０＞を入力し、第４サイクルの終了時に、この結果データの組を装置外部への出力ポートへ出力する。
【０１７２】
第４サイクルの開始時から、状態管理部１０１が、新処理を書き込む第１の処理部１２１−１の再構成開始を再構成部１２２に指示する（ステップＳ１１１３）。状態管理部１０１は第１の処理部の状態を「再構成中」に変更する。これらの処理が、１サイクルで完了する。
【０１７３】
第４サイクルの終了時に、装置の各部分は図１７に示すような状態になる。
【０１７４】
第５サイクルの開始時に、第２の処理部１２１−２に入力データ”５”が与えられ、第２の処理部１２１−２が結果データ”６”を生成し、第５サイクルの終了時に、出力整合部１４１に、＜６，２０，０＞が出力される。また、バージョン比較部１２１Ａは、第５サイクルの開始時に、＜５，２０，０＞を入力し、第５サイクルの終了時に、この結果データの組を同期部１３１Ａに送る。また、同期部１３１Ａは、第５サイクルの開始時に、＜４，２０，０＞を入力し、第５サイクルの終了時に、この結果データの組を装置外部への出力ポートへ出力する。
【０１７５】
第５サイクルの開始時から、再構成部１２２が第１の処理部１２１−１を再構成する（ステップ１１１４）。これらの処理が、１サイクルで完了する。第５サイクルの終了時に、装置の各部分は図１８に示すような状態になる。
【０１７６】
第６サイクルの開始時に、第２の処理部１２１−２に入力データ”６”が与えられ、第２の処理部１２１−２が結果データ”７”を生成し、第６サイクルの終了時に、出力整合部１４１に、＜７，２０，０＞が出力される。また、バージョン比較部１２１Ａは、第６サイクルの開始時に、＜６，２０，０＞を入力し、第６サイクルの終了時に、この結果データの組を同期部１３１Ａに送る。また、同期部１３１Ａは、第６サイクルの開始時に、＜５，２０，０＞を入力し、第６サイクルの終了時に、この結果データの組を装置外部への出力ポートへ出力する。
【０１７７】
第６サイクルの開始時から、再構成部１２２が、再構成完了の通知を出す。次に、状態管理部１０１が、再構成完了の通知を受けて、第１の処理部１２１−１に接続されている処理制御部１１１−１に起動シーケンス指令を出す（ステップＳ１１１５）。状態管理部１０１は第１の処理部１２１−１の状態を、「実行中」に変更する。
【０１７８】
次に、処理制御部１１１が第１の処理部１２１−１に存在する新処理を起動する（ステップＳ１１１６）。
【０１７９】
これらの処理が、１サイクルで完了する。第６サイクルの終了時に、装置の各部分は図１９に示すような状態になる。
【０１８０】
第７サイクルの開始時に、第２の処理部１２１−２に入力データ”７”が与えられ、第２の処理部１２１−２が結果データ”８”を生成し、第７サイクルの終了時に、出力整合部１４１に、＜８，２０，０＞が出力される。また、バージョン比較部１２１Ａは、第７サイクルの開始時に、＜７，２０，０＞を入力し、第７サイクルの終了時に、この結果データの組を同期部１３１Ａに送る。また、同期部１３１Ａは、第７サイクルの開始時に、＜６，２０，０＞を入力し、第７サイクルの終了時に、この結果データの組を装置外部への出力ポートへ出力する。
【０１８１】
第７サイクルの開始時から、処理制御部１１１が第１の処理部１２１−１に存在する新処理の起動が成功したか調べる（ステップＳ１１１７）。ここでは成功したとし、ステップＳ１１１８に進む。
【０１８２】
次に、処理制御部１１１−１が第１の処理部１２１−１で動作する新処理の結果データの接続指令を出力接続部１３１に出す（ステップＳ１１１８）  。
【０１８３】
次に、出力接続部１３１−１が第１の処理部１２１−１で動作する新処理の結果データが出力整合部１４１へ出力されるようにする  （ステップＳ１１１９）。  これらの処理が、１サイクルで完了する。
【０１８４】
第７サイクルの終了時に、装置の各部分は図２０に示すような状態になる。
【０１８５】
第８サイクルの開始時に、第１の処理部１２１−１で新処理が動作を開始しており、入力データ”８”が与えられ、結果データ”１０”を生成する。これが出力接続部１３１−１を経て出力整合部１４１に出力される。同時に、情報管理部１４２が、処理のＩＤ”２０”とバージョン番号”１”を、出力整合部１４１に送る（ステップＳ１１２０）。処理のＩＤとバージョン番号は、それぞれ、情報管理部１４２が記録している、第１の処理部１２１−１の値を送る。結果として、第１の処理部１２１−１に接続されている出力接続部１３１−１と情報管理部１４２が、このサイクルの終了時に、出力整合部１４１に、＜１０，２０，１＞を出力する。
【０１８６】
第８サイクルの開始時に、第２の処理部１２１−２に入力データ８が与えられ、結果データ９を生成する。これが出力接続部１３１−２を経て出力整合部１４１に出力される。同時に、情報管理部１４２が、処理のＩＤ２０とバージョン番号０を、出力整合部１４１に送る（ステップＳ１１２０）。処理のＩＤとバージョン番号は、それぞれ、情報管理部１４２が記録している、第２の処理部１２１−２の値を送る。結果として、出力接続部１３１−２と情報管理部１４２が、このサイクルの終了時に、出力整合部１４１に、＜９，２０，０＞を出力する。
【０１８７】
また、バージョン比較部１２１Ａは、第８サイクルの開始時に、＜８，２０，０＞を入力し、第８サイクルの終了時に、この結果データの組を同期部１３１Ａに送る。また、同期部１３１Ａは、第８サイクルの開始時に、＜７，２０，０＞を入力し、第８サイクルの終了時に、この結果データの組を装置外部への出力ポートへ出力する。
【０１８８】
第８サイクルの終了時に、装置の各部分は図２１に示すような状態になる。
【０１８９】
第９サイクルの開始時に、第１の処理部１２１−１に入力データ”９”が与えられ、第１の処理部１２１−１が結果データ”１１”を生成し、第９サイクルの終了時に、出力整合部１４１に、＜１１，２０，１＞が出力される。また、第９サイクルの開始時に、第２の処理部１２１−２に入力データ”９”が与えられ、第２の処理部１２１−２が結果データ”１０”を生成し、第９サイクルの終了時に、出力整合部１４１に、＜１０，２０，０＞が出力される。バージョン比較部１２１Ａは、第９サイクルの開始時に、＜１０，２０，１＞と＜９，２０，０＞を入力する（ステップＳ１２０１）。
【０１９０】
入力された結果データの組が、処理のＩＤが同一かつバージョン番号が異なる結果データの組となっているので、ステップＳ１２０３に進む（ステップＳ１２０２）。そして、バージョン番号が”１”だけ古い方、すなわち旧処理の結果データの組である＜９，２０，０＞を破棄する（ステップＳ１２０３）。
【０１９１】
入力された結果データの組は２つで、１つを捨てたので、ステップＳ１２０４に進む（ステップＳ１２０２）。残っている結果データの組、＜１０，２０，１＞に対して出力ポートの割り当ての調停が行われる。結果データの組は一つだけなので、第９サイクルの終了時に、＜１０，２０，１＞を同期部１３１Ａに送る（ステップＳ１２０４）。また、同期部１３１Ａは、第９サイクルの開始時に、＜８，２０，０＞を入力し、第９サイクルの終了時に、この結果データの組を装置外部への出力ポートへ出力する。
【０１９２】
第９サイクルの終了時に、装置の各部分は図２２に示すような状態になる。
【０１９３】
第１０サイクルの開始時に、第１の処理部１２１−１に入力データ”１０”が与えられ、第１の処理部１２１−１が結果データ”１２”を生成し、第１０サイクルの終了時に、出力整合部１４１に、＜１２，２０，１＞が出力される。また、第２の処理部１２１−２に入力データ”１０”が与えられ、第２の処理部１２１−２が結果データ”１１”を生成し、第１０サイクルの終了時に、出力整合部１４１に、＜１１，２０，０＞が出力される。バージョン比較部１２１Ａは、第１０サイクルの開始時に、＜１１，２０，１＞と＜１０，２０，０＞を入力し、旧処理の結果データの組を捨て、第１０サイクルの終了時に、新処理の結果のデータの組である＜１１，２０，１＞を同期部１３１Ａに送る。また、同期部１３１Ａは、第１０サイクルの開始時に、＜１０，２０，１＞を入力する（ステップＳ１３００）。入力した結果データの組の処理のＩＤ２０について、同期部１３１Ａに記録されているバージョン番号は”０”である。入力した結果データの組のバージョン番号の方が新しいので、ステップＳ１３０２へ進む（ステップＳ１３０１）。そして、同期部１３１Ａに記録しているバージョン番号を、入力した結果データの組のバージョン番号１に更新する（Ｓ１３０２）。そして、第１０サイクルの終了時に、入力した結果データの組＜１０，２０，１＞を装置外部の出力ポートへ出力する（ステップＳ１３０３）。第１０サイクルの終了時に、装置の各部分は図２３に示すような状態になる。
【０１９４】
第１１サイクルの開始時に、第１の処理部１２１−１に入力データ”１１”が与えられ、第１の処理部１２１−１が結果データ”１３”を生成し、第１１サイクルの終了時に、出力整合部１４１に、＜１３，２０，１＞が出力される。また、第２の処理部１２１−２に入力データ”１１”が与えられ、第２の処理部１２１−２が結果データ”１２”を生成し、第１１サイクルの終了時に、出力整合部１４１に、＜１２，２０，０＞が出力される。バージョン比較部１２１Ａは、第１１サイクルの開始時に、＜１２，２０，１＞と＜１１，２０，０＞を入力し、旧処理の結果データの組を捨て、第１１サイクルの終了時に、新処理の結果のデータの組である＜１２，２０，１＞を同期部１３１Ａに送る。また、同期部１３１Ａは、第１１サイクルの開始時に、＜１１，２０，１＞を入力する（ステップＳ１３００）。入力した結果データの組の処理のＩＤ２０について、同期部１３１Ａに記録されているバージョン番号は”１”である。入力した結果データの組のバージョン番号と同一なので、ステップＳ１３０２へ進む（ステップＳ１３０１）。そして、同期部１３１Ａに記録しているバージョン番号を、入力した結果データの組のバージョン番号”１”に更新する（Ｓ１３０２）。そして、第１１サイクルの終了時に、入力した結果データの組＜１１，２０，１＞を装置外部の出力ポートへ出力する（ステップＳ１３０３）。第１１サイクルの終了時に、装置の各部分は図２４に示すような状態になる。
【０１９５】
以降は、同じ動作を繰り返す。すなわち、旧処理の結果データの組を捨て、新処理の結果データの組を装置外部の出力ポートへ出力し続ける。
【０１９６】
なお、本実施形態では、上記のように、新処理、旧処理とも、ＦＰＧＡのように再構成可能な回路素子に、それぞれの処理を実行するための回路情報を書き込んだ後、回路を動作させることによって実現することを想定している。しかし、新処理、旧処理の実現方法は、上記のようにハードウェアによって実現する方法には限定されない。すなわち、前述のように、第１の処理部１２１−１、第２の処理部１２１−２が備えるプロセッサにプログラムを実行させるという、ソフトウェアによる方法を用いてもよい。ソフトウェアによる実現方法では、上記の「パーティション」を「メモリ」に置き換え、構成データ、コンフィギュレーションデータ等の「回路設定情報」を「プログラム」に置き換えて考えればよい。
【０１９７】
以上のように、本発明の実施形態の時系列データ処理装置は、第１の処理部の処理の完了を確認した後、第１の処理部による処理を新処理に置き換える。この処理の置き換えは、第２の処理部において旧処理を実行しているときに実行される。そのため、旧処理の実行を継続したまま、新処理の実行を開始することができる。そして、各処理の結果データには識別情報が付加される。従って、旧処理から新処理への移行を、処理を中断することなく行うことができるという効果がある。
【０１９８】
本実施形態では、第２のユーザ定義処理（旧処理）から第３のユーザ定義処理（新処理）への変更を例として説明した。本実施形態では、旧処理は第２の処理部１２１−２において実行され、新処理は第１の処理部１２１−１において実行される。時系列データ処理装置１００は、各処理部に対応付けられて、処理制御部を備えるので、それぞれの処理を実行する処理部を入れ替えても、同様に動作することができる。
【０１９９】
もし、旧処理から新処理への処理の変更のみに対応できればよいアプリケーションでは、旧処理の停止機能は不要である。つまり、時系列データ処理装置１００が処理制御部１１１−２を備えることは必須ではない。
【０２００】
また、結果データの外部への出力の有無は、出力整合部１４１における、結果データに付加される識別情報を用いた制御により可能である。従って、時系列データ処理装置１００が出力接続部１３１−２を備えることも必須ではない。
【０２０１】
図１は、本実施形態の必須の構成のみを備える時系列データ処理装置１００−１の構成を示すブロック図である。
【０２０２】
時系列データ処理装置１００−１は、第１の処理部１２１−１、第２の処理部１２１−２、状態管理部１０１、処理制御部１１１−１、再構成部１２２、出力接続部１３１−１、情報管理部１４２、出力整合部１４１を備える。時系列データ処理装置１００−１は、処理制御部１１１−２、出力接続部１３１−２を備えない。
【０２０３】
第１の処理部１２１−１、第２の処理部１２１−２は、時系列データ処理装置１００のものと同じである。
【０２０４】
状態管理部１０１は、第１の処理部１２１−１の起動・停止の制御のみを行うため、処理制御部１１１−１のみを制御する。
【０２０５】
処理制御部１１１−１は、時系列データ処理装置１００のものと同様に、第１の処理部１２１−１の起動・停止を行う。
【０２０６】
再構成部１２２は、第１の処理部１２１−１のみの再構成を行う。
【０２０７】
出力接続部１３１−１は、第１の処理部１２１−１が生成した結果データの出力の有無を制御する。
【０２０８】
情報管理部１４２は、第１の処理部１２１−１、第２の処理部１２１−２が実行する処理の内容に対応する「識別情報」を設定する。識別情報の違いにより、第１の処理部１２１−１、第２の処理部１２１−２が行った処理の違いを識別することができる。識別情報には、前述の、「処理のＩＤ」や「バージョン番号」が含まれる。実施形態の説明では、識別情報として、処理のＩＤ及びバージョン番号を使用した例を示した。しかし、処理のＩＤとバージョン番号には本質的な違いはなく、処理の内容が変化したことを識別できる「識別情報」であれば、その他の情報を用いることも可能である。
【０２０９】
出力整合部１４１は、第１の処理部１２１−１、第２の処理部１２１−２が生成した結果データに付加された識別情報を入力する。そして、結果データの、装置外部への出力順序や出力可否を決定し、結果データを装置外部へ出力する。
【０２１０】
以上の構成を備えることにより、時系列データ処理装置１００−１は、旧処理を停止させることはできないが、旧処理から新処理への変更については何ら問題なく対応することができる。
【０２１１】
なお、本発明の時系列データ処理装置１００は、ソフトウェアによって実現することも可能である。時系列データ処理装置を制御するプログラムのフローチャートは、図７から図１１と同じである。すなわち、状態管理部１０１、処理制御部１１１−１、１１１−２、再構成部１２２、出力切断部１３１−１、１３１−２、情報管理部１４２、出力整合部１４１が行う処理を、時系列データ処理装置が備えるプロセッサ（図示なし）がプログラムを実行することによって実現してもよい。
【０２１２】
上記のプログラムは、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、フラッシュメモリ等の半導体記憶装置、光ディスク、磁気ディスク、光磁気ディスク等、非一時的な媒体に格納されてもよい。
【０２１３】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０２１４】
この出願は、２０１２年３月１６日に出願された日本出願特願２０１２−０６０８６３を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０２１５】
１００、１００−１    時系列データ処理装置
１０１    状態管理部
１１１、１１１−１、１１１−２    処理制御部
１２１、１２１−１、１２１−２    処理部
１２１Ａ    バージョン比較部
１２２    再構成部
１３１、１３１−１、１３１−２    出力接続部
１３１Ａ    同期部
１４１    出力整合部
１４２    情報管理部
５００    時系列データ処理装置
５０１    ホストコンピュータ
５１１    処理制御部
５２１    処理部
５２２    再構成部
５３１    出力接続部
６００    時系列データ処理装置
６１１    処理制御部
６２１    処理部
６２２    再構成部
６３１    出力接続部
１００１    部分バージョン比較部
１００２    待ちデータキュー
１００３    調停部
【図１】
0006040979.tif 000002
【図２】
0006040979.tif 000003
【図３】
0006040979.tif 000004
【図４】
0006040979.tif 000005
【図５】
0006040979.tif 000006
【図６】
0006040979.tif 000007
【図７】
0006040979.tif 000008
【図８】
0006040979.tif 000009
【図９】
0006040979.tif 000010
【図１０】
0006040979.tif 000011
【図１１】
0006040979.tif 000012
【図１２】
0006040979.tif 000013
【図１３】
0006040979.tif 000014
【図１４】
0006040979.tif 000015
【図１５】
0006040979.tif 000016
【図１６】
0006040979.tif 000017
【図１７】
0006040979.tif 000018
【図１８】
0006040979.tif 000019
【図１９】
0006040979.tif 000020
【図２０】
0006040979.tif 000021
【図２１】
0006040979.tif 000022
【図２２】
0006040979.tif 000023
【図２３】
0006040979.tif 000024
【図２４】
0006040979.tif 000025
【図２５】
0006040979.tif 000026
【図２６】
0006040979.tif 000027
【図２７】
0006040979.tif 000028
【図２８】
0006040979.tif 000029
【図２９】
0006040979.tif 000030
【図３０】
0006040979.tif 000031
【図３１】
0006040979.tif 000032
【図３２】
0006040979.tif 000033
【図３３】
0006040979.tif 000034