この記事で紹介している製品
おことわり
この記事は、2020年11月にQiitaに投稿した記事を加筆修正したものです。
また、この記事のオリジナルは日本語で書かれています。記事が日本語以外の言語で表示されている場合、それは機械翻訳の結果です。当社は機械翻訳の精度に責任を負いません。
はじめに
SSDの寿命を左右する最も大きな要素のひとつは、ご存知の通り、NANDフラッシュメモリのメモリセルの「保証書き換え回数」です。
SSD(のコントローラ)は、メモリセルの書き換え回数増加によるデータ保持能力の低下に加え、NANDフラッシュメモリが抱える様々な信頼性上の制約に対応することで、工業製品としての信頼性を達成しています。
今回の記事では、SSDが対応しているそれらNANDフラッシュメモリの信頼性上の制約のひとつをご説明します。
まとめ
- メモリセルの保証書き換え回数の他にも、SSDが対応すべきNANDフラッシュメモリの信頼性上の制約が存在する
- NANDフラッシュメモリの技術進化にともない、それらの制約への対応がさらに重要になる
NANDフラッシュメモリが読み書きできなくなる要因
NANDフラッシュメモリがその機能(特に記録したデータの読み出し)を果たせなくなる要因は、以下の3種類に大別できます。
- メモリセルのデータ保持能力の低下
- データ保持能力低下以外のメモリセルの制約
- 大規模エラー
一つ目の「メモリセルのデータ保持能力の低下」は、広く知られている、主に書き換え回数の増加によりメモリセルのデータ保持能力が低下する現象です。
NANDフラッシュメモリの1チップ内には、膨大な数のメモリセルが存在します。例えば、容量が512ギガビットのTLC NANDフラッシュメモリチップには、約1,800億個のメモリセルが存在します。これらのメモリセルひとつずつが(モデルとしては)独立に疲弊してデータ保持能力が低下します。
二つ目の「その他メモリセルの制約」とは、例えば「読み出し回数」に関する制約です。
これはいわゆる”Read Disturb”に伴う制約です。「保証書き換え回数」と同様に「保証読み出し回数」を定義しているNANDフラッシュメモリメーカーも存在します。Read Disturbにつきましては本技術コラムの 別記事 をご覧ください。
最後の「大規模エラー」とは、メモリセルを含むNANDフラッシュメモリ構成要素の信頼性低下や故障に起因する、一つ目の「メモリセルのデータ保持能力の低下」の救済用にSSDが備える誤り訂正機能では対応できないほどビット数の多いエラーのことを指します。
この記事では、この三つのうち「大規模エラー」への対応方法の一例をご説明します。
大規模エラー
大規模エラーとは
SSDが対応する、NANDフラッシュメモリに記録したデータに生じる誤り(エラー)は、大きく2つに分類できます。それは、ランダムエラーと大規模エラーです(図1)。
書き換え回数の増加によるデータ保持特性低下などの要因でメモリセル1つずつに起こるデータ誤りは、図1のランダムエラーに相当します。
上記要因によるメモリセルに記録したデータの読み出し時の誤り(エラー)は、他のメモリセルがエラーを起こしているかどうかとは関係なく、各メモリセルにこの要因が蓄積した結果として、ビット単位で発生する、とモデル化します。また、発生する位置もランダムであると仮定します。
これが、「ランダムエラー」と呼ばれる理由です。
SSDはこのランダムエラーを、BCH (Bose-Chaudhuri-Hocquenghem)符号やLDPC (Low-Density Parity-Check)符号などの誤り訂正符号を用いてビット単位で訂正します。
一方、ランダムエラーとは発生原理もデータ誤りの規模も異なるエラーが存在します。それが大規模エラーです。
2019年に開催されたFlash Memory Summitの講演資料[1]では、3D NANDフラッシュメモリで発生する可能性がある大規模エラーの例について、図2のように説明しています。
図2の”Case 1″(左)と”Case 2″(右)は、説明のためにかなり簡略化されていますが、それぞれ3D NANDフラッシュメモリのブロックの内部を表現しています。
図2の平たい板のようなのものがワードライン(Wordline, WL)です。横に広がる同じ番号のワードライン(”WLx”の`x’がワードラインの番号)は、図中では切れていますが、物理的には一枚の「板」です。板状のワードラインがY+1枚に切れているのは、切れたそれぞれの部分を独立に操作可能であることを表現しているのだと思います。
なお、この図2はQLC NANDフラッシュメモリを想定して描かれています。このため、ワードラインを分割した個別の板に”4 page”と記載されています。また、ページサイズは16 KiBを仮定しているようです。
この図2の表記を使うと、ワードライン数(層数)であるN+1と、ワードラインの分割数Y+1と、多値度(QLC NANDであれば4)を掛け算したものが、ブロック内ページ数になります。
さて、図2の”Case 1″は、ワードラインが電気的にオープン(開放)になる故障を示しています。電気的にオープンになると、対象ワードライン(図2ではワードラインN (WLN))に対して適切にリードするための電圧を与えることができなくなります。
つまり、ワードラインNにデータを記録した後にこの故障が起きると、ワードラインN上にある全てのメモリセルに記録されたデータが読めなくなります。
読めなくなる可能性のあるデータのサイズは、最大で、図2に記載の通り、4(ページ)×16 KiB×(Y+1)注、つまり64 KiB以上となります。
注:図2には”4*16*Y”と書かれていますが、添字Yは0から開始しているので0からYまでであればY+1個となるはずです。
さらに、図2の”Case 2″は、複数枚のワードライン、例として2つのワードラインが電気的にショート(短絡)する故障を示しています。電気的にショートすると、対象ワードライン(図2ではワードラインN (WLN)とワードラインN-1 (WLN-1))にリードするための電圧を加えても、適切な電圧になりません。
つまり、ワードラインNとワードラインN-1にデータを記録した後にこの故障が起きると、ワードラインNとワードラインN-1上にある全てのメモリセルに記録されたデータが読めなくなります。
読めなくなる可能性のあるデータのサイズは、最大で、図2に記載の通り、ショートしたワードラインの枚数をmとすると、4(ページ)×16 KiB×(Y+1)×m、ショートしたワードラインが2枚であれば128 KiB以上となります。
このように、大規模エラーは、ひとたび発生するとサイズの大きいデータ喪失につながる、という特徴があります。
ここでもう一度、ランダムエラーと大規模エラーの違いを確認します。
ランダムエラーは、ECCの符号内で、ビット単位でかつどのビットがエラーを起こすのかがランダムなエラーです。そして、図1に示した要素の蓄積が原因であるため、ECC符号内の誤りビット数はデータを書き込んでからの経過時間が長くなるにしたがい増加します。
一方大規模エラーは、ランダムエラーと異なり、突発的に発生し、その1回のエラー発生で複数(多数)ビットがまとめてデータ誤りとなるエラーです。誤りビット数が時間経過に依存するランダムエラーとは大きく異なります。
その他、大規模エラー発生時にエラーとなるデータのサイズは、ランダムエラー向け誤り訂正符号の符号長よりも大きく、かつ大規模エラーの発生確率は、ランダムエラーの発生確率と比較してとても低い、などの違いがあります。
SSDの大規模エラー対策
SSDの大規模エラー対策にも誤り訂正が用いられますが、ランダムエラー対策として備えている誤り訂正符号の訂正能力を補完する機能として設計されたものが、前節で説明したような大規模エラーにも対応できる方式に発展した、という側面があります(図4)。
というのも、図4に示したように、ランダムエラーが原因の誤りビット数も、ランダムエラー向け誤り訂正符号の訂正能力を超えてしまう可能性があり、発生頻度の高いランダムエラーの訂正能力を向上させるために、この領域のエラーを訂正可能にすることのほうが重要だったからです。
上記のような能力が求められる誤り訂正符号として、最近のSSDが備える機能が、Redundant Arrays of Inexpensive Disks (RAID)です。
ただし、ここで言うSSDが備えるRAID機能とは、1台のSSDがその内部に備える複数のNANDフラッシュメモリチップで構成するものです(図5 (B))。
図5 (B)の具体例を挙げると、図6のような仕組みになります。
ホストから受領したライトデータを書き込む際に、チップ1~3に書き込むデータからパリティを計算し(図6ではビット単位の排他的論理和)、そのパリティをチップ4に書き込みます。
この構成で、チップ3に書き込んだデータCを喪失したとします。その場合、図7のようにしてデータCに生じた誤りを訂正します。
図6のRAIDはビット単位の排他的論理和を用いた構成ですので、パリティ計算に用いたデータ1つ分まで訂正(復元)可能です。
この図6の構成の場合、RAIDを構成するデータの中で、同じビット位置のデータが2ビット以上誤った場合や、データAとデータCの2つを喪失した場合などは、データの誤りを訂正できません。
前者については、NANDフラッシュメモリのビット単位のエラーはランダムエラーであり、RAIDを構成する複数データの同じビット位置のデータがランダムエラー起因で同時にエラーとなる(ランダムエラー向け誤り訂正でも訂正できない)確率は低いと考えられます。
また後者については、RAIDの構成を工夫して、大規模エラーが発生してもRAIDを構成する複数データのうち誤り訂正に必要なデータが残るようにします。[1]の資料もそのような工夫についての講演の資料です。
このように、SSDは、製品保証期間(寿命)中に発生する確率が低い事象も含めて、データ喪失を防ぐための機能を備えています。
おわりに
今回の記事では、「保証書き換え回数」以外のNANDフラッシュメモリの信頼性上の制約について、SSDでの対応方法を含めてご説明しました。
それら制約の一例として、「大規模エラー」に分類される3D NANDフラッシュメモリにおけるワードラインのオープン(開放)やショート(短絡)を挙げて、その対策も含めてご説明しました。
NANDフラッシュメモリを不揮発性記憶媒体とするSSDでは、製品の寿命、製品の信頼性、という視点において、メモリセルの「保証書き換え回数」が最も重要な制約のひとつであることは間違いありませんが、近年ではそれ以外の様々な制約への対応の重要度が増しています。
References
[1] Lin, “Error Handling Technologies for QLC-Based Storage System”, Flash Memory Summit 2019, Santa Clara, CA, August 2019
他社商標について
記事中には登録商標マークを明記しておりませんが、記事に掲載されている会社名および製品名等は一般に各社の商標または登録商標です。
記事内容について
この記事の内容は、発表当時の情報です。予告なく変更されることがありますので、あらかじめご了承ください。