DE112014005570T5 - Deaktivieren von Seiten in einem Nand-Flash-Speicher-System - Google Patents

Deaktivieren von Seiten in einem Nand-Flash-Speicher-System Download PDF

Info

Publication number
DE112014005570T5
DE112014005570T5 DE112014005570.0T DE112014005570T DE112014005570T5 DE 112014005570 T5 DE112014005570 T5 DE 112014005570T5 DE 112014005570 T DE112014005570 T DE 112014005570T DE 112014005570 T5 DE112014005570 T5 DE 112014005570T5
Authority
DE
Germany
Prior art keywords
page
memory
data
pages
block
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.)
Pending
Application number
DE112014005570.0T
Other languages
English (en)
Inventor
Charles John Camp
Ioannis Koltsidas
Roman A. Pletka
Andrew Dale Walls
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112014005570T5 publication Critical patent/DE112014005570T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • 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/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1059Parity-single bit-RAID5, i.e. RAID 5 implementations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/109Sector level checksum or ECC, i.e. sector or stripe level checksum or ECC in addition to the RAID parity calculation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Bei einem Datenspeichersystem, das ein Array aus nichtflüchtigen Direktzugriffsspeichern (NVRAM-Array) enthält, handelt es sich bei einer Seite um eine kleinste Einheit des NVRAM-Array, auf die durch Lese- und Schreiboperationen zugegriffen werden kann, und bei einem Speicherblock, der mehrere Seiten enthält, handelt es sich um eine kleinste Einheit des NVRAM-Array, die gelöscht werden kann. Daten werden in dem NVRAM-Array in Seiten-Stripes gespeichert, die über mehrere Speicherblöcke verteilt sind. In Reaktion auf Erkennen eines Fehlers in einer bestimmten Seite eines bestimmten Blocks des NVRAM-Array wird lediglich die bestimmte Seite des bestimmten Blocks deaktiviert, so dass wenigstens zwei der mehreren Speicherblöcke, über die ein bestimmter Seiten-Stripe der Seiten-Stripes verteilt ist, unterschiedliche Anzahlen von aktiven (nichtdeaktivierten) Seiten enthalten.

Description

  • Technischer Bereich
  • Die vorliegende Erfindung bezieht sich auf Verarbeiten und Speichern von Daten und insbesondere auf Verbessern der Fähigkeit eines Datenverarbeitungssystems, ein Deaktivieren von Seiten effizient auszuführen.
  • Technischer Hintergrund
  • Bei bestimmten Datenspeichersystemen werden Daten in mehreren Speichereinheiten gespeichert. Bei einigen dieser Systeme werden beispielsweise mehrere einzelne Festplatten oder Speicherchips zum Speichern von Daten verwendet, und die in einer oder in mehreren Speichereinheiten gespeicherten Datenwerden in anderen Speichereinheiten gespeicherten Daten so zugeordnet, dass Datenfehler in einer oder in mehreren Speichereinheiten erkannt und möglicherweise korrigiert werden können. Ein derartiger Ansatz besteht darin, eine vorgegebene Menge von Daten über mehrere Speicherpositionen hinweg zu speichern, wobei die Menge von Daten in Abschnitte gleicher Größe unterteilt wird, wobei die einzelnen Abschnitte gelegentlich als „Datenseiten” bezeichnet werden, und die Datenseiten dann an mehreren Speicherpositionen gespeichert werden, so dass eine Datenseite in jeder von mehreren Speichereinheiten gespeichert ist. In Verbindung mit diesem Ansatz kann eine weitere Speichereinheit zum Speichern einer Seite von Datensicherungsinformationen verwendet werden, wobei eine vorgegebene Seite von Datensicherungsinformationen einer spezifischen Gruppe von Datenseiten zugehörig ist, die in den mehreren Speicherpositionen gespeichert sind. In einigen Fällen wird die Gruppe von Speicherseiten an den mehreren Positionen, die verwendet wird, um zugehörige Daten zu speichern, als „Daten-Stripe” oder „Seiten-Stripe” bezeichnet.
  • Zusätzlich zu den Datensicherungsinformationen für jeden Daten-Stripe können auch einzelne Datenseiten durch einen Fehler-Korrekturcode (ECC) geschützt werden, der verwendet werden kann, um Fehler zu erkennen und um eine bestimmte Anzahl von Fehlern auf der Seite zu korrigieren. Ein ECC-Schutz wird bei einem bestimmten Codewort bereitgestellt, dessen Größe häufig als Codewort-(oder Block-)Länge bezeichnet wird. Es können auf einer Datenseite mehrere Codewörter vorhanden sein. Bei einer bestimmten Anzahl von Fehlern oder beim Auftreten von Fehlern kann das Datenspeichersystem die Verwendung von Abschnitten des Datenspeichers, die die Fehlerquelle darstellen, verbieten (bzw. diese Abschnitte deaktivieren). Bei Datenspeichersystemen, die NAND-Flash-Speicher verwenden, handelt es sich bei einer Datenseite um die kleinste Speichereinheit, auf die durch Lese- und Schreiboperationen zugegriffen werden kann, und bei einem Block (oder Löschblock), der viele Seiten enthält, handelt es sich um die kleinste Speichereinheit, die gelöscht werden kann. Es ist demzufolge bei Datenspeichersystemen üblich, in Reaktion auf einen ECC-Fehler bei lediglich einem Codewort auf einer einzelnen Seite in dem Löschblock einen vollständigen Löschblock zu deaktivieren.
  • Kurzdarstellung der Erfindung
  • Technisches Problem
  • Bei der vorliegenden Offenbarung wird erkannt, dass diese herkömmliche Strategie zum Deaktivieren fehlerhafter Blöcke völlig überzogen ist und die Lebensdauer einer Einheit mit NAND-Flash-Speichern unnötigerweise verkürzen kann, da die Einheit mit NAND-Flash-Speichern selbst deaktiviert wird, wenn eine Schwellenwert ihrer Löschblöcke deaktiviert wird.
  • Problemlösung
  • Bei einem Datenspeichersystem, das ein Array aus nichtflüchtigen Direktzugriffsspeichern enthält (NVRAM) (z. B. ein NAND-Flash-Speicher-Array), handelt es sich bei einer Seite um die kleinste Einheit des NVRAM-Array, auf die durch Lese- und Schreiboperationen zugegriffen werden kann, und bei einem Speicherblock, der mehreren Seiten enthält, handelt es sich um die kleinste NVRAM-Einheit, die gelöscht werden kann. Daten werden in dem NVRAM-Array in Seiten-Stripes gespeichert, die über mehrere Speicherblöcke verteilt sind. In Reaktion auf Erkennen eines nichtkorrigierbaren Fehlers in einem bestimmten Codewort einer bestimmten Seite eines bestimmten Blocks des NVRAM-Array, wird lediglich die bestimmte Seite des bestimmten Blocks deaktiviert, so dass lediglich bei wenigstens zwei der mehreren Speicherblöcke, über die ein bestimmter der Seiten-Stripes verteilt ist, unterschiedliche Anzahlen von aktiven (nichtdeaktivierten) Seiten enthält.
  • Kurzbeschreibung von Zeichnungen
  • 1 ist ein Übersichts-Blockschaltplan einer Datenverarbeitungsumgebung gemäß einer Ausführungsform.
  • 2 veranschaulicht eine beispielhafte Anordnung eines physischen Speichers in einem NAND-Flash-Speicher-Array gemäß der vorliegenden Offenbarung.
  • 3 veranschaulicht eine beispielhafte Anordnung eines physischen Speichers in einem NAND-Flash-Speicher-Array gemäß der vorliegenden Offenbarung.
  • 4 veranschaulicht eine beispielhafte Anordnung eines physischen Speichers in einem NAND-Flash-Speicher-Array gemäß der vorliegenden Offenbarung.
  • 5 veranschaulicht eine beispielhafte Anordnung eines physischen Speichers in einem NAND-Flash-Speicher-Array gemäß der vorliegenden Offenbarung.
  • 6 zeigt eine beispielhafte Umsetzung von Seiten-Stripes gemäß der vorliegenden Offenbarung.
  • 7 veranschaulicht eine beispielhafte Datenseite gemäß der vorliegenden Offenbarung.
  • 8 zeigt eine beispielhafte Datenschutzseite gemäß der vorliegenden Offenbarung.
  • 9 ist ein logischer Übersichts-Ablaufplan einer beispielhaften Ausführungsform eines Daten-Leseprozesses, bei dem ein physischer Speicher in einem NAND-Flash-Speicher-Array seitenweise und nicht blockweise deaktiviert wird.
  • 10 ist ein logischer Übersichts-Ablaufplan einer beispielhaften Ausführungsform eines Daten-Schreibprozesses, bei dem Daten in ein NAND-Flash-Speicher-Array in einem Seiten-Stripe mit variabler Länge über Datenblöcke mit variabler Größe geschrieben werden.
  • 11 veranschaulicht einen beispielhaften Seiten-Stripe in einem NAND-Flash-Speicher-Array, bei dem ein physischer Speicher seitenweise deaktiviert wird.
  • Beschreibung von Ausführungsformen
  • Einem Fachmann ist klar, dass Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt verkörpert werden können. Dementsprechend können Aspekte der vorliegenden Erfindung die Form einer reinen Hardware-Ausführungsform, einer reinen Software-Ausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform, die Software- und Hardware-Aspekte kombiniert, annehmen, die hier alle allgemein als ”Schaltung”, ”Modul” oder ”System” bezeichnet werden können. Des Weiteren können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien verkörpert wird, die computerlesbaren Programmcode aufweisen, der darin ausgeführt wird.
  • Jede Kombination aus einem oder mehreren computerlesbaren Medien kann genutzt werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Ein computerlesbares Speichermedium kann z. B. ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, -vorrichtung oder -einheit oder jede geeignete Kombination des Vorhergehenden sein, ist jedoch nicht darauf beschränkt. Zu spezifischeren Beispielen (eine nicht erschöpfende Liste) des computerlesbaren Speichermediums würde Folgendes gehören: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Festwertspeicher (ROM), ein löschbarer programmierbarer Festwertspeicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compactdisk-Festwertspeicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede geeignete Kombination des Vorhergehenden. Im Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes materielle Medium sein, das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung enthalten oder speichern kann.
  • Ein computerlesbares Signalmedium kann ein sich ausbreitendes Datensignal mit computerlesbarem Programmcode enthalten, der darin z. B. im Basisband oder als Teil einer Trägerwelle verkörpert wird. Ein derartiges sich ausbreitendes Signal kann jede von einer Vielfalt von Formen annehmen, zu denen elektromagnetische, optische Formen oder jede geeignete Kombination hiervon gehören, jedoch nicht darauf beschränkt sind. Ein computerlesbares Signalmedium kann jedes computerlesbare Medium sein, das kein computerlesbares Speichermedium ist und ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung übertragen, verbreiten oder transportieren kann.
  • Programmcode, der auf einem computerlesbaren Medium verkörpert ist, kann unter Verwendung jedes geeigneten Mediums übertragen werden, darunter drahtlose, leitungsgestützte, Lichtwellenleiterkabel-, Hochfrequenz-(HF-)Medien usw. oder jede geeignete Kombination aus dem Vorhergehenden, ohne darauf beschränkt zu sein.
  • Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in jeder Kombination aus einer oder mehreren Programmiersprachen geschrieben sein, darunter eine objektorientierte Programmiersprache wie Java, Smalltalk, C++ oder dergleichen und herkömmliche prozedurale Programmiersprachen wie etwa die Programmiersprache ”C” oder ähnliche Programmiersprachen. Der Programmcode kann nur auf dem Computer eines Benutzers, teilweise auf dem Computer eines Benutzers, als ein eigenständiges Software-Paket, teilweise auf dem Computer eines Benutzers und teilweise auf einem fernen Computer oder nur auf dem fernen Computer oder Server ausgeführt werden. In dem zuletzt genannten Szenario kann der ferne Computer mit dem Computer des Benutzers durch jeden Netzwerktyp verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann zu einem externen Computer (z. B. über das Internet unter Verwendung eines Internet-Dienstanbieters) hergestellt werden.
  • Aspekte der vorliegenden Erfindung werden hier unter Bezugnahme auf Ablaufplan-Darstellungen und/oder Blockschaltbilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es ist klar, dass jeder Block der Ablaufplan-Darstellungen und/oder Blockschaltbilder und Kombinationen von Blöcken in den Ablaufplan-Darstellungen und/oder Blockschaltbildern durch Computerprogrammbefehle umgesetzt werden können. Diese Computerprogrammbefehle können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu bilden, so dass Befehle, die über den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zum Umsetzen der Funktionen/Wirkungen, die in dem Block oder den Blöcken des Ablaufplans und/oder Blockschaltbilds spezifiziert sind, erzeugen.
  • Diese Computerprogrammbefehle können außerdem in einem computerlesbaren Medium gespeichert sein, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweisen kann, in einer bestimmten Weise zu funktionieren, so dass die in dem computerlesbaren Medium gespeicherten Befehle einen Herstellungsgegenstand produzieren, der Befehle enthält, die die Funktion/Wirkung umsetzen, die in dem Block/den Blöcken des Ablaufplans und/oder Blockschaltbilds spezifiziert sind.
  • Computerprogrammbefehle können außerdem in einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder andere Einheiten geladen werden, um eine Reihe von Operationsschritten zu bewirken, die auf dem Computer, der anderen programmierbaren Datenverarbeitungsvorrichtung oder anderen Einheiten ausgeführt werden sollen, um einen durch einen Computer umgesetzten Prozess zu erzeugen, so dass die Befehle, die auf dem Computer oder der anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zum Umsetzen der Funktionen/Wirkungen, die in dem Block oder Blöcken des Ablaufplans und/oder Blockschaltbilds spezifiziert sind, bereitstellen.
  • In den Figuren und insbesondere in 1 ist ein Übersichts-Schaltplan einer beispielhaften Datenverarbeitungsumgebung 100 dargestellt, das ein Datenspeichersystem enthält, bei dem ein NAND-Flash-Speicher wie nachfolgend beschrieben seitenweise und nicht blockweise deaktiviert wird. Wie gezeigt enthält die Datenverarbeitungsumgebung 100 wenigstens ein Prozessorsystem 102 mit einem oder mehreren Prozessoren 104, die Befehle und Daten verarbeiten. Das Prozessorsystem 102 kann zusätzlich einen Lokalspeicher 106 (z. B. einen dynamischen Direktzugriffsspeicher (DRAM) oder Plattenspeicher) enthalten, der Programmcode, Operanden und/oder Ausführungsergebnisse der Verarbeitung speichern kann, die durch den bzw. die Prozessoren 104 ausgeführt wird. Bei verschiedenen Ausführungsformen kann es sich bei dem Prozessorsystem 102 beispielsweise um eine mobile Datenverarbeitungseinheit (wie z. B. ein Smartphone oder ein Tablet-Computer), ein Laptop- oder ein Desktop-Personal-Computersystem, ein Server-Computersystem (wie beispielsweise ein System der POWER-Serie, das von der International Business Machine Corporation verfügbar ist) oder ein Mainframe-Computersystem handeln. Es kann sich außerdem um ein eingebettetes Prozessorsystem handeln, bei dem verschiedene Prozessoren verwendet werden wie beispielsweise ARM, PowerPC, Intel X86 oder jeder andere Prozessor in Kombination mit Pufferspeichern (memory caches), Speicher-Steuereinheiten, Lokalspeichern, EIA-Bus-Hubs usw.
  • Das Prozessorsystem 102 enthält des Weiteren einen Eingabe/Ausgabe-(E/A-)Adapter 108, der direkt (d. h. ohne jede dazwischenliegende Einheit) oder indirekt (d. h. über wenigstens eine dazwischenliegende Einheit) mit einem Datenspeichersystem 120 über einen E/A-Kanal 110 verbunden ist. Bei verschiedenen Ausführungsformen kann bei dem E/A-Kanal jedes beliebige oder eine Kombination aus bekannten oder zukünftig zu entwickelnden Datenübertragungsprotokollen verwendet werden, darunter beispielsweise Fibre Channel (FC), FC über Ethernet (FCoE), Internet Small Computer System Interface (iSCSI), Transport Control Protocol/Internet Protocol (TCP/IP), Peripheral Component Interconnect Express (PCIe) usw. Zu den E/A-Operationen (IOPs), die über den E/A-Kanal 110 übertragen werden, gehören Lese-IOPs, durch die das Prozessorsystem 102 Daten von dem Datenspeichersystem 120 anfordert, und Schreib-IOPs, durch die das Prozessorsystem 102 das Speichern von Daten in dem Datenspeichersystem 120 anfordert.
  • Bei der dargestellten Ausführungsform enthält das Datenspeichersystem 120 eine Schnittstelle 122, durch die das Datenspeichersystem 120 IOPs 102 über den E/A-Kanal 110 empfängt und auf diese reagiert. Die Schnittstelle 122 ist mit einer Flash-Steuereinheit 124 verbunden (z. B. eine anwendungsspezifische integrierte Schaltung (ASIC) oder ein vor Ort programmierbares Gate-Array (FPGA)), die einen zugehörigen Speicher 126 der Flash-Steuereinheit enthält (z. B. ein dynamischer Direktzugriffsspeicher (DRAM)). Die Flash-Steuereinheit 124 ist außerdem mit einer CPU 128, die einen zugehörigen CPU-Speicher 130 (z. B. DRAM) enthält, und des Weiteren mit einem NAND-Flash-Speicher-Array 140 verbunden. Bei Ausführungsformen, bei denen die Flash-Steuereinheit 124 mit einem FPGA umgesetzt ist, kann die CPU 128 die Flash-Steuereinheit 124 während des Hochfahrens des Datenspeichersystems 120 programmieren und konfigurieren. Nach dem Hochfahren empfängt die Flash-Steuereinheit 124 beim allgemeinen Betrieb Lese- und Schreib-IOPs über den E/A-Kanal 110 und die Schnittstelle 122, um Daten zu lesen, die in dem NAND-Flash-Speicher-Array 140 gespeichert sind, und/oder Daten in dem NAND-Flash-Speicher-Array 140 zu speichern. Die Flash-Steuereinheit 124 bedient diese IOPs, indem beispielsweise auf das NAND-Flash-Speicher-Array 140 zugegriffen wird, um die angeforderten Daten von dem NAND-Flash-Speicher-Array 140 zu lesen oder auf dieses zu schreiben, oder indem auf einen (nicht dargestellten) Pufferspeicher zugegriffen wird, der dem NAND-Flash-Speicher-Array 140 zugehörig ist.
  • Die Flash-Steuereinheit 124 setzt eine Flash-Übersetzungsschicht (FTL) um, die eine Übersetzung von logischer zu physischer Adresse bereitstellt, um ein Zugreifen auf spezielle Speicherpositionen an dem NAND-Flash-Speicher-Array 140 zu ermöglichen. Im Allgemeinen enthält eine IOP, die durch die Flash-Steuereinheit 124 von einer Host-Einheit wie beispielsweise ein Prozessorsystem 102 empfangen wird, die logische Blockadresse (LBA), an der sich die Daten befinden, auf die zugegriffen werden soll (Lesen oder Schreiben), und sie enthält, wenn es sich um eine Schreib-IOP handelt, die Schreib-Daten, die in dem Datenspeichersystem 120 gespeichert werden sollen. Die IOP kann außerdem den Umfang (die Größe) der Daten spezifizieren, auf die zugegriffen werden soll. In Abhängigkeit von dem Protokoll und von Merkmalen, die durch das Datenspeichersystem 120 unterstützt werden, können außerdem weitere Informationen übertragen werden. Wie oben erwähnt ist der NAND-Flash-Speicher wie beispielsweise derjenige, der im NAND-Flash-Speicher-Array 140 verwendet wird, durch seinen Aufbau derart beschränkt, dass die kleinste Dateneinheit, auf die durch eine Lese- oder Schreib-IOP zugegriffen werden kann, auf die Größe einer einzelnen Flash-Speicher-Seite z. B. 16 Kilobyte (KB) festgelegt ist. Die LBA, die durch die Host-Einheit bereitgestellt wird, entspricht somit einer Seite in einem logischen Adressraum. Die Flash-Übersetzungsschicht übersetzt diese LBA in eine physische Adresse, die einer entsprechenden physischen Position im NAND-Flash-Speicher-Array 140 zugewiesen ist. Die Flash-Steuereinheit 124 kann eine Adressenübersetzung ausführen und/oder Zuordnungen zwischen logischen und physischen Adressen in einer Datenstruktur für logische/physische Übersetzung wie beispielsweise eine Übersetzungstabelle 150 speichern, die im Speicher 126 der Flash-Steuereinheit bequem gespeichert werden kann.
  • Bei einigen Ausführungsformen sind die Komponenten des Datenspeichersystems 120 auf derselben gedruckten Leiterplatte eingesetzt, beispielsweise unter Verwendung von Techniken wie Oberflächenmontage, Durchkontaktierungen, Verwendung von Sockeln und Sockelhalterungen und/oder anderen Montagetechniken. Bei solchen Ausführungsformen können sich bei dem Datenspeichersystem 120 auf der Leiterplatte optional ein oder mehrere Kondensatoren 132 befinden, die bei einem Netzausfall Strom an das Datenspeichersystem 120 liefern. Das Datenspeichersystem kann demzufolge als ein nichtflüchtiges Speichersystem dienen, auch wenn es verschiedene flüchtige Komponenten nutzt.
  • Das NAND-Flash-Speicher-Array 140 kann in verschiedenen Ausführungsformen viele Formen annehmen. In den 2 bis 5 ist eine beispielhafte Anordnung eines physischen Speichers mit einem NAND-Flash-Speicher-Array 140 gemäß der vorliegenden Offenbarung dargestellt.
  • Wie in 2 gezeigt kann das NAND-Flash-Speicher-Array 140 aus zweiunddreißig (32) einzeln adressierbaren Speichereinheiten des NAND-Flash-Speichers gebildet sein. Bei dem dargestellten Beispiel besitzt jede der Speichereinheiten M0a bis M15b des Flash-Speichers die Form eines auf einer Leiterplatte montierten Flash-Speicher-Moduls, beispielsweise ein Single-Level-Cell-(SLC-) oder ein Multi-Level-Cell-(MLC-)NAND-Flash-Speicher-Modul. Die zweiunddreißig NAND-Flash-Speicher-Module sind in sechzehn Zweier-Gruppen (M0a, Mob) bis (M15a, M15b) angeordnet. Für Zwecke des physischen Adressierungsschemas bildet jede Gruppe aus zwei Modulen eine „Spur (Laue)”, die gelegentlich auch als ein „Kanal” bezeichnet wird, so dass das NAND-Flash-Speicher-Array 140 sechzehn Kanäle oder Spuren (Lane0 bis Lane15) enthält.
  • Bei einer bevorzugten Ausführungsform weist jede der einzelnen Spuren einen entsprechenden zugehörigen Bus auf, der sie mit der Flash-Steuereinheit 124 verbindet. Somit kann die Flash-Steuereinheit 124, indem sie ihre Datenübertragungen zu einem der speziellen Datenübertragungsbusse richtet, ihre Datenübertragungen auf eine der Spuren der Speichermodule richten. Da jeder Datenübertragungsbus für eine vorgegebene Spur von den Datenübertragungsbussen für die anderen Spuren unabhängig ist, kann die Flash-Steuereinheit 124 Befehle ausgeben und Daten über die verschiedenen Datenübertragungsbusse gleichzeitig senden oder empfangen, wodurch es der Flash-Steuereinheit 124 möglich ist, auf die Speichermodule, die den einzelnen Spuren entsprechen, gleichzeitig oder nahezu gleichzeitig zuzugreifen.
  • In 3 ist eine beispielhafte Ausführungsform eines Flash-Speichermoduls 300 dargestellt, die genutzt werden kann, um die Flash-Speichermodule M0a bis M15b von 2 umzusetzen. Wie in 3 gezeigt werden die physischen Speicherpositionen, die durch das Flash-Speichermodul 300 bereitgestellt werden, weiter in physische Positionen unterteilt, die durch Chip-Freigabe-Signale (Chip Enables, CEs) angesprochen und/oder gekennzeichnet werden können. In dem Beispiel von 3 wird der physische Speicher jedes Flash-Speicher-Chips 300 in vier Bereiche für Chip-Freigabe-Signale mit einer jeweiligen CE-Leitung (CE0, CE1, CE2 und CE3), unterteilt, die durch die Flash-Speichersteuereinheit 124 gültig geschaltet wird, um einen Zugriff auf oder von den physischen Speicherpositionen in dem entsprechenden CE-Bereich zu ermöglichen. Jeder CE-Bereich ist wiederum in mehrere Halbleiter-Chips (dice) unterteilt (Die0 und Die1), von denen jeder zwei Ebenen aufweist (Plane0 und Plane1). Jede Ebene stellt eine Sammlung von Blöcken (nachfolgend beschrieben) dar, die aufgrund des physischen Layout der Flash-Speicher-Chips physisch miteinander verbunden sind und die für ein Ausführen verschiedener Operationen wie beispielsweise Lese- und Schreiboperationen eine gemeinsame Schaltungsanordnung (z. B. E/A-Puffer) nutzen.
  • Wie des Weiteren in den 4 und 5 gezeigt enthält eine beispielhafte Ebene 400, die genutzt werden kann, um jede der Ebenen in dem Flash-Speichermodul 300 von 3 umzusetzen, 2048 Blöcke des physischen Speichers. Bei einem Block 500 handelt es sich im Allgemeinen um eine Sammlung physischer Seiten, die üblicherweise physisch miteinander verbunden sind. Diese Verbindung ist derart, dass ein Block so definiert ist, dass er die kleinste Einheit physischer Speicherpositionen darstellt, die in dem NAND-Flash-Speicher-Array 140 gelöscht werden kann. In der Ausführungsform von 5 enthält jeder Block 500 256 physische Seiten, wobei eine physische Seite als die kleinste einzeln adressierbare Dateneinheit für Lese- und Schreibzugriffe definiert ist Bei dem beispielhaften System enthält jede physische Seite von Daten eine gemeinsame Kapazität (z. B. 16 KB) als Datenspeicher plus einen zusätzlichen Speicher für Metadaten, der nachfolgend genauer beschrieben wird. Somit werden Daten in das NAND-Flash-Speicher-Array 140 seitenweise eingeschrieben oder ausgelesen, jedoch blockweise gelöscht. Wie des Weiteren in 5 gezeigt enthält jeder Block 500 vorzugsweise Seitenstatus-Informationen (PSI) 502, die den Status jeder physischen Seite in diesem Block 500 als deaktiviert (d. h. dem Gebrauch entzogen) oder nichtdeaktiviert (d. h. aktiv oder noch im Gebrauch) angibt. Bei verschiedenen Umsetzungen können PSI 502 in einer einzelnen Datenstruktur (z. B. ein Vektor oder eine Tabelle) im Block 500 gesammelt werden, im Block 500 verteilt sein (z. B. als ein oder mehrere Bits von Metadaten, die an jede physische Seite angefügt werden) oder an anderer Stelle in dem Datenspeichersystem 120 vorgehalten werden (z. B. in einer Datenstruktur im Speicher 126 der Flash-Steuereinheit).
  • Wie oben angegeben erlaubt das Datenspeichersystem 120 nicht allgemein, dass externe Einheiten die physischen Speicherpositionen in der NAND-Flash-Speicher-Array 140 direkt adressieren und/oder auf diese zugreifen. Das Datenspeichersystem 120 ist stattdessen so eingerichtet, dass es einen einzigen durchgehenden logischen Adressraum für die externen Einheiten darstellt, wodurch zugelassen wird, dass Host-Einheiten Daten von LBAs in dem logischen Adressraum lesen und auf diese schreiben, während ermöglicht wird, dass die Flash-Steuereinheit 124 und die CPU 128 steuern, wo sich die Daten, die den verschiedenen LBAs zugehörig sind, in den physischen Speicherpositionen, die das NAND-Flash-Speicher-Array 140 aufweist, tatsächlich befinden. Auf diese Weise können Leistungsfähigkeit und Langlebigkeit des NAND-Flash-Speicher-Array 140 intelligent verwaltet und optimiert werden.
  • Wenn in dem Datenspeichersystem 120 Schreibvorgänge auftreten, ist es für die Flash-Steuereinheit 124 und die CPU 128 erforderlich, die Daten, die in einer der physischen Seiten von einem der Löschblöcke in der NAND-Flash-Speicher-Array 140 gespeichert sind, ungültig zu machen. Die neuen Daten werden dann mit Daten, die geschrieben werden, vereinigt und schließlich an anderen Positionen im NAND-Flash-Speicher-Array 140 gespeichert. Es kann dann erkannt werden, dass Seiten oder Abschnitte von Seiten ungültig gemacht werden, und deswegen werden Abschnitte des NAND-Flash-Speicher-Array 140 ungenutzt. Die Flash-Steuereinheit 124 und die CPU 128 müssen schließlich diesen Raum durch einen Prozess, der als Speicherbereinigung bezeichnet wird, zurückgewinnen. Bestimmte Löschblöcke werden ausgewählt auf der Grundlage einer Anzahl von Faktoren, z. B. welcher Anteil der Daten in den Löschblöcken ungültig ist. Gültige Daten werden gelesen und zusammen mit neuen Schreibvorgängen von dem Host in neue Löschblöcke geschrieben.
  • Da die Flash-Übersetzungsschicht, die durch das Datenspeichersystem 120 umgesetzt wird, den logischen Adressraum, der für Host-Einheiten zur Verfügung gestellt wird, von dem physischen Speicher in dem NAND-Flash-Speicher-Array 140 trennt, muss die Größe des NAND-Flash-Speicher-Array 140 nicht gleich der Größe des logischen Adressraums sein, der Host-Einheiten angeboten wird. Bei den meisten Ausführungsformen ist es nützlich, einen logischen Adressraum anzubieten, der kleiner ist als der insgesamt verfügbare physische Speicher (d. h. ein Over-Provisioning (Bereitstellen von Reservesektoren) des NAND-Flash-Speicher-Array 140). Das Over-Provisioning stellt auf diese Weise sicher, dass physische Speicher-Ressourcen zur Verfügung stehen, wenn der logische Adressraum vollständig genutzt ist, selbst beim Vorhandensein einer bestimmten Menge ungültiger Daten, wie oben beschrieben. Zusätzlich zu ungültigen Daten, die noch nicht zurückgewonnen wurden, kann der durch Over-Provisioning bereitgestellte Raum verwendet werden, um sicherzustellen, dass ausreichend logischer Raum vorhanden ist, selbst wenn Speicherfehler vorhanden sind und der Speicher-Overhead die Verwendung von Datenschutzschemen wie beispielsweise Fehlerkorrekturcode (FCC), zyklische Redundanz-Prüfung (CRC) und Parität nach sich zieht.
  • Bei einer bevorzugten Ausführungsform werden Daten üblicherweise in Gruppen aus zugehörigen physischen Seiten des NAND-Flash-Speicher-Array 140 geschrieben, die hier als „Seiten-Stripes” bezeichnet werden. Zwar kann die Länge der verschiedenen Seiten-Stripes variieren, die im NAND-Flash-Speicher-Array 140 gespeichert sind, und das ist vorzugsweise der Fall, bei einer Ausführungsform enthält jeder Seiten-Stripe jedoch zwei bis fünfzehn Datenseiten von Schreibdaten (die üblicherweise durch eine Host-Einheit bereitgestellt werden) und eine zusätzliche Seite (eine „Datenschutzseite”), die verwendet wird, um Datensicherungsinformationen für die Schreibdaten zu speichern. 6 veranschaulicht einen beispielhaften Seiten-Stripe 600, der N Datenseiten (d. h. Dpage00 bis DpageN – 1) und eine Datenschutzseite (d. h. PpageN) enthält.
  • 7 veranschaulicht ein beispielhaftes Format jeder Datenseite in dem Seiten-Stripe 700. Bei diesem Beispiel enthält eine Datenseite 700 ein 16-KB-Datenfeld 702 sowie zusätzliche Felder für Metadaten, die die Datenseite beschreiben. Bei dem dargestellten Beispiel enthalten diese Metadaten-Felder ein LBA-Feld 704, das die LBA der Datenseite 700 enthält, ein CRC-Feld 706, das den CRC-Wert enthält, der für die Kombination aus Datenfeld 702 und LBA-Feld 704 berechnet wurde, und ein FCC-Feld 708, das einen ECC-Wert enthält, der in dem dargestellten Beispiel aus einer Kombination der Inhalte des Datenfelds 702, des LBA-Felds 704 und des CRC-Felds 706 berechnet wurde.
  • 8 zeigt ein beispielhaftes Format der Datenschutzseite des Seiten-Stripe 800. Bei dem gezeigten Beispiel enthält die Datenschutzseite 800 ein Daten-XOR-Feld 802, das die bitweise Exklusiv-Oder-(XOR-)Verknüpfung der Datenfelder 702 der Datenseiten 700 im Daten-Stripe 600 enthält. Die Datenschutzseite 800 enthält des Weiteren ein LBA-XOR-Feld 804, das die bitweise XOR-Verknüpfung der LBA-Felder 704 der Datenseiten 700 im Daten-Stripe 600 enthält. Die Datenschutzseite 800 enthält schließlich ein CRC-Feld 806 und ein ECC-Feld 808, die einen CRC-Wert bzw. einen ECC-Wert für die Datenschutzseite 800 speichern. Ein derartiges Schutzschema wird gewöhnlich als RAID5 bezeichnet, da sich das Paritätsfeld nicht immer auf einer bestimmten Flash-Ebene befindet. Es sollte jedoch klar sein, dass alternative Datenschutzschemen wie beispielsweise Reed-Solomon verwendet werden können.
  • Die oben beschriebenen Formate für Datenseiten und Datenschutzseiten schützen Daten, die in einem Seiten-Stripe gespeichert sind, unter Verwendung mehrerer Schutzmechanismen. Zunächst ermöglicht die Verwendung der ECC-Bits die Korrektur einer bestimmten Anzahl von Bitfehlern in der Flash-Seite. In Abhängigkeit von dem verwendeten ECC-Verfahren können möglicherweise hunderte Bits oder sogar tausende Bits in einer NAND-Flash-Seite korrigiert werden. Nachdem eine ECC-Prüfung und Korrektur ausgeführt wurde, wird das korrigierte CRC-Feld verwendet, um die korrigierten Daten zu validieren. Bei gemeinsamer Verwendung ermöglichen diese beiden Mechanismen ein Korrigieren von verhältnismäßig gutartigen Fehlern und ein Erkennen von ernsthafteren Fehlern, wobei lediglich lokale seiteninterne Informationen verwendet werden. Sollte ein nichtkorrigierbarer Fehler auf einer Datenseite auftreten, beispielsweise infolge eines Fehlers der physischen Seite, die zum Speichern der Datenseite genutzt wird, können die Inhalte des Datenfelds und des LBA-Felds der fehlerhaften Datenseite aus den anderen Datenseiten und der Datenschutzseite für den Seiten-Stripe rekonstruiert werden.
  • Zwar werden die physischen Speicherpositionen, an denen sich die Datenseiten und die Datenschutzseite befinden, in einem NAND-Flash-Speicher-Array 140 variieren, bei einer Ausführungsform werden jedoch die Datenseiten und die Datenschutzseite, die einen vorgegebenen Daten-Stripe aufweisen, vorzugsweise an physischen Speicherpositionen gespeichert, die zum Optimieren der Gesamtfunktion des Datenspeichersystems 120 ausgewählt werden. Beispielsweise werden bei einigen Ausführungsformen die Datenseiten und die Datenschutzseite, die einen Daten-Stripe aufweisen, so gespeichert, dass unterschiedliche physisch Spuren genutzt werden, um jede der Datenseiten und die Datenschutzseite zu speichern. Derartige Ausführungsformen unterstützen einen effizienten Zugriff auf einen Daten-Stripe, da die Flash-Steuereinheit 124 auf alle Seiten von Daten, die den Daten-Stripe aufweisen, gleichzeitig oder nahezu gleichzeitig zugreifen kann. Es sollte erwähnt werden, dass ein Zuweisen von Seiten zu Spuren nicht sequenziell erfolgen muss (d. h., Datenseiten können in jeder Spur in beliebiger Reihenfolge gespeichert werden), und sofern es sich bei einem Seiten-Stripe nicht um einen Seiten-Stripe mit voller Länge handelt (der beispielsweise fünfzehn Datenseiten und eine Datenschutzseite enthält), müssen die zum Speichern des Seiten-Stripe genutzten Spuren nicht benachbart sein.
  • Nachdem der allgemeine physische Aufbau des Datenspeichersystems 120 und Aspekte beschrieben wurden, wie Daten in der Form von Daten-Stripes in dem NAND-Flash-Speicher-Array 140 adressiert und gespeichert werden, werden nun bestimmte Funktionsaspekte des Datenspeichersystems 120 beschrieben, darunter Aspekte, die ein Lesen und Schreiben von Daten von dem NAND-Flash-Speicher-Array 140 bzw. auf dieses betreffen.
  • In 9 ist ein logischer Übersichts-Ablaufplan eines beispielhaften Verfahrens zum Ausführen einer Leseoperation im Datenspeichersystem 120 dargestellt, bei dem ein physischer Speicher seitenweise deaktiviert werden kann. Das Verfahren kann beispielsweise durch die Flash-Steuereinheit 124 und/oder die CPU 128 in Hardware, Software oder einer Kombination von diesen ausgeführt werden. Zur einfachen Erklärung wird im Folgenden angenommen, dass der Prozess durch eine Flash-Steuereinheit 124 ausgeführt wird. Wie bei den anderen Ablaufplänen, die hier bereitgestellt werden, werden Schritte in logischer Reihenfolge und nicht in streng chronologischer Reihenfolge dargestellt, und bei einigen Ausführungsformen können wenigstens einige der Schritte in einer anderen Reihenfolge oder gleichzeitig ausgeführt werden.
  • Der dargestellte Prozess beginnt im Block 900 und geht dann zum Block 902, der eine Flash-Steuereinheit 124 veranschaulicht, die ein Empfangen einer Lese-IOP von einer externen Host-Einheit wie beispielsweise ein Prozessorsystem 102 erwartet. Die Lese-IOP legt im Allgemeinen die LBA der Ziel-Datenseiten fest, die von der Host-Einheit angefordert wird. In Reaktion auf ein Empfangen der Lese-IOP übersetzt die Flash-Steuereinheit 124 die LBA (beispielsweise durch Bezugnahme auf eine logisch/physische Übersetzungstabelle (TT) 150 im Speicher 126 der Flash-Steuereinheit), um die physische Adresse der physischen Seite zu ermitteln, an der die angeforderte Datenseite gespeichert ist (Block 904). Nachdem die physische Adresse ermittelt wurde, greift die Flash-Steuereinheit 124 auf die Ziel-Datenseite unter Verwendung der physischen Adresse zu, Indem eine Leseanforderung ausgegeben wird, um die Ziel-Datenseite von der physischen Seite zu lesen, die der physischen Adresse zugehörig ist (Block 906). Die Lese-IOP kann verschiedene Datenmengen anfordern, zur Vereinfachung wird jedoch angenommen, dass der Ablaufplan 900 für jede logische Seite, die durch die Lese-IOP bezeichnet wird, einmal ausgeführt wird.
  • Im Block 910 berechnet die Flash-Steuereinheit 124 den ECC-Wert für die Datenseite und vergleicht den berechneten ECC-Wert mit den ECC-Inhalten des ECC-Felds, um zu ermitteln, ob die Datenseite möglicherweise einen Datenfehler enthält. Derartige Datenfehler können infolge mehrerer Probleme auftreten, darunter eingeschlossene Ladungen in der Oxidschicht der physischen Einheit oder Ladungen, die aus dem potentialfreien Gate ausgetreten sind. Diese Fehler können dauerhaft sein, so dass die Zellen nicht mehr in der Lage sind, Daten zu speichern oder korrekt zu lesen, oder die Fehler können infolge von Problemen auftreten, die die Datenspeicherung oder elektrische Störungen betreffen, die bei Schreibvorgängen oder Lesevorgängen benachbarter Zellen auftreten. Derartige Fehler sind nicht vorhanden, wenn die Zelle gelöscht und anschließend neu beschrieben wird. Echte weiche Fehler sind im Wesentlichen zufällig und sind üblicherweise speziellen physischen Seiten, Blöcken oder anderen physischen Bereichen des NAND-Flash-Speicher-Array 140 eindeutig zugeordnet. Bei einem harten Fehler handelt es sich andererseits um die Beschädigung eines oder mehrerer Datenbits, die durch einen physischen Fehler bewirkt wird. Harte Fehler können durch eine Vielfalt von Faktoren bewirkt werden, darunter der physische Ausfall einer oder mehrerer Komponenten in einem vorgegebenen Speicherchip (wie beispielsweise der Ausfall einer Ladungspumpe), der physische Ausfall eines gesamten Speicherchips oder der externen Versorgungsstruktur für diesen Chip (z. B. die Unterbrechung einer Versorgungsleitung oder einer Adressleitung zu einem Chip), der physische Ausfall eines vollständigen Chips oder eines Teils hiervon als Ergebnis von Umgebungsfaktoren (z. B. übermäßige Temperatur, Magnetfeld, Luftfeuchtigkeit usw.). Da harte Fehler im Allgemeinen aus dem physischen Aufbau des Speichersystems entstehen, werden harte Fehler einer bestimmten Gruppe von Speicherchips, einem bestimmten Speicherchip oder spezifischen physischen Bereichen in einem Chip (wie beispielsweise ein CE, Ebene, Block oder Seite) eindeutig zugeordnet.
  • In Reaktion auf ein Ermitteln im Block 910, das die Datenseite keinen Datenfehler enthält, geht der Prozess zum Block 930, der nachfolgend beschrieben wird. In Reaktion auf ein Ermitteln im Block 910, dass die Datenseite einen Datenfehler enthält, korrigiert jedoch die Flash-Steuereinheit 124 den Fehler in der Datenseite möglicherweise unter Verwendung des ECC (wenn beispielsweise in dem Codewort mehr als 50 Bits fehlerhaft sind und der ECC in der Lage ist, mehr als 50 fehlerhafte Bits in dem Codewort zu korrigieren). Im Block 914 ermittelt die Flash-Steuereinheit 124, ob es sich bei dem erkannten Fehler möglicherweise um einen harten Fehler handelt. Die Flash-Steuereinheit 124 kann schlussfolgern, dass es sich bei einem Datenfehler um einen harten Fehler handelt, beispielsweise auf der Grundlage einer Häufigkeit oder Anzahl von Datenfehlern in einem vorgegebenen physischen Speicherbereich. Mit anderen Worten, die Flash-Steuereinheit 124 kann feststellen, dass alle physischen Seiten in einem vorgegebenen Löschblock fehlerhaft sind. In Reaktion auf ein Ermitteln im Block 914, dass es sich bei dem Datenfehler um einen korrigierbaren Fehler handelt, geht der Prozess zum Block 930, der nachfolgend beschrieben wird. Wenn die Flash-Steuereinheit 124 andererseits feststellt, dass es sich bei dem Datenfehler um einen nichtkorrigierbaren Fehler handelt, geht der Prozess zum Block 916.
  • Im Block 916 markiert die Flash-Steuereinheit 124 lediglich die physische Seite, die die Ziel-Datenseite speichert, als deaktiviert (d. h. nicht mehr verfügbar für eine Zuweisung, um eine Datenseite eines neuen Seiten-Stripe zu speichern), z. B. in den PSI 502 des Blocks, der diese physische Seite enthält. Somit deaktiviert das Datenspeichersystem 120 im Unterschied zu Systemen nach dem Stand der Technik, bei denen ein physischer Speicher in einem NAND-Flash-Speicher blockweise deaktiviert wird, einen physischen Speicher in dem NAND-Flash-Speicher-Array 140 in Reaktion auf Erkennen eines einzelnen Datenfehlers seitenweise. Es ist klar, dass ein Deaktivieren einer physischen Seite eines physischen Speichers (z. B. 16 KB) anstelle eines Blocks (z. B. 4 MB) Ressourcen des physischen Speichers einspart, die Leistungsfähigkeit verbessert und die Lebensdauer des NAND-Flash-Speicher-Array 140 verlängert. Als eine Folge des Deaktivierens einer Seite werden jedoch die effektiven Größen von Blöcken des physischen Speichers des NAND-Flash-Speichersystems 140 variieren wie nachfolgend beschrieben.
  • Bei dieser beispielhaften Umsetzung wird gewartet, bis eine physische Seite ein oder mehrere Codewörter enthält, die nichtkorrigierbare Fehler enthalten, bevor das Deaktivieren ausgeführt wird. Bei bestimmten Umsetzungen kann jedoch das Deaktivieren einer Seite an einem Punkt vor einer Unkorrigierbarkeit gewählt werden. Wenn beispielsweise bei einer Umsetzung BCH ECC über etwa 1024 Bytes verwendet wird und 50 fehlerhafte Bits korrigiert werden können, kann die Flash-Steuereinheit 124 ein Deaktivieren einer Seite entscheiden, wenn die Anzahl von nichtkorrigierbaren Bits eine Anzahl kleiner als 50, beispielsweise 48 erreicht. Außerdem ist es für einen Fachmann klar, dass die Flash-Steuereinheit 124 in Abhängigkeit von der verwendeten Flash-Technologie wählen kann, im Block 914 zusätzliche Schritte auszuführen, bevor die Seite deaktiviert wird. Der Flash-Hersteller kann beispielsweise fordern, dass die Flash-Steuereinheit 124 bestimmte Parameter für diese Seite oder diesen Block ändert, und ein erneutes Lesen der Seite ausführen. Wenn die Daten nun korrigierbar sind, würde die Flash-Steuereinheit 124 dem Pfad Nein vom Block 914 folgen. Auf diese Weise kann der Block 914 viele zusätzliche Schritte enthalten, die an dieser Stelle nicht beschrieben werden, um festzustellen, dass die Seite einen harten Fehler oder einen wahrhaft nichtkorrigierbaren Fehler enthält.
  • Im Block 918 ermittelt die Flash-Steuereinheit 124 durch Bezugnahme auf PSI 502 des Weiteren, ob die Anzahl von deaktivierten Seiten des physischen Speichers in einem physischen Speicherbereich, der die im Block 916 deaktivierte Seite enthält, nun möglicherweise bei einem ersten Schwellenwert T1 liegt (z. B. größer als dieser und/oder gleich diesem ist). Bei wenigstens einigen Ausführungsformen ist der erste Schwellenwert T1 konfigurierbar. Eine Leistungsprüfung hat gezeigt, dass die Leistungsfähigkeit des Datenspeichersystems 120 optimiert wird, wenn der erste Schwellenwert T1 kleiner ist als etwa 10% der physischen Seiten in dem physischen Speicherbereich und insbesondere so eingerichtet ist, dass er etwa 5% der physischen Seiten in dem physischen Speicherbereich beträgt. Es ist insbesondere vorzuziehen, dass der erste Schwellenwert T1 so eingerichtet ist, dass er etwa 4% der physischen Seiten in dem physischen Speicherbereich beträgt. Diese Zahlenangaben sind lediglich beispielhaft und können auf der Grundlage der Verwendung und Anforderungen des Datenspeichersystems deutlich variieren. Bei dem physischen Speicherbereich, auf den sich der erste Schwellenwert T1 bezieht, kann es sich beispielsweise um einen Block, eine Ebene, einen Chip, einen CE-Bereich oder das gesamte Flash-Modul handeln.
  • In Reaktion auf ein Ermitteln der Flash-Steuereinheit 124 im Block 918, dass der erste Schwellenwert nicht erreicht wird, geht der Prozess zum Block 930. In Reaktion auf ein Ermitteln der Flash-Steuereinheit 124 im Block 918, dass der erste Schwellenwert erreicht wird, markiert jedoch die Flash-Steuereinheit 124 den gesamten Bereich des physischen Speichers, der die deaktivierte physische Seite enthält, als deaktiviert und somit als nichtverfügbar für ein Zuweisen zum Speichern neuer Seiten-Stripes (Block 920). Wenn es sich bei dem physischen Speicherbereich, für den im Block 918 bis 920 ein Deaktivieren festgestellt wird, um einen kleineren Bereich handelt als ein vollständiges Flash-Speichermodul, kann die Flash-Steuereinheit 124 optional festlegen, ob sie große physische Speicherbereiche, die die deaktivierte physische Seite enthalten, möglicherweise nicht deaktiviert, wie bei den optionalen Blöcken 922 bis 924 gezeigt. Wie angegeben kann die zusätzliche Festlegung in Bezug auf ein Deaktivieren größerer physischer Speicherbereich auf der Grundlage eines Vergleichs der Anzahl von deaktivierten physischen Speicherbereichen (z. B. Seiten, Blöcken, Ebenen, Chips oder CE-Bereiche) in dem größeren physischen Speicherbereich und einem zweiten Schwellenwert T2 (der sich vom ersten Schwellenwert T1 unterscheiden kann) erfolgen. Der Prozess geht entweder vom Block 920 oder von einem der Blöcke 922 und 924 zum Block 930. Es kann außerdem festgestellt werden, dass nunmehr zu viele deaktivierte Speicherressourcen in dem NAND-Flash-Speicher-System 140 vorhanden sind, um in der Lage zu sein, geforderte Leistungsstufen zu erreichen, und die Flash-Steuereinheit 124 kann eine Antwort an den Benutzer senden, die angibt, dass es Zeit ist, die physische Ressource zu ersetzen, die das NAND-Flash-Speicher-System 140 enthält.
  • Im Block 930 versucht die Flash-Steuereinheit 124, das Datenfeld 702 und das LBA-Feld 704 der Ziel-Datenseite zu validieren, indem ein zyklischer Redundanzcode berechnet und der berechnete CRC mit demjenigen verglichen wird, der im CRC-Feld 706 enthalten ist. In Reaktion auf ein erfolgreiches Validieren der Datenseite geht der Prozess zum Block 934, der nachfolgend beschrieben wird. In Reaktion auf ein Fehlschlagen der CRC-Validierung liest die Flash-Steuereinheit 124 jedoch den gesamten Daten-Stripe und stellt den korrekten Inhalt der Ziel-Datenseite aus der bzw. den anderen Datenseiten und der Datenschutzseite des Seiten-Stripe wieder her (Block 932). Außerdem verschiebt die Flash-Steuereinheit 124 den Seiten-Stripe (der die wiederhergestellte Ziel-Datenseite enthält) zu einer anderen physischen Position im NAND-Flash-Speicher-System 140, wobei beispielsweise das in 10 gezeigte Verfahren verwendet wird, das nachfolgend beschrieben wird. Vom Block 930 oder vom Block 932 geht der Prozess zum Block 934, der veranschaulicht, dass die Flash-Steuereinheit 124 die Ziel-Datenseite zur anfordernden Host-Einheit überträgt. Daraufhin endet der Prozess von 9 im Block 940. Das Verfahren von 9 kann an einem späteren nicht spezifizierten Zeitpunkt in Abhängigkeit von anderen ablaufenden Operationen erneut ausgeführt werden.
  • Wie oben erwähnt ist die Reihenfolge von Operationen, die in 9 dargestellt ist, beispielhaft, und es sind Ausführungsformen vorgesehen, bei denen sich die Reihenfolge von Operationen von der oben dargestellten unterscheidet. Es sind beispielsweise Ausführungsformen vorgesehen, bei denen die Flash-Steuereinheit 124 die Datenseite zur Host-Einheit vor dem Ausführen der CRC-Validierung überträgt und anschließend eine Angabe überträgt, ob die Datenseite gültig ist. Außerdem kann bei einigen Ausführungsformen die Lese-IOP auf mehrere Datenseiten anstelle einer einzelnen Datenseite zugreifen.
  • In 10 ist ein logischer Übersichts-Ablaufplan eines beispielhaften Verfahrens zum Ausführen einer Schreiboperation im Datenspeichersystem 120 dargestellt. Das Verfahren kann z. B. durch die Flash-Steuereinheit 124 und/oder die CPU 128 in Hardware, Firmware, Software oder einer Kombination von diesen ausgeführt werden. Zur einfachen Erläuterung wird im Folgenden angenommen, dass der Prozess durch die Flash-Steuereinheit 124 ausgeführt wird.
  • Das Verfahren beginnt im Block 1000 und geht zum Block 1002, der eine Flash-Steuereinheit 124 veranschaulicht, die ein Empfangen einer Schreib-IOP von einer Host-Einheit erwartet wie beispielsweise ein Prozessorsystem 102. Die Schreib-IOP enthält beispielsweise Daten, die in das NAND-Flash-Speicher-Array 140 geschrieben werden sollen, und eine Angabe der Ziel-LBA(s), an denen die Host-Einheit die Daten speichern möchte. In Reaktion auf ein Empfangen einer Schreib-IOP geht der Prozess vom Block 1002 zu Blöcken 1004 bis 1106, die veranschaulichen, dass die Flash-Steuereinheit 124 ermittelt (z. B. durch Bezugnahme auf eine logisch/physisch Übersetzungstabelle 150), ob die Ziel-LBA(s), die in der Schreib-IOP angegeben sind, momentan einer oder mehreren physischen Speicherseiten zugeordnet sind, und wenn das der Fall ist, wird der Status jeder Datenseite, die momentan einer Ziel-LBA zugeordnet ist, geändert, um anzugeben, dass sie nicht mehr gültig ist. Wie nach dem Stand der Technik bekannt ist, werden ungültig gemachte Seiten (und die Blöcke, die sie enthalten) schließlich gelöscht und werden für eine Zuweisung zum Speichern von Daten durch einen Speicherbereinigungsprozess der Flash-Steuereinheit 124 wieder zur Verfügung gestellt.
  • Im Block 1008 weist die Flash-Steuereinheit 124 physische Seiten zu, um einen Seiten-Stripe zum Speichern der Schreibdaten zu bilden. Wie oben erwähnt wählt die Flash-Steuereinheit 124 vorzugsweise jede der physischen Seiten, die zum Speichern von Schreibdaten zugewiesen werden, aus einem anderen Block in einer unterschiedlichen Spur aus. Des Weiteren werden alle deaktivierten Seiten von der Flash-Steuereinheit 124 beim Zuweisen der physischen Seiten zum Speichern des Seiten-Stripe nicht berücksichtigt wie durch die PSI 502 angegeben. Wie im Block 101 angegeben beginnt die Flash-Steuereinheit 124 dann die erste Datenseite der Schreibdaten auf der ersten physischen Seite zu speichern, die dem Seiten-Stripe zugewiesen wurde. Im Block 1012 berechnet die Flash-Steuereinheit 124 außerdem die CRC- und ECC-Werte für die Datenseite und speichert diese Werte in dem CRC-Feld 706 und dem ECC-Feld 708 der Datenseite. Wie durch den Block 1014 angegeben ermittelt die Flash-Steuereinheit 124, ob alle Schreibdaten in das NAND-Flash-Speicher-System 140 geschrieben wurden. Wenn die Flash-Steuereinheit 124 feststellt, dass nicht alle Schreibdaten in das NAND-Flash-Speicher-System 140 geschrieben wurden, geht der Prozess zurück zum Block 1010, der beschrieben wurde. In Reaktion auf ein Feststellen, dass alle Schreibdaten in das NAND-Flash-Speicher-System 140 gespeichert wurden, berechnet die Flash-Steuereinheit 124 Paritätsinformationen für den Daten-Stripe (indem beispielsweise eine bitweise XOR-Operation aller Datenseiten in dem Seiten-Stripe ausgeführt wird) und speichert die Paritätsinformationen in der Datenschutzseite des Seiten-Stripe (Block 1016). Wiederum sind alle physischen Seiten, die deaktiviert sind und andernfalls dem Daten-Stripe zugewiesen würden, bei der Paritätsberechnung ausgeschlossen. Die Flash-Steuereinheit 124 aktualisiert außerdem die Tabelle zur logisch/physischen Adressübersetzung, um die eine oder mehreren physischen Seiten zum Speichern der Schreibdaten den LBA(s) zuzuordnen, die durch die Host-Einheit angegeben werden (Block 1018). Daraufhin endet der Prozess im Block 1020.
  • Es sollte erwähnt werden, dass die Blöcke 1008, 1010 und 1012 Schritte enthalten, die prüfen, ob die Programmierung dieser physischen Seite korrekt ausgeführt wird. Wenn die Flash-Steuereinheit 124 feststellt, dass der Schreibvorgang nicht korrekt ausgeführt wurde, verwendet die Flash-Steuereinheit 124 verschiedene Wiederherstellungstechniken wie beispielsweise erneutes Versuchen der Schreiboperation. Wenn der Schreibvorgang schließlich abläuft, geht die Flash-Steuereinheit 124 zum nächsten Block. Wenn der Schreibvorgang jedoch nicht erfolgreich ist, deaktiviert die Flash-Steuereinheit 124 diese Seite in der gleichen Weise, als ob ein Lesevorgang nicht erfolgreich ist. Nachdem diese Seite deaktiviert wurde, ändert die Flash-Steuereinheit 124 ihre Tabellen dementsprechend und geht zur nächsten nichtdeaktivierten Seite, um die Blöcke 1008, 1010 oder 1012 auszuführen.
  • In 11 ist ein beispielhafter Seiten-Stripe 1102 dargestellt, der gemäß dem Verfahren von 10 in das NAND-Flash-Speicher-System 140 geschrieben wurde. Wie oben erwähnt können Seiten-Stripes, die in ein NAND-Flash-Speicher-System 140 geschrieben wurden, in der Länge zwischen zwei und fünfzehn Datenseiten plus eine Datenschutzseite variieren. Bei dem dargestellten Beispiel hat jedoch die Flash-Steuereinheit 124 einen Daten-Stripe mit sechs Datenseiten und einer Datenschutzseite geschrieben. Bei diesem Beispiel hat die Flash-Steuereinheit 124 die physischen Seiten zum Speichern des Daten-Stripe aus einem Vorrat von Blöcken ausgewählt, zu dem die Blöcke 1100a bis 1100h in Spuren 0 bis 7 gehören. In jedem der Blöcke 1100a bis 1100h wurden eine oder mehrere Seiten deaktiviert, wie in 11 durch ein „X” grafisch angegeben, und durch die Flash-Steuereinheit 124 in PSI 502 aufgezeichnet. Somit sind beispielsweise Page1, Page255 des Blocks 1100a deaktiviert; Page0 und Page86 des Blocks 1100g deaktiviert; und Page23 des Blocks 1100h deaktiviert.
  • Im Flash-Speicher ist es günstig, Daten in Blöcken sequenziell pro Seite in einer bestimmten Reihenfolge zu schreiben, die durch den Flash-Hersteller festgelegt ist. Wenn somit ein Block des NAND-Flash-Speicher-Systems 140 geschrieben wird, kann es erwünscht und nützlich sein, zunächst auf Page0, dann auf Page1 und so weiter zu schreiben, bis der Block mit gespeicherten Daten gefüllt oder nahezu gefüllt ist. Bei einigen Umsetzungen kann es erwünscht sein, in einer bestimmten Reihenfolge zu schreiben, die nicht Page0, Page1 usw. lautet, aber das Endergebnis ist trotzdem eine sequenzielle Verarbeitung von Seiten in einer bestimmten Reihenfolge für den gesamten Block. Bei der Ausführungsform von 11 wird diese Form des Schreibens von Daten in einem NAND-Flash-Speicher 140 realisiert, indem die Flash-Steuereinheit 124 einen Zählwert vorhält, so dass der erste Seiten-Stripe, der in eine vorgegebene Gruppe von Blöcken geschrieben wird, über Page0 der Blöcke in der Gruppe von Blöcken geschrieben wird, der nächste Seiten-Stripe wird über Page1 der Blöcke in der Gruppe von Blöcken geschrieben und so weiter. Es sollte jedoch erwähnt werden, dass alle deaktivierten Seiten wie beispielsweise Page0 des Blocks 1100g aus der Zuweisung zu einem Seiten-Stripe wie beispielsweise Seiten-Stripe 1102 ausgeschlossen sind. Wenn der nächste Seiten-Stripe in die Gruppe von Blöcken geschrieben wird, wird gleichfalls Page1 des Blocks 1100a nicht verwendet.
  • Der Ablaufplan und die Blockdarstellungen in den Figuren veranschaulichen die Architektur, Funktionalität und Operation von möglichen Umsetzungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in dem Ablaufplan oder in Blockdarstellungen ein Modul, Segment oder Abschnitt von Code repräsentieren, der einen oder mehrere ausführbare Befehle zum Umsetzen der spezifizierten logischen Funktion(en) aufweist. Es sollte außerdem angemerkt werden, dass bei einigen alternativen Umsetzungen die in dem Block angegebenen Funktionen möglicherweise nicht in der in den Figuren angegebenen Reihenfolge auftreten. Zum Beispiel können zwei Blöcke, die nacheinander gezeigt sind, tatsächlich im Wesentlichen gleichzeitig ausgeführt werden oder die Blöcke können gelegentlich in Abhängigkeit von der beteiligten Funktionalität in der umgekehrten Reihenfolge ausgeführt werden. Es wird außerdem angemerkt, dass jeder Block in den Blockdarstellungen und/oder Ablaufplan-Darstellungen und Kombinationen von Blöcken in den Blockdarstellungen und/oder der Ablaufplan-Darstellung durch Systeme, die auf spezieller Hardware beruhen, die die spezifizierten Funktionen oder Wirkungen ausführen, oder Kombinationen aus spezieller Hardware und Computerbefehlen umgesetzt werden können.
  • Wie beschrieben wurde handelt es sich bei einigen Ausführungsformen eines Datenspeichersystems, das ein NAND-Flash-Speicher-Array enthält, bei einer Seite um eine kleinste Einheit des NAND-Flash-Speicher-Array, auf die durch Lese- und Schreiboperationen zugegriffen werden kann, und bei einem Speicherblock, der mehrere Seiten enthält, handelt es sich um die kleinste Einheit des NAND-Flash-Speicher-Array, die gelöscht werden kann. Daten werden in dem NAND-Flash-Speicher-Array in Daten-Stripes gespeichert, die über mehrere Speicherblöcke verteilt sind. In Reaktion auf Erkennen eines Fehlers in einer speziellen Seite eines bestimmten Blocks des NAND-Flash-Speicher-Array wird lediglich die spezielle Seite des bestimmten Blocks deaktiviert, so dass wenigstens zwei der mehreren Speicherblöcke, über die einen bestimmten Daten-Stripe der Daten-Stripes verteilt ist, unterschiedliche Anzahlen von aktiven (nichtdeaktivierten) Seiten enthalten.
  • Zwar wurde die vorliegende Erfindung in bestimmter Weise dargestellt und unter Bezugnahme auf eine oder mehrere bevorzugte Ausführungsformen beschrieben, es sollte jedoch einem Fachmann klar sein, dass verschiedene Änderungen an Form und Einzelheiten ausgeführt werden können, ohne vom Erfindungsgedanken und Umfang der Erfindung abzuweichen. Zwar wurden beispielsweise Aspekte unter Bezugnahme auf ein Datenspeichersystem beschrieben, das eine Flash-Steuereinheit enthält, das bestimmte Funktionen leitet, es sollte jedoch klar sein, die vorliegende Erfindung alternativ als ein Programmprodukt umgesetzt werden kann, das eine Speichereinheit enthält, die Programmcode speichert, der durch einen Prozessor verarbeitet werden kann, um diese Funktionen auszuführen, oder der bewirkt, dass diese Funktionen ausgeführt werden. Eine hier verwendete „Speichereinheit” ist speziell so definiert, dass sie lediglich Herstellungsgegenstände im eigentlichen Sinne enthält und vergängliche Ausbreitungsmedien per se ausgeschlossen sind.
  • Zwar wurden außerdem Ausführungsformen beschrieben, die ein Verwenden eines NAND-Flash-Speichers beinhalten, es sollte jedoch klar sein, dass die Erfindungen dabei nicht auf Verwenden eines NAND-Flash-Speichers beschränkt sind, sondern dass sie bei jeder anderen Technologie von nichtflüchtigen Direktzugriffsspeichern (NVRAM) angewendet werden können, bei der möglicherweise Löschblöcke definiert werden können, die größer als physische Seiten sind. Die offenbarten Techniken können beispielsweise bei einem Phasenänderungsspeicher (PCM), magnetoresistiven RAM (MRAM) und resistiven RAM (RRAM) angewendet werden.
  • Die oben beschriebenen Figuren und die nachfolgende Beschreibung spezieller Strukturen und Funktionen wurden nicht dargestellt, um den erfindungsgemäßen Umfang der Anmelder oder den Umfang der angefügten Ansprüche zu begrenzen. Die Figuren und die Beschreibung wurden stattdessen bereitgestellt, um jeden Fachmann zu befähigen, die Erfindungen zu realisieren und zu verwenden, für die ein Patentschutz vorgesehen ist. Einem Fachmann ist klar, dass nicht alle Merkmale einer kommerziellen Ausführungsform der Erfindungen beschrieben oder gezeigt werden, um die Klarheit und das Verständnis nicht zu beeinträchtigen. Ein Fachmann wird außerdem erkennen, dass die Entwicklung einer aktuellen kommerziellen Ausführungsform, die Aspekte der vorliegenden Erfindungen beinhaltet, zahlreiche umsetzungsspezifische Entscheidungen erfordert, um das eigentliche Ziel des Entwicklers für die kommerzielle Ausführungsform zu erreichen. Zu diesen umsetzungsspezifischen Entscheidungen können gehören Übereinstimmung mit systemrelevanten, geschäftsrelevanten, staatlich relevanten und anderen Beschränkungen, die durch spezifische Umsetzungen, den Standort und von Zeit zu Zeit variieren können, ohne auf diese beschränkt zu sein. Zwar könnten die Bemühungen des Entwicklers in einem absoluten Sinn komplex und zeitaufwändig sein, bei diesen Bemühungen würde es sich trotzdem für einen Fachmann um eine Routine handeln, der aus dieser Offenbarung einen Nutzen zieht. Es muss klar sein, dass die hier offenbarten und gelehrten Erfindungen für zahlreiche und verschiedene Modifikationen und alternative Formen anfällig sind. Schließlich soll die Verwendung eines Singular-Ausdrucks wie beispielsweise „ein”, ohne auf diesen beschränkt zu sein, die Anzahl von Elementen nicht einschränken.

Claims (20)

  1. Verfahren zum Deaktivieren von Seiten in einem Datenspeichersystem, das ein Array mit nichtflüchtigem Direktzugriffsspeicher (NVRAM-Array) enthält, wobei das Verfahren aufweist: Speichern von Daten in dem NVRAM-Array in Seiten-Stripes, die über mehrere Speicherblöcke hinweg verteilt sind, wobei wenigstens zwei der mehreren Speicherblöcke, über die einen bestimmten Seiten-Stripe der Seiten-Stripes verteilt sind, unterschiedliche Anzahlen aktiver Seiten enthalten, wobei es sich bei einer Seite um eine kleinste Einheit handelt, auf die in dem NVRAM-Array zugegriffen werden kann, und es sich bei einem Speicherblock, der mehrere Seiten enthält, um eine kleinste Einheit handelt, die in dem NVRAM-Array gelöscht werden kann; Erkennen eines Fehlers in einer bestimmten Seite eines bestimmten Blocks des NVRAM-Array; und in Reaktion auf Erkennen des Fehlers Deaktivieren lediglich der bestimmten Seite des bestimmten Blocks.
  2. Verfahren nach Anspruch 1, wobei die wenigstens zwei der mehreren Seiten-Stripes über unterschiedliche Anzahlen von Blöcken hinweg verteilt sind.
  3. Verfahren nach Anspruch 1, wobei das Erkennen ein Erkennen einer Nichtübereinstimmung zwischen einem Code, der für die bestimmte Seite berechnet wurde, und einem Code enthält, der in dem NVRAM-Array in Verbindung mit der bestimmten Seite gespeichert ist.
  4. Verfahren nach Anspruch 1, das ferner aufweist: anschließendes Deaktivieren eines physischen Speicherbereichs in dem NVRAM-Array, der die bestimmte Seite und mehrere andere Seiten enthält, in Reaktion auf Deaktivieren einer Schwellenwert-Anzahl von Seiten in dem physischen Speicherbereich.
  5. Verfahren nach Anspruch 4, wobei der physische Speicherbereich den bestimmten Block aufweist.
  6. Verfahren nach Anspruch 1, das ferner aufweist: Berechnen von Datensicherungsinformationen für einen der Daten-Stripes als Ganzes durch Ausführen einer Operation an entsprechenden Seiten der mehreren Blöcke, wobei das Berechnen ein Ausschließen von deaktivierten Seiten aus der Operation beinhaltet.
  7. Vorrichtung für ein NVRAM-Array, das eine Mehrzahl von Blöcken des physischen Speichers enthält, die jeweils mehrere Seiten des physischen Speichers enthalten, wobei es sich bei einer Seite um eine kleinste Einheit handelt, auf die in dem NVRAM-Array zugegriffen werden kann, und es sich bei einem Block um eine kleinste Einheit handelt, die in dem NVRAM-Array gelöscht werden kann, wobei die Vorrichtung aufweist: eine Speicher-Steuereinheit, die Daten in dem NVRAM-Array in Seiten-Stripes speichert, die über mehrere Speicherblöcke hinweg verteilt sind, wobei die Speichersteuereinheit in Reaktion auf Erkennen eines Fehlers in einer bestimmten Seite eines bestimmten Blocks des NVRAM-Array lediglich die bestimmte Seite des bestimmten Blocks deaktiviert, so dass wenigstens zwei der mehreren Speicherblöcke, über die ein bestimmter Seiten-Stripe der Seiten-Stripes verteilt ist, unterschiedliche Anzahlen aktiver Seiten enthält.
  8. Vorrichtung nach Anspruch 7, wobei die Speichersteuereinheit wenigstens zwei der mehreren Seiten-Stripes über unterschiedliche Anzahlen von Blöcken verteilt.
  9. Vorrichtung nach Anspruch 7, wobei die Speichersteuereinheit den Fehler erkennt durch Erkennen einer Nichtübereinstimmung zwischen einem Code, der für die bestimmte Seite berechnet wurde, und einem Code, der in dem NVRAM-Array in Verbindung mit der bestimmten Seite gespeichert wird.
  10. Vorrichtung nach Anspruch 7, wobei die Speichersteuereinheit nach einem Deaktivieren der bestimmten Seite einen physischen Speicherbereich in dem NVRAM-Array, der die bestimmte Seite enthält, und mehrere andere Seiten deaktiviert in Reaktion auf ein Deaktivieren einer Schwellenwert-Anzahl von Seiten in dem physischen Speicherbereich.
  11. Vorrichtung nach Anspruch 10, wobei der physische Speicherbereich den bestimmten Block aufweist.
  12. Vorrichtung nach Anspruch 7, wobei die Speichersteuereinheit Datensicherungsinformationen für einen der Seiten-Stripes als Ganzes durch Ausführen einer Operation an entsprechenden Seiten der mehreren Blöcke berechnet, wobei deaktivierte Seiten von der Operation ausgeschlossen sind.
  13. Programmprodukt für ein Datenspeichersystem, das ein NVRAM-Array mit einer Mehrzahl von Blöcken des physischen Speichers enthält, die jeweils mehrere Seiten des physischen Speichers enthalten, wobei es sich bei einer Seite um eine kleinste Einheit handelt, auf die in dem NVRAM-Array zugegriffen werden kann, und es sich bei einem Speicherblock um eine kleinste Einheit handelt, die in dem NVRAM-Array gelöscht werden kann, wobei das Programmprodukt aufweist: eine Speichereinheit; und Programmcode, der in der Speichereinheit gespeichert ist, der dann, wenn er durch eine Speichersteuereinheit ausgeführt wird, die mit dem NVRAM-Array verbunden ist, bewirkt, dass die Speichersteuereinheit ausführt: Speichern von Daten in dem NVRAM-Array in Seiten-Stripes, die über mehrere Speicherblöcke hinweg verteilt sind, wobei wenigstens zwei der mehreren Speicherblöcke, über die ein bestimmter Seiten-Stripe der Seiten-Stripes hinweg verteilt ist, unterschiedliche Anzahlen aktiver Seiten enthalten, wobei es sich bei einer Seite um eine kleinste Einheit handelt, auf die in dem NVRAM-Array zugegriffen werden kann, und es sich bei einem Speicherblock, der mehrere Seiten enthält, um eine kleinste Einheit handelt, die in dem NVRAM-Array gelöscht werden kann; Erkennen eines Fehlers in einer bestimmten Seite eines bestimmten Blocks des NVRAM-Array; und in Reaktion auf Erkennen des Fehlers Deaktivieren lediglich der bestimmten Seite des bestimmten Blocks.
  14. Programmprodukt nach Anspruch 13, wobei die Speichersteuereinheit wenigstens zwei der mehreren Seiten-Stripes über unterschiedliche Anzahlen von Blocken hinweg verteilt.
  15. Programmprodukt nach Anspruch 13, wobei das Erkennen ein Erkennen einer Nicht-Übereinstimmung zwischen einem Code, der für die bestimmte Seite berechnet wurde, und einem Code enthält, der in dem NVRAM-Array in Verbindung mit der bestimmten Seite gespeichert ist.
  16. Programmprodukt nach Anspruch 13, wobei der Programmcode ferner bewirkt, dass die Speichersteuereinheit ausführt: anschließendes Deaktivieren eines physischen Speicherbereichs in dem NVRAM-Array, der die bestimmte Seite und mehrere andere Seiten enthält, in Reaktion auf Deaktivieren eines Schwellenwerts von Seiten in dem physischen Speicherbereich.
  17. Programmprodukt nach Anspruch 16, wobei der physische Speicherbereich den bestimmten Block aufweist.
  18. Programmprodukt nach Anspruch 13, wobei der Programmcode ferner bewirkt, dass die Speichersteuereinheit ausführt: Berechnen von Datensicherungsinformationen für einen der Daten-Stripes als Ganzes durch Ausführen einer Operation an entsprechenden Seiten der mehreren Blöcke, wobei das Berechnen ein Ausschließen von deaktivierten Seiten von der Operation beinhaltet.
  19. Programmprodukt nach Anspruch 13, wobei der Programmcode ferner bewirkt, dass die Speichersteuereinheit ausführt: Zuordnen von logischen Adressen, die in Eingabe/Ausgabe-Operationen (IOPs) spezifiziert sind, zu physischen Adressen von Seiten in dem NVRAM-Array durch Bezugnahme auf eine Übersetzungstabelle.
  20. Programmprodukt nach Anspruch 13, wobei: das NVRAM-Array mehrere Chips enthält, die in Spuren angeordnet sind; und der Programmcode ferner bewirkt, dass die Speichersteuereinheit ein Auswählen der mehreren Speicherblöcke, über die jeder Seiten-Stripe verteilt ist, jeweils aus unterschiedlichen Spuren ausführt.
DE112014005570.0T 2013-12-04 2014-09-17 Deaktivieren von Seiten in einem Nand-Flash-Speicher-System Pending DE112014005570T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/096,823 2013-12-04
US14/096,823 US9274882B2 (en) 2013-12-04 2013-12-04 Page retirement in a NAND flash memory system
PCT/JP2014/004769 WO2015083308A1 (en) 2013-12-04 2014-09-17 Page retirement in a nand flash memory system

Publications (1)

Publication Number Publication Date
DE112014005570T5 true DE112014005570T5 (de) 2016-08-25

Family

ID=53265404

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112014005570.0T Pending DE112014005570T5 (de) 2013-12-04 2014-09-17 Deaktivieren von Seiten in einem Nand-Flash-Speicher-System

Country Status (4)

Country Link
US (2) US9274882B2 (de)
DE (1) DE112014005570T5 (de)
TW (1) TW201527953A (de)
WO (1) WO2015083308A1 (de)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10733069B2 (en) * 2013-12-04 2020-08-04 International Business Machines Corporation Page retirement in a NAND flash memory system
US9274882B2 (en) * 2013-12-04 2016-03-01 International Business Machines Corporation Page retirement in a NAND flash memory system
GB201322075D0 (en) 2013-12-13 2014-01-29 Ibm Device for selecting a level for at least one read voltage
US9563373B2 (en) 2014-10-21 2017-02-07 International Business Machines Corporation Detecting error count deviations for non-volatile memory blocks for advanced non-volatile memory block management
US10365859B2 (en) 2014-10-21 2019-07-30 International Business Machines Corporation Storage array management employing a merged background management process
US9990279B2 (en) 2014-12-23 2018-06-05 International Business Machines Corporation Page-level health equalization
US10339048B2 (en) 2014-12-23 2019-07-02 International Business Machines Corporation Endurance enhancement scheme using memory re-evaluation
CN107615388A (zh) 2015-03-20 2018-01-19 波利伍德有限责任公司 存储控制器中的可配置多级纠错
WO2016154078A1 (en) * 2015-03-26 2016-09-29 Burlywood, LLC A medium defect management method for storage systems requiring an integrated controller
US9898215B2 (en) * 2015-12-07 2018-02-20 International Business Machines Corporation Efficient management of page retirement in non-volatile memory utilizing page retirement classes
US9417809B1 (en) 2015-12-07 2016-08-16 International Business Machines Corporation Efficient management of page retirement in non-volatile memory utilizing page retirement classes
US9910606B2 (en) 2016-03-23 2018-03-06 Seagate Technology Llc End of life extension of solid state memory
US10515049B1 (en) * 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US10853177B2 (en) * 2017-07-27 2020-12-01 United States Of America As Represented By The Secretary Of The Air Force Performant process for salvaging renderable content from digital data sources
US10699797B2 (en) * 2018-04-27 2020-06-30 Seagate Technology Llc Storage area retirement in a storage device
US11138069B2 (en) 2018-06-11 2021-10-05 Seagate Technology, Llc Providing additional parity for non-standard sized parity data sets
US10896002B2 (en) 2018-06-29 2021-01-19 Seagate Technology Llc Reverse directory structure in a garbage collection unit (GCU)
US11086565B2 (en) * 2018-10-01 2021-08-10 International Business Machines Corporation Reducing effects of read array operations of read apparent voltage
US11086705B2 (en) 2019-03-18 2021-08-10 International Business Machines Corporation Managing the reliability of pages in non-volatile random access memory
US11175980B2 (en) 2019-12-27 2021-11-16 Seagate Technology Llc Mitigation of solid state memory read failures
US11340979B2 (en) 2019-12-27 2022-05-24 Seagate Technology Llc Mitigation of solid state memory read failures with a testing procedure
US11080129B2 (en) 2019-12-27 2021-08-03 Seagate Technology Llc Mitigation of solid state memory read failures with peer based thresholds
US11579772B2 (en) * 2020-11-25 2023-02-14 Micron Technology, Inc. Managing page retirement for non-volatile memory

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6000006A (en) 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
US7804718B2 (en) 2007-03-07 2010-09-28 Mosaid Technologies Incorporated Partial block erase architecture for flash memory
WO2009072102A2 (en) * 2007-12-05 2009-06-11 Densbits Technologies Ltd. System and methods employing mock thresholds to generate actual reading thresholds in flash memory devices
US9170897B2 (en) * 2012-05-29 2015-10-27 SanDisk Technologies, Inc. Apparatus, system, and method for managing solid-state storage reliability
US8281227B2 (en) * 2009-05-18 2012-10-02 Fusion-10, Inc. Apparatus, system, and method to increase data integrity in a redundant storage system
US7856528B1 (en) 2009-08-11 2010-12-21 Texas Memory Systems, Inc. Method and apparatus for protecting data using variable size page stripes in a FLASH-based storage system
US7941696B2 (en) 2009-08-11 2011-05-10 Texas Memory Systems, Inc. Flash-based memory system with static or variable length page stripes including data protection information and auxiliary protection stripes
US8312349B2 (en) * 2009-10-27 2012-11-13 Micron Technology, Inc. Error detection/correction based memory management
JP2012022422A (ja) * 2010-07-13 2012-02-02 Panasonic Corp 半導体記録再生装置
US8832507B2 (en) * 2010-08-23 2014-09-09 Apple Inc. Systems and methods for generating dynamic super blocks
US8711619B2 (en) * 2011-10-18 2014-04-29 Seagate Technology Llc Categorizing bit errors of solid-state, non-volatile memory
KR20130044694A (ko) * 2011-10-24 2013-05-03 삼성전자주식회사 메모리 시스템 및 그 데이터 기록 재생 방법
KR20130078973A (ko) * 2012-01-02 2013-07-10 삼성전자주식회사 메모리 장치의 불량 저장 영역 관리 방법 및 이를 이용한 저장 장치
US9047214B1 (en) * 2012-05-22 2015-06-02 Pmc-Sierra, Inc. System and method for tolerating a failed page in a flash device
US8972824B1 (en) * 2012-05-22 2015-03-03 Pmc-Sierra, Inc. Systems and methods for transparently varying error correction code strength in a flash drive
US9026867B1 (en) * 2013-03-15 2015-05-05 Pmc-Sierra, Inc. Systems and methods for adapting to changing characteristics of multi-level cells in solid-state memory
US9389937B2 (en) * 2013-11-19 2016-07-12 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Managing faulty memory pages in a computing system
US9535777B2 (en) * 2013-11-22 2017-01-03 Intel Corporation Defect management policies for NAND flash memory
US9274882B2 (en) * 2013-12-04 2016-03-01 International Business Machines Corporation Page retirement in a NAND flash memory system

Also Published As

Publication number Publication date
WO2015083308A1 (en) 2015-06-11
US9952795B2 (en) 2018-04-24
TW201527953A (zh) 2015-07-16
US9274882B2 (en) 2016-03-01
US20160162196A1 (en) 2016-06-09
US20150154061A1 (en) 2015-06-04

Similar Documents

Publication Publication Date Title
DE112014005570T5 (de) Deaktivieren von Seiten in einem Nand-Flash-Speicher-System
DE102017124079B4 (de) Speichervorrichtung zum Verarbeiten von beschädigten Metadaten und Verfahren zum Betreiben derselben
JP6855102B2 (ja) 不揮発性メモリ・システムにおけるマルチページ障害の回復
DE102012214324B4 (de) Verfahren und Vorrichtung zur Erleichterung der Datenüberprüfung mithilfe einer Prüfsumme in Verbindung mit einem Sidefile
DE112020000178T5 (de) Verwaltung von in zonen unterteilten namensräumen nichtflüchtiger speicherungsvorrichtungen
DE112019000149T5 (de) Multivorrichtungsspeichersystem mit gehosteten diensten auf peer-speichervorrichtungen
DE112019000213T5 (de) Speichersysteme mit Peer-Datenwiederherstellung
US8700949B2 (en) Reliability scheme using hybrid SSD/HDD replication with log structured management
DE112019000146T5 (de) Multivorrichtungsspeichersystem mit verteilter lese-/schreibverarbeitung
DE112014005266B4 (de) Verfahren und System zur Vorwärtsreferenz-Protokollierung in einem peristenten Datenspeicher
US10067844B2 (en) Method of channel content rebuild in ultra-high capacity SSD
DE102018105427A1 (de) Beibehalten von Daten bei einer Stromabschaltung
DE102017113439A1 (de) Abbildungstabellen für Speichervorrichtungen
DE202008018572U1 (de) Speichersystem
DE112016005869T5 (de) Vorausschauende Arbeitsspeicherinstandhaltung
DE112010003887T5 (de) Datenverwaltung in Halbleiter-Speichereinheiten
DE112010004656B4 (de) Blockinterner Ausgleich für nachlassende Funktionsfähigkeit von Speichern
DE112015000378T5 (de) Selektives Rückkopieren für einen auf einem Chipplättchen gepufferten nichtflüchtigen Speicher
DE112020005180T5 (de) Kondensieren von logischen zu physischen tabellenzeigern in ssds unter verwendung von gezonten namensräumen
DE102017120840A1 (de) Verfahren und Vorrichtung zur Detektion und Handhabung von Lesestörungen
DE102017114078A1 (de) Fehlerabschwächung für 3d-nand-flash-speicher
DE102013106242A1 (de) Halbleiterlaufwerk mit Konvertierungsschicht (ETL) und Umleitung von temporären Dateien zur Verschleissminderung von Flashspeichern
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE112019000201T5 (de) Speichersysteme mit peer-datenbereinigung
US11029857B2 (en) Offloading device maintenance to an external processor in low-latency, non-volatile memory

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication