DE102015108143A1 - Nand-Vorab-Lese-Fehlerkorrektur - Google Patents

Nand-Vorab-Lese-Fehlerkorrektur Download PDF

Info

Publication number
DE102015108143A1
DE102015108143A1 DE102015108143.1A DE102015108143A DE102015108143A1 DE 102015108143 A1 DE102015108143 A1 DE 102015108143A1 DE 102015108143 A DE102015108143 A DE 102015108143A DE 102015108143 A1 DE102015108143 A1 DE 102015108143A1
Authority
DE
Germany
Prior art keywords
programming
data
error correction
sub
blocks
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102015108143.1A
Other languages
English (en)
Inventor
Akira Goda
Pranav Kalavade
Charan Srinivasan
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Ndtm Us Santa Clara Us LLC
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102015108143A1 publication Critical patent/DE102015108143A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)

Abstract

Eine Technologie zum Programmieren einer Seite eines Speichers in einer NAND-Speichervorrichtung ist offenbart und beschrieben. In einem Beispiel kann ein Verfahren das Anwenden von Anfangsprogrammierimpulsen für das Programmieren der tieferen Seite der Seite und Vorab-Lesen der Daten der tieferen Seite enthalten. Das Verfahren kann ferner das Bestimmen, ob eine Fehlerkorrekturoperation auf die Daten der tieferen Seite angewandt werden soll, enthalten. Daten, die sekundäre Programmierimpulse angeben, die zum Programmieren von Daten der höheren Seite verwendet werden sollen, werden gespeichert, und die Daten der höheren Seite werden basierend auf den sekundären Programmierimpulsen und den Daten der tieferen Seite programmiert.

Description

  • 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;
  • 46 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 16 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.

Claims (25)

  1. NAND-Speichervorrichtung, die Folgendes umfasst: 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, die sekundäre Programmierimpulse angeben, die zum Programmieren der Daten der höheren Seite verwendet werden sollen, zu speichern; und die Daten der höheren Seite basierend auf den sekundären Programmierimpulsen und den Daten der tieferen Seite zu programmieren.
  2. Speichervorrichtung nach Anspruch 1, wobei die Fehlerkorrekturoperation mehrere unterschiedliche Fehlerkorrekturoperationen, die basierend auf einem Wortleitungsort variieren, für das Programmieren der höheren Seite umfasst.
  3. Speichervorrichtung nach Anspruch 1, wobei dann, wenn die tieferen Teilblöcke der höheren Seite programmiert werden, eine erste Fehlerkorrekturoperation angewandt wird, wenn die mittleren Teilblöcke der höheren Seite programmiert werden, eine zweite Fehlerkorrekturoperation angewandt wird, und wenn die höheren Teilblöcke der höheren Seite programmiert werden, eine dritte Fehlerkorrekturoperation angewandt wird.
  4. Speichervorrichtung nach Anspruch 1, wobei das Bestimmen, ob die Fehlerkorrekturoperation auf die Daten der tieferen Seite angewandt werden soll, das Bestimmen umfasst, 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.
  5. Speichervorrichtung nach Anspruch 1, wobei 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 umfasst, wenn die Anzahl von Programmierzyklen einen vorbestimmten Schwellenwert übersteigt.
  6. Speichervorrichtung nach Anspruch 1, wobei dann, wenn die tieferen Teilblöcke der höheren Seite programmiert werden, eine erste Fehlerkorrekturoperation angewandt wird, wenn die mittleren Teilblöcke der höheren Seite programmiert werden, eine zweite Fehlerkorrekturoperation angewandt wird, und wenn die höheren Teilblöcke der höheren Seite programmiert werden, eine dritte Fehlerkorrekturoperation angewandt wird.
  7. Speichervorrichtung nach Anspruch 6, wobei jede aus den ersten, zweiten und dritten Fehlerkorrekturoperationen verschieden ist.
  8. Speichervorrichtung nach Anspruch 6, wobei die tieferen Teilblöcke, die mittleren Teilblöcke und die höheren Teilblöcke Gruppen von Teilblöcken sind, von denen jede eine gleiche Anzahl von Teilblöcken umfasst.
  9. Speichervorrichtung nach Anspruch 6, wobei die tieferen Teilblöcke, die mittleren Teilblöcke und die höheren Teilblöcke Gruppen von Teilblöcken sind, wobei wenigstens zwei der Gruppen unterschiedliche Anzahlen von Teilblöcken umfassen.
  10. Speichervorrichtung nach Anspruch 6, wobei jede aus der ersten, zweiten und dritten Fehlerkorrekturoperation unterschiedliche Zeitaufwände aufweist.
  11. Speichervorrichtung nach Anspruch 1, wobei die Fehlerkorrekturoperation mehrere unterschiedliche Fehlerkorrekturoperationen, die basierend auf einem Wortleitungsort variieren, für das Programmieren der höheren Seite umfasst.
  12. Speichervorrichtung nach Anspruch 1, wobei die Fehlerkorrekturoperation mehrere unterschiedliche Fehlerkorrekturoperationen umfasst, 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.
  13. Speichervorrichtung nach Anspruch 1, wobei die Speichervorrichtung ferner zunehmendes Anwenden von ansteigend zeitaufwändigen Fehlerkorrektur auf die Daten der tieferen Seite, wenn die Teilblöcke der höheren Seite programmiert werden, umfasst.
  14. Datenspeichersystem, das Folgendes umfasst: einen Prozessor; eine Stromquelle; einen NAND-Speicher, der mit dem Prozessor gekoppelt ist und ein Zellenfeld enthält; 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, die sekundäre Programmierimpulse angeben, die zum Programmieren der Daten der höheren Seite verwendet werden sollen, zu speichern; und die Daten der höheren Seite basierend auf den sekundären Programmierimpulsen und den Daten der tieferen Seite zu programmieren; wobei dann, wenn die Fehlerkorrektur auf die Daten der tieferen Seite angewandt wird, die Steuereinheit zunehmend unterschiedliche Fehlerkorrekturschemata auf die Daten der tieferen Seite während des Programmierens der Daten der höheren Seite anwendet.
  15. System nach Anspruch 14, wobei die Fehlerkorrekturoperation mehrere unterschiedliche Fehlerkorrekturoperationen, die basierend auf einem Wortleitungsort variieren, für das Programmieren der höheren Seite umfasst.
  16. System nach Anspruch 14, wobei dann, wenn die tieferen Teilblöcke der höheren Seite programmiert werden, eine erste Fehlerkorrekturoperation angewandt wird, wenn die mittleren Teilblöcke der höheren Seite programmiert werden, eine zweite, Fehlerkorrekturoperation angewandt wird, und wenn die höheren Teilblöcke der höheren Seite programmiert werden, eine dritte Fehlerkorrekturoperation angewandt wird.
  17. System nach Anspruch 14, wobei die Fehlerkorrektur Interferenzkompensation durch Modifizieren einer Lesespannung eines Teilblocks der Daten der tieferen Seite basierend auf einer Lesespannung einer benachbarten Wortleitung umfasst.
  18. System nach Anspruch 17, wobei die Lesespannung des Teilblocks der Daten der tieferen Seite basierend auf der Lesespannung einer einzelnen benachbarten Wortleitung modifiziert wird.
  19. System nach Anspruch 17, wobei die Lesespannung des Teilblocks der Daten der tieferen Seite basierend auf der Lesespannung mehrerer benachbarter Wortleitungen modifiziert wird.
  20. System nach Anspruch 14, wobei 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 umfasst.
  21. System nach Anspruch 14, wobei die Fehlerkorrekturoperation eine Lesespannungssuche unter Verwendung einer Steuereinheit umfasst, 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.
  22. System nach Anspruch 21, wobei die Lesespannung der Daten der tieferen Seite variabel ist.
  23. System nach Anspruch 14, wobei die Fehlerkorrekturoperation mehrere unterschiedliche Fehlerkorrekturoperationen, die basierend auf einem Wortleitungsort variieren, für das Programmieren der höheren Seite umfasst.
  24. Computerimplementiertes Verfahren zum Programmieren einer Seite eines Speichers in einer NAND-Speichervorrichtung, 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 sollen; und Programmieren der Daten der höheren Seite basierend auf den sekundären Programmierimpulsen und den Daten der tieferen Seite.
  25. Verfahren nach Anspruch 24, das ferner Folgendes umfasst: Speichern von Daten, die tertiäre Programmierimpulse angeben, die zum Programmieren der 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; 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.
DE102015108143.1A 2014-06-25 2015-05-22 Nand-Vorab-Lese-Fehlerkorrektur Pending DE102015108143A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/314,663 2014-06-25
US14/314,663 US9672102B2 (en) 2014-06-25 2014-06-25 NAND memory devices systems, and methods using pre-read error recovery protocols of upper and lower pages

Publications (1)

Publication Number Publication Date
DE102015108143A1 true DE102015108143A1 (de) 2015-12-31

Family

ID=54839882

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015108143.1A Pending DE102015108143A1 (de) 2014-06-25 2015-05-22 Nand-Vorab-Lese-Fehlerkorrektur

Country Status (4)

Country Link
US (1) US9672102B2 (de)
JP (1) JP6133929B2 (de)
KR (1) KR101743974B1 (de)
DE (1) DE102015108143A1 (de)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9640270B2 (en) * 2014-08-12 2017-05-02 Sandisk Technologies Llc System and method of using multiple read operations
US9905302B2 (en) 2014-11-20 2018-02-27 Western Digital Technologies, Inc. Read level grouping algorithms for increased flash performance
US9720754B2 (en) 2014-11-20 2017-08-01 Western Digital Technologies, Inc. Read level grouping for increased flash performance
US9576671B2 (en) 2014-11-20 2017-02-21 Western Digital Technologies, Inc. Calibrating optimal read levels
US9558064B2 (en) * 2015-01-28 2017-01-31 Micron Technology, Inc. Estimating an error rate associated with memory
US9823880B1 (en) * 2016-09-30 2017-11-21 Intel Corporation Method and apparatus for initiating pre-read operation before completion of data load operation
US9793912B1 (en) * 2016-12-27 2017-10-17 Western Digital Technologies, Inc. Analog-to-digital conversion circuitry with real-time adjusted gain and resolution
US10236067B2 (en) * 2017-08-02 2019-03-19 International Business Machines Corporation State-dependent read voltage threshold adaptation for nonvolatile memory
WO2020167283A1 (en) 2019-02-11 2020-08-20 Hewlett-Packard Development Company, L.P. Recovery from corruption
TWI688953B (zh) * 2019-04-10 2020-03-21 群聯電子股份有限公司 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元
CN111831210B (zh) * 2019-04-18 2023-12-15 群联电子股份有限公司 存储器管理方法、存储器控制电路单元及存储器存储装置
US10964390B1 (en) 2019-12-10 2021-03-30 Western Digital Technologies, Inc. Skip coding for fractional bit-per-cell NAND memories
US10950315B1 (en) * 2019-12-16 2021-03-16 Micron Technology, Inc. Preread and read threshold voltage optimization
US11348643B2 (en) * 2020-02-25 2022-05-31 Apple Inc. Identifying failure type in NVM programmed in SLC mode using a single programming pulse with no verification
US11423984B2 (en) 2020-04-06 2022-08-23 Crossbar, Inc. Distinct chip identifier sequence utilizing unclonable characteristics of resistive memory on a chip
US12087397B1 (en) 2020-04-06 2024-09-10 Crossbar, Inc. Dynamic host allocation of physical unclonable feature operation for resistive switching memory
US11823739B2 (en) 2020-04-06 2023-11-21 Crossbar, Inc. Physically unclonable function (PUF) generation involving high side programming of bits
US11734094B2 (en) 2020-08-19 2023-08-22 Micron Technology, Inc. Memory component quality statistics
US11437119B2 (en) 2020-08-19 2022-09-06 Micron Technology, Inc. Error read flow component
CN113626381B (zh) * 2021-06-30 2023-12-22 济南浪潮数据技术有限公司 一种基于分布式文件系统交织读预读的优化方法、装置
CN113805815B (zh) * 2021-09-18 2024-03-01 中国科学院微电子研究所 一种用于闪存的数据恢复方法、装置及系统
US20230359388A1 (en) * 2022-05-03 2023-11-09 Micron Technology, Inc. Memory read calibration based on memory device-originated metadata characterizing voltage distributions

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101073116B1 (ko) * 2006-07-20 2011-10-13 샌디스크 코포레이션 커플링을 사용하는 이웃 감지에 기반한 커플링 보상
US7885119B2 (en) * 2006-07-20 2011-02-08 Sandisk Corporation Compensating for coupling during programming
WO2008011440A2 (en) * 2006-07-20 2008-01-24 Sandisk Corporation Floating gate memory with compensating for coupling during programming
US7443729B2 (en) * 2006-07-20 2008-10-28 Sandisk Corporation System that compensates for coupling based on sensing a neighbor using coupling
US7508711B2 (en) * 2007-04-30 2009-03-24 Intel Corporation Arrangements for operating a memory circuit
US7656709B2 (en) * 2007-05-03 2010-02-02 Micron Technology, Inc. NAND step up voltage switching method
KR101411976B1 (ko) * 2007-07-09 2014-06-27 삼성전자주식회사 플래시 메모리 시스템 및 그것의 에러 정정 방법
KR101425958B1 (ko) * 2007-09-06 2014-08-04 삼성전자주식회사 멀티-비트 데이터를 저장하는 메모리 시스템 및 그것의읽기 방법
US8144516B2 (en) * 2009-12-03 2012-03-27 Micron Technology, Inc. Dynamic pass voltage for sense operation in a memory device
KR101636248B1 (ko) 2009-12-10 2016-07-06 삼성전자주식회사 플래시 메모리 장치, 이를 포함하는 플래시 메모리 시스템 및 이의 프로그램 방법
US8503257B2 (en) * 2010-07-30 2013-08-06 Apple Inc. Read disturb scorecard
US9135998B2 (en) * 2010-11-09 2015-09-15 Micron Technology, Inc. Sense operation flags in a memory device
JP2012123880A (ja) 2010-12-10 2012-06-28 Toshiba Corp 半導体記憶装置
KR101772951B1 (ko) 2011-03-10 2017-09-13 삼성전자주식회사 불 휘발성 메모리 장치 및 그것의 읽기 방법
JP5404685B2 (ja) * 2011-04-06 2014-02-05 株式会社東芝 不揮発性半導体記憶装置
US8732557B2 (en) * 2011-05-31 2014-05-20 Micron Technology, Inc. Data protection across multiple memory blocks
KR101904581B1 (ko) 2011-11-18 2018-10-04 샌디스크 테크놀로지스 엘엘씨 고장난 워드 라인 스크린 및 데이터 복원을 갖는 비휘발성 저장장치
JP6088751B2 (ja) * 2012-06-07 2017-03-01 株式会社東芝 半導体メモリ
US9135989B2 (en) * 2012-09-06 2015-09-15 Sandisk Technologies Inc. Write data preservation for non-volatile storage
US8887011B2 (en) * 2012-09-13 2014-11-11 Sandisk Technologies Inc. Erased page confirmation in multilevel memory
US8984369B2 (en) * 2012-11-21 2015-03-17 Micron Technology, Inc. Shaping codes for memory
US9257203B2 (en) 2012-12-06 2016-02-09 Micron Technology, Inc. Setting a default read signal based on error correction
US9543019B2 (en) * 2012-12-11 2017-01-10 Intel Corporation Error corrected pre-read for upper page write in a multi-level cell memory
US8982617B1 (en) * 2013-11-14 2015-03-17 Sandisk Technologies Inc. Block closure techniques for a data storage device

Also Published As

Publication number Publication date
KR101743974B1 (ko) 2017-06-20
US9672102B2 (en) 2017-06-06
US20150378815A1 (en) 2015-12-31
KR20160000842A (ko) 2016-01-05
JP6133929B2 (ja) 2017-05-24
JP2016009517A (ja) 2016-01-18

Similar Documents

Publication Publication Date Title
DE102015108143A1 (de) Nand-Vorab-Lese-Fehlerkorrektur
DE112014004778B4 (de) Vorrichtung und Verfahren zum Verwalten von Chipgruppen
DE102008005338B4 (de) Integrierter Schaltkreis mit einer Speicherzellenanordnung und Verfahren zum Lesen eines Speicherzellenzustands unter Verwendung einer Mehrzahl von Teil-Leseoperationen
DE60319437T2 (de) Nichtflüchtiger halbleiterspeicher mit zykluszählwerte speichernden grossen löschblöcken
DE102017104257A1 (de) Auf Zellenstrom basierende Bitleitungsspannung
DE112017002776T5 (de) Nichtflüchtiger Speicher mit angepasster Steuerung vom Typ der Störinjektion während der Programmüberprüfung für eine verbesserte Programmleistung
DE112015003761T5 (de) Teilblocklöschung zur datenaktualisierung
DE102011054181A1 (de) Nichtflüchtige Speichervorrichtung und Ausleseverfahren davon
DE102016003366A1 (de) Lesepegelgruppierung für erhöhte flash-leistung
DE112010000955T5 (de) NAND-Flasharchitektur mit mehrstufiger Zeilendecodierung
DE102013109235A1 (de) Flash-Speichersystem mit Detektor für anormale Wortleitung und Verfahren zum Erfassen einer anormalen Wortleitung
DE102007031027A1 (de) Leseverfahren einer Speichervorrichtung
DE102018209207A1 (de) Selektive body-reset-operation für dreidimensionalen (3d ) nand-speicher
DE102008003055A1 (de) Flash-Speichervorrichtung und Verfahren zum Betreiben derselben
DE102009051109B4 (de) Nichtflüchtige Halbleiterspeichervorrichtung
DE102007041845A1 (de) Verfahren zum Betreiben eines integrierten Schaltkreises mit mindestens einer Speicherzelle
DE102019124668A1 (de) Transistorschwellenspannungshaltung in 3d-speicher
TWI594243B (zh) 用以降低三維反及閘快閃記憶體之程式化干擾的系統與方法
DE112008001151T5 (de) Mehrbitprogrammiervorrichtung und Verfahren zum Mehrbitprogrammieren
DE102015011991A1 (de) Codierungsschema für vertikale 3D-Flash-Speicher
DE102020105946A1 (de) Speicherzellen-fehlform-abschwächung
DE112015004531T5 (de) Latch-Initialisierung für eine Datenspeichervorrichtung
DE102019135863A1 (de) Speichercontroller, Speichervorrichtung und Speichersystem mit verbesserten Schwellenspannungs-Verteilungseigenschaften und ähnliche Betriebsverfahren
DE112019000153T5 (de) Auswahl der Untergruppe zur Prüfung
DE102010037064A1 (de) Nichtflüchtige Speichervorrichtung und -system sowie Verfahren des Programmierens einer nichtflüchtigen Speichervorrichtung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R081 Change of applicant/patentee

Owner name: INTEL NDTM US LLC, SANTA CLARA, US

Free format text: FORMER OWNER: INTEL CORPORATION, SANTA CLARA, CALIF., US