DE102022102593A1 - Speicherprogrammierung mit selektiv übersprungenen verifizierungsimpulsen zur leistungsverbesserung - Google Patents

Speicherprogrammierung mit selektiv übersprungenen verifizierungsimpulsen zur leistungsverbesserung Download PDF

Info

Publication number
DE102022102593A1
DE102022102593A1 DE102022102593.4A DE102022102593A DE102022102593A1 DE 102022102593 A1 DE102022102593 A1 DE 102022102593A1 DE 102022102593 A DE102022102593 A DE 102022102593A DE 102022102593 A1 DE102022102593 A1 DE 102022102593A1
Authority
DE
Germany
Prior art keywords
programming
loop
pcv
memory cells
programmed
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
DE102022102593.4A
Other languages
English (en)
Inventor
Yanjie Wang
Guirong Liang
Shota Murai
Xiaoyu Che
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 DE102022102593A1 publication Critical patent/DE102022102593A1/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/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
    • 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
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control 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
    • 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/24Bit-line control 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/26Sensing or reading circuits; Data output 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/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
    • HELECTRICITY
    • H10SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10BELECTRONIC MEMORY DEVICES
    • H10B41/00Electrically erasable-and-programmable ROM [EEPROM] devices comprising floating gates
    • H10B41/10Electrically erasable-and-programmable ROM [EEPROM] devices comprising floating gates characterised by the top-view layout
    • HELECTRICITY
    • H10SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10BELECTRONIC MEMORY DEVICES
    • H10B41/00Electrically erasable-and-programmable ROM [EEPROM] devices comprising floating gates
    • H10B41/20Electrically erasable-and-programmable ROM [EEPROM] devices comprising floating gates characterised by three-dimensional arrangements, e.g. with cells on different height levels
    • H10B41/23Electrically erasable-and-programmable ROM [EEPROM] devices comprising floating gates characterised by three-dimensional arrangements, e.g. with cells on different height levels with source and drain on different levels, e.g. with sloping channels
    • H10B41/27Electrically erasable-and-programmable ROM [EEPROM] devices comprising floating gates characterised by three-dimensional arrangements, e.g. with cells on different height levels with source and drain on different levels, e.g. with sloping channels the channels comprising vertical portions, e.g. U-shaped channels
    • HELECTRICITY
    • H10SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10BELECTRONIC MEMORY DEVICES
    • H10B43/00EEPROM devices comprising charge-trapping gate insulators
    • H10B43/10EEPROM devices comprising charge-trapping gate insulators characterised by the top-view layout
    • HELECTRICITY
    • H10SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10BELECTRONIC MEMORY DEVICES
    • H10B43/00EEPROM devices comprising charge-trapping gate insulators
    • H10B43/20EEPROM devices comprising charge-trapping gate insulators characterised by three-dimensional arrangements, e.g. with cells on different height levels
    • H10B43/23EEPROM devices comprising charge-trapping gate insulators characterised by three-dimensional arrangements, e.g. with cells on different height levels with source and drain on different levels, e.g. with sloping channels
    • H10B43/27EEPROM devices comprising charge-trapping gate insulators characterised by three-dimensional arrangements, e.g. with cells on different height levels with source and drain on different levels, e.g. with sloping channels the channels comprising vertical portions, e.g. U-shaped channels
    • 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
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/562Multilevel memory programming aspects
    • G11C2211/5621Multilevel programming verification

Landscapes

  • Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)

Abstract

Der nichtflüchtige Speicher schließt eine Steuerschaltlogik ein, die kommunikativ mit einem Array von Speicherzellen gekoppelt ist, die in einer Vielzahl von Wortleitungen angeordnet sind. Die Steuerschaltung ist dazu eingerichtet, die Speicherzellen der Vielzahl von Wortleitungen in eine Vielzahl von Datenzuständen in einem Programmiervorgang mit mehreren Durchgängen zu programmieren. Ein späterer Programmierdurchgang des Programmiervorgangs mit mehreren Durchgängen schließt eine Vielzahl von Programmierschleifen mit sich inkrementell erhöhenden Programmierimpulsen ein. Für mindestens einen Datenzustand schließt der spätere Programmierdurchgang das Aufrechterhalten einer Zählung der Programmierschleifen des späteren Programmierdurchgangs ein. Der spätere Programmierdurchgang schließt auch das Sperren oder Verlangsamen des Programmierens der Speicherzellen ein, die auf einen der Datenzustände während einer vorbestimmten Programmierzählverifizierungs- (PCV) Programmierschleife programmiert werden, und eine PCV-1-Programmierschleife und Überspringen eines Verifizierungsvorgangs für alle Programmierschleifen vor einer PCV+1-Programmierschleife.

Description

  • HINTERGRUND
  • 1. Gebiet
  • Die vorliegende Technologie bezieht sich auf den Betrieb von Speichervorrichtungen.
  • 2. Stand der Technik
  • Speichervorrichtungen werden üblicherweise als interne, halbleitende, integrierte Schaltungen in Rechnern oder anderen elektronischen Vorrichtungen bereitgestellt. Es gibt viele verschiedene Speichertypen, einschließlich Direktzugriffsspeicher (RAM), Nurlesespeicher (ROM), dynamischer Direktzugriffsspeicher (DRAM), synchroner dynamischer Direktzugriffsspeicher (SDRAM), ein elektrisch löschbarer programmierbarer Nurlesespeicher (EEPROM), ein Flash-Speicher und/oder dergleichen. In einer EEPROM- oder Flash-NAND-Array-Architektur können die Speicherzellen in einer Matrix aus Zeilen und Spalten angeordnet sein, so dass die Gates jeder Speicherzelle über Zeilen mit Wortleitungen gekoppelt sind. Die Speicherzellen können in Ketten zusammen angeordnet werden, sodass die Speicherzellen in einer gegebenen Kette in Reihe miteinander gekoppelt sind, von der Quelle zum Drain, zwischen einer gemeinsamen Sourceleitung und einer gemeinsamen Bitleitung.
  • Es gibt verschiedene Techniken, um die Speicherzellen auf eine Vielzahl von Datenzuständen zu programmieren, und es besteht ein fortwährender Bedarf, die Programmierleistung zu verbessern.
  • KURZDARSTELLUNG
  • Die Programmiertechniken der vorliegenden Offenbarung werden bereitgestellt, um die Programmierzeit tprog zu reduzieren, indem einige Verifizierungsimpulse aus einem zweiten Durchgang eines Programmiervorgangs mit mehreren Durchgängen eliminiert werden.
  • Gemäß einem Gesichtspunkt der vorliegenden Offenbarung wird ein Verfahren zur Programmieren einer Speichereinrichtung bereitgestellt. Das Verfahren schließt den Schritt des Programmierens von Speicherzellen einer ausgewählten Wortleitung in eine Vielzahl von Datenzuständen in einem ersten Programmierdurchgang eines Programmiervorgangs mit mehreren Durchgängen ein. Das Verfahren schließt weiterhin den Schritt des Programmierens der Speicherzellen der ausgewählten Wortleitung in die Vielzahl von Datenzuständen in einem späteren Programmierdurchgang ein, wobei der spätere Programmierdurchgang eine Vielzahl von Programmierschleifen für mindestens einen Datenzustand einschließt. Der spätere Programmierdurchgang schließt das Aufrechterhalten einer Zählung der Programmierschleifen des späteren Programmierdurchgangs ein, wobei die Programmierschleifen sich inkrementell erhöhende Programmierimpulse einschließen. Der spätere Programmierdurchgang schließt weiterhin das Sperren oder Verlangsamen des Programmierens der Speicherzellen ein, die auf einen der Datenzustände während einer Programmierzählverifizierungs- (PCV) Programmierschleife oder einer PCV-1-Programmierschleife programmiert werden. Der spätere Programmierdurchgang schließt auch das Überspringen eines Verifizierungsvorgangs für alle Programmierschleifen vor einer PCV+1-Programmierschleife ein.
  • Gemäß einem weiteren Gesichtspunkt der vorliegenden Offenbarung schließt der Schritt des Sperrens oder Verlangsamens des Programmierens der Speicherzellen, die auf einen der Datenzustände während einer vorbestimmten PCV-Programmierschleife und einer PCV-1-Programmierschleife programmiert werden, ein Anlegen einer Nicht-Null-Spannung an mindestens eine Bitleitung ein, die gleichzeitig mit der Anwendung eines Programmierimpulses an die ausgewählte Wortleitung gekoppelt ist.
  • Gemäß noch einem weiteren Gesichtspunkt der vorliegenden Offenbarung wird der Schritt des Sperrens oder Verlangsamens des Programmierens der Speicherzellen, die programmiert werden, weiterhin als das Sperren des Programmierens der Speicherzellen definiert, die auf den einen der Datenzustände während der PCV-Programmierschleife und der PCV-1-Programmierschleife programmiert werden.
  • Gemäß noch einem weiteren Gesichtspunkt der vorliegenden Offenbarung wird der Schritt des Sperrens oder Verlangsamens des Programmierens der Speicherzellen, die programmiert werden, weiterhin als das Programmieren der Speicherzellen definiert, die auf den einen der Datenzustände während aller Programmierschleifen vor der PCV+1-Programmierschleife programmiert werden.
  • Gemäß einem weiteren Gesichtspunkt der vorliegenden Offenbarung wird der Schritt des Sperrens oder Verlangsamens des Programmierens der Speicherzellen, die programmiert werden, weiterhin als das Verlangsamen des Programmierens der Speicherzellen definiert, die auf den einen der Datenzustände während der PCV-Programmierschleife und der PCV-1-Programmierschleife programmiert werden.
  • Gemäß noch einem weiteren Gesichtspunkt der vorliegenden Offenbarung schließt die Vielzahl von Datenzuständen einen ersten programmierten Datenzustand und mindestens einen später programmierten Datenzustand mit höheren Spannungsschwellenwerten als der erste programmierte Datenzustand ein.
  • Gemäß noch einem weiteren Gesichtspunkt der vorliegenden Offenbarung wird das Programmieren nicht gesperrt oder verlangsamt und der Verifizierungsvorgang wird für beliebige Programmierschleifen für die Speicherzellen während des Programmierens des ersten programmierten Datenzustands nicht übersprungen.
  • Gemäß einem weiteren Gesichtspunkt der vorliegenden Offenbarung wird für alle später programmierten Datenzustände das Programmieren während der PCV-Programmierschleife und der PCV-1-Programmierschleife gesperrt oder verlangsamt.
  • Ein weiterer Gesichtspunkt der vorliegenden Offenbarung bezieht sich auf eine Speicherungsvorrichtung, die einen nichtflüchtigen Speicher einschließt. Der nichtflüchtige Speicher schließt eine Steuerschaltlogik ein, die kommunikativ mit einem Array von Speicherzellen gekoppelt ist, die in einer Vielzahl von Wortleitungen angeordnet sind. Die Steuerschaltung ist dazu eingerichtet, die Speicherzellen der Vielzahl von Wortleitungen in eine Vielzahl von Datenzuständen in einem Programmiervorgang mit mehreren Durchgängen zu programmieren. Die Steuerschaltlogik ist weiterhin dazu eingerichtet, die Speicherzellen einer ausgewählten Wortleitung in einen ersten Programmierdurchgang des Programmiervorgangs mit mehreren Durchgängen zu der Vielzahl von Datenzuständen zu programmieren. Die Steuerschaltlogik ist auch dazu eingerichtet, die Speicherzellen der ausgewählten Wortleitung auf die Vielzahl von Datenzuständen in einem späteren Programmierdurchgang zu programmieren, der eine Vielzahl von Programmierschleifen mit sich inkrementell erhöhenden Programmierimpulsen einschließt. Für mindestens einen Datenzustand schließt der spätere Programmierdurchgang das Aufrechterhalten einer Zählung der Programmierschleifen des späteren Programmierdurchgangs ein. Der spätere Programmierdurchgang schließt auch das Sperren oder Verlangsamen des Programmierens der Speicherzellen ein, die auf einen der Datenzustände während einer vorbestimmten Programmierzählverifizierungs- (PCV) Programmierschleife programmiert werden, und eine PCV-1-Programmierschleife und Überspringen eines Verifizierungsvorgangs für alle Programmierschleifen vor einer PCV+1-Programmierschleife.
  • Gemäß einem weiteren Gesichtspunkt der vorliegenden Offenbarung ist die Steuerschaltlogik dazu eingerichtet, eine Nicht-Null-Spannung an mindestens eine Bitleitung anzulegen, die mit mindestens einer Speicherzelle gekoppelt ist, gleichzeitig mit dem Anlegen eines Programmierimpulses an die ausgewählte Wortleitung, um das Programmieren der Speicherzellen zu verhindern oder zu verlangsamen, die auf einen der Datenzustände während der PCV-Programmierschleife und der PCV-1-Programmierschleife programmiert werden.
  • Gemäß noch einem weiteren Gesichtspunkt der vorliegenden Offenbarung wird das Sperren oder Verlangsamen des Programmierens der Speicherzellen während der PCV-Programmierschleife und der PCV-1-Programmierschleife weiterhin als das Programmieren der Speicherzellen während der PCV-Programmierschleife und der PCV-1-Programmierschleife definiert.
  • Gemäß noch einem weiteren Gesichtspunkt der vorliegenden Offenbarung wird das Sperren oder Verlangsamen des Programmierens der Speicherzellen während der PCV-Programmierschleife und der PCV-1-Programmierschleife weiterhin als das Sperren des Programmierens der Speicherzellen, die während aller Programmierschleifen vor der PCV+1-Programmierschleife auf den einen der Datenzustände programmiert werden, definiert.
  • Gemäß einem weiteren Gesichtspunkt der vorliegenden Offenbarung wird das Sperren oder Verlangsamen des Programmierens der Speicherzellen, die programmiert werden, weiterhin als die Verlangsamung des Programmierens der Speicherzellen definiert, die auf den einen der Datenzustände während der PCV-Programmierschleife und der PCV-1-Programmierschleife programmiert werden.
  • Gemäß noch einem weiteren Gesichtspunkt der vorliegenden Offenbarung schließt die Vielzahl von Datenzuständen einen ersten programmierten Datenzustand und mindestens einen später programmierten Datenzustand mit höheren Spannungsschwellenwerten als der erste programmierte Datenzustand ein.
  • Gemäß noch einem weiteren Gesichtspunkt der vorliegenden Offenbarung wird das Programmieren nicht gesperrt oder verlangsamt und der Verifizierungsvorgang wird für beliebige Programmierschleifen während des Programmierens des ersten programmierten Datenzustands nicht übersprungen.
  • Gemäß einem weiteren Gesichtspunkt der vorliegenden Offenbarung ist die Steuerung dazu eingerichtet, Programmieren während der PCV-Programmierschleife und der PCV-1-Programmierschleife während des Programmierens aller später programmierten Datenzustände zu verhindern oder zu verlangsamen.
  • Noch ein weiterer Gesichtspunkt der vorliegenden Offenbarung bezieht sich auf eine Einrichtung, die einen nichtflüchtigen Speicher mit einer Steuerschaltung einschließt, die kommunikativ mit einem Array von Speicherzellen gekoppelt ist, die in einer Vielzahl von Wortleitungen angeordnet sind. Die Steuerschaltung ist dazu eingerichtet, die Speicherzellen der Vielzahl von Wortleitungen auf eine Vielzahl von Datenzuständen mit inkrementellem Erhöhen von Programmierimpulsen in einem Programmiervorgang mit mehreren Durchgängen zu programmieren. Die Steuerschaltlogik ist weiterhin dazu eingerichtet, die Speicherzellen einer ausgewählten Wortleitung in einen ersten Programmierdurchgang des Programmiervorgangs mit mehreren Durchgängen zu der Vielzahl von Datenzuständen zu programmieren. Die Steuerschaltung ist auch dazu eingerichtet, die Speicherzellen der ausgewählten Wortleitung in eine Vielzahl von Datenzuständen in einem späteren Programmierdurchgang zu programmieren, der eine Reihe von sich inkrementell erhöhenden Programmierimpulsen einschließt. Der spätere Programmierdurchgang schließt eine Vielzahl von Programmierschleifen ein. Für mindestens einen Datenzustand schließt der spätere Programmierdurchgang das Aufrechterhalten einer Zählung der Programmierschleifen des späteren Programmierdurchgangs ein. Der spätere Programmierdurchgang schließt auch das Sperren oder Verlangsamen des Programmierens der Speicherzellen ein, die auf einen der Datenzustände während einer vorbestimmten Programmierzählverifizierungs- (PCV) Programmierschleife programmiert werden, und eine PCV-1-Programmierschleife und Überspringen eines Verifizierungsvorgangs für alle Programmierschleifen vor einer PCV+1-Programmierschleife.
  • Gemäß einem weiteren Gesichtspunkt der vorliegenden Offenbarung wird das Programmieren nicht gesperrt oder verlangsamt und der Verifizierungsvorgang wird für beliebige Programmierschleifen während des Programmierens des ersten programmierten Datenzustands nicht übersprungen.
  • Gemäß noch einem weiteren Gesichtspunkt der vorliegenden Offenbarung ist die Steuerung dazu eingerichtet, das Programmieren während der PCV-Programmierschleife und der PCV-1-Programmierschleife während des Programmierens aller später programmierten Datenzustände zu verhindern oder zu verlangsamen.
  • Gemäß noch einem weiteren Gesichtspunkt der vorliegenden Offenbarung ist die Steuerschaltlogik dazu eingerichtet, eine Nicht-Null-Spannung an mindestens eine Bitleitung anzulegen, die mit mindestens einer Speicherzelle gekoppelt ist, gleichzeitig mit dem Anlegen eines Programmierimpulses an die ausgewählte Wortleitung, um das Programmieren der Speicherzellen zu verhindern oder zu verlangsamen, die auf einen der Datenzustände während der PCV-Programmierschleife und der PCV-1-Programmierschleife programmiert werden.
  • Gemäß einem weiteren Gesichtspunkt der vorliegenden Offenbarung wird das Sperren oder Verlangsamen des Programmierens der Speicherzellen während der PCV-Programmierschleife und der PCV-1-Programmierschleife weiterhin als das Programmieren der Speicherzellen während der PCV-Programmierschleife und der PCV-1-Programmierschleife definiert.
  • Figurenliste
  • Eine detailliertere Beschreibung wird nachstehend unter Bezugnahme auf beispielhafte Ausführungsformen dargelegt, die in den beigefügten Figuren dargestellt sind. Es versteht sich, dass diese Figuren nur beispielhafte Ausführungsformen der Offenbarung darstellen und daher nicht als Einschränkung ihres Umfangs angesehen werden sollen. Die Offenbarung wird mit zusätzlicher Spezifität und Details durch die Verwendung der beigefügten Zeichnungen beschrieben und erläutert, in denen:
    • 1A ein Blockdiagramm einer beispielhaften Speichervorrichtung ist;
    • 1 B ein Blockdiagramm einer beispielhaften Steuerschaltung ist;
    • 2 Blöcke von Speicherzellen in einer beispielhaften zweidimensionalen Konfiguration des Speicherarrays von 1A darstellt;
    • 3A und 3B Querschnittansichten von beispielhaftem Floating-Gate mit NAND-Ketten darstellen;
    • 4A und 4B Querschnittansichten von beispielhaften ladungseinfangenden Speicherzellen in NAND-Ketten darstellen;
    • 5 ein beispielhaftes Blockdiagramm eines Erfassungsblocks SB1 von 1 darstellt;
    • 6A eine perspektivische Ansicht eines Satzes von Blöcken in einer beispielhaften dreidimensionalen Konfiguration des Speicherarrays von 1 ist;
    • 6B eine beispielhafte Querschnittsansicht eines Abschnitts von einem der Blöcke von 6A darstellt;
    • 6C eine grafische Darstellung des Speicherlochdurchmessers im Stapel von 6B darstellt;
    • 6D eine Detailansicht der Region 722 des Stapels von 6B darstellt;
    • 7A eine Draufsicht auf eine beispielhafte Wortleitungsschicht WLL0 des Stapels von 6B darstellt;
    • 7B eine Draufsicht auf eine beispielhafte obere dielektrische Schicht DL19 des Stapels von 6B darstellt;
    • 8A ein Beispiel von NAND-Ketten in den Teilblöcken SBa-SBd von 7A darstellt;
    • 8B eine weitere beispielhafte Ansicht von NAND-Ketten in Teilblöcken darstellt;
    • 9 die Vth-Verteilungen der Datenzustände in einem QLC-Speichersystem veranschaulicht;
    • 10A einen ersten Durchgang einer Programmiertechnik mit zwei Durchgängen darstellt;
    • 10B einen zweiten Durchgang der Programmiertechnik mit zwei Durchgängen darstellt;
    • 11 den ersten und zweiten Durchgang einer anderen Programmiertechnik mit zwei Durchgängen als in 10A und 10B darstellt;
    • 12 eine Wellenform eines beispielhaften Speicherzellenprogrammiervorgangs darstellt;
    • 13 eine grafische Darstellung der Vt-Verschiebung gegenüber den Programmimpulsen für einen Referenzprogrammiervorgang und einen Programmiervorgang gemäß einer beispielhaften Ausführungsform der vorliegenden Offenbarung darstellt;
    • 14 eine Tabelle ist, die die programmierten Datenzustände eines QLC-Speichersystems und die Programmierschleifen, und welche Zustände in welchen Schleifen in dem Referenzprogrammiervorgang programmiert sind, identifiziert;
    • 15 eine Tabelle ist, die die programmierten Datenzustände eines QLC-Speichersystems und die Programmierschleifen und welche die Zustände in welchem Programmiervorgang der vorliegenden Offenbarung programmiert sind, identifiziert;
    • 16 eine grafische Darstellung veranschaulicht, die eine Zuverlässigkeit (Vt-Breite) gegen Leistung für den Referenzprogrammiervorgang und den Programmiervorgang gemäß einer beispielhaften Ausführungsform der vorliegenden Offenbarung zeigt;
    • 17 eine grafische Darstellung darstellt, die das obere Ende jedes der programmierten Datenzustände eines QLC-Speichersystems gegen eine VPGMU-DAC-Verschiebung identifiziert;
    • 18 eine grafische Darstellung ist, die Vt-Verteilungen einer Vielzahl von Datenzuständen für einen Bereich verschiedener VPGMU-Verschiebungen zeigt;
    • 19 ein Flussdiagramm ist, das die Schritte des Programmierens eines Speichersystems gemäß einer beispielhaften Ausführungsform der vorliegenden Offenbarung veranschaulicht;
    • 20 eine grafische Darstellung ist, die eine Schwellenspannung der Speicherzellen zeigt, die auf einen bestimmten Datenzustand gegenüber einer Zählung der Programmierschleifen während des zweiten Durchgangs des in 19 veranschaulichten Programmiervorgangs programmiert wird;
    • 21 ein Flussdiagramm ist, das die Schritte des Programmierens eines Speichersystems gemäß einer anderen beispielhaften Ausführungsform der vorliegenden Offenbarung veranschaulicht;
    • 22 eine grafische Darstellung ist, die eine Schwellenspannung der Speicherzellen zeigt, die auf einen bestimmten Datenzustand gegenüber einer Zählung der Programmierschleifen während des zweiten Durchgangs des in 21 veranschaulichten Programmiervorgangs programmiert wird;
    • 23 ein Flussdiagramm ist, das die Schritte des Programmierens eines Speichersystems gemäß noch einer anderen beispielhaften Ausführungsform der vorliegenden Offenbarung veranschaulicht; und
    • 24 ein Flussdiagramm ist, das die Schritte des Programmierens eines Speichersystems gemäß noch einer weiteren beispielhaften Ausführungsform der vorliegenden Offenbarung veranschaulicht.
  • DETAILLIERTE BESCHREIBUNG
  • Es werden Techniken zum Programmieren einer Speichervorrichtung bereitgestellt. Es wird auch eine entsprechende Speichervorrichtung mit entsprechenden Programmierschaltungen bereitgestellt.
  • Um die Programmierzeit tProg in einem zweiten Durchgang eines Programmiervorgangs mit mehreren Durchgängen zu reduzieren, der eine inkrementelle Schrittimpulsprogrammierung (ISPP) einschließt, wird das Programmieren entweder verlangsamt oder gesperrt, indem eine Bitleitungsspannung an die Bitleitung angelegt wird, die mit mindestens einer Speicherzelle für eine Vielzahl von Programmierschleifen gekoppelt ist, bis die Spannung Vpgm der Programmierimpulse ein bestimmtes Niveau erreicht. Sobald Vpgm das vorbestimmte Niveau erreicht hat, darf das Programmieren dieser Speicherzellen fortgesetzt werden, und die Speicherzellen programmieren sehr schnell. Das Sperren oder die Verlangsamung des Programmierens während dieser Schleifen ermöglicht es, dass ein oder mehrere Verifizierungsimpulse übersprungen werden, wodurch die Leistung verbessert wird, ohne Zuverlässigkeit zu beeinträchtigen. Dieser Prozess wird für jeden der programmierten Datenzustände einer Vorrichtung mit mehreren Datenzuständen pro Speicherzelle wiederholt, wodurch Leistungsverstärkungen mit sich erhöhenden Bits pro Speicherzelle erhöht werden. In einigen Ausführungsformen wurde festgestellt, dass diese Techniken die Programmierzeit um etwa acht Prozent (8 %) mit minimalem oder keinem Verlust an Zuverlässigkeit in eine Speichervorrichtung mit vier Bits pro Speicherzelle (QLC) reduzieren.
  • Ein Programmiervorgang für eine Gruppe von Speicherzellen beinhaltet in der Regel das Bereitstellen der Speicherzellen in einem gelöschten Zustand und dann das Anlegen einer Reihe von Programmierimpulsen an die Speicherzellen. Jeder Programmierimpuls wird in einer Programmierschleife bereitgestellt, die auch als Programmieren-Verifizieren-Iteration bezeichnet wird. Zum Beispiel kann der Programmierimpuls an eine Wortleitung angelegt werden, die mit den Steuer-Gates der Speicherzellen verbunden ist. Bei einem Ansatz wird Impulsprogrammierung in inkrementellen Schritten durchgeführt, bei der die Amplitude des Programmierimpulses in jeder Programmierschleife um eine Schrittgröße vergrößert wird. Verifizierungsvorgänge können nach jedem Programmierimpuls durchgeführt werden, um zu bestimmen, ob die Speicherzellen das Programmieren abgeschlossen haben, und Bitabtastungsvorgänge können separat nach dem Verifizierungsvorgang und vor dem nächsten Programmierimpuls durchgeführt werden, oder gleichzeitig mit dem nachfolgenden Programmierimpuls durchgeführt werden, um die Anzahl von Speicherzellen zu zählen, die das Programmieren nicht abgeschlossen haben. Wenn ein Programmieren für eine Speicherzelle abgeschlossen ist, kann die Speicherzelle von einem weiteren Programmieren ausgeschlossen (gesperrt) werden, während ein Programmieren für andere Speicherzellen in nachfolgenden Programmierschleifen fortgeführt wird.
  • Jede Speicherzelle kann einem Speicherzustand gemäß Schreibdaten in einem Programmierbefehl zugeordnet sein. Wie hierin verwendet, ist ein „Speicherzustand“ oder „Datenzustand“ eine detektierbare Eigenschaft einer Speicherzelle (z. B. eine Schwellenspannung einer NAND-Speicherzelle, ein Widerstand einer ReRAM-Speicherzelle, ein Magnetisierungszustand eines magnetoresistiven Speichers mit wahlfreiem Zugriff), die dazu verwendet werden kann, einen Datenwert darzustellen, wie einen binären Datenwert. Wie hierin verwendet, wird die detektierbare Eigenschaft einer Speicherzelle, die zur Darstellung eines Datenwerts verwendet wird, als eine „Programmiereigenschaft“ bezeichnet. Basierend auf Schreibdaten in einem Programmbefehl wird eine Speicherzelle entweder in dem gelöschten Zustand bleiben oder auf einen Speicherzustand (einen programmierten Datenzustand) programmiert werden, der sich von dem gelöschten Zustand unterscheidet.
  • Wie in 11 gezeigt, gibt es in einer Speichervorrichtung mit vier Bits pro Zelle (QLC) sechzehn Speicherzustände einschließlich des gelöschten Zustands und fünfzehn programmierten Datenzuständen (S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14 und S15). Die hierin erörterten Techniken zur Verbesserung von tProg sind jedoch auch auf Speichervorrichtungen mit zwei Bits pro Zelle (MLC), drei Bits pro Zelle (TLC) und fünf Bits pro Zelle (SPS) anwendbar.
  • Wenn ein Programmbefehl ausgegeben wird, werden die Schreibdaten in den den Speicherzellen zugeordneten Datenhaltespeichern gespeichert. Zum Beispiel ist in einer MLC-Speichervorrichtung jede Speicherzelle zwei Datenhaltespeichern zugeordnet, die Zwei-Bit-Schreibdaten speichern; in einer TLC-Speichervorrichtung ist jede Speicherzelle drei Datenhaltespeichern zugeordnet, die die Drei-Bit-Schreibdaten für die Speicherzelle speichern; und in einer QLC-Speichervorrichtung ist jede Speicherzelle vier Datenhaltespeichern zugeordnet, die die Vier-Bit-Schreibdaten für die Speicherzelle speichern.
  • Während des Programmierens können die Datenhaltespeicher einer Speicherzelle ausgelesen werden, um den Datenzustand zu bestimmen, in den die Zelle programmiert werden soll. Bei NAND-Speicherzellen ist jeder programmierte Speicherzustand einer Verifizierungsspannung zugeordnet. Bei einer NAND-Speicherzelle mit einem gegebenen Datenzustand wird davon ausgegangen, dass das Programmieren abgeschlossen ist, wenn ein Erfassungsvorgang bestimmt, dass die Schwellenspannung (Vth) der Speicherzelle über der zugeordneten Verifizierungsspannung liegt. Ein Abtastvorgang kann bestimmen, ob eine Speicherzelle eine Spannung Vth über der zugeordneten Verifizierungsspannung aufweist, indem die zugehörige Verifizierungsspannung an das Steuer-Gate angelegt wird und ein Strom durch die Speicherzelle erfasst wird. Wenn der Strom relativ hoch ist, zeigt dies an, dass sich die Speicherzelle in einem leitfähigen Zustand befindet, sodass die Spannung Vth kleiner ist als die Spannung am Steuer-Gate. Wenn der Strom relativ niedrig ist, zeigt dies an, dass sich die Speicherzelle in einem nicht-leitfähigen Zustand befindet, sodass die Spannung Vth über der Spannung am Steuer-Gate liegt.
  • Zusätzlich zu den oben beschriebenen Verifizierungsvorgängen kann ein Bitabtastungsvorgang durchgeführt werden, um zu bestimmen, wann das Programmieren für eine Gruppe von Speicherzellen abgeschlossen ist. Wie hierin verwendet, ist eine „Bitabtastung“ ein Vorgang, der die Anzahl von Speicherzellen zählt, deren Programmiereigenschaft sich nicht über einen bestimmten Verifizierungsspannungspegel für einen bestimmten Speicherzustand verschoben hat. Bei NAND-Speicherzellen ist eine Bitabtastung ein Vorgang, der eine Anzahl von Speicherzellen zählt, deren Schwellenspannung sich nicht über einen bestimmten Verifizierungspegel für einen bestimmten Speicherzustand verschoben hat. Zum Beispiel ist Bitabtastung für den Zustand S1 eine Zählung der Anzahl der Speicherzellen für den Datenzustand S1, deren Schwellenspannungen sich nicht über einen Verifizierungsspannungspegel für den Datenzustand S1 verschoben haben (siehe Vv1 in 9). Gleichermaßen ist eine Bitabtastung für den Zustand S2 eine Zählung für die Anzahl der Speicherzellen für den Datenzustands S2, deren Schwellenspannung nicht über eine Verifizierungsspannung für den Datenzustand S2 (siehe Vv2 in 9) verschoben wurde, und so weiter. Das Programmieren von Speicherzellen für einen bestimmten Datenzustand kann als abgeschlossen angesehen werden, wenn der Bitabtastungszahl kleiner als ein vorbestimmter Wert ist (Bitignorierungskriterium). In einigen Ausführungsformen können die Bitignorierungskriterien für die Speichervorrichtung als Ganzes oder für jede einzelne Wortleitung eingestellt werden. Somit kann das Programmieren von Speicherzellen in einen bestimmten Datenzustand als abgeschlossen betrachtet werden, selbst wenn alle dieser Speicherzellen keine Schwellenspannungen aufweisen, die sich über einen Verifizierungsspannungspegel für den Datenzustand verschoben haben, solange die Anzahl von „fehlerhaften“ Speicherzellen kleiner als das Bitignorierungskriterium ist. Die folgende Offenbarung beschreibt Techniken zum Reduzieren der Programmierzeit durch Überspringen bestimmter Verifizierungsvorgänge, um die Leistung so zu verbessern, dass die Zuverlässigkeit nicht beeinträchtigt wird.
  • 1A ist ein Blockdiagramm einer beispielhaften Speichervorrichtung. Die Speichervorrichtung 100 kann einen oder mehrere Speicher-Dies 108 einschließen. Das Speicher-Die 108 schließt eine Speicherstruktur 126 von Speicherzellen, z. B. ein Array von Speicherzellen, eine Steuerschaltung 110 und Lese/Schreib-Schaltungen 128 ein. Die Speicherstruktur 126 ist durch Wortleitungen über einen Zeilendecodierer 124 und durch Bitleitungen über einen Spaltendecodierer 132 adressierbar. Die Schreib-/Leseschaltungen 128 schließen mehrere Erfassungsblöcke SB1, SB2, ... SBp (Erfassungsschaltlogik) ein und ermöglichen das parallele Lesen oder Programmieren einer Seite von Speicherzellen. In der Regel ist eine Steuerung 122 in derselben Speichervorrichtung 100 (z. B. einer entfembaren Speicherkarte) eingeschlossen wie der eine oder mehrere Speicher-Dies 108. Befehle und Daten werden zwischen dem Host 140 und der Steuerung 122 über einen Datenbus 120 und zwischen der Steuerung und dem einen oder den mehreren Speicher-Dies 108 über Leitungen 118 übertragen.
  • Die Speicherstruktur 126 kann zweidimensional oder dreidimensional sein. Die Speicherstruktur 126 kann ein oder mehrere Arrays von Speicherzellen aufweisen, einschließlich eines dreidimensionalen Arrays. Die Speicherstruktur 126 kann eine monolithische dreidimensionale Speicherstruktur aufweisen, in der mehrere Speicherebenen über (und nicht in) einem einzelnen Substrat wie einem Wafer ohne dazwischen liegende Substrate ausgebildet sind. Die Speicherstruktur 126 kann jede Art von nichtflüchtigem Speicher aufweisen, der monolithisch in einer oder mehreren physischen Ebenen von Arrays von Speicherzellen ausgebildet ist, die über einen aktiven Bereich verfügen, der über einem Siliziumsubstrat angeordnet ist. Die Speicherstruktur 126 kann sich in einer nichtflüchtigen Speichervorrichtung befinden, die Schaltungen aufweist, die dem Betrieb der Speicherzellen zugeordnet sind, ganz gleich, ob sich die zugehörige Schaltung oberhalb oder innerhalb des Substrats befindet.
  • Die Steuerschaltlogik 110 arbeitet mit den Lese-/Schreibschaltungen 128 zusammen, um Speichervorgänge auf der Speicherstruktur 126 auszuführen, und schließt eine Zustandsmaschine 112, einen On-Chip-Adressdecodierer 114 und ein Leistungssteuerungsmodul 116 ein. Die Zustandsmaschine 112 stellt eine Steuerung von Speichervorgängen auf Speicherebene bereit.
  • Eine Speicherungsregion 113 kann zum Beispiel für Programmierparameter bereitgestellt werden. Die Programmierparameter können eine Programmspannung, eine Vorspannung für die Programmspannung, Positionsparameter, die die Positionen der Speicherzellen angeben, Parameter für die Dicke der Kontaktleitungsverbinder, eine Verifizierungsspannung und/oder dergleichen einschließen. Die Positionsparameter können eine Position einer Speicherzelle innerhalb des gesamten Arrays von NAND-Ketten, eine Position einer Speicherzelle innerhalb einer bestimmten NAND-Ketten-Gruppe, eine Position einer Speicherzelle in einer bestimmten Ebene und/oder dergleichen angeben. Die Parameter für die Dicke des Kontaktleitungsverbinders können die Dicke des Kontaktleitungsverbinders, das Substrat oder das Material, aus dem der Kontaktleitungsverbinder besteht, und/oder dergleichen angeben.
  • Der On-Chip-Adressdecodierer 114 stellt eine Adressschnittstelle zwischen derjenigen, die von dem Host oder einer Speichersteuerung verwendet wird, und der Hardware-Adresse bereit, die von den Decodierern 124 und 132 verwendet wird. Das Leistungssteuermodul 116 steuert die Leistung und Spannungen, die den Wortleitungen und Bitleitungen während Speichervorgängen zugeführt werden. Es kann Treiber für Wortleitungen, SGS- und SGD-Transistoren und Sourceleitungen einschließen. Die Abtastblöcke können in einem Ansatz Bitleitungstreiber einschließen. Ein SGS-Transistor ist ein Auswahlgate-Transistor an einem Source-Ende einer NAND-Kette, und ein SGD-Transistor ist ein Auswahlgate-Transistor an einem Drain-Ende einer NAND-Kette.
  • In einigen Ausführungsformen können einige der Komponenten kombiniert werden. Bei verschiedenen Ausführungen können eine oder mehrere der Komponenten (allein oder in Kombination), die sich von der Speicherstruktur 126 unterscheiden, als mindestens eine Steuerschaltung betrachtet werden, die eingerichtet ist, um die hierin beschriebenen Vorgänge durchzuführen. Die Steuerschaltlogik kann zum Beispiel eines oder eine Kombination von Steuerschaltlogik 110, Zustandsmaschine 112, Decodierer 114/132, Leistungssteuerungsmodul 116, Erfassungsblöcke SBb, SB2, ... , SBp, Lese-/Schreibschaltungen 128, Steuerung 122 und so weiter einschließen.
  • Die Steuerschaltungen können eine Programmierschaltung einschließen, die so eingerichtet ist, dass sie einen Programmier- und Verifizierungsvorgang für einen Satz von Speicherzellen durchführt, wobei der eine Satz von Speicherzellen Speicherzellen aufweist, die so zugeordnet sind, dass sie einen Datenzustand aus einer Vielzahl von Datenzuständen darstellen, und Speicherzellen, die so zugeordnet sind, dass sie einen anderen Datenzustand aus der Vielzahl von Datenzuständen darstellen; der Programm- und Verifizierungsvorgang eine Vielzahl von Programm- und Verifizierungsiterationen aufweist; und wobei die Programmierschaltung in jeder Programmier- und Verifizierungsiteration ein Programmieren für die eine Wortleitung durchführt, wonach die Programmierschaltung ein Verifizierungssignal an die eine Wortleitung anlegt. Die Steuerschaltungen können auch eine Zählschaltung enthalten, die so eingerichtet ist, dass sie die Anzahl der Speicherzellen ermittelt, die einen Verifizierungstest für den einen Datenzustand bestanden haben. Die Steuerschaltungen können auch eine Bestimmungsschaltung einschließen, die so eingerichtet ist, dass sie basierend auf einer Menge, um die die Zählung einen Schwellenwert überschreitet, eine bestimmte Programmier- und Verifizierungsiteration aus der Vielzahl der Programmier- und Verifizierungsiteration bestimmt, in der ein Verifizierungstest für den anderen Datenzustand für die Speicherzellen, die zur Darstellung des anderen Datenzustands zugewiesen sind, durchgeführt wird.
  • 1 B ist zum Beispiel ein Blockdiagramm einer beispielhaften Steuerschaltung 150, die eine Programmierschaltung 151, eine Zählschaltung 152 und eine Bestimmungsschaltung 153 aufweist.
  • Die Off-Chip-Steuerung 122 kann einen Prozessor 122c, Speicherungsvorrichtungen (Speicher) wie ROM 122a und RAM 122b und eine Fehlerkorrekturcode-Maschine (ECC) 245 aufweisen. Die ECC-Maschine kann eine Anzahl von Lesefehlern korrigieren, die verursacht werden, wenn der obere Schwanz einer Vth-Verteilung zu hoch wird. In einigen Fällen können jedoch unkorrigierbare Fehler vorliegen. Die hierin bereitgestellten Techniken verringern die Wahrscheinlichkeit von unkorrigierbaren Fehlern.
  • Die Speichervorrichtung(en) 122a, 122b weisen einen Code auf, wie einen Satz von Anweisungen, und der Prozessor 122c kann betrieben werden, um den Satz von Anweisungen auszuführen und die hierin beschriebene Funktionalität bereitzustellen. Alternativ oder zusätzlich kann der Prozessor 122c auf Code aus einer Speicherungsvorrichtung 126a der Speicherstruktur 126 zugreifen, wie auf einen reservierten Speicherzellenbereich in einer oder mehreren Wortleitungen. Der Code kann zum Beispiel von der Steuerung 122 verwendet werden, um auf die Speicherstruktur 126 zuzugreifen, wie für Programmier-, Lese- und Löschvorgänge. Der Code kann Bootcode und Steuercode (z. B. einen Satz von Anweisungen) einschließen. Der Bootcode ist eine Software, die die Steuerung 122 während eines Boot- oder Startvorgangs initialisiert und der Steuerung 122 ermöglicht, auf die Speicherstruktur 126 zuzugreifen. Der Code kann von der Steuerung 122 verwendet werden, um eine oder mehrere Speicherstrukturen 126 zu steuern. Nach dem Einschalten holt der Prozessor 122c den Bootcode aus dem ROM 122a oder der Speicherungsvorrichtung 126a zur Ausführung, und der Bootcode initialisiert die Systemkomponenten und lädt den Steuercode in den RAM 122b. Sobald der Steuercode in den RAM 122b geladen ist, wird er durch den Prozessor 122c ausgeführt. Der Steuercode enthält Treiber zum Durchführen grundlegender Aufgaben, wie Steuern und Zuweisen von Speicher, Priorisieren der Verarbeitung von Befehlen und Steuern von Eingabe- und Ausgabeports.
  • Im Allgemeinen kann der Steuercode Anweisungen einschließen, um die hierin beschriebenen Funktionen einschließlich der weiter unten erläuterten Schritte der Flussdiagramme durchzuführen und um die Spannungswellenformen einschließlich der weiter unten erläuterten bereitzustellen.
  • In einer Ausführungsform ist der Host eine Rechenvorrichtung (z. B. ein Laptop, ein Desktop, ein Smartphone, ein Tablet, eine Digitalkamera), die einen oder mehrere Prozessoren, eine oder mehrere prozessorlesbare Speicherungsvorrichtungen (RAM, ROM, Flash-Speicher, Festplattenlaufwerk, Solid-State-Memory) einschließt, die einen prozessorlesbaren Code (z. B. eine Software) zum Programmieren der einen oder der mehreren Prozessoren speichert, um die hierin beschriebenen Verfahren durchzuführen. Der Host kann auch einen zusätzlichen Systemspeicher, eine oder mehrere Eingabe-/Ausgabeschnittstellen und/oder eine oder mehrere Eingabe-/Ausgabevorrichtungen einschließen, die mit dem einem oder den mehreren Prozessoren in Kommunikation stehen.
  • Andere Arten von nichtflüchtigen Speichern zusätzlich zu NAND-Flash-Speichern können ebenfalls verwendet werden.
  • Halbleiterspeichervorrichtungen schließen flüchtige Speichervorrichtungen ein, wie Dynamic Random Access Memory-Vorrichtungen („DRAM-Vorrichtungen“) oder Static Random Access Memory-Vorrichtungen („SRAM-Vorrichtungen“), nichtflüchtige Speichervorrichtungen, wie Resistive Random Access Memory („ReRAM“), Electrically Erasable Programmable Read Only Memory („EEPROM“), Flash-Speicher (der auch als Untergruppe eines EEPROM betrachtet werden kann), Ferroelectric Random Access Memory („FRAM“) und Magnetoresistive Random Access Memory („MRAM“), und andere Halbleiterelemente, die Informationen speichern können. Jeder Typ von Speichervorrichtung kann unterschiedliche Konfigurationen aufweisen. Zum Beispiel können Flash-Speichervorrichtungen in einer NAND- oder NOR-Konfiguration eingerichtet sein.
  • Die Speichervorrichtungen können aus passiven und/oder aktiven Elementen in beliebigen Kombinationen gebildet sein. Als ein nichteinschränkendes Beispiel schließen passive Halbleiterspeicherelemente ReRAM-Vorrichtungselemente ein, die in einigen Ausführungsformen ein widerstandsschaltendes Speicherungselement wie ein Anti-Fuse- oder Phasenwechselmaterial und gegebenenfalls ein Lenkelement wie eine Diode oder einen Transistor einschließen. Weiterhin schließen als nichteinschränkendes Beispiel aktive Halbleiterspeicherelemente EEPROM- und Flash-Speichervorrichtungselemente ein, die in einigen Ausführungsformen Elemente einschließen, die einen Ladungsspeicherungsbereich enthalten, wie ein Floating-Gate, leitende Nanopartikel oder ein dielektrisches Ladungsspeicherungsmaterial.
  • Mehrere Speicherelemente können derart eingerichtet sein, dass sie in Reihe geschaltet sind, oder derart, dass jedes Element einzeln zugänglich ist. Als nicht einschränkendes Beispiel enthalten Flash-Speichervorrichtungen in einer NAND-Konfiguration (NAND-Speicher) üblicherweise Speicherelemente, die in Reihe geschaltet sind. Eine NAND-Kette ist ein Beispiel für einen Satz von in Reihe geschalteten Transistoren, aufweisend Speicherzellen und SG-Transistoren.
  • Ein NAND-Speicherarray kann so eingerichtet werden, dass das Array aus mehreren Speicherketten besteht, wobei eine Kette aus mehreren Speicherelementen besteht, die sich eine einzelne Bitleitung teilen und auf die als Gruppe zugegriffen wird. Alternativ können Speicherelemente derart eingerichtet sein, dass jedes Element einzeln zugänglich ist, z. B. ein NOR-Speicherarray. NAND- und NOR-Speicherkonfigurationen sind Beispiele, und Speicherelemente können anderweitig eingerichtet sein. Die Halbleiterspeicherelemente, die in und/oder über einem Substrat angeordnet sind, können in zwei oder drei Dimensionen angeordnet sein, wie einer zweidimensionalen Speicherstruktur oder einer dreidimensionalen Speicherstruktur.
  • In einer zweidimensionalen Speicherstruktur sind die Halbleiterspeicherelemente in einer einzelnen Ebene oder einer einzelnen Speichervorrichtungsebene angeordnet. Üblicherweise sind in einer zweidimensionalen Speicherstruktur Speicherelemente in einer Ebene (z.B. in einer Ebene in x-y-Richtung) angeordnet, die sich im Wesentlichen parallel zu einer Hauptfläche eines Substrats erstreckt, das die Speicherelemente trägt. Das Substrat kann ein Wafer sein, über oder in dem die Schicht der Speicherelemente gebildet ist, oder es kann ein Trägersubstrat sein, das an den Speicherelementen befestigt wird, nachdem diese gebildet werden. Als ein nicht einschränkendes Beispiel kann das Substrat einen Halbleiter, wie Silizium, einschließen.
  • Die Speicherelemente können auf der einzelnen Speichervorrichtungsebene in einem geordneten Array angeordnet sein, wie in einer Vielzahl von Zeilen und/oder Spalten. Jedoch können die Speicherelemente in nicht regelmäßigen oder nicht orthogonalen Konfigurationen angeordnet sein. Die Speicherelemente können jeweils zwei oder mehr Elektroden oder Kontaktleitungen, wie Bitleitungen und Wortleitungen, aufweisen.
  • Ein dreidimensionales Speicherarray ist so angeordnet, dass Speicherelemente mehrere Ebenen oder mehrere Speichervorrichtungsebenen belegen, wodurch eine Struktur in drei Dimensionen gebildet wird (d. h. in der x-, y- und z-Richtung, wo die z-Richtung im Wesentlichen senkrecht ist und die x- und y-Richtungen im Wesentlichen parallel zur Hauptoberfläche des Substrats verlaufen).
  • Als nicht einschränkendes Beispiel kann eine dreidimensionale Speicherstruktur vertikal als Stapel mehrerer zweidimensionaler Speichervorrichtungsebenen angeordnet sein. Als weiteres nicht einschränkendes Beispiel kann ein dreidimensionales Speicherarray als mehrere vertikale Spalten (z.B. Spalten, die sich im Wesentlichen senkrecht zur Hauptfläche des Substrats erstrecken, d. h. in y-Richtung) angeordnet sein, wobei jede Spalte mehrere Speicherelemente aufweist. Die Spalten können in einer zweidimensionalen Konfiguration angeordnet sein, z.B. in einerx-y-Ebene, was in einer dreidimensionalen Anordnung von Speicherelementen mit Elementen auf mehreren vertikal gestapelten Speicherebenen resultiert. Andere Konfigurationen von Speicherelementen in drei Dimensionen können auch ein dreidimensionales Speicherarray bilden.
  • Als nicht einschränkendes Beispiel können in einer dreidimensionalen Anordnung von NAND-Ketten die Speicherelemente miteinander gekoppelt werden, um eine NAND-Kette innerhalb einer einzigen horizontalen (z. B. x-y) Speichervorrichtungsebene zu bilden. Alternativ können die Speicherelemente miteinander gekoppelt sein, um eine vertikale NAND-Kette zu bilden, die über mehrere horizontale Speichervorrichtungsebenen verläuft. Andere dreidimensionale Konfigurationen können in Betracht gezogen werden, wobei einige NAND-Ketten Speicherelemente in einer einzelnen Speicherebene enthalten, während andere Ketten Speicherelemente enthalten, die sich über mehrere Speicherebenen erstrecken. Dreidimensionale Speicherarrays können auch in einer NOR-Konfiguration und in einer ReRAM-Konfiguration ausgebildet sein.
  • Üblicherweise werden in einem monolithischen dreidimensionalen Speicherarray eine oder mehrere Speichervorrichtungsebenen über einem einzelnen Substrat gebildet. Optional kann das monolithische dreidimensionale Speicherarray auch eine oder mehrere Speicherschichten mindestens teilweise innerhalb des einzelnen Substrats aufweisen. Als ein nicht einschränkendes Beispiel kann das Substrat einen Halbleiter, wie Silizium, einschließen. In einem monolithischen dreidimensionalen Array werden die Schichten, die die einzelnen Speichervorrichtungsebenen des Arrays bilden, üblicherweise auf den Schichten der darunter liegenden Speichervorrichtungsebenen des Arrays gebildet. Jedoch können Schichten von benachbarten Speichervorrichtungsebenen eines monolithischen dreidimensionalen Speicherarrays gemeinsam genutzt werden oder Zwischenschichten zwischen Speichervorrichtungsebenen aufweisen.
  • Auch können wiederum zweidimensionale Arrays getrennt gebildet und dann zusammengepackt werden, um eine nicht monolithische Speichervorrichtung mit mehreren Speicherschichten zu bilden. Zum Beispiel können nicht monolithische gestapelte Speicher konstruiert werden, indem Speicherebenen auf separaten Substraten gebildet und dann die Speicherebenen übereinander gestapelt werden. Die Substrate können vor dem Stapeln gedünnt oder von den Speichervorrichtungsebenen entfernt werden, aber da die Speichervorrichtungsebenen anfänglich über separaten Substraten gebildet werden, sind die resultierenden Speicherarrays keine monolithischen dreidimensionalen Speicherarrays. Weiterhin können mehrere zweidimensionale Speicherarrays oder dreidimensionale Speicherarrays (monolithisch oder nicht monolithisch) auf separaten Chips gebildet und dann zusammengepackt werden, um eine gestapelte Chip-Speichervorrichtung zu bilden.
  • 2 veranschaulicht schematische Ansichten von drei Arten von Speicherarchitekturen, die gestaffelte Speicherketten verwenden. Zum Beispiel zeigt Referenznummer 201 eine schematische Ansicht einer ersten beispielhaften Speicherarchitektur, die Referenznummer 203 zeigt eine schematische Ansicht einer zweiten beispielhaften Speicherarchitektur und die Referenznummer 205 zeigt eine schematische Ansicht einer dritten beispielhaften Speicherarchitektur. In einigen Ausführungsformen, wie gezeigt, kann die Speicherarchitektur ein Array von gestaffelten NAND-Ketten einschließen.
  • 2 veranschaulicht Blöcke 200, 210 von Speicherzellen in einer beispielhaften zweidimensionalen Konfiguration des Speicherarrays 126 von 1. Das Speicherarray 126 kann viele solche Blöcke 200, 210 einschließen. Jeder beispielhafte Block 200, 210 schließt eine Anzahl von NAND-Ketten und entsprechenden Bitleitungen ein, z. B. BL0, BL1, ... die von den Blöcken gemeinsam genutzt werden. Jede NAND-Kette ist an einem Ende mit einem drain-seitigen Auswahl-Gate (SGD) verbunden, und die Steuer-Gates der Drain-Auswahl-Gates sind über eine gemeinsame SGD-Leitung verbunden. Die NAND-Ketten sind an ihrem anderen Ende mit einem source-seitigen Auswahl-Gate (SGS) verbunden, das wiederum mit einer gemeinsamen Source-Leitung 220 verbunden ist. Sechzehn Wortleitungen, zum Beispiel WL0-WL15, verlaufen zwischen den SGSs und den SGDs. In einigen Fällen können im Speicherarray neben den Auswahl-Gate-Transistoren auch Dummy-Wortleitungen verwendet werden, die keine Benutzerdaten enthalten. Solche Dummy-Wortleitungen können die Randdatenwortleitung vor bestimmten Randeffekten abschirmen.
  • Ein Typ von nichtflüchtigem Speicher, der in dem Speicherarray bereitgestellt werden kann, ist ein Floating-Gate-Speicher, wie er in den 3A und 3B gezeigt ist. Es können aber auch andere Arten von nichtflüchtigem Speicher verwendet werden. Wie weiter unten näher erläutert, verwendet eine ladungseinfangende Speicherzelle in einem anderen, in den 4A und 4B gezeigten Beispiel ein nichtleitendes dielektrisches Material anstelle eines leitenden Floating-Gates, um Ladung nichtflüchtig zu speichern. Ein dreischichtiges Dielektrikum aus Siliziumoxid, Siliziumnitrid und Siliziumoxid („ONO“) ist zwischen einem leitenden Steuer-Gate und einer Oberfläche eines halbleitenden Substrats über dem Speicherzellenkanal angeordnet. Die Zelle wird programmiert, indem Elektronen aus dem Zellkanal in das Nitrid eingespritzt werden, wo sie eingefangen und in einem begrenzten Bereich gespeichert werden. Diese gespeicherte Ladung verändert dann die Schwellenspannung eines Abschnitts des Kanals der Zelle auf eine Weise, die nachweisbar ist. Die Zelle wird durch Einspritzen heißer Löcher in das Nitrid gelöscht. Eine ähnliche Zelle kann in einer Split-Gate-Konfiguration bereitgestellt werden, bei der sich ein dotiertes Polysilizium-Gate über einem Abschnitt des Speicherzellenkanals erstreckt und dadurch einen separaten Auswahl-Transistor bildet.
  • Bei einem anderen Ansatz werden NROM-Zellen verwendet. Zwei Bit werden zum Beispiel in jeder NROM-Zelle gespeichert, in der sich eine dielektrische ONO-Schicht über dem Kanal zwischen Source- und Drain-Diffusion erstreckt. Die Ladung für ein Datenbit ist in der an den Drain angrenzenden dielektrischen Schicht lokalisiert, und die Ladung für das andere Datenbit ist in der an die Source angrenzenden dielektrischen Schicht lokalisiert. Die Datenspeicherung in mehreren Zuständen wird durch separates Lesen binärer Zustände der physisch getrennten Ladungsspeicherungsbereiche innerhalb des Dielektrikums erreicht. Andere Arten nichtflüchtiger Speicher sind ebenfalls bekannt.
  • 3A veranschaulicht eine Querschnittsansicht von beispielhaften Floating-Gate-Speicherzellen 300, 310, 320 in NAND-Ketten. In dieser Figur geht die Richtung einer Bitleitung oder NAND-Kette in die Seite hinein, und die Richtung einer Wortleitung geht von links nach rechts. Als Beispiel erstreckt sich die Wortleitung 324 über NAND-Ketten, die die jeweiligen Kanalregionen 306, 316 und 326 einschließen. Die Speicherzelle 300 schließt ein Steuer-Gate 302, ein Floating-Gate 304, eine Tunneloxidschicht 305 und die Kanalregion 306 ein. Die Speicherzelle 310 schließt ein Steuer-Gate 312, ein Floating-Gate 314, eine Tunneloxidschicht 315 und die Kanalregion 316 ein. Die Speicherzelle 320 schließt ein Steuer-Gate 322, ein Floating-Gate 321, eine Tunneloxidschicht 325 und die Kanalregion 326 ein. Jede Speicherzelle 300, 310, 320 befindet sich in einer anderen jeweiligen NAN D-Kette. Eine interpolare dielektrische (lPD) Schicht 328 ist ebenfalls veranschaulicht. Die Steuer-Gates 302, 312, 322 sind Abschnitte der Wortleitung. Eine Querschnittsansicht entlang des Kontaktleitungsverbinders 329 ist in 3B bereitgestellt.
  • Das Steuer-Gate 302, 312, 322 umschließt das Floating-Gate 304, 314, 321, wodurch die Oberflächenkontaktfläche zwischen dem Steuer-Gate 302, 312, 322 und dem Floating-Gate 304, 314, 321 erhöht wird. Daraus ergibt sich eine höhere IPD-Kapazität, was zu einem höheren Kopplungsverhältnis führt, was das Programmieren und Löschen erleichtert. Bei der Verkleinerung von NAND-Speichervorrichtungen wird jedoch der Abstand zwischen benachbarten Zellen 300, 310, 320 kleiner, so dass für das Steuer-Gate 302, 312, 322 und die IPD-Schicht 328 zwischen zwei benachbarten Floating-Gates 302, 312, 322 fast kein Platz mehr vorhanden ist.
  • Als Alternative wurde, wie in den 4A und 4B gezeigt, die flache oder planare Speicherzelle 400, 410, 420 entwickelt, bei der das Steuer-Gate 402, 412, 422 flach oder planar ist; d. h. sie umschließt nicht das Floating-Gate und hat nur von oben Kontakt mit der Ladungsspeicherungsschicht 428. In diesem Fall ist ein hohes Floating-Gate nicht von Vorteil. Stattdessen wird das Floating-Gate deutlich dünner ausgeführt. Weiterhin kann das Floating-Gate zur Ladungsspeicherung verwendet werden, oder es kann eine dünne Ladungsfallenschicht zum Einfangen von Ladung verwendet werden. Dieser Ansatz kann das Problem des ballistischen Elektronentransports vermeiden, bei dem ein Elektron während der Programmierung durch das Floating-Gate wandern kann, nachdem es durch das Tunneloxid getunnelt wurde.
  • 4A stellt eine Querschnittsansicht von beispielhaften ladungseinfangenden Speicherzellen 400, 410, 420 in NAND-Ketten dar. Die Ansicht ist in einer Wortleitungsrichtung von Speicherzellen 400, 410, 420, die ein flaches Steuer-Gate und ladungseinfangende Regionen, als zweidimensionales Beispiel von Speicherzellen 400, 410, 420 in dem Speicherzellenarray 126 aus 1, aufweisen. Der Ladungseinfangspeicher kann in einer NOR- und NAND-Flash-Speichervorrichtung verwendet werden. Bei dieser Technologie wird ein Isolator wie eine SiN-Folie zum Speichern von Elektronen verwendet, im Gegensatz zu einer Floating-Gate-MOSFET-Technologie, bei der ein Leiter wie dotiertes polykristallines Silizium zum Speichern von Elektronen verwendet wird. Zum Beispiel erstreckt sich eine Wortleitung 424 über NAND-Ketten, die jeweilige Kanalbereiche 406, 416, 426 einschließen. Abschnitte der Wortleitung stellen Steuer-Gates 402, 412, 422 bereit. Unterhalb der Wortleitung befinden sich eine IPD-Schicht 428, Ladungseinfangsschichten 404, 414, 421, Polysiliziumschichten 405, 415, 425, sowie die Tunnelschichten 409, 407, 408. Jede Ladungseinfangsschicht 404, 414, 421 erstreckt sich kontinuierlich in einer jeweiligen NAND-Kette. Die flache Konfiguration des Steuer-Gates kann dünner als ein Floating-Gate gemacht werden. Außerdem können die Speicherzellen näher beieinander platziert werden.
  • 4B veranschaulicht eine Querschnittsansicht der Struktur von 4A entlang des Kontaktleitungsverbinders 429. Die NAND-Kette 430 schließt einen SGS-Transistor 431, beispielhafte Speicherzellen 400, 433, ... 435 und einen SGD-Transistor 436 ein. Durchgänge in der IPD-Schicht428 in den SGS- und SGD-Transistoren 431, 436 ermöglichen die Kommunikation zwischen den Steuer-Gate-Schichten 402 und den Floating-Gate-Schichten. Die Steuer-Gate 402 und Floating-Gate-Schichten können aus Polysilizium bestehen und die Tunneloxidschicht kann zum Beispiel aus Siliziumoxid bestehen. Die IPD-Schicht 428 kann ein Stapel aus Nitriden (N) und Oxiden (O) sein, wie in einer N-O-N-O-N-Konfiguration.
  • Die NAND-Kette kann auf einem Substrat gebildet werden, das eine p-Typ-Substratregion 455, einen n-Typ-Well 456 und einen p-Typ-Well 457 aufweist. N-Typ Source-/Drain-Diffusionsregionen sd1, sd2, sd3, sd4, sd5, sd6 und sd7 werden in dem p-Typ-Well gebildet. Eine Kanalspannung, Vch, kann direkt an die Kanalregion des Substrats angelegt werden.
  • 5 veranschaulicht ein beispielhaftes Blockdiagramm des Erfassungsblocks SB1 von 1. In einem Ansatz weist ein Erfassungsblock mehrere Erfassungsschaltungen auf. Jeder Erfassungsschaltung sind Datenauffangregister zugeordnet. Die Erfassungsschaltungen 550a, 551a, 552a und 553a sind zum Beispiel den Datenhaltespeichern 550b, 551b, 552b und 553b zugeordnet. Bei einem Ansatz können unterschiedliche Untergruppen von Bitleitungen unter Verwendung unterschiedlicher jeweiliger Erfassungsblöcke abgetastet werden. Dies ermöglicht, dass die Prozessorlast, die zu den Erfassungsschaltungen gehört, durch einen jeweiligen Prozessor in jedem Erfassungsblock aufgeteilt und gehandhabt wird. Die Erfassungsschaltungsteuerung 560 in SB1 kann zum Beispiel mit dem Satz der Erfassungsschaltungen und Haltespeicher kommunizieren. Die Erfassungsschaltungsteuerung 560 kann eine Vorladeschaltung 561 einschließen, die jeder Erfassungsschaltung eine Spannung zur Einstellung einer Vorladespannung bereitstellt. In einem möglichen Ansatz wird die Spannung jeder Erfassungsschaltung unabhängig, z. B. über den Datenbus und einen lokalen Bus, bereitgestellt. In einem anderen möglichen Ansatz wird jeder Erfassungsschaltung gleichzeitig eine gemeinsame Spannung bereitgestellt. Die Erfassungsschaltungsteuerung 560 kann auch eine Vorladeschaltung 561, einen Speicher 562 und einen Prozessor 563 einschließen. Der Speicher 562 kann einen Code speichern, der vom Prozessor ausgeführt werden kann, um die hierin beschriebenen Funktionen durchzuführen. Diese Funktionen können das Lesen der Haltespeicher 550b, 551b, 552b, 553b, die den Erfassungsschaltungen 550a, 551a, 552a, 553a zugeordnet sind, das Einstellen von Bitwerten in den Haltespeichern und das Bereitstellen von Spannungen zum Einstellen von Vorladepegeln in den Erfassungsknoten der Erfassungsschaltungen 550a, 551a, 552a, 553a einschließen. Weitere Beispieldetails zur Erfassungsschaltungsteuerung 560 und zu den Erfassungsschaltungen 550a, 551a, 552a, 553a werden im Folgenden bereitgestellt.
  • In einigen Ausführungsformen kann eine Speicherzelle ein Flag-Register einschließen, das einen Satz von Haltespeichern zum Speichern von Flag-Bits einschließt. In einigen Ausführungsformen kann eine Menge von Flag-Registern einer Menge von Datenzuständen entsprechen. In einigen Ausführungsformen können ein oder mehrere Flag-Register zur Steuerung eines Typs der Verifizierungstechnik bei der Verifizierung von Speicherzellen verwendet werden. In einigen Ausführungsformen kann die Ausgabe eines Flag-Bits die zugehörige Logik der Vorrichtung, z. B. die Adressdecodierungsschaltlogik, so modifizieren, dass ein bestimmter Block von Zellen ausgewählt wird. Ein Massenbetrieb (z. B. ein Löschvorgang usw.) kann unter Verwendung der im Flag-Register gesetzten Flags oder einer Kombination des Flag-Registers mit dem Adressregister, wie bei der impliziten Adressierung, oder alternativ durch direkte Adressierung mit dem Adressregister allein durchgeführt werden.
  • 6A ist eine perspektivische Ansicht eines Satzes von Blöcken 600 in einer beispielhaften dreidimensionalen Konfiguration des Speicherarrays 126 von 1. Auf dem Substrat befinden sich beispielhafte Blöcke BLK0, BLK1, BLK2, BLK3 von Speicherzellen (Speicherelementen) und ein Peripheriebereich 604 mit Schaltlogik zur Verwendung durch die Blöcke BLK0, BLK1, BLK2, BLK3. Zum Beispiel kann die Schaltlogik die Spannungstreiber 605 einschließen, die mit Steuer-Gate-Schichten der Blöcke BLK0, BLK1, BLK2, BLK3 verbunden werden können. Bei einem Ansatz werden Steuer-Gate-Schichten auf einer gemeinsamen Höhe in den Blöcken BLK0, BLK1, BLK2, BLK3 gemeinsam angesteuert. Das Substrat 601 kann auch Schaltlogik unter den Blöcken BLK0, BLK1, BLK2, BLK3 zusammen mit einer oder mehreren unteren Metallschichten tragen, welche in Leiterbahnen strukturiert sind, um Signale der Schaltlogik zu tragen. Die Blöcke BLK0, BLK1, BLK2, BLK3 werden in einer Zwischenregion 602 der Speichervorrichtung gebildet. In einer oberen Region 603 der Speichervorrichtung sind eine oder mehrere obere Metallschichten in Leiterbahnen strukturiert, um Signale der Schaltlogik zu tragen. Jeder der Blöcke BLK0, BLK1, BLK2, BLK3 weist einen gestapelten Speicherzellenbereich auf, wobei abwechselnde Ebenen des Stapels Wortleitungen darstellen. In einem möglichen Ansatz BLK0, BLK1, BLK2, BLK3 hat jeder Block gegenüberliegende abgestufte Seiten, von denen sich vertikale Kontakte nach oben zu einer oberen Metallschicht erstrecken, um Verbindungen zu Leiterbahnen herzustellen. Während vier Blöcke BLK0, BLK1, BLK2, BLK3 beispielhaft veranschaulicht sind, können zwei oder mehr Blöcke verwendet werden, die sich in x- und/oder y-Richtung erstrecken.
  • Bei einem möglichen Ansatz stellt die Länge der Ebene in x-Richtung eine Richtung dar, in der sich Signalpfade zu Wortleitungen in der einen oder den mehreren oberen Metallschichten erstrecken (eine Wortleitungs- oder SGD-Leitungsrichtung), und die Breite der Ebene in y-Richtung stellt eine Richtung dar, in der sich Signalpfade zu Bitleitungen in der einen oder den mehreren oberen Metallschichten (eine Bitleitungsrichtung) erstrecken. Die z-Richtung stellt eine Höhe der Speichervorrichtung dar.
  • 6B veranschaulicht eine beispielhafte Querschnittsansicht eines Abschnitts von einem der Blöcke BLK0, BLK1, BLK2, BLK3 von 6A. Der Block weist einen Stapel 610 aus abwechselnd leitenden und dielektrischen Schichten auf. In diesem Beispiel weisen die leitfähigen Schichten zwei SGD-Schichten, zwei SGS-Schichten und vier Dummy-Wortleitungsschichten DWLD0, DWLD1, DWLS0 und DWLS1, zusätzlich zu den Datenwortleitungsschichten (Wortleitungen) WLL0-WLL10 auf. Die dielektrischen Schichten werden als DL0 bis DL19 bezeichnet. Weiterhin sind Regionen des Stapels 610 veranschaulicht, die die NAND-Ketten NS1 und NS2 aufweisen. Jede NAND-Kette umfasst ein Speicherloch 618 oder 619, das mit Materialien gefüllt ist, die benachbart zu den Wortleitungen Speicherzellen bilden. Eine Region 622 des Stapels 610 ist in 6D detaillierter gezeigt und wird nachstehend ausführlicher erörtert.
  • Der 610 Stapel schließt ein Substrat 611, eine Isolierschicht 612 auf dem Substrat 611 und einen Abschnitt einer Source-Leitung SL ein. NS1 hat ein Source-Ende 613 an einer Unterseite 614 des Stapels und ein Drain-Ende 615 an einer Oberseite 616 des Stapels 610. Kontaktleitungsverbinder (z. B. Schlitze, wie metallgefüllte Schlitze) 617, 620 können periodisch über den Stapel 610 als Verbindungen bereitgestellt werden, die sich durch den Stapel 610 erstrecken, wie zur Verbindung der Source-Leitung mit einer bestimmten Kontaktleitung oberhalb des Stapels 610. Die Kontaktleitungsverbinder 617, 620 können bei der Bildung der Wortleitungen verwendet und anschließend mit Metall gefüllt werden. Ein Abschnitt einer Bitleitung BL0 ist ebenfalls veranschaulicht. Eine leitende Durchkontaktierung 621 verbindet die Drain-Seite 615 mit BL0.
  • 6C veranschaulicht eine grafische Darstellung des Speicherlochdurchmessers im Stapel von 6B. Die vertikale Achse ist auf den Stapel von 6B ausgerichtet und veranschaulicht eine Breite (wMH), z. B. den Durchmesser, der Speicherlöcher 618 und 619. Die Wortleitungsschichten WLL0-WLL10 von 6A werden als Beispiel wiederholt und befinden sich auf den jeweiligen Höhen z0-z10 im Stapel. In einer solchen Speichervorrichtung weisen die Speicherlöcher, die durch den Stapel geätzt werden, ein sehr hohes Seitenverhältnis auf. Zum Beispiel ist ein Verhältnis der Tiefe zum Durchmesser von etwa 25 bis 30 üblich. Die Speicherlöcher können einen kreisförmigen Querschnitt aufweisen. Aufgrund des Ätzprozesses kann die Speicherlochbreite über die Länge des Lochs variieren. Üblicherweise wird der Durchmesser von oben nach unten in dem Speicherloch immer kleiner. Das heißt, die Speicherlöcher verjüngen sich, wobei sie sich am Boden des Stapels verengen. In einigen Fällen kommt es zu einer leichten Verengung am oberen Ende des Lochs in der Nähe des Auswahlgates, sodass der Durchmesser etwas breiter wird, bevor er vom oberen Ende zum unteren Ende des Speicherlochs hin immer kleiner wird.
  • Aufgrund der ungleichmäßigen Breite des Speicherlochs kann die Programmiergeschwindigkeit, einschließlich der Programmflanke und der Löschgeschwindigkeit der Speicherzellen in Abhängigkeit von ihrer Position entlang des Speicherlochs variieren, z. B. in Abhängigkeit von ihrer Höhe im Stapel. Bei einem kleineren Durchmesser des Speicherlochs ist das elektrische Feld über dem Tunneloxid relativ stärker, sodass die Programmier- und Löschgeschwindigkeit relativ höher ist. Ein Ansatz besteht darin, Gruppen von benachbarten Wortleitungen zu definieren, für die der Speicherlochdurchmesser ähnlich ist, z. B. innerhalb eines definierten Durchmesserbereichs, und ein optimiertes Verifizierungsschema für jede Wortleitung in einer Gruppe anzuwenden. Verschiedene Gruppen können unterschiedlich optimierte Verifizierungsschemata aufweisen.
  • 6D veranschaulicht eine Detailansicht der Region 622 des Stapels 610 von 6B. Speicherzellen sind an den verschiedenen Ebenen des Stapels an dem Schnittpunkt einer Wortleitungsschicht und eines Speicherlochs ausgebildet. In diesem Beispiel sind die SGD-Transistoren 680, 681 über den Dummy-Speicherzellen 682, 683 und einer Datenspeicherzelle MC bereitgestellt. Eine Reihe von Schichten kann entlang der Seitenwand (SW) des Speicherlochs 630 und/oder innerhalb jeder Wortleitungsschicht abgeschieden werden, z. B. unter Verwendung von Atomschichtabscheidung. Zum Beispiel kann jede Säule (z. B. die Säule, die durch die Materialien innerhalb eines Speicherlochs 630 gebildet wird) eine Ladungseinfangsschicht oder einen Ladungseinfangsfilm 663 wie SiN oder ein anderes Nitrid, eine Tunnelschicht 664, einen Polysiliziumkörper oder Kanal 665 und einen dielektrischen Kern 666 einschließen. Eine Wortleitungsschicht kann ein sperrendes Oxid-/Block-High-k-Material 660, eine Metallbarriere 661 und ein leitendes Metall 662 wie Wolfram als Steuer-Gate einschließen. Es werden zum Beispiel die Steuer-Gates 690, 691, 692, 693 und 694 bereitgestellt. In diesem Beispiel werden alle Schichten mit Ausnahme des Metalls in dem Speicherloch 630 bereitgestellt. In anderen Ansätzen können einige der Schichten in der Steuer-Gate-Schicht sein. Zusätzliche Säulen sind gleichermaßen in den verschiedenen Speicherlöchern ausgebildet. Eine Säule kann eine säulenförmige aktive Fläche (AA) einer NAND-Kette bilden.
  • Wenn eine Speicherzelle programmiert wird, werden Elektronen in einem Teil der Ladungseinfangschicht gespeichert, welche der Speicherzelle zugeordnet ist. Diese Elektronen werden in die Ladungseinfangschicht aus dem Kanal und durch die Tunnelschicht gezogen. Die Vth einer Speicherzelle wird proportional zu der Menge der gespeicherten Ladung erhöht. Während eines Löschvorgangs kehren die Elektronen in den Kanal zurück.
  • Jedes der Speicherlöcher 630 kann mit einer Vielzahl von ringförmigen Schichten gefüllt sein, die eine Blockieroxidschicht, eine Ladungseinfangsschicht 663, eine Tunnelschicht 664 und eine Kanalschicht aufweisen. Eine Kernregion jedes der Speicherlöcher 630 ist mit einem Körpermaterial gefüllt, und die Vielzahl von ringförmigen Schichten befindet sich zwischen der Kernregion und der Wortleitung in jedem der Speicherlöcher 630.
  • Die NAND-Kette kann als einen Floating-Body-Kanal aufweisend betrachtet werden, da die Länge des Kanals nicht auf einem Substrat ausgebildet ist. Weiterhin wird die NAND-Kette durch eine Vielzahl von Wortleitungsschichten bereitgestellt, die übereinander in einem Stapel angeordnet und durch dielektrische Schichten voneinander getrennt sind.
  • 7A veranschaulicht eine Draufsicht auf eine beispielhafte Wortleitungsschicht WLL0 des Stapels 610 von 6B. Wie vorstehend erwähnt, kann eine dreidimensionale Speichervorrichtung einen Stapel aus abwechselnd leitenden und dielektrischen Schichten aufweisen. Die leitenden Schichten stellen die Steuer-Gates der SG-Transistoren und Speicherzellen bereit. Die für die SG-Transistoren verwendeten Schichten sind SG-Schichten, und die für die Speicherzellen verwendeten Schichten sind Wortleitungsschichten. Weiterhin sind im Stapel Speicherlöcher gebildet und mit einem Ladungseinfangmaterial und einem Kanalmaterial gefüllt. Dadurch wird eine vertikale NAND-Kette gebildet. Sourceleitungen sind mit den NAND-Ketten unter dem Stapel verbunden, und Bitleitungen sind mit den NAND-Ketten über dem Stapel verbunden.
  • Ein Block BLK in einer dreidimensionalen Speichervorrichtung kann in Unterblöcke unterteilt werden, wobei jeder Unterblock eine NAND-Kette aufweist, die eine gemeinsame SGD-Steuerleitung aufweist. Siehe zum Beispiel die SGD-Leitungen/Steuergates SGD0, SGD1, SGD2 und SGD3 in den Unterblöcken SBa, SBb, SBc bzw. SBd. Weiterhin kann eine Wortleitungsschicht in einem Block in Regionen unterteilt sein. Jede Region befindet sich in einem jeweiligen Unterblock und kann sich zwischen Kontaktleitungsverbindern (z. B. Schlitzen) erstrecken, die periodisch im Stapel gebildet werden, um die Wortleitungsschichten während des Herstellungsprozesses der Speichervorrichtung zu verarbeiten. Diese Bearbeitung kann das Ersetzen eines Opfermaterials der Wortleitungsschichten durch Metall einschließen. Im Allgemeinen sollte der Abstand zwischen den Kontaktleitungsverbindern relativ klein sein, um eine Begrenzung der Entfernung zu berücksichtigen, die ein Ätzmittel seitlich zurücklegen kann, um das Opfermaterial zu entfernen, und die das Metall zurücklegen kann, um einen Hohlraum zu füllen, der durch die Entfernung des Opfermaterials entstanden ist. Der Abstand zwischen den Kontaktleitungsverbindern kann zum Beispiel einige Zeilen von Speicherlöchern zwischen benachbarten Kontaktleitungsverbindern zulassen. Das Layout der Speicherlöcher und Kontaktleitungsverbinder sollte auch eine Begrenzung der Anzahl der Bitleitungen berücksichtigen, die sich über die Region erstrecken können, während jede Bitleitung mit einer anderen Speicherzelle verbunden ist. Nach der Bearbeitung der Wortleitungsschichten können die Kontaktleitungsverbinder optional mit Metall gefeilt werden, um eine Verbindung durch den Stapel bereitzustellen.
  • In diesem Beispiel befinden sich vier Zeilen von Speicherlöchern zwischen benachbarten Kontaktleitungsverbindern. Eine Zeile ist hier eine Gruppe von Speicherlöchern, die in x-Richtung ausgerichtet sind. Außerdem befinden sich die Zeilen von Speicherlöchern in einem gestaffelten Muster, um die Dichte der Speicherlöcher zu erhöhen. Die Wortleitungsschicht oder Wortleitung ist in Regionen WLL0 a, WLL0 b, WLL0 c und WLL0 d unterteilt, die jeweils durch eine Kontaktleitung 713 verbunden sind. Bei einem Ansatz kann die letzte Region einer Wortleitungsschicht in einem Block mit einer ersten Region einer Wortleitungsschicht in einem nächsten Block verbunden sein. Die Kontaktleitung 713 wiederum ist mit einem Spannungstreiber für die Wortleitungsschicht verbunden. Die Region WLL0a weist entlang einer Kontaktleitung 712 beispielhafte Speicherlöcher 710, 711 auf. Die Region WLL0b hat beispielhafte Speicherlöcher 714, 715. Die Region WLL0c hat beispielhafte Speicherlöcher 716, 717. Die Region WLL0d hat beispielhafte Speicherlöcher 718, 719. Die Speicherlöcher sind auch in 7B gezeigt. Jedes Speicherloch kann Teil einer entsprechenden NAND-Kette sein. Zum Beispiel können die Speicherlöcher 710, 714, 716 und 718 Teil der NAND-Ketten NS0_SBa, NS1_SBb, NS2_SBc, NS3_SBd und NS4_SBe sein.
  • Jeder Kreis stellt den Querschnitt eines Speicherlochs an einer Wortleitungsschicht oder SG-Schicht dar. Jeder Kreis, der mit gestrichelten Linien gezeigt ist, stellt Speicherzellen dar, die durch die Materialien in dem Speicherloch und durch die benachbarte Wortleitungsschicht bereitgestellt werden. Zum Beispiel sind die Speicherzellen 820, 821 in WLL0a, die Speicherzellen 824, 825 in WLL0b, die Speicherzellen 826, 827 in WLL0c und die Speicherzellen 828, 829 in WLL0d. Diese Speicherzellen befinden sich auf einer gemeinsamen Höhe in dem Stapel.
  • Kontaktleitungsverbinder (z. B. Schlitze, wie metallgefüllte Schlitze) 801, 802, 803, 804 können sich zwischen und angrenzend an die Kanten der Regionen WLL0a-WLL0d befinden. Die Kontaktleitungsverbinder 801, 802, 803, 804 stellen eine Leiterbahn von der Unterseite des Stapels zur Oberseite des Stapels bereit. Beispielsweise kann eine Sourceleitung an der Unterseite des Stapels mit einer leitfähigen Leitung über dem Stapel verbunden sein, wobei die leitfähige Leitung mit einem Spannungstreiber in einer peripheren Region der Speichervorrichtung verbunden ist. Siehe auch 9A für weitere Details zu den Unterblöcken SBa-SBd von 8A.
  • 8B veranschaulicht eine Draufsicht auf eine beispielhafte obere dielektrische Schicht DL19 des Stapels von 7B. Die dielektrische Schicht ist in die Regionen DL19a, DL19b, DL19c und DL19d unterteilt. Jede Region kann mit einem jeweiligen Spannungstreiber verbunden sein. Dies ermöglicht, dass ein Satz von Speicherzellen in einer Region einer Wortleitungsschicht gleichzeitig programmiert wird, wobei jede Speicherzelle in einer jeweiligen NAND-Kette ist, die mit einer jeweiligen Bitleitung verbunden ist. Eine Spannung kann auf jeder Bitleitung eingestellt werden, um die Programmierung während jeder Programmierspannung zu ermöglichen oder zu unterbinden.
  • Die Region DL19a weist die beispielhaften Speicherlöcher 710, 711 entlang einer Kontaktleitung 712 auf, die mit einer Bitleitung BL0 zusammenfällt. Eine Anzahl von Bitleitungen erstreckt sich über die Speicherlöcher und ist mit den Speicherlöchern verbunden, wie durch die „X“-Symbole angedeutet. BL0 ist mit einem Satz von Speicherlöchern verbunden, der die Speicherlöcher 711, 715, 717, 719 einschließt. Eine andere beispielhafte Bitleitung BL1 ist mit einem Satz von Speicherlöchern verbunden, der die Speicherlöcher 710, 714, 716, 718 einschließt. Die Kontaktleitungsverbinder (z. B. Schlitze, wie metallgefüllte Schlitze) 701, 702, 703, 704 aus 7A sind ebenfalls veranschaulicht, da sie sich vertikal durch den Stapel erstrecken. Die Bitleitungen können in einer Sequenz BL0-BL23 über die DL19-Schicht in der x-Richtung nummeriert sein.
  • Unterschiedliche Untersätze von Bitleitungen sind mit Speicherzellen in verschiedenen Zeilen verbunden. Zum Beispiel sind BL0, BL4, BL8, BL12, BL16, BL20 mit Speicherzellen in einer ersten Zeile von Zellen am rechten Rand jeder Region verbunden. BL2, BL6, BL10, BL14, BL18, BL22 sind mit Speicherzellen in einer benachbarten Zeile von Zellen verbunden, die an die erste Zeile am rechten Rand angrenzt. BL3, BL7, BL11, BL15, BL19, BL23 sind mit Speicherzellen in einer ersten Zeile von Zellen am linken Rand jeder Region verbunden. BL1, BL5, BL9, BL13, BL17, BL21 sind mit Speicherzellen in einer benachbarten Zeile von Speicherzellen verbunden, die an die erste Zeile am linken Rand angrenzt.
  • Programmverifizierungsvorgänge sind in der Regel vom Vollsequenztyp oder vom Typ mit mehreren Durchläufen. In Vollsequenzprogrammiervorgängen werden die Speicherzellen der ausgewählten Wortleitung direkt auf ihre beabsichtigten Datenzustände unter Verwendung von progressiv ansteigenden Programmierimpulsen programmiert, bis das Programmieren abgeschlossen ist. In einem Programmiervorgang mit mehreren Durchgängen werden die Speicherzellen auf ihre beabsichtigten Datenzustände in zwei oder mehr Programmierdurchgängen programmiert.
  • Ein Typ des Programmiervorgangs mit mehreren Durchgängen ist in 10A und 10B dargestellt. 10A veranschaulicht einen ersten Durchgang (auch als „foggy“-Durchgang bekannt), in dem die Speicherzellen vom Löschzustand Er in die durch die Verteilungen 1012, 1014, 1016 dargestellten Datenzustände S1, S2 und S3 programmiert werden, wobei niedrigere Verifizierungspegel Vv1 L, Vv2L, Vv3L verwendet werden. Während des ersten Durchgangs kann eine relativ große Programmierspannungsschrittgröße (dVpgm) verwendet werden, um die Speicherzellen schnell auf die jeweiligen niedrigeren Verifizierungspegel zu programmieren. Der zweite Durchgang (auch als „fine“-Durchgang bekannt) ist in 10B dargestellt, und die Datenzustände S1, S2 und S3 werden von den jeweiligen unteren Verteilungen 1012, 1014, 1016 für jeweilige Endverteilungen 1002, 1004, 1006 unter Verwendung der nominalen höheren Verifizierungspegel Vv1, Vv2 und Vv3 programmiert. Eine relativ kleinere Programmierspannungsschrittgröße (dVpgm) kann im zweiten Durchgang verwendet werden, um die Speicherzellen langsam auf die jeweiligen Endverteilungen zu programmieren, während eine große Überschreitung vermieden wird. Zusätzliche Datenzustände können (z. B. die S4-S15-Datenzustände von 9) auch unter Verwendung des Programmiervorgangs mit mehreren Durchgängen programmiert werden, der in 10A und 10B dargestellt wird, indem der gleiche Vorgang folgt.
  • Eine andere Art des Programmiervorgangs mit mehreren Durchgängen ist in 11 dargestellt. In einem ersten Durchgang werden die Speicherzellen nicht auf alle der programmierten Datenzustände S1-S15, sondern nur auf die Datenzustände S4, S6 und S12 programmiert. Im ersten Durchgang kann eine relativ große Spannungsschrittgröße verwendet werden. In einem zweiten Durchgang werden die Speicherzellen im Zustand Er entweder im Zustand Er belassen oder auf die Datenzustände S1, S2 oder S3 programmiert; die Speicherzellen in dem Datenzustand S4 entweder im Datenzustand S4 belassen oder auf die Datenzustände S5, S10 oderS11 programmiert sind; die Speicherzellen in dem Datenzustand S6 entweder im Datenzustand S6 belassen oder auf die Datenzustände S7, S10 oder S11 programmiert sind; und die Speicherzellen des Datenzustands S12 werden entweder im Datenzustand S12 belassen oder auf die Datenzustände S13, S14 oder S15 programmiert. In einigen Ausführungsformen können der erste und der zweite Durchgang unterschiedliche Formen annehmen, z. B. könnten die Speicherzellen in dem ersten Durchgang auf andere Datenzustände im ersten Durchgang als die Datenzustände S4, S6 und S12 programmiert werden.
  • Die folgende Erörterung ist auf den zweiten Durchgang eines Programmiervorgangs mit mehreren Durchgängen anwendbar, wie entweder die Programmiervorgänge mit mehreren Durchgängen, die in 10 und 11 erörtert und veranschaulicht, oder andere Arten von Programmiervorgängen mit mehreren Durchgängen.
  • 12 stellt eine Wellenform 1200 eines beispielhaften Speicherzellenprogrammiervorgangs dar. Die horizontale Achse stellt den Zeitpunkt dar, die vertikale Achse die Steuer-Gate- oder Wortleitungsspannung. Im Allgemeinen kann ein Programmiervorgang das Anlegen einer Impulsfolge an eine ausgewählte Wortleitung beinhalten, wobei die Impulsfolge mehrere Programmschleifen oder Programmieren-Verifizieren-Iterationen einschließt. Der Programmierungsabschnitt der Programmieren-Verifizieren-Iteration schließt einen Vpgm-Impuls ein, und der Verifizierungsabschnitt der Programmieren-Verifizieren-Iteration schließt einen oder mehrere Verifizierungsimpulse ein.
  • Der Einfachheit halber wird für jeden Impuls eine quadratische Wellenform dargestellt; jedoch sind andere Formen möglich, wie eine mehrstufige Form oder eine ansteigende Form. Weiterhin wird in diesem Beispiel Incremental Step Pulse Programing (ISPP) verwendet, bei dem die Vpgm-Impulsamplitude in jeder nachfolgenden Programmschleife um einen festen Inkrementwert, z. B. dVpgm, erhöht wird. ISPP kann auch in einem oder beiden Programmierdurchgängen eines Vorgangs mit mehreren Durchläufen verwendet werden.
  • Die Impulsfolge schließt Vpgm-Impulse ein, deren Amplitude bei jeder Programmieren-Verifizieren-Iteration mit einer festen Schrittgröße (dVpgm) schrittweise zunimmt. Eine neue Impulsfolge beginnt bei einem anfänglichen Vpgm-Impulspegel und endet bei einem letzten Vpgm-Impulspegel, der einen maximal erlaubten Pegel nicht überschreitet. Die Impulsfolge 1200 schließt eine Reihe von Vpgm-Impulsen 1202, 1204, 1206, 1208, 1210, 1212, 1214, 1216, 1218 ein... die auf eine ausgewählte Wortleitung angewendet werden, die einen Satz nichtflüchtiger Speicherzellen einschließt. Nach jedem Vpgm-Impuls werden zum Beispiel basierend auf den Zielspeicherzuständen, die verifiziert werden, ein, zwei oder drei oder mehr Verifizierungsspannungsimpulse bereitgestellt. Zwischen den Vpgm-Impulsen und den Verifizierungsspannungsimpulsen kann eine Spannung von 0 V an eine ausgewählte Wortleitung angelegt werden.
  • Das Anlegen jedes Verifizierungsimpulses benötigt Zeit, wodurch die Programmierzeit tProg erhöht wird. Bei einem herkömmlichen Programmiervorgang mit mehreren Durchgängen verbraucht die Verifizierungskomponente des zweiten Durchgangs etwa sechsundvierzig Prozent (46 %) der gesamten tProg. Mit anderen Worten wurde nahezu die Hälfte der Gesamtprogrammierzeit, einschließlich sowohl der ersten als auch der zweiten Programmierdurchgänge, von den Verifizierungsimpulsen des zweiten Durchgangs verbraucht. Ein Ansatz, der versucht wurde, die Verifizierungszeit während des zweiten Durchgangs zu reduzieren, beinhaltet das Überspringen eines oder mehrerer Verifizierungsimpulse, aber in einigen Fällen kann dies zu einer unerwünschten Überprogrammierung und fehlerhaften Daten führen. Mit anderen Worten, während die Leistung (d. h. reduzierte tProg) durch die unter Verwendung dieses Ansatzes verbessert wurde, litt die Zuverlässigkeit.
  • Gemäß einem Gesichtspunkt der vorliegenden Offenbarung wird der Speichervorrichtung ein Parameter hinzugefügt, um das Programmieren bestimmter Speicherzellen zu verhindern oder zu verlangsamen und auch die Verifizierung in diesen Schleifen zu überspringen, wodurch die Gesamtzahl der Verifizierungsimpulse reduziert wird, die während des zweiten Durchgangs eines Programmiervorgangs mit mehreren Durchgängen angelegt werden. Im Gegensatz zu anderen Ansätzen, die in dem Programmiervorgang der beispielhaften Ausführungsform versucht wurden, wird die Verifizierung in beliebigen Schleifen nicht übersprungen, in denen das Programmieren bei einer normalen (nicht verlangsamt) Rate erfolgt. Es wurde festgestellt, dass diese Techniken die Leistung verbessern, indem tProg mit minimalem oder keinem Verlust an Zuverlässigkeit reduziert wird.
  • 13 ist eine grafische Darstellung, die die Vt-Verschiebung während eines Referenzprogrammiervorgangs (Leitung 1300) und einen Programmiervorgang gemäß einer ersten beispielhaften Ausführungsform (Leitung 1302) für die Speicherzellen, die auf einen gegebenen Datenzustand Sn programmiert werden, z. B. einen der Datenzustände S2-S15, veranschaulicht. Für beide Leitungen identifizieren die offenen Kreise die Programmierschleifen, bei denen die Verifizierung übersprungen wird, und die Quadrate identifizieren die Programmierschleifen, bei denen die Verifizierung auftritt.
  • Bei dem Referenzprogrammiervorgang der Leitung 1300 werden die Speicherzellen, die in den Datenzustand Sn programmiert werden, nicht beim Programmieren gesperrt, bis das Programmieren abgeschlossen ist, und die Verifizierung beginnt bei der Schleifenprogrammierzählverifizierung (PCV)+1. Wie gezeigt, beginnt die Vt der Speicherzellen bei etwa der Schleife PCV erheblich zu steigen und die Vt-Verschiebung beginnt mit einer linearen Rate bei etwa der Schleife PCV+3. Zusätzlich wird in dem Referenzprogrammiervorgang die Verifizierung bei der Schleife PCV+5 abgeschlossen, an der ein weiteres Programmieren dieser Speicherzellen gesperrt ist. Mit anderen Worten sind insgesamt fünf Verifizierungsschleifen erforderlich, um das Programmieren des Datenzustands Sn abzuschließen. In einem Beispiel ist 14 eine Tabelle, die Programmschleifen 1-28 und programmierte Datenzustände S1-S15 einschließt, wobei die 1 identifizieren, welche Programmschleifen für jeden programmierten Datenzustand verifiziert werden. Zum Beispiel wird die Verifizierung des Datenzustands S1 in den Schleifen 1-7 durchgeführt, die Verifizierung für den Datenzustand S2 wird in den Schleifen 2-8 durchgeführt, die Verifizierung für den Datenzustand S3 wird in Schleifen 3-9 durchgeführt, die Verifizierung für den Datenzustand S4 wird in den Schleifen 4-11 durchgeführt und so weiter. Somit ist in diesem Beispiel PCV für den Datenzustand S1 die Schleife 1, PCV für den Datenzustand S2 ist die Schleife 2, PCV für den Datenzustand S3 ist die Schleife 3, PCV für den Datenzustand S4 ist die Schleife 3 und so weiter.
  • Unter erneuter Bezugnahme auf 13 wird im Gegensatz zu dem Referenzprogrammiervorgang in der beispielhaften Ausführungsform das Programmieren der Speicherzellen, die in den Datenzustand Sn programmiert werden, während der Schleifen PCV-1 und PCV durch Anlegen einer Sperrspannung (wie VDDSA) an die Bitleitungen, die mit diesen Speicherzellen gekoppelt sind, gesperrt. Dies ermöglicht es, dass die PCV-Schleife später als in dem Referenzprogrammiervorgang liegt. Da das Programmieren für diese beiden Schleifen gesperrt ist, nimmt die Vt dieser Speicherzellen nicht zu, da dies im Referenzprogrammiervorgang der Fall ist. Sobald jedoch das Programmieren bei der Schleife PCV+1 beginnt, ist die anfängliche Rate, die auftritt, signifikant höher (schneller) als der Fall im Referenzprogrammiervorgang, da Vpgm zu Beginn des Programmierens aufgrund von ISPP auf einem höheren Niveau liegt. Es ist in 13 auch zu beobachten, dass die Vt-Verschiebung für diese Speicherzellen von dem Zeitprogrammieren linear zunimmt, ab dem Zeitpunkt, zu dem das Programmieren bei der Schleife PCV+1 beginnt, bis das Programmieren abgeschlossen ist. Dieser Anstieg der Vt von einer Programmschleife zu der nächsten nähert sich dem Wert, um den die Programmierspannung Vpgm zwischen Programmierschleifen zunimmt, d. h dVpgm. Somit ist die Verifizierung bei der Schleife PCV+4 abgeschlossen, und die Gesamtzahl der Verifizierungsschleifen beträgt vier. Durch Reduzieren der Anzahl der Verifizierungsschleifen von fünf im Referenzprogrammiervorgang auf vier im Programmiervorgang der beispielhaften Ausführungsform wurde tProg.
  • 15 ist eine Tabelle ähnlich wie 14, die jedoch wird identifiziert, welche Schleifen für welche Datenzustände gemäß dem Programmiervorgang der beispielhaften Ausführungsform verifiziert werden. Die 0 identifizieren die Schleifen, in denen das Programmieren und die Verifizierung im Referenzprogrammiervorgang durchgeführt wurde, die aber im Programmiervorgang des Ausführungsbeispiels übersprungen werden. Die 2 identifizieren die Schleifen, in denen das Programmieren im Referenzprogrammiervorgang aufgetreten ist, aber nicht im Programmiervorgang gemäß dem Ausführungsbeispiel. Wie gezeigt, wird mindestens ein Verifizierungsimpuls für jeden der Datenzustände S2-S15 übersprungen, wodurch tProg erheblich um die Zeit reduziert wird, die benötigt wird, um jeden Verifizierungsimpuls mal vierzehn durchzuführen (einer für jeden der Datenzustände S2-S15).
  • In einer zweiten beispielhaften Ausführungsform kann für mindestens einen programmierten Datenzustand das Programmieren für drei Schleifen insgesamt (PCV-2, PCV-1 und PCV) gesperrt werden, wobei die erste Verifizierung während der Schleife PCV so erfolgt, dass die Gesamtzahl der Verifizierungsimpulse, die auftreten müssen, im Vergleich zum Referenzprogrammiervorgang noch um eins reduziert wird. In anderen Ausführungsformen kann das Programmieren für alle Schleifen vor PCV+1 gesperrt werden. Welche bestimmte Schleifenverifizierung PCV für jeden Datenzustand eingestellt wird, wird vorbestimmt und in einer Datenbank innerhalb der Speichervorrichtung voreingestellt. Während des Programmierens wird auf diese Datenbank Bezug genommen, um zu bestimmen, welche Schleifen zu programmieren sind, die das Programmieren sperren, und mit Verifizierung welcher Schleife begonnen werden soll.
  • In einigen Ausführungsformen kann, anstatt das Programmieren während der Schleifen PCV-1 und PCV (und PCV-2 in einigen Ausführungsformen) zu sperren, das Programmieren verlangsamt werden, indem eine Spannung, die kleiner als eine Sperrspannung ist (die in einigen Ausführungsformen 2,2 V beträgt), aber größer als null ist, an die Bitleitungen angelegt wird, die mit den Speicherzellen gekoppelt sind, die programmiert werden. Da das Programmieren verlangsamt wurde, ist es nicht erforderlich, die Verifizierungsvorgänge während der PCV-Schleife durchzuführen.
  • 16 zeigt eine grafische Darstellung der Zuverlässigkeit (Vt-Breite, gemessen in mV, wobei ein niedrigerer Wert besser ist) gegenüber Leistung (Geschwindigkeit, gemessen in MB/s, wobei ein höherer Wert besser ist) für verschiedene Einstellungen, die entweder unter Verwendung des Referenzprogrammiervorgangs (Leitung 1600) oder des Programmiervorgangs des ersten Ausführungsbeispiels (Leitung 1602) verwendet werden können. Wie mit Pfeilen veranschaulicht, stellt der Programmiervorgang der beispielhaften Ausführungsform im Vergleich zu dem Referenzprogrammiervorgang eine Erhöhung der Leistung von etwa 8 % ohne Verlust an Zuverlässigkeit bereit. Dies wäre dem Verlust von etwa 200 mV Zuverlässigkeit äquivalent, um die gleiche Leistung bei Verwendung des Referenzprogrammiervorgangs zu erreichen.
  • Unter Bezugnahme auf 17 und 18 wird für jeden programmierten Datenzustand die Programmierschleife, auf die PCV gesetzt wird, experimentell bestimmt und wird in der Speichervorrichtung zur Referenz während zukünftiger Programmiervorgänge voreingestellt. 18 veranschaulicht die Vt-Schwellenwerte einer Vielzahl von programmierten Datenzuständen in einer QLC-Speichervorrichtung, die unter Verwendung eines herkömmlichen Programmiervorgangs programmiert wurde, wobei die verschiedenen Linien unterschiedliche Anfangs- oder Startprogrammierspannungen VPGMU identifizieren, d. h VPGMU ist die Vpgm-Spannung in der ersten Schleife des Programmiervorgangs. Die Legende nimmt Bezug auf den Unterschied von einer Basislinie mit 0, die nicht 0 V, sondern keinen Unterschied zu einer Basislinienspannung darstellt. Die mit „3“ gekennzeichnete Kurve ist das Ergebnis des Programmierens, das mit einer Basislinien-VPGMU-Spannung beginnt, die um 300 mV versetzt ist, wobei die mit „6“ gekennzeichnete Kurve das Ergebnis des Programmierens mit einem Versatz der Basislinien-VPGMU-Spannung um 600 mV ist, und so weiter. Wie veranschaulicht, verschieben sich die Vt-Schwellenwerte nach rechts (höhere Spannung) mit zunehmender VPGMU aufgrund der höheren Startspannungen. 17 veranschaulicht das beobachtete obere Ende, d. h den Ort der abwärts geneigten Linie für jeden Datenzustand nach dem Programmieren gegenüber den in 18 gezeigten VPGMU-Verschiebungen. Wie gezeigt, verschiebt sich für jeden programmierten Datenzustand das obere Ende nach rechts entlang einer exponentialähnlichen Kurve von einer VPGMU-Verschiebungsspannung von 0 bis etwa 1,2 V (die Kurve „12“ in der Legende) und nimmt dann linear von einer VPGMU-Verschiebung von 1,2 V bis 1,8 V zu. In einer Ausführungsform der vorliegenden Offenbarung wird für jeden programmierten Datenzustand die PCV (die letzte Programmierschleife vor der Programmieren) als die letzte Vpgm-Spannung eingestellt, bevor die Kurve beginnt, die sich mit einer gleichbleibenden Zustandsrate erhöht.
  • In der grafischen Darstellung von 17 stellt die Linie 1700 die Programmierkurve gemäß der beispielhaften Ausführungsform dar. Für jeden programmierten Datenzustand über den ersten programmierten Datenzustand (z. B. S1) wird das Programmieren bei den nicht gleichbleibenden Spannungen gesperrt und dann beginnt das Programmieren bei einer gleichbleibenden Spannung, z. B. äquivalent zu einer VPGMU-Verschiebung von 1,2 V.
  • Unter Bezugnahme auf 19 ist ein Flussdiagramm dargestellt, das eine beispielhafte Ausführungsform eines Verfahrens zum Programmieren einer Speichervorrichtung mit verbesserter Leistung darstellt. In Schritt 1900 wird ein erster Programmierdurchgang eines Programmiervorgangs mit mehreren Durchgängen durchgeführt. In Schritt 1902 beginnt ein zweiter Programmierdurchgang, und ein Schleifenzähler Schleife wird auf eins gesetzt.
  • In Entscheidungsschritt 1904 wird für jeden zu programmierenden Datenzustand bestimmt, ob Schleife kleiner als eine vordefinierte PCV ist. Wenn die Antwort in Entscheidungsschritt 1904 ja ist, dann wird in Schritt 1906 ein Programmierimpuls Vpgm an die ausgewählte Wortleitung angelegt, und eine Bitleitungsspannung VBL wird auf null gesetzt oder eine Basislinienspannung wird an die Bitleitungen angelegt, die mit den Speicherzellen gekoppelt sind, die programmiert werden. Vpgm wird dann inkrementell erweitert (Vpgm = Vpgm + dVpgm), und die Schleife wird inkrementell erhöht (Schleife = Schleife + 1). Verifizierung wird übersprungen.
  • Wenn die Antwort in Entscheidungsschritt 1904 nein ist, dann wird in Entscheidungsschritt 1908 für jeden zu programmierenden Datenzustand bestimmt, ob eine Schleife kleiner als PCV+2 ist.
  • Wenn die Antwort in Entscheidungsschritt 1908 ja ist, dann wird in Schritt 1910 ein Programmierimpuls Vpgm an die ausgewählte Wortleitung angelegt, und eine Bitleitungsspannung, die auf VBL_Slow eingestellt ist, wird an die Bitleitungen angelegt, die mit den Speicherzellen gekoppelt sind, die programmiert werden, um das Programmieren zu verlangsamen. Vpgm wird dann inkrementell erweitert (Vpgm = Vpgm + dVpgm), und die Schleife wird inkrementell erhöht (Schleife = Schleife + 1). Verifizierung wird übersprungen, wenn eine Schleife gleich PCV (Schleife = PCV) ist. VBL_Slow ist eine Nicht-Null-Spannung, die kleiner als die Sperrspannung ist.
  • Wenn die Antwort in Entscheidungsschritt nein ist, dann wird in Schritt 1912 ein Programmierimpuls Vpgm an die ausgewählte Wortleitung angelegt, und eine Bitleitungsspannung, die auf null gesetzt ist oder eine Schnelldurchgang-Schreibspannung (VBL_QPW) wird an die Bitleitungen angelegt, die mit den Speicherzellen gekoppelt sind, die programmiert werden. Vpgm wird dann inkrementell erweitert (Vpgm = Vpgm + dVpgm), und die Schleife wird inkrementell erhöht (Schleife = Schleife + 1). Verifizierung erfolgt. VBL_QPW ist eine Nicht-Null-Spannung, die kleiner als die Sperrspannung ist.
  • Der Entscheidungsschritt 1914 folgt entweder Schritt 1910 oder Schritt 1912. In Entscheidungsschritt 1914 wird für jeden zu programmierenden Datenzustand verifiziert, ob er passiert wurde. Wenn die Antwort in Entscheidungsschritt 1914 ja für einen der zu programmierenden Datenzustände ist, dann werden in Schritt 1916 die Speicherzellen dieses Datenzustands von dem weiteren Programmieren gesperrt, z. B. durch Einstellen einer Bitleitungsspannung VBL auf eine Sperrspannung während weiterer Programmierschleifen. Das Programmieren kann fortgesetzt werden, bis das Programmieren für alle Datenzustände abgeschlossen ist.
  • Wenn die Antwort in Entscheidungsschritt 1914 nein ist, wird in Entscheidungsschritt 1918 bestimmt, ob Schleife größer als eine vorbestimmte maximale Anzahl von Schleifen Loop_Max ist. Wenn die Antwort in Entscheidungsschritt 1918 ja ist, dann ist das Programmieren in Schritt 1920 fehlgeschlagen. Wenn die Antwort in Entscheidungsschritt 1918 nein ist, kehrt das Verfahren zum Entscheidungsschritt 1908 zurück.
  • In dem in 19 dargestellten Flussdiagramm können sich verschiedene Datenzustände gleichzeitig auf verschiedenen Stufen des Flussdiagramms befinden. Zum Beispiel könnten sich die Speicherzellen des Datenzustands S4 in der Schleife befinden, einschließlich der Schritte 1908-1918, während sich die Speicherzellen des Datenzustands S5 in der Schleife befinden, einschließlich der Schritte 1904-1906.
  • 20 veranschaulicht den Schwellenspannungspegel gegenüber Schleifen für eine Vielzahl von Speicherzellen, die auf einen beispielhaften Datenzustand gemäß dem in 19 dargestellten Programmiervorgang programmiert werden. In diesem Beispiel beginnt das Programmieren für die Programmierschleifen 13-16 mit der Bitleitungsspannung VBL auf null Volt (0 V). Für Schleifen 17 und 18 wird das Programmieren fortgesetzt, aber die Bitleitungsspannung VBL wird auf VBL_Slow auf ein langsames Programmieren eingestellt. Verifizierung beginnt bei Schleife 18 und fährt für alle Schleifen fort, bis das Programmieren abgeschlossen ist. Aus den Schleifen 19-20 wird die Bitleitungsspannung VBL wieder auf null gesetzt, um Programmiergeschwindigkeiten zu erhöhen.
  • Unter Bezugnahme auf 21 ist ein Flussdiagramm dargestellt, das eine weitere beispielhafte Ausführungsform eines Verfahrens zum Programmieren einer Speichervorrichtung mit verbessertem Programmieren darstellt. In Schritt 2100 wird ein erster Programmierdurchgang eines Programmiervorgangs mit mehreren Durchgängen durchgeführt. In Schritt 2102 beginnt ein zweiter Programmierdurchgang, und ein Schleifenzähler Schleife wird auf eins gesetzt.
  • In Entscheidungsschritt 2104 wird bestimmt, ob eine Schleife kleiner oder gleich PCV+1 ist. Wenn die Antwort in Entscheidungsschritt 2104 ja ist, dann wird in Schritt 2106 ein Programmierimpuls Vpgm an die ausgewählte Wortleitung angelegt, und eine Bitleitungsspannung VBL, die auf eine Sperrspannung gesetzt wird, wird an die Bitleitungen angelegt, die mit den Speicherzellen gekoppelt sind, die programmiert werden. Vpgm wird dann inkrementell erweitert (Vpgm = Vpgm + dVpgm), und die Schleife wird inkrementell erhöht (Schleife = Schleife + 1).
  • Wenn die Antwort in Entscheidungsschritt 2104 nein ist, wird in Schritt 2108 ein Programmierimpuls an die ausgewählte Wortleitung angelegt, und eine Bitleitungsspannung VBL, die auf null oder VB_QPW gesetzt ist, wird an die Bitleitungen angelegt, die mit den Speicherzellen gekoppelt sind, die programmiert werden. Vpgm wird dann inkrementell erweitert (Vpgm = Vpgm + dVpgm), und die Schleife wird inkrementell erhöht (Schleife = Schleife + 1). Verifizierung erfolgt.
  • In Entscheidungsschritt 2110 wird fürjeden der zu programmierenden Datenzustände bestimmt, ob Verifizierung passiert wurde. Wenn die Antwort in Entscheidungsschritt 2110 nein für einen der zu programmierenden Datenzustände ist, dann werden in Schritt 2112 die Speicherzellen dieses Datenzustands von dem weiteren Programmieren gesperrt, z. B. durch Einstellen einer Bitleitungsspannung VBL auf eine Sperrspannung während weiterer Programmierschleifen. In einer Ausführungsform beträgt die Sperrspannung ungefähr 2,2 V.
  • Wenn die Antwort in Entscheidungsschritt 2110 ja ist, wird in Entscheidungsschritt 2114 bestimmt, ob Schleife größer als Loop_Max ist. Wenn die Antwort in Entscheidungsschritt 2114 ja ist, dann ist das Programmieren in Schritt 2116 fehlgeschlagen. Wenn die Antwort in Entscheidungsschritt 2114 nein ist, kehrt das Verfahren zu Schritt 2108 zurück.
  • 22 veranschaulicht den Schwellenspannungspegel gegenüber Schleifen für eine Vielzahl von Speicherzellen, die auf einen beispielhaften Datenzustand gemäß dem in 21 dargestellten Programmiervorgang programmiert werden. In diesem Beispiel wird für die Programmierschleifen 13-18 das Programmieren der Speicherzellen gesperrt, indem eine Sperrbitleitungsspannung an die Bitleitungen angelegt wird, die mit den Speicherzellen gekoppelt sind. Von der Schleife 19 wird die Bitleitungsspannung auf entweder 0 V oder VB_QPW eingestellt, um zu ermöglichen, dass das das Programmieren beginnt, und die Verifizierung durchgeführt wird, bis das Programmieren abgeschlossen ist, was in diesem Beispiel in Schleife 22 auftritt.
  • Unter Bezugnahme auf 23 ist ein Flussdiagramm dargestellt, das eine weitere beispielhafte Ausführungsform eines Verfahrens zum Programmieren einer Speichervorrichtung darstellt. In Schritt 2300 beginnt das Programmieren, und ein Schleifenzähler Schleife wird auf null gesetzt. Für jeden zu programmierenden Datenzustand wird in Entscheidungsschritt 2302 bestimmt, ob eine Schleife kleiner als ein vorbestimmter Startschleifenzähler (BCS) ist.
  • Wenn die Antwort in Entscheidungsschritt 2302 ja ist, dann wird in Schritt 2304 ein Programmierimpuls an die ausgewählte Wortleitung angelegt, während die Bitleitungsspannung VBL auf null Volt eingestellt wird. Die Programmierspannung Vpgm wird dann inkrementell erhöht (Vpgm = Vpgm + dVpgm), und der Schleifenzähler Schleife wird inkrementell erhöht (Schleife = Schleife + 1). Verifizierung wird übersprungen. Das Verfahren kehrt zum Entscheidungsschritt 2302 zurück.
  • Wenn die Antwort in Entscheidungsschritt 2302 nein ist, dann fährt das Verfahren mit Entscheidungsschritt 2306 fort. Für jeden zu programmierenden Datenzustand wird in Entscheidungsschritt 2306 bestimmt, ob eine Schleife kleiner oder gleich einer vorbestimmten PCV ist.
  • Wenn die Antwort in Entscheidungsschritt 2306 ja ist, wird in Schritt 2308 ein Programmierimpuls an die ausgewählte Wortleitung angelegt, während die Bitleitungsspannung VBL auf eine Spannung VBL_Slow eingestellt wird, die größer als null Volt, aber kleiner als eine Sperrspannung ist. Die Programmierspannung Vpgm wird dann inkrementell erhöht (Vpgm = Vpgm + dVpgm), und der Schleifenzähler Schleife wird inkrementell erhöht (Schleife = Schleife + 1). Verifizierung wird übersprungen. Das Verfahren kehrt zum Entscheidungsschritt 2306 zurück.
  • Wenn die Antwort in Entscheidungsschritt 2306 nein ist, dann fährt das Verfahren mit Entscheidungsschritt 2310 fort. Für jeden zu programmierenden Datenzustand wird in Entscheidungsschritt 2310 bestimmt, ob eine Schleife kleiner oder gleich einem vorbestimmten Steuerendschleifenzähler (BCE) ist.
  • Wenn die Antwort in Entscheidungsschritt 2310 ja ist, dann wird in Schritt 2312 ein Programmierimpuls an die ausgewählte Wortleitung angelegt, während die Bitleitungsspannung VBL auf einen langsamen Pegel VBL_Slow eingestellt wird. Die Programmierspannung Vpgm wird dann inkrementell erhöht (Vpgm = Vpgm + dVpgm), und der Schleifenzähler Schleife wird inkrementell erhöht (Schleife = Schleife + 1). Verifizierung erfolgt. Das Verfahren fährt mit Entscheidungsschritt 2314 fort.
  • In Entscheidungsschritt 2314 wird für jeden zu programmierenden Datenzustand bestimmt, ob Verifizierung passiert wurde. Wenn die Antwort in Entscheidungsschritt 2314 ja ist, dann werden in Schritt 2316 die Speicherzellen, für die das Programmieren abgeschlossen ist, von dem weiteren Programmieren gesperrt (VBL wird auf VBL_lnhibit für zukünftige Programmierschleifen gesetzt). Wenn die Antwort in Entscheidungsschritt 2314 nein ist, dann fährt das Verfahren mit Entscheidungsschritt 2318 fort.
  • In Entscheidungsschritt 2318 wird bestimmt, ob eine Schleife größer als eine vorbestimmte maximale Anzahl von Schleifen Loop_Max ist. Wenn die Antwort in Entscheidungsschritt 2318 ja ist, dann ist das Programmieren in Schritt 2320 fehlgeschlagen. Wenn die Antwort in Entscheidungsschritt 2318 nein ist, kehrt das Verfahren zum Entscheidungsschritt 2310 zurück.
  • Wenn die Antwort in Entscheidungsschritt 2310 nein ist, dann wird in Schritt 2322 ein Programmierimpuls an die ausgewählte Wortleitung angelegt, während die Bitleitungsspannung VBL auf null Volt oder VBL_QPW eingestellt wird. Die Programmierspannung Vpgm wird dann inkrementell erhöht (Vpgm = Vpgm + dVpgm), und der Schleifenzähler Schleife wird inkrementell erhöht (Schleife = Schleife + 1). Verifizierung erfolgt. Das Verfahren fährt dann mit dem Entscheidungsschritt 2324 fort.
  • In Entscheidungsschritt 2324 wird für jeden zu programmierenden Datenzustand bestimmt, ob Verifizierung passiert wurde. Wenn die Antwort in Entscheidungsschritt 2324 ja ist, dann werden in Schritt 2326 die Speicherzellen, für die das Programmieren abgeschlossen ist, von dem weiteren Programmieren gesperrt (VBL wird auf VBL_lnhibit für zukünftige Programmierschleifen gesetzt). Wenn die Antwort in Entscheidungsschritt 2324 nein ist, dann fährt das Verfahren mit Entscheidungsschritt 2328 fort.
  • In Entscheidungsschritt 2328 wird bestimmt, ob eine Schleife größer als eine vorbestimmte maximale Anzahl von Schleifen Loop_Max ist. Wenn die Antwort in Entscheidungsschritt 2328 ja ist, dann ist das Programmieren in Schritt 2330 fehlgeschlagen. Wenn die Antwort in Entscheidungsschritt 2328 nein ist, kehrt das Verfahren zum Entscheidungsschritt 2322 zurück.
  • Unter Bezugnahme auf 24 ist ein Flussdiagramm dargestellt, das eine weitere beispielhafte Ausführungsform eines Verfahrens zum Programmieren einer Speichervorrichtung darstellt. In Schritt 2400 beginnt das Programmieren, und ein Schleifenzähler Schleife wird auf null gesetzt. Für jeden zu programmierenden Datenzustand wird in Entscheidungsschritt 2402 bestimmt, ob eine Schleife kleiner als ein vorbestimmter BCS ist.
  • Wenn die Antwort in Entscheidungsschritt 2402 ja ist, dann wird in Schritt 2404 ein Programmierimpuls an die ausgewählte Wortleitung angelegt, während die Bitleitungsspannung VBL auf null Volt eingestellt wird. Die Programmierspannung Vpgm wird dann inkrementell erhöht (Vpgm = Vpgm + dVpgm), und der Schleifenzähler Schleife wird inkrementell erhöht (Schleife = Schleife + 1). Verifizierung wird übersprungen. Das Verfahren kehrt zum Entscheidungsschritt 2402 zurück.
  • Wenn die Antwort in Entscheidungsschritt 2402 nein ist, dann fährt das Verfahren mit Entscheidungsschritt 2406 fort. Wenn die Antwort in Entscheidungsschritt 2406 ja ist, dann wird in Schritt 2408 ein Programmierimpuls an die ausgewählte Wortleitung angelegt, während die Bitleitungsspannung VBL auf eine Sperrspannung VBL_Inhibit eingestellt wird. Die Programmierspannung Vpgm wird dann inkrementell erhöht (Vpgm = Vpgm + dVpgm), und der Schleifenzähler Schleife wird inkrementell erhöht (Schleife = Schleife + 1). Verifizierung wird übersprungen. Das Verfahren kehrt zum Entscheidungsschritt 2406 zurück.
  • Wenn die Antwort in Entscheidungsschritt 2406 nein ist, dann fährt das Verfahren mit Entscheidungsschritt 2410 fort. Für jeden zu programmierenden Datenzustand wird in Entscheidungsschritt 2410 bestimmt, ob eine Schleife kleiner oder gleich einer vorbestimmten BCE ist.
  • Wenn die Antwort in Entscheidungsschritt 2410 ja ist, dann wird in Schritt 2412 ein Programmierimpuls an die ausgewählte Wortleitung angelegt, während die Bitleitungsspannung VBL auf eine Sperrspannung VBL_Inhibit eingestellt wird. Die Programmierspannung Vpgm wird dann inkrementell erhöht (Vpgm = Vpgm + dVpgm), und der Schleifenzähler Schleife wird inkrementell erhöht (Schleife = Schleife + 1). Verifizierung erfolgt. Das Verfahren fährt mit Entscheidungsschritt 2414 fort.
  • In Entscheidungsschritt 2414 wird für jeden zu programmierenden Datenzustand bestimmt, ob Verifizierung passiert wurde. Wenn die Antwort in Entscheidungsschritt 2414 ja ist, dann werden in Schritt 2416 die Speicherzellen, für die das Programmieren abgeschlossen ist, von dem weiteren Programmieren gesperrt (VBL wird auf VBL_lnhibit für zukünftige Programmierschleifen gesetzt). Wenn die Antwort in Entscheidungsschritt 2414 nein ist, dann fährt das Verfahren mit Entscheidungsschritt 2418 fort.
  • In Entscheidungsschritt 2418 wird bestimmt, ob eine Schleife größer als eine vorbestimmte maximale Anzahl von Schleifen Loop_Max ist. Wenn die Antwort in Entscheidungsschritt 2418 ja ist, dann ist das Programmieren in Schritt 2420 fehlgeschlagen. Wenn die Antwort in Entscheidungsschritt 2418 nein ist, kehrt das Verfahren zum Entscheidungsschritt 2410 zurück.
  • Wenn die Antwort in Entscheidungsschritt 2410 nein ist, dann wird in Schritt 2422 ein Programmierimpuls an die ausgewählte Wortleitung angelegt, während die Bitleitungsspannung VBL auf null Volt oder VBL_QPW eingestellt wird. Die Programmierspannung Vpgm wird dann inkrementell erhöht (Vpgm = Vpgm + dVpgm), und der Schleifenzähler Schleife wird inkrementell erhöht (Schleife = Schleife + 1). Verifizierung erfolgt. Das Verfahren fährt dann mit dem Entscheidungsschritt 2424 fort.
  • In Entscheidungsschritt 2424 wird für jeden zu programmierenden Datenzustand bestimmt, ob Verifizierung passiert wurde. Wenn die Antwort in Entscheidungsschritt 2424 ja ist, dann werden in Schritt 2426 die Speicherzellen, für die das Programmieren abgeschlossen ist, von dem weiteren Programmieren gesperrt (VBL wird auf VBL_lnhibit für zukünftige Programmierschleifen gesetzt). Wenn die Antwort in Entscheidungsschritt 2424 nein ist, dann fährt das Verfahren mit Entscheidungsschritt 2428 fort.
  • In Entscheidungsschritt 2428 wird bestimmt, ob eine Schleife größer als eine vorbestimmte maximale Anzahl von Schleifen Loop_Max ist. Wenn die Antwort in Entscheidungsschritt 2428 ja ist, dann ist das Programmieren in Schritt 2430 fehlgeschlagen. Wenn die Antwort in Entscheidungsschritt 2428 nein ist, kehrt das Verfahren zum Entscheidungsschritt 2422 zurück.
  • Die vorhergehende detaillierte Beschreibung wurde zu Zwecken der Veranschaulichung und Beschreibung vorgelegt. Es ist nicht beabsichtigt umfassend zu sein oder auf die genaue angegebene Form zu beschränken. Viele Modifikationen und Variationen sind unter Berücksichtigung der vorstehend genannten Beschreibung möglich. Die beschriebenen Ausführungsformen wurden gewählt, um die Prinzipien der Technologie und ihre praktische Anwendung am besten zu erklären, um dadurch anderen Fachleuten zu ermöglichen, die Erfindung in verschiedenen Ausführungsformen und mit verschiedenen Modifikationen, wie sie für die jeweilige beabsichtigte Verwendung geeignet sind, am besten zu nutzen. Der Schutzumfang der Technologie wird durch die hieran angehängten Ansprüche definiert.

Claims (20)

  1. Verfahren zum Programmieren einer Speichervorrichtung, aufweisend die Schritte: Programmieren von Speicherzellen einer ausgewählten Wortleitung in eine Vielzahl von Datenzuständen in einem ersten Programmierdurchgang eines Programmiervorgangs mit mehreren Durchgängen; Programmieren der Speicherzellen der ausgewählten Wortleitung in die Vielzahl von Datenzuständen in einem späteren Programmierdurchgang, wobei der spätere Programmierdurchgang eine Vielzahl von Programmierschleifen für mindestens einen Datenzustand einschließt, wobei der spätere Programmierdurchgang einschließt; Aufrechterhalten einer Zählung der Programmierschleifen des späteren Programmierdurchgangs, wobei die Programmierschleifen sich inkrementell erhöhende Programmierimpulse einschließen; Sperren oder Verlangsamen des Programmierens der Speicherzellen, die auf einen der Datenzustände während einer Programmierzählverifizierungs- (PCV) Programmierschleife oder einer PCV-1-Programmierschleife programmiert werden; und Überspringen eines Verifizierungsvorgangs für alle Programmierschleifen vor einer PCV+1-Programmierschleife.
  2. Verfahren gemäß Anspruch 1, wobei der Schritt des Sperrens oder Verlangsamens des Programmierens der Speicherzellen, die auf einen der Datenzustände während einer vorbestimmten PCV-Programmierschleife und einer PCV-1-Programmierschleife programmiert werden, ein Anlegen einer Nicht-Null-Spannung an mindestens eine Bitleitung einschließt, die gleichzeitig mit der Anwendung eines Programmierimpulses an die ausgewählte Wortleitung gekoppelt ist.
  3. Verfahren gemäß Anspruch 2, wobei der Schritt des Sperrens oder Verlangsamens des Programmierens der Speicherzellen, die programmiert werden, weiterhin als das Sperren des Programmierens der Speicherzellen definiert wird, die auf den einen der Datenzustände während der PCV-Programmierschleife und der PCV-1-Programmierschleife programmiert werden.
  4. Verfahren gemäß Anspruch 3, wobei der Schritt des Sperrens oder Verlangsamens des Programmierens der zu programmierenden Speicherzellen weiterhin als Sperren des Programmierens der zu programmierenden Speicherzellen in den einen der Datenzustände während aller Programmierschleifen vor der PCV+1-Programmierschleife definiert wird.
  5. Verfahren gemäß Anspruch 2, wobei der Schritt des Sperrens oder Verlangsamens des Programmierens der zu programmierenden Speicherzellen weiterhin als das Verlangsamen des Programmierens der Speicherzellen, die auf den einen der Datenzustände während der PCV-Programmierschleife und der PCV-1-Programmierschleife programmiert werden, definiert wird.
  6. Verfahren gemäß Anspruch 1, wobei die Vielzahl von Datenzuständen einen ersten programmierten Datenzustand und mindestens einen später programmierten Datenzustand mit höheren Spannungsschwellenwerten als der erste programmierte Datenzustand einschließt.
  7. Verfahren gemäß Anspruch 6, wobei das Programmieren nicht gesperrt oder verlangsamt wird und der Verifizierungsvorgang wird für beliebige Programmierschleifen für die Speicherzellen während des Programmierens des ersten programmierten Datenzustands nicht übersprungen.
  8. Verfahren gemäß Anspruch 7, wobei für alle später programmierten Datenzustände das Programmieren während der PCV-Programmierschleife und der PCV-1-Programmierschleife gesperrt oder verlangsamt wird.
  9. Speichervorrichtung, aufweisend: einen nichtflüchtigen Speicher, der eine Steuerschaltung einschließt, die kommunikativ mit einem Array von Speicherzellen gekoppelt ist, die in einer Vielzahl von Wortleitungen angeordnet sind, wobei die Steuerschaltung dazu eingerichtet ist, die Speicherzellen der Vielzahl von Wortleitungen in eine Vielzahl von Datenzuständen in einem Programmiervorgang mit mehreren Durchgängen zu programmieren, wobei die Steuerschaltlogik weiterhin eingerichtet ist zum; Programmieren der Speicherzellen einer ausgewählten Wortleitung in die Vielzahl von Datenzuständen in einem ersten Programmierdurchgang des Programmiervorgangs mit mehreren Durchgängen; Programmieren der Speicherzellen der ausgewählten Wortleitung in die Vielzahl von Datenzuständen in einem späteren Programmierdurchgang, wobei der spätere Programmierdurchgang eine Vielzahl von Programmierschleifen einschließt, die sich inkrementell erhöhende Programmierimpulse einschließen und für mindestens einen Datenzustand, den der spätere Programmierdurchgang einschließt; Aufrechterhalten einer Zählung der Programmierschleifen des späteren Programmierdurchgangs; Sperren oder Verlangsamen des Programmierens der Speicherzellen, die auf einen der Datenzustände während einer vorbestimmten Programmierzählverifizierungs- (PCV) Programmierschleife programmiert werden, und einer PCV-1-Programmierschleife; und Überspringen eines Verifizierungsvorgangs für alle Programmierschleifen vor einer PCV+1-Programmierschleife.
  10. Speichervorrichtung gemäß Anspruch 9, wobei das Sperren oder Verlangsamen des Programmierens der Speicherzellen während der PCV-Programmierschleife und der PCV-1-Programmierschleife weiterhin als Sperren des Programmierens der Speicherzellen während der PCV-Programmierschleife und der PCV-1-Programmierschleife definiert wird.
  11. Speichervorrichtung gemäß Anspruch 10, wobei das Sperren oder Verlangsamen des Programmierens der Speicherzellen während der PCV-Programmierschleife und der PCV-1-Programmierschleife weiterhin als Sperren des Programmierens der Speicherzellen, die während aller Programmierschleifen auf den einen der Datenzustände vor der PCV+1-Programmierschleife programmiert werden, definiert wird.
  12. Speichervorrichtung gemäß Anspruch 10, wobei das Sperren oder Verlangsamen des Programmierens der zu programmierenden Speicherzellen weiterhin als das Verlangsamen des Programmierens der Speicherzellen, die auf den einen der Datenzustände während der PCV-Programmierschleife und der PCV-1-Programmierschleife programmiert werden, definiert wird.
  13. Speichervorrichtung gemäß Anspruch 9, wobei die Vielzahl von Datenzuständen einen ersten programmierten Datenzustand und mindestens einen später programmierten Datenzustand mit höheren Spannungsschwellenwerten als der erste programmierte Datenzustand einschließt.
  14. Speichervorrichtung gemäß Anspruch 13, wobei das Programmieren nicht gesperrt oder verlangsamt wird und der Verifizierungsvorgang für beliebige Programmierschleifen während des Programmierens des ersten programmierten Datenzustands nicht übersprungen wird.
  15. Speichervorrichtung gemäß Anspruch 14, wobei die Steuerung dazu eingerichtet ist, das Programmieren während des Programmierens aller später programmierten Datenzustände während der PCV-Programmierschleife und der PCV-1-Programmierschleife zu verhindern oder zu verlangsamen.
  16. Einrichtung, aufweisend: einen nichtflüchtigen Speicher, der eine Steuerschaltung einschließt, die kommunikativ mit einem Array von Speicherzellen gekoppelt ist, die in einer Vielzahl von Wortleitungen angeordnet sind, wobei die Steuerschaltung dazu eingerichtet ist, die Speicherzellen der Vielzahl von Wortleitungen in eine Vielzahl von Datenzuständen mit sich inkrementell erhöhenden Programmierimpulsen in einem Programmiervorgang mit mehreren Durchgängen zu programmieren, wobei die Steuerschaltlogik weiterhin eingerichtet ist zum; Programmieren der Speicherzellen einer ausgewählten Wortleitung in die Vielzahl von Datenzuständen in einem ersten Programmierdurchgang des Programmiervorgangs mit mehreren Durchgängen; Programmieren der Speicherzellen der ausgewählten Wortleitung in die Vielzahl von Datenzuständen in einem späteren Programmierdurchgang, der eine Reihe von sich inkrementell erhöhenden Programmierimpulsen einschließt, wobei der spätere Programmierdurchgang eine Vielzahl von Programmierschleifen einschließt und für mindestens einen Datenzustand, den der spätere Programmierdurchgang einschließt; Aufrechterhalten einer Zählung der Programmierschleifen des späteren Programmierdurchgangs; Sperren oder Verlangsamen des Programmierens der Speicherzellen, die auf einen der Datenzustände während einer vorbestimmten Programmierzählverifizierungs- (PCV) Programmierschleife programmiert werden, und einer PCV-1-Programmierschleife; und Überspringen eines Verifizierungsvorgangs für alle Programmierschleifen vor einer PCV+1-Programmierschleife.
  17. Einrichtung gemäß Anspruch 16, wobei das Programmieren nicht gesperrt oder verlangsamt wird und der Verifizierungsvorgang für beliebige Programmierschleifen während des Programmierens des ersten programmierten Datenzustands nicht übersprungen wird.
  18. Vorrichtung gemäß Anspruch 17, wobei die Steuerung dazu eingerichtet ist, das Programmieren während des Programmierens aller später programmierten Datenzustände während der PCV-Programmierschleife und der PCV-1-Programmierschleife zu verhindern oder zu verlangsamen.
  19. Speichervorrichtung gemäß Anspruch 16, wobei die Steuerschaltlogik dazu eingerichtet ist, eine Nicht-Null-Spannung an mindestens eine Bitleitung anzulegen, die mit mindestens einer Speicherzelle gekoppelt ist, gleichzeitig mit dem Anlegen eines Programmierimpulses an die ausgewählte Wortleitung, um die Programmierung der Speicherzellen zu verhindern oder zu verlangsamen, die auf einen der Datenzustände während der PCV-Programmierschleife und der PCV-1-Programmierschleife programmiert werden.
  20. Speichervorrichtung gemäß Anspruch 1, wobei die Steuerschaltlogik zum Anlegen einer Nicht-Null-Spannung an mindestens eine Bitleitung konfiguriert ist, die, gleichzeitig mit der Anwendung eines Programmierimpulses an die ausgewählte Wortleitung, an mindestens eine Speicherzelle gekoppelt ist, um das Programmieren der Speicherzellen, die auf einen der Datenzustände während der PCV-Programmierschleife und der PCV-1-Programmierschleife programmiert werden, zu sperren oder zu verlangsamen.
DE102022102593.4A 2021-06-25 2022-02-03 Speicherprogrammierung mit selektiv übersprungenen verifizierungsimpulsen zur leistungsverbesserung Pending DE102022102593A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/358,516 US11605437B2 (en) 2021-06-25 2021-06-25 Memory programming with selectively skipped verify pulses for performance improvement
US17/358,516 2021-06-25

Publications (1)

Publication Number Publication Date
DE102022102593A1 true DE102022102593A1 (de) 2022-12-29

Family

ID=84388605

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022102593.4A Pending DE102022102593A1 (de) 2021-06-25 2022-02-03 Speicherprogrammierung mit selektiv übersprungenen verifizierungsimpulsen zur leistungsverbesserung

Country Status (3)

Country Link
US (1) US11605437B2 (de)
CN (1) CN115527588A (de)
DE (1) DE102022102593A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11983602B1 (en) * 2020-05-19 2024-05-14 Rigetti & Co, Llc Converting signals between regimes in a quantum computing system
CN114882928A (zh) * 2022-04-12 2022-08-09 长江存储科技有限责任公司 一种存储器装置、存储器系统及编程操作方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101633018B1 (ko) * 2009-12-28 2016-06-24 삼성전자주식회사 플래시 메모리 장치 및 그것의 프로그램 방법
KR20120056113A (ko) * 2010-11-24 2012-06-01 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법, 그리고 불휘발성 메모리 장치를 포함하는 메모리 시스템
KR102291456B1 (ko) * 2015-08-13 2021-08-23 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법 및 프로그램 검증 방법
KR102461099B1 (ko) * 2018-08-07 2022-11-01 에스케이하이닉스 주식회사 메모리 장치 및 이를 포함하는 저장 장치 및 그 동작 방법

Also Published As

Publication number Publication date
US11605437B2 (en) 2023-03-14
US20220415417A1 (en) 2022-12-29
CN115527588A (zh) 2022-12-27

Similar Documents

Publication Publication Date Title
DE112019000164B4 (de) Speichervorrichtung mit verbundenen wortleitungen zur schnellen programmierung
DE112017004208B4 (de) 3d-nand mit teilblocklöschen
DE112019000157B4 (de) Speichervorrichtung mit von nand-ketten getrennten bitleitungen zur schnellen programmierung
DE112017001761B4 (de) NAND-Struktur mit Stufenauswahl-Gate-Transistoren
DE112017003298T5 (de) Schema für das Herunterfahren von Wortleitungen zum Entfernen von Restelektronen
DE112015003651B4 (de) Adaptives selektives bitleitungsvorladen für stromeinsparungen und schnelles programmieren
DE112019000148T5 (de) Dynamische Bitabtastungstechniken für die Programmierung von Speichervorrichtungen
DE102017104265A1 (de) Dummy-Spannung zum Verringern des Erst-Lese-Effekts in einem Speicher
DE112018003426T5 (de) Reduzieren der lesestörung der art durch injektion heisser elektronen in 3d-speichervorrichtung mit verbundenen sourceendauswahlgates
DE102020105991B4 (de) SUBBLOCK-GRÖßENREDUKTION FÜR NICHTFLÜCHTIGE 3D-SPEICHER
DE102019124668A1 (de) Transistorschwellenspannungshaltung in 3d-speicher
DE112016003568B4 (de) Intelligente Überprüfung bzw. Verifizierung zur Programmierung nicht-flüchtiger Speicher
DE102021106907A1 (de) Lochvorladeschema mit gate-induzierter drain-leckstromerzeugung
DE102021115501A1 (de) Leseaktualisierung zur verbesserung der leistung bei datenerhaltung für nichtflüchtigen speicher
DE102020105946A1 (de) Speicherzellen-fehlform-abschwächung
DE102022102591A1 (de) Systeme und verfahren zum einstellen der schwellenspannungsverteilung aufgrund von halbkreis-sgd
DE102022102593A1 (de) Speicherprogrammierung mit selektiv übersprungenen verifizierungsimpulsen zur leistungsverbesserung
DE102022113174A1 (de) Proaktive aktualisierung der randdatenwortleitung für halbkreis-drain-side-select-gate
DE102021107268A1 (de) Programmierung von speicherzellen unter verwendung von kodiertem tlc-fine
DE112023000257T5 (de) Zeit-tagging von lesepegeln mehrerer wortleitungen für die aufbewahrung von daten in offenen blöcken
DE102022113175A1 (de) Sekundäre kreuzkopplungswirkung in speichervorrichtung mit halbkreis-drain-side-select-gate und gegenmassnahme
DE102022112833A1 (de) Wartung des halbkreis-drain-side-select-gate durch selektives halbkreis-dummy-wortleitungsprogramm
DE102022102624A1 (de) Speichereinrichtung und verfahren zum betrieb unter verwendung des programmierens mit dreifacher kette während des löschens
DE102021106910A1 (de) Schleifenabhängiges umschalten zwischen techniken zur programmverifizierung
DE102020116034B4 (de) Spitzen- und mittelwert-stromreduktion für unterblock-speicherbetrieb

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE