-
HINTERGRUND DER ERFINDUNG
-
Ausführungsformen
der vorliegenden Erfindung betreffen allgemein Speichereinrichtungen. Speichereinrichtungen
werden in vielen verschiedenen Arten von Systemen zum Speichern
von Code und Daten verwendet. Code und Daten werden manchmal aufgrund
von deren Zugriffsanforderungen in zwei separaten Speichern gespeichert.
Zum Beispiel wird Code typischerweise in eine Speichereinrichtung
als ein großer
Block von Daten während der
Systemherstellung oder Codeinstallation oder einer Aktualisierung
geschrieben. Code wird in einer zufälligen Art, durch Programmzähler, -sprünge und -verzweigungen
in Softwareroutinen gelenkt, geschrieben. Die meisten Daten werden
während
der Abarbeitung einer Anwendung in Blöcken geschrieben oder gelesen.
-
Eine
direkte Ausführung
von in einem Speicher gespeicherten Befehlen erfordert, dass diese Befehle
in deren korrekten Form innerhalb einer relativ kurzen anfänglichen
Zugriffslatenz, vielleicht 100 nS, zur Verfügung gestellt werden. Innerhalb
der Fähigkeiten
der Logik in diesen Speichern ist es nicht möglich, mehr als Einzelzellenkorrektur
der Befehle durchzuführen,
bevor diese Befehle an das System ausgegeben werden.
-
In
vielen Fällen
treten Mehrfachzellenfehler als erstes als ein Einzelzellenfehler
auf. Zu einem späteren
Zeitpunkt tritt ein zweiter Fehler in demselben Codewort auf. Mit
herkömmlichen
Techniken ist dieser Mehrfachzellenfehler nicht korrigierbar und werden
fehlerhafte Daten an das System zurückgegeben.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Der
als die Erfindung angesehene Gegenstand wird in der Zusammenfassung
der Beschreibung speziell herausgestellt und eindeutig beansprucht.
Die Erfindung kann jedoch wohl hinsichtlich der Organisation als
auch des Arbeitsverfahrens, gemeinsam mit Aufgaben, Merkmalen und
Vorteilen am besten unter Bezugnahme auf die folgende ausführliche
Beschreibung in Kombination mit den beigefügten Zeichnungen verstanden
werden, in denen:
-
1 eine
schematische Darstellung eines Blockdiagramms eines Speichers gemäß einer
beispielhaften Ausführungsform
der vorliegenden Erfindung zeigt;
-
2 eine
schematische Darstellung eines Blockdiagramms eines Speichersystems
gemäß einer
weiteren beispielhaften Ausführungsform
der vorliegenden Erfindung zeigt;
-
3 eine
Darstellung eines Flussdiagramms eines Verfahrens zur Fehlerdetekion
und -korrektur eines Fehlers in einem fehlerhaften Codewort gemäß beispielhaften
Ausführungsformen
der Erfindung zeigt; und
-
4 eine
Darstellung eines Flussdiagramms des Verfahrens zur Fehlerdetektion
und -korrektur von nachfolgenden Fehlern in dem Codewort von 3 gemäß Ausführungsformen
der vorliegenden Erfindung zeigt.
-
Die
Verwendung derselben Bezugszeichen in verschiedenen Zeichnungen
gibt ähnliche
oder identischen Gegenstände
an.
-
Es
versteht sich, dass der Einfachheit und Klarheit halber der Darstellung
Elemente, die in den Figuren gezeigt werden, nicht notwendigerweise maßstabsgerecht
gezeichnet sind. Zum Beispiel können
die Abmessungen von einigen der Elemente im Verhältnis zu anderen Elementen
der Klarheit halber übertrieben
dargestellt sein. Außerdem
können
sich Bezugszahlen in den Figuren, sofern angemessen, wiederholen,
um korrespondierende oder analoge Elemente anzugeben.
-
AUSFÜHRLICHE BESCHREIBUNG VON AUSFÜHRUNGSFORMEN
DER ERFINDUNG
-
In
der folgenden Beschreibung werden zahlreiche spezielle Details dargelegt.
Es versteht sich jedoch, dass Ausführungsformen der Erfindung
ohne diese speziellen Details realisiert werden können. In anderen
Beispielen sind allgemein bekannte Verfahren, Strukturen und Techniken
nicht im Detail gezeigt worden, um ein Verständnis der vorliegenden Beschreibung
nicht zu behindern.
-
Bezugnahmen
auf „eine
(1) Ausführungsform”, „eine Ausführungsform”, „beispielhafte
Ausführungsform”, „zahlreiche
Ausführungsformen” etc. weisen
darauf hin, dass die Ausführungsform(en)
der Erfindung, die so beschrieben ist/sind, ein bestimmtes Merkmal,
eine bestimmte Struktur oder Eigenschaft enthalten kann, aber nicht
jede Ausführungsform
das bestimmte Merkmal, die bestimmte Struktur oder Eigenschaft notwendigerweise
enthält.
Außerdem
bezieht sich die wiederholte Verwendung der Phrase „in einer
(1) Ausführungsform” nicht
notwendigerweise auf dieselbe Ausführungsform, obwohl es möglich wäre.
-
Sofern
nicht anderweitig spezifiziert, gibt hierin die Verwendung der Ordnungswörter „erste”, „zweite”, „dritte” etc. zur
Beschreibung eines gemeinsamen Objekts lediglich an, dass auf unterschiedliche
Beispiele von ähnlichen
Objekten Bezug genommen wird, und soll diese nicht implizieren,
dass die so beschriebenen Objekte in einer bestimmten Reihenfolge,
entweder zeitlich, räumlich,
in der Rangfolge oder in irgendeiner anderen Art, vorgesehen sein müssen.
-
Sofern
nicht speziell anders angegeben, wie anhand der folgenden Diskussion
ersichtlich, versteht es sich, dass sich in der gesamten Beschreibung
Diskussionen, die Begriffe wie „verarbeiten”, „rechnen”, „berechnen”, oder
dergleichen verwenden, auf die Tätigkeit
und/oder Prozesse eines Computers oder Computersystems oder einer ähnlichen elektronischen
Recheneinrichtung, die Daten manipuliert, die als physikalische,
wie zum Beispiel elektronische, Größen repräsentiert sind, und/oder in
andere Daten transformiert, die in ähnlicher Weise als physikalische
Größen repräsentiert
sind, bezieht.
-
In
einer ähnlichen
Weise kann sich der Begriff „Prozessor” auf jede
Einrichtung oder jeden Teil einer Einrichtung beziehen, die/der
elektronische Daten aus Registern und/oder Speicher verarbeitet,
um die elektronischen Daten in andere elektronische Daten umzuwandeln,
die in Registern und/oder Speicher gespeichert werden können. Eine „Rechenplattform” kann einen
oder mehrere Prozessor(en) umfassen.
-
Der
Begriff „Haupt-Array” kann sich
auf ein Array von Speicherzellen beziehen, die zum Speichern von
Code oder Daten verwendet werden. Der Begriff „redundante Elemente” kann sich
auf zusätzliche
Speicherelemente beziehen, die zur Reparatur von fehlerhaftem Code
oder fehlerhaften Daten verwendet werden. Der Begriff „EDAC-Maschine
(Engine)” kann
sich auf eine Fehlerdetektions und -korrekturschaltung beziehen.
Der Begriff „Fehler-Cache-RAM” kann sich
auf einen flüchtigen
Speicher beziehen, der zum Speichern von detektierten Fehlern in
einem Codewort verwendet wird, und der Begriff „NV-Fehler-Cache” kann sich
auf nicht flüchtigen Speicher
(nonvolatile memory (NV)) beziehen, der zum permanenten Speichern
von detektierten Fehlern in einem Codewort verwendet wird.
-
In 1 ist
eine schematische Darstellung eines Blockdiagramms eines Speichers 100 gemäß einer
beispielhaften Ausführungsform
der vorliegenden Erfindung gezeigt. Obwohl der Schutzbereich der
vorliegenden Erfindung nicht auf diese Erfindung beschränkt ist,
enthält
die Speichereinrichtung 100 ein Haupt-Array von Speicherzellen 110,
einen UCODE- Permanent-Reparaturalgorithmus 120,
eine EDAC-Maschine 130, einen Fehler-Cache-RAM 140 und
einen NV-Fehler-Cache 150.
-
Gemäß dieser
beispielhaften Ausführungsform
der Erfindung kann der Speicher 100 ein NOR FLASH sein
und NOR-gestütztes
Array von Speicherzellen enthalten, obwohl verständlich sein sollte, dass der
Schutzbereich der vorliegenden Erfindung in keiner Weise diesbezüglich beschränkt ist.
-
Gemäß dieser
beispielhaften Ausführungsform
der Erfindung kann ein System 105 (z. B. eine Rechenplattform)
auf eine Adresse, die einen Fehler enthält, in dem Haupt-Array 110 zugreifen.
Die EDAC-Maschine 130 kann, falls gewünscht, den Fehler in einem
Bit eines Codeworts in der Adresse, auf die von dem System zugegriffen
wird, detektieren und korrigieren. Die EDAC-Maschine 130 kann
Fehlerkorrekturinformation über
das Bit des Codeworts in dem Fehler-Cache-RAM 140 speichern.
Der Fehler-Cache-RAM 140 kann die Fehlerkorrekturinformation
zum Korrigieren des Fehlers in dem Bit bei einem weiteren Auftreten
eines Fehlers in diesem Bit in diesem Codewort verwenden.
-
Gemäß dieser
Ausführungsform
der Erfindung kann der Fehler-Cache-RAM die Fehlerkorrekturinformation über das
Bit in dem NV-Fehler-Cache 150 speichern. Der NV-Fehler-Cache kann
ein gespiegelter Speicher im Falle von Stromausfall und/oder Ausschalten
des Speichers 100 sein. In anderen beispielhaften Ausführungsformen
kann ein schneller Lese/Schreib-NV-Speicher, falls gewünscht, den
Fehler-Cache-RAM 140 ersetzen. Eine permanente Reparatur
des Codeworts kann durch den Ucode-Permanent-Reparaturalgorithmus 120 durchgeführt werden.
-
Gemäß Ausführungsformen
der Erfindung kann der Ucode-Permanent-Reparaturalgorithmus 120 ein
Verfahren zum permanenten Reparieren von Fehlern in dem Haupt-Array 110 sein.
Zum Beispiel kann der Ucode-Permanent-Reparaturalgorithmus 120 während Löschalgorithmen,
während
des Einschaltens oder als Antwort auf einen Benutzerbefehl laufen,
was der Einrichtung Zeit bietet, um bekannte Fehler in dem Haupt-Array 110 auszubessern.
Der Ucode-Permanent-Reparaturalgorithmus 120 kann eine
Zeile mit einem Fehler löschen
und stattdessen eine reparierte Zeile schreiben, die aus dem NV-Fehler-Cache 150 herruntergeladen
ist. Der Ucode-Permanent-Reparaturalgorithmus 120 kann
die Anforderungen an die Größe des Fehler-Cache-RAM 140 und
NV-Fehler-Cache 150 effektiv reduzieren.
-
Obwohl
der Schutzbereich der vorliegenden Erfindung diesbezüglich nicht
beschränkt
ist, versteht es sich, dass die EDAC-Maschine 130, der Ucode-Permanent-Reparaturalgorithmus 120 und
einige andere Komponenten des Speichers 100 durch Hardware,
durch Software oder durch irgendeine gewünschte Kombination von Hardware
und Software implementiert werden können.
-
In 2 ist
eine schematische Darstellung eines Blockdiagramms eines Speichersystems 200 gemäß einer
weiteren beispielhaften Ausführungsform
der vorliegenden Erfindung gezeigt. Obwohl der Schutzbereich der
vorliegenden Erfindung nicht auf diese Erfindung beschränkt ist,
enthält
das Speichersystem 200 einen Speicher 210 und
einen Speichercontroller 220. Der Speicher 210 kann
ein Haupt-Array 215 enthalten. Der Speichercontroller 220 kann einen
UCODE-Permanent-Reparaturalgorithmus 230, eine EDAC-Maschine 240,
einen Fehler-Cache-RAM 250 und
einen NV-Fehler-Cache 260 enthalten.
-
Gemäß dieser
beispielhaften Ausführungsform
der Erfindung kann der Speicher 210 ein NAND-Flash-basierter
Speicher sein und kann das Haupt-Array 215 ein NAND-basiertes
Array von Speicherzellen sein, obwohl sich versteht, dass der Schutzbereich
der vorliegenden Erfindung diesbezüglich in keiner Weise beschränkt ist.
-
Gemäß dieser
beispielhaften Ausführungsform
der Erfindung kann eine Adressenabfragemaschine 205 Adressen
des Speichers 210 abfragen. Die Adressenabfragemaschine 205 kann
auf eine Adresse zugreifen, die einen Fehler enthält. Die EDAC-Maschine 240 des
Speichercontrollers 220 kann einen Fehler in einem Bit
in einem Codewort detektieren und korrigieren, falls gewünscht. Die EDAC-Maschine 240 kann
Fehlerkorrekturinformation über
das Bit des Codeworts in dem Fehler-Cache-RAM 250 speichern.
Der Fehler-Cache-RAM 250 kann die Fehlerkorrekturinformation
zum Korrigieren des Fehlers in dem Bit bei einem weiteren Auftreten
des Fehlers in diesem Bit in diesem Codewort verwenden.
-
Gemäß dieser
Ausführungsform
der Erfindung kann der Fehler-Cache-RAM 250 die Fehlerkorrekturinformation über das
Bit in dem NV-Fehler-Cache 260 als ein gespiegelter Speicher
im Fall von Stromausfall und/oder Abschalten des Speichers 210 speichern.
In anderen beispielhaften Ausführungsformen
kann ein schneller Lese/Schreib-NV-Speicher den Fehler-Cache-RAM 250 ersetzen.
Eine permanente Reparatur des Codeworts kann durch den Ucode-Permanent-Reparaturalgorithmus 230 durchgeführt werden.
-
Gemäß Ausführungsformen
der Erfindung kann der Ucode-Permanent-Reparaturalgorithmus 230 ein
Verfahren zum permanenten Reparieren von Fehlern in dem Speicher 210 sein.
Zum Beispiel kann der Ucode-Permanent-Reparaturalgorithmus 230 während Löschalgorithmen,
während
Einschalten oder als Antwort auf einen Benutzerbefehl laufen, was
der Einrichtung Zeit bietet, um bekannte Fehler in dem Haupt-Array 215 des
Speichers 210 auszubessern. Der Ucode-Permanent-Reparaturalgorithmus 230 kann
eine Zeile mit einem Fehler löschen und
stattdessen eine fehlerkorrigierte Zeile schreiben. Die fehlerkorrigierte
Zeile kann, falls gewünscht, von
dem NV-Fehler-Cache 260 heruntergeladen werden.
-
Obwohl
der Schutzbereich der vorliegenden Erfindung diesbezüglich nicht
beschränkt
ist, versteht es sich, dass die Komponente des Speichercontrollers 220,
wie zum Beispiel EDAC-Maschine 240, Ucode-Permanent-Reparaturalgorithmus 230 und andere
Komponenten durch Hardware, durch Software oder irgendeine gewünschte Kombination
von Hardware und Software implementiert werden können.
-
In 3 ist
eine Darstellung eines Flussdiagramms eines Verfahrens zur Fehlerdetektion
und -korrektur von einen oder mehreren Bits in einem Codewort gemäß einigen
Ausführungsformen
der Erfindung gezeigt. Gemäß einigen
Ausführungsformen der
Erfindung kann das Verfahren damit beginnen, dass von einem System
(z. B. einer Rechenplattform), wie in Textblock 310 gezeigt,
auf eine Adresse eines Haupt-Arrays eines Speichers zugegriffen
wird, die einen Fehler enthält.
-
Gemäß einigen
anderen Ausführungsformen der
Erfindung kann das Verfahren, wie in Textblock 320 gezeigt,
damit beginnen, dass von einer Abfragemaschine (Scan Engine (nicht
gezeigt)) auf eine Adresse eines Haupt-Arrays eines Speichers zugegriffen
wird, die einen Fehler enthält.
In jeder Ausführungsform
der Erfindung kann eine EDAC-Maschine (z. B. EDAC 130)
den Fehler in einem Bit (z. B. Bit 4) eines Codeworts (z. B. Codewort 100)
detektieren und korrigieren, wie dies in Textblock 330 gezeigt
ist. Die EDAC-Maschine kann Fehlerkorrekturinformation in einem
Fehler-Cache-RAM speichern (Textblock 340). Gemäß beispielhaften
Ausführungsformen
der Erfindung kann die Fehlerkorrekturinformation eine Adresse der
Fehlerzeile, einen Symbolort in der Zeile und Korrekturwert für das Symbol
enthalten, das das Bit mit dem Fehler (z. B. Bit 4) enthält. Das
Verfahren kann damit enden, dass die korrigierten Daten für die gewünschte Adresse
(z. B. Adresse 1000) dem System präsentiert werden, obwohl der
Schutzbereich der vorliegenden Erfindung diesbezüglich nicht beschränkt ist.
-
In 4 ist
eine Darstellung eines Flussdiagramms eines Verfahrens zur Fehlerdetektion
und -korrektur von nachfolgenden Fehlern in dem Codewort von 3 gemäß einigen
anderen Ausführungsformen
der vorliegenden Erfindung gezeigt. Gemäß einigen Ausführungsformen
der Erfindung kann das Verfahren die dem System präsentierte Fehlerkorrekturinformation
zum Korrigieren von bekannten Fehlern in Bits des Codeworts (wie
durch das Verfahren von 3 präsentiert) verwenden. Das Verfahren
kann damit beginnen, dass von einem System (z. B. einer Rechenplattform)
auf eine Adresse eines Haupt-Arrays eines Speichers, die einen Fehler
enthält,
zugegriffen wird, wie dies in Textblock 410 gezeigt ist.
-
Gemäß einigen
anderen Ausführungsformen der
Erfindung kann das Verfahren damit beginnen, dass von einer Abfragemaschine
(nicht gezeigt) auf eine Adresse eines Haupt-Arrays eines Speichers, die einen Fehler
enthält,
zugegriffen wird, wie dies in Textblock 420 gezeigt ist.
In jeder Ausführungsform der
Erfindung kann ein Fehler-Cache-RAM (z. B. Fehler-Cache-RAM 140)
den bekannten Fehler in einem Bit (z. B. Bit 4) eines Codeworts
(z. B. Codewort 100) detektieren und korrigieren, wie dies
Textblock 430 gezeigt ist. Die EDAC-Maschine kann einen anderen Fehler in
einem anderen Bit (z. B. Bit 6) des Codeworts detektieren und korrigieren
(Textblock 440). Außerdem
kann sie die neue Fehlerkorrekturinformation in dem Fehler-Cache-RAM
speichern (Textblock 450). Die neue Fehlerkorrekturinformation kann
eine Adresse der Fehlerzeile, einen Symbolort in der Zeile und Korrekturwert
für das
Symbol enthalten, das das Bit mit dem Fehler (z. B. Bit 6) enthält. Das
Verfahren kann damit enden, dass die korrigierten Daten für die gewünschte Adresse
(z. B. Adresse 1000) dem System präsentiert werden, obwohl der Schutzbereich
der vorliegenden Erfindung diesbezüglich nicht beschränkt ist.
-
Es
wird nun ein Beispiel für
die Verwendung der Verfahren gemäß den 3 und 4 präsentiert.
Gemäß diesem
Beispiel kann ein Fehler an einem ersten Tag in Codewort 3 bei Bit
4 auftreten. EDAC detektiert und korrigiert diesen Fehler, wobei die
korrigierten Daten dem Host-System präsentiert. Dieser Fehler wird
in dem Fehler-Cache-RAM gespeichert. An einem anderen Tag tritt
ein anderer Fehler in Codewort 3 bei Bit 6 auf (z. B. Bit 4 Fehler besteht
weiterhin). Eine Haupt-Array-Ausgabe weist Fehler in Bits 4 und
6 auf. Gemäß Ausführungsformen
der Erfindung wird der Fehler in Bit 4 unter Verwendung von Information
korrigiert, die am ersten Tag gespeichert wurde, und wird der Fehler
in Bit 6 unter Verwendung der EDAC-Maschine korrigiert.
-
Die
oben beschriebenen Techniken können in
einem computerlesbaren Medium zur Konfigurierung eines Computersystems
zur Ausführung
des Verfahrens verkörpert
sein. Das computerlesbare Medium kann, beispielsweise und ohne Einschränkung, irgendeines
der folgenden sein: magnetisches Speichermedium, einschließlich Platten-
und Bandspeichermedien; optisches Speichermedium, wie zum Beispiel
Compact Disc-Medien (z. B. CD-ROM, CD-R, etc.) und DVD(Digital Video
Disc)-Speichermedien; holographischer Speicher; nichtflüchtige Speichermedien,
einschließlich
halbleiterbasierte Speichereinheiten, wie zum Beispiel FLASH-Speicher,
EEPROM, EPROM, ROM; ferromagnetische digitale Speicher; flüchtige Speichermedien,
einschließlich
Register, Puffer oder Caches, Hauptspeicher, RAM, etc.; und Datenübertragungsmedien,
einschließlich
permanente und vorübergehende
Computernetze, Punkt-zu-Punkt-Telekommunikationsanlagen, Trägerwellensendemedien,
das Internet, nur einige zu nennen. Andere neue und zahlreiche Typen von
computerlesbaren Medien können
zum Speichern und/oder Senden der hierin diskutierten Softwaremodule
verwendet werden. Computersysteme können auf viele Arten vorkommen,
einschließlich, ohne
darauf beschränkt
zu sein, Großrechner,
Minicomputer, Server, Workstations, Personalcomputer, Notepads,
PDA (Personal Digital Assistants), zahlreiche drahtlose Geräte und eingebettete
Systeme, um nur einige zu nennen. Ein typisches Rechensystem enthält mindestens
eine Verarbeitungseinheit, zugehörigen
Speicher und eine Anzahl von Eingabe/Ausgabe(E/A)-Einrichtungen.
Ein Rechensystem verarbeitet Informationen gemäß einem Programm und erzeugt
resultierende Ausgabeinformation über E/A-Einrichtungen.
-
Es
sind Realisierungen gemäß der vorliegenden
Erfindung im Zusammenhang mit besonderen Ausführungsformen beschrieben worden.
Diese Ausführungsformen
sollen nur zu Darstellungszwecken und nicht als Beschränkung dienen.
Es sind zahlreiche Variationen, Modifikationen, Hinzufügungen und
Verbesserungen möglich.
Dementsprechend können
zahlreiche Exemplare für
hierin als ein Einzelexemplar beschriebene Komponenten vorgesehen
sein. Die Grenzen zwischen zahlreichen Komponenten, Operationen
und Datenspeichern sind etwas willkürlich und besondere Operationen
sind im Zusammenhang mit speziellen illustrativen Konfigurationen
dargestellt worden. Andere Zuteilungen von Funktionalität sind ins
Auge gefasst und können
in den Schutzbereich der folgenden Ansprüche fallen. Schließlich können als
diskrete Komponenten in zahlreichen Konfigurationen präsentierte
Strukturen und Funktionalität
als eine kombinierte Struktur oder Komponente implementiert sein.
Diese und weitere Variationen, Modifikationen, Hinzufügungen und
Verbesserungen fallen in den Schutzbereich der Erfindung, wie sie
in den folgenden Ansprüchen
definiert ist.
-
Zusammenfassung
-
Es
werden ein Speicher und ein Verfahren zur Korrektur und Detektion
eines Fehlers in einem Codewort eines Speichers präsentiert.
Das Verfahren schließt
die Detektion und Korrektur eines Fehlers in einem Bit des Codeworts
durch eine Fehlerdetektions- und -korrekturmaschine ein, wobei Fehlerkorrekturinformation über den
Fehler in einem Cache gespeichert wird. Bei der zweiten Detektion
desselben Fehlers in demselben Bit wird die Korrektur des Fehlers
auf der Grundlage der gespeicherten Fehlerkorrekturinformation durchgeführt.