(57)【要約】【課題】ソフトエラーが発生した場合に、誤った回路構成で処理された異常データを後段に出力させず、信頼性が高いデータ処理を実現できるデータ処理装置を提供する。【解決手段】回路情報がロードされる第１の記憶回路と、回路情報におけるエラーの有無を検出するエラー検出回路と、ロードされた回路情報に基づいた論理回路が構成され、入力されたデータを論理回路でデータ処理する可変回路と、データ処理された処理済データを保持する第２の記憶回路と、エラー検出回路の検出結果に応じて第２の記憶回路に保持される処理済データの出力制御をする出力制御回路とを備える。エラー検出回路は、第１の記憶回路にロードされた回路情報にエラーを検出した際にエラー検出通知を出力制御回路に送信し、出力制御回路は、エラー検出通知に応じて、第２の記憶回路の書込みの受付を停止し、第２の記憶回路に保持された処理済データを破棄するデータ処理装置とする。【選択図】      図１
2018181206.tif 000002
【特許請求の範囲】
【請求項１】
回路情報が含まれるプログラムファイルを外部記憶装置から取得する第１の入力回路と、
前記プログラムファイルに含まれる前記回路情報がロードされる第１の記憶回路と、
前記第１の記憶回路にロードされた前記回路情報におけるエラーの有無を検出するエラー検出回路と、
処理対象のデータを入力する第２の入力回路と、
前記第１の記憶回路にロードされた前記回路情報に基づいた論理回路が構成され、前記第２の入力回路によって入力された入力データを前記論理回路でデータ処理する可変回路と、
前記可変回路においてデータ処理された前記入力データのうち所定量の処理済データを先入先出で記憶する第２の記憶回路と、
前記エラー検出回路の検出結果に応じて前記第２の記憶回路に保持される前記処理済データの出力制御をする出力制御回路と、
前記第２の記憶回路から出力された前記処理済データを外部に出力するデータ出力回路とを備え、
前記エラー検出回路は、
前記第１の記憶回路にロードされた前記回路情報にエラーを検出した際にエラー検出通知を前記出力制御回路に送信し、
前記出力制御回路は、
前記エラー検出通知に応じて、前記第２の記憶回路における書込みの受付を停止し、前記第２の記憶回路に保持される前記処理済データのうちエラーを含むデータを破棄するデータ処理装置。
【請求項２】
前記エラー検出回路は、
前記第１の記憶回路にロードされた前記回路情報にエラーを検出した際に、前記第１の記憶回路にロードされた前記回路情報のうち少なくともエラーを含む箇所の前記回路情報を上書きする請求項１に記載のデータ処理装置。
【請求項３】
前記エラー検出回路は、
前記第１の記憶回路にロードされた前記回路情報の修復が完了すると、前記回路情報の修復が完了したことを通知する修復完了通知を前記出力制御回路に送信し、
前記出力制御回路は、
前記エラー検出回路から前記修復完了通知を受信すると、前記修復完了通知に応じて前記第２の記憶回路における書込みの受付を再開する請求項１または２に記載のデータ処理装置。
【請求項４】
前記出力制御回路は、
前記エラー検出通知を受信すると、前記第２の記憶回路の読出しボトムアドレスを、前記可変回路が次に格納する書込みアドレスから所定時間前のアドレスに変更する請求項１乃至３のいずれか一項に記載のデータ処理装置。
【請求項５】
前記可変回路は、
前記入力データの宛先情報と差し替える宛先データを含むリストを記憶する宛先記憶回路と、
前記宛先記憶回路に記憶された前記リストを参照し、前記入力データの前記宛先情報と差し替える前記宛先データを前記宛先記憶回路から読出す読出し回路と、
前記読出し回路が読出した値の正否を、前記宛先データに付与される誤り訂正符号を用いて確認する演算回路と、
前記第１の記憶回路にロードされた前記回路情報に基づいた前記論理回路が構成され、前記演算回路によって正否が確認された前記宛先データで前記入力データの前記宛先情報を差し替え、前記宛先情報を差し替えた前記処理済みデータを前記第２の記憶回路に出力するデータ制御回路とを有する請求項１乃至４のいずれか一項に記載のデータ処理装置。
【請求項６】
前記第２の入力回路によって取得された所定量の前記入力データを先入先出で記憶し、前記可変回路に前記入力データを出力した後も所定期間前記入力データを保持し続ける第３の記憶回路を備える請求項１乃至５のいずれか一項に記載のデータ処理装置。
【請求項７】
前記出力制御回路は、
前記エラー検出回路からの前記エラー検出通知に応じて前記第２の記憶回路および前記第３の記憶回路に制御信号を送信し、
前記第２の記憶回路は、
前記制御信号に応じて、前記可変回路から受信する前記処理済データの書込みポインタを所定時間前の書込みポインタに移動させ、
前記第３の記憶回路は、
前記制御信号に応じて、前記第２の入力回路から受信する前記入力データの読出しポインタを所定時間前の読出しポインタに変更させる請求項６に記載のデータ処理装置。
【請求項８】
前記第３の記憶回路は、
前記エラー検出回路による前記第１の記憶回路のエラーチェックが一巡する時間よりも長い時間前記入力データを保持し続ける請求項６または７に記載のデータ処理装置。
【請求項９】
回路情報が含まれるプログラムファイルを外部記憶装置から取得し、
前記プログラムファイルに含まれる前記回路情報を第１の記憶回路にロードし、
前記第１の記憶回路にロードされた前記回路情報におけるエラーの有無を検出し、
処理対象のデータを入力し、
前記第１の記憶回路にロードされた前記回路情報に基づいて構成される論理回路で入力データをデータ処理し、
データ処理された前記入力データのうち所定量の処理済データを先入先出で第２の記憶回路に記憶し、
前記第１の記憶回路にロードされた前記回路情報にエラーを検出した際に前記第２の記憶回路における書込みの受付を停止し、
前記第２の記憶回路に保持された前記処理済データのうちエラーを含むデータを破棄するデータ処理方法。
【請求項１０】
回路情報が含まれるプログラムファイルを外部記憶装置から取得する処理と、
前記プログラムファイルに含まれる前記回路情報を第１の記憶回路にロードする処理と、
前記第１の記憶回路にロードされた前記回路情報におけるエラーの有無を検出する処理と、
処理対象のデータを入力する処理と、
前記第１の記憶回路にロードされた前記回路情報に基づいて構成される論理回路で入力データをデータ処理する処理と、
データ処理された前記入力データのうち所定量の処理済データを先入先出で第２の記憶回路に記憶する処理と、
前記第１の記憶回路にロードされた前記回路情報にエラーを検出した際に前記第２の記憶回路における書込みの受付を停止する処理と、
前記第２の記憶回路に保持された前記処理済データのうちエラーを含むデータを破棄する処理とをコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＦＰＧＡ（Field-Programmable Gate Array）として構成されるデータ処理装置、データ処理方法およびプログラムに関する。
【背景技術】
【０００２】
ＦＰＧＡ（Field-Programmable Gate Array）は、回路構成を書き換えできるＬＳＩ（Large Scale Integration）である。近年では、ＳＲＡＭ（Static Random Access Memory）メモリセル方式のＦＰＧＡが主流である。ＳＲＡＭメモリ方式のＦＰＧＡは、基本論理回路の組み合わせをＳＲＡＭのメモリセルの状態で定義することによって論理回路を再構成できる。ＳＲＡＭメモリ方式のＦＰＧＡでは、電源が投入されると、論理回路を定義するプログラムファイルが外部記憶メディアからロードされ、プログラムファイルに含まれる回路情報に基づいた論理回路がメモリセル構成のコンフィグレーションメモリに展開される。
【０００３】
ところで、通信機器などに搭載するロジック回路やメモリ回路の不良動作原因の一つとして、宇宙から降り注ぐ中性子線の影響で回路のビット反転が起こるソフトエラー現象が知られている。
【０００４】
ＦＰＧＡのコンフィグレーションメモリには、ソフトエラー対策として、誤り検出や訂正を行うＥＣＣ（Error Check and Correct）回路が付加される。一般的なＥＣＣ回路は、コンフィグレーションメモリ領域のデータを順に読出し、再計算を行って冗長ビットとの一致を確認することによってエラーの発生有無を確認する。ＦＰＧＡは、エラーを検出すると、エラーを自動訂正したり、予備系のコンフィグレーションメモリに切り替えたりする。
【０００５】
特許文献１には、ＳＲＡＭ型ＦＰＧＡを用いて構成された電子デバイスが動作している状態で、ＳＲＡＭ型ＦＰＧＡに発生したソフトエラーを検出し、ソフトエラーによる故障を回復する電子デバイスが開示されている。特許文献１の電子デバイスは、同一のコンフィグレーションデータを記憶し、同一の回路として動作する二つのＳＲＡＭ型ＦＰＧＡを備える。特許文献１の電子デバイスは、二つのＳＲＡＭ型ＦＰＧＡから出力される信号に異なるものがあることを検出すると、二つのＳＲＡＭ型ＦＰＧＡのうち少なくともいずれかを再コンフィグレーションする選択チップを備える。
【０００６】
ＥＣＣ回路は、コンフィグレーションメモリの全領域のデータを一定区分ずつ確認し、全領域のデータを確認し終わると、初めの区分に戻ってデータの確認を巡回することを繰り返す。そのため、ソフトエラーが発生してから、ＥＣＣ回路がソフトエラーを検出するまでに、メモリ領域におけるデータの確認が一巡するまでの時間を要することもある。例えば、ＥＣＣ回路によるデータの確認が一巡するのには数ミリ秒を要するため、ソフトエラーの発生から検出までには最大で数ミリ秒掛かることもある。その場合、ＦＰＧＡは、ソフトエラーが検出されるまでの数ミリ秒間、本来の回路定義とは異なる結果を後段に出力する可能性がある。
【０００７】
ファクトリーオートメーションの制御機器や通信機器などでは、短時間の異常動作でも許容できない。例えば、金額情報のやり取りを担う通信機器においてソフトエラーによる情報の１ビット化けが発生した場合、高額な桁の間違いが起きたり、間違った宛先に金額情報が届けられたりする可能性がある。ソフトエラーの検出から訂正までの時間を短縮するために、一つのＥＣＣ回路が巡回する領域を細分化する対応策も考えられる。しかし、ＥＣＣ回路が巡回する領域を細分化すると、ＥＣＣ回路の配置数が増加するため、回路のコスト増や、ユーザの変更可能領域を圧迫することに繋がる。
【０００８】
特許文献２には、ＦＰＧＡに接続されたコンフィグレーションコントローラと、コンフィグレーションデータと置換用のコンフィグレーションデータを保存する不揮発性の第１記憶装置と、第２記憶装置とを備えるＦＰＧＡシステムについて開示されている。特許文献２のシステムのコンフィグレーションコントローラは、第１記憶装置に保存されているコンフィグレーションデータをＦＰＧＡに書き込むとともに、第１記憶装置に保存されている置換用のコンフィグレーションデータを第２記憶装置に書き込む。
【０００９】
特許文献３には、プログラマブルデバイスの構成メモリにおけるエラーを検出する方法について開示されている。特許文献３の方法では、構成メモリから構成メモリデータを読み取り、構成メモリデータにおいてエラーが発生したか否かを判断する。特許文献３の方法では、エラーが発生したという判断に応答して、エラーを無視することができるか否かを判断するために、エラーである構成データに対応する感度データを解析する。特許文献３の方法では、エラーを無視することができない場合は修復アクティビティを開始し、エラーを無視することができる場合は修復アクティビティを開始せずにエラーを無視する。
【００１０】
特許文献４には、データ処理システムなどに用いられるデータ誤りチェックシステムについて開示されている。特許文献４のシステムは、データの誤りを検出するデータ誤りチェック回路と、データ誤りチェック回路がデータの誤りを検出したときにデータの誤りを訂正するためのデータ補正プログラムを実行してデータを訂正する演算処理装置と、を備える。
【００１１】
特許文献５には、複数のプログラマブル論理回路を用いて情報処理を行う情報処理装置について開示されている。特許文献５の装置は、直列接続された２つのプログラマブル論理回路を、前段のプログラマブル論理回路に構成された回路による１回のデータ処理時間が、後段のプログラマブル論理回路に対する回路の再構成時間以上となるように構成する。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２０１０−１３４６７８号公報
【特許文献２】特開２０１３−０２５４３７号公報
【特許文献３】特開２００７−２９３８５６号公報
【特許文献４】特開２００３−２４８５９４号公報
【特許文献５】特開２００２−０２６７２１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
特許文献２のシステムでは、ＦＰＧＡがフラッシュメモリへアクセスする動作と、他の制御装置がフラッシュメモリへアクセスする動作とが衝突する可能性がなくなる。そのため、特許文献２のシステムにおいては、書き込まれているコンフィグレーションデータにビット誤りを検出した場合に、置換用のコンフィグレーションデータを取得するためのアクセスを行う機能を有するＦＰＧＡを用いてもシステム全体で安定に動作する。しかし、特許文献２のシステムには、コンフィグレーションデータをＦＰＧＡに書き込む際に、置換用のコンフィグレーションデータを第２記憶装置に書き込むという余計な処理が伴うという問題点があった。
【００１４】
特許文献３の方法によれば、無視できる程度の偽陽性ソフトエラーには修復アクティビティを開始しないため、不必要な構成データの再ロードや他の修正処置を避けることができる。しかし、特許文献３の方法では、検出されたエラーである構成データに対応する感度データを解析するという余計な処理が伴うという問題点があった。
【００１５】
特許文献４のシステムによれば、データ補正プログラムによってデータ誤り訂正を行うため、システムの性能を損なうことなく、システムの大きさやコストを低減できる。しかし、特許文献４のシステムには、ソフトエラーの影響がデータ補正プログラム自体に及んだ際に、データ誤りをチェックできなくなるという問題点があった。
【００１６】
特許文献５の装置によれば、最終的な処理結果が得られるまでの時間を大幅に短縮できる。しかし、特許文献５の装置には、後段のプログラマブル論理回路でソフトエラーが発生した際に、間違った論理構成で処理されたデータが出力されてしまうという問題点があった。
【００１７】
本発明の目的は、上述した課題を解決し、ソフトエラーが発生した場合であっても、誤った回路構成で処理された異常データを後段に出力することを防ぎ、信頼性が高いデータ処理を実現できるデータ処理装置を提供することにある。
【課題を解決するための手段】
【００１８】
本発明のデータ処理装置は、回路情報が含まれるプログラムファイルを外部記憶装置から取得する第１の入力回路と、プログラムファイルに含まれる回路情報がロードされる第１の記憶回路と、第１の記憶回路にロードされた回路情報におけるエラーの有無を検出するエラー検出回路と、処理対象のデータを入力する第２の入力回路と、第１の記憶回路にロードされた回路情報に基づいた論理回路が構成され、第２の入力回路によって入力された入力データを論理回路でデータ処理する可変回路と、可変回路においてデータ処理された入力データのうち所定量の処理済データを先入先出で記憶する第２の記憶回路と、エラー検出回路の検出結果に応じて第２の記憶回路に保持される処理済データの出力制御をする出力制御回路と、第２の記憶回路から出力された処理済データを外部に出力するデータ出力回路とを備え、エラー検出回路は、第１の記憶回路にロードされた回路情報にエラーを検出した際にエラー検出通知を出力制御回路に送信し、出力制御回路は、エラー検出通知に応じて、第２の記憶回路における書込みの受付を停止し、第２の記憶回路に保持される処理済データのうちエラーを含むデータを破棄する。
【００１９】
本発明のデータ処理方法では、回路情報が含まれるプログラムファイルを外部記憶装置から取得し、プログラムファイルに含まれる回路情報を第１の記憶回路にロードし、第１の記憶回路にロードされた回路情報におけるエラーの有無を検出し、処理対象のデータを入力し、第１の記憶回路にロードされた回路情報に基づいて構成される論理回路で入力データをデータ処理し、データ処理された入力データのうち所定量の処理済データを先入先出で第２の記憶回路に記憶し、第１の記憶回路にロードされた回路情報にエラーを検出した際に第２の記憶回路における書込みの受付を停止し、第２の記憶回路に保持された処理済データのうちエラーを含むデータを破棄する。
【００２０】
本発明のプログラムは、回路情報が含まれるプログラムファイルを外部記憶装置から取得する処理と、プログラムファイルに含まれる回路情報を第１の記憶回路にロードする処理と、第１の記憶回路にロードされた回路情報におけるエラーの有無を検出する処理と、処理対象のデータを入力する処理と、第１の記憶回路にロードされた回路情報に基づいて構成される論理回路で入力データをデータ処理する処理と、データ処理された入力データのうち所定量の処理済データを先入先出で第２の記憶回路に記憶する処理と、第１の記憶回路にロードされた回路情報にエラーを検出した際に第２の記憶回路における書込みの受付を停止する処理と、第２の記憶回路に保持された処理済データのうちエラーを含むデータを破棄する処理とをコンピュータに実行させる。
【発明の効果】
【００２１】
本発明によれば、ソフトエラーが発生した場合であっても、誤った回路構成で処理された異常データを後段に出力することを防ぎ、信頼性が高いデータ処理を実現できるデータ処理装置を提供することが可能になる。
【図面の簡単な説明】
【００２２】
【図１】本発明の第１の実施形態に係るデータ処理装置の構成を示すブロック図である。
【図２】本発明の第１の実施形態に係るデータ処理装置のエラー検出回路によって回路情報のエラーの有無を確認する状況について説明するための概念図である。
【図３】本発明の第１の実施形態に係るデータ処理装置の可変回路において入力データの宛先情報を差し替える例を示す概念図である。
【図４】本発明の第１の実施形態に係るデータ処理装置の可変回路において回路障害が発生した際に入力データの宛先情報が誤って差し替えられる例を示す概念図である。
【図５】本発明の第１の実施形態に係るデータ処理装置の動作について説明するためのフローチャートである。
【図６】本発明の第２の実施形態に係るデータ処理装置の構成を示すブロック図である。
【図７】本発明の第２の実施形態に係るデータ処理装置の可変回路において回路障害が発生した際に入力データの宛先情報が誤って差し替えられる例を示す概念図である。
【図８】本発明の第２の実施形態に係るデータ処理装置の動作について説明するためのフローチャートである。
【発明を実施するための形態】
【００２３】
以下に、本発明を実施するための形態について図面を用いて説明する。ただし、以下に述べる実施形態には、本発明を実施するために技術的に好ましい限定がされているが、発明の範囲を以下に限定するものではない。なお、以下の実施形態の説明に用いる全図においては、特に理由がない限り、同様箇所には同一符号を付す。また、以下の実施形態において、同様の構成・動作に関しては繰り返しの説明を省略する場合がある。また、図面中の矢印の向きは、一例を示すものであり、ブロック間の信号の向きを限定するものではない。
【００２４】
（第１の実施形態）
まず、本発明の第１の実施形態に係るデータ処理装置について図面を参照しながら説明する。本実施形態のデータ処理装置は、ＳＲＡＭ（Static Random Access Memory）メモリセル方式のＦＰＧＡ（Field-Programmable Gate Array）として構成される。本実施形態のデータ処理装置は、回路構成を書き換えできるＬＳＩ（Large Scale Integration）である。本実施形態のデータ処理装置は、基本論理回路の組み合わせをＳＲＡＭのメモリセルの状態で定義することによって論理回路を再構成できる。以下においては、伝送データを処理対象のデータとして入力し、入力データの宛先を変更するデータ処理の例に挙げて説明するが、本実施形態のデータ処理装置が扱うデータや処理はそれらに限定されない。
【００２５】
（構成）
図１は、本実施形態に係るデータ処理装置１の構成を示すブロック図である。図１のように、データ処理装置１は、データ入力回路１１、可変回路１２、先入先出記憶回路１３、データ出力回路１４、回路情報入力回路１５、回路情報記憶回路１６、エラー検出回路１７、出力制御回路１８を備える。
【００２６】
データ処理装置１は、論理回路を定義するプログラムファイルを記憶する外部記憶装置１００に接続される。外部記憶装置１００は、データ処理装置１が用いるプログラムファイルを記憶する。外部記憶装置１００は、フラッシュメモリやＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory）などの記憶メディアである。
【００２７】
データ入力回路１１（第２の入力回路とも呼ぶ）は、処理対象の伝送データを入力とする。伝送データは、先頭部に宛先情報を含む。例えば、データ入力回路１１は、図示しない入力端子から伝送データを入力する。データ入力回路１１は、入力した伝送データ（入力データと呼ぶ）を可変回路１２に出力する。
【００２８】
可変回路１２は、データ入力回路１１から入力データを入力する。可変回路１２には、回路情報記憶回路１６にロードされるプログラムファイルの回路情報（コンフィグレーションデータとも呼ぶ）に基づいた論理回路が構成される。可変回路１２は、回路情報記憶回路１６に記憶されている回路情報により指定される論理回路として動作し、データ入力回路１１により入力された入力データに対してデータ処理を実行する。
【００２９】
可変回路１２は、入力データの先頭部の宛先情報を確認する。可変回路１２には、入力データの宛先に対応する宛先が予め登録されている。可変回路１２は、入力データの宛先情報に基づいて予め登録されていた宛先を読出し、読出した値の正否を確認する。可変回路１２は、読出した値が正しければ、入力データの先頭部の宛先を差し替える。可変回路１２は、先頭部の宛先を差し替えた入力データ（処理済データとも呼ぶ）を後段の先入先出記憶回路１３に出力する。
【００３０】
先入先出記憶回路１３（第２の記憶回路とも呼ぶ）は、可変回路１２から処理済データを入力し、所定量の処理済データを先入先出で記憶する。先入先出記憶回路１３は、新しい処理済データが入力されるタイミングで処理済データを先入先出で出力する。先入先出記憶回路１３は、少なくとも十数ミリ秒分の処理済データを保持する記憶容量を有する。先入先出記憶回路１３は、処理済データを数ミリ秒間保持し、後段のデータ出力回路１４に処理済データを出力するタイミングを遅らせる。先入先出記憶回路１３は、出力制御回路１８の制御に応じて、保持している処理済データをデータ出力回路１４に出力する。
【００３１】
また、先入先出記憶回路１３は、エラー検出回路１７からのエラー検出通知に応じて読出しボトムアドレスを変更するとともに、それ以後の可変回路１２からの新たな書込みの受付を停止する。読出しボトムアドレスは、データ出力回路１４が先入先出記憶回路１３から処理済データを読み出すことのできる範囲の最後を示すアドレスである。先入先出記憶回路１３は、書込み停止中に保持している処理済データを破棄する。
【００３２】
先入先出記憶回路１３は、出力制御回路１８の制御に応じて書込みの受け付けを再開すると、滞留データが空になっているため、所定量の処理済データが滞留するまで待機してからデータ出力回路１４への処理済データの出力を再開する。例えば、先入先出記憶回路１３は、ミリ秒分の処理済データが滞留するのを待ち、データ出力回路１４への処理済データの出力を再開する。
【００３３】
データ出力回路１４は、先入先出記憶回路１３から出力された処理済データを外部に出力する。
【００３４】
回路情報入力回路１５（第１の入力回路とも呼ぶ）は、データ処理装置１に電源が投入されると、回路情報が含まれるプログラムファイルを外部記憶装置１００からロードする。例えば、回路情報入力回路１５は、ＪＴＡＧ（Joint Test Action Group）ポートからプログラムファイルを入力する。回路情報入力回路１５は、プログラムファイルの回路情報を回路情報記憶回路１６にロードする。
【００３５】
回路情報記憶回路１６（第１の記憶回路とも呼ぶ）には、回路情報入力回路１５によって、プログラムファイルに含まれる回路情報がロードされる。例えば、回路情報記憶回路１６は、１ビット列のＳＲＡＭメモリセルで構成されるコンフィグレーションメモリである。回路情報記憶回路１６にロードされたデータの個々のビットが、データ処理装置１で実現するユーザ所望の論理回路の情報元となる。データ処理装置１に装備されているリソースをカスタマイズすることによってユーザ所望の論理回路が実現される。
【００３６】
エラー検出回路１７は、エラー検出訂正（ＥＣＣ：Error Check and Correct）によって回路情報記憶回路１６のソフトエラーの有無を確認する。ソフトエラーとは、メモリに記憶されたデータ（０または１）が、放射線の影響などによって自然に反転する現象である。ソフトエラーは、主に一過性の不良である。ソフトエラーが発生すると、メモリのデータが変化したり、データの読出しが不可能になったりするが、半導体チップ自体が壊れるわけではないために回路自体は正常である。そのため、電源を再投入したり、データを書き直したりすれば、回路は正常動作に復旧する。しかしながら、ソフトエラーが起こると、電源を再投入したり、データを書き直したりしない限り、回路の動作不良が続くことになる。
【００３７】
図２は、エラー検出回路１７が回路情報記憶回路１６におけるソフトエラーの有無を確認する様子を示す。図２の例では、エラー検出回路１７は、左端の先頭区画から右端の最終区画までの区間を巡回してソフトエラーの有無を確認する。図２の例では、ソフトエラーの有無を確認した区間をチェック記号で示している。
【００３８】
エラー検出回路１７は、回路情報記憶回路１６にロードされた回路情報を先頭区画から順番に一定サイズの区画ごとに読出し、エラー検出訂正によってエラーの有無を確認する。エラー検出回路１７は、回路情報記憶回路１６の最終区画の確認が完了すると、再び先頭区画に戻り巡回する。回路情報記憶回路１６は、数ミリ秒をかけて回路情報記憶回路１６の全領域の確認を完了させる。
【００３９】
エラー検出回路１７は、ＥＣＣによりビットエラーを検出すると、エラーを検出したことを出力制御回路１８に通知する（エラー検出通知）。例えば、エラー発生個所と確認中の箇所との位置関係によっては、ソフトエラーの発生から検出するまでに数ミリ秒掛かる場合もある。また、エラー検出回路１７は、データ処理装置１の処理した処理済データを利用する機器の装置制御コンピュータにもエラー検出通知を送信する。
【００４０】
エラー検出回路１７は、回路情報記憶回路１６のエラー部位に、プログラムファイルを部分的に上書きすることによって回路情報を修復する。エラー検出回路１７は、エラーの修復が完了すると、出力制御回路１８に回路情報が修復されたことを通知する（修復完了通知）。
【００４１】
出力制御回路１８は、エラー検出回路１７の検出結果に応じて先入先出記憶回路１３に保持される処理済データの出力制御をする。具体的には、出力制御回路１８は、エラー検出回路１７からのエラー検出通知を受けると、先入先出記憶回路１３の読出しボトムアドレスを変更する。出力制御回路１８は、読出しボトムアドレスを可変回路１２が次に格納する書込みアドレスから所定時間前のアドレスに変更する。例えば、出力制御回路１８は、読出しボトムアドレスを可変回路１２が次に格納する書込みアドレスから、ミリ秒分前のアドレスに変更する。その結果、データ出力回路１４がソフトエラー起因で壊れた処理済データを読み出すことがなくなるため、異常のある処理済データが後段に流出することが防止される。
【００４２】
出力制御回路１８は、エラー検出回路１７からの修復完了通知を受けると、先入先出記憶回路１３における書込みの受け付けを再開する。
【００４３】
〔可変回路〕
次に、図３を参照しながら、可変回路１２の詳細構成について説明するとともに、データ処理装置１が通信機器などの装置内で伝送データの方路を変える交換機能を担うケースについて例示する。なお、図３においては、構成要素間におけるデータの流れを矢印で示しているが、構成要素間におけるデータの流れは矢印の向きに限定されるわけではない。
【００４４】
図３のように、可変回路１２は、宛先管理メモリ１２１、読出し回路１２２、ＥＣＣ演算回路１２３、データ制御回路１２４を有する。図３の例では、ＥＣＣ演算回路１２３は、読出し回路１２２に含まれる。
【００４５】
宛先管理メモリ１２１（宛先記憶回路とも呼ぶ）には、各伝送データの宛先情報と差し替える宛先データを含むリストが予め登録されている。宛先管理メモリ１２１に登録されるリストに含まれる宛先データには、誤り訂正符号（ＥＣＣ：Error-Correcting Code）が付与される。
【００４６】
読出し回路１２２は、宛先管理メモリ１２１に記憶されたリストを参照し、伝送データの宛先情報と差し替える宛先データを宛先管理メモリ１２１から読み出す。図３の例では、伝送データ１０の宛先情報（宛先Ａ）には宛先Ｂという宛先データが対応するため、読出し回路１２２は、宛先Ｂを読み出す。
【００４７】
ＥＣＣ演算回路１２３（演算回路とも呼ぶ）は、宛先データに付与される誤り訂正符号を用いて読出し回路１２２が読出した値の正否を確認する。
【００４８】
データ制御回路１２４は、データ入力回路１１から伝送データ（入力データと呼ぶ）を入力する。データ制御回路１２４には、回路情報記憶回路１６にロードされるプログラムファイルの回路情報に基づいた論理回路が構成される。
【００４９】
データ制御回路１２４は、入力データの先頭部の宛先情報を確認する。データ制御回路１２４は、確認した宛先情報を読出し回路１２２に通知する。そして、データ制御回路１２４は、読出し回路１２２からの応答で取得した宛先によって入力データの先頭部の宛先を差し替える。図３の例では、データ１０の宛先情報を宛先Ａから宛先Ｂに差し替える。
【００５０】
データ制御回路１２４は、先頭部の宛先情報を差し替えた処理済データを後段の先入先出記憶回路１３に出力する。図３の例は、先頭部の宛先情報が宛先Ａから宛先Ｂに差し替えられたデータ３〜９が先入先出記憶回路１３に保持されている状態を示す。
【００５１】
〔ソフトエラー〕
図４は、回路情報記憶回路１６にソフトエラーが発生した際に伝送データの宛先情報が誤った宛先に差し替えられている例である。図４の例では、宛先情報が宛先Ｚに差し替えられたデータ７〜９が先入先出記憶回路１３に保持されている状態を示す。なお、図４においては、構成要素間におけるデータの流れを矢印で示しているが、構成要素間における伝送データの流れは矢印の向きに限定されるわけではない。
【００５２】
例えば、回路情報記憶回路１６の一部のビットがソフトエラーにより変化すると、可変回路１２に回路障害が発生し、可変回路１２の定義が変わって異常動作を起こす部分が発生する。図４は、読出し回路１２２に回路障害が発生し、宛先管理メモリ１２１から宛先Ｂの情報を読み出すべきなのに、誤った宛先Ｚの情報を読み出す例である。図４のように、宛先情報として、宛先Ｂではなく宛先Ｚが読み出されると、宛先Ｂに配信すべき伝送データの宛先情報が宛先Ｚに差し替えられる。この状態で伝送データが出力されると、宛先Ｂに送信されるべき伝送データが宛先Ｚに送信されてしまう。通信機器の中には、１データたりとも誤った宛先に出力されることを許容できない場合があるため、宛先情報が宛先Ｚに差し替えられた伝送データが出力されると問題が発生する可能性がある。
【００５３】
本実施形態においては、先入先出記憶回路１３に処理済データが保持されている間に、エラー検出回路１７が回路情報記憶回路１６のソフトエラーの有無を確認する。言い換えると、エラー検出回路１７が回路情報記憶回路１６のソフトエラーの有無を確認している間、先入先出記憶回路１３に処理済データを保持しておく。そして、出力制御回路１８がエラー検出回路１７からのエラー検出通知を受けて先入先出記憶回路１３を制御することにより、エラー起因の伝送データを流出することを防ぎ、通信機器が伝送する伝送データの信頼性向上を実現できる。
【００５４】
（動作）
次に、本実施形態のデータ処理装置１の動作について図面を参照しながら説明する。図５は、データ処理装置１の動作について説明するためのフローチャートである。なお、図５のフローチャートに沿った以下の説明においては、データ処理装置１を動作主体とする。また、回路情報記憶回路１６には回路情報が既にロードされ、エラー検出回路１７は回路情報記憶回路１６のエラー検出を巡回しているものとする。
【００５５】
図５において、まず、データ処理装置１は、処理対象のデータを入力する（ステップＳ１１）。
【００５６】
次に、データ処理装置１は、回路情報記憶回路１６に記憶された回路情報に基づいて、入力データの宛先情報を差し替える（ステップＳ１２）。
【００５７】
次に、データ処理装置１は、宛先情報を差し替えた処理済データを先入先出記憶回路１３で保持する（ステップＳ１３）。
【００５８】
データ処理装置１は、回路情報記憶回路１６にソフトエラーを検出すると（ステップＳ１４でＹｅｓ）、読出しボトムアドレスを変更するとともに、それ以後の可変回路１２からの書込みの受付を停止する（ステップＳ１５）。
【００５９】
次に、データ処理装置１は、先入先出記憶回路１３で保持する処理済データのうちエラーを含むデータを破棄する（ステップＳ１６）。
【００６０】
次に、データ処理装置１は、回路情報記憶回路１６の回路情報に発生したエラー箇所を上書きして修復する（ステップＳ１７）。ステップＳ１７の後は、ステップＳ１１に戻る。
【００６１】
一方、回路情報記憶回路１６にソフトエラーが検出されていない場合（ステップＳ１４でＹｅｓ）、データ処理装置１は、先入先出記憶回路１３で保持する処理済データを出力する（ステップＳ１８）。
【００６２】
以上が、図５のフローチャートに沿ったデータ処理装置１の動作に関する説明である。なお、図５のフローチャートに沿った動作は一例であって、データ処理装置１の動作を限定するものではない。
【００６３】
以上のように、本実施形態では、ＳＲＡＭで構成されるコンフィグレーションメモリに回路構成の情報を保持するＳＲＡＭ型のＦＰＧＡにおいて、コンフィグレーションメモリのソフトエラー起因のビットエラーを検出して修復する。
【００６４】
コンフィグレーションメモリ適用されるメモリセルは、経済的な目的や大規模回路の実現のため、同一チップ面積上の集積密度を上げる微細化が進められており、以前と比べると放射線の影響を受けやすくなっている。そのため、ＦＰＧＡでもソフトエラーの問題が深刻となってきている。一般に、ソフトエラーの発生から検出、修復処置を終えるまでには一定の時間を要するため、ソフトエラーが修復されるまでの間、ＦＰＧＡが誤った論理回路情報に基づいて動作を行うと、異常データや欠落信号を後段に出力する可能性がある。
【００６５】
本実施形態では、論理回路による演算結果の出力部分に、処理済データを一定時間滞留させる先入先出記憶回路を設ける。そして、本実施形態では、ソフトエラーが検出された場合、先入先出記憶回路からのデータ出力を制御する出力制御回路が、誤った論理回路で処理された処理済データを破棄することにより、ソフトエラー起因の誤りや欠落を含むデータの流出を防ぐことができる。
【００６６】
すなわち、本実施形態のデータ処理装置は、コンフィグレーションメモリのソフトエラーを検出するエラー検出回路と、数ミリ秒の長さの処理済データを先入先出で一時的に記憶する記憶回路と、処理済データのデータ出力を制御する出力制御回路とを備える。そのため、本実施形態によれば、回路情報にソフトエラーが検出された場合、記憶回路に一時的に記憶されている異常のある処理済データを破棄することで、ソフトエラーに起因する誤りや欠落を含むデータが流出することを防げる。
【００６７】
言い換えると、本実施形態では、コンフィグレーションメモリのソフトエラーを検出するエラー検出回路と、ソフトエラーの発生から検出までの時間分の処理済データを滞留可能な先入先出記憶回路とを組み合わせる。その結果、本実施形態によれば、短時間であっても異常のあるデータを周辺機器に送出できない通信機器や、ファクトリーオートメーションの制御用機器などに適用するＦＰＧＡにおいて、ソフトエラー起因の異常を含むデータの流出を防ぐことができる。そのため、本実施形態によれば、通信機器が誤った宛先にデータを送付したり、制御機器が誤った指示を周辺機器に出したりすることがなくなり、機器の信頼性の向上や事故の未然防止を実現できる。
【００６８】
（第２の実施形態）
次に、本発明の第２の実施形態に係るデータ処理装置について図面を参照しながら説明する。本実施形態では、可変回路の入力側に先入先出記憶回路（以下、入力側先入先出回路）を追加し、入力側先入先出回路にデータを滞留することによって、異常機能時に喪失した伝送データや制御データを修復後の論理回路で再処理して出力する。
【００６９】
（構成）
図６は、本実施形態に係るデータ処理装置２の構成を示すブロック図である。図６のように、データ処理装置２は、データ入力回路１１、入力側先入先出記憶回路１３１、可変回路１２、出力側先入先出記憶回路１３２、データ出力回路１４、回路情報入力回路１５、回路情報記憶回路１６、エラー検出回路１７、出力制御回路１８を備える。
【００７０】
本実施形態のデータ処理装置２は、データ入力回路１１と可変回路１２との間に、入力側先入先出記憶回路１３１（第３の記憶回路とも呼ぶ）を備える点で、第１の実施形態のデータ処理装置１と異なる。データ処理装置２の出力側先入先出記憶回路１３２（第２の記憶回路とも呼ぶ）は、データ処理装置１の先入先出記憶回路１３と同様である。以下においては、第１の実施形態との相違点について主に説明し、第１の実施形態と同様の点については説明を省略する。
【００７１】
入力側先入先出記憶回路１３１は、データ入力回路１１から伝送データ（入力データと呼ぶ）を入力し、所定量の入力データを先入先出で記憶する。入力側先入先出記憶回路１３１は、読出しポインタをインクリメントしながら後段の可変回路１２に入力データを先入先出で転送する。入力側先入先出記憶回路１３１は、可変回路１２に出力した入力データを所定期間保持し続ける。例えば、入力側先入先出記憶回路１３１は、入力データをミリ秒間保持する。
【００７２】
入力側先入先出記憶回路１３１が入力データを保持する期間は、エラー検出回路１７によるエラーチェックが一巡する時間よりも長く設定すればよい。そうすれば、ソフトエラーによって異常が含まれる処理済データを出力側先入先出記憶回路１３２で破棄しても、入力側先入先出記憶回路１３１に保持された入力データを用いて、異常喪失した処理済データを修復後の論理回路で再処理できる。
【００７３】
出力制御回路１８は、回路情報記憶回路１６のエラー検出通知をエラー検出回路１７から受信すると、アドレス制御回路１３４を介して出力側先入先出記憶回路１３２の出力制御をする。このとき、出力制御回路１８は、アドレス制御回路１３３を介して入力側先入先出記憶回路１３１も出力制御する。例えば、出力制御回路１８は、回路情報記憶回路１６のエラー検出通知をエラー検出回路１７から受信すると、入力側先入先出記憶回路１３１および出力側先入先出記憶回路１３２に制御信号を送信する。出力制御回路１８から入力側先入先出記憶回路１３１および出力側先入先出記憶回路１３２に制御信号を送信するタイミングは、同時であってもよいし、ずれていてもよい。
【００７４】
ここで、図７を参照しながら、データ処理装置２がエラーを検出した際の処理について説明する。なお、図７においては、構成要素間におけるデータの流れを矢印で示しているが、構成要素間におけるデータの流れは矢印の向きに限定されるわけではない。
【００７５】
出力側先入先出記憶回路１３２は、出力制御回路１８からの制御信号に応じて、可変回路１２から受け取る処理済データの書込みポインタを、所定分前の書込みポインタに移動させる。図７の例では、出力側先入先出記憶回路１３２は、可変回路１２から受け取る処理済データの書込みポインタＮを、ミリ秒前の書込みポインタＮ’に移動させる。図７の例では、出力側先入先出記憶回路１３２に保持されるデータ５〜９のうち、正しい宛先のデータ５〜６は破棄されず、誤った宛先に差し替えられたデータ７〜９のデータが破棄される。
【００７６】
このとき、エラー検出回路１７は、出力側先入先出記憶回路１３２が書込みポインタを移動させるのと同じタイミングで回路情報記憶回路１６のビットエラーをプログラムファイルの部分的な上書きにより修復する。可変回路１２は、回路情報記憶回路１６の修復により、本来の機能を取り戻す。
【００７７】
入力側先入先出記憶回路１３１は、出力制御回路１８からの制御信号に応じて、データ入力回路１１から入力した入力データの読出しポインタを、所定時間前の読出しポインタに変更する。図７の例では、入力側先入先出記憶回路１３１は、読出しポインタＭを、ミリ秒前の読出しポインタＭ’に変更する。図７の例では、入力側先入先出記憶回路１３１に保持されるデータ７〜１２のうち、ソフトエラーに起因して誤った宛先に差し替えられたデータ７〜１０が可変回路１２に再出力される。
【００７８】
（動作）
次に、本実施形態のデータ処理装置２の動作について図面を参照しながら説明する。図８は、データ処理装置２の動作について説明するためのフローチャートである。なお、図８においては、データ処理装置２を動作主体とし、エラー検出回路１７によって回路情報記憶回路１６にエラーが検出されてからの動作について示す。
【００７９】
まず、データ処理装置２は、出力側先入先出記憶回路１３２が受け取る処理済データの書込みポインタを所定分だけ前の書込みポインタに移動させる（ステップＳ２１）。
【００８０】
次に、データ処理装置２は、回路情報記憶回路１６に記憶された回路情報にプログラムファイルを部分的に上書きして回路情報記憶回路１６のビットエラーを修復する（ステップＳ２２）。なお、ステップＳ２２の処理は、ステップＳ２１の処理と同じタイミングで実行してもよい。
【００８１】
次に、データ処理装置２は、入力側先入先出記憶回路１３１の読出しポインタを所定分だけ前の読出しポインタに変更する（ステップＳ２３）。なお、ステップ２３の処理は、ステップＳ２１およびステップＳ２２の処理の実行期間に開始してもよい。
【００８２】
次に、データ処理装置２は、出力側先入先出記憶回路１３２で保持する処理済データのうちエラーを含むデータを破棄する（ステップＳ２４）。
【００８３】
次に、データ処理装置２は、回路情報記憶回路１６に記憶された回路情報に基づいて、入力データの宛先情報を差し替える（ステップＳ２５）。
【００８４】
次に、データ処理装置２は、宛先情報を差し替えた処理済データを出力側先入先出記憶回路１３２で保持する（ステップＳ２６）。
【００８５】
そして、データ処理装置２は、出力側先入先出記憶回路１３２の処理済データが所定量溜まった段階で、出力側先入先出記憶回路１３２で保持する処理済データを先入先出で出力する（ステップＳ２７）。
【００８６】
以上が、図８のフローチャートに沿ったデータ処理装置２の動作に関する説明である。なお、図８のフローチャートに沿った動作は一例であって、データ処理装置２の動作を限定するものではない。
【００８７】
以上の本実施形態によれば、ＦＰＧＡは、ソフトエラーでの回路定義の変化によって一時的に機能不全の状況に陥るが、出力側先入先出記憶回路でのデータの滞留によって、機能不全時の異常データの流出を防ぐことができる。さらに、本実施形態によれば、入力側先入先出記憶回路でのデータの滞留によって、異常喪失したデータを修復後の回路で再処理して出力できる。
【００８８】
すなわち、本実施形態によれば、入力側先入先出回路にデータを滞留することによって、異常機能時に喪失した伝送データや制御データなどのデータを修復後の論理回路で再処理して出力することができるため、機器の異常期間を短縮できる。
【００８９】
本発明の範囲には、本発明の各実施形態に係るデータ処理装置が行うデータ処理方法も含まれる。また、本発明の範囲には、本発明の各実施形態に係るデータ処理装置による処理をコンピュータに実行させるプログラムも含まれる。さらに、本発明の範囲には、本発明の各実施形態に係るプログラムを記録したプログラム記録媒体も含まれる。
【００９０】
以上、実施形態を参照して本発明を説明してきたが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用可能性】
【００９１】
本発明の実施形態に係るデータ処理装置は、ＦＰＧＡを適用して機能を実現する通信機器やファクトリーオートメーション機器、医療測定器機器などに適用できる。
【符号の説明】
【００９２】
１、２    データ処理装置
１１    データ入力回路
１２    可変回路
１３    先入先出記憶回路
１４    データ出力回路
１５    回路情報入力回路
１６    回路情報記憶回路
１７    エラー検出回路
１８    出力制御回路
１２１    宛先管理メモリ
１２２    読出し回路
１２３    ＥＣＣ演算回路
１２４    データ制御回路
１３１    入力側先入先出記憶回路
１３２    出力側先入先出記憶回路
１３３    アドレス制御回路
１３４    アドレス制御回路
【図１】
2018181206.tif 000003
【図２】
2018181206.tif 000004
【図３】
2018181206.tif 000005
【図４】
2018181206.tif 000006
【図５】
2018181206.tif 000007
【図６】
2018181206.tif 000008
【図７】
2018181206.tif 000009
【図８】
2018181206.tif 000010