Trifft es zu, dass eine SD / MMC-Karte mit ihrem eigenen Controller einen Abgleich durchführt?

51

Ich kann keine verlässlichen Informationen dazu finden. Ich habe nicht die vollständige Spezifikation der SD / MMC-Kartenhardware.

Ist es wahr? Meine High-Level-Anwendung muss sich nicht mit dem Abnutzungsgrad befassen, wenn ich mit diesen Karten arbeite?

BEARBEITEN

Könnte jemand bestätigen, dass der Verschleiß durch die SD-Spezifikation garantiert wird? Ich möchte sicher sein, da es so aussieht, als ob die meisten Hersteller es tun, aber es wird von der Spezifikation nicht benötigt.

ivarec
quelle
5
Nicht alle Hersteller von Flash-Medien investieren in Algorithmen zur Abnutzungskorrektur. Bei SSDs, bei denen die Hersteller aufgrund von Algorithmen marktführend sind, ist der Verschleißausgleich häufiger.
Chetan Bhargava

Antworten:

43

Ich arbeite für ein Unternehmen, das Mitglied der SD Association war. Wir kennen die Spezifikation 2.0 (SDHC). Die SD-Kartenspezifikation hat KEINEN Eintrag für den Verschleißausgleich. Das ist völlig abhängig vom SD-Hersteller, um das zu handhaben, wenn sie dies wünschen. Wir haben gesehen, dass einige wahrscheinlich tun, während andere sehr viel nicht tun (Vorsicht vor den supergünstigen Nachahmungs-SD-Karten). SDXC hat dies möglicherweise geändert, um den Verschleiß auszugleichen, aber ich bin mir nicht sicher. Leider ist die einzige Möglichkeit, dies wirklich zu zeigen, die offizielle Spezifikation in den Händen zu halten. Sie können es am ehesten online finden, aber der SD-Verband möchte wirklich, dass Sie dafür bezahlen.

Als Randnotiz: Wenn Sie eine 2-GB-Karte nehmen und sie von Anfang bis Ende immer wieder beschreiben, beträgt der Durchschnitt etwa 10 TB, bevor die Karte tot und nicht mehr beschreibbar ist. Außerdem werden Sie von SD-Karten nicht informiert, wenn Daten fehlerhaft sind, dh es wird kein E / A-Fehler zurückgegeben, wie dies bei einer PC-Festplatte der Fall ist. Dies ist möglicherweise kein Problem für eingebettete Designs, da 10 TB eine Menge Daten sind, es kann jedoch für jemanden ein Faktor sein.

Kris Bahnsen
quelle
2
Ich gehe davon aus, dass Unternehmen, auch wenn dies nicht in der Spezifikation enthalten ist, dies dennoch tun möchten, um ihren guten Ruf zu bewahren. Supergünstige Nachahmungen interessieren sich zwar nicht für den Ruf, verkaufen sich aber an Leute, die alles billig angehen wollen. Hört sich das vernünftig an?
Kellenjb
1
@Kellenjb Es ist eine sehr vernünftige Annahme, und ich persönlich würde Ihnen zustimmen. Da es jedoch nicht in der Spezifikation enthalten ist und es sehr unwahrscheinlich ist, dass auf SD-Controller-Designs eines bestimmten Herstellers zugegriffen werden kann, kann es nicht wirklich bewiesen werden. Wir haben im Laufe der Jahre viele Tests durchgeführt. Einige große Marken schneiden viel besser ab als andere. Es kann sich um Unterschiede bei internen Algorithmen oder um deren völliges Fehlen handeln.
Kris Bahnsen
4
Billige Fälschungen sind egal, auch wenn sie in der Spezifikation enthalten sind. Es ist nicht sofort sichtbar für den Kunden, es könnte fehlen. Wir sprechen von Leuten, die Blei-Stecker als ICs verkaufen. Ich habe noch nie von einer Visitenkarte gehört, die kein Leveling hat, aber ich nehme an, es ist möglich.
Darron
@KrisBahnsen können Sie erläutern, was die SD-Karte tatsächlich zurückgibt, wenn ein nicht behebbarer Fehler vorliegt? Das interessiert mich sehr. Gibt es überhaupt keine Möglichkeit, diesen Zustand zu erkennen?
Fred Basset
3
@fredbasset, Weg zum Zombie den Thread;) Es ist schon eine Weile her, seit ich eine SD-Karte funktioniert hat. IIRC-SD-Karten selbst geben jedoch physisch das zurück, worauf sie Lust haben. Einige der neueren, kombiniert mit anständigen Treibern, können möglicherweise einen E / A-Fehler erkennen. Allerdings können von den älteren SD-Karten nur fehlerhafte Daten, die in NAND gespeichert wurden, zurückgegeben und als gut bezeichnet werden. Wenn ein Schreibvorgang jedoch nicht abgeschlossen werden kann, wird ein E / A-Fehler zurückgegeben.
Kris Bahnsen
23

Das ist wahr! MicroSD-Karten enthalten einen NAND-Flash-Chip, der mit einem (ARM-) Mikrocontroller verbunden ist, der in schwarzem Kunststoff eingekapselt ist. http://www.bunniestudios.com/blog/?p=898 erklärt.

Am Ende des Follow-up-Beitrags http://www.bunniestudios.com/blog/?p=918 setzt Bunnie voraus, dass die Integration des Controllers weniger kostet als das Testen des Flashs im Voraus.

Zitat aus dem SD-Karten-Produkthandbuch von SanDisk: "1.9 Wear Leveling. Wear Leveling ist ein wesentlicher Bestandteil der Erase Pooling-Funktionalität der SD-Karte unter Verwendung von NAND-Speicher." Sie können das Ganze im Datenblatt für eine SanDisk-Markenkarte nachlesen .

joeforker
quelle
1
Bunnie Huang ist definitiv glaubwürdig genug für mich!
Vicatcu
Das ist gut zu wissen, aber ich werde auf jemanden warten, der diese Frage anhand der formalen Spezifikation dieser Technologie klären kann.
Ivarec
2
Digikey zeigte mir diese nutzlose SanDisk-Broschüre, als ich versuchte, ein Datenblatt nachzuschlagen . Die Datenblätter von Wintec und Swissbit waren besser, und beide erwähnten einen Verschleißausgleich. Können Sie einen Link zu diesem von Digikey gehosteten Datenblatt erstellen?
Kevin Vermeer
Die sind viel besser als die alte SanDisk.
Joeforker
Die Wintec war nicht so toll, aber die neue SanDisk ist die beste! Danke für die Bearbeitung.
Kevin Vermeer
19

Ja, SD / MMC-Karten verfügen über Controller, die einen Verschleißausgleich durchführen. Andernfalls könnten Sie in wenigen Minuten eine mit den falschen Schreibmustern zerstören.

Das ist eigentlich ein Problem für einige eingebettete Projekte. Es gibt (anscheinend) keine Möglichkeit zu wissen, welche Sektoren zu irgendeinem Zeitpunkt abgenutzt sein könnten, sodass ein Aus- und Wiedereinschalten zum falschen Zeitpunkt Daten an einer beliebigen Stelle auf der Karte zerstören kann, unabhängig davon, an welcher Stelle Sie DENKEN, dass Sie schreiben. (frag nicht, woher ich das weiß :))

SD-Karten müssen mit einem System verwendet werden, das ein sauberes Herunterfahren des Systems garantiert (oder zumindest das Abschließen von Schreibvorgängen zulässt). Andernfalls kommt es (möglicherweise) zu Datenverlusten.

BEARBEITEN

Das Problem ist, dass der Prozess des Verschleißausgleichs vollständig verborgen ist. JEDER Sektor auf der Festplatte kann jederzeit verschoben werden (mit der geschriebenen Seite ausgetauscht werden), und wenn die Stromversorgung während dieses Vorgangs ausfällt, kann dieser zufällige Sektor beschädigt werden.

Es gibt zwar einigermaßen sichere Wege, um diesen Schritt auszuführen, aber er ist in keiner Spezifikation enthalten, sodass Sie nicht darauf vertrauen können, dass die Karte dies tut. Sie könnten eine Karte testen, damit sie funktioniert, dann könnte der Hersteller die Implementierung ändern, ohne die Teilenummer zu ändern, und Sie sind fertig.

Nach dem Testen führt der Controller meiner SD-Karten dies NICHT auf sichere Weise durch.

Ich könnte eine SD-Karte mit "hoher Zuverlässigkeit" untersuchen, die speziell für Stromausfalltoleranzen angekündigt wurde. Dann muss man dem Hersteller vertrauen, dass er das richtig macht, und das tue ich nicht. Ich möchte wirklich die direkte Kontrolle über das Löschen von Seiten. Ich versuche immer noch, das herauszufinden.

Darron
quelle
4
Siehe meine gepostete Antwort. Da die Algorithmen zur Verschleißbereinigung dem Hersteller überlassen sind, sind sie möglicherweise nicht in der Lage zu schnupfen. Ein guter Abnutzungsausgleichsalgorithmus verschiebt zuerst die Daten, markiert dann diese Daten als gut und sammelt dann die ursprünglichen Daten durch Müll. Dies kann bei einigen Karten ein Problem sein, bei anderen möglicherweise nicht. SD ist ein sehr hässliches Design, wenn man dem auf den Grund geht.
Kris Bahnsen
2
Ja, es ist ein Miststandard, soweit es mich betrifft. Es ist sehr ärgerlich, dass solch ein allgegenwärtiger Speicherstandard von Natur aus unzuverlässig wäre.
Darron
2
@jpc: Vielleicht mache ich dann einen Blogeintrag. Ich habe den Eindruck, dass es nicht oft in Betracht gezogen wird. Ich habe die Konsequenzen nicht selbst erkannt, bis es zu spät war. Ich habe damit gekämpft, mit meinem SD-Kartenhersteller gesprochen usw. Keine andere Lösung, als die Schreibzeit zu minimieren. Ich schreibe jetzt auf NAND-Flash und kopiere einmal am Tag so schnell ich kann auf SD. Es gibt SD-Karten, die gegen zufällige Stromausfälle "resistent" sind, aber ich bin mir nicht sicher, ob auch diese absolut vertrauenswürdig sind.
Darron
2
@fred basset Seltsamerweise scheinen sich die technischen Daten auf Industriekarten geändert zu haben, seitdem diese Antwort geschrieben wurde. Ich wurde microSD - Karten mit Garantien beim Schreiben (Journaled, glaube ich) zu sehen ... nun, sie machen keinen solchen Anspruch. Im Gespräch mit einem Hersteller verwenden sie derzeit Supercaps ... aber nur die CompactFlash-Karten bieten Platz für sie. Sichere Handlungen beeinträchtigen die Leistung zu sehr. Sie sagen, dass sie irgendwie genug Backup-Energie bereitstellen sollen, um einen Schreibvorgang abzuschließen. Angesichts der Komplexität moderner ARM-SBCs ist dies wirklich schwierig, wenn das Referenzdesign des Anbieters dies nicht tut. Keine, die ich kenne, tun.
Darron
2
@freq basset Ich benutze UBI & UBIFS. Es scheint gut zu funktionieren ... Ich habe seit Jahren viele Systeme ohne Probleme laufen.
Darron
12

Jede Art von SD-Karte, die einen herkömmlichen NAND-Flash-Speicher verwendet, muss eine Art von Sektorvirtualisierung verwenden, da kein herkömmliches NAND-Flash-Gerät das Löschen einzelner 512-Byte-Sektoren und kein herkömmliches NAND-Flash-Gerät von erheblicher Größe unterstützen kann Es wäre möglich, eine Leistung zu erzielen, die in einer Größenordnung liegt, die sogar geringfügig akzeptabel ist, wenn bei jedem Versuch, einen Sektor zu schreiben, das Gerät alle Sektoren in dem Löschblock dieses Sektors (sogar in den RAM) kopieren und dann den Block löschen und schreiben müsste Alle Sektoren zurück. Die meisten Sektorvirtualisierungstechniken sind von Natur aus etwas abgenutzt. Ich würde erwarten, dass das größte Problem der Varianz zwischen Qualitätsgeräten und Abschlägen das Ausmaß ist, in dem ein Gerät aktiv versucht, den Ausgleich zwischen Blöcken zu erreichen. im Gegensatz zur einfachen Verwendung einer pseudozufälligen Blockzuweisung und der Hoffnung, dass sich annehmbar annähernd gleichmäßige Ergebnisse ergeben. In der Praxis würde ich davon ausgehen, dass in den meisten Fällen auch eine zufällige / auf das Beste gehoffte Zuordnung ausreicht.

Superkatze
quelle
Es ist sehr gut möglich, dass der "Wear Leveling", den einige Hersteller implementieren, durch die NAND-Schnittstelle selbst verursacht wird und das Blockieren von Virtualisierungen von Sektor zu Sektor.
Kris Bahnsen
1
@KrisBahnsen: Ich würde erwarten, dass Hersteller, die einen Verschleißausgleich fordern, den relativen Verschleiß verschiedener Blöcke und das Alter der darin enthaltenen Daten aktiv überwachen. Wenn sich herausstellt, dass Blöcke mit langlebigen Daten in Blöcken mit weitaus geringerem Verschleiß als der Durchschnitt vorliegen, wird der Daten von diesen Blöcken werden in Blöcke verschoben, die mehr Verschleiß aufwiesen (um höchstwahrscheinlich den zukünftigen Verschleiß dieser Blöcke zu minimieren). Dies könnte die Nutzungsdauer eines Geräts, das zu 95% mit Daten gefüllt ist, die sich nie ändern, um den Faktor 10 verbessern, während die verbleibenden 5% des Speicherplatzes häufig ausgelastet sind.
Supercat
Ich bin einverstanden, wenn sie Werbung machen, stellen sie sich vor, sie würden eine Art echten Abnutzungsausgleich machen. Ich bin etwas negativ in Bezug auf das ganze Thema, für das ich mich entschuldige; Ich bin ein paar Mal von den Macken von SD gebissen worden.
Kris Bahnsen
1
@KrisBahnsen: Das größte Problem ist meines Erachtens ein Virtualisierungsmodell, das eine lineare Reihe von 512-Byte-Sektoren mit fortlaufender Nummerierung voraussetzt. Es mag praktisch gewesen sein, sich mit DOS zu verbinden, aber es passt nicht wirklich gut zu der vorhandenen Hardware und auch nicht zu dem, was die Host-Software wirklich will. Öffnen Sie Blocknummern mit einer Länge von 64 Bit und lassen Sie sie willkürlich nicht fortlaufend sein. Ordnen Sie dann zu, dass Dateien immer in logisch fortlaufenden Blöcken gespeichert werden. Um eine Datei zu löschen, löschen Sie den Blockbereich.
Supercat
2
Dies ist möglicherweise die beste Antwort. Ich vermute, so machen es alle. Wenn Sie darüber nachdenken, gibt es keine Möglichkeit, eine deterministische Abnutzungskorrektur mit einem wirklich ausgefeilten Algorithmus durchzuführen, da der Abnutzungsverlauf selbst irgendwo auf derselben Karte gespeichert werden müsste und dieser Teil zuerst ausfallen würde. Randomisierte Nivellierung ist die einzige praktische Möglichkeit. Ich bin nicht davon überzeugt, dass SSDs schlauer sind. Sie haben möglicherweise einfach mehr Ersatzpuffer, obwohl es durchaus möglich ist, dass sie sehr grobe (und daher selten aktualisierte) Verschleißinformationen speichern.
Nimrod
7

Sandisk hat ein Whitepaper , in dem die Logik der Abnutzungskorrektur auf den Karten erläutert wird. Anschließend werden Schätzungen zur Lebensdauer der Karte in einer Reihe von Szenarien gegeben. Zusammenfassung: Wenn Sie die Karte nicht ohne Unterbrechung einschlagen, wird sie Jahrzehnte dauern.

Michael Slade
quelle
Der Link ist tot und der Inhalt scheint gelöscht worden zu sein - weil er vielleicht zu viel enthüllt hat?
Cuadue
6
@ Cuadue Der Link ist zugänglich. Für den Fall, dass es kaputt geht, wird die Seite jetzt unter web.archive.org/web/20150326122100/http://ugweb.cs.ualberta.ca/…
Lekensteyn 26.03.15
2

Es ist interessant zu bemerken, dass trotz alledem viele Geräte SD - und microSD - Karten beschädigen, insbesondere solche mit hoher Dichte, wenn der Akku schwach ist oder das Telefon abstürzt / herunterfährt / etc. Ich vermute , dass das Problem unzureichende Regulierung der Spannungsversorgung ist , da dies auch auf einigen Karten bekannt ist (Husten Ad t / Husten) in dem Phänomen einer nicht lesbaren Karte auf bestimmten externen Lesern zu führen , sondern funktioniert auf der Mikro Vielfalt von einigen geliefert Computergeschäfte.

Ich bin gerade dabei, eine Karte mit diesem Fehler wiederherzustellen, merkwürdigerweise sind die meisten Daten wiederherstellbar, aber einige Sektoren ändern sich nicht bei jedem Versuch. Könnte der Abnutzungsgrad selbst ein Fehler sein? (ja mehrere leser ausprobiert, gleicher fehler!)

Rätsel
quelle
0

Hatte auch einige Erfolge beim "Nuking" von Zombie-Karten, dh solchen, die ein Format nicht vervollständigen oder schreibgeschützt sind. Funktioniert nur mit einem kleinen Prozentsatz, aber sie sind in Bezug auf den Effekt viel empfindlicher als die meisten "offiziellen" Richtlinien.

Eine so behandelte Testkarte hat volle vier Monate gedauert, bevor sie erneut versagt hat. Wenn sie nicht für das Gerät verwendet worden wäre, das für die Versorgung mit verrauschten Spannungen verwendet wurde, wäre die Lebensdauer möglicherweise länger gewesen.

Conundrum5642Z
quelle
1
Mit "Nuking" meinen Sie, es in eine Mikrowelle zu stellen? Bei welcher Leistung und wie lange?
0x6d64
Äh, nein :-) Warum auch, wenn eine Glimmentladung (RF) einen ähnlichen Effekt hat und viel weniger gefährlich ist als die von mir verwendete Methode? Es stellt sich heraus, dass uSD-Karten aufgrund des Fehlens eines Metallgehäuses auf einer Seite viel empfindlicher sind.
Conundrum5642Z
Ich kann nicht bestätigen oder leugnen, dass sich Nuking aus rechtlichen Gründen auf die Verwendung eines "Gadgets" 5642 + HVPS bezieht. Es hat jedoch wiederholt funktioniert, und die Technik ist jetzt bekannt, da ich sie auf HaD usw. veröffentlicht habe.
Rätsel