crossbarの日記: DRAMの72-bit ECC実装 4
「DRAM 72-bit ECCは、1bitのエラー訂正と2bitのエラー検出ができる」
これぐらいは、一般的に知られているけど、さて、じゃあ、どういうレジスタ持たせてるんだろうって気になっていたところ、Linuxに実装されているEDACモジュールのソースコードが参考になった。ECC関連の統計レジスタ仕様が、とてもありがたい。
EDACモジュールを斜め読みしたところ、「え!?こんな機能までハードウェアで実装されとったの?」という機能が2つ有った。みんなに、ご紹介しておこう。
- Memory Scrub機能
普通にOSが走っている状態では、ほとんどアクセスされない不遇な物理アドレスもある。せっかくECCがあっても、アクセスされない領域は、エラー訂正の対象にならない。アクセスせずに放置しとくと、メモリセルが自暴自棄になって、エラーをこじらせ、そのうち訂正不可能なレベルまでデータが壊れてしまうかもしれない。こんな状態を防ぐために、定期的に全物理メモリにアクセスする機能がMemory scrub機能。人間社会でも似たようなことあるような。。。今年はちゃんと年賀状書くかな。
- Error Injection機能
実際には、メモリは滅多に壊れないのでデバッグをどうするかという問題がある。メモリとメモリコントローラの間にデバッグ環境を仕込むというのは、けっこう厳しい。この解決策として、メモリコントローラ側にError injection機能がついてたりする。システム全体の信頼性を上げるという意味で有用。