ECC(Error Correction Code:誤り訂正符号)とは、データに検査用の余分なビットを付け足して記録し、読み出したときに一部のビットが反転していても、どこが間違っているかを見つけて正しい値に戻す仕組みです。メモリでは、宇宙線などで起こるソフトエラー、セルの劣化、ロウハンマーによるビット反転から、データを守るために使われます。
サーバー用のDRAMモジュールでは、64ビットのデータに8ビットの検査ビットを足し、1ビットの誤りを訂正し2ビットの誤りを検出する方式(SECDED)が古くから使われてきました。DDR5では、これとは別にDRAMチップの内部にもECC(オンダイECC)が組み込まれ、チップ内で起きた1ビットの誤りを自動で直します。ただしオンダイECCはチップ内部の信頼性を補うためのもので、サーバー向けのモジュール単位のECCの代わりにはなりません。
NANDフラッシュでは、多値化(TLC・QLC)で1つのセルが区別する電圧の段階が細かくなり、誤りがはるかに起こりやすくなります。そのため、コントローラはBCH符号や、より強力なLDPC(低密度パリティ検査)符号を使って、1ページあたり数十ビット以上の誤りを訂正します。訂正できる誤りの数は、書き換え回数の限界やデータを保てる期間を左右し、SSDの寿命設計の中心になっています。