SSSI TECH NOTES SSD コントローラはどのようにして SSD の寿命を最大化しているか 2013 年1月 著者 SNIA SSSI 会員: Jim Handy Objective Analysis “The SSD Guy” www.snia.org SSD コントローラはどのようにして SSD の寿命を最大化しているか ソリッドステートストレージ分科会について SNIA ソリッドステートストレージ分科会(SSSI: Solid State Storage Initiative)は、エンタープラ イズとコンシューマの両環境でソリッドステートストレージのマーケットの成長と成功を支援 している。SSSI の会員は、技術標準やツール開発の推進、ソリッドステートストレージに関す る IT コミュニティの啓発、マーケットの拡大を目的としたソリッドステートストレージの長所 のアピール活動、ソリッドステートストレージに関する技術活動を行っている他の業界団体と のコラボレーション活動を実施している。 SSSI には、SSD 業界の様々なセグメントの企業が会員企業として参画している。 www.snia.org/forums/sssi/about/members 2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 1 SSD コントローラはどのようにして SSD の寿命を最大化しているか SSD コントローラはどのようにして SSD 寿命を最大化しているか 著者 SNIA SSSI 会員: Jim Handy “The SSD Guy”, Objective Analysis 目次 はじめに 3 SSD コントローラはどのようにして SSD の寿命を最大化しているのか 3 ウェアレベリングの改善 4 外部データバッファリング 6 ECC の改善 8 その他のエラー制御 9 ライトアンプリフィケーションの低減 10 オーバープロビジョニング 11 ブロック摩耗状態に関するフィードバック 13 NAND 内部の制御 15 2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 2 SSD コントローラはどのようにして SSD の寿命を最大化しているか はじめに 本冊子は、SSD の寿命を延ばすために SSD アーキテクトが使用している様々な技術を調 査している Jim Handy による The SSD Guy ブログ www.TheSSDGuy.com からの寄稿を集 めて構成したものである。 SSD コントローラはどのようにして SSD の寿命を最大化しているのか SSD コントローラは、 どのようにして SSD の寿命を最大化しているのか?結局のところ、 MLC 方式のフラッシュメモリは、10,000 回かそれ以下の P/E(Program/Erase; 書き込み と消去)サイクルの寿命しか持っていない。これは、SSD が高ワークロード環境、特にエ ンタープライズで期待されている書き込み量に比較して大変少ない数字である。しかし、 MLC はエンタープライズで標準的に使われている。 どのような工夫を行っているか? これが、SSD アーキテクトが実際に行っていることである。フラッシュメモリが単独で 提供する耐久力を超えて SSD の寿命を延ばすために The SSD Guy が知っている 8 つの基 本的な技術である。 ウェアレベリングの改善 外部データバッファリング ECC の改善 その他のエラー制御 ライトアンプリフィケーションの低減 オーバープロビジョニング ブロック摩耗状態に関するフィードバック NAND 内部の制御 考慮すべき重要なことは、これらの技術の正しい組み合わせにより、SSD が、内部の NAND フラッシュメモリがサポートしている耐久力よりも優れた耐久力を持っているということ である。 2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 3 SSD コントローラはどのようにして SSD の寿命を最大化しているか ウェアレベリングの改善 最初に、適切なウェアレベリングアルゴリズムが、どのようにして SSD 寿命の最大化に 寄与しているのか説明する。 NAND フラッシュメモリを構成する記憶素子は、ある一定以上の回数の P/E サイクル(通 常は、数千から数十万)を実行するとビットエラーを起こし始める。そもそも、ソフトウ ェアがいくつかのデータブロックを他のデータブロックよりも多く上書きしようとするの は極めて自然な動作である。このような動作による障害を防ぐために今日の SSD、USB 型 フラッシュメモリ、およびフラッシュカードコントローラは、ウェアレベリングによるデ ータの再配置を行っている。 ウェアレベリングにより、ソフトウェアがあるデータブロックに書き込もうとする際、 そのデータブロックに紐づけられていた記憶素子ではない他の場所に、データを書き込む。 次の書き込みの際も、再びどこか別の場所に書き込む。これは、SSD の外部には完全に見 えないような方法で実施され、結果としてフラッシュチップ上の全てのブロックはおおよ そ同じ量の摩耗を受けるようになる。 ウェアレベリングアルゴリズムは全て同じものではなく、いくつかは他よりも上手く動 作する。 ウェアレベリングには静的および動的の 2 種類の方法が存在する。動的ウェアレベリン グでは、変更対象となっているデータブロックと未使用のデータブロックの 2 種類のデー タブロックがウェアレベリングアルゴリズムにより操作される。つまり、動的ウェアレベ リングアルゴリズムは、既にデータが記録されているデータブロック(静的ブロック)に ついては操作を行わない。 静的ウェアレベリングは、変更対象となっているデータブロック、未使用のブロック、 および静的ブロックの 3 種のブロックを、SSD 内のフラッシュすべてにまたがって書き込 み回数が平滑化するように制御を行う。これは、有効となるデータを記憶しているが、デ ータの変更が行われない静的なブロックを含めて、全てのブロックが同量の書き込みによ る摩耗を受けるようにフラッシュ内で移動されることを意味する。もし静的ブロックを扱 わなければ、静的ブロックがウェアレベリングアルゴリズムによって扱われないことにな るため、このような動作が必要であることは容易に理解することができるだろう。また一 方で、P/E サイクルを最小化しようとするならば、このアプローチが、2 つのアプローチの 中でよりよいアプローチであることは直感的に分かりにくいだろう。 これら二つの基本的なウェアレベリングアルゴリズムを前提に、The SSD Guy が説明し ていない他のいくつかの方策がある。それらは、どのくらいの量のデータを移動させるの 2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 4 SSD コントローラはどのようにして SSD の寿命を最大化しているか か、そのデータをどこに移動させるのか、どのようにしてある一つのフルブロックを複数 の部分ブロックで構成するように統合させるかである。 非常に積極的に動作するウェアレベリングアルゴリズムは不必要な書き込みを過度に行 うことになるため、SSD コントローラの設計者は、綱渡りをしながら設計しなければなら ない。また同時にウェアレベリングアルゴリズムはドライブ中で動作する他の動作(ガベ ージコレクションなど)に応じて動作しなければならなないため、不要なブロック摩耗を 生み出す可能性がある。 これらの動作すべてが大変トリッキーな動作である! これらのアルゴリズムの選択により、各ブロックがどのくらいの摩耗を受けるかに加え、 アプリケーションの要求に対して、 どのくらい素早く SSD が応答できるかが決定する。 SSD アーキテクト達は、これらのアルゴリズムをどのように制御すべきかについて固有の思想 を持っている。ベストなアルゴリズムは、NAND タイプ、ワークロード、要求 I/O 速度、そ の他を含む多くの変数に依存する。 Intel は、ウェアレベリングアルゴリズムの違いによる影響を理解するためのいくつかの グラフを公開している。最初は、 「Regioned レベリング」と呼ばれる基本的なウェアレベ リングアルゴリズムを持つ SSD のグラフである(図1) 。X 軸は、SSD 内の異なるフラッ シュチップの領域を示す。Y 軸は、受けた P/E サイクル数を示す。グラフ内の赤の点は、 個々のブロックの状態を示す。このグラフから、あるブロックは同一の領域内のブロック よりも多くの書き込み行為を受けており、明らかに最初に障害を起こすことになるだろう。 サ イ ク ル 領域 出典:Intel Corporation 使用許諾済み 図1.基本的なウェアレベリングアルゴリズムによる摩耗度 2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 5 SSD コントローラはどのようにして SSD の寿命を最大化しているか 2 番目のグラフ(図 2)は、Intel 製 SSD での同様なデータであるが、このグラフでは、 P/E サイクルの回数が最低なものから順にデータが並べ替えられている。そうでないとブロ ック間の書き込み回数の違いが図に明確に示せないからである。この例で使用された Intel 製の SSD は、本質的に同一頻度で各ブロックを摩耗させる、よりバランスの取れたウェア レベリングアルゴリズムを使用している。Intel は、初期の SSD は、いくつかの例では、あ るブロックのピーク摩耗が平均の 3 倍であったと公表している。2 番目のグラフの SSD は、 ブロック間の最大と最小の摩耗の違いはわずか 4%であった。 ウェアレベリング P/E サ イ ク ル 並び替えられた消去ブロック(最小から最大) 出典:Intel Corporation 使用許諾済み 図2.Intel 製 SSD でのウェアレベリング このことが、SSD の寿命にどのような影響を及ぼすか?ウェアレベリングアルゴリズム が P/E サイクルを最小化して、SSD 内のブロックの摩耗を平滑化することができれば、最 長の寿命を引き出すことができるだろう。 外部データバッファリング NAND フラッシュは P/E サイクルによって劣化するので、これらのサイクルを低減する ことが SSD の寿命を延ばすために有効であることは理にかなっている。これを支援するた めに SSD に外部データバッファを組み込むことで、P/E サイクルを低減するようにデータ を配置することができる。これを実現するために、RAM(SSD コントローラチップ内部の 2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 6 SSD コントローラはどのようにして SSD の寿命を最大化しているか RAM または SSD プリント回路カード上の DRAM チップ)を使用した様々な方法がある 一つは、 「ライトコアレッシング」と呼ばれる方法である。これは、隣接する SSD セクタ に複数の小サイズの書き込みデータを集めて、これらをバッファし、NAND フラッシュへ の一つの大サイズの書き込みデータに変換する。一つの大サイズのデータの書き込みは、 複数の小サイズのデータ書き込みを繰り返すよりもチップへの負担が小さく、またはるか に高速に書き込みを行うことができる。 例えば、ライトバッファがない SSD では、ドライブ中の同一の領域への多数の小サイズ の書き込みは同時には発生しない。後続の書き込みが SSD にて処理される前に、前の書き 込みが既にフラッシュにコミットされている可能性がある。後続の書き込みが処理される 際、両方のセクタを含むフラッシュブロックを、別のブロックに再び割り当てる必要があ る可能性があり、この場合は更なる P/E サイクルを要する。 「ライトコアレッシング」は、SSD 内のフラッシュへの書き込み頻度を低減するために 使用される唯一の方法ではない。別のアプローチは、複数のデータを実際にフラッシュに 書き込まずに、同一セクタに連続的な書き込みが行える状態となるまでデータバッファし ておくことである。システムは、同一の NAND セクタに繰り返し上書きしていると信じて いるかもしれないが、実は上書きされているセクタのデータは、あるほかのタスクが実行 されるまで RAM 上にある。一つのセクタへの数百の書き込みが NAND への一つの書き込 みに変わるかもしれない。これは、いくつかの場合 NAND の耐久力が2,3桁増えるかも しれないことを意味し、2,3ドル分の RAM に対してよい見返りと言える。 RAM は、書き込みがページ全体の長さで実行できることを保証するために用いられる。 というのは、これが、NAND が最も効率的に書き込みを実行する方法であるからである。 NAND へのデータ書き込みサイズをチップ上のページへの書き込みサイズに合わせること によって、書き込み頻度を低減することができる。異なる NAND チップは異なるページ長 (一般的に 1-4KB)を持っているので、SSD コントローラには、SSD で使用される正確な NAND チップのページ長を知っておく必要がある。 これらのアプローチでは、電源障害時に RAM の中のデータが失われるリスクがある。こ れに対する回避策は、突然のシャットダウンに対して RAM の内容を NAND に書き込むの に十分な長さの時間、SSD を動作させることができる電力を SSD 内部で貯蔵、供給するこ とである。このプロセスを実行するための電源として、一般に次の 3 つの方法が存在する。 1. バッテリー 2. スーパーコンデンサー 2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 7 SSD コントローラはどのようにして SSD の寿命を最大化しているか 3. タンタルコンデンサー 我々はこれらのどれが最も良いか議論を行うつもりがないが、RAM を一時的なストレージ として加えることが、耐久力の仕様の制限を超えてフラッシュの寿命を延ばすために、と ても有用であることは明らかである。 ECC の改善 誤り訂正符号(ECC:Error Collecting Code)は、SSD の寿命にとても大きな影響を与え うるが、この標準機能が SSD の動作に大きな違いをもたらすことを理解している人は少な い。ECC に関しては、比較的簡単な表現で説明したいと思う。 全ての NAND フラッシュは、ランダムビットエラー(ソフトエラー)を訂正するために ECC を必要とする。これは、NAND チップの内部は大変ノイズが多く、また NAND を介し て渡されるビットの信号レベルがとても弱いからである。チップの外部に誤り訂正機能を 設けることで NAND があらゆるメモリの中で最も安価に扱えるメモリとなった。この誤り 訂正機能は、同時に摩耗によるビットエラーを訂正する役割も担う。摩耗により記憶ビッ トは一つの状態または別の状態(ハードエラー)に留まり、ソフトエラーの頻度を増大し うる。 広く理解されてはいないが、フラッシュの耐久力は、ハードエラーが起こる以前に、フ ラッシュブロックが耐えられる P/E サイクル数で表現できる。大抵のエラーは、個々のブ ロックのビットエラーが原因である。ブロック全体がエラーすることは珍しい。ここでは 論じないが、様々な仕組みにより、非常に多くの消去/書き込み処理が行われるとソフト エラーが発生する頻度が増大する。もし ECC により、これらのハードエラーやソフトエラ ーの増加を抑えることができれば、指定された耐久力を超えてブロックの寿命を延ばすこ とが可能となる。 例えば、未使用の NAND チップが 8 ビット ECC を必要とするようなソフトエラーを起 こしうるとしよう。即ち、各々のページ読み込みの際、オンチップノイズにより、8bit がラ ンダムに損傷されうる。もし、このチップで使用される ECC が 12 ビットエラーを訂正可 能ならば、ページは、8 つのソフトエラーに加え、別の 5 つの摩耗に関連したエラーが発生 しなければ、ECC が持つデータの訂正能力を超えることはない。 現在、フラッシュのメーカーによってこれら 5 つのエラーは、耐久仕様に従ってまれに しか起きないことが保証されている。10,000(または 5,000 または 3,000)回の P/E サイク 2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 8 SSD コントローラはどのようにして SSD の寿命を最大化しているか ルに到達するまでビットエラーによる障害は発生しないだろう。仕様上、どのビッドが次 にエラーを起こすか予測するよう、十分作りこまれているわけではないが、このようなエ ラーが発生しうるのは、数千回の P/E サイクルを経た後である。これは、ページがあまり にエラーを起こすために使用を停止する必要がある状態になる前までは、耐久力が指定さ れた以上のものであることを示唆している。これは、ECC が訂正可能とするエラー数の設 計に依存しているものの、エラー訂正によるブロックの耐久力は、指定されたブロックの 耐久力の何倍にもなることを意味する。 これは全て製品価格に跳ね返る。より高度な ECC は、より処理能力のある SSD コント ローラを必要とし、高度でないアルゴリズムよりも性能が低速になるかもしれない。また 訂正できるエラーの数は、どのくらいの大きさのメモリセグメントが訂正可能であるかに 依存している。作りこまれた ECC 機能を持つ SSD コントローラは、おそらく、より単純 な ECC を持ったものよりより多くの計算資源や内部 RAM を使用するであろう。これらの 強化により、SSD コントローラはより高価になる。 ECC アルゴリズムは、数学界において、1つの分野として独自の世界を築いている。私 は数学が好きであるが、リードソロモン符号と LDPC の違いを理解しようとは思わない。 誰かが、シャノン限界(訂正可能なビットの最大数)について話そうとするならば、私は 眠くなってしまうだろう。しかし、私は、ECC を習得した人々の知性や、並の人間が考え る以上にフラッシュブロックの寿命を引き出すその能力に対し、畏敬の念を感じる。使用 をあきらめる必要がある状態になるまでに、より多くのエラービット訂正によって、フラ ッシュブロックの寿命が延びていることを覚えておいてほしい。 その他のエラー制御 NAND フラッシュ中のビットエラーの発生を防ぐ単純なエラー訂正手段よりも高度な手 段が存在する。この手段がこの節の主題である。この手段で一般的に使われる言葉は「DSP」 であるが、フィルターの実行、もしくはモデムチップを作るために使用されるような DSP アルゴリズムは、エラー制御では殆ど何もしないようにみえる ECC は、どのようにして目的を達成したかを知ることなしにエラーを訂正するが、DSP は、チップの設計に内在している内部エラーの仕組みによって引き起こされる予測可能な 任意のエラーを訂正する。そのようなエラーの主要な例は、隣り合うセルの干渉である。 ここで隣り合うセルの干渉の簡単な説明をする。フラッシュチップの各ビットセルは、 同じダイ上の小さなコンデンサ1つ1つにより構成されるため、隣り合うセル間にはクロ 2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 9 SSD コントローラはどのようにして SSD の寿命を最大化しているか スカップリングが存在する。隣のセルは隣のセルの電荷を抜いてしまうかもしれない。読 み出しや、書き込みを実行する際、隣のセルを通過したエネルギーは隣のセルに記憶され たビットの閾値を強制的に変更してしまうかもしれない。読み出しにより電荷を抜く際、 隣のセルの電荷を抜いてしまうかもしれない。書き込みにより発生するセルの高磁界が、 隣の電荷を増加させてしまうかもしれない。 DSP エンジンは、チップ中のどのビットがどのビットと隣接しているかを知っており、 フラッシュに書き込まれたデータを実際にシンボル(通信用語からくる)に変える。シン ボルは、データを隣接のセルの干渉効果に起因するエラーの影響を与えないように選択さ れる。これらは、書き込み速度を含む SSD の他の側面に影響を与えるため、正しいシンボ ルを選択するための技術が存在する。 シンボルデータが記憶されているフラッシュを読み出す際、ECC アルゴリズムを処理す る前に予測可能なエラーを訂正するプロセスが実行される。DSP は、予測可能なエラーを 訂正し、より予測できないエラーはそのままにして、ECC アルゴリズムのためにデータを 整える。整えられたデータは ECC により正しい値に訂正されるため、DSP は ECC 用にエ ラー訂正用に数ビットの情報を効果的に付与する。ECC の節で述べた通り、エラー訂正の ために付与された訂正用のビットにより、フラッシュチップの耐久力を高めることができ、 また DSP はエラー訂正だけでなく、間接的に SSD のフラッシュチップの寿命を延ばして いる。今日、DSP はすべての SSD で広く使用されているわけではないが、将来的には、こ のアプローチを組み込んだ SSD コントローラの数は増えていくだろう。 ライトアンプリフィケーションの低減 ライトアンプリフィケーションは、SSD の寿命を最大化するために重大な役割を果たす。 ライトアンプリフィケーションが低減されれば、SSD はより長持ちするだろう。SSD アー キテクトはこの側面からコントローラの設計に注意を払う。このシリーズで記述されてい る他の要因と違って、これは、通常故障になると思われる 10,000 回の P/E サイクルを超え てフラッシュの寿命を延長する技術ではないが、SSD 寿命にとって大変重要である。 空きブロックを管理している SSD は、まばらに空きが存在するブロックを除去すること ができるように、まばらに空きが存在する2つのブロックから別のブロックにデータを 時々移動する必要がある。ホストシステムは、SSD にこのような書き込みを実施するよう 要求しないため、結果的にホストシステムが要求した以上の書き込みが発生することにな る。そこで、SSD は、ホストシステムが意図するよりも多くの書き込みを実施する。これ 2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 10 SSD コントローラはどのようにして SSD の寿命を最大化しているか がライトアンプリフィケーションである。 SSD 内の NAND への書き込み回数が、ホストシステムの書き込み要求の回数に一致して いるなら、ライトアンプリフィケーション(またはライトアンプリフィケーションファク ターWAF)は 1.0 である。フラッシュへの書き込み回数の平均がホストシステムの書き込 み要求回数の 2 倍であるなら、ライトアンプリフィケーションは 2.0 である。もし、SSD の書き込み回数を測定するようなシステムソフトウェアを作ったとしても、その測定結果 は、ライトアンプリフィケーションによってフラッシュチップが書き込んだ実際の回数に は届かないであろう。 ライトアンプリフィケーションを低減する多くの方法がある。いくつかの SSD は、デー タをログ構造で SSD に書き込む。データは NAND の連続したアドレスに書き込まれ、アイ ドル時間にデータの整理作業が実行される。これにより、ライトアンプリフィケーション を低減することができるが、SSD のデータ管理はより複雑なものとなる。 SandForce のアプローチは、データを SSD に書き込む際、データを圧縮する。データが 通常の大きさより 1/2 に圧縮されるなら、実際にはシステムから書き込んだ半分の量のデー タが SSD の NAND チップに書き込まれる。これにより SandForce はライトアンプリフィ ケーションが 1.0 以下になると豪語している。これは、使用しているアプローチを理解して いなと理解しにくい数字である。 最後にまとめると、 ライトアンプリフィケーションを低減するように設計された SSD は、 NAND フラッシュの P/E サイクルの回数を低減し、ビットエラーが起きうる NAND フラッ シュチップの書き込み回数制限の中で、より優位にたつことができる。 オーバープロビジョニング オーバープロビジョニングは、フラッシュの耐久性能値を超えてより長い寿命保障を持 つ SSD を実現するために、SSD 設計者が使う最も一般的な手法の一つである。SSD がイ ンターフェースから提供する容量よりもより多くの容量を持つフラッシュチップを備えて いれば、SSD コントローラはより多数のブロック間で摩耗を管理し、同時に SSD のブロッ ク消去のような遅い動作を発生させないことによってディスク性能を加速させる。 多くの人々はウェアレベリングを車のタイヤの位置の交替と比喩したがる。この調子で、 オーバープロビジョニングを、車のトランク内に(一つではなく)多数の予備のタイヤが あると考える。どんな場合においても、5 つ以上のタイヤを同時に使用しないし、タイヤを より多く持っていれば、新規のタイヤを買うことなく長く運転できる。一方で、これによ 2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 11 SSD コントローラはどのようにして SSD の寿命を最大化しているか り、交換用に準備しておくタイヤのコストが上昇する。 オーバープロビジョニングはライトアンプリフィケーションの低減に寄与する。SSD が 一杯になると、より多くの空きスペースを供給するために一部のブロックを統合するよう にガベージコレクションアルゴリズムが働く。多数の予備ブロックを持っている SSD は、 殆ど予備を持っていない SSD ほど頻繁にこのプロセスを実行する必要がない(ブロックを 空きにするためには、少し異なる方法で Trim コマンドを通じて実行できる。Trim コマンド によりオペレーティングシステムは SSD にどのセクタが不要になったかを知らせることが できる。これにより SSD は使用に先立って不要となったブロックを消去し、SSD が一杯に なる可能性を低減する) 。 オーバープロビジョニングは SSD の寿命にどのくらい寄与するのか? 2-3 の企業からの 報告に基づいて The SSD Guy は次の通り結論づける。45%のオーバープロビジョニングは 20%のオーバープロビジョニングの約 2 倍の寿命となり、75%のオーバープロビジョニン グはディスクの寿命を 3 倍にする。100%フルのオーバープロビジョニングはドライブ寿命 を 4 倍にまでは達しないが、これに近い値となる。これ以上のオーバープロビジョニング による寿命の延びは縮小する傾向で、250%オーバープロビジョニング(20%オーバープロ ビジョンされた SSD より約 6 倍の寿命を持つ)あたりでリターンが 0 に近づいている。7% オーバープロビジョニングがクライアント SSD の標準であると多くの人が語っている。こ のレベルでは、20%オーバープロビジョニングの寿命の約 1/3 である。 SandForce 製コントローラで使用されているデータ圧縮機能により、奇妙なことが起き ている。このコントローラは、NAND フラッシュに書き込むデータを圧縮する。これは、 オーバープロビジョニングの量がデータ圧縮の度合と相関を持っていることを意味してい る。高圧縮できるデータはデータストレージの多数のフラッシュを未使用の状態にするこ とができるので、SSD はより多くオーバープロビジョニングができることとなり、耐久力 を高めることができる。非圧縮データ(MP3 ファイル、JPEG 写真またはビデオファイル のように既に圧縮されたデータ)は、ほとんどオーバープロビジョニングすることなく SSD のフラッシュを消費する。非圧縮データを格納する SSD は、より少ない書き込みで摩耗し てしまうだろう。幸いなことに、高頻度に書き込みを行うワークロードを発生させるアプ リケーションは通常このタイプのファイルを扱わない。 用語についての注釈:幾人かの人々は、 Overprovisioning と一語でつづる。The SSD Guy はどのように記述すべきかについての定見を持ち合わせていない。RAID は、10 数年前に 単語が登場し、すでに標準の単語として位置しているが、Overprovisioning は、この場合に 2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 12 SSD コントローラはどのようにして SSD の寿命を最大化しているか 当てはまらないように見える。あなたにとって正しいと感じるものを取り上げ、また業界 は一貫性がないものとして見ることをお勧めする。 ブロック摩耗状態に関するフィードバック SSD コントローラが SSD 寿命を最大化するための1つの方法として、摩耗がどの程度寿 命に影響を与えているかを決定するために、フラッシュブロックの寿命に関するフィード バックを活用する方法がある。この手法は、以前は、全く一般的ではなかったが、今では、 多数のコントローラに組み込まれている手法である。 仕組みは次の通りである。フラッシュの耐久性の仕様を元に、ブロックがどのくらいの 長さの寿命が残っているのかを知ることが可能である。これは正しいアプローチなのか? SLC では、典型的には、100,000 回の P/E サイクルの実行が可能であり、MLC では旧プロ セスで 10,000 サイクル、より新しいプロセスでは 5,000 または 3,000 サイクルに低下して いる。TLC の寿命は数百サイクルになる。では、その回数を超えたら、どうなるのであろ うか? 多くの場合、しばらくすると、個々のビットを動かせなくなり始める。しかし、どのく らい後なのかは、十分に明示されていない。The SSD Guy が執筆の支援をした SNIA のホ ワイトペーパー(NAND Flash Storage for the Enterprise –an In-Depth Look at Reliability) では、Fusion-io が作成した 400 万回 P/E サイクルを経た SLC フラッシュの特性が記載さ れている(ホワイトペーパーの図 2 を見てほしい。この図では、SLC NAND では、200 万 サイクル以下では取るに足らない程度しかビットエラーは発生していないことが示されて いる) 。 もし、NAND がより多くの P/E サイクルを実行可能であった場合、チップメーカはより 大きな数値を仕様書に記載するだろうか?このことが競争上有利になるであろうか?事実、 マーケットの大多数を占めるコンシューマエレクトロニクス市場では、高い耐久仕様は、 フラッシュチップの販売の助けとならないし、それを正確に仕様化することはコスト高と なるだろう。耐久テストは大変時間を消費し、不幸にもテストしているチップを破壊して しまう。これに加え、耐久力は 1 つのウェハー内のチップでも変わりうるという事実もあ り、効率よく仕様化することができない結果を生んでいる。これがたとえ可能であったと しても、チップメーカが、耐久テストが完了するまで製造チップの出荷を遅延するといっ た状況を作り出してしまうだろう。この答えは、製造される製品が通過できる基準を十分 低く設定することである。SLC フラッシュの場合、この基準は 100,000 サイクルに設定さ 2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 13 SSD コントローラはどのようにして SSD の寿命を最大化しているか れる。MLC の場合は、より低く設定され、TLC の場合は、MLC より低い値に設定される。 SSD 寿命を延ばすためにこのビットの情報がどのように活用できるのだろうか? 例えば、SSD の各フラッシュブロックがどのくらいの P/E サイクル数に耐えられるかを SSD コントローラが計算できるとする。また、丈夫なブロックを優先的に摩耗させ、弱く なってしまったブロックの摩耗を少なくするウェアレベリングアルゴリズムを管理可能と する。重要なことは、SSD コントローラが、“このブロックは 100,000 回の消去書き込みが ある、もう使用を停止しよう”と、簡単にあきらめないことである。エラー訂正アルゴリズ ムがビットエラーを訂正できる範囲に収まっているポイントまで正常ブロックとして扱う のである。もちろん、これにより各 NAND ブロックの寿命は、絶対的な限界にまで延び、 SSD の寿命は何倍も増加する。これは理解しにくい考え方ではないが、初期の SSD 設計者 は考えていなかったことである。これは、簡単であり、時がたてば普遍的な使い方になる ことが期待される効果の高いアプローチである。 SMART Storage System からの画像提供 使用許諾済み 図3.一般的なアルゴリズムによる NAND フラッシュの摩耗状態(上図)、実際のフラッ G シュの摩耗状態に基づくより高度なアルゴリズムを用いた NAND フラッシュの摩耗状態 2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 14 SSD コントローラはどのようにして SSD の寿命を最大化しているか 図 3 は、SSD メーカーである、SMART Storage Systems が小冊子で述べた、SSD NAND チップの寿命を延ばす他のいくつかのアプローチとこの技術を組み合わせた場合の 結果を示している。 この図は、高い書き込み負荷をかけた 5 年間後の NAND フラッシュブロックの状態を表 している。赤のブロックは、故障と判断されて SSD で使用されないブロック。黄色のブロ ックは、故障に近いブロック。緑のブロックは、まだ十分寿命が残っているブロックであ る。下のモデルは、10,000P/E サイクルの仮定に基づいた上のモデルよりもはるかに長い寿 命を持っていることは明らかである。 NAND 内部の制御 これまで議論してきた SSD 摩耗を改善する他の全ての手法を利用したとしても十分であ るとはいえない。次に何をすべきであろうか?いくつかの SSD コントローラはさらに一歩 進んで NAND フラッシュチップそれ自身のいくつかの内部動作を制御する。 もし、あなたがこれを重要事項であると思うなら、なぜこのアプローチを採用するコン トローラが殆どないかを明確に理解しなければいけない。この機能を実行するための情報 は一般には入手できない。なぜならば、NAND フラッシュ供給者と特別な関係を必要とす るからである。他の NAND 供給者へ秘密を横流ししないと NAND 供給者が確信を持てなけ れば、この関係を生み出すことができない。これは SSD コントローラが1つの NAND ブラ ンドに括り付けられることを意味し、また SSD メーカーが複数の NAND 供給者の中から最 も良い価格の製品を買うことができなくなってしまうことを意味する。NAND 供給者は、 特定の SSD メーカーを動かす切実な理由がない限り、このような情報を共有はしないだろ う。SSD メーカーは何百も存在するため、あなたがこのような企業に着目するのは非常に 困難を極めるだろう。 フラッシュ供給者とこのような関係を持つ SSD メーカーは大変稀であり、特別である。 例えば、あなた自身が、NAND 供給者が喜んで情報を公開するような好位置にいるとし よう。あなたはそこから何を学ぶだろうか?次に示すような NAND フラッシュの内部設定 を変えることによって制御可能な多数の変数やビットエラーに影響するパラメータを管理 する方法が分かるのである。 MLC の各レベル間の閾値 2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 15 SSD コントローラはどのようにして SSD の寿命を最大化しているか プログラム時間及びアルゴリズム 隣接するセル間の物理的な配置関係 トンネル酸化膜に閉じ込められている電子の開放 これら以外も存在するが、これらが The SSD Guy が知っていることである。今日販売され ているフラッシュチップ内に組み込まれている特別な内部テストモードにアクセスする方 法を知っていれば、これらが制御可能である。 これらのどのように働くのかを考えるにあたり、パラメータの 1 つである、MLC レベル の検出方法見てみよう。 MLC フラッシュへデータを記憶する際、4 つある帯電レベルのうちの1つを選択しセル に帯電させることにとって、セル上に 2 ビットのデータが記憶される。 帯電しない 1/3 帯電 2/3 帯電 全帯電 ある避けられない問題によって、これらのレベルはそれぞれの中心から外れる。トンネル 酸化膜に閉じ込められた電子は、プログラミングアルゴリズムが想定する帯電状態よりも 大きな帯電状態でフローティングゲート内に保持される。これは、熱や他の影響により、 電子がセルから排出される可能性があり、帯電された電子が低減してしまうためである。 隣接するセルからの読出しや書き込みにより、フローティングゲートに電子を加えられる、 もしくは電子が移動してしまうかも知れない。 ビットが誤って解釈されることないように、これらの現象を理解している SSD コントロ ーラは NAND チップ内の検出閾値を調整することが可能である。セルに 2/3 帯電されてい るが、1/2 帯電のように見えてしまった場合、読出しは 1/3 帯電または 2/3 帯電のどちらに なるのであろうか?他の要因による影響を補てんするために、SSD コントローラが閾値を 管理していれば、SSD コントローラはこのビットエラーを原因とする障害を防ぐことがで きる。 明らかにこれは、寿命が近い NAND フラッシュからビットを絞り出すかなり思い切った 方法である。これは、摩耗の仕様をはるかに超えて問題を打開するために使われる技術で あるが、これを使用している企業は、このアプローチを利用しない SSD コントローラと比 2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 16 SSD コントローラはどのようにして SSD の寿命を最大化しているか べてはるかに優れたフラッシュの寿命を達成することに成功している。 ソリッドステートストレージ分科会 SNIA について ストレージネットワーキング・インダストリ・アソシエーション(SNIA)は、ストレ ージ業界のほぼ全体に及ぶ 400 を超える法人会員と 7,000 人の個人会員で構成される 世界的な非営利組織である。SNIA の使命は、企業の情報管理を促進する標準、技術、 および教育サービスの開発と普及においてストレージ業界を世界規模でリードするこ とである。この目的を達成するために、SNIA では、オープンストレージネットワーキ ングソリューション市場を拡大するための標準、教育、およびサービスの提供に全力で 取り組んでいる。その他の情報については、SNIA の Web サイト(http://www.snia.org) を参照されたい。 2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 17
© Copyright 2026 Paperzz