-
Technisches Gebiet
-
Hier beschriebene Ausführungsformen beziehen sich im Allgemeinen auf NAND-Speicher.
-
Hintergrund
-
Speichervorrichtungen sind typischerweise als interne integrierte Halbleiterschaltungen in Computer oder anderen elektronischen Vorrichtungen vorgesehen. Es gibt viele unterschiedliche Typen von Speichern, die Direktzugriffsspeicher (RAM), Festwertspeicher (ROM), dynamischen Direktzugriffsspeicher (DRAM), synchronischen dynamischen Direktzugriffsspeicher (SDRAM) und Flash-Speicher enthalten.
-
Flash-Speichervorrichtungen haben sich zu einer gängigen Quelle von nichtflüchtigem Speicher für eine große Vielfalt von elektronischen Anwendungen entwickelt. Flash-Speichervorrichtungen verwenden typischerweise eine Eintransistorspeicherzelle, die hohe Speicherdichten, hohe Zuverlässigkeit und niedrigen Energieverbrauch ermöglicht. Veränderungen der Schwellenspannung der Zelle durch Programmieren eines Ladungsspeicherknotens (z. B. ein ”Floating-Gate” oder ”Charge-Trapping”) oder andere physikalische Phänomene (z. B. Phasenänderung oder Polarisation) bestimmen den Datenzustand jeder Zelle. Übliche Verwendungen für Flash-Speicher enthalten Personalcomputer, persönliche digitale Assistenten (PDAs), Digitalkameras, Abspielgeräte für digitale Medien, digitale Aufzeichnungsgeräte, Spiele, Haushaltsgeräte, Fahrzeuge, drahtlose Geräte, Mobiltelefone und herausnehmbare Speichermodule, und die Anwendungen für Flash-Speicher erweitern sich weiter.
-
Kurzbeschreibung der Zeichnungen
-
Merkmale und Vorteile der Offenbarung werden offensichtlich aus der folgenden genauen Beschreibung im Zusammenhang mit den begleitenden Zeichnungen, die durch Beispiel gemeinsam Merkmale der Offenbarung darstellen; und wobei:
-
1 einen Prozess für das Programmieren der höheren Seite mit Diagrammen einer Spannungsverteilung der tieferen Seite und einer korrekten Spannung der höheren Seite basierend auf einer Fehlerkorrektur der Spannung der tieferen Seite in Übereinstimmung mit einem Erfindungsbeispiel darstellt;
-
2 einen Prozess für das Programmieren einer höheren Seite basierend auf einer Programmierreihenfolge von Teilblöcken in Übereinstimmung mit einem Erfindungsbeispiel darstellt;
-
3 ein Diagramm für das Programmieren der höheren Seite in einem Speicher mit drei Bits pro Zelle mit Fehlerkorrektur, die auf die Daten der tieferen Seite und/oder mittleren Seite angewandt wird, in Übereinstimmung mit einem Erfindungsbeispiel darstellt;
-
4–6 Flussdiagramme von Verfahren zum Programmieren einer Seite eines Speichers in einer NAND-Speichervorrichtung in Übereinstimmung mit verschiedenen Erfindungsbeispielen darstellen; und
-
7 ein Speichersystemdiagramm in Übereinstimmung mit einem Erfindungsbeispiel darstellt.
-
Es wird jetzt Bezug genommen auf dargestellte beispielhafte Ausführungsformen, und es wird hier eine spezifische Sprache verwendet, um diese zu beschreiben. Es ist nichtsdestotrotz zu verstehen, dass dadurch keine Einschränkung des Schutzbereichs dieser Erfindung beabsichtigt ist.
-
Beschreibung von Ausführungsformen
-
Bevor die offenbarten Erfindungsausführungsformen beschrieben werden, ist zu verstehen, dass diese Offenbarung nicht auf die speziellen Strukturen, Prozessschritte oder Materialien, die hier offenbart sind, beschränkt ist, sondern auf deren Äquivalente erweitert ist, wie es durch normale Fachleute der relevanten Technik erkannt würde. Es ist ebenso zu verstehen, dass Terminologie, die hier eingesetzt ist, nur zum Zweck der Beschreibung spezieller Beispiele verwendet wird, und es nicht vorgesehen ist, dass sie einschränkend ist. Die gleichen Bezugszeichen in unterschiedlichen Zeichnungen repräsentieren dasselbe Element. Zahlen, die in Flussdiagrammen und Prozessen bereitgestellt sind, sind zur Verdeutlichung der Darstellung der Schritte und Operationen vorgesehen und geben nicht notwendigerweise eine spezielle Ordnung oder Reihenfolge an.
-
Darüber hinaus können die beschriebenen Merkmale, Strukturen oder Eigenschaften in einer oder mehreren Ausführungsformen in jeder geeigneten Weise kombiniert sein. In der folgenden Beschreibung sind zahlreiche spezifische Einzelheiten bereitgestellt, wie z. B. Beispiele von Layouts, Abstände, Netzbeispiele usw., um ein gründliches Verständnis verschiedener Erfindungsausführungsformen bereitzustellen. Ein Fachmann der relevanten Technik erkennt jedoch, dass solche genauen Ausführungsformen die umfassenden erfinderischen Konzepte, die hier artikuliert sind, nicht einschränken, sondern lediglich repräsentativ dafür sind.
-
Beispielausführungsformen
-
Nachstehend ist ein anfänglicher Überblick der Technologieausführungsformen bereitgestellt, und dann sind später spezifische Technologieausführungsformen genauer beschrieben. Dieser anfängliche Überblick ist vorgesehen, um Leser bei dem schnelleren Verstehen der Technologie zu unterstützen, er ist jedoch nicht dazu vorgesehen, wesentliche technologische Merkmale oder Schlüssel-Merkmale zu identifizieren, noch ist er dazu vorgesehen, den Schutzbereich des beanspruchten Gegenstands einzuschränken. Sofern nicht anders definiert, weisen alle technischen und wissenschaftlichen Begriffe, die hier verwendet sind, dieselbe Bedeutung auf, wie sie allgemein durch normale Fachleute der Technik, zu der diese Offenbarung gehört, verstanden werden.
-
Wenn diese Spezifikation auf ”ein Beispiel” Bezug nimmt, bedeutet das durchgehend, dass eine spezielles Merkmal, Struktur oder Eigenschaft, das/die in Verbindung mit dem Beispiel beschrieben ist, wenigstens in einer Erfindungsausführungsform enthalten ist. Somit bezieht sich das Auftreten der Phrasen ”in einem Beispiel” an verschiedenen Orten durchgehend durch diese Spezifikation nicht notwendigerweise immer auf dieselbe Ausführungsform.
-
Wie sie in dieser Spezifikation und in den beigefügten Ansprüchen verwendet sind, enthalten die Singularformen ”ein/e” und ”der/die/das” die Pluralbezüge, sofern der Kontext es nicht deutlich anders angibt. Somit enthält beispielsweise der Bezug auf ”eine Schicht” mehrere solche Schichten.
-
In dieser Offenbarung können ”umfassen”, ”beinhalten” und ”aufweisen” und Ähnliches die Bedeutung aufweisen, wie sie ihnen in dem US-Patentgesetz zugeschrieben sind, und können ”enthalten” und Ähnliches bedeuten und werden allgemein so interpretiert, dass sie offene Begriffe sind. Die Begriffe ”bestehend aus” oder ”besteht aus” sind geschlossene Begriffe und enthalten nur die Komponenten, Strukturen, Schritte und Ähnliches, die spezifisch im Zusammenhang mit solchen Begriffen aufgelistet sind, und außerdem das, was in Übereinstimmung mit dem US-Patentgesetz ist. ”Im Wesentlichen bestehend aus” oder ”besteht im Wesentlichen aus” weisen die Bedeutung auf, die ihnen durch das US-Patentgesetz zugeschrieben ist. Insbesondere sind solche Begriffe im Allgemeinen geschlossene Begriffe, mit der Ausnahme, dass sie das Einschließen zusätzlicher Gegenstände, Materialien, Komponenten, Schritte oder Elemente erlauben, die die grundlegenden und neuartigen Eigenschaften oder Funktionen des Gegenstands/der Gegenstände, die in Verbindung damit verwendet werden, nicht wesentlich beeinträchtigen. Beispielsweise wären Verfolgungselemente, die in einer Zusammenstellung vorhanden sind, die jedoch nicht die Beschaffenheit oder Eigenschaften der Zusammenstellung beeinträchtigen, erlaubt, falls sie unter der ”bestehend im Wesentlichen aus”-Sprache vorhanden wären, selbst wenn sie nicht ausdrücklich in einer Liste von Gegenständen zitiert werden, die einer solchen Terminologie folgt. Wenn ein offener Begriff verwendet wird, wie z. B. ”umfassend” oder ”enthaltend”, ist zu verstehen, dass eine direkte Unterstützung geleistet werden sollte auch für ”bestehend im Wesentlichen aus”-Sprache und außerdem ”bestehend aus”-Sprache, als ob es ausdrücklich festgestellt worden sei, und umgekehrt.
-
Die Begriffe ”erster”, ”zweiter”, ”dritter, ”vierter” und Ähnliches in der Beschreibung und in den Ansprüchen, falls vorhanden, werden zum Unterscheiden zwischen ähnlichen Elementen verwendet und nicht notwendigerweise zum Beschreiben einer speziellen Reihenfolge oder chronologischen Ordnung. Es ist zu verstehen, dass alle Begriffe, die so verwendet werden, unter geeigneten Umständen austauschbar sind, so dass die Ausführungsformen, die hier beschrieben sind, beispielsweise zum Betrieb in Reihenfolgen, die nicht die dargestellten sind oder auf andere Weise hier beschrieben sind, imstande sind. Ähnlich, falls ein Verfahren hier beschrieben ist, so dass es eine Reihe von Schritten umfasst, ist die Reihenfolge solcher Schritte, wie sie hier präsentiert ist, nicht notwendigerweise die einzige Reihenfolge, in der solche Schritte ausgeführt werden können, und bestimmte der genannten Schritte können möglicherweise weggelassen werden und/oder bestimmte andere Schritte, die hier nicht beschrieben sind, können möglicherweise zu dem Verfahren hinzugefügt werden.
-
Wie er hier verwendet ist, bezieht sich der Begriff ”im Wesentlichen” auf den vollständigen oder nahezu vollständigen Umfang oder Grad einer Aktion, Eigenheit, Eigenschaft, Zustand, Struktur, Gegenstand oder Ergebnis. Beispielsweise würde es, wenn ein Objekt ”im Wesentlichen” eingeschlossen ist, bedeuten, dass das Objekt entweder vollständig eingeschlossen ist oder nahezu vollständig eingeschlossen ist. Der exakte erlaubte Grad der Abweichung von der absoluten Vollständigkeit kann in einigen Fällen von dem spezifischen Kontext abhängen. Im Allgemeinen wird jedoch die Nähe der Vollständigkeit so sein, dass sie insgesamt dasselbe Ergebnis aufweist, als ob absolute und gänzliche Vollständigkeit erreicht wäre. Das Verwenden von ”im Wesentlichen” ist auf gleiche Weise gültig, wenn es in einem negativen Bedeutungsumfang verwendet wird, um sich auf das vollständige oder nahezu vollständige Fehlen einer Aktion, Eigenheit, Eigenschaft, Zustand, Struktur, Gegenstand oder Ergebnis zu beziehen. Beispielsweise würde eine Zusammenstellung, die ”im Wesentlichen frei von” Teilchen ist, entweder überhaupt keine Teilchen enthalten oder derart nahezu überhaupt keine Teilchen enthalten, dass die Auswirkung dieselbe wäre, als ob sie überhaupt keine Teilchen enthielte. Mit anderen Worten kann eine Zusammenstellung, die ”im Wesentlichen frei von” einem Bestandteil oder Element ist, immer noch tatsächlich einen solchen Gegenstand enthalten, solange keine messbare Auswirkung davon vorhanden ist.
-
Wie hier verwendet, ist der Begriff ”etwa” verwendet, um Flexibilität für einen numerischen Bereichsendpunkt dadurch bereitzustellen, dass bereitgestellt ist, dass ein gegebener Wert ”ein wenig oberhalb” oder ”ein wenig unterhalb” des Endpunkts ist. Wenn nicht anders festgestellt, sollte das Verwenden des Begriffs ”etwa” in Übereinstimmung mit einer spezifischen Anzahl oder numerischen Bereich auch so verstanden werden, dass er Unterstützung für solche numerischen Begriffe oder Bereiche ohne den Begriff ”etwa” bereitstellt. Beispielsweise kann um der Einfachheit und Kürze willen ein numerischer Wert von ”etwa 50 Ångström bis etwa 80 Ångstrom” auch so verstanden werden, dass er Unterstützung für den Bereich von ”50 Ångström bis 80 Ångström” bereitstellt. Darüber hinaus ist zu verstehen, dass in dieser Spezifikation die Nennung eines numerischen Werts in Verbindung mit dem Begriff ”etwa” auch vorgesehen ist, um Unterstützung für den tatsächlichen numerischen Wert an sich abgesehen von dem Begriff ”etwa” bereitzustellen. Somit enthält beispielsweise die Nennung von ”etwa 30” auch die ausdrückliche Unterstützung des einfachen numerischen Werts von ”30”.
-
Wie es hier verwendet wird, können mehrere Gegenstände, Strukturelemente, Zusammenstellungselemente und/oder Materialien zur Vereinfachung in einer gemeinsamen Liste dargestellt sein. Diese Listen sollten jedoch so gedeutet werden, als ob jedes Element der Liste einzeln als ein getrenntes und eindeutiges Element identifiziert ist. Somit sollte kein einzelnes Element einer solchen Liste als ein faktisches Äquivalent irgendeines anderen Elements derselben Liste gedeutet werden allein basierend auf ihrer Präsentation in einer gemeinsamen Gruppe ohne Angabe des Gegenteils. Zusätzlich kann hier auf verschiedene Ausführungsformen und Erfindungsbeispiele zusammen mit Alternativen für deren verschiedene Komponenten Bezug genommen werden. Es ist zu verstehen, dass solche Ausführungsformen, Beispiele und Alternativen nicht als faktische Äquivalente für einander gedeutet werden sollen, sondern sie sind als getrennte und eigenständige Darstellungen verschiedener Erfindungsausführungsformen zu betrachten.
-
Konzentrationen, Mengen und andere numerische Daten können hier in Form eines Bereichs ausgedrückt oder dargestellt sein. Es ist zu verstehen, dass ein solches Bereichsformat lediglich zur Vereinfachung und Kürze verwendet wird und somit flexibel interpretiert werden sollte, so dass es nicht nur die ausdrücklich als die Grenzen des Bereichs genannten numerischen Werte, sondern auch alle individuellen numerischen Werte oder Teilbereiche, die innerhalb des Bereichs eingeschlossen sind, enthält, so als ob jeder numerische Wert oder Teilbereich ausdrücklich genannt wäre. Als eine Veranschaulichung sollte ein numerischer Bereich von ”etwa 1 bis etwa 5” interpretiert werden, so dass er nicht nur die ausdrücklich genannten Werte von etwa 1 bis etwa 5 enthält, sondern auch individuelle Werte und Teilbereiche innerhalb des angegebenen Bereichs. Somit sind in diesem numerischen Bereich einzelne Werte wie z. B. 2, 3 und 4 und Teilbereiche wie z. B. von 1–3, von 2–4 und von 3–5 usw. und außerdem 1, 2, 3, 4 und 5 individuell enthalten.
-
Dasselbe Prinzip gilt für Bereiche, die nur einen numerischen Wert als ein Minimum oder ein Maximum nennen. Darüber hinaus sollte eine solche Interpretation unabhängig von der Weite des Bereichs oder den Eigenschaften, die beschrieben sind, gelten.
-
Flash-Speicher verwendet typischerweise eine von zwei Grundarchitekturen, die als NOR-Flash und NAND-Flash bekannt sind. Die Bezeichnung ist von der Logik abgeleitet, die verwendet wird, um die Vorrichtungen zu lesen. In der NOR-Flash-Architektur ist eine logische Spalte von Speicherzellen parallel mit jeder Speicherzelle gekoppelt, die mit einer Datenleitung gekoppelt ist, wie z. B. denjenigen, die typischerweise als Bit-Leitungen bezeichnet werden. In der NAND-Flash-Architektur ist eine Spalte von Zellen in Reihe mit nur der ersten Speicherzelle der Spalte gekoppelt, die mit einer Bit-Leitung gekoppelt ist.
-
Da die Leistungsfähigkeit und Komplexität von elektrischen Systemen ansteigen, steigt auch die Anforderung nach zusätzlichem Speicher in einem System an. Es ist jedoch wünschenswert, dass die Teilezahl minimiert ist, um die Kosten des Systems weiter zu reduzieren. Das kann durch Erhöhen der Speicherdichte einer integrierten Schaltung durch Verwenden derartiger Technologien wie Mehrebenenzellen (MLC) erreicht werden. Beispielsweise ist ein MLC-NAND-Flash-Speicher ein sehr kostengünstiger nichtflüchtiger Speicher.
-
Mehrebenenzellen können sich die analoge Natur einer herkömmlichen Flash-Zelle durch Zuweisen eines Datenzustands, z. B. eines Bitmusters, zu einem spezifischen Schwellenspannungsbereich (Vt-Bereich) der Zelle, zunutze machen. Diese Technologie ermöglicht das Speichern von zwei oder mehr Informationsbits pro Zelle, abhängig von der Menge von Spannungsbereichen, die der Zelle zugewiesen sind, und der Stabilität der zugewiesenen Spannungsbereiche während der Betriebsdauer der Speicherzelle.
-
Die Spannung, die notwendig ist, um eine Zelle zu programmieren (oder zu löschen), ist in hohem Maße abhängig von der Verwendung der Zelle, wie z. B. davon, wie oft die bestimmte Zelle in der Vergangenheit programmiert und/oder gelöscht wurde (durchlaufende Zyklen). Eine Zelle, die keine oder sehr wenige Programmierungs/Lösch-Zyklen durchlaufen hat, wird typischerweise das Anlegen einer höheren Spannung an ihrem Gate erfordern, um ihre Schwellenspannung um einen bestimmten Betrag anzuheben, im Vergleich mit einer Zelle, die eine höhere Anzahl von Zyklen durchlaufen hat.
-
Beispielsweise kann eine Zelle, die niemals vorher programmiert worden ist, mit einer Anfangsprogrammierspannung programmiert werden, die relativ hoch ist im Vergleich zu einer Zelle, die viele (in der Größenordnung von Tausenden) Zyklen durchlaufen hat. Für eine Zelle, die viele Zyklen durchlaufen hat, wird ihre Schwellenspannung zu einem größeren Wert verschoben durch den gleichen Programmierimpuls, als für eine Zelle, die vorher keinen Zyklus durchlaufen hat oder nur einige wenige Zyklen durchlaufen hat. Falls eine hohe Anfangsprogrammierspannung für eine Zelle verwendet wird, die viele Zyklen durchlaufen hat, kann sich die Schwellenspannung der Zelle so weit andern, dass die Zelle ihre gewünschte Schwellenspannung selbst nach einem Anfangsprogrammierimpuls überschreitet. Deshalb könnte das Verwenden einer hohen Anfangsprogrammierspannung eine Zelle mit vielen durchlaufenen Zyklen überprogrammieren. Eine relativ niedrige Anfangsprogrammierspannung wird die Schwellenspannung einer Zelle ohne durchlaufene Zyklen oder mit wenigen durchlaufenen Zyklen um einen kleinen Betrag verschieben relativ zu dem Betrag, um den derselbe Impuls eine Zelle mit vielen durchlaufenen Zyklen verschieben würde. Deshalb könnte das Verwenden einer niedrigen Anfangsprogrammierspannung zu längeren Programmierzeiten für Zellen ohne durchlaufene Zyklen oder nahezu ohne durchlaufene Zyklen führen, da mehr Programmierimpulse erforderlich wären, um zu ermöglichen, dass die Zelle ihre Zielschwellenspannung erreicht.
-
Diese vorliegende Technologie kann ein Fehlerkorrekturschema nutzen, wie z. B. das Einbeziehen von Interferenzkompensation oder ECC (Fehlerkorrekturcode) während des Vorab-Lesens tieferer Seiten bei der Programmierung höherer Seiten. Das/die Fehlerkorrekturschema(ta) können selektiv beispielsweise auf Teilblock und WL-Ort (Wortleitungs-Ort) basieren, um den Nutzen zu maximieren, der durch das/die Fehlerkorrekturschema(ta) erhalten wird, während sie den Leistungsüberhang minimieren.
-
Das Anlegen einer Programmierspannung an das Steuer-Gate einer Speicherzelle wird die Schwellenspannung der Zelle in höherem Maß verändern, je öfter die Zelle Zyklen durchläuft. Es gibt außerdem einen signifikanten Unterschied in der Geschwindigkeit der Programmierung für Zellen, die vergleichsweise wenige Zyklen durchlaufen haben, im Vergleich zu Zellen, die viele Zyklen durchlaufen haben. Deshalb kann eine Programmierzeit für eine Speicherseite durch Anpassen einer Anfangsprogrammierspannung, die an die Zelle angelegt wird, reduziert werden, so dass sie ihre Zielschwellenspannung unter Verwendung weniger Programmierimpulse erreicht. Beispielsweise könnte eine relativ niedrige Anfangsimpulsprogrammierspannung für die Programmierung der höheren Seite einer Zelle, die viele Zyklen durchlaufen hat, verwendet werden, um die gewünschte Schwellenspannung nicht zu übersteigen. Indessen könnte eine relativ hohe Anfangsimpulsprogrammierspannung für die Programmierung der höheren Seite einer Zelle, die keine Zyklen durchlaufen hat oder eine niedrige Anzahl von Zyklen durchlaufen hat, verwendet werden.
-
Da ein NAND-Speicher Seite für Seite programmiert wird, hat jede Zelle einer Seite dieselbe Anzahl von Zyklen durchlaufen. Wie viele Zyklen eine Seite durchlaufen hat, liefert außerdem, wie viele Zyklen jede Zelle der Seite durchlaufen hat. Zykluszähler auf jeder Seite des Speichers belegen Chipplatz, zusätzliche Verarbeitungszeit und Speicherplatz. Ferner kann der Seitenzykluszähler Unterschiede in der Zellenleistung nicht erklären, die auf Faktoren basieren, die nicht die Anzahl der Zyklen ist, die die Seite durchlaufen hat, beispielsweise Herstellungsfaktoren und Ähnliches.
-
Nach dem Anlegen eines einzelnen Programmierimpulses mit einer relativ niedrigen Programmierspannung an einem Start der Programmierung der tieferen Seite für eine Seite kann eine Obergrenze einer resultierenden Zellenschwellenspannungsverteilung für Zellen auf der Seite bestimmt werden. Falls die Seite keine oder sehr wenige Zyklen durchlaufen hat, wird der niedrige Spannungsimpuls keine große Verschiebung in der Verteilung verursachen. Falls die Seite sehr viele Zyklen durchlaufen hat, wird der niedrige Spannungsimpuls eine größere Verschiebung in der Schwellenspannungsverteilung verursachen. Die Anfangsprogrammierimpulsspannung kann als ein Wert bestimmt werden, der durch Sicherungen der Speichervorrichtung definiert ist.
-
Spezielle Erfindungsausführungsformen stellen Fehlerkorrektur während des Vorab-Lesens von LP-Daten bereit, um die Genauigkeit von UP-Datenprogrammierung zu verbessern. Jedes aus einer Vielfalt von Fehlerkorrekturschemata kann angewandt werden. Die Anwendung eines Fehlerkorrekturschemas kann selektiv sein. Mit anderen Worten kann eine Bestimmung vorgenommen werden, ob ein Fehlerkorrekturschema angewandt werden soll. Ferner kann, wenn ein Fehlerkorrekturschema angewandt wird, eine Bestimmung ausgeführt werden, welches eine oder welche mehreren Fehlerkorrekturschemata angewandt werden sollen.
-
1 stellt ein Beispiel des Programmierens der höheren Seite mit Fehlerkorrektur während des Vorab-Lesens der LP-Daten in Übereinstimmung mit einer Erfindungsausführungsform dar. Wenn das Programmieren der UP-Daten startet 210, können die LP-Daten vorab gelesen werden 215. Aufgrund einer Verschiebung der Vt oder aus einem anderen Grund werden die LP-Daten fälschlicherweise als eine '0' anstelle einer '1' gelesen. Während dieses andernfalls einen Fehler in der Programmierung der UP-Daten verursachen würde, können in diesem Beispiel die LP-Daten mit einem Fehlerkorrekturschema vorab gelesen werden.
-
Fehlerkorrekturschemata können basierend auf Wortleitung (WL), Teilblock, Zykluszählwert oder irgendeiner anderen geeigneten Basis angewandt werden. Einige Beispiel-Fehlerkorrekturschemata enthalten Interferenzkompensation aus Zellen auf einer oder mehreren Seiten der Zelle, die programmiert wird, Steuereinheit-ECC, Lesespannungssuche oder jedes andere geeignete Fehlerkorrekturschema. Wenn die LP-Daten vorab gelesen werden, kann eine Bestimmung ausgeführt werden, ob ein Fehlerkorrekturschema angewandt werden soll und welches eine oder welche mehreren Fehlerkorrekturschemata angewandt werden sollen.
-
Weiterhin Bezug nehmend auf 1 wird das LP '1'-Bit, obwohl es fälschlicherweise als eine '0' gelesen wurde, durch ein Fehlerkorrekturschema korrigiert. Als ein Ergebnis bestimmt der Verarbeitungsprozess 220, dass mit dem zusätzlichen Bit '0' die Daten der höheren Seite als '01' programmiert werden sollen, und die UP-Daten werden korrekt programmiert 225.
-
Die Anwendung von Fehlerkorrekturschemata auf das Vorab-Lesen der LP kann zu einer negativen Leistungsauswirkung führen. Beispielsweise wird die Menge der Zeit, die erforderlich ist, um die UP-Programmierung fertigzustellen, erhöht, wenn ein Fehlerkorrekturschema angewandt wird, im Vergleich dazu, wenn während des Vorab-Lesens kein Fehlerkorrekturschema verwendet wird. Unterschiedliche Fehlerkorrekturschemata weisen unterschiedliche Überhang-Kosten hinsichtlich Betriebsmittelverwendung, Zeitaufwand und so weiter auf. Die Anwendung eines Fehlerkorrekturschemas muss nicht zum Programmieren jeder Zelle notwendig sein. Wenn die Anwendung eines Fehlerkorrekturschemas unnötig ist, kann die Bestimmung, ob ein Fehlerkorrekturschema angewandt werden soll, bestimmen, dass die Anwendung des Fehlerkorrekturschemas unnötig ist, und die Anwendung weglassen. Wenn die Anwendung des Fehlerkorrekturschemas als notwendig erachtet wird, kann die Bestimmung, ob das Fehlerkorrekturschema angewandt werden soll, bestimmen, das Fehlerkorrekturschema anzuwenden. Ferner, abhängig von Variablen, die bei der Anwendung eines Fehlerkorrekturschemas berücksichtigt werden, kann eine Bestimmung ausgeführt werden, welches Fehlerkorrekturschema angewandt werden soll, um die Genauigkeit der vorab gelesenen LP-Daten sicherzustellen und gleichzeitig die Effizienz der UP-Programmierung zu erhalten.
-
Es wird jetzt auf 2 Bezug genommen. Eine dreidimensionale Speichervorrichtung verwendet gestapelte Speicherfelder auf einem einzigen Chip. Eine solche Architektur ermöglicht höhere Speicherdichte auf im Wesentlichen derselben Chipgrundfläche. 2 stellt ein Beispiel der Architektur eines typischen gestapelten NAND-Flash-Speicherfelds dar, neben einem Ablaufplan eines Verfahrens zum Programmieren einer höheren Seite, das das Vorab-Lesen von LP-Daten mit einer Fehlerkorrekturoption enthält. Die Schichten der gestapelten NAND-Architektur verwenden gemeinsam dieselben Zugangsleitungen (z. B. Wort-Leitungen (WL)) und wählen Gate-Source-Leitungen (SGS-Leitungen) aus. Jede Schicht wird durch die Datenleitungsvorspannung (z. B. die Bit-Leitungsvorspannung (BL-Vorspannung)) ausgewählt.
-
Eine Programmieroperation startet 310 und enthält das Anlegen einer Programmierspannung (z. B. 20 V) an die ausgewählten Wort-Leitungen, die programmiert werden. Da eine Wortleitung durch alle Schichten gemeinsam verwendet wird, wird Bit-Leitungsvorspannung (z. B. Anlegen einer Bitleitungsspannung) verwendet, um Schichten zu sperren, die nicht zum Programmieren ausgewählt sind. Beispielsweise können die erste und die dritte Schicht ausgewählt werden, um programmiert zu werden, durch Anlegen einer Vorspannung an die jeweiligen Bit-Leitungen mit einer Aktivierungsspannung (z. B. 0 V), während an die nicht ausgewählten Bit-Leitungen eine Sperrspannung (z. B. 2 V) als Vorspannung angelegt wird. Somit kann die erste und die dritte Schicht auswählt sein, während die anderen Schichten nicht ausgewählt sind.
-
Für Lösch- und Abfühloperationen können alle Schichten im Wesentlichen gleichzeitig ausgewählt sein. In der Abfühloperation ist eine einzige Leitung jeder Schicht ausgewählt. Beispielsweise kann während einer Abfühloperation an alle Bit-Leitungen eine Vorspannung mit einer niedrigeren Spannung (z. B. 0,5 V) angelegt sein, während die Lesespannung (Vr) an die gemeinsame Wortleitung angelegt ist. An die nicht ausgewählten Wort-Leitungen kann eine Vorspannung mit einer Durchlassspannung Vpass (z. B. 6 V) angelegt sein, und die ausgewählten Gate-Source-Leitungen (SGS-Leitungen) können angeschaltet sein (z. B. 5 V).
-
Während einer Löschoperation kann an alle Bit-Leitungen eine Vorspannung mit einer relativ großen Löschspannung (z. B. 20 V) angelegt sein, während an alle Wort-Leitungen eine Vorspannung mit einer Referenzspannung (z. B. 0 V) angelegt sein kann. An die auswählten Gate-Drain-Leitungen und gemeinsamen ausgewählten Gate-Source-Leitungen kann eine relativ große Spannung (z. B. 20 V) als Vorspannung angelegt sein.
-
Ein Problem mit der Programmierung in einer gestapelten Speicherfeldarchitektur ist die Programmierungsstörung, die aufgrund eines Programmierungsratenversatzes zwischen Schichten auftreten kann. Falls beispielsweise die erste Schicht mit einer langsameren Rate programmiert als die vierte Schicht, können die relativ großen Spannungen, die an die langsamere erste Schicht angelegt sind, um das Programmieren der ersten Schicht für eine längere Zeit fortzusetzen als die schnellere vierte Schicht, Programmierungsbelastung für die vierte Schicht verursachen. Eine solche Störung kann Fehler während Abfühloperationen verursachen, da die Speicherzellenschwellenspannungen der gestörten Schicht von dem gelöschten Pegel oder den ursprünglich programmierten Spannungspegeln erhöht werden können.
-
Ähnlich wie in 1 gezeigt ist, kann ein Erfindungsverfahren das Starten 310 der Programmierung, Vorab-Lesen 315 von LP-Daten mit einem Fehlerkorrekturschema, wie z. B. einem teilblockbasierten (SB-basierten) Fehlerkorrekturschema enthalten. Als ein Ergebnis kann die Verarbeitung 320 die korrekten Daten bestimmen, die als die UP-Daten programmiert werden sollen, und die UP-Daten können korrekt programmiert werden 325. Die Bestimmung, ob Fehlerkorrektur angewandt werden soll und welche Fehlerkorrektur angewandt werden soll, kann beispielsweise auf einem Teilblock und/oder Wortleitung und/oder Bit-Leitung und/oder Zykluszählwert usw. basieren.
-
2 stellt eine LP-Vt-Verteilung am Anfang der UP-Programmierung an Teilblock 0 (SB 0) und an Teilblock 15 (SB 15) dar. Die LP-Daten für SB 0 können deutlich als ein '1'-Bit gelesen werden. Höhere Teilblöcke haben jedoch mehr Belastung vor dem LP-Vorab-Lesen. Wie ferner in SB 15 gezeigt ist, wird die LP-Vt-Verteilung verschoben, und die LP-Daten können fehlerhaft als eine '0' anstelle einer '1' gelesen werden.
-
Das Ausführen von Fehlerkorrektur an höheren Teilblöcken kann die Genauigkeit von LP-Vorab-Lesen für die höheren Teilblöcke sicherstellen. Weniger oder keine Korrektur kann für tiefere Teilblöcke mit weniger Belastung und einer geringeren Wahrscheinlichkeit für fehlerhaftes Lesen angewandt werden. Das Verwenden von weniger oder keiner Korrektur an tieferen Teilblöcken kann die Leistung und die Zuverlässigkeit einer Speichervorrichtung verbessern. Unterschiedliche Korrekturschemata können unterschiedliche Aufwände aufweisen. Weil die Belastungen auf höheren Teilblöcken typischerweise höher sind als auf tieferen Teilblöcken, können zunehmend aufwändige Korrekturschemata angewandt werden, wenn das Programmieren zu zunehmend höheren Teilblöcken fortschreitet, um die Genauigkeit von LP-Vorab-Lesen für alle Teilblöcke sicherzustellen. Selbst wenn eine LP-Vt um einen kleinen Betrag verschoben wird, wie z. B. 100 mV, kann ein fehlerhaftes Lesen der LP-Vt beispielsweise zu einem Unterschied in der UP-Vt von 1 V führen. Somit können kleine Fehler zu großen Unterschieden führen. Die vorliegenden Technologieausführungsformen können dazu beitragen, ein solches fehlerhaftes Lesen zu reduzieren oder zu eliminieren.
-
Ein Beispiel-Fehlerkorrekturschema ist Zelle-zu-Zelle-Interferenzkompensation (manchmal auch als Zwischenzellen-Interferenzkompensation bezeichnet). Zelle-zu-Zelle-Interferenz ist gut bekannt als eine Quelle für Rauschen, das verantwortlich für Ausgangs-Speicher-Zuverlässigkeitsverlust ist. Zelle-zu-Zelle-Interferenz führt zu einer Vt-Verteilungsverschiebung durch Ändern der Zustände der nahen Angreiferzellen. Die Interferenz wird auf kapazitive Kopplung über parasitische Kondensatoren um ein potentialfreies Gate aufgrund eines Kopplungsverhältnisses zurückgeführt. Zelle-zu-Zelle-Interferenzkompensation kann die LP-Vorab-Lese-Spannung Vt um einen Betrag anpassen, abhängig davon, ob die Spannung benachbarter Zellen höher oder niedriger ist, um Vt-Verschiebungen, die durch die benachbarten höheren oder niedrigeren Zellenspannungen verursacht sind, zu kompensieren. Zelle-zu-Zelle-Interferenz kann beispielsweise auf einem Zustand einer benachbarten Zelle oder den Zuständen mehrerer (z. B. 2) benachbarter Zellen basieren.
-
Ein weiteres Beispielfehlerkorrekturschema ist Fehlerkorrektur durch eine Steuereinheit. Mit anderen Worten die Verwendung einer ECC-Maschine. NAND-Speicher kann ECC verwenden, um Bits zu kompensieren, die während des normalen Betriebs der Vorrichtung spontan fehlerhaft werden. Falls die ECC den Fehler nicht während des Vorab-Lesens korrigieren kann, kann sie immer noch den Fehler detektieren. Wenn sie Lösch- oder Programmoperationen ausführt, wie z. B. UP-Programmierung, kann die Speichervorrichtung Blöcke oder Teilblöcke detektieren, die nicht zu programmieren oder zu löschen sind, und diese Blöcke als defekt markieren. Die Daten können dann in einen anderen, guten Block geschrieben werden, und die Karte der defekten Blöcke wird aktualisiert. Das Anwenden von ECC kann wie folgt verfahren. Die LP-Vorab-Lesedaten können ausgegeben werden. Die Speichersteuereinheit kann die korrekten LP-Daten unter Verwendung der ECC-Maschine korrigieren und die korrekten Daten zurück zu der NAND-Vorrichtung senden. Die korrigierten LP-Daten können zur Verarbeitung verwendet werden, und die korrekten Werte können dann für die UP-Programmierung programmiert werden.
-
Ein weiteres Beispielfehlerkorrekturschema ist es, eine Lesespannungssuche (manchmal auch als Lesespannungsanpassung bezeichnet) auszuführen. In diesem Beispiel, anstatt einen festen oder vorbestimmten LP-Spannungswert zu referenzieren, liest die Steuereinheit dynamisch die Spannung und bestimmt eine kleinste Bitfehlerrate.
-
Jedes Fehlerkorrekturschema weist einen ihm zugeordneten Aufwand auf, wie z. B. hinsichtlich des Zeitaufwands, und unterschiedliche Schemata können in verschiedenen Graden erfolgreich sein. Die Kombination mehrerer Schemata kann kumulative Ergebnisse bereitstellen. Mit anderen Worten kann die Kombination von Zelle-zu-Zelle-Interferenz-Kompensation mit einer Lesespannungssuche einen stärkeren Effekt aufweisen, oder eher sicherer sein, dass sie zur Korrektur des LP-Daten-Bits führt, als entweder Zelle-zu-Zelle-Interferenzkompensation oder Lesespannungssuche einzeln.
-
Variationen der Zellen auf der Seite, die Wortleitung-zu-Wortleitung-Variationen, Block-zu-Block-Variationen und außerdem Prozessvariationen enthalten, können alle unter Verwendung der hier offenbarten Verfahren berücksichtigt werden. Somit, anstelle von oder zusätzlich zu dem Zählen von Zyklen einer Seite und Schätzen einer Wirkung der Menge von Zyklen, können Maßnahmen wie das spezifische WL oder SB verwendet werden, um das Programmieren der höheren Seite anzupassen.
-
Beispiele
-
Durch eine allgemeine Beispielimplementierung der Erfindungsausführungsformen stellt Tabelle 1 nachstehend eine Liste von Teilblöcken zur UP-Programmierung bereit, zusammen mit einem Fehlerkorrekturschema, das angewandt werden soll, und einem Zeitnachteil oder einem Zeitaufwand, der mit jedem Fehlerkorrekturschema verbunden ist. Tabelle 1
Teilblock | LP Vorab-Lesen | Zeit-Überhang |
0 | Standard | 0 μs |
1 | Standard | 0 μs |
2 | Standard | 0 μs |
3 | Standard | 0 μs |
4 | Fehlerkorrektur 1 | Zeit 1 |
5 | Fehlerkorrektur 1 | Zeit 1 |
6 | Fehlerkorrektur 1 | Zeit 1 |
7 | Fehlerkorrektur 1 | Zeit 1 |
8 | Fehlerkorrektur 2 | Zeit 2 |
9 | Fehlerkorrektur 2 | Zeit 2 |
10 | Fehlerkorrektur 2 | Zeit 2 |
11 | Fehlerkorrektur 2 | Zeit 2 |
12 | Fehlerkorrektur 3 | Zeit 3 |
13 | Fehlerkorrektur 3 | Zeit 3 |
14 | Fehlerkorrektur 3 | Zeit 3 |
15 | Fehlerkorrektur 3 | Zeit 3 |
-
In diesem Beispiel wurden die 16 Teilblöcke in Gruppen von vier aufgeteilt, von denen jeder eine unterschiedliche Anwendung eines Korrekturschemas aufweist. Die Teilblöcke 0–3 folgen einer Standardprozedur ohne Korrektur. Der Zeit-Überhang oder Aufwand für diese ist 0, weil sie keine zusätzliche Zeit zu der Standard-UP-Programmierung hinzufügen. Die Teilblöcke 4–7 ”wenden Fehlerkorrektur 1 an”, die Zeitaufwand ”Zeit 1” zugeordnet ist. Die Teilblöcke 8–11 ”wenden Fehlerkorrektur 2 an”, die Zeitaufwand ”Zeit 2” zugeordnet ist. Die Teilblöcke 12–15 ”wenden Fehlerkorrektur 3 an”, die Zeitaufwand ”Zeit 3” zugeordnet ist. Weil die Wahrscheinlichkeit von Fehlern in den LP-Vorab-Lesedaten ansteigt, wenn die Blocknummer ansteigt, kann die Fehlerkorrektur 3 typischerweise mächtiger und effektiver sein als Fehlerkorrektur 2, jedoch mit weniger Effizienz und größerem Zeitnachteil. Ähnlich kann die Fehlerkorrektur 2 typischerweise mächtiger und effektiver als Fehlerkorrektur 1 sein, jedoch mit weniger Effizienz und größerem Zeitnachteil.
-
Eine spezifischere Beispielreihe von Fehlerkorrekturschemata, die für ansteigend höher nummerierte Teilblöcke während UP-Programmierung angewandt werden soll, ist nachstehend in Tabelle 2 bereitgestellt. Tabelle 2
Teilblock | LP Vorab-Lesen | Zeit-Überhang |
0 | Standard | 0 μs |
1 | Standard | 0 μs |
2 | Standard | 0 μs |
3 | Standard | 0 μs |
4 | Standard | 0 μs |
5 | Interferenzkompensation 1 Seite | 60 μs |
6 | Interferenzkompensation 1 Seite | 60 μs |
7 | Interferenzkompensation 2 Seiten | 120 μs |
8 | Interferenzkompensation 2 Seiten | 120 μs |
9 | Steuereinheit ECC | 320 μs |
10 | Steuereinheit ECC | 320 μs |
11 | Steuereinheit ECC | 320 μs |
12 | Steuereinheit ECC | 320 μs |
13 | Steuereinheit ECC | 320 μs |
14 | Steuereinheit ECC | 320 μs |
15 | Steuereinheit ECC | 320 μs |
-
Wie durch den Unterschied zwischen Tabelle 1 und Tabelle 2 erkannt werden kann, können Fehlerkorrekturschemata auf die Teilblöcke in Gruppen von Teilblöcken angewandt werden, die nicht gleichmäßig über die unterschiedlichen Schemata verteilt sind. Während beispielsweise jedes der Schemata in Tabelle 1 auf gleichmäßige Gruppen von vier Teilblöcken pro Schema angewandt wurde, enthält Tabelle 2 Schemata mit 2, 5 und 7 Teilblöcke, die ihnen zugeordnet sind. Die Bestimmung, auf welche Teilblöcke welches Fehlerkorrekturschema angewandt wird, kann variieren, um zu speziellen Anwendungen zu passen, und die Beispiele in den Tabellen 1 und 2 sind nicht als beschränkend vorgesehen.
-
Tabelle 2 zeigt, dass für die Teilblöcke 0–4 UP-Programmierung gemäß einem Standardprozess ohne Fehlerkorrektur während des LP-Vorab-Lesens weiterfährt. Die Teilblöcke 5–6 nutzen Interferenz-Kompensation als ein Fehlerkorrekturschema mit Berücksichtigung von Zellen oder Blöcken oder Teilblöcken auf einer einzelnen Seite der/s aktuellen Zelle oder Blocks oder Teilblocks. Die Teilblöcke 7–8 nutzen Interferenzkompensation als ein Fehlerkorrekturschema mit Berücksichtigung von Zellen oder Blöcken oder Teilblöcken auf zwei Seiten der/s aktuellen Zelle oder Blocks oder Teilblocks. Die Steuereinheit ECC wird für die Teilblöcke 9–15 angewandt. Einige Beispielzeitaufwände sind in Tabelle 2 enthalten, die darstellen, wie der Zeitaufwand von einem Fehlerkorrekturschema zu einem anderen ansteigen kann.
-
Während wenigstens einiges der vorstehenden Beschreibung Auswahl und Anwendung eines Fehlerkorrekturschemas zum Korrigieren von LP-Vorab-Lesefehlern basierend auf Teilblocknummer beschrieben hat, sind Erfindungsausführungsformen nicht auf Auswahl/Anwendung von Fehlerkorrektur basierend auf der Teilblocknummer beschränkt. Die nachstehende Tabelle 3 ist ein allgemeines Beispiel der Vorab-Lese-Fehlerkorrekturschemata basierend auf UP-Programmierung WL-Ort anstelle des Teilblocks. Tabelle 3
WL | LP Vorab-Lesen | Zeit-Überhang |
0–3 | Fehlerkorrektur 3 | Zeit 3 |
4–16 | Standard | 0 μs |
17–20 | Fehlerkorrektur 1 | Zeit 1 |
21–28 | Fehlerkorrektur 2 | Zeit 2 |
29–32 | Fehlerkorrektur 3 | Zeit 3 |
-
Wie aus Tabelle 3 zu erkennen ist, kann sich die Anwendung eines Fehlerkorrekturschemas basierend auf WL von vorhergehenden Beispielen der Anwendung des Fehlerkorrekturschemas basierend auf Teilblock unterscheiden. WL-Fehlerkorrekturanwendung kann beispielsweise auf Gruppen von WLs angewandt werden, kann jedoch in einer anderen Reihenfolge sein als ansteigende Stärke/Aufwand, wenn die WL-Nummer ansteigt. Die Bestimmung, auf welche WLs welches Fehlerkorrekturschema anzuwenden ist, kann auf einer Fehlerwahrscheinlichkeit für die speziellen WLs basieren. Fehlerträchtigere WLs wenden eine effektivere, jedoch aufwändigere Korrektur an als weniger fehlerträchtige WLs.
-
Die nachstehende Tabelle 4 stellt eine spezifischere Beispielimplementierung von Fehlerkorrektur durch WL bereit. Tabelle 4
WL | LP Vorab-Lesen | Zeit-Überhang |
0–3 | Steuereinheit ECC | 320 μs |
4–16 | Standard | 0 μs |
17–20 | Interferenzkompensation 1 Seite | 60 μs |
21–28 | Interferenzkompensation 1 Seite | 60 μs |
29–32 | Steuereinheit ECC | 320 μs |
-
Während die vorstehend genannten Beispiele, auf die in den Tabellen 1–4 Bezug genommen wird, primär LP-Vorab-Lesefehlerkorrekturschemata basierend auf Block oder WL angewandt haben, kann die Auswahl eines Vorab-Lese-Fehlerkorrekturschemas auf jeder anderen geeigneten Basis stattfinden. Beispielsweise kann eine Speichervorrichtung Vorab-Lesefehlerkorrekturschemata basierend auf einem Zählwert für Programmier/Löschen-Zyklus umschalten. Als ein weiteres Beispiel können Vorab-Lesefehlerkorrekturschemata basierend auf einer Kombination von zwei oder mehr Basen ausgewählt werden, wie z. B. basierend auf einer Kombination von zwei oder mehr aus Teilblock, WL-Ort und Zykluszählwert.
-
Während die Beschreibung sich bisher primär auf UP-Programmieren für Zwei-Bits-pro-Zelle-Speichervorrichtungen bezogen hat, können die Konzepte auf Drei-Bits-pro-Zelle-Speichervorrichtungen oder größer angewandt werden. 3 stellt ein Beispiel von Drei-Bits-pro-Zelle-Implementierung dar. Unabhängig davon, ob die Anzahl von Bits pro Zelle zwei, drei oder eine größer Anzahl ist, basiert die UP-Programmierung wenigstens indirekt auf den LP-Daten.
-
In 3 kann ein Prozess zum Programmieren der UP-Daten die LP-Daten vorab lesen und Verarbeitung basierend auf den LP-Daten und einem zusätzlichen Bit, um die Mittelseiten-Daten (MP-Daten) zu bestimmen und zu programmieren, ausführen. Die MP-Daten können vorab gelesen werden, und die MP-Daten und ein zusätzliches Bit können zum Verarbeiten und Programmieren der UP-Daten verwendet werden. Fehlerkorrektur kann angewandt werden, wenn die LP-Daten und/oder die MP-Daten vorab gelesen werden, um die Genauigkeit der UP-Datenprogrammierung sicherzustellen.
-
Bezug nehmend auf 4 ist ein Ablaufplan eines computerimplementierten Verfahrens zum Programmieren einer Seite eines Speichers in einer NAND-Speichervorrichtung in Übereinstimmung mit einem Beispiel einer Erfindungsausführungsform dargestellt. Das Verfahren enthält das Anwenden 510 von Anfangsprogrammierimpulsen zur Programmierung der tieferen Seite der Seite und Vorab-Lesen 520 von Daten der tieferen Seite. Das Verfahren enthält ferner Bestimmen 530, ob eine Fehlerkorrekturoperation auf die Daten der tieferen Seite angewandt werden soll. Daten, die sekundäre Programmierimpulse angeben, die zum Programmieren von Daten der höheren Seite verwendet werden sollen, werden gespeichert 540, und die Daten der höheren Seite werden basierend auf den sekundären Programmierimpulsen und den Daten der tieferen Seite programmiert 550.
-
Wenn die Speichervorrichtung eine Drei-Bits-pro-Zelle-Vorrichtung ist, kann das Verfahren das Speichern von Daten, die tertiäre Programmierimpulse angeben, die zum Programmieren der Daten der mittleren Seite und das Programmieren der Daten der mittleren Seite basierend auf den tertiären Programmierimpulsen verwendet werden sollen, und der Daten der tieferen Seite enthalten. Zum Programmieren der Daten der höheren Seite enthält das Verfahren ferner das Vorab-Lesen der Daten der mittleren Seite und Programmieren der Daten der höheren Seite basierend auf den sekundären Programmierimpulsen, und die Daten der tieferen Seite umfassen das Programmieren der Daten der höheren Seite basierend auf den sekundären Impulsen und den Daten der mittleren Seite. Das Programmieren der Daten der höheren Seite in diesem Beispiel basiert immer noch, wenigstens indirekt, auf dem Programmieren der Daten der tieferen Seite, weil die Daten der mittleren Seite basierend auf den Daten der tieferen Seite programmiert werden.
-
Das Verfahren kann das Bestimmen enthalten, ob das Programmieren der Daten der höheren Seite das Programmieren eines tieferen Teilblocks oder das Programmieren eines höheren Teilblocks umfasst. Das Verfahren kann vorangehende Fehlerkorrektur für den tieferen Teilblock und Anwenden der Fehlerkorrektur für den höheren Teilblock enthalten.
-
Das Verfahren kann das Verwenden einer oder mehrerer aus mehreren unterschiedlichen Fehlerkorrekturoperationen enthalten. Wie vorstehend festgestellt, können diese Operationen mit dem Teilblock variieren. Diese Operationen können basierend auf einem Wort-Leitungsort für das Programmieren der höheren Seite variieren. Diese Operationen können mit dem Zählwert des Programmieren/Löschen-Zyklus variieren. Diese Operationen können basierend auf einer Kombination von zwei oder mehreren aus Teilblock, Wortleitungs-Ort oder Zählwert des Programmieren/Löschen-Zyklus variieren. Um die Variation von Fehlerkorrekturoperationen mit dem Zählwert des Zyklus zu erleichtern, kann das Verfahren das Bestimmen einer Anzahl von Programmierzyklen für die tiefere Seite und Anwenden der Fehlerkorrekturoperation, wenn die Anzahl von Programmierzyklen einen vorbestimmten Schwellenwert übersteigt, enthalten.
-
Eine Beispielfehlerkorrekturoperation enthält Interferenzkompensation durch Modifizieren einer Lesespannung eines Teilblocks der Daten der tieferen Seite basierend auf einer Lesespannung einer benachbarten Wortleitung. Beispielsweise kann die Lesespannung des Teilblocks der Daten der tieferen Seite basierend auf der Lesespannung einer einzelnen benachbarten Wortleitung modifiziert werden. Als weiteres Beispiel kann die Lesespannung des Teilblocks der Daten der tieferen Seite basierend auf der Lesespannung mehrerer benachbarter Wortleitungen modifiziert werden.
-
Eine weitere Beispielfehlerkorrekturoperation enthält das Ausgeben der vorab gelesenen Daten der tieferen Seite zu einer Steuereinheit, wie z. B. einer ECC-Steuereinheit. Die Operation kann dann das Korrigieren der Daten mit der Steuereinheit, Senden der Daten zurück zu der Speichervorrichtung und Verwenden der korrigierten Daten in der Speichervorrichtung zum Programmieren der Daten der höheren Seite enthalten.
-
Eine weitere Beispielfehlerkorrekturoperation enthält Ausführen einer Lesespannungssuche. Die Lesespannungssuche kann unter Verwendung einer Steuereinheit, die die Lesespannung für eine kleinste Bitfehlerrate bestimmt und die Lesespannung der Daten der tieferen Seite basierend auf der Lesespannung für die kleinste Bitfehlerrate anpasst, ausgeführt werden. In diesem Beispiel kann die Lesespannung der Daten der tieferen Seite variabel und nicht fest oder vorbestimmt sein.
-
Jetzt Bezug nehmend auf 5 ist ein Ablaufplan eines computerimplementierten Verfahrens zum Programmieren einer Seite eines Speichers in einer NAND-Speichervorrichtung in Übereinstimmung mit einem weiteren Beispiel einer Erfindungsausführungsform dargestellt. Das Verfahren enthält das Anlegen 610 eines Anfangsprogrammierimpulses zum Programmieren der tieferen Seite der Seite; Vorab-Lesen 620 von Daten der tieferen Seite; und Anwenden 630 einer Fehlerkorrektur auf die Daten der tieferen Seite. Das Verfahren kann ferner Speichern 640 von Daten, die einen sekundären Programmierimpuls angeben, der zum Programmieren von Daten der höheren Seite verwendet werden soll, und Programmieren 650 der Daten der höheren Seite basierend auf dem sekundären Programmierimpuls und den Daten der tieferen Seite enthalten.
-
Wenn die tieferen Teilblöcke der höheren Seite programmiert werden, kann eine erste Fehlerkorrekturoperation angewandt werden. Wenn die mittleren Teilblöcke der höheren Seite programmiert werden, kann eine zweite Fehlerkorrekturoperation angewandt werden. Wenn höhere Teilblöcke der höheren Seite programmiert werden, kann eine dritte Fehlerkorrekturoperation angewandt werden. Jede aus der ersten, zweiten und dritten Fehlerkorrekturoperation ist unterschiedlich. Jede aus der ersten, zweiten und dritten Fehlerkorrekturoperation weist unterschiedlichen Zeitaufwand auf. Die Anzahl von Teilblöcken pro Fehlerkorrekturoperation kann gleichmäßig unter den Fehlerkorrekturoptionen verteilt sein, oder sie kann ungleichmäßig verteilt sein. Mit anderen Worten und als ein Beispiel können die tieferen Teilblöcke, mittleren Teilblöcke und höheren Teilblöcke Gruppen von Teilblöcken sein, von denen jede eine gleiche Anzahl von Teilblöcken umfasst. Als ein weiteres Beispiel sind die tieferen Teilblöcke, die mittleren Teilblöcke und die höheren Teilblöcke Gruppen von Teilblöcken, wobei wenigstens zwei dieser Gruppen eine unterschiedliche Anzahl von Teilblöcken umfassen.
-
Die Fehlerkorrekturoperation kann mehrere unterschiedliche Fehlerkorrekturoperationen enthalten, die basierend auf einem Wortleitungsort für das Programmieren der höheren Seite variieren. Die Fehlerkorrekturoptionen können auch basierend auf dem Zykluszählwert variieren, wie vorstehend beschrieben.
-
Das Verfahren kann das zunehmende Anwenden von ansteigend zeitaufwändiger Fehlerkorrektur auf die Daten der tieferen Seite enthalten, wenn die höhere Seite programmiert wird, wie z. B. wenn die Teilblöcke oder Wortleitungen der höheren Seite programmiert werden.
-
Jetzt Bezug nehmend auf 6 ist ein Ablaufplan eines computerimplementierten Verfahrens zum Programmieren einer Seite eines Speichers in einer NAND-Speichervorrichtung in Übereinstimmung mit einem weiteren Beispiel einer Erfindungsausführungsform dargestellt. Das Verfahren enthält das Anlegen 710 von Anfangsprogrammierimpulsen zur Programmierung der tieferen Seite der Seite und Vorab-Lesen 720 von Daten der tieferen Seite. Das Verfahren kann das Anwenden von Fehlerkorrektur auf Daten der tieferen Seite enthalten. Daten, die sekundäre Programmierimpulse angeben, die zum Programmieren von Daten der höheren Seite verwendet werden sollen, können gespeichert werden 730, und die Daten der höheren Seite können basierend auf den sekundären Programmierpulsen (oder besser den Daten, die die sekundären Programmierpulse angeben) und den Daten der tieferen Seite programmiert werden 740. Das Verfahren kann das zunehmende Anwenden von ansteigend zeitaufwändiger Fehlerkorrektur auf die Daten der tieferen Seite enthalten, wenn die Teilblöcke der höheren Seite programmiert werden.
-
In einem Beispiel stellt eine Erfindungsausführungsform ein Datenspeichersystem bereit. Das System kann einen Prozessor, eine Stromquelle und einen NAND-Speicher, der mit dem Prozessor gekoppelt ist und ein Feld aus Zellen enthält (und durch die Stromquelle mit Strom versorgt wird), enthalten. Das Datenspeichersystem kann eine Schaltungsanordnung enthalten, die konfiguriert ist, Programmier- und Leseverfahren auszuführen. Beispielsweise kann das Verfahren das Anlegen von Anfangsprogrammierimpulsen für das Programmieren der tieferen Seite der Seite; Vorab-Lesen von Daten der tieferen Seite; Anwenden einer Fehlerkorrektur auf die Daten der tieferen Seite; Speichern von Daten, die sekundäre Programmierimpulse angeben, die zum Programmieren der Daten der höheren Seite verwendet werden sollen; und Programmieren der Daten der höheren Seite basierend auf den sekundären Programmierimpulsen und den Daten der tieferen Seite enthalten.
-
In einem Beispiel stellt eine Erfindungsausführungsform einen NAND-Speicher oder eine NAND-Speichervorrichtung bereit. Der NAND-Speicher kann ein Feld aus NAND-Speicherzellen; und eine Schaltungsanordnung, die konfiguriert ist, ein Verfahren auszuführen, enthalten. Beispielsweise kann das Verfahren das Anlegen von Anfangsprogrammierimpulsen für das Programmieren der tieferen Seite der Seite; Vorab-Lesen von Daten der tieferen Seite; Bestimmen, ob eine Fehlerkorrekturoperation auf die Daten der tieferen Seite angewandt werden soll; Speichern von Daten, die sekundäre Programmierimpulse angeben, die zum Programmieren der Daten der höheren Seite verwendet werden sollen; und Programmieren der Daten der höheren Seite basierend auf den sekundären Programmierimpulsen und den Daten der tieferen Seite enthalten.
-
Merkmale des Systems oder von Einrichtungen, die vorstehend oder später beschrieben sind, können auch in Bezug auf das Verfahren oder irgendwelche hier beschriebenen Prozesse implementiert sein, und umgekehrt. Außerdem können Einzelheiten in den Beispielen überall in einer oder mehreren Ausführungsformen verwendet werden.
-
Es wird jetzt auf 7 Bezug genommen. 7 ist ein vereinfachtes Blockdiagramm einer Speichervorrichtung 801 gemäß einer Erfindungsausführungsform, auf der verschiedene Verfahren praktiziert werden können. Die Speichervorrichtung 801 enthält ein Feld von Speicherzellen 804, die in Zeilen und Spalten angeordnet sind. Obwohl die verschiedenen Ausführungsformen primär mit Bezug auf NAND-Speicherfelder beschrieben werden, sind die verschiedenen Ausführungsformen nicht auf eine spezifische Architektur des Speicherfelds 804 beschränkt. Einige Beispiele anderer Feldarchitekturen, die für die vorliegenden Ausführungsformen geeignet sind, enthalten NOR-Felder, AND-Felder und virtuelle Erdungsfelder. Im Allgemeinen können die Ausführungsformen, die hier beschrieben sind, jedoch auf jede Feldarchitektur, die das Erzeugen eines Datensignals ermöglicht, das die Schwellenspannung jeder Speicherzelle angibt, angepasst werden.
-
Eine Zeilendecodierungsschaltungsanordnung 808 und eine Spaltendecodierungsschaltungsanordnung 810 sind vorgesehen, um Adresssignale, die für die Speichervorrichtung 801 bereitgestellt werden, zu decodieren. Adresssignale werden empfangen und decodiert, um auf das Speicherfeld 804 zuzugreifen. Die Speichervorrichtung 801 enthält außerdem eine Eingabe/Ausgabe-Steuerschaltungsanordnung (I/O-Schaltungsanordnung) 812, um sowohl die Eingabe von Befehlen, Adressen und Daten in die Speichervorrichtung 801 als auch die Ausgabe von Daten und Statusinformationen aus der Speichervorrichtung 801 zu verwalten. Ein Adressregister 814 ist zwischen die I/O-Steuerschaltungsanordnung 812 und die Zeilendecodierungsschaltungsanordnung 808 und die Spaltendecodierungsschaltungsanordnung 810 gekoppelt, um die Adresssignale vor dem Decodieren aufzufangen. Ein Befehlsregister 824 ist zwischen die I/O-Steuerschaltungsanordnung 812 und Steuerlogik 816 gekoppelt, um ankommende Befehle aufzufangen. Die Steuerlogik 816 steuert den Zugriff auf das Speicherfeld 804 in Reaktion auf die Befehle und erzeugt Statusinformationen für den externen Prozessor 830. Die Steuerlogik 816 ist mit der Zeilendecodierungsschaltungsanordnung 808 und Spaltendecodierungsschaltungsanordnung 810 gekoppelt, um die Zeilendecodierungsschaltungsanordnung 808 und die Spaltendecodierungsschaltungsanordnung 810 in Reaktion auf die Adressen zu steuern.
-
Die Steuerlogik 816 kann mit einer Abtast-Halte-Schaltungsanordnung 818 gekoppelt sein. Die Abtast-Halte-Schaltungsanordnung 818 fängt Daten, entweder ankommend oder abgehend, in der Form von analogen Datensignalen auf. Beispielsweise könnte die Abtast-Halte-Schaltungsanordnung Kondensatoren oder andere analoge Speichervorrichtungen enthalten zum Abtasten entweder eines ankommenden Datensignals, das Daten repräsentiert, die in eine Speicherzelle geschrieben werden sollen, oder eines abgehenden Datensignals, das die Schwellenspannung angibt, die aus einer Speicherzelle abgefühlt ist. Die Abtast-Halte-Schaltungsanordnung 818 kann ferner Verstärkung und/oder Puffern des abgetasteten Signals bereitstellen, um ein stärkeres Datensignal für eine externe Vorrichtung bereitzustellen.
-
Die Handhabung analoger Datensignale kann eine Vorgehensweise annehmen, die ähnlich zu einer Vorgehensweise ist, die im Bereich von CMOS-Bildgerättechnologie bekannt ist, wobei Ladungspegel, die an Pixeln des Bildgeräts in Reaktion auf einfallende Belichtung erzeugt werden, auf Kondensatoren gespeichert werden. Diese Ladungspegel werden dann in Signale umgesetzt unter Verwendung eines Differenzverstärkers mit einem Referenzkondensator als einen zweiten Eingang des Differenzverstärkers. Die Ausgabe des Differenzverstärkers wird dann zu Analog/Digital-Umsetzungsvorrichtungen (ADC-Vorrichtungen) weitergegeben, um einen digitalen Wert zu erhalten, der für eine Intensität der Beleuchtung repräsentativ ist. In den vorliegenden Ausführungsformen kann eine Ladung auf einem Kondensator gespeichert werden in Reaktion darauf, dass er einem Datensignal unterworfen wird, das eine tatsächliche oder Ziel-Schwellenspannung einer Speicherzelle zum Lesen bzw. Programmieren der Speicherzelle angibt. Diese Ladung könnte dann in ein analoges Datensignal umgesetzt werden unter Verwendung eines Differenzverstärkers, der einen geerdeten Eingang oder ein anderes Referenzsignal als einen zweiten Eingang aufweist. Die Ausgabe des Differenzverstärkers könnte dann zu der I/O-Steuerschaltungsanordnung 812 weitergegeben werden zum Ausgeben aus der Speichervorrichtung in dem Fall einer Leseoperation oder zum Vergleich während einer oder mehrerer Verifikationsoperationen im Programmieren der Speichervorrichtung verwendet werden. Es wird darauf hingewiesen, dass die I/O-Steuerschaltungsanordnung 812 optional Analog/Digital-Umsetzungsfunktionalität und Digital/Analog-Umsetzungsfunktionalität (DAC-Funktionalität) aufweisen könnte, um gelesene Daten aus einem analogen Datensignal in ein digitales Bitmuster umzusetzen und um Schreibdaten von einem digitalen Bitmuster in ein analoges Signal umzusetzen, so dass die Speichervorrichtung 801 zur Kommunikation mit entweder einer analogen oder einer digitalen Datenschnittstelle angepasst werden könnte.
-
Während einer Programmieroperation werden Zielspeicherzellen des Speicherfelds 804 programmiert, bis Spannungen, die ihre Vt-Pegel angeben, mit den Pegeln übereinstimmen, die in der Abtast-Halte-Schaltungsanordnung 818 gehalten sind. Das kann erreicht werden, als ein Beispiel, unter Verwendung differentiell abfühlender Vorrichtungen, um den gehaltenen Spannungspegel mit einer Schwellenspannung der Zielspeicherzelle zu vergleichen. Sehr ähnlich traditioneller Speicherprogrammierung könnten Programmierimpulse an eine Zielspeicherzelle angelegt werden, um ihre Schwellenspannung zu erhöhen, bis sie den gewünschten Wert erreicht oder überschreitet. In einer Leseoperation werden die Vt-Pegel der Zielspeicherzellen zu der Abtast-Halte-Schaltungsanordnung 818 weitergegeben zum Übertragen zu einem externen Prozessor (nicht gezeigt in 7) entweder direkt als analoge Signale oder als digitalisierte Repräsentierungen der analogen Signale abhängig davon, ob ADC/DAC-Funktionalität extern für die oder innerhalb der Speichervorrichtungen bereitgestellt ist.
-
Schwellenspannungen von Zellen können auf eine Reihe von Arten bestimmt werden. Beispielsweise könnte eine Zugangsleitungsspannung, wie z. B. diejenigen, die typischerweise als Wortleitungsspannungen bezeichnet sind, an dem Punkt abgetastet werden, wenn die Zielspeicherzelle aktiviert wird. Alternativ könnte eine erhöhte Spannung an eine erste Source/Drain-Seite einer Zielspeicherzelle angelegt werden, und die Schwellenspannung könnte als eine Differenz zwischen ihrer Steuergate-Spannung und der Spannung an ihrer anderen Source/Drain-Seite genommen werden. Durch Koppeln der Spannung an einen Kondensator würde Ladung mit dem Kondensator gemeinsam verwendet werden, um die abgetastete Spannung zu speichern. Es wird darauf hingewiesen, dass die abgetastete Spannung nicht gleich der Schwellenspannung sein muss, sondern lediglich diese Spannung angeben muss. Beispielsweise in dem Fall des Anlegens einer erhöhten Spannung an eine erste Source/Drain-Seite der Speicherzelle und einer bekannten Spannung an ihr Steuergate könnte die Spannung, die an der zweiten Source/Drain-Seite der Speicherzelle entwickelt wird, als das Datensignal genommen werden, da die entwickelte Spannung die Schwellenspannung der Speicherzelle angibt.
-
Die Abtast-Halte-Schaltungsanordnung 818 kann Cachen enthalten, d. h. mehrere Speicherorte für jeden Datenwert, so dass die Speichervorrichtung 801 einen nächsten Datenwert lesen kann, während sie einen ersten Datenwert zu dem externen Prozessor weitergibt, oder einen nächsten Datenwert empfangen kann, während sie einen ersten Datenwert in das Speicherfeld 804 schreibt. Ein Statusregister 822 ist zwischen die I/O-Steuerschaltungsanordnung 812 und die Steuerlogik 816 gekoppelt, um die Statusinformationen zum Ausgeben zu dem externen Prozessor aufzufangen.
-
Die Speichervorrichtung 801 empfängt Steuersignale an der Steuerlogik 816 über eine Steuerverbindung 832. Die Steuersignale können eine Chipaktivierung CE#, eine Befehlsabfangaktivierung CLE, eine Adressauffangaktivierung ALE und eine Schreibaktivierung WE# enthalten. Die Speichervorrichtung 801 kann Befehle (in der Form von Befehlssignalen), Adressen (in der Form von Adresssignalen) und Daten (in der Form von Datensignalen) von einem externen Prozessor über einen gemultiplexten Eingabe/Ausgabe-Bus (I/O-Bus) 834 empfangen und Daten zu dem externen Prozessor über den I/O-Bus 834 ausgeben.
-
In einem spezifischen Beispiel werden Befehle über Eingabe/Ausgabe-Anschlussstifte (I/O-Anschlussstifte) [7:0] des I/O-Bus 834 an der I/O-Steuerschaltungsanordnung 812 empfangen und in das Befehlsregister 824 geschrieben. Die Adressen werden über Eingabe/Ausgabe-Anschlussstifte (I/O-Stifte) [7:0] des I/O-Bus 834 an der I/O-Steuerschaltungsanordnung 812 empfangen und in das Befehlsregister 814 geschrieben. Die Daten können über Eingabe/Ausgabe-Anschlussstifte (I/O-Stifte) [7:0] für ein Gerät, das acht parallele Signale empfangen kann, oder über Eingabe/Ausgabe-Anschlussstifte (I/O-Stifte) [15:0] für ein Gerät, das sechzehn parallele Signale empfangen kann, an der I/O-Steuerschaltungsanordnung 812 empfangen werden und zu einer Abtast-Halte-Schaltungsanordnung 818 übertragen werden. Daten können außerdem über Eingabe/Ausgabe-Anschlussstifte (I/O-Anschlussstifte) [7:0] für ein Gerät, das acht parallele Signale senden kann, oder Eingabe/Ausgabe-Anschlussstifte (I/O-Anschlussstifte) [15:0] für ein Gerät, das sechzehn parallele Signale senden kann, ausgegeben werden. Es wird durch Fachleute erkannt, dass zusätzliche Schaltungsanordnungen und Signale bereitgestellt sein können und dass die Speichervorrichtung von 7 vereinfacht worden ist, um die Konzentration auf die Ausführungsformen der Offenbarung zu unterstützen.
-
Verfahren zum Anwenden von Fehlerkorrektur während Vorab-Lesens von Daten tieferer Seiten für das Programmieren der höheren Seite eines Speichers können in verschiedenen Ausführungsformen auf einem Speicher wie z. B. dem Speicher 801 ausgeführt werden. Solche Verfahren sind hier mit Bezug auf die 1–6 gezeigt und beschrieben.
-
Obwohl 7 mit Bezug auf die Abtast-Halte-Schaltungsanordnung 818 beschrieben wurde, ist zu verstehen, dass die Steuerlogik 816 mit Datenauffangspeichern anstelle der Abtast-Halte-Schaltungsanordnung 818 gekoppelt sein könnte, ohne von dem Schutzbereich der Offenbarung abzuweichen. Datenauffangspeicher fangen Daten auf, entweder ankommend oder abgehend. Während einer Schreiboperation werden Zielspeicherzellen des Zellenfelds 804 programmiert, beispielsweise unter Verwendung von zwei Gruppen von Programmierimpulsen, wie vorstehend beschrieben, bis Spannungen, die ihre Vt-Pegel angeben, mit den Daten, die in den Datenauffangspeichern gehalten sind, übereinstimmen. Das kann erreicht werden, als ein Beispiel, unter Verwendung differentiell abfühlender Vorrichtungen, um die gehaltenen Daten mit einer Schwellenspannung der Zielspeicherzelle zu vergleichen.
-
Zusätzlich, obwohl die Speichervorrichtung von 7 in Übereinstimmung mit populären Konventionen zum Empfangen und zur Ausgabe der verschiedenen Signale beschrieben worden ist, wird darauf hingewiesen, dass die verschiedenen Ausführungsformen nicht durch die beschriebenen spezifischen Signale und I/O-Konfigurationen eingeschränkt sind. Beispielsweise könnten Befehls- und Adresssignale an Eingängen empfangen werden, die von denjenigen getrennt sind, die die Datensignale empfangen, oder Datensignale könnten seriell über eine einzige I/O-Leitung des I/O-Bus 834 gesendet werden. Weil die Datensignale Bitmuster anstelle von einzelnen Bits repräsentieren, könnte die serielle Kommunikation eines 8-Bit-Signals so effizient sein wie die parallele Kommunikation von acht Signalen, die individuelle Bits repräsentieren.
-
Verschiedene Techniken oder bestimmte Aspekte oder Abschnitte davon können die Form von Programmcode (d. h. Anweisungen) annehmen, die in materiellen Medien wie z. B. Floppy-Disketten, CD-ROMs, Festplatten, einem nichtflüchtigen computerlesbaren Speichermedium oder irgendeinem anderen maschinenlesbaren Speichermedium enthalten sind, wobei dann, wenn der Programmcode in eine Maschine wie z. B. einen Computer geladen und durch diese ausgeführt wird, die Maschine zu einer Einrichtung zum Praktizieren der verschiedenen Techniken wird. Eine Schaltungsanordnung kann Hardware, Firmware Programmcode, ausführbaren Code, Computeranweisungen und/oder Software enthalten. Ein nichtflüchtiges computerlesbares Speichermedium kann ein computerlesbares Speichermedium sein, das kein Signal enthält. In dem Fall der Programmcodeausführung auf programmierbaren Computern kann die Computervorrichtung einen Prozessor, ein Speichermedium, das durch den Prozessor gelesen werden kann (das flüchtigen und nichtflüchtigen Speicher und/oder Speicherelemente enthält), wenigstens eine Eingabevorrichtung und wenigstens eine Ausgabevorrichtung enthalten. Der flüchtige und nichtflüchtige Speicher und/oder die Speicherelemente können ein RAM, EPROM, Flash-Laufwerk, optisches Laufwerk, Magnetplattenlaufwerk, Halbleiterlaufwerk oder ein anderes Medium zum Speichern elektronischer Daten sein. Der Knoten und das drahtlose Gerät können außerdem ein Sender/Empfänger-Modul, ein Zählermodul, ein Verarbeitungsmodul und/oder ein Taktgebermodul oder Zeitgebermodul enthalten. Ein oder mehrere Programme, die die verschiedenen hier beschriebenen Techniken implementieren oder nutzen können, können eine Anwendungsprogrammierschnittstelle (API), wiederverwendbare Steuerelemente und Ähnliches enthalten. Solche Programme können in einer höheren prozeduralen oder einer objektorientierten Programmiersprache implementiert sein, um mit einem Computersystem zu kommunizieren. Das/die Programm/e können jedoch in Assembler- oder Maschinensprache implementiert sein, falls erwünscht. In jedem Fall kann die Sprache eine kompilierte oder übersetzte Sprache sein und mit Hardware-Implementierungen kombiniert sein.
-
In einem Beispiel stellt eine Erfindungsausführungsform eine NAND-Speichervorrichtung bereit, wobei diese Vorrichtung Folgendes aufweist: ein Feld von NAND-Speicherzellen; und eine Steuereinheit, die konfiguriert ist, Anfangsprogrammierimpulse für das Programmieren der tieferen Seite der Seite anzulegen, Daten der tieferen Seite vorab zu lesen, zu bestimmen, ob eine Fehlerkorrekturoperation auf die Daten der tieferen Seite angewandt werden soll, Daten zu speichern, die sekundäre Programmierimpulse angeben, die zum Programmieren der Daten der höheren Seite verwendet werden sollen; und die Daten der höheren Seite basierend auf den sekundären Programmierimpulsen und den Daten der tieferen Seite zu programmieren.
-
In einem Beispiel umfasst die Fehlerkorrekturoperation mehrere unterschiedliche Fehlerkorrekturoperationen, die basierend auf einem Wortleitungsort variieren, für das Programmieren der höheren Seite.
-
In einem Beispiel wird, wenn die tieferen Teilblöcke der höheren Seite programmiert werden, eine erste Fehlerkorrekturoperation angewandt, wenn die mittleren Teilblöcke der höheren Seite programmiert werden, eine zweite Fehlerkorrekturoperation angewandt, und wenn die höheren Teilblöcke der höheren Seite programmiert werden, eine dritte Fehlerkorrekturoperation angewandt.
-
In einem Beispiel umfasst das Bestimmen, ob die Fehlerkorrekturoperation auf die Daten der tieferen Seite angewandt werden soll, das Bestimmen, ob das Programmieren der Daten der höheren Seite das Programmieren eines tieferen Teilblocks oder das Programmieren eines höheren Teilblocks umfasst, wobei das Verfahren ferner vorangehende Fehlerkorrektur für den tieferen Teilblock und Anwenden der Fehlerkorrektur für den höheren Teilblock umfasst.
-
In einem Beispiel umfasst das Bestimmen, ob die Fehlerkorrekturoperation auf die Daten der tieferen Seite angewandt werden soll, das Bestimmen einer Anzahl von Programmierzyklen für die tiefere Seite und Anwenden der Fehlerkorrekturoperation, wenn die Anzahl von Programmierzyklen einen vorbestimmten Schwellenwert übersteigt.
-
In einem Beispiel wird, wenn die tieferen Teilblöcke der höheren Seite programmiert werden, eine erste Fehlerkorrekturoperation angewandt, wenn die mittleren Teilblöcke der höheren Seite programmiert werden, eine zweite Fehlerkorrekturoperation angewandt, und wenn die höheren Teilblöcke der höheren Seite programmiert werden, eine dritte Fehlerkorrekturoperation angewandt.
-
In einem Beispiel ist jede aus der ersten, zweiten und dritten Fehlerkorrekturoperation unterschiedlich.
-
In einem Beispiel sind die tieferen Teilblöcke, die mittleren Teilblöcke und die höheren Teilblöcke Gruppen von Teilblöcken, von denen jede eine gleiche Anzahl von Teilblöcken umfasst.
-
In einem Beispiel sind die tieferen Teilblöcke, die mittleren Teilblöcke und die höheren Teilblöcke Gruppen von Teilblöcken, wobei wenigstens zwei der Gruppen unterschiedliche Anzahlen von Teilblöcken umfassen.
-
In einem Beispiel weist jede aus der ersten, zweiten und dritten Fehlerkorrekturoperation unterschiedlichen Zeitaufwand auf.
-
In einem Beispiel umfasst die Fehlerkorrekturoperation mehrere unterschiedliche Fehlerkorrekturoperationen, die basierend auf einem Wortleitungsort variieren, für das Programmieren der höheren Seite.
-
In einem Beispiel umfasst die Fehlerkorrekturoperation mehrere unterschiedliche Fehlerkorrekturoperationen, die basierend auf einer Kombination des Wortleitungsorts für das Programmieren der höheren Seite, des Teilblocks für das Programmieren der höheren Seite oder des Zykluszählwerts für das Vorab-Lesen der Daten der tieferen Seite variieren.
-
In einem Beispiel enthält die Speichervorrichtung ferner ansteigendes Anwenden zeitaufwändiger Fehlerkorrektur auf die Daten der tieferen Seite, wenn die Teilblöcke der höheren Seite programmiert werden.
-
In einer beispielhaften Erfindungsausführungsform ist ein Datenspeichersystem vorgesehen, wobei das System Folgendes enthält: einen Prozessor; eine Stromquelle; einen NAND-Speicher, der mit dem Prozessor gekoppelt ist und ein Zellenfeld; und eine Steuereinheit, die konfiguriert ist, Anfangsprogrammierimpulse für das Programmieren der tieferen Seite der Seite anzulegen, Daten der tieferen Seite vorab zu lesen, eine Fehlerkorrektur auf die Daten der tieferen Seite anzuwenden, Daten zu speichern, die sekundäre Programmierimpulse angeben, die zum Programmieren der Daten der höheren Seite verwendet werden sollen; und die Daten der höheren Seite basierend auf den sekundären Programmierimpulsen und den Daten der tieferen Seite zu programmieren, wobei, wenn die Fehlerkorrektur auf die Daten der tieferen Seite angewandt wird, die Steuereinheit zunehmend unterschiedliche Fehlerkorrekturschemata auf die Daten der tieferen Seite während der Programmierung der Daten der höheren Seite anwendet.
-
In einem Beispiel umfasst die Fehlerkorrekturoperation mehrere unterschiedliche Fehlerkorrekturoperationen, die basierend auf einem Wortleitungsort variieren, für das Programmieren der höheren Seite.
-
In einem Beispiel wird, wenn die tieferen Teilblöcke der höheren Seite programmiert werden, eine erste Fehlerkorrekturoperation angewandt, wenn die mittleren Teilblöcke der höheren Seite programmiert werden, eine zweite Fehlerkorrekturoperation angewandt, und wenn die höheren Teilblöcke der höheren Seite programmiert werden, eine dritte Fehlerkorrekturoperation angewandt.
-
In einem Beispiel umfasst die Fehlerkorrektur Interferenzkompensation durch Modifizieren einer Lesespannung eines Teilblocks der Daten der tieferen Seite basierend auf einer Lesespannung einer benachbarten Wortleitung.
-
In einem Beispiel wird die Lesespannung des Teilblocks der Daten der tieferen Seite basierend auf der Lesespannung einer einzelnen benachbarten Wortleitung modifiziert.
-
In einem Beispiel wird die Lesespannung des Teilblocks der Daten der tieferen Seite basierend auf der Lesespannung mehrerer benachbarter Wortleitungen modifiziert.
-
In einem Beispiel umfasst die Fehlerkorrekturoperation das Ausgeben der vorab gelesenen Daten der tieferen Seite zu einer Steuereinheit, Korrigieren der Daten mit der Steuereinheit und Verwenden der korrigierten Daten zum Programmieren der Daten der höheren Seite.
-
In einem Beispiel umfasst die Fehlerkorrekturoperation eine Lesespannungssuche unter Verwendung einer Steuereinheit, die eine Lesespannung für eine kleinste Bitfehlerrate bestimmt und die Lesespannung der Daten der tieferen Seite basierend auf der Lesespannung für die kleinste Bitfehlerrate anpasst.
-
In einem Beispiel ist die Lesespannung der Daten der tieferen Seite variabel.
-
In einem Beispiel umfasst die Fehlerkorrekturoperation mehrere unterschiedliche Fehlerkorrekturoperationen, die basierend auf einem Wortleitungsort variieren, für das Programmieren der höheren Seite.
-
In einer beispielhaften Erfindungsausführungsform ist ein computerimplementiertes Verfahren zum Programmieren einer Seite eines Speichers in einer NAND-Speichervorrichtung vorgesehen, das Folgendes enthält: Anlegen von Anfangsprogrammierimpulsen für das Programmieren der tieferen Seite der Seite; Vorab-Lesen von Daten der tieferen Seite; Speichern von Daten, die sekundäre Programmierimpulse angeben, die zum Programmieren von Daten der höheren Seite verwendet werden sollen; Programmieren der Daten der höheren Seite basierend auf den sekundären Programmierimpulsen und den Daten der tieferen Seite; und zunehmendes Anwenden von ansteigend zeitaufwändiger Fehlerkorrektur auf die Daten der tieferen Seite, wenn die Teilblöcke der höheren Seite programmiert werden.
-
In einem Beispiel umfasst die Fehlerkorrekturoperation mehrere unterschiedliche Fehlerkorrekturoperationen, die basierend auf einem Wortleitungsort variieren, für das Programmieren der höheren Seite.
-
In einem Beispiel wird, wenn die tieferen Teilblöcke der höheren Seite programmiert werden, eine erste Fehlerkorrekturoperation angewandt, wenn die mittleren Teilblöcke der höheren Seite programmiert werden, eine zweite Fehlerkorrekturoperation angewandt, und wenn die höheren Teilblöcke der höheren Seite programmiert werden, eine dritte Fehlerkorrekturoperation angewandt.
-
In einem Beispiel stellt die Erfindungsausführungsform ein computerimplementiertes Verfahren zum Programmieren einer Seite eines Speichers in einer NAND-Speichervorrichtung bereit, das Folgendes umfasst: Anlegen von Anfangsprogrammierimpulsen für das Programmieren der tieferen Seite der Seite; Vorab-Lesen von Daten der tieferen Seite; Bestimmen, ob eine Fehlerkorrekturoperation auf die Daten der tieferen Seite angewandt werden soll; Speichern von Daten, die sekundäre Programmierimpulse angeben, die zum Programmieren der Daten der höheren Seite verwendet werden; und Programmieren der Daten der höheren Seite basierend auf den sekundären Programmierimpulsen und den Daten der tieferen Seite.
-
In einem Beispiel kann das Verfahren ferner das Speichern von Daten, die tertiäre Programmierimpulse angeben, die zum Programmieren von Daten der mittleren Seite verwendet werden sollen; Programmieren der Daten der mittleren Seite basierend auf den tertiären Programmierimpulsen und den Daten der tieferen Seite; und Vorab-Lesen der Daten der mittleren Seite enthalten; wobei das Programmieren der Daten der höheren Seite basierend auf den sekundären Programmierimpulsen und den Daten der tieferen Seite das Programmieren der Daten der höheren Seite basierend auf den sekundären Impulsen und den Daten der mittleren Seite umfasst, wobei die Daten der mittleren Seite basierend auf den Daten der tieferen Seite programmiert werden.
-
In einer Beispielausführungsform umfasst das Bestimmen, ob die Fehlerkorrekturoperation auf die Daten der tieferen Seite angewandt werden soll, das Bestimmen, ob das Programmieren der Daten der höheren Seite das Programmieren eines tieferen Teilblocks oder das Programmieren eines höheren Teilblocks umfasst, wobei das Verfahren ferner vorangehende Fehlerkorrektur für den tiefen Teilblock und Anwenden der Fehlerkorrektur für den höheren Teilblock umfasst.
-
In einer Beispielausführungsform umfasst die Fehlerkorrektur Interferenzkompensation durch Modifizieren einer Lesespannung eines Teilblocks der Daten der tieferen Seite basierend auf einer Lesespannung einer benachbarten Wortleitung.
-
In einer Beispielausführungsform wird die Lesespannung des Teilblocks der Daten der tieferen Seite basierend auf der Lesespannung einer einzelnen benachbarten Wortleitung modifiziert.
-
In einer Beispielausführungsform wird die Lesespannung des Teilblocks der Daten der tieferen Seite basierend auf der Lesespannung mehrerer benachbarter Wortleitungen modifiziert.
-
In einer Beispielausführungsform umfasst die Fehlerkorrekturoperation das Ausgeben der vorab gelesenen Daten der tieferen Seite zu einer Steuereinheit, Korrigieren der Daten mit der Steuereinheit und Verwenden der korrigierten Daten zum Programmieren der Daten der höheren Seite.
-
In einer Beispielausführungsform umfasst die Fehlerkorrekturoperation eine Lesespannungssuche unter Verwendung einer Steuereinheit, die eine Lesespannung für eine kleinste Bitfehlerrate bestimmt und die Lesespannung der Daten der tieferen Seite basierend auf der Lesespannung für die kleinste Bitfehlerrate anpasst.
-
In einer Beispielausführungsform ist die Lesespannung der Daten der tieferen Seite variabel.
-
In einer Beispielausführungsform umfasst das Bestimmen, ob die Fehlerkorrekturoperation auf die Daten der tieferen Seite angewandt werden soll, das Bestimmen einer Anzahl von Programmierzyklen für die tiefere Seite und Anwenden der Fehlerkorrekturoperation, wenn die Anzahl von Programmierzyklen einen vorbestimmten Schwellenwert übersteigt.
-
In einer Beispielausführungsform umfasst die Fehlerkorrekturoperation mehrere unterschiedliche Fehlerkorrekturoperationen, die basierend auf einem Wortleitungsort variieren, für das Programmieren der höheren Seite.
-
In einer Beispielausführungsform stellt die Erfindungsausführungsform ein computerimplementiertes Verfahren zum Programmieren einer Seite eines Speichers in einer NAND-Speichervorrichtung bereit, das Folgendes umfasst: Anlegen von Anfangsprogrammierimpulsen für das Programmieren der tieferen Seite der Seite; Vorab-Lesen von Daten der tieferen Seite; zunehmendes Anwenden einer Fehlerkorrektur auf die Daten der tieferen Seite; Speichern von Daten, die sekundäre Programmierimpulse angeben, die zum Programmieren der Daten der höheren Seite verwendet werden; und Programmieren der Daten der höheren Seite basierend auf den sekundären Programmierimpulsen und den Daten der tieferen Seite.
-
In einem Beispiel wird, wenn die tieferen Teilblöcke der höheren Seite programmiert werden, eine erste Fehlerkorrekturoperation angewandt, wenn die mittleren Teilblöcke der höheren Seite programmiert werden, eine zweite Fehlerkorrekturoperation angewandt, und wenn die höheren Teilblöcke der höheren Seite programmiert werden, eine dritte Fehlerkorrekturoperation angewandt.
-
In einem Beispiel ist jede aus der ersten, zweiten und dritten Fehlerkorrekturoperation unterschiedlich.
-
In einem Beispiel sind die tieferen Teilblöcke, die mittleren Teilblöcke und die höheren Teilblöcke Gruppen von Teilblöcken, von denen jede eine gleiche Anzahl von Teilblöcken umfasst.
-
In einem Beispiel sind die tieferen Teilblöcke, die mittleren Teilblöcke und die höheren Teilblöcke Gruppen von Teilblöcken, wobei wenigstens zwei der Gruppen unterschiedliche Anzahlen von Teilblöcken umfassen.
-
In einem Beispiel weist jede aus der ersten, zweiten und dritten Fehlerkorrekturoperation unterschiedlichen Zeitaufwand auf.
-
In einem Beispiel umfasst die Fehlerkorrekturoperation mehrere unterschiedliche Fehlerkorrekturoperationen, die basierend auf einem Wortleitungsort variieren, für das Programmieren der höheren Seite.
-
In einem Beispiel umfasst die Fehlerkorrekturoperation mehrere unterschiedliche Fehlerkorrekturoperationen, die basierend auf einer Kombination des Wortleitungsorts für das Programmieren der höheren Seite, des Teilblocks für das Programmieren der höheren Seite oder des Zykluszählwerts für das Vorab-Lesen der Daten der tieferen Seite variieren.
-
In einem Beispiel enthält das Verfahren ferner zunehmendes Anwenden von ansteigend zeitaufwändigen Fehlerkorrektur auf die Daten der tieferen Seite, wenn die Teilblöcke der höheren Seite programmiert werden.
-
In einer beispielhaften Erfindungsausführungsform ist ein computerimplementiertes Verfahren zum Programmieren einer Seite eines Speichers in einer NAND-Speichervorrichtung bereitgestellt, das Folgendes umfasst: Anlegen von Anfangsprogrammierimpulsen für das Programmieren der tieferen Seite der Seite; Vorab-Lesen von Daten der tieferen Seite; Speichern von Daten, die sekundäre Programmierimpulse angeben, die zum Programmieren von Daten der höheren Seite verwendet werden sollen; Programmieren der Daten der höheren Seite basierend auf den sekundären Programmierimpulsen und den Daten der tieferen Seite; und zunehmendes Anwenden von ansteigend zeitaufwändiger Fehlerkorrektur auf die Daten der tieferen Seite, wenn die Teilblöcke der höheren Seite programmiert werden.
-
In einem Beispiel umfasst die Fehlerkorrekturoperation mehrere unterschiedliche Fehlerkorrekturoperationen, die basierend auf einem Wortleitungsort variieren, für das Programmieren der höheren Seite.
-
In einem Beispiel wird, wenn die tieferen Teilblöcke der höheren Seite programmiert werden, eine erste Fehlerkorrekturoperation angewandt, wenn die mittleren Teilblöcke der höheren Seite programmiert werden, eine zweite Fehlerkorrekturoperation angewandt, und wenn die höheren Teilblöcke der höheren Seite programmiert werden, eine dritte Fehlerkorrekturoperation angewandt.
-
Obwohl die vorstehenden Beispiele für die Prinzipien verschiedener Erfindungsausführungsformen in einer oder mehreren speziellen Anwendungen anschaulich sind, ist es für normale Fachleute offensichtlich, dass zahlreiche Modifikationen in Form, Anwendung und Einzelheiten der Implementierung ohne die Ausübung von Erfindungsgabe und ohne von den Prinzipien und Konzepten der Erfindung abzuweichen vorgenommen werden können. Dementsprechend ist nicht vorgesehen, dass die Erfindung eingeschränkt sein soll, außer durch die nachstehend dargelegten Ansprüche.