DE102017001433B4 - Systeme und Verfahren für adaptive Lesepegelanpassung - Google Patents

Systeme und Verfahren für adaptive Lesepegelanpassung Download PDF

Info

Publication number
DE102017001433B4
DE102017001433B4 DE102017001433.7A DE102017001433A DE102017001433B4 DE 102017001433 B4 DE102017001433 B4 DE 102017001433B4 DE 102017001433 A DE102017001433 A DE 102017001433A DE 102017001433 B4 DE102017001433 B4 DE 102017001433B4
Authority
DE
Germany
Prior art keywords
read
error ratio
bit value
level voltage
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE102017001433.7A
Other languages
English (en)
Other versions
DE102017001433A1 (de
Inventor
Aldo G. COMETTI
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sandisk Technologies Inc NDGesD Staates Us
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE102017001433A1 publication Critical patent/DE102017001433A1/de
Application granted granted Critical
Publication of DE102017001433B4 publication Critical patent/DE102017001433B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3404Convergence or correction of memory cell threshold voltages; Repair or recovery of overerased or overprogrammed cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/50Marginal testing, e.g. race, voltage or current testing
    • G11C29/50004Marginal testing, e.g. race, voltage or current testing of threshold voltage
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

Verfahren (400) für das Verwalten eines Datenspeichersystems (100), umfassend:Auslesen (401) von angeforderten Daten aus einem Flash-Speicher (115) unter Anwendung einer ersten Lesepegelspannung;Bestimmen (402) einer Anzahl von ersten Bitwertfehlern und einer Anzahl von zweiten Bitwertfehlern in den ausgelesenen angeforderten Daten;Vergleichen (502,506) eines Fehlerverhältnisses der Anzahl von ersten Bitwertfehlern und der Anzahl von zweiten Bitwertfehlern mit einem Fehlerverhältnisbereich; undAnpassen (409) der ersten Lesepegelspannung auf Basis des Vergleichs des Fehlerverhältnisses mit dem Fehlerverhältnisbereich,worin das Auslesen der angeforderten Daten aus einem Flash-Speicher das Auslesen und Dekodieren einer Vielzahl von Kode-Wörtern aus einem Block im Flash-Speicher umfasst, undworin die Anzahl von ersten Bitwertfehlern und die Anzahl von zweiten Bitwertfehlern bestimmt werden, nachdem eine Ziel-Anzahl von Kode-Wörtern ausgelesen und dekodiert worden ist,wobei das Verfahren ferner umfasst das Vergleichen (406) einer Summe der Anzahl von ersten Bitwertfehlern und der Anzahl von zweiten Bitwertfehlern mit einem ersten Fehlerschwellenwert,worin das Fehlerverhältnis mit dem Fehlerverhältnisbereich verglichen wird, wenn die Summe der Anzahl von ersten Bitwertfehlern und der Anzahl von zweiten Bitwertfehlern größer als oder gleich dem ersten Fehlerschwellenwert ist, undwobei das Verfahren ferner umfasst das Bestimmen, (501) ob ein aktuelles Kode-Wort, das ausgelesen wird, das erste Kode-Wort ist, das seit Schließen des Blocks ausgelesen worden ist,worin ein Offsetwert der ersten Lesepegelspannung angepasst wird, wenn das ausgelesene Kode-Wort das erste Kode-Wort ist, das seit Schließen des Blocks ausgelesen worden ist,worin ein Verschiebungswert der ersten Lesepegelspannung angepasst wird, wenn das Kode-Wort, das ausgelesen wird, nicht das erste Kode-Wort ist, das seit Schließen des Blocks ausgelesen worden ist, undworin der Offsetwert über Programm-Lösch-Zyklen aufrechterhalten wird und der Verschiebungswert zwischen Programm-Lösch-Zyklen zurückgesetzt wird.

Description

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

Claims (15)

  1. Verfahren (400) für das Verwalten eines Datenspeichersystems (100), umfassend: Auslesen (401) von angeforderten Daten aus einem Flash-Speicher (115) unter Anwendung einer ersten Lesepegelspannung; Bestimmen (402) einer Anzahl von ersten Bitwertfehlern und einer Anzahl von zweiten Bitwertfehlern in den ausgelesenen angeforderten Daten; Vergleichen (502,506) eines Fehlerverhältnisses der Anzahl von ersten Bitwertfehlern und der Anzahl von zweiten Bitwertfehlern mit einem Fehlerverhältnisbereich; und Anpassen (409) der ersten Lesepegelspannung auf Basis des Vergleichs des Fehlerverhältnisses mit dem Fehlerverhältnisbereich, worin das Auslesen der angeforderten Daten aus einem Flash-Speicher das Auslesen und Dekodieren einer Vielzahl von Kode-Wörtern aus einem Block im Flash-Speicher umfasst, und worin die Anzahl von ersten Bitwertfehlern und die Anzahl von zweiten Bitwertfehlern bestimmt werden, nachdem eine Ziel-Anzahl von Kode-Wörtern ausgelesen und dekodiert worden ist, wobei das Verfahren ferner umfasst das Vergleichen (406) einer Summe der Anzahl von ersten Bitwertfehlern und der Anzahl von zweiten Bitwertfehlern mit einem ersten Fehlerschwellenwert, worin das Fehlerverhältnis mit dem Fehlerverhältnisbereich verglichen wird, wenn die Summe der Anzahl von ersten Bitwertfehlern und der Anzahl von zweiten Bitwertfehlern größer als oder gleich dem ersten Fehlerschwellenwert ist, und wobei das Verfahren ferner umfasst das Bestimmen, (501) ob ein aktuelles Kode-Wort, das ausgelesen wird, das erste Kode-Wort ist, das seit Schließen des Blocks ausgelesen worden ist, worin ein Offsetwert der ersten Lesepegelspannung angepasst wird, wenn das ausgelesene Kode-Wort das erste Kode-Wort ist, das seit Schließen des Blocks ausgelesen worden ist, worin ein Verschiebungswert der ersten Lesepegelspannung angepasst wird, wenn das Kode-Wort, das ausgelesen wird, nicht das erste Kode-Wort ist, das seit Schließen des Blocks ausgelesen worden ist, und worin der Offsetwert über Programm-Lösch-Zyklen aufrechterhalten wird und der Verschiebungswert zwischen Programm-Lösch-Zyklen zurückgesetzt wird.
  2. Verfahren nach Anspruch 1, ferner umfassend das Bestimmen, ob der Block im Flash-Speicher geschlossen ist, worin die Anzahl von ersten Bitwertfehlern und die Anzahl von zweiten Bitwertfehlern aus Daten bestimmt werden, die nach dem Schließen des Blocks in einem Flash-Speicher ausgelesen werden.
  3. Verfahren nach Anspruch 1, ferner umfassend: Vergleichen (408) der Anzahl von ersten Bitwertfehlern und der Anzahl von zweiten Bitwertfehlern mit einem zweiten Fehlerschwellenwert; Bestimmen (501), ob das aktuelle ausgelesene Kode-Wort das erste Kode-Wort ist, das seit Schließen des Blocks ausgelesen worden ist; und Kalibrieren (602) der ersten Lesepegelspannung, wenn die Anzahl von ersten Bitwertfehlern und die Anzahl von zweiten Bitwertfehlern größer als oder gleich dem zweiten Fehlerschwellenwert sind, und das ausgelesene Kode-Wort das erste Kode-Wort ist, das seit Schließen des Blocks ausgelesen worden ist.
  4. Verfahren nach Anspruch 3, worin das Kalibrieren der ersten Lesepegelspannung Folgendes umfasst: stufenweises Einstellen (801) der ersten Lesepegelspannung um ein Inkrement auf Basis eines Vergleichs des Fehlerverhältnisses mit einem Ziel-Verhältnis; Auslesen (802) der Kalibrierungsdaten aus dem Flash-Speicher unter Anwendung der stufenweise eingestellten ersten Lesepegelspannung; wiederholtes stufenweises Einstellen (803) der ersten Lesepegelspannung und Auslesen der Kalibrierungsdaten so lange, bis eine Minimalfehlerrate erzeugt wird; und Anpassen (804) der ersten Lesepegelspannung auf Basis einer Anzahl von Inkrementen, auf welche die erste Lesepegelspannung stufenweise eingestellt wird, um die Minimalfehlerrate zu erzeugen.
  5. Verfahren nach Anspruch 4, worin das Fehlerverhältnis mit dem Fehlerverhältnisbereich verglichen wird (703), und die erste Lesepegelspannung auf Basis des Vergleichs angepasst wird, wenn die Anzahl von ersten Bitwertfehlern und die Anzahl von zweiten Bitwertfehlern größer als oder gleich dem zweiten Fehlerschwellenwert sind, und das ausgelesene aktuelle Kode-Wort nicht das erste Kode-Wort ist, das seit Schließen des Blocks ausgelesen worden ist.
  6. Verfahren nach Anspruch 5, worin das Anpassen der ersten Lesepegelspannung das schrittweise Erhöhen der ersten Lesepegelspannung, wenn das Fehlerverhältnis unterhalb des Fehlerverhältnisbereichs ist (704), das schrittweise Vermindern der ersten Lesepegelspannung, wenn das Fehlerverhältnis oberhalb des Fehlerverhältnisbereichs ist, und das Aufrechterhalten der ersten Lesepegelspannung, wenn das Fehlerverhältnis innerhalb des Fehlerverhältnisses ist (705), umfasst.
  7. Verfahren nach Anspruch 5, ferner umfassend: Bestimmen (802) einer Anzahl von ersten Bitwertfehlern und einer Anzahl von zweiten Bitwertfehlern in den Kalibrierungsdaten, die unter Anwendung der angepassten ersten Lesepegelspannung ausgelesen werden; Vergleichen (808) eines Fehlerverhältnisses der Anzahl von ersten Bitwertfehlern und der Anzahl von zweiten Bitwertfehlern von den ausgelesenen Kalibrierungsdaten mit dem Fehlerverhältnisbereich; und Anpassen (809) des Fehlerverhältnisbereichs auf Basis des Vergleichs des Fehlerverhältnisses von den ausgelesenen Kalibrierungsdaten mit dem Fehlerverhältnisbereich.
  8. Verfahren nach Anspruch 7, worin ein mittiger Verhältniswert des Fehlerverhältnisbereichs an das Fehlerverhältnis von den ausgelesenen Kalibrierungsdaten angepasst wird, wenn das Fehlerverhältnis von den ausgelesenen Kalibrierungsdaten außerhalb des Fehlerverhältnisbereichs ist.
  9. Verfahren nach Anspruch 1, ferner umfassend das Anpassen einer zweiten Lesepegelspannung und einer dritten Lesepegelspannung auf Basis der angepassten ersten Lesepegelspannung, worin der Flash-Speicher ein Multi-Pegel-Zellen(MLC) -Flash-Speicher ist, und worin die erste Lesepegelspannung angewandt wird, um die niedrigstwertigen Bit(LSB) - Daten aus dem MLC-Flash-Speicher auszulesen, und die zweite und die dritte Lesepegelspannung angewandt werden, um die höchstwertigen Bit(MSB) -Daten aus dem MLC-Flash-Speicher auszulesen.
  10. Datenspeichersystem (100), umfassend: einen Flash-Speicher (115); und eine Steuerungseinheit (105), die konfiguriert ist, ein Verfahren (400) für das Steuern des Datenspeichersystems auszuführen, umfassend: Auslesen (401) und Dekodieren einer Vielzahl von Kode-Wörtern von angeforderten Daten aus einem Block im Flash-Speicher unter Anwendung einer ersten Lesepegelspannung; Bestimmen (402) einer Anzahl von ersten Bitwertfehlern und einer Anzahl von zweiten Bitwertfehlern in den ausgelesenen angeforderten Daten, nachdem eine Ziel-Anzahl von Kode-Wörtern ausgelesen und dekodiert worden ist; Vergleichen (502,506) eines Fehlerverhältnisses der Anzahl von ersten Bitwertfehlern und der Anzahl von zweiten Bitwertfehlern mit einem Fehlerverhältnisbereich; und Anpassen (409) der ersten Lesepegelspannung auf Basis des Vergleichs des Fehlerverhältnisses mit dem Fehlerverhältnisbereich, worin das durch die Steuerungseinheit ausgeführte Verfahren ferner das Vergleichen (406) der Anzahl von ersten Bitwertfehlern und der Anzahl von zweiten Bitwertfehlern mit einem ersten Fehlerschwellenwert umfasst, worin das Fehlerverhältnis mit dem Fehlerverhältnisbereich verglichen wird, wenn die Anzahl von ersten Bitwertfehlern und die Anzahl von zweiten Bitwertfehlern größer als oder gleich dem ersten Fehlerschwellenwert sind, worin das durch die Steuerungseinheit ausgeführte Verfahren das Bestimmen (501) umfasst, ob ein ausgelesenes aktuelles Kode-Wort das erste Kode-Wort ist, das seit Schließen des Blocks ausgelesen worden ist, worin ein Offsetwert der ersten Lesepegelspannung angepasst wird, wenn das ausgelesene aktuelle Kode-Wort das erste Kode-Wort ist, das seit Schließen des Blocks ausgelesen worden ist, worin ein Verschiebungswert der ersten Lesepegelspannung angepasst wird, wenn das ausgelesene aktuelle Kode-Wort nicht das erste Kode-Wort ist, das seit Schließen des Blocks ausgelesen worden ist, und worin der Offsetwert über Programm-Lösch-Zyklen aufrechterhalten wird, und der Verschiebungswert zwischen Programm-Lösch-Zyklen zurückgesetzt wird.
  11. Datenspeichersystem nach Anspruch 10, worin das durch die Steuerungseinheit ausgeführte Verfahren ferner Folgendes umfasst: Vergleichen (408) der Anzahl von ersten Bitwertfehlern und der Anzahl von zweiten Bitwertfehlern mit einem zweiten Fehlerschwellenwert; Bestimmen (501), ob das ausgelesene aktuelle Kode-Wort das erste Kode-Wort ist, das seit Schließen des Blocks ausgelesen worden ist; und Kalibrieren (602) der ersten Lesepegelspannung, wenn die Anzahl von ersten Bitwertfehlern und die Anzahl von zweiten Bitwertfehlern größer als oder gleich dem zweiten Fehlerschwellenwert sind, und das ausgelesene aktuelle Kode-Wort das erste Kode-Wort ist, das seit Schließen des Blocks ausgelesen worden ist.
  12. Datenspeichersystem nach Anspruch 11, worin das Kalibrieren der ersten Lesepegelspannung Folgendes umfasst: stufenweises Einstellen (801) der ersten Lesepegelspannung um ein Inkrement auf Basis eines Vergleichs des Fehlerverhältnisses mit einem Ziel-Verhältnis; Auslesen (802) von Kalibrierungsdaten aus dem Flash-Speicher unter Anwendung der stufenweise eingestellten ersten Lesepegelspannung; wiederholtes stufenweises Einstellen (803) der ersten Lesepegelspannung und Auslesen der Kalibrierungsdaten so lange, bis eine Minimalfehlerrate erzeugt worden ist; und Anpassen (804) der ersten Lesepegelspannung auf Basis einer Anzahl von Inkrementen, auf welche die erste Lesepegelspannung stufenweise eingestellt wird, um die Minimalfehlerrate zu erzeugen.
  13. Datenspeichersystem nach Anspruch 12, worin das Fehlerverhältnis mit dem Fehlerverhältnisbereich verglichen wird (703), und die erste Lesepegelspannung auf Basis des Vergleichs angepasst wird, wenn die Anzahl von ersten Bitwertfehlern und die Anzahl von zweiten Bitwertfehlern größer als oder gleich dem zweiten Fehlerschwellenwert sind, und das ausgelesene aktuelle Kode-Wort nicht das erste Kode-Wort ist, das seit Schließen des Blocks ausgelesen worden ist.
  14. Datenspeichersystem nach Anspruch 13, worin das Anpassen der ersten Lesepegelspannung das schrittweise Erhöhen der ersten Lesepegelspannung, wenn das Fehlerverhältnis unterhalb des Fehlerverhältnisbereichs ist (704), das schrittweise Vermindern der ersten Lesepegelspannung, wenn das Fehlerverhältnis oberhalb des Fehlerverhältnisbereichs ist, und das Aufrechterhalten der ersten Lesepegelspannung, wenn das Fehlerverhältnis innerhalb des Fehlerverhältnisbereichs ist (705), umfasst.
  15. Datenspeichersystem nach Anspruch 13, ferner umfassend: Bestimmen (802) einer Anzahl von ersten Bitwertfehlern und einer Anzahl von zweiten Bitwertfehlern in den Kalibrierungsdaten, die unter Anwendung der angepassten ersten Lesepegelspannung ausgelesen werden; Vergleichen (808) eines Fehlerverhältnisses der Anzahl von ersten Bitwertfehlern und der Anzahl von zweiten Bitwertfehlern aus den ausgelesenen Kalibrierungsdaten mit dem Fehlerverhältnisbereich; und Anpassen (809) des Fehlerverhältnisbereichs auf Basis des Vergleichs des Fehlerverhältnisses aus den ausgelesenen Kalibrierungsdaten mit dem Fehlerverhältnisbereich, worin ein mittiger Verhältniswert des Fehlerverhältnisbereichs an das Fehlerverhältnis aus den ausgelesenen Kalibrierungsdaten angepasst wird, wenn das Fehlerverhältnis von den ausgelesenen Kalibrierungsdaten außerhalb des Fehlerverhältnisbereichs ist.
DE102017001433.7A 2016-03-11 2017-02-14 Systeme und Verfahren für adaptive Lesepegelanpassung Active DE102017001433B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/068,427 2016-03-11
US15/068,427 US9761308B1 (en) 2016-03-11 2016-03-11 Systems and methods for adaptive read level adjustment

Publications (2)

Publication Number Publication Date
DE102017001433A1 DE102017001433A1 (de) 2017-09-28
DE102017001433B4 true DE102017001433B4 (de) 2021-10-07

Family

ID=59758614

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017001433.7A Active DE102017001433B4 (de) 2016-03-11 2017-02-14 Systeme und Verfahren für adaptive Lesepegelanpassung

Country Status (4)

Country Link
US (1) US9761308B1 (de)
KR (1) KR101931872B1 (de)
CN (1) CN107179962B (de)
DE (1) DE102017001433B4 (de)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10452480B2 (en) 2017-05-25 2019-10-22 Micron Technology, Inc. Memory device with dynamic processing level calibration
US10140040B1 (en) 2017-05-25 2018-11-27 Micron Technology, Inc. Memory device with dynamic program-verify voltage calibration
US10402272B2 (en) * 2017-05-25 2019-09-03 Micron Technology, Inc. Memory device with dynamic programming calibration
US10199111B1 (en) * 2017-08-04 2019-02-05 Micron Technology, Inc. Memory devices with read level calibration
US10387281B2 (en) 2017-08-30 2019-08-20 Micron Technology, Inc. Flash memory block retirement policy
US10936205B2 (en) 2017-10-05 2021-03-02 International Business Machines Corporation Techniques for retention and read-disturb aware health binning
US10558522B2 (en) 2017-10-20 2020-02-11 Western Digital Technologies, Inc. Dynamic multi-stage decoding
US10637511B2 (en) 2017-12-18 2020-04-28 Western Digital Technologies, Inc Dynamic multi-stage decoding
CN109949850A (zh) * 2017-12-21 2019-06-28 光宝电子(广州)有限公司 储存系统与储存方法
US10566063B2 (en) 2018-05-16 2020-02-18 Micron Technology, Inc. Memory system with dynamic calibration using a trim management mechanism
US10664194B2 (en) 2018-05-16 2020-05-26 Micron Technology, Inc. Memory system with dynamic calibration using a variable adjustment mechanism
US10990466B2 (en) 2018-06-20 2021-04-27 Micron Technology, Inc. Memory sub-system with dynamic calibration using component-based function(s)
KR102524923B1 (ko) * 2018-06-20 2023-04-26 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11188416B2 (en) 2018-07-12 2021-11-30 Micron Technology, Inc. Enhanced block management for a memory sub-system
US11113129B2 (en) 2018-07-13 2021-09-07 Micron Technology, Inc. Real time block failure analysis for a memory sub-system
US11221910B2 (en) * 2018-07-24 2022-01-11 Micron Technology, Inc. Media scrubber in memory system
US10614881B2 (en) 2018-08-13 2020-04-07 International Business Machines Corporation Calibration of open blocks in NAND flash memory
US10699791B2 (en) * 2018-08-24 2020-06-30 International Business Machines Corporation Adaptive read voltage threshold calibration in non-volatile memory
JP7158965B2 (ja) * 2018-09-14 2022-10-24 キオクシア株式会社 メモリシステム
JP2020047337A (ja) * 2018-09-18 2020-03-26 キオクシア株式会社 メモリシステム
US10936246B2 (en) 2018-10-10 2021-03-02 Micron Technology, Inc. Dynamic background scan optimization in a memory sub-system
US10811091B2 (en) 2018-10-12 2020-10-20 Western Digital Technologies, Inc. Adaptive processing for read threshold voltage calibration
US10761749B2 (en) * 2018-10-31 2020-09-01 Micron Technology, Inc. Vectorized processing level calibration in a memory component
US11048571B2 (en) * 2018-12-12 2021-06-29 International Business Machines Corporation Selectively performing multi-plane read operations in non-volatile memory
US11106518B2 (en) * 2019-03-01 2021-08-31 Western Digital Technologies, Inc. Failure mode study based error correction
US11086705B2 (en) * 2019-03-18 2021-08-10 International Business Machines Corporation Managing the reliability of pages in non-volatile random access memory
KR102671402B1 (ko) 2019-04-16 2024-05-31 삼성전자주식회사 문턱전압 산포 특성을 향상한 메모리 컨트롤러, 메모리 시스템 및 그 동작방법
US11315649B2 (en) 2019-04-16 2022-04-26 Samsung Electronics Co., Ltd. Memory controller, memory device and memory system having improved threshold voltage distribution characteristics and related operating methods
US10936209B2 (en) * 2019-06-06 2021-03-02 Micron Technology, Inc. Memory error indicator for high-reliability applications
US10892029B1 (en) * 2019-07-12 2021-01-12 Micron Technology, Inc. Self-adaptive read voltage adjustment using directional error statistics for memories with time-varying error rates
US11132244B2 (en) * 2019-11-14 2021-09-28 Seagate Technology Llc Block health checking
US10998041B1 (en) * 2020-05-07 2021-05-04 Western Digital Technologies, Inc. Calibrating non-volatile memory read thresholds
US20220027083A1 (en) * 2020-07-27 2022-01-27 Microchip Technology Inc. Regression Neural Network for Identifying Threshold Voltages to be Used in Reads of Flash Memory Devices
US11430531B2 (en) 2020-09-08 2022-08-30 Western Digital Technologies, Inc. Read integration time calibration for non-volatile storage
US11366774B2 (en) * 2020-09-24 2022-06-21 Adesto Technologies Corporation Memory latency reduction in XIP mode
KR20220063609A (ko) * 2020-11-10 2022-05-17 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그 동작 방법
US11810631B2 (en) * 2020-12-16 2023-11-07 Micron Technology, Inc. Data integrity checks based on voltage distribution metrics
CN112988453B (zh) * 2021-04-08 2024-08-27 中国科学院微电子研究所 用于闪存的数据恢复方法
US12014068B2 (en) 2021-04-27 2024-06-18 Microchip Technology Inc. System and method for double data rate (DDR) chip-kill recovery
US11934696B2 (en) 2021-05-18 2024-03-19 Microchip Technology Inc. Machine learning assisted quality of service (QoS) for solid state drives
US11914882B2 (en) * 2022-04-06 2024-02-27 Dell Products L.P. Data protection against mass deletion based on data storage period
US20230393777A1 (en) * 2022-06-02 2023-12-07 Micron Technology, Inc. Dynamic read level trim selection for scan operations of memory devices
CN116682475B (zh) * 2023-05-24 2024-01-23 珠海妙存科技有限公司 电压偏移量确定方法、电压偏移量调整方法和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102009051109A1 (de) 2008-11-19 2010-05-27 FUJITSU LIMITED, Kawasaki-shi Nichtflüchtige Halbleiterspeichervorrichtung
US20130047045A1 (en) 2011-08-19 2013-02-21 Stec, Inc. Error indicator from ecc decoder

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7751237B2 (en) * 2007-09-25 2010-07-06 Sandisk Il, Ltd. Post-facto correction for cross coupling in a flash memory
US9047955B2 (en) 2011-03-30 2015-06-02 Stec, Inc. Adjusting operating parameters for memory cells based on wordline address and cycle information
US9755169B2 (en) * 2012-07-27 2017-09-05 Iucf-Hyu Nonvolatile memory device
CN103970619B (zh) * 2013-02-06 2017-09-29 东芝存储器株式会社 控制器
US20140359202A1 (en) 2013-05-31 2014-12-04 Western Digital Technologies, Inc. Reading voltage calculation in solid-state storage devices
US9209835B2 (en) * 2013-11-27 2015-12-08 Seagate Technology Llc Read retry for non-volatile memories
US9535786B2 (en) * 2015-02-09 2017-01-03 HGST Netherlands B.V. Adaptive targeting of read levels in storage devices

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102009051109A1 (de) 2008-11-19 2010-05-27 FUJITSU LIMITED, Kawasaki-shi Nichtflüchtige Halbleiterspeichervorrichtung
US20130047045A1 (en) 2011-08-19 2013-02-21 Stec, Inc. Error indicator from ecc decoder

Also Published As

Publication number Publication date
CN107179962A (zh) 2017-09-19
CN107179962B (zh) 2020-04-28
KR101931872B1 (ko) 2018-12-21
DE102017001433A1 (de) 2017-09-28
KR20170106215A (ko) 2017-09-20
US9761308B1 (en) 2017-09-12
US20170263311A1 (en) 2017-09-14

Similar Documents

Publication Publication Date Title
DE102017001433B4 (de) Systeme und Verfahren für adaptive Lesepegelanpassung
DE112014004761B4 (de) Beeinflussung des Wear-Leveling in Speichersystemen
DE102016003366B4 (de) Lesepegelgruppierung für erhöhte flash-leistung
DE112014004778B4 (de) Vorrichtung und Verfahren zum Verwalten von Chipgruppen
DE112011100371B4 (de) Verfahren, Vorrichtung und Computerprogrammprodukt zum Decodieren eines Codeworts
DE112014002632T5 (de) Lesespannungsberechnung bei Solid-State-Speichervorrichtungen
DE112020006139B4 (de) Vor-lese-und lese-schwellenspannungsoptimierung
DE112011102160B4 (de) Wear-levelling bei Zellen/Seiten/Teilseiten/Blöcken eines Speichers
DE102019116520A1 (de) Datenspeichersysteme und -verfahren für eine verbesserte datenumlagerung basierend auf lesepegelspannungen, die mit einer fehlerwiederherstellung verbunden sind
DE112019000167B4 (de) Anpassbare Lesewiederholungsreihenfolge basierend auf einem Decodierungserfolgstrend
DE112016004629T5 (de) Datencodiertechniken für eine Vorrichtung
DE102018123805A1 (de) Vorgang für verteiltes Programmieren
DE102010037290A1 (de) Speichersysteme und Verfahren zur Erfassung einer Verteilung von instabilen Speicherzellen
DE102015108143A1 (de) Nand-Vorab-Lese-Fehlerkorrektur
DE112011103295T5 (de) Decodieren in Solid-State-Speichereinheiten
DE102013001401A1 (de) Implementierung von erweitertem Datenlesen für Mehrpegelzellen - bzw. MLC - Speicher unter Verwendung von gegenüber Schwellenspannungsdrift oder Widerstandsdrift toleranter Speicherdatencodierung mit beweglicher Basislinie
DE112008001151B4 (de) Mehrbitprogrammiervorrichtung und Verfahren zum Mehrbitprogrammieren
DE102013001421A1 (de) Implementierung von erweiterter Daten-Teillöschung für Mehrpegelzellen- bzw. MLC-Speicher unter Verwendung von gegenüber Schwellenspannungsdrift oder Widerstandsdrift toleranter Speicherdatencodierung mit beweglicher Basislinie
DE102011054181A1 (de) Nichtflüchtige Speichervorrichtung und Ausleseverfahren davon
DE102013100596B4 (de) Nichtflüchtiges Speichersystem mit Programmier- und Löschverfahren und Blockverwaltungsverfahren
DE102018123926A1 (de) Dynamische mehrstufige Decodierung
DE102019125060A1 (de) Datenspeichersysteme und verfahren zum autonomen anpassen der leistung, kapazität und/oder der betriebsanforderungen eines datenspeichersystems
DE102015011991A1 (de) Codierungsschema für vertikale 3D-Flash-Speicher
DE102019116097A1 (de) Vorprogramm-lesevorgang zur behebung von wortleitungsfehlern
DE102018123961A1 (de) Gruppen-leseaktualisierung

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: MEWBURN ELLIS LLP, DE

R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US

Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC., IRVINE, CALIF., US

Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATE, US

Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC., IRVINE, CALIF., US

R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US

Free format text: FORMER OWNER: SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATES DELAWARE), MILPITAS, CA, US