(57)【特許請求の範囲】
【請求項１】
構成情報を保持する保持手段と、
演算器を有する処理ユニットを複数備え前記構成情報に従った前記演算器の構成及び前記処理ユニット間の接続に基づいて処理を行うデータ処理手段と、
前記データ処理手段の備える前記複数の処理ユニットの各々に対応し、対応する処理ユニットにエラーが発生していることを検出する複数の検出手段と、
前記検出手段によりエラーが発生している処理ユニットが検出されたときに前記データ処理手段が処理していたデータの再読み込みを行うために、次にデータを読み出すアドレスと前記複数の処理ユニットで処理中のデータ数とに基づいて再読み込みを行う記憶手段のアドレスを計算する計算手段と、
前記検出手段の結果に応じて、前記検出手段によりエラーが検出された処理ユニットが処理に使用されないように、前記演算器の構成及び前記処理ユニット間の接続を動的に変更させる構成情報を前記保持手段に設定し、前記処理ユニットによって前記計算手段により計算したアドレスからデータを読み込ませる再構成処理手段と、
を備えることを特徴とするダイナミックリコンフィギャラブルデバイス。
【請求項２】
構成情報を保持する保持手段と、演算器を有する処理ユニットを複数備え前記構成情報に従った前記演算器の構成及び前記処理ユニット間の接続に基づいて処理を行うデータ処理手段と、を備えるダイナミックリコンフィギャラブルデバイスの制御方法であって、
前記データ処理手段の備える前記複数の処理ユニットの各々に対応する複数の検出手段が、前記ダイナミックリコンフィギャラブルデバイス内の前記処理ユニット毎にエラーの発生を検出する検出手順と、
前記検出手順によりエラーが発生している処理ユニットが検出されたときに前記データ処理手段が処理していたデータの再読み込みを行うために、次にデータを読み出すアドレスと前記複数の処理ユニットで処理中のデータ数とに基づいて再読み込みを行う記憶手段のアドレスを計算する計算手順と、
前記検出手順におけるエラー検出に伴い前記エラーが検出された処理ユニットが処理に使用されないように、前記演算器の構成及び前記処理ユニット間の接続を動的に変更させる構成情報を前記保持手段に設定し、前記処理ユニットによって前記計算手順により計算したアドレスからデータを読み込ませる再構成処理手順と、を備えることを特徴とする制御方法。 
【請求項３】
構成情報を保持する保持手段と、演算器を有する処理ユニットを複数備え前記構成情報に従った前記演算器の構成及び前記処理ユニット間の接続に基づいて処理を行うデータ処理手段と、を備えるダイナミックリコンフィギャラブルデバイスの制御方法をコンピュータに実行させるコンピュータ読み取り可能なプログラムであって、
前記データ処理手段の備える前記複数の処理ユニットの各々に対応する複数の検出手段からの信号に基づいて、前記ダイナミックリコンフィギャラブルデバイス内の前記処理ユニット毎にエラーの発生を検出する検出手順と、
前記検出手順によりエラーが発生している処理ユニットが検出されたときに前記データ処理手段が処理していたデータの再読み込みを行うために、次にデータを読み出すアドレスと前記複数の処理ユニットで処理中のデータ数とに基づいて再読み込みを行う記憶手段のアドレスを計算する計算手順と、
前記検出手順におけるエラー検出に伴い前記エラーが検出された処理ユニットが処理に使用されないように、前記演算器の構成及び前記処理ユニット間の接続を動的に変更させる構成情報を前記保持手段に設定し、前記処理ユニットによって前記計算手順により計算したアドレスからデータを読み込ませる再構成処理手順と、
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、実行中に動的再構成可能デバイスの故障が発生した後も処理を継続可能にする場合に好適なダイナミックリコンフィギャラブルデバイス、制御方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、ＬＳＩの設計期間を短縮する技術に対する必要性が高まっている。これに伴い、ＬＳＩ設計期間を短縮する１つの解決策として、動的再構成可能デバイス(ダイナミックリコンフィギャラブルデバイス)が注目されている。動的再構成可能デバイスとは、ＬＳＩ中に演算器(ＡＬＵ)を有する処理ユニット(プロセッシングエレメント)を複数組み込み、処理ユニット内部のＡＬＵ制御及び処理ユニット間の接続を動的(ＬＳＩ稼動中)に切り替え可能としたデバイスである。
【０００３】
他方、回路を再構成可能なデバイスとしては、ＦＰＧＡ(Field Programmable Gate Arrays)のようにトランジスタ間の接続を変更可能なアーキテクチャもある。しかしながら、ＦＰＧＡ自体は、回路を動的に変更するには時間がかかるため、アプリケーションプログラム（以下アプリケーション）の実行中に回路を動的に制御することは難しい。
【０００４】
これに対し、動的再構成可能デバイスは、回路を高速に切り替えることが可能である。その理由は、ＦＰＧＡはゲートレベルで回路の変更を行うのに対して、動的再構成可能デバイスはプロセッシングエレメント（ＰＥ）単位で回路変更を行うためである。これにより、回路の変更に必要な構成情報が少なくて済むことに加えて、構成を変更するための回路が簡単になることで、高速な構成情報の変更が可能となる。
【０００５】
動的再構成可能デバイスは、アプリケーションの実行中に回路を動的に切り替えることにより、同一のＬＳＩで複数のアプリケーションに対応することが可能となる。代表的な動的再構成可能デバイスとしては、ＤＡＰＤＮＡ、ＤＲＰなどがある。どちらも、数百のプロセッシングエレメントを内部に備えることで、高い処理性能を維持している。
【０００６】
上述した動的再構成可能デバイスに関しては各種の技術が提案されている（例えば、特許文献１参照）。
【特許文献１】特開２００４−００５７３９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
通常、ＬＳＩには、ＬＳＩ製造後のアプリケーションの実行中に故障（エラー）が発生した場合に対応するため、エラー原因が何かを特定するためのエラー検出回路が組み込まれている。そのため、ＬＳＩは、アプリケーションの実行中にエラーが発生した場合にエラーを即座に検出することができ、エラー内容に対応したメンテナンスが行われる。発生したエラーが致命的なエラーであった場合はＬＳＩの交換が行われ、発生したエラーが致命的でない場合は性能を落として処理を継続させるなどの措置がとられる。
【０００８】
しかしながら、上記従来の動的再構成可能デバイス自体はエラー検出手段を備えていない。そのため、ＬＳＩ製造後のアプリケーションの実行中に動的再構成可能デバイスでエラーが発生した場合、エラーを即座に検出することができない。これは、ミッションクリティカルなシステム（高度な信頼性や耐障害性が必要な基幹系システム）で利用するには致命的である。更に、動的再構成可能デバイスがエラー検出手段を備えていないことは、致命的でないエラーが発生した場合にもＬＳＩを交換しなければならず、コストが増加するという問題もある。
【０００９】
本発明の目的は、動的再構成可能なデバイスが有する複数のプロセッシングエレメントのいずれかに故障などのエラーが発生した場合であっても、動的に且つ高速に回路を再構成することを可能としたダイナミックリコンフィギャラブルデバイス、制御方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【００１０】
上述の目的を達成するために、本発明のダイナミックリコンフィギャラブルデバイスは、構成情報を保持する保持手段と、演算器を有する処理ユニットを複数備え前記構成情報に従った前記演算器の構成及び前記処理ユニット間の接続に基づいて処理を行うデータ処理手段と、前記データ処理手段の備える前記複数の処理ユニットの各々に対応し、対応する処理ユニットにエラーが発生していることを検出する複数の検出手段と、前記検出手段の結果に応じて、前記検出手段によりエラーが検出された処理ユニットが処理に使用されないように、前記演算器の構成及び前記処理ユニット間の接続を動的に変更させる構成情報を前記保持手段に設定する再構成処理手段と、を備えることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、動的再構成可能なデバイスが有する複数のプロセッシングエレメントのいずれかに故障などのエラーが発生した場合であっても、動的に且つ高速に回路を再構成することができる。特に、簡単な構成によって、プロセッシングエレメントのエラー検出後も処理を継続することが可能となる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施の形態を図面を参照して説明する。
【００１３】
図１は、本発明の実施の形態に係るデバイス故障検出装置としての動的再構成可能デバイス故障検出装置の構成を示すブロック図である。
【００１４】
図１において、動的再構成可能デバイス故障検出装置は、エラー情報保持部１０５、プロセッサ１０７、プロセッシングエレメントマトリックスコア１２０、プロセッシングエレメントマトリックスリセット制御部１２１、外部メモリ１４５を備えている。更に、プロセッシングエレメントマトリックスコア１２０は、ＰＥマトリックス１０１、ロードバッファ１１０、ストアバッファ１１１、入力データ合計値制御部１１２、入力データ値バッファ１１３を備えている。以下の説明ではプロセッシングエレメントを適宜ＰＥと表記する。
【００１５】
動的再構成可能デバイス故障検出装置は、ＬＳＩ製造後のアプリケーションの実行中に動的再構成可能デバイスが故障した場合、構成情報の変更及びエラーが発生した処理の再実行を行うことで、故障が発生した後も処理を継続可能にするものである。
【００１６】
ＰＥマトリックス１０１は、内部に１つ以上の演算器を有する処理ユニット（プロセッシングエレメント）を複数備え、演算器の構成及び処理ユニット間の接続を、後述の構成情報の変更により動的に変更可能な動的再構成可能デバイスである。ＰＥマトリックス１０１は、最小の処理ユニットであるプロセッシングエレメントの２次元アレイ構造を内部に備える。ロードバッファ１１０は、プロセッシングエレメントに外部メモリ１４５から入力される入力データを一時的に保存する。
【００１７】
ストアバッファ１１１は、プロセッシングエレメントから出力されるデータを一時的に保存する。ストアバッファ１１１の出力データは、外部メモリ１４５に送出される。入力データ合計値制御部１１２は、ＰＥマトリックス１０１内で現在使用している入力データ数の合計値を算出する制御を行うものであり、ＰＥマトリックス１０１内で処理中のデータ数の算出に使用する。入力データ値バッファ１１３は、ストアバッファ１１１内のデータが使用した入力データ数を保存する。
【００１８】
エラー情報保持部１０５は、ＰＥマトリックス１０１で発生したエラーを示すエラー情報を保持する。プロセッサ１０７は、構成情報書き換え信号１４４により外部メモリ１４５内の構成情報の書き換えを行い、また、リセット指示信号１４２によりＰＥマトリックスリセット制御部１２１に対しリセット指示を行う。ＰＥマトリックスリセット制御部１２１は、ＰＥマトリックス１０１をリセットする制御を行う。外部メモリ１４５は、入力データ、出力データ、構成情報１０４を記憶する。構成情報１０４は、プロセッシングエレメントのコンフィグレーション情報である。
【００１９】
割り込み信号１４０は、エラー情報保持部１０５にエラー情報がセットされたことをプロセッサ１０７に通知するための信号である。処理停止信号１３９は、エラー情報保持部１０５にエラー情報がセットされた際にＰＥマトリックス１０１を停止するための信号である。リセット信号１４３は、ＰＥマトリックス１０１をリセットするための信号である。前記信号以外の他の信号については後述する。
【００２０】
図９は、ＰＥマトリックス１０１内部の最小構成要素であるプロセッシングエレメントの構成を示すブロック図である。
【００２１】
図９において、ＡＬＵ１０２は、プロセッシングエレメント１５０内に設けられた演算器である。エラー検出回路１０３は、プロセッシングエレメント１５０内に設けられると共にＡＬＵを内蔵しており、該ＡＬＵの演算結果と上記ＡＬＵ１０２の演算結果とを比較することで（ＡＬＵの二重化）、プロセッシングエレメントのエラーの検出を行う。加算器１１４は、プロセッシングエレメントで処理する入力データの数の加算に使用する。入力データ１３０、１３１は、ＡＬＵ１０２に入力されるデータであり、他のプロセッシングエレメントまたはロードバッファ１１０から入力される。
【００２２】
信号１３２、１３３は、プロセッシングエレメントへの入力データ１３０、１３１にそれぞれ対応する入力データ数を示す信号であり、入力データ１３０、１３１が作成される際に元データが幾つ消費されたかを示している。信号１３５は、ＡＬＵ１０２で計算された計算結果を示す信号である。信号１３６は、エラー検出回路１０３でエラー検出された結果を示す信号である。信号１３７は、加算器１１４で加算された入力データ数を示す信号である。
【００２３】
次に、本実施の形態の動的再構成可能デバイス故障検出装置によるエラー検出処理及びエラー制御方法について図１及び図９に基づき説明する。
【００２４】
例えば、ＬＳＩ製造後にプロセッシングエレメント内のＡＬＵ１０２が故障した場合、プロセッシングエレメント内のエラー検出回路１０３は、ＡＬＵ１０２の出力結果とエラー検出回路１０３の出力結果とを比較する。そして、出力結果が異なっていた場合に、エラー検出回路１０３はエラーを検出する。エラー検出回路１０３で検出されたエラー情報は、フリップフロップ１５１を経由してエラー信号１３６として出力される。エラー信号１３６として出力されたエラー情報は、エラー情報保持部１０５にセットされ保持される。尚、エラー情報はプロセッシングエレメント毎に通知される。
【００２５】
エラー情報保持部１０５にエラー情報の値が新たにセットされると、エラー情報保持部１０５は、割り込み信号１４０をアサートし、プロセッサ１０７に対して割り込みを通知する。同時に、エラー情報保持部１０５にエラー情報の値がセットされると、エラー情報保持部１０５は、ＰＥマトリックスコア１２０の処理を停止する処理停止信号１３９をアサートし、ＰＥマトリックスコア１２０での処理を停止させる。
【００２６】
信号１４１は、エラー情報保持部１０５内のエラー情報として出力する信号である。プロセッサ１０７は、割り込み信号１４０を受信した際、信号１４１（エラー情報）をリードすることで、故障したプロセッシングエレメントに関する情報を取得する。割り込みマスク信号１６０は、割り込み信号１４０をマスクするための信号である。プロセッサ１０７は、割り込みマスク信号１６０をアサートすることで、割り込み信号１４０をマスクする。
【００２７】
プロセッサ１０７は、故障したプロセッシングエレメントに関する情報を取得した後、故障したプロセッシングエレメントを使用しないようにするため構成情報１０４を書き換える。また、プロセッサ１０７は、入力データ合計値制御部１１２からＰＥマトリックスコア１２０内で使用されている入力データ数を信号６１２より取得し、入力データを再ロードする際の外部メモリアドレス算出論理（後述）を用いて再ロードアドレスを算出する。その後、プロセッサ１０７は、リセット指示信号１４２をアサートする。
【００２８】
これに伴い、ＰＥマトリックスリセット制御部１２１は、リセット信号１４３をアサートすることで、ＰＥマトリックスコア１２０をリセットする。リセット後、プロセッサ１０７は、信号１９０をアサートすることにより処理停止信号１３９をデアサートすることで、ＰＥマトリックスコア１２０を処理可能にする。更に、プロセッサ１０７は、上記算出した再ロードアドレスから入力データをＰＥマトリックスコア１２０に再ロードする。これにより、ＰＥマトリックスコア１２０における処理が正常に再開される。
【００２９】
図２は、動的再構成可能デバイス故障検出装置のエラー情報保持部１０５の構成を示すブロック図である。
【００３０】
図２において、エラー情報保持部１０５は、複数のフリップフロップ２０２、フリップフロップ２０４、複数のフリップフロップ２１０、フリップフロップ２２１、レジスタ２２２、複数のアンドゲート、複数のオアゲートを備えている。
【００３１】
エラー信号１３６は、ＰＥマトリックス１０１からエラー情報保持部１０５に出力された信号（エラー情報）である。フリップフロップ２０２は、エラー信号１３６（エラー情報）の値を内部にセットする。フリップフロップ２０２は、セットされた値がエラーであった場合、フリップフロップ内に値を保持する。フリップフロップ２０２は、セットされた値がエラーでない場合は、ＰＥマトリックス１０１から出力された次のエラー信号１３６（エラー情報）をセットする。
【００３２】
リセット信号１８０は、ＰＥマトリックスリセット制御部１２１からエラー情報保持部１０５に出力された信号である。リセット信号１８０は、動的再構成可能デバイス故障検出装置の電源投入時にアサートされ、エラー情報保持部１０５内の全フリップフロップをリセットする際に利用される。
【００３３】
割り込みマスク信号１６０は、プロセッサ１０７からエラー情報保持部１０５に出力された信号である。フリップフロップ２１０は、割り込みマスク信号１６０の値をセットする。フリップフロップ２１０は、エラー情報のマスク用のフリップフロップである。フリップフロップ２０２から出力されたエラー情報と、フリップフロップ２１０にセットされたマスク情報との“ＡＮＤ”（論理積）をとることで、エラー情報をマスクする。
【００３４】
信号１４０は、フリップフロップ２１０によりマスクされた後の全エラー情報の“ＯＲ”(論理和)をとった信号であり、エラー情報保持部１０５からプロセッサ１０７に対する割り込み信号１４０として使用される。
【００３５】
信号１９０は、プロセッサ１０７からエラー情報保持部１０５に出力される、ＰＥマトリックスコア１２０の処理を停止する処理停止信号１３９をマスクするための信号である。フリップフロップ２２１は、処理停止信号１３９のマスク用のフリップフロップである。フリップフロップ２２１は、信号１９０の値をセットする。
【００３６】
レジスタ２２２は、処理停止信号１３９を出力する。レジスタ２２２は、エラー情報保持部１０５内の全エラー情報の“ＯＲ”（論理和）をとった値（信号）と、フリップフロップ２２１にセットされた値との“ＡＮＤ”（論理積）をとった値（信号）をセットする。レジスタ２２２は、内部にエラー情報がセットされると、フリップフロップ２２１の値によりエラー情報がクリアされるまで処理停止信号１３９をアサートし続ける。
【００３７】
処理停止信号１３９は、ＰＥマトリックスコア１２０の処理を停止する信号として使用される。信号１４１は、フリップフロップ２０２から出力された信号（エラーＰＥ情報）である。プロセッサ１０７は、信号１４１（エラーＰＥ情報）に基づき、故障したプロセッシングエレメントの判定を行う。
【００３８】
次に、本実施の形態における入力データの再ロード時のアドレスの算出方法について説明する。
【００３９】
本実施の形態では、プロセッシングエレメントでエラーが発生した場合、一旦、エラー情報保持部１０５によりＰＥマトリックスコア１２０の処理を停止し、ＰＥマトリックスリセット制御部１２１によりＰＥマトリックスコア１２０内の全データを無効化する。更に、エラーが発生したプロセッシングエレメントを使用しないようにするためプロセッサ１０７により構成情報を変更した後、無効化したデータに相当する入力データを外部メモリ１４５から再ロードしてＰＥマトリックスコア１２０の処理を再実行する。これにより、ＰＥマトリックスコア１２０の処理を継続する方式を採用する。
【００４０】
そこで、上記方式を実現するため、外部メモリ１４５からＰＥマトリックスコア１２０に再ロードする入力データのアドレスの計算を行う必要がある。再ロードするアドレスは、正常に処理を継続していた場合に次にデータを読み出すアドレスから、ＰＥマトリックス１０１内で使用中の入力データ数を差し引いたアドレスとなる。再ロード時のアドレスの計算式を次に示す。
【００４１】
再ロード時のアドレス＝次にデータを読み出すアドレス
−ＰＥマトリックス内で処理中の入力データ数
ここで、ＰＥマトリックス１０１内で処理中の入力データ数とは、ＰＥマトリックスコア１２０内で処理中の入力データ数のことである。即ち、ＰＥマトリックス１０１内で処理中の入力データ数と、ロードバッファ１１０とストアバッファ１１１で処理中の入力データ数とを合計したものである。ストアバッファ１１１は、少なくともＰＥマトリックス１０１でエラーが発生してからＰＥマトリックスコア１２０が停止するまでの間、ＰＥマトリックス１０１から出力された全てのデータを保持可能な容量を有する。
【００４２】
次に、ＰＥマトリックス１０１の全プロセッシングエレメント内で処理中の入力データ数を算出する方法を図３乃至図５を用いて説明する。
【００４３】
図３は、ＰＥマトリックス内データ数計算例で用いた配線情報を示す図である。図４は、ＰＥマトリックス内データ数計算例で最初の入力状態の入力データ数を示す図である。図５は、ＰＥマトリックス内データ数計算例で図４の状態から４クロックサイクル後の入力データ数を示す図である。
【００４４】
図３乃至図５において、図３は、４×４プロセッシングエレメントの接続関係を示したものである。３０１は、プロセッシングエレメントである。３０４は、プロセッシングエレメント間の配線である。接続関係がないプロセッシングエレメント間には配線３０４を図示していない。プロセッシングエレメントの入力データ３０２は、ロードバッファ１１０から入力され、プロセッシングエレメントの出力データ３０３は、ストアバッファ１１１へ出力される。また、入力データ数信号３０５は、入力データ値バッファ１１３へ出力される。
【００４５】
図４、図５は、図３のプロセッシングエレメント構成を用いた場合の各プロセッシングエレメントで処理に使用した入力データ数のクロックによる違いを示したものである。図４は、ロードバッファ１１０から出力された入力データ３０２が最初にＰＥマトリックス１０１内に入力された時の、各プロセッシングエレメント内で使用した入力データ数を示している。
【００４６】
プロセッシングエレメント内に記述された値は、各プロセッシングエレメント内で使用した入力データ数を示す。ロードバッファ１１０からの入力が２系統あるプロセッシングエレメントの入力データ数は“２”となり、ロードバッファ１１０からの入力が１系統のプロセッシングエレメントの入力データ数は “１”となる。
【００４７】
図５は、図４の状態から４クロックサイクル後の各プロセッシングエレメントで処理に使用した入力データ数を示している。プロセッシングエレメント内に記述された値は、各プロセッシングエレメント内で使用した入力データ数を示す。その値は、接続関係のあるプロセッシングエレメント内の入力データ値を加算した値となる。また、ＰＥマトリックス１０１からは、出力データ３０３及び入力データ数信号３０５の両方が出力され、それぞれストアバッファ１１１及び入力データ値バッファ１１３へ送出される。ここで、入力データは、ロードバッファ１１０から毎サイクル入力されているものとする。
【００４８】
図５の時点で、全プロセッシングエレメントで処理中の入力データ数は、各プロセッシングエレメント内の入力データ数の合計２６であることが分かる。従って、加算器１１４（図９）により各プロセッシングエレメントについて入力データ数の加算を行い合計を算出することで、全プロセッシングエレメント内で現在処理中の入力データ数を算出することができる。更に、加算器１１４によりロードバッファ１１０内のデータ数及びストアバッファ１１１内のデータ数に対応する入力データ数を加算することで、ＰＥマトリックス内で処理中の全入力データ数を算出することができる。
【００４９】
図６は、ストアバッファ１１１及び入力データ値バッファ１１３の概略構成を示す図である。
【００５０】
図６において、ストアバッファ１１１及び入力データ値バッファ（入力データ数バッファ部）１１３の２つのブロックと信号の入出力関係は、ストアバッファ１１１内のデータに対応する入力データ数を算出するための方法を示している。データ信号３０３は、ＰＥマトリックス１０１から出力された信号である。ストアバッファ１１１は、出力データ３０３を出力データ６０３としてバッファリングする。データ信号６０４は、外部メモリ１４５へ出力する信号である。
【００５１】
信号３０５は、ＰＥマトリックス１０１から出力された入力データ数を示す信号である。入力データ数６１３は、出力データ６０３に対応する。入力データ合計数６１２は、入力データ値バッファ１１３内の全入力データ数を合計した値であり、入力データ合計値制御部１１２へ出力する信号である。入力データ合計数６１２は、出力データ６０３に応じて増減する。
【００５２】
ＰＥマトリックス１０１から出力された出力データがストアバッファ１１１の出力データ６０３としてセットされる毎に、入力データ値バッファ１１３に対応する入力データ数がセットされる。ストアバッファ１１１の出力データ６０３が出力される毎に、入力データ値バッファ１１３から対応する入力データ数が削除される。従って、入力データ合計数６１２の値は、ストアバッファ１１１の出力データ６０３が使用した入力データ数の合計となる。
【００５３】
また、アルゴリズムによっては、プロセッシングエレメントの出力データと対応する入力データ数の比が一定の場合がある。そのような場合は、ストアバッファ１１１内の出力データ数を整数倍して入力データ数を求めても良いことは明らかである。
【００５４】
図７は、入力データ合計値制御部１１２の構成を示すブロック図である。
【００５５】
図７において、入力データ合計値制御部１１２は、上記図１で説明したように、ＰＥマトリックス１０１内の全入力データ数を合計する。信号６１２は、入力データ値バッファ１１３から出力された信号である。信号１３７は、入力データ数１３７（図９）の信号に対応しており、全プロセッシングエレメントからの出力信号を示している。入力データ数７０４は、ロードバッファ１１０内の入力データ数である。入力データ合計値制御部１１２は、複数の加算器７０５及び加算器７０６により全ての入力信号の加算を行う。加算結果は、信号７０７としてプロセッサ１０７へ出力され、再ロードアドレス計算に使用される。
【００５６】
次に、本実施の形態の動的再構成可能デバイス故障検出装置内部の各部の動作を図８及び図１０乃至図１３を参照しながら説明する。
【００５７】
図８は、動的再構成可能デバイス故障検出装置内部の各部間のデータ処理タイミング及びデータ処理の流れを示す図である。図１０は、エラー情報保持部１０５の処理を示すフローチャートである。図１１は、プロセッサ１０７の処理を示すフローチャートである。図１２は、ＰＥマトリックスリセット制御部１２１の処理を示すフローチャートである。図１３は、ＰＥマトリックスコア１２０の処理を示すフローチャートである。
【００５８】
図８において、上方から下方に向かい時間の経過を示している。各部（エラー検出回路１０３、エラー情報保持部１０５、ＰＥマトリックスコア１２０、入力データ合計値制御部１１２、ＰＥマトリックスリセット制御部１２１、プロセッサ１０７、外部メモリ１４５）の間の矢印は各部間の信号を示している。また、矢印は信号の向かう方向を示している。
【００５９】
図８及び図１０乃至図１３において、エラー検出回路１０３は、プロセッシングエレメントのエラーを検出した場合、エラー信号８１０をエラー情報保持部１０５に出力し、エラー情報を伝達する。これに伴い、エラー情報保持部１０５は、エラー情報を保持する（ステップＳ１）。また、エラー情報保持部１０５は、割り込み信号８１２をプロセッサ１０７に出力し、エラー情報を通知する（ステップＳ２）。また、エラー情報保持部１０５は、ＰＥマトリックスコア１２０の処理を停止するために、機能停止信号８１１をＰＥマトリックスコア１２０に出力し、ＰＥマトリックスコア１２０の処理を停止する（ステップＳ３）。
【００６０】
プロセッサ１０７は、エラー情報保持部１０５から割り込み信号８１２を受信した後、エラー情報８１４を取得する（ステップＳ１１）。プロセッサ１０７は、エラー情報８１４を取得した後、割り込みマスク信号８４０をエラー情報保持部１０５に出力し、割り込み信号８１２をマスクする（ステップＳ１２）。プロセッサ１０７は、割り込み信号８１２をマスクした後、外部メモリ１４５から構成情報８１６（図１の１０４）を取得する。更に、プロセッサ１０７は、上記エラー情報８１４を基に、故障したプロセッシングエレメントを使用しないようにするため、構成情報変更処理８１７により外部メモリ１４５の構成情報を新しい構成情報に書き換える（ステップＳ１３）。
【００６１】
その後、プロセッサ１０７は、取得処理８４１により入力データ合計値制御部１１２からＰＥマトリックス内の入力データ数を取得し、アドレス計算処理８１８によりＰＥマトリックス用入力データの再ロードアドレスを計算する（ステップＳ１４）。プロセッサ１０７は、アドレス計算処理８１８が終了した後、リセット信号（ＰＥマトリックスデータクリア指示）８１９をＰＥマトリックスリセット制御部１２１に出力する（ステップＳ１５）。
【００６２】
ＰＥマトリックスリセット制御部１２１は、プロセッサ１０７からリセット信号８１９を受信した後（ステップＳ２１）、リセット信号８４２をＰＥマトリックスコア１２０に出力し、ＰＥマトリックスコア１２０内の全データを無効化する（ステップＳ２２）。この場合、ＰＥマトリックスリセット制御部１２１により無効化されたデータは、入力データ合計値制御部１１２により計数する。プロセッサ１０７は、ＰＥマトリックス１０１のリセット後、ＰＥマトリックス機能停止解除信号８２０をエラー情報保持部１０５に出力する（ステップＳ１６）。
【００６３】
エラー情報保持部１０５は、ＰＥマトリックス機能停止解除信号８２０を受信した後、デアサート処理８１１により機能停止信号をデアサートし、ＰＥマトリックス１０１を処理可能状態にする（ステップＳ４）。その後、ＰＥマトリックスコア１２０は、外部メモリ１４５から構成情報８４３をＰＥマトリックスコア１２０にロードし、新しい構成情報に変更する（ステップＳ３１）。更に、ＰＥマトリックスコア１２０は、処理８２１により入力データをＰＥマトリックスコア１２０に再ロードする（ステップＳ３２）。これにより、プロセッシングエレメントが実行中に故障した場合も、ＬＳＩを交換することなく正常に処理を再開することができる。
【００６４】
以上説明したように、本実施の形態によれば、ＬＳＩ製造後のアプリケーション実行中に動的再構成可能デバイス内のプロセッシングエレメントでエラーが発生した場合、エラー情報保持部１０５によりＰＥマトリックスコア１２０の処理を停止する。
【００６５】
更に、プロセッサ１０７によりエラーが発生したプロセッシングエレメントから外部メモリ１４５へエラーデータが出力されないように制御し、ＰＥマトリックスリセット制御部１２１によりＰＥマトリックスコア１２０内の全データを無効化する。
【００６６】
更に、エラーが発生したプロセッシングエレメントを使用しないようにするため、プロセッサ１０７により構成情報を変更した後、無効化したデータに相当する入力データを外部メモリ１４５から再ロードしてＰＥマトリックスコア１２０の処理を再実行する。
【００６７】
これにより、ＬＳＩ製造後のアプリケーションの実行中にＰＥマトリックス１０１内のプロセッシングエレメントでエラーが発生した場合、プロセッシングエレメントのエラーを即座に検出することが可能となる。また、プロセッシングエレメントのエラー検出後も、ＰＥマトリックス１０１で処理を継続することが可能となる。
【００６８】
［他の実施の形態］
また、本発明の目的は、前述した各実施の形態の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。
【００６９】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した各実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００７０】
また、プログラムコードを供給するための記憶媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。または、プログラムコードをネットワークを介してダウンロードしてもよい。
【００７１】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した各実施の形態の機能が実現されるだけではなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した各実施の形態の機能が実現される場合も含まれる。
【００７２】
更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、次のプログラムコードの指示に基づき、その拡張機能を拡張ボードや拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した各実施の形態の機能が実現される場合も含まれる。
【図面の簡単な説明】
【００７３】
【図１】本発明の実施の形態に係るデバイス故障検出装置としての動的再構成可能デバイス故障検出装置の構成を示すブロック図である。
【図２】動的再構成可能デバイス故障検出装置のエラー情報保持部の構成を示すブロック図である。
【図３】ＰＥマトリックス内データ数計算例で用いた配線情報を示す図である。
【図４】ＰＥマトリックス内データ数計算例で最初の入力状態の入力データ数を示す図である。
【図５】ＰＥマトリックス内データ数計算例で図４の状態から４クロックサイクル後の入力データ数を示す図である。
【図６】ストアバッファ及び入力データ値バッファの概略構成を示す図である。
【図７】入力データ合計値制御部の構成を示すブロック図である。
【図８】動的再構成可能デバイス故障検出装置内部の各部間のデータ処理タイミング及びデータ処理の流れを示す図である。
【図９】ＰＥマトリックス内部の最小構成要素であるＰＥの構成を示すブロック図である。
【図１０】エラー情報保持部の処理を示すフローチャートである。
【図１１】プロセッサの処理を示すフローチャートである。
【図１２】ＰＥマトリックスリセット制御部の処理を示すフローチャートである。
【図１３】ＰＥマトリックスコアの処理を示すフローチャートである。
【符号の説明】
【００７４】
１０１  ＰＥマトリックス（ダイナミックリコンフィギャラブルデバイス）
１０２  ＡＬＵ（演算器）
１０３  エラー検出回路（検出手段）
１０４  構成情報
１０５  エラー情報保持部
１０７  プロセッサ（計算手段）
１１０  ロードバッファ
１１１  ストアバッファ
１１２  入力データ合計値制御部
１２０  ＰＥマトリックスコア
１２１  ＰＥマトリックスリセット制御部
１４５  外部メモリ（記憶手段）
【図１】
0004795025.tif 000002
【図２】
0004795025.tif 000003
【図３】
0004795025.tif 000004
【図４】
0004795025.tif 000005
【図５】
0004795025.tif 000006
【図６】
0004795025.tif 000007
【図７】
0004795025.tif 000008
【図８】
0004795025.tif 000009
【図９】
0004795025.tif 000010
【図１０】
0004795025.tif 000011
【図１１】
0004795025.tif 000012
【図１２】
0004795025.tif 000013
【図１３】
0004795025.tif 000014