-
Die
vorliegende Erfindung bezieht sich im Allgemeinen auf das Gebiet
von Festkörperspeichern,
insbesondere auf Halbleiterspeicher und noch weiter im Besonderen
auf das Gebiet von nicht-flüchtigen
Speichern. Insbesondere bezieht sich die Erfindung auf nicht-flüchtige Speicher,
die elektrisch programmierbar sind.
-
Nicht-flüchtige Speicher
werden gemeinhin in einigen Anwendungen verwendet, wenn die in dem Speicher
gespeicherten Daten sogar bei Nichtvorhandensein einer Energieversorgung
vorgehalten werden müssen.
Innerhalb der Klasse von nicht-flüchtigen Speichern wurden elektrisch
programmierbare (und löschbare)
Speicher, wie zum Beispiel Flash-Speicher, sehr populär in Applikationen,
in welchen die zu speichernden Daten nicht unveränderlich sind (wie es beispielsweise
im Fall eines festen Codes für
einen Mikroprozessor der Fall sein kann), wobei es statt dessen
von Zeit zu Zeit notwendig sein kann, neue Daten zu speichern, oder
die Daten, die bereits gespeichert sind, zu aktualisieren. Beispiele
von solchen Anwendungen beinhalten Speicherkarten des Typs, wie
er beispielsweise in Digitalkameras benutzt wird.
-
Typischerweise
beinhaltet der Speicher eine Anordnung von Speicherzellen, die beispielsweise
in Reihen und Spalten angeordnet sind, um eine Matrix zu bilden.
Abhängig
von der Art und Weise, wie die Speicherzellen in der Matrix verschaltet
sind, kann eine so genannte NAND-Architektur für die Flash-Speicher identifiziert
werden. Grob gesprochen, werden in einer NAND-Architektur Gruppen von
Speicherzellen einer gleichen Matrixspalte seriell verschaltet,
um jeweilige Stränge
zu bilden, wobei die Stränge
dann parallel zueinander mit einer gleichen Bitleitung verschaltet
sind. NAND-Flash-Speicher sind kompakt (es wird eine niedrige Anzahl
von Kontakten in der Matrix benötigt),
und sie sind geeignet für
Applikationen wie zum Beispiel Dateispeicherung.
-
In
der NAND-Architektur wird der Speicherraum idealerweise partitioniert
in eine Mehrzahl von Speicherseiten, wobei jede Seite einer Gruppe
von Speicherzellen entspricht, welche im Betrieb gleichzeitig gelesen
oder geschrieben werden, das heißt, parallel zueinander. Die
Anzahl von Speicherzellen in jeder Gruppe bestimmt die Größe (das
heißt,
die Anzahl von Bits) der Speicherseite. Heutzutage sind Speicherseiten
von 512 Bytes ziemlich typisch, jedoch werden größere Speicherseiten ebenso
angetroffen, zum Beispiel von 2 KBytes.
-
Der
Speicherraum ist weiterhin logisch partitioniert in eine Mehrzahl
von Speicherblöcken
oder Sektoren, wobei jeder Speicherblock eine Mehrzahl von Speicherseiten
beinhaltet, die im Betrieb gleichzeitig gelöscht werden.
-
Vor
der Auslieferung wird jeder NAND-Speicher einer Testphase unterworfen,
in welcher manche betriebsunfähige
Speicherblöcke,
die beispielsweise ungültige
Datenbits enthalten, die nicht reparierbar sind, gefunden werden
können.
Die betriebsunfähigen
oder ungültigen
Speicherblöcke
(in der Fachsprache auch als "schlechte" Blöcke genannt) werden "markiert", um vor dem Gebrauch
lokalisiert zu werden, indem eine Anzahl von Speicherzellen innerhalb
eines jeden schlechten Blocks mit einer vorbestimmten Folge von
Bits programmiert wird.
-
Zusätzlich kann
während
der Lebensdauer der NAND-Speicher (typischerweise von ungefähr zehn
Jahren) ein Prozentsatz der anfänglich
betriebsfähigen
bzw. gültigen
Speicherblöcke
nicht betriebsfähig
bzw. ungültig
werden, nachdem Zyklen von Löschungs-
oder Schreiboperationen durchlaufen wurden (typischerweise garantieren
die Hersteller, dass höchstens
2% der gesamten Anzahl der Speicherblöcke während der erwarteten Lebensdauer
schlecht werden können).
-
Die
schlechten Blöcke
sind zufällig über die NAND-Speicher
verstreut, wobei es notwendig ist, sie derart aufzuzeichnen, dass
sie nicht mehr benutzt werden, das heißt, nicht mehr zum Lesen oder
Programmieren adressiert werden.
-
In
Lösungen,
die im Stand der Technik bekannt sind, muss eine externe Vorrichtung,
von der es erforderlich ist, Betriebsoperationen auf dem NAND-Speicher
durchzuführen,
wie zum Beispiel ein Mikroprozessor oder ein Mikrocontroller, vor ausgehend
den NAND-Speicher "scannen" (überprüfen), um
die schlechten Blöcke
zu lokalisieren. Die externe Vorrichtung muss ein Abbild des NAND-Speichers, insbesondere
der schlechten Blöcke
hinsichtlich der Speicheradressen kreieren, speichern und im Ablauf steuern,
unter Verwendung von beispielsweise einem zusätzlichen nicht-flüchtigen
Speicher, der extern zu dem NAND-Speicher ist. Typischerweise ist der
externe Speicher ein inhaltsadressierbarer Speicher, wobei vor einer
Operation der externe Speicher die an den NAND-Speicher bereitzustellende
Speicheradresse mit dem Abbild vergleicht, das in dem inhaltsadressierbaren
Speicher (Content Addressable Memory, CAM) gespeichert ist; danach
verwirft und ersetzt die externe Vorrichtung ungültige Speicheradressen.
-
Als
eine Folge wird die Handhabung der Betriebsoperationen, die auf
dem NAND-Speicher durchzuführen sind,
in großem
Maße verkompliziert, hauptsächlich da
die Handhabung der schlechten Blöcke
innerhalb des NAND-Speichers für
den externen Benutzer nicht transparent ist.
-
Weiterhin
muss bedacht werden, dass das Auffinden von schlechten Blöcken in
einem NAND-Speicher eine unvermeidbare Reduktion seiner Speicherkapazität impliziert,
was konträr
ist zu dem steigenden Verlangen nach Speichern mit immer größeren Kapazitäten.
-
Angesichts
des Stands der Technik, der oben dargestellt wurde, war eines der
Probleme, denen sich der Anmelder gestellt hat, wie ein NAND-Speicher
bereitgestellt werden kann, der eine einfache Handhabung der schlechten
Blöcke
sicherstellt. Demgemäß stellt
die vorliegende Erfindung bereit eine Handhabung der schlechten
Blöcke,
die zufällig über den
NAND-Speicher verstreut sind, welche soweit als möglich für den Benutzer
transparent ist, wobei dementsprechend für einen Benutzer, welcher den
Speicher von außerhalb
betrachtet, eine "Kontinuität" der Speicherblöcke bereitgestellt
wird.
-
EP-A-O
537 973 offenbart einen elektrisch programmierbaren Speicher gemäß dem Oberbegriff des
Anspruchs 1.
-
Gemäß einem
Aspekt der vorliegenden Erfindung wird ein NAND-Speicher bereitgestellt,
wie im beiliegenden Anspruch 1 ausgeführt.
-
Gemäß einem
weiteren Aspekt der vorliegenden Erfindung wird ein Verfahren zum
Betrieb des NAND-Speichers weiterhin bereitgestellt, wie in dem beiliegenden
Anspruch 10 ausgeführt.
-
Die
Merkmale und die Vorteile der vorliegenden Erfindung werden offenkundig
gemacht durch die folgende Beschreibung einer bevorzugten Ausführungsform
davon, die nur im Wege eines nicht-limitierenden Beispiels vorgesehen
ist, wobei die folgende Beschreibung auf die beiliegenden Figuren sich
bezieht, in welchen:
-
1 eine
detaillierte Blockdarstellung eines NAND-Speichers gemäß einer
Ausführungsform
der vorliegenden Erfindung ist;
-
2 im
Detail die NAND-Architektur einer Anordnung einer Mehrzahl von Flash-Speicherzellen darstellt,
die in dem NAND-Speicher
von 1 enthalten sind;
-
3A ein
NAND-Feld einer Mehrzahl von Flash-Speicherzellen darstellt, die
in dem NAND-Speicher von 1 enthalten sind, die zur Speicherung
von Information über
Speicherblöcke des
NAND-Speichers verwendet werden;
-
3B in
extrem schematischer Form das Speicherzellenfeld von 3A darstellt,
das lokal partitioniert in eine Mehrzahl von Registern ist; und
-
4 ein
Flussdiagramm ist, welches den Betrieb des NAND-Speichers von 1 repräsentiert.
-
Mit
Bezug auf die Zeichnungen ist 1 eine detaillierte
Blockdarstellung eines nicht-flüchtigen Halbleiterspeichers 100 gemäß einer
Ausführungsform
der vorliegenden Erfindung, insbesondere eines elektrisch-programmierbaren,
nichtflüchtigen
Halbleiterspeichers, wie zum Beispiel ein Flash-Speicher. Der Flash-Speicher 100 ist
in einem Chip aus Halbleitermaterial integriert und beinhaltet eine
Anordnung 105 einer Mehrzahl von Speicherzellen mit einer
so genannten NAND-Architektur (im Folgenden detaillierter beschrieben).
-
Der
Flash-Speicher 100 ist mit der Außenwelt über I/O-Anschlüsse gekoppelt,
die mit jeweiligen I/O-Puffern gekoppelt sind, allgemein bezeichnet als
I/O-Inferface I/O; typischerweise wird der Flash-Speicher 100 mit
acht oder sechzehn I/O-Anschlüssen
vorgesehen.
-
Eine
externe Vorrichtung, wie zum Beispiel ein Mikroprozessor (in der
Zeichnung nicht dargestellt) kann mit dem Flash-Speicher 100 über das I/O-Interface
I/O kommunizieren, welches im Betrieb typischerweise mit einem externen
Bus 106 auf beispielsweise einer Leiterplatte verbunden
ist, und kann auf den Speicher 100 zugreifen, um eine Operation
auf der Anordnung 105 von Speicherzellen durchzuführen, beispielsweise
eine Lese-, eine Schreib- oder eine Löschoperation. Über das
I/O-Interface I/O erhält
der Flash-Speicher 100 von dem Mikroprozessor Befehlscodes
entsprechend der auszuführenden
Operation, Speicheradressen zur Auswahl eines gewünschten
Teils der Anordnung 105 von Speicherzellen und Daten, die
in den adressierten Teil der Speicherzellenanordnung 105 zu
schreiben ist. Weiterhin stellt der Flash-Speicher 100 über die
I/O-Schnittstelle I/O an den Mikroprozessor Daten bereit, die von
dem adressierten Teil der Speicherzellenanordnung 105 gelesen
wurden und möglicherweise
Kommunikationscodes, die beispielsweise bezeichnend sind für ein Fehlschlagen
der durch den Mikroprozessor angeforderten Operation.
-
Die
zu schreibenden Daten und die Befehlscodes, die von dem Mikroprozessor
mittels der I/O-Schnittstelle I/O empfangen werden, werden an andere
funktionale Blöcke
des Flash-Speichers 100 über einen Kommunikationsbus 108 bereitgestellt, der
aus einer Anzahl von Signalleitungen besteht, die gleich ist der
Anzahl der I/O-Anschlüsse,
zum Beispiel sechzehn Signalleitungen. Weiterhin wird der Kommunikationsbus 108 durch
den Flash-Speicher 100 dazu verwendet, die gele senen Daten
und die Kommunikationscodes, die an den Mikroprozessor bereitzustellen
sind, zu dem I/O-Interface I/O zu übertragen; in anderen Worten,
ist der Bus 108 bidirektional.
-
Der
Flash-Speicher 100 beinhaltet eine Steuereinheit 110,
die mit dem Kommunikationsbus 108 verbunden ist, welche
den Betrieb des Flash-Speichers 100 handhabt und steuert
und welche insbesondere in der Lage ist, die Befehlscodes, die durch
den Mikroprozessor bereitgestellt werden, zu interpretieren und
das Timing (Zeitsteuerung) des Flash-Speichers 100 zu steuern.
Die Steuereinheit 110 stellt Steuersignale, allgemein bezeichnet
als Sc, an die anderen funktionalen Blöcke des Flash-Speichers 100 bereit.
-
Der
Flash-Speicher 100 weist weiterhin einen Adressbus 112 auf,
der mit der I/O-Schnittstelle I/O
verbunden ist, welcher die Speicheradressen, die von dem Mikroprozessor
empfangen werden, an ein Adressregister 115 überträgt.
-
Die
NAND-Architektur der Speicherzellenanordnung 105 ist mit
Bezug auf 2 beschrieben.
-
Typischerweise
besteht jede Speicherzelle 210 aus einem N-Kanal-MOS-Transistor
mit einem Ladungs-Speicherungselement, wie zum Beispiel einem leitenden
Floating-Gate, das eingerichtet ist, durch injizierte Elektronen
geladen zu werden. Ohne überaus
ins Detail zu gehen, wie es dem Fachmann wohlbekannt ist, hat in
einem gelöschten
Zustand (vereinbarungsgemäß assoziiert
mit einem logischen Wert "1") die Speicherzelle 210 einen
niedrigen Spannungsschwellenwert. Die Speicherzelle 210 wird
durch Injizierung von elektrischen Ladungen in ihr Floating-Gate programmiert:
In dem programmierten Zustand (vereinbarungsgemäß assoziiert mit einem logischen
Wert "0") hat die Speicherzelle 210 einen
hohen Spannungsschwellenwert. Deshalb wird, wenn eine ausgewählte Speicherzelle 210 für das Lesen
ihres Inhalts vorgespannt wird, die Speicherzelle 210 leitend
sein, falls in gelöschtem
Zustand, oder nicht-leitend, falls im programmierten Zustand.
-
Die
Anordnung 105 der Mehrzahl von Speicherzellen 210 besteht
aus einer Matrix mit einer Mehrzahl von Spalten (zum Beispiel 8192
Spalten) und einer Mehrzahl von Reihen (zum Beispiel 2048 Reihen).
-
In
der Speichermatrix 105 sind Gruppen von beispielsweise
acht, sechzehn oder sogar mehr (beispielsweise zweiunddreißig) Speicherzellen 210 in Serie
zueinander geschaltet, um einen jeweiligen Speicherzellenstrang
zu bilden, und verschiedene Speicherzellenstränge, die zu einer gleichen
Matrixspalte gehören,
sind parallel zueinander mit einer gleichen Bitleitung BL verbunden.
-
Die
Speicherzellen 210 eines allgemeinen Strangs sind insbesondere
in Reihe zwischen einen Source-Auswahl-N-Kanal-MOS-Transistor 220s und einen
Drain-Auswahl-N-Kanal-MOS-Transistor 220d geschaltet. Eine
allgemeine zwischenliegende Speicherzelle 210 in dem Speicherzellenstrang
hat einen Drain-Anschluss, der mit dem Source-Anschluss einer benachbarten
Speicherzelle 210 verbunden ist, wobei der Source-Anschluss
mit dem Drain-Anschluss einer anderen benachbarten Speicherzelle 210 verbunden
ist. Eine der zwei End-Speicherzellen 210, die an dem Ende
des Strangs platziert sind, haben einen Drain-Anschluss, der mit
dem Source-Anschluss des Drain-Auswahl-Transistors 220d verbunden
ist; der Drain-Anschluss
des Drain-Auswahl-Transistors 220d ist mit der entsprechenden Bitleitung
BL verbunden sowie mit dem Drain-Anschluss des entsprechenden Drain-Auswahl-Transistors 220d eines
benachbarten Speicherzellenstrangs. In gleicher Weise hat die andere
End-Speicherzelle 210 des Strangs einen Source-Anschluss, der
mit dem Drain-Anschluss des Source-Auswahl-Transistors 220s verbunden
ist; der Source-Anschluss des Source-Auswahl-Transistors 220s ist
mit dem Source-Anschluss des entsprechenden Source-Auswahl-Transistors 220s eines
anderen benachbarten Speicherzellenstrangs verbunden.
-
Die
Steuergate-Anschlüsse
der Speicherzellen 210 in jeder Reihe sind mit einer entsprechenden Wortleitung
WL verbunden. Die Gate-Anschlüsse
der Drain-Auswahl-Transistoren 220d, die zu einer gemeinsamen
Reihe der Speichermatrix 105 gehören, sind alle mit einer entsprechenden
Drain-Auswahlleitung DSL verbunden; in gleicher Weise sind die Gate-Anschlüsse der
Source-Auswahl-Transistoren 220s, die zu einer gemeinsamen
Reihe gehören,
alle mit einer entsprechenden Source-Auswahlleitung SSL verbunden.
Die Drain-Anschlüsse
der Drain-Auswahl- Transistoren 220d,
die zu einer gemeinsamen Spalte der Speichermatrix 105 gehören, sind
mit einer entsprechenden Bitleitung BL verbunden. Umgekehrt sind
die Source-Anschlüsse
von allen den Source-Auswahl-Transistoren 220s in der Speichermatrix 105 mit
einer gemeinsamen Source-Leitung SL verbunden (welche typischerweise
auf einer Referenzspannung oder auf Masse gehalten wird).
-
Die
Speicherzellen 210, die zu der gleichen Reihe gehören, und
die dann mit der gleichen Wortleitung WL verbunden sind, sind logisch
in Speicherseiten partitioniert. Angenommen, dass nur im Wege eines
Beispiels die Matrix 105 8192 Bitleitungen BL beinhaltet,
werden zwei Speicherseiten von 512 Bytes jeweils für jede Wortleitung
WL definiert, wobei eine erste Seite zum Beispiel aus den Speicherzellen 210 an
einer geraden Position besteht, und eine zweite Seite aus den Speicherzellen 210 an
einer ungeraden Position besteht; daher hat, falls, immer noch im
Wege eines Beispiels, die Speichermatrix 105 2048 Wortleitungen
WL beinhaltet, der Flash-Speicher 100 eine Gesamtzahl von
4096 Speicherseiten von jeweils 512 Bytes.
-
Die
Speicherzellen 210 der Matrix 105 sind weiterhin
logisch partitioniert in eine Anzahl K von Speicherblöcken 225_1–225_K.
Jeder allgemeine Speicherblock 225k beinhaltet die gleiche
Anzahl von Spalten der Matrix 105 und eine Anzahl von Reihen
gleich zu der Anzahl von Speicherzellen 210, die in einem
Strang enthalten sind, das heißt,
die Speicherzellen 210, die in Serie zwischen eine Drain-Auswahlleitung DSL
und eine Source-Auswahlleitung SSL geschaltet sind. Wenn im Wege
eines Beispiels angenommen wird, dass jeder Strang 16 Speicherzellen
beinhaltet und dass jede Wortleitung WL mit zwei Speicherseiten
assoziiert ist, beinhaltet jeder Speicherblock 225_k zweiunddreißig Speicherseiten.
Immer noch im Wege eines Beispiels ist, falls die Speichermatrix 105 2048
Wortleitungen WL beinhaltet, die Anzahl K von Speicherblöcken 225_1–225_K gleich 128.
-
Es
wird darauf hingewiesen, dass die Anzahl von Bitleitungen und Wortleitungen
sowie die Größe der Speicherseite
und des Speicherblocks in großem Maße variieren
können,
wobei dies keine Einschränkung
für die
vorliegende Erfindung ist. Insbesondere kann die Anzahl von Speicherseiten,
die mit einer allgemeinen Wortleitung assoziiert sind, höher als
zwei sein, insbesondere Vielfache von zwei, wie zum Beispiel vier,
acht und so weiter.
-
Wieder
Bezug nehmend auf 1, ist die Speichermatrix 105 schematisch
partitioniert in die Anzahl K von Speicherblöcken 225_1–225_K dargestellt.
-
Das
Adressregister 115 wird mit einer Speicheradresse geladen,
die durch den Adressbus 112 bereitgestellt wird zur Auswahl
einer zu lesenden oder zu programmierenden Speicherseite oder eines zu
löschenden
Speicherblocks. In der Speicheradresse können drei Teile unterschieden
werden, das heißt,
ein Teil (Bitleitungsadresse BL_ADD) bezeichnend dafür, welche
Bitleitungen BL auszuwählen sind,
ein Teil (Blockadresse BLK_ADD) bezeichnend dafür, welcher Speicherblock auszuwählen ist,
und ein Teil (Wortleitungsadresse WL_ADD) bezeichnend dafür, welche
Wortleitung innerhalb des Speicherblocks auszuwählen ist.
-
Eine
Speicherseite wird während
eines Lese- oder eines Schreibbetriebs ausgewählt, indem in geeigneter Weise
eine gegebene Wortleitung in Reaktion auf die Wortleitungsadresse
WL_ADD und der Blockadresse BLK_ADD vorgespannt wird, und durch
Auswahl eines Pakets von Bitleitungen BL in Reaktion auf die Bitleitungsadresse
BL_ADD. Zum Beispiel, falls zwei Speicherseiten für jede Wortleitung
existieren, entspricht eine Seite den Speicherzellen in einer geraden
Position, und die andere Seite entspricht den Speicherzellen in
ungerader Position. Das Paket von ausgewählten Bitleitungen BL beinhaltet
alle die Bitleitungen BL in gerader Position oder alle die Bitleitungen
BL in ungerader Position, wobei ein Bit ausreichend ist zur Adressierung
des gewünschten
Pakets von Bitleitungen. Wenn zum Beispiel angenommen wird, dass
der Flash-Speicher 100 4096 Speicherseiten beinhaltet,
sind 12 Bits ausreichend zur Auswahl der gewünschten Speicherseite. Wenn
insbesondere angenommen wird, dass der Flash-Speicher 100 128 Speicherblöcke beinhaltet, von
denen jeder 32 Speicherseiten beinhaltet, besteht die Blockadresse
BLK_ADD aus 7 Bits, die Wortleitungsadresse WL_ADD aus 4 Bits und
die Bitleitungsadresse BL_ADD aus einem Bit.
-
Ein
Speicherblock 225_k wird ausgewählt während einer Löschoperation
durch Auswahl der Mehrzahl der assoziierten Wortleitungen und aller Bitleitungen
BL.
-
Der
Flash-Speicher 100 weist einen Wortleitungs-Vor-Decoder 120 auf,
der die Blockadresse BLK_ADD und die Wortleitungsadresse WL_ADD von
dem Adressregister 115 empfängt. In Reaktion auf das Vor-Decodieren
der Blockadresse BLK_ADD und der Wortleitungsadresse WL_ADD stellt
der Wortleitungs-Vor-Decoder 120 eine vordecodierte Wortleitungsadresse
PRE_WL_ADD bereit.
-
Die
vordecodierte Wortleitungsadresse PRE_WL_ADD wird dann an einen
Wortleitungsdecoder 125r bereitgestellt; Steuersignale,
die durch die Steuereinheit 110 bereitgestellt werden,
sind angepasst anzuzeigen, falls die durchzuführende Operation ein Lesen,
Schreiben oder ein Löschen
ist. Demgemäß wählt der
Wortleitungsdecoder 125r die Drain-Auswahlleitung DSL und
die Source-Auswahlleitung SSL des gewünschten Speicherblocks 225_k aus
und spannt die assoziierten Wortleitungen auf geeignete Spannungen
vor, abhängig
von der durchzuführenden
Operation.
-
Der
Flash-Speicher 100 beinhaltet ebenso einen Spalten-/Block-Multiplexer 130 (im
Folgenden kurz bezeichnet als Spalten-/Block-mux), der die Bitleitungs-
und Blockadressen BL_ADD und BLK_ADD von dem Adressregister 115 empfängt. Der
Spalten-/Block-mux 130 empfängt ebenso ein Steuersignal
von der Steuereinheit 110 und gibt in selektiver Weise
die Bitleitungsadresse BL_ADD oder die Blockadresse BLK_ADD aus
(wie im Folgenden detaillierter beschrieben).
-
Die
Bitleitungsadresse BL_ADD oder die Blockadresse BLK_ADD, ausgewählt durch
den Spalten-/Block-mux 130, wird an einen Bitleitungsdecoder 125c bereitgestellt.
Entsprechend der Decodierung der Adresse, ausgewählt durch den Spalten-/Block-mux 130,
ermöglicht
ein Datenmultiplexer 135 (Daten-mux) Verbindungen zwischen
einem Datenbus 140 des Flash-Speichers 100, bestehend
aus einer Anzahl von Signalleitungen gleich der Anzahl von Signalleitungen
des Kommunikationsbus' 108 (zum
Beispiel sechzehn Signalleitungen), und einem entsprechenden auswählbaren
Teil eines Seitenpuffers 145.
-
Das
Seitenpuffer 145 ist eingerichtet, ein Datenwort (bestehend
aus beispielsweise 512 Bytes) von den Speicherseiten/in die Speicherseiten
der Speichermatrix 105 zu lesen/zu schreiben und wird verwendet
als eine temporäre
Speicherung des Datenworts, das gelesen oder zu schreiben ist während Lese-/Schreib-Operationen
auf der Speichermatrix 105. Der Betrieb des Seitenpuffers 145 wird
im Allgemeinen gehandhabt bzw. gesteuert durch eine logische Seitenpuffersteuereinheit,
schematisiert als ein Block identifiziert mit 147, die
jeweilige Steuersignale von der Steuereinheit 110 empfängt.
-
Der
Datenbus 140 ist mit dem Kommunikationsbus 108 durch
einen R/D-Multiplexer 150 verbunden (im Folgenden kurz
bezeichnet als R/D-mux) zum Empfangen des Datenworts, das in eine
Speicherseite der Speichermatrix 105 zu schreiben ist, oder
zum Übertragen
eines Datenworts, das von einer Speicherseite der Speichermatrix 105 gelesen wurde.
Das Datenwort wird seriell empfangen von, oder übertragen an die I/O-Schnittstelle
I/O in Stücken
von p-Datenbits zur gleichen Zeit, wobei p die Anzahl der I/O-Anschlüsse der
I/O-Schnittstelle I/O ist (zum Beispiel p = 16). Der R/D-mux 150 wird
verwendet, um die empfangenen p- Datenbits sowohl direkt an den
Daten-mux 135 und an eine Fehlerüberprüfungs-/Korrekturschaltung 152 (ECC-Schaltung) bereitzustellen.
Die ECC-Schaltung 152 stellt zum Beispiel ein Paritätsbit bereit,
das verwendet wird zur Fehlerdetektion entsprechend den empfangenen
Datenbits; das Paritätsbit
wiederum ist an den Daten-mux 135 zusammen mit den entsprechenden
Datenbits bereitzustellen. Weiterhin verifiziert, wenn die ECC-Schaltung 152 das
Paritätsbit
zusammen mit den entsprechenden Datenbits empfängt, diese die Richtigkeit
davon und korrigiert einen möglichen
Fehler.
-
Datenleitungen
DL, die mit dem Seitenpuffer 145 verbunden sind, sind selektiv
verbindbar mit den Bitleitungen BL einer ausgewählten Seite, beispielsweise
den Bitleitungen BL in gerader oder ungerader Position, durch einen
Bitleitungsselektor 155. Der Bitleitungsselektor 155 empfängt die
decodierte Bitleitungsadresse von dem Bitleitungsdecoder 125c und selektiert
entsprechend die gewünschten
Bitleitungen, indem sie auf geeignete Spannungen vorgespannt werden.
-
Während einer
Leseoperation wird ein Datenwort, das in der Speicherseite gespeichert
ist, die durch den Wortleitungsdecoder 125c und durch den Bitleitungsselektor 155 ausgewählt wird,
ausgelesen und zwischengespeichert in dem Seitenpuffer 145, dank
der Verbindungen mit den Datenleitungen DL. Nachfolgend wird das
gelesene Datenwort, das temporär
in dem Seitenpuffer 145 gespeichert ist, vollständig oder
teilweise seriell ausgegeben über
den Daten-mux 135 in Blöcken
von p-Bits zur gleichen Zeit, entsprechend der Auswahl, die durch
den Bitleitungsdecoder 125c vorgenommen wurde, auf der Basis
der Bitleitungsadresse BL_ADD, und wird auf den Datenbus 140 transferiert.
Danach verbindet der R/D-mux 150 den
Datenbus 140 mit dem Kommunikationsbus 108, zur
Bereitstellung der ausgewählten p-Bitstücke an das
I/O-Interface I/O.
-
Während einer
Schreiboperation wird das zu schreibende Datenwort von außerhalb
des Flash-Speichers 100 über die I/O-Schnittstelle I/O
in p-Bitstücken
zur gleichen Zeit empfangen, die an den R/D-mux 150 durch
den Kommunikationsbus 108 seriell bereitgestellt werden.
Danach transferiert der R/D-mux 150 die p-Bitstücke auf
den Datenbus 140, wobei das Seitenpuffer 145 folglich
mit Datenbits durch den Daten-mux 135 in einer Sequenz
von Schritten aufgefüllt
wird. Wenn das Seitenpuffer 145 tatsächlich gefüllt wurde, werden die Datenbits,
die auf die Datenleitungen DL transferiert werden, parallel in die
Speicherzellen einer gegebenen ausgewählten Seite geschrieben.
-
In
dieser Weise wird der Daten-mux 135 verwendet zur Anpassung
eines internen Datenparallelismus des Flash-Speichers 100 an
einen externen Datenparallelismus. Dementsprechend überträgt der Daten-mux 135 p-Datenbits
zur gleichen Zeit von dem Seitenpuffer 145 (mit einer Speicherkapazität von beispielsweise
512 Bytes) zu dem Datenbus 140 und umgekehrt; der Daten-mux 135 ist
eingerichtet, aufeinanderfolgend geeignete Teile des Seitenpuffers 145 auszuwählen.
-
Zusätzlich enthält der Flash-Speicher 100 gemäß einer
Ausführungsform
der vorliegenden Erfindung wenigstens einen, vorzugsweise eine Anzahl M
von redundanten Speicherblöcken RED_1–RED_M (zum
Beispiel M = 4), wobei jeder die gleiche Architektur und Größe hat wie
ein allgemeiner Speicherblock 225k. Insbesondere haben
die redundanten Speicherblöcke
RED_1–RED_M
die Bitleitungen BL gemeinsam mit den Speicherblöcken 225_1–225_K,
wobei zusätzliche
Wortleitungen vorgesehen werden zur Auswahl eines allgemeinen redundanten
Speicherblocks RED_m oder einer Speicherseite innerhalb des redundanten
Speicherblocks RED_m. Die redundanten Speicherblöcke RED_1–RED_M werden verwendet an
Stelle der Speicherblöcke 225_1–225_K,
die sich während
einer IC-Testphase vor der Auslieferung oder während der Speicherbetriebslebens dauer
als ungültig
herausstellen (das heißt,
sich als schlechte Blöcke
herausstellen), das heißt,
die nicht erfolgreich gelesen oder geschrieben werden können. Im
Einzelnen, falls ein Speicherblock 225k sich als ungültig herausstellt, kann
er nicht mehr zur Speicherung von Daten verwendet werden, wobei
einer der redundanten Speicherblöcke
RED_1–RED_M
statt dessen verwendet wird.
-
Der
Flash-Speicher 100 beinhaltet weiterhin ein nicht-flüchtiges
Redundanz-Adress-Speicherfeld 185 zur
Speicherung eines Abbilds der schlechten Blöcke und von Informationen über die
redundanten Speicherblöcke
RED_1–RED_M,
die als Ersatz verwendet werden.
-
Das
Redundanz-Adress-Speicherfeld 185 weist eine Anordnung
einer Mehrzahl von Flash-Speicherzellen mit einer NAND-Architektur auf.
Das Redundanz-Adress-Speicherfeld 185 kann als
Bitleitungen die Datenleitungen DL verwenden, die mit dem Seitenpuffer 145 verbunden
sind, in solch einer Weise, dass das Seitenpuffer 145 verwendet
wird zum Lesen/Schreiben ebenso des Redundanz-Adress-Speicherfelds 185.
Vorzugsweise ist das Redundanz-Adress-Speicherfeld 185 nicht
in der Speichermatrix 105 enthalten, separiert durch den Bitleitungsselektor 155.
Auf diese Weise werden während
einer Schreib- oder einer Löschoperation auf
der Speichermatrix 105 die Speicherzellen 210a des
Redundanz-Adress-Speicherfelds 185 nicht entsprechendem
Stress unterzogen, wobei demgemäß eine größere Zuverlässigkeit
sichergestellt wird.
-
Eine
beispielhafte Struktur des Redundanz-Adress-Speicherfelds 185 ist
mit Bezug auf 3A beschrieben. Die Architektur
des Redundanz-Adress-Speicherfelds 185 ist analog zu der
Architektur der Speichermatrix, die mit Bezug auf 2 beschrieben
wurde und kann zum Beispiel einen einzelnen Block von Speicherzellen 210a aufweisen.
Im Einzelnen kann das Redundanz-Adress-Speicherfeld 185 eine
einzelne Drain-Auswahlleitung DSLa, eine einzelne Source-Auswahlleitung
SSLa und eine gemeinsame Source-Leitung SLa aufweisen. Eine Mehrzahl
von Strängen
von Speicherzellen 210a ist zwischen die Drain-Auswahlleitung
DSLa und die Source-Auswahlleitung SSLa geschaltet mittels jeweiliger
Drain-Auswahltransistoren 220da und
Source-Auswahltransistoren 220sa.
-
Jede
Datenleitung DL kann mit zwei jeweiligen Strängen von Speicherzellen 210a parallel
verbunden werden, wobei jeder Strang beispielsweise sechzehn Speicherzellen 210a aufweist,
in der Weise, dass eine Schreiboperation auf dem Redundanz-Adress-Speicherfeld 185 ein
gleiches Datenbit in zwei Speicherzellen 210a zur gleichen
Zeit programmiert. Jede Reihe von Speicherzellen 210a wird gesteuert
durch eine jeweilige Wortleitung WLa. Zum Beispiel kann nur eine
Reihe von Speicherzellen 210a des Redundanz-Adress-Speicherfelds 185 mit der
jeweiligen Wortleitung WLa verwendet werden oder alternativ kann
jede Reihe von Speicherzellen 210a die gleichen Datenbits
speichern, wobei die Wortleitungen WLa zusammengeschaltet sind.
Solch eine Struktur erlaubt vorteilhafterweise, den gleichen Herstellungsprozess
und die gleiche Schaltung zum Lesen/Schreiben sowohl der Speichermatrix 105 als auch
des Redundanz-AdressSpeicherfelds 185 zu verwenden. Jedoch
ist es nicht ausgeschlossen, dass das Redundanz-Adress-Speicherfeld 185 eine unterschiedliche
Architektur hat. Außerdem
führt die beschriebene
Struktur des Redundanz-Adress-Speicherfelds 185 mit zwei
parallel ausgewählten
Speicherzellen auf der jeweiligen Datenleitung DL zu einer besseren
Datenerhaltung und zu einer schnelleren Leseoperation mit Bezug
auf ein Speicherfeld, das eine ausgewählte Speicherzelle für jede Datenleitung
hat.
-
Unter
Betrachtung von 3B ist das Redundanz-Adress-Speicherfeld 185,
das in dem Flash-Speicher gemäß der vorliegenden
Erfindung enthalten ist, extrem schematisch und logisch partitioniert
in eine Anzahl K von Matrixspeicherregistern REG_1–REG_K plus
einem Redundanzspeicherregister REG_M dargestellt. Das allgemeine
Matrixspeicherregister REG_k ist assoziiert mit einem jeweiligen
Speicherblock 225_k, während
das Redundanzspeicherregister REG_M assoziiert ist mit den redundanten
Speicherblöcken
RED_1–RED_M.
-
Das
allgemeine Matrixspeicherregister REG_k wird verwendet zur Speicherung
eines Flag-Bits AR, das einen niedrigen logischen Wert "0" annimmt, falls der assoziierte Speicherblock 225 ein schlechter
Block ist und einen hohen logischen Wert "1" annimmt,
wenn der assoziierte Speicherblock 225_k ein "guter" (das heißt, ein
funktionierender) Block ist.
-
Falls
der assoziierte Speicherblock 225_k ein schlechter Block
ist, speichert das Matrixspeicherregister REG_k außerdem eine
Redundanzadresse in einem Redundanzadressfeld RED_ADD, welches den
redundanten Speicherblock RED_m auswählt, der zum Ersatz verwendet
wird. Falls der assoziierte Speicherblock 225_k ein "guter" Block ist, ist die
gespeicherte Information in dem Redundanzadressfeld RED_ADD des
Matrixspeicherregisters REG_k nicht relevant.
-
Zusätzlich speichert
das Matrixspeicherregister REG_k vorzugsweise ein Paritätsbit Np
entsprechend dem Inhalt des Redundanzadressfelds RED_ADD.
-
Das
Redundanzspeicherregister REG_M wird verwendet zur Speicherung von
Information über
die redundanten Speicherblöcke RED_1–RED_M.
Insbesondere speichert das Redundanzspeicherregister REG_M einen
String NSR von M-Flag-Bits
F1–FM
plus einem Paritätsbit
Mp entsprechend dem String NSR. Jedes Flag-Bit F1–FM des
Strings NSR wird assoziiert mit einem jeweiligen redundanten Speicherblock RED_1–RED_M;
zum Beispiel wird das niedrigstwertige Flag-Bit F1 des Strings NSR assoziiert mit
dem redundanten Speicherblock RED_1, das nächstfolgende Flag-Bit F2 mit
dem redundanten Speicherblock RED_2 und so weiter. Das höchstwertige
Bit FM wird assoziiert mit dem redundanten Speicherblock RED_M.
Jedes Flag-Bit F1–FM
des Strings NSR nimmt einen niedrigen logischen Wert "0" an, wenn der assoziierte redundante
Speicherblock RED_m an Stelle eines der Speicherblöcke 225_1–225_k verwendet
wird, wohingegen es einen hohen logischen Wert "1" annimmt,
wenn der redundante Speicherblock RED m noch immer unbenutzt ist.
-
Noch
immer Bezug nehmend auf 1 ist der Flash-Speicher 100 dargestellt
in der Weise, dass er eine Feldauswahleinrichtung 190 beinhaltet zur
Auswahl der Matrixspeicherregister REG_1–REG_K und des Redundanzspeicherregisters
FEG_M.
-
Im
Einzelnen werden vor einer Lese-, Schreib- oder Löschoperation
die Matrixspeicherregister REG_1–REG_K und das Redundanzspeicherregister
REG_M automatisch mittels der Feldauswahleinrichtung 190 ausgewählt, gesteuert
durch die Steuereinheit 110, wobei der Inhalt aller dieser
Register in das Seitenpuffer 145 geladen wird. Danach werden über den
Daten-mux 135 der Inhalt des Redundanzadressfelds RED_ADD
von einem der Matrixspeicherregister REG_1–REG_K plus das jeweilige Paritäts-Bit Np
und das Flag-Bit AR an die ECC-Schaltung 152 bereitgestellt,
gemäß der Auswahl,
die durch den Bitleitungsdecoder 125c ausgeführt wird,
auf der Basis der Blockadresse BLK_ADD. Der Inhalt des Redundanzadressfelds
RED_ADD und das Flag-Bit AR, möglicherweise
korrigiert durch die ECC-Schaltung 152, werden dann an
den Wortleitungs-Vor-Decoder 120 übertragen.
-
Falls
das Flag-Bit AR den hohen logischen Wert "1" annimmt
(das heißt,
wenn der adressierte Speicherblock 225_k "gut" ist), stellt der
Wortleitungs-Vor-Decoder 120 die vorcodierte Wortleitungsadresse
PRE_WL_ADD an den Wortleitungsdecoder 125r bereit. Auf
der anderen Seite, falls das Flag-Bit AR den niedrigen logischen
Wert "0" annimmt (das heißt, wenn
der adressierte Speicherblock 225k ein schlechter Block
ist), empfängt
der Wortleitungs-Vor-Decoder 120 die Redundanzadresse RED_ADD
und stellt eine vorcodierte Redundanzadresse PRE_RE_ADD in Reaktion
auf die Wortleitungsadresse WL_ADD und auf die Redundanzadresse
RED_ADD bereit.
-
Falls
das Flag-Bit AR den niedrigen logischen Wert "0" annimmt,
wird die vorcodierte Redundanzadresse PRE_RED_ADD an einen redundanten Wortleitungsdecoder 195 bereitgestellt,
welcher die Wortleitung(en) des entsprechenden redundanten Speicherblocks
RED_1–RE_M
auswählt.
-
Im
Folgenden werden die Lese-, Schreib- und Löschoperationen, die auf dem
Flash-Speicher 100 ausgeführt werden, mit Bezug auf das
Flussdiagramm von 4 in Verbindung mit 1 und 3B beschrieben.
-
Eine
durchzuführende
Operation auf dem Flash-Speicher 100 beginnt bei 403.
Bei 406 stellt über
den externen Bus 106, der mit der I/O-Schnittstelle I/O
verbunden ist, der externe Mikroprozessor an den Flash-Speicher 100 eine
Adresse entsprechend der gewünschten
Speicherseite der Speichermatrix 105 bereit, die zu lesen
oder zu schreiben ist, oder entsprechend einer Speicherseite in
einem gewünsch ten
Speicherblock, der zu löschen
ist. Die Adresse wird in das Adressregister 115 über den Adressbus 112 geladen.
-
Bei 409 wird
das Redundanz-Adress-Speicherfeld 185 automatisch mittels
der Feldauswahleinrichtung 190 ausgewählt, und sein Inhalt wird auf die
Datenleitungen DL transferiert. Das Seitenpuffer 145 liest
aus und zwsichenspeichert den Inhalt des gesamten Redundanz-Adress-Speicherfelds 185.
-
Danach
stellt der Spalten-/Block-mux 130 die Blockadresse BLK_ADD
(entsprechend dem gewünschten
adressierten Speicherblock 225_k) an den Bitleitungsdecoder 125c bereit,
wobei die decodierte Blockadresse an den Daten-mux 135 bereitgestellt
wird. Der Daten-mux 135 wählt den entsprechenden Teil
des Seitenpuffers 145, das den Inhalt des Matrixspeicherregisters
REG_k speichert (assoziiert mit dem gewünschten adressierten Speicherblock 225k),
aus, und transferiert bei 412 das benötigte Flag-Bit AR und den Inhalt
des Redundanz-Adressfelds RED_ADD auf den Datenbus 140. Das
Flag-Bit AR und der Inhalt des Redundanz-Adressfelds RED_ADD werden dann an den Wortleitungs-Vordecoder 120 bereitgestellt,
nachdem es durch die ECC-Schaltung 152 verifiziert und möglicherweise
korrigiert wurde.
-
Nachfolgend
deselektiert die Feldauswahleinrichtung 190 das Redundanz-Adressspeicherfeld 185,
und der Spalten-/Block-mux 130 stellt die Bitleitungsadresse
BL_ADD an den Bitleitungsdecoder 125c breit. Der Bitleitungsselektor 155 selektiert
die Bitleitungen BL in gerader oder ungerader Position, gemäß der decodierten
Bitleitungsadresse.
-
Falls
das Flag-Bit AR den logischen Wert "1" annimmt
(das heißt,
falls der adressierte Speicherblock 225_k "gut" ist), wird die Wortleitungsadresse WL_ADD
zusammen mit der Blockadresse BLK_ADD vorcodiert. Die vorcodierte
Wortleitungsadresse PRE_WLADD wird an den Wortleitungsdecoder 125r zur
Auswahl der gewünschten
Wortleitung innerhalb des entsprechenden Speicherblocks 225k (415)
bereitgestellt.
-
Falls
das Flag-Bit AR statt dessen den logischen Wert "0" annimmt
(das heißt,
falls der ausgewählte
Speicherblock 225_k "schlecht" ist), wird die Wortleitungsadresse
WL_ADD zusammen mit dem Inhalt des Redundanz-Adressfelds RED_ADD
des ausgewählten
Registers REG_k vorcodiert. Danach wird die vorcodierte Redundanzadresse PRE_RED_ADD
an den Redundanzdecoder 195 bereitgestellt zur Auswahl
der gewünschten
Wortleitung innerhalb des redundanten Blocks RED_m, der an Stelle
des schlechten Speicherblocks 225_k verwendet wird (418).
-
An 421 stellt
der Mikroprozessor weiterhin einen Befehlscode, das heißt, einen
Lese-, Schreib- oder Löschbefehlscode
bereit, empfangen über
den Kommunikationsbus 108 durch die Steuereinheit 110,
welche wiederum die entsprechenden Steuersignale Sc an die anderen
funktionalen Blöcke
des Flash-Speichers 100 bereitstellt. Die Reihenfolge,
in welcher die Adresse und der Befehlscode durch den Flash-Speicher 100 empfangen
werden, ist nicht bedeutend und hängt insbesondere von dem Kommunikationsprotokoll
zwischen dem Flash-Speicher 100 und dem externen Mikroprozessor
ab.
-
Es
wird angenommen, dass eine Leseoperation auf dem Flash-Speicher 100 durchgeführt werden
muss. Das Datenwort, das in der ausgewählten Speicherseite der Speichermatrix 105 gespeichert ist,
wird auf die Datenleitungen DL transferiert, und es wird ausgelesen
und zwischengespeichert in dem Seitenpuffer 145 (424).
Der Daten-mux 135 transferiert das gelesene Datenwort auf
den Datenbus 140 in Stücken
von p-Datenbits zur gleichen Zeit. Danach werden die Datenbitstücke durch
den R/D-mux 150 und den Kommunikationsbus 108 an
die I/O-Schnittstelle
I/O bereitgestellt, um seriell ausgegeben zu werden (427).
-
Unter
der Annahme, dass eine Schreiboperation durchgeführt werden muss, stellt der
externe Mikroprozessor weiterhin an den Flash-Speicher 100 ein
Datenwort (beispielsweise von 512 Bytes) bereit, das in die ausgewählte Speicherseite
zu schreiben ist (430). Das Datenwort wird an den Daten-mux 135 in Datenbitstücken über die
I/O-Schnittstelle I/O, den Kommunikationsbus 108 und den
Datenbus 140 bereitgestellt. Der Daten-mux 135 lädt das zu
schreibende Datenwort in das Seitenpuffer 145 in einer Mehrzahl
von Schritten.
-
Der
Bitleitungsselektor 155 selektiert das Paket von Bitleitungen
BL in gerader oder ungerader Position gemäß der Bitleitungsadresse BL_ADD
(wie oben beschrieben); danach transferiert das Seitenpuffer 145 jedes
Datenbit auf die jeweilige Datenleitung DL. An 433 wird
die Wortleitung WL, die assoziiert ist mit der zu schreibenden Speicherseite,
durch den Wortleitungsdecoder 125r oder durch den redundanten
Decoder 195 ausgewählt,
welche die geeignete Spannung zur Proarammierung der ausgewählten Speicherseite
in dem Speicherblock 225k oder in einem der redundanten
Speicherblöcke RED_1–RED_M entsprechend
anlegen, wobei das Redundanz-Adress-Speicherfeld 185 deselektiert bleibt.
-
In
einer Löschoperation
(436) selektiert der Bitleitungsselektor 155 alle
die Bitleitungen BL, und der Wortleitungsdecoder 125r bringt
alle die Wortleitungen des ausgewählten Speicherblocks 225_k, oder
der redundante Decoder 195 bringt alle die Wortleitungen
des ausgewählten
redundanten Blocks RED m auf eine geeignete Spannung.
-
Typischerweise
folgt nach einer Schreib- oder Löschoperation
auf einem ausgewählten Speicherblock 225_k bei 439 eine
Verifizierungsphase (Programmierungsverifizierung oder Löschverifizierung).
Falls die Verifizierungsphase den Erfolg der Schreib- oder Löschoperation
anzeigt, endet die Operation bei 454.
-
In
dem Fall, dass sich in der Verifizierungsphase ein Fehler in dem
Speicherblock 225k herausstellt (beispielsweise sind eine
oder mehrere Speicherzellen nicht korrekt programmiert oder nicht
gelöscht),
darf dieser Speicherblock nicht weiter benutzt werden und muss dementsprechend
als ein schlechter Block "markiert" werden. Zusätzlich muss gemäß einer
Ausführungsform
der vorliegenden Erfindung einer der redundanten Blöcke RED_1–RED_M,
die noch nicht verwendet werden, mit dem schlechten Speicherblock 225k assoziiert werden
und an Stelle dessen verwendet werden.
-
Zu
diesem Zweck stellt bei 442 die Steuereinheit 110 des
Flash-Speichers 100 einen Verifizierungsfehlercode an den
Mikroprozessor bereit über den
Kommunikationsbus 108 und die I/O-Schnittstelle I/O.
-
Dementsprechend
fordert der Mikroprozessor an, den schlechten Speicherblock 225k mit
einem der redundanten Blöcke
RED_1–RED_M
zu setzen, indem ein entsprechender Befehlscode an den Flash-Speicher 100 bereitgestellt
wird. In Reaktion auf den empfangenen Befehlscode selektiert die Feldauswahleinrichtung 190 das
Redundanz-Adress-Speicherfeld 185 und das Seitenpuffer 145,
liest aus und zwischenspeichert den gesamten Inhalt daraus (445).
Der Daten-mux 135 transferiert den Inhalt des Redundanzspeicherregisters
REG_M auf den Datenbus 140 zur Bereitstellung an die ECC-Schaltung 152,
welche möglicherweise
den gelesenen Inhalt korrigiert. Danach wird der Inhalt des Redundanzspeicherregisters
REG_M an die Steuereinheit 110 zur Aktualisierung bereitgestellt.
-
Die
Steuereinheit 110 decodiert bei 448 den String
NSR von Flag-Bits und stellt eine Redundanzadresse entsprechend
einem der redundanten Blöcke
REG_1–REG_M,
die noch nicht verwendet werden, bereit; diese Redundanzadresse
muss in das Redundanzadressfeld RED_ADD des Matrixspeicherregisters
REG_k geschrieben werden, das mit dem schlechten Speicherblock 225_k assoziiert
ist. Zum Beispiel wird angenommen, dass die redundanten Blöcke RED_1–RED_M Redundanzadressen
haben, die den Adressen der Speicherblöcke 225_1–225_K nachfolgen.
Die Steuereinheit 110 kann die Redundanzadresse berechnen,
indem eine erste Redundanzadresse eines ersten redundanten Blocks
RED 1 nach den Speicherblöcken 225_1–225_K bekannt
ist; im Einzelnen inkrementiert die Steuereinheit 110 die
erste Redundanzadresse abhängig
von der Position eines Flag-Bits Fm in dem String NSR, das als nicht
gleich "0" befunden wurde.
Danach modifiziert die Steuereinheit 110 den empfangenen
String NSR, indem das Flag-Bit
Fm entsprechend dem assoziierten redundanten Block RED_m gleich
dem logischen Wert "0" gemacht wird.
-
Die
Steuereinheit 110 empfängt
weiterhin den Inhalt des Matrixspeicherregisters REG_k und bringt
das Flag-Bit AR auf den logischen Wert "0" und macht
den Inhalt des Redundanzadressfelds RED_ADD gleich der berechneten
Redundanzadresse des redundanten Blocks RED_m.
-
Die
Steuereinheit 110 stellt den aktualisierten Inhalt des
Matrixspeicherregisters REG_k und des redundanten Blocks RED m an
die ECC-Schaltung 152 zu Berech nung der entsprechenden
Paritätsbits
Np und Mp und zur Bereitstellung derselben an den Daten-mux 135 und
an das Seitenpuffer 145 bereit.
-
Wenn
bei 451 der gesamte aktualisierte Inhalt des Redundanz-Adress-Speicherfelds 185 in das
Seitenpuffer 145 zwischengespeichert wird, wird das Redundanz-Adress-Speicherfeld 185 ausgewählt (während der
Bitleitungsselektor 155 weiter die Bitleitungen BL deselektiert
hält) und
entsprechend den Datenbits, die auf den Datenleitungen DL transferiert
werden, programmiert.
-
Schließlich kann
der Mikroprozessor wiederum die Schreib- oder Löschoperation versuchen, indem
der gewünschte
Speicherblock 225_k adressiert wird; in Reaktion auf die
Adresse des schlechten Speicherblocks 225k adressiert der
Flash-Speicher 100 automatisch
den assoziierten redundanten Block RED m in einer Weise, die für den Mikroprozessor insgesamt
transparent ist, wie oben beschrieben.
-
Alternativ
kann das Redundanz-Adress-Speicherfeld 185 nicht nur den
String NSR von Flag-Bits speichern, die anzeigen, welche redundanten
Blöcke
RED_1–RED_M
bereits verwendet wurden, sondern zusätzlich die entsprechenden Redundanzadressen.
Auf diese Weise, wenn die Steuereinheit 110 ein Flag-Bit
Fm gleich "1" decodiert, empfängt sie
außerdem
die benötigte
Redundanzadresse, die in das Matrixspeicherregister REG_k zu programmieren
ist.
-
Dank
dem NAND-Speicher gemäß der vorliegenden
Erfindung wird die Handhabung der durchzuführenden Operationen in großem Maße vereinfacht,
da die Handhabung der schlechten Blöcke in dem NAND-Speicher intern
ist. Die Abbildung der schlechten Blöcke wird innerhalb des NAND-Speichers
gespeichert und wird automatisch durch den NAND-Speicher gelesen,
bevor eine Operation ausgeführt
wird. Falls der adressierte Speicherblock als ein schlechter Block
erkannt wird, adressiert der NAND-Speicher automatisch den assoziierten
redundanten Block in einer Weise, die für den Benutzer insgesamt transparent
ist, wobei dadurch "Kontinuität" für die Speicherblöcke bereitgestellt
wird, da der NAND-Speicher die zufällig verstreuten schlechten Blöcke vor
dem Mikroprozessor "versteckt". Der Benutzer schreitet
erst ein, nachdem ein Fehler einer Schreib- oder Löschoperation
aufgetreten ist, jedoch tritt dies typischerweise nur zu einem kleinen
Prozentsatz von Speicherblöcken
auf.
-
Außerdem wird
durch Vorsehen einer ausreichenden Anzahl von Speicherblöcken der NAND-Speicher
nicht einer Reduktion seiner Speicherkapazität unterworfen, wenn schlechte
Blöcke während der
Betriebslebensdauer gefunden werden.
-
Es
muss betrachtet werden, dass außerdem das
Fehlschlagen einer Lösch-
oder einer Schreiboperation vollständig innerhalb des Flash-Speichers gehandhabt
werden kann. Tatsächlich
kann nach dem Fehler der Mikroprozessor nicht durch den Fehlercode
informiert werden, und der Flash-Speicher könnte automatisch einen schlechten
Block mit einem redundanten Block ersetzen. Auf diese Weise können Operationen,
die zu der funktionalen Ersetzung eines schlechten Blocks durch
einen redundanten Block führen,
vollständig
intern gehandhabt werden, ohne die Interaktion mit dem externen
Mikroprozessor.
-
Außerdem sollte
herausgestellt werden, dass die gefundene Lösung für das Erhalten der oben genannten
Vorteile nicht die Leistungsfähigkeit des
Flash-Speichers gemäß der Ausführungsform der
vorliegenden Erfindung beeinflusst und hat insbesondere keinen Einfluss
auf die Betriebsgeschwindigkeit.
-
Obwohl
in der vorhergehenden Beschreibung Bezug gemacht wurde auf ein Seitenpuffer
mit einer Speicherkapazität
gleich der Datenkapazität
einer Speicherseite, kann das Seitenpuffer eine größere Größe haben.
Die Speicherseiten können
außerdem
einen Reservebereich beinhalten, der beispielsweise verwendet wird
zur Speicherung von Paritätsbits
entsprechend dem gespeicherten Datenwort, wobei dementsprechend
der Flash-Speicher eine weitere ECC-Schaltung zur Verifizierung
der Richtigkeit eines Datenworts enthalten kann, das aus einer Speicherseite
gelesen wurde oder in eine Speicherseite zu schreiben ist. Jedoch
kann die gleiche ECC-Schaltung, die für das Redundanz-Adress-Speicherfeld
verwendet wurde, ebenso für
die Datenworte verwendet werden.
-
Obwohl
die vorliegende Erfindung im Wege einer Ausführungsform offenbart und beschrieben wurde,
ist es für
den Fachmann offensichtlich, dass einige Modifika tionen der beschriebenen
Ausführungsform
sowie andere Ausführungsformen
der vorliegenden Erfindung möglich
sind, ohne von dem Schutzbereich abzuweichen, wie in den beiliegenden Ansprüchen definiert.