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

# はじめに
　これまでの記事（[前々回](https://qiita.com/ken-yossy/items/d6995f359a33a2644dbb)と[前回](https://qiita.com/ken-yossy/items/173c914f5aa370590ed3)）では、「NANDフラッシュメモリのメモリセルが寿命に近づいた時に何が起き得るのか」「SSDの性能にどんな影響を与えることがあるのか」という視点で、メモリセルからのデータ読み出しとメモリセルへのデータ書き込みに注目して説明しました。

　端的にまとめると、以下の現象が起き得ます：

* メモリセルから読み出したデータに誤りが増え誤り訂正に時間がかかりSSDのRead性能が落ちる
* メモリセルへのデータ書き込みにかかる時間が変化しSSDのWrite性能が変化する
* 上記の現象が発生した結果SSDの内部処理にかかる時間も変化しSSDのRead / Write性能が変化する

　最後となる今回は、SSDが搭載するNANDフラッシュメモリのメモリセル（以降単にメモリセルと記載します）が寿命に近づいた時にこれらの他にメモリセルにどんなことが起こり得るのか、SSDとしてそれがどう見えるのかをまとめます。

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

# まとめ
* メモリセルが寿命に近づくとメモリセルのデータ消去(Erase)にかかる時間が変化する
* データ消去処理時間の変化はSSDのRead / Write性能の変化として見えることがあり得るがとても限定的

# 準備：メモリセルモデル（イメージ）の更新再び
　前回に続き、説明に入る前にメモリセルのイメージ（モデル）に新たな要素を付け加えます。

　データの読み出し(Read)、データの書き込み(Program)とくれば、最後はもちろんデータの消去(Erase)です。

　前回説明したように、「目盛付きカップ」に見立てたメモリセルにデータを書き込む（記録する）方法つまり「水を入れる方法」は、「カップの上から水を注ぐ」方法ではなく「カップの外側に水を入れて圧力をかけてカップ内に水を浸み込ませる」というものです。

　これに対してデータの消去つまり「カップから水を抜く」方法は、「カップに圧力をかけて水を吸い出す」イメージとなります。

![メモリセルのデータを消去する方法のイメージ（断面図）](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439683/5143290a-8cf0-5b04-8212-117c0563f968.png "メモリセルのデータを消去する方法のイメージ（断面図）")
図1：メモリセルのデータを消去する方法のイメージ（断面図）

　図1のように、浸透膜にデータ書き込み時とは逆の圧力をかけて水を吸い出すため、この圧力が強い、圧力をかけた累積回数が増える、などの要因で浸透膜が傷つく（＝劣化する）ことがわかります。

　これも「メモリセルの劣化」です。実際には絶縁膜（図1の浸透膜）の劣化です。メモリセルの劣化の要因が「書き換え」であるのは、「書き込み」と「消去」がどちらもメモリセル劣化の要因だからです。

　データ書き込みの際と同様に、「カップから水を抜く際に圧力をどの程度かけるか」という制御は、NANDフラッシュメモリメーカー、そしてSSDメーカー次第です。

　それではこのモデルを使用して、メモリセルが寿命に近づいた時にメモリセルに起こり得ること、およびSSDの性能に与える影響を説明します。

# メモリセルのデータ消去にかかる時間が変化する
　図1でメモリセルのデータを消去する仕組みを説明しました。

　メモリセルのデータ消去にかかる時間は、メモリセルが寿命に近づくと、つまりメモリセルの劣化が進むと、変化します。

　前回のメモリセルへのデータ書き込みと同様に、この「変化する」という言葉は、メモリセルへのデータ書き込みにかかる時間が「長くなることも短くなることもある」という意味です。

　メモリセルへのデータ書き込みと同様に、NANDフラッシュメモリメーカーもしくはSSDメーカー（さらに言えばその両方）により、メモリセルのデータ消去時にメモリセルにかける電圧の制御方法が異なり得ることが理由です。

　メモリセルの劣化が進むと、メモリセルのデータ消去時に図2のようなことが起こり得ます。

![メモリセルのデータ消去に関してメモリセルの劣化が進んだ時に起こり得ること](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439683/f627bbb7-c8af-9cd8-05f2-bf30798166f6.png "メモリセルのデータ消去に関してメモリセルの劣化が進んだ時に起こり得ること")
図2：メモリセルのデータ消去に関してメモリセルの劣化が進んだ時に起こり得ること

　図1のメモリセルモデルの浸透膜が劣化すると、図2のように「水が抜けきらない」ということが起こり得ます。原因は、例えば「浸透膜が目詰まりする」のような現象などです。

　NANDフラッシュメモリは、「メモリセルに記録したデータが確かに消去されたこと」を、図1のモデルで言えば「水が抜けたかどうか」の検査で確認します。メモリセルの劣化により図2で示したような現象が発生すると、「（十分）水が抜けた」と判断されにくくなります。

　この結果、メモリセルのデータ消去つまりErase処理に時間がかかります。

　一方で、前回データ書き込みについて「データ書き込み時にメモリセルにかける圧力を適切に制御することでメモリセルの劣化進行を緩やかにして、データ書き込み処理時間の変化を制御できる」と説明しました。

　同じことがこのデータ消去にもあてはまります。メモリセルの劣化が少ない状況でデータ消去時にかける圧力を小さくすると、データ消去にかかる時間は長くなるもののメモリセルの劣化進行を緩やかにできる、というイメージです。

　実際にそのように変化するとは限りません（あくまでイメージです）が、データ消去時にメモリセルにかける圧力を適切に制御することでメモリセルの劣化進行を緩やかにして、データ消去処理時間の変化（傾向）を制御する手法が存在します<sup>[1]</sup>。

# SSDのRead / Write性能が変化することがある
　前節で説明したように、メモリセルが寿命に近づくと、メモリセルのデータを消去するためにかかる時間が変化します。

　どのように変化するか（短くなる、長くなる）、変化の度合い、いつ頃変化するか、などは全て、NANDフラッシュメモリメーカーやSSDメーカーにより異なります。

　しかし、メモリセルからデータを消去するためにかかる時間の変化がそのままSSDユーザに見えることはほとんどない、と考えます。

　もちろん、データ消去をしている最中のメモリセルに対してデータ書き込みや読み出しを行うことはできません。

　メモリセルからのデータ読み出し、メモリセルへのデータ書き込み、メモリセルのデータ消去、それぞれの処理にかかるおおよその時間は、順に100マイクロ秒、2～4ミリ秒、10～15ミリ秒程度です。この時間はNANDフラッシュメモリメーカーや製品により大きく異なりますので、この値はあくまで「感覚」として捉えてください。

　このようにデータ読み出し、データ書き込み、そしてデータ消去は、処理にかかる時間のオーダーが異なります。データ消去にかかる時間が最も長いです。

　このため、データ書き込み処理やデータ消去処理を途中で「中断」してデータ読み出しを「割り込ませる」という技術も存在します<sup>[2]</sup>。もちろんこの手法はNANDフラッシュメモリがメモリセルへのデータ書き込み処理やデータ消去処理の中断（と再開）に対応していなければ実現できません。

　ではなぜメモリセルのデータ消去処理時間の変化がSSDの性能として見えることがほとんどないと考えるかと言うと、メモリセルのデータ消去を行う頻度が低いこと、が理由です。

　先ほどメモリセルに対するデータ読み出し、データ書き込み、そしてデータ消去の処理時間のだいたいのイメージを示しました。しかし、処理が発生する頻度（処理単位）を合わせた比較を示していませんでした。

　そこで、メモリセルへのデータ書き込みの処理時間とメモリセルからのデータ消去の処理時間を、処理単位を合わせて比較すると表1のようになります。

表1：メモリセルへのデータ書き込みとメモリセルからのデータ消去の処理時間比較（処理単位を合わせたもの）
![program-vs-erase-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439683/a7035e22-3f20-c261-a899-20592981c52c.png "メモリセルへのデータ書き込みとメモリセルからのデータ消去の処理時間比較（処理単位を合わせたもの）")

　この表1は、データ消去がブロック単位で行われるためデータ書き込み処理時間もブロック単位に換算して比較したものです。ブロック内ページ数は1536ページ(TLC)を例として使用しています<sup>[3]</sup>。

　また、データ書き込みにかかる時間とデータ消去にかかる時間は、あえてデータ消去にかかる時間の比率が大きくなるよう、前述した範囲の値から選択しています。

　表1の通り、それでもブロック単位でかかる処理時間に換算すると、データ消去にかかる時間はデータ書き込みにかかる時間の200分の1程度でしかないことがわかります。

　このため、データ消去処理時間が多少変化してもデータ書き込み処理時間の変化に比べればSSDの性能に与える影響が極僅かであると考えることができます。

　「数百から千を超えるページに及ぶデータ書き込みに対して1回のデータ消去」という処理発生頻度の違いから、もしメモリセルからデータを消去するためにかかる時間が変化しても、それが想定された変化の範囲内であれば、SSDのRead / Write性能の変化としてSSDユーザに見えたとしても軽微なはずです。

　SSD全体として見れば、メモリセルからデータを消去するためにかかる時間の変化よりも、前々回説明したメモリセルから読み出たデータの誤り訂正処理にかかる時間の変化や、前回説明したメモリセルへのデータ書き込み処理にかかる時間変化のほうが、性能に与える影響が大きいです。

# まとめ
　SSDが搭載するNANDフラッシュメモリが寿命に近づくと、メモリセルから読み出したデータへの誤りが増えること、メモリセルへのデータ書き込みにかかる時間が変化すること、の他に、メモリセルのデータ消去にかかる時間が変化することがあります。

　この結果、SSDのRead / Write性能の軽微な変化としてSSDユーザに見えることがあり得ますが、前々回および前回説明した要素のほうがSSDの性能に与える影響が大きいです。

　いずれにしても、SSDのRead / Write性能が変化した時に、その原因を切り分けるために、SSDが寿命に近づいていないか確認することは有用です。

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

# References
[1] J. Jeong et al., _"Lifetime Improvement of NAND Flash-based Storage Systems Using Dynamic Program and Erase Scaling"_, In proceedings of the 12th USENIX Conference on File and Storage Technologies (FAST ’14), pages 61-74, Santa Clara, CA, February, 2014
[2] G. Wu and X. He, _"Reducing SSD Read Latency via NAND Flash Program and Erase Suspension"_, In proceedings of the 10th USENIX Conference on File and Storage Technologies (FAST ’12), San Jose, CA, February, 2012
[3] C. Siau et al., _"A 512Gb 3-bit/Cell 3D Flash Memory on 128-Wordline-Layer with 132MB/s Write Performance Featuring Circuit-Under-Array Technology,"_ 2019 IEEE International Solid-State Circuits Conference - (ISSCC), 2019, pp. 218-220, doi: 10.1109/ISSCC.2019.8662445

# ライセンス表記
<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>の下に提供されています。