DE102009031125A1 - Nand-Fehlerbehandlung - Google Patents

Nand-Fehlerbehandlung Download PDF

Info

Publication number
DE102009031125A1
DE102009031125A1 DE102009031125A DE102009031125A DE102009031125A1 DE 102009031125 A1 DE102009031125 A1 DE 102009031125A1 DE 102009031125 A DE102009031125 A DE 102009031125A DE 102009031125 A DE102009031125 A DE 102009031125A DE 102009031125 A1 DE102009031125 A1 DE 102009031125A1
Authority
DE
Germany
Prior art keywords
memory
data
operations
block
waiting
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
DE102009031125A
Other languages
English (en)
Inventor
Robert Portland Royer
Sanjeev N. Hillsboro Trika
Rick Portland Coulson
Robert W. Hillsboro FABER
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102009031125A1 publication Critical patent/DE102009031125A1/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/085Error detection or correction by redundancy in data representation, e.g. by using checking codes using codes with inherent redundancy, e.g. n-out-of-m codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0692Multiconfiguration, e.g. local and global addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers

Abstract

Es werden Techniken zum Behandeln verschiedener Fehler in Speichern, wie z.B. NAND-Speichern, in elektronischen Geräten offengelegt. Bei manchen Ausführungsformen werden Lösch-, Lese- und Programmfehlerbehandlungsfehler behandelt.

Description

  • 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.

Claims (15)

  1. Verfahren zum Behandeln von Lesefehlern auf einem indirekt adressierten, nichtflüchtigen (NV – Non-Volatile) Blockspeicher in einem elektronischen Gerät, das aufweist: Erkennen eines Funktionsfehlers in einem NV-Speicherblock; Umlagern gültiger Benutzerdaten vom mit dem Funktionsfehler assoziierten NV-Speicherblock auf einen einwandfreien Block; Markieren des mit dem Funktionsfehler assoziierten NV-Speicherblocks als schadhaft; und Aktualisieren der Indirektionstabelle.
  2. Verfahren nach Anspruch 1, das weiterhin folgende Schritte aufweist: Abbrechen der wartenden Operationen für den mit dem Funktionsfehler assoziierten NV-Speicherblock; und Ausgeben eines Fehlerstatus an den Benutzer für jede wartende Operation.
  3. Verfahren nach Anspruch 1, das weiterhin folgende Schritte aufweist: Verzögern der wartenden Speicheroperationen für den NV-Speicher im elektronischen Gerät; Aktualisieren der wartenden Operationen, um die aktualisierte Indirektionstabelle widerzuspiegeln; und Wiederaufnehmen der Ausführung der wartenden Operationen für den NV-Speicher im elektronischen Gerät.
  4. Verfahren nach Anspruch 3, das weiterhin folgende Schritte aufweist: Überspringen von Aktualisierungen für mindestens eine wartende Leseoperation, die auf gültige Daten im mit dem Funktionsfehler assoziierten NV-Speicherblock abzielt.
  5. Verfahren nach Anspruch 3, das weiterhin folgende Schritte aufweist: Markieren der Daten als schadhaft, die mit dem mit dem Funktionsfehler assoziierten NV-Speicherblock assoziiert sind; Ausgeben eines Fehlerstatus an den Benutzer für einen Lesefehler; Ausgeben eines Fehlerstatus an den Benutzer für nachfolgende Leseoperationen der markierten Daten; und Aufheben der Markierung der Daten als schadhaft, wenn diese Daten vom Benutzer neu geschrieben werden.
  6. Verfahren nach Anspruch 5, das weiterhin folgende Schritte aufweist: Zurückhalten der Ausgabe eines Fehlerstatus an den Benutzer, wenn der fehlerhafte Lesezugriff nicht vom Benutzer initiiert wurde.
  7. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass der nichtflüchtige Speicher ein NAND-Speicher ist.
  8. Verfahren nach Anspruch 7, dadurch gekennzeichnet, dass das Indirektionssystem eine Indirektion auf Seitenebene ist.
  9. Verfahren nach Anspruch 1, das weiterhin das Verschieben ungültiger Benutzerdaten umfasst.
  10. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass der Lesefehler im Nichtkorrigieren von NV-Daten mit einem Fehlerkorrekturcode besteht.
  11. Verfahren nach Anspruch 1, bei dem der Lesefehler einen Fehlerkorrekturcode für NV-Datenoperationen darstellt, die eine Reihe von Korrekturen erfolgreich ausführen, die aber einen festgelegten Grenzwert überschreiten.
  12. System, das Folgendes umfasst: eine Steuerung; ein nichtflüchtiges Speichergerät; und Logik für: das Behandeln von Lesefehlern auf einem indirekt adressierten, nichtflüchtigen (NV – Non-Volatile) Blockspeicher in einem elektronischen Gerät, die Folgendes umfasst: Erkennen eines Funktionsfehlers in einem NV-Speicherblock; Umlagern gültiger Benutzerdaten vom mit dem Funktionsfehler assoziierten NV-Speicherblock zu einem einwandfreien Block; Markieren des mit dem Funktionsfehler assoziierten NV-Speicherblocks als schadhaft; und Aktualisieren der Indirektionstabelle.
  13. System nach Anspruch 17, das weiterhin Logik für Folgendes aufweist: Abbrechen der wartenden Operationen für den mit dem Funktionsfehler assoziierten NV-Speicherblock; und Ausgeben eines Fehlerstatus an den Benutzer für jede wartende Operation.
  14. System nach Anspruch 17, das weiterhin Logik für Folgendes aufweist: Verzögern der wartenden Speicheroperationen für den NV-Speicher im elektronischen Gerät; Aktualisieren der wartenden Operationen, um die aktualisierte Indirektionstabelle widerzuspiegeln; und Wiederaufnehmen der Ausführung der wartenden Operationen für den NV-Speicher im elektronischen Gerät.
  15. System nach Anspruch 17, das weiterhin Logik für Folgendes aufweist: Überspringen von Aktualisierungen für mindestens eine wartende Leseoperation, die auf gültige Daten im mit dem Funktionsfehler assoziierten NV-Speicherblock abzielt.
DE102009031125A 2008-06-30 2009-06-30 Nand-Fehlerbehandlung Ceased DE102009031125A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/215,915 2008-06-30
US12/215,915 US20090327837A1 (en) 2008-06-30 2008-06-30 NAND error management

Publications (1)

Publication Number Publication Date
DE102009031125A1 true DE102009031125A1 (de) 2010-04-15

Family

ID=41449081

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102009031125A Ceased DE102009031125A1 (de) 2008-06-30 2009-06-30 Nand-Fehlerbehandlung

Country Status (5)

Country Link
US (1) US20090327837A1 (de)
KR (1) KR101176702B1 (de)
CN (1) CN101673226B (de)
DE (1) DE102009031125A1 (de)
TW (1) TW201011767A (de)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE49818E1 (en) * 2010-05-13 2024-01-30 Kioxia Corporation Information processing method in a multi-level hierarchical memory system
CN103946811B (zh) 2011-09-30 2017-08-11 英特尔公司 用于实现具有不同操作模式的多级存储器分级结构的设备和方法
CN103946813B (zh) 2011-09-30 2017-08-25 英特尔公司 基于使用统计量追踪的远存储器访问信号的生成
US9342453B2 (en) 2011-09-30 2016-05-17 Intel Corporation Memory channel that supports near memory and far memory access
US8687421B2 (en) * 2011-11-21 2014-04-01 Sandisk Technologies Inc. Scrub techniques for use with dynamic read
WO2013095530A1 (en) 2011-12-22 2013-06-27 Intel Corporation Efficient pcms refresh mechanism background
US9418700B2 (en) * 2012-06-29 2016-08-16 Intel Corporation Bad block management mechanism
US20140013031A1 (en) * 2012-07-09 2014-01-09 Yoko Masuo Data storage apparatus, memory control method, and electronic apparatus having a data storage apparatus
US9478271B2 (en) * 2013-03-14 2016-10-25 Seagate Technology Llc Nonvolatile memory data recovery after power failure
KR102137934B1 (ko) 2013-10-02 2020-07-28 삼성전자 주식회사 메모리 컨트롤러 구동방법 및 메모리 컨트롤러를 포함하는 메모리 시스템
CN104199748A (zh) * 2014-08-25 2014-12-10 浪潮电子信息产业股份有限公司 一种基于错误注入测试存储系统容忍坏扇区能力的方法
US9891833B2 (en) * 2015-10-22 2018-02-13 HoneycombData Inc. Eliminating garbage collection in nand flash devices
CN108701488A (zh) * 2015-12-01 2018-10-23 科内克斯实验室公司 用于在逻辑上去除非易失性存储器存储设备中的缺陷页的方法和装置
KR20180017608A (ko) 2016-08-10 2018-02-21 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법
CN108038064B (zh) * 2017-12-20 2021-01-15 北京兆易创新科技股份有限公司 一种PairBlock擦除出错的处理方法及装置
KR20190075557A (ko) * 2017-12-21 2019-07-01 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN110413211B (zh) * 2018-04-28 2023-07-07 伊姆西Ip控股有限责任公司 存储管理方法、电子设备以及计算机可读介质
CN111161781A (zh) * 2018-11-07 2020-05-15 爱思开海力士有限公司 用于处理编程错误的存储器系统及其方法
US10726936B2 (en) 2018-12-20 2020-07-28 Micron Technology, Inc. Bad block management for memory sub-systems
KR20200079851A (ko) * 2018-12-26 2020-07-06 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
CN112230855A (zh) * 2020-10-20 2021-01-15 英韧科技(上海)有限公司 固态硬盘及其读写方法
WO2022204928A1 (en) * 2021-03-30 2022-10-06 Yangtze Memory Technologies Co., Ltd. Memory controller with read error handling

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5680640A (en) * 1995-09-01 1997-10-21 Emc Corporation System for migrating data by selecting a first or second transfer means based on the status of a data element map initialized to a predetermined state
GB9614551D0 (en) * 1996-07-11 1996-09-04 Memory Corp Plc Memory system
US7173852B2 (en) * 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
US20080082736A1 (en) * 2004-03-11 2008-04-03 Chow David Q Managing bad blocks in various flash memory cells for electronic data flash card
CN1716212B (zh) * 2004-06-29 2010-04-28 联想(北京)有限公司 一种灾难恢复系统及方法
US20060156024A1 (en) * 2004-10-29 2006-07-13 Matsushita Electric Industrial Co., Ltd. Systems and methods for disk drive access under changes in environmental parameters
JP2006285600A (ja) * 2005-03-31 2006-10-19 Tokyo Electron Device Ltd 記憶装置、メモリ管理装置、メモリ管理方法及びプログラム
TWI308741B (en) * 2005-06-03 2009-04-11 Quanta Storage Inc A method of defect areas management
US7774643B2 (en) * 2006-01-06 2010-08-10 Dot Hill Systems Corporation Method and apparatus for preventing permanent data loss due to single failure of a fault tolerant array
US7890796B2 (en) * 2006-10-04 2011-02-15 Emc Corporation Automatic media error correction in a file server
US7953919B2 (en) * 2007-12-21 2011-05-31 Spansion Llc Physical block addressing of electronic memory devices

Also Published As

Publication number Publication date
CN101673226B (zh) 2013-08-07
CN101673226A (zh) 2010-03-17
US20090327837A1 (en) 2009-12-31
KR20100003244A (ko) 2010-01-07
TW201011767A (en) 2010-03-16
KR101176702B1 (ko) 2012-08-23

Similar Documents

Publication Publication Date Title
DE102009031125A1 (de) Nand-Fehlerbehandlung
DE102017113439B4 (de) Abbildungstabellen für Speichervorrichtungen
DE112014006118B4 (de) Spekulatives Vorab-Holen von in einem Flash-Speicher gespeicherten Daten
DE112010003650B4 (de) Container-Markierungsschema zum Verringern einer Schreibverstärkung bei Halbleiter-Einheiten
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE112010004969B4 (de) Hybrides Speicherteilsystem und Verfahren zum Verwalten eines solchen
DE112012002615B4 (de) Vorabladen von Datenspuren und Paritätsdaten zur Verwendung zum Auslagern aktualisierter Spuren
DE112020000184T5 (de) In zonen unterteilte namensräume in festkörperlaufwerken
DE102018105427A1 (de) Beibehalten von Daten bei einer Stromabschaltung
DE112010003577T5 (de) Datenverwaltung in Halbleiterspeicher-Einheiten und mehrstufigen Speichersystemen
DE112011103290B4 (de) Intelligente Schreibcacheoperationen für sequenzielle Datenspuren
DE202010017613U1 (de) Datenspeichervorrichtung mit host-gesteuerter Speicherbereinigung
DE112015000378T5 (de) Selektives Rückkopieren für einen auf einem Chipplättchen gepufferten nichtflüchtigen Speicher
DE102018123805A1 (de) Vorgang für verteiltes Programmieren
DE102017104150A1 (de) Abnutzungsausgleich in Speichervorrichtungen
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE112016004527T5 (de) Implementieren eines Hardware-Beschleunigers für das Management eines Speicher-Schreibcachespeichers
DE10348326A1 (de) Permanentspeichervorrichtung, die an eine Kommunikationsverbindung angeschlossen ist
DE102005031525A1 (de) Verfahren und System zur Steuerung eines Flashspeichers und Speichersystem
DE112008000180T5 (de) Verfahren und System für die Umsetzung eines Fast-Wakeup eines Flashspeichersystems
DE102013020269A1 (de) Umordnen des Zurückschickens für einen Host-Lesebefehl basierend auf der Zeitschätzung des Abschlusses eines Flash-Lesebefehls
DE112006001636T5 (de) Technik zum Beschreiben eines nicht-flüchtigen Speichers
DE102005063250A1 (de) Datenspeicherungssteuersystem, Speicher- und Rechnersystem und Betriebsverfahren
DE102012219098A1 (de) Verwaltung von Teildatensegmenten in Systemen mit doppeltem Cachespeicher
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final

Effective date: 20130625