DE102011075966B4 - Verbesserter Mehrpegelspeicher - Google Patents

Verbesserter Mehrpegelspeicher Download PDF

Info

Publication number
DE102011075966B4
DE102011075966B4 DE102011075966.2A DE102011075966A DE102011075966B4 DE 102011075966 B4 DE102011075966 B4 DE 102011075966B4 DE 102011075966 A DE102011075966 A DE 102011075966A DE 102011075966 B4 DE102011075966 B4 DE 102011075966B4
Authority
DE
Germany
Prior art keywords
states
memory cells
programming
level memory
encoding
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.)
Active
Application number
DE102011075966.2A
Other languages
English (en)
Other versions
DE102011075966A1 (de
Inventor
Marco Maccarrone
Guido Lomazzi
Ilaria Motta
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.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
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 Micron Technology Inc filed Critical Micron Technology Inc
Publication of DE102011075966A1 publication Critical patent/DE102011075966A1/de
Application granted granted Critical
Publication of DE102011075966B4 publication Critical patent/DE102011075966B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • 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/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • 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
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5644Multilevel memory comprising counting devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)
  • Error Detection And Correction (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

Verfahren, aufweisend: Speichern von Zuständen in einer oder in mehreren Mehrpegelspeicherzellen, wobei das Speichern weiterhin ein Kodieren der Zustände gemäß einem Faltungscode aufweist, um Symbole bereitzustellen, die die Zustände repräsentieren; und Bestimmen der kodierten Zustände unter Verwendung von weicher Entscheidung und Faltungsdekodierung, wobei das Bestimmen weiterhin aufweist: Auslesen von weichen Entscheidungen, welche mit gemessenen Schwellspannungen assoziiert sind, aus den Mehrpegelspeicherzellen; Beibehalten von Sätzen periodischer Funktionen, wobei jeder Satz mit einer unterschiedlichen Mehrzahl von Programmierverteilungen von gespeicherten Zuständen assoziiert wird, wobei die gespeicherten Zustände, welche mit einer speziellen periodischen Funktion assoziiert werden, in Bezug auf einander periodisch sind; Assoziieren einer weichen Entscheidung mit einem speziellen Satz der periodischen Funktionen; und Auswählen einer Programmierverteilung aus dem speziellen Satz von periodischen Funktionen basierend zumindest teilweise auf einer Berechnung eines wahrscheinlichsten Kodierungspfades, dem zur Kodierung gefolgt worden war.

Description

  • HINTERGRUND
  • Der hierin offenbarte Gegenstand bezieht sich auf Halbleiterspeicher und insbesondere auf nichtflüchtige Mehrpegelspeicher.
  • Information:
  • Speichervorrichtungen werden in vielen Typen von elektronischen Vorrichtungen verwendet, wie Computern, Mobiltelefonen, PDAs, Informationsloggern und Navigationsausrüstungen, um nur einige wenige Beispiele zu nennen. Unter solchen elektronischen Vorrichtungen können verschiedene Typen von nichtflüchtigen Speichervorrichtungen verwendet werden, wie NAND oder NOR Flash Speicher, SRAM, DRAM und Phasenübergangsspeicher, um nur einige wenige Beispiele zu nennen. Im Allgemeinen können Schreib- oder Programmierprozesse verwendet werden, um Information in solchen Speichervorrichtungen zu speichern, während ein Leseprozess verwendet werden kann, um gespeicherte Information abzurufen.
  • Die Speicherdichte eines programmierbaren Speichers kann erhöht werden, indem die physikalischen Größen von Speicherzellen herunterskaliert werden, um deren Raumerfordernis zu vermindern, und die Bildung einer größeren Anzahl von Speicherzellen auf einem gleichen Gebiet von Silizium auf einem Die, welches den Speicher integriert, zu erlauben, zum Beispiel. Ein anderer Weg, die Speicherdichte zu erhöhen, kann die Verwendung eines sogenannten „Mehrpegel” Programmierschemas beinhalten, worin Speicherzellen in der Lage sein können, mehr als ein Bit von Informationen zu speichern. Durch Verwendung solch eines Mehrpegelprogrammierschemas kann eine Speicherzelle insbesondere in einen beliebigen aus einer Anzahl unterschiedlicher Programmierzustände programmiert werden, von denen jeder mit einem logischen Wert korrespondiert. Ein Programmierzustand einer Speicherzelle kann definiert sein durch einen Schwellspannungswert eines Transistors, der in der Speicherzelle enthalten ist. Für eine Speicherzelle, die zum Beispiel eingerichtet ist, zwei Bits zu speichern, können die Schwellspannungswerte der Speicherzelle einen von vier unterschiedlichen Werten annehmen. In einem bestimmten Beispiel können die logischen Werte eines solchen gespeicherten Bitpaares einer Binärsequenz „11”, „10”, „01”, „00” entsprechen, welche zunehmenden Schwellspannungswerten entsprechen. Hier kann der logische Wert „11” mit dem Zustand assoziiert sein, der den geringsten Schwellspannungswert (gelöschter Zustand) hat, und die anderen Zustände können aufeinanderfolgend assoziiert sein mit Zuständen, welche zunehmende Schwellspannungswerte aufweisen. Aufgrund von im Wesentlichen nicht vermeidbaren Toleranzen jedoch, welche einem solchen Speicher intrinsisch sein können, können die Schwellspannungen der programmierten Speicherzellen jedoch unter vier jeweiligen Programmierverteilungen – auch „Populationen” genannt – verteilt sein, anstatt dass sie exakt auf einen von vier gewünschten Werten programmiert sind. Dementsprechend mag nicht jeder Programmierzustand mit einer einzelnen Schwellspannung assoziiert sein, sondern kann stattdessen assoziiert sein mit einem jeweiligen Bereich von Schwellspannungen, welche wiederum definiert sind zum Beispiel durch eine jeweilige Programmierverteilung.
  • Die US 2007/0266296 A1 offenbart eine Kodierung von Daten unter Verwendung von Faltungskodierung vor dem Speichern in einem nichtflüchtigen Speicherarray, die es ermöglicht, dass Fehler, die auftreten, wenn die Daten gelesen werden, selbst dann korrigiert werden, wenn es eine große Anzahl von Fehlern gibt.
  • Die Aufgabe der Erfindung besteht darin, eine Kodierung von Daten gemäß dem Stand der Technik auf solch eine Weise zu modifizieren, dass die Speicherdichte der Speichervorrichtung, die eine oder mehrere Mehrpegelspeicherzellen aufweist, erhöht werden kann.
  • Die Aufgabe der Erfindung wird durch ein Verfahren gemäß Anspruch 1, eine Speichervorrichtung gemäß Anspruch 6 und ein System gemäß Anspruch 12 gelöst.
  • KURZE BESCHREIBUNG DER FIGUREN
  • Nicht beschränkende und nicht erschöpfende Ausführungsformen werden beschrieben werden mit Bezug auf die folgenden Zeichnungen, worin gleiche Referenzzeichen sich auf gleiche Teile über die verschiedenen Figuren hinweg beziehen, sofern nicht anderweitig angegeben.
  • 1 ist ein schematisches Blockdiagramm einer Speichervorrichtung gemäß einer Ausführungsform.
  • 2A ist ein Blockdiagramm einer Kodiereinheit gemäß einer Ausführungsform.
  • 2B ist ein Blockdiagramm einer Linearkombiniereinheit gemäß einer Ausführungsform.
  • 2C ist ein Trellis Diagramm für einen Linearkombinierer gemäß einer Ausführungsform.
  • 3 ist ein Diagramm, welches Programmierverteilungen und Partitionen solcher Verteilungen zeigt gemäß einer Ausführungsform.
  • 4 ist ein Trellis Diagramm gemäß einer anderen Ausführungsform.
  • 5A ist ein schematisches Diagramm einer Sense- bzw. Messschaltung gemäß einer Ausführungsform.
  • 5B ist ein Timingdiagramm einer Messschaltung gemäß einer Ausführungsform.
  • 6 ist ein schematisches Blockdiagramm einer Dekodiereinheit gemäß einer Ausführungsform.
  • 7A ist ein Diagramm, welches Programmierverteilungen und metrische Funktionen solcher Verteilungen gemäß einer Ausführungsform zeigt.
  • 7B ist eine Nachschlagtabelle, welche metrische Funktionen implementiert, gemäß einer Ausführungsform.
  • 7C ist ein Diagramm, welches Programmierverteilungen und metrische Werte gemäß einer Ausführungsform zeigt.
  • 8 ist ein Trellis Diagramm gemäß einer anderen Ausführungsform.
  • 9A ist ein Blockdiagramm einer Kodiereinheit gemäß einer anderen Ausführungsform.
  • 9B ist ein Blockdiagramm einer Linearkombiniereinheit gemäß einer anderen Ausführungsform.
  • 9C ist ein schematisches Diagramm, welches das Programmieren partitioniert in Untermengen zeigt gemäß einer Ausführungsform.
  • 10 ist ein schematisches Diagramm eines Rechnersystems und einer Speichervorrichtung gemäß einer Ausführungsform.
  • DETAILLIERTE BESCHREIBUNG
  • Der Bezug über diese Beschreibung hinweg auf „eine Ausführungsform” bedeutet, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine Eigenschaft, die beschrieben ist in Verbindung mit der Ausführungsform, in zumindest einer Ausführungsform des beanspruchten Gegensandes enthalten ist. Daher bezieht sich das Erscheinen des Ausdrucks „in einer Ausführungsform” oder „eine Ausführungsform” an verschiedenen Stellen über diese Beschreibung hinweg nicht notwendigerweise immer auf dieselbe Ausführungsform. Darüber hinaus können bestimmte Merkmale, Strukturen oder Eigenschaften in einer oder in mehreren Ausführungsformen kombiniert werden.
  • In einer Ausführungsform kann die Speicherdichte einer Speichervorrichtung erhöht werden, indem Mehrpegelspeicherzellen inkorporiert werden, die in der Lage sind, mehr als zwei Programmierzustände zu speichern, um ein Informationsbit zu repräsentieren. Bevor eine Anzahl unterschiedlicher Programmierzustände gewählt wird, auf welche eine einzelne Mehrpegelspeicherzelle programmiert werden kann, kann ein Entwerfer einer Speichervorrichtung verschiedene Faktoren in Betracht ziehen, einschließlich des Wertes einer Versorgungsspannung der Speichervorrichtung und Toleranzparametern, welche für die Speichervorrichtung intrinsisch sein können. So kann, zum Beispiel der Wert einer Versorgungsspannung einen oberen Pegel des Spannungsbereichs definieren, der durch eine Menge von Programmierverteilungen aufgespannt wird, und eine Breite jeder Programmierverteilung kann in Beziehung stehen zu Toleranzparametern, welche intrinsisch für die Speichervorrichtung sind. In einer Ausführungsform kann ein Ansatz, die Speicherdichte weiter zu erhöhen, das Speichern von Information durch Kodieren der Information gemäß einem Faltungskode beinhalten, um Symbole bereitzustellen und Speichern solcher Symbole in einer oder in mehreren Mehrpegelspeicherzellen. Das Abrufen solcher gespeicherter Information kann das Anwenden von sogenannter „weicher Entscheidung” und Faltungsdekodierung auf solche gespeicherte Symbole umfassen. In einer anderen Ausführungsform kann ein Ansatz, die Speicherdichte zu erhöhen, das Verarbeiten von Information unter Verwendung eines Fehlerkorrekturkodes (ECC) beinhalten, bevor die Information in Speicherzellen einer Speichervorrichtung gespeichert wird. Auf diese Weise, durch Lesen von Inhalt von Speicherzellen, unter Verwendung eines Weichentscheidungsansatzes, kann die Wahrscheinlichkeit von falschen Ablesungen reduziert werden, selbst wenn die Anzahl von Programmierverteilungen relativ hoch genug ist, um zu teilweisen Überlappungen unter benachbarten Programmierverteilungen zu führen, wie unten beschrieben.
  • In einer Ausführungsform kann eine Speichervorrichtung eine Vielzahl von Speicherzellen umfassen, die einen Schwellspannungswert aufweisen, der auf eine Programmierverteilung gesetzt ist unter einer geordneten Reihe von Programmierverteilungen. Solch eine Speichervorrichtung kann eine erste Eingabeinformation empfangen, die in einer Menge von Zielspeicherzellen zu speichern ist. Die erste Eingabeinformation kann eine erste Anzahl von Bits umfassen, um die erste Eingabeinformation in eine entsprechende zweite Eingabeinformation zu kodieren. Die zweite Eingabeinformation kann eine zweite Anzahl von Bits höher als die erste Anzahl von Bits beinhalten. Eine Speichervorrichtung kann programmiert werden, um Schwellspannungen einer Menge von Zielspeicherzellen auf eine gewählte Menge von Programmierverteilungen der Sequenz gemäß der zweiten Eingangsinformation zu setzen. Programmierverteilungen der Sequenz können in Untermengen angeordnet werden, worin eine Untermenge eine Mehrzahl von Programmierverteilungen enthalten kann, die keine aufeinanderfolgenden Programmierverteilungen in der Reihenfolge zu sein brauchen. Die zweite Eingabeinformation kann einen Untermengeninformationsteil aufweisen, um die Untermenge zu identifizieren, zu der die Menge von Programmierverteilungen gehört, wie unten im Detail beschrieben.
  • 1 ist ein schematisches Blockdiagramm eines Speichers 100 gemäß einer Ausführungsform. Insbesondere kann ein nichtflüchtiger Halbleiterspeicher 100 zum Beispiel einen elektrisch programmierbaren, nichtflüchtigen Flash Speicher aufweisen. Der Speicher 100 kann in einem Chip aus Halbleitermaterial (in der Figur nicht dargestellt) integriert sein und kann eine Matrix 105 aus Speicherzellen 110 aufweisen, um Information zu speichern, die zum Beispiel in einer Mehrzahl von Reihen und Spalten angeordnet ist. In einer Implementierung können die Speicherzellen 110 einen N-Kanal MOS Transistor aufweisen, der ein Ladungsspeicherelement aufweist, wie ein leitendes schwebendes Gate, das durch Elektronen zu laden ist, obwohl der beanspruchte Gegenstand nicht in dieser Beziehung beschränkt ist.
  • Der Speicher 100 kann einen Mehrpegelspeicher aufweisen. In einem gelöschten Zustand kann eine Speicherzelle 110 einen unteren Schwellspannungswert aufweisen. Die Speicherzelle 110 kann programmiert werden in jeden von einer Anzahl von Zuständen, indem bestimmte Mengen elektrischer Ladung in ein schwebendes Gate der Speicherzelle 110 platziert werden. Solche Zustände können charakterisiert werden durch einen erhöhten Schwellspannungswert, der resultiert aus einer erhöhten Menge an elektrischer Ladung in dem schwebenden Gate, verglichen mit derjenigen eines vorhergehenden Zustandes. In einer bestimmten Ausführungsform kann der Speicher 100 eine NAND Architektur aufweisen, worin die Matrix 105 Gruppen beinhalten kann, wie Gruppen von acht, sechzehn oder mehr Speicherzellen 110, die miteinander in Reihe geschaltet sind, um jeweilige Speicherzellketten zu bilden. Unterschiedliche Speicherzellketten, welche einer gleichen Matrixspalte angehören, können parallel zueinander mit einer jeweiligen Bitleitung BL 112 verbunden sein, obwohl der beanspruchte Gegenstand nicht darauf beschränkt ist.
  • Der Speicher 100 kann einen Adresskode ADR empfangen, um eine gewünschte Speicherzelle 110 oder eine Gruppe von Speicherzellen 110 auszuwählen. Der Adresskode ADR kann einer Lese-Programmiereinheit 115 bereitgestellt werden, welche Auswahlschaltungen und Lese- und Programmierschaltungen aufweisen kann, wie zum Beispiel Seitenpufferschaltungen (nicht gezeigt). Solche Auswahlschaltungen können adressierte Speicherzellen 110 auswählen, während Lese- und Programmierschaltungen Lese- und Programmieroperationen ausführen können, welche zum Beispiel auf die Speicherzellen 110 ausgeführt werden können.
  • Im Speicher 100 kann Information kodiert werden, bevor sie in Speicherzellen 110 gespeichert wird. Zu diesem Zweck kann der Speicher 100 gemäß einer Ausführungsform eine Kodier/Dekodier-Einheit 120 aufweisen, um Kodieroperationen auf Eingangssignalen DIN, die in Speicherzellen 110 zu speichern sind, und Dekodieroperationen auf ausgegebenen, kodierten Signalen DCOUT, die aus den Speicherzellen 110 gelesen wurden, auszuführen. Genauer kann die Kodier/Dekodier-Einheit 120 eine Kodiereinheit 130 aufweisen, um Eingangssignale DIN vom I/O Puffer 140 zu empfangen, welcher wiederum mit einem I/O-Anschluss 150 des Speichers 100 assoziiert sein kann. In einer Implementierung kann die Kodier/Dekodier-Einheit 120 Kodieroperationen auf ein Eingangssignal DIN ausführen und entsprechende kodierte Eingangssignale DCIN an die Lese- und Programmier-Einheit 115 bereitstellen. Basierend zumindest teilweise auf dem Adresskode ADR kann dann das kodierte Eingangssignal DCIN in entsprechenden Speicherzellen 110 der Matrix 105 gespeichert werden. Die Kodier/Dekodier-Einheit 120 kann ferner eine Dekodiereinheit 160 beinhalten, um von einer Lese- und Programmiereinheit 115 das ausgegebene kodierte Signal DCOUT zu erhalten, das aus den adressierten Speicherzellen 110 gelesen wurde, um Dekodieroperationen darauf auszuführen und/oder ein entsprechendes (dekodiertes) Ausgangssignal DOUT an den I/O Puffer 140 bereitzustellen.
  • In einer Ausführungsform kann ein System eine Speichervorrichtung wie den Speicher 100 aufweisen. In einer bestimmten Implementierung kann eine Speichervorrichtung ein Speicherfeld aufweisen, um Signale zu speichern, welche Information über eine oder mehrere Mehrpegelspeicherzellen repräsentiert, und eine Steuereinheit, um eine weiche Entscheidung und Faltungskodierung auf das Speicherfeld anzuwenden, um einen Wert der Information zu bestimmen. Solch ein System kann weiterhin eine Speichervorrichtungssteuereinheit aufweisen, um die Speichervorrichtung zu betreiben, und einen Prozessor, um eine oder mehrere Anwendungen zu bedienen und Schreibbefehle und/oder Lesebefehle an die Speichervorrichtungssteuereinheit zu initiieren, um Zugriff auf das Speicherfeld bereitzustellen. Natürlich sind solche Details einer Speichervorrichtung rein exemplarisch und der beanspruchte Gegenstand ist nicht darauf beschränkt.
  • 2A ist ein Blockdiagramm der Kodiereinheit 130 gemäß einer Ausführungsform. In einem bestimmten Beispiel können die Speicherzellen 110 programmiert werden, um jeweils 3 Bits an Information zu speichern. Natürlich können andere Zahlen von Bits in anderen Implementierungen gespeichert werden. Hierin können Beispiele bestimmte Implementierungen beschreiben, welche bestimmte Anzahlen, Werte und so weiter beinhalten. Jedoch sind solche Einzelheiten allein für illustrative Zwecke gedacht und der beanspruchte Gegenstand ist nicht darauf beschränkt. Das in einer adressierten Speicherzelle 110 zu speichernde Eingangssignal DIN kann repräsentiert werden durch eine Kette von drei Bits a1(k), a2(k), a3(k), worin „k” ein Index ist, der eine ganze Zahl umfasst. Bei jedem k-ten Zyklus des Betriebs des Speichers 100, welcher zum Beispiel durch ein Taktsignal (5B) definiert sein kann, kann eine neue Kette von Bits a1(k), a2(k), a3(k) bereitgestellt werden an die Kodiereinheit 130, um kodiert zu werden. Die Anzahl an Speicherzellen 110, die während eines bestimmten Speicherzugriffs zu programmieren ist, zum Beispiel während eines bestimmten k-ten Operationszyklus, kann größer als eins sein. Aus Gründen der Einfachheit jedoch beinhaltet die derzeit beschriebene Implementierung eine einzelne Speicherzelle 110, auf die in einem Betriebszyklus zugegriffen werden kann.
  • Die Kodiereinheit 130 kann das Eingangssignal DIN kodieren, welches eine Kette von drei Bits aufweist, um ein kodiertes Eingangssignal DCIN zu erhalten. Gemäß einer Ausführungsform kann die Kodiereinheit 130 einen Faltungskodierer aufweisen, der einen linearen Kodierprozess nutzt, um dem Eingangssignal DIN Redundanz hinzuzufügen. In einer Implementierung kann solch ein linearer Kodierprozess einen Viterbi Prozess umfassen, obwohl der beanspruchte Gegenstand nicht darauf beschränkt ist. Die Redundanz, die durch die Kodiereinheit 130 eingeführt wird, kann ein Bit involvieren, so dass jede drei Bit Kette a1(k), a2(k), a3(k), welche das Eingangssignal DIN bildet, in ein entsprechendes vier Bit Symbol b1(k), b2(k), b3(k), b4(k) kodiert werden kann, welches das kodierte Eingangssignal DCIN bildet. Ein solches vier Bit Symbol b1(k), b2(k), b3(k), b4(k) kann dann bereitgestellt werden an die Lese-Programmier-Einheit 115, um in der Speicherzelle 110 gespeichert zu werden, die zum Beispiel durch den Adresskode ADR adressiert wird. Wie in größerem Detail unten beschrieben werden wird, kann jede Speicherzelle 110 zum Beispiel in 24 = 16 unterschiedliche Zustände programmiert werden. Solche Beispiele sind wiederum allein zu veranschaulichenden Zwecken gedacht und der beanspruchte Gegenstand ist nicht darauf beschränkt. Die Kodiereinheit 130 kann eine Linearkombiniereinheit 205 aufweisen, welche zum Beispiel eine finite Zustandsmaschine aufweist, um Bits b3(k) und b4(k) aus dem Bit a3(k) zu erzeugen. Anderseits kann das Bit b1(k) mit dem Bit a1(k) übereinstimmen und das Bit b2(k) kann mit dem Bit a2(k) übereinstimmen. Bei jedem k-ten Betriebszyklus können die Bits b3(k) und b4(k) berechnet werden, basierend auf, zumindest teilweise, einem Signal (zum Beispiel Bit a3(k)), das der Linearkombiniereinheit 205 während eines bestimmten Betriebszyklus bereitgestellt wird, und basierend, zumindest teilweise, auf internen Zuständen der Linearkombiniereinheit 205 (die eine finite Zustandsmaschine ist), welche wiederum von Werten abhängen können, welche durch Information angenommen wurde, die der Linearkombiniereinheit 205 zum Beispiel während vorhergehender Betriebszyklen bereitgestellt wurde (hierin angezeigt durch die Notation (k – 1)-ten. Natürlich sind solche Details einer Kodiereinheit lediglich Beispiele und der beanspruchte Gegenstand ist nicht darauf beschränkt.
  • 2B ist ein Blockdiagramm des Linearkombinierers 205 gemäß einer Ausführungsform. Der Linearkombinierers 205 kann drei Verzögerungselemente 210, 215, 220 und/oder einen Binäraddierer 225 aufweisen. Jedes solche Verzögerungselement kann ein Bit empfangen und den Wert des Bits speichern während eines Betriebszyklus des Speichers 100. Auf diese Weise können zu jedem k-ten Betriebszyklus des Speichers 100 die Verzögerungselemente ein Ausgangssignal bereitstellen, das einen Wert repräsentiert, der in dem vorhergehenden (k – 1)-ten Betriebszyklus empfangen wurde. Zum Beispiel kann das Verzögerungselement 210 das Bit a3(k) empfangen und speichern. Das Verzögerungselement 210 kann einen Ausgangsanschluss aufweisen, der verbunden ist mit einem Eingangsanschluss des Verzögerungselements 215 (Schaltungsknoten B). Das Verzögerungselement 215 kann einen Ausgangsanschluss aufweisen, der verbunden ist mit einem Eingangsanschluss des Verzögerungselements 220 (Schaltungsknoten C), der wiederum einen Ausgangsanschluss aufweisen kann, der verbunden ist mit einem ersten Eingangsanschluss des Binäraddierers 225 (Schaltungsknoten D). Der Binäraddierer 225 kann einen zweiten Eingangsanschluss aufweisen, der mit dem Knoten B verbunden ist, und einen dritten Eingangsanschluss, um das Bit a3(k) zu empfangen. Der Linearkombinierer 205 kann einen ersten Ausgangsanschluss aufweisen, der verbunden ist mit dem Knoten C, um das Bit b3(k) bereitzustellen, und einen zweiten Ausgangsanschluss, der verbunden ist mit einem Ausgangsanschluss des Binäraddierers 225, um das Bit b4(k) bereitzustellen. Natürlich sind solche Details eines Linearkombinierers beispielhaft und der beanspruchte Gegenstand ist nicht darauf beschränkt.
  • In einer Implementierung kann eine Kodieroperation, die durch die Kodiereinheit 130 ausgeführt wird, eine bestimmte ECC involvieren, welche definiert sein kann durch den Linearkombinierer 205. Die 2C zeigt ein Trellis Diagramm 230, das eine Kodestruktur repräsentieren kann, die aus dem Linearkombinierer 205 resultiert, gemäß einer Ausführungsform. Insbesondere kann das Trellis Diagramm 230 einen sich entwickelnden internen Zustand des Linearkombinierers 205 darstellen, der, zumindest teilweise, von dem Wert des Bit a3(k) abhängt, das an dessen Eingang empfangen wird.
  • Die Menge von internen Zuständen des Linearkombinierers 205 kann definiert sein durch Werte, welche durch die Schaltungsknoten B, C und D angenommen werden, und könnten daher zum Beispiel 23 = 8 unterschiedliche interne Zustände umfassen. Im Trellis Diagramm 230, können die internen Zustände mit den Referenzen Si(k), Si(k + 1) identifiziert werden, worin i = 0, 1, ..., 7. Insbesondere kann die Referenz Si(k) dem internen Zustand entsprechen, welcher durch den Linearkombinierer 205 angenommen wird zu einem generischen k-ten Betriebszyklus des Speichers 100, während die Referenz Si(k + 1) dem internen Zustand entsprechen kann, der in dem nachfolgenden (k + 1)-ten Betriebszyklus angenommen wird. Solch ein Trellis Diagramm ist natürlich allein ein Beispiel und der beanspruchte Gegenstand ist in dieser Beziehung nicht beschränkt.
  • Das Trellis Diagramm 230 zeigt zulässige Übergänge, welche zwischen „derzeitigen” internen Zuständen Si(k) und „zukünftigen” internen Zuständen Si(k + 1) des Linearkombinierers 205 auftreten, basierend, zumindest teilweise, auf den Werten des Bit a3(k). Genauer kann ein derzeitiger interner Zustand Si(k) zu zwei unterschiedlichen zukünftigen internen Zuständen Sj(k + 1) oder Si(k + 1) übergehen. Wenn zum Beispiel das Bit a3(k) gleich „0” ist, zeigt das Trellis Diagramm 230, dass der interne Zustand Si(k) übergehen kann in einen entsprechenden internen Zustand Sj(k + 1) über den Übergangspfeil tij (mit einer durchgezogenen Linie gezeigt). Andererseits, wenn das Bit a3(k) gleich „1” ist, kann der interne Zustand Si(k) übergehen in einen entsprechenden internen Zustand Sl(k + 1) über einen weiteren Übergangspfeil t'il (mit einer gestrichelten Linie gezeichnet). Die zulässigen Übergänge (zum Beispiel angezeigt durch Übergangspfeile tij, t'il) können eine Kodestruktur definieren. Die zulässigen Übergänge können wiederum definiert sein durch die Struktur des Linearkombinierers 205. Wenn die Struktur des Linearkombinierers 205 zum Beispiel durch das Modifizieren einer Verbindung zwischen einem Verzögerungselement und/oder einem Binäraddierer geändert wird, können die zulässigen Übergänge in dem Trellis Diagramm 230 und/oder die entsprechende Kodestruktur entsprechend geändert werden.
  • Um das vier Bit Symbol b1(k), b2(k), b3(k), b4(k) zu speichern, welches durch die Kodiereinheit 130 erzeugt wird, unter Verwendung eines Kodes, der durch das Trellis Diagramm 230 definiert ist, kann eine adressierte Speicherzelle 110 in einen entsprechenden aus sechzehn unterschiedlichen Zuständen programmiert werden, entsprechend sechzehn jeweiligen Programmierverteilungen D0, D1, ...D15. Die sechzehn Programmierverteilungen D0, D1, ...D15, welche zumindest teilweise auf dem Wert basieren können, der durch die Bits b1(k), b2(k), b3(k), b4(k) angenommen wird, sind in 3 dargestellt. Solche Programmierverteilungen D0, D1, ...D15 können einander aufgrund ihrer jeweiligen Breiten überlappen und können, zumindest teilweise, von Toleranzen abhängen, die dem Speicher 100 intrinsisch sind. In dieser Beziehung mögen die Programmierverteilungen D0, D1, ...D15 in 3 nicht maßstabsgerecht dargestellt sein.
  • Gemäß einer Ausführungsform kann eine Assoziation zwischen Bits b1(k), b2(k), b3(k), b4(k) und verschiedenen Programmierverteilungen D0, D1, ...D15 eine Untermengenpartitionierung wie folgt involvieren. Zum Beispiel können sechzehn Programmierverteilungen D0, D1, ...D15 in vier unterschiedliche Untermengen B0, B1, B2, B3 partitioniert werden, von denen jede vier Programmierverteilungen enthält. Untermengen können identifiziert werden durch entsprechende Werte der Bits b3(k), b4(k). Die Untermenge B0 kann zum Beispiel b3(k) = 0, b4(k) = 0 entsprechen und kann die Programmierverteilungen D0, D4, D8, D12 enthalten; die Untermenge B1 kann b3(k) = 0, b4(k) = 1 entsprechen und kann die Programmierverteilungen D1, D5, D9, D13 enthalten; die Untermenge B2 kann b3(k) = 1, b4(k) = 0 entsprechen und kann die Programmierverteilungen D2, D6, D10, D14 enthalten; die Untermenge B3 kann b3(k) = 1, b4(k) = 1 entsprechen und kann die Programmierverteilungen D3, D7, D11, D15 enthalten.
  • Innerhalb einer Untermenge B0, B1, B2, B3 können vier Programmierverteilungen unterschieden werden basierend, zumindest teilweise, auf den Bits b1(k), b2(k). So können zum Beispiel erste Programmierverteilungen der Untermengen D0, D1, D2, D3 b1(k) = 0, b2(k) = 0 entsprechen, die zweiten Verteilungen D4, D5, D6, D7 können b1(k) = 1, b2(k) = 0, die dritten Verteilungen D8, D9, D10, D11 können b1(k) = 0, b2(k) = 1, und die vierten Verteilungen D12, D13, D14, D15 können b1(k) = 1, b2(k) = 1 entsprechen. Darüber hinaus kann innerhalb einer Untermenge B0, B1, B2, B3 eine Entfernung zwischen benachbarten Programmierverteilungen auf eine solche Weise erhöht werden, dass eine Überlappung zwischen Programmierverteilungen derselben Untermenge vermieden wird.
  • Nachdem Assoziationen hergestellt wurden, welche die Bits b3(k) und b4(k) mit vier Untermengen B0, B1, B2, B3 verknüpfen und Übergänge der internen Zustände Si(k) des Linearkombinierers 205 unter Verwendung des Trellis Diagramms 230 von 2C untersucht wurden, kann es möglich sein, für einen bestimmten Übergang zu bestimmen, welche Untermenge ausgewählt wird. Wenn zum Beispiel der Linearkombinierer 205 in dem Zustand S0(k) ist und wenn der Wert des Bits a3(k), der im k-ten Betriebszyklus empfangen wird, gleich „0” ist, dann kann der interne Zustand übergehen zu S0(k + 1) und die Bits b3(k), b4(k) können die Werte „0” bzw. „0” annehmen. Ein interner Zustand kann zum Beispiel übergehen durch den Übergangspfeil t00. Solch ein Wertepaar kann der Untermenge B0 entsprechen. Wenn stattdessen der Wert des Bits a3(k) gleich „1” ist, kann eine ausgewählte Untermenge B2 umfassen, da der interne Zustand durch den Übergangspfeil t'01 übergehen kann zu S4(k + 1), und die Bits b3(k), b4(k) können die Werte „1” bzw. „0” annehmen. Natürlich sind solche Details einer Speichervorrichtung lediglich Beispiele und der beanspruchte Gegenstand ist nicht darauf beschränkt.
  • Die 4 ist ein Trellis Diagramm gemäß einer anderen Ausführungsform. In einem bestimmten Beispiel kann eine Sequenz von zwölf Bits an Information in vier Speicherzellen 110 gespeichert werden. Eine solche Sequenz kann vier Teile eines Eingangssignals DIN umfassen, das während vier aufeinanderfolgenden Betriebszyklen empfangen wurde. Insbesondere kann, im Zyklus „k”, das Eingangssignal DIN der Kette a1(k) = 0, a2(k) = 1, a3(k) = 0 entsprechen; im Zyklus „k + 1” kann das Eingangssignal DIN der Kette a1(k + 1) = 0, a2(k + 1) = 1, a3(k + 1) = 1 entsprechen; im Zyklus k + 2 kann das Eingangssignal DIN der Kette a1(k + 2) = 1, a2(k + 2) = 0, a3(k + 2) = 1 entsprechen, und im Zyklus „k + 3” kann das Eingangssignal DIN der Kette a1(k + 3) = 0, a2(k + 3) = 0, a3(k + 3) = 0 entsprechen. Der anfängliche interne Zustand des Linearkombinierers 205 kann S0(k) sein. Natürlich ist solch ein Trellis Diagramm lediglich ein Beispiel und der beanspruchte Gegenstand ist nicht darauf beschränkt.
  • Beim k-ten Betriebszyklus kann die Kette a1(k) = 0, a2(k) = 1, a3(k) = 0 der Kodiereinheit 130 bereitgestellt werden. Wie durch das entsprechende Trellis Diagramm 405 gezeigt werden kann, kann beim folgenden (k + 1)-ten Betriebszyklus der Linearkombinierer 205 denselben internen Zustand S0(k + 1) beibehalten, folgend dem Übergangspfeil t00. Das entsprechende vier Bit Symbol, das durch die Kodiereinheit 130 erzeugt wird, das in der ersten Speicherzelle 110 zu speichern ist, kann b1(k) = 0, b2(k) = 1, b3(k) = 0, b4(k) = 0 sein, was der Verteilung D8 entsprechen kann, die zum Beispiel der Untermenge B0 angehört.
  • Im (k + 1)-ten Betriebszyklus kann die Kette a1(k + 1) = 0, a2(k + 1) = 1, a3(k + 1) = 1 der Kodiereinheit 130 bereitgestellt werden. Wie durch das entsprechende Trellis Diagramm 410 gezeigt werden kann, kann der Linearkombinierer 205 umschalten zu dem internen Zustand S4(k + 2) über den Übergangspfeil t'01. Daher kann das vier Bit Symbol, das durch die Kodiereinheit 130 erzeugt wird und das in der zweiten Speicherzelle 110 zu speichern ist, b1(k + 1) = 0, b2(k + 1) = 1, b3(k + 1) = 1, b4(k + 1) = 0 sein, entsprechend der Verteilung D10, welche der Untermenge B2 angehört.
  • Im (k + 1)-ten Betriebszyklus, wenn die Kette a1(k + 2) = 1, a2(k + 2) = 0, a3(k + 2) = 1 der Kodiereinheit 130 bereitgestellt wird, kann die Kombiniereinheit 205 vom internen Zustand S4(k + 2) umschalten in den internen Zustand S6(k + 3) über den Übergangspfeil t'46 (siehe Trellis Diagramm 415). Dementsprechend kann das entsprechende vier Bit Symbol, das von der Kodiereinheit 130 erzeugt wird, welches in der dritten Speicherzelle 110 zu speichern ist, b1(k + 2) = 1, b2(k + 2) = 0, b3(k + 2) = 0, b4(k + 2) = 0 sein, was der Verteilung D4 Entsprechen kann, die der Untermenge B0 angehört.
  • Im (k + 3)-ten Betriebszyklus schließlich, wenn die Kette a1(k + 3) = 0, a2(k + 3) = 0, a3(k + 3) = 0 der Kodiereinheit 130 bereitgestellt wird, kann die Kombiniereinheit 205 aus dem internen Zustand S6(k + 3) in den internen Zustand S3(k + 4) über den Übergangspfeil t63 umschalten (siehe Trellis Diagramm 420). Dementsprechend kann das entsprechende vier Bit Symbol, das durch die Kodiereinheit 130 erzeugt wird und welches in der vierten Speicherzelle 110 zu speichern ist, b1(k + 3) = 0, b2(k + 3) = 0, b3(k + 3) = 1, b4(k + 3) = 1 sein, was der Verteilung D3 entsprechen kann, die der Untermenge B3 angehört.
  • Demzufolge kann das Kodieren, das durch die Kodiereinheit 130 ausgeführt wird, einen Faltungskode verwenden, so dass jedes Symbol durch die Kodiereinheit 130 über einen Kodierpfad erzeugt werden kann, welcher die Vergangenheitsgeschichte des Eingangssignals DIN berücksichtigen kann, welches in den vorherigen Betriebszyklen empfangen wurde. Mit Bezug auf das vorhergehende Beispiel, kann die Sequenz des Eingangssignals DIN zum Beispiel kodiert worden sein gemäß dem Kodier-Pfad S0(k) – S0(k + 1) – S4(k + 2) – S6(k + 3) – S3(k + 4). Das vier Bit Symbol b1(k + 3), b2(k + 3), b3(k + 3), b4(k + 3) kann berechnet worden sein ausgehend von dem internen Zustand S6(k + 3), welcher wiederum erreicht worden sein kann nach drei Betriebszyklen ausgehend vom internen Zustand S0(k). Wenn zum Beispiel die Sequenz des während der drei vorhergehenden Betriebszyklen empfangen Eingangssignals DIN anders wäre, kann der Kodierpfad unterschiedlich sein und demzufolge kann sich auch der interne Zustand der Kombiniereinheit 205 von S6(k + 3) unterscheiden.
  • In einer Ausführungsform können Bits an Information, die in einer Gruppe adressierter Speicherzellen 110 gespeichert sind, abgerufen werden, indem ein Weichentscheidungssystems auf das ausgegebene kodierte Signal DCOUT (1) angewandt wird, welches durch die Lese-Programmier-Einheit 115 gemessen wird. Genauer kann das ausgegebene kodierte Signal DCOUT, welches von der Lese-Programmier-Einheit 115 bereitgestellt wird, eine digitale Sequenz von Zahlen umfassen, welche zum Beispiel Schwellspannungen adressierter Speicherzellen 110 anzeigen. Um gespeicherte Bits von Information abzurufen unter Verwendung eines Weichentscheidungssystems mit einem ausreichenden Maß an Zuverlässigkeit, zum Beispiel mit einer geringen Fehlerwahrscheinlichkeit, können Werte der Schwellspannung, die gemessen werden durch die Lese-Programmier-Einheit 115, eine relativ hohe Auflösung aufweisen, um in einer relativ hohen Genauigkeit zu resultieren.
  • Zum Beispiel kann eine Schwellenspannung einer adressierten Speicherzelle 110 gemessen werden gemäß einem Spannungsrampen-Leseschema, worin eine zunehmende lineare Spannungsrampe auf einen Gateanschluss der adressierten Speicherzelle angewandt werden kann, und eine Schaltung kann die Zeit messen, welche die Speicherzelle braucht, um anzuschalten. In einer Implementierung kann das Messen eines Wertes der Schwellspannungen von Speicherzellen 110 zum Beispiel eine Messschaltung 500 verwenden, die in 5 gezeigt ist. Die Messschaltung 500 kann einen Teil der Lese-Programmier-Einheit 115 umfassen. Die Messschaltung 500 kann einen Spannungsvergleicher 505 aufweisen, der einen ersten Eingangsanschluss zum Empfangen einer Bitleitungsspannung Vbl aufweist, die die Spannung auf der Bitleitung BL anzeigt, welche einer adressierten Speicherzelle 110 entspricht. Der Spannungsvergleicher 505 kann auch einen zweiten Eingangsanschluss aufweisen, der mit einem Referenzgeneratorblock 510 gekoppelt ist, um eine Referenzspannung Vref zu empfangen, und einen Ausgangsanschluss, um ein Triggersignal TRIG an eine Zählerschaltung 515 bereitzustellen, wenn der Wert der Bitleitungsspannung Vbl unter die Referenzspannung Vref fällt. Gemäß einer Ausführungsform kann die Zählerschaltung 515 zum Beispiel eine sechs Bit Sequenz erzeugen, beginnend mit dem Wert „000000” und endend mit dem Wert „111111”. Die Zählerschaltung 515 kann ein Taktsignal CK empfangen, welches die Frequenz definiert, mit der die Werte der Sequenz zu aktualisieren sind. Die Operation der Zählerschaltung 515 kann verwaltet werden durch einen Steuerblock 520 durch ein Rücksetzsignal RESET, ein Startsignal START und ein Stoppsignal STOP. Insbesondere kann die Sequenz, die durch die Zählerschaltung 515 erzeugt wird, gestartet werden zum Beispiel in Antwort auf ein Startsignal START in aktivem Zustand, angehalten werden in Antwort auf ein Stoppsignal STOP in aktivem Zustand, und kann zurückgesetzt werden (zum Beispiel auf den Wert „000000”) zum Beispiel in Antwort auf ein Rücksetzsignal RESET in aktivem Zustand. Ferner kann das Triggersignal TRIG, das durch den Spannungsvergleicher 505 erzeugt wird, auch dem Steuerblock 520 bereitgestellt werden. Natürlich sind solche Details einer Messschaltung lediglich Beispiele und der beanspruchte Gegenstand ist nicht darauf beschränkt.
  • Der Steuerblock 520 kann von der Zählerschaltung 515 auch ein Überlaufsignal OFL empfangen, das aktiv wird, wenn eine Sequenz, die durch den Zählerschalter 515 erzeugt wird, einen vollständigen Zyklus ausgeführt hat (zum Beispiel den Wert „111111” erreicht). Der Steuerblock 520 kann auch mit einem Lesespannungsgenerator 525 gekoppelt sein, der eine Lesespannung Vrd erzeugen kann, die dem Gateanschluss der adressierten Speicherzelle 110 bereitzustellen ist. Wie in größerem Detail unten beschrieben wird, kann die Lesespannung Vrd unterschiedliche Werte annehmen, abhängig von den auszuführenden Operationen. Die Messschaltung 500 kann ferner ein Register 530 enthalten, um zum Beispiel zumindest temporär 8 Bits zu speichern. Ein erster Abschnitt 535 des Registers 530 kann zum Beispiel 6 Bits speichern, die durch die Zählerschaltung 515 erzeugt werden, und ein zweiter Abschnitt 540 des Registers 530 kann eine zwei Bit Kette RN speichern, die zum Beispiel durch den Steuerblock 520 erzeugt wird. Ein NOR Gatter 545 mit sechs Eingängen kann mit dem Register 530 auf solch eine Weise gekoppelt sein, dass es an seinen Eingangsanschlüssen die sechs Bits empfängt, die in dem ersten Abschnitt 535 gespeichert werden. Ein Ausgangsanschluss des NOR Gatters 545 kann mit dem Steuerblock 520 verbunden sein, um dem Steuerblock 520 ein Signal NO DATA bereitzustellen.
  • 5B ist ein Timingdiagramm 550 der Messschaltung 500 gemäß einer Ausführungsform. Ein solches Timingdiagramm 550 kann ein Fortschreiten von Signalen darstellen, die zum Beispiel während Operationen zum Messen der Schwellspannung einer adressierten Speicherzelle 110 involviert sind. Messoperationen, die durch die Messschaltung 500 ausgeführt werden, können die Ausführung von bis zu vier oder mehr unterschiedlichen Phasen veranlassen, wobei jede Phase durch einen entsprechenden Wert der Kette RN identifiziert wird, Zu Beginn einer ersten Phase (RN = 00) kann der Steuerblock 520 das Rücksetzsignal RESET auf aktiv setzen, um die Zählerschaltung 515 zurückzusetzen, und das Register 530 kann in dem ersten Abschnitt 535 die Kette „000000” speichern. Dies bedeutet, dass das Signal NO DATA, zum Beispiel, auf einen hohen Wert gesetzt werden kann. Gleichzeitig kann die Spannung auf der Bitleitung BL, die mit der Speicherkette verbunden ist, welche die adressierte Speicherzelle 110 enthält, unter Verwendung einer Prechargeschaltung (nicht gezeigt) auf eine spezifische Prechargespannung PV gebracht werden. Zu diesem Zeitpunkt kann die Lesespannung Vrd, die durch den Lesespannungsgenerator 525 erzeugt wird, auf einen ersten Wert gesetzt werden, und das Startsignal START kann durch den Steuerblock 520 auf solche eine Weise auf aktiv gesetzt werden, dass die von dem Zählerschalter 515 gezählte Sequenz gestartet wird.
  • Mit dem Gateanschluss der adressierten Speicherzelle 110, der vorgespannt ist auf die Lesespannung Vrd, kann die Bitleitung EL beginnen, zu entladen mit einer Entladerate, die zumindest teilweise von der Schwellspannung der Speicherzelle 110 abhängt. Genauer, wenn die Speicherzelle 110 programmiert wurde auf eine Programmierverteilung entsprechend relativ hohen Schwellspannungen, mag der Wert der Lesespannung Vrd nicht ausreichend sein, die adressierte Speicherzelle 110 einzuschalten. In solch einem Fall kann die Entladerate besonders niedrig sein, da die Bitleitung BL sich entladen kann wegen einem wesentlichen, nicht vermeidbaren Leckeffekt aufgrund der Anwesenheit von umgekehrt vorgespannten Grenzschichten in der adressierten Speicherzelle 110. Wenn andererseits die Schwellspannung ausreichend niedrig ist, kann die Lesespannung Vrd ausreichend sein, die Speicherzelle 110 (zumindest teilweise) einzuschalten, zum Beispiel mit einer entsprechenden Erhöhung der Entladerate.
  • Die Zählerschaltung 515 kann die Zeit messen, welche die Bitleitung BL braucht, um zu entladen. Eine solche Messung kann die Schwellspannung der Speicherzelle 110 anzeigen. Genauer, wenn die Bitleitungsspannung Vbl unter die Referenzspannung VREF fällt, kann der Spannungsvergleicher 505 zum Beispiel das Triggersignal TRIG auf aktiv setzen. In Antwort auf die Aktivierung des Triggersignals TRIG kann der Steuerblock 520 das Stoppsignal STOP auf aktiv setzen, um die Sequenz anzuhalten, welche durch die Zählerschaltung 515 erzeugt wird. Der Wert, der durch die Sequenz angenommen wird, kann dann temporär in dem ersten Abschnitt 535 des Registers 530 gespeichert werden. Der in dem Register 530 gespeicherte Wert kann eine Gelegenheit bereitstellen, um auf relativ präzise Weise die Schwellspannung der adressierten Speicherzelle 110 zu quantifizieren. Wenn sich der Wert von „000000” unterscheidet, kann das Signal NO DATA, das durch das NOR Gatter 545 erzeugt wird, zu einem logisch niedrigen Wert umschalten, was signalisiert, dass die Schwellspannung korrekt gemessen wurde.
  • Wenn die Entladerate der Bitleitung BL zu gering ist, kann die Sequenz, die durch die Zählerschaltung 515 erzeugt wird, den Wert „11111” erreichen, bevor die Bitleitungsspannung Vbl zum Beispiel die Referenzspannung VREF erreicht hat. In diesem Fall kann die Zählerschaltung 515 das Überlaufsignal OFL auf aktiv setzen und der Steuerblock 520 kann das Stoppsignal STOP auf aktiv setzen, um die Zählerschaltung 515 anzuhalten.
  • Zu diesem Zeitpunkt kann eine zweite Phase (RN = 01) initiiert werden, wobei der Steuerblock 520 erneut das Rücksetzsignal RESET auf aktiv setzt, um die Zählerschaltung 515 zurückzusetzen und die Bitleitung BL zur Prechargespannung PV zurückzusetzen. Die Messschaltung 500 kann wiederum die zuvor beschriebene Operationen ausführen, jedoch mit einem erhöhten Wert als Lesespannung Vrd. Wiederum, wenn die Entladerate der Bitleitung BL zu niedrig ist, kann eine dritte (RN = 10) oder sogar eine vierte Phase (RN = 11) ausgeführt werden, zum Beispiel unter Verwendung von nachfolgend erhöhten Lesespannungen Vrd. Das Ergebnis der Messoperationen, die von der Messschaltung 500 ausgeführt werden, kann daher eine digitale Kette aufweisen. In einer bestimmten Implementierung kann solch eine Kette eine digitale Kette von 8 Bits umfassen, die in einem Register 530 gespeichert sind, wobei ein Wert davon die Schwellspannung der adressierten Speicherzelle 110 repräsentieren kann. Natürlich sind solch eine Kette und andere Details, die oben beschrieben wurden, lediglich Beispiele und der beanspruchte Gegenstand ist nicht derart beschränkt.
  • In dem in 5B gezeigten Beispiel mag die Bitleitungsspannung Vbl nur während der vierten Phase unter die Referenzspannung VREF fallen, was eine hohe Schwellspannung anzeigt, die einer relativ hohen Programmierdistribution entsprechen kann. Ein solcher Wert, wie zum Beispiel der in Register 530 gespeicherte, mag nicht ausreichend sein, um zu bestimmen, auf welche Programmierdistribution die Speicherzelle 110 programmiert wurde. Wie mit Bezug auf 3 beschrieben, können sich die sechzehn Programmierdistributionen D0, D1...D15 überlappen, und daher kann ein spezifischer Schwellspannungswert, der unter Verwendung der Messschaltung 500 gemessen wurde, zu einer von zwei unterschiedlichen, benachbarten Programmierdistributionen gehören. Zu diesem Zwecke können mehr Operationen ausgeführt werden, wie unten beschrieben werden wird.
  • Wenn die Schwellspannung korrekt gemessen wurde, kann eine Kette aus 8 digitalen Bits, die in dem Register 530 gespeichert ist, das kodierte Ausgangssignal DCOUT repräsentieren, das der Dekodiereinheit 160 bereitzustellen ist. Eine Speicherzelle 110 kann auf eine spezifische Programmierdistribution programmiert worden sein gemäß einem Code, der durch die Kodiereinheit 130 definiert ist, und die Information, welche durch die digitale Kette von 8 Bits (zum Beispiel der Wert der gemessenen Schwellspannung) kann dekodiert werden, um das (dekodierte) Ausgangssignal DOUT zu erhalten. Wie oben beschrieben, kann die Messschaltung 500 den Schwellspannungswert der adressierten Speicherzelle 110 mit einer Auflösung von zum Beispiel 8 Bits messen unter Verwendung einer vierstufigen Prozedur. Genauer kann die Messschaltung 500 vier unterschiedliche Ablesungen ausführen, identifiziert durch die Kette RN von zwei Bits, mit einer Auflösung von jeweils 6 Bits, wobei der beanspruchte Gegenstand in dieser Beziehung nicht beschränkt ist. Jede der vier Ablesungen kann stattfinden, nachdem die Bitleitung BL wiederum auf die Prechargespannung PV gebracht wurde.
  • Ein alternativer Ansatz zum Messen einer Schwellspannung, der es nicht erfordert, ein Precharge der Bitleitung mehr als einmal pro Speicherzelle 110 auszuführen, kann eine einzelne Leseoperation beinhalten, die im Wesentlichen ähnlich ist zu einer der vier Leseoperationen, die zuvor beschrieben wurden, aber mit einer verbesserten Auflösung, wie zum Beispiel einer Auflösung von 8 Bits. In diesem Fall jedoch kann die Messung gestört werden durch einen Leckeffekt einer Speicherzelle, da solch eine einzelne Leseoperation eine längere Ausführungszeit involvieren kann und dementsprechend kann eine Entladerate der Bitleitung BL hauptsächlich auf solch einem Leckeffekt beruhen.
  • Die 6 ist ein schematisches Blockdiagramm der Dekodiereinheit 160 gemäß einer Ausführungsform. Wie zuvor erwähnt, kann die Dekodiereinheit 160 Dekodieroperationen ausführen auf dem ausgegebenen Kodiersignal DCOUT, um das entsprechende (dekodierte) Ausgangssignal DOUT zu erhalten. Die Dekodiereinheit 160 kann eine metrische Einheit 605 beinhalten, um das ausgegebene kodierte Signal DCOUT zu empfangen, das den Wert der gemessenen Schwellwertspannung anzeigt, zum Beispiel. Die Dekodiereinheit 160 kann dementsprechend vier entsprechende metrische Werte MR0, MR1, MR2, MR3 erzeugen, welche die Wahrscheinlichkeit quantifizieren können, dass die gemessene Schwellspannung einer Programmierdistribution angehört, die den Untermengen B0, B1, B2 bzw. B3 angehört. Für Werte einer Schwellspannung, welche die Speicherzelle 110 annehmen mag (zum Beispiel die Werte des ausgegebenen kodierten Signals DCOUT), kann die metrische Einheit 605 metrische Werte MR0, MR1, MR2, MR3 berechnen, basierend, zumindest teilweise, auf einer Definition der Untermengenpartitionierung der Programmierdistributionen D0, D1, ...D15, zum Beispiel. Natürlich sind solche Details einer Dekodiereinheit allein Beispiele und der beanspruchte Gegenstand ist nicht derart beschränkt.
  • Gemäß einer Ausführungsform, um zu beschreiben, wie verschiedene metrische Werte MR0, MR1, MR2, MR3 durch die metrische Einheit 605 berechnet werden können, wird nun auf die 7A in Verbindung mit 3 Bezug genommen (welche zeigt, wie Programmierdistributionen D0, D1, ..., D15 in Untermengen B0, B1, B2, B3 unterteilt sein können). Die 7A zeigt für jede Untermenge Bi (i = 0, 1, 2, 3) eine entsprechende metrische Funktion FBi, deren Trend korreliert sein kann mit der Wahrscheinlichkeit, dass die Schwellspannung der Untermenge Bi entspricht. Der Trend von FBi kann, zumindest teilweise, zum Beispiel von der Schwellspannung einer Speicherzelle 110 abhängen. Metrische Funktionen FBi können etabliert werden, indem zum Beispiel der Anzahl an Programmierdistributionen und der Art und Weise, wie die Programmierdistributionen in Untermengen angeordnet sind, Rechnung getragen wird. Gemäß einer Ausführungsform kann die metrische Funktion FBi, die in 7A gezeigt ist, eine periodische Funktion aufweisen, welche Maximalwerte zeigt, die Mittelspitzen jeder Programmierdistribution entsprechen, die der Untermenge Bi angehört. Solch eine periodische Funktion kann abnehmen, wenn der Schwellspannungswert sich von dem Wert, der den Spitzen entspricht, entfernt. Zum Beispiel kann die metrische Funktion FB0 den Maximalwert für die vier Schwellspannungswerte zeigen, die den Mittelspitzen der Distributionen D0, D4, D8 und D12 entsprechen. Daher können die vier Schwellspannungswerte diejenigen sein, welche die höchste Wahrscheinlichkeit haben, zu der Untermenge B0 zu gehören, da diese Werte der Mitte der Programmierdistributionen D0, D4, D8, D12 entsprechen können, welche die Untermenge B0 selbst bilden. Darüber hinaus kann die metrische Funktion FB0 gleich Null sein für diejenigen Schwellspannungswerte, die am weitesten entfernt sind von den Mitten der Programmierdistributionen D0, D4, D8, D12. Zum Beispiel kann ein Schwellspannungswert, der einer Spitze der Distribution D2 entspricht, positioniert sein an der größten Entfernung von Spitzen der nächsten Programmierdistributionen, welche der Untermenge B0 angehören (zum Beispiel D0 und D4), und hat daher eine Wahrscheinlichkeit von nahe Null, zu einer Programmierdistribution zu gehören, die in der Untermenge B0 enthalten ist.
  • Gemäß einer Ausführungsform können die metrischen Funktionen FB0, FB1, FB2, FB3 implementiert sein unter Verwendung einer Nachschlagetabelle, wie der Nachschlagetabelle 710, die in 7B gezeigt ist. Genauer, wenn das kodierte Ausgangssignal DCOUT erzeugt wurde unter Verwendung der Messschaltung 500 (zum Beispiel mit einer Auflösung von acht Bits als lediglich ein Beispiel), kann die Tabelle 710 28 = 256 Reihen enthalten, wobei jede Reihe einem jeweiligen Wert der Schwellspannung entspricht. Jede Reihe der Nachschlagetabelle 710 kann vier metrische Werte MR0, MR1, MR2, MR3 enthalten, die sich auf den Schwellspannungswert beziehen, der der Reihe entspricht. Gemäß einer bestimmten Implementierung zum Beispiel können vier metrische Werte MR0, MR1, MR2, MR3 repräsentiert sein durch vier entsprechende digitale Ketten von 6 Bits. Die Werte der vier Ketten von 6 Bits können proportional zu Werten sein, welche durch metrische Funktionen FB0, FB1, FB2, FB3 angenommen werden bei der Schwellspannung, die in der Reihe der Nachschlagetabelle 710 enthalten ist. In der Nachschlagetabelle 710 kann der Schwellspannungswert, der einer Spitze der Distribution D0 entspricht, so gemacht sein, dass er DCOUT = ”8” entspricht. Dementsprechend kann der metrische Wert MR0, der in der achten Reihe der Nachschlagetabelle 710 enthalten ist, gleich „111111” sein, was anzeigt, dass die Wahrscheinlichkeit, dass der Schwellspannungswert der Untermenge B0 (welche die Programmierdistribution D0 umfasst) angehört, auf dem höchsten Wert ist. Die Nachschlagetabelle 710 kann in einem entsprechenden Nur-Lese-Speicher (ROM) gespeichert sein, oder in vier unterschiedlichen ROMs, von denen jedes für einen jeweiligen unter den metrischen Werten MR0, MR1, MR2, MR3 zum Beispiel dediziert ist. Natürlich sind solche Details wie die Anzahl an Bits der Auflösung lediglich Beispiele und der beanspruchte Gegenstand ist nicht derart beschränkt.
  • Es wird sich nun auf die 7C bezogen werden, welche metrische Werte MR0, MR1, MR2, MR3 zeigt, die durch die metrische Einheit 605 erzeugt werden in Antwort auf vier bestimmte kodierte Ausgangssignal DCOUT Werte, die erzeugt wurden durch die Lese-Programmiereinheit 115 gemäß einer Ausführungsform. Der erste Wert von DCOUT, der empfangen wird, kann den Wert „135” umfassen. Der Wert kann zum Beispiel dem Schwellspannungswert entsprechen, der durch die erste Speicherzelle 110 angenommen wird, welche in dem in 4 gezeigten Beispiel programmiert wurde. Daher kann DCOUT = „135” einer Schwellspannung entsprechen, die in der Nähe der Mittelspitze der Programmierdistribution D8 positioniert ist, welche der Untermenge B0 angehören kann. Mit diesem bestimmten kodierten Ausgangssignal DCOUT Wert kann der höchste metrische Wert MR0 sein, was gleich „60” sein kann (aus Gründen der Klarheit werden metrische Werte hierin dezimal dargestellt).
  • Der zweite Wert von DCOUT, der empfangen wurde, mag stattdessen den Wert „157” haben. Dieser Wert kann zum Beispiel dem Schwellspannungswert entsprechen, der durch die zweite Speicherzelle 110 angenommen wird, welche in dem in 4 gezeigten Beispiel programmiert wurde. Daher kann DCOUT = „157” einer Schwellspannung entsprechen, die um einen Mittenwert positioniert ist, der zwischen der Programmierdistribution D9, welche der Untermenge B1 angehören kann, und der Programmierdistribution D10 liegt, welche der Untermenge B2 angehören kann. Tatsächlich kann mit einem solchen bestimmten DCOUT Wert der höchste metrische Wert, der MR2 = „31” sein kann, im Wesentlichen gleich dem metrischen Wert MR1 = „29” sein.
  • Der dritte empfangene Wert von DCOUT kann stattdessen den Wert „84” umfassen. Zum Beispiel kann der Wert dem Schwellspannungswert entsprechen, welcher durch die dritte Speicherzelle 110 angenommen wird, die in dem in 4 gezeigten Beispiel programmiert wurde. Daher kann DCOUT = „84” einer Schwellspannung entsprechen, die im Wesentlichen in der Nähe der Mittenspitze der Programmierdistribution D4 positioniert ist, welche der Untermenge B0 angehören kann, aber leicht versetzt in Richtung auf die Programmierdistribution D5, welche der Untermenge B1 angehören kann. Als eine Konsequenz kann der höchste metrische Wert, der MR0 = „40” umfassen kann, beträchtlich höher sein als der zweithöchste metrische Wert, der MR1 = „25” umfassen kann.
  • Schließlich kann der vierte Wert von DCOUT den Wert „61” haben. Dieser Wert kann zum Beispiel dem Schwellspannungswert entsprechen, der durch die vierte Speicherzelle 110 angenommen wird, die in dem in 4 gezeigten Beispiel programmiert wurde. Daher kann DCOUT = „61” einer Schwellspannung entsprechen, die in der Nähe der Mittenspitze der Programmierdistribution D3 positioniert ist, welche der Untermenge B3 angehören kann, und leicht versetzt in Richtung auf die Programmierdistribution D2, die der Untermenge B2 angehören kann. Als eine Konsequenz kann der höchste metrische Wert, welcher MR3 = „48” aufweisen kann, beträchtlich höher sein als der zweithöchste metrische Wert, welcher MR2 = „20” aufweisen kann. Dementsprechend kann bestimmt werden, dass die erste Speicherzelle auf eine Programmierdistribution programmiert wurde, welche der Untermenge B0 angehört. Auf ähnliche Weise kann die dritte Speicherzelle auf eine Programmierdistribution programmiert worden sein, welche der Untermenge B0 angehört, während die vierte Speicherzelle auf eine Programmierdistribution programmiert sein kann, welche der Untermenge B3 angehört. Es mag jedoch recht schwierig sein, die Untermenge zu bestimmen, auf welche die zweite Speicherzelle programmiert worden sein kann, da beide Untermengen B1 und B2 ungefähr dieselbe Wahrscheinlichkeit haben mögen.
  • In einer Ausführungsform, wie in größerem Detail unten erläutert, kann die Dekodiereinheit 160 Informationsbits abrufen, die kodiert sind durch die Kodiereinheit 130, und dann solch eine Information in einer Gruppe von n Speicherzellen 110 speichern. Zum Beispiel kann die Dekodiereinheit 160 Informationsbits abrufen, indem sie Weichentscheidungsdekodieroperationen auf metrischen Werten ausführt, die berechnet sind gemäß DCOUT, die von n Speicherzellen 110 ausgelesen wurden. Mit Bezug zurück auf 6 kann die metrische Einheit 605 gekoppelt sein mit einer Addieren-Vergleichen-Auswählen (ACS) Einheit 610, welche metrische Werte MR0, MR1, MR2, MR3 von DCOUT akkumulieren kann, welche aus n Speicherzellen 110 ausgelesen wurden. Auf diese Weise kann eine Menge von pfadmetrischen Werten (PMVi(k)) für jede Speicherzelle erzeugt werden, worin i = 0 bis 7 (zum Beispiel die Anzahl an Zuständen Si(k), welche ein Trellis Diagramm bilden, das einen Code definiert, der durch die Kodiereinheit 130 implementiert ist). Solche pfadmetrischen Werte können eine Bestimmung des am meisten wahrscheinlichen Kodierpfades erlauben, dem gefolgt wurde zum Kodieren der Informationsbits, die in n Speicherzellen 110 gespeichert wurden. Die pfadmetrischen Werte PMVi(k), die jeder der n Speicherzellen 110 entsprechen, können temporär gespeichert werden, zum Beispiel in einem pfadmetrischen Register 615.
  • Die Dekodiereinheit 160 kann ferner ein Register 617 für kodierte Information aufweisen, um temporär das DCOUT zu speichern, das von den n Speicherzellen 110 ausgelesen wurde, und eine Zurückverfolgeeinheit 620, die gekoppelt ist mit dem pfadmetrischen Register 615, um pfadmetrische Werte PMVi(k) zu empfangen. Basierend zumindest teilweise auf empfangenen pfadmetrischen Werten PMVi(k) kann die Zurückverfolgungseinheit 620 Weichentscheidungsoperationen ausführen, um, für jede von n Speicherzellen 110, eine Untermenge abzurufen, die eine Programmierdistribution enthält, auf die eine bestimmte Speicherzelle 110 programmiert wurde. Die Zurückverfolgungseinheit 620 kann in der Lage sein, einen ersten Anteil des Ausgangssignals DOUT abzurufen, welcher einen Teil des Signals DIN umfassen kann, das mittels der Linearkombiniereinheit 205 zuvor kodiert wurde zur Speicherung in einer bestimmten Speicherzelle 110. Mit Bezug auf den ECC, definiert durch den Trellis Kode 230, der in 2C gezeigt ist, kann der Teil des Signals DIN, welcher durch die Rückverfolgungseinheit 620 abgerufen wurde, das Bit a3(k) der Zeichenkette aus 3 Bits a1(k), a2(k), a3(k) enthalten. Das Bit a3(k) kann verwendet werden, um Bits b3(k), b4(k) von DCIN zu erzeugen.
  • Um den verbleibenden Teil des Signals DOUT abzurufen, entsprechend dem Teil des Signals DIN, der nicht kodiert wurde (zum Beispiel die zwei Bits a1(k), a2(k)), kann die Dekodiereinheit 160 ferner eine Diskriminierungseinheit 625 enthalten, die mit der Zurückverfolgungseinheit 620 und dem Register 617 für kodierte Informationen verbunden ist. Insbesondere kann, wie unten beschrieben werden wird, ein verbleibender Teil des Signals DOUT berechnet werden basierend, zumindest teilweise, auf einer bestimmten Untermenge, welche durch die Zurückverfolgungseinheit 620 und DCOUT abgerufen wurde.
  • Um ein Beispiel zu beschreiben, kann die Dekodiereinheit 160 eine Sequenz von kodierten Ausgangssignalen DCOUT dekodieren, welche gemessen wurden von den vier Speicherzellen 110, die programmiert wurden gemäß dem kodierten Signal DCIN, das bereitgestellt werde in dem Beispiel, auf das sich 4 bezieht. Daher kann die erste Speicherzelle 110 programmiert worden sein gemäß der Kette a1(k) = 0, a2(k) = 1, a3(k) = 0; die zweite Speicherzelle 110 kann programmiert worden sein gemäß der Kette a1(k + 1) = 0, a2(k + 1) = 1, a3(k + 1) = 1; die dritte Speicherzelle 110 kann programmiert worden sein gemäß der Kette a1(k + 2) = 1, a2(k + 2) = 0, a3(k + 2) = 1; und die vierte Speicherzelle kann programmiert worden sein gemäß der Kette a1(k + 3) = 0, a2(k + 3) = 0, a3(k + 3) = 0. Die Beschreibung der Operationen, welche durch die Dekodiereinheit 160 ausgeführt werden, wird mit Bezug auf 8 gegeben, welche Trellis Diagramme 405, 410, 415, 420 enthält, die den vier oben beschriebenen Speicherzellen entsprechen.
  • Bei einem ersten k-ten Betriebszyklus kann die metrische Einheit 605 von der Messschaltung 500 das erste kodierte Ausgangssignal DCOUT empfangen, das der Schwellspannung der ersten Speicherzelle entspricht. In diesem Fall kann das kodierte Ausgangssignal DCOUT gleich „135” sein. Wie bereits beschrieben, kann die metrische Einheit 605 entsprechende metrische Werte MR0, MR1, MR2, MR3 berechnen, welche in diesem Fall gleich „60”, „10”, „2” bzw. „12” sein können.
  • Die ACS Einheit 610 kann pfadmetrische Werte PMVi(k) erzeugen aus metrischen Werten MR0, MR1, MR2, MR3, gemäß einem Prozess, der wie folgt beschrieben ist: Wie oben beschrieben, während Kodieroperationen, die von der Kodiereinheit 130 ausgeführt werden, können Übergänge in einem Trellis Diagramm assoziiert sein mit einer entsprechenden Untermengenauswahl. Dementsprechend kann die ACS Einheit 610 jeden möglichen Übergang im Trellis Diagramm 405, der zwischen Zuständen Si(k) und Zuständen Si(k + 1) auftritt, den metrischen Wert für die Untermenge zuordnen, die mit diesem Übergang assoziiert ist. Da zum Beispiel der Übergang vom Zustand S0(k) zum Zustand S0(k + 1), der identifiziert sein kann durch den Übergangspfeil t00, mit der Auswahl der Untermenge B0 assoziiert sein kann, kann die ACS Einheit 610 den metrischen Wert MR0 dem Übergang zuordnen, was in diesem Fall gleich „60” sein kann. Der Übergang vom Zustand S0(k) zum Zustand S4(k + 1), identifiziert vom Übergangspfeil t'04, kann stattdessen assoziiert sein mit der Auswahl der Untermenge B2. Daher kann die ACS Einheit 610 den metrischen Wert MR2 dem Übergang zuordnen, der in diesem Fall gleich „2” sein kann. Wiederum ist ein solches Trellis Diagramm allein ein Beispiel und der beanspruchte Gegenstand ist nicht darauf beschränkt.
  • In einer Ausführungsform kann ein Prozess, durch welchen metrische Werte verschiedenen Übergängen des Trellis Diagramms 405 zugeordnet werden können, eine entsprechende „zweigmetrische Menge” definieren. Für jeden Zustand Si(k) des Trellis Diagramms 405 können zwei metrische Werte, auf die sich als „zweigmetrische Werte” bezogen wird, den zwei Übergängen zugeordnet werden, welche sich vom Zustand Si(k) selbst verzweigen. Solche zweigmetrischen Werte können temporär zum Beispiel in einem zweigmetrischen Register 630 gespeichert werden.
  • Dann kann, für jeden Zustand Si(k) des Trellis Diagramms 405, die ACS Einheit 610 die zwei entsprechenden metrischen Werte vergleichen, den höchsten auswählen, den pfadmetrischen Wert PMVi(k) auf den ausgewählten metrischen Wert setzen, und den ausgewählten metrischen Wert in dem pfadmetrischen Register 615 speichern. In diesem Fall können die pfadmetrischen Werte PMVi(k), die während des k-ten Betriebszyklus erzeugt werden, entsprechend der ersten Speicherzelle, PMV0(k) = „60”, PMV1(k) = „12”, PMV2(k) = „60”, PMV3(k) = „12”, PMV4(k) = „60”, PMV5(k) = „12”, PMV6(k) = „60”, PMV7(k) = „12” umfassen.
  • Während des folgenden Betriebszyklus (k + 1) kann die metrische Einheit 605 von der Messschaltung 500 das zweite kodierte Ausgangssignal DCOUT empfangen, welches der Schwellspannung der zweiten Speicherzelle entsprechen kann. In diesem Fall kann DCOUT zum Beispiel gleich „157” sein, und entsprechende metrische Werte MR0, MR1, MR2 und MR3 können gleich „8”, „29”, „31” bzw. „11” sein. Wie zuvor beschrieben, kann die ACS Einheit 610, durch Verwendung solcher neuer metrischer Werte, eine neue zweigmetrische Menge erzeugen, welche dem Trellis Diagramm 410 entspricht, und kann die zweite metrische Menge im zweigmetrischen Register 630 speichern.
  • In einer Ausführungsform kann, für jeden Zustand Si(k + 1) des Trellis Diagramms 410, die ACS Einheit 610 zwei entsprechende metrische Werte vergleichen, den höchsten auswählen, und den pfadmetrischen Wert PMVi(k + 1) auf die Summe von metrischen Werten zwischen dem gewählten metrischen Wert und dem pfadmetrischen Wert PMVi(k) setzen, der im vorhergehenden k-ten Betriebszyklus berechnet wurde, der bereits in dem pfadmetrischen Register 615 gespeichert ist. Die ACS Einheit 610 kann den pfadmetrischen Wert im pfadmetrischen Register 615 speichern. In diesem Fall können die pfadmetrischen Werte PMVi(k + 1), entsprechend der zweiten Speicherzelle, PMV0(k + 1) = „68”, PMV1(k + 1) = „89”, PMV2(k + 1) = „91”, PMV3(k + 1) = „71”, PMV4(k + 1) = „91”, PMV5(k + 1) = „71”; PMV6(k + 1) = „68” und PMV7(k + 1) = „89” enthalten. Natürlich sind solche Details des Zuweisens von metrischen Werten allein Beispiele und der beanspruchte Gegenstand ist nicht darauf beschränkt. Pfadmetrische Werte PMVi(k + 2), erzeugt während des Betriebszyklus (k + 2) und entsprechend der dritten Speicherzelle, können PMV0(k + 2) = „108”, PMV1(k + 2) = „116”, PMV2(k + 2) = „111”, PMV3(k + 2) = „111”, PMV4(k + 2) = „129”, PMV5(k + 2) = „99”, PMV6(k + 2) = „131” und PMV7(k + 2) = „97” umfassen. Ferner können die pfadmetrischen Werte PMVi(k + 3), erzeugt während des Betriebszyklus, (k + 3) und entsprechend der vierten Speicherzelle, PMV0(k + 3) = „136”, PVM1(k + 3) = „159”, PMV2(k + 3) = „149”, PMV3(k + 3) = „179”, PMV4(k + 3) = „128”, PMV5(k + 3) = „159”, PMV6(k + 3) = „140” und PMV7(k + 3) = „145” umfassen.
  • In einer Ausführungsform können die pfadmetrische Werte PMVi(k), PMVi(k + 1), PMVi(k + 2) und PMVi(k + 3) erzeugt werden durch Auswählen, bei jedem Betriebszyklus und für jeden Zustand des Trellis Diagramms, von Übergängen, welche die höchsten metrischen Werte haben. Dementsprechend ist es nun möglich, den Kodierpfad abzurufen, dem durch die Kodiereinheit 130 zum Kodieren eines Teils des Signals DIN, das der Linearkombiniereinheit 205 bereitgestellt wurde. Insbesondere kann die Zurückverfolgungseinheit 620 auf das pfadmetrische Register 615 zugreifen, die pfadmetrischen Werte PMVi(k + 3) abtasten, entsprechend der letzten zu lesenden Speicherzelle 110, und kann den Zustand Si(k + 4) auswählen, der den höchsten pfadmetrischen Wert PMVi(k + 3) hat, zum Beispiel. Unter Verwendung einer Weichentscheidungsauswahl kann dieser Zustand der Kandidat der höchsten Wahrscheinlichkeit als Endzustand des Kodierpfades sein, der abzurufen ist. In dem gegenwärtigen Beispiel kann dieser Zustand den Zustand S3(k + 4) umfassen, der einen pfadmetrischen Wert PMVi(k + 3) gleich „179” hat.
  • An diesem Punkt, um den vorhergehenden Zustand des Kodierpfads (in diesem Fall, dem Zustand (k + 3)) zurückzuverfolgen, kann die Zurückverfolgungseinheit 620 Übergänge von Zuständen Si(k + 3) zu dem gewählten Zustand Si(k + 4) überprüfen. In diesem Fall können solche Übergänge den Übergang beinhalten, der beginnt von dem Zustand S6(k + 3), und den Übergang, der beginnt von dem Zustand S7(k + 3). Die Zurückverfolgungseinheit 620 kann dann den Übergang auswählen, der von dem Zustand Si(k + 3) beginnt und der den höchsten pfadmetrischen Wert PMVi(k + 2) hat. Der ausgewählte Zustand kann den vorletzten Zustand des abzurufenden Kodierpfades repräsentieren. In diesem Beispiel kann der ausgewählte Zustand den Zustand S6(k + 3) umfassen, der einen pfadmetrischen Wert PMVi(k + 2) gleich „131” hat. Nachdem der Übergang bestimmt wurde, welcher die zwei letzten Zustände des Kodierpfades verbindet, kann es möglich sein, die Untermenge abzurufen, zu der die Schwellspannung der vierten Speicherzelle 110 programmiert wurde, da jeder Übergang in dem Trellis Diagramm assoziiert werden kann mit der Auswahl einer bestimmten Untermenge (in diesem Fall die Untermenge B3), zum Beispiel.
  • Wie zuvor beschrieben, kann jeder Übergang in einem Trellis Diagramm zwischen einem Paar von Zuständen auch assoziiert sein mit einem entsprechenden Wert des Teils des Signals DIN, das kodiert wurde. Mit anderen Worten, nachdem der Übergang bestimmt wurde, welcher die letzten zwei Zustände des Kodierpfades verbindet, kann es möglich sein, das Bit a3(k + 3) abzurufen, das in der vierten Speicherzelle 110 gespeichert wurde. In diesem Beispiel kann der gewählte Übergang, der beginnen kann von dem Zustand S6(k + 3) und enden kann in dem Zustand S3(k + 4), a3(k + 3) = „0” entsprechen. An diesem Punkt kann der Prozess wiederholt werden, um andere vorhergehende Zustände des K0odierpfades zurückzuverfolgen durch Auswählen derjenigen Übergänge, welche die höchsten pfadmetrischen Werte haben.
  • Mit Bezug auf 8 ist der Kodierpfad, der mit dem oben beschriebenen Prozess abgerufen wurde, mit einer dickeren Linie gezeichnet und enthält die Zustandssequenz (vom ersten bis zum letzten): S0(k) – S0(k + 1) – S4(k + 2) – S6(k + 3) – S3(k + 4). Der Kodierpfad kann übereinstimmen mit dem Pfad, dem effektiv gefolgt wurde durch die Kodiereinheit 130 zum Kodieren von Informationsbits zum Speichern in den vier Speicherzellen 110 des Beispiels, das sich auf 4 bezieht. Dementsprechend kann die Sequenz von Bits, die erzeugt wird durch die Zurückverfolgungseinheit 620, die korrekte sein, zum Beispiel a3(k) = „0”, a3(k + 1) = „1”, a3(k + 2) = „1” und a3(k + 3) = „0”. Der verbleibende Teil des Signals DOUT, welcher dem Teil des Signals DIN entspricht, das nicht kodiert wurde (zum Beispiel, die Bits a1(k), a2(k), a1(k + 1), a2(k + 1), a1(k + 2), a2(k + 2), a1(k + 3) und a2(k + 3)) kann stattdessen durch die Diskriminierungseinheit 625 abgerufen werden. Insbesondere kann, für jede Speicherzelle 110, die Diskriminierungseinheit 625 in der Lage sein, den Teil des Signals DOUT abzurufen, basierend, zumindest teilweise, auf der Untermenge, auf welche die Schwellspannung der Speicherzelle 110 programmiert wurde, und basierend auf, zumindest teilweise, DCOUT, welches die Schwellspannung dieser Speicherzelle 110 repräsentiert. Die Schwellspannung kann bestimmt werden durch die Zurückverfolgungseinheit 620. DCOUT kann gespeichert sein in dem kodierten Informationsregister 617.
  • In einer Ausführungsform mögen Programmierdistributionen, die einer Untermenge angehören, einander nicht überlappen, und jede Programmierdistribution innerhalb einer Untermenge kann assoziiert sein mit einem bestimmten Teil des Signals DIN (zum Beispiel dem Teil, der nicht kodiert wurde). Dementsprechend kann das Wissen um eine Untermenge, auf welche die Schwellspannung einer Speicherzelle 110 programmiert wurde, und der Wert der Schwellspannung selbst ausreichend sein, um eine spezifische Programmierdistribution zu identifizieren, auf welche die Schwellspannung programmiert wurde, und den assoziierten Teil des Signals DIN. Mit Bezug auf die vierte Speicherzelle 110 des vorhergehenden Beispiels kann die Zurückverfolgungsreinheit 620 zum Beispiel bestimmen, dass die Untermenge, auf welche deren Schwellspannung programmiert wurde, die Untermenge B3 ist. Unter Bezugnahme auf 3 kann die Untermenge B3 die Programmierdistributionen D3, D7, D11 und D15 enthalten. Das assoziierte DCOUT kann einer Schwellspannung entsprechen, die in der Nähe der Mittenspitze der Programmierdistribution D3 positioniert ist, welche der Untermenge B3 angehört, und leicht verschoben in Richtung auf die Programmierdistribution D2 ist, welche wiederum der Untermenge B2 angehören kann (siehe 7C). Dementsprechend kann das Wissen, dass die Untermenge, auf welche ihre Schwellspannung programmiert wurde, die Untermenge B3 umfasst, einen Weg erlauben, zu bestimmen, ob die Schwellspannung auf die Programmierdistribution D3 programmiert wurde. Zum Beispiel können die ersten Programmierdistributionen jeder Untermenge D0, D1, D2, D3 assoziiert sein mit b1(k + 3) = 0 und b2(k + 3) = 0, die zweiten Distributionen D4, D5, D6, D7 können mit b1(k + 3) = 1 und b2(k + 3) = 0, die dritten Distributionen D8, D9, D10, D11 können assoziiert sein mit b1(k + 3) = 0 und b2(k + 3) = 1, und die vierten Distributionen D12, D13, D14, D15 können assoziiert sein mit b1(k + 3) = 1 und b2(k + 3) = 1. Da b1(k + 3) a1(k + 3), b2(k + 3) = a2(k + 3), kann der verbleibende Teil des Signals DOUT a1(k + 3) = 0, a2(k + 3) = 0 umfassen, entsprechend der vierten Speicherzelle 100. Durch Wiederholen solcher Operationen für die vier Speicherzellen 110 des Beispiels kann das Signal DOUT abgerufen werden. Zum Beispiel für die erste Speicherzelle 110, a1(k) = 0, a2(k) = 1, a3(k) = 0; für die zweite Speicherzelle 110, a1(k + 1) = 0, a2(k + 1) = 1, a3(k + 1) = 1; für die dritte Speicherzelle 110 a1(k + 2) = 1, a2(k + 2) = 0, a3(k + 2) = 1; und für die vierte Speicherzelle 110 a1(k + 3) = 0, a2(k + 3) = 0, a3(k + 3) = 0.
  • Operationen, welche durch die zuvor beschriebene Kodier/Dekodiereinheit 120 ausgeführt werden, können einen bestimmten Faltungskode verwenden, der definiert ist durch die Struktur des Linearkombinierers 205 und einer bestimmten Untermengenpartitionierung. Jedoch können ähnliche Betrachtungen anwendbar sein im Falle, dass die Untermengenpartitionierung und der verwendete Kode zum Kodieren der Information, die in den Speicherzellen zu speichern ist, unterschiedlich sind. In den oben beschriebenen Ausführungsformen, zum Beispiel, um in jeder Speicherzelle 110 drei Bits an Information zu speichern (wie die nichtkodierte Kette, die gebildet ist aus den Bits a1(k), a2(k), a3(k)), kann jede Speicherzelle 110 programmiert werden in einem entsprechenden aus sechzehn unterschiedlichen Zuständen, entsprechend den sechzehn Programmierdistributionen D0, D1, ...D15, abhängig von dem Wert, der angenommen wird durch die entsprechende (kodierte) Zeichenkette b1(k), b2(k), b3(k), b4(k). Die Anzahl an Programmierdistributionen kann definiert werden durch die Anzahl an Bits, welche die Kette b1(k), b2(k), b3(k), b4(k) bilden, welche wiederum definiert sein kann durch die Redundanz, die durch den Kode eingeführt wird, der zum Erzeugen der Kette verwendet wird.
  • Aufgrund von Beschränkungen, die durch Toleranzen eingeführt werden, welche speicherzellenintrinsisch sind, mag eine Anzahl von Programmierdistributionen wie sechzehn, wie es in dem obigen Beispiel beschrieben ist, exzessiv sein und kann zu einer exzessiven Überlappung unter benachbarten Programmierdistributionen führen. Ein Ansatz, um eine gleiche Anzahl von Informationsbits zu speichern unter Verwendung einer geringeren Anzahl von Programmierdistributionen kann ein Kodieren der zu speichernden Information in Blöcke involvieren, entsprechend mehr als einer Speicherzelle. Auf diese Weise kann eine Redundanz, welche durch den Kode definiert wird, unterteilt werden unter den Speicherzellen, entsprechend den Blöcken. Dementsprechend kann die Anzahl an Programmierdistributionen, auf welche jede Speicherzelle programmiert werden kann, reduziert werden. Ein Beispiel, wie eine solche Lösung implementiert werden kann, wird mit Bezug auf 9A, 9B und 9C diskutiert. In einem bestimmten Beispiel kann im Speicher zu speichernde Information Blöcke von sechs Bits an Information umfassen, worin jeder Block von sechs Bits in einem entsprechenden Paar von adressierten Speicherzellen 110 gespeichert werden kann. Zu diesem Zweck kann die Kodiereinheit 130 modifiziert werden, was zum Beispiel in einer Kodiereinheit 910 resultiert. In einer bestimmten Implementierung kann das Signal DIN, das in einem Paar adressierter Speicherzellen 110 zu speichern ist, repräsentiert werden durch eine Kette von sechs Bits a1(k), a2(k), a3(k), a4(k), a5(k), a6(k). Die Kodiereinheit 910 kann die Kette aus sechs Bits, welche das Signal DIN bildet, kodieren, um ein kodiertes Signal DCIN zu erhalten. Die Kodiereinheit 910 kann einen Faltungskodierer umfassen, welcher ein lineares Kodierschema verwendet, um dem Signal DIN Redundanz hinzuzufügen. In diesem Fall jedoch kann die Redundanz, welche durch die Kodiereinheit 910 eingeführt wird, ein Bit je Paar an Speicherzellen 110 umfassen. Jede Kette von sechs Bits a1(k), a2(k), a3(k), a4(k), a5(k), a6(k), welche das Signal DIN bildet, kann kodiert werden in ein entsprechendes Symbol von sieben Bits b1(k), b2(k), b3(k), b4(k), b5(k), b6(k), b7(k), welche das kodierte Signal DCIN bildet. Ein solches Symbol aus sieben Bits b1(k), b2(k), b3(k), b4(k), b5(k), b6(k), b7(k) kann dann der Lese-Programmiereinheit 115 bereitgestellt werden, um in dem Paar von Speicherzellen 110 gespeichert zu werden, die durch den Adresskode ADR adressiert sind. Gemäß einer Ausführungsform können die Bits b1(k), b2(k), b3(k), b4(k) mit den Bits a1(k), a2(k), a3(k), a4(k) übereinstimmen, während die Bits b5(k), b6(k), b7(k) erzeugt werden können durch einen Linearkombinierer 920 aus den Bits a5(k), a6(k), wie in 9B gezeigt. Da die Kette aus sechs Bits a1(k), a2(k), a3(k), a4(k), a5(k), a6(k) kodiert werden kann in ein entsprechendes Symbol aus sieben Bits b1(k), b2(k), b3(k), b4(k), b5(k), b6(k), b7(k), kann jedes Paar von Speicherzellen 110 auf 27 = 128 unterschiedliche Zustände programmiert werden.
  • Dementsprechend kann jede Speicherzelle 110 des adressierten Paares programmiert werden in einen entsprechenden aus zwölf unterschiedlichen Zuständen, entsprechend zwölf jeweiligen Programmierdistributionen E0, E1, ...E11 (für die erste Speicherzelle des Paares) und F0, F1, ...R11 (für die zweite Speicherzelle des Paares). Auf diese Weise kann jeder unter den 128 unterschiedlichen Zuständen, auf die jedes Paar der Speicherzellen 110 programmiert werden kann, assoziiert sein mit einem entsprechenden unter den 12·12 = 144 Zuständen, die definiert sind durch die Programmierdistributionspaare Ei, Fj (i = 1 bis 11, j = 1 bis 11). Dementsprechend, mit solchen Werten, brauchen 144 – 128 = 16 Distributionspaare nicht verwendet zu werden.
  • Die Beziehung zwischen den 128 Zuständen, welche durch die Werte der Bits b1(k), b2(k), b3(k), b4(k), b5(k), b6(k), b7(k) und die Programmierdistributionspaare Ei, Fj identifiziert werden, kann definiert werden durch eine Abbildungseinheit (nicht gezeigt), die in der Kodiereinheit 910 oder in der Lese-Programmiereinheit 115 enthalten ist. Selbst in diesem Fall kann die Assoziation zwischen den 128 Zuständen, die durch die Bits b1(k), b2(k), b3(k), b4(k), b5(k), b6(k) b7(k) definiert sind, und verschiedene Programmierdistributionspaare Ei, Fj, eine Untermengenpartitionierung involvieren. Genauer, wie in 9C gezeigt, können die 128 Zustände unterteilt werden in 23 = 8 unterschiedliche Untermengen SB0, SB1, SB2, SB3, SB4, SB5, SB6, SB7, von denen jede 24 = 16 Programmierdistributionspaare Ei, Fj enthält. Jede Untermenge kann identifiziert werden durch einen entsprechenden Wert der Kette b5(k), b6(k), b7(k), der erzeugt wird durch den Linearkombinierer 920. Darüber hinaus kann, innerhalb jeder Untermenge SB0, SB1, SB2, SB3, SB4, SB5, SB6, SB7 die „Entfernung” zwischen verschiedenen Programmierdistributionspaaren Ei, Fj auf solch eine Weise erhöht werden, dass jede Überlappung zwischen Programmierdistributionen derselben Untermenge vermieden wird.
  • 10 ist eine schematische Ansicht eines Rechnersystems und einer Speichervorrichtung gemäß einer Ausführungsform. Eine solche Rechnervorrichtung kann zum Beispiel einen oder mehrere Prozessoren aufweisen, um eine Anwendung und/oder anderen Code auszuführen. Die Speichervorrichtung 810 kann zum Beispiel den in 1 gezeigten Speicher 100 aufweisen. Eine Rechnervorrichtung 804 kann repräsentativ sein für jegliche Vorrichtung, Gerät oder Maschine, die konfigurierbar sein kann, um die Speichervorrichtung 810 zu verwalten. Die Speichervorrichtung 810 kann eine Speichersteuereinheit 815 und einen Speicher 822 enthalten. Als ein Beispiel, aber nicht beschränkend, kann die Rechnervorrichtung 804 enthalten: eine oder mehrere Rechnervorrichtungen und/oder -plattformen, wie zum Beispiel einen Desktop-Computer, einen Laptop-Computer, eine Arbeitsstation, eine Servervorrichtung oder Ähnliches; eine oder mehrere persönliche Rechner- oder Kommunikationsvorrichtungen oder -geräte, wie zum Beispiel einen persönlichen digitalen Assistenten, eine mobile Kommunikationsvorrichtung oder Ähnliches; ein Rechnersystem und/oder eine assoziierte Dienste-Provider-Fähigkeit, wie zum Beispiel eine Datenbank oder einen Datenspeicherdiensteprovider/-system; und/oder jegliche Kombination davon.
  • Es ist anerkannt, dass alle oder Teile der verschiedenen Vorrichtungen, die in dem System 800 gezeigt sind, implementiert werden können unter Verwendung oder auf andere Weise enthaltend Hardware, Firmware, Software oder jegliche Kombination davon. Als ein Beispiel, aber nicht als eine Beschränkung, kann daher die Rechnervorrichtung 804 zumindest eine Verarbeitungseinheit 820 enthalten, die operativ mit dem Speicher 822 über einen Bus 840 und einen Host oder eine Speichersteuereinheit 815 gekoppelt ist. Die Verarbeitungseinheit 820 ist repräsentativ für eine oder mehrere Schaltungen, die konfigurierbar sind, um zumindest einen Teil einer Datenverarbeitungsprozedur oder -prozess auszuführen. Als ein Beispiel, aber nicht als Beschränkung, kann die Verarbeitungseinheit 820 einen oder mehrere Prozessoren, Controller, Mikroprozessoren, Mikrocontroller, anwendungsspezifische integrierte Schaltungen, digitale Signalprozessoren, programmierbare Logikvorrichtungen feldprogrammierbare Gatterarrays und Ähnliches, oder jegliche Kombination davon, aufweisen. Die Verarbeitungseinheit 820 kann ein Betriebssystem aufweisen, das konfiguriert ist, mit der Speichersteuereinheit 815 zu kommunizieren. Solch ein Betriebssystem kann zum Beispiel Befehle erzeugen, die an die Speichersteuereinheit 815 über den Bus 840 zu senden sind. Solche Befehle können Lese- und/oder Schreibbefehle umfassen. In Antwort auf einen Schreibbefehl kann die Speichersteuereinheit 815 zum Beispiel ein Vorspannungssignal bereitstellen wie einen Setz- oder Rücksetzpuls, um Information zu schreiben, die assoziiert ist mit dem Schreibbefehl zum Beispiel an eine Speicherpartition. In einer Implementierung kann die Speichersteuereinheit 815 die Speichervorrichtung 810 betreiben, worin die Verarbeitungseinheit 820 eine oder mehrere Anwendungen bedienen kann und/oder Schreibbefehle an die Speichersteuereinheit initiieren kann, um zum Beispiel Zugriff auf Speicherzellen in der Speichervorrichtung 810 bereitzustellen.
  • In einer Ausführungsform kann ein System eine Speichervorrichtung aufweisen, welche ein Speicherfeld aufweist, um Information über eine oder mehrere Mehrpegelspeicherzellen hinweg zu speichern, eine Steuereinheit, um eine weiche Entscheidung und Faltungskodierung auf das Speicherfeld anzuwenden, um einen Wert der Information zu bestimmen, und eine Speichervorrichtungssteuereinheit, um die Speichervorrichtung zu betreiben. Das System kann ferner einen Prozessor aufweisen, um eine oder mehrere Anwendungen zu bedienen und um Schreib- und/oder Lesebefehle an die Speichervorrichtungssteuereinheit zu initiieren, um Zugriff auf das Speicherfeld bereitzustellen.
  • Der Speicher 822 ist repräsentativ für jeglichen Datenspeichermechanismus. Der Speicher 822 kann zum Beispiel einen primären Speicher 824 und/oder einen sekundären Speicher 826 enthalten. Der primäre Speicher 824 kann zum Beispiel einen Speicher mit wahlfreiem Zugriff enthalten, einen Nur-Lese-Speicher, und so weiter. Obwohl er in diesem Beispiel als getrennt von der Verarbeitungseinheit 820 dargestellt wurde, sollte verstanden werden, dass der gesamte oder Teile des primären Speichers 824 innerhalb oder auf andere Weise in der Nähe angeordnet/gekoppelt mit der Verarbeitungseinheit 820 bereitgestellt werden kann.
  • Der sekundäre Speicher 826 kann zum Beispiel denselben oder einen ähnlichen Typ von Speicher aufweisen wie der primäre Speicher und/oder eine oder mehrere Datenspeichervorrichtungen oder -systeme, wie zum Beispiel ein Plattenlaufwerk, ein optisches Laufwerk, ein Bandlaufwerk, ein Festkörperspeicherlaufwerk und so weiter. In bestimmten Implementierungen kann der zweite Speicher 826 operativ empfänglich sein oder auf andere Weise konfigurierbar sein, um sich mit einem computerlesbaren Medium 828 zu koppeln. Das Computerlesbare Medium 828 kann zum Beispiel jegliches Medium beinhalten, welches Daten, Kode und/oder Anweisungen für eine oder mehrere der Vorrichtungen in dem System 800 tragen und/oder verfügbar machen kann.
  • Die Rechnervorrichtung 804 kann zum Beispiel eine Eingabe/Ausgabe 832 beinhalten. Die Eingabe/Ausgabe 823 ist repräsentativ für eine oder mehrere Vorrichtungen oder Merkmale, die konfigurierbar sein können, um menschliche und/oder maschinelle Eingaben zu akzeptieren oder auf andere Weise einzuführen und/oder eine oder mehrere Vorrichtungen oder Merkmale, die konfigurierbar sein können, um an Menschen und/oder Maschinen Ausgaben abzugeben oder auf andere Weise bereitzustellen. Als ein Beispiel, aber nicht beschränkend, kann die Eingabe/Ausgabe Vorrichtung 832 eine operativ konfigurierte Anzeige, Lautsprecher, Tastatur, Maus, Trackball, Berührungsbildschirm, Datenanschluss und so weiter beinhalten.

Claims (17)

  1. Verfahren, aufweisend: Speichern von Zuständen in einer oder in mehreren Mehrpegelspeicherzellen, wobei das Speichern weiterhin ein Kodieren der Zustände gemäß einem Faltungscode aufweist, um Symbole bereitzustellen, die die Zustände repräsentieren; und Bestimmen der kodierten Zustände unter Verwendung von weicher Entscheidung und Faltungsdekodierung, wobei das Bestimmen weiterhin aufweist: Auslesen von weichen Entscheidungen, welche mit gemessenen Schwellspannungen assoziiert sind, aus den Mehrpegelspeicherzellen; Beibehalten von Sätzen periodischer Funktionen, wobei jeder Satz mit einer unterschiedlichen Mehrzahl von Programmierverteilungen von gespeicherten Zuständen assoziiert wird, wobei die gespeicherten Zustände, welche mit einer speziellen periodischen Funktion assoziiert werden, in Bezug auf einander periodisch sind; Assoziieren einer weichen Entscheidung mit einem speziellen Satz der periodischen Funktionen; und Auswählen einer Programmierverteilung aus dem speziellen Satz von periodischen Funktionen basierend zumindest teilweise auf einer Berechnung eines wahrscheinlichsten Kodierungspfades, dem zur Kodierung gefolgt worden war.
  2. Verfahren nach Anspruch 1, wobei das Bestimmen der kodierten Zustände ferner aufweist: Abrufen der gespeicherten Zustände aus den gespeicherten Werten und Anwenden der weichen Entscheidung und Faltungsdekodierung, um die gespeicherten Zustände wiederzugewinnen.
  3. Verfahren nach Anspruch 1, worin die weiche Entscheidung die Bestimmung eines wahrscheinlichsten Programmierzustands unter einer Mehrzahl von Programmierzuständen umfasst, um die kodierten Zustände zu bestimmen.
  4. Verfahren nach Anspruch 1, worin die Mehrpegelspeicherzellen eingerichtet sind, zwei oder mehr Bits zu speichern.
  5. Verfahren nach Anspruch 1, wobei die Werte der Schwellspannungen eine Messung einer Wahrscheinlichkeit aufweisen, dass eine gemessene Schwellspannung einer bestimmten Programmierverteilung der einen oder der mehreren Mehrpegelspeicherzellen angehört.
  6. Speichervorrichtung, aufweisend: ein Speicherfeld, um Zustände über eine oder mehrere Mehrpegelspeicherzellen hinweg zu speichern; und eine Steuereinheit eingerichtet zum: Kodieren der Zustände gemäß einem Faltungscode, um Symbole bereitzustellen, die die Zustände repräsentieren; Auslesen von weichen Entscheidungen, welche mit den gemessenen Schwellspannungen assoziiert sind, aus den Mehrpegelspeicherzellen; Zugreifen auf Sätze von periodischen Funktionen, wobei jeder Satz mit einer unterschiedlichen Mehrzahl von Programmierverteilungen von gespeicherten Zuständen assoziiert ist, wobei die gespeicherten Zustände, welche mit einer speziellen periodischen Funktion assoziiert sind, in Bezug auf einander periodisch sind; Assoziieren einer weichen Entscheidung mit einem speziellen Satz der periodischen Funktionen; und Auswählen einer Programmierverteilung aus dem speziellen Satz von periodischen Funktionen basierend zumindest teilweise auf einer Berechnung eines wahrscheinlichsten Kodierungspfades, dem zum Kodieren gefolgt worden war, um die kodierten Zustände zu bestimmen unter Verwendung von weicher Entscheidung und Faltungsdekodierung.
  7. Speichervorrichtung nach Anspruch 6, worin die weiche Entscheidung ein Bestimmen eines wahrscheinlichsten Programmierzustandes unter einer Mehrzahl von Programmierzuständen aufweist, um die kodierten Zustände zu bestimmen.
  8. Speichervorrichtung nach Anspruch 6, ferner aufweisend: eine Messschaltung, um die Schwellspannungen der einen oder der mehreren Mehrpegelspeicherzellen zu bestimmen; und einen Wandler, um die Werte der Schwellspannungen in eine digitale Sequenz von Zahlen zu wandeln, welche die Schwellspannungen der einen oder der mehreren Mehrpegelspeicherzellen anzeigen.
  9. Speichervorrichtung nach Anspruch 8, worin die Messschaltung einen Spannungskomparator aufweist, der mehrere Eingänge aufweist, um eine Bitleitungsspannung zu empfangen, welche der einen oder den mehreren Mehrpegelspeicherzellen entspricht, und eine Referenzspannung.
  10. Speichervorrichtung nach Anspruch 6, worin die Mehrpegelspeicherzellen eingerichtet sind, zwei oder mehr Bits zu speichern.
  11. Speichervorrichtung nach Anspruch 6, ferner aufweisend: eine Dekodiereinheit, um die Werte der Schwellspannungen zu erzeugen, um eine Wahrscheinlichkeit zu quantifizieren, dass eine gemessene Schwellspannung einer bestimmten Programmierverteilung der einen oder der mehreren Mehrpegelspeicherzellen angehört.
  12. System, aufweisend: eine Speichervorrichtung, aufweisend: ein Speicherfeld, um Zustände über eine oder mehrere Mehrpegelspeicherzellen hinweg zu speichern, und eine Steuereinheit eingerichtet zum: Kodieren der Zustände gemäß einem Faltungscode, um Symbole bereitzustellen, die die Zustände repräsentieren; Auslesen von weichen Entscheidungen, welche mit den gemessenen Schwellspannungen assoziiert sind, aus den Mehrpegelspeicherzellen; Zugreifen auf Sätze von periodischen Funktionen, wobei jeder Satz mit einer unterschiedlichen Mehrzahl von Programmierverteilungen von gespeicherten Zuständen assoziiert ist, wobei die gespeicherten Zustände, welche mit einer speziellen periodischen Funktion assoziiert sind, in Bezug auf einander periodisch sind; Assoziieren einer weichen Entscheidung mit einem speziellen Satz der periodischen Funktionen; und Auswählen einer Programmierverteilung aus dem speziellen Satz von periodischen Funktionen basierend zumindest teilweise auf einer Berechnung eines wahrscheinlichsten Kodierungspfades, dem zum Kodieren gefolgt worden war, um die gespeicherten Zustände zu bestimmen unter Verwendung von weicher Entscheidung und Faltungsdekodierung; und einen Prozessor, um eine oder mehrere Anwendungen zu bedienen, und um Schreibbefehle und/oder Lesebefehle an die Speichervorrichtungssteuereinheit zu initiieren, zum Bereitstellen von Zugriff auf das Speicherfeld.
  13. System nach Anspruch 12, worin die weiche Entscheidung ein Bestimmen eines wahrscheinlichsten Programmierzustandes unter einer Mehrzahl von Programmierzuständen aufweist, um die gespeicherten Zustände zu bestimmen.
  14. System nach Anspruch 12, ferner aufweisend: eine Messschaltung, um die Schwellspannungen der einen oder der mehreren Mehrpegelspeicherzellen zu bestimmen; und einen Wandler, um die Werte der Schwellspannungen in eine digitale Sequenz von Zahlen zu wandeln, welche die Schwellspannungen der einen oder der mehreren Mehrpegelspeicherzellen anzeigen.
  15. System nach Anspruch 14, worin die Messschaltung einen Spannungskomparator aufweist, der mehrere Eingänge hat, um eine Bitleitungsspannung zu empfangen, welche der einen oder den mehreren Mehrpegelspeicherzellen entspricht, und eine Referenzspannung.
  16. System nach Anspruch 12, worin die Faltungskodierung Viterbi Kodierung umfasst.
  17. System nach Anspruch 12, ferner umfassend: eine Dekodiereinheit, um die Werte der Schwellspannungen zu erzeugen, um eine Wahrscheinlichkeit zu quantifizieren, dass eine gemessene Schwellspannung einer bestimmten Programmierverteilung der einen oder der mehreren Mehrpegelspeicherzellen angehört.
DE102011075966.2A 2010-05-19 2011-05-17 Verbesserter Mehrpegelspeicher Active DE102011075966B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/783,483 2010-05-19
US12/783,483 US8386895B2 (en) 2010-05-19 2010-05-19 Enhanced multilevel memory

Publications (2)

Publication Number Publication Date
DE102011075966A1 DE102011075966A1 (de) 2011-12-29
DE102011075966B4 true DE102011075966B4 (de) 2016-09-01

Family

ID=44973482

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102011075966.2A Active DE102011075966B4 (de) 2010-05-19 2011-05-17 Verbesserter Mehrpegelspeicher

Country Status (6)

Country Link
US (2) US8386895B2 (de)
JP (1) JP5555840B2 (de)
KR (1) KR101409551B1 (de)
CN (1) CN102254571B (de)
DE (1) DE102011075966B4 (de)
TW (1) TWI484497B (de)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8386895B2 (en) * 2010-05-19 2013-02-26 Micron Technology, Inc. Enhanced multilevel memory
US9251873B1 (en) 2010-05-20 2016-02-02 Kandou Labs, S.A. Methods and systems for pin-efficient memory controller interface using vector signaling codes for chip-to-chip communications
US9275720B2 (en) * 2010-12-30 2016-03-01 Kandou Labs, S.A. Differential vector storage for dynamic random access memory
IT1403667B1 (it) * 2011-01-31 2013-10-31 St Microelectronics Srl Dispositivo di memoria con misurazione interna di parametri funzionali
US8780659B2 (en) 2011-05-12 2014-07-15 Micron Technology, Inc. Programming memory cells
US8797805B2 (en) 2011-12-22 2014-08-05 Micron Technology, Inc. Methods and apparatuses for determining threshold voltage shift
US8943386B1 (en) * 2012-02-16 2015-01-27 Sk Hynix Memory Solutions Inc. Generating soft read values which optimize dynamic range
US8737139B2 (en) 2012-04-11 2014-05-27 Micron Technology, Inc. Determining soft data for combinations of memory cells
US9239754B2 (en) * 2012-08-04 2016-01-19 Seagate Technology Llc Single read based soft-decision decoding of non-volatile memory
US8848453B2 (en) 2012-08-31 2014-09-30 Micron Technology, Inc. Inferring threshold voltage distributions associated with memory cells via interpolation
KR102125371B1 (ko) 2012-12-04 2020-06-22 삼성전자주식회사 비휘발성 메모리 장치 및 그것의 동작방법
KR102067611B1 (ko) 2013-03-15 2020-01-20 삼성전자주식회사 메모리 컨트롤러의 동작 방법과 상기 메모리 컨트롤러를 포함하는 장치들
KR102087436B1 (ko) 2013-04-02 2020-04-14 에스케이하이닉스 주식회사 반도체장치 및 반도체시스템
TWI498893B (zh) * 2013-10-31 2015-09-01 Innostor Technology Corp MLC memory write method in multiple environments
US9363114B2 (en) 2014-02-28 2016-06-07 Kandou Labs, S.A. Clock-embedded vector signaling codes
US9373408B2 (en) * 2014-10-07 2016-06-21 SanDisk Technologies, Inc. Highly linear analog-to-digital converter and method for nonvolatile memory
US10379940B2 (en) * 2016-12-08 2019-08-13 Sandisk Technologies Llc Pipeline delay detection during decoding by a data storage device
US10467177B2 (en) 2017-12-08 2019-11-05 Kandou Labs, S.A. High speed memory interface
US10777286B2 (en) 2018-12-28 2020-09-15 Micron Technology, Inc. Apparatus and methods for determining data states of memory cells
US10942889B2 (en) 2019-06-04 2021-03-09 Micron Technology, Inc. Bit string accumulation in memory array periphery
WO2020247077A1 (en) * 2019-06-04 2020-12-10 Micron Technology, Inc. Bit string accumulation in memory array periphery

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070266296A1 (en) * 2006-05-15 2007-11-15 Conley Kevin M Nonvolatile Memory with Convolutional Coding
US7633798B2 (en) * 2007-11-21 2009-12-15 Micron Technology, Inc. M+N bit programming and M+L bit read for M bit memory cells

Family Cites Families (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4058851A (en) 1976-10-18 1977-11-15 Sperry Rand Corporation Conditional bypass of error correction for dual memory access time selection
KR930004862B1 (ko) 1990-12-17 1993-06-09 삼성전자 주식회사 상태 평가량 기억장치
EP0709776B1 (de) 1994-10-31 2000-02-23 STMicroelectronics S.r.l. Fehlernachweis- und Korrekturverfahren in einem mehrstufigen Speicher und Speicher für dieses Verfahren
US6023781A (en) 1996-09-18 2000-02-08 Nippon Steel Corporation Multilevel semiconductor memory, write/read method thereto/therefrom and storage medium storing write/read program
US6857099B1 (en) 1996-09-18 2005-02-15 Nippon Steel Corporation Multilevel semiconductor memory, write/read method thereto/therefrom and storage medium storing write/read program
US5956743A (en) 1997-08-25 1999-09-21 Bit Microsystems, Inc. Transparent management at host interface of flash-memory overhead-bytes using flash-specific DMA having programmable processor-interrupt of high-level operations
FR2769747B1 (fr) 1997-10-15 2001-10-05 Sgs Thomson Microelectronics Perfectionnement aux memoires non volatiles programmables par effet dit "de porteurs chauds" et effacables par effet tunnel
US6279133B1 (en) 1997-12-31 2001-08-21 Kawasaki Steel Corporation Method and apparatus for significantly improving the reliability of multilevel memory architecture
KR100535291B1 (ko) 1998-01-21 2005-12-09 소니 가부시끼 가이샤 엔코딩 방법 및 메모리 장치
JP3308915B2 (ja) 1998-11-11 2002-07-29 エヌイーシーマイクロシステム株式会社 不良救済用メモリセル及びそれを用いた記憶装置
US6871303B2 (en) 1998-12-04 2005-03-22 Qualcomm Incorporated Random-access multi-directional CDMA2000 turbo code interleaver
IL141800A0 (en) 1999-07-06 2002-03-10 Samsung Electronics Co Ltd Rate matching device and method for a data communication system
US20050114587A1 (en) 2003-11-22 2005-05-26 Super Talent Electronics Inc. ExpressCard with On-Card Flash Memory with Shared Flash-Control Bus but Separate Ready Lines
US6487251B1 (en) 1999-08-30 2002-11-26 Hughes Electronics Corporation System and method for performing combined multi-rate convolutional coding
US6175522B1 (en) 1999-09-30 2001-01-16 Advanced Micro Devices, Inc. Read operation scheme for a high-density, low voltage, and superior reliability nand flash memory device
US6628723B1 (en) 1999-10-15 2003-09-30 Cisco Technology Coding rate reduction for turbo codes
US6731538B2 (en) 2000-03-10 2004-05-04 Kabushiki Kaisha Toshiba Semiconductor memory device including page latch circuit
JP2002076915A (ja) 2000-08-31 2002-03-15 Sony Corp インターリーブ装置及びインターリーブ方法、並びに、復号装置及び復号方法
US6591394B2 (en) 2000-12-22 2003-07-08 Matrix Semiconductor, Inc. Three-dimensional memory array and method for storing data bits and ECC bits therein
JP4017177B2 (ja) 2001-02-28 2007-12-05 スパンション エルエルシー メモリ装置
KR100390959B1 (ko) * 2001-06-29 2003-07-12 주식회사 하이닉스반도체 센싱회로를 이용한 멀티레벨 플래시 메모리 프로그램/리드방법
KR100438537B1 (ko) 2001-07-19 2004-07-03 엘지전자 주식회사 이동 통신 단말기에서의 복호 장치 및 그 제어 방법
US6683817B2 (en) 2002-02-21 2004-01-27 Qualcomm, Incorporated Direct memory swapping between NAND flash and SRAM with error correction coding
US6751766B2 (en) * 2002-05-20 2004-06-15 Sandisk Corporation Increasing the effectiveness of error correction codes and operating multi-level memory systems by using information about the quality of the stored data
US7293217B2 (en) 2002-12-16 2007-11-06 Interdigital Technology Corporation Detection, avoidance and/or correction of problematic puncturing patterns in parity bit streams used when implementing turbo codes
US6839870B2 (en) 2003-03-21 2005-01-04 Terayon Communications Systems, Inc. Error-correcting code interleaver
US7467264B2 (en) 2003-06-27 2008-12-16 Hewlett-Packard Development Company, L.P. Methods and apparatuses for determining the state of a memory element
JP3984209B2 (ja) 2003-07-31 2007-10-03 株式会社東芝 半導体記憶装置
JP2005078721A (ja) * 2003-09-01 2005-03-24 Nippon Telegr & Teleph Corp <Ntt> 誤り訂正方法およびメモリ回路
US7389465B2 (en) 2004-01-30 2008-06-17 Micron Technology, Inc. Error detection and correction scheme for a memory device
US7607073B1 (en) 2004-08-04 2009-10-20 Marvell International Ltd. Methods, algorithms, software, circuits, receivers and systems for iteratively decoding a tailbiting convolutional code
WO2006026645A2 (en) 2004-08-30 2006-03-09 Silicon Storage Technology, Inc. Systems and methods for providing nonvolatile memory management in wireless phones
US7061804B2 (en) 2004-11-18 2006-06-13 Qualcomm Incorporated Robust and high-speed memory access with adaptive interface timing
KR100578141B1 (ko) 2004-11-22 2006-05-10 삼성전자주식회사 읽기 속도를 향상시킬 수 있는 낸드 플래시 메모리 장치
KR100915650B1 (ko) 2004-12-28 2009-09-04 인터내셔널 비지네스 머신즈 코포레이션 정보 기록 장치, 그 데이터 흐름 제어기, 및 그 데이터흐름의 제어 방법
US7359279B2 (en) 2005-03-31 2008-04-15 Sandisk 3D Llc Integrated circuit memory array configuration including decoding compatibility with partial implementation of multiple memory layers
US7644338B2 (en) 2005-09-13 2010-01-05 Samsung Electronics Co., Ltd. Method of detecting and correcting a prescribed set of error events based on error detecting code
US8291295B2 (en) 2005-09-26 2012-10-16 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
US7469368B2 (en) 2005-11-29 2008-12-23 Broadcom Corporation Method and system for a non-volatile memory with multiple bits error correction and detection for improving production yield
US7844879B2 (en) * 2006-01-20 2010-11-30 Marvell World Trade Ltd. Method and system for error correction in flash memory
US8055979B2 (en) * 2006-01-20 2011-11-08 Marvell World Trade Ltd. Flash memory with coding and signal processing
US7388781B2 (en) 2006-03-06 2008-06-17 Sandisk Il Ltd. Multi-bit-per-cell flash memory device with non-bijective mapping
WO2007132457A2 (en) * 2006-05-12 2007-11-22 Anobit Technologies Ltd. Combined distortion estimation and error correction coding for memory devices
US7840875B2 (en) 2006-05-15 2010-11-23 Sandisk Corporation Convolutional coding methods for nonvolatile memory
US7836364B1 (en) * 2006-05-30 2010-11-16 Marvell International Ltd. Circuits, architectures, apparatuses, systems, methods, algorithms, software and firmware for using reserved cells to indicate defect positions
US7627803B2 (en) 2006-07-05 2009-12-01 Harris Corporation System and method for variable forward error correction (FEC) protection
US8046660B2 (en) 2006-08-07 2011-10-25 Marvell World Trade Ltd. System and method for correcting errors in non-volatile memory using product codes
US7739576B2 (en) 2006-08-31 2010-06-15 Micron Technology, Inc. Variable strength ECC
TWI360126B (en) * 2006-09-28 2012-03-11 Sandisk Corp Nonvolatile memory with adaptive operations and me
US7805663B2 (en) 2006-09-28 2010-09-28 Sandisk Corporation Methods of adapting operation of nonvolatile memory
JP5177991B2 (ja) * 2006-10-25 2013-04-10 株式会社東芝 不揮発性半導体記憶装置
US7904780B2 (en) 2006-11-03 2011-03-08 Sandisk Corporation Methods of modulating error correction coding
US8151163B2 (en) 2006-12-03 2012-04-03 Anobit Technologies Ltd. Automatic defect management in memory devices
KR100766042B1 (ko) 2006-12-06 2007-10-12 삼성전자주식회사 연접 부호화를 이용한 멀티 레벨 셀 메모리 장치
KR100845529B1 (ko) 2007-01-03 2008-07-10 삼성전자주식회사 플래시 메모리 장치의 이씨씨 제어기 및 그것을 포함한메모리 시스템
KR100842680B1 (ko) 2007-01-08 2008-07-01 삼성전자주식회사 플래시 메모리 장치의 오류 정정 컨트롤러 및 그것을포함하는 메모리 시스템
US8010735B2 (en) 2007-07-31 2011-08-30 Broadcom Corporation Flash memory with millimeter wave host interface and method for use therewith
US7904793B2 (en) * 2007-03-29 2011-03-08 Sandisk Corporation Method for decoding data in non-volatile storage using reliability metrics based on multiple reads
US7975209B2 (en) * 2007-03-31 2011-07-05 Sandisk Technologies Inc. Non-volatile memory with guided simulated annealing error correction control
US7966546B2 (en) * 2007-03-31 2011-06-21 Sandisk Technologies Inc. Non-volatile memory with soft bit data transmission for error correction control
WO2008142683A2 (en) 2007-05-21 2008-11-27 Ramot At Tel Aviv University Ltd. Memory-efficient ldpc decoding
US8065583B2 (en) 2007-07-06 2011-11-22 Micron Technology, Inc. Data storage with an outer block code and a stream-based inner code
US8051358B2 (en) 2007-07-06 2011-11-01 Micron Technology, Inc. Error recovery storage along a nand-flash string
JP5354979B2 (ja) 2007-07-12 2013-11-27 パナソニック株式会社 低密度パリティ検査畳み込み符号(ldpc−cc)符号化器及びldpc−cc復号器
US7860200B2 (en) 2007-10-12 2010-12-28 Harris Corporation Communications system using adaptive filter that is selected based on output power
US8499229B2 (en) 2007-11-21 2013-07-30 Micro Technology, Inc. Method and apparatus for reading data from flash memory
US8046542B2 (en) 2007-11-21 2011-10-25 Micron Technology, Inc. Fault-tolerant non-volatile integrated circuit memory
US8327245B2 (en) 2007-11-21 2012-12-04 Micron Technology, Inc. Memory controller supporting rate-compatible punctured codes
US8335977B2 (en) * 2007-12-05 2012-12-18 Densbits Technologies Ltd. Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated BCH codes and/or designation of “first below” cells
KR101398212B1 (ko) * 2008-03-18 2014-05-26 삼성전자주식회사 메모리 장치 및 인코딩/디코딩 방법
US8051240B2 (en) * 2008-05-09 2011-11-01 Sandisk Technologies Inc. Compensating non-volatile storage using different pass voltages during program-verify and read
US8023334B2 (en) * 2008-10-31 2011-09-20 Micron Technology, Inc. Program window adjust for memory cell signal line delay
US8510628B2 (en) * 2009-11-12 2013-08-13 Micron Technology, Inc. Method and apparatuses for customizable error correction of memory
US8451664B2 (en) 2010-05-12 2013-05-28 Micron Technology, Inc. Determining and using soft data in memory devices and systems
US8386895B2 (en) * 2010-05-19 2013-02-26 Micron Technology, Inc. Enhanced multilevel memory
US8194441B2 (en) 2010-09-23 2012-06-05 Micron Technology, Inc. Phase change memory state determination using threshold edge detection

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070266296A1 (en) * 2006-05-15 2007-11-15 Conley Kevin M Nonvolatile Memory with Convolutional Coding
US7633798B2 (en) * 2007-11-21 2009-12-15 Micron Technology, Inc. M+N bit programming and M+L bit read for M bit memory cells

Also Published As

Publication number Publication date
US8386895B2 (en) 2013-02-26
KR101409551B1 (ko) 2014-07-02
DE102011075966A1 (de) 2011-12-29
JP5555840B2 (ja) 2014-07-23
TWI484497B (zh) 2015-05-11
CN102254571A (zh) 2011-11-23
KR20110127615A (ko) 2011-11-25
US20130242652A1 (en) 2013-09-19
TW201214457A (en) 2012-04-01
CN102254571B (zh) 2015-06-17
JP2011243198A (ja) 2011-12-01
US8700978B2 (en) 2014-04-15
US20110289376A1 (en) 2011-11-24

Similar Documents

Publication Publication Date Title
DE102011075966B4 (de) Verbesserter Mehrpegelspeicher
DE102013107626A1 (de) Speichervorrichtung, Speichersystem und Verfahren zum Steuern einer Lesespannung der Speichervorrichtung
DE102013103391A1 (de) Betriebsverfahren eines Controllers, der eine nichtflüchtige Speichervorrichtung steuert, und Mappingmuster-Auswahlverfahren zum Auswählen eines Mappingmusters, das ein polar codiertes Codewort Multibitdaten einer nichtflüchtigen Speichervorrichtung zuordnet
DE112011101116B4 (de) Two-Level BCH-Codes für Solid-State-Speichereinheiten
DE102014103125A1 (de) Verfahren und Vorrichtung zum Optimieren des Log-Likelihood-Quotienten (LLR), die verwendet werden für eine nichtflüchtige Speichervorrichtung und zum Korrigieren von Fehlern in einer nichtflüchtigen Speichervorrichtung
DE3209679C2 (de)
DE102017104257A1 (de) Auf Zellenstrom basierende Bitleitungsspannung
DE102013109235A1 (de) Flash-Speichersystem mit Detektor für anormale Wortleitung und Verfahren zum Erfassen einer anormalen Wortleitung
DE102015108143A1 (de) Nand-Vorab-Lese-Fehlerkorrektur
DE102013111549B4 (de) Kodierung von Programmdaten basierend auf in zu programmierenden Speicherzellen gespeicherten Daten
DE102004063571A1 (de) System und Verfahren zum Konfigurieren einer Festkörperspeicherungsvorrichtung mit Fehlerkorrekturcodierung
DE3603926A1 (de) Halbleiter-speicherelement
DE102011055714A1 (de) Verfahren zum Programmieren einer nicht-flüchtigen Speichervorrichtung
DE102014100161A1 (de) Speichersystem und Betriebsverfahren davon
DE112014005810B4 (de) anagement der Datenspeicherung in analogen Speicherzellen unter Verwendung einer nicht ganzzahligen Anzahl von Bits pro Zelle
DE102010021516A1 (de) Fehlerkorrekturcodes für erhöhte Speicherkapazität in Mehrpegelspeichereinrichtungen
DE102017103347B4 (de) Verarbeitung von daten in speicherzellen eines speichers
CN101533671A (zh) 非易失性存储装置及其操作方法
DE112016000654T5 (de) Mehrzustands-Programmierung für nichtflüchtigen Speicher
DE102018123887A1 (de) Nichtflüchtiges Speichersystem. das fehlerhafte Blöcke regeneriert
DE102015113414A1 (de) Fehlerkorrektur unter Verwendung von WOM-Codes
DE102010037064A1 (de) Nichtflüchtige Speichervorrichtung und -system sowie Verfahren des Programmierens einer nichtflüchtigen Speichervorrichtung
DE102021106147A1 (de) Leseverstärkerarchitektur für vorgänge mit niedriger versorgungsspannung
DE112019005391T5 (de) Optimierte datenorganisation für neuronale netze
DE102021115914A1 (de) Nichtflüchtiger speicher mit speicherarray zwischen schaltungen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: BARDEHLE PAGENBERG PARTNERSCHAFT PATENTANWAELT, DE

Representative=s name: BARDEHLE PAGENBERG PARTNERSCHAFT MBB PATENTANW, DE

Representative=s name: JOHANNES LANG, 81679 MUENCHEN, DE

Representative=s name: JOHANNES LANG, DE

Representative=s name: LANG, JOHANNES, DIPL.-ING., DE

R082 Change of representative

Representative=s name: BARDEHLE PAGENBERG PARTNERSCHAFT PATENTANWAELT, DE

Representative=s name: BARDEHLE PAGENBERG PARTNERSCHAFT MBB PATENTANW, DE

R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final