(2)

ちょっと間が開いてしまいましたが、続きです。

NANDフラッシュにはどのくらいビットエラーが発生するか?

実際のNANDフラッシュのビットエラーの発生率について、以下の文献が興味深いので紹介してみたいと思います。

  • N. Mielke, T. Marquart, N. Wu, J. Kessenich, H. Belgal, E. Schares, F. Trivedi, E. Goodness, and L. R. Nevill. "Bit Error Rate in NAND Flash Memories," In Proc. of IEEE International Reliability Physics Symposium(IRPS 2008), pp.9-19, 2008.

この文献は、2008年に開催された国際学会の予稿で、著者はIntelとMicronの社員です。文献そのものはIEEEの会員資格を取得するか、あるいはIEEEと提携している大学の回線を使わないと参照できませんが、図表のうちのいくつかはPC Watchによる日本語での紹介記事から参照することができます。
要約は上記日本語記事を見てもらうのが早いのですが、以下では少し補足を入れておきます。
まず、図表中の4つの記号のうち、△はIMFTのNAND,□はスペックが"書き換え回数10,000回"となっている製品、○と◇は"書き換え回数5,000回"の製品とスペックに書き換え回数制限が記されていない製品です(どっちがどっちかは明記されていません)。テスト内容は1万回の書き込みの後、約1年〜1年半の放置または1万回の読み込み、となっていますが、□のデバイスのみは時間切れのためか放置実験は行われていません。
"Raw Read Error Rate"(RBER)は"ECC使用前のビットエラー発生数÷読み込みビット数"を意味します。指数で表記されるとわかりにくいのですが、例えばRBER=1.0E-7*1なら1.25MBの読み込みあたり1ビット、RBER=1.0E-10なら1.25GBの読み込みあたり1ビットのエラーが発生した、ということを表します。なお、RBERの分母は"読み込みビット数"であり、"NANDの総ビット数"ではないことに注意してください。
書き換え回数が増えるごとにRBERが上昇するのはまあ当然の結果として、むしろここで注目すべきはデータ保持エラーの方です。PC Watchの記事の写真3(予稿のFigure8)を見てください。特に○のNANDは、なんと最終的に桁が3つも上昇しています。これは、約1年半の放置でエラービットが発生する頻度が1,000倍に上がったことを意味します。
一方、リードディスターブについては、1万回程度の読み込みではほとんど問題にならないようです。リードディスターブの効果は一回書き換えが行われればキャンセルされるので、実際の使用で問題になる可能性は限りなく低そうです。
残念ながら上記の日本語記事では省略されていますが、予稿の中にはエラー訂正の効果についての推定結果も掲載されています。そこで用いられていた指標は、"訂正不可能エラーが発生したセクタの割合"(Cumulative Fraction Sectors Failing=CFSF*2, 訂正不可能エラー数÷総セクタ数)と"エラー訂正を行った後のビットエラーレート"(Uncorrectable Read Error Rate=UBER,訂正不可能エラー数÷読み込みビット数)の2点です。
予稿のFigure.20は、縦軸に4ビットECCを用いた場合のCFSF、横軸に1セクタ当たりの読み込みビット数を示したものですが、かなり印象深い図になっています。その結果を箇条書きすると以下のような感じになります。

  • 1万回の書き込み終了時点で、◇のCFSFは1.0E-08(約50GBあたり1つ)程度、他3つは1.0E-14程度。
  • 放置後実験後は、○のCFSFは1.0E-04(約5MBあたり1つ)以上、◇は1.0E-05前後まで増えるのに対し、△(IFMT製)は1.0E-13程度にしか増えない。
  • HDDのUBERは1.0E-13〜1.0E-16程度。NANDフラッシュのUBERが1.0E-13を上回ったのは、○と◇の放置実験後のみ。一方△のUBERは、実験全期間を通して1.0E-16を遥かに下回る。

この結果から、NANDフラッシュの型番によってはデータ保持エラーが意外と大きな影響を及ぼすことが分かります。しかも、これらのNANDのプロセルルールは63nm〜72nmであり、現行の3xnm〜5xnm世代の製品に比べるとエラーレートはかなり低いはずです。すなわち、現行の製品のデータ保持エラーは上述の結果よりさらに悪化している可能性が高いのです。現行世代のNANDフラッシュのエラーレートについても調べてみたのですが、今のところそれらのデータが載っている論文などは見つけられていません。もし該当するデータが載っている文書をご存じの方は、教えていただければ幸いです。

その他NANDフラッシュのエラーレートに関する文書

SLC,MLC両タイプのNANDの書き換え回数とエラーレートの相関グラフが出ています。2種類のECCの効果などが出ています。残念ながら、使用したNANDの型番やプロセスルールに関する記述はありませんでした。

SLC,MLC両タイプのNANDの書き換え回数とエラーが発生したセクタ数の相関グラフと、各種ECCの効果が出ています。やはりNANDの型番やプロセスルールに関する記述はなく、また、実験に使用されたNANDがSLCで64セクタ、MLCで128セクタと少量です。



しつこいですがまだ続きます。

*1:これはプログラミングでよく使われる指数の書き方であり、1.0\times10^{-7}と同じです

*2:原稿の中ではCFSFという略称は出ていませんが、以下面倒なのでこれを使います。