-
STAND DER TECHNIK
-
Leistungsstarke
Computersysteme speichern Daten auf verschiedenen Arten von Speichermedien
und -geraten. Solche Speichermedien und -gerate können als
nichtflüchtig
angesehen werden und speichern Daten permanent, wenn die Stromversorgung
eines Computersystems abgeschaltet wird. Ein Beispiel für ein nichtflüchtiges
Speichergerät
ist die Festplatte eines Computersystems. Speichergeräte können auch
NAND-Flash-Speicher und Halbleiterlaufwerke (SSD – Solid
State Disk) umfassen. Speichermedien können tatsächliche Disks oder Platten
umfassen, auf die über
das Speichergerät
zugegriffen wird. Ein auf einem Prozessor ausgeführtes Betriebssystem (OS – Operating
System) kann Aktionen anfordern oder ausführen, zum Beispiel bestimmte
Speicherorte auf einem Speichermedium zu lesen und auf diese zu
schreiben.
-
Daten,
die an Speicherorte auf diesen bestimmten Speichergeräten geschrieben
oder von diesen gelesen werden, können in Blöcke gegliedert sein. Digitale
Informationen repräsentierende
Bits (d. h. 1 oder 0) können
als Daten gruppiert werden. Auf Speichergeräten können die Bits in Zellen gespeichert
werden. Zellen können
in Seiten organisiert werden. Daher repräsentiert eine Seite Daten.
Die Größe einer
Seite beträgt
bei NAND-Flash-Speichern etwa 2048 Bytes; dies ist jedoch nicht
typisch für
Festplattenlaufwerke (HDD – Hard
Disk Drives). In bestimmten Fällen
kann die Seite eine andere Größe haben.
-
Bei
manchen nichtflüchtigen
Speichern, wie NAND-Flash-Speichern, können Seiten in Löschblöcken gespeichert
werden. Ein Löschblock
umfasst normalerweise etwa 64 Seiten, obwohl ein Löschblock
in bestimmten Fällen
auch eine andere Anzahl von Seiten umfassen kann. In solchen Speichern
ist es normalerweise erforderlich, dass alle Seiten in einem gegebenen
Löschblock
zusammen statt einzeln gelöscht
werden.
-
Weiterhin
ist es in nichtflüchtigen
Speichern wie NAND-Flash-Speichern normalerweise erforderlich, dass
Seiten gelöscht
werden, bevor sie beschrieben werden. Gelöschte Seiten werden manchmal
als „leer” oder „Leerseiten” bezeichnet.
Somit können
nur Leerseiten beschrieben werden. Um dieselbe Seite zwei Mal zu
beschreiben, wird diese nach dem ersten Schreibvorgang und vor dem
zweiten Schreibvorgang gelöscht.
Eine Ausnahme von dieser Regel ist, dass Bits einer beschriebenen
Seite ohne Zwischenlöschen
von „1” auf „0” umgeschaltet
werden können.
-
Wenn
eine Aktion, wie zum Beispiel ein Schreibvorgang, auf einer Seite
eines Speichergeräts
oder Speichermediums durchgeführt
wird, wird der gesamte diese Seite enthaltende Block zunächst in
einen temporären
Speicherort eingelesen, dann wird der Löschblock gelöscht, und
alle Daten werden erneut in die Leerseiten im Löschblock geschrieben, darunter
die Daten aus dem temporären
Puffer für alle
Seiten außer
der zum Schreiben angeforderten Seite und die neuen Daten für den angeforderten
Seitenschreibvorgang. Somit erfordert ein Schreibvorgang gewöhnlich einen
Lesevorgang, einen Löschvorgang
und Schreiboperationen am gesamten Löschblock der Seite, was ein
relativ langsames Verfahren darstellt. Die temporären Speicherorte
können sich
im flüchtigen
Speicher des Computersystems befinden.
-
Die
Anzahl der an Löschblocks
eines Speichers, wie eines NAND-Flash-Speichers, ausgeführten Löschzyklen kann begrenzt sein.
Es wird normalerweise empfohlen, dass solche Löschaktionen bei jedem Löschblock über nicht
mehr als 100.000 Löschzyklen
ausgeführt
werden.
-
Somit
bestehen neben an Löschblöcken beobachteten
Abnutzungsproblemen durch vielfache Löschzyklen auch Leistungsprobleme
beim Ausführen
von Aktionen, die ganze Löschblöcke betreffen. Das
Verschieben von Seiten zu und aus Löschblöcken und an und von temporären Speicherorten
bewirkt einen bedeutenden Eingangs-/Ausgangs-Verkehr (IO – Input/Output)
in einem Computersystem und belegt beträchtliche Ressourcen (z. B.
Steuerung).
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die
detaillierte Beschreibung erfolgt unter Bezugnahme auf die beigefügten Figuren,
wobei:
-
1 eine
schematische Darstellung eines Computersystems zeigt, das gemäß einigen
Ausführungsformen
für das
Implementieren der NAND-Fehlerbehandlung angepasst werden kann.
-
2A ein
Blockdiagram von Seitenmetadaten zeigt, die gemäß einigen Ausführungsformen in
den nichtflüchtigen
Speicher eines solchen Festplatten-Cache oder Halbleiterlaufwerks
eingeschlossen sind.
-
2B ein
Blockdiagram von Seitenmetadaten zeigt, die gemäß einigen Ausführungsformen in
den flüchtigen
Speicher zum Steuern eines solchen Festplatten-Caches oder Halbleiterlaufwerks eingeschlossen
sind.
-
3 ein
Flussdiagramm ist, das einen Prozess zur Behandlung eines NAND-Lesefehlers
gemäß einigen
Ausführungsformen
darstellt.
-
4 ein
Flussdiagramm ist, das einen Prozess zur Behandlung eines NAND-Lesefehlers
gemäß einigen
Ausführungsformen
darstellt.
-
5 ein
Flussdiagramm ist, das einen Prozess zur Behandlung eines NAND-Lesefehlers
gemäß einigen
Ausführungsformen
darstellt.
-
6 ein
Flussdiagramm ist, das einen Prozess zur Behandlung eines Schreibzugriffsfehlers
gemäß einigen
Ausführungsformen
darstellt.
-
DETAILLIERTE BESCHREIBUNG
-
In
dieser Patentschrift werden beispielhafte Systeme und Verfahren
für die
Implementierung einer NAND-Fehlerbehandlung beschrieben, die in manchen
Ausführungsformen
in einem elektronischen Gerät,
wie zum Beispiel einem Computersystem, implementiert sein kann.
In der folgenden Beschreibung werden zahlreiche spezielle Details
angeführt,
um ein gründliches
Verständnis
der verschiedenen Ausführungsformen
zu bieten. Dem Fachmann ist jedoch klar, dass die verschiedenen
Ausführungsformen
ohne die speziellen Details praktiziert werden können. In anderen Fällen wurden
wohlbekannte Merkmale, Verfahren, Komponenten und Schaltungen nicht
im Detail beschrieben, um die jeweiligen Ausführungsformen nicht in den Hintergrund rücken zu
lassen.
-
1 zeigt
ein Computersystem 100, das einen Platten-Cache und/oder
ein Halbleiterlaufwerk (SSD – Solid
State Disk) bietet. Das Computersystem 100 umfasst eines
von verschiedenen Geräten
und Systemen, wie Personalcomputer (PC), Laptop-Computer und Server-Computer. Das Computersystem 100 kann
insbesondere für
die Ausführung
einer schnellen oder effektiven Cache-Speicherung (d. h. effektivere
Operationen mit Speichermedien) in einem Speichergerät oder Festplattenlaufwerk
konfiguriert sein. Alternativ kann das Computersystem 100 so
konfiguriert sein, dass es ein Halbleiterlaufwerk (SSD) umfasst,
welches, wie in dieser Anmeldung angegeben, implementiert ist. Das
bestimmte dargestellte Computersystem 100 weist sowohl
einen Platten-Cache als auch ein SSD auf. Es ist denkbar, dass bestimmte
Implementierungen des Computersystems 100 nur über einen
Platten-Cache oder ein SSD verfügen,
und in bestimmten Fällen
(wie hier dargestellt) ist sowohl ein Platten-Cache als auch ein
SSD implementiert. Beispiele von Speichergeräten umfassen NAND-Flash-Speicher,
NOR-Flash-Speicher, Polymerspeicher
oder beliebige andere nichtflüchtige Speicher,
die in Löschblöcke mit
Speicherseiten gegliedert sind.
-
Das
Computersystem 100 umfasst eine Zentraleinheit (CPU – Central
Processing Unit) oder Steuerung 102. In bestimmten Ausführungsformen ist
die Steuerung 102 ein Doppel- oder Mehrfachprozessor, der
Mehrfachsteuerungen umfasst. Die Steuerung 102 kann für verschiedene
Prozesse im Computersystem 100 verwendet werden und kann
insbesondere einen Speicher und eine Plattenspeichersteuerung umfassen.
-
Ein
Speicher 104 ist in das Computersystem 100 eingebunden.
Der Speicher 104 wird von der Steuerung 102 gesteuert.
Der Speicher 104 kann einen oder mehrere Speicher, wie
Schreib-Lese-Speicher (RAM – Random
Access Memory) umfassen. Der Speicher 104 kann flüchtige und
nichtflüchtige Speicher
umfassen, wobei Daten im flüchtigen
Speicher verloren gehen, im nichtflüchtigen Speicher hingegen nicht
verloren gehen, wenn das Computersystem 100 abgeschaltet
wird. In diesem Beispiel umfasst der Speicher 104 insbesondere
einen flüchtigen Speicher 106.
Beim flüchtigen
Speicher 106 kann es sich um einen dynamischen Schreib-Lese-Speicher (DRAM)
handeln.
-
Als
Alternative kann der flüchtige
Speicher 106 in einem Platten-Cache 108 und/oder
einem SSD 110 resident sein. Weiterhin kann sich eine Steuerung
(nicht dargestellt) im Platten-Cache 108 oder SSD 110 oder
auf einem Festplattenlaufwerk (HDD) 112 befinden. Die residente
Steuerung steuert insbesondere den Zugriff auf den flüchtigen
und nichtflüchtigen
Speicher. Außerdem
kann sich der Platten-Cache 108 auf einem separaten Bus
befinden, anstatt wie in 1 dargestellt, als Filter angeschlossen
zu sein. Bei bestimmten Implementierungen befindet sich der Platten-Cache 108 im
HDD 112.
-
Im
vorliegenden Beispiel speichert der flüchtige Speicher 106 Seitenmetadaten 114.
Die Seitenmetadaten 114 umfassen Verbrauchszustandsangaben
der Seiten (d. h. durch bestimmte physische Adressen gekennzeichnete
Seiten). Zu den Verbrauchszustandsangaben gehören drei Zustände: belegt,
gültig
und leer. Wie unten genauer beschrieben wird, gestattet die Verwendung
von Verbrauchszustandsangaben das Ausführen von Aktionen an einzelnen
Seiten und vermeidet so, dass ganze Blöcke gelöscht werden müssen. Dies
ermöglicht
ein schnelles Cache-Speichern und den Betrieb des Halbleiterlaufwerks
durch Ausführen
von Aktionen an einzelnen Seiten statt an ganzen Löschblöcken.
-
Der
Speicher 104 kann ein Betriebssystem 116 speichern,
das von der Steuerung 102 ausgeführt werden kann. Anwendungsprogramme
oder Anwendungen 118 können
im Speicher 104 gespeichert sein. Anwendungen 118 werden
vom Betriebssystem 116 ausgeführt. Das Betriebssystem 116 wird
insbesondere zur Ausführung
von Lese- und Schreiboperationen in den flüchtigen Speicher 106 und
ein Speichergerät
wie eine Festplatte 112 und/oder ein SSD 110 verwendet.
Solche Operationen können
als Ergebnis von Anforderungen von Anwendungen 118 ausgeführt werden.
-
Ein
Platten-Cache 108 ist in das Computersystem 100 eingebunden.
In Implementierungen, bei denen ein Speichergerät wie ein SSD 110 anstelle des
HDD 112 verwendet wird, werden ähnliche Logikschaltungen oder
Prozesse, wie sie vom Platten-Cache 118 ausgeführt werden,
vom SSD 110 ausgeführt.
Vom HDD 112 an den Speicher 104 (d. h. das Betriebssystem 116 oder
Anwendungen 118) gesendete Daten durchlaufen den Platten-Cache 108 und/oder
das SSD 110.
-
Der
Platten-Cache 108 wird insbesondere für am HDD 112 ausgeführte Aktionen
verwendet. So wird beispielsweise eine Leseanforderung vom Betriebssystem 116 ausgeführt. Wenn
die Daten im Platten-Cache 108 gefunden werden, werden
die Daten vom Platten-Cache 108 zum Betriebssystem 116 gesendet.
Wenn die Daten nicht im Platten-Cache 108 gefunden werden,
werden die Daten vom HDD 112 gelesen.
-
Wenn
vom Betriebssystem 116 eine Schreibaktion durchgeführt wird,
werden die Daten in Abhängigkeit
von der Platten-Cache-Logik zum Platten-Cache 108 und/oder
zum HDD 112 gesendet. In Zeiten, zu denen das Betriebssystem 116 nicht
aktiv ist, können
die Daten vom Platten-Cache 108 zum HDD 112 gesendet
werden.
-
Die
Angaben in Seitenmetadaten 114 umfassen Angaben zum Status
der einzelnen Seiten und eine Zuordnungstabelle von logischen zu
physischen Adressen, die schnelleres Platten-Cache-Speichern und
schnellere Operationen des SSD 110 (d. h. effektivere Operationen)
gestattet, indem Operationen an einzelnen Seiten statt mehrere Aktionen
an ganzen Blöcken
(d. h. Löschblöcken) zulässig sind.
-
2A zeigt
die Anordnung der Daten und Seitenmetadaten im nichtflüchtigen
Speicher, wie dem Platten-Cache 108 oder Halbleiterlaufwerk (SSD) 110.
Insbesondere unterstützt
die Tabelle 200 das, was als dynamische Adressierung des
nichtflüchtigen
Speichers auf einem Platten-Cache 108 oder einem SSD 110 beschrieben
wird. Bei der dynamischen Adressierung wird die Zuordnung zwischen logischen
Adressen und physischen Adressen ständig geändert, um zu gewährleisten,
dass durch jede logische Schreiboperation Daten an einem zuvor gelöschten Speicherort
(d. h. an einer anderen physischen Adresse) des nichtflüchtigen
Speichers gespeichert werden. Bei dynamischer Adressierung generiert
jede logische Schreiboperation somit eine einzelne Operation auf
einer Seite. Diese soll mit der typischen Adressierung verglichen
werden, bei der drei Zugriffe auf den betreffenden Löschblock
eines nichtflüchtigen
Speichers ausgeführt
werden (einer zum Lesen der Daten am die angegebene Adresse enthaltenden
Löschblock,
einer zum Löschen/Deaktivieren
eines alten Löschblocks
und der dritte zum Schreiben der aktualisierten Daten am Löschblock).
-
Tabelle 200 umfasst
einen physischen Adressindex 202, der eine physische Adresse
eines physischen Ortes in einem Speichermedium oder -gerät indiziert,
wie es sich im Platten-Cache 108 oder SSD 110 befindet.
Tabelle 200 schließt
insbesondere keine physische Adresse ein, sondern greift über den
physischen Adressindex 202 auf physische Adressen zu. Ein
Index verweist auf eine physische Adresse, wobei eine physische
Adresse eine bestimmte Seite in einem bestimmten Löschblock
definiert, wo Daten gespeichert werden.
-
Tabelle 200 umfasst
ein Feld für
Daten 204, das tatsächliche
Daten repräsentiert.
Tabelle 200 umfasst weiterhin Metadaten, wie sie durch
das Metadatenfeld 206 repräsentiert werden. Das Metadatenfeld
kann ein Feld Cache-Metadaten 208 umfassen, das die vom
Platten-Cache 108 verwendeten Metadaten beschreibt; dieses
Feld muss jedoch nicht für
den Betrieb des SSD 110 erforderlich sein. Eingeschlossen
in die Cache-Metadaten 208 sind Unterfelder für typische
Cache-Metadaten nach dem Stand der Technik oder anwendungsspezifische
Metadaten, wie sie in den folgenden Beispielfeldern dargestellt
sind: tag = disk LBA (logische Blockadresse) Feld 212,
gültiges
Bitfeld 214, Dirty-Bitfeld 216 usw. Es ist dem
Fachmann wohlbekannt, dass solche Angaben oder anwendungsspezifische
Metadaten eingeschlossen werden.
-
Ein
logisches Adressfeld 218 und ein Verbrauchszustandsfeld 220 werden
vorgesehen, um schnelles Platten-Cache-Speichern oder effektive SSD-Operationen
an Speichermedien zu ermöglichen.
Das logische Adressfeld 218 stellt eine Adresse dar, zu
der das Betriebssystem 110, der Platten-Cache 118 oder
die Logikschaltung in einem SSD 116 gehen können, um
Daten zu erhalten. Insbesondere Algorithmen im Platten-Cache 118 oder
im SSD 116 beziehen sich beim Ausführen von Aktionen, die Platten-Cache 108 oder
SSD 110 betreffen, auf logische Adressen, wie sie durch
das Feld für
logische Adressen 218 definiert werden. Das Verbrauchszustandsfeld 220 repräsentiert
einen von drei Verbrauchszuständen
einer Seite. Ein erster Verbrauchszustand ist „leer”, was angibt, dass auf die Seite
Daten geschrieben werden können.
Ein zweiter Verbrauchszustand ist „gültig”, was angibt, dass auf der
Seite Daten vorhanden sind und gelesen werden können. Ein dritter Verbrauchszustand
ist „belegt”, was angibt,
dass auf der Seite Daten vorhanden sind, die aber nicht mehr gültig sind
oder nicht gelesen werden können.
Als „belegt” gekennzeichnete
Seiten sind Seiten, die gelöscht
werden können.
Durch das Bereitstellen von Verbrauchsstatusangaben für Seiten
können
Aktionen (z. B. Schreiben oder Löschen) an
Seiten ausgeführt
werden, ohne dass eine Aktion an einem Löschblock ausgeführt werden
muss.
-
In
diesem Beispiel umfasst die Tabelle 200 zwölf Dateneinträge 222(1)
bis 222(12), die die physischen Seiten 1 bis 12 belegen und durch
den physischen Adressindex 202 indiziert werden. Im Einzelnen
wird der Dateneintrag 222(1) durch den physischen Adressindex 1;
Dateneintrag 222(2) durch den physischen Adressindex 2; Dateneintrag
222(3) durch den physischen Adressindex 3 usw. indiziert.
-
Die
durch ihre physischen Adressindizes definierten Seiten können in
Löschblöcke gruppiert
werden. Zum Beispiel können
durch die Indizes 1, 2, 3 und 4 definierte Seiten in einem Löschblock
1, durch die Indizes 5, 6, 7 und 8 definierte Seiten in einem Löschblock
2, und durch die Indexadressen 9, 10, 11 und 12 definierte Seiten
in einem Löschblock
3 gruppiert werden. Die Anzahl an Seiten sowie deren Gruppierung
dienen der Veranschaulichung, und es wird erwartet, dass normale
Löschblöcke mehr
als vier Seiten und dass der Platten-Cache 108 und das SSD 110 mehr
als drei Löschblöcke umfassen.
-
Der
Platten-Cache 108 oder das SSD 110 können eine
Beschränkung
hinsichtlich der Höchstzahl
der von ihnen adressierbaren physischen Seiten aufweisen. In dieser
Illustration kann die Höchstzahl beispielsweise
6 Seiten betragen. Daher können sechs
Seiten in den Einträgen
222 einen Verbrauchszustand „gültig” haben.
Im vorliegenden Beispiel sind solche Einträge Eintrag 222(2), Eintrag
222(3), Eintrag 222(4), Eintrag 222(6), Eintrag 222(8) und Eintrag
222(9). Die übrigen
Einträge
222 sind entweder „belegt” oder „leer”.
-
2B stellt
Seitenmetadaten-Informationen im flüchtigen Speicher, wie dem flüchtigen
Speicher 106 dar. Insbesondere können im flüchtigen Speicher 106 eine
Zuordnungstabelle von logischen zu physischen Adressen (L2P) 224 und
eine Leer-Pool-Tabelle 226 gespeichert
sein.
-
Die
L2P-Tabelle 224 umfasst ein Indexfeld für die logische Adresse 230 und
ein Indexfeld für
die physische Adresse 232. Das Indexfeld für die logische
Adresse 230 bietet insbesondere einen Index für eine logische
Adresse; die L2P-Tabelle 224 umfasst jedoch keine logische
Adresse. Die Einträge 234
enthalten Indizes für
logische Adressen und entsprechende physische Adressen.
-
Die
Leer-Pool-Tabelle 226 umfasst ein Feld für die physische
Adresse 236 und ein Verbrauchszustandsfeld 238.
Es ist denkbar, dass der Leer-Pool 236 für typische
Implementierungen kein Verbrauchszustandsfeld 238 umfasst,
da nur physische Adressen mit dem Verbrauchszustand „leer” in der Leer-Pool-Tabelle 226 gekennzeichnet
werden müssen.
Mit anderen Worten, die Leer-Pool-Tabelle 226 ist einfach
eine Liste von physischen Adressen, für die der Verbrauchszustand
in Tabelle 220 „leer” ist. Jeder
Eintrag der Einträge
240 umfasst physische Adressen (d. h. Indizes für physische Adressen) mit dem
Verbrauchszustand „leer”. Durch
Kennzeichnen verfügbarer
oder leerer Seiten kann die Logikschaltung des Platten-Cache 108 oder
SSD 110 auf bestimmte Leerseiten schreiben. Bei bestimmten
Implementierungen kann die Tabelle 200 ohne das Datenfeld 204 auch
im flüchtigen
Speicher enthalten sein. Im flüchtigen
Speicher gestattet die Tabelle 200 eine relativ schnelle
und effektivere Erkennung von Löschblöcken, die überwiegend
leer sind, und die für die
Aktualisierung von Seitenmetadaten bei Verschiebungen erforderliche
Tabellensuchlogik.
-
Da
die Informationen in Tabelle 200 im nichtflüchtigen
Speicher (d. h. Platten-Cache 108 und/oder SSD 110)
gespeichert sind, können
im Fall von beschädigten,
gelöschten
oder unverfügbar
gemachten (d. h. nach dem Abschalten nicht behaltenen) Daten im
flüchtigen
Speicher 106 die Daten in den Tabellen 224 und 226 mit
Daten aus der Tabelle 200 erstellt oder wieder hergestellt
werden. Dies ermöglicht
zum Beispiel die Wiederherstellung sowohl der Platten-Cache-Speicher-
oder Halbleiterlaufwerk-Anwendungen
nach einem Stromausfall trotz der sich ständig ändernden Zuordnung von logischen zu
physischen Adressen und die Erhaltung der L2P-Tabelle 224 im
flüchtigen
Speicher.
-
Die
Speicherung ist einer der größten Leistungsengpässe in Computersystemen.
In manchen Ausführungsformen
kann ein Computersystem 100 die Write-Back-Platten-Cache-Speicherung
auf nichtflüchtigem
Speicher implementieren, was den Leistungsengpass beträchtlich
verringern kann, während
es gleichzeitig Energiesparvorteile bringt, was insbesondere für mobile
Plattformen wesentlich ist. Halbleiterlaufwerke bieten vergleichbare
Vorteile. Die durch Verweis weiter oben hierin inbegriffenen zugehörigen Anwendungen
implementieren Algorithmen für
Platten-Cache- und
SSD-Anwendungen auf nichtflüchtigen
(NV – Non-Volatile)
Speichern wie NAND-Flash-Speichern,
die hohe Schreiblatenzzeiten haben und bei denen die Daten in Seiten
organisiert sind, die vor dem erneuten Beschreiben in einem Löschblock
(EB – Erase
Block) gelöscht
werden müssen.
Diese Algorithmen haben die folgenden Merkmale: a) Mit einer L2P-Indirektionstabelle
werden logische Adressen physischen Adressen zugeordnet, b) Schreibvorgänge an eine
logische Adresse werden auf einer leeren physischen Seite geschrieben
und die L2P-Tabelle wird so aktualisiert, dass sie auf diese Seite
weist, c) in Leerlaufzeiten werden gültige Seiten in einem Löschblock
in einen anderen Löschblock
umgelagert, bevor der erstere Löschblock
gelöscht
wird, und d) für jeden
Schreibvorgang an eine logische Adresse wird in den Seitenmetadaten
eine Folgenummer gespeichert, um den aktuellen (jüngsten)
Schreibvorgang für
die logische Adresse identifizieren zu können. Dies ermöglicht ein
ordnungsgemäßes Wiederherstellen
nach einem Stromausfall.
-
Diese
Verfahren gehen jedoch davon aus, dass der zugrunde liegende nichtflüchtige Speicher während Lese-,
Schreib- und Löschoperationen
keine Fehler aufweist. In der Praxis treten regelmäßig Fehler
bei Lese-, Schreib- und Löschoperationen
auf und müssen
nach Möglichkeit
ohne Zerstörung
der Datenintegrität
behandelt werden, um einen zuverlässigen Betrieb zu gewährleisten.
Somit werden hierin Ausführungsformen
von Techniken zum Behandeln von Lesevorgängen, Programmfehlern und Lesefehlern
in einem Computersystem, wie dem Computersystem 100, beschrieben.
Unbeschadet der Allgemeingültigkeit
und ausschließlich
zu Illustrationszwecken wird der zugrunde liegende nichtflüchtige Speicher
im Kontext von NAND beschrieben, obwohl sich die Techniken auf andere
Speicherarten anwenden lassen. Somit werden hierin neue Techniken
für die
NAND-Fehlerbehandlung für
einen zuverlässigen
Platten-Cache- und SSD-Betrieb beschrieben.
-
Beispielhafte
Techniken werden unter Verweis auf 3 bis 6 beschrieben.
Die beschriebenen Verfahren werden als eine Sammlung von Blöcken in
einem logischen Flussdiagramm dargestellt, die eine in Hardware,
Software, Firmware oder Kombination davon implementierbare Operationsfolge
repräsentieren.
Im Kontext der Software stellen die Blöcke Computeranweisungen dar,
die bei Ausführung durch
einen oder mehrere Prozessoren die angegebenen Operationen durchführen. Die
Prozesse werden unter Bezugnahme auf das Computersystem 100 und
die oben beschriebenen Tabellen 200, 224 und 226 beschrieben.
Obwohl sie in Form von Flussdiagrammen beschrieben werden, ist denkbar,
dass bestimmte Prozesse gleichzeitig oder in anderer Reihenfolge
stattfinden können.
-
Die
drei Hauptfehlertypen sind Löschfehler, Programm(schreib)fehler
und Lesefehler; die Behandlung jedes dieser Fehlertypen wird im
Folgenden erläutert.
Ein häufiges
gemeinsames Merkmal bei Fehlerbehandlungsalgorithmen besteht darin, dass
ein Fehler dazu führt,
dass der zugrunde liegende Block als „schadhafter” Block
markiert wird. Nach Möglichkeit
werden eventuelle aktuelle (gültige)
Daten im Block in einen anderen Löschblock umgelagert. Auf diese
Verlagerung folgt ein erneutes Zuordnen von zuvor in die Warteschlange
gestellten Speicherzugriffsoperationen in Bezug auf den schadhaften
Block. Es ist möglich,
dass ein unerwarteter Stromausfall auftritt, während das System dabei ist, Daten
aus einem defekten Löschblock
umzulagern. Das System kann das Aktualisieren der Liste schadhafter
NV-Blöcke
aufschieben, bis alle aktuellen (gültigen) Daten umgelagert wurden.
Wenn der Strom ausfällt,
bevor die Liste schadhafter NV-Blöcke aktualisiert wurde, findet
das System den schadhaften Block im nächsten Arbeitstakt wieder.
-
3 ist
ein Flussdiagramm, das einen Prozess zur Behandlung eines Lesezugriffsfehlers
gemäß einigen
Ausführungsformen
darstellt. Bei Operation 310 tritt ein Speicherlesezugriffsfehler
in einem gegebenen Speicherblock auf, der als Block X bezeichnet
wird. Bei Operation 320 werden alle in der Warteschlange
befindlichen Speicheroperationen einschließlich des Zugriffs mit dem
Fehler abgebrochen und es wird eine Fehlerstatusmeldung an den Benutzer
ausgegeben. Bei Operation 330 wird Block X als schadhaft
markiert. Bei Operation 340 werden alle gültigen Daten
aus Block X in einen einwandfreien Block umgelagert. Bei Operation 350 wird
die Indirektionstabelle aktualisiert.
-
4 ist
ein Flussdiagramm, das einen Prozess zur Behandlung von Speicherlesezugriffsfehlern
veranschaulicht, bei dem gemäß einigen
Ausführungsformen
wartende Speicherzugriffe nach dem Speicherlesefehler erhalten werden.
Bei solchen wartenden Speicherzugriffen kann es sich zum Beispiel
um NAND-Speicherlösch-,
Programm- oder Leseoperationen handeln.
-
Bei
Operation 410 tritt ein Speicherlesezugriffsfehler in einem
gegebenen Speicherblock auf, der als Block X bezeichnet wird. Bei
Operation 420 werden alle in der Warteschlange befindlichen
Speicheroperationen einschließlich
des Zugriffs mit dem Fehler abgebrochen und es wird eine Fehlerstatusmeldung
an den Benutzer ausgegeben. Bei Operation 430 wird Block
X als schadhaft markiert. Bei Operation 440 werden alle
gültigen
Daten aus Block X in einen einwandfreien Block umgelagert. Bei Operation 450 wird
die Indirektionstabelle aktualisiert. Bei Operation 460 werden
die wartenden Speicheroperationen aktualisiert, um die Änderungen
an der Indirektionstabelle in Operation 450 widerzuspiegeln.
Bei Operation 470 wird das Ausführen der wartenden Speicheroperationen
wieder aufgenommen.
-
Unter
bestimmten Umständen
ist es möglich, dass
das System nicht korrigierbare Lesefehler in Daten entdeckt, die
nicht vom Benutzer angefordert wurden. In solchen Fällen kann
das System den Fehler intern kennzeichnen, sollte aber den Benutzer
erst benachrichtigen, wenn der Benutzer die Daten anfordert. Für den Fall,
dass der Benutzer die Daten an der gekennzeichneten (defekten) logischen
Adresse vor dem Lesen überschreibt,
wird der gekennzeichnete Fehler überschrieben,
und der Benutzer stößt nicht
auf den Lesefehler.
-
5 ist
ein Flussdiagramm, das einen Prozess zur Behandlung eines NAND-Lesefehlers
gemäß einigen
Ausführungsformen
darstellt. Bei Operation 510 tritt ein Speicherlesezugriffsfehler
in einem gegebenen Speicherblock auf, der als Block X bezeichnet
wird. Bei Operation 520 werden alle in der Warteschlange
befindlichen Speicheroperationen einschließlich des Zugriffs mit dem
Fehler abgebrochen und es wird eine Fehlerstatusmeldung an den Benutzer
ausgegeben. Bei Operation 530 wird Block X als schadhaft
markiert. Bei Operation 540 wird die Indirektionstabelle
aktualisiert. Bei Operation 550 werden die wartenden Speicheroperationen
mit Ausnahme von Leseoperationen, die auf gültige Daten in Block X abzielen,
aktualisiert, um die Änderungen
an der Indirektionstabelle in Operation 450 widerzuspiegeln.
Bei Operation 560 wird das Ausführen der wartenden Speicheroperationen
wieder aufgenommen. Bei Operation 570 werden alle gültigen Daten
aus Block X in einen einwandfreien Block umgelagert.
-
6 ist
ein Flussdiagramm, das einen Prozess zur Behandlung eines Schreibzugriffsfehlers
gemäß einigen
Ausführungsformen
darstellt. Bei Operation 610 tritt in Block X ein Speicherschreibzugriffsfehler
auf. Bei Operation 620 werden alle in der Warteschlange
befindlichen Speicheroperationen einschließlich des Zugriffs mit dem
Fehler abgebrochen und es wird eine Fehlerstatusmeldung an den Benutzer
ausgegeben. Bei Operation 630 wird Block X als schadhaft
markiert. Bei Operation 640 werden alle gültigen Daten
aus Block X in einen einwandfreien Block umgelagert. Bei Operation 650 wird
die Indirektionstabelle aktualisiert. Bei Operation 660 werden wartende
Schreiboperationen, die auf Orte im defekten Block abzielen, erneut
verarbeitet und an Speicherorte in einem einwandfreien Block umgeleitet. Bei
Operation 670 werden wartende Lesezugriffe aktualisiert,
um die Änderungen
der Indirektionstabelle widerzuspiegeln. Bei Operation 680 wird
das normale Ausführen
von Befehlen wieder aufgenommen.
-
Als „Logikanweisungen” im Sinne
dieser Schrift werden Ausdrücke
bezeichnet, die von einer oder mehreren Maschinen zum Ausführen einer
oder mehrerer logischer Operationen verstanden werden können. Beispielsweise
können
Logikanweisungen von einem Prozessorkompilierer interpretierbare
Anweisungen zum Ausführen
einer oder mehrerer Operationen an einem oder mehreren Datenobjekten sein.
Es handelt sich hierbei jedoch lediglich um ein Beispiel für maschinenlesbare
Anweisungen, auf das die Ausführungsformen
in keiner Weise beschränkt sind.
-
Der
Begriff „computerlesbares
Medium” im Sinne
dieser Schrift bezieht sich auf Medien, die von einer oder mehreren
Maschinen wahrnehmbare Ausdrücke
erhalten können.
Beispielsweise kann ein computerlesbares Medium eines oder mehrere
Speichergeräte
zum Speichern von computerlesbaren Anweisungen oder Daten sein.
Solche Speichergeräte
können
Speichermedien wie zum Beispiel optische, magnetische oder Halbleiterspeichermedien aufweisen.
Es handelt sich hierbei jedoch lediglich um ein Beispiel für computerlesbares
Medium, auf das die Ausführungsformen
in keiner Weise beschränkt
sind.
-
Der
Begriff „Logik” im Sinne
dieser Schrift bezieht sich auf die Struktur für das Ausführen einer oder mehrerer logischer
Operationen. Eine Logik kann zum Beispiel eine Schaltung aufweisen,
die auf der Grundlage eines oder mehrerer Eingangssignale ein oder
mehrere Ausgangssignale bereitstellt. Eine solche Schaltung kann
einen endlichen Automaten aufweisen, der eine digitale Eingabe empfängt und eine
digitale Ausgabe liefert, oder eine Schaltung, die ein oder mehrere
analoge Ausgangssignale als Reaktion auf ein oder mehrere analoge
Eingangssignale liefert. Eine solche Schaltung kann in einer anwendungsspezifischen
integrierten Schaltung (ASIC – Application
Specific Integrated Circuit) oder einem frei programmierbaren Verknüpfungsfeld
(FPGA – Field
Programmable Gate Array) bereitgestellt werden. Die Logik kann auch
in einem Speicher gespeicherte maschinenlesbare Anweisungen in Kombination
mit Verarbeitungsschaltungen zum Ausführen solcher maschinenlesbaren Anweisungen
aufweisen. Dies sind jedoch lediglich Beispiele von Strukturen für die Bereitstellung
von Logik, auf die die Ausführungsformen
in keiner Weise beschränkt
sind.
-
Manche
der in dieser Schrift beschriebenen Verfahren können in Logikanweisungen auf
einem computerlesbaren Medium integriert werden. Wenn sie auf einem
Prozessor ausgeführt
werden, bewirken die Logikanweisungen ein Programmieren des Prozessors
als Sondergerät,
das die beschriebenen Verfahren implementiert. Der Prozessor stellt
die Struktur zum Durchführen
der beschriebenen Verfahren dar, wenn er von den Logikanweisungen
zum Ausführen
der in dieser Schrift beschriebenen Verfahren konfiguriert wird.
Als Alternative können
die in dieser Schrift beschriebenen Verfahren auf eine Logik auf
beispielsweise einem frei programmierbaren Verknüpfungsfeld (FPGA – Field
Programmable Gate Array), einer anwendungsspezifischen integrierten Schaltung
(ASIC – Application
Specific Integrated Circuit) o. ä.
reduziert werden.
-
In
der Beschreibung und den Ansprüchen können die
Begriffe „gekoppelt” und „verbunden” gemeinsam
mit ihren Ableitungen verwendet werden. In bestimmten Ausführungsbeispielen
wird „verbunden” verwendet,
um anzuzeigen, dass zwei oder mehrere Elemente durch direkten physischen
oder elektrischen Kontakt miteinander verbunden sind. „Gekoppelt” kann bedeuten,
dass sich zwei oder mehrere Elemente in direktem physischem oder
elektrischem Kontakt befinden. „Gekoppelt” kann aber auch bedeuten,
dass sich zwei oder mehrere Elemente vielleicht nicht in direktem
Kontakt miteinander befinden, jedoch trotzdem miteinander kooperieren
oder zusammenwirken können.
-
Die
Bezugnahme auf „eine
Ausführungsform” in dieser
Schrift bedeutet, dass eine bestimmte Funktion, Struktur oder ein
bestimmtes Merkmal, die/das im Zusammenhang mit der Ausführungsform beschrieben
wird, in mindestens eine Implementierung eingeschlossen ist. Das
Auftreten der Wortgruppe „bei
einer Ausführungsform” an verschiedenen Stellen
in dieser Schrift kann sich stets auf die gleiche Ausführungsform
beziehen oder auch nicht.
-
Obwohl
die Ausführungsformen
sprachlich durch spezifische Strukturmerkmale und/oder methodologische
Akte beschrieben wurden, versteht sich, dass der beanspruchte Gegenstand
nicht auf diese spezifischen Merkmale oder Akte beschränkt sein kann.
Vielmehr werden die spezifischen Merkmale und Akte als beispielhafte
Formen offen gelegt, die den beanspruchten Gegenstand implementieren.