-
PRIORITÄTSANSPRUCH
-
Die vorliegende Anmeldung beansprucht die Priorität der vorläufigen
US-Patentanmeldung Nr. 63/244,951 mit dem Titel „Plane Level Vertical Compression Scheme“ von Hsu, et al., eingereicht am 16. September 2021, die hiermit beide in vollem Umfang durch Bezugnahme einbezogen werden.
-
HINTERGRUND
-
Die vorliegende Offenbarung bezieht sich auf eine nichtflüchtige Speicherung.
-
Die Verwendung von Halbleiterspeichern in verschiedenen elektronischen Vorrichtungen wie Mobiltelefonen, Digitalkameras, PDAs, medizinischer Elektronik, mobilen Rechenvorrichtungen, Servern, Solid-State-Laufwerken, nicht mobilen Rechenvorrichtungen und anderen Vorrichtungen ist weit verbreitet. Ein Halbleiterspeicher kann einen nichtflüchtigen Speicher oder einen 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. Ein Beispiel für einen nichtflüchtigen Speicher ist ein Flash-Speicher (z. B. Flash-Speicher vom NAND-Typ und NOR-Typ).
-
Benutzer eines nichtflüchtigen Speichers können Daten in den nichtflüchtigen Speicher programmieren (z. B. schreiben) und diese Daten später wieder zurücklesen. Zum Beispiel kann eine Digitalkamera ein Foto aufnehmen und das Foto in einem nichtflüchtigen Speicher speichern. Später kann ein Benutzer der Digitalkamera das Foto betrachten, indem er das Foto aus dem nichtflüchtigen Speicher lesen lässt. Da sich die Benutzer oft auf die gespeicherten Daten verlassen, ist es für die Benutzer von nichtflüchtigen Speichern wichtig, dass die Daten zuverlässig gespeichert werden können, damit sie erfolgreich zurückgelesen werden können.
-
Figurenliste
-
Gleich nummerierte Elemente beziehen sich auf gemeinsame Komponenten in den verschiedenen Figuren.
- 1 ist ein Blockdiagramm, das eine Ausführungsform eines Speicherungssystems zeigt.
- 2A ist ein Blockdiagramm einer Ausführungsform eines Speicherchips.
- 2B ist ein Blockdiagramm einer Ausführungsform einer integrierten Speicherbaugruppe.
- 2C und 2D stellen verschiedene Ausführungsformen von integrierten Speicherbaugruppen dar.
- 3 stellt die Schaltung dar, die zum Abtasten von Daten aus dem nichtflüchtigen Speicher verwendet wird.
- 4 ist eine perspektivische Ansicht eines Abschnitts einer Ausführungsform einer monolithischen dreidimensionalen Speicherstruktur.
- 4A ist ein Blockdiagramm einer Ausführungsform einer Speicherstruktur mit zwei Ebenen.
- 4B stellt eine Draufsicht auf einen Abschnitt einer Ausführungsform eines Blocks von Speicherzellen dar.
- 4C stellt eine Querschnittsansicht eines Abschnitts einer Ausführungsform eines Blocks von Speicherzellen dar.
- 4D stellt eine Querschnittsansicht eines Abschnitts einer Ausführungsform eines Blocks von Speicherzellen dar.
- 4E stellt eine Querschnittsansicht eines Abschnitts einer Ausführungsform eines Blocks von Speicherzellen dar.
- 4F ist eine Querschnittansicht einer Ausführungsform einer vertikalen Spalte von Speicherzellen.
- 4G stellt einen Querschnitt durch ein Speicherloch dar, in dem ein vertikaler NAND-String implementiert ist.
- 4H stellt einen Querschnitt durch ein Speicherloch dar, in dem ein vertikaler NAND-String implementiert ist.
- 4I stellt einen Querschnitt durch ein Speicherloch dar, in dem ein vertikaler NAND-String implementiert ist.
- 4J ist eine schematische Darstellung einer Vielzahl von NAND-Strings in mehreren Unterblöcken desselben Blocks.
- 5A stellt Schwellenspannungsverteilungen dar.
- 5B stellt Schwellenspannungsverteilungen dar.
- 5C stellt Schwellenspannungsverteilungen dar.
- 5D stellt Schwellenspannungsverteilungen dar.
- 5E stellt Schwellenspannungsverteilungen dar.
- 5F stellt Schwellenspannungsverteilungen dar.
- 6 ist ein Flussdiagramm, das eine Ausführungsform eines Prozesses zum Programmieren von nichtflüchtigem Speicher beschreibt.
- 7 veranschaulicht die Überlappung der Verteilung zweier benachbarter Datenzustände und einen Satz von Lesewerten, die zur Bestimmung des Datenzustands einer Zelle und der Zuverlässigkeit einer solchen Lesung verwendet werden können.
- 8 veranschaulicht das Konzept der Hardbits und Softbits.
- 9A und 9B veranschaulichen jeweils die Lesestufen für die Berechnung von Hardbit- und Softbit-Werten für die unteren Seitendaten in einer Ausführungsform mit drei Datenbits pro Speicherzelle.
- 10 veranschaulicht die Zuordnung von Hardbit- und Softbit-Werten und die Lesestufen, die in einer Ausführungsform für effizientes Soft-Abtasten verwendet werden.
- 11 veranschaulicht die Anwendung des effizienten Soft-Abtast-Modus auf untere Seitendaten in einer Ausführungsform mit drei Datenbits pro Speicherzelle unter Verwendung der Codierung von Tabelle 2.
- 12 veranschaulicht eine Ausführungsform für die Abtastvorgänge der Lesevorgänge der unteren Seitendaten in einem effizienten Soft-Abtast-Lesevorgang, der den in 11 veranschaulichten Lesepunkten entspricht.
- 13 veranschaulicht eine Ausführungsform einer Leseverstärkerschaltung, die zur Bestimmung der Hardbit- und Softbit-Werte einer Speicherzelle verwendet werden kann.
- 14 ist eine Ausführungsform für einen effizienten Soft-Abtast-Vorgang.
- 15 ist ein Blockdiagramm einer Ausführungsform für einige Elemente der Steuerschaltung einer Speichervorrichtung, die ein Element zur Softbit-Kompression einschließt.
- 16 und 17 veranschaulichen eine Ausführungsform, bei der eine schnelle Softbit-Kompressionsschaltung in den Datenpfad geschaltet wird.
- 18 ist ein Flussdiagramm für eine Ausführungsform einer schnellen Komprimierungsmethode für Softbit-Daten.
-
DETAILLIERTE BESCHREIBUNG
-
In einigen Speicherungssystemen werden manchmal Fehlerkorrekturverfahren verwendet, die „Softbit“-Daten einschließen. Softbit-Daten stellen Informationen über die Zuverlässigkeit der Standard- oder „Hardbit“-Datenwerte bereit, die zur Unterscheidung zwischen Datenzuständen verwendet werden. Wenn die Datenwerte zum Beispiel auf Schwellenspannungen der Speicherzelle basieren, würde ein Hardbit-Lesevorgang bestimmen, ob die Schwellenspannung einer Speicherzelle über oder unter einem Datenlesewert liegt, um zwischen den gespeicherten Datenzuständen zu unterscheiden. Bei Speicherzellen mit einer Schwellenspannung, die leicht über oder leicht unter diesem Referenzwert liegt, kann dieses Hardbit falsch sein, da sich die Speicherzelle eigentlich im anderen Datenzustand befinden sollte. Um Speicherzellen zu bestimmen, deren Schwellenspannung in der Nähe der Hardbit-Lesestufe liegt und die folglich Hardbit-Werte mit geringerer Zuverlässigkeit aufweisen, kann ein Paar zusätzlicher Lesevorgänge durchgeführt werden, die etwas über und etwas unter die Hardbit-Lesestufe verschoben sind, um Softbit-Werte für die Hardbit-Werte zu erzeugen. Die Verwendung von Softbits kann ein leistungsfähiges Werkzeug sein, um den Dateninhalt von Speicherzellen zu extrahieren. Da jedoch zusätzliche Lesevorgänge erforderlich sind, um die Softbit-Daten zu erhalten, die dann an die Fehlerkorrekturschaltung übertragen werden müssen, wird sie üblicherweise nur dann verwendet, wenn die Daten nicht allein anhand der Hardbit-Werte genau bestimmt werden können.
-
Im Folgenden wird ein effizienter Soft-Abtast-Lesemodus vorgestellt, der weniger Lesewerte für die Erzeugung von Softbit-Daten benötigt und weniger Softbit-Daten erzeugt. Dadurch werden die Leistungs- und Stromverbrauchsverluste, die normalerweise mit der Verwendung von Softbit-Daten verbunden sind, reduziert, so dass der effiziente Soft-Abtast-Modus als Standardlesemodus verwendet werden kann. Im Vergleich zu einer typischen Hardbit-Softbit-Anordnung wird der Lesepunkt für das Hardbit so verschoben, dass der Hardbit-Wert für einen der Datenzustände der Speicherzelle zuverlässig ist, das Hardbit für den anderen Datenzustand jedoch eine größere Anzahl von unzuverlässigen Hardbit-Werten einschließt. Ein einzelner Softbit-Lesevorgang wird durchgeführt, um Zuverlässigkeitsinformationen für den weniger zuverlässigen Hardbit-Wert bereitzustellen, aber nicht für den zuverlässigeren Hardbit-Wert, wodurch sowohl die Anzahl der Lesevorgänge als auch die Menge der resultierenden Daten reduziert wird. Um die Leistung weiterhin zu verbessern, können sowohl das Hardbit-Abtasten als auch das Softbit-Abtasten zu einem einzigen Abtasten kombiniert werden, wie etwa durch Voraufladung eines Knotens eines Leseverstärkers und einmalige Entladung durch eine ausgewählte Speicherzelle, wobei die resultierende Stufe für die einmalige Entladung am Knoten zweimal erfasst wird, einmal für einen Hardbit-Wert und einmal für einen Softbit-Wert.
-
Um die Datenmenge, die von einem Speicher zur Steuerung übertragen werden muss, weiterhin zu reduzieren und die Leistung des Speicherungssystems zu verbessern, können die Softbit-Daten vor der Übertragung komprimiert werden. Bei einer schnellen Komprimierungsmethode werden nach dem Abtasten der Hardbit- und Softbit-Daten, wenn die Softbit-Daten an die Eingabe-Ausgabe-Schnittstelle übertragen werden, werden diese komprimiert und in komprimierter Form übertragen, während die Hardbit-Daten unkomprimiert übertragen werden.
-
1 ist ein Blockdiagramm einer Ausführungsform eines Speicherungssystems 100, in dem die hierin beschriebene vorgeschlagene Technologie implementiert ist. In einer Ausführungsform ist das Speicherungssystem 100 ein Solid-State-Laufwerk („SSD“). Das Speicherungssystem 100 kann auch eine Speicherkarte, ein USB-Laufwerk oder eine andere Art von Speicherungssystem sein. Die vorgeschlagene Technologie ist nicht auf einen einzigen Typ von Speicherungssystem beschränkt. Das Speicherungssystem 100 ist mit dem Host 102 verbunden, der ein Computer, Server, elektronischer Vorrichtung (z. B. Smartphone, Tablet oder andere mobile Vorrichtung), ein Gerät oder eine andere Einrichtung sein kann, das bzw. die Speicher verwendet und Datenverarbeitungsfähigkeiten aufweist. In einigen Ausführungsformen ist der Host 102 von dem Speicherungssystem 100 separiert, aber mit diesem verbunden. In anderen Ausführungsformen ist das Speicherungssystem 100 in den Host 102 eingebettet.
-
Die Komponenten des in 1 dargestellten Speicherungssystems 100 sind elektrische Schaltungen. Das Speicherungssystem 100 schließt eine Speichersteuerung 120, die mit einem nichtflüchtigen Speicher 130 und einem lokalen flüchtigen Hochgeschwindigkeitsspeicher 140 (z. B. DRAM) verbunden ist, ein. Der lokale flüchtige Hochgeschwindigkeitsspeicher 140 wird von der Steuerung 120 verwendet, um bestimmte Funktionen auszuführen. Zum Beispiel speichert der lokale flüchtige Hochgeschwindigkeitsspeicher 140 Tabellen der Übersetzung von logischen Adressen in physische („L2P-Tabellen“).
-
Die Speichersteuerung 120 weist eine Host-Schnittstelle 152 auf, die mit dem Host 102 verbunden ist und mit diesem in Kommunikation steht. In einer Ausführungsform implementiert die Host-Schnittstelle 152 ein NVM Express (NVMe) über PCI Express (PCIe). Andere Schnittstellen können ebenfalls verwendet werden, wie SCSI, SATA usw. Die Host-Schnittstelle 152 ist ebenfalls mit einem Network-on-Chip (NOC) 154 verbunden. Ein NOC ist ein Kommunikationssubsystem auf einer integrierten Schaltung. NOCs können synchrone und asynchrone Taktdomänen umspannen oder eine ungetaktete asynchrone Logik verwenden. Die NOC-Technologie wendet Netzwerktheorie und -verfahren auf On-Chip-Kommunikationen an und bringt beträchtliche Verbesserungen gegenüber herkömmlichen Bus- und Crossbar-Verbindungen. Ein NOC verbessert die Skalierbarkeit von Systemen auf einem Chip (SoC) und die Leistungseffizienz von komplexen SoCs im Vergleich zu anderen Designs. Die Drähte und die Verbindungen des NOC werden von vielen Signalen gemeinsam genutzt. Eine hohe Parallelität wird erreicht, da alle Verbindungen in dem NOC gleichzeitig an unterschiedlichen Datenpaketen arbeiten können. Daher stellt ein NOC, wenn die Komplexität integrierter Subsysteme wächst, eine verbesserte Leistung (wie Durchsatz) und Skalierbarkeit im Vergleich zu früheren Kommunikationsarchitekturen (z. B. dedizierten Punkt-zu-Punkt-Signaldrähten, gemeinsam genutzten Bussen oder segmentierten Bussen mit Brücken) bereit. In anderen Ausführungsformen kann NOC 154 durch einen Bus ersetzt werden. Mit dem NOC 154 verbunden und in Kommunikation mit ihm sind der Prozessor 156, die ECC-Maschine 158, die Speicherschnittstelle 160 und die DRAM-Steuerung 164. Die DRAM-Steuerung 164 wird verwendet, um mit einem lokalen flüchtigen Hochgeschwindigkeitsspeicher 140 (z. B. DRAM) zu arbeiten und damit zu kommunizieren. In anderen Ausführungsformen kann der lokale flüchtige Hochgeschwindigkeitsspeicher 140 ein SRAM oder eine andere Art eines flüchtigen Speichers sein.
-
Die ECC-Maschine 158 führt Fehlerkorrekturdienste durch. Zum Beispiel führt die ECC-Maschine 158 Datencodierung und -decodierung gemäß der implementierten ECC-Technik durch. In einer Ausführungsform ist die ECC-Maschine 158 eine elektrische Schaltung, die durch Software programmiert wird. Zum Beispiel kann die ECC-Maschine 158 ein Prozessor sein, der programmiert werden kann. In anderen Ausführungsformen ist die ECC-Maschine 158 eine kundenspezifische und dedizierte Hardware-Schaltung ohne jegliche Software. In einer anderen Ausführungsform wird die Funktion der ECC-Maschine 158 durch den Prozessor 156 implementiert.
-
Der Prozessor 156 führt die verschiedenen Steuerungsspeichervorgänge wie Programmierung, Löschen, Lesen und Speicherverwaltungsprozesse durch. In einer Ausführungsform wird der Prozessor 156 durch Firmware programmiert. In anderen Ausführungsformen ist der Prozessor 156 eine kundenspezifische und dedizierte Hardware-Schaltung ohne jegliche Software. Der Prozessor 156 implementiert auch ein Übersetzungsmodul, als ein Software/Firmware-Prozess oder als eine dedizierte Hardware-Schaltung. In vielen Systemen wird der nichtflüchtige Speicher innerhalb des Speicherungssystems unter Verwendung von physischen Adressen, verbunden mit einem oder mehreren Speicherchips, adressiert. Jedoch verwendet das Host-System logische Adressen, um die verschiedenen Speicherorte zu adressieren. Dies ermöglicht dem Host, Daten aufeinander folgenden logischen Adressen zuzuweisen, während das Speicherungssystem die Daten an beliebigen Orten des einen oder der mehreren Speicher-Chips frei speichern kann. Um dieses System zu implementieren, führt die Speichersteuerung 120 (z. B. das Übersetzungsmodul) eine Adressübersetzung zwischen den logischen Adressen, die von dem Host verwendet werden, und den physischen Adressen, die von den Speicherchips verwendet werden, durch. Eine beispielhafte Implementierung besteht darin, Tabellen (d. h. die vorstehend erwähnten L2P-Tabellen) beizubehalten, welche die aktuelle Übersetzung zwischen logischen Adressen und physischen Adressen identifizieren. Ein Eintrag in der L2P-Tabelle kann eine Identifizierung einer logischen Adresse und einer entsprechenden physischen Adresse einschließen. Obwohl Tabellen mit einer Zuordnung von logischer Adresse zu physischer Adresse (oder L2P-Tabellen) das Wort „Tabellen“ einschließen, müssen sie nicht tatsächlich Tabellen sein. Die Tabellen mit einer Zuordnung von logischer Adresse zu physischer Adresse (oder L2P-Tabellen) können vielmehr jede Art von Datenstruktur sein. In einigen Beispielen ist der Speicherplatz eines Speicherungssystems so groß, dass der lokale Speicher 140 nicht alle L2P-Tabellen tragen kann. In einem solchen Fall wird der gesamte Satz von L2P-Tabellen in einem Speicherchip 130 gespeichert, und ein Teilsatz der L2P-Tabellen wird in dem lokalen flüchtigen Hochgeschwindigkeitsspeicher 140 zwischengespeichert (L2P-Cache).
-
Die Speicherschnittstelle 160 kommuniziert mit dem nichtflüchtigen Speicher 130. In einer Ausführungsform stellt die Speicherschnittstelle eine Schaltmodus-Schnittstelle bereit. Es können auch andere Schnittstellen verwendet werden. In einigen beispielhaften Implementierungen implementiert die Speicherschnittstelle 160 (oder ein anderer Abschnitt der Steuerung 120) einen Scheduler und Puffer zum Übertragen von Daten an und Empfangen von Daten von einem oder mehreren Speicherchips.
-
In einer Ausführungsform weist der nichtflüchtige Speicher 130 einen oder mehrere Speicherchips auf. 2A ist ein funktionales Blockdiagramm einer Ausführungsform eines Speicherchips 200, der einen nichtflüchtigen Speicher 130 aufweist. Jeder der ein oder mehreren Speicherchips des nichtflüchtigen Speichers 130 kann als Speicherchip 200 aus 2A implementiert werden. Die in 2A dargestellten Komponenten sind elektrische Schaltungen. Der Speicherchip 200 schließt ein Speicherarray 202 ein, das nichtflüchtige Speicherzellen aufweisen kann, wie nachstehend noch ausführlicher beschrieben wird. Die Array-Anschlussleitungen des Speicherarrays 202 schließen die verschiedenen Schichten von Wortleitungen ein, die als Zeilen organisiert sind, und die verschiedenen Schichten von Bitleitungen, die als Spalten organisiert sind. Jedoch können aber auch andere Orientierungen umgesetzt werden. Der Speicherchip 200 schließt eine Zeilensteuerschaltung 220 ein, deren Ausgaben 208 mit den jeweiligen Wortleitungen des Speicherarrays 202 verbunden sind. Die Zeilensteuerschaltung 220 empfängt eine Gruppe von M-Zeilenadressensignalen und ein oder mehrere verschiedene Steuersignale von der Systemsteuerlogikschaltung 260 und kann üblicherweise Schaltungen wie Zeilendecoder 222, Array-Terminal-Treiber 224 und Blockauswahlschaltung 226 sowohl für Lese- als auch für Schreibvorgänge (Programmierung) einschließen. Die Zeilensteuerschaltung 220 kann auch eine Lese-/Schreibschaltung einschließen. Der Speicherchip 200 schließt auch eine Spaltensteuerschaltung 210 mit Leseverstärker(n) 230 ein, deren Eingänge/Ausgänge 206 mit entsprechenden Bitleitungen des Speicherarrays 202 verbunden sind. Obwohl nur ein einziger Block für das Array 202 gezeigt ist, kann ein Speicherchip mehrere Arrays einschließen, auf die einzeln zugegriffen werden kann. Die Spaltensteuerschaltung 210 empfängt eine Gruppe von N Spaltenadresssignalen und eines oder mehrere verschiedene Steuersignale von der Systemsteuerlogik 260 und kann üblicherweise Schaltungen wie Spaltendecoder 212, Array-Anschluss-Empfänger oder Treiberschaltungen 214, Blockauswahlschaltungen 216 sowie Lese-/Schreibschaltungen und E/A-Multiplexer einschließen.
-
Die Systemsteuerlogik 260 empfängt Daten und Befehle von der Speichersteuerung 120 und stellt dem Host Ausgabedaten und einen Status bereit. In einigen Ausführungsformen schließt die Systemsteuerlogik 260 (die eine oder mehrere elektrische Schaltungen aufweist) eine Zustandsmaschine 262 ein, die eine Steuerung von Speichervorgängen auf Chip-Ebene bereitstellt. In einer Ausführungsform ist die Zustandsmaschine 262 durch Software programmierbar. In anderen Ausführungsformen verwendet die Zustandsmaschine 262 keine Software und ist vollständig in die Hardware (z. B. elektrischen Schaltungen) implementiert. In einer anderen Ausführungsform wird die Zustandsmaschine 262 durch einen Mikrocontroller oder Mikroprozessor ersetzt, entweder auf oder außerhalb des Speicherchips. Die Systemsteuerlogik 260 kann auch ein Leistungssteuermodul 264 einschließen, das die Leistung und Spannungen steuert, die den Zeilen und Spalten des Speicherstruktur 202 während der Speichervorgänge zugeführt werden, und kann Ladungspumpen und eine Regelschaltung zum Erzeugen von Regelspannungen einschließen. Die Systemsteuerlogik 260 schließt eine Speicherung 266 (z. B. RAM, Register, Latches usw.) ein, der zum Speichern von Parametern für den Betrieb des Speicherarrays 202 verwendet werden kann.
-
Befehle und Daten werden zwischen der Speichersteuerung 120 und Speicherchip 200 über die Speichersteuerungsschnittstelle 268 (auch als „Kommunikationsschnittstelle“ bezeichnet) übertragen. Die Speichersteuerungsschnittstelle 268 ist eine elektrische Schnittstelle zur Kommunikation mit der Speichersteuerung 120. Beispiele für die Speichersteuerungsschnittstelle 268 schließen eine Umschaltmodus-Schnittstelle und eine Open NAND-Flash-Schnittstelle (ONFI) ein. Es können auch andere E/A-Schnittstellen verwendet werden.
-
In einigen Ausführungsformen können alle Elemente des Speicherchips 200, einschließlich der Systemsteuerlogik 360, als Teil eines einzelnen Chips ausgebildet sein. In anderen Ausführungsformen können ein Teil der oder die gesamte Systemsteuerlogik 260 auf einem anderen Chip ausgebildet sein.
-
In einer Ausführungsform weist die Speicherstruktur 202 ein dreidimensionales Array von nichtflüchtigen Speicherzellen auf, in denen mehrere Speicherebenen über einem einzigen Substrat, wie etwa einem Wafer, ausgebildet sind. Die Speicherstruktur kann jede Art von nichtflüchtigem Speicher aufweisen, der monolithisch in einer oder mehreren physischen Ebenen 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 vertikale NAND-Ketten mit ladungseinfangendem Material auf.
-
In einer anderen Ausführungsform weist die Speicherstruktur 202 ein zweidimensionales Speicherarray von nichtflüchtigen Speicherzellen auf. In einem Beispiel sind die nichtflüchtigen Speicherzellen NAND-Flashspeicherzellen mit Floating-Gates. Andere Arten von Speicherzellen (z. B. NOR-Typ-Flashspeicher) können ebenfalls verwendet werden.
-
Die genaue Art der Speicherarray-Architektur oder der Speicherzelle, die in der Speicherstruktur 202 eingeschlossen ist, ist nicht auf die vorstehenden Beispiele beschränkt. Viele verschiedene Arten von Speicherarray-Architekturen oder Speichertechnologien können verwendet werden, um die Speicherstruktur 202 zu bilden. Es ist keine spezielle nichtflüchtige Speichertechnologie für die Zwecke der neuen beanspruchten Ausführungsformen, die hierin vorgeschlagen werden, erforderlich. Andere Beispiele geeigneter Technologien für Speicherzellen der Speicherstruktur 202 schließen ReRAM-Speicher (resistive Direktzugriffsspeicher), magnetoresistive Speicher (z. B. MRAM, Spin-Transfer-Torque-MRAM, Spin-Orbit-Torque-MRAM), FeRAM, Phasenwechselspeicher (z. B. PCM) und dergleichen ein. Beispiele geeigneter Technologien für die Speicherzellen-Architekturen der Speicherstruktur 202 schließen zweidimensionale Arrays, dreidimensionale Arrays, Kreuzpunktarrays, gestapelte zweidimensionale Arrays, vertikale Bitleitungsarrays und dergleichen ein.
-
Ein Beispiel für einen ReRAM-Kreuzpunktspeicher schließt reversible Widerstandsschaltelemente ein, die in Kreuzpunktarrays angeordnet sind, auf die über X-Leitungen und Y-Leitungen (z. B. Wortleitungen und Bitleitungen) zugegriffen wird. In einer anderen Ausführungsform können die Speicherzellen leitfähige Brückenspeicherelemente einschließen. Ein leitfähiges Brückenspeicherelement kann auch als programmierbare Metallisierungszelle bezeichnet werden. Ein leitfähiges Brückenspeicherelement kann als ein Zustandsänderungselement basierend auf der physikalischen Verlagerung von Ionen innerhalb eines Festelektrolyten verwendet werden. In einigen Fällen kann ein leitfähiges Brückenspeicherelement zwei feste Metallelektroden einschließen, eine relativ inerte (z. B. Wolfram) und die andere elektrochemisch aktive (z. B. Silber oder Kupfer), mit einer dünnen Folie des Festelektrolyten zwischen den beiden Elektroden. Mit steigender Temperatur steigt auch die Mobilität der Ionen, was bewirkt, dass die Programmierschwelle für die leitfähige Brückenspeicherzelle abnimmt. Somit kann das leitfähige Brückenspeicherelement einen weiten Bereich von Programmierschwellen als Funktion der Temperatur aufweisen.
-
Ein weiteres Beispiel ist ein magnetoresistiver Direktzugriffsspeicher (MRAM), der Daten durch magnetische Speicherungselemente speichert. Die Elemente sind aus zwei durch eine dünne Isolierschicht getrennte ferromagnetischen Schichten gebildet, von denen jede eine Magnetisierung halten kann. Eine der beiden Schichten ist ein Permanentmagnet, der auf eine bestimmte Polarität eingestellt ist; die Magnetisierung der anderen Schicht kann so geändert werden, dass sie der eines externen Felds zur Speicherung von Speichern entspricht. Eine Speichervorrichtung wird aus einem Gitter solcher Speicherzellen aufgebaut. Bei einer Ausführungsform zum Programmieren liegt jede Speicherzelle zwischen einem Paar von Schreibleitungen, die in rechten Winkeln zueinander parallel zu der Zelle angeordnet sind, eine über und eine unter der Zelle. Wenn Strom durch sie fließt, wird ein Induktionsmagnetfeld erzeugt. MRAM-basierte Speicherausführungsformen werden nachstehend ausführlicher erörtert.
-
Phasenänderungsspeicher (PCM) nutzen das einzigartige Verhalten von Chalkogenidglas aus. Eine Ausführungsform verwendet ein GeTe-Sb2Te3-Übergitter, um nichtthermische Phasenänderungen zu erreichen, indem einfach der Koordinationszustand der Germaniumatome mit einem Laserimpuls (oder Lichtimpuls von einer anderen Quelle) geändert wird. Daher sind die Dosen der Programmierung Laserimpulse. Die Speicherzellen können gesperrt werden, indem die Speicherzellen daran gehindert werden, das Licht zu empfangen. In anderen PCM-Ausführungsformen werden die Speicherzellen durch Stromimpulse programmiert. Es sei darauf hingewiesen, dass die Verwendung von „Impuls“ in diesem Dokument keinen Rechteckimpuls erfordert, sondern eine (kontinuierliche oder nicht kontinuierliche) Schwingung oder einen Stoß eines Schalls, Stroms, Spannungslichts oder einer anderen Welle einschließt. Diese Speicherelemente innerhalb der einzelnen auswählbaren Speicherzellen oder Bits können ein weiteres Reihenelement einschließen, das ein Selektor ist, wie beispielsweise ein ovonischer Schwellwertschalter oder ein Metall-Isolator-Substrat.
-
Der Durchschnittsfachmann wird erkennen, dass die hierin beschriebene Technologie nicht auf eine einzige spezifische Speicherstruktur, Speicherkonstruktion oder Materialzusammensetzung beschränkt ist, sondern viele relevante Speicherstrukturen gemäß dem Geist und Umfang der Technologie, wie hierin beschrieben und wie einem Fachmann bekannt, abdeckt.
-
Die Elemente von 2A lassen sich in zwei Teile gliedern: (1) die Speicherstruktur 202 und (2) die periphere Schaltung, die alle in 2A dargestellten Komponenten mit Ausnahme der Speicherstruktur 202 einschließt. Eine wichtige Eigenschaft einer Speicherschaltung ist ihre Kapazität, die durch Vergrößerung der Fläche des Speicherchips des Speicherungssystems 100, die der Speicherstruktur 202 zugewiesen ist, erhöht werden kann; dies reduziert jedoch die für die periphere Schaltung verfügbare Fläche auf dem Speicherchip. Dies kann recht erhebliche Einschränkungen für diese periphere Schaltung bedeuten. Zum Beispiel kann die Notwendigkeit, Leseverstärkerschaltungen in die verfügbare Fläche einzupassen, eine erhebliche Einschränkung für Leseverstärker-Designarchitekturen darstellen. In Bezug auf die Systemsteuerlogik 260 kann eine reduzierte Verfügbarkeit von Fläche die verfügbaren Funktionalitäten einschränken, die auf dem Chip implementiert werden können. Folglich besteht ein grundlegender Kompromiss bei der Entwicklung eines Speicherchips für das Speicherungssystem 100 darin, wie viel Fläche für die Speicherstruktur 202 und wie viel Fläche für die periphere Schaltung zur Verfügung steht.
-
Ein weiterer Bereich, in dem die Speicherstruktur 202 und die periphere Schaltung oft im Widerspruch zueinander stehen, ist der Prozess, der mit der Bildung dieser Bereiche verbunden ist, da diese Bereiche oft unterschiedliche Verarbeitungstechnologien und den Kompromiss, unterschiedliche Technologien auf einem einzigen Chip aufzuweisen, beinhalten. Wenn es sich bei der Speicherstruktur 202 beispielsweise um NAND-Flash handelt, ist dies eine NMOS-Struktur, während die periphere Schaltung häufig auf CMOS basiert. Elemente wie Leseverstärkerschaltungen, Ladungspumpen, Logikelemente in einem Zustandsautomaten und andere periphere Schaltung in der Systemsteuerlogik 260 verwenden zum Beispiel häufig PMOS-Vorrichtungen. Verarbeitungsvorgänge zum Herstellen eines CMOS-Chips werden sich in vielen Aspekten von den Verarbeitungsvorgängen unterscheiden, die für einen NMOS-Flash-NAND-Speicher oder andere Speicherzellentechnologien optimiert sind.
-
Um diese Einschränkungen zu verbessern, können die nachstehend beschriebenen Ausführungsformen die Elemente von 2A auf separat gebildete Chips aufteilen, die dann miteinander verbunden werden. Insbesondere kann die Speicherstruktur 202 auf einem Chip (als Speicherchip bezeichnet) und einige oder alle Elemente der peripheren Schaltung, einschließlich einer oder mehrerer Steuerschaltungen, auf einem separaten Chip (als Steuerchip bezeichnet) ausgebildet sein. Zum Beispiel kann ein Speicherchip nur aus den Speicherelementen gebildet sein, wie z. B. dem Array von Speicherzellen eines Flash-NAND-Speichers, eines MRAM-Speichers, eines PCM-Speichers, eines ReRAM-Speichers oder eines anderen Speichertyps. Einige oder alle peripheren Schaltungen, sogar einschließlich Elementen wie Decoder und Leseverstärker, können dann auf einen separaten Steuerchip verlegt werden. Dadurch kann jeder der Speicherchips individuell entsprechend seiner Technologie optimiert werden. Zum Beispiel kann ein NAND-Speicherchip für eine NMOS-basierte Speicherarraystruktur optimiert werden, ohne sich um die CMOS-Elemente zu kümmern, die nun auf einen Steuerchip bewegt wurden, der für die CMOS-Verarbeitung optimiert werden kann. Dies ermöglicht mehr Platz für die peripheren Elemente, die nun zusätzliche Fähigkeiten aufnehmen können, die nicht ohne weiteres aufgenommen werden könnten, wenn sie auf die Ränder desselben Chips beschränkt wären, der das Speicherzellenarray enthält. Die zwei Chips können dann in einer gebondeten Multi-Chip-Speicherschaltung miteinander gebondet werden, wobei das Array auf dem einen Chip mit den peripheren Elementen auf dem anderen Chip verbunden ist. Obwohl im Folgenden der Fokus auf einer gebondeten Speicherschaltung mit einem Speicherchip und einem Steuerchip liegt, können andere Ausführungsformen mehr Chips verwenden, beispielsweise zwei Speicherchips und einen Steuerchip.
-
2B zeigt eine alternative Anordnung zu 2A, die durch Wafer-to-Wafer-Bonden implementiert werden kann, um ein verbundenes Chip-Paar bereitzustellen. 2B zeigt ein funktionales Blockdiagramm einer Ausführungsform einer integrierten Speicherbaugruppe 207. Eine oder mehrere integrierte Speicheranordnungen 207 können verwendet werden, um den nichtflüchtigen Speicher 130 des Speicherungssystems 100 zu implementieren. Die integrierte Speicheranordnung 307 schließt zwei Arten von Halbleiterchips ein (oder kürzer „Chips“). Der Speicherchip 201 schließt die Speicherstruktur 202 ein. Die Speicherstruktur 202 schließt nichtflüchtige Speicherzellen ein. Der Steuerchip 211 schließt eine Steuerschaltung 260, 210 und 220 (wie oben beschrieben) ein. In einigen Ausführungsformen ist der Steuerchip 211 konfiguriert, um sich mit der Speicherstruktur 202 in dem Speicherchip 201 zu verbinden. In einigen Ausführungsformen sind der Speicherchip 201 und der Steuerchip 211 miteinander verbunden.
-
2B zeigt ein Beispiel für die periphere Schaltung, einschließlich der Steuerschaltungen, die in einer peripheren Schaltung oder einem Chip 311 ausgebildet sind, der mit der Speicherstruktur 202 im Speicherchip 201 gekoppelt ist. Gemeinsame Komponenten sind ähnlich wie in 2A gekennzeichnet. Die Systemsteuerlogik 260, die Zeilensteuerschaltung 220 und die Spaltensteuerschaltung 210 befinden sich im Steuerchip 211. In einigen Ausführungsformen befinden sich die gesamte oder ein Teil der Spaltensteuerschaltlogik 210 und die gesamte oder ein Teil der Zeilensteuerschaltlogik 220 auf dem Speicherchip 201. In einigen Ausführungsformen befindet sich ein Teil der Schaltung der Systemsteuerlogik 260 auf dem Speicherchip 201.
-
Die Systemsteuerlogik 260, die Zeilensteuerschaltung 220 und die Spaltensteuerschaltung 210 können in einem gemeinsamen Prozess (z. B. CMOS-Prozess) hergestellt werden, so dass das Hinzufügen von Elementen und Funktionen, wie etwa ECC, die üblicherweise in einer Speichersteuerung 120 zu finden sind, nur wenige oder gar keine zusätzlichen Prozessschritte erfordert (d. h. dieselben Prozessschritte, die zur Herstellung der Steuerung 120 verwendet werden, können auch zur Herstellung der Systemsteuerlogik 260, der Zeilensteuerschaltung 220 und der Spaltensteuerschaltung 210 verwendet werden). Während das Verschieben solcher Schaltungen von einem Chip, wie beispielsweise dem Speicher 2 Chip 201, die Anzahl der für die Herstellung eines solchen Chips erforderlichen Schritte reduzieren kann, erfordert das Hinzufügen solcher Schaltungen zu einem Chip, wie beispielsweise dem Steuerchip 311, somit nicht viele zusätzliche Prozessschritte. Der Steuerchip 211 kann auch als CMOS-Chip bezeichnet werden, da die CMOS-Technologie verwendet wird, um einige oder alle Steuerschaltungen 260, 210, 220 zu implementieren.
-
2B zeigt eine Spaltensteuerschaltung 210 mit Leseverstärker(n) 230 auf dem Steuerchip 211, die über elektrische Pfade 206 mit der Speicherstruktur 202 auf dem Speicherchip 201 verbunden ist. Zum Beispiel können die elektrischen Pfade 206 eine elektrische Verbindung zwischen dem Spaltendecoder 212, der Treiberschaltung 214 und der Blockauswahl 216 und den Bitleitungen der Speicherstruktur 202 bereitstellen. Elektrische Pfade können sich von der Spaltensteuerschaltung 210 im Steuerschaltungschip 211 durch Pads auf dem Steuerschaltungschip 211 erstrecken, die mit entsprechenden Pads des Speicherchips 201 verbunden sind, die mit Bitleitungen der Speicherstruktur 202 verbunden sind. Jede Bitleitung der Speicherstruktur 202 kann einen entsprechenden elektrischen Pfad in den elektrischen Pfaden 206 aufweisen, der ein Paar Bondpads einschließt, das mit der Spaltensteuerschaltung 210 verbunden ist. In ähnlicher Art und Weise ist die Zeilensteuerungsschaltlogik 220, einschließlich des Zeilendecodierers 222, der Arraytreiber 224 und der Blockauswahl 226, über elektrische Pfade 208 mit der Speicherstruktur 202 gekoppelt. Jeder der elektrischen Pfade 208 kann einer Wortleitung, einer Dummy-Wortleitung oder einer Auswahl-Gate-Leitung entsprechen. Zusätzliche elektrische Pfade können auch zwischen Steuerchip 211 und Arraychip 201 bereitgestellt werden.
-
Für die Zwecke dieses Dokuments können die Ausdrücke „eine Steuerschaltung“ oder „eine oder mehrere Steuerschaltungen“ eine beliebige Kombination aus der Speichersteuerung 120, der Zustandsmaschine 262, der gesamten oder einem Abschnitt der Systemsteuerlogik 260, der gesamten oder einem Abschnitt der Zeilensteuerschaltung 220, der gesamten oder einem Abschnitt der Spaltensteuerschaltung 210, einem Mikrocontroller, einem Mikroprozessor und/oder anderen Schaltungen mit ähnlichen Funktionen einschließen. Die Steuerschaltung 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 Steuerschaltung kann einen Prozessor, FGA, ASIC, eine integrierte Schaltung oder eine andere Art von Schaltung einschließen.
-
In einigen Ausführungsformen gibt es mehr als einen Steuerchip 211 und mehr als einen Speicherchip 201 in einer integrierten Speicherbaugruppe 207. In einigen Ausführungsformen schließt die integrierte Speicherbaugruppe 207 einen Stapel aus mehreren Steuerchips 211 und mehreren Speicherchips 201 ein. 2C zeigt eine Seitenansicht einer Ausführungsform einer integrierten Speicherbaugruppe 207, die auf einem Substrat 271 gestapelt ist (z. B. ein Stapel, der Steuerchips 211 und Speicherchips 201 aufweist). Die integrierte Speicherbaugruppe 207 weist drei Steuerchips 211 und drei Speicherchips 201 auf. In einigen Ausführungsformen gibt es mehr als drei Speicherchips 201 und mehr als drei Steuerchips 211.
-
Jeder Steuerchip 211 ist mit einem der Speicherchips 201 verbunden (z. B. gebondet). Einige der Bondpads 282/284 sind dargestellt. Es kann viel mehr Bondpads geben. Ein Raum zwischen zwei Chips 201, 211, die zusammengebondet sind, ist mit einer festen Schicht 280 gefüllt, die aus Epoxid oder einem anderen Harz oder Polymer gebildet sein kann. Diese feste Schicht 280 schützt die elektrischen Verbindungen zwischen den Chips 201, 211 und befestigt die Chips weiter miteinander. Als feste Schicht 280 können verschiedene Materialien verwendet werden, in Ausführungsformen kann es sich jedoch um Hysol-Epoxidharz der Henkel Corp. mit Sitz in Kalifornien, USA, handeln.
-
Die integrierte Speicherbaugruppe 207 kann zum Beispiel mit einem gestuften Versatz gestapelt werden, wobei die Bondpads auf jeder Ebene unbedeckt und von oben zugänglich bleiben. Drahtbonds 270, die mit den Bondpads verbunden sind, verbinden den Steuerchip 211 mit dem Substrat 271. Eine Anzahl solcher Drahtbonds kann über die Breite jedes Steuerchips 211 (d. h. in die Seite der 2C) gebildet werden.
-
Eine Siliziumdurchkontaktierung (TSV) des Speicherchips 276 kann verwendet werden, um Signale durch einen Speicherchip 201 zu leiten. Eine Siliziumdurchkontaktierung (TSV) des Steuerchips 278 kann verwendet werden, um Signale durch einen Steuerchip 211 zu leiten. Die TSVs 276, 278 können vor, während oder nach der Bildung der integrierten Schaltungen in den Halbleiterchips 201, 211 gebildet werden. Die TSV können durch Ätzen von Löchern durch die Wafer gebildet werden. Die Löcher können dann mit einer Barriere gegen Metalldiffusion ausgekleidet werden. Die Sperrschicht kann wiederum mit einer Impfschicht ausgekleidet sein, und die Impfschicht kann mit einem elektrischen Leiter wie Kupfer beschichtet sein, obwohl andere geeignete Materialien wie Aluminium, Zinn, Nickel, Gold, dotiertes Polysilicium und Legierungen oder Kombinationen davon verwendet werden können.
-
Die Lötkugeln 272 können optional an den Kontaktflächen 274 auf der Unterseite des Substrats 271 befestigt werden. Die Lötkugeln 272 können verwendet werden, um die integrierte Speicherbaugruppe 207 elektrisch und mechanisch mit einer Hostvorrichtung, beispielsweise einer Leiterplatte, zu koppeln. Lötkugeln 272 können weggelassen werden, wenn die integrierte Speicherbaugruppe 207 als LGA-Gehäuse verwendet werden soll. Lötkugeln 272 können einen Teil der Schnittstelle zwischen der integrierten Speicherbaugruppe 207 und der Speichersteuerung 120 bilden.
-
2D zeigt eine Seitenansicht einer anderen Ausführungsform einer integrierten Speicherbaugruppe 207, die auf ein Substrat 271 gestapelt ist. Die integrierte Speicherbaugruppe 207 von 2D weist drei Steuerchips 211 und drei Speicherchips 201 auf. In einigen Ausführungsformen gibt es viel mehr als drei Speicherchips 201 und viel mehr als drei Steuerchips 211. In diesem Beispiel ist jeder Steuerchip 211 mit mindestens einem Speicherchip 201 verbunden. Optional kann ein Steuerchip 211 mit zwei oder mehr Speicherchips 201 verbunden sein.
-
Einige der Bondpads 282, 284 sind dargestellt. Es kann viel mehr Bondpads geben. Ein Raum zwischen zwei Chips 201, 211, die zusammengebondet sind, ist mit einer festen Schicht 280 gefüllt, die aus Epoxid oder einem anderen Harz oder Polymer gebildet sein kann. Im Gegensatz zu dem Beispiel in 2C hat die integrierte Speicherbaugruppe 207 in 2D keinen gestuften Versatz. Eine Siliziumdurchkontaktierung (TSV) des Speicherchips 276 kann verwendet werden, um Signale durch einen Speicherchip 201 zu leiten. Eine Siliziumdurchkontaktierung (TSV) des Steuerchips 278 kann verwendet werden, um Signale durch einen Steuerchip 211 zu leiten.
-
Die Lötkugeln 272 können optional an den Kontaktflächen 274 auf der Unterseite des Substrats 271 befestigt werden. Die Lötkugeln 272 können verwendet werden, um die integrierte Speicherbaugruppe 207 elektrisch und mechanisch mit einer Hostvorrichtung, beispielsweise einer Leiterplatte, zu koppeln. Lötkugeln 272 können weggelassen werden, wenn die integrierte Speicherbaugruppe 207 als LGA-Gehäuse verwendet werden soll.
-
Wie oben kurz erörtert, können der Steuerchip 211 und der Speicherchip 201 miteinander verbunden sein. Bondpads auf jedem Chip 201, 211 können zum Verbinden miteinander der beiden Chips verwendet werden. In einigen Ausführungsformen werden die Bondkontaktstellen in einem sogenannten Cu-zu-Cu-Bindungsprozess ohne Lötmittel oder anderes zugesetztes Material direkt miteinander verbunden. Bei einem Cu-zu-Cu-Bindungsprozess werden die Bondpads so gesteuert, dass sie sehr eben sind und in einer stark gesteuerten Umgebung gebildet werden, die weitgehend frei von Umgebungspartikeln ist, die sich sonst auf einem Bondpad absetzen und eine enge Bindung verhindern könnten. Unter solchen angemessen gesteuerten Bedingungen werden die Bondpads ausgerichtet und gegeneinander gepresst, um eine gegenseitige Bindung basierend auf der Oberflächenspannung zu bilden. Solche Bindungen können bei Raumtemperatur gebildet werden, obwohl auch Wärme angewendet werden kann. Bei Ausführungsformen unter Verwendung von Cu-Cu-Bindung können die Bondpads etwa 5 µm im Quadrat und mit einem Pitch von 5 µm zu 5 µm zueinander beabstandet sein. Obschon dieser Prozess hierin als Cu-zu-Cu-Bindung bezeichnet wird, kann dieser Begriff sogar dann gelten, wenn die Bondpads aus anderen Materialien als Cu gebildet sind.
-
Wenn die Fläche der Bondpads klein ist, kann es schwierig sein, die Halbleiterchips miteinander zu verbinden. Die Größe der, und der Abstand zwischen den, Bondpads können weiter verringert werden, indem eine Filmschicht auf den Oberflächen der Halbleiterchips einschließlich der Bondpads bereitgestellt wird. Die Filmschicht ist um die Bondpads herum bereitgestellt. Wenn die Chips zusammengebracht werden, können sich die Bondpads miteinander verbinden, und die Filmschichten auf den jeweiligen Chips können sich miteinander verbinden. Eine solche Bindungstechnik kann als Hybridbindung bezeichnet werden. Bei Ausführungsformen unter Verwendung von Hybrid-Verbindungen können die Bondpads etwa 5 µm im Quadrat und mit einem Pitch von 1 µm bis 5 µm zueinander beabstandet sein. Verbindungstechniken können verwendet werden, um Bondpads mit noch kleineren Größen und Pitches bereitzustellen.
-
Einige Ausführungsformen können eine Folie auf der Oberfläche der Chips 201, 211 einschließen. Wenn anfänglich kein solcher Film bereitgestellt ist, kann ein Raum zwischen den Chips mit einem Epoxidharz oder einem anderen Harz oder Polymer unterfüllt werden. Das Unterfüllmaterial kann als Flüssigkeit aufgebracht werden, die dann zu einer festen Schicht aushärtet. Dieser Unterfüllungsschritt schützt die elektrischen Verbindungen zwischen den Chips 201, 211 und befestigt die Chips weiter miteinander. Verschiedene Materialien können als Unterfüllmaterial verwendet werden, aber in Ausführungsformen kann es sich um Hysol-Epoxidharz von Henkel Corp. handeln, die Niederlassungen in Kalifornien, USA, hat.
-
3 ist ein Blockdiagramm, das eine Ausführungsform eines Abschnitts der Spaltensteuerschaltung 210 zeigt, der in eine Vielzahl von Leseverstärkern 230 und einen gemeinsamen Abschnitt, der als Verwaltungsschaltung 302 bezeichnet wird, unterteilt ist. In einer Ausführungsform ist jeder Leseverstärker 230 mit einer entsprechenden Bitleitung verbunden, die wiederum mit einem oder mehreren NAND-Strings verbunden ist. In einer beispielhaften Implementierung ist jede Bitleitung mit sechs NAND-Strings verbunden, mit einem NAND-String pro Unterblock. Die Verwaltungsschaltung 302 ist mit einem Satz von mehreren (z. B. vier, acht usw.) Leseverstärkern 230 verbunden. Jeder der Leseverstärker 230 einer Gruppe kommuniziert über den Datenbus 304 mit der zugehörigen Verwaltungsschaltung.
-
Jeder Leseverstärker 230 stellt während der Vorgänge Programmieren, Verifizieren, Löschen und Lesen Spannungen für die Bitleitungen (siehe BL0, BL1. BL2. BL3) bereit. Leseverstärker werden auch verwendet, um den Zustand (z. B. den Datenzustand) einer Speicherzelle in einem NAND-String abzutasten, der mit der Bitleitung verbunden ist, die mit dem jeweiligen Leseverstärker verbunden ist.
-
Jeder Leseverstärker 230 schließt einen Selektor 306 oder Schalter ein, der mit einem Transistor 308 (z. B. einem NMOS) verbunden ist. Basierend auf den Spannungen an Steuer-Gate 310 und Drain 312 des Transistors 308 kann der Transistor als Pass-Gate oder als Bitleitungsklemme arbeiten. Wenn die Spannung am Steuer-Gate ausreichend höher ist als die Spannung am Drain, arbeitet der Transistor als Pass-Gate, um die Spannung am Drain an die Bitleitung (BL) an der Source 314 des Transistors weiterzuleiten. Zum Beispiel kann eine Programmsperrspannung, wie etwa 1-2 V, beim Vorladen und Sperren eines nicht ausgewählten NAND-Strings weitergeleitet werden. Oder es kann eine Programmfreigabespannung, wie etwa 0 V, weitergeleitet werden, um die Programmierung in einem ausgewählten NAND-String zu ermöglichen. Der Selektor 306 kann eine Versorgungsspannung Vdd, (z. B. 3-4 V), an das Steuer-Gate des Transistors 308 weiterleiten, damit dieses als Pass-Gate arbeitet.
-
Wenn die Spannung am Steuer-Gate niedriger ist als die Spannung am Drain, arbeitet der Transistor 308 als Source-Folger, um die Bitleitungsspannung auf Vcg-Vth zu setzen oder zu klemmen, wobei Vcg die Spannung am Steuer-Gate 310 und Vth, z. B. 0,7 V, die Schwellenspannung des Transistors 308 ist. Dabei wird davon ausgegangen, dass die Source-Leitung bei 0 V liegt. Wenn Vcelsrc nicht Null ist, wird die Bitleitungsspannung auf Vcg-Vcelsrc-Vth geklemmt. Der Transistor wird daher manchmal auch als Bitleitungsklemmtransistor (BLC) bezeichnet, und die Spannung Vcg am Steuer-Gate 310 wird als Bitleitungsspannung, Vblc, bezeichnet. Dieser Modus kann bei Abtastvorgängen wie Lese- und Verifizierungsvorgängen verwendet werden. Die Bitleitungsspannung wird also von dem Transistor 308 basierend auf der vom Selektor 306 ausgegebenen Spannung eingestellt. Zum Beispiel kann der Selektor 306 Vsense+Vth, z. B. 1,5 V, an das Steuer-Gate des Transistors 308 weiterleiten, um Vsense, z. B. 0,8 V, auf der Bitleitung bereitzustellen. Ein Vbl-Selektor 316 kann eine relativ hohe Spannung, wie etwa Vdd, an Drain 312 weiterleiten, die höher ist als die Steuer-Gate-Spannung am Transistor 308, um den Source-Folger-Modus bei Abtastvorgängen bereitzustellen. Vbl bezieht sich auf die Bitleitungsspannung.
-
Der Vbl-Selektor 316 kann eines von einer Anzahl von Spannungssignalen weiterleiten. Der Vbl-Selektor kann zum Beispiel ein Signal für eine Programmsperrspannung weiterleiten, das sich von einer Anfangsspannung, z. B. 0 V, auf eine Programmsperrspannung, z. B. Vbl_inh, für die jeweiligen Bitleitungen des nicht ausgewählten NAND-Strings während einer Programmschleife erhöht. Der Vbl-Selektor 316 kann während einer Programmschleife ein Programmierfreigabespannungssignal, wie etwa 0 V, für entsprechende Bitleitungen ausgewählter NAND-Strings weiterleiten.
-
Bei einem Ansatz kann der Selektor 306 jeder Abtastschaltung getrennt von den Selektoren anderer Abtastschaltungen gesteuert werden. Der Vbl-Selektor 316 einer jeden Abtastschaltung kann auch getrennt von den Vbl-Selektoren anderer Abtastschaltungen gesteuert werden.
-
Während der Abtastung wird ein Abtastknoten 318 auf eine anfängliche Spannung, Vsense_init, wie etwa 3 V, aufgeladen. Der Abtastknoten wird dann über den Transistor 308 an die Bitleitung weitergeleitet und ein Abfallbetrag des Abtastknotens wird verwendet, um zu bestimmen, ob sich eine Speicherzelle in einem leitenden oder nicht-leitenden Zustand befindet. Der Abfallbetrag des Abtastknotens zeigt auch an, ob ein Strom Icell in der Speicherzelle einen Referenzstrom, Iref, übersteigt. Ein größerer Abfall entspricht einem größeren Strom. Wenn Icell ≤ Iref ist, befindet sich die Speicherzelle in einem nicht-leitenden Zustand und wenn Icell>Iref ist, befindet sich die Speicherzelle in einem leitenden Zustand.
-
Insbesondere bestimmt die Vergleichsschaltung 320 die Menge des Abfallbetrags durch Vergleich der Spannung des Abtastknotens mit einer Auslösespannung zu einer Abtastzeit. Wenn die Spannung des Abtastknotens unter die Auslösespannung, Vtrip, abfällt, befindet sich die Speicherzelle in einem leitenden Zustand und ihre Vth liegt bei oder unter der Verifizierungsspannung. Wenn die Spannung des Abtastknotens nicht unter Vtrip abfällt, befindet sich die Speicherzelle in einem nicht-leitenden Zustand und ihre Vth liegt über der Verifizierungsspannung. Ein Abtastknotenlatch 322 wird zum Beispiel von der Vergleichsschaltung 320 auf 0 oder 1 eingestellt, je nachdem, ob sich die Speicherzelle in einem leitenden oder nicht-leitenden Zustand befindet. Bei einem Programmverifizierungstest kann zum Beispiel eine 0 für durchgefallen und eine 1 für bestanden stehen. Das Bit im Abtastknotenlatch kann bei einem Abtastvorgang mit Zustandsbits ausgelesen oder bei einem Füllvorgang von 0 auf 1 umgeschaltet werden. Das Bit im Abtastknotenlatch 322 kann auch in einem Sperrscan verwendet werden, um zu entscheiden, ob eine Spannung des Abtastknotens in einer nächsten Programmschleife auf eine Hemm- oder Programmstufe gesetzt werden soll. L
-
Die Verwaltungsschaltung 302 weist einen Prozessor 330, vier beispielhafte Sätze von Datenlatches 340, 342, 344 und 346 und eine E/A-Schnittstelle 332 auf, die zwischen den Sätzen von Datenlatches und dem Datenbus 334 gekoppelt ist. 3 zeigt vier beispielhafte Sätze von Datenlatches 340, 342, 344 und 346; in anderen Ausführungsformen können jedoch auch mehr oder weniger als vier implementiert werden. In einer Ausführungsform gibt es für jeden Leseverstärker 230 einen Satz von Latches. Für jede Abtastschaltung kann ein Satz von drei Datenlatches bereitgestellt werden, der z. B. die individuellen Latches ADL, BDL, CDL und XDL aufweist. In manchen Fällen kann auch eine andere Anzahl von Datenlatches verwendet werden. In einer Ausführungsform mit drei Bits pro Speicherzelle speichert ADL ein Bit für eine untere Datenseite, BDL speichert ein Bit für eine mittlere Datenseite, CDL speichert ein Bit für eine obere Datenseite und XDL dient als Schnittstellen-Latch zum Speichern/Latching von Daten von der Speichersteuerung.
-
Prozessor 330 führt Berechnungen durch, um etwa die in der abgetasteten Speicherzelle gespeicherten Daten zu bestimmen und die bestimmten Daten in dem Satz der Datenlatches zu speichern. Jeder Satz von Datenlatches 340-346 wird verwendet, um Datenbits zu speichern, die vom Prozessor 330 während eines Lesevorgangs bestimmt wurden, und um Datenbits zu speichern, die während eines Programmiervorgangs vom Datenbus 334 importiert wurden und Schreibdaten darstellen, die in den Speicher programmiert werden sollen. Die E/A-Schnittstelle 332 stellt eine Schnittstelle zwischen den Datenlatches 340-346 und dem Datenbus 334 bereit.
-
Während des Lesens unterliegt der Betrieb des Systems der Kontrolle der Zustandsmaschine 262, welche die Versorgung der adressierten Speicherzelle mit verschiedenen Steuer-Gate-Spannungen steuert. Beim Durchlaufen der verschiedenen vordefinierten Steuer-Gate-Spannungen, die den verschiedenen vom Speicher unterstützten Speicherzuständen entsprechen, kann die Abtastschaltung bei einer dieser Spannungen auslösen und eine entsprechende Ausgabe wird vom Leseverstärker über den Datenbus 304 an den Prozessor 330 bereitgestellt. Zu diesem Zeitpunkt bestimmt der Prozessor 330 den resultierenden Speicherzustand unter Betrachtung des Auslöseereignisses bzw. der Auslöseereignisse der Abtastschaltung und der Informationen über die angelegte Steuer-Gate-Spannung aus der Zustandsmaschine über die Eingabeleitungen 348. Anschließend berechnet er eine binäre Codierung für den Speicherzustand und speichert die daraus resultierenden Datenbits in den Datenlatches 340-346.
-
Einige Implementierungen können mehrere Prozessoren 330 einschließen. In einer Ausführungsform schließt jeder Prozessor 330 eine Ausgabeleitung (nicht abgebildet) ein, so dass jede der Ausgabeleitungen in einer verdrahteten ODER-Verbindung verbunden ist. Eine verdrahtete ODER-Verbindung oder -Leitung kann bereitgestellt werden, indem mehrere Drähte an einem Knotenpunkt miteinander verbunden werden, wobei jeder Draht ein hohes oder niedriges Eingabesignal von einem entsprechenden Prozessor führt und eine Ausgabe des Knotenpunkts hoch ist, wenn eines der Eingabesignale hoch ist. In einigen Ausführungsformen werden die Ausgabeleitungen invertiert, bevor sie mit der verdrahteten ODER-Leitung verbunden werden. Diese Einrichtung 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 achtmal lesen. Oder es wird eine Logik zum Prozessor 330 hinzugefügt, um die Ergebnisse der zugehörigen Bitleitungen zu akkumulieren, so dass die Zustandsmaschine die verdrahtete ODER-Leitung nur einmal lesen muss. In ähnlicher Art und Weise kann die globale Zustandsmaschine durch korrektes Wählen der Logikstufe erkennen, wann das erste Bit seinen Zustand ändert, und die Algorithmen entsprechend ändern.
-
Während der Programmierungs- oder Verifizierungsvorgänge für Speicherzellen werden die zu programmierenden Daten (Schreibdaten) in den Datenlatches 340-346 vom Datenbus 334 gespeichert. Während der Neuprogrammierung kann ein entsprechender Satz von Datenlatches einer Speicherzelle Daten speichern, die angeben, wann die Speicherzelle basierend auf der Programmimpulsgröße für die Neuprogrammierung freigegeben werden soll.
-
Der Programmiervorgang legt unter der Kontrolle der Zustandsmaschine 262 eine Reihe von Programmierspannungsimpulsen an die Steuer-Gates 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 der Prozessor 330 den Zustand des zurückgelesenen Speichers im Verhältnis zum gewünschten Speicherzustand. Wenn die beiden übereinstimmen, versetzt der Prozessor 330 die Bitleitung in einen Programmhemmungsmodus, indem er etwa seine Latches aktualisiert. 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.
-
4 ist eine perspektivische Ansicht eines Abschnitts einer beispielhaften Ausführungsform eines monolithischen dreidimensionalen Speicherarrays/einer monolithischen dreidimensionalen Speicherstruktur, die eine Speicherstruktur 202 aufweisen kann, die eine Vielzahl nichtflüchtiger Speicherzellen aufweist, die als vertikale NAND-Strings angeordnet sind. 4 zeigt zum Beispiel einen Abschnitt 400 eines Speicherblocks. Die dargestellte Struktur schließt einen Satz von Bitleitungen BL ein, die über einem Stapel 401 von alternierenden dielektrischen Schichten und leitenden Schichten positioniert sind. Als Beispiel wird eine der dielektrischen Schichten als D und eine der leitenden Schichten (auch als Wortleitungsschichten bezeichnet) wird als W markiert. Die Anzahl der alternierenden dielektrischen Schichten und der leitenden Schichten kann basierend auf spezifischen Implementierungsanforderungen variieren. Wie weiter unten erläutert wird, sind in einer Ausführungsform die abwechselnden dielektrischen Schichten und leitenden Schichten durch Isolationsbereiche IR in sechs (oder eine andere Anzahl von) Bereiche (z. B. Unterblöcke) unterteilt. 4 zeigt einen Isolationsbereich IR, der zwei Unterblöcke trennt. Unterhalb der alternierenden dielektrischen Schichten und Wortleitungsschichten befindet sich eine Source-Leitungsschicht SL. In dem Stapel alternierender dielektrischer Schichten und leitender Schichten sind Speicherlöcher ausgebildet. Zum Beispiel ist eins der Speicherlöcher als MH markiert. Es ist zu beachten, dass in 4 die dielektrischen Schichten durchsichtig dargestellt sind, so dass der Leser die Speicherlöcher sehen kann, die in dem Stapel alternierender dielektrischer Schichten und leitender Schichten positioniert sind. In einer Ausführungsform werden NAND-Ketten gebildet, indem das Speicherloch mit Materialien gefüllt wird, die ein Ladungsfängermaterial einschließen, um eine vertikale Spalte von Speicherzellen zu erzeugen. Jede Speicherzelle kann eines oder mehrere Datenbits speichern. Weitere Einzelheiten zu dem dreidimensionalen monolithischen Speicherarray, das die Speicherstruktur 202 aufweist, werden im Folgenden bereitgestellt.
-
4A ist ein Blockdiagramm, das ein Beispiel für die Organisation der Speicherstruktur 202 erklärt, die in zwei Ebenen 402 und 404 unterteilt ist. Jede Ebene wird dann in M Blöcke unterteilt. In einem Beispiel hat jede Ebene etwa 2000 Blöcke. Doch es können auch andere Anzahlen von Blöcken und Ebenen verwendet werden. In einer Ausführungsform ist ein Speicherzellenblock eine Einheit zum Löschen. D. h. alle Speicherzellen eines Blocks werden zusammen gelöscht. In anderen Ausführungsformen können Blöcke in Unterblöcke unterteilt werden und die Unterblöcke können die Löscheinheit sein. Speicherzellen können auch aus anderen Gründen in Blöcken gruppiert werden, beispielsweise um die Speicherstruktur so zu organisieren, dass Signalisierungs- und Auswahlschaltungen möglich sind. In einigen Ausführungsforme stellt ein Block eine Gruppe von verbundenen Speicherzellen dar, da die Speicherzellen eines Blocks einen gemeinsamen Satz von Wortleitungen teilen. Zum Beispiel sind die Wortleitungen eines Blocks alle mit allen vertikalen NAND-Strings dieses Blocks verbunden. Obwohl 4A zwei Ebenen 402/404 zeigt, können auch mehr oder weniger als zwei Ebenen implementiert werden. In einigen Ausführungsformen schließt die Speicherstruktur 202 acht Ebenen ein.
-
4B-4J zeigen ein Beispiel für eine dreidimensionale („3D“) NAND-Struktur, die der Struktur von 4 entspricht und zur Implementierung der Speicherstruktur 202 von 2A und 2B verwendet werden kann. 4B ist ein Blockdiagramm, das eine Draufsicht auf einen Abschnitt 406 von Block 2 der Ebene 402 darstellt. Wie Sie aus 4B ersehen können, erstreckt sich der in 4B dargestellte Block in Richtung 432. In einer Ausführungsform hat das Speicherarray viele Schichten; Jedoch zeigt 4B nur die obere Schicht.
-
4B zeigt eine Vielzahl von Kreisen, welche die vertikalen Spalten darstellen, die den Speicherlöchern entsprechen. Jede der vertikalen Spalten schließt mehrere Auswahltransistoren (auch als Auswahlgate bezeichnet) und mehrere Speicherzellen ein. In einer Ausführungsform implementiert jede vertikale Spalte eine NAND-Kette. 4B markiert zum Beispiel einen Untersatz der vertikalen Spalten/NAND-Strings 426, 432, 436, 446, 456, 462, 466, 472, 474 und 476.
-
4B stellt auch einen Satz Bitleitungen 415 einschließlich der Bitleitungen 411, 412, 413, 414, ... 419 dar. 4B zeigt vierundzwanzig Bitleitungen, da nur ein Teil des Blocks dargestellt ist. Es ist denkbar, dass mehr als vierundzwanzig Bitleitungen mit den vertikalen Spalten des Blocks verbunden werden. Jeder der Kreise, die vertikale Spalten darstellen, hat ein „x“ zur Kennzeichnung seiner Verbindung mit jeweils einer Bitleitung. Zum Beispiel ist die Bitleitung 411 mit den vertikalen Spalten 426, 436, 446, 456, 466 und 476 verbunden.
-
Der in 4B dargestellte Block schließt einen Satz von Isolationsbereichen 480, 482, 484, 486 und 488 ein, die aus SiO2 gebildet sind; es können jedoch auch andere dielektrische Materialien verwendet werden. Die Isolationsbereiche 480, 482, 484, 486 und 488 dienen dazu, die oberen Schichten des Blocks in sechs Bereiche zu unterteilen; zum Beispiel ist die in 4B dargestellte obere Schicht in die Bereiche 420, 430, 440, 450, 460 und 470 unterteilt, die alle als Unterblöcke bezeichnet werden. In einer Ausführungsform unterteilen die Isolationsbereiche nur die Schichten, die zur Implementierung von Auswahl-Gates verwendet werden, so dass NAND-Strings in verschiedenen Unterblöcken unabhängig voneinander ausgewählt werden können. In einer beispielhaften Implementierung ist eine Bitleitung nur mit einer vertikalen Spalte/NAND-String in jedem der Bereiche (Unterblöcke) 420, 430, 440, 450, 460 und 470 verbunden. In dieser Implementierung hat jeder Block vierundzwanzig Reihen aktiver Spalten und jede Bitleitung ist mit sechs Reihen in jedem Block verbunden. In einer Ausführungsform sind alle sechs vertikalen Spalten/NAND-Strings, die mit einer gemeinsamen Bitleitung verbunden sind, mit der gleichen Wortleitung (oder einem Satz von Wortleitungen) verbunden. Daher verwendet das System die Auswahlleitungen auf der Drain-Seite, um einen (oder einen anderen Untersatz) der sechs zu wählen, der einem Speichervorgang (Programmieren, Verifizieren, Lesen und/oder Löschen) unterzogen werden soll.
-
Obwohl 4B zeigt, dass jeder Bereich 420, 430, 440, 450, 460 und 470 vier Reihen mit vertikalen Spalten, sechs Bereichen und vierundzwanzig Reihen mit vertikalen Spalten in einem Block aufweist, sind diese genauen Anzahlen eine beispielhafte Implementierung. Andere Ausführungsformen können mehr oder weniger Bereiche pro Block, mehr oder weniger Reihen vertikaler Spalten pro Bereich und mehr oder weniger Reihen vertikaler Spalten pro Block beinhalten. 4B zeigt auch, dass die vertikalen Spalten gestaffelt sind. In anderen Ausführungsformen können verschiedene Staffelungsmuster verwendet werden. In einigen Ausführungsformen sind die vertikalen Spalten nicht gestaffelt.
-
4C zeigt einen Abschnitt einer Ausführungsform einer dreidimensionalen Speicherstruktur 202, die einen Querschnitt entlang der Linie AA der 4B darstellt. Diese Querschnittsansicht schneidet durch die vertikalen Spalten (NAND-Strings) 472 und 474 des Bereichs 470 (siehe 4B). Die Struktur in 4C schließt Folgendes ein: drei Drain-seitige Auswahlschichten SGDO, SGD1 und SGD2; drei Source-seitige Auswahlschichten SGS0, SGS1, und SGS2; drei Dummy-Wortleitungsschichten DD0, DD1 und DDS; zweihundertvierzig Wortleitungsschichten WLO-WL239 zum Verbinden an Datenspeicherzellen; und zweihundertfünfzig dielektrische Schichten DI0-DL249. Andere Ausführungsformen können mehr oder weniger als die Anzahlen implementieren, die vorstehend für 4C beschrieben wurden. In einer Ausführungsform sind SGDO, SGD1 und SGD2 miteinander verbunden, und SGDS0, SGS1 und SGS2 sind miteinander verbunden.
-
Die vertikalen Spalten 472 und 474 sind so dargestellt, dass sie durch die Auswahlschichten auf der Drain-Seite, die Auswahlschichten auf der Source-Seite, die Dummy-Wortleitungsschichten und die Wortleitungsschichten ragen. In einer Ausführungsform weist jede vertikale Spalte eine vertikale NAND-Kette auf. Unterhalb der vertikalen Säulen und der Schichten befinden sich Substrat 453, eine Isolierschicht 454 auf dem Substrat und Source-Leitung SL. Die NAND-Strings der vertikalen Spalte 442 haben ein Source-Ende am unteren Ende des Stapels und ein Drain-Ende am oberen Ende des Stapels. Wie in 4B zeigt 4C die vertikale Spalte 472, die über den Verbinder 417 mit der Bitleitung 414 verbunden ist.
-
Der Einfachheit halber werden die Auswahlschichten auf der Drain-Seite, die Auswahlschichten auf der Source-Seite, die Dummy-Wortleitungsschichten und die Datenwortleitungsschichten zusammen als leitende Schichten bezeichnet. In einer Ausführungsform sind die leitenden Schichten aus einer Kombination von TiN und Wolfram hergestellt. Bei anderen Ausführungsformen können andere Materialien zum Bilden der leitenden Schichten verwendet werden, wie etwa dotiertes Polysilicium, Metall wie Wolfram oder Metallsilizid. In einigen Ausführungsformen können verschiedene leitende Schichten aus unterschiedlichen Materialien gebildet werden. Zwischen den leitenden Schichten befinden sich die dielektrischen Schichten DL0-DL249. Beispielsweise befinden sich dielektrische Schichten DL240 über einer Wortleitungsschicht WL235 und unter einer Wortleitungsschicht WL236. In einer Ausführungsform sind die dielektrischen Schichten aus SiO2 hergestellt. Bei anderen Ausführungsformen können andere dielektrische Materialien verwendet werden, um die dielektrischen Schichten zu bilden.
-
Die nichtflüchtigen Speicherzellen sind entlang vertikaler Spalten ausgebildet, die durch alternierende leitende und dielektrische Schichten im Stapel verlaufen. In einer Ausführungsform sind die Speicherzellen in NAND-Ketten angeordnet. Die Wortleitungsschichten WL0-W239 verbinden sich mit Speicherzellen (auch Datenspeicherzellen genannt). Die Dummy-Wortleitungsschichten DD0, DD1 und DS sind mit Dummy-Speicherzellen verbunden. Eine Dummy-Speicherzelle speichert keine Hostdaten (Daten, die vom Host oder einer Einheit außerhalb des Speicherungssystems 100 bereitgestellt werden, wie etwa Daten von einem Benutzer des Hosts) und ist auch nicht dazu berechtigt, diese zu speichern, während eine Datenspeicherzelle dazu berechtigt ist, Hostdaten zu speichern. Hostdaten können mit Systemdaten verglichen werden, die vom Speicherungssystem 100 erzeugt werden (z. B. L2P-Tabellen). In einigen Ausführungsformen können Datenspeicherzellen und Dummy-Speicherzellen die gleiche Struktur aufweisen. Die Auswahlschichten SGDO, SGD1 und SGD2 auf der Drain-Seite werden verwendet, um die NAND-Strings elektrisch mit den Bitleitungen zu verbinden oder von ihnen zu trennen. Die Source-seitigen Auswahlschichten SGS0, SGS1 und SGS2 werden verwendet, um NAND-Strings elektrisch mit der Source-Leitung SL zu verbinden bzw. von ihr zu trennen.
-
Es ist zu beachten, dass der Stapel der Wortleitungen WL0-WL239 zwei Randwortleitungen an den Rändern des Stapels einschließt, einschließlich der oberen Randwortleitung WL239 und der unteren Randwortleitung WL0. Die Wortleitungen WL1-WL238 sind Wortleitungen, die nicht am Rand liegen.
-
4D stellt einen Abschnitt einer Ausführungsform einer dreidimensionalen Speicherstruktur 202 dar, die eine Querschnittsansicht entlang der Linie BB von 4B zeigt. Diese Querschnittsansicht schneidet durch die vertikalen Spalten (NAND-Strings) 432 und 434 des Bereichs 430 (siehe 4B). 4D zeigt die gleichen abwechselnd leitenden und dielektrischen Schichten wie 4C. 4D zeigt auch Isolationsbereich 482. Die Isolationsbereiche 480, 482, 484, 486 und 488 belegen den Raum, der für einen Abschnitt der Speicherlöcher/vertikalen Spalten/NAND-Stings verwendet worden wäre. Zum Beispiel nimmt der Isolationsbereich 482 den Raum ein, der für einen Abschnitt der vertikalen Spalte 434 verwendet worden wäre. Insbesondere wurde ein Abschnitt (z. B. die Hälfte des Durchmessers) der vertikalen Säule 434 in den Schichten SDG0, SGD1, SGD2 und DD0 entfernt, um den Isolationsbereich 482 aufzunehmen. Während also der größte Teil der vertikalen Säule 434 zylindrisch ist (mit einem kreisförmigen Querschnitt), hat der Abschnitt der vertikalen Säule 434 in den Schichten SDG0, SGD1, SGD2 und DD0 einen halbkreisförmigen Querschnitt. In einer Ausführungsform wird nach der Bildung des Stapels aus abwechselnd leitenden und dielektrischen Schichten der Stapel geätzt, um Raum für den Isolationsbereich zu schaffen, und dieser Raum wird dann mit SiO2 aufgefüllt.
-
4E stellt einen Abschnitt einer Ausführungsform einer dreidimensionalen Speicherstruktur 202 dar, die eine Querschnittsansicht entlang der Linie CC von 4B zeigt. Diese Querschnittsansicht schneidet durch die vertikalen Spalten (NAND-Strings) 452 und 462 (siehe 4B). 4E zeigt die gleichen abwechselnd leitenden und dielektrischen Schichten wie 4C. 4E zeigt auch den Isolationsbereich 486, der in die vertikalen Spalten (NAND-String) 452 schneidet.
-
4F zeigt eine Querschnittsansicht des Bereichs 429 aus 4C, der einen Abschnitt der vertikalen Säule 472 einschließt. In einer Ausführungsform sind die vertikalen Spalten rund; in anderen Ausführungsformen können jedoch andere Formen verwendet werden. In einer Ausführungsform schließt die vertikale Säule 472 eine innere Kernschicht 490 ein, die aus einem Dielektrikum, wie etwa SiO2, besteht. Es können auch andere Materialien verwendet werden. Der innere Kern 490 ist von einem Polysiliziumkanal 491 umgeben. Es können auch andere Materialien als Polysilicium verwendet werden. Es ist zu beachten, dass der Kanal 491 mit der Bitleitung und der Source-Leitung verbunden ist. Der umgebende Kanal 491 ist ein Tunneldielektrikum 492. In einer Ausführungsform hat das Tunneldielektrikum 492 eine ONO-Struktur. Das umgebende Tunneldielektrikum 492 ist eine Ladungsfängerschicht 493, wie (zum Beispiel) Siliziumnitrid. Andere Speichermaterialien und Strukturen können ebenfalls verwendet werden. Die hierin beschriebene Technologie ist nicht auf ein spezifisches Material oder eine spezifische Struktur beschränkt.
-
4D stellt dielektrische Schichten DLL239, DLL240, DLL241, DLL242 und DLL243 sowie Wortleitungsschichten WLL234, WLL235, WLL236, WLL237 und WLL238 dar. Jede der Wortleitungsschichten schließt einen Wortleitungsbereich 496 ein, der von einer Aluminiumoxidschicht 497 umgeben ist, die wiederum von einer Sperroxidschicht 498 umgeben ist. In anderen Ausführungsformen kann die blockierende Oxidschicht eine vertikale Schicht sein, die parallel und benachbart zur Ladungsfängerschicht 493 verläuft. Die physikalische Wechselwirkung der Wortleitungsschichten mit der vertikalen Spalte bildet die Speicherzellen. So weist eine Speicherzelle in einer Ausführungsform einen Kanal 491, ein dielektrisches Tunnelschicht 492, eine Ladungsfängerschicht 493, eine Sperroxidschicht 498, eine Aluminiumoxidschicht 497 und einen Wortleitungsbereich 496 auf. Zum Beispiel weisen die Wortleitungsschicht WLL238 und ein Abschnitt der vertikalen Spalte 472 eine Speicherzelle MC1 auf. Die Wortleitungsschicht WL237 und ein Abschnitt der vertikalen Spalte 472 weisen eine Speicherzelle MC2 auf. Die Wortleitungsschicht WLL236 und ein Abschnitt der vertikalen Spalte 472 weisen eine Speicherzelle MC3 auf. Die Wortleitungsschicht WLL235 und ein Abschnitt der vertikalen Spalte 472 weisen eine Speicherzelle MC4 auf. Die Wortleitungsschicht WLL234 und ein Abschnitt der vertikalen Spalte 472 weisen eine Speicherzelle MC5 auf. In anderen Architekturen kann eine Speicherzelle eine andere Struktur haben, aber die Speicherzelle wäre immer noch die Speicherungseinheit.
-
Wenn eine Speicherzelle programmiert wird, werden Elektronen in einem Abschnitt der Ladungsfängerschicht 493 gespeichert, der mit der Speicherzelle verbunden ist (z. B. in ihr). Diese Elektronen werden vom Kanal 491 durch das Tunneldielektrikum 492 in die Ladungsfängerschicht 493 gezogen, wenn eine entsprechende Spannung an dem Wortleitungsbereich 496 anliegt. Die Schwellenspannung (Vth) einer Speicherzelle wird proportional zur Menge der gespeicherten Ladung erhöht. In einer Ausführungsform wird die Programmierung durch Fowler Nordheim-Tunneln der Elektronen in die Ladungsfängerschicht erreicht. Während eines Löschvorgangs kehren die Elektronen in den Kanal zurück oder werden Löcher in die Ladungsfängerschicht injiziert, um sich mit Elektronen zu rekombinieren. In einer Ausführungsform wird die Löschung durch Lochinjektion in die Ladungsfängerschicht über einen physikalischen Mechanismus wie GIDL erreicht.
-
4G zeigt einen Querschnitt der vertikalen Säule 472 aus 4F, der durch MC5 geschnitten ist. So zeigt 4G die Wortleitungsschicht WL234, den inneren Kern 490, den Kanal 491, das Tunneldielektrikum 492, die Ladungsfängerschicht 493, die Aluminiumoxidschicht 497 und die Sperroxidschicht 498.
-
4H zeigt einen Querschnitt der vertikalen Spalte 472 aus 4F, der durch SGD1 (eine Auswahl-Gate-Schicht, die ein Auswahl-Gate implementiert) geschnitten ist. So zeigt 4H die Auswahlschicht SGD1 auf der Drain-Seite, den inneren Kern 490, den Kanal 491, das Tunneldielektrikum 492, die Ladungsfängerschicht 493, die Aluminiumoxidschicht 497 und die Sperroxidschicht 498.
-
4I zeigt einen Querschnitt der vertikalen Säule 434 aus 4D, der durch SGD1 geschnitten ist. So zeigt 4I die Auswahlschicht SGD1 auf der Drain-Seite, den inneren Kern 490, den Kanal 491, das Tunneldielektrikum 492, die Ladungsfängerschicht 493, die Aluminiumoxidschicht 497 und die Sperroxidschicht 498. 4I zeigt auch einen Abschnitt des Isolationsbereichs 482. Wie in 4I zu sehen ist, ist das Auswahl-Gate (Auswahl-Gate-Schicht und Auswahlleitungs-Schicht) der vertikalen Spalte 434 halbkreisförmig (oder teilweise kreisförmig), da die vertikale Spalte (NAND-String) 434 den Isolationsbereich 482 schneidet.
-
4J ist ein schematisches Diagramm eines Abschnitts des Speicherarrays 202, das in 4-4I dargestellt ist. 4J zeigt die physischen Datenwortleitungen WL0-WL239, die sich über den gesamten Block erstrecken. Die Struktur von 4J entspricht einem Abschnitt 306 in Block 2 von 4A, einschließlich der Bitleitung 411. Innerhalb des Blocks ist in einer Ausführungsform jede Bitleitung mit sechs NAND-Strings verbunden. So zeigt 4J eine Bitleitung, die mit dem NAND-String NS0 (welcher der vertikalen Spalte 426 entspricht), dem NAND-String NS1 (welcher der vertikalen Spalte 436 entspricht), dem NAND-String NS2 (welcher der vertikalen Spalte 446 entspricht), dem NAND-String NS3 (welcher der vertikalen Spalte 456 entspricht), dem NAND-String NS4 (welcher der vertikalen Spalte 466 entspricht) und dem NAND-String NS5 (welcher der vertikalen Spalte 476 entspricht) verbunden ist. Wie bereits erwähnt, sind in einer Ausführungsform SGDO, SGD1 und SGD2 miteinander verbunden, um als ein einziges logisches Auswahl-Gate für jeden Unterblock zu arbeiten, der durch Isolationsbereiche (480, 482, 484, 486 und 486) getrennt ist, um SGD-s0, SGD-s1, SGD-s2, SGD-s3, SGD-s4, und SGD-s5 zu bilden. SGS0, SG1 und SGS2 sind ebenfalls miteinander verbunden und arbeiten als ein einziges logisches Auswahl-Gate, das in 4E als SGS dargestellt ist. Obwohl die Auswahl-Gates SGD-s0, SGD-s1, SGD-s2, SGD-s3, SGD-s4 und SGD-s5 durch die Isolationsbereiche voneinander isoliert sind, sind die Datenwortleitungen WL0-WL239 jedes Unterblocks miteinander verbunden.
-
Die Isolationsbereiche (480, 482, 484, 486 und 486) werden verwendet, um eine separate Steuerung von Unterblöcken zu ermöglichen. Ein erster Unterblock entspricht den vertikalen NAND-Strings, die von SGD-s0 gesteuert werden. Ein zweiter Unterblock entspricht den vertikalen NAND-Strings, die von SGD-s1 gesteuert werden. Ein dritter Unterblock entspricht den vertikalen NAND-Strings, die von SGD-s2 gesteuert werden. Ein vierter Unterblock entspricht den vertikalen NAND-Strings, die von SGD-s3 gesteuert werden. Ein fünfter Unterblock entspricht den vertikalen NAND-Strings, die von SGD-s4 gesteuert werden. Ein sechster Unterblock entspricht den vertikalen NAND-Strings, die von SGD-s5 gesteuert werden.
-
4J zeigt nur die NAND-Strings, die mit der Bitleitung 411 verbunden sind. Ein vollständiger Schaltplan des Blocks würde jedoch jede Bitleitung und sechs vertikale NAND-Strings zeigen, die mit jeder Bitleitung verbunden sind.
-
Obwohl es sich bei den beispielhaften Speichern von 4-4J um dreidimensionale Speicherstrukturen handelt, die vertikale NAND-Strings mit ladungseinfangendem Material einschließen, können auch andere (2D- und 3D-) Speicherstrukturen mit der hier beschriebenen Technologie verwendet werden.
-
Die vorstehend erörterten Speicherungssysteme können gelöscht, programmiert und gelesen werden. 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. 5A ist ein Diagramm der Schwellenspannung in Abhängigkeit von der Anzahl der Speicherzellen und veranschaulicht beispielhafte Schwellenspannungsverteilungen für das Speicherarray, wenn jede Speicherzelle ein Bit an Daten pro Speicherzelle speichert. Speicherzellen, die pro Speicherzelle ein Bit an Daten speichern, werden als einstufige Zellen („SLC“) bezeichnet. Die in SLC-Speicherzellen gespeicherten Daten werden als SLC-Daten bezeichnet; daher weisen die SLC-Daten ein Bit pro Speicherzelle auf. Daten, die als ein Bit pro Speicherzelle gespeichert werden, sind SLC-Daten. 5A zeigt zwei Schwellenspannungsverteilungen: E und P. Die Schwellenspannungsverteilung E entspricht einem Datenlöschzustand. Die Schwellwertspannungsverteilung P entspricht einem programmierten Datenzustand. Speicherzellen, die Schwellenspannungen in der Schwellenspannungsverteilung E aufweisen, befinden sich daher im Datenlöschzustand (z. B. sie sind gelöscht). Speicherzellen, die Schwellenspannungen in der Schwellenspannungsverteilung P aufweisen, befinden sich daher im programmierten Datenzustand (z. B. sie sind programmiert). In einer Ausführungsform speichern gelöschte Speicherzellen Daten „1“ und programmierte Speicherzellen Daten „0“. 5A stellt die gelesene Referenzspannung Vr dar. Durch Testen (z. B. Durchführung eines oder mehrerer Abtastvorgänge), ob die Schwellenspannung einer bestimmten Speicherzelle über oder unter Vr liegt, kann das System bestimmen, ob eine Speicherzelle gelöscht (Zustand E) oder programmiert (Zustand P) ist. 5A stellt auch eine Verifizierung der Referenzspannung Vv dar. In einigen Ausführungsformen prüft das System bei der Programmierung von Speicherzellen in den Datenzustand P, ob diese Speicherzellen eine Schwellenspannung haben, die größer oder gleich Vv ist.
-
5B-F veranschaulichen beispielhafte Schwellenspannungsverteilungen für das Speicherarray, wenn jede Speicherzelle Daten mit mehreren Bits pro Speicherzelle speichert. Speicherzellen, die mehrere Bits pro Speicherzelle Daten speichern, werden als mehrstufige Zellen („MLC“) bezeichnet. Die in MLC-Speicherzellen gespeicherten Daten werden als MLC-Daten bezeichnet; daher weisen die MLC-Daten mehrere Bits pro Speicherzelle auf. Daten, die als mehrere Datenbits pro Speicherzelle gespeichert werden, sind MLC-Daten. In der Ausführungsform von 5B speichert jede Speicherzelle zwei Bits an Daten. Andere Ausführungsformen können andere Datenkapazitäten pro Speicherzelle verwenden (z. B. drei, vier, fünf oder sechs Datenbits pro Speicherzelle).
-
5B zeigt eine erste Schwellenspannungsverteilung E für gelöschte Speicherzellen. Drei Schwellenspannungsverteilungen A, B und C für programmierte Speicherzellen sind ebenfalls abgebildet. In einer Ausführungsform sind die Schwellenspannungen in der Verteilung E negativ und die Schwellenspannungen in den Verteilungen A, B und C sind positiv. Jede unterschiedliche Schwellenspannungsverteilung in
5B entspricht vorgegebenen Werten für die Datenbits. In einer Ausführungsform befindet sich jedes Datenbit der beiden Datenbits, die in einer Speicherzelle gespeichert sind, auf unterschiedlichen logischen Seiten, die als untere Seite (LP) und obere Seite (UP) bezeichnet werden. In anderen Ausführungsformen befinden sich alle Datenbits, die in einer Speicherzelle gespeichert sind, auf einer gemeinsamen logischen Seite. Die spezifische Beziehung zwischen den in die Speicherzelle programmierten Daten und den Schwellenspannungsstufen der Zelle hängt von dem Datencodierschema ab, das für die Zellen verwendet wird. Tabelle 1 stellt ein Beispiel für ein Codierungsschema bereit. Tabelle 1
| E | A | B | C |
LP | 1 | 0 | 0 | 1 |
UP | 1 | 1 | 0 | 0 |
-
In einer Ausführungsform, die als vollständige Sequenzprogrammierung bezeichnet wird, können die Speicherzellen unter Verwendung des Prozesses in 6 (unten erörtert) vom gelöschten Datenzustand E direkt in einen der programmierten Datenzustände A, B oder C programmiert werden. Zum Beispiel kann eine Population von zu programmierenden Speicherzellen zunächst gelöscht werden, so dass sich alle Speicherzellen in der Population im gelöschten Datenzustand E befinden. Dann wird ein Programmierprozess verwendet, um die Speicherzellen direkt in die Datenzustände A, B, und/oder C zu programmieren. Während zum Beispiel einige Speicherzellen vom Datenzustand E in den Datenzustand A programmiert werden, werden andere Speicherzellen vom Datenzustand E in den Datenzustand B und/oder vom Datenzustand E in den Datenzustand C programmiert. Die Pfeile in 5B stellen die vollständige Sequenzprogrammierung dar. In einigen Ausführungsformen können sich die Datenzustände A-C überlappen, wobei sich die Speichersteuerung 120 (oder der Steuerchip 211) auf die Fehlerkorrektur verlässt, um die richtigen Daten zu identifizieren, die gespeichert werden.
-
5C zeigt beispielhafte Schwellenspannungsverteilungen für Speicherzellen, bei denen jede Speicherzelle drei Datenbits pro Speicherzelle speichert (was ein weiteres Beispiel für MLC-Daten ist).
5C zeigt acht Schwellenspannungsverteilungen, die acht Datenzuständen entsprechen. Die erste Schwellenspannungsverteilung (Datenzustand) Er steht für Speicherzellen, die gelöscht sind. Die anderen sieben Schwellenspannungsverteilungen (Datenzustände) A - G stehen für Speicherzellen, die programmiert sind und daher auch als programmierte Zustände bezeichnet werden. Jede Schwellenspannungsverteilung (Datenzustand) entspricht vorbestimmten Werten für den Satz an Datenbits. Die spezifische Beziehung zwischen den in die Speicherzelle programmierten Daten und den Schwellenspannungsstufen 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. Tabelle 2 stellt ein Beispiel eines Codierungsschemas für Ausführungsformen bereit, bei denen sich jedes Datenbit der drei in einer Speicherzelle gespeicherten Datenbits auf verschiedenen logischen Seiten befindet, die als untere Seite (LP), mittlere Seite (MP) und obere Seite (UP) bezeichnet werden. Tabelle 2
| Er | A | B | C | D | E | F | G |
UP | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 |
MP | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 |
LP | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
-
5C zeigt auch sieben Lesereferenzspannungen VrA, VrB, VrC, VrD, VrE, VrF und VrG zum Lesen von Daten aus Speicherzellen. Durch Testen (z. B. Ausführen von Abtastvorgängen), ob die Schwellenspannung einer gegebenen Speicherzelle über oder unter den sieben Lesereferenzspannungen liegt, kann das System bestimmen, in welchem Datenzustand (d. h. A, B, C, D usw.) sich eine Speicherzelle befindet.
-
5C zeigt auch sieben verifizierte Referenzspannungen, VvA, VvB, VvC, VvD, VvE, VvF und VvG. Wenn in einigen Ausführungsformen Speicherzellen auf den Datenzustand A programmiert werden, prüft das System, ob diese Speicherzellen eine Schwellenspannung haben, die größer oder gleich VvA ist. Wenn Speicherzellen auf Datenzustand B programmiert werden, prüft das System, ob die Speicherzellen Schwellenspannungen haben, die größer oder gleich VvB sind. Wenn Speicherzellen auf Datenzustand C programmiert werden, bestimmt das System, ob die Schwellenspannung der Speicherzellen größer oder gleich VvC ist. Wenn Speicherzellen auf Datenzustand D programmiert werden, prüft das System, ob die Schwellenspannung der Speicherzellen größer oder gleich VvD ist. Wenn Speicherzellen auf Datenzustand E programmiert werden, prüft das System, ob die Schwellenspannung der Speicherzellen größer oder gleich VvE ist. Wenn Speicherzellen auf Datenzustand F programmiert werden, prüft das System, ob die Schwellenspannung der Speicherzellen größer oder gleich VvF ist. Wenn Speicherzellen auf Datenzustand G programmiert werden, prüft das System, ob die Schwellenspannung der Speicherzellen größer oder gleich VvG ist. 5C zeigt auch Vev, eine Spannungsstufe, mit der geprüft werden kann, ob eine Speicherzelle ordnungsgemäß gelöscht worden ist.
-
In einer Ausführungsform, welche die vollständige Sequenzprogrammierung verwendet, können die Speicherzellen unter Verwendung des Prozesses von 6 (unten erörtert) vom gelöschten Datenzustand Er direkt in einen der programmierten Datenzustände AG 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 Er befinden. Dann wird ein Programmierprozess verwendet, um Speicherzellen direkt in die Datenzustände A, B, C, D, E, F und/oder G zu programmieren. Während zum Beispiel einige Speicherzellen von Datenzustand ER in Datenzustand A programmiert werden, werden andere Speicherzellen von Datenzustand ER in Datenzustand B und/oder von Datenzustand ER in Datenzustand C programmiert usw. Die Pfeile in 5C stellen die vollständige Sequenzprogrammierung dar. In einigen Ausführungsformen können sich die Datenzustände A-G überlappen, wobei sich der Steuerchip 211 und/oder die Speichersteuerung 120 auf die Fehlerkorrektur verlassen, um die richtigen Daten zu identifizieren, die gespeichert werden. Es ist zu beachten, dass das System in einigen Ausführungsformen anstelle der vollständigen Sequenzprogrammierung auch Multipass-Programmierungsprozesse verwenden kann, die aus der Praxis bekannt sind.
-
Im Allgemeinen ist die ausgewählte Wortleitung bei Verifizierungs- und Lesevorgängen mit einer Spannung verbunden (ein Beispiel für ein Referenzsignal), deren Stufe für jeden Lesevorgang festgelegt ist (z. B. siehe Lesevergleichsstufen VrA, VrB, VrC, VrD, VrE, VrF und VrG in 5C) oder Verifizierungsvorgang (siehe z. B. Verifizierungszielstufen VvA, VvB, VvC, VvD, VvE, VvF und VvG in 5C), um zu bestimmen, ob eine Schwellenspannung der betreffenden Speicherzelle diese Stufe erreicht hat. Nach Anlegen der Wortleitungsspannung wird der Leitungsstrom der Speicherzelle gemessen, um zu bestimmen, ob die Speicherzelle in Reaktion auf die an die Wortleitung angelegte Spannung eingeschaltet ist (Strom leitet). Wenn der Leitungsstrom gemäß Messungen größer als ein bestimmter Wert ist, dann wird angenommen, dass die Speicherzelle eingeschaltet ist und die an die Wortleitung angelegte Spannung größer als die Schwellenspannung der Speicherzelle ist. Falls der Leitungsstrom gemäß Messungen nicht größer als der bestimmte Wert ist, dann wird angenommen, dass die Speicherzelle nicht eingeschaltet ist und die an die Wortleitung angelegte Spannung nicht größer als die Schwellenspannung der Speicherzelle ist. Während eines Lese- oder Verifizierungsprozesses werden die nicht ausgewählten Speicherzellen mit einer oder mehreren Lesedurchgangsspannungen (die auch als Bypass-Spannungen bezeichnet werden) an ihren Steuer-Gates versehen, sodass diese Speicherzellen als Pass-Gates fungieren (z. B. Strom leiten ungeachtet dessen, ob sie programmiert oder gelöscht sind).
-
Es gibt viele Wege, um den Leitungsstrom einer Speicherzelle während eines Lese- oder Verifizierungsvorgangs zu messen. In einem Beispiel wird der Leitungsstrom einer Speicherzelle durch die Rate gemessen, mit der sie einen dedizierten Kondensator in dem Leseverstärker entlädt oder lädt. In einem anderen Beispiel ermöglicht der Leitungsstrom der ausgewählten Speicherzelle der NAND-Kette, welche die Speicherzelle einschließt (bzw. ermöglicht dieser nicht), eine entsprechende Bitleitung zu entladen. Die Spannung auf der Bitleitung wird nach einer gewissen Zeit gemessen, um zu sehen, ob sie entladen wurde. Es ist zu beachten, dass die hierin beschriebene Technologie mit verschiedenen Verfahren verwendet werden kann, die nach dem Stand der Technik zum Verifizieren/Lesen bekannt sind. Andere Lese- und Verifizierungstechniken, die nach dem Stand der Technik bekannt sind, können ebenfalls verwendet werden.
-
5D zeigt die Verteilung der Schwellenspannung, wenn jede Speicherzelle vier Bits an Daten speichert, was ein weiteres Beispiel für MLC-Daten ist. 5D zeigt, dass es eine gewisse Überlappung zwischen den Schwellenspannungsverteilungen (Datenzuständen) S0 - S15 geben kann. Die Überlappung kann aufgrund von Faktoren wie Speicherverlust von Speicherzellen (und daher Absinken der Schwellenspannung) auftreten. Eine Programmierstörung kann die Schwellenspannung einer Speicherzelle unbeabsichtigt erhöhen. Ebenso kann eine Lesestörung die Schwellenspannung einer Speicherzelle unbeabsichtigt erhöhen. Im Laufe der Zeit können sich die Positionen der Schwellenspannungsverteilungen ändern. Solche Änderungen können die Bitfehlerrate erhöhen, wodurch die Decodierzeit steigt oder Decodieren sogar unmöglich wird. Ändern der Lesereferenzspannungen kann helfen, solche Effekte abzuschwächen. Verwendung von ECC während des Leseprozesses kann Fehler und Mehrdeutigkeiten beheben. Es ist zu beachten, dass in einigen Ausführungsformen die Schwellenspannungsverteilungen für eine Population von Speicherzellen, die vier Datenbits pro Speicherzelle speichern, sich nicht überlappen und voneinander getrennt sind; zum Beispiel, wie in 5E dargestellt. Die Schwellenspannungsverteilungen in 5D schließen, wie vorstehend beschrieben, Lesereferenzspannungen und Verifizierungsreferenzspannungen ein.
-
Bei Verwendung von vier Bits pro Speicherzelle kann der Speicher mit der vorstehend beschriebenen vollständigen Sequenzprogrammierung oder mit den in der Technik bekannten Prozessen der Multipass-Programmierung programmiert werden. Jede Schwellenspannungsverteilung (Datenzustand) von
5D entspricht vorbestimmten Werten für den Satz von Datenbits. Die spezifische Beziehung zwischen den in die Speicherzelle programmierten Daten und den Schwellenspannungsstufen der Zelle hängt von dem Datencodierschema ab, das für die Zellen verwendet wird. Tabelle 3 stellt ein Beispiel für ein Codierungsschema für Ausführungsformen bereit, bei denen sich jedes Datenbit der vier in einer Speicherzelle gespeicherten Datenbits auf verschiedenen logischen Seiten befindet, die als untere Seite (LP), mittlere Seite (MP), obere Seite (UP) und obere Seite (TP) bezeichnet werden.
-
5F zeigt die Verteilung der Schwellenspannung, wenn jede Speicherzelle fünf Bits an Daten speichert, was ein weiteres Beispiel für MLC-Daten ist. In einer beispielhaften Implementierung werden bei Speicherzellen mit fünf Bits Daten in einem von zweiunddreißig Datenzuständen (z. B. S0-S31) gespeichert.
-
6 ist ein Flussdiagramm, das eine Ausführungsform eines Prozesses zur Programmierung von Speicherzellen beschreibt. Im Rahmen dieser Schrift sind der Begriff programmieren und Programmieren gleichbedeutend mit schreiben und Schreiben. In einer beispielhaften Ausführungsform wird der Prozess von 6 für das Speicherarray 202 unter Verwendung der einen oder mehreren Steuerschaltungen (z. B. Systemsteuerlogik 260, Spaltensteuerschaltung 210, Zeilensteuerschaltung 220) durchgeführt, die oben beschrieben wurden. In einer beispielhaften Ausführungsform wird der Prozess von 6 von der integrierten Speicherbaugruppe 207 unter Verwendung der einen oder mehreren Steuerschaltungen (z. B. Systemsteuerlogik 260, Spaltensteuerschaltung 210, Zeilensteuerschaltung 220) des Steuerchips 211 durchgeführt, um Speicherzellen auf dem Speicherchip 201 zu programmieren. Der Prozess schließt mehrere Schleifen ein, von denen jede eine Programmphase und eine Verifizierungsphase einschließt. Der Prozess von 6 wird durchgeführt, um die vollständige Sequenzprogrammierung sowie andere Programmierschemata, einschließlich Multipass-Programmierung, zu implementieren. Bei der Implementierung der Multipass-Programmierung wird der Prozess von 6 verwendet, um jeden einzelnen Durchgang der Multipass-Programmierung zu implementieren.
-
Üblicherweise wird die Programmierspannung, die an die Steuer-Gates (über eine ausgewählte Datenwortleitung) während eines Programmiervorgangs angelegt wird, als eine Reihe von Programmierimpulsen (z. B. Spannungsimpulsen) angelegt. Zwischen Programmierimpulsen befindet sich ein Satz von Verifizierimpulsen (z. B. Spannungsimpulse), um eine Verifizierung durchzuführen. In vielen Implementierungen wird die Größe der Programmierimpulse mit jedem sukzessiven Impuls um eine vorbestimmte Schrittgröße erhöht. In Schritt 602 von 6 wird das Programmierspannungssignal (Vpgm) auf die Startgröße initialisiert (z. B. -12-16 V oder eine andere geeignete Stufe) und ein von der Zustandsmaschine 262 geführter Programmzähler PC wird auf 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 gehemmt werden soll. Wenn Speicherzellen ihren beabsichtigten Zieldatenzustand erreichen, werden sie außerdem in der weiteren Programmierung gehemmt. 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 gehemmt werden soll, werden ihre Kanäle verstärkt, um die Programmierung zu hemmen. 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 der Steuerchip in Schritt 604 Kanäle von NAND-Strings vor, die Speicherzellen einschließen, die mit der ausgewählten Wortleitung verbunden sind und für die eine Programmierung gehemmt werden soll. In Schritt 606 werden die Kanäle von NAND-Strings, die Speicherzellen einschließen, die mit der ausgewählten Wortleitung verbunden sind und für die eine Programmierung gehemmt werden soll, verstärkt, um die Programmierung zu hemmen. Solche NAND-Ketten werden hierin als „nicht ausgewählte NAND-Ketten“ bezeichnet. In einer Ausführungsform erhalten die nicht ausgewählten Wortleitungen eine oder mehrere Verstärkungsspannungen (z. B. -7-11 Volt), die auch als Durchlassspannungen bezeichnet werden, um Verstärkungsschemata durchzuführen. Eine Programmhemmspannung wird an die Bitleitungen angelegt, die mit der nicht ausgewählten NAND-Kette gekoppelt sind.
-
In Schritt 608 wird ein Programmspannungsimpuls des Programmierspannungssignals Vpgm an die ausgewählte Wortleitung (die zur Programmierung ausgewählte Wortleitung) angelegt. Wenn eine Speicherzelle auf einem NAND-String programmiert werden soll, dann wird die entsprechende Bitleitung mit einer Programmfreigabespannung vorgespannt. In Schritt 608 wird der Programmierimpuls gleichzeitig an alle Speicherzellen angelegt, die mit der ausgewählten Wortleitung verbunden sind, so dass alle mit der ausgewählten Wortleitung verbundenen Speicherzellen gleichzeitig programmiert werden (sofern sie nicht für die Programmierung gesperrt sind). 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 gehemmt ist.
-
In Schritt 610 wird eine Programmverifizierung durchgeführt und Speicherzellen, die ihren Zielzustand erreicht haben, werden vom Steuerchip für die weitere Programmierung gesperrt. Schritt 610 schließt die Durchführung der Programmierungsverifizierung durch Abtasten einer oder mehrerer Verifizierungsreferenzpegel ein. In einer Ausführungsform wird der Verifizierungsprozess durchgeführt, indem geprüft wird, ob die Schwellenspannungen der zur Programmierung ausgewählten Speicherzellen die geeignete Verifizierungsreferenzspannung erreicht haben. In Schritt 610 kann eine Speicherzelle gesperrt werden, nachdem überprüft wurde (durch einen Test von Vt), dass die Speicherzelle ihren Zielzustand erreicht hat.
-
Wenn in Schritt 612 bestimmt wird, dass alle Speicherzellen ihre Zielschwellenspannungen erreicht haben (bestanden), ist der Prozess der Programmierung abgeschlossen und erfolgreich, da alle ausgewählten Speicherzellen auf ihre Zielzustände programmiert und verifiziert wurden. In Schritt 614 wird ein Status von „BESTANDEN“ gemeldet. Andernfalls, wenn in Schritt 612 bestimmt wird, dass nicht alle Speicherzellen ihre Zielschwellenspannungen erreicht haben (durchgefallen), dann wird der Prozess mit Schritt 616 fortgesetzt.
-
In Schritt 616 wird die Anzahl der Speicherzellen gezählt, die ihre jeweilige Zielschwellenspannungsverteilung noch nicht erreicht haben. Das heißt, es wird die Anzahl der Speicherzellen gezählt, die ihren Zielzustand bis dahin noch nicht erreicht haben. Diese Zählung kann von der Zustandsmaschine 262, der Speichersteuerung 120 oder einer anderen Schaltung vorgenommen werden. In einer Ausführungsform gibt es einen Gesamtzählwert, der die Gesamtzahl der gegenwärtig programmierten Speicherzellen wiedergibt, die in dem letzten Verifizierungsschritt durchgefallen sind. In einer anderen Ausführungsform werden separate Zählwerte für jeden Datenzustand ermittelt.
-
In Schritt 618 wird bestimmt, ob der Zählwert von Schritt 616 kleiner oder gleich einer vorgegebenen Grenze ist. In einer Ausführungsform ist die vorbestimmte Grenze die Anzahl von Bits, die durch Fehlerkorrekturcodes (ECC) während eines Leseprozesses für die Seite von Speicherzellen korrigiert werden können. Wenn die Anzahl durchgefallener Speicherzellen kleiner oder gleich der vorbestimmten Grenze ist, kann der Programmierprozess beendet werden und in Schritt 614 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 ist die in Schritt 618 verwendete vorbestimmte Grenze kleiner als die Anzahl von Bits, die durch Fehlerkorrekturcodes (ECC) während eines Leseprozesses korrigiert werden können, um zukünftige/zusätzliche Fehler zu berücksichtigen. 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. Bei 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 durchgefallener Speicherzellen nicht kleiner als die vorbestimmte Grenze ist, dann fährt der Programmierprozess mit Schritt 620 fort und der Programmzähler PC wird gegen den Programmgrenzwert (PL) überprüft. Beispiele für Programmgrenzwerte schließen 6, 12, 16, 19, 20 und 30 ein; jedoch können andere Werte verwendet werden. Wenn der Programmzähler PC nicht kleiner als der Programmgrenzwert PL ist, wird der Prozess als durchgefallen betrachtet und der Status DURCHGEFALLEN wird in Schritt 624 gemeldet. Wenn der Programmzähler PC kleiner als der Programmgrenzwert PL ist, wird der Prozess in Schritt 626 fortgesetzt. Während dieser Zeit wird der Programmzähler PC um 1 erhöht und das Programmierspannungssignal Vpgm auf den nächsten Wert gesteigert. Zum Beispiel hat der nächste Impuls eine um eine Schrittgröße ΔVpgm größere Amplitude als der vorherige Impuls (z. B. eine Schrittgröße von 0,1-1,0 Volt). Nach Schritt 626 kehrt der Prozess zu Schritt 604 zurück und ein weiterer Programmimpuls wird an die ausgewählte Wortleitung angelegt (durch den Steuerchip), so dass eine weitere Iteration (Schritte 604-626) des Programmierprozesses von 6 durchgeführt wird.
-
In einer Ausführungsform werden die Speicherzellen vor dem Programmieren gelöscht, und das Löschen ist der Prozess der Änderung der Schwellenspannung einer oder mehrerer Speicherzellen von einem programmierten Datenzustand in einen gelöschten Datenzustand. Zum Beispiel die Änderung der Schwellenspannung einer oder mehrerer Speicherzellen vom Zustand P zum Zustand E von 5A, von den Zuständen A/B/C zum Zustand E von 5B, von den Zuständen A-G zum Zustand Er von 5C oder von den Zuständen S1-S15 zum Zustand S0 von 5D.
-
Eine Technik zum Löschen von Speicherzellen in einigen Speichereinrichtungen ist das Vorspannen eines p-Well-Substrats (oder andere Arten von Substraten) auf eine Hochspannung, um einen NAND-Kanal aufzuladen. Eine Löschfreigabespannung (z. B. Niederspannung) wird an die Steuer-Gates von Speicherzellen angelegt, während sich der NAND-Kanal auf einer Hochspannung befindet, um die nichtflüchtigen Speicherungselemente (Speicherzellen) zu löschen. Dies wird hierin als p-Well-Löschvorgang bezeichnet.
-
Ein anderer Ansatz zum Löschen von Speicherzellen besteht darin, Gate-induzierten Drain-Leckstrom (GIDL-Strom) zu erzeugen, um den NAND-Kettenkanal aufzuladen. An Steuer-Gates der Speicherzellen wird eine Löschfreigabespannung angelegt, während das NAND-Ketten-Kanal-Potential aufrechterhalten wird, um die Speicherzellen zu löschen. Dies wird hierin als GIDL-Löschvorgang bezeichnet. Sowohl p-Well-Löschvorgang als auch GIDL-Löschvorgang können verwendet werden, um die Schwellenspannung (Vt) von Speicherzellen zu senken.
-
In einer Ausführungsform wird der GIDL-Strom durch Bewirken einer Drain-zu-Gate-Spannung an einem Auswahltransistor (z. B. SGD und/oder SGS) erzeugt. Eine Transistor-Drainzu-Gate-Spannung, die einen GIDL-Strom erzeugt, wird hierin als eine GIDL-Spannung bezeichnet. Der GIDL-Strom kann entstehen, wenn die Drain-Spannung des Auswahltransistors deutlich höher ist als die Steuer-Gate-Spannung des Auswahltransistors. Der GIDL-Strom ist ein Ergebnis der Trägererzeugung, d. h. der Elektronenloch-Paarerzeugung aufgrund von Band-zu-Band-Tunneln und/oder fallenunterstützter Erzeugung. In einer Ausführungsform kann der GIDL-Strom dazu führen, dass eine Art von Trägern, z. B. Löcher, sich vorwiegend in den NAND-Kanal bewegen, wodurch das Potential des Kanals angehoben wird. Die anderen Arten von Trägern, z. B. Elektronen, werden aus dem Kanal in Richtung einer Bitleitung oder in Richtung einer Sourceleitung durch ein elektrisches Feld extrahiert. Während des Löschens können die Löcher vom Kanal zu einem Ladungsspeicherungsbereich von Speicherzellen durchtunneln und dort mit Elektronen rekombinieren, um die Schwellenspannung der Speicherzellen zu senken.
-
Der GIDL-Strom kann an jedem Ende der NAND-Kette erzeugt werden. Eine erste GIDL-Spannung kann zwischen zwei Anschlüssen eines Auswahltransistors (z. B. eines Auswahltransistors auf der Drain-Seite) erzeugt werden, der an oder in der Nähe einer Bitleitung angeschlossen ist, um einen ersten GIDL-Strom zu erzeugen. Eine zweite GIDL-Spannung kann zwischen zwei Anschlüssen eines Auswahltransistors (z. B. eines Auswahltransistors auf der Source-Seite) erzeugt werden, der an oder in der Nähe einer Source-Leitung angeschlossen ist, um einen zweiten GIDL-Strom zu erzeugen. Das Löschen basierend auf dem GIDL-Strom an nur einem Ende der NAND-Kette wird als ein einseitiger GIDL-Löschvorgang bezeichnet. Das Löschen basierend auf dem GIDL-Strom an beiden Enden der NAND-Kette wird als ein zweiseitiger GIDL-Löschvorgang bezeichnet.
-
In einigen Ausführungsformen führen die Steuerung, der Steuerchip oder der Speicherchip den ECC-Decodierungsprozess durch (siehe ECC-Maschine). Um Fehler zu beheben, die beim Speichern von Daten auftreten können, wird die Fehlerkorrektur verwendet. Während des Programmierprozesses codiert die ECC-Maschine die Daten, um ECC-Informationen hinzuzufügen. Die ECC-Maschine wird zum Beispiel zur Erstellung von Codewörtern verwendet. In einer Ausführungsform werden Daten in Einheiten von Seiten programmiert. Da es möglich ist, dass Fehler beim Programmieren oder Lesen auftreten können und Fehler beim Speichern von Daten auftreten können (z. B. aufgrund von Driften von Elektronen, Datenhalteproblemen oder anderen Phänomenen), wird eine Fehlerkorrektur mit der Programmierung einer Seite von Daten verwendet. Viele Fehlerkorrektur-Codierungsschemata sind nach dem Stand der Technik gut bekannt. Diese herkömmlichen Fehlerkorrekturcodes (ECC) sind besonders nützlich bei großen Speichern, einschließlich Flash-Speichern (und anderen nichtflüchtigen), aufgrund der beträchtlichen Auswirkung auf die Produktionsausbeute und die Zuverlässigkeit der Vorrichtung, die derartige Codierungsschemata bereitstellen können, wenn sie Vorrichtungen, die einige nicht programmierbare oder defekte Zellen aufweisen, dahingehend ändern, dass sie nutzbar werden. Natürlich besteht ein Kompromiss zwischen der Ertragseinsparung und den Kosten des Bereitstellens zusätzlicher Speicherzellen, um die Codebits zu speichern (d. h. die Code-„Rate“). Als solches sind einige ECC-Codes besser geeignet für Flash-Speichereinrichtungen als andere. Generell neigen ECC-Codes für Flash-Speichereinrichtungen dazu, höhere Code-Raten (d. h. ein niedrigeres Verhältnis von Codebits zu Datenbits) als die in Datenkommunikationsanwendungen verwendeten Codes (die Code-Raten von nur 1/2 haben können) aufzuweisen. Beispiele für gut bekannte ECC-Codes, die üblicherweise in Verbindung mit einer Flash-Speicherspeicherung verwendet werden, schließen Reed-Solomon-Codes, andere BCH-Codes, Hamming-Codes und dergleichen ein. Manchmal sind die in Verbindung mit Flash-Speicherspeicherung verwendeten Fehlerkorrekturcodes dahingehend „systematisch“, dass der Datenteil des letztendlichen Codeworts von den eigentlichen Daten, die codiert werden, unverändert ist, wobei die Code- oder Paritätsbits an die Datenbits angehängt sind, um das vollständige Codewort zu bilden. In anderen Ausführungsformen sind die eigentlichen Daten geändert.
-
Die spezifischen Parameter für einen bestimmten Fehlerkorrekturcode schließen die Art des Codes, die Größe des Blocks tatsächlicher Daten, von denen das Codewort abgeleitet wird, und die Gesamtlänge des Codeworts nach der Codierung ein. Beispielsweise kann ein typischer BCH-Code, der auf 512 Bytes (4096 Bits) von Daten angewendet wird, bis zu vier Fehlerbits korrigieren, wenn mindestens 60 ECC- oder Paritätsbits verwendet werden. Reed-Solomon-Codes sind eine Teilsatz von BCH-Codes und werden auch allgemein zur Fehlerkorrektur verwendet. Zum Beispiel kann ein typischer Reed-Solomon-Code bis zu vier Fehler in einem 512 Byte-Datensektor korrigieren, wobei etwa 72 ECC-Bits verwendet werden. Im Kontext von Flash-Speichern bietet Fehlerkorrektur-Codierung eine wesentliche Verbesserung bei der Produktionsausbeute sowie bei der Zuverlässigkeit des Flash-Speichers im Zeitverlauf.
-
In einigen Ausführungsformen empfängt die Steuerung Hostdaten, die auch als Informationsbits bezeichnet werden und in einer Speicherstruktur gespeichert werden sollen. Die Informationsbits werden durch die Matrix i=[1 0] dargestellt (es ist zu beachten, dass zwei Bits nur als Beispiel verwendet werden und viele Ausführungsformen Codeworte aufweisen, die länger als zwei Bits sind). Ein Fehlerkorrektur-Codierungsprozess (wie einer der oben oder unten genannten Prozesse) wird implementiert, bei dem Paritätsbits zu den Informationsbits hinzugefügt werden, um Daten bereitzustellen, die durch die Matrix oder das Codewort v=[1 0 1 0] dargestellt werden, was anzeigt, dass zwei Paritätsbits an die Datenbits angehängt wurden. Andere Techniken können verwendet werden, die Eingangsdaten auf komplexere Weise zu Ausgangsdaten zuweisen. Beispielsweise können Paritätsprüfcodes niedriger Dichte (LDPC), die auch als Gallager-Codes bezeichnet werden, verwendet werden. Mehr Details über LDPC-Codes sind in R. G. Gallager, „Low-density parity-check codes,“ IRE Trans. Inform. Theory, Band IT 8, S. 21 28, Januar 1962; und D. MacKay, Information Theory, Inference and Learning Algorithms, Cambridge University Press 2003, Kapitel 47, zu finden. In der Praxis werden derartige LDPC-Codes üblicherweise auf mehrere Seiten angewendet, die über eine Anzahl von Speicherungselementen codiert sind, aber sie müssen nicht über mehrere Seiten hinweg angewendet werden. Die Datenbits können auf eine logische Seite abgebildet und in der Speicherstruktur 326 gespeichert werden, indem eine oder mehrere Speicherzellen auf einen oder mehrere Programmierzustände programmiert werden, die der Matrix oder dem Codewort v entsprechen.
-
In einer möglichen Implementierung wird ein iterativer probabilistischer Decodierungsprozess verwendet, der Fehlerkorrekturdecodierung implementiert, die der in der Steuerung 120 implementierten Codierung entspricht. Weitere Einzelheiten hinsichtlich der iterativen probabilistischen Decodierung sind in dem vorstehend genannten Text von D. MacKay zu finden. Das iterative probabilistische Decodieren versucht, ein Codewort durch Zuweisen anfänglicher Wahrscheinlichkeitsmetriken zu jedem Bit in dem Codewort zu decodieren. Die Wahrscheinlichkeitsmetriken zeigen eine Zuverlässigkeit jedes Bits an, das heißt, wie wahrscheinlich es ist, dass das Bit nicht fehlerhaft ist. Bei einem Ansatz handelt es sich bei den Wahrscheinlichkeitsmetriken um logarithmische Wahrscheinlichkeitsquotienten (LLRs), die aus LLR-Tabellen erhalten werden. LLR-Werte sind Maße der Zuverlässigkeit, mit der die Werte von verschiedenen Binärbits, die aus den Speicherungselementen gelesen werden, bekannt sind.
-
Die LLR für ein Bit ist gegeben durch:
wobei P (v=0|Y) die Wahrscheinlichkeit ist, dass ein Bit eine 0 ist, vorausgesetzt, dass der gelesene Zustand Y ist, und P (v=1|Y) die Wahrscheinlichkeit ist, dass ein Bit eine 1 ist, vorausgesetzt, dass der gelesene Zustand Y ist. Somit zeigt ein LLR>0 an, dass ein Bit wahrscheinlicher eine 0 ist als eine 1, während ein LLR<0 anzeigt, dass ein Bit wahrscheinlicher eine 1 ist als eine 0, um eine oder mehrere Paritätsprüfungen des Fehlerkorrekturcodes zu erfüllen. Weiterhin zeigt eine größere Größe eine größere Wahrscheinlichkeit oder Zuverlässigkeit an. Somit ist ein Bit mit einem LLR=63 wahrscheinlicher eine 0 als ein Bit mit einem LLR=5, und ein Bit mit einem LLR=-63 ist wahrscheinlicher eine 1 als ein Bit mit einem LLR=-5. LLR=0 zeigt an, dass das Bit gleichermaßen wahrscheinlich eine 0 oder eine 1 ist.
-
Ein LLR-Wert kann für jede der Bitpositionen in einem Codewort bereitgestellt werden. Weiterhin können die LLR-Tabellen die mehreren Leseergebnisse berücksichtigen, so dass ein LLR größerer Größe verwendet wird, wenn der Bitwert in den unterschiedlichen Codewörtern einheitlich ist.
-
Die Steuerung empfängt das Codewort Y1 und die LLRs und iteriert in aufeinanderfolgenden Iterationen, in denen sie feststellt, ob die Paritätsprüfungen (Gleichungen) des Fehlercodierungsprozesses erfüllt wurden. Wenn alle Paritätsprüfungen erfüllt wurden, ist der Decodierprozess konvergiert und das Codewort wurde fehlerkorrigiert. Wenn eine oder mehrere Paritätsprüfungen nicht erfüllt wurden, wird der Decodierer die LLRs eines oder mehrerer der Bits anpassen, die mit einer Paritätsprüfung nicht übereinstimmen, und dann die Paritätsprüfung oder nächste Prüfung in dem Prozess erneut anwenden, um zu bestimmen, ob sie erfüllt wurde. Beispielsweise kann die Größe und/oder Polarität der LLRs eingestellt werden. Ist die betreffende Paritätsprüfung noch nicht erfüllt, kann das LLR in einer anderen Iteration erneut angepasst werden. Anpassen der LLRs kann zum Umkehren eines Bits (z. B. von 0 zu 1 oder von 1 zu 0) in einigen, aber nicht allen Fällen führen. In einer Ausführungsform wird eine weitere Paritätsprüfung auf das Codewort angewendet, falls anwendbar, sobald die fragliche Paritätsprüfung erfüllt ist. Bei anderen wechselt der Prozess zu der nächsten Paritätsprüfung, wobei zu einem späteren Zeitpunkt zu der nicht bestandenen Prüfung zurückgekehrt wird. Der Prozess setzt sich in einem Versuch fort, alle Paritätsprüfungen zu erfüllen. Somit ist der Decodierungsprozess von Y1 abgeschlossen, um die decodierten Informationen einschließlich der Paritätsbits v und der decodierten Informationsbits i zu erhalten.
-
7 veranschaulicht einen konventionellen Lesefluss, der die ECC-Korrektur und die Behandlung von Lesefehlern beinhaltet. Schritt 701 ist ein Lesen der in den Speicherzellen gespeicherten Daten, um ein „Hardbit“ (HB) zu bestimmen, wobei die Hardbit-Werte einem Standardlesevorgang unter Verwendung der Werte Vri von 5A-5C entsprechen, die zur Unterscheidung der verschiedenen Zustände verwendet werden, wenn es sich um gut definierte, getrennte Verteilungen wie in 5A-5C handelt. In Schritt 703 wird bestimmt, ob die Lesedaten mit ECC-Techniken korrigiert werden können, und wenn ja, wird der Leseprozess in Schritt 705 durchgeführt. Wenn die Hardbit-Daten durch die ECC in Schritt 703 unkorrigierbar werden, kann in Schritt 707 ein Lesefehlerbehandlungsfluss aufgerufen werden, der verschiedene Lesearten zur Wiederherstellung der gelesenen Daten beinhalten kann. Einige Beispiele für Lesearten, die je nach Ausführungsform zur Wiederherstellung des Dateninhalts verwendet werden können, sind: „CFh-Lesen“ 711, d. h. ein erneutes Lesen des Hardbits, das den nicht ausgewählten Wortleitungen eines NAND-Strings eine längere Zeit einräumt, um die Vorspannung zu erreichen, oder andere alternative Lesezeitpunkte für die Vorspannung, wie etwa eine längere Einstellzeit für Vorspannungsstufen, wie die Spannung der ausgewählten Wortleitung; ein „Softbit“-Lesen 713, das Informationen über die Zuverlässigkeit des Hardbit-Wertes bereitstellt; ein „BES-Lesen“ 715, das versucht, die Hardbit-Lesestufen zu verschieben, um die Daten zu extrahieren; und „DLA-Lesen“ 717, das die Auswirkungen benachbarter Wortleitungen auf die gelesene Wortleitung betrachtet. Ein oder mehrere dieser Verfahren können in verschiedenen Sequenzen oder Kombinationen kombiniert werden, um zu versuchen, den Dateninhalt zu extrahieren, falls der grundlegende ECC-Prozess durchfällt. Bei allen Ausführungsformen wird die Leistung oft stark beeinträchtigt, sobald der Lesefehlerbehandlungsfluss 707 als Schritt 703 aufgerufen wird. Im Folgenden werden Techniken zur Verwendung von Softbit-Daten bei gleichzeitiger Reduzierung der Auswirkungen auf die Speicherleistung betrachtet. 8 betrachtet die Verwendung von Softbits im Detail.
-
8 kann zum Veranschaulichen des Konzepts der Hardbits und Softbits verwendet werden. 8 veranschaulicht die Überlappung der Verteilung von zwei benachbarten Datenzuständen und einem Satz von Lesewerten, die zur Bestimmung des Datenzustands einer Zelle und der Zuverlässigkeit eines solchen Lesevorgangs verwendet werden können, wobei die entsprechenden Hardbits und Softbits in der Tabelle darunter für eine bestimmte Codierung von Werten gezeigt werden. Der Lesewert VH ist ein anfänglicher Datenzustandswert oder Hartlesewert, der zur Bestimmung eines Hardbit (HB)-Wertes verwendet wird und den Werten Vri von 5A, 5B oder 5C entspricht, die zur Unterscheidung der verschiedenen Zustände verwendet werden, wenn es sich um gut definierte, getrennte Verteilungen wie in 5A-5C handelt. Die zusätzlichen Lesestufen VS+, die etwas oberhalb von VH liegen, und VS-, die etwas unterhalb von VH liegen, sind „Soft-Lese“-Werte und können verwendet werden, um „Softbit“-Werte (SB) bereitzustellen. Die Softbit-Werte geben Informationen über die Qualität oder Zuverlässigkeit der anfänglichen Datenzustandswerte oder Hardbit-Daten, da die Softbit-Daten Informationen darüber bereitstellen, inwieweit sich die Verteilungen verbreitet haben. Einige Ausführungsformen von ECC-Codes, wie etwa Paritätscodes niedriger Dichte (LDPC), können sowohl die Hardbit- als auch die Softbit-Daten verwenden, um ihre Fähigkeit zu erhöhen. Obwohl 8 nur das Paar der Softbit-Lesewerte zeigt, können andere Ausführungsformen zusätzliche Randlesewerte verwenden, um mehr Softbit-Werte für ein bestimmtes Hardbit zu erzeugen, wenn eine höhere Auflösung gewünscht ist. Im Allgemeinen entspricht das Hardbit dem vermuteten Datenwert basierend auf einem Abtastvorgang und die Softinformation, die ein einzelnes binäres Softbit, mehrere Softbits oder ein Dezimal- bzw. Bruchwert sein kann, zeigt die Zuverlässigkeit oder Vertrauenswürdigkeit des Hardbit-Werts an. Bei ECC-Verfahren, die Softinformationen verwenden, können die Softinformationen als die Wahrscheinlichkeit behandelt werden, dass ein entsprechender Hardbit-Wert korrekt ist.
-
Wenn während eines Lesevorgangs VH unter dem Schwellenwert der Speicherzelle liegt, ist die Speicherzelle nicht leitend und der gelesene Datenwert (HB) wird als „0“ gelesen. Wenn sich eine Speicherzelle in dem zentralen Bereich einer der beiden Verteilungen in 8 befindet, wird ein Lesevorgang an VS+ und VS- das gleiche Ergebnis bereitstellen; wenn diese Werte voneinander abweichen, liegt die Schwellenspannung der Speicherzelle zwischen diesen Werten und könnte aus der hinteren Bereich entweder der Verteilung oben oder der Verteilung unten stammen, so dass die HB-Daten unzuverlässig sind. Das Lesen auf diesen beiden Stufen und die XNOR-Verknüpfung der Ergebnisse ergibt einen SB-Wert von „1“, wenn die Daten als zuverlässig gelten, und einen SB-Wert von „0“, wenn sie unzuverlässig sind.
-
Wenn zum Beispiel sowohl SB+ als auch SB- „0“ sind, dann:
SB=1 und der gelesene HB-Wert wird als zuverlässig behandelt. Bei einer Soft-Bitdecodierung in ECC führt dies dazu, dass eine Speicherzelle in der oberen Verteilung HB=„0“ und SB=„1“ aufweist, was ein zuverlässiges korrektes Bit (RCB) anzeigt, während eine Speicherzelle mit einer Schwellenspannung zwischen SB+ und SB- SB=„0“ ergibt, was anzeigt, dass der HB-Wert unzuverlässig ist.
-
9A und 9B zeigen jeweils die Lesestufen für die Berechnung von Hardbit- und Softbit-Werten für die untere Seite der Daten in einer Ausführungsform mit drei Datenbits pro Speicherzelle unter Verwendung der Codierung der obigen Tabelle 2, wobei Softbit-Werte von 1 bzw. 0 anzeigen, dass der Hardbit-Wert zuverlässig bzw. unzuverlässig ist. 9A zeigt die Schwellenspannungsverteilung von Speicherzellen in einem 3-Bit pro Zelle, ähnlich wie in 5C, wobei die Verteilungen jedoch nicht so gut definiert sind und ein gewisses Maß an Überlappung aufweisen. Die Überlappung der Verteilungen kann verschiedene Ursachen haben, wie etwa Ladungslecks oder Störungen, bei denen Vorgänge auf einer Wortleitung oder Bitleitung den Datenzustand auf benachbarten Speicherzellen beeinflussen. Außerdem werden die Verteilungen bei einem tatsächlichen Schreibvorgang oft nicht so gut definiert sein wie in 5C gezeigt, da das Schreiben von Speicherzellen mit einer solchen Genauigkeit der Leistung abträglich ist, da eine größere Anzahl von Feinprogrammierschritten und einige Zellen schwer oder zu schnell zu programmieren sind. Aus diesem Grund lassen Programmieralgorithmen üblicherweise ein gewisses Maß an Überlappungen zu und verlassen sich auf ECC, um den Inhalt der Benutzerdaten genau zu extrahieren.
-
Die Lesepunkte, die zur Unterscheidung eines unteren Seitendatenwerts verwendet werden, werden als gestrichelte vertikale Linien zwischen den Zuständen Er und A und zwischen den Zuständen D und E dargestellt, zusammen mit den entsprechenden Hardbit-Werten, die darunter stehen. Aufgrund der Überlappung der Verteilungen wird eine Anzahl von Speicherzellen, die Er- oder E-Daten speichern, fälschlicherweise als HB=0 gelesen und eine Anzahl von Speicherzellen, die A- oder D-Daten speichern, fälschlicherweise als HB=1 gelesen. Die optimalen Lesewerte können im Rahmen der Charakterisierung der Vorrichtung bestimmt und zum Beispiel als Schmelzwerte für die Steuerschaltung gespeichert werden. In einigen Ausführungsformen kann die Steuerschaltung diese Werte verschieben, um ihre Genauigkeit als Teil eines standardmäßigen Lesevorgangs oder als Teil eines Lesefehlerbehandlungsflusses 707 als BES-Lesung 715 zu verbessern.
-
Um höhere Fehlermengen bewältigen zu können, kann eine stärkere ECC verwendet werden. Dies erfordert jedoch die Speicherung von mehr Paritätsbits, wodurch der Anteil der für Benutzerdaten verfügbaren Speicherzellen sinkt und die Speicherkapazität effektiv verringert wird. Außerdem wird die Leistung beeinträchtigt, da mehr Berechnungen erforderlich sind, um die Codewörter zu codieren bzw. zu decodieren und die zusätzlichen ECC-Daten zu schreiben und zu lesen. Außerdem müssen die ECC-Daten über die Datenbusstrukturen zur und von der ECC-Schaltung übertragen werden.
-
9B zeigt die Softbit-Werte und die Lesepunkte, die zur Bestimmung der Softbit-Werte verwendet werden können, die den Hardbit-Werten der unteren Seite in 9A entsprechen. Wie gezeigt, werden die Softbit-Werte basierend auf einem Paar von Lesungen bestimmt, die zu beiden Seiten des grundlegenden Hardbit-Lesewertes liegen. Diese Softbit-Lesewerte können auf Versätzen zu den Hardbit-Lesewerten basieren, entweder symmetrisch oder asymmetrisch, und als Schmelzwerte in einem Register gespeichert werden, das zum Beispiel im Rahmen der Bestimmung der Vorrichtung festgelegt wird. In anderen Ausführungsformen können sie dynamisch bestimmt oder aktualisiert werden. Obwohl die Verwendung von Softbits in Schritt 713 bei der Extraktion von Dateninhalten, die in Schritt 703 nicht extrahiert werden können, recht effektiv sein kann, ist sie mit einem Leistungsnachteil verbunden, da sie als Reaktion auf ein Durchfallen der ECC in Schritt 703 aufgerufen werden muss, zwei zusätzliche Lesevorgänge für jeden Hardbit-Lesevorgang verwendet, die Softbit-Daten nach den zusätzlichen Lesevorgängen übertragen werden müssen und zusätzliche Berechnungen durchgeführt werden müssen.
-
Um diese Situation zu verbessern, werden im Folgenden Ausführungsformen für einen „effizienten Soft-Abtast-Modus“ vorgestellt. In diesem Abtastmodus können das Lesen von Hardbits und das Lesen von Softbits in einer Sequenz kombiniert werden, die zwei Stufen für eine effiziente Abtastung der Zeit verwendet. Durch die Verwendung von effizientem Soft-Abtast-Lesen als Standardmodus können die zusätzlichen Softbit-Informationen für die ECC-Korrektur bereitgestellt werden, ohne dass ein Lesefehlerbehandlungsfluss ausgelöst wird. Da nur zwei Abtastvorgänge verwendet werden, um sowohl die Hardbit- als auch die Softbit-Daten zu erzeugen, vermeidet diese Technik die Verdreifachung der Abtastzeit, die bei einem standardmäßigen Hard- und Soft-Lesevorgang entsteht. Durch die Zusammenlegung von Hardbit- und Soft-Abtasten in einer Sequenz kann außerdem ein Großteil des zusätzlichen Aufwands vermieden werden, der bei Lesesequenzvorgängen anfällt (z. B. die Aktivierung von Ladungspumpen, das Hochfahren von Wortleitungen usw.). 10 veranschaulicht die Verwendung des effizienten Soft-Abtast-Modus.
-
10 veranschaulicht die Zuordnung von Hardbit- und Softbit-Werten zusammen mit den Lesestufen, die in einer Ausführungsform für effizientes Soft-Abtasten verwendet werden. 10 ähnelt 8 und zeigt die Vth-Verteilung der Speicherzellen für zwei Datenzustände, die sich wiederum im zentralen Bereich überlappen. Es wird wieder ein Hardbit-Lesevorgang durchgeführt, aber anstatt zu versuchen, in oder nahe der Mitte des überlappenden Bereichs an einem für die Unterscheidung der beiden Zustände optimierten Punkt platziert zu werden, wird in dieser Ausführungsform der Hardbit-Lesevorgang auf die untere Vth-Seite verschoben, so dass jede Speicherzelle, die bei oder unterhalb von VH liest, zuverlässig im unteren Datenzustand ist (hierin als eine „1“ veranschaulicht, wie in der beispielhaften 8). Ihm wird auch ein Softbit-Wert von „0“ zugewiesen, wobei im Gegensatz zur Ausführungsform von 8 ein SB=0-Wert nun einen zuverlässigen HB-Wert anzeigt. Wenn die Speicherzelle über VH liest, entspricht ihr Hardbit-Wert dem höheren Vth-Datenzustand mit HB=0. In der Ausführungsform von 10 wird anstelle der zwei Softbit-Lesevorgänge von 8 nur ein einziger Softbit-Lesevorgang als Versatz des VS-Werts auf die hohe Vth-Seite durchgeführt. Wenn die Vth der Speicherzelle über VS liegt, wird ihr ein HB-Wert von HB=0 zugewiesen und sie wird als zuverlässig (HS=0) betrachtet. Für eine Speicherzelle mit einer Vth, die zwischen VH und VS liegt, wird der Speicherzelle HB=0 zugewiesen, aber als unzuverlässig (SB=1) betrachtet. Es ist zu beachten, dass in der Ausführungsform von 10 nur einer der beiden Zustände auf Softbit-Daten geprüft wird, so dass nur der Zustand HB=0 einen der beiden SB-Werte aufweisen kann, während die Speicherzelle HB=1 immer SB=0 aufweist. Anders ausgedrückt, werden die Softbit-Daten nur auf der einen Seite (hier die untere Seite, für HB=0) des Paares überlappender Verteilungen bestimmt und nicht auf der anderen Seite (hierin die obere Seite, für HB=1). In dieser Ausführungsform wird die einzelne VS-Lesung links (höhere Vth) von der VH-Lesung durchgeführt, aber in anderen Ausführungsformen kann die Anordnung auch umgekehrt sein.
-
Obwohl die in der Ausführungsform von 10 erzeugte Gesamtdatenmenge geringer ist als die von 8, wird der effiziente Soft-Abtast-Modus von 10 oft ausreichen, um den Inhalt der Benutzerdaten zu extrahieren, ohne auf eine weitere Lesefehlerbehandlung zurückgreifen zu müssen. Da nur zwei Lesevorgänge an den Bestimmungen in 10 beteiligt sind, sind die Lesezeiten kürzer und können sogar noch weiter reduziert werden, indem beide Lesevorgänge als einzelner Abtastvorgang durchgeführt werden, wie in 12 beschrieben. Die erhöhte Fehlertoleranz, die ein effizientes Soft-Abtasten bereitstellt, kann auch die Schreibleistung verbessern, da die Daten nicht so genau programmiert werden müssen, was eine geringere Programmiertoleranz ermöglicht.
-
11 veranschaulicht die Anwendung des effizienten Soft-Abtast-Modus auf untere Seitendaten in einer Ausführungsform mit drei Datenbits pro Speicherzelle unter Verwendung der Codierung von Tabelle 2. 11 ähnelt 9A und 9B, fasst aber die HB- und SB-Werte in einer einzigen Figur zusammen und verwendet die einzelne SB-Lesestufe für eine gegebene HB-Lesestufe eines effizienten Soft-Abtastens, anstatt ein Paar SB-Lesestufen für eine gegebene HB. Bei der Unterscheidung zwischen dem Er-Zustand und dem A-Zustand zum Beispiel sind die Speicherzellen auf der linken Seite zuverlässig eine „1“ für den unteren Seitenwert, mit (HB, SB)=(1,0), wobei auch hier gilt, dass in dieser Codierung SB=0 einen zuverlässigen HB-Wert und SB=1 einen unzuverlässigen HB-Wert anzeigt. Bei der rechten Lesung für Er, A, zeigt eine Speicherzelle rechts eine Speicherzelle an, die einen zuverlässigen unteren Seitenwert von „0“ aufweist, oder (HB, SB)=(0,0). Speicherzellen mit einer Vth zwischen der linken und der rechten Lesestufe erhalten einen niedrigeren Hardbit-Wert von 0, werden aber als unzuverlässig betrachtet, so dass (HB, SB)=(0,1). Damit bei den Lesevorgängen zwischen den Zuständen D und E unterschieden werden kann, sind die Speicherzellen links vom linken Lesevorgang zuverlässig „0“ ((HB, SB)=(0,0)), die Speicherzellen oberhalb des rechten Lesevorgangs sind zuverlässige Daten der unteren Seite „1“ ((HB, SB)=(1,0)) und die Speicherzellen zwischen den beiden werden mit dem unzuverlässigen Wert der unteren Seite „1“ ((HB, SB)=(1,1)) versehen.
-
12 veranschaulicht eine Ausführungsform für die Abtastvorgänge der Lesevorgänge der unteren Seitendaten in einem effizienten Soft-Abtast-Lesevorgang, der den in 11 veranschaulichten Lesepunkten entspricht. Oben veranschaulicht 12 eine Steuer-Gate-Lesespannungs-Wellenform VCGRV, die an die Wortleitung einer ausgewählten Speicherzelle in Abhängigkeit von der Zeit für ein effizientes Soft-Abtasten für untere Seitendaten einer Speicherzelle mit 3 Bits pro Zelle angelegt werden kann, wobei die gestrichelten vertikalen Linien den vier Lesepunkten entsprechen, die auch in 11 durch gestrichelte Linien markiert sind (obwohl, wie noch erläutert wird, die Reihenfolge der Bestimmung unterschiedlich ist). Unterhalb der Wellenform wird gezeigt, wie diese Werte mit der Wellenform oben den Vth-Werten der D- und E-Zustandsverteilungen entsprechen.
-
Um die Lesezeit zu verbessern, verwendet die Ausführungsform von 12 einen Lesemodus mit „umgekehrter Reihenfolge“, obwohl andere Ausführungsformen die Standardreihenfolge verwenden können. In einer Standardlesereihenfolge beginnt die an die ausgewählten Speicherzellen angelegte Lesespannung mit den niedrigeren Werten und arbeitet sich dann nach oben. Beim Lesen in umgekehrter Reihenfolge wird die an eine ausgewählte Wortleitung angelegte Steuer-Gate-Lesespannung (VCGRV) zunächst auf einen hohen Wert hochgefahren und dann von höheren Vth-Zuständen zu niedrigeren Vth-Zuständen gelesen. In diesem Beispiel für das Lesen einer unteren Seite wird das Lesen zur Unterscheidung der Zustände D und E vor dem Lesen zur Unterscheidung des Zustands A vom gelöschten Zustand Er durchgeführt. Folglich sinkt die VCGRV-Spannung nach dem anfänglichen Hochfahren auf die Stufe für die Lesestufe des E-Zustands (ER) und dann auf die Stufe für den A-Zustand (AR) ab. Diese Reihenfolge kann die Zeit reduzieren, die für einen Großteil des zusätzlichen Aufwands (z. B. das Aktivieren von Ladungspumpen, das Hochfahren von Wortleitungen usw.) bei Lesesequenzvorgängen benötigt wird.
-
Für jede Lesespannungsstufe werden zwei Abtastvorgänge durchgeführt, um den Hardbit- und den Soft-Wert zu erzeugen, was eine schnellere Lesezeit ermöglicht, als wenn separate Lesespannungen verwendet würden. Bezüglich der Zustandsverteilungen D und E unten in 12, sind sowohl die gestrichelte Linie für die HB-Grenze als auch die gestrichelte Linie für die SB-Grenze relativ nahe bei den Vth-Werten, wobei die SB-Grenze bei einem höheren Vth-Wert nach rechts verschoben ist. In einer Ausführungsform, bei der das Abtasten auf der Entladung einer Spannung durch die ausgewählte Speicherzelle basiert, wird die Lesespannung ER folglich so gewählt, dass sowohl die HB- als auch die SB-Vth-Werte bis zu einem gewissen Grad leiten, jedoch in unterschiedlichem Umfang. Die HB-Grenze entspricht einem niedrigeren Vth-Wert, da eine Speicherzelle an diesem Punkt leitfähiger ist als eine an der SB-Grenze, sich folglich schneller entlädt und mit einem kürzeren Abtastintervall bestimmt werden kann. Der langsamer entladende SB-Grenzpunkt wird mit der gleichen Steuer-Gate-Spannung, aber einer längeren Abtastzeit abgetastet.
-
13 veranschaulicht eine Ausführungsform einer Leseverstärkerschaltung, die zur Bestimmung der Hardbit- und Softbit-Werte einer Speicherzelle verwendet werden kann. Die Leseverstärkerschaltung von 13 kann dem/den Leseverstärker(n) 230 von 2A oder 2B entsprechen und in die Struktur von 3 eingeschlossen sein. In der Ausführungsform der 13 wird der Zustand einer Speicherzelle bestimmt, indem eine Abtastleitung oder ein Abtastknoten SEN 1305 auf eine vorbestimmte Stufe vorgeladen wird, der Abtastknoten mit der Bitleitung einer vorgespannten ausgewählten Speicherzelle verbunden wird und bestimmt wird, in welchem Umfang sich der Knoten SEN 1305 über ein Abtastintervall entlädt. Eine Anzahl von Variationen ist möglich, je nach Ausführungsform, aber die Ausführungsform von 13 veranschaulicht üblicherweise einige typische Elemente. Der Knoten SEN 1305 kann über den Schalter SPC 1323 auf eine Stufe VHLB vorgeladen werden, wobei die Notation für viele der MOSFET-Schalter hier denselben Namen für den Transistor und das entsprechende Steuersignal verwendet, wobei die verschiedenen Steuersignale von Prozessor 330, Zustandsmaschine 262 und/oder anderen Steuerelementen der Ausführungsformen von 2A, 2B und 3 bereitgestellt werden können. Der Knoten SEN 1305 kann mit einer ausgewählten Speicherzelle entlang einer Bitleitung BL 1309 über einen Schalter XXL 1319 mit einem Knoten SCOM 1307 und dann, nach eventuell dazwischenliegenden Elementen, mit einem Bitleitungswahlschalter BLS 1327 verbunden werden, welcher der Decodier- und Auswahlschaltung der Speichervorrichtung entspricht. Der SEN-Knoten 1305 ist über den Schalter BLQ 1313 mit dem lokalen Datenbus LBUS 1301 verbunden, der wiederum über den Schalter DSW 1311 mit dem Datenbus DBUS 1303 verbunden werden kann. Ein Schalter LPC 1321 kann bis zu einer Stufe VLPC vorgeladen werden, wobei die Werte von VHLB und VLPC von den Einzelheiten der Ausführungsform und den Besonderheiten der Implementierung abhängen.
-
In einem Abtastvorgang wird eine ausgewählte Speicherzelle vorgespannt, indem ihre entsprechende ausgewählte Wortleitung auf eine Lesespannungsstufe wie oben beschrieben eingestellt wird. Bei der Implementierung eines NAND-Arrays sind die Auswahl-Gates und die nicht ausgewählten Wortleitungen des NAND-Strings der ausgewählten Wortleitung ebenfalls auf Ein geschaltet. Sobald das Array vorgespannt ist, leitet die ausgewählte Speicherzelle eine Stufe, die auf dem Verhältnis der angelegten Lesespannung zur Schwellenspannung der Speicherzelle basiert. Der Kondensator 1325 kann verwendet werden, um Ladung auf dem SEN-Knoten 1305 zu speichern, wobei während des Vorladens die Stufe CLK (und die untere Platte des Kondensators 1325) auf eine niedrige Spannung (z. B. Masse oder VSS) gesetzt werden kann, so dass die Spannung auf dem SEN-Knoten 1305 auf diese niedrige Spannung bezogen wird. Der vorgeladene SEN-Knoten 1305 eines ausgewählten Speichers wird über XXL 1319 und BLS 1327 mit der entsprechenden Bitleitung 1309 verbunden und darf sich für ein Abtastintervall auf eine Stufe entladen, die von der Schwellenspannung der Speicherzelle relativ zu der am Steuer-Gate der ausgewählten Speicherzelle angelegten Spannungsstufe abhängt. Am Ende des Abtastintervalls kann XXL 1319 ausgeschaltet werden, um die entstandene Ladung im SEN 1305 einzufangen. An diesem Punkt kann die Stufe CLK etwas angehoben werden, wodurch auch die Spannung an SEN 1305 angehoben wird, um Spannungsabfälle über dazwischenliegende Elemente (wie XXL 1319) im Entladungspfad zu berücksichtigen. Folglich spiegelt die Spannungsstufe am SEN 1305, die steuert, inwieweit der Transistor 1317 eingeschaltet ist, den Datenzustand der ausgewählten Speicherzelle im Verhältnis zur angelegten Lesespannung wider. Der lokale Daten-LBUS 1301 wird ebenfalls vorgeladen, so dass sich der LBUS zum CLK-Knoten entlädt, wenn der Strobe-Transistor STB 1315 für ein Strobe-Intervall eingeschaltet wird, was durch die Spannungsstufe an SEN 1305 bestimmt wird. Am Ende des Strobe-Intervalls wird der STB 1315 ausgeschaltet, um den abgetasteten Wert auf dem LBUS einzustellen und das Ergebnis kann in einem der Latches verriegelt werden, wie in 3 veranschaulicht.
-
Nun bezüglich 12, nachdem die ausgewählte Speicherzelle auf die Spannungsstufe ER vorgespannt wurde, je nach Bedarf zusammen mit anderen Array-Vorspannungen (ausgewählte Gates, nicht ausgewählte Wortleitungen, usw.) wird der vorgeladene SEN-Knoten 1305 für das Intervall ER zwischen den gestrichelten Linien entladen: wenn die Stufe an SEN hoch genug ist, um LBUS 1301 zu entladen, wenn STB 1315 abgetastet wird, liegt die Vth der Speicherzelle unter HB; wenn nicht, liegt sie über HB. Nach der Entladung für das zusätzliche Intervall ER+ wird der STB 1315 erneut abgetastet: wenn LBUS 1301 jetzt entlädt, liegt die Vth der Speicherzelle zwischen HB und SB; wenn nicht, liegt sie über SB. Der Prozess wird dann mit dem VCGRV-Wert auf derAR-Stufe wiederholt, um die HB- und SB-Werte für die Unterscheidung zwischen dem A- und dem gelöschten Zustand zu bestimmen.
-
In der in 12 veranschaulichten Ausführungsform wird folglich für jede Stufe der VCGRV das linke Abtastergebnis verwendet, um HB-Daten zu erzeugen, und das rechte Abtastergebnis wird mit dem linken Abtastergebnis kombiniert, um SB-Daten zu erzeugen. Um die Leistung für zwei Abtastungen (Links/Rechts) zu optimieren, verwendet die Ausführungsform von 12 die „Abtastzeitmodulation“ für die Vth-Trennung ohne eine Änderung der Spannungsstufe der Wortleitung.
-
Bezüglich der effizienten Soft-Abtast-Lesestufen-Steuerungen und -Parameter, so können diese, ähnlich wie bei den üblichen Implementierungen von Leseparametern, als Teil des Prozesses der Vorrichtungscharakterisierung bestimmt und als Registerwerte gespeichert werden (wie etwa Steuerdaten-Parameter, die als Schmelzwerte in der Speicherung 266 eingestellt sind), dynamisch bestimmt werden, oder eine Kombination dieser Möglichkeiten. In einem Satz an Ausführungsformen können die Hardbit- und Softbit-Lesestufen für ein effizientes Soft-Abtasten auf die standardmäßigen, harten Lesewerte bezogen werden. Selbst wenn der effiziente Soft-Abtast-Lesevorgang als Standardlesevorgang verwendet wird, verfügt eine Speichervorrichtung häufig über einen Standardlesevorgang (d.h. nur Hardbit) als Lesemodusoption, so dass die Standardlesewerte von 5A-5C als Leseoption zur Verfügung stehen. Zum Beispiel bezüglich 11 und der Lesestufen, die mit der Unterscheidung zwischen den Verteilungen der Zustände D und E zusammenhängen, können die effizienten Soft-Abtast-Stufen relativ zu den normalen HB-Lesetrimmwerten bezogen werden, die durch die dickere gestrichelte Linie am Scheitelpunkt der Verteilungen der Zustände D und E dargestellt werden. Die effizienten Soft-Abtast-Lesestufen für das linke Lesen (das effiziente Soft-Abtast-Hardbit, Minus-Stufe) und das rechte Lesen (das effiziente Soft-Abtast-Softbit, Plus-Stufe) können im Verhältnis zu den normalen HB-Lesestufen angegeben werden. Dies ermöglicht die Wiederverwendung von festgelegten Merkmalsregistern, um die effizienten Soft-Abtast-Links-/Rechtsverschiebungen zu erzeugen und in einem Satz an Ausführungsformen kann eine gemeinsame Einstellung für alle Ebenen mit individuellen Einstellungen für jeden der Zustände verwendet werden.
-
14 ist ein Flussdiagramm auf hoher Stufe für eine Ausführungsform eines effizienten Soft-Abtast-Vorgangs. Der Prozess wird im Zusammenhang mit einem Speicherungssystem beschrieben, wie es vorstehend in Bezug auf 1-4J und die Ausführungsform in Bezug auf 12 beschrieben wurde. Der Ablauf beginnt bei Schritt 1401 mit der Durchführung eines ersten Abtastvorgangs an einer Vielzahl von Speicherzellen, um Hardbit-Werte zu bestimmen, die zwischen zwei der Datenzustände der Speicherzellen unterscheiden. In einer effizienten Soft-Abtast-Ausführungsform können sowohl die Hardbit-Lesevorgänge von Schritt 1401 als auch die Softbit-Lesevorgänge von Schritt 1403 als Reaktion auf einen einzigen Lesebefehl erfolgen. Zum Beispiel bezüglich 1, kann der Host 102 und/oder die Steuerung des nichtflüchtigen Speichers 120 einen effizienten Soft-Abtast-Befehl an einen oder mehrere der Speicher 130 senden. Die Systemsteuerlogik 260 (2A und 2B) führt dann einen Abtastvorgang durch, wie etwa das Lesen einer unteren Datenseite in den obigen Beispielen, um sowohl einen Hardbit-Wert als auch einen Softbit-Wert der Speicherzellen zu bestimmen, wie in 11 veranschaulicht.
-
Um die Hardbit-Bestimmung von Schritt 1401 durchzuführen, wird in den vorstehend beschriebenen Ausführungsformen das Speicherarray für den Lesevorgang vorgespannt und die Abtastknoten des entsprechenden Leseverstärkers oder der entsprechenden Leseverstärker werden vorgeladen. Insbesondere werden bei den hierin als Beispiel verwendeten Ausführungsformen die Steuer-Gates der ausgewählten Speicherzellen über ihre entsprechenden Wortleitungen mit einer Lesespannung vorgespannt, um zwischen den Datenzuständen zu unterscheiden, und andere Arrayelemente (z. B. ausgewählte Gates und nicht ausgewählte Wortleitungen von NAND-Strings) werden je nach Bedarf basierend auf der Speicherarrayarchitektur vorgespannt. Bei der Verwendung eines Leseverstärkers wie dem in 13, bei dem die Datenzustände beim Entladen eines Abtastknotens SEN 1305 bestimmt werden, wird der Abtastknoten SEN 1305 vorgeladen und mit der Bitleitung einer ausgewählten Speicherzelle verbunden, um sich für ein erstes Abtastintervall zu entladen (der durch ER (HB) abgegrenzte Bereich von 12), um den Hardbit-Wert zu bestimmen.
-
Wie in der Ausführungsform von 11 veranschaulicht, wird die Hardbit-Bestimmung auf einen niedrigeren Vth-Wert verschoben, so dass Speicherzellen, die als unterhalb dieses Wertes abgetastet werden, zuverlässig in diesem Wert liegen, während Speicherzellen, die als oberhalb dieses Wertes abgetastet werden, sowohl zuverlässige als auch unzuverlässige Hardbit-Werte einschließen. In Ausführungsformen, welche die traditionellere Reihenfolge des Abtastens verwenden, würde zuerst das Hardbit-Abtasten für das Hardbit und dann das Softbit für die Unterscheidung zwischen dem Er- und dem A-Zustand durchgeführt, gefolgt von dem Hardbit und dem Softbit für die Unterscheidung zwischen dem D- und dem E-Zustand, wobei für jeden von ihnen eine andere Vorspannung und eine andere Vorladung des Abtastknotens für jeden Abtastvorgang erforderlich wäre. Bei dem in 12 veranschaulichten Vorgang des Soft-Abtastens in umgekehrter Reihenfolge werden zunächst die Hardbit- und Softbit-Werte für die D-Zustands- und E-Zustandsdifferenzierung bestimmt, gefolgt von der Bestimmung der Hardbit- und Softbit-Werte für die Zustände Er und A. Obwohl in der Ausführungsform von 14 die Bestimmung des Hardbits (Schritt 1401) vor der Bestimmung des Softbits (Schritt 1403) erfolgt, kann in einigen Ausführungsformen die Reihenfolge umgekehrt sein. Außerdem werden verfügt der Fluss in 14 nur über eine einzige Hardbit- und eine einzige Softbit-Bestimmung, in vielen Fällen (wie in 12) werden mehrere Hardbit-/Softbit-Paare bestimmt.
-
In Schritt 1403 wird ein zweiter Abtastvorgang durchgeführt, um ein Softbit zu bestimmen. In dem effizienten Soft-Abtast-Prozess wird nur die Zuverlässigkeitsinformation für Speicherzellen bestimmt, die einen ersten, aber keinen zweiten der Hardbit-Werte aufweisen. In der Ausführungsform von 11 zum Beispiel, bei der die Hardbit-Grenze nach unten verschoben ist, gilt der Softbit-Wert nur für den höheren der Hardbits. Bei der in Bezug auf 12 beschriebenen Ausführungsform basiert der zweite Abtastvorgang auf einer längeren Entladezeit des vorgeladenen Abtastknotens SEN 1305. Wenn beim Lesen zwischen den Zuständen eines Paares unterschieden werden muss (wie bei einer binären Ausführungsform der Speicherzelle), wird nur das eine Hardbit-/Softbit-Paar bestimmt. Bei mehrstufigen Speicherzellen werden zusätzliche Hardbit-/Softbit-Paare bestimmt, wie in den vorstehenden Beispielen in 11 und 12, wobei ein Soft-Abtast-Vorgang der unteren Seite ebenfalls ein Hardbit-/Softbit-Paar bestimmt, ähnlich den Schritten 1401 und 1403 für die Bestimmung des Er/A-Zustands. Sobald die Hardbit- und Softbit-Datenwerte bestimmt sind, können sie in Schritt 1405 zur Durchführung eines ECC-Vorgangs verwendet werden. Dies kann auf der nichtflüchtigen Speichersteuerung 120 in der ECC-Maschine 158, auf dem Steuerchip 211 oder einer Kombination davon geschehen.
-
Obwohl die Verwendung von effizientem Soft-Abtasten die Menge der ermittelten Softbit-Daten und folglich die Menge der an eine ECC-Maschine zu übertragenden Softbit-Daten im Vergleich zu einer standardmäßigen Hardbit-/Softbit-Anordnung reduziert, handelt es sich immer noch um eine erhebliche Zunahme der Daten im Vergleich zur Verwendung von Hardbit-Daten. Um die Datenmenge zu reduzieren, die von einem Speicherchip zur ECC-Maschine übertragen werden muss, können die Softbit-Daten im Speicher komprimiert werden, bevor sie über die Busstruktur an die nichtflüchtige Speichersteuerung übertragen werden. Im Folgenden werden Techniken zur Komprimierung von Softbit-Daten vorgestellt. Diese Techniken können sowohl auf effizientes Soft-Abtasten als auch auf Standard-Soft-Abtasten angewandt werden, auch wenn im Folgenden hauptsächlich das Beispiel einer effizienten Soft-Abtast-Ausführungsform behandelt wird.
-
Insbesondere basieren die im Folgenden vorgestellten Ausführungsformen in erster Linie auf dem effizienten Soft-Abtast-Modus, wie er vorstehend unter Bezugnahme auf 10-14 beschrieben wurde. Wie vorstehend beschrieben, kann der effiziente Soft-Abtast-Modus den Leistungsabfall bei der Verwendung von Softbit-Daten verringern, so dass er als Standard-Lesemodus mit einer Seite Hardbit-Daten und einer Seite Softbit-Datenausgabe in einer Lesesequenz praktisch ist. Diese Seiten mit Softbit- und Hardbit-Daten werden dann an eine Fehlerkorrektur-Maschine übertragen, die den Dateninhalt der Seite mit den Benutzerdaten extrahiert. In einigen Ausführungsformen können ein Teil oder alle ECC-Vorgänge auf dem Steuerchip 211 von 2B oder dem Speicherchip 200 von 2A durchgeführt werden, aber üblicherweise werden die ECC-Vorgänge auf einer ECC-Maschine 158 auf dem nichtflüchtigen Speicherchip 120 durchgeführt, wobei die gelesenen Hardbit- und Softbit-Daten über die Schnittstelle 269 über die externe Datenbusstruktur an den Speicherchip 120 übertragen werden müssen. Ein Beispiel für die betroffenen Datenmengen: eine Datenseite aus einer einzigen Ebene in einer Ausführungsform eines 3D-NAND-Speichers kann 16 KB Nutzdaten zusammen mit den entsprechenden Paritätsbits und Redundanzdaten für defekte Speicherplätze umfassen. Ohne Komprimierung würden folglich zusätzlich zu den 16+ Kilobyte Hardbit-Daten pro Ebene auch 16+ Kilobyte Softbit-Daten pro Ebene übertragen werden.
-
Um die Speicherleistung zu erhalten, können die Softbit-Daten vor der Übertragung auf dem Speicherchip 200 oder dem Steuerchip 211 komprimiert werden. Wenn zum Beispiel ein Komprimierungsfaktor N verwendet wird, wird die Menge der übertragenen Softbit-Daten um 1/N reduziert, so dass die Wahl des Komprimierungsfaktors ein Kompromiss zwischen der Geschwindigkeit und der Menge der für die ECC-Maschine verfügbaren Softbit-Daten ist. Es kann eine Anzahl von Komprimierungstechniken mit unterschiedlichen Komprimierungsfaktoren verwendet werden. Ein Kompressionsfaktor von N=4 kann zum Beispiel durch UND-Verknüpfung der Softbit-Daten in Sätzen von vier Softbits implementiert werden. Obwohl dies zwar nicht die individuelle Zuverlässigkeit der entsprechenden Hardbit-Werte anzeigen würde, würde aber es darauf hinweisen, dass mindestens einer der vier Hardbit-Werte als unzuverlässig behandelt werden sollte.
-
15 ist ein Blockdiagramm einer Ausführungsform für einige Elemente der Steuerschaltung einer Speichervorrichtung, die ein Element zur Softbit-Kompression einschließt. Das gezeigte Beispiel bezieht sich auf eine Speichervorrichtung mit vier Ebenen und die meisten der gezeigten Elemente können für jede Ebene wiederholt werden, aber andere Ausführungsformen können auch weniger oder mehr Ebenen verwenden. Abhängig von der Ausführungsform können sich diese Steuerschaltung(en) auf einem Steuerchip 211 befinden, der mit einem oder mehreren Speicherchips 201 verbunden ist, wie in 2B dargestellt. In anderen Ausführungsformen können sich die eine oder mehrere Steuerschaltungen auf einem Speicherchip 200 befinden, der die Speicherarrays 202 enthält, wie etwa an der Peripherie des Speicherchips 200 oder auf dem Substrat unter der vorstehend beschriebenen 3D-NAND-Speicherstruktur gebildet.
-
In 15 sind zur Vereinfachung der Zeichnung nur die gemeinsamen Blöcke der Ebene 3 1501-2 beschriftet, aber es versteht sich, dass jeder der gemeinsamen Blöcke Ebene 0 1501-0, Ebene 1 1501-1, Ebene 2 1501-2 und Ebene 3 1501-3 die jeweiligen gemeinsamen Blöcke 1505, 1507 und 1509 einschließt. Diese Blöcke entsprechen den Elementen der Zeilensteuerschaltung 220, der Spaltensteuerschaltung und der Systemsteuerlogik 260 von 2A und 2B, stellen aber eher dar, wie diese Elemente in einigen Ausführungsformen physisch angeordnet sind. Zu beiden Seiten jeder Ebene befinden sich Zeilendecoder 1503-L und 1503-R, die Verbindungen zu den Wortleitungen und Auswahlleitungen des Arrays der Ebene decodieren können und den Zeilendecodern 222 und anderen Elementen der Zeilensteuerschaltung 220 von 2A und 2B entsprechen können. Eine Spaltensteuerschaltung 1509 kann der Spaltensteuerschaltung 210 von 2A und 2B entsprechen. Zu beiden Seiten oberhalb und unterhalb der Steuerschaltung für die Spalten 1509 befinden sich ein Satz von Leseverstärkern 1505, einschließlich der internen Datenlatches, und ein Cache-Puffer 1507. Bezüglich der Leseverstärkerschaltung von 3 können die internen Datenlatches von 1505 den Datenlatches ADL, BDL, CDL entsprechen und der Cache-Puffer 1507 kann den Übertragungs-Latches XDL entsprechen. Die anderen Ebenen sind zwar nicht beschriftet, schließen aber ähnliche Elemente ein. Stattdessen sind in den anderen Ebenen Pfeile eingeschlossen, welche die Datenflüsse für die zwischen den Speicherzellen der Ebene und der E/A-Schnittstelle übertragenen Daten anzeigen, wobei ähnliche Übertragungen auch in der Ebene 3 1501-3 stattfinden können, aber nicht dargestellt sind, damit die Beschriftung der Blöcke gezeigt werden kann.
-
Die in 15 dargestellten Steuerschaltungen schließen auch eine Eingabe-Ausgabe-Schaltung oder EA-Schaltung mit EA-Pads 1517 und einen Datenpfadblock 1515 ein, der serielle bis parallele (Multibit-) Transformationen für eingehende Schreibdaten und parallele bis (Multibit-) serielle Transformationen für ausgehende Lesedaten durchführt. Der DP-Block 1515 ist mit den bytebasierten (in diesem Beispiel) EA-Pads 1517 verbunden, um Daten über einen externen Datenbus von und zu der nichtflüchtigen Speichersteuerung 120 zu übertragen. In dem Blockdiagramm von 15 befinden sich der DP-Block 1515 und die EA-Pads 1517 auf Ebene 1 1501-1. Diese Elemente können jedoch auf jeder der Ebenen platziert oder zwischen den Ebenen verteilt werden, wobei die Platzierung auf einer der zentralen Ebenen (Ebene 1 1501-1 oder Ebene 2 1501-2) das Routing reduziert. Ein globaler Datenbus GDB 1511 innerhalb der Speichervorrichtung überspannt die Ebenen und ermöglicht die Übertragung von Daten zu und von den einzelnen Ebenen und dem DP-Block 1515. Die vertikalen Pfeile in 15 veranschaulichen den Datenfluss für die Übertragung von Daten zwischen den oberen der Leseverstärkerblöcke 1505 und den EA-Pads 1517, wobei diese für Ebene 3 1501-3 nicht dargestellt sind, um die Blockbeschriftung zu ermöglichen. Bei einem Leseprozess werden Datenseiten aus dem Speicherarray einer Ebene von den Leseverstärkern 1505 abgetastet und in den entsprechenden internen Datenlatches gespeichert, dann in den Cache-Puffer 1507 der Übertragungs-Latches verschoben und über die Decodierung der Steuerschaltung für Spalten 1509 weiter an den globalen Datenbus 1511. Von dem globalen Datenbus 1511 werden die Hardbit-Daten dann über den DP-Block 1515 in (bytebasierte) serielle Daten umgewandelt, die über die EA-Pads 1517 übertragen werden. Beim Schreiben von Daten kann der Datenfluss entlang des von den Hardbit-Daten verwendeten Pfads umgekehrt werden.
-
Der gerade beschriebene und durch die Pfeile in 15 angedeutete Lesefluss, einschließlich des Pfeils von dem globalen Datenbus 1511 zu dem DP-Block 1515, schließt keine Kompression ein und kann für Seiten mit Hardbit-Daten verwendet werden. Die entsprechenden Softbit-Datenseiten würden, wenn sie unkomprimiert übertragen werden, denselben Weg nehmen. Um die Kompression für die Softbit-Daten einzuschließen, können diese in einer Ausführungsform der fliegenden Kompression stattdessen von dem globalen Datenbus 1511 zu dem Softbit-Kompressionsblock SBC 1513 gehen, bevor sie zum DP-Block 1515 zur Konvertierung in ein (bytebasiertes) serielles Format für die Übertragung über die EA-Pads 1517 gelangen. Die logische Steuerung 1519, welche die Steuerung für SBC 1513 einschließt, kann den Vorgang der Kompression und auch den DP 1515 steuern. Obwohl in 15 als separater Block dargestellt, kann die Logiksteuerung 1519 Teil der Systemsteuerlogik 260 sein, die sich in einer oder mehreren Bereichen der Ebene befindet und im Blockdiagramm von 15 in der Ebene 3 1501-3 dargestellt ist, aber auch in anderen Bereichen des Chips liegen kann. Die Anordnung schränkt die Kompressionsvorgänge zwischen den verschiedenen Ebenen nicht ein und weist einen geringen Flächenbedarf auf, da sie durch logische Schaltung implementiert werden kann.
-
In der Anordnung von 15 können die gelesenen Hardbit-Daten von den Ebenen auf den globalen Datenbus 1511, in die FIFOs von DP 1515 zur Umwandlung in das serielle Format und über die EA-Pads 1517 mit einer Standardschnittstellengeschwindigkeit für das Speicherungssystem übertragen werden. Für die Softbits, die vom globalen Datenbus 1511 in die SBC-Schaltung 1513 gelangen, kann die gleiche Datenrate wie für Hardbits verwendet werden, aber aufgrund der Kompression wird die Datenrate aus der SBC-Schaltung 1513 reduziert. Wenn zum Beispiel ein Kompressionsfaktor von N=4 verwendet wird, werden alle 4 Bytes an Daten, die in die SBC-Schaltung 1513 gelangen, auf 1 Byte komprimiert. Damit die zwischen dem globalen Datenbus 1511 und dem DP 1515 übertragenen Daten sowohl für Hardbits als auch für Softbits die gleiche Breite haben, werden in einer schnellen Komprimierungsmethode die Softbit-Daten in die SBC-Schaltung 1513 eingespeist, komprimiert, gepuffert und in die richtige Anzahl von Bits kompiliert und dann mit reduzierter Geschwindigkeit in die FIFOs des DP 1515 übertragen. Wenn zum Beispiel der Kompressionsfaktor N=4 und die Datenbreite des globalen Datenbusses 192 Bits beträgt, werden die 192 Bits auf 48 Bits komprimiert und in der SBC-Schaltung 1513 gepuffert. Dies wird viermal wiederholt, um 192 Bits komprimierter Softbit-Daten zu akkumulieren, die dann an den DP 1515 weitergegeben werden. Folglich erfolgt die Ausgabe der komprimierten Softbit-Daten mit einer geringeren Geschwindigkeit im Vergleich zu den Hardbit-Daten. Dies wird in Bezug auf 16 und 17 näher veranschaulicht.
-
16 ist ein Blockdiagramm, das eine Ausführungsform veranschaulicht, bei der eine schnelle Bit-Kompression in den Datenpfad integriert wird. Oben schließt 16 den Cache-Puffer 1507 und die Spaltensteuerschaltung 1509 für eine der Ebenen ein. Bezüglich 2A und 2B sind diese Elemente Teil der Spaltensteuerschaltung 210, wobei das Detail in 3 die Übertragungs-Latches XDL (innerhalb der Latch-Sätze 340, 342, 344, 346) veranschaulicht, die dem Cache-Puffer 1507 entsprechen können. Wie vorstehend näher beschrieben, werden Daten, sowohl Hardbit-Daten als auch Softbit-Daten, in Seiten aus den Speicherzellen gelesen, die sowohl Benutzerdaten als auch Paritätsbits und Redundanzdaten für defekte Speicherzellen einschließen. Die Seiten werden von den Steuerschaltungen basierend auf einer Lesetaktrate ausgewählt und gelesen, im Cache-Puffer 1507 gespeichert und als 2-Byte-Wörter mit einer ersten Taktrate an die Spaltensteuerschaltung 1509 übertragen. Von der Spaltensteuerschaltung 1509 können die Daten mit einer höheren Rate, zum Beispiel mit einer doppelten Datenrate, auf den globalen Datenbus GDB 1511 übertragen werden. In der Architektur von 15 erstreckt sich der globale Datenbus GDB 1511 über alle Ebenen, so dass der Cache-Puffer 1507 und die Spaltensteuerschaltung 1509 jeder der Ebenen auf dem Chip entsprechen können. Vom globalen Datenbus GDB 1511 werden die gelesenen Daten in den peripheren DP-Block 1515 übertragen, wo sie in ein (bytebasiertes) serielles Format umgewandelt, in FIFOs geladen und mit der Schnittstellendatenrate über die Pads der Schnittstelle 1517 übertragen werden. Der Pfad zwischen dem globalen Datenbus GDB 1511 und DP 1515 schließt sowohl einen Standard-Datenpfad als auch einen parallelen Datenpfad für die SBC-Schaltung 1513 ein, die zur Implementierung der fliegenden Kompression der Softbit-Daten verwendet wird. Diese beiden Pfade weisen die gleiche Breite auf, so dass die komprimierten Softbit-Daten die volle Breite der EA-Pads 1517 nutzen können. In diesem Beispiel beträgt die Breite 12 Worte = 192 Bits, aber die Breite dieser parallelen Übertragungen variiert je nach Ausführungsform und mit einer entsprechend erhöhten Taktrate im Verhältnis zur Übertragungsrate der Spaltensteuerschaltung 1509. Obwohl in den Figuren als separater Schaltungsblock dargestellt, kann die SBC-Schaltung 1513 je nach Ausführungsform teilweise oder vollständig in die Schaltung anderer Steuerschaltungen integriert sein und als Hardware, Firmware, Software oder verschiedene Kombinationen davon implementiert werden.
-
17 zeigt die parallelen Pfade zwischen dem globalen Datenbus GDB 1511 und DP 1515 im Detail. Von dem globalen Datenbus GDB 1511 führt der Datenpfad von (in diesem Beispiel) 192 Bits in einen Multiplexer MUX 1521, der ein Steuersignal SBC für die Freigabe erhält, wie etwa von der Steuerungssystemlogik 260. (Andere Steuerschaltungen, die an der Übertragung beteiligt sein können, sind nicht dargestellt.) Wenn das SBC-Signal nicht aktiviert ist, wie etwa bei Hardbit-Daten, leitet MUX 1521 die Daten an DP 1515 weiter, und zwar mit der gleichen Breite und der gleichen Taktrate, mit der sie in MUX 1521 eingehen. Wenn das SBC-Signal aktiviert ist, wie etwa bei Softbit-Daten, leitet MUX 1521 die Daten an die SBC-Schaltung 1513 weiter, wiederum mit der gleichen Breite und der gleichen Taktrate, mit der sie in MUX 1521 eingehen. Um die gleiche Datenbreite für die Eingaben in den DP-Block 1515 beizubehalten, erfolgt die Ausgabe der SBC-Schaltung 1513 wieder mit 192 Bit, aber aufgrund der Komprimierung mit einer geringeren Übertragungsrate. Obwohl die hier vorgestellten Kompressionsstrukturen und -techniken für die Komprimierung von Softbit-Daten gedacht sind, können sie auch auf andere Daten angewendet werden.
-
Obwohl hier hauptsächlich im Zusammenhang mit einem effizienten Soft-Abtasten vorgestellt, kann die schnelle Bit-Kompression auch auf die üblichen Softbit-Daten angewendet werden, die in 8, 9A und 9B beschrieben sind. In beiden Fällen kann der Grad der Komprimierung je nach Anwendung ausgewählt werden und ist entweder ein fester oder ein einstellbarer Parameter, wie etwa ein Registerwert, der bei der Initialisierung der Vorrichtung eingestellt werden kann. Der Grad der Komprimierung ist ein Kompromiss zwischen der Auflösung und der Übertragungsrate der komprimierten Softbit-Daten. Wenn der Grad der Komprimierung N ist, werden N Sätze von (in diesem Beispiel) 192 Bit Daten empfangen, komprimiert und in dem schnellen Prozess akkumuliert, bevor die komprimierten Daten mit einer Rate von 1/N im Verhältnis zum unkomprimierten Hardbit-Pfad an DP 1515 übertragen werden.
-
Folglich wird aufgrund der Komprimierung der Softbit-Daten die Rate, mit der die Softbit-Daten von den EA-Schnittstellen-Pads 1517 ausgeschaltet werden können, im Vergleich zu den Hardbit-Daten reduziert. Je nach Ausführungsform kann dies auf unterschiedliche Art und Weise gehandhabt werden. In einem Satz an Ausführungsformen können zum Beispiel die Hardbit-Daten mit einer höheren Umschaltrate an die ECC-Maschine übertragen werden als die Softbit-Daten. In anderen Ausführungsformen können die Hardbit-Daten mit der gleichen Rate wie die Softbit-Daten umgeschaltet werden, wobei die Wahl auf Faktoren wie Leistungsanforderungen und Kompressionsverhältnis basieren kann. In jeder dieser Ausführungsformen kann der Speicher die Ebenen zyklisch durchlaufen, welche die Stufen des Lesens der Hardbit- und Softbit-Daten durchführen und überlappen, wobei die Strukturen zum globalen Datenbus GDB 1511 übertragen werden, die Softbit-Daten kompromiert werden und die Hardbit- und komprimierten Softbit-Daten an die ECC-Maschine übertragen werden.
-
18 ist ein Flussdiagramm für eine Ausführungsform einer schnellen Komprimierungsmethode für Softbit-Daten. In Schritt 1801 wird eine Seite mit Hardbit-Daten und entsprechenden Softbit-Daten aus einer der Ebenen (1501-0, 1501-1, 1501-2, 1501-3) des Speichers gelesen. Je nach Ausführungsform kann dies ein effizientes Soft-Abtast-Lesen sein, wie es in 14 basierend auf des in 10-13 dargestellten effizienten Soft-Abtast-Lesens beschrieben ist, oder die in 8, 9A und 9B veranschaulichte Standardanordnung mit Hardbit und Softbit. In beiden Fällen werden die Daten von den Leseverstärkern gelesen und in die internen Datenlatches 1505 der entsprechenden Ebene geladen und dann in den Cache-Puffer 1507 der Ebene verschoben.
-
Vom Cache-Puffer 1507 werden in Schritt 1803 die Hardbit- und Softbit-Daten an den globalen Datenbus 1511 und in Schritt 1805 vom globalen Datenbus 1511 an die periphere Schaltung DP 1515 übertragen, wie vorstehend in Bezug auf 16 und 17 beschrieben. Als Teil von Schritt 1805 werden die Softbit-Daten von der SBC-Schaltung 1513 komprimiert, wobei die eingehenden Softbit-Daten um einen Faktor N komprimiert werden, wobei N Einheiten der eingehenden Daten komprimiert und akkumuliert werden, bevor sie an DP 1515 weitergegeben werden. In der peripheren Schaltung der Schnittstelle DP 1515 werden die Hardbit- und komprimierten Softbit-Daten in Schritt 1807 vom parallelen in ein (bytebasiertes) serielles Format umgewandelt, wobei die Daten im seriellen Format in FIFOs geladen werden, um die Übertragung über die EA-Pads 1517 abzuwarten. In Schritt 1809 werden das Hardbit und komprimierte Softbit über die EA-Pads 1517 über eine Busstruktur an eine ECC-Maschine, wie ECC-Maschine 158 der nichtflüchtigen Speichersteuerung 120, übertragen, wobei die ECC-Maschine 158 ECC-Vorgänge durchführt, um den Dateninhalt der Seite in Schritt 1811 zu extrahieren (oder zu versuchen, ihn zu extrahieren). Obwohl 18 den Hardbit-Pfad und den Softbit-Pfad parallel veranschaulicht, werden diese üblicherweise nicht gleichzeitig ausgeführt; stattdessen würden, wie vorstehend beschrieben, die Hardbit-Daten zuerst von Schritt 1801 bis 1809 gehen, gefolgt von den Softbit-Daten, die von Schritt 1801 bis 1809 gehen (einschließlich Schritt 1806). Schritt 1811 würde dann folgen, sobald sowohl die Hardbit- als auch die komprimierten Softbit-Daten bei der ECC-Maschine sind.
-
Gemäß einem ersten Satz von Aspekten schließt eine nichtflüchtige Speichervorrichtung eine Steuerschaltung ein, die so eingerichtet ist, dass sie eine Verbindung zu einer oder mehreren Ebenen von nichtflüchtigen Speicherzellen herstellt, wobei die Steuerschaltung Folgendes einschließt: einen ersten Cache-Puffer, der so eingerichtet ist, dass er Daten speichert, die aus einer ersten der einen oder mehreren Ebenen gelesen wurden; eine Eingabe-Ausgabe-Schnittstelle, die so eingerichtet ist, dass sie Daten von einem parallelen Format in ein serielles Format umwandelt und die Daten im seriellen Format einem externen Datenbus bereitstellt; einen internen Datenbus, der so eingerichtet ist, dass er Daten aus dem ersten Cache-Puffer in einem parallelen Format an die Eingabe-Ausgabe-Schnittstelle überträgt; und eine Komprimierungsschaltung, die so eingerichtet ist, dass sie Daten komprimiert, die vom internen Datenbus an die Schnittstelle für die Eingabe/Ausgabe übertragen werden. Die Steuerschaltung ist eingerichtet, um: eine Seite mit Hardbit-Daten und entsprechenden Softbit-Daten aus der ersten Ebene zu lesen und die gelesene Seite mit Hardbit-Daten und entsprechenden Softbit-Daten in dem ersten Cache-Puffer zu speichern; und die Seite der Hardbit-Daten und die entsprechenden Softbit-Daten über den internen Datenbus in einem parallelen Format von dem ersten Cache-Puffer zu der Eingabe-Ausgabe-Schnittstelle entlang eines ersten Pfades für die Seite der Hardbit-Daten und entlang eines zweiten Pfades für die entsprechenden Softbit-Daten zu übertragen, wobei der zweite Pfad das Komprimieren der entsprechenden Softbit-Daten in der Komprimierungsschaltung einschließt.
-
In weiteren Aspekten schließt ein Verfahren das Lesen einer Seite von in nichtflüchtigen Speicherzellen gespeicherten Daten ein, um Hardbit-Werte und entsprechende Softbit-Werte für die in der Seite der nichtflüchtigen Speicherzellen gespeicherten Daten zu bestimmen und die Hardbit-Werte und entsprechenden Softbit-Werte in einem parallelen Datenformat an eine Eingabe-Ausgabe-Schnittstelle zu übertragen. Das Übertragen der Hardbit-Werte und der entsprechenden Softbit-Werte in dem parallelen Datenformat an eine Eingabe-Ausgabe-Schnittstelle schließt Folgendes ein: Empfangen der entsprechenden Softbit-Werte in dem parallelen Datenformat; Komprimieren der empfangenen entsprechenden Softbit-Werte; und Bereitstellen der komprimierten entsprechenden Softbit-Werte an die Eingabe-Ausgabe-Schnittstelle. Das Verfahren schließt auch das Übertragen der Hardbit-Werte und der komprimierten entsprechenden Softbit-Werte über die Eingabe-Ausgabe-Schnittstelle ein.
-
Zusätzliche Aspekte schließen eine nichtflüchtige Speichervorrichtung ein, die Folgendes aufweist: eine Vielzahl von Ebenen mit nichtflüchtigen Speicherzellen; eine Vielzahl von Cache-Puffern, die jeweils einer der Ebenen zugeordnet sind; einen globalen Datenbus, der mit der Vielzahl von Cache-Puffern verbunden werden kann und so eingerichtet ist, dass er von der Vielzahl von Cache-Puffern übertragen wird; eine Schnittstelle, die so eingerichtet ist, dass sie Daten von dem globalen Datenbus zu einem externen Datenbus überträgt; und eine oder mehrere Steuerschaltungen. Die eine oder mehrere Steuerschaltungen sind eingerichtet, um: eine Seite mit Hardbit-Daten und entsprechenden Softbit-Daten aus einer ersten der Ebenen zu lesen und die gelesene Seite mit Hardbit-Daten und entsprechenden Softbit-Daten in dem entsprechenden Cache-Puffer zu speichern; und die Seite mit den Hardbit-Daten und den entsprechenden Softbit-Daten aus dem Cache-Puffer über den globalen Datenbus an die Schnittstelle zu übertragen, einschließend: Empfangen der entsprechenden Softbit-Daten von dem globalen Datenbus; Komprimieren der empfangenen entsprechenden Softbit-Daten; und Bereitstellen der komprimierten entsprechenden Softbit-Daten an die Schnittstelle.
-
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.
-
Für die Zwecke 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 eine oder mehrere 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 „mindestens teilweise basierend auf“ gelesen werden.
-
Für die Zwecke dieses Dokuments impliziert ohne zusätzlichen Kontext die Verwendung von numerischen Ausdrücken, wie 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.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-