SD / MMCカードが独自のコントローラーでレベリングを行うのは本当ですか?


51

これに関する信頼できる情報は見つかりません。SD / MMCカードハードウェアの完全な仕様がありません。

本当ですか?私の高レベルのアプリケーションでは、これらのカードを使用する際にウェアレベリングを考慮する必要はありませんか?

編集

誰かがウェアレベリングがSD仕様によって保証されていることを確認できますか?ほとんどのベンダーがそうしているように見えますが、仕様では必須ではありません。


5
すべてのフラッシュメディアメーカーがウェアレベリングアルゴリズムに投資しているわけではありません。ウェアレベリングは、アルゴリズムのためにメーカーが市場をリードするSSDでより一般的です。
チェタンバルガヴァ

回答:


43

私はSDアソシエーションのメンバーであった会社で働いています。私たちは2.0(SDHC)仕様に精通しています。SDカードの仕様には、ウェアレベリングに関するエントリはありません。SDメーカーが選択した場合、それを処理するのはSDメーカーに完全に依存しています。ある人はそうするかもしれないが、そうではない人もいることを見てきました(超安価な偽造SDカードに注意してください)。SDXCにより、ウェアレベリングが含まれるように変更された可能性がありますが、それはわかりません。残念ながら、それを実際に示す唯一の方法は、公式の仕様を理解することです。おそらくオンラインで見つけることができますが、SDアソシエーションは本当にあなたにそれを支払うことを望んでいます。

サイドノートとして、2GBのカードを取り、それが何度も何度も何度も書き始めると、カードが死んで書き込み不可能になる前に平均して約10TBになります。また、SDカードは、データがいつ不良であるかを知らせません。つまり、PCのハードドライブのようにI / Oエラーを返しません。10TBは大量のデータであるため、これは組み込み設計の問題ではないかもしれませんが、誰かにとっての要因になる可能性があります。


2
仕様には含まれていませんが、企業は評判を維持するためにそれを続けたいと考えています。超格安の模造品は評判を気にしませんが、すべてを安く買おうとする人に売ります。これは理にかなっていますか?
ケレンブ

1
@Kellenjbこれは非常に合理的な仮定であり、個人的には同意します。ただし、仕様に含まれていないため、特定のメーカーのSDコントローラーデザインにアクセスする可能性は非常に低いため、実際に証明することはできません。長年にわたり多くのテストを行ってきましたが、一部の主要ブランドは他のブランドよりもはるかに優れたパフォーマンスを発揮します。内部アルゴリズムの違いか、完全に欠けている可能性があります。
クリスバーンセン

4
安価な模造品は、仕様に含まれていても気にしません。顧客にはすぐには見えませんが、欠落している可能性があります。私たちは、ICとして鉛プラグを販売する人々について話している。ウェアレベリングを行っていない有名ブランドのカードは聞いたことがありませんが、可能だと思います。
ダロン

@KrisBahnsenでは、回復不能なエラーが発生したときにSDカードが実際に返すものについて詳しく説明できますか?これにとても興味があります。この状態を検出する方法はまったくありませんか?
フレッドバセット

3
@fredbasset、スレッドをゾンビにする方法;)SDカードの仕事をしてからしばらく経ちました。ただし、IIRC SDカード自体は、自分が感じるものは何でも物理的に返します。適切なドライバーと組み合わせた新しいもののいくつかは、IOエラーを検出できる場合があります。ただし、古いSDカードの多くは、NANDに保存された不良データを返し、それを良好と呼んでいます。ただし、書き込みが完了できない場合、IOエラーが返されます。
クリスバーンセン

23

それは本当です!MicroSDカードには、黒いプラスチックでカプセル化された(ARM)マイクロコントローラーに結合されたNANDフラッシュチップが含まれています。http://www.bunniestudios.com/blog/?p=898で説明しています。

フォローアップ記事の最後にhttp://www.bunniestudios.com/blog/?p=918コントローラーを統合するBunnieのポジショニングは、おそらく事前にフラッシュをテストするよりもコストがかからないでしょう。

SanDiskのSDカード製品マニュアルの引用:「1.9ウェアレベリング。ウェアレベリングは、NANDメモリを使用したSDカードの消去プーリング機能の本質的な部分です。」SanDiskブランドカードのデータシートですべてを読むことができます。


1
Bunnie Huangは間違いなく私にとって十分に信頼できます!
vicatcu

知っておくと良いのですが、この技術の正式な仕様に基づいてこの質問を啓発できる人を待っています。
ivarec

2
データシートを検索しようとしたときに Digikeyはこの無駄なSanDiskのパンフレットを見せてくれました。ウインテックSWISSBITデータシートは良好であった、との両方がウェアレベリングを述べました。Digikeyがホストするデータシートにリンクできますか?
ケビンフェルメール

これらは古いSanDiskのものよりもはるかに優れています。
joeforker

Wintecは素晴らしいものではありませんでしたが、新しいSanDiskが最高です!編集してくれてありがとう。
ケビンフェルメール

19

はい、SD / MMCカードには、ウェアレベリングを行うコントローラーがあります。そうでなければ、間違った書き込みパターンで数分で破壊することができます。

それは実際、一部の組み込みプロジェクトにとって問題です。どのセクターがいつでも平準化される可能性があるかを(明らかに)知る方法はまったくないので、間違った時間に電源を入れ直すと、どこを書いているかに関係なく、カード上のどこのデータも破壊される可能性があります。(私が知っている方法を尋ねないでください:))

SDカードは、クリーンなシステムシャットダウン(または少なくとも書き込みの完了を許可)を保証するシステムで使用する必要があります。そうしないと、データが(最終的に)失われます。

編集

問題は、ウェアレベリングプロセスが完全に隠されていることです。ディスク上の任意のセクターはいつでも移動でき(書き込まれたページと交換)、そのプロセスの途中で電源が落ちた場合、ランダムセクターが破損する可能性があります。

この動きを実装する合理的に安全な方法がありますが、仕様にはないので、カードがそれを行うとは信じられません。1枚のカードをテストし、動作させると、製造業者は部品番号を変更せずに実装を変更できます。

テストから、私のSDカードのコントローラーはこれを安全な方法でまったく行いません。

停電耐性のために特別に宣伝されている「高信頼性」SDカードを調べるかもしれませんが、メーカーにそれを正しく行うことを信頼する必要があります。ページの消去を直接制御したい。私はまだこれを理解しようとしています。


4
投稿された回答をご覧ください。ウェアレベリングアルゴリズムはメーカー次第であるため、それらは嗅ぎ分けられない場合があります。適切なウェアレベリングアルゴリズムは、最初にデータを移動し、次にそのデータに適切なマークを付けてから、元のデータをガベージコレクションします。これは一部のカードでは問題になる場合がありますが、他のカードでは問題ではない場合があります。SDは、一番下まで行けば非常にいデザインです。
クリスバーンセン

2
ええ、それは私に関する限り、それはくだらない標準です。このようなユビキタスなメモリストレージ標準が本質的に信頼性に欠けることは非常に迷惑です。
ダロン

2
@jpc:それでは、ブログにエントリーするかもしれません。あまり考慮されていない印象を受けています。手遅れになるまで、私は自分でその意味を理解しませんでした。私はこれと戦い、SDカードのメーカーなどと話をしました。書き込み時間を最小限に抑える以外に解決策はありません。現在、NANDフラッシュに書き込み、できるだけ早く1日に1回SDにコピーします。ランダムな電源障害に対して「耐性」があるように設計されたSDカードがありますが、これらも完全に信頼できるものかどうかはわかりません。
ダロン

2
@fred basset奇妙なことに、この答えが書かれてから、産業用カードの仕様は変わったようです。私書き込みに関する保証付きのmicroSDカードを見ていました(ジャーナリングされていると思います)...今、彼らはそのような主張をしていません。メーカーと話をすると、彼らは今スーパーキャップを使用しています...しかし、コンパクトフラッシュカードだけがそれらのためのスペースを持っています。安全に処理すると、パフォーマンスが大幅に低下します。彼らは、書き込みを完了するのに十分なバックアップ機能を何らかの形で提供するだけだと言っています。近代的なARM SBCがいかに複雑かを考えると、ベンダーのリファレンスデザインがそれを実行しないと実行するのは非常に困難です。私が知っていることはありません。
ダロン

2
@freq basset UBIとUBIFSを使用しています。それはうまくいくようです...私は何年も問題なく多くのシステムを実行してきました。
ダロン

12

従来のNANDフラッシュデバイスは個々の512バイトセクターの消去をサポートできず、従来のNANDフラッシュデバイスもサイズが大きくないため、従来のNANDフラッシュメモリを使用したSDカードは、何らかのセクター仮想化を使用する必要がありますセクターの書き込みを試みるたびにデバイスがそのセクターの消去ブロック内のすべてのセクターを(RAMにでも)コピーし、ブロックを消去して書き込む必要がある場合、わずかに許容できる程度のパフォーマンスを得ることができますすべてのセクターが戻ります。ほとんどのセクター仮想化手法は、本質的にある程度のウェアレベリングです。品質の高いデバイスと模造品の違いの最大の問題は、デバイスがブロック間のレベリングを積極的に均等化しようとする程度であり、疑似ランダムブロックの割り当てと、均一に近い結果が得られることを期待して単純に使用します。実際には、ほとんどの場合、ランダム/最適な割り当てでも十分であると予想されます。


一部のメーカーが実装している「ウェアレベリング」は、NANDインターフェイス自体によって引き起こされ、仮想化をブロックするセクター/セクターをブロックしている可能性があります。
クリスバーンセン

1
@KrisBahnsen:ウェアレベリングを主張するメーカーは、さまざまなブロックの相対的な摩耗とその中のデータの年齢を積極的に監視し、長命のデータを持つブロックが平均よりはるかに少ないブロックにあることがわかった場合、それらのブロックのデータは、摩耗の多いブロックに移動されます(そのため、これらのブロックの将来の摩耗を最小限に抑えることができます)。これにより、95%が変更されることのないデータで満たされているデバイスの耐用年数が10倍向上し、残りの5%のスペースが頻繁に撹拌されます。
-supercat

彼らがそれを宣伝しているなら、私は彼らが何らかの本当のウェアレベリングをするだろうと思います。私は謝罪する主題全体について少し否定的です。私はSDの癖に数回噛まれました。
クリスバーンセン

1
@KrisBahnsen:私が考える最大の問題は、連続した番号の512バイトセクターの線形の束を想定する仮想化モデルです。DOSとのインターフェースは便利だったかもしれませんが、実際に存在するハードウェアやホストソフトウェアが本当に必要とするものにはうまく適合しません。ブロック番号を64ビットに開き、それらを任意に非連続にできるようにしてから、ファイルが常に論理的に連続したブロックに格納されるようにします。ファイルを削除するには、そのブロック範囲を削除します。
-supercat

2
これがおそらく最良の答えです。これが彼ら全員のやり方だと思う。考えてみると、摩耗履歴自体同じカードのどこかに保存する必要があり、その部分が最初に失敗するため、真に洗練されたアルゴリズムで決定論的な摩耗レベリングを行う方法はありません。ランダムなレベリングが唯一の実用的な可能性です。SSDのほうが賢いとは思いません。彼らは単により多くの交換バッファを持っているかもしれませんが、非常に粗い(したがって、頻繁に更新されない)摩耗情報を保存する可能性は確かにあります。
ニムロッド

7

Sandiskには、カード内のウェアレベリングロジックを説明するホワイトペーパーがあり、さらに多くのシナリオでのカードの寿命の推定値が示されています。エグゼクティブサマリー:ノンストップでカードを叩かない限り、数十年続きます。


リンクが死んでいて、コンテンツが削除されたようです-おそらく、あまりにも多くを明らかにしたからでしょうか?
クアド14

6
@Cuadueリンクにアクセスできます。壊れた場合に備えて、ページは現在web.archive.org/web/20150326122100/http://ugweb.cs.ualberta.ca/に

2

興味深いことに、バッテリーが少ない場合や電話がクラッシュ/シャットダウンした場合など、多くのデバイスが特に高密度のSDカードやmicroSDカードを破損します。一部のカード(咳Ad t /咳)でよく知られているように、特定の外部リーダーで読み取り不能なカードの現象が発生するが、一部のマイクロバリエーションでは正常に機能するため、問題は電圧供給の不適切な調整であると思われますコンピュータショップ。

私はこの障害で現在カードを回復していますが、奇妙なことにデータのほとんどは回復可能ですが、一部のセクターはこの試行ごとに変化します。ウェアレベリング自体に問題があるのでしょうか?(はい、複数のリーダーを試しましたが、同じ障害です!)


0

また、いくつかの成功した「nuking」ゾンビカード、つまり、フォーマットを完了しないか、読み取り専用のカードがありました。わずかな割合でのみ機能しますが、ほとんどの「公式」ガイドラインよりもはるかに敏感です。

このように処理されたテストカードは、故障するまで4か月続きました。ノイズのある電圧の供給に使用されたデバイスがなかった場合、寿命は長くなる可能性があります。


1
「nuking」とは、電子レンジに入れることを意味しますか?どのワット数でどれくらいの時間ですか?
0x6d64

ええと、いいえ:-)また、グロー放電(RF)が同様の効果をもたらし、私が使用した方法よりもはるかに危険性が低いのはなぜですか?片側に金属製のケーシングがないため、uSDカードの方がずっと敏感です。
Conundrum5642Z

法律上の理由から、nukingが「ガジェット」5642 + HVPSの使用を指すことを確認または否定することはできません。しかし、繰り返し作業をした、と私はそれが持っていたなどとして公表手法は現在知られている
難問
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.