So wie ich es verstehe, wird Wear-Leveling auf USB-Sticks / Flash-Laufwerken :
- helfen, die letzten länger zu machen. (Reduzieren Sie die "Abnutzung", dass eine physikalische Flash-Zelle nur bis zum XX-fachen beschrieben werden kann)
- kann nur wirklich funktionieren, wenn nicht verwendete Flash-Speicherzellen zum Umschalten vorhanden sind. (Je mehr der USB-Stick gefüllt ist, desto weniger alternative Zellen zum Ausgleichen des Verschleißes gibt es)
Im schlimmsten Fall habe ich zu einem bestimmten Zeitpunkt den gesamten Speicher des USB-Sticks verbraucht. Dann ist es weniger wahrscheinlich, dass ein gewisser Verschleiß noch auftreten kann. Kann / (wie würde) ich diesen Zustand wiederherstellen?
Ich meine in Bezug auf USB-Sticks, was leer ist
0000 0000 0000 0000
(Null fill) scheint mir genauso gültig ein Daten als zu sein
1111 1111 1111 1111
oder 1010 1110 0011 1111
oder einem anderen Bit-Muster.
Die Firmware des USB-Sticks muss irgendwie wissen, was als "unbenutzte" Flash-Zelle gilt, damit er sie wieder zum Abnutzungsausgleich verwenden kann. Aber nachdem ich irgendwann einmal den gesamten USB-Stick gefüllt habe, habe ich Probleme zu sehen, wie die Firmware feststellen kann, welche Daten "überschrieben" werden können, da sie keine Daten enthalten.
Meine Frage lautet also: Kann das Auffüllen mit Nullen eine Möglichkeit sein, den Abnutzungsgrad eines USB-Sticks zurückzusetzen
Obwohl ich befürchte, dass dies oft von der Implementierung abhängt ("Firmware" und "Hersteller"), denke ich immer noch, dass es eine Logik für diesen Ansatz geben könnte, anzunehmen, dass "Zero-Filling" das Zurücksetzen des USB-Sticks auf bestimmte - Besser gestaltete USB-Sticks .
Die Logik, die ich mir vorstelle, wäre, dass die Abnutzungskorrektur der Firmware erkennt, dass ein ganzer Block (dh 512 Byte oder 2 KB) nur auf Null gesetzt wird.
Vorher 1101 1011 1000 0010 ... 0001 0011
blockieren : Nachher blockieren:0000 0000 0000 0000 ... 0000 0000
Wenn ich aus diesem Block lese, möchte ich natürlich diese Informationen erhalten:
Block danach: 0000 0000 0000 0000 ... 0000 0000
Diese Informationen können jedoch im laufenden Betrieb generiert werden, indem der Block XYZ = leer in einer bestimmten Flash-Zelle gespeichert wird, die nur der Firmware zur Verfügung steht.
Wenn dies der Fall wäre, würde der Pool beim "Zurücksetzen" (durch Null-Füllen) für andere Zwecke aktiviert, da die Informationen im BLOCK XYZ = leeren Firmware-Speicherbereich des Sticks gespeichert sind.
Ich habe gelesen, dass es einige USB-Sticks geben sollte, die eine solche Firmware haben und daher zurückgesetzt werden können? Kann das wahr sein? Ich möchte durch die Frage eine "Tendenz" kennenlernen, die vielleicht mit Informationen von namhaften Herstellern untermauert ist. Möglicherweise gibt es sogar eine Liste mit USB-Sticks, die auf diese Weise zurückgesetzt werden können. Damit könnte die Antwort einen Link zu einer solchen Liste enthalten.
Ich gehe auch davon aus, dass es nicht "eine neue Firmware" gibt, die von jedem USB-Stick hergestellt wird, und möglicherweise gibt es eine bekannte (häufig verwendete) USB-Firmware, die einen solchen Abnutzungsgrad ausgleicht. Dann könnte die Frage bezüglich dieser Firmware beantwortet werden.
Bestenfalls könnte eine kluge Person einen Weg finden, um die Frage in dieser Form zu beantworten. Sie enthält einige Anweisungen, die es uns Benutzern (von Super-Usern) ermöglichten, "herauszufinden", ob dieser Verschleißausgleich aktiviert ist oder nicht.
Hintergrundinformationen zu meiner Frage
USB-Sticks / Flash-Laufwerke sind sicher eine nette Sache. Das Problem ist aber, dass die Art und Weise, wie sie die Daten speichern, abnutzt, was bedeutet, dass erst nach XX Schreibvorgängen in eine Datenzelle! BINGO! dein stick ist tot!
Eine Möglichkeit, das Problem zu lösen ( Flash-Speicherzellen können nur sehr selten beschrieben werden), ist das "Wear Leveling". Wobei es wichtig ist, dass - falls möglich - die Daten nicht immer auf dieselben Flash-Speicherzellen geschrieben werden .
Anstatt die Daten immer in dieselben physischen Zellen zu schreiben, werden die Daten (wenn sie geändert werden) in einige andere neue physische Zellen geschrieben. Dies reduziert den "Stress", da dies im besten Fall so weitergeht.
Zum besseren Verständnis einiger grundlegender Aspekte des Abnutzungsniveaus habe ich dieses Konzept unten aufgenommen. Es zeigt, wie die Informationen von "Hallo", "Gruß", "Hallo" und "Hallo" anschließend in einer logischen Datenzelle mit dem Namen " Daten " gespeichert werden , die tatsächlich geschrieben wird jedes Mal auf einen anderen physischen Flash-Speicher (daher ein kleines "Konzept" des Wear Leveling).
Zustand 1: [CELL1: leer] [CELL2: leer] [CELL3: leer] => schreibe Daten "Hallo" Zustand 2: [CELL1: Hallo] [CELL2: leer] [CELL3: leer] data = CELL1 => Daten auf "salut" aktualisieren Zustand 3: [CELL1: Hallo] [CELL2: Gruß] [CELL3: leer] data = CELL2 => Daten auf "hola" aktualisieren Zustand 4: [CELL1: hallo] [CELL2: salut] [CELL3: hola] data = CELL3 => aktualisiere Daten auf "hi" state5 [CELL1: hi] [CELL2: salut] [CELL3: hola] data = CELL1
Beobachten Sie, wie nach dem Schreiben von 4-fachen Daten jede Zelle im Durchschnitt nur 1,33-mal geschrieben wurde. Beachten Sie auch, dass die Information, welche Zelle die "logischen Daten " enthält , ebenfalls gespeichert und aktualisiert werden soll (was erfordert, dass die Firmware diese Abrechnung vornimmt - unter Verwendung von etwas reserviertem Speicher auch dafür).