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

# はじめに
　NANDフラッシュメモリのメモリセルが寿命に近づくと何が起きるのか、SSDの性能にどんな影響があるのか、という視点で、[前回の記事](https://qiita.com/ken-yossy/items/d6995f359a33a2644dbb)では以下のことを説明しました。

>　メモリセルのデータ保持特性が劣化することでメモリセルからデータを読み出した時に誤りが多くなり、コントローラでの誤り訂正処理に時間がかかるようになるため、SSDのRead性能が低下する

　今回は、SSDのWrite性能を中心に、SSDが搭載するNANDフラッシュメモリのメモリセル（以降単にメモリセルと記載します）が寿命に近づくとどんな影響があるのかをまとめます。

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

# まとめ
* メモリセルが寿命に近づくとメモリセルへのデータ書き込みにかかる時間の変化が起こり得る
    * 長くなるか短くなるかはNANDフラッシュメモリおよびSSDコントローラが行う制御により異なる
* メモリセルへのデータ書き込みにかかる時間が変化するとSSDのWrite性能だけでなくRead性能も変化することがある
    * Read性能が変化するのは内部処理でのメモリセルへの書き込み時間が変化するため

# 準備：メモリセルモデル（イメージ）の更新
　説明に入る前に、これまで使用してきたメモリセルのモデル（イメージ）に新たな要素を付け加えます。

　というのも、今回の内容ではメモリセルにデータを書き込む（記録する）方法つまり「目盛付きカップに水を入れる方法」が重要なのですが、このことをまだ説明していないためです。

　カップに水を入れる方法は、実は「カップの上から水を注ぐ」ような方法ではなく、「カップの外側に水を入れて圧力をかけてカップ内に水を浸み込ませる」という方法です。

　実際の物理に基づいたイメージと説明は[1]などに記載があります。

![メモリセルにデータを書き込む（記録する）方法のイメージ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439683/871f3aaf-1500-f7d9-f175-ef3a43b8e241.png "メモリセルにデータを書き込む（記録する）方法のイメージ")
図1：メモリセルにデータを書き込む（記録する）方法のイメージ（断面図）

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

　これこそが「メモリセルの劣化」です。実際には絶縁膜（図1の浸透膜）の劣化です。

　「カップに水を入れる（＝メモリセルにデータを書き込む）際に圧力をどの程度かけるか」という制御は、NANDフラッシュメモリメーカー、そしてSSDメーカー次第です。

　それではこのモデルを使用して、メモリセルが寿命に近づいた時に、メモリセルへのデータ書き込み（記録）について起こり得ること、およびSSDの性能に与える影響を説明します。

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

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

　というのも、先ほど触れたように、NANDフラッシュメモリメーカーもしくはSSDメーカー（さらに言えばその両方）により、データ書き込み時にメモリセルにかける電圧の制御方法が異なり得るからです。

　図1のイメージから容易に想像できるように、メモリセルにかける「圧力」を強くすれば、メモリセルへのデータ書き込みにかかる時間（水がたまる時間）は短くなります。

　一方で、この「圧力」はメモリセルの劣化の主要因です。このため「圧力」を強くするとメモリセルはより早く劣化し、より早く寿命を迎えます。

　このように、データ書き込みにかかる時間（水がたまる時間）とメモリセルの劣化は、それぞれ「かける圧力」と密接な関係があります。

　この関係をイメージで図示したものが図2です。

![データ書き込み時の圧力と書き込み時間およびメモリセル劣化の関係（イメージ）](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439683/8d5264dd-bd8e-3bad-af2f-32f54238ecb0.png "データ書き込み時の圧力と書き込み時間およびメモリセル劣化の関係（イメージ）")
図2：データ書き込み時の圧力と書き込み時間およびメモリセル劣化の関係（イメージ）

　図2の上段は圧力が強い場合です。この場合、浸透膜の劣化が少ない状況でもその強い圧力のおかげで早く水がたまります。しかし、浸透膜の劣化が早く進み、劣化が進んだ（劣化度合いが酷い）時には逆に漏れ出る水も多くなり、より長い時間がかかる可能性があります。

　図2の下段は圧力が弱い場合です。この場合、圧力が弱いので浸透膜の劣化が少ない状況では水がたまるまで時間がかかります。その反面、浸透膜の劣化が緩やかに進んだ結果、書き換え回数が進んだ時には同じ圧力でも浸透する水が増えるため、水がたまるまでの時間がそれまでより短くなることが期待できます。

　実際に図2のように変化するとは限りません（あくまでイメージです）が、データを書き込む際の圧力を上手く制御することで、メモリセルが寿命に近づいた時のデータ書き込みにかかる時間（の傾向）を制御する手法が存在します<sup>[2][3]</sup>。

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

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

　そして、**メモリセルにデータを書き込むためにかかる時間の変化は、SSDユーザの視点では（もちろん）「SSDのWrite性能変化」として見えることがあります**。

　エンタープライズ向けSSDでは、製品寿命内であるSSD寿命末期（≒メモリセルの寿命末期）において出荷時との性能差が一定範囲内（もちろん出荷時のほうが高性能）に収まることを保証する、などの特徴を持つ製品もあります（表現はSSDメーカーや製品により異なります）。

　このような仕様を満たすには、メモリセルが寿命に近づいてもその性能低下が許容範囲内に収まるように、様々な要素の調整（チューニング）が必要です。

　その調整項目の中に、今回説明したようなメモリセルへのデータ書き込み方法の制御も含まれます。

# SSDのRead性能も変化することがある
　Garbage Collectionに代表されるSSDの内部処理では、NANDフラッシュメモリへの書き込みを行うことがあります。

　このため、メモリセルへの書き込み時間が変化すると、内部処理にかかる時間も変化します。

　内部処理でNANDフラッシュメモリへデータを書き込んでいる最中は、そのメモリセルへのデータ書き込みはもちろんデータ読み出しもできないため、そのメモリセルへのアクセスが必要なホストからのReadコマンドの処理も進みません。

　この結果、SSDの内部処理にかかる時間が変化すると、SSDユーザには「ReadやWriteの性能が変わる」という形で見えることがあります。

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

　メモリセルが寿命に近づいた時に、メモリセルへのデータ書き込みにかかる時間は変化する可能性があり、それはSSDのWrite性能の変化として観測されることがあります。

　この時どう変化するかは、NANDフラッシュメモリメーカーやSSDメーカーのチューニングにより変わります。

　SSDのWrite性能が変化した時に、その原因を切り分けるために、SSDが（NANDフラッシュメモリが）寿命に近づいていないかを確認することは有用です。

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

# References
[1] 浅野、「[基礎から知るSSD（いまさら聞けないSSDの基本）](https://www.slideshare.net/InsightTechnology/dbts-osaka-2014-b11-hardware-hironobuasano)」、db tech showcase Osaka 2014、June、2014
[2] R. Micheloni, _"NONVOLATILE MEMORY SYSTEM WITH PROGRAM STEP MANAGER AND METHOD FOR PROGRAM STEP MANAGEMENT"_, U.S. Patent 9,899,092, Feb., 2018
[3] B. A. Liikanen, et al., _"MEMORY DEVICE WITH DYNAMIC PROGRAMMING CALIBRATION"_, U.S. Patent 10,402,272, Sept., 2019

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