産業用メモリー余聞 ラボからの報告

産業用メモリー余聞 ラボからの報告

25

「当社の製品は200ドル以下で販売されており、高価なSDカードを採用することは許されませんでした。」

あなたがモペッド(エンジン付き自転車)にジェット燃料を入れないように、安価な製品には通常高価なSLCベースのカードを付属したりはしません。 誰も199ドルものSDカードを必要とする60ドルの機器にお金を払う人はいません。 これは工業製品の現実であり、時には正しいカードの価格ポイントが高すぎるため、OEMの場合、経済性を優先するため安価なカードの採用が必要となる場合があります。しかし、だからといってそれが問題を覚悟した上での選択という意味でもありません。

カスタマーストーリー

SDカードが消耗により、どの製品でも年間約1回の障害が発生する傾向にありました。 この問題は、データを収集のために設計された数百から数千もの安価なデバイスを顧客が導入したとしても管理可能と思えました。彼らがデバイスの98%からデータをプロットすることができれば、通常は必要なものを得るのに十分でした。私たちのデバイスは、24時間7日間連続でカードに絶えずデータを記録していたので、SDカードを使い切る傾向がありました。 安価なMLCベースのSDカードを使用すると、カードのTBW規格を超えることが多く、最終的には読み込み専用になります。

私たちはホストが過酷な環境で動作していることを認識していました。したがって、TBの書面による制限を超えることに加えて、私たちはしばしば、私たちのデバイスがテキサスでは極端に熱い環境の中で、ベネズエラのような場所のサイトで巨大な温度変動がある中で使われていることがわかりました。 これらの温度変化および極端な変化は、SDカードの消耗を加速し、カードをより早く破損させることがあります。 私たちは約10ドルの予算を持っていたので、エラーが起きれば新しいカードに置き換えました。

デルキンの調査

「私たちはデルキンのフラッシュメモリーの耐久性に関する論文を見たことでデルキンと知り合うことが出来た」と話し始めた。それを機会にSDカードのエラーとカードの識別法、交換するためのプロセスについての検討を開始しました。

デルキンの顧客アプリケーションエンジニアリングチームが関与し、環境に関する一連の質問だけでなく、使用されているOS、アプリケーションソフトウェア、そして最終的にカードがどのようなワークロードを経験しているかについても尋ねました。 カードは消耗していました - プログラム/消去サイクル数(P/Eサイクル)がフラッシュの定格を超え、スペアブロックが消耗して カードは無効化されていました。この障害モードは、使用モデルに適しており、この使用環境でMLCベースの製品ではそれ以上のことはできませんでした。 今回、Delkinの役割がサプライヤーよりもコンサルタントということもあり、状況を改善するためにできることすべてを実行していることを再確認することができました。

デルキンソリューション

議論された1つのポイントは、カードの寿命末期の故障が予測できる場合、状況は顧客にとってより管理しやすいことであった。

提供された解決策は、Delkin SMART Dashboardとライブラリを含むSMARTコマンドのDelkinのサポートを使用することでした。このユーティリティは、ユーザが選択した間隔で重要なカード情報を抽出することを可能にします。 このデータには、カードの残存寿命の推定%、消去回数、残りのスペアブロック情報が含まれます。 このツールを使用すると、フィールドに展開する前に、または定期的に予定されているメンテナンススケジュールに合わせて、製造元または顧客が情報を入手することができます。 約10%未満のライフサイクルが残っているSDカードは、フィールドでエラーが起きる前に置き換えられます。

このソリューションは、顧客にとって完璧であることが判明しました。 装置の構成要素が検査された定期的な保守間隔があり、このステップをプロセスに追加することによって、顧客は現場の故障をほぼゼロに減らすことができました。

しかし、デルキンのスマートツールはデルキンカードでしか使えなかったので、顧客は仕様変更をする必要がありました。

学んだ教訓

問題を解決するには複数の方法があり、問題を緩和する方法を探している顧客とDelkinとのチームとして働くことが重要です。ホストの使用モデル、およびホスト環境が正しい解決策を得るためには、長い道のりを歩むことができます。いくつかのソリューションはコストに重点を置くことができ、あるレベルの欠陥が許容される可能性があり、他の設計にはゼロの障害要件があり、既知の問題を回避するためにカスタム設計またはより特長のコントローラが必要です。最も重要なのは、責任を回避する理由を見つけるよりも、問題の解決に重点を置いたサプライヤーを選ぶことです。
「DelkinのSDカードは、新しい大容量デュプリケータでは動作しません。他ブランド製品では問題ありません。」

背景:

何年もの間、Delkin SDカードを購入していた顧客は、売上高が大きく伸び、新しいコンテンツローディング機器(Duplicator)を購入しました。 デュプリケーターでカードにコンテンツを追加した製品は、3年以上も問題なくホスト機器で使用されていました。販売が好調だったこともあり、また新しいデュプリケータがラインに持ち込まれました。

カスタマーストーリー:

新しい36スロット、高速のデュプリケーターが購入、設置されましたが、すぐに障害が発生しました。 私たちは古いデュプリケーターでデルキンのSDカードを動作させていましたが、問題なく書き込むことができました。 しかし、新しい機器に挿入すると、非常に高い故障率が発生してしまいました。 次に試したことは、他のブランドのSDカードと、新しい機器との組み合わせでしたが、問題はありませんでした。 私たちは出荷を続ける必要があったため、最初のステップでは、古い機器のデルキンカードを複製し、新しいデュプリケーターでは別のブランドのカードを使用して作業を進めました。 理想的な状況ではありませんでしたが、機器の特性やデルキンSDカードに何か問題があったかどうかを判断する時間はありませんでした。

Delkin Discovery:

最初に、顧客はデュプリケーターの製造元に連絡をしました。 製造元はいくつかのテストを実行し、コピー検証フェーズではなく、リード検証テスト中にDelkinカードが故障していると判断しました。 デュプリケーターのメーカーは、デルキンのSDカードがシステムと互換性がないとの報告を出してきました。

顧客がデルキンに連絡し、その問題を調査するためのケースが開かれました。 最初に、顧客が経験した結果が、顧客が使用していたのと同じ環境で再現されました。 次に、読み取り確認の段階でカードに障害が発生したことが確認され、デュプリケータのベンダーレポートが正しいと判明しました。 さまざまなテストが実施され、問題なくデルキンカードが複製されていた顧客が使用した以前のデュプリケーターも分析されました。

Delkinソリューション:

Delkin SDカードの信号については、組み込みシステムの使用に適したタイミング仕様を満たしており、また、カードの消費電力やその他の仕様もすべて規格内収まっていました。 分析中、カードのBUS強度が電力を節約するためにわずかに減少したことに気づきました。 Delkin SDカードの初期化で利用できる多くのオプションの中には、このように電力を節約するオプションがあります。初期デュプリケータ上のケーブルは、新しい高速デュプリケータ上のケーブルの長さの半分であったことも注目されました。その後、これが問題の原因であることが判明しました。カードとデュプリケータマザーボードとの間の配線距離が、読み取り中にカード信号が弱くなっていることがわかりました。デュプリケータ製造元はケーブルの長さを変更できなかったため、デルキンはカードのバス強度を上げてカードをカスタマイズし、重複している間の読み取り確認エラーを防いだ。

教訓:

このシナリオでは、カードの電源が最適化され、エラーが発生しました。ホスト製造業者(この場合は複写機メーカー)が問題を解決するための変更を行うことができなかったため、デルキンはカードを修正することができました。このカスタマーストーリーのもう一つの教訓は、ホストやソフトウェアではなくカードのカスタマイズが、他の可能なソリューションより速く、安価で簡単になることがあることです。デルキンのケースでは、新しいパーツ番号が発行され、カスタム初期化命令が追加されました。これにより、追加されたバス強度のカードのみが保証され、問題は解決されました。
「同じメーカーからの同じカードを2年間使用していますが、突然仕様変更?」

背景:

新しい顧客が私たちに電話をして当社のCFカードについて尋ねてきました。 彼らは何年もの間、Amazonで同じブランドと容量の民生用グレードのCFカードを購入しており、 過去に問題が一度も起きたことがないという話をしてくれました。 彼らは、ブランド名、モデル名、そして容量が同じならば、性能、特性がまったく同じカードになると思い込んでいました。しかしながら、最新のロットでは全く異なる機能と仕様を示し、自社のホストでは動作しませんでした。 まったく突然に、製品の構成要素上、重要度の低い、最小限のものと考えられていた部品が、製品全体の出荷を妨げるということが起こりました。

カスタマーストーリー:

同じブランドのカードを使用した場合、最初にテストしたものと同じカードを購入することが常に考えられました。 CF(CompactFlash)カードを初めて購入したとき、Amazonで、4つまたは5つの異なるブランドのカードを購入しました。いくつかはうまくいき、他は問題を抱えていました。 私たちはよく知られたトップブランドの採用を決定しました。 私たちはこのブランドカードの評価に一生懸命取り組みましたが、製品の内部部品の変更が行われるかもしれないという事実について考えたことはありませんでした。 しかし、私たちの仮定は間違っていました。 過去2年間に同じブランドと容量カードを購入してきましたが、今回、15回目の注文で来た製品は、動作しませんでした。 最初に、ホストソフトウェアまたはハードウェアでOSのアップグレードや変更が行われていないことを確認し、すぐに変更されたカードであることを確認しました。 私たちは、カードがサプライヤーでどのように作られたのか、技術的に知識のある人間と接触するのに苦労しました。 最終的には、BOM(部品表)を頻繁に変更することでコストを節約することが出来ているというを聞いただけでなく、コンシューマの使用を目的とした製品であるため、変更の内容、影響が把握されていないようでした。 私たちはすぐに代替ソースを探し始めました。

デルキンの調査:

当初、デルキンのカスタマーアプリケーションエンジニアリングチームが関与し、お客様にカードの使用モデルがどのようなものであるか、およびレビューできる最低限の環境または性能仕様があるかどうかを尋ねました。 これが利用できないときは、ホストを借りて、顧客アプリケーション環境を最適に複製する方法についての情報を求めました。わずか数日間のテストの後、アプリケーション要件と顧客のコストとリードタイムに関する商業的な期待に最も合致するカードがデルキンによって推奨されました。 サンプルカードが顧客に送られ、テストされました。 これらのカードは合格し、量販注文はカリフォルニアのPowayにある私たちの工場から出荷されました。

デルキンソリューション:

デルキンカードの大きな違いは、顧客が承認し注文した部品番号に基づいてBOMを管理していたことです。この部品番号には、フラッシュ部品番号、コントローラ、およびファームウェアを含むが、これに限定されないカードの多くの側面が定義されています。 BOMをこの部品番号でロックすることにより、顧客は何らかの理由でカードを改変しないことが保証されました。さらに、EOLのフラッシュや推奨されるファームウェア変更のために、変更が必要な場合は、そのパーツ番号の変更、推奨交換部品、および前回承認された部品の最終出荷を購入し、スケジュールを設定します。この通知は、顧客が提供された交換部品をテストするのに十分な時間を許すように行われました。デルキンの部品番号は、コンテンツのロード、または任意の顧客が必要とするカスタム機能またはファームウェアを指定するためにカスタマイズすることもできます。

教訓:

民生品のエレクトロニクスの世界では、NANDフラッシュカードやドライブの採用品を決定した後でも、それらの部品を変更することで「コストダウン」を実現するという方法が取られます。 この考え方は、ほとんどの工業製品メーカーの考え方とは相容れません。 カードやドライブを承認するには、数週間、さらには数カ月かかることがあります。 さらに、EPA、FAA、FDCなどの様々な機関からの承認が必要となる場合があります。 多くの場合、経済的にも市場投入までにも大きな費用がかかります。ホスト内のコンポーネントを変更すると、このテストと承認が危険にさらされる可能性があります。 制御されたBOMを持つことは、産業および組込み市場にストレージ製品を供給するためのパズルの重要な部分の1つにすぎません。
3D NANDフラッシュとは、メモリセルを複数層、垂直に積み重ねることを可能にする、フラッシュストレージにおける高度なアーキテクチャです。 高密度大容量化を目指すフラッシュストレージにとって洗練されたデザインであり、最適なソリューションとなります。 複数のレイヤーを構築することにより、より大きなジオメトリが使用可能になり、より高い信頼性と高密度を実現することができます。 製造されたビットの約50%が2017年中頃までに3Dになると推定されています。

3D NANDの強みの1つは、1GBあたりのコストが低く、高密度の大容量ストレージを必要とするクライアントSSDおよびコンシューマ向け製品には理想的なデバイスです。 3D TLC NANDは、Planar / 2D MLCと比較して消費電力を抑えながら、書き込み/書き込みが高速になります。 更に、3D TLC NANDはPlanar/2D MLCに比べてダイの面積当たりの記憶容量は倍以上にもなります。

3D NANDフラッシュが適さない産業用アプリケーションとしては、32GBを下回るような比較的低容量ストレージを必要とするものなどいくつか考えられます。 高耐久性と長寿命サイクルを必要とするアプリケーションは、引き続き2Dフラッシュデバイスを最大限に活用していくことになります。重要なのは、シングルレベルセル(SLC)テクノロジは2D planer NANDのみで利用可能なテクノロジーであるということです。

フラッシュストレージ技術の進化と3D NANDフラッシュの機能、そしてフラッシュアーキテクチャを利用した業界の方向性に注目することはエキサイティングです。この技術は、3D NANDの性能、耐久性および全体的な成熟度の更なる改善がなされるにつれて、より幅広い産業用途にも適用可能なデバイスになるはずです。
概要

NANDフラッシュデバイスのエラーNANDフラッシュは、大容量ストレージデバイスにとって適切な選択肢です。 比較的低コストで大容量の記憶装置を可能にします。 従来よりNOR型フラッシュメモリがブート・コードとデータを保持するために、組み込みシステムで使用されていましたが、これは大量のデータを保持するには非効率的でした。

USBまたはSATA / IDEドライブからNORフラッシュ(保護された)BIOSサポートシステムを起動するシステムでは、現在ではNANDフラッシュベースのSDカードとCFカードが設計上の選択肢となっています。

NANDフラッシュにはさまざまな技術があります。

SLC(シングルレベルセル)
MLC(2レベルセル - 擬似SLCとして使用可能)
TLC(トリプルレベルセル)
3D - (X-Y-Z軸グリッド配列)

これらの優れた技術について詳しくはFlash Enduranceで述べられています。 これらが正しく動作するためには、洗練されたハードウェアとファームウェアの両方の高度なインタフェースが必要となります。  MLC/TLCのRawビット誤り率は非常に高く、エラー検出と訂正のために強力なECCアルゴリズムが必要となります。 MLC/TLCにおいては、>96ビットのエラー検出/訂正がほぼ平均となります。

エラーの原因

NANDフラッシュは、その性質(電荷ベースのセル)によって、本質的にエラーを起こしやすい特徴を持っています。 主だったエラーの要因は次のとおりです。

セルの電荷損失または利得
読み出しディスターブ(Read Disturb)
プログラムディスターブ(Program Disturb)
過度のプログラム/消去サイクル

洗練された、よく設計されたNANDコントローラを採用したとしても、ストレージ製品が壊れる可能性はあります。 コントローラでは、エラーの発生を最小限に抑えるために、ハードウェア/ファームウェアに適切に設計されたFlash Translation Layer(FTL)が大変重要です。

FTL

FTLは、論理マッピングから物理マッピングへの変換を担当します。フラッシュ内の物理セクタへの論理セクタ(LBA)(ブロック→ページ→セクタ)マッピングは比較的簡単です。ほとんどのコントローラは、ブロックベースのマッピングまたはページベースのマッピングを使用します。どちらにも長所と短所があります。 FTLにとって最も難しい作業はエラー処理です。 ご想像のように、これは当然MLC/TLCにとっても、またダイ寸法の小型化を実現するためにも重要になります。

ウェアレベリング

ブロックの消耗はP/Eサイクルが数多く行われた後に起こります。 ORTテストは消耗を判断するのに役立ちます。 3000 P/Eサイクルと比較的短寿命のMLC/TLC 小規模プロセスにおいて最初に考慮すべき点は、フラッシュ中のブロックの早すぎる消耗を避けることです。 動的ウェアレベリングはブロックの使用をむらなく分散させ、各ブロックの使用回数(P/Eサイクル)が均等になるようにします。 一方、静的ウェアレベリングが対処するのは、静的データを記憶するブロックを含むすべてのブロックを対象にして、平準化を実行するというものです。 Erase サイクル数の上限に加え、特定のフラッシュ・デバイスでは Erase サイクル間で行われる Read サイクルの最大数も問題になります。つまり、データがブロック内にとどまっている時間が長引き、何度も読み取られることになると、そのデータが消えてデータ損失につながる可能性があるという問題です。静的ウェアレベリングは、古いデータを定期的に新しいブロックに移動させることによって、この問題に対処します。

良好なFTLは、アクティブなブロックそれぞれの消去回数を保持し、予め設定された消去回数に達するとウェアレベリングを起動します。 ウェアレベリングはエラー処理の第一歩です。

エラー検出/訂正

この機能は通常、ハードウェアで実行されます。 データがフラッシュから読み出されたときにエラーが発生し、これは逃れようがありません。 最良のFTL設計では、ECCとCRCの組み合わせが使用され、データの誤検出と訂正が防止されます。 さまざまなアルゴリズムが使用されていますが、最も効果的なアルゴリズムはBCHアルゴリズムです。 これには、訂正される各ビットに対して13ビットのオーバヘッドが必要とされます。

オーバーヘッド検出訂正データはフラッシュのスペア領域に保持されるので、使用される補正量はオーバーヘッド領域内の利用可能なフラッシュに依存します。 フラッシュベンダーはこれに調整されているので、データが訂正された場合でも、各FTLで補正が必要なビット数を把握することができます。

ディスターブエラーを読む

この現象は、多くのコントローラベンダーによって見過ごされがちです。リードディスターブエラーは、この分野の多くの不思議な問題を説明しています。

読取り妨害エラーは、ブロック消去が間に合わずにページに過度の読取り(約1M)が行われた場合に発生します。静的ウェアレベリングはある程度役立ちますが、それだけでは不十分です。ウェアレベリングは、ブロック上で過度に多くのプログラム消去サイクルを防止するための保護メカニズムです。必要とされるのは、ブロック/ページからの読み取り回数のカウントです。しきい値に達すると、データは新たに消去されたブロックに移動され、消去されたブロックは再び使用可能になる。

読み取り障害の問題は、読み取り中のページだけでなく、隣接するページにも影響することです。これは、影響を受けるページを読むときに発生するエラーが訂正できない可能性があるため、危険です。

プログラム妨害エラー

プログラム妨害エラーは、部分ページプログラムが多すぎて隣接ページが乱れた場合に正常に発生します。これを回避する1つの方法は、部分ページプログラムの数を制限することです。リードディスターブのように定義された制限はなく、これを最小限に抑えるために他のメカニズムを使用することができます。影響を受けたページが読み込まれ、エラーが検出されたときに発生します。時にはこれは修正することができますが、ブロックはまだ問題になっています。

では、何ができるのですか? 1つの操作は、各ページの読み込み時に修正が必要なビット数を追跡​​することです。利用可能な補正機能のパーセンテージに近づくと、データを別の正常なブロックに移動した後にブロックを消去し、ブロックを使用して戻す必要があります。

プログラム/エラーの消去

プログラムエラーは、消去エラーよりも一般的ではありません。プログラムエラーが発生した場合、必ずブロックをサービス停止状態にする必要はありません。ブロックを非稼働状態にすることは、非効率的で不必要なことになります。単に別のブロックを選択し、古いブロックから新しいブロックにデータをコピーし、エラーの原因となったブロックを消去するだけです。その後、サービスに戻る準備が整いました。

消去が失敗した場合、その結果はより重大である。消去エラーは、ブロックがリタイアされ、置換(リマップ)される必要があります。

不良ブロックの処理 - 不良ブロック再マップ

フラッシュデバイスは、マークされた不良ブロックを含む工場から供給されます。通常、すべての良好なブロックに0xFFがあります。製造元は、ブロックの最初の数ページで不良ブロックを0xFF以外のデータでマークします。コントローラの最初の注文は、これらをスキャンして欠陥テーブルを作成することです。これらのブロックは論理マッピングから物理マッピングには含まれません。製造業者は、通常、初期+過渡発生不良ブロックが全ブロックのパーセンテージを超えないことを指定します。通常、2%が記載されています。これらのブロックを交換するために予備のプールを作成することが重要です。不良ブロックの再マッピングが不可欠です。

コピーページの過剰使用(コピーバック)

NANDフラッシュは、あるブロックから別のブロックにデータを内部的にコピーする機能を備えています。これは、約20%の速度増加を助けることができます。データは決してフラッシュデバイスを離れることはありません。しかし、大きな欠点はエラー訂正がないことです。これで十分な時間とビットエラーが蓄積されます。では、これを防ぐために何ができるのですか?カウンタを使用して実行されるコピーバックの量を制限します。しきい値を超えると、コントローラからデータを読み取ってエラーを修正します。次にカウンタをリセットします。これはスピードと信頼性の間の良い妥協であることが分かります。

ホストデバイスへのエラーの報告

ここで、NANDフラッシュを使用する際にいくつかの方法でエラーが発生することがわかりました。上記の方法は、エラーが発生する可能性を最小限に抑えるためにすべて使用する必要があります。

しかし、とにかくエラーが発生します。フラッシュから読み取りエラーを起こしましょう。上では、すでに読み込みごとにいくつのビットが訂正されているかを追跡する方法について説明しました。このカウンタを見ることで、ブロックが劣化しているかどうかを判断できます。修正能力の75%に達すると、ブロック消去が役立ちます。

それでも、コントローラーがページを読み取り、訂正不能なエラーが発生したとしましょう。これは、これがハードエラーかソフトエラーか、過去に発生した読み出しやプログラムの妨害であるかどうかはわかりません。したがって、コントローラは、訂正が達成されたかどうかを確認するために、連続して数回読む必要があります。もしそうなら、ブロックはリフレッシュのためにスケジューリングされ、消去され、データは別のブロックに移動されます。消去に失敗した場合は、再マップする必要があります。

訂正が達成できない場合、データなしでUNCエラーがホストに返されます。これは、上記の手法を使用すると最小限に抑えることができる悪いシナリオです。システムレベルでは、重要なデータに影響を及ぼすサービスは、ドライブの複数の場所に保存する必要があります。

フラッシュ・プログラムのエラーを伴う書き込みエラーの場合、コントローラーは既存のデータを新しいブロックに移動し、新しいページをプログラムし、ブロックをリフレッシュするようスケジュールする必要があります。ブロックが消去に失敗した場合は、再マップする必要があります。

ドライブ書き込み中のパワーダウンからの回復

書き込みサイクル中に電源が失われた場合(停電)、ストレージデバイスによっては、データが破壊される可能性が高くなります。コントローラ/ディスクの観点からは、できることには限界があります。何が起こるかは、セクタバッファにどれだけのデータがあるか、全体的にどのくらいのデータが後ろにあるかによって決まります。

ディスク電源レールに十分な容量がある場合、コントローラーは最初に電源障害を検出し、セクター・バッファーをフラッシュにフラッシュし、ビジー信号をホスト・インターフェースに提示することができます。同時に、フラッシュを書き込み禁止にしてCPUを停止させます。

このシナリオを実装することは必ずしも可能ではありません。ディスクの観点からすれば、破損を最小限に抑えることができるので、電源が切断されたことを検出すると、上記の手順を実行すると、少なくともフラッシュは書き込み保護されます。

パワーアップ回復は、通常、物事を修正しようとする場所です。合理的なコントローラ設計では、新しいデータをフラッシュバッファに書き込み、既存のデータには触れないことに注意してください。したがって、パワーアップ回復にはこれらのバッファの読み取りと、エラーが発生した場合には、このデータを古いデータに置き換えます。これは理想的ではありませんが、少なくともドライブに格納された破損やナンセンスデータは保証されません。

ホストは停電から復旧する責任を負う。電力損失が検出されると、ホストは書き込みを開始したデータの書き込みを完了するのに十分な時間を必要とし、その後停止します。ホストは、書かれたものを読み返してデータの競合を解決し、可能であれば修正を加える必要があります。これは簡単な作業ではありません。このプロセスについてのさらなる洞察を得るために、さらなる調査を行うことをお勧めします。