今年7月、Freescaleとエルイーテックは、高信頼プロセッサ・ソリューションの共同開発に関するプレスリリースを発表した。この話はこちらの記事でも触れているが、実はこの記事を読んでもいまひとつピンと来なかったのだが、幸いFTF Japan 2014のTechnology Showcase会場でエルイーテックがブースを出しており(Photo01)、ここで細かい話をお聞きすることが出来たのでご紹介したいと思う。

Photo01:QorIQ LS1020Aを利用しての動作デモ。左がFUJIMIを有効、右が無効にした状態である。ここで不意の割り込みを掛けると、左は自動的に復活して画面に縦のカラーバーの出力を始めるが、右は止まったままである

先の記事にもある通り、このソリューションは煩雑にリセットを掛けることで高信頼性を確保する、というものである。同社は元々Z80ベースのMCUを利用したシステムを手がけており、このレベルで高信頼性を確保する方法として同社が「FUJIMI」と呼ぶ今回のテクノロジを開発している。では同社にとって高信頼性とは何か? という話を。同社の定義によるMCUの動作状態は

レベル CPUの動作状態 ノイズ電圧(概ね)
0 正常な実行状態
1 スプリアス割込(要因の無い割込) ~100V
2-1 周辺回路の設定の変更 ~500V
2-2 RAM、1wordの内容変更 ~500V
3 CPUの動作異常 ~1KV
4 RAMの内容の大幅な変更 ~3KV
5 ラッチアップ(回路燃焼) ~5KV

となるとしている。レベル0が正常な状態で、同社によれば99.9999%以上はこの状態で動作するとしている。レベル1は割込を禁止した状態でも、要因の無い割込が発生するというもので、これはNMIとはまた違った話である。レベル2-1は周辺回路の設定異常が発生し、CPUによらず変な出力をしたり、逆に変な入力を受け取るというもので、2-2はこれがRAMに発生したというものである。レベル3が今回の主眼で、CPU回路そのものにノイズが入って動作が異常になるというケースだ。ちなみにレベル4は電源からのサージなどで発生するとされ、システム全体の再起動が必要になる。レベル5は物理的に破壊という話なので、これは速やかに電源を落とすしかない。

さて、今回の技術はそんなわけでレベル3の異常が起きた場合にどう対処するかというものである。一般にこうした用途ではWatchdogが利用されるが、こちらはアプリケーションソフトウェア側の対策が必要だし、一度Resetが掛かると通常は初期化から始まることになるので、長時間の処理を行っている場合には、実行中の処理が元の木阿弥になってしまうという欠点がある。別の解はDual CoreのLock Stepであるが、こちらはシリコンコストが倍増する上に、99.9999%以上の正常動作時は2つ目のコアは無駄に動くことになるため、消費電力の観点からお得な解とは言いがたい。

ではFUJIMIはどんなものか? というのがこちらである(Photo02)。

Photo02:リセットの後の復帰では、問題がなければすぐに再開できるが、問題があった場合には相応に処理が必要になる。とはいえ、致命的なエラーでなければWatchdogよりも短い時間で復帰できることになる

FUJIMIは一定期間ごとにリセットを掛けるが、それに先立ちアプリケーション情報の保存を毎回行っている。正常動作中は常に

情報退避→リセット→情報復帰

を繰り返すから、リセットを挟んで処理が継続できる。ところがCPUに何らかの異常が発生した場合、次のリセットに先立つ情報保存ができない。なのでリセットが掛かると、その前の段階で保存した情報を元に再度復帰することになる。これにより、異常が発生しても、処理のやり直しを最小限に抑えられるという訳だ。

もっとも当然ながらこんな煩雑にリセットと、その前後の情報退避/復帰には処理コストが掛かる。説明によれば、現在はリセット期間が10ms程度にされており、この場合の処理コストはCPU性能にして2~3%程度とか。ちなみに最初にインプリメントされたZ80の場合は2msだったらしい。この期間を短くすれば障害時の暴走時間を短く出来る反面処理性能へのインパクトが大きいし、逆に長くすると処理負荷は減るものの、障害時の暴走時間がそれだけ増えるので、あとはアプリケーション要件とのバランスということになるのだろう。

ちなみにこのFUJIMIを利用するためには、Photo03の様な構成が必要になる。ポイントはグリーンの部分で、要するに「CPUだけ」にリセットを掛ける回路があるかどうか。これが無いと、リセットのたびにシステム全体が初期化されてしまうので、迅速な復帰が不可能になる。こうした構成をとっているのは、FreescaleではQorIQ LS1020Aのみで、あとは元富士通、現Spansion(というか、来年にはCypressになる)のFM3/FM4シリーズの一部製品、およびDragonchipの8051ベースのMCUのみということであった。

Photo03:意外にこういう構成をとったMCUやMPUは少ないらしい

ちなみにここまででお分かりの通り、ソフトウェアのエラーなどには効果がないし、熱暴走などの状況では短期的に解決しない。あくまでもレベル3の一時的なエラーのみに、このFUJIMIの効果がある形だ。とはいえ、WatchdogとLockstepの間を埋める、低価格の割に効果的なソリューションと言えそうである。