-
HINTERGRUND
-
Die vorliegende Technologie bezieht sich auf den Betrieb von Speichervorrichtungen.
-
Halbleiterspeicher wird weithin in verschiedenen elektronischen Geräten wie Mobiltelefonen, Digitalkameras, PDAs, medizinischer Elektronik, mobilen Rechenvorrichtungen, Servern, Solid-State-Laufwerken, nicht mobilen Rechenvorrichtungen und anderen Vorrichtungen verwendet. Halbleiterspeicher kann nichtflüchtigen Speicher oder flüchtigen Speicher aufweisen. Ein nichtflüchtiger Speicher ermöglicht, dass Informationen gespeichert und behalten werden, selbst wenn der nichtflüchtige Speicher nicht mit einer Stromquelle (z. B. einer Batterie) verbunden ist.
-
Bei einer dreidimensionalen (3D-) Speicherstruktur können die Speicherzellen in vertikalen Ketten in einem Stapel angeordnet sein, wobei der Stapel alternierende leitende und dielektrische Schichten aufweist. Die leitenden Schichten wirken als Wortleitungen, die mit den Speicherzellen verbunden sind. Ketten von Speicherzellen können durch Bohren von Speicherlöchern durch einen Stapel von sich abwechselnden Siliciumoxid- und Opferschichten, Ersetzen der Opferschichten durch die leitenden Schichten und Füllen der Speicherlöcher mit ringförmigen Filmen aus Speicherzellenmaterialien gebildet werden. Die leitenden Schichten dienen sowohl als Wortleitungen als auch als Steuer-Gates der Speicherzellen. Die ringförmigen Filme können eine Blockierungsschicht benachbart zu dem Steuer-Gate, einen Ladungsspeicherbereich, ein Tunneldielektrikum und einen Kanal (oder Körper) einschließen.
-
Bei einigen Techniken wird die Gruppe vor dem Programmieren einer Gruppe von Speicherzellen in einen sogenannten Löschzustand gelöscht. Dann werden einige der Speicherzellen aus dem Löschzustand in einen oder mehrere programmierte Zustände programmiert. Einige der Speicherzellen können nach dem Programmieren in dem Löschzustand verbleiben. Bei einigen Programmiertechniken befindet sich jede Speicherzelle nach dem Programmieren in einem von zwei Zuständen, die als einstufige Zelle („SLC“) bezeichnet werden können. Bei einigen Programmiertechniken befindet sich jede Speicherzelle nach dem Programmieren in einem von vier oder mehr Zuständen, was als mehrstufige Zelle („MLC“) bezeichnet werden kann. Einige Speicherzellen haben eine programmierbare Schwellenspannung (Vt). Der Löschzustand und der eine oder die mehreren programmierten Zustände können in Bezug auf die Schwellenspannung der Speicherzelle definiert werden.
-
Während des Programmierens kann eine Programmierspannung an eine Wortleitung („ausgewählte Wortleitung“) angelegt werden, die mit Speicherzellen verbunden ist, die zum Programmieren ausgewählt sind. Die Schwellenspannungen der Speicherzellen werden dann bei einer geeigneten Verifizierungsspannung auf den Zustand getestet, auf den jede Speicherzelle programmiert wird. Nach der Verifizierungsstufe kann eine andere Programmierspannung an die ausgewählte Wortleitung angelegt werden. Bei einigen Techniken wird die Größe der Programmspannung nach jeder Verifizierungsstufe erhöht. Speicherzellen, welche die Verifizierung bestanden haben, können für die weitere Programmierung gesperrt werden.
-
Einige der Speicherzellen („nicht ausgewählte Speicherzellen“), die mit der ausgewählten Wortleitung verbunden sind, müssen möglicherweise für die Programmierung gesperrt werden. Bei einigen Techniken werden Verstärkungsspannungen an Wortleitungen („nicht ausgewählte Wortleitungen“) angelegt, für die keine Speicherzelle programmiert werden soll. Die Verstärkungsspannungen tragen dazu bei, das Kanalpotential solcher nicht ausgewählten Speicherzellen zu erhöhen, deren Programmierung gesperrt werden soll, wodurch eine unerwünschte Programmierung der nicht ausgewählten Speicherzellen verhindert wird.
-
Figurenliste
-
Gleich nummerierte Elemente beziehen sich auf gemeinsame Komponenten in den verschiedenen Figuren.
- 1 ist ein Funktionsblockdiagramm einer Speichervorrichtung.
- 2 ist ein Blockdiagramm, das eine Ausführungsform eines Abtastblocks 51 von 1 darstellt.
- 3 ist ein Blockdiagramm, das eine Ausführungsform eines Speichersystems darstellt.
- 4 ist eine perspektivische Ansicht einer Speichervorrichtung.
- 4A stellt eine Draufsicht einer beispielhaften Wortleitungsschicht einer 3D-Speicherstruktur in einer Ausführungsform dar.
- 4B stellt eine Draufsicht einer beispielhaften SGD-Schicht dar, die mit 4A übereinstimmt.
- 4C stellt eine beispielhafte Querschnittsansicht eines Abschnitts einer der Blöcke von 4 dar.
- 4D stellt eine Ansicht des Bereichs 423 von 4C dar.
- 4E stellt einen Querschnitt (in einer x-y-Ebene) des Speicherlochs 410 von 4D dar.
- 5 ist eine Querschnittsansicht eines Beispiels eines Speicherlochs, das stark fehlgeformt ist.
- 6 ist ein Flussdiagramm, das eine Ausführungsform eines Prozesses zum Programmieren von NAND-Ketten von Speicherzellen beschreibt, die in einem Array organisiert sind.
- 7A zeigt Verteilungen von Schwellenspannungen für programmierte Speicherzellen.
- 7B zeigt acht mögliche Schwellenspannungsverteilungen nach dem Programmieren, um ein mögliches Problem zu veranschaulichen, das mit einer Gruppe von Speicherzellen auftreten kann, die eine schwere Fehlform haben.
- 7C zeigt acht Schwellenspannungsverteilungen nach dem Programmieren unter Verwendung unterschiedlicher Programmparameter als die im Beispiel von 7A verwendeten.
- 7D zeigt Schwellenspannungsverteilungen nach dem Programmieren, um die Verwendung anderer Programmparameter als die im Beispiel von 7C zu veranschaulichen.
- 8 ist eine Ausführungsform eines Prozesses zum Programmieren von Speicherzellen, die zur Anpassung von einem oder mehreren Parametern an eine Schwere einer Speicherloch-Fehlform einer Gruppe von Speicherzellen verwendet wird.
- 9 ist ein Flussdiagramm einer Ausführungsform eines Prozesses, bei dem eine Verifizierungsspannung des A-Zustands basierend auf einer Zählung von Speicherzellen in einer Zone zwischen einer Lösch-Verifizierungsspannung und der Verifizierungsspannung des A-Zustands eingestellt wird.
- 10 ist ein Flussdiagramm einer Ausführungsform eines Prozesses, bei dem die Programmschrittgröße basierend auf einer Zählung von Speicherzellen in einer Zone zwischen einer Lösch-Verifizierungsspannung und einer Verifizierungsspannung des A-Zustands eingestellt wird.
- 11 ist ein Flussdiagramm einer Ausführungsform eines Prozesses, bei dem sowohl die Programmschrittgröße als auch einer oder mehrere Verifizierungspegel basierend auf einer Zählung von Speicherzellen in einer Zone zwischen einer Löschüberprüfungsspannung und einer Verifizierungsspannung des A-Zustands eingestellt werden.
-
DETAILLIERTE BESCHREIBUNG
-
Es werden Techniken zur Abschwächung von fehlgeformten nichtflüchtigen Speicherzellen bereitgestellt. Die Fehlform kann die Leistungsfähigkeit der Speicherzelle negativ beeinflussen. Beispielsweise kann die Fehlform dazu führen, dass Speicherzellen, die in einem Löschzustand verbleiben sollten, unmittelbar nach dem Programmieren in einem anderen Zustand sind. Wie nachstehend ausführlicher erörtert wird, ist eine mögliche Ursache für dieses Problem die Art des elektrischen Feldes in einer Speicherzelle, die sich in einem fehlgeformten Speicherloch befindet.
-
In einigen Ausführungsformen wird eine Fehlform von Speicherzellen, die sich in Speicherlöchern befinden, abgeschwächt. Ein Speicherloch ist eine Öffnung, die während eines Halbleiterherstellungsprozesses gebildet wird und in der eine Speicherzelle oder ein Teil der Speicherzelle gebildet wird. In einigen Ausführungsformen werden die Speicherlöcher durch Bohren von Speicherlöchern durch einen Stapel von sich abwechselnden Siliciumoxid- und Siliciumnitridschichten, Ersetzen der Siliciumnitridschichten durch die leitenden Schichten und Füllen der Speicherlöcher mit ringförmigen Filmen aus Speicherzellenmaterialien gebildet. Die leitenden Schichten dienen sowohl als Wortleitungen als auch als Steuer-Gates der Speicherzellen. Die ringförmigen Filme können eine Blockierungsoxidschicht benachbart zu dem Steuer-Gate, einen Ladungsspeicherbereich, ein Tunneldielektrikum und einen Kanal (oder Körper) einschließen.
-
4E zeigt einen Querschnitt eines Beispiels eines ringförmigen Films einer nichtflüchtigen Speicherzelle, die sich in dem befindet, was hierin als Speicherloch (MH) bezeichnet wird. Verschiedene ringförmige Speicherzellenfilme 463-467 sind dargestellt. Diese Filme 463-467 können innerhalb des Speicherlochs gebildet sein. Zum Beispiel kann die nichtflüchtige Speicherzelle ein Blockier-Oxid-/Blockier-High-k-Material 463, eine Ladungseinfangschicht oder -film 464, wie SiN oder ein anderes Nitrid, eine Tunnelschicht 465, einen Polysiliciumkörper oder -kanal 466 und einen dielektrischen Kern 467 einschließen. Das Blockieroxid 463 ist in einigen Ausführungsformen von einem leitenden Steuer-Gate (in 4E nicht dargestellt) umgeben.
-
Aufgrund von Einschränkungen des Herstellungsprozesses kann das Speicherloch fehlgeformt sein. 5 zeigt einen Querschnitt eines weiteren Beispiels eines ringförmigen Films einer nichtflüchtigen Speicherzelle, die sich in einem fehlgeformten Speicherloch befindet. Aufgrund der unregelmäßigen Form des Speicherlochs haben die ringförmigen Filme 463-467 ebenfalls unregelmäßige Formen. Wie oben erwähnt, können die ringförmigen Filme von einem leitenden Steuer-Gate umgeben sein. Das leitende Steuer-Gate ist in 5 nicht dargestellt, es versteht sich jedoch, dass das leitende Steuer-Gate die unregelmäßige Form am Rand des Films 463 hat. Die unregelmäßige Form des Speicherlochs beeinflusst die Stärke des elektrischen Feldes in der Speicherzelle. Beispielsweise kann während des Speicherzellenbetriebs, wenn Spannungen an das Steuer-Gate angelegt werden, das elektrische Feld stärker sein, wenn die Steuer-Gate-Form spitzer ist, und schwächer, wenn die Steuer-Gate-Form gerader ist. Im Gegensatz dazu ist während des Speicherzellenbetriebs das elektrische Feld für das beispielhafte Speicherloch von 4E gleichförmiger. Eine mögliche Folge der Fehlformung des Speicherlochs in 5 ist, dass Verstärkungsspannungen (die an das Steuer-Gate angelegt werden), die eine unerwünschte Programmierung nicht ausgewählter Speicherzellen (die mit der ausgewählten Wortleitung verbunden sind) verhindern sollen, möglicherweise nicht effektiv genug sind, um eine unerwünschte Programmierung zu verhindern. Eine mögliche Auswirkung besteht darin, dass Speicherzellen, die im Löschzustand bleiben sollten, unmittelbar nach dem Programmieren in einem programmierten Zustand (z. B. A-Zustand) sind.
-
In einigen Ausführungsformen werden einer oder mehrere Programmparameter während des Programmierens einer Gruppe nichtflüchtiger Speicherzellen basierend auf der Schwere einer Speicherlochfehlform in der Gruppe ausgewählt. Der eine oder die mehreren Programmparameter können Folgendes einschließen, ohne darauf beschränkt zu sein: 1) die Schrittgröße der Programmspannung zwischen Programmschleifen; 2) eine Spannungslücke zwischen einer Referenzspannung zur Verifizierung des Löschzustands und einer Referenzspannung zur Verifizierung des A-Zustands; 3) einen oder mehrere Verifizierungsreferenzpegel, die verwendet werden, um zu überprüfen, ob eine Speicherzelle auf ihren Zielzustand programmiert wurde; und/oder 4) eine Spannungslücke zwischen einer ersten Verifizierungsreferenzspannung für einen niedrigsten programmierten Zustand und einer zweiten Verifizierungsreferenzspannung für einen höchsten programmierten Zustand.
-
Es sei zu beachten, dass in einigen Ausführungsformen nicht versucht wird, die Schwere jeder Speicherloch-Fehlform zu charakterisieren, sondern vielmehr die Schwere der Speicherloch-Fehlform einer Gruppe von Speicherzellen bestimmt wird. Innerhalb der Gruppe kann es erhebliche Unterschiede in der Schwere der Fehlform geben. Einige Speicherlöcher in der Gruppe können wohlgeformt sein (wie das Beispiel aus 4E), andere Speicherlöcher in der Gruppe können ziemlich unregelmäßig sein (wie das Beispiel aus 5), andere Speicherlöcher in der Gruppe können eine Unregelmäßigkeit zwischen dem Beispiel von 4E und 5 haben und noch andere könnten noch unregelmäßiger sein als das Beispiel aus 5. In einigen Ausführungsformen basiert die Schwere der Speicherloch-Fehlform in der Gruppe auf einer Anzahl von Speicherzellen mit einer Schwellenspannung in einer Zone zwischen einer Löschzustand-Verifizierungsspannung und einer Verifizierungsspannung des A-Zustands unmittelbar nach dem Programmieren der Gruppe. Es sei zu beachten, dass diese Zone nicht den gesamten Bereich zwischen der Referenzspannung zur Verifizierung des Löschzustands und der Referenzspannung zur Verifizierung des A-Zustands einnehmen muss. Beispielsweise könnte die Zone zwischen einer Referenzspannung liegen, die zum Lesen des A-Zustands verwendet wird, und der Referenzspannung zur Verifizierung des A-Zustands.
-
Das Vorstehende kann verwendet werden, um die Programmparameter an die Schwere der Fehlform einer Gruppe der Speicherzellen anzupassen. Für den Fall, dass die Speicherlöcher für eine Gruppe von Speicherzellen stark fehlgeformt sind, können einer oder mehrere Programmparameter ausgewählt werden, um eines oder mehrere Probleme zu behandeln, die aufgrund der Fehlform auftreten. Es sei zu beachten, dass einige (sogar viele) der Speicherlöcher in der Gruppe wohlgeformt sein könnten. In einer Ausführungsform wird der Spielraum zwischen einer Spannung zur Verifizierung des Löschzustands und einem Verifizierungspegel des A-Zustands als Reaktion auf die Speicherloch-Fehlform in einer Gruppe, die über einem Schwellenwert liegt, erhöht. In einer Ausführungsform wird eine kleinere Programmschrittgröße als Reaktion darauf verwendet, dass die Schwere der Speicherloch-Fehlform über einem Schwellenwert liegt. In einer Ausführungsform wird sowohl eine kleinere Programmschrittgröße als auch ein erhöhter Verifizierungspegel für den A-Zustand als Reaktion darauf verwendet, dass die Schwere der Speicherloch-Fehlform über einem Schwellenwert liegt. Die Verwendung dieses Satzes von Programmparametern kann die Verwendung einer Gruppe von Speicherzellen (z. B. Chip, Ebene, Block) ermöglichen, die anderenfalls möglicherweise nicht für die Verwendung geeignet wären.
-
Für den Fall, dass die Schwere der Speicherloch-Fehlform für eine Gruppe von Speicherzellen niedrig ist, können die Programmparameter eingestellt werden, um beispielsweise den Leistungspegel im Vergleich zu Standardwerten zu erhöhen. Es sei zu beachten, dass einige der Speicherlöcher in der Gruppe etwas unregelmäßig oder sogar stark unregelmäßig sein können (wie im Beispiel aus 5). In einer Ausführungsform wird der Leistungspegel für eine Gruppe von Speicherzellen (relativ zu einem Standardleistungspegel) als Reaktion darauf erhöht, dass die Schwere einer Speicherloch-Fehlform unter einem Schwellenwert liegt. In einer Ausführungsform wird eine größere Programmschrittgröße (relativ zu einer Standard-Programmschrittgröße) als Reaktion darauf verwendet, dass die Schwere der Speicherloch-Fehlform unter einem Schwellenwert liegt. Die Verwendung einer größeren Programmschrittgröße kann die Leistung verbessern, indem die Programmierzeit verkürzt wird. In einer Ausführungsform wird der Spielraum zwischen einer Referenzspannung für die Verifizierung des Löschzustands und einem Referenzpegel für die Verifizierung des A-Zustands (relativ zu einem Standardreferenzpegel für die Verifizierung des A-Zustands) als Reaktion auf die Speicherloch-Fehlform in einer Gruppe verringert, die unter einem Schwellenwert liegt, der größere Spielräume zwischen anderen programmierten Zuständen ermöglichen kann. In einer Ausführungsform wird sowohl eine größere Programmschrittgröße als auch ein verringerter Verifizierungspegel für den A-Zustand als Reaktion darauf verwendet, dass die Schwere der Speicherloch-Fehlform unter einem Schwellenwert liegt. Somit kann die Leistung relativ zu Standardleistungspegeln verbessert werden.
-
1-4E beschreiben ein Beispiel für ein Speichersystem, das verwendet werden kann, um die hierin vorgeschlagene Technologie zu implementieren. 1 ist ein Funktionsblockdiagramm eines beispielhaften Speichersystems 100. Die in 1 dargestellten Komponenten sind elektrische Schaltungen. Das Speichersystem 100 schließt einen oder mehrere Speicherchips 108 ein. Der eine oder die mehreren Speicherchips 108 können vollständige Speicherchips oder Teilspeicherchips sein. In einer Ausführungsform schließt jeder Speicherchip 108 eine Speicherstruktur 126, eine Steuerschaltlogik 110 und Lese-/Schreibschaltungen 128 ein. Die Speicherstruktur 126 ist durch Wortleitungen über einen Zeilen-Decoder 124 und durch Bitleitungen über einen Spalten-Decoder 132 adressierbar. Die Lese-/Schreib-/Löschschaltungen 128 schließen mehrere Abtastblöcke 51 einschließlich SB1, SB2, SBp (Abtastschaltlogik) ein und ermöglichen das parallele Lesen oder Programmieren einer Seite von Speicherzellen. Auch können viele Strings von Speicherzellen parallel gelöscht werden.
-
In einigen Systemen ist eine Steuerung 122 im gleichen Paket (z. B. einer entfernbaren Speicherkarte) wie der eine oder die mehreren Speicherchips 108 enthalten. Jedoch kann die Steuerung in anderen Systemen von dem Speicherchip 108 getrennt sein. In einigen Ausführungsformen befindet sich die Steuerung auf einem anderen Chip als dem Speicherchip 108. In einigen Ausführungsformen kommuniziert eine Steuerung 122 mit mehreren Speicherchips 108. In anderen Ausführungsformen hat jeder Speicherchip 108 seine eigene Steuerung. Befehle und Daten werden zwischen einem Host 140 und der Steuerung 122 über einen Datenbus 120 und zwischen der Steuerung 122 und dem einen oder den mehreren Speicherchips 108 über Leitungen 118 übertragen. In einem Ausführungsbeispiel schließt der Speicherchip 108 einen Satz von Eingangs- und/oder Ausgangsstiften (I/O-Stiften) ein, die mit den Leitungen 118 verbunden sind.
-
Die Steuerschaltlogik 110 wirkt mit den Lese-/Schreibschaltungen 128 zusammen, um Speichervorgänge (z. B. Schreiben, Lesen, Löschen und andere) auf der Speicherstruktur 126 durchzuführen, und schließt eine Zustandsmaschine 112, einen On-Chip-Adressdecodierer 114 und eine Leistungssteuerschaltung 116 ein. In einer Ausführungsform schließt die Steuerschaltlogik 110 Puffer, wie Register, ROM-Sicherungen und andere Speichervorrichtungen zum Speichern von Vorgabewerten wie Basisspannungen und anderen Parametern ein.
-
Der On-Chip-Adressdecodierer 114 stellt eine Adressschnittstelle zwischen Adressen, die von einem Host 140 oder einer Steuerung 122 verwendet werden, zu der Hardwareadresse, die von den Decodierern 124 und 132 verwendet wird, bereit. Die Leistungssteuerschaltung 116 steuert die Leistung und Spannungen, mit denen die Wortleitungen, Bitleitungen und Auswahlleitungen bei Speicheroperationen versorgt werden. Die Leistungssteuerschaltlogik 116 schließt in einer Ausführungsform eine Spannungsschaltlogik ein. Die Leistungssteuerschaltung 116 kann Ladungspumpen zum Erzeugen von Spannungen einschließen. Die Leseblöcke schließen Bitleitungstreiber ein. Die Leistungssteuerschaltung 116 wird in einer Ausführungsform von der Zustandsmaschine 112 gesteuert.
-
Die Zustandsmaschine 112 und/oder die Steuerung 122 (oder äquivalent funktionierende Schaltungen) in Kombination mit allen oder einer Teilmenge der anderen Schaltungen, die in 1 dargestellt sind, können als eine oder mehrere Steuerschaltungen betrachtet werden, welche die hierin beschriebenen Funktionen ausführt. Die eine oder die mehreren Steuerschaltungen können nur Hardware oder eine Kombination aus Hardware und Software (einschließlich Firmware) einschließen. Zum Beispiel ist eine Steuerung, die durch Firmware programmiert ist, um die hierin beschriebenen Funktionen auszuführen, ein Beispiel einer Steuerschaltung. Eine oder mehrere Steuerschaltungen können einen Prozessor, ein PGA (Programmable Gate Array, FPGA (Field Programmable Gate Array), ASIC (Application Specific Integrated Circuit), eine integrierte Schaltung oder eine andere Art von Schaltung einschließen.
-
Die Steuerung 122 (auf dem Chip oder außerhalb des Chips) (der in einer Ausführungsform eine elektrische Schaltung ist) kann einen oder mehrere Prozessoren 122c, ROM 122a, RAM 122b, eine Speicherschnittstelle (MI) 122d und eine Host-Schnittstelle (HI) 122e aufweisen, die alle miteinander verbunden sind. Die Speichervorrichtungen (ROM 122a, RAM 122b) speichern Code (Software), wie einen Satz von Befehlen (einschließlich Firmware), und ein oder mehrere Prozessoren 122c ist/sind betreibbar, um den Satz von Befehlen auszuführen, um die hierin beschriebene Funktionalität bereitzustellen. Alternativ oder zusätzlich können ein oder mehrere Prozessoren 122c auf Code von einer Speichervorrichtung in der Speicherstruktur zugreifen, wie einen reservierten Bereich von Speicherzellen, die mit einer oder mehreren Wortleitungen verbunden sind. RAM 122b kann dazu dienen, Daten für die Steuerung 122 zu speichern, einschließlich dem Cachen von Programmdaten (nachstehend erörtert). Die Speicherschnittstelle 122d in Verbindung mit ROM 122a, RAM 122b und Prozessor 122c, ist eine elektrische Schaltung, die eine elektrische Schnittstelle zwischen der Steuerung 122 und einem oder mehreren Speicherchips 108 bereitstellt. Zum Beispiel kann die Speicherschnittstelle 122d das Format oder Timing von Signalen ändern, einen Puffer bereitstellen, gegen Spannungsstöße isolieren, I/O zwischenspeichern usw. Ein oder mehrere Prozessoren 122c können Befehle an die Steuerschaltlogik 110 (oder eine andere Komponente des Speicherchips 108) über die Speicherschnittstelle 122d ausgeben. Die Host-Schnittstelle 122e stellt eine elektrische Schnittstelle mit dem Datenbus 120 des Hosts 140 bereit, um Befehle, Adressen und/oder Daten vom Host 140 zu empfangen, um dem Host 140 Daten und/oder Status bereitzustellen.
-
In einer Ausführungsform weist die Speicherstruktur 126 ein dreidimensionales Speicher-Array von nichtflüchtigen Speicherzellen auf, auf denen mehrere Speicherebenen über einem einzigen Substrat, wie einem Wafer, ausgebildet sind. Die Speicherstruktur kann jede Art von nichtflüchtigem Speicher aufweisen, der monolithisch in einer oder mehreren physischen Ebenen von Arrays von Speicherzellen ausgebildet ist, die einen aktiven Bereich aufweisen, der über einem Silizium- (oder anderen Typ von) Substrat angeordnet ist. In einem Beispiel weisen die nichtflüchtigen Speicherzellen aus vertikalen NAND-Ketten mit ladungseinfangendem Material auf.
-
In einer anderen Ausführungsform weist die Speicherstruktur 126 ein zweidimensionales Speicher-Array von nichtflüchtigen Speicherzellen auf. In einem Beispiel sind die nichtflüchtigen Speicherzellen NAND-Flash-Speicherzellen mit Floating-Gates. Andere Arten von Speicherzellen (z. B. NOR-Typ-Flashspeicher) können ebenfalls verwendet werden.
-
Die exakte Art der Speicher-Array-Architektur oder Speicherzelle, die in der Speicherstruktur 126 enthalten ist, ist nicht auf die obigen Beispiele beschränkt. Viele unterschiedliche Arten von Speicher-Array-Architekturen oder Speichertechnologien können verwendet werden, um die Speicherstruktur 126 zu bilden. Keine spezielle nichtflüchtige Speichertechnologie ist für die Zwecke der neuen beanspruchten Ausführungsformen, die hier vorgeschlagen werden, erforderlich. Andere Beispiele geeigneter Technologien für Speicherzellen der Speicherstruktur 126 schließen einen Phasenwechselspeicher (z. B. PCM) und dergleichen. Beispiele von geeigneten Technologien für die Speicherzellen-Architekturen der Speicherstruktur 126 schließen zweidimensionale Arrays, dreidimensionale Arrays, Kreuzpunkt-Arrays, gestapelte zweidimensionale Arrays, vertikale Bitleitungs-Arrays und dergleichen ein.
-
Ein Fachmann in der Technik wird erkennen, dass die hierin beschriebene Technologie nicht auf eine einzige spezifische Speicherstruktur beschränkt ist, sondern viele relevante Speicherstrukturen gemäß dem Geist und Umfang der Technologie, wie hierin beschrieben und wie einem Fachmann der Technik bekannt, abdeckt.
-
Die Speichervorrichtung weist einen Code wie einen Satz von Anweisungen auf und der Prozessor ist dazu betreibbar, den Satz von Anweisungen auszuführen, um die hierin beschriebene Funktionalität bereitzustellen. Alternativ oder zusätzlich kann der Prozessor auf Code von einer Speichervorrichtung 126a der Speicherstruktur zugreifen, wie einen reservierten Bereich von Speicherzellen in einer oder mehreren Wortleitungen.
-
Der Code kann zum Beispiel von der Steuerung verwendet werden, um auf die Speicherstruktur zuzugreifen, wie für Programmier-, Lese- und Löschvorgänge. Der Code kann Bootcode und Steuercode (z. B. einen Satz von Befehlen) einschließen. Der Bootcode ist eine Software, die die Steuerung während eines Boot- oder Startvorgangs initialisiert und der Steuerung ermöglicht, auf die Speicherstruktur zuzugreifen. Der Code kann von der Steuerung verwendet werden, um eine oder mehrere Speicherstrukturen zu steuern. Beim Hochfahren ruft der Prozessor 122c den Bootcode aus dem ROM 122a oder der Speichervorrichtung 126 zur Ausführung ab, und der Bootcode initialisiert die Systemkomponenten und lädt den Steuercode in den RAM 122b. Sobald der Steuercode in den RAM geladen ist, wird er durch den Prozessor ausgeführt. Der Steuercode enthält Treiber zum Durchführen grundlegender Aufgaben, wie beispielsweise Steuern und Zuweisen von Speicher, Priorisieren der Verarbeitung von Befehlen und Steuern von Eingabe- und Ausgabeports.
-
Im Allgemeinen kann der Steuercode Anweisungen einschließen, um die hierin beschriebenen Funktionen einschließlich der weiter unten erläuterten Schritte der Flussdiagramme durchzuführen und um die Spannungswellenformen einschließlich der weiter unten erläuterten bereitzustellen. Eine Steuerschaltung kann dazu eingerichtet sein, die Anweisungen auszuführen, um die hierin beschriebenen Funktionen durchzuführen.
-
2 ist ein Blockdiagramm, das eine Ausführungsform eines Abtastblocks 51 von 1 darstellt. Ein einzelner Abtastblock 51 kann in einen oder mehrere Kernabschnitte, die als Abtastschaltungen 60-63 oder Abtastverstärker bezeichnet werden, und in einen gemeinsamen Abschnitt, der als Verwaltungsschaltung 190 bezeichnet wird, unterteilt sein. Bei einer Ausführungsform gibt es eine getrennte Abtastschaltung für jede Bitleitung/NAND-Kette und eine gemeinsame Verwaltungsschaltung 190 für einen Satz von mehreren, z. B. vier oder acht, Abtastschaltungen. Jede der Abtastschaltungen in einer Gruppe kommuniziert mit der zugehörigen Verwaltungsschaltung über Datenbus 172. Somit gibt es eine oder mehrere Verwaltungsschaltungen, die mit den Abtastschaltungen eines Satzes von Speicherelementen kommunizieren (Speicherzellen).
-
Die Abtastschaltung 60 weist als ein Beispiel eine Abtastschaltlogik 170 auf, die ein Abtasten durchführt, indem bestimmt wird, ob sich ein Leitungsstrom in einer verbundenen Bitleitung oberhalb oder unterhalb eines vorbestimmten Schwellenpegels befindet. Das Abtasten kann in einer Lese- oder Verifizierungsoperation erfolgen. Die Abtastschaltung liefert auch eine Bitleitungsspannung während des Anlegens einer Programmspannung in einer Programmoperation.
-
Die Abtastschaltlogik kann einen Vbl-Selektor 173, einen Abtastknoten 171, eine Vergleichsschaltung 175 und eine Auslöseverriegelung 174 einschließen. Während des Anlegens einer Programmspannung kann der Vbl-Selektor 173 eine Programmaktivierungsspannung (z. B. V_pgm_enable) oder eine Programmsperrspannung (z. B. Vbl_inh) an eine mit einer Speicherzelle verbundene Bitleitung weiterleiten. Hierin ist eine „Programmaktivierungsspannung“ als eine an eine Speicherzelle angelegte Spannung definiert, die das Programmieren der Speicherzelle ermöglicht, während eine Programmspannung (z. B. Vpgm) ebenfalls an die Speicherzelle angelegt wird. In bestimmten Ausführungsformen wird eine Programmaktivierungsspannung an eine mit der Speicherzelle gekoppelte Bitleitung angelegt, während eine Programmspannung an ein Steuer-Gate der Speicherzelle angelegt wird. Hierin wird eine „Programmsperrspannung“ als eine Spannung definiert, die an eine mit einer Speicherzelle gekoppelte Bitleitung angelegt wird, um die Programmierung der Speicherzelle zu sperren, während eine Programmspannung (z. B. Vpgm) ebenfalls an die Speicherzelle angelegt wird (z. B. an das Steuer-Gate der Speicherzelle angelegt wird). Es sei zu beachten dass Verstärkungsspannungen (z. B. Vpass) auf nicht ausgewählte Wortleitungen zusammen mit der Programmsperrspannung angelegt werden kann, die an die Bitleitung angelegt wird.
-
Programmsperrspannungen werden an Bitleitungen angelegt, die mit Speicherzellen gekoppelt sind, die nicht programmiert werden sollen, und/oder Bitleitungen mit Speicherzellen, die durch Ausführung eines Programmierprozesses ihre jeweilige Zielschwellenspannung erreicht haben. Diese können als „nicht ausgewählte Bitleitungen“ bezeichnet werden. Programmiersperrspannungen werden nicht an Bitleitungen („ausgewählte Bitleitungen“) mit einer zu programmierenden Speicherzelle angelegt. Wenn eine Programmsperrspannung an eine nicht ausgewählte Bitleitung angelegt wird, wird die Bitleitung in einer Ausführungsform vom NAND-Kanal abgeschnitten. Daher wird in einer Ausführungsform die Programmsperrspannung nicht an den NAND-Kanal weitergeleitet. Verstärkungsspannungen werden an nicht ausgewählte Wortleitungen angelegt, um das Potential des NAND-Kanals zu erhöhen, wodurch die Programmierung einer Speicherzelle verhindert wird, welche die Programmspannung an ihrem Steuer-Gate empfängt.
-
Ein Transistor 55 (z. B. ein nMOS) kann als Durchlass-Gate eingerichtet sein, um Vbl vom Vbl-Selektor 173 durchzulassen, indem die Steuergatespannung des Transistors ausreichend hoch eingestellt wird, z. B. höher als das vom Vbl-Selektor durchgelassene Vbl. Beispielsweise kann ein Selektor 56 eine Versorgungsspannung Vdd, z. B. 3-4 V, an das Steuergate des Transistors 55 weiterleiten.
-
Die Abtastschaltung 60 ist eingerichtet, um den Zeitpunkt zu steuern, zu dem die Spannungen an die Bitleitung angelegt werden. Die Abtastschaltung 60 ist in einer Ausführungsform eingerichtet, um die Zeitdauer zu steuern, während der die QPW-Spannung an die Bitleitung angelegt wird. In einer Ausführungsform hängt die Zeitdauer, während der eine schwache Programmaktivierungsspannung während der Vorhersageprogrammierung an die BL angelegt wird, von dem Nicht-CP-Zustand ab (auf den die der BL zugeordnete Speicherzelle programmiert wird). In einer Ausführungsform hängt die Zeitdauer, in der sowohl eine vollständige Programmaktivierung als auch eine schwache Programmaktivierungsspannung während der Vorhersageprogrammierung an die BL angelegt werden, von dem Nicht-CP-Zustand ab (auf den die der BL zugeordnete Speicherzelle programmiert wird).
-
Während Abtastoperationen wie Lese- und Verifizierungsoperationen wird die Bitleitungsspannung durch den Transistor 55 basierend auf der durch den Selektor 56 durchgelassenen Spannung eingestellt. Die Bitleitungsspannung ist grob gleich der Steuergatespannung des Transistors minus seiner Vt (z. B. 1 V). Wenn beispielsweise Vbl + Vt vom Selektor 56 durchgelassen wird, ist die Bitleitungsspannung Vbl. Dies setzt voraus, dass die Source-Leitung bei 0 V liegt. Der Transistor 55 klemmt die Bitleitungsspannung gemäß der Steuergatespannung und dient eher als Source-Follower als als Durchlass-Gate. Der Vbl-Selektor 173 kann eine relativ hohe Spannung wie Vdd durchlassen, die höher als die SteuergateSpannung auf dem Transistor 55 ist, um den Source-Follower-Modus bereitzustellen. Während des Abtastens lädt der Transistor 55 somit die Bitleitung auf.
-
In einem Ansatz kann der Selektor 56 jeder Abtastschaltung getrennt von den Selektoren anderer Abtastschaltungen gesteuert werden, um Vbl oder Vdd durchzulassen. Der Vbl-Selektor 173 jeder Abtastschaltung kann auch getrennt von den Vbl-Selektoren anderer Abtastschaltungen gesteuert werden.
-
Während des Abtastens wird der Abtastknoten 171 auf eine Anfangsspannung wie Vsense_init = 3 V aufgeladen. Der Abtastknoten wird dann über den Transistor 55 mit der Bitleitung verbunden, und ein Abfallbetrag des Abtastknotens wird verwendet, um zu bestimmen, ob sich eine Speicherzelle in einem leitenden oder nicht leitenden Zustand befindet. Die Vergleichsschaltung 175 wird verwendet, um die Abtastknotenspannung mit einer Auslösespannung zu einer Abtastzeit zu vergleichen. Wenn die Abtastknotenspannung unter die Auslösespannung Vtrip fällt, befindet sich die Speicherzelle in einem leitenden Zustand und ihr Vt befindet sich auf oder unterhalb der Spannung des Verifizierungssignals. Wenn die Abtastknotenspannung nicht unter Vtrip abfällt, befindet sich die Speicherzelle in einem nicht leitenden Zustand und ihr Vt liegt oberhalb der Spannung des Verifizierungssignals. Die Abtastschaltung 60 schließt eine Auslöseverriegelung 174 ein, die von der Vergleichsschaltung 175 basierend darauf eingestellt wird, ob sich die Speicherzelle in einem leitenden oder nicht leitenden Zustand befindet. Die Daten in der Auslöseverriegelung können ein Bit sein, das vom Prozessor 192 ausgelesen wird.
-
Die Verwaltungsschaltung 190 weist einen Prozessor 192, vier beispielhafte Sätze von Datenlatches 194-197 und eine E/A-Schnittstelle 198 auf, die zwischen den Satz von Datenlatches 194 und Datenbus 120 gekoppelt ist. Für jede Abtastschaltung kann ein Satz von Daten-Latches bereitgestellt werden, der z. B. einzelne Latches LDL, MDL und UDL aufweist. In einigen Fällen können zusätzliche Datenlatches verwendet werden. LDL speichert ein Bit für eine untere Seite von Daten, MDL speichert ein Bit für eine mittlere Seite von Daten und UDL speichert ein Bit für eine obere Seite von Daten. Dies gilt für eine Speicherzellen-Speichervorrichtung mit acht Niveaus oder drei Bits.
-
Prozessor 192 führt Berechnungen durch, um beispielsweise die Daten, die in der abgetasteten Speicherzelle gespeichert sind, zu bestimmen und die bestimmten Daten in dem Satz von Datenlatches zu speichern. Jeder Satz von Datenlatches 194-197 wird verwendet, um Datenbits, die von dem Prozessor 192 während eines Lesevorgangs bestimmt werden, zu speichern und Datenbits, die von dem Datenbus 120 während eines Programmvorgangs importiert werden, zu speichern, die Schreibdaten darstellen, die in den Speicher programmiert werden sollen. Die E/A-Schnittstelle 198 stellt eine Schnittstelle zwischen Datenlatches 194-197 und dem Datenbus 120 bereit.
-
Der Prozessor 192 kann auch verwendet werden, um basierend auf dem Zustand der Latches zu bestimmen, welche Spannung an die Bitleitung anzulegen ist. Dies kann verwendet werden, um die Größe und/oder Zeitdauer zu verwalten, in der eine schwache Programmaktivierungsspannung an die Bitleitung angelegt wird.
-
Während eines Lesens steht der Betrieb des Systems unter der Steuerung von Zustandsmaschine 112, welche die Zufuhr von unterschiedlichen Steuergatespannungen zu der adressierten Speicherzelle steuert. Wenn es die verschiedenen vordefinierten SteuergateSpannungen entsprechend den verschiedenen Speicherzuständen, die von dem Speicher unterstützt werden, schaltet, kann die Abschaltschaltung bei einer dieser Spannungen auslösen und eine entsprechende Ausgabe wird von der Abtastschaltung an den Prozessor 192 über den Datenbus 172 bereitgestellt. An diesem Punkt bestimmt Prozessor 192 den sich ergebenden Speicherzustand unter Berücksichtigung des/der Auslöseereignisse(s) der Abtastschaltung und der Information über die angelegte Steuergatespannung von der Zustandsmaschine über Eingabeleitungen 193. Er berechnet dann eine binäre Codierung für den Speicherzustand und speichert die sich ergebenden Datenbits in Datenlatches 194-197.
-
Einige Implementierungen können mehrere Prozessoren 192 einschließen. Bei einer Ausführungsform schließt jeder Prozessor 192 eine (nicht dargestellte) Ausgabeleitung ein, sodass jede der Ausgabeleitungen miteinander über eine ODER-Leitung verdrahtet ist. Bei einigen Ausführungsformen werden die Ausgabeleitungen invertiert, bevor sie mit der verdrahteten ODER-Leitung verbunden werden. Diese Konfiguration ermöglicht eine schnelle Bestimmung während eines Programmierverifizierungstests, wann der Programmierprozess abgeschlossen ist, weil die Zustandsmaschine, die das verdrahtete ODER empfängt, bestimmen kann, wann alle programmierten Bits den gewünschten Pegel erreicht haben. Wenn beispielsweise jedes Bit seinen gewünschten Pegel erreicht hat, wird eine logische Null für dieses Bit an die verdrahtete ODER-Leitung gesendet (oder eine Daten-Eins wird invertiert). Wenn alle Bits eine Daten-0 (oder eine invertierte Daten-Eins) ausgeben, dann weiß die Zustandsmaschine, dass sie das Programmierverfahren zu beenden hat. Da jeder Prozessor mit acht Abtastschaltungen kommuniziert, muss die Zustandsmaschine die verdrahtete ODER-Leitung acht mal lesen, oder dem Prozessor 192 wird eine Logik hinzugefügt, um die Ergebnisse der zugehörigen Bitleitungen zu akkumulieren, sodass die Zustandsmaschine die verdrahtete ODER-Leitung nur einmal lesen muss. In ähnlicher Weise kann die globale Zustandsmaschine durch korrektes Wählen der Logikpegel detektieren, wann das erste Bit seinen Zustand ändert, und die Algorithmen entsprechend ändern.
-
Während Programmier- oder Verifizierungsoperationen für Speicherzellen werden die zu programmierenden Daten (Schreibdaten) in dem Satz von Datenlatches 194-197 von dem Datenbus 120 in den LDL-, MDL- und UDL-Latches in einer Implementierung mit drei Bits pro Speicherzelle gespeichert.
-
Der Programmiervorgang unter der Steuerung der Zustandsmaschine legt eine Reihe von Programmierspannungsimpulsen an die Steuergates der adressierten Speicherzellen an. Jeder Spannungsimpuls kann in der Größenordnung von einem vorhergehenden Programmimpuls um eine Schrittgröße in einer Verarbeitung, die als inkrementelle Schrittpulsprogrammierung bezeichnet wird, hochgesetzt werden. Jeder Programmspannung folgt ein Verifizierungsvorgang, um zu bestimmen, ob die Speicherzellen in den gewünschten Speicherzustand programmiert wurden. In einigen Fällen überwacht Prozessor 192 den Zustand des zurückgelesenen Speichers in Bezug auf den gewünschten Speicherzustand. Wenn die zwei übereinstimmen, setzt der Prozessor 192 die Bitleitung in einen Programmsperrmodus, beispielsweise durch Aktualisieren seiner Latches. Dies verhindert, dass die Speicherzelle, die an die Bitleitung gekoppelt ist, weiter programmiert wird, selbst wenn zusätzliche Programmimpulse an ihr Steuer-Gate angelegt werden.
-
Jeder Satz von Datenlatches 194-197 kann als ein Stapel von Daten-Latches für jede Abtastschaltung implementiert sein. Bei einer Ausführungsform gibt es drei Datenlatches pro Abtastschaltung 60. In einigen Implementierungen sind die Daten-Latches als Schieberegister implementiert, sodass die darin gespeicherten parallelen Daten in serielle Daten für den Datenbus 120 umgewandelt werden und umgekehrt. Alle Daten-Latches, die dem Lese-/Schreibblock von Speicherzellen entsprechen, können miteinander verbunden werden, um ein Blockschieberegister zu bilden, sodass ein Datenblock durch serielle Übertragung eingegeben oder ausgegeben werden kann. Insbesondere ist die Bank von Lese/Schreibschaltungen so angepasst, dass jeder von ihrem Satz von Datenlatches Daten sequentiell in den Datenbus hinein oder aus diesem heraus verschiebt, als ob sie Teil eines Schieberegisters für den gesamten Lese-/Schreibblock sind.
-
Die Datenlatches identifizieren, wann eine zugehörige Speicherzelle bestimmte Abschnitte bei einem Programmvorgang erreicht hat. Zum Beispiel können Latches identifizieren, dass sich eine Vt einer Speicherzelle unterhalb einer bestimmten Verifizierungsspannung befindet. Die Datenlatches geben an, ob eine Speicherzelle gegenwärtig ein oder mehrere Bits von einer Seite von Daten speichert. Zum Beispiel können die LDL-Latches dazu verwendet werden, eine untere Seite von Daten zu speichern. Ein LDL-Latch wird umgedreht (z. B. von 0 zu 1), wenn ein unteres Seitenbit in einer zugehörigen Speicherzelle gespeichert ist. Ein MDL- oder UDL-Latch wird umgedreht, wenn ein mittleres bzw. oberes Seitenbit in einer zugehörigen Speicherzelle gespeichert ist. Dies tritt auf, wenn eine zugeordnete Speicherzelle die Programmierung abschließt.
-
3 ist ein Blockdiagramm eines beispielhaften Speichersystems 100, das mehr Details einer Ausführungsform der Steuerung 122 zeigt. Die Steuerung in 3 ist eine Flashspeichersteuerung, aber es ist zu beachten, dass der nichtflüchtige Speicher 108 nicht auf Flash beschränkt ist. Somit ist die Steuerung 122 nicht auf das Beispiel einer Flashspeichersteuerung beschränkt. Wie hierin verwendet, ist eine Flash-Speichersteuerung eine Vorrichtung, die auf dem Flash-Speicher gespeicherte Daten verwaltet und mit einem Host kommuniziert, wie beispielsweise einem Computer oder einer elektronischen Vorrichtung. Eine Flash-Speichersteuerung kann verschiedene Funktionen zusätzlich zu der hier beschriebenen spezifischen Funktionalität haben. Zum Beispiel kann der Flash-Speicher-Controller den Flash-Speicher formatieren, um sicherzustellen, dass der Speicher ordnungsgemäß arbeitet, um schlechte Flash-Speicherzellen auszugrenzen und Ersatzspeicherzellen zuzuordnen, die künftig fehlerhafte Zellen ersetzen sollen. Einige Teile der Ersatzzellen können verwendet werden, um Firmware aufzunehmen, um den Flash-Speicher-Controller zu betreiben und andere Merkmale zu implementieren. Im Betrieb, wenn ein Host Daten aus dem Flash-Speicher lesen oder Daten in diesen schreiben muss, kommuniziert der Host mit dem Flash-Speicher-Controller. Wenn der Host eine logische Adresse bereitstellt, zu der Daten gelesen/geschrieben werden sollen, kann der Flash-Speicher-Controller die vom Host empfangene logische Adresse in eine physische Adresse im Flash-Speicher-Controller umwandeln. (Alternativ kann der Host die physische Adresse bereitstellen). Der Flash-Speicher-Controller kann auch verschiedene Speicherverwaltungsfunktionen ausführen, wie, ohne darauf beschränkt zu sein, Abnutzungsausgleich (Verteilen von Schreibvorgängen zum Vermeiden eines Verschleißes spezifischer Speicherblöcke, auf die ansonsten wiederholt geschrieben werden würde) und Speicherbereinigung (nachdem ein Block voll ist, Bewegen ausschließlich der gültigen Datenseiten zu einem neuen Block, sodass der volle Block gelöscht und wiederverwendet werden kann).
-
Die Schnittstelle zwischen der Steuerung 122 und dem nichtflüchtigen Speicher-Rohchip 108 kann jede geeignete Flash-Schnittstelle wie beispielsweise Toggle-Modus 200, 400 oder 800 sein. In einer Ausführungsform kann das Speichersystem 100 ein kartenbasiertes System sein, wie eine sichere digitale (SD) oder eine sichere digitale Mikro-Karte (Mikro-SD). In einer alternativen Ausführungsform kann das Speichersystem 100 Teil eines eingebetteten Speichersystems sein. Zum Beispiel kann der Flash-Speicher in dem Host eingebettet sein. In einem anderen Beispiel kann das Speichersystem 100 in Form eines Solid-State-Laufwerks (SSD) vorliegen.
-
In einigen Ausführungsformen schließt das nichtflüchtige Speichersystem 100 einen einzigen Kanal zwischen der Steuerung 122 und dem nichtflüchtigen Speicherchip 108 ein, wobei der hierin beschriebene Gegenstand nicht auf einen einzigen Speicherkanal beschränkt ist. Zum Beispiel können in einigen Speichersystemen 2, 4, 8 oder mehr Kanäle zwischen der Steuerung und dem Speicherchip je nach den Fähigkeiten der Steuerung vorhanden sein. In jeder der hierin beschriebenen Ausführungsformen kann mehr als ein einziger Kanal zwischen der Steuerung und dem Speicher-Die vorhanden sein, selbst wenn in den Zeichnungen ein einziger Kanal gezeigt ist.
-
Die Speicherzellen auf einem Speicherchip 108 können in einer oder mehreren Ebenen angeordnet sein. In einer Ausführungsform werden Speichervorgänge parallel an Gruppen von Speicherzellen auf verschiedenen Ebenen auf demselben Speicherchip durchgeführt. In einer Ausführungsform werden Speichervorgänge parallel an Gruppen von Speicherzellen auf einem verschiedenen Speicherchip 108 durchgeführt.
-
Wie in 3 dargestellt, schließt die Steuerung 122 ein Front-End-Modul 208 ein, das eine Schnittstelle mit einem Host aufweist, ein Backend-Modul 210, das eine Schnittstelle mit dem einen oder den mehreren nichtflüchtigen Speicherchips 108 hat, und verschiedene andere Module, die Funktionen ausführen, die nun im Detail beschrieben werden.
-
Die Komponenten der Steuerung 122, die in 3 dargestellt sind, können die Form einer gepackten funktionellen Hardwareeinheit (z. B. einer elektrischen Schaltung), konzipiert zur Verwendung mit anderen Komponenten, eines Abschnitts eines Programmcodes (z. B. Software oder Firmware) ausführbar durch einen (Mikro-)Prozessor oder eine Verarbeitungsschaltlogik, die üblicherweise eine bestimmte Funktion von in Beziehung stehenden Funktionen ausführt, oder einer abgeschlossenen Hardware- oder Softwarekomponente, die eine Schnittstelle zum Beispiel mit einem größeren System hat, annehmen. Zum Beispiel kann jedes Modul eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA), eine Schaltung, eine digitale Logikschaltung, eine analoge Schaltung, eine Kombination diskreter Schaltungen, Gatter oder irgendeine andere Art von Hardware oder Kombination davon einschließen. Alternativ oder zusätzlich kann jedes Modul Software einschließen, die in einer prozessorlesbaren Vorrichtung (z. B. einem Speicher) gespeichert ist, um einen Prozessor für die Steuerung 122 zu programmieren, um die hier beschriebenen Funktionen auszuführen. Die in 3 dargestellte Architektur ist eine beispielhafte Implementierung, die die in 1 dargestellten Komponenten der Steuerung 122 (d. h. den RAM, den ROM, den Prozessor, die Schnittstelle) verwenden kann (aber nicht muss).
-
Unter erneuter Bezugnahme auf Module der Steuerung 122 verwaltet ein Puffermanager/eine Bussteuerung 214 Pufferspeicher im Direktzugriffsspeicher (RAM) 216 und steuert die interne Busarbitrierung der Steuerung 122. Ein Nur-Lese-Speicher (ROM) 108 speichert Systemstartcode. Obwohl sie in 3 als von der Steuerung 122 getrennt angeordnet dargestellt sind, können in anderen Ausführungsformen einer oder beide vom RAM 216 oder ROM 218 innerhalb der Steuerung angeordnet sein. In noch anderen Ausführungsformen können sich Teile des RAM und des ROM sowohl innerhalb der Steuerung 122 als auch außerhalb der Steuerung befinden. Weiterhin können in einigen Implementierungen die Steuerung 122, RAM 216 und ROM 218 auf separaten Halbleiterchips angeordnet sein.
-
Das Frontend-Modul 208 schließt eine Host-Schnittstelle 220 und eine Physical-Layer-Schnittstelle (PHY) 222 ein, welche die elektrische Schnittstelle mit dem Host oder der Speichersteuerung der nächsten Ebene bereitstellen. Die Wahl des Typs der Host-Schnittstelle 220 kann von dem Typ von verwendetem Speicher abhängen. Beispiele für die Host-Schnittstellen 220 schließen, ohne jedoch darauf beschränkt zu sein, SATA, SATA Express, SAS, Fibre Channel, USB, PCle und NVMe ein. Die Host-Schnittstelle 220 unterstützt üblicherweise die Übertragung von Daten, Steuersignalen und Taktsignalen.
-
Das Backend-Modul 210 schließt eine Fehlerkorrekturcode-Maschine (ECC-Maschine) 224 ein, die die von dem Host empfangenen Datenbytes codiert, und die aus dem nichtflüchtigen Speicher gelesenen Datenbytes dekodiert und Fehler korrigiert. Ein Befehlssequenzer 226 erzeugt Befehlssequenzen, wie Programmier- und Löschbefehlssequenzen, zur Übermittlung an den nichtflüchtigen Speicher-Die 108. Ein RAID-Modul (Redundant Array of Independent Dies) 228 verwaltet die Generierung einer RAID-Parität und die Wiederherstellung ausgefallener Daten. Die RAID-Parität kann als ein zusätzlicher Integritätsschutz für die Daten verwendet werden, die in das nichtflüchtige Speichersystem 100 geschrieben werden. In einigen Fällen kann das RAID-Modul 228 Teil der ECC-Engine 224 sein. Es ist zu beachten, dass die RAID-Parität als zusätzlicher Chip oder zusätzliche Chips hinzugefügt werden kann, aber sie kann auch innerhalb des bestehenden Chips hinzugefügt werden, z. B. als extra Ebene oder extra Block oder extra WLs innerhalb eines Blocks. Eine Speicherschnittstelle 230, die eingerichtet ist, um mit dem nichtflüchtigen Speicher 108 verbunden zu werden, stellt die Befehlssequenzen an den nichtflüchtigen Speicherchip 108 bereit und empfängt Statusinformationen von dem nichtflüchtigen Speicherchip 108. In einer Ausführungsform kann die Speicherschnittstelle 230 eine Double Data Rate-Schnittstelle (DDR-Schnittstelle), wie eine Schnittstelle für den Toggle-Modus 200, 400 oder 800 sein. Eine Flash-Steuerschicht 232 steuert den Gesamtbetrieb des Backend-Moduls 210.
-
Zusätzliche Komponenten des Systems 100, das in 3 dargestellt ist, schließen die Medienverwaltungsschicht 238, die den Abnutzungsausgleich von Speicherzellen des nichtflüchtigen Speicherchips 108 durchführt, ein. Das System 100 schließt auch andere diskrete Komponenten 240 ein, wie externe elektrische Schnittstellen, externes RAM, Widerstände, Kondensatoren oder andere Komponenten, die mit der Steuerung 122 verbunden sein können. In alternativen Ausführungsformen sind eine(r) oder mehrere der Physical-Layer-Schnittstelle 222, des RAID-Moduls 228, der Medienverwaltungsschicht 238 und der Pufferverwaltungs-/Bussteuerung 214 optionale Komponenten, die in der Steuerung 122 nicht erforderlich sind.
-
Eine Flash-Übersetzungsschicht (FTL) oder Medienverwaltungsschicht (MML) 238 kann als Teil der Flash-Verwaltung integriert sein, die Flash-Fehler behandeln und mit dem Host interagieren kann. Insbesondere kann MML ein Modul in der Flash-Verwaltung sein und für die Interna der NAND-Verwaltung verantwortlich sein. Insbesondere kann die MML 238 einen Algorithmus in der Firmware der Speichervorrichtung enthalten, der Schreibvorgänge vom Host in Schreibvorgänge in den Speicher 126 des Chips 108 übersetzt. MML 238 kann erforderlich sein, weil: 1) der Speicher eine eingeschränkte Belastbarkeit hat; 2) der Speicher 126 nur in Mehrfachen von Seiten geschrieben werden kann; und/oder 3) der Speicher 126 nicht beschrieben werden kann, sofern er nicht als ein Block (oder in einigen Ausführungsformen eine Schicht innerhalb eines Blocks) gelöscht wird. Die MML 238 versteht diese potentiellen Begrenzungen des Speichers 126, die für den Host möglicherweise nicht sichtbar sind. Dementsprechend versucht die MML 238, die Schreibvorgänge vom Host in Schreibvorgänge in den Speicher 126 zu übersetzen.
-
Die Steuerung 122 kann mit einem oder mehreren Speicher-Dies 108 verbunden sein. In einer Ausführungsform implementieren die Steuerung 122 und mehrere Speicherchips (die zusammen das nichtflüchtige Speichersystem 100 ausmachen) ein Solid-State-Laufwerk (SSD), das eine Festplatte in einem Host, wie einer NAS-Vorrichtung, in einem Laptop, in einem Tablet, in einem Server usw., emulieren, ersetzen oder stattdessen verwendet werden kann. Darüber hinaus braucht die SSD nicht dazu ausgelegt sein, als Festplatte zu arbeiten.
-
Eines oder mehrere von ECC 224, Sequenzer 226, RAID 228, Flash-Steuerschicht 232, Medienverwaltungsschicht 238 und/oder Pufferverwaltung/Bussteuerung 214 können als eine Prozessorschaltung bezeichnet werden. Die Prozessorschaltung kann nur Hardware oder eine Kombination aus Hardware und Software (einschließlich Firmware) einschließen. Zum Beispiel ist eine Steuerung, die durch Firmware programmiert ist, um die hierin beschriebenen Funktionen auszuführen, ein Beispiel einer Steuerschaltung. Eine Prozessorschaltung kann einen Prozessor, ein PGA (Programmable Gate Array, programmierbares Gate-Array), ein FPGA (Field Programmable Gate Array, feldprogrammierbares Gate-Array), eine ASIC (Application Specific Integrated Circuit, anwendungsspezifische integrierte Schaltung), eine integrierte Schaltung oder eine andere Art von Schaltung einschließen.
-
Einige Ausführungsformen eines nichtflüchtigen Speichersystems schließen einen Speicherchip 108 ein, der mit einer Steuerung 122 verbunden ist. Jedoch können andere Ausführungsformen mehrere Speicherchips 108 einschließen, die in Verbindung mit einer oder mehreren Steuerungen 122 stehen. In einem Beispiel können die mehreren Speicherchips in einen Satz von Speicherpaketen gruppiert werden. Jedes Speicherpaket schließt einen oder mehrere Speicherchips ein, die in Verbindung mit der Steuerung 122 stehen. In einer Ausführungsform schließt ein Speicherpaket eine Leiterplatte (oder eine ähnliche Struktur) ein, auf der ein oder mehrere Speicherchips montiert sind. In einigen Ausführungsformen kann ein Speicherpaket Formmasse einschließen, um die Speicherchips des Speicherpakets zu umhüllen. In einigen Ausführungsformen ist die Steuerung 122 physisch von jedem der Speicherpakete getrennt.
-
4 ist eine perspektivische Ansicht einer Speichervorrichtung 300, die einen Satz von Blöcken in einer exemplarischen 3D-Konfiguration der Speicherstruktur 126 von 1A aufweist. Auf dem Substrat befinden sich Beispielblöcke BLK0, BLK1, BLK2 und BLK3 von Speicherzellen (Speicherelementen) und Peripheriebereiche mit Schaltlogik zur Verwendung durch die Blöcke. Das Substrat hat eine große, sich in der x-y Ebene erstreckende Oberfläche. Die Blöcke können über der Hauptfläche ausgebildet sein. Der Peripheriebereich 304 verläuft entlang einer Kante jedes Blocks, während sich der Peripheriebereich 305 an einem Ende des Satzes von Blöcken befindet. Jeder Peripheriebereich kann Schaltlogik einschließen, einschließlich, aber nicht beschränkt auf Spannungstreiber, die mit Steuergate-Schichten, Bitleitungen und Sourceleitungen der Blöcke verbunden werden können.
-
Das Substrat 301 kann auch Schaltlogik unter den Blöcken zusammen mit einer oder mehreren unteren Metallschichten tragen, die in Leiterbahnen strukturiert sind, um Signale der Schaltungen zu übertragen. Die Blöcke sind in einer Zwischenregion 302 der Speichervorrichtung ausgebildet. In einem oberen Bereich 303 der Speichervorrichtung sind eine oder mehrere obere Metallschichten in Leiterbahnen strukturiert, um Signale des Schaltkreises zu tragen. Jeder Block weist einen gestapelten Bereich von Speicherzellen auf, wobei alternierende Ebenen des Stapels Wortleitungen darstellen. In einem möglichen Ansatz hat jeder Block gegenüberliegende abgestufte Seiten, von denen sich vertikale Kontakte nach oben zu einer oberen Metallschicht erstrecken, um Verbindungen zu Leiterbahnen herzustellen. Während vier Blöcke beispielhaft dargestellt sind, können zwei oder mehr Blöcke verwendet werden, die sich in x - und/oder y-Richtung erstrecken.
-
In einem möglichen Ansatz befinden sich die Blöcke in einer Ebene und die Länge der Ebene in x-Richtung stellt 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 der y-Richtung stellt eine Richtung dar, in der sich Signalpfade zu Bitleitungen in der einen oder den mehreren oberen Metallschichten (einer Bitleitungsrichtung) erstrecken. Die z-Richtung stellt eine Höhe der Speichervorrichtung dar. Die Blöcke könnten auch in mehreren Ebenen angeordnet sein.
-
4A stellt eine Draufsicht einer beispielhaften Wortleitungsschicht 400 einer 3D-Speicherstruktur in einer Ausführungsform dar. Eine 3D-Speichervorrichtung kann einen Stapel von alternierenden leitenden und dielektrischen Schichten aufweisen. Hierin können die Schichten aufgrund ihrer Ausrichtung in Bezug auf die x-y-Oberfläche des Substrats 301 als horizontale Schichten bezeichnet werden. Die leitenden Schichten stellen die Steuer-Gates der SG-Transistoren und Speicherzellen bereit. Die für die SG-Transistoren verwendeten Schichten sind SG-Schichten, und die für die Speicherzellen verwendeten Schichten sind Wortleitungsschichten. Ferner sind im Stapel Speicherlöcher gebildet und mit einem Ladungseinfangmaterial und einem Kanalmaterial gefüllt. Zusätzlich zu dem Ladungseinfangmaterial und dem Kanalmaterial kann in den Speicherlöchern anderes Material wie dielektrisches Tunnelmaterial gebildet sein. Dadurch wird eine vertikale NAND-Kette gebildet. Source-Leitungen sind mit den NAND-Ketten unter dem Stapel verbunden, und Bitleitungen sind mit den NAND-Ketten über dem Stapel verbunden.
-
Ein Block BLK in einer 3D-Speichervorrichtung kann in Teilblöcke unterteilt sein, wobei jeder Teilblock einen Satz einer NAND-Kette aufweist, die eine gemeinsame SGD-Steuerleitung aufweisen. Ferner kann eine Wortleitungsschicht in einem Block in Bereiche unterteilt sein. Jeder Bereich kann sich zwischen Schlitzen erstrecken, die periodisch in dem Stapel ausgebildet sind, um die Wortleitungsschichten während des Herstellungsprozesses der Speichervorrichtung zu verarbeiten. Diese Bearbeitung kann das Ersetzen eines Opfermaterials der Wortleitungsschichten durch Metall einschließen. Im Allgemeinen sollte der Abstand zwischen den Schlitzen relativ klein sein, um eine Grenze für den Abstand zu berücksichtigen, den ein Ätzmittel lateral zurücklegen kann, um das Opfermaterial zu entfernen, und über den das Metall sich bewegen kann, um einen Hohlraum zu füllen, der durch das Entfernen des Opfermaterials erzeugt wird. Zum Beispiel kann der Abstand zwischen Schlitzen einige Reihen von Speicherlöchern zwischen benachbarten Schlitzen zulassen. Das Layout der Speicherlöcher und Schlitze sollte auch eine Grenze in der Anzahl von Bitleitungen berücksichtigen, die sich über den Bereich erstrecken können, während jede Bitleitung mit einer anderen Speicherzelle verbunden ist. Nach der Bearbeitung der Wortleitungsschichten können die Schlitze optional mit Metall gefüllt werden, um eine Verbindung durch den Stapel bereitzustellen.
-
Die Wortleitungsschicht ist in Bereiche 406, 407, 408 und 409 unterteilt, die jeweils durch einen Verbinder 413 verbunden sind. Mit Metall gefüllte Schlitze 401, 402, 403 und 404 (z. B. Metallverbindungen) können zwischen und nebenstehend zu den Rändern der Bereiche 406-409 angeordnet sein. Die mit Metall gefüllten Schlitze stellen einen leitenden Pfad vom Boden des Stapels zur Oberseite des Stapels bereit. Beispielsweise kann eine Source-Leitung an der Unterseite des Stapels mit einer Leiterbahn über dem Stapel verbunden sein, wobei die Leiterbahn mit einem Spannungstreiber in einem peripheren Bereich der Speichervorrichtung verbunden ist.
-
Der letzte Bereich einer Wortleitungsschicht in einem Block kann bei einem Ansatz mit einem ersten Bereich einer Wortleitungsschicht in einem nächsten Block verbunden werden. Der Verbinder wiederum ist mit einem Spannungstreiber für die Wortleitungsschicht verbunden. In diesem Beispiel gibt es vier Reihen von Speicherlöchern zwischen benachbarten Schlitzen. Eine Zeile ist hier eine Gruppe von Speicherlöchern, die in x-Richtung ausgerichtet sind. Außerdem befinden sich die Zeilen von Speicherlöchern in einem gestaffelten Muster, um die Dichte der Speicherlöcher zu erhöhen. Der Bereich 406 hat beispielhafte Speicherlöcher 410 und 411 entlang einer Linie 412a. Der Bereich 407 hat beispielhafte Speicherlöcher 414 und 415. Der Bereich 408 hat beispielhafte Speicherlöcher 416 und 417. Der Bereich 409 hat beispielhafte Speicherlöcher 418 und 419.
-
Jeder Kreis stellt den Querschnitt eines Speicherlochs an einer Wortleitungsschicht oder SG-Schicht dar. Jeder Kreis kann alternativ eine Speicherzelle darstellen, die durch die Materialien in dem Speicherloch und durch die benachbarte Wortleitungsschicht bereitgestellt wird. Es sei zu beachten, dass der Begriff Speicherloch, wie er hier verwendet wird, sowohl verwendet werden kann, um sich auf einen leeren Bereich zu beziehen, der beispielsweise durch Ätzen gebildet wird, als auch auf jenen Bereich, nachdem er mit Speicherzellenfilmen gefüllt wurde.
-
4A und andere Figuren sind nicht notwendigerweise maßstabsgetreu. In der Praxis können die Bereiche in x-Richtung relativ zur y-Richtung viel länger sein als dargestellt, um zusätzliche Speicherlöcher unterzubringen.
-
4B zeigt eine Draufsicht einer beispielhaften SGD-Schicht 420, die mit 4A übereinstimmt. Die SGD-Schicht ist in Bereiche 426, 427, 428 und 429 unterteilt. Jeder Bereich kann mit einem anderen Spannungstreiber verbunden sein. Dies ermöglicht, dass ein Satz von Speicherzellen in einem Bereich einer Wortleitungsschicht gleichzeitig programmiert wird, wobei jede Speicherzelle in einer jeweiligen NAND-Kette ist, die mit einer jeweiligen Bitleitung verbunden ist. Eine Spannung kann auf jeder Bitleitung eingestellt werden, um die Programmierung während jeder Programmierspannung zu ermöglichen oder zu unterbinden.
-
Der Bereich 426 hat die beispielhaften Speicherlöcher410 und 411 entlang einer Linie 412b, die mit einer Bitleitung BL0 zusammenfällt. Der Bereich 427 hat auch das beispielhafte Speicherloch 414, das mit einer Bitleitung BL1 zusammenfällt. Eine Anzahl von Bitleitungen erstreckt sich über die Speicherlöcher und ist mit den Speicherlöchern verbunden, wie durch die „X“-Symbole angedeutet. BL0 ist mit einem Satz von Speicherlöchern verbunden, der die Speicherlöcher 411, 415, 417 und 419 enthält. Eine andere beispielhafte Bitleitung BL1 ist mit einem Satz von Speicherlöchern verbunden, der die Speicherlöcher 410, 414, 416 und 418 enthält. Die mit Metall gefüllten Schlitze 401, 402, 403 und 404 aus 4A sind ebenfalls dargestellt, da sie sich vertikal durch den Stapel erstrecken. Die Bitleitungen können in einer Sequenz BL0-BL23 über die SGD-Schicht 420 in der x-Richtung nummeriert sein. In der Praxis können für die SGD-Schicht 420 viel mehr Bitleitungen verwendet werden.
-
Unterschiedliche Teilmengen von Bitleitungen sind mit Zellen in verschiedenen Reihen verbunden. Zum Beispiel sind BL0, BL4, BL8, BL12, BL16 und BL20 mit Zellen in einer ersten Reihe von Zellen am rechten Rand jedes Bereichs verbunden. BL2, BL6, BL10, BL14, BL18 und BL22 sind mit Zellen in einer benachbarten Reihe von Zellen neben der ersten Reihe am rechten Rand verbunden. BL3, BL7, BL11, BL15, BL19 und BL23 sind mit Zellen in einer ersten Reihe von Zellen am linken Rand jedes Bereichs verbunden. BL1, BL5, BL9, BL13, BL17 und BL21 sind mit Zellen in einer benachbarten Reihe von Zellen neben der ersten Reihe am linken Rand verbunden.
-
Die Speicherlöcher in 4A und 4B sind als kreisförmig im x-y-Querschnitt dargestellt. Wie oben erwähnt, können die Speicherlöcher eine unregelmäßige Form haben (wie zum Beispiel die in 5 dargestellte unregelmäßige Form). Hierin werden Techniken offenbart, um die Schwere der Speicherloch-Fehlform einer Gruppe zu charakterisieren, wie beispielsweise die Speicherlöcher in einer Wortleitungsschicht in einem Block. Einer oder mehrere Programmparameter zum Programmieren dieser Gruppe können basierend auf der Schwere der Speicherloch-Fehlform einer Gruppe ausgewählt werden. Diese ausgewählten Programmparameter können auf andere Gruppen angewendet werden, ohne dass eine Messung direkt an dieser Gruppe durchgeführt werden muss. Zum Beispiel kann nach dem Durchführen einer Messung zur Charakterisierung der Schwere der Speicherloch-Fehlform an einer Wortleitung eines Blocks angenommen werden, dass andere Wortleitungen in demselben Block ungefähr die gleiche Schwere der Speicherloch-Fehlform haben. Andererseits könnte aufgrund der Art des Herstellungsprozesses die Schwere der Speicherloch-Fehlform von der Schicht im Block abhängen.
-
4C stellt eine beispielhafte Querschnittsansicht eines Abschnitts einer der Blöcke von 4 dar. Die Querschnittsansicht stimmt mit der Leitung 412a von aus 4A sowie mit der Leitung 412b aus 4B überein. Der Block weist einen Stapel 432 von alternierenden leitenden und dielektrischen Schichten auf. In diesem Beispiel weisen die leitfähigen Schichten die SGD-Schicht, SGS-Schicht, Dummy-Wortleitungsschichten (oder Wortleitungen) DWLd, DWLs sowie Datenwortleitungsschichten (oder Wortleitungen) WLL0-WLL14 auf. Die dielektrischen Schichten werden als DL0-DL19 bezeichnet. Weiterhin sind Bereiche des Stapels dargestellt, die NAND-Ketten NS1 und NS2 aufweisen. Jede NAND-Ketteumschließt ein Speicherloch 410 oder 411, das mit Materialien gefüllt ist, die Speicherzellen bilden, die den Wortleitungen benachbart sind. Ein Bereich 423 des Stapels ist in 4D ausführlicher gezeigt. Es ist zu beachten, dass es mehr oder weniger SGD-Schichten, SGS-Schichten, Dummy-Wortleitungsschichten und Datenwortleitungsschichten geben kann.
-
Unterhalb des Stapels befindet sich eine Sourceleitung (SL) 434. Bei einem Ansatz weist ein Abschnitt der Sourceleitung SL eine Polysiliciumschicht 434a auf, die in Kontakt mit einem Source-Ende jeder Kette von Speicherzellen in einem Block ist. Die Polysiliciumschicht 434a befindet sich in elektrischem Kontakt mit dem NAND-Kettenkanal (in 4C nicht gezeigt). Die Polysiliciumschicht 434a befindet sich in Kontakt mit einer Metallschicht 434b (z. B. Wolfram). Die Sourceleitung 434 kann von allen Blöcken in einer Ebene in einem Ansatz gemeinsam genutzt werden.
-
NS1 hat ein Source-Ende 436 an einer Unterseite 466b des Stapels 432 und ein Drain-Ende 452 an einer Oberseite 466a des Stapels. Mit Metall gefüllte Schlitze 401, 402 können periodisch über den 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 leitendes Durchgangsloch 421 verbindet das Drain-Ende 452 von NS2 mit BL0.
-
Bei einem Ansatz weist der Block von Speicherzellen einen Stapel von alternierenden Steuergate- und dielektrischen Schichten auf und die Speicherzellen sind in sich vertikal erstreckenden Speicherlöchern in dem Stapel angeordnet.
-
In einem Ansatz weist jeder Block eine terrassenförmige Kante auf, in der vertikale Verbindungen mit jeder Schicht, einschließlich der Schichten SGS, WL und SGD, verbunden sind und sich nach oben bis zu horizontalen Pfaden zu Spannungsquellen erstrecken.
-
4D stellt eine Ansicht des Bereichs 423 von 4C dar. 4E stellt einen Querschnitt (in einer x-y-Ebene) des Speicherlochs 410 von 4D dar. Der Bereich 423 enthält verschiedene Speicherzellen 482, 483, 484. Das Speicherloch 410 schließt eine Anzahl von Speicherzellenfilmen 463-467 ein. Zum Beispiel kann jede Säule (z. B. die Säule, die von den Materialien innerhalb eines Speicherlochs gebildet wird) ein Blockier-Oxid-/Blockier-High-k-Material 463, eine Ladungseinfangschicht oder -folie 464, wie SiN oder ein anderes Nitrid, eine Tunnelschicht 465, einen Polysiliciumkörper oder -kanal 466 und einen dielektrischen Kern 467 einschließen. Eine Wortleitungsschicht kann ein leitendes Metall, wie Wolfram, als ein Steuer-Gate einschließen. Beispielsweise sind Steuer-Gates 492, 493 und 494 bereitgestellt. In diesem Beispiel sind alle Schichten mit Ausnahme des Metalls in dem Speicherloch bereitgestellt. In anderen Ansätzen können einige der Speicherfilmschichten in der Steuer-Gateschicht sein. Somit könnte das Speicherloch 410 weniger (oder mehr) Speicherfilmschichten enthalten, als in 4D und 4E gezeigt sind. Es sei auch zu beachten, dass einige der dargestellten Schichten aus einer oder mehreren Schichten gebildet sein können. Zusätzliche Säulen sind gleichermaßen in den verschiedenen Speicherlöchern ausgebildet. Eine Säule kann eine säulenförmige aktive Fläche (AA) einer NAND-Kette bilden.
-
Wenn ein Speicherzellentransistor programmiert wird, werden Elektronen in einem Teil der Ladungsfängerschicht 464 gespeichert, der dem Speicherzellentransistor zugeordnet ist. Diese Elektronen werden in die Ladungseinfangschicht aus dem Kanal 466 und durch die Tunnelschicht 465 gezogen. Vt eines Speicherzellentransistors wird proportional zu der Menge der gespeicherten Ladung erhöht. Während eines Löschvorgangs kehren die Elektronen in den Kanal zurück. Nichtdatentransistoren (z. B. Auswahltransistoren, Dummy-Speicherzellentransistoren) können auch die Ladungseinfangschicht 464 einschließen. Somit kann die Schwellenspannung von mindestens einigen Nichtdatentransistoren auch durch Speichern oder Entfernen von Elektronen aus der Ladungseinfangschicht 464 eingestellt werden. Es ist nicht erforderlich, dass alle Nichtdatentransistoren eine einstellbare Vt haben. So ist es zum Beispiel nicht erforderlich, dass die Ladungseinfangschicht 464 in jedem Auswahltransistor vorhanden ist.
-
In einigen Ausführungsformen wird das Speicherloch durch Bohren (oder Ätzen) von Löchern in einen Stapel alternierender Schichten (z. B. alternierende Schichten eines leitenden Materials und eines Opfermaterials) gebildet. Die Speicherzellenfilme können auf die Seitenwand des Speicherlochs abgeschieden werden. Beispielsweise kann zuerst die Blockierungsschicht 463 unter Verwendung einer Atomschichtabscheidung oder einer anderen Abscheidungstechnik auf die Seitenwand des Speicherlochs abgeschieden werden. Dann kann dann die Ladungseinfangschicht 464 auf die Blockierungsschicht 463 abgeschieden werden. Als Nächstes kann die Tunnelschicht 465 auf die Ladungseinfangschicht 464 abgeschieden werden. In einigen Fällen kann die Tunnelschicht 465 mehrere Schichten aufweisen, wie in einer Oxid-Nitrid-Oxid-Konfiguration. Anschließend kann der Körper 466 auf die Tunnelschicht 465 abgeschieden werden. Dann kann der dielektrische Kern 467 innerhalb des Körpers 466 ausgebildet werden. Andere Techniken können verwendet werden, um den Speicherzellenfilm zu bilden. Wie oben erwähnt, kann der Begriff „Speicherloch“ verwendet werden, um sich sowohl auf den leeren Bereich zu beziehen, der nach dem Bohren (oder Ätzen) von Löchern in den Stapel existiert, als auch auf den Bereich, nachdem er mit dem Speicherzellenfilm gefüllt wurde.
-
In dem Beispiel von 4E weist jeder der Filme 463-467 einen ringförmigen Ring auf. Die Filme stellen ein Beispiel für ein wohlgeformtes Speicherloch dar, das nicht fehlgeformt ist. Das Speicherloch, in dem die Filme 463-467 ausgebildet wurden, hat eine kreisförmige Querschnittsform mit einem Radius „r“. Während des Betriebs werden Spannungen an die Wortleitungen sowie an andere Bereiche angelegt. Ein Beispiel ist das Anlegen einer Programmspannung an eine ausgewählte Wortleitung und das Erhöhen der Spannungen an nicht ausgewählte Wortleitungen. Die Verstärkungsspannungen tragen dazu bei, eine unerwünschte Programmierung von Speicherzellen zu verhindern, die derzeit nicht für die Programmierung ausgewählt sind. Die Form der Grenzfläche zwischen der Wortleitung und den Speicherzellenfilmen 463-467 beeinflusst die Art des elektrischen Feldes in diesem Bereich. Daher kann die Art der Wortleitungsspannung durch die Form des Speicherlochs beeinflusst werden.
-
Das Speicherloch ist nicht in allen Fällen perfekt kreisförmig. Das Ausmaß der Fehlform eines perfekten Kreises kann von einem Speicherloch zum nächsten erheblich variieren. 5 ist eine Querschnittsansicht eines Beispiels eines Speicherlochs, das stark fehlgeformt ist. Das Speicherloch hat eine unregelmäßige Form. Die Form kann als unregelmäßiger Kreis beschrieben werden. Der unregelmäßige Kreis wird hierin als „Speicherlochstreifung“ bezeichnet. Das Speicherloch in 4E hat keine Speicherlochstreifung. Eine Anzahl von Leitungen, die mit r', r'' und r''' bezeichnet sind, sind in 5 dargestellt. Jede Leitung erstreckt sich von einem gemeinsamen Punkt, der als die Mitte des Speicherlochs definiert ist, zur Außenseite des Films 463. Es sei zu beachten, dass die Außenseite des Films 463 in diesem Beispiel als die Grenze des Speicherlochs definiert ist, aber wie erwähnt, kann das Speicherloch mit anderen Arten von Filmen gefüllt werden. Die Längen der Leitungen r', r'' und r''' können sich unterscheiden. Mit anderen Worten ist die Grenze des Speicherlochs nicht kreisförmig in der Form, sondern hat eine unregelmäßige Form. Darüber hinaus hat die unregelmäßige Form in verschiedenen Bereichen unterschiedliche Krümmungen (mehrere Bereiche 510, 520, 530 sind durch gestrichelte Kreise angegeben). Die unregelmäßige Form des Speicherlochs hat Bereiche, die relativ scharfe Ecken haben. Beispielsweise hat der Bereich 530 eine relativ scharfe Ecke. Die unregelmäßige Form des Speicherlochs hat Bereiche, die relativ flache Formen haben. Beispielsweise hat der Bereich 510 eine relativ flache Form. Die Form des Speicherlochs beeinflusst die Art des elektrischen Feldes. Daher können Spannungen, die an die Wortleitung angelegt werden, durch die unregelmäßigen Form des Speicherlochs beeinflusst werden. Beispielsweise kann das elektrische Feld stärker sein, wenn die Speicherlochform spitzer ist, und schwächer, wenn die Speicherlochform gerader ist. Beispielsweise kann während des Speicherzellenbetriebs, wenn Spannungen an das Steuer-Gate angelegt werden, das elektrische Feld stärker sein, wenn die Steuer-Gate-Form spitzer ist, und schwächer, wenn die Steuer-Gate-Form gerader ist. Im Gegensatz dazu ist das elektrische Feld für das Beispiel aus 4E gleichförmiger.
-
Eine mögliche Folge der Fehlformung des Speicherlochs in 5 ist, dass Verstärkungsspannungen (die an das Steuer-Gate angelegt werden), die eine unerwünschte Programmierung nicht ausgewählter Speicherzellen (die mit der ausgewählten Wortleitung verbunden sind) verhindern sollen, möglicherweise nicht effektiv genug sind, um eine unerwünschte Programmierung zu verhindern. Eine mögliche Auswirkung besteht darin, dass Speicherzellen, die im Löschzustand bleiben sollten, unmittelbar nach dem Programmieren in einem programmierten Zustand (z. B. A-Zustand) sind. Eine weitere mögliche Folge der Speicherloch-Fehlform in 5 ist, dass die Programmiersteigung geringer sein kann. Die Programmiersteigung bezieht sich auf den Einfluss, den ein Anstieg der Programmierspannung auf die Änderung der Speicherzelle Vt hat.
-
6 ist ein Flussdiagramm, das eine Ausführungsform eines Prozesses 600 zum Programmieren von NAND-Ketten von Speicherzellen beschreibt, die in einem Array organisiert sind. In einem Ausführungsbeispiel wird der Prozess von 6 an dem Speicherchip 108 unter Verwendung der oben erörterten Steuerschaltung. Zum Beispiel kann der Prozess von 6 in der Richtung der Zustandsmaschine 112 durchgeführt werden.
-
Üblicherweise wird die Programmierspannung, die an die Steuergates (über eine ausgewählte Wortleitung) während eines Programmiervorgangs angelegt wird, als eine Reihe von Programmierimpulsen angelegt. Zwischen mindestens einigen der Programmierimpulse befindet sich ein Satz von Prüfimpulsen, um eine Prüfung durchzuführen. In vielen Implementierungen wird die Größe der Programmierimpulse mit jedem sukzessiven Impuls durch eine vorbestimmte Schrittgröße erhöht. Die Größe des Schritts variiert in einigen Ausführungsformen in Abhängigkeit von einer Schwere der Speicherzellen-Fehlform. In Schritt 640 von 6 wird die Programmierspannung (Vpgm) auf die Startgröße (z. B. -12-16 V oder einen anderen geeigneten Pegel) initialisiert und ein Programmzähler PC, der durch die Zustandsmaschine 112 geführt wird, wird bei 1 initialisiert.
-
In einer Ausführungsform wird die Gruppe der ausgewählten zu programmierenden Speicherzellen (die hierin als die ausgewählten Speicherzellen bezeichnet werden) gleichzeitig programmiert und alle mit derselben Wortleitung (der ausgewählten Wortleitung) verbunden. Es wird wahrscheinlich andere Speicherzellen geben, die nicht zum Programmieren ausgewählt sind (nicht ausgewählte Speicherzellen), die ebenfalls mit der ausgewählten Wortleitung verbunden sind. Das heißt, die ausgewählte Wortleitung wird auch mit Speicherzellen verbunden, deren Programmierung eigentlich verhindert werden soll. Wenn beispielsweise Daten in einen Satz von Speicherzellen geschrieben werden, müssen einige der Speicherzellen Daten speichern, die mit dem Zustand S0 assoziiert sind (siehe 6), damit sie nicht programmiert werden. Wenn Speicherzellen ihren beabsichtigten Zieldatenzustand erreichen, werden sie außerdem an der weiteren Programmierung gehindert. Bei NAND-Ketten (z. B. nicht ausgewählten NAND-Ketten), die Speicherzellen einschließen, die mit der ausgewählten Wortleitung verbunden sind und deren Programmierung gesperrt werden soll, werden ihre Kanäle verstärkt, um die Programmierung zu sperren. Wenn ein Kanal eine verstärkte Spannung hat, ist die Spannungsdifferenz zwischen dem Kanal und der Wortleitung nicht groß genug, um eine Programmierung zu bewirken. Zur Unterstützung der Verstärkung lädt das Speichersystem in Schritt 642 Kanäle von NAND-Ketten vor, die Speicherzellen einschließen, die mit der ausgewählten Wortleitung verbunden sind und deren Programmierung gesperrt werden soll. In einigen Ausführungsformen ist der Kanal vom Drain-Ende der NAND-Kette vorgeladen. Mit „Drain-Ende“ ist das Ende der NAND-Kette gemeint, die mit der Bitleitung verbunden ist. In einigen Ausführungsformen ist der Kanal vom Source-Ende vorgeladen. Mit „Source-Ende“ ist das Ende der NAND-Kette gemeint, die mit der Source-Leitung verbunden ist. In einigen Ausführungsformen, ist der Kanal von sowohl dem Drain-Ende als auch dem Source-Ende vorgeladen.
-
In Schritt 644 haben die NAND-Ketten, die Speicherzellen einschließen, die mit der ausgewählten Wortleitung verbunden sind und deren Programmierung gesperrt werden soll, verstärkte Kanäle, um die Programmierung zu sperren. Solche NAND-Ketten werden hierin als „nicht ausgewählte NAND-Ketten“ bezeichnet. In einer Ausführungsform empfangen die nicht ausgewählten Wortleitungen eine oder mehrere Verstärkungsspannungen (z. B. ~7 bis 11 Volt), um Verstärkungsschemata durchzuführen. Eine Programmsperrspannung wird an die Bitleitungen angelegt, die mit der nicht ausgewählten NAND-Kette gekoppelt sind. Dadurch können die Verstärkungsspannungen das Potential des NAND-Kanals verstärken.
-
In Schritt 646 wird ein Programmierimpuls des Programmsignals Vpgm an die ausgewählte Wortleitung (die zur Programmierung ausgewählte Wortleitung) angelegt. Wenn eine Speicherzelle auf einer NAND-Kette programmiert werden soll, wird in einer Ausführungsform die entsprechende Bitleitung mit einer Programmaktivierspannung vorgespannt. Hierin wird eine solche NAND-Kette als ausgewählte „NAND-Kette“ bezeichnet. In Schritt 646 wird der Programmierimpuls gleichzeitig an alle Speicherzellen angelegt, die mit der ausgewählten Wortleitung verbunden sind, sodass alle Speicherzellen, die mit der ausgewählten Wortleitung verbunden sind, gleichzeitig programmiert werden (es sei denn, diese sind gegen Programmierung gesperrt). Das heißt, sie werden zur gleichen Zeit oder während überlappenden Zeiten (die beide als gleichzeitig betrachtet werden) programmiert. Auf diese Weise ändern alle Speicherzellen, die mit der ausgewählten Wortleitung verbunden sind, gleichzeitig ihre Schwellenspannung, sofern ihre Programmierung nicht gesperrt ist.
-
In Schritt 648 werden Speicherzellen, die ihre Zielzustände erreicht haben, von der weiteren Programmierung ausgeschlossen. Schritt 648 kann das Durchführen einer Verifizierung auf einem oder mehreren Verifizierungsreferenzpegeln einschließen. In einer Ausführungsform wird der Verifizierungsprozess durch Prüfung durchgeführt, ob die Schwellenspannungen der zur Programmierung ausgewählten Speicherzellen die geeignete Prüfreferenzspannung erreicht haben. Die Verifizierungsreferenzspannung liegt in einer Ausführungsform an einem unteren Ende des Zielzustands. Wie hierin verwendet, bezieht sich „unteres Ende“ auf einen Teil der Verteilung zwischen seinem niedrigsten Schwellenspannungspegel und dem Schwellenspannungspegel am Scheitelpunkt der Verteilung. In ähnlicher Weise bezieht sich, wie hierin verwendet, „oberes Ende“ auf einen Teil der Verteilung zwischen seinem höchsten Schwellenspannungspegel und dem Schwellenspannungspegel am Scheitelpunkt der Verteilung.
-
In Schritt 648 kann eine Speicherzelle gesperrt werden, nachdem die Speicherzelle (durch einen Test des Vt) überprüft wurde, dass die Speicherzelle ihren Zielzustand erreicht hat.
-
Falls in Schritt 650 bestimmt wird, dass alle Speicherzellen ihre Zielschwellenspannungen erreicht haben (Durchgang), ist der Programmiervorgang abgeschlossen und erfolgreich, da alle ausgewählten Speicherzellen programmiert und auf ihre Zielzustände überprüft wurden. In Schritt 652 wird ein Status von „BESTANDEN“ gemeldet. Falls in 650 bestimmt wird, dass nicht alle der Speicherzellen ihre Zielschwellenspannungen erreicht haben (fail (fehlgeschlagen)), fährt der Programmierprozess mit Schritt 654 fort.
-
In Schritt 654 zählt das Speichersystem die Anzahl von Speicherzellen, die ihre jeweilige Zielschwellenspannungsverteilung noch nicht erreicht haben. Das heißt, das System zählt die Anzahl von Speicherzellen, die bislang ihren Zielzustand nicht erreicht haben. Dieses Zählen kann von der Zustandsmaschine, der Steuerung 122 oder einer anderen Logik ausgeführt werden. In einer Implementierung speichert jeder der Leseblöcke den Status (bestanden/fehlgeschlagen) ihrer jeweiligen Zellen. In einer Ausführungsform gibt es einen Gesamtzählwert, der die Gesamtzahl der gegenwärtig programmierten Speicherzellen wiedergibt, die den letzten Prüfschritt nicht bestanden haben. In einer anderen Ausführungsform werden separate Zählwerte für jeden Datenzustand ermittelt.
-
In Schritt 656 wird bestimmt, ob die Zählung von Schritt 654 kleiner oder gleich einer vorgegebenen Grenze ist. In einer Ausführungsform ist die vorbestimmte Grenze die Anzahl von Bits, die durch ECC während eines Leseprozesses für die Seite von Speicherzellen korrigiert werden können. Wenn die Anzahl der fehlerhaften Speicherzellen kleiner oder gleich der vorbestimmten Grenze ist, dann kann der Programmierprozess anhalten und in Schritt 652 wird der Status „BESTANDEN“ gemeldet. In dieser Situation können ausreichend Speicherzellen korrekt programmiert werden, sodass die wenigen verbleibenden Speicherzellen, die nicht vollständig programmiert worden sind, unter Verwendung von ECC während des Lesevorgangs korrigiert werden können. In einigen Ausführungsformen kann die in Schritt 656 vorbestimmte Grenze kleiner als die Anzahl von Bits sein, die durch ECC (Error Correction Codes) während eines Leseprozesses korrigiert werden können, um zukünftige/zusätzliche Fehler einzuplanen. Wenn weniger als alle Speicherzellen für eine Seite programmiert werden oder ein Zählwert für nur einen Datenzustand (oder weniger als alle Zustände) verglichen wird, kann die vorbestimmte Grenze ein Anteil (pro rata oder nicht pro rata) der Anzahl von Bits sein, die durch ECC während eines Leseprozesses für die Seite von Speicherzellen korrigiert werden können. In einigen Ausführungsformen ist die Grenze nicht vorbestimmt. Stattdessen ändert sie sich basierend auf der Anzahl der bereits gezählten Fehler für die Seite, der Anzahl der durchgeführten Programmier-/Löschzyklen oder anderer Kriterien.
-
Wenn die Anzahl fehlerhafter Speicherzellen nicht kleiner als die vorbestimmte Grenze ist, dann fährt der Programmierprozess mit Schritt 658 fort und der Programmzähler PC wird gegen den Programmgrenzwert (PL) überprüft. Beispiele für Programmgrenzwerte schließen 6, 12, 16, 19 und 30 ein; jedoch können andere Werte verwendet werden. Wenn der Programmzähler PC nicht kleiner als der Programmgrenzwert PL ist, dann wird der Programmprozess als fehlgeschlagen betrachtet und der Status FEHLGESCHLAGEN wird in Schritt 662 gemeldet. Wenn der Programmzähler PC kleiner als der Programmgrenzwert PL ist, dann fährt der Prozess mit Schritt 660 fort, während der Programmzähler PC um 1 erhöht wird und die Programmierspannung Vpgm auf die nächste Größe erhöht wird. Zum Beispiel hat der nächste Impuls eine Größe, die um eine Schrittgröße (z. B. eine Schrittgröße von 0,1 bis 1,0 Volt) größer als der vorherige Impuls ist. Nach Schritt 660 kehrt der Prozess zu Schritt 642 zurück und ein weiterer Programmierimpuls wird an der ausgewählten Wortleitung angelegt, sodass eine weitere Iteration (Schritte 642-660) des Programmierprozesses von 6 durchgeführt wird.
-
Am Ende eines erfolgreichen Programmierprozesses sollten die Schwellenspannungen der Speicherzellen innerhalb einer oder mehrerer Verteilungen von Schwellenspannungen für programmierte Speicherzellen oder gegebenenfalls innerhalb einer Verteilung von Schwellenspannungen für gelöschte Speicherzellen liegen. 7A stellt beispielhafte Schwellenspannungsverteilungen für das Speicherarray dar, wenn jede Speicherzelle drei Datenbits speichert. Andere Ausführungsformen können jedoch andere Datenkapazitäten pro Speicherzelle verwenden (wie ein, zwei, vier oder fünf Bits an Daten pro Speicherzelle). 7A zeigt acht Schwellenspannungsverteilungen, die acht Datenzuständen entsprechen. Die erste Schwellenspannungsverteilung (Datenzustand) S0 steht für Speicherzellen, die gelöscht sind. Der Zustand S0 kann hierin auch als ein Löschzustand (Er-Zustand) bezeichnet werden. Die anderen sieben Schwellenspannungsverteilungen (programmierte Zustände) S1 bis S7 stellen Speicherzellen dar, die programmiert sind und daher programmierte Zustände genannt werden. Die programmierten Zustände können auch durch Buchstaben bezeichnet werden. Beispielsweise kann der Satz programmierter Zustände (A, B, C, D, E, F und G) dem Satz programmierter Zustände (S1, S2, S3, S4, S5, S6 und S7) entsprechen. Jede Schwellenspannungsverteilung (Datenzustand) entspricht vorbestimmten Werten für den Satz an Datenbits. Die spezifische Beziehung zwischen den in die Speicherzelle programmierten Daten und den Schwellenspannungspegeln der Zelle hängt von dem Datencodierschema ab, das für die Zellen verwendet wird. In einer Ausführungsform werden Datenwerte den Schwellenspannungsbereichen unter Verwendung einer Gray-Code-Zuweisung zugewiesen, sodass, wenn sich die Schwellenspannung eines Speichers fälschlicherweise in seinen benachbarten physikalischen Zustand verschiebt, nur ein Bit betroffen ist.
-
FIG. 7A zeigt acht Schwellenspannungsverteilungen 702-716. Die Verteilung 702 entspricht dem Zustand S0; die Verteilung 704 entspricht dem Zustand S1; die Verteilung 706 entspricht dem Zustand S2; die Verteilung 708 entspricht dem Zustand S3; die Verteilung 710 entspricht dem Zustand S4; die Verteilung 712 entspricht dem Zustand S5; die Verteilung 714 entspricht dem Zustand S6; und die Verteilung 716 entspricht dem Zustand S7. 7A zeigt auch sieben Lesereferenzspannungen Vr1, Vr2, Vr3, Vr4, Vr5, Vr6 und Vr7 zum Lesen von Daten aus Speicherzellen. Durch Testen (z. B. Ausführen von Lesevorgängen), ob die Schwellenspannung einer gegebenen Speicherzelle über oder unter den sieben Lesereferenzspannungen liegt, kann das System bestimmen, in welchem Datenzustand (d. h. S0, S1, S2, S3, ...) sich eine Speicherzelle befindet.
-
7A zeigt auch sieben Prüfreferenzspannungen, Vv1, Vv2, Vv3, Vv4, Vv5, Vv6 und Vv7. Wenn in einigen Ausführungsformen Speicherzellen auf den Datenzustand S1 programmiert werden, prüft das System, ob diese Speicherzellen eine Schwellenspannung haben, die größer oder gleich Vv1 ist. Wenn Speicherzellen auf den Datenzustand S2 programmiert werden, prüft das System, ob diese Speicherzellen eine Schwellenspannung haben, die größer oder gleich Vv2 ist. Wenn Speicherzellen in den Datenzustand S3 programmiert werden, bestimmt das System, ob Speicherzellen ihre Schwellenspannung haben, die größer oder gleich Vv3 ist. Wenn Speicherzellen auf den Datenzustand S4 programmiert werden, prüft das System, ob diese Speicherzellen eine Schwellenspannung haben, die größer oder gleich Vv4 ist. Wenn Speicherzellen auf den Datenzustand S5 programmiert werden, prüft das System, ob diese Speicherzellen eine Schwellenspannung haben, die größer oder gleich Vv5 ist. Wenn Speicherzellen auf den Datenzustand S6 programmiert werden, prüft das System, ob diese Speicherzellen eine Schwellenspannung haben, die größer oder gleich Vv6 ist. Wenn Speicherzellen auf den Datenzustand S7 programmiert werden, prüft das System, ob diese Speicherzellen eine Schwellenspannung haben, die größer oder gleich Vv7 ist. Der programmierte Zustand (z. B. S1- oder A-Zustand), der durch die Referenzspannung mit der niedrigsten Größe (z. B. Vv1) verifiziert wird, wird hier als „niedrigster programmierter Zustand“ bezeichnet. Der programmierte Zustand (z. B. S7- oder G-Zustand), der durch die Referenzspannung mit der höchsten Größe (z. B. Vv7) verifiziert wird, wird hier als „höchster programmierter Zustand“ bezeichnet.
-
7A zeigt auch Vev (für eine „Lösch-Verifizierungsspannung“), bei dem es sich um einen Spannungspegel handelt, um zu testen, ob eine Speicherzelle angemessen gelöscht wurde. Wie in 7A sollte eine Speicherzelle, die gelöscht wird, ein Vt unter Vev haben. Wie nachstehend ausführlicher erläutert wird, können nach einem Programmierprozess einige Speicherzellen, die ein Vt unter Vev aufweisen sollten (d. h. im gelöschten Zustand sein sollten), ein Vt über Vev haben. In einigen Fällen kann Vt über Vr1 oder sogar über Vv1 liegen. Fehlgeformte Speicherzellen zeigen möglicherweise eher ein solches Verhalten. Speicherzellen, die in dem Löschzustand geblieben sein sollten, aber einen Vt über einer gewissen Spannung haben (z. B. Vev oder Vr1), werden hierin als „programmgestörte Löschzustandszellen“ bezeichnet.
-
In einer Ausführungsform, die als Vollsequenzprogrammierung bekannt ist, können Speicherzellen aus dem gelöschten Datenzustand S0 direkt in einen der programmierten Datenzustände S1 bis S7 programmiert werden. Zum Beispiel kann eine Population von Speicherzellen, die programmiert werden sollen, zuerst gelöscht werden, sodass sich alle Speicherzellen in der Population im gelöschten Datenzustand S0 befinden. Dann wird ein Programmierprozess verwendet, um Speicherzellen direkt auf Datenzustände S1, S2, S3, S4, S5, S6 und/oder S7 zu programmieren. Während zum Beispiel einige Speicherzellen von dem Datenzustand S0 auf den Datenzustand S1 programmiert werden, werden andere Speicherzellen vom Datenzustand S0 auf den Datenzustand S2 und/oder vom Datenzustand S0 auf den Datenzustand S3 und so weiter programmiert. In einigen Ausführungsformen können sich die Datenzustände S1 bis S7 überlappen, wobei sich die Steuerung 122 auf die Fehlerkorrektur stützt, um die korrekten Daten, die gespeichert werden, zu identifizieren.
-
Die hierin beschriebene Technologie kann auch mit anderen Programmierarten zusätzlich zur Vollsequenzprogrammierung (einschließlich, aber nicht beschränkt auf Mehrstufen-/Phasenprogrammierung) verwendet werden. In einer Ausführungsform der Mehrstufen-/Phasenprogrammierung werden alle Speicherzellen, die in einem der Datenzustände S4 bis S7 enden sollen, in einer ersten Phase zu einem Zwischenzustand programmiert, der nicht höher als S4 ist. Speicherzellen, die in einem der Datenzustände S0-S3 enden sollen, werden in der ersten Phase nicht programmiert. In einer zweiten Phase werden Speicherzellen, die entweder in Datenzustand S2 oder S3 enden, in einen Zustand programmiert, der nicht höher als S2 ist; Speicherzellen, die entweder in Datenzustand S6 oder S7 enden, werden auf einen Zustand programmiert, der nicht höher als S6 ist. In der dritten Phase werden die Speicherzellen auf ihre Endzustände programmiert. In einer Ausführungsform wird eine erste Seite in der ersten Phase programmiert, eine zweite Seite wird in der zweiten Phase programmiert und eine dritte Seite wird in der dritten Phase programmiert. Hierin können, sobald eine Seite in eine Gruppe von Speicherzellen programmiert wurde, die Speicherzellen zurückgelesen werden, um die Seite abzurufen. Daher werden die mit der Mehrphasenprogrammierung verbundenen Zwischenzustände hierin als programmierte Zustände betrachtet.
-
Im Allgemeinen wird die ausgewählte Wortleitung während Prüfvorgängen und Lesevorgängen mit einer Spannung verbunden, deren Pegel für jeden Lesevorgang (siehe z. B. Lesevergleichsspannungen Vr1, Vr2, Vr3, Vr4, Vr5, Vr6 und Vr7 von 7A) oder Verifizierungsoperation (siehe z. B. Verifizierungszielpegel Vv1, Vv2, Vv3, Vv4, Vv5, Vv6 und Vv7 von 7A) spezifiziert ist, um zu bestimmen, ob eine Schwellenspannung der betreffenden Speicherzelle einen derartigen Pegel erreicht hat. Nach Anlegen der Wortleitungsspannung wird der Leitungsstrom der Speicherzelle gemessen, um zu bestimmen, ob die Speicherzelle in Reaktion auf die an die Wortleitung angelegte Spannung eingeschaltet ist (Strom geleitet). Wenn der Leitungsstrom gemäß Messungen größer als ein bestimmter Wert ist, dann wird angenommen, dass die Speicherzelle eingeschaltet ist und die an die Wortleitung angelegte Spannung größer als die Schwellenspannung der Speicherzelle ist. Falls der Leitungsstrom gemäß Messungen nicht größer als der bestimmte Wert ist, dann wird angenommen, dass die Speicherzelle nicht eingeschaltet ist und die an die Wortleitung angelegte Spannung nicht größer als die Schwellenspannung der Speicherzelle ist. Während eines Lese- oder Verifizierungsprozesses werden die nicht ausgewählten Speicherzellen mit einer oder mehreren Lesedurchgangsspannungen (die auch als Bypass-Spannungen bezeichnet werden) an ihren Steuer-Gates versorgt, sodass diese Speicherzellen als Durchgangs-Gate fungieren (z. B. Strom leiten ungeachtet dessen, ob sie programmiert oder gelöscht sind).
-
Es gibt viele Wege, um den Leitungsstrom einer Speicherzelle während eines Lese- oder Prüfvorgangs zu messen. In einem Beispiel wird der Leitungsstrom einer Speicherzelle durch die Rate gemessen, mit der sie einen dedizierten Kondensator in dem Leseverstärker entlädt oder lädt. In einem anderen Beispiel ermöglicht der Leitungsstrom der ausgewählten Speicherzelle dem NAND-String, der die Speicherzelleeinschließt (bzw. ermöglicht diesem nicht), eine entsprechende Bitleitung zu entladen. Die Spannung auf der Bitleitung wird nach einer Zeitspanne gemessen, um zu sehen, ob sie entladen wurde oder nicht. Es ist zu beachten, dass die hierin beschriebene Technologie mit verschiedenen Verfahren verwendet werden kann, die nach dem Stand der Technik zum Prüfen/Lesen bekannt sind. Andere Lese- und Prüftechniken, die nach dem Stand der Technik bekannt sind, können ebenfalls verwendet werden.
-
7B zeigt acht mögliche Schwellenspannungsverteilungen 722-736 nach der Programmierung, um ein mögliches Problem zu veranschaulichen, das mit einer Gruppe von Speicherzellen auftreten kann, die eine schwere Fehlform haben. Die Verteilung 722 entspricht dem Zustand S0; die Verteilung 724 entspricht dem Zustand S1; die Verteilung 726 entspricht dem Zustand S2; die Verteilung 728 entspricht dem Zustand S3; die Verteilung 730 entspricht dem Zustand S4; die Verteilung 732 entspricht dem Zustand S5; die Verteilung 734 entspricht dem Zustand S6; und die Verteilung 736 entspricht dem Zustand S7. Zu Vergleichszwecken wurden die Speicherzellen unter Verwendung der gleichen Programmierparameter (z. B. Schrittgröße der Programmspannung, Verifizierungsreferenzpegel) wie im Beispiel von 7A in die gleichen Zustände (S0-S7) programmiert. Somit sind die Verifizierungsreferenzpegel Vv1-Vv7 die gleichen wie in 7A und 7B. Gleichermaßen sind die Lesereferenzpegel Vr1-Vv7 die gleichen wie in 7A und 7B.
-
Die Schwellenspannungsverteilung 722 des S0-Zustands unterscheidet sich signifikant von der Schwellenspannungsverteilung 702 des S0-Zustands in 7A. In Bezug auf die Schwellenspannungsverteilung 722 haben einige der Speicherzellen eine Vt über dem Lösch-Verifizierungspegel (Vev), und einige der Speicherzellen haben eine Vt über Vr1. Es ist möglich, dass einige der Speicherzellen in der Schwellenspannungsverteilung 722 eine Vt über Vv1 haben, obwohl dies in 7B nicht dargestellt ist. Die Schwellenspannungsverteilungen der programmierten Zustände (S1-S7) können sich auch von denen aus 7A unterscheiden.
-
In einigen Ausführungsformen wird eine Zählung von Speicherzellen durchgeführt, die eine Vt innerhalb einer Zone haben, die zwischen dem Lösch-Verifizierungspegel (Vev) und dem S1-Verifizierungspegel (Vv1) liegt. 7B zeigt eine Ausführungsform einer solchen Zone 720. Die Zone 720 liegt zwischen Vr1 und Vv1. Die Zone kann basierend auf anderen Referenzspannungen definiert werden. Diese Zählung wird in einigen Ausführungsformen verwendet, um eine Schwere der Speicherloch-Fehlform für die Gruppe zu bestimmen. Eine hohe Anzahl gibt in einigen Ausführungsformen eine hohe Schwere der Speicherloch-Fehlform für die Gruppe an. Eine niedrige Anzahl gibt in einigen Ausführungsformen eine geringe Schwere der Speicherloch-Fehlform für die Gruppe an.
-
In einigen Ausführungsformen werden einer oder mehrere Programmparameter basierend auf der Zählung ausgewählt. In einigen Ausführungsformen werden einer oder mehrere Programmparameter basierend auf der Zählung ausgewählt. Beispielsweise kann die Programmschrittgröße in Schritt 660 des Prozesses 600 ausgewählt werden. Eine größere Programmschrittgröße führt in einigen Ausführungsformen zu einer schnelleren Programmierung und damit zu einer höheren Leistung. Eine kleinere Programmschrittgröße führt in einigen Ausführungsformen zu einer langsameren Programmierung. Die kleinere Programmschrittgröße kann jedoch ermöglichen, dass eine Gruppe mit einer hohen Schwere der Speicherloch-Fehlform zuverlässig verwendet wird. In einigen Ausführungsformen werden andere Programmparameter basierend darauf, dass die Zählung Vv1 ist, ausgewählt. Durch Einstellen von Vv1 wird der Spielraum zwischen VeV und Vv1 geändert. Wenn Vv1 bewegt wird, können auch einer oder mehrere der anderen Verifizierungsreferenzpegel Vv2-Vv7 bewegt werden (obwohl Vv7 in der Regel nicht bewegt wird).
-
7C zeigt acht Schwellenspannungsverteilungen 742-756 nach dem Programmieren unter Verwendung anderer Programmparameter als die im Beispiel von 7A verwendeten. Die unterschiedlichen Programmparameter werden als Reaktion auf die Bestimmung verwendet, dass die Schwere der Speicherloch-Fehlform für die Gruppe in einer Ausführungsform niedrig ist. Die in 7C verwendeten Programmparameter können verwendet werden, um die Programmierleistung zu erhöhen. Die Verteilung 742 entspricht dem Zustand S0; die Verteilung 744 entspricht dem Zustand S1; die Verteilung 746 entspricht dem Zustand S2; die Verteilung 748 entspricht dem Zustand S3; die Verteilung 750 entspricht dem Zustand S4; die Verteilung 752 entspricht dem Zustand S5; die Verteilung 754 entspricht dem Zustand S6; und die Verteilung 756 entspricht dem Zustand S7. Wie bereits erwähnt kann die Programmierungsleistung als Reaktion auf die Bestimmung, dass die Schwere der Speicherloch-Fehlform für die Gruppe unter einem Schwellenwert liegen, erhöht werden.
-
Zu Vergleichszwecken sind die Schwellenwertverteilungen 704-716 für die programmierten Zustände S1-S7 aus 7A in gestrichelten Linien dargestellt. Speicherzellen wurden vom Löschzustand (S0) bis zu den Schwellenwertverteilungen 744-756 unter Verwendung eines höheren Leistungspegels als im Beispiel von 7A programmiert.
-
Die Speicherzellen wurden auf die Schwellenwertverteilungen 744-756 unter Verwendung unterschiedlicher Programmierparameter (z. B. Schrittgröße der Programmspannung, Verifizierungsreferenzpegel) wie im Beispiel von 7A programmiert. Ein Unterschied besteht darin, dass die Schrittgröße der Programmspannung im Beispiel von 7C größer ist. Ein weiterer Unterschied besteht darin, dass Vv1 in 7C eine niedrigere Spannung hat als in 7A. Somit ist Vv1 in 7C näher an Vev als in 7A. Ein weiterer Unterschied besteht darin, dass die Spannungsdifferenz zwischen Vv1 und Vv7 in 7C größer ist als in 7A. Eine größere Lücke zwischen Vv1 und Vv7 kann die Zuverlässigkeit aufgrund des erhöhten Spannungsspielraums zwischen den Zuständen verbessern.
-
7D zeigt Schwellenspannungsverteilungen 762-776 nach dem Programmieren, um die Verwendung anderer Programmparameter als die im Beispiel von 7C zu veranschaulichen. Die unterschiedlichen Programmparameter werden als Reaktion auf die Bestimmung verwendet, dass die Schwere der Speicherloch-Fehlform für die Gruppe in einer Ausführungsform hoch ist. Die Verteilung 762 entspricht dem Zustand S0; die Verteilung 764 entspricht dem Zustand S1; die Verteilung 766 entspricht dem Zustand S2; die Verteilung 768 entspricht dem Zustand S3; die Verteilung 770 entspricht dem Zustand S4; die Verteilung 772 entspricht dem Zustand S5; die Verteilung 774 entspricht dem Zustand S6; und die Verteilung 776 entspricht dem Zustand S7. Die Programmierungsleistung (z. B. Programmiergeschwindigkeit) kann als Reaktion auf die Bestimmung, dass die Schwere der Speicherloch-Fehlform über einem Schwellenwert liegen, verringert werden. Beispielsweise kann die Programmschrittgröße verringert werden. Die Verwendung der kleineren Schrittgröße kann jedoch dazu beitragen, genauere Schwellenspannungsverteilungen zu bilden, was die Zuverlässigkeit verbessern kann.
-
Zu Vergleichszwecken sind die Schwellenwertverteilungen 724-736 für die programmierten Zustände S1-S7 aus 7B in gestrichelten Linien dargestellt. Die Speicherzellen wurden auf die Schwellenspannungsverteilungen 764-776 unter Verwendung unterschiedlicher Programmierparameter (z. B. Schrittgröße der Programmspannung, Verifizierungsreferenzpegel) wie im Beispiel von 7B programmiert. Ein Unterschied besteht darin, dass die Schrittgröße der Programmspannung im Beispiel von 7D kleiner ist. Ein weiterer Unterschied besteht darin, dass Vv1 in 7D eine höhere Spannung hat als in 7C. Somit ist Vv1 in 7D weiter von Vev entfernt als in 7C. Ein weiterer Unterschied besteht darin, dass die Spannungsdifferenz zwischen Vv1 und Vv7 in 7D kleiner ist als in 7C. Die kleinere Programmschrittgröße kann jedoch verwendet werden, um die kleinere Lücke zwischen Vv1 bis Vv7 zu kompensieren.
-
8 ist eine Ausführungsform eines Prozesses 800 zum Programmieren von Speicherzellen in einer nichtflüchtigen Speichervorrichtung. Die nichtflüchtige Speichervorrichtung könnte jede hierin beschriebene nichtflüchtige Speichervorrichtung sein. Die Speicherzellen befinden sich in einigen Ausführungsformen in einem 3D-Speicherarray. Das dreidimensionale Array weist Spalten nichtflüchtiger Speicherzellen auf, wie die Beispiele von 4A-4E, ohne darauf beschränkt zu sein. Es sei zu beachten, dass nicht alle nichtflüchtigen Speicherlöcher einen kreisförmigen Querschnitt haben, wie im Beispiel aus 4E. Einige Speicherzellen können eine schwere Fehlform haben, wie in dem Beispiel von 5. Der Prozess wird in einer Ausführungsform zur Anpassung von einem oder mehreren Programmparametern an eine Schwere einer Speicherloch-Fehlform einer Gruppe von Speicherzellen verwendet. Dies ermöglicht es unterschiedlichen Gruppen, unterschiedliche Programmparameter zu haben, basierend auf der Schwere der Fehlform der Speicherlöcher der Gruppe. Die Gruppen können eine beliebige Einheit sein (z. B. Speicherzellen, die mit einer Wortleitung verbunden sind, ein Block von Speicherzellen, eine Ebene, ein Speicherchip 108). Der Prozess 800 wird in einigen Ausführungsformen von der Zustandsmaschine 112 und/oder der Steuerung 122 (oder gleichwertig funktionierenden Schaltungen) in Kombination mit allen oder einer Teilmenge der anderen in 1 dargestellten Schaltungen durchgeführt werden.
-
Schritt 802 schließt das Löschen einer Gruppe von Speicherzellen ein. Die Speicherzellen werden zu einem gelöschten Zustand (z. B. S0 oder Er) gelöscht. Die obere Grenze des gelöschten Zustands wird durch eine Lösch-Verifizierungsspannung (z. B. VeV) definiert. Mit anderen Worten wird die Lösch-Verifizierungsspannung während des Löschprozesses verwendet, um zu verifizieren, ob sich die Speicherzellen in dem Löschzustand befinden. Es ist nicht erforderlich, dass jede Speicherzelle in der Gruppe eine Vt unterhalb der Lösch-Verifizierungsspannung hat, damit der Löschprozess abgeschlossen ist. In einigen Ausführungsformen kann eine vorbestimmte Anzahl von Speicherzellen eine Vt über der Lösch-Verifizierungsspannung haben, nachdem das Löschen abgeschlossen ist. Es sei zu beachten, dass die Gruppe beispielsweise die Speicherzellen sein kann, die mit einer Wortleitung verbunden sind. Beim Löschen dieser Gruppe können auch andere Speicherzellen gelöscht werden. Beispielsweise kann ein ganzer Block von Speicherzellen (zu denen die Gruppe gehört) zusammen gelöscht werden.
-
Schritt 804 schließt das Programmieren von Speicherzellen in der Gruppe vom Löschzustand in eine Vielzahl von programmierten Zuständen unter Verwendung eines oder mehrerer erster Programmparameter ein. Der eine oder die mehreren Programmparameter können Folgendes einschließen, ohne darauf beschränkt zu sein: 1) die Schrittgröße der Programmspannung zwischen Programmschleifen; 2) eine Spannungslücke zwischen einer Verifizierungsspannung im Löschzustand (z. B. Vev) und einer Verifizierungsspannung im A-Zustand (oder S1) (z. B. Vv1); 3) einen oder mehrere Verifizierungspegel (z. B. eine von Vv1 bis Vv7), die verwendet werden, um zu verifizieren, ob eine Speicherzelle auf ihren Zielzustand programmiert wurde; und/oder 4) eine Spannungslücke zwischen einer ersten Verifizierungsspannung (z. B. Vv1) für einen niedrigsten programmierten Zustand (z. B. S0) und einer zweiten Verifizierungsspannung (z. B. Vv7) für einen höchsten programmierten Zustand (z. B. S7). Es sei zu beachten, dass mehr oder weniger als sieben programmierte Zustände verwendet werden können.
-
Schritt 806 schließt das Bestimmen einer Schwere der Speicherloch-Fehlform für die Gruppe basierend auf Vts der Speicherzellen ein. In einer Ausführungsform werden Schwellenspannungen von Speicherzellen gemessen, um die Schwere der Speicherloch-Fehlform zu bestimmen. Es gibt eine Reihe von Möglichkeiten, wie die Schwellenspannungen von Speicherzellen gemessen werden können. In einigen Ausführungsformen erfolgt eine Zählung von Speicherzellen basierend auf den Vt-Messungen. In einigen Ausführungsformen wird die Schwere der Speicherloch-Fehlform in der Gruppe basierend auf einer Anzahl von Speicherzellen mit einer Schwellenspannung in einer Zone bestimmt. Ein Beispiel der Zone ist in 7B dargestellt, aber andere Zonen können verwendet werden. In einer Ausführungsform wird eine Zählung der Anzahl von Speicherzellen durchgeführt, die eine Vt innerhalb einer Zone hat, die zwischen dem Lösch-Verifizierungspegel (Vev) und dem S1-Verifizierungspegel (Vv1) liegt. Die Zone muss nicht die gesamte Lücke zwischen dem Löschverifizierungspregel (Vev) und dem S1-Verifizierungspegel (Vv1) einnehmen. 7B stellt die Zone 720 dar, die für die Zählung in einer Ausführungsform verwendet wird. Zone 720 liegt zwischen Vr1 und Vv1. Die Zone kann basierend auf anderen Referenzspannungen definiert werden. Die Schwere der Speicherloch-Fehlform für die Gruppe basiert in einigen Ausführungsformen auf der Zählung. Eine höhere Anzahl gibt in einigen Ausführungsformen eine höhere Schwere der Speicherloch-Fehlform für die Gruppe an. Eine niedrigere Anzahl gibt in einigen Ausführungsformen eine geringere Schwere der Speicherloch-Fehlform für die Gruppe an.
-
In einer Ausführungsform erfolgt in Schritt 806 die Zählung von Speicherzellen mit einer Vt unter Vev. In diesem Beispiel kann der Bereich unter Vev als eine Zone betrachtet werden, die verwendet wird, um die Schwere der Speicherloch-Fehlform in der Gruppe zu bestimmen. Die Anzahl der Zellen in dieser Zone (unter Vev) wird mit der Anzahl der Speicherzellen verglichen, die sich im Löschzustand befinden sollten (d. h. einer Vt unter Vev haben sollten). In einigen Ausführungsformen sollte jeder der Datenzustände (d. h. der Löschzustand und der programmierte Zustand) jeweils die gleiche Zahl von Zellen haben. Wenn beispielsweise acht Datenzustände vorhanden sind, sollte sich 1/8 der Speicherzellen im Löschzustand befinden. Somit kann die Anzahl von Speicherzellen bestimmt werden, die sich im Löschzustand befinden sollten, aber eine Vt über Vev haben. Eine höhere Anzahl gibt eine höhere Schwere der Speicherloch-Fehlform der Gruppe an. Anstatt die Anzahl der Speicherzellen mit einer Vt unter Vev zu zählen, könnte ein anderer Pegel wie Vr1 verwendet werden.
-
Schritt 806 wird in einer Ausführungsform unmittelbar nach dem Programmieren der Speicherzellen in der Gruppe durchgeführt. Mit unmittelbar nach dem Programmieren der Speicherzellen in der Gruppe ist gemeint, dass keine Abtastoperationen dazwischen liegen, die zu Lesestörungen führen könnten, und dass keine andere Gruppe von Speicherzellen programmiert wird, die zu Programmstörungen in der Gruppe führen könnten. Somit vermeidet Schritt 806 in einer Ausführungsform die Auswirkung von Lesestörungen und Programmstörungen (durch Programmieren anderer Gruppen).
-
Schritt 806 bestimmt in einer Ausführungsform eine Anzahl von Löschzustandsspeicherzellen, die infolge der Programmierung der Gruppe programmgestört sind. Das heißt, die Löschzustandszellen sollten von der Programmierung gesperrt sein, wenn die Gruppe programmiert wird. Wenn die Zellen im Löschzustand jedoch nicht ausreichend gesperrt werden, kann dies zu Programmstörungen führen. Solche Speicherzellen werden hierin als programmgestörte Löschzustands-Speicherzellen bezeichnet. Jede der in Schritt 806 beschriebenen Techniken zum Messen von Vts kann verwendet werden, um in einer Ausführungsform eine Anzahl von programmgestörten Speicherzellen mit gelöschtem Zustand zu bestimmen. Das Bestimmen einer Anzahl von programmgestörten Speicherzellen mit gelöschtem Zustand ist jedoch nicht auf die in Schritt 806 beschriebenen Beispiele beschränkt.
-
Schritt 808 schließt das Löschen der Gruppe von Speicherzellen ein. Der Pfeil zwischen den Schritten 806 und 808 ist gestrichelt, um anzugeben, dass zwischen den Schritten 806 und 808 eine signifikante Zeit vergehen kann.
-
Schritt 810 schließt das Programmieren von Speicherzellen in der Gruppe vom Löschzustand in die Vielzahl von programmierten Zuständen unter Verwendung eines oder mehrerer zweiter Programmparameter ein. Der eine oder die mehreren zweiten Programmparameter basieren in einigen Ausführungsformen auf der Schwere der Speicherloch-Fehlform für die Gruppe.
-
In einer Ausführungsform schließt Schritt 810 die Verwendung einer größeren Programmschrittgröße für den einen oder die mehreren zweiten Programmparameter relativ zu dem einen oder den mehreren ersten Programmparametern als Reaktion darauf ein, dass die Schwere der Speicherloch-Fehlform unterhalb eines Schwellenwertes liegt. In einer Ausführungsform ist der Schwellenwert eine Anzahl von Speicherzellen in einer Zone (z. B. Zone 720). In einer Ausführungsform schließt Schritt 810 das Verifizieren eines A-Zustands mit einer Verifizierungsspannung des A-Zustands für den einen oder die mehreren zweiten Programmparameter ein, die niedriger als eine Verifizierungsspannung des A-Zustands für den einen oder die mehreren ersten Programmparameter als Reaktion auf die Schwere Speicherloch-Fehlform, die unterhalb des Schwellenwerts liegt, ist.
-
In einer Ausführungsform schließt Schritt 810 die Verwendung einer kleineren Programmschrittgröße für den einen oder die mehreren zweiten Programmparameter relativ zu dem einen oder den mehreren ersten Programmparametern als Reaktion darauf ein, dass die Schwere der Speicherloch-Fehlform oberhalb eines Schwellenwertes liegt. In einer Ausführungsform ist der Schwellenwert eine Anzahl von Speicherzellen in einer Zone (z. B. Zone 720). In einer Ausführungsform schließt Schritt 810 das Verifizieren eines A-Zustands mit einer Verifizierungsspannung des A-Zustands für den einen oder die mehreren zweiten Programmparameter ein, die höher als eine Verifizierungsspannung des A-Zustands für den einen oder die mehreren ersten Programmparameter als Reaktion auf die Schwere der Speicherloch-Fehlform, die oberhalb des Schwellenwerts liegt, ist.
-
9 ist ein Flussdiagramm einer Ausführungsform eines Prozesses 900, bei dem eine Verifizierungsspannung des A-Zustands basierend auf einer Zählung von Speicherzellen in einer Zone zwischen einer Lösch-Verifizierungsspannung und eine Verifizierungsspannung des A-Zustands eingestellt wird. Verschiedene Schritte in Prozess 900 können in Prozess 800 verwendet werden. Der Prozess 900 kann jedoch unabhängig von Prozess 800 durchgeführt werden. Der Prozess 900 wird in einigen Ausführungsformen von der Zustandsmaschine 112 und/oder der Steuerung 122 (oder gleichwertig funktionierenden Schaltungen) in Kombination mit allen oder einer Teilmenge der anderen in 1 dargestellten Schaltungen durchgeführt werden.
-
Schritt 902 schließt das Löschen einer Gruppe von Speicherzellen ein. Die Speicherzellen werden zu einem gelöschten Zustand (z. B. S0 oder Er) gelöscht. Eine Lösch-Verifizierungsspannung (z. B. VeV) wird während des Löschprozesses verwendet, um zu verifizieren, ob sich die Speicherzellen in dem Löschzustand befinden. Es ist nicht erforderlich, dass jede Speicherzelle in der Gruppe eine Vt unterhalb der Lösch-Verifizierungsspannung hat, damit der Löschprozess abgeschlossen ist. In einigen Ausführungsformen kann eine vorbestimmte Anzahl von Speicherzellen eine Vt über der Lösch-Verifizierungsspannung haben, nachdem das Löschen abgeschlossen ist.
-
Schritt 904 schließt das Programmieren von Speicherzellen vom Löschzustand in eine Vielzahl von programmierten Zuständen unter Verwendung einer Verifizierungsspannung des A-Zustands ein. Die Standard-Verifizierungsspannung des A-Zustands bezieht sich in einigen Ausführungsformen auf eine Spannung, die unabhängig von der Schwere der Speicherloch-Fehlform verwendet wird. Ein Beispiel für die Standard-Verifizierungsspannung des A-Zustands ist Vv1 in jeder der 7A-7D. Schritt 904 kann in einer Ausführungsform von Schritt 804 des Prozesses 800 verwendet werden.
-
Schritt 906 schließt das Bestimmen einer Zählung der Anzahl von Speicherzellen ein, die eine Vt innerhalb einer Zone hat, die zwischen dem Lösch-Verifizierungspegel (Vev) und dem S1-Verifizierungspegel (Vv1) liegt. Die Zone muss nicht die gesamte Lücke zwischen dem Löschverifizierungspregel (Vev) und dem S1-Verifizierungspegel (Vv1) einnehmen. 7B stellt die Zone 720 dar, die für die Zählung in einer Ausführungsform verwendet wird. Zone 720 liegt zwischen Vr1 und Vv1. Die Zone kann basierend auf anderen Referenzspannungen definiert werden. Schritt 906 wird in einer Ausführungsform unmittelbar nach dem Programmieren der Speicherzellen durchgeführt. Somit wird in einer Ausführungsform jeglicher Einfluss einer Lesestörung auf die Speicherzellen vermieden. Schritt 906 kann in einer Ausführungsform von Schritt 806 des Prozesses 800 verwendet werden.
-
Schritt 908 schließt eine Bestimmung ein, wie die Verifizierungsspannung des A-Zustands basierend auf der Zählung einzustellen ist. Der A-Zustands-Verifizierungspegel wird beim nächsten Programmieren dieser Gruppe von Speicherzellen verwendet. Wenn die Zählung relativ niedrig ist (unter einem ersten Schwellenwert T1), wird die Verifizierungsspannung des A-Zustands in Schritt 910 verringert. Ein Beispiel für das Verringern der Verifizierungsspannung des A-Zustands ist das Verringern von Vv1 auf Vv1', wie in 7C dargestellt. Ein Beispiel ist das Verringern der Verifizierungsspannung des A-Zustands um 100 mV gegenüber der Standardspannung. Andere Verifizierungsspannungen können ebenfalls verringert werden. Zum Beispiel werden einer oder mehrere von Vv2-Vv6 jeweils auf Vv2'-Vv6' verringert. Ein Beispiel ist das Verringern der B-Zustands-Verifizierungsspannung um 80 mV gegenüber der Standardspannung, das Verringern der C-Zustands-Verifizierungsspannung um 60 mV gegenüber der Standardspannung, das Verringern der D-Zustands-Verifizierungsspannung um 40 mV gegenüber der Standardspannung und das Verringern der E-Zustands-Verifizierungsspannung um 30 mV gegenüber der Standardspannung, das Verringern der F-Zustands-Verifizierungsspannung um 20 mV gegenüber der Standardspannung und das Belassen der G-Zustands-Verifizierungsspannung als die Standardspannung.
-
Wenn die Zählung relativ hoch ist (über einem zweiten Schwellenwert T2), wird die Verifizierungsspannung des A-Zustands in Schritt 912 erhöht. Ein Beispiel für das Erhöhen der Verifizierungsspannung des A-Zustands ist das Verringern von Vv1 Erhöhung Vv1', wie in 7D dargestellt. Ein Beispiel ist das Erhöhen der Verifizierungsspannung des A-Zustands um 100 mV gegenüber der Standardspannung. Andere Verifizierungsspannungen können ebenfalls erhöht werden. Zum Beispiel werden einer oder mehrere von Vv2-Vv6 jeweils auf Vv2'-Vv6 erhöht. Ein Beispiel ist das Erhöhen der B-Zustands-Verifizierungsspannung um 80 mV gegenüber der Standardspannung, das Erhöhen der C-Zustands-Verifizierungsspannung um 60 mV gegenüber der Standardspannung, das Erhöhen der D-Zustands-Verifizierungsspannung um 40 mV gegenüber der Standardspannung und das Erhöhen der E-Zustands-Verifizierungsspannung um 30 mV gegenüber der Standardspannung, das Erhöhen der F-Zustands-Verifizierungsspannung um 20 mV gegenüber der Standardspannung und das Belassen der G-Zustands-Verifizierungsspannung als die Standardspannung.
-
Wenn die Zählung weder hoch noch niedrig ist (zwischen dem ersten Schwellenwert T1 und dem zweiten Schwellenwert T2), wird die Verifizierungsspannung des A-Zustands in Schritt 914 gleich gehalten. In einer Ausführungsform werden auch andere Verifizierungsspannungen gleich gehalten.
-
Schritt 910 wird in einer Ausführungsform von Schritt 810 des Prozesses 800 durchgeführt (je nach der Zählung). Schritt 912 wird in einer Ausführungsform von Schritt 810 des Prozesses 800 durchgeführt. Beide Schritte 910 und 912 werden in einer Ausführungsform von Schritt 810 des Prozesses 800 durchgeführt (abhängig von der Zählung). Die Schritte 910, 912 und 914 werden in einer Ausführungsform von Schritt 810 des Prozesses 800 durchgeführt (je nach der Zählung).
-
10 ist ein Flussdiagramm einer Ausführungsform eines Prozesses 1000, bei dem die Programmschrittgröße basierend auf einer Zählung von Speicherzellen in einer Zone zwischen einer Lösch-Verifizierungsspannung und einer Verifizierungsspannung des A-Zustands eingestellt wird. Verschiedene Schritte in Prozess 1000 können in Prozess 800 verwendet werden. Der Prozess 1000 kann jedoch unabhängig von Prozess 800 durchgeführt werden. Der Prozess 1000 wird in einigen Ausführungsformen von der Zustandsmaschine 112 und/oder der Steuerung 122 (oder gleichwertig funktionierenden Schaltungen) in Kombination mit allen oder einer Teilmenge der anderen in 1 dargestellten Schaltungen durchgeführt werden.
-
Schritt 1002 schließt das Löschen einer Gruppe von Speicherzellen ein. Die Speicherzellen werden zu einem gelöschten Zustand (z. B. S0 oder Er) gelöscht. Eine Lösch-Verifizierungsspannung (z. B. VeV) wird während des Löschprozesses verwendet, um zu verifizieren, ob sich die Speicherzellen in dem Löschzustand befinden. Es ist nicht erforderlich, dass jede Speicherzelle in der Gruppe eine Vt unterhalb der Lösch-Verifizierungsspannung hat, damit der Löschprozess abgeschlossen ist. In einigen Ausführungsformen kann eine vorbestimmte Anzahl von Speicherzellen eine Vt über der Lösch-Verifizierungsspannung haben, nachdem das Löschen abgeschlossen ist.
-
Schritt 1004 schließt das Programmieren von Speicherzellen vom Löschzustand in eine Vielzahl von programmierten Zuständen unter Verwendung einer Standard-Schrittgröße der Programmspannung ein. Die Standard-Schrittgröße der Programmspannung bezieht sich auf eine Schrittgröße der Programmspannung, die unabhängig von der Schwere der Speicherloch-Fehlform Schritt die Größe verwendet wird. Ein Beispiel für eine Standard-Schrittgröße der Programmspannung ist 0,6 V. Der Standard-Programmspannungsschritt könnte höher oder niedriger sein. Schritt 1004 kann in einer Ausführungsform von Schritt 804 des Prozesses 800 verwendet werden.
-
Schritt 1006 schließt das Bestimmen einer Zählung der Anzahl von Speicherzellen ein, die eine Vt innerhalb einer Zone hat, die zwischen dem Lösch-Verifizierungspegel (Vev) und dem S1-Verifizierungspegel (Vv1) liegt. Die Zone muss nicht die gesamte Lücke zwischen dem Löschverifizierungspregel (Vev) und dem S1-Verifizierungspegel (Vv1) einnehmen. 7B stellt die Zone 720 dar, die für die Zählung in einer Ausführungsform verwendet wird. Zone 720 liegt zwischen Vr1 und Vv1. Die Zone kann basierend auf anderen Referenzspannungen definiert werden. Schritt 1006 wird in einer Ausführungsform unmittelbar nach dem Programmieren der Speicherzellen durchgeführt. Schritt 906 kann in einer Ausführungsform von Schritt 806 des Prozesses 800 verwendet werden.
-
Schritt 1008 schließt eine Bestimmung ein, wie die Schrittgröße der Programmspannung basierend auf der Zählung einzustellen ist. Wenn die Zählung relativ niedrig ist (unter einem ersten Schwellenwert T1), wird die Schrittgröße der Programmspannung in Schritt 1010 erhöht. Ein Beispiel ist das Erhöhen der Schrittgröße der Programmspannung um 0,05 V gegenüber Standard. Beispielsweise könnte die Schrittgröße der Programmspannung von 0,6 V auf 0,65 V erhöht werden. Die Erhöhung könnte größer oder kleiner als 0,05 V sein.
-
Wenn die Zählung relativ hoch ist (über einem zweiten Schwellenwert T2), wird die Schrittgröße der Programmspannung in Schritt 1012 verringert. Ein Beispiel ist das Verringern der Schrittgröße der Programmspannung um 0,05 V gegenüber Standard. Beispielsweise könnte die Schrittgröße der Programmspannung von 0,6 V auf 0,55 V verringert werden. Die Erhöhung könnte größer oder kleiner als 0,05 V sein. Es ist zu beachten, dass die Schwellenwerte T1, T2 den im Prozess 900 verwendeten Schwellenwerten T1, T2 gleichen können oder verschieden davon sein können.
-
Wenn die Zählung weder hoch noch niedrig ist (zwischen dem ersten Schwellenwert T1 und dem zweiten Schwellenwert T2), wird die Schrittgröße der Programmspannung in Schritt 1014 gleich gehalten.
-
Schritt 1010 wird in einer Ausführungsform von Schritt 810 des Prozesses 800 durchgeführt (je nach der Zählung). Schritt 1012 wird in einer Ausführungsform von Schritt 810 des Prozesses 800 durchgeführt. Beide Schritte 1010 und 1012 werden in einer Ausführungsform von Schritt 810 des Prozesses 800 durchgeführt (abhängig von der Zählung). Die Schritte 1010, 1012 und 1014 werden in einer Ausführungsform von Schritt 810 des Prozesses 800 durchgeführt (je nach der Zählung).
-
Die in den Schritten 910-914 des Prozesses 900 durchgeführten Aktionen können mit den Aktionen in den Schritten 1010-1014 des Prozesses 1000 kombiniert werden. Mit anderen Worten können sowohl die Programmschrittgröße als auch eine oder mehrere Verifizierungsspannungen eingestellt werden. 11 ist ein Flussdiagramm einer Ausführungsform eines Prozesses 1100, bei dem sowohl die Programmschrittgröße als auch einer oder mehrere Verifizierungspegel basierend auf einer Zählung von Speicherzellen in einer Zone zwischen einer Löschüberprüfungsspannung und einer A-Zustandsüberprüfungsspannung eingestellt werden. Verschiedene Schritte in Prozess 1100 können in Prozess 800 verwendet werden. Der Prozess 1100 kann jedoch unabhängig von Prozess 800 durchgeführt werden. Der Prozess 1100 wird in einigen Ausführungsformen von der Zustandsmaschine 112 und/oder der Steuerung 122 (oder gleichwertig funktionierenden Schaltungen) in Kombination mit allen oder einer Teilmenge der anderen in 1 dargestellten Schaltungen durchgeführt werden.
-
Schritt 1102 schließt das Löschen einer Gruppe von Speicherzellen ein. Die Speicherzellen werden zu einem gelöschten Zustand (z. B. S0 oder Er) gelöscht. Eine Lösch-Verifizierungsspannung (z. B. VeV) wird während des Löschprozesses verwendet, um zu verifizieren, ob sich die Speicherzellen in dem Löschzustand befinden. Es ist nicht erforderlich, dass jede Speicherzelle in der Gruppe eine Vt unterhalb der Lösch-Verifizierungsspannung hat, damit der Löschprozess abgeschlossen ist. In einigen Ausführungsformen kann eine vorbestimmte Anzahl von Speicherzellen eine Vt über der Lösch-Verifizierungsspannung haben, nachdem das Löschen abgeschlossen ist.
-
Schritt 1104 schließt das Programmieren von Speicherzellen vom Löschzustand in eine Vielzahl von programmierten Zuständen unter Verwendung einer Standard-Schrittgröße der Programmspannung und Standard-Verifizierungsspannungen ein. Beispiele für eine Standard-Schrittgröße der Programmspannung und Standard-Verifizierungsspannungen wurden in Verbindung mit den Schritten 1004 und 904 erörtert.
-
Schritt 1106 schließt das Bestimmen einer Zählung der Anzahl von Speicherzellen ein, die eine Vt innerhalb einer Zone hat, die zwischen dem Lösch-Verifizierungspegel (Vev) und dem S1-Verifizierungspegel (Vv1) liegt. Schritt 1106 wird in einer Ausführungsform unmittelbar nach dem Programmieren der Speicherzellen durchgeführt. Schritt 1106 kann in einer Ausführungsform von Schritt 806 des Prozesses 800 verwendet werden. Ein Beispiel für eine Zählung basierend auf Zone 720 wurde in Verbindung mit den Schritten 906 und 1006 diskutiert.
-
Schritt 1108 schließt eine Bestimmung ein, wie die Schrittgröße der Programmspannung und einer oder mehreren Verifizierungsspannungen basierend auf der Zählung einzustellen ist. Wenn die Zählung relativ niedrig ist (unter einem ersten Schwellenwert T1), wird in Schritt 1110 die Schrittgröße der Programmspannung erhöht und eine oder mehrere Verifizierungsspannungen verringert. Beispiele für das Erhöhen der Spannungsschrittgröße und Verifizierungsspannungen wurden in Verbindung mit den Schritten 1010 und 910 erörtert.
-
Wenn die Zählung relativ hoch ist (über einem zweiten Schwellenwert T2), werden in Schritt 1012 die Schrittgröße der Programmspannung erhöht und eine oder mehrere Verifizierungsspannungen erhöht. Beispiele zum Verringern der Spannungsschrittgröße und zum Verringern er Verifizierungsspannungen wurden in Verbindung mit den Schritten 1012 und 912 erörtert.
-
Wenn die Zählung weder hoch noch niedrig ist (zwischen dem ersten Schwellenwert T1 und dem zweiten Schwellenwert T2), werden die Schrittgröße der Programmspannung und der Verifizierungsspannungen in Schritt 1114 gleich gehalten.
-
Schritt 1110 wird in einer Ausführungsform von Schritt 810 des Prozesses 800 durchgeführt (je nach der Zählung). Schritt 1112 wird in einer Ausführungsform von Schritt 810 des Prozesses 800 durchgeführt. Beide Schritte 1110 und 1112 werden in einer Ausführungsform von Schritt 810 des Prozesses 800 durchgeführt (abhängig von der Zählung). Die Schritte 1110, 1112 und 1114 werden in einer Ausführungsform von Schritt 810 des Prozesses 800 durchgeführt (je nach der Zählung).
-
Eine erste hierin offenbarte Ausführungsform schließt eine Einrichtung ein, die nichtflüchtige Speicherzellen und eine oder mehrere Steuerschaltungen in Kommunikation mit den nichtflüchtigen Speicherzellen aufweist. Die eine oder mehreren Steuerschaltungen sind eingerichtet zum: Programmieren einer Gruppe nichtflüchtiger Speicherzellen unter Verwendung eines ersten Programmparameters von einem Löschzustand zu einer Vielzahl von programmierten Zuständen; Messen von Schwellenspannungen der Gruppe zum Bestimmen einer Schwere der Speicherloch-Fehlform in der Gruppe; und Programmieren der Gruppe von dem Löschzustand in die Vielzahl von programmierten Zuständen unter Verwendung eines zweiten Programmparameters, der basierend auf der Schwere der Speicherloch-Fehlform in der Gruppe ausgewählt wird.
-
In einer zweiten Ausführungsform und als Weiterführung der ersten Ausführungsform sind die eine oder mehreren Steuerschaltungen weiterhin dazu eingerichtet, um eine größere Programmschrittgröße für den zweiten Programmparameter in Bezug auf den ersten Programmparameter als Reaktion auf die Schwere der Speicherloch-Fehlform zu verwenden, die unter einem Schwellenwert liegt.
-
In einer dritten Ausführungsform und als Weiterführung der ersten oder zweiten Ausführungsform sind die eine oder mehreren Steuerschaltungen weiterhin eingerichtet, um eine größere Spannungslücke zwischen einer ersten Verifizierungsspannung für einen niedrigsten der programmierten Zustände und einer zweiten Verifizierungsspannung für einen höchsten der programmierten Zustände in Kombination mit der Verwendung der größeren Programmschrittgröße als Reaktion darauf, dass die Schwere der Speicherloch-Fehlform unter dem Schwellenwert liegt, zu verwenden.
-
In einer vierten Ausführungsform und als Weiterführung einer der ersten bis dritten Ausführungsformen sind die eine oder mehreren Steuerschaltungen weiterhin eingerichtet, um einen A-Zustand der Vielzahl programmierter Zustände mit einer Verifizierungsspannung des A-Zustands für den zweiten Programmparameter zu verifizieren, der niedriger als eine Verifizierungsspannung des A-Zustands für den ersten Programmparameter als Reaktion darauf ist, dass die Schwere der Speicherloch-Fehlform unter einem Schwellenwert liegt.
-
In einer fünften Ausführungsform und als Weiterführung einer der ersten bis vierten Ausführungsformen sind die eine oder mehreren Steuerschaltungen weiterhin dazu eingerichtet, um eine kleinere Programmschrittgröße für den zweiten Programmparameter in Bezug auf den ersten Programmparameter als Reaktion auf die Schwere der Speicherloch-Fehlform zu verwenden, die unter einem Schwellenwert liegt.
-
In einer sechsten Ausführungsform und als Weiterführung einer der ersten bis fünften Ausführungsformen sind die eine oder mehreren Steuerschaltungen weiterhin eingerichtet, um eine kleinere Spannungslücke zwischen einer ersten Verifizierungsspannung für einen niedrigsten der programmierten Zustände und einer zweiten Verifizierungsspannung für einen höchsten der programmierten Zustände in Kombination mit der Verwendung der kleineren Programmschrittgröße als Reaktion darauf, dass die Schwere der Speicherloch-Fehlform über dem Schwellenwert liegt, zu verwenden.
-
In einer siebten Ausführungsform und als Weiterführung einer der ersten bis sechsten Ausführungsformen sind die eine oder mehreren Steuerschaltungen weiterhin eingerichtet, um einen A-Zustand der Vielzahl programmierter Zustände mit einer Verifizierungsspannung des A-Zustands für den zweiten Programmparameter zu verifizieren, der höher als eine Verifizierungsspannung des A-Zustands für den ersten Programmparameter als Reaktion darauf ist, dass die Schwere der Speicherloch-Fehlform über einem Schwellenwert liegt.
-
In einer neunten Ausführungsform und als Weiterführung einer der ersten bis siebten Ausführungsformen sind die eine oder mehreren Steuerschaltungen weiterhin eingerichtet, um die Schwere der Speicherloch-Fehlform in der Gruppe basierend auf einer Anzahl von Speicherzellen mit einer Schwellenspannung in einer Zone zu bestimmen.
-
In einer zehnten Ausführungsform und als Weiterführung jeder der ersten bis neunten Ausführungsformen hat die Speicherloch-Fehlform eine Speicherlochstreifung.
-
In einer elften Ausführungsform und als Weiterentwicklung einer der ersten bis zehnten Ausführungsformen haben die nichtflüchtigen Speicherzellen ringförmige Filme aus Speicherzellenmaterial. Die eine oder die mehreren Steuerschaltungen sind eingerichtet, um eine Schwere der Fehlform der ringförmigen Filme aus Speicherzellenmaterial zu bestimmen.
-
Eine Ausführungsform schließt ein Verfahren zum Betreiben eines nichtflüchtigen Speichers ein. Das Verfahren weist das Löschen einer Gruppe nichtflüchtiger Speicherzellen auf einen Pegel unterhalb einer Löschzustands-Verifizierungsspannung, die eine obere Grenze eines Löschzustands definiert; das Programmieren von Speicherzellen vom Löschzustand in eine Vielzahl von programmierten Zuständen einschließlich des Verifizieren eines A-Zustands mit einer Verifizierungsspannung des A-Zustands; das Bestimmen, unmittelbar nach dem Programmieren der Gruppe, einer Anzahl von Speicherzellen, die sich in einer Zone befinden, die zwischen der Löschzustands-Verifizierungsspannung und der Standard-Verifizierungsspannung des A-Zustands liegt; das Löschen der Gruppe in den Löschzustand nach Bestimmen der Anzahl von Speicherzellen, die sich in der Zone befinden; und das Programmieren der Gruppe vom Löschzustand in die Vielzahl von programmierten Zuständen, einschließlich Verifizieren des A-Zustands mit einer Verifizierungsspannung, die auf der Anzahl von Speicherzellen basiert, die sich in der Zone befinden, auf.
-
Eine Ausführungsform schließt eine nichtflüchtige Speichervorrichtung ein, die Folgendes aufweist: ein dreidimensionales Array, aufweisend Spalten von nichtflüchtigen Speicherzellen; und eine oder mehrere Steuerschaltungen. Die eine oder mehreren Steuerschaltungen sind eingerichtet zum Programmieren einer Gruppe nichtflüchtiger Speicherzellen von einem Löschzustand zu einer Vielzahl von programmierten Zuständen, unter Verwendung einer ersten Schrittgröße der Programmspannung; Bestimmen einer Anzahl von Löschzustandsspeicherzellen, die infolge der Programmierung der Gruppe programmgestört sind; Löschen der Gruppe, nachdem die Gruppe unter Verwendung der ersten Schrittgröße der Programmspannung programmiert wurde; und Programmieren der Gruppe unter Verwendung einer zweiten Schrittgröße der Programmspannung, die auf der Anzahl von programmgestörten Löschzustandsspeicherzellen basiert, wenn die erste Schrittgröße der Programmspannung verwendet wird.
-
Für die Zwecke dieses Dokuments kann eine Bezugnahme in der Beschreibung auf „eine Ausführungsform“, „einige Ausführungsformen“ oder „eine andere Ausführungsform“ verwendet werden, um verschiedene Ausführungsformen oder dieselbe Ausführungsform zu beschreiben.
-
Im Sinne dieses Dokuments kann eine Verbindung eine direkte Verbindung oder eine indirekte Verbindung sein (z. B. über einen oder mehrere andere Teile). In einigen Fällen, wenn ein Element als mit einem anderen Element verbunden oder gekoppelt bezeichnet wird, kann das Element direkt mit dem anderen Element verbunden sein oder indirekt über zwischenliegende Elemente mit dem anderen Element verbunden sein. Wenn ein Element als direkt mit einem anderen Element verbunden bezeichnet wird, gibt es keine Zwischenelemente zwischen dem Element und dem anderen Element. Zwei Vorrichtungen sind „in Kommunikation“, wenn sie direkt oder indirekt miteinander verbunden sind, sodass sie elektronische Signale untereinander übertragen können.
-
Für die Zwecke dieses Dokumentes kann der Begriff „basierend auf“ als „zumindest teilweise basierend auf“ gelesen werden.
-
Für die Zwecke dieses Dokuments impliziert ohne zusätzlichen Kontext die Verwendung numerischer Ausdrücke, wie etwa ein „erstes“ Objekt, ein „zweites“ Objekt und ein „drittes“ Objekt möglicherweise keine Sortierung von Objekten, sondern kann stattdessen zu Identifikationszwecken verwendet werden, um verschiedene Objekte zu identifizieren.
-
Für die Zwecke dieses Dokuments kann sich der Ausdruck „Satz“ von Objekten auf einen „Satz“ von einem oder mehreren der Objekte beziehen.
-
Die vorhergehende detaillierte Beschreibung wurde zu Zwecken der Veranschaulichung und Beschreibung vorgelegt. Sie soll nicht erschöpfend sein oder die genaue offenbarte Form beschränken. Viele Modifikationen und Variationen sind unter Berücksichtigung der vorstehend genannten Lehre möglich. Die beschriebenen Ausführungsformen wurden gewählt, um die Prinzipien der vorgeschlagenen Technologie und ihre praktische Anwendung am besten zu erläutern und damit anderen Fachleuten die Möglichkeit zu geben, sie in verschiedenen Ausführungsformen und mit verschiedenen Modifikationen, die für die jeweilige vorgesehene Verwendung geeignet sind, am besten zu nutzen. Es ist beabsichtigt, dass der Umfang durch die hier beigefügten Ansprüche definiert wird.