DE102022102588A1 - SIMULTANEOUS PROGRAMMING OF MULTIPLE CELLS FOR NON-VOLATILE STORAGE DEVICES - Google Patents

SIMULTANEOUS PROGRAMMING OF MULTIPLE CELLS FOR NON-VOLATILE STORAGE DEVICES Download PDF

Info

Publication number
DE102022102588A1
DE102022102588A1 DE102022102588.8A DE102022102588A DE102022102588A1 DE 102022102588 A1 DE102022102588 A1 DE 102022102588A1 DE 102022102588 A DE102022102588 A DE 102022102588A DE 102022102588 A1 DE102022102588 A1 DE 102022102588A1
Authority
DE
Germany
Prior art keywords
memory cells
programming
voltage
sets
nand
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
DE102022102588.8A
Other languages
German (de)
Inventor
Xiang Yang
Gerrit Jan Hemink
Ken Oowada
Toru Miwa
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
Priority claimed from US17/360,572 external-priority patent/US11545221B2/en
Application filed by SanDisk Technologies LLC filed Critical SanDisk Technologies LLC
Publication of DE102022102588A1 publication Critical patent/DE102022102588A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or 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/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/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/32Timing 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
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1015Read-write modes for single port memories, i.e. having either a random port or a serial port
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/12Group selection circuits, e.g. for memory block selection, chip selection, array selection
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/18Address timing or clocking circuits; Address control signal generation or management, e.g. for row address strobe [RAS] or column address strobe [CAS] signals
    • 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/30Power supply circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/562Multilevel memory programming aspects
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/562Multilevel memory programming aspects
    • G11C2211/5621Multilevel programming verification
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/562Multilevel memory programming aspects
    • G11C2211/5622Concurrent multilevel programming of more than one cell
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/20Memory cell initialisation circuits, e.g. when powering up or down, memory clear, latent image memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/06Address interface arrangements, e.g. address buffers

Abstract

Hierin wird die Technologie zum gleichzeitigen Programmieren des gleichen Datenmusters in mehreren Sätzen nichtflüchtiger Speicherzellen offenbart. Die Spannung wird gemäß einem Datenmuster an Bitleitungen angelegt. Eine Auswahlspannung wird an Drain-Auswahl-Gates mehrerer Sätze von NAND-Ketten angelegt. Das System legt gleichzeitig einen Programmimpuls an Steuer-Gates eines unterschiedlichen Satzes ausgewählter Speicherzellen in jedem entsprechenden Satz der Vielzahl von Sätzen der NAND-Ketten an, während die Auswahlspannung an die Drain-Auswahl-Gates der Vielzahl von Sätzen der NAND-Ketten angelegt wird und die Spannungen an die Vielzahl von Bitleitungen angelegt werden, um gleichzeitig das Datenmuster in jeden Satz der ausgewählten Speicherzellen zu programmieren.Disclosed herein is the technology for simultaneously programming the same data pattern in multiple sets of non-volatile memory cells. The voltage is applied to bit lines according to a data pattern. A select voltage is applied to drain select gates of multiple sets of NAND strings. The system simultaneously applies a program pulse to control gates of a different set of selected memory cells in each corresponding set of the plurality of sets of NAND chains while applying the select voltage to the drain select gates of the plurality of sets of NAND chains and the voltages are applied to the plurality of bit lines to simultaneously program the data pattern into each set of the selected memory cells.

Description

PRIORITÄTSANSPRUCHPRIORITY CLAIM

Diese Anmeldung ist eine Teilfortsetzung der US-Patentanmeldung Nr. 17/227.820 mit dem Titel „CONCURRENT PROGRAMMING OF MULTIPLE CELLS FOR NON-VOLATILE MEMORY DEVICES“, eingereicht am 12. April 2021, die eine Teilanmeldung der US-Patentanmeldung Nr. 16/024.002 mit dem Titel „CONCURRENT PROGRAMMING OF MULTIPLE CELLS FOR NON-VOLATILE MEMORY DEVICES“, eingereicht am 29. Juni 2018, ist; die beide hierin in ihrer Gesamtheit durch Bezugnahme aufgenommen werden.This application is a partial continuation of U.S. Patent Application No. 17/227,820 entitled CONCURRENT PROGRAMMING OF MULTIPLE CELLS FOR NON-VOLATILE MEMORY DEVICES, filed April 12, 2021, which is a divisional application of U.S. Patent Application No. 16/024,002 entitled CONCURRENT PROGRAMMING OF MULTIPLE CELLS FOR NON-VOLATILE MEMORY DEVICES, filed June 29, 2018; both of which are incorporated herein by reference in their entirety.

TECHNISCHES GEBIETTECHNICAL AREA

Die vorliegende Offenbarung bezieht sich in verschiedenen Ausführungsformen auf Speichervorrichtungen und insbesondere auf Systeme und Verfahren zum gleichzeitigen Programmieren mehrerer Zellen einer nichtflüchtigen Speichervorrichtung.The present disclosure relates, in various embodiments, to memory devices, and more particularly to systems and methods for simultaneously programming multiple cells of a non-volatile memory device.

HINTERGRUNDBACKGROUND

Viele Datenspeichervorrichtungen wie Flash-Speichervorrichtungen speichern Daten in Zellen nichtflüchtiger Medien. Eine physikalische Eigenschaft jeder Zelle wie gespeicherte Ladung, Spannung, Materialphase, elektrischer Widerstand, Magnetisierung oder dergleichen kann geändert werden, um Daten zu codieren. Die physikalische Eigenschaft einer Zelle kann in einen Bereich variabel sein, der in diskrete Zustände unterteilt werden kann, sodass unterschiedliche Zustände unterschiedlichen Datenwerten entsprechen. Das Abtasten, ob die physikalische Eigenschaft der Zelle eine oder mehrere Leseschwellen (z. B. Spannungsschwellen, Widerstandsschwellen oder dergleichen) innerhalb ihres Bereichs erfüllt, bestimmt den Zustand der Zelle, sodass ein gespeicherter Datenwert wiederhergestellt werden kann.Many data storage devices, such as flash memory devices, store data in cells of non-volatile media. A physical property of each cell, such as stored charge, voltage, material phase, electrical resistance, magnetization, or the like, can be altered to encode data. The physical property of a cell can be variable over a range that can be partitioned into discrete states, such that different states correspond to different data values. Sensing whether the cell's physical property meets one or more read thresholds (e.g., voltage thresholds, resistance thresholds, or the like) within its range determines the state of the cell so that a stored data value can be restored.

Zu nichtflüchtigen Speichertypen gehören unter anderem ReRAM, Memristorspeicher, programmierbarer Metallisierungszellenspeicher, Phasenwechselspeicher (PCM, PCME, PRAM, PCRAM, Ovonic Unified Memory, Chalcogenid-RAM oderC-RAM), NAND-Flashspeicher (z. B. 2D-NAND-Flashspeicher, 3D-NAND-Flashspeicher), NOR-Flash-Speicher, Nano-Direktzugriffsspeicher (Nano-RAM oder NRAM), drahtbasierter Nanokristallspeicher, Siliziumoxid-basierter Sub-10-Nanometer-Prozessspeicher, Graphenspeicher, Silizium-Oxid-Nitrid-Oxid-Silizium (SONOS), programmierbare Metallisierungszelle (PMC), leitungsüberbrückender RAM (CBRAM), magnetoresistiver RAM (MRAM), magnetische Speichermedien (z. B. Festplatte, Band), optische Speichermedien und dergleichen. Unter den nichtflüchtigen Speichertypen, die zum Codieren von Informationen in aufrecht erhaltenen Ladungen verwendet werden, können verschiedene Lade- und/oder Ladungserhaltungstechnologien verwendet werden, einschließlich Floating-Gate- und Ladungseinfangtechnologien, ohne jedoch darauf beschränkt zu sein.Non-volatile memory types include but are not limited to ReRAM, memristor memory, programmable metallization cell memory, phase change memory (PCM, PCME, PRAM, PCRAM, Ovonic unified memory, chalcogenide RAM, or C-RAM), NAND flash memory (e.g., 2D NAND flash memory, 3D -NAND flash memory), NOR flash memory, nano random access memory (Nano-RAM or NRAM), wire-based nanocrystal memory, silicon oxide-based sub-10 nanometer process memory, graphene memory, silicon oxide nitride oxide silicon (SONOS ), programmable metallization cell (PMC), line-bridging RAM (CBRAM), magnetoresistive RAM (MRAM), magnetic storage media (e.g., hard disk, tape), optical storage media, and the like. Among the types of non-volatile memory used to encode information in retained charges, various charge and/or charge retention technologies can be used, including but not limited to floating gate and charge trapping technologies.

Bei vielen der vorgenannten Technologien werden Speicherzellen in verschiedenen Blöcken in separaten Vorgängen programmiert. In einigen Fällen werden mehrere Datenkopien temporär in entsprechende Sätze von Speicherzellen geschrieben, bevor die Daten in einer mehrstufigen Zelle (Multiple Level Cell, MLC) gespeichert werden. Beispiele für mehrstufige Zellen sind zweistufige Zellen, dreistufige Zellen (Triple Level Cell, TLC), vierstufige Zellen (Quadruple Level Cell, QLC), fünfstufige Zellen (Penta Level Cell, PLC) und dergleichen. Wenn die temporär gespeicherten Daten in Zellen unterschiedlicher Kapazität geschrieben werden, wie einstufige Zellen (Single Level Cells, SLC), kann ein Zellverdichtungsvorgang (Faltvorgang) oder dergleichen zum Kombinieren mehrerer Bits unter Verwendung der in den SLC-Zellen temporär gespeicherten Daten verwendet werden, um den zu codierenden Wert für die MLC-Zelle bereitzustellen. Herkömmliche Verfahren, bei denen die temporären Kopien separat geschrieben und verifiziert werden, erhöhen die Zeit und die Anzahl von Schritten, die zum Codieren der MLC-Zelle erforderlich sind.In many of the above technologies, memory cells in different blocks are programmed in separate operations. In some cases, multiple copies of data are temporarily written to respective sets of memory cells before the data is stored in a multiple level cell (MLC). Examples of multi-level cells are two-level cells, three-level cells (triple level cell, TLC), four-level cells (quadruple level cell, QLC), five-level cells (penta level cell, PLC), and the like. When the temporarily stored data is written in cells of different capacities, such as single level cells (SLC), a cell compression process (folding process) or the like can be used to combine multiple bits using the data temporarily stored in the SLC cells to provide the value to be coded for the MLC cell. Conventional methods, in which the temporary copies are written and verified separately, increase the time and number of steps required to encode the MLC cell.

KURZDARSTELLUNGEXECUTIVE SUMMARY

Präsentiert werden Einrichtungen und Verfahren zum gleichzeitigen Programmieren mehrerer Speicherzellen eines oder mehrerer nichtflüchtiger Speicherelemente.Devices and methods for simultaneously programming multiple memory cells of one or more non-volatile memory elements are presented.

Präsentiert werden Einrichtungen und Verfahren zum gleichzeitigen Programmieren mehrerer Speicherzellen eines oder mehrerer nichtflüchtiger Speicherelemente. In einem Beispiel schließt ein Speicher-Die einen Satz nichtflüchtiger Speicherzellen ein, angeordnet in einem ersten Block, der eine erste Kette von Speicherzellen einschließt, die eine Wortleitung an einer ersten Speicherzelle kreuzt, und einem zweiten Block, der eine zweite Kette von Speicherzellen einschließt, die eine zweite Wortleitung an einer zweiten Speicherzelle kreuzt, eine Bitleitung, die elektrisch mit der ersten Kette und der zweiten Kette verbindbar ist, und eine Steuerung, die dafür eingerichtet ist, gleichzeitig einen Programmierimpuls an die erste Wortleitung und die zweite Wortleitung anzulegen, um die erste und die zweite Speicherzelle gleichzeitig auf eine gemeinsame Zielschwellenspannung zu programmieren.Devices and methods for simultaneously programming multiple memory cells of one or more non-volatile memory elements are presented. In one example, a memory die includes a set of non-volatile memory cells arranged in a first block including a first chain of memory cells crossing a word line at a first memory cell and a second block including a second chain of memory cells crossing a second word line at a second memory cell, a bit line electrically connectable to the first string and the second string, and a controller configured to simultaneously apply a programming pulse to the first word line and the second word line to generate the program the first and second memory cells simultaneously to a common target threshold voltage.

In einem anderen Beispiel ist die Steuerung weiterhin dafür eingerichtet, nach gleichzeitigem Anlegen des Programmierimpulses an die erste Wortleitung und die zweite Wortleitung gleichzeitig einen Verifizierimpuls an die erste Wortleitung und die zweite Wortleitung anzulegen, den Stromfluss durch eine von der ersten Speicherzelle und der zweiten Speicherzelle als Reaktion auf das Anlegen des Verifizierimpulses abzutasten, um zu bestimmen, dass eine von der ersten Speicherzelle und der zweiten Speicherzelle nicht korrekt programmiert ist, und als Reaktion auf das Bestimmen, dass eine von der ersten Speicherzelle und der zweiten Speicherzelle nicht korrekt programmiert ist, ein separates Programmieren der ersten Speicherzelle und der zweiten Speicherzelle einzuleiten.In another example, the controller is further configured to, after concurrent applying the programming pulse to the first word line and the second word line, simultaneously applying a verify pulse to the first word line and the second word line, sensing the current flow through one of the first memory cell and the second memory cell in response to the application of the verify pulse to determine that one of the first memory cell and the second memory cell is improperly programmed, and in response to determining that one of the first memory cell and the second memory cell is improperly programmed, initiating separate programming of the first memory cell and the second memory cell.

In einem Ausführungsbeispiel schließt das getrennte Programmieren der ersten Speicherzelle und der zweiten Speicherzelle das Anwenden eines herkömmlichen Programmiervorgangs auf die erste Speicherzelle und nach dem Verifizieren, dass die erste Speicherzelle korrekt programmiert ist, das Anwenden eines herkömmlichen Programmiervorgangs auf die zweite Speicherzelle ein.In one embodiment, programming the first memory cell and the second memory cell separately includes applying a conventional programming operation to the first memory cell and after verifying that the first memory cell is programmed correctly, applying a conventional programming operation to the second memory cell.

In einem Beispiel ist die Steuerung weiterhin dafür eingerichtet, nach Anlegen der herkömmlichen Programmierimpulse an die zweite Zelle einen zweiten Verifizierimpuls an die erste Speicherzelle anzulegen, den Stromfluss durch eine von der ersten Speicherzelle und der zweiten Speicherzelle als Reaktion auf das Anlegen des zweiten Verifizierimpulses abzutasten, um zu bestimmen, dass die erste Speicherzelle korrekt programmiert ist, nach Anlegen des zweiten Verifizierimpulses an die erste Speicherzelle einen dritten Verifizierimpuls an die zweite Speicherzelle anzulegen und den Stromfluss durch eine von der ersten Speicherzelle und der zweiten Speicherzelle als Reaktion auf das Anlegen des dritten Verifizierimpulses abzutasten, um bestimmen, dass die zweite Speicherzelle korrekt programmiert ist.In one example, the controller is further configured to apply a second verify pulse to the first memory cell after applying the conventional programming pulses to the second cell, to sense current flow through one of the first memory cell and the second memory cell in response to the application of the second verify pulse, to determine that the first memory cell is correctly programmed, after application of the second verify pulse to the first memory cell, to apply a third verify pulse to the second memory cell and current flow through one of the first memory cell and the second memory cell in response to application of the third verify pulse sample to determine that the second memory cell is correctly programmed.

In einem anderen Beispiel ist die Steuerung weiterhin dafür eingerichtet, zu bestimmen, dass die erste Speicherzelle korrekt programmiert ist, als Reaktion auf das Bestimmen, dass die erste Speicherzelle korrekt programmiert ist, Daten aus der ersten Speicherzelle zu lesen und nach dem Lesen der Daten aus der ersten Speicherzelle die erste Speicherzelle und die zweite Speicherzelle zu überschreiben.In another example, the controller is further configured to determine that the first memory cell is correctly programmed, responsive to determining that the first memory cell is correctly programmed, reading data from the first memory cell and after reading the data out of the first memory cell to overwrite the first memory cell and the second memory cell.

In einem Ausführungsbeispiel ist die Steuerung weiterhin dafür eingerichtet, Daten aus einer der ersten Speicherzelle und der zweiten Speicherzelle zu lesen und die Daten zum Programmieren einer mehrstufigen Zelle in einem Zellverdichtungsvorgang zu verwenden. Im Allgemeinen ist ein Zellverdichtungsvorgang (auch bekannt als Speicherzellenverdichtung) ein Vorgang, der Datenwerte, die in ursprünglichen Speicherzellen mit einem oder mehreren Datenwerten gespeichert sind, in Zellen verschiebt, die mehr Datenwerte aufnehmen können als die Anzahl der Datenwerte in den ursprünglichen Speicherzellen. Zum Beispiel ist in einer Ausführungsform der Zellverdichtungsvorgang eine SLC-TLC-Zellverdichtung, was bedeutet, dass Datenwerte in Speicherzellen, die einen einzigen Datenwert enthalten, durch Speicherung in einer kombinierten Kodierung in eine einzige Speicherzelle verschoben werden, die drei Datenwerte enthält. In anderen Beispielen ist die Zellverdichtung SLC-MLC, MLC-QLC, TLC-QLC, SLC-QLC oder dergleichen, wie für Fachleute ersichtlich sein kann.In one embodiment, the controller is further configured to read data from one of the first memory cell and the second memory cell and use the data to program a multi-level cell in a cell compression operation. In general, a cell compaction operation (also known as memory cell compaction) is an operation that moves data values stored in original memory cells containing one or more data values to cells that can hold more data values than the number of data values in the original memory cells. For example, in one embodiment, the cell compression process is SLC-TLC cell compression, meaning that data values in memory cells containing a single data value are moved into a single memory cell containing three data values by storage in a combined encoding. In other examples, the cell densification is SLC-MLC, MLC-QLC, TLC-QLC, SLC-QLC, or the like, as may be apparent to those skilled in the art.

Bei einem anderen Ausführungsbeispiel befindet sich der zweite Block in einem separaten physischen Abschnitt des Satzes nichtflüchtiger Speicherzellen aus dem ersten Block.In another embodiment, the second block resides in a separate physical portion of the set of non-volatile memory cells from the first block.

In einem Beispiel schließt eine Einrichtung einen Satz nichtflüchtiger Speicherzellen ein, die in einem ersten Block und einem zweiten Block angeordnet sind, die jeweils elektrisch mit einem Satz Bitleitungen verbunden sind, wobei der erste Block eine erste Wortleitung aufweist und der zweite Block eine zweite Wortleitung aufweist, eine Auswahlschaltung, die dafür eingerichtet ist, elektrisch einen ersten Satz Speicherzellen im ersten Block und einen zweiten Satz Speicherzellen im zweiten Block zu wählen, und eine Programmierschaltung, die dafür eingerichtet ist, bei einer erhöhten Spannung einen Programmierimpuls an die erste Wortleitung und zweite Wortleitung anzulegen, um gleichzeitig die gleichen Daten in einem einzelnen Impuls in den ersten Satz Speicherzellen und den zweiten Satz Speicherzellen zu schreiben.In one example, a device includes a set of non-volatile memory cells arranged in a first block and a second block each electrically connected to a set of bit lines, the first block having a first word line and the second block having a second word line , a selection circuit configured to electrically select a first set of memory cells in the first block and a second set of memory cells in the second block, and a programming circuit configured to apply a programming pulse to the first word line and second word line at an increased voltage to simultaneously write the same data to the first set of memory cells and the second set of memory cells in a single pulse.

In einem anderen Beispiel schließt die Einrichtung weiterhin eine Verifizierschaltung ein, die dafür eingerichtet ist, einen Verifizierimpuls an die erste Wortleitung und zweite Wortleitung anzulegen, als Reaktion auf das Anlegen des Verifizierimpulses den Stromfluss durch die jeweiligen Speicherzellen abzutasten, die mit dem Satz Bitleitungen verbunden sind, um zu bestimmen, dass einer des ersten Satz Speicherzellen und des zweiten Satzes Speicherzellen nicht korrekt programmiert ist, und als Reaktion auf das Bestimmen, dass einer des ersten Satzes Speicherzellen und des zweiten Satzes Speicherzellen nicht korrekt programmiert ist, den ersten Satz Speicherzellen und den zweiten Satz Speicherzellen getrennt zu programmieren.In another example, the device further includes verify circuitry configured to apply a verify pulse to the first word line and second word line in response to application of the verify pulse, sensing current flow through respective memory cells connected to the set of bit lines to determine that one of the first set of memory cells and the second set of memory cells is programmed incorrectly, and in response to determining that one of the first set of memory cells and the second set of memory cells is programmed incorrectly, the first set of memory cells and the to program the second set of memory cells separately.

In einem anderen Ausführungsbeispiel ist der zweite Block physisch zum ersten Block versetzt.In another embodiment, the second block is physically offset from the first block.

In einem Beispiel schließt ein System einen Satz nichtflüchtiger Speicherzellen ein, die in einer Kette angeordnet sind, wobei die Kette mit einer Bitleitung verbindbar ist und eine Wortleitung für jede Speicherzelle aufweist, und eine Steuerung, die dafür eingerichtet ist, gleichzeitig Daten in zwei Speicherzellen in der Kette zu schreiben durch elektrisches Auswählen der Bitleitung durch Einstellen eines Auswahl-Gate-Transistors, elektrisches Verbinden einer ersten Wortleitung, die einer ersten Speicherzelle in der Kette entspricht, mit einer zweiten Wortleitung, die einer zweiten Speicherzelle in der Kette entspricht, und gleichzeitiges Anlegen eines Programmierimpulses an die verbundenen Wortleitungen, um die Daten gleichzeitig in die erste Speicherzelle und die zweite Speicherzelle zu schreiben.In one example, a system includes a set of non-volatile memory cells arranged in a chain, the chain containing one bit line is connectable and has a word line for each memory cell, and a controller arranged to simultaneously write data in two memory cells in the chain by electrically selecting the bit line by setting a select gate transistor, electrically connecting a first word line, corresponding to a first memory cell in the chain, with a second word line corresponding to a second memory cell in the chain, and applying a programming pulse to the connected word lines simultaneously to write the data into the first memory cell and the second memory cell simultaneously.

In einem anderen Beispiel ist die Steuerung weiterhin dafür eingerichtet, nach gleichzeitigem Anlegen des Programmierimpulses an die erste Wortleitung und zweite Wortleitung gleichzeitig einen Verifizierimpuls an die erste Wortleitung und zweite Wortleitung anzulegen, den Stromfluss durch eine von der ersten Speicherzelle und der zweiten Speicherzelle als Reaktion auf das Anlegen des Verifizierimpulses abzutasten, um gleichzeitig zu bestimmen, dass eine von der ersten Speicherzelle und der zweiten Speicherzelle nicht korrekt programmiert ist, und als Reaktion auf das Bestimmen, dass eine von der ersten Speicherzelle und der zweiten Speicherzelle nicht korrekt programmiert ist, die erste Speicherzelle und die zweite Speicherzelle separat zu programmieren.In another example, the controller is further configured to simultaneously apply a verify pulse to the first wordline and second wordline after simultaneously applying the programming pulse to the first wordline and second wordline, responsive to current flow through one of the first memory cell and the second memory cell sense the application of the verify pulse to simultaneously determine that one of the first memory cell and the second memory cell is programmed incorrectly, and in response to determining that one of the first memory cell and the second memory cell is programmed incorrectly, the first To program memory cell and the second memory cell separately.

In einer anderen Ausführungsform ist die Steuerung weiterhin dafür eingerichtet, zu bestimmen, dass die erste Speicherzelle korrekt programmiert ist, als Reaktion auf das Bestimmen, dass die erste Speicherzelle korrekt programmiert ist, Daten aus der ersten Speicherzelle zu lesen und nach dem Lesen der Daten aus der ersten Speicherzelle die erste Speicherzelle und die zweite Speicherzelle zu überschreiben.In another embodiment, the controller is further configured to determine that the first memory cell is correctly programmed, responsive to determining that the first memory cell is correctly programmed, reading data from the first memory cell and after reading the data out of the first memory cell to overwrite the first memory cell and the second memory cell.

In einem Ausführungsbeispiel ist die Steuerung weiterhin dafür eingerichtet, Daten aus einer von der ersten Speicherzelle und der zweiten Speicherzelle zu lesen und die Daten zum Programmieren einer mehrstufigen Zelle in einem Zellverdichtungsvorgang zu verwenden.In one embodiment, the controller is further configured to read data from one of the first memory cell and the second memory cell and use the data to program a multi-level cell in a cell compression operation.

In einem anderen Beispiel sind die erste Speicherzelle und die zweite Speicherzelle aufeinanderfolgende Speicherzellen in der Kette.In another example, the first memory cell and the second memory cell are consecutive memory cells in the chain.

In einer Ausführungsform schließt ein Verfahren ein elektrisches Auswählen einer Bitleitung für einen Satz nichtflüchtiger Speicherzellen, die in zwei Löschblöcken angeordnet sind, wobei die Bitleitung mit Speicherzellen in jedem der beiden Blöcke verbunden werden kann, ein elektrisches Verbinden getrennter Wortleitungen einschließlich einer ersten Wortleitung, die einer der Speicherzellen in einem ersten der beiden Blöcke entspricht, und einer zweiten Wortleitung, die einer der Speicherzellen in einem zweiten der beiden Blöcke entspricht; und ein gleichzeitiges Anlegen eines Programmierimpulses an die verbundenen Wortleitungen, um Speicherzellen, die der ersten Wortleitung und der zweiten Wortleitung in den beiden Blöcken entsprechen, gleichzeitig auf eine gemeinsame Zielschwellenspannung zu programmieren, ein.In one embodiment, a method includes electrically selecting a bit line for a set of non-volatile memory cells arranged in two erase blocks, wherein the bit line can be connected to memory cells in either of the two blocks, electrically connecting separate word lines including a first word line, the one corresponding to memory cells in a first of the two blocks, and a second word line corresponding to one of the memory cells in a second of the two blocks; and simultaneously applying a programming pulse to the connected word lines to simultaneously program memory cells corresponding to the first word line and the second word line in the two blocks to a common target threshold voltage.

In einem Beispiel schließt das Verfahren weiterhin nach dem gleichzeitigen Anlegen des Programmierimpulses an die verbundenen Wortleitungen das gleichzeitige Anlegen eines Verifizierimpulses an die verbundenen Wortleitungen, das Abtasten des Stromflusses durch die Bitleitung als Reaktion auf das Anlegen des Verifizierimpulses, um zu bestimmen, dass eine der Speicherzellen nicht korrekt programmiert ist, und als Reaktion auf das Bestimmen, dass eine der Speicherzellen nicht richtig programmiert ist, das getrennte Programmieren der Speicherzellen ein.In one example, the method further includes, after applying the programming pulse to the connected word lines simultaneously, applying a verify pulse to the connected word lines simultaneously, sensing the current flow through the bit line in response to the application of the verify pulse to determine that one of the memory cells is improperly programmed, and in response to determining that one of the memory cells is improperly programmed, programming the memory cells separately.

In einem Ausführungsbeispiel schließt das Verfahren weiterhin das Bestimmen, dass eine erste der Speicherzellen korrekt programmiert ist, als Reaktion auf das Bestimmen, dass die erste der Speicherzellen korrekt programmiert ist, das Lesen der ersten der Speicherzellen und nach dem Lesen der ersten der Speicherzellen das Überschreiben der ersten der Speicherzellen und einer zweiten der Speicherzellen ein.In one embodiment, the method further includes determining that a first one of the memory cells is correctly programmed, responsive to determining that the first one of the memory cells is correctly programmed, reading the first one of the memory cells, and after reading the first one of the memory cells, overwriting the first of the memory cells and a second of the memory cells.

In einem anderen Ausführungsbeispiel schließt das Verfahren weiterhin das Lesen von Daten aus einer von einer ersten Speicherzelle der Speicherzellen innerhalb eines ersten Blocks der zwei Blöcke und einer zweiten Speicherzelle der Speicherzellen innerhalb eines zweiten Blocks der zwei Blöcke und Verwenden der Daten zum Programmieren einer anderen Zelle in einem Zellverdichtungsvorgang ein.In another embodiment, the method further includes reading data from one of a first memory cell of memory cells within a first block of the two blocks and a second memory cell of memory cells within a second block of the two blocks and using the data to program another cell in a cell compression process.

In einem Beispiel ist ein erster der zwei Blöcke physisch von einem zweiten der zwei Blöcke getrennt.In one example, a first of the two blocks is physically separated from a second of the two blocks.

In einem anderen Beispiel schließt eine Einrichtung Mittel zum elektrischen Auswählen einer Bitleitung für Speicherzellen in einem Satz nichtflüchtiger Speicherzellen, die in zwei Blöcken angeordnet sind, wobei die Bitleitung mit einer ersten Kette von Speicherzellen in einem ersten der zwei Blöcke und einer zweiten Kette von Speicherzellen in einem zweiten der zwei Blöcke verbunden sein kann, wobei die erste Kette und die zweite Kette jeweils einen Satz Wortleitungen aufweisen, Mittel zum elektrischen Verbinden einer ersten Wortleitung, die in der ersten Kette enthalten ist, und einer zweiten Wortleitung, die in der zweiten Kette enthalten ist, wobei die erste Wortleitung und die zweite Wortleitung jeweils einer ersten Speicherzelle, die in der ersten Zeichenkette mit einer zweiten Speicherzelle enthalten ist, die in der zweiten Zeichenkette enthalten ist, entsprechen, und Mittel zum Anlegen eines einzelnen Programmierimpulses an die verbundenen Wortleitungen ein, um gleichzeitig die erste Speicherzelle in der ersten Kette und die zweite Speicherzelle in der zweiten Kette auf eine gemeinsame Zielschwellenspannung zu programmieren.In another example, a device includes means for electrically selecting a bit line for memory cells in a set of non-volatile memory cells arranged in two blocks, the bit line being connected to a first chain of memory cells in a first of the two blocks and a second chain of memory cells in a second of the two blocks, the first chain and the second chain each having a set of word lines, means for electrically connecting a first word line included in the first chain and a second Word line included in the second string, the first word line and the second word line each corresponding to a first memory cell included in the first string with a second memory cell included in the second string, and means for applying a single programming pulse to the connected word lines to simultaneously program the first memory cell in the first chain and the second memory cell in the second chain to a common target threshold voltage.

Figurenlistecharacter list

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, wobei:

  • 1A ein Blockdiagramm einer Ausführungsform eines Systems ist, das eine Konponente zum gleichzeitigen Programmieren für eine nichtflüchtige Speichervorrichtung einschließt.
  • 1B eine Ausführungsform einer nichtflüchtigen Speichervorrichtung veranschaulicht, die einen oder mehrere Speicher-Dies oder-Chips einschließen kann.
  • 2A Blöcke von Speicherzellen in einer exemplarischen 2D-Konfiguration des Speicherarrays aus 1B darstellt.
  • 2B eine Querschnittsansicht exemplarischer Ladungseinfangspeicherzellen in NAND-Ketten als Beispiel für Speicherzellen in 2A darstellt.
  • 2C eine Querschnittsansicht der Struktur aus 2B darstellt.
  • 2D eine exemplarische Speicherzelle darstellt.
  • 3 eine perspektivische Ansicht einer Speichervorrichtung ist, die einen Satz Blöcke in einer exemplarischen 3D-Konfiguration des Speicherarrays aus 1 aufweist.
  • 4 eine exemplarische Querschnittsansicht eines Abschnitts von einem der Blöcke aus 3 darstellt.
  • 5 eine Nahansicht eines Bereichs des Stapels aus 4 darstellt.
  • 6 eine exemplarische Ansicht von NAND-Ketten in Unterblöcken in einer 3D-Konfiguration darstellt, die mit 4 übereinstimmt.
  • 7 ein zusätzliches Detail der Unterblöcke SB0 bis SB3 aus 6 darstellt.
  • 8 eine Wellenform eines exemplarischen Programmiervorgangs darstellt.
  • 9 einen Abschnitt der Speicherzelle MC aus 5 darstellt, die das Einspritzen von Elektronen in einen Ladungseinfangbereich bei schwacher Programmierung zeigt.
  • 10 eine Draufsicht auf eine Reihe von Blöcken gemäß einem Ausführungsbeispiel darstellt.
  • 11 ein Diagramm von Programmier- und Verifizierimpulsen gemäß einem Ausführungsbeispiel ist.
  • 12 eine Ausführungsform von zwei Blöcken gemäß einem Ausführungsbeispiel darstellt.
  • 13 eine Ausführungsform eines Verfahrens zum gleichzeitigen Programmieren von Zellen eines Speicherarrays darstellt.
  • 14 eine weitere Ausführungsform eines Verfahrens zum gleichzeitigen Programmieren von Zellen eines Speicherarrays darstellt.
  • 15A, 15B, 15C und 15D Vt-Verteilungen für Speicherzellen zeigen, die auf eine unterschiedliche Anzahl von Bits pro Zelle programmiert sind.
  • 16 ein Flussdiagramm einer Ausführungsform eines Prozesses zum gleichzeitigen Programmieren verschiedener Sätze von Speicherzellen ist.
  • 17 ein Flussdiagramm einer Ausführungsform eines Prozesses zum gleichzeitigen Programmieren von Speicherzellen auf NAND-Strings in unterschiedlichen Löschblöcken ist.
  • 18 ein Flussdiagramm einer Ausführungsform des Prozesses des gleichzeitigen Programmierens von Speicherzellen in mehreren Löschblöcken in einem mehrstufigen Zellprogrammierungsprozess ist.
  • 19 ein Flussdiagramm einer Ausführungsform des Prozesses zum gleichzeitigen Programmieren von Speicherzellen in mehreren Löschblöcken ist.
  • 20A und 20B Blockdiagramme von Schaltungen zum Bereitstellen von Spannungen während des gleichzeitigen Programmierens von Sätzen von Speicherzellen sind.
  • 21 weiterhin darstellt, wie die Schaltungen in den 20A und 20B elektrisch mit einer leitfähigen Region verbunden werden können, der mit Steuer-Gates von Speicherzellen verbunden ist.
  • 22 ein Flussdiagramm einer Ausführungsform eines Prozesses zum Bereitstellen von Spannungen bei gleichzeitigem Programmieren ist.
  • 23 ein Beispiel für eine mehrstufige Ladungspumpe darstellt.
A more specific description is included below with reference to specific embodiments illustrated in the accompanying drawings. Given that these drawings represent only certain embodiments of the disclosure and therefore should not be considered as limiting the scope thereof, the disclosure is described and explained with additional specificity and detail through the use of the accompanying drawings, wherein:
  • 1A Figure 12 is a block diagram of one embodiment of a system including a concurrent programming component for a non-volatile memory device.
  • 1B 1 illustrates one embodiment of a non-volatile memory device that may include one or more memory dies or chips.
  • 2A blocks of memory cells in an exemplary 2D configuration of the memory array 1B represents.
  • 2 B FIG. 12 is a cross-sectional view of exemplary charge trapping memory cells in NAND strings as an example of memory cells in FIG 2A represents.
  • 2C Figure 1 shows a cross-sectional view of the structure 2 B represents.
  • 2D represents an exemplary memory cell.
  • 3 12 is a perspective view of a memory device comprising a set of blocks in an exemplary 3D configuration of the memory array 1 having.
  • 4 Figure 14 is an exemplary cross-sectional view of a portion of one of the blocks 3 represents.
  • 5 a close-up view of an area of the stack 4 represents.
  • 6 Figure 1 shows an exemplary view of NAND chains in sub-blocks in a 3D configuration using 4 matches.
  • 7 provides additional detail of the sub-blocks SB0 to SB3 6 represents.
  • 8th Figure 12 illustrates a waveform of an example programming operation.
  • 9 a portion of memory cell MC 5 Figure 12 showing the injection of electrons into a charge trapping region under weak programming.
  • 10 Figure 12 illustrates a top view of a row of blocks according to one embodiment.
  • 11 Figure 12 is a diagram of program and verify pulses according to one embodiment.
  • 12 Figure 12 illustrates an embodiment of two blocks according to an embodiment.
  • 13 Figure 12 illustrates one embodiment of a method for concurrently programming cells of a memory array.
  • 14 Figure 12 illustrates another embodiment of a method for concurrently programming cells of a memory array.
  • 15A , 15B , 15C and 15D show Vt distributions for memory cells programmed to different numbers of bits per cell.
  • 16 Figure 12 is a flow diagram of one embodiment of a process for programming different sets of memory cells simultaneously.
  • 17 Figure 12 is a flow chart of one embodiment of a process for concurrently programming memory cells to NAND strings in different erase blocks.
  • 18 Figure 12 is a flowchart of one embodiment of the process of simultaneously programming memory cells in multiple erase blocks in a multi-level cell programming process.
  • 19 Figure 12 is a flow chart of one embodiment of the process for simultaneously programming memory cells in multiple erase blocks.
  • 20A and 20B Figure 12 are block diagrams of circuitry for providing voltages while simultaneously programming sets of memory cells.
  • 21 further illustrates how the circuits in the 20A and 20B electric with one conductive region connected to control gates of memory cells.
  • 22 Figure 12 is a flow chart of one embodiment of a process for providing voltages while programming.
  • 23 represents an example of a multi-stage charge pump.

DETAILLIERTE BESCHREIBUNGDETAILED DESCRIPTION

Hierin wird die Technologie zum gleichzeitigen Programmieren des gleichen Datenmusters in mehreren Sätzen nichtflüchtiger Speicherzellen offenbart. In einer Ausführungsform wird das gleiche Datenmuster gleichzeitig in drei oder mehr Sätzen nichtflüchtiger Speicherzellen programmiert. In einer Ausführungsform werden die Speicherzellen gleichzeitig auf ein Bit pro Zelle programmiert. In einer Ausführungsform werden die Speicherzellen gleichzeitig auf zwei Bits pro Zelle programmiert. In einer Ausführungsform werden die Speicherzellen gleichzeitig auf drei Bits pro Zelle programmiert. In einer Ausführungsform werden die Speicherzellen gleichzeitig auf vier Bits pro Zelle programmiert. In einer Ausführungsform werden die Speicherzellen gleichzeitig auf fünf Bits pro Zelle programmiert. Jeder Satz nichtflüchtiger Speicherzellen kann ein Teil eines unterschiedlichen Satzes von NAND-Ketten sein. In einer Ausführungsform sind die unterschiedliche Sätze von NAND-Ketten denselben Bitleitungen zugeordnet. Zum Beispiel können sich die NAND-Ketten in derselben Ebene befinden, die eine Anzahl von Bitleitungen enthält. Als ein Beispiel können n Kopien des Datenmusters gleichzeitig in „n“-Sätze von Speicherzellen programmiert werden, wobei n eine ganze Zahl größer als 1 ist.Disclosed herein is the technology for simultaneously programming the same data pattern in multiple sets of non-volatile memory cells. In one embodiment, the same data pattern is programmed into three or more sets of non-volatile memory cells simultaneously. In one embodiment, the memory cells are simultaneously programmed to one bit per cell. In one embodiment, the memory cells are simultaneously programmed to two bits per cell. In one embodiment, the memory cells are simultaneously programmed to three bits per cell. In one embodiment, the memory cells are simultaneously programmed to four bits per cell. In one embodiment, the memory cells are simultaneously programmed to five bits per cell. Each set of non-volatile memory cells can be part of a different set of NAND chains. In one embodiment, the different sets of NAND strings are associated with the same bit lines. For example, the NAND strings can be in the same plane that contains a number of bit lines. As an example, n copies of the data pattern can be programmed into "n" sets of memory cells, where n is an integer greater than 1, at one time.

In einer Ausführungsform wird das Datenmuster an die Bitleitungen angelegt, indem entweder eine Programmfreigabespannung oder eine Programmsperrspannung an jede jeweilige Bitleitung angelegt wird. In einer Ausführungsform wird eine Auswahlspannung an Drain-Auswahl-Gates von n Sätzen von NAND-Ketten angelegt, wobei n eine ganze Zahl größer als 1 ist. Infolgedessen ist jede ausgewählte Bitleitung mit n ausgewählten NAND-Ketten verbunden. Darüberhinaus ist jede ausgewählte Bitleitung mit einer unterschiedlichen NAND-Kette in jedem der n Sätze von NAND-Ketten verbunden. Das System legt gleichzeitig einen Programmimpuls an Steuer-Gates von n Sätzen von Speicherzellen an, während die ausgewählten Bitleitungen mit den jeweiligen n ausgewählten NAND-Ketten verbunden sind und die Programmfreigabespannung an die ausgewählten Bitleitungen angelegt wird, um das Datenmuster gleichzeitig in jeden der n Sätze der Speicherzellen zu programmieren. Zum Beispiel wird jeder der n Sätze der Speicherzellen gleichzeitig auf eine Schwellenspannungsverteilung programmiert, die einem Datenzustand zugeordnet ist.In one embodiment, the data pattern is applied to the bit lines by applying either a program enable voltage or a program disable voltage to each respective bit line. In one embodiment, a select voltage is applied to drain select gates of n sets of NAND strings, where n is an integer greater than 1. As a result, each selected bit line is connected to n selected NAND chains. In addition, each selected bit line is connected to a different NAND string in each of the n sets of NAND strings. The system simultaneously applies a program pulse to control gates of n sets of memory cells while the selected bit lines are connected to the respective n selected NAND strings and the program enable voltage is applied to the selected bit lines to simultaneously convert the data pattern into each of the n sets to program the memory cells. For example, each of the n sets of memory cells is simultaneously programmed to a threshold voltage distribution associated with a data state.

In einigen Ausführungsformen sind die Steuer-Gates jedes Satzes von Speicherzellen durch eine leitfähige Region verbunden. Jede dieser leitfähigen Regionen kann recht groß sein, wie etwa eine leitfähige Platte in einem dreidimensionalen NAND-Speicherarray. Daher kann es zu einer großen RC-Last kommen, die der leitfähigen Region zugeordnet ist. In einer Ausführungsform werden mehrere Spannungsgeneratoren verwendet, um eine gemeinsame Spannung für mehrere leitfähige Regionen während des gleichzeitigen Programmierens bereitzustellen. In einer Ausführungsform ermöglicht das System eine Anzahl von Spannungsgeneratoren, die auf der Anzahl der leitfähigen Regionen basiert, die während eines Programmiervorgangs, der gleichzeitig das gleiche Datenmuster in n Sätzen von Speicherzellen programmiert, welche die gleiche Spannungsgröße erhalten sollen. Dadurch werden die technischen Probleme der vorstehend erwähnten RC-Last gelöst.In some embodiments, the control gates of each set of memory cells are connected by a conductive region. Each of these conductive regions can be quite large, such as a conductive plate in a three-dimensional NAND memory array. Therefore, there can be a large RC load associated with the conductive region. In one embodiment, multiple voltage generators are used to provide a common voltage to multiple conductive regions during simultaneous programming. In one embodiment, the system allows for a number of voltage generators based on the number of conductive regions generated during a programming operation that simultaneously programs the same data pattern in n sets of memory cells that are to receive the same voltage magnitude. This solves the technical problems of the RC load mentioned above.

Gesichtspunkte der vorliegenden Offenbarung können als eine Einrichtung, ein System, Verfahren oder Computerprogramm ausgeführt sein. Gesichtspunkte der vorliegenden Offenbarung können die Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (einschließlich Firmware, residenter Software, Mikrocode, oder dergleichen) oder einer Software- und Hardwareaspekte kombinierenden Ausführungsform annehmen, die alle allgemein hierin als „Schaltung“, „Modul“, „Einrichtung“ oder „System“ bezeichnet werden können. Weiterhin können Gesichtspunkte der vorliegenden Offenbarung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren nicht-transitorischen computerlesbaren Speichermedien verkörpert ist, die einen computerlesbaren und/oder ausführbaren Programmcode speichern.Aspects of the present disclosure may be embodied as an apparatus, system, method, or computer program. Aspects of the present disclosure may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, microcode, or the like), or an embodiment combining software and hardware aspects, all of which are referred to generically herein as "circuit", " module”, “facility” or “system”. Furthermore, aspects of the present disclosure may take the form of a computer program product embodied in one or more non-transitory computer-readable storage media storing computer-readable and/or executable program code.

Viele der in dieser Patentschrift beschriebenen Hardwareeinheiten wurden als Schaltungen bezeichnet, um ihre Implementierungsunabhängigkeit besonders hervorzuheben. Eine Schaltung kann zum Beispiel eine kundenspezifische VLSI-Schaltung oder ein Gate-Array sein und ganz oder teilweise aus einem handelsüblichen Halbleiter wie einem Logikchip, Transistor oder einer anderen diskreten Komponente bestehen. Eine Schaltung kann auch in programmierbaren Hardwarevorrichtungen wie feldprogrammierbaren Gate-Arrays, programmierbarer Array-Logik, programmierbaren Logikvorrichtungen oder dergleichen implementiert sein. Vor allem dort, wo mehrere Schaltungen angegeben sind, können sie in einigen Fällen Hardwareelemente gemeinsam nutzen; somit können zwei verschiedene Schaltungen als ein einziger Hardwarekörper ausgeführt sein, der über Software oder unterschiedliche Hardwareelemente dafür eingerichtet ist, die angegebenen Funktionen der beiden Schaltungen auszuführen.Many of the hardware units described in this specification have been referred to as circuits to emphasize their implementation independence. For example, a circuit may be a custom VLSI circuit or gate array and may consist in whole or in part of an off-the-shelf semiconductor such as a logic chip, transistor, or other discrete component. Circuitry may also be implemented in programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices, or the like. Especially where multiple circuits are specified, they may in some cases share hardware elements; thus two different Circuits may be embodied as a single body of hardware configured via software or distinct hardware elements to perform the specified functions of the two circuits.

Computerprogrammcode zum Ausführen von Vorgängen für Aspekte der vorliegenden Offenbarung kann in jeder Kombination von einer oder mehreren Programmiersprachen geschrieben sein, einschließlich einer objektorientierten Programmiersprache, wie Python, Java, Smalltalk, C++, C#, Objective C oder dergleichen, herkömmlichen prozeduralen Programmiersprachen, Skriptprogrammiersprachen und/oder anderen ähnlichen 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.Computer program code for performing operations for aspects of the present disclosure may be written in any combination of one or more programming languages, including an object-oriented programming language such as Python, Java, Smalltalk, C++, C#, Objective C or the like, conventional procedural programming languages, scripting languages and/or or other similar programming languages. The program code may be executed in part or in full on a user's computer(s) and/or on a remote computer or server via a data network or the like.

Eine Komponente, wie hierin verwendet, ist eine konkrete, physische, nichttransitorische Vorrichtung. Zum Beispiel kann eine Komponente als eine Hardware-Logikschaltung mit kundenspezifischen VLSI-Schaltungen, Gate-Arrays oder anderen integrierten Schaltungen; 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, Dies, Die-Ebenen, Gehäuse) oder andere diskrete elektrische Vorrichtungen in elektrischer Kommunikation mit einer oder mehreren anderen Komponenten über elektrische Leitungen einer Schaltungsplatine (PCB) oder dergleichen einschließen. Jedes der hierin beschriebenen Module kann in bestimmten Ausführungsformen alternativ durch eine Komponente verkörpert oder implementiert sein.A component, as used herein, is a tangible, physical, non-transitory device. For example, a component can be implemented as a hardware logic circuit with custom VLSI circuits, gate arrays, or other integrated circuits; off-the-shelf semiconductors such as logic chips, transistors, or other discrete devices; and/or other mechanical or electrical devices. A component may also be implemented in programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices, or the like. A component may include one or more silicon-based integrated circuit devices (e.g., chips, dies, die-planes, packages) or other discrete electrical devices in electrical communication with one or more other components via electrical traces of a printed circuit board (PCB) or the like. Each of the modules described herein may alternatively be embodied or implemented by a component in certain embodiments.

Die Bezugnahme auf „eine Ausführungsform“, „Ausführungsform“, „ein Ausführungsbeispiel“ oder ähnlicher Sprachgebrauch in dieser Patentschrift bedeutet, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder Charakteristik, die in Verbindung mit der Ausführungsform beschrieben ist, in mindestens einer Ausführungsform der vorliegenden Offenbarung eingeschlossen ist. Daher können die Ausdrücke „in einer Ausführungsform“, „in der Ausführungsform“ und ähnlich gelagerter Sprachgebrauch in dieser Beschreibung, wo sie vorkommen, sich nicht notwendigerweise alle auf dieselbe Ausführungsform beziehen, sondern „eine oder mehrere, aber nicht alle Ausführungsformen“ bedeuten, sofern nicht ausdrücklich etwas anderes angegeben ist. Die Begriffe „einschließlich“, „aufweisend“, „haben“ und Variationen dessen bedeuten „einschließlich, aber nicht darauf beschränkt“, sofern nicht ausdrücklich etwas anderes angegeben ist. 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. Die Begriffe „ein/e/s“, und „der/die/das“ beziehen sich auch auf „eines oder mehrere“, sofern nicht ausdrücklich etwas anderes angegeben ist.Reference throughout this specification to “an embodiment,” “one embodiment,” “one embodiment,” or similar language means that a particular feature, structure, or characteristic described in connection with the embodiment is incorporated in at least one embodiment of the present invention revelation is included. Therefore, throughout this specification, the phrases "in one embodiment," "in the embodiment," and similar usage, where used, do not necessarily all refer to the same embodiment, but mean "one or more, but not all, embodiments," where applicable unless expressly stated otherwise. The terms "including," "comprising," "having," and variations thereof mean "including, but not limited to," unless expressly stated otherwise. An enumerated listing of items does not imply that any or all of the items are mutually exclusive and/or mutually inclusive unless expressly stated otherwise. The terms “a/s” and “the” also refer to “one or more” unless expressly stated otherwise.

Gesichtspunkte der vorliegenden Offenbarung werden unten unter Bezugnahme auf schematische Flussdiagramme und/oder schematische Blockdiagramme von Verfahren, Einrichtungen, 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 Recheneinrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor oder eine andere programmierbare Recheneinrichtung 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.Aspects of the present disclosure are described below with reference to schematic flowchart diagrams and/or schematic block diagrams of methods, devices, systems, and computer program products according to embodiments of the disclosure. It is understood that each block of the schematic flowchart and/or schematic block diagram, and combinations of blocks in the schematic flowchart and/or schematic block diagram, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a computer or other programmable computing device to produce a machine such that the instructions, executed via the processor or other programmable computing device, produce means for implementing the functions and/or steps contained in the schematic flow diagrams and/or schematic block diagrams block or blocks are specified.

Es sollte auch beachtet werden, 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 dargestellten 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.It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in sequence may actually be executed substantially simultaneously, or the blocks may sometimes be executed in the reverse order depending on the functionality involved. Other steps and methods that are equivalent in function, logic, or effect to one or more blocks, or portions thereof, of the illustrated figures may be devised. Although various arrow styles and line styles may be used in the flowchart and/or block diagrams, they should be understood not to limit the scope of the respective embodiments. For example, an arrow may indicate a waiting or monitoring period of unspecified duration between enumerated steps of the illustrated embodiment.

In der folgenden detaillierten Beschreibung wird 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.In the following detailed description, reference is made to the accompanying drawings, which form a part hereof. The foregoing summary is illustrative only and is not intended to be in any way limiting. In addition to the illustrative aspects, embodiments, and features described above, other aspects, embodiments, and features will become apparent by reference to the drawings and the following detailed description. The description of elements in each figure may refer to elements of consecutive figures. The same reference numbers may refer to the same elements in the figures, including alternative embodiments of the same elements.

1A ist ein Blockdiagramm einer Ausführungsform eines Systems 100 mit einer Komponente zum gleichzeitigen Programmieren 150 für eine nichtflüchtige Speichervorrichtung 120. Die Komponente zum gleichzeitigen Programmieren 150 kann Teil und/oder in Kommunikation mit einer nichtflüchtigen Speichermediensteuerung 126 (wie in 1A dargestellt), einem nichtflüchtigen Speicherelement 123, einem Vorrichtungstreiber oder dergleichen sein. Die Komponente zum gleichzeitigen Programmieren 150 kann in einem nichtflüchtigen Speichersystem 102 einer Rechenvorrichtung 110 arbeiten, die einen Prozessor 111, einen flüchtigen Speicher 112 und eine Netzwerkschnittstelle 113 einschließen kann. Der Prozessor 111 kann eine oder mehrere zentrale Verarbeitungseinheiten, einen oder mehrere Universalprozessoren, einen oder mehrere anwendungsspezifische Prozessoren, einen oder mehrere virtuelle Prozessoren (z. B. kann die Rechenvorrichtung 110 eine virtuelle Maschine sein, die in einem Host arbeitet), einen oder mehrere Prozessorkerne oder dergleichen einschließen. Die Netzwerkschnittstelle 113 kann eine oder mehrere Netzwerkschnittstellen einschließen, die dafür eingerichtet sind, die Rechenvorrichtung 110 und/oder die nichtflüchtige Speichermediensteuerung 126 kommunikativ mit einem Kommunikationsnetzwerk 115 wie einem Internetprotokoll-Netzwerk (IP-Netzwerk), einem Speicherbereichsnetzwerk (SAN), einem drahtlosen Netzwerk, einem drahtgebundenen Netzwerk oder dergleichen zu koppeln. 1A 1 is a block diagram of one embodiment of a system 100 having a concurrent programming component 150 for a non-volatile memory device 120. The concurrent programming component 150 may be part of and/or in communication with a non-volatile media controller 126 (as described in 1A shown), a non-volatile memory element 123, a device driver, or the like. The concurrent programming component 150 may operate in a non-volatile memory system 102 of a computing device 110 that may include a processor 111 , volatile memory 112 , and a network interface 113 . Processor 111 may be one or more central processing units, one or more general purpose processors, one or more application specific processors, one or more virtual processors (e.g., computing device 110 may be a virtual machine operating in a host), one or more Include processor cores or the like. Network interface 113 may include one or more network interfaces configured to enable computing device 110 and/or non-volatile storage media controller 126 to be communicative with a communications network 115, such as an Internet Protocol (IP) network, a storage area network (SAN), a wireless network , a wired network or the like to couple.

Die nicht-flüchtige Speichervorrichtung 120 kann in verschiedenen Ausführungsformen an einem oder mehreren unterschiedlichen Orten bezogen auf die Rechenvorrichtung 110 angeordnet sein. In einer Ausführungsform schließt die nichtflüchtige Speichervorrichtung 120 ein oder mehrere nichtflüchtige Speicherelemente 123 ein, wie Halbleiterchips oder Gehäuse oder andere Vorrichtungen mit integrierter Schaltung, die auf einer oder mehreren gedruckten Leiterplatten, Speichergehäusen und/oder anderen mechanischen und/oder elektrischen Trägerstrukturen angeordnet sind. Zum Beispiel kann die nichtflüchtige Speichervorrichtung 120 eine oder mehrere direkte Inline-Speichermodulkarten (Direct Inline Memory Module, DIMM), eine oder mehrere Erweiterungskarten und/oder Tochterkarten, ein Festkörperlaufwerk (Solid-State-Drive, SSD) oder eine andere Festplattenvorrichtung einschließen und/oder kann einen anderen Speicher- und/oder Speicherungsformfaktor haben. Die nichtflüchtige Speichervorrichtung 120 kann in einer Hauptplatine der Rechenvorrichtung 110 integriert und/oder darauf montiert sein, in einem Port und/oder Steckplatz der Rechenvorrichtung 110 installiert sein, auf einer anderen Rechenvorrichtung 110 und/oder einem dedizierten Speichergerät in dem Kommunikationsnetzwerk 115 installiert sein, mit der Rechenvorrichtung 110 über einen externen Bus (z. B. eine externe Festplatte) in Kommunikation sein oder dergleichen.The non-volatile storage device 120 may be located in one or more different locations relative to the computing device 110 in various embodiments. In one embodiment, non-volatile memory device 120 includes one or more non-volatile memory elements 123, such as semiconductor chips or packages or other integrated circuit devices, disposed on one or more printed circuit boards, memory packages, and/or other mechanical and/or electrical support structures. For example, the non-volatile storage device 120 may include one or more direct inline memory module (DIMM) cards, one or more add-in cards and/or daughter cards, a solid-state drive (SSD), or other hard-disk device and/or or may have a different memory and/or storage form factor. The non-volatile storage device 120 may be integrated into and/or mounted on a motherboard of the computing device 110, installed in a port and/or slot of the computing device 110, installed on another computing device 110 and/or a dedicated storage device in the communications network 115, be in communication with the computing device 110 via an external bus (e.g., an external hard drive), or the like.

Die nicht-flüchtige Speichervorrichtung 120 kann in einer Ausführungsform auf einem Speicherbus eines Prozessors 111 (z. B. auf demselben Speicherbus wie der flüchtige Speicher 112, auf einem anderen Speicherbus als der flüchtige Speicher 112, anstelle des flüchtigen Speichers 112 oder dergleichen) angeordnet sein. In einer weiteren Ausführungsform kann die nicht-flüchtige Speichervorrichtung 120 auf einem peripheren Bus der Rechenvorrichtung 110, wie einem Peripheral Component Interconnect Express-Bus (PCI Express oder PCle-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 nichtflüchtige Speichervorrichtung 120 in einem Kommunikationsnetzwerk 115 wie einem Ethernet-Netzwerk, einem Infiniband-Netzwerk, SCSI-RDMA über ein Kommunikationsnetzwerk 115, einem Speicherbereichsnetzwerk (Storage Area Network, SAN), einem lokalen Netzwerk (Local Area Network, LAN) einem Weitverkehrsnetzwerk (Wide Area Network, WAN) wie dem Internet, einem anderen drahtgebundenen und/oder drahtlosen Netzwerk oder dergleichen angeordnet sein.Non-volatile memory device 120 may, in one embodiment, be disposed on a memory bus of processor 111 (e.g., on the same memory bus as volatile memory 112, on a different memory bus than volatile memory 112, instead of volatile memory 112, or the like). . In another embodiment, the non-volatile storage device 120 on a peripheral bus of the computing device 110, such as a Peripheral Component Interconnect Express bus (PCI Express or PCIe bus), a Serial Advanced Technology Attachment bus (SATA bus), a Parallel Advanced Technology Attachment bus (PATA bus), Small Computer System Interface (SCSI) bus, FireWire bus, Fiber Channel connection, Universal Serial Bus (USB), PCIe Advanced Switching bus (PCIe-AS-Bus) or the like. In another embodiment, the non-volatile storage device 120 may be deployed on a communications network 115, such as an Ethernet network, an Infiniband network, SCSI-RDMA over a communications network 115, a storage area network (SAN), a local area network, LAN) a wide area network (WAN) such as the Internet, another wired and / or wireless network or the like.

Die Rechenvorrichtung 110 kann weiterhin ein nicht-transitorisches computerlesbares Speichermedium 114 einschließen. Das computerlesbare Speichermedium 114 kann ausführbare Anweisungen aufweisen, die dafür eingerichtet sind, zu bewirken, dass die Rechenvorrichtung 110 (z. B. Prozessor 111) Schritte von einem oder mehreren der hierin offenbarten Verfahren ausführt. Alternativ oder zusätzlich kann die Komponente zum gleichzeitigen Programmieren 150 als ein oder mehrere computerlesbare Anweisungen ausgeführt sein, die auf dem computerlesbaren Speichermedium 114 gespeichert sind.The computing device 110 may further include a non-transitory computer-readable storage medium 114 . Computer-readable storage medium 114 may include executable instructions configured to cause computing device 110 (e.g., processor 111) to perform steps of one or more of the methods disclosed herein. Alternatively or additionally, the component for the simultaneous Programming 150 may be embodied as one or more computer-readable instructions stored on computer-readable storage medium 114 .

Das nichtflüchtige Speichersystem 102 schließt in der dargestellten Ausführungsform eine Komponente zum gleichzeitigen Programmieren 150 ein. Wie noch weiter beschrieben wird, kann die Komponente zum gleichzeitigen Programmieren 150 dafür eingerichtet sein, eine Bitleitung für einen Satz nichtflüchtiger Speicherzellen, die im selben Block oder in zwei unterschiedlichen Blöcken angeordnet sind, elektrisch auszuwählen, separate Wortleitungen, die Speicherzellen entsprechen, elektrisch zu verbinden und einen Programmierimpuls an die verbundenen Wortleitungen anzulegen, um die Speicherzellen, die den einzelnen Wortleitungen entsprechen, gleichzeitig auf eine gemeinsame Zielschwellenspannung zu programmieren. Die Speicherzellen können sich wahlweise in zwei verschiedenen Blöcken befinden, die innerhalb des Speicherarrays physisch voneinander getrennt sein können, um die Wahrscheinlichkeit zu minimieren, dass ein in einer der Speicherzellen auftretender Fehler auch in der anderen Speicherzelle vorliegt. Wie hierin verwendet, schließt „elektrisch auswählen“ das Anlegen eines elektrischen Potentials ein, um einer Stromquelle den Transfer zu einer Komponente zu ermöglichen. In einem Beispiel schließt elektrisches Auswählen das Einstellen einer oder mehrerer Hardwarekomponenten ein, um die Bitleitung mit einer anderen Komponente zu verbinden.The non-volatile memory system 102 includes a concurrent programming component 150 in the illustrated embodiment. As will be further described, the simultaneous programming component 150 may be configured to electrically select a bit line for a set of non-volatile memory cells arranged in the same block or in two different blocks to electrically connect separate word lines corresponding to memory cells and applying a programming pulse to the connected word lines to simultaneously program the memory cells corresponding to each word line to a common target threshold voltage. The memory cells may optionally be in two different blocks, which may be physically separated within the memory array to minimize the likelihood that a fault occurring in one of the memory cells will also be present in the other memory cell. As used herein, "electrically selecting" includes applying an electrical potential to enable a power source to transfer to a component. In one example, electrically selecting includes adjusting one or more hardware components to connect the bitline to another component.

Die Komponente zum gleichzeitigen Programmieren 150 kann separate Zellen in separaten Blöcken gleichzeitig mit denselben Daten und auf eine gemeinsame Zielschwellenspannung programmieren. In einigen Ausführungsformen bietet gleichzeitiges Schreiben derselben Daten in separate Blöcke erhöhte Leistung, denn wenn ein Block die geschriebenen Daten nicht speichern kann, können die Daten aus dem anderen Block wiederhergestellt werden, ohne die Daten erneut von der nichtflüchtigen Speichermediensteuerung 126 anzufordern. Dadurch kann das System 100 schneller zu anderen Vorgängen übergehen, da weniger Anforderungen von der nichtflüchtigen Speichermediensteuerung 126 erforderlich sind.Simultaneous programming component 150 can program separate cells in separate blocks at the same time with the same data and to a common target threshold voltage. In some embodiments, writing the same data to separate blocks concurrently provides increased performance because if one block fails to store the written data, the data can be recovered from the other block without requesting the data from non-volatile media controller 126 again. This allows the system 100 to transition to other operations more quickly because fewer requests from the non-volatile storage media controller 126 are required.

Ferner kann in einigen Ausführungsformen ein Zellverdichtungsvorgang, der zwei Kopien derselben Daten verwendet, dieselben Daten in den separaten Blöcken verwenden, ohne dass die nichtflüchtige Speichermediensteuerung 126 separat eine weitere Kopie der Daten schreiben muss. Dies vereinfacht die Vorgänge, die von der nichtflüchtigen Speichermediensteuerung 126 ausgeführt werden, die an der MLC-, TLC-, QLC-Programmierung oder dergleichen beteiligt ist.Furthermore, in some embodiments, a cell compression operation that uses two copies of the same data can use the same data in the separate blocks without requiring the non-volatile storage media controller 126 to separately write another copy of the data. This simplifies the operations performed by the non-volatile storage media controller 126 involved in MLC, TLC, QLC programming, or the like.

In einem Ausführungsbeispiel schreibt die Komponente zum gleichzeitigen Programmieren 150 dieselben Daten in Blöcke, die sich in physisch getrennten Bereichen befinden. Die einzelnen Bereiche können durch Abstand, eine Anzahl von Blöcken zwischen den gewählten Blöcken und/oder dergleichen definiert sein. Wie für Fachleute ersichtlich sein kann, kann ein Array von NAND-Zellen an bestimmten physischen Orten oder Bereichen ausfallen. Das Schreiben derselben Daten in physisch entfernte Bereiche des NAN D-Arrays bietet einen erhöhten Schutz vor Ausfall, denn wenn ein bestimmter Abschnitt des NAND-Arrays ausfällt, bleibt eine zweite Kopie der an einem anderen physischen Ort vorhandenen Daten wahrscheinlich unbeeinträchtigt. Wie hierin beschrieben, kostet dieser Vorteil bei einigen Ausführungsformen keine zusätzlichen Vorgänge, weil die Komponente zum gleichzeitigen Programmieren 150 beide Kopien derselben Daten gleichzeitig schreibt (z. B. kostet das Schreiben derselben Daten in die zweite Zelle im Vergleich zum Schreiben der Daten in die erste Zelle nicht mehr Zeit).In one embodiment, concurrent programming component 150 writes the same data into blocks located in physically separate areas. The individual areas can be defined by distance, a number of blocks between the selected blocks and/or the like. As can be appreciated by those skilled in the art, an array of NAND cells can fail in certain physical locations or areas. Writing the same data to physically remote areas of the NAND array provides increased protection against failure because if a particular section of the NAND array fails, a second copy of the data located in a different physical location is likely to remain unaffected. As described herein, in some embodiments, this benefit does not cost additional operations because the concurrent programming component 150 writes both copies of the same data at the same time (e.g., writing the same data to the second cell costs compared to writing the data to the first cell no more time).

In einem anderen Ausführungsbeispiel schreibt die Komponente zum gleichzeitigen Programmieren 150 dieselben Daten in zwei separate Zellen in derselben Kette. Das gleichzeitige Programmieren mehrerer Zellen in einer Kette auf eine gemeinsame Zielschwellenspannung kann ähnliche Vorteile bieten wie das Schreiben in separate Blöcke. Zusätzlich zu den zuvor beschriebenen Vorteilen kann das gleichzeitige Programmieren von zwei aufeinanderfolgenden Zellen in einer Kette auf eine gemeinsame Zielschwellenspannung elektrische Interferenz reduzieren, weil die beiden Wortleitungen, die den gleichen programmierten Zellen entsprechen, gleichzeitig dieselbe Vorspannung erhalten. Ferner wird die Kapazität von Wortleitung zu Wortleitung in diesem Szenario verringert. Die Komponente zum gleichzeitigen Programmieren 150 kann dieselben Daten in Zellen in der Kette an unterschiedlichen Orten schreiben, um eine physische Trennung zu erreichen, wie zuvor im Zusammenhang mit dem gleichzeitigen Schreiben in separate Blöcke beschrieben.In another embodiment, the concurrent programming component 150 writes the same data into two separate cells in the same chain. Simultaneously programming multiple cells in a chain to a common target threshold voltage can provide benefits similar to writing to separate blocks. In addition to the advantages previously described, simultaneously programming two consecutive cells in a chain to a common target threshold voltage can reduce electrical interference because the two word lines corresponding to the same programmed cells are biased at the same time. Furthermore, the word line to word line capacitance is reduced in this scenario. Simultaneous programming component 150 may write the same data to cells in the chain at different locations to achieve physical separation, as previously described in connection with writing to separate blocks simultaneously.

In einem anderen Ausführungsbeispiel kann die Komponente zum gleichzeitigen Programmieren 150 nach dem Verifizieren, dass eine erste Zelle korrekt programmiert wurde, die Daten in der zweiten Zelle verwerfen. Die Komponente zum gleichzeitigen Programmieren 150 kann dies erreichen, indem sie die zweite Zelle löscht, die zweite Zelle zur Wiederverwendung kennzeichnet oder die zweite Zelle mit anderen Daten überschreibt. Zusätzlich oder alternativ können die Daten in beiden Zellen bis zur Verwendung aufbewahrt werden, zum Beispiel für einen Zellverdichtungsvorgang, bei dem die Daten mit anderen Daten kombiniert und in einer mehrstufigen Zelle (MLC) oder dergleichen (z. B. TLC, QLC usw.) gespeichert werden.In another embodiment, after verifying that a first cell was programmed correctly, the concurrent programming component 150 may discard the data in the second cell. Simultaneous programming component 150 may accomplish this by erasing the second cell, marking the second cell for reuse, or overwriting the second cell with different data. Additionally or alternatively, the data may be retained in both cells until used, for example for a cell aggregation operation in which the data is combined with other data and in a multi-level cell (MLC) or the like (e.g. TLC, QLC, etc.).

In einigen Ausführungsformen kann ein SLC-TLC-Verdichtungsvorgang (ein Beispiel für einen Zellverdichtungsvorgang) verwendet werden, nachdem die Daten für eine mehrstufige Zelle (MLC) wie eine dreistufige Zelle (TLC) temporär in einer Reihe von SLC-Zellen gespeichert wurden. In einigen Ausführungsformen können drei Paare von SLC-Zellen verwendet werden, um die Daten für die TLC zu speichern, wobei jedes Paar identische Versionen der Daten für ein einzelnes Bit speichert, das zu Datenredundanzzwecken in der TLC zu speichern ist. Bei SLC-TLC-Verdichtung können die Daten von mindestens einer SLC-Zelle aus jedem der drei Paare von SLC-Zellen gelesen und in ein Bit innerhalb der TLC codiert werden, sodass drei Bits in der TLC codiert sind. Die in der TLC codierten Bits können wahlweise mit denen der drei SLC-Paare verglichen werden, um zu bestätigen, dass die TLC richtig programmiert wurde. Sobald die TLC richtig programmiert wurde, können die SLC gelöscht werden. Dieselben SLC-Zellen können dann als Puffer zur TLC-Programmierung mit integrierter temporärer Datenredundanz verwendet werden.In some embodiments, an SLC-TLC compression process (an example of a cell compression process) may be used after the data for a multi-level cell (MLC), such as a tri-level cell (TLC), has been temporarily stored in a series of SLC cells. In some embodiments, three pairs of SLC cells may be used to store the data for the TLC, with each pair storing identical versions of the data for a single bit to be stored in the TLC for data redundancy purposes. With SLC-TLC compression, the data of at least one SLC cell can be read from each of the three pairs of SLC cells and encoded into one bit within the TLC, such that three bits are encoded in the TLC. Optionally, the bits encoded in the TLC can be compared to those of the three SLC pairs to confirm that the TLC was programmed correctly. Once the TLC has been properly programmed, the SLC can be erased. The same SLC cells can then be used as a buffer for TLC programming with built-in temporary data redundancy.

Nach der Zellverdichtung können die erste und zweite Zelle beide gelöscht werden. Ein neuer Programmiervorgang kann verwendet werden, um die Zellen mit neuen Daten zu programmieren, z. B. zur Verwendung in einem anderen SLC-TLC-Verdichtungsvorgang. Die Kombination aus dem Löschen von Daten aus den Zellen und Programmieren der Zellen mit neuen Daten (oder die Entscheidung, die Zellen nicht zu programmieren, wenn die neuen zu speichernden Daten ein Beibehalten der Zellen im gelöschten oder unprogrammierten Zustand implizieren) wird als „Überschreiben“ des Inhalts der Zellen bezeichnet.After cell compression, the first and second cell can both be deleted. A new programming operation can be used to program the cells with new data, e.g. B. for use in another SLC-TLC compression process. The combination of erasing data from the cells and programming the cells with new data (or choosing not to program the cells if the new data to be stored implies leaving the cells in the erased or unprogrammed state) is called "overwriting". of the content of the cells.

Wie hierin verwendet, weist ein „Block“ einen Satz Wortleitungen auf, wobei jede Wortleitung mit einem Satz Speicherzellen verbunden ist. In einem Ausführungsbeispiel weist ein „Block“ einen Abschnitt eines Arrays von Speicherzellen (z. B. nichtflüchtige Speicherelemente) auf, wobei die Speicherzellen so verbunden sind, dass alle Speicherzellen in dem Block in einem einzigen Vorgang gelöscht werden können. Fachleute werden erkennen, dass ein Block die kleinste Einheit von Speicherzellen ist, die unter Verwendung eines einzelnen Speicher-/Speicherlöschbefehls gelöscht werden kann, und bei bestimmten Ausführungsformen als „Löschblöcke“ bezeichnet werden kann. In bestimmten Ausführungsformen schließt ein „Block“ einen Satz Ketten nichtflüchtiger Speicherelemente ein.As used herein, a "block" includes a set of wordlines, with each wordline connected to a set of memory cells. In one embodiment, a "block" comprises a portion of an array of memory cells (e.g., non-volatile memory elements) where the memory cells are connected such that all of the memory cells in the block can be erased in a single operation. Those skilled in the art will appreciate that a block is the smallest unit of memory cells that can be erased using a single memory/memory erase command and may be referred to as "erase blocks" in certain embodiments. In certain embodiments, a "block" includes a set of chains of non-volatile memory elements.

Wie hierin verwendet, weist eine „NAND-Kette“ einen Satz NAND-Speicherzellen auf, die elektrisch über einen NAND-Kanal in Reihe mit einer Bitleitung verbunden sind. Ein „NAND-Kanal“ schließt eine elektrische Verbindung ein, die Speicherzellen in einer NAND-Kette mit ihren jeweiligen Bitleitungen und Source-Leitungen verbindet (z. B. 5: Kanal 665). Das Steuer-Gate einer Speicherzelle auf einer NAND-Kette kann mit einer leitfähigen Region verbunden sein, um zu ermöglichen, dass Spannungen an das Steuer-Gate angelegt werden. Wie hierin verwendet, schließt eine „Bitleitung“ eine Leitung aus leitfähigem Material ein, die mit einer Spannungsquelle verbindbar und mit den Enden von NAND-Ketten (z. B. über Kanäle) verbindbar ist. In einem Beispiel schließt ein Block 64 Ketten ein, und an jede der 64 Ketten kann eine separate Bitleitung angeschlossen werden. In einem anderen Beispiel durchquert eine Bitleitung viele Blöcke und ist mit entsprechenden Ketten in jedem Block verbindbar.As used herein, a "NAND string" includes a set of NAND memory cells electrically connected in series to a bit line via a NAND channel. A "NAND channel" includes an electrical connection that connects memory cells in a NAND string to their respective bit lines and source lines (e.g. 5 : channel 665). The control gate of a memory cell on a NAND string may be connected to a conductive region to allow voltages to be applied to the control gate. As used herein, a "bit line" includes a line of conductive material that is connectable to a voltage source and connectable (e.g., via channels) to the ends of NAND strings. In one example, a block includes 64 strings, and a separate bit line may be connected to each of the 64 strings. In another example, a bitline traverses many blocks and is connectable to corresponding strings in each block.

Wie hierin verwendet, weist „kreuzen“ zwei Komponenten (z. B. Wortleitungen, Bitleitungen, Speicherzellen usw.) auf, die physisch so angeordnet sind, dass sie einander elektrisch beeinflussen können. Eine Wortleitung, die eine Speicherzelle kreuzt, bedeutet, dass die Wortleitung elektrisch mit der Speicherzelle verbunden ist, sodass das Anlegen eines Programmierimpulses an die Wortleitung die Speicherzelle programmiert.As used herein, "cross" includes two components (e.g., word lines, bit lines, memory cells, etc.) that are physically arranged so that they can electrically affect each other. A wordline crossing a memory cell means that the wordline is electrically connected to the memory cell, so applying a programming pulse to the wordline programs the memory cell.

Wie hierin verwendet, schließt „elektrisch verbindbar“ zwei Komponenten (z. B. Wortleitungen, Bitleitungen, Speicherzellen usw.) ein, die dafür eingerichtet und/oder positioniert sind, leicht miteinander verbunden werden zu können, damit elektrischer Strom zwischen ihnen fließen kann. Elektrische Verbindbarkeit kann das Verwenden einer sekundären Komponente zum Verbinden der elektrisch verbindbaren Komponenten beinhalten. In einem Beispiel kann ein Gate-Transistor dafür eingestellt sein, eine Wortleitung elektrisch mit einer Spannungsquelle zu verbinden. Somit sind die Wortleitung und die Spannungsquelle elektrisch miteinander verbindbar, doch nicht elektrisch miteinander verbunden, es sei denn, dass der Gate-Transistor sie miteinander verbindet.As used herein, "electrically connectable" includes two components (e.g., word lines, bit lines, memory cells, etc.) that are configured and/or positioned to be readily connected together to allow electrical current to flow between them. Electrical connectivity may include using a secondary component to connect the electrically connectable components. In one example, a gate transistor may be configured to electrically connect a wordline to a voltage source. Thus, the word line and the voltage source are electrically connectable to each other, but are not electrically connected to each other unless the gate transistor connects them together.

Wie hierin verwendet, bedeutet „gleichzeitig programmieren“, „gleichzeitiges Programmieren“, „gleichzeitiges Anlegen eines Programm- (ier-) Impulses“ oder dergleichen, dass ein Programmierimpuls im Wesentlichen gleichzeitig an zwei oder mehr separate Speicherzellen angelegt wird. „Im Wesentlichen gleichzeitig“ bedeutet, dass die zwei oder mehr Zellen vom gleichen Programmierimpuls programmiert werden, obwohl die Speicherzellen den Programmierimpuls aufgrund physischer Positionen oder des elektrischen Abstands möglicherweise nicht genau gleichzeitig erhalten. In einem Beispiel kann es vorkommen, dass aufgrund eines physischen Abstands zu einer Quelle für den Programmierimpuls eine erste Speicherzelle den Programmierimpuls vor einer zweiten Speicherzelle empfängt. In einem anderen Ausführungsbeispiel empfangen die zwei oder mehr Speicherzellen den Programmierimpuls gleichzeitig, doch eine erste Speicherzelle wird erfolgreich vor einer zweiten Speicherzelle programmiert. Ferner bedeutet gleichzeitiges Programmieren mehrerer Speicherzellen auf eine gemeinsame Zielschwellenspannung, dass eine gemeinsame Spannung im Wesentlichen gleichzeitig an jede der Speicherzellen angelegt wird. Wie für Fachleute ersichtlich sein kann, muss dies natürlich nicht bedeuten, dass die Speicherzellen durch denselben Impuls erfolgreich auf eine Zielschwellenspannung programmiert werden.As used herein, "simultaneously program", "simultaneously program", "simultaneously apply a program (ier) pulse", or the like means that a programming pulse is applied to two or more separate memory cells substantially simultaneously. "Substantially simultaneously" means that the two or more cells are programmed by the same programming pulse, although the memory cells may not receive the programming pulse at exactly the same time due to physical locations or electrical spacing. In one example, due to physical distance from a source for the Pro grammierimpuls a first memory cell receives the programming pulse before a second memory cell. In another embodiment, the two or more memory cells receive the programming pulse simultaneously, but a first memory cell is successfully programmed before a second memory cell. Furthermore, simultaneously programming multiple memory cells to a common target threshold voltage means that a common voltage is applied to each of the memory cells substantially simultaneously. Of course, as can be appreciated by those skilled in the art, this need not mean that the memory cells will be successfully programmed to a target threshold voltage by the same pulse.

In einer Ausführungsform kann die Komponente zum gleichzeitigen Programmieren 150 Logikhardware einer oder mehrerer nichtflüchtiger Speichervorrichtungen 120 einschließen wie eine nichtflüchtige Speichermediensteuerung 126, ein nichtflüchtiges Speicherelement 123, eine Vorrichtungssteuerung, ein feldprogrammierbares Gate-Array (FPGA) oder andere programmierbare Logik, Firmware für ein FPGA oder eine andere programmierbare Logik, Mikrocode zur Ausführung auf einem Mikrocontroller, eine anwendungsspezifische integrierte Schaltung (ASIC) oder dergleichen. In einer anderen Ausführungsform kann die Komponente zum gleichzeitigen Programmieren 150 ausführbaren Softwarecode einschließen wie einen Vorrichtungstreiber oder dergleichen, der auf dem computerlesbaren Speichermedium 114 zur Ausführung auf dem Prozessor 111 gespeichert ist. In einer weiteren Ausführungsform kann die Komponente zum gleichzeitigen Programmieren 150 eine Kombination von sowohl ausführbarem Softwarecode als auch Logikhardware einschließen.In one embodiment, the component for simultaneously programming 150 may include logic hardware of one or more non-volatile memory devices 120, such as a non-volatile media controller 126, a non-volatile memory element 123, a device controller, a field-programmable gate array (FPGA) or other programmable logic, firmware for an FPGA, or other programmable logic, microcode for execution on a microcontroller, an application specific integrated circuit (ASIC), or the like. In another embodiment, concurrent programming component 150 may include executable software code, such as a device driver or the like, stored on computer-readable storage medium 114 for execution on processor 111 . In another embodiment, the concurrent programming component 150 may include a combination of both executable software code and logic hardware.

In einer Ausführungsform ist die Komponente zum gleichzeitigen Programmieren 150 dafür eingerichtet, Speicheranforderungen von einem Vorrichtungstreiber oder einer anderen ausführbaren Anwendung über einen Bus 125 oder dergleichen zu empfangen. Die Komponente zum gleichzeitigen Programmieren 150 kann weiterhin dafür eingerichtet sein, Daten zu/von einem Vorrichtungstreiber und/oder Speicher-Clients 116 über den Bus 125 zu übertragen. Dementsprechend kann die Komponente zum gleichzeitigen Programmieren 150 bei einigen Ausführungsformen ein oder mehrere Direktzugriffsspeichermodule (DMA-Module), entfernte DMA-Module, Bussteuerungen, Brücken, Puffer usw. einschließen und/oder damit in Kommunikation sein, um die Übertragung von Speicheranforderungen und zugeordneten Daten zu ermöglichen. In einer anderen Ausführungsform kann die Komponente zum gleichzeitigen Programmieren 150 Speicheranforderungen als API-Aufruf von einem Speicher-Client 116, als IO-CTL-Befehl oder dergleichen empfangen.In one embodiment, the concurrent programming component 150 is configured to receive memory requests from a device driver or other executable application via a bus 125 or the like. The concurrent programming component 150 may further be configured to transfer data to/from a device driver and/or memory clients 116 via the bus 125 . Accordingly, in some embodiments, concurrent programming component 150 may include and/or be in communication with one or more direct access memory (DMA) modules, remote DMA modules, bus controllers, bridges, buffers, etc. to facilitate the transfer of memory requests and associated data to allow. In another embodiment, the concurrent programming component 150 may receive memory requests as an API call from a memory client 116, as an IO CTL command, or the like.

Gemäß verschiedener Ausführungsformen kann eine nichtflüchtige Speichermediensteuerung 126 in Kommunikation mit einer oder mehreren Programmsequenzierungskomponenten 140 eine oder mehrere nichtflüchtige Speichervorrichtungen 120 und/oder nichtflüchtige Speicherelemente 123 verwalten. Die nichtflüchtigen Speichervorrichtung(en) 120 können Aufzeichnungs-, Speicher- und/oder Speicherungsvorrichtungen einschließen wie Festkörperspeichervorrichtung(en) und/oder Halbleiterspeichervorrichtung(en), die als mehrere adressierbare Medienspeicherorten angeordnet und/oder partitioniert sind. Wie hierin verwendet bezieht sich ein Medienspeicherort auf jede physische Einheit eines Speichers (z. B. jede Menge an physischen Speichermedien auf einer nicht-flüchtigen Speichervorrichtung 120). Speichereinheiten können unter anderem Folgendes einschließen: Seiten, Speicherbereiche, Blöcke, Sektoren, Sammlungen oder Sätze von physischen Speicherorten (z. B. logische Seiten, logische Blöcke) oder dergleichen.According to various embodiments, a non-volatile storage media controller 126 in communication with one or more program sequencing components 140 may manage one or more non-volatile storage devices 120 and/or non-volatile storage elements 123 . The non-volatile memory device(s) 120 may include recording, storage, and/or storage devices, such as solid-state memory device(s) and/or semiconductor memory device(s), arranged and/or partitioned as multiple addressable media storage locations. As used herein, a media location refers to any physical unit of storage (e.g., any amount of physical storage media on a non-volatile storage device 120). Storage units may include, but are not limited to, pages, extents, blocks, sectors, collections or sets of physical storage locations (e.g., logical pages, logical blocks), or the like.

Ein Vorrichtungstreiber und/oder die Steuerung 126 des nichtflüchtigen Speichermediums können in bestimmten Ausführungsformen einen logischen Adressraum 134 für die Speicher-Clients 116 darstellen. Wie hierin verwendet, bezieht sich ein logischer Adressraum 134 auf eine logische Repräsentation von Speicherressourcen. Der logische Adressraum 134 kann mehrere logische Adressen (z. B. Bereich) 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.A device driver and/or non-volatile storage medium controller 126 may present a logical address space 134 to storage clients 116 in certain embodiments. As used herein, a logical address space 134 refers to a logical representation of memory resources. The logical address space 134 may include multiple logical addresses (e.g., range). As used herein, a logical address refers to any identifier for referencing a storage resource (e.g., data), including but not limited to: a logical block address (LBA), a cylinder/head/sector (Cylinder/Head /Sector, CHS) address, a file name, an object identifier, a globally unique identifier (GUID), a hash code, a signature, an index entry, a region, a scope, or the like.

Ein Vorrichtungstreiber für die nicht-flüchtige Speichervorrichtung 120 kann Metadaten 135, wie eine Logisch-zu-Physisch-Adressabbildungsstruktur, unterhalten, um logische Adressen des logischen Adressraums 134 in Medienspeicherorten auf den/die nicht-flüchtige(n) Speichervorrichtung(en) 120 abzubilden. Ein Vorrichtungstreiber kann dazu eingerichtet sein, Speicherdienste für einen oder mehrere Speicher-Clients 116 bereitzustellen. Die Speicher-Clients 116 können lokale Speicher-Clients, die auf der Rechenvorrichtung 110 arbeiten, und/oder Remote-Speicher-Clients 116, die über das Kommunikationsnetzwerk 115 und/oder die Netzwerkschnittstelle 113 zugänglich sind, einschließen. Die Speicher-Clients 116 können einschließen, ohne jedoch darauf beschränkt zu sein: Betriebssysteme, Dateisysteme, Datenbankanwendungen, Serveranwendungen, Prozesse auf Kernel-Ebene, Benutzerebenenprozesse, Anwendungen und dergleichen.A device driver for the non-volatile storage device 120 may maintain metadata 135, such as a logical-to-physical address mapping structure, to map logical addresses of the logical address space 134 into media storage locations on the non-volatile storage device(s) 120 . A device driver may be configured to provide storage services to one or more storage clients 116 . Storage clients 116 may include local storage clients operating on computing device 110 and/or remote storage clients 116 accessible via communications network 115 and/or network interface 113. The storage clients 116 may include, but not being limited to: operating systems, file systems, database applications, server applications, kernel-level processes, user-level processes, applications, and the like.

Ein Vorrichtungstreiber kann kommunikativ mit einer oder mehreren nicht-flüchtigen Speichervorrichtungen 120 gekoppelt sein. Die eine oder mehreren nicht-flüchtigen Speichervorrichtungen 120 können unterschiedliche Typen von nicht-flüchtigen Speichervorrichtungen einschließen, einschließlich unter anderem Folgendem: Festkörperspeichervorrichtungen, Halbleiterspeichervorrichtungen, SAN-Speicherressourcen oder dergleichen. Die eine oder die mehreren nichtflüchtigen Speichervorrichtungen 120 können eine oder mehrere entsprechende nichtflüchtige Speichermediensteuerungen 126 und nichtflüchtige Speichermedien 122 einschließen. Ein Vorrichtungstreiber kann Zugriff auf die eine oder die mehreren nicht-flüchtigen Speichervorrichtungen 120 über eine herkömmliche Block-E/A-Schnittstelle 131 bereitstellen. Zusätzlich kann ein Vorrichtungstreiber Zugriff auf eine verbesserte Funktionalität über die SCM-Schnittstelle 132 bereitstellen. Die Metadaten 135 können zum Verwalten und/oder Verfolgen von Datenvorgängen verwendet werden, die durch eine von der Block-E/A-Schnittstelle 131, SCM-Schnittstelle 132, Cache-Schnittstelle 133 oder andere verwandte Schnittstellen ausgeführt werden.A device driver may be communicatively coupled to one or more non-volatile memory devices 120 . The one or more non-volatile storage devices 120 may include different types of non-volatile storage devices, including but not limited to: solid state storage devices, solid state storage devices, SAN storage resources, or the like. The one or more non-volatile storage devices 120 may include one or more corresponding non-volatile storage media controllers 126 and non-volatile storage media 122 . A device driver may provide access to the one or more non-volatile memory devices 120 via a conventional block I/O interface 131 . In addition, a device driver can provide access to enhanced functionality via the SCM interface 132 . Metadata 135 may be used to manage and/or track data operations performed by any of block I/O interface 131, SCM interface 132, cache interface 133, or other related interfaces.

Die Cache-Schnittstelle 133 kann Cache-spezifische Merkmale freilegen, auf die über einen Vorrichtungstreiber für die nicht-flüchtige Speichervorrichtung 120 zugegriffen werden kann. Auch stellt in einigen Ausführungsformen die SCM-Schnittstelle 132, die den Speicher-Clients 116 präsentiert wird, Zugriff auf Datentransformationen bereit, die durch die eine oder die mehreren nichtflüchtigen Speichervorrichtungen 120 und/oder die einen oder die mehreren Steuerungen 126 nichtflüchtiger Speichermedien implementiert werden.Cache interface 133 may expose cache specific features that may be accessed via a device driver for non-volatile memory device 120 . Also, in some embodiments, the SCM interface 132 presented to the storage clients 116 provides access to data transformations implemented by the one or more non-volatile storage devices 120 and/or the one or more non-volatile storage media controllers 126 .

Ein Vorrichtungstreiber kann den Speicher-Clients 116 einen logischen Adressraum 134 über eine oder mehrere Schnittstellen präsentieren. Wie vorstehend erörtert, kann der logische Adressraum 134 eine Vielzahl logischer Adressen einschließen, die jeweils Medienorten der einen oder der mehreren nichtflüchtigen Speichervorrichtungen 120 entsprechen. Ein Vorrichtungstreiber kann Metadaten 135 verwalten einschließlich beliebiger Zuordnungen zwischen logischen Adressen und Medienorten oder dergleichen.A device driver may present a logical address space 134 to storage clients 116 via one or more interfaces. As discussed above, the logical address space 134 may include a plurality of logical addresses that each correspond to media locations of the one or more non-volatile storage devices 120 . A device driver may manage metadata 135 including any associations between logical addresses and media locations or the like.

Ein Vorrichtungstreiber kann weiterhin eine Schnittstelle einer nichtflüchtigen Speichervorrichtung 139 einschließen, die zum Übertragen von Daten, Befehlen und/oder Anforderungen zu der einen oder den mehreren nichtflüchtigen Speichervorrichtungen 120 über einen Bus 125 eingerichtet ist, was einschließen kann, ohne jedoch darauf beschränkt zu sein: einen Speicherbus eines Prozessors 111, einen PCI Express- oder PCle-Bus (Peripheral Component Interconnect Express), einen seriellen ATA-Bus (Advanced Technology Attachment), einen parallelen ATA-Bus, eine SCSI-Schnittstelle (Small Computer System Interface), Fire Wire, Fibre Channel, einen Universal Serial Bus (USB), einen PCIe-AS-Bus (PCIe Advanced Switching), ein Kommunikationsnetzwerk 115, Infiniband, SCSI-RDMA oder dergleichen. Die Schnittstelle einer nicht-flüchtigen Speichervorrichtung 139 kann mit der einen oder mehreren nicht-flüchtigen Speichervorrichtungen 120 unter Verwendung von Eingabe-Ausgabe-Steuerbefehlen (EA-CTL), EA-CTL-Befehlserweiterung(en), direktem Remote-Speicherzugriff oder dergleichen kommunizieren.A device driver may further include a non-volatile memory device interface 139 configured to transmit data, commands, and/or requests to the one or more non-volatile memory devices 120 via a bus 125, which may include, but is not limited to: a memory bus of a processor 111, a PCI Express or PCIe bus (Peripheral Component Interconnect Express), a serial ATA bus (Advanced Technology Attachment), a parallel ATA bus, a SCSI interface (Small Computer System Interface), Fire Wire, Fiber Channel, a Universal Serial Bus (USB), a PCIe-AS-Bus (PCIe Advanced Switching), a communication network 115, Infiniband, SCSI-RDMA or the like. The interface of a non-volatile storage device 139 may communicate with the one or more non-volatile storage devices 120 using input-output control commands (EA-CTL), EA-CTL command extension(s), direct remote memory access, or the like.

Die Netzwerkschnittstelle 113 kann eine oder mehrere Netzwerkschnittstellen einschließen, die dafür eingerichtet sind, die Rechenvorrichtung 110 und/oder die nichtflüchtige Speichermediensteuerung 126 kommunikativ mit einem Kommunikationsnetzwerk 115 und/oder mit einem oder mehreren entfernten, netzzugänglichen Speicher-Clients 116 zu koppeln. Die Speicher-Clients 116 können lokale Speicher-Clients, die auf der Rechenvorrichtung 110 arbeiten, und/oder entfernte Speicher-Clients 116, die über das Kommunikationsnetzwerk 115 und/oder die Netzwerkschnittstelle 113 zugänglich sind, einschließen. Die nichtflüchtige Speichermediensteuerung 126 ist Teil und/oder in Kommunikation mit einer oder mehreren nichtflüchtigen Speichervorrichtungen 120. Obwohl 1A eine einzelne nichtflüchtige Speichervorrichtung 120 darstellt, ist die Offenbarung nicht darauf beschränkt und kann angepasst werden, um eine beliebige Anzahl nichtflüchtiger Speichervorrichtungen 120 aufzunehmen.Network interface 113 may include one or more network interfaces configured to communicatively couple computing device 110 and/or non-volatile storage media controller 126 to a communications network 115 and/or to one or more remote network-accessible storage clients 116 . Storage clients 116 may include local storage clients operating on computing device 110 and/or remote storage clients 116 accessible via communications network 115 and/or network interface 113. Non-volatile storage media controller 126 is part of and/or in communication with one or more non-volatile storage devices 120. Although 1A Although FIG. 1 illustrates a single non-volatile memory device 120, the disclosure is not so limited and may be adapted to accommodate any number of non-volatile memory devices 120. FIG.

Die nichtflüchtige Speichervorrichtung 120 kann ein oder mehrere nichtflüchtige Speicherelemente 123 nichtflüchtiger Speichermedien 122 einschließen, die einschließen können, ohne jedoch darauf beschränkt zu sein: ReRAM, Memristorspeicher, programmierbarer Metallisierungszellenspeicher, Phasenwechselspeicher (PCM, PCME, PRAM, PCRAM, Ovonic Unified Memory, Chalcogenid-RAM oder C-RAM), NAND-Flashspeicher (z. B. 2D-NAND-Flashspeicher, 3D-NAND-Flashspeicher), NOR-Flash-Speicher, Nano-Direktzugriffsspeicher (Nano-RAM oder NRAM), drahtbasierter Nanokristallspeicher, Siliziumoxid-basierter Sub-10-Nanometer-Prozessspeicher, Graphenspeicher, Silizium-Oxid-Nitrid-Oxid-Silizium (SONOS), programmierbare Metallisierungszelle (PMC), leitungsüberbrückender RAM (CBRAM), magnetoresistiver RAM (MRAM), magnetische Speichermedien (z. B. Festplatte, Band), optische Speichermedien und/oder dergleichen. Das eine oder die mehreren nichtflüchtigen Speicherelemente 123 nichtflüchtiger Speichermedien 122 schließen in bestimmten Ausführungsformen Speicherklassenspeicher (Storage Class Memory, SCM) ein. Beispiele hierin beziehen sich auf einen NAND-Speicher oder insbesondere einen SLC-NAND-Speicher; doch die hierin bereitgestellten Systeme und Verfahren können auch auf andere Speichertypen angewendet werden, einschließlich der oben aufgeführten, ohne jedoch darauf beschränkt zu sein.The non-volatile memory device 120 may include one or more non-volatile memory elements 123 of non-volatile memory media 122, which may include but not be limited to: ReRAM, memristor memory, programmable metallization cell memory, phase change memory (PCM, PCME, PRAM, PCRAM, ovonic unified memory, chalcogenide RAM or C-RAM), NAND flash memory (eg, 2D NAND flash memory, 3D NAND flash memory), NOR flash memory, nano-random access memory (Nano-RAM or NRAM), wire-based nano-crystal memory, silicon oxide based sub-10 nanometer process memory, graphene memory, silicon oxide nitride oxide silicon (SONOS), programmable metallization cell (PMC), line-bridging RAM (CBRAM), magnetoresistive RAM (MRAM), magnetic storage media (e.g. hard disk). , tape), optical storage media and/or the like. The one or more non-volatile storage elements 123 of non-volatile storage media 122 include, in certain embodiments, storage class memory (SCM). Examples herein relate to a NAND memory, or in particular an SLC NAND memory; however, the systems and methods provided herein may be applied to other types of memory, including but not limited to those listed above.

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 ein oder mehrere nichtflüchtige Speicherelemente 123 von ReRAM, Memristorspeicher, programmierbarem Metallisierungszellenspeicher, Phasenwechselspeicher, Nano-RAM, drahtbasiertem Nanokristallspeicher, Siliziumoxidbasiertem Sub-10-Nanometer-Prozessspeicher, Graphenspeicher, SONOS-Speicher, MANOS-Speicher, PMC-Speicher, CBRAM, MRAM und/oder Variationen davon einschließen.While legacy technologies such as NAND flash may be block and/or page addressable, in one embodiment, memory class memory is byte addressable. In other embodiments, memory-class memory may be faster and/or have longer endurance (e.g., endurance) than NAND flash; may be lower cost, use less power, and/or have higher storage density than DRAM; or provide one or more other advantages or improvements over other technologies. For example, the memory class memory may be one or more non-volatile memory elements 123 of ReRAM, memristor memory, programmable metallization cell memory, phase change memory, nano-RAM, wire-based nanocrystal memory, silicon oxide-based sub-10 nanometer process memory, graphene memory, SONOS memory, MANOS memory, PMC memory , CBRAM, MRAM and/or variations thereof.

Während das nichtflüchtige Speichermedium 122 hierin als „Speichermedium“ bezeichnet wird, kann das nichtflüchtige Speichermedium 122 in verschiedenen Ausführungsformen allgemeiner ein oder mehrere nichtflüchtige Aufzeichnungsmedien einschließen, die in der Lage sind, Daten aufzuzeichnen, die als nichtflüchtiges Speichermedium, nichtflüchtiges Speicherungsmedium oder dergleichen bezeichnet werden können. Ferner kann die nichtflüchtige Speichervorrichtung 120 in verschiedenen Ausführungsformen eine nichtflüchtige Aufzeichnungsvorrichtung, eine nichtflüchtige Speichervorrichtung, eine nichtflüchtige Speicherungsvorrichtung oder dergleichen einschließen.While non-volatile storage medium 122 is referred to herein as a "storage medium," in various embodiments, non-volatile storage medium 122 may more generally include one or more non-volatile recording media capable of recording data that may be referred to as non-volatile storage medium, non-volatile storage medium, or the like . Further, in various embodiments, the non-volatile memory device 120 may include a non-volatile recording device, a non-volatile memory device, a non-volatile storage device, or the like.

Das nichtflüchtige Speichermedium 122 kann ein oder mehrere nichtflüchtige Speicherelemente 123 einschließen, die Chips, Gehäuse, Ebenen, Dies oder dergleichen einschließen können, ohne jedoch darauf beschränkt zu sein. Eine nichtflüchtige Speichermediensteuerung 126 kann dafür eingerichtet sein, Datenvorgänge auf dem nichtflüchtigen Speichermedium 122 zu verwalten, und kann einen oder mehrere Prozessoren, programmierbare Prozessoren (z. B. FPGAs), ASICs, Mikrocontroller oder dergleichen einschließen. In einigen Ausführungsformen ist die Steuerung 126 des nichtflüchtigen Speichermediums dazu eingerichtet, Daten zu speichern und/oder Daten aus dem nichtflüchtigen Speichermedium 122 zu lesen, Daten zu/von der nichtflüchtigen Speichervorrichtung 120 zu übertragen und so weiter.The non-volatile storage medium 122 may include one or more non-volatile storage elements 123, which may include, but is not limited to, chips, packages, planes, dies, or the like. A non-volatile storage media controller 126 may be configured to manage data operations on the non-volatile storage media 122 and may include one or more processors, programmable processors (e.g., FPGAs), ASICs, microcontrollers, or the like. In some embodiments, the non-volatile storage medium controller 126 is configured to store data and/or read data from the non-volatile storage medium 122, transfer data to/from the non-volatile storage device 120, and so on.

Die Steuerung 126 des nichtflüchtigen Speichermediums kann kommunikativ mit dem nichtflüchtigen Speichermedium 122 über einen Bus 127 gekoppelt sein. Der Bus 127 kann einen E/A-Bus zum Kommunizieren von Daten zu/von den nichtflüchtigen Speicherelementen 123 einschließen. Der Bus 127 kann weiterhin einen Steuerbus zum Kommunizieren von Adressier- und anderen Befehls- und Steuerinformationen zu den nichtflüchtigen Speicherelementen 123 einschließen. In einigen Ausführungsformen kann der Bus 127 die nichtflüchtigen Speicherelemente 123 kommunikativ parallel mit der Steuerung 126 eines nichtflüchtigen Speichermediums koppeln. Dieser parallele Zugriff kann ermöglichen, dass die nicht-flüchtigen Speicherelemente 123 als eine Gruppe verwaltet werden, wodurch ein logisches Speicherelement 129 gebildet wird. Das logische Speicherelement kann in entsprechende logische Speichereinheiten (z. B. logische Seiten) und/oder logische Speicherbereiche (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.The non-volatile storage medium controller 126 may be communicatively coupled to the non-volatile storage medium 122 via a bus 127 . Bus 127 may include an I/O bus for communicating data to/from non-volatile memory elements 123 . Bus 127 may further include a control bus for communicating addressing and other command and control information to non-volatile memory elements 123 . In some embodiments, bus 127 may communicatively couple non-volatile storage elements 123 in parallel with non-volatile storage medium controller 126 . This parallel access may allow the non-volatile storage elements 123 to be managed as a group, thereby forming a logical storage element 129 . The logical storage element may be divided into corresponding logical storage units (e.g. logical pages) and/or logical storage areas (e.g. logical blocks). The logical storage units may be formed by logically combining physical storage units from each of the non-volatile storage elements.

Die nichtflüchtige Speichermediensteuerung 126 kann einen Block von Wortleitungen innerhalb eines nichtflüchtigen Speicherelements 123 in bestimmten Ausführungsformen unter Verwendung von Adressen der Wortleitungen so organisieren, dass die Wortleitungen logisch in einer monoton ansteigenden Sequenz organisiert sind (z. B. Decodieren und/oder Übersetzen von Adressen für Wortleitungen in eine monoton ansteigende Sequenz oder dergleichen). In einer weiteren Ausführungsform können Wortleitungen eines Blocks innerhalb eines nichtflüchtigen Speicherelements 123 physisch in einer monoton ansteigenden Sequenz von Wortleitungsadressen angeordnet sein, wobei nacheinander adressierte Wortleitungen ebenfalls physisch aneinander angrenzen (z. B. WL0, WL1, WL2, ... WLN).Non-volatile storage media controller 126 may organize a block of word lines within non-volatile storage element 123 in certain embodiments using addresses of the word lines such that the word lines are logically organized in a monotonically increasing sequence (e.g., decoding and/or translating addresses for word lines in a monotonically increasing sequence or the like). In another embodiment, word lines of a block within a non-volatile memory element 123 may be physically arranged in a monotonically increasing sequence of word line addresses, where sequentially addressed word lines are also physically adjacent (e.g., WL0, WL1, WL2, ...WLN).

Die nichtflüchtige Speichermediensteuerung 126 kann einen Vorrichtungstreiber einschließen und/oder mit diesem in Verbindung stehen, der auf der Rechenvorrichtung 110 ausgeführt wird. Ein Vorrichtungstreiber kann über eine oder mehrere Schnittstellen 131, 132 und/oder 133 Speicherdienste für die Speicher-Clients 116 bereitstellen. In einigen Ausführungsformen stellt ein Vorrichtungstreiber eine Block-E/A-Schnittstelle 131 oder Vorrichtungsschnittstelle bereit, durch die Speicher-Clients 116 E/A-Vorgänge auf Blockebene ausführen. Alternativ oder zusätzlich kann ein Vorrichtungstreiber eine Speicherklassenspeicher-(SCM) Schnittstelle 132 bereitstellen, die andere Speicherdienste für die Speicher-Clients 116 bereitstellen kann. In einigen Ausführungsformen kann die SCM-Schnittstelle 132 Erweiterungen zu der Block-E/A-Schnittstelle 131 einschließen (z. B. können Speicher-Clients 116 auf die SCM-Schnittstelle 132 über Erweiterungen oder Ergänzungen zu der Block-E/A-Schnittstelle 131 zugreifen). Alternativ oder zusätzlich kann die SCM-Schnittstelle 132 als separate API, Dienst und/oder Bibliothek bereitgestellt werden. Ein Vorrichtungstreiber kann weiterhin so eingerichtet sein, dass er eine Cache-Schnittstelle 133 zum Zwischenspeichern von Daten unter Verwendung des nicht-flüchtigen Speichersystems 102 bereitstellt.Non-volatile storage media controller 126 may include and/or be associated with a device driver executing on computing device 110 . A device driver may provide storage services to storage clients 116 via one or more interfaces 131, 132, and/or 133. In some embodiments, a device driver provides a block I/O interface 131, or device interface, through the storage clients 116 perform block-level I/O operations. Alternatively or additionally, a device driver may provide a storage class storage (SCM) interface 132 that may provide storage clients 116 with other storage services. In some embodiments, SCM interface 132 may include extensions to block I/O interface 131 (e.g., storage clients 116 may access SCM interface 132 via extensions or additions to block I/O interface 131 access). Alternatively or additionally, the SCM interface 132 may be provided as a separate API, service, and/or library. A device driver may further be configured to provide a cache interface 133 for caching data using the non-volatile memory system 102 .

Ein Vorrichtungstreiber kann weiterhin eine nichtflüchtige Speichervorrichtungsschnittstelle 139 einschließen, die dafür eingerichtet ist, Daten, Befehle und/oder Abfragen an die nichtflüchtige Speichermediensteuerung 126 über einen Bus 125 zu übertragen, wie oben beschrieben.A device driver may further include a non-volatile storage device interface 139 configured to transfer data, commands, and/or queries to the non-volatile storage media controller 126 via a bus 125, as described above.

1B veranschaulicht eine Ausführungsform einer nichtflüchtigen Speichervorrichtung 210, die einen oder mehrere Speicher-Dies 212 oder Chips einschließen kann. Speicher-Die 212 schließt in einigen Ausführungsformen ein Speicherarray 200 (zweidimensional oder dreidimensional) von Speicherzellen, Die-Steuerung 220 und Lese-/Schreibschaltungen 230A/230B ein. In einer Ausführungsform ist der Zugriff auf das SpeicherArray 200 durch die verschiedenen peripheren Schaltungen auf eine symmetrische Weise auf gegenüberliegenden Seiten des Arrays implementiert, sodass die Dichten von Zugriffsleitungen und Schaltungen auf jeder Seite um die Hälfte reduziert sind. Die Lese-/Schreibschaltungen 230A/230B schließen in einer weiteren Ausführungsform mehrere Leseblöcke 250 ein, die ermöglichen, dass eine Seite von Speicherzellen parallel gelesen oder programmiert wird. 1B 12 illustrates one embodiment of a non-volatile memory device 210 that may include one or more memory dies 212 or chips. Memory die 212 includes, in some embodiments, a memory array 200 (two-dimensional or three-dimensional) of memory cells, die controller 220, and read/write circuitry 230A/230B. In one embodiment, access to the memory array 200 by the various peripheral circuits is implemented in a symmetrical manner on opposite sides of the array such that access line and circuit densities on each side are reduced by half. The read/write circuits 230A/230B, in another embodiment, include multiple read blocks 250 that allow a page of memory cells to be read or programmed in parallel.

Das Speicherarray 200 ist in verschiedenen Ausführungsformen durch Wortleitungen über Zeilendecoder 240A/240B und durch Bitleitungen über Spaltendecoder 242A/242B adressierbar. In einigen Ausführungsformen ist ein Steuerung 244 in derselben nichtflüchtigen Speichervorrichtung 210 (z. B. einer entfernbaren Speicherkarte oder einem Gehäuse) wie dem einen oder den mehreren Speicher-Dies 212 eingeschlossen. Befehle und Daten werden zwischen dem Host und der Steuerung 244 über Leitungen 232 und zwischen der Steuerung und dem einen oder den mehreren Speicherrohchips 212 über Leitungen 234 übertragen. Eine Implementierung kann mehrere Speicher-Dies 212 einschließen.Memory array 200 is addressable by word lines via row decoders 240A/240B and by bit lines via column decoders 242A/242B in various embodiments. In some embodiments, a controller 244 is included in the same non-volatile storage device 210 (e.g., a removable memory card or enclosure) as the one or more storage dies 212 . Commands and data are communicated between the host and the controller 244 over lines 232 and between the controller and the one or more memory dies 212 over lines 234 . An implementation may include multiple memory dies 212 .

Die Die-Steuerung 220 kann einen Die mit dem Speicherarray 200 gemeinsam verwenden, sodass die Die-Steuerung 220 eine „On-Die“-Steuerung bildet. Die Die-Steuerung 220 kann jede auf dem Fachgebiet bekannte Form aufweisen einschließlich Mikroprozessoren, Mikrocontrollereinheiten (MCUs), Finite-State-Maschinen (FSMs), Zentraleinheiten (CPUs), Grafikprozessoren (GPUs) und dergleichen, ohne jedoch darauf beschränkt zu sein; eine „On-Die-Steuerung“ oder eine „Steuerung“ können sich beide auf beliebige davon beziehen.Die controller 220 may share a die with memory array 200 such that die controller 220 forms an "on-die" controller. Die controller 220 may take any form known in the art, including but not limited to microprocessors, microcontroller units (MCUs), finite state machines (FSMs), central processing units (CPUs), graphics processing units (GPUs), and the like; an "on-die control" or a "control" may both refer to any of them.

Die Die-Steuerung 220 arbeitet in einer Ausführungsform mit den Lese/Schreib-Schaltungen 230A/230B zusammen, um Speichervorgänge auf dem Speicherarray 200 durchzuführen. Die Die-Steuerung 220 schließt in bestimmten Ausführungsformen eine Komponente zum gleichzeitigen Programmieren 150, eine Zustandsmaschine 222 und einen On-Chip-Adressdecoder 224 ein. In einer Ausführungsform bildet die Zustandsmaschine 222 einen Abschnitt der Komponente zum gleichzeitigen Programmieren 150. In einer weiteren Ausführungsform bildet die Steuerung 244 einen Abschnitt der Komponente zum gleichzeitigen Programmieren 150. Die Steuerung 244 kann wahlweise auf einem oder mehreren des Speicher-Dies 212 positioniert sein oder sich auf einem vom Speicher-Die 212 getrennten Die befinden.Die controller 220 cooperates with read/write circuitry 230A/230B to perform memory operations on memory array 200 in one embodiment. The die controller 220 includes a concurrent programming component 150 , a state machine 222 , and an on-chip address decoder 224 in certain embodiments. In one embodiment, state machine 222 forms a portion of concurrent programming component 150. In another embodiment, controller 244 forms a portion of concurrent programming component 150. Controller 244 may optionally be located on one or more of memory die 212 or reside on a separate die from memory die 212.

In einigen Ausführungsformen kann jedes der Speicherarrays 200 ein einstufiges SLC-NAND-Array (Single-Level Cell) sein, in dem jedes der nichtflüchtigen Speicherelemente 123 oder „nichtflüchtigen Speicherzellen“ durch Anlegen eines Programmierimpulses an die Zelle programmierbar ist. Jedes der Speicherarrays 200 kann weiterhin mit einem einzelnen Impuls programmierbar sein, wodurch Geschwindigkeiten erreicht werden, die sich der theoretischen Grenze für die NAND-Programmierung nähern. Nach Stand der Technik kann jedes der nichtflüchtigen Speicherelemente 123 ein elektrisch isolierendes Element wie eine Gate-Oxidschicht oder Tunneloxidschicht aufweisen, wodurch Elektronen selektiv beweglich sind, und das eine Gate-Funktion bereitstellt, indem es ermöglicht, die Zellen mit einer Ladung zu programmieren und die Ladung beizubehalten, mit der sie programmiert sind. Ein „isolierendes Element“ oder eine „isolierende Schicht“ kann jede Struktur einschließen, die dafür eingerichtet ist, dass elektrische Ladung selektiv in eine nichtflüchtige Speicherzelle eintreten und/oder diese verlassen kann.In some embodiments, each of the memory arrays 200 may be a single-level cell (SLC) NAND array in which each of the non-volatile memory elements 123, or "non-volatile memory cells," is programmable by applying a programming pulse to the cell. Each of the memory arrays 200 can also be programmed with a single pulse, achieving speeds approaching the theoretical limit for NAND programming. According to the prior art, each of the non-volatile memory elements 123 may comprise an electrically insulating element such as a gate oxide layer or tunnel oxide layer, whereby electrons are selectively movable, and which provides a gate function by allowing the cells to be programmed with a charge and the maintain the charge with which they are programmed. An “insulating element” or “insulating layer” may include any structure configured to allow electrical charge to selectively enter and/or exit a non-volatile memory cell.

Der Ausdruck „Programmierimpuls“ oder „Programmipuls“ bezieht sich auf einen elektrischen Impuls, der an die nichtflüchtigen Speicherelemente 123 angelegt wird, was die nichtflüchtigen Speicherelemente 123 veranlasst, in einen programmierten Zustand einzutreten oder sich diesem zu nähern. Dabei kann es sich um einen Spitzenspannungswert, eine Effektivspannung, eine Durchschnittsspannung eines Impulses, einen Spannungswert eines bestimmten Impulses in einer Impulsfolge und/oder dergleichen handeln. In einem anderen Ausführungsbeispiel schließt ein Programmierimpuls das Anlegen eines Stroms einschließlich eines Spitzenstroms, eines Effektivstromwerts, eines Durchschnittsstroms eines Impulses, einer bestimmten Stromfolge und/oder dergleichen ein. Der „Programmierimpuls“ ist nicht auf NAND-Speicher beschränkt, sondern kann an jeden nichtflüchtigen Speicher angelegt werden, der durch Anlegen eines elektrischen Potentials programmiert wird. Somit können Programmiereinstellungen wie der Programmierimpuls durch Verwenden der Systeme und Verfahren der vorliegenden Offenbarung in nichtflüchtigen Speichertypen angepasst werden, einschließlich der im Abschnitt zum Hintergrund oben aufgeführten nichtflüchtigen Speichertypen, ohne jedoch darauf beschränkt zu sein.The term "programming pulse" or "programming pulse" refers to an electrical pulse applied to the non-volatile memory elements 123 that causes the non-volatile memory elements 123 to enter or approach a programmed state. This may be a peak voltage value, an RMS voltage, an average voltage of a pulse, a voltage value of a specific pulse in a pulse train, and/or the like. In another embodiment, a programming pulse involves the application of a current including a peak current, an RMS current value, an average current of a pulse, a particular current sequence, and/or the like. The "programming pulse" is not limited to NAND memory, but can be applied to any non-volatile memory that is programmed by applying an electrical potential. Thus, programming settings such as the programming pulse may be adjusted using the systems and methods of the present disclosure in non-volatile memory types, including but not limited to the non-volatile memory types listed in the background section above.

Der Ausdruck „Verifizierimpuls“ schließt einen elektrischen Impuls ein, der an ein nichtflüchtiges Speicherelement 123 (z. B. eine Speicherzelle) angelegt wird, wobei der Stromfluss angibt, ob die Speicherzelle ausreichend programmiert wurde. Ein Verifizierimpuls kann für verschiedene Speicherzellen gleich sein oder auch nicht.The term "verify pulse" includes an electrical pulse applied to a non-volatile memory element 123 (e.g., a memory cell), where the flow of current indicates whether the memory cell has been sufficiently programmed. A verify pulse may or may not be the same for different memory cells.

In ähnlicher Weise können verschiedene „Abtasteinstellungen“ verwendet werden, um den Inhalt eines oder mehrerer nichtflüchtiger Speicherelemente 123 des Speicherarrays 200 abzutasten. Der Begriff „Abtasten“ bezieht sich nicht nur auf nichtflüchtige Speicherstrukturen mit Zellen, die elektrische Ladung halten, sondern auch auf nichtflüchtige Speichertypen, in denen ein anderer Speichermechanismus verwendet wird. Zum Beispiel wird bei einigen nichtflüchtigen Speichertypen eine Spannung und/oder ein Strom zum Abtasten des Widerstandswerts der Zelle (und nicht der gespeicherten Ladung) verwendet. Bei anderen nichtflüchtigen Speichertypen wird Stromfluss durch die Zelle erkannt; ein Strompegel über oder unter einem bestimmten Schwellenwert kann darauf hinweisen, dass eine Zelle programmiert ist. Wenn der Inhalt einzelner Zellen zu ermitteln ist, kann dies als „Lesen“ der Zellen bezeichnet werden. Jedoch kann „Abtasten“ des Inhalts eines nichtflüchtigen Speicherarrays auch das Lesen des Inhalts einzelner Zellen oder das Erkennen individueller oder gemeinsamer Eigenschaften der Zellen einschließen, z. B. ob die Spannung oder der Widerstand der Zellen über oder unter einem vorgegebenen Schwellenwert liegt.Similarly, different "sampling settings" can be used to sample the contents of one or more non-volatile storage elements 123 of memory array 200 . The term "sensing" refers not only to non-volatile memory structures with cells that hold electrical charge, but also to non-volatile memory types that use a different storage mechanism. For example, some types of non-volatile memory use a voltage and/or current to sense the resistance of the cell (rather than the stored charge). With other non-volatile memory types, current flow through the cell is detected; a current level above or below a certain threshold may indicate that a cell is programmed. If the contents of individual cells are to be determined, this can be referred to as "reading" the cells. However, "sensing" the contents of a non-volatile memory array may also include reading the contents of individual cells or detecting individual or common characteristics of the cells, e.g. B. whether the voltage or resistance of the cells is above or below a predetermined threshold.

In einigen Ausführungsformen kann das Ändern der Programmiereinstellungen einschließen, die an die nichtflüchtigen Speicherelemente 123 angelegte Programmierspannung ein- oder mehrmals während der Betriebsdauer des nichtflüchtigen Speicherbauelements 120 zu verringern, um die Nutzungsdauer der nichtflüchtigen Speichervorrichtung 120 zu verlängern und die Wahrscheinlichkeit fehlerhafter Datenlesungen durch Überprogrammierung der Zellen zu verringern.In some embodiments, changing the programming settings may include reducing the programming voltage applied to the non-volatile memory elements 123 one or more times during the operational life of the non-volatile memory device 120 to extend the useful life of the non-volatile memory device 120 and reduce the likelihood of erroneous data reads due to over-programming of the cells to reduce.

Die Zustandsmaschine 222 stellt in einer Ausführungsform eine Steuerung von Speichervorgängen auf Chip-Ebene bereit. Der On-Chip-Adressdecoder 224 stellt eine Adressschnittstelle bereit, um die Adresse, die von dem Host oder einer Speichersteuerung verwendet wird, in die Hardwareadresse umzuwandeln, die von den Decodern 240A, 240B, 242A, 242B verwendet wird. In bestimmten Ausführungsformen schließt die Zustandsmaschine 222 eine Ausführungsform der Komponente zum gleichzeitigen Programmieren 150 ein.State machine 222, in one embodiment, provides chip-level control of memory operations. The on-chip address decoder 224 provides an address interface to convert the address used by the host or a memory controller to the hardware address used by the decoders 240A, 240B, 242A, 242B. In certain embodiments, state machine 222 includes an embodiment of concurrent programming component 150 .

In einer Ausführungsform können Die-Steuerung 220, Komponente zum gleichzeitigen Programmieren 150, On-Chip-Adressdecoder 224, Zustandsmaschine 222, Decoder242A, Decoder 242B, Decoder240A, Decoder 240B, Lese-/Schreibschaltungen 230A, Lese-/Schreibschaltungen 230B und/oder Steuerung 244 einzeln oder in beliebiger Kombination als eine oder mehrere Verwaltungsschaltungen bezeichnet werden. In einem Ausführungsbeispiel schließt die Die-Steuerung 220 eins von einer Auswahlschaltung 282, einer Programmschaltung 284 und einer Verifizierschaltung 286 ein.In one embodiment, die controller 220, concurrent programming component 150, on-chip address decoder 224, state machine 222, decoder 242A, decoder 242B, decoder 240A, decoder 240B, read/write circuitry 230A, read/write circuitry 230B, and/or controller 244 may be referred to individually or in any combination as one or more management circuits. In one embodiment, the die controller 220 includes one of a select circuit 282, a program circuit 284, and a verify circuit 286. FIG.

In einem anderen Ausführungsbeispiel (in 1B nicht dargestellt) sind die Auswahlschaltung 282, die Programmierschaltung 284 und die Verifizierschaltung 286 als Teil der Steuerung 244 implementiert. In einem weiteren Ausführungsbeispiel weist die Die-Steuerung 220 eine oder mehrere der Schaltungen 282, 284, 286 auf und weist die Steuerung 244 eine oder mehrere der Schaltungen 282, 284, 286 auf. Daher ist es nicht erforderlich, dass die verschiedenen Schaltungen 282, 284, 286 entweder auf der Die-Steuerung 220 oder der Steuerung 244 implementiert sind.In another embodiment (in 1B not shown), the selection circuit 282, the programming circuit 284 and the verification circuit 286 are implemented as part of the controller 244. In another embodiment, die controller 220 includes one or more of circuits 282,284,286 and controller 244 includes one or more of circuits 282,284,286. Therefore, the various circuits 282, 284, 286 are not required to be implemented on either the die controller 220 or the controller 244.

Die Auswahlschaltung 282 kann dafür eingerichtet sein, einen ersten Satz Speicherzellen im ersten Löschblock und einen zweiten Satz Speicherzellen im zweiten Löschblock elektrisch auszuwählen. In einem Beispiel ist die nichtflüchtige Speichermediensteuerung 126 dafür eingestellt, Daten in einen ersten Löschblock und in eine gegebene Tiefe von Speicherzellen (z. B. die oberste Zeile von Speicherzellen in dem Block oder eine andere Zeile) zu schreiben. Die Komponente zum gleichzeitigen Programmieren 150 stellt in einem anderen Ausführungsbeispiel einen Satz Auswahl-Gate-Transistoren ein, um Bitleitungen für Ketten zu verbinden, die die Speicherzellen einschließen, und eine Programmierimpulsquelle mit Wortleitungen zu verbinden, die den Speicherzellen entsprechen. Ferner kann die Auswahlschaltung 282 in ähnlicher Weise Wortleitungen in einem zweiten Löschblock mit der Spannungsquelle verbinden, sodass beim Anlegen der Spannungsquelle die Spannung gleichzeitig sowohl an die erste Wortleitung im ersten Löschblock als auch an die zweite Wortleitung im zweiten Löschblock angelegt wird. In einem speziellen Beispiel stellt die Auswahlschaltung 282 einen oder mehrere Auswahl-Gate-Transistoren ein, um Wortleitungen mit Source-Auswahl-Gates und Drain-Auswahl-Gates zu verbinden.The selection circuit 282 may be configured to electrically select a first set of memory cells in the first erase block and a second set of memory cells in the second erase block. In one example, non-volatile storage media controller 126 is set to write data to a first erase block and to a given depth of memory cells (e.g., the top row of memory cells in the block or another row). Simultaneous programming component 150, in another embodiment, sets up a set of select gate transistors to connect bit lines for strings enclosing the memory cells and a programming pulse source to word lines enclosing the memory cells correspond to memory cells. Also, the selection circuit 282 may similarly connect word lines in a second erase block to the voltage source so that when the voltage source is applied, the voltage is simultaneously applied to both the first word line in the first erase block and the second word line in the second erase block. In a specific example, select circuit 282 sets one or more select gate transistors to connect word lines to source select gates and drain select gates.

In bestimmten Ausführungsformen wählt die Auswahlschaltung 282 Wortleitungen entsprechend derselben Zeile im ersten Löschblock mit derselben Zeile im zweiten Löschblock. Dies ist jedoch nicht notwendigerweise der Fall, da die Auswahlschaltung 282 eine beliebige Wortleitung in dem Block wählen kann.In certain embodiments, selection circuit 282 selects word lines corresponding to the same row in the first erase block with the same row in the second erase block. However, this is not necessarily the case since the selection circuit 282 can select any word line in the block.

In einem anderen Ausführungsbeispiel ist die Programmierschaltung 284 dafür eingerichtet, einen Programmierimpuls mit einer erhöhten Spannung an Speicherzellen der ersten Wortleitung und Speicherzellen der zweiten Wortleitung anzulegen, um gleichzeitig dieselben Daten in einem einzelnen Impuls in die Speicherzellen im ersten Löschblock und die Speicherzellen im zweiten Löschblock zu schreiben. In einigen Ausführungsbeispielen sind die erste Wortleitung und die zweite Wortleitung separate Wortleitungen an unterschiedlichen physischen Orten. In anderen Ausführungsbeispielen sind die erste Wortleitung und die zweite Wortleitung dieselbe physische Wortleitung. In einem Beispiel können der erste Löschblock und der zweite Löschblock benachbarte Löschblöcke aufweisen und dieselbe physische Wortleitung gemeinsam nutzen, während die Speicherzellen, die gleichzeitig programmiert werden, unterschiedliche Speicherkanäle haben.In another embodiment, the programming circuit 284 is configured to apply a programming pulse with an increased voltage to memory cells of the first word line and memory cells of the second word line in order to simultaneously write the same data in a single pulse to the memory cells in the first erase block and the memory cells in the second erase block write. In some embodiments, the first wordline and the second wordline are separate wordlines in different physical locations. In other embodiments, the first wordline and the second wordline are the same physical wordline. In one example, the first erase block and the second erase block may have adjacent erase blocks and share the same physical word line, while the memory cells being programmed simultaneously have different memory channels.

In einem anderen Ausführungsbeispiel ist die Programmierschaltung 284 eingerichtet, um Speicherzellen in drei oder mehr Löschblöcken gleichzeitig zu programmieren. In einer Ausführungsform ist die Programmierschaltung 284 eingerichtet, einen Programmierimpuls mit einer erhöhten Spannung an Speicherzellen, die mit einer ersten Wortleitung in einem ersten Löschblock verbunden sind, an Speicherzellen, die mit einer zweiten Wortleitung in einem zweiten Löschblock verbunden sind, und an Speicherzellen, die mit einer dritten Wortleitung in einem dritten Löschblock verbunden sind, anzulegen, um gleichzeitig dieselben Daten in einem einzigen Impuls in die Speicherzellen im ersten Löschblock, die Speicherzellen im zweiten Löschblock und die Speicherzellen im dritten Löschblock zu schreiben. In einer anderen beispielhaften Ausführungsform ist die Programmierschaltung 284 eingerichtet, um Speicherzellen in vier Löschblöcken gleichzeitig zu programmieren.In another embodiment, programming circuitry 284 is configured to program memory cells in three or more erase blocks simultaneously. In one embodiment, the programming circuit 284 is configured to apply a programming pulse with an increased voltage to memory cells connected to a first word line in a first erase block, to memory cells connected to a second word line in a second erase block, and to memory cells that connected to a third word line in a third erase block to simultaneously write the same data in a single pulse to the memory cells in the first erase block, the memory cells in the second erase block and the memory cells in the third erase block. In another example embodiment, programming circuitry 284 is configured to program memory cells in four erase blocks simultaneously.

In einigen Ausführungsformen ist die Programmierschaltung 284 eingerichtet, um Speicherzellen in verschiedenen Löschblöcken gleichzeitig auf ein Bit pro Speicherzelle (SLC) zu programmieren. In einigen Ausführungsform ist die Programmierschaltung 284 eingerichtet, um Speicherzellen in verschiedenen Löschblöcken gleichzeitig auf zwei Bits pro Speicherzelle zu programmieren. In einigen Ausführungsformen ist die Programmierschaltung 284 eingerichtet, um Speicherzellen in verschiedenen Löschblöcken gleichzeitig auf drei Bits pro Speicherzelle zu programmieren. In einigen Ausführungsformen ist die Programmierschaltung 284 eingerichtet, um Speicherzellen in verschiedenen Löschblöcken gleichzeitig auf vier Bits pro Speicherzelle zu programmieren. In einigen Ausführungsform ist die Programmierschaltung 284 eingerichtet, um Speicherzellen in verschiedenen Löschblöcken gleichzeitig auf fünf Bits pro Speicherzelle zu programmieren. In einigen Ausführungsformen wird das gleichzeitige Programmieren der Speicherzellen in verschiedenen Löschblöcken ohne Verifizierung durchgeführt.In some embodiments, programming circuitry 284 is configured to simultaneously program memory cells in different erase blocks to one bit per memory cell (SLC). In some embodiments, programming circuitry 284 is configured to simultaneously program memory cells in different erase blocks to two bits per memory cell. In some embodiments, programming circuitry 284 is configured to simultaneously program memory cells in different erase blocks to three bits per memory cell. In some embodiments, programming circuitry 284 is configured to simultaneously program memory cells in different erase blocks to four bits per memory cell. In some embodiments, programming circuitry 284 is configured to simultaneously program memory cells in different erase blocks to five bits per memory cell. In some embodiments, the simultaneous programming of the memory cells in different erase blocks is performed without verification.

In einem Ausführungsbeispiel ist die Verifizierschaltung 286 eingerichtet, einen Verifizierimpuls an die Wortleitungen anzulegen, die gerade programmiert sind. Zum Beispiel ist die Verifizierschaltung 286 eingerichtet, einen Verifizierimpuls an die Wortleitungen in verschiedenen Löschblöcken anzulegen, die gerade programmiert sind. In einer Ausführungsform ist die Verifizierschaltung 286 eingerichtet, einen Verifizierimpuls an eine erste Wortleitung und eine zweite Wortleitung anzulegen. Die Verifizierschaltung 286 kann jedoch einen Verifizierimpuls auf mehr als zwei Wortleitungen anlegen, für die Fälle, in denen Speicherzellen, die mit mehr als zwei Wortleitungen verbunden sind, gleichzeitig programmiert werden.In one embodiment, verify circuit 286 is configured to apply a verify pulse to the word lines that are currently programmed. For example, verify circuit 286 is configured to apply a verify pulse to the word lines in various erase blocks that are being programmed. In one embodiment, the verify circuit 286 is configured to apply a verify pulse to a first wordline and a second wordline. However, verify circuit 286 may apply a verify pulse to more than two word lines for cases where memory cells connected to more than two word lines are programmed simultaneously.

Die Verifizierschaltung 286 bereitet Abtastblöcke 250, die mit Bitleitungen verbunden sind, für einen Verifiziervorgang vor. Die Verifizierschaltung 286 tastet dann eine Strommenge ab, die von den Leseverstärkern durch die Speicherzellen fließt, die den Programmierpuls empfangen haben. Wenn in einer Ausführungsform als Reaktion auf das Anlegen des Verifizierimpulses Strom durch eine von mehreren Zellen fließt, die programmiert und an dieselbe Bitleitung angeschlossen sind, dann hat die Schwellenspannung bei einer der Zellen den Zielwert nicht erreicht. Werden zum Beispiel zwei Zellen auf denselben Zielwert programmiert und fließt in einer der beiden Zellen als Reaktion auf das Anlegen des Verifizierimpulses Strom, dann hat die Schwellenspannung bei einer oder beiden Zellen den Zielwert nicht erreicht. Folglich wurde mindestens eine der Zellen nicht ausreichend programmiert. Wenn eine oder mehrere der Zellen den Zielwert nicht erreicht haben, kann die Verifizierschaltung 286 ein weiteres Programmierverfahren einleiten, wie hierin beschrieben. In einem Ausführungsbeispiel weist das Abtasten einer Strommenge das Bestimmen auf, ob Strom fließt. In einer beispielhaften Ausführungsform weist das Erfassen einer Strommenge das Laden eines Erfassungskondensators auf eine Erfassungsspannung, das Verbinden des Erfassungskondensators mit der Bitleitung für eine Erfassungsperiode (Integrationszeit), damit der Bitleitungsstrom (falls vorhanden) den Erfassungskondensator entladen kann, und das anschließende Erfassen einer Spannung am Erfassungskondensator auf. Ist die Spannung am Erfassungskondensator unter eine Abgrenzungsspannung gefallen, zeigt dies an, dass die Schwellenspannung für mindestens eine der Zellen den Zielwert nicht erreicht hat.The verify circuit 286 prepares sample blocks 250 connected to bit lines for a verify operation. The verify circuit 286 then senses an amount of current flowing from the sense amplifiers through the memory cells that received the programming pulse. In one embodiment, if current flows through one of multiple cells that are programmed and connected to the same bitline in response to the application of the verify pulse, then the threshold voltage at one of the cells has not reached the target value. For example, if two cells are programmed to the same target value and current flows in one of the two cells in response to the application of the verify pulse, then the threshold voltage of one or both cells has not reached the target value. As a result, at least one of the cells has not been adequately programmed. If one or If several of the cells have not met the target value, the verification circuit 286 may initiate another programming procedure as described herein. In one embodiment, sensing an amount of current includes determining whether current is flowing. In an example embodiment, sensing an amount of current includes charging a sense capacitor to a sense voltage, connecting the sense capacitor to the bitline for a sense period (integration time) to allow the bitline current (if any) to discharge the sense capacitor, and then sensing a voltage at capture capacitor on. If the voltage across the sense capacitor has fallen below a clipping voltage, this indicates that the threshold voltage for at least one of the cells has not reached the target value.

In einem anderen Ausführungsbeispiel weist das Stromabtasten das Strommessen und Bestimmen auf, ob der gemessene Strom über einem Stromschwellenwert (z. B. 0 Ampere) liegt. In einem Beispiel schließt das Stromabtasten das Abtasten des Stroms an einer Bitleitung ein, die mit NAND-Ketten verbunden ist, die die zu programmierenden Speicherzellen einschließen. In diesem Ausführungsbeispiel kann zwar Strom durch die Bitleitung fließen, da die Bitleitung mit mehreren NAND-Ketten verbunden sein kann, doch ist möglicherweise nicht bekannt, durch welche NAND-Kette der Strom fließt.In another embodiment, sensing the current includes measuring the current and determining whether the measured current is above a current threshold (eg, 0 amps). In one example, current sensing includes sensing the current on a bit line connected to NAND strings enclosing the memory cells to be programmed. In this embodiment, while current may flow through the bit line because the bit line may be connected to multiple NAND strings, it may not be known which NAND string the current is flowing through.

In einem anderen Beispiel schließt das Stromabtasten das Stromabtasten an einer Stromabtastkomponente ein, die an der NAND-Kette befestigt ist. In einem anderen Ausführungsbeispiel schließt das Stromabtasten das Stromabtasten an den jeweiligen Speicherzellen ein. Natürlich kann für Fachleute eine große Vielfalt unterschiedlicher Architekturen ersichtlich sein und kann das Stromabtasten auf unterschiedliche Weise erfolgen.In another example, current sensing includes current sensing at a current sensing component attached to the NAND chain. In another embodiment, the current sensing includes current sensing at the respective memory cells. Of course, a wide variety of different architectures may be apparent to those skilled in the art and current sensing may be accomplished in different ways.

In einem Ausführungsbeispiel programmiert der Programmierschaltkreis 284 die erste Speicherzelle und separat die zweite Speicherzelle als Reaktion auf das Stromabtasten als Reaktion auf das Anlegen des Verifizierimpulses.In one embodiment, programming circuitry 284 programs the first memory cell and separately the second memory cell in response to the current sensing in response to application of the verify pulse.

Das separate Programmierverfahren kann das Anlegen von Programmierschleifen bei sukzessiv steigenden Spannungen an die erste Speicherzelle einschließen, wie für Fachleute ersichtlich sein kann. In einem anderen Ausführungsbeispiel schließt das separate Programmierverfahren das Anlegen der Programmierschleifen an die zweite Speicherzelle nach Anlegen der Programmierschleifen an die erste Speicherzelle und Verifizieren, dass die erste Zelle korrekt programmiert ist. Ein „erhöhter“ Programmierimpuls deutet darauf hin, dass ein vorheriger Programmierimpuls nicht ausreichend war, um eine bestimmte Speicherzelle korrekt zu programmieren, und ein Programmierimpuls wird „erhöht“ (z. B. bei einer höheren Spannung), um erneut zu versuchen, die Speicherzelle zu programmieren. Somit bedeutet „korrekt programmiert“, dass das Anlegen eines Programmierimpulses dazu geführt hat, dass ein Schwellenspannungsniveau für eine bestimmte Speicherzelle über einem Schwellenwert liegt oder innerhalb eines Schwellenbereichs liegt. Ein spezifisches Beispiel für eine solche Reihe von Programmierimpulsen ist in 8 dargestellt und wird nachfolgend beschrieben.The separate programming method may include applying programming loops at successively increasing voltages to the first memory cell, as may be apparent to those skilled in the art. In another embodiment, the separate programming method includes applying the programming loops to the second memory cell after applying the programming loops to the first memory cell and verifying that the first cell is correctly programmed. A "raised" programming pulse indicates that a previous programming pulse was not sufficient to correctly program a particular memory cell, and a programming pulse is "raised" (e.g., at a higher voltage) to attempt the memory cell again to program. Thus, "correctly programmed" means that the application of a programming pulse has resulted in a threshold voltage level for a particular memory cell being above a threshold or within a threshold range. A specific example of such a series of programming pulses is in 8th shown and described below.

In einem anderen Ausführungsbeispiel ist die Komponente zum gleichzeitigen Programmieren 150 dafür eingerichtet zu bestimmen, ob die erste und/oder zweite Speicherzelle korrekt programmiert ist, und als Reaktion auf das Bestimmen, dass die erste und/oder zweite Speicherzelle korrekt programmiert ist, das Überschreiben der ersten und/oder zweiten Speicherzelle einzuleiten. In einigen Beispielen kennzeichnet die Komponente zum gleichzeitigen Programmieren 150 die zweite Speicherzelle zur Wiederverwendung, leitet das Löschen der zweiten Speicherzelle ein, funktioniert die zweite Speicherzelle um und/oder dergleichen.In another embodiment, the concurrent programming component 150 is configured to determine whether the first and/or second memory cell is correctly programmed and, in response to determining that the first and/or second memory cell is correctly programmed, overwriting the to initiate the first and/or second memory cell. In some examples, the concurrent programming component 150 marks the second memory cell for reuse, initiates erasing of the second memory cell, repurposes the second memory cell, and/or the like.

In einem Ausführungsbeispiel ist die Steuerung weiterhin dafür eingerichtet, Daten aus einer der ersten Speicherzelle und der zweiten Speicherzelle zu lesen und die Daten zum Programmieren einer mehrstufigen Zelle in einem Zellverdichtungsvorgang zu verwenden. Wie zuvor beschrieben, ist bei Vorhandensein von zwei Kopien derselben Daten die Komponente zum gleichzeitigen Programmieren 150 in der Lage, einen Mehrstufenzellen-SLC-TLC-Verdichtungsvorgang durchzuführen, ohne eine Kopie der in den Zellen gespeicherten Daten erstellen zu müssen. Die in der ersten und zweiten Speicherzelle gespeicherten Daten können somit zur temporären Verwendung bestimmt sein. Das Vorhandensein von zwei Kopien der Daten kann hilfreich sein, um Datenverluste in der Zeit zwischen dem anfänglichen Speichern der Daten im Speicherarray 200 und dem Verwenden der Daten in dem SLC-TLC-Verdichtungsvorgang zu vermeiden.In one embodiment, the controller is further configured to read data from one of the first memory cell and the second memory cell and use the data to program a multi-level cell in a cell compression operation. As previously described, given two copies of the same data, the concurrent programming component 150 is able to perform a multi-level cell SLC-TLC compaction operation without having to make a copy of the data stored in the cells. The data stored in the first and second memory cell can thus be intended for temporary use. Having two copies of the data can help to avoid data loss in the time between initially storing the data in the storage array 200 and using the data in the SLC-TLC compression process.

In einem anderen Ausführungsbeispiel verwendet die Komponente zum gleichzeitigen Programmieren 150 zwei Speicherzellen entlang einer einzigen NAND-Kette. In diesem Ausführungsbeispiel weist eine NAND-Kette einen Satz Speicherzellen auf. Die NAND-Kette kann mit einer Bitleitung verbunden sein und kreuzt eine separate Wortleitung für jede der zwei Speicherzellen entlang der NAND-Kette. In ähnlicher Weise kann, wie zuvor beschrieben, die Komponente zum gleichzeitigen Programmieren 150 zwei separate Wortleitungen wählen, die zwei separaten Speicherzellen entlang der NAND-Kette entsprechen, die gleichzeitig auf eine gemeinsame Zielschwellenspannung programmiert werden sollen.In another embodiment, the simultaneous programming component 150 uses two memory cells along a single NAND chain. In this embodiment, a NAND chain includes a set of memory cells. The NAND chain may be connected to a bit line and crosses a separate word line for each of the two memory cells along the NAND chain. Similarly, as previously described, the simultaneous programming component 150 may select two separate word lines representing two separate memory cells along the correspond to a NAND chain to be programmed simultaneously to a common target threshold voltage.

In einer Ausführungsform können die gewählten Wortleitungen wahlweise voneinander getrennt sein, sodass sie sich an verschiedenen Stellen entlang der NAND-Kette befinden. Zum Beispiel können sich die gewählten Wortleitungen an entgegengesetzten Enden der NAND-Kette befinden. Wie bereits beschrieben, kann ein solcher Versatz helfen, das Risiko eines Datenverlusts zu verringern durch Verringern der Wahrscheinlichkeit, dass die Speicherzellen durch eine gemeinsame Störung beeinträchtigt werden.In one embodiment, the selected word lines can be optionally separated from each other so that they are at different locations along the NAND chain. For example, the selected word lines can be at opposite ends of the NAND chain. As previously described, such an offset can help reduce the risk of data loss by reducing the likelihood that the memory cells will be affected by a common fault.

In einem anderen Ausführungsbeispiel verbindet die Komponente zum gleichzeitigen Programmieren 150 separate Wortleitungen in mehr als zwei verschiedenen Löschblöcken, wobei durch Anlegen eines Programmierimpulses an die verbundenen Wortleitungen der Programmierimpuls an Speicherzellen in jedem der verschiedenen Löschblöcke angelegt wird.In another embodiment, the simultaneous programming component 150 connects separate word lines in more than two different erase blocks, wherein by applying a programming pulse to the connected word lines, the programming pulse is applied to memory cells in each of the different erase blocks.

In diesem Ausführungsbeispiel wählt die Auswahlschaltung 282 elektrisch die Bitleitung durch Einschalten eines Auswahl-Gate-Transistors oder durch Verwenden einer oder mehrerer anderer Komponenten, wie für Fachleute ersichtlich sein kann. Die Auswahlschaltung 282 verbindet dann elektrisch eine erste Wortleitung, die einer ersten Speicherzelle in der NAND-Kette entspricht, mit einer zweiten Wortleitung, die einer zweiten Speicherzelle in der NAND-Kette entspricht. Die Programmierschaltung 284 legt dann einen Programmierimpuls an die verbundenen Wortleitungen an, um die Daten gleichzeitig in die erste Speicherzelle und die zweite Speicherzelle in der NAND-Kette zu schreiben.In this embodiment, select circuit 282 electrically selects the bit line by turning on a select gate transistor or by using one or more other components, as may be apparent to those skilled in the art. The selection circuit 282 then electrically connects a first word line corresponding to a first memory cell in the NAND chain to a second word line corresponding to a second memory cell in the NAND chain. The programming circuit 284 then applies a programming pulse to the connected word lines to simultaneously write the data to the first memory cell and the second memory cell in the NAND chain.

In einem anderen Ausführungsbeispiel legt die Verifizierschaltung 286, nachdem die Programmierschaltung 284 gleichzeitig den Programmierimpuls an die erste Wortleitung und die zweite Wortleitung angelegt hat, einen Verifizierimpuls an die erste Wortleitung und die zweite Wortleitung an, um zu bestimmen, ob die erste Speicherzelle und/oder die zweite Speicherzelle korrekt programmiert wurden. Als Reaktion auf den Stromfluss durch die NAND-Kette bestimmt die Verifizierschaltung 286, dass eine oder mehrere der ersten Speicherzelle und der zweiten Speicherzelle nicht vollständig programmiert wurden (z. B. eine unzureichende Schwellenspannung haben). Als Reaktion auf dieses Bestimmen kann die Verifizierschaltung 286 dann für jede Speicherzelle ein anschließendes Programmierverfahren in beliebiger Weise beginnen, wie hierin beschrieben.In another embodiment, after the programming circuit 284 simultaneously applies the programming pulse to the first word line and the second word line, the verify circuit 286 applies a verify pulse to the first word line and the second word line to determine whether the first memory cell and/or the second memory cell has been programmed correctly. In response to the current flow through the NAND chain, the verification circuit 286 determines that one or more of the first memory cell and the second memory cell have not been fully programmed (e.g., have an insufficient threshold voltage). In response to this determination, verification circuit 286 may then begin a subsequent programming process for each memory cell in any manner, as described herein.

In einigen Ausführungsformen bestimmt die Verifizierschaltung 286 nicht, ob eine bestimmte Speicherzelle korrekt programmiert wurde, sondern bestimmt vielmehr durch Stromabtasten in der von beiden Speicherzellen gemeinsam benutzten Bitleitung, dass eine der Speicherzellen nicht korrekt programmiert wurde. Als Reaktion auf dieses Bestimmen programmiert die Programmierschaltung 284 die erste und zweite Speicherzelle erneut. Da beide Speicherzellen programmiert sind, ist es unter Umständen nicht erforderlich, zu bestimmen, welche Speicherzelle oder Speicherzellen nicht korrekt programmiert wurden.In some embodiments, verification circuit 286 does not determine whether a particular memory cell has been programmed correctly, but rather determines that one of the memory cells has not been programmed correctly by current sensing in the bit line shared by both memory cells. In response to this determination, the programming circuit 284 reprograms the first and second memory cells. Because both memory cells are programmed, it may not be necessary to determine which memory cell or cells were programmed incorrectly.

In einem Ausführungsbeispiel sind die erste Speicherzelle in der NAND-Kette und die zweite Speicherzelle in der NAND-Kette aufeinanderfolgende Speicherzellen in der NAND-Kette. Obwohl der physische Versatz zwischen den Speicherzellen, in denen doppelte Daten gespeichert sind, Vorteile bietet, hat das gleichzeitige Programmieren aufeinanderfolgender Wortleitungen in einer NAND-Kette auf eine gemeinsame Zielschwellenspannung auch Vorteile. In einigen Ausführungsformen können zwei Wortleitungen, die dieselben Daten speichern, tendenziell eine geringere Wahrscheinlichkeit elektromagnetischer Interferenz zueinander haben.In one embodiment, the first memory cell in the NAND chain and the second memory cell in the NAND chain are consecutive memory cells in the NAND chain. Although the physical skew between the memory cells storing duplicate data provides advantages, programming consecutive word lines in a NAND string to a common target threshold voltage simultaneously also has advantages. In some embodiments, two word lines storing the same data may tend to have a lower likelihood of electromagnetic interference with each other.

2A stellt Blöcke von Speicherzellen in einer exemplarischen 2D-Konfiguration des Speicherarrays 200 aus 1B dar. Das Speicherarray 200 kann viele Blöcke einschließen. Jeder Beispielblock 202, 204 schließt eine Anzahl von NAND-Ketten und entsprechenden Bitleitungen ein, z. B. BL0, BL1,.. die von den Blöcken gemeinsam genutzt werden. Jede NAND-Kette ist an einem Ende mit einem Drain-Auswahl-Gate (SGD) verbunden, und die Steuer-Gates der Drain-Auswahl-Gates sind über eine gemeinsame SGD-Leitung verbunden. Die NAND-Ketten sind an ihrem anderen Ende mit einem Source-Auswahl-Gate SGS verbunden, das wiederum mit einer gemeinsamen Source-Leitung 206 verbunden ist. Sechzehn Wortleitungen, zum Beispiel WL0 bis WL15, verlaufen zwischen den Source-Auswahl-Gates und den Drain-Auswahl-Gates. 2A 12 depicts blocks of memory cells in an exemplary 2D configuration of memory array 200. FIG 1B The memory array 200 may include many blocks. Each example block 202, 204 includes a number of NAND strings and corresponding bit lines, e.g. B. BL0, BL1,.. shared between the blocks. Each NAND string is connected to a drain select gate (SGD) at one end, and the control gates of the drain select gates are connected by a common SGD line. The NAND chains are connected at their other end to a source select gate SGS which in turn is connected to a common source line 206 . Sixteen word lines, for example WL0 through WL15, run between the source select gates and the drain select gates.

In einigen Fällen können Dummy-Wortleitungen, die keine Benutzerdaten enthalten, ebenfalls in dem Speicherarray verwendet werden, das an die Select-Gate-Transistoren (SGS/SGD) angrenzt. Solche Dummy-Wortleitungen können eine Randdaten-Wortleitung vor bestimmten Randeffekten abschirmen. In einigen Beispielen sind Dummy-Wortleitungen angrenzend an die SGD- und SGS-Leitungen positioniert. Somit sind in dem Ausführungsbeispiel aus 2A Dummy-Wortleitungen WLD0 angrenzend an die SGS-Leitungen jedes der Blöcke 202, 204 und Dummy-Wortleitungen WLD1 angrenzend an die SGD-Leitungen jedes der Blöcke 202, 204 positioniert. In anderen Beispielen sind mehrere (zum Beispiel zwei oder drei) Dummy-Wortleitungen zwischen den Wortleitungen WL0 bis WL15 und jeder der SGD- und SGS-Leitungen positioniert. In einigen Ausführungsformen werden die Dummy-Wortleitungen nicht mit dem Rest des Blocks 202, 204 gelöscht, zu dem sie gehören. Somit bleiben alle auf den Dummy-Wortleitungen gespeicherten Daten während der Löschvorgänge bestehen, die üblicherweise zum Löschen von Benutzerdaten verwendet werden, und können nur durch Programmieren von Bits der Dummy-Wortleitungen geändert werden, die noch nicht programmiert wurden.In some cases, dummy word lines that do not contain user data may also be used in the memory array adjacent to the select gate transistors (SGS/SGD). Such dummy word lines can shield an edge data word line from certain edge effects. In some examples, dummy word lines are positioned adjacent to the SGD and SGS lines. Thus, in the embodiment 2A Dummy word lines WLD0 adjacent to the SGS lines of each of the blocks 202, 204 and dummy word lines WLD1 adjacent to the SGD lines of each of the blocks 202, 204 positioned. In other examples, multiple (e.g., two or three) dummy wordlines are positioned between wordlines WL0 through WL15 and each of the SGD and SGS lines. In some embodiments, the dummy word lines are not erased with the rest of the block 202, 204 to which they belong. Thus, any data stored on the dummy word lines persists during erase operations, which are commonly used to erase user data, and can only be changed by programming bits of the dummy word lines that have not yet been programmed.

Wie in 2A verkörpert, definieren die Bitleitungen BL0, BL1, ... Spalten der Wortleitungen jedes Blocks 202, 204. Zusätzlich zu den Bitleitungen BL0, BL1, ... die Benutzerdaten speichern, hat jeder Block 202, 204 mehrere Ersatzspalten SC0, SC1, ... die für verschiedene Zwecke verwendet werden können wie zum Ersetzen der Bitleitungen BL0, BL1, ... die unbrauchbar sind oder werden. Daher speichern die Ersatzspalten in einigen Fällen keine Benutzerdaten.As in 2A , the bit lines BL0, BL1, ... define columns of the word lines of each block 202, 204. In addition to the bit lines BL0, BL1, ... storing user data, each block 202, 204 has several spare columns SC0, SC1, ... , which can be used for various purposes such as replacing the bit lines BL0, BL1, ... which are or will be unusable. Therefore, in some cases, the replacement columns do not store any user data.

Jede der Wortleitungen des Speicherarrays 200 kann einen Wortleitungstreiber 208 haben, der die Daten dieser Wortleitung dekodiert und/oder anderweitig verarbeitet. Daher können in 2A die Wortleitungen WL0 bis WL15 Wortleitungstreibern 208 haben, wie gezeigt. Die Wortleitungstreiber 208 können in den in 1B gezeigten Zeilendecodern 240A/240B eingeschlossen sein.Each of the word lines of memory array 200 may have a word line driver 208 that decodes and/or otherwise processes the data on that word line. Therefore, in 2A the word lines WL0 through WL15 have word line drivers 208 as shown. The word line drivers 208 can be placed in the in 1B row decoders 240A/240B shown.

Die nichtflüchtigen Speicherelemente 123 können eine große Vielfalt von Technologien einschließen, einschließlich aller nichtflüchtiger Speichertypen, auf die im Abschnitt zum Hintergrund oben Bezug genommen wird, ohne jedoch darauf beschränkt zu sein. Ein nichtflüchtiger Speichertyp, der im Speicherarray bereitgestellt werden kann, ist eine Ladungseinfangspeicherzelle. Andere Typen nichtflüchtiger Speicher können ebenfalls verwendet werden. Zum Beispiel kann eine Ladungseinfangspeicherzelle ein nichtleitendes dielektrisches Material anstelle eines leitfähigen Floating-Gates verwenden, um Ladung auf nichtflüchtige Weise zu speichern. In einem Beispiel ist ein dreischichtiges Dielektrikum aus Siliziumoxid, Siliziumnitrid und Siliziumoxid („ONO“) zwischen einem leitfähigen Steuer-Gate und einem Halbleiter angeordnet. Die Zelle wird programmiert, indem Elektronen aus dem Zellkanal in das Nitrid eingespritzt werden, wo sie eingefangen und in einem begrenzten Bereich gespeichert werden. Diese gespeicherte Ladung verändert dann die Schwellenspannung eines Abschnitts des Kanals der Zelle auf eine Weise, die nachweisbar ist. Die Zelle wird durch Einspritzen heißer Löcher in das Nitrid gelöscht. Eine ähnliche Zelle kann in einer Split-Gate-Konfiguration bereitgestellt werden, bei der sich ein dotiertes Polysilizium-Gate über einem Abschnitt des Speicherzellenkanals erstreckt und dadurch einen separaten Auswahl-Transistor bildet.The non-volatile memory elements 123 may include a wide variety of technologies, including but not limited to all of the non-volatile memory types referred to in the background section above. One type of non-volatile memory that can be provided in the memory array is a charge trapping memory cell. Other types of non-volatile memory can also be used. For example, a charge trapping memory cell may use a non-conductive dielectric material instead of a conductive floating gate to store charge in a non-volatile manner. In one example, a three-layer silicon oxide, silicon nitride, and silicon oxide ("ONO") dielectric is sandwiched between a conductive control gate and a semiconductor. The cell is programmed by injecting electrons from the cell channel into the nitride, where they are trapped and stored in a confined area. This stored charge then changes the threshold voltage of a portion of the cell's channel in a way that is detectable. The cell is erased by injecting hot holes into the nitride. A similar cell can be provided in a split gate configuration, in which a doped polysilicon gate extends over a portion of the memory cell channel, thereby forming a separate select transistor.

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.Another approach uses NROM cells. For example, two bits are stored in each NROM cell in which an ONO dielectric layer extends across the channel between source and drain diffusion. The charge for one data bit is localized in the dielectric layer adjacent the drain and the charge for the other data bit is localized in the dielectric layer adjacent the source. Multi-state data storage is achieved by separately reading binary states of the physically separate charge storage regions within the dielectric. Other types of non-volatile memory are also known.

2B stellt eine Querschnittsansicht exemplarischer Ladungseinfangspeicherzellen in NAND-Ketten als Beispiel für Speicherzellen in 2A dar. Die Ansicht ist in einer Wortleitungsrichtung von Speicherzellen, die ein flaches Steuer-Gate und Ladungseinfangbereiche als 2D-Beispiel für Speicherzellen in dem Speicherarray 200 aus 1B aufweisen. Der Ladungseinfangspeicher kann in einer NOR- und NAND-Flash-Speichervorrichtung verwendet werden. Bei dieser Technologie wird ein Isolator wie eine SiN-Folie zum Speichern von Elektronen verwendet, im Gegensatz zu einer Floating-Gate-MOSFET-Technologie, bei der ein Leiter wie dotiertes polykristallines Silizium zum Speichern von Elektronen verwendet wird. Zum Beispiel erstreckt sich eine Wortleitung (WL) 423 über NAND-Ketten, die jeweilige Kanalbereiche 406, 416 und 426 einschließen. Abschnitte der Wortleitung stellen Steuer-Gates 402, 412 und 422 bereit. Unterhalb der Wortleitung befinden sich eine Inter-Poly-Dielektrikum- (IPD-) Schicht 428, Ladungseinfangschichten 404, 414 und 424, Polysiliziumschichten 405, 415 und 425 sowie die Tunnelschichten 409, 407 und 408. Jede Ladungseinfangschicht erstreckt sich kontinuierlich in einer jeweiligen NAND-Kette. 2 B FIG. 12 shows a cross-sectional view of exemplary charge-trapping memory cells in NAND strings as an example of memory cells in FIG 2A The view is in a word line direction of memory cells having a flat control gate and charge trapping regions as a 2D example of memory cells in the memory array 200. FIG 1B exhibit. The charge trapping memory can be used in a NOR and NAND flash memory device. This technology uses an insulator such as SiN film to store electrons, as opposed to floating gate MOSFET technology which uses a conductor such as doped polycrystalline silicon to store electrons. For example, a word line (WL) 423 spans NAND strings that include channel regions 406, 416, and 426, respectively. Sections of the word line provide control gates 402, 412 and 422. Below the word line is an inter-poly dielectric (IPD) layer 428, charge trapping layers 404, 414, and 424, polysilicon layers 405, 415, and 425, and tunneling layers 409, 407, and 408. Each charge trapping layer extends continuously in a respective NAND -Chain.

Eine Speicherzelle 400 schließt das Steuer-Gate 402, die Ladungseinfangschicht 404, die Polysiliziumschicht 405 und einen Abschnitt des Kanalbereichs 406 ein. Eine Speicherzelle 410 schließt das Steuer-Gate 412, die Ladungseinfangschicht 414, eine Polysiliziumschicht 415 und einen Abschnitt des Kanalbereichs 416 ein. Eine Speicherzelle 420 schließt das Steuer-Gate 422, die Ladungseinfangschicht 421, die Polysiliziumschicht 425 und einen Abschnitt des Kanalbereichs 426 ein.A memory cell 400 includes the control gate 402, the charge trapping layer 404, the polysilicon layer 405 and a portion of the channel region 406. FIG. A memory cell 410 includes the control gate 412, the charge trapping layer 414, a polysilicon layer 415 and a portion of the channel region 416. FIG. A memory cell 420 includes the control gate 422, the charge trapping layer 421, the polysilicon layer 425 and a portion of the channel region 426. FIG.

Ein Vorteil eines flachen Steuer-Gates besteht darin, dass die Ladungseinfangschicht dünner als ein Floating-Gate hergestellt werden kann. Außerdem können die Speicherzellen näher beieinander platziert werden.An advantage of a flat control gate is that the charge trapping layer can be made thinner than a floating gate. In addition, the memory cells can be placed closer together.

2C stellt eine Querschnittsansicht der Struktur aus 2B dar. Die Ansicht zeigt eine NAND-Kette 430 mit einem flachen Steuer-Gate und einer Ladungseinfangschicht. Die NAND-Kette 430 schließt einen SGS-Transistor 431, beispielhafte Speicherzellen 400, 433, ..., 434 und 435 und einen SGD-Transistor 436 ein. 2C displays a cross-sectional view of the structure 2 B The view shows a NAND chain 430 with a flat control gate and a charge trapping layer. NAND chain 430 includes SGS transistor 431, example memory cells 400, 433, ..., 434, and 435, and SGD transistor 436.

Die NAND-Kette kann auf einem Substrat gebildet werden, das eine p-Typ-Substratregion 455, einen n-Typ-Well 456 und einen p-Typ-Well 457 aufweist. N-Typ-Source/Drain-Diffusionsbereiche sd1, sd2, sd3, sd4, sd5, sd6 und sd7 sind in der p-Typ-Wanne 457 gebildet. Eine Kanalspannung, Vch, kann direkt an die Kanalregion des Substrats angelegt werden. Die Speicherzelle 400 schließt das Steuer-Gate 402 und die IPD-Schicht 428 über der Ladungseinfangschicht 404, der Polysiliziumschicht 405, der Tunnelschicht 409 und dem Kanalbereich 406 ein.The NAND chain can be formed on a substrate having a p-type substrate region 455, an n-type well 456 and a p-type well 457. N-type source/drain diffusion regions sd1, sd2, sd3, sd4, sd5, sd6 and sd7 are formed in p-type well 457. A channel voltage, Vch, can be applied directly to the channel region of the substrate. Memory cell 400 includes control gate 402 and IPD layer 428 over charge trapping layer 404, polysilicon layer 405, tunnel layer 409, and channel region 406. FIG.

Die Steuer-Gate-Schicht kann zum Beispiel Polysilizium sein und die Tunnelschicht kann zum Beispiel Siliziumoxid sein. Die IPD-Schicht kann ein Stapel von Dielektrika mit hohem k-Wert wie AIOx oder HfOx sein, die dazu beitragen, das Kopplungsverhältnis zwischen der Steuer-Gate-Schicht und der Ladungsfänger- - oder Ladungsspeicherschicht zu erhöhen. Die Ladungsfängerschicht kann zum Beispiel eine Mischung aus Siliziumnitrid und Siliziumoxid sein.The control gate layer can be polysilicon, for example, and the tunnel layer can be silicon oxide, for example. The IPD layer can be a stack of high-k dielectrics such as AIOx or HfOx that help increase the coupling ratio between the control gate layer and the charge trapping or charge storage layer. For example, the charge trapping layer may be a mixture of silicon nitride and silicon oxide.

Die SGD- und SGS-Transistoren haben die gleiche Konfiguration wie die Speicherzellen, jedoch eine längere Kanallänge, um sicherzustellen, dass der Strom in einer gesperrten NAND-Kette abgeschaltet wird.The SGD and SGS transistors have the same configuration as the memory cells, but with a longer channel length to ensure current is turned off in a locked NAND string.

In diesem Beispiel erstrecken sich die Schichten 404, 405 und 409 kontinuierlich in der NAND-Kette. Bei einem anderen Ansatz können Abschnitte der Schichten 404, 405 und 409, die sich zwischen den Steuer-Gates 402, 412 und 422 befinden, entfernt werden, sodass eine obere Oberfläche des Kanalbereichs 406 freiliegt.In this example, layers 404, 405 and 409 extend continuously in the NAND chain. In another approach, portions of layers 404, 405, and 409 located between control gates 402, 412, and 422 may be removed such that an upper surface of channel region 406 is exposed.

2D stellt eine exemplarische Speicherzelle 500 dar. Die Speicherzelle weist ein Steuer-Gate CG, das eine Wortleitungsspannung Vwll0 empfängt, einen Drain mit einer Spannung Vd, eine Source mit einer Spannung Vs und einen Kanal mit einer Spannung Vch auf. 2D 12 illustrates an exemplary memory cell 500. The memory cell has a control gate CG receiving a wordline voltage Vwll0, a drain with a voltage Vd, a source with a voltage Vs, and a channel with a voltage Vch.

3 ist eine perspektivische Ansicht einer Speichervorrichtung 600, die einen Satz Blöcke in einer exemplarischen 3D-Konfiguration des Speicherarrays 200 aus 1 aufweist. Auf dem Substrat befinden sich beispielhafte Blöcke BLK0, BLK1, BLK2 und BLK3 von Speicherzellen (Speicherelementen) und ein Peripheriebereich 604 mit Schaltlogik zur Verwendung durch die Blöcke. Zum Beispiel kann die Schaltlogik Spannungstreiber 605 einschließen, die an Steuer-Gate-Schichten der Blöcke angeschlossen werden können. Bei einem Ansatz werden Steuergateschichten auf einer gemeinsamen Höhe in den Blöcken gemeinsam angesteuert. Das Substrat 601 kann auch Schaltlogik unter den Blöcken zusammen mit einer oder mehreren unteren Metallschichten tragen, die in Leiterbahnen strukturiert sind, um Signale der Schaltlogik zu übertragen. Die Blöcke sind in einer Zwischenregion 602 der Speichervorrichtung ausgebildet. In einer oberen Region 603 der Speichervorrichtung sind eine oder mehrere obere Metallschichten in Leiterbahnen strukturiert, um Signale der Schaltlogik zu tragen. Jeder Block weist einen gestapelten Bereich von Speicherzellen auf, wobei alternierende Ebenen des Stapels Wortleitungen darstellen. In einem möglichen Ansatz hat jeder Block gegenüberliegende abgestufte Seiten, von denen sich vertikale Kontakte nach oben zu einer oberen Metallschicht erstrecken, um Verbindungen zu Leiterbahnen herzustellen. Während vier Blöcke beispielhaft dargestellt sind, können zwei oder mehr Blöcke verwendet werden, die sich in x - und/oder y-Richtung erstrecken. 3 12 is a perspective view of a memory device 600 showing a set of blocks in an exemplary 3D configuration of memory array 200. FIG 1 having. On the substrate are exemplary blocks BLK0, BLK1, BLK2, and BLK3 of memory cells (memory elements) and a peripheral area 604 with circuitry for use by the blocks. For example, the circuitry can include voltage drivers 605 that can be connected to control gate layers of the blocks. In one approach, control gate layers are commonly driven at a common level in the blocks. The substrate 601 may also support circuitry underneath the blocks along with one or more lower metal layers patterned into conductive traces to carry circuitry signals. The blocks are formed in an intermediate region 602 of the memory device. In a top region 603 of the memory device, one or more top metal layers are patterned into conductive lines to carry signals of circuitry. Each block has a stacked array of memory cells, with alternate levels of the stack representing word lines. In one possible approach, each block has opposite stepped sides from which vertical contacts extend up to a top metal layer for making connections to conductive traces. While four blocks are exemplified, two or more blocks extending in the x and/or y direction may be used.

Bei einem möglichen Ansatz stellt die Länge der Ebene in x-Richtung eine Richtung dar, in der sich Signalpfade zu Wortleitungen in der einen oder den mehreren oberen Metallschichten erstrecken (eine Wortleitungs- oder SGD-Leitungsrichtung), und die Breite der Ebene in y-Richtung stellt eine Richtung dar, in der sich Signalpfade zu Bitleitungen in der einen oder den mehreren oberen Metallschichten (eine Bitleitungsrichtung) erstrecken. Die z-Richtung stellt eine Höhe der Speichervorrichtung dar.In one possible approach, the x-direction length of the plane represents a direction in which signal paths extend to wordlines in the top one or more metal layers (a wordline or SGD line direction), and the y-direction width of the plane represents Direction represents a direction in which signal paths extend to bit lines in the one or more upper metal layers (a bit line direction). The z-direction represents a height of the storage device.

4 stellt eine exemplarische Querschnittsansicht eines Abschnitts von einem der Blöcke aus 3 dar. Der Block weist einen Stapel 610 aus abwechselnd leitenden und dielektrischen Schichten auf. In diesem Beispiel weisen die leitfähigen Schichten zwei SGD-Schichten, zwei SGS-Schichten und vier Dummy-Wortleitungsschichten (oder Wortleitungen) WLD1, WLD2, WLD3 und WLD4 zusätzlich zu Datenwortleitungsschichten (oder Wortleitungen) WLL0 bis WLL10 auf. Die dielektrischen Schichten werden als DL0 bis DL19 bezeichnet. Weiterhin sind Regionen des Stapels dargestellt, welche die NAND-Ketten NS1 und NS2 aufweisen. Jede NAND-Kette weist ein Speicherloch 618 oder 619 auf, das mit Materialien gefüllt ist, die benachbart zu den Wortzeilen Speicherzellen bilden. Ein Bereich 622 des Stapels ist in 5 detaillierter gezeigt. 4 Figure 12 shows an exemplary cross-sectional view of a portion of one of the blocks 3 The block has a stack 610 of alternating conductive and dielectric layers. In this example, the conductive layers include two SGD layers, two SGS layers, and four dummy word line layers (or word lines) WLD1, WLD2, WLD3, and WLD4 in addition to data word line layers (or word lines) WLL0 through WLL10. The dielectric layers are referred to as DL0 through DL19. Also shown are regions of the stack that include NAND chains NS1 and NS2. Each NAND string has a memory hole 618 or 619 filled with materials forming memory cells adjacent to the word rows. A region 622 of the stack is in 5 shown in more detail.

Der Stapel schließt ein Substrat 611, eine Isolierschicht 612 auf dem Substrat und einen Abschnitt einer Sourceleitung SL ein. NS1 hat ein Source-Ende 613 an einer Unterseite 614 des Stapels und ein Drain-Ende 615 an einer Oberseite 616 des Stapels. Metallgefüllte Schlitze 617 und 620 können periodisch über dem Stapel als Verbindungen bereitgestellt werden, die sich durch den Stapel erstrecken, um beispielsweise die Sourceleitung mit einer Leitung über dem Stapel zu verbinden. Die Schlitze können während der Herstellung der Wortleitungen verwendet und anschließend mit Metall gefüllt werden. Ein Abschnitt einer Bitleitung BL0 ist auch dargestellt. Ein leitfähiges Durchgangsloch 621 verbindet das Drain-Ende 615 von NS1 mit BL0. Die Verbindung von NS2 zu seiner Bitleitung ist in 4 nicht dargestellt.The stack includes a substrate 611, an insulating layer 612 on the substrate and a Section of a source line SL. NS1 has a source end 613 at a bottom 614 of the stack and a drain end 615 at a top 616 of the stack. Metal filled slots 617 and 620 may be provided periodically across the stack as interconnects extending through the stack to connect the source line to a line across the stack, for example. The slots can be used during the fabrication of the word lines and then filled with metal. A portion of a bit line BL0 is also shown. A conductive via 621 connects the drain end 615 of NS1 to BL0. The connection from NS2 to its bit line is in 4 not shown.

5 stellt eine Nahansicht des Bereichs 622 des Stapels aus 4 dar. Speicherzellen sind an den verschiedenen Ebenen des Stapels an dem Schnittpunkt einer Wortleitungsschicht und eines Speicherlochs ausgebildet. In diesem Beispiel sind die SGD-Transistoren 680 und 681 über den Dummy-Speicherzellen 682 und 683 und einer Datenspeicherzelle MC bereitgestellt. Eine Reihe von Schichten kann entlang der Seitenwand (SW) des Speicherlochs 630 und/oder innerhalb jeder Wortleitungsschicht abgeschieden werden, z. B. unter Verwendung von Atomschichtabscheidung. Zum Beispiel kann jede Spalte (z. B. die von den Materialien innerhalb eines Speicherlochs gebildete Säule) eine Ladungseinfangschicht 663 oder Folie wie SiN oder ein anderes Nitrid, eine Tunnelschicht 664, einen Kanal 665 (z. B. Polysilizium aufweisend) und einen dielektrischen Kern 666 einschließen. Eine Wortleitungsschicht kann ein Blockieroxid/Block-High-k-Material 660, ein Barrieremetall 661 und ein leitfähiges Metall 662 wie Wolfram als Steuer-Gate einschließen. Es werden zum Beispiel die Steuer-Gates 690, 691, 692, 693 und 694 bereitgestellt. In diesem Beispiel werden alle Schichten mit Ausnahme des Metalls und des Blockieroxid/Block-High-k-Materials 660 in dem Speicherloch bereitgestellt. In anderen Ansätzen können zusätzliche Schichten in der Steuer-Gate-Schicht sein. Zusätzliche Säulen sind gleichermaßen in den verschiedenen Speicherlöchern ausgebildet. Eine Säule kann eine säulenförmige aktive Fläche (AA) einer NAND-Kette bilden. 5 Figure 6 shows a close-up view of portion 622 of the stack 4 Memory cells are formed at the various levels of the stack at the intersection of a word line layer and a memory hole. In this example, SGD transistors 680 and 681 are provided over dummy memory cells 682 and 683 and a data memory cell MC. A series of layers may be deposited along the sidewall (SW) of the memory hole 630 and/or within each wordline layer, e.g. B. using atomic layer deposition. For example, each column (e.g., the pillar formed by the materials within a memory hole) may include a charge trapping layer 663 or foil such as SiN or other nitride, a tunneling layer 664, a channel 665 (e.g., comprising polysilicon), and a dielectric Include core 666. A wordline layer may include a blocking oxide/block high-k material 660, a barrier metal 661, and a conductive metal 662 such as tungsten as a control gate. For example, control gates 690, 691, 692, 693, and 694 are provided. In this example, all layers except the metal and the blocking oxide/block high-k material 660 are provided in the memory hole. In other approaches, additional layers can be in the control gate layer. Additional pillars are similarly formed in the various storage holes. A pillar can form a pillar-shaped active area (AA) of a NAND string.

Wenn eine Speicherzelle programmiert wird, werden Elektronen in einem Teil der Ladungseinfangschicht gespeichert, welche der Speicherzelle zugeordnet ist. Diese Elektronen werden in die Ladungseinfangschicht aus dem Kanal und durch die Tunnelschicht gezogen. Die Vth einer Speicherzelle wird proportional zu (z. B. je nach Erhöhung) der Menge gespeicherter Ladung erhöht. Während eines Löschvorgangs kehren die Elektronen in den Kanal zurück.When a memory cell is programmed, electrons are stored in a portion of the charge trapping layer associated with the memory cell. These electrons are drawn into the charge trapping layer from the channel and through the tunneling layer. The Vth of a memory cell is increased in proportion to (e.g., depending on the increase) the amount of stored charge. During an erase operation, the electrons return to the channel.

Jedes der Speicherlöcher kann mit einer Vielzahl von ringförmigen Schichten gefüllt sein, die eine Blockieroxidschicht, eine Ladungseinfangschicht, eine Tunnelschicht und eine Kanalschicht aufweisen. Eine Kernregion jedes der Speicherlöcher ist mit einem Körpermaterial gefüllt, und die Vielzahl von ringförmigen Schichten befindet sich zwischen der Kernregion und der Wortleitung in jedem der Speicherlöcher.Each of the storage holes may be filled with a plurality of annular layers including a blocking oxide layer, a charge trapping layer, a tunneling layer, and a channel layer. A core region of each of the memory holes is filled with a body material, and the plurality of annular layers are located between the core region and the word line in each of the memory holes.

Die NAND-Kette kann als einen Floating-Body-Kanal aufweisend betrachtet werden, da die Länge des Kanals nicht auf einem Substrat ausgebildet ist. Weiterhin wird die NAND-Kette durch eine Vielzahl von Wortleitungsschichten bereitgestellt, die übereinander in einem Stapel angeordnet und durch dielektrische Schichten voneinander getrennt sind.The NAND chain can be considered to have a floating body channel since the length of the channel is not formed on a substrate. Furthermore, the NAND chain is provided by a plurality of word line layers arranged one on top of the other in a stack and separated from one another by dielectric layers.

6 eine exemplarische Ansicht von NAND-Ketten in Unterblöcken in einer 3D-Konfiguration darstellt, die mit 4 übereinstimmt. Jeder Teilblock schließt mehrere NAND-Ketten ein, wobei eine beispielhafte NAND-Kette dargestellt ist. Zum Beispiel weisen SB0, SB1, SB2 und SB3 beispielhafte NAND-Ketten 700n, 710n, 720n bzw. 730n auf. Die NAND-Ketten haben Datenwortleitungen, Dummy-Wortleitungen und Auswahl-Gate-Leitungen, die mit 4 übereinstimmen. In einem Block BLK weist jeder Unterblock einen Satz von NAND-Ketten auf, die sich in derx-Richtung erstrecken und die eine gemeinsame SGD-Leitung haben. Die NAND-Ketten 700n, 710n, 720n und 730n befinden sich in Unterblöcken SB0, SB1, SB2 bzw. SB3. Ein Programmieren des Blocks kann je einen Unterblock zu einem Zeitpunkt erfolgen. Innerhalb jedes Unterblocks kann einer Wortleitungsprogrammierreihenfolge gefolgt werden, z. B. beginnend bei WL0, der Source-seitigen Wortleitung, und fortfahrend mit jeweils einer Wortleitung zu einer Zeit bis zu WLL10, der Drain-seitigen Wortleitung. Wie zuvor beschrieben, kann ein Unterblock mehrere Ketten einschließen, während in anderen Ausführungsformen ein Unterblock eine einzige Kette einschließt. 6 Figure 1 shows an exemplary view of NAND chains in sub-blocks in a 3D configuration using 4 matches. Each sub-block includes multiple NAND strings, with an example NAND string shown. For example, SB0, SB1, SB2, and SB3 have example NAND strings 700n, 710n, 720n, and 730n, respectively. The NAND strings have data word lines, dummy word lines, and select gate lines connected with 4 to match. In a block BLK, each sub-block has a set of NAND strings that extend in the x-direction and that share a common SGD line. NAND chains 700n, 710n, 720n, and 730n are in sub-blocks SB0, SB1, SB2, and SB3, respectively. Programming of the block can be done one sub-block at a time. Within each sub-block, a word line programming order can be followed, e.g. B. starting at WL0, the source-side wordline, and continuing one wordline at a time up to WLL10, the drain-side wordline. As previously described, a sub-block may include multiple chains, while in other embodiments a sub-block includes a single chain.

Die NAND-Ketten 700n, 710n, 720n und 730n haben jeweils Kanalbereiche 700a, 710a, 720a und 730a.The NAND chains 700n, 710n, 720n and 730n have channel regions 700a, 710a, 720a and 730a, respectively.

Zusätzlich schließt NAND-Kette 700n SGS-Transistoren 700 und 701, Dummy-Speicherzellen 702 und 703, Datenspeicherzellen 704, 705, 706, 707, 708, 709, 710, 711, 712, 713 und 714, Dummy-Speicherzellen 715 und 716 und SGD-Transistoren 717 und 718 ein.In addition, NAND chain 700n includes SGS transistors 700 and 701, dummy memory cells 702 and 703, data memory cells 704, 705, 706, 707, 708, 709, 710, 711, 712, 713 and 714, dummy memory cells 715 and 716, and SGD transistors 717 and 718 on.

NAND-Kette 710n schließt SGS-Transistoren 720 und 721, Dummy-Speicherzellen 722 und 723, Datenspeicherzellen 724, 725, 726, 727, 728, 729, 730, 731, 732, 733 und 734, Dummy-Speicherzellen 735 und 736 und SGD-Transistoren 737 und 738 ein.NAND chain 710n includes SGS transistors 720 and 721, dummy memory cells 722 and 723, data memory cells 724, 725, 726, 727, 728, 729, 730, 731, 732, 733 and 734, dummy memory cells 735 and 736 and SGD transistors 737 and 738.

NAND-Kette 720n schließt SGS-Transistoren 740 und 741, Dummy-Speicherzellen 742 und 743, Datenspeicherzellen 744, 745, 746, 747, 748, 749, 750, 751, 752, 753 und 754, Dummy-Speicherzellen 755 und 756 und SGD-Transistoren 757 und 758 ein.NAND chain 720n includes SGS transistors 740 and 741, dummy memory cells 742 and 743, data memory cells 744, 745, 746, 747, 748, 749, 750, 751, 752, 753 and 754, dummy memory cells 755 and 756, and SGD -Transistors 757 and 758 on.

NAND-Kette 730n schließt SGS-Transistoren 760 und 761, Dummy-Speicherzellen 762 und 763, Datenspeicherzellen 764, 765, 766, 767, 768, 769, 770, 771, 772, 773 und 774, Dummy-Speicherzellen 775 und 776 und SGD-Transistoren 777 und 778 ein.NAND chain 730n includes SGS transistors 760 and 761, dummy memory cells 762 and 763, data memory cells 764, 765, 766, 767, 768, 769, 770, 771, 772, 773 and 774, dummy memory cells 775 and 776 and SGD -Transistors 777 and 778 on.

7 stellt ein zusätzliches Detail der Unterblöcke SB0 bis SB3 aus 6 dar. Beispielhafte Speicherzellen sind dargestellt, die sich in der x-Richtung entlang von Wortleitungen in jedem Unterblock erstrecken. Jede Speicherzelle ist der Einfachheit halber als Würfel dargestellt. SB0 schließt NAND-Ketten 700n, 701n, 702n und 703n ein. SB1 schließt NAND-Ketten 710n, 711n, 712n und 713n ein. SB2 schließt NAND-Ketten 720n, 721n, 722n und 723n ein. SB3 schließt NAND-Ketten 730n, 731n, 732n und 733n ein. Bitleitungen sind mit Sätzen von NAND-Ketten verbunden. Zum Beispiel ist eine Bitleitung BL0 mit NAND-Ketten 700n, 710n, 720n und 730n verbunden, eine Bitleitung BL1 ist mit NAND-Ketten 701n, 711n, 721n und 731n verbunden, eine Bitleitung BL2 ist mit NAND-Ketten 702n, 712n, 722n und 732n verbunden, und eine Bitleitung BL3 ist mit NAND-Ketten 703n, 713n, 723n und 733n verbunden. Abtastschaltlogik kann mit jeder Bitleitung verbunden sein. Zum Beispiel ist Abtastschaltlogik 780, 781, 782 und 783 mit Bitleitungen BL0, BL1, BL2 und BL3 verbunden. 7 provides additional detail of sub-blocks SB0 through SB3 6 Example memory cells are shown extending in the x-direction along word lines in each sub-block. Each memory cell is shown as a cube for simplicity. SB0 includes NAND strings 700n, 701n, 702n, and 703n. SB1 includes NAND strings 710n, 711n, 712n and 713n. SB2 includes NAND strings 720n, 721n, 722n and 723n. SB3 includes NAND strings 730n, 731n, 732n and 733n. Bit lines are connected to sets of NAND strings. For example, a bit line BL0 is connected to NAND strings 700n, 710n, 720n, and 730n, a bit line BL1 is connected to NAND strings 701n, 711n, 721n, and 731n, a bit line BL2 is connected to NAND strings 702n, 712n, 722n, and 732n, and a bit line BL3 is connected to NAND strings 703n, 713n, 723n and 733n. Sense circuitry may be connected to each bit line. For example, sense circuitry 780, 781, 782, and 783 is connected to bit lines BL0, BL1, BL2, and BL3.

Während eines Programmiervorgang kann die endgültige Vth-Verteilung mit einer oder mehreren Programmierschleifen erreicht werden. Eine Mehrfachimpuls-programmierte Speichervorrichtung kann unter Verwendung mehrerer Programmierschleifen programmiert werden. Umgekehrt kann eine Einzelimpuls-programmierte Speichervorrichtung über eine einzelne Programmierschleife oder einen einzelnen Programmierimpuls ohne Verifizierungsschritt programmiert werden. Für die Mehrfachimpulsprogrammierung kann jede nachfolgende Schleife einen erhöhten Programmierimpuls verwenden. Während einer Programmierschleife werden in bestimmten Ausführungsformen Programmverifizierungsiterationen für eine gewählte Wortleitung durchgeführt. Eine Programmverifizierungsiteration weist einen Programmierschritt / eine Programmierphase auf, in der eine Programmierspannung an die Wortleitung angelegt wird, gefolgt von einem Verifizierschritt / einer Verifizierphase, in der ein oder mehrere Verifiziertests durchgeführt werden. Jeder programmierte Zustand kann einen Verifizierimpuls einschließen, der in dem Verifiziertest für den Zustand verwendet wird.During a programming operation, the final Vth distribution can be reached with one or more programming loops. A multi-pulse programmed memory device can be programmed using multiple programming loops. Conversely, a single pulse programmed memory device can be programmed via a single programming loop or pulse without a verify step. For multi-pulse programming, each subsequent loop can use an increased programming pulse. During a program loop, in certain embodiments, program verification iterations are performed for a selected wordline. A program verification iteration comprises a programming step/phase in which a programming voltage is applied to the word line, followed by a verify step/phase in which one or more verify tests are performed. Each programmed state may include a verify pulse used in the verify test for the state.

8 stellt eine Wellenform eines exemplarischen herkömmlichen Programmiervorgangs dar. Insbesondere zeigt 8 zeigt einen Mehrfachimpuls-Programmiervorgang, bei dem schrittweise Programmierimpulse angelegt werden, um eine oder mehrere Speicherzellen zu programmieren. Die horizontale Achse stellt eine Programmschleifennummer (Program Loop, PL) dar, und die vertikale Achse stellt ein Speicherzellen-Steuer-Gate dar, auch bekannt als Wortleitungsspannung. Im Allgemeinen kann ein Programmiervorgang das Anlegen einer Impulsfolge an eine gewählte Wortleitung beinhalten, wobei die Impulsfolge mehrere Programmierschleifen oder Programmverifizierungsiterationen einschließt. Der Programmierteil der Programmverifizierungsiteration weist eine Programmierspannung auf, und der Verifizierteil der Programmverifizierungsiteration weist einen oder mehrere Verifizierimpulse auf. 8th FIG. 12 illustrates a waveform of an exemplary conventional programming operation. In particular, FIG 8th Fig. 1 shows a multi-pulse programming operation in which programming pulses are applied incrementally to program one or more memory cells. The horizontal axis represents a program loop (PL) number and the vertical axis represents a memory cell control gate, also known as a word line voltage. In general, a programming operation may involve the application of a pulse train to a selected wordline, where the pulse train includes multiple program loops or program verification iterations. The programming portion of the program verification iteration includes a programming voltage and the verifying portion of the program verification iteration includes one or more verify pulses.

Jede Programmierschleife schließt zwei Schritte in einem Ansatz ein. Ferner wird bei diesem Beispiel Inkrementschritt-Impulsprogrammierung (Incremental Step Pulse Programing, ISPP) verwendet, bei der die Programmierspannung in jeder aufeinanderfolgenden Programmierschleife um eine feste oder variierende Schrittgröße ansteigt.Each programming loop includes two steps in one approach. Also, this example uses Incremental Step Pulse Programming (ISPP) in which the programming voltage increases by a fixed or varying step size in each successive programming loop.

Die Wellenform 800 schließt eine Reihe von Programmierspannungen 852, 854 und 856 ein, die an eine zum Programmieren gewählte Wortleitung und an einen zugehörigen Satz nichtflüchtiger Speicherzellen angelegt werden. Ein oder mehrere Verifizierimpulse können als Beispiel nach jeder Programmierspannung auf Basis der verifizierten Zieldatenzustände bereitgestellt werden. An die gewählte Wortleitung können zwischen den Programmier- und Verifizierimpulsen 0 V angelegt werden. Zum Beispiel kann die Komponente zum gleichzeitigen Programmieren 150 den ersten Programmierimpuls 852 anlegen, einen Verifizierimpuls 860 anlegen, den zweiten Programmierimpuls 854 anlegen, den Verifizierimpuls 860 erneut anlegen und dann den dritten Programmierimpuls 856 anlegen. In einem anderen Ausführungsbeispiel schließt eine Auslösebedingung eine Speicherzelle ein, die auf eine Zielspannungsschwelle programmiert ist. In diesem Ausführungsbeispiel kann die Komponente zum gleichzeitigen Programmieren 150 die Impulsprogrammiersequenz abbrechen, zum Beispiel nach dem ersten Programmierimpuls 852 oder nach dem zweiten Programmierimpuls 854, als Reaktion auf das Bestimmen, dass sowohl die erste Speicherzelle als auch die zweite Speicherzelle die Zielschwellenspannung erreicht haben. Zusätzliche Beispiele für Einzelimpuls-Programmierphasen sind in US-Patent Nr. 8.134.871 dargelegt, das hierin durch Bezugnahme aufgenommen wird.Waveform 800 includes a series of programming voltages 852, 854 and 856 which are applied to a word line selected for programming and to an associated set of non-volatile memory cells. As an example, one or more verify pulses may be provided after each programming voltage based on the verified target data states. 0V can be applied to the selected word line between the program and verify pulses. For example, the concurrent programming component 150 may apply the first programming pulse 852, apply a verify pulse 860, apply the second programming pulse 854, apply the verify pulse 860 again, and then apply the third programming pulse 856. In another embodiment, a trigger condition includes a memory cell programmed to a target voltage threshold. In this embodiment, the simultaneous programming component 150 may abort the pulse programming sequence, for example after the first programming pulse 852 or after the second programming pulse 854, in response to determining that both the first memory cell and the second memory cell have reached the target threshold voltage. Additional examples for single pulse programmers phases are in U.S. Patent No. 8,134,871 set forth herein, which is incorporated herein by reference.

Bei anderen Ausführungsbeispielen schließt das Programmieren einer Speicherzelle unter Verwendung eines „Einzelimpulses“ das Anlegen eines einzelnen Programmierimpulses bei einer erhöhten Spannung ein, um die Zelle auf die Zielschwellenspannung zu programmieren, anstatt aufeinanderfolgende Programmierschleifen auszuführen, wie in 8 dargestellt. In einem Beispiel legt die Programmierschaltung 284 einen einzelnen Programmierimpuls mit Vpgm3 an, ohne Vpgm1 oder Vpgm2 anzulegen. In einem anderen Beispiel legt die Programmierschaltung 284 20 Volt an die Wortleitung für die Speicherzelle und eine untere Schwellenspannungsdifferenz an die Bitleitung für die Speicherzelle an. In diesem Beispiel wird die Spannungsdifferenz zwischen der Wortleitung und der Bitleitung an die Speicherzelle angelegt. In bestimmten Ausführungsformen schließt eine „erhöhte Spannung“ ein Spannungsniveau ein, das höher als die anfänglichen herkömmlichen Programmierschleifen bei einem herkömmlichen Programmiervorgang ist. In einem Beispiel beträgt eine „erhöhte Spannung“ 18 Volt. In einem anderen Ausführungsbeispiel beträgt eine „erhöhte Spannung“ zwischen 16 und 20 Volt.In other embodiments, programming a memory cell using a "single pulse" involves applying a single programming pulse at an elevated voltage to program the cell to the target threshold voltage, rather than performing sequential programming loops, as in 8th shown. In one example, programming circuitry 284 applies a single programming pulse at Vpgm3 without applying Vpgm1 or Vpgm2. In another example, the programming circuit 284 applies 20 volts to the word line for the memory cell and a lower threshold voltage difference to the bit line for the memory cell. In this example, the voltage difference between the word line and the bit line is applied to the memory cell. In certain embodiments, an "elevated voltage" includes a voltage level that is higher than the initial conventional programming loops in a conventional programming operation. In one example, an "elevated voltage" is 18 volts. In another embodiment, an "elevated voltage" is between 16 and 20 volts.

In anderen Ausführungsbeispielen wendet die Komponente zum gleichzeitigen Programmieren 150 erst eine Einzelimpuls-Programmiersequenz an und wendet anschließend eine Mehrphasen-Programmiersequenz an, wenn eine der ersten Speicherzelle und die zweite Speicherzelle nicht korrekt programmiert wurde. Insbesondere wendet bei einer solchen Ausführungsform die Programmierschaltung 284 anfänglich eine Einzelimpulsprogrammierung an, um die erste und zweite Speicherzelle gleichzeitig auf eine gemeinsame Zielschwellenspannung zu programmieren, und dann verifiziert die Verifizierschaltung 286 gleichzeitig das Programmierniveau der ersten Speicherzelle und der zweiten Speicherzelle. Wenn die Verifizierschaltung 286 bestimmt, dass eine von der ersten und der zweiten Speicherzelle nicht richtig programmiert ist, kann die Programmierschaltung 284 bei einer Ausführungsform eine Mehrimpuls-Programmierung anwenden, um die erste und zweite Speicherzelle getrennt zu programmieren, wie für Fachleute ersichtlich sein kann. Dieser Programmierschritt kann für die erste und zweite Speicherzelle zu unterschiedlichen Zeiten erfolgen (zum Beispiel durch Programmieren der ersten Speicherzelle und dann der zweiten Speicherzelle). Die Verifizierschaltung 286 verifiziert dann die erste und zweite Speicherzelle auf einwandfreie Programmierung. Dies kann für die erste und zweite Speicherzelle gleichzeitig oder zu unterschiedlichen Zeiten erfolgen (zum Beispiel durch Verifizieren der ersten Speicherzelle und dann der zweiten Speicherzelle auf einwandfreie Programmierung).In other embodiments, the simultaneous programming component 150 first applies a single-pulse programming sequence and then applies a multi-phase programming sequence when one of the first memory cell and the second memory cell has not been programmed correctly. In particular, in such an embodiment, the programming circuit 284 initially applies single-pulse programming to simultaneously program the first and second memory cells to a common target threshold voltage, and then the verifying circuit 286 simultaneously verifies the programming level of the first memory cell and the second memory cell. In one embodiment, if verification circuit 286 determines that one of the first and second memory cells is improperly programmed, programming circuit 284 may use multi-pulse programming to program the first and second memory cells separately, as may be appreciated by those skilled in the art. This programming step can be performed at different times for the first and second memory cells (e.g. by programming the first memory cell and then the second memory cell). The verification circuit 286 then verifies the first and second memory cells for proper programming. This may be done for the first and second memory cells at the same time or at different times (e.g. by verifying the first memory cell and then the second memory cell for proper programming).

In einem anderen Ausführungsbeispiel werden die erste Speicherzelle und die zweite Speicherzelle unabhängig voneinander in einer Reihe herkömmlicher Programmverifizierungsiterationen in einem Programmiervorgang programmiert. Nach Abschluss des Programmierdurchgangs überprüft die Komponente zum gleichzeitigen Programmieren 150 unabhängig, ob jede der Speicherzellen korrekt programmiert wurde.In another embodiment, the first memory cell and the second memory cell are independently programmed in a series of conventional program verification iterations in one programming operation. Upon completion of the programming pass, the concurrent programming component 150 independently verifies that each of the memory cells has been programmed correctly.

Fachleute werden erkennen, dass eine Vielzahl alternativer Zellprogrammierverfahren verwendet werden kann, um mehrere Speicherzellen separat zu programmieren. Einzelimpulsprogrammierung, Mehrfachimpulsprogrammierung und/oder Kombinationen davon können angewendet werden. Zusätzliche Beispiele für Einzelimpulsprogrammierung sind in US-Patent 9.343.141 dargelegt, das hierin durch Bezugnahme aufgenommen wird.Those skilled in the art will recognize that a variety of alternative cell programming methods can be used to separately program multiple memory cells. Single pulse programming, multiple pulse programming, and/or combinations thereof may be used. Additional examples of single pulse programming are in U.S. Patent 9,343,141 set forth herein, which is incorporated herein by reference.

9 stellt einen Abschnitt der Speicherzelle MC aus 5 dar, die das Einspritzen von Elektronen in eine Ladungseinfangregion bei Programmierung zeigt. Die Speicherzelle schließt ein Steuer-Gate 694, ein Barrieremetall 661a, ein Blockieroxid 660a, eine Ladungseinfangschicht 663, eine Tunnelschicht 664, einen Kanal 665 und einen dielektrischen Kern 666 ein. Aufgrund der erhöhten Wortleitungsspannung wird ein elektrisches Feld (E) erzeugt, das Elektronen vom Kanal 665 (siehe Beispiel Elektron 650) in die Ladungseinfangschicht 663 zieht, wodurch sich die Vth erhöht. Diese Programmierung kann durch den Fowler-Nordheim-Tunneleffekt verursacht werden. Dies ist eine Art von Elektronentunneln durch Fallen. 9 turns off a portion of memory cell MC 5 10 showing the injection of electrons into a charge trapping region during programming. The memory cell includes a control gate 694, a barrier metal 661a, a blocking oxide 660a, a charge trapping layer 663, a tunneling layer 664, a channel 665 and a dielectric core 666. Due to the increased wordline voltage, an electric field (E) is created that pulls electrons from channel 665 (see example electron 650) into charge trapping layer 663, thereby increasing the Vth. This programming can be caused by the Fowler-Nordheim tunneling effect. This is a type of electron tunneling by traps.

10 ist eine Draufsicht auf ein Array von Speicherzellen 1000, das einen Satz Bitleitungen 1050 und einen S/A-Datenlatch 1010 aufweist. In diesem Ausführungsbeispiel werden die Bitleitungen 1050 entsprechend Daten eingestellt, die am S/A-Datenlatch 1010 empfangen werden, und sind die Daten in bestimmte Speicherzellen zu schreiben, die gewählten Wortleitungen entsprechen, wie hierin beschrieben. 10 10 is a top view of an array of memory cells 1000 having a set of bit lines 1050 and an S/A data latch 1010. FIG. In this embodiment, bit lines 1050 are set according to data received at S/A data latch 1010 and the data is to be written into specific memory cells corresponding to selected word lines, as described herein.

In einem Ausführungsbeispiel werden die Bitleitungen 1050 entsprechend Daten eingestellt, die in eine Speicherzelle in jeder Kette von Speicherzellen entsprechend den gewählten Bitleitungen und in dem ersten Löschblock 1020 zu schreiben sind. Die Komponente zum gleichzeitigen Programmieren 150 wählt eine andere Wortleitung (in 10 nicht dargestellt) für eine Speicherzelle, die sich im zweiten Löschblock 1030 befindet. Wie zuvor beschrieben, verbindet die Komponente zum gleichzeitigen Programmieren 150 in diesem Ausführungsbeispiel elektrisch die Wortleitung für den ersten Löschblock 1020 und die Wortleitung für den zweiten Löschblock 1030, wodurch als Reaktion auf das Anlegen eines Programmierimpulses auf eine der Wortleitungen die Speicherzellen in beiden Blöcken 1020, 1030 gleichzeitig auf eine gemeinsame Zielschwellenspannung programmiert werden können. Somit werden die Speicherzellen in jedem Block 1020, 1030 gleichzeitig entsprechend dem für die Bitleitungen 1050 eingestellten Bitmuster programmiert.In one embodiment, the bit lines 1050 are set according to data to be written to a memory cell in each chain of memory cells corresponding to the selected bit lines and in the first erase block 1020. FIG. Simultaneous programming component 150 selects a different word line (in 10 not shown) for a memory cell located in the second erase block 1030. As previously described, the component connects to the concurrent Pro 150 electrically program 150 in this embodiment the wordline for the first erase block 1020 and the wordline for the second erase block 1030, thereby allowing the memory cells in both blocks 1020, 1030 to be simultaneously programmed to a common target threshold voltage in response to the application of a programming pulse to one of the wordlines . Thus, the memory cells in each block 1020, 1030 are programmed simultaneously according to the bit pattern set for the bit lines 1050.

In bestimmten Ausführungsformen wählt die Komponente zum gleichzeitigen Programmieren 150 den ersten Löschblock 1020 und den zweiten Löschblock 1030 so, dass sie mindestens einen Block voneinander entfernt sind. D. h. es kann mindestens ein Block zwischen dem ersten Löschblock 1020 und dem zweiten Löschblock 1030 liegen. In anderen Ausführungsformen wählt die Komponente zum gleichzeitigen Programmieren 150 die zwei Blöcke, die mindestens einen physischen Mindestabstand zueinander haben. Zum Beispiel beträgt der Mindestabstand 50 Nanometer, doch natürlich ist diese Offenbarung in dieser Hinsicht nicht begrenzt.In certain embodiments, the concurrent programming component 150 selects the first erase block 1020 and the second erase block 1030 to be at least one block apart. i.e. there may be at least one block between the first erase block 1020 and the second erase block 1030 . In other embodiments, the concurrent programming component 150 selects the two blocks that are at least a minimum physical distance from each other. For example, the minimum distance is 50 nanometers, but of course this disclosure is not limited in this regard.

Wie zuvor beschrieben, ist es durch die physische Trennung des ersten Löschblocks 1020 vom zweiten Löschblock 1030 weniger wahrscheinlich, dass ein physischer Ausfall des Arrays von Speicherzellen sowohl den ersten Löschblock 1020 als auch den zweiten Löschblock 1030 beeinträchtigt. In einem Ausführungsbeispiel trennt die Komponente zum gleichzeitigen Programmieren 150 das Array von Speicherzellen in separate physische Partitionen oder Abschnitte. In einem Beispiel unterteilt die Komponente zum gleichzeitigen Programmieren 150 das Array in vier Abschnitt, indem sie das Array vertikal und horizontal in zwei Hälften unterteilt. Natürlich können auch andere Partitionierungs- oder physische Aufteilungstechniken verwendet werden, und diese Offenbarung ist in dieser Hinsicht nicht beschränkt. Somit schließt, wie hierin beschrieben, ein „physischer Abschnitt“ einen Unterabschnitt eines Arrays von Speicherzellen ein, der sich physikalisch von anderen Speicherzellen in dem Array unterscheidet. Bei einigen Beispielen wird der physische Abschnitt anhand logischer Grenzen bestimmt. Daher bestehen möglicherweise keine physischen Unterschiede zwischen verschiedenen physischen Abschnitten.As previously described, the physical separation of the first erase block 1020 from the second erase block 1030 makes it less likely that a physical failure of the array of memory cells will affect both the first erase block 1020 and the second erase block 1030 . In one embodiment, the concurrent programming component 150 separates the array of memory cells into separate physical partitions or sections. In one example, the concurrent programming component 150 divides the array into four sections by dividing the array in half vertically and horizontally. Of course, other partitioning or physical partitioning techniques can also be used, and this disclosure is not limited in this regard. Thus, as described herein, a "physical portion" includes a sub-portion of an array of memory cells that is physically distinct from other memory cells in the array. In some examples, the physical section is determined based on logical boundaries. Therefore, there may not be physical differences between different physical sections.

11 ein Diagramm von Programmier- und Verifizierimpulsen gemäß einem Ausführungsbeispiel ist. In diesem Ausführungsbeispiel stellt die Komponente zum gleichzeitigen Programmieren 150, um einen gleichzeitigen Programmiervorgang auszuführen, die Spannung nicht gewählter Bitleitungen (Daten „1“) auf eine hohe Spannung (z. B. 2,5 Volt) und die Spannung gewählter Bitleitungen (Daten „0“) auf eine niedrige Spannung (z. B. 0 Volt), das Drain-Auswahl-Gate (SGD) in jedem Block 1020, 1030 auf VSGD (z. B. 2,5 Volt), die gewählten Wortleitungen im ersten Löschblock 1020 und im zweiten Löschblock 1030 auf einen Programmierimpuls (VPGM, z. B. 18 Volt), nicht gewählte Wortleitungen in jedem Block 1020, 1030 auf eine Boosting-Spannung (VPASS, z. B. 10 Volt), das Source-Auswahl-Gate auf 0 Volt und die Source-Leitungsspannung (CELSRC) auf PROGGRC (z. B. 2 Volt). 11 Figure 12 is a diagram of program and verify pulses according to one embodiment. In this embodiment, to perform a simultaneous programming operation, the concurrent programming component 150 sets the voltage of unselected bit lines (data "1") to a high voltage (e.g., 2.5 volts) and the voltage of selected bit lines (data "0") to a low voltage (e.g. 0 volts), the drain select gate (SGD) in each block 1020, 1030 to VSGD (e.g. 2.5 volts), the selected word lines in the first erase block 1020 and in the second erase block 1030 to a programming pulse (VPGM, e.g. 18 volts), unselected word lines in each block 1020, 1030 to a boosting voltage (VPASS, e.g. 10 volts), the source select Gate at 0 volts and the source line voltage (CELSRC) at PROGGRC (e.g. 2 volts).

In einem weiteren Ausführungsbeispiel stellt die Komponente zum gleichzeitigen Programmieren 150, um einen gleichzeitigen Verifiziervorgang durchzuführen, die Bitleitung auf eine Bitleitungsklemmspannung (VBLC), das SGD auf eine gewählte Gate-Spannung (VSG), jede gewählte Wortleitung in jedem Block auf einen Verifizierimpuls (Vverify), jede nicht gewählte Wortleitung auf eine Lesespannung (Vread), das SGS auf die gewählte Gate-Spannung VSG und die Source-Leitungsspannung (CELSRC) auf VCELSRC (z. B. 1 Volt).In another embodiment, to perform a simultaneous verify operation, the concurrent programming component 150 sets the bitline to a bitline clamp voltage (VBLC), the SGD to a selected gate voltage (VSG), each selected wordline in each block to a verify pulse (Vverify ), each unselected word line to a read voltage (Vread), the SGS to the selected gate voltage VSG, and the source line voltage (CELSRC) to VCELSRC (e.g., 1 volt).

12 stellt Abschnitte von zwei Blöcken gemäß einem Ausführungsbeispiel dar. Bitleitungen 1210a, 1210b, 1210c werden entsprechend Daten eingestellt, die in Speicherzellen in jedem der Blöcke geschrieben werden. In diesem Ausführungsbeispiel schließen die Blöcke einen ersten Löschblock 1220 und einen zweiten Löschblock 1230 ein. Obwohl in 12 drei Bitleitungen 1210 dargestellt sind, kann ein Array von Speicherzellen natürlich viel mehr Bitleitungen einschließen. Ferner können, obwohl zwei Blöcke dargestellt sind, optional eine oder mehrere zusätzliche Kopien hergestellt werden, zum Beispiel auf einem dritten Block (nicht gezeigt), einem vierten Block (nicht gezeigt) und so weiter. 12 12 illustrates portions of two blocks according to one embodiment. Bit lines 1210a, 1210b, 1210c are set according to data written to memory cells in each of the blocks. In this embodiment, the blocks include a first erase block 1220 and a second erase block 1230 . Although in 12 As three bit lines 1210 are shown, an array of memory cells can of course include many more bit lines. Furthermore, although two blocks are illustrated, one or more additional copies may optionally be made, for example on a third block (not shown), a fourth block (not shown), and so on.

In einem Ausführungsbeispiel wählt die Komponente zum gleichzeitigen Programmieren 150 elektrisch eine Bitleitung, um Zellen in NAND-Ketten zu programmieren, die mit der Bitleitung 1210 verbunden sind. In diesem speziellen Beispiel wählt die Komponente zum gleichzeitigen Programmieren 150 die Bitleitung 1210c. Die Komponente zum gleichzeitigen Programmieren 150 verbindet auch eine erste Wortleitung 1250, die einer ersten Speicherzelle 1221 entspricht, mit einer zweiten Wortleitung 1240, die einer zweiten Speicherzelle 1231 entspricht. Zum Beispiel kann die Komponente zum gleichzeitigen Programmieren150 einen Auswahl-Gate-Transistor wählen, um sowohl die erste Wortleitung 1250 als auch die zweite Wortleitung 1240 elektrisch mit einer gemeinsamen Verbindung zu verbinden. Insbesondere schließt der erste Löschblock 1220 eine erste NAND-Kette 1260 ein, die eine erste Wortleitung 1250 an einer ersten Speicherzelle 1221 kreuzt, und schließt ein zweiter Löschblock 1230 eine zweite Kette 1261 ein, die eine zweite Wortleitung 1240 an einer zweiten Speicherzelle 1231 kreuzt. Die Komponente zum gleichzeitigen Programmieren 150 legt einen Programmierimpuls an die verbundenen Wortleitungen 1240, 1250 an, wobei der Programmierimpuls an die erste Speicherzelle 1221 und die zweite Speicherzelle 1231 angelegt wird.In one embodiment, simultaneous programming component 150 electrically selects a bit line to program cells in NAND strings connected to bit line 1210 . In this particular example, simultaneous programming component 150 selects bit line 1210c. The simultaneous programming component 150 also connects a first word line 1250 corresponding to a first memory cell 1221 to a second word line 1240 corresponding to a second memory cell 1231 . For example, the simultaneous programming component 150 may select a select gate transistor to electrically connect both the first wordline 1250 and the second wordline 1240 to a common connection. In particular, the first erase block 1220 includes a first NAND chain 1260 crossing a first word line 1250 at a first memory cell 1221 and a second erase block 1230 includes a second chain 1261 crossing a second word line 1240 a second memory cell 1231 crosses. The simultaneous programming component 150 applies a programming pulse to the connected word lines 1240 , 1250 , the programming pulse being applied to the first memory cell 1221 and the second memory cell 1231 .

In einem anderen Ausführungsbeispiel legt die Komponente zum gleichzeitigen Programmieren 150 nach gleichzeitigem Anlegen des Programmierimpulses an die erste Wortleitung und zweite Wortleitung einen Verifizierimpuls auf die erste Wortleitung und zweite Wortleitung an. Insbesondere legt die Komponente zum gleichzeitigen Programmieren 150 die Spannungen an, die in dem unter Bezugnahme auf 11 beschriebenen Verifiziervorgang beschrieben sind. In diesem Ausführungsbeispiel tastet die Komponente zum gleichzeitigen Programmieren 150 dann den Stromfluss durch eine von der ersten Speicherzelle 1221 und der zweiten Speicherzelle 1231 ab (z. B. durch Abtasten des Stroms an einer Speicherzelle oder einem Ende der NAND-Kette) als Reaktion auf das Anlegen des Verifizierimpulses, um gleichzeitig zu bestimmen, dass eine von der ersten Speicherzelle 1221 und der zweiten Speicherzelle 1231 nicht korrekt programmiert ist. In einer Ausführungsform erfasst die Komponente zum gleichzeitigen Programmieren 150 dann den Strom, der durch die Bitleitung fließt, die mit NAND-Ketten verbunden ist, die gleichzeitig programmierte Speicherzellen enthalten. In einem anderen Ausführungsbeispiel programmiert die Komponente zum gleichzeitigen Programmieren 150 separat die erste Speicherzelle und die zweite Speicherzelle als Reaktion auf das Abtasten des Stroms durch eine von der ersten Speicherzelle 1221 und der zweiten Speicherzelle 1231, wie zuvor beschrieben. Wie zuvor beschrieben, kann das separate Programmieren in der gleichen Weise wie das anfängliche Programmieren der ersten Speicherzelle 1221 und der zweiten Speicherzelle 1231 durchgeführt werden, oder das separates Programmieren kann anders erfolgen, zum Beispiel durch separates Programmieren der ersten Speicherzelle 1221 und der zweiten Speicherzelle 1231 und/oder mit einer anderen Programmierimpulsstruktur wie herkömmliches Programmieren oder über Mehrfachimpulsprogrammierung oder dergleichen.In another embodiment, the simultaneous programming component 150 applies a verify pulse to the first wordline and second wordline after simultaneously applying the programming pulse to the first wordline and second wordline. In particular, the concurrent programming component 150 applies the voltages described in FIG 11 described verification process are described. In this embodiment, the simultaneous programming component 150 then senses the current flow through one of the first memory cell 1221 and the second memory cell 1231 (e.g., by sensing the current at a memory cell or an end of the NAND chain) in response to the Applying the verify pulse to simultaneously determine that one of the first memory cell 1221 and the second memory cell 1231 is programmed incorrectly. In one embodiment, the concurrent programming component 150 then senses the current flowing through the bit line connected to NAND strings containing concurrently programmed memory cells. In another embodiment, the simultaneous programming component 150 separately programs the first memory cell and the second memory cell in response to sensing current through one of the first memory cell 1221 and the second memory cell 1231, as previously described. As previously described, the separate programming can be performed in the same manner as the initial programming of the first memory cell 1221 and the second memory cell 1231, or the separate programming can be performed differently, for example by separately programming the first memory cell 1221 and the second memory cell 1231 and/or with a different programming pulse structure such as conventional programming or via multi-pulse programming or the like.

13 stellt eine Ausführungsform eines Verfahrens 1309 zum gleichzeitigen Programmieren von Zellen eines Speicherarrays dar. Das Verfahren 1309 kann jedes Mal ausgeführt werden, wenn eines oder mehrere der nichtflüchtigen Speicherelemente 123 programmiert werden sollen. Das Verfahren 1309 kann von der Die-Steuerung 220 zum Beispiel unter Verwendung der verschiedenen Schaltungen ausgeführt werden, die in 1B dargestellt sind. Alternativ kann das Verfahren 1309 mit anderer Hardware wie der Steuerung 244 aus 1B und/oder der nichtflüchtigen Speichermediensteuerung 126 aus 1A ausgeführt werden. 13 13 illustrates one embodiment of a method 1309 for simultaneously programming cells of a memory array. The method 1309 may be performed each time one or more of the non-volatile memory elements 123 are to be programmed. Process 1309 may be performed by die controller 220, for example, using the various circuitry described in 1B are shown. Alternatively, method 1309 can be performed with other hardware such as controller 244 1B and/or the non-volatile storage media controller 126 1A to be executed.

Wie gezeigt, kann das Verfahren 1309 beginnen 1310 mit einem Schritt 1312, in dem eine Bitleitung gewählt wird, die zu programmierenden Speicherzellen (z. B. den nichtflüchtigen Speicherelementen 123 des Speicherarrays 200) entspricht. In einem Ausführungsbeispiel empfängt die Komponente zum gleichzeitigen Programmieren 150 einen Befehl zum Programmieren eines oder mehrerer der nichtflüchtigen Speicherelemente 123 des Speicherarrays 200. Der Befehl kann zum Beispiel in der Die-Steuerung 220 empfangen werden. Ein solcher Befehl kann in der Programmierschaltung 284 der Die-Steuerung 220 empfangen werden.As shown, the method 1309 may begin 1310 with a step 1312 of selecting a bit line corresponding to memory cells (e.g., non-volatile memory elements 123 of memory array 200) to be programmed. In one embodiment, concurrent programming component 150 receives a command to program one or more of non-volatile memory elements 123 of memory array 200. The command may be received in die controller 220, for example. Such a command can be received in the programming circuitry 284 of the die controller 220 .

In einem Schritt 1314 werden Wortleitungen für Speicherzellen in zwei verschiedenen Blöcken oder in alternativen Ausführungsformen in einer gemeinsamen NAND-Kette innerhalb desselben Blocks gewählt. In einem Ausführungsbeispiel werden die Wortleitungen in separaten Blöcken elektrisch verbunden, wie zuvor beschrieben.In a step 1314, word lines are selected for memory cells in two different blocks or, in alternative embodiments, in a common NAND chain within the same block. In one embodiment, the word lines are electrically connected in separate blocks as previously described.

In einem Schritt 1316 wird ein Programmierimpuls an die verbundenen Wortleitungen angelegt, um die Speicherzellen in den zwei verschiedenen Blöcken gleichzeitig zu programmieren. Dies kann durch die Programmierschaltung 284 erfolgen, die den Programmierimpuls gleichzeitig an beide gewählte Wortleitungen anlegen kann, wodurch die erste Speicherzelle 1221 und die zweite Speicherzelle 1231 programmiert werden.In a step 1316, a programming pulse is applied to the connected word lines to program the memory cells in the two different blocks simultaneously. This can be done by the programming circuit 284, which can apply the programming pulse to both selected word lines simultaneously, thereby programming the first memory cell 1221 and the second memory cell 1231.

In einem Schritt 1320 wird gleichzeitig ein Verifizierimpuls an die verbundenen Wortleitungen angelegt. Dies kann zum Beispiel durch die Verifizierschaltung 286 erfolgen.In a step 1320, a verify pulse is simultaneously applied to the connected word lines. This can be done by verification circuitry 286, for example.

In einem Schritt 1322 wird ein Stromfluss durch eine von der ersten Speicherzelle und der zweiten Speicherzelle abgetastet, um zu bestimmen, ob die erste und zweite Speicherzelle 1221, 1231 korrekt programmiert wurden. Wie zuvor beschrieben, kann, wenn das Speicherarray 200 ein NAND-Array mit herkömmlicher Architektur ist, ein Stromfluss durch die Bitleitung als Reaktion auf das Anlegen des Verifizierimpulses darauf hinweisen, dass die erste Speicherzelle und/oder die zweite Speicherzelle nicht korrekt programmiert wurden.In a step 1322, current flow through one of the first memory cell and the second memory cell is sensed to determine whether the first and second memory cells 1221, 1231 have been correctly programmed. As previously described, when memory array 200 is a conventional architecture NAND array, current flow through the bit line in response to application of the verify pulse may indicate that the first memory cell and/or the second memory cell has not been correctly programmed.

In einem Ausführungsbeispiel schließt der „Abtaststrom“ einen geladenen Kondensator ein, der dann mit einer Bitleitung verbunden wird, indem ein Spannungsimpuls an die Wortleitung angelegt wird. Als Reaktion darauf leitet die Speicherzelle, wenn die Speicherzelle eine Schwellenspannung auf oder unter dem Spannungsniveau auf den Wortleitungen hat, einen Strom, der von der Bitleitung zu einer Stromentnahme fließen kann. In diesem Ausführungsbeispiel ist Stromabtasten ein einfaches Bestimmen, wie stark sich der Kondensator entladen hat, als er an die Bitleitung angeschlossen war.In one embodiment, the "sense stream" includes a charged capacitor, which is then connected to a bit line by applying a voltage pulse to the word line. In response, if the memory cell has a threshold voltage at or below the voltage level on the word lines, the memory cell conducts a current flowing from the bit line a current draw can flow. In this embodiment, current sensing is simply determining how much the capacitor discharged when connected to the bit line.

Als Reaktion darauf, dass sowohl die erste Speicherzelle als auch die zweite Speicherzelle korrekt programmiert wurden, wird das Verfahren 1309 in einem Schritt 1318 fortgesetzt. In Schritt 1318 werden Daten, die im Schritt 1316 in eine von der ersten Speicherzelle 1221 und der zweiten Speicherzelle 1231 geschrieben wurden, gelesen und zum Programmieren einer mehrstufigen Zelle in einem SLC-TLC-Verdichtungsvorgang (Faltvorgang) verwendet. Der SLC-TLC-Verdichtungsvorgang kann mit jedem Verfahren nach Stand der Technik ausgeführt werden. In einigen Ausführungsformen werden die Daten aus der ersten Speicherzelle 1221 und/oder der zweiten Speicherzelle 1231 abgerufen und dann mit anderen Daten (wie einem in einer dritten Speicherzelle und einer vierten Speicherzelle gespeicherten doppelten Bit) kombiniert, um den in der mehrstufigen Zelle zu speichernden Wert (zum Beispiel 0, 1 oder 2) bereitzustellen. Der Wert wird dann in die mehrstufige Zelle geschrieben.The method 1309 proceeds to a step 1318 in response to both the first memory cell and the second memory cell being correctly programmed. In step 1318, data written in step 1316 to one of the first memory cell 1221 and the second memory cell 1231 is read and used to program a multi-level cell in an SLC-TLC compression (folding) process. The SLC-TLC compression process can be performed using any prior art method. In some embodiments, the data is retrieved from the first memory cell 1221 and/or the second memory cell 1231 and then combined with other data (such as a double bit stored in a third memory cell and a fourth memory cell) to form the value to be stored in the multi-level cell (e.g. 0, 1 or 2). The value is then written into the multilevel cell.

Das Verfahren wird bei einem Schritt 1324 fortgesetzt, und die Komponente zum gleichzeitigen Programmieren 150 überschreibt die zweite Speicherzelle. Wie hierin verwendet, schließt „Überschreiben“ ein, dass die Komponente zum gleichzeitigen Programmieren 150 in einem nachfolgenden Programmiervorgang (der nach dem ersten Löschen der zweiten Speicherzelle erfolgen kann) einen anderen Datenwert in der Speicherzelle speichert. In anderen Beispielen wird in Schritt 1324 die zweite Speicherzelle zur Wiederverwendung gekennzeichnet, gelöscht oder anderweitig für die Verwendung zum Speichern anderer Daten vorbereitet. Das Verfahren 1309 endet dann 1350.The method continues at step 1324 and the simultaneous programming component 150 overwrites the second memory cell. As used herein, "overwriting" includes the concurrent programming component 150 storing a different data value in the memory cell in a subsequent programming operation (which may occur after the second memory cell is first erased). In other examples, in step 1324, the second memory cell is marked for reuse, erased, or otherwise prepared for use to store other data. The method 1309 then ends 1350.

Als Reaktion darauf, dass eine von der ersten Speicherzelle und der zweiten Speicherzelle nicht korrekt programmiert wurde, wird das Verfahren 1309 mit Schritt 1326 fortgesetzt und programmiert die Programmierschaltung die erste Speicherzelle und die zweite Speicherzelle separat. Wie zuvor erwähnt, kann separates Programmieren für die erste Speicherzelle 1221 und die zweite Speicherzelle 1231 mit den gleichen Einzelimpulsverfahren ausgeführt werden, wie im Schritt 1316 verwendet. Alternativ können die erste Speicherzelle 1221 und die zweite Speicherzelle 1231 separat und/oder durch die Verwendung verschiedener Verfahren wie Mehrfachimpulsprogrammierung programmiert werden.In response to one of the first memory cell and the second memory cell being incorrectly programmed, the method 1309 proceeds to step 1326 and the programming circuit programs the first memory cell and the second memory cell separately. As previously mentioned, separate programming for the first memory cell 1221 and the second memory cell 1231 can be performed with the same single pulse methods as used in step 1316. Alternatively, the first memory cell 1221 and the second memory cell 1231 may be programmed separately and/or by using different methods such as multi-pulse programming.

Nach Abschluss des separaten Programmiervorgangs in Schritt 1326 wird das Verfahren mit Schritt 1320 fortgesetzt und ein Verifizierimpuls erneut an die Speicherzellen angelegt. Der Verifizierimpuls kann wahlweise wie bei der vorherigen Iteration des Schritts 1320 angelegt werden, d. h. durch gleichzeitiges Anlegen des Verifizierimpulses an die Wortleitungen, die der ersten Speicherzelle 1221 und der zweiten Speicherzelle 1231 entsprechen. Alternativ kann anstelle des Schritts 1320 ein modifizierter Verifiziervorgang angewendet werden, bei dem die korrekte Programmierung der ersten Speicherzelle 1221 und der zweiten Speicherzelle 1231 individuell bewertet wird, zum Beispiel durch Anlegen des Verifizierimpulses nur an die Wortleitung für die erste Speicherzelle 1221, Lesen des Stroms durch die Bitleitung 1210c und dann Anlegen des Verifizierimpulses nur an die Wortleitung für die zweite Speicherzelle 1231, erneutes Lesen des Stroms durch die Bitleitung 1210c.After completing the separate programming operation in step 1326, the method proceeds to step 1320 and a verify pulse is again applied to the memory cells. Optionally, the verify pulse may be applied as in the previous iteration of step 1320, i. H. by applying the verify pulse to the word lines corresponding to the first memory cell 1221 and the second memory cell 1231 simultaneously. Alternatively, instead of step 1320, a modified verify process can be applied, in which the correct programming of the first memory cell 1221 and the second memory cell 1231 is individually evaluated, for example by applying the verify pulse only to the word line for the first memory cell 1221, reading the current through the bit line 1210c and then applying the verify pulse only to the word line for the second memory cell 1231, reading the current through the bit line 1210c again.

14 stellt eine Ausführungsform von Schritt 1326 zum separaten Programmieren von Zellen eines Speicherarrays dar. Der Schritt 1326 kann jedes Mal ausgeführt werden, wenn die erste Speicherzelle und/oder die zweite Speicherzelle nicht korrekt programmiert wird. Bei einigen Ausführungsformen ist möglicherweise nicht bekannt, ob es die erste Speicherzelle 1221 oder die zweite Speicherzelle 1231 war, die nicht korrekt programmiert wurde; somit kann der Schritt 1326 separates Programmieren sowohl der ersten Speicherzelle 1221 als auch der zweiten Speicherzelle 1231 nach sich ziehen. Der Schritt 1326 kann von der Die-Steuerung 220 zum Beispiel unter Verwendung der verschiedenen Schaltungen ausgeführt werden, die in 1B dargestellt sind. Alternativ kann der Schritt 1326 mit anderer Hardware wie der Steuerung 244 aus 1B und/oder der nichtflüchtigen Speichermediensteuerung 126 aus 1A ausgeführt werden. 14 13 illustrates one embodiment of step 1326 for programming cells of a memory array separately. Step 1326 may be performed whenever the first memory cell and/or the second memory cell is not programmed correctly. In some embodiments, it may not be known whether it was the first memory cell 1221 or the second memory cell 1231 that was not programmed correctly; thus, step 1326 may entail programming both the first memory cell 1221 and the second memory cell 1231 separately. Step 1326 may be performed by the die controller 220 using, for example, the various circuitry described in FIG 1B are shown. Alternatively, step 1326 can be accomplished with other hardware such as controller 244 1B and/or the non-volatile storage media controller 126 1A to be executed.

Wie gezeigt, kann der Schritt 1326 mit einem Schritt 1412 beginnen, bei dem ein herkömmlicher Verifizierimpuls an die erste Speicherzelle 1221 angelegt wird. In diesem Ausführungsbeispiel ist möglicherweise nicht bekannt, welche der zwei Speicherzellen 1221, 1231 nicht korrekt programmiert wurde. Somit wird bei diesem Ausführungsbeispiel jede der zwei Speicherzellen 1221, 1231 unabhängig programmiert. Somit sind die erste Speicherzelle 1221 und die zweite Speicherzelle 1231 zur Durchführung des Schritts 1412 und des Schritts 1420 (unten beschrieben) elektrisch nicht gekoppelt. Falls gewünscht, kann die zweite Speicherzelle 1231 gleichzeitig mit dem Umprogrammieren der ersten Speicherzelle 1221 umprogrammiert werden, indem unabhängig und gleichzeitig Programmspannungen an die entsprechenden Wortleitungen für die erste Speicherzelle 1221 und die zweite Speicherzelle 1231 angelegt werden.As shown, step 1326 may begin with step 1412 where a conventional verify pulse is applied to the first memory cell 1221 . In this embodiment, it may not be known which of the two memory cells 1221, 1231 was programmed incorrectly. Thus, in this embodiment, each of the two memory cells 1221, 1231 is programmed independently. Thus, the first memory cell 1221 and the second memory cell 1231 are not electrically coupled to perform step 1412 and step 1420 (described below). If desired, the second memory cell 1231 can be reprogrammed simultaneously with the reprogramming of the first memory cell 1221 by independently and simultaneously applying program voltages to the corresponding word lines for the first memory cell 1221 and the second memory cell 1231.

In einem Schritt 1414 wird bestimmt, ob die erste Speicherzelle korrekt programmiert ist. In einem Beispiel wird ein Strom an einer Abtastkomponente abgetastet, die an beiden Enden einer NAND-Kette befestigt ist, die die erste Speicherzelle einschließt, und als Reaktion auf den Stromfluss durch die erste Speicherzelle wird bestimmt, dass die erste Speicherzelle nicht erfolgreich programmiert wurde.In a step 1414, it is determined whether the first memory cell is correctly programmed. In In one example, a current is sensed at a sensing component attached to both ends of a NAND string that includes the first memory cell, and in response to the current flow through the first memory cell, it is determined that the first memory cell was not successfully programmed.

Als Reaktion auf das Stromabtasten in Schritt 1414 wird das Verfahren mit Schritt 1416 fortgesetzt und ein erhöhter Programmierimpuls angelegt, wie hierin beschrieben. Jedes geeignete Programmierimpulses-Inkrement kann verwendet werden. Bei einigen Ausführungsformen wird eine Nachschlagetabelle mit Programmierimpulsen oder Inkrementen verwendet; jede Iteration von Schritt 1414 setzt den Programmierimpuls auf den nächsten Programmierimpuls oder erhöht den Programmierimpuls um das nächste Inkrement in der Nachschlagetabelle.In response to the current sensing at step 1414, the method proceeds to step 1416 and an elevated programming pulse is applied, as described herein. Any suitable programming pulse increment can be used. In some embodiments, a look-up table of programming pulses or increments is used; each iteration of step 1414 sets the programming pulse to the next programming pulse or increases the programming pulse by the next increment in the look-up table.

In einem Schritt 1418 wird als Teil eines herkömmlichen Programmiervorgangs ein erhöhter Programmierimpuls an die erste Speicherzelle angelegt, und der Schritt 1326 wird mit Schritt 1412 fortgesetzt, wie zuvor beschrieben. In diesem Ausführungsbeispiel des Verfahrens können die Schritte 1414, 1416, 1418 und 1412 viele Male wiederholt werden. Als Reaktion darauf, dass die erste Speicherzelle korrekt programmiert wurde, wird das Verfahren 1309 mit einem Schritt 1420 fortgesetzt. Vor allem, wenn die erste Speicherzelle 1221 bestimmte Kriterien wie Überschreiten einer Schwellenanzahl von Programmierimpulsen erfüllt, kann zum Erhalten einer korrekten Anzahl der Programmierung die erste Speicherzelle 1221 für eine zukünftig reduzierte Verwendung oder Nichtverwendung gekennzeichnet werden. Falls gewünscht, kann die erste Speicherzelle 1221 weiterhin in dem aktuellen Speichervorgang verwendet werden. Alternativ besteht die Möglichkeit, die erste Speicherzelle 1221 nicht zu verwenden und die in die erste Speicherzelle 1221 zu schreibenden Daten stattdessen in eine andere Speicherzelle zu schreiben (möglicherweise in einen dritten Block, der sich von dem ersten Löschblock 1220 und dem zweiten Löschblock 1230 unterscheidet).In step 1418, as part of a conventional programming operation, a boosted programming pulse is applied to the first memory cell and step 1326 proceeds to step 1412 as previously described. In this embodiment of the method, steps 1414, 1416, 1418, and 1412 may be repeated many times. Method 1309 proceeds to step 1420 in response to the first memory cell being correctly programmed. In particular, if the first memory cell 1221 meets certain criteria such as exceeding a threshold number of programming pulses, to obtain a correct number of programming, the first memory cell 1221 can be marked for future reduced use or non-use. If desired, the first memory cell 1221 can continue to be used in the current memory operation. Alternatively, there is a possibility not to use the first memory cell 1221 and instead to write the data to be written into the first memory cell 1221 into another memory cell (possibly into a third block different from the first erase block 1220 and the second erase block 1230) .

In Schritt 1420 wird ein Verifizierimpuls an die zweite Speicherzelle 1231 angelegt. In einem Schritt 1426 wird bestimmt, ob die zweite Speicherzelle 1231 korrekt programmiert ist. In einem Beispiel wird ein Strom an einer von der ersten Speicherzelle und der zweiten Speicherzelle abgetastet, und als Reaktion auf den Stromfluss durch die Bitleitung wird bestimmt, dass die zweite Speicherzelle nicht erfolgreich programmiert wurde. Wie im Zusammenhang mit dem Schritt 1412 beschrieben, können die erste Speicherzelle 1221 und die zweite Speicherzelle 1231 zum Durchführen des Schritts 1420 wahlweise elektrisch entkoppelt werden, sodass die Programmierung nur der zweiten Speicherzelle 1231 verifiziert werden kann.In step 1420 a verify pulse is applied to the second memory cell 1231 . In a step 1426 it is determined whether the second memory cell 1231 is correctly programmed. In one example, a current is sensed at one of the first memory cell and the second memory cell and, in response to the current flow through the bit line, it is determined that the second memory cell was not successfully programmed. As described in connection with step 1412, the first memory cell 1221 and the second memory cell 1231 can optionally be electrically decoupled to perform step 1420 so that the programming of only the second memory cell 1231 can be verified.

Als Reaktion auf das Stromabtasten in Schritt 1426 wird das Verfahren 1309 mit Schritt 1424 fortgesetzt und ein Programmierimpuls erhöht, wie hierin beschrieben. Jedes geeignete Verfahren kann zum Berechnen des neuen Programmierimpulses verwendet werden. Wie in Schritt 1416 kann eine Nachschlagetabelle oder dergleichen verwendet werden.In response to the current sensing at step 1426, the method 1309 proceeds to step 1424 and a programming pulse is increased as described herein. Any suitable method can be used to calculate the new programming pulse. As in step 1416, a lookup table or the like may be used.

In einem Schritt 1422 wird ein erhöhter Programmierimpuls an die zweite Speicherzelle 1231 angelegt, und der Schritt 1326 wird mit Schritt 1420 fortgesetzt, wie zuvor beschrieben. Wie die Schritte 1412, 1414, 1416 und 1418 können die Schritte 1426, 1424, 1422 und 1420 viele Male wiederholt werden. Als Reaktion darauf, dass die zweite Speicherzelle korrekt programmiert wurde, wird das Verfahren 1309 mit einem Schritt 1320 fortgesetzt.In a step 1422, a boosted programming pulse is applied to the second memory cell 1231 and the step 1326 proceeds to step 1420 as previously described. Like steps 1412, 1414, 1416, and 1418, steps 1426, 1424, 1422, and 1420 can be repeated many times. Method 1309 proceeds to step 1320 in response to the second memory cell being correctly programmed.

Ausführungsformen schließen gleichzeitiges Programmieren derselben Daten in verschiedene Sätze von Speicherzellen ein. In einer Ausführungsform sind die verschiedenen Sätze von Speicherzellen alle demselben Satz von Bitleitungen zugeordnet. In einer Ausführungsform sind die verschiedenen Sätze von Speicherzellen alle in derselben Ebene. Die Spannung der Bitleitungen kann gemäß einem Datenmuster eingestellt werden, wobei „n“ Kopien des Datenmusters gleichzeitig in n Sätze von Speicherzellen programmiert werden, wobei n eine ganze Zahl größer als 1 ist.Embodiments include programming the same data into different sets of memory cells at the same time. In one embodiment, the different sets of memory cells are all associated with the same set of bit lines. In one embodiment, the different sets of memory cells are all in the same plane. The voltage of the bit lines can be set according to a data pattern, where "n" copies of the data pattern are programmed simultaneously into n sets of memory cells, where n is an integer greater than 1.

Das gleichzeitige Programmieren kann beim Programmieren von Speicherzellen auf ein Bit pro Zelle (SLC), zwei Bits pro Zelle, drei Bits pro Zelle (TLC), vier Bits pro Zelle (QLC), fünf Bits pro Zelle (QLC) usw. verwendet werden. Die 15A - 15D zeigen die Verteilungen der Schwellenspannung (Vt), die sich nach dem gleichzeitigen Programmieren auf verschiedene Anzahlen von Bits pro Zelle ergeben. 15 zeigt die Vt-Verteilungen für das SLC-Programmieren. Zunächst werden die Speicherzellen bis zum Löschzustand („1“) gelöscht. Eine Löschverifzierspannung (Vev) kann verwendet werden, um zu verifizieren, ob die Speicherzellen ausreichend gelöscht sind. Anschließend werden die gleichen Daten gleichzeitig in verschiedene Sätze von Speicherzellen programmiert. In einer Ausführungsform werden ausgewählte Speicherzellen gleichzeitig vom Löschzustand in den Datenzustand („0“) programmiert. Optional kann eine Verifizierspannung (Vv) verwendet werden, um zu verifizieren, ob die Vt der Speicherzellen den Datenzustand erreicht hat. Eine Lesespannung (Vr) kann verwendet werden, um zwischen dem Löschzustand und dem Datenzustand zu unterscheiden.Simultaneous programming can be used in programming memory cells to one bit per cell (SLC), two bits per cell, three bits per cell (TLC), four bits per cell (QLC), five bits per cell (QLC), and so on. the 15A - 15D show the threshold voltage (Vt) distributions obtained after simultaneous programming to different numbers of bits per cell. 15 shows the Vt distributions for SLC programming. First, the memory cells are erased up to the erase state ("1"). An erase verify voltage (Vev) can be used to verify if the memory cells are sufficiently erased. Then the same data is simultaneously programmed into different sets of memory cells. In one embodiment, selected memory cells are simultaneously programmed from the erase state to the data ("0") state. Optionally, a verify voltage (Vv) can be used to verify whether the Vt of the memory cells has reached the data state. A read voltage (Vr) can be used to distinguish between the erase state and the data state.

15B zeigt die Vt-Verteilung, die sich aus einem Prozess des gleichzeitigen Programmierens von Speicherzellen auf zwei Bits pro Zelle ergeben kann. Zunächst werden die Speicherzellen bis zum Löschzustand („Er“) gelöscht. Dann können die Speicherzellen gleichzeitig auf die verschiedenen Datenzustände (A-Zustand, B-Zustand, C-Zustand) programmiert werden. Optional können Verifizierspannungen (Vva, VvB, VvC) verwendet werden, um zu verifizieren, ob die Vt der Speicherzellen ihre entsprechenden Zieldatenzustände erreicht haben. Lesespannungen (VrA, VrB, VrC) können zur Unterscheidung zwischen den Zuständen verwendet werden. 15B Figure 12 shows the Vt distribution that can result from a process of simultaneously programming memory cells to two bits per cell. First, the memory cells are erased to the erase state ("Er"). Then the memory cells can be programmed simultaneously to the different data states (A-state, B-state, C-state). Optionally, verify voltages (Vva, VvB, VvC) can be used to verify whether the Vt of the memory cells have reached their respective target data states. Reading voltages (VrA, VrB, VrC) can be used to distinguish between the states.

15C zeigt die Vt-Verteilung, die sich aus einem Prozess des gleichzeitigen Programmierens von Speicherzellen auf drei Bits pro Zelle ergeben kann. Zunächst werden die Speicherzellen bis zum Löschzustand („Er“) gelöscht. Dann können die Speicherzellen gleichzeitig auf die verschiedenen Datenzustände (A-Zustand, B-Zustand, C-Zustand, D-Zustand, E-Zustand, F-Zustand, G-Zustand) programmiert werden. Optional können Verifizierspannungen (Vva, VvB, VvC, VvD, VvE, VvF, VvG) verwendet werden, um zu verifizieren, ob die Vt der Speicherzellen ihre entsprechenden Zieldatenzustände erreicht haben. Lesespannungen (VrA, VrB, VrC, VrD, VrE, VrF, VrG) können zur Unterscheidung zwischen den Zuständen verwendet werden. 15C Figure 1 shows the Vt distribution that can result from a process of simultaneously programming memory cells to three bits per cell. First, the memory cells are erased to the erase state ("Er"). Then the memory cells can be simultaneously programmed to the different data states (A-state, B-state, C-state, D-state, E-state, F-state, G-state). Optionally, verify voltages (Vva, VvB, VvC, VvD, VvE, VvF, VvG) can be used to verify whether the Vt of the memory cells have reached their respective target data states. Reading voltages (VrA, VrB, VrC, VrD, VrE, VrF, VrG) can be used to distinguish between the states.

15D zeigt die Vt-Verteilung, die sich aus einem Prozess des gleichzeitigen Programmierens von Speicherzellen auf vier Bits pro Zelle ergeben kann. Zunächst werden die Speicherzellen bis zum Löschzustand („S0“) gelöscht. Dann können die Speicherzellen gleichzeitig auf die verschiedenen Datenzustände (S0 - S15) programmiert werden. Lesespannungen (Vr1-Vr15) können zur Unterscheidung zwischen den Zuständen verwendet werden. 15D Figure 12 shows the Vt distribution that can result from a process of simultaneously programming memory cells to four bits per cell. First, the memory cells are erased until they reach the erased state ("S0"). Then the memory cells can be programmed simultaneously to the different data states (S0 - S15). Read voltages (Vr1-Vr15) can be used to distinguish between the states.

16 ist ein Flussdiagramm einer Ausführungsform eines Prozesses 1600 zum gleichzeitigen Programmieren verschiedener Sätze von Speicherzellen. In einer Ausführungsform befindet sich jeder Satz in einem anderen Löschblock. Hierin bedeutet der Begriff „ausgewählter Löschblock“ einen Löschblock, in dem Speicherzellen programmiert werden sollen. In einigen Ausführungsformen gibt es drei oder mehr ausgewählte Löschblöcke in Prozess 1600. Der Prozess 1600 kann zur Programmierung von Speicherzellen mit einem Bit pro Zelle (SLC), zwei Bits pro Zelle, drei Bits pro Zelle (TLC), vier Bits pro Zelle (QLC), fünf Bits pro Zelle (PLC) oder einer anderen Anzahl von Bits pro Zelle verwendet werden. 16 FIG. 16 is a flow diagram of one embodiment of a process 1600 for simultaneously programming different sets of memory cells. In one embodiment, each sentence is in a different erase block. Herein, the term “selected erase block” means an erase block in which memory cells are to be programmed. In some embodiments, there are three or more erase blocks selected in process 1600. Process 1600 can be used to program memory cells with one bit per cell (SLC), two bits per cell, three bits per cell (TLC), four bits per cell (QLC ), five bits per cell (PLC), or some other number of bits per cell.

Schritt 1602 schließt das Anlegen von Spannungen an die Bitleitungen gemäß einem zu programmierenden Datenmuster ein. In einer Ausführungsform werden die an die Bitleitungen angelegten Spannungen entsprechend Daten, die am S/A-Datenlatch 1010 empfangen werden, eingestellt. In einer Ausführungsform wird eine Programmfreigabespannung (z. B. 0 V) verwendet, um das Programmieren einer ausgewählten Speicherzelle in einer ausgewählten NAND-Kette freizugeben, und eine Programmsperrspannung (z. B. 2,5 V) wird verwendet, um das Programmieren in einer nicht ausgewählten NAND-Kette zu sperren. Die Bitleitungen, an welche die Programmfreigabespannung angelegt wird, werden als ausgewählte Bitleitungen bezeichnet. Die Bitleitungen, an denen die Programmsperrspannung anliegt, werden entweder als programmgesperrte Bitleitungen oder als nicht ausgewählte Bitleitungen bezeichnet.Step 1602 includes applying voltages to the bit lines according to a data pattern to be programmed. In one embodiment, the voltages applied to the bit lines are adjusted according to data received at S/A data latch 1010. FIG. In one embodiment, a program enable voltage (e.g., 0V) is used to enable programming of a selected memory cell in a selected NAND string, and a program disable voltage (e.g., 2.5V) is used to disable programming in of an unselected NAND chain. The bit lines to which the program enable voltage is applied are referred to as selected bit lines. The bit lines that have the program-inhibit voltage applied are referred to as either program-inhibited bit lines or unselected bit lines.

In einigen Ausführungsformen entspricht das Datenmuster einem Datenzustand. Zum Beispiel bleiben bei SLC-Speicherzellen die Zellen entweder im Löschzustand („1“) oder werden in einen Datenzustand („0“) programmiert. Daher kann das Datenmuster eine 0 für die Zellen aufweisen, die in den Datenzustand programmiert werden sollen, und eine 1 für die Zellen, die gelöscht bleiben sollen. Wenn schließlich zwei Bits in jede Zelle programmiert werden, können die Zellen schließlich in einem der folgenden Zustände enden: Löschzustand, A-Zustand, B-Zustand oder C-Zustand. Daher kann das Datenmuster in Schritt 1602 diejenigen Zellen identifizieren, die zum Beispiel in den A-Zustand programmiert werden sollen.In some embodiments, the data pattern corresponds to a data state. For example, with SLC memory cells, the cells either remain in the erase ("1") state or are programmed to a data ("0") state. Therefore, the data pattern may have a 0 for the cells that are to be programmed to the data state and a 1 for the cells that are to remain erased. Eventually, if two bits are programmed into each cell, the cells may end up in one of the following states: erase state, A-state, B-state, or C-state. Therefore, the data pattern in step 1602 may identify those cells that are to be programmed to the A-state, for example.

In Schritt 1604 legt das System gleichzeitig eine Auswahlspannung an die Drain-Auswahl-Gates von n Sätzen von NAND-Ketten an. In einer Ausführungsform wird die Auswahlspannung an eine gemeinsame SGD-Leitung angelegt, welche die Drain-Auswahl-Gates eines Satzes von NAND-Ketten miteinander verbindet. In einer Ausführungsform ist jedem Satz von NAND-Ketten eine Reihe von leitfähigen Regionen zugeordnet. Jede leitfähige Region ist mit dem Steuer-Gate einer Speicherzelle in jeder NAND-Kette im Satz verbunden. In einer Ausführungsform befindet sich jeder Satz von NAND-Ketten in einem anderen ausgewählten Löschblock. Schritt 1604 kann das gleichzeitige Anlegen der Auswahlspannung an eine SGD-Leitung in jedem Löschblock einschließen. Die Auswahlspannung verbindet eine ausgewählte NAND-Kette mit ihrer jeweiligen ausgewählten Bitleitung, indem sie das Drain-Auswahl-Gate der ausgewählten NAND-Kette einschaltet. Die Auswahlspannung schaltet jedoch nicht das Drain-Auswahl-Gate einer nicht ausgewählten NAND-Kette ein. Zum Beispiel kann die Auswahlspannung 2,5 V betragen, die Programmfreigabespannung an einer ausgewählten Bitleitung kann 0 V betragen und die Programmsperrspannung an den nicht ausgewählten Bitleitungen kann 2,5 V betragen.In step 1604, the system simultaneously applies a select voltage to the drain select gates of n sets of NAND strings. In one embodiment, the select voltage is applied to a common SGD line that interconnects the drain select gates of a set of NAND strings. In one embodiment, each set of NAND strings is associated with a series of conductive regions. Each conductive region is connected to the control gate of a memory cell in each NAND string in the set. In one embodiment, each set of NAND chains resides in a different selected erase block. Step 1604 may include applying the select voltage to an SGD line in each erase block simultaneously. The select voltage connects a selected NAND string to its respective selected bit line, turning on the drain select gate of the selected NAND string. However, the select voltage does not turn on the drain select gate of an unselected NAND string. For example, the select voltage may be 2.5V, the program enable voltage on a selected bit line may be 0V, and the program disable voltage on the unselected bit lines may be 2.5V.

In Schritt 1606 legt das System gleichzeitig eine Programmspannung an die Steuer-Gates von n Sätzen ausgewählter Speicherzellen an. Die Programmspannung wird angelegt, während die Auswahlspannung an die Drain-Auswahl-Gates der NAND-Ketten angelegt wird und während die Spannungen an die Bitleitungen angelegt werden. Somit wird das Datenmuster gleichzeitig in jeden Satz ausgewählter Speicherzellen programmiert. Somit können n Kopien des Datenmusters gleichzeitig gespeichert werden. In einer Ausführungsform befindet sich jeder Satz von ausgewählten Speicherzellen in einem anderen ausgewählten Löschblock.In step 1606, the system simultaneously applies a program voltage to the control gates of n sets of selected memory cells. The program voltage is applied while the select voltage is applied to the drain select gates of the NAND strings and while the voltages are applied to the bit lines. Thus, the data pattern is simultaneously programmed into each set of selected memory cells. Thus n copies of the data pattern can be stored simultaneously. In one embodiment, each set of selected memory cells resides in a different selected erase block.

In Schritt 1608 stellt das System fest, ob es ein weiteres Datenmuster gibt, das gleichzeitig programmiert werden soll. Wird der Prozess 1600 zum Beispiel zur gleichzeitigen Programmierung von zwei Bits pro Zelle verwendet, können nach dem gleichzeitigen Programmieren für den A-Zustand die Schritte 1602 - 1606 zur Programmierung des B-Zustands wiederholt werden. Somit programmiert in diesem Beispiel das erste Datenmuster gleichzeitig den A-Zustand, ein zweites Datenmuster programmiert gleichzeitig den B-Zustand und ein drittes Datenmuster programmiert gleichzeitig den C-Zustand. Auf diese Weise können zwei oder mehr Bits gleichzeitig pro Zelle programmiert werden.In step 1608, the system determines if there is another data pattern to be programmed at the same time. For example, if the process 1600 is used to program two bits per cell simultaneously, after programming the A state simultaneously, steps 1602-1606 may be repeated to program the B state. Thus, in this example, the first data pattern concurrently programs the A-state, a second data pattern concurrently programs the B-state, and a third data pattern concurrently programs the C-state. In this way, two or more bits can be programmed simultaneously per cell.

In einigen Ausführungsformen verifiziert das System das Programmieren der Speicherzellen, die gleichzeitig in Prozess 1600 programmiert werden. Zum Beispiel kann das System (für jede Speicherzelle, die auf einen Zieldatenzustand programmiert werden soll) verifizieren, ob die Vt einer Speicherzelle eine Vt erreicht hat, die mit dem Zieldatenzustand verbunden ist, was hierin als „Verifizierung eines Datenzustands“ bezeichnet werden kann. In einigen Ausführungsformen verifiziert das System nicht das Programmieren der Speicherzellen, die gleichzeitig in Prozess 1600 programmiert werden.In some embodiments, the system verifies the programming of the memory cells that are programmed concurrently in process 1600. For example, the system may verify (for each memory cell to be programmed to a target data state) whether the Vt of a memory cell has reached a Vt associated with the target data state, which may be referred to herein as "verifying a data state". In some embodiments, the system does not verify the programming of memory cells that are programmed concurrently in process 1600.

17 ist ein Flussdiagramm einer Ausführungsform eines Prozesses 1700 zum gleichzeitigen Programmieren von Speicherzellen auf NAND-Strings in verschiedenen Löschblöcken. Schritt 1702 schließt das Anlegen einer Programmfreigabespannung an ausgewählte Bitleitungen gemäß einem zu programmierenden Datenmuster ein. Es ist zu beachten, dass eine Programmsperrspannung (z. B. 2,5 V) an nicht ausgewählte Bitleitungen angelegt werden kann. In einer Ausführungsform werden die an die Bitleitungen angelegte Programmfreigabespannung (und Programmsperrspannung) entsprechend Daten, die am S/A-Datenlatch 1010 empfangen werden, eingestellt. 17 17 is a flow diagram of one embodiment of a process 1700 for concurrently programming memory cells to NAND strings in different erase blocks. Step 1702 includes applying a program enable voltage to selected bit lines according to a data pattern to be programmed. Note that a program inhibit voltage (e.g., 2.5V) may be applied to unselected bit lines. In one embodiment, the program enable voltage (and program disable voltage) applied to the bit lines are adjusted according to data received at S/A data latch 1010 .

In Schritt 1704 verbindet das System gleichzeitig jede ausgewählte Bitleitung mit n ausgewählten NAND-Ketten. In einer Ausführungsform wird jede ausgewählte Bitleitung mit zwei ausgewählten NAND-Ketten verbunden. In einer Ausführungsform wird jede ausgewählte Bitleitung mit drei ausgewählten NAND-Ketten verbunden. In einer Ausführungsform wird jede ausgewählte Bitleitung mit vier ausgewählten NAND-Ketten verbunden. Jede ausgewählte Bitleitung kann mit fünf oder mehr ausgewählten NAND-Ketten verbunden sein. In einer Ausführungsform legt das System eine Auswahlspannung an Drain-Auswahl-Gates in den NAND-Ketten an, um die ausgewählten Bitleitungen mit den ausgewählten NAND-Ketten zu verbinden.In step 1704, the system simultaneously connects each selected bit line to n selected NAND strings. In one embodiment, each selected bit line is connected to two selected NAND strings. In one embodiment, each selected bit line is connected to three selected NAND strings. In one embodiment, each selected bit line is connected to four selected NAND strings. Each selected bit line can be connected to five or more selected NAND strings. In one embodiment, the system applies a select voltage to drain select gates in the NAND strings to connect the selected bit lines to the selected NAND strings.

In Schritt 1706 legt das System gleichzeitig eine Programmspannung an die Steuer-Gates von n Sätzen ausgewählter Speicherzellen an. Die Programmspannung wird angelegt, während die ausgewählten Bitleitungen mit den ausgewählten NAND-Ketten verbunden werden und während die Programmfreigabespannungen an die ausgewählten Bitleitungen angelegt werden. Somit wird das Datenmuster gleichzeitig in jeden Satz ausgewählter Speicherzellen programmiert. Somit können n Kopien des Datenmusters gespeichert werden. In einer Ausführungsform befindet sich jeder Satz von ausgewählten Speicherzellen in einem anderen ausgewählten Löschblock.In step 1706, the system simultaneously applies a program voltage to the control gates of n sets of selected memory cells. The program voltage is applied while the selected bit lines are being connected to the selected NAND strings and while the program enable voltages are being applied to the selected bit lines. Thus, the data pattern is simultaneously programmed into each set of selected memory cells. Thus n copies of the data pattern can be stored. In one embodiment, each set of selected memory cells resides in a different selected erase block.

In Schritt 1708 verifiziert das System jeden Satz von Speicherzellen. In einer Ausführungsform wird eine Verifizierspannung an die Steuer-Gates aller Speicherzellen angelegt, die gerade programmiert werden. Für jede ausgewählte Bitleitung kann das System einen Strom erfassen, der als Reaktion auf die Verifizierspannung in der Bitleitung fließen kann. In einer Ausführungsform lädt das System einen Erfassungskondensator auf und schließt diesen dann an die Bitleitung an (nachdem die Verifizierspannung angelegt wurde). Das System lässt dann zu, dass der Bitleitungsstrom, falls vorhanden, den Erfassungskondensator für eine bestimmte Zeit entlädt. In einer Ausführungsform wird die Speicherzelle einen signifikanten Strom leiten, wenn eine ausgewählte Speicherzelle, die einer Bitleitung zugeordnet ist, ihren Zieldatenzustand nicht erreicht hat. Daher fällt in einer Ausführungsform die Spannung des Erfassungskondensators nachstehend unter eine Begrenzungsspannung, wenn mindestens eine ausgewählte Speicherzelle ihren Zieldatenzustand nicht erreicht hat.In step 1708, the system verifies each set of memory cells. In one embodiment, a verify voltage is applied to the control gates of all memory cells that are being programmed. For each selected bit line, the system can sense a current that can flow in response to the verify voltage on the bit line. In one embodiment, the system charges a sense capacitor and then connects it to the bitline (after the verify voltage is applied). The system then allows the bitline current, if any, to discharge the sense capacitor for a specified time. In one embodiment, if a selected memory cell associated with a bitline has not reached its target data state, the memory cell will conduct a significant current. Therefore, in one embodiment, the sense capacitor voltage subsequently falls below a clipping voltage when at least one selected memory cell has not reached its target data state.

In Schritt 1710 bestimmt das System, ob alle Sätze von Speicherzellen als verifiziert bestanden haben. Diese Bestimmung basiert auf dem Erfassen der Bitleitungen. In einer Ausführungsform geht das System davon aus, dass alle Sätze bestanden haben, wenn nicht mehr als eine bestimmte Anzahl von Bitleitungen fehlgeschlagenen Programmierfällen entsprechen. Fehlerkorrekturalgorithmen sind in der Lage, in solchen Fällen eine bestimmte Anzahl von Fehlern zu bewältigen. Wenn alle Sätze bestehen, ist der Vorgang beendet. Wenn nicht alle Sätze bestehen, verifiziert das System in Schritt 1712 jeden Satz von Speicherzellen separat. Jeder Satz, der als nicht bestanden verifiziert wird, kann eine zusätzliche Programmierung erhalten. In einigen Ausführungsformen werden die Schritte 1708 - 1712 nicht durchgeführt, in diesem Fall werden die Speicherzellen nicht verifiziert.In step 1710, the system determines whether all sets of memory cells have passed verified. This determination is based on sensing the bit lines. In one embodiment, the system assumes that all sets have passed if no more than a certain number of bit lines correspond to failed programming cases. Error correction algorithms are capable of a certain number in such cases to deal with mistakes. If all sets pass, the process is complete. If not all sets pass, in step 1712 the system verifies each set of memory cells separately. Any set verified as failing may receive additional programming. In some embodiments, steps 1708-1712 are not performed, in which case the memory cells are not verified.

In einigen Ausführungsformen programmiert das System gleichzeitig n Kopien eines Datenmusters in entsprechende n Sätze von Speicherzellen in einem mehrstufigen Zellprogrammierungsprozess. 18 ist ein Flussdiagramm einer Ausführungsform des Prozesses 1800 des gleichzeitigen Programmierens von n Kopien eines Datenmusters in n Sätzen von Speicherzellen in einem mehrstufigen Zellprogrammierungsprozess. Der Prozess 1800 ist eine Ausführungsform des Prozesses von 16. Schritt 1802 schließt das Anlegen einer Programmfreigabespannung (z. B. 0 V) an ausgewählte Bitleitungen gemäß einem A-Zustand ein. Zum Beispiel empfangen alle Bitleitungen, die Speicherzellen zugeordnet sind, die auf den A-Zustand programmiert werden sollen, die Programmfreigabespannung. Alle anderen Bitleitungen empfangen eine Programmsperrspannung (z. B. 2,5 V).In some embodiments, the system simultaneously programs n copies of a data pattern into corresponding n sets of memory cells in a multi-step cell programming process. 18 18 is a flowchart of one embodiment of the process 1800 of simultaneously programming n copies of a data pattern in n sets of memory cells in a multi-level cell programming process. The process 1800 is an embodiment of the process of FIG 16 . Step 1802 includes applying a program enable voltage (e.g., 0V) to selected bit lines according to an A-state. For example, all bit lines associated with memory cells to be programmed to the A-state receive the program enable voltage. All other bit lines receive a program inhibit voltage (e.g. 2.5V).

Schritt 1804 schließt das gleichzeitige Verbinden jeder ausgewählten Bitleitung mit n ausgewählten NAND-Ketten ein. In einer Ausführungsform wird jede ausgewählte Bitleitung mit zwei ausgewählten NAND-Ketten verbunden. In einer Ausführungsform wird jede ausgewählte Bitleitung mit drei ausgewählten NAND-Ketten verbunden. In einer Ausführungsform wird jede ausgewählte Bitleitung mit vier ausgewählten NAND-Ketten verbunden. Jede ausgewählte Bitleitung kann mit fünf oder mehr ausgewählten NAND-Ketten verbunden sein. In einer Ausführungsform legt das System eine Auswahlspannung an Drain-Auswahl-Gates in den NAND-Ketten an, um die ausgewählten Bitleitungen mit den ausgewählten NAND-Ketten zu verbinden.Step 1804 includes connecting each selected bit line to n selected NAND strings simultaneously. In one embodiment, each selected bit line is connected to two selected NAND strings. In one embodiment, each selected bit line is connected to three selected NAND strings. In one embodiment, each selected bit line is connected to four selected NAND strings. Each selected bit line can be connected to five or more selected NAND strings. In one embodiment, the system applies a select voltage to drain select gates in the NAND strings to connect the selected bit lines to the selected NAND strings.

Schritt 1804 kann auch das gleichzeitige Verbinden jeder ausgewählten Bitleitung mit einer unterschiedlichen NAND-Kette in n Sätzen von NAND-Ketten einschließen. In einer Ausführungsform befindet sich jeder Satz von ausgewählten NAND-Ketten in einem anderen Löschblock. In einer Ausführungsform gibt es zwei ausgewählte Löschblöcke. In einer Ausführungsform gibt es drei ausgewählte Löschblöcke. In einer Ausführungsform gibt es vier ausgewählte Löschblöcke. In einer Ausführungsform gibt es mehr als vier ausgewählte Löschblöcke. In einer Ausführungsform verbindet das System jede ausgewählte Bitleitung mit einer ausgewählten NAND-Kette in jedem ausgewählten Löschblock.Step 1804 may also include connecting each selected bit line to a different NAND string in n sets of NAND strings simultaneously. In one embodiment, each set of selected NAND chains resides in a different erase block. In one embodiment, there are two selected erase blocks. In one embodiment, there are three selected erase blocks. In one embodiment, there are four selected erase blocks. In one embodiment, there are more than four erase blocks selected. In one embodiment, the system connects each selected bit line to a selected NAND string in each selected erase block.

In Schritt 1806 legt das System gleichzeitig eine A-Zustand-Programmspannung an die Steuer-Gates von n Sätzen ausgewählter Speicherzellen an. In einer Ausführungsform befindet sich jeder Satz von Speicherzellen in einem anderen ausgewählten Löschblock. In einer Ausführungsform wählt das System eine Größe der Programmierspannung für den A-Zustand aus, die von einer Vt abhängt, die dem A-Zustand zugeordnet ist. In einer Ausführungsform hat die Programmspannung für den A-Zustand eine Größe, die ausreicht, damit fast alle Speicherzellen mit einem einzigen Programmimpuls eine dem A-Zustand zugeordnete Vt erreichen. In einigen Ausführungsformen kann eine bestimmte Anzahl von Speicherzellen die Vt, die dem A-Zustand zugeordnet ist, nicht erreichen, wobei während eines Lesevorgangs ein Fehlerkorrekturalgorithmus verwendet wird, um solche unterprogrammierten Speicherzellen zu behandeln. In einer Ausführungsform erhöht die A-Zustand-Programmspannung die Vt der Speicherzellen aus dem Löschzustand auf eine Vt, die dem A-Zustand zugeordnet ist. Die Größe kann zum Beispiel so gewählt werden, dass die meisten Speicherzellen eine Erhöhung von Vt aus dem Löschzustand auf über VvA erfahren (siehe zum Beispiel 15B oder 15B).In step 1806, the system simultaneously applies an A-state program voltage to the control gates of n sets of selected memory cells. In one embodiment, each set of memory cells resides in a different selected erase block. In one embodiment, the system selects a magnitude of the A-state programming voltage that depends on a Vt associated with the A-state. In one embodiment, the A-state program voltage is of a magnitude sufficient for almost all memory cells to reach an A-state associated Vt with a single program pulse. In some embodiments, a certain number of memory cells may not reach the Vt associated with the A-state, and an error correction algorithm is used during a read operation to handle such underprogrammed memory cells. In one embodiment, the A-state program voltage increases the Vt of the memory cells from the erase state to a Vt associated with the A-state. For example, the size can be chosen such that most memory cells experience an increase in Vt from the erase state to above VvA (see for example 15B or 15B ).

In einer Ausführungsform wird der Prozess 1800 in einem Foggy-Fine-Programmierungsprozess verwendet. Bei einem Foggy-Fine-Programmierungsprozess werden die Speicherzellen zunächst so programmiert, dass sie nahe an einer endgültigen Vt für die Zustände liegen, aber möglicherweise eine Vt haben, die etwas unter einer endgültigen Vt für den Zustand liegt. Dann kann eine Feinprogrammierungsphase verwendet werden, um die Programmierung der Speicherzellen auf die endgültige Vt für den Zustand zu beenden. In einer Ausführungsform wird die Feinprogrammierungsphase für jeden Satz von Speicherzellen einzeln durchgeführt (im Gegensatz zum gleichzeitigen Programmieren jedes Satzes von Speicherzellen). In einer Ausführungsform erhöht die A-Zustands-Programmspannung die Vt der Speicherzellen aus dem Löschzustand auf eine Vt nahe der endgültigen Vt für den A-Zustand, wobei die Feinphase die Vt bei Bedarf erhöht. In Bezug auf 15A kann zum Beispiel die Ziel-Vt für den A-Zustand für das gleichzeitige Programmieren etwas niedriger als VvA sein, wobei die Feinprogrammierungsphase verwendet wird, um das Programmieren auf mindestens VvA zu beenden. Wie von Fachleuten zu erkennen ist, kann die Feinprogrammierungsphase während des gleichzeitigen Programmierens auch wenn einige der Speicherzellen nicht die Vt nahe der endgültigen Vt für den A-Zustand erreichen, diese Zellen auf die endgültige Vt für den A-Zustand programmieren.In one embodiment, the process 1800 is used in a foggy fine programming process. In a foggy fine programming process, the memory cells are first programmed to be close to a final Vt for the states, but may have a Vt slightly below a final Vt for the state. A fine programming phase can then be used to finish programming the memory cells to the final Vt for the state. In one embodiment, the fine programming phase is performed for each set of memory cells individually (as opposed to programming each set of memory cells simultaneously). In one embodiment, the A-state program voltage increases the Vt of the memory cells from the erase state to a Vt close to the final Vt for the A-state, with the fine phase increasing the Vt if necessary. In relation to 15A For example, the target Vt for the A-state can be slightly lower than VvA for concurrent programming, using the fine programming phase to finish programming to at least VvA. As will be appreciated by those skilled in the art, during concurrent programming, even if some of the memory cells do not reach the Vt near the final A-state Vt, the fine programming phase can program those cells to the final A-state Vt.

Die Schritte 1808, 1810, 1812 sind ähnlich wie die entsprechenden Schritte 1802, 1804, 1806, jedoch für den B-Zustand. Ein Unterschied besteht darin, dass in Schritt 1812 eine B-Zustandsspannung an die Steuer-Gates der ausgewählten Speicherzellen angelegt wird. In einer Ausführungsform hat die B-Zustand-Programmspannung einen größeren Betrag als die A-Zustand-Programmierspannung. In einer Ausführungsform hat die B-Zustand-Programmspannung eine Größe, die ausreicht, damit fast alle Speicherzellen mit einem einzigen Programmierimpuls auf eine Vt, die dem B-Zustand zugeordnet ist, zu programmieren. In einer Ausführungsform erhöht die B-Zustands-Programmspannung die Vt der Speicherzellen aus dem Löschzustand auf eine endgültige Vt, die dem B-Zustand zugeordnet ist. In einer Foggy-Fine-Ausführungsform erhöht die B-Zustand-Programmspannung die Vt der Speicherzellen aus dem Löschzustand auf eine Vt nahe der endgültigen Vt für den B-Zustand, wobei die Feinphase die Vt bei Bedarf erhöht.Steps 1808, 1810, 1812 are similar to corresponding steps 1802, 1804, 1806, but for the B-state. One difference is that in step 1812 a B-state voltage is applied to the control gates of the selected memory cells. In one embodiment, the B-state program voltage has a greater magnitude than the A-state program voltage. In one embodiment, the B-state program voltage is of a magnitude sufficient to program almost all memory cells to a Vt associated with the B-state with a single programming pulse. In one embodiment, the B-state program voltage increases the Vt of the memory cells from the erase state to a final Vt associated with the B-state. In a foggy-fine embodiment, the B-state program voltage increases the Vt of the memory cells from the erase state to a Vt close to the final B-state Vt, with the fine phase increasing the Vt if necessary.

Die Schritte 1814, 1816, 1818 sind ähnlich wie die entsprechenden Schritte 1802, 1084, 1806, jedoch für den C-Zustand. Ein Unterschied besteht darin, dass in Schritt 1818 eine C-Zustandsspannung an die Steuer-Gates der ausgewählten Speicherzellen angelegt wird. In einer Ausführungsform hat die C-Zustand-Programmspannung einen größeren Betrag als die B-Zustand-Programmierspannung (und ist daher auch größer als die A-Zustand-Programmspannung). In einer Ausführungsform hat die C-Zustand-Programmspannung eine Größe, die ausreicht, damit fast alle Speicherzellen mit einem einzigen Programmierimpuls auf eine endgültige Vt, die dem C-Zustand zugeordnet ist, zu programmieren. In einer Ausführungsform erhöht die C-Zustand-Programmspannung die Vt der Speicherzellen aus dem Löschzustand auf eine endgültige Vt, die dem C-Zustand zugeordnet ist. In einer Foggy-Fine-Ausführungsform erhöht die C-Zustand-Programmspannung die Vt der Speicherzellen aus dem Löschzustand auf eine Vt nahe der endgültigen Vt, die dem C-Zustand zugeordnet ist, wobei die Feinphase die Vt bei Bedarf erhöht.Steps 1814, 1816, 1818 are similar to corresponding steps 1802, 1084, 1806 but for the C-state. One difference is that in step 1818 a C-state voltage is applied to the control gates of the selected memory cells. In one embodiment, the C-state program voltage is greater in magnitude than the B-state program voltage (and therefore also greater than the A-state program voltage). In one embodiment, the C-state program voltage is of a magnitude sufficient to program almost all memory cells to a final Vt associated with the C-state with a single programming pulse. In one embodiment, the C-state program voltage increases the Vt of the memory cells from the erase state to a final Vt associated with the C-state. In a foggy fine embodiment, the C-state program voltage increases the Vt of the memory cells from the erase state to a Vt close to the final Vt associated with the C-state, with the fine phase increasing the Vt if necessary.

In einer Ausführungsform wird der Prozess 1800 in einer Anfangsphase der QLC-Programmierung eingesetzt. Zum Beispiel werden die Speicherzellen, die in einem von S4 - S7 landen sollen, im Prozess 1800 auf den A-Zustand programmiert, die Speicherzellen, die in einem von S8 - S11 landen sollen, werden im Prozess 1800 auf den B-Zustand programmiert, und die Speicherzellen, die in einem von S12 - S15 landen sollen, werden im Prozess 1800 auf den C-Zustand programmiert. In einer Ausführungsform wird in der endgültigen Programmierphase zu den endgültigen Zuständen (S4 - S15) jeder Satz von Speicherzellen einzeln programmiert und verifiziert.In one embodiment, the process 1800 is used at an initial stage of QLC programming. For example, the memory cells destined to land in one of S4 - S7 are programmed to the A state in process 1800, the memory cells destined to land in one of S8 - S11 are programmed to the B state in process 1800, and the memory cells that are to end up in one of S12-S15 are programmed to the C-state in process 1800. In one embodiment, in the final programming phase to the final states (S4 - S15), each set of memory cells is individually programmed and verified.

In einigen Ausführungsformen programmiert der mehrstufige Zellprogrammierungsprozess Speicherzellen auf drei Bits pro Zelle. 19 ist ein Flussdiagramm einer Ausführungsform des Prozesses 1900 zum gleichzeitigen Programmieren von Speicherzellen in mehreren Löschblöcken. Prozess 1900 beschreibt das Programmieren für einen D-Zustand (Schritte 1902, 1904, 1906), einen E-Zustand (Schritte 1908, 1910, 1912), einen F-Zustand (Schritte 1914, 1916, 1918) und einen G-Zustand (Schritte 1920, 1922, 1924). In einer Ausführungsform wird Prozess 1900 nach Prozess 1800 durchgeführt. Prozess 1900 ähnelt Prozess 1800 und wird nicht im Detail beschrieben. In einer Ausführungsform wird die Programmspannung für die Datenzustände, die eine höhere Vt aufweisen, progressiv erhöht. In einer Ausführungsform ist die D-Zustand-Programmspannung größer als die C-Zustand-Programmspannung, die E-Zustand-Programmspannung ist größer als die D-Zustand-Programmspannung, die F-Zustand-Programmspannung ist größer als die E-Zustand-Programmspannung, und die G-Zustand-Programmspannung ist größer als die F-Zustand-Programmspannung. Prozess 1900 kann in einem Foggy-Fine-Programmierprozess verwendet werden, wie er im Zusammenhang mit Prozess 1800 beschrieben wurde.In some embodiments, the multi-level cell programming process programs memory cells to three bits per cell. 19 FIG. 1900 is a flow diagram of one embodiment of the process 1900 for concurrently programming memory cells in multiple erase blocks. Process 1900 describes programming for a D-state (steps 1902, 1904, 1906), an E-state (steps 1908, 1910, 1912), an F-state (steps 1914, 1916, 1918), and a G-state ( steps 1920, 1922, 1924). In one embodiment, process 1900 is performed after process 1800. Process 1900 is similar to process 1800 and will not be described in detail. In one embodiment, the program voltage is progressively increased for the data states that have a higher Vt. In one embodiment, the D-state program voltage is greater than the C-state program voltage, the E-state program voltage is greater than the D-state program voltage, the F-state program voltage is greater than the E-state program voltage , and the G-state program voltage is greater than the F-state program voltage. Process 1900 may be used in a foggy fine programming process as described in connection with process 1800.

Es ist zu beachten, dass weder Prozess 1800 noch Prozess 1900 ausdrücklich einen Verifiziervorgang beschreiben. In einigen Ausführungsformen verwendet der Prozess 1800 keine Programmverifizierung. In einigen Ausführungsformen verwendet der Prozess 1900 keine Programmverifizierung. Optional kann die Programmverifizierung mit Prozess 1800 oder 1900 verwendet werden. Ein solcher Verifiziervorgang könnte ein gleichzeitiges Verifizieren der n Sätze von Speicherzellen sein, wie hierin beschrieben wurde. Diese Programmverifizierung kann für einen oder alle Datenzustände erfolgen. Wenn alle Sätze von Speicherzellen die Programmverifizierung bestehen, kann die Programmierung beendet werden. Wenn die Bedingung „alle Sätze von Speicherzellen bestehen die Programmverifizierung“ nicht erfüllt ist, kann jeder Satz von Speicherzellen separat verifiziert werden.It should be noted that neither process 1800 nor process 1900 explicitly describe a verification process. In some embodiments, process 1800 does not use program verification. In some embodiments, process 1900 does not use program verification. Optionally, program verification can be used with process 1800 or 1900. Such a verifying operation could be a simultaneous verifying of the n sets of memory cells as described herein. This program verification can be done for one or all data states. If all sets of memory cells pass program verification, programming can be terminated. If the condition "all sets of memory cells pass program verification" is not met, each set of memory cells can be verified separately.

Die Konzepte der Prozesse 1800 und 1900 können auf mehr als drei Bits pro Speicherzelle erweitert werden. In einer Ausführungsform der QLC-Programmierung wird die Programmspannung für die Datenzustände mit höherer Vt progressiv erhöht.The concepts of processes 1800 and 1900 can be extended to more than three bits per memory cell. In one embodiment of QLC programming, the program voltage is progressively increased for the higher Vt data states.

Das Anlegen einer Spannung, wie einer Programmspannung, an mehr als einen Satz von Speicherzellen kann zu einer größeren RC-Belastung führen. Ein Grund dafür ist, dass die Steuer-Gates jedes Satzes von Speicherzellen mit einer unterschiedlichen leitfähigen Region (oder einer leitfähigen Platte) verbunden sein können. In einer Ausführungsform ist jeder Satz von Speicherzellen mit einer anderen Wortleitung verbunden, die sich in einem anderen Löschblock befindet. In einer Ausführungsform wählt das System die Anzahl der Spannungsgeneratoren (z. B. Ladungspumpen) auf der Grundlage der Anzahl der Sätze von Speicherzellen aus, die gleichzeitig programmiert werden. 20A ist eine Blockdiagrammschaltung zum Bereitstellen von Spannungen an Löschblöcke. Spannungsgeneratoren 2002(1) - 2002(N) sind dargestellt. Jeder Spannungsgenerator 2002 kann eine Ladungspumpe enthalten. Jeder Spannungsgenerator 2002 ist eingerichtet, um die gleiche Spannung zu erzeugen. In 20A wird die Spannung als VGEN bezeichnet, die für jeden Spannungsgenerator 2002 die gleiche Größe aufweist. In einer Ausführungsform ist VGEN eine Programmierspannung (z. B. Vpgm). In einer Ausführungsform ist VGEN eine Kanalverstärkungsspannung (z. B. Vpass). Die Kanalverstärkungsspannung verstärkt das Kanalpotenzial der nicht ausgewählten NAND-Ketten, um Programmstörungen zu verhindern oder zu verringern. Jeder Spannungsgenerator 2002 kann über einen Schalter 2004 selektiv mit einem Löschblock verbunden werden. Die Schalter 2004 können jeweils einen oder mehrere Transistoren oder dergleichen einschließen.Applying a voltage, such as a program voltage, to more than one set of memory cells can result in greater RC stress. One reason is that the control gates of each set of memory cells with a sub different conductive region (or conductive plate). In one embodiment, each set of memory cells is connected to a different word line located in a different erase block. In one embodiment, the system selects the number of voltage generators (e.g., charge pumps) based on the number of sets of memory cells being programmed at one time. 20A Figure 12 is a block diagram circuit for providing voltages to erase blocks. Voltage generators 2002(1) - 2002(N) are shown. Each voltage generator 2002 may include a charge pump. Each voltage generator 2002 is set up to generate the same voltage. In 20A the voltage is referred to as VGEN, which is the same magnitude for each voltage generator 2002. In one embodiment, VGEN is a programming voltage (e.g., Vpgm). In one embodiment, VGEN is a channel gain voltage (e.g., Vpass). The channel boost voltage boosts the channel potential of the non-selected NAND chains to prevent or reduce program glitches. Each voltage generator 2002 can be selectively connected to an erase block via a switch 2004 . The switches 2004 may each include one or more transistors or the like.

20A zeigt auch eine Ebene 2006, die eine Anzahl von Löschblöcken (BLK0 - BLKn) von Speicherzellen enthält (Löschblock BLK6 ist ausgewählt). Der Ebene sind Erfassungsverstärker (S/A) 2010 zugeordnet. Die der Ebene zugeordneten Bitleitungen 2050 sind ebenfalls dargestellt. Die Spannung auf den Bitleitungen 2050 wird entsprechend den an einem Datenlatch im S/A 2010 empfangenen Daten eingestellt. 20A also shows a level 2006 containing a number of erase blocks (BLK0 - BLKn) of memory cells (erase block BLK6 is selected). Sense amplifiers (S/A) 2010 are associated with the plane. The bit lines 2050 associated with the plane are also shown. The voltage on bit lines 2050 is adjusted according to data received at a data latch in S/A 2010 .

Der Spannungsgenerator 2002(1) ist aktiviert, wobei der Schalter 2004(1) geschlossen ist, um den Spannungsgenerator 2002(1) mit dem ausgewählten Löschblock (BLK6) elektrisch zu verbinden. In einer Ausführungsform ist der Spannungsgenerator 2002(1) mit einer leitfähigen Region (oder einer Platte) im Löschblock verbunden, der mit Steuer-Gates ausgewählter Speicherzellen verbunden ist.Voltage generator 2002(1) is activated with switch 2004(1) closed to electrically connect voltage generator 2002(1) to the selected erase block (BLK6). In one embodiment, voltage generator 2002(1) is connected to a conductive region (or plate) in the erase block that is connected to control gates of selected memory cells.

20B zeigt dieselbe Schaltung wie in 20A, aber in diesem Beispiel sind drei Löschblöcke (BLK2, BLK4, BLK6) ausgewählt. Die Spannungsgeneratoren 2002(1), 2002(2) und 2002(3) sind jeweils aktiviert. In diesem Beispiel sind die Schalter 2004(1), 2004(2) und 2004(3) jeweils geschlossen, sodass jeder der Spannungsgeneratoren 2002(1), 2002(2) und 2002(3) VGEN an eine gemeinsame Leitung 2005 liefert, die mit jedem ausgewählten Löschblock (BLK2, BLK4, BLK6) verbunden ist. Optional könnte jeder Spannungsgenerator dazu verwendet werden, seine VGEN an einen separaten ausgewählten Löschblock bereitzustellen. Zum Beispiel könnten die Spannungsgeneratoren 2002(1) ihre VGEN für BLK6, die Spannungsgeneratoren 2002(2) ihre VGEN für BLK4 und die Spannungsgeneratoren 2002(3) ihre VGEN für BLK2 bereitstellen. 20B shows the same circuit as in 20A , but in this example three erase blocks (BLK2, BLK4, BLK6) are selected. Voltage generators 2002(1), 2002(2), and 2002(3) are each activated. In this example, switches 2004(1), 2004(2), and 2004(3) are each closed so that each of voltage generators 2002(1), 2002(2), and 2002(3) supplies VGEN to a common line 2005 that connected to each selected erase block (BLK2, BLK4, BLK6). Optionally, each voltage generator could be used to provide its VGEN to a separate selected erase block. For example, voltage generators 2002(1) could provide their VGEN for BLK6, voltage generators 2002(2) their VGEN for BLK4, and voltage generators 2002(3) their VGEN for BLK2.

21 stellt weiterhin detailliert dar, wie die Schaltungen in den 20A und 20B mit leitfähigen Regionen in entsprechenden Löschblöcken elektrisch verbunden werden können. 21 stellt Abschnitte von zwei Sätzen von NAND-Ketten 2120, 2130 dar. In einer Ausführungsform befindet sich jeder Satz von NAND-Ketten in einem anderen Löschblock. Die Bitleitungen 211 0a, 2110b, 2110c sind jedem Satz von NAND-Ketten 2120, 2130 zugeordnet. Die zwei Sätze von NAND-Ketten 2120, 2130 befinden sich in derselben Ebene. Der NAND-Kettensatz 2130 enthält NAND-Ketten 2161, 2162, 2163 sowie andere NAND-Ketten, die in 21 nicht dargestellt sind. Der NAND-Kettensatz 2120 enthält ähnliche NAND-Ketten, die ein gleichzeitiges Programmieren von Zellen in den unterschiedlichen Blöcken ermöglichen. Eine Anzahl von Speicherzellen 2121, 2122, 2123, 2124, 2125, 2126 ist eingekreist, um Zellen anzuzeigen, die gleichzeitig programmiert werden können. Zum Beispiel können die gleichen Daten gleichzeitig in den Zellen 2121 und 2124 programmiert werden; dieselben Daten können gleichzeitig in den Zellen 2122 und 2125 programmiert werden; und die gleichen Daten können gleichzeitig in den Zellen 2123 und 2126 programmiert werden. Jede dieser Speicherzellen hat ein Steuer-Gate, das elektrisch mit einer leitfähigen Region in dem jeweiligen Block verbunden ist. Zum Beispiel sind die jeweiligen Steuer-Gates der Zellen 2121, 2122 und 2123 über eine ausgewählte leitfähige Region 2140 elektrisch verbunden. Die jeweiligen Steuer-Gates der Zellen 2124, 2125 und 2126 sind über eine ausgewählte leitfähige Region 2150 elektrisch verbunden. Der Begriff „ausgewählt“ wird verwendet, um anzugeben, dass die mit diesen Leitungen verbundenen Speicherzellen zur Programmierung ausgewählt werden. 21 further details how the circuits in the 20A and 20B can be electrically connected to conductive regions in corresponding erase blocks. 21 Figure 12 illustrates portions of two sets of NAND chains 2120, 2130. In one embodiment, each set of NAND chains resides in a different erase block. Bit lines 2110a, 2110b, 2110c are associated with each set of NAND chains 2120,2130. The two sets of NAND chains 2120, 2130 are in the same plane. NAND chain set 2130 includes NAND chains 2161, 2162, 2163, as well as other NAND chains used in 21 are not shown. The NAND chain set 2120 includes similar NAND chains that allow cells in the different blocks to be programmed simultaneously. A number of memory cells 2121, 2122, 2123, 2124, 2125, 2126 are circled to indicate cells that can be programmed simultaneously. For example, the same data can be programmed into cells 2121 and 2124 at the same time; the same data can be programmed simultaneously in cells 2122 and 2125; and the same data can be programmed in cells 2123 and 2126 at the same time. Each of these memory cells has a control gate electrically connected to a conductive region in the respective block. For example, the respective control gates of cells 2121 , 2122 and 2123 are electrically connected via a selected conductive region 2140 . The respective control gates of cells 2124, 2125 and 2126 are electrically connected via a selected conductive region 2150. FIG. The term "selected" is used to indicate that the memory cells connected to these lines are selected for programming.

Die Spannung an Bitleitungen 2210a - 2210c wird gemäß Daten eingestellt, die in Speicherzellen in jedem NAND-Kettensatz 2120, 2130 geschrieben werden. Obwohl in 21 drei Bitleitungen 2210 dargestellt sind, kann ein Array von Speicherzellen natürlich viel mehr Bitleitungen einschließen. Weiterhin können, obwohl zwei NAND-Kettensätze dargestellt sind, optional eine oder mehrere zusätzliche Kopien programmiert werden, zum Beispiel in einem dritten NAND-Kettensatz (nicht gezeigt), einem vierten NAND-Kettensatz (nicht gezeigt) und so weiter.The voltage on bit lines 2210a-2210c is adjusted according to data being written to memory cells in each NAND string set 2120,2130. Although in 21 As three bit lines 2210 are shown, an array of memory cells can of course include many more bit lines. Furthermore, although two sets of NAND chains are illustrated, one or more additional copies may optionally be programmed, for example in a third set of NAND chains (not shown), a fourth set of NAND chains (not shown), and so on.

Wie zuvor im Zusammenhang mit den 20A und 20B beschrieben, können die Spannungsgeneratoren 2002(1) - 2002(N) separat aktiviert und über die Schalter 2004(1) - 2004(N) an die Leitung 2005 angeschlossen werden. In 21 ist ein Beispiel zum Bereitstellen einer Programmierspannung (VPGM) an die NAND-Kettensätze dargestellt. Insbesondere werden die Spannungsgeneratoren 2002(1) und 2002(2) jeweils aktiviert, wobei jeder VPGM erzeugt. Die Schalter 2004(1) und 2004(2) sind geschlossen, um VPGM bis Leitung 2005 bereitzustellen. Die Schalter 2102 sind so eingestellt, dass sie die Leitung 2005 sowohl mit der ausgewählten leitfähigen Region 2140 als auch mit der ausgewählten leitfähigen Region 2150 elektrisch verbinden. Die Schalter 2102 können Transistoren oder dergleichen einschließen. Daher wird VPGM den ausgewählten leitfähigen Regionen 2140 und 2150 bereitgestellt. Daher wird VPGM den Steuer-Gates der Speicherzellen 2121 - 2126 bereitgestellt. Anstatt VPGM der Leitung 2005 bereitzustellen, könnten die Schalter 2102 verwendet werden, um VPGM vom Spannungsgenerator 2002(1) der ausgewählten leitfähigen Region 2150 und vom Spannungsgenerator 2002(2) der ausgewählten leitfähigen Region 2140 bereitzustellen.As before in connection with the 20A and 20B described, the voltage generators 2002(1) - 2002(N) can be activated separately and connected to the line 2005 via the switches 2004(1) - 2004(N). In 21 an example of providing a programming voltage (VPGM) to the NAND string sets is shown. In particular, voltage generators 2002(1) and 2002(2) are each activated, each generating VPGM. Switches 2004(1) and 2004(2) are closed to provide VPGM through line 2005. Switches 2102 are set to electrically connect line 2005 to both selected conductive region 2140 and selected conductive region 2150 . Switches 2102 may include transistors or the like. Therefore, VPGM is provided to the selected conductive regions 2140 and 2150. Therefore, VPGM is provided to the control gates of memory cells 2121-2126. Instead of providing VPGM to line 2005, switches 2102 could be used to provide VPGM from voltage generator 2002(1) to selected conductive region 2150 and from voltage generator 2002(2) to selected conductive region 2140.

Wenn zusätzliche NAND-Ketten in das gleichzeitige Programmieren eingeschlossen werden sollen, können zusätzliche Spannungsgeneratoren 2002 verwendet werden, um VPGM zu liefern. In einer Ausführungsform besteht eine Eins-zu-Eins-Entsprechung zwischen den Spannungsgeneratoren 2002 und den NAND-Kettensätzen. Das heißt, in einer Ausführungsform ist für jede NAND-Kette ein Spannungsgenerator 2002 aktiviert. Eine Eins-zu-Eins-Entsprechung ist jedoch nicht erforderlich.If additional NAND chains are to be included in the concurrent programming, additional voltage generators 2002 can be used to provide VPGM. In one embodiment, there is a one-to-one correspondence between the voltage generators 2002 and the NAND chain sets. That is, in one embodiment, a voltage generator 2002 is enabled for each NAND string. However, a one-to-one correspondence is not required.

21 stellt ein Beispiel für das Bereitstellen von VPGM ausgewählten leitfähigen Regionen dar, die mit unterschiedlichen NAND-Ketten verbunden sind. Jeder Satz von NAND-Ketten kann sich in einem unterschiedlichen Löschblock befinden. Die Spannungsgeneratoren 2002 können verwendet werden, um andere Spannungen (z. B. Vpass) an nicht ausgewählte leitfähige Regionen bereitzustellen. Der Begriff „nicht ausgewählt“ wird verwendet, um anzugeben, dass mit diesen Leitungen verbundene Speicherzellen nicht zur Programmierung ausgewählt werden. In einer Ausführungsform wird eine Kanalverstärkungsspannung (Vpass) an die Steuer-Gates von nicht ausgewählten Speicherzellen angelegt, die mit nicht ausgewählten leitfähigen Regionen verbunden sind. 21 Figure 12 illustrates an example of providing VPGM selected conductive regions connected to different NAND strings. Each set of NAND chains can reside in a different erase block. The voltage generators 2002 can be used to provide other voltages (e.g., Vpass) to unselected conductive regions. The term unselected is used to indicate that memory cells connected to these lines are not selected for programming. In one embodiment, a channel boost voltage (Vpass) is applied to the control gates of unselected memory cells connected to unselected conductive regions.

22 ist ein Flussdiagramm einer Ausführungsform eines Prozesses 2200 zum Bereitstellen von Spannungen bei gleichzeitigem Programmieren. Der Prozess kann zur Bereitstellung von Spannungen (z. B. VPGM, Vpass) während verschiedener hierin beschriebener Prozesse verwendet werden. Zum Beispiel kann der Prozess 2200 in den Schritten 1606, 1806, 1812, 1818, 1906, 1912, 1918 und/oder 1924 verwendet werden. In Schritt 2202 aktiviert das System eine Anzahl von Spannungsgeneratoren 2002 auf der Grundlage einer Anzahl von NAND-Kettensätzen, die am gleichzeitigen Programmieren beteiligt sind. In einer Ausführungsform aktiviert das System einen Spannungsgenerator 2002 für jeden NAND-Kettensatz. In einer Ausführungsform aktiviert das System eine Anzahl von Spannungsgeneratoren 2002 auf der Grundlage einer Anzahl von Löschblöcken, die am gleichzeitigen Programmieren beteiligt sind. In einer Ausführungsform aktiviert das System einen Spannungsgenerator 2002 für jeden ausgewählten Löschblock. 22 FIG. 2200 is a flow diagram of one embodiment of a process 2200 for providing voltages while programming. The process can be used to provide voltages (e.g., VPGM, Vpass) during various processes described herein. For example, process 2200 may be used at steps 1606, 1806, 1812, 1818, 1906, 1912, 1918, and/or 1924. In step 2202, the system activates a number of voltage generators 2002 based on a number of NAND string sets involved in simultaneous programming. In one embodiment, the system activates a voltage generator 2002 for each NAND chain set. In one embodiment, the system activates a number of voltage generators 2002 based on a number of erase blocks involved in concurrent programming. In one embodiment, the system activates a voltage generator 2002 for each selected erase block.

In Schritt 2204 verbindet das System die aktivierten Spannungsgeneratoren 2002 gleichzeitig mit leitfähigen Regionen. Die leitfähigen Regionen sind mit Steuer-Gates von Speicherzellen in entsprechenden NAND-Ketten verbunden. In Schritt 2204 kann das System die Schalter 2004 und/oder die Schalter 2102 steuem. In einer Ausführungsform verbindet das System die aktivierten Spannungsgeneratoren 2002 gleichzeitig mit mehreren ausgewählten leitfähigen Regionen (z. B. 2140, 2150), um VPGM bereitzustellen. In einer Ausführungsform verbindet das System gleichzeitig die aktivierten Spannungsgeneratoren 2002 mit einem oder mehreren nicht ausgewählten leitfähigen Regionen in jedem Löschblock, um Vpass bereitzustellen.In step 2204, the system simultaneously connects the activated voltage generators 2002 to conductive regions. The conductive regions are connected to control gates of memory cells in respective NAND strings. In step 2204, the system may control switches 2004 and/or switches 2102. In one embodiment, the system simultaneously connects the activated voltage generators 2002 to multiple selected conductive regions (e.g., 2140, 2150) to provide VPGM. In one embodiment, the system simultaneously connects the activated voltage generators 2002 to one or more unselected conductive regions in each erase block to provide Vpass.

23 stellt ein Beispiel für eine mehrstufige Ladungspumpe 2300 dar. Die Ladungspumpe 2300 kann in einem Spannungsgenerator 2002 verwendet werden. Vin wird am Eingangsknoten 2302 bereitgestellt, sodass Vout an einem Ausgangsknoten 2326 erhalten wird. Beispielsweise sind drei Stufen 2308, 2316 und 2324 bereitgestellt. Es können zwei oder mehr Stufen verwendet werden. Jede Stufe kann zum Beispiel Schalter und einen oder mehrere fliegende Kondensatoren einschließen. Am Eingang ist ein Kondensator Cin 2304 an einer seiner leitfähigen Schichten mit einem Erdungsknoten 2306 verbunden. An einem Knoten 2310, der sich zwischen der ersten Stufe 2308 und der zweiten Stufe 2316 befindet, ist ein Kondensator Ca 2312 an einer seiner leitfähigen Schichten mit einem Erdungsknoten 2314 verbunden. An einem Knoten 2318, der sich zwischen der zweiten Stufe 2316 und der dritten Stufe 2324 befindet, ist ein Kondensator Cb 2320 an einer seiner leitfähigen Schichten mit einem Erdungsknoten 2322 verbunden. Schließlich ist am Ausgangsknoten 2326 ist ein Ausgangskondensator Cout 2328 an einer seiner leitfähigen Schichten mit einem Erdungsknoten 2330 verbunden. Eine mehrstufige Ladungspumpe kann eine größere Flexibilität bereitstellen, indem sie einen größeren Bereich von Ausgangsspannungen bereitstellt. Weiterhin kann jede Stufe einen oder mehrere Kondensatoren einschließen, um eine noch größere Flexibilität zu erreichen. 23 12 illustrates an example of a multi-stage charge pump 2300. The charge pump 2300 may be used in a voltage generator 2002. FIG. Vin is provided at input node 2302, so Vout is obtained at output node 2326. For example, three stages 2308, 2316 and 2324 are provided. Two or more stages can be used. For example, each stage may include switches and one or more flying capacitors. At the input, a capacitor Cin 2304 is connected to a ground node 2306 at one of its conductive layers. At a node 2310 located between the first stage 2308 and the second stage 2316, a capacitor Ca 2312 is connected to a ground node 2314 at one of its conductive layers. At a node 2318 located between the second stage 2316 and the third stage 2324, a capacitor Cb 2320 is connected to a ground node 2322 at one of its conductive layers. Finally, at the output node 2326, an output capacitor Cout 2328 is connected to a ground node 2330 at one of its conductive layers. A multi-stage charge pump can provide greater flexibility by providing a wider range of output voltages. Furthermore can include one or more capacitors in each stage for even greater flexibility.

Die mehrstufige Ladungspumpe 2300 wird unter der Kontrolle der Regel- und Steuerschaltung 2317 betrieben, die das Schalten in jeder Stufe steuert. Es ist auch möglich, in jeder Stufe zusätzlich oder alternativ eine Regel- und Steuerschaltung bereitzustellen. Ladung wird vom Eingangsknoten 2302 der ersten Stufe zu einem fliegenden Kondensator (nicht dargestellt) in der ersten Stufe 2308 und vom fliegenden Kondensator der ersten Stufe zum Knoten 2310 übertragen. Anschließend wird Ladung vom Knoten 2310 der zweiten Stufe an einen fliegenden Kondensator (nicht dargestellt) in der zweiten Stufe und vom fliegenden Kondensator der zweiten Stufe an den Knoten 2318 übertragen. Die Ladung wird dann vom Knoten 2318 zu einem fliegenden Kondensator (nicht dargestellt) in der dritten Stufe und vom fliegenden Kondensator der dritten Stufe zum Ausgangsknoten 2326 übertragen, vorausgesetzt, es gibt keine weiteren Stufen.The multi-stage charge pump 2300 operates under the control of the regulation and control circuitry 2317, which controls the switching in each stage. It is also possible to additionally or alternatively provide a regulation and control circuit in each stage. Charge is transferred from the first stage input node 2302 to a flying capacitor (not shown) in the first stage 2308 and from the first stage flying capacitor to node 2310 . Charge is then transferred from the second stage node 2310 to a flying capacitor (not shown) in the second stage and from the second stage flying capacitor to node 2318 . The charge is then transferred from node 2318 to a flying capacitor (not shown) in the third stage and from the third stage flying capacitor to output node 2326, assuming there are no more stages.

Wie aus der vorstehenden Beschreibung ersichtlich ist, schließt ein Gesichtspunkt eine Einrichtung ein, die eine Vielzahl von Sätzen von NAND-Ketten aufweist. Jede NAND-Kette weist Speicherzellen auf. Jede Speicherzelle hat ein Steuer-Gate. Jede NAND-Kette weist Drain-Auswahl-Gates auf. Die Einrichtung weist eine Vielzahl von Bitleitungen auf, die der Vielzahl von Sätzen von NAND-Ketten zugeordnet sind. Jede Bitleitung ist einer unterschiedlichen NAND-Kette in jedem Satz von NAND-Ketten zugeordnet. Die Einrichtung weist eine oder mehrere Verwaltungsschaltungen auf, die mit der Vielzahl von Sätzen von NAND-Ketten und mit der Vielzahl von Bitleitungen verbunden sind. Die eine oder mehreren Verwaltungsschaltungen sind eingerichtet zum Anlegen von Spannungen an die Vielzahl von Bitleitungen gemäß einem Datenmuster, zum Anlegen einer Auswahlspannung an die Drain-Auswahl-Gates mehrerer Sätze der NAND-Ketten und zum gleichzeitigen Anlegen eines Programmierimpulses an Steuer-Gates eines unterschiedlichen Satzes ausgewählter Speicherzellen in jedem jeweiligen Satz der mehreren Sätze der NAND-Ketten, während die Auswahlspannung an die Drain-Auswahl-Gates der mehreren Sätze der NAND-Ketten angelegt wird und die Spannungen an die Vielzahl von Bitleitungen angelegt werden, um das Datenmuster gleichzeitig in jeden Satz der ausgewählten Speicherzellen zu programmieren.As can be seen from the foregoing description, one aspect includes a device having a plurality of sets of NAND strings. Each NAND chain has memory cells. Each memory cell has a control gate. Each NAND chain has drain select gates. The device includes a plurality of bit lines associated with the plurality of sets of NAND strings. Each bit line is associated with a different NAND string in each set of NAND strings. The device includes one or more management circuits connected to the plurality of sets of NAND strings and to the plurality of bit lines. The one or more management circuits are configured to apply voltages to the plurality of bit lines according to a data pattern, apply a select voltage to drain select gates of multiple sets of the NAND chains, and apply a programming pulse to control gates of a different set simultaneously selected memory cells in each respective set of the multiple sets of NAND chains, while the selection voltage is applied to the drain select gates of the multiple sets of NAND chains and the voltages are applied to the plurality of bit lines to simultaneously inject the data pattern into each set of selected memory cells to program.

In einem weiteren Gesichtspunkt weisen die mehreren Sätze der NAND-Ketten mindestens drei Sätze von NAND-Ketten auf.In another aspect, the multiple sets of NAND chains includes at least three sets of NAND chains.

In einem weiteren Gesichtspunkt sind die eine oder die mehreren Verwaltungsschaltungen eingerichtet zum gleichzeitigen Anlegen des Programmierimpulses an die Steuer-Gates des unterschiedlichen Satzes ausgewählter Speicherzellen in jedem jeweiligen Satz der mehreren Sätze der NAND-Ketten, um jede ausgewählte Speicherzelle auf ein einzelnes Bit pro Zelle zu programmieren.In another aspect, the one or more management circuits are configured to simultaneously apply the programming pulse to the control gates of the different set of selected memory cells in each respective set of the multiple sets of NAND chains to move each selected memory cell to a single bit per cell program.

In einem weiteren Gesichtspunkt definiert das Datenmuster, ob eine ausgewählte Speicherzelle auf einen Datenzustand einer Vielzahl von Datenzuständen programmiert werden soll. Die eine oder die mehreren Verwaltungsschaltungen sind eingerichtet zum Auswählen einer Größe des Programmierimpulses basierend darauf, welcher der Vielzahl von Datenzuständen gegenwärtig gleichzeitig programmiert wird.In another aspect, the data pattern defines whether a selected memory cell is to be programmed to one of a plurality of data states. The one or more management circuits are configured to select a size of the programming pulse based on which of the plurality of data states is currently being programmed at the same time.

In einem weiteren Gesichtspunkt entspricht das Datenmuster einem ersten Datenzustand einer Vielzahl von Datenzuständen. Der Programmierimpuls ist ein erster Programmierimpuls, der von der einen oder den mehreren Verwaltungsschaltungen angelegt wird, um ausgewählte Speicherzellen gleichzeitig zu programmieren, die auf den ersten Datenzustand gerichtet sind.In another aspect, the data pattern corresponds to a first data state of a plurality of data states. The programming pulse is a first programming pulse applied by the one or more management circuits to simultaneously program selected memory cells directed to the first data state.

In einem weiteren Aspekt sind die eine oder die mehreren Verwaltungsschaltungen weiterhin eingerichtet zum: Anlegen von Spannungen an die Vielzahl von Bitleitungen gemäß einem zweiten Datenmuster, wobei das zweite Datenmuster einem zweiten Datenzustand der Vielzahl von Datenzuständen entspricht; gleichzeitigen Anlegen der Auswahlspannung an die Drain-Auswahl-Gates der mehreren Sätze der NAND-Ketten; und gleichzeitigen Anlegen eines zweiten Programmierimpulses an die Steuer-Gates des Satzes ausgewählter Speicherzellen in jedem jeweiligen Satz der mehreren Sätze der NAND-Ketten, während die Auswahlspannung an die Drain-Auswahl-Gates der Vielzahl von Sätzen von NAND-Ketten angelegt wird und die Spannungen an die Bitleitungen angelegt werden, um das zweite Datenmuster gleichzeitig in jeden Satz von ausgewählten Speicherzellen zu programmieren.In another aspect, the one or more management circuits are further configured to: apply voltages to the plurality of bit lines according to a second data pattern, the second data pattern corresponding to a second data state of the plurality of data states; simultaneously applying the select voltage to the drain select gates of the multiple sets of the NAND strings; and simultaneously applying a second programming pulse to the control gates of the set of selected memory cells in each respective set of the plurality of sets of NAND chains while applying the select voltage to the drain select gates of the plurality of sets of NAND chains and the voltages are applied to the bit lines to simultaneously program the second data pattern into each set of selected memory cells.

In einem weiteren Gesichtspunkt weist die Einrichtung weiterhin eine Vielzahl von Spannungsgeneratoren auf. Die eine oder die mehreren Verwaltungsschaltungen sind weiterhin eingerichtet zum Aktivieren einer Anzahl der Spannungsgeneratoren basierend auf einer Anzahl der Sätze ausgewählter Speicherzellen, die gleichzeitig programmiert werden sollen. Die eine oder die mehreren Verwaltungsschaltungen sind eingerichtet zum Verbinden der aktivierten Spannungsgeneratoren mit den Steuer-Gates des Satzes ausgewählter Speicherzellen in jedem jeweiligen Satz der mehreren Sätze der NAND-Ketten, um gleichzeitig den Programmierimpuls an die Steuer-Gates anzulegen.In a further aspect, the device also has a multiplicity of voltage generators. The one or more management circuits are further configured to activate a number of the voltage generators based on a number of the sets of selected memory cells to be programmed simultaneously. The one or more management circuits are configured to connect the activated voltage generators to the control gates of the set of selected memory cells in each respective set of the multiple sets of NAND chains to simultaneously apply the programming pulse to the control gates.

In einem weiteren Gesichtspunkt sind die eine oder die mehreren Verwaltungsschaltungen weiterhin eingerichtet, um einen separaten Spannungsgenerator für jeden Satz ausgewählter Speicherzellen zu ermöglichen, die gleichzeitig programmiert werden sollen.In another aspect, the one or more management circuits are further configured to enable a separate voltage generator for each set of selected memory cells to be programmed simultaneously.

Ein Gesichtspunkt ist ein Verfahren, aufweisend: i) Anlegen einer Programmfreigabespannung an ausgewählte Bitleitungen gemäß einem Datenzustand, an den „n“ Sätze nichtflüchtiger Speicherzellen gleichzeitig programmiert werden sollen, wobei n eine ganze Zahl größer als 1 ist; ii) gleichzeitiges Verbinden jeder ausgewählten Bitleitung mit n ausgewählten NAND-Ketten, einschließlich gleichzeitigen Verbindens jeder ausgewählten Bitleitung mit einer unterschiedlichen NAND-Kette in n Sätzen von NAND-Ketten; iii) gleichzeitiges Anlegen eines Programmimpulses an Steuer-Gates von n Sätzen von Speicherzellen, während die ausgewählten Bitleitungen mit den jeweiligen n ausgewählten NAND-Ketten verbunden sind und die Programmfreigabespannung an die ausgewählten Bitleitungen angelegt wird, um gleichzeitig jeden der n Sätze der Speicherzellen auf eine Schwellenspannungsverteilung zu programmieren, die dem Datenzustand zugeordnet ist; und iv) Wiederholen des i), des ii) und des iii) für null oder mehr zusätzliche Datenzustände.One aspect is a method, comprising: i) applying a program enable voltage to selected bit lines according to a data state to which "n" sets of non-volatile memory cells are to be programmed simultaneously, where n is an integer greater than 1; ii) connecting each selected bit line to n selected NAND strings simultaneously, including simultaneously connecting each selected bit line to a different NAND string in n sets of NAND strings; iii) applying a program pulse simultaneously to control gates of n sets of memory cells while the selected bit lines are connected to the respective n selected NAND chains and the program enable voltage is applied to the selected bit lines to simultaneously set each of the n sets of memory cells to a program threshold voltage distribution associated with the data state; and iv) repeating i), ii) and iii) for zero or more additional data states.

Ein Gesichtspunkt schließt ein System ein, das eine Vielzahl von Sätzen von NAND-Ketten aufweist, wobei jede NAND-Kette nichtflüchtige Speicherzellen aufweist, wobei jede Speicherzelle ein Steuer-Gate hat. Das System weist eine Vielzahl von leitfähigen Regionen auf, wobei jede leitfähige Region mit dem Steuer-Gate einer Speicherzelle jeder NAND-Kette in einem Satz der NAND-Ketten verbunden ist. Das System weist eine Vielzahl von Bitleitungen auf, die der Vielzahl von Sätzen von NAND-Ketten zugeordnet sind, wobei jede Bitleitung einer unterschiedlichen NAND-Kette in jedem Satz der NAND-Ketten zugeordnet ist. Das System weist eine Vielzahl von Spannungsgeneratoren auf. Das System weist eine oder mehrere Verwaltungsschaltungen auf, die mit der Vielzahl von Sätzen von NAND-Ketten, der Vielzahl von leitfähigen Regionen, der Vielzahl von Bitleitungen und der Vielzahl von Spannungsgeneratoren verbunden sind. Die eine oder die mehreren Verwaltungsschaltungen sind eingerichtet zum Aktivieren einer Anzahl der Spannungsgeneratoren basierend auf einer Anzahl der leitfähigen Regionen, die während eines Programmiervorgangs, der gleichzeitig das gleiche Datenmuster in n Sätze der Speicherzellen programmiert, die gleiche Spannungsgröße erhalten sollen. Jeder Satz der Speicherzellen befindet sich in einem unterschiedlichen Satz der Vielzahl von Sätzen von NAND-Ketten, wobei n eine ganze Zahl größer als 1 ist. Die eine oder die mehreren Verwaltungsschaltungen sind eingerichtet zum Verbinden der aktivierten Spannungsgeneratoren mit der Anzahl der leitfähigen Regionen, um gleichzeitig die gleiche Spannungsgröße an die Anzahl der leitfähigen Regionen anzulegen, wenn gleichzeitig das gleiche Datenmuster in die n Sätze der Speicherzellen programmiert wird.One aspect includes a system having a plurality of sets of NAND strings, each NAND string including non-volatile memory cells, each memory cell having a control gate. The system includes a plurality of conductive regions, each conductive region being connected to the control gate of a memory cell of each NAND string in a set of the NAND strings. The system includes a plurality of bit lines associated with the plurality of sets of NAND chains, with each bit line associated with a different NAND chain in each set of NAND chains. The system includes a variety of voltage generators. The system includes one or more management circuits connected to the plurality of sets of NAND chains, the plurality of conductive regions, the plurality of bit lines, and the plurality of voltage generators. The one or more management circuits are configured to activate a number of the voltage generators based on a number of the conductive regions that are to receive the same voltage magnitude during a programming operation that simultaneously programs the same data pattern into n sets of the memory cells. Each set of memory cells is in a different set of the plurality of sets of NAND strings, where n is an integer greater than 1. The one or more management circuits are configured to connect the activated voltage generators to the number of conductive regions to simultaneously apply the same magnitude of voltage to the number of conductive regions when programming the same data pattern into the n sets of memory cells at the same time.

Ein Mittel zum elektrischen Verbinden einer ersten Wortleitung und einer zweiten Wortleitung kann in verschiedenen Ausführungsformen eine Komponente zum gleichzeitigen Programmieren 150, eine Die-Steuerung 220, eine Programmierschaltung 284, eine nichtflüchtige Speichervorrichtungsschnittstelle 139, eine nichtflüchtige Speichermediensteuerung 126, einen Vorrichtungstreiber, eine Steuerung (z. B. einen Vorrichtungstreiber oder dergleichen), der auf einer Host-Rechnervorrichtung 110 ausgeführt wird, einen Prozessor 111 oder andere Logik-Hardware einschließen.A means for electrically connecting a first wordline and a second wordline may, in various embodiments, include a concurrent programming component 150, a die controller 220, a programming circuit 284, a non-volatile memory device interface 139, a non-volatile memory media controller 126, a device driver, a controller (e.g., (e.g., a device driver or the like) executing on a host computing device 110, a processor 111, or other logic hardware.

Ein Mittel zum elektrischen Auswählen einer Bitleitung kann in verschiedenen Ausführungsformen eine Komponente zum gleichzeitigen Programmieren 150, eine Die-Steuerung 220, eine Programmierschaltung 284, eine nichtflüchtige Speichervorrichtungsschnittstelle 139, eine nichtflüchtige Speichermediensteuerung 126, eine Host-Rechnervorrichtung 110, einen Bus 127, ein Kommunikationsnetzwerk 115, einen Vorrichtungstreiber, eine Steuerung (z. B. einen Vorrichtungstreiber oder dergleichen), die auf einer Host-Rechnervorrichtung 110 ausgeführt wird, einen Prozessor 111, andere Logik-Hardware und/oder anderen ausführbaren Code, der auf einem computerlesbaren Speichermedium gespeichert ist, einschließen.A means for electrically selecting a bit line may, in various embodiments, include a simultaneous programming component 150, a die controller 220, a programming circuit 284, a non-volatile storage device interface 139, a non-volatile storage media controller 126, a host computing device 110, a bus 127, a communication network 115, a device driver, a controller (e.g., a device driver or the like) executing on a host computing device 110, a processor 111, other logic hardware, and/or other executable code stored on a computer-readable storage medium , lock in.

Ein Mittel zum Anlegen eines einzelnen Programmierimpulses an die verbundenen Wortleitungen kann bei verschiedenen Ausführungsformen eine Komponente zum gleichzeitigen Programmieren 150, eine Die-Steuerung 220, eine Programmierschaltung 284, eine nichtflüchtige Speichervorrichtungsschnittstelle 139, eine nichtflüchtige Speichermediensteuerung 126, einen Speicher-Client 116, eine Host-Rechnervorrichtung 110, einen Bus 127, ein Kommunikationsnetz 115, einen Vorrichtungstreiber, eine Steuerung (z. B. einen Vorrichtungstreiber oder dergleichen), die auf einer Host-Rechnervorrichtung 110 ausgeführt wird, einen Prozessor 111, andere logische Hardware und/oder anderen ausführbaren Code, der auf einem computerlesbaren Speichermedium gespeichert ist, einschließen.A means for applying a single programming pulse to the connected word lines may, in various embodiments, include a simultaneous programming component 150, a die controller 220, a programming circuit 284, a non-volatile memory device interface 139, a non-volatile memory media controller 126, a memory client 116, a host Computing device 110, a bus 127, a communications network 115, a device driver, a controller (e.g., a device driver or the like) executing on a host computing device 110, a processor 111, other logical hardware, and/or other executables Include code stored on a computer-readable storage medium.

Die vorliegende Offenbarung kann in anderen spezifischen Formen ausgeführt werden, ohne von ihrem Wesen oder ihren wesentlichen Eigenschaften abzuweichen. Die beschriebenen Ausführungsformen sind in jeder Hinsicht nur als veranschaulichend und nicht als einschränkend zu betrachten. Der Schutzumfang der Offenbarung ist daher eher durch die beiliegenden Ansprüche als durch die vorangehende Beschreibung angegeben. Alle Änderungen, die in die Bedeutung und den Äquivalenzbereich der Ansprüche fallen, sollen in ihren Schutzumfang fallen.The present disclosure may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. The described embodiments are to be considered in all respects only as illustrative and not restrictive consider. The scope of the disclosure is, therefore, indicated by the appended claims rather than by the foregoing description. All changes that come within the meaning and range of equivalency of the claims are to be embraced within their scope.

ZITATE ENTHALTEN IN DER BESCHREIBUNGQUOTES INCLUDED IN DESCRIPTION

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.This list of documents cited by the applicant was generated automatically and is included solely for the better information of the reader. The list is not part of the German patent or utility model application. The DPMA assumes no liability for any errors or omissions.

Zitierte PatentliteraturPatent Literature Cited

  • US 17227820 [0001]US17227820 [0001]
  • US 16024002 [0001]US16024002 [0001]
  • US 8134871 [0140]US Pat. No. 8,134,871 [0140]
  • US 9343141 [0144]US9343141 [0144]

Claims (20)

Einrichtung, aufweisend: eine Vielzahl von Sätzen von NAND-Ketten, wobei jede NAND-Kette Speicherzellen aufweist, wobei jede Speicherzelle ein Steuer-Gate hat, wobei jede NAND-Kette Drain-Auswahl-Gates aufweist; eine Vielzahl von Bitleitungen, die der Vielzahl von Sätzen von NAND-Ketten zugeordnet sind, wobei jede Bitleitung einer unterschiedlichen NAND-Kette in jedem Satz von NAND-Ketten zugeordnet ist; und eine oder mehrere Verwaltungsschaltungen, die mit der Vielzahl von Sätzen von NAND-Ketten und mit der Vielzahl von Bitleitungen verbunden sind, wobei die eine oder die mehreren Verwaltungsschaltungen eingerichtet sind zum: Anlegen von Spannungen an die Vielzahl von Bitleitungen gemäß einem Datenmuster; Anlegen einer Auswahlspannung an die Drain-Auswahl-Gates mehrerer Sätze der NAND-Ketten; und gleichzeitigen Anlegen eines Programmierimpulses an Steuer-Gates eines unterschiedlichen Satzes ausgewählter Speicherzellen in jedem jeweiligen Satz der mehreren Sätze der NAND-Ketten, während die Auswahlspannung an die Drain-Auswahl-Gates der mehreren Sätze der NAND-Ketten angelegt wird und die Spannungen an die Vielzahl von Bitleitungen angelegt werden, um das Datenmuster gleichzeitig in jeden Satz der ausgewählten Speicherzellen zu programmieren.facility comprising: a plurality of sets of NAND chains, each NAND chain having memory cells, each memory cell having a control gate, each NAND chain having drain select gates; a plurality of bit lines associated with the plurality of sets of NAND chains, each bit line associated with a different NAND chain in each set of NAND chains; and one or more management circuits coupled to the plurality of sets of NAND chains and to the plurality of bit lines, the one or more management circuits configured to: applying voltages to the plurality of bit lines according to a data pattern; applying a select voltage to drain select gates of multiple sets of the NAND chains; and simultaneously applying a programming pulse to control gates of a different set of selected memory cells in each respective set of the multiple sets of NAND chains while applying the select voltage to the drain select gates of the multiple sets of NAND chains and the voltages to the plurality of bit lines may be applied to simultaneously program the data pattern into each set of selected memory cells. Einrichtung gemäß Anspruch 1, wobei die mehreren Sätze der NAND-Ketten mindestens drei Sätze von NAND-Ketten aufweisen.Setup according to claim 1 , wherein the plurality of sets of NAND chains includes at least three sets of NAND chains. Einrichtung gemäß Anspruch 1, wobei die eine oder die mehreren Verwaltungsschaltungen eingerichtet sind zum gleichzeitigen Anlegen des Programmierimpulses an die Steuer-Gates des unterschiedlichen Satzes ausgewählter Speicherzellen in jedem jeweiligen Satz der mehreren Sätze der NAND-Ketten, um jede ausgewählte Speicherzelle auf ein einzelnes Bit pro Zelle zu programmieren.Setup according to claim 1 wherein the one or more management circuits are arranged to simultaneously apply the programming pulse to the control gates of the different set of selected memory cells in each respective set of the plurality of sets of NAND chains to program each selected memory cell to a single bit per cell. Einrichtung gemäß Anspruch 1, wobei das Datenmuster definiert, ob eine ausgewählte Speicherzelle auf einen Datenzustand einer Vielzahl von Datenzuständen programmiert werden soll, wobei die eine oder die mehreren Verwaltungsschaltungen eingerichtet sind zum: Auswählen einer Größe des Programmierimpulses basierend darauf, welcher der Vielzahl von Datenzuständen gegenwärtig gleichzeitig programmiert wird.Setup according to claim 1 , wherein the data pattern defines whether a selected memory cell is to be programmed to one of a plurality of data states, wherein the one or more management circuits are configured to: select a magnitude of the programming pulse based on which of the plurality of data states is currently being programmed at the same time. Einrichtung gemäß Anspruch 1, wobei das Datenmuster einem ersten Datenzustand einer Vielzahl von Datenzuständen entspricht, der Programmierimpuls ein erster Programmierimpuls ist, der von der einen oder den mehreren Verwaltungsschaltungen angelegt wird, um ausgewählte Speicherzellen gleichzeitig zu programmieren, die auf den ersten Datenzustand gerichtet sind.Setup according to claim 1 wherein the data pattern corresponds to a first data state of a plurality of data states, the programming pulse is a first programming pulse applied by the one or more management circuits to simultaneously program selected memory cells directed to the first data state. Einrichtung gemäß Anspruch 5, wobei die eine oder mehreren Verwaltungsschaltungen weiterhin eingerichtet sind zum: Anlegen von Spannungen an die Vielzahl von Bitleitungen gemäß einem zweiten Datenmuster, wobei das zweite Datenmuster einem zweiten Datenzustand der Vielzahl von Datenzuständen entspricht; gleichzeitigen Anlegen der Auswahlspannung an die Drain-Auswahl-Gates der mehreren Sätze der NAND-Ketten; und gleichzeitigen Anlegen eines zweiten Programmierimpulses an die Steuer-Gates des unterschiedlichen Satzes ausgewählter Speicherzellen in jedem jeweiligen Satz der mehreren Sätze der NAND-Ketten, während die Auswahlspannung an die Drain-Auswahl-Gates der Vielzahl von Sätzen von NAND-Ketten angelegt wird und die Spannungen an die Bitleitungen angelegt werden, um das zweite Datenmuster gleichzeitig in jeden Satz von ausgewählten Speicherzellen zu programmieren.Setup according to claim 5 wherein the one or more management circuits are further configured to: apply voltages to the plurality of bit lines according to a second data pattern, the second data pattern corresponding to a second data state of the plurality of data states; simultaneously applying the select voltage to the drain select gates of the multiple sets of the NAND strings; and simultaneously applying a second programming pulse to the control gates of the different set of selected memory cells in each respective set of the plurality of sets of NAND chains while applying the selection voltage to the drain select gates of the plurality of sets of NAND chains and the Voltages are applied to the bit lines to simultaneously program the second data pattern into each set of selected memory cells. Einrichtung gemäß Anspruch 1, weiterhin aufweisend eine Vielzahl von Spannungsgeneratoren, wobei die eine oder die mehreren Verwaltungsschaltungen weiterhin eingerichtet sind zum: Aktivieren einer Anzahl der Spannungsgeneratoren basierend auf einer Anzahl der Sätze ausgewählter Speicherzellen, die gleichzeitig programmiert werden sollen; und Verbinden der aktivierten Spannungsgeneratoren mit den Steuer-Gates des Satzes ausgewählter Speicherzellen in jedem jeweiligen Satz der mehreren Sätze der NAND-Ketten, um gleichzeitig den Programmierimpuls an die Steuer-Gates anzulegen.Setup according to claim 1 , further comprising a plurality of voltage generators, wherein the one or more management circuits are further configured to: activate a number of the voltage generators based on a number of the sets of selected memory cells to be programmed simultaneously; and connecting the activated voltage generators to the control gates of the set of selected memory cells in each respective set of the plurality of sets of NAND chains to simultaneously apply the programming pulse to the control gates. Einrichtung gemäß Anspruch 7, wobei die eine oder die mehreren Verwaltungsschaltungen weiterhin eingerichtet sind, um einen separaten Spannungsgenerator für jeden Satz ausgewählter Speicherzellen zu ermöglichen, die gleichzeitig programmiert werden sollen.Setup according to claim 7 , wherein the one or more management circuits are further configured to enable a separate voltage generator for each set of selected memory cells to be programmed simultaneously. Verfahren, aufweisend: i) Anlegen einer Programmfreigabespannung an ausgewählte Bitleitungen gemäß einem Datenzustand, an den „n“ Sätze nichtflüchtiger Speicherzellen gleichzeitig programmiert werden sollen, wobei n eine ganze Zahl größer als 1 ist; ii) gleichzeitiges Verbinden jeder ausgewählten Bitleitung mit n ausgewählten NAND-Ketten, einschließlich gleichzeitigen Verbindens jeder ausgewählten Bitleitung mit einer unterschiedlichen NAND-Kette in n Sätzen von NAND-Ketten; iii) gleichzeitiges Anlegen eines Programmimpulses an Steuer-Gates von n Sätzen von Speicherzellen, während die ausgewählten Bitleitungen mit den jeweiligen n ausgewählten NAND-Ketten verbunden sind und die Programmfreigabespannung an die ausgewählten Bitleitungen angelegt wird, um gleichzeitig jeden der n Sätze der Speicherzellen auf eine Schwellenspannungsverteilung zu programmieren, die dem Datenzustand zugeordnet ist; und iv) Wiederholen des i), des ii) und des iii) für null oder mehr zusätzliche Datenzustände.A method comprising: i) applying a program enable voltage to selected bit lines according to a data state to which "n" sets of non-volatile memory cells are to be programmed simultaneously, where n is an integer greater than 1; ii) simultaneously connecting each selected bit line to n selected NAND strings, including simultaneously connecting each selected bit line to a different NAND string in n sets of NAND strings; iii) simultaneously applying a program pulse to control gates of n sets of memory cells while connecting the selected bit lines to the respective n selected NAND chains and the program enable voltage is applied to the selected bit lines to simultaneously program each of the n sets of memory cells to a threshold voltage distribution associated with the data state; and iv) repeating i), ii) and iii) for zero or more additional data states. Verfahren gemäß Anspruch 9, wobei das Wiederholen des i), des ii) und des iii) für null oder mehr zusätzliche Datenzustände aufweist: Wiederholen des i), des ii) und des iii) für mindestens drei zusätzliche Datenzustände.procedure according to claim 9 wherein repeating the i), the ii) and the iii) for zero or more additional data states comprises: repeating the i), the ii) and the iii) for at least three additional data states. Verfahren gemäß Anspruch 9, wobei das Wiederholen des i), des ii) und des iii) für null oder mehr zusätzliche Datenzustände aufweist: Wiederholen des i), des ii) und des iii) für mindestens drei zusätzliche Datenzustände, ohne einen der Datenzustände zu verifizieren.procedure according to claim 9 wherein repeating the i), the ii) and the iii) for zero or more additional data states comprises: repeating the i), the ii) and the iii) for at least three additional data states without verifying any of the data states. Verfahren gemäß Anspruch 11, weiterhin aufweisend: Durchführen einer Feinprogrammierungsphase einzeln auf jedem der n Sätze der Speicherzellen nach dem gleichzeitigen Programmieren der n Sätze der Speicherzellen auf die Datenzustände.procedure according to claim 11 , further comprising: after programming the n sets of memory cells to the data states simultaneously, performing a fine programming phase individually on each of the n sets of memory cells. Verfahren gemäß Anspruch 9, wobei das Wiederholen des i), des ii) und des iii) für null oder mehr zusätzliche Datenzustände aufweist: Auswählen einer Größe des Programmierimpulses für jeden jeweiligen Datenzustand, der von einer Schwellenspannung abhängt, die dem Datenzustand zugeordnet ist.procedure according to claim 9 wherein repeating i), ii) and iii) for zero or more additional data states comprises: selecting a programming pulse magnitude for each respective data state that depends on a threshold voltage associated with the data state. Verfahren gemäß Anspruch 9, wobei das Wiederholen des i), des ii) und des iii) für null oder mehr zusätzliche Datenzustände aufweist: Wiederholen des i), des ii) und des iii) für drei zusätzliche Datenzustände, um gleichzeitig jeden der n Sätze von Speicherzellen auf zwei Bits pro Zelle zu programmieren.procedure according to claim 9 , wherein repeating the i), the ii) and the iii) for zero or more additional data states comprises: repeating the i), the ii) and the iii) for three additional data states to simultaneously expand each of the n sets of memory cells to two programming bits per cell. Verfahren gemäß Anspruch 14, weiterhin aufweisend: Individuelles Programmieren jedes der n Sätze der Speicherzellen auf vier Bits pro Zelle nach dem gleichzeitigen Programmieren der n Sätze der Speicherzellen auf zwei Bits pro Zelle.procedure according to Claim 14 , further comprising: individually programming each of the n sets of memory cells to four bits per cell after simultaneously programming the n sets of memory cells to two bits per cell. System, aufweisend: eine Vielzahl von Sätzen von NAND-Ketten, wobei jede NAND-Kette nichtflüchtige Speicherzellen aufweist, wobei jede Speicherzelle ein Steuer-Gate hat; eine Vielzahl von leitfähigen Regionen, wobei jede leitfähige Region mit dem Steuer-Gate einer Speicherzelle jeder NAND-Kette in einem Satz der NAND-Ketten verbunden ist; eine Vielzahl von Bitleitungen, die der Vielzahl von Sätzen von NAND-Ketten zugeordnet sind, wobei jede Bitleitung einer unterschiedlichen NAND-Kette in jedem Satz der NAND-Ketten zugeordnet ist; eine Vielzahl von Spannungsgeneratoren; und eine oder mehrere Verwaltungsschaltungen, die mit der Vielzahl von Sätzen von NAND-Ketten, der Vielzahl von leitfähigen Regionen, der Vielzahl von Bitleitungen und der Vielzahl von Spannungsgeneratoren verbunden sind, wobei die eine oder die mehreren Verwaltungsschaltungen eingerichtet sind zum: Aktivieren einer Anzahl der Spannungsgeneratoren auf der Grundlage einer Anzahl der leitfähigen Regionen, die während eines Programmiervorgangs, der gleichzeitig das gleiche Datenmuster in n Sätze der Speicherzellen programmiert, die gleiche Spannungsgröße erhalten sollen, wobei sich jeder Satz der Speicherzellen in einem unterschiedlichen Satz der Vielzahl von Sätzen von NAND-Ketten befindet, wobei n eine ganze Zahl größer als 1 ist; und Verbinden der aktivierten Spannungsgeneratoren mit der Anzahl der leitfähigen Regionen, um gleichzeitig die gleiche Spannungsgröße an die Anzahl der leitfähigen Regionen anzulegen, wenn gleichzeitig das gleiche Datenmuster in die n Sätze der Speicherzellen programmiert wird.system comprising: a plurality of sets of NAND strings, each NAND string including non-volatile memory cells, each memory cell having a control gate; a plurality of conductive regions, each conductive region being connected to the control gate of a memory cell of each NAND string in a set of the NAND strings; a plurality of bit lines associated with the plurality of sets of NAND chains, each bit line associated with a different NAND chain in each set of NAND chains; a variety of voltage generators; and one or more management circuits coupled to the plurality of sets of NAND chains, the plurality of conductive regions, the plurality of bit lines, and the plurality of voltage generators, the one or more management circuits configured to: Enabling a number of the voltage generators based on a number of the conductive regions intended to receive the same magnitude of voltage during a programming operation that simultaneously programs the same data pattern into n sets of the memory cells, each set of the memory cells being in a different set of the plurality of sets of NAND chains, where n is an integer greater than 1; and Connecting the activated voltage generators to the number of conductive regions to simultaneously apply the same magnitude of voltage to the number of conductive regions when simultaneously programming the same data pattern into the n sets of memory cells. System gemäß Anspruch 16, wobei: die gleiche Spannungsgröße eine Programmspannung ist; und die Anzahl der leitfähigen Regionen n ausgewählte leitfähige Regionen sind, jeder Satz der Speicherzellen ist mit einem der n ausgewählten leitfähigen Regionen verbunden.system according to Claim 16 , where: the same voltage magnitude is a program voltage; and the number of conductive regions is n selected conductive regions, each set of memory cells is connected to one of the n selected conductive regions. System gemäß Anspruch 17, wobei: die eine oder die mehreren Verwaltungsschaltungen eingerichtet sind, um einen der Spannungsgeneratoren für jeden der ausgewählten leitfähigen Regionen auszuwählen.system according to Claim 17 , wherein: the one or more management circuits are configured to select one of the voltage generators for each of the selected conductive regions. System gemäß Anspruch 16, wobei: die gleiche Spannungsgröße eine Verstärkungsspannung ist; und die Anzahl der leitfähigen Regionen nicht ausgewählte leitfähige Regionen sind.system according to Claim 16 , where: the same voltage magnitude is a boost voltage; and the number of conductive regions are unselected conductive regions. System gemäß Anspruch 16, wobei die eine oder die mehreren Verwaltungsschaltungen eingerichtet sind, um das Folgende durchzuführen, während die aktivierten Spannungsgeneratoren mit der Anzahl der leitfähigen Regionen verbunden sind: Anlegen einer Programmfreigabespannung an ausgewählte Bitleitungen gemäß einem Datenzustand, in den die n Sätze von Speicherzellen gleichzeitig programmiert werden sollen; und gleichzeitiges Verbinden jeder ausgewählten Bitleitung mit n ausgewählten NAND-Ketten, einschließlich gleichzeitigen Verbindens jeder ausgewählten Bitleitung mit einer unterschiedlichen NAND-Kette in n Sätzen von NAND-Ketten.system according to Claim 16 , wherein the one or more management circuits are configured to perform the following while the activated voltage generators are connected to the number of conductive regions: applying a program enable voltage to selected bit lines according to a data state to which the n sets of memory cells are to be programmed simultaneously ; and connecting each selected bit line to n selected NAND strings simultaneously, including connecting each selected one simultaneously Bit line with a different NAND chain in n sets of NAND chains.
DE102022102588.8A 2021-06-28 2022-02-03 SIMULTANEOUS PROGRAMMING OF MULTIPLE CELLS FOR NON-VOLATILE STORAGE DEVICES Pending DE102022102588A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/360,572 2021-06-28
US17/360,572 US11545221B2 (en) 2018-06-29 2021-06-28 Concurrent programming of multiple cells for non-volatile memory devices

Publications (1)

Publication Number Publication Date
DE102022102588A1 true DE102022102588A1 (en) 2022-12-29

Family

ID=84388687

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022102588.8A Pending DE102022102588A1 (en) 2021-06-28 2022-02-03 SIMULTANEOUS PROGRAMMING OF MULTIPLE CELLS FOR NON-VOLATILE STORAGE DEVICES

Country Status (2)

Country Link
CN (1) CN115602228A (en)
DE (1) DE102022102588A1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8134871B2 (en) 2009-08-05 2012-03-13 Sandisk Technologies Inc. Programming memory with reduced pass voltage disturb and floating gate-to-control gate leakage
US9343141B2 (en) 2014-07-15 2016-05-17 Sandisk Technologies Inc. Reprogramming memory with single program pulse per data state

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8134871B2 (en) 2009-08-05 2012-03-13 Sandisk Technologies Inc. Programming memory with reduced pass voltage disturb and floating gate-to-control gate leakage
US9343141B2 (en) 2014-07-15 2016-05-17 Sandisk Technologies Inc. Reprogramming memory with single program pulse per data state

Also Published As

Publication number Publication date
CN115602228A (en) 2023-01-13

Similar Documents

Publication Publication Date Title
DE112019000165T5 (en) SIMULTANEOUSLY PROGRAMMING MULTIPLE CELLS FOR NON-VOLATILE STORAGE DEVICES
DE112017004208B4 (en) 3D NAND WITH PARTIAL BLOCK ERASE
DE112017001761B4 (en) NAND structure with stage select gate transistors
DE102017104257A1 (en) Cell current based bit line voltage
DE112019000164T5 (en) MEMORY DEVICE WITH LINKED WORDLINES FOR QUICK PROGRAMMING
DE102007002248A1 (en) Non-volatile semiconductor memory device and method of erasing a flash memory device
DE112018004373T5 (en) ADAPTIVE PROGRAMMING VOLTAGE FOR NON-VOLATILE STORAGE DEVICES
US11545221B2 (en) Concurrent programming of multiple cells for non-volatile memory devices
DE102020116188B4 (en) IMPROVEMENT IN SOURCE-SIDE PRECHARGING AND STRENGTHENING FOR REVERSE ORDER PROGRAMMING
DE102018209207A1 (en) SELECTIVE BODY RESET OPERATION FOR THREE-DIMENSIONAL (3D) NAND MEMORY
DE112015003651T5 (en) ADAPTIVE SELECTIVE BITLE LOADING FOR POWER SAVINGS AND FAST PROGRAMMING
DE102019124668A1 (en) TRANSISTOR THRESHOLD VOLTAGE HOLDING IN 3D MEMORY
DE102021115501A1 (en) READ UPDATE TO IMPROVE DATA PRESERVATION PERFORMANCE FOR NON-VOLATILE MEMORY
DE102020107504A1 (en) NON-VOLATILE MEMORY ARRAY THAT IS DRIVEN BY BOTH SIDES TO IMPROVE PERFORMANCE
DE102015011991A1 (en) Coding scheme for vertical 3D flash memory
DE102018123961A1 (en) GROUPS OF READING LAST
DE112019005811T5 (en) CAM STORAGE SCHEMES AND CAM READ PROCESSES TO DETECT MATCHING KEYS WITH BIT ERRORS
DE102010037064A1 (en) A nonvolatile memory device and system and method of programming a nonvolatile memory device
DE112019000153T5 (en) Selection of the subgroup for examination
DE112019000159T5 (en) RAMP DOWN SCAN BETWEEN PROGRAM VOLTAGE AND TEST VOLTAGE IN A STORAGE DEVICE
DE102020116365A1 (en) DELETE PROCESS IN 3D NAND
DE102022102589A1 (en) TRIGGING THE NEXT STATE VERIFICATION IN THE PROGRAMMING LOOP FOR NON-VOLATILE MEMORY
DE112019005518T5 (en) MULTI-STATE PROGRAMMING IN A STORAGE DEVICE WITH LOOP-DEPENDENT BIT LINE VOLTAGE DURING VERIFICATION
DE102020116034B4 (en) PEAK AND AVERAGE CURRENT REDUCTION FOR UNDER BLOCK STORAGE OPERATION
DE102022101341A1 (en) PEAK AND AVERAGE ICC REDUCTION BY STEP-BASED SENSING DURING PROGRAM VERIFICATION OPERATIONS OF NON-VOLATILE MEMORY STRUCTURES

Legal Events

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

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE