Was ist Bad Block Management?
Bad Block Management erkennt und markiert fehlerhafte Blöcke, nutzt die reservierte zusätzliche Kapazität, um die unbrauchbaren Blöcke zu ersetzen, und verhindert, dass Daten in fehlerhafte Blöcke geschrieben werden, wodurch die Zuverlässigkeit des Produkts erhöht wird.
Zwei Arten von Bad Blocks
Im NAND Flashspeicher gibt es zwei Arten fehlerhafter Blöcke: Frühe fehlerhafte Blöcke und spätere fehlerhafte Blöcke. Frühe fehlerhafte Blöcke sind solche, die während des Herstellungsprozesses erzeugt werden und im Allgemeinen etwa 1% der Kapazität ausmachen. Diese schlechten Blöcke sind ein unvermeidbares Ergebnis während des Produktionsprozesses. Auf der anderen Seite werden späte fehlerhafte Blöcke während der Lebensdauer eines Flash-Speichers im Laufe der Zeit erzeugt, da während des normalen Betriebs wiederholt Programm- und Löschzyklen stattfinden. Ungefähr 7% der Kapazität werden als “Ersatzblöcke” reserviert, die später fehlerhafte Blöcke ersetzen.
Wie funktioniert Bad Block Management?
Bei frühen fehlerhaften Blöcken wird bei der ersten Verwendung eines NAND Flash-Geräts eine Bad Block Tabelle erstellt, wobei ein eingebautes Verwaltungsprogramm im Controller jeden Block überprüft. Wenn dann ein fehlerhafter Block gefunden wird, markiert das Programm diesen und notiert den besagten Block in der Blocktabelle, um zu verhindern, dass Daten erneut darauf geschrieben werden.
Von späten fehlerhaften Blöcken wird gesprochen, wenn das NAND-Flash Gerät bereits in Verwendung ist und während der Nutzung Fehler vom Controller erkannt werden. Fehlerhafte Blöcke werden dann vom Controller der Blocktabelle hinzugefügt. Der Controller initiiert zudem, dass alle Daten, die ursprünglich auf den fehlerhaften Block geschrieben wurden, in einen gültigen Block übertragen werden, wodurch ein Datenverlust verhindert wird. Siehe Abbildung unten.
Wie in der Abbildung gezeigt, führt der Controller zuerst ECC (Error Correction Code) -Algorithmen für Blöcke durch, in die nicht geschrieben werden kann. Wo dieser Aufwand fehlschlägt, werden die gültigen Daten dann in einen Ersatzblock übertragen, der für genau diesen Zweck vorreserviert wurde. Nachdem die Daten aus dem fehlerhaften Block entfernt wurden, wird dieser als solcher in der Bad Block Tabelle markiert und gekennzeichnet, um zu verhindern, dass Daten erneut in diesen Block geschrieben werden.
Zusammenfassung
Da sich gute Blöcke mit wiederholten Programmier-/Löschzyklen allmählich abnutzen, ist es notwendig, ständig nach unbrauchbaren Blöcken zu suchen und sie durch Funktionierende zu ersetzen. Moderne Flash-Geräte, die mit Bad Block Management ausgestattet sind, haben deshalb eine längere Lebensdauer, höhere Zuverlässigkeit und eine niedrigere Lese-/Schreibfehlerrate.