(1)IndilinxコントローラのSMARTについて

IndilinxコントローラのSMARTについて

テスト本番の前に、なぜIndilinx製コントローラ搭載製品を選んだのか、それによって何が分かると期待できるのか、という点についてまとめておきます。

Indilinx BarefootコントローラのSMARTの仕様は、Transcend社のデータシートに掲載されています。厳密には、今回のテストで使おうとしているOCZ OnyxシリーズはAmigosというコントローラを搭載しているのですが、BarefootとAmigosは同じIndilinx社製であり、取得できるSMARTの項目が一致している上、変な値にもなっていないので、まず間違いなくSMARTの仕様は同一であると考えられます。
耐久テストを行うにあたり、SSDの内部状態が観測できるという利点は非常に重要です。もしSMARTが全く利用できなければ、SSDが故障したときに内部で何が起こっていたかを推測するのは困難になります。これから解説するように、Indilinx社製コントローラのSMARTからは、非常に詳細な情報を読み取ることができ、内部状態を詳しく知ることができます。

上図は、今回のテストに用いるOCZSSD2-1ONYX32GをJSMonitorで表示したもので、重要な項目を四角で囲っておきました。以下、色別に内容を解説しておきます。"Total Sectors Read with CBE"などです。各項目にマウスカーソルを合わせるとツールチップが表示されますが、その中では省略していない名称を表示しています。">*1

  • NANDの消去回数

赤の四角で囲った値は、NANDフラッシュの最大・最小・平均消去回数です。これらの値から、NANDへの書き込み量の総量や、ウェアレベリングがどれだけ正しく機能しているかを推定することができます。

  • 不良ブロック関連

青の四角で囲った値は、主に不良ブロックに関する情報です。Initial Bad Blockは、製造時の問題などにより、先天的に破損していたブロックの数を表していると考えられます。一方、Program/Erase/Read Failure Block Countは、書き込み・消去・読み込み時のそれぞれの動作に失敗したブロック数を表し、おそらくこれらの動作失敗が発生したブロックは無効化されると思われます。データシートには、"Read Failure Block Count(Uncorrectable Bit Errors)"と書かれているので、"Read Failure"とは、ECCを用いても修正しきれなかったエラーが発生したことを示すようです。

  • RBER(Raw Bit Error Rate)

緑で囲った値から、今回のテストのキモとなるRBER(Raw Bit Error Rate)という値を計算することができます。RBERについては以前の記事でも紹介していますが、この値はビットエラーの頻度を表し、NANDが消耗してくると値が大きくなってきます。
RBERの計算方法は、"ECC使用前のビットエラー発生数÷総読み込みビット数"とするだけです。IndilinxコントローラのSMARTからは、"(Total Error Bits Count)/(Total Sectors Read*4096)"で計算することができます。4096を掛けるのは、1セクタが4096ビットからなるためです。上記のスクリーンショットの状態からRBERを計算すると、36,951/(160,699,137*4096)=5.61E-8となります。
なお、スクリーンショット中に"Read Error Rate"の項目がありますが、この値はおそらくRBERを四捨五入(または切り上げ)した値の指数を表示していると思われます。前述した通り、計算から求めたRBERは5.61E-8なので、これを四捨五入すると1.0E-7になります。スクリーンショット中の"Read Error Rate"の値は7なので、一致しています。同様に、現在システムドライブとして用いているK5-64では、Total Error Bits Count=13,243、Total Sectors Read=4,314,373,168となっているので、そこからRBERを計算すると7.50E-10となり、四捨五入すると1.0E-9となります。このK5-64の"Read Error Rate"の値は9なので、やはり計算は合っているようです。
RBERが重要な指標である理由は2点あります。1点目はNANDフラッシュそのものの特性を知ることができるという点、2点目は統計学的な意味におけるサンプル数を増やすことができる点です。
まず1点目について。SSDの主要な部品はコントローラ(+外部DRAM)とNANDフラッシュの2点であり、通常外部から観測できるのは、この2点によって構成された複合的な状態です。しかし、RBERはコントローラから切り離されたNANDフラッシュの状態を示す指標です。すなわち、平均消去回数に応じたRBERの値を計測すれば、その結果は同一の型番、乃至は同一のファミリーのNANDフラッシュを搭載している他のSSDの内部状態を推測する上で役に立つ可能性があります*2。今回のテストに用いるOCZSSD2-1ONYX32GはIntel製の29F32G08AAMDBというNANDを使用していますが、前回の記事で述べた通り、同一のNANDがS596 Turboの64GB版にも使われています。また、IntelSSDも、容量は異なりますが、これと同じファミリーのNANDを搭載しています。
そういう意味では、他社のNANDを搭載したSSDとRBERの比較を行ってみるというのは面白そうです。SuperTalentのFTM32G225H(UltraDrive GX2シリーズ)はBarefoot ECOコントローラに東芝の34nmNANDの組み合わせで容量32GBなので、比較対象としてはピッタリなのですが、どうやらもう製造中止で店舗でもほぼ売り切れのようです。どこかに売っているのを見かけたら教えてください。最近はドルが安いから海外通販もありかな…?
次に2点目についてです。今回のテストは、主に経済的な理由により、使用するSSDは1台か、あるいは買い足したとしてもせいぜい2,3台の予定です。統計学的見地からは、サンプル数が1とか2のテストはほとんど意味を持ちません。詳細は次回の記事で紹介する予定ですが、JEDECの制定した"Solid-State Drive (SSD) Requirements and Endurance Test Method"では、最低でも31台のSSDをテストに用いることが要求されています。
しかし、RBERの場合は、サンプル数はSSDに搭載されているNANDのビット数となるので、一挙にサンプル数が増えることになり、統計学的に有意な値となることが期待できます。もっとも、搭載されているNANDのロットは全て同一でしょうから、無作為抽出ができているとは言えません。もしかすると、CPUのOC耐性のように、NANDにも耐久性が有意に高い、あるいは低いロットが存在するかもしれません。実際、前述のJEDECの評価指標でも、連続していない3つ以上のロットの製品をテストに用いるように指定されています。しかしまあ、流石にロット違いで耐久性に5倍とか10倍の差がでることはないだろう、ということでここは大目に見てください。

  • その他

その他のSMART値として興味深いのは、"Total Sectors Read with CBE(Correctable Bit Error)"です。これは、読み込み時にECCによって訂正可能なエラーが生じた"セクタ数"を表すと思われます。もしこの値がTotal Error Bits Countに比べ著しく小さければエラービットが局在しており、逆にTotal Error Bits Countとそれほど値が変わらなければエラービットが遍在していると考えられます。前者の場合、エラービットの多いブロックを無効化すればSSDはより長く使えるでしょうが、後者の場合は寿命が近づくと立て続けに不良ブロックが増え、あっという間に予備領域が使い果たされる、といった現象が生じるかもしれません。
さらに、"Bad Block Full Flag"も興味深いところです。字義通りに解釈すると、不良ブロックが一杯になったときにこのフラグが立つということでしょうから、無効化されたブロックが増え、予備領域が使い果たされた場合にこの値が1になると期待できます。予備領域が無くなると、原理上SSDに対する書き込みはできなくなってしまうので、この値が1になったときにSSDがリードオンリーモードになるのではないかと個人的には予想しています。なお、今のところこの値が更新された例は見たことがありません。
というわけで、あまりに長くなってきたので続きは次回に回します。

*1:JSMonitorでは、レイアウトの都合上、一部の属性名(Attribute Name)を短縮して表示しています。例えば"Total Count of Read Sectors with Correctatble Bit Errors"->"Total Sectors Read with CBE"などです。各項目にマウスカーソルを合わせるとツールチップが表示されますが、その中では省略していない名称を表示しています。

*2:ウェアレベリングのアルゴリズムに問題があるとそうはいかない可能性もありますが…