背景の問題
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/07/27 07:40 UTC 版)
コンピュータシステム内部の電磁気的な干渉により、ダイナミックRAM(DRAM)の1ビットが自発的に反転することがある。はじめはチップのパッケージに含まれる不純物から放射されるアルファ粒子が主な原因だと考えられていたが、DRAM チップの単発的なソフトエラー(英語版)の多くは環境放射線、主に二次宇宙線に含まれる中性子によって1つかそれ以上のメモリセル(英語版)の内容が変化するか、読み出しまたは書き込み回路が妨害されるためであることが研究で示された。したがって誤り率は標高とともに急速に上昇する。たとえば、標高1,500mでは海面よりも中性子束が3.5倍に増え、10〜12kmの高度(旅客機の巡航高度)では300倍にもなる。 その結果、高度の高い場所で運用される装置には特別な信頼性対策が必要となる。 一例として、1997年に打ち上げられた土星探査機・カッシーニは、それぞれ2.5ギガビットの市販のDRAMチップを持つ同型のフライトレコーダーを2つ搭載していた。組み込みの誤り検出訂正機能(EDAC)のおかげで、探査機のエンジニアリングテレメトリは(訂正可能な)ワードあたり1ビットのエラーと(訂正不可能な)ワードあたり2ビットのエラーの数を報告してきた。はじめの2年半の飛行で、探査機は1日に約280回でほぼ一定の1ビットエラーを知らせてきた。しかし1997年11月6日、1日のエラーの数は4倍以上だった。これは GOES 9 衛星が検知した太陽フレアの影響だった。 DRAMがどんどん高密度になり、チップ上の部品が微小化すると同時に、動作電圧が低下し続けるため、DRAMチップがそのような放射線の影響をより頻繁に受けるようになることが懸念された。低エネルギーの粒子がメモリセルの状態を変化させられるようになるからである。一方、メモリセルが小さくなれば標的が小さくなるわけであり、またSOIのような技術への移行により、個々のメモリセルの感受性は従来と変わりないか、むしろ低下するかもしれない。最近の研究は、プロセスの形状により、またメモリセルのエラー発生率が上昇するという予測に根拠がなかったことにより、宇宙線によるシングル・イベント・アップセット(英語版)(SEU、一時的なソフトエラー)が劇的に減少したことを示している。 2007〜2009年の研究で、エラーの発生率が10−10 エラー/ビット・時(およそ1ギガバイトのメモリで1時間に1ビットのエラー)から 10−17 エラー/ビット・時(およそ1ギガバイトのメモリで千年に1ビットのエラー)まで7桁にわたってさまざまであることが発表された。グーグルの非常に多くのサーバーを対象にした大規模な研究がSIGMETRICS/Performance’09 conference で発表された。実際に観測されたエラー発生率は小規模な研究よりも数桁高く、1メガビットあたり10億時間ごとに 25,000〜70,000回だった (およそ 2.5〜7 × 10−11 エラー/ビット・時、つまり8ギガバイトのRAMで1時間に5ビットのエラー)。毎年8%以上の DIMM がエラーの影響を受けていた。 メモリエラーの結果はシステムによって異なる。ECCのないシステムでは、エラーはクラッシュかデータの損失を招く。大規模な工場では、メモリエラーはマシンのクラッシュを起こすもっとも一般的なハードウェア的原因の1つである。メモリエラーはまた、セキュリティの脆弱性の原因にもなる。観測可能な誤動作の原因になったり、計算または保存に使われるデータに影響したりしなければ、メモリエラーの影響を受けないことがある。2010年のシミュレーション研究から、ウェブブラウザに対して、メモリエラーのわずかな一部分のみがデータの損失を引き起こすが、しかし多くのメモリエラーは断続的で相関的なので、メモリエラーの影響は独立なソフトエラーから予期されるよりも大きいことが示された。 隣接したメモリセルへの特別に細工したアクセスによる意図しない副作用により、DRAMメモリセルどうしの分離が迂回されうるといくつかの実験は結論づけている。したがって、近年のメモリセル密度の上昇に伴い、DRAMに格納されたデータへのアクセスがメモリセルに電荷の漏れと電気的な相互作用を引き起こし、元のメモリアクセスで指定されていない近傍の行の内容が書き換わる。この効果はロウハンマーとして知られており、コンピュータセキュリティ上いくつかの特権昇格(英語版)攻撃に使われている。 例として、1ビットエラーは、エラーチェックのないシステムでは無視されるだろう。パリティチェックのあるマシンは停止するだろうし、またはECCによって自動的に訂正されるかもしれない。ASCII形式で数字を保持している表計算ソフトが読み込まれているとしよう。"8"の文字(2進数で 0011 1000)が格納されたバイトの最下位ビットが、チップの故障で1に固定されてしまうか、環境放射線や宇宙線によって1に変化してしまうと、表計算ソフトとその保存データが変化する。結果として"8"はこっそりと"9"(2進数で 0011 1001)になってしまう。
※この「背景の問題」の解説は、「ECCメモリ」の解説の一部です。
「背景の問題」を含む「ECCメモリ」の記事については、「ECCメモリ」の概要を参照ください。
- 背景の問題のページへのリンク