2006年7月14日

メモリのソフトエラー

 Cosmic Ray Induced Soft Errorによると、メモリの内容は、たまに宇宙線による影響で壊れるらしい。1GBytesのメモリをつんだPCの場合で、5日に1回の確率。

 結構多いよなぁ。MEMTEST86とかを動かして放置していたらエラーを検出できるだろうか。

 MEMTEST86の場合、テストデータを書いた後、直ぐに読み出すため、エラー検出率が下がるかもしれない。読んだ後、次のテストデータを書くまでの間にエラーが発生したら検出できない。

 通常の利用環境下で発生しても、それが宇宙線の影響なのか、ゲイツの影響なのかは判断しにくいだろう。


 宇宙線の影響を調べるためには、一度書いたデータをずっとそのままにして、一定間隔でベリファイしなければならない。通常使っているPCでも、一部のメモリについて調べれば、エラーが起きたかどうか知れて嬉しいかな?

 テストプログラムは簡単に作れそうな気がする。ただ、メモリ確保するために単にmalloc()を使ってはダメだろう。OSによってスワップアウトされてしまう。物理メモリを固定的にゲットするAPIを呼ばなければならない。

 GlobalAlloc に GMEM_FIXED を渡して呼べば固定になるのかな? と思ったけど、仮想メモリ空間で固定だった。ユーザーアプリケーションから物理メモリを確保するのは無理なのか?

 面倒なので調査終了。

Posted by rukihena at 23:07:21
トラックバックURL

このエントリーのトラックバックURL:
http://weblog.rukihena.com/mt/mt-tb.cgi/498

コメント