DE102022102588A1 - SIMULTANEOUS PROGRAMMING OF MULTIPLE CELLS FOR NON-VOLATILE STORAGE DEVICES - Google Patents
SIMULTANEOUS PROGRAMMING OF MULTIPLE CELLS FOR NON-VOLATILE STORAGE DEVICES Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital 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/5621—Digital 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/5628—Programming or writing circuits; Data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital 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/5671—Digital 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/32—Timing circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3436—Arrangements for verifying correct programming or erasure
- G11C16/3454—Arrangements for verifying correct programming or for detecting overprogrammed cells
- G11C16/3459—Circuits or methods to verify correct programming of nonvolatile memory cells
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1015—Read-write modes for single port memories, i.e. having either a random port or a serial port
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/12—Group selection circuits, e.g. for memory block selection, chip selection, array selection
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/18—Address timing or clocking circuits; Address control signal generation or management, e.g. for row address strobe [RAS] or column address strobe [CAS] signals
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/30—Power supply circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/562—Multilevel memory programming aspects
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/562—Multilevel memory programming aspects
- G11C2211/5621—Multilevel programming verification
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/562—Multilevel memory programming aspects
- G11C2211/5622—Concurrent multilevel programming of more than one cell
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/564—Miscellaneous aspects
- G11C2211/5641—Multilevel memory having cells with different number of storage levels
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/20—Memory cell initialisation circuits, e.g. when powering up or down, memory clear, latent image memory
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/06—Address 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
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 aus1B darstellt. -
2B eine Querschnittsansicht exemplarischer Ladungseinfangspeicherzellen in NAND-Ketten als Beispiel für Speicherzellen in2A darstellt. -
2C eine Querschnittsansicht der Struktur aus2B 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 aus1 aufweist. -
4 eine exemplarische Querschnittsansicht eines Abschnitts von einem der Blöcke aus3 darstellt. -
5 eine Nahansicht eines Bereichs des Stapels aus4 darstellt. -
6 eine exemplarische Ansicht von NAND-Ketten in Unterblöcken in einer 3D-Konfiguration darstellt, die mit4 übereinstimmt. -
7 ein zusätzliches Detail der Unterblöcke SB0 bis SB3 aus6 darstellt. -
8 eine Wellenform eines exemplarischen Programmiervorgangs darstellt. -
9 einen Abschnitt der Speicherzelle MC aus5 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 und15D 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 und20B 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 den20A und20B 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.
-
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 -
2A blocks of memory cells in an exemplary 2D configuration of the memory array1B 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 FIG2A represents. -
2C Figure 1 shows a cross-sectional view of the structure2 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 thememory array 1 having. -
4 Figure 14 is an exemplary cross-sectional view of a portion of one of theblocks 3 represents. -
5 a close-up view of an area of the stack4 represents. -
6 Figure 1 shows an exemplary view of NAND chains in sub-blocks in a 3D configuration using4 matches. -
7 provides additional detail of the sub-blocks SB0 to SB36 represents. -
8th Figure 12 illustrates a waveform of an example programming operation. -
9 a portion ofmemory 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 and15D 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 and20B Figure 12 are block diagrams of circuitry for providing voltages while simultaneously programming sets of memory cells. -
21 further illustrates how the circuits in the20A and20B 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.
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
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.
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
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
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.
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
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,
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
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
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.
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
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
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
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
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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.
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 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.
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
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
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
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
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.
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
In einem anderen Ausführungsbeispiel (in
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
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
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,
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,
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
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
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,
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
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
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
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
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
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
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
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,
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.
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
Wie in
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
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
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.
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
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.
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-
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
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.
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
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.
Die NAND-Ketten 700n, 710n, 720n und 730n haben jeweils Kanalbereiche 700a, 710a, 720a und 730a.The
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-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-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,
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.
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.
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
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
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
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
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
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
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
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
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
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,
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
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
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
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
In einem Schritt 1320 wird gleichzeitig ein Verifizierimpuls an die verbundenen Wortleitungen angelegt. Dies kann zum Beispiel durch die Verifizierschaltung 286 erfolgen.In a
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
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
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
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
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
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,
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
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
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
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
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
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
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
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.
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
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
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
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
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
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
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
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
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
In einigen Ausführungsformen programmiert das System gleichzeitig n Kopien eines Datenmusters in entsprechende n Sätze von Speicherzellen in einem mehrstufigen Zellprogrammierungsprozess.
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.
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.
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
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
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.
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.
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
In einigen Ausführungsformen programmiert der mehrstufige Zellprogrammierungsprozess Speicherzellen auf drei Bits pro Zelle.
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
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
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.
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.
Die Spannung an Bitleitungen 2210a - 2210c wird gemäß Daten eingestellt, die in Speicherzellen in jedem NAND-Kettensatz 2120, 2130 geschrieben werden. Obwohl in
Wie zuvor im Zusammenhang mit den
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,
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
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
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
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
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
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)
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)
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 |
-
2022
- 2022-02-03 DE DE102022102588.8A patent/DE102022102588A1/en active Pending
- 2022-02-11 CN CN202210129009.7A patent/CN115602228A/en active Pending
Patent Citations (2)
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 |