(57)【要約】【課題】正常時に冗長性を有する複数の演算部に格納されたデータの再同期化に要する時間を短縮し得る格納装置等の提供。【解決手段】格納装置は、複数のシフトレジスタの各々に含まれる所定のレジスタから連続する所定の数のレジスタに同時に保持されるデータ列の種類の単複を検出する検出部と、前記種類が二以上であると検出された場合に、前記同時に保持するシフトレジスタが最多の前記種類の前記データ列と等しいものを、前記複数のシフトレジスタのうち前記最多の前記種類の前記データ列を前記同時に保持しない前記シフトレジスタに格納させる処理部とを備える。【選択図】      図１
2020064382.tif 000002
【特許請求の範囲】
【請求項１】
複数のシフトレジスタの各々に含まれる所定のレジスタから連続する所定の数のレジスタに同時に保持されるデータ列の種類の単複を検出する検出部と、
前記種類が二以上であると検出された場合に、前記同時に保持するシフトレジスタが最多の前記種類の前記データ列と等しいものを、前記複数のシフトレジスタのうち前記最多の前記種類の前記データ列を前記同時に保持しない前記シフトレジスタに格納させる処理部と
を備える格納装置。
【請求項２】
前記複数のシフトレジスタは正常時に冗長構成を有する、請求項１に記載された格納装置。
【請求項３】
前記保持情報が所定の演算に係る途中演算の結果であり、前記複数の前記シフトレジスタの各々は、正常時においては入力データに対して互いに同等の前記演算による結果を出力し得る、前記複数の演算部の各々に含まれる、請求項２に記載された格納装置。
【請求項４】
前記演算部は、前記演算を行う第一モードと、前記シフトレジスタを構成する各レジスタを所定の序列に従い前記演算を行う演算回路を介さずに直列に接続する第二モードとを前記処理部からの指示信号により切り替え、前記処理部は、前記演算部の各々へ、その前記演算部を前記第二モードにさせる第二モード化信号を送付した後に、前記格納を行わせる、請求項３に記載された格納装置。
【請求項５】
前記演算部は、前記第二モード化信号により、入力配線を、前記入力データを入力するためのものから、前記同時に保持するシフトレジスタが最多の前記種類の前記データ列を保持する最多数シフトレジスタから出力される前記データ列と同等の前記データ列を入力するためのものへ切り替える、初段入力切替部をさらに備え、前記処理部は、前記送付の対象に、前記初段入力切替部への前記第二モード化信号を含める、請求項４に記載された格納装置。
【請求項６】
前記処理部は前記入力データの前記演算部の各々への入力を停止する入力停止部をさらに備え、前記処理部は、前記入力停止部により前記停止を行った後に、前記格納を行わせる、請求項５に記載された格納装置。
【請求項７】
前記演算部は、前記各レジスタの各々の前段に、その前記各レジスタへの入力を、前段の前記各レジスタからのものと、前記前段の前記各レジスタから前記途中演算を行う途中演算部を介してのものとを切り替える後段入力切替部をさらに備え、前記処理部は、前記送付の対象に、前記後段入力切替部への前記第二モード化信号を含める、請求項４乃至請求項６のうちのいずれか一に記載された格納装置。
【請求項８】
前記演算部の前記途中演算を行う部分は、所定の論理素子又はその組合せからなる回路を含む、請求項３乃至請求項７のうちのいずれか一に記載された格納装置。
【請求項９】
前記処理部は、前記最多数シフトレジスタから出力される、前記演算部から出力されるデータである第一出力データ、に等しいデータである第二出力データの出力先を外部と前記演算部の各々とで切り替える出力切替部を備え、前記出力切替部により前記出力先を前記演算部の各々に切り替えた後に、前記格納を行わせる、請求項３乃至請求項８のうちのいずれか一に記載された格納装置。
【請求項１０】
複数のシフトレジスタの各々に含まれる所定のレジスタから連続する所定の数のレジスタに同時に保持されるデータ列の種類の単複を検出し、
前記種類が二以上であると検出された場合に、前記同時に保持するシフトレジスタが最多の前記種類の前記データ列と等しいものを、前記複数のシフトレジスタのうち前記最多の前記種類の前記データ列を前記同時に保持しない前記シフトレジスタに格納させる
格納方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算装置における冗長性の縮退の回復方法に関する。
【背景技術】
【０００２】
ＦＰＧＡ（ｆｉｅｌｄ−ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）などのプログラマブルデバイスにおいて、放射線によるソフトエラー（特許文献１参照）の対策として回路を冗長化する方法が知られている。
【０００３】
例えば、特許文献２は、同等の構成を有する三つ以上の論理デバイスからの出力データのうち多数のものをボータ論理回路により出力することによりシングル・イベント故障を許容し得る、冗長性を持たせたシステムを開示する。
【０００４】
しかしながら、特許文献２が開示するシステムにおいて冗長構成の一つについてソフトエラーが発生すると冗長性が縮退し、場合によっては冗長性が失われる。そのため、使用を中止した回路の迅速な復旧が求められる。
【０００５】
ここで、一般的なＦＰＧＡは、ＣＲＡＭに格納する構成情報（コンフィグレーションデータ）に異常を検出すると、自動的に、各素子間の配線を訂正又は再構成（リコンフィグレーション）を行う機能を備えている。ここで、ＣＲＡＭは、ｃｏｎｆｉｇｕｒａｔｉｏｎ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙの略である。ＣＲＡＭにソフトエラーが発生した場合にも、構成情報に異常が検出された場合には、当該機能により、ＦＰＧＡは、前記訂正又は再構成（以下、「訂正等」という。）を実行する。
【０００６】
ここで、ＦＰＧＡは、当該訂正等を行うために異常が発生したモジュールへのデータの入力を止める等の措置を行う。ここで、モジュールは、ＦＰＧＡが備える、前記冗長構成を構成する複数の部分の各々をいうこととする。
【０００７】
ＦＰＧＡは、構成情報が異常であってもＣＲＡＭが保持する構成情報を実構成に反映する。ＦＰＧＡが、構成情報において異常が発生したモジュールへのデータの入力を止める措置を行う理由は、誤った構成情報が実構成に反映されたモジュールが、誤ったデータを出力しないようにするためである。
【０００８】
そのモジュールへのデータの送付が停止している間も、他のモジュールへはデータが送付され、当該他のモジュールは所定の演算を行い、演算後のデータを出力する。そのため、当該モジュールの備えるレジスタに格納されるデータは、他のモジュールのレジスタが格納するデータとの間で同期が失われている。ここで、「同期」は、格納されるデータの演算による推移についての順序が設定されたレジスタからなるレジスタ群に格納されたデータ列が互いに等しいことをいう。
【０００９】
また、ＦＰＧＡにおいて、ＣＲＡＭ以外の部分においてソフトエラーが発生し、同期が失われることもある。
【００１０】
上記場合は、いずれも、ＦＰＧＡの冗長性が縮退している。そのため、訂正等が行われたＦＰＧＡにおいて、再同期化を行うことが必要である。
【００１１】
ここで、特許文献３は、装置内の複数のレジスタ各々を縦続接続して構成され、診断装置からスキャンイン及びスキャンアウト自在なスキャンパスを有する情報処理装置を開示する。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２０１３−０４６１８１号公報
【特許文献２】特表２００９−５３４７３８号公報
【特許文献３】特開平０３−０６８０３８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
ここで、一般的に、冗長性を有する回路への入力データの再同期化は、論理回路の動作を中断した状態で行われる（特許文献２参照）。そのため、再同期化には、ある程度の動作停止時間を要するという課題がある。
【００１４】
本発明は、シフトレジスタに格納されたデータの再同期化に要する時間を短縮し得る格納装置等の提供を目的とする。
【課題を解決するための手段】
【００１５】
本発明の格納装置は、複数のシフトレジスタの各々に含まれる所定のレジスタから連続する所定の数のレジスタに同時に保持されるデータ列の種類の単複を検出する検出部と、前記種類が二以上であると検出された場合に、前記同時に保持するシフトレジスタが最多の前記種類の前記データ列と等しいものを、前記複数のシフトレジスタのうち前記最多の前記種類の前記データ列を前記同時に保持しない前記シフトレジスタに格納させる処理部とを備える。
【発明の効果】
【００１６】
本発明の格納装置等は、シフトレジスタに格納されたデータの再同期化に要する時間を短縮し得る。
【図面の簡単な説明】
【００１７】
【図１】本実施形態のプログラマブルデバイスの構成例を表す概念図である。
【図２】演算部の構成例を表す概念図である。
【図３】多数決部の動作例を表すイメージ図である。
【図４】再同期化モードの各レジスタの動作例を表すイメージ図である。
【図５】ＣＲＡＭにおいてソフトエラーが発生した場合のＦＰＧＡの各構成が行う動作を表すシーケンスチャートである。
【図６】ＦＰＧＡの各構成が行う再同期化動作を表すシーケンスチャートである。
【図７】モジュールにおいてソフトエラーが発生した場合のＦＰＧＡの各構成が行う動作を表すシーケンスチャートである。
【図８】処理部が行う再同期化処理の処理フロー例を表す概念図である。
【図９】実施形態の格納装置の最小限の構成を表すブロック図である。
【発明を実施するための形態】
【００１８】
本実施形態のプログラマブルデバイスは、冗長性を有する複数の演算部のレジスタ群が格納するデータ列の同期が喪失したことを検出した場合に、まず、各演算部が備える各レジスタを所定の順序で直列に接続させる。ここで、「同期」は、格納されるデータの推移についての順序が設定されたレジスタからなるレジスタ群（シフトレジスタ）に格納されたデータ列が互いに等しいことをいう。また、同期の喪失は、プログラマブルデバイスが行う再構成（リコンフィグレーション）や前記演算部における前述のソフトエラー等により生じるものである。
【００１９】
次に、前記プログラマブルデバイスは、まだ同期が失われていない最多数の演算部のレジスタ群が格納するデータ列に等しいデータ列を出力する多数決部から出力されるデータ列を各演算部のレジスタ群に、クロックタイミング（ＣＴ）に順次格納させる。そのため、前記最多数の演算部のレジスタ群に、そのレジスタ群が格納していたデータ列に等しいデータ列が格納されたＣＴになると、前記同期が失われた演算部のレジスタ群にも、同じデータ列が格納される。つまり、当該ＣＴでは、すべての演算部の同期が回復した再同期状態にある。
【００２０】
前記再同期を行うのに要する時間は、例えば、最後段の前記レジスタに格納されていたデータが、前記多数決部及び前記レジスタ群を順次移行し、前記最終段の前記レジスタに到達するために要する時間程度の短いものである。通常の演算結果の出力が行われない当該期間は、特許文献２が開示する一般的な再同期化に要する期間と比較して格段に短いものである。そのため、前記プログラマブルデバイスは、正常時に冗長性を有する複数の演算部に格納されたデータの再同期化に要する時間を短縮し得る。
［構成と動作］
図１は、本実施形態のプログラマブルデバイスの例であるＦＰＧＡ１０１の構成を表す概念図である。ここで、ＦＰＧＡはｆｉｅｌｄ−ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙの略である。
【００２１】
ＦＰＧＡ１０１は、モジュール１１１乃至１１ｎと、多数決部２１４と、処理部２１５と記憶部２１６とを備える。
【００２２】
モジュール１１１乃至１１ｎは、例えば、互いに同等の構成を有するｎ個のモジュールである。
【００２３】
各モジュールは、対応する演算部（演算部３１１乃至３１ｎのうちのいずれか）を備える。各演算部は、正常時には互いに同等の出力を行い得る。
【００２４】
各演算部は、所定の演算を行うために論理素子を組み合わせた組合せ回路、前記組合せ回路内における所定の前記論理素子間の接続を切り替えるスイッチ類及び各組合せ回路の前段及び後段に設けられたレジスタ等からなる素子群を備える。当該素子群の各素子は、共通のクロック信号に同期した動作を行う。そして、各モジュールは、前記素子群の所定の素子間の接続を、処理部２１５から送付される構成指示情報により、切り替えることにより、入力情報について所定の演算を行う演算回路を構成し又は修復する。当該動作は、ＦＰＧＡが行う一般的な動作なので、ここでは、詳細説明は省略される。
【００２５】
各演算部は、処理部２１５により、前記組合せ回路の動作を確認し得る構成になっている。当該構成は一般的なＦＰＧＡが備えるものである。当該構成の具体例は、図２を参照して後述される。
【００２６】
各演算部は、処理部２１５からの指示信号により、二つのモードを切り替える。
【００２７】
第一のモード（通常モード）は、通常の演算処理を行うためのものである。通常モードにおいては、各レジスタ間には、前述の組合せ回路が挿入されている。通常モードにおいては、一つのレジスタが保持するデータは、１クロックタイミングで、組合せ回路に送られ、その後に次段のレジスタに格納される。ここで、クロックタイミングは、例えば、クロック信号の立ち上がり及び立下りのうちのいずれか一方のタイミングである。以下、クロックタイミングを「ＣＴ」と表記する場合がある。
【００２８】
第二のモード（再同期化モード）は、処理部２１５からの指示信号により、再同期化を行うモードである。再同期化モードにおいては、前記素子群に含まれるすべてのレジスタは、予め定められた所定の順序に直列に接続される。それにより、各モジュールに入力されたデータは、クロック周期の経過に伴い、直列に接続されたレジスタ群の各レジスタを逐次移動し、最終的には出力される。
【００２９】
多数決部２１４は、例えば、背景技術の項において説明したボータ論理回路である。
【００３０】
多数決部２１４は、各ＣＴにおいて各モジュールから出力された出力データのうち最も数が多いデータを処理部２１５の端子Ｌへ出力する。多数決部２１４は、また、各ＣＴにおいて各モジュールから出力された出力データが他のモジュールと一致していないモジュールがあることを表す不一致情報を、処理部２１５の端子Ｍへ出力する。
【００３１】
処理部２１５は、記憶部２１６が備えるＣＲＡＭ２１７に格納された構成情報（コンフィグレーションデータ）を監視する。ここで、ＣＲＡＭは、ｃｏｎｆｉｇｕｒａｔｉｏｎ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙの略である。そして、処理部２１５は、ＣＲＡＭ２１７が保持する、各モジュールについてのそのモジュールが備える前記素子群の各素子間の配線の構成情報に異常を検出したとする。その場合、処理部２１５は、当該構成情報において当該異常が発生していることを検出したモジュールへのデータの送付を止める。そして、処理部２１５は、そのモジュールの前記配線の訂正又は再構成（以下、「訂正等」という。）を指示する指示情報を、そのモジュールに送付する。処理部２１５は、当該送付を、端子群Ｅ，Ｆ及びＧのうちそのモジュールに接続されたものから信号線を介して行う。当該指示情報の送付を受けたモジュールは、その指示情報により、前記訂正等を行う。
【００３２】
処理部２１５は、また、各モジュールの前記素子群が備える各レジスタの保持するデータの再同期化を行うかについての判定を行う。ここで、「同期」は、格納されるデータの演算による推移についての順序が設定されたレジスタからなるレジスタ群に格納されたデータ列が互いに等しいことをいう。また、「再同期化」は、喪失された同期を回復することをいう。
【００３３】
処理部２１５が、前記再同期化を行うことを判定する場合には、以下の二つの場合が含まれる。
【００３４】
第一の場合は、処理部２１５が、前記訂正等が完了したことを判定した場合である。前述のように、処理部２１５は、あるモジュールについて前記訂正等を行う場合には、そのモジュールへのデータの送付を止める。そのモジュールへのデータの送付が停止している間も、他のモジュールへはデータが送付され、当該他のモジュールは所定の演算を行い、演算後のデータを出力する。そのため、前記訂正等が終了した時点において、そのモジュールの前記データ列は、他のモジュールの前記データ列と異なっている。すなわち、前記訂正等の終了は、前記再同期化が必要であることを意味する。
【００３５】
第二の場合は、処理部２１５が、多数決部２１４から前記不一致情報の入力を受けた場合である。多数決部２１４が前記不一致情報出力する場合は、入力データの同期が失われたことを意味する。そのため、前記再同期化が必要になる。
【００３６】
処理部２１５は前記再同期化を行うことを決定した場合には、すべてのモジュールへの通常データの入力を停止する。ここで、「通常データ」は、ＦＰＧＡに、設定された通常の演算処理を行わせるために、入力されるデータをいうこととする。前記通常データは、処理部２１５が、端子Ｉから、各演算部へ入力される。
【００３７】
処理部２１５が前記再同期化の際に通常データの入力を止めるのは、再同期化中に入力された通常データが失われるのを防ぐためである。処理部２１５は、再同期化中に入力端子Ｊから入力されたデータを、例えば、図示しないバッファ等に格納して保持する。
【００３８】
そして、処理部２１５は、各モジュールの各演算部に、前記通常モードを前記再同期化モードに切り替えさせる指示情報を送付する。これにより、各演算部に含まれる各レジスタは、予め定められた順序に直列に接続される。
【００３９】
そして、処理部２１５は、多数決部２１４から端子Ｌに送付されたデータを、端子Ｈから、各演算部に入力させる。処理部２１５は、当該動作を、端子Ｌの接続先を、出力端子Ｋから端子Ｈに切り替えることに行う。処理部２１５は、当該切替えを行うスイッチ類を備えているものとする。
【００４０】
その後、処理部２１５は、通常データの各演算部への送付を停止するのに用いたＣＴからＴ個のＣＴが経過すると、各演算部を前記再同期化モードから前記通常モードへ切り替えさせる指示情報を送付する。Ｔは、通常入力中止時点で、同期演算部の各レジスタが保持するデータが、多数決部２１４を経由して、再び同期演算部の各レジスタに、前記通常入力中止時点と同じように格納されるＣＴの数である。ここで、前記通常入力中止時点は、処理部２１５が、前記通常データの各モジュールへの入力を止めるためのＣＴである。また、同期演算部は、前記同期が失われていない最多数の演算部である。
【００４１】
Ｔは、一つのデータが多数決部２１４を通過するのに要するＣＴの数をＱとすると、例えば、Ｔ＝Ｑ＋ｍである。ここで、ｍは、図２に表すレジスタの数である。
【００４２】
上記動作により、Ｔ個のＣＴが経過した後に前記再同期化が図られる。
【００４３】
記憶部２１６は、ＣＲＡＭ２１７を備える。
【００４４】
記憶部２１６は、処理部２１５が格納を指示する情報のうち、各モジュールにおける前記素子群の所定の各素子間の接続に関する構成情報（コンフィグレーションデータ）をＣＲＡＭ２１７に格納する。記憶部２１６は、処理部２１５の指示により、前記構成情報を格納又は変更する。
【００４５】
記憶部２１６は、前記構成情報以外の情報を、処理部２１５の指示に従い、ＣＲＡＭ以外の記憶領域に格納する。当該記憶領域は、処理部２１５が上記動作を行うために必要な情報を予め保持する。
【００４６】
記憶部２１６は、また、処理部２１５から指示された情報を読み出し、処理部２１５へ送付する。
【００４７】
図２は、図１に表す演算部３１１乃至３１ｎの各々の例である演算部３１０の構成を表す概念図である。
【００４８】
演算部３１０は、セレクタ３２１乃至３２ｍと、レジスタ３３１乃至３３ｍと、組合せ回路３４１乃至３４（ｍ−１）とを備える。
【００４９】
セレクタ３２１乃至３２ｍの各々（各レジスタ）は、例えば、互いに同等の構成を備える。
【００５０】
各セレクタは、例えば、処理部２１５から入力される信号（指示データ）が前記通常モード用のレベル（例えば、ハイレベル及びローレベルの一方）の場合は、図の下側の入力配線を出力配線に接続する。なお、図２に表す各素子等の左側の配線がその素子等にとっての入力用であり、右側の配線がその素子等にとっての出力用である。
【００５１】
当該構成は、処理部２１５が、組合せ回路３４１乃至３４（ｍ−１）の各々（各組合せ回路）の動作を確認するためのものである。当該構成は、前述のように、一般的なＦＰＧＡに備えられている構成である。なお、当該構成により各組合せ回路の動作を確認する方法は、本発明の動作とは直接関係ないので、その説明は省略される。
【００５２】
セレクタ３２１は、処理部２１５から演算部３１０を備えるモジュールへの入力の初段のセレクタである。セレクタ３２１は、前記通常モードの場合は、前記動作により、レジスタ３３１への出力を、処理部２１５の端子Ｉから入力された前記通常データにする。
【００５３】
セレクタ３２２乃至３２ｍの各々は、前記通常モードの場合には、前記動作により、次段のレジスタへ送付するデータを、下側の入力配線を介して対応する組合せ回路から送付されたデータにする。
【００５４】
一方、各セレクタは、処理部２１５から入力される信号（指示データ）が前記再同期化モード用のレベル（例えば、前記通常モード用と逆のレベル）の場合は、図の上側の入力配線を出力配線に接続する。
【００５５】
セレクタ３２１は、前記再同期化モードの場合は、当該動作により、処理部２１５の端子Ｈから入力された前述の、多数決部２１４からの出力データを、レジスタ３３１へ送付する。
【００５６】
セレクタ３２２乃至３２ｍの各々は、前記再同期化モードの場合は、前記動作により、上側の入力配線を介して前段のレジスタから送付されたデータを、出力配線を介して接続された後段のレジスタへ出力する。
【００５７】
レジスタ３３１乃至３３ｍの各々はシフトレジスタを構成する。レジスタ３３１乃至３３ｍの各々は、入力配線を経由して入力されたデータを保持する。そして、次のＣＴで、保持したデータを出力配線に出力する。各レジスタは、典型的には、フリップフロップである。
【００５８】
各組合せ回路は、必ずしも、互いに同じ構成であるとは限らない。各組合せ回路は、前述のように、所定の演算を行うために論理素子を組み合わせた回路である。
【００５９】
図３は、多数決部２１４の動作例を表すイメージ図である。同図には、説明の理解を容易にするため、図１に表す各符号の末尾のｎが３である場合を記述してある。
【００６０】
多数決部２１４は、前述のように、各ＣＴにおいて各モジュールから出力された出力データのうち最も数が多いデータを処理部２１５の端子Ｌへ出力する。
【００６１】
図３に表すように、多数決部２１４に、演算部３１１から（０１０１１）というデータ列が、演算部３１２及び３１３の各々から（１１００１）というデータ列が、それぞれ入力されたとする。その場合、多数決部２１４は、入力が多数（３入力のうち２入力）の（１１００１）のデータ列を、当該データ列の右側のデータから、ＣＴごとに順次出力する。
【００６２】
図４は、各演算部のモードが前記再同期化モードの時の、各レジスタの動作を表すイメージ図である。ここでは、説明の理解を容易にするため、図２に表す各符号の末尾のｍが４であるものとしてある。また、前記再同期化モードでは、図１に表す各レジスタはレジスタ間を接続する配線と等価なため、図示を省略してある。また、図１に表す各組合せ回路も、当該動作と関係ないため、図示を省略してある。
【００６３】
各レジスタに格納されたデータは、１ＣＴが経過すると、一つ右側のレジスタに格納される。また、レジスタ３３４が格納するデータは、１ＣＴが経過すると、出力配線へ出力される。
【００６４】
レジスタ３３１に（・・・０１１０）のデータ列の各データが右側のデータから順次入力されたとする。その場合、前記データ列の一番右側の（０）がレジスタ３３１に格納されてから３ＣＴが経過した時点では、図４に表すカッコ内の各データが各レジスタに格納される。
【００６５】
図５は、ＣＲＡＭ２１７においてソフトエラーが発生した場合の、ＦＰＧＡ１０１の各構成が行う動作を表すシーケンスチャートである。同図は、ソフトエラーの発生から処理部２１５が再同期化を決定するまでの動作を表す。また、同図においては、説明の理解を容易にするため、図１に表す各符号の末尾のｎは３であるとしている。
【００６６】
まず、同図に表すように、ＣＲＡＭ２１７においてソフトエラーが発生したとする。ここでは、当該ソフトエラーは、ＣＲＡＭ２１７における、モジュール１１１についての前記構成情報を格納する部分で発生したことを仮定する。
【００６７】
すると、ＣＲＡＭ２１７が格納している前記構成情報を監視している処理部２１５は、Ａ１０１の動作として、モジュール１１１に係る前記構成情報の異常を検出する。
【００６８】
そして、処理部２１５は、Ａ１０２の動作として、モジュール１１１の構成についての前述の訂正等を行うことを決定する。
【００６９】
そして、処理部２１５は、Ａ１０３の動作として、モジュール１１１へ、前記訂正等を指示する指示情報を送付する。
【００７０】
当該指示情報の送付を受けたモジュール１１１は、Ａ１０４の動作として、前記訂正等を行う。ここで、モジュール１１１は、前記訂正等を行う際に、前記通常データの入力を停止する。各モジュールは、自己が備える各演算部の前段に、入力を停止又は停止の解除を行い得るスイッチ類を備えているものとする。各モジュールは、前記訂正等が終了すると前記停止を解除する。
【００７１】
次に、モジュール１１１は、前記訂正等が完了すると、Ａ１０５の動作として、前記訂正等が完了したことを表す通知を処理部２１５へ送付する。
【００７２】
処理部２１５は、当該通知の送付を受けて、Ａ１０６の動作として、再同期化を行うことを決定する。
【００７３】
そして、ＦＰＧＡ１０１は図６に表すＡ１０７の動作を行う。
【００７４】
図６は、ＦＰＧＡの各構成が行う再同期化動作を表すシーケンスチャートである。
【００７５】
処理部２１５は、まず、Ａ１０７の動作として、前記通常データの各モジュールへの入力を停止する。
【００７６】
そして、処理部２１５は、Ａ１０８の動作として、各モジュールの演算部が備える各セレクタ（図２参照）へ、入力配線を前記再同期化モード用に切り替えさせる指示信号を送付する。
【００７７】
当該指示信号の送付を受けて、各モジュールの前記各セレクタは、Ａ１０９の動作として、入力配線を前記再同期化モード用のものに切り替える。
【００７８】
そして、処理部２１５は、Ａ１１０の処理として、図１に表す処理部２１５の端子Ｌの接続先を出力端子Ｋから端子Ｈに切り替える。処理部２１５は、当該切替えを、Ａ１０７の動作を行ったＣＴにおいて多数決部２１４の内部にあったデータがすべて出力端子Ｋから出力された直後のＣＴで行う。
【００７９】
次に、処理部２１５は、Ａ１１１の動作として、各セレクタへ入力を前記通常モード用に切り替えさせるための指示情報を送付する。処理部２１５は、当該送付を、Ａ１０７の動作の時点でモジュール１１２及び１１３の最終出力段のレジスタにあったデータに等しいデータが、モジュール１１２及び１１３の最終出力段のレジスタに格納されるＣＴで行う。このＣＴでは、演算部３１１の各レジスタに格納されるデータ列は、演算部３１２又は３１３の各レジスタに格納されるデータ列と等しくなっている。
【００８０】
当該指示情報の送付を受けて、各モジュールの各セレクタは、Ａ１１２の動作として、入力を前記通常モード用に切り替える。
【００８１】
そして、処理部２１５は、Ａ１１３の動作として、前記通常データの各モジュールの演算部への入力を再開する。
【００８２】
そして、処理部２１５は、Ａ１１４の動作として、処理部２１５が備える端子Ｌの接続先を、端子Ｈから出力端子Ｋに切り替える。処理部２１５は、当該切替えを、次のＣＴで多数決部２１４が、Ａ１１３の動作を行った時点で前記最終段のレジスタに格納されていたデータに対応するデータを端子Ｌへ出力するＣＴで行う。その理由は、そのタイミングまでに多数決部２１４から端子Ｌへ入力されるダミーデータが出力端子Ｋから出力されないようにするためである。そのタイミングまでに端子Ｌへ入力されたダミーデータは端子Ｈから各モジュールへ送付される。しかしながら、各モジュールの初段のレジスタは、入力を端子Ｉからの配線に既に切り替えているので、当該ダミーデータは各レジスタの初段のレジスタから先へは入力されない。
【００８３】
なお、図５に表すようにソフトエラーが発生して、Ａ１０１乃至Ａ１０４の、モジュール１１１の構成に係る前記訂正等が行われても、図６に表すＡ１１０の動作による出力端子の切替えが行われるまでは、ＦＰＧＡ１０１は、通常の演算結果を出力する。ただし、この間、ＦＰＧＡ１０１がモジュールを三つ備えることによる前記冗長性は、縮退し、なくなっている。そのため、この期間に仮に新たなソフトエラー等が発生すると、ＦＰＧＡ１０１は、正常な演算結果の出力は行わなくなる。
【００８４】
また、ＦＰＧＡ１０１は、Ａ１１０からＡ１１４の間は、再同期化動作のために、演算結果の出力を行わない。
【００８５】
そして、ＦＰＧＡ１０１は、Ａ１１４の動作が完了すると、通常の演算を行い、演算結果を出力すると共に、前記冗長性を有する状態に回復する。そのため、この期間に仮に新たなソフトエラー等が発生したとしても、ＦＰＧＡ１０１は、そのソフトエラーが単発的で次に行う図６に表す処理に準じた処理により回復可能なものであれば、前記冗長性を回復し得る。
【００８６】
図７は、ＣＲＡＭではなくモジュールでソフトエラーが発生した場合にＦＰＧＡ１０１が行う再同期化動作を表すシーケンスチャートである。同図には、ソフトエラーの発生から処理部２１５が再同期化を決定するまでの動作を表してある。
【００８７】
まず、図７に表すように、モジュール１１１でソフトエラーが発生し、モジュール１１１のあるレジスタが格納するデータが他のモジュールの対応するレジスタの格納するデータと異なる非同期状態になったとする。
【００８８】
すると、多数決部２１４は、モジュール１１１からの入力データが、他のモジュールからの入力データと異なるＣＴで、その旨を表す前記不一致情報を、図１に表す処理部２１５の端子Ｍへ出力する。
【００８９】
処理部２１５は、当該不一致情報の入力を受けて、Ａ２０２の動作として、前記再同期化の実行を決める。
【００９０】
その後、ＦＰＧＡ１０１は、図６に表すＡ１０７乃至Ａ１１４の動作を行う。Ａ１０６乃至Ａ１０９の動作の説明は前述の通りである。
【００９１】
図８は、処理部２１５が行う再同期化処理の処理フロー例を表す概念図である。
【００９２】
処理部２１５は、例えば、外部からの開始情報の入力により図８に表す処理を開始する。
【００９３】
そして、処理部２１５は、Ｓ１０１の処理として、同期化を実行するかについての判定を行う。処理部２１５は、当該判定を、例えば、あるモジュールについての前記訂正等が完了した（図５のＡ１０５参照）か、又は、あるモジュールが非同期状態か（図７のＡ２０１参照）を判定することにより行う。
【００９４】
処理部２１５は、Ｓ１０１の処理による判定結果がｙｅｓの場合は、Ｓ１０２の処理を行う。同場合は、図５に表すＡ１０６の動作又は図７に表すＡ２０２の動作に対応する。
【００９５】
一方、処理部２１５は、Ｓ１０１の処理による判定結果がｎｏの場合は、Ｓ１０１の処理を再度行う。
【００９６】
処理部２１５は、Ｓ１０２の処理を行う場合は、同処理として、前記通常データの各モジュールへの入力を停止する。
【００９７】
そして、処理部２１５は、Ｓ１０３の処理として、各モジュールの各セレクタ（図２参照）に、入力を前記通常モード用から前記再同期化モード用に切り替えさせる指示信号を送付する。
【００９８】
そして、処理部２１５は、Ｓ１０４の処理として、Ｓ１０２の処理を行うＣＴからＱ個のＣＴが経過したかについての判定を行う。ここで、Ｑは、Ｓ１０２の処理を行うＣＴからＱ個のＣＴが経過したＣＴに、Ｓ１０２の処理を行う時点で多数決部２１４に格納されていたデータがすべて出力端子Ｋから出力されるという意味を持つ数である。
【００９９】
処理部２１５は、Ｓ１０４の処理による判定結果がｙｅｓの場合は、Ｓ１０５の処理を行う。
【０１００】
一方、処理部２１５は、Ｓ１０４の処理による判定結果がｎｏの場合は、Ｓ１０４の処理を再度行う。
【０１０１】
処理部２１５は、Ｓ１０５の処理を行う場合は、同処理として、端子Ｌからの入力データの出力先を、出力端子Ｋから端子Ｈに切り替える。
【０１０２】
そして、処理部２１５は、Ｓ１０６の処理としてＳ１０５のＣＴからｍ個のＣＴが経過したかについての判定を行う。ここで、Ｓ１０５のＣＴからｍ個のＣＴの経過時点で、Ｓ１０２の処理を行う時点で同期化が行われていたモジュールの演算部の最終出力段のレジスタに格納されていたデータに等しいデータが、当該レジスタに格納されるものとする。ｍは、各演算部に含まれるレジスタの数に等しい。
【０１０３】
処理部２１５は、Ｓ１０６の処理による判定結果がｙｅｓの場合は、Ｓ１０７の処理を行う。
【０１０４】
一方、処理部２１５は、Ｓ１０６の処理による判定結果がｎｏの場合は、Ｓ１０６の処理を再度行う。
【０１０５】
処理部２１５は、Ｓ１０７の処理を行う場合は、同処理として、各演算処理部の各セレクタへ、入力を再同期化モード用から通常モードへ切り替えさせる指示信号を送付する。
【０１０６】
そして、処理部２１５は、Ｓ１０８の処理として、Ｓ１０７の処理が行われるＣＴの次のＣＴで、通常データの各演算部への入力を再開する。
【０１０７】
そして、処理部２１５は、Ｓ１０９の処理として、ＣＴがＱ個経過したかについての判定を行う。Ｑは、Ｓ１０４の説明で述べた意味と共に、Ｓ１０８の処理が行われたＣＴで前記最終段のレジスタに格納されたデータに等しいデータが、次のＣＴで多数決部２１４から出力される状態にあることを意味する。
【０１０８】
処理部２１５は、Ｓ１０９の処理による判定結果がｙｅｓの場合は、Ｓ１１０の処理を行う。
【０１０９】
一方、処理部２１５は、Ｓ１０９の処理による判定結果がｎｏの場合は、Ｓ１０９の処理を再度行う。
【０１１０】
処理部２１５は、Ｓ１１０の処理を行う場合は、多数決部２１４から端子Ｌに入力されたデータの出力先を、端子Ｈから出力端子Ｋへ切り替える。
【０１１１】
そして処理部２１５は、Ｓ１１１の処理として、図８に表す処理を終了するかについての判定を行う。処理部２１５は、当該判定を、例えば、外部からの終了情報の入力の有無を判定することにより行う。
【０１１２】
処理部２１５は、Ｓ１１１の処理による判定結果がｙｅｓの場合は、図８に表す処理を終了する。
【０１１３】
一方、処理部２１５は、Ｓ１１１の処理による判定結果がｎｏの場合は、Ｓ１０１の処理を再度行う。
【０１１４】
なお、処理部２１５は図８に表す処理の一部をハードウエア構成により行っても構わない。
［効果］
本実施形態のプログラマブルデバイスは、冗長性を有する複数の演算部のレジスタ群が格納するデータ列の同期が失われたことを検出した場合に、まず、各演算部が備える各レジスタを所定の順序で直列に接続させる。「同期」は、格納されるデータの演算による推移についての順序が設定されたレジスタからなるレジスタ群（シフトレジスタ）に格納されたデータ列が互いに等しいことをいう。そして、前記プログラマブルデバイスは、まだ同期が失われていない最多数の演算部のレジスタ群が格納するデータ列に等しい、多数決部から出力されるデータ列を各演算部のレジスタ群に、同じクロックタイミング（ＣＴ）で、順次格納させる。そのため、前記最多数の演算部のレジスタ群に、そのレジスタ群が格納していたデータ列に等しいデータ列が格納されたＣＴでは、前記同期が失われた演算部のレジスタ群にも、同じデータ列が格納される。つまり、当該ＣＴでは、すべての演算部の同期が回復した再同期状態にある。
【０１１５】
前記再同期を行うための時間は、最後段の前記レジスタに格納されていたデータが、前記多数決部及び前記レジスタ群を順次移行し、前記最終段の前記レジスタに到達するために要するＣＴの経過程度の短い期間で行い得る。通常の演算結果の出力が行われない当該期間は、特許文献２が開示する一般的な再同期化に要する期間と比較して格段に短いものである。
【０１１６】
すなわち、正常時に冗長性を有する複数の演算部に格納されたデータの再同期化に要する時間を短縮し得る。
【０１１７】
以上の説明では、同期が喪失される原因がソフトエラーにある場合の例を主に説明した。しかしながら、実施形態において同期が喪失される原因は任意である。
【０１１８】
図９は実施形態の格納装置の最小限の構成である格納装置２１５ｘの構成を表すブロック図である。
【０１１９】
格納装置２１５ｘは、検出部２１５ａｘと、処理部２１５ｂｘとを備える。
【０１２０】
検出部２１５ａｘは、複数のシフトレジスタの各々に含まれる所定のレジスタから連続する所定の数のレジスタに同時に保持されるデータ列の種類の単複を検出する。
【０１２１】
処理部２１５ｂｘは、前記種類が二以上であると検出された場合に、前記同時に保持するシフトレジスタが最多の前記種類の前記データ列と等しいものを、前記複数のシフトレジスタのうち前記最多の前記種類の前記データ列を前記同時に保持しない前記シフトレジスタに格納させる。
【０１２２】
格納装置２１５ｘは、前記同時に保持するシフトレジスタが最多の前記種類の前記データ列と等しいものを、前記複数のシフトレジスタのうち前記最多の前記種類の前記データ列を前記同時に保持しない前記シフトレジスタに格納させる。従い、前記データ列を前記クロック信号に従い順次格納させたとしても、当該格納に要する時間は、一つのデータが前記前記シフトレジスタを通過するのに要するクロック信号の周期程度の短いものである。
【０１２３】
従い、格納装置２１５ｘは、シフトレジスタに格納されたデータの再同期化に要する時間を短縮し得る。
【０１２４】
そのため、格納装置２１５ｘは、前記構成により、［発明の効果］の項に記載した効果を奏する。
【０１２５】
なお、図９に表す格納装置２１５ｘは、例えば、図１に表す処理部２１５である。また、検出部２１５ａｘは、例えば、処理部２１５の、図５に表すＡ１０６の動作、図７に表すＡ２０５の動作、又は、図８に表すＳ１０１の処理を行う部分である。また、処理部２１５ｂｘは、例えば、処理部２１５の、図６に表すＡ１０８、Ａ１１０及びＡ１１１の動作、又は、図８に表すＳ１０３乃至Ｓ１０７の処理を行う部分である。また、前記シフトレジスタは、例えば、図２に表すレジスタ３３１乃至３３ｎからなるシフトレジスタである。
【０１２６】
以上、本発明の各実施形態を説明したが、本発明は、前記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で更なる変形、置換、調整を加えることができる。例えば、各図面に示した要素の構成は、本発明の理解を助けるための一例であり、これらの図面に示した構成に限定されるものではない。
【０１２７】
また、前記の実施形態の一部又は全部は、以下の付記のようにも記述され得るが、以下には限られない。
（付記１）
複数のシフトレジスタの各々に含まれる所定のレジスタから連続する所定の数のレジスタに同時に保持されるデータ列の種類の単複を検出する検出部と、
前記種類が二以上であると検出された場合に、前記同時に保持するシフトレジスタが最多の前記種類の前記データ列と等しいものを、前記複数のシフトレジスタのうち前記最多の前記種類の前記データ列を前記同時に保持しない前記シフトレジスタに格納させる処理部と
を備える格納装置。
（付記２）
前記複数のシフトレジスタは正常時に冗長構成を有する、付記１に記載された格納装置。
（付記３）
前記保持情報が所定の演算に係る途中演算の結果であり、前記複数の前記シフトレジスタの各々は、正常時においては入力データに対して互いに同等の前記演算による結果を出力し得る、前記複数の演算部の各々に含まれる、付記２に記載された格納装置。
（付記４）
前記演算部は、前記演算を行う第一モードと、前記シフトレジスタを構成する各レジスタを所定の序列に従い前記演算を行う演算回路を介さずに直列に接続する第二モードとを前記処理部からの指示信号により切り替え、前記処理部は、前記演算部の各々へ、その前記演算部を前記第二モードにさせる第二モード化信号を送付した後に、前記格納を行わせる、付記３に記載された格納装置。
（付記５）
前記演算部は、前記第二モード化信号により、入力配線を、前記入力データを入力するためのものから、前記同時に保持するシフトレジスタが最多の前記種類の前記データ列を保持する最多数シフトレジスタから出力される前記データ列と同等の前記データ列を入力するためのものへ切り替える、初段入力切替部をさらに備え、前記処理部は、前記送付の対象に、前記初段入力切替部への前記第二モード化信号を含める、付記４に記載された格納装置。
（付記６）
前記処理部は前記入力データの前記演算部の各々への入力を停止する入力停止部をさらに備え、前記処理部は、前記入力停止部により前記停止を行った後に、前記格納を行わせる、付記５に記載された格納装置。
（付記７）
前記演算部は、前記各レジスタの各々の前段に、その前記各レジスタへの入力を、前段の前記各レジスタからのものと、前記前段の前記各レジスタから前記途中演算を行う途中演算部を介してのものとを切り替える後段入力切替部をさらに備え、前記処理部は、前記送付の対象に、前記後段入力切替部への前記第二モード化信号を含める、付記４乃至付記６のうちのいずれか一に記載された格納装置。
（付記８）
前記演算部の前記途中演算を行う部分は、所定の論理素子又はその組合せからなる回路を含む、付記３乃至付記７のうちのいずれか一に記載された格納装置。
（付記９）
前記処理部は、前記最多数シフトレジスタから出力される、前記演算部から出力されるデータである第一出力データ、に等しいデータである第二出力データの出力先を外部と前記演算部の各々とで切り替える出力切替部を備え、前記出力切替部により前記出力先を前記演算部の各々に切り替えた後に、前記格納を行わせる、付記３乃至付記８のうちのいずれか一に記載された格納装置。
（付記１０）
前記演算部の各々からの前記第一出力データから、前記第二出力データを導出する多数決部をさらに備える、付記９に記載された格納装置。
（付記１１）
付記３乃至付記１０のうちのいずれか一に記載された格納装置と、前記演算部とを備える、演算装置。
（付記１２）
プログラマブルデバイスである、付記１１に記載された演算装置。
（付記１３）
ｆｉｅｌｄ−ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ（ＦＰＧＡ）である、付記１１又は付記１２に記載された演算装置。
（付記１４）
前記不一致が、ソフトエラーによるものである、付記１１乃至付記１３のうちのいずれか一に記載された演算装置。
（付記１５）
前記ソフトエラーが、前記演算部に含まれる素子群の接続状態を表す情報である構成情報を記憶する構成情報格納部で生じ、前記不一致が、当該構成情報の異常を検出したことにより、前記異常を検出した前記構成情報に係る前記演算部について行われた、前記接続状態の訂正又は再構築により生じたものである、付記１４に記載された演算装置。
（付記１６）
前記ソフトエラーが、前記演算部で生じたものである、付記１４に記載された演算装置。
（付記１７）
複数のシフトレジスタの各々に含まれる所定のレジスタから連続する所定の数のレジスタに同時に保持されるデータ列の種類の単複を検出し、
前記種類が二以上であると検出された場合に、前記同時に保持するシフトレジスタが最多の前記種類の前記データ列と等しいものを、前記複数のシフトレジスタのうち前記最多の前記種類の前記データ列を前記同時に保持しない前記シフトレジスタに格納させる
格納方法。
【符号の説明】
【０１２８】
１０１    ＦＰＧＡ
１１１、１１２、１１３    モジュール
２１４    多数決部
２１５    処理部
２１５ｘ    格納装置
２１５ａｘ    検出部
２１５ｂｘ    処理部
２１６    記憶部
２１７    ＣＲＡＭ
３１０、３１１、３１２、３１３    演算部
３２１、３２２、３２３、３２ｍ    セレクタ
３３１、３３２、３３３、３３４、３３ｍ    レジスタ
３４１、３４２、３４（ｍ−１）    組合せ回路
Ｅ、Ｆ、Ｇ    端子群
Ｈ、Ｉ、Ｌ、Ｍ    端子
Ｊ    入力端子
Ｋ    出力端子
【図１】
2020064382.tif 000003
【図２】
2020064382.tif 000004
【図３】
2020064382.tif 000005
【図４】
2020064382.tif 000006
【図５】
2020064382.tif 000007
【図６】
2020064382.tif 000008
【図７】
2020064382.tif 000009
【図８】
2020064382.tif 000010
【図９】
2020064382.tif 000011