中性子線がボードのCPUやメモリなどを誤動作させる仕組み

かなり古いカンファレンスから。

半導体デバイスの信頼性技術に関する世界最大の国際会議「国際信頼性物理シンポジウム(IRPS:International Reliability Physics Symposium) 2011」のカンファレンスが4月12日~14日に米国カリフォルニア州モントレーで開催された。

 カンファレンス2日目の午前には、中性子線ソフトエラーに関する招待論文の講演があった。システム・ボードのCPUやロジック、メモリなどの半導体チップに中性子線が衝突してシステム不良を起こす仕組みと対策の最新状況が明快に説明された、とても参考になった講演だったのでその概要をご紹介したい。講演者は伊部英史氏(日立製作所 生産技術研究所 主管研究員)である(講演番号3C-2)。

地上でも問題視され出した中性子線ソフトエラー

 ソフトエラーとは一過性の不良でなおかつ、ハードウェア(半導体や電子部品など)が壊れるのではない不良を指す。ロジックやメモリなどのハードウェアそのものには異常はない。異常が発生するのは、その動作状態である。保存していた論理値が反転したり、読み出し不可能になったりする。ロジックの誤動作やメモリのデータ不良などが発生しても、リセットをかけたり、データを書き込み直したりすると、ロジックやメモリは何事もなかったかのように正常に動作する。

 ソフトエラーを発生させる原因は、いくつかある。半導体チップで最初にソフトエラーが広く知られるようになったのは、1978年のIRPSで報告されたDRAMのソフトエラーである。DRAMパッケージのプラスチック樹脂内に放射線同位元素がごく微量に存在し、アルファ線(ヘリウム原子核)を放出していた。このアルファ線の電荷がDRAMシリコン・ダイに突入して保存しておいたデータ(蓄積電荷)を破壊することが分かった。樹脂材料の改良とDRAMでの対策によって、現在ではこの問題は解決済みである。

 最近になって問題視されるようになったのは、宇宙線に起因するソフトエラーである。宇宙線(90%は陽子)が大気中の窒素原子や酸素原子などと衝突して高エネルギーの中性子線を放出する。中性子は小さいので人体を含めたほとんどすべての物質を突き抜けるのだが、まれにほかの原子核と衝突することがある。中性子線と衝突した原子核は二次粒子線と呼ばれる複数の粒子を放出する。ほとんどの二次粒子線はイオン線で電荷を持っており、シリコン・ダイの中を通過すると、ロジック回路やメモリ回路などが保持している電荷や電位などを変動させたり、反転させたりする。

 中性子線の放射量(単位時間当たり)は高度に依存しており、航空高度では高く、海面高度では低く、海面下あるいは地下ではさらに低くなる。このため航空宇宙用電子機器では中性子線ソフトエラーを考慮した設計は当然のこととなっている。これに対して海面高度に近い地上で使う電子機器では、中性子線ソフトエラーを考慮することはあまりなかった。

 しかし半導体製造技術の進歩によって加工寸法が短くなり、一方でシリコン・ダイ当たりのトランジスタ数や記憶ビット数が著しく増大することで、地上で使用する電子機器でも中性子線ソフトエラーを考慮する必要が出てきた。特に、誤動作の与える影響が重大な機器では、ソフトエラー対策を含めた誤動作対策が必須になりつつある

メモリのソフトエラー:複数ビットのデータ反転

 中性子線ソフトエラーが半導体チップで問題になってきた大きな理由の1つに、中性子線と半導体チップの1回の衝突(ヒット)によって影響を受ける範囲が広がってきたことがある。例えばSRAMでは、中性子線が1回ヒットすると、複数個のメモリセルのデータが反転するようになってきた。

 単一のメモリセルで不良が発生したときは、エラー訂正回路(ECC回路)によってセル・レベルの不良を回路レベルで無害化する。例えばハイエンド・サーバー用CPUの内蔵キャッシュメモリ(SRAMキャッシュ)は、最大2bitのエラーを訂正し、最大3bitのエラーを検出できる。

 ところが32nm技術、22nm技術といった最新または最新に近い製造技術によるキャッシュメモリでは数個、場合によっては数十個のメモリセルでエラーが発生することがある。こうなるとECC回路でも対応できず、システム・レベルでのエラーを引き起こすことになってしまう。

CPUとチップセットのソフトエラー:複数ノードの電位変動

 現在から将来に渡って深刻になりそうなのが、CPUやチップセットなどのロジック半導体で起こる中性子線ソフトエラーだ。ロジック・ゲート(論理ゲート)はそもそも、エラー訂正が効かない。このためソフトエラー対策としては回路の三重化や二重化などが採用されてきた。宇宙探査機や人工衛星、航空機などでは三重化回路はごく普通の対策手段である。ただし、同じ回路を3本載せることになるのでコストが上昇し、消費電力が上昇し、重量が増大する。しかも多重化した出力をまとめる回路が追加されるので、演算速度が低下する。

 さらに問題となるのが、微細化によって複数個の論理ゲート(あるいは論理ノード)がほぼ同時に影響を受けるようになってきたことだ。中性子線がヒットしたシリコン・ダイから、別のシリコン・ダイへとパルス状のスパイク雑音(講演ではSET(single event transient)と表記)が伝搬し、エラーとなることすらある。こうなると三重化した回路でも場合によってはエラーの発生を抑えられなくなる。

 それでは、CPUやチップセット、メインメモリなどを載せたシステム・ボードを例に、中性子線ソフトエラーが発生する様子を具体的にみてみよう。

 高エネルギーの中性子線が飛来し、CPUのシリコン原子核に衝突したとする。すると中性子とシリコン原子核の間で「破砕反応(Spallation Reaction)」と呼ばれる反応が起こり、複数個の二次粒子(二次イオン)が周囲に飛び出す。

 飛び出した二次イオンは同じシリコン・ダイの論理ノードにヒットする。論理ノードの電位が反転して不良となる。あるいは論理ノードにパルス状の雑音(SET)が発生する。発生したSETは配線を伝わり、CPUと接続されたロジック(チップセット等)に到達する。そして場合によっては、論理値の反転を引き起こす。この結果、システム・ボードでエラーが発生する。

論理ノードのソフトエラー発生モード

 ロジック半導体チップで発生するソフトエラーを、論理ノードのレベルで詳しく見てみよう。フリップフロップ(Dフリップフロップ)で発生するエラーには、3種類のモードがあると伊部氏は説明した。

(1)2次イオンがフリップフロップに直接ヒットすることによって起こるエラー
(2)2次イオンが原因のパルス状雑音(SET)がセット/リセット線に乗ることによって起こるエラー
(3)2次イオンが原因のパルス状雑音(SET)がクロック線に乗ることによって起こるエラー

 (1)はヒットしたフリップフロップのみでエラーが発生する。(2)と(3)では、パルス状雑音(SET)が乗った線に接続された複数個のフリップフロップでエラーが発生することがある。すなわち複数個の論理ノードで、ほぼ同時にエラーが起こることがある。

 またロジック回路にはフリップフロップのような順序回路(内部状態と入力によって出力が決まる回路)のほか、ANDゲートやORゲートのような組み合わせ回路(入力によってのみ出力が決まる回路)が存在する。順序回路だけでなく、組み合わせ回路まで考慮すると、二次イオンが原因のパルス状雑音(SET)が到達するタイミングによっては、エラーが発生しないこともある。これを「マスキング(masking)」と呼ぶ。

 例えば2入力ANDゲートでは、1つの入力が論理レベル「低(ゼロ)」になっていれば、もう1つの入力の論理レベルが乱されていても、出力は「低(ゼロ)」であり、エラーとはならない。またパルス状雑音(SET)は伝搬過程で減衰するので、伝搬距離が長くなるとエラーとなる確率は減少する傾向にある。またDフリップフロップでも、エラーが発生するのはクロックがアクティブ状態になっている期間だけである。

 こういった複雑な条件の下では、チップ・レベルあるいはシステム・レベルでソフトエラーの発生確率がどの程度のばらつきを有するかの知見が、ソフトエラーの発生確率を目標値以下に抑え込むには不可欠となる。そこで伊部氏は、マスキングの効果を取り入れながらソフトエラー発生確率の上限(Upper Bound)を求め、上限が目標値以下になるように対策を積み重ねていく設計手法「DOUB(Design on Upper Bound)」を提唱した。

 CPUやチップセットなどの大規模なロジック半導体を搭載したシステムでは、半導体チップごとにソフトエラーの発生確率とばらつきを定量化しておくとともに、ソフトエラーの対策手法を取り込んだときの効果とペナルティ、コストをあらかじめ見積っておくことが極めて重要である。ソフトエラー対策の効果を最大化するためには、ペナルティとコストを考慮して必要な対策と不要な対策を見極めなければならない。