FPGAのアーキテクチャとソフトエラー起因の可用性低下
概要
-
FPGAは手軽に作り直せるH/Wなので多様な製品に使われますが、宇宙線(中性子線)で故障しやすいので、サーバなどの高可用性を要求される機器では注意が必要です。
-
FPGAのアーキテクチャを知ることでソフトエラーの発生メカニズムを理解できます。併せて発生時の症状と対処法を紹介します。
-
スピーカー : たつやさん さん
-
前提条件 : ANDやORなどの論理式を知っていること
-
資料 : https://docs.google.com/presentation/d/1tCvmvaJQTQPUc5pLHGZTmCFcHgqbkLEKgEOrEQ5oxHs/
要約
FPGA の大体の構造
- 赤い箱 = スライス、もしくはロジックエレメント
- 青い箱 = 配線間の接続オンオフを行うスイッチ
- 赤い箱と青い箱が交互に2次元に並んでいる
※ アイランド型などと呼ばれたりする現代の FPGA の代表的な構造
FPGA はどうやって回路を実現しているか
- 論理回路を直接トランジスタで実現する代わりに、論理回路の真理値表のデータを保持した SRAM を使うことで、事実上論理回路のゲートの役割をさせる
- リソース消費が大きい代わりに、後から任意のロジックを書き込める
実際のコンパイルはこうやる
- プログラマが作りたい回路を実際に FPGA に入る形式に変換する必要がある
- 例えば6入力、2出力の論理回路は、6入力1出力のルックアップテーブルの2並列で表現できる
- これを自動的に行ってくれる工程が論理合成であり、それ用のツールが存在
- ソフトウェアにおけるコンパイラといえる
実際の使い方(典型例)
- FPGA の動作を決めているSRAMは揮発性(電源を切るとリセットされる)。
- そこで、できあがった出力バイナリは、専用ツールを使ってボード(FPGA等が実装された基板)上の Flash メモリに書き込む
- ボードに電源を投入すると Flash から FPGA にロードされる
FPGAに中性子(宇宙線)が当たるとどうなるか
- 要はメモリが書き換わる。データが変わる。
- FPGA の場合は、SRAM のデータが書き換わると回路の意味が変わってしまう。 -「なにもしてないのにこわれました」が起こる
起こってしまったらどうするか
-
基本は書き込み直すしかない。
-
Partial Reconfiguration という技術でエラーに応じて部分的に書き込み直す方法、定期的に全体を書き込み直し続ける方法等が存在する。
-
どうやってエラーを検知するか?
- 最近のデバイスには ECC が付いてて検知できるらしい
そもそも予防はできないの?
- 論理を3重化して多数決回路を挿入することで、3倍+αの回路規模を支払ってエラーを予防することができる
- 1回路が故障してエラーを出力しても、残り2回路の多数決で正確な結果が維持される
もう一つの予防法
- 不揮発性のメモリそのもので論理を定義しているデバイス(CPLD)を使う事で発生率を下げられる
- 但し容量が小さく大規模な回路を構成できない
どれぐらいインパクトがあるの?
- 宇宙用途であれば必ず考慮する必要がある
- 地上でも高可用性が求められる機器は CPLD の使用が望ましいケースもある
まとめ
- FPGA は LUT で論理回路を構成する programmable な素子
- ソフトエラーは宇宙線が素子に命中すると起こる問題
- FPGA は揮発性メモリ内蔵で、ソフトエラーに弱い
- CPLD は不揮発性メモリ内蔵で、ソフトエラーに強い
- ソフトエラーは電源再投入で直る
質問 / コメント等
-
Q: FPGA (CPLD)を適用するのに最適な分野は?
-
A1: 割り込みとかリアルタイム処理を多用する時はマイコンより FPGA 実装がやりやすい
-
A2: 画像変換処理や、特定の計算を繰り返すときに有効
-
Q: 新世代の FPGA ほどソフトエラー率が低いというのはどういうこと?
-
A: プロセス微細化で面積が小さくなるので命中率は下がるが、命中した時にそれがエラーになる確率上昇、その影響の足し算が総合では低くなる方向に行っているのではないか。
聴講者から出た参考リンク
-
メモリの種類
-
マイクロソフトはどうやってBingをFPGAで実装したか
-
メモリのビット反転エラーとセキュリティの話
-
SEU effects in FPGAHow to deal with them?(2009)
結論
- ぜんぶ中性子のせいだ(たぶん)。