NAND-Flash ist ein nichtflüchtiger Speicher, der aus Millionen von Floating-Gate-Transistoren besteht, die Elektronen innerhalb des Gates einfangen. Diese Floating-Gate-Transistoren kann man sich als Speicherzellen vorstellen. Wenn Millionen von Speicherzellen verbunden werden, bilden sie ein Array. Jedes Array besteht aus Blöcken und jeder Block enthält eine Anzahl von Seiten.
Abb. 1 zeigt eine kurze schematische Darstellung eines NAND-Arrays.
Jede Wortzeile (WL) bildet eine Seite, die die Grundeinheit für Lese-/Programmieroperationen in NAND darstellt. Allerdings ist die Anzahl der Seiten für jede WL bei NAND vom Typ Single-Level Cell (SLC), Multi-Level Cell (MLC) und Triple-Level Cell (TLC) unterschiedlich.
Abb. 2 zeigt, dass zwei Seiten (untere und obere Seite) denselben WL in MLC NAND teilen und drei Seiten (untere, mittlere und obere Seite) denselben WL in TLC NAND teilen. Seiten, die denselben WL haben, werden als gepaarte Seiten bezeichnet.
Aufgrund der physikalischen Eigenschaften von NAND-Flash sind bei NAND-Programmiervorgängen die folgenden zwei goldenen Regeln zu beachten:
- Programmiervorgänge müssen der angegebenen Reihenfolge folgen, die auf den NAND-Flash-Eigenschaften basiert.
- Wenn der Programmiervorgang auf Word-Line (WL) nicht abgeschlossen ist, kann die Datenintegrität dieser WL nicht garantiert werden.
Bei MLC- oder TLC-NAND-Flash ist die Datenprogrammierung auf einer einzelnen Seite kein einstufiger Vorgang. MLC/TLC-Seiten müssen zwei- oder dreimal programmiert werden, um die Anforderungen der Datenprogrammierung zu erfüllen. Dieses Phänomen ist eine physikalische Eigenschaft von Flash-Speichern.
Integritätsbedenken bei Benutzerdaten in gepaarten Seiten
Auf dem aktuellen Consumer-Solid-State-Drive-Markt (SSD) sind MLC- und TLC-Flash die beliebtesten Speichertypen. MLC- und TLC-Flash können eine viel größere Speicherkapazität zu geringeren Kosten bieten, insbesondere TLC. Allerdings ist der Programmiervorgang bei MLC- und TLC-Flash komplizierter als bei SLC. Wenn wir TLC-Flash als Beispiel nehmen, müssen Sie die gepaarten Seiten dreimal auf demselben WL programmieren, um den gesamten Vorgang abzuschließen.
Abb. 3 zeigt den vollständigen Programmablauf von TLC-Flash. Erst wenn der dritte Programmiervorgang auf WL_x abgeschlossen ist, werden die auf WL_x gespeicherten Daten zu zuverlässigen Daten.
Leider erhöht diese Komplexität der Programmiervorgänge das Risiko einer Datenbeschädigung. Da die Integrität der Daten erst nach Abschluss der gesamten Programmiersequenz gewährleistet ist (dh erstes Programm + zweites Programm + drittes Programm), führen alle unerwarteten Ereignisse, die vor Abschluss des Programmiervorgangs auftreten, zu einer Beschädigung oder einem Datenverlust.
Abb. 4 zeigt, was passiert, wenn ein unerwartetes Ereignis die Datenprogrammierungsvorgänge unterbricht. In diesem Fall kommt es zu einem Stromausfall, bevor der Programmiervorgang für WL_2 abgeschlossen ist, was bedeutet, dass nur die in WL_0/WL_1 gespeicherten Daten garantiert sind. Mit anderen Worten: Andere Daten könnten aufgrund eines Stromausfalls beschädigt werden.
Die proprietäre Technologie von Phison, GuaranteedFlush™, wurde entwickelt, um zu verhindern, dass auf unseren Speichergeräten Daten beschädigt werden, die durch unerwartete Unterbrechungen während der Programmiervorgänge verursacht werden.
GuaranteedFlush™ wird nicht für jeden einzelnen Datenprogrammierungsbefehl ausgeführt. Stattdessen wird GuaranteedFlush™ im Hintergrund ausgelöst, sobald das Speichergerät einen FLUSH_CACHE-Befehl empfängt. Folglich wird durch diese Technologie die Integrität aller vor dem FLUSH_CACH-Befehl in das Gerät programmierten Daten gewährleistet.
Abb. 5 ist eine Darstellung des Benutzerdatenbereichs, den GuaranteedFlush™ abdecken kann.
GuaranteedFlush™ ist eine Implementierung mehrschichtiger Algorithmen. Es gibt zwei grundlegende Methoden, um die Daten eines Benutzers vor einem plötzlichen Stromausfall zu schützen.
Konzept 1: Dummy-Datenkompensation
Die erste Methode besteht darin, die Programmiervorgänge zu beschleunigen. Die Programmiersequenzen verschiedener NAND-Flash-Typen können unterschiedlich sein. Unabhängig davon, wie die Programmiersequenz variiert, bestimmt die Dauer der Datenprogrammierung auf einer einzelnen WL das Risiko eines Datenverlusts aufgrund einer unerwarteten Unterbrechung. Wenn diese Dauer länger wird, ist die Wahrscheinlichkeit einer Unterbrechung höher. Um dieses Problem zu lösen, werden Dummy-Daten in bestimmte WLs eingefügt, um sicherzustellen, dass der WL, der die Benutzerdaten speichert, den gesamten Programmiervorgang (dh 1. Programm + 2. Programm + 3. Programm) abschließen kann, wie in Abb. 6 gezeigt.
Durch Einfügen von Dummy-Daten in die folgenden WLs können Benutzerdaten-Programmiervorgänge abgeschlossen werden. Auf diese Weise ist die Integrität der Benutzerdaten auch dann gewährleistet, wenn ein unerwartetes Ereignis bevorstehende Programmiersequenzen unterbricht.
Konzept 2: Datensicherung in Echtzeit
Die zweite verfügbare Methode zum Schutz von SSDs vor Datenbeschädigungen durch den Paired-Pages-Effekt besteht darin, Daten direkt auf den Seiten zu sichern, ohne dass es überhaupt zu Paired-Paged-Problemen kommt. Als SLC-Modus konfigurierte Seiten können diese Anforderung erfüllen. Dies scheint eine radikale Möglichkeit zu sein, Benutzerdaten zu schützen. Allerdings beträgt die Kapazität des SLC-Modus für TLC-Speicher ein Drittel. Die Implementierung von Echtzeit-Datensicherung wird zu einem weiteren Problem.
Wählen Sie Phison für sichere Daten
GuaranteedFlush™ ist eine weitere proprietäre Technologie von Phison, die die Datenkorrektheit bei unerwartetem Stromausfall gewährleisten soll. GuaranteedFlush™ stärkt die Zuverlässigkeit der Phison SSD-Produkte.