crossbarの日記: DRAMの72-bit ECC実装 4
日記 by
crossbar
「DRAM 72-bit ECCは、1bitのエラー訂正と2bitのエラー検出ができる」
これぐらいは、一般的に知られているけど、さて、じゃあ、どういうレジスタ持たせてるんだろうって気になっていたところ、Linuxに実装されているEDACモジュールのソースコードが参考になった。ECC関連の統計レジスタ仕様が、とてもありがたい。
EDACモジュールを斜め読みしたところ、「え!?こんな機能までハードウェアで実装されとったの?」という機能が2つ有った。みんなに、ご紹介しておこう。
- Memory Scrub機能
普通にOSが走っている状態では、ほとんどアクセスされない不遇な物理アドレスもある。せっかくECCがあっても、アクセスされない領域は、エラー訂正の対象にならない。アクセスせずに放置しとくと、メモリセルが自暴自棄になって、エラーをこじらせ、そのうち訂正不可能なレベルまでデータが壊れてしまうかもしれない。こんな状態を防ぐために、定期的に全物理メモリにアクセスする機能がMemory scrub機能。人間社会でも似たようなことあるような。。。今年はちゃんと年賀状書くかな。
- Error Injection機能
実際には、メモリは滅多に壊れないのでデバッグをどうするかという問題がある。メモリとメモリコントローラの間にデバッグ環境を仕込むというのは、けっこう厳しい。この解決策として、メモリコントローラ側にError injection機能がついてたりする。システム全体の信頼性を上げるという意味で有用。
Memory Scrub機能 (スコア:0)
これはSSDにもほしいですねえ。
SSDは書き換え回数に制限があるけど、かと言ってずっと書き込まなくてもデータが揮発してしまうので。
Re:Memory Scrub機能 (スコア:1)
あるいは、表向きは普通に動作しているようにみせている状態のままでも、
裏では、データ領域をサーチして、悪いところは書き換えているかもしれません。
SSDのファームウェアがどういう挙動をしているのか、わかりませんよね。
普通に使っている限り、ファームウェアの挙動がわからないというのは、
ちょっと怖い気もします。ここからどんどん脱線していきますが、
ドライブ単体のファームウェアが、どんどん高機能化しているので、
SSDやHDDのファームウェア領域で活動しちゃうウイルスなんかも、
やろうと思えば、きっと実現できてしまうでしょう。
HDD/SSDには、キャッシュ用のDRAMがあり、制御用のCPUがあり、
巨大なストレージ空間があり、さらに自分の配下にあるデータ(OS)で、
インターネットにも自由に接続もできる。
居場所はSSDの中で、普通にアクセスできないところだから、
ウイルス検知もされにくい。考えただけでも恐ろしい。ああ、恐ろしい。
Re: (スコア:0)
冗長性ありの ZFS にして定期的に scrub 回せばよろしくない?
Re:Memory Scrub機能 (スコア:1)