DE102020115935A1 - Nichtflüchtiger speicher mit dem überspringen der programmprürung - Google Patents

Nichtflüchtiger speicher mit dem überspringen der programmprürung Download PDF

Info

Publication number
DE102020115935A1
DE102020115935A1 DE102020115935.8A DE102020115935A DE102020115935A1 DE 102020115935 A1 DE102020115935 A1 DE 102020115935A1 DE 102020115935 A DE102020115935 A DE 102020115935A DE 102020115935 A1 DE102020115935 A1 DE 102020115935A1
Authority
DE
Germany
Prior art keywords
memory cells
volatile memory
test
programming
criterion
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
DE102020115935.8A
Other languages
English (en)
Inventor
Shota Murai
Henry Chin
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 LLC
Original Assignee
SanDisk Technologies LLC
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 SanDisk Technologies LLC filed Critical SanDisk Technologies LLC
Publication of DE102020115935A1 publication Critical patent/DE102020115935A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • G11C16/3459Circuits or methods to verify correct programming of nonvolatile memory cells
    • 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
    • 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/5628Programming or writing circuits; Data input circuits
    • 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/5671Digital 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 trapping in an insulator
    • 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/10Programming or data input circuits
    • 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/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • G11C16/105Circuits or methods for updating contents of nonvolatile memory, especially with 'security' features to ensure reliable replacement, i.e. preventing that old data is lost before new data is reliably written
    • 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
    • G11C16/28Sensing or reading circuits; Data output circuits using differential sensing or reference cells, e.g. dummy cells
    • 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/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • 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/3436Arrangements for verifying correct programming or erasure
    • G11C16/3468Prevention of overerasure or overprogramming, e.g. by verifying whilst erasing or writing
    • G11C16/3481Circuits or methods to verify correct programming of nonvolatile memory cells whilst programming is in progress, e.g. by detecting onset or cessation of current flow in cells and using the detector output to terminate programming
    • 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/3436Arrangements for verifying correct programming or erasure
    • G11C16/3468Prevention of overerasure or overprogramming, e.g. by verifying whilst erasing or writing
    • G11C16/3486Circuits or methods to prevent overprogramming of nonvolatile memory cells, e.g. by detecting onset or cessation of current flow in cells and using the detector output to terminate programming
    • 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/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
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/025Geometric lay-out considerations of storage- and peripheral-blocks in a semiconductor storage device
    • 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/0409Online test
    • 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
    • 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
    • G11C2029/5004Voltage
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Read Only Memory (AREA)
  • Semiconductor Memories (AREA)
  • Non-Volatile Memory (AREA)

Abstract

Nichtflüchtige Speicherzellen werden durch Anlegen eines Programmiersignals als eine Reihe von Programmierspannungsimpulsen (oder anderen Dosen der Programmierung) an ausgewählte Speicherzellen und Prüfung der Speicherzellen zwischen Programmierspannungspulsen programmiert. Um engere Schwellenspannungsverteilungen zu erreichen, wird ein Grob-/Feinprogrammierungsprozess verwendet, der eine zweistufige Prüfung zwischen Programmierspannungsimpulsen mit einer Zwischenprüfungsbedingung und einer Endprüfungsbedingung einschließt. Speicherzellen, die programmiert werden, die die Zwischenprüfungsbedingung erreicht haben, werden zur weiteren Programmierung verlangsamt. Speicherzellen, die programmiert werden, die die Endprüfungsbedingung erreicht haben, werden für die weitere Programmierung gesperrt. Zur Verringerung der Anzahl der durchgeführten Prüfvorgänge wird ein System zum Überspringen der Prüfung bei der Zwischenprüfungsbedingung für einige Programmierspannungsimpulse und Überspringen der Prüfung bei der Endprüfungsbedingung für einige Programmierspannungsimpulse vorgeschlagen.

Description

  • STAND DER TECHNIK
  • Die Verwendung von Halbleiterspeichern in verschiedenen elektronischen Vorrichtungen wie Mobiltelefonen, Digitalkameras, PDAs, medizinischer Elektronik, mobilen Rechenvorrichtungen, Servern, Solid-State-Laufwerken, nicht mobilen Rechenvorrichtungen und anderen Vorrichtungen ist weit verbreitet. Ein Halbleiterspeicher kann einen nichtflüchtigen Speicher oder einen flüchtigen Speicher aufweisen. Ein nichtflüchtiger Speicher ermöglicht, dass Informationen gespeichert und behalten werden, selbst wenn der nichtflüchtige Speicher nicht mit einer Stromquelle (z. B. einer Batterie) verbunden ist. Ein Beispiel für einen nichtflüchtigen Speicher ist ein Flash-Speicher (z. B. Flash-Speicher vom NAND-Typ und NOR-Typ). Benutzer von nichtflüchtigem Speicher wollen in der Regel, dass der Speicher mit hohen Geschwindigkeiten arbeitet, sodass sie nicht warten müssen, bis Speichervorgänge abgeschlossen werden.
  • Figurenliste
  • Gleich nummerierte Elemente beziehen sich auf gemeinsame Komponenten in den verschiedenen Figuren.
    • 1 ist ein Blockdiagramm, das eine Ausführungsform eines Speichersystems darstellt.
    • 2 ist ein Blockdiagramm einer Ausführungsform eines Speicherrohchips.
    • 3 ist eine perspektivische Ansicht eines Abschnitts einer Ausführungsform einer monolithischen dreidimensionalen Speicherstruktur.
    • 4A ist ein Blockdiagramm einer Speicherstruktur mit zwei Ebenen.
    • 4B stellt eine Draufsicht auf einen Abschnitt eines Speicherzellenblocks dar.
    • 4C stellt eine Querschnittsansicht eines Abschnitts eines Speicherzellenblocks dar.
    • 4D stellt eine Ansicht der Auswahlgate-Schichten und Wortleitungsschichten dar.
    • 4E ist eine Querschnittsansicht einer vertikalen Speicherzellenspalte.
    • 4F ist eine schematische Darstellung einer Vielzahl von NAND-Ketten mit mehreren Unterblöcken.
    • 5 stellt Schwellenspannungsverteilungen dar.
    • 6 stellt Schwellenspannungsverteilungen dar.
    • 7 ist eine Tabelle, die ein Beispiel einer Zuordnung von Datenwerten Datenzuständen beschreibt.
    • 8 ist ein Flussdiagramm, das eine Ausführungsform eines Prozesses zur Programmierung von nichtflüchtigem Speicher beschreibt.
    • 9 stellt eine Reihe von Programmierspannungsimpulsen dar.
    • 10 stellt zwei Programmierspannungsimpulse und einen Prüfspannungsimpuls dar.
    • 11 stellt zwei Programmierspannungsimpulse und einen Satz von Prüfspannungsimpulsen dar.
    • 12 ist ein Flussdiagramm, das eine Ausführungsform eines Prozesses zur Prüfung der Programmierung von nichtflüchtigem Speicher beschreibt.
    • 13A ist ein Diagramm, das die Bitleitungsspannung während eines Programmierungsprozesses beschreibt.
    • 13B ist ein Diagramm, das die Bitleitungsspannung während eines Programmierungsprozesses beschreibt.
    • 14 stellt ein Flussdiagramm dar, das eine Ausführungsform eines Prozesses zur Programmierung und Prüfung der Programmierung von nichtflüchtigem Speicher beschreibt.
    • 15 ist ein Diagramm einer Schwellenspannungsverteilung für einen Satz nichtflüchtiger Speicherzellen, die programmiert werden.
    • 16 ist ein Diagramm einer Schwellenspannungsverteilung für einen Satz nichtflüchtiger Speicherzellen, die programmiert werden.
    • 17 ist ein Diagramm einer Schwellenspannungsverteilung für einen Satz nichtflüchtiger Speicherzellen, die programmiert werden.
    • 18 stellt ein Flussdiagramm dar, das eine Ausführungsform eines Prozesses beschreibt, der während der Prüfung der Programmierung eines nichtflüchtigen Speichers durchgeführt wird.
    • 19 ist ein Diagramm von zwei Schwellenspannungsverteilungen für einen Satz nichtflüchtiger Speicherzellen, die programmiert werden.
  • DETAILLIERTE BESCHREIBUNG
  • Nichtflüchtige Speicherzellen werden durch Anlegen eines Programmiersignals als eine Reihe von Programmierspannungsimpulsen (oder anderen Dosen der Programmierung) an ausgewählte Speicherzellen und Prüfung der Speicherzellen zwischen Programmierspannungspulsen programmiert. Um engere Schwellenspannungsverteilungen zu erreichen, wird ein Grob-/Feinprogrammierungsprozess verwendet, der eine zweistufige Prüfung zwischen Programmierspannungsimpulsen mit einer Zwischenprüfungsbedingung und einer Endprüfungsbedingung einschließt. Speicherzellen, die programmiert werden, die die Zwischenprüfungsbedingung erreicht haben, werden zur weiteren Programmierung verlangsamt. Speicherzellen, die programmiert werden, die die Endprüfungsbedingung erreicht haben, werden für die weitere Programmierung gesperrt. Zur Verringerung der Anzahl der durchgeführten Prüfvorgänge wird ein System zum Überspringen der Prüfung bei der Zwischenprüfungsbedingung für einige Programmierspannungsimpulse und Überspringen der Prüfung bei der Endprüfungsbedingung für einige Programmierspannungsimpulse vorgeschlagen.
  • Eine Ausführungsform einer nichtflüchtigen Speichereinrichtung weist eine Vielzahl von nichtflüchtigen Speicherzellen und eine Steuerschaltung auf, die mit den nichtflüchtigen Speicherzellen verbunden ist. Die Steuerschaltung ist so eingerichtet, dass sie: einen Programmierungsprozess durchführt, der die nichtflüchtigen Speicherzellen in einen ersten Datenzustand (und gegebenenfalls andere Datenzustände) programmiert, eine Programmprüfung für die Zwischenprüfungsbedingung für den ersten Datenzustand durchführt, ohne eine Programmprüfung für die Endprüfungsbedingung für den ersten Datenzustand durchzuführen, bis ein erstes Kriterium erfüllt wurde, eine Programmprüfung für die Zwischenprüfungsbedingung und die Endprüfungsbedingung durchführt, nachdem das erste Kriterium erfüllt wurde und bis ein zweites Kriterium erfüllt wurde, und eine Programmprüfung für die Endprüfungsbedingung durchführt, ohne eine Programmprüfung für die Zwischenprüfungsbedingung durchzuführen, nachdem das zweite Kriterium erfüllt wurde. In einem Beispiel ist das erste Kriterium erfüllt, wenn eine Schwellenanzahl der Vielzahl von nichtflüchtigen Speicherzellen die Zwischenprüfungsbedingung erreicht hat. In einigen Beispielen ist das zweite Kriterium erfüllt, wenn eine Schwellenanzahl der Vielzahl von nichtflüchtigen Speicherzellen die Endprüfungsbedingung erreicht hat, nachdem eine vorbestimmte Anzahl von Dosen der Programmierung auf die Vielzahl von nichtflüchtigen Speichern angewendet wurde, nachdem das erste Kriterium erfüllt wurde, oder wenn eine minimale Anzahl von nichtflüchtigen Speicherzellen einen Zielpegel für einen zweiten Datenzustand erreicht hat.
  • 1 ist ein Blockdiagramm einer Ausführungsform eines Speichersystems 100, das die vorgeschlagene Technologie implementiert, einschließlich des vorgeschlagenen Verfahrens zum Überspringen der Prüfung. In einer Ausführungsform ist das Speichersystem 100 ein Solid-State-Laufwerk („SSD“). Das Speichersystem 100 kann auch eine Speicherkarte, ein USB-Laufwerk oder eine andere Art von Speichersystem sein. Die vorgeschlagene Technologie ist nicht auf einen Typ von Speichersystem beschränkt. Das Speichersystem 100 ist mit dem Host 102 verbunden, der ein Computer, Server, elektronischer Vorrichtung (z. B. Smartphone, Tablet oder andere mobile Vorrichtung), ein Gerät oder eine andere Einrichtung sein kann, das bzw. die Speicher verwendet und Datenverarbeitungsfähigkeiten aufweist. In einigen Ausführungsformen ist der Host 102 von dem Speichersystem 100 separiert, aber mit diesem verbunden. In anderen Ausführungsformen ist das Speichersystem 100 in den Host 102 eingebettet.
  • Die Komponenten des in 1 dargestellten Speichersystems 100 sind elektrische Schaltungen. Das Speichersystem 100 schließt eine Steuerung 120, die mit einem oder mehreren Speicherrohchips 130 verbunden ist, und einen lokalen flüchtigen Hochgeschwindigkeitsspeicher 140 (z. B. DRAM) ein. Der eine oder die mehreren Speicherrohchips 130 weisen jeweils eine Vielzahl von nichtflüchtigen Speicherzellen auf. Mehr Informationen über die Struktur jedes Speicherrohchips 130 sind unten aufgeführt. Der lokale flüchtige Hochgeschwindigkeitsspeicher 140 wird von der Steuerung 120 verwendet, um bestimmte Funktionen auszuführen. Zum Beispiel speichert der lokale flüchtige Hochgeschwindigkeitsspeicher 140 Tabellen der Übersetzung von logischen Adressen in physische („L2P-Tabellen“).
  • Die Steuerung 120 weist eine Host-Schnittstelle 152 auf, die mit dem Host 102 verbunden ist und mit diesem in Kommunikation steht. In einer Ausführungsform stellt die Host-Schnittstelle 152 eine PCIe-Schnittstelle bereit. Andere Schnittstellen können ebenfalls verwendet werden, wie SCSI, SATA usw. Die Host-Schnittstelle 152 ist ebenfalls mit einem Network-on-Chip (NOC) 154 verbunden. Ein NOC ist ein Kommunikationssubsystem auf einer integrierten Schaltung. NOCs können synchrone und asynchrone Taktdomänen umspannen oder ungetaktete asynchrone Logik verwenden. Die NOC-Technologie wendet Netzwerktheorie und -verfahren auf On-Chip-Kommunikationen an und liefert beträchtliche Verbesserungen gegenüber herkömmlichen Bus- und Crossbar-Verbindungen. NOC verbessert die Skalierbarkeit von Systemen auf einem Chip (SoC) und die Leistungseffizienz komplexer SoCs im Vergleich zu anderen Designs. Die Drähte und die Verbindungen des NOC werden von vielen Signalen gemeinsam genutzt. Eine hohe Parallelität wird erreicht, da alle Verbindungen in dem NOC gleichzeitig an unterschiedlichen Datenpaketen arbeiten können. Daher stellt ein NOC, wenn die Komplexität integrierter Subsysteme wächst, eine verbesserte Leistung (wie Durchsatz) und Skalierbarkeit im Vergleich zu früheren Kommunikationsarchitekturen (z. B. dedizierten Punkt-zu-Punkt-Signaldrähten, gemeinsam genutzten Bussen oder segmentierten Bussen mit Brücken) bereit. In anderen Ausführungsformen kann NOC 154 durch einen Bus ersetzt werden. Mit dem NOC 154 verbunden und in Kommunikation mit ihm sind der Prozessor 156, die ECC-Maschine 158, die Speicherschnittstelle 160 und die DRAM-Steuerung 164. Die DRAM-Steuerung 164 wird verwendet, um mit einem lokalen flüchtigen Hochgeschwindigkeitsspeicher 140 (z. B. DRAM) zu arbeiten und damit zu kommunizieren. In anderen Ausführungsformen kann der lokale flüchtige Hochgeschwindigkeitsspeicher 140 ein SRAM oder ein anderer Typ eines flüchtigen Speichers sein.
  • Die ECC-Maschine 158 führt Fehlerkorrekturdienste durch. Zum Beispiel führt die ECC-Maschine 158 Datencodierung und -decodierung gemäß der implementierten ECC-Technik durch. In einer Ausführungsform ist die ECC-Maschine 158 eine elektrische Schaltung, die durch die Software programmiert wird. Zum Beispiel kann die ECC-Maschine 158 ein Prozessor sein, der programmiert werden kann. In anderen Ausführungsformen ist die ECC-Maschine 158 eine kundenspezifische und dedizierte Hardware-Schaltung ohne jegliche Software. In einer anderen Ausführungsform wird die Funktion der ECC-Maschine 158 durch den Prozessor 156 implementiert.
  • Der Prozessor 156 führt die verschiedenen Steuerungsspeichervorgänge wie Programmierung, Löschen, Lesen sowie Speicherverwaltungsprozesse durch. In einer Ausführungsform wird der Prozessor 156 durch Firmware programmiert. In anderen Ausführungsformen ist der Prozessor 156 eine kundenspezifische und dedizierte Hardware-Schaltung ohne jegliche Software. Der Prozessor 156 implementiert auch ein Übersetzungsmodul, als Software/Firmware-Prozess oder als eine dedizierte Hardware-Schaltung. In vielen Systemen wird der nichtflüchtige Speicher innerhalb des Speichersystems unter Verwendung von physikalischen Adressen in Verbindung mit einem oder mehreren Speicherchips adressiert. Jedoch verwendet das Host-System logische Adressen, um die verschiedenen Speicherorte zu adressieren. Dies ermöglicht dem Host, Daten aufeinander folgenden logischen Adressen zuzuweisen, während das Speichersystem die Daten beliebig an den Orten des einen oder der mehreren Speicherchips zu speichern. Um dieses System zu implementieren, führt die Steuerung (z. B. das Übersetzungsmodul) eine Adressübersetzung zwischen den logischen Adressen, die von dem Host verwendet werden, und den physikalischen Adressen, die von den Speicherchips verwendet werden, durch. Eine beispielhafte Implementierung besteht darin, Tabellen (d. h. die vorstehend erwähnten L2P-Tabellen) beizubehalten, die die aktuelle Übersetzung zwischen logischen Adressen und physikalischen Adressen identifizieren. Ein Eintrag in der L2P-Tabelle kann eine Identifikation einer logischen Adresse und einer entsprechenden physikalischen Adresse einschließen. Obwohl Tabellen mit einer Zuordnung von logischer Adresse zu physikalischer Adresse (oder L2P-Tabellen) das Wort „Tabellen“ einschließen, müssen sie nicht tatsächlich Tabellen sein. Die Tabellen mit eine Zuordnung von logischer Adresse zu physikalischer Adresse (oder L2P-Tabellen) können stattdessen jede Art von Datenstruktur sein. In einigen Beispielen ist der Speicherplatz eines Speichersystems so groß, dass der lokale Speicher 140 nicht alle L2P-Tabellen aufnehmen kann. In einem solchen Fall wird der gesamte Satz von L2P-Tabellen in einem Speicherrohchip 130 gespeichert, und ein Teilsatz der L2P-Tabellen wird im lokalen flüchtigen Hochgeschwindigkeitsspeicher 140 zwischengespeichert (L2P-Cache).
  • Die Speicherschnittstelle 160 kommuniziert mit einem oder mehreren Speicherrohchips 130. In einer Ausführungsform stellt die Speicherschnittstelle eine Schaltmodus-Schnittstelle bereit. Es können auch andere Schnittstellen verwendet werden. In einigen beispielhaften Implementierungen implementiert die Speicherschnittstelle 160 (oder ein anderer Abschnitt der Steuerung 120) einen Scheduler und Puffer zum Übertragen von Daten an und Empfangen von Daten von einem oder mehreren Speicherchips.
  • 2 ist ein Funktionsblockdiagramm einer Ausführungsform eines Speicherrohchips 300. Jeder des einen oder der mehreren Speicherrohchips 130 von 1 kann als Speicherrohchip 300 von 2 implementiert werden. Die in 2 dargestellten Komponenten sind elektrische Schaltungen. In einer Ausführungsform schließt jeder Speicherchip 300 eine Speicherstruktur 326, eine Steuerschaltlogik 310 und Lese-/Schreibschaltungen 328 ein. Die Speicherstruktur 326 ist durch Wortleitungen über einen Zeilen-Decodierer 324 und durch Bitleitungen über einen Spalten-Decodierer 332 adressierbar. Die Lese-/Schreibschaltungen 328 schließen mehrere Abtastblöcke 350 einschließlich SB1, SB2, ..., SBp (Abtastschaltung) ein und ermöglichen das parallele Lesen oder Programmieren (Schreiben) einer Seite (oder mehrerer Seiten) von Daten in mehreren Speicherzellen. In einer Ausführungsform schließt jeder Abtastblock einen Abtastverstärker und einen Satz von Zwischenspeichern ein, die mit der Bitleitung verbunden sind. Die Zwischenspeicher speichern zu schreibende Daten und/oder gelesene Daten. Die Abtastverstärker schließen Bitleitungstreiber ein. Befehle und Daten werden zwischen der Steuerung und dem Speicherrohchip 300 über Leitungen 319 übertragen. In einem Ausführungsbeispiel schließt der Speicherrohchip 300 einen Satz von Eingangs- und/oder Ausgangs (I/O)-Stiften ein, die mit den Leitungen 118 verbunden sind.
  • Die Steuerschaltung 310 arbeitet mit den Lese-/Schreibschaltungen 328 zusammen, um Speicheroperationen (z. B. Schreiben, Lesen, Löschen und andere) auf der Speicherstruktur 326 auszuführen. In einer Ausführungsform weist die Steuerschaltung 310 eine Zustandsmaschine 312, einen On-Chip-Adressdecodierer 314, eine Leistungssteuerschaltung 316 und Speicherrohchipparameter 318 auf. Die Zustandsmaschine 312 stellt eine Chippegelsteuerung von Speichervorgängen bereit. In einer Ausführungsform ist die Zustandsmaschine 312 durch Software programmierbar. In anderen Ausführungsformen verwendet die Zustandsmaschine 312 keine Software und ist vollständig in Hardware (z. B. elektrischen Schaltungen) implementiert. In einigen Ausführungsformen kann die Zustandsmaschine 312 durch einen programmierbaren Mikrocontroller oder Mikroprozessor ersetzt werden. In einer Ausführungsform schließt die Steuerschaltung 310 die in Puffern gespeicherten Speicherrohchipparameter 318, wie Register, Auffangspeicher, ROM-Sicherungen und andere Speichervorrichtungen ein. Die Speicherrohchipparameter 318 sind Standardwerte wie Basisspannungen und andere Parameter, die vom Speicherrohchip 300 (z. B. von Zustandsmaschinen 312) zur Durchführung von Speichervorgängen verwendet werden. Ein Beispiel ist der Überspringungsparameter SP (Skip Parameter), der während einer Ausführungsform des Programmierungsprozesses verwendet wird, um eine vorbestimmte Anzahl von Programmierimpulsen anzugeben, nachdem das erste Kriterium erfüllt wurde, um die Modi zum Überspringen der Prüfung, wie unten beschrieben, zu ändern. In einer Ausführungsform wird der Überspringungsparameter SP beim Testen als Teil der Herstellung des Speicherrohchips 300 eingestellt.
  • Der On-Chip-Adressdecodierer 314 stellt eine Adressschnittstelle zwischen Adressen, die von einer Steuerung 120 verwendet werden, zur Hardware-Adresse, die von den Decodierern 324 und 332 verwendet wird, bereit. Das Leistungssteuermodul 316 steuert die Leistung und Spannungen, mit denen die Wortleitungen und Bitleitungen bei Speicheroperationen versorgt werden. Das Leistungssteuermodul 316 kann Ladungspumpen zum Erzeugen von Spannungen einschließen.
  • Für die Zwecke dieses Dokuments weisen die Steuerschaltung 310, die Lese-/Schreibschaltungen 328 und die Decodierer 324/332 eine Ausführungsform einer Steuerschaltung für die Speicherstruktur 326 auf. In anderen Ausführungsformen können andere Schaltungen, die die Speicherstruktur 326 unterstützen und darauf arbeiten, als Steuerschaltung bezeichnet werden. Zum Beispiel kann in einigen Ausführungsformen die Steuerung 120 als Steuerschaltung arbeiten oder Teil der Steuerschaltung sein. In einigen Ausführungsformen weist die Steuerung 120 in Kombination mit der Steuerschaltung 310, den Lese-/Schreibschaltungen 328 und den Decodierern 324/332 eine Ausführungsform einer Steuerschaltung auf. In einer anderen Ausführungsform weist die Zustandsmaschine 312 die Steuerschaltung auf. In einer anderen Ausführungsform kann der Host die Steuerschaltung bereitstellen.
  • In einer Ausführungsform weist die Speicherstruktur 326 ein monolithisches dreidimensionales Speicherarray von nichtflüchtigen Speicherzellen auf, auf denen mehrere Speicherstufen über einem einzigen Substrat, wie einem Wafer, ausgebildet sind. Die Speicherstruktur kann jede Art von nichtflüchtigem Speicher aufweisen, der monolithisch in einer oder mehreren physischen Ebenen von Arrays von Speicherzellen ausgebildet ist, die einen aktiven Bereich aufweisen, der über einem Silizium- (oder anderem Typ von) Substrat angeordnet ist. In einem Beispiel weisen die nichtflüchtigen Speicherzellen der Speicherstruktur 326 vertikale NAND-Ketten mit ladungseinfangendem Material auf, wie es zum Beispiel im US-Patent 9.721.662 beschrieben ist, auf das hierin seiner Gesamtheit Bezug genommen wird. Eine NAND-Zeichenkette weist Speicherzellen auf, die durch einen Kanal verbunden sind.
  • In einer anderen Ausführungsform weist die Speicherstruktur 326 ein zweidimensionales Speicherarray von nichtflüchtigen Speicherzellen auf. In einem Beispiel, sind die nichtflüchtigen Speicherzellen NAND-Flash-Speicherzellen unter Verwendung von Floating-Gates wie beschrieben, zum Beispiel, im U.S. Patentschrift 9.082.502 , das hierin durch Bezugnahme in seiner Gesamtheit aufgenommen ist. Andere Arten von Speicherzellen (z. B. NOR-Typ-Flashspeicher) können ebenfalls verwendet werden.
  • Die exakte Art der Speicher-Array-Architektur oder Speicherzelle, die in der Speicherstruktur 326 eingeschlossen ist, ist nicht auf die obigen Beispiele beschränkt. Viele unterschiedliche Arten von Speicher-Array-Architekturen oder Speicherzelltechnologien können verwendet werden, um die Speicherstruktur 326 zu bilden. Es ist keine spezielle nichtflüchtige Speichertechnologie für die Zwecke der neuen beanspruchten Ausführungsformen, die hier vorgeschlagen werden, erforderlich. Andere Beispiele geeigneter Technologien für Speicherzellen der Speicherstruktur 326 schließen ferroelektrische Speicher (FeRAM oder FeFET), ReRAM-Speicher, magnetoresistive Speicher (z. B. MRAM, Spin-Transfer-Torque-MRAM, Spin-Orbit-Torque-MRAM), Phasenänderungsspeicher (z. B. PCM), und dergleichen ein. Beispiele von geeigneten Technologien für die Architekturen der Speicherstruktur 326 schließen zweidimensionale Arrays, dreidimensionale Arrays, Kreuzpunkt-Arrays, gestapelte zweidimensionale Arrays, vertikale Bitleitungs-Arrays und dergleichen ein.
  • Ein Beispiel eines ReRAM- oder PCMRAM-Kreuzpunktspeichers schließt reversible Widerstandsschaltelemente ein, die in Kreuzpunktarrays angeordnet sind, auf die durch X-Leitungen und Y-Leitungen (z. B. Wortleitungen und Bitleitungen) zugegriffen wird. In einer anderen Ausführungsform können die Speicherzellen leitfähige Brückenspeicherelemente einschließen. Ein leitfähiges Brückenspeicherelement kann auch als programmierbare Metallisierungszelle bezeichnet werden. Ein leitfähiges Brückenspeicherelement kann als Zustandsänderungselement basierend auf der physikalischen Verlagerung von Ionen innerhalb eines Festelektrolyten verwendet werden. In einigen Fällen kann ein leitfähiges Brückenspeicherelement zwei feste Metallelektroden einschließen, eine relativ inerte (z. B. Wolfram) und eine elektrochemisch aktive (z. B. Silber oder Kupfer), mit einer dünnen Folie des Festelektrolyten zwischen den beiden Elektroden. Mit steigender Temperatur steigt auch die Mobilität der Ionen, sodass die Programmierschwelle für die leitfähige Brückenspeicherzelle abnimmt. Somit kann das leitfähige Brückenspeicherelement einen weiten Bereich von Programmschwellenwerten als Funktion der Temperatur aufweisen.
  • Ein magnetoresistiver Speicher (MRAM) speichert Daten durch Magnetspeicherelemente. Die Elemente sind aus zwei durch eine dünne Isolierschicht getrennte ferromagnetischen Platten gebildet, von denen jede eine Magnetisierung halten kann. Eine der beiden Platten ist ein Permanentmagnet, der auf eine bestimmte Polarität eingestellt ist; die Magnetisierung der anderen Platte kann so geändert werden, dass sie der eines externen Felds entspricht, um Speicher zu speichern. Eine Speichervorrichtung wird aus einem Gitter solcher Speicherzellen aufgebaut. Bei einer Ausführungsform zum Programmieren liegt jede Speicherzelle zwischen einem Paar von Schreibleitungen, die in rechten Winkeln zueinander parallel zu der Zelle angeordnet sind, eine über und eine unter der Zelle. Wenn Strom durch sie fließt, wird ein Induktionsmagnetfeld erzeugt.
  • Phasenwechselspeicher (PCM) nutzen das einzigartige Verhalten von Chalkogenidglas aus. Eine Ausführungsform verwendet eine Ge2Sb2Te5-Legierung, um Phasenänderungen durch elektrisches Erwärmen des Phasenwechselmaterials zu erreichen. Die Dosen der Programmierung sind elektrische Impulse unterschiedlicher Amplitude und/oder Länge, die zu unterschiedlichen Widerstandswerten des Phasenwechselmaterials führen.
  • Der Durchschnittsfachmann wird erkennen, dass die hierin beschriebene Technologie nicht auf eine einzige spezifische Speicherstruktur beschränkt ist, sondern viele relevante Speicherstrukturen gemäß dem Geist und Umfang der Technologie, wie hierin beschrieben und wie einem Fachmann der Technik bekannt, abdeckt.
  • 3 ist eine perspektivische Ansicht eines Abschnitts einer beispielhaften Ausführungsform eines monolithischen dreidimensionalen Speicherarrays, der die Speicherstruktur 326 aufweisen kann, die eine Vielzahl von nichtflüchtigen Speicherzellen einschließt, die als vertikale NAND-Ketten angeordnet sind. Zum Beispiel zeigt 3 einen Abschnitt eines Speicherblocks. Die dargestellte Struktur schließt einen Satz von Bitleitungen BL ein, die über einem Stapel von alternierenden dielektrischen Schichten und leitenden Schichten positioniert sind. Als Beispiel wird eine der dielektrischen Schichten als D und eine der leitenden Schichten (auch als Wortleitungsschichten bezeichnet) wird als W markiert. Die Anzahl der alternierenden dielektrischen Schichten und der leitenden Schichten kann basierend auf spezifischen Implementierungsanforderungen variieren. Ein Satz von Ausführungsformen schließt zwischen 108-300 alternierende dielektrische Schichten und leitfähige Schichten ein. Eine beispielhafte Ausführungsform schließt 96 Datenwortleitungsschichten, 8 Auswahlschichten, 6 Dummy-Wortleitungsschichten und 110 dielektrische Schichten ein. Mehr oder weniger als 108 bis 300 Schichten können ebenfalls verwendet werden. Wie nachfolgend erläutert, sind die alternierenden dielektrischen Schichten und leitenden Schichten durch lokale Verbindungen LI in vier „Finger“ unterteilt. 3 zeigt nur zwei Finger und zwei lokale Verbindungen LI. Unterhalb der alternierenden dielektrischen Schichten und Wortleitungsschichten befindet sich eine Source-Leitungsschicht SL. In dem Stapel alternierender dielektrischer Schichten und leitender Schichten sind Speicherlöcher ausgebildet. Zum Beispiel ist eins der Speicherlöcher als MH markiert. Es ist zu beachten, dass in 3 die dielektrischen Schichten durchsichtig dargestellt sind, sodass der Leser die Speicherlöcher sehen kann, die in dem Stapel alternierender dielektrischer Schichten und leitender Schichten positioniert sind. In einer Ausführungsform werden NAND-Ketten gebildet, indem das Speicherloch mit Materialien gefüllt wird, die ein Ladungsfängermaterial einschließen, um eine vertikale Spalte von Speicherzellen zu erzeugen. Jede Speicherzelle kann eines oder mehrere Datenbits speichern. Mehr Details des dreidimensionalen monolithischen Speicherarrays, das die Speicherstruktur 326 aufweist, werden nachstehend in Bezug auf 4A-4F bereitgestellt.
  • 4A ist ein Blockdiagramm zur Erläuterung einer beispielhaften Organisation der Speicherstruktur 326, die in zwei Ebenen 302 und 304 unterteilt ist. Jede Ebene wird dann in M Blöcke unterteilt. In einem Beispiel hat jede Ebene etwa 2000 Blöcke. Doch es können auch andere Anzahlen von Blöcken und Ebenen verwendet werden. In einer Ausführungsform ist ein Speicherzellenblock eine Einheit zum Löschen. D. h. alle Speicherzellen eines Blocks werden zusammen gelöscht. In anderen Ausführungsformen können Speicherzellen aus anderen Gründen in Blöcken gruppiert werden, beispielsweise zum Organisieren der Speicherstruktur 126 für die Signalisierungs- und Auswahlschaltungen. In einigen Ausführungsforme stellt ein Block eine Gruppe von verbundenen Speicherzellen dar, da die Speicherzellen eines Blocks einen gemeinsamen Satz von Wortleitungen teilen.
  • 4B-4F stellen ein Beispiel einer dreidimensionalen („3D“) NAND-Struktur dar, die der Struktur von 3 entspricht und verwendet werden kann, um die Speicherstruktur 326 von 2 zu implementieren. 4B ist ein Blockdiagramm zur Darstellung einer Draufsicht auf einen Teil eines Blocks der Speicherstruktur 326. Der Teil des Blocks, der in 4B dargestellt ist, entspricht Abschnitt 306 in Block 2 aus 4A. Wie aus 4B ersichtlich, verläuft der in 4B dargestellte Block in der Richtung von 332. In einer Ausführungsform hat das Speicherarray viele Schichten; Jedoch zeigt 4B nur die obere Schicht.
  • 4B stellt eine Vielzahl von Kreisen dar, die die vertikalen Spalten darstellen. Jede der vertikalen Spalten schließt mehrere Auswahltransistoren (auch als Auswahlgate bezeichnet) und mehrere Speicherzellen ein. In einer Ausführungsform implementiert jede vertikale Spalte eine NAND-Kette. Zum Beispiel zeigt 4B vertikale Spalten 422, 432, 442 und 452. Die vertikale Spalte 422 implementiert die NAND-Kette 482. Die vertikale Spalte 432 implementiert die NAND-Kette 484. Die vertikale Spalte 442 implementiert die NAND-Kette 486. Die vertikale Spalte 452 implementiert die NAND-Kette 488. Mehr Details der vertikalen Spalten werden nachstehend bereitgestellt. Da der in 4B dargestellte Block in Richtung des Pfeils 330 und in Richtung des Pfeils 332 verläuft, enthält der Block mehr vertikale Spalten als in 4B dargestellt.
  • 4B zeigt auch einen Satz Bitleitungen 415 einschließlich der Bitleitungen 411, 412, 413, 414, ... 419. 4B zeigt vierundzwanzig Bitleitungen, da nur ein Teil des Blocks dargestellt ist. Es wird in Betracht gezogen, dass mehr als vierundzwanzig Bitleitungen mit vertikalen Spalten des Blocks verbunden sind. Jeder der Kreise, die vertikale Spalten darstellen, hat ein „x“ zur Kennzeichnung seiner Verbindung mit jeweils einer Bitleitung. Zum Beispiel ist die Bitleitung 414 mit den vertikalen Spalten 422, 432, 442 und 452 verbunden.
  • Der in 4B dargestellte Block schließt einen Satz lokaler Verbindungen 402, 404, 406, 408 und 410 ein, die die verschiedenen Schichten mit einer Sourceleitung unterhalb der vertikalen Spalten verbinden. Die lokalen Verbindungen 402, 404, 406, 408 und 410 dienen auch zur Unterteilung jeder Schicht des Blocks in vier Bereiche; zum Beispiel ist die in 4B dargestellte obere Schicht in die Bereiche 420, 430, 440 und 450 unterteilt, die als Finger bezeichnet werden. In den Schichten des Blocks, die Speicherzellen implementieren, werden die vier Bereiche als Wortleitungsfinger bezeichnet, die durch die lokalen Verbindungen getrennt sind. In einer Ausführungsform sind die Wortleitungsfinger auf einer gemeinsamen Ebene eines Blocks miteinander verbunden, um eine einzelne Wortleitung zu bilden. In einer anderen Ausführungsform sind die Wortleitungsfinger auf derselben Ebene nicht miteinander verbunden. In einer beispielhaften Implementierung ist eine Bitleitung mit nur einer vertikalen Spalte in jedem der Bereiche 420, 430, 440 und 450 verbunden. In dieser Implementierung hat jeder Block sechzehn Reihen aktiver Spalten und ist jede Bitleitung mit vier Reihen in jedem Block verbunden. In einer Ausführungsform sind alle vier Reihen, die mit einer gemeinsamen Bitleitung verbunden sind, mit derselben Wortleitung verbunden (über verschiedene Wortleitungsfinger auf derselben Ebene, die miteinander verbunden sind); daher verwendet das System die sourceseitigen Auswahlleitungen und die drainseitigen Auswahlleitungen, um einen (oder eine andere Untermenge) der vier zu wählen, die einer Speicheroperation (Programmieren, Prüfen, Lesen und/oder Löschen) unterzogen werden sollen.
  • Obwohl 4B jeden Bereich mit vier Reihen vertikaler Spalten, vier Bereichen und sechzehn Reihen vertikaler Spalten in einem Block darstellt, sind diese genauen Zahlen eine beispielhafte Implementierung. Andere Ausführungsformen können mehr oder weniger Bereiche pro Block, mehr oder weniger Reihen vertikaler Spalten pro Bereich und mehr oder weniger Reihen vertikaler Spalten pro Block einschließen.
  • 4B zeigt auch, dass die vertikalen Spalten gestaffelt sind. In anderen Ausführungsformen können verschiedene Staffelungsmuster verwendet werden. In einigen Ausführungsformen sind die vertikalen Spalten nicht gestaffelt.
  • 4C stellt einen Abschnitt einer Ausführungsform einer dreidimensionalen Speicherstruktur 326 dar, die eine Querschnittsansicht entlang der Linie AA von 4B zeigt. Diese Querschnittsansicht schneidet durch vertikale Spalten 432 und 434 und einen Bereich 430 (siehe 4B). Die Struktur von 4C enthält vier Drain-seitige Auswahlschichten SGD0, SGD1, SGD2 und SGD3; vier sourceseitige Auswahlschichten SGS0, SGS1, SGS2 und SGS3; sechs Dummy-Wortleitungsschichten DD0, DD1, DS0, DS1, WLDL, WLDU; und sechsundneunzig Datenwortleitungsschichten WLL0-WLL95 zum Verbinden mit Datenspeicherzellen. Andere Ausführungsformen können mehr oder weniger als vier drain-seitige Auswahlschichten, mehr oder weniger als vier source-seitige Auswahlschichten, mehr oder weniger als sechs Dummy-Wortleitungsschichten und mehr oder weniger als sechsundneunzig Wortleitungen implementieren. Vertikale Spalten 432 und 434 sind als durch die Drain-seitigen Auswahlschichten, Source-seitigen Auswahlschichten, Dummy-Wortleitungsschichten und Wortleitungsschichten hervorstehend dargestellt. In einer Ausführungsform weist jede vertikale Spalte eine vertikale NAND-Kette auf. Zum Beispiel weist die vertikale Spalte 432 die NAND-Kette 484 auf. Unter den vertikalen Spalten und den unten aufgelisteten Schichten befinden sich ein Substrat 101, eine Isolationsschicht 454 auf dem Substrat und eine Sourceleitung SL. Die NAND-Kette der vertikalen Spalte 432 hat ein Source-Ende an einer Unterseite des Stapels und ein Drain-Ende an einer Oberseite des Stapels. Wie in Übereinstimmung mit 4B zeigt 4C die vertikale Spalte 432, die mit der Bitleitung 414 über den Verbinder 415 verbunden ist. Lokale Verbindungen 404 und 406 sind ebenfalls dargestellt.
  • Zur leichteren Bezugnahme werden vier Drain-seitige Auswahlschichten SGD0, SGD1, SGD2 und SGD3; vier Source-seitige Auswahlschichten SGS0, SGS1, SGS2 und SGS3; Dummy-Wortleitungsschichten DD0, DD1, DS0, DS1, WLDL und WLDU; und Wortleitungsschichten WLL0-WLL95 zusammen als die leitenden Schichten bezeichnet. In einer Ausführungsform sind die leitenden Schichten aus einer Kombination von TiN und Wolfram hergestellt. In anderen Ausführungsformen können andere Materialien verwendet werden, um die leitenden Schichten zu bilden, wie dotiertes Polysilicium, Metall wie Wolfram oder Metallsilizid. In einigen Ausführungsformen können verschiedene leitende Schichten aus unterschiedlichen Materialien gebildet werden. Zwischen leitenden Schichten befinden sich dielektrische Schichten DLO-DL111. Zum Beispiel befinden sich dielektrische Schichten DL104 über einer Wortleitungsschicht WLL94 und unter einer Wortleitungsschicht WLL95. In einer Ausführungsform sind die dielektrischen Schichten aus SiO2 hergestellt. In anderen Ausführungsformen können andere dielektrische Materialien verwendet werden, um die dielektrischen Schichten zu bilden.
  • Die nichtflüchtigen Speicherzellen sind entlang vertikaler Spalten ausgebildet, die durch alternierende leitende und dielektrische Schichten im Stapel verlaufen. In einer Ausführungsform sind die Speicherzellen in NAND-Ketten angeordnet. Die Wortleitungsschichten WLL0-WLL95 sind mit Speicherzellen (auch Datenspeicherzellen genannt) verbunden. Dummy-Wortleitungsschichten DD0, DD1, DS0, DS1, WLDL und WLDU sind mit Dummy-Speicherzellen verbunden. Eine Dummy-Speicherzelle speichert keine Host-Daten (Daten, die von dem Host bereitgestellt werden, wie Daten von einem Benutzer des Hosts) und ist nicht dazu geeignet, sie zu speichern, während eine Datenspeicherzelle dazu geeignet ist, Host-Daten zu speichern. In einigen Ausführungsformen können Datenspeicherzellen und Dummy-Speicherzellen die gleiche Struktur aufweisen. Eine Dummy-Wortleitung ist mit Dummy-Speicherzellen verbunden. Drain-seitige Auswahlschichten SGD0, SGD1, SGD2 und SGD3 werden zum elektrischen Verbinden und Trennen von NAND-Ketten von Bitleitungen verwendet. Source-seitige Auswahlschichten SGS0, SGS1, SGS2 und SGS3 werden zum elektrischen Verbinden und Trennen von NAND-Ketten von der Sourceleitung SL verwendet.
  • 4C zeigt auch einen Stoßbereich. In einer Ausführungsform ist es teuer und/oder schwierig, sechsundneunzig Wortleitungsschichten zu ätzen, die mit dielektrischen Schichten vermischt sind. Zur Erleichterung dieser Belastung schließt eine Ausführungsform das Ablegen eines ersten Stapels von achtundvierzig Wortleitungsschichten, die sich mit dielektrischen Schichten abwechseln, das Ablegen des Stoßbereichs und das Ablegen eines zweiten Stapels von achtundvierzig Wortleitungsschichten, die sich mit dielektrischen Schichten abwechseln, ein. Der Stoßbereich ist zwischen dem ersten Stapel und dem zweiten Stapel positioniert. Der Stoßbereich wird dazu verwendet, um den ersten Stapel mit dem zweiten Stapel zu verbinden. In 4C wird der erste Stapel als „Unterer Satz von Wortleitungen“ und der zweite Stapel als „Oberer Satz von Wortleitungen“ bezeichnet. In einer Ausführungsform besteht der Stoßbereich aus den gleichen Materialien wie die Wortleitungsschichten. In einem beispielhaften Satz von Ausführungsformen besteht die Vielzahl von Wortleitungen (Steuerleitungen) aus einem ersten Stapel von abwechselnden Wortleitungsschichten und dielektrischen Schichten, einem zweiten Stapel von abwechselnden Wortleitungsschichten und dielektrischen Schichten und einem Stoßbereich zwischen dem ersten Stapel und dem zweiten Stapel, wie in 4C dargestellt.
  • 4D stellt eine logische Darstellung der leitenden Schichten (SGD0, SGD1, SGD2, SGD3, SGS0, SGS1, SGS2, SGS3, DD0, DD1, DS0, DS1 und WLL0-WLL95) für den Block dar, der teilweise in 4C dargestellt ist. Wie oben in Bezug auf 4B erwähnt, werden bei den lokalen Zwischenverbindungen 402, 404, 406, 408 und 410 in einer Ausführungsform die leitenden Schichten in vier Bereiche/Finger (oder Unterblöcke) aufgeteilt. Zum Beispiel ist die Wortleitungsschicht WLL94 in Bereiche 460, 462, 464 und 466 unterteilt. Für Wortleitungsschichten (WLL0-WLL127) werden die Bereiche als Wortleitungsfinger bezeichnet; zum Beispiel ist die Wortleitungsschicht WLL126 in Wortleitungsfinger 460, 462, 464 und 466 unterteilt. Zum Beispiel ist der Bereich 460 ein Wortleitungsfinger auf einer Wortleitungsschicht. In einer Ausführungsform sind die vier Wortleitungsfinger auf derselben Ebene miteinander verbunden. In einer anderen Ausführungsform arbeitet jeder Wortleitungsfinger als separate Wortleitung.
  • Die Drain-seitige Auswahlgateschicht SGD0 (oberste Schicht) ist ebenfalls in Bereiche 420, 430, 440 und 450 unterteilt, die auch als Finger oder Auswahlleitungsfinger bekannt sind. In einer Ausführungsform sind die vier Auswahlleitungsfinger auf derselben Ebene miteinander verbunden. In einer anderen Ausführungsform arbeitet jeder Wortleitungsfinger als separate Wortleitung.
  • 4E zeigt eine Querschnittsansicht des Bereichs 429 aus 4C, der einen Teil der vertikalen Spalte 432 (Speicherloch) einschließt. In einer Ausführungsform sind die vertikalen Spalten rund; in anderen Ausführungsformen können jedoch andere Formen verwendet werden. In einer Ausführungsform schließt die vertikale Säule 432 eine innere Kernschicht 470 ein, die aus einem Dielektrikum, wie beispielsweise SiO2, hergestellt ist. Es können auch andere Materialien verwendet werden. Der umgebende innere Kern 470 ist ein Polysiliziumkanal 471. Es können auch andere Materialien als Polysilicium verwendet werden. Es ist zu beachten, dass es der Kanal 471 ist, der mit der Bitleitung und der Source-Leitung verbunden ist. Der umgebende Kanal 471 ist ein Tunneldielektrikum 472. In einer Ausführungsform hat das Tunneldielektrikum 472 eine ONO-Struktur. Das umgebende Tunneldielektrikum 472 ist eine Ladungsfängerschicht 473, wie (zum Beispiel) Siliziumnitrid. Andere Speichermaterialien und Strukturen können ebenfalls verwendet werden. Die hierin beschriebene Technologie ist nicht auf ein spezifisches Material oder eine spezifische Struktur beschränkt.
  • 4E stellt dielektrische Schichten DLL105, DLL104, DLL103, DLL102 und DLL101 sowie Wortleitungsschichten WLL95, WLL94, WLL93, WLL92 und WLL91 dar. Jede der Wortleitungsschichten schließt einen Wortleitungsbereich 476 ein, der von einer Aluminiumoxidschicht 477 umgeben ist, die von einer Blockieroxidschicht 478 umgeben ist. Die physikalische Wechselwirkung der Wortleitungsschichten mit der vertikalen Spalte bildet die Speicherzellen. Somit weist eine Speicherzelle in einer Ausführungsform Kanal 471, Tunneldielektrikum 472, Ladungsfängerschicht 473, Blockieroxidschicht 478, Aluminiumoxidschicht 477 und Wortleitungsbereich 476 auf. Zum Beispiel weisen die Wortleitungsschicht WLL95 und ein Abschnitt der vertikalen Spalte 432 eine Speicherzelle MC1 auf. Die Wortleitungsschicht WLL94 und ein Abschnitt der vertikalen Spalte 432 weisen eine Speicherzelle MC2 auf. Die Wortleitungsschicht WLL93 und ein Abschnitt der vertikalen Spalte 432 weisen eine Speicherzelle MC3 auf. Die Wortleitungsschicht WLL92 und ein Abschnitt der vertikalen Spalte 432 weisen eine Speicherzelle MC4 auf. Die Wortleitungsschicht WLL91 und ein Abschnitt der vertikalen Spalte 432 weisen eine Speicherzelle MC5 auf. In anderen Architekturen kann eine Speicherzelle eine andere Struktur haben; die Speicherzelle wäre jedoch immer noch die Speichereinheit.
  • Wenn eine Speicherzelle programmiert wird, werden Elektronen in einem Teil der Ladungsfängerschicht 473 gespeichert, der der Speicherzelle zugeordnet ist. Diese Elektronen werden in die Ladungsfängerschicht 473 aus dem Kanal 471, durch das Tunneldielektrikum 472 in Reaktion auf eine entsprechende Spannung im Wortleitungsbereich 476 gezogen. Die Schwellenspannung (Vth) einer Speicherzelle wird proportional zur Menge der gespeicherten Ladung erhöht. In einer Ausführungsform wird die Programmierung durch Fowler Nordheim-Tunneln der Elektronen in die Ladungsfängerschicht erreicht. Während eines Löschvorgangs kehren die Elektronen in den Kanal zurück oder werden Löcher in die Ladungsfängerschicht injiziert, um sich mit Elektronen zu rekombinieren. In einer Ausführungsform wird Löschen unter Verwendung von Löcherinjektion in die Ladungsfängerschicht über einen physikalischen Mechanismus, wie durch Gate induziertes Drain-Leck (GIDL), erreicht.
  • 4F ist ein schematisches Diagramm eines Abschnitts des in den 3-4E dargestellten Speichers. 4F zeigt physikalische Wortleitungen WLL0-WLL95, die über den gesamten Block verlaufen. Die Struktur von 4F entspricht Abschnitt 306 in Block 2 von 4A-E einschließlich der Bitleitungen 411, 412, 413, 414, ... 419. Innerhalb des Blocks ist jede Bitleitung mit vier NAND-Strings verbunden. Drain-seitige Auswahlleitungen SGD0, SGD1, SGD2 und SGD3 werden dazu verwendet, um zu bestimmen, welche der vier NAND-Ketten mit der(den) zugehörigen Bitleitung(en) verbunden sind. Die source-seitigen Auswahlleitungen SGS0, SGS1, SGS2 und SGS3 werden verwendet, um zu bestimmen, welche der vier NAND-Ketten mit der gemeinsamen Source-Leitung verbunden sind. Der Block kann auch als in vier Unterblöcke SB0, SB1, SB2 und SB3 unterteilt betrachtet werden. Unterblock SB0 entspricht solchen vertikalen NAND-Ketten, die durch SGD0 und SGS0 gesteuert werden, Unterblock SB1 entspricht solchen vertikalen NAND-Ketten, die durch SGD1 und SGS1 gesteuert werden, Unterblock SB2 entspricht solchen vertikalen NAND-Ketten, die durch SGD2 und SGS2 gesteuert werden, und Unterblock SB3 entspricht solchen vertikalen NAND-Ketten, die durch SGD3 und SGS3 gesteuert werden.
  • Obwohl das beispielhafte Speichersystem von 3-4F eine dreidimensionale Speicherstruktur ist, die vertikale NAND-Ketten mit Ladungsfängermaterial einschließt, können auch andere (2D und 3D) Speicherstrukturen mit der hierin beschriebenen Technologie verwendet werden.
  • Die vorstehend erörterten Speichersysteme können gelöscht, programmiert und gelesen werden. Am Ende eines erfolgreichen Programmierprozesses (mit Verifizierung) sollten die Schwellenspannungen der Speicherzellen innerhalb einer oder mehrerer Verteilungen von Schwellenspannungen für programmierte Speicherzellen oder innerhalb einer Verteilung von Schwellenspannungen für gelöschte Speicherzellen, wie zutreffend, liegen.
  • 5 ist ein Diagramm der Schwellenspannung in Abhängigkeit von der Anzahl der Speicherzellen und veranschaulicht beispielhafte Schwellenspannungsverteilungen für das Speicherarray, wenn jede Speicherzelle ein Datenbit speichert. 5 zeigt zwei Schwellenspannungsverteilungen: E und P. Die Schwellenspannungsverteilung E entspricht einem Datenlöschzustand. Die Schwellwertspannungsverteilung P entspricht einem programmierten Datenzustand. Speicherzellen, die Schwellenspannungen in der Schwellenspannungsverteilung E aufweisen, befinden sich daher im Datenlöschzustand (z. B. sie sind gelöscht). Speicherzellen, die Schwellenspannungen in der Schwellenspannungsverteilung P aufweisen, befinden sich daher im programmierten Datenzustand (z. B. sie sind programmiert). In einer Ausführungsform speichern gelöschte Speicherzellen Daten „1“ und programmierte Speicherzellen Daten „0“. Speicherzellen, die ein Datenbit speichern, werden als Single-Level-Zellen („SLC“) bezeichnet.
  • 6 ist ein Diagramm der Schwellenspannung in Abhängigkeit von der Anzahl der Speicherzellen und veranschaulicht beispielhafte Schwellenspannungsverteilungen für das Speicherarray, wenn jede Speicherzelle drei Datenbits speichert. Andere Ausführungsformen können jedoch andere Datenkapazitäten pro Speicherzelle verwenden (wie ein, zwei, vier oder fünf Bits an Daten pro Speicherzelle). Speicherzellen, die mehr als ein Datenbit speichern, werden als Multi-Level-Zellen („MLC“) bezeichnet. 6 zeigt acht Schwellenspannungsverteilungen, die acht Datenzuständen entsprechen. Bei einem Datenzustand N hat dieser Datenzustand N höhere Schwellenspannungen als der Datenzustand N-1 und niedrigere Schwellenspannungen als der Datenzustand N+1. Die erste Schwellenspannungsverteilung (Datenzustand) S0 steht für Speicherzellen, die gelöscht sind. Die anderen sieben Schwellenspannungsverteilungen (Datenzustände) S1-S7 stellen Speicherzellen dar, die programmiert sind und daher auch programmierte Datenzustände genannt werden. In einigen Ausführungsformen können sich die Datenzustände S1 bis S7 überlappen, wobei sich die Steuerung 122 auf die Fehlerkorrektur stützt, um die korrekten Daten, die gespeichert werden, zu identifizieren.
  • 6 zeigt auch sieben Lesereferenzspannungen Vr1, Vr2, Vr3, Vr4, Vr5, Vr6 und Vr7 zum Lesen von Daten aus Speicherzellen. Durch Testen (z. B. Durchführen von Abtastvorgängen), ob die Schwellenspannung einer gegebenen Speicherzelle über oder unter den sieben Lesereferenzspannungen liegt, kann das System bestimmen, in welchem Datenzustand (d. h. S0, S1, S2, S3, ...) sich eine Speicherzelle befindet. In 5 wird die Lesereferenzspannung Vr verwendet, um zu prüfen, ob Speicherzellen gelöscht oder programmiert sind.
  • 6 zeigt auch sieben Prüfreferenzspannungen, Vv1, Vv2, Vv3, Vv4, Vv5, Vv6 und Vv7 (auch als Prüfzielspannungen bezeichnet). Wenn Speicherzellen auf den Datenzustand S1 programmiert werden, prüft das System, ob diese Speicherzellen eine Schwellenspannung aufweisen, die größer oder gleich Vv1 ist. Wenn Speicherzellen auf den Datenzustand S2 programmiert werden, prüft das System, ob diese Speicherzellen eine Schwellenspannung aufweisen, die größer oder gleich Vv2 ist. Wenn Speicherzellen in den Datenzustand S3 programmiert werden, bestimmt das System, ob Speicherzellen ihre Schwellenspannung aufweisen, die größer oder gleich Vv3 ist. Wenn Speicherzellen auf den Datenzustand S4 programmiert werden, prüft das System, ob diese Speicherzellen eine Schwellenspannung aufweisen, die größer oder gleich Vv4 ist. Wenn Speicherzellen auf den Datenzustand S5 programmiert werden, prüft das System, ob diese Speicherzellen eine Schwellenspannung aufweisen, die größer oder gleich Vv5 ist. Wenn Speicherzellen auf den Datenzustand S6 programmiert werden, prüft das System, ob diese Speicherzellen eine Schwellenspannung aufweisen, die größer oder gleich Vv6 ist. Wenn Speicherzellen auf den Datenzustand S7 programmiert werden, prüft das System, ob diese Speicherzellen eine Schwellenspannung aufweisen, die größer oder gleich Vv7 ist.
  • In einer Ausführungsform, die als Vollsequenzprogrammierung bekannt ist, können Speicherzellen aus dem gelöschten Datenzustand S0 direkt in einen der programmierten Datenzustände S1 bis S7 programmiert werden. Zum Beispiel kann eine Population von Speicherzellen, die programmiert werden sollen, zuerst gelöscht werden, sodass sich alle Speicherzellen in der Population im gelöschten Datenzustand S0 befinden. Dann wird ein Programmierprozess verwendet, um Speicherzellen direkt in Datenzustände S1, S2, S3, S4, S5, S6 und/oder S7 zu programmieren. Während zum Beispiel einige Speicherzellen von dem Datenzustand S0 auf den Datenzustand S1 programmiert werden, werden andere Speicherzellen vom Datenzustand S0 auf den Datenzustand S2 und/oder vom Datenzustand S0 auf den Datenzustand S3 und so weiter programmiert. Die Pfeile von 6 stellen die vollständige Sequenzprogrammierung dar. Die hierin beschriebene Technologie kann auch mit anderen Programmierarten zusätzlich zur Vollsequenzprogrammierung einschließlich (aber nicht beschränkt auf) Mehrstufen-/Phasenprogrammierung verwendet werden.
  • Jede Schwellenspannungsverteilung (Datenzustand) in 6 entspricht vorbestimmten Werten für den Satz von Datenbits, die in den Speicherzellen gespeichert sind. Die spezifische Beziehung zwischen den in die Speicherzelle programmierten Daten und den Schwellenspannungspegeln der Speicherzelle hängt von dem Datencodierschema ab, das für die Speicherzellen verwendet wird. In einer Ausführungsform werden Datenwerte den Schwellenspannungsbereichen unter Verwendung einer Gray-Code-Zuweisung zugewiesen, sodass, wenn sich die Schwellenspannung eines Speichers fälschlicherweise in seinen benachbarten physikalischen Zustand verschiebt, nur ein Bit betroffen ist.
  • 7 ist eine Tabelle, die ein Beispiel einer Zuordnung von Datenwerten Datenzuständen beschreibt. In der Tabelle von 6, S0=111 (gelöschter Zustand), S1=110, S2=100, S3=000, S4=010, S5=011, S6=001 und S7=101. Andere Datencodierungen können ebenfalls verwendet werden. Keine spezifische Datencodierung ist von der hier offenbarten Technologie erforderlich. In einer Ausführungsform werden, wenn ein Block einem Löschvorgang unterzogen wird, alle Speicherzellen in den Datenzustand S0, den gelöschten Zustand, bewegt.
  • Im Allgemeinen wird die ausgewählte Wortleitung während der Prüfvorgänge und Lesevorgänge mit einer Spannung (ein Beispiel eines Referenzsignals) verbunden, deren Pegel für jeden Lesevorgang (siehe z. B. Lesereferenzspannungen Vr1, Vr2, Vr3, Vr4, Vr5, Vr6 und Vr7 von 6) oder Prüfvorgang (siehe z. B. Prüfreferenzspannungen Vv1, Vv2, Vv3, Vv4, Vv5, Vv6 und Vv7 von 6) spezifiziert ist, um zu bestimmen, ob eine Schwellenspannung der betreffenden Speicherzelle einen derartigen Pegel erreicht hat. Nach Anlegen der Wortleitungsspannung wird der Leitungsstrom der Speicherzelle gemessen, um zu bestimmen, ob die Speicherzelle in Reaktion auf die an die Wortleitung angelegte Spannung eingeschaltet ist (Strom geleitet). Wenn der Leitungsstrom gemäß Messungen größer als ein bestimmter Wert ist, dann wird angenommen, dass die Speicherzelle eingeschaltet ist und die an die Wortleitung angelegte Spannung größer als die Schwellenspannung der Speicherzelle ist. Falls der Leitungsstrom gemäß Messungen nicht größer als der bestimmte Wert ist, dann wird angenommen, dass die Speicherzelle nicht eingeschaltet ist und die an die Wortleitung angelegte Spannung nicht größer als die Schwellenspannung der Speicherzelle ist. Während eines Lese- oder Verifizierungsprozesses werden die nicht ausgewählten Speicherzellen mit einer oder mehreren Lesedurchgangsspannungen (die auch als Bypass-Spannungen bezeichnet werden) an ihren Steuer-Gates versorgt, sodass diese Speicherzellen als Durchgangs-Gate fungieren (z. B. Strom leiten ungeachtet dessen, ob sie programmiert oder gelöscht sind).
  • Es gibt viele Wege, um den Leitungsstrom einer Speicherzelle während eines Lese- oder Prüfvorgangs zu messen. In einem Beispiel wird der Leitungsstrom einer Speicherzelle durch die Rate gemessen, mit der sie einen dedizierten Kondensator in dem Leseverstärker entlädt oder lädt. In einem anderen Beispiel ermöglicht der Leitungsstrom der ausgewählten Speicherzelle dem NAND-String, der die Speicherzelleeinschließt (bzw. ermöglicht diesem nicht), eine entsprechende Bitleitung zu entladen. Die Spannung auf der Bitleitung wird nach einer gewissen Zeit gemessen, um zu sehen, ob sie entladen wurde. Es ist zu beachten, dass die hierin beschriebene Technologie mit verschiedenen Verfahren verwendet werden kann, die nach dem Stand der Technik zum Prüfen/Lesen bekannt sind. Andere Lese- und Prüftechniken, die nach dem Stand der Technik bekannt sind, können ebenfalls verwendet werden.
  • 8 ist ein Flussdiagramm, das eine Ausführungsform eines Prozesses zum Programmieren beschreibt, der von dem Speicherrohchip 300 ausgeführt wird. In einer beispielhaften Ausführungsform wird der Prozess von 8 auf dem Speicherrohchip 300 unter Verwendung der vorstehend beschriebenen Steuerschaltung in Richtung der Zustandsmaschine 312 durchgeführt. Der Prozess von 8 wird durchgeführt, um die Programmierung von 5, die vollständige Sequenzprogrammierung von 6 oder andere Programmierschemata einschließlich Mehrstufenprogrammierung zu implementieren. Wenn eine Mehrstufenprogrammierung implementiert wird, wird der Prozess von 8 verwendet, um jede/alle Stufen des Mehrstufenprogrammierprozesses zu implementieren.
  • In der Regel wird ein Programmiersignal Vpgm an das Steuer-Gate (über eine ausgewählte Wortleitung) während eines Programmiervorgangs als eine Reihe von Programmierspannungsimpulsen angelegt, wie in 9 dargestellt. Zwischen Programmierimpulsen befindet sich ein Satz von Prüfimpulsen, um eine Prüfung durchzuführen. In vielen Implementierungen wird die Größe der Programmierimpulse mit jedem sukzessiven Impuls durch eine vorbestimmte Schrittgröße erhöht (d. h., 0,2 v-0,5 v). In Schritt 570 von 8 wird die Programmierspannung (Vpgm) auf die Startgröße (z. B. -12-16 V oder einen anderen geeigneten Pegel) initialisiert und ein Programmzähler PC, der durch die Zustandsmaschine 312 geführt wird, wird bei 1 initialisiert. In Schritt 572 wird ein Programmierimpuls des Programmiersignals Vpgm an die ausgewählte Wortleitung (die zur Programmierung ausgewählte Wortleitung) angelegt. In einer Ausführungsform sind alle Speicherzellen der Gruppe von Speicherzellen, die gleichzeitig programmiert werden, mit derselben Wortleitung (der ausgewählten Wortleitung) verbunden. Die nicht ausgewählten Wortleitungen empfangen eine oder mehrere Verstärkungsspannungen (z. B. ~7 bis 11 Volt), um Verstärkungsschemata durchzuführen, die nach dem Stand der Technik bekannt sind. Sollte in einer Ausführungsform eine Speicherzelle programmiert werden, so wird die entsprechende Bitleitung auf Masse gelegt. Wenn andererseits die Speicherzelle auf ihrer gegenwärtigen Schwellenspannung bleiben sollte, dann wird die entsprechende Bitleitung mit Vdd (d. h., 1-3,5 Volt) verbunden, um eine Programmierung zu sperren. In Schritt 572 wird der Programmierspannungsimpuls gleichzeitig an alle Speicherzellen angelegt, die mit der ausgewählten Wortleitung verbunden sind, sodass alle Speicherzellen, die mit der ausgewählten Wortleitung verbunden sind, gleichzeitig programmiert werden. Das heißt, sie werden zur gleichen Zeit oder während überlappenden Zeiten (die beide als gleichzeitig betrachtet werden) programmiert. Auf diese Weise ändern alle Speicherzellen, die mit der ausgewählten Wortleitung verbunden sind, gleichzeitig ihre Schwellenspannung, sofern sie nicht aus der Programmierung ausgeschlossen wurden.
  • In Schritt 574 werden die entsprechenden Speicherzellen unter Verwendung des geeigneten Satzes von Prüfreferenzspannungen verifiziert, um einen oder mehrere Verifizierungsvorgänge durchzuführen. In einer Ausführungsform wird der Verifizierungsprozess durch Prüfung durchgeführt, ob die Schwellenspannungen der zur Programmierung ausgewählten Speicherzellen die geeignete Prüfreferenzspannung erreicht haben.
  • In Schritt 576 wird bestimmt, ob alle Speicherzellen ihre Zielschwellenspannungen erreicht haben (bestanden). Falls dies der Fall ist, ist der Programmierprozess vollständig und erfolgreich, weil alle ausgewählten Speicherzellen auf ihre Zielzustände programmiert und verifiziert wurden. In Schritt 578 wird ein Status von „BESTANDEN“ (oder Erfolg) gemeldet. Falls in 576 bestimmt wird, dass nicht alle der Speicherzellen ihre Zielschwellenspannungen erreicht haben (fehlgeschlagen), fährt der Programmierungsprozess mit Schritt 580 fort.
  • In Schritt 580 zählt das System die Anzahl von Speicherzellen, die ihre jeweilige Zielschwellenspannungsverteilung noch nicht erreicht haben. Das heißt, das System zählt die Anzahl von Speicherzellen, die den Verifizierungsprozess bisher nicht bestanden haben. Dieses Zählen kann von der Zustandsmaschine 312, der Steuerung 120 oder einer anderen Logik ausgeführt werden. In einer Implementierung speichert jeder der Abtastblöcke den Status (bestanden/fehlgeschlagen) ihrer jeweiligen Speicherzellen. In einer Ausführungsform gibt es einen Gesamtzählwert, der die Gesamtzahl der gegenwärtig programmierten Speicherzellen wiedergibt, die den letzten Prüfschritt nicht bestanden haben. In einer anderen Ausführungsform werden separate Zählwerte für jeden Datenzustand ermittelt.
  • In Schritt 582 wird bestimmt, ob die Zählung von Schritt 580 kleiner oder gleich einer vorgegebenen Grenze ist. In einer Ausführungsform ist die vorbestimmte Grenze eine Anzahl von Bits, die durch ECC während eines Leseprozesses für die Seite von Speicherzellen korrigiert werden können. Wenn die Anzahl der fehlerhaften Speicherzellen kleiner oder gleich der vorbestimmten Grenze ist, dann kann der Programmierungsprozess anhalten und in Schritt 578 wird der Status „BESTANDEN“ gemeldet. In dieser Situation können ausreichend Speicherzellen korrekt programmiert werden, sodass die wenigen verbleibenden Speicherzellen, die nicht vollständig programmiert worden sind, unter Verwendung von ECC während des Lesevorgangs korrigiert werden können. In einigen Ausführungsformen zählt Schritt 580 die Anzahl ausgefallener Zellen für jeden Sektor, jeden Zieldatenzustand oder jede andere Einheit, und diese Zählwerte werden einzeln oder kollektiv mit einer oder mehreren Schwellen in Schritt 582 verglichen.
  • In einer Ausführungsform kann die vorbestimmte Grenze kleiner als die Gesamtzahl von Bits sein, die durch ECC während eines Leseprozesses korrigiert werden können, um zukünftige Fehler einzuplanen. Wenn weniger als alle Speicherzellen für eine Seite programmiert werden oder ein Zählwert für nur einen Datenzustand (oder weniger als alle Zustände) verglichen wird, kann die vorbestimmte Grenze ein Anteil (pro rata oder nicht pro rata) der Anzahl von Bits sein, die durch ECC während eines Leseprozesses für die Seite von Speicherzellen korrigiert werden können. In einigen Ausführungsformen ist die Grenze nicht vorbestimmt. Stattdessen ändert sie sich basierend auf der Anzahl der bereits gezählten Fehler für die Seite, der Anzahl der durchgeführten Programmier-/Löschzyklen oder anderer Kriterien.
  • Wenn die Anzahl fehlerhafter Speicherzellen nicht kleiner als die vorbestimmte Grenze ist, dann fährt der Programmierungsprozess mit Schritt 584 fort und der Programmzähler PC wird gegen den Programmgrenzwert (PL) überprüft. Beispiele für Programmgrenzwerte schließen 6, 20 und 30 ein; jedoch können andere Werte verwendet werden. Wenn der Programmzähler PC nicht kleiner als der Programmgrenzwert PL ist, dann wird der Programmprozess als fehlgeschlagen betrachtet und der Status FEHLGESCHLAGEN wird in Schritt 588 gemeldet. Wenn der Programmzähler PC kleiner als der Programmgrenzwert PL ist, dann fährt der Prozess mit Schritt 586 fort, während der Programmzähler PC um 1 erhöht wird und die Programmierspannung Vpgm auf die nächste Größe erhöht wird. Zum Beispiel hat der nächste Impuls eine Größe, die um eine Schrittgröße (z. B. eine Schrittgröße von 0,1 bis 0,4 Volt) größer als der vorherige Impuls ist. Nach Schritt 586 kehrt der Prozess zu Schritt 572 zurück und ein weiterer Programmierimpuls wird an die ausgewählte Wortleitung angelegt, sodass eine weitere Iteration (Schritte 572 bis 586) des Programmierungsprozesses aus 8 durchgeführt wird.
  • Da es möglich ist, dass Fehler beim Programmieren oder Lesen auftreten können und Fehler beim Speichern von Daten auftreten können (z. B. aufgrund von Driften von Elektronen, Datenhalteproblemen oder anderen Phänomenen), wird eine Fehlerkorrektur mit der Programmierung von Daten verwendet. Speichersysteme verwenden oft Error Correction Codes (ECC), um Daten vor einer Beschädigung zu schützen. Viele ECC-Codierungsschemata sind nach dem Stand der Technik gut bekannt. Diese herkömmlichen Fehlerkorrekturcodes sind besonders nützlich bei großen Speichern, einschließlich Flash-Speichern (und anderen nichtflüchtigen), aufgrund der beträchtlichen Auswirkung auf die Produktionsausbeute und die Zuverlässigkeit der Vorrichtung, die derartige Codierungsschemata bereitstellen können, wenn sie Vorrichtungen, die einige nicht programmierbare oder defekte Zellen aufweisen, dahingehend ändern, dass sie nutzbar werden. Natürlich besteht ein Kompromiss zwischen der Ertragseinsparung und den Kosten des Bereitstellens zusätzlicher Speicherzellen, um die Codebits zu speichern (d. h. die Code-„Rate“). Als solches sind einige ECC-Codes besser geeignet für Flash-Speichervorrichtungen als andere. Generell neigen ECC-Codes für Flash-Speichervorrichtungen dazu, höhere Code-Raten (d. h. ein niedrigeres Verhältnis von Codebits zu Datenbits) als die in Datenkommunikationsanwendungen verwendeten Codes (die Code-Raten von nur 1/2 haben können) aufzuweisen. Beispiele für gut bekannte ECC-Codes, die üblicherweise in Verbindung mit einer Flash-Speicherspeicherung verwendet werden, schließen Reed-Solomon-Codes, andere BCH-Codes, Hamming-Codes und dergleichen ein. Manchmal sind die in Verbindung mit Flash-Speicherspeicherung verwendeten Fehlerkorrekturcodes dahingehend „systematisch“, dass der Datenteil des letztendlichen Codeworts von den eigentlichen Daten, die codiert werden, unverändert ist, wobei die Code- oder Paritätsbits an die Datenbits angehängt sind, um das vollständige Codewort zu bilden.
  • Die spezifischen Parameter für einen bestimmten Fehlerkorrekturcode schließen die Art des Codes, die Größe des Blocks tatsächlicher Daten, von denen das Codewort abgeleitet wird, und die Gesamtlänge des Codeworts nach der Codierung ein. Zum Beispiel kann ein typischer BCH-Code, der auf einen Sektor von 512 Bytes (4096 Bits) von Daten angewendet wird, bis zu vier Fehlerbits korrigieren, wenn mindestens 60 ECC- oder Paritätsbits verwendet werden. Reed-Solomon-Codes sind eine Teilsatz von BCH-Codes und werden auch allgemein zur Fehlerkorrektur verwendet. Zum Beispiel kann ein typischer Reed-Solomon-Code bis zu vier Fehler in einem 512 Byte-Datensektor korrigieren, wobei etwa 72 ECC-Bits verwendet werden. Im Kontext von Flash-Speichern bietet Fehlerkorrektur-Codierung eine wesentliche Verbesserung bei der Produktionsausbeute sowie bei der Zuverlässigkeit des Flash-Speichers im Zeitverlauf.
  • In einigen Ausführungsformen empfängt die Steuerung 102 Hostdaten (auch als Benutzerdaten oder Daten von einer Entität außerhalb des Speichersystems bezeichnet), auch als Informationsbits bezeichnet, die in der nichtflüchtigen Speicherstruktur 326 gespeichert werden sollen. Die Informationsbits werden durch die Matrix i=[1 0] dargestellt (es ist zu beachten, dass zwei Bits nur als Beispiel verwendet werden und viele Ausführungsformen Codeworte aufweisen, die länger als zwei Bits sind). Ein Fehlerkorrektur-Codierungsprozess (wie einer der vor- bzw. nachstehend erwähnten Prozesse) wird von der ECC-Maschine 158 der Steuerung 120 implementiert, bei dem Paritätsbits zu den Informationsbits hinzugefügt werden, um Daten bereitzustellen, die durch die Matrix oder das Codewort v=[1 0 1 0] dargestellt sind, was anzeigt, dass zwei Paritätsbits an die Datenbits angehängt worden sind. Andere Techniken können verwendet werden, die Eingangsdaten auf komplexere Weise zu Ausgangsdaten zuweisen. Beispielsweise können Paritätsprüfcodes niedriger Dichte (LDPC), die auch als Gallager-Codes bezeichnet werden, verwendet werden. Mehr Details über LDPC-Codes sind in R. G. Gallager, „Low-density parity-check codes", Inform. Theory, Band IT 8, S. 21 28, Januar 1962; und D. MacKay, Information Theory, Inference and Learning Algorithms, Cambridge University Press 2003, Kapitel 47, zu finden. In der Praxis werden derartige LDPC-Codes üblicherweise auf mehrere Seiten (z. B. von ECC-Maschine 158) angewendet, die über eine Anzahl von Speicherelementen codiert sind, aber sie müssen nicht über mehrere Seiten angewendet werden. Die Datenbits können auf eine logische Seite abgebildet und in der Speicherstruktur 326 gespeichert werden, indem eine oder mehrere Speicherzellen auf einen oder mehrere Programmierzustände programmiert werden, der v entspricht.
  • In einer Ausführungsform dient die Programmierung dazu, die Schwellenspannung der Speicherzellen auf einen der programmierten Datenzustände S1-S7 anzuheben. Das Löschen dient dazu, die Schwellenspannung der Speicherzellen auf den Datenlöschzustand S0 zu senken.
  • Eine Technik zum Löschen von Speicherzellen in einigen Speichervorrichtungen ist das Vorspannen eines p-Well-Substrats (oder andere Arten von Substraten) auf eine Hochspannung, um einen NAND-Kanal aufzuladen. Eine Löschfreigabespannung wird an die Steuergates von Speicherzellen angelegt, während sich der NAND-Kanal auf Hochspannung befindet, um die nichtflüchtigen Speicherelemente (Speicherzellen) zu löschen. Ein anderer Ansatz zum Löschen von Speicherzellen besteht darin, Gate-induzierten Drain-Leckstrom (GIDL) zu erzeugen, um den NAND-Kettenkanal aufzuladen. An Steuergates der Speicherzellen wird eine Löschfreigabespannung angelegt, während das String-Kanal-Potential aufrechterhalten wird, um die Speicherzellen zu löschen.
  • In einer Ausführungsform wird der GIDL-Strom durch Bewirken einer Drain-zu-Gate-Spannung an einem Auswahltransistor erzeugt. Eine Transistor-Drain-zu-Gate-Spannung, die einen GIDL-Strom erzeugt, wird hierin als eine GIDL-Spannung bezeichnet. Der GIDL-Strom kann entstehen, wenn die Drain-Spannung des Auswahltransistors deutlich höher ist als die Steuergatespannung des Auswahltransistors. Der GIDL-Strom ist ein Ergebnis der Trägererzeugung, d. h. der Elektronenloch-Paarerzeugung aufgrund von Band-zu-Band-Tunneln und/oder fallenunterstützter Erzeugung. In einer Ausführungsform kann der GIDL-Strom dazu führen, dass eine Art von Trägern, z. B. Löcher, sich vorwiegend in den NAND-Kanal bewegen, wodurch das Potential des Kanals angehoben wird. Die anderen Arten von Trägern, z. B. Elektronen, werden aus dem Kanal in Richtung einer Bitleitung oder in Richtung einer Sourceleitung durch ein elektrisches Feld extrahiert. Während des Löschens können die Löcher vom Kanal zu einem Ladungsspeicherbereich von Speicherzellen durchtunneln und dort mit Elektronen rekombinieren, um die Schwellenspannung der Speicherzellen zu senken.
  • Der GIDL-Strom kann an jedem Ende der NAND-Kette erzeugt werden. Eine erste GIDL-Spannung kann zwischen zwei Anschlüssen eines Auswahltransistors (z. B. des drainseitigen Auswahltransistors) erzeugt werden, der mit einer Bitleitung verbunden ist, um einen ersten GIDL-Strom zu erzeugen. Eine zweite GIDL-Spannung kann zwischen zwei Anschlüssen eines Auswahltransistors (z. B. des sourceseitigen Auswahltransistors) erzeugt werden, der mit einer Sourceleitung verbunden ist, um einen zweiten GIDL-Strom zu erzeugen. Das Löschen basierend auf dem GIDL-Strom an nur einem Ende der NAND-Kette wird als einseitiges GIDL-Löschen bezeichnet. Das Löschen basierend auf dem GIDL-Strom an beiden Enden der NAND-Kette wird als zweiseitiges GIDL-Löschen bezeichnet.
  • Wie oben erörtert, stellt 9 das Programmiersignal Vpgm als eine Reihe von Programmierspannungsimpulsen dar. Diese Programmierspannungsimpulse sind ein Beispiel von Dosen der Programmierung, die an eine Vielzahl von nichtflüchtigen Speicherzellen angelegt werden, die in einen Datenzustand programmiert werden. Wie in 8 beschrieben, führt das System die Programmprüfung zwischen den Programmierdosen durch, wie in den 10 und 11 dargestellt. 10, die eine Ausführungsform veranschaulicht, in der Speicherzellen ein Datenbit pro Speicherzelle speichern, stellt zwei der Programmierspannungsimpulse 602 und 604 aus 9 dar. Zwischen den Programmierspannungsimpulsen 602 und 604 liegt der Prüfspannungsimpuls 610. In einer Ausführungsform hat der Prüfspannungsimpuls 610 eine Größe von Vv (siehe 5) und stellt das System dar, das die Programmprüfung (Schritt 574) zwischen den Dosen der Programmierung (aufeinanderfolgende Iterationen von Schritt 572) durchführt.
  • 11, die eine Ausführungsform veranschaulicht, in der Speicherzellen drei Bits pro Speicherzelle speichern, stellt zwei der Programmierspannungsimpulse 602 und 604 aus 9 dar. Zwischen den Programmierspannungsimpulsen 602 und 604 liegen die Prüfspannungsimpulse v1, v2, v3, v4, v5, v6 und v7. In einer Ausführungsform hat der Prüfspannungsimpuls v1 eine Größe von Vv1 (siehe 6), der Prüfspannungsimpuls v2 eine Größe von Vv2, der Prüfspannungsimpuls v3 eine Größe von Vv3, der Prüfspannungsimpuls v4 eine Größe von Vv4, der Prüfspannungsimpuls v5 eine Größe von Vv5, der Prüfspannungsimpuls v6 eine Größe von Vv6 und der Prüfspannungsimpuls v7 eine Größe von Vv7. Die Prüfspannungsimpulse v1, v2, v3, v4, v5, v6 und v7 stellen das System dar, das die Programmprüfung (Schritt 574) zwischen den Dosen der Programmierung (aufeinanderfolgende Iterationen von Schritt 572) durchführt.
  • 12 ist ein Flussdiagramm, das eine Ausführungsform eines Prozesses zur Prüfung der Programmierung von nichtflüchtigem Speicher beschreibt. Das heißt, der Prozess von 12 ist ein Prozess, der während einer beispielhaften Implementierung des Schrittes 574 von 8 für eine Ausführungsform durchgeführt wird, in der Speicherzellen drei Datenbits pro Speicherzelle speichern. Der Prozess von 12 wird unter Verwendung der Wellenformen von 9 und 11 durchgeführt. In Schritt 660 von 12 führt das System die Prüfung für den Datenzustand S1 durch. Zum Beispiel testet das System, ob Speicherzellen, die auf den Datenzustand S1 programmiert werden, Schwellenspannungen aufweisen, die größer als Vv1 sind (z. B. Anlegen des Prüfspannungsimpulses v1 von 11 an die Steuer-Gates von Speicherzellen, die auf den Datenzustand S1 programmiert werden).
  • In Schritt 662 führt das System die Prüfung für den Datenzustand S2 durch. Zum Beispiel testet das System, ob Speicherzellen, die auf den Datenzustand S2 programmiert werden, Schwellenspannungen aufweisen, die größer als Vv2 sind (z. B. Anlegen des Prüfspannungsimpulses v2 von 11 an die Steuer-Gates von Speicherzellen, die auf den Datenzustand S2 programmiert werden).
  • In Schritt 664 führt das System die Prüfung für den Datenzustand S3 durch. Zum Beispiel testet das System, ob Speicherzellen, die auf den Datenzustand S3 programmiert werden, Schwellenspannungen aufweisen, die größer als Vv3 sind (z. B. Anlegen des Prüfspannungsimpulses v3 von 11 an die Steuer-Gates von Speicherzellen, die auf den Datenzustand S3 programmiert werden).
  • In Schritt 666 führt das System die Prüfung für den Datenzustand S4 durch. Zum Beispiel testet das System, ob Speicherzellen, die auf den Datenzustand S4 programmiert werden, Schwellenspannungen aufweisen, die größer als Vv4 sind (z. B. Anlegen des Prüfspannungsimpulses v4 von 11 an die Steuer-Gates von Speicherzellen, die auf den Datenzustand S4 programmiert werden).
  • In Schritt 668 führt das System die Prüfung für den Datenzustand S5 durch. Zum Beispiel testet das System, ob Speicherzellen, die auf den Datenzustand S5 programmiert werden, Schwellenspannungen aufweisen, die größer als Vv5 sind (z. B. Anlegen des Prüfspannungsimpulses v5 von 11 an die Steuer-Gates von Speicherzellen, die auf den Datenzustand S5 programmiert werden).
  • In Schritt 670 führt das System die Prüfung für den Datenzustand S6 durch. Zum Beispiel testet das System, ob Speicherzellen, die auf den Datenzustand S6 programmiert werden, Schwellenspannungen aufweisen, die größer als Vv6 sind (z. B. Anlegen des Prüfspannungsimpulses v6 von 11 an die Steuer-Gates von Speicherzellen, die auf den Datenzustand S6 programmiert werden).
  • In Schritt 672 führt das System die Prüfung für den Datenzustand S7 durch. Zum Beispiel testet das System, ob Speicherzellen, die auf den Datenzustand S7 programmiert werden, Schwellenspannungen aufweisen, die größer als Vv7 sind (z. B. Anlegen des Prüfspannungsimpulses v7 von 11 an die Steuer-Gates von Speicherzellen, die auf den Datenzustand S7 programmiert werden). Es ist zu beachten, dass in einer Ausführungsform die Schritte 660-672 zwischen den Dosen der Programmierung durchgeführt werden (z. B. zwischen den Programmierspannungsimpulsen). In einigen Ausführungsformen können einer oder mehrere der Schritte 660-672 zwischen bestimmten Programmierspannungsimpulsen übersprungen werden. In einer Ausführungsform werden die Schritte 660-672 sequentiell (in beliebiger Reihenfolge oder in der dargestellten Reihenfolge) durchgeführt, während in anderen Ausführungsformen die Schritte 660-672 parallel (z. B. gleichzeitig) durchgeführt werden.
  • Ein Mittel zur Prüfung der Programmierung ist das Leitvermögen an einem bestimmten Vergleichspunkt zu testen (z. B. die Prüfreferenzspannung). Die Speicherzellen, die die Prüfung als ausreichend programmiert befunden hat, werden gesperrt, zum Beispiel durch das Anheben der Bitleitungsspannung von 0 auf Vdd, um den Programmierungsprozess für diese Speicherzellen zu stoppen. Zum Beispiel stellt 13A Diagramme der Schwellenspannung (Vth) in Abhängigkeit von der Zeit und die Bitleitungsspannung (Vbl) in Abhängigkeit von der Zeit dar. Während eine Speicherzelle an ihrem Steuer-Gate die Programmierungsspannung Vpgm von 9 empfängt, erhöht sich die Schwellenspannung der Speicherzelle. Wenn die Schwellenspannung der Speicherzelle die Prüfreferenzspannung Vver (z. B. eine von Vv, Vv1, Vv2, Vv3, Vv4, Vv5, Vv6 und Vv7 von 5 und 6, wie jeweils anwendbar) erreicht, wird die Bitleitungsspannung auf Vinhibit (z. B. Vdd) angehoben.
  • Bei der Programmierung und Prüfung wie in 13A dargestellt, gibt es einen Kompromiss zwischen der Geschwindigkeit der Programmierung und der Präzision der Programmierung. Die Präzision der Programmierung bezieht sich auf die Verteilung der Schwellenspannungen der programmierten Speicherzellen nach dem Programmierungsprozess. Je enger die Schwellenspannungsverteilung ist, desto einfacher ist es, die Speicherzellen eindeutig auszulesen. Die Notwendigkeit enger Schwellenspannungsverteilungen ist bei mehrstufigen Speicherzellen, die mehrere Datenbits speichern, noch wichtiger, da der Leseprozess eindeutig zwischen den verschiedenen Schwellenspannungsverteilungen unterscheiden muss (z. B. für die Datenzustände S1-S7). Um eine enge Schwellenspannungsverteilung zu erhalten, kann eine kleinere Schrittweite für die Programmspannung Vpgm verwendet werden. Die Verwendung einer kleineren Schrittgröße verlangsamt jedoch den Programmierungsprozess.
  • Eine Verbesserung des Programmierungsprozesses ist in 13B dargestellt, was als Grob-/Feinprogrammierungsprozess bezeichnet werden kann. Der Prozess von 13B legt das Programmierspannungssignal Vpgm von 9 an die Steuer-Gates der zu programmierenden Speicherzellen an. Zwischen den Programmierspannungsimpulsen werden Prüfungsvorgänge durchgeführt. Wenn die Schwellenspannung der Speicherzelle, die programmiert wird, kleiner als eine Prüfreferenz-Zwischenspannung Vverl ist, wird die Programmierung für diese Speicherzelle mit einer Bitleitungsspannung (z. B 0 Volt) fortgesetzt, die niedrig bleibt. Dies ist die Grobphase des Grob- /Feinprogrammierungsprozesses, da die Speicherzellen schneller programmieren. Wenn die Schwellenspannung der Speicherzelle, die programmiert wird, höher als die Prüfreferenz-Zwischenspannung Vverl und niedriger als die Prüfreferenz-Endspannung VverF ist, dann wird eine Bitleitungs-Zwischenspannung (z. B 0,5-1,0 Volt) angelegt. Als Ergebnis der Bitleitungs-Zwischenspannung steigt die Kanalspannung für die Speicherzelle an und die Programmierung dieser Speicherzelle wird verlangsamt, da die Verschiebung der Schwellenspannung aufgrund jedes Programmierspannungsimpulses verringert wird. Dies ist die Feinphase des Grob- /Feinprogrammierungsprozesses. Die Bitleitung bleibt bei der Bitleitungs-Zwischenspannung für eine Anzahl von Programmierspannungsimpulsen, bis die Schwellenspannung der Speicherzelle die Prüfreferenz-Endspannung VverF erreicht. Wenn die Schwellenspannung der Speicherzelle die Prüfreferenz-Endspannung VverF erreicht, wird die Bitleitung angehoben, um eine weitere Programmierung zu verhindern (z. B. durch Anheben der Bitleitungsspannung auf Vinhibit (z. B. Vdd, die 1-5 Volt betragen kann). Es ist zu beachten, dass die Prüfreferenz-Endspannung VverF der Prüfreferenzspannung für den Datenzustand entspricht, auf den die Speicherzellen programmiert werden. Zum Beispiel entspricht während des Schrittes 660 (siehe 12) die Prüfreferenz-Endspannung VverF Vv1; während des Schrittes 662 entspricht die Prüfreferenz-Endspannung VverF Vv2; während des Schrittes 664 entspricht die Prüfreferenz-Endspannung VverF Vv3; während des Schrittes 666 entspricht die Prüfreferenz-Endspannung VverF Vv4; während des Schrittes 668 entspricht die Prüfreferenz-Endspannung VverF Vv5; während des Schrittes 670 entspricht die Prüfreferenz-Endspannung VverF Vv6; und während des Schrittes 672 entspricht die Prüfreferenz-Endspannung VverF Vv7. In einer Ausführungsform liegt die Prüfreferenz-Zwischenspannung Vverl für einen Datenzustand 0,25 Volt unter der Prüfreferenz-Endspannung VverF für den Datenzustand. Andere Größen der Trennung zwischen Vverl und VverF für einen Datenzustand können ebenfalls verwendet werden.
  • Die Verwendung des Ansatzes in 13B führt dazu, dass die programmierte Schwellenspannungsverteilung schmaler als der Prozess in 13A ist, weil die Verschiebung der Schwellenspannung pro Programmimpuls verringert wird, sobald die Schwellenspannung nahe am Zielwert liegt (z. B. wenn die Schwellenspannung über Vverl und unter VverF liegt). Der Ansatz von 13B verlangsamt jedoch den Programmierungsprozess, da jeder Datenzustand, der jetzt geprüft wird, zwei Prüfungsvorgänge erfordert. Um die Anzahl der durchgeführten Prüfungsvorgänge zu verringern (und daher den Programmierungsprozess zu beschleunigen), wird ein System zum Überspringen der Prüfung bei VverF für einige Programmierspannungsimpulse und Überspringen der Prüfung bei Vverl für einige Programmierspannungsimpulse vorgeschlagen. Weitere Details sind unten angegeben.
  • 14 zeigt ein Flussdiagramm, das eine Ausführungsform eines Prozesses zur Programmierung und Prüfung der Programmierung eines nichtflüchtigen Speichers beschreibt, der das Überspringen der Prüfung bei VverF (oder eine andere Prüfungsbedingung) für einige Programmierspannungsimpulse (oder andere Dosen der Programmierung) und das Überspringen der Prüfung bei Vverl (oder eine andere Prüfungsbedingung) für einige Programmierspannungsimpulse (oder andere Dosen der Programmierung) einschließt. Der Prozess von 14 wird von der (oben erörtert) Steuerschaltung ausgeführt, die mit einer Vielzahl von nichtflüchtigen Speicherzellen verbunden ist. Zum Beispiel kann der Prozess von 14 in Richtung der Zustandsmaschine 312 (die mit der Speicherstruktur 326 verbunden ist) durchgeführt werden.
  • In Schritt 702 von 14 führt die Steuerschaltung einen Programmierungsprozess durch, der eine Vielzahl von nichtflüchtigen Speicherzellen auf einen ersten Datenzustand programmiert. Zum Beispiel kann der Prozess von 8 dazu verwendet werden, Speicherzellen auf den programmierten Datenzustand P von 5 oder auf einen oder mehrere der Datenzustände S1-S7 von 6 zu programmieren (wobei sich der erste Datenzustand auf einen von S1-S6 beziehen kann). In einigen Ausführungsformen schließt Schritt 702 das Anlegen der Programmierspannungsimpulse von 9 ein. In Schritt 704 führt die Steuerschaltung während des Programmierungsprozesses eine Programmprüfung auf eine erste Prüfungsbedingung für den ersten Datenzustand durch, ohne eine Programmprüfung für eine zweite Prüfungsbedingung für den ersten Datenzustand durchzuführen, bis ein erstes Kriterium erfüllt wird. In einigen Ausführungsformen schließt Schritt 704 die Durchführung von Schritt 574 von 8 ein oder mehrere Male ein. Ein Beispiel für die erste Prüfungsbedingung ist, dass die Speicherzellen, die programmiert werden, eine Schwellenspannung aufweisen, die größer oder gleich der Prüfreferenz-Zwischenspannung Vverl für den ersten Datenzustand ist. Ein Beispiel für die zweite Prüfungsbedingung ist, dass die Speicherzellen, die programmiert werden, eine Schwellenspannung aufweisen, die größer oder gleich der Prüfreferenz-Endspannung VverF für den ersten Datenzustand ist. Daher schließt ein Beispiel von Schritt 704 das Testen ein, ob die Speicherzellen, die auf den ersten Datenzustand programmiert werden, eine Schwellenspannung aufweisen, die größer oder gleich der Prüfreferenz-Zwischenspannung Vverl für den ersten Datenzustand ist, ohne zu prüfen, ob die Speicherzellen, die auf den ersten Datenzustand programmiert werden, eine Schwellenspannung aufweisen, die größer oder gleich der Prüfreferenz-Endspannung VverF für den ersten Datenzustand ist. In Schritt 706 führt die Steuerschaltung die Programmprüfung für die erste Prüfungsbedingung und die zweite Prüfungsbedingung während des Programmierungsprozesses durch, nachdem das erste Kriterium erfüllt wurde und bis ein zweites Kriterium erfüllt wurde. In einigen Ausführungsformen schließt Schritt 706 die Durchführung von Schritt 574 von 8 ein oder mehrere Male ein. In Schritt 708 führt die Steuerschaltung die Programmprüfung für die zweite Prüfungsbedingung durch, ohne die Programmprüfung für die erste Prüfungsbedingung während des Programmierungsprozesses durchzuführen, nachdem das zweite Kriterium erfüllt wurde. In einigen Ausführungsformen schließt Schritt 708 die Durchführung von Schritt 574 von 8 ein oder mehrere Male ein.
  • In einigen beispielhaften Implementierungen wird Schritt 704 als VverF-Überspringungsmodus bezeichnet, weil das System die Prüfung der Prüfreferenz-Endspannung VverF für den ersten Datenzustand überspringt. In einigen beispielhaften Implementierungen wird Schritt 706 als Vverl- und VverF-Modus bezeichnet, weil das System die Prüfung Vverl und VverF für den ersten Datenzustand durchführt. In einigen beispielhaften Implementierungen wird Schritt 708 als Vverl-Überspringungsmodus bezeichnet, weil das System die Prüfung der Prüfreferenz-Zwischenspannung Vverl für den ersten Datenzustand überspringt. Bei der Durchführung des Prozesses von 8 befindet sich jede Iteration der Schleife, die Schritte 572-586 einschließt, in einem von VverF-Überspringungsmodus, Vverl- und VverF-Modus oder Vverl-Überspringungsmodus. Das heißt, jedes Mal, wenn Schritt 574 durchgeführt wird, wird einer der Schritte 704, 706 oder 708 durchgeführt. Es wird ein Beispiel betrachtet, bei dem zwölf Programmierspannungsimpulse zur erfolgreichen Programmierung der Speicherzellen verwendet werden; daher wird die Schleife, die die Schritte 572-586 einschließt, zwölf Mal durchgeführt. Vielleicht (als ein Beispiel) werden die ersten acht Male, die die Schleife durchgeführt wird, die Schritte 572-586 einschließt, im VverF-Überspringungsmodus sein; daher wird Schritt 574, jedes Mal, wenn Schritt 574 während dieser zwölf Schleifen durchgeführt wird, als Schritt 704 von 14 implementiert. Zum Beispiel werden die neunte und zehnte Schleife im Vverl- und VverF-Modus durchgeführt; daher wird jedes Mal, wenn Schritt 574 während dieser beiden Schleifen durchgeführt wird, Schritt 574 als Schritt 706 von 14 implementiert. Als Beispiel sind die elfte und zwölfte Schleife Vverl-Überspringungsmodus; daher wird Schritt 574 jedes Mal, wenn Schritt 574 während der letzten beiden Schleifen durchgeführt wird, als Schritt 708 in 14 implementiert.
  • In einer Ausführungsform, die in 15-17 beschrieben wird, ist das erste Kriterium erfüllt, wenn eine Schwellenanzahl der nichtflüchtigen Speicherzellen die erste Prüfungsbedingung erreicht hat, und das zweite Kriterium ist erfüllt, wenn eine Schwellenanzahl der nichtflüchtigen Speicherzellen die zweite Prüfungsbedingung erreicht hat. 15 zeigt die Schwellwertspannungsverteilung für die Speicherzellen, die im VverF-Überspringungsmodus auf den ersten Datenzustand programmiert werden (wenn das System auf Vverl, aber nicht auf VverF testet). Ein Abschnitt 740 der Schwellenspannungsverteilung stellt Speicherzellen dar, die Schwellenspannungen unter Vverl für den ersten Datenzustand aufweisen. Ein Abschnitt 742 der Schwellenspannungsverteilung stellt Speicherzellen dar, die Schwellenspannungen größer als Vverl für den ersten Datenzustand, aber kleiner als VverF für den ersten Datenzustand aufweisen. Keine Speicherzellen weisen Schwellenspannungen auf, die größer als VverF für den ersten Datenzustand sind. Bei der Durchführung des Prüfungsvorgangs (Testen, ob die Schwellenspannungen größer oder gleich Vverl für den ersten Datenzustand sind), bleiben die Bitleitungen der Speicherzellen, die auf den ersten Datenzustand programmiert werden und eine Schwellenspannung kleiner als Vverl für den ersten Datenzustand aufweisen, auf Vss (z. B. 0 Volt) für den nächsten Programmierspannungsimpuls, und Bitleitungen der Speicherzellen, die auf den ersten Datenzustand programmiert werden und eine Schwellenspannung größer oder gleich Vverl für den ersten Datenzustand aufweisen, werden auf Vint (z. B 0,5 Volt) für den nächsten Programmierspannungsimpuls angehoben. Wenn die Anzahl der Speicherzellen, die eine Schwellenspannung größer oder gleich Vverl für den ersten Datenzustand aufweisen, größer als eine erste vorbestimmte Anzahl ist, dann geht der Satz von Speicherzellen, die auf den ersten Datenzustand programmiert werden, in den Vverl- und VverF-Modus über. In einem Beispiel beträgt die erste vorbestimmte Anzahl 0,02 % aller Speicherzellen, die programmiert werden, 0,2 % der Speicherzellen, die auf den ersten Datenzustand programmiert werden, oder eine andere Anzahl von Speicherzellen.
  • 16 zeigt die Schwellwertspannungsverteilung für die Speicherzellen, die im Vverl- und VverF-Modus auf den ersten Datenzustand programmiert werden (wenn das System auf Vverl und auf VverF testet). Ein Abschnitt 762 der Schwellenspannungsverteilung stellt Speicherzellen dar, die Schwellenspannungen unter Vverl für den ersten Datenzustand aufweisen. Ein Abschnitt 764 der Schwellenspannungsverteilung stellt Speicherzellen dar, die Schwellenspannungen größer als Vverl für den ersten Datenzustand, aber kleiner als VverF für den ersten Datenzustand aufweisen. Ein Abschnitt 766 der Schwellenspannungsverteilung stellt Speicherzellen dar, die Schwellenspannungen größer als VverF für den ersten Datenzustand aufweisen. Bei der Durchführung des Prüfungsvorgangs bleiben die Bitleitungen der Speicherzellen, die auf den ersten Datenzustand programmiert werden, die eine Schwellenspannung kleiner als Vverl für den ersten Datenzustand aufweisen, auf Vss (z. B. 0 Volt) für den nächsten Programmierspannungsimpuls und), die Bitleitungen der Speicherzellen, die auf den ersten Datenzustand programmiert werden, die eine Schwellenspannung größer oder gleich Vverl für den ersten Datenzustand aufweisen, auf Vint (z. B. 0,5 - 1,0 Volt) für den nächsten Programmierspannungsimpuls angehoben, und die Bitleitungen der Speicherzellen, die auf den ersten Datenzustand programmiert werden, die eine Schwellenspannung größer oder gleich VverF für den ersten Datenzustand aufweisen, auf Vinhibit (z. B. 1,0 - 5,0 Volt) für den nächsten Programmierspannungsimpuls angehoben. Wenn die Anzahl der Speicherzellen, die eine Schwellenspannung größer oder gleich VverF für den ersten Datenzustand aufweisen, größer als eine zweite vorbestimmte Anzahl ist, dann geht der Satz von Speicherzellen, die auf den ersten Datenzustand programmiert werden, in den Vverl-Überspringungsmodus über. In einem Beispiel beträgt die zweite vorbestimmte Anzahl 0,02 % aller Speicherzellen, die programmiert werden, 0,2 % der Speicherzellen, die auf den ersten Datenzustand programmiert werden, oder eine andere Anzahl von Speicherzellen.
  • In einigen Ausführungsformen schließt das Testen auf Schwellenspannungen größer oder gleich Vverl das Anlegen eines ersten Spannungsimpulses an Vverl ein, und das Testen auf Schwellenspannungen größer oder gleich VverF schließt das Anlegen eines zweiten Spannungsimpulses an VverF ein. In anderen Ausführungsformen kann das System auf Vverl und VverF mit einem Spannungsimpuls, jedoch unter Verwendung von zwei unterschiedlichen Abtastzeiten testen. Zum Beispiel kann das System einen Spannungsimpuls anlegen, abtasten, ob sich die Speicherzellen nach 0,7 Mikrosekunden für Vverl eingeschaltet haben, und abtasten, ob sich die Speicherzellen nach 1,4 Mikrosekunden für VverF eingeschaltet haben.
  • 17 zeigt die Schwellwertspannungsverteilung für die Speicherzellen, die im Vverl-Überspringungsmodus auf den ersten Datenzustand programmiert werden (wenn das System auf VverF, aber nicht auf Vverl testet). Ein Abschnitt 774 der Schwellenspannungsverteilung stellt Speicherzellen dar, die Schwellenspannungen größer als Vverl für den ersten Datenzustand, aber kleiner als VverF für den ersten Datenzustand aufweisen. Ein Abschnitt 776 der Schwellenspannungsverteilung stellt Speicherzellen dar, die Schwellenspannungen größer als VverF für den ersten Datenzustand aufweisen. In einigen Ausführungsformen ist es möglich, im Vverl-Überspringungsmodus zu sein und einige Speicherzellen mit Schwellenspannungen unter Vverl zu haben. Bei der Durchführung des Prüfungsvorgangs werden die Bitleitungen der Speicherzellen, die auf den ersten Datenzustand programmiert werden, die eine Schwellenspannung größer oder gleich Vverl für den ersten Datenzustand und kleiner als VverF für den ersten Datenzustand aufweisen, für den nächsten Programmierspannungsimpuls auf Vint angehoben, und die Bitleitungen der Speicherzellen, die auf den ersten Datenzustand programmiert werden und eine Schwellenspannung größer oder gleich VverF für den ersten Datenzustand aufweisen, für den nächsten Programmierspannungsimpuls auf Vinhibit angehoben.
  • 18 stellt ein Flussdiagramm dar, das eine Ausführungsform eines Prozesses beschreibt, der während der Prüfung der Programmierung eines nichtflüchtigen Speichers durchgeführt wird. Der Prozess von 18 wird von der (oben erörtert) Steuerschaltung ausgeführt, die mit einer Vielzahl von nichtflüchtigen Speicherzellen verbunden ist. Zum Beispiel kann der Prozess von 18 in Richtung der Zustandsmaschine 312 (die mit der Speicherstruktur 326 verbunden ist) durchgeführt werden. In einer Ausführungsform wird der Prozess von 18 während des Schrittes 574 von 8 so durchgeführt, dass während jeder Iteration von Schritt 574 der Prozess von 18 einmal für jeden Datenzustand (oder einmal für jeden eines Teilsatzes von Datenzuständen) durchgeführt wird, auf den die Speicherzellen programmiert werden. Zum Beispiel kann der Prozess von 18 während jedes der Schritte 660-672 von 12 durchgeführt werden. Daher weist der Prozess von 18 die Durchführung einer Programmprüfung zwischen den Dosen der Programmierung (z. B. sind ein Beispiel für die Dosen der Programmierung die Programmierspannungsimpulse von 9) auf, wobei die Dosen der Programmierung während jeder Iteration von Schritt 572 von 8 angewendet werden.
  • Wie oben erwähnt, kann das System in einer Ausführungsform in mindestens drei Prüfungsmodi arbeiten: VverF-Überspringungsmodus, Vverl- und VverF-Modus und Vverl-Überspringungsmodus. Schritt 802 von 18 schließt die Bestimmung ein, in welchem dieser drei Prüfungsmodi sich das System für den bestimmten Datenzustand, der geprüft wird, aktuell befindet. Wenn sich das System für den bestimmten Datenzustand, der geprüft wird, aktuell im VverF-Überspringungsmodus befindet, wird der Prozess bei Schritt 804 fortgesetzt, der die Prüfung der Vielzahl von nichtflüchtigen Speicherzellen für eine erste Prüfungsbedingung (z. B. Vverl) für den ersten Datenzustand einschließt, während die Prüfung der Vielzahl von nichtflüchtigen Speicherzellen für eine zweite Prüfungsbedingung (z. B. VverF) für den ersten Datenzustand übersprungen wird. In Schritt 806 bleiben die Bitleitungsspannungen der Speicherzellen, die eine Schwellenspannung (Vt) nicht größer als Vverl aufweisen, für die nächste Dosis der Programmierung auf Vsel (z. B 0 Volt). In Schritt 808 werden die Bitleitungsspannungen der Speicherzellen, die eine Schwellenspannung größer als Vverl aufweisen, auf Vint angehoben, um die Programmierung für diese Speicherzellen für die nächste Dosis der Programmierung zu verlangsamen.
  • In Schritt 810 bestimmt das System, ob das erste Kriterium erfüllt wird. In einer Ausführungsform bestimmt das System, ob eine Menge von Speicherzellen, die die erste Prüfungsbedingung erfüllt haben, das erste Kriterium erfüllt; zum Beispiel, ob die Anzahl der Speicherzellen, die eine Schwellenspannung größer als Vverl aufweisen, größer ist als die erste vorbestimmte Anzahl (wie oben beschrieben). Das heißt, in einer beispielhaften Implementierung ist das erste Kriterium erfüllt, wenn eine Schwellenanzahl der Vielzahl von nichtflüchtigen Speicherzellen die erste Prüfungsbedingung erreicht hat. Wenn das erste Kriterium nicht erfüllt wird, bleibt das System in Schritt 812 im VverF-Überspringungsmodus für den bestimmten Datenzustand, der während der nächsten Dosis der Programmierung geprüft wird. Wenn das erste Kriterium erfüllt wird, wechselt das System in Schritt 814 in den Vverl- und VverF-Modus für den bestimmten Datenzustand, der während der nächsten Dosis der Programmierung geprüft wird.
  • Wenn sich das System (in Schritt 802) aktuell im Vverl- und VverF-Modus für den bestimmten Datenzustand, der geprüft wird, befindet, wird der Prozess bei Schritt 820 fortgesetzt, der (z. B. als Reaktion auf das Bestimmen, dass eine Menge von Speicherzellen, die die erste Prüfungsbedingung erfüllt haben, das erste Kriterium erfüllt) die Prüfung der Vielzahl von nichtflüchtigen Speicherzellen für die erste Prüfungsbedingung (z. B. Vverl) für den Datenzustand und die Prüfung der Vielzahl von nichtflüchtigen Speicherzellen für die zweite Prüfungsbedingung (z. B. VverF) für den bestimmten Datenzustand, der geprüft wird, einschließt. In Schritt 822 bleiben die Bitleitungsspannungen der Speicherzellen, die eine Schwellenspannung nicht größer als Vverl aufweisen, für die nächste Dosis der Programmierung auf Vsel. In Schritt 824 werden die Bitleitungsspannungen der Speicherzellen, die eine Schwellenspannung größer als die erste Prüfungsbedingung (z. B. Vverl) aufweisen, auf Vint angehoben, um die Programmierung für diese Speicherzellen für die nächste Dosis der Programmierung zu verlangsamen. In Schritt 826 werden die Bitleitungsspannungen der Speicherzellen, die eine Schwellenspannung größer als die zweite Prüfungsbedingung (z. B. VverF) aufweisen, auf Vinhibit angehoben, um die Programmierung für diese Speicherzellen zu stoppen. In Schritt 828 bestimmt das System, ob das zweite Kriterium erfüllt wird. Wenn das zweite Kriterium nicht erfüllt wird, bleibt das System in Schritt 830 im Vverl- und VverF-Modus für den bestimmten Datenzustand, der während der nächsten Dosis der Programmierung geprüft wird. Wenn das zweite Kriterium erfüllt wird, wechselt das System in Schritt 832 in den Vverl-Überspringungsmodus für den bestimmten Datenzustand, der während der nächsten Dosis der Programmierung geprüft wird.
  • Wenn sich das System (in Schritt 802) aktuell im Vverl-Überspringungsmodus für den bestimmten Datenzustand, der geprüft wird, befindet, wird der Prozess bei Schritt 850 fortgesetzt, der (z. B. als Reaktion auf das Bestimmen, dass das zweite Kriterium erfüllt wird) die Prüfung der Vielzahl von nichtflüchtigen Speicherzellen für die zweite Prüfungsbedingung (z. B. VverF) für den bestimmten Datenzustand, der geprüft wird, einschließt, während die Prüfung der Vielzahl von nichtflüchtigen Speicherzellen für die erste Prüfungsbedingung (z. B. Vverl) für den bestimmten Datenzustand, der geprüft wird, übersprungen wird. In Schritt 852 werden die Bitleitungsspannungen der Speicherzellen, die eine Schwellenspannung nicht größer als die zweite Prüfungsbedingung (z. B. VverF) aufweisen, auf Vint gesetzt, um die Programmierung für diese Speicherzellen für die nächste Dosis der Programmierung zu verlangsamen. In Schritt 854 werden die Bitleitungsspannungen der Speicherzellen, die eine Schwellenspannung größer als die zweite Prüfungsbedingung (z. B. VverF) aufweisen, auf Vinhibit angehoben, um die Programmierung für diese Speicherzellen zu stoppen.
  • Es gibt viele verschiedene Tests, die verwendet werden können, um zu bestimmen, ob die zweiten Kriterien erfüllt werden (Schritt 828). In einigen Ausführungsformen ist das zweite Kriterium anders als die Menge der Vielzahl von Speicherzellen, die die erste Prüfungsbedingung (z. B. Vverl) erreichen. In einer Ausführungsform ist das zweite Kriterium erfüllt, wenn eine Schwellenanzahl der Vielzahl von nichtflüchtigen Speicherzellen die zweite Prüfungsbedingung (z. B. VverF) erreicht hat. Wie oben erwähnt, ist in einer beispielhaften Implementierung das zweite Kriterium erfüllt, wenn 0,02 % aller Speicherzellen, die auf diesen bestimmten Zustand programmiert werden, die zweite Prüfungsbedingung (z. B. VverF) erreicht haben. In einer anderen Ausführungsform ist das zweite Kriterium erfüllt, nachdem eine vorbestimmte Anzahl von Dosen der Programmierung auf die Vielzahl der nichtflüchtigen Speicher angewendet wurde, nachdem das erste Kriterium erfüllt wird. Zum Beispiel kann ein Vorrichtungsparameter für den Speicherrohchip so eingestellt werden, dass er eine Anzahl von Programmierspannungsimpulsen angibt, die im Vverl- und VverF-Modus angelegt werden, sodass, nachdem diese angegebene Anzahl von Programmierspannungsimpulsen während des Vverl- und VverF-Modus angelegt wurde, das System automatisch in den Vverl-Überspringungsmodus wechselt. Ein Beispiel eines Vorrichtungsparameters, der verwendet werden kann, um die Anzahl der Programmierspannungsimpulse anzugeben, die im Vverl- und VverF-Modus angelegt werden, ist der Überspringungsparameter SP (siehe 2). Der Überspringungsparameter SP kann zum Zeitpunkt der Herstellung oder von einem Anwender vor Ort eingestellt werden.
  • In einer anderen Ausführungsform wird das zweite Kriterium basierend auf der Leistung von Speicherzellen erfüllt, die auf einen anderen Datenzustand programmiert werden als der bestimmte Datenzustand, der überprüft wird. In dieser Ausführungsform speichern die Speicherzellen mehrere Datenbits pro Speicherzelle. Die Steuerschaltungen sind so eingerichtet, dass sie einen ausgewählten Satz nichtflüchtiger Speicherzellen auf mehrere Datenzustände programmieren. Die Vielzahl von nichtflüchtigen Speicherzellen, die auf den bestimmten Datenzustand, der geprüft wird, programmiert werden, sind ein erster Teilsatz des ausgewählten Satzes von nichtflüchtigen Speicherzellen, die programmiert werden. Die Steuerschaltung ist so eingerichtet, dass sie einen zweiten Teilsatz des ausgewählten Satzes nichtflüchtiger Speicherzellen auf einen zweiten Datenzustand programmiert. In dieser Ausführungsform wird das zweite Kriterium erfüllt, wenn eine minimale Anzahl des zweiten Teilsatzes des ausgewählten Satzes nichtflüchtiger Speicherzellen einen Zielpegel für den zweiten Datenzustand erreicht hat. Ein Beispiel für diese Bedingung ist in 19 dargestellt, die zwei Schwellenspannungsverteilungen 912 und 914 zeigt. Die Schwellenspannungsverteilung 912 ist für Speicherzellen, die auf einen ersten Datenzustand (Zustand N) programmiert werden, und kann den bestimmten Datenzustand darstellen, der im Prozess von 18 geprüft wird. Die Schwellenspannungsverteilung 914 ist für Speicherzellen, die auf einen zweiten Datenzustand (Zustand N+1) programmiert werden. In einer Ausführungsform ist der zweite Datenzustand benachbart zu dem ersten Datenzustand und weist höhere Schwellenspannungen auf (z. B. ist der erste Datenzustand der Zustand S4 und der zweite Datenzustand S5 - siehe 6). 19 stellt dar, wie jeder Datenzustand seine eigene erste Prüfungsbedingung (z. B. Vverl) und seine eigene zweite Prüfungsbedingung (z. B. VverF) aufweist. Zum Beispiel weist der Datenzustand N (das Ziel der Schwellenspannungsverteilung 912) den Vverl-Zustand N und den VverF-Zustand N auf, während der Datenzustand N+1 (das Ziel der Schwellenspannungsverteilung 914) den Vverl-Zustand N+1 und den VverF-Zustand N+1 aufweist. In dieser Ausführungsform wird das zweite Kriterium für die Speicherzellen der Schwellenspannungsverteilung 912 erfüllt, wenn eine minimale Anzahl der Speicherzellen der Schwellenspannungsverteilung 914 den Vverl-Zustand N+1 erreicht hat. Diese minimale Anzahl der Speicherzellen der Schwellenspannungsverteilung 914, die den Vverl-Zustand N+1 erreicht haben, ist in 19 durch den Bereich 920 der Schwellenspannungsverteilung 914 dargestellt und kann (in einem Beispiel) 0,02 % aller programmierten Speicherzellen (oder eine andere Menge) betragen.
  • Die obige Beschreibung führt ein System zur Verringerung der Zeit ein, die für die Prüfung der Programmierung erforderlich ist. Dadurch wird der Programmierungsprozess schneller abgeschlossen.
  • Eine Ausführungsform schließt eine nichtflüchtige Speichereinrichtung ein, die eine Vielzahl von nichtflüchtigen Speicherzellen und eine Steuerschaltung, die mit den nichtflüchtigen Speicherzellen verbunden ist, aufweist. Die Steuerschaltung ist so eingerichtet, dass sie einen Programmierungsprozess durchführt, der die nichtflüchtigen Speicherzellen in einen ersten Datenzustand programmiert, eine Programmprüfung für eine erste Prüfungsbedingung für den ersten Datenzustand durchführt, ohne eine Programmprüfung für eine zweite Prüfungsbedingung für den ersten Datenzustand während des Programmierungsprozesses durchzuführen, bis ein erstes Kriterium erfüllt wird, eine Programmprüfung für die erste Prüfungsbedingung und die zweite Prüfungsbedingung während des Programmierungsprozesses durchführt, nachdem das erste Kriterium erfüllt wurde und bis ein zweites Kriterium erfüllt wurde, und eine Programmprüfung für die zweite Prüfungsbedingung durchführt, ohne eine Programmprüfung für die erste Prüfungsbedingung während des Programmierungsprozesses durchzuführen, nachdem das zweite Kriterium erfüllt wurde.
  • Eine Ausführungsform schließt ein Verfahren zur Programmierung nichtflüchtiger Speicher ein, aufweisend: Anwendung von Dosen der Programmierung auf eine Vielzahl von nichtflüchtigen Speicherzellen, die auf einen ersten Datenzustand programmiert werden, und Durchführung einer Programmprüfung zwischen den Dosen der Programmierung. Die Durchführung der Programmprüfung weist auf: Prüfung der Vielzahl von nichtflüchtigen Speicherzellen für eine erste Prüfungsbedingung für den ersten Datenzustand, während die Prüfung der Vielzahl von nichtflüchtigen Speicherzellen für eine zweite Prüfungsbedingung für den ersten Datenzustand übersprungen wird, Bestimmen, dass eine Menge von Speicherzellen, die die erste Prüfungsbedingung erfüllt haben, ein erstes Kriterium erfüllt, als Reaktion auf das Bestimmen, dass eine Menge von Speicherzellen, die die erste Prüfungsbedingung erfüllt haben, das erste Kriterium erfüllt, Prüfung der Vielzahl von nichtflüchtigen Speicherzellen für die erste Prüfungsbedingung für den Datenzustand und Prüfung der Vielzahl von nichtflüchtigen Speicherzellen für die zweite Prüfungsbedingung für den Datenzustand, Bestimmen, dass das zweite Kriterium erfüllt wird, und als Reaktion auf das Bestimmen, dass eine Menge von Speicherzellen das zweite Kriterium erfüllt, Prüfung der Vielzahl von nichtflüchtigen Speicherzellen für die zweite Prüfungsbedingung für den Datenzustand, während die Prüfung der Vielzahl von nichtflüchtigen Speicherzellen für die erste Prüfungsbedingung für den Datenzustand übersprungen wird.
  • In einer beispielhaften Implementierung weisen die Dosen der Programmierung aus eine Reihe von Programmierspannungsimpulsen auf, deren Größe sich von Impuls zu Impuls erhöht; die erste Prüfungsbedingung ist eine Prüfreferenz-Zwischenspannung für den ersten Datenzustand; und die zweite Prüfungsbedingung ist eine Prüfreferenz-Endspannung für den ersten Datenzustand.
  • Eine Ausführungsform schließt eine nichtflüchtige Speichereinrichtung mit einem dreidimensionalen Array nichtflüchtiger Speicherzellen ein; Mittel zur Programmierung der Speicherzellen durch Anlegen einer Reihe von Programmierspannungsimpulsen an die Speicherzellen; und Mittel zur Prüfung der Programmierung zwischen Programmierspannungsimpulsen durch Testen, ob nichtflüchtige Speicherzellen eine Prüfreferenz-Zwischenspannung für einen Datenzustand erreicht haben, ohne zu testen, ob nichtflüchtige Speicherzellen eine Prüfreferenz-Endspannung für den Datenzustand erreicht haben, bis mehr als eine vorbestimmte Anzahl von Speicherzellen die Prüfreferenz-Zwischenspannung für den Datenzustand erreicht hat, Testen, ob nichtflüchtige Speicherzellen die Prüfreferenz-Zwischenspannung erreicht haben, und Testen, ob nichtflüchtige Speicherzellen die Prüfreferenz-Endspannung erreicht haben, nachdem die vorbestimmte Anzahl von Speicherzellen die Prüfreferenz-Zwischenspannung erreicht hat und bis ein Testkriterium erfüllt wird, sodass das Testkriterium anders ist als eine andere Anzahl von Speicherzellen, die die Prüfreferenz-Zwischenspannung erreichen, und Testen, ob nichtflüchtige Speicherzellen die Prüfreferenz-Endspannung erreicht haben, ohne zu testen, ob nichtflüchtige Speicherzellen die Prüfreferenz-Zwischenspannung für den Datenzustand erreicht haben, nachdem das Testkriterium erfüllt wurde.
  • Für die Zwecke dieses Dokuments können die Mittel zur Programmierung durch einen Mikroprozessor, einen Mikrocontroller, eine Zustandsmaschine, ein FPGA oder eine andere Art von Prozessor in Kombination mit Decodierern, Abtastverstärkern, Spannungs- und Stromquellen und anderer Steuerlogik implementiert werden, die die Prozesse von 5, 6, 8, 13A, 13B, und/oder 14 durchführen (Schritt 702). Zum Beispiel können die Mittel zur Programmierung Steuerschaltung 310, Decodierern 324/332 und Lese-/Schreibschaltungen 328 von 2 aufweisen, die die Prozesse von 5, 6, 8, 13A, 13B und/oder 14 ausführen (Schritt 702). In einigen Ausführungsformen können die Mittel zur Programmierung Steuerung 120 aufweisen, die die Prozesse von 5, 6, 8, 13A, 13B und/oder 14 (Schritt 702) mit oder ohne Unterstützung von den Schaltungen auf dem Speicherrohchip (z. B. Speicherrohchip 300 in 2) durchführt. In einigen Ausführungsformen können die Mittel zur Programmierung Steuerung 120, Steuerschaltung 310, Decodierer 324/332 und Lese-/Schreibschaltungen 328 aufweisen, die die Prozesse von 5, 6, 8, 13A, 13B und/oder 14 (Schritt 702) ausführen.
  • Für die Zwecke dieses Dokuments können die Mittel zur Prüfung durch einen Mikroprozessor, einen Mikrocontroller, eine Zustandsmaschine, ein FPGA oder eine andere Art von Prozessor in Kombination mit Decodierern, Abtastverstärkern, Spannungs- und Stromquellen und anderer Steuerlogik implementiert werden, die die Prozesse von 5, 6, 8, 13A, 13B und/oder 14 durchführen (Schritt 702). Zum Beispiel können die Mittel zur Prüfung Steuerschaltung 310, Decodierer 324/332 und Lese-/Schreibschaltungen 328 von 2 aufweisen, die die Prozesse von 8 (Schritt 574), 12, 13A, 13B, 14, 18 und/oder 19 durchführen. In einigen Ausführungsformen können die Mittel zur Prüfung Steuerung 120 aufweisen, die Prozesse von 8 (Schritt 574), 12, 13A, 13B, 14, 18 und/oder 19 mit oder ohne Unterstützung durch die Schaltungen auf dem Speicherrohchip (z. B. Speicherrohchip 300 von 2) durchführt. In einigen Ausführungsformen können die Mittel zur Prüfung Steuerung 120, Steuerschaltung 310, Decodierer 324/332 und Lese-/Schreibschaltungen 328 aufweisen, die die Prozesse von 8 (Schritt 574), 12, 13A, 13B, 14, 18 und/oder 19 durchführen.
  • Für die Zwecke dieses Dokuments kann eine Bezugnahme in der Beschreibung auf „eine Ausführungsform“, „einige Ausführungsformen“ oder „eine andere Ausführungsform“ verwendet werden, um verschiedene Ausführungsformen oder dieselbe Ausführungsform zu beschreiben.
  • Für die Zwecke dieses Dokuments kann eine Verbindung eine direkte Verbindung oder eine indirekte Verbindung sein (z. B. über einen oder mehrere andere Teile). In einigen Fällen, wenn ein Element als mit einem anderen Element verbunden oder gekoppelt bezeichnet wird, kann das Element direkt mit dem anderen Element verbunden sein oder indirekt über zwischenliegende Elemente mit dem anderen Element verbunden sein. Wenn ein Element als direkt mit einem anderen Element verbunden bezeichnet wird, gibt es keine Zwischenelemente zwischen dem Element und dem anderen Element. Zwei Vorrichtungen sind „in Kommunikation“, wenn sie direkt oder indirekt miteinander verbunden sind, sodass sie elektronische Signale untereinander übertragen können.
  • Für die Zwecke dieses Dokumentes kann der Begriff „basierend auf“ als „mindestens teilweise basierend auf“ gelesen werden.
  • Für die Zwecke dieses Dokuments impliziert ohne zusätzlichen Kontext die Verwendung numerischer Ausdrücke, wie ein „erstes“ Objekt, ein „zweites“ Objekt und ein „drittes“ Objekt möglicherweise keine Sortierung von Objekten, sondern kann stattdessen zu Identifikationszwecken verwendet werden, um verschiedene Objekte zu identifizieren.
  • Für die Zwecke dieses Dokuments kann sich der Ausdruck „Satz“ von Objekten auf einen „Satz“ von einem oder mehreren der Objekte beziehen.
  • Die vorhergehende detaillierte Beschreibung wurde zu Zwecken der Veranschaulichung und Beschreibung vorgelegt. Sie soll nicht erschöpfend sein oder die genaue offenbarte Form beschränken. Viele Modifikationen und Variationen sind unter Berücksichtigung der vorstehend genannten Lehre möglich. Die beschriebenen Ausführungsformen wurden gewählt, um die Prinzipien der vorgeschlagenen Technologie und ihre praktische Anwendung am besten zu erläutern und damit anderen Fachleuten die Möglichkeit zu geben, sie in verschiedenen Ausführungsformen und mit verschiedenen Modifikationen, die für die jeweilige vorgesehene Verwendung geeignet sind, am besten zu nutzen. Es ist beabsichtigt, dass der Umfang durch die hier beigefügten Ansprüche definiert wird.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 9721662 [0015]
    • US 9082502 [0016]
  • Zitierte Nicht-Patentliteratur
    • R. G. Gallager, „Low-density parity-check codes“, Inform. Theory, Band IT 8, S. 21 28, Januar 1962 [0061]
    • D. MacKay, Information Theory, Inference and Learning Algorithms, Cambridge University Press 2003, Kapitel 47 [0061]

Claims (20)

  1. Nichtflüchtige Speichereinrichtung, aufweisend: eine Vielzahl von nichtflüchtigen Speicherzellen; und eine Steuerschaltung, die mit den nichtflüchtigen Speicherzellen verbunden ist, wobei die Steuerschaltung eingerichtet ist zur: Durchführung eines Programmierungsprozesses, der die nichtflüchtigen Speicherzellen auf einen ersten Datenzustand programmiert, Durchführung während des Programmierungsprozesses einer Programmprüfung auf eine erste Prüfungsbedingung für den ersten Datenzustand, ohne eine Programmprüfung für eine zweite Prüfungsbedingung für den ersten Datenzustand durchzuführen, bis ein erstes Kriterium erfüllt wird, Durchführung der Programmprüfung für die erste Prüfungsbedingung und die zweite Prüfungsbedingung während des Programmierungsprozesses, nachdem das erste Kriterium erfüllt wurde und bis ein zweites Kriterium erfüllt wurde, und Durchführung der Programmprüfung für die zweite Prüfungsbedingung, ohne die Programmprüfung für die erste Prüfungsbedingung während des Programmierungsprozesses durchzuführen, nachdem das zweite Kriterium erfüllt wurde.
  2. Nichtflüchtige Speichereinrichtung gemäß Anspruch 1, wobei: das zweite Kriterium erfüllt wird, wenn eine Schwellenanzahl der Vielzahl von nichtflüchtigen Speicherzellen die zweite Prüfungsbedingung erreicht hat.
  3. Nichtflüchtige Speichereinrichtung gemäß Anspruch 1, wobei: die Steuerschaltung so eingerichtet ist, dass sie die Vielzahl von nichtflüchtigen Speicherzellen durch das Anwenden von Dosen der Programmierung auf die Vielzahl der nichtflüchtigen Speicher programmiert; und das zweite Kriterium erfüllt wird, nachdem eine vorbestimmte Anzahl von Dosen der Programmierung auf die Vielzahl der nichtflüchtigen Speicher angewendet wurde, nachdem das erste Kriterium erfüllt wird.
  4. Nichtflüchtige Speichereinrichtung gemäß Anspruch 1, wobei: die Steuerschaltung so eingerichtet ist, dass sie einen ausgewählten Satz nichtflüchtiger Speicherzellen auf mehrere Datenzustände programmiert, sodass jede nichtflüchtige Speicherzelle des Satzes nichtflüchtiger Speicherzellen mehrere Datenbits speichert; die Vielzahl von nichtflüchtigen Speicherzellen ein erster Teilsatz des ausgewählten Satzes von nichtflüchtigen Speicherzellen ist; die Steuerschaltung so eingerichtet ist, dass sie einen zweiten Teilsatz des ausgewählten Satzes nichtflüchtiger Speicherzellen auf einen zweiten Datenzustand programmiert; und das zweite Kriterium erfüllt wird, wenn eine minimale Anzahl des zweiten Teilsatzes des ausgewählten Satzes nichtflüchtiger Speicherzellen einen Zielpegel für den zweiten Datenzustand erreicht hat.
  5. Nichtflüchtige Speichereinrichtung gemäß Anspruch 1, wobei: das zweite Kriterium anders ist als eine Menge der Vielzahl von Speicherzellen, die die erste Prüfungsbedingung erreicht.
  6. Nichtflüchtige Speichereinrichtung gemäß Anspruch 1, wobei: das erste Kriterium erfüllt wird, wenn eine Schwellenanzahl der Vielzahl von nichtflüchtigen Speicherzellen die erste Prüfungsbedingung erreicht hat.
  7. Nichtflüchtige Speichereinrichtung gemäß Anspruch 1, wobei: die Steuerschaltung so eingerichtet ist, dass sie die Vielzahl von nichtflüchtigen Speicherzellen durch das Anlegen an die Vielzahl von nichtflüchtigen Speicherzellen von Reihen von Programmierspannungsimpulsen, deren Größe sich von Impuls zu Impuls erhöht, programmiert.
  8. Nichtflüchtige Speichereinrichtung gemäß Anspruch 7, wobei: die Steuerschaltung so eingerichtet ist, dass sie die Programmprüfung zwischen den Programmierspannungsimpulsen durchführt.
  9. Nichtflüchtige Speichereinrichtung gemäß Anspruch 1, wobei: die Steuerschaltung so eingerichtet ist, dass sie die Programmprüfung für die erste Prüfungsbedingung durch das Testen, ob die Schwellenspannungen der Vielzahl von nichtflüchtigen Speicherzellen bei einer ersten Prüfreferenzspannung liegen, durchführt; und die Steuerschaltung so eingerichtet ist, dass sie die Programmprüfung für die zweite Prüfungsbedingung durch das Testen, ob die Schwellenspannungen der Vielzahl von nichtflüchtigen Speicherzellen bei einer zweiten Prüfreferenzspannung liegen, durchführt.
  10. Nichtflüchtige Speichereinrichtung gemäß Anspruch 9, wobei: die erste Prüfreferenzspannung eine Prüfreferenz-Zwischenspannung ist; und die zweite Prüfreferenzspannung eine Prüfreferenz-Endspannung ist.
  11. Nichtflüchtige Speichereinrichtung gemäß Anspruch 9, wobei: die Steuerschaltung so eingerichtet ist, dass sie während des Programmierungsprozesses die Programmierung von Speicherzellen der Vielzahl von Speicherzellen verlangsamt, die Schwellenspannungen größer als die erste Prüfreferenzspannung und kleiner als die Prüfreferenzspannung aufweisen; und die Steuerschaltung so eingerichtet ist, dass sie während des Programmierungsprozesses die Programmierung von Speicherzellen der Vielzahl von Speicherzellen sperrt, die Schwellenspannungen größer als die zweite Prüfungsreferenzspannung aufweisen.
  12. Nichtflüchtige Speichereinrichtung gemäß Anspruch 1, wobei: die Vielzahl von nichtflüchtigen Speicherzellen eine dreidimensionale NAND-Kette aufweist.
  13. Verfahren zur Programmierung eines nichtflüchtigen Speichers, aufweisend: Anwenden von Dosen der Programmierung auf eine Vielzahl von nichtflüchtigen Speicherzellen, die auf einen ersten Datenzustand programmiert werden; und Durchführung einer Programmprüfung zwischen den Dosen der Programmierung, wobei die Durchführung der Programmprüfung aufweist: Prüfung der Vielzahl von nichtflüchtigen Speicherzellen für eine erste Prüfungsbedingung für den ersten Datenzustand, während die Prüfung der Vielzahl von nichtflüchtigen Speicherzellen für eine zweite Prüfungsbedingung für den ersten Datenzustand übersprungen wird, Bestimmung, dass eine Menge von Speicherzellen, die die erste Prüfungsbedingung erfüllt haben, ein erstes Kriterium erfüllt, als Reaktion auf das Bestimmen, dass eine Menge von Speicherzellen, die die erste Prüfungsbedingung erfüllt haben, das erste Kriterium erfüllt, Prüfung der Vielzahl von nichtflüchtigen Speicherzellen für die erste Prüfungsbedingung für den Datenzustand und Prüfung der Vielzahl von nichtflüchtigen Speicherzellen für die zweite Prüfungsbedingung für den Datenzustand, Bestimmen, dass das zweite Kriterium erfüllt ist, und als Reaktion auf das Bestimmen, dass eine Menge von Speicherzellen das zweite Kriterium erfüllt, Prüfung der Vielzahl von nichtflüchtigen Speicherzellen für die zweite Prüfungsbedingung für den Datenzustand, während die Prüfung der Vielzahl von nichtflüchtigen Speicherzellen für die erste Prüfungsbedingung für den Datenzustand übersprungen wird.
  14. Verfahren gemäß Anspruch 13, wobei: das zweite Kriterium erfüllt ist, wenn eine Schwellenanzahl der Vielzahl von nichtflüchtigen Speicherzellen die zweite Prüfungsbedingung erfüllt hat.
  15. Verfahren gemäß Anspruch 13, wobei: das zweite Kriterium erfüllt wird, nachdem eine vorbestimmte Anzahl von Dosen der Programmierung auf die Vielzahl der nichtflüchtigen Speicher angewendet wurde, nachdem das erste Kriterium erfüllt wird.
  16. Verfahren gemäß Anspruch 13, wobei: das Anwenden von Dosen der Programmierung das Anwenden der Dosen der Programmierung auf einen ausgewählten Satz nichtflüchtiger Speicherzellen einschließt, um den ausgewählten Satz nichtflüchtiger Speicherzellen auf mehrere Datenzustände zu programmieren, sodass jede nichtflüchtige Speicherzelle des Satzes nichtflüchtiger Speicherzellen mehrere Datenbits speichert; die Vielzahl von nichtflüchtigen Speicherzellen ein erster Teilsatz des ausgewählten Satzes von nichtflüchtigen Speicherzellen ist; ein zweiter Teilsatz des ausgewählten Satzes nichtflüchtiger Speicherzellen als Reaktion auf die Dosen der Programmierung auf einen zweiten Datenzustand programmiert wird; und das zweite Kriterium erfüllt wird, wenn eine minimale Anzahl des zweiten Teilsatzes des ausgewählten Satzes nichtflüchtiger Speicherzellen einen Zielpegel für den zweiten Datenzustand erreicht hat.
  17. Verfahren gemäß Anspruch 13, wobei: das zweite Kriterium anders ist als eine Menge der Vielzahl von Speicherzellen, die die erste Prüfungsbedingung erreicht.
  18. Verfahren gemäß Anspruch 13, weiterhin aufweisend: Verlangsamen der Programmierung für nichtflüchtige Speicherzellen, die die erste Prüfungsbedingung erfüllt haben; und Sperren der Programmierung für nichtflüchtige Speicherzellen, die die zweite Prüfungsbedingung erfüllt haben.
  19. Verfahren gemäß Anspruch 13, weiterhin aufweisend: die Dosen der Programmierung weisen eine Reihe von Programmierspannungsimpulsen auf, deren Größe sich von Impuls zu Impuls erhöht; die erste Prüfungsbedingung ist eine Prüfreferenz-Zwischenspannung für den ersten Datenzustand; und die zweite Prüfungsbedingung ist eine Prüfreferenz-Endspannung für den ersten Datenzustand.
  20. Nichtflüchtige Speichereinrichtung, aufweisend: ein dreidimensionales Array von nichtflüchtigen Speicherzellen; Mittel zur Programmierung der Speicherzellen durch Anlegen einer Reihe von Programmierspannungsimpulsen an die Speicherzellen; und Mittel zur Prüfung der Programmierung zwischen Programmierspannungsimpulsen durch Testen, ob nichtflüchtige Speicherzellen eine Prüfreferenz-Zwischenspannung für einen Datenzustand erreicht haben, ohne zu testen, ob nichtflüchtige Speicherzellen eine Prüfreferenz-Endspannung für den Datenzustand erreicht haben, bis mehr als eine vorbestimmte Anzahl von Speicherzellen die Prüfreferenz-Zwischenspannung für den Datenzustand erreicht hat, Testen, ob nichtflüchtige Speicherzellen die Prüfreferenz-Zwischenspannung erreicht haben, und Testen, ob nichtflüchtige Speicherzellen die Prüfreferenz-Endspannung erreicht haben, nachdem die vorbestimmte Anzahl von Speicherzellen die Prüfreferenz-Zwischenspannung erreicht hat und bis ein Testkriterium erfüllt wird, sodass das Testkriterium anders ist als eine andere Anzahl von Speicherzellen, die die Prüfreferenz-Zwischenspannung erreichen, und Testen, ob nichtflüchtige Speicherzellen die Prüfreferenz-Endspannung erreicht haben, ohne zu testen, ob nichtflüchtige Speicherzellen die Prüfreferenz-Zwischenspannung für den Datenzustand erreicht haben, nachdem das Testkriterium erfüllt wurde.
DE102020115935.8A 2020-02-19 2020-06-17 Nichtflüchtiger speicher mit dem überspringen der programmprürung Pending DE102020115935A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/795,313 US11049578B1 (en) 2020-02-19 2020-02-19 Non-volatile memory with program verify skip
US16/795,313 2020-02-19

Publications (1)

Publication Number Publication Date
DE102020115935A1 true DE102020115935A1 (de) 2021-08-19

Family

ID=76548163

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020115935.8A Pending DE102020115935A1 (de) 2020-02-19 2020-06-17 Nichtflüchtiger speicher mit dem überspringen der programmprürung

Country Status (5)

Country Link
US (1) US11049578B1 (de)
JP (1) JP6905127B1 (de)
KR (1) KR102337129B1 (de)
CN (1) CN113284538A (de)
DE (1) DE102020115935A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115512747A (zh) 2021-06-23 2022-12-23 桑迪士克科技有限责任公司 用于具有相邻平面干扰检测的智能验证的设备和方法
CN113421607B (zh) * 2021-06-30 2023-08-04 芯天下技术股份有限公司 一种闪存的校验修复方法、装置和电子设备
CN113571115B (zh) * 2021-06-30 2024-06-14 长江存储科技有限责任公司 对存储器进行编程的方法及存储器
US11894077B2 (en) 2022-02-23 2024-02-06 Sandisk Technologies Llc Self-diagnostic smart verify algorithm in user mode to prevent unreliable acquired smart verify program voltage
CN114882928A (zh) * 2022-04-12 2022-08-09 长江存储科技有限责任公司 一种存储器装置、存储器系统及编程操作方法
US11881271B2 (en) 2022-05-31 2024-01-23 Sandisk Technologies Llc Non-volatile memory with engineered channel gradient
WO2024091809A1 (en) * 2022-10-25 2024-05-02 Sandisk Technologies Llc Non-volatile memory with lower current program-verify

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060146610A1 (en) 1999-09-28 2006-07-06 Kabushiki Kaisha Toshiba Nonvolatile semiconductor memory having plural data storage portions for a bit line connected to memory cells
US9082502B2 (en) 2013-10-10 2015-07-14 Sandisk Technologies Inc. Bit line and compare voltage modulation for sensing nonvolatile storage elements
US9721662B1 (en) 2016-01-13 2017-08-01 Sandisk Technologies Llc Non-volatile memory with efficient programming
DE102018106111A1 (de) 2017-06-12 2018-12-13 Sandisk Technologies Llc Selektives Boosting von Strom in Speicherkanälen basierend auf einem Datenmuster oder physischen Nicht-Uniformitäten

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6888758B1 (en) 2004-01-21 2005-05-03 Sandisk Corporation Programming non-volatile memory
US7139198B2 (en) 2004-01-27 2006-11-21 Sandisk Corporation Efficient verification for coarse/fine programming of non-volatile memory
US7020026B2 (en) 2004-05-05 2006-03-28 Sandisk Corporation Bitline governed approach for program control of non-volatile memory
US7092290B2 (en) 2004-11-16 2006-08-15 Sandisk Corporation High speed programming system with reduced over programming
US7158421B2 (en) 2005-04-01 2007-01-02 Sandisk Corporation Use of data latches in multi-phase programming of non-volatile memories
US7206235B1 (en) * 2005-10-14 2007-04-17 Sandisk Corporation Apparatus for controlled programming of non-volatile memory exhibiting bit line coupling
US7301817B2 (en) 2005-10-27 2007-11-27 Sandisk Corporation Method for programming of multi-state non-volatile memory using smart verify
US7224614B1 (en) 2005-12-29 2007-05-29 Sandisk Corporation Methods for improved program-verify operations in non-volatile memories
TWI333210B (en) * 2006-06-01 2010-11-11 Sandisk Corp Non-volatile storage system and verify operation for non-volatile storage using different voltages
US7508715B2 (en) 2007-07-03 2009-03-24 Sandisk Corporation Coarse/fine program verification in non-volatile memory using different reference levels for improved sensing
US7688638B2 (en) 2007-12-07 2010-03-30 Sandisk Corporation Faster programming of multi-level non-volatile storage through reduced verify operations
US7768836B2 (en) * 2008-10-10 2010-08-03 Sandisk Corporation Nonvolatile memory and method with reduced program verify by ignoring fastest and/or slowest programming bits
JP5292052B2 (ja) * 2008-10-21 2013-09-18 力晶科技股▲ふん▼有限公司 不揮発性半導体記憶装置とその書き込み方法
KR101528886B1 (ko) * 2009-04-09 2015-06-16 삼성전자주식회사 비휘발성 메모리 장치의 프로그램 방법
US8054691B2 (en) * 2009-06-26 2011-11-08 Sandisk Technologies Inc. Detecting the completion of programming for non-volatile storage
US8223556B2 (en) * 2009-11-25 2012-07-17 Sandisk Technologies Inc. Programming non-volatile memory with a reduced number of verify operations
US8174895B2 (en) * 2009-12-15 2012-05-08 Sandisk Technologies Inc. Programming non-volatile storage with fast bit detection and verify skip
KR101676816B1 (ko) * 2010-02-11 2016-11-18 삼성전자주식회사 플래시 메모리 장치 및 그것의 프로그램 방법
US8233324B2 (en) 2010-03-25 2012-07-31 Sandisk Il Ltd. Simultaneous multi-state read or verify in non-volatile storage
US8274838B2 (en) * 2010-07-19 2012-09-25 Sandisk Technologies Inc. Programming non-volatile memory with bit line voltage step up
KR20120030281A (ko) * 2010-09-20 2012-03-28 삼성전자주식회사 플래시 메모리 장치, 및 그의 프로그램 검증 방법
KR101861084B1 (ko) * 2011-07-11 2018-05-28 삼성전자주식회사 비휘발성 메모리 장치, 이의 동작 방법, 및 비휘발성 메모리 장치를 포함하는 전자 장치
US8432740B2 (en) 2011-07-21 2013-04-30 Sandisk Technologies Inc. Program algorithm with staircase waveform decomposed into multiple passes
US8705293B2 (en) 2011-10-20 2014-04-22 Sandisk Technologies Inc. Compact sense amplifier for non-volatile memory suitable for quick pass write
US8971141B2 (en) 2012-06-28 2015-03-03 Sandisk Technologies Inc. Compact high speed sense amplifier for non-volatile memory and hybrid lockout
US8953386B2 (en) * 2012-10-25 2015-02-10 Sandisk Technologies Inc. Dynamic bit line bias for programming non-volatile memory
US9142298B2 (en) 2013-02-11 2015-09-22 Sandisk Technologies Inc. Efficient smart verify method for programming 3D non-volatile memory
US9443606B2 (en) 2014-10-28 2016-09-13 Sandisk Technologies Llc Word line dependent two strobe sensing mode for nonvolatile storage elements
US9548130B2 (en) * 2015-04-08 2017-01-17 Sandisk Technologies Llc Non-volatile memory with prior state sensing
US9570179B2 (en) * 2015-04-22 2017-02-14 Sandisk Technologies Llc Non-volatile memory with two phased programming
US9595317B2 (en) * 2015-05-28 2017-03-14 Sandisk Technologies Llc Multi-state programming for non-volatile memory
US10014063B2 (en) 2015-10-30 2018-07-03 Sandisk Technologies Llc Smart skip verify mode for programming a memory device
KR20180057431A (ko) * 2016-11-22 2018-05-30 삼성전자주식회사 비휘발성 메모리 장치
IT201700034719A1 (it) * 2017-03-29 2018-09-29 Sk Hynix Inc Metodo per controllare le operazioni di verifica di programmazione di una memoria non volatile e relativo circuito
US10381095B1 (en) 2018-02-28 2019-08-13 Sandisk Technologies Llc Non-volatile memory with smart erase verify

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060146610A1 (en) 1999-09-28 2006-07-06 Kabushiki Kaisha Toshiba Nonvolatile semiconductor memory having plural data storage portions for a bit line connected to memory cells
US9082502B2 (en) 2013-10-10 2015-07-14 Sandisk Technologies Inc. Bit line and compare voltage modulation for sensing nonvolatile storage elements
US9721662B1 (en) 2016-01-13 2017-08-01 Sandisk Technologies Llc Non-volatile memory with efficient programming
DE102018106111A1 (de) 2017-06-12 2018-12-13 Sandisk Technologies Llc Selektives Boosting von Strom in Speicherkanälen basierend auf einem Datenmuster oder physischen Nicht-Uniformitäten

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
D. MacKay, Information Theory, Inference and Learning Algorithms, Cambridge University Press 2003, Kapitel 47
R. G. Gallager, „Low-density parity-check codes", Inform. Theory, Band IT 8, S. 21 28, Januar 1962

Also Published As

Publication number Publication date
US11049578B1 (en) 2021-06-29
KR20210105794A (ko) 2021-08-27
JP2021131922A (ja) 2021-09-09
CN113284538A (zh) 2021-08-20
JP6905127B1 (ja) 2021-07-21
KR102337129B1 (ko) 2021-12-09

Similar Documents

Publication Publication Date Title
DE102018105529B4 (de) Managementschema zur Vermeidung einer Lösch- und Programmierstörung von Subblöcken im nichtflüchtigen Datenspeicher
DE102020115935A1 (de) Nichtflüchtiger speicher mit dem überspringen der programmprürung
DE112017002776T5 (de) Nichtflüchtiger Speicher mit angepasster Steuerung vom Typ der Störinjektion während der Programmüberprüfung für eine verbesserte Programmleistung
DE102017104257A1 (de) Auf Zellenstrom basierende Bitleitungsspannung
US10403377B2 (en) Non-volatile storage with adaptive redundancy
DE102017120325A1 (de) Nichtflüchtiger Arbeitsspeicher mit intelligenter Temperaturerfassung und lokaler Drosselung
DE102018123887A1 (de) Nichtflüchtiges Speichersystem. das fehlerhafte Blöcke regeneriert
DE102015105858A1 (de) Halbleitervorrichtungen mit Peripherieschaltungsbereich und einem ersten und einem zweiten Speicherbereich, sowie zugehörige Programmierverfahren
DE102011054181A1 (de) Nichtflüchtige Speichervorrichtung und Ausleseverfahren davon
DE112020000174T5 (de) Adaptive vpass für 3d-flash-speicher mit paarkettenstruktur
DE102018105685A1 (de) Multi-Zustands-Programm, das gesteuertes schwaches Boosten für einen nichtflüchtigen Speicher verwendet
DE102021107269A1 (de) Dynamische ressourcenverwaltung in schaltungsgebundener array-architektur
DE102018129517A1 (de) Leseverstärker mit negativer schwellenwerterfassung für nicht-flüchtige speicher
DE112014005810B4 (de) anagement der Datenspeicherung in analogen Speicherzellen unter Verwendung einer nicht ganzzahligen Anzahl von Bits pro Zelle
DE102021107128A1 (de) Abgestufte lesereferenzkalibrierung
DE102019124653A1 (de) Ortsabhängige impedanzabschwächung in einem nichtflüchtigen speicher
DE102021115914A1 (de) Nichtflüchtiger speicher mit speicherarray zwischen schaltungen
US10198315B2 (en) Non-volatile memory with corruption recovery
DE102020116365A1 (de) Löschvorgang in 3d-nand
DE102021105757A1 (de) On-chip-kopie für integriertes speichermodul
DE102020107504A1 (de) Nichtflüchtiges speicher-array, das zur leistungsverbesserung von beiden seiten angesteuert wird
DE112020000182T5 (de) Blockqualitätsklassifizierung beim testen für nichtflüchtigen speicher und flags für mehrere fehlerhafte blöcke bezüglich produktdiversität
DE102021107718A1 (de) Adaptives falten für integriertes speichermodul
DE102021106142A1 (de) Abtastverstärkerarchitektur, die eine abtastung kleiner hubspannungen bereitstellt
DE102022123239A1 (de) Verwendung von datenlatches zur kompression von soft-bit-daten auf anlagenebene in nichtflüchtigen speichern

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE