2010/05/30(Sun)SPDToolでECCメモリをNon-ECC化する方法
2010/05/30 5:28
ハード的にチェック機能が備わっているところもったないないが、ECC機能をオフにして転用することを考えた。その時のメモ。
ECCとは
PC用のメモリにはNon-ECCメモリとECCメモリという2種類があり、一般的にはNon-ECCメモリが多く普及している。ECCというのはError Check and Correctのことで、データ誤りを正しく訂正するための機能である。Non-ECCに比べて若干高価で、サーバ用のハードウェアなどには標準的に採用されている。
ただ、冒頭にも書いたように、ECCメモリに対応しているマザーボードは少なく、メモリとマザーボードが両方対応しなければエラーで起動すらしない。また、ECCメモリとNon-ECCってメモリを混在して起動することも出来ない。
なので、デスクトップ製品にサーバ製品のパーツを流用するときには困ることが多いわけだ。
SPD
メモリには、記憶域以外にSPD(Serial Presence Detect)という小さな8本足のチップが載っている。これにはメモリチップの種類や容量、周波数、信号タイミング、ECC情報などが一通り格納されており、EEPROMなので書き換えが可能である。
今回はこのEEPROMを書き換えてメモリをNon-ECCのように見せかけるわけである。
このようなICチップを書き換えるには、専用のライターハードウェアが必要に思われるが、なんと起動しているWindows上からソフトウェア的に書き換える方法もあるらしい。それがSPDToolというツール。現在、Forumで配っている0.63が最新の模様。
SPD書き換えについて
DIMMのSPDを書換えてメモリの種類を変更するを参考にさせて頂いた。ハードウェアを用いた方法を説明されているが、前節で書いたようにソフトウェアでやる方法を紹介する。
注意点として、SPD書き換えを行う時点では、ECCメモリが起動するマザーボードを用意しておく必要がある。
一旦書き換えてしまえば、ECC非対応のマザーボードでも起動できるようになるのだが、一つ注意がある。
上記サイトの最後にあるように、SPDをソフトウェアライトプロテクトするマザーボードがあるらしく、一旦変更して他に流用すると、Non-ECCからECCに戻せなくなることもあるようだ。
SPDTool
まずはSPDToolをダウンロード。起動すると、FFで埋まったテキストボックスがあるはず。
次に、メモリの状態をロードする。
[File]->[Read]->[Module X: Installed]を選ぶ。
Xの部分には、マザーボードのスロット番号に対応する数字が入っているはずなので、間違えないように。
変更する前にバックアップを取ることをお奨め。
[File]->[Save]で適当な名前で保存する。
さて、次に変更に入る。
今回の肝である、ECCと書いてある部分をNon-ECCに変更する。
"DIMM error detection/correction features"を、"ECC"から"None"へ変更。
この状態だと設定値のチェックサムが狂うので、[Edit]->[Fix Checksum]を選ぶ。
[File]->[Compare]->[Module X: Installed]すると、以下のように2カ所が赤くなっているはず。
いよいよ、書き込み。
祈りながら、[File]->[Write]->[Module X: Installed]を選ぶ。くれぐれも書き込み先を間違えないように。
念のため1度再起動して、例えばEVERESTなどのツールで確認すると、きちんとUnbuffered DIMMになっていることが確認できる。
最後に
SPDToolの使い方を懇切丁寧に解説したサイトが見あたらなかったので書いてみたが、やりたいことの意味が分かっていれば、そんなに迷うこともないなと感じた。まあ、参考になれば幸いかな。