Verschleißnivellierung - Wear leveling

Wear Leveling (auch als Wear Leveling bezeichnet ) ist eine Technik zur Verlängerung der Lebensdauer einiger Arten von löschbaren Computerspeichermedien , wie z. B. Flash-Speicher , der in Solid-State-Laufwerken (SSDs) und USB-Flash-Laufwerken verwendet wird , und Phase- Speicher ändern . Es gibt verschiedene Verschleißausgleichsmechanismen, die in solchen Speichersystemen ein unterschiedliches Maß an Langlebigkeitsverbesserung bewirken.

Der Begriff Preemptive Wear Leveling (PWL) wurde von Western Digital verwendet , um die Konservierungstechnik zu beschreiben, die auf Festplattenlaufwerken (HDDs) zum Speichern von Audio- und Videodaten verwendet wird. Festplatten sind jedoch im Kontext dieses Artikels im Allgemeinen keine Geräte mit Verschleißniveau.

Begründung

EEPROM- und Flash-Speichermedien haben einzeln löschbare Segmente, von denen jedes eine begrenzte Anzahl von Löschzyklen durchlaufen kann, bevor sie unzuverlässig werden. Dies sind normalerweise etwa 3.000 / 5.000 Zyklen, aber viele Flash-Geräte haben einen Block mit einer speziell verlängerten Lebensdauer von mehr als 100.000 Zyklen, der vom Flash-Speichercontroller verwendet werden kann, um den Verschleiß und die Bewegung von Daten über Segmente hinweg zu verfolgen. Löschbare optische Medien wie CD-RW und DVD-RW sind für bis zu 1.000 Zyklen ausgelegt (100.000 Zyklen für DVD-RAM- Medien).

Wear Leveling versucht, diese Einschränkungen zu umgehen, indem Daten so angeordnet werden, dass Lösch- und Umschreibvorgänge gleichmäßig auf das Medium verteilt werden. Auf diese Weise fällt kein einzelner Löschblock aufgrund einer hohen Konzentration von Schreibzyklen vorzeitig aus. Im Flash-Speicher ist ein einzelner Block auf dem Chip für eine längere Lebensdauer als die anderen ausgelegt, sodass der Speichercontroller Betriebsdaten mit geringerer Wahrscheinlichkeit ihrer Beschädigung speichern kann.

Herkömmliche Dateisysteme wie FAT , UFS , HFS , ext2 und NTFS wurden ursprünglich für Magnetplatten entwickelt und schreiben daher viele ihrer Datenstrukturen (z. B. ihre Verzeichnisse) wiederholt in denselben Bereich. Wenn diese Systeme auf Flash-Speichermedien verwendet werden, wird dies zu einem Problem. Das Problem wird durch die Tatsache verschärft, dass einige Dateisysteme die letzten Zugriffszeiten verfolgen, was dazu führen kann, dass Dateimetadaten ständig an Ort und Stelle neu geschrieben werden.

Typen

Es gibt drei grundlegende Arten von Verschleißausgleichsmechanismen, die in Flash-Speichergeräten verwendet werden:

Keine Verschleißnivellierung

Ein Flash-Speichersystem ohne Verschleißausgleich hält nicht lange, wenn Daten in den Flash geschrieben werden. Ohne Verschleißausgleich muss der zugrunde liegende Flash-Controller die logischen Adressen des Betriebssystems dauerhaft den physischen Adressen des Flash-Speichers zuweisen . Dies bedeutet, dass jeder Schreibvorgang in einen zuvor geschriebenen Block zuerst an derselben Stelle gelesen, gelöscht, geändert und neu geschrieben werden muss. Dieser Ansatz ist sehr zeitaufwändig und häufig geschriebene Speicherorte nutzen sich schnell ab, während andere Speicherorte überhaupt nicht verwendet werden. Sobald einige Blöcke das Ende ihrer Lebensdauer erreicht haben, ist ein solches Gerät nicht mehr funktionsfähig.

Dynamische Verschleißnivellierung

Die erste Art der Verschleißnivellierung wird als dynamische Verschleißnivellierung bezeichnet und verwendet eine Zuordnung, um logische Blockadressen (LBAs) vom Betriebssystem mit dem physischen Flash-Speicher zu verknüpfen . Jedes Mal, wenn das Betriebssystem Ersatzdaten schreibt, wird die Karte aktualisiert, sodass der ursprüngliche physische Block als ungültige Daten markiert wird und ein neuer Block mit diesem Karteneintrag verknüpft wird. Jedes Mal, wenn ein Datenblock in den Flash-Speicher neu geschrieben wird, wird er an einen neuen Speicherort geschrieben. Flash-Speicherblöcke, die niemals Ersatzdaten erhalten, würden jedoch keinen zusätzlichen Verschleiß erleiden. Daher stammt der Name nur von den dynamischen Daten, die recycelt werden. Ein solches Gerät kann länger als eins ohne Verschleißausgleich halten, aber es bleiben noch Blöcke als aktiv, obwohl das Gerät nicht mehr betriebsbereit ist.

Statische Verschleißnivellierung

Die andere Art der Verschleißnivellierung wird als statische Verschleißnivellierung bezeichnet, bei der auch eine Zuordnung verwendet wird, um den LBA mit physischen Speicheradressen zu verknüpfen. Die statische Verschleißnivellierung funktioniert genauso wie die dynamische Verschleißnivellierung, außer dass die statischen Blöcke, die sich nicht ändern, regelmäßig verschoben werden, damit diese Zellen mit geringer Nutzung von anderen Daten verwendet werden können. Dieser Rotationseffekt ermöglicht es einer SSD, weiter zu arbeiten, bis die meisten Blöcke kurz vor dem Ende ihrer Lebensdauer stehen.

Globale Verschleißnivellierung

Sowohl die dynamische als auch die statische Verschleißnivellierung werden auf lokaler Ebene implementiert. Dies bedeutet einfach, dass in einem Multi-Chip-Produkt jeder Chip als eine einzige Ressource verwaltet wird. Die Anzahl der defekten Blöcke in verschiedenen Chips innerhalb eines NAND-Flash-Speichers variiert. Bei einem bestimmten Chip können alle Datenblöcke abgenutzt sein, während bei einem anderen Chip alle Blöcke noch aktiv sein können. Um diese Situation zu retten, wird eine globale Verschleißnivellierung eingeführt. Bei der globalen Verschleißnivellierung werden alle Blöcke in allen Flash-Chips im Flash-Speicher zusammen in einem einzigen Pool verwaltet. Es stellt sicher, dass alle Zellen in allen Chips im Produkt gleichmäßig abgenutzt sind.

Vergleich

Die folgende Tabelle vergleicht die statische und dynamische Verschleißnivellierung:

Artikel Statisch Dynamisch
Ausdauer Längere Lebenserwartung Kürzere Lebenserwartung
Performance Langsamer Schneller
Designkomplexität Komplexer Weniger komplex
Typische Verwendung SSDs,
Flash-Laufwerke in Industriequalität
Flash-Laufwerke für Endverbraucher

Techniken

Es gibt verschiedene Techniken, um das Medienleben zu verlängern:

  • Für jeden Block oder Sektor kann eine Prüfsumme oder ein Fehlerkorrekturcode gespeichert werden, um Fehler zu erkennen oder Fehler zu korrigieren.
  • Ein Pool mit Reserveflächen kann ebenfalls aufbewahrt werden. Wenn ein Block oder Sektor ausfällt, können zukünftige Lese- und Schreibvorgänge zu einem Ersatz in diesem Pool umgeleitet werden.
  • Blöcke oder Sektoren auf dem Medium können in einer am wenigsten häufig verwendeten Warteschlange (LFU) verfolgt werden. Die Datenstrukturen für die Warteschlange selbst müssen entweder außerhalb des Geräts oder so gespeichert werden, dass der von ihr verwendete Speicherplatz selbst abgenutzt ist oder im Fall eines Flash-Speichers in einem Block mit einer besonders verlängerten Lebensdauer. Übliche Cache-Algorithmen dienen jedoch dazu, den Datenfluss in und aus RAM- basierten Caches zu verwalten, sodass sie nicht direkt für Flash-basierte Speichergeräte geeignet sind, da sie asymmetrischer Natur sind. Lesevorgänge sind normalerweise viel schneller als Schreibvorgänge und Löschvorgänge kann jeweils nur ein "Block" ausgeführt werden.

Bei einigen speziellen Secure Digital- Karten werden Techniken von einem eingebauten Mikrocontroller in Hardware implementiert . Bei solchen Geräten ist die Verschleißnivellierung transparent , und die meisten herkömmlichen Dateisysteme können unverändert verwendet werden.

Wear Leveling können auch in Software von Spezial-Dateisysteme wie implementiert werden JFFS2 und YAFFS auf Flash - Medien oder UDF auf optischen Medien. Alle drei sind protokollstrukturierte Dateisysteme, da sie ihre Medien als zirkuläre Protokolle behandeln und in aufeinanderfolgenden Durchläufen in sie schreiben. Dateisysteme, die Copy-on-Write- Strategien implementieren , wie z. B. ZFS , implementieren auch eine Form der Verschleißnivellierung.

Siehe auch

Verweise

Externe Links