(57)【要約】【課題】ＦＰＧＡのソフトエラーに対して、コスト及び性能のオーバーヘッドを抑えた制御方法を提供する。【解決手段】ＦＰＧＡを搭載する計算機における処理制御方法であって、計算機はプロセッサ及びメモリを有し、ＦＰＧＡは論理回路及びエラー検出回路を含み、ＦＰＧＡは第１の処理を複数回実行し、プロセッサは第１の処理の処理結果を使用する第２の処理を実行し、処理制御方法は、ＦＰＧＡが、第１の処理及び論理回路のエラー検出処理を並行して実行し、処理結果及び完了通知をメモリに書き込むステップと、プロセッサが、第１の処理の完了通知を検出した場合、第２の処理を開始するステップと、ＦＰＧＡが、論理回路のエラーの発生をプロセッサに通知するステップと、プロセッサが、複数の第２の処理の中から、エラーを含む第１の処理の処理結果を使用する可能性がある第２の処理を特定し、中断するステップと、を含む。【選択図】図１
2018022328.tif 000002
【特許請求の範囲】
【請求項１】
ＦＰＧＡを搭載する計算機における処理制御方法であって、
前記計算機は、プロセッサ、及び前記プロセッサに接続されるメモリを有し、
前記ＦＰＧＡは、処理を実行する論理回路及び前記論理回路のエラー検出処理を実行するエラー検出回路を含み、前記プロセッサと接続し、
前記ＦＰＧＡは、第１の処理を複数回実行し、
前記プロセッサは、前記第１の処理の処理結果を使用する第２の処理を実行し、
前記処理制御方法は、
前記プロセッサが、前記ＦＰＧＡに前記第１の処理の開始を指示する第１のステップと、
前記ＦＰＧＡが、前記第１の処理及び前記論理回路のエラー検出処理を並行して実行し、前記第１の処理の処理結果及び前記第１の処理の完了通知を前記メモリに書き込む第２のステップと、
前記プロセッサが、前記第１の処理の完了通知を検出した場合、前記第２の処理を開始する第３のステップと、
前記ＦＰＧＡが、前記論理回路のエラーを検出した場合、前記論理回路のエラーの発生を前記プロセッサに通知する第４のステップと、
前記プロセッサが、前記論理回路のエラーの発生の通知を受けた場合、複数の前記第２の処理の中から、エラーを含む前記第１の処理の処理結果を使用する可能性がある少なくとも一つの第２の処理を特定する第５のステップと、
前記プロセッサが、前記特定された少なくとも一つの第２の処理を中断する第６のステップと、を含むことを特徴とする処理制御方法。
【請求項２】
請求項１に記載の処理制御方法であって、
前記メモリは、前記第２の処理の開始時刻を管理する開始時刻情報を格納し、
前記第５のステップは、
前記プロセッサが、前記開始時刻情報を参照するステップと、
前記プロセッサが、前記エラーの発生が検出された時刻から前記エラー検出処理の所要時間だけ遡った時間範囲に開始された第２の処理を、前記エラーを含む第１の処理の処理結果を使用する可能性がある第２の処理として特定するステップと、を含むことを特徴とする処理制御方法。
【請求項３】
請求項２に記載の処理制御方法であって、
前記ＦＰＧＡが、前記第１の処理の完了後に、前記第２の処理の開始時刻を前記開始時刻情報に書き込み、又は、前記プロセッサが、前記第２の処理の開始時に、前記第２の処理の開始時刻を前記開始時刻情報に書き込むステップを含むことを特徴とする処理制御方法。
【請求項４】
請求項１に記載の処理制御方法であって、
前記メモリは、前記第１の処理の状態を管理する状態管理情報を格納し、
前記状態管理情報は、前記第１の処理の識別情報、及び前記第１の処理の状態を示す状態情報から構成されるエントリを一つ以上含み、
前記第５のステップは、
前記プロセッサが、前記状態管理情報を参照して、エラー状態を示す前記状態情報が設定された前記第１の処理を特定するステップと、
前記プロセッサが、前記特定された第１の処理の処理結果を使用する前記第２の処理を、前記エラーを含む第１の処理の処理結果を使用する可能性がある第２の処理として特定するステップと、を含むことを特徴とする処理制御方法。
【請求項５】
請求項４に記載の処理制御方法であって、
前記第５のステップは、
前記プロセッサが、前記エラー状態を示す状態情報が設定された前記第１の処理を特定する前に、前記状態管理情報を参照して、実行済みであることを示す前記状態情報又は実行中であることを示す前記状態情報が設定されたエントリに、前記エラー状態を示す状態情報を設定するステップを含むことを特徴とする処理制御方法。
【請求項６】
請求項５に記載の処理制御方法であって、
前記第３のステップは、
前記プロセッサが、前記状態管理情報を参照して、完了した前記第１の処理に対応するエントリに前記実行済みであることを示す状態情報を設定するステップと、
前記プロセッサが、前記第１の処理の状態を監視するエラーフリー検出タスクを実行するステップを含み、
前記エラーフリー検出タスクを実行するプロセッサが、前記第１の処理が完了してから現在時刻までの経過時間を算出するステップと、
前記エラーフリー検出タスクを実行するプロセッサが、前記経過時間が前記エラー検出処理の所要時間より大きいか否かを判定するステップと、
前記経過時間が前記エラー検出処理の所要時間より大きいと判定された場合、前記エラーフリー検出タスクを実行するプロセッサが、前記エラーフリー検出タスクに対応する前記第１の処理のエントリに、正常な状態あることを示す前記状態情報を設定するステップと、を含むことを特徴とする処理制御方法。
【請求項７】
ＦＰＧＡを搭載する計算機であって、
前記計算機は、プロセッサ、及び前記プロセッサに接続されるメモリを有し、
前記ＦＰＧＡは、処理を実行する論理回路及び前記論理回路のエラー検出処理を実行するエラー検出回路を含み、前記プロセッサと接続し、
前記ＦＰＧＡは、第１の処理を複数回実行し、
前記プロセッサは、前記第１の処理の処理結果を使用する第２の処理を実行し、
前記計算機は、
前記第１の処理の実行契機及び前記第２の処理の実行契機を管理するスケジューラと、
前記論理回路のエラーの発生時に、複数の前記第２の処理の中から、エラーを含む前記第１の処理の処理結果を使用する少なくとも一つの処理を特定し、前記特定された少なくとも一つの第２の処理を中断するエラー割込みモジュールと、を有し、
前記スケジューラは、前記第１の処理の完了通知を検出した場合、前記第２の処理を開始することを特徴とする計算機。
【請求項８】
請求項７に記載の計算機であって、
前記メモリは、前記第２の処理の開始時刻を管理する開始時刻情報を格納し、
前記エラー割込みモジュールは、前記開始時刻情報を参照して、前記エラーの発生が検出された時刻から前記エラー検出処理の所要時間だけ遡った時間範囲に開始された第２の処理を、前記エラーを含む第１の処理の処理結果を使用する可能性がある第２の処理として特定することを特徴とする計算機。
【請求項９】
請求項８に記載の計算機であって、
前記ＦＰＧＡが、前記第１の処理の完了後に、前記第２の処理の開始時刻を前記開始時刻情報に書き込み、又は、前記プロセッサが、前記第２の処理の開始時に、前記第２の処理の開始時刻を前記開始時刻情報に書き込むことを特徴とする計算機。
【請求項１０】
請求項７に記載の計算機であって、
前記メモリは、前記第１の処理の状態を管理する状態管理情報を格納し、
前記状態管理情報は、前記第１の処理の識別情報、及び前記第１の処理の状態を示す状態情報から構成されるエントリを一つ以上含み、
前記エラー割込みモジュールは、
前記状態管理情報を参照して、エラー状態を示す前記状態情報が設定された前記第１の処理を特定し、
前記特定された第１の処理の処理結果を使用する前記第２の処理を、前記エラーを含む第１の処理の処理結果を使用する可能性がある第２の処理として特定することを特徴とする計算機。
【請求項１１】
請求項１０に記載の計算機であって、
前記エラー割込みモジュールは、前記エラー状態を示す状態情報が設定された前記第１の処理を特定する前に、前記状態管理情報を参照して、実行済みであることを示す前記状態情報又は実行中であることを示す前記状態情報が設定されたエントリに、前記エラー状態を示す状態情報を設定することを含むことを特徴とする計算機。
【請求項１２】
請求項１１に記載の計算機であって、
前記スケジューラは、
前記状態管理情報を参照して、完了した前記第１の処理に対応するエントリに前記実行済みであることを示す状態情報を設定し、
前記第２の処理の開始する場合に、前記第１の処理の状態を監視するエラーフリー検出タスクを実行し、
前記エラーフリー検出タスクは、
前記第１の処理が完了してから現在時刻までの経過時間を算出し、
前記経過時間が前記エラー検出処理の所要時間より大きいか否かを判定し、
前記経過時間が前記エラー検出処理の所要時間より大きいと判定された場合、前記エラーフリー検出タスクに対応する前記第１の処理のエントリに、正常な状態あることを示す前記状態情報を設定することを特徴とする計算機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＦＰＧＡのエラー対策技術に関する。
【背景技術】
【０００２】
ＩＴの進歩及びインターネットの普及等に伴う、計算機システムが扱うデータ量の増加しており、高い処理性能が要求されている。
【０００３】
従来から、性能向上のために、様々な技術が導入されている。一つにはＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）が挙げられる。ホスト計算機にＦＰＧＡボードを搭載し、ホスト計算機が有するＣＰＵの代わりにＦＰＧＡに各種演算処理を実行させる。これによって、ＣＰＵのオーバーヘッドを抑制できるため、システムの性能を向上できる。
【０００４】
しかし、ＦＰＧＡでは、宇宙線などに起因するソフトエラーにより、ＦＰＧＡが備えるＳＲＡＭ（以下、ＣＲＡＭ（Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ＲＡＭ）と記載する。）に格納されるユーザ論理（ユーザ回路）の構成情報等の値が反転する現象、すなわち「１」から「０」、又は「０」から「１」に変化する現象が発生する可能性がある。前述した現象によって、エラーを含む処理結果がＦＰＧＡから出力される可能性がある。
【０００５】
ソフトエラーに対する対策としては、ユーザ論理を冗長化する方法が考えられる。当該方法では、ＦＰＧＡの内部に、独立に同一の論理ブロックを二つ設け、各論理ブロックから出力されたデータを比較し、同一であれば誤りが無いと判定してデータをＦＰＧＡの外部に出力する。しかし、この方法では、論理規模が増大するため、生産コスト及び開発コスト等のコストが増大する。
【０００６】
ソフトエラーに対する対策として、特許文献１に記載の技術が知られている。特許文献１には、「演算手段は、構成データにより回路構成が規定されるよう構成され、回路構成に基づく演算の結果として演算信号を出力する。処理手段は、演算信号に基づく処理信号を出力する。異常検出手段は、演算手段における回路構成に異常が生じたことを検出する。処理手段は、演算信号を取得してから、回路構成に異常が生じた場合に該異常が生じてから異常検出手段によって検出されるまでの時間に応じた待機時間の経過後に、異常検出手段の検出結果に応じた処理信号を出力する。」ことが記載されている。
【０００７】
エラー検出処理は逐次的に行われるため、現在、処理しているＣＲＡＭ部分の隣の部分にエラーが発生した場合、この時点では、エラーは検出できず、再度、ＣＲＡＭのエラー検出処理を実行することによって、はじめて、データ処理中にエラーが発生したことを検出できる。したがって、データ処理の完了後、エラー検出処理が実行される。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１６−２５４６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献１の方法は、コストを削減することはできるが、エラー検出時間だけ、次の処理の実行を待つ必要があるため、性能が低下する。特に、エラー検出時間より短い時間で終了する処理の場合、性能の低下が顕著となる。
【課題を解決するための手段】
【００１０】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、ＦＰＧＡを搭載する計算機における処理制御方法であって、前記計算機は、プロセッサ、及び前記プロセッサに接続されるメモリを有し、前記ＦＰＧＡは、処理を実行する論理回路及び前記論理回路のエラー検出処理を実行するエラー検出回路を含み、前記プロセッサと接続し、前記ＦＰＧＡは、第１の処理を複数回実行し、前記プロセッサは、前記第１の処理の処理結果を使用する第２の処理を実行し、前記処理制御方法は、前記プロセッサが、前記ＦＰＧＡに前記第１の処理の開始を指示する第１のステップと、前記ＦＰＧＡが、前記第１の処理及び前記論理回路のエラー検出処理を並行して実行し、前記第１の処理の処理結果及び前記第１の処理の完了通知を前記メモリに書き込む第２のステップと、前記プロセッサが、前記第１の処理の完了通知を検出した場合、前記第２の処理を開始する第３のステップと、前記ＦＰＧＡが、前記論理回路のエラーを検出した場合、前記論理回路のエラーの発生を前記プロセッサに通知する第４のステップと、前記プロセッサが、前記論理回路のエラーの発生の通知を受けた場合、複数の前記第２の処理の中から、エラーを含む前記第１の処理の処理結果を使用する可能性がある少なくとも一つの第２の処理を特定する第５のステップと、前記プロセッサが、前記特定された少なくとも一つの第２の処理を中断する第６のステップと、を含むことを特徴とする。
【発明の効果】
【００１１】
本発明によれば、ＦＰＧＡを搭載する計算機において、コストを抑えつつ、性能のオーバーヘッドを削減した処理を実現できる。前述した以外の課題、構成及び効果は、以下の実施例の説明によって明らかにされる。
【図面の簡単な説明】
【００１２】
【図１】実施例１のＦＰＧＡのエラー処理の概要を説明する図である。
【図２】実施例１の計算機システムの構成例を示す図である。
【図３】実施例１の処理管理情報の一例を示す図である。
【図４】実施例１のＤＲＡＭに格納される処理Ａ−ｎの結果情報の一例を示す図である。
【図５】実施例１のコンフィグファイルの一例を示す図である。
【図６】実施例１のコンフィグファイルに設定するパラメタを入力するためのＧＵＩの一例を示す図である。
【図７】実施例１のサーバ装置内の処理の流れを示すシーケンス図である。
【図８】実施例１のＦＰＧＡスケジューラが実行する処理を説明するフローチャートである。
【図９】実施例１のエラー割込みモジュールが実行する処理を説明するフローチャートである。
【図１０】実施例２の処理管理情報の一例を示す図である。
【図１１】実施例２のＦＰＧＡスケジューラが実行する処理を説明するフローチャートである。
【図１２】実施例２の処理Ａ−ｎのエラーフリー検出タスクが実行する処理を説明するフローチャートである。
【図１３】実施例２のエラー割込みモジュールが実行する処理を説明するフローチャートである。
【図１４】実施例２のエラーフリー検出タスクによって更新された処理管理情報の一例を示す図である。
【００１３】
以下の説明では「ａａａテーブル」、「ａａａリスト」、「ａａａＤＢ」、「ａａａキュー」等の表現にて本発明の情報を説明するが、これら情報はテーブル、リスト、ＤＢ、及びキュー等のデータ構造以外で表現されていてもよい。そのため、データ構造に依存しないことを示すために「ａａａテーブル」、「ａａａリスト」、「ａａａＤＢ」、及び「ａａａキュー」等について「ａａａ情報」と呼ぶことがある。
【００１４】
さらに、各情報の内容を説明する場合に、「識別情報」、「識別子」、「名」、「名前」、及び「ＩＤ」という表現を用いるが、これらについてはお互いに置換が可能である。
【００１５】
以下の説明では「プログラム」を主語として説明を行う場合があるが、プログラムはプロセッサによって実行されることによって、定められた処理をメモリ及び通信ポート（通信制御デバイス）を用いながら行うため、プロセッサを主語とした説明としてもよい。また、プログラムを主語として開示された処理は管理サーバ等の計算機、情報処理装置が行う処理としてもよい。また、プログラムの一部又は全ては専用ハードウェアによって実現されてもよい。
【００１６】
また、各種プログラムは、プログラム配布サーバを介して各計算機にインストールされてもよいし、計算機が読み取り可能な記憶メディアを用いて各計算機にインストールされてもよい。この場合、プログラム配布サーバはプロセッサと記憶資源を含み、記憶資源はさらに配布プログラム及び配布対象であるプログラムを記憶している。そして、配布プログラムをプロセッサが実行することによって、プログラム配布サーバのプロセッサは配布対象のプログラムを計算機に配布する。
【実施例１】
【００１７】
図１は、実施例１のＦＰＧＡのエラー処理の概要を説明する図である。図２は、実施例１の計算機システムの構成例を示す図である。
【００１８】
まず、図２を用いて計算機システムの構成について説明する。
【００１９】
計算機システムは、サーバ装置１００及びストレージシステム１０１から構成される。サーバ装置１００は、所定の処理を実行する。ストレージシステム１０１は、各種データを格納する。
【００２０】
サーバ装置１００は、ＣＰＵ２０１、ＤＲＡＭ２０２、記憶装置２０３、ＨＢＡ２０４、及びＦＰＧＡボード２０５を有する。ＣＰＵ２０１、ＤＲＡＭ２０２、記憶装置２０３、及びＨＢＡ２０４は、内部バス等を介して互いに接続される。ＦＰＧＡボード２０５は、ＰＣＩｅコネクタ２４３を介してサーバ装置１００と接続され、当該ＰＣＩｅコネクタ２４３を介してＣＰＵ２０１と通信する。
【００２１】
なお、サーバ装置１００は、入出力デバイスを有してもよい。入出力デバイスの例としてはディスプレイ、キーボード、及びポインタデバイスが考えられるが、これ以外のデバイスであってもよい。また、入出力デバイスの代替としてシリアルインタフェース又はイーサーネットインタフェース等を入出力デバイスとし、当該インタフェースにディスプレイ、キーボード、及びポインタデバイスのいずれかを有する表示用計算機を接続し、表示用情報を表示用計算機に送信し、また、入力用情報を表示用計算機から受信することによって、表示用計算機が情報を表示し、入力を受け付けることで入出力デバイスでの入力及び表示を代替してもよい。
【００２２】
以下、計算機システムを管理し、本願発明の表示用情報を表示する一つ以上の計算機の集合を管理システムと呼ぶことがある。管理計算機が表示用情報を表示する場合、管理計算機が管理システムである。また、管理計算機及び表示用計算機の組み合わせも管理システムである。また、管理処理の高速化及び高信頼化のために複数の計算機を用いて管理計算機と同等の処理を実現してもよく、この場合、当該複数の計算機（表示を表示用計算機が行う場合には表示用計算機も含む。）が管理システムである。
【００２３】
ＣＰＵ２０１は、各種処理を実行する演算装置である。ＤＲＡＭ２０２は、ＣＰＵ２０１が実行するプログラム及び当該プログラムの実行に必要なデータを格納する。また、ＤＲＡＭ２０２は、プログラムが使用する一時領域を含む。記憶装置２０３は、データを永続的に格納する装置であり、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）及びＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等が考えられる。ＨＢＡ２０４は、ストレージシステム１０１に接続するためのインタフェースである。なお、サーバ装置１００は、ネットワークインタフェースを用いてストレージシステム１０１と接続してもよい。
【００２４】
ＦＰＧＡボード２０５は、ＦＰＧＡ２４０、ＲＯＭ２４１、ＤＲＡＭ２４２、及びＰＣＩｅコネクタ２４３を有する。ＦＰＧＡ２４０、ＲＯＭ２４１、ＤＲＡＭ２４２、及びＰＣＩｅコネクタ２４３は、内部バス等を介して互いに接続される。
【００２５】
ＲＯＭ２４１は、ユーザ論理２５０の構成情報であるコンフィグレーションデータを格納する。ＤＲＡＭ２４２は、ＦＰＧＡ２４０が実行する処理の結果等を格納する。
【００２６】
ＦＰＧＡ２４０は、ユーザ論理２５０、ＣＲＡＭ２６０、及びエラー検出回路２７０を有する。
【００２７】
ユーザ論理２５０は、ＦＰＧＡ２４０を使用するユーザによって定義された論理回路であり、ＦＦ（フリップフロップ）２５１等を含む。ＣＲＡＭ２６０は、ＲＯＭ２４１から読み出されたコンフィグレーションデータを格納する。エラー検出回路２７０は、ＣＲＡＭ２６０に対してエラー検出処理を実行し、ＣＲＡＭ２６０におけるソフトエラーを検出する。
【００２８】
ＦＰＧＡ２４０は、電源投入後、ＲＯＭ２４１からコンフィグレーションデータを読み出し、ＣＲＡＭ２６０にコンフィグレーションデータを書き込むことによってユーザ論理２５０を形成する。
【００２９】
ここで、サーバ装置１００のＤＲＡＭ２０２に格納されるプログラムについて説明する。
【００３０】
ＤＲＡＭ２０２は、ＯＳ２１０及びミドルウェア／アプリケーション２２０を実現するプログラムを格納する。また、ＤＲＡＭ２０２は、処理管理情報２３０を格納する。
【００３１】
ＯＳ２１０は、サーバ装置１００全体を制御する。ＯＳ２１０は、ＦＰＧＡ２４０を操作するためのＦＰＧＡドライバ２１１を含む。
【００３２】
ミドルウェア／アプリケーション２２０は、ＦＰＧＡスケジューラ２２１及びエラー割込みモジュール２２２を含む。
【００３３】
ＦＰＧＡスケジューラ２２１は、ＦＰＧＡ２４０に処理を割り当てる。エラー割込みモジュール２２２は、ＦＰＧＡ２４０のエラーが検出された場合のエラー対策処理を実行する。具体的には、エラー割込みモジュール２２２は、アボートする処理を特定し、特定された処理をアボートする。
【００３４】
ストレージシステム１０１は、図示しない、ＣＰＵ、メモリ、接続インタフェース、及び記憶装置を有する。また、ストレージシステム１０１のメモリには、ストレージシステム１０１を制御するＯＳ等を実現するプログラムが格納される。
【００３５】
また、記憶装置２０３は、コンフィグファイル２８０を格納する。コンフィグファイル２８０は、ＦＰＧＡスケジューラ２２１を実行するための各種パラメタを格納する。コンフィグファイル２８０の詳細は図５を用いて説明する。
【００３６】
図１を用いて処理の概要について説明する。時間軸１０は、時間の流れを示す軸であり、矢印の方向に時間が進むことを示す。
【００３７】
本実施例では、ユーザ論理２５０は処理Ａ−ｎを実行し、ミドルウェア／アプリケーション２２０は、処理Ａ−ｎの処理結果を用いた処理Ｂ−ｎを実行するものとする。また、エラー検出回路２７０が実行するエラー検出処理の所要時間はＴｃであるものとする。
【００３８】
ユーザ論理２５０は、処理Ａ−１、Ａ−２、Ａ−３、Ａ−４、Ａ−５、Ａ−６、Ａ−７と、処理Ａ−ｎを７回実行する。エラー検出回路２７０は、ユーザ論理２５０の処理と並行して、ＣＲＡＭ２６０のエラー検出処理を実行する。なお、処理Ａ−ｎとエラー検出処理とは、同時に実行されるように並列化されてもよいし、実行時間の一部が重複するように並列化されていてもよい。
【００３９】
ミドルウェア／アプリケーション２２０は、処理Ａ−ｉの完了を検出した場合、処理Ａ−ｉの実行時におけるＣＲＡＭ２６０のエラー検出処理が完了する前に、処理Ｂ−ｉを開始する。
【００４０】
エラー検出処理では、エラー検出回路２７０が、ＣＲＡＭ２６０に格納される全てのデータに対して逐次的にエラーの有無を確認する。そのため、エラー検出処理が完了する前の時点においてエラーが検出されていない場合でも、エラーが検出される可能性がある。
【００４１】
エラーが発生していないことを保証するためには、エラー検出処理が開始されてからＴｃの間、処理Ｂ−ｎの実行を待つ必要がある。この場合、オーバーヘッドが発生する。
【００４２】
そこで、本実施例では、ミドルウェア／アプリケーション２２０は、処理Ａ−ｎが終了した後、投機的に処理Ｂ−ｎを実行する。ある時点でＣＲＡＭ２６０のエラーが検出された場合、エラー割込みモジュール２２２が、任意の条件を満たす処理Ｂ−ｎを特定し、特定された処理Ｂ−ｎをアボートする。
【００４３】
実施例１では、ミドルウェア／アプリケーション２２０は、処理Ｂ−ｎの開始時間を予め取得し、処理管理情報２３０にて管理する。ミドルウェア／アプリケーション２２０は、エラーが検出された場合、エラーが検出された現在時刻ＴｐからＴｃだけ遡った時間範囲に開始された処理Ｂ−ｎを特定し、特定された処理Ｂ−ｎをアボートする。
【００４４】
エラーの有無の判定は、逐次的に実行されるため、現在時刻Ｔｐから時刻（Ｔｐ−Ｔｃ）までの間にエラーが発生している可能性がある。したがって、この時間間隔の間に出力された処理Ａ−ｎの結果はエラーを含む可能性がある。
【００４５】
図１に示す例では、処理Ａ−７の実行中に時刻Ｔｐにおいてエラーが検出された場合、エラー割込みモジュール２２２は、時刻Ｔｐから時刻（Ｔｐ−Ｔｃ）までの間に出力された処理Ａ−３、Ａ−４、Ａ−５、Ａ−６を利用する処理Ｂ−３、Ｂ−４、Ｂ−５、Ｂ−６を特定する。さらに、エラー割込みモジュール２２２は、処理Ｂ−３、Ｂ−４、Ｂ−５、Ｂ−６をアボートする。処理Ｂ−１、Ｂ−２はそのまま処理が実行される。
【００４６】
この場合、処理Ｂ−２はそのまま実行されるため、エラー検出処理のオーバーヘッドを従来の方法より削減することができる。
【００４７】
図３は、実施例１の処理管理情報２３０の一例を示す図である。
【００４８】
処理管理情報２３０は、開始時刻情報３００を含む。開始時刻情報３００は、ＦＰＧＡスケジューラ２２１によって起動される処理の開始時刻を管理する情報である。開始時刻情報３００は、ＩＤ３０１及び開始時刻３０２から構成されるエントリを含む。
【００４９】
ＩＤ３０１は、ＦＰＧＡ２４０が実行した処理の結果を用いて実行される処理の識別情報である。例えば、ＩＤ３０１には、処理の名称及び処理の回数を組み合わせた識別情報が格納される。開始時刻３０２は、ＩＤ３０１に対応する処理が開始された時刻を格納する。
【００５０】
図３の開始時刻情報３００には、処理Ａ−１、Ａ−２、Ａ−３、Ａ−４、Ａ−５、Ａ−６の処理結果を用いて実行される処理Ｂ−１、Ｂ−２、Ｂ−３、Ｂ−４、Ｂ−５、Ｂ−６の開始時刻が登録される。
【００５１】
図４は、実施例１のＤＲＡＭ２０２に格納される処理Ａ−ｎの結果情報の一例を示す図である。
【００５２】
結果情報４００は、ＩＤ４０１及び処理結果４０２から構成されるエントリを含む。
【００５３】
ＩＤ４０１は、ＦＰＧＡ２４０が実行する処理の識別情報である。例えば、ＩＤ４０１には、処理の名称及び処理の回数を組み合わせた識別情報が格納される。処理結果４０２は、ＩＤ４０１に対応する処理の結果である。処理結果が出力されていない処理に対応するエントリの処理結果４０２には、「Ｎｕｌｌ」が格納される。
【００５４】
図５は、実施例１のコンフィグファイル２８０の一例を示す図である。図６は、実施例１のコンフィグファイル２８０に設定するパラメタを入力するためのＧＵＩの一例を示す図である。
【００５５】
実施例１のコンフィグファイル２８０には、エラー検出処理の所要時間を示すエラー検出時間５０１を含む。その他の情報は、公知のものであるため説明を省略する。
【００５６】
ＧＵＩ６００は、ＦＰＧＡ  Ｅｒｒｏｒ  ｄｅｔｅｃｔ  ｔｉｍｅ入力欄６０１を含む。ユーザは、当該入力欄６０１にエラー検出処理の所要時間を入力する。その他の入力欄及び操作ボタンは公知のものであるため説明を省略する。
【００５７】
図７は、実施例１のサーバ装置１００内の処理の流れを示すシーケンス図である。
【００５８】
図７では、一時的に実行される処理を太線で示している。ＦＰＧＡドライバ２１１及びＦＰＧＡスケジューラ２２１は、常時処理を実行しているため太線を用いていない。
【００５９】
ＦＰＧＡスケジューラ２２１は、ミドルウェア／アプリケーション２２０から処理Ａの開始要求を受けた場合、ＦＰＧＡドライバ２１１を介して処理Ａ−１の実行指示をＦＰＧＡ２４０に送信する（ステップＳ７０１）。処理Ａ−１の実行指示には、処理Ａ−１の実行を指示するコマンド及び処理に必要なデータにアクセスするためのアドレスが含まれる。このとき、ＦＰＧＡスケジューラ２２１は、ＤＲＡＭ２０２に結果情報４００を生成する。
【００６０】
ＦＰＧＡ２４０は、処理Ａ−１の実行指示を受信した場合、処理Ａ−１を実行するユーザ論理２５０を起動し、また、当該実行指示に含まれるアドレスに基づいてＤＲＡＭ２０２からデータを取得する（ステップＳ７０２）。ユーザ論理２５０は、ＤＲＡＭ２０２から取得したデータを用いて処理Ａ−１を開始する。また、エラー検出回路２７０は、ＣＲＡＭ２６０のエラー検出処理を開始する。
【００６１】
ユーザ論理２５０は、処理Ａ−１の処理結果をＤＲＡＭ２０２に登録し（ステップＳ７０３）、また、処理Ａ−１の完了通知をＤＲＡＭ２０２に登録する（ステップＳ７０４）。
【００６２】
具体的には、ユーザ論理２５０は、結果情報４００のＩＤ４０１が処理Ａ−１の識別情報に一致するエントリを検索し、当該エントリの処理結果４０２に処理結果を登録する。
【００６３】
ＦＰＧＡスケジューラ２２１は、処理Ａ−ｎの完了通知を検出した場合（ステップＳ７０５）、処理Ｂ−１の起動する（ステップＳ７０６）。本実施例では、処理Ｂ−１は、タスクとして起動する。また、ＦＰＧＡスケジューラ２２１は、処理Ｂ−１の開始時刻をＤＲＡＭ２０２の処理管理情報２３０に登録する（ステップＳ７０７）。
【００６４】
処理Ｂ−１を実行するＣＰＵ２０１は、ＤＲＡＭ２０２から処理Ａ−１の処理結果を読み出し（ステップＳ７０８）、処理Ｂ−１を実行する。
【００６５】
ＦＰＧＡスケジューラ２２１は、処理Ｂ−１の起動とともに、処理Ａ−２の実行指示をＦＰＧＡ２４０に送信する。以下、ステップＳ７０１からステップＳ７０８までの処理が繰り返し実行される。
【００６６】
ＦＰＧＡスケジューラ２２１は、処理Ａ−２の完了通知を検出した場合、処理Ｂ−２を起動し（ステップＳ７０９）、処理Ａ−３の完了通知を検出した場合、処理Ｂ−３を起動する（ステップＳ７１０）。なお、説明の簡単のため、処理Ａ−３から処理Ａ−６、処理Ｂ３から処理Ｂ６の処理は省略している。
【００６７】
エラー検出回路２７０が、処理Ａ−７の実行中に、ＣＲＡＭ２６０のエラーを検出した場合、ミドルウェア／アプリケーション２２０に対してエラー検出信号を発行することによって、エラーを通知する（ステップＳ７１１）。
【００６８】
ミドルウェア／アプリケーション２２０は、エラー検出信号を受信した場合、エラー割込みモジュール２２２を起動する。
【００６９】
エラー割込みモジュール２２２は、ＤＲＡＭ２０２に格納される開始時刻情報３００を取得し、また、記憶装置２０３に格納されるコンフィグファイル２８０からエラー検出時間Ｔｃを取得する（ステップＳ７１２）。
【００７０】
エラー割込みモジュール２２２は、取得した情報に基づいて、時刻Ｔｐから時刻（Ｔｐ−Ｔｃ）までの間に出力された処理Ａ−３、Ａ−４、Ａ−５、Ａ−６を利用する処理Ｂ−３、Ｂ−４、Ｂ−５、Ｂ−６を特定する。エラー割込みモジュール２２２は、特定された処理Ｂ−３、Ｂ−４、Ｂ−５、Ｂ−６をアボートする（ステップＳ７１３）。
【００７１】
図８は、実施例１のＦＰＧＡスケジューラ２２１が実行する処理を説明するフローチャートである。
【００７２】
ＦＰＧＡスケジューラ２２１は、ミドルウェア／アプリケーション２２０から処理Ａの開始要求を受けた場合、以下で説明する処理を開始する。
【００７３】
ＦＰＧＡスケジューラ２２１は、処理Ａの実行回数を表す変数ｎを初期化する（ステップＳ８０１）。
【００７４】
具体的には、ＦＰＧＡスケジューラ２２１は、変数ｎに「１」を設定する。このとき、ＦＰＧＡスケジューラ２２１は、結果情報４００を生成する。ＦＰＧＡスケジューラ２２１は、結果情報４００に実行回数分のエントリを追加する。ＦＰＧＡスケジューラ２２１は、追加された各エントリのＩＤ４０１に処理Ａ―ｎの識別情報を設定し、処理結果４０２に「Ｎｕｌｌ」を設定する。なお、処理Ａ−ｎの実行回数は予め設定されているものとする。
【００７５】
次に、ＦＰＧＡスケジューラ２２１は、ＦＰＧＡ２４０に処理Ａ−ｎの実行指示を送信する（ステップＳ８０２）。その後、ＦＰＧＡスケジューラ２２１は、処理Ａ−ｎの完了通知を監視する。
【００７６】
ＦＰＧＡスケジューラ２２１は、ＤＲＡＭ２０２に処理Ａ−ｎの完了通知が登録されたか否かを判定する（ステップＳ８０３）。
【００７７】
ＤＲＡＭ２０２に処理Ａ−ｎの完了通知が登録されていないと判定された場合、ＦＰＧＡスケジューラ２２１は、一定時間経過した後にステップＳ８０３に戻り、同様の処理を実行する。
【００７８】
ＤＲＡＭ２０２に処理Ａ−ｎの完了通知が登録されたと判定された場合、ＦＰＧＡスケジューラ２２１は、処理Ａ−ｎの処理結果を使用する処理Ｂ−ｎを起動する（ステップＳ８０４）。また、ＦＰＧＡスケジューラ２２１は、開始時刻情報３００に処理Ｂ−ｎの開始時刻を登録する（ステップＳ８０５）。
【００７９】
具体的には、ＦＰＧＡスケジューラ２２１は、開始時刻情報３００にエントリを追加し、追加されたエントリのＩＤ３０１に処理Ｂ−ｎの識別情報を設定し、開始時刻３０２に処理Ｂ−ｎの開始時刻を設定する。なお、開始時刻３０２に設定する時刻は、起動指示を送信した時刻でもよいし、処理Ｂ−ｎが起動した時刻でもよい。
【００８０】
ＦＰＧＡスケジューラ２２１は、変数ｎの値が規定回数以上であるか否かを判定する（ステップＳ８０６）。
【００８１】
変数ｎの値が規定回数より小さいと判定された場合、ＦＰＧＡスケジューラ２２１は、変数ｎに１を加算した値を新たな変数ｎの値に設定し（ステップＳ８０７）、ステップＳ８０２に戻り、同様の処理を実行する。
【００８２】
変数ｎの値が規定回数以上であると判定された場合、ＦＰＧＡスケジューラ２２１は、処理を終了する。
【００８３】
なお、処理Ｂ−ｎの開始時刻は、処理Ｂ−ｎを実行するＣＰＵ２０１によって書き込まれてもよい。
【００８４】
図９は、実施例１のエラー割込みモジュール２２２が実行する処理を説明するフローチャートである。
【００８５】
エラー割込みモジュール２２２は、エラー検出信号を受信したミドルウェア／アプリケーション２２０によって呼び出された場合、以下で説明する処理を開始する。
【００８６】
エラー割込みモジュール２２２は、ＦＰＧＡスケジューラ２２１をアボートする（ステップＳ９０１）。
【００８７】
具体的には、エラー割込みモジュール２２２は、ＦＰＧＡスケジューラ２２１が処理Ａ−ｎの完了通知の監視状態となったとき、ＦＰＧＡスケジューラ２２１の動作を停止する。
【００８８】
次に、エラー割込みモジュール２２２は、コンフィグファイル２８０からエラー検出時間Ｔｃを取得する（ステップＳ９０２）。また、エラー割込みモジュール２２２は、現在時刻Ｔｐを取得する。
【００８９】
次に、エラー割込みモジュール２２２は、アボートする処理Ｂ−ｎを特定する（ステップＳ９０３）。具体的には、以下のような処理が実行される。
【００９０】
エラー割込みモジュール２２２は、ＤＲＡＭ２０２から開始時刻情報３００を取得し、開始時刻情報３００に登録されたエントリの中から対象のエントリを一つ選択する。例えば、エラー割込みモジュール２２２は、上のエントリから順に選択する。
【００９１】
エラー割込みモジュール２２２は、選択されたエントリの開始時刻が式（１）を満たすか否かを判定する。式（１）を満たす場合、エラー割込みモジュール２２２は、選択されたエントリのＩＤ３０１に対応する処理Ｂ−ｎをアボートする処理Ｂ−ｎに決定する。
【００９２】
【数１】
2018022328.tif 000003
【００９３】
エラー割込みモジュール２２２は、開始時刻情報３００に登録された全てのエントリに対して前述した処理を実行する。以上がステップＳ９０３の処理の説明である。
【００９４】
次に、エラー割込みモジュール２２２は、特定された処理Ｂ−ｎをアボートし（ステップＳ９０４）、処理を終了する。
【実施例２】
【００９５】
実施例２では、ＦＰＧＡスケジューラ２２１が、処理Ａの状態を管理し、エラーを含む処理結果を出力する可能性がある処理Ａを特定し、特定された処理Ａに対応する処理Ｂをアボートする。
【００９６】
以下、実施例１との差異を中心に実施例２について説明する。
【００９７】
実施例２の計算機システムの構成は実施例１の計算機システムの構成と同一であるため説明を省略する。実施例２のサーバ装置１００のハードウェア構成及びソフトウェア構成は実施例１のサーバ装置１００のハードウェア構成及びソフトウェア構成と同一であるため説明を省略する。実施例２では、処理管理情報２３０に含まれる情報が実施例１とは異なる。
【００９８】
図１０は、実施例２の処理管理情報２３０の一例を示す図である。
【００９９】
処理管理情報２３０は、状態管理情報１０００を含む。状態管理情報１０００は、ＦＰＧＡ２４０が実行する処理の状態、すなわち、ＦＰＧＡ２４０が完了通知を監視する対象の処理の状態を管理する情報である。状態管理情報１０００は、ＩＤ１００１、状態１００２、終了時刻１００３、及び処理結果１００４から構成されるエントリを含む。
【０１００】
ＩＤ１００１は、監視する処理の識別情報である。例えば、ＩＤ１００１には、処理の名称及び処理の回数を組み合わせた識別情報が格納される。
【０１０１】
状態１００２は、処理の状態である。状態１００２には、「Ｅｒ」、「Ｅｒ＿ｆｒｅ」、「Ｅｎｄ」、「Ｅｘ」、及び「Ｎｕｌｌ」のいずれかが格納される。「Ｅｒ」は、エラーの状態を表す。「Ｅｒ＿ｆｒｅ」は、エラーフリーの状態を表す。「Ｅｎｄ」は、処理が終了した状態を表す。「Ｅｘ」は、処理が実行中であることを表す。「Ｎｕｌｌ」は、処理が実行されていないことを表す。
【０１０２】
終了時刻１００３は、処理が完了した時刻である。処理結果１００４は、処理の処理結果である。なお、処理が完了していない場合、終了時刻１００３及び処理結果１００４には「Ｎｕｌｌ」が格納される。
【０１０３】
実施例２では、状態管理情報１０００を用いて処理Ａの処理結果も管理されるため、ＤＲＡＭ２０２には、結果情報４００を作成する必要はない。したがって、処理Ｂを実行するＣＰＵ２０１は、処理を実行する場合に、状態管理情報１０００に登録された処理Ａの処理結果を取得する。
【０１０４】
図１１は、実施例２のＦＰＧＡスケジューラ２２１が実行する処理を説明するフローチャートである。
【０１０５】
ＦＰＧＡスケジューラ２２１は、ミドルウェア／アプリケーション２２０から処理Ａの開始要求を受けた場合、以下で説明する処理を開始する。
【０１０６】
ステップＳ８０１からステップＳ８０３の処理、ステップＳ８０５からステップＳ８０７の処理は実施例１と同一の処理である。
【０１０７】
ＦＰＧＡスケジューラ２２１は、ステップＳ８０１の処理が実行された後、状態管理情報１０００を更新する（ステップＳ１１０１）。具体的には、以下のような処理が実行される。
【０１０８】
ＦＰＧＡスケジューラ２２１は、状態管理情報１０００が存在するか否かを判定する。状態管理情報１０００が存在しないと判定された場合、ＦＰＧＡスケジューラ２２１は、状態管理情報１０００を生成し、状態管理情報１０００に規定回数分のエントリを追加する。ＦＰＧＡスケジューラ２２１は、各エントリのＩＤ１００１に処理Ａ−ｎの識別情報を設定し、また、各エントリの状態１００２、終了時刻１００３、及び処理結果１００４に「Ｎｕｌｌ」を設定する。
【０１０９】
ＦＰＧＡスケジューラ２２１は、状態管理情報１０００を生成した後、又は、状態管理情報１０００が存在する場合、処理Ａ−ｎに対応するエントリの状態１００２に「Ｅｘ」を設定する。以上がステップＳ１１０１の処理の説明である。
【０１１０】
次に、ＦＰＧＡスケジューラ２２１は、ステップＳ８０２及びステップＳ８０３の処理を実行する。
【０１１１】
ステップＳ８０３において、完了通知が登録されたと判定された場合、ＦＰＧＡスケジューラ２２１は、状態管理情報１０００を更新する（ステップＳ１１０２）。
【０１１２】
具体的には、ＦＰＧＡスケジューラ２２１は、処理Ａ−ｎに対応するエントリの状態１００２に「Ｅｎｄ」を設定し、また、終了時刻１００３に現在時刻を登録する。
【０１１３】
次に、ＦＰＧＡスケジューラ２２１は、ステップＳ８０５の処理を実行し、その後、処理Ａ−ｎのエラーフリー検出タスクを起動する（ステップＳ１１０３）。エラーフリー検出タスクが実行する処理の詳細は、図１２を用いて説明する。
【０１１４】
次に、ＦＰＧＡスケジューラ２２１は、ステップＳ８０６及びステップＳ８０７の処理を実行する。
【０１１５】
図１２は、実施例２の処理Ａ−ｎのエラーフリー検出タスクが実行する処理を説明するフローチャートである。
【０１１６】
処理Ａ−ｎのエラーフリー検出タスクは、記憶装置２０３に格納されるコンフィグファイル２８０からエラー検出時間Ｔｃを取得する（ステップＳ１２０１）。
【０１１７】
処理Ａ−ｎのエラーフリー検出タスクは、経過時間を算出し（ステップＳ１２０２）、経過時間がエラー検出時間Ｔｃより大きいか否かを判定する（ステップＳ１２０３）。
【０１１８】
具体的には、処理Ａ−ｎのエラーフリー検出タスクは、状態管理情報１０００から処理Ａ−ｎに対応するエントリを検索し、当該エントリの終了時刻１００３から終了時刻を取得する。処理Ａ−ｎのエラーフリー検出タスクは、現在時刻から終了時刻を減算することによって経過時間を算出する。
【０１１９】
経過時間がエラー検出時間Ｔｃ以下であると判定された場合、処理Ａ−ｎのエラーフリー検出タスクは、一定時間経過した後、ステップＳ１２０２に戻り、同様の処理を実行する。
【０１２０】
経過時間がエラー検出時間Ｔｃより大きいと判定された場合、処理Ａ−ｎのエラーフリー検出タスクは、状態管理情報１０００を更新し（ステップＳ１２０４）、処理を終了する。
【０１２１】
具体的には、処理Ａ−ｎのエラーフリー検出タスクは、処理Ａ−ｎに対応するエントリの状態１００２に「Ｅｒ＿ｆｒｅ」を設定する。
【０１２２】
図１３は、実施例２のエラー割込みモジュール２２２が実行する処理を説明するフローチャートである。
【０１２３】
エラー割込みモジュール２２２は、エラー検出信号を受信したミドルウェア／アプリケーション２２０によって呼び出された場合、以下で説明する処理を開始する。
【０１２４】
ステップＳ９０１及びステップＳ９０４の処理は、実施例１と同一である。ステップＳ９０１の処理が実行された後、エラー割込みモジュール２２２は、状態管理情報１０００を更新する（ステップＳ１３０１）。
【０１２５】
エラー割込みモジュール２２２は、状態１００２が「Ｅｘ」又は「Ｅｎｄ」であるエントリを特定し、特定されたエントリの状態１００２に「Ｅｒ」を設定する。状態１００２が「Ｅｘ」又は「Ｅｎｄ」である処理Ａの処理結果はエラーを含む可能性があるためである。
【０１２６】
次に、エラー割込みモジュール２２２は、アボートする処理Ｂ−ｎを特定する（ステップＳ１３０２）。具体的には、以下のような処理が実行される。
【０１２７】
エラー割込みモジュール２２２は、状態管理情報１０００に登録されたエントリの中から対象のエントリを一つ選択する。例えば、エラー割込みモジュール２２２は、上のエントリから順に選択する。
【０１２８】
エラー割込みモジュール２２２は、選択されたエントリの状態１００２が「Ｅｒ」であるか否かを判定する。状態１００２が「Ｅｒ」である場合、エラー割込みモジュール２２２は、選択されたエントリのＩＤ１００１に対応する処理Ａ−ｎの処理結果を使用する処理Ｂ−ｎをアボートする処理Ｂ−ｎに決定する。
【０１２９】
エラー割込みモジュール２２２は、状態管理情報１０００に登録された全てのエントリに対して前述した処理を実行する。以上がステップＳ１３０２の処理の説明である。
【０１３０】
次に、エラー割込みモジュール２２２は、ステップＳ９０４の処理を実行し、処理を終了する。
【０１３１】
図１４は、実施例２のエラーフリー検出タスクによって更新された処理管理情報２３０の一例を示す図である。
【０１３２】
ここでは、ＤＲＡＭ２０２に図１０に示す状態管理情報１０００が格納されているものとする。ステップＳ１２０３において経過時間がエラー検出時間Ｔｃより大きいと判定された場合、エラーフリー検出タスクが、ＩＤ１００１が「Ａ−３」、「Ａ−４」、「Ａ−５」、「Ａ−６」である各エントリの状態１００２に「Ｅｒ」を設定する。
【０１３３】
実施例１及び実施例２に示すように、処理Ａのエラー検出処理の実行中に処理Ａの処理結果を使用する処理Ｂを実行させることによって、サーバ装置１００が実行する一連の処理のオーバーヘッドを削減することができる。また、処理Ａのエラーが検出された場合、エラー割込みモジュール２２２が、エラーを含む処理結果を使用する処理Ｂを特定し、特定された処理Ｂをアボートすることによって、処理の整合性を保つことができる。また、ＦＰＧＡを物理的に改変する必要がないためコストを抑えることができる。また、処理Ｂを改変する必要がないため、ミドルウェア／アプリケーション２２０の開発コスト等を抑制することができる。
【０１３４】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
【０１３５】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるＣＰＵが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク、光磁気ディスク、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどが用いられる。
【０１３６】
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、Ｃ／Ｃ＋＋、ｐｅｒｌ、Ｓｈｅｌｌ、ＰＨＰ、Ｊａｖａ（登録商標）等の広範囲のプログラム又はスクリプト言語で実装できる。
【０１３７】
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はＣＤ−ＲＷ、ＣＤ−Ｒ等の記憶媒体に格納し、コンピュータが備えるＣＰＵが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
【０１３８】
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
【符号の説明】
【０１３９】
１００  サーバ装置
１０１  ストレージシステム
２０１  ＣＰＵ
２０２  ＤＲＡＭ
２０３  記憶装置
２０４  ＨＢＡ
２０５  ＦＰＧＡボード
２１０  ＯＳ
２１１  ＦＰＧＡドライバ
２２０  ミドルウェア／アプリケーション
２２１  ＦＰＧＡスケジューラ
２２２  エラー割込みモジュール
２３０  処理管理情報
２４０  ＦＰＧＡ
２４１  ＲＯＭ
２４２  ＤＲＡＭ
２４３  ＰＣＩｅコネクタ
２５０  ユーザ論理
２５１  ＦＦ（フリップフロップ）
２６０  ＣＲＡＭ
２７０  エラー検出回路
２８０  コンフィグファイル
３００  開始時刻情報
４００  結果情報
６００  ＧＵＩ
１０００  状態管理情報
【図１】
2018022328.tif 000004
【図２】
2018022328.tif 000005
【図３】
2018022328.tif 000006
【図４】
2018022328.tif 000007
【図５】
2018022328.tif 000008
【図６】
2018022328.tif 000009
【図７】
2018022328.tif 000010
【図８】
2018022328.tif 000011
【図９】
2018022328.tif 000012
【図１０】
2018022328.tif 000013
【図１１】
2018022328.tif 000014
【図１２】
2018022328.tif 000015
【図１３】
2018022328.tif 000016
【図１４】
2018022328.tif 000017