🐾

なるべく安くECCメモリを使う方法

に公開

ECC(Error correction code)メモリとは

エラー訂正コードを持ったメモリのことです。

最近のメモリの微細化は緩やかではありますが進んでおり、宇宙線などでビット反転してエラーが発生することが多くなっています。
(実際に、太陽フレアが活発な時に、データセンターのメモリエラーが多く発生するらしいです)

その時に、ECCメモリを使っていると回復できる可能性が高いため、ずっと立ち上げておくようなサーバやワークステーションで、使われています。
(エラー訂正用のビットまで反転すると回復不能になるので万全ではないです)

Linux開発者のリーナスも、カーネルの開発中にビット反転としか思えない事象が発生するのでECCメモリを使いたいと話していました。
(Intelは、ワークステーションやサーバ向けでしかECCを提供せず、リーナスは怒っていました)

メモリの種類

  • Unbuffered DIMM (UDIMM)
    • デスクトップPCやノートPCで使われます。
  • ECC Unbuffered DIMM (ECC UDIMM)
    • サーバやワークステーションで利用されます。
  • ECC Registered DIMM (RDIMM)
    • サーバやワークステーションで利用されます。

種類があるので気をつけてください。

後述するマザーボードでは「ECC Unbuffered DIMM」までの対応となるので、間違えて購入しないように注意です。

DDR5メモリはオンダイECC機能がある

速度が上がってきた影響か?エラーが無視できないレベルで発生するので、オンダイでのECC機能が積まれたらしいです。

よし、普通にPC買えば使えるぞ!!ということなのですが、オンダイECCは完全では無いのです。

完全なECC機能は、CPU-メモリ間でビット反転してもエラー訂正できますが、オンダイだけだとメモリ上のビット反転しかエラー訂正できません。

一般向けPCならオンダイだけでも十分では?

そう思います。はい。
(自分は、20年近く自作PC使ってきてメモリエラーが確定した事象はなかった気がします。。。)

オンダイでは満足できずにECCメモリに憧れる人へ

AMDのRyzenシリーズ※と、ASRockのマザーボードを使うと良いです。

※注釈
ただ、AMDのRyzenシリーズでも、Ryzen8000Gシリーズなど、ECC RAMをサポートしていないこともあるので、気をつけてください。

Ryzen 8000G Proシリーズであれば可能かも?という話もあるので、APUでECCメモリを使いたい人は望みが残されている形となります。

例)B650M-HDV/M.2
https://www.asrock.com/mb/AMD/B650M-HDVM.2/index.jp.asp#Specification

  • デュアルチャネル DDR5 Memory テクノロジ
  • 2 x DDR5 DIMM スロット
  • DDR5 ECC/non-ECC、アンバッファード・メモリに対応 最大 7200+(OC)*
  • システムメモリの最大容量: 96GB
  • 究極のメモリプロファイル (XMP) および オーバークロッキング向け拡張プロファイル (EXPO) メモリ モジュール

上記抜粋ですが、「ECC Unbuffered DIMM」に対応が明記されていますね。
(明記されていないものもあるかもしれないので、自分が買うものは必ず確認してください。)

他のマザーボードメーカーでも使えたという話もありますが、明記されていないとサポートが受けられないと思います。

また、初期のUEFI(BIOS)では、対応されていなかったらしいので最新のUEFIにアップデートしたほうがよいと思われます。

確認方法

Linux環境であれば、下記コマンドで確認できるみたいです。

$ mdb -e '0x40000030=j'
                1000000000000000000000000110000
                |                        ||
                |                        |+------ bit 4  mask 0x00000010
                |                        +------- bit 5  mask 0x00000020
                +-------------------------------- bit 30 mask 0x40000000

出典:ECC RAM on AMD Ryzen 7000 desktop CPUs
https://sunshowers.io/posts/am5-ryzen-7000-ecc-ram/

bit 30に、1が立っていたら有効らしいです。

USBメモリなどでLiveOSを作成・起動して、コマンドだけ確認するのが良いかと思います。

速度について

安定性重視なので、通常のDDR5メモリよりは遅めとなると思います。

速度重視の方は、迷わずオーバークロックメモリに行くべきかと思います。

最後に

ワークステーション向けのXeonやThreadripperでなくとも、ECCメモリを使えるのはワクテカですね。
(ワークステーション向けCPUもマザーボードも値段が高いので、通常のシリーズでECCが使えるのはお得ですね)

メモリエラーが出て悩んでいる人や、メモリエラーの恐怖から解放されたいと望む人は、使ってみてはいかがでしょうか?

Discussion