-
GEBIET DER ERFINDUNG
-
Die
vorliegende Erfindung betrifft allgemein Halbleitervorrichtungen
und insbesondere verbesserte Verfahren und Systeme für Halbleiterspeicher.
-
HINTERGRUND DER ERFINDUNG
-
In
der Halbleiter- und Elektronikindustrie sind gegenwärtig zahlreiche
Trends auszumachen. Einer dieser Trends besteht darin, dass jüngere Generationen
tragbarer elektronischer Vorrichtungen mehr Speicher nutzen als
vorherige Generationen. Dieser Anstieg an Speicher erlaubt es diesen
neuen Vorrichtungen, mehr Daten zu speichern, wie beispielsweise Musik
oder Bilder, und stellt den Vorrichtungen außerdem mehr Rechenleistung
und -geschwindigkeit bereit.
-
Eine
Art von Speichervorrichtung umfasst ein Feld aus resistiven Speicherzellen,
wobei einzelne Datenbits in den einzelnen resistiven Speicherzellen
des Felds gespeichert werden können.
Je nachdem, wie die Zelle vorgespannt ist, kann sie zwischen einem
Zustand mit größerer Resistivität und einem Zustand
mit geringerer Resistivität
umgeschaltet werden. Bei realen Implementierungen kann der Zustand
mit größerer Resistivität einer
logischen „1" zugeordnet sein,
und der Zustand mit geringerer Resistivität kann einer logischen „0" zugeordnet sein,
oder umgekehrt. Zusätzliche
resistive Zustände
könnten außerdem definiert
werden, um eine Multibit-Zelle
mit mehr als zwei Zuständen
pro Zelle zu implementieren. Daher kann ein Benutzer durch Umschalten
zwischen den resistiven Zuständen
jede beliebige Kombination von „1" (Einsen) und „0" (Nullen) im Feld speichern, was digital
codierter Musik, Bildern, Software, usw. entsprechen könnte.
-
Bei
resistiven Speichern können
die Merkmale der Speicherzellen im Laufe der Zeit eine Abweichung
erfahren. Zum Beispiel kann sich bei Zellen, bei denen die Anzahl
der Zugriffe beträchtlich über dem
Durchschnitt liegt, eine Tendenz zu Datenfehlern zeigen. Da einige
Anwendungen möglicherweise
keine Datenfehler tolerieren, limitiert der Ausfall dieser einzelnen
Zellen die Ausfallrate der Speichervorrichtung ernsthaft. Daher
ist eine Notwendigkeit aufgetreten, Systeme und Verfahren in Bezug
auf Speichervorrichtungen bereitzustellen, die fehlerhafte Zellen
berücksichtigen
können.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Eine
Ausführungsform
der Erfindung betrifft ein Verfahren zum Reparieren eines Speicherfelds. Bei
dem Verfahren wird eine Gruppe, die aus zumindest einer Speicherzelle
besteht, analysiert, um zu bestimmen, ob die Gruppe zumindest eine
fehlerhafte Zelle umfasst, die Daten nicht mehr ordnungsgemäß speichert.
Wenn die Gruppe zumindest eine fehlerhafte Zelle umfasst, wird zumindest
die zumindest eine fehlerhafte Zelle dynamisch zumindest einer anderen
Zelle zugeordnet. Weitere Verfahren, Vorrichtungen und Systeme werden
ebenfalls offenbart.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
1 zeigt
eine Ausführungsform
eines Speicherfelds;
-
1A zeigt
eine Ausführungsform
eines Felds aus resistiven Speicherzellen, die in einer unsymmetrischen
Konfiguration konfiguriert sind;
-
2 zeigt
eine Ausführungsform
einer Phasenwechsel-Speicherzelle;
-
3 zeigt
eine Ausführungsform
einer günstigen
Widerstandsverteilung, die sich auf ein Feld aus binären resistiven
Speicherzellen bezieht;
-
4 zeigt
eine Ausführungsform
einer ungünstigen
Widerstandsverteilung, die sich auf ein Feld aus binären resistiven
Speicherzellen bezieht;
-
5 zeigt
eine Ausführungsform
einer Speichervorrichtung, die redundanten Speicher umfasst;
-
6 zeigt
ein Ablaufdiagramm eines Speicherreparaturvorgangs;
-
7 zeigt
ein weiteres Ablaufdiagramm eines Speicherreparaturvorgangs;
-
8 zeigt
ein weiteres Ablaufdiagramm eines Speicherreparaturvorgangs;
-
9 zeigt
eine schematische Darstellung eines Aspekts einer Ausführungsform
eines Speicherreparaturvorgangs;
-
10 ist
ein Blockdiagramm eines Datenverarbeitungssystems, in dem beispielhafte
Speichervorrichtungen genutzt werden können; und
-
11 zeigt
eine Ausführungsform
einer Widerstandsverteilung, die sich auf ein Feld aus resistiven
Multibit-Speicherzellen bezieht.
-
AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
-
Eine
oder mehrere Implementierungen der vorliegenden Erfindung werden
nun unter Bezugnahme auf die beigefügten Zeichnungen beschrieben, wobei
sich gleiche Bezugszeichen durchgehend auf gleiche Elemente beziehen.
Die Zeichnungen sind nicht unbedingt maßstabsgetreu. Obwohl diverse veranschaulichte
Ausführungsformen
als Hardware-Struktur beschrieben und veranschaulicht werden, können die
Funktionalität
und die entsprechenden Merkmale des vorliegenden Systems auch durch geeignete
Software-Routinen oder eine Kombination von Hardware und Software
umgesetzt werden.
-
Obwohl
im Folgenden zahlreiche Ausführungsformen
im Zusammenhang mit resistiven Speichern oder Phasenwechselspeichern
veranschaulicht und erörtert
werden, könnten
sich Aspekte der vorliegenden Erfindung auch auf andere Arten von Speichervorrichtungen
und auf damit verbundene Verfahren beziehen. Einige Beispiele für veranschaulichende
Arten von resistivem Speicher umfassen die Folgen den: Perowskit-Speicher,
OxRAM (Binary Oxides Random Access Memory), PCRAM (Phase Change
Random Access Memory, CBRAM (Conductive Bridging Random Access Memory)
und Polymerspeicher. Weitere Typen von Speicher, die als unter den
Schutzumfang der Erfindung fallend angesehen werden, umfassen die
Folgenden: RAM (Random Access Memory), SRAM (Static Random Access
Memory), DRAM (Dynamic Random Access Memory), ROM (Read Only Memory),
ferroelektrischer Speicher, Flash-Speicher, EEPROM und EPROM.
-
Unter
Bezugnahme auf 1 ist ein einigermaßen herkömmliches
Speicherfeld 100 zu sehen, das eine Anzahl von Speicherzellen 102 umfasst,
die jeweils in der Lage sind, je nach Implementierung ein oder mehrere
Datenbits zu speichern. Die Zellen 102 sind in M Reihen
(zum Beispiel Wörtern)
und N Spalten (zum Beispiel Bits) angeordnet, was durch CREIHE_SPALTE angegeben wird. Bei jeder Reihe
von Zellen handelt es sich um ein N Bit langes Datenwort, auf das
durch Aktivieren einer mit dieser Reihe verbundenen Wortleitung
WL zugegriffen werden kann. Zum Beispiel bilden in der ersten Reihe
des Felds 100 die Zellen C1,1 bis
C1,N ein N Bit langes Datenwort, auf das
durch Aktivieren der Wortleitung WL1 über die Bitleitungen BL1 bis
BLN zugegriffen werden kann. Allgemein ausgedrückt können, während die Wortleitung zugesichert
ist, durch ordnungsgemäßes Vorspannen
der Bitleitungen Datenwerte aus den Zellen gelesen oder in die Zellen
geschrieben werden.
-
Je
nach Implementierung kann auf jede Spalte von Zellen über eine
einzelne Bitleitung oder über
ein Paar von Bitleitungen zugegriffen werden. Zum Beispiel könnte das
Feld in einer Ausführungsform
in einer unsymmetrischen Konfiguration konfiguriert sein, bei der
eine einzelne Bitleitung mit jeder Spalte von Zellen gekoppelt ist.
In der ersten Spalte würden
zum Beispiel die Zellen C1,1 bis CM,1 mit der BL1 gekoppelt (entsprechend der
durchgezogenen Linie auf der linken Seite jeder Zelle). Bei dieser
Konfiguration könnte
ein Leseverstärker
(nicht gezeigt) zum Beispiel einen Datenwert aus der Zelle lesen,
indem er eine Spannung oder einen Strom auf der Bitleitung der Zelle,
auf die zugegriffen wurde, mit der Spannung oder dem Strom einer ähnlichen
Bitleitung einer Referenzzelle vergleicht.
-
Im
Gegensatz dazu könnte
das Feld bei einer weiteren Ausführungsform
in einer differenziellen Konfiguration konfiguriert sein, in der
zwei komplementäre
Bitleitungen mit jeder Spalte von Zellen gekoppelt ist. Zum Beispiel
könnten
in Spalte 1 die Zellen C1,1 und CM,1 mit BL1 und BL2 gekoppelt sein (entsprechend
den sich von den Zellen aus erstreckenden durchgezogenen Linien
und Strichlinien), wobei die Bitleitungen die Tendenz hätten, mit
komplementären
Werten belegt zu sein (zum Beispiel könnte BL1 eine logische „0" und BL2 eine logische „1" darstellen). Bei
dieser Konfiguration liest ein Leseverstärker typischerweise Daten aus
einer Zelle, auf die zugegriffen wurde, indem er eine Spannung oder eine
Stromvorspannung zwischen dem Paar von komplementären Bitleitungen
misst.
-
1A zeigt
eine detailliertere Ausführungsform
einer unsymmetrischen Konfiguration eines Felds 100A aus
resistiven Speicherzellen 102a, wie beispielsweise Phasenwechsel-Speicherzellen.
Bei der veranschaulichten Ausführungsform
umfasst jede Speicherzelle ein resistives Element 150 (zum Beispiel
eine Schicht aus programmierbarem Material) und einen Zugriffstransistor 152.
Bei weiteren, nicht veranschaulichten Ausführungsformen könnte jeder
Zugriffstransistor 152 durch eine Diode ersetzt werden,
die sich, in Reihe geschaltet, zwischen dem Speicherwiderstand und
der Wortleitung befindet.
-
Bei
dieser Ausführungsform
könnten
die resistiven Elemente 150 Phasenwechselelemente aufweisen,
wie beispielsweise das in 2 gezeigte Phasenwechselelement 200.
Das Phasenwechselelement 200 umfasst eine Schicht aus programmierbarem
Material 202 (zum Beispiel ein polykristallines Chalkogenid-Material, wie beispielsweise
GeSbTe oder eine SbTe-Verbindung, oder ein Chalkogenid-freies Material,
wie beispielsweise GeSb oder GaSb), die zwischen einer oberen Elektrode 204 und einer
unteren Elektrode 206 positioniert ist. Bei der veranschaulichten
Ausführungsform
umfasst die untere Elektrode 206 ein Heizelement 208,
das mittels einer geeigneten Konfiguration von Impulsen ein programmierbares
Volumen 210 des programmierbaren Materials entweder in
einen amorphen Zustand (das heißt
einen Zustand mit relativ hohem Widerstand) oder in einen kristallinen
Zustand (das heißt
einen Zustand mit relativ geringem Widerstand) versetzen kann. Diese
Zustände
könnten
dann entsprechenden Datenzuständen
zugewiesen werden – zum
Beispiel könnte
der amorphe Zustand einer logischen „0" zugewiesen werden, und der kristalline
Zustand könnte einer
logischen „1" zugewiesen werden,
oder umgekehrt. Bei verschiedenen Ausführungsformen könnten zusätzliche
Widerstandszustände
entsprechenden Datenzuständen
zugeordnet werden, um eine Multibit-Zelle mit mehr als zwei Zuständen pro
Zelle zu implementieren.
-
Aufgrund
von geringfügigen
Abweichungen zwischen den Speicherzellen des Felds können die programmierten
Widerstände
der Zellen über
das Feld hin variieren. Somit zeigt 3 eine günstige Widerstandsverteilung 300 für ein Speicherfeld
aus binären
Phasenwechsel-Speicherzellen, wobei es zwei unterschiedliche Widerstandsbereiche 302, 304 gibt.
Jede „zuverlässige" Zelle des Felds
weist einen Widerstand auf, der die Tendenz hat, unter eine der glockenförmigen Verteilungen 306, 308 zu
fallen, so dass einige zuverlässige
Zellen 306 dazu tendieren, sich in einem Zustand „1" zu befinden (das
heißt
im zuverlässigen
Widerstandsbereich 302) während andere Zellen 308 dazu
tendieren, sich in einem Zustand „0" zu befinden (das heißt im zuverlässigen Widerstandsbereich 304).
Da zwischen den beiden Zuständen 302, 304 ein
ausreichender Randbereich vorhanden ist, kann der Leseverstärker exakt
aus diesen zuverlässigen
Zellen lesen. Zum Beispiel könnte
bei einer Ausführungsform
ein Leseverstärker eine
Zelle, auf die zugegriffen wird, lesen, indem er den Widerstand
der Zelle mit einem Referenzwiderstand RREF vergleicht,
der einen Widerstand einer Referenzspeicherzelle darstellt, die
sich nicht in einem Zustand „1" oder in einem Zustand „0" befindet.
-
Da
zum Beispiel auf einige Zellen häufiger zugegriffen
wird als auf andere Zellen, können
die Widerstände
der Zellen die Tendenz haben, im Laufe der Zeit eine Abweichung
zu erfahren. Wie in 4 gezeigt, können die Zellen des Felds in
einem solchen Fall zu einer ungünstigen
Verteilung 400 tendieren. Bei dieser ungünstigen
Verteilung 400 weisen fehlerhafte Zellen des Felds die
Widerstände 402 auf, die
die Tendenz haben, in die unzulässigen
Bereiche 406 zu fallen, welche die zuverlässigen Bereiche 302, 304 umgeben.
Bei diesen Zellen kann es vorkommen, dass ein ausreichender Puffer
zwischen dem Signal- und dem Rauschpegel (Noise Margin) fehlt oder
dass sogar sich überlagernde
Widerstandsverteilungen entstehen. Da diese fehlerhaften Zellen
keinen erkennbaren Widerstand mehr aufweisen, stellen diese fehlerhaften
Zellen unzuverlässige Daten
bereit. Bei einigen Ausführungsformen
sind die fehlerhaften Zellen in einem solchen Maße beschädigt oder zerstört, dass
sie Daten nicht mehr ordnungsgemäß speichern
können.
In einem solchen Fall können
diese fehlerhaften Zellen den Speicher für praktische Zwecke unbrauchbar
machen, und der Benutzer muss dann den Speicher und jegliches Datenverarbeitungssystem,
in dem der Speicher eingebettet ist, wegwerfen.
-
Um
die Auswirkungen dieser fehlerhaften Zellen abzumildern und die
Nutzlebensdauer des Speichers und von jeglichem damit verbundenen
Datenverarbei tungssystem zu erhöhen,
betreffen Aspekte der vorliegenden Erfindung Verfahren und Systeme
zum dynamischen Analysieren der Zellen des Felds während der
Lebensdauer der Vorrichtung, um zu ermitteln, ob das Feld fehlerhafte
Zellen umfasst. Wenn das Feld tatsächlich fehlerhafte Zellen umfasst,
ordnet der Speicher die fehlerhaften Zellen anderen, nicht fehlerhaften
Zellen zu, wodurch der Datenverlust aufgrund der fehlerhaften Zellen
abgemildert wird. Bei einer Ausführungsform
kann der Speicher eine Nachschlagetabelle verwenden, um einen fehlerhaften
Zellen zugeordneten Adressbereich auf einen neuen Adressbereich
in einem redundanten Speicher abzubilden. Demgemäß haben die Erfinder Verfahren,
Systeme und Vorrichtungen für
sich selbst reparierende Speicher ersonnen.
-
Unter
Bezugnahme auf 5 ist eine Speichervorrichtung 500 zu
sehen, die so konfiguriert ist, dass sie fehlerhafte Zellen berücksichtigt.
Die Speichervorrichtung 500 umfasst ein Speicherfeld 502 (wie
beispielsweise das zuvor erörterte
Feld 100), Steuerschaltungen 504 und einen redundanten
Speicher 506.
-
Der
redundante Speicher 506 umfasst redundante Speicherzellen,
die oft reserviert werden, um fehlerhafte Speicherzellen zu ersetzen.
Typischerweise handelt es sich bei dem redundanten Speicher um einen „Notizblockspeicher"-Sektor innerhalb
des Speicherfelds 502, aber bei weiteren Ausführungsformen
könnte
es sich bei dem redundanten Speicherfeld um ein gesondertes Speicherfeld
handeln, das auf demselben Halbleiterkörper ausgebildet ist wie das
Speicherfeld, um eine Chipexterne Speichervorrichtung (DRAN, SRAM, Flash-Speicher,
EEPROM, EPROM, usw.) oder um eine andere Art von Speicher (zum Beispiel
Register). Der redundante Speicher 506 kann flüchtige oder
nichtflüchtige
Speicherzellen, wie beispielsweise die in diesem Dokument erwähnten, umfassen.
-
Um
die gewünschte
Funktionalität
bereitzustellen, sind die Steuerschaltungen 504 so konfiguriert,
dass sie fehlerhafte Bits innerhalb des Speicherfelds 502 erkennen
und einen mit fehlerhaften Bits verbundenen Adressbereich auf einen
Adressbereich mit entsprechender Größe innerhalb des redundanten
Speichers 506 abbilden. Eine detailliertere Funktionalität dieser
Blöcke
in diversen Ausführungsformen
wird unter Bezugnahme auf die unten aufgeführten Verfahren gewürdigt.
-
Mehrere
veranschaulichende Verfahren (600, 700, 800)
werden nun nachfolgend unter Bezugnahme auf mehrere Ablaufdiagramme
(6, 7 bzw. 8) dargelegt,
um diverse Aspekte der Erfindung weiter zu würdigen. Obwohl diese Verfahren
nachfolgend als eine Reihe von Handlungen oder Ereignissen veranschaulicht
und beschrieben werden, wird gewürdigt,
dass die vorliegende Erfindung nicht durch die veranschaulichte
Reihenfolge solcher Handlungen oder Ereignisse beschränkt ist.
Zum Beispiel können
erfindungsgemäß einige
Handlungen in anderen Reihenfolgen und/oder gleichzeitig mit anderen
Handlungen oder mit Ereignissen außer denjenigen auftreten, die
in diesem Dokument veranschaulicht und/oder beschrieben sind. Außerdem kann
es sein, dass nicht alle veranschaulichten Schritte erforderlich
sind, um eine Methodik gemäß der vorliegenden
Erfindung zu implementieren. Des Weiteren können die Verfahren gemäß der vorliegenden
Erfindung in Verbindung mit den in diesem Dokument veranschaulichten
(zum Beispiel der Speichervorrichtung 500 in 5)
und beschriebenen Vorrichtungen und Systemen implementiert werden,
sowie in Verbindung mit anderen, nicht veranschaulichten Strukturen.
-
Typischerweise
verlagern sich diese Verfahren 600, 700, 800 von
einer Gruppe von Speicherzellen innerhalb des Felds zu einer anderen
Gruppe innerhalb des Felds, während
sie die Daten innerhalb jeder Gruppe auf Fehler prüfen. Wenn
die Daten innerhalb einer Gruppe einen Fehler enthalten, kann eine
dynamische Redundanzprozedur durchgeführt werden, um jegliche fehlerhaften
Zellen wirksam zu ersetzen. Bei diversen Ausführungsformen können diese
Verfahren während
normaler Lesevorgänge
erfolgen, aber in weiteren Ausführungsformen
können sie
in einem dedizierten Testmodus durchgeführt werden. Bei einigen Ausführungsformen
kann die Speichervorrichtung, während
diese Verfahren in der Speichervorrichtung ablaufen, ein „Ausgelastet"-Signal auf ihrem
Bus bereitstellen, so dass andere Programme während der Prüfung nicht
auf die Speichervorrichtung zugreifen. Bei diversen Ausführungsformen
könnte
ein Benutzer die Speichervorrichtung auffordern, diese Verfahren
einzuleiten.
-
Unter
Bezugnahme auf 6 ist das Verfahren 600 zu
sehen, das Gruppen von Zellen innerhalb des Felds periodisch auf
fehlerhafte Daten hin überprüft und die
fehlerhaften Daten so weit wie möglich korrigiert.
Wenn die fehlerhaften Daten nicht mehr korrigiert werden können (das
heißt,
nachdem nicht behebbare Fehler aufgetreten sind), bestimmt das Verfahren,
ob die Fehler aufgrund fehlerhafter Zellen aufgetreten sind, in
denen die Daten nicht mehr ordnungsgemäß gespeichert werden. Wenn
dies der Fall ist, konfiguriert es die Speichervorrichtung neu, so
dass die fehlerhaften Zellen auf redundante Zellen im redundanten
Speicher abgebildet werden.
-
Insbesondere
werden in Block 602 anfängliche
Daten aus einer Gruppe von Zellen im Speicherfeld gelesen. Wie sie
in dieser Schrift verwendet wird, könnte eine Gruppe ein oder mehrere
Bits, ein oder mehrere Nibbles, ein oder mehrere Bytes, ein oder mehrere
Wörter,
einen oder mehrere Blöcke,
einen oder mehrere Sektoren, eine oder mehrere Seiten, das gesamte
Speicherfeld oder eine andere Anzahl von Speicherzellen aufweisen.
-
In
Block 604 wird ein Algorithmus verwendet, um die Anzahl
von Bitfehlern in der Gruppe zu überwachen.
Veranschaulichende Algorithmen könnten Fehlerkorrekturprüfungen (ECC)
oder Fehlererkennung und -korrektur (EDAC) umfassen, wobei es sich um
Techniken auf der Grundlage von Hamming- oder Read-Solomon-Codes handelt, bei
denen redundante Bits solchermaßen
zur Gruppe hinzugefügt
werden, dass eine zerstörte
Gruppe mit einem Einzelbitfehler ein Muster zeigt, das eindeutig
auf das zerstörte
Einzelbit zeigt. Diese redundanten Bits können zum Beispiel in einem „Notizblockspeicher"-Sektor innerhalb
der Speichervorrichtung oder innerhalb des Speicherfelds 502 gespeichert
werden. Bei weiteren Ausführungsformen
könnten
weitere Algorithmen verwendet werden. Zum Beispiel könnte der
Algorithmus außerdem
ein Paritätsprüfbit nutzen,
wobei typischerweise keine Fehlerkorrekturfunktionen enthalten sind.
-
In
einer ECC-Implementierung könnten, wenn
eine Gruppe 2N Bit umfasst (wobei N = 0
oder eine beliebige positive Ganzzahl ist), 2·N Redundanzbits gespeichert
werden. Diese Redundanzbits könnten
verwendet werden, um jegliche Fehler innerhalb der Gruppe zu erkennen
und Einzelbitfehler innerhalb der Gruppe zu identifizieren und zu
korrigieren. Wenn zum Beispiel eine 32-Bit-Gruppengröße (das
heißt
25 Bit) ausgewählt wird, könnten 10 Redundanzbits (das
heißt
2·5 Redundanzbits)
gespeichert werden. Wenn ein Einzelbitfehler auftritt, könnten diese
Bits dann das einzelne Fehlerbit identifizieren und korrigieren.
Wenn ein Multibit-Fehler
aufgetreten ist, könnten
diese Bits den Benutzer über
den Fehler benachrichtigen oder eine andere geeignete Maßnahme einleiten.
Während
mehr Redundanzbits für
eine bestimmte Gruppengröße dazu
tendieren, einen umfangreicheren Fehlerschutz bereitzustellen, würden diese
Redundanzbits auch dazu tendieren, die Leistung der Vorrichtung
durch das Hinzufügen von
zusätzlichem
Berechnungsaufwand zu verringern. Daher besteht typischerweise ein
Kompromiss zwischen der Leistung und der Fähigkeit, Bitfehler zu korrigieren.
-
In
Block 606 erfolgt eine optionale Bestimmung hinsichtlich
dessen, ob die Anzahl von Bitfehlern größer ist als die Anzahl von
Bits, die der Algorithmus korrigieren kann (das heißt größer als
ein Korrekturmöglichkeits-Schwellenwert).
Wie sich aus der obigen Erörterung
erkennen lässt,
ist der Korrekturmöglichkeits-Schwellenwert oft
eine Funktion des spezifischen Algorithmus, der verwendet wird.
Wenn die Anzahl von Bitfehlern geringer ist als der Zerstörungs-Schwellenwert
(„NEIN” in Block 606),
dann werden die Fehler in Block 608 korrigiert. Von Block 608 aus
wird das Verfahren in Block 610 fortgesetzt, wo eine Bestimmung
hinsichtlich dessen erfolgt, ob eine weitere Gruppe gelesen oder
getestet werden soll.
-
Wenn
jedoch die Anzahl von Bitfehlern größer ist als der Korrekturmöglichkeits-Schwellenwert („JA” in Block 606),
kann das Verfahren in Block 612 fortgesetzt und der Benutzer
darüber
benachrichtigt werden, dass Fehler aufgetreten sind.
-
Das
Verfahren wird dann in Block 614 fortgesetzt und bestimmt
optional, ob die Bitfehler aufgrund von fehlerhaften Zellen aufgetreten
sind, die keine zuverlässigen
Daten mehr bereitstellen können.
Dies könnte
zum Beispiel erreicht werden, indem wiederholt Testdaten in die
Gruppe von Zellen geschrieben und Daten aus der Zelle zurückgelesen
werden, um sicherzustellen, dass die fehlerhaften Daten nicht einfach
aufgrund einer Anomalie (zum Beispiel ein Alpha-Teilchen oder eine
andere Strahlung, welche die Zelle trifft und die fehlerhaften Daten
verursacht) aufgetreten sind. Wenn die fehlerhaften Daten nicht das
Ergebnis einer fehlerhaften Zelle sind („NEIN” in Block 614), könnte der
Benutzer benachrichtigt werden, aber die gelesene oder getestete
Gruppe kann nach wie vor für
zukünftige
Zugriffe verwendet werden.
-
Wenn
die Bitfehler im Gegensatz dazu aufgrund von fehlerhaften Zellen
auftreten, die keine zuverlässigen
Daten mehr bereitstellen können
(„JA” in Block 614),
leitet das Verfahren eine Redundanzkonfigurierung 616 ein,
welche die Gruppe von Zellen (oder lediglich die fehlerhaften Zellen
innerhalb der Gruppe) entsprechenden redundanten Zellen im redundanten
Speicher zuordnet.
-
In
Block 618 beginnt die Redundanzkonfigurierung, wenn der
Prozess eine ausreichende Anzahl von redundanten Speicherzellen
zuteilt, um die fehlerhaften Zellen oder die fehlerhafte Gruppe
von Zellen zu berücksichtigen.
Bei einer Ausfüh rungsform könnte der
Prozess exakt genügend
redundante Zellen zuteilen, um nur die fehlerhaften Zellen zu berücksichtigen,
während
der Prozess bei anderen Ausführungsformen
genügend
Zellen zuteilen könnte,
um die ganze Gruppe, auf die zugegriffen wird, zu berücksichtigen.
Wenn die Gruppe, auf die zugegriffen wird, zum Beispiel aus einem
Wort (das heißt
32 Bit) bestünde,
das 1 fehlerhafte Zelle (das heißt 1 Bit) enthält, könnte der
Prozess bei einer Ausführungsform
lediglich ein Einzelbit (das heißt 1 Bit) im Redundanzspeicher
zuteilen, während
der Prozess bei weiteren Ausführungsformen
ein gesamtes Wort (das heißt
32 Bit) im Redundanzspeicher zuteilen könnte. Bei typischen Ausführungsformen
könnte
das gesamte Wort zugeteilt werden (im Gegensatz zum Einzelbit),
um die Adressierung zu rationalisieren. Außerdem könnte in diesem Block 618,
wenn im redundanten Speicher kein ausreichender Speicher verfügbar ist,
ein Fehlerkenner für
den Benutzer gesetzt werden. Bei einer Ausführungsform werden sowohl die
redundanten Speicherzellen als auch die Adressabbildungsinformationen
in einem speziellen Bereich des Speicherfelds 502 gespeichert,
der für
derartige Informationen reserviert ist.
-
In
Block 620 wird, nachdem ausreichender redundanter Speicher
zugeteilt worden ist, der Adressbereich der fehlerhaften Zellen
auf einen neuen Adressbereich im redundanten Speicher abgebildet.
Typischerweise könnte
dies durch die Verwendung eines Nachschlagevorgangs in einer Tabelle vereinfacht
werden, wobei die Steuerschaltungen eine Tabelle unterhalten, in
welcher der Adressbereich der fehlerhaften Zellen und der neue Adressbereich
im redundanten Speicher über
Querverweise miteinander verbunden sind. Daher greifen die Steuerschaltungen,
obwohl ein Benutzer den Steuerschaltungen möglicherweise eine den fehlerhaften Zellen
entsprechende Adresse bereitstellt, automatisch auf den neuen Adressbereich
innerhalb des redundanten Speichers zu. Somit gestaltet sich gemäß einer
Implementierung der Übergang
zwischen fehlerhaften Zellen und dem redundanten Speicher für einen
Benutzer auf nahtlose Weise.
-
Bei
einer Ausführungsform
könnte
dieser Nachschlagevorgang in der Tabelle als Bank aus Register oder
anderen Speicherelementen in der Speichervorrichtung implementiert
werden. Wenn fehlerhafte Zellen erkannt werden, könnte dann
eine diesen fehlerhaften Zellen entsprechende Adresse in dieser
Bank aus Registern gespeichert werden. Wenn ein Benutzer auf das
Speicherfeld zugreift, kannten der Adressen-Decodierer oder andere
Steuerschaltungen die vom Benutzer gelieferte Adresse mit den in
der Nachschlagetabelle gespeicherten Adressen vergleichen. Wenn die
vom Benutzer gelieferte Adresse einer fehlerhaften Adresse entspricht, greift
die Speichervorrichtung, wie durch den Nachschlagevorgang in der
Tabelle angegeben, automatisch auf die Zellen im redundanten Speicher
zu.
-
Unter
Bezugnahme auf 7 ist ein weiteres Verfahren 700 gemäß Aspekten
der vorliegenden Erfindung zu sehen. Allgemein ausgedrückt überprüft dieses
Verfahren 700 während
normaler Lesevorgänge
die Gruppen von Zellen innerhalb des Felds auf Fehler und korrigiert
Fehler so weit wie möglich. Jedoch
bestimmt dieses Verfahren 700, anders als das Verfahren 600,
ob die Fehler aufgrund von fehlerhaften Zellen aufgetreten sind,
bevor die Fehler unkorrigierbar werden. Wenn diese korrigierbaren
Fehler aufgrund fehlerhafter Zellen aufgetreten sind, bildet das
Verfahren die fehlerhaften Zellen auf entsprechende redundante Zellen
ab, bevor Fehler in Kauf genommen werden müssen. Bei der veranschaulichten
Ausführungsform
wird dies dadurch erreicht, dass das Auslösen des Abbildungsvorgangs
auf der Grundlage dessen erfolgt, ob die Anzahl von Bitfehlern ein
wenig geringer ist als der der Gruppe zugeordnete Korrekturmöglichkeits-Schwellenwert.
-
In
Block 702 werden anfängliche
Daten wiederum aus einer Gruppe von Zellen im Speicherfeld gelesen.
Als Nächstes
wird in Block 704 ein Algorithmus wie die oben angesprochenen
verwendet, um die Anzahl von Bitfehlern in der Gruppe zu überwachen.
Diese Fehler werden so weit wie möglich korrigiert.
-
In
Block 706 erfolgt eine Bestimmung hinsichtlich dessen,
ob die Anzahl von Bitfehlern größer ist
als ein Schwellenwert, wobei dieser Schwellenwert ein wenig niedriger
ist als Korrekturmöglichkeits-Schwellenwert,
welcher der zu testenden Gruppe von Zellen zugeordnet ist. Wenn
zum Beispiel ein ECC-Algorithmus verwendet wird, der bis zu 4 Bit
pro Gruppe korrigieren könnte,
könnte
der Schwellenwert auf 3 Bit gesetzt werden. Wenn die Anzahl von Bitfehlern
geringer ist als dieser Schwellenwert („NEIN” in Block 706), sind
die Fehler korrigiert worden, und das Verfahren 700 wird
in Block 708 fortgesetzt, wo eine weitere Gruppe gelesen
oder getestet werden kann.
-
Wenn
die Anzahl von Bitfehlern größer ist
als der Schwellenwert („JA” in Block 706),
wird das Verfahren in Block 710 fortgesetzt. Wenn somit
das Feld Zellen aufweist, die langsam zu fehlerhaften Zellen werden,
sollte sich die Anzahl von Bitfehlern langsam erhöhen. Indem
er den Schwellenwert direkt unter die Anzahl von korrigierbaren
Bits setzt, kann der Benutzer die Zellen so lange noch verwenden,
wie es sinnvollerweise möglich
ist, und dann zu den redundanten Zellen wechseln, bevor Datenfehler
auftreten.
-
In
Block 710 erfolgt eine optionale Bestimmung hinsichtlich
dessen, ob die Bitfehler aufgrund von fehlerhaften Zellen in der
Gruppe oder zum Beispiel aufgrund einer Anomalie auftreten. Wenn
die Fehler nicht aufgrund von fehlerhaften Zellen auftreten („NEIN” in Block 710),
kann die Speichervorrichtung die Gruppe von Zellen im Feld weiterhin
nutzen, obwohl das Verfahren den Benutzer optional darüber benachrichtigen
kann, dass nachfolgend vermutlich fehlerhafte Daten auftreten werden.
-
Wenn
die Bitfehler aufgrund von fehlerhaften Zellen auftreten („JA” in Block 710),
teilt das Verfahren in Block 712 ausreichend redundanten
Speicher zu, um die fehlerhaften Zellen (oder die zu testende Gruppe)
zu berücksichtigen.
-
In
Block 714 werden die korrigierten Daten, die in die fehlerhaften
Zellen geschrieben werden sollten, in den zugeteilten redundanten
Speicher geschrieben. Zuletzt wird in Block 716 der den
fehlerhaften Zellen zugeordnete Speicherbereich auf einen neuen
Adressbereich im redundanten Speicher abgebildet.
-
Somit
sind in diesem Szenario typischerweise alle Datenfehler korrigiert,
und es wird zeitnah zu den redundanten Speicherzellen gewechselt,
um Fehler zu vermeiden.
-
Unter
Bezugnahme auf 8 ist noch ein weiteres Verfahren 800 zu
sehen, das geschwächte Zellen
erkennen kann, indem es Daten in Zellen schreibt und dann diese
Daten durch Verwendung eines zusätzlichen
Schutzbandpuffers überprüft. Dieses
Verfahren 800 erlaubt, dass geschwächte Zellen ersetzt werden,
bevor Fehler auftreten.
-
In
Block 802 werden anfängliche
Daten aus einer Gruppe von Zellen in einem Pufferspeicher gespeichert,
bei dem es sich zum Beispiel um eine Chip-externe Speichervorrichtung,
einen „Notizblockspeicher"-Sektor innerhalb
des Speicherfelds oder des Redundanzspeichers oder um einen Speicher
irgendwo anders in der Vorrichtung oder im System handeln kann.
-
In
Block 804 werden Testdaten in die Gruppe von Zellen geschrieben.
-
In
Block 806 werden Daten aus der Gruppe gelesen. Bei einer
Ausführungsform
wird dieser Lesevorgang unter Verwendung eines zusätzlichen,
zur Leseverstärkereinstellung
hinzugefügten
Schutzbandpuffers (siehe zum Beispiel 9 und die
nachfolgende begleitende Erörterung)
durchgeführt.
-
Als
Nächstes
werden in Block 808 die gelesenen Daten mit den Testdaten
verglichen, die zuvor in die Zelle geschrieben worden waren. Wenn
die Zellen in der Gruppe im Idealfall nicht fehlerhaft sind, waren
die gelesenen Daten erwartungsgemäß gleich den Testdaten. Somit
könnte
bei einer Ausführungsform
dieser Vergleich eine logische XOR- oder XNOR-Funktion umfassen,
so dass, wenn irgendwelche gelesenen Bits von den entsprechenden
Testbits abweichen, fehlerhafte Bits eindeutig identifiziert werden
können.
Weitere Algorithmen, wie beispielsweise die zuvor erörterten,
könnten
ebenfalls verwendet werden, um diesen Vergleich durchzuführen.
-
Wenn
die gelesenen Daten im Vergleich mit den Testaten übereinstimmen
(„JA"), werden die Zellen
zu diesem Zeitpunkt als ausreichend zuverlässig angesehen, und das Verfahren
wird bei 810 fortgesetzt, wo eine weitere Gruppe gelesen
oder getestet werden kann. Wenn im Gegensatz dazu die gelesenen
Daten im Vergleich nicht mit den Testdaten übereinstimmen („NEIN” in Block 808),
wird das Verfahren in Block 812 fortgesetzt.
-
In
Block 812 erfolgt eine optionale Bestimmung hinsichtlich
dessen, ob die Bitfehler aufgrund von fehlerhaften Zellen in der
Gruppe oder lediglich aufgrund von Anomalien auftreten, welche die
Zelle beeinträchtigen.
Bei einer Ausführungsform
könnte dies
erreicht werden, indem die Blöcke 802 bis 808 wiederholt
ausgeführt
werden. Wenn die gelesenen Daten sich durchgängig von den Testdaten unterscheiden,
werden die den fehlerhaften Bits zugeordneten Zellen somit als fehlerhaft
angesehen. Wenn die gelesenen Daten im Gegensatz dazu durchgängig gleich
den Testdaten sind (ungeachtet eines einmalig auftretenden Fehlers),
kann das Verfahren bestimmen, dass eine Anomalie aufgetreten ist,
und kann die Zellen weiterhin verwenden.
-
Wenn
die Bitfehler aufgrund von fehlerhaften Zellen innerhalb der Gruppe
auftreten („JA” in Block 814),
teilt das Verfahren wiederum ausreichend redundanten Speicher zu,
um die anfänglichen
Daten zu berücksichtigen,
die jetzt im Puffer gespeichert sind. Wenn der Speicher nicht ausreichend
ist, kann das Verfahren einen Fehlerkenner setzen. Unter der Annahme,
dass ausreichend Speicher vorhanden ist, kann das Verfahren in Block 816 die
Daten aus dem Puffer in den zugeteilten Bereich im redundanten Speicher
schreiben. In Block 818 kann das Verfahren den Adressbereich
der fehlerhaften Zellen wie zuvor beschrieben auf einen neuen Adressbereich
im redundanten Speicher abbilden.
-
9 zeigt
eine detailliertere Ausführungsform
für den
Fall, in dem ein zusätzlicher
Schutzbandpuffer verwendet werden könnte, um geschwächte Zellen
zu erkennen, die möglicherweise dazu
tendieren, fehlerhafte Zellen zu werden. Wenn wie gezeigt Daten
typischerweise aus einer Zelle gelesen werden, entwickelt sich auf
der der Zelle zugeordneten Bitleitung eine Spannung, die proportional zum
Widerstand der Speicherzelle ist. Somit wird in 9 eine
Spannungsverteilung 900 der Zellen des Speicherfelds veranschaulicht,
wobei die Zellen Spannungen aufweisen, die innerhalb der zuverlässigen Spannungsbereiche 902, 904 liegen,
welche wie gezeigt einem Zustand „0" oder einem Zustand „1" entsprechen. Im Allgemeinen vergleicht
ein Leseverstärker
die Spannung aus der Zelle mit der Referenzspannung VREF und
bestimmt dadurch, ob die Zelle, auf die zugegriffen wird, sich im
Zustand „1" oder „0" befindet. Während des
Lesevorgangs mit erhöhtem Schutzbandpuffer
(siehe 8, Block 806), können der obere und der untere
Schutzbandpuffer (906 bzw. 908) relativ zu normalen
Lesevorgängen
im Betrieb weiter von der Referenzspannung VREF weg
bewegt werden. Somit unterliegen die einzelnen Speicherzellen des
Felds einer strengeren Verteilung. Demgemäß können geschwächte Zellen, die dicht bei
den Rändern
der zuverlässigen
Spannungsbereiche 902, 904 liegen, identifiziert
werden. Diese geschwächten Zellen
stellen oft noch exakte Daten bereit und können daher bei Bedarf auf redundante
Zellen abgebildet werden, bevor Fehler auftreten.
-
Bei
diversen Ausführungsformen
könnte
es sich bei der Speichervorrichtung um eine doppelt redundante Speichervorrichtung
oder eine noch höher redundante
Speichervorrichtung handeln. Zum Beispiel laufen bei einer doppelt
redundanten Speichervorrichtung die oben erörterten Verfahren (oder weitere
Verfahren) nicht nur im Speicherfeld (erste Redundanz) ab, sondern
auch im redundanten Speicher, sowie dieser zugeteilt ist (zweite
Redundanz). Demgemäß kann eine
redundante Speicherzelle, wenn sie fehlerhaft wird, durch eine weitere
redundante Speicherzelle (oder eine andere Speicherzelle) ersetzt
werden, um die Speichervorrichtung erneut zu reparieren.
-
10 zeigt
eine Ausführungsform
eines Datenverarbeitungssystems 1000, welches Datenverarbeitungsschaltungen 1002 aufweist,
die so konfiguriert sind, dass sie Daten verarbeiten; und eine Speichervorrichtung 1004 zum
Speichern der Daten. Bei der Speichervorrichtung kann es sich um
eine beliebige der in diesem Dokument beschriebenen Speichervorrichtungen
handeln. Zum Beispiel kann bei einer Ausführungsform die Speichervorrichtung 1004 ein
Feld aus Phasenwechsel-Speicherzellen umfassen. Bei einer Ausführungsform
könnte
es sich bei dem Datenverarbeitungssystem 1000 um eine Kommunikationsvorrichtung
handeln, wie beispielsweise ein Mobiltelefon oder ein Personenrufgerät (Pager). Bei
weiteren Ausführungsformen
könnte
es sich bei dem Datenverarbeitungssystem 1000 um ein tragbares
elektronisches Produkt handeln, wie beispielsweise einen tragbaren
Computer, ein Mobiltelefon, ein Personenrufgerät, eine Kamera, ein Musikgerät, ein Sprachaufzeichnungsgerät, usw.
Bei noch weiteren Ausführungsformen,
könnte
das Datenverarbeitungssystem 1000 ein elektronisches System,
wie beispielsweise ein Automobil, ein Flugzeug, eine industrielle
Steueranlage, usw. umfassen.
-
Während aus
praktischen Gründen
und aus Gründen
der Klarheit eine Ausführungsform
einer binären
Phasenwechsel-Speicherzelle erörtert
wurde, betreffen Aspekte der vorliegenden Erfindung ebenfalls Multibit-Speicherzellen
(zum Beispiel Multibit-Phasenwechsel-Speicherzellen, Multibit-Flash-Zellen,
resistive Multibit-Zellen,
usw.), wie beispielsweise mehr als 2 Ebenen, die von einer physischen
Speicherzelle gespeichert werden, das heißt, 1,5 Bit/Zelle. 11 zeigt
eine Widerstandsverteilung der Multibit-Zelle, die wiederum ein
allgemeines Schema zeigt, bei dem ein Bereich von Widerständen in
eine Reihe von zuverlässigen
Widerstandsbereichen aufgeteilt werden kann. Diese Multibit-Speicherzellen
könnten
auch von der günstigen Verteilung
abweichen, wodurch, wie oben beschrieben, fehlerhafte Zellen entstehen.
-
Während die
Erfindung im Hinblick auf eine oder mehr Implementierungen veranschaulicht
und beschrieben wurde, können
Veränderungen und/oder
Modifikationen an den veranschaulichten Beispielen vorgenommen werden,
ohne dass hierdurch vom Gedanken und Schutzumfang der angehängten Ansprüche abgewichen wird.
Mit besonderem Hinblick auf die verschiedenen Funktionen, die von
den oben beschriebenen Komponenten oder Strukturen (Baugruppen,
Vorrichtungen, Schaltungen, Systeme, usw.) ausgeführt werden,
ist beabsichtigt, dass die Begriffe (einschließlich einer Bezugnahme auf
ein „Mittel"), die zum Beschreiben
solcher Komponenten verwendet werden, jeder beliebigen Komponente
oder Struktur entsprechen sollen, welche die angegebene Funktion
der beschriebenen Komponente ausführt (zum Beispiel, dass sie
funktional gleichwertig ist), obwohl sie nicht strukturell gleichwertig
mit der offenbarten Struktur ist, welche die Funktion in den in
diesem Dokument veranschaulichten, beispielhaften Implementierungen
der Erfindung ausführt,
es sei denn, es ist es ist etwas anderes angegeben. Außerdem kann,
während
ein bestimmtes Merkmal der Erfindung im Hinblick auf nur eine von
mehreren Implementierungen offenbart worden sein kann, ein solches
Merkmal mit einem oder mehreren weiteren Merkmalen der anderen Implementierungen
kombiniert werden, soweit dies für jede
beliebige betreffende oder bestimmte Anwendung wünschenswert und vorteilhaft
ist. Außerdem sollen,
in dem Maße,
in dem die Begriffe „umfassend", „umfasst", „aufweisend", „aufweist", „mit" oder Varianten davon
sowohl in der ausführlichen
Beschreibung als auch in den Ansprüchen verwendet werden, solche
Begriffe auf eine Weise einschließend sein, dass sie gleichbedeutend
mit dem Begriff „enthaltend" sind.