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