(4) 平均書き換え回数2500回到達

現状報告

両者のAverage Erase Countが2500回に到達し、現在はデータ保持エラーのテスト中です。これまでのテストでは書き込みエラーを調べるために書き込みと読み込みを交互に行っていました。これからしばらくはドライブへの書き込みを行わず、時々リードオンリーのテストを行ってRBERの推移を計測します。結果の生データは前回と同様に以下のリンクからダウンロードすることができます。
OCZ OCZSSD2-1ONYX32Gのログ
Super Talent STT_FTM64G225Hのログ

現在のRaw Bit Error Rate(RBER)の状況をグラフにすると、以下のようになります。

縦軸がRBER(logスケール),横軸がAverage Erase Countです。
赤はOCZ Onyx(Intel,34nm)の全データにおけるRBERを、緑はOnyxの最後の一周のRBER(一周=LBAの先頭から最後まで読み書きを行うことと定義)を示します。同様に、青はSuperTalent UltraDrive GX2(東芝,43nm)の全データにおけるRBERを,ピンクはUltradrive GX2の最後の一周のRBERを示します。
また、最後の方に"+142hours", "+275hours"とある矢印の先が、データ保持エラーを調べるためのリードオンリーテストの現状の結果です。それぞれの値は最後にデータを書き込んでからの時間を示します。
概ねAverage Erase Countに従ってRBERも上昇していますが、Onyxの300回ぐらいのところとUltraDrive GX2の400回ぐらいのところにRBERが急上昇しているところがあります。この間にテストのためのPCを変更したのですが、プログラムは同じものを使っているので、この現象の原因はよく分かりません。考えられることとしては、アイドル中にスタティックウェアレベリングが行われてたまたまエラーの多いブロックが使われるようになったためか、あるいは温度要件が変化したため、と言ったところでしょうか。この点に関しては、Indilinx Smart Viewerの結果なども調査して原因を調べてみます。

温度要件と放置実験の要領

NANDフラッシュのエラーレートは温度にかなり強い影響を受けるので、厳密な試験を行うためには恒温槽などを使うのが望ましいようです。当然そんなものは自宅にはないのですが、せめてSSDの雰囲気温度ぐらい計測しておこうと思い、プローブ付きで最低・最高温度を計測可能な温度計を買ってみました。一週間ぐらいケース内のSSD周辺の温度を測ってみたところ、最低温度21.3度、最高温度27.6度でした。この温度計には平均温度を測る機能は付いていませんが、ふと見ると23〜24度台になっていることが多かったように思います。
というわけで、外に出しておくよりは温度が安定していそうなので、放置実験はケース内にSSDを入れっぱなしにします(PCはサーバ用なので24時間稼働)。ただし、Indilinxはアイドル中にスタティックウェアレベリングかガベージコレクションをしているらしく、OSから何もしていなくてもErase Countが増加してしまいます*1。そのため、普段はSSDには電源を入れず、テストを行うときだけケーブルを接続することにしました。

プログラム公開

ソースは汚いままなのですが、放っておいても一生きれいにならない予感がするのでもうこのまま公開します。コンパイルにはBoost 1.44とVisual C++ 2010が必要です(Express Editionでも大丈夫なはず)。
IDXEnduranceTester
起動後にドライブ選択->リードオンリーテストかリードライトテストかを選択->リードライトの場合目標Average Erase Countを設定->テスト開始となります。なお、テスト中にIndilinx SMART Viewerを呼び出すようになっているので、IDXEnduranceTester.exeと同じフォルダにSmartViewer_2_21.exeを置く必要があります。

*1:SuperTalentの読み書きのテスト終了時にはAverage Erase Countが2500、Maximum Erase Countが2712だったのですが、気がついたらそれぞれ2501,2756に増えていました。