-
HINTERGRUND
-
Die vorliegende Offenbarung bezieht sich auf einen Festkörperspeicher, beispielsweise einen Flash-Speicher, und insbesondere auf das Anpassen von Lesepegeln, die für das Auslesen von im Festkörperspeicher gespeicherten Daten angewandt werden. Da der Flash-Speicher altert oder die Datenhaltezeiten zunehmen, neigen die Programmpegelverteilungen der Flash-Speicherzellen dazu, sich auszubreiten und sich zu verschieben, was zu zunehmenden Lesefehlerraten führt. Ein Anpassen von Lesepegeln, wenn der Flash-Speicher altert oder die Datenhaltezeiten zunehmen, kann die Lesefehlerraten reduzieren. Viele Lesepegelanpassungsalgorithmen sind beim Bestimmen, wann Anpassungen auszuführen und wie die Anpassungen auszuführen sind, jedoch nicht effektiv.
-
DE 10 2009 051 109 A1 beschreibt eine nichtflüchtige Halbleiterspeichervorrichtung aufweisend eine Vielzahl von Zellen zum Speichern von Daten auf einer Basis von nichtflüchtig gespeicherten Ladungen, eine Schreibeinheit zum Schreiben und Löschen von Daten auf der Zelle durch Injizieren oder Extrahieren von Ladungen in die oder von der Zelle, einen Komparator zum Vergleichen der durch eine selektierte Zelle, die auszulesen ist, hervorgebrachten Spannung mit einer Schwelle, eine Leseeinheit zum Ausgeben von Lesedaten auf der Basis des Vergleichsresultats durch den Komparator und eine Schwellenaktualisierungseinheit zum Aktualisieren der Schwelle des Komparators gemäß der durch die selektierte Zelle hervorgebrachten Spannung. Zudem zeigt die
US 2013 / 0 047 045 A1 ein Verfahren zur Erzeugung eines Lesepegel-Fehlersignals.
-
ZUSAMMENFASSUNG
-
Die gegenständliche Verfahrenstechnik bezieht sich auf ein Verfahren für das Verwalten eines Datenspeichersystems, umfassend das Auslesen von angeforderten Daten aus einem Flash-Speicher unter Anwendung einer ersten Lesepegelspannung, das Bestimmen einer Anzahl von ersten Bitwertfehlern und einer Anzahl von zweiten Bitwertfehlern in den ausgelesenen angeforderten Daten, und das Vergleichen eines Fehlerverhältnisses der Anzahl von ersten Bitwertfehlern und der Anzahl von zweiten Bitwertfehlern mit einem Fehlerverhältnisbereich. In bestimmten Aspekten kann das Datenspeichersystem ferner das Anpassen der ersten Lesepegelspannung auf Basis des Vergleichs des Fehlerverhältnisses mit dem Fehlerverhältnisbereich umfassen.
-
In bestimmten Aspekten bezieht sich die gegenständliche Verfahrenstechnik auf ein Datenspeichersystem, umfassend einen Flash-Speicher, eine Steuerungseinheit, die konfiguriert ist, ein Verfahren für das Steuern des Datensystems auszuführen. Die Steuerungseinheit kann ferner konfiguriert sein, Operationen für das Auslesen und Dekodieren einer Vielzahl von Kode-Wörtern von angeforderten Daten aus einem Block im Flash-Speicher unter Anwendung einer ersten Lesepegelspannung, das Bestimmen einer Anzahl von ersten Bitwertfehlern und einer Anzahl von zweiten Bitwertfehlern in den ausgelesenen angefragten Daten, nachdem eine Ziel-Anzahl von Kode-Wörtern ausgelesen und dekodiert worden ist, das Vergleichen eines Fehlerverhältnisses der Anzahl von ersten Bitwertfehlern und der Anzahl von zweiten Bitwertfehlern mit einem Fehlerverhältnisbereich, und das Anpassen der ersten Lesepegelspannung auf Basis des Vergleichs des Fehlerverhältnisses mit dem Fehlerverhältnisbereich durchzuführen.
-
Demgemäß wird ein Verfahren für das Verwalten eines Datenspeichersystems sowie ein Datenspeichersystem gemäß den unabhängigen Ansprüchen angezeigt.
-
Figurenliste
-
- 1 ist ein Blockschaltbild, das Komponenten eines Datenspeichersystems gemäß Aspekten der gegenständlichen Verfahrenstechnik abbildet.
- 2 umfasst einen beispielhaften Graphen von Zellverteilungen auf vier Programmpegel eines MLC-Flash-Speichers und einen beispielhaften Graphen, welcher die Beziehung zwischen LSB-Lesefehlern, variierenden Lesepegelspannungen, und einem LSB-Fehlerverhältnis gemäß Aspekten der gegenständlichen Verfahrenstechnik veranschaulicht.
- 3 zeigt einen beispielhaften Graphen, welcher die Beziehung zwischen den Gesamt-LSB-Lesefehlern und der Lesepegelspannung gemäß Aspekten der gegenständlichen Verfahrenstechnik zeigt.
- 4 zeigt ein Flussdiagramm eines beispielhaften Verfahrens für das Verwalten eines Datenspeichersystems gemäß Aspekten der gegenständlichen Verfahrenstechnik.
- 5 zeigt ein Flussdiagramm eines beispielhaften Verfahrens für das Anpassen eines Lesespannungspegels gemäß Aspekten der gegenständlichen Verfahrenstechnik.
- 6 zeigt ein Flussdiagramm eines beispielhaften Verfahrens für das Kalibrieren und das Anpassen einer Lesepegelspannung gemäß Aspekten der gegenständlichen Verfahrenstechnik.
- 7 zeigt ein Flussdiagramm eines beispielhaften Verfahrens für das Optimieren einer Lesepegelspannung gemäß Aspekten der gegenständlichen Verfahrenstechnik.
- 8 bildet ein Flussdiagramm eines beispielhaften Verfahrens für das Kalibrieren und Anpassen einer Lesepegelspannung gemäß Aspekten der gegenständlichen Verfahrenstechnik ab.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Die nachstehend angeführte, ausführliche Beschreibung ist als eine Beschreibung von verschiedenen Konfigurationen der vorliegenden Offenbarung zu verstehen, und soll nicht die einzigen Konfigurationen darstellen, in denen die vorliegende Offenbarung in die Praxis umgesetzt werden kann. Die angehängten Zeichnungen sind hierin beinhaltet und machen einen Teil der ausführlichen Beschreibung aus. Die ausführliche Beschreibung umfasst spezifische Details, um für ein umfassendes Verstehen der vorliegenden Offenbarung zu sorgen. Es ist jedoch offenkundig, dass die vorliegende Offenbarung ohne diese spezifischen Details in die Praxis umgesetzt werden kann. In einigen Beispielen werden Strukturen und Komponenten in Blockschaltbildform gezeigt, um ein Verschleiern der Konzepte der vorliegenden Offenbarung zu unterbinden. Ähnliche Komponenten sind für ein leichteres Verstehen mit identischen Elementzahlen gekennzeichnet.
-
Ein Flash-Speicher wird unter Anwendung von Lesepegelspannungen gelesen. Sind die Lesepegelspannungen auf optimale Pegel eingestellt, dann kann die Bitfehlerrate (BER) minimiert sein. Da Flash-Speichervorrichtungen jedoch altern oder Datenhaltezeiten in den Flash-Speichervorrichtungen zunehmen, verschieben sich die optimalen Lesepegelspannungen. Wie nachstehend ausführlich beschrieben wird, stellt die gegenständliche Verfahrenstechnik Systeme und Verfahren für adaptive Lesepegelspannungsanpassungen bereit. Die gegenständliche Verfahrenstechnik bestimmt in effizienter Art und Weise, wann Lesepegelspannungen anzupassen sind, und kann Anpassungen unter Anwendung einer während Standardleseoperationen gewonnenen Metrik ausführen. Die gegenständliche Verfahrenstechnik bestimmt ferner in effizienter Art und Weise, wann Kalibrierungsoperationen auszuführen sind, die zusätzliche Leseoperationen erfordern können. Sowohl die Anpassungs- als auch die Kalibrierungs-Operationen ermöglichen es dem System, die Lesepegelspannungen anzupassen, um der Alterung der Flash-Speichervorrichtungen bei gleichzeitiger Minimierung der Anzahl von Extra-Operationen Rechnung zu tragen, welche ausgeführt werden, um die Anpassungen oder Kalibrierungen durchzuführen.
-
1 ist ein Blockschaltbild, das Komponenten eines beispielhaften Datenspeichersystems 100 gemäß verschiedenen Implementierungen der gegenständlichen Verfahrenstechnik abbildet. Datenspeichersystem 100 kann eine Steuerungseinheit 105, ein Speichermedium 110, eine Flash-Speichervorrichtung 115 und eine Schnittstelle 120 umfassen. Steuerungseinheit 105 kann Speichermedium 110 für eine temporäre Speicherung von Daten und Informationen anwenden, die für das Verwalten von Datenspeichersystem 100 verwendet werden. Steuerungseinheit 105 kann mehrere interne (nicht gezeigte) Komponenten, beispielsweise einen oder mehrere Prozessoren, einen Nur-Lese-Speicher (ROM), eine Flash-Komponentenschnittstelle (beispielsweise einen Mulitplexer für das Verwalten von Befehls- und Daten-Transport entlang einer Verbindung zu Flash-Speichervorrichtung 115), eine I/O-Schnittstelle, ein Fehlerkorrekturkode(ECC)-Modul und ähnliches umfassen. Das ECC-Modul kann konfiguriert sein, Kode-Wörter zu erzeugen, die in der Flash-Speichervorrichtung 115 von den vom Host 125 empfangenen Daten zu speichern sind, und Kode-Wörter zu dekodieren, die aus der Flash-Speichervorrichtung 115 ausgelesen werden, bevor die dekodierten Daten an den Host 125 gesendet werden. Verschiedene ECC-Lösungen können angewandt werden, um Daten für die Erzeugung der Kode-Wörter zu kodieren und zu dekodieren. In einigen Aspekten können ein oder mehrere Elemente von Steuerungseinheit 105 in einem einzigen Chip enthalten sein. In anderen Aspekten können die Elemente auf mehreren eigenständigen Komponenten implementiert sein.
-
Steuerungseinheit 105 kann durch Anwendung beispielsweise eines oder mehrerer Prozessoren konfiguriert sein, einen Kode oder Instruktionen auszuführen, um die hierin beschriebene(n) Operationen und Funktionalität auszuführen, den Anforderungsablauf und Adressabbildungen zu verwalten, und Berechnungen auszuführen und Befehle zu erzeugen. Der eine oder die mehreren Prozessoren von Steuerungseinheit 105 können konfiguriert sein, die Operation der Komponenten in der Steuerungseinheit 105 und dem Datenspeichersystem 100 zu überwachen und zu steuern. Der eine oder die mehreren Prozessoren können einen Allzweck-Mikroprozessor, eine Mikrosteuerungseinheit, einen digitalen Signalprozessor (DSP), eine anwendungsspezifische integrierte Schaltung (ASIC), eine feldprogrammierbare Gatteranordnung (FPGA), eine programmierbare Logikvorrichtung (PLD), eine Steuerungseinheit, eine Zustandsmaschine, eine gattergesteuerte Logik, diskrete Hardware-Komponenten oder eine Kombination des zuvor Angeführten umfassen. Eine oder mehrere Befehlsabfolgen können als Firmware auf ROM innerhalb von Steuerungseinheit 105 gespeichert sein. Eine oder mehrere Befehlsabfolgen können in dem Speichermedium 110, der Flash-Speichervorrichtung 115, gespeichert sein und daraus ausgelesen werden, oder von der Host-Vorrichtung 125 (beispielsweise über eine Host-Schnittstelle 120) empfangen werden. ROM, Speichermedium 110, Flash-Speichervorrichtung 115 stellen Beispiele von maschinen- oder computerlesbaren Medien dar, auf denen die/der durch Steuerungseinheit 105 ausführbare(n) Befehle/Kode gespeichert sein kann/können. Maschinen- oder computerlesbare Medien können sich allgemein auf beliebige greifbare und/oder nicht-flüchtige Medien beziehen, die für das Bereitstellen von Befehlen an die Steuerungseinheit 105 und/oder deren Prozessor angewandt werden, umfassend sowohl flüchtige Medien, beispielsweise einen dynamischen Speicher, der für Speichermedium 110 oder für Puffer innerhalb Steuerungseinheit 105 angewandt wird, als auch nicht-flüchtige Medien, beispielsweise elektronische Medien, optische Medien und magnetische Medien.
-
Das Datenspeichersystem 100 kann ferner eine Host-Schnittstelle 120 umfassen. Host-Schnittstelle 120 kann konfiguriert sein, mit Host-Vorrichtung 125 gekoppelt zu sein, um Daten von Host-Vorrichtung 125 zu empfangen und Daten an diese zu senden. Host-Schnittstelle 120 kann sowohl elektrische als auch physische Verbindungen für ein Wirkkoppeln von Host-Vorrichtung 125 mit Steuerungseinheit 105 umfassen. Host-Schnittstelle 120 kann konfiguriert sein, Daten, Adressen und Steuersignale zwischen Host-Vorrichtung 125 und Steuerungseinheit 105 zu übermitteln. Auf diese Art und Weise ist Steuerungseinheit 105 konfiguriert, die von Host-Vorrichtung 125 empfangenen Daten in Flash-Speichervorrichtung 115 als Antwort auf einen Schreibbefehl von Host-Vorrichtung 125 zu speichern, und die in Flash-Speichervorrichtung 115 gespeicherten Daten auszulesen, und die ausgelesenen Daten über Host-Schnittstelle 120 als Antwort auf einen Lesebefehl von Host-Vorrichtung 125 an Host-Vorrichtung 125 zu übertragen. Schnittstelle 120 kann alle proprietären oder Standard-Schnittstellenprotokolle anwenden, umfassend, ohne darauf eingeschränkt zu sein, die Serielle Weiterentwickelte Anschlusstechnik (SATA), die Weiterentwickelte Anschlusstechnik (ATA), die Kleinrechnersystemschnittstelle (SCSI), die erweiterte PCI (PCI-X), den Faserkanal, die Seriell Verbundene SCSI (SAS), die Sicherheits-Digital (SD), die Eingebettete Multimediakarte (EMMC), den Universellen Flash-Speicher (UFS) und den Peripheren Komponentenverbindungsexpress (PCIe).
-
Gemäß Aspekten der gegenständlichen Verfahrenstechnik kann Host-Schnittstelle 120 eine drahtlose Verbindung zwischen Host-Vorrichtung 125 und Datenspeichersystem 100 unter Anwendung von standardisierten oder proprietären Drahtlosschnittstellenstandards und -protokollen implementieren. In dieser Hinsicht können Host-Schnittstelle 120 oder andere Komponenten von Datenspeichersystem 100 einen drahtlosen Sende-Empfänger umfassen, um Host-Vorrichtung 125 und Datenspeichersystem 100 drahtlos miteinander zu verbinden.
-
Host-Vorrichtung 125 stellt eine Vorrichtung dar, die konfiguriert ist, mit Datenspeichersystem 100 gekoppelt zu sein und Daten im Datenspeichersystem 100 zu speichern. Host-Vorrichtung 125 kann ein Rechnersystem, wie beispielsweise ein PersonalComputer, ein Server, eine Workstation, ein Laptop-Computer, ein PDA, ein Smartphone und ähnliches, sein. Alternativ dazu kann Host-Vorrichtung 125 eine elektronische Vorrichtung, beispielsweise eine Digitalkamera, ein digitaler Audio-Player, ein digitaler Videorekorder und ähnliches, sein. Host-Vorrichtung 125 kann logisches Adressieren für Datenbefehle anwenden, die an Datenspeichersystem 100 gesandt werden. Datenspeichersystem 100 kann dann die von Host-Vorrichtung 125 empfangenen logischen Adressen zu physischen Adressen von Speicherstellen in der Flash-Speichervorrichtung 115 abbilden.
-
In einigen Aspekten stellt Speichermedium 110 einen flüchtigen Speicher dar, der dazu verwendet wird, die zur Verwaltung von Datenspeichersystem 100 angewandten Daten und Informationen vorübergehend zu speichern. Gemäß Aspekten der vorliegenden Offenbarung ist Speichermedium 110 ein Direktzugriffsspeicher (RAM), beispielsweise ein Doppeldatenraten(DDR)-RAM. Andere RAM-Typen können ebenfalls für ein Implementieren von Speichermedium 110 eingesetzt werden. Speichermedium 110 kann durch Anwendung eines einzelnen RAM-Moduls oder mehrerer RAM-Module implementiert sein. Obwohl Speichermedium 110 als von Steuerungseinheit 105 unterschiedlich abgebildet wird, wird es für den Fachmann offenkundig sein, dass Speichermedium 110 in Steuerungseinheit 105 integriert sein kann, ohne vom Schutzumfang der vorliegenden Offenbarung abzuweichen. Alternativ dazu kann Speichermedium 110 ein nicht-flüchtiger Speicher, beispielsweise eine Magnetplatte, ein Flash-Speicher, eine periphere SSD und ähnliches, sein.
-
Flash-Speichervorrichtung 115 stellt eine nicht-flüchtige Speichervorrichtung für das Speichern von Daten dar. Gemäß Aspekten der vorliegenden Offenbarung umfasst Flash-Speichervorrichtung 115 beispielsweise einen NAND-Flash-Speicher. Der NAND-Flash-Speicher kann in Seiten und Blöcken organisiert sein. Jeder der Blöcke im NAND-Flash-Speicher kann eine Anzahl von Seiten, beispielsweise 256, umfassen, und jede der Seiten kann einen oder mehrere Sektoren oder Abschnitte von Daten enthalten. Flash-Speichervorrichtung 115 kann eine(n) einzelne(n) Flash-Speichervorrichtung oder -Chip umfassen, oder kann mehrere Flash-Speichervorrichtungen oder -Chips, die in mehreren Kanälen angeordnet sind, umfassen. Flash-Speichervorrichtung 115 ist nicht auf eine bestimmte Kapazität oder Konfiguration eingeschränkt. Beispielsweise können die Anzahl von physischen Blöcken, die Anzahl von physischen Seiten pro physischem Block, die Anzahl von Sektoren pro physischer Seite und/oder die Größe der Sektoren variieren.
-
Flash-Speichervorrichtung 115 kann Einzel-Pegel-Zellen(SLC)-Speicher, Mehrfach-Pegel-Zellen(MLC)-Speicher und/oder Drei-Pegel-Zellen(TLC)-Speicher umfassen. In einigen Aspekten kann Flash-Speichervorrichtung 115 eine oder mehrere Hybrid-Speichervorrichtungen umfassen, die in einem oder mehreren eines SLC-, MLC- oder TLC-Modus funktionieren können. Die gegenständliche Verfahrenstechnik ist nicht auf diese Speicherarten begrenzt und kann auf Flash-Speicherzellen angewandt werden, die unter Anwendung von mehr als drei Pegeln (beispielsweise 4 Bits pro Zelle, 5 Bits pro Zelle etc.) konfiguriert und in Betrieb sind.
-
Ein MLC NAND-Flash-Speicher sorgt dafür, dass mehr als ein Bit pro Zelle durch Anwendung mehrerer Pegel elektrischer Ladung gespeichert wird, die auf die Floating-Gates von dessen Zellen angewandt wird, um einen Mehrfach-Leitfähigkeitszustand zu erzielen, wobei jeder bei einem unterschiedlichen Spannungsschwellenwert (VT ) auftritt. Die MLC NAND-Zelle kann fähig sein, einen von vier Programmierpegeln (Ladungspegel) pro Zelle zu speichern, wobei zwei logische Bits von Informationen pro Zelle hervorgebracht werden: das höchstwertige Bit (MSB) und das niedrigstwertige Bit (LSB). Diese zwei Bits von den Zellen können entsprechende MSB- beziehungsweise LSB-Seiten bilden.
-
2 umfasst einen beispielhaften Graphen von Zellverteilungen auf vier Programmpegel eines MLC-Flash-Speichers und einen beispielhaften Graphen, welcher die Beziehung zwischen LSB-Lesefehlern veranschaulicht, variierende Lesepegelspannungen für Lesepegel 2 (RL2), und ein LSB-Fehlerverhältnis, das nachstehend ausführlich beschrieben wird. Der Graph 206 veranschaulicht die Verteilungen von Flash-Speicherzellen auf vier Programmpegel: L0, L1, L2 und L3. Bei vier Programmpegeln kann jede Flash-Speicherzelle zwei Datenbits, ein LSB und ein MSB, speichern. Der LSB-Wert für jeden der Programmpegel wird im Graph 206 gemäß einem Beispiel angezeigt. Insbesondere entsprechen L0 und L1 einem LSB-Wert von „1“, wobei L2 und L3 einem LSB-Wert von „0“ entsprechen.
-
Lesepegel 2 (RL2) kann angewandt werden, um Flash-Speicherzellen auszulesen und zu unterscheiden, die mit einem LSB-Wert von „1“ (L0 und L1) aus Flash-Speicherzellen programmiert sind, die mit einem LSB-Wert von „0“ (L2 und L3) programmiert sind. Wie im Graphen 206 abgebildet, können sich Programmpegelverteilungen überlappen, was zu Lesefehlern führt. Die sich überlappenden Verteilungen können sich aufgrund der Flash-Speichervorrichtungsalterung (ansteigende Programmier/Lösch(P/E)-Zyklen) oder ansteigenden Datenhaltezeiten ergeben. Bei sich überlappenden Programmpegelverteilungen wirken sich die für Leseoperationen angewandten Lesepegelspannungen auf Lesefehler unterschiedlich aus.
-
Der Graph 206 veranschaulicht zwei unterschiedliche Lesepegelspannungen für RL2, RL2 204 und RL2 205. RL2 204 kann die Anfangseinstellung für RL2 sein und RL2 205 kann eine optimale Einstellung für RL2 darstellen. Die schraffierten Bereiche der Verteilungskurven für L1 und L2 stellen Auslese- oder Bitwertfehler dar. Beispielsweise stellt Bereich 211, unter Anwendung von RL2 204, Flash-Speicherzellen dar, die mit einem LSB-Wert von „0“ (beispielsweise L2) programmiert, jedoch irrtümlicherweise als einen LSB-Wert von „1“ (beispielsweise L1) enthaltend ausgelesen wurden. Dieser erste Auslese-Bitwertfehlertyp wird mit err 0→1 angegeben. In ähnlicher Weise stellen die Bereiche 212, 213 und 214 Flash-Speicherzellen dar, die mit einem LSB-Wert von „1“ (beispielsweise L1) programmiert, jedoch irrtümlicherweise als einen LSB-Wert von „0“ (beispielsweise L2) enthaltend ausgelesen wurden. Dieser zweite Auslese- oder Bitwertfehlertyp wird mit err 1→0 angegeben. Durch Anwendung von RL2 205 weist Bereich 212 nicht mehr länger Lesefehler auf, und Bereich 214 wechselt vom Darstellen des zweiten Lesefehlertyps zum Darstellen des ersten Lesefehlertyps.
-
Der beispielhafte Graph 207 bildet die Beziehung zwischen den Gesamt-LSB-Lesefehlern und RL2 ab. Die Gesamt-LSB-Lesefehler stellen die Summe der Anzahl des ersten und des zweiten Lesefehlertyps, err 0→1 und err 1→0, dar. Die drei Kurven 208, 209 und 210 stellen drei unterschiedliche Phasen in der Lebensdauer einer Flash-Speichervorrichtung dar. Kurve 208 kann eine spätere Phase in der Lebensdauer einer Flash-Speichervorrichtung darstellen, wie sie durch eine P/E-Zyklusanzahl oder eine Datenhaltezeit gemessen wird, Kurve 209 kann eine mittlere Phase in der Lebensdauer der Flash-Speichervorrichtung darstellen, und Kurve 210 kann eine frühe Phase in der Lebensdauer der Flash-Speichervorrichtung darstellen. Ebenfalls auf Graph 207 ist eine Linie angezeigt, die einen Schwellenwert für eine Lesefehleranzahl darstellt, welche die Fähigkeit des ECC im Datenspeichersystem übersteigt. Die Gesamtanzahl von Lesefehlern muss unterhalb der Schwellenwertlinie bleiben, um zu ermöglichen, dass das Datenspeichersystem jegliche Lesefehler korrigiert und die angeforderten Daten an ein Host-System unter Anwendung der ECC-Funktionalität zurücksendet. Kurven 208, 209 und 210 sollen die relativen Werte in unterschiedlichen Lebensdauerphasen veranschaulichen, wobei die IstWerte der P/E-Zyklusanzahl oder der Haltezeit für das Verstehen der gegenständlichen Verfahrenstechnik weder bereitgestellt werden noch dafür notwendig sind.
-
Gemäß Aspekten der gegenständlichen Verfahrenstechnik kann eine optimale Lesepegelspannung bestimmt sein, die Lesepegelspannung zu sein, die zur geringsten Lesefehleranzahl führt, was durch die Sterne auf Kurven 208, 209 und 210 dargestellt wird. Sobald sich RL2 in eine oder die andere Richtung weg vom optimalen Pegel bewegt, nimmt die Gesamtanzahl von LSB-Lesefehlern zu. Auch im Zusammenhang mit jeder der Kurven 208, 209 und 210 gezeigt sind LSB-Fehlerverhältnisse, die dadurch bestimmt werden, dass der erste Lesefehler(err 0→1)-Typ durch den zweiten Lesefehler(err 1→0)-Typ dividiert wird. Obwohl der Bereich von den auf Kurven 208, 209 und 210 gezeigten Fehlerverhältnissen variiert, bleibt das Fehlerverhältnis beim optimalen Wert für RL2 innerhalb eines relativ begrenzten Bereichs (beispielsweise 1,1 bis 1,3) während der unterschiedlichen Lebensdauerphasen, im Vergleich zu den Gesamtbereichen (beispielsweise 0,04 bis 20; 0,1 bis 5,8; 0,1 bis 6). Wie nachstehend erläutert wird, zieht die gegenständliche Verfahrenstechnik Nutzen aus diesem relativ begrenzten Bereich des LSB-Fehlerverhältnisses, um das LSB-Fehlerverhältnis als ein Signal für eine Lesepegelspannungsanpassung in Anspruch zu nehmen.
-
Labor-Tests und -Simulationen haben gezeigt, dass für RL1 und RL3 optimale Werte, die dazu verwendet werden, die in den Flash-Speicherzellen gespeicherten MSB-Werte zu bestimmen, gut mit dem optimalen Wert für RL2 korrelieren. Demgemäß bestimmt die gegenständliche Verfahrenstechnik Anpassungen an RL2 unter Anwendung der hierin beschriebenen Algorithmen und führt entsprechende Anpassungen an RL1 und RL3 durch. Die Anpassungen an RL1 und RL3 können denselben Wert wie die Anpassungen an RL2 aufweisen, oder die Anpassungen können von denjenigen, die auf RL2 angewandt werden, maßstabgetreu umgesetzt werden. Die entsprechenden Anpassungen können auf Labortest- und/oder Simulations-Daten basieren. Alternativ dazu können, wie hierin für RL2 beschriebene, ähnliche Algorithmen angepasst werden, um für ein Anpassen von RL1 und RL3 angewandt zu werden.
-
3 bildet eine Version des Graphen 207 von 2 mit einer Anzahl von Zonen ab, die auf Basis von Schwellenwerten von Gesamt-LSB-Lesefehlern definiert sind. Der Graph 300 zeigt vier Fehlerschwellenwerte: Th1, Th2, Th23 und Th3. Zone 0 entspricht einer Region, in der die Gesamt-LSB-Lesefehler kleiner oder gleich Th1 sind. Gemäß Aspekten der gegenständlichen Verfahrenstechnik gilt die Anzahl von Lesefehlern innerhalb von Zone 0 als niedrig genug, dass keine Anpassung an die Lesepegelspannung ausgeführt werden kann, um Overhead-Operationen innerhalb des Datenspeichersystems zu reduzieren.
-
Zone 1entspricht einer Region, in der die Gesamt-LSB-Lesefehler größer als Th1 und kleiner oder gleich Th2 sind. Gemäß Aspekten der gegenständlichen Verfahrenstechnik wird die Lesepegelspannung, wenn die Gesamt-LSB-Lesefehler sich in Zone 1 bewegen, unter Anwendung der hierin beschriebenen Algorithmen angepasst. Die Anpassung kann für diese Zone durchgeführt werden, um die Dekodierereffizienz zu verbessern und/oder um einem unkorrigierbaren Pegel von Lesefehlern auf Basis von ECC-Kapazitäten Grenzen zu setzen.
-
Zone 2 entspricht einer Region, in der die Gesamt-LSB-Lesefehler größer als Th2 und kleiner oder gleich Th3 sind. Gemäß Aspekten der gegenständlichen Verfahrenstechnik wird die Lesepegelspannung, wenn die Gesamt-LSB-Lesefehler sich innerhalb von Zone 2 bewegen, gemäß den hierin beschriebenen Algorithmen kalibriert. Darüber hinaus kann ein Bereich der LSB-Fehlerverhältnisse, die in den hierin beschriebenen Algorithmen angewandt werden, ebenfalls angepasst werden. Wie in 3 gezeigt, ist Zone 2 in zwei Unterzonen aufgeteilt: Zone 2 - hoch und Zone 2 - niedrig. Zone 2 - niedrig entspricht der Region, in der die Gesamt-LSB-Lesefehler größer als Th2 und kleiner oder gleich Th23 sind. Zone 2 - hoch entspricht der Region, in der die Gesamt-LSB-Lesefehler größer als Th23 und kleiner oder gleich Th3 sind. Wenn die Gesamt-LSB-Lesefehler in den Bereich von Zone 2 - hoch fallen, dann nähert sich der Fehlerzählwert an den Schwellenwert der ECC-Kapazitäten im Datenspeichersystem an. Demgemäß können zusätzliche Schritte ausgeführt werden, um die Daten in den Blöcken, die ausgelesen werden, aufzubewahren. Entspricht beispielsweise eine Verweilzeit von den im Block gespeicherten Daten einem Schwellenwert, dann kann der Block für eine Speicherbereinigungsoperation vorgesehen sein. Ist die Verweilzeit unterhalb des Schwellenwerts der gespeicherten Daten, dann kann eine variable Kode-Rate, die für die in dem Block gespeicherten Daten angewandt wird, evaluiert werden, wenn das System für variable Kode-Raten konfiguriert ist, und diese anwendet. Ist die variable Kode-Rate zum Beispiel nicht bereits am niedrigsten Wert, dann kann die Kode-Rate für den Block abgeändert werden. Ist die variable Kode-Rate für den Block bereits am niedrigsten Pegel, dann können die im Block gespeicherten Daten bewegt und der Block außer Betrieb gesetzt werden. Die Schwellenwerte von Gesamt-LSB-Lesefehlern sind nicht auf bestimmte Werte begrenzt und können auf Basis von Labor- und/oder Simulations-Daten eingestellt werden.
-
4 zeigt ein Flussdiagramm eines beispielhaften Verfahrens 400 für das Verwalten von Lesepegelspannungen, die in Datenspeichersystem 100 angewandt werden. Zu Zwecken der Erläuterung werden die verschiedenen Blöcke des beispielhaften Verfahrens 400 hierin mit Bezug auf die hierin beschriebenen Komponenten und/oder Verfahren beschrieben. Der eine oder die mehreren der Blöcke von Verfahren 400 können beispielsweise durch einen oder mehrere Prozessoren, umfassend beispielsweise Steuerungseinheit 105 von 1, oder eine(n) oder mehrere Komponenten oder Prozessoren von Steuerungseinheit 105 implementiert sein. In einigen Implementierungen können einer oder mehrere der Blöcke von anderen Blöcken beabstandet, und durch eine(n) oder mehrere unterschiedliche Prozessoren oder Steuerungseinheiten implementiert sein. Die Blöcke des beispielhaften Verfahrens 100 werden zu weiteren erläuternden Zwecken als in Serie oder linear auftretend beschrieben. Mehrere Blöcke des beispielhaften Verfahrens 100 können jedoch parallel auftreten. Darüber hinaus müssen die Blöcke des beispielhaften Verfahrens 400 nicht in der gezeigten Reihenfolge ausgeführt werden und/oder einer oder mehrere der Blöcke des beispielhaften Verfahrens 100 müssen nicht ausgeführt werden.
-
Steuerungseinheit
105 kann Metadaten aufrechterhalten, die entsprechenden Blöcken des Flash-Speichers zugeordnet sind, die dazu verwendet werden, um zu bestimmen, ob das beispielhafte Verfahren
400 initiiert werden soll, und um zu bestimmen, ob eine Lesepegelspannung angepasst oder kalibriert werden soll. Die nachstehende Tabelle 4 liefert Beispiele der Block-Metadaten.
TABELLE 4
Geltungs bereich | Name | Größe [Bits] | Beschreibung |
BlkSet | Statuszeichen | 4 | Block Offen; erstes Auslesen auf geschlossenem Block, erstes Auslesen in Zone 2; mit Statuszeichen versehen für Verhältnisänderung |
Blk | Akkumulierungszählwert | 3 | Anzahl von CW-Auslesung Wenn ≥ Zielwert,wird Statistik zur Berechnung von BER- und Verhältnis-Metrik angewandt |
Blk | RL2offset | 2 | RL2 Offset ist nach dem Programmieren der ersten Seite anzuwenden Anfangs(0-Verweilzeit)-Lesepegel |
Blk | RL2Shift | 3 | Delta-RL2 zur Rückverfolgung eines optimalen RL während Verweilzeit. Wert wird zurückgesetzt, wenn Block einen P/E-Zyklus durchläuft |
Blk | Gesamtfehler | 10, 10 | Akkumulierter Fehler Err 1→0, Akkumulierter Fehler Err 0→1 |
Blk | Fehlerverhältnis | 4 | Statistisch berechnetes LSB-Fehlerverhältnis |
BlkSet | Verweilzeit | 12 | Block-Alter(Zeit-Temperatur)-Kennzeichen von erster Seite |
-
Tabelle 4 zeigt den Geltungsbereich, den Namen, die Größe und die Beschreibung von unterschiedlichen Metadaten, die als Teil der Block-Metadaten enthalten sein können. Der Geltungsbereich kann die Speichereinheit anzeigen, auf welche die Metadaten anwendbar sind. Beispielsweise zeigt Blk an, dass der Geltungsbereich der Metadaten ein Einzel-Block ist, und BlkSet zeigt an, dass der Geltungsbereich der Metadaten ein Streifen von Blöcken ist, die gleichzeitig programmiert sind (beispielsweise eine redundante Anordnung eines autarken Platten(RAID)-Streifens).
-
Wie in Tabelle 4 gezeigt, können die Block-Metadaten Statuszeichen enthalten, die Folgendem zugeordnet sind: Block offen, Erstes Auslesen auf geschlossenen Blöcken, erstes Auslesen in Zone 2 und einem Statuszeichen für Verhältnisänderung, was in verschiedenen Schritten des Verfahrens 400 angewandt werden kann. Statuszeichen „Block offen“ kann anzeigen, ob ein Block offen ist oder nicht. Der Block wird als offen erachtet, wenn die Steuerungseinheit 105 auf die letzte Seite des Blocks keine Daten geschrieben hat. Ein Block kann geschlossen sein, wenn alle Seiten innerhalb des Blocks beschrieben worden sind, oder in einigen Aspekten der gegenständlichen Verfahrenstechnik kann ein Block geschlossen sein, nachdem eine Zeitperiode abgelaufen ist, nachdem die erste oder die letzte Seite im Block beschrieben worden ist, auch wenn Seiten im Block für eine Datenspeicherung nicht benutzt werden.
-
Die Block-Metadaten können ein Statuszeichen umfassen, das dem ersten Auslesen auf geschlossenem Block zugeordnet ist. Das Statuszeichen „erstes Auslesen auf geschlossenem Block“ kann anzeigen, ob ein Block das erste Mal ausgelesen wird, nachdem der Block geschlossen worden ist. Das Statuszeichen „erstes Auslesen in Zone 2“ kann anzeigen, ob ein Block das erste Mal ausgelesen wird, seitdem er geschlossen ist, wobei die Gesamtanzahl von LSB-Fehlern bestimmt ist, in Zone 2 zu sein. Das Statuszeichen „mit Statuszeichen versehen für Verhältnisänderung“ kann anzeigen, ob ein Ziel-LSB-Fehlerverhältnis für ein Anpassen auf Basis von Bestimmungen, die während der nachstehend diskutierten Verfahren durchgeführt worden sind, mit einem Statuszeichen versehen worden ist.
-
Die Block-Metadaten können ferner RL2offset und RL2Shift umfassen, die in Kombination mit RL2Start angewandt werden, um RL2 für Lese-Operationen zu erzeugen. RL2Start stellt eine Anfangslesepegelspannung dar und kann einer optimalen Lesepegelspannung in einer frühen Lebensdauerphase einer Flash-Speichervorrichtung entsprechen, die eine Null-Verweilzeit für die in der Flash-Speichervorrichtung gespeicherten Daten aufweist. RL2Start kann beispielsweise anhand von NAND-Charakterisierungsdaten bestimmt werden und kann unterschiedliche Werte aufweisen, die unterschiedlichen Lebensdauerphasen, P/E-Zyklen, der Blöcke in der Flash-Speichervorrichtung entsprechen.
-
RL2offset kann durch Anwendung der nachstehend diskutierten Verfahren bestimmt und zu RL2Start hinzuaddiert werden, um Block-Block- und/oder Nacktchip-Nacktchip-Variationen in den Verteilungen von Programmierpegeln in beispielsweise der Flash-Speichervorrichtung Rechnung zu tragen. RL2offset kann über P/E-Zyklen der jeweiligen Blöcke abgespeichert werden. RL2Shift kann durch Anwendung der nachstehend diskutierten Verfahren bestimmt und zu RL2Start und RL2offset hinzugefügt werden, um den Änderungen in den Verteilungen von Programmierpegeln in der Flash-Speichervorrichtung aufgrund von Haltezeit oder Verweilzeit der beispielsweise in den Blöcken der Flash-Speichervorrichtung gespeicherten Daten Rechnung zu tragen. RL2Shift kann erst dann, wenn ein entsprechender Block geschlossen worden ist, zu den anderen zwei Komponenten von RL2 hinzuaddiert werden, und kann neu eingestellt werden, wenn der entsprechende Block gelöscht wird (beispielsweise das Ende eines P/E-Zyklus).
-
Die Steuerungseinheit 105 kann das Statuszeichen „offener Block“ setzen, um anzuzeigen, dass ein Block gerade programmiert wird. In einigen Aspekten kann die Steuerungseinheit 105 das Verfahren 400 für ein Anpassen und Kalibrieren der Lesepegelspannung für den Block nicht starten, während das Statuszeichen „offener Block“ eingestellt wird. Das Programmieren einer Seite kann die Lesepegelspannungen von Seiten nahe der programmierten Seite beispielsweise aufgrund von Zwischenzelleninterferenz (ICI) beeinträchtigen. Demgemäß kann die Lesepegelspannung angepasst werden, wenn das Statuszeichen „offener Block“ gelöscht worden ist, wodurch angezeigt wird, dass der Block geschlossen ist.
-
Die Steuerungseinheit 105 kann das Statuszeichen „offener Block“ löschen, wenn eine letzte Seite des Blocks programmiert wird. Alternativ dazu kann die Steuerungseinheit 105 das Statuszeichen „offener Block“ löschen, wenn das Programmieren des Blocks nicht innerhalb eines vorbestimmten Zeitschwellenwerts, beispielsweise drei Minuten, eine Minute, dreißig Sekunden etc., abgeschlossen wird. Das Programmieren eines Blocks dauert vielleicht Sekunden, bis es abgeschlossen ist. Der vorbestimmte Zeitschwellenwert könnte auf Basis von NAND-Charakterisierungsdaten bestimmt sein. Der Block kann für ein weiteres Programmieren im aktuellen P/E-Zyklus am Ende des Zeitschwellenwerts geschlossen werden.
-
In Block 401 kann Steuerungseinheit 105 angeforderte Daten aus der Flash-Speichervorrichtung 115 unter Anwendung einer ersten Lesepegelspannung auslesen. Wie zuvor angeführt, kann die erste Lesepegelspannung RL2 sein, was die Summe von RL2Start und RL2offset ist. In Block 402 kann die Steuerungseinheit 105 eine Anzahl von ersten Bitwertfehlern und eine Anzahl von zweiten Bitwertfehlern in den ausgelesenen Daten bestimmen. Die Anzahl von ersten und zweiten Bitwertfehlern kann durch ein ECC-Modul bestimmt und bereitgestellt werden, das konfiguriert ist, Lesefehler beispielsweise unter Anwendung von Korrektur-Kodes und -Algorithmen, beispielsweise LDPC, zu korrigieren. Die ersten Bitwertfehler können err 0→1 entsprechen, und die zweiten Bitwertfehler können err1→0 entsprechen. Die Steuerungseinheit 105 kann auf einen Gesamtfehlerzählwert für die entsprechenden Bitwertfehlertypen in den Block-Metadaten durch die bestimmten Fehleranzahlen erhöhen. Die Steuerungseinheit 105 kann auch das Fehlerverhältnis (beispielsweise das LSB-Fehlerverhältnis) aktualisieren, das in den Block-Metadaten auf Basis der aktualisierten Gesamtfehlerzählwerte gespeichert ist. Die Steuerungseinheit 105 kann den Akkumulierungszählwert in den Block-Metadaten erhöhen, was die Anzahl von Kode-Wörtern anzeigt, die aus dem Block ab dem Zeitpunkt ausgelesen wurden, an dem der Akkumulierungszählwert neu eingestellt worden ist. In Block 403 kann die Steuerungseinheit 105 den Akkumulierungszählwert mit einem vorbestimmten Schwellenwert vergleichen. Ist der Akkumulierungszählwert größer oder gleich dem vorbestimmten Schwellenwert, dann stellt die Steuerungseinheit den Akkumulierungszählwert in Block 405 neu ein und setzt bei Block 406 fort. Ist der Akkumulierungszählwert kleiner als der vorbestimmte Schwellenwert, dann kann die Steuerungseinheit in Block 404 aus dem Verfahren 400 austreten. Der vorbestimmte Schwellenwert kann auf eine beliebige Anzahl von Kode-Wörtern (beispielsweise 8, 16) eingestellt sein. Je mehr Kode-Wörter vor einem Fortsetzen von Verfahren 400 ausgelesen werden müssen, umso weniger wahrscheinlich ist es, dass ein einzelnes unzulässiges Kode-Wort, das ausgelesen wird, die hierin beschriebenen Anpassungs- oder Kalibrierungs-Maßnahmen auslösen wird. Die Anzahl von Kode-Wörtern, die ausgelesen werden muss, kann eine Funktion (beispielsweise umgekehrt proportional) der Kode-Wortlänge sein.
-
In Block 406 kann die Steuerungseinheit 105 eine Anzahl von Gesamt-LSB-Lesefehlern bestimmen, welche die Summe der Anzahl von ersten Bitwertfehlern und der Anzahl von zweiten Bitwertfehlern sein kann. Die Steuerungseinheit 105 kann die Anzahl von Gesamt-LSB-Lesefehlern mit einem ersten Fehlerschwellenwert vergleichen. Ist die Anzahl von Gesamt-LSB-Lesefehlern kleiner als oder gleich dem ersten Fehlerschwellenwert (Zone 0), dann wird die Steuerungseinheit 105 in Block 407 vielleicht keine Anpassungen ausführen und aus dem Verfahren austreten. Andernfalls kann die Steuerungseinheit 105 die Anzahl des Gesamt-LSB-Lesefehlerzählwerts mit einem zweiten Fehlerschwellenwert in Block 408 vergleichen.
-
Ist die Anzahl von Gesamt-LSB-Lesefehlern kleiner als oder gleich dem zweiten Fehlerschwellenwert (Zone 1), dann kann die Steuerungseinheit 105 den RL2 in Block 409 anpassen. Das Anpassungsverfahren wird nachstehend mit Bezug auf 5 beschrieben.
-
In Block 410 kann die Steuerungseinheit 105 die Anzahl von Gesamt-LSB-Lesefehlern mit einem dritten Fehlerschwellenwert vergleichen. Ist die Anzahl von Gesamt-LSB-Lesefehlern kleiner als oder gleich einem dritten Fehlerschwellenwert (Zone 2), dann kann die Steuerungseinheit 105 den RL2 in Block 411 kalibrieren und/oder anpassen. Dieses Kalibrierungs- und/oder Anpassungs-Verfahren wird nachstehend mit Bezug auf 6 beschrieben.
-
Die Steuerungseinheit 105 kann bestimmen, dass die Anzahl von Gesamt-LSB-Lesefehlern größer als der dritte Fehlerschwellenwert in Block 410 ist. Anschließend kann die Steuerungseinheit 105 in Block 414 den Block für Softdekodierungs- oder RAID-Gewinnungs-Operationen mit einem Statuszeichen versehen, da ein Fehlerzählwert, der den dritten Fehlerschwellenwert übersteigt, die Fehlerkorrekturfähigkeiten des ECC im Datenspeichersystem überschreiten kann.
-
5 bildet ein Flussdiagramm eines beispielhaften Verfahrens 500 für das Anpassen der Lesepegelspannung ab, das Block 409 in 4 entspricht. Wie zuvor angeführt, kann die Steuerungseinheit 105 eine Anzahl von Gesamt-LSB-Lesefehlern mit einem ersten Fehlerschwellenwert und einem zweiten Fehlerschwellenwert vergleichen. Bestimmt die Steuerungseinheit 105, dass die Anzahl von Gesamt-LSB-Lesefehlern zwischen dem ersten Fehlerschwellenwert und dem zweiten Fehlerschwellenwert ist, dann kann die Lesepegelspannung durch Verfahren 500 angepasst werden. Gemäß einigen Aspekten werden die Lesepegelspannungsanpassungen von einer aus mittleren LSB-Seiten (25% bis 75% des Adressenbereichs) von geschlossenen Blöcken entnommenen Fehlermetrik durchgeführt.
-
In Block 501 kann die Steuerungseinheit 105 bestimmen, ob das ausgelesene aktuelle Kode-Wort das seit Schließung des Blocks ausgelesene erste Kode-Wort ist. Die Steuerungseinheit 105 kann beispielsweise auf das Statuszeichen „erstes Auslesen auf geschlossenen Blöcken“ zugreifen, das dem Block zugeordnet ist. Das Statuszeichen „erstes Auslesen auf geschlossenen Blöcken“ kann programmiert sein anzuzeigen, dass der Block nicht ausgelesen worden ist, seitdem der Block geschlossen worden ist. Auf Basis des Werts des Statuszeichens „erstes Auslesen auf geschlossenen Blöcken“, das dem Block zugeordnet ist, kann die Steuerungseinheit 105 entweder RL2offset oder RL2Shift anpassen.
-
Ist das aktuelle ausgelesene Kode-Wort das erste Kode-Wort, das seit Schließen des Blocks ausgelesen wurde, dann kann die Steuerungseinheit 105 das LSB-Fehlerverhältnis für den Block unter Anwendung der Block-Metadaten mit einem Fehlerverhältnisbereich in Block 502 vergleichen. Wie in 3 zu sehen ist, bleiben LSB-Fehlerverhältnisse, die optimalen RL2s zugeordnet sind, innerhalb eines begrenzten Bereichs. Die Steuerungseinheit 105 kann mit einem Ziel-Fehlerverhältnis und einem zugeordneten Fehlerverhältnisbereich für die Flash-Speichervorrichtung oder einzelne Blöcke in der Flash-Speichervorrichtung vorprogrammiert sein. Das Ziel-Fehlerverhältnis und der zugeordnete Fehlerverhältnisbereich können durch Anwendung von Charakterisierungsdaten, Simulationen etc. bestimmt sein und können unterschiedliche Werte für unterschiedliche Lebensdauerzyklen der Flash-Speichervorrichtung (beispielsweise P/E-Zyklusbereiche) aufweisen. Der Fehlerverhältnisbereich kann durch Dividieren des Ziel-Fehlerverhältnisses durch den Faktor N für das untere Ende des Bereichs, und durch Multiplizieren des Ziel-Fehlerverhältnisses mit dem Faktor N für das obere Ende des Bereichs bestimmt werden. Der Faktor N kann zu Beginn beispielsweise auf 2 eingestellt sein, und in unterschiedlichen Lebendauerphasen der Flash-Speichervorrichtung angepasst werden. Ist das LSB-Fehlerverhältnis im Inneren des Fehlerverhältnisbereichs, dann kann die Steuerungseinheit 105 aus dem Verfahren 500 in Block 503 ohne irgendeine Anpassung austreten. Andernfalls kann die Steuerungseinheit 105 den RL2offset in Block 504 schrittweise vermindern, wenn das LSB-Fehlerverhältnis oberhalb des Fehlerverhältnisbereichs ist und kann den RL2offset in Block 505 schrittweise erhöhen, wenn das LSB-Fehlerverhältnis unterhalb des Fehlerverhältnisbereichs ist.
-
In Block 506 kann die Steuerungseinheit 105 das LSB-Fehlerverhältnis für den Block unter Anwendung der Block-Metadaten mit einem Fehlerverhältnisbereich in Block 506 vergleichen, was in ähnlicher Art und Weise in Block 502 ausgeführt worden ist. Ist das LSB-Fehlerverhältnis innerhalb des Fehlerverhältnisbereichs, dann kann die Steuerungseinheit 105 aus dem Verfahren 500 in Block 507 ohne jegliche Anpassung aussteigen. Andernfalls kann die Steuerungseinheit 105 den RL2Shift in Block 508 schrittweise vermindern, wenn das LSB-Fehlerverhältnis oberhalb des Fehlerverhältnisbereichs ist und kann den RL2Shift in Block 509 schrittweise erhöhen, wenn das LSB-Fehlerverhältnis unterhalb des Fehlerverhältnisbereichs ist.
-
Die Werte von RL2Shift und RL2offset können durch Ändern der in den Block-Metadaten gespeicherten, zugeordneten Werte um einen Bitwert schrittweise erhöht oder vermindert werden. Kommen beispielsweise zwei Bits zur Anwendung, dann kann der zugeordnete Wert drei Mal von einem Minimalanfangswert schrittweise erhöht oder drei Mal von einem Maximalwert schrittweise vermindert werden. Jeder Bitwert kann einem vorbestimmten Spannungsausmaß, beispielsweise 50 mV, 100 mV, 500 mV etc., entsprechen.
-
6 zeigt ein Flussdiagramm eines beispielhaften Verfahrens 600 für das Kalibrieren und Anpassen der Lesepegelspannung, das Block 411 in 4 entspricht. In Block 601 kann die Steuerungseinheit 105 bestimmen, ob das ausgelesene aktuelle Kode-Wort das erste Kode-Wort ist, das nach Schließen des Blocks, wobei die Anzahl von Gesamt-LSB-Fehlern in Zone 2 ist, ausgelesen worden ist. Die Steuerungseinheit 105 kann beispielsweise auf das Statuszeichen „erstes Auslesen in Zone 2“ in den dem Block zugeordneten Block-Metadaten zugreifen. Das Statuszeichen „erstes Auslesen in Zone 2‟ kann eingestellt werden, nachdem ein Kode-Wort ausgelesen worden ist, was zur Anzahl von Gesamt-LSB-Fehlern führt, die sich auf den oben diskutierten Pegel von Zone 2 erhöht. Die Steuerungseinheit 105 kann auch bestimmen, ob der Block für eine Verhältnisänderung mit einem Statuszeichen versehen worden ist, indem auf das Statuszeichen „mit Statuszeichen versehen für Verhältnisänderung“ in den dem Block in Block 601 zugeordneten Block-Metadaten Zugriff genommen wird. Das Statuszeichen „mit Statuszeichen versehen für Verhältnisänderung“ kann anzeigen, dass ein Ziel-Fehlerverhältnis geändert werden sollte, und wird nachstehend mit Bezug auf 8 diskutiert. Auf Basis des Werts des Statuszeichens „erstes Auslesen in Zone 2“, das dem Block zugeordnet ist, kann die Steuerungseinheit 105 eine Kalibrierungsschleife oder ein Optimierungsverfahren durchlaufen.
-
Wenn das aktuelle Kode-Wort, das ausgelesen wird, das erste Kode-Wort ist, das ausgelesen worden ist, nachdem der Block geschlossen worden ist, wobei die Anzahl von Gesamt-LSB-Fehlern in Zone 2 ist, oder nachdem der Block für eine Verhältnisänderung mit einem Statuszeichen versehen worden ist, dann kann die Steuerungseinheit 105 die Lesepegelspannung durch ein Kalibrierungsverfahren in Block 602 kalibrieren, das nachstehend mit Bezug auf 8 beschrieben wird. Wird keiner dieser Bedingungen entsprochen, dann kann die Steuerungseinheit 105 die Lesepegelspannung durch ein Anpassungsverfahren in Block 603 anpassen, was nachstehend mit Bezug auf 7 beschrieben wird. In einigen Ausführungsformen kann die Steuerungseinheit 105 in Block 603 bestimmen, zu Kalibrierungsschleife 602, beispielsweise auf Basis des Alters des Blocks oder der Häufigkeit, mit welcher der Block eine Optimierung 603 durchlaufen hat, zu springen.
-
In Block 604 kann die Steuerungseinheit 105 bestimmen, ob die Summe der Anzahl von ersten Bitwertfehlern und der Anzahl von zweiten Bitwertfehlern (Anzahl von Gesamt-LSB-Fehlem) größer als ein vierter Fehlerschwellenwert ist. Ist die Summe kleiner als der vierte Fehlerschwellenwert, entsprechend Zone 2 - niedrig, wie oben beschrieben, dann kann die Steuerungseinheit 105 aus dem Verfahren 600 in Block 606 austreten. Ist die Summe größer als der vierte Fehlerschwellenwert, entsprechend Zone 2 - hoch, dann kann die Steuerungseinheit 105 den Block zur hochgradige-BER-Fehlerbehandlung in Block 605 mit einem Statuszeichen versehen, bevor sie in Block 606 aus dem Verfahren austritt. Beispielsweise kann die BER-Fehlerbehandlung, je nach dem Alter des Blocks, den Block für eine Speicherbereinigung kennzeichnen oder die Kode-Rate ändern, die für das Schreiben von Daten in den Block angewandt wird. Alternativ dazu kann der Block auf Basis des Alters des Blocks (P/E-Zykluszählwert) und/oder des Nicht-Vorhandenseins einer verfügbaren niedrigeren Kode-Rate außer Betrieb gesetzt werden.
-
7 bildet ein Flussdiagramm eines beispielhaften Verfahrens 700 für das Anpassen der Lesepegelspannung ab, das Block 603 in 6 entspricht. In Block 701 kann die Steuerungseinheit 105 ein LSB-Fehlerverhältnis mit einem Fehlerverhältnisbereich vergleichen. Ist das LSB-Fehlerverhältnis im Inneren des Fehlerverhältnisbereichs, dann kann die Steuerungseinheit 105 in Block 706 die Anzahl von Gesamt-LSB-Lesefehlern mit einem vierten Fehlerschwellenwert vergleichen. Gemäß Aspekten der gegenständlichen Verfahrenstechnik kann die Steuerungseinheit 105 aus dem Verfahren in Block 708 austreten, wenn die Anzahl von Gesamt-LSB-Lesefehlern kleiner als der vierte Schwellenwert (Zone 2 - niedrig) ist. Ist die Anzahl von Gesamt-LSB-Lesefehlern größer als der vierte Schwellenwert (Zone 2 - hoch), dann kann die Steuerungseinheit 105 den Block für eine hochgradige-BER-Fehlerbehandlung markieren. In Abhängigkeit von einem Alter des Blocks kann die BER-Fehlerbehandlung den Block für eine Speicherbereinigung kennzeichnen oder die Kode-Rate ändern, die für ein Speichern der Daten im Block angewandt wird. Beispielsweise kann die Steuerungseinheit 105 das Alter des Blocks auf Basis einer Anzahl von P/E-Zyklen, die dem Block zugeordnet sind, bestimmen. Das Alter des Blocks kann mit einem oder mehreren Schwellenwerten verglichen werden. Ist das Alter des Blocks größer als der Schwellenwert, dann kann die Steuerungseinheit 105 die Speicherbereinigung starten. Ist das Alter des Blocks kleiner als der Schwellenwert, dann kann die Steuerungseinheit 105 die Kode-Rate ändern, die für das Speichern von Daten im Block angewandt wird. Gemäß Aspekten der gegenständlichen Verfahrenstechnik, wenn das Alter des Blocks geringer als der Schwellenwert ist, und die Steuerungseinheit 105 unfähig ist, die Kode-Rate zu ändern (beispielsweise weil die aktuelle Kode-Rate die niedrigste Kode-Rate ist), kann der Block als außer Betrieb gesetzt erklärt werden.
-
Ist das LSB-Fehlerverhältnis außerhalb des Fehlerverhältnisbereichs, dann kann die Steuerungseinheit 105 einen Optimierungsmodus für den Block oder die Flash-Speichervorrichtung in Block 702 kontrollieren. Ist ein Niedrig-Lesewirkungsmodus eingestellt, dann setzt das Verfahren bei Block 703 fort, um die Lesepegelspannung anzupassen. Ist der Niedrig-Lesewirkungsmodus nicht eingestellt, dann setzt das Verfahren bei einem Kalibrierungsverfahren, das Block 602 in 6 entspricht und das nachstehend mit Bezug auf 8 beschrieben wird, fort. Der Optimierungsmodus kann beispielsweise auf Basis des Alters des Blocks, einer Häufigkeit, die sich das LSB-Fehlerverhältnis außerhalb des Fehlerverhältnisbereichs während Verfahren 700 gezeigt hat etc., eingestellt sein. Beispielsweise kann das Datenspeichersystem 100 hauptsächlich für ein Auslesen von Daten angewandt werden, was bedeutet, dass die Verweilzeit für gespeicherte Daten in den Blöcken von Flash-Speichervorrichtung 115 sehr lang sein kann. Wie zuvor angeführt, kann sich die Verteilung von Programmierpegeln eines Blocks bei Erhöhung der Verweilzeit ändern, und die Ausführung einer Kalibrierung des Lesepegels und des LSB-Fehlerverhältnisses kann daher wünschenswert sein.
-
In Block 703 kann die Steuerungseinheit 105 das LSB-Fehlerverhältnis mit dem Fehlerverhältnisbereich vergleichen. RL2Shift kann auf Basis des Vergleichs des LSB-Fehlerverhältnisses mit dem Fehlerverhältnisbereich angepasst werden. Ist das LSB-Fehlerverhältnis beispielsweise unterhalb des Fehlerverhältnisbereichs, dann kann die Steuerungseinheit 105 den RL2Shift in Block 704 schrittweise erhöhen. Ist das LSB-Fehlerverhältnis oberhalb des Fehlerverhältnisbereichs, dann kann die Steuerungseinheit 105 RL2Shift in Block 705 schrittweise vermindern. Das Verfahren setzt sich dann bei Block 706, wie oben diskutiert, fort.
-
8 zeigt ein Flussdiagramm eines beispielhaften Verfahrens 800 für das Kalibrieren und Anpassen der Lesepegelspannung, das Block 602 in 6 entspricht. In Block 801 kann die Steuerungseinheit 105 die Lesepegelspannung um ein Inkrement auf Basis eines Vergleichs des LSB-Fehlerverhältnisses mit einem Ziel-Fehlerverhältnis stufenweise einstellen. Beispielsweise kann die Steuerungseinheit 105 RL2 um einen RLStep schrittweise vermindern, wenn das LSB-Fehlerverhältnis größer als ein Ziel-Fehlerverhältnis ist, und kann RL2 um einen RLStep schrittweise erhöhen, wenn das LSB-Fehlerverhältnis kleiner als das Ziel-Fehlerverhältnis ist. RLStep kann eine Anzahl von inkrementellen Spannungswerten, beispielsweise 50 mV, 100 mV, 500 mV etc., darstellen. Die inkrementellen Spannungswerte können auf einer Auflösung des Anpassens der Lesepegelspannungen basieren, die in der Flash-Speichervorrichtung 115 verfügbar sind. RLStep kann ein (positives oder negatives) Zeichen aufweisen, um die Richtung anzugeben, in welche die inkrementellen Änderungen durchgeführt worden sind.
-
In Block 802 kann die Steuerungseinheit 105 eine vorbestimmte Anzahl n von Kode-Wörtern (Kalibrierungsdaten) aus der Flash-Speichervorrichtung 115 unter Anwendung des schrittweise erhöhten oder schrittweise verminderten RL2 auslesen. Die Anzahl von Kode-Wörtern kann in verschiedenen Implementierungen variieren und ist eingestellt, eine Abtastgröße von ausgelesenen Daten bereitzustellen. Die Steuerungseinheit 105 kann BERbasierte ausgelesene n Kode-Wörter berechnen und bestimmen, ob sich die BER durch eine frühere Iteration in Block 803 erhöht hat. Die Steuerungseinheit 105 kann die berechnete BER im Speichermedium 115 speichern und einen Zähler schrittweise erhöhen. Der Zähler kann anzeigen, wie oft die Steuerungseinheit 105 Block 801 und Block 802 ausgeführt hat.
-
Hat sich die berechnete BER nicht erhöht, dann kehrt das Verfahren zu Block 801 zurück, und Blöcke 801, 802 und 803 werden wiederholt. Hat sich die berechnete BER erhöht, dann wird der RLStep um einen inkrementellen Wert in Block 804 zurückgesetzt, was die Lesepegelspannung darstellt, die eine Minimal-BER erzeugt. Der Wert von RLStep, der die Anzahl von Inkrementen darstellt, die die Lesepegelspannung angepasst worden ist, wird in Block 805 evaluiert.
-
Ist der Wert von RLStep größer als Eins, dann kann die Steuerungseinheit 105 RL2offset um einen inkrementellen Wert anpassen, und RL2Shift um eine Anzahl von inkrementellen Werten, die dem Wert von RLStep minus Eins in Block 806 entsprechen, anpassen, und das Verfahren setzt bei Block 808 fort. Ist der Wert von RLStep gleich Eins, dann kann die Steuerungseinheit 105 RL2offset um einen inkrementellen Wert anpassen, und keine Anpassungen an RL2Shift in Block 807 durchführen, und das Verfahren setzt bei Block 808 fort. Ist der Wert von RLStep gleich Null, dann werden keine Anpassungen an die Lesepegelspannung durchgeführt, und das Verfahren setzt mit Block 808 fort. Die Anpassungen sind entweder inkrementell oder dekrementell, um der Richtung der in Block 801 durchgeführten inkrementellen Änderungen zu entsprechen.
-
In Block 808 kann die Steuerungseinheit 105 ein LSB-Fehlerverhältnis auf Basis von n Kode-Wörtern berechnen, die unter Anwendung des neu berechneten RL2 ausgelesen werden, und das LSB-Fehlerverhältnis mit dem Fehlerverhältnisbereich vergleichen. Ist das LSB-Fehlerverhältnis innerhalb des Fehlerverhältnisbereichs, dann kann die Steuerungseinheit 105 bei Block 706 fortsetzen, was oben mit Bezug auf 7 diskutiert wird. Ist das LSB-Fehlerverhältnis außerhalb des Fehlerverhältnisbereichs, dann kann die Steuerungseinheit 105 bei Block 809 fortsetzen.
-
In Block 809 kann die Steuerungseinheit 105 das Statuszeichen „mit Statuszeichen versehen für Verhältnisänderung“ in den Block-Metadaten kontrollieren. Bestimmt die Steuerungseinheit 105, dass das Statuszeichen „mit Statuszeichen versehen für Verhältnisänderung“ nicht zuvor eingestellt worden ist, dann kann die Steuerungseinheit 105 das Statuszeichen „mit Statuszeichen versehen für Verhältnisänderung“ einstellen, und bei Block 706 fortsetzen. Bestimmt die Steuerungseinheit 105, dass das Statuszeichen „mit Statuszeichen versehen für Verhältnisänderung“ zuvor eingestellt worden ist, dann wird das Fehlerverhältnis vor einem Fortsetzen bei Block 706 angepasst.
-
Wie zuvor beschrieben, werden die Lesepegelspannungsanpassungen durch Vergleichen eines LSB-Fehlerverhältnisses eines Blocks mit einem Fehlerverhältnisbereich und durch Ändern von RL2offset oder RL2Shift, der dem Block zugeordnet ist, ausgeführt. Der Fehlerverhältnisbereich kann vorbestimmt sein, da, wie in 3 zu sehen ist, die dem optimalen RL2 zugeordneten LSB-Fehlerverhältnisse innerhalb eines begrenzten Bereichs bleiben. Da sich die Anzahl von Gesamt-LSB-Lesefehlern jedoch erhöht, müssen das Ziel-Fehlerverhältnis und dessen zugeordneter Fehlerverhältnisbereich unter Umständen geändert werden. Ist das neue LSB-Fehlerverhältnis auf Basis des neu berechneten RL2 beispielsweise nicht im Fehlerverhältnisbereich, dann kann die Steuerungseinheit 105, ohne Anpassen des Fehlerverhältnisbereichs, den RL2 beispielsweise in Richtung der falschen Lesepegelspannung anpassen.
-
Änderungen des Ziel-Fehlerverhältnisses werden möglicherweise mit einer geringen Häufigkeit durchgeführt. Gemäß der gegenständlichen Verfahrenstechnik wird das Ziel-Fehlerverhältnis das erste Mal, dass die Steuerungseinheit 105 bestimmt, dass das Ziel-Fehlerverhältnis angepasst werden muss, vielleicht nicht angepasst. Während des ersten Mals kann die Steuerungseinheit 105 das Statuszeichen „mit Statuszeichen versehen für Verhältnisänderung“ einstellen, und, wenn die Steuerungseinheit 105 ein zweites Mal bestimmt, dass das Ziel-Fehlerverhältnis geändert werden muss, dann passt die Steuerungseinheit 105 das Ziel-Fehlerverhältnis und dessen zugeordneten Fehlerverhältnisbereich an.
-
Beispielsweise kann das Zielverhältnis 1 und der Fehlerverhältnisbereich 0,5 bis 2 unter Anwendung eines Werts von Zwei für den oben angemerkten Faktor N sein. Wie zuvor angemerkt, tritt die Steuerungseinheit 105 aus dem Verfahren 500, 700 und 800 aus, wenn ein berechnetes LSB-Fehlerverhältnis innerhalb des Fehlerverhältnisbereichs ist. Ist das berechnete LSB-Fehlerverhältnis beispielsweise außerhalb des Fehlerverhältnisbereichs 3, dann kann die Steuerungseinheit 105 den RL2offset oder RL2Shift derart schrittweise vermindern, dass das LSB-Fehlerverhältnis sich letztendlich innerhalb von 0,5 bis 2 gestaltet. In den meisten Fällen würde diese Anpassung dazu führen, dass die Steuerungseinheit 105 einen RL2 nahe dem optimalen RL2 feststellt. Bestimmt die Steuerungseinheit 105 in Block 808 jedoch, dass das LSB-Fehlerverhältnis auf Basis des neu berechneten RL2 außerhalb des Fehlerverhältnisbereichs ist, dann wird der Fehlerverhältnisbereich möglicherweise angepasst werden müssen. Das liegt daran, dass das neue LSB-Fehlerverhältnis auf Basis eines RL2 berechnet wird, der die niedrigste BER ergibt, was bedeutet, dass der optimale RL2 einem Fehlerverhältnis zugeordnet ist, das nicht innerhalb des Fehlerverhältnisbereichs ist. Nach einem ersten Mal führt die Steuerungseinheit 105 eine Kalibrierung auf dem Block aus, wobei die Steuerungseinheit diese durch Anwendung beispielsweise eines Statuszeichen „mit Statuszeichen versehen für Verhältnisänderung“ mit einem Statuszeichen versieht. Während eines zweiten Mals führt die Steuerungseinheit 105 eine Kalibrierung auf dem Block aus, wobei die Steuerungseinheit das Ziel-Fehlerverhältnis und dessen zugeordneten Fehlerverhältnisbereich ändern kann. In diesem Fall kann das Ziel-Fehlerverhältnis auf 3 eingestellt sein. Ein neues Fehlerbereichsverhältnis kann durch Multiplizieren und Dividieren des neuen Ziel-Fehlerverhältnisses mit/durch den vorbestimmten Faktor N bestimmt werden. In diesem Beispiel kann die Untergrenze des Bereichs bestimmt sein, das Ziel-Fehlerverhältnis dividiert durch 2 (1,5) zu sein, und die Obergrenze des Fehlerverhältnisbereichs kann bestimmt sein, das Ziel-Fehlerverhältnis multipliziert mit 2 (6) zu sein. Blöcke 706, 707 und 708 sind oben, mit Bezug auf 7, diskutiert worden und werden hierin nicht noch ein Mal beschrieben.
-
Die oben diskutierte, gegenständliche Verfahrenstechnik sorgt für einen effizienten Mechanismus für Lesepegelspannungen und Kalibrierungen in Flash-Speichersystemen. Obwohl sich die zuvor angeführten Beispiele auf MLC-Flash-Speicher konzentrieren, können die Algorithmen und zugrundeliegenden Prinzipien auf andere Arten von Flash-Speicher, beispielsweise TLC oder andere Arten, die konfiguriert sind, Daten unter Anwendung von mehr als 3 Bits, 8 Pegeln zu speichern, angewandt werden und sollten daher nicht als auf MLC-Flash-Speicher eingeschränkt ausgelegt werden.