-
HINTERGRUND
-
Moderne Speichervorrichtungen erweitern die Grenzen der Fertigungstechnologie, indem sie Speicherzellen in immer kleinere Bereiche packen. Die Dichte der Speicherzellen in einer Speichervorrichtung kann so dicht werden, dass Elektronenverluste zu Speicherausfällen beitragen.
-
Bei Speichervorrichtungen mit hoher Dichte besteht das Problem, dass sie oft eine oder mehrere Fertigungsverbindungen in dem Speicherarray aufweisen. Diese Fertigungsverbindungen ermöglichen eine höhere Dichte von Speicherzellen und damit Speichervorrichtungen mit höherer Kapazität. Leider kann das Vorhandensein einer Fertigungsverbindung zu Problemen führen.
-
Ein bekanntes Problem ist, dass die Fertigungsverbindung Verluste zwischen benachbarten Speicherzeichenketten in einem hochdichten Speicherzellenarray aufweisen kann, insbesondere bei Herstellungsfehlern. Speicherzeichenketten werden hierin auch als „Speicherkanäle“ bezeichnet. Dieser Verlust kann zu Programmierproblemen und/oder ungenauen Ergebnissen beim Programmieren oder Lesen des Speichers führen.
-
US 2016 / 0 351 236 A1 betrifft eine Halbleiterspeichervorrichtung mit Ketten von Speicherzellen, die zwischen Auswahltransistoren gekoppelt sind, wobei eine Schaltung zum Löschen und Programmieren der Auswahltransistoren und der Speicherzellen vorgesehen ist.
US 9 508 441 B1 betrifft eine Speichervorrichtung mit mehreren NAND-Ketten, die mit Wortleitungen verbundene Speicherzellen und mit Auswahlleitungen verbundene Auswahltransistoren aufweisen, wobei während Abschnitten von Programmieroperationen an Auswahlleitungen eine Spannung, die ein negatives Niveau aufweist, angelegt wird.
US 2017 / 0 330 631 A1 betrifft ein Speichersystem mit Blöcken von Speicherzellen, die Daten-Speicherzellen und Blindspeicherzellen einschließen, wobei als Teil von Speicheroperationen eine temperaturabhängige Gate-Spannung an einige oder alle Blindspeicherzellen angelegt wird, um Programmierstörungen zu verringern.
US 9 460 799 B1 betrifft die Wiederherstellung von teilweise programmierten Blöcken eines nichtflüchtigen Speichers.
-
KURZBESCHREIBUNG DER VERSCHIEDENEN ANSICHTEN DER ZEICHNUNGEN
-
Um die Diskussion über ein bestimmtes Element oder eine bestimmte Handlung leicht zu identifizieren, beziehen sich die wichtigsten Ziffern in einem Bezugszeichen auf die Nummer der Figur, in der dieses Element zum ersten Mal eingeführt wird.
- 1 veranschaulicht Speicherkanäle 100 gemäß einer Ausführungsform.
- 2 veranschaulicht ein FLASH-Speicherarray 200 gemäß einer Ausführungsform.
- 3 veranschaulicht einen Programmierprozess für Speicherzellen 300 gemäß einer Ausführungsform.
- 4 veranschaulicht eine Schwellenspannungsverteilung 400 gemäß einer Ausführungsform.
- 5 veranschaulicht einen Speicherkanal-Reparaturprozess 500 gemäß einer Ausführungsform.
- 6 veranschaulicht eine Schwellenspannungsverteilung 600 gemäß einer Ausführungsform.
- 7 veranschaulicht einen Speicherkanal-Reparaturprozess 700 gemäß einer Ausführungsform.
- 8 veranschaulicht einen Speicherkanal-Reparaturprozess 800 gemäß einer Ausführungsform.
- 9 veranschaulicht einen Speicherkanal-Reparaturprozess 900 gemäß einer Ausführungsform.
- 10 ist ein Blockdiagramm einer exemplarischen Speichervorrichtung in einer Ausführungsform.
- 11 veranschaulicht ein Steuersignal 1100 gemäß einer Ausführungsform.
- 12 veranschaulicht ein Steuersignal 1200 gemäß einer Ausführungsform.
-
DETAILLIERTE BESCHREIBUNG
-
Erfindungsgemäß werden eine Speichervorrichtung, eine Steuerung und eine Vorrichtung mit den Merkmalen der unabhängigen Ansprüche bereitgestellt; abhängige Ansprüche betreffen bevorzugte Ausführungsformen. Hierin offenbart sind Ausführungsformen einer Speichervorrichtung, die ein Speicherarray mit einer Fertigungsverbindung aufweist. Eine „Fertigungsverbindung“ ist ein Bereich entlang eines Speicherkanals, der dazu eingerichtet ist, einen Teil des Speicherkanals elektrisch und physikalisch entweder mit einem anderen Teil des Speicherkanals, einem Teil eines anderen Speicherkanals und/oder einer anderen Komponente in einer nichtflüchtigen Speicherstruktur zu verbinden. In bestimmten exemplarischen Ausführungsformen verbindet eine Fertigungsverbindung elektrisch und physikalisch zwei Enden von zwei verschiedenen Speicherkanälen, die jeweils in unterschiedlichen Phasen eines Fertigungsprozesses hergestellt werden. Eine Blindwortleitung ist eine Wortleitung, die mit Speicherzellen verbunden ist, die keine Datenbits speichern (Blindspeicherzellen). Ein Speicherkanal ist ein Weg für den Ladungsfluss, der durch Transistorvorrichtungen in Reihe geschaltet wird. In bestimmten Ausführungsformen verbindet ein Speicherkanal eine Bitleitung und eine Quellleitung elektrisch in einer Speichervorrichtung, wie dargestellt und im Folgenden näher erläutert.
-
Die Speichervorrichtungssteuerung kann dazu eingerichtet werden, eine Erfassungsspannung an eine mit einer Vielzahl von Bitleitungen gekoppelte Wortleitung anzulegen und eine Anzahl von Bitleitungen zu zählen, die eine erste Art von Reaktion auf die Erfassungsspannung aufweisen. Unter der Voraussetzung, dass die Anzahl der Bitleitungen einen eingerichteten Wert überschreitet, werden Speicherzellen auf mindestens einer Blindwortleitung neben der Fertigungsverbindung mit einer bestimmten Schwellenspannung programmiert. Bei einer Schwellenspannung einer transistorbasierten Speicherzelle handelt es sich um eine Gatespannung, oberhalb derer die Speicherzelle Strom zwischen ihrem Quell- und Drain-Bereich leitet.
-
1 zeigt ein Beispiel für einen Zwischenspeicherkanal-Verluststrom für zwei verschiedene Zustände benachbarter Speicherkanäle 100 in einem Speicherarray. Ein Speicherkanal 122 weist eine Kanalvorspannung von 0 V und der andere Speicherkanal 124 weist eine Kanalvorspannung von VBLC, z. B. -0,3 V, auf. Aufgrund eines Herstellungsfehlers sind die beiden Speicherkanäle (schwach) elektrisch miteinander gekoppelt. Der Potenzialgradient zwischen den Kanälen bewirkt, dass Strom (gestrichelte Linie) aus dem Kanal des Speicherkanals 124 in den Kanal des Speicherkanals 122 gelangt. Der Verlust tritt in der Fertigungsverbindung 112 zwischen der oberen Blindwortleitung 110 auf einer Drainseite 104 des Speicherarrays und der unteren Blindwortleitung 108 auf einer Quellseite 102 des Speicherarrays auf. Aufgrund des Verluststroms erkennen die Sensorschaltungen für die Speicherkanäle die falsch programmierten Spannungen an den Speicherzellen der zur Programmierung 106 ausgewählten Wortleitung während der Programmprüfung. Dies kann zu Programmierfehlern für beliebige Speicherzellen auf der Quellseite 102 der Speicherkanäle führen, die vom Zwischenspeicherkanal-Verluststrom betroffen sind.
-
Die obere Blindwortleitung 110 umfasst die Blindspeicherzelle 114 und die Blindspeicherzelle 116. Die untere Blindwortleitung 108 umfasst die Blindspeicherzelle 118 und die Blindspeicherzelle 120. Der Zwischenspeicherkanal-Verluststrom kann durch Anheben der Schwellenspannung einer oder mehrerer dieser Speicherzellen erheblich reduziert werden, wie im Folgenden näher erläutert wird.
-
2 zeigt eine aktuell programmierte Speicherzelle 204, d. h. eine Speicherzelle, die sich im Prozess der Programmierung befindet, in einem FLASH-Speicherarray 200. Es werden verschiedene bekannte Merkmale wie Bitleitungen (Blnx), Quellleitung 202 und Steuergates (Drainseite-Auswahlgate 206 und Quellseite-Auswahlgate 210) dargestellt. Der mit der Bitleitung Bln gekoppelte Speicherkanal 122 ist ungehindert, und die aktuell programmierte Speicherzelle 204 ist mit der zur Programmierung 106 ausgewählten Wortleitung, z. B. WL0, gekoppelt. Die mit den Bitleitungen Bln+1 und Bln+2 usw. gekoppelten Speicherkanäle sind blockiert. Speicherzellen auf der Quellseite 102 befinden sich in dem jeweiligen Zustand, in dem sie zuvor programmiert wurden. Die Speicherzellen auf der Drainseite 104 befinden sich noch im gelöschten Zustand (Er). In diesem Beispiel werden die Blindspeicherzelle 114, die Blindspeicherzelle 116, die Blindspeicherzelle 118 und die Blindspeicherzelle 120 jeweils in einem niederschwelligen Spannungszustand programmiert. Der Potenzialgradient zwischen den Speicherkanälen von BLn+1 und BLn führt zu einer Ladungsmigration 208 und einem Zwischenspeicherkanal-Verluststrom 212. Dies kann die Programmierung von Speicherzellen auf der Quellseite 102 beeinträchtigen.
-
3 ist ein Flussdiagramm, das eine Ausführungsform eines Programmierprozesses für Speicherzellen 300 veranschaulicht. Der Programmierprozess für Speicherzellen 300 kann von einer Steuerung durchgeführt werden, z. B. einer Steuerung in einem Solid-State-Laufwerk (SSD). Bei Block 302 werden die PROGRAMM-Spannung (Vpgm) und der Programmzähler (PC) auf Anfangswerte gesetzt. V(pgm) ist die PROGRAMM-Spannung, die bei dem ersten Durchlauf des Programmierprozesses für Speicherzellen 300 an die ausgewählte Wortleitung angelegt wird. Diese PROGRAMM-Spannung kann während des Prozesses iterativ erhöht werden. Der Programmzähler verfolgt, wie viele Programmimpulse angelegt wurden, sodass die Programmierung abgebrochen werden kann, wenn die Speicherzelle nicht innerhalb einer zulässigen Anzahl von Programmimpulsen arbeitet.
-
In einer Ausführungsform wird bei Block 302 auch ein Anfangswert für die Verstärkungsspannungen festgelegt. Der Wert der Verstärkungsspannungen kann von der Höhe der PROGRAMM-Spannung abhängen. Wenn beispielsweise die PROGRAMM-Spannung während des Prozesses an Größe zunimmt, kann auch die Höhe der Ladespannung angehoben werden.
-
Der Wert der Verstärkungsspannungen kann von der Lage der Wortleitung im Verhältnis zu der für die Programmierung ausgewählten Wortleitung abhängen. Je nach Implementierung ist die Höhe der Verstärkungsspannung (auf einer beliebigen Programmschleife) für Drainseite-Wortleitungen kleiner, größer oder gleich der Verstärkungsspannung für Quellseite-Wortleitungen. Darüber hinaus kann in einigen Implementierungen die Verwendung einer etwas größeren Verstärkungsspannung auf Wortleitungen in der Nähe der ausgewählten Leitung dazu beitragen, den Potenzialgradienten im Speicherzeichenkettenkanal in der Nähe der ausgewählten Wortleitung zu reduzieren und damit das Auftreten von heißen Elektronen im Kanal zu reduzieren.
-
Bei Block 304 werden die Kanäle von programmgesperrten Speicherzeichenketten vorgeladen. Dies wird im Folgenden als Vorladephase bezeichnet. Die Vorladephase kann das Anlegen einer oder mehrerer Vorladespannungen im Kanal der programmgesperrten Speicherzeichenketten einschließen. Die Höhe der Vorladespannung besteht normalerweise nicht gleichmäßig über den gesamten Kanal von der Quellleitung zur Bitleitung. Die Vorladephase kann somit zu einem Potenzialgradienten in einem programmgesperrten Speicherzeichenkettenkanal in der Nähe der zur Programmierung ausgewählten Wortleitung führen.
-
Bei Block 306 wird die Spannung in den Kanälen von programmgesperrten Speicherzeichenketten erhöht (dies kann einfach als „Kanalverstärkung“ bezeichnet werden). Eine programmgesperrte Speicherzeichenkette ist eine, die keine zu programmierende Speicherzelle aufweist. Das heißt, der Programmimpuls, der auf die ausgewählte Wortleitung angewendet werden soll, soll die Schwellenspannung von Speicherzellen auf einer nicht ausgewählten Speicherzeichenkette nicht verändern. Die Verstärkung der Kanäle von programmgesperrten Speicherzeichenketten hilft, Programmstörungen zu vermeiden.
-
Bei Block 308 wird ein Programmimpuls (z. B. Programmierspannung) an die ausgewählte Wortleitung angelegt, während die Kanäle der programmgesperrten Speicherzeichenketten verstärkt werden. Außerdem kann eine „Programmfreigabe“-Spannung an Bitleitungen angelegt werden, die Speicherzeichenketten zugeordnet sind und eine Speicherzelle zum Empfangen der Programmierung aufweisen. Mit dem Empfangen der Programmierung bedeutete dies, dass die Speicherzelle ihre Schwellenspannung verändert haben sollte. Für einige Architekturen könnte die Programmsperrspannung etwa 2,2 V betragen, aber dies kann je nach Design variieren. Bitleitungen, die den zu programmierenden Speicherzellen zugeordnet sind, werden auf einer Programmfreigabespannung gehalten. Für einige Implementierungen könnte die Programmfreigabespannung etwa 0 V betragen, aber dies kann je nach Design variieren.
-
Bei Block 310 wird ein Verifizierungsprozess durchgeführt. Bei dem Entscheidungsblock 312 wird bestimmt, ob die Schwellenspannung einer Speicherzelle so verifiziert wurde, dass sie über der endgültigen Soll-Schwellenspannung, Vverify, wie in 4 dargestellt, für diese Speicherzelle liegt (der Wert, der den Wert darstellt, der in der Speicherzelle gespeichert werden soll). Es ist möglicherweise nicht erforderlich, zu überprüfen, ob die Schwellenspannung jeder Speicherzelle für einen bestimmten Zustand innerhalb des entsprechenden Schwellenspannungsbereichs liegt. Die Fehlerkorrektur kann für einige Speicherzellen, die unter ihrer Soll-Schwellenspannung liegen, korrigierend wirken, Vverify. Die Fehlerkorrektur kann auch für einige Speicherzellen, die überprogrammiert sind, korrigiert werden, z. B. Speicherzellen, die eine Schwellenspannung oberhalb von Vdetect in 4 aufweisen.
-
Wenn die Verifizierung positiv verläuft, ist der Programmiervorgang bei Block 314 erfolgreich abgeschlossen (Status=erfolgreich). Wenn nicht alle Speicherzellen verifiziert sind, wird bestimmt, ob der Programmschleifenzähler (PC) kleiner als ein Maximalwert PC(MAX) ist. Der Wert PC(MAX) kann beispielsweise in einigen Implementierungen zwischen drei und sechs liegen.
-
Wenn der Programmzähler (PC) nicht kleiner als die maximale Anzahl (Entscheidungsblock 316) ist, dann ist der Programmablauf fehlgeschlagen (Block 318). Ist der Programmzähler (PC) kleiner als ein Maximalwert (z. B. 6), so wird der Programmzähler (PC) um 1 erhöht und die Programmierspannung Vpgm auf den nächsten Wert bei Block 320 angehoben. In einigen Ausführungsformen werden die Verstärkungsspannungen auch bei Block 320 erhöht. Nach Block 320 kehrt der Prozess zu Block 304 zurück, um den nächsten Programmimpuls vorzubereiten und auf die ausgewählte Wortleitung anzuwenden.
-
Nach Abschluss des Programmierdurchgangs können die Daten aus den Speicherzellen mit gelesenen Referenzspannungen ausgelesen werden, die innerhalb der programmierten Schwellenspannungsverteilungen der Speicherzellen liegen. Durch Testen, ob die Schwellenspannung einer bestimmten Speicherzelle über oder unter einer oder mehreren der ausgelesenen Referenzspannungen liegt, kann das System den gespeicherten Wert bestimmen, der durch die Schwellenspannung einer Speicherzelle dargestellt wird.
-
Wenn die Speicherzelle aufgrund der zuvor beschriebenen Zwischenspeicherkanal-Verlusteffekte nicht korrekt programmiert ist, hat Vpgm seinen höchsten Wert erreicht und die Schwellenspannung auf der Speicherzelle ist höher als die einer normal programmierten Speicherzelle. Dies führt zu einer Verteilung der Schwellenspannungen an Speicherzellen in einem bestimmten Speicherbereich (z. B. einem FLASH-Speicherblock), wie sie beispielsweise in den Schwellenspannungsverteilungen 400 von 4 dargestellt sind, wenn eine bestimmte Anzahl von Speicherzellen eine höhere Schwellenspannung aufweist als bei einer erfolgreich programmierten Speicherzelle, könnten diese Zellen von Fachleuten als überprogrammierte Speicherzellen bezeichnet werden.
-
Eine Spannung auf einer ausgewählten Wortleitung, die erfolgreich programmierte Speicherzellen veranlassen würde, durch Überwindung ihrer Schwellenspannung Strom zu leiten, führt nicht zu einer Leitung durch Speicherzellen, die aufgrund von Zwischenspeicherkanal-Verlust nicht korrekt programmiert wurden, da die Schwellenspannung dieser letzteren Speicherzellen höher als normal ist und sie als überprogrammierte Zellen bezeichnet werden könnten. Eine an die Wortleitung angelegte Erfassungsspannung Vdetect bewirkt eine Leitung in den erfolgreich programmierten Speicherzellen, nicht aber in den Speicherzellen, die aufgrund von Zwischenspeicherkanal-Verlust nicht korrekt programmiert wurden. Die Spannung Vdetect wird im Folgenden als die an eine Wortleitung angelegte „Erfassungsspannung“ bezeichnet und dient zur Erfassung von Speicherzellen, die aufgrund von Zwischenspeicherkanal-Verlust überprogrammiert sind.
-
5 veranschaulicht einen Speicherkanal-Reparaturprozess 500 in einer Ausführungsform. Das Programmieren von Speicherzellen in einem Speicherblock erfolgt in der Regel von der Quellseite zur Drainseite des Speicherarrays. Eine Erfassungsspannung wird auf eine Wortleitung (Block 502) angewendet, um Speicherkanäle zu erfassen, die von dem Zwischenspeicherkanal-Verlust nicht betroffen waren (erfolgreich programmiert). Anschließend wird eine Zählung vorgenommen (z. B. „Bitscan“), um eine Anzahl von Bitleitungen zu bestimmen, die auf die Erfassungsspannung (Block 504) reagieren. Optional kann der dem Bitscan unterzogene Speicherbereich zunächst mit einem zufälligen Bitmuster (Block 506) programmiert (initialisiert) werden. Der Unterschied zwischen einer Gesamtzahl von Bitleitungen auf der Wortleitung und denen, die auf die Erfassungsspannung reagiert haben, ist die Anzahl der Speicherzellen, die aufgrund von Zwischenspeicherkanal-Verlust nicht korrekt programmiert wurden.
-
Liegt die Zählung (Entscheidungsblock 508) unter einem tolerierbaren Schwellenwert, endet der Prozess ohne Reparatur. Andernfalls wird die Reparatur durchgeführt (Block 510), indem zunächst festgestellt wird, welche Bitleitungen nicht auf die Erfassungsspannung reagiert haben (die „abweichenden Bitleitungen“).
-
Die Daten-Latches für diese abweichenden Bitleitungen können dann (zum Beispiel) auf „0“ gesetzt werden; und die Daten-Latches für andere Bitleitungen entlang der Wortleitung können auf „1“ gesetzt werden (oder den entgegengesetzten logischen Wert von dem, auf was auch immer die Bitleitungen mit hoher Schwellenspannung eingestellt wurden). Bei abweichenden Bitleitungen mit einem entsprechenden Daten-Latch auf „0“ kann die Steuerung die zu programmierenden Bitleitungen als solche im „0“-Zustand (Programmzustand) identifizieren, während alle anderen Bitleitungen in den „1“-Zustand (Sperrzustand) versetzt und nicht programmiert werden.
-
Eine oder mehrere der Speicherzellen entlang der oberen und unteren Blindwortleitungen, neben der Fertigungsverbindung in den abweichenden Bitleitungen, werden dann in einen Spannungszustand mit hoher Schwellenspannung programmiert (Block 512).
-
6 zeigt ein Beispiel für eine Schwellenspannungsverteilung 600 für Speicherzellen auf Blindwortleitungen neben einer Fertigungsverbindung nach dem Speicherkanal-Reparaturprozess 500. Speicherzellen auf den Blindwortleitungen neben der Fertigungsverbindung, auf Speicherkanälen, die von Zwischenspeicherkanal-Verlust nicht betroffen sind, haben die typische Schwellenspannungsverteilung 602 für solche in der Implementierung verwendeten Blindspeicherzellen (diese ist unterschiedlich). Andere Speicherzellen auf den Blindwortleitungen neben der Fertigungsverbindung, auf Speicherkanälen, die von der Zwischenspeicherkanal-Verlust (den abweichenden Bitleitungen) betroffen sind, haben eine höhere Schwellenspannungsverteilung 604. In einer Ausführungsform ist diese höhere Schwellenspannungsverteilung 604 im Durchschnitt etwa 2,5 V höher als bei den Speicherzellen auf den nicht betroffenen Speicherkanälen.
-
Der in 7 dargestellte Speicherkanal-Reparaturprozess 700 veranschaulicht eine mögliche Optimierung, bei der die Erfassung und Reparatur für einen Speicherbereich nur bei der Programmierung einer Wortleitung in der Programmierreihenfolge durchgeführt wird. Diese eine Wortleitung könnte die erste Wortleitung in der Programmierreihenfolge sein, z. B. Wortleitung 0 (siehe Entscheidungsblock 702). Bei anderen Wortleitungen in der Programmierreihenfolge wird die Erfassung/Reparatur nicht durchgeführt.
-
Der in 8 dargestellte Speicherkanal-Reparaturprozess 800 veranschaulicht eine weitere mögliche Optimierung, bei der die Erfassung und Reparatur unter der Voraussetzung erfolgt, dass ein Programmvorgang fehlschlägt (Entscheidungsblock 802). Die Reparatur kann bei einem ersten Programmfehler oder nach einer voreingestellten Anzahl von Programmfehlern im Speicherbereich oder für Speicherzellen in einer bestimmten Wortleitung durchgeführt werden.
-
Der in 9 dargestellte Speicherkanal-Reparaturprozess 900 veranschaulicht eine Variation, bei der ein Programmfehler oder zu viele Programmfehler dazu führen, dass ein Speicherbereich (z. B. Speicherblock) gesichert (Block 902) und vorübergehend als „schlecht“ (Block 904) und nicht verwendbar gekennzeichnet wird. Anschließend wird der Erfassungs- und Reparaturprozess durchgeführt und nach erfolgreichem Abschluss wird der Block als „gut“ für die Verwendung gekennzeichnet (Block 906).
-
10 ist ein Blockdiagramm einer exemplarischen Speichervorrichtung. Die Speichervorrichtung kann einen oder mehrere Speicher-Dies 1004 enthalten. Das Speicher-Die 1004 enthält eine Speicherstruktur 1006 aus Speicherzellen, wie etwa eine Anordnung von Speicherzellen, die hierin als Speicherarray bezeichnet wird, eine Adresssteuerung 1008 und Lese-/Schreibschaltungen 1032. Auf die Speicherstruktur 1006 kann durch Wortleitungen über einen Zeilendecoder 1030 und durch Bitleitungen über einen Spaltendecoder 1034 zugegriffen werden. Die Lese-/Schreibschaltungen 1032 enthalten mehrere Abtastblöcke SB1, SB2, ..., SBp (Abtastschaltungsanordnung) und ermöglichen das parallele Lesen oder Programmieren einer Seite von Speicherzellen. Üblicherweise ist eine Lese-/Schreibsteuerung 1022 in der gleichen Speichervorrichtung (z. B. einer entfernbaren Speicherkarte) wie das eine oder die mehreren Speicher-Dies 1004 enthalten. Befehle und Daten werden zwischen der Host-Vorrichtung 1036 und der Lese-/Schreibsteuerung 1022 über einen Datenbus 1020 und zwischen der Steuerung und einem oder mehreren Speicher-Dies 1004 über die Leitungen 1018 übertragen.
-
Die Speicherstruktur 1006 kann 2D (in einer einzigen Fertigungsebene ausgelegt) oder 3D (in mehreren Fertigungsebenen ausgelegt) sein. Die Speicherstruktur 1006 kann ein oder mehrere Arrays von Speicherzellen aufweisen, einschließlich eines 3D-Arrays. In einer Ausführungsform kann die Speicherstruktur 1006 eine monolithische dreidimensionale Speicherstruktur (3D-Array) aufweisen, in der mehrere Speicherebenen über (und nicht in) einem einzelnen Substrat, wie beispielsweise einem Wafer, ohne dazwischenliegende Substrate ausgebildet sind. Die Speicherstruktur 1006 kann jede Art von nichtflüchtigem Speicher umfassen, der monolithisch in einer oder mehreren physikalischen Ebenen von Arrays von Speicherzellen ausgebildet ist, die über einen aktiven Bereich verfügen, der über einem Siliziumsubstrat angeordnet ist. Die Speicherstruktur 1006 kann sich in einer nichtflüchtigen Speichervorrichtung befinden, die Schaltungen aufweist, die dem Betrieb der Speicherzellen zugeordnet sind, ganz gleich, ob sich die zugehörige Schaltung oberhalb oder innerhalb des Substrats befindet.
-
Die Adresssteuerung 1008 arbeitet mit den Lese-/Schreibschaltungen 1032 zusammen, um Speicheroperationen an Speicherzellen der Speicherstruktur 1006 auszuführen, und schließt eine Zustandsmaschine 1010, einen Adressdecoder 1012, einen Temperaturregler 1038 und eine Leistungssteuerung 1016 ein. Die Zustandsmaschine 1010 stellt eine Steuerung von Speicheroperationen auf Chip-Ebene bereit. Ein Speicherbereichswahlschalter 1014 kann z. B. zum Programmieren von Parametern vorgesehen sein, wie weiter unten beschrieben wird.
-
Der Adressdecoder 1012 stellt eine Adressschnittstelle zwischen der vom Host oder einer Lese-/Schreibsteuerung 1022 verwendeten Adresse und der vom Zeilendecoder 1030 und Spaltendecoder 1034 verwendeten Hardwareadresse bereit. Die Leistungssteuerung 1016 steuert die Leistung und Spannungen, die den verschiedenen Steuerleitungen während des Speicherbetriebs zugeführt werden. Die Leistungssteuerung 1016 und/oder Lese-/Schreibschaltungen 1032 können Treiber für Wortleitungen, Source-Gate-Auswahl-Transistoren (SGS-Transistoren), Drain-Gate-Auswahl-Transistoren (DGS-Transistoren), Bitleitungen, Substrate (in 2D-Speicherstrukturen), Ladepumpen und Quellleitungen einschließen. Die Leistungssteuerung 1016 kann daher verschiedene Erstspannungsgeneratoren (z. B. die Treiber) einschließen, um die hierin beschriebenen Spannungen zu erzeugen. Die Abtastblöcke können Bitleitungstreiber und Abtastverstärker in einem Ansatz einschließen.
-
In einigen Implementierungen können einige der Komponenten kombiniert werden. In verschiedenen Ausführungen können eine oder mehrere der Komponenten (allein oder in Kombination), die sich von der Speicherstruktur 1006 unterscheiden, als mindestens eine Steuerschaltung oder Steuerung betrachtet werden, die zur Durchführung der hierin beschriebenen Techniken eingerichtet ist. Beispielsweise kann eine Steuerschaltung eine beliebige oder eine Kombination aus Adresssteuerung 1008, Zustandsmaschine 1010, Adressdecoder 1012, Spaltendecoder 1034, Leistungssteuerung 1016, Steuerprozessor 1028, Fehlerkorrektureinheit 1002, Leseblöcken SB1, SB2, ..., SBp, Lese-/Schreibschaltungen 1032, Lese-/Schreibsteuerung 1022 und so weiter enthalten.
-
Die Lese-/Schreibsteuerung 1022 kann einen Steuerprozessor 1028, Speichervorrichtungen (Speicher) wie den Nur-Lese-Speicher 1024 und den flüchtigen Speicher 1026 der Steuerung und andere in der Technik bekannte Funktionseinheiten umfassen.
-
Die Speichervorrichtungen der Lese-/Schreibsteuerung 1022 können einen Code umfassen, wie beispielsweise einen Satz von Anweisungen, und der Steuerprozessor 1028 ist betreibbar, um den Satz von Anweisungen auszuführen und Aspekte der hierin beschriebene Funktionalität bereitzustellen. Alternativ oder zusätzlich kann der Steuerprozessor 1028 auf Code aus der Speicherstruktur 1006 zugreifen, wie beispielsweise auf einen reservierten Bereich von Speicherzellen in einer oder mehreren Wortleitungen.
-
Beispielsweise kann Code von der Lese-/Schreibsteuerung 1022 verwendet werden, um auf die Speicherstruktur 1006 für Programmier- (Schreib-), Lese- und Rückstellvorgänge zuzugreifen. Der Code kann Bootcode und Steuercode (z. B. einen Satz von Anweisungen) einschließen. Der Bootcode ist eine Software, die die Lese-/Schreibsteuerung 1022 während eines Boot- oder Startvorgangs initialisiert und der Lese-/Schreibsteuerung 1022 den Zugriff auf die Speicherstruktur 1006 ermöglicht. Der Code kann von der Lese-/Schreibsteuerung 1022 verwendet werden, um eine oder mehrere Speicherstrukturen zu steuern. 11 veranschaulicht exemplarisch die Steuersignale 1100 zur Erfassung von Speicherkanälen, die von Zwischenspeicherkanal-Verlust während der Programmierung betroffen sind, wie hierin in Verbindung mit bestimmten Ausführungsformen beschrieben. 12 veranschaulicht exemplarisch die Steuersignale 1200 zur Durchführung der Speicherkanalreparatur wie hierin in Verbindung mit bestimmten Ausführungsformen beschrieben. Erfahrene Fachleute werden die verschiedenen Signalbezeichnungen und Phasen der dargestellten Programmierung erkennen, und diese müssen nicht weiter ausgearbeitet werden.
-
In einer Ausführungsform ruft der Steuerprozessor 1028 beim Hochfahren den Bootcode aus dem Nur-Lese-Speicher 1024 oder der Speicherstruktur 1006 der Steuerung zur Ausführung ab, und der Bootcode initialisiert die Systemkomponenten und lädt den Steuercode in den flüchtigen Speicher der Steuerung 1026. Sobald der Steuercode in den flüchtigen Speicher der Steuerung 1026 geladen ist, wird er durch den Steuerprozessor 1028 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 zur Konfiguration einer oder mehrerer Steuerungen zur Ausführung der hierin beschriebenen Funktionen enthalten. Zum Beispiel kann der Steuercode einen Sequenzer implementieren, um das Timing (Start- und Stoppzeiten, Dauer, Abstand usw.) der verschiedenen hier beschriebenen Aktionen zu steuern.
-
In einer Ausführungsform ist die Hostvorrichtung 1036 eine Computervorrichtung (z. B. Laptop, Desktop, Smartphone, Tablet, Digitalkamera), die einen oder mehrere Prozessoren, eine oder mehrere prozessorlesbare Speichervorrichtungen (RAM, ROM, Flash-Speicher, Festplattenlaufwerk, Solid State Memory) beinhaltet, die prozessorlesbaren Code (z. B. Software) zum Programmieren der Lese-/Schreibsteuerung 1022 speichern, um die hierin beschriebenen Verfahren auszuführen. Der Host kann auch zusätzlichen Systemspeicher, eine oder mehrere Ein-/Ausgabeschnittstellen und/oder eine oder mehrere Ein-/Ausgabevorrichtungen in Kommunikation mit dem einem oder den mehreren Prozessoren sowie andere in der Technik bekannte Komponenten einschließen.
-
Der Speicherbereichswahlschalter 1014 kann ein nichtflüchtiger Speicher wie ein NAND-Flash-Speicher oder ein anderer Typ sein, der eine Speicherabbildung oder eine Adresstranslationstabelle implementiert. Zugehörige Schaltungen sind üblicherweise für den Betrieb der Speicherelemente und für die Kommunikation mit den Speicherelementen erforderlich. Als nicht einschränkende Beispiele können Speichervorrichtungen Schaltungen aufweisen, die zum Steuern und Treiben von Speicherelementen verwendet werden, um Funktionen wie Programmieren und Lesen auszuführen. Diese zugehörige Schaltung kann sich auf demselben Substrat wie die Speicherelemente und/oder auf einem separaten Substrat befinden. Zum Beispiel kann eine Steuerung für Schreib-/Lesevorgänge des Speichers auf einem separaten Steuerungschip und/oder auf demselben Substrat wie die Speicherelemente angeordnet sein.
-
Ein Fachmann wird erkennen, dass die offenbarten Techniken und Vorrichtungen nicht auf die beschriebenen zweidimensionalen und dreidimensionalen beispielhaften Strukturen beschränkt sind, sondern alle relevanten Speicherstrukturen in dem Geist und Umfang der Technologie abdecken, wie hier beschrieben und wie es von einem Fachmann verstanden wird.
-
Innerhalb dieser Offenbarung können verschiedene Elemente (die unterschiedlich als „Einheiten“, „Schaltkreise“, andere Komponenten usw. bezeichnet werden können) als „eingerichtet“ beschrieben oder beansprucht werden, um eine oder mehrere Aufgaben oder Operationen auszuführen. Diese Formulierung-[Element] eingerichtet zum [Ausführen einer oder mehrerer Aufgaben]-wird hierin verwendet, um sich auf die Struktur zu beziehen (d. h. etwas Physisches, wie eine elektronische Schaltung). Genauer gesagt, wird diese Formulierung verwendet, um anzuzeigen, dass diese Struktur so angeordnet ist, um die eine oder mehreren Aufgaben während des Betriebs durchzuführen. Eine Struktur kann als „eingerichtet“ bezeichnet werden, um eine Aufgabe auszuführen, auch wenn die Struktur momentan nicht betrieben wird. Eine „Kreditverteilungsschaltung, die eingerichtet ist zum Verteilen von Guthaben auf eine Vielzahl von Prozessorkernen“, soll beispielsweise eine integrierte Schaltung abdecken, die über eine Schaltung zum Ausführen dieser Funktion während des Betriebs verfügt, auch wenn die betreffende integrierte Schaltung derzeit nicht verwendet wird (z. B. ist kein Netzteil daran angeschlossen). Somit bezieht sich ein Element, das als „eingerichtet zum“ Durchführen einer Aufgabe beschrieben oder rezitiert wird, auf etwas Physisches, wie z. B. eine Vorrichtung, eine Schaltung, einen Speicher zum Speichern von Programmanweisungen, die zum Durchführen der Aufgabe ausführbar sind usw. Diese Formulierung wird hierin nicht verwendet, um auf etwas Immaterielles hinzuweisen.
-
Der Ausdruck „eingerichtet zum“ bedeutet nicht „konfigurierbar zum.“ Ein unprogrammiertes FPGA zum Beispiel würde nicht als „eingerichtet zum“ Ausführen einer bestimmten Funktion betrachtet werden, obwohl es nach der Programmierung „konfigurierbar zum“ Ausführen dieser Funktion sein kann.
-
Wie hierin verwendet, wird der Ausdruck „basierend auf“ verwendet, um einen oder mehrere Faktoren zu beschreiben, die eine Bestimmung beeinflussen. Dieser Ausdruck schließt nicht die Möglichkeit aus, dass zusätzliche Faktoren die Bestimmung beeinflussen können. Das heißt, eine Bestimmung kann ausschließlich auf bestimmten Faktoren oder auf den bestimmten Faktoren sowie anderen, nicht spezifizierten Faktoren basieren. Betrachten wir die Formulierung „A basierend auf B bestimmen“. Dieser Satz besagt, dass B ein Faktor ist, der zur Bestimmung von A verwendet wird oder der die Bestimmung von A beeinflusst. Dieser Satz schließt nicht aus, dass die Bestimmung von A auch auf einem anderen Faktor, wie beispielsweise C, basieren kann. Diese Formulierung gilt auch für eine Ausführungsform, in der A ausschließlich auf der Grundlage von B bestimmt wird. Wie hierin verwendet, ist die Formulierung „basierend auf“ gleichbedeutend mit der Formulierung „basierend zumindest teilweise auf.“
-
Wie hierin verwendet, beschreibt die Formulierung „als Reaktion auf“ einen oder mehrere Faktoren, die einen Effekt auslösen. Diese Formulierung schließt nicht die Möglichkeit aus, dass zusätzliche Faktoren den Effekt beeinflussen oder anderweitig auslösen können. Das heißt, ein Effekt kann ausschließlich als Reaktion auf diese Faktoren oder als Reaktion auf die festgelegten Faktoren sowie andere, nicht festgelegte Faktoren auftreten. Betrachten wir die Formulierung „A als Reaktion auf B ausführen“. Dieser Satz besagt, dass B ein Faktor ist, der die Leistung von A auslöst. Dieser Satz schließt nicht aus, dass die Ausführung von A auch als Reaktion auf einen anderen Faktor, wie beispielsweise C, erfolgen kann. Diese Formulierung gilt auch für eine Ausführungsform, bei der A ausschließlich als Reaktion auf B ausgeführt wird.
-
Wie hierin verwendet, werden die Begriffe „erste/erster/erstes“, „zweite/zweiter/zweites“ usw. als Bezeichnungen für die anschließenden Substantive verwendet, und implizieren keine Art von Ordnung (z. B. räumlich, zeitlich, logisch usw.), sofern nicht anders angegeben. Beispielsweise können in einer Registerdatei mit acht Registern die Begriffe „erstes Register“ und „zweites Register“ verwendet werden, um auf zwei beliebige der acht Register zu verweisen, und nicht beispielsweise nur auf die logischen Register 0 und 1.
-
Bei der Verwendung in den Ansprüchen wird der Begriff „oder“ als inklusiv und nicht als exklusiv verwendet. Beispielsweise bedeutet die Formulierung „mindestens einer von x, y oder z“ einen von x, y und z sowie eine beliebige Kombination davon.