(57)【要約】【課題】プログラマブルデバイスの再コンフィグレーションが行われない場合に、複数回のソフトエラーの検出を可能にする。【解決手段】外部から転送されるコンフィグレーションデータにより回路が形成されるプログラマブルデバイスを有するデータ処理装置は、転送された前記コンフィグレーションデータを記憶する第１のメモリと、前記コンフィグレーションデータを用いてあらかじめ計算された第１の計算値を記録する第２のメモリと、前記プログラマブルデバイスの動作中に前記第１のメモリの前記コンフィグレーションデータに所定の演算を行って第２の計算値を求める計算部と、前記第１の計算値と前記第２の計算値を比較する比較部と、前記第１の計算値と前記第２の計算値が一致しない場合に、前記第２のメモリに前記第２の計算値を書き込む制御部と、を有する。【選択図】図３
2018077638.tif 000002
【特許請求の範囲】
【請求項１】
外部から転送されるコンフィグレーションデータにより回路が形成されるプログラマブルデバイスを有するデータ処理装置において、
転送された前記コンフィグレーションデータを記憶する第１のメモリと、
前記コンフィグレーションデータを用いてあらかじめ計算された第１の計算値を記録する第２のメモリと、
前記プログラマブルデバイスの動作中に、前記第１のメモリの前記コンフィグレーションデータに所定の演算を行って第２の計算値を求める計算部と、
前記第１の計算値と前記第２の計算値を比較する比較部と、
前記第１の計算値と前記第２の計算値が一致しない場合に、前記第２のメモリに前記第２の計算値を書き込む制御部と、
を有することを特徴とするデータ処理装置。
【請求項２】
前記制御部は、前記第１の計算値と前記第２の計算値が一致しない場合に、前記第２のメモリの前記第１の計算値を、前記第２の計算値と置き換えることを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記制御部は、前記第１の計算値と前記第２の計算値が一致しない場合に、前記第２のメモリの前記第１の計算値と異なるアドレスに前記第２の計算値を記録し、
前記比較部は、前記第２の計算値を次の比較の基準値として用いることを特徴とする請求項１に記載のデータ処理装置。
【請求項４】
前記計算部は、次の演算タイミングで前記コンフィグレーションデータに前記所定の演算を行って第３の計算値を求め、
前記比較部は、前記第２の計算値と前記第３の計算値を比較することを特徴とする請求項１〜３のいずれか１項に記載のデータ処理装置。
【請求項５】
前記制御部は、前記第２の計算値と前記第３の計算値が一致しない場合に、前記第２のメモリに前記第３の計算値を書き込むことを特徴とする、請求項４に記載のデータ処理装置。
【請求項６】
請求項１〜５のいずれか１項に記載のデータ処理装置と、
情報機器との接続部と、
ネットワークへの切り替え接続部と
を有する伝送装置。
【請求項７】
外部から転送されるコンフィグレーションデータにより回路が形成されるプログラマブルデバイスに対するデータ処理方法であって、
外部から転送されたコンフィグレーションデータを第１のメモリに記憶し、
前記コンフィグレーションデータを用いてあらかじめ計算された第１の計算値を第２のメモリに記憶し、
前記プログラマブルデバイスの運用中に、前記第１のメモリの前記コンフィグレーションデータに所定の演算を行って第２の計算値を計算し、
前記第１の計算値と前記第２の計算値を比較し、
前記第１の計算値と前記第２の計算値が一致しない場合に、前記第２のメモリに前記第２の計算値を書き込む、
ことを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置、これを用いた伝送装置、及びデータ処理方法に関し、特にプログラマブルデバイスにおけるエラー検出に関する。
【背景技術】
【０００２】
プログラマブルロジックデバイスのひとつに、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）がある。ＦＰＧＡは、インタフェース経由で転送された設定情報にしたがって論理回路をプログラムするデバイスである。ＦＰＧＡ内部で論理回路を構築する基本回路は、ルックアップテーブル（ＬＵＴ）と呼ばれる回路ブロックによって形成される。ＬＵＴは、コンフィグレーションメモリ（ＣＲＡＭ：Configuration Random Access Memory）をもっており、ＣＲＡＭに記憶された設定情報によって論理回路を構築する。ＣＲＡＭの設定情報を変更することにより、論理回路を自由に構成することができる。設定情報はＦＰＧＡの外部の不揮発性メモリに格納されており、ＦＰＧＡの起動時に設定情報が不揮発性メモリからＣＲＡＭへ転送される。
【０００３】
ＣＲＡＭにソフトエラーが発生し、記憶されている設定情報が変化した場合、ＦＰＧＡ内の論理回路が意図しない構成となることで誤作動を引き起こす可能性がある。ＦＰＧＡでのＣＲＡＭのエラーを検出する仕組みとして、ＣＲＣ（Cyclic Redundancy Check：巡回冗長検査）のチェックサム計算値と期待値とを比較する方法が知られている（たとえば、特許文献１参照）。また、ＣＲＡＭで発生したエラーを無視することができるか否かを判断する手法や（たとえば、特許文献２参照）、ＣＲＡＭのエラー履歴を時系列上に記録して障害発生原因の解析を容易にする手法（たとえば、特許文献３参照）が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−２７９２７号公報
【特許文献２】特開２００７−２９３８５６号公報
【特許文献３】特開２０１４−５２７８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＣＲＡＭの使用領域でエラーが発生した場合、ＦＰＧＡ内部の論理回路に異常をきたして誤作動を引き起こす可能性がある。他方、ＣＲＡＭの未使用領域でエラーが発生した場合は、論理回路に影響がないため誤作動は発生しない。エラーチェック用のＣＲＣ値はＣＲＡＭの全領域から計算されるため、エラー発生箇所がＣＲＡＭの使用領域か未使用領域かを判断することができない。
【０００６】
ＣＲＡＭのエラーを解消するためにＦＰＧＡの再コンフィグレーション（再設定）が行われるが、再コンフィグレーション中はＦＰＧＡの機能が停止する。そのため、ＦＰＧＡが適用される装置によっては、ＣＲＡＭにエラーが検出されても、論理回路の誤作動が検出されない限り、エラーの対処を保留する場合がある。この場合、ＣＲＡＭに次のソフトエラーが発生しても、ＣＲＣ値の比較結果が期待値と不一致の状態のままになっているため、エラーを検出することができない。また、次のエラー発生箇所がＣＲＡＭの使用領域で発生した場合は誤作動が生じる可能性が高いが、その誤作動がＣＲＡＭのソフトエラーに起因するものであることを特定することができない。
【０００７】
そこで、再コンフィグレーションが行われない場合に、ソフトエラーの発生を複数回検出することのできるデータ処理の技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
一つの態様では、外部から転送されるコンフィグレーションデータにより回路が形成されるプログラマブルデバイスを有するデータ処理装置は、
転送された前記コンフィグレーションデータを記憶する第１のメモリと、
前記コンフィグレーションデータを用いてあらかじめ計算された第１の計算値を記録する第２のメモリと、
前記プログラマブルデバイスの動作中に、前記第１のメモリの前記コンフィグレーションデータに所定の演算を行って第２の計算値を求める計算部と、
前記第１の計算値と前記第２の計算値を比較する比較部と、
前記第１の計算値と前記第２の計算値が一致しない場合に、前記第２のメモリに前記第２の計算値を書き込む制御部と、
を有する。
【発明の効果】
【０００９】
上記構成により、再コンフィグレーションが行われない場合に、ソフトエラーの発生を複数回検出することが可能になる。
【図面の簡単な説明】
【００１０】
【図１】本発明のデータ処理装置が適用される伝送装置のハードウェア構成図である。
【図２】本発明のデータ処理装置が適用される伝送装置の機能ブロック図である。
【図３】第１実施例のデータ処理装置の構成例を示す図である。
【図４】第１実施例のデータ処理方法のフローチャートである。
【図５】第２実施例のデータ処理装置の構成例を示す図である。
【図６】第２実施例のデータ処理方法のフローチャートである。
【図７】伝送装置のハードウェア構成の変形例を示す図である。
【発明を実施するための形態】
【００１１】
実施形態では、計算されたＣＲＣ値と期待値が不一致となった場合、ＣＲＣの計算値を次回のエラーチェックの比較の基準値として用いることで、複数回のソフトエラーの検出を可能にする。
【００１２】
図１は、実施形態のデータ処理装置１００が適用される伝送装置１のハードウェア構成図である。データ処理装置１００は、プログラマブルデバイスの一例であるＦＰＧＡ１０と、ＦＰＧＡ１０の論理回路の構築に用いられる設定情報（コンフィグレーションデータ）を保持する不揮発性メモリ２を有する。設定情報は、ＦＰＧＡ１０の論理回路を構築する際に、不揮発性メモリ２からＦＰＧＡ１０内のＣＲＡＭ１１に転送され、記憶される。
【００１３】
半導体デバイスの微細化にともなって、ＣＲＡＭ１１の素子サイズは減少を続け、ソフトエラーの影響を受けやすくなっている。ソフトエラーは、α線等の宇宙線の入射によって引き起こされる自然発生的なビット反転である。ソフトエラーの発生箇所によっては、装置の動作に影響せず、また再コンフォグレーションにより補正されるため、セル自体の機能が阻害されるハードエラーと区別して「ソフトエラー」と呼ばれている。
【００１４】
従来のＣＲＣ値の比較によるエラー検出では、ＣＲＣ計算値と期待値が異なる場合にＣＲＡＭ１１にエラーが発生したと判断されてエラー信号が出力される。これにより、１回目はソフトエラーの発生を認識することができる。ただし、実際にＲＰＧＡの論理回路の構築に用いられるセルはＣＲＡＭ１１の一部であり、使用されていないセルも多数ある。ＣＲＡＭ１１にソフトエラーが発生しても、伝送装置１の動作に影響しない場合もある。現実の運用では、ソフトエラーが検出されても、装置の動作に不具合が生じていない場合はそのまま使用を継続して、動作の中断を回避している。ＣＲＡＭ１１のエラーを解消するには、ＦＰＧＡ１０を再コンフィグレーションしてＣＲＡＭ１１内の設定情報を正しいデータに書き換える必要があるが、再コンフィグレーションの間、伝送装置１の処理機能が停止してしまうからである。
【００１５】
この状態で２回目のソフトエラーが発生した場合、すでにＣＲＡＭ１１内のセルにビット反転（ソフトエラー）が生じており、エラーチェックのためのＣＲＣ値が正しく計算されない。したがって、ＣＲＣ計算値を期待値と比較しても、追加のソフトエラーが発生しているのか否かを正しく判断することができない。また、２回目のソフトエラーがＣＲＡＭ１１の使用領域で発生した場合は、誤作動の原因となるが、ソフトエラーが誤作動の原因なのか否かを特定することができない。
【００１６】
このような技術的課題に鑑みて、実施形態のデータ処理装置１００では、ＣＲＣの計算値と期待値が不一致となった場合、ＣＲＣの計算値を次回のエラーチェックの比較の基準値として用いる。
【００１７】
図１に戻って、データ処理装置１００は、伝送装置１で送受信されるパケットの処理を行う。伝送装置１は、データ処理装置１００の他に、スイッチインタフェース（ＳＷ−ＩＦ）３、ＰＨＹ／ＭＡＣ（Media Access Control）チップ４、モジュール５、及び監視デバイス６を有する。モジュール５は、たとえばパーソナルコンピュータ（ＰＣ）等の情報機器を伝送装置１に接続するコネクタ等の部品である。ＰＨＹ／ＭＡＣチップ４は、シリアル／パラレル変換等の物理層の処理と、ＭＡＣアドレスの付与、識別等のＭＡＣ層の処理を行う。スイッチインタフェース３は、ポート間の切り替え、ネットワークへの接続等を行う。監視デバイス６は、データ処理装置１００の動作を監視する。
【００１８】
図２は、伝送装置１の機能ブロック図である。伝送装置１は、設定情報保持部１２ａ〜１２ｃ、ネットワーク接続部１３、ＰＨＹ−ＭＡＣ処理部１４、機器接続部１５、監視部１６、ＯＡＭ（Operation Administration Maintenance：運用・管理・保守）機能部１７、受信パケット処理部１８、及び送信パケット処理部１９を有する。
【００１９】
ネットワーク接続部１３は、図１のスイッチインタフェース３によって実現され、ポート間の切り替えやネットワーク接続を処理する。機器接続部１５は、図１のモジュール５で実現され、伝送装置１と各情報機器とを接続する。ＰＨＹ−ＭＡＣ処理部１４は、図１のＰＨＹ−ＭＡＣチップ４で実現され、物理層及びＭＡＣ層の処理を行う。
【００２０】
ＯＭＡ機能部１７は、ネットワーク接続部１３の接続状態やスイッチング動作を管理する。受信パケット処理部１８は、ＰＣ等の機器から受信されＭＡＣ処理されたパケットのエラーチェックを行い、ネットワークの伝送に適した形式に変換する。送信パケット処理部１９は、ネットワークで伝送されてきたパケットの解析とエラーチェックを行い、ＰＨＹ／ＭＡＣ処理部１９へ渡す。監視部１６は、ＯＡＭ機能部１７、受信パケット処理部１８、及び送信パケット処理部１９に誤動作が発生しないかを監視する。
【００２１】
図２の例では、少なくともＯＡＭ機能部１７、受信パケット処理部１８、及び送信パケット処理部１９が、図１のＦＰＧＡ１０によって実現される。設定情報保持部１２ａ〜１２ｃは、図１の不揮発性メモリ２によって実現される。ＯＡＭ機能部１７、受信パケット処理部１８、及び送信パケット処理部１９は、それぞれ個別のＦＰＧＡ１０によって実現されてもよいし、ひとつのＦＰＧＡチップで実現されてもよい。ひとつのＦＰＧＡチップを用いる場合は、ＯＡＭ、受信パケット処理、送信パケット処理の各機能に応じた数のＣＲＡＭ１１がＦＰＧＡチップ上に配置される。各機能に応じた複数の不揮発性メモリ２を用いて、対応するＦＰＧＡ１０に接続してもよいし、ひとつの不揮発性メモリ２の領域を分けて、対応するＦＰＧＡ１０の回路形成のための設定情報（コンフィグレーションデータ）を記憶してもよい。監視部１６は、図１の監視デバイス６で実現されてもよいし、ＦＰＧＡ１０によって実現されてもよい。
【００２２】
ＯＡＭ機能部１７、受信パケット処理部１８、及び送信パケット処理部１９がそれぞれ個別のＦＰＧＡ１０で実現される場合、対応するＣＲＡＭ１１のいずれにおいてもソフトエラーが発生し得る。ソフトエラーは、ＣＲＡＭ１１の使用領域、未使用領域を問わずに発生する。伝送装置１のように絶えず通信のやりとりを行っている装置では、ソフトエラーの検出の都度、ＦＰＧＡ１０の再コンフィグレーションを行うと、通信の妨げになる。ソフトエラーが検出されても誤作動が認識されない場合は、エラー状態を保持したまま通信処理を続けるほうが効率が良いが、引き続き発生する可能性のあるエラーの検出は必要である。そこで、データ処理装置１００に、複数回のエラーチェックを可能にする構成を持たせる。
＜第１実施例＞
図３は、第１実施例のデータ処理装置１００Ａの構成例を示す。データ処理装置１００Ａは、不揮発性メモリ１２と、ＦＰＧＡ１０Ａを有する。不揮発性メモリ１２は、ＦＰＧＡ１０Ａの論理回路の構成に用いられる設定情報１２１と、ＣＲＣ期待値１２２を格納する。ＦＰＧＡ１０Ａは、ＣＲＡＭ１１と、ＣＲＣ記録部１０２と、ＣＲＣ制御部１０３、ＣＲＣ比較部１０４を有する。
【００２３】
不揮発性メモリ１２に保持されている設定情報１２１は、ＦＰＧＡ１０Ａのコンフィグレーション時にＦＰＧＡ１０の内部のＣＲＡＭ１１に転送され、ＣＲＣ期待値１２２はＣＲＣ記録部１０２に転送される。コンフィグレーションが完了してＦＰＧＡ１０Ａが通常動作を開始すると、ＣＲＣ制御部１０３は定期的にＣＲＡＭ１１のデータを読み出して、ＣＲＣ値を計算する。ＣＲＡＭ１１に記憶されている設定情報１２１（すなわちＦＰＧＡ１０の論理回路を構築するためのデータ）は、ＬＵＴへのエントリやＦＰＧＡ１０Ａの動作モードの制御値、相互接続線の制御値等を含む。ＦＰＧＡ１０Ａの動作は、これらのデータが正しい値を持っていることが前提となっているので、定期的にエラーチェックが行われる。ＣＲＣ値の計算は、たとえばデータ処理装置１００Ａが適用される伝送装置１の伝送規格で規定されている計算式を用いて行われる。
【００２４】
ＣＲＣ比較部１０４は、ＣＲＣ記録部１０２に記録されている期待値を読み出して、ＣＲＣ制御部１０３によって演算されたＣＲＣの計算値と期待値を比較する。ＣＲＣの計算値と期待値が一致する場合は、ＣＲＡＭ１１の設定情報にエラーは発生していないので、ＣＲＣ制御部１０３による次のＣＲＣ値の計算を待つ。
【００２５】
比較結果が不一致の場合は、外部の監視デバイス６とＣＲＣ制御部１０３にエラー通知を送信する。エラー通知を受け取ったＣＲＣ制御部１０３は、不一致となったＣＲＣの計算値をＣＲＣ記録部１０２に書き込む。以降の比較処理では、このＣＲＣ記録部１０２に記録されたＣＲＣの計算値が用いられる。不一致判断がなされたＣＲＣの計算値は、従前の期待値に上書きされてもよいし、期待値と異なるアドレスに記録されてもよい。監視デバイス６は、エラー通知を受けて、ＦＰＧＡ１０Ａで実現される機能に誤作動が生じていないか否かを判断する。誤作動が生じていなければ、ＣＲＡＭ１１の未使用領域にソフトエラー（ビット反転）が発生しているが、ＣＲＡＭ１１内の設定情報自体に問題はない。この場合は、監視デバイス６は、再コンフィグレーションの要求を出さずにＦＰＧＡ１０Ａの動作を継続させる。
【００２６】
ＣＲＣ制御部１０３は、次のエラーチェックのタイミングでＣＲＡＭ１１のデータを読み出してＣＲＣ値を計算する。ＣＲＣ比較部１０４は、ＣＲＣ制御部１０３で演算されたＣＲＣの計算値を、ＣＲＣ記録部１０２に記録された前回エラー発生時のＣＲＣの計算値と比較する。ＣＲＣ比較部１０４での比較結果が一致する限り、ＣＲＡＭ１１の未使用領域にビット反転が生じている状態であっても、ＦＰＧＡ１０Ａの設定情報に変化はなく、適正な動作が維持される。
【００２７】
２回目以降のエラーチェックで、ＣＲＣ比較部１０４で不一致が検出されたときは、ＣＲＡＭ１１の別のセルでビット反転が生じていると考えられる。ＣＲＣ比較部１０４はエラー通知をＣＲＣ制御部１０３と外部の監視デバイス６へ出力する。監視デバイス６からの再コンフィグレーション要求がない場合は、ＣＲＣ制御部１０３は、２回目の不一致となったＣＲＣの計算値をＣＲＣ記録部１０２に書き込む。このＣＲＣの計算値は、前回の不一致時のＣＲＣの計算値に上書きされてもよいし、期待値及び前回の不一致時のＣＲＣの計算値と異なるアドレスに記録されて、エラー履歴が生成されてもよい。エラー履歴を残す場合は、不一致結果をもたらした最新のＣＲＣの計算値が、以降のエラーチェックの基準値として用いられる。
【００２８】
このようにして、再コンフィグレーションを要する誤作動が生じていないかぎり、ＣＲＡＭ１１に生じたソフトエラー状態を容認してＦＰＧＡ１０Ａの動作を継続させ、かつ、２回目以降のエラー検出の機能も担保する。これによって、ＦＰＧＡ１０Ａの動作中断を回避しつつ、複数回のエラー検出が可能になる。
【００２９】
なお、監視デバイス６が誤差動を検出した場合は、ＣＲＡＭ１１の使用領域のセル、すなわちＣＲＡＭ１１に設定されたコンフィグレーションデータ自体にエラーが発生していると判断される。この場合は、ＦＰＧＡ１０Ａの再コンフィグレーションを行って、正常動作を回復する。
【００３０】
図４は、図３のＦＰＧＡ１０Ａのエラーチェックの処理フローを示す図である。図３の説明と重複する部分は簡略化して説明する。まず、ＦＰＧＡ１０Ａのコンフィグレーションが開始される（Ｓ１１）。コンフィグレーションにより、たとえば、受信パケット処理、送信パケット処理などのユーザ定義の処理機能がＦＰＧＡ１０Ａに設定される。コンフィグレーションが開始されると、ＦＰＧＡ１０Ａは、外部の不揮発性メモリ１２から設定情報１２１とＣＲＣ期待値１２２の転送を受ける（Ｓ１２）。コンフィグレーションが完了してＦＰＧＡ１０Ａの通常動作が始まると、所定のタイミングでＣＲＡＭ１１に保存された設定情報からＣＲＣ値が計算され（Ｓ１３）、ＣＲＣ比較部１０４でＣＲＣの計算値と期待値１２２が比較される（Ｓ１４）。期待値１２２は設定情報についてあらかじめ計算されている値である。期待値とＣＲＣの計算値を比較することで、ＣＲＡＭ１１に記憶されている設定情報が正確であるか否かが確認される。
【００３１】
ＣＲＣの計算値と期待値が一致する場合は（Ｓ１５でＹＥＳ）、ＣＲＡＭ１１に記憶されている設定情報にエラーはない。この場合は、ステップＳ１３に戻って、次のエラーチェックのタイミングでステップＳ１３〜Ｓ１５の処理を繰り返す。次回のエラーチェックのループでも、ＣＲＣ記録部１０２に記録された期待値が用いられる。
【００３２】
ＣＲＣの計算値と期待値が一致しない場合は（Ｓ１５でＮＯ）、外部の監視デバイス６とＣＲＣ制御部１０３に不一致（エラー）が通知される（Ｓ１６）。不一致の通知により、今回のＣＲＣの計算値がＣＲＣ記録部１０２に記録される（Ｓ１７）。
【００３３】
ＣＲＣ制御部１０３は、外部の監視デバイス６からの再コンフィグレーション要求が受信されたか否かを判断する（Ｓ１８）。再コンフィグレーション要求がない場合は（Ｓ１８でＮＯ）、ＦＰＧＡ１０Ａの動作に影響しないＣＲＡＭ１１の未使用領域でのエラー発生の可能性が高い。そこで、発生したエラーをそのままにして、ステップＳ１３へ戻り、次のエラーチェックのタイミングでＣＲＡＭ１１の設定情報のエラーチェックを行う。次回以降の比較処理（Ｓ１４）では、ＣＲＣ記録部１０２に記録された不一致結果のＣＲＣの計算値が、比較の基準として用いられる。
【００３４】
外部から再コンフィグレーション要求を受け取った場合は（Ｓ１８でＹＥＳ）、ＣＲＡＭ１１の設定情報自体にエラーが発生していることを意味する。この場合は、ステップＳ１１に戻って、ＦＰＧＡ１０Ａを再コンフィグレーションする。
【００３５】
ＦＰＧＡ１０Ａの動作に影響しないエラー検出時のＣＲＣの計算値を次回以降の比較の基準として用いることで、再コンフィグレーションされるまでに複数回のエラーチェックが可能になる。
【００３６】
また、従来は誤作動が発生したときにエラー箇所を特定できない場合は、正常な素子を多数含んでいてもＦＰＧＡごと交換することもあるが、本発明の構成と手法により、部品交換を減らし、障害調査時間を短縮できるという効果が得られる。
＜第２実施例＞
図５は、第２実施例のデータ処理装置１００Ｂの構成例を示す。データ処理装置１００Ｂは、不揮発性メモリ１２と、ＦＰＧＡ１０Ｂを有する。不揮発性メモリ１２は、ＦＰＧＡ１０Ａの論理回路の構成に用いられる設定情報１２１と、ＣＲＣ期待値１２２を格納する。ＦＰＧＡ１０Ｂの構成要素は、図３のＦＰＧＡ１０Ａと同じであるが、データ処理の手法が異なる。第１実施例では、ＦＰＧＡ１０ＡのＣＲＣ制御部１０３が、不一致結果となったＣＲＣの計算値をＣＲＣ記録部１０２に記録するが、第２実施例２では、ＣＲＣ記録部１０２のＣＲＣの計算値の更新を外部のデバイスが行う。
【００３７】
ＦＰＧＡ１０Ｂのコンフィグレーション時に、不揮発性メモリ１２に保持されている設定情報１２１がＣＲＡＭ１１に転送され、ＣＲＣ期待値１２２がＣＲＣ記録部１０２に転送される。コンフィグレーションが完了してＦＰＧＡ１０Ｂが通常動作を開始すると、ＣＲＣ制御部１０３は定期的にＣＲＡＭ１１のデータを読み出して、ＣＲＣ値を計算する。
【００３８】
ＣＲＣ比較部１０４は、エラーチェックのタイミングで、ＣＲＣ記録部１０２に記録されている期待値を読み出して、ＣＲＣ制御部１０３で演算されたＣＲＣの計算値と期待値を比較する。ＣＲＣの計算値と期待値が一致する場合は、ＣＲＡＭ１１の設定情報にエラーは発生していないので引き続きＣＲＣ制御部１０３でのＣＲＣの計算を待つ。
【００３９】
比較結果が不一致の場合は、ＣＲＣ比較部１０４はＦＰＧＡ１０Ｂの外部の監視デバイス６にエラー通知を送信する。監視デバイス６は、ＣＲＣ監視部１６１と動作監視部１６２を有する。エラー通知を受け取ったＣＲＣ監視部１６１は、ＣＲＣ制御部１０３から不一致となったＣＲＣの計算値を読み出して、ＣＲＣ記録部１０２に書き込む。書き込まれた不一致のＣＲＣの計算値は、以降の比較処理で基準値として用いられる。第１実施例と同様に、不一致判断がなされたＣＲＣの計算値は従前の期待値に上書きされてもよいし、期待値と異なるアドレスに記録されてもよい。
【００４０】
他方、動作監視部１６２は、エラー通知を受けて、ＦＰＧＡ１０Ｂで実現される機能に誤作動が生じていないか否かを判断する。誤作動が生じていなければ、ＣＲＡＭ１１の未使用領域でのソフトエラー（ビット反転）の発生である可能性が高いので、監視デバイス６は、再設定なしにＦＰＧＡ１０Ｂの動作を継続させる。
【００４１】
ＣＲＣ制御部１０３は、所定のタイミングでＣＲＡＭ１１のデータの読み出しとＣＲＣの計算を繰り返す。ＣＲＣ比較部１０４は、エラーチェックのタイミングで、ＣＲＣ制御部１０３で演算されたＣＲＣの計算値を、ＣＲＣ記録部１０２に記録された前回エラー発生時のＣＲＣの計算値と比較する。ＣＲＣ比較部１０４での比較結果が一致する限り、ＣＲＡＭ１１の未使用領域にビット反転が生じている状態であっても、ＦＰＧＡ１０Ｂのデータ処理にエラーは発生していない。
【００４２】
２回目以降にＣＲＣ比較部１０４で不一致が検出されたときは、ＣＲＡＭ１１の別のセルでビット反転が生じている可能性がある。ＣＲＣ比較部１０４はエラー通知をＣＲＣ制御部１０３と外部の監視デバイス６へ出力する。監視デバイス６は、動作監視部１６２で誤作動が検出されない限り、ＣＲＣ監視部１６１で２回目の不一致となったＣＲＣの計算値を読み出して、ＣＲＣ記録部１０２に書き込む。次回以降のエラーチェックでは、最新のＣＲＣの不一致の計算値が、比較処理の基準値として用いられる。
【００４３】
動作監視部１６２が誤差動を検出した場合は、ＦＰＧＡ１０Ｂの再コンフィグレーションを行って正常動作を回復する。すなわち、不揮発性メモリ１２から設定情報１２１がＣＲＡＭ１１に転送されて、ロジックが再設定される。
【００４４】
図６は、図５のＦＰＧＡ１０Ｂのエラーチェックの処理フローを示す図である。図５の説明と重複する部分は簡略化して説明する。まず、ＦＰＧＡ１０Ｂのコンフィグレーションが開始される（Ｓ２１）。コンフィグレーションが開始されると、ＦＰＧＡ１０Ｂは、外部の不揮発性メモリ１２から、設定情報１２１とＣＲＣ期待値１２２の転送を受ける（Ｓ２２）。ＦＰＧＡ１０ＢのＣＲＣ制御部１０３で、ＣＲＡＭ１１に保存された設定情報からＣＲＣ値が計算され（Ｓ２３）、ＣＲＣ比較部１０４でＣＲＣの計算値と期待値１２２が比較される（Ｓ２４）。
【００４５】
ＣＲＣの計算値と期待値が一致する場合は（Ｓ２５でＹＥＳ）、ＣＲＡＭ１１に記憶されている設定情報にエラーは発生しておらず、ステップＳ２３に戻って、次のエラーチェックのタイミングでステップＳ２３〜Ｓ２５の処理を繰り返す。次回のエラーチェックのループでも、ＣＲＣ記録部１０２に記録された期待値が用いられる。
【００４６】
ＣＲＣの計算値と期待値が一致しない場合は（Ｓ２５でＮＯ）、外部の監視デバイス６に不一致（エラー）を通知する（Ｓ２６）。外部の監視デバイス６（たとえばＣＲＣ監視部１６１）により読み出されたＣＲＣ制御部１０３の不一致のＣＲＣの計算値が、ＣＲＣ記録部１０２に記録される（Ｓ２７）。
【００４７】
ＣＲＣ制御部１０３は、外部の監視デバイス６からの再コンフィグレーション要求が受信されたか否かを判断する（Ｓ２８）。再コンフィグレーション要求がない場合は（Ｓ２８でＮＯ）、ＦＰＧＡ１０Ｂの動作に影響しないＣＲＡＭ１１の未使用領域でのエラー発生の可能性が高い。そこで、発生したエラーをそのままにして、ステップＳ２３へ戻って、ＣＲＡＭ１１の設定情報のエラーチェックを行う。次回以降の比較処理（Ｓ２４）では、ＣＲＣ記録部１０２に記録された不一致結果のＣＲＣの計算値が、比較の基準として用いられる。
【００４８】
外部から再コンフィグレーション要求を受け取った場合は（Ｓ１８でＹＥＳ）、ＣＲＡＭ１１の設定情報自体にエラーが発生していることを意味するので、ステップＳ２１に戻って、ＦＰＧＡ１０Ｂを再コンフィグレーションする。
【００４９】
ＦＰＧＡ１０Ｂの動作に影響しないエラー検出時のＣＲＣの計算値を次回以降の比較の基準として用いることで、再コンフィグレーションされるまでに複数回のエラーチェックが可能になる。
【００５０】
第２実施例でも、不要な部品交換を減らし、障害調査時間を低減できるという効果が得られる。
＜変形例＞
図７は、データ処理装置の変形例としてのデータ処理装置２００を示す。データ処理装置２００は、データ処理装置１００と同様に、伝送装置３１に適用される。
【００５１】
データ処理装置２００は、不揮発性メモリ２と、ＦＰＧＡ１０と、監視デバイス６と、メモリ７を有する。不揮発性メモリ２は、ＦＰＧＡ１０をコンフィグレーションするための設定情報と期待値を有する。ＦＰＧＡ１０はＣＲＡＭ１１を有する。監視デバイス６はＦＰＧＡ１０の動作を監視するとともに、ＣＲＡＭ１１に設定された設定情報のエラーチェック結果を管理する。監視デバイス６は、ＦＰＧＡ１０のエラーチェックで不一致となったＣＲＣの計算値を、ＦＰＧＡ１０内部のＣＲＣ記録部１０２の期待値または従前の不一致のＣＲＣ計算値に上書きする。ＣＲＣ記録部１０２は、単一の比較基準値を保持し、次回のエラー判定には、ＣＲＣの計算結果は、ＣＲＣ記録部１０２に現在保持されているＣＲＣ計算値と比較される。
【００５２】
比較結果が不一致でＦＰＧＡ１０からエラー通知が出力される都度、エラーの発生時間と、そのとき比較の基準に用いられているＣＲＣ計算値、誤動作の有無、再コンフィグレーションの有無等の情報を対応付けて、順次メモリ７に記録してもよい。メモリ７に記録された情報を、後日のエラー解析に用いることができる。エラー解析により、ＣＲＡＭ１１のどの部分にソフトエラーが発生しやすいか、どの時間帯にソフトエラーが発生しやすいか等を認識することができる。
【００５３】
データ処理装置２００が適用される伝送装置３１は、図１の伝送装置１と同様に、スイッチインタフェース３、ＰＨＹ／ＭＡＣチップ４、モジュール５を有し、データ処理装置２００のＦＰＧＡ１０で、受信パケット処理、送信パケット処理、運用・管理・保守等の各機能が実現される。
【００５４】
図７の伝送装置３１では、受信パケット処理、送信パケット処理、運用・管理・保守の各機能において、ソフトエラーの発生状態を複数回チェックすることができる。加えて、データ処理装置２００のメモリ７に記録されたエラー履歴を用いて、各機能の動作状況を解析することができる。これにより、不要な部品交換を減らし、障害調査を効率的に行うことができる。
【００５５】
上述の実施例で、ＣＲＣ制御部１０３は、特許請求の範囲に記載される計算部に対応する。ＣＲＣ制御部１０３とＣＲＣ監視部１６１は、特許請求の範囲に記載される制御部に対応する。不一致の場合のＣＲＣ記録部１０２へのＣＲＣ計算値の書き込みは、ＦＰＧＡの内部で行ってもよいし、外部のモニタ回路から行ってもよい。
【００５６】
以上の説明に対し、以下の付記を提示する。
（付記１）
外部から転送されるコンフィグレーションデータにより回路が形成されるプログラマブルデバイスを有するデータ処理装置において、
転送された前記コンフィグレーションデータを記憶する第１のメモリと、
前記コンフィグレーションデータを用いてあらかじめ計算された第１の計算値を記録する第２のメモリと、
前記プログラマブルデバイスの動作中に、前記第１のメモリの前記コンフィグレーションデータに所定の演算を行って第２の計算値を求める計算部と、
前記第１の計算値と前記第２の計算値を比較する比較部と、
前記第１の計算値と前記第２の計算値が一致しない場合に、前記第２のメモリに前記第２の計算値を書き込む制御部と、
を有することを特徴とするデータ処理装置。
（付記２）
前記制御部は、前記第１の計算値と前記第２の計算値が一致しない場合に、前記第２のメモリの前記第１の計算値を、前記第２の計算値と置き換えることを特徴とする付記１に記載のデータ処理装置。
（付記３）
前記制御部は、前記第１の計算値と前記第２の計算値が一致しない場合に、前記第２のメモリの前記第１の計算値と異なるアドレスに前記第２の計算値を記録し、
前記比較部は、前記第２の計算値を次の比較の基準値として用いることを特徴とする付記１に記載のデータ処理装置。
（付記４）
前記計算部は、次の演算タイミングで前記コンフィグレーションデータに前記所定の演算を行って第３の計算値を求め、
前記比較部は、前記第２の計算値と前記第３の計算値を比較することを特徴とする付記１〜３のいずれかに記載のデータ処理装置。
（付記５）
前記制御部は、前記第２の計算値と前記第３の計算値が一致しない場合に、前記第２のメモリに前記第３の計算値を書き込むことを特徴とする付記４に記載のデータ処理装置。
（付記６）
前記第１の計算値と前記第２の計算値が一致しない場合に、不一致の発生を記録する第３のメモリ、
をさらに有することを特徴とする付記１〜５のいずれかに記載のデータ処理装置。
（付記７）
前記比較部は、前記第1の計算値と前記第２の計算値が一致しない場合に、エラーを外部に通知することを特徴とする付記１〜６の何れかに記載のデータ処理装置。
（付記８）
前記第１の計算値と前記第２の計算値が一致しない場合に、前記プログラマブルデバイスが外部から再コンフィグレーション要求を受信した場合は、前記第１のメモリに前記コンフィグレーションデータが再設定されることを特徴とする付記１〜７のいずれかに記載のデータ処理装置。
（付記９）
前記制御部は、前記プログラマブルデバイスの内部に配置されることを特徴とする付記１〜８のいずれかに記載のデータ処理装置。
（付記１０）
前記制御部は、前記プログラマブルデバイスの外部に配置されることを特徴とする付記１〜８のいずれかに記載のデータ処理装置。
（付記１１）
付記１〜１０のいずれかに記載のデータ処理装置と、
情報機器との接続部と、
ネットワークへの切り替え接続部と
を有する伝送装置。
（付記１２）
外部から転送されるコンフィグレーションデータにより回路が形成されるプログラマブルデバイスに対するデータ処理方法であって、
外部から転送されたコンフィグレーションデータを第１のメモリに記憶し、
前記コンフィグレーションデータを用いてあらかじめ計算された第１の計算値を第２のメモリに記憶し、
前記プログラマブルデバイスの運用中に、前記第１のメモリの前記コンフィグレーションデータに所定の演算を行って第２の計算値を計算し、
前記第１の計算値と前記第２の計算値を比較し、
前記第１の計算値と前記第２の計算値が一致しない場合に、前記第２のメモリに前記第２の計算値を書き込む、
ことを特徴とするデータ処理方法。
【符号の説明】
【００５７】
１、３１  伝送装置
２  不揮発性メモリ
６  監視デバイス
１０、１０Ａ、１０Ｂ  ＦＰＧＡ（プログラマブルデバイス）
１１  ＣＲＡＭ（第１のメモリ）
１０２  ＣＲＣ記録部（第２のメモリ）
１０３  ＣＲＣ制御部
１０４  ＣＲＣ比較部
１６１  ＣＲＣ監視部
１６２  動作監視部
【図１】
2018077638.tif 000003
【図２】
2018077638.tif 000004
【図３】
2018077638.tif 000005
【図４】
2018077638.tif 000006
【図５】
2018077638.tif 000007
【図６】
2018077638.tif 000008
【図７】
2018077638.tif 000009