知らなかったんだけど(非公式ながら)AMDはRyzen(Threadripperじゃないほう)でECCをサポートしてるらしい。 しかも、ちゃちなもんじゃなく、ガチなECCサポートだ。
で、ちょっと手元で試してみた。GIGABYTE B550 AORUS ELITE/Ryzen7 3700Xという環境。
% sudo dmidecode -t memory | grep -i error
Error Correction Type: None
Error Information Handle: 0x0008
Error Information Handle: 0x0010
Error Information Handle: 0x0012
Error Information Handle: 0x0015
Error Information Handle: 0x0017
してへんやん。ってああ違うわ…これは ECCメモリを指して、ECCモードで動いているときの話だ。
※ ECC unbufferedなメモリは別にECC非対応のシステムに挿しても動作する。単にECCモードにならないだけ。逆もそう。混ぜてもECCモードにならないだけで使える。
挿せばいいんだけど、DDR3 ECC UnbufferedなメモリとかDDR4 ECC Registaredなメモリはあるんだけど、DDR4 ECC Unbufferedなメモリが手元にない。試しに買うにもちょっと…
基本的にAMDのECCサポートは外部チップによるものではないだろうから、多分製品によってサポートするしないは変わらないんではないだろうか。
でも、Linusは「一般にはECCは必要ないというのは誤りだ」的なことを言っているけど、うーーん。
いや、エラーが発生するかどうかって話なら「するかもしれないね」と答えるんだけど、普通の使い方だと
- アプリ領域にエラーが出たらアプリを再起動すればいい
- カーネル領域にエラーが出たらシステムを再起動すればいい
くらいの感覚だからなぁ。 24時間稼働させるような連続計算も当然私はやっていたけど、おかしなことになったら常に最小でロールバックして再起動できるようにしていた。
まぁ、cache/bufferがおかしくなったらまずいのかもしれない。けど、そんなことあるかなぁ。あんまり感じたことがない。 (疑えるケースは全くないわけではないけど)
仮にECCメモリが普通にゲーミングメモリくらいの値段で売られていたとして、安いメモリでも光るメモリでもOCメモリでもなくECCメモリを買う人っていうのは大して増えてないんじゃないかと思う。