SSDの寿命とNANDフラッシュメモリ(1/3)：「保証書き換え回数」の意味

# はじめに

　NANDフラッシュメモリを不揮発性メディアとして採用したSSD（以降、単にSSDと記載します）の寿命を考える際、NANDフラッシュメモリの寿命を抜きに考えることはできません。

　「NANDフラッシュメモリの寿命」と聞いて誰もがまず思い浮かべるのは、やはりメモリセルの信頼性だと思います。NANDフラッシュメモリのメモリセルの信頼性としては、大きく「書き換え回数」と「読み出し回数」の2つが重要ですが、一般的には「書き換え回数」が注目されます。実際、NANDフラッシュメモリの寿命を左右する要因の中で最も大きいのは「書き換え回数」です。

　ここで言う「書き換え回数」とは、NANDフラッシュメモリにおける「（ブロックの）Erase (Program)回数」のことになります。

　しかし、「**保証**書き換え回数」と言った場合、これは実は「Erase (Program)操作が可能であることを保証する回数」のことではありません。

　そこで、ここから数回の記事で、以下の内容についてまとめたいと思います。

* NANDフラッシュメモリの「**保証**書き換え回数」とは何のことなのか
* SSDの寿命にとってこの回数はどのような意味を持つのか
* SSDではその他NANDフラッシュメモリの信頼性上の制約にどのように対応しているのか
    * メモリセルの「保証読み出し回数」への対応など

　今回はまず、NANDフラッシュメモリの「保証書き換え回数」についてまとめます。

# まとめ

* 「**保証**書き換え回数」は、「書き換えができること」ではなく「書き込んだデータが正しく読めること」を保証している
* これはNANDフラッシュメモリのメモリセルのデータ書き換えとデータ保持能力の仕組みによるもの


# 保証書き換え回数は「書き換え可能保証回数」ではない

　冒頭に書いた通り、NANDフラッシュメモリの「保証書き換え回数」は、「書き換え(Program / Erase)ができることを保証する回数」ではありません。**「書き込んだデータが正しく読めることを保証する回数」**です<sup>[1]</sup>。

　つまり、**保証しているのは「書き換えができること」ではなく「書き込んだデータが正しく読めること」なのです**。

　これは、ユーザ視点でストレージという製品に求める機能を考えると、すっきり説明できます。

　使う側の視点でストレージに求める最大の機能は、「書き込んだデータが正しく読み出せること」です。「書き換えが特定の回数できること」よりも「書き込んだデータが正しく読み出せること」を保証してもらえることのほうが重要です。

　極論すると、たとえ十億回の書き換えが可能なメモリセルが存在しても、書き換え回数0回（新品）の状態ですら書きこんだデータが正しく読み出せないのであれば、その書き換え可能回数には全く価値がありません。

　加えて、NANDフラッシュメモリのメモリセルのデータ保持能力は、書き換え回数（Program / Erase回数）が増えると低下することがわかっています。

　そこで、**「この書き換え回数までは、書き込んだデータが正しく読み出せることを保証する」**としているわけです（誤り訂正能力などの条件付きですが）。

　それでは、なぜこのような保証の仕組みになっているのかということについて、NANDフラッシュメモリにおけるデータ記録の仕組みから順番に見ていきます。

# メモリセルのデータ書き換えの仕組み

　NANDフラッシュメモリの「保証書き換え回数」の理解には、NANDフラッシュメモリのデータ書き換えの仕組みを理解することが不可欠です。

　そこで、まず、NANDフラッシュメモリのメモリセルの説明で良く使われるモデルを使って、NANDフラッシュメモリのデータ書き換えの仕組みを説明します。

　図1は、Multi-Level-Cell (MLC; 2 bits/cell)のメモリセルと、そのデータ書き換えの仕組みを非常に簡略化したモデルです。メモリセルは、図1中の「目盛付きカップ」に相当します。

![NANDフラッシュメモリのメモリセルとデータ書き換えのイメージ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439683/f77ba982-1357-ec83-caee-f0ceb67d1640.png "NANDフラッシュメモリのメモリセルとデータ書き換えのイメージ")
図1：NANDフラッシュメモリのメモリセルとデータ書き換えのイメージ

　図1 (B)のように、水を入れることでメモリセルにデータを書き込み(Program)ます。MLCであれば4種類の値のうちどの値を書き込むかによって、入れる水の量を調節します。

　図1 (B)の場合は、"01"の目盛より上まで水が入っているので、このメモリセルには"01"というデータが書き込まれたと解釈します。

　そして、図1 (B)の状態から図1 (C)の状態にすること、つまり水を抜くことがメモリセルの消去(Erase)に相当します。水を抜くことで、再びメモリセルに水を入れる（＝データを書き込む）ことができるようになります。

　したがって、この図1のモデルになぞらえると、NANDフラッシュメモリのメモリセルは水を入れたり抜いたりすることでデータの書き換えを実現している、ということになります。

# メモリセルのデータ保持能力低下の仕組み

　次に、図1と同じモデルを使って、NANDフラッシュメモリのメモリセルのデータ保持能力が低下する仕組みを説明します。

　NANDフラッシュメモリのメモリセルは、データの書き換えを繰り返すことでそのデータ保持能力が低下します。これは、図2のように表すことができます。

![NANDフラッシュメモリのメモリセルの書き換え回数増加によるデータ保持能力低下のイメージ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439683/2c0f8b5d-d844-8e5f-f3f6-adad1117a1ba.png "NANDフラッシュメモリのメモリセルの書き換え回数増加によるデータ保持能力低下のイメージ")
図2：NANDフラッシュメモリのメモリセルの書き換え回数増加によるデータ保持能力低下のイメージ

　図1では、水を入れることがメモリセルにデータを書き込むことだと説明しました。それに対して、メモリセルのデータ保持能力の低下とは、メモリセルであるカップに「穴があく」ことに相当します。

　穴があくと、カップに入れた水が穴から漏れてしまいますので、カップ内の水の量が減ってしまいます。これが「データ保持能力の低下」です。

　このデータ保持能力の低下度合いは、一般的に、書き換え回数が多くなるとより大きくなります。図2のモデルにおける「穴」になぞらえれば、メモリセルのデータ保持能力の低下度合いが大きくなることは、穴が増えたり大きくなったりすることに相当します。

　データ保持能力の低下度合いの進行度は、メモリセルそれぞれによって異なります。さらに言えば、操作時の温度なども影響を受けます。ですので、全てのメモリセルを同じ回数書き換えたからといって、全メモリセルのデータ保持能力が同じになる（同じように低下する）ことはありません。低下度合いが大きいメモリセルもあれば、低下度合いが小さいメモリセルもあります。

# メモリセルのデータ保持能力が低下するとどうなるか

　図2では、メモリセルのデータ保持能力の低下が、メモリセルに見立てたカップにあいた「穴」である、と説明しました。

　そこで、データ保持能力が低下したメモリセルにデータを書き込む（＝水を入れる）とどのようになるのかを、図1や図2と同じモデルを使って表現したものが図3になります。

![データ保持能力が低下したメモリセルのイメージ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439683/162c4836-de6d-7a0c-0a5d-33690848b3ba.png "データ保持能力が低下したメモリセルのイメージ")
図3：データ保持能力が低下したメモリセルのイメージ

　これまでの説明で、「水を入れること」がデータを書き込むことで、「水を抜くこと」が消去することだと説明しました。

　この図3のように、データ保持能力が低下した（＝穴があいた）メモリセルであっても、「水を入れること」と「水を抜くこと」は可能です。もちろん、入れた水は穴から漏れてしまいますが。

　一方で、NANDフラッシュメモリのメモリセルは「どの値を書き込むかによって入れる水の量を調節する」とも説明しました。

　したがって、「どの値を書き込みたいか」によって決めた量の水をメモリセルに入れたとしても、もしメモリセルに穴があいていたら、水が漏れてしまい、入れた当初より水量が減ってしまいます。**これがデータの誤りに繋がります**。

　メモリセルのデータ保持能力が低下することによりデータ誤りが生じる様子を、これまでと同じモデルで表現したものが図4です。

![メモリセルのデータ保持能力の低下によりデータ誤りが生じる様子（イメージ）](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439683/b908463f-e61f-6e18-70bd-95e052bde3e3.png "メモリセルのデータ保持能力の低下によりデータ誤りが生じる様子（イメージ）")
図4：メモリセルのデータ保持能力の低下によりデータ誤りが生じる様子（イメージ）

　上で説明した通り、メモリセルのデータ保持能力が低下していても、「水を入れること」と「水を抜くこと」、つまりデータの書き換え（ProgramとErase）は可能です。

　しかし、データを書き込んでから時間が経つと、水漏れによってカップ内の水量が減ってしまい、水を入れた当初意図した量より少ない量の水しかメモリセルに残っていない状態になってしまいます。

　図4では、"01"というデータを書き込むために必要な量の水を入れたのに、メモリセルにあいた穴による水漏れのせいで、"00"というデータだと判断される程度の量しか水が残っていない状態になってしまっています。

# NANDフラッシュメモリの「保証書き換え回数」の意味

　ここで、この記事の目標である「保証書き換え回数」の意味の説明に戻ります。

　冒頭で指摘した通り、ユーザ視点で重要なのは「書き込んだデータが正しく読めること」です。

　したがって、NANDフラッシュメモリのメモリセルのデータ保持能力に関する保証は「～～であれば書き込んだデータは正しく読める」と表現されるべきです。この「～～」の部分に保証条件が入ります。

　図4を使って説明した通り、NANDフラッシュメモリのメモリセルは、主に書き換え回数が増えるとデータ保持能力が低下し、書き込んだ時のデータと読み出す時のデータが異なる状態になり得ます。そして、漏れる水の量（＝データに誤りが生じる確率）はデータを書き込んだ後放置される時間にも依存します。

　このことから、「書き換え回数が○○回までであれば、××時間放置しても、△△（能力を示す表現）の誤り訂正機構があれば、書き込んだデータは正しく読める」という形で、メモリセルのデータ保持能力保証を定義することができます（図5）。

![NANDフラッシュメモリのデータ保持能力を特徴づける3要素](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439683/3badf844-71bd-44e8-37e2-27972d659b9a.png "NANDフラッシュメモリのデータ保持能力を特徴づける3要素")
図5：NANDフラッシュメモリのデータ保持能力を特徴づける3要素

　この「書き換え回数が○○回までであれば、××時間放置しても、△△の誤り訂正機構があれば、書き込んだデータは正しく読める」という、NANDフラッシュメモリのメモリセルのデータ保持能力保証の定義に含まれる**「書き換え回数が○○回まで」という部分が「保証書き換え回数」として独り歩きしているのです**。

　例えば、Winbond製SLC NANDフラッシュメモリのデータシート<sup>[2]</sup>には以下のような記載があります。

> * Endurance 100,000 Erase/Program Cycles
>    * Endurance specification is based on 4bit/528 byte ECC (Error Correcting Code)
> * 10-years data retention
>
> _Winbond製SLC NANDフラッシュメモリのデータシート<sup>[2]</sup>より抜粋_

　この内容を直訳すると、**「書き換え回数が10万回までであれば、書き込んで10年放置した後でも、528バイトにつき4ビット訂正可能な誤り訂正機構を用いることで、書き込んだデータは正しく読める」**となります。

　見方を変えると、この記述は、「10万回書き換えた後にデータを書き込んで10年放置すると、528バイト（＝4224ビット）あたり4ビットを超えるデータ誤りが生じる可能性がある」とも解釈できます。

　これは、図1から図4までに示したようなカップが4224個あったときに、書き換え回数が10万回を超えると、5個以上のカップが図4のようにデータ誤りを引き起こしてしまう可能性がある、という意味になります。

# まとめ

　今回の記事では、SSDの寿命を考える際に欠かせないNANDフラッシュメモリの寿命、特に「保証書き換え回数」について、NANDフラッシュメモリのメモリセルのデータ書き換えとデータ保持能力の仕組みを用いて、説明しました。

　重要なのは、「保証書き換え回数」は「書き換え（データ書き込みと消去）操作が可能であることを保証する回数」ではなく「書き込んだデータが正しく読めることを保証する回数」であることです。

　次回は、SSDにとってこの「NANDフラッシュメモリの保証書き換え回数」はどのような意味を持つのか、について説明する予定です。

# 参考文献
[1] インプレス、_「[開発の現場から最新事情をレポート](http://www.dosv.jp/other/0910/10.htm)」_、DOS/V Power Report 2009年10月号、2009
[2] Winbond, _"[W29N02GVXIAF 2G-BIT 3.3V NAND FLASH MEMORY](https://www.winbond.com/resource-files/w29n02gvxiaf_revc.pdf)_"(PDF), Revision C, December, 2017

# ライセンス表記
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="クリエイティブ・コモンズ・ライセンス" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />この記事は <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">クリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンス</a>の下に提供されています。