SSDのNANDが寿命に近づくと何が起きる？(1/3)

# はじめに
　NANDフラッシュメモリに「書き換え回数」という寿命が存在することは広く知られていますが、NANDフラッシュメモリの書き換え回数が寿命とされる回数に近づいたときに実際に何が起きるのか、SSDとして（SSDのユーザから）その事象がどのように見えるのか、ということはあまり知られていない気がします。

　そこで、**SSDが搭載するNANDフラッシュメモリのメモリセル（以降単にメモリセルと記載します）が寿命に近づいた時に、メモリセルに何が起きるのか、SSDとしてそれがどう見えるのか**をまとめます。

　今回は、寿命が近づくとメモリセルからのデータ読み出しにどんな影響を与えるのか、その影響はSSDの性能としてはどう見えるのか、を説明します。

※ この記事ではNANDフラッシュメモリを不揮発性記憶媒体として使用するSolid State Drive (SSD)のことを単にSSDと表記します

# まとめ
* メモリセルが寿命に近づくとメモリセルから読み出したデータに含まれる誤りが多くなる
* その結果、コントローラでの誤り訂正処理時間が増加してSSDのRead性能が低下する

# 復習：NANDフラッシュメモリの「寿命」とは何なのか
　まず「NANDフラッシュメモリの寿命」を再確認します。

　「NANDフラッシュメモリの寿命」は、一般的に「保証書き換え回数」として表されます。この「保証書き換え回数」は、[この記事](https://qiita.com/ken-yossy/items/3ab1a823dde4ced919fc)で説明したように、「この書き換え回数までであれば、予め決めた時間だけ放置した後でも、ある規定の能力の誤り訂正を適用することで、書き込んだデータを正しく読み出せる（復元できる）」という回数のことです。

　そして図1は、メモリセルのデータ保持能力が低下するイメージを表現したものです。図1中の「目盛付きのカップ」がメモリセルを表現します。「メモリセルに記録された値」は「カップ内の水量がどの目盛より水量が多いか」で表されます。

![書き換え回数増加によるメモリセルのデータ保持能力低下のイメージ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439683/d590c072-da58-bd40-192c-33c715a92fe5.png "書き換え回数増加によるメモリセルのデータ保持能力低下のイメージ")
図1：書き換え回数増加によるメモリセルのデータ保持能力低下イメージ（再掲）

　メモリセルの書き換え回数が増えると、図1に描いたメモリセルに穴が開くイメージで、メモリセルのデータ保持能力が低下します。データ書き込み時に入れた水が時間経過とともに漏れて、水量が減少するイメージです。

　そして、データを書き込んでから予め定めた時間を経過した後に読み出した値（計量した水量）が規定の能力の誤り訂正機構でも訂正できなくなる時が「寿命」であり、その時までに繰り返した書き換え回数が「保証書き換え回数」です。

# 寿命に近づくと起きる（頻度が高くなる）こと
　図1では、メモリセルが寿命に近づいたときに起きることを、メモリセルをカップにたとえたイメージで説明しました。

　このイメージによれば、メモリセルの寿命が近づくと、以下のことが起きることになります。

* 水を入れても穴から漏れ出ていく
    * 入れた水量を維持するのが難しくなる
    * 期待した水量の水を入れることも難しくなる
* 穴があるので（水量が減るため）水を抜くのにかかる時間が全体的に短くなる

　ただし、メモリセルへのデータ書き込み制御方法などNANDフラッシュメモリの内部制御方法に依存して、上記以外の現象が発生することもあります。

　それでは、これらメモリセルが寿命に近づくことにより発生する現象が、メモリセルからのデータ読み出しに与える影響と、その影響がSSDの性能としてはどう見えるのかを説明します。

# NANDが寿命に近づくとSSDのRead性能が低下する
　メモリセルが寿命に近づくとSSDのRead性能が低下します。

　メモリセルからのデータ読み出し時間は、メモリセルに電圧をかける回路など周辺回路の劣化により長くなることはありますが、メモリセルが寿命に近づいたことによるデータ保持能力低下では長くなりません。

　それにもかかわらずメモリセルが寿命に近づくとSSDのRead性能が低下する理由は、メモリセルから読み出したデータに含まれる誤りが多くなるためです。

　SSDに限らずHard Disk Drive (HDD)などを含めたストレージは、一般論として、メディアから読み出したデータに含まれる誤りが多くなる、つまり「メディアのエラーレート(Bit Error Rate: BER)」が高くなると、誤り訂正処理に時間がかかるようになり、Read性能が低下します。

　SSDの場合、メディアのBERが高くなる要因のひとつが「メモリセルが寿命に近づくこと（データ保持能力が低下すること）」であるため、メモリセルが寿命に近づくとSSDのRead性能が低下する、というわけです。

　SSDが備える誤り訂正機構は製品・メーカーによって様々です。

　[この記事](https://qiita.com/ken-yossy/items/0f43eb4d7c3cdbc47713)で説明しましたが、メモリセルのデータ保持能力低下に起因するランダムエラーに対してはBose-Chaudhuri-Hocquenghem (BCH)符号やLow-Density Parity-Check (LDPC)符号などが用いられます。

　これらの方式のうちのいくつか（例：LDPC符号）は、誤りビット数などに依存して訂正処理にかかる時間が変化します。

　そのような符号の場合、一般的に、誤りビット数が多い時は少ない時（メモリセルの保持能力が低下していない時）より誤り訂正にかかる時間が長くなります。

　また同じ誤り訂正方式でも、誤りビット数の多少（エラーレートの高低）などに応じて、使用する符号を切り替える<sup>[1]</sup>、訂正回路（ハードウェア）を使い分ける、などの方式もあります。

　誤りビット数が多い時に使われる回路は訂正に時間がかかることが多いです。使い分ける理由には、ハードウェア回路規模の制約もあります。

　簡略化したイメージで示すと図2のようになります。

![メモリセルからのデータ読み出し処理のイメージとデータ保持能力の差による読み出し処理所要時間の差](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439683/5680b1eb-7c8d-c5e7-c0f8-f6d90cbe3274.png "メモリセルからのデータ読み出し処理のイメージとデータ保持能力の差による読み出し処理所要時間の差")
図2：メモリセルからのデータ読み出し処理のイメージとデータ保持能力の差による読み出し処理所要時間の差

　図2は、データ保持能力がそれほど低下していないメモリセル（上段）と、データ保持能力の低下が進んでいるメモリセル（下段）について、データ読み出し処理とそれにかかる時間のイメージを示したものです。

　メモリセルからのデータ読み出しは、カップ（メモリセルのイメージ）内の水量を目盛で読み取ることに相当するため、メモリセルのデータ保持能力に関わらず、ほぼ同程度の時間で実施できます。

　しかし、読み出した値が誤りを含む場合、後段に控えるSSDコントローラによる誤り訂正処理が必要です。

　このため、読み出した値に誤りが多く含まれる場合、読み出した値が含む誤りが少ない場合と比較して相対的に「読み出し処理」全体の処理時間が長くなり、SSDとしてみた場合のRead性能が低下します。

　上記ランダムエラー向け誤り訂正機構でも訂正できない場合は、Redundant Array of Inexpensive Disks (RAID)技術を応用した誤り訂正機構などの大規模エラー対策機構が使用されますが、大規模エラー対策機構による誤り訂正処理時間は、ランダムエラー向け誤り訂正機構による訂正処理時間よりもはるかに長いです。

　SSDがSelf-Monitoring, Analysis and Reporting Technology (S.M.A.R.T.)をサポートしている場合、SSDが備える誤り訂正機能に関する統計情報（例：検出した誤りビット数）を監視することで、このような変化の検出が可能です。

　なお、**全てのSSDがNANDフラッシュメモリが寿命に近づいたときにRead性能低下を招くとは限りません**。NANDフラッシュメモリが寿命に近づいた時に誤り訂正処理時間が長くなることを見越して、その他の状況での性能を調整することも可能だからです。

　このあたりは、メーカーや、SSDの用途および特性などに依存します。

# まとめ
　今回の記事では、「NANDフラッシュメモリのメモリセルの書き換え回数が寿命とされる回数に近づいたときに実際に何が起きるのか、SSDとしてユーザからその変化はどう観測されるのか」という視点で、「SSDのRead性能低下」について説明しました。

　NANDフラッシュメモリのメモリセルが寿命に近づいてデータ保持能力が低下すると、メモリセルから読み出したデータに含まれる誤りが多くなり、コントローラによる誤り訂正処理に時間がかかるようになるため、SSDのRead性能が低下します。

　この現象は、「メディアのエラーレートが高くなるとRead性能が低下する」というストレージの一般的性質そのものとなります。

　SSDを、またSSDが搭載するNANDフラッシュメモリを、寿命まで使い尽くすことはなかなかないかと思いますが、SSDのRead性能が低下した際、原因切り分けのために「SSD（NANDフラッシュメモリ）が寿命に近づいていないか」を確認することは有用です。

　SSDが寿命に近づいているかどうかは、SSDが対応していれば、S.M.A.R.T.などの統計情報により判断可能です。

# References
[1] S. Wang et al., _"Lifetime Adaptive ECC in NAND Flash Page Management"_, In proceedings of Design, Automation & Test in Europe Conference & Exhibition (DATE), pages 1253-1556, 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>の下に提供されています。