(57)【要約】【課題】回路情報に基づいて回路構成を変更可能な再構成デバイスを有する情報処理装置にて、再構成デバイスのハードウェア故障を検出した場合、故障ブロックを避けた論理回路の再構成を可能にする情報処理装置を提供する。【解決手段】回路情報に基づいて論理のプログラム可能なブロックを再構成することにより回路構成を変更可能なＦＰＧＡと、タスクを処理する回路のソースコードから回路情報を合成する回路情報合成部と、ＦＰＧＡの故障を検出するＦＰＧＡ回路監視部とを有し、ＦＰＧＡ回路監視部が、ＦＰＧＡのハードウェア故障を検出した場合、故障ブロックを特定し、回路情報合成部が、特定された故障ブロックを避けた回路情報を合成して、故障ブロックを避けた論理回路の再構成を可能にする。【選択図】図２
2018165908.tif 000002
【特許請求の範囲】
【請求項１】
論理のプログラム可能な複数のブロックを有し、回路情報に基づいて前記ブロックを再構成することにより回路構成を変更可能な再構成デバイスと、
タスクを処理する回路のソースコードから前記回路情報を合成する合成部と、
前記再構成デバイスの故障を検出する検出部とを有し、
前記検出部は、前記再構成デバイスのハードウェア故障を検出した場合、前記ハードウェア故障したブロックを特定し、
前記合成部は、特定された前記ハードウェア故障したブロックを避けた前記回路情報を合成することを特徴とする情報処理装置。
【請求項２】
前記再構成デバイスのハードウェア故障が検出された場合、前記合成部は、特定された前記ハードウェア故障したブロックで実行していたタスクを処理する回路の前記回路情報を合成することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記合成部により合成された前記回路情報を記憶する記憶部と、
前記再構成デバイスのハードウェア故障が検出された場合、特定された前記ハードウェア故障したブロックを使用する前記回路情報を前記記憶部から削除する管理部とを有することを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記再構成デバイスで実行するタスクに係る制御を行う制御部を有し、
前記再構成デバイスのハードウェア故障が検出された場合、前記制御部は、特定された前記ハードウェア故障したブロックで実行していたタスクの処理を他の情報処理装置に依頼することを特徴とする請求項１〜３の何れか１項に記載の情報処理装置。
【請求項５】
前記再構成デバイスで実行するタスクに係る制御を行う制御部を有し、
前記再構成デバイスのハードウェア故障が検出された場合、前記制御部は、特定された前記ハードウェア故障したブロックを使用しない前記回路情報を用いて、該ブロックで実行していたタスクの処理を継続させることを特徴とする請求項１〜３の何れか１項に記載の情報処理装置。
【請求項６】
論理のプログラム可能な複数のブロックを有し、回路情報に基づいて前記ブロックを再構成することにより回路構成を変更可能な再構成デバイスを有する情報処理装置の情報処理方法であって、
前記情報処理装置の検出部が、前記再構成デバイスのハードウェア故障を検出した場合、前記ハードウェア故障したブロックを特定し、
前記情報処理装置の合成部が、タスクを処理する回路のソースコードから、特定された前記ハードウェア故障したブロックを避けた前記回路情報を合成することを特徴とする情報処理方法。
【請求項７】
前記情報処理装置は、前記合成部により合成された前記回路情報を記憶する記憶部を有し、
前記再構成デバイスのハードウェア故障が検出された場合、特定された前記ハードウェア故障したブロックを使用する前記回路情報を前記記憶部から削除することを特徴とする請求項６記載の情報処理方法。
【請求項８】
論理のプログラム可能な複数のブロックを有し、回路情報に基づいて前記ブロックを再構成することにより回路構成を変更可能な再構成デバイスを有する情報処理装置のコンピュータに、
前記再構成デバイスの故障の検出を行い、前記再構成デバイスのハードウェア故障を検出した場合、前記ハードウェア故障したブロックを特定する処理と、
タスクを処理する回路のソースコードから、特定された前記ハードウェア故障したブロックを避けた前記回路情報を合成する処理とを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
ＣＰＵ（Central Processing Unit）と、回路情報に基づいてプログラム可能な論理回路の構成を変更可能なＦＰＧＡ（Field Programmable Gate Array）とを有し、処理の一部をＦＰＧＡにより実行する情報処理装置（ＦＰＧＡサーバ）がある。ＦＰＧＡで発生する故障には、宇宙線等により回路情報のデータが化けるソフトエラーや、断線や短絡等により回路の書き換えが不能になるハードエラーがある。ソフトエラーが発生した場合には再度同じ回路情報の書き込みを行うことで復帰可能であるが、ハードエラーが発生した場合には故障箇所は物理的に壊れているので恒久的に使用できない。
【０００３】
ＦＰＧＡにおける故障は、一般的に検出可能である。例えば、回路情報が書かれているメモリ（ＣＲＡＭ）の故障はＣＲＣ（Cyclic Redundancy Code）等の誤り検出方式で検出可能であり、回路の故障は動作確認用のテストデータを用いることで検出可能である。また、故障を検出するセルフチェッキング回路を用いることで、セル部分の故障箇所を検出可能なＦＰＧＡが提案されている（例えば、特許文献１参照）。
【０００４】
ＦＰＧＡでは、同じ機能を実現する回路でも、ＦＰＧＡ内での回路を配置する位置が異なると、回路情報は異なる。同じ機能を実現するための複数の回路情報を予め用意しておき、ＦＰＧＡで故障を検出した場合に、故障箇所を含まないで回路を構成する回路情報に切り替えることで、故障箇所を避けて機能を回復する技術が提案されている（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１０−８４２７５号公報
【特許文献２】特開平９−６２５２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
前述のように同じ機能を実現するための複数の回路情報を予め用意する場合には、ハードウェア故障（ハードエラー）の発生を想定する位置の種類だけ回路情報を用意する必要がある。これには、故障箇所を含むわずかな範囲を使用不可とする多量の種類の回路情報を用意するか、あるいは故障箇所を含む粗い範囲を使用不可とする回路情報を用意するか、という何れかの課題がある。多くの種類の回路情報を用意すると、故障箇所として使用不可にする範囲を小さくすることが可能であるが、用意する回路情報を記憶するための記憶容量が大きくなる。一方、用意する回路情報の種類が少ないと、故障箇所として使用不可となる範囲が大きくなり、使用できる回路資源が少なくなる。１つの側面では、本発明の目的は、回路情報に基づいて回路構成を変更可能な再構成デバイスを有する情報処理装置にて、再構成デバイスのハードウェア故障を検出した場合、故障ブロックを避けた論理回路の再構成を可能にする情報処理装置を提供することにある。
【課題を解決するための手段】
【０００７】
情報処理装置の一態様は、論理のプログラム可能な複数のブロックを有し、回路情報に基づいてブロックを再構成することにより回路構成を変更可能な再構成デバイスと、タスクを処理する回路のソースコードから回路情報を合成する合成部と、再構成デバイスの故障を検出する検出部とを有する。検出部は、再構成デバイスのハードウェア故障を検出した場合、ハードウェア故障したブロックを特定し、合成部は、特定されたハードウェア故障したブロックを避けた回路情報を合成する。
【発明の効果】
【０００８】
発明の一態様においては、再構成デバイスのハードウェア故障を検出した場合、ハードウェア故障したブロックを特定して故障ブロックを避けた回路情報を合成し、複数の回路情報を予め用意することなく、故障ブロックを避けた論理回路の再構成が可能となる。
【図面の簡単な説明】
【０００９】
【図１】図１は、本発明の実施形態における情報処理システムの構成例を示す図である。
【図２】図２は、本実施形態における管理サーバ及びＦＰＧＡサーバの機能構成例を示す図である。
【図３】図３は、本実施形態における正常動作時の処理の流れの例を示す図である。
【図４】図４（Ａ）及び図４（Ｂ）は、本実施形態における故障発生時の処理の流れの例を示す図である。
【図５】図５（Ａ）〜図５（Ｆ）は、本実施形態における故障発生時の回路情報に係る処理を説明する図である。
【図６】図６（Ａ）及び図６（Ｂ）は、本実施形態における故障発生時の処理の流れの他の例を示す図である。
【図７】図７は、本実施形態におけるＦＰＧＡサーバの他の機能構成例を示す図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態を図面に基づいて説明する。
図１は、本発明の一実施形態における情報処理システムの構成例を示す図である。本実施形態における情報処理システムは、ネットワーク３０を介して通信可能な管理サーバ１０と複数のＦＰＧＡサーバ２０とを有する。
【００１１】
管理サーバ１０は、ＣＰＵ（Central Processing Unit）１１及び記憶部１２を有する。ＣＰＵ１１が、記憶部１２からプログラムを読み出して実行することで、管理サーバ１０の各機能が実現される。記憶部１２は、ＣＰＵ１１が実行するプログラムを含む各種データ等を記憶する。
【００１２】
管理サーバ１０は、図示しないクライアントサーバからタスク処理の依頼を受けて各ＦＰＧＡサーバ２０にタスクを割り振るとともに、ＦＰＧＡサーバ２０からタスクの実行結果を受けてクライアントサーバに返す。なお、タスクの実行結果は、ＦＰＧＡサーバ２０からクライアントサーバに直接返すようにしてもよい。
【００１３】
また、管理サーバ１０は、タスクを処理する回路のソースコードから回路情報を合成してＦＰＧＡサーバ２０に提供する。ここで、管理サーバ１０は、故障ブロックを避けた新たな回路情報の再合成の依頼をＦＰＧＡサーバ２０から受けた場合、故障ブロックを避けて論理回路を配置する回路情報を合成してＦＰＧＡサーバ２０に提供する。
【００１４】
ＦＰＧＡサーバ２０は、ＣＰＵ２１、記憶部２２、及びＦＰＧＡ（Field Programmable Gate Array）２３を有する。ＣＰＵ２１が、記憶部２２からプログラムを読み出して実行することで、ＦＰＧＡサーバ２０の各機能が実現され、例えばＦＰＧＡ２３に係る制御を行う。記憶部２２は、ＣＰＵ２１が実行するプログラムやＦＰＧＡ２３に書き込む回路情報を含む各種データ等を記憶する。
【００１５】
再構成デバイスとしてのＦＰＧＡ２３は、論理のプログラム可能な複数のブロックを有し、動作中の論理回路の動作を停止させずに、プログラム可能なブロックの回路構成を部分的に再構成することにより変更することができる動的部分再構成が可能なＦＰＧＡである。すなわち、ＦＰＧＡ２３は、動的部分再構成により論理回路の構成が変更可能である。ＦＰＧＡ２３は、他の実行中のタスクを止めずに、空いているブロックに新たに実行するタスクを処理する回路を動的部分再構成により配置することで、１つのＦＰＧＡで複数のタスクを非同期に実行可能である。
【００１６】
ＦＰＧＡサーバ２０は、管理サーバ１０からタスク処理を実行可能か否かの問い合わせを受けると、問い合わせに対する応答を管理サーバ１０に返す。また、ＦＰＧＡサーバ２０は、管理サーバ１０からタスクの実行が依頼された場合、そのタスクを処理する回路の回路情報をＦＰＧＡ２３に書き込んでタスクを実行し、実行結果を管理サーバ１０に返す。なお、タスクの実行結果は、タスク処理を依頼したクライアントサーバに直接返すようにしてもよい。
【００１７】
また、ＦＰＧＡサーバ２０は、ＦＰＧＡ２３におけるハードエラー（ハードウェア故障）を検出する機能を有する。ＦＰＧＡサーバ２０は、ＦＰＧＡ２３のハードエラーを検出した場合、故障ブロックを特定して、特定された故障ブロックを使用する回路情報を破棄するとともに、故障ブロックを避けた新たな回路情報の再合成を管理サーバ１０に依頼する。管理サーバ１０での再合成が完了した後、管理サーバ１０がＦＰＧＡサーバ２０に再合成した回路情報を提供することで、ＦＰＧＡサーバ２０がタスクを実行可能なように復帰される。
【００１８】
図２は、本実施形態における管理サーバ及びＦＰＧＡサーバの機能構成例を示すブロック図である。図２においては、１つのＦＰＧＡサーバだけを図示している。管理サーバ２１０は、タスク制御部２１１、回路ソース記憶部２１２、及び回路情報合成部２１３を有する。タスク制御部２１１は制御部の一例であり、回路情報合成部２１３は合成部の一例である。タスク制御部２１１及び回路情報合成部２１３は、例えば管理サーバのＣＰＵ１１が記憶部１２からプログラムを読み出して実行することで実現され、回路ソース記憶部２１２は、例えば管理サーバの記憶部１２により実現される。
【００１９】
タスク制御部２１１は、クライアントサーバからタスク処理の依頼を受け、依頼されたタスク処理を実行可能か否かの問い合わせを各ＦＰＧＡサーバ２２０に対して行う。タスク制御部２１１は、問い合わせに対するＦＰＧＡサーバ２２０からの応答に基づいて、タスクを割り当てるＦＰＧＡサーバ２２０を決定し、そのＦＰＧＡサーバ２２０にタスクの実行依頼を送る。また、タスク制御部２１１は、ＦＰＧＡサーバ２２０からタスクの実行結果を受け、タスク処理を依頼したクライアントサーバに返す。
【００２０】
回路ソース記憶部２１２は、各タスクを処理する論理回路のソースコード（例えばＨＤＬ：Hardware Description Language記述された回路構成）を記憶する。回路情報合成部２１３は、回路ソース記憶部２１２に記憶された論理回路のソースコードから、その論理回路をＦＰＧＡに構成するための回路情報を合成してＦＰＧＡサーバ２２０に提供する。また、回路情報合成部２１３は、故障ブロックを避けた新たな回路情報の再合成の依頼をＦＰＧＡサーバ２２０から受けた場合、回路ソース記憶部２１２に記憶されたソースコードを基に、故障ブロックを避けて論理回路を構成する回路情報を再合成してＦＰＧＡサーバ２２０に提供する。
【００２１】
ＦＰＧＡサーバ２２０は、タスク管理部２２１、回路情報管理部２２２、回路情報記憶部２２３、回路情報書き込み部２２４、ＦＰＧＡ回路部２２５、実行結果記憶部２２６、及びＦＰＧＡ回路監視部２２７を有する。タスク管理部２２１は制御部の一例であり、回路情報管理部２２２は管理部の一例であり、回路情報記憶部２２３は記憶部の一例であり、ＦＰＧＡ回路部２２５は再構成デバイスの一例であり、ＦＰＧＡ回路監視部２２７は検出部の一例である。タスク管理部２２１、回路情報管理部２２２、回路情報書き込み部２２４、及びＦＰＧＡ回路監視部２２７は、例えばＦＰＧＡサーバのＣＰＵ２１が記憶部２２からプログラムを読み出して実行することで実現される。また、回路情報記憶部２２３及び実行結果記憶部２２６は例えばＦＰＧＡサーバの記憶部２２により実現され、ＦＰＧＡ回路部２２５は例えばＦＰＧＡサーバのＦＰＧＡ２３により実現される。
【００２２】
タスク管理部２２１は、管理サーバ２１０からタスク処理を実行可能か否かの問い合わせを受け、タスク処理を実行可能であるかを判断して管理サーバ２１０に実行可否を応答する。タスク管理部２２１は、依頼されるタスクを処理する論理回路の回路情報を有しているか、その回路情報を書き込める空きブロックがＦＰＧＡ回路部２２５にあるか、及びその回路情報を書き込める空きブロックがない場合、何のタスクを実行しているか等に基づいて、タスク処理を実行可能か否かを判断する。
【００２３】
また、タスク管理部２２１は、管理サーバ２１０からタスクの実行依頼を受けた場合、そのタスクを処理する論理回路の回路情報を回路情報書き込み部２２４によりＦＰＧＡ回路部２２５に書き込んでタスクを実行させる制御を行う。タスク管理部２２１は、実行結果記憶部２２６に記憶されるタスクの実行結果を管理サーバ２１０に返す。
【００２４】
回路情報管理部２２２は、ＦＰＧＡサーバ２２０における回路情報に係る管理を行う。回路情報管理部２２２は、ソースコードを基に合成され管理サーバ２１０から提供される回路情報を回路情報記憶部２２３に記憶する。回路情報管理部２２２は、ＦＰＧＡ回路監視部２２７による監視結果が通知される。ＦＰＧＡ回路監視部２２７によりＦＰＧＡ回路部２２５でハードエラーが検出されて故障ブロックが通知されると、回路情報管理部２２２は、回路情報記憶部２２３に記憶している回路情報の内から、その故障ブロックを使用する回路情報を削除する。また、回路情報管理部２２２は、故障ブロックを避けた新たな回路情報の再合成を管理サーバ２１０に依頼する。
【００２５】
回路情報記憶部２２３は、タスクを処理する論理回路の回路情報、及びそのタスクの動作確認用データを記憶する。回路情報書き込み部２２４は、実行依頼されたタスクを処理する論理回路の回路情報を回路情報記憶部２２３から読み出してＦＰＧＡ回路部２２５に書き込む。ＦＰＧＡ回路部２２５は、論理のプログラム可能な複数のブロックを有しており、書き込まれた回路情報に応じてプログラム可能なブロックの回路構成を変更し、実行依頼されたタスクを実行する。実行結果記憶部２２６は、ＦＰＧＡ回路部２２５で実行されるタスクの実行結果を記憶する。
【００２６】
ＦＰＧＡ回路監視部２２７は、ＦＰＧＡ回路部２２５の状態を監視して、監視結果をタスク管理部２２１及び回路情報管理部２２２に通知する。ＦＰＧＡ回路監視部２２７は、書き込まれている回路情報のＣＲＣ等による誤り検出を行ったり、ＦＰＧＡ回路部２２５の出力を検出したりするなどして、ＦＰＧＡ回路部２２５が正常に動作しているか否かを定期的に検査する。ＦＰＧＡ回路監視部２２７は、ＦＰＧＡ回路部２２５で回路故障が発生した場合、その故障がソフトエラーであるかハードエラーであるかを判定して通知するとともに、ハードエラーであれば故障ブロックを特定して通知する。
【００２７】
次に、動作について説明する。正常動作時の処理について図３を参照して説明し、故障発生時の処理について図４（Ａ）及び図４（Ｂ）を参照して説明する。
【００２８】
図３は、本実施形態における正常動作時の処理の流れの例を示す図である。
管理サーバ２１０のタスク制御部２１１は、クライアントサーバからタスク処理の実行依頼を受けると（３０１）、実行依頼されたタスク処理の実行可否を各ＦＰＧＡサーバ２２０に問い合わせる（３０２）。管理サーバ２１０からの問い合わせを受けたＦＰＧＡサーバ２２０のタスク管理部２２１は、タスク処理を実行可能であるか否かを判断して管理サーバ２１０に実行可否を回答する（３０３）。管理サーバ２１０のタスク制御部２１１は、各ＦＰＧＡサーバ２２０からの回答に基づいて、タスクを割り当てるＦＰＧＡサーバ２２０を決定し、そのＦＰＧＡサーバ２２０にタスクの実行依頼を送る（３０４）。
【００２９】
ＦＰＧＡサーバ２２０のタスク管理部２２１は、管理サーバ２１０からタスクの実行依頼を受けると、そのタスクをＦＰＧＡ回路部２２５で実行させるための制御を行う。例えば、実行依頼されたタスクを処理する論理回路の回路情報がＦＰＧＡ回路部２２５に書き込まれていないときには、その回路情報を回路情報記憶部２２３から読み出して回路情報書き込み部２２４によりＦＰＧＡ回路部２２５に書き込ませる。そして、ＦＰＧＡ回路部２２５への回路情報の書き込みが終了したら、そのタスクの動作確認用データを用いて正しく回路が動作することをＦＰＧＡ回路監視部２２７により確認させる。
【００３０】
正しく回路が動作することが確認できたら、ＦＰＧＡサーバ２２０のＦＰＧＡ回路部２２５は、実行依頼されたタスクを実行し、実行結果を実行結果記憶部２２６に記憶する。ＦＰＧＡサーバ２２０のタスク管理部２２１は、実行結果記憶部２２６から実行結果を適宜取得して、管理サーバ２１０に送る（３０５、３０６、３０７）。ここで、ＦＰＧＡサーバ２２０のＦＰＧＡ回路監視部２２７は、タスクの実行中、ＦＰＧＡ回路部２２５が正常動作していることを定期的にチェックしている。なお、ＦＰＧＡ回路部２２５が正常動作していることが確認できたときには、タスクが中断したとき等のリカバリポイントとしてタスク処理の中間データを記憶部等に記憶しておくようにしてもよい。
【００３１】
そして、実行依頼されたタスクの実行が完了すると、ＦＰＧＡサーバ２２０のタスク管理部２２１は、タスクの実行完了を管理サーバ２１０に通知する（３０８）。管理サーバ２１０のタスク制御部２１１は、ＦＰＧＡサーバ２２０からタスクの実行完了通知を受けると、タスクの実行結果をクライアントサーバに返して（３０９）、処理を終了する。
【００３２】
図４（Ａ）及び図４（Ｂ）は、本実施形態における故障発生時の処理の流れの例を示す図である。図４（Ａ）には、回路故障がソフトエラーである場合を示し、図４（Ｂ）には回路故障がハードエラーである場合を示している。
【００３３】
図４（Ａ）及び図４（Ｂ）に示すように、管理サーバ２１０のタスク制御部２１１は、クライアントサーバからタスク処理の実行依頼を受けると（４０１）、実行依頼されたタスク処理の実行可否を各ＦＰＧＡサーバ２２０に問い合わせる（４０２）。管理サーバ２１０からの問い合わせを受けたＦＰＧＡサーバ２２０のタスク管理部２２１は、タスク処理を実行可能であるか否かを判断して管理サーバ２１０に実行可否を回答する（４０３）。管理サーバ２１０のタスク制御部２１１は、各ＦＰＧＡサーバ２２０からの回答に基づいて、タスクを割り当てるＦＰＧＡサーバ２２０を決定し、そのＦＰＧＡサーバ２２０にタスクの実行依頼を送る（４０４）。
【００３４】
ＦＰＧＡサーバ２２０のタスク管理部２２１は、管理サーバ２１０からタスクの実行依頼を受けると、そのタスクをＦＰＧＡ回路部２２５で実行させるための制御を行う。例えば、実行依頼されたタスクを処理する論理回路の回路情報がＦＰＧＡ回路部２２５に書き込まれていないときには、その回路情報を回路情報記憶部２２３から読み出して回路情報書き込み部２２４によりＦＰＧＡ回路部２２５に書き込ませる。そして、ＦＰＧＡ回路部２２５への回路情報の書き込みが終了したら、そのタスクの動作確認用データを用いて正しく回路が動作することをＦＰＧＡ回路監視部２２７により確認させる。
【００３５】
正しく回路が動作することが確認できたら、ＦＰＧＡサーバ２２０のＦＰＧＡ回路部２２５は、実行依頼されたタスクを実行し、実行結果を実行結果記憶部２２６に記憶する。ここで、ＦＰＧＡサーバ２２０のＦＰＧＡ回路監視部２２７は、タスクの実行中、ＦＰＧＡ回路部２２５が正常動作していることを定期的にチェックしている。なお、ＦＰＧＡ回路部２２５が正常動作していることが確認できたときには、タスクが中断したとき等のリカバリポイントとしてタスク処理の中間データを記憶部等に記憶しておくようにしてもよい。
【００３６】
この例では、ＦＰＧＡサーバ２２０において、ＦＰＧＡ回路監視部２２７によりＦＰＧＡ回路部２２５の正常動作が確認され（４０５）、ＦＰＧＡサーバ２２０のタスク管理部２２１が、実行結果記憶部２２６から実行結果を取得して、管理サーバ２１０に送る（４０６）。その後、タスクの実行中に、ＦＰＧＡサーバ２２０のＦＰＧＡ回路監視部２２７によりＦＰＧＡ回路部２２５での回路故障が発見されてタスク管理部２２１に通知され（４０７）、タスク管理部２２１はタスクの実行失敗を管理サーバ２１０に通知する（４０８）。
【００３７】
管理サーバ２１０のタスク制御部２１１は、タスクの実行失敗の通知を受けると、タスクを実行していたＦＰＧＡサーバ２２０に対して正常動作時の中間データの取得を要求し、正常動作時の実行結果である中間データを取得する（４０９）。そして、管理サーバ２１０のタスク制御部２１１は、取得した中間データを提供するなどして、回路故障により実行不能となったタスクの実行を他のＦＰＧＡサーバに依頼し、タスクの実行を継続させる（４１０）。他のＦＰＧＡサーバによるタスクの実行が完了すると、管理サーバ２１０は、タスクの実行結果をクライアントサーバに返す（４１１）。
【００３８】
また、回路故障が発見されたＦＰＧＡサーバ２２０では、ＦＰＧＡ回路部２２５内の回路故障が発見された回路を書き込んだブロックにチェッキング回路（診断回路）を書き込んで動作させ、ＦＰＧＡ回路監視部２２７による故障ブロックの特定を行う。なお、チェッキング回路は、ハードエラーが発生したときに、故障したブロックが特定可能な回路である。チェッキング回路としては、例えばあるデータパターンを入力したときに出力されるデータパターンを検出することで故障箇所を示す情報が得られるような回路が適用可能である。
【００３９】
回路故障が発見された回路を書き込んだブロックにチェッキング回路を書き込んで動作させた結果、チェッキング回路で正常動作が確認された（ブロックの故障を示さない）場合、図４（Ａ）に示すように、ＦＰＧＡ回路監視部２２７は、回路故障がソフトエラーであると判定する。この場合には、回路故障が発見されたＦＰＧＡサーバ２２０は、元の回路情報をＦＰＧＡ回路部２２５に再び書き込むソフトエラー対策により復帰させることが可能である。
【００４０】
また、回路故障が発見された回路を書き込んだブロックにチェッキング回路を書き込んで動作させた結果、故障ブロックが特定された場合、図４（Ｂ）に示すように、ＦＰＧＡ回路監視部２２７は、回路故障がハードエラーであると判定する（４２１、４２２、４２３）。この場合には、ＦＰＧＡ回路監視部２２７は、発見された回路故障がハードエラーであることと特定された故障ブロックを回路情報管理部２２２に通知する。
【００４１】
回路故障がハードエラーであることを通知された回路情報管理部２２２は、回路情報記憶部２２３に記憶している回路情報の内から、特定された故障ブロックを使用する回路情報を探して削除する。また、回路情報管理部２２２は、管理サーバ２１０に対して、実行していたタスクと故障ブロックを通知し、故障ブロックを避けた（故障ブロックを使用しない）新たな回路情報の合成を管理サーバ２１０に依頼する（４２４）。
【００４２】
故障ブロックを避けた新たな回路情報の合成の依頼を受けた管理サーバ２１０では、回路情報合成部２１３が、通知されたタスクと故障ブロックに基づいて、故障ブロックを避けた回路情報を再合成する（４２５）。管理サーバ２１０の回路情報合成部２１３は、故障ブロックを避けた回路情報を再合成が完了すると、再合成した回路情報をＦＰＧＡサーバ２２０に送付する（４２６）。そして、再合成された回路情報は、ＦＰＧＡサーバ２２０の回路情報記憶部２２３に記憶される。これにより、ＦＰＧＡサーバ２２０は、回路故障により実行不能となったタスクを、別のブロックを用いて実行することが可能になる。
【００４３】
次に、本実施形態における故障発生時（ハードエラー発生時）の回路情報に係る処理を説明する。図５（Ａ）〜図５（Ｆ）は、本実施形態における故障発生時の回路情報に係る処理を説明する図である。図５（Ａ）に示すように、ＦＰＧＡサーバ２２０の回路情報記憶部２２３には、タスクＡを処理する論理回路の回路情報５２１、タスクＢを処理する論理回路の回路情報５２２、及びタスクＣを処理する論理回路の回路情報５２３、５２４が記憶されているものとする。
【００４４】
まず、図５（Ａ）に示すようにＦＰＧＡサーバ２２０のＦＰＧＡ回路部２２５にタスクＣを処理する論理回路の回路情報５２４が書き込まれて、ＦＰＧＡ回路部２２５は、回路５１１によりタスクＣを実行しているものとする。管理サーバ２１０からＦＰＧＡサーバ２２０にタスクＡの実行が依頼されると、図５（Ｂ）に示すように、ＦＰＧＡ回路部２２５にタスクＡを処理する論理回路の回路情報５２１が書き込まれて、ＦＰＧＡ回路部２２５は、回路５１２によるタスクＡの実行を開始する。
【００４５】
ＦＰＧＡ回路部２２５が、回路５１１によりタスクＣを実行し、回路５１２によりタスクＡを実行しているとき、図５（Ｃ）に示すようにタスクＡを実行する回路５１２内のブロックでハードエラーが検出されたとする。このとき、ＦＰＧＡサーバ２２０の回路情報管理部２２２は、回路情報記憶部２２３に記憶されている回路情報５２１〜５２４の内でハードエラーが検出された故障ブロックを使用している回路情報を検索する。この例では、タスクＡを処理する論理回路の回路情報５２１及びタスクＣを処理する論理回路の回路情報５２３が、ハードエラーが検出された故障ブロックを使用している回路情報となる。
【００４６】
そして、図５（Ｄ）に示すように、回路情報管理部２２２は、回路情報記憶部２２３から回路情報５２１、５２３を削除するとともに、ＦＰＧＡ回路部２２５に書き込まれていたタスクＡを処理する論理回路の回路情報５２１が消去される。また、回路情報管理部２２２は、タスクＡを処理する論理回路について故障ブロックを使用しない新たな回路情報の合成を管理サーバ２１０の回路情報合成部２１３に依頼する。これにより、図５（Ｅ）に示すように、回路情報記憶部２２３にタスクＡを処理する論理回路の回路情報５２５が新たに記憶される。したがって、図５（Ｆ）に示すように、ＦＰＧＡ回路部２２５にタスクＡを処理する論理回路の回路情報５２５を書き込むことで、ＦＰＧＡ回路部２２５は、回路５１３によるタスクＡの実行が可能となる。
【００４７】
このようにＦＰＧＡサーバ２２０は、ＦＰＧＡ回路部２２５のハードエラー（ハードウェア故障）を検出した場合、故障ブロックを特定して、特定された故障ブロックを使用する回路情報を回路情報記憶部２２３から削除する。また、管理サーバ２１０は、ＦＰＧＡサーバ２２０からの依頼に応じて、特定された故障ブロックを避けた回路情報を再合成してＦＰＧＡサーバ２２０に提供する。これにより、ＦＰＧＡ回路部２２５のハードエラーが検出されても、ハードウェア故障したブロックを特定することで、故障ブロックを使用しない回路については正常動作が可能となる。また、特定された故障ブロックを避けた回路情報を再合成することで、複数の回路情報を予め用意しておかなくとも、故障ブロックを避けた回路の再構成が可能となり、再合成された回路情報を書き込むことで実行不能となったタスクを実行することができる。
【００４８】
なお、前述した例では、タスクの実行中に回路故障が発見された場合、タスクの継続実行を試みずに、他のＦＰＧＡサーバにタスクの継続実行を依頼するようにしているが、以下に説明するようにソフトエラーである場合にはタスクを継続実行させるようにしてもよい。図６（Ａ）及び図６（Ｂ）は、本実施形態における故障発生時の処理の流れの他の例を示す図である。図６（Ａ）には、回路故障がソフトエラーである場合を示し、図６（Ｂ）には回路故障がハードエラーである場合を示している。
【００４９】
図６（Ａ）及び図６（Ｂ）において、処理６０１〜６０７は、図４（Ａ）及び図４（Ｂ）に示した処理４０１〜４０７と同様であるので説明は省略する。
ＦＰＧＡ回路部２２５での回路故障がタスク管理部２２１に通知されると、ＦＰＧＡサーバ２２０では、ＦＰＧＡ回路部２２５内の回路故障が発見された回路を書き込んだブロックにチェッキング回路（診断回路）を書き込んで動作させ、ＦＰＧＡ回路監視部２２７による故障ブロックの特定を行う。
【００５０】
チェッキング回路を書き込んで動作させた結果、チェッキング回路で正常動作が確認された（ブロックの故障を示さない）場合、図６（Ａ）に示すように、ＦＰＧＡ回路監視部２２７は、回路故障がソフトエラーであると判定する。この場合には、ＦＰＧＡサーバ２２０では、元の回路情報をＦＰＧＡ回路部２２５に再び書き込むソフトエラー対策により実行依頼されたタスクを実行する論理回路を復帰させる（６０８）。
【００５１】
その後、前回の正常動作時の続きから（例えば、正常動作時の中間データを記憶したリカバリポイントから）タスクを継続実行する（６０９）。そして、ＦＰＧＡ回路監視部２２７がＦＰＧＡ回路部２２５の正常動作を適宜確認し（６１０）、タスク管理部２２１が、実行結果記憶部２２６から実行結果を取得して管理サーバ２１０に送る（６１１）。タスクの実行が完了すると、管理サーバ２１０は、タスクの実行結果をクライアントサーバに返す（６１２）。このように制御することで、回路故障がソフトエラーであった場合には、他のＦＰＧＡサーバに依頼せずに、タスクの処理を継続して実行することができる。
【００５２】
また、チェッキング回路を書き込んで動作させた結果、チェッキング回路で正常動作が確認できない場合、図６（Ｂ）に示すように、ＦＰＧＡ回路監視部２２７は、回路故障がハードエラーであると判定する（６２１、６２２）。この場合には、ＦＰＧＡ回路監視部２２７により回路故障がハードエラーであることがタスク管理部２２１及び回路情報管理部２２２に通知され、タスク管理部２２１はタスクの実行失敗を管理サーバ２１０に通知する（６２３）。
【００５３】
管理サーバ２１０のタスク制御部２１１は、タスクの実行失敗の通知を受けると、タスクを実行していたＦＰＧＡサーバ２２０に対して正常動作時の中間データの取得を要求し、正常動作時の実行結果である中間データを取得する（６２４）。そして、管理サーバ２１０のタスク制御部２１１は、取得した中間データを提供するなどして、実行不能になったタスクの実行を他のＦＰＧＡサーバに依頼し、タスクの実行を継続させる（６２５）。他のＦＰＧＡサーバによるタスクの実行が完了すると、管理サーバ２１０は、タスクの実行結果をクライアントサーバに返す（６２６）。
【００５４】
また、ハードエラーが発見されたＦＰＧＡサーバ２２０では、ＦＰＧＡ回路部２２５内に書き込んだチェッキング回路を用いて故障ブロックの特定を行う（６２７）。そして、故障ブロックが特定されると、ＦＰＧＡ回路監視部２２７は、特定された故障ブロックを回路情報管理部２２２に通知する。回路情報管理部２２２は、回路情報記憶部２２３に記憶している回路情報の内から、特定された故障ブロックを使用する回路情報を探して削除する。また、回路情報管理部２２２は、管理サーバ２１０に対して、実行していたタスクと故障ブロックを通知し、故障ブロックを避けた新たな回路情報の合成を管理サーバ２１０に依頼する（６２８）。
【００５５】
故障ブロックを避けた新たな回路情報の合成の依頼を受けた管理サーバ２１０では、回路情報合成部２１３が、通知されたタスクと故障ブロックに基づいて、故障ブロックを避けた回路情報を再合成する（６２９）。管理サーバ２１０の回路情報合成部２１３は、故障ブロックを避けた回路情報を再合成が完了すると、再合成した回路情報をＦＰＧＡサーバ２２０に送付する（６３０）。そして、再合成された回路情報は、ＦＰＧＡサーバ２２０の回路情報記憶部２２３に記憶される。これにより、ＦＰＧＡサーバ２２０は、回路故障により実行不能となったタスクを、別のブロックを用いて実行することが可能になる。
【００５６】
また、前述した例では、図４（Ｂ）及び図６（Ｂ）に示した処理では、実行不能になったタスクの処理を他のＦＰＧＡサーバに依頼するようにしているが、回路故障が発生したＦＰＧＡサーバにおいて、故障ブロックを使用しない回路情報をＦＰＧＡ回路部２２５に書き込んで実行不能になったタスクの処理を継続実行するようにしてもよい。例えば、他のＦＰＧＡサーバで回路資源（リソース）が空いていないために、実行不能になったタスクの処理を他のＦＰＧＡサーバに依頼できない場合に、回路故障が発生したＦＰＧＡサーバにおいて、故障ブロックを使用しない回路情報をＦＰＧＡ回路部２２５に書き込んで実行不能になったタスクの処理を継続実行するようにしてもよい。
【００５７】
また、前述した例では、管理サーバを設けて、クライアントサーバから依頼されるタスクの割り振りや、タスクを処理する回路の回路情報の合成を行うようにしているが、管理サーバを設けずに、図７に示すように、ＦＰＧＡサーバにタスクを処理する回路の回路情報を合成する機能を備えさせることでも前述した実施形態と同様の動作が実現可能である。図７は、本実施形態におけるＦＰＧＡサーバの他の機能構成例を示す図である。
【００５８】
ＦＰＧＡサーバ７１０は、タスク管理部７１１、回路ソース記憶部７１２、回路情報合成部７１３、回路情報管理部７１４、回路情報記憶部７１５、回路情報書き込み部７１６、ＦＰＧＡ回路部７１７、実行結果記憶部７１８、及びＦＰＧＡ回路監視部７１９を有する。タスク管理部７１１は制御部の一例であり、回路情報合成部７１３は合成部の一例であり、回路情報管理部７１４は管理部の一例であり、回路情報記憶部７１５は記憶部の一例であり、ＦＰＧＡ回路部７１７は再構成デバイスの一例であり、ＦＰＧＡ回路監視部７１９は検出部の一例である。
【００５９】
タスク管理部７１１、回路情報合成部７１３、回路情報管理部７１４、回路情報書き込み部７１６、及びＦＰＧＡ回路監視部７１９は、例えばＦＰＧＡサーバのＣＰＵ２１が記憶部２２からプログラムを読み出して実行することで実現される。また、回路ソース記憶部７１２、回路情報記憶部７１５、及び実行結果記憶部７１８は例えばＦＰＧＡサーバの記憶部２２により実現され、ＦＰＧＡ回路部７１７は例えばＦＰＧＡサーバのＦＰＧＡ２３により実現される。
【００６０】
タスク管理部７１１は、クライアントサーバからタスク処理の実行依頼を受け、そのタスクを処理する論理回路の回路情報を回路情報書き込み部７１６によりＦＰＧＡ回路部７１７に書き込んでタスクを実行させる制御を行う。また、タスク管理部７１１は、実行結果記憶部７１８に記憶されるタスクの実行結果をクライアントサーバに返す。
【００６１】
回路ソース記憶部７１２は、各タスクを処理する論理回路のソースコードを記憶する。回路情報合成部７１３は、回路ソース記憶部７１２に記憶された論理回路のソースコードから回路情報を合成して回路情報管理部７１４に提供する。また、回路情報合成部７１３は、故障ブロックを避けた新たな回路情報の再合成の依頼を回路情報管理部７１４から受けた場合、故障ブロックを避けて論理回路を構成する回路情報を回路ソース記憶部７１２に記憶されたソースコードを基に再合成して回路情報管理部７１４に提供する。
【００６２】
回路情報管理部７１４は、回路情報合成部７１３から提供される回路情報を回路情報記憶部７１５に記憶する。回路情報管理部７１４は、ＦＰＧＡ回路監視部７１９によりＦＰＧＡ回路部７１７でハードエラーが検出されて故障ブロックが通知されると、回路情報記憶部７１５に記憶している回路情報の内から、その故障ブロックを使用する回路情報を削除する。また、回路情報管理部７１４は、故障ブロックを避けた新たな回路情報の再合成を回路情報合成部７１３に依頼する。
【００６３】
回路情報記憶部７１５、回路情報書き込み部７１６、ＦＰＧＡ回路部７１７、実行結果記憶部７１８、及びＦＰＧＡ回路監視部７１９のそれぞれは、図２に示した回路情報記憶部２２３、回路情報書き込み部２２４、ＦＰＧＡ回路部２２５、実行結果記憶部２２６、及びＦＰＧＡ回路監視部２２７と同様であるので説明は省略する。
【００６４】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
前述した実施形態に関し、さらに以下の付記を開示する。
【００６５】
（付記１）
論理のプログラム可能な複数のブロックを有し、回路情報に基づいて前記ブロックを再構成することにより回路構成を変更可能な再構成デバイスと、
タスクを処理する回路のソースコードから前記回路情報を合成する合成部と、
前記再構成デバイスの故障を検出する検出部とを有し、
前記検出部は、前記再構成デバイスのハードウェア故障を検出した場合、前記ハードウェア故障したブロックを特定し、
前記合成部は、特定された前記ハードウェア故障したブロックを避けた前記回路情報を合成することを特徴とする情報処理装置。
（付記２）
前記再構成デバイスのハードウェア故障が検出された場合、前記合成部は、特定された前記ハードウェア故障したブロックで実行していたタスクを処理する回路の前記回路情報を合成することを特徴とする付記１記載の情報処理装置。
（付記３）
前記合成部により合成された前記回路情報を記憶する記憶部と、
前記再構成デバイスのハードウェア故障が検出された場合、特定された前記ハードウェア故障したブロックを使用する前記回路情報を前記記憶部から削除する管理部とを有することを特徴とする付記１又は２記載の情報処理装置。
（付記４）
前記再構成デバイスで実行するタスクに係る制御を行う制御部を有し、
前記再構成デバイスのハードウェア故障が検出された場合、前記制御部は、特定された前記ハードウェア故障したブロックで実行していたタスクの処理を他の情報処理装置に依頼することを特徴とする付記１〜３の何れか１項に記載の情報処理装置。
（付記５）
前記再構成デバイスで実行するタスクに係る制御を行う制御部を有し、
前記再構成デバイスのハードウェア故障が検出された場合、前記制御部は、特定された前記ハードウェア故障したブロックを使用しない前記回路情報を用いて、該ブロックで実行していたタスクの処理を継続させることを特徴とする付記１〜３の何れか１項に記載の情報処理装置。
（付記６）
タスクを処理する回路のソースコードから回路情報を合成する合成部を有する第１のサーバと、
論理のプログラム可能な複数のブロックを有し前記回路情報に基づいて前記ブロックを再構成することにより回路構成を変更可能な再構成デバイスと、前記再構成デバイスの故障を検出する検出部とを有し、前記第１のサーバと通信可能な第２のサーバとを有し、
前記第２のサーバは、前記検出部が前記再構成デバイスのハードウェア故障を検出した場合、前記検出部により前記ハードウェア故障したブロックを特定して該ブロックを避けた前記回路情報の合成を前記第１のサーバに依頼し、
前記第１のサーバは、前記第２のサーバからの依頼に応じて、特定された前記ハードウェア故障したブロックを避けた前記回路情報を前記合成部により合成して前記第２のサーバに提供することを特徴とする情報処理システム。
（付記７）
前記再構成デバイスのハードウェア故障が検出された場合、前記第１のサーバは、特定された前記ハードウェア故障したブロックで実行していたタスクを処理する回路の前記回路情報を前記合成部により合成して前記第２のサーバに提供することを特徴とする付記６記載の情報処理システム。
（付記８）
前記第２のサーバは、
前記第１のサーバから提供された前記回路情報を記憶する記憶部と、
前記再構成デバイスのハードウェア故障が検出された場合、特定された前記ハードウェア故障したブロックを使用する前記回路情報を前記記憶部から削除する管理部とを有することを特徴とする付記６又は７記載の情報処理システム。
（付記９）
論理のプログラム可能な複数のブロックを有し、回路情報に基づいて前記ブロックを再構成することにより回路構成を変更可能な再構成デバイスを有する情報処理装置の情報処理方法であって、
前記情報処理装置の検出部が、前記再構成デバイスのハードウェア故障を検出した場合、前記ハードウェア故障したブロックを特定し、
前記情報処理装置の合成部が、タスクを処理する回路のソースコードから、特定された前記ハードウェア故障したブロックを避けた前記回路情報を合成することを特徴とする情報処理方法。
（付記１０）
前記情報処理装置は、前記合成部により合成された前記回路情報を記憶する記憶部を有し、
前記再構成デバイスのハードウェア故障が検出された場合、特定された前記ハードウェア故障したブロックを使用する前記回路情報を前記記憶部から削除することを特徴とする付記９記載の情報処理方法。
（付記１１）
論理のプログラム可能な複数のブロックを有し、回路情報に基づいて前記ブロックを再構成することにより回路構成を変更可能な再構成デバイスを有する情報処理装置のコンピュータに、
前記再構成デバイスの故障の検出を行い、前記再構成デバイスのハードウェア故障を検出した場合、前記ハードウェア故障したブロックを特定する処理と、
タスクを処理する回路のソースコードから、特定された前記ハードウェア故障したブロックを避けた前記回路情報を合成する処理とを実行させるためのプログラム。
（付記１２）
論理のプログラム可能な複数のブロックを有し、回路情報に基づいて前記ブロックを再構成することにより回路構成を変更可能な再構成デバイスを有する情報処理装置のコンピュータに、
前記再構成デバイスの故障の検出を行い、前記再構成デバイスのハードウェア故障を検出した場合、前記ハードウェア故障したブロックを特定する処理と、
タスクを処理する回路のソースコードから、特定された前記ハードウェア故障したブロックを避けた前記回路情報を合成する処理とを実行させるためのプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【符号の説明】
【００６６】
１０  管理サーバ
２０  ＦＰＧＡサーバ
１１、２１  ＣＰＵ
１２、２２  記憶部
２３  ＦＰＧＡ（再構成デバイス）
２１０  管理サーバ
２１１  タスク制御部
２１２、７１２  回路ソース記憶部
２１３、７１３  回路情報合成部
２２０、７１０  ＦＰＧＡサーバ
２２１、７１１  タスク管理部
２２２、７１４  回路情報管理部
２２３、７１５  回路情報記憶部
２２４、７１６  回路情報書き込み部
２２５、７１７  ＦＰＧＡ回路部
２２６、７１８  実行結果記憶部
２２７、７１９  ＦＰＧＡ回路監視部
【図１】
2018165908.tif 000003
【図２】
2018165908.tif 000004
【図３】
2018165908.tif 000005
【図４】
2018165908.tif 000006
【図５】
2018165908.tif 000007
【図６】
2018165908.tif 000008
【図７】
2018165908.tif 000009