-
Technisches Gebiet
-
Die vorliegende Offenbarung bezieht sich allgemein auf Halbleiterspeicher und Verfahren, und insbesondere auf Vorrichtungen, Systeme und Verfahren zur vorhersagenden Speicherverwaltung.
-
Hintergrund
-
Speichervorrichtungen werden typischerweise als interne, integrierte Halbleiterschaltkreise in Computern oder anderen elektronischen Systemen bereitgestellt. Es gibt viele verschiedene Arten von Speicher, darunter flüchtigen und nichtflüchtigen Speicher. Der flüchtige Speicher kann Leistung benötigen, um seine Daten (z. B. Hostdaten, Fehlerdaten usw.) beizubehalten, und kann unter anderem Direktzugriffsspeicher (RAM), dynamischen Direktzugriffsspeicher (DRAM), statischen Direktzugriffsspeicher (SRAM), synchronen dynamischen Direktzugriffsspeicher (SDRAM) und Thyristor-Direktzugriffsspeicher (TRAM) beinhalten. Der nichtflüchtige Speicher kann persistente Daten bereitstellen, indem er gespeicherte Daten beibehält, wenn er nicht mit Strom versorgt wird, und kann NAND-Flash-Speicher, NOR-Flash-Speicher und widerstandsvariablen Speicher wie Phasenwechsel-Direktzugriffsspeicher (PCRAM), resistiven Direktzugriffsspeicher (RRAM) und magnetoresistiven Direktzugriffsspeicher (MRAM) beinhalten, wie unter anderem einen Spin-Torque-Transfer-Direktzugriffsspeicher (STT RAM).
-
Speichervorrichtungen können mit einem Host (z. B. einer Rechenvorrichtung des Hosts) verbunden werden, um Daten, Befehle und/oder Anweisungen zu speichern, die vom Host verwendet werden, während der Computer oder das elektronische System in Betrieb ist. So können beispielsweise Daten, Befehle und/oder Anweisungen zwischen dem Host und dem Computer übertragen werden.
-
Figurenliste
-
- 1 ist ein Funktionsblockdiagramm in Form eines Rechensystems, das eine Einrichtung beinhaltet, die ein Speichersystem beinhaltet, gemäß einer Anzahl von Ausführungsformen der vorliegenden Offenbarung.
- 2A ist ein funktionelles Blockdiagramm in Form einer Vorrichtung gemäß einer Reihe von Ausführungsformen der vorliegenden Offenbarung, das eine Fehlerkorrekturkomponente beinhaltet.
- 2B ist ein weiteres funktionelles Blockdiagramm in Form einer Vorrichtung gemäß einer Reihe von Ausführungsformen der vorliegenden Offenbarung, das eine Fehlerkorrekturkomponente beinhaltet.
- 3 ist ein Flussdiagramm, das ein Beispiel für die Daten- und vorhersagende Speicherverwaltung gemäß einer Reihe von Ausführungsformen der vorliegenden Offenbarung darstellt.
- 4 ist ein Flussdiagramm, das die vorhersagenden Speicherverwaltungsvorgänge gemäß einer Reihe von Ausführungsformen der vorliegenden Offenbarung darstellt.
- 5 ist ein Flussdiagramm, das ein Beispielverfahren für die vorhersagende Speicherverwaltung gemäß einer Reihe von Ausführungsformen der vorliegenden Offenbarung darstellt.
- 6 ist ein Flussdiagramm, das ein weiteres Beispiel für ein Verfahren zur vorhersagenden Speicherverwaltung gemäß einer Reihe von Ausführungsformen der vorliegenden Offenbarung darstellt.
-
Ausführliche Beschreibung
-
Es werden Systeme, Vorrichtungen und Verfahren im Zusammenhang mit der vorhersagenden Speicherverwaltung beschrieben. Fehlerkorrekturvorgänge können in einem Speichersystem durchgeführt werden. Die aus den Fehlerkorrekturvorgängen abgeleiteten Latenzinformationen können verwendet werden, um den Zustand der physischen Adressen vorherzusagen, die zum Speichern von Daten in einem Speichersystem verwendet werden. Beispielsweise können mehrere Ebenen und/oder Stufen der Fehlerkorrektur an den Daten durchgeführt werden, basierend auf den Eigenschaften der Fehlerkorrektur, die auf jeder Ebene und/oder Stufe verwendet wird. Ein solches Merkmal kann eine Latenz beinhalten, die dem Durchführen verschiedener Fehlerkorrekturtechniken an Daten zugeordnet ist, und basierend auf den Latenzinformationen kann der Zustand der physischen Adressen, die zum Speichern der Daten verwendet werden, vorhergesagt werden. In einem Beispiel kann ein Verfahren beinhalten, dass durch den Controller Latenzinformationen bestimmt werden, die einem oder mehreren Fehlerkorrekturvorgängen entsprechen, die an von dem Controller empfangenen Daten durchgeführt werden, und dass basierend auf den Latenzinformationen, die einem Zustand von physischen Adressenpositionen entsprechen, die den Daten entsprechen, eine Maßnahme ergriffen wird, die die physischen Adressenpositionen betrifft, die zumindest teilweise auf der Information basieren, die dem Zustand der Vielzahl von physischen Adressenpositionen entsprechen, die den Daten entsprechen.
-
Speichervorrichtungen, wie z. B. Flash-Speichervorrichtungen, können zum Speichern von Daten in einem Rechensystem verwendet werden und können solche Daten zwischen einem dem Rechensystem zugeordneten Host übertragen. Die in einer Speichervorrichtung gespeicherten Daten können für den Betrieb des Rechensystems wichtig oder sogar entscheidend sein. Flash-Speichervorrichtungen werden als nichtflüchtiger Speicher für eine Vielfalt von elektronischen Anwendungen eingesetzt. Flash-Speichervorrichtungen verwenden in der Regel eine Ein-Transistor-Speicherzelle, die eine hohe Speicherdichte, hohe Zuverlässigkeit und einen geringen Stromverbrauch ermöglicht. Die in der Speichervorrichtung gespeicherten Daten können Fehler enthalten, die mit einer Fehlerkorrekturlogik korrigiert werden können. Manchmal ist ein Fehler in den Daten nicht korrigierbar und die Meldung eines nicht korrigierbaren Fehlers an den Host sollte vermieden werden.
-
Zwei gängige Arten von Flash-Speicherarray-Architekturen sind die „NAND“- und die „NOR“-Architekturen, so benannt nach der logischen Form, in der die Grundkonfiguration der Speicherzellen jeweils ausgebildet ist. Bei der NOR-Array-Architektur sind die Floating-Gate-Speicherzellen des Speicherarrays normalerweise in einer Matrix angeordnet.
-
Die Gates der einzelnen Floating-Gate-Speicherzellen der Array-Matrix sind in der Regel über Zeilen mit Wortauswahlleitungen und ihre Drains mit Spaltenbitleitungen verbunden. Der Zugriff auf das Speicherarray mit schwebendem Gate der NOR-Architektur erfolgt durch einen Zeilendecoder, der eine Reihe von Speicherzellen mit schwebendem Gate aktiviert, indem er die mit ihren Gates verbundene Wortauswahlleitung auswählt. Die Reihe der ausgewählten Speicherzellen legt dann ihre Datenwerte auf die Spaltenbitleitungen, indem sie unterschiedliche Ströme fließen lässt, je nachdem, ob sich eine bestimmte Zelle in einem programmierten oder einem gelöschten Zustand befindet.
-
Eine NAND-Array-Architektur ordnet ihr Array aus Floating-Gate-Speicherzellen ebenfalls in einer Matrix an, so dass die Gates jeder Floating-Gate-Speicherzelle des Arrays über Zeilen mit Wortauswahlleitungen gekoppelt sind. Allerdings ist nicht jede Speicherzelle über ihren Drain direkt mit einer Spaltenbitleitung verbunden. Stattdessen sind die Speicherzellen des Arrays in Reihe, von Source zu Drain, zwischen einer Sourceleitung und einer Spaltenbitleitung miteinander verbunden.
-
Speicherzellen in einer NAND-Array-Architektur können in einen gewünschten Zustand konfiguriert, z. B. programmiert werden. Das heißt, dass elektrische Ladung auf das schwebende Gate einer Speicherzelle gelegt oder von ihm entfernt werden kann, um die Zelle in eine Reihe von gespeicherten Zuständen zu versetzen. Eine Single-Level-Zelle (SLC) kann zum Beispiel zwei binäre Zustände darstellen, z.B. 1 oder 0. Flash-Speicherzellen können auch mehr als zwei binäre Zustände speichern, z. B. 00, 01, 10 oder 11. Solche Zellen können als Multi-State-Speicherzellen, Multibit-Zellen oder Multilevel-Zellen (MLC) bezeichnet werden. MLC können die Herstellung von Speichern mit höherer Dichte ermöglichen, ohne die Anzahl der Speicherzellen zu erhöhen, da jede Zelle mehr als ein Bit repräsentieren kann. MLC können mehr als einen programmierten Zustand aufweisen, z. B. kann eine Zelle, die zwei Bits darstellen kann, drei programmierte Zustände und einen gelöschten Zustand aufweisen.
-
Das Lesen von Speicherzellen kann durch Anlegen einer geeigneten Spannung an das Steuer-Gate und den Drain und durch Vergleichen des Drain-Source-Stroms, der die Spannungsschwelle (Vt) der Zelle angeben kann, mit einem Referenzstrom, z. B. einem „Stolperpunkt“, erfolgen, um den Zustand der Speicherzelle zu bestimmen. Bei einer beispielhaften Datenleseoperation können 0 Volt an eine ausgewählte Wortleitung angelegt werden, z. B. an das Steuer-Gate einer Zelle oder Zellen in der ausgewählten Wortleitung. An nicht ausgewählte Wortleitungen, z.B. an die Steuer-Gates der Zellen in den nicht ausgewählten Wortleitungen, kann eine Lesespannung von etwa 5 Volt angelegt werden. Der Drain-zu-Source-Strom, z. B. der „Zellstrom“ oder „Drainstrom“, der durch die Zellen auf der ausgewählten Wortleitung fließt, ist ein Indikator für den binären logischen Zustand der Zelle.
-
Wenn der Zellstrom einer bestimmten Speicherzelle über dem Auslösepunkt liegt, wird die Speicherzelle als einen bestimmten Zustand aufweisend gelesen, z. B. einen gelöschten Zustand oder einen programmierten Zustand. Wenn der Zellstrom einer bestimmten Speicherzelle unter dem Auslösepunkt liegt, wird die Speicherzelle so ausgelesen, als ob sie einen anderen Zustand aufweist. Daher hängt ein gewünschter konfigurierter Zustand der Speicherzelle, z. B. 00, 01, 10 oder 11, davon ab, ob der Zellenstrom über oder unter dem Auslösepunkt liegt.
-
Speicherzellen, die einen anderen Zustand als den gewünschten/erwarteten konfigurierten Zustand aufweisen, z. B. den Zustand, in den sie programmiert wurden, stellen Datenfehler in den gelesenen Daten dar. Viele Speichervorrichtungen verwenden eine Fehlerprüfungstechnik wie die Korrekturcodeprüfung (ECC), um Bitfehler in Daten, z. B. Zellen mit falschen Zuständen, zu erkennen. Die ECC-Schemata können Gruppen von Zellen zugeordnet werden, z. B. Speicherblöcken, Speichersegmenten oder Speichersektoren, und können Lesefehler durch die Erkennung und mögliche Korrektur von Bitfehlern reduzieren. Beispiele für ECC-Schemata beinhalten unter anderem Hamming-Codes, Reed-Solomon (RS)-Codes, Bose-Chaudhuri-Hochquenghem (BCH)-Codes, CRC-Codes (Circular Redundancy Check), Golay-Codes, Reed-Muller-Codes, Goppa-Codes, nachbarschaftsunterstützte Fehlerkorrekturcodes, LDPC-Fehlerkorrekturcodes (Low Density Parity Check) und Denniston-Codes.
-
Lesefehler treten auf, wenn die Datenbits, auf die zugegriffen wird, z. B. Speicherzellen, die von einem Prozessor abgerufene Informationen repräsentieren, falsche Zustände aufweisen und/oder die den Daten zugeordneten physischen Adressen abgenutzt sind oder anderweitig nicht korrekt funktionieren. Die Reduzierung von Lesefehlern erhöht die Betriebssicherheit von Speichervorrichtungen und/oder -systemen. Fehlerprüfungs- und - korrekturtechniken sind möglicherweise nicht in der Lage, einige fehlerhafte Bits zu korrigieren. Daten, die unkorrigierbare Fehler beinhalten, können Schaden anrichten, Ressourcen verschwenden und/oder einen Ausfall des Hosts verursachen. Aus diesen Gründen sollte die Übertragung von Daten mit unkorrigierbaren Fehlern vermieden werden. Außerdem können viele Fehlerprüfungstechniken selbst bei Wiederholung nicht erfolgreich auf die Daten angewandt werden, so dass Daten, die einen unkorrigierbaren Fehler aufweisen, an den Host übertragen werden können.
-
In einigen Ansätzen werden diese und andere Fehlerprüfungstechniken auf der Speichervorrichtung durchgeführt, z. B. durch den Controller, der sich auf der Speichervorrichtung befindet. Bei dem Controller der Speichervorrichtung kann es sich um einen Mediencontroller wie einen Non-Volatile Memory Express-Controller (NVMe) handeln, der eng mit der Speichervorrichtung (z. B. den Speicherzellen, Blöcken, Sektoren usw. der Speichervorrichtung) verbunden ist.
-
Infolgedessen können bei Ansätzen, bei denen die Fehlerkorrektur auf der Speichervorrichtung durchgeführt wird (z. B. mit Hilfe eines Controllers oder einer anderen auf der Speichervorrichtung befindlichen Schaltung), die Daten mehrfach gelesen und Fehler erkannt werden, die nicht korrigierbar sind. Anders ausgedrückt: Fehlerhafte Bits in den Daten werden möglicherweise nicht genau korrigiert, was dazu führen kann, dass dem Host falsche Daten bereitgestellt werden oder in manchen Fällen das Rechensystem ausfällt. Wie hier verwendet, bezieht sich der Begriff „resident auf“ auf etwas, das sich physisch auf einer bestimmten Komponente befindet. Zum Beispiel bezieht sich die Fehlerkorrektur, die „resident auf der Speichervorrichtung durchgeführt wird, auf einen Zustand, in dem die Fehlerkorrektur physisch auf der Speichervorrichtung durchgeführt wird. Der Begriff „resident auf‟ kann hier austauschbar mit anderen Begriffen wie „eingesetzt auf“ oder „angeordnet auf“ verwendet werden.
-
Mit zunehmender Speicherkapazität von Speichervorrichtungen können diese Effekte noch ausgeprägter werden, da immer mehr Daten in der Speichervorrichtung gespeichert werden können, wodurch die Menge der fehlerhaften Bits in den Daten zunimmt. Diese Effekte können ferner durch die Beschränkungen einiger Ansätze zur Fehlerkorrektur, die in den oben beschriebenen Speichervorrichtungen bereitgestellt werden, verstärkt werden, insbesondere wenn die Menge der in Speichervorrichtungen gespeicherten Daten und die Geschwindigkeit, mit der die Daten abgerufen werden sollen, zunehmen.
-
Im Gegensatz dazu sind die hierin enthaltenen Ausführungsformen darauf ausgerichtet, die Ausbreitung von fehlerhaften oder wahrscheinlich fehlerhaften Daten durch die Vorhersage eines Abnutzungsgrades zu verringern, der den physischen Orten entspricht, an denen die Daten gespeichert sind. Die Vorhersage der Abnutzung der Daten kann zumindest teilweise auf den Latenzinformationen basieren, die aus den Fehlerkorrekturvorgängen abgeleitet wurden. Wenn ein unkorrigierbarer Fehler identifiziert wird und/oder die vorhergesagte Abnutzung der Daten auf einen unkorrigierbaren Fehler hinweist (oder auf eine erhöhte Wahrscheinlichkeit, dass Daten, die bestimmten physischen Adressen der Speichervorrichtung zugeordnet sind, mehr als einen Schwellenwert an unkorrigierbaren Fehlern enthalten könnten), kann der Controller den Host darauf hinweisen (z. B. alarmieren), so dass Daten gesichert werden können, bevor sie nicht mehr wiederhergestellt werden können. Um die Durchführung der hier beschriebenen Operationen zu erleichtern, kann die Speichervorrichtung spezielle Schaltungen (z. B. Hardware, Logik, integrierte Schaltungen usw.) in Form einer Fehlerkorrekturkomponente beinhalten, um Fehlerkorrekturvorgänge an den von der Speichervorrichtung empfangenen Daten durchzuführen. In einigen Ausführungsformen kann die Fehlerkorrekturkomponente, die sich in einem Controller einer Speichervorrichtung befindet, beispielsweise mehrere Ebenen der Fehlerkorrekturlogik beinhalten. Die Fehlerkorrekturvorgänge auf mehreren Ebenen können von der Speichervorrichtung an den Daten durchgeführt werden, und nach jedem Fehlerkorrekturvorgang können Latenzinformationen ermittelt werden, um eine Abnutzung vorherzusagen, die einem physischen Adressraum entspricht, von dem aus auf die Daten zugegriffen wurde.
-
Ausführungsformen hierin können es ermöglichen, dass die Leselatenzen basierend auf einer oder mehreren Iterationen des Lese- und/oder Fehlerkorrekturvorgangs, die an den Daten durchgeführt werden, bestimmt werden. Jede Leselatenz ist einer Restbitfehlerrate (RBER) zugeordnet und jede Iteration des Fehlerkorrekturvorgangs kann die RBER um einen Faktor reduzieren. In einigen Ausführungsformen kann die Speichervorrichtung den Fehlerkorrekturvorgang bzw. die Fehlerkorrekturvorgänge an den Daten unter Verwendung einer anfänglichen Fehlerkorrekturlogik durchführen und basierend auf den ermittelten Leselatenzen eine Maßnahme ergreifen, die eine weitere physische Adresse, die den Daten entspricht, betrifft. Die von der Speichervorrichtung ergriffenen Maßnahmen können die Vorhersage eines Abnutzungsgrades beinhalten, der physischen Adressenpositionen entspricht, in denen die Daten gespeichert waren oder sind, das Zurückziehen eines physischen Adressraums basierend auf dem vorhergesagten Abnutzungsgrad, der dem physischen Adressraum zugeordnet ist, die Vorhersage einer verbleibenden Menge von Datenübertragungszyklen für die physischen Adressenpositionen, in denen die Daten gespeichert waren oder sind, oder eine Kombination davon. Nach der Bestimmung der Leselatenzen kann die Speichervorrichtung nachfolgende Fehlerkorrekturvorgänge unter Verwendung einer nachfolgenden Fehlerkorrekturlogik durchführen. Durch die Durchführung mehrerer Fehlerkorrekturvorgänge unter Verwendung unterschiedlicher Fehlerkorrekturlogiken können Daten korrigiert oder als unkorrigierbar eingestuft und dem Host als solche gemeldet werden.
-
Der Begriff „anfängliche Fehlerkorrekturvorgänge“ bezieht sich auf Fehlerkorrekturvorgänge, die an Rohdaten durchgeführt werden, an denen noch kein Fehlerkorrekturvorgang durchgeführt wurde. Es können mehrere Iterationen des Fehlerkorrekturvorgangs an den Daten durchgeführt werden. Ein anfänglicher Fehlerkorrekturvorgang kann z. B. einen Vorgang zur Korrektur von Fehlern an Daten beinhalten, die in einem Speichersystem oder einer Speichervorrichtung gespeichert sind und die aufgrund der Art der Speichereigenschaften des Speichersystems oder der Speichervorrichtung entstehen. Anfängliche Fehlerkorrekturvorgänge unterscheiden sich von nachfolgenden Fehlerkorrekturvorgängen, bei denen Daten einen oder mehrere nachfolgende Fehlerkorrekturvorgänge durchlaufen, um Restfehler (z. B. nicht erkennbare und/oder nicht korrigierbare Fehler) zu erkennen oder zu korrigieren, die in den Daten nach der Durchführung eines anfänglichen Fehlerkorrekturvorgangs vorhanden sein können.
-
In einigen Ansätzen kann eine Speichervorrichtung nachfolgende Fehlerkorrekturvorgänge durchführen, wie z. B. Vorgänge zum Erkennen und/oder Korrigieren von nicht erkennbaren und/oder unkorrigierbaren Fehlern, die in den Daten nach der Fehlerkorrektur durch die Speichervorrichtung vorhanden sind. Der nachfolgende Fehlerkorrekturvorgang kann eine andere Technik der Fehlerkorrektur sein, und nach jeder Iteration des nachfolgenden Fehlerkorrekturvorgangs können Latenzinformationen ermittelt werden, um den Zustand der Daten und/oder der den Daten zugeordneten physischen Adressen vorherzusagen. Auf diese Weise kann die Speichervorrichtung eine Menge unkorrigierbarer Fehler minimieren, die sich in einem Rechensystem ausbreiten, und dadurch eine Menge unkorrigierbarer Fehler reduzieren, die der Host-Vorrichtung gemeldet werden, indem sie eine Maßnahme ergreift (z. B. die Vorhersage einer den Daten entsprechenden Abnutzung), die zum Teil auf den ermittelten Latenzen basiert. Auf diese Weise können Fehler mit mehreren Arten von Fehlerkorrekturtechniken korrigiert und der Zustand der den Daten entsprechenden Informationen bestimmt werden.
-
In der folgenden detaillierten Beschreibung der vorliegenden Offenbarung wird auf die beigefügten Zeichnungen Bezug genommen, die einen Teil davon bilden und in denen durch Veranschaulichung gezeigt ist, wie eine oder mehrere Ausführungsformen der Offenbarung in der Praxis umgesetzt werden kann/können. Diese Ausführungsformen sind hinreichend detailliert beschrieben, um den Durchschnittsfachmann in die Lage zu versetzen, die Ausführungsformen dieser Offenbarung in der Praxis umzusetzen, und es versteht sich, dass andere Ausführungsformen verwendet und dass Verarbeitungs-, elektrische und strukturelle Änderungen vorgenommen werden können, ohne vom Schutzumfang der vorliegenden Offenbarung abzuweichen.
-
Im hierin verwendeten Sinne geben Bezeichner wie „N“, „M“, „P“, „S“, „R“ usw. insbesondere in Bezug auf die Bezugszeichen in den Zeichnungen an, dass eine Anzahl der so bezeichneten besonderen Merkmale beinhaltet sein kann. Es versteht sich zudem, dass die in dieser Schrift verwendete Terminologie nur dem Zweck der Beschreibung bestimmter Ausführungsformen dient und nicht einschränkend sein soll. Wie hier verwendet, können „ein“, „eine“ und „der/die/das“ sowohl die Singular- als auch die Plural-Referenten beinhalten, sofern der Kontext nicht eindeutig etwas anderes angibt. Darüber hinaus können sich „eine Anzahl von“, „mindestens eine“ und „ein(e) oder mehrere“ (z. B. eine Anzahl von Speichervorrichtungen) auf eine oder mehrere Speichervorrichtungen beziehen, während sich eine „Vielzahl von“ auf mehr als eines dieser Dinge beziehen soll. Darüber hinaus werden die Wörter „können“ und „können gegebenenfalls“ in dieser Anmeldung in einem zulässigen Sinne (d. h. das Potenzial haben, in der Lage sein) und nicht in einem zwingenden Sinne (d. h. müssen) verwendet. Der Ausdruck „beinhalten“ und Ableitungen davon bedeutet „einschließlich, aber nicht beschränkt auf“. Die Ausdrücke „gekoppelt“ und „koppeln“ bedeuten je nach Kontext direkt oder indirekt physisch oder für den Zugriff auf und die Bewegung (Übertragung) von Befehlen und/oder Daten verbunden zu sein. Die Ausdrücke „Daten“ und „Datenwerte“ werden in dieser Schrift austauschbar verwendet und können je nach Kontext dieselbe Bedeutung aufweisen.
-
Die Figuren hierin folgen einer Nummerierungskonvention, bei der die erste Ziffer oder Ziffern der Figurnummer entsprechen und die verbleibenden Ziffern ein Element oder eine Komponente in der Figur identifizieren. Gleichartige Elemente oder Komponenten in verschiedenen Figuren können durch die Verwendung gleicher Ziffern identifiziert werden. Zum Beispiel kann 106 auf das Element „06“ in 1 verweisen, und ein ähnliches Element kann als 206 in 2 bezeichnet werden. Auf eine Gruppe oder Vielzahl ähnlicher Elemente oder Komponenten kann hier im Allgemeinen mit einer einzigen Elementnummer verwiesen werden. Zum Beispiel kann eine Vielzahl von Referenzelementen 112-1, ..., 112-P (z. B. 112-1 bis 112-P) allgemein als 112 bezeichnet werden. Es versteht sich, dass Elemente, die in den verschiedenen Ausführungsformen in dieser Schrift gezeigt sind, hinzugefügt, ausgetauscht und/oder weggelassen werden können, um eine Anzahl zusätzlicher Ausführungsformen der vorliegenden Offenbarung bereitzustellen. Darüber hinaus sollen die Proportionen und/oder der relative Maßstab der in den Figuren bereitgestellten Elemente bestimmte Ausführungsformen der vorliegenden Offenbarung veranschaulichen und sollten nicht in einem einschränkenden Sinne verstanden werden.
-
1 ist ein Funktionsblockdiagramm in Form eines Rechensystems 100, das eine Einrichtung beinhaltet, die ein Speichersystem 104 beinhaltet, gemäß einer Anzahl von Ausführungsformen der vorliegenden Offenbarung. Wie hierin verwendet, kann sich eine „Einrichtung“ ohne Beschränkung auf verschiedene Strukturen oder Kombinationen von Strukturen beziehen, wie z. B. eine Schaltung oder Schaltungsanordnung, einen Chip oder Chips, ein Modul oder Module, eine Vorrichtung oder Vorrichtungen oder ein System oder Systeme, zum Beispiel. Das Speichersystem 104 kann z. B. ein Solid-State-Laufwerk (SSD) sein und eine Host-Schnittstelle 108, einen Puffer 109, einen Controller 110, z.B. einen Prozessor und/oder andere Steuerschaltungen und eine Anzahl von Speichervorrichtungen 112-1 bis 112-P, z.B. Solid-State-Speichervorrichtungen wie NAND-Flash-Vorrichtungen, beinhalten, die ein Speichervolumen für das Speichersystem 104 bereitstellen. In einer Reihe von Ausführungsformen können der Controller 110, eine Speichervorrichtung 112-1 bis 112-P und/oder die Host-Schnittstelle 108 physisch auf einem einzigen Chip oder in einem einzigen Gehäuse untergebracht sein, z. B. in einer verwalteten NAND-Anwendung. In einer Reihe von Ausführungsformen kann ein Speicher, z. B. die Speichervorrichtungen 112-1 bis 112-P, auch eine einzige Speichervorrichtung beinhalten.
-
Wie in 1 dargestellt, kann der Controller 110 über einen oder mehrere Kanäle mit der Host-Schnittstelle 108 und den Speichervorrichtungen 112-1 bis 112-P gekoppelt sein und zur Datenübertragung zwischen dem Speichersystem 104 und einem Host 102 verwendet werden. Die Host-Schnittstelle 108 kann in Form einer standardisierten Schnittstelle ausgeformt sein. Wenn das Speichersystem 104 beispielsweise zur Speicherung von Daten in einem Rechensystem 100 verwendet wird, kann die Schnittstelle 108 ein Serial Advanced Technology Attachment (SATA), ein Peripheral Component Interconnect Express (PCIe) oder ein Universal Serial Bus (USB), eine Double Data Rate (DDR)-Schnittstelle und andere Anschlüsse und Schnittstellen sein. Im Allgemeinen kann die Schnittstelle 108 jedoch eine Schnittstelle zur Weiterleitung von Steuer-, Adress-, Daten- und anderen Signalen zwischen dem Speichersystem 104 und einem Host 102 bereitstellen, der kompatible Rezeptoren für die Host-Schnittstelle 108 aufweist.
-
Bei dem Rechensystem 102 kann es sich um einen Laptop, einen Desktop-Computer, eine Digitalkamera, ein Mobiltelefon, eine Internet-of-Things (IoT) fähige Vorrichtung, oder ein Speicherkartenlesegerät, eine Grafikverarbeitungseinheit (z. B. eine Videokarte) unter verschiedenen anderen Arten von Rechensystemen handeln. Der Host 102 kann eine System-Hauptplatine und/oder eine Rückwandplatine beinhalten und eine Reihe von Vorrichtungen für den Speicherzugriff, z. B. eine Reihe von Verarbeitungsressourcen (z. B. einen oder mehrere Prozessoren, Mikroprozessoren oder eine andere Art von Steuerschaltungen). Einem Durchschnittsfachmann ist ersichtlich, dass mit „einem Prozessor“ ein oder mehrere Prozessoren gemeint sein können, z. B. ein Parallelverarbeitungssystem, eine Anzahl von Koprozessoren usw. Der Host 102 kann über einen Kommunikationskanal 103 mit einer Host-Schnittstelle 108 des Speichersystems 104 verbunden sein.
-
Der Puffer 109 kann das Speichersystem 104 beinhalten und ein Teil der physikalischen Speicherung sein, der dazu dient, Daten vorübergehend zu speichern, während sie von den Speichervorrichtungen 112-1 bis 112-P an den Controller 110 übertragen werden. In einigen Ausführungsformen kann der Host 102 für das Ausführen eines Betriebssystems für ein Rechensystem 100 verantwortlich sein, das das Speichersystem 104 beinhaltet. Dementsprechend kann der Host 102 in einigen Ausführungsformen für die Steuerung des Betriebs des Speichersystems 104 verantwortlich sein. Zum Beispiel kann der Host 102 Anweisungen ausführen (z. B. in Form eines Betriebssystems), die die Hardware des Rechensystems 100 verwalten, wie z. B. die Planung von Aufgaben, die Ausführung von Anwendungen, die Steuerung von Peripheriegeräten usw.
-
Das Rechensystem 100 kann getrennte integrierte Schaltkreise beinhalten oder der Host 102, das Speichersystem 104, die Fehlerkorrekturkomponente 106, der Puffer 109, die Host-Schnittstelle 108, der Controller 110 und/oder die Speichervorrichtungen 112-1 bis 112-P können sich auf demselben integrierten Schaltkreis befinden. Das Rechensystem 100 kann beispielsweise ein Serversystem und/oder ein Hochleistungsrechen (high performance computing, HPC)-System und/oder ein Teil davon sein. Obwohl das in 1 gezeigte Beispiel ein System mit einer Von-Neumann-Architektur veranschaulicht, können Ausführungsformen der vorliegenden Offenbarung in Nicht-Von-Neumann-Architekturen implementiert sein, die möglicherweise eine oder mehrere Komponenten (z. B. CPU, ALU usw.) nicht beinhalten, welche häufig mit einer Von-Neumann-Architektur in Verbindung gebracht werden.
-
In einigen Ansätzen kann das Speichersystem 104 (z. B. der Controller 110) eine oder mehrere Fehlerprüfungstechniken wie z. B. einen Fehlerkorrekturcode (error correction code, ECC) verwenden, um festzustellen, ob Daten (z. B. eine Speicherzelle und/oder eine Gruppe von Zellen, z. B. ein Datenwort oder ein Sektor), die in den Speichervorrichtungen 112-1 bis 112-P gespeichert sind, fehlerhaft sind, d. h. einen falschen Zustand aufweisen. Ein fehlerhafter oder falscher Zustand kann sich auf einen anderen Zustand einer Speicherzelle beziehen als den, in den sie programmiert oder geschrieben wurde. Zum Beispiel können nichtflüchtige Speicherzellen in einen bestimmten logischen Zustand programmiert werden, z. B. 1 oder 0, und eine Programmverifizierung durchlaufen, um zu bestätigen, dass die Zelle in den gewünschten korrekten Zustand programmiert wurde. Wenn bei solchen Ansätzen fehlerhafte Bits erkannt werden, können Fehlerkorrekturvorgänge an den Daten durch das Speichersystem 104 durchgeführt werden.
-
Der Controller 110 kann eine Fehlerkorrekturkomponente 106 beinhalten, die eine oder mehrere Fehlerprüfungstechniken wie ECC verwenden kann, um festzustellen, ob Daten (z. B. eine Speicherzelle und/oder eine Gruppe von Zellen, z. B. ein Datenwort oder ein Sektor) der Speichervorrichtungen 112-1 bis 112-P fehlerhaft sind. Die Fehlerkorrekturkomponente 106 kann z. B. eine Reihe von Komponenten in Form von Hardware und/oder Firmware beinhalten, z. B. einen oder mehrere integrierte Schaltkreise und/oder Software, um Fehlerkorrekturvorgänge an Daten durchzuführen, die der Host 102 vom Speichersystem 104 empfängt. Die Fehlerkorrekturkomponente 106 kann eine oder mehrere Unterkomponenten beinhalten, wie z. B. die anfängliche ECC-Logik (z. B. die Kodierkomponente) 214 und/oder die nachfolgende ECC-Logik (z. B. die Codierkomponente) 216, die im Zusammenhang mit 2 illustriert und hier beschrieben wird.
-
Die Fehlerkorrekturkomponente 106 kann eine ECC-Logik (z. B. Hardware und/oder Firmware) beinhalten, um Fehlerkorrekturvorgänge gemäß Schemata wie Hamming-Codes, RS-Codes, BCH-Codes, CRC-Codes, Golay-Codes, Reed-Muller-Codes, Goppa-Codes, nachbarschaftsunterstützte Fehlerkorrekturcodes, LDPC-Fehlerkorrekturcodes und Denniston-Codes und/oder andere Arten von Fehlerkorrekturschemata durchzuführen, die z. B. die Fehlerkorrektur der zwischen den Speichervorrichtungen 112-1 bis 112-P und dem Host 102 übertragenen Daten erleichtern können.
-
In einigen Ausführungsformen kann die Fehlerkorrekturkomponente 106 Daten von den Speichervorrichtungen 112-1 bis 112-P über den Puffer 109 empfangen. Die Daten können gemäß einem oder mehreren ECC-Schemata kodiert werden, bevor sie von den Speichervorrichtungen 112-1 bis 112-P an den Puffer 109 und schließlich an die Fehlerkorrekturkomponente 106 übertragen werden. Beispielsweise kann der Controller 110 und/oder die Speichervorrichtung 112-1 bis 112-P in einigen Ausführungsformen die Daten gemäß einem oder mehreren ECC-Schemata kodieren, bevor die Daten an die Fehlerkorrekturkomponente 106 übertragen werden. Wenn die Fehlerkorrekturkomponente 106 Daten empfängt, die zuvor gemäß einem oder mehreren ECC-Schemata durch das Speichersystem 104 kodiert wurden, kann die Fehlerkorrekturkomponente 106 die Daten gemäß einem oder mehreren ECC-Schemata als Teil der Durchführung eines Fehlerkorrekturvorgangs dekodieren.
-
Die Ausführungsformen sind jedoch nicht derartig beschränkt und in einigen Ausführungsformen kann die Fehlerkorrekturkomponente 106 auch nicht kodierte Daten von den Speichervorrichtungen 112-1 bis 112-P empfangen und die Daten gemäß einem oder mehreren ECC-Schemata kodieren und/oder anschließend dekodieren. Infolgedessen kann die Fehlerkorrekturkomponente 106 für die Durchführung aller (oder zumindest eines Teils der) Fehlerkorrekturvorgänge für das Rechensystem 100 verantwortlich sein. Das heißt, in einigen Ausführungsformen kann die Fehlerkorrektur von Daten durch das Speichersystem 104 von der Fehlerkorrekturkomponente 106 durchgeführt werden, die sich auf dem Host 102 befindet (z. B. eng mit diesem verbunden ist).
-
Beispielsweise kann der Controller 110 die Latenzinformationen durch den Vergleich des ersten Zeitstempels und/oder des zweiten Zeitstempels mit dem Anfangszeitstempel ermitteln und basierend auf den Latenzinformationen Informationen zuweisen, die einem Zustand der Positionen der physischen Adressen entsprechen, die den Daten entsprechen. Leselatenzen können einem RBER zugeordnet werden und können bestimmt und verwendet werden, um den Zustand von Daten und/oder physischen Adressen, die den Daten zugeordnet sind, vorherzusagen. In einigen Ausführungsformen kann der Controller 110 den Zustand der von den Speichervorrichtungen 112-1 bis 112-P über den Puffer 109 empfangenen Daten überwachen. Der Zustand der Daten kann sich auf die Anzahl der in den Daten vorhandenen Fehler (z. B. Bitflip-Fehler, unkorrigierbare Fehler usw.), die Anzahl der an den Daten durchgeführten Fehlerkorrekturvorgänge und/oder die vorhergesagte verbleibende Anzahl von Datenübertragungszyklen für die Position der physischen Adresse beziehen, die zumindest teilweise auf den Latenzinformationen basieren kann. Der Controller 110 kann die Latenzinformationen aus der Bestimmung einer Differenz der Zeitstempel bestimmen, die den durch den Controller 110 durchgeführten Fehlerkorrekturvorgängen entsprechen. Die Latenzinformationen können nach jedem Fehlerkorrekturvorgang ermittelt werden, und der Zustand der Positionen der physischen Adressen kann teilweise basierend auf den Latenzinformationen bestimmt werden, die nach jedem Fehlerkorrekturvorgang ermittelt werden.
-
Der Controller 110 kann über den Puffer 109 mit den Speichervorrichtungen 112 verbunden sein. Der Puffer 109 kann eine temporäre Speicherkomponente für die Daten sein, bevor die Daten durch den Controller gelesen werden. Der Controller 110 kann eine Fehlerkorrekturkomponente 106 beinhalten und der Controller 110 kann so konfiguriert sein, dass er mit Hilfe der Fehlerkorrekturkomponente 106 einen anfänglichen Fehlerkorrekturvorgang an Daten durchführt, die physischen Adressen der Speichervorrichtung entsprechen. Der Controller kann basierend auf Zeitstempeln, die den Fehlerkorrekturvorgängen zugewiesen wurden, Leselatenzen bestimmen. Zum Beispiel kann der Controller 110 einen anfänglichen Zeitstempel zuweisen, wenn die Daten zum ersten Mal gelesen werden, und kann einen ersten Zeitstempel einem anfänglichen Fehlerkorrekturvorgang zuweisen und mit Hilfe der Fehlerkorrekturlogik der Fehlerkorrekturkomponente 106 einen nachfolgenden Fehlerkorrekturvorgang durchführen. Der Controller 110 kann dem nachfolgenden Fehlerkorrekturvorgang einen zweiten Zeitstempel zuweisen. Der Controller kann basierend auf dem anfänglichen und zweiten Zeitstempel zumindest teilweise die Latenzinformationen für den anfänglichen und den nachfolgenden Fehlerkorrekturvorgang ermitteln.
-
Basierend auf den ermittelten Latenzinformationen kann der Controller 110 eine Maßnahme ergreifen, die die Positionen der physischen Adressen betrifft, zumindest teilweise basierend auf den Informationen, die dem Zustand der den Daten entsprechenden Positionen der physischen Adressen entsprechen. In einigen Ausführungsformen ergreift der Controller 110 eine Maßnahme, wie z. B. die Vorhersage eines Abnutzungsgrades für eine physische Adresse, die den Daten entspricht, und die Stilllegung der physischen Adresse, die den Daten entspricht, teilweise basierend auf dem vorhergesagten Abnutzungsgrad. In anderen Ausführungsformen kann der Controller 110 eine Maßnahme ergreifen, indem er basierend auf den Latenzinformationen eine verbleibende Anzahl von Datenübertragungszyklen für die Positionen der physischen Adressen vorhersagt. Die Vorhersage der verbleibenden Anzahl von Datenübertragungszyklen kann beinhalten, dass die Positionen der physischen Adressen nach dem letzten Datenübertragungszyklus der vorhergesagten Anzahl von Datenübertragungszyklen gelöscht werden. Der Controller 110 kann diesen vorhergesagten Zustand verwenden, um eine oder mehrere Leseoperationen, eine oder mehrere Iterationen des Fehlerkorrekturvorgangs unter Verwendung der ECC-Logik entsprechend einer ersten Stufe und/oder eine oder mehrere nachfolgende Iterationen des Fehlerkorrekturvorgangs unter Verwendung der ECC-Logik entsprechend einer nachfolgenden Stufe der Fehlerkorrektur einzuleiten.
-
Der Controller 110 kann die Durchführung eines Fehlerkorrekturvorgangs als Reaktion auf eine Feststellung durch den Controller 110 einleiten, dass die Daten von dem Puffer 109 (der mit dem Controller 110 gekoppelt ist) empfangen wurden/werden. Beispielsweise kann der Controller 110 als Reaktion auf die Feststellung durch den Controller 110, dass Daten aus dem Puffer 109 empfangen wurden, einen Anfangszeitstempel zuweisen und unter Verwendung der Fehlerkorrekturlogik, die sich in der Fehlerkorrekturkomponente 106 befindet, einen anfänglichen Fehlerkorrekturvorgang durchführen, der eine erste Stufe der Fehlerkorrektur bereitstellt und dem anfänglichen Fehlerkorrekturvorgang einen ersten Zeitstempel zuweisen. Der Zeitstempel kann eine Zeitspanne zwischen dem anfänglichen Zeitstempel (wenn die Daten von der Speichervorrichtung 112-1 bis 112-P und/oder dem Puffer 110 durch den Controller 110 empfangen werden) und dem Zeitpunkt sein, an dem die Daten durch den Controller 110 gelesen wurden. Die durch den Controller 110 aus dem ersten Zeitstempel ermittelten Latenzinformationen können verwendet werden, um zu bestimmen, ob ein nachfolgender Fehlerkorrekturvorgang durchgeführt werden soll.
-
Im obigen Beispiel kann der Controller 110 unter Verwendung der Fehlerkorrekturlogik, die sich in der Fehlerkorrekturkomponente 106 befindet, einen nachfolgenden Fehlerkorrekturvorgang durchführen, der der ersten Stufe der Fehlerkorrektur entspricht. Der Controller 110 kann dem nachfolgenden Fehlerkorrekturvorgang einen zweiten Zeitstempel zuweisen und basierend auf dem ersten und/oder zweiten Zeitstempel zumindest teilweise Latenzinformationen für den ersten und den nachfolgenden Fehlerkorrekturvorgang ermitteln. Durch diese Verfahren kann der Controller 110 und/oder die Fehlerkorrekturkomponente 106 feststellen, ob die Daten einen unkorrigierbaren Fehler aufweisen, ob die zu korrigierenden Daten eine andere Stufe der Fehlerkorrektur erfordern und/oder einen Zustand der den Fehlerkorrekturvorgängen zuzuordnenden Positionen der physischen Adressen vorhersagen.
-
Der Controller 110 kann so konfiguriert werden, dass er feststellt, dass die Informationen, die dem Zustand der physischen Adressen, die den Daten zugeordnet sind, entsprechen, darauf hinweisen, dass eine oder mehrere der physischen Adressen innerhalb einer bestimmten Anzahl von aufeinanderfolgenden Datenzyklen einen Fehler erleiden, und die Vielzahl der physischen Adressen basierend auf einer bestimmten Wahrscheinlichkeit löscht, dass eine oder mehrere der physischen Adressen innerhalb der bestimmten Anzahl von aufeinanderfolgenden Datenzyklen den Fehler erleiden werden, der zugewiesenen Gesundheitsinformationen. Mit anderen Worten, der Controller 110 kann unter Verwendung einer Fehlerkorrekturlogik, die sich in der Fehlerkorrekturkomponente 106 befindet und eine zweite Stufe der Fehlerkorrektur bereitstellt, einen anderen Fehlerkorrekturvorgang durchführen, der zumindest teilweise auf den Latenzinformationen (z. B. dem vorhergesagten Zustand der Daten) basiert.
-
Wie bereits erwähnt, kann die Fehlerkorrekturkomponente 106 feststellen, dass einige der zu korrigierenden Daten eine andere (z. B. höhere) Fehlerkorrekturstufe erfordern (z. B. höhere Präzision usw.) als andere Daten, die im Speichersystem 104 gespeichert sind. Beispielsweise kann die Fehlerkorrekturkomponente 106 feststellen, dass eine erste Dateneinheit (z. B. eine verwaltete Einheit wie ein Datenblock, ein Sektor, ein oder mehrere Codewörter, eine Datenseite usw.) für die Leistung des Rechensystems 100 kritisch ist und eine zweite Dateneinheit für die Leistung des Rechensystems 100 weniger kritisch ist, und basierend auf dieser Bestimmung und den Latenzinformationen und/oder dem vorhergesagten Zustand der den Daten zugeordneten physischen Adressen unterschiedliche Fehlerkorrekturvorgänge durchführen.
-
Wie hier verwendet, bezieht sich eine „verwaltete Einheit“ (managed unit, MU) im Allgemeinen auf eine Anzahl von Speicherzellen, die zusammen oder als funktionale Gruppe programmiert und/oder gelesen werden. Eine verwaltete Einheit kann einer logischen Blockgröße entsprechen (z. B. einer Datenübertragungsgröße eines Hosts und/oder einer Datenverwaltungsgröße eines Speichersystems), die z. B. 4 KB betragen kann. Eine verwaltete Einheit kann z. B. auf einen physischen Block von Speicherzellen abgebildet werden. Die Ausführungsformen sind jedoch nicht so begrenzt. Eine verwaltete Einheit kann beispielsweise mehr als einer logischen Blockgröße entsprechen, wenn eine Gruppe von Speicherzellen, die Benutzerdaten und Overhead-Daten (z. B. Daten, die über andere in der Gruppe von Speicherzellen gespeicherte Daten informieren) speichern, mehr als einer logischen Blockgröße entspricht. Die Overhead-Daten können z. B. Daten wie Metadaten, Fehlerkorrekturcode-Daten (ECC), logische Blockadressen (LBA) sowie Zähler (z. B. Lese-/Schreibzähler) beinhalten, die den auf einer verwalteten Einheit durchgeführten Speicheroperationen zugeordnet sind. In einigen Ausführungsformen kann eine MU mehrere Codewörter beinhalten. Wie hier verwendet, bezieht sich ein „Codewort“ im Allgemeinen auf ein Element eines Fehlerkorrekturcodes. Ein Codewort kann in einigen Ausführungsformen ein unabhängig kodierter Datenblock sein, der mit einer zyklischen Redundanzprüfung (CRC) geschützt ist.
-
Die Fehlerkorrekturkomponente 106 kann der ersten Dateneinheit eine höhere Fehlerkorrekturpriorität zuweisen und verschiedene Stufen von Fehlerkorrekturvorgängen an der ersten Dateneinheit als Reaktion auf die Bestimmung der Latenzinformationen durchführen, um den Zustand der Daten zuzuweisen. Abhängig von der Kritikalität der zweiten Dateneinheit kann die Fehlerkorrekturkomponente 106 in diesem Beispiel entweder einen Fehlerkorrekturvorgang an der zweiten Dateneinheit im Anschluss an die Durchführung des Fehlerkorrekturvorgangs an der ersten Dateneinheit durchführen oder die Fehlerkorrekturkomponente 106 kann die Speichervorrichtung 104 anweisen, einen Fehlerkorrekturvorgang an der zweiten Dateneinheit durchzuführen, beispielsweise parallel zur Durchführung des Fehlerkorrekturvorgangs an der ersten Dateneinheit.
-
In einigen Beispielen können die erste Stufe der Fehlerkorrektur und die zweite Stufe der Fehlerkorrektur unterschiedlich sein. Beispielsweise kann die Fehlerkorrekturkomponente 106 eine ECC-Logik (z. B. Hardware und/oder Firmware) beinhalten, um Fehlerkorrekturvorgänge auf mehreren Ebenen gemäß Schemata wie Hamming-Codes, RS-Codes, BCH-Codes, CRC-Codes, Golay-Codes, Reed-Muller-Codes, Goppa-Codes, nachbarschaftsunterstützten Fehlerkorrekturcodes, LDPC-Fehlerkorrekturcodes und Denniston-Codes und/oder anderen Arten von Fehlerkorrekturschemata oder Kombinationen davon durchzuführen.
-
Die erste Stufe der Fehlerkorrektur kann z. B. eine BCH-Hartdekodierung mit einer Lese-Wiederholung sein, bei der Iterationen des Lesevorgangs mit verschiedenen Spannungen wiederholt werden können. Bei der zweiten Stufe der Fehlerkorrektur kann es sich um eine nachbarschaftsunterstützte Fehlerkorrektur handeln. In anderen Ausführungsformen kann die erste Stufe oder Fehlerkorrektur eine oder mehrere Iterationen des Fehlerkorrekturvorgangs der harten LDPC-Decodierung sein, und eine zweite Stufe oder Fehlerkorrektur kann eine oder mehrere Iterationen der weichen LDPC-Decodierung sein. Ferner kann der Controller 110 eine beliebige Anzahl von Fehlerkorrekturstufen implementieren.
-
Nachdem die Fehlerkorrekturkomponente 106 Fehlerkorrekturvorgänge (z. B. anfängliche Fehlerkorrekturvorgänge und/oder nachfolgende Fehlerkorrekturvorgänge) an den Daten durchgeführt hat, kann der Host 102 die fehlerkorrigierten Daten bei der Durchführung einer Host-Rechenoperation verwenden. Die Ausführungsformen sind jedocch nicht derartig beschränkt und in einigen Ausführungsformen kann die Fehlerkorrekturkomponente 106, nachdem die Fehlerkorrekturkomponente 106 Fehlerkorrekturvorgänge an den Daten durchgeführt hat, veranlassen, dass die Daten zurück an die Speichervorrichtungen 112 übertragen werden, oder der Controller 110 kann basierend auf den Latenzinformationen bestimmen, dass die den Daten zugeordneten Positionen der physischen Adressen gelöscht werden können.
-
Der Controller 110 kann mit den Speichervorrichtungen 112-1 bis 112-P kommunizieren, um unter anderem Lese-, Schreib- und Löschvorgänge zu steuern. Der Controller 110 kann beispielsweise eine Reihe von Komponenten in Form von Hardware und/oder Firmware beinhalten, z. B. einen oder mehrere integrierte Schaltkreise, wie anwendungsspezifische integrierte Schaltkreise (ASIC), feldprogrammierbare Gate-Arrays (FPGA(s)), und/oder Software zur Steuerung des Zugriffs auf die Anzahl der Speichervorrichtungen 112-1 bis 112-P und/oder zur Erleichterung der Datenübertragung zwischen den Speichervorrichtungen 112-1 bis 112-P und dem Host 102. Der Controller 110 kann verschiedene Komponenten beinhalten, die nicht abgebildet sind, um die Ausführungsformen der vorliegenden Offenbarung nicht zu verdecken, um Datenlese-, Schreib-, Lösch- usw. Operationen zu steuern. In einigen Ausführungsformen sind solche Komponenten nicht unbedingt Bestandteile des Controllers 110, z.B. können die Komponenten zur Steuerung von Lese-, Schreib-, Lösch- usw. Operationen unabhängige Komponenten sein, die sich innerhalb des Speichersystems 104 befinden.
-
Die Speichervorrichtungen 112-1 bis 112-P können eine Reihe von Speicherarrays mit Speicherzellen beinhalten. Bei den Arrays kann es sich zum Beispiel um Flash-Arrays mit einer NAND-Architektur handeln. Die Ausführungsformen sind jedoch nicht auf einen bestimmten Typ von Speicherarrays oder eine bestimmte Array-Architektur beschränkt. Die Speicherzellen können z. B. in eine Anzahl von Blöcken gruppiert werden, die eine Anzahl von physikalischen Seiten beinhalten. Eine Anzahl von Blöcken kann eine Ebene von Speicherzellen beinhalten und ein Array kann eine Anzahl von Ebenen beinhalten.
-
Die Speichervorrichtungen 112-1 bis 112-P können flüchtigen und/oder nichtflüchtigen Speicher beinhalten. In einer Anzahl von Ausführungsformen können die Speichervorrichtungen 112-1 bis 112-P eine Multi-Chip-Vorrichtung beinhalten. Eine Multi-Chip-Vorrichtung kann eine Anzahl unterschiedlicher Speichertypen und/oder Speichermodule beinhalten. Zum Beispiel kann ein Speichersystem einen nichtflüchtigen oder flüchtigen Speicher auf einem beliebigen Modultyp beinhalten. In Ausführungsformen, in denen die Speichervorrichtungen 112-1 bis 112-P einen nichtflüchtigen Speicher beinhalten, kann es sich bei den Speichervorrichtungen 112-1 bis 112-P um Flash-Speichervorrichtungen wie NAND- oder NOR-Flash-Speichervorrichtungen handeln.
-
Die Ausführungsformen sind jedoch nicht derartig beschränkt, und die Speichervorrichtungen 112-1 bis 112-P können auch andere nichtflüchtige Speichervorrichtungen wie nichtflüchtige Direktzugriffsspeicher (z. B. NVRAM, ReRAM, FeRAM, MRAM, PCM), „aufstrebende“ Speichervorrichtungen wie widerstandsvariable (z. B. 3D-Crosspoint (3D XP)) Speichervorrichtungen, Speichervorrichtungen, die ein Speicherarray aus selbstselektierenden Speicherzellen (SSM) beinhalten, usw., oder Kombinationen davon beinhalten. Widerstandsvariable Speichervorrichtungen können eine auf einer Änderung des Volumenwiderstandes basierende Speicherung von Bits durchführen, und zwar in Verbindung mit einem stapelbaren Datenzugriffsarray mit Kreuzrastem. Im Gegensatz zu vielen Flash-basierten Speichern kann ein nichtflüchtiger widerstandsvariabler Speicher außerdem eine Write-in-place-Operation durchführen, bei der eine nichtflüchtige Speicherzelle programmiert werden kann, ohne dass die nichtflüchtige Speicherzelle zuvor gelöscht wird. Im Gegensatz zu Flash-Speichern und widerstandsvariablen Speichern können selbstselektierende Speicherzellen Speicherzellen beinhalten, die ein einziges Chalkogenidmaterial aufweisen, das sowohl als Schalter als auch als Speicherelement für die Speicherzelle dient.
-
Die Speichervorrichtungen 112-1 bis 112-P können Hauptspeicher für das Rechensystem 100 bereitstellen oder können als zusätzlicher Arbeitsspeicher oder Datenspeicher im gesamten Rechensystem 100 verwendet werden. Jede Speichervorrichtung 112-1 bis 112-P kann ein oder mehrere Arrays von Speicherzellen beinhalten, z. B. flüchtige und/oder nichtflüchtige Speicherzellen. Die Arrays können beispielsweise Flash-Arrays mit einer NAND-Architektur sein. Ausführungsformen sind nicht auf einen bestimmten Typ von Speichervorrichtung beschränkt. Zum Beispiel kann die Speichervorrichtung unter anderem RAM, ROM, DRAM, SDRAM, PCRAM, RRAM und Flash-Speicher beinhalten.
-
Die 2A und 2B sind funktionale Blockdiagramme in Form von Vorrichtungen 201, die gemäß einer Reihe von Ausführungsformen der vorliegenden Offenbarung eine Fehlerkorrekturkomponente 206 beinhalten. Die Fehlerkorrekturkomponente 206 kann analog zu der in 1 dargestellten Fehlerkorrekturkomponente 106 sein. Wie in 2A gezeigt, kann die Fehlerkorrekturkomponente 206 eine anfängliche ECC-Logik 214 und eine nachfolgende ECC-Logik 216 beinhalten. Wie in 2B gezeigt, beinhaltet die anfängliche ECC-Logik 214 ferner eine Fehlerkorrektur der ersten Stufe 218, während die nachfolgende ECC-Logik 216 ferner eine Fehlerkorrektur der N-ten Stufe 222 beinhaltet. Die Fehlerkorrekturkomponente 206 kann in einem Speichersystem, wie dem in 1 dargestellten Speichersystem 104, untergebracht (z. B. physisch eingesetzt) werden.
-
Die anfängliche ECC-Logik 214 und die nachfolgende ECC-Logik 216 können beispielsweise eine Reihe von Komponenten in Form von Hardware und/oder Firmware beinhalten, z. B. einen oder mehrere integrierte Schaltkreise, wie anwendungsspezifische integrierte Schaltkreise (ASIC), feldprogrammierbare Gatearrays (FPGA(s)), und/oder Software zur Durchführung von Fehlerkorrekturvorgängen an Daten, die zwischen einem Host (z. B. dem in 1 dargestellten Host 102) und Speichervorrichtungen (z. B. den in 1 dargestellten Speichervorrichtungen 112-1 bis 112-P) übertragen werden.
-
Die anfängliche ECC-Logik 214 kann als BCH ECC und/oder als iterativer Kodierer/Dekodierer wie z. B. ein LDPC ECC-Kodierer/Dekodierer oder ein anderer geeigneter Kodierer implementiert werden, um die von einem Speichersystem empfangenen Daten im Rahmen der Durchführung eines Fehlerkorrekturvorgangs an den empfangenen Daten zu kodieren. In ähnlicher Weise kann die nachfolgende ECC-Logik 216 als BCH ECC-Kodierer/Dekodierer und/oder als iterativer Kodierer/Dekodierer wie z. B. ein LDPC-Kodierer/Dekodierer oder ein anderer geeigneter Kodierer/Dekodierer implementiert werden, um von einem Speichersystem empfangene Daten als Teil der Durchführung eines Fehlerkorrekturvorgangs an den empfangenen Daten zu kodieren und/oder zu dekodieren.
-
Wie oben beschrieben, kann die Fehlerkorrekturkomponente 206 Daten von einer Speichervorrichtung (z. B. den in 1 dargestellten Speichervorrichtungen 112-1 bis 112-P) empfangen und einen Fehlerkorrekturvorgang an den Daten durchführen. Die Durchführung eines Fehlerkorrekturvorgangs kann die Implementierung eines oder mehrerer Fehlerkorrekturcodes beinhalten, um Fehler in den Daten zu korrigieren.
-
In einigen Ausführungsformen kann die anfängliche ECC-Logik 214 und/oder die nachfolgende ECC-Logik 216 mehrere Ebenen der Codierung und/oder Decodierung implementieren. Zum Beispiel kann die anfängliche ECC-Logik 214 und/oder die nachfolgende ECC-Logik 216 eine Fehlerkorrektur der ersten Stufe 218 und/oder eine Fehlerkorrektur der N-ten Stufe 222 beinhalten. Die anfängliche ECC-Logik 214 kann zum Beispiel eine Fehlerkorrektur der ersten Stufe 218 in Form eines BCH-Codes beinhalten. In ähnlicher Weise kann die nachfolgende ECC-Logik 216 eine Fehlerkorrektur der N-ten Ebene 222 in Form eines LDPC-Decoders beinhalten. Die Ausführungsformen der vorliegenden Offenbarung sind jedoch nicht auf die oben genannten Mengen und/oder Arten von ECC beschränkt und können zusätzliche ECC und/oder andere Arten oder Anordnungen von ECC als die oben beschriebenen beinhalten.
-
Gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung kann die anfängliche ECC-Logik 214 und/oder die nachfolgende ECC-Logik 216 selektiv ein reines LDPC-ECC-Schema (z. B. unter Verwendung der anfänglichen ECC-Logik 214 und der nachfolgenden ECC-Logik 216) oder ein gestuftes ECC-Schema implementieren, das einen anfänglichen BCH-Code (z. B., der eine Fehlerkorrektur der ersten Stufe 218 aufweist) und einen LDPC-Code und einen nachfolgenden LDPC-Code (z. B., der eine Fehlerkorrektur der N-ten Stufe ergibt) enthält. In anderen Beispielen kann die anfängliche ECC-Logik 214 und/oder die nachfolgende ECC-Logik 216 selektiv ein reines BCH-Schema (oder ein anderes ECC-Schema) (z. B. unter Verwendung der anfänglichen ECC-Logik 214 und der nachfolgenden ECC-Logik 216) oder ein abgestuftes ECC-Schema implementieren, das einen anfänglichen BCH-Code (der z. B. eine Fehlerkorrektur der ersten Stufe 218 aufweist) und einen nachbarschaftsunterstützten Fehlerkorrekturcode (neighbor-cell assisted error correction, NAC) und einen nachfolgenden NAC-Code (der z. B. eine Fehlerkorrektur der N-ten Stufe aufweist). In den oben beschriebenen gestuften ECC-Schemata können beispielsweise ein BCH-Code, ein LDPC, ein NAC und/oder andere ECC-Schemata über mehrere Iterationen laufen. Aus den Restfehlern können Latenzinformationen resultieren, die den Controller (z. B. den Controller 110 aus 1) veranlassen können, eine Vorhersage über den Zustand der Daten und/oder der den Daten zugeordneten physischen Adressen zu treffen. Basierend auf der Vorhersage kann der Controller eine Maßnahme ergreifen und/oder auf eine andere Ebene der Fehlerkorrektur unter Verwendung eines anderen ECC-Schemas wechseln.
-
Im obigen Beispiel kann der Controller so konfiguriert werden, dass er mehrere Iterationen des Fehlerkorrekturvorgangs durchführt. Bei den mehreren Iterationen des Fehlerkorrekturvorgangs kann es sich um verschiedene Techniken der Fehlerkorrektur handeln und nach jeder Iteration der nachfolgenden Fehlerkorrektur können Latenzinformationen ermittelt werden, um einen Zustand der Daten und/oder der den Daten zugeordneten physischen Adressen vorherzusagen. Auf diese Weise kann die Speichervorrichtung vermeiden, Daten in physischen Adressräumen zu speichern, die eine höhere Wahrscheinlichkeit aufweisen, unkorrigierbare Fehler an die darin gespeicherten Daten weiterzugeben. Dadurch kann die Menge der unkorrigierbaren Fehler, die sich in einem Rechensystem ausbreiten, reduziert werden, indem eine Maßnahme ergriffen wird (z. B. die Vorhersage eines Abnutzungsgrades, der dem den Daten zugeordneten physischen Adressraum entspricht), die teilweise auf den ermittelten Latenzzeiten basiert. Dies kann wiederum dazu führen, dass die Meldung unkorrigierbarer Fehler an die Vorrichtung vermieden wird.
-
Der Controller kann eine beliebige Kombination von ECC implementieren, die mehrere Stufen von ECC umfasst. Zum Beispiel kann die Fehlerkorrekturkomponente 206 mehrere ECC-Logiken umfassen, um mehrere Ebenen der Fehlerkorrektur bereitzustellen. Wie oben beschrieben, beinhalten Beispiele für ECCs u.a. Hamming-Codes, RS-Codes, BCH-Codes, CRC-Codes, Golay-Codes, Reed-Muller-Codes, Goppa-Codes, nachbarschaftsunterstützte Fehlerkorrekturcodes, LDPC-Fehlerkorrekturcodes und Denniston-Codes, und die Fehlerkorrekturkomponente 206 kann so konfiguriert werden, dass sie eine oder mehrere solcher ECCs in verschiedenen Reihenfolgen als Teil des Bereitstellens mehrerer Stufen von ECC für die von der Fehlerkorrekturkomponente 206 empfangenen Daten implementiert.
-
Der Controller kann von einer Fehlerkorrektur der ersten Stufe 218 zu einer Fehlerkorrektur der N-ten Stufe 222 eskalieren, basierend zumindest teilweise auf den Latenzinformationen und/oder dem durch den Controller ermittelten vorausgesagten Zustand und zumindest teilweise basierend auf der Zuordnung von Zeitstempeln zu Iterationen der ECCs. Zum Beispiel kann der Controller so konfiguriert werden, dass er jeder Iteration des Fehlerkorrekturvorgangs Zeitstempel zuordnet und eine Latenz bestimmt, die der Fehlerkorrekturlogik entspricht (z. B, die anfängliche ECC-Logik 214 und/oder die nachfolgende ECC-Logik 216), basierend zumindest teilweise auf den Zeitstempeln, die jeder Operation der verschiedenen Fehlerkorrekturvorgänge zugeordnet sind, und einem anfänglichen Zeitstempel (wenn die Daten durch den Controller von der Speichervorrichtung, z. B. der Speichervorrichtung 112-1 bis 112-P und/oder dem Puffer 110 der 1, empfangen werden und/oder wenn die Daten 315 anfänglich gelesen werden). Basierend auf den Latenzinformationen kann der Controller eine Maßnahme ergreifen, wie z. B. die Bestimmung zusätzlicher Fehlerkorrekturvorgänge, die möglicherweise erforderlich sind, die Vorhersage einer den Daten entsprechenden Abnutzung, das Zurückziehen einer den Daten entsprechenden physischen Adresse basierend auf der vorhergesagten Abnutzung, die Vorhersage einer verbleibenden Menge von Datenübertragungszyklen für die den Daten entsprechenden physischen Adressen oder eine Kombination davon. Zusätzlich kann der Controller feststellen, dass die Daten nicht korrigierbar sind und die nicht korrigierbaren Daten an den Host (z. B. den Host 102 der 1) melden. Mit diesen Verfahren kann das Speichersystem (z. B. das Speichersystem 100 der 1) den Empfang von unkorrigierbaren Daten vermeiden.
-
3 ist ein Flussdiagramm, das Beispielsdaten 315 und vorhersagende Speicherverwaltungsoperationen gemäß einer Reihe von Ausführungsformen der vorliegenden Offenbarung darstellt. 3 zeigt einen Puffer 309 und einen Controller 310, der analog zu dem Puffer 109 und dem Controller 110 sein kann, die im Zusammenhang mit 1 beschrieben wurden. 3 zeigt ferner eine erste Stufe der Fehlerkorrektur 318 und eine Fehlerkorrektur der N-ten Stufe 322, die eine Fehlerkorrekturkomponente (z. B. die in Verbindung mit 1 beschriebene Fehlerkorrekturkomponente 106) beinhalten kann und analog zur Fehlerkorrektur der ersten Stufe 218 und der Fehlerkorrektur der N-ten Stufe 222 ist, die in Verbindung mit 2B beschrieben sind.
-
Der Puffer 309, der Controller 310, die erste Stufe der Fehlerkorrektur 318 und die N-te Stufe der Fehlerkorrektur 322 können Teil eines Rechensystems sein (z. B. das Rechensystem 100 der 1). Obwohl hier nicht dargestellt, um die Beispiele der Offenbarung nicht zu verdecken, kann ein Host (z. B. der Host 102 der 1) mit einem Speichersystem (z. B. dem Speichersystem 104 der 1) gekoppelt sein, und der Controller 310 kann auf dem Speichersystem resident sein.
-
Die Daten 315 können in einer Speichervorrichtung gespeichert werden (z. B. die Speichervorrichtungen 112 der 1) und im Puffer 309 zwischengespeichert werden, bis sie durch den Controller 310 gelesen werden. Der Controller 310 kann zum Beispiel so konfiguriert sein, dass er die Daten 315 (im Block 317) von einer Speichervorrichtung über den Puffer 309 empfängt. Die Daten 315 können einer Operation des Hosts entsprechen. In einigen Ausführungsformen kann der Host die Daten 315 von der Speichervorrichtung anfordern, um eine Operation auszuführen.
-
Der Controller 310 kann den Daten 315 einen Anfangszeitstempel 325 zuweisen. Der anfängliche Zeitstempel 325 kann der Zeitpunkt sein, an dem die Daten zum ersten Mal aus dem Puffer 309 und/oder der Speichervorrichtung empfangen werden und/oder an dem die Daten 315 zum ersten Mal gelesen werden. Um zu vermeiden, dass unkorrigierbare Fehler an den Host übertragen werden, kann der Controller 310 einen oder mehrere Fehlerkorrekturvorgänge durchführen. Zum Beispiel kann der Controller 310 so konfiguriert werden, dass er einen oder mehrere Fehlerkorrekturvorgänge auf der ersten Stufe der Fehlerkorrektur 318 durchführt. In einigen Ausführungsformen kann der Controller 310 einen anfänglichen Fehlerkorrekturvorgang bei unterschiedlichen jeweiligen diskreten Lesespannungen durchführen, und der anfängliche Fehlerkorrekturvorgang kann einer ersten Stufe der Fehlerkorrektur 318 an den Daten 315 entsprechen. Der Controller 310 kann nach einem anfänglichen Fehlerkorrekturvorgang, der an den Daten 315 durchgeführt wurde, einen Zeitstempel 324-1 vergeben. Der Controller 310 kann basierend auf dem Zeitstempel 324-1 und dem anfänglichen Zeitstempel 325 Latenzinformationen 326-1 ermitteln.
-
Der Controller 310 kann basierend auf einem Zeitraum zwischen der Durchführung der jeweiligen Iterationen des Fehlerkorrekturvorgangs bei den jeweiligen diskreten Lesespannungen und dem anfänglichen Zeitstempel 325 Latenzinformationen, z. B. Latenzinformationen 326-1, die der Durchführung der Vielzahl von anfänglichen Fehlerkorrekturvorgängen zugeordnet sind, ermitteln. Basierend zumindest teilweise auf den Latenzinformationen 326-1 kann der Controller 310 den Zustand der Daten 315 vorhersagen (z. B. eine den Daten 315 entsprechende Abnutzung vorhersagen) und eine Maßnahme ergreifen. Eine Maßnahme kann zum Beispiel darin bestehen, dass der Controller 310 so konfiguriert wird, dass er eine verbleibende Anzahl von Datenübertragungszyklen für die physischen Adressen, die den Daten 315 entsprechen, vorhersagt. Basierend auf der Maßnahme kann der Controller 310 eine weitere Iteration des Fehlerkorrekturvorgangs unter Verwendung der ECC-Logik durchführen, die der ersten Stufe der Fehlerkorrektur 318 entspricht. Nach der zusätzlichen Iteration des Fehlerkorrekturvorgangs auf der ersten Stufe der Fehlerkorrektur 318 kann der Controller 310 einen weiteren Zeitstempel 324-2 zuweisen, um basierend auf dem Zeitstempel 324-2 und dem anfänglichen Zeitstempel 325 eine weitere (z. B. andere) Latenzinformation 326-2 zu bestimmen.
-
Wie bereits erwähnt, kann der Controller 310 eine Fehlerkorrekturlogik beinhalten, die so konfiguriert ist, dass sie die anfänglichen Fehlerkorrekturvorgänge, nachfolgende Fehlerkorrekturvorgänge oder beides durchführt. Basierend auf den Latenzinformationen 326-2, die aus dem Zeitstempel 324-2 ermittelt wurden, und nachfolgenden Vorhersagen über den Zustand der Daten 315 und/oder die Abnutzung kann der Controller 310 bestimmen, einen nachfolgenden Fehlerkorrekturvorgang an den Daten 315 unter Verwendung einer ECC-Logik durchzuführen, die einer N-ten Stufe der Fehlerkorrektur 322 entspricht. Nach der Durchführung einer Iteration der N-ten Stufe des Fehlerkorrekturvorgangs 322 kann der Controller 310 einen Zeitstempel 324-3 zuweisen, um eine Latenzinformation 326-3 zu ermitteln. Die Latenzinformationen 326-3 können auf dem Zeitstempel 324-3 und dem ursprünglichen Zeitstempel 325 basieren. Der Controller 310 kann die Latenzinformationen 326-3 verwenden, um basierend auf den nachfolgenden Fehlerkorrekturvorgängen, die auf der N-ten Stufe der Fehlerkorrektur 322 durchgeführt werden, Zustandsinformationen für Positionen physischer Adressen zu bestimmen, die den Daten 315 entsprechen. Auf diese Weise kann der Controller 310 einen den Daten 315 zugeordneten Zustand vorhersagen und/oder eine den Daten entsprechende Abnutzung vorhersagen und eine Maßnahme ergreifen.
-
Der Controller 310 kann mehrere Iterationen des Fehlerkorrekturvorgangs durchführen. Zum Beispiel kann der Controller, basierend zumindest teilweise auf den Latenzinformationen 326-3, die aus dem Fehlerkorrekturvorgang der N-ten Stufe 322, dem der Zeitstempel 324-3 zugewiesen wurde, ermittelt wurden, eine weitere Iteration des Fehlerkorrekturvorgangs auf der N-ten Stufe der Fehlerkorrektur 322 durchführen. Der Controller 310 kann dem Fehlerkorrekturvorgang auf der N-ten Stufe der Fehlerkorrektur 322 einen Zeitstempel 324-M zuweisen und die Latenzinformation 326-S ermitteln. Die Latenzinformationen 326-S können auf dem Zeitstempel 324-M und dem Anfangszeitstempel 325 basieren. Der Controller 310 kann die Latenzinformationen 326-S verwenden, um basierend auf den nachfolgenden Fehlerkorrekturvorgängen, die auf der N-ten Stufe der Fehlerkorrektur 322 durchgeführt werden, Zustandsinformationen für Positionen physischer Adressen zu ermitteln, die den Daten 315 entsprechen. Auf diese Weise kann der Controller 310 einen den Daten 315 zuzuordnenden Zustand vorhersagen und/oder einen den Daten entsprechenden Abnutzungsgrad vorhersagen und eine Maßnahme ergreifen.
-
Zum Beispiel kann der Controller 310 eine Maßnahme ergreifen, die die Positionen der physischen Adressen betrifft, basierend zumindest teilweise auf den ermittelten Gesundheitsinformationen, die den Positionen der physischen Adressen entsprechen. In einigen Ausführungsformen kann der Controller 310 so konfiguriert werden, dass er basierend auf den Latenzinformationen, z. B. 326-S, die dem mindestens einen nachfolgenden Fehlerkorrekturvorgang zugeordnet sind, zumindest teilweise eine verbleibende Anzahl von Datenübertragungszyklen für die Vielzahl physischer Adressen vorhersagt. Basierend auf den ermittelten Latenzinformationen 326 kann der Controller 310 eine Menge an verbleibenden Datenübertragungszyklen für die physischen Adressen zuweisen. In einigen Ausführungsformen kann der Controller 310 so konfiguriert sein, dass er die Vielzahl der physischen Adressen aufgibt, nachdem die Anzahl der Datenübertragungszyklen abgeschlossen ist. Der mehrstufige Fehlerkorrekturvorgang und die vorhersagende Speicherverwaltung können auf diese Weise fortgesetzt werden, bis der Controller 310 keinen weiteren Fehler mehr erkennt und/oder feststellt, dass der Fehler nicht mehr korrigierbar ist.
-
4 ist ein Flussdiagramm, das die vorhersagenden Speicherverwaltungsvorgänge gemäß einer Reihe von Ausführungsformen der vorliegenden Offenbarung darstellt. 4 zeigt verschiedene Stufen der Fehlerkorrektur, Latenzinformationen, die der Durchführung der verschiedenen Stufen der Fehlerkorrektur entsprechen, und Zeitstempel, die basierend auf den Latenzinformationen den Iterationen oder der Fehlerkorrektur zugeordnet sind. 4 zeigt ferner eine erste Stufe der Fehlerkorrektur 418, eine zweite Stufe der Fehlerkorrektur 420 und eine N-te Stufe der Fehlerkorrektur 422, die in einer Fehlerkorrekturkomponente (z. B. der in Verbindung mit 1 beschriebenen Fehlerkorrekturkomponente 106) enthalten sein können und analog zur Fehlerkorrektur der ersten Stufe 218 und der Fehlerkorrektur der N-ten Stufe 222 sind, die in Verbindung mit 2B beschrieben wurden.
-
In einigen Ausführungsformen können die erste Stufe der Fehlerkorrektur 418, die zweite Stufe der Fehlerkorrektur 420 und die N-te Stufe der Fehlerkorrektur 422 unter Verwendung von mindestens einem Bose-Chaudhuri-Hocquenghem (BCH)-Fehlerkorrekturcode, einem Nachbarzellen-unterstützten Fehlerkorrekturcode (NAC) oder beiden durchgeführt werden, und ein anschließender Fehlerkorrekturvorgang kann unter Verwendung des NAC-Codes, eines Speicherschutz-Fehlerkorrekturcodes oder beider durchgeführt werden. In anderen Ausführungsformen können auch andere Fehlerkorrektur-Codeschemata (z. B. Hamming-Codes, RS-Codes usw.) verwendet werden.
-
Der Puffer (z. B. der Puffer 109 der 1), der Controller (z. B. der Controller 110 der 1), die Schaltung, die die erste Stufe der Fehlerkorrektur 418, die zweite Stufe der Fehlerkorrektur 420 und die N-te Stufe der Fehlerkorrektur 422 durchführt, kann Teil eines Rechensystems sein (z. B. das Rechensystem 100 der 1). Obwohl hier nicht dargestellt, um die Beispiele der Offenbarung nicht zu verdecken, kann ein Host (z. B. der Host 102 der 1) mit einem Speichersystem (z. B. dem Speichersystem 104 der 1) gekoppelt sein, und der Controller kann auf dem Speichersystem resident sein.
-
Bei 430 kann der Controller über den Puffer Daten von der Speichervorrichtung empfangen, die einer Operation des Hosts entsprechen. In einigen Ausführungsformen kann der Controller eine Anfrage des Hosts nach den Daten empfangen. Der Controller kann den Daten einen Anfangszeitstempel 425 zuweisen. Der anfängliche Zeitstempel 425 kann als Reaktion auf die aus dem Puffer und/oder der Speichervorrichtung empfangenen Daten zugewiesen werden, oder der anfängliche Zeitstempel 425 kann dem Beginn eines Lesevorgangs durch den Controller auf die aus dem Puffer und/oder der Speichervorrichtung empfangenen Daten entsprechen. Der Controller kann so konfiguriert werden, dass er die jeweiligen diskreten Lesespannungen (z. B. VDM), die während eines Lesevorgangs an die Daten angelegt werden, anpasst.
-
Wie hier verwendet, bezieht sich eine „diskrete Lesespannung“ oder „VDM“ im Allgemeinen auf eine Abgrenzungsspannung, die an die Endgeräte einer Speicherzelle angelegt werden kann, wenn der Zustand einer Speicherzelle erfasst wird. Der Zustand der Speicherzelle kann basierend auf der Reaktion der Speicherzelle auf die angelegte diskrete Lesespannung erkannt werden. Zum Beispiel kann die Speicherzelle entweder in einen leitenden EIN-Zustand (logisch Eins) übergehen oder in einem schwach leitenden AUSZustand (logisch Null) bleiben. Die angelegte Spannung, bei der eine Speicherzelle von einer logischen Eins in eine logische Null übergeht, kann als Schwellenspannung der Speicherzelle bezeichnet werden. Wenn die VDM beispielsweise höher als die Schwellenspannung der Speicherzelle ist, kann die Speicherzelle als eine logische Eins speichernd erkannt werden und wenn die VDM niedriger als die Schwellenspannung der Speicherzelle ist, kann die Speicherzelle als eine logische Null speichernd erkannt werden.
-
Bei 432 kann der Controller so konfiguriert werden, dass er die Daten mit einer ersten diskreten Lesespannung (VDM1) liest und einen ersten Zeitstempel 424-1 aufzeichnet, wobei der erste Zeitstempel 424-1 dem Abschluss des ersten Lesevorgangs durch den Controller entspricht. Der Controller kann basierend auf dem ersten Zeitstempel 424-1 und dem anfänglichen Zeitstempel 425 eine erste Latenzinformationen 426-1 bestimmen. Die Latenzinformation kann durch den Controller verwendet werden, um einen Zustand der Daten vorherzusagen. Die Latenzinformationen, z. B. die Latenzinformation 426-1, kann verwendet werden, um vorherzusagen, ob die Daten unkorrigierbar oder beschädigt sind. Die Latenzinformationen, z. B. die Latenzinformationen 426-1, können verwendet werden, um die Meldung unkorrigierbarer Daten an einen Host zu verhindern. Der Controller kann in Block 428-1 eine Maßnahme ergreifen, die die Positionen der physischen Adressen betrifft, basierend zumindest teilweise auf den ermittelten Latenzinformationen 424-1, die auf dem Zustand der Positionen der physischen Adressen basieren, die den Daten entsprechen.
-
Das Ergreifen einer Maßnahme kann beinhalten, dass basierend auf den Latenzinformationen zumindest teilweise festgestellt wird, dass eine Position oder mehrere Positionen physischer Adressen, die den Daten entsprechen, abgenutzt sind, und im Block 436-1 wird der Lesevorgang beendet. In einer weiteren Ausführungsform kann das Ergreifen einer Maßnahme das Vorhersagen einer den Daten entsprechenden Abnutzung und das Löschen einer den Daten entsprechenden physischen Adresse beinhalten, teilweise basierend auf der vorhergesagten Abnutzung. In einer weiteren Ausführungsform kann eine Maßnahme die Vorhersage einer verbleibenden Anzahl von Datenübertragungszyklen für die Vielzahl von Positionen beinhalten, basierend zumindest teilweise auf den Latenzinformationen. Die Vorhersage der verbleibenden Anzahl von Datenübertragungszyklen kann beinhalten, dass die physischen Adressen nach dem letzten Datenübertragungszyklus gelöscht werden. Wenn kein Fehler auftritt, endet der Lesevorgang bei 436-1. Wenn der Controller feststellt, dass die zu ergreifende Maßnahme darin besteht, die physischen Adressen, die den Daten entsprechen, zu löschen, endet der Lesevorgang bei 436-1.
-
In einigen Ausführungsformen kann der Controller, wenn er feststellt, dass ein Fehler in den Daten vorliegt, und der Controller feststellt, dass die Daten gesund genug sind, um mit Fehlerkorrekturvorgängen fortzufahren, die diskrete Lesespannung einstellen und versuchen, die Daten zu lesen. Bei 440 kann der Controller die Daten mit einer zweiten diskreten Lesespannung (VDM2) lesen und einen zweiten Zeitstempel 424-2 aufzeichnen. Der Controller kann zweite Latenzinformationen 426-2 ermitteln, die zumindest teilweise auf dem anfänglichen Zeitstempel 425 und dem zweiten Zeitstempel 424-2 basieren.
-
Basierend auf den zweiten Latenzinformationen 426-2 kann der Controller bei 428-2 eine Maßnahme ergreifen, wenn die Positionen der physischen Adressen gelöscht werden, oder wenn der Controller feststellt, dass kein Fehler mehr in den Daten vorhanden ist, kann der Vorgang bei 436-2 beendet werden und die Daten können an den Host übertragen und/oder in der Rechenvorrichtung gespeichert werden.
-
In einigen Ausführungsformen kann der Controller so konfiguriert werden, dass er die durch den Pfeil 450 angezeigten Lese-Iterationen für eine Anzahl von Iterationen wiederholt, bis festgestellt wird, dass die Daten keine Fehler enthalten, oder bis eine bestimmte Anzahl von Iterationen durchgeführt worden ist, die durch den Zustand der Daten basierend auf den Latenzinformationen bestimmt werden kann. Der Controller kann ferner so konfiguriert werden, dass er die jeweiligen diskreten Lesespannungen der Lesevorgänge, anfänglichen Fehlerkorrekturvorgänge und/oder nachfolgenden Fehlerkorrekturvorgänge zumindest teilweise basierend auf den Latenzinformationen anpasst, die dem Durchführen der Vielzahl von Lesevorgängen bei den jeweiligen diskreten Lesespannungen und/oder Fehlerkorrekturvorgängen zugeordnet sind. Der Controller kann so konfiguriert werden, dass er die Spannung für jede Iteration ändert, oder die Spannung kann beibehalten werden.
-
Zum Beispiel kann der Controller einen oder mehrere anfängliche Fehlerkorrekturvorgänge bei unterschiedlichen diskreten Lesespannungen durchführen, wobei der eine oder die mehreren anfänglichen Fehlerkorrekturvorgänge einer ersten Stufe der Fehlerkorrektur der Daten entsprechen. Insbesondere kann der Controller einen Fehlerkorrekturvorgang anwenden, der einer ersten Stufe der Fehlerkorrektur 418 entspricht. Der Controller kann einen dritten Zeitstempel 424-3 zuweisen und den dritten Zeitstempel 424-3 zusammen mit dem anfänglichen Zeitstempel 425 zur Bestimmung von dritten Latenzinformationen 426-3 verwenden. Die dritten Latenzinformationen 426-3 können verwendet werden, um den Zustand der Daten vorherzusagen.
-
Basierend auf den dritten Latenzinformationen 426-3 kann der Controller bei 428-3 eine Maßnahme ergreifen und wenn die Positionen der physischen Adressen gelöscht werden, oder wenn der Controller feststellt, dass kein Fehler mehr in den Daten vorhanden ist, kann der Vorgang bei 436-3 beendet werden und die Daten können an den Host übertragen und/oder in der Rechenvorrichtung gespeichert werden.
-
Der Controller kann feststellen, dass ein Restfehler in den Daten vorhanden ist, und basierend auf dem festgestellten Zustand der Daten kann der Controller den anfänglichen Fehlerkorrekturvorgang entsprechend der ersten Stufe der Fehlerkorrektur 418 wiederholen, wie durch den Pfeil 452 angezeigt. In anderen Ausführungsformen kann der Controller feststellen, dass der Zustand der Daten ausreichend ist und/oder eine vorhergesagte Anzahl von Datenübertragungszyklen nicht erreicht wurde, so dass weitere Iterationen des Fehlerkorrekturvorgangs durchgeführt werden können und/oder der Controller einen oder mehrere nachfolgende Fehlerkorrekturvorgänge durchführen kann, die einer zweiten Stufe der Fehlerkorrektur der Daten entsprechen, basierend zumindest teilweise auf dem vorhergesagten Zustand der Daten (z. B. die dritten Latenzinformationen 426-3).
-
Zum Beispiel kann der Controller einen oder mehrere nachfolgende Fehlerkorrekturvorgänge bei jeweils unterschiedlichen diskreten Lesespannungen durchführen, wobei der eine oder die mehreren nachfolgenden Fehlerkorrekturvorgänge einer zweiten Stufe der Fehlerkorrektur der Daten entsprechen. Insbesondere kann der Controller einen Fehlerkorrekturvorgang anwenden, der einer zweiten Stufe der Fehlerkorrektur 420 entspricht. Der Controller kann einen vierten Zeitstempel 424-4 zuweisen und feststellen, ob ein Restfehler in den Daten vorhanden ist. Der Controller kann den vierten Zeitstempel 424-4 zuweisen und den vierten Zeitstempel 424-4 zusammen mit dem anfänglichen Zeitstempel 425 verwenden, um vierte Latenzinformationen 426-4 zu bestimmen. Die vierten Latenzinformationen 426-4 können verwendet werden, um den Zustand der Daten vorherzusagen.
-
Basierend auf den vierten Latenzinformationen 426-4 kann der Controller bei 428-4 eine Maßnahme ergreifen und wenn die Positionen der physischen Adressen gelöscht werden, oder wenn der Controller feststellt, dass kein Fehler mehr in den Daten vorhanden ist, kann der Vorgang bei 436-4 beendet werden und die Daten können an den Host übertragen und/oder in der Rechenvorrichtung gespeichert werden.
-
Der Controller kann feststellen, dass ein Restfehler in den Daten vorhanden ist, und basierend auf dem festgestellten Zustand der Daten kann der Controller den nachfolgenden Fehlerkorrekturvorgang entsprechend der zweiten Stufe der Fehlerkorrektur 420 wiederholen, wie durch den Pfeil 454 angezeigt. In anderen Ausführungsformen kann der Controller feststellen, dass der Zustand der Daten gut genug ist und/oder eine vorhergesagte Anzahl von Datenübertragungszyklen nicht erreicht wurde, so dass weitere Iterationen der nachfolgenden Fehlerkorrekturvorgänge durchgeführt werden können und/oder der Controller kann einen oder mehrere nachfolgende Fehlerkorrekturvorgänge durchführen, die einer N-ten Stufe der Fehlerkorrektur der Daten entsprechen, basierend zumindest teilweise auf dem vorhergesagten Zustand der Daten (z. B. der vierten Latenzinformationen 426-4).
-
Zum Beispiel kann der Controller einen oder mehrere (zusätzliche) nachfolgende Fehlerkorrekturvorgänge bei jeweils unterschiedlichen diskreten Lesespannungen durchführen, wobei der eine oder die mehreren nachfolgenden Fehlerkorrekturvorgänge einer N-ten Stufe der Fehlerkorrektur der Daten entsprechen. Insbesondere kann der Controller einen Fehlerkorrekturvorgang anwenden, der einer N-ten Stufe der Fehlerkorrektur 422 entspricht. Der Controller kann einen fünften Zeitstempel 424-M zuweisen und feststellen, ob ein Restfehler in den Daten vorhanden ist. Der Controller kann den fünften Zeitstempel 424-M zuweisen und den fünften Zeitstempel 424-M zusammen mit dem ursprünglichen Zeitstempel 425 verwenden, um fünfte Latenzinformationen 426-S zu bestimmen. Die fünften Latenzinformationen 426-5 können verwendet werden, um den Zustand der Daten vorherzusagen.
-
Basierend auf den fünften Latenzinformationen 426-5 kann der Controller eine Maßnahme bei 428-P ergreifen. Wenn die Positionen der physischen Adressen gelöscht werden oder wenn der Controller feststellt, dass keine Fehler mehr in den Daten vorhanden sind, kann der Vorgang bei 436-R beendet werden und die Daten können an den Host übertragen und/oder in der Rechenvorrichtung gespeichert werden.
-
Der Controller kann feststellen, dass ein Restfehler in den Daten vorhanden ist, und basierend auf dem festgestellten Zustand der Daten kann der Controller den nachfolgenden Fehlerkorrekturvorgang entsprechend der N-ten Stufe der Fehlerkorrektur 422 wiederholen, wie durch den Pfeil 456 angezeigt. In anderen Ausführungsformen kann der Controller feststellen, dass der Zustand der Daten gut genug ist und/oder eine vorhergesagte Anzahl von Datenübertragungszyklen nicht erreicht wurde, so dass nachfolgende Iterationen des Fehlerkorrekturvorgangs durchgeführt werden können und/oder der Controller einen oder mehrere nachfolgende Fehlerkorrekturvorgänge durchführen kann, die der N-ten Stufe der Fehlerkorrektur der Daten entsprechen, basierend zumindest teilweise auf dem vorhergesagten Zustand der Daten (z. B. den vierten Latenzinformationen 426-4).
-
In Fällen, in denen der Fehler nicht korrigierbar ist oder der Controller feststellt, dass der Zustand der Daten unzureichend ist, kann der Controller (bei 458) den nicht korrigierbaren Fehler an den Host und/oder das Rechensystem melden. Auf diese Weise kann die Speichervorrichtung davon absehen, unkorrigierbare Daten an den Host zu übermitteln.
-
5 ist ein Flussdiagramm, das ein Beispielverfahren 560 für die vorhersagende Speicherverwaltung gemäß einer Reihe von Ausführungsformen der vorliegenden Offenbarung darstellt. In Block 562 kann das Verfahren 560 die Ermittlung von Latenzinformationen durch den Controller (z. B. den Controller 110 von 1) beinhalten, die einem oder mehreren Fehlerkorrekturvorgängen entsprechen, die an den vom Controller empfangenen Daten durchgeführt wurden. Die Latenzinformationen können zur Vorhersage eines Zustands der Daten und/oder der Positionen der physischen Adressen, die den Daten entsprechen, verwendet werden
-
Die Latenzinformationen können aus Zeitstempeln ermittelt werden, die den Daten nach Fehlerkorrekturvorgängen zugewiesen wurden. Ein anfänglicher Zeitstempel (z. B. der anfängliche Zeitstempel 325 aus 3 oder der anfängliche Zeitstempel 425 aus 4) kann zugewiesen werden, wenn die Daten von der Speichervorrichtung (z. B. den Speichervorrichtungen 112 und/oder dem Puffer 109 aus 1) empfangen werden oder wenn der Controller einen Lesevorgang für die Daten initiiert hat. In einigen Ausführungsformen kann das Verfahren 560 beinhalten, dass der Controller einer Iteration des Fehlerkorrekturvorgangs, die eine erste Stufe (z. B. die erste Stufe der Fehlerkorrektur 318) der Fehlerkorrektur bereitstellt, einen ersten Zeitstempel (z. B. den ersten Zeitstempel 324-1 von 3 oder 424-1 von 4) bereitstellt; und dass durch den Controller, eine nachfolgende Iteration des Fehlerkorrekturvorgangs bestimmt wird, die die erste Stufe der Fehlerkorrektur bereitstellt, an den Daten durchzuführen, basierend zumindest teilweise auf den Latenzinformationen, die aus dem ersten Zeitstempel und/oder dem anfänglichen Zeitstempel bereitgestellt werden. Nachfolgenden Iterationen des Fehlerkorrekturvorgangs können weitere Zeitstempel zugewiesen werden.
-
Beispielsweise kann das Verfahren 560 ferner beinhalten, dass durch den Controller der nachfolgenden Iteration des Fehlerkorrekturvorgangs, die die erste Stufe der Fehlerkorrektur bereitstellt, ein zweiter Zeitstempel (z. B. der zweite Zeitstempel 324-2) zugewiesen wird; und dass durch den Controller die Latenzinformationen basierend zumindest teilweise auf dem zweiten Zeitstempel bestimmt werden; und dass die Informationen, die dem Zustand der Vielzahl von Positionen physischer Adressen entsprechen, basierend auf den Latenzinformationen, die aus dem zweiten Zeitstempel und/oder dem anfänglichen Zeitstempel bestimmt wurden, zugewiesen werden. Der Controller kann den Daten basierend auf den Latenzinformationen Gesundheitsinformationen zuweisen.
-
Zum Beispiel kann das Verfahren 560 in Block 564 basierend auf den Latenzinformationen die Zuweisung von Informationen beinhalten, die einem Zustand einer Vielzahl von Positionen physischer Adressen entsprechen, die den Daten entsprechen. In einigen Ausführungsformen kann der Controller basierend auf den Latenzinformationen eine Maßnahme ergreifen. Das Verfahren 560 kann im Block 566 basierend auf den Latenzinformationen die Zuweisung von Informationen beinhalten, die einem Zustand einer Vielzahl von Positionen physischer Adressen entsprechen, die den Daten entsprechen. Solche Maßnahmen können folgendes beinhalten: Vorhersagen einer den Daten entsprechenden Abnutzung und Löschen einer den Daten entsprechenden physischen Adresse, teilweise basierend auf der vorhergesagten Abnutzung; Feststellen, dass eine den Daten entsprechende physische Adresse abgenutzt ist, und Löschen der physischen Adresse basierend auf dieser Feststellung der Abnutzung; und/oder Vorhersagen einer verbleibenden Menge von Datenübertragungszyklen für die physischen Adressen und Löschen der Vielzahl von physischen Adressen nach dem letzten Datenübertragungszyklus der Menge von Datenübertragungszyklen. In der Ausführungsform, in der der Zustand der Daten gut ist, oder wenn mehrere Datenübertragungszyklen übrig sind, kann der Controller bestimmen, Fehlerkorrekturvorgänge auf verschiedenen Stufen durchzuführen.
-
Beispielsweise kann das Verfahren 660 beinhalten, dass durch den Controller einer Iteration des Fehlerkorrekturvorgangs, die eine zweite Stufe der Fehlerkorrektur bereitstellt (z. B. die N-te Stufe der Fehlerkorrektur 322 von 3), zweite Latenzinformationen (z. B. Latenzinformationen 326-3 von 3) zugewiesen werden, wobei die zweiten Latenzinformationen auf einem Zeitstempel basieren (z. B, der Zeitstempel 324-3 von 3) und/oder dem anfänglichen Zeitstempel 325 basiert; und dass durch den Controller, eine nachfolgende Iteration des Fehlerkorrekturvorgangs bestimmt wird, die die zweite Stufe der Fehlerkorrektur bereitstellt, an den Daten durchzuführen, basierend zumindest teilweise auf den zweiten Latenzinformationen.
-
Das Verfahren 660 kann beispielsweise beinhalten, dass durch den Controller der nachfolgenden Iteration des Fehlerkorrekturvorgangs, der die zweite Stufe der Fehlerkorrektur bereitstellt, ein anderer Zeitstempel (z. B. der Zeitstempel 324-M der 3) zugewiesen wird; und dass durch den Controller neue Latenzinformationen bestimmt werden (z. B, die Latenzinformationen 326-S) basierend, zumindest teilweise, auf dem unterschiedlichen Zeitstempel und/oder dem anfänglichen Zeitstempel; und dass die Informationen, die dem Zustand der Vielzahl von physischen Adressen entsprechen, basierend auf den neuen Latenzinformationen, die von dem unterschiedlichen Zeitstempel bestimmt wurden zugewiesen und/oder aktualisiert werden.
-
6 ist ein Flussdiagramm, das ein Beispielverfahren 670 für die vorhersagende Speicherverwaltung gemäß einer Reihe von Ausführungsformen der vorliegenden Offenbarung darstellt. In Block 672 kann das Verfahren 670 durch den Controller (z. B. den Controller 110 der 1), der mit einer Speichervorrichtung (z. B. der Speichervorrichtung 112 der 1) verbunden ist, die Überwachung eines Zustands der physischen Adressen beinhalten, die den Daten entsprechen. Der Controller kann Datenanforderungen von einem Host (z. B. dem Host 102 von 1) überwachen und feststellen, ob die Daten vor der Übertragung an den Host Fehlerkorrekturvorgänge erfordern.
-
In Block 674 beinhaltet das Verfahren 670 das Bestimmen von Latenzinformationen durch den Controller basierend auf den Iterationen des Fehlerkorrekturvorgangs, der an den Daten unter Verwendung einer auf dem Controller residenten Fehlerkorrekturkomponente durchgeführt wird, wobei die Fehlerkorrekturkomponente eine mehrstufige Fehlerkorrektur unter Verwendung einer Fehlerkorrekturkomponente (z. B. die Fehlerkorrekturkomponente 106 von 1) beinhaltet. Die Fehlerkorrekturkomponente kann eine auf dem Controller residente Fehlerkorrekturlogik beinhalten (z. B. die anfängliche ECC-Logik 214 der 2A und 2B), und ein Fehlerkorrekturvorgang kann mehrere Stufen der Fehlerkorrektur (z. B. die erste Stufe der Fehlerkorrektur 218 und die N-te Stufe der Fehlerkorrektur 222 der 2) für die Daten bereitstellen. Das Verfahren 670 kann beinhalten, dass den Iterationen des Fehlerkorrekturvorgangs Zeitstempel zugewiesen werden, um eine Latenzinformation zur Bestimmung des Zustands der Daten zu ermitteln.
-
Zum Beispiel beinhaltet das Verfahren 670 in Block 676 das Bestimmen des Zustands der physischen Adressen, die den Daten entsprechen, durch den Controller, zumindest teilweise basierend auf den Latenzinformationen. Der Controller kann die Latenzinformationen verwenden, um eine Maßnahme zu ergreifen, die verhindern kann, dass unkorrigierbare Daten an den Host gemeldet werden. Zum Beispiel beinhaltet das Verfahren 670 in Block 678 das Vorhersagen einer verbleibenden Anzahl von Datenübertragungszyklen für die physischen Adressen, basierend zumindest teilweise auf den Latenzinformationen und dem Zustand der Vielzahl von physischen Adressen.
-
Die Latenzinformationen können durch den Controller nach jeder Iteration des Fehlerkorrekturvorgangs bestimmt werden. Zum Beispiel kann das Verfahren 670 beinhalten, dass durch den Controller Latenzinformationen empfangen werden, die dem Fehlerkorrekturvorgang entsprechen, der eine erste Stufe der Fehlerkorrektur bereitstellt; und dass durch den Controller der Zustand der Vielzahl von physischen Adressen, die den Daten entsprechen, basierend auf den Latenzinformationen bestimmt wird, die dem Fehlerkorrekturvorgang entsprechen, der die erste Stufe der Fehlerkorrektur bereitstellt. Der Controller kann durch den Controller die verbleibende Menge an Datenübertragungszyklen nach der ersten Stufe der Fehlerkorrektur bestimmen.
-
Zum Beispiel kann das Verfahren 670 beinhalten: Bestimmen der verbleibenden Menge an Datenübertragungszyklen durch den Controller; Durchführen eines Fehlerkorrekturvorgangs unter Verwendung der Fehlerkorrekturkomponente, der eine zweite Stufe der Fehlerkorrektur für die Daten bereitstellt, basierend zumindest teilweise auf den Latenzinformationen, die dem Fehlerkorrekturvorgang entsprechen, der die erste Stufe der Fehlerkorrektur bereitstellt, und dem Zustand der physischen Adressen, die den Daten entsprechen; und Bestimmen von Latenzinformationen, die dem Fehlerkorrekturvorgang entsprechen, der die zweite Stufe der Fehlerkorrektur bereitstellt, durch den Controller. Ferner kann der Controller die verbleibende Anzahl von Datenübertragungszyklen nach der ersten zweiten Stufe der Fehlerkorrektur bestimmen.
-
Zum Beispiel kann das Verfahren 670 beinhalten, die verbleibende Menge an Datenübertragungszyklen zu bestimmen; und unter Verwendung der Fehlerkorrekturkomponente eine Fehlerkorrekturoperation durchzuführen, die eine dritte Stufe der Fehlerkorrektur an den Daten bereitstellt, basierend zumindest teilweise auf den Latenzinformationen, die dem Fehlerkorrekturvorgang entsprechen, der die zweite Stufe der Fehlerkorrektur bereitstellt, und dem Zustand der physischen Adressen, die den Daten entsprechen; und durch den Controller Latenzinformationen zu bestimmen, die dem Fehlerkorrekturvorgang entsprechen, der die dritte Stufe der Fehlerkorrektur bereitstellt. Ferner kann der Controller die verbleibende Menge an Datenübertragungszyklen nach der dritten Stufe der Fehlerkorrektur bestimmen.
-
Zum Beispiel kann das Verfahren 670 beinhalten, die verbleibende Menge an Datenübertragungszyklen zu bestimmen; Unterlassen des Durchführens nachfolgender Iterationen des Fehlerkorrekturvorgangs basierend zumindest teilweise auf den Latenzinformationen, dem Zustand der Vielzahl physischer Adressen, die den Daten entsprechen, oder beidem; und Löschen der Vielzahl physischer Adressen, die den Daten entsprechen, durch den Controller, zumindest teilweise basierend auf den Latenzinformationen, dem Zustand der Vielzahl physischer Adressen, die den Daten entsprechen, der verbleibenden Menge an Datenübertragungszyklen, die unter eine Schwellenmenge von Datenübertragungszyklen fällt, oder Kombinationen davon.
-
Wenngleich in dieser Schrift konkrete Ausführungsformen veranschaulicht und beschrieben wurden, versteht der Durchschnittsfachmann, dass die konkreten gezeigten Ausführungsformen durch eine Anordnung ersetzt werden können, die so berechnet ist, dass sie die gleichen Ergebnisse erzielt. Diese Offenbarung soll Anpassungen oder Variationen einer oder mehrerer Ausführungsformen der vorliegenden Offenbarung abdecken. Es versteht sich, dass die obige Beschreibung veranschaulichend und nicht einschränkend verfasst wurde. Kombinationen der vorstehenden Ausführungsformen und anderer Ausführungsformen, die nicht spezifisch hierin beschrieben sind, sind dem Fachmann nach der Lektüre der vorstehenden Beschreibung ersichtlich. Der Schutzumfang der einen oder mehreren Ausführungsformen der vorliegenden Offenbarung beinhaltet andere Anwendungen, in denen die vorstehenden Strukturen und Prozesse verwendet werden. Daher sollte der Schutzumfang von einer oder mehreren Ausführungsformen der vorliegenden Offenbarung unter Bezugnahme auf die beigefügten Ansprüche bestimmt werden, gemeinsam mit der vollständigen Reichweite von Äquivalenten, zu denen derartige Ansprüche berechtigt sind.
-
In der vorstehenden detaillierten Beschreibung sind verschiedene Merkmale in einer einzelnen Ausführungsform zusammen gruppiert, um die Offenbarung knapper zu gestalten. Dieses Verfahren der Offenbarung ist nicht als eine Absicht reflektierend auszulegen, dass die offenbarten Ausführungsformen der vorliegenden Offenbarung mehr Merkmale verwenden müssen als jeweils in jedem Anspruch ausdrücklich aufgeführt. Vielmehr liegt der erfinderische Gegenstand, wie in den nachfolgenden Ansprüchen reflektiert, in weniger als allen Merkmalen einer einzelnen offenbarten Ausführungsform. Somit werden die folgenden Ansprüche hiermit in die detaillierte Beschreibung aufgenommen, wobei jeder Anspruch für sich als eine separate Ausführungsform steht.