(57)【要約】【課題】回路規模や消費電力を抑制しながら、ＳＥＵによるデータの不正を検出する。【解決手段】データ不正検出装置１は、所定のワード幅を有する１つ又は複数のワードからなるパケットに対してＳＥＵ検出用チェックデータを設定するチェックデータ設定部１３と、パケットに対してＳＥＵ検出用チェックデータを付加して転送パケットを生成するパケット転送部１１と、転送パケットに付加されたＳＥＵ検出用チェックデータの値と、チェックデータ設定部１３から供給されたＳＥＵ検出用チェックデータの値とに基づき、データの不正を検出すると共に、転送パケットからＳＥＵ検出用チェックデータを除いて送信パケットを生成して外部に送信するパケット外部送信部１２とを備える。パケット外部送信部１２は、２つのＳＥＵ検出用チェックデータの値が不一致である場合に、データの不正が発生したと判断する。【選択図】図１
2016009893.tif 000002
【特許請求の範囲】
【請求項１】
所定のワード幅を有する１つ又は複数のワードからなる、外部に送信すべきパケットにおけるデータの不正を検出するためのチェックデータを設定するチェックデータ設定部と、
前記パケットに対して、前記チェックデータ設定部で設定された前記チェックデータを付加して転送パケットを生成し、該転送パケットを転送するパケット転送部と、
前記転送パケットに付加されたチェックデータの値と、前記チェックデータ設定部から供給されたチェックデータの値とに基づきデータの不正を検出すると共に、前記転送パケットから前記チェックデータを除いて送信パケットを生成し、該送信パケットを外部に送信するパケット外部送信部とを備え、
前記パケット外部送信部は、２つのチェックデータの値が不一致である場合に、データの不正が発生したと判断することを特徴とするデータ不正検出装置。
【請求項２】
前記パケット転送部は、前記パケットの最後尾に前記チェックデータを付加することを特徴とする請求項１に記載のデータ不正検出装置。
【請求項３】
前記チェックデータは、前記ワードと同一幅を有することを特徴とする請求項１又は２に記載のデータ不正検出装置。
【請求項４】
前記チェックデータは、互いに対応するすべてのビットの値が反転した２ワードのデータであることを特徴とする請求項１、２又は３に記載のデータ不正検出装置。
【請求項５】
所定のワード幅を有する１つ又は複数のワードからなる、外部に送信すべきパケットにおけるデータの不正を検出するためのチェックデータを設定するチェックデータ設定ステップと、
前記パケットに対して、前記チェックデータ設定ステップで設定された前記チェックデータを付加して転送パケットを生成し、該転送パケットを転送するパケット転送ステップと、
前記転送パケットに付加されたチェックデータの値と、前記チェックデータ設定ステップで設定されたチェックデータの値とに基づきデータの不正を検出すると共に、前記転送パケットから前記チェックデータを除いて送信パケットを生成する送信パケット生成ステップと、
前記送信パケットを外部に送信するパケット外部送信ステップとを備え、
前記送信パケット生成ステップは、２つのチェックデータの値が不一致である場合に、データの不正が発生したと判断することを特徴とするデータ不正検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ不正検出装置及びデータ不正検出方法に関し、特に、ＦＰＧＡにおけるＳＥＵの発生によって引き起こされるデータ不正を検出する装置及び方法に関する。
【背景技術】
【０００２】
近年、半導体デバイスの集積度の向上や微細化により、ＬＳＩ（Large Scale Integration）に用いられる電圧が低下している。これに伴い、ＳＲＡＭ（Static Random Access Memory）ベースで構成されるＦＰＧＡ（Field Programmable Gate Array）においては、中性子やアルファ線が原因で引き起こされるソフトエラーの発生が問題となっている。
【０００３】
ＦＰＧＡで発生するソフトエラーは、大別して、シングルイベントトランジェント（ＳＥＴ：Single Event Transient）、及びシングルイベントアップセット（ＳＥＵ：Single Event Upset）の２つに分類される。
【０００４】
ＳＥＴは、内部メモリやフリップフロップに保持されたデータが一時的に反転するソフトエラーである。一方、ＳＥＵは、ＦＰＧＡのコンフィギュレーションメモリ（ＣＲＡＭ：Configuration Random Access Memory）のセル内で発生し、ＦＰＧＡの機能不全を継続的に引き起こすソフトエラーである。
【０００５】
ＳＥＴは、内部メモリやフリップフロップに保持されたデータの値が上書きされることによって修復されるが、ＳＥＵは、ＦＰＧＡをリコンフィギュレーションしなければ修復することができない。
【０００６】
ところで、パケットの転送機能を備えるＦＰＧＡでは、ＳＥＵによりＦＰＧＡ内部のパケットデータを生成するブロックにおいて回路不全が発生した場合に、パケットの一部が連続して不正な値になることがある。このような不正なパケットをＦＰＧＡ外部に送信すると、ＦＰＧＡを使用する機器では、不正なパケットが重大な障害になる虞がある。
【０００７】
例えば、大型スイッチやルータのような高速通信機器では、ＦＰＧＡを用いてパケットの受信及び送信制御を行うことがあるが、ＳＥＵによる回路不全が発生した場合には、ＦＰＧＡ内部でパケットを転送する際に、パケットのデータ不正が連続して発生することがある。そして、この不正データを外部に送信することで、通信障害が発生する可能性がある。
【０００８】
すなわち、ＦＰＧＡ内部で扱うデータが不正となった場合には、ソフトエラーを即時検出することが重要である。
【０００９】
そこで、最近では、このようなソフトエラーを検出する様々な方法が提案され、実用化されている。ソフトエラーの検出方法としては、例えば、ＥＣＣ（Error Check and Correction）機能付きメモリを使用する方法や、三重化多数決（ＴＭＲ：Triple Modular Redundancy）技術を用いる方法、ＦＰＧＡ内部で扱うデータに対してＣＲＣ（Cyclical Redundancy Check）値を計算・付加する方法等がある。さらには、ＦＰＧＡベンダが提供する一部のＦＰＧＡにおいて、ＣＲＡＭにコンフィギュレーションされたデータに対してＣＲＣチェックを実施する機能が実装されている。
【００１０】
ＥＣＣ機能付きメモリは、メモリに誤った値が記録されていることを検出し、正しい値に訂正するものである。具体的には、例えば、６４ビットのメモリにつき８ビットの誤り訂正用データを対応させ、６４ビットのうち１ビットが誤った値となった場合に、この誤りビットを検出して訂正することができる。また、同時に２ビット以上が誤った値となった場合には、訂正できないが誤りの発生を検出することができる。
【００１１】
このように、ＥＣＣ機能付きメモリを使用する場合には、１ビットの誤り検出及び訂正、並びに複数ビットの誤り検出を行うことができる。
【００１２】
また、ＴＭＲは、ＦＰＧＡの三重化やＦＰＧＡの内部論理の三重化、フリップフロップ等の三重化を行い（例えば、特許文献１）、三重化した各々のブロックに対して同一のデータを入力し、各々の出力結果の多数決をとる方法である。そして、この方法では、３つの出力結果の何れかに不一致が発生した場合に、少数派となったデータを出力するＦＰＧＡや内部論理においてソフトエラーが発生したと考えることができる。
【００１３】
このように、ＴＭＲ技術を用いた場合には、ＳＥＴ及びＳＥＵによるソフトエラーを共に検出することが可能であり、また、ソフトエラーによるデータの反転を即時検出することができる。
【００１４】
さらに、ＦＰＧＡ内部で扱うデータに対してＣＲＣ値を計算・付加する方法を用いる場合において、データを送信するブロックでは、データに対して誤り検出関数を用いてＣＲＣ値を計算し、算出したＣＲＣ値をデータに付加して送信する。そして、送信されたデータを受信するブロックでは、受信したデータから再度ＣＲＣ値を計算し、受信したデータに付加されたＣＲＣ値と算出したＣＲＣ値とを比較する。これにより、データの信頼性を保証することができる。
【００１５】
さらにまた、ＣＲＡＭに対してＣＲＣチェックを実施する場合において、ＣＲＡＭに対するＣＲＣチェックは、ＣＲＡＭに対してコンフィギュレーションデータを書き込む際に、書き込むコンフィギュレーションデータからＣＲＣ値を計算してレジスタに格納する。そして、コンフィギュレーションが完了した後に、ＣＲＡＭからコンフィギュレーションデータ及びＣＲＣ値を読み出し、読み出したコンフィギュレーションデータから再度ＣＲＣ値を計算し、読み出したＣＲＣ値と計算したＣＲＣ値とを比較し、ＳＥＵを検出する（例えば、特許文献２）。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】国際公開第２００４／１０５２４１号パンフレット
【特許文献２】特表２００５−５０５８２７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１７】
しかし、上述した従来の各種ソフトエラー検出方法を用いた場合には、以下に示すような問題が存在する。
【００１８】
ＥＣＣ機能付きメモリを使用する場合、多くの冗長データを必要とするため、メモリの規模が増大するという問題があった。また、複数ビットでデータの誤りが発生した場合には、誤りを検出することができるものの、その誤りを訂正することができないという問題があった。
【００１９】
また、ＴＭＲ技術を用いる場合には、ＦＰＧＡ内部の論理を三重化するため、規模が通常の３倍に増加する共に、論理回路が増大することで、消費電力が大きく増大するという問題があった。また、規模が増加することにより、使用するＦＰＧＡの規模も増大するという問題があった。
【００２０】
さらに、ＦＰＧＡ内部で扱うデータに対しＣＲＣ値を付加する場合では、送信側でＣＲＣ値を計算するデータがすでにＳＥＵによって不正な値となっていたときに、不正な値のデータからＣＲＣ値を計算し、送信データに付加することになる。そのため、受信側で計算したＣＲＣ値と、受信したデータに付加されたＣＲＣ値とを比較しても、データ不正を検出することができないという問題があった。
【００２１】
さらにまた、ＣＲＡＭに対してＣＲＣチェックを実施する場合には、ＣＲＣ値のチェックの際に、ＣＲＡＭを巡回して行うため、ソフトエラーを検出するまでに時間がかかる。そのため、ソフトエラーを検出するまでの間は、不正データを正常なデータとして送信してしまうので、ソフトエラーを検出したときには、不正データをＦＰＧＡの外部にすでに送信済みである虞があるという問題があった。
【００２２】
そこで、本発明は、上記従来の技術における問題点に鑑みてなされたものであって、回路規模や消費電力を抑制しながら、ＳＥＵによるデータの不正を検出することが可能なデータ不正検出装置及びデータ不正検出方法を提供することを目的とする。
【課題を解決するための手段】
【００２３】
上記目的を達成するため、本発明のデータ不正検出装置は、所定のワード幅を有する１つ又は複数のワードからなる、外部に送信すべきパケットにおけるデータの不正を検出するためのチェックデータを設定するチェックデータ設定部と、前記パケットに対して、前記チェックデータ設定部で設定された前記チェックデータを付加して転送パケットを生成し、該転送パケットを転送するパケット転送部と、前記転送パケットに付加されたチェックデータの値と、前記チェックデータ設定部から供給されたチェックデータの値とに基づきデータの不正を検出すると共に、前記転送パケットから前記チェックデータを除いて送信パケットを生成し、該送信パケットを外部に送信するパケット外部送信部とを備え、前記パケット外部送信部は、２つのチェックデータの値が不一致である場合に、データの不正が発生したと判断することを特徴とする。
【００２４】
また、本発明のデータ不正検出方法は、所定のワード幅を有する１つ又は複数のワードからなる、外部に送信すべきパケットにおけるデータの不正を検出するためのチェックデータを設定するチェックデータ設定ステップと、前記パケットに対して、前記チェックデータ設定ステップで設定された前記チェックデータを付加して転送パケットを生成し、該転送パケットを転送するパケット転送ステップと、前記転送パケットに付加されたチェックデータの値と、前記チェックデータ設定ステップで設定されたチェックデータの値とに基づきデータの不正を検出すると共に、前記転送パケットから前記チェックデータを除いて送信パケットを生成する送信パケット生成ステップと、前記送信パケットを外部に送信するパケット外部送信ステップとを備え、前記送信パケット生成ステップは、２つのチェックデータの値が不一致である場合に、データの不正が発生したと判断することを特徴とする。
【発明の効果】
【００２５】
以上のように、本発明によれば、回路規模や消費電力を抑制しながら、ＳＥＵによるデータの不正を検出することが可能になる。
【図面の簡単な説明】
【００２６】
【図１】本発明に係るデータ不正検出装置の一実施の形態を示すブロック図である。
【図２】受信パケットについて説明するための概略図である。
【図３】ＳＥＵ検出用チェックデータについて説明するための概略図である。
【図４】転送パケットについて説明するための概略図である。
【図５】データ不正の検出方法について説明するための概略図である。
【図６】データ不正の検出方法について説明するための概略図である。
【発明を実施するための形態】
【００２７】
次に、本発明を実施するための形態について、図面を参照しながら詳細に説明する。
【００２８】
図１は、本発明に係るデータ不正検出装置の一実施の形態を示し、このデータ不正検出装置１は、大別して、受信したパケットを外部へ送信するＦＰＧＡ１０と、ＦＰＧＡ１０に対してパケットを送信するＣＰＵ（Central Processing Unit）２０とで構成される。
【００２９】
ＦＰＧＡ１０は、パケット転送部１１、パケット外部送信部１２及びチェックデータ設定部１３を備える。
【００３０】
パケット転送部１１は、ＣＰＵ２０から受信パケットを受信すると共に、後述するチェックデータ設定部１３からＳＥＵ検出用チェックデータを受信し、受信パケットの最後尾にＳＥＵ検出用チェックデータを付加した転送パケットを生成する。そして、パケット転送部１１は、生成した転送パケットをパケット外部送信部１２に転送する。
【００３１】
パケット外部送信部１２は、パケット転送部１１から転送パケットを受信すると共に、チェックデータ設定部１３からＳＥＵ検出用チェックデータを受信し、転送パケットの最後尾に付加されたデータの値と、ＳＥＵ検出用チェックデータの値とを比較し、パケットの不正が発生したか否かを判断する。
【００３２】
２つのデータの値が一致した場合、パケット外部送信部１２は、パケットの不正が発生していないと判断し、転送パケットからパケット転送部１１で最後尾に付加したＳＥＵ検出用チェックデータを除いた送信パケットを生成し、外部に送信する。
【００３３】
一方、２つのデータの値が一致しない場合、パケット外部送信部１２は、パケットの不正が発生したと判断し、パケット転送部１１から受信した転送パケットを廃棄する。そして、パケット外部送信部１２は、ＣＰＵ２０に対してＳＥＵが発生したことを示すＳＥＵ発生通知信号を送信する。
【００３４】
チェックデータ設定部１３は、ＳＥＵ検出用チェックデータを設定し、パケット転送部１１及びパケット外部送信部１２に対して転送する。ＳＥＵ検出用チェックデータの詳細については、後述する。
【００３５】
ＣＰＵ２０は、ＦＰＧＡ１０に対してパケットを送信すると共に、ＦＰＧＡ１０でＳＥＵが発生した場合に、ＦＰＧＡ１０に対するリコンフィギュレーション処理を行う。ＣＰＵ２０は、パケット外部送信部１２からＳＥＵ発生通知信号を受信した場合に、ＦＰＧＡ１０に対してリコンフィギュレーション処理を行い、パケットの再送処理を行う。
【００３６】
次に、受信パケット、転送パケット及びＳＥＵ検出用チェックデータの各種データについて、図２〜図４を参照して説明する。
【００３７】
図２は、ＣＰＵ２０から送信される受信パケットの一例を示す。受信パケットは、所定のデータ幅を有するｎワード（ｎ＝１、２、・・・ｎ−１、ｎ）のデータ（データ＃１〜データ＃ｎ）で構成されるパケットである。
【００３８】
図３は、チェックデータ設定部１３で設定されるＳＥＵ検出用チェックデータの一例を示す。ＳＥＵ検出用チェックデータは、受信パケットを構成する各データ＃１〜データ＃ｎと同一のデータ幅を有する２ワードのデータ（チェックデータＡ及びチェックデータＢ）である。チェックデータＡ及びチェックデータＢは、互いに対応するすべてのビットの値を反転させたデータである。
【００３９】
図４は、パケット転送部１１で生成される転送パケットの一例を示す。転送パケットは、図２に示す受信パケットの最後尾に、図３に示すＳＥＵ検出用チェックデータを付加したパケットである。
【００４０】
ここで、図３に示すように、ＳＥＵ検出用チェックデータとして２つのチェックデータＡ及びチェックデータＢを用いることにより、データの不正を確実に検出することができる。
【００４１】
例えば、データの変化が単なるビット反転である（データの値が「１」から「０」、又は「０」から「１」に変化する）場合には、ＳＥＵ検出用チェックデータを１ワードのデータとすることで、データの不正を検出することができる。
【００４２】
しかし、データの値が「１」又は「０」に固定的に変化する場合、１ワードだけのＳＥＵ検出用チェックデータでは、データの不正を検出することができない。そこで、ＳＥＵ検出用チェックデータを２ワードのデータとすることにより、データの値が「１」又は「０」の所定値に固定的に変化する場合でも、データの不正を検出することができる。
【００４３】
例えば、データが８ビットのデータ幅であり、最下位ビットから２ビット目（最下位ビットを第０ビットとした場合の第１ビット）の値が「１」に固定的に変化した場合について考える。
【００４４】
図５（ａ）に示すように、ＳＥＵ検出用チェックデータが１ワード（チェックデータＡのみ）であり、本来のチェックデータＡのすべての値が「０」であった場合、データの不正が発生することにより、転送パケットに付加されたチェックデータＡの２ビット目の値が「１」に変化する。そのため、転送パケットに付加されたチェックデータＡの２ビット目の値「１」は、本来のチェックデータＡの２ビット目の値「０（期待値）」とは異なるので、データの不正を検出することができる。
【００４５】
一方、図５（ｂ）に示すように、ＳＥＵ検出用チェックデータが１ワード（チェックデータＡのみ）であり、本来のチェックデータＡのすべての値が「１」であった場合には、転送パケットのデータに不正が生じ、すべてのデータの２ビット目の値が「１」に変化しても、転送パケットに付加されたチェックデータＡの２ビット目の値は「１」のままである。そのため、転送パケットに付加されたチェックデータＡの２ビット目の値「１」は、本来のチェックデータＡの２ビット目の値「１（期待値）」と一致するので、データの不正を検出することができない。
【００４６】
これに対して、図６に示すように、ＳＥＵ検出用チェックデータを２ワード（チェックデータＡ及びチェックデータＢ）とした場合には、データの不正が発生することにより、転送パケットに付加されたチェックデータＡ及びチェックデータＢの２ビット目の値が「１」に変化する。
【００４７】
ここで、本来のチェックデータＡ及びチェックデータＢは、互いに対応するすべてのビットの値を反転させたものであり、チェックデータＡの値を最上位ビットから「００００１１１１」とした場合、チェックデータＢの値は、「１１１１００００」となる。
【００４８】
そのため、本来のチェックデータＡ及びチェックデータＢの２ビット目の値（期待値）は、「１」及び「０」となるが、データの不正が発生した場合には、各々の２ビット目の値が共に「１」となる。従って、転送パケットに付加されたチェックデータＡ及びチェックデータＢのうちいずれかの２ビット目の値が、本来のチェックデータＡ及びチェックデータＢの２ビット目の値（期待値）と異なるので、データの不正を検出することができる。
【００４９】
次に、上記構成を有するデータ不正検出装置１の動作について、図１を参照して説明する。ＣＰＵ２０がＦＰＧＡ１０に対してパケットを送信すると、ＦＰＧＡ１０は、ＣＰＵ２０から送信されたパケットを受信パケットとしてパケット転送部１１で受信する。
【００５０】
パケット転送部１１は、受信した受信パケットの最後尾に、チェックデータ設定部１３から受信した２ワードのＳＥＵ検出用チェックデータを付加した転送パケットを生成し、パケット外部送信部１２に転送する。
【００５１】
パケット外部送信部１２は、パケット転送部１１から受信した転送パケットの最後尾に付加された２ワード分のデータの値と、チェックデータ設定部１３から受信した２ワードのＳＥＵ検出用チェックデータとを比較する。
【００５２】
比較の結果、２つのデータの値が一致した場合、パケット外部送信部１２は、パケットの不正が発生していないと判断し、転送パケットからパケット転送部１１で最後尾に付加したＳＥＵ検出用チェックデータを除いた送信パケットを生成し、外部に送信する。
【００５３】
一方、２つのデータの値が一致しない場合、パケット外部送信部１２は、パケットの不正が発生したと判断し、パケット転送部１１から受信した転送パケットを廃棄すると共に、ＣＰＵ２０に対してＳＥＵ発生通知信号を送信する。
【００５４】
ＣＰＵ２０は、パケット外部送信部１２からＳＥＵ発生通知信号を受信した場合、ＦＰＧＡ１０に対するリコンフィギュレーション処理を行うと共に、パケットの再送処理を行う。
【００５５】
以上のように、本実施の形態によれば、受信パケットの最後尾にＳＥＵ検出用チェックデータを付加した転送パケットを生成し、転送パケットの最後尾のデータの値と、チェックデータ設定部から受け取ったＳＥＵ検出用チェックデータの値とを比較してデータの不正を検出するため、パケットを外部に送信する前にデータの不正を検出することができ、不正なデータを含むパケットを外部に送信するのを防ぐことができる。
【００５６】
また、ＳＥＵ検出用チェックデータとして、受信パケットを構成するデータのワード幅と同一幅で、かつ２ワードのデータを用いるため、データの不正を確実に検出することができる。
【００５７】
さらに、ＳＥＵ検出用チェックデータを用いてデータの不正を検出するため、例えば、ＴＭＲ技術を用いる場合と比較して、回路規模やＦＰＧＡの規模を抑制することができる。
【符号の説明】
【００５８】
１  データ不正検出装置
１０  ＦＰＧＡ
１１  パケット転送部
１２  パケット外部送信部
１３  チェックデータ設定部
２０  ＣＰＵ
【図１】
2016009893.tif 000003
【図２】
2016009893.tif 000004
【図３】
2016009893.tif 000005
【図４】
2016009893.tif 000006
【図５】
2016009893.tif 000007
【図６】
2016009893.tif 000008