18
SSSI TECH NOTES SSD コントローラはどのようにして SSD の寿命を最大化しているか 2013 年1月 著者 SNIA SSSI 会員: Jim Handy Objective Analysis “The SSD Guy” www.snia.org

SSD コントローラはどのようにして SSD の寿命を最 … TECH NOTES SSD コントローラはどのようにして SSD の寿命を最大化しているか 2013 年1月

  • Upload
    phamtu

  • View
    217

  • Download
    0

Embed Size (px)

Citation preview

Page 1: SSD コントローラはどのようにして SSD の寿命を最 … TECH NOTES SSD コントローラはどのようにして SSD の寿命を最大化しているか 2013 年1月

SSSI TECH NOTES

SSDコントローラはどのようにして

SSDの寿命を最大化しているか

2013年1月

著者 SNIA SSSI会員:

Jim Handy

Objective Analysis “The SSD Guy” www.snia.org

Page 2: SSD コントローラはどのようにして SSD の寿命を最 … TECH NOTES SSD コントローラはどのようにして SSD の寿命を最大化しているか 2013 年1月

2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 1

SSDコントローラはどのようにして SSDの寿命を最大化しているか

ソリッドステートストレージ分科会について

SNIA ソリッドステートストレージ分科会(SSSI: Solid State Storage Initiative)は、エンタープラ

イズとコンシューマの両環境でソリッドステートストレージのマーケットの成長と成功を支援

している。SSSIの会員は、技術標準やツール開発の推進、ソリッドステートストレージに関す

る IT コミュニティの啓発、マーケットの拡大を目的としたソリッドステートストレージの長所

のアピール活動、ソリッドステートストレージに関する技術活動を行っている他の業界団体と

のコラボレーション活動を実施している。

SSSIには、SSD業界の様々なセグメントの企業が会員企業として参画している。

www.snia.org/forums/sssi/about/members

Page 3: SSD コントローラはどのようにして SSD の寿命を最 … TECH NOTES SSD コントローラはどのようにして SSD の寿命を最大化しているか 2013 年1月

2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 2

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

Page 4: SSD コントローラはどのようにして SSD の寿命を最 … TECH NOTES SSD コントローラはどのようにして SSD の寿命を最大化しているか 2013 年1月

2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 3

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

フラッシュメモリがサポートしている耐久力よりも優れた耐久力を持っているということ

である。

Page 5: SSD コントローラはどのようにして SSD の寿命を最 … TECH NOTES SSD コントローラはどのようにして SSD の寿命を最大化しているか 2013 年1月

2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 4

SSDコントローラはどのようにして SSDの寿命を最大化しているか

ウェアレベリングの改善

最初に、適切なウェアレベリングアルゴリズムが、どのようにして SSD 寿命の最大化に

寄与しているのか説明する。

NANDフラッシュメモリを構成する記憶素子は、ある一定以上の回数の P/Eサイクル(通

常は、数千から数十万)を実行するとビットエラーを起こし始める。そもそも、ソフトウ

ェアがいくつかのデータブロックを他のデータブロックよりも多く上書きしようとするの

は極めて自然な動作である。このような動作による障害を防ぐために今日の SSD、USB型

フラッシュメモリ、およびフラッシュカードコントローラは、ウェアレベリングによるデ

ータの再配置を行っている。

ウェアレベリングにより、ソフトウェアがあるデータブロックに書き込もうとする際、

そのデータブロックに紐づけられていた記憶素子ではない他の場所に、データを書き込む。

次の書き込みの際も、再びどこか別の場所に書き込む。これは、SSD の外部には完全に見

えないような方法で実施され、結果としてフラッシュチップ上の全てのブロックはおおよ

そ同じ量の摩耗を受けるようになる。

ウェアレベリングアルゴリズムは全て同じものではなく、いくつかは他よりも上手く動

作する。

ウェアレベリングには静的および動的の 2 種類の方法が存在する。動的ウェアレベリン

グでは、変更対象となっているデータブロックと未使用のデータブロックの 2 種類のデー

タブロックがウェアレベリングアルゴリズムにより操作される。つまり、動的ウェアレベ

リングアルゴリズムは、既にデータが記録されているデータブロック(静的ブロック)に

ついては操作を行わない。

静的ウェアレベリングは、変更対象となっているデータブロック、未使用のブロック、

および静的ブロックの 3 種のブロックを、SSD 内のフラッシュすべてにまたがって書き込

み回数が平滑化するように制御を行う。これは、有効となるデータを記憶しているが、デ

ータの変更が行われない静的なブロックを含めて、全てのブロックが同量の書き込みによ

る摩耗を受けるようにフラッシュ内で移動されることを意味する。もし静的ブロックを扱

わなければ、静的ブロックがウェアレベリングアルゴリズムによって扱われないことにな

るため、このような動作が必要であることは容易に理解することができるだろう。また一

方で、P/Eサイクルを最小化しようとするならば、このアプローチが、2つのアプローチの

中でよりよいアプローチであることは直感的に分かりにくいだろう。

これら二つの基本的なウェアレベリングアルゴリズムを前提に、The SSD Guyが説明し

ていない他のいくつかの方策がある。それらは、どのくらいの量のデータを移動させるの

Page 6: SSD コントローラはどのようにして SSD の寿命を最 … TECH NOTES SSD コントローラはどのようにして SSD の寿命を最大化しているか 2013 年1月

2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 5

SSDコントローラはどのようにして SSDの寿命を最大化しているか

か、そのデータをどこに移動させるのか、どのようにしてある一つのフルブロックを複数

の部分ブロックで構成するように統合させるかである。

非常に積極的に動作するウェアレベリングアルゴリズムは不必要な書き込みを過度に行

うことになるため、SSD コントローラの設計者は、綱渡りをしながら設計しなければなら

ない。また同時にウェアレベリングアルゴリズムはドライブ中で動作する他の動作(ガベ

ージコレクションなど)に応じて動作しなければならなないため、不要なブロック摩耗を

生み出す可能性がある。

これらの動作すべてが大変トリッキーな動作である!

これらのアルゴリズムの選択により、各ブロックがどのくらいの摩耗を受けるかに加え、

アプリケーションの要求に対して、どのくらい素早くSSDが応答できるかが決定する。SSD

アーキテクト達は、これらのアルゴリズムをどのように制御すべきかについて固有の思想

を持っている。ベストなアルゴリズムは、NANDタイプ、ワークロード、要求 I/O速度、そ

の他を含む多くの変数に依存する。

Intel は、ウェアレベリングアルゴリズムの違いによる影響を理解するためのいくつかの

グラフを公開している。最初は、「Regioned レベリング」と呼ばれる基本的なウェアレベ

リングアルゴリズムを持つ SSD のグラフである(図1)。X 軸は、SSD 内の異なるフラッ

シュチップの領域を示す。Y 軸は、受けた P/E サイクル数を示す。グラフ内の赤の点は、

個々のブロックの状態を示す。このグラフから、あるブロックは同一の領域内のブロック

よりも多くの書き込み行為を受けており、明らかに最初に障害を起こすことになるだろう。

出典:Intel Corporation 使用許諾済み

図1.基本的なウェアレベリングアルゴリズムによる摩耗度

領域

サイクル

Page 7: SSD コントローラはどのようにして SSD の寿命を最 … TECH NOTES SSD コントローラはどのようにして SSD の寿命を最大化しているか 2013 年1月

2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 6

SSDコントローラはどのようにして SSDの寿命を最大化しているか

2 番目のグラフ(図 2)は、Intel 製 SSD での同様なデータであるが、このグラフでは、

P/Eサイクルの回数が最低なものから順にデータが並べ替えられている。そうでないとブロ

ック間の書き込み回数の違いが図に明確に示せないからである。この例で使用された Intel

製の SSDは、本質的に同一頻度で各ブロックを摩耗させる、よりバランスの取れたウェア

レベリングアルゴリズムを使用している。Intelは、初期の SSDは、いくつかの例では、あ

るブロックのピーク摩耗が平均の3倍であったと公表している。2番目のグラフのSSDは、

ブロック間の最大と最小の摩耗の違いはわずか 4%であった。

出典:Intel Corporation 使用許諾済み

図2.Intel製 SSDでのウェアレベリング

このことが、SSD の寿命にどのような影響を及ぼすか?ウェアレベリングアルゴリズム

が P/E サイクルを最小化して、SSD 内のブロックの摩耗を平滑化することができれば、最

長の寿命を引き出すことができるだろう。

外部データバッファリング

NAND フラッシュは P/E サイクルによって劣化するので、これらのサイクルを低減する

ことが SSDの寿命を延ばすために有効であることは理にかなっている。これを支援するた

めに SSD に外部データバッファを組み込むことで、P/E サイクルを低減するようにデータ

を配置することができる。これを実現するために、RAM(SSDコントローラチップ内部の

P/E

サイクル

ウェアレベリング

並び替えられた消去ブロック(最小から最大)

Page 8: SSD コントローラはどのようにして SSD の寿命を最 … TECH NOTES SSD コントローラはどのようにして SSD の寿命を最大化しているか 2013 年1月

2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 7

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. スーパーコンデンサー

Page 9: SSD コントローラはどのようにして SSD の寿命を最 … TECH NOTES SSD コントローラはどのようにして SSD の寿命を最大化しているか 2013 年1月

2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 8

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サイク

Page 10: SSD コントローラはどのようにして SSD の寿命を最 … TECH NOTES SSD コントローラはどのようにして SSD の寿命を最大化しているか 2013 年1月

2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 9

SSDコントローラはどのようにして SSDの寿命を最大化しているか

ルに到達するまでビットエラーによる障害は発生しないだろう。仕様上、どのビッドが次

にエラーを起こすか予測するよう、十分作りこまれているわけではないが、このようなエ

ラーが発生しうるのは、数千回の P/E サイクルを経た後である。これは、ページがあまり

にエラーを起こすために使用を停止する必要がある状態になる前までは、耐久力が指定さ

れた以上のものであることを示唆している。これは、ECC が訂正可能とするエラー数の設

計に依存しているものの、エラー訂正によるブロックの耐久力は、指定されたブロックの

耐久力の何倍にもなることを意味する。

これは全て製品価格に跳ね返る。より高度な ECC は、より処理能力のある SSD コント

ローラを必要とし、高度でないアルゴリズムよりも性能が低速になるかもしれない。また

訂正できるエラーの数は、どのくらいの大きさのメモリセグメントが訂正可能であるかに

依存している。作りこまれた ECC 機能を持つ SSD コントローラは、おそらく、より単純

な ECC を持ったものよりより多くの計算資源や内部 RAM を使用するであろう。これらの

強化により、SSDコントローラはより高価になる。

ECC アルゴリズムは、数学界において、1つの分野として独自の世界を築いている。私

は数学が好きであるが、リードソロモン符号と LDPC の違いを理解しようとは思わない。

誰かが、シャノン限界(訂正可能なビットの最大数)について話そうとするならば、私は

眠くなってしまうだろう。しかし、私は、ECC を習得した人々の知性や、並の人間が考え

る以上にフラッシュブロックの寿命を引き出すその能力に対し、畏敬の念を感じる。使用

をあきらめる必要がある状態になるまでに、より多くのエラービット訂正によって、フラ

ッシュブロックの寿命が延びていることを覚えておいてほしい。

その他のエラー制御

NAND フラッシュ中のビットエラーの発生を防ぐ単純なエラー訂正手段よりも高度な手

段が存在する。この手段がこの節の主題である。この手段で一般的に使われる言葉は「DSP」

であるが、フィルターの実行、もしくはモデムチップを作るために使用されるような DSP

アルゴリズムは、エラー制御では殆ど何もしないようにみえる

ECC は、どのようにして目的を達成したかを知ることなしにエラーを訂正するが、DSP

は、チップの設計に内在している内部エラーの仕組みによって引き起こされる予測可能な

任意のエラーを訂正する。そのようなエラーの主要な例は、隣り合うセルの干渉である。

ここで隣り合うセルの干渉の簡単な説明をする。フラッシュチップの各ビットセルは、

同じダイ上の小さなコンデンサ1つ1つにより構成されるため、隣り合うセル間にはクロ

Page 11: SSD コントローラはどのようにして SSD の寿命を最 … TECH NOTES SSD コントローラはどのようにして SSD の寿命を最大化しているか 2013 年1月

2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 10

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 は、ホストシステムが意図するよりも多くの書き込みを実施する。これ

Page 12: SSD コントローラはどのようにして SSD の寿命を最 … TECH NOTES SSD コントローラはどのようにして SSD の寿命を最大化しているか 2013 年1月

2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 11

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つ以上のタイヤを同時に使用しないし、タイヤを

より多く持っていれば、新規のタイヤを買うことなく長く運転できる。一方で、これによ

Page 13: SSD コントローラはどのようにして SSD の寿命を最 … TECH NOTES SSD コントローラはどのようにして SSD の寿命を最大化しているか 2013 年1月

2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 12

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は、この場合に

Page 14: SSD コントローラはどのようにして SSD の寿命を最 … TECH NOTES SSD コントローラはどのようにして SSD の寿命を最大化しているか 2013 年1月

2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 13

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 サイクルに設定さ

Page 15: SSD コントローラはどのようにして SSD の寿命を最 … TECH NOTES SSD コントローラはどのようにして SSD の寿命を最大化しているか 2013 年1月

2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 14

SSDコントローラはどのようにして SSDの寿命を最大化しているか

れる。MLCの場合は、より低く設定され、TLC の場合は、MLCより低い値に設定される。

SSD寿命を延ばすためにこのビットの情報がどのように活用できるのだろうか?

例えば、SSD の各フラッシュブロックがどのくらいの P/E サイクル数に耐えられるかを

SSD コントローラが計算できるとする。また、丈夫なブロックを優先的に摩耗させ、弱く

なってしまったブロックの摩耗を少なくするウェアレベリングアルゴリズムを管理可能と

する。重要なことは、SSDコントローラが、“このブロックは 100,000回の消去書き込みが

ある、もう使用を停止しよう”と、簡単にあきらめないことである。エラー訂正アルゴリズ

ムがビットエラーを訂正できる範囲に収まっているポイントまで正常ブロックとして扱う

のである。もちろん、これにより各 NAND ブロックの寿命は、絶対的な限界にまで延び、

SSDの寿命は何倍も増加する。これは理解しにくい考え方ではないが、初期の SSD設計者

は考えていなかったことである。これは、簡単であり、時がたてば普遍的な使い方になる

ことが期待される効果の高いアプローチである。

図3.一般的なアルゴリズムによる NANDフラッシュの摩耗状態(上図)、実際のフラッ

シュの摩耗状態に基づくより高度なアルゴリズムを用いた NANDフラッシュの摩耗状態

SMART Storage Systemからの画像提供 使用許諾済み

G

Page 16: SSD コントローラはどのようにして SSD の寿命を最 … TECH NOTES SSD コントローラはどのようにして SSD の寿命を最大化しているか 2013 年1月

2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 15

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の各レベル間の閾値

Page 17: SSD コントローラはどのようにして SSD の寿命を最 … TECH NOTES SSD コントローラはどのようにして SSD の寿命を最大化しているか 2013 年1月

2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 16

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コントローラと比

Page 18: SSD コントローラはどのようにして SSD の寿命を最 … TECH NOTES SSD コントローラはどのようにして SSD の寿命を最大化しているか 2013 年1月

2013 STORAGE NETWORKING INDUSTRY ASSOCIATION 17

SSDコントローラはどのようにして SSDの寿命を最大化しているか

べてはるかに優れたフラッシュの寿命を達成することに成功している。

ソリッドステートストレージ分科会

SNIAについて

ストレージネットワーキング・インダストリ・アソシエーション(SNIA)は、ストレ

ージ業界のほぼ全体に及ぶ 400を超える法人会員と 7,000人の個人会員で構成される

世界的な非営利組織である。SNIAの使命は、企業の情報管理を促進する標準、技術、

および教育サービスの開発と普及においてストレージ業界を世界規模でリードするこ

とである。この目的を達成するために、SNIAでは、オープンストレージネットワーキ

ングソリューション市場を拡大するための標準、教育、およびサービスの提供に全力で

取り組んでいる。その他の情報については、SNIAのWebサイト(http://www.snia.org)

を参照されたい。