-
Technisches Gebiet
-
Verschiedene Ausführungsformen betreffen im Allgemeinen ein Verfahren zum Korrigieren von Fehlern in einer Speichervorrichtung, eine Speichervorrichtung und eine Speichervorrichtungsanordnung.
-
Hintergrund
-
Speichervorrichtungen, z. B. nichtflüchtige Speichervorrichtungen (z. B. RRAM-Speichervorrichtungen, welche RRAM-Speicherzellen umfassen, die auch als RRAM-Zellen bezeichnet werden), können bei Auferlegung hoher Temperaturbelastung typischerweise nicht sehr stabil sein. Dies bedeutet, dass sich eine Wahrscheinlichkeit, dass eine RRAM-Speicherzelle ihre Informationen verliert, mit der Temperatur drastisch erhöhen kann. Bei typischen Verbraucher- und Industrieanwendungen kann während einer Lebensdauer einer Speichervorrichtung oder eines Chips, der eine Speichervorrichtung umfassen kann, eine maximale Temperatur auf Werte begrenzt sein, die für einen RRAM annehmbar sind. Ein verpackter Chip kann jedoch typischerweise gelötet werden müssen, wenn eine Leiterplatte montiert wird. Während des Lötens können typischerweise Temperaturen von 260 °C bis zu einigen Minuten lang verwendet werden.
-
Die während des Lötens angewendete Temperatur kann eine so hohe Belastung in der Speichervorrichtung verursachen, dass eine unannehmbare Wahrscheinlichkeit für RRAM-Datenverlust daraus resultieren kann.
-
Die
US 8,495,465 B1 und die
US 2008/0016428 A1 zeigen jeweils ein Verfahren und eine Vorrichtung zum Speichern von Daten, bei welchen zur Fehlerkorrektur ein erster und ein zweiter Fehlerkorrekturcode angewendet werden.
-
Kurzdarstellung
-
In verschiedenen Ausführungsformen wird ein Verfahren zur Verwendung einer Speichervorrichtung bereitgestellt. Das Verfahren kann umfassen: Speichern von Dateneinheiten, Prüfeinheiten eines ersten Codes und Prüfeinheiten eines zweiten Codes in Speicherzellen der Speichervorrichtung, wobei die Dateneinheiten und die Prüfeinheiten des ersten Codes Codewörter des ersten Codes bilden, und wobei die Dateneinheiten und die Prüfeinheiten des zweiten Codes Codewörter des zweiten Codes bilden, Anwenden des zweiten Codes zur Fehlerkorrektur in mindestens einem Teil der Dateneinheiten und/oder in mindestens einem Teil der Prüfeinheiten des ersten Codes, Bewahren nach dem Korrigieren der Fehler mindestens eines Bewahrungsteils der Dateneinheiten und der Prüfeinheiten des ersten Codes und Löschen mindestens eines Löschungsteils der Prüfeinheiten des zweiten Codes, um dadurch die Speicherzellen freizusetzen, die vom Löschungsteil der Prüfeinheiten des zweiten Codes belegt wurden, und Speichern von Daten in mindestens einem Wiederverwendungsteil der freigesetzten Speicherzellen während eines anschließenden Verwendens der Speichervorrichtung.
-
Figurenliste
-
In den Zeichnungen beziehen sich gleiche Bezugszeichen im Allgemeinen alle verschiedenen Ansichten hindurch auf die gleichen Teile. Die Zeichnungen sind nicht unbedingt maßstabsgetreu, stattdessen ist der Akzent auf die Veranschaulichung der Prinzipien der Erfindung gesetzt. In der folgenden Beschreibung werden verschiedene Ausführungsformen der Erfindung unter Bezugnahme auf die folgenden Zeichnungen beschrieben, wobei:
- 1 eine schematische Ansicht einer Speichervorrichtung gemäß verschiedenen Ausführungsformen darstellt;
- 2 schematische Ansichten der Speichervorrichtung von 1 während zweier Stadien ihrer Verwendung gemäß verschiedenen Ausführungsformen darstellt;
- 3A bis 3F schematische Ansichten einer Speichervorrichtung gemäß verschiedenen Ausführungsformen während verschiedener Stadien ihrer Verwendung darstellen;
- 4A und 4B schematische Ansichten einer Speichervorrichtung gemäß verschiedenen Ausführungsformen während verschiedener Stadien ihrer Verwendung darstellen;
- 5 eine beispielhafte Anzahlverteilung von Widerständen von Speicherzellen und zugeordneten Werten darstellt;
- 6A und 6B jeweils eine Speichervorrichtungsanordnung gemäß verschiedenen Ausführungsformen darstellen; und
- 7 einen Prozessablauf eines Verfahrens zur Verwendung einer Speichervorrichtung gemäß verschiedenen Ausführungsformen darstellt.
-
Beschreibung
-
Die folgende ausführliche Beschreibung nimmt auf die beiliegenden Zeichnungen Bezug, welche spezifische Einzelheiten und Ausführungsformen, in welchen die Erfindung realisiert werden kann, veranschaulichend darstellen.
-
Das Wort „beispielhaft“ wird hierin so verwendet, dass es „als Beispiel oder zur Veranschaulichung dienend“ bedeutet. Ausführungsformen oder Designs, die hierin als „beispielhaft“ beschrieben werden, sind nicht unbedingt als bevorzugt oder vorteilhaft gegenüber anderen Ausführungsformen oder Designs zu interpretieren.
-
Verschiedene Aspekte der Offenbarung werden für Vorrichtungen bereitgestellt, und verschiedene Aspekte der Offenbarung werden für Verfahren bereitgestellt. Es versteht sich von selbst, dass die Grundeigenschaften der Vorrichtungen auch für die Verfahren gelten und umgekehrt. Daher wurde eine doppelte Beschreibung solcher Eigenschaften der Kürze halber möglicherweise unterlassen.
-
In verschiedenen Ausführungsformen kann ein Verfahren zur Verwendung einer Speichervorrichtung bereitgestellt werden. Bei Verwenden der Speichervorrichtung können Dateneinheiten, z. B. Bits, Bytes, mehrwertige Werte oder Teilbitwerte, in der Speichervorrichtung gespeichert (auch bezeichnet als in die Speichervorrichtung geschrieben) und/oder aus der Speichervorrichtung ausgelesen werden. In verschiedenen Ausführungsformen kann die Speichervorrichtung ein Bit pro Speicherzelle, mehrere Bits oder einen Wert eines Bereichs von mehreren Werten speichern, oder ein Bit kann z. B. zum Verbessern einer Robustheit der Vorrichtung in mehreren Speicherzellen, z. B. in zwei Zellen, gespeichert werden, derart dass in jeder Speicherzelle nur ein Bruchteil eines Bits, z. B. 0,5 Bits/Zelle, gespeichert wird. In den Speicherzellen der adressierbaren Speichervorrichtung können die Dateneinheiten und Prüfeinheiten, z. B. Datenbits und Prüfbits, gespeichert werden.
-
Ein datengefährdender Prozess kann als ein Prozess verstanden werden, der ein Potenzial dazu aufweist, zu verursachen, dass wenigstens ein Teil von in einer Speichervorrichtung gespeicherten Daten fehlerhafte Werte annimmt, während die Speichervorrichtung ansonsten physisch intakt oder wenigstens in einem tolerierbaren Zustand für die Anwendung gelassen wird.
-
Beispiele für solch einen datengefährdenden Prozess können Erwärmung, zum Beispiel, ohne darauf beschränkt zu sein, Erwärmung während des Lötens, andere temporäre Temperaturbelastung, temporäre Belastung durch Strahlung, temporäre mechanische Belastung (dies kann, ohne darauf beschränkt zu sein, insbesondere auf mikromechanische und/oder elektromechanische nichtflüchtige Speicher zutreffen), mechanische Belastung während des Verkapselns und jegliche anderen Arten von Prozessen oder Situationen umfassen, die datengefährdend sein können.
-
Datenverlust, der durch Belastung, z. B. durch Löten, einer Speichervorrichtung, z. B. einer nichtflüchtigen Speichervorrichtung, z. B. eines RRAMs, verursacht wird, kann in vielen Fällen unannehmbar sein, da ein Chip bereits einen gewissen Speicherinhalt gespeichert aufweisen kann, sogar bevor der Chip an die Leiterplatte gelötet wird, und die Speichervorrichtung die gespeicherten Daten korrekt wiedergeben können muss. Die Daten können zum Beispiel Kalibrierdaten, die bei Chiptests bestimmt werden, oder eine vollständige Anwendungssoftware umfassen, die bei Fertigungstests im Voraus geladen wurde. Auf jeden Fall sollten die Daten nicht verloren gehen.
-
In verschiedenen Ausführungsformen kann Datenschutz einer Speichervorrichtung, z. B. einer nichtflüchtigen Speichervorrichtung, z. B. eines RRAMs, während eines Aussetzens der Speichervorrichtung gegenüber einer datengefährdenden Situation, zum Beispiel während des Lötens, durch Verwenden eines zusätzlichen Fehlerkorrekturcodes (ECC für engl. error correcting code), auch als extra Fehlerkorrekturcode (extra ECC) bezeichnet, bereitgestellt werden. Der Begriff „extra“ oder „zusätzlich“ wird verwendet, um den extra ECC von dem typischerweise bereits bestehenden ECC zu unterscheiden, der während einer normalen Verwendung der Speichervorrichtung, z. B. des RRAMs, eingesetzt werden kann. Typischerweise können Daten, die in der Speichervorrichtung (z. B. dem RRAM) gespeichert sind, bereits durch irgendeinen ECC (Fehlerkorrekturcode) zum Schützen der Daten gegen Datenverlust während eines normalen („alltäglichen“) Betriebs der Speichervorrichtung (bei der es sich zum Beispiel um einen Chip oder einen Teil eines Chips handeln kann) erweitert sein.
-
In verschiedenen Ausführungsformen können ein Verfahren zur Verwendung einer Speichervorrichtung, eine Speichervorrichtung (z. B. ein RRAM) und eine Speichervorrichtungsanordnung (zum Beispiel eine Speichervorrichtung, z. B. ein RRAM, die/der z. B. in einen Mikrocontroller-Chip eingebettet ist) vorgesehen sein, um das Problem von Datenverlust zu lösen, das durch hohe Temperaturen verursacht wird, welche während des Lötens an Chips angelegt werden können.
-
In verschiedenen Ausführungsformen können ein Verfahren zur Verwendung einer Speichervorrichtung, eine Speichervorrichtung (z. B. ein RRAM) und eine Speichervorrichtungsanordnung (zum Beispiel eine Speichervorrichtung, z. B. ein RRAM, die/der z. B. in einen Mikrocontroller-Chip eingebettet ist) vorgesehen sein, die so konfiguriert sind, dass sie Datenschutz bereitstellen, wenn bekannt ist oder erwartet wird, dass dem Chip eine außergewöhnliche Belastung auferlegt werden wird, welche die Datenerhaltung gefährden kann.
-
In verschiedenen Ausführungsformen können zusätzliche Fehlerkorrekturfähigkeiten (die als Synonym zu Fehlerkorrekturcode(s) verwendet werden können) vorgesehen sein, um Datenerhaltungsprobleme der Speichervorrichtung (z. B. des RRAMs) zu handhaben, die durch eine besonders hohe Belastung während des Lötens verursacht werden können, z. B. hohe Temperaturen und/oder mechanische Belastung, die durch eine Fehlanpassung von Wärmeausdehnungskoeffizienten (CTE für engl. coefficients of thermal expansion) verursacht wird. Dies kann eine Zuweisung von dedizierten extra Speicher (z. B. RRAM)-Zellen zum Speichern zusätzlicher ECC-Daten erfordern.
-
In verschiedenen Ausführungsformen kann nach der Belastung, z. B. dem Löten, eine Reparatursoftware ausgeführt oder eine dedizierte HW gestartet werden. Die Software oder die Hardware kann die extra ECC-Fähigkeiten verwenden, um jeglichen Schaden zu reparieren, der durch die Lötbelastung verursacht wird, d. h. die Speicher (z. B. RRAM)-Zellen, die ihren Dateninhalt verloren haben, neu zu programmieren, um dadurch einen korrekten Dateninhalt unter Verwendung der zusätzlichen Fehlerkorrekturfähigkeiten wiederherzustellen.
-
In verschiedenen Ausführungsformen kann nach einem Abschluss eines Reparaturprozesses, z. B. nach dem Wiederherstellen des korrekten Dateninhalts, wenigstens ein Teil (auch als Löschungsteil bezeichnet) der extra Speicher (z. B. RRAM)-Zellen, die bis zu diesem Zeitpunkt zum Speichern der Extra-ECC-Daten verwendet wurden, freigegeben (d. h. freigesetzt) werden, und die Speicher (z. B. RRAM)-Zellen können zur normalen Verwendung verfügbar gemacht werden. Dadurch kann die nutzbare Speicher (z. B. RRAM)-Kapazität für Anwendungen erhöht werden.
-
In verschiedenen Ausführungsformen kann wenigstens ein Teil (auch als Wiederverwendungsteil bezeichnet) der freigesetzten Speicherzellen zum Speichern verwendet werden. Der Wiederverwendungsteil kann sich im Zeitablauf ändern. Er kann zum Beispiel wachsen, um mehr der freigesetzten Speicherzellen zu enthalten, schrumpfen, um weniger zu enthalten, oder modifiziert werden, um verschiedene Speicherzellen der freigesetzten Speicherzellen zu enthalten. In verschiedenen Ausführungsformen können alle der freigesetzten Speicherzellen zum Speichern von Daten wiederverwendet werden.
-
In verschiedenen Ausführungsformen kann die Wiederverwendbarkeit z. B. für eine beabsichtigte normale Verwendung, wie beispielsweise als Datenspeicher, des zum Speichern des extra ECCs verwendeten extra Speichers die Verwendung eines extra ECCs ermöglichen, der ein großes Speichervolumen benötigt, ohne dadurch die Kapazität des Speichers zu verringern, die für normale Verwendung verfügbar ist. Das für den extra ECC verfügbare große Speichervolumen kann die Verwendung eines extra ECCs (z. B. zweiten Codes) mit einer großen Fehlerkorrekturfähigkeit ermöglichen.
-
1 stellt eine schematische Ansicht einer Speichervorrichtung 100 gemäß verschiedenen Ausführungsformen dar, und 2 stellt schematische Ansichten der Speichervorrichtung 100 während zweier Stadien ihrer Verwendung gemäß verschiedenen Ausführungsformen dar.
-
In verschiedenen Ausführungsformen können Daten 102 in der Speichervorrichtung 100 gespeichert werden. Die Speichervorrichtung 100 kann eine nichtflüchtige Speichervorrichtung sein. Die Speichervorrichtung 100 kann eine aus einer Gruppe von Speichervorrichtungen sein, wobei die Gruppe umfasst: einen RRAM, einen CBRAM, einen PCRAM, einen MRAM, eine Flash-Speichervorrichtung und einen EEPROM.
-
Die Speichervorrichtung 100 kann in einer Festplatte, einer SSD (Festkörperplatte) oder einer selbständigen nichtflüchtigen Speichervorrichtung wie einem Speicherstick enthalten sein, z. B. ein Teil davon sein.
-
Die Daten können als eine oder mehrere Dateneinheiten 102_1, ..., 102_n (n ≥ 1) gespeichert werden, wobei jede Dateneinheit zum Beispiel ein oder mehrere Bits, ein oder mehrere Bytes oder im Allgemeinen einen kleinen Datenteil, der auch als Datenwort bezeichnet werden kann, umfassen kann.
-
In verschiedenen Ausführungsformen können Daten 102 mit einer Fehlerkorrekturfähigkeit ECC (für engl. error correcting capability), zum Beispiel aus den Daten 102 gebildeten Prüfeinheiten 104, erweitert werden, um die Daten gegen Datenverlust während des normalen („alltäglichen“) Betriebs der Speichervorrichtung oder des Chips zu schützen. Die ECC kann auch als normale ECC bezeichnet werden. Zum Beispiel kann für jede Dateneinheit 102_1, ..., 102_n (n ≥ 1) eine entsprechende Prüfeinheit 104_1, ..., 104_n (n ≥ 1) gebildet werden. In verschiedenen Ausführungsformen kann jede Dateneinheit 102_1, ..., 102_n ein Codewort eines ersten Codes bilden. Anders ausgedrückt, können die Daten 102 als Dateneinheiten 102_1, ..., 102_n und Prüfeinheiten 104_1, ..., 104_n eines ersten Codes in der Speichervorrichtung 100 gespeichert werden. Anders ausgedrückt, kann die ECC in verschiedenen Ausführungsformen feingranulär sein, d. h. die Dateneinheiten 102_1, ..., 102_n (die kleinen Datenteile/-wörter) können durch Hinzufügen eines oder mehrerer, z. B. einiger, ECC-Bit(s) zu jeder Dateneinheit bzw. jedem Datenwort unabhängig geschützt werden. Dies kann schnellen Zugriff auf jede einzelne Dateneinheit der mindestens einen Dateneinheit 102_1, ..., 102_n z. B. zum Lesen und/oder Korrigieren durch den ersten Code ermöglichen. In verschiedenen Ausführungsformen kann die Feingranularität durch eine Notwendigkeit unabhängigen individuellen Lesens jeder Dateneinheit 102_1, ..., 102_n (jedes Wortes) sogar oktroyiert werden.
-
In verschiedenen Ausführungsformen kann nur eine kleine Anzahl von fehlerhaften Bits (zum Beispiel eines, zwei oder drei) pro Dateneinheit 102_1, ..., 102_n (Wort) durch Anwenden des ersten Codes korrigiert werden.
-
Die Anforderungen für die extra ECC gemäß verschiedenen Ausführungsformen können von jenen für die normale ECC verschieden sein.
-
In verschiedenen Ausführungsformen kann die Feingranularität nicht erforderlich sein, da die extra ECC nur während eines Fehlerkorrekturprozesses verwendet werden kann, bei dem Lesegranularität nicht von Belang ist. Demnach kann eine Größe eines Datenteils, der durch eine einzelne extra ECC geschützt werden kann, groß sein. Bei einer extra ECC kann eine so hohe Korrekturfähigkeit als möglich mit nur einem geringen zusätzlichen Platzbedarf erforderlich sein.
-
In verschiedenen Ausführungsformen kann die extra ECC Prüfeinheiten 106, z. B. Prüfbits, eines zweiten Codes umfassen oder daraus bestehen. Die Dateneinheiten 102 und die Prüfeinheiten 106 des zweiten Codes können in verschiedenen Ausführungsformen Codewörter des zweiten Codes bilden. In verschiedenen Ausführungsformen können die Codewörter des zweiten Codes durch die Dateneinheiten 102, Adresseinheiten, die den Dateneinheiten 102 entsprechen, und den Prüfeinheiten des ersten Codes gebildet werden.
-
In verschiedenen Ausführungsformen können die Prüfeinheiten 106 in einem zusammenhängenden Speicherbereich 106m (wie in 1 dargestellt) gespeichert werden, was auch als Speicherung vom zentralisierten Typ bezeichnet werden kann. In verschiedenen Ausführungsformen kann eine Speicherung der Prüfeinheiten des zweiten Codes in einem nicht zusammenhängenden Speicher möglich sein, die auch als Speicherung vom dezentralisierten Typ bezeichnet wird.
-
In verschiedenen Ausführungsformen können die zu schützenden Daten 102 und die Extra-ECC-Daten 106, die für diesen Schutz verwendet werden, zu irgendeinem Zeitpunkt in die Speichervorrichtung 100, d. h. in Speicherzellen der Speichervorrichtung 100, z. B. eine Speichermatrix, geschrieben werden, bevor ein datengefährdender Prozess an der Speichervorrichtung durchzuführen ist, oder anders ausgedrückt, bevor die Speichervorrichtung 100 dem datengefährdenden Prozess oder der datengefährdenden Situation ausgesetzt wird, zum Beispiel bevor ein Löten oder allgemein eine Befestigung der Speichervorrichtung durchgeführt wird. Dies kann in einem kombinierten Prozess oder in zwei Schritten geschehen, wobei die vorgeladenen Daten 102 im zweiten Schritt mit den Extra-ECC-Daten 106 erweitert werden können. „Erweitert“ in diesem Zusammenhang kann hierin so verstanden werden, dass es „versehen mit“ bedeutet.
-
In verschiedenen Ausführungsformen kann als der normale ECC, z. B. als der erste Code, ein Code ausgewählt werden, der zur Verwendung während der gesamten Lebensdauer der Speichervorrichtung 100, z. B. einer Lebensdauer eines Chips, in dem die Speichervorrichtung 100 enthalten sein kann, ausgelegt/geeignet sein und/oder während derselben verwendet werden kann.
-
In verschiedenen Ausführungsformen kann als der extra ECC, z. B. als der zweite Code, ein Code ausgewählt werden, der zur Verwendung für eine einmalige Fehlerkorrektur in der Speichervorrichtung 100 ausgelegt/geeignet sein kann. Der zweite Code kann so konfiguriert sein, dass er eine große Anzahl von Fehler korrigiert, wie sie durch den datengefährdenden Prozess oder die datengefährdende Situation verursacht werden können, dem oder der die Speichervorrichtung 100 ausgesetzt sein kann. Zum Beispiel kann der zweite Code zum Korrigieren von mehr als drei Fehlern in einer einzelnen Dateneinheit 102 imstande sein.
-
In verschiedenen Ausführungsformen kann der zweite ECC vom ersten ECC unabhängig sein. In verschiedenen Ausführungsformen kann der zweite ECC bis zu einem gewissen Grad mit dem ersten ECC verschränkt sein. Siehe die Ausführungsformen, die im Zusammenhang mit 3A bis 3E und 4A, 4B für Beispiele von unabhängigen bzw. verschränkten ersten und zweiten Codes beschrieben werden.
-
In verschiedenen Ausführungsformen kann eine Datenkorrektur nach dem Aussetzen der Speichervorrichtung 100 gegenüber dem datengefährdenden Prozess, zum Beispiel nach dem Löten der Speichervorrichtung 100, durchgeführt werden.
-
In verschiedenen Ausführungsformen kann die Datenkorrektur ein Ausführen einer Reparatursoftware umfassen. Die Reparatursoftware kann in verschiedenen Ausführungsformen in einem Festwertspeicher (ROM für engl. read-only-memory) 1110 gespeichert sein, der mit einer zentralen Verarbeitungseinheit (CPU für engl. central processing unit) 1100 verbunden sein kann, die mit der Speichervorrichtung 100 verbunden sein kann (siehe 6A, die eine Speichervorrichtungsanordnung 600 gemäß verschiedenen Ausführungsformen darstellt).
-
In verschiedenen Ausführungsformen kann die Datenkorrektur ein Verwenden einer Reparaturhardware 1200 umfassen (siehe 6B, die eine Speichervorrichtungsanordnung 601 gemäß verschiedenen Ausführungsformen darstellt). Die Reparaturhardware kann in verschiedenen Ausführungsformen ein Teil der Speichervorrichtung 100 sein oder zusammen damit verwendet werden. Die Speichervorrichtung 100 kann mit einer zentralen Verarbeitungseinheit (CPU) 1100 verbunden sein, die das Verwenden der Reparaturhardware 1200 auslösen kann. Die Reparaturhardware 1200 kann zum Beispiel dedizierte digitale Hardware umfassen oder daraus bestehen, oder sie kann ein feldprogrammierbares Gate-Array (FGPA für engl. field programmable gate array) umfassen oder daraus bestehen.
-
In verschiedenen Ausführungsformen kann eine dedizierte Software oder eine dedizierte Hardware nach dem Aussetzen der Speichervorrichtung 100 gegenüber dem datengefährdenden Prozess, z. B. nachdem das Löten durchgeführt wurde, jeglichen Schaden, der durch den datengefährdenden Prozess, z, B. die Belastung durch das Löten, verursacht wird, zum Beispiel reparieren, wenn die Speichervorrichtung 100, die in einem Chip enthalten sein kann, zum ersten Mal eingeschaltet wird. Die Software oder die Hardware kann zum Beispiel den zweiten Code auf die Dateneinheiten 102 und/oder de Prüfeinheiten 104 des ersten Codes zum Identifizieren (auch als Erkennen bezeichnet) und Korrigieren von fehlerhaften (auch als defekten) Dateneinheiten 102d, 104d anwenden (siehe 3B). Korrigierte Werte, wie durch die Software oder die Hardware bestimmt, können in verschiedenen Ausführungsformen in der Speichervorrichtung 100 gespeichert werden, um dadurch korrigierte Dateneinheiten 102c, 104c zu bilden (siehe 3E).
-
Üblicherweise kann das Aussetzen der Speichervorrichtung 100 gegenüber einem datengefährdenden Prozess, wie beispielsweise Erwärmung (einer physisch nicht zerstörerischen Temperatur, z. B. Erwärmung durch Löten), Strahlungsbelastung und/oder mechanischer Belastung usw., nicht zu einem physischen Schaden der Speicherzellen in der Speichervorrichtung 100, sondern stattdessen nur zu einer Änderung eines physikalischen Zustands, z. B. eines Widerstands, einer Magnetisierung, eines mechanischen Zustands usw., einer oder mehrerer der Speicherzellen führen, wodurch die defekten Dateneinheiten 102d und/oder die defekten Prüfeinheiten 104d erzeugt werden. Die defekten Dateneinheiten 102d und/oder die defekten Prüfeinheiten 104d können jedoch normalerweise verwendet werden. Daher können in verschiedenen Ausführungsformen in den fehlerhaften Dateneinheiten 102d und/oder den defekten Prüfeinheiten 104d die defekten Werte durch korrigierte Werte überschrieben werden. Mit anderen Worten können die korrigierten Dateneinheiten 102c und/oder die korrigierten Prüfeinheiten 104c in den jeweiligen Speicherzellen 102d und/oder 104c gespeichert werde, in welchen nach dem Löten fehlerhafte Daten zurückblieben. Dennoch können in verschiedenen Ausführungsformen die korrigierten Dateneinheiten 102c in anderen Speicherzellen der Speichervorrichtung 100 (als den Speicherzellen, in welchen ihre entsprechenden defekten Dateneinheiten 102d gespeichert sein können) gespeichert werden.
-
In verschiedenen Ausführungsformen kann die Software oder die Hardware eine Korrektheit des Inhalts des Speichers 100 durch Überprüfen seiner Übereinstimmung unter Verwendung des bestehenden ECCs (z. B. des ersten Codes) und/oder des extra ECCs (des zweiten Codes) verifizieren.
-
In verschiedenen Ausführungsformen kann das Überprüfen von härteren als normalen Lesebedingungen Gebrauch machen, um einen Abstand zu einem normalen Lesevorgang zu erzeugen.
-
5 stellt eine beispielhafte Anzahlverteilung 500 von physikalischen Werten von Speicherzellen und zugeordneten Werten zur Veranschaulichung solcher härterer als normaler Lesebedingungen dar (als ein Beispiel sind Widerstände dargestellt, aber dies kann in ähnlicher Weise auch für andere physikalische Werte in Speichervorrichtungen, z. B. Magnetisierung usw., gelten).
-
Während eines normalen Lesevorgangs kann ein regulärer Referenzwert L1 zum Differenzieren zwischen einem physikalischen Wert (hier: R), dem ein erster Wert (hier: 1, wenn R kleiner als L1 ist) oder ein zweiter Wert zugeordnet wird (hier: 0, wenn R größer als L1 ist).
-
Das Aussetzen der Speichervorrichtung 100 gegenüber dem datengefährdenden Prozess kann in einigen Fällen dazu führen, dass eine Dateneinheit, z. B. ein Bit, mit einem Anfangswert von R1 (zugordnet 0) in einen fehlerhaften Wert von R2 (zugeordnet 1) umgeändert wird. In den meisten Fällen des datengefährdenden Prozesses, der den physikalischen Wert beeinflusst, kann ein geänderter Wert jedoch näher zum Anfangswert R1 sein. Demnach kann eine anfängliche Verteilung von Werten durch den datengefährdeten Prozess verbreitert werden, wodurch „Flügel“ W der Verteilungen erzeugt werden. Auf diese Weise kann zum Beispiel der Wert von R1 in R3 oder R4 umgeändert werden. Solche Flügel W können sich dem regulären Niveau L1 nähern.
-
Um einen Sicherheitsabstand für einen normalen, anschließenden Leseprozess zu bilden, kann während der Datenkorrektur unter Verwendung des extra ECCs, z. B. des zweiten Codes, ein verschobener Referenzwert L2 (z. B. zum Wert R1 verschoben, der als ein Referenzwert für eine Zuordnung des Wertes 0 angesehen werden kann) verwendet werden, der als härter als normale Lesebedingungen angesehen werden kann. Bei verschobenem Niveau L2 kann allen Werten, die sich in einem schraffierten Bereich A befinden, (irrtümlicherweise) ein Wert von 1 zugeordnet werden, und sie können daher während der Datenkorrektur unter Verwendung des extra ECCs, z. B. des zweiten Codes, als fehlerhafte Dateneinheiten identifiziert werden. Sie können daher korrigiert werden, was bedeuten kann, dass sie mit einem physikalischen Wert (hier: R), der dem Nennwert R1 entspricht und der vom Referenzwert L1 für den normalen Lesevorgang weit genug entfernt sein kann, neu geschrieben werden.
-
Ähnlich kann ein zum Wert R2 verschobenes Niveau eingesetzt werden, um einen Sicherheitsabstand bei der Verteilung zu bilden, die dem Wert 1 zugeordnet ist.
-
In verschiedenen Ausführungsformen kann zusätzlich zum extra ECC, z. B. dem zweiten Code, der normale ECC, z. B. der erste Code, zum Erkennen und/oder Korrigieren von fehlerhaften Dateneinheiten 102c z. B. vor und/oder während des Anwendens des extra ECCs (z. B. des zweiten Codes) zur Fehlerkorrektur in den Dateneinheiten und/oder in den Prüfeinheiten des normalen ECCs (z. B. des ersten Codes) angewendet werden.
-
In verschiedenen Ausführungsformen können in einem Fall, in welchem die Überprüfung inkorrekten Speicherinhalt erkennt, die Fehlerkorrekturfähigkeiten des bestehenden ECCs (z. B. des ersten Codes) und des extra ECCs (z. B. des zweiten Codes) zum Wiederherstellen des korrekten Speicherinhalts verwendet werden, der dann zum Neuprogrammieren der Speicher, z. B. RRAM,-Zellen verwendet werden kann, die ihren (korrekten) Dateninhalt verloren haben.
-
In verschiedenen Ausführungsformen können nur die defekten Speichereinheiten 102d neu programmiert werden. Alternativ können zusätzlich zu den defekten Speichereinheiten 102d auch ein Teil oder alle der korrigierten Dateneinheiten neu programmiert werden, was als ein Auffrischen des Teils der Speichervorrichtung 100 oder der Speichervorrichtung 100 bezeichnet werden kann. Der Teil der Speichervorrichtung kann zum Beispiel ein verwendeter Teil der Speichervorrichtung 100 oder ein Teil mit relevanten Informationen sein.
-
In verschiedenen Ausführungsformen kann der extra ECC (z. B. die Prüfeinheiten 106 des zweiten Codes) nach dem Anwenden des extra ECCs (z. B. des zweiten Codes) zur Fehlerkorrektur in den Dateneinheiten und/oder in den Prüfeinheiten des normalen ECCs (z. B. des ersten Codes) oder, anders ausgedrückt, nach der Durchführung des Reparaturprozesses, nicht mehr benötigt werden, und die auch als Speicherbereich bezeichneten Speicherzellen 106m, die ursprünglich verwendet werden, um den extra ECC (z. B. die Prüfeinheiten 106 des zweiten Codes) zu speichern, können zur Verwendung durch die normale Anwendung freigesetzt werden.
-
In verschiedenen Ausführungsformen kann das Freisetzen der „Extra-ECC“-Speicherzellen 106m durch eine Software, zum Beispiel als Teil der Software, die auch die Datenkorrektur ausführen kann, durchgeführt werden.
-
In verschiedenen Ausführungsformen kann das Freisetzen der „Extra-ECC“-Speicherzellen 106m durch eine Hardware, zum Beispiel als Teil der Hardware, die auch die Datenkorrektur ausführen kann, zum Beispiel eine dedizierte digitale Hardware oder ein feldprogrammierbares Gate-Array, durchgeführt werden.
-
In verschiedenen Ausführungsformen kann der Extra-ECC-Speicherbereich (die Speicherzellen 106m), der zum Lösen der Zuverlässigkeitsprobleme erforderlich sein kann, ein „zweites Leben“ als normaler nichtflüchtiger Speicher haben, d. h. er kann für neue Zwecke wirtschaftlich recycelt werden, sobald er nicht mehr für den extra ECC benötigt wird.
-
In verschiedenen Ausführungsformen kann die Wiederverwendbarkeit z. B. für eine beabsichtigte normale Verwendung, wie beispielsweise als Datenspeicher, des zum Speichern des extra ECCs verwendeten extra Speichers die Verwendung eines extra ECCs ermöglichen, der ein großes Speichervolumen benötigt, ohne dadurch den Speicher zu verringern, der für normale Verwendung verfügbar ist. Das für den extra ECC, z. B. für Prüfbits des zweiten Codes, verfügbare große Speichervolumen kann die Verwendung eines extra ECCs (z. B. zweiten Codes) mit einer großen Fehlerkorrekturfähigkeit ermöglichen.
-
In verschiedenen Ausführungsformen kann nach dem Aussetzen der Speichervorrichtung 100 gegenüber dem datengefährdenden Prozess und vor dem Anwenden des zweiten Codes zur Fehlerkorrektur in den Dateneinheiten und/oder in den Prüfeinheiten des ersten Codes ein individueller Zugriff auf die Dateneinheiten 102 nicht erforderlich sein. Demnach kann der zweite Code nicht erforderlich sein, um eine „kleine Granularität“ bereitzustellen, wie beispielsweise der erste Code. In verschiedenen Ausführungsformen können große Teile von Daten durch den zweiten Code gemeinsam geschützt werden. Dadurch kann eine hoher Wirkungsgrad in Bezug auf das erforderliche Speichervolumen erreicht werden, da das Bereitstellen einer Fehlererkennung/-korrektur für einen Speicherbereich mit einem kleinen Datenteil verhältnismäßig mehr Datenspeichervolumen erfordern kann, als für die gleiche Fehlererkennung im gleichen Speicherbereich mit großen Datenteilen erforderlich ist.
-
In verschiedenen Ausführungsformen kann der zweite Code nur ein einziges Mal während einer Lebensdauer der Speichervorrichtung 100, zum Beispiel nach dem ersten Start der Speichervorrichtung nach dem Aussetzen der Speichervorrichtung gegenüber dem datengefährdenden Prozess, z. B. nach einem Löten der Speichervorrichtung 100 (bzw. eines Chips, in dem die Speichervorrichtung enthalten ist), verwendet werden.
-
In verschiedenen Ausführungsformen kann eine andere temporäre Belastung während der Lebensdauer der Speichervorrichtung antizipiert werden, zum Beispiel ein anderer Erwärmungsprozess, der erforderlich sein kann, nachdem die Speichervorrichtung 100 bereits zur normalen Datenspeicherung verwendet wurde, oder einer Speichervorrichtung 100, die in einer Weltraummission verwendet werden kann, wobei die Speichervorrichtung 100 während einer Vorbereitungsphase auf der Erde normal verwendet werden kann, und dann voraussichtlich während der Weltraummission einer datengefährdenden Strahlung ausgesetzt wird, wobei sie aktiviert werden kann, wenn sie ein Endziel erreicht. In diesem Fall kann der extra ECC, z. B. die Prüfbits des zweiten Codes, wieder in der Speichervorrichtung 100, z. B. in den Speicherzellen 106m, gespeichert werden, die zuvor freigesetzt und zur regulären Datenspeicherung oder in einer anderen Region der Speichervorrichtung verwendet wurden. Daten, die in den Speicherzellen gespeichert sind, in welchen ein neues Speichern des extra ECCs, z. B. der Prüfbits des zweiten Codes, vorgesehen ist, können vor dem Speichern des extra ECCs, z. B. der Prüfbits des zweiten Codes, verlagert werden (wenn sie noch benötigt werden).
-
In verschiedenen Ausführungsformen kann das Anwenden des extra ECCs (z. B. des zweiten Codes) zur Fehlerkorrektur in den Dateneinheiten und/oder Prüfeinheiten des normalen ECCs (z. B. des ersten Codes) so konfiguriert sein, dass es automatisch startet. Der automatische Start kann zum Beispiel bei oder nach dem ersten Starten/Verwenden der Speichervorrichtung 100, nachdem sie dem datengefährdenden Prozess ausgesetzt wurde, wenn der datengefährdende Prozess aufgehört hat, z. B. wenn die Speichervorrichtung 100 nach einem Löten abgekühlt wird, wenn sie von mechanischer Belastung befreit wird, und/oder wenn sie aus einer Quelle von Strahlung entfernt oder dagegen abgeschirmt wird, durchgeführt werden. Zum Beispiel kann die Software oder die Hardware so konfiguriert sein, dass sie das Reparaturprogramm bei oder unmittelbar nach dem Starten der Speichervorrichtung 100 automatisch startet.
-
In verschiedenen Ausführungsformen kann das Anwenden des extra ECCs (z. B. des zweiten Codes) zur Fehlerkorrektur in den Dateneinheiten und/oder in den Prüfeinheiten des normalen ECCs (z. B. des ersten Codes) so konfiguriert sein, dass es manuell startet wird. Ein manuelles Starten ist als ein Start zu verstehen, der nicht automatisch erfolgen kann, sondern ein Auslöseereignis, z. B. einen an die Speichervorrichtung 100 gesendeten Befehl, benötigen kann.
-
Im Folgenden werden beispielhafte Ausführungsformen im Zusammenhang mit 3A bis 3F und 4A und 4B beschrieben. Die Speichervorrichtung 100 kann eine Speichervorrichtung sein, wie zuvor beschrieben.
-
Zur Beschreibung der beispielhaften Ausführungsformen kann eine Terminologie einer Codierungstheorie verwendet werden, die einem Fachmann bekannt sein kann. Zum besseren Verständnis werden im Folgenden einige Grundbegriffe beschrieben.
-
Ein linearer Code C, wie er in verschiedenen Ausführungsformen zum Beispiel als der erste Code und/oder als der zweite Code verwendet werden kann, kann durch eine G-Matrix G und durch eine H-Matrix H beschrieben werden. Für einen Code einer Länge n mit k Informationsbits x = x1, ..., xk und m = n - k Prüfbits c = c1, ..., cm und n = k + m, ist die G-Matrix G eine (k, n)-Matrix, und die H-Matrix H ist eine (m, n)-Matrix.
-
In systematischer Form kann die Matrix G
sein, wobei I eine k-dimensionale Einheitsmatrix ist, und P
k,m eine (k, m)-Matrix ist, die als Paritätsmatrix bezeichnet werden kann.
-
Die Prüfbits c, die aus den Datenbits durch
und (x, c) = (x
1, ..., x
k, c
1, ..., c
m) = v
i, ..., v
n = v bestimmt werden können, bilden ein Codewort des Codes C. Die Begriffe Codewort und Codevektor können als Extra-ECC-e verwendet werden.
-
Die H-Matrix H kann die folgende Form aufweisen:
-
Hierbei kann
die transponierte Matrix der Matrix P
k,m sein, und I
m kann eine m-dimensionale Einheitsmatrix sein.
-
Ein Codewort v = v
1, ..., v
n kann einen Einzelbit- oder einen Mehrfachbitfehler erleiden, um ein Nicht-Codewort
zu bilden. Eine Differenz zwischen einem Codewort v und einem Nicht-Codewort v' mit einem erlittenen Einzelbit- oder Mehrfachbitfehler kann als ein Fehlervektor e beschrieben werden, wobei
wobei „+“ eine Addition modulo 2 ist, die auch als exklusives ODER (XOR) bezeichnet wird.
-
Ein Fehlersyndrom s, wobei s = s
l, ..., s
m, eines Wortes v' = v + e kann
sein, da für ein Codewort v
-
Für i = 1, ..., n kann eine i-te Komponente ei eines Fehlervektors e = e1, ..., en l sein, wenn eine fehlerfreie Komponente vi nach v i verschoben wird, und ei kann null sein, wenn die Komponente vi fehlerfrei ist. Hierbei können sT, vT und v'T transponierte Spaltenvektoren der Zeilenvektoren s, v bzw. v' sein.
-
Ein Fehlersyndrom eines Fehlers kann einer XOR-Summe der Spalten der H-Matrix entsprechen, für welche die jeweiligen Komponenten des Fehlervektors 1 sein können.
-
Wenn im Folgenden nicht bekannt ist, ob ein Wort ein Codewort oder ein fehlerhaftes/verschobenes Wort ist, das einen Einzelbit- oder Mehrfachbitfehler erlitten hat, kann das Wort als v' bezeichnet werden.
-
Für einen t-Bit-Fehler-korrigierenden Code, wobei t ≥ 1, können alle Fehlersyndrome für 1-Bit-Fehler, ..., t-Bit-Fehler paarweise verschieden sein, was eine definitive Korrektur unter Berücksichtigung des Fehlersyndroms ermöglichen kann.
-
Wie in
3A dargestellt, können in verschiedenen Ausführungsformen in einer Speichervorrichtung mit 16 Adressen a
1, ..., a
16 mit einem Wort einer Breite n = 7 Daten gespeichert werden. Für i = 1, ..., 8 kann ein Wort
an einer Adresse a
i gespeichert werden. In einem fehlerfreien Fall ist
ein Codewort eines ersten Codes C
1 mit vier Datenbits
und drei Prüfbits
Der erste Code C
1 kann in dieser beispielhaften Ausführungsform ein Hamming-Code mit einer G-Matrix
sein, wobei
P
4,3 kann als Paritätsmatrix bezeichnet werden, und I
4 ist die 4-dimensionale Einheitsmatrix.
-
Die H-Matrix H
1 ist
wobei
die transponierte Matrix der Matrix P
4,3 ist, und I
3 die 3-dimensionale Einheitsmatrix ist.
-
Der Code C
1 kann als Zeilencode bezeichnet werden. Die Prüfbits c
i des Zeilencodes können aus den Datenbits x
i aus
bestimmt werden, derart dass
wobei „+“ die Addition modulo 2 (XOR) ist.
-
Für die Datenbits x
1 = (1, 0, 1, 1) können zum Beispiel die Prüfbits c
1 resultieren:
-
In 3A wird angenommen, dass keine Fehler aufgetreten sind, und dass fehlerfreie Codewörter des Codes C1 an den Adressen a1, ..., a8 gespeichert werden.
-
An der Adresse a
9 können die Bits
gespeichert werden, an der Adresse a
10 können die Bits
gespeichert werden,
..., und
an der Adresse a
13 können die Bits
gespeichert werden.
-
In
3A können für j = 1, ..., 4 die Bits
die an den Adressen a
9, ..., a
13 in j-ter Bitposition gespeichert sind, die Prüfbits der Datenbits
die an den Adressen a
1, ..., a
8 in j-ter Position gespeichert sind, eines zweiten Codes C
2 sein, der als Spaltencode bezeichnet werden kann.
-
In einer Ausführungsform können für i = 1, ..., 5 die Bits
die als Zeilen angeordnet sein können, Prüfbits des ersten Codes C
1 der Prüfbits
sein, die als Zeilen angeordnet sein können und durch Anwenden des zweiten Codes C
2 aus den Datenbits, die an den Adressen a
1, ..., a
8 gespeichert sind, gebildet worden sein können.
-
In einer weiteren Ausführungsform können die Bits
die in Spalten an den Adressen a
9, ..., a
13 in
3A gespeichert sein können, Prüfbits des zweiten Codes C
2 der Prüfbits
des ersten Codes C
1 sein.
-
Der Spaltencode C
2 kann gemäß den verschiedenen Ausführungsformen die Generatormatrix
und die H-Matrix
aufweisen.
-
An den Adressen a15, a16, a17 in 3A sind keine bestimmten Werte gespeichert, und die entsprechenden Speicherzellen sind mit einem Symbol „-“ gekennzeichnet. Der Code C2 kann ein Hsiao-Code sein, der einem Fachmann bekannt sein kann, und der ein Korrigieren aller 1-Bit-Fehler in Komponenten der Datenbits, die eine Spalte bilden, und ein Erkennen aller 2-Bit-Fehler in solch einer Spalte ermöglicht. Alle Spalten der H-Matrix H2 sind paarweise voneinander verschieden und umfassen eine ungerade Anzahl von 1 (Einsen).
-
In
3A bis
3F können die Datenbits
als die zuvor beschriebenen Dateneinheiten
102 entsprechend angesehen werden, die Prüfbits c
i des Zeilencodes können als den Prüfbits
104 entsprechend angesehen werden, und die Bits
können dem extra ECC, d. h. den Prüfbits des zweiten Codes, entsprechen.
-
In 3B ist eine Situation dargestellt, in welcher 6-Bit-Fehler während oder nach einer Erwärmung der Speichervorrichtung (bzw. eines Chips, in welchen die Speichervorrichtung integriert sein kann) aufgetreten sind. Nach dem Abkühlen der Speichervorrichtung (des Chips) können die Fehler unter Verwendung der Codes C1 und C2 korrigiert werden.
-
In einer beispielhaften Ausführungsform können die Datenbits x
1, die an der Adresse a
1 gespeichert sind, von
im zweiten Bit und von
im vierten Bit verschoben sein. An der Adresse a
2 kann das fünfte Bit von
verschoben sein. Außerdem können Datenbits x
3, die an der Adresse a
3 gespeichert sind, von
im ersten Bit und von
im zweiten Bit verschoben sein. An der Adresse a
8 kann das fünfte Bit von
verschoben sein.
-
Eine Fehlerkorrektur kann gemäß verschiedenen Ausführungsformen zuerst vom Code C1 Gebrauch machen.
-
Bits x
1, die an der Adresse a
1 gespeichert sind, können in der zweiten und vierten Bitposition fehlerhaft sein. Das Fehlersyndrom dieser Fehler kann einer Summe der zweiten und vierten Spalte [101]
T + [111]
T = [010]
T der H-Matrix H
1 entsprechen. Hierbei kann [010]
T der sechsten Spalte der H-Matrix H
1 entsprechen, und der 2-Bit-Fhler kann temporär als ein 1-Bit-Fehler des sechsten Bitposition falsch korrigiert sein, derart dass außerdem
temporär nach
verschoben sein kann.
-
Bits x
3, die an der Adresse a
3 gespeichert sind, können in der zweiten und zweiten Bitposition fehlerhaft sein. Das Fehlersyndrom dieser Fehler kann einer Summe der ersten und zweiten Spalte [110]
T + [101]
T = [011]
T der H-Matrix H
1 entsprechen. Hierbei kann [011]
T der dritten Spalte der H-Matrix H
1 entsprechen, und der 2-Bit-Fehler kann temporär als ein 1-Bit-Fehler des dritten Bitposition falsch korrigiert sein, derart dass außerdem
temporär nach
verschoben sein kann.
-
Bits, die an der Adresse a
2 gespeichert sind, können nur in der fünften Bitposition fehlerhaft sein. Das Fehlersyndrom dieses Fehlers kann der fünften Spalte [100]
T der H-matrix H
1 entsprechen, und der 1-Bit-Fehler kann korrekt von
korrigiert sein.
-
In 3C ist die Speichervorrichtung 100 mit den (temporär) korrigierten Bits nach der Korrektur unter Verwendung des Hamming-Codes C1 dargestellt. Aufgrund der temporären Beschaffenheit der Korrektur sind die temporär korrigierten Dateneinheiten und Prüfeinheiten als 102c1 bzw. 104c1 gekennzeichnet, und nur die endgültig korrigierten Daten- und Prüfeinheiten (wie z. B. in 3E und 3F dargestellt) können mit einem Index „c“ (ohne Zahl nach dem „c“) versehen sein.
-
In jeder der ersten, dritten, vierten und sechsten Spalte von
3C kann ein fehlerhaftes Bit, nämlich die fehlerhaften Bits
vorhanden sein. Diese fehlerhaften Bits können unter Verwendung des zweiten Codes (des Spaltencodes C2) auf die korrekten Bits
korrigiert werden.
-
In
3D ist die Speichervorrichtung
100 mit den (temporär) korrigierten Bits nach der Korrektur unter Verwendung des Hamming-Codes C
2 dargestellt. Die verbleibenden fehlerhaften Bits sind
die an den Adressen a
1 bzw. a
3 gespeichert sind.
-
In einem weiteren Fehlerkorrektur-Teilprozess kann wieder der Zeilencode C
1 zur Fehlerkorrektur verwendet werden. An der Adresse a
1 kann nur ein einziges fehlerhaftes Bit,
verbleiben, das nun auf den korrekten Wert
korrigiert werden kann. An der Adresse a
3 kann nur ein einziges fehlerhaftes Bit,
verbleiben, das nun auf den korrekten
korrigiert werden kann. Auf diese Weise können alle sechs Fehler, die nach dem Aussetzen der Speichervorrichtung
100 gegenüber dem datengefährdenden Prozess (dem Löten) vorhanden waren, korrigiert worden sein, wie in
3E dargestellt.
-
In einer beispielhaften Ausführungsform können die Bits, die an den Adressen a1, ..., a13 gespeichert sind, n = 7 Mal gelesen werden, und es kann eine Bitposition pro Lesevorgang korrigiert werden.
-
In einer beispielhaften Ausführungsform kann eine Korrektur von zwei Bits parallel durchgeführt werden.
-
Nach der Korrektur der fehlerhaften Bits können die Prüfbits des zweiten Codes C2 (die den extra ECC bilden) gelöscht werden. Dies ist in 3E durch die Speicherzellen mit den Adressen a9, ..., a16 dargestellt, die einen Wert von 0 aufweisen. Die korrigierten Datenbits 102c und die korrigierten Prüfbits 104c können bewahrt werden, oder es kann wenigstens ein Teil (auch als Bewahrungsteil bezeichnet) der korrigierten Datenbits 102c und/oder der korrigierten Prüfbits 104c bewahrt werden.
-
In verschiedenen Ausführungsformen können die Speicherzellen mit den Adressen a9, ..., a16 nun zum Speichern von Datenbits und Prüfbits des Codes C1 verwendet werden, was in 3F dargestellt ist, wobei nicht nur die Speicherzellen mit den Adressen a1, ..., a15, sondern auch die Speicherzellen mit den Adressen a9, ..., a16 zum Speichern von Datenbits und entsprechenden Prüfbits des Zeilencodes C1 verwendet werden.
-
In verschiedenen Ausführungsformen kann während normaler Operationen, d. h. nach der Korrektur der Fehler, die durch den datengefährdenden Prozess, z. B. das Löten, eingeführten wurden, nur der Zeilencode C1 zur Erkennung und Korrektur von Fehlern verwendet werden. Dies kann es möglich machen, zusätzliche Datenbits in der Speichervorrichtung 100 zu speichern.
-
Verschiedene weitere Ausführungsformen werden im Zusammenhang mit 4A und 4B beschrieben. Die Speichervorrichtung 200 von 4A und 4B kann gemäß der Speichervorrichtung sein, die zuvor im Zusammenhang mit 1 und 2 beschrieben wurde, und sie kann der Speichervorrichtung 100 ähneln, die im Zusammenhang mit 3A bis 3F beschrieben wurde.
-
Die Speichervorrichtung 200 von 4A, 4B kann eine adressierbare Speichervorrichtung mit einer Wortbreite von 72 sein.
-
64 Datenbits
können an jeder Adresse a
i für i = 1, ..., 16 gespeichert werden, die durch 8 Prüfbits
eines Hsiao-Codes geschützt werden können, der einem Fachmann bekannt sein kann. Der Hsiao-Code, der ein Korrigieren aller 1-Bit-Fehler und Erkennen aller 2-Bit-Fehler ermöglichen kann, kann der erste Code C
1 sein.
-
Datenbits
die an den ersten 16 fortlaufenden Adressen a
1,.., a
16 gespeichert sind, können einen ersten Block X
1 von 16 × 64 = 1024 Datenbits bilden. Diese
1024 Datenbits können die Datenbits
eines ersten Codeworts eines zweiten Codes C
2 bilden, der ein 6-Bit-Fehler-korrigierender BCH-Code über einem Galois-Feld GF(2
11) sein kann, der einem Fachmann bekannt sein kann. Eine erforderliche Anzahl von Prüfbits kann 6 × 11 = 66 betragen, wobei die Prüfbits als
bezeichnet werden können. Diese
66 Prüfbits können an der Adresse a
17 gespeichert sein. Da eine Wortbreite der Speichervorrichtung
72 ist, können die Prüfbits an den ersten
66 Bitpositionen der Adresse a
17 gespeichert werden.
-
64 Datenbits
können an jeder Adresse a
1, für i = 18, ..., 33, gespeichert werden, welche durch 8 Prüfbits
des Hsiao-Codes (des ersten Codes) C
1 geschützt werden können.
-
Datenbits
die an den ersten 16 fortlaufenden Adressen a
18, .., a
33 gespeichert sind, können einen zweiten Block X
2 von 16 × 64 = 1024 Datenbits bilden. Diese
1024 Datenbits können die Datenbits
eines zweiten Codeworts des zweiten Codes C
2 bilden. Die entsprechenden 6 × 11 = 66 Prüfbits des Codes C
2 können als
bezeichnet werden. Diese
66 Prüfbits können an der Adresse a
34 gespeichert sein.
-
Weitere Blöcke X3, X4 von jeweils 1024 Datenbits und die jeweiligen entsprechenden 66 Prüfbits δ3, δ4, ... des zweiten Codes C2 können an den Adressen a35, ..., a50, a51; a52, ..., a67, a68; ..., gespeichert sein, wie in 4A dargestellt.
-
Nach Beendigung des datengefährdenden Prozesses, z. B. des Lötprozesses, können die jeweiligen Böcke von 1024 Datenbits zum Beispiel während oder nach einem anfänglichen Start von Operationen der Speichervorrichtung 100 während eines ersten Teilprozesses unter Verwendung des 6-Bit-Fehler-korrigierenden BCH-Codes C2 korrigiert werden. Nach dem Korrigieren der Datenbits unter Verwendung des Codes C2 können die jeweiligen 66 Prüfbits (pro Block) δ1, δ2, δ3, ... des Codes C2 gelöscht oder in einem Fall, in dem dies möglich ist, einfach überschrieben werden (in einer Flash-Speichervorrichtung zum Beispiel kann es erforderlich sein, die Bits zu löschen, bevor erneut auf sie geschrieben wird).
-
In verschiedenen Ausführungsformen können die korrigierten Bits c1, c2, ... des Hsiao-Codes C1, die jeweils eine Breite von 8 Bits aufweisen können, zum Beispiel aus den korrigierten Datenbits X1 , X2 mit jeweils 64 Datenbits gebildet werden, derart dass eine direkte Korrektur der Prüfbits des Codes C1 durch den Code C2 nicht erforderlich sein kann. Dies kann als unabhängige Codes C1, C2 bezeichnet werden.
-
In verschiedenen Ausführungsformen können die Prüfbits des ersten Codes beim Bilden der Blöcke von Bits, die durch den zweiten Code C2, korrigiert werden können, einbezogen werden, was als verschränkte Codes bezeichnet werden kann.
-
Ein Fachmann kann zum Beispiel die Korrektur unter Verwendung des BCH-Codes C2 durch Anwenden eines Berlekamp-Massey-Algorithmus durchführen, wie zum Beispiel in Rao, T., Fujiwara, E. „Error Control Coding for Computer Systems", Prentice Hall, 1989, auf Seite 105 bis 109 beschrieben.
-
Die Adressen a17, a34, a51, ..., die zum Speichern der Prüfbits δ1, δ2, δ3, ... des Codes C2 verwendet wurden, können nach dem Korrigieren der Datenbits unter Verwendung des Codes C2 zum Speichern weiterer Datenbits und Prüfbits des Codes C1 verwendet werden, wie zum Beispiel in 4B dargestellt.
-
Während die Adressen a17, a34, a51 in 4A die Prüfbits δ1, δ2, δ3, ... des Codes C2 adressieren können, können die Adressen a17, a34, a51, ... in 4B die Datenbits x17, x34, x51 (jeweils 64 Bits) und jeweils die entsprechenden 8 Prüfbits des Codes C1 (c17, c34, c51) adressieren.
-
In den verschiedenen Ausführungsformen, die in 4A, 4B dargestellt sind, können die Prüfbits des zweiten Codes C2 an einer Adresse unmittelbar nach den Adressen gespeichert worden sein, an welchen Datenbits eines Blocks und entsprechende Prüfbits des ersten Codes C1 gespeichert sein können.
-
In verschiedenen Ausführungsformen können die Prüfbits des zweiten Codes C2 der verschiedenen Blöcke von Datenbits (und entsprechenden Prüfbits) in einem fortlaufenden Adressbereich gespeichert werden. Dies kann zum Beispiel in einer Flash-Speichervorrichtung nützlich sein, in welcher Speicherzellen in einem fortlaufenden Adressbereich gelöscht werden können.
-
In verschiedenen Ausführungsformen kann ein 2-Bit-Fehler-korrigierender BCH-Code als der Code C1 verwendet werden, und ein Byte-korrigierender Code, zum Beispiel ein Reed-Solomon-Code, kann als der zweite Code C2 verwendet werden. Gemäß solchen Ausführungsformen können Prüfbits des BCH-Codes C1 gebildet und an der gleichen Adresse der Speichervorrichtung wie die entsprechenden Datenbits gespeichert werden. Die an einer Adresse gespeicherten Bits können zum Bilden eines Bytes des Byte-korrigieren Codes C2 verwendet werden. Für einen Adressbereich, der zum Beispiel durch N (N ≥ 2) fortlaufende Adressen gebildet sein kann, können die Bytes ein Wort bilden, für welches Prüfbytes der Byte-korrigierenden Codes gebildet werden können.
-
In verschiedenen Ausführungsformen kann für eine Korrektur eines Fehlers, der erzeugt worden sein kann, während die Speichervorrichtung 100 dem datengefährdenden Prozess, z. B. dem Löten, ausgesetzt war, der erste Code C1 nur zur Fehlererkennung verwendet werden. Ein unter Verwendung des Codes C1 erkannter Fehler kann dann ein fehlerhaftes Byte anzeigen, derart dass eine Position von fehlerhaften Bytes bekannt sein kann, wenn die fehlerhaften Bytes unter Verwendung des Codes C2 korrigiert werden. In solch einem Fall, in dem eine Position eines Fehlers bereits bekannt ist, kann nur der Fehlerwert, d. h. seine Abweichung vom korrekten Wert, bestimmt werden müssen. Solche eine Korrektur kann als eine Korrektur einer Löschung bezeichnet werden.
-
In verschiedenen Ausführungsformen können die Prüfbytes des Byte-korrigierenden Codes C2 nach der Durchführung der Korrektur gelöscht oder durch neue Daten überschrieben werden. Der erste Code C1 kann nach dem Löschen der Prüfbytes des Codes C2 als ein 2-Bit-korrigierender Code verwendet werden.
-
In verschiedenen Ausführungsformen kann in einem Fall, in dem der erste Code C1 nur für eine Fehlererkennung von Fehlern eines Bytes, d. h. für eine Bestimmung einer Position von fehlerhaften Bytes, verwendet wird, eine hohe Fehlerabdeckung oder, anders ausgedrückt, eine hohe Fähigkeit zur Fehlererkennung erreicht werden.
-
In verschiedenen Ausführungsformen können während eines Codierens der Datenbits x
i und der Prüfbits c
i zum Speichern an einer Adresse a
i die Adressbits a
i bei der Bildung der Prüfbits c
i einbezogen werden, derart dass in einem fehlerfreien Fall
ein Codewort des Codes C
1 sein kann. Hierbei kann G
1 die G-Matrix des Code C
1 in systematischer Form sein, und a
i kann die Schreibadresse sein. An der Adresse a
i können nur x
i, c
i gespeichert sein.
-
In verschiedenen Ausführungsformen kann während eines Lesens der potenziell fehlerhaften Bits x
i', c
i', die an der Adresse a
i', gespeichert sind, das Fehlersyndrom
bestimmt werden, wobei a
i' die potenziell fehlerhafte Leseadresse sein kann, und s
T das Fehlersyndrom sein kann, das in seiner transponierten Form als Spaltenvektor bezeichnet werden kann. Unter Verwendung des Fehlersyndroms kann bestimmt werden, ob ein korrigierbarer Fehler x
i', c
i', aufgetreten ist, oder ob ein Fehler in den Adressbits aufgetreten ist.
-
In verschiedenen Ausführungsformen können beim Codieren der Datenbits x
i und der Prüfbits c
i zum Speichern an einer Adresse a
i Bits, die von den Adressbits a
i abgeleitet sind, bei der Bildung der Prüfbits c
i einbezogen werden, derart dass in einem fehlerfreien Fall
ein Codewort des Codes C
1 sein kann. Hierbei kann G
1 die G-Matrix des Code C
1 in systematischer Form sein, und a
i kann die Schreibadresse sein. An der Adresse a
i können nur x
i, c
i gespeichert sein. f kann eine Funktion sein, welche die Adressbits und die jeweiligen abgeleiteten Bits eindeutig miteinander in Beziehung setzt.
-
In verschiedenen Ausführungsformen
wobei f(a
i) eine Parität der Adressbits bestimmen kann.
-
In verschiedenen Ausführungsformen kann während eines Lesens der potenziell fehlerhaften Bits x
i', c
i', die an der Adresse a
i', gespeichert sind, das Fehlersyndrom
bestimmt werden, wobei a
i' die potenziell fehlerhafte Leseadresse sein kann, und s
T das Fehlersyndrom sein kann, das in seiner transponierten Form als Spaltenvektor bezeichnet werden kann. Unter Verwendung des Fehlersyndroms kann bestimmt werden, ob ein korrigierbarer Fehler x
i', c
i' aufgetreten ist, oder ob ein Fehler in den Adressbits aufgetreten ist.
-
In verschiedenen Ausführungsformen kann ein regulärer oder irregulärer Paritätscode geringer Dichte als der Code C2 verwendet werden, wie zum Beispiel in Lin, S. und Costello, D., „Error Control Coding“, zweite Ausgabe, Pearson/Prentice Hall 2004, S. 852, beschrieben.
-
In verschiedenen Ausführungsformen können eine Decodierung und eine Fehlerkorrektur für den Paritätscode geringer Dichte zum Beispiel unter Verwendung einer Majoritätslogik-Decodierung, eines Bit-Umkehr-Algorithmus, einer gewichteten Majoritätsdecodierung oder einer gewichteten Bit-Umkehr-Decodierung, wie zum Beispiel in Lin, S. und Costello, D., „Error Control Coding", zweite Ausgabe, Pearson/Prentice Hall 2004, S. 871-874, beschrieben, oder durch jeden anderen geeigneten Decodierungsprozess durchgeführt werden. Ein Fachmann kann zum Beispiel eine Codierung mit harter Entscheidung oder eine Decodierung mit weicher Entscheidung verwenden.
-
In verschiedenen Ausführungsformen kann ein Reed-Muller-Code, wie zum Beispiel in Lin, S. und Costello, D., „Error Control Coding", zweite Ausgabe, Pearson/Prentice Hall 2004, S. 105-114, beschrieben, oder jeder andere geeignete Fehlerkorrekturcode verwendet werden.
-
7 stellt einen Prozessablauf 700 eines Verfahrens zur Verwendung einer Speichervorrichtung gemäß verschiedenen Ausführungsformen dar.
-
Das Verfahren kann umfassen: Speichern von Dateneinheiten, Prüfeinheiten eines ersten Codes und Prüfeinheiten eines zweiten Codes in Speicherzellen der Speichervorrichtung, wobei die Dateneinheiten und die Prüfeinheiten des ersten Codes Codewörter des ersten Codes bilden, und wobei die Dateneinheiten und die Prüfeinheiten des zweiten Codes Codewörter des zweiten Codes bilden (bei 710), Anwenden des zweiten Codes zur Fehlerkorrektur in mindestens einem Teil der Dateneinheiten und/oder in mindestens einem Teil der Prüfeinheiten des ersten Codes (bei 720), Bewahren nach dem Korrigieren der Fehler der Dateneinheiten und der Prüfeinheiten des ersten Codes und Löschen der Prüfeinheiten des zweiten Codes, um dadurch die Speicherzellen freizusetzen, die von den Prüfeinheiten des zweiten Codes belegt wurden (bei 730), und Speichern von Dateneinheiten und Prüfeinheiten des ersten Codes in den Speicherzellen, welche die freigesetzten Speicherzellen umfassen, während eines anschließenden Verwendens der Speichervorrichtung (bei 740).
-
In verschiedenen Ausführungsformen wird ein Verfahren zur Verwendung einer Speichervorrichtung bereitgestellt. Das Verfahren kann umfassen: Speichern von Dateneinheiten, Prüfeinheiten eines ersten Codes und Prüfeinheiten eines zweiten Codes in Speicherzellen der Speichervorrichtung, wobei die Dateneinheiten und die Prüfeinheiten des ersten Codes Codewörter des ersten Codes bilden, und wobei die Dateneinheiten und die Prüfeinheiten des zweiten Codes Codewörter des zweiten Codes bilden, Anwenden des zweiten Codes zur Fehlerkorrektur in mindestens einem Teil der Dateneinheiten und/oder in mindestens einem Teil der Prüfeinheiten des ersten Codes, Bewahren nach dem Korrigieren der Fehler mindestens eines Bewahrungsteils der Dateneinheiten und der Prüfeinheiten des ersten Codes und Löschen mindestens eines Löschungsteils der Prüfeinheiten des zweiten Codes, um dadurch die Speicherzellen freizusetzen, die vom Löschungsteil der Prüfeinheiten des zweiten Codes belegt wurden, und Speichern von Daten in mindestens einem Wiederverwendungsteil der freigesetzten Speicherzellen während eines anschließenden Verwendens der Speichervorrichtung.
-
In verschiedenen Ausführungsformen kann das Verfahren ferner nach dem Speichern der Dateneinheiten des ersten Codes und der Prüfeinheiten des zweiten Codes und vor dem Anwenden des zweiten Codes zur Fehlerkorrektur ein Aussetzen der Speichervorrichtung gegenüber einem datengefährdenden Prozess umfassen.
-
In verschiedenen Ausführungsformen kann das Verfahren ferner nach dem Speichern der Dateneinheiten des ersten Codes und der Prüfeinheiten des zweiten Codes und vor dem Aussetzen der Speichervorrichtung gegenüber einem datengefährdenden Prozess ein Deaktivieren der Speichervorrichtung umfassen.
-
In verschiedenen Ausführungsformen kann der datengefährdende Prozess mindestens einer von einer Gruppe von Prozessen sein, welche Erwärmung, mechanische Belastung und Strahlungsbelastung umfassen.
-
In verschiedenen Ausführungsformen kann das Verfahren ferner vor dem Anwenden des zweiten Codes zur Fehlerkorrektur ein Anwenden des ersten Codes zum Erkennen und/oder Korrigieren der Fehler und/oder weiterer Fehler umfassen.
-
In verschiedenen Ausführungsformen kann das Speichern der Prüfeinheiten des zweiten Codes ein Speichern der Prüfeinheiten des zweiten Codes in einem fortlaufenden Bereich der Speichervorrichtung umfassen.
-
In verschiedenen Ausführungsformen kann das Speichern der Prüfeinheiten des zweiten Codes ein Speichern der Prüfeinheiten des zweiten Codes in einer Vielzahl von nicht fortlaufenden Speicherzellen umfassen.
-
In verschiedenen Ausführungsformen können das Anwenden des zweiten Codes zur Fehlerkorrektur in mindestens einem Teil der Dateneinheiten und/oder in mindestens einem Teil der Prüfeinheiten des ersten Codes und das Löschen mindestens eines Löschungsteils der Prüfeinheiten des zweiten Codes während einer ersten Aktivierung der Speichervorrichtung nach dem Aussetzen der Speichervorrichtung gegenüber einem datengefährdenden Prozess automatisch ausgeführt werden.
-
In verschiedenen Ausführungsformen können das Anwenden des zweiten Codes zur Fehlerkorrektur in mindestens einem Teil der Dateneinheiten und/oder in mindestens einem Teil der Prüfeinheiten des ersten Codes und das Löschen mindestens eines Löschungsteils der Prüfeinheiten des zweiten Codes manuell ausgelöst werden.
-
In verschiedenen Ausführungsformen kann das Verfahren ferner nach dem anschließenden Verwenden der Speichervorrichtung ein erneutes Speichern von Prüfeinheiten des zweiten Codes in einer Teilmenge von Speicherzellen der Speichervorrichtung umfassen.
-
In verschiedenen Ausführungsformen kann der zweite Code ein Blockcode, zum Beispiel ein Paritätscode, ein Hamming-Code, ein gekürzter Hamming-Code, ein Hsiao-Code, ein gekürzter Hsiao-Code, ein t-Bit-Fehler-korrigierender BCH-Code, ein gekürzter t-Bit-Fehler-korrigierender BCH-Code, wobei zum Beispiel t ≥ 2, ein Reed-Muller-Code, ein gekürzter Reed-Muller-Code, ein zyklischer Code, ein gekürzter zyklischer Code, ein Reed-Solomon-Code, ein gekürzter Reed-Solomon-Code, ein modifizierter Reed-Solomon-Code, ein RAID-Code, ein Byte-korrigierender Code oder ein Paritätscode geringer Dichte, ein nichtlinearer Code, ein Faltungscode, ein Turbo-Code oder ein anderer geeigneter Code sein.
-
In verschiedenen Ausführungsformen können die Prüfbits des ersten Codes durch den zweiten Code als zusätzliche Datenbits behandelt werden.
-
In verschiedenen Ausführungsformen können die Prüfbits des ersten Codes durch den zweiten Code als Prüfbits behandelt werden.
-
In verschiedenen Ausführungsformen kann das Verfahren ferner während oder nach dem Anwenden des zweiten Codes zur Fehlerkorrektur in mindestens einem Teil der Dateneinheiten und/oder in mindestens einem Teil der Prüfeinheiten des ersten Codes ein Auffrischen mindestens eines weiteren Teils der Dateneinheiten und/oder mindestens eines weiteren Teils der ersten Prüfeinheiten umfassen.
-
In verschiedenen Ausführungsformen kann das Verfahren ferner ein Anwenden des ersten Codes nach der Anwendung des zweiten Codes oder Anwenden des zweiten Codes nach Anwendung des ersten Codes umfassen.
-
In verschiedenen Ausführungsformen wird eine Speichervorrichtung bereitgestellt. Die Speichervorrichtung kann so konfiguriert sein, dass sie das Verfahren gemäß verschiedenen Ausführungsformen ausführt.
-
In verschiedenen Ausführungsformen kann die Speichervorrichtung eine nichtflüchtige Speichervorrichtung sein.
-
In verschiedenen Ausführungsformen kann die Speichervorrichtung eine aus einer Gruppe von Speichervorrichtungen sein, wobei die Gruppe umfasst: einen RRAM, einen CBRAM, einen PCRAM, einen MRAM, eine Flash-Speichervorrichtung und einen EEPROM.
-
In verschiedenen Ausführungsformen wird eine Datenspeichervorrichtung bereitgestellt. Die Datenspeichervorrichtung kann die Speichervorrichtung gemäß verschiedenen Ausführungsformen umfassen, und die Speicher-Datenspeichervorrichtung kann eine aus einer Gruppe von Datenspeichervorrichtungen sein, wobei die Gruppe eine Festplatte, eine SSD und eine selbständige nichtflüchtige Speichervorrichtung wie einen Speicherstick umfasst.
-
In verschiedenen Ausführungsformen wird eine Speichervorrichtungsanordnung bereitgestellt. Die Speichervorrichtungsanordnung kann die Speichervorrichtung gemäß verschiedenen Ausführungsformen und eine mit der Speichervorrichtung gekoppelte CPU umfassen.
-
In verschiedenen Ausführungsformen kann die Speichervorrichtung in der Speichervorrichtungsanordnung einen programmierbaren Teil umfassen, wobei der programmierbare Teil so konfiguriert sein kann, dass er das Verfahren gemäß verschiedenen Ausführungsformen ausführt.
-
In verschiedenen Ausführungsformen kann die Speichervorrichtungsanordnung einen mit der CPU gekoppelten ROM umfassen, wobei der ROM so konfiguriert sein kann, dass er das Verfahren gemäß verschiedenen Ausführungsformen ausführt.