(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-10
(45)【発行日】2023-10-18
(54)【発明の名称】多重化回路装置及びエラー修復方法
(51)【国際特許分類】
G06F 11/16 20060101AFI20231011BHJP
G06F 11/14 20060101ALI20231011BHJP
【FI】
G06F11/16 637
G06F11/14 638
(21)【出願番号】P 2022017129
(22)【出願日】2022-02-07
【審査請求日】2022-02-07
(73)【特許権者】
【識別番号】000227205
【氏名又は名称】NECプラットフォームズ株式会社
(74)【代理人】
【識別番号】100106909
【氏名又は名称】棚井 澄雄
(74)【代理人】
【識別番号】100134544
【氏名又は名称】森 隆一郎
(74)【代理人】
【識別番号】100149548
【氏名又は名称】松沼 泰史
(74)【代理人】
【識別番号】100162868
【氏名又は名称】伊藤 英輔
(72)【発明者】
【氏名】山本 政人
【審査官】田中 幸雄
(56)【参考文献】
【文献】特開2014-229130(JP,A)
【文献】特開2014-71576(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/16
G06F 11/14
(57)【特許請求の範囲】
【請求項1】
多重化された複数の回路それぞれにおける演算結果のうち一部の演算結果をチェック範囲とし、前記チェック範囲におけるエラーの発生をチェックする複数の中間チェック回路と、
複数の前記中間チェック回路から複数の前記回路それぞれの複数の異なる前記チェック範囲についてのチェック結果を取得し、取得した前記チェック結果に基づいて前記回路におけるエラーの有無
と、エラー有と判定された前記回路であるエラー発生回路においてエラーが発生した箇所を含むと推定されるエラー推定箇所とを判定する判定手段と、
前記エラー発生回路における前記エラー推定箇所をチェックしてエラー発生箇所を特定する部分チェック手段と、
前記エラー発生回路のデータを修復する修復手段と、
を備え
、
前記修復手段は、
前記エラー発生回路のコンフィグレーションデータを復旧するエラー復旧手段と、
前記部分チェック手段が特定したエラー発生箇所に対応した演算結果に、エラー無と判定された前記回路における演算結果をコピーするコピー処理を、前記エラー復旧手段による復旧後に行うコピー手段とを有する、
多重化回路装置。
【請求項2】
前記コピー手段は、前記コピー処理を、前記回路の動作クロックの立下り、又は、前記回路の動作クロックの2倍以上のクロックで複数回行う、
請求項
1に記載の多重化回路装置。
【請求項3】
前記コピー手段は、前記判定手段においてエラーが判定されなくなるまで前記コピー処理を繰り返す、
請求項
1又は請求項
2に記載の多重化回路装置。
【請求項4】
前記部分チェック手段は、エラー無と判定された前記回路
の全体を巡回
してエラーチェックする、
請求項
1から請求項
3のいずれか一項に記載の多重化回路装置。
【請求項5】
前記部分チェック手段は、複数の前記回路それぞれに対応した部分チェック回路を有し、
エラー無しの前記回路に対応した前記部分チェック回路は、対応する前記回路
の全体を巡回
してエラーチェックし、
前記エラー発生回路に対応した前記部分チェック回路は、前記エラー発生回路における前記エラー推定箇所をチェックしてエラー発生箇所を特定する、
請求項
4に記載の多重化回路装置。
【請求項6】
前記回路における複数の前記チェック範囲は、前記回路における任意の回路ブロック又はステージに応じて決められる、
請求項1から請求項
5のいずれか一項に記載の多重化回路装置。
【請求項7】
前記中間チェック回路は、前記チェック範囲のチェックを、前記チェック範囲の巡回冗長検査、前記チェック範囲の誤り訂正符号、又は、前記チェック範囲の演算結果と他の前記回路における前記チェック範囲の演算結果との比較により行う、
請求項1から請求項
6のいずれか一項に記載の多重化回路装置。
【請求項8】
多重化回路装置が実行するエラー修復方法であって、
多重化された複数の回路それぞれにおける演算結果のうち一部の演算結果をチェック範囲とし、前記チェック範囲におけるエラーの発生をチェックする中間チェックステップと、
複数の前記回路それぞれの複数の異なる前記チェック範囲についての前記中間チェックステップによるチェック結果を取得し、取得した前記チェック結果に基づいて前記回路におけるエラーの有無
と、エラー有と判定された前記回路であるエラー発生回路においてエラーが発生した箇所を含むと推定されるエラー推定箇所とを判定する判定ステップと、
前記エラー発生回路における前記エラー推定箇所をチェックしてエラー発生箇所を特定する部分チェックステップと、
前記エラー発生回路のコンフィグレーションデータを復旧するエラー復旧ステップと、
前記部分チェックステップにおいて特定されたエラー発生箇所に対応した演算結果に、エラー無と判定された前記回路における演算結果をコピーするコピー処理を、前記エラー復旧ステップによる復旧後に行うコピーステップと、
を有するエラー修復方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、多重化回路装置及びエラー修復方法に関する。
【背景技術】
【0002】
FPGA(Field Programmable Gate Array)デバイスにおけるSEU(Signal Event Upset:ソフトエラー)の発生を抑えるためには、物理的に中性子線を遮る設備や環境を整える必要がある。しかしながら、そのような設備や環境が整っていない場所でデバイスが使用される場合もある。そこで、FPGAデバイスのメーカーは、SEUへ対応するために、SEUの発生を検出し、修復する回路を提供している。FPGAの信頼性は、メーカーにより提供されるこのような回路の使用や、ユーザ回路又は装置自体の多重化により確保されている。
【0003】
一方で、SEU耐性を向上させたプログラマブルデバイスがある(例えば、特許文献1参照)。このプログラマブルデバイスは、冗長された回路からの出力を比較してエラーの発生を検出すると、エラーが発生した回路をリコンフィグする。さらに、プログラマブルデバイスは、エラーが発生しなかった回路の内部状態を、リコンフィグされた回路に入力する。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
SEUの検出には一定の時間がかかる。近年は、FPGAデバイスの容量の増加に伴って、SEUの検出にかかる時間も増加傾向にある。検出にかかる時間が長いと、SEUが頻発した場合にエラーの検出及び修復が難しくなる。これは、装置の信頼性低下につながる。
【0006】
そこでこの発明は、上述の課題を解決することができる多重化回路装置及びエラー修復方法を提供することを目的としている。
【課題を解決するための手段】
【0007】
本発明の第1の態様によれば、多重化回路装置は、多重化された複数の回路それぞれにおける演算結果のうち一部の演算結果をチェック範囲とし、前記チェック範囲におけるエラーの発生をチェックする複数の中間チェック回路と、複数の前記中間チェック回路から複数の前記回路それぞれの複数の異なる前記チェック範囲についてのチェック結果を取得し、取得した前記チェック結果に基づいて前記回路におけるエラーの有無を判定する判定手段と、前記判定手段においてエラー有と判定された前記回路であるエラー発生回路のデータを修復する修復手段と、を備える。
【0008】
本発明の第2の態様によれば、エラー修復方法は、多重化された複数の回路それぞれにおける演算結果のうち一部の演算結果をチェック範囲とし、前記チェック範囲におけるエラーの発生をチェックする中間チェックステップと、複数の前記回路それぞれの複数の異なる前記チェック範囲についての前記中間チェックステップによるチェック結果を取得し、取得した前記チェック結果に基づいて前記回路におけるエラーの有無を判定する判定ステップと、前記判定ステップにおいてエラー有と判定された前記回路のデータを修復する修復ステップと、を有する。
【発明の効果】
【0009】
本発明によれば、回路におけるSEU発生から回復までの時間を短縮することが可能であるという効果が得られる。
【図面の簡単な説明】
【0010】
【
図1】本発明の一実施形態によるFPGAの構成を示す図である。
【
図2】同実施形態によるFPGAの動作を示すフロー図である。
【
図4】同実施形態による多重化回路装置の最小構成を示す図である。
【発明を実施するための形態】
【0011】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【0012】
本実施形態は、プログラマブルデバイスにおけるソフトエラー(SEU)の発生から、SEUの検出チェック、データの修復、正常なデータへの置換、データ復旧までの一連の復旧時間を短縮する。これにより、プログラマブルデバイスを実装したシステムの信頼性を向上させる。本実施形態では、プログラマブルデバイスにおけるSEUの発生から復旧までの短時間化を図るために、SEUの検出にかかる時間及びデータ復旧の時間に着目する。以下では、プログラマブルデバイスがFPGAである場合を例に説明する。
【0013】
本実施形態のFPGAのユーザ回路は、多重化回路を実装する。多重化回路は、多重化された機能回路を有する。機能回路は、各種演算や制御などの任意の機能を実現する回路である。本実施形態のFPGAは、デバイス全体のSEU検出と、各機能回路全体のSEU検出を行う。これらのSEU検出には、任意の技術を用いることができる。例えば、任意の既存のSEU検出技術を用いてもよい。
【0014】
本実施形態のFPGAは、多重化された各機能回路に、複数の中間チェック回路を設ける。FPGAは、上記のSEU検出に加え、中間チェック回路を用いて中間チェックを随時行う。中間チェックとは、機能回路内の演算結果データのうち、限定された範囲のデータについてのチェックである。一つの機能回路内の複数の中間チェック回路は、それぞれ異なる範囲のデータをチェック対象とする。
【0015】
FPGAは、各機能回路の各中間チェック回路におけるチェック結果を用いて、エラーの有無、エラーが発生した機能回路、及び、およそのエラー発生箇所を調べる。FPGAは、調べた結果に基づいて機能回路の部分チェックを行う。部分チェックとは、機能回路全体よりもチェック範囲を限定して行うエラーチェックである。エラーチェックには、CRC(Cyclic Redundancy Check:巡回冗長検査)、ECC(Error-Correcting Code:誤り訂正符号)などを用いることができる。チェック範囲を限定することにより、エラーを検出するためにかかる検出時間を短縮可能である。FPGAは、エラーを検出した場合、エラーが発生した機能回路のデータを修復する。具体的には、FPGAは、機能回路のCRAM(Configuration Random Access Memory)に記憶されているコンフィグレーションデータを修復する。この修復には、任意の技術を用いることができる。例えば、任意の既存のSEU対策回路を用いてもよい。
【0016】
本実施形態のFPGAは、機能回路の修復後、正常動作中の機能回路から演算結果のデータを部分的にコピーする。FPGAは、この部分的なコピーをエラーが発生しなくなるまで複数回行う。これにより、FPGAは、エラーが発生した機能回路の演算結果のデータを復旧する。よって、本実施形態のFPGAは、CRAM修復後に回路全体のリセットを行ってデータ復旧する必要がない。
【0017】
FPGAデバイスメーカにより提供されるSEU対策回路は、FPGAのコンフィグレーションメモリのエラー検出や修復が可能である。しかしながら、運用しながらユーザ回路のデータを復旧することは難しかった。従って、SEUが発生した場合には、回路のリセットを行っていた。このリセットのため、一時的に回路又は回路を搭載した装置そのものを停止させる必要があった。例えば、特許文献1の技術においても、エラーが発生した回路をリコンフィグした後、リコンフィグした回路にエラーが発生しなかった回路の内部状態を入力するまでは動作せずに停止する。
【0018】
本実施形態のFPGAは、運用中に回路全体及び多重化された各機能回路全体のチェックを行いながら中間チェックを複数回行う。そして、本実施形態のFPGAは、SEUが発生した場合でも、正常動作している機能回路を停止することなく、エラーが発生した機能回路へ正常な機能回路のデータをコピーする。よって、本実施形態のFPGAは、動作を停止させることなく、SEUの復旧が可能である。
【0019】
図1は、本発明の一実施形態によるFPGA1の構成を示す図である。同図では、本実施形態と関係する構成のみを抽出して示してある。FPGA1は、多重化回路装置の一例である。FPGA1は、ユーザ回路2と、エラー判定回路6と、部分チェック回路7-1~7-N(Nは3以上の整数)と、ソフトエラー対策回路8と、データコピー回路9とを有する。部分チェック回路7-1~7-Nを総称する場合、又は、いずれかを特定しない場合、部分チェック回路7と記載する。
【0020】
ユーザ回路2は、機能回路3-1~3-Nと、多数決回路5とを有する。機能回路3-1~3-Nを総称する場合、又は、いずれかを特定しない場合、機能回路3と記載する。機能回路3-1~3-Nは、同じ回路である。機能回路3-1~3-Nと、多数決回路5とにより多重化回路が構成される。
【0021】
機能回路3は、各種演算や制御などの任意の機能を実現する回路である。機能回路3の機能を実現するためのコンフィグレーションデータは、CRAMに記憶される。CRAMに発生したSEUを早く検出するため、機能回路3は、K個(Kは2以上の整数)の中間チェック回路4を有する。中間チェック回路4は、機能回路3内の任意の回路ブロック毎又はステージ毎に設けられる。機能回路3-n(nは1以上N以下の整数)におけるk番目(kは1以上K以下の整数)の回路ブロック又はステージに対応した中間チェック回路4を、中間チェック回路4-n-kと記載する。中間チェック回路4-n-kは、機能回路3-nが行う一連の演算における中間の演算結果をチェックする中間チェックを行う。具体的には、中間チェック回路4-n-kは、中間の演算結果のパリティを行う。あるいは、中間チェック回路4-n-kは、機能回路3-nの中間の演算結果と、他の機能回路3-n’(n’≠n、n’は1以上N以下の整数)の対応する中間の演算結果との比較によりエラーを検出する。
【0022】
多数決回路5は、機能回路3-1~3-Nそれぞれの演算結果の中から正しい演算結果を多数決で決定し、決定した演算結果を出力する。
【0023】
エラー判定回路6は、各機能回路3の各中間チェック回路4における中間チェック結果に基づいて、エラーの有無、エラーが発生した機能回路3、及び、エラー推定箇所を判定する。エラー推定箇所は、およそのエラー発生箇所である。例えば、エラー推定箇所は、エラーが発生した箇所を含むと推定される範囲である。エラー判定回路6は、例えば、中間チェック回路4-n-kがエラーを検出した場合、k番目の回路ブロック又はステージの演算にエラーが発生したと判定する。つまり、エラー推定箇所は、中間チェック回路4-n-kが中間チェックの対象とした演算結果を得るための演算を行った箇所である。エラー判定回路6は、中間チェック回路4-n-kの中間チェック結果がエラーである場合、部分チェック回路7-nに、エラー有と、機能回路3-nのエラーと、機能回路3-nにおけるエラー推定箇所とを報告し、他の部分チェック回路7-n’にエラー無を報告する。さらに、エラー判定回路6は、データコピー回路9に、エラー有と、機能回路3-nのエラーと、機能回路3-nにおけるエラー推定箇所とを報告する。エラー判定回路6は、いずれの中間チェック回路4においてもエラーが検出されなかった場合、部分チェック回路7-1~7-N及びデータコピー回路9にエラー無を報告する。
【0024】
部分チェック回路7は、各機能回路3に対して1つずつ実装される。部分チェック回路7-nは、機能回路3-nに対応する。各部分チェック回路7-nは、通常時は機能回路3-nのCRC又はECC(以下、CRC/ECCと記載)を常に巡回してチェックする。部分チェック回路7-nは、エラー判定回路6から中間チェックにおいてエラー有の報告を受けた場合、通常時の巡回を中止し、機能回路3-nのCRC/ECC部分チェックを開始する。CRC/ECC部分チェックの対象は、機能回路3-nにおけるエラー推定箇所の部分である。中間チェック回路4-nは、CRC/ECCエラーを検出すると、ソフトエラー対策回路8にエラーが発生したビット位置を報告する。
【0025】
ソフトエラー対策回路8は、通常時はデバイス全体のCRC/ECCチェックを実施し、エラー検出時には、エラーが検出されたビット位置のビットの修復を行う。ソフトエラー対策回路8は、部分チェック回路7からエラーが発生した機能回路3のビット位置の報告を受けた場合も同様に、報告されたビット位置のビットの修復を行う。ソフトエラー対策回路8は、置換又は訂正により、CRAMに記憶されているコンフィギュレーションデータの修復を行う。置換の場合、ソフトエラー対策回路8は、外部のメモリ10に記憶されているビットストリームを読み出し、エラーが検出された位置のビットに設定する。訂正の場合、ソフトエラー対策回路8は、ECCによりエラーが発生したビットを修復する。ソフトエラー対策回路8は、修復が完了すると、復旧完了をデータコピー回路9に報告する。なお、ソフトエラー対策回路8には、CRAMに記憶されているコンフィギュレーションデータを修復する任意のSEU対策回路を利用可能である。
【0026】
データコピー回路9は、エラー判定回路6から機能回路3のエラーの有無、エラーが発生した機能回路3、及び、エラー推定箇所の報告を受ける。さらに、データコピー回路9は、ソフトエラー対策回路8から復旧完了の報告を受けると、演算結果の部分コピーを行う。すなわち、データコピー回路9は、エラーが発生していない機能回路3-n’からエラー推定箇所に対応するレジスタに記憶されている演算結果のデータをコピーし、エラーが発生した機能回路3-nの対応するレジスタに設定する。データコピー回路9は、この部分コピーを、ユーザ回路2の動作クロックの立下り、又は、2倍のクロックで行う。データコピー回路9は、エラー判定回路6からのエラー報告が無くなるまで、複数回部分コピーを繰返す。データコピー回路9は、エラー判定回路6からのエラー報告が無くなったところで、修復した機能回路3のデータの切り戻しが完了し、復旧したとみなして部分コピーを停止する。なお、データコピー回路9は、各機能回路3から多数決回路5へ出力された演算結果すべてが一致した場合に、エラー報告が無くなったと判定してもよい。
【0027】
図2は、
図1のFPGA1の動作を示すフロー図である。FPGA1は、ユーザ回路2の動作中に、
図2に示す動作を行う。なお、機能回路3-nを機能回路#nとも記載する。
【0028】
ソフトエラー対策回路8は、FPGA1のデバイス全体のCRC/ECCチェックを繰り返し実施する(ステップS101)。一方で、ユーザ回路2は、各機能回路3の各中間チェック回路4によって、ブロック又はステージごとに演算結果の中間チェックを行う。全て又は一部の複数の中間チェック回路4は、並行して中間チェックを行う。エラー判定回路6は、各中間チェック回路4における中間チェックの演算結果を監視し、エラーの発生有無を判定する(ステップS102)。
【0029】
エラー判定回路6が、中間チェックにおいてエラー無と判定した場合(ステップS102;NO)、部分チェック回路7-1~7-N及びデータコピー回路9にエラー無を報告する。部分チェック回路7-1~7-Nはそれぞれ、機能回路3-1~3-NのCRC/ECCチェックを繰返し実施する(ステップS103-1~S103-N)。すなわち、各部分チェック回路7-nは、機能回路3-n内を巡回してCRC/ECCチェックを行う。
【0030】
一方、エラー判定回路6は、いずれかの機能回路3の中間チェック回路4においてソフトエラーの発生有と判定した場合(ステップS102;YES)、ステップS104の処理を行う。すなわち、エラー判定回路6は、中間チェックの結果がエラーであった中間チェック回路4-n-kに基づいて、機能回路3-nにおいてエラーが発生したおおよその箇所を特定する(ステップS104)。エラー判定回路6は、部分チェック回路7-n及びデータコピー回路9に、エラー発生報告を出力する(ステップS105)。エラー判定回路6は、エラー発生報告により、エラーの発生と、エラーが検出された機能回路3-n又は中間チェック回路4-n-kと、エラーが発生したおおよその箇所を示すエラー推定箇所とを通知する。また、エラー判定回路6は、部分チェック回路7-n以外の部分チェック回路7-n’にエラー無を報告する。部分チェック回路7-n’は、エラー無しの報告を受けると、通常時の巡回によるCRC/ECCのエラーチェックを継続する。
【0031】
部分チェック回路7-nは、エラー発生報告を受けると、通常時の巡回によるCRC/ECCのエラーチェックを中止し、機能回路3-nのエラー推定箇所に対応した一部を対象としてCRC/ECC部分チェックを実施する(ステップS106-1~S106-N)。部分チェック回路7-nは、CRC/ECCエラーを検出すると、ソフトエラー対策回路8にエラーが検出されたビット位置を報告する。
【0032】
ソフトエラー対策回路8は、ステップS101におけるCRC/ECCチェック、ステップS103-1~ステップS103-NにおけるCRC/ECCチェック、又は、ステップS106-1~ステップS106-NにおけるCRC/ECC部分チェックにおいてソフトエラーが検出されたか否かを判断する(ステップS107)。ソフトエラー対策回路8は、いずれにもエラーが検出されていないと判断した場合(ステップS107:NO)、最初の処理に戻る。
【0033】
一方、ソフトエラー対策回路8は、いずれかにおいてソフトエラーが検出されたと判断した場合(ステップS107:YES)、ユーザが指示した修復方法を判断する(ステップS108)。ユーザの指示は、予めFPGA1に設定される。ソフトエラー対策回路8は、ユーザの指示がCRAM置換である場合、エラーが発生した機能回路3-nのCRAMのコンフィグレーションデータを、メモリ10に記憶されているビットストリームの対応するデータにより置換する(ステップS109)。ソフトエラー対策回路8は、置換後、置換完了報告をデータコピー回路9に出力する。ソフトエラー対策回路8は、ユーザの指示がエラービットの訂正である場合、機能回路3-nのCRAMのエラーが発生したビット位置のデータを、機能回路3-n内のデータを用いてECCなどにより訂正する(ステップS110)。訂正後、ソフトエラー対策回路8は、修復完了報告をデータコピー回路9に出力する。
【0034】
データコピー回路9は、エラー判定回路6からエラーの有無と、エラー有の場合は、エラーが検出された機能回路3-n又は中間チェック回路4-n-k、及び、エラー推定箇所の報告を受ける。さらに、データコピー回路9は、ソフトエラー対策回路8から、置換完了報告又は修復完了報告を受けると、エラーが発生していない動作中の機能回路3-n’から一部の演算結果のデータを機能回路3-nにコピーする部分コピーを行う(ステップS111)。このとき、データコピー回路9は、エラー判定回路6から報告を受けたエラー推定箇所に対応する範囲のデータを、エラーが発生していない稼働中の機能回路3-n’からコピーする。データコピー回路9は、エラーが解消するまで、ユーザ回路2の動作クロックの立下り、もしくは2倍以上のクロックで、この部分コピーを複数回繰り返す(ステップS112)。データコピー回路9は、多数決回路5から各機能回路3の演算結果が全て一致した旨の報告を受けた場合にエラー解消と判定する。あるいは、データコピー回路9は、エラー判定回路6においてエラー無と判定された場合に、エラー解消と判定する。このように、データコピー回路9は、ステップS111における部分コピーを複数回繰返し、エラーの報告が無くなったかどうかに基づいて復旧が終了したか否かを判定する。データコピー回路9は、復旧終了と判定すると、エラーが発生した機能回路3-nへのデータのコピーを終了する。
【0035】
図3は、本実施形態の効果を説明するための図である。
図3は、ソフトエラー発生から検出、復旧までの一連動作に係る時間の比較を示す。
図3では、FPGAの機能回路が3重化されており、エラー訂正方法が修復である場合を例に示す。本実施形態を適用していないFPGA(以下、関連FPGAと記載)は、3重化された回路全体を巡回してエラーチェックを行う。関連FPGAは、エラーを検出すると、エラーを修復し、修復箇所のデータを他の機能回路のデータと一致させるために論理全体をリセットする。関連FPGAは、論理全体のリセット前までは3重化された回路のうち一つがエラーのために2重化で動作している。そしてリセットの間、関連FPGAの多重化回路の論理又は関連FPGAを用いたシステムは停止し、リセット後に3重化が復活する。
【0036】
一方、本実施形態のFPGA1は、回路全体や各機能回路3の巡回チェックを行い、さらに、中間チェック回路4がCRC/ECCの部分チェックを行う。そのため、FPGA1は、例えば、一つ目の機能回路3-1を巡回してチェックしている途中で、中間チェック回路4-1-4においてエラーを検出することがある。本実施形態のFPGA1は、機能回路3-1のコンフィグレーションデータを修復し、修復後に、2重化で動作を継続している機能回路3-2及び3-3の演算結果の一部である部分データをコピーする。部分データコピーを行っている間も、機能回路3-2及び3-3は動作を継続するため、FPGA1は、部分コピーが終了するまで2重化で動作し、部分コピーの完了後に3重化が復活する。よって、本実施形態のFPGA1は、関連FPGAと比較して、2重化運用時間及び停止時間を削減することができる。
【0037】
本実施形態によれば、コンフィグレーションデバイスは、多重化された回路のエラー検出時間を短縮し、さらに、演算結果のデータ復旧を部分コピーにより行う。よって、従来のコンフィグレーションデバイスよりも復旧までの時間が大幅に短縮される。さらには、回路やシステムのリセットも不要であるため、システムの信頼性向上に貢献する。
【0038】
CRAMのソフトエラー発生率はテクノロジーの微細化やFinFFT(Fin Field-Effect Transistor)を採用することで低下がみられる。その一方で、FPGAデバイスのCRAM容量が増加しているため、結果的にソフトエラー発生率が上昇する傾向にある。様々なSEU対策があるものの、中性子線が当たる確率が多い環境の装置、中性子線が当たる確率が低い環境でも偶然多発するケースを考慮した装置、あるいは、無停止系のミッションクリティカルな装置では、対策が必要である。本実施形態のFPGAは、このような信頼性や無停止を要求されるコンピュータ、サーバ、IoT機器、車載機器類等の情報機器や、中性子線の多い環境での動作を要求される情報機器に特に有用である。なお、これらは例示に過ぎず、本実施形態のFPGAの適用はこれらに制限されない。
【0039】
図4は、本発明の実施形態による多重化回路装置100の最小構成を示す図である。多重化回路装置100は、N個(Nは3以上の整数)の多重化された複数の回路110と、判定回路130と、修復回路140とを有する。N個の回路110をそれぞれ、回路110-1~110-Nと記載する。各回路110は、K個(Kは2以上の整数)の中間チェック回路120を有する。回路110-n(nは1以上N以下の整数)が有するK個の中間チェック回路120を、中間チェック回路120-n-1~120-n-Kと記載する。中間チェック回路120-n-k(kは1以上N以下の整数)は、回路110-nにおける演算結果のうち一部の演算結果をチェック範囲とし、チェック範囲におけるエラーの発生をチェックする。判定回路130は、複数の中間チェック回路120から複数の回路110それぞれの複数の異なるチェック範囲についてのチェック結果を取得する。判定回路130は、取得したチェック結果に基づいて回路110におけるエラーの有無を判定する。修復回路140は、判定回路130においてエラー有と判定された回路110のデータを修復する。
【0040】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【0041】
(付記1)多重化された複数の回路それぞれにおける演算結果のうち一部の演算結果をチェック範囲とし、前記チェック範囲におけるエラーの発生をチェックする複数の中間チェック回路と、
複数の前記中間チェック回路から複数の前記回路それぞれの複数の異なる前記チェック範囲についてのチェック結果を取得し、取得した前記チェック結果に基づいて前記回路におけるエラーの有無を判定する判定手段と、
前記判定手段においてエラー有と判定された前記回路であるエラー発生回路のデータを修復する修復手段と、
を備える多重化回路装置。
【0042】
(付記2)
前記修復手段は、前記エラー発生回路のコンフィグレーションデータを復旧するエラー復旧手段を有する、
付記1に記載の多重化回路装置。
【0043】
(付記3)エラー復旧手段は、外部のメモリに設定されているデータを用いて、又は、誤り訂正符号により、前記エラー発生回路のコンフィグレーションデータを修復する、
付記2に記載の多重化回路装置。
【0044】
(付記4)前記判定手段は、取得した前記チェック結果に基づいて、複数の前記回路のうち前記エラー発生回路と、前記エラー発生回路においてエラーが発生した箇所を含むと推定されるエラー推定箇所とを判定し、
前記多重化回路装置は、前記エラー発生回路における前記エラー推定箇所をチェックしてエラー発生箇所を特定する部分チェック手段をさらに備え、
前記修復手段は、前記部分チェック手段が特定したエラー発生箇所に対応した演算結果に、エラー無と判定された前記回路における演算結果をコピーするコピー処理を、前記エラー復旧手段による復旧後に行うコピー手段をさらに有する、
付記2又は付記3に記載の多重化回路装置。
【0045】
(付記5)前記コピー手段は、前記コピー処理を、前記回路の動作クロックの立下り、又は、前記回路の動作クロックの2倍以上のクロックで複数回行う、
付記4に記載の多重化回路装置。
【0046】
(付記6)前記コピー手段は、前記判定手段においてエラーが判定されなくなるまで前記コピー処理を繰り返す、
付記4又は付記5に記載の多重化回路装置。
【0047】
(付記7)前記部分チェック手段は、エラー無と判定された前記回路を巡回チェックする、
付記4から付記6のいずれかに記載の多重化回路装置。
【0048】
(付記8)前記部分チェック手段は、複数の前記回路それぞれに対応した部分チェック回路を有し、
エラー無しの前記回路に対応した前記部分チェック回路は、対応する前記回路を巡回チェックし、
前記エラー発生回路に対応した前記部分チェック回路は、前記エラー発生回路における前記エラー推定箇所をチェックしてエラー発生箇所を特定する、
付記7に記載の多重化回路装置。
【0049】
(付記9)前記回路における複数の前記チェック範囲は、前記回路における任意の回路ブロック又はステージに応じて決められる、
付記1から付記8のいずれかに記載の多重化回路装置。
【0050】
(付記10)前記中間チェック回路は、前記チェック範囲のチェックを、前記チェック範囲の巡回冗長検査、前記チェック範囲の誤り訂正符号、又は、前記チェック範囲の演算結果と他の前記回路における前記チェック範囲の演算結果との比較により行う、
付記1から付記9のいずれかに記載の多重化回路装置。
【0051】
(付記11)複数の前記回路それぞれの演算結果から多数決により選択した前記演算結果を出力する多数決回路をさらに備える、
付記1から付記10のいずれかに記載の多重化回路装置。
【0052】
(付記12)複数の前記回路及び前記多数決回路は、ユーザ回路に実装される、
付記11のいずれかに記載の多重化回路装置。
【0053】
(付記13)前記多重化回路装置は、FPGA(Field Programmable Gate Array)である、
付記1から付記12のいずれかに記載の多重化回路装置。
【0054】
(付記14)多重化された複数の回路それぞれにおける演算結果のうち一部の演算結果をチェック範囲とし、前記チェック範囲におけるエラーの発生をチェックする中間チェックステップと、
複数の前記回路それぞれの複数の異なる前記チェック範囲についての前記中間チェックステップによるチェック結果を取得し、取得した前記チェック結果に基づいて前記回路におけるエラーの有無を判定する判定ステップと、
前記判定ステップにおいてエラー有と判定された前記回路のデータを修復する修復ステップと、
を有するエラー修復方法。
【0055】
以上、図面を参照して本発明の実施の形態を説明してきたが、上記実施の形態は本発明の例示に過ぎず、本発明が上記実施の形態に限定されるものではないことは明らかである。したがって、本発明の技術思想及び範囲を逸脱しない範囲で構成要素の追加、省略、置換、その他の変更を行ってもよい。
【符号の説明】
【0056】
1…FPGA、2…ユーザ回路、3-1~3-N…機能回路、4-1-1~4-N-K…中間チェック回路、5…多数決回路、6…エラー判定回路、7-1~7-N…部分チェック回路、8…ソフトエラー対策回路、9…データコピー回路、10…メモリ、100…多重化回路装置、110-1~110-N…回路、120-1-1~120-N-K…中間チェック回路、130…判定回路、140…修復回路