DE102022102589A1 - Auslösen der nächsten zustandsverifizierung in der programmierschleife für nichtflüchtigen speicher - Google Patents

Auslösen der nächsten zustandsverifizierung in der programmierschleife für nichtflüchtigen speicher Download PDF

Info

Publication number
DE102022102589A1
DE102022102589A1 DE102022102589.6A DE102022102589A DE102022102589A1 DE 102022102589 A1 DE102022102589 A1 DE 102022102589A1 DE 102022102589 A DE102022102589 A DE 102022102589A DE 102022102589 A1 DE102022102589 A1 DE 102022102589A1
Authority
DE
Germany
Prior art keywords
programming
memory
memory cells
bit lines
data
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
DE102022102589.6A
Other languages
English (en)
Inventor
Hua-Ling Hsu
Henry Chin
Han-Ping Chen
Erika Penzo
Fanglin Zhang
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 DE102022102589A1 publication Critical patent/DE102022102589A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5671Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge trapping in an insulator
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • G11C16/3459Circuits or methods to verify correct programming of nonvolatile memory cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • 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

Landscapes

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

Abstract

Einrichtungen und Verfahren werden beschrieben, um Speicherzellen zu programmieren und Bitleitungs-Entladeschemata während der Programmierung basierend auf dem Datenmuster zu steuern. Die Speichersteuerung kann das Programmierdatenmuster basierend auf SLC-Impulsanzahl und TLC-Datenabschlusssignalen vorhersagen und diese Signale verwenden, um anzupassen, wann die gesperrten Bitleitungen entladen werden können. Sobald ein TLC-Programmiervorgang mehr Ein-Datenelemente aufweist, aktiviert die Speichersteuerung EQVDDSA_PROG, um VDDSA zu entzerren und dann zu entladen. Im SLC-Programm aktiviert die Speichersteuerung EQVDDSA_PROG nur im ersten Programmierimpuls und deaktiviert es danach.

Description

  • HINTERGRUND
  • Die vorliegende Technologie bezieht sich auf den Betrieb von Speichervorrichtungen. Halbleiterspeichervorrichtungen sind zur Verwendung in verschiedenen elektronischen Vorrichtungen beliebter geworden. Zum Beispiel wird ein nichtflüchtiger Halbleiterspeicher in Mobiltelefonen, Digitalkameras, persönlichen digitalen Assistenten, mobilen Rechenvorrichtungen, nichtmobilen Rechenvorrichtungen und anderen Vorrichtungen verwendet. Speichervorrichtungen zielen stets auf eine verbesserte Effizienz und Betriebsgeschwindigkeit ab.
  • KURZDARSTELLUNG
  • Verschiedene Ausführungsformen sind hierin zum Betreiben eines nichtflüchtigen Speichers, z. B. eines NAND-, eines BICS-Speichers oder dergleichen, beschrieben.
  • Gemäß einem Gesichtspunkt der vorliegenden Offenbarung wird eine Einrichtung bereitgestellt, die eine Vielzahl von Speicherzellen einschließt, die dazu eingerichtet sind, mehrere Zustände zu speichern. Die Einrichtung schließt weiterhin eine Speichersteuerung ein, die mit der Vielzahl von Speicherzellen wirkverbunden ist, um die Speicherung von Daten darin zu steuern. Die Steuerung ist dazu eingerichtet, ein Programmiersteuersignal an ausgewählte Bitleitungen anzulegen, um ausgewählte Speicherzellen der Vielzahl von Speicherzellen zu programmieren und ein Sperrsteuersignal an nicht ausgewählte Speicherzellen der Vielzahl von Speicherzellen anzulegen, um die Programmierung der nicht ausgewählten Speicherzellen zu blockieren. Die Steuerung ist weiterhin dazu eingerichtet, ein Entzerrungssignal zu deaktivieren, das an die ausgewählten Bitleitungen angelegt wird, nachdem anfängliche Programmierimpulse an die ausgewählten Speicherzellen angelegt werden. Die Steuerung ist weiterhin dazu eingerichtet, das Entzerrungssignal zu aktivieren, das an die ausgewählten Bitleitungen angelegt wird, sobald eine Schwellenzahl von Programmierimpulsen erreicht ist.
  • Gemäß einem anderen Gesichtspunkt der vorliegenden Offenbarung ist die Speichersteuerung dazu eingerichtet, den Schwellenwert von Programmierimpulsen auf eine Zahl einzustellen, bei der mindestens die Hälfte der Vielzahl von Speicherzellen auf jeweilige Endspeicherzustände programmiert wird.
  • Gemäß noch einem anderen Gesichtspunkt der vorliegenden Offenbarung ist die Speichersteuerung weiterhin dazu eingerichtet, das Entzerrungssignal zu deaktivieren, um den Stromverbrauch zu reduzieren und die Störung der Sperrpeicherzelle zu reduzieren.
  • Gemäß noch einem anderen Gesichtspunkt der vorliegenden Offenbarung ist die Speichersteuerung dazu eingerichtet, die Programmierung einer Single-Level-Zelle zu steuern und das Entzerrungssignal für einen ersten Programmierimpuls zu deaktivieren.
  • Gemäß einem weiteren Gesichtspunkt der vorliegenden Offenbarung ist die Speichersteuerung dazu eingerichtet, eine Bitleitungsentzerrung nach einem zweiten Programmierimpuls oder einem späteren Programmierimpuls zu aktivieren.
  • Gemäß noch einem weiteren Gesichtspunkt der vorliegenden Offenbarung ist die Speichersteuerung dazu eingerichtet, die Programmierung einer Single-Level-Zelle auf einer Teil-Seite durch selektives Aktivieren und Deaktivieren des Entzerrungssignals für vorbestimmte Programmierimpulse zu steuern.
  • Gemäß noch immer einem weiteren Gesichtspunkt der vorliegenden Offenbarung ist die Speichersteuerung dazu eingerichtet, die Programmierung einer Triple-Level-Zelle zu steuern und das Entzerrungssignal für die ersten drei Programmierimpulse zu deaktivieren.
  • Gemäß einem anderen Gesichtspunkt der vorliegenden Offenbarung ist die Speichersteuerung dazu eingerichtet, die Entzerrung nach Abschluss der C-Level-Programmierung zu aktivieren.
  • Gemäß noch einem anderen Gesichtspunkt der vorliegenden Offenbarung ist die Speichersteuerung dazu eingerichtet, die Entzerrung nach Abschluss der F-Level-Programmierung zu deaktivieren.
  • Gemäß noch immer einem anderen Gesichtspunkt der vorliegenden Offenbarung ist die Speichersteuerung dazu eingerichtet, die Programmierung einer Quad-Level-Zelle zu steuern, das Entzerrungssignal für zumindest einen ersten Programmierimpuls zu deaktivieren, das Entzerrungssignal nach Abschluss der S7-Programmierung zu aktivieren und das Entzerrungssignal nach Abschluss der S13-Programmierung zu deaktivieren.
  • Gemäß einem weiteren Gesichtspunkt der vorliegenden Offenbarung ist die Speichersteuerung dazu eingerichtet, um die Programmierung einer Quad-Level-Zelle unter Verwendung von MLS-/Feinprogrammierung zu steuern, das Entzerrungssignal für zumindest einen ersten Programmierimpuls zu deaktivieren, das Entzerrungssignal nach Abschluss der A-Programmierung zu aktivieren und das Entzerrungssignal nach Abschluss der C-Programmierung zu deaktivieren.
  • Ein noch anderer Gesichtspunkt der vorliegenden Offenbarung bezieht sich auf ein Steuerverfahren für nichtflüchtigen Speicher. Das Verfahren schließt den Schritt des Anlegens eines Auswahlsteuersignals an ausgewählte Bitleitungen ein, um ausgewählte Speicherzellen der Vielzahl von Speicherzellen zu adressieren, um die ausgewählten Speicherzellen zu programmieren. Das Verfahren fährt mit dem Schritt des Anlegens eines Sperrsteuersignals an nicht ausgewählte Speicherzellen der Vielzahl von Speicherzellen fort, um die Programmierung auf die nicht ausgewählten Speicherzellen zu blockieren. Das Verfahren fährt mit dem Schritt des Deaktivierens einer Entladung der ausgewählten Bitleitungen fort, bis die anfänglichen Programmierimpulse an den ausgewählten Speicher angelegt werden. Das Verfahren fährt mit dem Schritt des Aktivierens einer Entladung der ausgewählten Bitleitungen fort, sobald ein Schwellenwert von Programmierimpulsen erfüllt ist.
  • Gemäß einem anderen Gesichtspunkt der vorliegenden Offenbarung schließt der Schritt des Aktivierens einer Entladung der ausgewählten Bitleitungen das Entzerren der Bitleitungen auf VDDSA vor dem Entladen der Bitleitungen ein.
  • Gemäß noch einem weiteren Gesichtspunkt der vorliegenden Offenbarung schließt das Verfahren weiterhin den Schritt des Einstellens des Schwellenwerts der Programmierimpulse auf eine Zahl ein, bei der mindestens die Hälfte der Speicherzellen in den jeweiligen Endspeicherzuständen programmiert ist.
  • Gemäß noch immer einem anderen Gesichtspunkt der vorliegenden Offenbarung schließt das Verfahren weiterhin den Schritt des Steuerns einer Programmierung einer Single-Level-Zelle ein und wobei das Deaktivieren des Entladens der ausgewählten Bitleitungen ein Deaktivieren des Entladens für einen ersten Programmierimpuls einschließt.
  • Gemäß einem weiteren Gesichtspunkt der vorliegenden Offenbarung schließt das Verfahren weiterhin den Schritt des Steuerns der Programmierung einer Triple-Level-Zelle und wobei das Deaktivieren des Entladens der ausgewählten Bitleitungen das Deaktivieren des Entladens der Bitleitungen für die ersten drei Programmierimpulse einschließt.
  • Gemäß noch einem weiteren Gesichtspunkt der vorliegenden Offenbarung schließt das Aktivieren des Entladens der ausgewählten Bitleitungen weiterhin das Aktivieren der deaktivierten Bitleitungen für die Entladung nach Abschluss der C-Programmierung ein.
  • Gemäß noch immer einem weiteren Gesichtspunkt der vorliegenden Offenbarung schließt der Schritt des Deaktivierens des Entladens der ausgewählten Bitleitungen das Deaktivieren der zuvor aktivierten Bitleitungen nach Abschluss der F-Programmierung ein.
  • Ein noch anderer Gesichtspunkt der vorliegenden Offenbarung bezieht sich auf ein Steuerverfahren für nichtflüchtigen Speicher. Das Verfahren schließt den Schritt des Einstellens einer Programmierimpulszahl auf Null ein. Das Verfahren fährt mit dem Schritt des Durchführens eines Programmierimpulses mit einer Bitleitung auf einer Programmierebene fort. Das Verfahren fährt mit dem Schritt des Erhöhens der Programmierimpulszahl fort. Bei der Programmierimpulszählung unter einem ersten Schwellenwert fährt das Verfahren mit dem Deaktivieren der Bitleitungsentladung zwischen Programmierimpulsen und dann mit dem Durchführen eines nachfolgenden Programmierimpulses durch Zurückkehren zur Durchführung eines Programmierimpulses mit einer Bitleitung auf einer Programmierebene fort. Bei der Programmierimpulszählung bei oder über einem ersten Schwellenwert fährt das Verfahren mit dem Schritt des Aktivierens der Bitleitungsentladung zwischen Programmierimpulsen und dann dem Zurückkehren zur Durchführung eines Programmierimpulses mit einer Bitleitung auf einer Programmierebene und dem Erhöhen der Programmierimpulszählung fort. Bei der Programmierimpulszählung über einem zweiten Schwellenwert fährt das Verfahren mit dem Deaktivieren der Bitleitungsentladung zwischen Programmierimpulsen fort.
  • Gemäß einem anderen Gesichtspunkt der vorliegenden Offenbarung schließt der Schritt des Durchführens der Programmierimpulse das Durchführen von Programmierimpulsen für einen QLC-Speicher, das Einstellen des ersten Schwellenwerts auf der S7-Programmierimpulsebene und das Einstellen des zweiten Schwellenwerts auf der S13-Programmierimpulsebene ein.
  • Figurenliste
  • Eine speziellere Beschreibung wird nachstehend unter Bezugnahme auf spezifische, in den beigefügten Zeichnungen veranschaulichte Ausführungsformen eingeschlossen. Angesichts dessen, dass diese Zeichnungen nur bestimmte Ausführungsformen der Offenbarung darstellen und deshalb nicht als ihren Umfang einschränkend betrachtet werden sollen, wird die Offenbarung mit zusätzlicher Spezifität und Detailgenauigkeit durch die Verwendung der beigefügten Zeichnungen beschrieben und erläutert:
    • 1 veranschaulicht eine Ausführungsform eines Arrays von Speicherzellen einschließlich Bit- und Wortleitungen gemäß einer beispielhaften Ausführungsform;
    • 2 veranschaulicht ein Diagramm eines dreidimensionalen (3D) Speichers in einer NAND-Konfiguration gemäß einer beispielhaften Ausführungsform;
    • 3 veranschaulicht ein schematisches Blockdiagramm, das eine Ausführungsform einer vertikalen 3D-Speicherstruktur gemäß einer beispielhaften Ausführungsform veranschaulicht;
    • 4 veranschaulicht ein Diagramm, das eine Draufsicht eines 3D-Speicherblocks gemäß einer beispielhaften Ausführungsform veranschaulicht;
    • 5 veranschaulicht ein Array von Abtastverstärkergruppen gemäß einer beispielhaften Ausführungsform für den 3D-Speicherblock von 4;
    • 6 veranschaulicht ein schematisches Blockdiagramm, das eine Ausführungsform eines Speichersystems gemäß einer beispielhaften Ausführungsform veranschaulicht;
    • 7 veranschaulicht ein schematisches Blockdiagramm einer nichtflüchtigen Speicherungsvorrichtung zur Identifikation und Auswahl von Speicherzellenuntergruppen;
    • 8 veranschaulicht eine schematische Ansicht des Speichers gemäß einer beispielhaften Ausführungsform;
    • 9 veranschaulicht eine schematische Ansicht des Speichers gemäß einer beispielhaften Ausführungsform;
    • 10 veranschaulicht einen Speicherprozess gemäß einer beispielhaften Ausführungsform;
    • 11 veranschaulicht einen Speicherprozess gemäß einer beispielhaften Ausführungsform;
    • 12 veranschaulicht einen Speicherprozess gemäß einer beispielhaften Ausführungsform;
    • 13 veranschaulicht einen Speicherprozess gemäß einer beispielhaften Ausführungsform;
    • 14 veranschaulicht einen Speicherprozess gemäß einer beispielhaften Ausführungsform;
    • 15 veranschaulicht ein vereinfachtes Zeitdiagramm gemäß einer beispielhaften Ausführungsform;
    • 16 veranschaulicht Schwellenspannungsverteilungen für eine Speicherzelle;
    • 17 veranschaulicht eine Tabelle, die ein Beispiel einer Zuweisung von Datenwerten zu Datenzuständen beschreibt;
    • 18 ist ein Flussdiagramm, das eine Ausführungsform eines Prozesses zum Programmieren beschreibt;
    • 19 ist ein Flussdiagramm, das eine Ausführungsform eines Prozesses zum Programmieren von Daten in Speicherzellen beschreibt, die mit einer gemeinsamen Wortleitung verbunden sind; und
    • 20 zeigt eine Wortleitungsspannung während der Programmier- und Verifizierungsvorgänge; und
  • DETAILLIERTE BESCHREIBUNG
  • Systeme und Verfahren werden zum Steuern der Programmiervorgänge des nichtflüchtigen Speichers beschrieben, um das Bitleitungs-Entladeschema (BL-Entladeschema) zumindest teilweise basierend auf dem Datenmuster, das in die zugehörigen Speicherzellen programmiert wird, anzupassen. In einer beispielhaften Ausführungsform kann die Speichersteuerungsschaltlogik das Programmierdatenmuster basierend auf der Programmierimpulszahl und Datenabschlusssignalen vorhersagen. Hierin beschriebene Ausführungsformen verbessern die Programmierzeit (Tprog) durch Reduzieren der Bitleitungsentladezeit durch Steuern der Aktivierungszeit der Spannungsentzerrung. Die vorliegende Methodik kann die Eliminierung der Programmierstörung ermöglichen. Während des Betriebs einer Multi-Level-Zelle (z. B. einer Triple-Level-Zelle), die mit mehr als einem Datenbit programmiert wird, kann die Steuerungsschaltlogik während der Programmierung auf der Bitleitung die Entzerrungsdaten-Latch-Spannung (EQVDDSA) aktivieren und auf VDDSA entzerren und dann entladen. Während des Betriebs einer Single-Level-Zelle (SLC) wird das Programmieren der Signalaktivierung (EQVDDSA_PROG) nur im ersten Programmerimpuls verwendet. Die Programmiervorgänge für sowohl die Single-Level-Zelle als auch die Multi-Level-Zellen verwenden jeweils mehrere Schleifen, die jeweils einen Programmierimpuls und einen Verifizierungsvorgang einschließen.
  • Jede Speicherzelle kann einem Speicherzustand gemäß Schreibdaten in einem Programmbefehl zugeordnet sein, der mehrere Schleifen von Programmierimpuls und Verifizierung aufweist. Wie hierin verwendet, ist ein „Speicherzustand“ 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, um einen Datenwert darzustellen, wie einen binären Datenwert, der mehr als ein binäres Bit einschließt. 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 Speicherzustand) programmiert werden, der sich von dem gelöschten Zustand unterscheidet.
  • Zum Beispiel gibt es in einer Speichervorrichtung mit zwei Bits pro Zelle (MLC) vier Speicherzustände, die den gelöschten Zustand und drei programmierte Speicherzustände einschließen. In einer Speichervorrichtung mit drei Bits pro Zelle (TLC) gibt es acht Speicherzustände, die den gelöschten Zustand und sieben programmierte Speicherzustände einschließen. In einer Speichervorrichtung mit vier Bits pro Zelle (QLC) gibt es sechzehn Speicherzustände, die den gelöschten Zustand und fünfzehn programmierte Speicherzustände einschließen. Die Programmierung der Zellen an jeden dieser Speicherzustände erfordert mehrere Schleifen von Programmierimpulsen und Verifizierungsstufen.
  • Wenn ein Programmbefehl ausgegeben wird, werden die Schreibdaten in zu den Speicherzellen gehörigen Datenzwischenspeichern gespeichert. Zum Beispiel ist in einer Speichervorrichtung mit zwei Bits pro Zelle jede Speicherzelle zwei Datenzwischenspeichern (z. B. DL1, DL2) zugeordnet, die die Zwei-Bit-Schreibdaten für die Speicherzelle speichern. Gleichermaßen ist in einer Speichervorrichtung mit drei Bits pro Zelle jede Speicherzelle drei Datenzwischenspeichern (z. B. DL1, DL2, DL3) zugeordnet, die die Drei-Bit-Schreibdaten für die Speicherzelle speichern. Auf ähnliche Weise ist in einer Speichervorrichtung mit vier Bits pro Zelle jede Speicherzelle vier Datenzwischenspeichern (z. B. DL1, DL2, DL3, DL4) zugeordnet, die die Vier-Bit-Schreibdaten für die Speicherzelle speichern. Beispiele für Daten-Latches sind im US -Patent Nr. 10.535.401 zu finden, das durch Bezugnahme hierin aufgenommen wird.
  • 1 stellt eine Ausführungsform eines Speichers dar, der als NAND-Flash-Speicherzellen in einem Speicherarray 126 angeordnet ist. Wie hierin verwendet, bezeichnet der Ausdruck „Speicher“ „Halbleiterspeicher“. Arten von Halbleiterspeichern schließen flüchtige Speicher und nichtflüchtige Speicher ein. Ein nichtflüchtiger Speicher ermöglicht, dass Informationen gespeichert und behalten werden, selbst wenn der nichtflüchtige Speicher nicht mit einer Stromquelle (z. B. einer Batterie) verbunden ist. Beispiele des nichtflüchtigen Speichers schließen Flashspeicher (z. B. NAND- und NOR-Flashspeicher), Electrically Erasable Programmable Read-Only Memory (EEPROM), ferroelektrischen Speicher (z. B. FeRAM), magnetoresistiven Speicher (z. B. MRAM), Spin-Transfer Torque Magnetic Random Access Memory (STT-RAM oder STT-MRAM), Resistive Random Access Memory (z. B. ReRAM oder RRAM) und Phase Change Memory (z. B. PRAM oder PCM) ein. Bei dem nichtflüchtigen Speicher kann es sich um BiCS-Speicherarchitektur handeln. Nichtflüchtiger Speicher schließt eine oder mehrere Speicherzellen ein. Eine Speicherzelle ist eine elektronische Vorrichtung oder Komponente, die elektronische Informationen speichern kann. In einer Ausführungsform verwendet ein nichtflüchtiger Speicher als Speicherzellen Floating-Gate-Transistoren oder Charge-Trap-Transistoren. Dank der Fähigkeit zum Einstellen der Schwellenspannung eines Floating-Gate-Transistors oder eines Charge-Trap-Transistors kann der Transistor als nichtflüchtiges Speicherelement oder eine Speicherzelle wie eine Single-Level-Speicherzelle (SLC-Speicherzelle) fungieren. In einigen Fällen kann mehr als ein Datenbit pro Speicherzelle (z. B. in einer Multi-Level-Zelle) durch Programmieren und Lesen mehrerer Schwellenspannungen oder Schwellenspannungsbereiche, einschließlich MLC, TLC, QLC usw., bereitgestellt werden.
  • Das Speicherarray 126 kann viele Speicherblöcke einschließen. Ein „Speicherblock“ ist ein Satz von Speicherzellen. Zum Beispiel schließt ein Speicherblock (z. B. ein Array von Speicherzellen) Speicherzellen ein, die in Wort- und Bitleitungen angeordnet sind. Ein „Unterblock“ des Speichers ist ein Untersatz eines Speicherblocks. Zum Beispiel ist Unterblock ein Untersatz von Speicherzellen, die einem Untersatz der Wortleitungen eines Speicherblocks entspricht. In einer Ausführungsform schließt ein Unterblock fünfzig Wortleitungen in einem Speicherblock ein, wobei der Speicherblock mehr als fünfzig Wortleitungen einschließt. Ein Unterblock kann einen physischen Unterblock, einen logischen Unterblock oder beides bezeichnen. Ein Speicherblock schließt zwei oder mehr Unterblöcke ein. In einer Ausführungsform ist der Speicher als zweidimensionaler (2D) NAND strukturiert. In einer anderen Ausführungsform ist der Speicher als dreidimensionaler (3D) NAND strukturiert. In einer Ausführungsform sind eine oder mehrere der hierin beschriebenen Komponenten (z. B. Speicherrohchip, Speicher, Block, Unterblock, Speicherzellen, Schaltungen, Steuerungen und/oder nichtflüchtige Speichersysteme) mit einem oder mehreren Elementen (z. B. Transistoren, Widerstände, Kondensatoren, Induktorspulen und/oder Leiter) in einer integrierten Schaltung implementiert.
  • Ein veranschaulichender Speicherblock (oder Block) 100, wie in 1 gezeigt, schließt eine Anzahl von NAND-Ketten NS0 bis NS11 und entsprechende Bitleitungen (z. B. BL0 bis BL11, die von den Blöcken gemeinsam genutzt werden) ein. Jede NAND-Kette ist an einem Ende mit einem Drain-Auswahl-Gate (SGD) verbunden, und die Steuer-Gates der Drain-Auswahl-Gates sind über eine gemeinsame SGD-Leitung verbunden. Jede NAND-Kette ist an seinem anderen Ende mit einem Source-Auswahl-Gate (SGS) verbunden, das wiederum mit einer gemeinsamen Source-Leitung 154 verbunden ist. Zum Beispiel schließt NS0 einen Source-Auswahl-Gate-Transistor 152 und einen Drain-Side-Auswahl-Gate-Transistor 140 ein. Die beispielhaften Speicherelemente 142, 144, 146, 148 und 149 befinden sich jeweils in NS0 bis NS4 und sind mit einer Wortleitung WL3 verbunden. Zum Beispiel könnte WL3 eine gewählte Wortleitung sein, die zum Programmieren gewählt ist, und können die beispielhaften Speicherelemente gewählte Speicherelemente sein, die zum Programmieren gewählt sind. Andere mit WL3 verbundene Speicherelemente können ebenfalls gewählte Speicherelemente sein. Vierundsechzig Wortleitungen, zum Beispiel WL0-WL63, erstrecken sich zwischen den Source-Side-Auswahl-Gates und den Drain-Side-Auswahl-Gates.
  • Andere Arten von nichtflüchtigen Speichern zusätzlich zu NAND-Flash-Speichern können ebenfalls verwendet werden. Eine andere Art von in Flash-EEPROM-Systemen nützlichen Speicherzellen verwendet zum Beispiel ein nichtleitendes dielektrisches Material anstelle eines leitenden Floating-Gates, um Ladung auf nichtflüchtige Weise zu speichern. In einer Ausführungsform wird ist dreischichtiges Dielektrikum aus Siliziumoxid, Siliziumnitrid und Siliziumoxid (ONO) 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 Spannungsstufe 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. Eine andere Art von Speicher verwendet ein metallisches (leitendes) Ladungsspeicherelement in einer NAND-Architektur.
  • 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. In einer alternativen Ausführungsform können Widerstandsstufen anstelle von Schwellenspannungsstufen gespeichert und erfasst werden.
  • 2 veranschaulicht eine Ausführungsform des 3D-Speichers 226 in einer NAND-Flash-Konfiguration. Der 3D-Speicher 226 schließt mehrere physische Schichten ein, die monolithisch über einem Substrat 234, wie einem Siliziumsubstrat, ausgebildet sind. Speicherelemente (z. B. Speicherzellen), wie eine repräsentative Speicherzelle 246, sind in Arrays in den physischen Schichten angeordnet.
  • Die repräsentative Speicherzelle 246 schließt eine Charge-Trap-Struktur 244 zwischen einer Wortleitung/Steuergate WL4 und einem leitenden Kanal 242 ein. Ladung kann in die Charge-Trap-Struktur 244 durch Vorspannen des leitenden Kanals 242 in Bezug auf die Wortleitung WL4 eingespritzt oder aus ihr abgeleitet werden. Zum Beispiel kann die Charge-Trap-Struktur 244 Siliziumnitrid einschließen und kann von der Wortleitung WL4 und dem leitenden Kanal 242 durch ein Gate-Dielektrikum, wie ein Siliziumoxid, getrennt werden. Eine Ladungsmenge in der Charge-Trap-Struktur 244 beeinflusst eine Strommenge durch den leitenden Kanal 242 während eines Lesevorgangs der Speicherzelle 246 und gibt einen oder mehrere Bitwerte an, die in der Speicherzelle 246 gespeichert sind.
  • Der 3D-Speicher 226 schließt mehrere Löschblöcke ein, einschließlich eines ersten Blocks (Block 0) 276, eines zweiten Blocks (Block 1) 278 und eines dritten Blocks (Block 2) 280. Jeder Block 276, 278, 280 schließt eine „vertikale Scheibe“ der physischen Schichten ein, die einen Stapel von Wortleitungen einschließt, veranschaulicht als eine erste Wortleitung WL0, eine zweite Wortleitung WL1, eine dritte Wortleitung WL2, eine vierte Wortleitung WL3 und eine fünfte Wortleitung WL4. Mehrere leitende Kanäle (mit einer im Wesentlichen vertikalen Ausrichtung, wie in 2 gezeigt) erstrecken sich durch den Stapel von Wortleitungen. Jeder leitende Kanal ist mit einem Speicherelement in jeder Wortleitung WL0-WL4 gekoppelt, wodurch eine NAND-Kette von Speicherelementen gebildet wird. 2 veranschaulicht drei Blöcke 276, 278, 280, fünf Wortleitungen WL0-WL4 in jedem Block 276, 278, 280 und drei leitende Kanäle in jedem Block 276, 278, 280 zur Klarheit der Veranschaulichung. Jedoch kann der 3D-Speicher 226 mehr als drei Blöcke, mehr als fünf Wortleitungen pro Block und mehr als drei leitende Kanäle pro Block innehaben.
  • Die Lese-/Schreibschaltlogik 268 (die Teil einer Steuerung sein kann) ist mit den leitenden Kanälen über mehrere leitende Leitungen gekoppelt, veranschaulicht als eine erste Bitleitung BL0, eine zweite Bitleitung BL1 und eine dritte Bitleitung BL2 an einem ersten Ende der leitenden Kanäle (z. B. ein Ende, das am weitesten von dem Substrat 234 entfernt ist) und eine erste Source-Leitung SL0, eine zweite Source-Leitung SL1, und eine dritte Source-Leitung SL2, an einem zweiten Ende der leitenden Kanäle (z. B. ein Ende, das näher an oder in dem Substrat 234 ist). Die Lese-/Schreibschaltlogik 268 ist veranschaulicht als mit den Bitleitungen BL0 bis BL2 über „P“-Steuerleitungen gekoppelt, mit den Source-Leitungen SL0 bis SL2 über „M“-Steuerleitungen gekoppelt und mit den Wortleitungen WL0 bis WL4 über „N“-Steuerleitungen gekoppelt. Jedes von P, M und N kann einen positiven ganzzahligen Wert basierend auf der spezifischen Konfiguration des 3D-Speichers 226 haben. In dem in 2 gezeigten Beispiel sind P=3, M=3 und N=5.
  • In einer bestimmten Ausführungsform kann jede der Bitleitungen BL0 bis BL2 und jede der Source-Leitungen SL0 bis SL2 mit demselben Ende (z. B. das erste oder das zweite Ende) verschiedener leitender Kanäle gekoppelt sein. Zum Beispiel kann eine bestimmte Bitleitung BL0 bis BL2 mit einem ersten Ende eines leitenden Kanals 282 und eine bestimmte Source-Leitung mit einem ersten Ende des leitenden Kanals 242 gekoppelt sein. Ein zweites Ende des leitenden Kanals 282 kann mit einem zweiten Ende des leitenden Kanals 242 gekoppelt (z. B. elektrisch gekoppelt) sein. Dementsprechend können der leitende Kanal 282 und der leitende Kanal 242 in Reihe gekoppelt und mit der bestimmten Bitleitung BL0 bis BL2 und der bestimmten Source-Leitung SL0 bis SL2 gekoppelt sein, wobei jede davon mit einer bestimmten NAND-Kette gekoppelt ist.
  • Obwohl jeder der leitenden Kanäle, wie die leitenden Kanäle 242, 282 als ein einziger leitender Kanal veranschaulicht ist, kann jeder der leitenden Kanäle mehrere leitende Kanäle einschließen, die sich in einer Stapelkonfiguration befinden. Die mehreren leitfähigen Kanäle in einer gestapelten Konfiguration können durch einen oder mehrere Verbinder gekoppelt werden. Zusätzlich kann eine Ätzstoppschicht (in 2 nicht veranschaulicht) mit einem leitenden Verbinder, der mit physisch nahen Abschnitten eines leitenden Kanals gekoppelt ist, in den mehreren leitenden Kanälen eingeschlossen sein, z. B. zwischen der ersten Gruppe von physischen Schichten 232 und der zweiten Gruppe von physischen Schichten 233. Zusätzlich oder alternativ können einer oder mehrere Unterblock-Gate-Transistoren (in 2 nicht veranschaulicht) zwischen der ersten Gruppe von physischen Schichten 232 und der zweiten Gruppe von physischen Schichten 233 gekoppelt sein.
  • In einer Ausführungsform ist die erste Gruppe von physischen Schichten 232 ein Beispiel für einen ersten Unterblock und die zweite Gruppe von physischen Schichten 233 ein Beispiel für einen zweiten Unterblock. Zum Beispiel kann jeder Unterblock (z. B. „wortleitungenbasierte“ Unterblöcke) Speicherzellen einschließen, die einem Teilsatz von Wortleitungen WL0 bis WL4 entsprechen. In einer alternativen Ausführungsform kann jeder Unterblock (z. B. „kettenbasierte“ Unterblöcke) Speicherzellen einschließen, die einem Teilsatz von Ketten (z. B. NAND-Ketten) entsprechen, und kann zum Beispiel gemeinsame Source-Leitungen SL0 bis SL2, aber keine gemeinsamen Bitleitungen BL0 bis BL2 oder umgekehrt aufweisen.
  • Die Lese-/Schreibschaltlogik 268 ermöglicht und/oder bewirkt Lese- und Schreibvorgänge, die auf dem 3D-Speicher 226 durchgeführt werden. Zum Beispiel können Daten in Speicherelementen gespeichert werden, die mit einer Wortleitung WL0 bis WL4 gekoppelt sind, und die Lese-/Schreibschaltlogik 268 kann Bitwerte aus den Speicherelementen (z. B. Speicherzellen) unter Verwendung eines oder mehrerer Abtastblöcke 236 lesen. Als ein weiteres Beispiel kann die Lese-/Schreibschaltlogik 268 Auswahlsignale an Steuerleitungen anlegen, die mit den Wortleitungen WL0 bis WL4, den Bitleitungen BL0 bis BL2 und den Source-Leitungen SL0 bis SL2 gekoppelt sind, um zu bewirken, dass eine Programmierspannung (z. B. ein Spannungsimpuls oder eine Reihe von Spannungsimpulsen) über ausgewählte Speicherelement(e) der ausgewählten Wortleitung (z. B. die vierte Wortleitung WL4) angelegt wird. Die Lese-/Schreibschaltlogik 268 kann auch Verifizierungsvorgänge als Teil des Programmiervorgangs durchführen.
  • Die Lese-/Schreibschaltlogik 268 schließt einen oder mehrere Abtastblöcke 236 ein. Die Abtastblöcke 236 werden zum Lesen oder Erfassen eines oder mehrerer in einer Speicherzelle gespeicherten Werte verwendet. In einem Ansatz wird ein Abtastblock 236 für eine Gruppe von NAND-Ketten bereitgestellt, von denen jede mit einer bestimmten Bitleitung BL0 bis BL2 gekoppelt ist. Zum Beispiel ist ein Abtastblock 236 BL0 zugeordnet. Ein weiterer Abtastblock 236 ist BL1 zugeordnet, und noch ein weiterer Abtastblock 236 ist BL2 zugeordnet. Jeder Abtastblock 236 kann eine Speichersteuerung (in 2 nicht veranschaulicht) einschließen. Jeder Abtastblock 236 schließt auch ein Abtastmodul für jede NAND-Kette ein. Alternativ kann ein Abtastblock 236 mit einem Intervall von Bitleitungen gekoppelt sein, wie gerade oder ungerade Bitleitungen.
  • Während eines Lesevorgangs kann eine Steuerung eine Anforderung von einer Host-Vorrichtung empfangen, wie einem Computer, Smartphone oder Laptop. Die Steuerung kann bewirken, dass die Lese-/Schreibschaltlogik 268 Bits von bestimmten Speicherelementen des 3D-Speichers 226 liest, durch Anlegen geeigneter Signale an die Steuerleitungen, um zu bewirken, dass Speicherelemente einer ausgewählten Wortleitung erfasst werden. Dementsprechend kann der 3D-Speicher 226 mit mehreren leitenden Kanälen in einer gestapelten Konfiguration eingerichtet werden, um Daten von einem oder mehreren Speicherelementen zu lesen und auf diese zu schreiben.
  • Ein oder mehrere Unterblöcke von Speicherzellen 246 in einem Array von Speicherzellen 246 können durch einen Kanal (z. B. einen physischen Kommunikationskanal) gekoppelt sein. In einer Ausführungsform weist der Kanal eine Bitleitung BL0 bis BL2 und/oder eine Source-Leitung SL0 bis SL2 auf.
  • 3 veranschaulicht eine Ausführungsform einer Querschnittsansicht einer vertikalen 3D-Speicherstruktur oder einer Kette 329. In einer Ausführungsform ist die vertikale Spalte 332 rund und schließt vier Schichten ein; jedoch können in anderen Ausführungsformen mehr oder weniger als vier Schichten eingeschlossen sein, und andere Formen verwendet werden (z. B. eine „U“-Form anstelle einer „I“-Form oder dergleichen). In einer Ausführungsform schließt eine vertikale Spalte 332 eine innere Kernschicht 370 ein, die aus einem Dielektrikum, wie zum Beispiel SiO2, hergestellt ist. Es können auch andere Materialien verwendet werden. Der innere Kern oder die innere Kernschicht 370 ist von einem Polysiliziumkanal 371 umgeben. Es können auch andere Materialien als Polysilicium verwendet werden. Es ist zu beachten, dass es der Kanal 371 ist, der mit der Bitleitung verbunden ist. Der Kanal 371 ist von einem Tunneldielektrikum 372 umgeben. In einer Ausführungsform hat das Tunneldielektrikum 372 eine ONO-Struktur. Das Tunneldielektrikum 372 ist von einer gemeinsam genutzten Ladungsfängerschicht 373, wie (zum Beispiel) Siliziumnitrid umgeben. Andere Materialien und Strukturen können ebenfalls verwendet werden. Die hierin beschriebene Technologie ist nicht auf ein spezifisches Material oder eine spezifische Struktur beschränkt.
  • 3 zeigt die dielektrischen Schichten DLL49, DLL50, DLL51, DLL52 und DLL53 sowie die Wortleitungsschichten WLL43, WLL44, WLL45, WLL46 und WLL47. Jede Wortleitungsschicht schließt einen Wortleitungsbereich 376, der von einer Aluminiumoxidschicht 377 umgeben ist, die von einer Blockieroxidschicht 378 (SiO2) umgeben ist, ein. Die physische Wechselwirkung der Wortleitungsschichten mit der vertikalen Spalte 332 bildet die Speicherzellen. Somit weist eine Speicherzelle in einer Ausführungsform den Kanal 371, das Tunneldielektrikum 372, die Ladungsfängerschicht 373 (z. B. gemeinsam mit anderen Speicherzellen), eine Blockieroxidschicht 378, eine Aluminiumoxidschicht 377 und einen Wortleitungsbereich 376 auf. In einigen Ausführungsformen können die Blockieroxidschicht 378 und die Aluminiumoxidschicht 377 durch eine einzelne Materialschicht mit isolierenden Eigenschaften oder durch mehr als zwei Schichten aus unterschiedlichem Material mit isolierenden Eigenschaften ersetzt werden. Weiterhin sind die verwendeten Materialien nicht auf Siliziumdioxid (SiO2) oder Aluminiumoxid beschränkt. Beispielsweise weisen die Wortleitungsschicht WLL47 und ein Abschnitt der vertikalen Spalte 332 eine Speicherzelle MC1 auf. Die Wortleitungsschicht WLL46 und ein Abschnitt der vertikalen Spalte 332 weisen eine Speicherzelle MC2 auf. Die Wortleitungsschicht WLL45 und ein Abschnitt der vertikalen Spalte 332 weisen eine Speicherzelle MC3 auf. Die Wortleitungsschicht WLL44 und ein Abschnitt der vertikalen Spalte 332 weisen eine Speicherzelle MC4 auf. Die Wortleitungsschicht WLL43 und ein Abschnitt der vertikalen Spalte 332 weisen eine Speicherzelle MC5 auf. In anderen Architekturen kann eine Speicherzelle eine andere Struktur haben, jedoch wäre die Speicherzelle immer noch die Speichereinheit.
  • Wenn eine Speicherzelle programmiert wird, werden Elektronen in einem Abschnitt der Ladungsfängerschicht 373 gespeichert, welcher der Speicherzelle zugeordnet ist. Diese Elektronen werden in die Ladungsfängerschicht 373 aus dem Kanal 371 durch das Tunneldielektrikum 372 als Reaktion auf eine entsprechende Spannung in dem Wortleitungsbereich 376 gezogen. Die Schwellenspannung (Vt) einer Speicherzelle wird proportional zur Menge der gespeicherten Ladung erhöht. In einer Ausführungsform wird die Programmierung durch Fowler Nordheim-Tunneln der Elektronen in die Ladungsfängerschicht erreicht. Während eines Löschvorgangs kehren die Elektronen in den Kanal zurück oder werden Löcher in die Ladungsfängerschicht injiziert, um sich mit Elektronen zu rekombinieren. In einer Ausführungsform wird Löschen unter Verwendung von Löcherinjektion in die Ladungsfängerschicht über einen physikalischen Mechanismus, wie etwa durch Gate induziertes Drain-Leck (GIDL), erreicht.
  • Speicherzellen an derselben Stelle oder Position in unterschiedlichen Speicherstrukturen 329 (z. B. unterschiedliche Speicherketten 329) auf unterschiedlichen Bitleitungen können sich in bestimmten Ausführungsformen auf derselben Wortleitung befinden. Jede Wortleitung kann eine Datenseite speichern, zum Beispiel wenn 1 -Bit von Daten pro Zelle (SLC) gespeichert wird; zwei Seiten von Daten, beispielsweise wenn 2-Bits von Daten pro Zelle (MLC) gespeichert werden; drei Seiten von Daten, beispielsweise wenn 3-Bits von Daten pro Zelle gespeichert werden (TLC); vier Seiten von Daten, beispielsweise wenn 4-Bits von Daten pro Zelle gespeichert werden (QLC); oder eine andere Anzahl von Seiten von Daten.
  • In der dargestellten Ausführungsform weist eine vertikale 3D-Speicherstruktur 329 eine „I“-förmige Speicherstruktur 329 auf. In anderen Ausführungsformen kann eine vertikale 3D-Speicherstruktur 329 eine „U“-förmige Struktur aufweisen oder kann eine andere vertikale und/oder gestapelte Architektur aufweisen. In bestimmten Ausführungsformen können vier Sätze von Ketten 329 (z. B. vier Sätze von 48 Wortleitungen oder eine andere vordefinierte Anzahl von Wortleitungen) einen Löschblock bilden, während in anderen Ausführungsformen weniger oder mehr als vier Sätze von Ketten 329 einen Löschblock bilden können. Es versteht sich, dass beliebige geeignete Anzahl von Speicherzellen Teil einer einzelnen Kette 329 sein kann. In einer Ausführungsform schließt eine einzelne Kette 329 achtundvierzig Speicherzellen ein.
  • 4 ist ein Diagramm, das eine Draufsicht eines 3D-Speicherblocks 400 gemäß einer Ausführungsform veranschaulicht. Wie veranschaulicht, kann der 3D-Speicherblock 400 eine Reihe von Speicherlöchern oder -zellen aufweisen (dargestellt durch Kreise, die in 4 als „0o“ bis „7o“ und „0e“ bis „7e“ bezeichnet werden). Jedes dieser Speicherlöcher kann in Ketten (in 4 „Kette0“ bis „Kette3“ bezeichnet) und/oder weiter in IO-Gruppen (in 4 als „O“, „I1“, „I2“ und „I3“ bezeichnet) organisiert werden. Jede IO-Gruppe befindet sich zwischen zwei unterschiedlichen Arten von Ätzmerkmalen, die im 3D-Speicherblock 400 gebildet werden, einem Flachen Ätzmerkmal 410 (z. B. SHE genannt) und einem Tiefen Ätzmerkmal 420 (z. B. ST genannt). Die IO-Gruppen, die zu einem Tiefen Ätzmerkmal 420 benachbart sind, werden als Äußere IO-Gruppen (O) bezeichnet; die IO-Gruppen, die zu einem Flachen Ätzmerkmal 410 benachbart sind, werden als Innere3 IO-Gruppen (13) bezeichnet; die IO-Gruppen, die zu Äußeren IO-Gruppen benachbart sind, werden als Innere1 IO-Gruppen (11) bezeichnet; und die IO-Gruppen, die zu Innere3 IO-Gruppen (13) benachbart sind, werden als Innere2 IO-Gruppen (12) bezeichnet. Es ist zu beachten, dass die hierin offenbarten Prozeduren und Verfahren in Verbindung mit einer Vielzahl von Speicherarten implementiert werden können, wie NAND- oder NOR-Speicher, 2D-Speicher, 3D-Speicher oder Speicher, die eine ladungsbasierte oder widerstandsbasierte Speichertechnologie verwenden. In einem Beispiel kann der veranschaulichte Speicherblock 400 16K-Speicherzellen aufweisen, die weiter in kleinere Gruppen von Speicherzellen mit jeweils 1 K-Speicherzellen aufgeteilt werden können. Diese kleineren Gruppen können in Schichten angeordnet sein. Die Schichten können die Speicherzellen einschließen, die den Löchern zugeordnet sind, die in 4 mit denselben bezeichneten Kreisen bezeichnet werden. Die Speicherzellen, die als 2o markiert sind, sind Teil einer gleichen Schicht. Die Speicherzellen, die 3e markiert sind, sind Teil einer anderen Schicht. Die Speicherzellen, die als 2e markiert sind, sind Teil einer gleichen Schicht. Die Speicherzellen, die mit 3o gekennzeichnet sind, sind Teil einer anderen Schicht. Wie hierin erläutert, kann die Steuerung eine einzelne Schicht für einen Programmierverifizierungsvorgang auswählen, wenn die Programmierverifizierungsebene unwahrscheinlich ist, um einen überprogrammierten Zustand zu finden oder wenn die einzelne Schicht repräsentativ für die anderen Schichten ist. Mindestens eine Zwischenebene für die Programmierverifizierung ist ein Mehrschichtenverifizierungsvorgang.
  • Einige Herstellungsprozesse für 3D-Speicher können Filmabscheidungsprozesse einschließen, die dazu neigen, über Ätzprozesse zu dominieren, die während der Herstellung durchgeführt werden. Für diese Arten von Herstellungsprozessen programmieren die äußeren Speicherlöcher in den Äußeren IO-Gruppen (O) im Allgemeinen langsamer als das innere Speicherloch (13). Jedoch können andere Herstellungsprozesse für 3D-Speicher Ätzprozesse einschließen, die dazu neigen, über Filmabscheidungsprozesse während der Herstellung zu dominieren. Für diese Arten von Herstellungsprozessen programmiert das innere Speicherloch (13) im Allgemeinen langsamer als die äußeren Speicherlöcher (O). Es ist jedoch zu beachten, dass die physische Position einer IO-Gruppe von Speicherzellen in der 3D-Speicherstruktur aufgrund dieser während des Herstellungsprozesses eingeführten Variation oder als eine Folge des durch die Verwendung der Vorrichtung verursachten Verschleißes nicht immer entscheidend für die relative Programmiergeschwindigkeit ist. Außerdem kann eine zyklische Leistungsminderung auch bewirken, dass sich die relative Programmiergeschwindigkeit unterschiedlicher Speicherzellen oder Gruppen von Speicherzellen mit der Zeit verschiebt.
  • Weiter in 4 kann jedes der Speicherlöcher (0o bis 7o und 0e bis 7e) mit Bitleitungen 430 (in 4 als Bitleitungen 0 bis 7 bezeichnet) verbunden werden. Die Bitleitungen 430 erstrecken sich über die Speicherlöcher und sind mit ausgewählten Speicherlöchern über Verbindungspunkte (in 4 als kleine, durchgehende Ovale veranschaulicht) verbunden, die angeben, wo eine Bitleitung 430 mit einem Speicherloch verbunden ist. Zur einfacheren Veranschaulichung sind in 4 nur acht Bitleitungen 430 (0 bis 7) gezeigt. Es versteht sich jedoch, dass sich andere Bitleitungen (nicht gezeigt) auch über die anderen Speicherlöcher in 4 erstrecken.
  • 5 veranschaulicht ein Array von Erfassungsverstärkergruppen 500 für die 3D-Speicherstruktur 400 von 4 nach einem Beispiel. Die in 4 gezeigten Bitleitungen 430 erstrecken sich über das Array der Erfassungsverstärkergruppen 500, wie in 5 zu sehen ist. Auf diese Weise können bestimmte Speicherlöcher der 3D-Speicherstruktur 400 mit einer der Bitleitungen 430 elektrisch gekoppelt werden, und jede Bitleitung kann dann mit einer Bitleitungsschnittstelle 510 elektrisch gekoppelt werden. In einer Ausführungsform kann die Bitleitungsschnittstelle 510 zusätzlich Scrambling verwenden, wie durch die in 5 gezeigten geneigten/nicht vertikalen Leitungen zwischen den Bitleitungen 430 und der Bitleitungsschnittstelle 510 veranschaulicht. Danach kann jede Bitleitung 430 mit einer Abtastverstärkergruppe (in 5 als Schicht#0 bis Schicht#15 bezeichnet) elektrisch gekoppelt werden. Wie in 5 veranschaulicht, erstreckt sich jede Erfassungsverstärkergruppe horizontal über die Seite. Dementsprechend weist jede „Schicht“ eine Gruppe von Speicherlöchern in elektrischer Kommunikation mit einer bestimmten Erfassungsverstärkergruppe über eine Bitleitung 430 auf. Eine Schicht kann auch als „Untergruppe von Speicherzellen“ oder einfach als „Untergruppe“ bezeichnet werden. Eine „Untergruppe“ von Speicherzellen kann ein beliebiger Untersatz von Speicherzellen sein, der aus einer größeren Gruppe von Speicherzellen gebildet wird. In dieser Anmeldung kann eine Untergruppe von Speicherzellen als eine Schicht, eine Schichtgruppe, eine IO-Gruppe, eine Division und dergleichen bezeichnet werden.
  • 6 ist ein schematisches Blockdiagramm, das eine Ausführungsform eines Systems 600 und einer Vorrichtung 610 zur Identifikation und Auswahl von Speicherzellenuntergruppen veranschaulicht. Die Rechnervorrichtung 610 weist eine oder mehrere Identifikationsschaltungen oder Schichtauswahlschaltungen 650 für Speichermedien 622 einer nichtflüchtigen und/oder flüchtigen Speichervorrichtung 620 auf. Wie hierin verwendet, bezieht sich eine „Schichtschaltung“ auf eine Schaltung, die verwendet wird, um eine bestimmte Schicht von Speicherzellen (z. B. eine 2o-Schicht von Speicherzellen) in Bezug auf mindestens eine andere Untergruppe von Speicherzellen zu identifizieren und die identifizierte Schicht von Speicherzellen zur Verwendung in mindestens einem Programmiervorgang, z. B. Programmierverifizierung, auszuwählen. Die Schichtauswahlschaltungen können so betrieben werden, dass sie eine einzelne Schicht für einige Programmierverifizierungsebenen und mehrere Schichten für andere Programmierverifizierungsebenen in einem gleichen Verifizierungsvorgang auswählen. Mindestens eine Verifizierung ist eine einschichtige Verifizierung, die z. B. die A- oder erste Programmierverifizierungsebene. Die erste Programmierverifizierungsebene kann die niedrigste Spannung sein. In einer beispielhaften Ausführungsform ist die letzte Programmierverifizierungsebene auch ein einschichtiger Verifizierungsvorgang. In einer beispielhaften Ausführungsform wird mindestens eine Zwischenprogrammierverifizierung auf mehreren Schichten durchgeführt.
  • Eine Schichtauswahlschaltung 650 kann Teil eines nichtflüchtigen und/oder flüchtigen Speicherelements 623 (z. B. auf der gleichen integrierten Schaltungsvorrichtung wie ein nichtflüchtiges Speichermedium 622 angeordnet) sein. In einigen Ausführungsformen kann eine Speichervorrichtung 620 zumindest teilweise auf und/oder in Kommunikation mit einem nichtflüchtigen und/oder flüchtigen Speichersystem 602 einer Rechnervorrichtung 610 arbeiten, die einen Prozessor 611, flüchtigen Speicher 612 und eine Kommunikationsschnittstelle 613 aufweisen kann. Der Prozessor 611 kann eine oder mehrere zentrale Verarbeitungseinheiten, einen oder mehrere Universalprozessoren, einen oder mehrere anwendungsspezifische Prozessoren, einen oder mehrere virtuelle Prozessoren (z. B. kann die Rechnervorrichtung 610 eine virtuelle Maschine sein, die in einem Host arbeitet), einen oder mehrere Prozessorkerne oder dergleichen aufweisen. Die Kommunikationsschnittstelle 613 kann eine oder mehrere Netzwerkschnittstellen aufweisen, die dazu eingerichtet sind, die Rechnervorrichtung 610 und/oder die Speichersteuerung 626 kommunikativ mit einem Kommunikationsnetzwerk 615, wie etwa einem Internetprotokoll-(IP-)Netzwerk, einem Speicherbereichsnetzwerk (Storage Area Network, SAN), einem drahtlosen Netzwerk, einem drahtgebundenen Netzwerk oder dergleichen, zu koppeln.
  • Die Speichervorrichtung 620 kann in verschiedenen Ausführungsformen an einem oder mehreren unterschiedlichen Orten relativ zu der Rechnervorrichtung 610 angeordnet sein. In einer Ausführungsform weist die Speichervorrichtung 620 eines oder mehrere nichtflüchtige und/oder flüchtige Speicherelemente 623 auf, wie etwa Halbleiterchips oder -gehäuse oder andere integrierte Schaltungsvorrichtungen, die auf einer bzw. einem oder mehreren Schaltungsplatinen, Speichergehäusen und/oder anderen mechanischen und/oder elektrischen Trägerstrukturen angeordnet sind. Beispielsweise kann die Speichervorrichtung 620 eine oder mehrere Karten für ein direktes Inline-Speichermodul (DIMM), eine oder mehrere Erweiterungskarten und/oder Tochterkarten, eine Speicherkarte, ein Universal-Serial-Bus-Laufwerk (USB-Laufwerk), ein Solid-State-Drive (SSD) oder eine andere Festplattenvorrichtung aufweisen und/oder kann einen anderen Speicher- und/oder Speicherungsformfaktor aufweisen. Die Speichervorrichtung 620 kann in einer Hauptplatine der Rechnervorrichtung 610 integriert und/oder darauf montiert sein, in einem Port und/oder Steckplatz der Rechnervorrichtung 610 installiert sein, auf einer anderen Rechnervorrichtung 610 und/oder einem dedizierten Speichergerät auf das Netzwerk 615 installiert sein, mit der Rechnervorrichtung 610 über einen externen Bus (z. B. eine externe Festplatte) in Verbindung sein oder dergleichen.
  • Die Speichervorrichtung 620 kann in einer Ausführungsform auf einem Speicherbus eines Prozessors 611 (z. B. auf dem gleichen Speicherbus wie der flüchtige Speicher 612, auf einem anderen Speicherbus als der flüchtige Speicher 612, anstelle des flüchtigen Speichers 612 oder dergleichen) angeordnet sein. In einer weiteren Ausführungsform kann die Speichervorrichtung 620 auf einem peripheren Bus der Rechnervorrichtung 610, wie etwa einem Peripheral-Component-Interconnect-Express-Bus (PCI-Express- oder PCIe-Bus), einem Serial-Advanced-Technology-Attachment-Bus (SATA-Bus), einem Parallel-Advanced-Technology-Attachment-Bus (PATA-Bus), einem Small-Computer-System-Interface-Bus (SCSI-Bus), einem FireWire-Bus, einer Fibre-Channel-Verbindung, einem Universal Serial Bus (USB), einem PCIe-Advanced-Switching-Bus (PCIe-AS-Bus) oder dergleichen, angeordnet sein. In einer anderen Ausführungsform kann die Speichervorrichtung 620 auf einem Datennetzwerk 615, wie einem Ethernet-Netzwerk, einem Infiniband-Netzwerk, SCSI-RDMA über ein Netzwerk 615, einem Speicherbereichsnetzwerk (Storage Area Network, SAN), einem lokalen Netzwerk (Local Area Network, LAN), einem Weitverkehrsnetzwerk (Wide Area Network, WAN) wie etwa dem Internet, einem anderen drahtgebundenen und/oder drahtlosen Netzwerk 615 oder dergleichen, angeordnet sein.
  • Die Rechnervorrichtung 610 kann weiterhin ein nicht-transitorisches, computerlesbares Speichermedium 614 aufweisen. Das computerlesbare Speichermedium 614 kann ausführbare Anweisungen aufweisen, die dazu eingerichtet sind, die Rechnervorrichtung 610 (z.B. Prozessor 611) zu veranlassen, Schritte eines oder mehrerer der hierin offenbarten Verfahren durchzuführen. In einer Ausführungsform kann eine Untergruppen-Auswahlschaltung 650 Hardware eines nichtflüchtigen und/oder flüchtigen Speicherelements 623, einen computerausführbaren Programmcode eines Vorrichtungstreibers, Firmware einer Speichersteuerung 626 und/oder eine Speichermediensteuerung für ein Speicherelement 623, eine weitere elektrische Komponente oder dergleichen aufweisen. In einer Ausführungsform ist eine Untergruppen-Auswahlschaltung 650 auf einem Speicherelement 623 (z. B. einer On-Die-Untergruppen-Auswahlschaltung 650 und/oder einer anderen integrierten Hardware) integriert.
  • Gemäß verschiedenen Ausführungsformen kann eine Speichersteuerung 626 eine oder mehrere Speichervorrichtungen 620 und/oder Speicherelemente 623 verwalten, von denen eine oder mehrere eine On-Die-Untergruppen-Auswahlschaltung 650 aufweisen können. Die Speichervorrichtung(en) 620 können Aufzeichnungs-, Speicher- und/oder Speicherungsvorrichtungen, wie etwa Solid-State-Speicherungsvorrichtung(en) und/oder Halbleiterspeicherungsvorrichtung(en), aufweisen, die in einer Vielzahl von adressierbaren Medienspeicherorten angeordnet und/oder partitioniert sind. Wie hierin verwendet, bezieht sich ein Medienspeicherort auf eine beliebige physische Speichereinheit (z. B. eine beliebige Menge von physischen Speichermedien auf einer Speichervorrichtung 620). Speichereinheiten und/oder -bereiche können, ohne jedoch darauf beschränkt zu sein, Folgendes einschließen: Seiten, Speicherabschnitte, Blöcke, Sektoren, Sammlungen oder Sätze von physischen Speicherorten (z. B. logische Seiten, logische Blöcke) oder dergleichen.
  • Ein Vorrichtungstreiber und/oder eine Speichersteuerung 626 können in bestimmten Ausführungsformen einen logischen Adressraum 634 für die Speicher-Clients 616 bereitstellen. Wie hierin verwendet, bezieht sich ein logischer Adressraum 634 auf eine logische Repräsentation von Speicherressourcen. Der logische Adressraum 634 kann eine Vielzahl (z. B. einen Bereich) von logischen Adressen aufweisen. Wie hierin verwendet, bezieht sich eine logische Adresse auf jeden Identifikator zum Referenzieren einer Speicherressource (z. B. Daten), einschließlich, ohne jedoch darauf beschränkt zu sein: einer logische Blockadresse (LBA), einer Zylinder/Kopf/Sektor(Cylinder/Head/Sector, CHS)-Adresse, einem Dateinamen, einem Objektidentifikator, einem global eindeutigen Identifikator (Globally Unique Identifier, GUID), einem Hash-Code, einer Signatur, einem Indexeintrag, einem Bereich, einem Umfang oder dergleichen.
  • Ein Vorrichtungstreiber für die Speichervorrichtung 620 kann Metadaten 635, wie etwa eine Logisch-zu-physisch-Adressabbildungsstruktur, verwalten, um logische Adressen des logischen Adressraums 634 auf Medienspeicherorte auf der Speichervorrichtung bzw. den Speichervorrichtungen 620 abzubilden. Ein Vorrichtungstreiber kann dazu eingerichtet sein, Speicherdienste für einen oder mehrere Speicher-Clients 616 bereitzustellen. Die Speicher-Clients 616 können lokale Speicher-Clients 616, die auf der Rechnervorrichtung 610 arbeiten, und/oder Remote-Speicher-Clients 616, auf die über das Netzwerk 615 und/oder die Netzwerkschnittstelle 613 zugegriffen werden kann, aufweisen. Die Speicher-Clients 616 können einschließen, ohne jedoch darauf beschränkt zu sein: Betriebssysteme, Dateisysteme, Datenbankanwendungen, Serveranwendungen, Prozesse auf Kernel-Ebene, Benutzerebenenprozesse, Anwendungen und dergleichen.
  • Ein Vorrichtungstreiber kann kommunikativ mit einer oder mehreren Speichervorrichtungen 620 gekoppelt sein. Die eine oder mehreren Speichervorrichtungen 620 können verschiedene Arten von Speichervorrichtungen einschließen, einschließlich, ohne jedoch darauf beschränkt zu sein: Solid-State-Speicherungsvorrichtungen, Halbleiterspeicherungsvorrichtungen, SAN-Speicherressourcen, flüchtige Speichervorrichtungen, nichtflüchtige Speichervorrichtungen oder dergleichen. Die eine oder mehreren Speichervorrichtungen 620 können eine oder mehrere jeweilige Speichermediensteuerungen 626 und Speichermedien 622 aufweisen. Ein Vorrichtungstreiber kann Zugriff auf die eine oder mehreren Speichervorrichtungen 620 über eine herkömmliche Block-E/A-Schnittstelle 631 bereitstellen. Zusätzlich kann ein Vorrichtungstreiber Zugriff auf eine verbesserte Funktionalität über die SCM-Schnittstelle 632 bereitstellen. Die Metadaten 635 können zum Verwalten und/oder Verfolgen von Datenvorgängen verwendet werden, die durch eine von der Block-E/A-Schnittstelle 631, SCM-Schnittstelle 632, Cache-Schnittstelle 633 oder andere verwandte Schnittstellen ausgeführt werden.
  • Die Cache-Schnittstelle 633 kann Cache-spezifische Merkmale freilegen, auf die über einen Vorrichtungstreiber für die Speichervorrichtung 620 zugegriffen werden kann. Außerdem stellt in einigen Ausführungsformen die SCM-Schnittstelle 632, die den Speicher-Clients 616 präsentiert wird, Zugriff auf Datentransformationen bereit, die durch die eine oder mehreren Speichervorrichtungen 620 und/oder die eine oder mehreren Speichermediensteuerungen 626 implementiert werden.
  • Ein Vorrichtungstreiber kann den Speicher-Clients 616 einen logischen Adressraum 634 über eine oder mehrere Schnittstellen präsentieren. Wie vorstehend erörtert, kann der logische Adressraum 634 eine Vielzahl von logischen Adressen aufweisen, von denen jede jeweiligen Medienorten auf der einen oder den mehreren Speichervorrichtungen 620 entspricht. Ein Vorrichtungstreiber kann Metadaten 635 verwalten, die Beliebig-zu-Beliebig-Zuordnungen zwischen logischen Adressen und Medienorten oder dergleichen aufweisen.
  • Ein Vorrichtungstreiber kann weiterhin eine Speichervorrichtungsschnittstelle 639, die zum Übertragen von Daten, Befehlen und/oder Anforderungen an die eine oder mehreren Speichervorrichtungen 620 über einen Bus 625 eingerichtet ist, aufweisen und/oder damit in Kommunikation sein, was einschließen kann, ohne jedoch darauf beschränkt zu sein: einen Speicherbus eines Prozessors 611, einen Peripheral-Component-Interconnect-Express-Bus (PCI-Express- oder PCIe-Bus), einen seriellen Advanced-Technology-Attachment-Bus (ATA-Bus), einen parallelen ATA-Bus, ein Small Computer System Interface (SCSI), FireWire, Fibre Channel, einen Universal Serial Bus (USB), einen PCIe-Advanced-Switching-Bus (PCIe-AS-Bus), ein Netzwerk 615, Infiniband, SCSI-RDMA oder dergleichen. Die Speichervorrichtungsschnittstelle 639 kann mit der einen oder den mehreren Speichervorrichtungen 620 mittels eines Befehls bzw. Befehlen zur Eingabe-Ausgabe-Steuerung (IO-CTL), einer IO-CTL-Befehlserweiterung bzw. IO-CTL-Befehlserweiterungen, entferntem Direktspeicherzugriff oder dergleichen kommunizieren.
  • Die Kommunikationsschnittstelle 613 kann eine oder mehrere Netzwerkschnittstellen aufweisen, die dazu eingerichtet sind, die Rechnervorrichtung 610 und/oder die Speichersteuerung 626 kommunikativ mit einem Netzwerk 615 und/oder mit einem oder mehreren entfernten, netzwerkzugänglichen Speicher-Clients 616 zu koppeln. Die Speicher-Clients 616 können lokale Speicher-Clients 616, die auf der Rechnervorrichtung 610 arbeiten, und/oder Remote-Speicher-Clients 616, auf die über das Netzwerk 615 und/oder die Netzwerkschnittstelle 613 zugegriffen werden kann, aufweisen. Die Speichersteuerung 626 ist Teil von und/oder in Kommunikation mit einer oder mehreren Speichervorrichtungen 620. Obwohl 6 eine einzige Speichervorrichtung 620 darstellt, ist die Offenbarung in dieser Hinsicht nicht beschränkt und könnte angepasst werden, um eine beliebige Anzahl von Speichervorrichtungen 620, eine Kombination von einer oder mehreren flüchtigen Speichervorrichtungen 620 und einer oder mehreren nichtflüchtigen Speichervorrichtungen 620 oder dergleichen einzuschließen.
  • Die Speichervorrichtung 620 kann eines oder mehrere Elemente 623 von Speichermedien 622 aufweisen. In einer Ausführungsform weist ein Element 623 von Speichermedien 622 ein flüchtiges Speichermedium 622 auf, wie etwa Direktzugriffsspeicher (Random - Access Memory, RAM), dynamisches RAM (DRAM), synchrones DRAM (SDRAM), Doppeldatenraten-SDRAM (DDR-SDRAM), statisches RAM (SRAM), Thyristor-RAM (T-RAM), Null-Kondensator-RAM (Zero-Capacitor RAM, Z-RAM) oder dergleichen. In bestimmten Ausführungsformen weist ein Element 623 von Speichermedien 622 ein nichtflüchtiges Speichermedium 622 auf, wie etwa ReRAM, Memristorspeicher, programmierbaren Metallisierungszellenspeicher, Phasenänderungsspeicher (PCM, PCME, PRAM, PCRAM, Ovonic Unified Memory, Chalkogenid-RAM oder C-RAM), NAND-Flashspeicher (z. B. 2D-NAND-Flashspeicher, 3D-NAND-Flashspeicher), NOR-Flashspeicher, Nano-Direktzugriffsspeicher (Nano-RAM oder NRAM), drahtbasierten Nanokristallspeicher, Siliziumoxid-basierten Sub-10-Nanometer-Prozessspeicher, Graphenspeicher, Silizium-Oxid-Nitrid-Oxid-Silizium-Speicher (SONOS-Speicher), programmierbaren Metallisierungszellen-Speicher (Programmable-Metallization-Cell-, PMC-Speicher), RAM mit leitfähiger Überbrückung (Conductive-Bridging RAM, CBRAM), magnetoresistives RAM (MRAM), magnetische Speichermedien (z. B. Festplatte, Band), optische Speichermedien oder dergleichen. Somit kann die Speichervorrichtung 620 zum Beispiel auf gespeicherte Spannungsstufen oder gespeicherte Widerstandsstufen zurückgreifen. Das eine oder die mehreren Elemente 623 von Speichermedien 622 weisen in bestimmten Ausführungsformen Speicherklassenspeicher (SCM) auf.
  • Während Legacy-Technologien, wie etwa NAND-Flash, block- und/oder seitenadressierbar sein können, ist Speicherklassenspeicher in einer Ausführungsform byteadressierbar. In weiteren Ausführungsformen kann Speicherklassenspeicher schneller sein und/oder eine längere Lebensdauer (z. B. Standzeit) als NAND-Flash aufweisen; kann geringere Kosten verursachen, weniger Leistung verwenden und/oder eine höhere Speicherdichte als DRAM aufweisen; oder einen oder mehrere andere Vorteile oder Verbesserungen im Vergleich zu anderen Technologien bieten. Zum Beispiel kann der Speicherklassenspeicher eines oder mehrere nichtflüchtige Speicherelemente 623 aus ReRAM, Memristorspeicher, programmierbarem Metallisierungszellenspeicher, Phasenänderungsspeicher, Nano-RAM, drahtbasiertem Nanokristallspeicher, Siliziumoxidbasiertem Sub-10-Nanometer-Prozessspeicher, Graphenspeicher, SONOS-Speicher, PMC-Speicher, CBRAM, MRAM und/oder Variationen davon aufweisen.
  • Während die nichtflüchtigen Speichermedien 622 hierin als „Speichermedien“ bezeichnet werden, können die nichtflüchtigen Speichermedien 622 in verschiedenen Ausführungsformen allgemeiner eines oder mehrere nichtflüchtige Aufzeichnungsmedien aufweisen, die in der Lage sind, Daten aufzuzeichnen, die als nichtflüchtiges Speichermedium, nichtflüchtiges Speichermedium oder dergleichen bezeichnet werden können. Weiterhin kann die nichtflüchtige Speichervorrichtung 620 in verschiedenen Ausführungsformen eine nichtflüchtige Aufzeichnungsvorrichtung, eine nichtflüchtige Speichervorrichtung, eine nichtflüchtige Speicherungsvorrichtung oder dergleichen aufweisen. In ähnlicher Weise kann ein nichtflüchtiges Speicherelement 623 in verschiedenen Ausführungsformen ein nichtflüchtiges Aufzeichnungselement, ein nichtflüchtiges Speicherelement, ein nichtflüchtiges Speicherungselement oder dergleichen aufweisen.
  • Die nichtflüchtigen Speichermedien 622 können eines oder mehrere nichtflüchtige Speicherelemente 623 aufweisen, die Chips, Pakete, Ebenen, Rohchips oder dergleichen einschließen können, ohne jedoch darauf beschränkt zu sein. Eine nichtflüchtige Speichersteuerung 626 kann dazu eingerichtet sein, Datenoperationen auf dem nichtflüchtigen Speichermedium 622 zu verwalten, und kann einen oder mehrere Prozessoren, programmierbare Prozessoren (z. B. FPGAs), ASICs, Mikrocontroller oder dergleichen aufweisen. In einigen Ausführungsformen ist die Vorrichtungssteuerung 626 dazu eingerichtet, Daten auf dem nichtflüchtigen Speichermedium 622 zu speichern und/oder Daten daraus zu lesen, Daten zu/von der nicht-flüchtigen Speichervorrichtung 620 zu übertragen und so weiter.
  • Die nichtflüchtige Speichersteuerung 626 kann kommunikativ mit dem nichtflüchtigen Speichermedium 622 über einen Bus 627 gekoppelt sein. Der Bus 627 kann einen E/A-Bus zum Kommunizieren von Daten zu/von den nichtflüchtigen Speicherelementen 623 aufweisen. Der Bus 627 kann weiterhin einen Steuerbus zum Kommunizieren von Adressier- und anderen Befehls- und Steuerinformationen zu den nichtflüchtigen Speicherelementen 623 aufweisen. In einigen Ausführungsformen kann der Bus 627 die nichtflüchtigen Speicherelemente 623 kommunikativ parallel mit der nichtflüchtigen Speichersteuerung 626 koppeln. Dieser parallele Zugriff kann ermöglichen, dass die nichtflüchtigen Speicherelemente 623 als eine Gruppe verwaltet werden, wodurch ein logisches Speicherelement 629 gebildet wird. Das logische Speicherelement kann in entsprechende logische Speichereinheiten (z. B. logische Seiten) und/oder logische Speicherdivisionen (z. B. logische Blöcke) unterteilt sein. Die logischen Speichereinheiten können gebildet werden, indem physische Speichereinheiten von jedem der nichtflüchtigen Speicherelemente logisch kombiniert werden.
  • Die Steuerung 626 des nichtflüchtigen Speichers kann einen Vorrichtungstreiber aufweisen und/oder mit diesem in Verbindung stehen, der auf der Rechnervorrichtung 610 ausgeführt wird. Ein Vorrichtungstreiber kann über eine oder mehrere Schnittstellen 631, 632 und/oder 633 Speicherdienste für die Speicher-Clients 616 bereitstellen. In einigen Ausführungsformen stellt ein Vorrichtungstreiber eine Blockvorrichtungs-E/A-Schnittstelle 631 bereit, durch die Speicher-Clients 616 E/A-Vorgänge auf Blockebene durchführen. Alternativ oder zusätzlich kann ein Vorrichtungstreiber eine Speicherklassenspeicher-(SCM) Schnittstelle 632 bereitstellen, die andere Speicherdienste für die Speicher-Clients 616 bereitstellen kann. In einigen Ausführungsformen kann die SCM-Schnittstelle 632 Erweiterungen zu der Blockvorrichtungsschnittstelle 631 aufweisen (z. B. können die Speicher-Clients 616 auf die SCM-Schnittstelle 632 über Erweiterungen oder Ergänzungen zu der Blockvorrichtungsschnittstelle 631 zugreifen). Alternativ oder zusätzlich kann die SCM-Schnittstelle 632 als separate API, Dienst und/oder Bibliothek bereitgestellt werden. Ein Vorrichtungstreiber kann weiterhin so eingerichtet sein, dass er eine Cache-Schnittstelle 633 zum Zwischenspeichern von Daten unter Verwendung des nichtflüchtigen Speichersystems 602 bereitstellt. Ein Vorrichtungstreiber kann weiterhin eine Schnittstelle einer nichtflüchtigen Speichervorrichtung 639 aufweisen, die dazu eingerichtet ist, Daten, Befehle und/oder Abfragen an die nichtflüchtige Speichersteuerung 626 über einen Bus 625 zu übertragen, wie vorstehend beschrieben.
  • 7 ist ein schematisches Blockdiagramm, das eine Ausführungsform einer nichtflüchtigen Speicherungsvorrichtung 710 veranschaulicht, die Programmier- und Verifizierungsvorgänge durchführen kann, wie hierin beschrieben. Die nichtflüchtige Speicherungsvorrichtung 710 kann einen oder mehrere Speicherrohchips oder -chips 712 einschließen. Ein „Speicherrohchip“ weist einen Block aus Halbleitermaterial auf, auf dem eine Speicherschaltung hergestellt wird, und schließt, wie hierin verwendet, auch die darauf angeordnete Speicherschaltung ein. Die nichtflüchtige Speicherungsvorrichtung 710 kann im Wesentlichen der Rechnervorrichtung 610 ähnlich sein, die unter Bezugnahme auf 6 beschrieben wird.
  • Der Speicherrohchip 712 schließt in einigen Ausführungsformen ein Array 700 (z. B. zweidimensional oder dreidimensional) von Speicherzellen, eine On-Die-Steuerung 720 und Lese-/Schreibschaltungen 730A/730B ein. In einer Ausführungsform ist der Zugriff auf das Speicher-Array 700 durch die verschiedenen peripheren Schaltungen auf eine symmetrische Weise auf gegenüberliegenden Seiten des Speicherarrays 700 implementiert, so dass die Dichten von Zugriffsleitungen und Schaltlogik auf jeder Seite um die Hälfte reduziert sind. Die Lese-/Schreibschaltungen 730A/730B schließen in einer weiteren Ausführungsform mehrere Abtastblöcke 751 ein, die ermöglichen, dass eine Seite von Speicherzellen parallel gelesen oder programmiert wird.
  • Das Speicher-Array 700 ist in verschiedenen Ausführungsformen durch Wortleitungen über Zeilendecodiererschaltungen 740A/740B und durch Bitleitungen über Spaltendecodiererschaltungen 742A/742B adressierbar. In einigen Ausführungsformen ist eine Steuerung 744 in der gleichen Speicherungsvorrichtung 710 (z. B. einer entfernbaren Speicherkarte oder einem Paket) wie das eine oder die mehreren Speicherrohchips 712 eingeschlossen. Befehle und Daten werden zwischen dem Host und der Steuerung 744 über Leitungen 732 und zwischen der Steuerung und dem einen oder den mehreren Speicherrohchips 712 über Leitungen 734 übertragen. Eine Implementierung kann mehrere Chips 712 einschließen.
  • Die On-Die-Steuerung 720 (z. B. Steuerungsschaltlogik) arbeitet in einer Ausführungsform mit den Lese-/Schreibschaltungen 730A/730B zusammen, um Speichervorgänge auf dem Speicher-Array 700 durchzuführen. Die On-Die-Steuerung 720 schließt in bestimmten Ausführungsformen eine Zustandsmaschine 722, einen On-Chip-Adressdecodierer 724 und eine Leistungssteuerschaltung 726 und eine Untergruppen-Auswahlschaltung 750 ein. In einer Ausführungsform können der On-Chip-Adressdecodierer 724 und/oder die Leistungssteuerschaltung 726 Teil von der Steuerung 744 sein und/oder davon gesteuert werden. Die On-Die-Steuerung 720 arbeitet zum Auswählen bestimmter einzelner Schichten für bestimmte Programmierverifizierungsebenen und mehrere Schichten für andere Programmierverifizierungsebenen.
  • Die Zustandsmaschine 722 stellt in einer Ausführungsform eine Steuerung von Speichervorgängen auf Chip-Ebene bereit. Der On-Chip-Adressdecodierer 724 stellt eine Adressschnittstelle bereit, um die Adresse, die von dem Host oder einer Speichersteuerung verwendet wird, in die Hardwareadresse umzuwandeln, die von den Decodiererschaltungen 740A, 740B, 742A, 742B verwendet wird. Die Leistungssteuerschaltung 726 steuert die Leistung und Spannungen, die den Wortleitungen und Bitleitungen während Speichervorgängen zugeführt werden. Gemäß einer Ausführungsform schließt die Leistungssteuerschaltung 726 eine oder mehrere Ladepumpen ein, die Spannungen, die größer als die Versorgungsspannung sind, erzeugen können. Die Zustandsmaschine kann verwendet werden, um die Bit-Scans zu zählen und das Ergebnis mit dem Schwellenwert zu vergleichen, der in der Zustandsmaschine gespeichert werden kann. Die Zustandsmaschine kann auch den Programmierverifizierungsvorgang auslösen, um den nächsten Speicherebenenverifizierungsvorgang zu überspringen, wenn der Bitscanzählwert den Schwellenwert überschreitet.
  • In einer Ausführungsform können eine oder eine beliebige Kombination von der On-Die-Steuerung 720, der Zustandsmaschine 722, der Leistungssteuerschaltung 726, dem On-Chip-Adressdecodierer 724, der Decodiererschaltung 742A, der Decodiererschaltung 742B, der Decodiererschaltung 740A, der Decodiererschaltung 740B, den Lese-/Schreibschaltungen 730A, den Lese-/Schreibschaltungen 730B und/oder der Steuerung 744 als eine oder mehrere Verwaltungsschaltungen oder allgemein als eine Steuerungsschaltlogik bezeichnet werden.
  • 8 zeigt eine schematische Ansicht des nichtflüchtigen Speichers 800 in einem ersten Zustand. Der Speicher ist der Einfachheit halber vereinfacht dargestellt. Der erste Zustand des Speichers 800 zeigt, dass mehr Programmdaten von den Abtastverstärker-Daten-Latches (SADL) 801-1, 801-2, 801-3, 801-4, die jeweils mit den Bitleitungen 807-1, 807-2, 807-3, 807-4 über einen Zugriffstransistor (z. B. einen Source-Gate-Drain-(SGD)-transistor) 803-1, 803-2, 803-3, 803-4 verbunden sind. Eine Bitauswahlleitung 805 ist mit dem Gate des Zugriffstransistors verbunden. Die Speicherzellen sind schematisch bei 816, 817, 818 und 819 dargestellt. Die Speicherzellen 816, 817 und 819 werden, z. B. mit mehreren Programmierimpulsen, denen Verifizierungssignale mit niedrigeren Spannungen als die Programmierimpulse folgen, programmiert. In dem beispielhaften Zustand des Speichers 800 ist die erste Schaltungskette, die mit SADL 801-1 verbunden ist, auf einen Programmierzustand eingestellt, bei dem die Bitleitung 807-1 auf dem Vss-Spannungspegel liegt. Die zweite Schaltungskette, die mit SADL 801-2 verbunden ist, wird auf einen Programmzustand eingestellt, bei dem die Bitleitung 807-2 auf dem Vss-Spannungspegel liegt. Die dritte Schaltungskette, die mit SADL 801-3 verbunden ist, wird auf einen Sperrzustand eingestellt, wobei die Bitleitung 807-3 auf VDDSA-Spannungspegel liegt. Die vierte Schaltungskette, die mit SADL 801-4 verbunden ist, wird auf einen Programmzustand eingestellt, bei dem die Bitleitung 807-4 auf dem Vss-Spannungspegel liegt. Die Bitleitungen 807-1, 807-2, 807-3, 807-4 sind nahe beieinander positioniert und weisen somit eine parasitäre Kapazität, hier der Kondensator 811 zwischen der Bitleitung 807-1 und der Bitleitung 807-2, der Kondensator 812 zwischen der Bitleitung 807-2 und der Bitleitung 807-3 und der Kondensator 813 zwischen der Bitleitung 807-3 und der Bitleitung 807-4 auf. Im ersten Zustand liegt keine Kapazität am Kondensator 811 vor, da beide Bitleitungen 807-1 und 807-2 auf demselben Signalpegel, hier Vss, liegen. Es liegt eine Kapazität an den Kondensatoren 812, 813 vor, da beide benachbarten Paare von Bitleitungen 807-2, 807-3 und Bitleitungen 807-3, 807-4 auf diesen Letungen unterschiedliche Spannungen aufweisen. Die Spannung VDDSA auf der Bitleitung 803-3 ist ein Sperrsignal. Vss ist ein Programmiersignal. Dementsprechend liegt eine Kapazitätsbelastung (parasitäre Kapazität zwischen benachbarten Bitleitungen) vor, wenn EQVDDSA an eine oder mehrere nicht benachbarte Bitleitungen angelegt wird. In jedem Programmierimpuls befinden sich die Programmier-Bitleitungen auf dem Vss-Pegel, und die Sperr-BLs befinden sich auf dem VDDSA-Pegel. Dies erfolgt während der ersten Programmierimpulse zum Programmieren von Speicherzellen, z. B. SLC, TLC oder anderen nichtflüchtigen Multi-Level-Speicherzellen. Dies ist darauf zurückzuführen, dass zu Beginn eines Programmiervorgangs mehr Speicherzellen programmiert werden, d. h. es gibt mehr Programmierdaten als Sperrdaten. Dies gilt insbesondere für frühere Impulse auf Programmiervorgänge von TLC oder Multi-Level-Zellen. Während des Betriebs schließt ein Signal EQVDDSA alle Bitleitungen kurz, z.B. die Leitungen 803-1, 803-2, 803-3, 803-4, und lädt dann die Bit-Zeilen langsam auf VDDSA-Pegel auf, um sie dann nach dem Programmierimpuls zu entladen. Das Signal EQVVDDSA kann von der SADL-Seite des Speichers 800 gesendet werden. Der Entzerrungsvorgang beinhaltet das Anlegen einer VDDSA-Spannung an alle Bitleitungen 807-1, 807-2, 807-3, 807-4 über einen gemeinsamen EQ2VDDSA-Transistor und über jeweilige BLX-Transistoren.
  • Dieser Vorgang und die Struktur des Speichers 800 führt zu einer stärkeren Kapazitätsbelastung, wenn mehr BLs am Vss-Pegel liegen. Der anfängliche Entzerrungspegel ist aufgrund mehrerer Bitleitungen bei Vss niedrig, was zu einer Sperrung der Zellstörung führen kann. Während des Betriebs ist Vss (Programmierspannung) kleiner als die Bitleitungsspannung, die kleiner als VDDSA (Sperrspannung) ist. VDDSA ist die höhere Sperrspannung aus dem SADL und kann die Daten-Latch-Spannung der Abtastverstärker sein, um die Programmierung zu sperren.
  • 9 zeigt eine schematische Ansicht des nichtflüchtigen Speichers 800 in einem zweiten Zustand, d. h. später im Programmierzyklus nach mindestens einem Programmierimpuls oder nach mehreren Programmierimpulsen. In einem Beispiel sind die Programmierimpulse mindestens halb fertig, d. h. die Programmierung ist etwa zur Hälfte abgeschlossen. Folglich gibt es mehr Sperrdatensignale VDDSA (Bitleitungen 807-1, 807-3, 807-4) als Programmiersignale Vss (Bitleitung 807-3). Der zweite Zustand des Speichers 800 schließt mehr Sperrdaten als Programmierdaten ein und befindet sich auf den späteren Programmierimpulsen des Programmiervorgangs. Die kapazitive Belastung ist kleiner, da die meisten Bitleitungen bereits auf dem VDDSA-Pegel liegen. Der anfängliche Entzerrungspegel ist aufgrund mehrerer Bitleitungen am VDDSA-Pegel hoch. Außerdem werden Speicherzellen 816, 818-und-819 daran gehindert, programmiert zu werden.
  • Während des Betriebs des Speichers 800 wird die Entzerrung der Bitleitungen abhängig von den Programmierdaten gesteuert, z. B. wenn mehr Programmierzustände (8) oder mehr Sperrzustände (9) vorliegen. Wenn jedoch die Bitleitungen zu früh entzerrt werden, kann es zu einer Sperrzellenstörung kommen. Wenn die Bitleitungen bis zur VDDSA geladen werden, kann es mehr Belastung durch die Kapazität zwischen den Bitleitungen geben. Hier ist EQVDDSA deaktiviert, um Icc (Stromversorgungsstrom) zu sparen und Lesefehler zu verhindern, die erfolgen könnten, wenn Restladungen in den Bitleitungen vor einem Lesevorgang nicht entladen werden.
  • 10 zeigt ein Verfahren 1000 zur Anpassung der Bitleitungsentladung während eines Single-Level-Zellenprogrammiervorgangs in einer nichtflüchtigen Speichervorrichtung. Wenn ein Programmiervorgang beginnt, werden die zu programmierenden Daten zufällig verteilt. Statistisch gesehen bestehen die Programmierdaten zu Beginn einer SLC-Programmierung zur Hälfte (z. B. 50 %) aus Nullen und zur Hälfte (50 %) aus Einsen. Die Steuerungsschaltlogik kann den Zustand (Aktivieren oder Deaktivieren) der EQVDDSA basierend auf der SLC-Programmierimpulszahl steuern. Beim ersten Programmierimpuls stimmen die Programmierdaten mit den Anfangsdaten überein, halbe Nullen und halbe Einsen. Die Aktivierung von EQVDDSA führt zu einem besseren Entladungsergebnis. Bei nachfolgenden Impulsen sind jedoch die meisten Speicherzellen bereits blockiert (Programmiersperre), da nur noch sehr wenige Nullzustände in den zu programmierenden Daten vorhanden sind. Nun wird EQVDDSA deaktiviert, um Icc (Leistung) zu speichern.
  • Im Falle der SLC-Teilseitenprogrammierung kann die EQVDDSA-Aktivierung oderdeaktivierung gesteuert werden. Die Speichersteuerung kann nur eine Teilseitenprogrammierung in Blöcken von 4K Daten oder 8K anfordern. Die Teilseitenprogrammierung mit 4K Daten und mit Zufallsmuster führt dazu, dass nur etwa ein Sechstel der Speicherzellen auf Null steht (12,5 % Zellen auf 0-Pegel). Hier sollte das Verfahren die Entzerrung deaktivieren. (EQVDDSA deaktiviert). Das Schreiben einer Teilseite mit 8K Daten mit einem Zufallsmuster enthält etwa ein Viertel (25 %) der Zellen bei Null. Hier soll das Verfahren die Entzerrung aktivieren (EQVDDSA ist aktiviert).
  • In Schritt 1001 beginnt ein Single-Level-Zellen-Programmiervorgang. Der Programmiervorgang kann eine Reihe von Programmierimpulsen einschließen, die Spannung mit jedem sukzessiven Impuls erhöhen. Die Verifizierungsvorgänge und Signale liegen zwischen den Programmierimpulsen, um die programmierten Daten zu lesen und zu verifizieren, dass die Speicherzelle auf den richtigen Spannungspegel programmiert ist. Wenn SLC auf dem korrekten Pegel liegt, z. B. über der Schwellenspannung, dann ändert sich die Bitleitung für die Speicherzelle von Programmierung (VSS oder Null) auf Sperrung (VDDSA oder Eins).
  • In Schritt 1003 bestimmt die Steuerung, ob die Programmierung für eine Vollseite oder eine Teilseite bestimmt ist. Wenn eine Vollseite verwendet wird, geht das Verfahren zu Schritt 1005 über. Bei einer Teilseite geht das Verfahren zu Schritt 1009 über.
  • In Schritt 1005 wird der erste Programmierimpuls mit der Entzerrung der Bitleitungen auf VDDSA angelegt, die nach der Programmierung auftritt, z. B. nach dem Programmierimpuls, z. B. während der Verifizierungsvorgänge.
  • In Schritt 1007 wird für zweite oder nachfolgende Programmierimpulse EQVDDSA deaktiviert.
  • In Schritt 1009 wird bestimmt, ob der zu schreibende Datenblock ein Viertel oder weniger relativ zu einer ganzen Seite beträgt. Wenn es sich um ein Viertel oder weniger als eine ganze Seite handelt, wird die Entzerrung von VDDSA (EQVDDSA) in Schritt 1011 deaktiviert. Bei mehr als einem Viertel einer Seite wird die Entzerrung von VDDSA aktiviert.
  • 11 zeigt ein Verfahren 1100 zur Anpassung der Bitleitungsentladung während eines Triple-Level-Zellenprogrammiervorgangs (TLC-Programmiervorgang) in einer nichtflüchtigen Speichervorrichtung. Bei einer TLC-Vollsequenzprogrammierung werden Zellen in einen von Er-, A-, B-, C-, D-, E-, F-, G-Zuständen programmiert. Er ist der Löschzustand, und A-G sind programmierte Speicherzustände bei steigenden Schwellenspannungen. Bei vollständig randomisierten Benutzerdaten weist jeder Zustand statistisch 12,5 % der Gesamtzellanzahl auf. Die Entscheidung, eQVDDSA zu aktivieren oder zu deaktivieren, kann auf TLC-Datenabschlusssignalen basieren. Für den ersten Programmierimpuls besteht die Bitleitungssperrung oder die Programmierung aus 87,5 % Nullen (Programmierung) und 12,5 % Einsen (Sperrung). EQVDDSA sollte deaktiviert werden, um eine frühe Entzerrung zu verhindern, was zu einer Störung und einem hohen Icc-Verbrauch führt. In einer beispielhaften Ausführungsform wird der Zustand der Speicherzellen nach Abschluss des Programmierimpulses für den C-Zustand (oder der Programmierschleife für den C-Zustand) wahrscheinlich zur Hälfte in den korrekten Zustand programmiert und etwa zur Hälfte blockiert sein. Zu diesem Zeitpunkt sind etwa die Hälfte der Speicherzellen Einsen und die Hälfte Nullen. Nun ergibt EQVDDSA ein besseres Entladungsergebnis und wird aktiviert. In einer beispielhaften Ausführungsform sind nach Abschluss des F-Programms etwa fünf Achtel (oder 87,5 %) als Einsen und ein Achtel (oder 12,5 %) als Nullen auf der Bitleitung programmiert. Hier kann EQVDDSA wieder deaktiviert werden, um ICC zu speichern, da eine Entzerrung nicht erforderlich ist. In einer beispielhaften Ausführungsform kann eine feinere Steuerung auch mit programmierschleifenbasierten Optionen erfolgen.
  • In Schritt 1101 startet eine Triple-Level-Zellenprogrammierung. Bei einer TLC-Vollsequenzprogrammierung werden Zellen auf Er-, A-, B-, C-, D-, E-, F-, G-Zustände programmiert, wobei die Wahrscheinlichkeit des Auftretens bei Zufallsdaten jeweils bei einem Achtel liegt.
  • In 1103 erzeugt die Steuerschaltlogik Steuersignale auf den Bitleitungen unter Verwendung des TLC-Datenzustands. Die Bitleitungssignale weisen Spannungspegel auf, die von der Anzahl von Impulsen abhängig sind, die für die Programmierung ausgeführt wurden.
  • In 1105 wird nach dem ersten, zweiten und dritten Programmierimpuls die Entzerrung der Bitleitungen deaktiviert, z. B. wird EQVDDSA deaktiviert.
  • In 1107 wird nach dem vierten Programmierimpuls (z. B. nach dem Programmieren des C-Zustands) die Entzerrung der Bitleitungsspannung aktiviert, z. B. wird EQVDDSA aktiviert.
  • In 1109 wird nach dem siebten Programmierimpuls (z. B. nach dem F-Programmierzustand) die Entzerrung der Bitleitungsspannung deaktiviert, z. B. wird EQVDDSA deaktiviert. Dadurch wird Strom gespart, z. B. Icc.
  • 12 zeigt ein Verfahren 1200 zur Anpassung der Bitleitungsentladung während eines Quad-Level-Zellenprogrammiervorgangs (QLC-Programmiervorgang) in einer nichtflüchtigen Speichervorrichtung. In einem Beispiel kann die QLC-Programmierung eine foggy/fine-Sequenzprogrammierung einschließen. Bei der QLC-foggy/fine-Sequenzprogrammierung werden die Zellen auf Er-, S1- bis S15-Zustände programmiert. Bei vollständig randomisierten Benutzerdaten weist jeder Zustand 6,25 % der Gesamtzellanzahl auf. In diesem beispielhaften Verfahren 1200 kann die Aktivierung oder Deaktivierung von EQVDDSA auf den QLC-Datenabschlusssignalen basieren. Beginnend mit dem ersten Programmierimpuls bestehen die Bitleitungswerte aus 93,75 % Nullen (Programmierung) und 6,25 % Einsen (Sperrung) für einen Zufallsdatensatz. EQVDDSA sollte deaktiviert werden, um eine frühzeitige Entzerrung zu verhindern, die eine Störung und hohen Icc verursacht hat. Nach Abschluss des Programmierimpulses S7 sind etwa 50 % der Zellen blockiert, und die Hälfte sind Einsen (Sperrung) und die Hälfte sind Nullen (Programmierung), die Entzerrung des Bitleitungsignals an VDDSA (d. h. EQVDDSA-Betrieb mit aktivierter EQVDDSA) wird ein besseres Entladungsergebnis bereitgestellt. Nach Abschluss von S13 sind auf den Bitleitungen etwa sieben Achtel gesperrt (z. B. Einsen) und ein Achtel ist programmiert (z. B. Nullen). Hier sollte EQVDDSA wieder deaktiviert werden, um ICC zu speichern, da eine Entzerrung nicht erforderlich ist. Eine feinere Steuerung kann auch mit programmierschleifenbasierten Vorgängen erfolgen.
  • In Schritt 1201 wird ein QLC-Programmvorgang gestartet.
  • In Schritt 1203 wird die Entzerrung der Spannung auf den Bitleitungen zwischen den Aktivierungs- und Deaktivierungszuständen basierend auf dem Abschluss des Programmierimpulses gesteuert.
  • In Schritt 1205 wird die Entzerrung auf den Bitleitungen (z. B. EQVDDSA) nach dem ersten Programmierimpuls (z. B. für S0) bis zum Ende des sechsten Programmierimpulses (z. B. S5) deaktiviert.
  • In Schritt 1207 wird die Entzerrung auf den Bitleitungen (z. B. EQVDDSA) nach dem siebten Programmierimpuls aktiviert.
  • In Schritt 1209 wird die Entzerrung der Bitleitungen (z. B. EQVDDSA) nach dem dreizehnten Programmierimpuls deaktiviert.
  • 13 zeigt ein Verfahren 1300 zur Anpassung der Bitleitungsentladung während eines Quad-Level-Zellenprogrammiervorgangs (QLC-Programmiervorgang) unter Verwendung einer Multi-Level-Zellen-/Feinprogrammierung in einer nichtflüchtigen Speichervorrichtung (1301). In einem QLC-MLC-/Feinsequenzprogrammiervorgang sollte eine MLC-Stufe separat betrachtet werden, wobei die Speicherzellen im Er-Zustand belassen werden oder auf den A-, B- und C-Zustand programmiert werden. Bei vollständig randomisierten Benutzerdaten weist jeder Zustand ein Viertel der Gesamtzellanzahl auf. Die Aktivierung/Deaktivierung der Bitleitungsentzerrung (z. B. EQVDDSA) basiert auf den MLC-Datenabschlusssignalen.
  • In Schritt 1305 bestehen nach dem ersten Programmierimpuls drei Viertel der Speicherzellen aus Nullen (Bitleitungsprogrammierung) und ein Viertel besteht aus Einsen (Bitleitungssperrung). EQVDDSA sollte deaktiviert werden, um eine frühe Entzerrung zu verhindern, die zu einer Störung und einer hohen Icc-Verwendung führt.
  • In Schritt 1307, nach Abschluss des A-Zustands, bei dem die Hälfte der Zellen gesperrt ist (Einsen) und die andere Hälfte programmiert ist (Nullen), wird die Entzerrung der Bitleitungen aktiviert (EQVDDSA aktivieren), was zu einem besseren Entladungsergebnis führen sollte.
  • In Schritt 1309, nach Abschluss des Programmierimpulses im C-Zustand, werden drei Viertel der Speicherzellen programmiert (Bitleitungssperrung) und ein Viertel wird nicht programmiert (Bitleitungsprogrammierung). Nun sollte die Entzerrung der Bitleitungen (z. B. EQVDDSA) wieder deaktiviert werden, um Strom, z. B. Icc, zu sparen, da eine Entzerrung nicht erforderlich ist. Eine feinere Steuerung kann auch mit programmierschleifenbasierten Optionen erfolgen.
  • 14 zeigt ein Verfahren 1400 zum Steuern von Signalen auf den Bitleitungen während eines Programmiervorgangs. In Schritt 1401 wird die Programmierimpulszählung auf Null gesetzt.
  • In Schritt 1403 wird ein Programmierimpulsvorgang mit mindestens einer Bitleitung auf einem Programmierpegel durchgeführt, andere Bitleitungen können als Sperrpegel (Vss) oder Programmierpegel (VDDSA) vorliegen.
  • In Schritt 1405 wird die Programmierimpulszählung erhöht.
  • In Schritt 1407 wird bestimmt, ob die Programmierimpulszählung bei oder über einem ersten Schwellenwert liegt (z. B. der Wechsel von Deaktivieren zu Aktivieren, wie vorstehend erläutert). Wenn sie nicht über einem Schwellenwert liegt, geht das Verfahren zu Schritt 1409 über. Wenn die Impulszählung den ersten Schwellenwert überschreitet, geht das Verfahren zu Schritt 1408 über, woraufhin überprüft wird, ob die Programmierimpulszählung einen zweiten Schwellenwert überschreitet. Wenn nein, dann wird in Schritt 1410 die Entzerrung der Bitleitungen aktiviert und das Verfahren geht zum nächsten Programmierimpuls in 1403 über.
  • In Schritt 1409 wird die Entzerrung der Bitleitungen deaktiviert, und das Verfahren kehrt zu Schritt 1403 zurück.
  • In Schritt 1411 wird die Entzerrung an den Bitleitungen deaktiviert oder die Entladung der Bitleitungen wird gesperrt. Nach dem Wechsel des Betriebs der Bitleitungsentzerrung in Schritt 1411 kann das Verfahren zu Schritt 1403 zurückkehren, es sei denn, die Programmierimpulszählung ist auf ihrem höchsten Wert, z. B. wenn alle Programmierstufen erfolgt sind. Wenn die Programmierzählung das Maximum erreicht hat, endet das Verfahren 1400.
  • 15 zeigt ein vereinfachtes Zeitdiagramm 1500 für einige Steuersignale, insbesondere die Bitleitungen (BL sei) für die Programmierung (hierin als Nullen oder Programmierung bezeichnet) und die Bitleitungen, die nicht ausgewählt oder gesperrt sind. In einer beispielhaften Ausführungsform kann die in Diagramm 1500 dargestellte Vinhibit die gleiche sein wie VDDSA, wie sie hier verwendet wird. Die erste Gruppe von Signalen kann verwendet und wiederholt werden, bis eine erste Programmierimpulsschwelle erreicht ist. Danach wird EQVDDSA aktiviert und die Bitleitungen, die gesperrt sind, folgen nicht dem gleichen Muster wie diejenigen mit deaktivierter EQVDDSA. Ein vollständiges Zeitdiagramm findet sich in der US-Patentveröffentlichung Nr. 2020/0321055 , die hiermit durch Bezugnahme in vollem Umfang aufgenommen wird. Sollte jedoch ein Teil der US-Patentveröffentlichung Nr. 2020/0321055 im Widerspruch zur vorliegenden Offenbarung stehen, so gilt die vorliegende Offenbarung.
  • 16 zeigt sieben Lesereferenzspannungen Vr1, Vr2, Vr3, Vr4, Vr5, Vr6 und Vr7 zum Lesen von Daten aus TLC-Speicherzellen. Durch Testen (z. B. Ausführen von Lesevorgängen), ob die Schwellenspannung einer gegebenen Speicherzelle über oder unter den sieben Lesereferenzspannungen liegt, kann das System bestimmen, in welchem Datenzustand (d. h. S0, S1, S2, S3, ...) sich eine Speicherzelle befindet.
  • 16 zeigt außerdem sieben Prüfreferenzspannungen, Vv1, Vv2, Vv3, Vv4, Vv5, Vv6 und Vv7. Wenn Speicherzellen auf Datenzustand S1 programmiert werden, prüft das System, ob diese Speicherzellen eine Schwellenspannung aufweisen, die größer oder gleich Vv1 ist. Wenn Speicherzellen auf den Datenzustand S2 programmiert werden, prüft das System, ob diese Speicherzellen eine Schwellenspannung aufweisen, die größer oder gleich Vv2 ist. Wenn Speicherzellen auf den Datenzustand S3 programmiert werden, bestimmt das System, ob Speicherzellen ihre Schwellenspannung aufweisen, die größer oder gleich Vv3 ist. Wenn Speicherzellen auf Datenzustand S4 programmiert werden, prüft das System, ob diese Speicherzellen eine Schwellenspannung aufweisen, die größer oder gleich Vv4 ist. Wenn Speicherzellen auf Datenzustand S5 programmiert werden, prüft das System, ob diese Speicherzellen eine Schwellenspannung aufweisen, die größer oder gleich Vv5 ist. Wenn Speicherzellen auf Datenzustand S6 programmiert werden, prüft das System, ob diese Speicherzellen eine Schwellenspannung aufweisen, die größer oder gleich Vv6 ist. Wenn Speicherzellen auf Datenzustand S7 programmiert werden, prüft das System, ob diese Speicherzellen eine Schwellenspannung aufweisen, die größer oder gleich Vv7 ist.
  • In einer Ausführungsform, die als Vollsequenzprogrammierung bekannt ist, können Speicherzellen aus dem gelöschten Datenzustand S0 direkt auf einen der programmierten Datenzustände S1 bis S7 programmiert werden. Zum Beispiel kann eine Population von Speicherzellen, die programmiert werden sollen, zuerst gelöscht werden, so dass sich alle Speicherzellen in der Population im gelöschten Datenzustand S0 befinden. Dann wird ein Programmierprozess verwendet, um Speicherzellen direkt in Datenzustände S1, S2, S3, S4, S5, S6 und/oder S7 zu programmieren. Während zum Beispiel einige Speicherzellen von dem Datenzustand S0 auf den Datenzustand S1 programmiert werden, werden andere Speicherzellen vom Datenzustand S0 auf den Datenzustand S2 und/oder vom Datenzustand S0 auf den Datenzustand S3 und so weiter programmiert. Die Pfeile von 16 stellen die Vollsequenzprogrammierung dar. Die hierin beschriebene Technologie kann auch mit anderen Programmierarten zusätzlich zur Vollsequenzprogrammierung (einschließlich, aber nicht beschränkt auf Mehrstufen-/Phasenprogrammierung) verwendet werden. In einigen Ausführungsformen können sich die Datenzustände S1 bis S7 überlappen, wobei sich die Steuerung 122 auf Fehlerkorrekturcodierung (ECC) stützt, um die korrekten Daten, die gespeichert werden, zu identifizieren.
  • 17 ist eine Tabelle, die ein Beispiel einer Zuordnung von Datenwerten zu Datenzuständen beschreibt. In der Tabelle von 17, S0=111, S1=110, S2=200, S3=000, S4=010, S5=011, S6=001 und S7= 101. Andere Datencodierungen können ebenfalls verwendet werden. Keine spezifische Datencodierung ist von der hier offenbarten Technologie erforderlich.
  • In einer Ausführungsform werden, wenn ein Block einem Löschvorgang unterzogen wird, alle Speicherzellen in den Datenzustand S0, den gelöschten Zustand, gebracht. Wie weiter nachstehend erläutert, werden, wenn die Speicherstruktur das Löschen von Unterblöcken ermöglicht, ausgewählte Unterblöcke eines physischen Blocks gelöscht, während nicht ausgewählte Unterblöcke nicht gelöscht werden. In der Ausführungsform von 17 sind alle Bits, die in einer Speicherzelle gespeichert sind, 1, wenn die Speicherzellen gelöscht werden (z. B. im Datenzustand S0).
  • 18 ist ein Flussdiagramm, das eine Ausführungsform eines Prozesses zum Programmieren beschreibt, der von der Steuerungsschaltlogik durchgeführt wird. In einigen Ausführungsformen kann der Host die Funktionen der Steuerungsschaltlogik durchführen, anstatt über eine dedizierte Steuerung zu verfügen. In Schritt 1802 sendet die Steuerungsschaltlogik Anweisungen an einen oder mehrere Speicherrohchips, um Daten zu programmieren. In Schritt 1804 sendet die Steuerungsschaltlogik eine oder mehrere Adressen an einen oder mehrere Speicherrohchips. Die eine oder die mehreren Adressen zeigen an, wo die Daten zu programmieren sind. In Schritt 1806 sendet die Steuerungsschaltlogik die zu programmierenden Daten an einen oder mehrere Speicherrohchips. In Schritt 1808 empfängt die Steuerungsschaltlogik ein Ergebnis der Programmierung von einem oder mehreren Speicherrohchips. Beispielhafte Ergebnisse schließen ein, dass die Daten erfolgreich programmiert wurden, eine Anzeige, dass der Programmiervorgang fehlgeschlagen ist, und eine Anzeige, dass die Daten programmiert wurden, jedoch an einer anderen Stelle, oder ein anderes Ergebnis. In Schritt 1810 aktualisiert die Steuerungsschaltlogik als Reaktion auf das in Schritt 1808 empfangene Ergebnis die Systeminformationen, die sie beibehält. In einer Ausführungsform unterhält das System Tabellen von Daten, die Statusinformationen für jeden Block anzeigen. Diese Informationen können eine Abbildung logischer Adressen auf physische Adressen, welche Blöcke/Wortleitungen offen/geschlossen (oder teilweise geöffnet/geschlossen) sind, welche Blöcke/Wortleitungen schlecht sind, usw. beinhalten.
  • In einigen Ausführungsformen würde die Steuerungsschaltlogik vor dem Schritt 1802 Host-Daten und eine Anweisung zum Programmieren vom Host empfangen, und die Steuerung würde einen Fehlerkorrekturcodemaschine laufen lassen, um Codewörter aus den Host-Daten zu erzeugen, wie es im Stand der Technik bekannt und nachstehend ausführlicher beschrieben ist. Diese Codewörter sind die in Schritt 1806 übertragenen Daten. Die Steuerungsschaltlogik kann auch die Daten verschlüsseln, um einen Abnutzungsausgleich in Bezug auf die Speicherzellen zu erreichen.
  • 19 ist ein Flussdiagramm, das eine Ausführungsform eines Prozesses zum Programmieren beschreibt. Der Prozess von 19 wird von dem Speicherrohchip als Reaktion auf die Schritte von 18 (d. h. als Reaktion auf die Anweisungen, Daten und Adressen aus der Steuerungsschaltlogik) durchgeführt. In einer beispielhaften Ausführungsform wird der Prozess von 19 auf der Speicherrohchip-Schaltlogik unter Verwendung der vorstehend beschriebenen einen oder mehreren Steuerschaltungen in Richtung der Zustandsmaschine durchgeführt. Der Prozess von 19 kann auch verwendet werden, um die vorstehend erläuterte Vollsequenzprogrammierung zu implementieren, einschließlich oder Aktivierung der Entzerrung der Programmierspannung (Vddsa) vom Abtastverstärker-Datenlatch auf den Bitleitungen nach mindestens dem ersten Programmierimpuls oder der ersten Programmierschleife für SLC-Programmierung und Deaktivierung der Entzerrung der Programmierspannung (Vddsa) nach dem ersten Programmierimpuls oder der Programmierschleife. Der Prozess von 19 kann auch bei der hier beschriebenen Multi-Level-Zellenprogrammierung verwendet werden und schließt das Aktivieren der Entzerrung der Programmierspannung (Vddsa) ein, bis mindestens die Hälfte oder mehr als die Hälfte der Bitleitungen in die Sperrstufe eintreten, und dann das Deaktivieren der Entzerrung der Programmierspannung (Vddsa) auf den Bitleitungen. Zusätzlich kann der Prozess von 19 auch verwendet werden, um jede Phase eines mehrphasigen Programmierprozesses zu implementieren.
  • Üblicherweise wird die Programmierspannung, die an die Steuergates (über eine ausgewählte Wortleitung) während eines Programmiervorgangs angelegt wird, als eine Reihe von Programmierimpulsen angelegt. Zwischen Programmierimpulsen befindet sich ein Satz von Verifizierimpulsen, um eine Verifizierung durchzuführen. In vielen Implementierungen wird die Größe der Programmierimpulse mit jedem sukzessiven Impuls um eine vorbestimmte Schrittgröße erhöht.
  • In Schritt 1870 von 19 wird die Programmierspannung (Vpgm) auf die Startgröße (z. B. etwa 12,0-16,0 V oder einem anderen geeigneten Pegel) initialisiert und ein Programmzähler (PC), der durch die Zustandsmaschine geführt wird, wird bei 1 initialisiert.
  • In Schritt 1872 wird ein Programmierimpuls des Programmiersignals Vpgm an die ausgewählte Wortleitung (die zur Programmierung ausgewählte Wortleitung) angelegt. In einer Ausführungsform sind alle Speicherzellen der Gruppe von Speicherzellen, die gleichzeitig programmiert werden, mit derselben Wortleitung (der ausgewählten Wortleitung) verbunden. In einer Ausführungsform empfangen die nicht ausgewählten Wortleitungen eine oder mehrere Verstärkungsspannungen (z. B. etwa 7-11 Volt), um Verstärkungsschemata durchzuführen. Sollte eine Speicherzelle programmiert werden, so wird die entsprechende Bitleitung auf Masse gelegt. Wenn andererseits die Speicherzelle auf ihrer gegenwärtigen Schwellenspannung bleiben sollte, dann wird die entsprechende Bitleitung mit Vdd verbunden, um eine Programmierung zu verhindern. In Schritt 1872 wird der Programmierimpuls gleichzeitig an alle Speicherzellen angelegt, die mit der ausgewählten Wortleitung verbunden sind, sodass alle Speicherzellen, die mit der ausgewählten Wortleitung verbunden sind, gleichzeitig programmiert werden. Das heißt, sie werden zur gleichen Zeit oder während überlappenden Zeiten (die beide als gleichzeitig betrachtet werden) programmiert. Auf diese Weise ändern alle Speicherzellen, die mit der ausgewählten Wortleitung verbunden sind, gleichzeitig ihre Schwellenspannung, sofern sie nicht aus der Programmierung ausgeschlossen wurden.
  • In Schritt 1874 werden die entsprechenden Speicherzellen unter Verwendung des geeigneten Satzes von Prüfreferenzspannungen verifiziert, um einen oder mehrere Verifizierungsvorgänge durchzuführen. In einer Ausführungsform wird der Verifizierungsprozess durch Anwenden der Prüfung durchgeführt, ob die Schwellenspannungen der zur Programmierung ausgewählten Speicherzellen die geeignete Prüfreferenzspannung erreicht haben.
  • In Schritt 1876 wird bestimmt, ob alle Speicherzellen ihre Zielschwellenspannungen erreicht haben (bestehen). Falls dies der Fall ist, ist der Programmierprozess vollständig und erfolgreich, weil alle ausgewählten Speicherzellen auf ihre Zielzustände programmiert und verifiziert wurden. In Schritt 1878 wird ein Status von „BESTANDEN“ gemeldet. Falls in 1876 bestimmt wird, dass nicht alle der Speicherzellen ihre Zielschwellenspannungen erreicht haben (fehlgeschlagen), fährt der Programmierprozess mit Schritt 1880 fort.
  • In Schritt 1880 zählt das System die Anzahl von Speicherzellen, die ihre jeweilige Zielschwellenspannungsverteilung noch nicht erreicht haben. Das heißt, das System zählt die Anzahl von Speicherzellen, die den Verifizierungsprozess bisher nicht bestanden haben. Dieses Zählen kann von der Zustandsmaschine, der Steuerung oder einer anderen Logik ausgeführt werden. In einer Implementierung speichert jeder der Leseblöcke den Status (bestanden/durchgefallen) ihrer jeweiligen Zellen. In einer Ausführungsform gibt es einen Gesamtzählwert, der die Gesamtzahl der gegenwärtig programmierten Speicherzellen wiedergibt, die den letzten Verifizierungsschritt nicht bestanden haben. In einer anderen Ausführungsform werden separate Zählwerte für jeden Datenzustand ermittelt.
  • In Schritt 1882 wird bestimmt, ob der Zählwert von Schritt 1880 kleiner oder gleich einer vorgegebenen Grenze ist. In einer Ausführungsform ist die vorbestimmte Grenze die Anzahl von Bits, die durch Fehlerkorrekturcodes (ECC) während eines Leseprozesses für die Seite von Speicherzellen korrigiert werden können. Wenn die Anzahl der fehlgeschlagenen Speicherzellen kleiner oder gleich der vorbestimmten Grenze ist, dann kann der Programmierprozess anhalten und in Schritt 1878 wird der Status „BESTANDEN“ gemeldet. In dieser Situation können ausreichend Speicherzellen korrekt programmiert werden, sodass die wenigen verbleibenden Speicherzellen, die nicht vollständig programmiert worden sind, unter Verwendung von ECC während des Lesevorgangs korrigiert werden können. In einigen Ausführungsformen zählt Schritt 1880 die Anzahl fehlgeschlagener Zellen für jeden Sektor, jeden Zieldatenzustand oder eine andere Einheit, und diese Zählwerte werden einzeln oder kollektiv mit einem Schwellenwert in Schritt 1882 verglichen.
  • In einer anderen Ausführungsform kann die vorbestimmte Grenze kleiner als die Anzahl von Bits sein, die durch ECC während eines Leseprozesses korrigiert werden können, um zukünftige Fehler einzuplanen. Wenn weniger als alle Speicherzellen für eine Seite programmiert werden oder ein Zählwert für nur einen Datenzustand (oder weniger als alle Zustände) verglichen wird, kann die vorbestimmte Grenze ein Anteil (pro rata oder nicht pro rata) der Anzahl von Bits sein, die durch ECC während eines Leseprozesses für die Seite von Speicherzellen korrigiert werden können. In einigen Ausführungsformen ist die Grenze nicht vorbestimmt. Stattdessen ändert sie sich basierend auf der Anzahl der bereits gezählten Fehler für die Seite, der Anzahl der durchgeführten Programmier-/Löschzyklen oder anderer Kriterien.
  • Wenn die Anzahl fehlgeschlagener Speicherzellen nicht kleiner als die vorbestimmte Grenze ist, dann fährt der Programmierprozess mit Schritt 1884 fort und der Programmzähler PC wird gegen den Programmgrenzwert (PL) überprüft. Beispiele für Programmgrenzwerte schließen 12, 20 und 30 ein; jedoch können andere Werte verwendet werden. Wenn der Programmzähler PC nicht kleiner als der Programmgrenzwert PL ist, dann wird der Programmprozess als durchgefallen betrachtet und der Status „FEHLGESCHLAGEN“ wird in Schritt 1888 gemeldet. Dies ist ein Beispiel für einen Programmierfehler. Wenn der Programmzähler PC kleiner als der Programmgrenzwert PL ist, dann fährt der Prozess mit Schritt 1886 fort, während der Programmzähler PC um 1 erhöht wird und die Programmierspannung Vpgm auf die nächste Größe erhöht wird. Zum Beispiel hat der nächste Impuls eine Größe, die um eine Schrittgröße (z. B. eine Schrittgröße von 0,1 bis 0,5 Volt) größer als der vorherige Impuls ist. Nach Schritt 1886 kehrt der Prozess zu Schritt 1872 zurück und ein weiterer Programmierimpuls wird an der ausgewählten Wortleitung angelegt, sodass eine weitere Iteration (Schritte 1872-1886) des Programmierprozesses von 19 durchgeführt wird.
  • Im Allgemeinen wird die ausgewählte Wortleitung während der Verifizierungsvorgänge und Lesevorgänge mit einer Spannung (ein Beispiel eines Referenzsignals) verbunden, deren Pegel für jeden Lesevorgang (siehe z. B. Lesereferenzspannungen Vr1, Vr2, Vr3, Vr4, Vr5, Vr6 und Vr7 von 16) oder Verifizierungsvorgang (siehe z. B. Prüfreferenzspannungen Vv1, Vv2, Vv3, Vv4, Vv5, Vv6 und Vv7 von 16) spezifiziert ist, um zu bestimmen, ob eine Schwellenspannung der betreffenden Speicherzelle einen derartigen Pegel erreicht hat. Nach Anlegen der Wortleitungsspannung wird der Leitungsstrom der Speicherzelle gemessen, um zu bestimmen, ob die Speicherzelle in Reaktion auf die an die Wortleitung angelegte Spannung eingeschaltet ist (Strom leitet). Wenn der Leitungsstrom gemäß Messungen größer als ein bestimmter Wert ist, dann wird angenommen, dass die Speicherzelle eingeschaltet ist und die an die Wortleitung angelegte Spannung größer als die Schwellenspannung der Speicherzelle ist. Falls der Leitungsstrom gemäß Messungen nicht größer als der bestimmte Wert ist, dann wird angenommen, dass die Speicherzelle nicht eingeschaltet ist und die an die Wortleitung angelegte Spannung nicht größer als die Schwellenspannung der Speicherzelle ist. Während eines Lese- oder Verifizierungsprozesses werden die nicht ausgewählten Speicherzellen mit einer oder mehreren Lesedurchgangsspannungen an ihren Steuergates versorgt, so dass diese Speicherzellen als Durchgangs-Gate fungieren (z. B. Strom leiten ungeachtet dessen, ob sie programmiert oder gelöscht sind).
  • Es gibt viele Wege, um den Leitungsstrom einer Speicherzelle während eines Lese- oder Verifizierungsvorgangs zu messen. In einem Beispiel wird der Leitungsstrom einer Speicherzelle durch die Rate gemessen, mit der sie einen dedizierten Kondensator in dem Leseverstärker entlädt oder lädt. In einem anderen Beispiel ermöglicht der Leitungsstrom der ausgewählten Speicherzelle der NAND-Kette, welche die Speicherzelle einschließt (bzw. ermöglicht dieser nicht), eine entsprechende Bitleitung zu entladen. Die Spannung auf der Bitleitung wird nach einer gewissen Zeit gemessen, um zu sehen, ob sie entladen wurde. Es ist zu beachten, dass die hierin beschriebene Technologie mit verschiedenen Verfahren verwendet werden kann, die nach dem Stand der Technik zum Verifizieren/Lesen bekannt sind. Andere Lese- und Verifizierungstechniken, die nach dem Stand der Technik bekannt sind, können ebenfalls verwendet werden.
  • In einigen Ausführungsformen empfängt die Steuerung Steuerungsschaltlogik eine Anforderung von dem Host (oder einem Client, Benutzer usw.), um Host-Daten (Daten, die von dem Host empfangen werden) in das Speichersystem zu programmieren. In einigen Ausführungsformen ordnet die Steuerungsschaltlogik die zu programmierenden Host-Daten in Dateneinheiten an. Zum Beispiel kann die Steuerungsschaltlogik die Host-Daten in Seiten, Wortleitungs-Einheiten, Blöcke, Jumbo-Blöcke oder anderen Einheiten anordnen. Für die Zwecke dieses Dokuments ist ein Block eine physische Gruppierung von Speicherzellen. In einer Ausführungsform ist ein Block eine Einheit zum Löschen. In anderen Beispielen muss ein Block jedoch keine Löscheinheit sein. In einem Beispiel weist ein Block einen Satz von Speicherzellen auf, die durch ununterbrochene Wortleitungen verbunden sind, wie einen Satz von NAND-Ketten, die mit einem gemeinsamen Satz von Wortleitungen verbunden sind. Andere physische Anordnungen können ebenfalls verwendet werden.
  • Schritt 1872 von 19 schließt das Anlegen eines Programmierspannungsimpulses an die ausgewählte Wortleitung ein. Schritt 1874 von 19 schließt eine Verifizierung ein, die in einigen Ausführungsformen das Anlegen der Prüfreferenzspannungen an die ausgewählte Wortleitung aufweist. Da die Schritte 1872 und 1874 Teil einer iterativen Schleife sind, wird die Programmierspannung als eine Reihe von Spannungsimpulsen angelegt, deren Größe schrittweise ansteigt. Zwischen Spannungsimpulsen werden Prüfreferenzspannungen angelegt. Dies ist in 20 dargestellt, die Programmierspannungsimpulse 1892, 1894 und 1896 zeigt, die während drei aufeinanderfolgenden Iterationen von Schritt 1872 angelegt werden. Zwischen den Programmierspannungsimpulsen 1892, 1894 und 1896 testet das System, z. B. die Steuerungsschaltlogik, die Speicherzellen, um durch Anlegen der Prüfreferenzspannungen als Prüfimpulse zu bestimmen, ob Schwellenspannungen der Speicherzellen größer als die jeweiligen Prüfreferenzspannungen sind.
  • Beim Programmieren der Speicherzellen, wie es hier beschrieben wird, wird vor dem Anlegen eines Programmierimpulses in Schritt 1872 von 19, wenn eine Speicherzelle programmiert werden soll, die entsprechende Bitleitung auf Masse gelegt. Wenn andererseits die Speicherzelle auf ihrer gegenwärtigen Schwellenspannung bleiben sollte, dann wird die entsprechende Bitleitung mit einem Programm-Sperrpegel wie Vdd verbunden. In vielen Ausführungsformen werden die Wortleitungen eines gelöschten Blocks auf dem Source-Ende mit Wortleitung, z. B. Wortleitung WL0, programmiert. Da die anderen Speicherzellen der Spalten zwischen der ausgewählten Wortleitung und der Bitleitung gelöscht werden, ermöglicht dies, dass der Pegel auf der Bitleitung gleichmäßig auf die Speicherzellen der ausgewählten Wortleitung angelegt wird, während diese Vorladung der Speicherzellen blockiert werden könnte, wenn eine der dazwischen liegenden Speicherzellen programmiert wäre. Die Wortleitungen des Blocks werden dann nacheinander in einer Reihenfolge geschrieben, die von der Source-Seite unten zu den Bitleitungen am Drain-Ende der NAND-Ketten verläuft.
  • Module können auch mindestens teilweise in Software zur Ausführung durch verschiedene Arten von Prozessoren implementiert sein. Ein identifiziertes Modul ausführbaren Codes kann zum Beispiel einen oder mehrere physische oder logische Blöcke von Computeranweisungen aufweisen, die zum Beispiel als ein Objekt, eine Prozedur oder eine Funktion organisiert sein können. Nichtsdestotrotz müssen die ausführbaren Programme eines identifizierten Moduls nicht physisch zusammen angeordnet sein, sondern können unterschiedliche Anweisungen aufweisen, die an verschiedenen Orten gespeichert sind, die, wenn sie logisch miteinander verbunden sind, das Modul aufweisen und den angegebenen Zweck für das Modul erfüllen.
  • Infolgedessen kann ein Modul ausführbaren Codes eine einzelne Anweisung oder viele Anweisungen einschließen und kann sogar über mehrere unterschiedliche Codesegmente, in verschiedenen Programmen, über mehrere Speichervorrichtungen oder dergleichen verteilt sein. Wo ein Modul oder Abschnitte eines Moduls in Software implementiert sind, können die Softwareabschnitte auf einem oder mehreren computerlesbaren und/oder ausführbaren Speichermedien gespeichert sein. Jede Kombination von einem oder mehreren computerlesbaren Speichermedien kann verwendet werden. Ein computerlesbares Speichermedium kann zum Beispiel, ohne darauf beschränkt zu sein, ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine Einrichtung oder eine Vorrichtung oder eine beliebige geeignete Kombination der vorstehenden sein, würde aber keine sich ausbreitenden Signale einschließen. Im Kontext dieses Dokuments kann ein computerlesbares und/oder ausführbares Speichermedium ein beliebiges greifbares und/oder nicht-transitorisches Medium sein, das ein Programm zur Verwendung durch ein System, eine Einrichtung, einen Prozessor oder eine Vorrichtung zur Befehlsausführung oder in Verbindung mit einer/einem solchen enthalten oder speichern kann.
  • Computerprogrammcode zur Durchführung von Operationen für Gesichtspunkte der vorliegenden Offenlegung kann in einer beliebigen Kombination von einer oder mehreren Programmiersprachen geschrieben werden, einschließlich einer objektorientierten Programmiersprache wie Python, Java, Smalltalk, C++, C#, Objektiv C oder dergleichen, herkömmlicher prozeduraler Programmiersprachen wie die Programmiersprache „C“, Skript-Programmiersprachen und/oder anderer ähnlicher Programmiersprachen. Der Programmcode kann teilweise oder vollständig auf einem oder mehreren Computern eines Benutzers und/oder auf einem entfernten Computer oder Server über ein Datennetz oder dergleichen ausgeführt werden. Eine Komponente, wie sie hierin verwendet wird, weist eine konkrete, physische, nichttransitorische Vorrichtung auf. Zum Beispiel kann eine Komponente als eine Hardware-Logikschaltung implementiert sein, die kundenspezifische VLSI-Schaltungen, Gate-Arrays oder andere integrierte Schaltungen aufweist; handelsübliche Halbleiter, wie Logikchips, Transistoren oder andere diskrete Vorrichtungen; und/oder andere mechanische oder elektrische Vorrichtungen einschließen. Eine Komponente kann auch in programmierbaren Hardwarevorrichtungen wie feldprogrammierbaren Gate-Arrays, einer programmierbaren Array-Logik, programmierbaren Logikvorrichtungen oder dergleichen implementiert sein. Eine Komponente kann eine oder mehrere siliziumbasierte integrierte Schaltungsvorrichtungen (z. B. Chips, Rohchips, Rohchip-Ebenen, Pakete) oder andere diskrete elektrische Vorrichtungen in elektrischer Verbindung mit einer oder mehreren anderen Komponenten über elektrische Leitungen einer Schaltungsplatine (PCB) oder dergleichen aufweisen. Jedes der hierin beschriebenen Module kann in bestimmten Ausführungsformen alternativ durch eine Komponente ausgeführt oder implementiert sein.
  • Eine Schaltung oder Schaltlogik, wie hierin verwendet, weist einen Satz von einer oder mehreren elektrischen und/oder elektronischen Komponenten auf, die einen oder mehrere Wege für elektrischen Strom bereitstellen. In bestimmten Ausführungsformen kann eine Schaltung einen Rückführweg für elektrischen Strom einschließen, so dass die Schaltung eine geschlossene Schleife ist. In einer anderen Ausführungsform kann jedoch ein Satz von Komponenten, der keinen Rückführweg für elektrischen Strom einschließt, als eine Schaltung (z. B. eine offene Schleife) bezeichnet werden. Zum Beispiel kann eine integrierte Schaltung unabhängig davon als eine Schaltung bezeichnet werden, ob die integrierte Schaltung an Masse gekoppelt ist (als Rückführweg für elektrischen Strom) oder nicht. In verschiedenen Ausführungsformen kann eine Schaltung einen Abschnitt einer integrierten Schaltung, eine integrierte Schaltung, einen Satz von integrierten Schaltungen, einen Satz von nicht integrierten elektrischen und/oder elektrischen Komponenten mit oder ohne Vorrichtungen mit integrierter Schaltung oder dergleichen einschließen. In einer Ausführungsform kann eine Schaltung individuelle VLSI-Schaltungen, Gate-Arrays, Logikschaltungen oder andere integrierte Schaltungen; handelsübliche Halbleiter, wie Logikchips, Transistoren oder andere diskrete Vorrichtungen; und/oder andere mechanische oder elektrische Vorrichtungen einschließen. Eine Schaltung kann auch als eine synthetisierte Schaltung in einer programmierbaren Hardwarevorrichtung, wie einem feldprogrammierbaren Gate-Array, einer programmierbaren Array-Logik, einer programmierbaren Logikvorrichtung oder dergleichen (z. B. als Firmware, Netzliste oder dergleichen) implementiert sein. Eine Schaltung kann eine oder mehrere siliziumbasierte integrierte Schaltungsvorrichtungen (z. B. Chips, Rohchips, Rohchip-Ebenen, Pakete) oder andere diskrete elektrische Vorrichtungen in elektrischer Verbindung mit einer oder mehreren anderen Komponenten über elektrische Leitungen einer Schaltungsplatine (PCB) oder dergleichen aufweisen. Jedes der hier beschriebenen Module kann in bestimmten Ausführungsformen durch eine Schaltung ausgeführt oder implementiert sein.
  • Einleitend werden im Folgenden kurze Definitionen für verschiedene Begriffe gegeben, die in dieser Anmeldung verwendet werden. Zusätzliche Definitionen werden im Zusammenhang mit der Erörterung der hierin enthaltenen Figuren bereitgestellt. Wie hierin verwendet, kann „beispielhaft“ ein Beispiel, eine Implementierung und/oder einen Gesichtspunkt bezeichnen und sollte nicht als Einschränkung oder als Hinweis auf eine Präferenz oder eine bevorzugte Implementierung verstanden werden. Ferner ist zu beachten, dass bestimmte Ordnungsbegriffe (z. B. „erste“ oder „zweite“) zur Identifikation und Erleichterung der Bezugnahme bereitgestellt werden können und möglicherweise nicht unbedingt physische Charakteristika oder Ordnung implizieren. Daher bedeutet hierin ein Ordnungsbegriff (z. B. „erster“, „zweiter“, „dritter“), der zum Modifizieren eines Elements wie einer Struktur, einer Komponente, eines Vorgangs usw. verwendet wird, nicht unbedingt eine Priorität oder Reihenfolge des Elements in Bezug auf ein anderes Element, sondern unterscheidet das Element von einem anderen Element mit demselben Namen (doch zur Verwendung des Ordnungsbegriffs). Zusätzlich können, wie hierin verwendet, unbestimmte Artikel („ein“ und „eine“) „einen oder mehrere“ und nicht „einen“ bezeichnen. Wie hierin verwendet, kann eine Struktur oder ein Vorgang, der ein Element „aufweist“ oder „einschließt“, eines oder mehrere andere Elemente einschließen, die nicht explizit angegeben sind. Die Begriffe „einschließlich“, „aufweisend“, „mit“ und Variationen dessen bedeuten „einschließlich, aber nicht darauf beschränkt“, sofern nicht ausdrücklich etwas anderes angegeben ist. Die Begriffe „ein/e/s“, und „der/die/das“ beziehen sich auch auf „eines oder mehrere“, sofern nicht ausdrücklich etwas anderes angegeben ist. Ferner kann ein Vorgang, der „basierend auf“ einer Bedingung oder einem Ereignis durchgeführt wird, auch basierend auf einer oder mehreren anderen Bedingungen oder Ereignissen durchgeführt werden, die nicht ausdrücklich erwähnt werden. Wie in dieser Anmeldung verwendet, beziehen sich die Begriffe „eine Ausführungsform“, „eine andere Ausführungsform“ oder analoger Sprachgebrauch nicht auf eine einzelne Variation des offenbarten Gegenstands; stattdessen bezieht sich dieser Sprachgebrauch auf Variationen des offenbarten Gegenstands, die mit einer Reihe verschiedener Implementierungen des offenbarten Gegenstands angewendet und verwendet werden können. Eine aufzählende Auflistung von Elementen impliziert nicht, dass sich irgendeines oder alle der Elemente gegenseitig ausschließen und/oder gegenseitig einschließen, sofern nicht ausdrücklich etwas anderes angegeben ist.
  • Gesichtspunkte der vorliegenden Offenbarung werden unten unter Bezugnahme auf schematische Flussdiagramme und/oder schematische Blockdiagramme von Verfahren, Vorrichtungen, Systemen und Computerprogrammprodukten gemäß Ausführungsformen der Offenbarung beschrieben. Es versteht sich, dass jeder Block der schematischen Flussdiagramme und/oder schematischen Blockdiagramme und Kombinationen von Blöcken in den schematischen Flussdiagrammen und/oder schematischen Blockdiagrammen durch Computerprogrammanweisungen implementiert werden können. Diese Computerprogrammanweisungen können einem Prozessor eines Computers oder einer anderen programmierbaren Datenverarbeitungseinrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die Anweisungen, die über den Prozessor oder eine andere programmierbare Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zum Implementieren der Funktionen und/oder Schritte erzeugen, die in den schematischen Flussdiagrammen und/oder schematischen Blockdiagrammen Block oder Blöcken spezifiziert sind.
  • Es ist auch zu beachten, dass in einigen alternativen Implementierungen die in dem Block angegebenen Funktionen außerhalb der in den Figuren angegebenen Reihenfolge auftreten können. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, abhängig von der involvierten Funktionalität. Andere Schritte und Verfahren, die in Funktion, Logik oder Wirkung äquivalent zu einem oder mehreren Blöcken oder Teilen davon der veranschaulichten Figuren sind, können konzipiert werden. Obwohl verschiedene Pfeilarten und Linienarten in dem Flussdiagramm und/oder den Blockdiagrammen verwendet werden können, sind sie so zu verstehen, dass sie den Umfang der entsprechenden Ausführungsformen nicht einschränken. Zum Beispiel kann ein Pfeil eine Warte- oder Überwachungsperiode einer nicht spezifizierten Dauer zwischen aufgezählten Schritten der dargestellten Ausführungsform angeben.
  • Wie hierin verwendet, weist eine „Speicherzelle“ eine Hardwarekomponente auf, die einen einzelnen Zustand speichern kann. Die Speicherzelle kann eine flüchtige oder eine nichtflüchtige Speicherzelle aufweisen. Der in der Speicherzelle gespeicherte Zustand kann einen von verschiedenen Arten von Werten darstellen, wie einen Einzelbitwert oder einen Mehrbitwert.
  • In der vorstehenden detaillierten Beschreibung wurde auf die beigefügten Zeichnungen Bezug genommen, die einen Teil davon bilden. Die vorhergehende Zusammenfassung ist nur veranschaulichend und soll in keiner Weise einschränkend sein. Zusätzlich zu den vorstehend beschriebenen veranschaulichenden Gesichtspunkten, Ausführungsformen und Merkmalen werden weitere Gesichtspunkte, Ausführungsformen und Merkmale unter Bezugnahme auf die Zeichnungen und die folgende ausführliche Beschreibung deutlich. Die Beschreibung von Elementen in jeder Figur kann sich auf Elemente von fortlaufenden Figuren beziehen. Gleiche Bezugszeichen können sich auf gleiche Elemente in den Figuren beziehen, einschließlich alternativer Ausführungsformen gleicher Elemente.
  • Die vorhergehende detaillierte Beschreibung der Erfindung wurde zu Zwecken der Veranschaulichung und Beschreibung präsentiert. Sie soll nicht erschöpfend sein oder die Erfindung auf die genaue offenbarte Form beschränken. Viele Modifikationen und Variationen sind im Lichte der obigen Lehren möglich. Die beschriebenen Ausführungsformen wurden gewählt, um die Prinzipien der Erfindung 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. Es ist beabsichtigt, dass der Schutzumfang der Erfindung durch die hieran angehängten Ansprüche definiert wird.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 10535401 B [0027]
    • US 2020/0321055 [0111]

Claims (20)

  1. Einrichtung, aufweisend: eine Vielzahl von Speicherzellen, die dazu eingerichtet sind, mehrere Zustände zu speichern; eine Speichersteuerung, die mit der Vielzahl von Speicherzellen wirkverbunden ist, um die Speicherung von Daten darin zu steuern und eingerichtet ist zum: Anlegen eines Programmiersteuersignals an ausgewählte Bitleitungen, um ausgewählte Speicherzellen der Vielzahl von Speicherzellen zu programmieren, um die ausgewählten Speicherzellen zu programmieren und ein Sperrsteuersignal an nicht ausgewählte Speicherzellen der Vielzahl von Speicherzellen anzulegen, um die Programmierung der nicht ausgewählten Speicherzellen zu blockieren, Deaktivieren eines Entzerrungssignals, das an die ausgewählten Bitleitungen angelegt wird, nachdem anfängliche Programmierimpulse an die ausgewählten Speicherzellen angelegt werden, und Aktivieren des Entzerrungssignals, das an die ausgewählten Bitleitungen angelegt wird, sobald eine Schwellenzahl von Programmierimpulsen erreicht ist.
  2. Einrichtung gemäß Anspruch 1, wobei die Speichersteuerung dazu eingerichtet ist, den Schwellenwert von Programmierimpulsen auf eine Anzahl einzustellen, bei der mindestens die Hälfte der Vielzahl von Speicherzellen auf jeweilige Endspeicherzustände programmiert wird.
  3. Einrichtung gemäß Anspruch 2, wobei die Speichersteuerung weiterhin dazu eingerichtet ist, das Entzerrungssignal zu deaktivieren, um den Stromverbrauch zu reduzieren und die Störung der Sperrpeicherzelle zu reduzieren.
  4. Einrichtung gemäß Anspruch 1, wobei die Speichersteuerung dazu eingerichtet ist, die Programmierung einer Single-Level-Zelle zu steuern und das Entzerrungssignal für einen ersten Programmierimpuls zu deaktivieren.
  5. Einrichtung gemäß Anspruch 4, wobei die Speichersteuerung dazu eingerichtet ist, eine Bitleitungsentzerrung nach einem zweiten Programmierimpuls oder einem späteren Programmierimpuls zu aktivieren.
  6. Einrichtung gemäß Anspruch 1, wobei die Speichersteuerung dazu eingerichtet ist, die Programmierung einer Single-Level-Zelle auf einer Teil-Seite durch selektives Aktivieren und Deaktivieren des Entzerrungssignals für vorbestimmte Programmierimpulse zu steuern.
  7. Einrichtung gemäß Anspruch 1, wobei die Speichersteuerung dazu eingerichtet ist, die Programmierung einer Triple-Level-Zelle zu steuern und das Entzerrungssignal für die ersten drei Programmierimpulse zu deaktivieren.
  8. Einrichtung gemäß Anspruch 7, wobei die Speichersteuerung dazu eingerichtet ist, die Entzerrung nach Abschluss der C-Level-Programmierung zu aktivieren.
  9. Einrichtung gemäß Anspruch 8, wobei die Speichersteuerung dazu eingerichtet ist, die Entzerrung nach Abschluss der F-Level-Programmierung zu deaktivieren.
  10. Einrichtung gemäß Anspruch 1, wobei die Speichersteuerung dazu eingerichtet ist, die Programmierung einer Quad-Level-Zelle zu steuern, das Entzerrungssignal für zumindest einen ersten Programmierimpuls zu deaktivieren, das Entzerrungssignal nach Abschluss der S7-Programmierung zu aktivieren, und das Entzerrungssignal nach Abschluss der S13-Programmierung zu deaktivieren.
  11. Einrichtung gemäß Anspruch 1, wobei die Speichersteuerung dazu eingerichtet ist, die Programmierung einer Quad-Level-Zelle unter Verwendung von MLS-/Feinprogrammierung zu steuern, das Entzerrungssignal für zumindest einen ersten Programmierimpuls zu deaktivieren, das Entzerrungssignal nach Abschluss der A-Programmierung zu aktivieren und das Entzerrungssignal nach Abschluss der C-Programmierung zu deaktivieren.
  12. Steuerverfahren für nichtflüchtigen Speicher, aufweisend: Anlegen eines Auswahlsteuersignals an ausgewählte Bitleitungen, um ausgewählte Speicherzellen der Vielzahl von Speicherzellen zu adressieren, um die ausgewählten Speicherzellen zu programmieren; Anlegen eines Sperrsteuersignals an nicht ausgewählte Speicherzellen der Vielzahl von Speicherzellen, um die Programmierung auf die nicht ausgewählten Speicherzellen zu blockieren; Deaktivieren einer Entladung der ausgewählten Bitleitungen, bis die anfänglichen Programmierimpulse an den ausgewählten Speicher angelegt werden; und Aktivieren einer Entladung der ausgewählten Bitleitungen, sobald ein Schwellenwert von Programmierimpulsen erreicht ist.
  13. Verfahren gemäß Anspruch 12, wobei der Schritt des Aktivierens einer Entladung der ausgewählten Bitleitungen das Entzerren der Bitleitungen auf VDDSA vor dem Entladen der Bitleitungen einschließt.
  14. Verfahren gemäß Anspruch 12, weiterhin aufweisend das Einstellen des Schwellenwerts von Programmierimpulsen auf eine Anzahl, bei der mindestens die Hälfte der Speicherzellen auf jeweilige Endspeicherzustände programmiert wird.
  15. Verfahren gemäß Anspruch 12, weiterhin aufweisend das Steuern einer Programmierung einer Single-Level-Zelle und wobei das Deaktivieren der Entladung der ausgewählten Bitleitungen das Deaktivieren der Entladung für einen ersten Programmierimpuls einschließt.
  16. Verfahren gemäß Anspruch 12, weiterhin aufweisend den Schritt des Steuerns der Programmierung einer Triple-Level-Zelle und wobei das Deaktivieren des Entladens der ausgewählten Bitleitungen das Deaktivieren des Entladens der Bitleitungen für die ersten drei Programmierimpulse einschließt.
  17. Verfahren gemäß Anspruch 16, wobei der Schritt des Aktivierens des Entladens der ausgewählten Bitleitungen weiterhin das Aktivieren der deaktivierten Bitleitungen für die Entladung nach Abschluss der C-Programmierung einschließt.
  18. Verfahren gemäß Anspruch 17, wobei der Schritt des Deaktivierens des Entladens ausgewählter Bitleitungen weiterhin das Deaktivieren der zuvor aktivierten Bitleitungen nach Abschluss der F-Programmierung einschließt.
  19. Steuerverfahren für nichtflüchtigen Speicher, aufweisend: Einstellen einer Programmierimpulszahl auf Null; Durchführen eines Programmierimpulses mit einer Bitleitung auf einer Programmierebene; Erhöhen der Programmierimpulszahl; bei der Programmierimpulszahl unter einem ersten Schwellenwert, Deaktivieren der Bitleitungs-Entladung zwischen Programmierimpulsen und dann Durchführen eines nachfolgenden Programmierimpulses durch Zurückkehren zur Durchführung eines Programmierimpulses mit einer Bitleitung auf einer Programmierebene; bei der Programmierimpulszählung bei oder über einem ersten Schwellenwert, Aktivieren der Bitleitungs-Entladung zwischen Programmierimpulsen und dann Zurückkehren zur Durchführung eines Programmierimpulses mit einer Bitleitung auf einer Programmierebene und Erhöhen der Programmierimpulszählung; und bei der Programmierimpulszählung über einem zweiten Schwellenwert, Deaktivieren der Bitleitungsentladung zwischen Programmierimpulsen.
  20. Verfahren gemäß Anspruch 19, wobei das Durchführen der Programmierimpulse das Durchführen von Programmierimpulsen für einen QLC-Speicher, das Einstellen des ersten Schwellenwerts auf der S7-Programmierimpulsebene und das Einstellen des zweiten Schwellenwerts auf der S13-Programmierimpulsebene einschließt.
DE102022102589.6A 2021-06-02 2022-02-03 Auslösen der nächsten zustandsverifizierung in der programmierschleife für nichtflüchtigen speicher Pending DE102022102589A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/336,936 2021-06-02
US17/336,936 US11521691B1 (en) 2021-06-02 2021-06-02 Triggering next state verify in program loop for nonvolatile memory

Publications (1)

Publication Number Publication Date
DE102022102589A1 true DE102022102589A1 (de) 2022-12-08

Family

ID=84102100

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022102589.6A Pending DE102022102589A1 (de) 2021-06-02 2022-02-03 Auslösen der nächsten zustandsverifizierung in der programmierschleife für nichtflüchtigen speicher

Country Status (3)

Country Link
US (1) US11521691B1 (de)
CN (1) CN115497544A (de)
DE (1) DE102022102589A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11798626B2 (en) * 2020-11-02 2023-10-24 Samsung Electronics Co., Ltd. Nonvolatile memory device and method of operating a nonvolatile memory

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2023031579A (ja) * 2021-08-25 2023-03-09 キオクシア株式会社 半導体記憶装置
CN116564387B (zh) * 2023-07-03 2023-10-31 芯天下技术股份有限公司 nor flash读取方法、装置、存储芯片及设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10535401B2 (en) 2018-06-05 2020-01-14 Sandisk Technologies Llc Dynamic bit-scan techniques for memory device programming
US20200321055A1 (en) 2018-11-26 2020-10-08 Sandisk Technologies Llc Pre-charge voltage for inhibiting unselected nand memory cell programming

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101407361B1 (ko) * 2008-04-14 2014-06-13 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법
US11361834B1 (en) * 2020-12-30 2022-06-14 Sandisk Technologies Llc Systems and methods for dual-pulse programming

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10535401B2 (en) 2018-06-05 2020-01-14 Sandisk Technologies Llc Dynamic bit-scan techniques for memory device programming
US20200321055A1 (en) 2018-11-26 2020-10-08 Sandisk Technologies Llc Pre-charge voltage for inhibiting unselected nand memory cell programming

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11798626B2 (en) * 2020-11-02 2023-10-24 Samsung Electronics Co., Ltd. Nonvolatile memory device and method of operating a nonvolatile memory

Also Published As

Publication number Publication date
US11521691B1 (en) 2022-12-06
US20220392551A1 (en) 2022-12-08
CN115497544A (zh) 2022-12-20

Similar Documents

Publication Publication Date Title
US11342028B2 (en) Concurrent programming of multiple cells for non-volatile memory devices
DE102017104257A1 (de) Auf Zellenstrom basierende Bitleitungsspannung
DE102022102589A1 (de) Auslösen der nächsten zustandsverifizierung in der programmierschleife für nichtflüchtigen speicher
DE112017002776T5 (de) Nichtflüchtiger Speicher mit angepasster Steuerung vom Typ der Störinjektion während der Programmüberprüfung für eine verbesserte Programmleistung
DE102017104283A1 (de) Löschgeschwindigkeitsbasierte wortleitungssteuerung
CN111406290B (zh) 用于校验的子组选择
DE102013108907A1 (de) Nichtflüchtige Speichervorrichtung mit nahen/fernen Speicherzellengruppierungen und Datenverarbeitungsverfahren
US11545221B2 (en) Concurrent programming of multiple cells for non-volatile memory devices
WO2018044368A1 (en) State-dependent read compensation
DE112018004373T5 (de) Adaptive programmierspannung für nichtflüchtige speichervorrichtungen
DE102015011991A1 (de) Codierungsschema für vertikale 3D-Flash-Speicher
DE102018123961A1 (de) Gruppen-leseaktualisierung
DE102020107504A1 (de) Nichtflüchtiges speicher-array, das zur leistungsverbesserung von beiden seiten angesteuert wird
DE112015004531T5 (de) Latch-Initialisierung für eine Datenspeichervorrichtung
DE102020107164A1 (de) Dynamischer 1-tier-scan für 3d-hochleistungs-nand
US11355208B2 (en) Triggering next state verify in progam loop for nonvolatile memory
US11581049B2 (en) System and methods for programming nonvolatile memory having partial select gate drains
US11508440B1 (en) Periodic write to improve data retention
DE102022212920A1 (de) Speichervorrichtung und verfahren zum betreiben der speichervorrichtung
US11315648B2 (en) Dynamic tier selection for program verify in nonvolatile memory
US11972817B2 (en) State look ahead quick pass write algorithm to tighten ongoing natural threshold voltage of upcoming states for program time reduction
US20220208287A1 (en) System and methods for programming nonvolatile memory
US20220284961A1 (en) Control gate signal for data retention in nonvolatile memory
DE102022102588A1 (de) Gleichzeitiges programmieren mehrerer zellen für nichtflüchtige speichervorrichtungen
DE102022003201A1 (de) Express-Programmierung mit vorgezogener Cache-Register-Freigabe in einem Speicher-Untersystem

Legal Events

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

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE