ECCにも限界
読み出し妨害への対策として一般的なのが、誤り訂正符号(ECC)の利用である。読み出し妨害とは、データを読み出さないページにも負荷が掛かり、しきい値電圧が低下する現象を指す。読み出し妨害がビット誤り率を増大させ、書き込んだデータを正確に読み出しにくくなる。そこで、読み出したデータ内のビット誤りをECCで訂正してホスト側に送信する。
だが、ECCにも限界があり、例えば「20bit/512Byte(20ビット・パー・512バイト)」と記載されている場合、512バイトのデータに対して、20ビットまでは間違っていても修正できることを意味する。つまり破損箇所が、21ビット以上だと修正できなくなる。
NANDのように、時間経過とともに電子リークが進行し、破損するビット量が増加する可能性が高いメモリの場合は、ECCだけでは十分とはいえない。しかも、微細化と共に、搭載すべきECCのビット数は増加傾向にある。50nm世代では8ビット、20nm世代では40ビット、10nm世代では60ビットになる。
そのため、SSDの中には、データの破損箇所が一定のビット以上になったら、強制的にデータを別のブロックに書き換える機能を備えた製品がある。これを「リフレッシュ処理」と呼ぶ(図3)。この処理の機能を備えたSSDを利用し、かつ定期的に読み出し処理を実行するファイルであれば、起動時にデータが読み出せないという問題はほとんど起こらない。
ただし、リフレッシュ処理機能を備えたSSDであっても、ほとんど読み出し処理を実行しないファイルの場合、読み出さない間に誤りビット数がECCで訂正できる値を超えてしまい、データを読み出せない恐れがある注2)。
注2)なお、Windowsの「Autoexec.bat」といった起動時だけ読み込まれるファイルは、起動時以外はリフレッシュ処理の対象にならない。