-
Die
vorliegende Erfindung bezieht sich auf eine nichtflüchtige Speichervorrichtung
sowie auf ein Eigen-Redundanzverfahren bei dieser.
-
Wie
bekannt ist, sind Redundanz-Strukturen zum Ersetzen von fehlerhaften
Speicherstellen vorgesehen, um dadurch eine Ausschusssituation der gesamten
Speichervorrichtung zu verhindern.
-
Normalerweise
erfolgt das Ersetzen einer fehlerhaften Speicherstelle durch eine
Redundanz-Einrichtung in den abschließenden Produktionsschritten,
wenn ein spezieller Test, der als elektrischer Wafersortiertest
(EWS) bezeichnet wird, einen Defekt feststellt.
-
Die
Konstruktion, die üblicherweise
zum Speichern der Adressen von redundanten oder ersetzten Speicherstellen
verwendet wird, ist in erster Linie gebildet aus CAM-Anordnungen,
d. h., nichtflüchtigen
Speichereinheiten, die durch den Hersteller in dem Testvorgang programmiert
und gelöscht werden
können.
Insbesondere wird bei Feststellung eines Defekts an einer Speicherstelle
in den CAMs Information gespeichert, die dafür gedacht ist, die zu ersetzende
Speicherstelle in eindeutiger Weise zu bestimmen.
-
Die
in den CAMs gespeicherte Information kann unterschiedlicher Art
sein: Die Adressen der zu reparierenden Stelle, ob und welches Bit-Paket
des adressierten Worts zu ersetzen ist, ob ein gesamter Sektor zu
ersetzen ist, ob die Anordnung bereits zum Speichern einer Adresse
einer fehlerhaften Stelle verwendet worden ist oder nicht (Schutzinformation), usw.
-
Die
Anzahl der Anordnungen, die bei der Redundanz-Struktur verwendet
werden, definiert die maximale Anzahl von Paketen (Spalten, Bytes,
Reihen, Sektoren – die
im Folgenden auch als Speichereinheiten oder Speicherstellen bezeichnet
werden), die in der gesamten Speicheranordnung ausgetauscht werden
können.
-
Wenn
nun die Stelle ersetzt worden ist, ist es notwendig, eine Anzahl
von Vorgängen
zum Identifizieren der Stelle auszuführen, die die Information anstelle
der fehlerhaften Speicherstelle speichert.
-
Die
Prüfung
und ein möglicher
Redundanz-Austausch erfolgen für
jeden beliebigen Vorgang, und zwar Lesen oder Schreiben, der an
der fehlerhaften Stelle ausgeführt
werden soll, und zwar wenn ein Adressieren der Stelle erforderlich
ist.
-
Die
Struktur zum Handhaben von Redundanz hat die Funktion einer Verifizierung,
ob sich die zeitlich adressierte Stelle unter den ersetzten Stellen befindet,
und wenn dies der Fall ist, für
eine Aktivierung der Redundanz-Stellen sowie eine gleichzeitige Deaktivierung
des Decodiervorgangs der Speicheranordnung entsprechend der fehlerhaften
Stelle zu sorgen.
-
Im
Spezielleren wird die Adresse der Stelle, die gelesen oder geschrieben
werden soll (Programmieren oder Löschen), mit den Adressen der
ersetzten Stellen während
der Testschritte verglichen, und im Fall einer Übereinstimmung mit einer von
diesen wird ein "Treffersignal" erzeugt, das die
Aufgabe hat, die Redundanz-Schaltungseinrichtungen
zu aktivieren und die fehlerhafte Stelle zu ersetzen (ob es sich nun
um ein Bit, ein Byte, ein Wort oder einen Sektor handelt), indem
in körperlicher
Weise auf die Redundanz-Einheit gezeigt wird.
-
In
der nachfolgenden Beschreibung beschränkt sich die Erörterung
auf den Fall einer Sektor-Redundanz. Die nachfolgenden Betrachtungen sind
jedoch ebenso für
andere Arten von Redundanz anwendbar, wie zum Beispiel für Spalten-Redundanz.
-
In
der Literatur ist die Sektor-Redundanz komplementär zu der
Spalten-Redundanz und gegenüber
der Reihen-Redundanz für
Speichervorrichtungen mit hoher Dichte bevorzugt (d. h., mit einer Dichte
von größer oder
gleich 16 Megabits). Ferner ist die Sektor-Redundanz im Hinblick
auf die Fläche, die
Geschwindigkeit und die Leistungsfähigkeit des Speichers während der
Lesevorgänge
bevorzugt, wobei sie letztendlich auch wegen einer höheren Flexibilität beim Lösen von
ernst haften Problemen bevorzugt ist, die in der Anordnung entstehen
können, wie
zum Beispiel Kurzschlüssen
zwischen Wortleitungen und Substrat.
-
Derzeit
fasst die übliche
Sektor-Redundanz eine Mehrzahl von Redundanz-Einheiten ins Auge, die
im Hinblick auf Flächeneffizienz
und Ausbeute als Redundanz-Einheit (Redundanz-Sektor) für jedes Vielfache
von 16 Megabits ausgedrückt
werden können.
Jede Redundanz-Einheit ist daher einer CAM-Anordnung zugeordnet,
die eine Mehrzahl von nichtflüchtigen
Zellen aufweist, die gleich der Anzahl von Bits der Adresse sind,
die zum Identifizieren jedes Sektors der Speicheranordnung erforderlich
ist. Jede CAM-Anordnung identifiziert somit einen fehlerhaften Sektor.
-
Ferner
ist ein weiteres nichtflüchtiges
Speicherelement, das als Schutz-CAM-Element bezeichnet wird, jeder
Redundanz-Einheit zugeordnet und zum Speichern von Schutzinformation
vorgesehen, die spezifiziert, ob die zugeordnete Redundanz-Einheit
benutzt worden ist oder nicht.
-
Während des
Lesens oder Programmierens der Zellen der Speicheranordnung führt der
Vergleich zwischen den Adressen, die von außen durch den Benutzer zugeführt werden,
sowie den in den CAMs gespeicherten Adressen bei Vorhandensein der
aktivierten Schutzinformation zur Entstehung des vorstehend genannten "Treffersignals".
-
Bei
derzeitigen Speicherarchitekturen wird der Inhalt der CAMs, die
in der vorstehend genannten Weise während des EWS-Testschrittes
programmiert werden, in kontinuierlicher Weise über die Lebensdauer der Vorrichtung
gelesen, und zwar unter Verwendung einer Struktur, deren Zellen
durch den Drain-Anschluss direkt mit Zwischenspeichern verbunden
sind, die den Inhalt der in den CAMs vorhandenen Information Puffern.
-
Die
Programmierung erfolgt unter Verwendung der gleichen Schalterstruktur
(den so genannten "Programmladern" [program loads],
die in der Anordnung vorhanden ist, und zwar unter Sperren der Anordnungs-Decodierschaltungen,
Freigabe der Redundanz-Schaltungen und Veranlassen einer Bewegung
des Bezugselements (Drain-Spannung) entlang der Bitleitungen (Haupt-Bitleitung
im Fall einer hierarchischen Architektur), die in der Speicheranordnung
vorhanden sind.
-
Beispiele
für Architekturen
und Verfahren zum Ersetzen von fehlerhaften Zellen während eines EWS-Tests
oder anderer Tests durch standardmäßige Sicherungselemente sind
zum Beispiel in der
EP 0 805
451 , der
US 6 363 020 ,
der
US 5 668 818 und der
EP 0 867 810 offenbart.
-
Die
EP 1 107 121 lehrt eine
nichtflüchtige Speichervorrichtung
mit den Merkmalen des Oberbegriffs des Anspruchs 1, wobei diese
ein Testverfahren zum Beurteilen der Gültigkeit von zu Beginn vorgegebenen
Daten beinhaltet, und zwar einschließlich von Adressen von fehlerhaften
Zellen.
-
Die
genannte Architektur ermöglicht
keine einfache Aktivierung und Handhabung der Redundanz zum Adressieren
der nichtflüchtigen
Zellen während
eines normalen Betriebs der Vorrichtung unter Verwendung eines automatischen
Austauschalgorithmus, der bereits in der Vorrichtung vorhandene
Strukturen und Schaltungen nutzt.
-
Das
Ziel der vorliegenden Erfindung besteht somit in der Schaffung einer
Speichervorrichtung und eines Verfahrens, die eine Aktivierung und
Handhabung von Redundanz während
eines normalen Betriebs ermöglichen,
und zwar unter Nutzung der bereits in der Anordnung vorhandenen
Schaltungen zum Lesen, Programmieren, Löschen und Verifizieren.
-
Gemäß der vorliegenden
Erfindung werden eine nichtflüchtige
Speichervorrichtung und ein Redundanz-Verfahren geschaffen, wie
diese im Anspruch 1 bzw. 10 definiert sind.
-
Für ein besseres
Verständnis
der vorliegenden Erfindung wird im Folgenden eine bevorzugte Ausführungsform
lediglich an Hand eines nicht einschränkenden Bei spiels unter Bezugnahme
auf die beigefügten
Zeichnungen beschrieben; darin zeigen:
-
1 ein
Blockdiagramm einer Speichervorrichtung gemäß der Erfindung;
-
2 ein
vereinfachtes Schaltbild eines erfindungsgemäßen Blocks der 1;
-
3 und 4 Flussdiagramme
des erfindungsgemäßen Verfahrens;
und
-
5 eine
Darstellung zur Erläuterung
der Zuordnung zwischen Registern und Redundanz-Sektoren gemäß der Erfindung.
-
Bei
der Vorrichtung und dem Verfahren, wie diese im Folgenden ausführlich erläutert werden, werden
die bereits zum Lesen der Anordnung vorhandene Lesestruktur, die
Struktur, die die Sektoren für
die Handhabung von Defekten sowie zu löschende Sektoren speichert
sowie der Zähler
der vorliegenden Adressen verwendet. Auf diese Weise können sogar
die gesamte Teststruktur und die Testverfahrensweise des DMA-Tests,
des Schatten-Tests sowie des CAM-Programmier- und Löschtests in unveränderter
Weise aufrecht erhalten werden.
-
Für ein besseres
Verständnis
der Erfindung wird nun unter Bezugnahme auf 1 die vereinfachte
Struktur eines Speichers 1 vom Flash-Typ beschrieben, wie
er gemäß der Erfindung
für die
Schaffung von Eigen-Redundanz modifiziert ist.
-
Der
Speicher 1 besitzt eine Speicheranordnung 2, die
aus Standard-Sektoren 19a (von denen nur zwei gezeigt sind)
sowie aus Redundanz-Sektoren 19b (von denen nur zwei gezeigt
sind) gebildet ist. Die Speicheranordnung 2 ist in bekannter
Weise mit einem Reihen-Decoderblock 3 und einem Spalten-Decoderblock 4 verbunden.
Der Spalten-Decoderblock 4 weist ferner Abtastverstärker SA
und Programmlader auf, die beide nach einer bekannten Struktur ausgebildet
sind.
-
Ein
Adressenzählerblock 5 weist
einen mit einem Adresseneingangsgate 6 verbundenen Eingang
auf, von dem er von außerhalb
allgemeine Adressen ADD erhält;
der Adressenzählerblock 5 generiert
unter der Steuerung einer Zustandsmaschine 12 interne Adressen
zum Adressieren der Speicheranordnung 2, wobei diese auf
einem Adressenbus 8 (ADDBUS) zugeführt werden. Der Adressenbus 8 ist mit
dem Reihen-Decoderblock 3 und dem Spalten-Decoderblock 4 sowie
mit einer Redundanz-Detektionseinheit 15 verbunden (deren
Struktur unter Bezugnahme auf 2 im Folgenden
noch ausführlicher
beschrieben wird). Der Adressenzählerblock 5 ist
ferner durch den Adressenbus 8 mit einem RAM 7 verbunden,
der einen Sektorspeicher bildet.
-
Wie
in der vergrößerten Detailansicht
schematisch dargestellt ist, ist der RAM 7 genauer gesagt in
eine Mehrzahl von Bereichen oder Reihen 14 unterteilt,
und zwar eine für
jeden Sektor der Speicheranordnung 2, wobei jeder Bereich 14 einen
ersten Unterbereich 14a und einen zweiten Unterbereich 14b aufweist.
Während
eines Löschvorgangs
speichert der erste Unterbereich 14a die Adresse einer Speicherstelle,
bei der der Prüfvorgang
nach dem Anlegen der Löschimpulse
beginnen muss (und die somit als Zeiger wirkt), während der
zweite Unterbereich 14b ein Flag speichert, dessen Logikzustand anzeigt,
ob der zugeordnete Sektor gelöscht
werden soll oder nicht.
-
Der
Adressenzähler 5 ist
ferner mit einer Abtast-Zeitgeberschaltung 9 verbunden,
die geeignete Freigabesignale an den Reihen-Decoderblock 3 und den
Spalten-Decoderblock 4 sowie
an eine Dateneingangs-/Datenausgangseinheit 10 liefert.
Die Dateneingangs-/Datenausgangseinheit 10 ist ferner mit
einem Datenbus DBUS 11 verbunden, der wiederum mit dem
Spalten-Decoderblock 4, der Zustandsmaschine 12,
der Redundanz-Detektionseinheit 15, dem RAM 7 sowie
einem Zustandsregister 17 verbunden ist.
-
Die
Zustandsmaschine 12 tauscht Information mit einer Microprozessor-Steuerschaltung 16 aus und
sendet Zustandsinformation zu dem Zustandsregister 17.
Weiterhin tauscht die Steuereinheit 16 Information und
Anweisungen mit der Redundanz-Detektionseinheit 15 und
dem RAM 7 aus.
-
Darüber hinaus
ist die Redundanz-Detektionseinheit 15 mit dem Reihen-Decoderblock 3 und dem
Spalten-Decoderblock 4 sowie mit den CAMs 18 (von
denen nur eine gezeigt ist) verbunden, die zum Speichern der Adressen
der ersetzten Sektoren ausgebildet sind. Die CAMs 18 sind
funktionsmäßig der Speicheranordnung 2 zugeordnet
und teilen sich mit dieser die gleichen Adressen- und Leseschaltungen. Aus
Gründen
der Vereinfachung sind daher in 1 die CAMs
als zu der Speicheranordnung zugehörig dargestellt, obwohl sie
körperlich
von dieser getrennt, jedoch in mit der Speicheranordnung zusammenhängender
Weise vorgesehen sein können.
-
Wie
im Folgenden noch ausführlicher
erläutert
wird, erhält
beim Einschalten des Speichers die Redundanz-Detektionseinheit 15 von
der Speicheranordnung 2, genauer gesagt von den CAMs 18,
die über
den Spalten-Decoderblock 4 gelesen werden, die zuvor gespeicherten
Redundanz-Daten, wobei sie diese in flüchtiger Weise in Register einschreibt, in
denen sie unmittelbar zugänglich
sind. Wenn der Adressenzähler 5 die
Reihen- und Spaltenadressen der zu lesenden Worte zuführt, vergleicht
somit die Redundanz-Detektionseinheit 15 die auf dem Datenbus 11 empfangenen
Adressen mit den in ihren eigenen Registern gespeicherten Adressen,
und wenn sie eine Übereinstimmung
feststellt, ersetzt sie die empfangenen Adressen mit den Redundanz-Adressen,
um dadurch die Redundanz-Sektoren 19b anzusprechen, wie
dies im Folgenden unter Bezugnahme auf 2 ausführlich erläutert wird.
-
Wenn
während
des Löschens
und Programmierens ein Defekt bei einem oder mehreren Standard-Sektoren 19a festgestellt
wird, erhält
die Redundanz-Detektionseinheit 15 die Adressen der fehlerhaften
Sektoren, die durch den Adressenzähler 5 auf dem Adressenbus 8 zugeführt werden,
und unter einer geeigneten Steuerung der Steuerschaltung 16 schreibt
die Redundanz-Detektionseinheit 15 diese in vorübergehender
Weise in ihre eigenen Register und anschließend über den Datenbus 11 in
die CAMs 18 ein.
-
Im
Folgenden wird die Struktur der Redundanz-Detektionseinheit 15 im
Hinblick auf eine Redundanz während
des Betriebs der Vorrichtung beschrieben (Löschen, wie es im Folgenden
unter Bezugnahme auf die 3 und 4 beschrieben wird,
oder ansonsten Programmieren und Lesen).
-
Unter
Bezugnahme auf 2 weist die Redundanz-Detektionsschaltung 15 ein
Schalt-Gate 20 mit einem ersten Dateneingang, der mit dem
Datenbus 11 verbunden ist, mit einem zweiten Dateneingang,
der mit dem Adressenbus 8 verbunden ist, mit einem Auswähleingang,
der ein erstes Steuersignal SEL1 von der Steuereinheit 16 erhält, sowie
mit einem mit einem Redundanz-Bus 21 verbundenen Ausgang
auf. Der Ausgang des Schalt-Gates 20 ist ferner mit dem
Speicherbus 11 über
einen Puffer 40 verbunden, der durch ein zweites Steuersignal
SEL2 gesteuert wird, das durch die Steuereinheit 16 zugeführt wird.
-
Der
Redundanz-Bus 21 ist mit dem Dateneingang D einer Mehrzahl
von Registern 22 (in dem Beispiel sind drei Register dargestellt),
die mit den Bezugszeichen 221 , 222 , 223 bezeichnet
sind und in verketteter Weise verbunden sind und aus Zwischenspeichern
gebildet sind. Im Allgemeinen ist die Anzahl der Register 22 gleich
der Anzahl der verfügbaren
Redundanz-Möglichkeiten
(Anzahl der Redundanz-Sektoren 19b) und der Eigenredundanz-CAMs 18.
-
Genauer
gesagt, ist jedes Register 22 in zwei Teile unterteilt:
Einen ersten Teil 22a zum Speichern einer vollständigen Adresse
eines fehlerhaften Sektors sowie einen zweiten Teil 22b zum
Speichern eines Schutz-Bits, dessen Logikwert anzeigt, ob in das entsprechende
Register 22 bereits eine Adresse eines fehlerhaften Sektors
geladen worden ist oder nicht. Jedes Register 22 weist
ferner einen Synchronisationseingang CK, einen Schutzausgang G (der mit
dem zweiten Teil 22b verbunden ist) und eine Ausgangsadresse
Q auf, die mit dem zweiten Bereich 22b verbunden ist.
-
Die
Register 221 , 222 , 223 sind mit ihrem Synchronisationseingang
CK mit dem Ausgang eines jeweiligen UND-Glieds 231 , 232 , 233 verbunden.
Bei den UND-Gliedern 231 , 232 , 233 handelt es sich um den Typ mit drei
Eingängen:
Ein erster Eingang 24 eines invertierten Typs ist mit dem
Schutzausgang G eines jeweiligen Registers 221 , 222 , 223 verbunden und
erhält
ein invertiertes Schutz-Bit GN, das gleich dem entsprechenden invertierten
Schutz-Bit ist; ein zweiter Eingang 25 erhält ein Lastsignal
L, das von der Steuereinheit 16 zugeführt wird; und ein dritter Eingang 26 ist
mit dem Schutzausgang eines vorangehenden Registers mit Ausnahme
des ersten Registers 22, verbunden. Genauer gesagt, ist
das erste Register 22, mit dem dritten Eingang 26 in
fest stehender Weise mit einer Spannung verbunden, die einem Logikpegel "1" entspricht; ein zweites Register 222 ist mit dem dritten Eingang 26 direkt
mit dem Schutzausgang G des ersten Registers 221 verbunden;
und das dritte Register 223 ist
mit dem dritten Eingang 26 direkt mit dem Schutzausgang
G des zweiten Registers 222 verbunden.
Weitere mögliche Register
sind ab dem dritten Register 223 in
der gleichen Weise verbunden.
-
Das
letzte Register (hier das dritte Register 223 )
ist mit dem Schutzausgang G mit der Steuereinheit 16 verbunden,
die ein Signal NO_RIS liefert, dessen Logikwert anzeigt, ob weitere
freie Redundanzmöglichkeiten
vorhanden sind oder nicht.
-
Die
Adressenausgänge
Q der Register 221 , 222 , 223 sind
jeweils mit einem ersten Eingang eines jeweiligen XNOR-Glieds 30 verbunden.
-
Die
XNOR-Glieder 30 weisen ferner einen mit dem Redundanz-Bus 21 verbundenen
zweiten Eingang sowie einen ersten Ausgang auf, der mit einer Logikaddierschaltung 31 verbunden
ist, die ein Deaktivierungssignal DIS abgibt, das dem Reihen-Decoderblock
und dem Spalten-Decoderblock 3, 4 der 1 zugeführt wird.
Ferner weist jedes der XNOR-Glieder 30 einen zweiten Ausgang
auf, der starr mit einem jeweiligen Redundanz-Sektor 19b verbunden
ist, um diesen freizugeben, wie dies im Folgenden erläutert wird.
-
Die
Redundanz-Detektionsschaltung 15 arbeitet in der im Folgenden
beschriebenen Weise. Unmittelbar bei Redundanz-Aktivierung nach
der Detektion von einem oder mehreren fehlerhaften Sektoren nach
einem Modifizierungsvorgang (wie er im Folgenden unter Bezugnahme
auf die 3 und 4 für einen
Löschvorgang
ausführlich
beschrieben wird), wird das Schalt-Gate 20 durch das erste
Auswahl signal SEL1 derart gesteuert, dass der Adressenbus 8 mit
dem Redundanz-Bus 21 verbunden wird. Bei diesem Schritt
ist der Puffer 40 immer noch inaktiv, und der Adressenbus 8 liefert
zusätzlich
zu der Adresse eines fehlerhaften Sektors das Schutz-Bit mit dem
Logikwert "1". Dieses Bit wird
programmiert, nachdem die Adresseninformation in den CAMs programmiert
worden ist. Auf diese Weise wird bei einem unbeabsichtigten Stromausfall
zwischen der Programmierung der Adressen und der Programmierung
des Schutz-Bits die Tatsache mitgeteilt, dass die programmierte
Information unvollständig
ist.
-
Unter
der Annahme, dass die Redundanz zuvor noch nicht aktiviert worden
ist, ist das erste Register 221 immer
noch leer, und sein Schutz-Bit G befindet sich immer noch im inaktiven
Zustand, wobei dies einem Logikwert "0" entspricht;
daher ist das invertierte Schutz-Bit GN gleich "1".
Sobald das Lastsignal L auf den hohen Zustand schaltet, liefert
das erste UND-Glied 23, einen Logikwert "1" zu dem Synchronisationseingang CK,
wobei dies das Laden der Adresse und des Schutz-Bits, die auf dem
Redundanz-Bus 21 zugeführt
werden, in das erste Register 221 hinein
freigibt.
-
Beim
Schalten des Lastsignals L empfangen statt dessen das zweite und
das dritte UND-Glied 232 , 233 den vorherigen Wert des Schutz-Bits
G des ersten und des zweiten Registers 231 , 232 (der sich immer noch auf "0" befindet) und als Ergebnis hiervon
werden sie nicht zum Laden freigegeben.
-
Bei
diesem Schritt sind die XNOR-Glieder 30 und die Logikaddierschaltung 31 praktisch
gesperrt, oder sie liefern in jedem Fall insignifikante Signale, die
von dem Reihen-Decoderblock und dem Spalten-Decoderblock 3, 4 ignoriert
werden.
-
Bei
den nachfolgenden Redundanz-Aktivierungen werden die Daten jedes
Mal in ein nachfolgendes Register 222 , 223 geladen. In der Tat sperrt bei der
zweiten Aktivierung das erste Register 221 sein
eigenes UND-Glied 231 und gibt
das nachfolgende UND-Glied 232 frei,
da es das Schutz-Bit G im hohen Zustand aufweist. Bei Ankunft des
Lastsignals L werden dann die Adresse und das Schutzbit in dem zweiten
Register 222 gespeichert. Das dritte
Register 223 und mögliche nachfolgende
Register bleiben jedoch gesperrt.
-
Auf
diese Weise ist es möglich,
die Adresse einer Anzahl von fehlerhaften Sektoren zu speichern, die
gleich der Anzahl von vorhandenen Registern 22 ist.
-
Nachdem
in alle Register 22 geladen worden ist, signalisiert der
hohe Wert des Schutzbits G des letzten Registers (im vorliegenden
Fall des dritten Registers 223 ),
welches das Signal NO_RIS bildet, dass keine weiteren Redundanz-Möglichkeiten
mehr verfügbar
sind.
-
Unmittelbar
nach dem Laden der Adresse eines fehlerhaften Sektors in eines der
Register 22 wird diese in nichtflüchtiger Weise in einem CAM 18 gespeichert.
Zu diesem Zweck wird die Adresse des fehlerhaften Sektors, die noch
auf dem Adressenbus 8 vorhanden ist, über das Schalt-Gate 20 und
den Puffer 40, die nun durch das zweite Auswahlsignal SEL2
aktiviert sind, dem Datenbus 11 zugeführt. Als Ergebnis hiervon wird
die Adresse des fehlerhaften Sektors dem Spalten-Decoderblock 4 zugeführt, wie dies
im Folgenden ausführlich
erläutert
wird.
-
Wenn
nach dem Einschalten des Speichers 1 das POR-Signal (Energieeinschalt-Rückstellsignal) erzeugt wird,
wird der Inhalt der CAMs 18, die die Adressen der zuvor
detektierten fehlerhaften Sektoren speichern, in sequenzieller Weise
auf dem Datenbus 11 befördert
und nacheinander in die Register 22 geladen und zwar über das
Schalt-Gate 20, das nunmehr den Datenbus 11 auf
eine Anweisung von der Steuereinheit 16 hin mit dem Adressbus 8 verbindet.
Das Laden findet in sequenzieller Weise in den verschiedenen Registern 22 statt,
und zwar ähnlich, wie
dies vorstehend beschrieben worden ist. Auf diese Weise werden bei
jedem Einschalten des Speichers die zuvor gespeicherten Redundanz-Daten
in die Register 22 geladen.
-
Während eines
Lesevorgangs wird die auf dem Adressenbus 8 zugeführte Adresse
durch den Redundanz-Bus 21 den XNOR- Gliedern 30 zugeführt, die
diese mit der Adresse des fehlerhaften Sektors vergleichen, die
von dem betreffenden Re gister 22 geliefert wird. Wenn die
auf dem Adressenbus 8 zugeführte Adresse keiner der Adressen
entspricht, die in den Registern 22 gespeichert sind, generieren die
XNOR-Glieder ein Nichterkennungssignal (Deaktivierungssignal DIS
im inaktiven Zustand), und der Reihen-Decoderblock und der Spalten-Decoderblock 3, 4 arbeiten
in der üblichen
Weise auf der Basis der auf dem Adressenbus 8 vorhandenen
Adresse. Wenn statt dessen eines der XNOR-Glieder die Übereinstimmung
mit der in dem zugeordneten Register 22 gespeicherten Adresse
erkennt, wird ein Erkennungssignal erzeugt, das der Logikaddierschaltung 31 zugeführt wird.
Somit geht in diesem Schritt das Deaktivierungssignal DIS in den
aktiven Zustand und sperrt die auf dem Adressenbus 8 vorhandene Adresse
(unter Sperrung des Standard-Sektors 19a, der durch den
Adressenzähler 5 der 1 adressiert wird).
Ferner gibt das XNOR-Glied 30, das die Übereinstimmung erkannt hat,
den den diesem zugeordneten Redundanz-Sektor 19b frei.
-
Im
Folgenden wird unter Bezugnahme auf die 3 und 4 die
Vorgehensweise zum Löschen
von Gruppen von Sektoren beschrieben, wobei eine Online-Redundanz-Aktivierung
bei Feststellen von fehlerhaften Speicherstellen ausgeführt wird.
-
Diese
Vorgehensweise verwendet den RAM 7 der 1,
wobei die Flags, die den zu löschenden Sektoren
entsprechen, in den zweiten Unterbereichen 14b vor der
Aktivierung des Löschvorgangs
in bekannter Weise gesetzt werden (Flags im aktiven Zustand). Der
RAM 7 stellt somit eine Liste von zu löschenden Sektoren dar, die
durch die jeweiligen Flags im aktiven Zustand identifiziert werden.
-
In
der nachfolgenden Beschreibung wird ferner davon ausgegangen, dass
ein oder mehrere Sektoren, die zu einer vorgegebenen Gruppe gehören, zu
löschen
sind; die gleiche Verfahrensweise ist jedoch auch bei der gesamten
Speicheranordnung anwendbar.
-
Zu
Beginn werden in einem Schritt 50 die ersten Unterbereiche 14a der
Bereiche 14 mit Flags im gesetzten oder aktiven Zustand
(die somit den zu löschenden
Sektoren entsprechen) zurückgesetzt, sodass
sie die Adresse des ersten Worts jedes jeweiligen Sektors enthalten.
Darüber
hinaus wird ein Sektorzähler
mit dem ersten Sektor der betrachteten Sektorgruppe initialisiert.
-
In
einem Schritt 51 wird dann geprüft, um festzustellen, ob alle
der zu löschenden
Blöcke
tatsächlich
gelöst
worden sind, indem der Zustand der Flags geprüft wird. Wenn dies der Fall
ist (alle Flags sind im inaktiven Zustand), endet der Löschvorgang; andernfalls
wird in einem Schritt 52 ein Löschimpuls zu allen Sektoren
geschickt, die durch die Flags als im aktiven Zustand befindlich
identifiziert sind.
-
Als
nächstes
wird in einem Schritt 53 die Adresse gelesen, die in dem
ersten Unterbereich 14a gespeichert ist, der dem ersten
Sektor der Liste entspricht, der ein aktives Flag aufweist. Wie
bereits erwähnt
worden ist, entspricht diese Adresse zu Beginn dem ersten Wort des
Sektors; wie im Folgenden beschrieben wird, stellt sie im Anschluss
daran die Adresse des letzten Wortes des Sektors dar, der geprüft worden
ist (und für
den die Prüfung
nicht erfolgreich war).
-
Anschließend wird
in einem Schritt 54 der betrachtete Sektor geprüft, und
zwar ausgehend von dem Wort, das durch die soeben gelesene Adresse identifiziert
worden ist sowie in fortschreitender Weise, bis der gesamte Sektor
geprüft
worden ist oder ein nicht korrekt gelöschtes Wort detektiert wird. Wenn
der gesamte Sektor gelöscht
worden ist (Ausgang JA von Schritt 55), wird das dem soeben
gelöschten
Sektor entsprechende Flag zurückgesetzt (das
heißt,
es wird in den inaktiven Zustand gebracht), indem in der Praxis
in einem Schritt 60 der Sektor an sich von der Liste der
zu löschenden
Sektoren gelöscht
wird. Anschließend
fährt das
Verfahren mit einem Schritt 62 fort, wie dies im Folgenden beschrieben
wird.
-
Wenn
die Prüfung
auf Grund der Detektion eines nicht korrekt gelöschten Wortes unterbrochen wird,
das heißt,
dem Ausgang NEIN von Schritt 55, wird in den ersten Unterbereich 14a die
Adresse des soeben geprüften
Wortes, für
das die Prüfung
ein negatives Resultat ergeben hat, in einem Schritt 61 eingeschrieben.
Anschließend
folgt eine Prüfung,
um festzustellen, ob es sich bei dem soeben geprüften Sektor um den letzten
in der Liste handelt, wobei dies in einem Schritt 62 erfolgt.
-
Wenn
immer noch zu prüfende
Sektoren vorhanden sind, das heißt, bei dem Ausgang NEIN von dem
Schritt 62, wird ein nächster
Sektor inkrementiert, und zwar unter Inkrementierung des Sektorzählers in
einem Schritt 63, und anschließend kehrt das Verfahren zu
dem Schritt 53 zurück,
in dem die in dem ersten Unterbereich 14a des RAM 7 gespeicherte
Adresse, die dem soeben adressierten nächsten Sektor entspricht, gelesen
wird. Wenn dagegen alle der Sektoren geprüft worden sind (jedoch natürlich einige
von ihnen nicht korrekt gelöschte
Worte enthalten), das heißt,
bei dem Ausgang JA von Schritt 62, wird ein Versuchsanzahl-Zähler I in einem Schritt 64 inkrementiert.
-
Dieser
Zähler
(der die Anzahl der zugeführten
Programmierimpulse anzeigt), hat die Aufgabe, die Wiederholung des
Zyklus zu ermöglichen,
der das Anlegen eines Löschimpulses
und das Verifizieren der Zellen der Sektoren ausgehend von denjenigen
umfasst, die in dem vorangehenden Prüfvorgang ein negatives Resultat
ergeben haben. Nur wenn nach einer bestimmten Anzahl von Zyklen
zumindest eine Zelle immer noch nicht korrekt gelöscht ist,
wird eine Redundanz-Routine aktiviert, und im Anschluss daran werden
weitere Lösch-
und Verifizierzyklen wiederholt. Wenn nach diesen weiteren Zyklen
die Sektoren immer noch nicht gelöscht sind, wird ein Fehlersignal
erzeugt ("defekt").
-
Zu
diesem Zweck wird nach dem Schritt 64 eine Überprüfung dahingehend
vorgenommen, um festzustellen, ob der Versuchsanzahl-Zähler I einen Wert
gleich einem ersten Schwellenwert IMAX1 aufweist. Wenn dies der
Fall ist, wird eine Redundanz-Routine 70 aktiviert, die
im Folgenden unter Bezugnahme auf 4 beschrieben
wird, und das Programm kehrt zu dem Schritt 53 zum Lesen
der Adresse des ersten Sektors zurück, der ein aktives Flag hat;
ansonsten erfolgt bei einem Ausgang NEIN von Schritt 65 eine
Prüfung
in einem Schritt 66, um festzustellen, ob der Versuchsanzahl-Zähler I einen
Wert hat, der gleich einem zweiten Schwellenwert IMAX2 hat,
der höher
ist als IMAX1. Wenn dies nicht der Fall ist,
geht das Programm zurück
zu dem Schritt 51, um zu prüfen, ob alle der Sektoren gelöscht worden
sind, um dadurch den Zyklus der Anlegung von Lösch- und Verifizierimpulsen
zu wiederholen oder den Vorgang zu beenden, wenn alle der Sekto ren
gelöscht
sind. Wenn diese gelöscht
sind (der Versuchsanzahl-Zähler
I hat einen Wert gleich dem zweiten Schwellenwert IMAX2),
wird ein Fehlersignal in einem Schritt 67 erzeugt, und
das Verfahren endet.
-
Unter
Bezugnahme auf 4 beginnt die Redundanz-Routine 70 mit
dem Rücksetzen
des Sektorzählers
in einem Schritt 71, und in einem Schritt 72 wird
geprüft,
ob der durch den Sektorzähler adressierte
erste Sektor bereits gelöscht
worden ist, indem der Zustand des entsprechenden Flags gelesen wird.
Wenn dies der Fall ist, wird in einem Schritt 80 überprüft, ob alle
der Sektoren geprüft
worden sind; ansonsten wird in einem Schritt 73 geprüft, ob der
derzeit adressierte Sektor bereits ein Redundanz-Sektor ist oder
ob keine weiteren Redundanz-Möglichkeiten
mehr verfügbar
sind. Wenn dies der Fall ist, ist es nicht länger möglich, weitere Redundanz-Möglichkeiten
zu aktivieren; als Ergebnis hiervon werden in einem Schritt 81 alle
der Zeiger zurückgesetzt
(Adressen, die in den ersten Unterbereichen 14a des RAM 7 gespeichert
sind), und die Redundanz-Routine 70 endet.
-
Wenn
dagegen weitere Redundanz-Möglichkeiten
verfügbar
sind, das heißt,
bei dem Ausgang NEIN von Schritt 73, wird das Laden der
Adresse des aktuellen Sektors in das erste verfügbare Register in einem Schritt 74 angewiesen
(entsprechend der Beschreibung in Bezug auf 2), und
in einem Schritt 75 wird die gleiche aktuelle Adresse in
nichtflüchtiger Weise
in einem CAM 18 gespeichert (wie dies bereits beschrieben
wurde). Anschließend
fährt das
Programm mit einem Schritt 80 fort, um zu verifizieren, ob
es sich bei dem derzeit adressierten Sektor um den letzten der in
dem RAM 7 gespeicherten Liste handelt. Wenn dies nicht
der Fall ist, wird in einem Schritt 82 der Sektorzähler inkrementiert,
und das Verfahren kehrt zu dem Schritt 72 zurück; wenn
es sich um den letzten Sektor handelt, fährt das Programm mit dem Schritt 81 fort,
wie dies vorstehend erwähnt
wurde. Von nun an speichert der Bereich 14 des RAM 17,
der zuvor einem fehlerhaften Sektor zugeordnet war, die Information
in Relation zu dem diesen ersetzenden Redundanz-Sektor, und zwar
genauer gesagt, die Adresse des ersten zu prüfenden Worts und das Lösch-Flag.
Auf diese Weise wird/werden unter Rück kehr zu dem Hauptverfahren der 3 der
oder die soeben freigegebenen Redundanz-Sektoren gelöscht und
in der vorstehend beschriebenen Weise geprüft.
-
Nach
dem Rücksetzen
der in den RAM 7 geladenen Adressen endet die Redundanz-Routine 70.
-
5 veranschaulicht
eine Struktur der Register 22, die die Redundanz eines
Redundanz-Sektors im Fall des Auftretens eines derartigen Fehlers freigibt,
dass der Sektor unbrauchbar wird. Zu diesem Zweck wird anstatt einer
starren Zuordnung zwischen jedem Register 22 und dem entsprechenden Redundanz-Sektor
die Zuordnung bei Detektion eines fehlerhaften Sektors festgelegt,
und die Adresse des Redundanz-Sektors wird zusammen mit der Adresse
des ausgetauschten Sektors gespeichert.
-
In
dem Beispiel der 5 hat jedes Register 22 (und
somit jeder CAM 18, der die gleichen Daten in nichtflüchtiger
Weise speichert) einen ersten Bereich 90 zum Speichern
der Adresse eines fehlerhaften Sektors, einen zweiten Bereich 91 zum
Speichern des Schutzbits G sowie einen dritten Bereich 92 zum Speichern
der Adresse des Redundanz-Sektors (der den Sektor ersetzt, dessen
Adresse in dem ersten Bereich 90 gespeichert ist). Auf
diese Weise ist die Zuordnung zwischen jedem Register und dem entsprechenden
Redundanz-Sektor nicht vorgegeben, wie dies durch die Pfeile dargestellt
ist. Wenn zum Beispiel der durch das erste Register adressierte
Redundanz-Sektor fehlerhaft wird, wäre es möglich, die Adresse des fehlerhaften
Redundanz-Sektors durch einen weiteren Redundanz-Sektor zu ersetzen, wie dies durch den
gestrichelten Pfeil dargestellt ist.
-
Dies
gilt insbesondere für
die Freigabe der Redundanz von Redundanz-Sektoren, die während eines
EWS-Tests aktiviert werden.
-
Die
Vorteile der beschriebenen Speichervorrichtung sind folgende: Als
erstes ermöglicht
sie das Austauschen einer fehlerhaften Einheit nicht nur während der
Testphase der Vorrichtung innerhalb der Produktionsanlage (zum Beispiel
während
eines EWS-Tests), sondern auch wenn die Vorrichtung in Betrieb ist.
Auf diese Weise bietet die Speichervorrichtung eine höhere Flexibilität und damit
verbunden einen Anstieg in der Ausbeute.
-
Darüber hinaus
ist es möglich,
auch den EWS-Testvorgang zu beschleunigen, und zwar auf Grund der
Verwendung der Steuereinheit 16 innerhalb der Speichervorrichtung
sowie eines eingebetteten Algorithmus, sodass die Notwendigkeit
für jegliche
Schnittstellenausbildung mit externen Testgeräten ausgeschlossen wird. Dies
ermöglicht
eine Reduzierung des Testaufwands (Entwicklungsressourcen und Testzeiten),
der zum Zeitpunkt Null darauf abzielt, jegliche Defekte zu identifizieren,
die im Anschluss daran während
der Lebensdauer der Vorrichtung auftreten können (zyklisches Verfahren,
spezielles Testverfahren).
-
Die
vorstehend beschriebene Speichervorrichtung beinhaltet einen minimalen
Anstieg bei den Gesamtabmessungen für die zusätzlichen Schaltungseinrichtungen,
da sich in erster Linie die bereits vorhandenen Strukturen nutzen
lassen.
-
Im
Spezielleren ermöglicht
die vorliegend beschriebene Ausführung
der Eigenredundanz die Verwendung der bereits vorhandenen Lesestruktur für den Betrieb
der Speicheranordnung 2, die erneute Verwendung des RAM 7 für die Handhabung
der fehlerhaften Sektoren sowie der einem Löschvorgang unterzogenen Sektoren
sowie auch die erneute Verwendung des Adressenzählers 5.
-
Es
ist nicht notwendig, separate Zellen als CAMs zu verwenden, sondern
es können
Speicherzellen der Speicheranordnung verwendet werden, die speziell
für Redundanzzwecke
vorgesehen sind.
-
Die
Verwendung von Registern zum Laden von Redundanz-Information während des
Einschaltens der Speichervorrichtung ermöglicht eine rasche Detektion
von jeglichem Austausch eines Sektors, der zum Lesen adressiert
wird, sowie eine Adressierung von diesem mit dem korrekt arbeitenden
Sektor. In der Praxis arbeiten die Register 22 als nichtflüchtige Zellen,
die für
die traditionelle EWS-Redundanz vorgesehen sind, wobei sie gleichzeitig
eine agilere Handhabung der vorhandenen Strukturen gewährleisten.
-
Die
Redundanz-Vorgänge
sind insgesamt für den
Benutzer transparent (zum Beispiel ist während einer Modifizierung das
Zustandsregister für
den Benutzer zugänglich,
bei dem es sich entweder um einen Produktmanager oder um einen Kunden
handelt, der Information über
den Zustand der Vorgänge
benötigt).
-
Die
Register 22 können
ferner mit Setz-/Rücksetz-Transistoren
für Testvorgänge vom Schatten-Typ
ausgestattet sein.
-
Schließlich versteht
es sich, dass zahlreiche Modifikationen und Veränderungen an der vorstehend
beschriebenen und dargestellten Speichervorrichtung sowie dem vorstehend
beschriebenen und dargestellten Redundanz-Verfahren vorgenommen werden
können,
die alle im Umfang der Erfindung liegen, wie er in den beigefügten Ansprüchen definiert ist.
Zum Beispiel kann trotz der Tatsache, dass die vorstehende Beschreibung
nur auf Sektor-Redundanz Bezug nimmt, die Erfindung in der erwähnten Weise
auch bei Redundanz eines anderen Typs Anwendung finden, wie zum
Beispiel Spalten-Redundanz, Byte-Redundanz oder Reihen-Redundanz. Darüber hinaus
kann die Redundanz auch nach einem nicht erfolgreichen Programmiervorgang
aktiviert werden.