(57)【要約】  本発明は、プロセッサを多重化するＦＰＧＡにおいて、システムの処理の中断を抑えつつ、エラーを起こしたプロセッサの復帰、及び、稼働中の別のプロセッサの同期処理を実行して、可用性が高いシステムを提供することを目的とする。  本発明に係るフィールドプログラマブルゲートアレイは、その一例を挙げるならば、それぞれが内部メモリを備えるとともに、同一の内容の処理をそれぞれが実行して出力する複数のプロセッサと、前記複数のプロセッサの出力から少なくとも１つのプロセッサのエラーを検出し、いずれのプロセッサでエラーが発生したかを示す判定信号を出力するメモリ更新回路と、前記判定信号を受信すると、エラーが発生したプロセッサの内部メモリを選択し、当該内部メモリへ他の正常なプロセッサの内部メモリの内容を書き戻してエラーから復帰させるメモリ書き戻し回路と、を備えることを特徴とする。
2015011792.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが内部メモリを備えるとともに、同一の内容の処理をそれぞれが実行して出力する複数のプロセッサと、
前記複数のプロセッサの出力から少なくとも１つのプロセッサのエラーを検出し、いずれのプロセッサでエラーが発生したかを示す判定信号を出力するメモリ更新回路と、
前記判定信号を受信すると、エラーが発生したプロセッサの内部メモリを選択し、当該内部メモリへ他の正常なプロセッサの内部メモリの内容を書き戻してエラーから復帰させるメモリ書き戻し回路と、を備えるフィールドプログラマブルゲートアレイ。
【請求項２】
請求項１に記載のフィールドプログラマブルゲートアレイにおいて、
前記メモリ更新回路からの制御信号によって、前記複数のプロセッサの内部メモリと同様のデータが書き込まれる復帰用メモリを備え、
前記メモリ書き戻し回路は、前記復帰用メモリから読み出された所定のデータを前記エラーが発生したプロセッサの内部メモリへ書き戻して復帰処理を行うことを特徴とするフィールドプログラマブルゲートアレイ。
【請求項３】
請求項２に記載のフィールドプログラマブルゲートアレイにおいて、
前記複数のプロセッサを動作させる第一のクロックと、
前記復帰用メモリからのデータの読み出し、および、前記メモリ書き戻し回路による書き戻しを動作させる第二のクロックと、を有し、
前記第二のクロックは前記第一のクロックよりも高い周波数で動作することを特徴とするフィールドプログラマブルゲートアレイ。
【請求項４】
請求項２に記載のフィールドプログラマブルゲートアレイにおいて、
前記プロセッサから前記メモリ更新回路への出力が送られる第一のバスと、
前記メモリ更新回路から前記復帰用メモリへの出力が送られる第二のバスと
前記復帰用メモリから前記メモリ書き戻し回路への出力が送られる第三のバスと、
前記メモリ書き戻し回路から前記プロセッサへの出力が送られる第四のバスと、を有し、
前記第三のバスまたは前記第四のバスのバス幅は、前記第一のバスまたは前記第二のバスのバス幅よりも広いことを特徴とするフィールドプログラマブルゲートアレイ。
【請求項５】
請求項１に記載のフィールドプログラマブルゲートアレイにおいて、
少なくとも３つのプロセッサによって多重化されており、
前記メモリ更新回路は、前記少なくとも３つのプロセッサの出力の多数決をとってエラー検出、および、いずれのプロセッサでエラーが発生したかを判定することを特徴とするフィールドプログラマブルゲートアレイ。
【請求項６】
請求項１に記載のフィールドプログラマブルゲートアレイにおいて、
前記メモリ書き戻し回路は、前記エラーが発生したプロセッサの内部メモリ全体を更新して、前記正常なプロセッサの内部メモリと内容を一致化させることを特徴とするフィールドプログラマブルゲートアレイ。
【請求項７】
請求項２に記載のフィールドプログラマブルゲートアレイにおいて、
前記復帰処理中に前記正常なプロセッサが継続して動作することによって更新された内部メモリのアドレスを記憶する復帰中差分メモリと、
前記復帰中差分メモリが示すアドレスに基づいて、前記復帰処理中に更新されたデータを選択して前記エラーが発生したプロセッサの内部メモリへの書き戻し指示を行う差分更新回路と、
を有することを特徴とするフィールドプログラマブルゲートアレイ。
【請求項８】
請求項７に記載のフィールドプログラマブルゲートアレイにおいて、
前記差分更新回路は、前記メモリ書き戻し回路による前記所定のデータの書き戻しの後、さらに前記復帰処理中に更新されたデータを選択して前記エラーが発生したプロセッサの内部メモリへの書き戻し指示を行い、
前記メモリ書き戻し回路は、前記複数のプロセッサの内部メモリの内容が一致したことを確認すると、前記複数のプロセッサへ割り込み処理を発生させ、当該複数のプロセッサの状態を一致化させて動作を継続させることを特徴とするフィールドプログラマブルゲートアレイ。
【請求項９】
請求項１に記載のフィールドプログラマブルゲートアレイにおいて、
前記複数のプロセッサのうち少なくとも１つプロセッサにエラーが発生した場合に、フィールドプログラマブルゲートアレイ内に予め割り当てられた領域に前記エラーが発生したプロセッサと同じ回路を再構成して接続することを特徴とするフィールドプログラマブルゲートアレイ。
【請求項１０】
それぞれが内部メモリを備えるとともに、同一の内容の処理をそれぞれが実行して出力する複数のプロセッサと、
前記複数のプロセッサの出力から少なくとも１つのプロセッサのエラーを検出し、いずれのプロセッサでエラーが発生したかを示す判定信号を出力するメモリ更新回路と、
前記判定信号を受信すると、エラーが発生したプロセッサの内部メモリを選択し、当該内部メモリへ他の正常なプロセッサの内部メモリの内容を書き戻してエラーから復帰させるメモリ書き戻し回路と、を備える制御装置。
【請求項１１】
内部メモリを有する複数のプロセッサによって多重化されたフィールドプログラマブルゲートアレイを用いて機器を制御する制御装置において、
前記フィールドプログラマブルゲートアレイは、
前記複数のプロセッサの出力から少なくとも１つのプロセッサのエラーを検出し、いずれのプロセッサでエラーが発生したかを示す判定信号を出力するメモリ更新回路と、
前記判定信号を受信し、エラーが発生したプロセッサの内部メモリへ他の正常なプロセッサの内部メモリの内容を書き戻してエラーから復帰させるメモリ書き戻し回路と、を備え、
前記エラーが発生したプロセッサの復帰処理中、前記正常なプロセッサは継続して動作することを特徴とする制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フィールドプログラマブルゲートアレイおよび制御装置に関する。
【背景技術】
【０００２】
近年のフィールドプログラマブルゲートアレイ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ、以下ＦＰＧＡ）で主に使われている方式として、はＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）タイプのものがある。【０００３】
ＳＲＡＭタイプＦＰＧＡは、電源が入ると、ＳＲＡＭで構成されたＬＵＴ（Ｌｏｏｋ  Ｕｐ  Ｔａｂｌｅ）によって任意の論理回路を実現できるという特徴がある。【０００４】
しかしこの特性のために、外部からのノイズや空中から放射された宇宙線などの影響でＳＲＡＭのビットが一時的に変化するソフトエラーと呼ばれる一時故障が発生すると、所望の回路とは異なる構成となってしまい、結果的にシステムの誤動作を引き起こしたり、装置が止まったりする場合があり得る。【０００５】
このような背景から、ＳＲＡＭ型ＦＰＧＡにプロセッサを内蔵する場合の可用性を高めるための技術が提案されている。【０００６】
例えば、非特許文献１には、ＳＲＡＭ型ＦＰＧＡにおいて、ＦＰＧＡ内部にプロセッサを三重化し、プロセッサの出力を多数決して共有メモリにライトする構成とし、いずれか一つのプロセッサで故障が発生しても、ＦＰＧＡは正しい値を出力するシステムの例が記載されている。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】電子情報通信学会論文誌  Ｄ  Ｖｏｌ．Ｊ９２−Ｄ  Ｎｏ．１２  ｐｐ．２１０５−２１１３
【発明の概要】
【発明が解決しようとする課題】
【０００８】
プラント、鉄道、航空機など、人命や環境の安全確保のために非常に高い信頼性が求められる産業制御システムでは、万が一、システム内で故障や異常が発生しても、できるだけシステムを停止させないように可用性を高めることが求められる。そのため、このようなシステムの内部で制御をする制御装置においては、信頼性や可用性を高めることが要求される。【０００９】
これまで、このような制御装置には、主にＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）が使用されてきた。【００１０】
しかし、近年、ＡＳＩＣは半導体プロセスの微細化に伴う製造費の高騰により、製造数が少ない産業制御システムのために新規に開発することが困難になってきている。【００１１】
一方、１９８０年代に実用化されたＦＰＧＡは、微細化により集積度と性能が高まり、価格もこなれてきたため、製造数の少ない産業制御システムに使う試みも始まってきている。そして、ＡＳＩＣに比べてソフトエラーが起こりやすいと言われているＳＲＡＭ型ＦＰＧＡを、産業用途向けに使用するためには、ＦＰＧＡ内の回路で故障を検出するとともに、故障を検出した場合にもシステムが止まらないような可用性が要求される。【００１２】
ここで非特許文献１の技術では、ソフトエラーを起こしたプロセッサを復帰させるために他の正常なプロセッサと内部状態の同期を取る復帰処理を全プロセッサが行う必要があり、この復帰処理の間はシステムのメイン処理が停止するという問題があった。【００１３】
本発明は、プロセッサを多重化するＦＰＧＡにおいて、システムの処理の中断を抑えつつ、エラーを起こしたプロセッサの復帰、及び、稼働中の別のプロセッサの同期処理を実行して、可用性が高いシステムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
上記課題を解決するために、例えば特許請求の範囲に記載の構成を採用する。【００１５】
本題は上記課題を解決する手段を複数含んでいるが、その一例を挙げるならば、それぞれが内部メモリを備えるとともに、同一の内容の処理をそれぞれが実行して出力する複数のプロセッサと、前記複数のプロセッサの出力から少なくとも１つのプロセッサのエラーを検出し、いずれのプロセッサでエラーが発生したかを示す判定信号を出力するメモリ更新回路と、  前記判定信号を受信すると、エラーが発生したプロセッサの内部メモリを選択し、当該内部メモリへ他の正常なプロセッサの内部メモリの内容を書き戻してエラーから復帰させるメモリ書き戻し回路と、を備えることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、ＦＰＧＡを用いるシステムに対し、ＦＰＧＡ内部にプロセッサを多重化した場合に、システムのメイン処理の中断を低減しつつ、故障したプロセッサを復帰して同期させることが可能になる。【００１７】
上記した以外の課題、構成および効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１８】
【図１】実施例１における、複数のプロセッサを内蔵するＦＰＧＡの例である。
【図２】図１のＦＰＧＡから出力される故障プロセッサ表示信号と復帰中プロセッサ表示信号の値の例を示す図である。
【図３】実施例１における、複数のプロセッサを内蔵するＦＰＧＡに、プロセッサの内部メモリを復帰させるための回路を実装した例である。
【図４】図３に示したメモリ更新回路の一例を示す図である。
【図５】図３に示した復帰用メモリの一例を示す図である。
【図６】図３に示したメモリ書き戻し回路の一例を示す図である。
【図７】実施例１のＦＰＧＡにおいて、故障したプロセッサの内部メモリの内容を、故障していないプロセッサよりも高速に書き戻す場合のタイミングチャートの一例である。
【図８】実施例２における、故障したプロセッサの内部メモリの復帰中に更新された部分を書き戻すための回路を実装した例である。
【図９】図８に示した復帰中差分メモリの一例を示す図である。
【図１０】図８に示した差分更新回路の一例を示す図である。
【図１１】図８に示したメモリ書き戻し回路の一例を示す図である。
【図１２】プロセッサの内部メモリの情報が復帰する様子を示した一例である。
【図１３】複数のプロセッサが動作中に一つのプロセッサに一時的な故障が発生し、復帰する場合の処理チャートの一例を示した図である。
【図１４】実施例３における、部分的再構成可能なＦＰＧＡにおいて故障したプロセッサをＦＰＧＡ内の別の領域に割り当てる場合の一例を示す図である。
【図１５】複数のプロセッサが動作中に一つのプロセッサに永久故障が発生し、別の領域にプロセッサを割り当てて復帰する場合の処理チャートの一例を示した図である。
【図１６】実施例４における、本発明のＦＰＧＡを搭載した制御装置およびその制御装置で変電設備を制御する産業制御システムの一例である。
【発明を実施するための形態】
【００１９】
以下、実施例を、図面を用いて説明する。
【実施例１】
【００２０】
図１は、三つのプロセッサを内蔵するＦＰＧＡの例を示した図である。【００２１】
ＦＰＧＡ（１）に内蔵されるプロセッサＡ（２）、プロセッサＢ（３）、プロセッサＣ（４）は、同一の論理回路で実装されており、同一の処理を行い、同一の値を出力する。【００２２】
多数決回路１０は、プロセッサＡ（２）、プロセッサＢ（３）、プロセッサＣ（４）の出力を多数決して外部に対して制御出力信号１０１として出力する。いずれかのプロセッサで故障が発生して出力が他の二つのプロセッサと異なると、その異なった値は多数決により出力されない。【００２３】
また、多数決回路１０は故障プロセッサ表示信号１０２および復帰中プロセッサ表示信号１０３を出力する。【００２４】
図２に、故障プロセッサ表示信号１０２と復帰中プロセッサ表示信号１０３の信号値の例を示す。【００２５】
図２（ａ）は、故障プロセッサ表示信号１０２の表示信号を示す図である。多数決回路１０は、プロセッサＡ（２）、プロセッサＢ（３）、プロセッサＣ（４）の出力を多数決処理し、いずれかのプロセッサの出力が他の複数のプロセッサの出力と異なっていた場合に、異なる出力を出したプロセッサを故障と判断する。ここでは、故障プロセッサ表示信号１０２が、該当のプロセッサが故障していない場合は０を出力し、該当のプロセッサが故障していたら１を出力する３ビットの故障プロセッサ表示信号１０２の出力例を示したものである。【００２６】
この図２（ａ）では、プロセッサＡ（２）が故障していたら故障プロセッサ表示信号１０２のビット２が１になり、プロセッサＢ（３）が故障していたら故障プロセッサ表示信号１０２のビット１が１になり、プロセッサＣ（３）が故障していたら故障プロセッサ表示信号１０２のビット０が１になることを表している。【００２７】
また図２（ｂ）は、復帰中プロセッサ表示信号１０３の表示信号を示す図である。多数決回路１０は、プロセッサＡ（２）、プロセッサＢ（３）、プロセッサＣ（４）のいずれかのプロセッサを故障と判断すると、故障したプロセッサが復帰中か否かを判断して復帰中プロセッサ表示信号１０３を出力する。ここでは、復帰中プロセッサ表示信号１０３が、該当のプロセッサが復帰中でない場合は０を出力し、該当のプロセッサが復帰中である場合は１を出力する３ビットの復帰中プロセッサ表示信号１０３の出力例を示したものである。【００２８】
この図２（ｂ）では、プロセッサＡ（２）が復帰中であれば復帰中プロセッサ表示信号１０３のビット２が１になり、プロセッサＢ（３）が復帰中であれば復帰中プロセッサ表示信号１０３のビット１が１になり、プロセッサＣ（４）が復帰中であれば復帰中プロセッサ表示信号１０３のビット０が１になることを表している。【００２９】
このように、本発明のＦＰＧＡでは、内部にプロセッサを多重化して可用性を高める構成において、多数決回路によって故障のプロセッサを検出し、故障中であることを示す信号と復帰中であることを示す信号を外部に出力し、故障したプロセッサが復帰中にも他のプロセッサが動作を継続することを特徴とする。【００３０】
これらのことにより、ＦＰＧＡ内部のプロセッサが故障していることと復帰中であることを外部から確認することができ、故障と復帰を繰り返すような場合は、装置を安全に停止して速やかに交換するなどの目安とすることが可能になる。【００３１】
また実施例１では、ＦＰＧＡ内にプロセッサが三つ実装される例を示したが、三つ以上を実装する構成としても良い。【００３２】
次に、本発明のプロセッサを内部に構成するＦＰＧＡにおいて、故障したプロセッサを復帰させるシステムの一例をより具体的に説明する。【００３３】
図３は、実施例１における、複数のプロセッサを内蔵するＦＰＧＡに、プロセッサの内部メモリを復帰させるための回路を実装した例である。図３に示すＦＰＧＡ（１）はＳＲＡＭ型で、ＦＰＧＡが動作中にＦＰＧＡ内の一部を書き換えることができる、部分的再構成が可能なものである。【００３４】
ＦＰＧＡ（１）には、内部メモリＡ（６）を持つプロセッサＡ（２）がある。このプロセッサＡ（２）と全く同じ構成のプロセッサＢ（３）とプロセッサＣ（４）があり、この三つのプロセッサで三重系を構成する。【００３５】
各プロセッサはそれぞれが保持する内部メモリからのリード、内部メモリへのライトを行って処理をする。【００３６】
このとき、プロセッサＡ（２）のメモリライト信号Ａ（１１１）は、メモリ更新回路１２へ入力される。同様に、プロセッサＢ（３）のメモリライト信号Ｂ（１１２）と、プロセッサＣ（４）のメモリライト信号Ｃ（１１３）もメモリ更新回路１２へ入力される。【００３７】
このメモリ更新回路１２の具体的な例を図４に示す。【００３８】
図４は、メモリ更新回路の一例を示す図である。図４に示すメモリ更新回路１２では、プロセッサＡ（２）からのメモリライト信号Ａ（１１１）、プロセッサＢ（３）からのメモリライト信号Ｂ（１１２）、プロセッサＣ（４）からのメモリライト信号Ｃ（１１３）を、クロック１（２０１）で動作する多数決回路１４に入力し、いずれかのプロセッサからのメモリライト信号に故障などで誤りがあれば多数決判定信号１０６として出力する。この多数決判定信号１０６の値により、故障したプロセッサがどれか分かる。【００３９】
各メモリライト信号１１１、１１２、１１３の多数決により、ライト制御信号１０４が出力される。【００４０】
また、多数決判定信号１０６の値とライト制御信号１０４の値からメモリ不一致判定回路３１を介して出力されるリード制御信号１０５は、いずれのプロセッサが故障したかを示すプロセッサの識別情報とその内部メモリのアドレス情報を示す。【００４１】
図３において、メモリ更新回路１２から出力されるライト制御信号１０４とリード制御信号１０５は、復帰用メモリ１１に入力される。尚、図１と同様に多数決回路１４からは、制御出力信号１０１、故障プロセッサ表示信号１０２、および、復帰中プロセッサ表示信号１０３が出力される。【００４２】
図５は、復帰用メモリ１１の具体的な例を示す図である。  図５の復帰用メモリにあるライト指示部１６は、ライト制御信号１０４を入力とし、クロック１（２０１）で動作し、メモリ部分であるＲＡＭ（１５）に対してライト指示信号１１６を出力する。【００４３】
復帰用メモリ１１のＲＡＭ（１５）は、ＦＰＧＡに実装されたプロセッサに故障が発生せず通常動作をしているときに、プロセッサの内部メモリと同じ内容をライト指示部１６によってライトされている。【００４４】
いずれかのプロセッサで故障が発生した場合、図４の多数決回路１４から出力される多数決判定信号１０６をもとに、リード制御信号１０５が通常動作時とは異なる値になる。すなわち、故障が発生していない時にはリード制御信号１０５は出力されていないが、いずれかのプロセッサで故障が発生するとメモリ不一致判定回路３１から、いずれのプロセッサが故障したか、および、どの内部メモリのアドレスで故障を検出したかをリード制御信号１０５として受信する。  図５のリード指示部１７は、リード制御信号１０５を入力とし、クロック１（２０１）よりも高速な周波数のクロック２（２０２）で動作し、ＲＡＭ（１５）に対してリード指示信号１１７を出力する。【００４５】
リード指示信号１１７を受け取ったＲＡＭ（１５）は、要求されたアドレスとデータの情報をリードデータ１１８として復帰用ライト制御部１８に出力する。復帰用ライト制御部１８もクロック１（２０１）よりも高速なクロック２（２０２）で動作し、復帰用ライト制御信号１１５を出力する。【００４６】
このとき、復帰用ライト制御信号１１５のバス幅は、ライト制御信号１０４のバス幅よりも広い。【００４７】
図３において、復帰用メモリ１１から出力された復帰用ライト制御信号１１５と、メモリ更新回路１２から出力された多数決判定信号１０６は、メモリ書き戻し回路１３に入力される。【００４８】
尚、本実施例では、リード指示部１７がＲＡＭ（１５）へ読み出すアドレスを要求するよう説明したが、具体的なアドレスは要求せず、ＲＡＭ（１５）の最初のアドレスから順々に読み出させることもできる。【００４９】
図６は、メモリ書き戻し回路１３の具体的な例を示す図である。メモリ書き戻し回路１３内には、クロック１（２０１）よりも高速なクロック２（２０２）で動作するデコーダ１９があり、このデコーダ１９は、多数決判定信号１０６と、復帰用ライト制御信号１１５の中のライトコマンド１２１の値を元に、故障したプロセッサの内部メモリの書き戻しが必要なプロセッサのライトタイミングを示すライトコマンドを有効にする。プロセッサＡ（２）が故障した場合はプロセッサＡ（２）のライトコマンドＡ（１２４）を有効にし、プロセッサＢ（３）が故障した場合はプロセッサＢ（３）のライトコマンドＢ（１２５）を有効にし、プロセッサＣ（４）が故障した場合はプロセッサＣ（４）のライトコマンドＣ（１２６）を有効にする。【００５０】
各ライトコマンドに書き戻すデータであるライトデータ１２２と、データの書き戻し先の内部メモリのアドレスであるライトアドレス１２３をまとめたものを、各プロセッサに対して書き戻し制御信号として出力し、故障したプロセッサの内部メモリを選択して書き戻す。プロセッサＡ（２）の書き戻し制御信号Ａ（１０７）、プロセッサＢ（３）の書き戻し制御信号Ｂ（１０８）、プロセッサＣ（４）の書き戻し制御信号Ｃ（１０９）が各プロセッサに入力される。【００５１】
図７に、図３から図６に示したＦＰＧＡにおいて、復帰用メモリ１１と故障したプロセッサの内部メモリがライトされるタイミングチャートを示す。【００５２】
図７の上部に示したタイミングチャートは、復帰用メモリ１１のライトタイミングを示した例である。【００５３】
復帰用メモリはクロック１（２０１）に同期して動作し、１つのアドレスフェーズに対して１つのデータフェーズが対応する。例えばサイクルＣ１でのアドレスＡ１に対して復帰用メモリ１１にライトされるデータＤ１はサイクルＣ２でライトが行われる。【００５４】
図７の下部に示したタイミングチャートは、あるプロセッサが故障して復帰中にプロセッサの内部メモリがライトされるタイミングを示したものである。【００５５】
ここでは、クロック２（２０２）はクロック１（２０１）の２倍の周波数とし、復帰用ライト制御信号１１５のバス幅が、ライト制御信号１０４のバス幅の２倍であるものとしている。【００５６】
故障したプロセッサが復帰中、内部メモリはクロック２（２０２）に同期してライトされ、バス幅が２倍であるため、サイクルＣ１１でのアドレスＡ１に対して、連続する４倍のデータＤ１、Ｄ２、Ｄ３、Ｄ４を内部メモリにライトすることができ、サイクルＣ１３でライトが完了する。すなわち、Ｃ１１で書き込みの始点アドレスＡ１が指定されると、クロック２（２０２）が周波数２倍、および、バス幅２倍であることによって計４倍のデータＤ１、Ｄ２、Ｄ３、Ｄ４がＣ１２、Ｃ１３でライトされる。次いで、Ｃ１４では、Ａ１からライトされた４つ分アドレスを進めてＡ５を指定し、Ｄ１５、Ｄ１６でＤ５、Ｄ６、Ｄ７、Ｄ８がライトされる。  このように本実施例では、通常動作しているプロセッサの内部メモリへのライトデータを復帰用データにライトしつつ、故障したプロセッサが復帰用メモリから正しいメモリデータを高速に上書きすることで、故障したプロセッサを復帰させている間も正常なプロセッサは動作を続けることができ、ＦＰＧＡ内プロセッサが一部故障してもメイン処理を止めずにすむ可用性の高いシステムの実現が可能になる。【００５７】
尚、本実施例では、ＦＰＧＡを用いて説明をしたが、本実施例に記載の特徴を￥は、ＦＰＧＡではないプロセッサを多重化した制御装置に適用することもできる。
【実施例２】
【００５８】
次に、本発明のＦＰＧＡにおいて、故障したプロセッサの内部メモリの更新部分のみを書き戻すことで、システム稼働を続けながら故障したプロセッサを高速に復帰させる場合の例を示す。【００５９】
図８は、実施例２における、故障したプロセッサの内部メモリの復帰中に更新された部分を書き戻すための回路を実装した例である。図８のＦＰＧＡ（１）内には、図３と比べて復帰中差分メモリ２０と差分更新回路２１を追加している。また、復帰用メモリ１１からの復帰用ライト制御信号１１５を差分更新回路２１に入力し、メモリ更新回路１２からの多数決判定信号１０６を、変更したメモリ書き戻し回路２７に入力し、メモリ書き戻し回路２７から各プロセッサへの割り込み信号１５１、１５２、１５３を設けた部分、さらには、復帰中差分メモリ２０と復帰用メモリ１１との間でライトアドレス１３２、更新ライトデータ１３３をやりとりする部分が異なっている。【００６０】
図９に復帰中差分メモリ２０の具体的な例を示す。【００６１】
復帰中差分メモリ２０に入力される更新ライトアドレス１２７は、故障していないプロセッサの内部メモリでライトされたアドレスを示し、この更新ライトアドレス１２７が、クロック１（２０１）よりも高速なクロック２（２０２）で動作する更新アドレス指示部２２を介してライトアドレス１３０として、アドレスＦＩＦＯ（２４）に格納されていく。【００６２】
ＦＰＧＡ内の故障したプロセッサの内部メモリが復帰中に、故障していない通常動作中のプロセッサの内部メモリで更新されたアドレスが、アドレスＦＩＦＯ（２４）に格納される。【００６３】
また、復帰中差分メモリ２０に入力される更新ライトタイミング信号１２８は、故障したプロセッサの内部メモリへ、更新要求するタイミングを示し、この更新ライトタイミング信号１２８が、クロック１（２０１）よりも高速なクロック２（２０２）で動作する更新ライト指示部２３を介してライトアドレス指示信号１３１としてアドレスＦＩＦＯ（２４）に入力される。【００６４】
このライトアドレス指示信号１３１が有効になるたびに、アドレスＦＩＦＯ（２４）からライトアドレス１３２がクロック２（２０２）で動作する更新ライト制御部２５に入力されるとともに、復帰用メモリ１１へライトアドレス１３２を送信する。復帰用メモリ１１は、ライトアドレス１３２を受け取るとそのアドレスに対応するデータを更新ライトデータ１３３として更新ライト制御部２５へ送信し、更新ライト制御部２５からは、ライト要求のあった内部メモリアドレスとライトコマンドおよび更新ライトデータ、更新選択信号をまとめて更新ライト制御信号１２９として出力する。  図１０に、差分更新回路２１の具体的な例を示す。【００６５】
差分更新回路２１内にはセレクタ２６があり、入力された復帰用ライト制御信号１１５と、更新ライト制御信号１２９を選択してメモリ書き戻し信号１４１として出力する。【００６６】
セレクタ２６で信号を判定するのは、図８の復帰中差分メモリから出力された更新ライト制御信号１２９のうちの更新選択信号１３４であり、故障したプロセッサの内部メモリ全体を順番に復帰させるときは復帰用ライト制御信号１１５を選択され、内部メモリ全体の復帰が終了して、その間に正常なプロセッサの内部メモリの更新された差分のみを更新するときは更新ライト制御信号１２９が選択され、メモリ書き戻し信号１４１として出力する。【００６７】
図１１に、図８のＦＰＧＡ（１）内における変更したメモリ書き戻し回路２７の具体的な例を示す。図１１に示すメモリ書き戻し回路２７は、図６に示したメモリ書き戻し回路１３と比較して、入力されていた復帰用ライト信号１１５がメモリ書き戻し信号１４１となり、アドレスＦＩＦＯ更新終了判定回路３０と各プロセッサへの割り込み信号を設けた部分が異なっている。【００６８】
メモリ書き戻し信号１４１は図６の復帰用ライト制御信号１１５に対応する。したがって、書き戻しライトコマンド１４２はライトコマンド１２１に対応し、書き戻しライトデータ１４３はライトデータ１２２に対応し、書き戻しライトアドレス１４４はライトアドレス１２３に対応する。【００６９】
アドレスＦＩＦＯ更新終了判定回路３０は、更新選択信号１３４の値により、図９の復帰中差分メモリ２０内にあるアドレスＦＩＦＯ（２４）が空になって、全ての更新されたメモリアドレスに書き戻しが行われたら、プロセッサＡ（２）へ割り込み信号Ａ（１５１）を、プロセッサＢ（３）へ割り込み信号Ｂ（１５２）を、プロセッサＣ（４）へ割り込み信号Ｃ（１５３）を同時に出力する。【００７０】
図１２に、図８から図１１に示したＦＰＧＡにおけるプロセッサの内部メモリの更新の様子を示す。図１２は、ＦＰＧＡに内蔵された複数のプロセッサのうち、いずれか一つのプロセッサの内部メモリ空間を表したものであり、網掛けはデータが更新されたアドレスを示す。【００７１】
図１２（ａ）は故障が発生していない通常動作時の内部メモリ空間を示しており、書き換えられる内部メモリ空間の順番はプログラムによって変動する。図１２（ａ）ではＡ０１、Ａ０２、Ａ０３の部分が順に書き換わった例を示している。【００７２】
図１２（ｂ）は、このプロセッサ内で故障が発生し、このプロセッサのみをリセットして内部メモリ内容を更新する図である。これまでの実施例内で示してきたように、復帰時の内部メモリ更新は高速なクロックで広いバス幅で実施される。図１２（ｂ）では、通常動作時のメモリライト動作の４倍の速度で復帰を行う場合を想定し、メモリ空間の先頭から順にＡ１１、Ａ１２の２回で８空間のメモリ領域を復帰した場合の例を示している。すなわちＡ１１、Ａ１２の先頭のアドレスを指定すると一気に４つのアドレス分のデータをそれぞれ書き込む。【００７３】
更に図１２（ｃ）は、Ａ１３、Ａ１４の２回でメモリ空間の最後まで復帰が完了した場合の例を示している。  ここで、図１２（ｂ）、図１２（ｃ）に示したように内部メモリ空間の全領域を一通り復帰させる間にも、他の正常動作をしているプロセッサの内部メモリ空間は順不同で書き換わっている可能性があり、その書き換わったアドレスは図９に示したアドレスＦＩＦＯ（２４）に格納されている。この情報から、更に更新すべきメモリアドレスが分かるので、図１２（ｄ）のように、更新すべきメモリアドレスを含むメモリ空間を４倍の速度でＡ２１、Ａ２２、Ａ２３と書き換えていく。【００７４】
アドレスＦＩＦＯ更新終了判定回路３０の結果からアドレスＦＩＦＯ（２４）が空になって故障したプロセッサの内部メモリ空間が全て正常なプロセッサの内部メモリ空間の内容と一致して同期が終了したと判定したら、図１２（ｅ）のように再び正常な処理に戻ってプログラムに従ってメモリ空間を書き換えていく。【００７５】
このようにすることで、故障したプロセッサの内部メモリ空間を復帰中に正常動作中のプロセッサの内部メモリ内容が書き換わっても、故障したプロセッサの内部メモリ空間の内容を他のプロセッサの内容に同期化させることが可能になる。【００７６】
図１３に、図８に示したＦＰＧＡ（１）におけるプロセッサＡ（２）、プロセッサＢ（３）、プロセッサＣ（４）の処理チャートの例を示す。【００７７】
プロセッサＡ（２）、プロセッサＢ（３）、プロセッサＣ（４）は同一の回路であり、故障が発生していない間は同一の通常処理１（Ｓ０１）を実行している。【００７８】
プロセッサＣ（４）でソフトエラーなどの一時故障が発生した場合、プロセッサＡ（２）とプロセッサＢ（３）は通常処理１（Ｓ０１）を継続し、処理中は内部メモリの値も必要に応じて更新される。【００７９】
一方、一時故障が発生したプロセッサＣ（４）は、復帰処理Ｓ０２に移行し、プロセッサＣ（４）内の内部メモリＣ（８）の全領域を共有メモリ１１の内容で更新する。【００８０】
復帰処理Ｓ０２の終了後、復帰処理Ｓ０２の間にプロセッサＡ（２）とプロセッサＢ（３）の内部メモリで更新された部分をプロセッサＣ（４）の内部メモリＣ（８）に書き戻す差分処理Ｓ０３を実行する。【００８１】
差分処理が終了してプロセッサＣ（４）の内部メモリＣ（８）の内容がプロセッサＡ（２）とプロセッサＢ（３）の内部メモリの内容と一致したら、プロセッサＡ（２）、プロセッサＢ（３）、プロセッサＣ（４）に同時に割り込み処理Ｓ０４が入り、各プロセッサ内の内部レジスタを含む全ての内容が三つのプロセッサ間で同一となり、続きの通常処理２（Ｓ０５）が実行される。【００８２】
この割り込み処理Ｓ０４はあらかじめプロセッサに用意した分岐割り込みのみで実現できるため、システムは通常の処理を中断する必要がない。【００８３】
また、本実施例ではプロセッサ内の内部メモリが更新される例で説明したが、メモリで構成されるレジスタファイルなどを同様に更新する回路を追加して実装してもよい。【００８４】
これらのことにより、本発明のＦＰＧＡおよびプロセッサを実装することで、プロセッサで一時的な故障が発生してもシステムの処理を中断することなく、処理を継続したまま故障したプロセッサを復帰させて多重化を再構成することが可能になる。
【実施例３】
【００８５】
次に、本発明のＦＰＧＡにおいて、プロセッサで永久故障が発生した場合に復旧させる場合の例を示す。【００８６】
図１４は、実施例３における、部分的再構成可能なＦＰＧＡにおいて故障したプロセッサをＦＰＧＡ内の別の領域に割り当てる場合の一例を示す図である。図１４のＦＰＧＡ（１）はＳＲＡＭ型で部分的再構成可能なものを用い、図８のように回路を実装したものであるが、ＦＰＧＡに内蔵するプロセッサを論理合成するときに、ＦＰＧＡが動作中に同じプロセッサ回路を別の領域に割り当てられるように指定をして実装したものである。【００８７】
この図１４のＦＰＧＡ（１）では、プロセッサＣ（４）を実装するときに、コンフィギュレーションによって同一の回路をＦＰＧＡ内に割り当ててプロセッサＤ（５）にできるように実装した例を示している。【００８８】
図１４のプロセッサＣ（４）において、復旧できない永久故障が発生した場合は、ＦＰＧＡとそのシステムが動作中に、ＦＰＧＡ内にプロセッサＤ（５）を動的に割り当て、メモリ書き戻し回路２７からの書き戻し制御信号Ｃ（１０９）をプロセッサＤ（５）に入力し、プロセッサＤ（５）からメモリライト信号Ｄ（１１４）を割り当てて、メモリライト信号Ｃ（１１３）の代わりにメモリ更新回路１２に入力して再構成をする。【００８９】
このＦＰＧＡ内プロセッサの再構成による処理チャートの例を図１５に示す。【００９０】
図１５において、プロセッサＡ（２）、プロセッサＢ（３）、プロセッサＣ（４）は、故障が発生していない時は図１３と同様に通常処理１（Ｓ１１）を実行している。【００９１】
プロセッサＣ（４）で永久故障が発生すると、プロセッサＣ（４）は復旧処理Ｓ１２を実行してプロセッサを再起動し、内部メモリＣ（８）の内容の復旧を試みる。【００９２】
しかし複数回復旧を試みても、多数決回路からの多数決判定信号で故障が発生している状況のままの場合、永久故障と判定して、プロセッサＣ（４）の代わりにＦＰＧＡ内の新領域にプロセッサＤ（５）を構成し、復帰処理Ｓ１３を実施してプロセッサＤ（５）内の内部メモリＤ（９）の全領域を共有メモリ１１の内容で更新する。尚、ＦＰＧＡ内にはプロセッサＤを構築するための領域が確保されている。【００９３】
復帰処理Ｓ１３の終了後、復帰処理Ｓ１２および復帰処理Ｓ１３の間にプロセッサＡ（２）とプロセッサＢ（３）の内部メモリで更新された部分をプロセッサＤ（５）の内部メモリＤ（９）に書き戻す差分処理Ｓ０３を実行する。【００９４】
差分処理が終了してプロセッサＤ（５）の内部メモリＤ（９）の内容がプロセッサＡ（２）とプロセッサＢ（３）の内部メモリの内容と一致したら、プロセッサＡ（２）、プロセッサＢ（３）、プロセッサＤ（５）に同時に割り込み処理Ｓ１５が入り、各プロセッサ内の内部レジスタを含む全ての内容が三つのプロセッサ間で同一となり、続きの通常処理２（Ｓ１６）が実行される。【００９５】
なお、この例ではプロセッサＣ（４）が故障して別領域に再構成される例を示したが、プロセッサＡ（２）やプロセッサＢ（３）が故障して再構成することにしてもよく、また、複数のプロセッサに対して再構成領域を予め割り当てておいてもよい。【００９６】
これらのことにより、再構成可能なＦＰＧＡを用いることによって、ＦＰＧＡ内に構成された複数のプロセッサのうちのいずれかで永久故障が発生しても、別の領域に再構成したプロセッサのメモリ内容を、稼働している別のプロセッサのメモリ内容と一致させることができ、システムの処理を中断することなく、処理を継続したまま故障したプロセッサを復帰させて多重化を再構成することが可能になる。
【実施例４】
【００９７】
図１６に、本発明のＦＰＧＡを有する制御装置を使って産業制御システムに適用した場合の一例を示す。【００９８】
図１６の産業制御システムは、変電設備３０４を制御するものである。制御端末３０１からの指示が制御装置３０２に伝わり、内部のＦＰＧＡ（１）からＩ／Ｏ装置３０３を介して指示を送信し、変電設備を制御する。【００９９】
この制御端末３０１からの指示を処理するＦＰＧＡ（１）の一部で故障が発生して変電設備３０４に伝わってしまうと、変電設備が正常な動作をしなくなり甚大な被害が出るおそれがある。【０１００】
そのため、ＦＰＧＡ（１）内に本発明で示したようにプロセッサＡ（２）、プロセッサＢ（３）、プロセッサＣ（４）のように多重化して構成し、プロセッサの一部で故障が発生しても、正常なプロセッサで動作を続けながら、故障したプロセッサを復帰させ、多重化を再構成することができる。【０１０１】
これにより、変電設備の可用性が高まり、また、変電設備を稼働させたままメンテナンスなどを行うことが可能になる。  
これらのことにより、本発明のＦＰＧＡを適用することで、産業制御システムなどにおいて、高信頼性と可用性を高めたシステムを実現することが可能になる。【０１０２】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【符号の説明】
【０１０３】
１  フィールドプログラマブルゲートアレイ（ＦＰＧＡ）
２、３、４、５  プロセッサ
６、７、８、９  内部メモリ  
１０、１４  多数決回路
１１  復帰用メモリ
１２  メモリ更新回路
１３、２７  メモリ書き戻し回路
１５  ＲＡＭ
２０  復帰中差分メモリ
２１  差分更新回路
３０１  制御端末
３０２  制御装置
３０３  Ｉ／Ｏ装置
３０４  変電装置
【図１】
2015011792.tif 000003
【図２】
2015011792.tif 000004
【図３】
2015011792.tif 000005
【図４】
2015011792.tif 000006
【図５】
2015011792.tif 000007
【図６】
2015011792.tif 000008
【図７】
2015011792.tif 000009
【図８】
2015011792.tif 000010
【図９】
2015011792.tif 000011
【図１０】
2015011792.tif 000012
【図１１】
2015011792.tif 000013
【図１２】
2015011792.tif 000014
【図１３】
2015011792.tif 000015
【図１４】
2015011792.tif 000016
【図１５】
2015011792.tif 000017
【図１６】
2015011792.tif 000018
【手続補正書】
【提出日】平成26年11月12日(2014.11.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
（削除）
【請求項２】
それぞれが内部メモリを備えるとともに、同一の内容の処理をそれぞれが実行して出力する複数のプロセッサと、前記複数のプロセッサの出力から少なくとも１つのプロセッサのエラーを検出し、いずれのプロセッサでエラーが発生したかを示す判定信号を出力するメモリ更新回路と、
前記判定信号を受信すると、エラーが発生したプロセッサの内部メモリを選択し、当該内部メモリへ他の正常なプロセッサの内部メモリの内容を書き戻してエラーから復帰させるメモリ書き戻し回路と、
前記メモリ更新回路からの制御信号によって、前記複数のプロセッサの内部メモリと同様のデータが書き込まれる復帰用メモリと、を備え、
前記メモリ書き戻し回路は、前記復帰用メモリから読み出された所定のデータを前記エラーが発生したプロセッサの内部メモリへ書き戻して復帰処理を行うことを特徴とするフィールドプログラマブルゲートアレイ。
【請求項３】
請求項２に記載のフィールドプログラマブルゲートアレイにおいて、前記複数のプロセッサを動作させる第一のクロックと、
前記復帰用メモリからのデータの読み出し、および、前記メモリ書き戻し回路による書き戻しを動作させる第二のクロックと、を有し、
前記第二のクロックは前記第一のクロックよりも高い周波数で動作することを特徴とするフィールドプログラマブルゲートアレイ。
【請求項４】
請求項２に記載のフィールドプログラマブルゲートアレイにおいて、
前記プロセッサから前記メモリ更新回路への出力が送られる第一のバスと、
前記メモリ更新回路から前記復帰用メモリへの出力が送られる第二のバスと、
前記復帰用メモリから前記メモリ書き戻し回路への出力が送られる第三のバスと、
前記メモリ書き戻し回路から前記プロセッサへの出力が送られる第四のバスと、を有し、
前記第三のバスまたは前記第四のバスのバス幅は、前記第一のバスまたは前記第二のバスのバス幅よりも広いことを特徴とするフィールドプログラマブルゲートアレイ。
【請求項５】
請求項２に記載のフィールドプログラマブルゲートアレイにおいて、
少なくとも３つのプロセッサによって多重化されており、
前記メモリ更新回路は、前記少なくとも３つのプロセッサの出力の多数決をとってエラー検出、および、いずれのプロセッサでエラーが発生したかを判定することを特徴とするフィールドプログラマブルゲートアレイ。
【請求項６】
請求項２に記載のフィールドプログラマブルゲートアレイにおいて、
前記メモリ書き戻し回路は、前記エラーが発生したプロセッサの内部メモリ全体を更新して、前記正常なプロセッサの内部メモリと内容を一致化させることを特徴とするフィールドプログラマブルゲートアレイ。
【請求項７】
請求項２に記載のフィールドプログラマブルゲートアレイにおいて、
前記復帰処理中に前記正常なプロセッサが継続して動作することによって更新された内部メモリのアドレスを記憶する復帰中差分メモリと、
前記復帰中差分メモリが示すアドレスに基づいて、前記復帰処理中に更新されたデータを選択して前記エラーが発生したプロセッサの内部メモリへの書き戻し指示を行う差分更新回路と、
を有することを特徴とするフィールドプログラマブルゲートアレイ。
【請求項８】
請求項７に記載のフィールドプログラマブルゲートアレイにおいて、
前記差分更新回路は、前記メモリ書き戻し回路による前記所定のデータの書き戻しの後、さらに前記復帰処理中に更新されたデータを選択して前記エラーが発生したプロセッサの内部メモリへの書き戻し指示を行い、
前記メモリ書き戻し回路は、前記複数のプロセッサの内部メモリの内容が一致したことを確認すると、前記複数のプロセッサへ割り込み処理を発生させ、当該複数のプロセッサの状態を一致化させて動作を継続させることを特徴とするフィールドプログラマブルゲートアレイ。
【請求項９】
請求項２に記載のフィールドプログラマブルゲートアレイにおいて、
前記複数のプロセッサのうち少なくとも１つプロセッサにエラーが発生した場合に、フィールドプログラマブルゲートアレイ内に予め割り当てられた領域に前記エラーが発生したプロセッサと同じ回路を再構成して接続することを特徴とするフィールドプログラマブルゲートアレイ。
【請求項１０】
それぞれが内部メモリを備えるとともに、同一の内容の処理をそれぞれが実行して出力する複数のプロセッサと、
前記複数のプロセッサの出力から少なくとも１つのプロセッサのエラーを検出し、いずれのプロセッサでエラーが発生したかを示す判定信号を出力するメモリ更新回路と、
前記判定信号を受信すると、エラーが発生したプロセッサの内部メモリを選択し、当該内部メモリへ他の正常なプロセッサの内部メモリの内容を書き戻してエラーから復帰させるメモリ書き戻し回路と、
前記メモリ更新回路からの制御信号によって、前記複数のプロセッサの内部メモリと同様のデータが書き込まれる復帰用メモリと、を備え、
前記メモリ書き戻し回路は、前記復帰用メモリから読み出された所定のデータを前記エラーが発生したプロセッサの内部メモリへ書き戻して復帰処理を行うことを特徴とする制御装置。
【請求項１１】
内部メモリを有する複数のプロセッサによって多重化されたフィールドプログラマブルゲートアレイを用いて機器を制御する制御装置において、
前記フィールドプログラマブルゲートアレイは、
前記複数のプロセッサの出力から少なくとも１つのプロセッサのエラーを検出し、いずれのプロセッサでエラーが発生したかを示す判定信号を出力するメモリ更新回路と、
前記判定信号を受信し、エラーが発生したプロセッサの内部メモリへ他の正常なプロセッサの内部メモリの内容を書き戻してエラーから復帰させるメモリ書き戻し回路と、
前記メモリ更新回路からの制御信号によって、前記複数のプロセッサの内部メモリと同様のデータが書き込まれる復帰用メモリと、を備え、
前記メモリ書き戻し回路は、前記復帰用メモリから読み出された所定のデータを前記エラーが発生したプロセッサの内部メモリへ書き戻して復帰処理を行い、
前記エラーが発生したプロセッサの復帰処理中、前記正常なプロセッサは継続して動作することを特徴とする制御装置。
【国際調査報告】
2015011792.tif 000019
2015011792.tif 000020
2015011792.tif 000021