DE112020006215T5 - Blockfamilien-basierte Fehlervermeidung für Speichervorrichtungen - Google Patents

Blockfamilien-basierte Fehlervermeidung für Speichervorrichtungen Download PDF

Info

Publication number
DE112020006215T5
DE112020006215T5 DE112020006215.5T DE112020006215T DE112020006215T5 DE 112020006215 T5 DE112020006215 T5 DE 112020006215T5 DE 112020006215 T DE112020006215 T DE 112020006215T DE 112020006215 T5 DE112020006215 T5 DE 112020006215T5
Authority
DE
Germany
Prior art keywords
block
family
threshold voltage
block family
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112020006215.5T
Other languages
English (en)
Inventor
Michael Sheperek
Kishore Kumar Muchherla
Mustafa N. Kaynak
Vamsi Pavan Rayaprolu
Bruce A. Liikanen
Peter Feeley
Larry J. Koudele
Shane Nowell
Steven Michael Kientz
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.)
Micron Technology Inc
Original Assignee
Micron Technology 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 Micron Technology Inc filed Critical Micron Technology Inc
Publication of DE112020006215T5 publication Critical patent/DE112020006215T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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
    • G11C29/021Detection or location of defective auxiliary circuits, e.g. defective refresh counters in voltage or current generators
    • 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
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • 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/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • G11C29/4401Indication or identification of errors, e.g. for repair for self repair
    • 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
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/04Arrangements for writing information into, or reading information out from, a digital store with means for avoiding disturbances due to temperature effects
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/20Memory cell initialisation circuits, e.g. when powering up or down, memory clear, latent image memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • 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/32Timing circuits
    • 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/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C2029/4402Internal storage of test result, quality data, chip identification, repair information

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Memory System (AREA)

Abstract

Ein beispielhaftes Speicher-Untersystem enthält eine Speichervorrichtung und eine Verarbeitungsvorrichtung, die funktional mit der Speichervorrichtung gekoppelt ist. Die Verarbeitungsvorrichtung ist ausgestaltet, um eine Blockfamilie zu initialisieren, die mit einer Speichervorrichtung in Beziehung steht; eine Zeitüberschreitung zu initialisieren, die mit der Blockfamilie in Beziehung steht; eine niedrige Temperatur und eine hohe Temperatur unter Verwendung einer Referenztemperatur an der Speichervorrichtung zu initialisieren; als Reaktion auf das Programmieren eines Blocks, der sich auf der Speichervorrichtung befindet, den Block mit der Blockfamilie in Beziehung zu setzen; und als Reaktion auf mindestens eines von: Erfassen des Ablaufs der Zeitüberschreitung oder Bestimmen, dass eine Differenz zwischen der hohen Temperatur und der niedrigen Temperatur größer als oder gleich einem spezifizierten Schwellen-Temperaturwert ist, die Blockfamilie zu schließen.

Description

  • TECHNISCHES GEBIET
  • Ausführungsformen der Erfindung betreffen allgemein Speicher-Untersysteme, und beziehen sich insbesondere auf Blockfamilien-basierte Fehlervermeidung für Speichervorrichtungen.
  • HINTERGRUND
  • Ein Speicher-Untersystem kann eine oder mehrere Speichervorrichtungen enthalten, um Daten zu speichern. Bei den Speichervorrichtungen kann es sich beispielsweise um nichtflüchtige Speichervorrichtungen und flüchtige Speichervorrichtungen handeln. Allgemein kann ein Host-System ein Speicher-Untersystem verwenden, um Daten in den Speichervorrichtungen zu speichern und um Daten aus den Speichervorrichtungen abzurufen.
  • Figurenliste
  • Die vorliegende Erfindung wird anhand der nachstehenden detaillierten Beschreibung und der beigefügten Zeichnungen einiger Ausführungsformen der Erfindung vollständiger verstanden.
    • 1 zeigt ein beispielhaftes Computersystem, das ein Speicher-Untersystem enthält, gemäß einigen Ausführungsformen der vorliegenden Erfindung.
    • 2 zeigt schematisch die zeitliche Spannungsverschiebung, die durch den langsamen Ladungsverlust von Triple-Level-Speicherzellen verursacht wird, gemäß einigen Ausführungsformen der vorliegenden Erfindung.
    • 3 zeigt eine beispielhafte Darstellung, die die Abhängigkeit des Schwellenspannungs-Offsets bezüglich der Zeit nach Programmierung (d.h. die Zeitperiode, die seit Programmierung des Blocks verstrichen ist) veranschaulicht, gemäß einigen Ausführungsformen der vorliegenden Erfindung.
    • 4 zeigt schematisch einen Satz von vordefinierten Schwellenspannungs-Offset-Bins gemäß Ausführungsformen der vorliegenden Erfindung.
    • 5 zeigt schematisch die Blockfamilien-Verwaltungsoperationen, die von der Blockfamilien-Verwaltungskomponente des Speicher-Untersystem-Controllers implementiert werden, der gemäß den Ausführungsformen der vorliegenden Erfindung arbeitet.
    • 6 zeigt schematisch das Auswählen von Blockfamilien zum Kalibrieren gemäß Ausführungsformen der vorliegenden Erfindung.
    • 7 zeigt schematisch beispielhafte Metadaten, die vom Speicher-Untersystem-Controller beibehalten werden, um Blöcke und/oder Partitionen mit Blockfamilien in Beziehung zu setzen, gemäß Ausführungsformen der vorliegenden Erfindung.
    • 8 ist ein Flussdiagramm eines beispielhaften Verfahrens 800 der Blockfamilien-Verwaltung, das von einem Speicher-Untersystem-Controller implementiert wird, der gemäß einigen Ausführungsformen der vorliegenden Erfindung arbeitet.
    • 9 ist ein Flussdiagramm eines beispielhaften Verfahrens 800 zum Durchführen einer Leseoperation durch einen Speicher-Untersystem-Controller, der gemäß einigen Ausführungsformen der vorliegenden Erfindung arbeitet.
    • 10 ist ein Blockdiagramm eines beispielhaften Computersystems, in dem Ausführungsformen der vorliegenden Erfindung arbeiten können.
  • DETAILLIERTE BESCHREIBUNG
  • Ausführungsformen der vorliegenden Erfindung sind auf Blockfamilien-basierte Fehlervermeidung für Speichervorrichtungen gerichtet. Ein Speicher-Untersystem kann eine Speichervorrichtung, ein Speichermodul oder ein Hybrid aus einer Speichervorrichtung und einem Speichermodul sein. Beispiele für Speichervorrichtungen und Speichermodule werden nachfolgend in Verbindung mit 1 beschrieben. Allgemein kann ein Host-System ein Speicher-Untersystem verwenden, das eine oder mehrere Komponenten enthält, wie zum Beispiel Speichervorrichtungen, die Daten speichern. Das Host-System kann Daten zur Verfügung stellen, die im Speicher-Untersystem gespeichert werden sollen, und kann Daten anfordern, die aus dem Speicher-Untersystem abgerufen werden sollen.
  • Ein Speicher-Untersystem kann eine oder mehrere Speichervorrichtungen verwenden, einschließlich einer beliebigen Kombination der verschiedenen Typen von nichtflüchtigen Speichervorrichtungen und/oder flüchtigen Speichervorrichtungen, um die vom Host-System bereitgestellten Daten zu speichern. In einigen Ausführungsformen können nichtflüchtige Speichervorrichtungen durch Flash-Speichervorrichtungen vom Typ Negativ-Und (NAND) bereitgestellt werden. Weitere Beispiele für nichtflüchtige Speichervorrichtungen werden nachfolgend in Verbindung mit 1 beschrieben. Eine nichtflüchtige Speichervorrichtung ist ein Baustein aus einem oder mehreren Speicherelementen („dice“). Jedes Speicherelement („die“) kann eine oder mehrere Ebenen aufweisen. Die Ebenen können in Logikeinheiten (LUN) gruppiert werden. Bei einigen Arten von nichtflüchtigen Speichervorrichtungen (z.B. NAND-Vorrichtungen) weist jede Ebene einen Satz physischer Blöcke auf. Jeder Block enthält einen Satz von Seiten. Jede Seite enthält einen Satz von Speicherzellen („Zellen“). Eine Zelle ist eine elektronische Schaltung, die Informationen speichert.
  • Durch das Speicher-Untersystem können Datenoperationen durchgeführt werden. Bei den Datenoperationen kann es sich um vom Host-System initiierte Operationen handeln. Zum Beispiel kann das Host-System eine Datenoperation (z.B. Schreiben, Lesen, Löschen, usw.) auf einem Speicher-Untersystem initiieren. Das Host-System kann Zugriffsanforderungen (z.B. Schreibbefehl, Lesebefehl) an das Speicher-Untersystem senden, um beispielsweise Daten auf einer Speichervorrichtung im Speicher-Untersystem zu speichern und um Daten aus der Speichervorrichtung im Speicher-Untersystem zu lesen. Die zu lesenden oder zu schreibenden Daten, wie durch eine Host-Anforderung spezifiziert, werden im Folgenden als „Host-Daten“ bezeichnet. Eine Host-Anforderung kann logische Adresseninformationen (z.B. logische Blockadresse (LBA), Namespace) für die Host-Daten enthalten, d.h. den Ort, den das Host-System mit den Host-Daten assoziiert. Die logischen Adresseninformationen (z.B. LBA, Namespace) können Teil von Metadaten für die Host-Daten sein. Metadaten können auch Daten zur Fehlerbehandlung (z.B. ECC-Codewort, Paritäts-Code), Datenversion (z.B. zur Unterscheidung des Alters der geschriebenen Daten), gültige Bitmap (welche LBAs oder logischen Übertragungseinheiten gültige Daten enthalten), usw. enthalten.
  • Eine Speichervorrichtung enthält mehrere Speicherzellen, von denen jede, abhängig vom Speicherzellentyp, ein oder mehrere Bits an Informationen speichern kann. Eine Speicherzelle kann programmiert (beschrieben) werden, indem eine bestimmte Spannung an die Speicherzelle angelegt wird, was dazu führt, dass eine elektrische Ladung in der Speicherzelle gehalten wird, wodurch die von der Speicherzelle erzeugten Spannungsverteilungen moduliert werden können. Darüber hinaus ermöglicht die genaue Steuerung der Menge der von der Speicherzelle gespeicherten elektrischen Ladung das Festlegen mehrerer Schwellenspannungspegel, die verschiedenen logischen Pegeln entsprechen, so dass eine einzige Speicherzelle mehrere Bits an Informationen speichern kann: eine Speicherzelle, die mit 2n verschiedenen Schwellenspannungspegeln betrieben wird, kann n Bits an Informationen speichern. Der Begriff „Schwellenspannung“ bezieht sich hier auf den Spannungspegel, der eine Grenze zwischen zwei benachbarten Spannungsverteilungen definiert, die zwei logischen Pegeln entsprechen. So kann die Lese-Operation durch den Vergleich der gemessenen Spannung der Speicherzelle mit einem oder mehreren Referenz-Spannungspegeln durchgeführt werden, um bei Single-Level-Zellen zwischen zwei logischen Pegeln und bei Multi-Level-Zellen zwischen mehreren logischen Pegeln zu unterscheiden.
  • Aufgrund des als langsamer Ladungsverlust bekannten Phänomens ändert sich die Schwellenspannung einer Speicherzelle im Laufe der Zeit, wenn die elektrische Ladung der Zelle abnimmt, was als „zeitliche Spannungsverschiebung“ bezeichnet wird (da durch die abnehmende elektrische Ladung bewirkt wird, dass sich die Spannungsverteilungen entlang der Spannungsachse in Richtung niedrigerer Spannungspegel verschieben). Die Schwellenspannung ändert sich zunächst schnell (unmittelbar nach dem Programmieren der Speicherzelle) und verlangsamt sich dann in annähernd logarithmisch-linearer Weise bezüglich der seit dem Programmieren der Zelle verstrichenen Zeit. Folglich kann das Versäumnis, die durch den langsamen Ladungsverlust verursachte zeitliche Spannungsverschiebung abzuschwächen, bei Lese-Operationen zu einer erhöhten Bitfehlerrate führen.
  • Verschiedene gängige Implementierungen gehen jedoch entweder nicht angemessen auf die zeitliche Spannungsverschiebung ein oder verwenden ineffiziente Strategien, die zu hohen Bitfehlerraten führen und/oder andere Nachteile haben. Ausführungsformen der vorliegenden Erfindung gehen auf die vorstehend genannten und auf andere Nachteile ein, indem ein Speicher-Untersystem implementiert wird, bei dem Blockfamilien-basierte Fehlervermeidungsstrategien verwendet werden, wodurch die Bitfehlerrate des Speicher-Untersystems erheblich verbessert wird.
  • Gemäß Ausführungsformen der vorliegenden Erfindung wird die zeitliche Spannungsverschiebung für programmierte Blöcke, die nach Blockfamilien gruppiert sind, selektiv verfolgt, und geeignete Spannungs-Offsets, die auf der Blockzugehörigkeit zu einer bestimmten Blockfamilie basieren, werden auf die Basis-Lesepegel angewendet, um Lese-Operationen durchzuführen. Der Begriff „Blockfamilie“ bezieht sich hier auf einen Satz von Blöcken, die innerhalb eines bestimmten Zeitfensters und eines bestimmten Temperaturfensters programmiert wurden. Da die nach dem Programmieren verstrichene Zeit und die Temperatur die Hauptfaktoren sind, die sich auf die zeitliche Spannungsverschiebung auswirken, wird davon ausgegangen, dass alle Blöcke und/oder Partitionen innerhalb einer einzigen Blockfamilie ähnliche Verteilungen der Schwellenspannungen in den Speicherzellen aufweisen, und daher für Lese-Operationen die gleichen Spannungs-Offsets auf die Basis-Lesepegel angewendet werden müssen. Der Begriff „Basis-Lesepegel“ bezieht sich hier auf den anfänglichen Schwellenspannungspegel, den die Speicherzelle unmittelbar nach dem Programmieren aufweist. In einigen Implementierungen können die Basis-Lesepegel in den Metadaten der Speichervorrichtung gespeichert werden.
  • Blockfamilien können asynchron in Bezug auf die Ereignisse der Blockprogrammierung erstellt werden. In einem darstellenden Beispiel kann eine neue Blockfamilie immer dann erzeugt werden, wenn eine bestimmte Zeitperiode (z.B. eine vorbestimmte Anzahl von Minuten) seit der Erzeugung der letzten Blockfamilie verstrichen ist oder sich die Referenztemperatur der Speicherzellen um mehr als einen bestimmten Schwellenwert geändert hat. Der Speicher-Untersystem-Controller kann einen Identifizierer der aktiven Blockfamilie aufrechterhalten, der mit einem oder mehreren Blöcken in Beziehung steht, während sie programmiert werden.
  • Der Speicher-Untersystem-Controller kann periodisch einen Kalibrierungsprozess durchführen, um jedes Speicherelement von jeder Blockfamilie mit einem der vordefinierten Schwellenspannungs-Offset-Bins in Beziehung zu setzen, das wiederum mit dem Spannungs-Offset in Beziehung steht, um für Lese-Operationen angewendet zu werden. Die Zuordnungen von Blöcken zu Blockfamilien und von Blockfamilien und Speicherelementen zu Schwellenspannungs-Offset-Bins können in entsprechenden Metadaten-Tabellen gespeichert werden, die von dem Speicher-Untersystem-Controller beibehalten werden.
  • Beim Empfang eines Lesebefehls kann der Speicher-Untersystem-Controller die Blockfamilie identifizieren, die mit dem Block in Beziehung steht, der durch die logische Blockadresse (LBA) identifiziert wird, die durch den Lesebefehl spezifiziert wird, das Schwellenspannungs-Offset-Bin identifizieren, das mit der Blockfamilie und dem Speicherelement in Beziehung steht, auf dem sich der Block befindet, die neue Schwellenspannung durch additives Anwenden des Schwellenspannungs-Offsets, der mit dem Schwellenspannungs-Offset-Bin in Beziehung steht, auf den Basis-Lesepegel berechnen, und die Lese-Operation unter Verwendung der neuen Schwellenspannung durchführen, wie hier nachfolgend ausführlicher beschrieben wird.
  • Die Vorteile der Systeme und Verfahren, die gemäß einigen Ausführungsformen der vorliegenden Erfindung implementiert werden, umfassen, aber nicht hierauf beschränkt, das Verbessern der Bitfehlerrate bei Lese-Operationen durch Beibehalten von Metadaten, die Gruppen von Blöcken (Blockfamilien) verfolgen, von denen angenommen wird, dass sie ähnliche Spannungsverteilungen haben, und die selektives Durchführen von Kalibrierungsoperationen für begrenzte Teilmengen von Blöcken auf Basis von deren Blockfamilien-Zugehörigkeit, wie nachstehend näher beschrieben.
  • 1 zeigt ein beispielhaftes Computersystem 100, das ein Speicher-Untersystem 110 enthält, gemäß einigen Ausführungsformen der vorliegenden Erfindung. Das Speicher-Untersystem 110 kann Medien enthalten, wie zum Beispiel eine oder mehrere flüchtige Speichervorrichtungen (z.B. Speichervorrichtung 140), eine oder mehrere nichtflüchtige Speichervorrichtungen (z.B. Speichervorrichtung 130) oder eine Kombination davon.
  • Ein Speicher-Untersystem 110 kann eine Speichervorrichtung, ein Speichermodul oder ein Hybrid aus einem Speichervorrichtung und einem Speichermodul sein. Beispiele für eine Speichervorrichtung sind ein Solid-State-Laufwerk (SSD), ein Flash-Laufwerk, ein USB-Flash-Laufwerk (Universal Serial Bus Flash Laufwerk), ein eMMC-Laufwerk (Embedded Multi-Media Controller Laufwerk), ein UFS-Laufwerk (Universal Flash Storage Laufwerk), eine SD-Karte (Secure Digital Karte) und ein Festplattenlaufwerk (HDD). Beispiele für Speichermodule sind ein Dual Inline Memory Module (DIMM), ein Small Outline DIMM (SO-DIMM) und verschiedene Typen von nichtflüchtigen Dual Inline Memory Modulen (NVDIMM).
  • Das Computersystem 100 kann eine Computervorrichtung sein, wie zum Beispiel ein Desktop-Computer, ein Laptop-Computer, ein Netzwerk-Server, eine mobile Vorrichtung, ein Fahrzeug (z.B. ein Flugzeug, eine Drohne, ein Zug, ein Auto oder ein anderes Transportmittel), eine loT-fähige Vorrichtung (Internet der Dinge Vorrichtung), ein eingebetteter Computer (z.B. ein solcher, wie er in einem Fahrzeug, einer Industrieanlage oder einem vernetzten kommerziellen Vorrichtung enthalten ist) oder eine solche Computervorrichtung, die einen Speicher und eine Verarbeitungsvorrichtung (z.B. einen Prozessor) enthält.
  • Das Computersystem 100 kann ein Host-System 120 enthalten, das mit einem oder mehreren Speicher-Untersystemen 110 verbunden ist. In einigen Ausführungsformen ist das Host-System 120 mit verschiedenen Typen von Speicher-Untersystemen 110 verbunden. 1 zeigt ein Beispiel für ein Host-System 120, das mit einem Speicher-Untersystem 110 gekoppelt ist. Wie hier verwendet, beziehen sich „gekoppelt an“ oder „gekoppelt mit“ allgemein auf eine Verbindung zwischen Komponenten, die eine indirekte kommunikative Verbindung oder eine direkte kommunikative Verbindung (z.B. ohne zwischengeschaltete Komponenten) sein kann, ob verdrahtet oder drahtlos, einschließlich elektrische, optische, magnetische Verbindungen, usw.
  • Das Host-System 120 kann einen Prozessor-Chipsatz und einen Software-Stapel enthalten, der von dem Prozessor-Chipsatz ausgeführt wird. Der Prozessor-Chipsatz kann einen oder mehrere Kerne, einen oder mehrere Caches, einen Speicher-Controller (z.B. NVDIMM-Controller) und einen Speicherprotokoll-Controller (z.B. PCIe-Controller, SATA-Controller) enthalten. Das Host-System 120 nutzt das Speicher-Untersystem 110, um beispielsweise Daten in das Speicher-Untersystem 110 zu schreiben und um Daten aus dem Speicher-Untersystem 110 zu lesen.
  • Das Host-System 120 kann über eine physische Host-Schnittstelle mit dem Speicher-Untersystem 110 verbunden sein. Beispiele für eine physische Host-Schnittstelle sind unter anderem eine SATA-Schnittstelle (Serial Advanced Technology Attachment Schnittstelle), eine PCIe-Schnittstelle (Peripheral Component Interconnect Express Schnittstelle), eine USB-Schnittstelle (Universal Serial Bus Schnittstelle), ein Fibre Channel, ein SAS (Serial Attached SCSI), ein DDR-Speicherbus (Double Data Rate Speicherbus), ein SCSI (Small Computer System Interface), eine DIMM-Schnittstelle (Dual Inline Memory Module-Schnittstelle) (z.B. eine DIMM-Sockel-Schnittstelle, die Double Data Rate (DDR) unterstützt), ein ONFI (Open NAND Flash Interface), DDR (Double Data Rate), LPDDR (Low Power Double Data Rate), usw. Die physische Host-Schnittstelle kann zur Datenübertragung zwischen dem Host-System 120 und dem Speicher-Untersystem 110 verwendet werden. Das Host-System 120 kann außerdem eine NVMe-Schnittstelle (NVM Express Schnittstelle) verwenden, um auf Komponenten (z.B. Speichervorrichtungen 130) zuzugreifen, wenn das Speicher-Untersystem 110 über die PCIe-Schnittstelle mit dem Host-System 120 gekoppelt ist. Die physische Host-Schnittstelle kann eine Schnittstelle zur Weiterleitung von Steuersignalen, Adressensignalen, Datensignalen und anderen Signalen zwischen dem Speicher-Untersystem 110 und dem Host-System 120 bereitstellen. In 1 ist ein beispielhaftes Speicher-Untersystem 110 dargestellt. Allgemein kann das Host-System 120 auf mehrere Speicher-Untersysteme über eine gemeinsame Kommunikationsverbindung, mehrere separate Kommunikationsverbindungen und/oder eine Kombination von Kommunikationsverbindungen zugreifen.
  • Die Speichervorrichtungen 130, 140 können eine beliebige Kombination der verschiedenen Typen von nichtflüchtigen Speichervorrichtungen und/oder flüchtigen Speichervorrichtungen umfassen. Bei den flüchtigen Speichervorrichtungen (z.B. Speichervorrichtung 140) kann es sich um Direktzugriffsspeicher (RAM) handeln, wie z.B. dynamische Direktzugriffsspeicher (DRAM) und synchrone dynamische Direktzugriffsspeicher (SDRAM), jedoch nicht hierauf beschränkt.
  • Einige Beispiele für nichtflüchtige Speichervorrichtungen (z.B. Speichervorrichtung 130) umfassen Flash-Speicher vom Negativ-Und-Typ (NAND) und Write-in-Place-Speicher, wie zum Beispiel eine dreidimensionale Kreuzpunkt-Speichervorrichtung („3D-Kreuzpunkt“-Speichervorrichtung), die ein Kreuzpunkt-Array aus nichtflüchtigen Speicherzellen ist. Ein Kreuzpunkt-Array eines nichtflüchtigen Speichers kann eine Bitspeicherung auf Basis einer Änderung des Bahnwiderstands in Verbindung mit einem stapelbaren Kreuzgitter-Datenzugriffs-Array durchführen. Darüber hinaus kann ein nichtflüchtiger Kreuzpunktspeicher im Gegensatz zu vielen Flash-Speichern eine Write-in-Place-Operation durchführen, bei der eine nichtflüchtige Speicherzelle programmiert werden kann, ohne dass die nichtflüchtige Speicherzelle zuvor gelöscht wurde. Flash-Speicher vom Typ NAND umfassen beispielsweise zweidimensionale NAND (2D NAND) und dreidimensionale NAND (3D NAND).
  • Jede der Speichervorrichtungen 130 kann ein oder mehrere Arrays aus Speicherzellen enthalten. Ein Typ von Speicherzellen, zum Beispiel Single-Level-Zellen (SLC), kann ein Bit pro Zelle speichern. Andere Typen von Speicherzellen, wie zum Beispiel Multi-Level-Zellen (MLC), Triple-Level-Zellen (TLC) und Quad-Level-Zellen (QLC), können mehrere Bits pro Zelle speichern. In einigen Ausführungsformen kann jede der Speichervorrichtungen 130 ein oder mehrere Arrays aus Speicherzellen enthalten, wie zum Beispiel SLC, MLC, TLC, QLC oder eine beliebige Kombination davon. In einigen Ausführungsformen kann eine bestimmte Speichervorrichtung einen SLC-Bereich und einen MLC-Bereich, einen TLC-Bereich oder einen QLC-Bereich von Speicherzellen enthalten. Die Speicherzellen der Speichervorrichtungen 130 können als Seiten gruppiert werden, die sich auf eine logische Einheit der zum Speichern von Daten verwendeten Speichervorrichtung beziehen können. Bei einigen Speichertypen (z.B. NAND) können die Seiten zu Blöcken gruppiert werden.
  • Obwohl nichtflüchtige Speichervorrichtungen, wie zum Beispiel 3D-Kreuzpunkt-Arrays aus nichtflüchtigen Speicherzellen und NAND-Speicher (z.B. 2D NAND, 3D NAND) beschrieben werden, kann die Speichervorrichtung 130 auf jedem anderen Typ von nichtflüchtigen Speichern basieren, wie zum Beispiel Festwertspeicher (ROM), Phasenwechselspeicher (PCM), selbstselektierender Speicher, andere Chalcogenid-basierte Speicher, ferroelektrischer Transistor-Direktzugriffsspeicher (FeTRAM), ferroelektrischer Direktzugriffsspeicher (FeRAM), Magneto-Direktzugriffsspeicher (MRAM), STT-MRAM (Spin Transfer Torque MRAM), CBRAM (Conductive Bridging RAM), RRAM (Resistive Random Access Memory), Oxid-basierte RRAM (OxRAM), Negativ-Oder-Flash-Memory (NOR-Flash-Memory) und elektrisch löschbare programmierbare Festwertspeicher (EEPROM).
  • Ein Speicher-Untersystem-Controller 115 (oder Controller 115 der Einfachheit halber) kann mit den Speichervorrichtungen 130 kommunizieren, um Operationen durchzuführen, wie zum Beispiel Lesen von Daten, Schreiben von Daten oder Löschen von Daten in den Speichervorrichtungen 130, und andere solche Operationen. Der Speicher-Untersystem-Controller 115 kann Hardware enthalten, wie zum Beispiel eine oder mehrere integrierte Schaltungen und/oder diskrete Komponenten, einen Pufferspeicher oder eine Kombination davon. Die Hardware kann digitale Schaltkreise mit dedizierter (d.h. fest kodierter) Logik zur Durchführung der hier beschriebenen Operationen enthalten. Der Speicher-Untersystem-Controller 115 kann ein Mikrocontroller, eine spezielle Logikschaltung (z.B. ein feldprogrammierbares Gate-Array (FPGA), eine anwendungsspezifische integrierte Schaltung (ASIC), etc.) oder ein anderer geeigneter Prozessor sein.
  • Der Speicher-Untersystem-Controller 115 kann einen Prozessor 117 (z.B. Verarbeitungsvorrichtung) enthalten, der ausgestaltet ist, um Instruktionen auszuführen, die in einem lokalen Speicher 119 gespeichert sind. In dem gezeigten Beispiel umfasst der lokale Speicher 119 des Speicher-Untersystem-Controllers 115 einen eingebetteten Speicher, der ausgestaltet ist, um Instruktionen zur Durchführung verschiedener Prozesse, Operationen, logischer Abläufe und Routinen zu speichern, um den Betrieb des Speicher-Untersystems 110 zu steuern, einschließlich der Handhabung von Kommunikationen zwischen dem Speicher-Untersystem 110 und dem Host-System 120.
  • In einigen Ausführungsformen kann der lokale Speicher 119 Speicherregister enthalten, um Speicherzeiger, abgerufene Daten, usw. zu speichern. Der lokale Speicher 119 kann auch einen Festwertspeicher (ROM) zum Speichern von Mikro-Code enthalten. Obwohl das beispielhafte Speicher-Untersystem 110 aus 1 so dargestellt ist, dass es den Controller 115 enthält, kann in einer anderen Ausführungsform der vorliegenden Erfindung ein Speicher-Untersystem 110 keinen Controller 115 enthalten und stattdessen auf einer externen Steuerung basieren (z.B. bereitgestellt durch einen externen Host oder durch einen vom Speicher-Untersystem getrennten Prozessor oder Controller).
  • Allgemein kann der Speicher-Untersystem-Controller 115 Befehle oder Operationen vom Host-System 120 empfangen und die Befehle oder Operationen in Instruktionen oder geeignete Befehle umwandeln, um den gewünschten Zugriff auf die Speichervorrichtungen 130 zu erreichen. Der Speicher-Untersystem-Controller 115 kann für andere Operationen verantwortlich sein, wie zum Beispiel Abnutzungsausgleichsoperationen, Speicherbereinigungsoperationen, Fehlererfassungs- und Fehlerkorrekturcode-Operationen (ECC-Operationen), Verschlüsselungsoperationen, Cache-Operationen und Adressenübersetzungen zwischen einer logischen Adresse (z.B. logische Blockadresse (LBA), Namespace) und einer physischen Adresse (z.B. physische Blockadresse), die mit den Speichervorrichtungen 130 verbunden sind. Der Speicher-Untersystem-Controller 115 kann außerdem eine Host-Schnittstellenschaltung enthalten, um über die physische Host-Schnittstelle mit dem Host-System 120 zu kommunizieren. Die Host-Schnittstellenschaltung kann die vom Host-System empfangenen Befehle in Befehlsinstruktionen umwandeln, um auf die Speichervorrichtungen 130 zuzugreifen und um die mit den Speichervorrichtungen 130 in Beziehung stehende Antworten in Informationen für das Host-System 120 umzuwandeln.
  • In einigen Implementierungen kann das Speicher-Untersystem 110 ein Striping-Schema verwenden, bei dem jede Daten-Nutzlast (z.B. Benutzerdaten) mehrere Speicherelemente der Speichervorrichtungen 130 (z.B. NAND-Flash-Speichervorrichtungen) verwendet, so dass die Nutzlast über eine Teilmenge von Speicherelementen verteilt wird, während die verbleibenden ein oder mehrere Speicherelemente zum Speichern der Fehlerkorrekturinformationen (z.B. Paritätsbits) verwendet werden. Folglich wird ein Satz von Blöcken, die über einen Satz von Speicherelementen einer Speichervorrichtung unter Verwendung eines Striping-Schemas verteilt sind, hier als „Superblock“ bezeichnet.
  • Das Speicher-Untersystem 110 kann auch zusätzliche Schaltungen oder Komponenten enthalten, die nicht dargestellt sind. In einigen Ausführungsformen kann das Speicher-Untersystem 110 einen Cache oder Puffer (z.B. DRAM) und Adressenschaltungen (z.B. einen Zeilendekodierer und einen Spaltendekodierer) enthalten, die eine Adresse vom Controller 115 empfangen und die Adresse dekodieren können, um auf die Speichervorrichtungen 130 zuzugreifen.
  • In einigen Ausführungsformen umfassen die Speichervorrichtungen 130 lokale Medien-Controller 135, die in Verbindung mit dem Speicher-Untersystem-Controller 115 arbeiten, um Operationen hinsichtlich einer oder mehreren Speicherzellen der Speichervorrichtungen 130 auszuführen. Ein externer Controller (z.B. der Speicher-Untersystem-Controller 115) kann die Speichervorrichtung 130 extern verwalten (z.B. Medienverwaltungsoperationen bezüglich der Speichervorrichtung 130 durchführen). In einigen Ausführungsformen ist eine Speichervorrichtung 130 eine verwaltete Speichervorrichtung, d.h. eine Roh-Speichervorrichtung, die mit einem lokalen Controller (z.B. der lokale Controller 135) für die Medienverwaltung innerhalb desselben Speichervorrichtungspakets kombiniert ist. Ein Beispiel für eine verwaltete Speichervorrichtung ist eine verwaltete NAND-Vorrichtung (MNAND).
  • Das Speicher-Untersystem 110 enthält eine Blockfamilien-Verwaltungskomponente 113, die verwendet werden kann, um Blockfamilien-basierte Fehlervermeidungsstrategien gemäß den Ausführungsformen der vorliegenden Erfindung zu implementieren. In einigen Ausführungsformen enthält der Controller 115 zumindest einen Bereich der Blockfamilien-Verwaltungskomponente 113. Beispielsweise kann der Controller 115 einen Prozessor 117 (Verarbeitungsvorrichtung) enthalten, der ausgestaltet ist, um in dem lokalen Speicher 119 gespeicherte Instruktionen zur Durchführung der hier beschriebenen Operationen auszuführen. In einigen Ausführungsformen ist die Blockfamilien-Verwaltungskomponente 113 Teil des Host-Systems 120, einer Anwendung oder eines Betriebssystems. Die Blockfamilien-Verwaltungskomponente 113 kann Blockfamilien verwalten, die mit den Speichervorrichtungen 130 in Beziehung stehen, wie nachfolgend näher beschrieben wird.
  • 2 zeigt schematisch die zeitliche Spannungsverschiebung, die durch den langsamen Ladungsverlust von Triple-Level-Speicherzellen verursacht wird. Obwohl das Beispiel in 2 Triple-Level-Zellen verwendet, können dieselben Beobachtungen gemacht werden, und folglich sind dieselben Abhilfemaßnahmen auf Single-Level-Zellen und Multi-Level-Zellen anwendbar, um den langsamen Ladungsverlust zu kompensieren.
  • Wie bereits erwähnt, kann eine Speicherzelle programmiert (beschrieben) werden, indem eine bestimmte Spannung an die Speicherzelle angelegt wird, was dazu führt, dass eine elektrische Ladung in der Speicherzelle gehalten wird, wodurch die von der Speicherzelle erzeugten Spannungsverteilungen moduliert werden können. Die genaue Steuerung der Menge der von der Speicherzelle gespeicherten elektrischen Ladung ermöglicht es, mehrere Schwellenspannungspegel festzulegen, die verschiedenen logischen Pegeln entsprechen, wodurch ermöglicht wird, dass eine einzige Speicherzelle effektiv mehrere Informations-Bits speichern kann: eine Speicherzelle, die mit 2n verschiedenen Schwellenspannungspegeln betrieben wird, kann n Informations-Bits speichern.
  • In 2 zeigt jedes Diagramm 220A-220N eine Spannungsverteilung, die von Speicherzellen erzeugt wird, die mit einem entsprechenden Schreibpegel programmiert wurden (von dem angenommen werden kann, dass er in der Mitte der Verteilung liegt), um einen entsprechenden logischen Pegel zu kodieren („000“ bis „111“ im Falle eines TLC). Um zwischen benachbarten Verteilungen (die zwei verschiedenen logischen Pegeln entsprechen) zu unterscheiden, werden die Schwellenspannungspegel (dargestellt durch gestrichelte vertikale Linien) so definiert, dass jede gemessene Spannung, die unter einen Schwellenpegel fällt, mit einer Verteilung von dem Paar benachbarter Verteilungen in Beziehung steht, während jede gemessene Spannung, die größer oder gleich dem Schwellenpegel ist, mit einer anderen Verteilung von dem Paar benachbarter Verteilungen in Beziehung steht.
  • Wie aus dem Vergleich der beispielhaften Diagramme 210 und 230 hervorgeht, die die Zeiträume unmittelbar nach dem Programmieren bzw. 440 Stunden nach dem Programmieren wiedergeben, ändern sich die Spannungsverteilungen im Laufe der Zeit aufgrund des langsamen Ladungsverlusts, was zu driftenden Werten der Schwellenspannungspegel führt, die durch gestrichelte vertikale Linien dargestellt sind. In verschiedenen Ausführungsformen der vorliegenden Erfindung wird die zeitliche Spannungsverschiebung für programmierte Blöcke, die nach Blockfamilien gruppiert sind, selektiv verfolgt, und geeignete Spannungs-Offsets, die auf einer Block-Zugehörigkeit zu einer bestimmten Blockfamilie basieren, werden auf die Basis-Lesepegel angewendet, um Lese-Operationen durchzuführen.
  • 3 zeigt eine beispielhafte Darstellung 300, die die Abhängigkeit des Schwellenspannungs-Offsets 310 von der Zeit nach dem Programmieren 320 (d.h. die Zeitperiode, die seit dem Programmieren des Blocks verstrichen ist) veranschaulicht. Wie in 3 schematisch dargestellt, sind die Blöcke der Speichervorrichtung in Blockfamilien 330A-330N gruppiert, so dass jede Blockfamilie einen oder mehrere Blöcke enthält, die innerhalb eines bestimmten Zeitfensters und eines bestimmten Temperaturfensters programmiert wurden. Wie vorstehend erwähnt, da die nach dem Programmieren verstrichene Zeit und die Temperatur die Hauptfaktoren sind, die die zeitliche Spannungsverschiebung beeinflussen, wird angenommen, dass alle Blöcke und/oder Partitionen innerhalb einer einzelnen Blockfamilie 310 ähnliche Verteilungen der Schwellenspannungen in den Speicherzellen haben und daher für Lese-Operationen die gleichen Spannungs-Offsets erfordern.
  • Blockfamilien können asynchron in Bezug auf Blockprogrammierungsereignisse erzeugt werden. In einem darstellenden Beispiel kann der Speicher-Untersystem-Controller 115 aus 1 eine neue Blockfamilie erzeugen, wenn seit der Erzeugung der letzten Blockfamilie eine bestimmte Zeitspanne (z.B. eine vorgegebene Anzahl von Minuten) verstrichen ist oder wenn sich die Referenztemperatur der Speicherzellen, die in bestimmten Zeitintervallen aktualisiert wird, seit der Erzeugung der aktuellen Blockfamilie um mehr als einen bestimmten Schwellenwert geändert hat.
  • Eine neu erzeugte Blockfamilie kann mit Bin 0 in Beziehung gesetzt werden. Dann kann der Speicher-Untersystem-Controller periodisch einen Kalibrierungsprozess durchführen, um jedes Speicherelement jeder Blockfamilie mit einem der vordefinierten Schwellenspannungs-Offset-Bins (Bins 0-7 in dem darstellenden Beispiel von 3) in Beziehung zu setzen, das wiederum mit dem für Lese-Operationen anzuwendenden Spannungs-Offset in Beziehung steht. Die Zuordnungen von Blöcken zu Blockfamilien und von Blockfamilien und Speicherelementen zu Schwellenspannungs-Offset-Bins können in entsprechenden Metadaten-Tabellen gespeichert werden, die von dem Speicher-Untersystem-Controller beibehalten werden.
  • 4 zeigt schematisch einen Satz von vordefinierten Schwellenspannungs-Offset-Bins (Bin 0 bis Bin 9) gemäß den Ausführungsformen der vorliegenden Erfindung. Wie in 4 schematisch dargestellt, kann die Darstellung der Schwellenspannungs-Offsets in mehrere Schwellenspannungs-Offset-Bins unterteilt werden, so dass jedes Bin einem vorgegebenen Bereich von Schwellenspannungs-Offsets entspricht. Obwohl das Beispiel in 4 zehn Bins definiert, können in anderen Implementierungen auch andere Zahlen von Bins verwendet werden (z.B. 64 Bins). Auf der Grundlage eines periodisch durchgeführten Kalibrierungsprozesses setzt der Speicher-Untersystem-Controller jedes Speicherelement jeder Blockfamilie mit einem Schwellenspannungs-Offset-Bin in Beziehung, das einen Satz von Schwellenspannungs-Offsets definiert, die auf den Basis-Spannungs-Lesepegel anzuwenden sind, um Lese-Operationen durchzuführen, wie nachfolgend näher beschrieben wird.
  • 5 zeigt schematisch die Blockfamilien-Verwaltungsoperationen, die von der Blockfamilien-Verwaltungskomponente des Speicher-Untersystem-Controllers implementiert werden, der gemäß den Ausführungsformen der vorliegenden Erfindung arbeitet. Wie in 5 schematisch dargestellt, kann die Blockfamilien-Verwaltung 510 in einer Speichervariablen einen Identifizierer 520 der aktiven Blockfamilie speichern, die mit einem oder mehreren Blöcken von Zeigern 530A-530K in Beziehung steht, während sie programmiert werden. Der Begriff „Zeiger“ bezieht sich hier im weitesten Sinne auf eine Stelle in der Speichervorrichtung, in die die Daten geschrieben werden.
  • Der Speicher-Untersystem-Controller kann eine Power-on-Minutes-Takt (POM-Takt) zur Verfolgung der Erzeugungszeiten von Blockfamilien verwenden. In einigen Implementierungen kann zusätzlich zum POM-Takt ein weniger genauer Takt verwendet werden, der weiterläuft, wenn sich der Controller in verschiedenen Stromsparzuständen befindet, sodass der POM-Takt beim Aufwachen des Controllers aus dem Stromsparzustand auf Basis des weniger genauen Takts aktualisiert wird.
  • So wird beim Initialisieren von jeder Blockfamilie die aktuelle Zeit 540 in einer Speichervariablen als Startzeit 550 der Blockfamilie gespeichert. Während die Blöcke programmiert werden, wird die aktuelle Zeit 540 mit der Startzeit 550 der Blockfamilie verglichen. Als Reaktion auf das Bestimmen, dass die Differenz zwischen der aktuellen Zeit 540 und der Blockfamilien-Startzeit 550 größer oder gleich der spezifizierten Zeitperiode (z.B. einer vorbestimmten Anzahl von Minuten) ist, wird die Speichervariable, die den aktiven Blockfamilien-Identifizierer 520 speichert, aktualisiert, um die nächste Blockfamilien-Nummer zu speichern (z.B. die nächste sequentielle Ganzzahl), und die Speichervariable, die die Blockfamilien-Startzeit 550 speichert, wird aktualisiert, um die aktuelle Zeit 540 zu speichern.
  • Die Blockfamilien-Verwaltung 510 kann auch zwei Speichervariablen zum Speichern der hohen und niedrigen Referenztemperaturen eines ausgewählten Speicherelements jeder Speichervorrichtung verwalten. Beim Initialisieren von jeder Blockfamilie speichern die Variablen für die hohe Temperatur 560 und die niedrige Temperatur 570 den Wert der aktuellen Temperatur des ausgewählten Speicherelements der Speichervorrichtung. Während des Betriebs, obwohl der aktive Blockfamilien-Identifizierer 520 der gleiche bleibt, werden Temperaturmessungen periodisch durchgeführt und mit den gespeicherten Werten für die hohe Temperatur 560 und die niedrige Temperatur 570 verglichen, die entsprechend aktualisiert werden: sollte sich herausstellen, dass die Temperaturmessung größer oder gleich dem in der Variablen für die hohe Temperatur 560 gespeicherten Wert ist, wird letztere aktualisiert, um diese Temperaturmessung zu speichern; sollte sich umgekehrt herausstellen, dass die Temperaturmessung unter den in der Variablen für die niedrige Temperatur 570 gespeicherten Wert fällt, wird letztere aktualisiert, um diese Temperaturmessung zu speichern.
  • Die Blockfamilien-Verwaltung 510 kann ferner periodisch die Differenz zwischen der hohen Temperatur 560 und der niedrigen Temperatur 570 berechnen. Als Reaktion auf das Bestimmen, dass die Differenz zwischen der hohen Temperatur 560 und der niedrigen Temperatur 570 größer oder gleich einer spezifizierten Temperaturschwelle ist, kann die Blockfamilien-Verwaltung 510 eine neue aktive Blockfamilie erstellen: die Speichervariable, die den Identifizierer 520 der aktiven Blockfamilie speichert, wird aktualisiert, um die nächste Blockfamilien-Nummer (z.B. die nächste sequentielle Ganzzahl) zu speichern, die Speichervariable, die die Startzeit 550 der Blockfamilie speichert, wird aktualisiert, um die aktuelle Zeit 540 zu speichern, und die Variablen für die hohe Temperatur 560 und die niedrige Temperatur 570 werden aktualisiert, um den Wert der aktuellen Temperatur des ausgewählten Speicherelements der Speichereinrichtung zu speichern.
  • Zum Zeitpunkt des Programmierens eines Blocks setzt der Speicher-Untersystem-Controller den Block mit der derzeit aktiven Blockfamilie in Beziehung. Die Zuordnung jedes Blocks zu einer entsprechenden Blockfamilie wird durch die Blockfamilien-Metadaten 580 widergespiegelt, wie nachfolgend unter Bezugnahme auf 7 näher beschrieben.
  • Wie bereits erwähnt, ordnet der Speicher-Untersystem-Controller auf Basis eines periodisch durchgeführten Kalibrierungsprozesses jedem Speicherelement jeder Blockfamilie ein Schwellenspannungs-Offset-Bin zu, das einen Satz von Schwellenspannungs-Offsets definiert, die auf den Basis-Spannungs-Lesepegel anzuwenden sind, um Lese-Operationen durchzuführen. Der Kalibrierungsprozess umfasst das Durchführen von Lese-Operationen unter Verwendung verschiedener Schwellenspannungs-Offsets bezüglich einer bestimmte Anzahl zufällig ausgewählter Blöcke innerhalb der zu kalibrierenden Blockfamilie, und das Auswählen des Schwellenspannungs-Offsets, wodurch die Fehlerrate der Lese-Operation minimiert wird.
  • 6 zeigt schematisch das Auswählen von Blockfamilien zur Kalibrierung gemäß einigen Ausführungsformen der vorliegenden Erfindung. Wie in 6 schematisch dargestellt, kann der Speicher-Untersystem-Controller die Kalibrierungsoperationen auf die älteste Blockfamilie in jedem Bin (z.B. Blockfamilie 610 in Bin 0 und Blockfamilie 620 in Bin 1) beschränken, da es die älteste Blockfamilie ist, die aufgrund des langsamen Ladungsverlusts vor jeder anderen Blockfamilie des aktuellen Bins in das nächste Bin wandern wird.
  • 7 zeigt schematisch ein Beispiel für Metadaten, die vom Speicher-Untersystem-Controller verwaltet werden, um Blöcke und/oder Partitionen mit Blockfamilien in Beziehung zu setzen, gemäß Ausführungsformen der vorliegenden Erfindung. Wie in 7 schematisch dargestellt, kann der Speicher-Untersystem-Controller die Superblock-Tabelle 710, die Familien-Tabelle 720 und die Offset-Tabelle 730 verwalten.
  • Jeder Datensatz der Superblocktabelle 710 spezifiziert die Blockfamilie, die mit der angegebenen Superblock- und Partitionskombination in Beziehung steht. In einigen Implementierungen können die Superblock-Tabellendatensätze außerdem Zeit- und Temperaturwerte enthalten, die mit der angegebenen Superblock- und Partitionskombination in Beziehung stehen.
  • Die Familien-Tabelle 720 wird durch die Blockfamilien-Nummer indiziert, so dass jeder Datensatz der Familien-Tabelle 720 für die Blockfamilie, auf die der Index des Datensatzes verweist, einen Satz von Schwellenspannungs-Offset-Bins spezifiziert, die den jeweiligen Speicherelementen der Blockfamilie zugeordnet sind. Mit anderen Worten: jeder Datensatz der Familien-Tabelle 720 enthält einen Vektor, dessen Elemente jeweils das Schwellenspannungs-Offset-Bin spezifizieren, das mit dem durch den Index des Vektorelements referenzierten Speicherelement in Beziehung steht. Die Schwellenspannungs-Offset-Bins, die mit den Speicherelementen der Blockfamilie in Beziehung stehen, können durch den Kalibrierungsprozess bestimmt werden, wie weiter oben näher beschrieben wurde.
  • Schließlich wird die Offset-Tabelle 730 durch die Bin-Nummer indiziert. Jeder Datensatz der Offset-Tabelle 730 spezifiziert einen Satz von Schwellenspannungs-Offsets (z.B. für TLC, MLC und/oder SLC), die einem Schwellenspannungs-Offset-Bin zugeordnet sind.
  • Die Metadaten-Tabellen 710-730 können auf einer oder mehreren Speichervorrichtungen 130 aus 1 gespeichert werden. In einigen Implementierungen kann zumindest ein Teil der Metadaten-Tabellen im lokalen Speicher 119 des Speicher-Untersystem-Controllers 115 aus 1 zwischengespeichert werden.
  • Im Betrieb bestimmt der Speicher-Untersystem-Controller bei Empfangen eines Lesebefehls die physische Adresse, die der durch den Lesebefehl angegebenen logischen Blockadresse (LBA) entspricht. Komponenten der physischen Adresse, wie zum Beispiel die physische Blocknummer und der Identifizierer des Speicherelements, werden für die Durchführung des Metadaten-Tabellendurchlaufs verwendet: zuerst wird die Superblock-Tabelle 710 verwendet, um den Blockfamilien-Identifizierer zu identifizieren, der der physischen Blocknummer entspricht; dann wird der Blockfamilien-Identifizierer als der Index für die Familien-Tabelle 720 verwendet, um das Schwellenspannungs-Offset-Bin zu bestimmen, das mit der Blockfamilie und dem Speicherelement in Beziehung steht; schließlich wird das identifizierte Schwellenspannungs-Offset-Bin als Index für die Offset-Tabelle 730 verwendet, um den Schwellenspannungs-Offset zu bestimmen, der dem Bin entspricht. Der Speicher-Untersystem-Controller kann dann den identifizierten Schwellenspannungs-Offset additiv auf den Basis-Spannungs-Lesepegel anwenden, um die angeforderte Lese-Operation durchzuführen.
  • In dem veranschaulichenden Beispiel aus 7 ordnet die Superblock-Tabelle 710 die Partition 0 des Superblocks 0 der Blockfamilie 4 zu, die als Index für die Familien-Tabelle 720 verwendet wird, um zu bestimmen, dass Speicherelement 0 dem Bin 3 zugeordnet ist. Der letztere Wert wird als Index für die Offset-Tabelle verwendet, um die Schwellenspannungs-Offset-Werte für Bin 3 zu bestimmen.
  • 8 ist ein Flussdiagramm eines beispielhaften Verfahrens 800 der Blockfamilien-Verwaltung, die durch einen Speicher-Untersystem-Controller implementiert wird, der gemäß einigen Ausführungsformen der vorliegenden Erfindung arbeitet. Das Verfahren 800 kann von einer Verarbeitungslogik ausgeführt werden, die Hardware (z.B. Verarbeitungsvorrichtung, Schaltungen, dedizierte Logik, programmierbare Logik, Mikro-Code, Hardware einer Vorrichtung, integrierte Schaltungen, usw.), Software (z.B. Instruktionen, die auf einer Verarbeitungsvorrichtung laufen oder ausgeführt werden) oder eine Kombination davon umfassen kann. In einigen Ausführungsformen wird das Verfahren 800 von der Blockfamilien-Verwaltungskomponente 113 aus 1 durchgeführt. Obwohl in einer bestimmten Abfolge oder Reihenfolge dargestellt, kann die Reihenfolge der Operationen, sofern nicht anders angegeben, geändert werden. Daher sind die dargestellten Ausführungsformen nur als Beispiele zu verstehen, und die dargestellten Operationen können in einer anderen Reihenfolge ausgeführt werden, während einige Operationen parallel ausgeführt werden können. Außerdem können in einigen Ausführungsformen eine oder mehrere Operationen weggelassen werden. Daher sind nicht alle dargestellten Operationen in jeder Ausführungsform erforderlich, und andere Prozessabläufe sind möglich.
  • Bei Operation 810 initialisiert die Verarbeitungsvorrichtung des Speicher-Untersystem-Controllers eine Blockfamilie und speichert in einer Speichervariablen einen Identifizierer der Blockfamilie.
  • Bei Operation 815 initialisiert die Verarbeitungsvorrichtung einen Timer, der mit der Blockfamilie in Beziehung steht.
  • Bei Operation 820 initialisiert die Verarbeitungsvorrichtung die niedrige Temperatur und die hohe Temperatur, die mit der Blockfamilie in Beziehung stehen, um die aktuelle Temperatur eines ausgewählten Speicherelements der Speichervorrichtung (z.B. ein zufällig ausgewähltes Speicherelement) zu speichern.
  • Als Reaktion auf das Bestimmen bei Operation 825, dass die Differenz zwischen den Werten für die hohe Temperatur und für die niedrige Temperatur größer oder gleich einer spezifizierten Temperaturschwelle ist, verzweigt das Verfahren zu Operation 835; andernfalls wird die Verarbeitung bei Operation 830 fortgesetzt.
  • Als Reaktion auf das Bestimmen in Operation 830, dass der Wert des der Blockfamilie zugeordneten Timers größer oder gleich einem spezifizierten TimeOut-Wert ist, kann die Verarbeitungsvorrichtung in Operation 835 die Blockfamilie schließen; andernfalls verzweigt das Verfahren zurück zu Operation 825.
  • Als Reaktion auf das Durchführen von Operation 835 kehrt das Verfahren zu Operation 810 zurück.
  • Die Operationen 850-870 werden asynchron zu den Operationen 810-860 ausgeführt. In einem darstellenden Beispiel werden die Operationen 810-835 von einem ersten Verarbeitungs-Thread und die Operationen 850-870 von einem zweiten Verarbeitungs-Thread ausgeführt.
  • Bei Operation 850 empfängt die Verarbeitungsvorrichtung eine Temperaturmessung an dem ausgewählten Speicherelement der Speichervorrichtung.
  • Als Reaktion auf das Bestimmen bei Operation 855, dass die empfangene Temperaturmessung größer oder gleich dem gespeicherten hohen Temperaturwert ist, aktualisiert die Verarbeitungsvorrichtung bei Operation 860 den hohen Temperaturwert, um die empfangene Temperaturmessung zu speichern.
  • Als Reaktion auf die Feststellung in Vorgang 865, dass der empfangene Temperaturmesswert unter den gespeicherten niedrigen Temperaturwert fällt, aktualisiert die Verarbeitungsvorrichtung in Operation 870 den niedrigen Temperaturwert, um den empfangenen Temperaturmesswert zu speichern.
  • 9 ist ein Flussdiagramm eines beispielhaften Verfahrens zur Durchführung einer Lese-Operation durch einen Speicher-Untersystem-Controller, der gemäß einigen Ausführungsformen der vorliegenden Erfindung arbeitet. Das Verfahren 900 kann von einer Verarbeitungslogik durchgeführt werden, die Hardware (z.B. Verarbeitungsvorrichtung, Schaltungen, dedizierte Logik, programmierbare Logik, Mikro-Code, Hardware einer Vorrichtung, integrierte Schaltung, usw.), Software (z.B. Instruktionen, die auf einer Verarbeitungsvorrichtung laufen oder ausgeführt werden) oder eine Kombination davon umfassen kann. In einigen Ausführungsformen wird das Verfahren 900 von der Blockfamilien-Verwaltungskomponente 113 aus 1 durchgeführt. Obwohl in einer bestimmten Abfolge oder Reihenfolge dargestellt, kann die Reihenfolge der Operationen, sofern nicht anders angegeben, geändert werden. Daher sind die dargestellten Ausführungsformen nur als Beispiele zu verstehen, und die dargestellten Operationen können in einer anderen Reihenfolge ausgeführt werden, während einige Operationen parallel ausgeführt werden können. Außerdem können in einigen Ausführungsformen eine oder mehrere Operationen weggelassen werden. Daher sind nicht alle dargestellten Operationen in jeder Ausführungsform erforderlich, und andere Prozessabläufe sind möglich.
  • Bei Operation 910 empfängt die Verarbeitungsvorrichtung des Speicher-Untersystem-Controllers einen Lesebefehl, der einen Identifizierer eines logischen Blocks angibt.
  • Bei der Operation 920 übersetzt die Verarbeitungsvorrichtung den Identifizierer des logischen Blocks in eine physische Adresse (PA) eines physischen Blocks, der auf der Speichervorrichtung gespeichert ist. In einem anschaulichen Beispiel wird die Übersetzung durchgeführt, indem der Identifizierer des logischen Blocks (auch als logische Blockadresse oder LBA bezeichnet) in einer logisch-physischen (L2P) Tabelle nachgeschlagen wird, die mit der Speichervorrichtung in Beziehung steht. Die L2P-Tabelle enthält mehrere Zuordnungseinträge, so dass jeder Zuordnungseintrag eine LBA einer entsprechenden physischen Adresse zuordnet. Bei Flash-Speichervorrichtungen kann die physische Adresse einen Kanal-Identifizierer, einen Speicherelement-Identifizierer, einen Seiten-Identifizierer, einen Ebenen-Identifizierer und/oder einen Rahmen-Identifizierer enthalten.
  • Bei Operation 930 identifiziert die Verarbeitungsvorrichtung auf Basis von Blockfamilien-Metadaten, die mit der Speichervorrichtung in Beziehung stehen, eine Blockfamilie, die mit der physischen Adresse in Beziehung steht. In einem darstellenden Beispiel verwendet die Verarbeitungsvorrichtung die Superblock-Tabelle 710 aus 7, um die mit der physischen Adresse in Beziehung stehende Blockfamilie zu identifizieren.
  • Bei Operation 940 bestimmt die Verarbeitungsvorrichtung einen Schwellenspannungs-Offset, der mit der Blockfamilie und dem Speicherelement der Speichervorrichtung in Beziehung steht. In einem darstellenden Beispiel verwendet die Verarbeitungsvorrichtung die Blockfamilien-Tabelle 720 aus 7, um den Bin-Identifizierer zu bestimmen, der der Kombination aus dem Blockfamilien-Identifizierer und dem Speicherelement-Identifizierer entspricht. Die Verarbeitungsvorrichtung verwendet dann die Offset-Tabelle 730 aus 7, um die Schwellenspannungs-Offsets für das identifizierte Schwellenspannungs-Offset-Bin zu bestimmen.
  • Bei Operation 950 berechnet die Verarbeitungsvorrichtung eine modifizierte Schwellenspannung, indem der identifizierte Schwellenspannungs-Offset auf eine Basis-Lesepegel-Spannung angewendet wird, die mit der Speichervorrichtung in Beziehung steht. Wie oben erwähnt, kann die Basis-Lesepegel-Spannung in dem Metadaten-Gebiet der Speichervorrichtung gespeichert werden.
  • Bei Operation 960 verwendet die Verarbeitungsvorrichtung die berechnete modifizierte Schwellenspannung, um die angeforderte Lese-Operation durchzuführen. Als Reaktion auf den Abschluss der Operation 960 wird das Verfahren beendet.
  • 10 zeigt eine beispielhafte Maschine eines Computersystems 1000, in dem ein Satz von Instruktionen ausgeführt werden kann, um die Maschine zu veranlassen, ein oder mehrere der hier besprochenen Verfahren durchzuführen. In einigen Ausführungsformen kann das Computersystem 1000 einem Host-System entsprechen (z.B. das Host-System 120 aus 1), das ein Speicher-Untersystem (z.B. das Speicher-Untersystem 110 aus 1) enthält, mit diesem gekoppelt ist oder dieses nutzt, oder es kann verwendet werden, um die Operationen eines Controllers auszuführen (z.B. um ein Betriebssystem auszuführen, um Operationen durchzuführen, die der Blockfamilien-Verwaltungskomponente 113 aus 1 entsprechen). In alternativen Ausführungsformen kann die Maschine mit anderen Maschinen in einem LAN, einem Intranet, einem Extranet und/oder dem Internet verbunden (z.B. vernetzt) sein. Die Maschine kann in der Funktion eines Servers oder einer Client-Maschine in einer Client-Server-Netzwerkumgebung, als eine Peer-Maschine in einer Peer-to-Peer-Netzwerkumgebung (oder verteilten Netzwerkumgebung) oder als ein Server oder eine Client-Maschine in einer Cloud-Computing-Infrastruktur oder -Umgebung arbeiten.
  • Die Maschine kann ein Personal Computer (PC), ein Tablet-PC, eine Set-Top-Box (STB), ein Personal Digital Assistant (PDA), ein Mobiltelefon, eine Web-Anwendung, ein Server, ein Netzwerk-Router, ein Switch oder eine Bridge oder eine beliebige Maschine sein, die in der Lage ist, einen Satz von Instruktionen (sequentiell oder anderweitig) auszuführen, die die von dieser Maschine auszuführenden Aktionen spezifizieren. Auch wenn eine einzelne Maschine dargestellt ist, umfasst der Begriff „Maschine“ auch eine beliebige Sammlung von Maschinen, die einzeln oder gemeinsam einen Satz (oder mehrere Sätze) von Instruktionen ausführen, um eine oder mehrere der hier erörterten Verfahren durchzuführen.
  • Das beispielhafte Computersystem 1000 umfasst eine Verarbeitungsvorrichtung 1002, einen Hauptspeicher 1004 (z.B. Festwertspeicher (ROM), Flash-Speicher, dynamische Direktzugriffsspeicher (DRAM), wie zum Beispiel synchrone DRAM (SDRAM) oder Rambus DRAM (RDRAM), usw.), einen statischen Speicher 1010 (z.B. Flash-Speicher, statische Direktzugriffsspeicher (SRAM), usw.) und ein Datenspeichersystem 1018, die über einen Bus 1030 miteinander kommunizieren.
  • Die Verarbeitungsvorrichtung 1002 stellt eine oder mehrere Mehrzweck-Verarbeitungsvorrichtungen dar, wie zum Beispiel einen Mikroprozessor, eine zentrale Verarbeitungseinheit oder ähnliches. Insbesondere kann die Verarbeitungsvorrichtung ein CISC-Mikroprozessor (Complex Instruction Set Computing Mikroprozessor), ein RISC-Mikroprozessor (Reduced Instruction Set Computing Mikroprozessor), ein VLIW-Mikroprozessor (Very Long Instruction Word Mikroprozessor) oder ein Prozessor sein, der andere Sätze von Instruktionen implementiert, oder Prozessoren, die eine Kombination von Sätzen von Instruktionen implementieren. Bei der Verarbeitungsvorrichtung 1002 kann es sich auch um eine oder mehrere spezielle Verarbeitungsvorrichtungen handeln, wie zum Beispiel eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA), ein digitaler Signalprozessor (DSP), ein Netzwerkprozessor oder Ähnliches. Die Verarbeitungsvorrichtung 1002 ist ausgestaltet, um Instruktionen 1028 zur Durchführung der hier besprochenen Operationen und Schritte auszuführen. Das Computersystem 1000 kann ferner eine Netzwerk-Schnittstellenvorrichtung 1012 zur Kommunikation über das Netzwerk 1020 umfassen.
  • Das Datenspeichersystem 1018 kann ein maschinenlesbares Speichermedium 1024 (auch als computerlesbares Medium bekannt) enthalten, auf dem ein oder mehrere Sätze von Instruktionen 1028 oder Software gespeichert sind, die ein oder mehrere der hier beschriebenen Verfahren oder Funktionen verkörpern. Die Instruktionen 1028 können sich auch vollständig oder zumindest teilweise in dem Hauptspeicher 1004 und/oder in der Verarbeitungsvorrichtung 1002 befinden, während sie von dem Computersystem 1000 ausgeführt werden, wobei der Hauptspeicher 1004 und die Verarbeitungsvorrichtung 1002 ebenfalls maschinenlesbare Speichermedien darstellen. Das maschinenlesbare Speichermedium 1024, das Datenspeichersystem 1018 und/oder der Hauptspeicher 1004 können dem Speicher-Untersystem 110 aus 1 entsprechen.
  • In einer Ausführungsform enthalten die Instruktionen 1028 Instruktionen zum Implementieren von Funktionen, die der Blockfamilien-Verwaltungskomponente 113 aus 1 entsprechen. Obwohl das maschinenlesbare Speichermedium 1024 in einem Ausführungsbeispiel als ein einzelnes Medium dargestellt ist, sollte der Begriff „maschinenlesbares Speichermedium“ so verstanden werden, dass er ein einzelnes Medium oder mehrere Medien umfasst, die den einen oder mehrere Sätze von Instruktionen speichern. Der Begriff „maschinenlesbares Speichermedium“ soll auch jedes Medium umfassen, das in der Lage ist, einen Satz von Instruktionen zur Ausführung durch die Maschine zu speichern oder zu kodieren, und die Maschine veranlasst, eine oder mehrere der Verfahren der vorliegenden Erfindung durchzuführen. Der Begriff „maschinenlesbares Speichermedium“ soll daher Solid-State-Speicher, optische Medien und magnetische Medien umfassen, aber nicht hierauf beschränkt.
  • Einige Teile der vorangehenden detaillierten Beschreibungen wurden in Form von Algorithmen und symbolischen Darstellungen von Operationen an Datenbits in einem Computerspeicher dargestellt. Diese algorithmischen Beschreibungen und Darstellungen werden von Fachleuten auf dem Gebiet der Datenverarbeitung verwendet, um anderen Fachleuten den Inhalt ihrer Arbeit am effektivsten zu vermitteln. Ein Algorithmus wird hier und im Allgemeinen als eine in sich konsistente Folge von Operationen verstanden, die zu einem gewünschten Ergebnis führt. Bei den Operationen handelt es sich um solche, die physikalische Manipulationen von physikalischen Größen erfordern. Normalerweise, wenn auch nicht notwendigerweise, haben diese Größen die Form von elektrischen oder magnetischen Signalen, die gespeichert, kombiniert, verglichen und anderweitig manipuliert werden können. Zuweilen hat es sich als zweckmäßig erwiesen, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Begriffe, Zahlen oder Ähnliches zu bezeichnen, hauptsächlich aus Gründen des allgemeinen Sprachgebrauchs.
  • Es sollte jedoch bedacht werden, dass alle diese und ähnliche Begriffe mit den entsprechenden physikalischen Größen in Verbindung gebracht werden müssen und lediglich praktische Bezeichnungen für diese Größen sind. Die vorliegende Erfindung kann sich auf die Aktionen und Prozesse eines Computersystems oder eines ähnlichen elektronischen Rechengeräts beziehen, das Daten, die als physikalische (elektronische) Größen in den Registern und Speichern des Computersystems dargestellt werden, manipuliert und in andere Daten umwandelt, die in ähnlicher Weise als physikalische Größen in den Speichern oder Registern des Computersystems oder in anderen derartigen Informationsspeichersystemen dargestellt werden.
  • Die vorliegende Erfindung bezieht sich auch auf eine Vorrichtung zum Durchführen der hier beschriebenen Operationen. Diese Vorrichtung kann speziell für die beabsichtigten Zwecke konstruiert sein, oder sie kann einen Mehrzweckcomputer umfassen, der durch ein im Computer gespeichertes Computerprogramm selektiv aktiviert oder neu konfiguriert wird. Ein solches Computerprogramm kann in einem computerlesbaren Speichermedium gespeichert werden, wie zum Beispiel, aber nicht beschränkt auf, jede Art von Diskette, einschließlich Disketten, optische Disketten, CD-ROMs und magnetisch-optische Disketten, Festwertspeicher (ROMs), Direktzugriffsspeicher (RAMs), EPROMs, EEPROMs, magnetische oder optische Karten oder jede Art von Medien, die zum Speichern elektronischer Instruktionen geeignet sind und jeweils mit einem Computersystembus verbunden sind.
  • Die hier vorgestellten Algorithmen und Anzeigen sind nicht von Natur aus an einen bestimmten Computer oder ein anderes Gerät gebunden. Verschiedene Mehrzwecksysteme können mit Programmen gemäß den hier enthaltenen Lehren verwendet werden, oder es kann sich als zweckmäßig erweisen, ein spezielleres Gerät zum Durchführen des Verfahrens zu konstruieren. Die Struktur für eine Vielzahl dieser Systeme wird in der folgenden Beschreibung dargestellt. Darüber hinaus wird die vorliegende Erfindung nicht unter Bezugnahme auf eine bestimmte Programmiersprache beschrieben. Es ist offensichtlich, dass eine Vielzahl von Programmiersprachen verwendet werden kann, um die Lehren der Erfindung, wie hier beschrieben, zu implementieren.
  • Die vorliegende Erfindung kann als Computerprogrammprodukt oder Software bereitgestellt werden, die ein maschinenlesbares Medium mit darauf gespeicherten Instruktionen umfassen kann, die zur Programmierung eines Computersystems (oder anderer elektronischer Geräte) zur Durchführung eines Verfahrens gemäß der vorliegenden Erfindung verwendet werden können. Ein maschinenlesbares Medium umfasst jeden Mechanismus zum Speichern von Informationen in einer Form, die von einer Maschine (z.B. einem Computer) gelesen werden kann. In einigen Ausführungsformen umfasst ein maschinenlesbares (z.B. computerlesbares) Medium ein maschinenlesbares (z.B. computerlesbares) Speichermedium, wie zum Beispiel einen Festwertspeicher („ROM“), einen Direktzugriffsspeicher („RAM“), Magnetplatten-Speichermedien, optische Speichermedien, Flash-Speicherkomponenten, usw.
  • In der vorangehenden Beschreibung wurden Ausführungsformen der Erfindung unter Bezugnahme auf spezifische Ausführungsbeispiele beschrieben. Es ist offensichtlich, dass verschiedene Modifikationen daran vorgenommen werden können, ohne dass der Grundgedanke und Umfang der Ausführungsformen der Erfindung, wie in den folgenden Ansprüchen dargelegt, verlassen wird. Die Beschreibung und die Zeichnungen sind dementsprechend eher in einem illustrativen als in einem einschränkenden Sinne zu verstehen.

Claims (20)

  1. System, umfassend: eine Speichervorrichtung; und eine Verarbeitungsvorrichtung, die funktional mit der Speichervorrichtung gekoppelt ist, wobei die Verarbeitungsvorrichtung ausgestaltet ist zum: Initialisieren einer Blockfamilie, die mit einer Speichervorrichtung in Beziehung steht; Initialisieren einer Zeitüberschreitung, die mit der Blockfamilie in Beziehung steht; als Reaktion auf das Programmieren eines Blocks, der sich in der Speichervorrichtung befindet, Zuordnen des Blocks zu der Blockfamilie; und als Reaktion auf das Erfassen des Ablaufs der Zeitüberschreitung, Schließen der Blockfamilie.
  2. System nach Anspruch 1, wobei das Zuordnen des Blocks zu der Blockfamilie ferner umfasst: Anhängen eines Datensatzes, der den Block mit der Blockfamilie in Beziehung setzt, an die Blockfamilien-Metadaten.
  3. System nach Anspruch 1, wobei die Verarbeitungsvorrichtung ferner ausgestaltet ist zum: Initialisieren einer niedrigen Temperatur und einer hohen Temperatur unter Verwendung einer Referenztemperatur an der Speichervorrichtung; als Reaktion auf das Bestimmen, dass eine Differenz zwischen der hohen Temperatur und der niedrigen Temperatur größer als oder gleich einem spezifizierten Schwellen-Temperaturwert ist, Schließen der Blockfamilie.
  4. System nach Anspruch 3, wobei die Verarbeitungsvorrichtung ferner ausgestaltet ist zum: Empfangen einer zweiten Referenztemperatur der Blockfamilie; als Reaktion auf das Bestimmen, dass die zweite Referenztemperatur größer als oder gleich der hohen Temperatur ist, Aktualisieren der hohen Temperatur, um die zweite Referenztemperatur zu speichern; und als Reaktion auf das Bestimmen, dass die zweite Referenztemperatur unter die niedrige Temperatur fällt, Aktualisieren der niedrigen Temperatur, um die zweite Referenztemperatur zu speichern.
  5. System nach Anspruch 1, wobei die Verarbeitungsvorrichtung ferner ausgestaltet ist zum: Initialisieren einer neuen Blockfamilie als Reaktion auf das Schließen der Blockfamilie.
  6. System nach Anspruch 1, wobei die Verarbeitungsvorrichtung ferner ausgestaltet ist zum: Zuordnen der Blockfamilie zu einem ersten Schwellenspannungs-Offset-Bin als Reaktion auf das Erzeugen der Blockfamilie.
  7. System nach Anspruch 6, wobei die Verarbeitungsvorrichtung ferner ausgestaltet ist zum: Zuordnen der Blockfamilie zu einem zweiten Schwellenspannungs-Offset-Bin als Reaktion auf das Erfassen eines auslösenden Ereignisses, durch Kalibrieren einer ältesten Blockfamilie, die dem ersten Schwellenspannungs-Offset-Bin zugeordnet ist.
  8. System nach Anspruch 1, wobei die Verarbeitungsvorrichtung ferner ausgestaltet ist zum: Bestimmen eines Schwellenspannungs-Offsets, der mit der Blockfamilie in Beziehung steht; und Berechnen einer modifizierten Schwellenspannung durch Anwenden des Schwellenspannungs-Offsets auf eine mit der Speichervorrichtung in Beziehung stehenden Basis-Lesepegel-Spannung; Lesen, unter Verwendung der modifizierten Schwellenspannung, von Daten aus einem Block der Blockfamilie.
  9. Verfahren, umfassend: Empfangen, durch eine Verarbeitungsvorrichtung, eines Lesebefehls, der einen Identifizierer eines logischen Blocks spezifiziert; Übersetzen des Identifizierers des logischen Blocks in eine physische Adresse eines physischen Blocks, der auf einer Speichervorrichtung gespeichert ist, wobei die physische Adresse einen Identifizierer eines Speicherelements einer Speichervorrichtung enthält; Identifizieren, basierend auf Blockfamilien-Metadaten, die mit der Speichervorrichtung in Beziehung stehen, einer Blockfamilie, die mit der physikalischen Adresse in Beziehung steht; Bestimmen eines Schwellenspannungs-Offsets, der mit der Blockfamilie und dem Speicherelement der Speichervorrichtung in Beziehung steht; Berechnen einer modifizierten Schwellenspannung durch Anwenden des Schwellenspannungs-Offsets auf eine Basis-Lesepegel-Spannung, die mit dem Speicherelement der Speichervorrichtung in Beziehung steht; und Lesen, unter Verwendung der modifizierten Schwellenspannung, von Daten aus dem physischen Block.
  10. Verfahren nach Anspruch 9, wobei die Blockfamilie eine Mehrzahl von Blöcken umfasst, die innerhalb eines spezifizierten Zeitfensters und/oder eines spezifizierten Temperaturfensters programmiert wurden.
  11. Verfahren nach Anspruch 9, wobei die Blockfamilien-Metadaten eine erste Tabelle mit einer Mehrzahl von Datensätzen umfassen, wobei ein Datensatz der Mehrzahl von Datensätzen den physischen Block mit der Blockfamilie in Beziehung setzt.
  12. Verfahren nach Anspruch 9, wobei die Blockfamilien-Metadaten eine zweite Tabelle mit einer Mehrzahl von Datensätzen umfassen, wobei ein Datensatz der Mehrzahl von Datensätzen eine Mehrzahl von Speicherelementen der Blockfamilie mit jeweiligen Schwellenspannungs-Offset-Bins in Beziehung setzt.
  13. Verfahren nach Anspruch 9, wobei die Blockfamilien-Metadaten eine dritte Tabelle mit einer Mehrzahl von Datensätzen umfassen, wobei ein Datensatz der Mehrzahl von Datensätzen einen Schwellenspannungs-Offset-Bin mit einer oder mehreren Schwellenspannungen in Beziehung setzt, die auf entsprechende Basisspannungs-Lesepegel anzuwenden sind, um Lese-Operationen durchzuführen.
  14. Verfahren, umfassend: Initialisieren, durch eine Verarbeitungsvorrichtung, einer Blockfamilie, die mit einer Speichervorrichtung in Beziehung steht; Initialisieren einer Zeitüberschreitung, die mit der Blockfamilie in Beziehung steht; Initialisieren einer niedrigen Temperatur und einer hohen Temperatur unter Verwendung einer Referenztemperatur an der Speichervorrichtung; als Reaktion auf das Programmieren eines Blocks, der sich in der Speichervorrichtung befindet, Zuordnen des Blocks zu der Blockfamilie; und Schließen der Blockfamilie als Reaktion auf mindestens eines von: Erfassen des Ablaufs der Zeitüberschreitung oder Bestimmen, dass eine Differenz zwischen der hohen Temperatur und der niedrigen Temperatur größer als oder gleich einem spezifizierten Schwellen-Temperaturwert ist.
  15. Verfahren nach Anspruch 14, wobei das Zuordnen des Blocks zu der Blockfamilie ferner umfasst: Anhängen eines Datensatzes, der den Block mit der Blockfamilie in Beziehung setzt, an die Blockfamilien-Metadaten.
  16. Verfahren nach Anspruch 14, ferner umfassend: Empfangen einer zweiten Referenztemperatur der Blockfamilie; als Reaktion auf das Bestimmen, dass die zweite Referenztemperatur größer als oder gleich der hohen Temperatur ist, Aktualisieren der hohen Temperatur, um die zweite Referenztemperatur zu speichern; und als Reaktion auf das Bestimmen, dass die zweite Referenztemperatur unter die niedrige Temperatur fällt, Aktualisieren der niedrigen Temperatur, um die zweite Referenztemperatur zu speichern.
  17. Verfahren nach Anspruch 14, ferner umfassend: Initialisieren einer neuen Blockfamilie als Reaktion auf das Schließen der Blockfamilie.
  18. Verfahren nach Anspruch 14, ferner umfassend: Zuordnen der Blockfamilie zu einem ersten Schwellenspannungs-Offset-Bin als Reaktion auf das Erzeugen der Blockfamilie.
  19. Verfahren nach Anspruch 18, ferner umfassend: Zuordnen der Blockfamilie zu einem zweiten Schwellenspannungs-Offset-Bin durch Kalibrieren einer ältesten Blockfamilie, die mit dem ersten Schwellenspannungs-Offset-Bin in Beziehung steht.
  20. Verfahren nach Anspruch 14, wobei die Verarbeitungsvorrichtung ferner ausgestaltet ist zum: Bestimmen eines Schwellenspannungs-Offsets, der mit der Blockfamilie in Beziehung steht; und Berechnen einer modifizierten Schwellenspannung durch Anwenden des Schwellenspannungs-Offsets auf eine Basis-Lesepegel-Spannung, die mit der Speichervorrichtung in Beziehung steht; Lesen, unter Verwendung der modifizierten Schwellenspannung, von Daten aus einem Block der Blockfamilie.
DE112020006215.5T 2019-12-19 2020-12-18 Blockfamilien-basierte Fehlervermeidung für Speichervorrichtungen Pending DE112020006215T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962950341P 2019-12-19 2019-12-19
US62/950,341 2019-12-19
US16/800,221 US11231863B2 (en) 2019-12-19 2020-02-25 Block family-based error avoidance for memory devices
US16/800,221 2020-02-25
PCT/US2020/065781 WO2021127298A1 (en) 2019-12-19 2020-12-18 Block family-based error avoidance for memory devices

Publications (1)

Publication Number Publication Date
DE112020006215T5 true DE112020006215T5 (de) 2022-11-03

Family

ID=76438097

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020006215.5T Pending DE112020006215T5 (de) 2019-12-19 2020-12-18 Blockfamilien-basierte Fehlervermeidung für Speichervorrichtungen

Country Status (6)

Country Link
US (3) US11231863B2 (de)
JP (1) JP7354452B2 (de)
KR (1) KR20220106807A (de)
CN (1) CN114981891A (de)
DE (1) DE112020006215T5 (de)
WO (1) WO2021127298A1 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11231863B2 (en) * 2019-12-19 2022-01-25 Micron Technology, Inc. Block family-based error avoidance for memory devices
US11347434B2 (en) * 2020-04-21 2022-05-31 Micron Technology, Inc. Block family tracking for memory devices
US11217320B1 (en) * 2020-08-13 2022-01-04 Micron Technology, Inc. Bin placement according to program-erase cycles
US11442641B2 (en) * 2020-11-16 2022-09-13 Micron Technology, Inc. Voltage based combining of block families for memory devices
US11340813B1 (en) * 2020-11-16 2022-05-24 Micron Technology, Inc. Reliability scan assisted voltage bin selection
US11495309B2 (en) 2020-12-16 2022-11-08 Micron Technology, Inc. Initiating media management operation using voltage distribution metrics in memory system
US11222704B1 (en) * 2020-12-17 2022-01-11 Micron Technology, Inc. Power state aware scan frequency
US12073866B2 (en) * 2022-02-21 2024-08-27 Micron Technology, Inc. Two-stage voltage calibration upon power-up of memory device
US20240071547A1 (en) * 2022-08-24 2024-02-29 Micron Technology, Inc. Block family error avoidance bin designs addressing error correction decoder throughput specifications
US12079065B2 (en) * 2022-08-31 2024-09-03 Micron Technology, Inc. Caching lookup tables for block family error avoidance

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9021181B1 (en) * 2010-09-27 2015-04-28 Apple Inc. Memory management for unifying memory cell conditions by using maximum time intervals
US9025393B2 (en) 2013-03-25 2015-05-05 Seagate Technology Llc Method of optimizing solid state drive soft retry voltages
TWI489469B (zh) 2013-03-26 2015-06-21 Phison Electronics Corp 資料讀取方法、控制電路、記憶體模組與記憶體儲存裝置
US9122626B2 (en) 2013-05-13 2015-09-01 Seagate Technology Llc Linearly related threshold voltage offsets
US10475523B2 (en) * 2013-05-31 2019-11-12 Western Digital Technologies, Inc. Updating read voltages triggered by the rate of temperature change
KR102211865B1 (ko) 2014-05-20 2021-02-04 삼성전자주식회사 불휘발성 메모리 시스템 및 메모리 컨트롤러의 동작 방법
US9996281B2 (en) * 2016-03-04 2018-06-12 Western Digital Technologies, Inc. Temperature variation compensation
JP6779822B2 (ja) * 2017-03-24 2020-11-04 キオクシア株式会社 メモリシステム
US11099760B2 (en) * 2017-12-14 2021-08-24 Intel Corporation Background data refresh using a system timestamp in storage devices
KR102691851B1 (ko) * 2018-08-29 2024-08-06 에스케이하이닉스 주식회사 불휘발성 메모리 장치, 이를 포함하는 데이터 저장 장치 및 그 동작 방법
JP2020077443A (ja) * 2018-11-05 2020-05-21 キオクシア株式会社 メモリシステム
TWI719550B (zh) * 2019-07-23 2021-02-21 慧榮科技股份有限公司 記憶體控制器、資料儲存裝置及其開卡方法
US10957407B1 (en) * 2019-10-30 2021-03-23 International Business Machines Corporation Calculating corrective read voltage offsets in non-volatile random access memory
US11231863B2 (en) * 2019-12-19 2022-01-25 Micron Technology, Inc. Block family-based error avoidance for memory devices

Also Published As

Publication number Publication date
US20240111445A1 (en) 2024-04-04
US20210191617A1 (en) 2021-06-24
US20220091741A1 (en) 2022-03-24
JP2023507389A (ja) 2023-02-22
KR20220106807A (ko) 2022-07-29
US11886726B2 (en) 2024-01-30
JP7354452B2 (ja) 2023-10-02
WO2021127298A1 (en) 2021-06-24
CN114981891A (zh) 2022-08-30
US11231863B2 (en) 2022-01-25

Similar Documents

Publication Publication Date Title
DE112020006215T5 (de) Blockfamilien-basierte Fehlervermeidung für Speichervorrichtungen
DE112020006139B4 (de) Vor-lese-und lese-schwellenspannungsoptimierung
DE102017104125B4 (de) Zonen von Übersetzungstabellen von logischen in physische Datenadressen mit parallelisiertem Log-Listenreplay
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE102019116520A1 (de) Datenspeichersysteme und -verfahren für eine verbesserte datenumlagerung basierend auf lesepegelspannungen, die mit einer fehlerwiederherstellung verbunden sind
DE112015004863T5 (de) Verfolgen der Vermischung von Schreibvorgängen und Entabbildungsbefehlen über Stromversorgungszyklen
DE102019123709A1 (de) Verwendung verschachtelter schreibvorgänge zur trennung von die-ebenen
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE112015004873T5 (de) Verarbeitung von Entabbildungsbefehlen zur Verbesserung der Leistungsfähigkeit und Standzeit einer Speicherungsvorrichtung
DE112020001937T5 (de) Vorausschauender datenvorabruf in einer datenspeicher-vorrichtung
DE112014004761T5 (de) Beeinflussung des Wear-Leveling in Speichersystemen
DE112021000776T5 (de) Verwaltung von schreib-operationen in einer nichtflüchtigen speichervorrichtung unter verwendung eines variablen vor-lese-spannungspegels
DE102017114078A1 (de) Fehlerabschwächung für 3d-nand-flash-speicher
DE102017128994A1 (de) Weiche Dekodierungs-Planung
DE112020002792T5 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE102021115373A1 (de) Identifizierte zonen für zonen mit optimaler paritätsteilung
DE102020202379A1 (de) Speichersystem, speicher-controller und deren betriebsverfahren
DE112019000161T5 (de) Speicher-cache-verwaltung
DE102021006246A1 (de) Doppelt verschachtelte Programmierung einer Speichervorrichtung in einem Speicher-Untersystem
DE102018123961A1 (de) Gruppen-leseaktualisierung
DE112020005502T5 (de) Dynamische überprovisionierungszuweisung für zweckbestimmte blöcke
DE112020005395T5 (de) Kapazitätserweiterung für speicher-untersysteme
DE102021005946A1 (de) Verwaltung der digital gesteuerten ladungspumpen-operation in einem speicher-untersystem
DE102022105848A1 (de) Reduzierung der schreibverstärkung in sensordatenaufzeichnern
DE102022102980A1 (de) Operationsstechniken der datenverlagerung

Legal Events

Date Code Title Description
R012 Request for examination validly filed