DE102016101543A1 - Verfahren zum Betreiben einer Speichervorrichtung - Google Patents

Verfahren zum Betreiben einer Speichervorrichtung Download PDF

Info

Publication number
DE102016101543A1
DE102016101543A1 DE102016101543.1A DE102016101543A DE102016101543A1 DE 102016101543 A1 DE102016101543 A1 DE 102016101543A1 DE 102016101543 A DE102016101543 A DE 102016101543A DE 102016101543 A1 DE102016101543 A1 DE 102016101543A1
Authority
DE
Germany
Prior art keywords
code
data
mode
corrected
memory device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102016101543.1A
Other languages
English (en)
Inventor
Thomas Kern
Michael Gössel
Karl Hofmann
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Infineon Technologies AG filed Critical Infineon Technologies AG
Priority to DE102016101543.1A priority Critical patent/DE102016101543A1/de
Priority to US15/410,912 priority patent/US10216573B2/en
Publication of DE102016101543A1 publication Critical patent/DE102016101543A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • H03M13/353Adaptation to the channel
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/136Reed-Muller [RM] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/23Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using convolutional codes, e.g. unit memory codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Bei diversen Ausführungsformen wird ein Verfahren zum Korrigieren und/oder Erfassen eines Fehlers in einer Speichervorrichtung bereitgestellt. Das Verfahren kann in einem ersten Betriebsmodus das Anwenden eines Codes zum Erfassen und/oder Korrigieren eines Fehlers aufweisen, und in einem zweiten Betriebsmodus, nach einem inaktiven Modus und vor dem Eintreten in den ersten Betriebsmodus, das Anwenden eines zweiten Codes zum Korrigieren und/oder Erfassen eines Fehlers, wobei der erste Code und der zweite Code unterschiedliche Codewörter haben.

Description

  • GEBIET
  • Diverse Ausführungsformen betreffen im Allgemeinen ein Verfahren zum Betreiben einer Speichervorrichtung.
  • STAND DER TECHNIK
  • Bekannte Speichervorrichtungen weisen flüchtige und nicht flüchtige Speichervorrichtungen auf. Flüchtige Speichervorrichtungen, zum Beispiel Static Random Access Memory(SRAM)-Vorrichtungen oder Dynamic Random Access Memory(DRAM)-Vorrichtungen verlieren Informationen, die in ihren Speicherzellen gespeichert sind, wenn ihr Betriebsstrom abgeschaltet wird. Bei nicht flüchtigen Speichervorrichtungen, zum Beispiel in einem Flashspeicher, bleiben gespeicherte Informationen sogar erhalten, wenn der Betriebsstrom abgeschaltet wird.
  • Eine Speichervorrichtung kann mehrere Speicherzellen aufweisen.
  • In einem Fall einer binären nicht flüchtigen Speicherzelle kann die Speicherzelle in einem von zwei Zuständen sein, die jeweils 0 und 1 genannt werden können.
  • Falls die Speicherzelle in dem 0-Zustand ist, kann ein Schreibvorgang des Schreibens einer 0 die Speicherzelle in dem 0-Zustand hinterlassen, während ein Vorgang des Schreibens eine 1 die Speicherzelle auf einen 1-Zustand bringen kann. Mit anderen Worten kann in dem 0-Zustand ein willkürlicher Wert der binären Werte in die Speicherzelle geschrieben werden. Der Schreibvorgang kann auch ein Programmieren der Speicherzelle genannt werden.
  • Falls die Speicherzelle in dem 1-Zustand ist, bleibt die Speicherzelle in dem 1-Zustand, ungeachtet der binären Werte, die in die Speicherzelle durch einen Schreibvorgang zu schreiben sind, was nachteilig sein kann. Es kann möglich sein, alle Speicherzellen in einem Bereich einer Speichervorrichtung auf den 0-Zustand zu stellen. Das kann ein Löschen der Speichervorrichtung genannt werden. Nach einem Löschen der Speicherzellen des Bereichs können (zum Beispiel wieder) willkürliche Werte in die Speicherzellen des gelöschten Bereichs geschrieben werden. Es kann daher ein mühsamer Vorgang sein, Informationen in eine Flash-Speichervorrichtung zu schreiben, falls die Speicherzellen der Vorrichtung zuvor zum Speichern von Informationen verwendet und daher programmiert wurden.
  • Im Gegensatz zu flüchtigen Speichervorrichtungen, zum Beispiel Flash-Speichervorrichtungen, können nicht flüchtige Speichervorrichtungen, wie zum Beispiel MRAM-Speichervorrichtungen, die mehrere Speicherzellen aufweisen können, Informationen dauerhaft speichern, sogar falls kein Betriebsstrom angelegt wird. Es kann möglich sein, willkürliche Werte der binären Werte in eine Speicherzelle der mehreren Speicherzellen der MRAM-Speichervorrichtung unabhängig von einem aktuellen Zustand der Speicherzelle zu schreiben.
  • Bei bekannten MRAM-Speichervorrichtungen können Quanteneffekte fehlerhafte Werte in den Speicherzellen verursachen, was nachteilig sein kann. Eine Anzahl von Fehlern kann von externen Parametern abhängen. Die Anzahl von Fehlern kann zum Beispiel von Temperatur abhängen, das heißt mit zunehmender Temperatur steigen. Die Anzahl von Fehlern kann mit der Zeit steigen.
  • Um die Anzahl von Fehlern sogar nach einem Verstreichen von Zeit klein zu halten, können Daten, die in den Speicherzellen gespeichert sind, als Codewörter eines Fehlerkorrekturcodes gespeichert werden. Durch Verwenden eines Fehlerkorrekturvorangs kann daher die Anzahl von Fehlern klein gehalten werden. Potenzielle fehlerhafte Daten können gelesen und unter Verwenden des Fehlerkorrekturcodes korrigiert werden. Die korrigierten Daten können in die Speicherzellen zurückgeschrieben werden, so dass die Originaldaten in vielen Fällen fehlerfrei wiedergegeben werden können. Hier kann es erforderlich sein, dass es möglich ist, dass Fehler durch Anwenden des Codes korrigiert werden. Zum Korrigieren der Fehler kann ein Betriebsstrom erforderlich sein. Falls eine MRAM-Speichervorrichtung während einer langen Zeit nicht verwendet wird, kann es wahrscheinlich sein, dass eine relativ große Anzahl von Fehlern in den Speicherzellen vorhanden ist. In einem Zustand, in dem die Speichervorrichtung nicht verwendet wird, werden keine Lesevorgänge (auch Lesezugriffe genannt) und keine Schreibvorgänge (auch Schreibzugriffe genannt) ausgeführt. In vielen Fällen ist kein Betriebsstrom vorhanden.
  • Ein Zustand einer Speichervorrichtung, in dem kein Lesevorgang und kein Schreibvorgang stattfinden, kann ein inaktiver Zustand, ein inaktiver Modus, eine inaktive Phase oder eine Ruhephase genannt werden. Ein solcher inaktiver Zustand kann bei vielen oder sogar den meisten nicht flüchtigen Speichervorrichtungen ein regulärer Zustand sein. Er kann zum Beispiel bei einer Speichervorrichtung, die in einem Fahrzeug verwendet wird, zum Beispiel in einem PKW, einem Bus, einem Nutzfahrzeug usw. auftreten. Es kann vorkommen, dass ein solches Fahrzeug während einer bestimmten Zeitmenge nicht verwendet wird, zum Beispiel mehrere Tage oder Wochen. Während dieser Zeit wird der Speichervorrichtung möglicherweise kein Betriebsstrom bereitgestellt, der erforderlich sein könnte, um Fehler in Speicherzellen der Speichervorrichtung zu korrigieren und korrekte Werte in den Speicherzellen wieder herzustellen.
  • Aus dem inaktiven Zustand kann die Speichervorrichtung in einen aktiven Zustand übergeführt werden, in dem Lese- und/oder Schreibvorgänge stattfinden können, übergeführt werden. Ein solcher Übergangszustand kann Einschalten oder Starten genannt werden. während des Startens, nachdem der inaktive Zustand beendet wurde und die Speichervorrichtung dabei ist, in den aktiven Modus einzusteigen, mit Lese- und/oder Schreibvorgängen, die in der Startphase stattfinden, kann die Korrektur von Fehlern, die während des inaktiven Zustands auftreten, ausgeführt werden. In Abhängigkeit von einer Dauer des inaktiven Zustands, zum Beispiel während eines relativ langen inaktiven Zustands, zum Beispiel ein inaktiver Zustand, der mehrere Tage oder Wochen dauert, kann sich eine relativ große Anzahl von Fehlern ansammeln. Eine solche große Anzahl von Fehlern lässt sich möglicherweise nicht durch Verwenden des Codes, der zum Korrigieren von Fehlern während der aktiven Phase verwendet wird, korrigieren. Das kann ein Nachteil sein.
  • KURZDARSTELLUNG
  • Ein Verfahren zum Betreiben einer Speichervorrichtung wird bereitgestellt. Das Verfahren kann Folgendes aufweisen: in einem ersten Betriebsmodus Anwenden eines ersten Codes zum Erfassen und/oder Korrigieren von Fehlern, und in einem zweiten Betriebsmodus, nach einem inaktiven Modus und vor dem Eintreten in den ersten Betriebsmodus, Anwenden eines zweiten Codes zum Korrigieren von Fehlern, wobei der erste Code und der zweite Code unterschiedliche Codewörter haben.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • In den Zeichnungen verweisen gleiche Bezugszeichen im Allgemeinen auf gleiche Teile in den verschiedenen Ansichten. Die Zeichnungen sind nicht notwendigerweise maßstabgerecht, der Schwerpunkt ist im Allgemeinen die Veranschaulichung der Grundsätze der Erfindung. In der folgenden Beschreibung werden diverse Ausführungsformen der Erfindung unter Bezugnahme auf die folgenden Zeichnungen beschrieben, in welchen:
  • 1A in Übereinstimmung mit diversen Ausführungsformen eine schematische Darstellung von Datenbits und ersten und zweiten Prüfbits jeweils eines ersten Codes und eines zweiten Codes, die Speicherzellen einer Speichervorrichtung zugewiesen sind, zeigt,
  • 1B in Übereinstimmung mit diversen Ausführungsformen eine schematische Darstellung von Datenbits, erster und zweiter Prüfbits jeweils eines ersten Codes und eines zweiten Codes und zusätzliche Prüfbits, die Speicherzellen einer Speichervorrichtung zugeordnet sind, zeigt,
  • 2 in Übereinstimmung mit diversen Ausführungsformen eine schematische Darstellung von Datenbits und Prüfbits, die Speicherzellen einer Speichervorrichtung zugewiesen sind, für eine blockweise Organisation der Speichervorrichtung zeigt,
  • 3A in Übereinstimmung mit diversen Ausführungsformen eine schematische Darstellung einer Schaltung zum Korrigieren von Datenbits, die aus einer Speichervorrichtung gelesen werden, für ein korrektes Wiederherstellen fehlerhafter Werte in Speicherzellen der Speichervorrichtung zeigt,
  • 3B in Übereinstimmung mit diversen Ausführungsformen eine teilweise Ansicht einer Skizze einer Schaltung zum Korrigieren von Datenbits, die aus einer Speichervorrichtung gelesen werden, und für ein korrektes Wiederherstellen fehlerhafter Werte in den Speicherzellen der Speichervorrichtung zeigt, wobei die Schaltung eine Fehlererfassungsschaltung aufweisen kann,
  • 3C in Übereinstimmung mit diversen Ausführungsformen eine Skizze einer Schaltung zum Korrigieren von Datenbits, die aus einer Speichervorrichtung gelesen werden, und für ein korrektes Wiederherstellen fehlerhafter Werte in Speicherzellen einer zweiten Speichervorrichtung zeigt,
  • 3D in Übereinstimmung mit diversen Ausführungsformen eine Skizze einer Schaltung zum Korrigieren von Datenbits, die aus einer Speichervorrichtung gelesen werden, und für ein korrektes Wiederherstellen fehlerhafter Werte in den Speicherzellen zeigt, wobei ein Korrektor des ersten Codes und des zweiten Codes und der Codierer des ersten und des zweiten Codes von Adressbits der Adresse abhängen können, die zum Schreiben und/oder Lesen verwendet wird,
  • 4 in Übereinstimmung mit diversen Ausführungsformen eine Skizze einer Schaltung zum Ausführen eines Codes, der eine Seriell-zu-Parallel-Umwandlung aufweist, zeigt, wobei die Schaltung zum Bilden von Prüfbits eines zweiten Codes verwendet werden kann,
  • 5 einen Prozessfluss eines Verfahrens zum Betreiben einer Speichervorrichtung in Übereinstimmung mit diversen Ausführungsformen zeigt,
  • 6 einen Prozessfluss eines Verfahrens zum Betreiben einer Speichervorrichtung in Übereinstimmung mit diversen Ausführungsformen zeigt,
  • 7 einen Prozessfluss eines Verfahrens zum Betreiben einer Speichervorrichtung in Übereinstimmung mit diversen Ausführungsformen zeigt,
  • 8 einen Prozessfluss eines Verfahrens zum Betreiben einer Speichervorrichtung in Übereinstimmung mit diversen Ausführungsformen zeigt.
  • BESCHREIBUNG
  • Die folgende ausführliche Beschreibung betrifft die begleitenden Zeichnungen, die veranschaulichend spezifische Einzelheiten und Ausführungsformen, in welchen die Erfindung umgesetzt werden kann, zeigt.
  • Das Wort „beispielhaft” wird hier mit der Bedeutung „als ein Beispiel, ein Instanz oder Veranschaulichung dienend” verwendet. Irgendeine Ausführungsform oder ein Design, die hier als „beispielhaft” beschrieben werden, soll nicht notwendigerweise als bevorzugt oder vorteilhaft gegenüber anderen Ausführungsformen oder Designs verstanden werden.
  • Das Wort „über”, das in Zusammenhang mit einem abgelagerten Material verwendet wird, das „über” einer Seite oder Oberfläche ausgebildet ist, kann hier bedeuten, dass das abgelagerte Material „direkt auf”, zum Beispiel in direktem Kontakt mit der betroffenen Seite oder Oberfläche ausgebildet sein kann. Das Wort „über”, das in Zusammenhang mit einem abgelagerten Material, das „über” einer Seite oder Oberfläche ausgebildet ist, verwendet wird, kann hier bedeuten, dass das abgelagerte Material „indirekt auf” der betroffenen Seite oder Oberfläche ausgebildet sein kann, wobei eine oder mehrere zusätzliche Schichten zwischen der betroffenen Seite oder Oberfläche und dem abgelagerten Material eingerichtet sind.
  • Diverse Aspekte der Offenbarung werden für Vorrichtungen bereitgestellt, und diverse Aspekte der Offenbarung werden für Verfahren bereitgestellt. Es ist klar, dass grundlegende Eigenschaften der Vorrichtungen auch für die Verfahren und umgekehrt gelten können. Im Sinne der Kürze wurde die zweifache Beschreibung solcher Eigenschaften eventuell weggelassen.
  • Bei diversen Ausführungsformen kann ein Verfahren zum Betreiben einer Speichervorrichtung bereitgestellt werden, das einen Nachteil bekannter Verfahren zum Betreiben einer Speichervorrichtung, nämlich die eventuelle Unfähigkeit, eine große Anzahl von Fehlern, die sich während eines inaktiven Zustands, zum Beispiel während eines inaktiven Zustands mit einer langen Dauer ansammeln können, nicht zu verhindern oder lindern kann.
  • Bei diversen Ausführungsformen kann eine Speichervorrichtung zum Beispiel ein MRAM, bereitgestellt werden, die alle der folgenden Funktionalitäten bereitstellen kann: Die Speichervorrichtung kann für normale schnelle Lese- und Schreibvorgänge (zum Beispiel als ein Ersetzen für einen SRAM) geeignet sein, die Speichervorrichtung kann zum Speichern von Daten während einer langen Zeit in einem inaktiven Zustand ohne Lese- und Schreibvorgänge (zum Beispiel als ein Ersatz für eine Flash-Speichervorrichtung) geeignet sein, und es kann möglich sein, ein Verfahren anzuwenden, das zum Betreiben der Speichervorrichtung mit unterschiedlichen Graden von Zuverlässigkeit verwendeter Speicherzellen, zum Beispiel MRAM-Speicherzellen, der Speichervorrichtung geeignet ist.
  • Viele, möglicherweise die meisten oder alle nicht flüchtigen Speichervorrichtungen können konfiguriert werden, um auf einen inaktiven Zustand übergeführt zu werden, in dem kein Schreiben in die Speichervorrichtung und kein Lesen aus der Speichervorrichtung ausgeführt werden. Der inaktive Zustand kann zum Beispiel gelegentlich oder regelmäßig angenommen werden. Ein dediziertes Signal kann erforderlich sein, um die Speichervorrichtung von einem aktiven Zustand, in dem Daten aus der Speichervorrichtung gelesen werden oder Daten in die Speichervorrichtung geschrieben werden, auf den inaktiven Zustand überzuführen, zum Beispiel ein Inaktiv-Zustand-Startsignal. Ein dediziertes Signal kann zum Überführen der Speichervorrichtung von dem inaktiven Zustand zu einem aktiven Zustand erforderlich sein, zum Beispiel ein Inaktiv-Zustand-Endsignal.
  • Bei diversen Ausführungsformen kann nach, zum Beispiel unmittelbar nach dem Enden des inaktiven Zustands, in eine sogenannte Startphase eingestiegen werden. In einer solchen Startphase können bestimmte vordefinierte Vorgänge zum Vorbereiten der Speichervorrichtung und/oder einer Hostvorrichtung, in die die Speichervorrichtung integriert sein kann, ausgeführt werden, so dass die Speichervorrichtung und möglicherweise die Hostvorrichtung möglicherweise für normale Vorgänge bereit sein können.
  • Ein Beispiel für eine Startphase (die auch Startmodus oder zweiter Betriebsmodus genannt werden kann) und eine normale Betriebsphase, (die auch normaler Betriebsmodus oder erster Betriebsmodus genannt werden kann) kann eine Speichervorrichtung sein, die in einem Kraftfahrzeug, zum Beispiel in einem PKW, einem Bus, einem Nutzfahrzeug, einem Schiff, einem Flugzeug usw. verwendet wird. Bei den hier beschriebenen Beispielen kann auf einen PKW Bezug genommen werden. Es ist jedoch klar, dass die Beispiele ähnlich an irgendein anderes mit einem Motor angetriebenes Fahrzeug angewandt werden können, zum Beispiel, ohne darauf beschränkt zu sein, an die oben aufgezählten.
  • Eine Speichervorrichtung, die in einem PKW verwendet wird, kann regelmäßig in eine inaktive Phase eintreten, zum Beispiel, wenn der PKW abgeschaltet wird. Die Speichervorrichtung kann von einer Stromversorgung während dieser Phase getrennt werden. Wenn der PKW angelassen wird, kann die Vorrichtung wieder mit Strom versorgt werden und eine Startphase durchlaufen (im Automobilkontext kann das auch eine Boot-Phase genannt werden). Es kann dann in eine normale Betriebsphase eingestiegen werden, wenn der Motor angelassen wird, oder wenigstens wenn typische Vorgänge, die während des Startens ausgeführt werden, abgeschlossen werden. Eine Kombination von Startphase und normaler Betriebsphase (zum Beispiel im Automobilkontext) kann eine Zündungs-Einschaltphase genannt werden. Die Zündungs-Einschaltphase kann beginnen, wenn ein Schlüssel von einer Aus-Position (Ausschalten) auf eine Position Zündung Ein oder eine Motor-Anlassposition (oder, bei schlüssellosen Vorrichtungen, wenn eine vergleichbare Aktion ausgeführt wird) bewegt wird, und kann enden, wenn der Schlüssel auf die Aus-Position zurückgestellt wird.
  • Ein anderes Beispiel für eine inaktive Phase in einem PKW kann Schlafmodus genannt werden. Im Schlafmodus können keine Lesevorgänge aus der Speichervorrichtung und keine Schreibvorgänge in die Speichervorrichtung ausgeführt werden. Ein Datenverkehr, der zum Beispiel in einem Bussystem, mit dem die Speichervorrichtung verbunden sein kann, durchgeht, kann überwacht werden, und falls Daten, zum Beispiel ein Befehl, angetroffen werden, die in die Speichervorrichtung gerichtet sind, kann die Speichervorrichtung aus dem Schlafmodus aufgeweckt werden. Während des Schlafmodus kann die Speichervorrichtung mit Strom versorgt werden oder nicht.
  • Bei diversen Ausführungsformen kann eine Wahrscheinlichkeit, dass fehlerhafte Werte in einer Speichervorrichtung auftreten, zum Beispiel Fehler, die nach einer Korrektur verbleiben und während einer aktiven Phase vorhanden sind, verringert werden, obwohl sich eine große Anzahl fehlerhafter Werte während des inaktiven Zustands angesammelt haben kann. Die Speichervorrichtung kann zum Beispiel ein MRAM sein.
  • Bei diversen Ausführungsformen kann erzielt werden, dass eine MRAM-Speichervorrichtung, die ein Schreiben willkürlicher Daten zu Speichervorrichtungen erlaubt, mit einer Zuverlässigkeit versehen wird, die ihre Anwendung für Langzeit-Datenspeicherung erlauben kann, das heißt als eine nicht flüchtige Speichervorrichtung.
  • Bei diversen Ausführungsformen können Daten eine Darstellung einer Information oder mehrerer Informationsteile sein. Jede der Daten kann mehrere Dateneinheiten aufweisen. Die Daten können zum Beispiel binäre Daten sein, das heißt, dass jede Dateneinheit einen von zwei Werten haben kann. Die zwei Werte können jeweils 0 und 1 genannt werden. In dem Fall binärer Daten kann die Dateneinheit Bit genannt werden.
  • Bei diversen Ausführungsformen können unterschiedliche Codes mit unterschiedlichen Korrekturfähigkeiten und unterschiedlichen Korrekturgeschwindigkeiten für unterschiedliche Betriebsmodi einer Speichervorrichtung verwendet werden.
  • Bei diversen Ausführungsformen können ein erster Code und ein zweiter Code verwendet werden.
  • Ein Code kann aus mehreren Codewörtern bestehen. Jedes Codewort eines gegebenen Codes kann aus mehreren Codeworteinheiten bestehen. Jedes Codewort eines gegebenen Codes kann sich von irgendeinem anderen Codewort des Codes in einer Mindestanzahl von Codeworteinheiten unterscheiden. Die Mindestanzahl von Codeworteinheiten kann eine Codedistanz genannt werden. Die Codedistanz eines Codes kann verwendet werden, um seine Fähigkeit zu beschreiben, Fehler in codierten Daten zu erfassen und/oder zu korrigieren. Ein Code mit einer Codedistanz d zwischen seinen Codewörtern kann bis zu d – 1 Fehler erfassen (was auch die Fehlererfassungsfähigkeit des Codes genannt wird) und kann [(d – 1)/2] Fehler korrigieren (was auch Fehlerkorrekturfähigkeit des Codes genannt wird).
  • Die mehreren Codeworteinheiten können mindestens eine Dateneinheit aufweisen. Bei diversen Ausführungsformen können die mehreren Codeworteinheiten ferner mindestens eine Prüfeinheit aufweisen. Ein Fehlerkorrekturcode kann zum Beispiel mindestens eine Dateneinheit aufweisen, zum Beispiel mindestens ein Datenbit, und mindestens eine Prüfeinheit, zum Beispiel mindestens ein Prüfbit.
  • Bei diversen Ausführungsformen können Daten als codierte Daten gespeichert werden, das heißt als Codewörter eines Codes. Die Daten können zum Beispiel in der mindestens einen Dateneinheit dargestellt werden. Mindestens ein Prüfbit kann hinzugefügt werden, um fähig zu sein zu prüfen, ob die Dateneinheiten korrekt sind. Falls die Daten fehlerfrei codiert sind, ist jedes Datenwort ein Wort des Codes, was auch ein Codewort genannt wird. Falls jedoch ein Fehler auftritt, zum Beispiel durch Quanteneffekte, die während eines inaktiven Zustands der Speichervorrichtung, in der die codierten Daten gespeichert sind, stattfinden, stellen die Daten eventuell nicht mehr ein oder mehrere Wörter des Codes dar. Um die codierten Wörter, die einen oder mehrere Fehler enthalten können und daher Wörter des Codes sein können oder nicht, von den fehlerfrei codierten Daten zu unterscheiden, können die fehlerbehafteten Wörter Datenwörter genannt werden, und die fehlerfreien Wörter können Datencodewörter genannt werden.
  • Die Quanteneffekte, die Fehler in die gespeicherten Daten einführen können, können sowohl während eines aktiven als auch eines inaktiven Zustands auftreten. Während Fehler während eines aktiven Zustands jedoch kontinuierlich korrigiert und daran gehindert werden, sich anzusammeln, kann das während eines inaktiven Zustands nicht der Fall sein, und Fehler können sich daher ansammeln, wenn eine Speichervorrichtung in einem inaktiven Zustand ist.
  • Bei diversen Ausführungsformen kann der erste Code eine erste Codedistanz haben. Der zweite Code kann eine zweite Codedistanz haben. Bei diversen Ausführungsformen kann der erste Code zum Korrigieren, zum Beispiel zum relativ schnellen Korrigieren, von Fehlern in Daten verwendet werden, die aus der Speichervorrichtung während eines aktiven Modus gelesen werden. Fehler in den Daten, die aus der Speichervorrichtung gelesen werden, können dabei korrigiert werden, falls die Fehler unter Verwenden des ersten Codes korrigierbar sind. Ein solcher Betriebsmodus der Speichervorrichtung kann ein erster Betriebsmodus genannt werden.
  • Der zweite Code kann Codewörter haben, die von den Codewörtern des ersten Codes unterschiedlich sind.
  • Bei diversen Ausführungsformen kann der zweite Code zum Korrigieren von Daten, zum Beispiel von Bits, die aus einer Speichervorrichtung gelesen werden, zum Beispiel aus einem adressierten Bereich, zum Beispiel nachdem ein inaktiver Zustand endet, verwendet werden. Die Daten, zum Beispiel die Bits, können dann durch Anwenden des zweiten Codes korrigiert werden, können zu jeweiligen Speicherzellen der Speichervorrichtung zum Wiederherstellen korrekter Werte in der Speichervorrichtung nach dem Ende des inaktiven Zustands geschrieben werden. Ein solcher Betriebsmodus der Speichervorrichtung kann ein zweiter Betriebsmodus genannt werden.
  • Bei diversen Ausführungsformen kann der zweite Code eine zweite Codedistanz haben. Die zweite Codedistanz kann bei diversen Ausführungsformen größer sein als die Codedistanz des ersten Codes, das heißt die erste Codedistanz. Dabei können Fehler, die durch Anwenden des ersten Codes nicht korrigierbar sind, durch Anwenden des zweiten Codes korrigierbar sein.
  • Die erste Codedistanz und die zweite Codedistanz können bei diversen Ausführungsformen derart ausgewählt werden, dass eine gewünschte Zuverlässigkeit einer Speichervorrichtung und ihrer Speicherzellen garantiert werden kann.
  • Bei diversen Ausführungsformen kann in dem zweiten Betriebsmodus eine Korrektur fehlerhafter Dateneinheiten, zum Beispiel Bits, durch Anwenden einer Kombination des ersten Codes und des zweiten Codes ausgeführt werden.
  • Bei diversen Ausführungsformen kann der erste Code zum Bestimmen von Positionen von Fehlern verwendet werden, und der zweite Code kann zum Korrigieren der Fehler unter Verwenden der Fehlerpositionen, die durch Anwenden des ersten Codes bestimmt wurden, verwendet werden. Eine Fehlerkorrektur, wie ein sogenanntes Löschen, kann daher möglich sein.
  • Bei diversen Ausführungsformen kann ein fehlerhaftes Datenwort, das durch eine Adresse einer Speichervorrichtung adressiert sein kann, unter Verwenden eines ersten Codes bestimmt werden. Als ein zweiter Code kann ein Code verwendet werden, der fähig ist, mehrere Codeeinheiten zu korrigieren, zum Beispiel ein Byte-Korrekturcode. Der zweite Code kann verwendet werden, um die mehreren Codeeinheiten zu korrigieren, zum Beispiel byteweise, wobei das oder die Bytes, die zu korrigieren sind, aus der Anwendung des ersten Codes bekannt sein können. Bei diversen Ausführungsformen kann es möglich sein, dass eine Korrektur unter Verwenden des zweiten Codes länger brauchen kann als eine Korrektur unter Verwenden des ersten Codes.
  • Bei diversen Ausführungsformen können der erste Code und der zweite Code während einer Korrektur parallel verwendet werden.
  • Bei diversen Ausführungsformen kann einer der Codes, zum Beispiel der zweite Code, sequenziell umgesetzt werden, zum Beispiel für eine sequenzielle Fehlererfassung und Fehlerkorrektur, falls genügend Zeit für eine Korrektur verfügbar ist. Das kann zum Beispiel der Fall während eines Startens sein.
  • Bei diversen Ausführungsformen können beide Codes, das heißt der erste Code und der zweite Code, sequenziell umgesetzt werden, falls genügend Zeit für eine Korrektur verfügbar ist. Das kann zum Beispiel der Fall während eines Startens sein.
  • Bei diversen Ausführungsformen können zusätzlich zu dem ersten Code und dem zweiten Code ein oder mehrere zusätzliche Codes, zum Beispiel ein dritter Code, ein vierter Code usw. für eine Fehlerkorrektur verwendet werden.
  • Bei diversen Ausführungsformen kann der erste Code ein Blockcode sein, zum Beispiel ein Hamming-Code, ein gekürzter Hamming-Code, ein Hsiao-Code, ein gekürzter Hsiao-Code, ein t-Bit-Fehlerkorrektur-BCH-Code, ein gekürzter t-Bit-Fehlerkorrektur-BCH-Code, zum Beispiel mit t ≥ 2, ein Reed-Muller-Code, ein gekürzter Reed-Muller-Code, ein zyklischer Code, ein gekürzter zyklischer Code oder ein Byte-Korrekturcode sein.
  • Bei diversen Ausführungsformen kann der zweite Code oder ein dritter Code ein Blockcode sein, zum Beispiel ein Paritätscode, ein Hamming-Code, ein gekürzter Hamming-Code, ein Hsiao-Code, ein gekürzter Hsiao-Code, ein t-Bit-Fehlerkorrektur-BCH-Code, ein gekürzter t-Bit-Fehlerkorrektur-BCH-Code, zum Beispiel mit 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-Korrekturcode oder ein Low Density Parity Code. Es können auch andere Codes verwendet werden, zum Beispiel ein nicht linearer Code, der dem Fachmann bekannt ist. Ein Faltungscode oder ein Turbocode oder irgendein anderer Fehlererfassungs- oder Fehlerkorrekturcode kann auch verwendet werden, zum Beispiel als ein zweiter oder ein dritter Code.
  • Bei diversen Ausführungsformen können der zweite Code oder einer der zusätzlichen Codes eine Löschkorrektur bilden, falls eine mögliche Position eines Fehlers, zum Beispiel eines fehlerhaften Bytes einer bestimmten Wortlänge oder eines fehlerhaften Blocks einer Speichervorrichtung, die als Blöcke organisiert sein kann, von einer Anwendung des ersten Codes und/oder des zweiten Codes angegeben wird.
  • Bei diversen Ausführungsformen kann ein Verfahren zum Korrigieren von Dateneinheiten, zum Beispiel von Bits, Bytes, mehrwertigen Werten oder Subbit-Werten, die in Speicherzellen einer adressierbaren Speichervorrichtung gespeichert sind, bereitgestellt werden. Bei diversen Ausführungsformen kann die Speichervorrichtung ein Bit pro Speicherzelle, mehrere Bits oder einen Wert eines Bereichs mehrfacher Werte speichern, oder, zum Beispiel zum Verbessern einer Robustheit der Vorrichtung, kann ein Bit in mehreren Speicherzellen gespeichert werden, zum Beispiel in zwei Zellen, so dass in jeder Speicherzelle nur ein Bruchteil eines Bits gespeichert wird, zum Beispiel 0,5 Bit/Zelle. In den Speicherzellen der adressierbaren Speichervorrichtung können die Dateneinheiten, zum Beispiel Bits, erste Prüfeinheiten, zum Beispiel erste Prüfbits, die Dateneinheiten entsprechen, zum Beispiel Datenbits, und zweite Prüfeinheiten, zum Beispiel zweite Prüfbits, die Dateneinheiten entsprechen, gespeichert werden. In einem Fall, in dem keine Fehler vorliegen, können die Dateneinheiten, zum Beispiel Datenbits, und die entsprechenden ersten Prüfeinheiten, zum Beispiel erste Prüfbits, Codewörter eines ersten Fehlererfassungs- und/oder Fehlerkorrekturcodes bilden, und die Dateneinheiten, zum Beispiel die Datenbits, und die entsprechenden zweiten Prüfeinheiten, zum Beispiel zweite Prüfbits, können Codewörter eines zweiten Fehlererfassungs- und/oder Fehlerkorrekturcodes bilden.
  • Bei diversen Ausführungsformen können die Codewörter des ersten Codes von den Codewörtern des zweiten Codes unterschiedlich sein.
  • Bei diversen Ausführungsformen kann die adressierbare Speichervorrichtung einen ersten Betriebsmodus haben, wobei in dem ersten Betriebsmodus Dateneinheiten, zum Beispiel Datenbits, und ihre entsprechenden ersten Prüfeinheiten, zum Beispiel erste Prüfbits, aus der Speichervorrichtung gelesen und zur weiteren Verwendung bereitgestellt werden können. Die Adressen der adressierbaren Speichervorrichtung, aus der die Dateneinheiten und die Prüfeinheiten gelesen werden, können gemäß der Aufgabe, die auszuführen ist, bestimmt werden.
  • Bei diversen Ausführungsformen kann die adressierbare Speichervorrichtung einen zweiten Betriebsmodus aufweisen, der von dem ersten Betriebsmodus unterschiedlich sein kann. Der zweite Betriebsmodus kann für ein korrektes Wiederherstellen fehlerhafter Werte in Speicherzellen der adressierbaren Speichervorrichtung verwendet werden.
  • In einem Fall, in dem ein Fehler in den Dateneinheiten, die in einem ersten Betriebsmodus gelesen werden, vorhanden ist, kann der Fehler bei diversen Ausführungsformen in den Dateneinheiten, die aus der Speichereinheit gelesen werden, durch Anwenden des ersten Codes korrigiert werden, falls der Fehler ein Fehler ist, der unter Verwenden des ersten Codes korrigierbar ist, und die korrigierten Dateneinheiten, zum Beispiel Datenbits, können zur weiteren Verwendung bereitgestellt werden.
  • Bei diversen Ausführungsformen können in dem zweiten Betriebsmodus Dateneinheiten, zum Beispiel Datenbits, und zweite Prüfeinheiten, zum Beispiel zweite Prüfbits, die den Datenbits entsprechen, aus den adressierbaren Speicherzellen für einen nicht leeren Subsatz von Adressen der adressierbaren Speichervorrichtung gelesen werden.
  • Fehler in den Dateneinheiten, zum Beispiel den Datenbits, die aus der Speichervorrichtung gelesen werden, die unter Verwenden des zweiten Codes korrigiert werden können, können bei diversen Ausführungsformen unter Verwenden des zweiten Codes korrigiert werden, und korrigierte Datenbits können zu den entsprechenden Speicherzellen der Speichervorrichtung zurückgeschrieben werden, so dass die fehlerhaften Werte, die eventuell in den Speicherzellen vorhanden waren, zum Beispiel in einer oder mehreren der Speicherzellen, wieder korrekt in den Speicherzellen gespeichert werden können.
  • Bei dem zweiten Betriebsmodus kann es bei diversen Ausführungsformen auch möglich sein, den ersten Code und den zweiten Code zum Wiederherstellen korrekter Werte in den Speicherzellen zu verwenden.
  • Bei diversen Ausführungsformen können Dateneinheiten, zum Beispiel Datenbits, erste Prüfeinheiten, zum Beispiel erste Prüfbits, und zweite Prüfeinheiten, zum Beispiel zweite Prüfbits, in einer Speichervorrichtung gespeichert sein. Die Dateneinheiten und die ersten Prüfeinheiten können ein Codewort eines ersten Fehlerkorrekturcodes bilden, der zum Beispiel ein 2-Einheiten (zum Beispiel 2-Bit-Korrektur) oder ein 3-Einheiten (zum Beispiel 3-Bit-Korrektur-BCH-Code sein kann. Die Dateneinheiten und die zweiten Prüfeinheiten können ein Codewort eines zweiten Fehlerkorrekturcodes bilden, zum Beispiel einen 20-Einheiten(zum Beispiel 20-Bit-)Fehlerkorrektur-BCH-Code oder einen Byte-Korrektur-Reed-Solomon-Code bilden. Die Prüfeinheiten des zweiten Codes können von den Datenbits einer Abfolge von Wörtern, auf die durch eine Abfolge von Adressen zugegriffen wird, bestimmt werden.
  • Bei diversen Ausführungsformen können die Einheiten, zum Beispiel die Bits, aller Datenwörter eines Speicherblocks Informationseinheiten, zum Beispiel Bits, eines Codeworts sein, für das die zweiten Prüfbits für den zweiten Code bestimmt werden können.
  • Bei diversen Ausführungsformen kann der zweite Code ein t-Einheiten-(zum Beispiel t-Bit-)Fehlerkorrektur-BCH-Code oder ein Byte-Fehlerkorrekturcode, ein Low-Density-Parity-Code oder ein RAID-Code sein.
  • Bei diversen Ausführungsformen kann ein Verfahren zum Betreiben einer Speichervorrichtung einen ersten Betriebsmodus aufweisen, der auch normaler Betriebsmodus genannt wird. Der erste Betriebsmodus kann als ein Ersatz für eine SRAM-Vorrichtung betrachtet werden. In dem ersten Betriebsmodus können Dateneinheiten (zum Beispiel Datenbits) gemeinsam mit entsprechenden ersten Prüfeinheiten (zum Beispiel Prüfbits) gelesen werden, und eine Fehlerkorrektur kann an den Dateneinheiten und den Prüfeinheiten unter Verwenden des ersten Codes ausgeführt werden. Auf Dateneinheiten und entsprechende erste Prüfeinheiten kann durch eine einzige Adresse zugegriffen werden. Eine schnelle Fehlerkorrektur und Fehlererfassung können parallel umgesetzt werden. Der erste Code kann ein Hsiao-Code oder ein t-Einheiten(zum Beispiel ein t-Bit-)Fehlerkorrektur-BCH-Code sein, wobei t in etwa 2 oder 3 sein kann. Bei diversen Ausführungsformen können Prüfeinheiten (zum Beispiel Prüfbits) des zweiten Codes von Dateneinheiten einer Abfolge von Wörtern, auf die durch eine Abfolge von Adressen zugegriffen wird, bestimmt werden. Einheiten, zum Beispiel Bits, aller Datenwörter eines Speicherblocks, können Informationseinheiten, zum Beispiel Informationsbits eines Codeworts sein, für das zweite Prüfeinheiten, zum Beispiel zweite Prüfbits, für den zweiten Code bestimmt werden können. Der zweite Code kann als ein t-Einheiten-(zum Beispiel t-Bit)-Fehlerkorrektur-BCH-Code mit t etwa 20, oder ein Einheit-Fehler, zum Beispiel Byte-Fehler, Korrekturcode ausgewählt werden.
  • Bei diversen Ausführungsformen kann ein Verfahren zum Betreiben einer Speichervorrichtung einen zweiten Betriebsmodus aufweisen, der auch Speicherwiederherstellungsmodus genannt wird. Der zweite Betriebsmodus kann als Ersatz für eine Flash-Speichervorrichtung betrachtet werden. Eine Fehlerkorrektur von Dateneinheiten kann unter Verwenden eines zweiten Codes ausgeführt werden. Auf Einheiten, zum Beispiel Bits, eines Codeworts kann durch eine Abfolge von Adressen zugegriffen werden. Eine Fehlerkorrektur und eine Fehlererfassung können sequenziell (zum Beispiel unter Verwenden eines Berlekamp-Massety-Algorithmus für einen BCH-Code) oder parallel (zum Beispiel für einen Byte-Fehlerkorrekturcode) ausgeführt werden.
  • Bei diversen Ausführungsformen können Daten für mehrere Adressen eines Blocks gelesen, gemäß einem ersten Code korrigiert werden, und, falls ein Fehler korrigiert wird, können die (korrigierten) Daten zu dem Speicher zurückgeschrieben werden. In einem Fall, in dem ein nicht korrigierbarer Fehler in den Daten vorhanden ist, können die Daten nicht zurückgeschrieben werden. Daten, die durch den ersten Code korrigiert wurden, können für die Adressen eines Blocks gelesen und gemäß dem zweiten Code korrigiert werden. Die korrigierten Daten können in den Speicher zurückgeschrieben werden.
  • Bei diversen Ausführungsformen kann ein zusätzlicher Code, zum Beispiel ein Block, der eine XOR-Summe von Einheiten, zum Beispiel Bits, von Datenblöcken speichert, bereitgestellt werden. In diesem Fall kann ein Verfahren zum Betreiben einer Speichervorrichtung gemäß diversen Ausführungsformen das Korrigieren von Daten durch Anwenden eines ersten Codes, Korrigieren von Daten durch Anwenden eines zweiten Codes und Korrigieren von Daten durch Anwenden des zusätzlichen Codes, zum Beispiel als ein Löschen, aufweisen.
  • Bei diversen Ausführungsformen des Betriebs einer Speichervorrichtung können Adressen in einem Codier- und einem Decodiervorgang enthalten sein.
  • In diesem Fall können Datenbits und Adressbits und die entsprechenden Prüfbits zum Beispiel aus einem Codewort des ersten Codes, oder Datenbits, Bits, die aus Adressbits abgeleitet werden und entsprechende Prüfbits ein Codewort bilden.
  • Bei diversen Ausführungsformen können Adressbits oder Bits, die aus Adressbits abgeleitet werden, auch in Speicherzellen gespeichert werden.
  • Bei diversen Ausführungsformen können korrigierte Daten zu einer zweiten Speichervorrichtung geschrieben werden, wobei die zweite Speichervorrichtung von einer ersten Speichervorrichtung, aus der die Daten gelesen werden, unterschiedlich sein kann.
  • Bei diversen Ausführungsformen können korrigierte Daten in die Speichervorrichtung nur während des ersten Betriebsmodus zurückgeschrieben werden, falls eine Anzahl korrigierter Einheiten, zum Beispiel Bits, größer ist als ein gegebener Schwellenwert. Für einen 3-Bit-Fehlerkorrekturcode können die Daten zum Beispiel zurückgeschrieben werden, falls ein 2-Bit-Fehler oder ein 3-Bit-Fehler korrigiert wurde. Falls ein 1-Bit-Fehler korrigiert wurde, kann der 1-Bit-Fehler in der Speichervorrichtung bleiben. Zwei zusätzliche Fehler können noch von dem 3-Bit-Fehlerkorrekturcode korrigiert werden.
  • Bei diversen Ausführungsformen können die zweiten Prüfeinheiten, zum Beispiel Prüfbits, die oben beschrieben sind, als unterschiedliche Typen von Aktualisierungen ausgebildet werden, zum Beispiel während oder nach dem ersten Betriebsmodus. Die zweiten Prüfeinheiten können zum Beispiel vor einem Abschalten der Speichervorrichtung gebildet, zum Beispiel aktualisiert werden. Die zweiten Prüfeinheiten können daher nach dem ersten Betriebsmodus gebildet werden. Bei einem anderen Beispiel können die zweiten Prüfeinheiten während des ersten Betriebsmodus gebildet, zum Beispiel aktualisiert werden, zum Beispiel falls ein Schreibvorgang auftritt.
  • Bei diversen Ausführungsformen kann der zweite Betriebsmodus zu Beginn eines Startens (der Speichervorrichtung) verwendet werden.
  • Bei diversen Ausführungsformen können die Daten in die Speichervorrichtung nur zurückgeschrieben werden, falls eine Korrektur ausgeführt wurde (da die Speichervorrichtung, zum Beispiel eine MRAM-Speichervorrichtung, diskrete Werte in den Speicherzellen gespeichert haben kann).
  • Bei diversen Ausführungsformen kann ein Verfahren zum Korrigieren von Dateneinheiten, die aus Speicherzellen einer adressierbaren Speichervorrichtung gelesen werden, zum Beispiel aus einer MRAM-Vorrichtung, und zum Wiederherstellen von Dateneinheiten, die in den Speicherzellen der adressierbaren Speichervorrichtung gespeichert sind, bereitgestellt werden, wobei Dateneinheiten, zum Beispiel Datenbits, erste Prüfeinheiten, zum Beispiel erste Prüfbits, und zweite Prüfeinheiten, zum Beispiel zweite Prüfbits, in Speicherzellen einer adressierbaren Speichervorrichtung gespeichert werden können. Bei einem Fall ohne Fehler können die Dateneinheiten und die ersten Prüfeinheiten die Codewörter eines ersten Fehlererfassungs-/Fehlerkorrekturcodes sein, und die Dateneinheiten und entsprechenden zweiten Prüfeinheiten, zum Beispiel Prüfbits, können Einheiten, zum Beispiel Bits, eines Codeworts eines zweiten Fehlererfassungs-/Fehlerkorrekturcodes sein.
  • Bei einem ersten Betriebsmodus können die Dateneinheiten, zum Beispiel die Datenbits, die für eine gegebene Aufgabe erforderlich sein können, und die entsprechenden ersten Prüfeinheiten, zum Beispiel die ersten Prüfbits, aus Adressen der Speichervorrichtung gelesen werden, wobei die Adressen gemäß einer Aufgabe, die zu erfüllen ist, bestimmt werden können. Falls ein Fehler, der durch Anwenden des ersten Codes korrigierbar ist, in den gelesenen Dateneinheiten vorhanden ist, kann der Fehler unter Verwenden des ersten Codes korrigiert werden, und die Dateneinheiten können zur weiteren Verwendung bereitgestellt werden.
  • Bei einem zweiten Betriebsmodus können die Dateneinheiten, zum Beispiel die Datenbits, und die entsprechenden zweiten Prüfeinheiten, zum Beispiel die zweiten Prüfbits, aus einem vordefinierten Subsatz aus τ Adressen der Speichervorrichtung gelesen werden (für τ ≥ 1). Falls ein Fehler, der durch Anwenden des zweiten Codes korrigierbar ist, in den gelesenen Dateneinheiten vorhanden ist, können die Dateneinheiten korrigiert und können zu den entsprechenden Speicherzellen zurückgeschrieben werden, wobei der erste Code von dem zweiten Code unterschiedliche Codewörter aufweisen kann. Dadurch können Werte, die in den Speicherzellen vor dem Lesevorgang fehlerhaft waren, nach der Korrektur korrekt zu den Speicherzellen geschrieben werden.
  • Bei diversen Ausführungsformen kann eine Speichervorrichtung in zwei unterschiedlichen Betriebsmodi betrieben werden, wobei die Speichervorrichtung in einem der zwei unterschiedlichen Betriebsmodi mit einem von zwei unterschiedlichen Codes betrieben werden kann, und in dem anderen Betriebsmodus mit dem anderen Code betrieben werden kann. Die Betriebsmodi können einen ersten Betriebsmodus des Schreibens, Speicherns und Lesens aufweisen, der normale Verwendung genannt werden kann, und ein zweiter Betriebsmodus kann zum Wiederherstellen fehlerhafter Einheiten in Speicherzellen, die einem adressierten Bereich entsprechen, verwendet werden. Die Speichervorrichtung kann eine MRAM-Vorrichtung sein.
  • Bei diversen Ausführungsformen können die korrigierten Dateneinheiten, zum Beispiel Datenbits, zu derselben Adresse der Speicherzellen in der Speichervorrichtung, aus welchen die Dateneinheiten, die zu korrigieren waren, gelesen wurden, geschrieben werden.
  • Bei diversen Ausführungsformen können bei dem ersten Betriebsmodus, wenn die Dateneinheiten zur weiteren Verwendung bereitgestellt werden können, wenn mindestens ein Fehler der unter Verwenden des ersten Codes korrigiert werden kann, in den Dateneinheiten vorhanden ist, die korrigierten Dateneinheiten zu den Speicherzellen zurückgeschrieben werden. Bei diversen Ausführungsformen können durch Anwenden des ersten Codes fehlerhafte Dateneinheiten und fehlerhafte Prüfeinheiten korrigiert werden.
  • Bei diversen Ausführungsformen können in dem zweiten Betriebsmodus zusätzlich zu den Dateneinheiten und den zweiten Prüfeinheiten, die den Dateneinheiten entsprechen, die ersten Prüfeinheiten für die Fehlerkorrektur verwendet werden.
  • Bei diversen Ausführungsformen kann durch Anwenden des ersten Codes eine Fehlerposition (ein sogenanntes Löschen) bestimmt werden, und durch Anwenden des zweiten Codes kann ein Korrekturwert unter Verwenden der Fehlerposition bestimmt werden.
  • Bei diversen Ausführungsformen kann ein weiterer Betriebsmodus zum Wiederherstellen korrekten Inhalts der Speicherzellen bereitgestellt werden, wobei die Dateneinheiten und weiteren Prüfeinheiten eines weiteren Fehlerkorrekturcodes in Speicherzellen der Speichervorrichtung gespeichert werden können, und wenn die Dateneinheiten und die weiteren Prüfeinheiten aus den Speicherzellen gelesen werden, und ein Fehler, der unter Verwenden des zusätzlichen Codes korrigierbar ist, in den gelesenen Dateneinheiten vorhanden ist, können die Dateneinheiten unter Verwenden des zusätzlichen Codes korrigiert und zu entsprechenden Speicherzellen geschrieben werden.
  • Bei diversen Ausführungsformen kann der vordefinierte Subsatz von Adressen aus Adressen eines Adressbereichs (zum Beispiel eines angrenzenden Adressbereichs) bestehen, oder aus einem Subsatz, der alle Adressen der adressierbaren Speichervorrichtung aufweist.
  • Diversen Ausführungsformen kann die Speichervorrichtung ein MRAM, eine Flash-Speichervorrichtung oder irgendeine andere geeignete nicht flüchtige Speichervorrichtung (NVRAM) sein. Bei diversen Ausführungsformen können nach dem Lesen von Dateneinheiten, die T1 Adressen von der Speichervorrichtung entsprechen, oder nach dem Schreiben von Dateneinheiten und entsprechenden ersten Prüfeinheiten zu T2 Adressen der Speichervorrichtung die zweiten Prüfbits gebildet und zu den Speicherzellen der Speichervorrichtung geschrieben werden, wobei T1 + T2 > 1.
  • Bei diversen Ausführungsformen kann zusätzlich zu dem ersten Betriebsmodus und dem zweiten Betriebsmodus ein inaktiver Zustand vorhanden sein, in dem keine Einheiten, zum Beispiel Bits, aus der Speichervorrichtung gelesen werden, und keine Einheiten, zum Beispiel Bits, in die Speichervorrichtung geschrieben werden können. Bei diversen Ausführungsformen können Dateneinheiten, die Adressen eines Adressbereichs oder einem Subsatz von Adressen entsprechen, gelesen werden, nachdem der inaktive Zustand endet, wobei, falls ein Fehler, der durch Anwenden des ersten Codes korrigierbar ist, in den gelesenen Dateneinheiten vorhanden ist, der Fehler unter Verwenden des ersten Codes korrigiert werden kann, und die korrigierten Daten zu entsprechenden Speicherzellen der Speichervorrichtung geschrieben werden können, und, falls ein Fehler, der nicht durch Anwenden des ersten Codes korrigierbar ist, und der durch Anwenden des zweiten Codes korrigierbar ist, in den gelesenen Dateneinheiten vorhanden ist, der Fehler unter Verwenden des zweiten Codes korrigiert werden kann, und die korrigierten Dateneinheiten zu entsprechenden Speicherzellen der Speichervorrichtung geschrieben werden können.
  • Bei diversen Ausführungsformen können dritte Prüfeinheiten, zum Beispiel dritte Prüfbits, unter Verwenden der ersten Prüfeinheiten und/oder der zweiten Prüfeinheiten derart gebildet werden, dass die ersten Prüfeinheiten und/oder die zweiten Prüfeinheiten und die entsprechenden dritten Prüfeinheiten Codewörter eines Fehlererfassungs- und/oder Fehlerkorrekturprüfcodes sein können.
  • Bei diversen Ausführungsformen können die Dateneinheiten, die Adresseinheiten und/oder Einheiten, zum Beispiel Bits, die aus Adresseinheiten abgeleitet werden, Einheiten, zum Beispiel Bits, eines Codeworts des ersten Codes oder eines Codeworts des zweiten Codes sein.
  • Bei diversen Ausführungsformen können fehlerhafte Dateneinheiten, die aus einer Adresse a der adressierbaren Speichervorrichtung gelesen werden und die durch Anwenden des ersten Codes und/oder durch Anwenden des zweiten Codes korrigiert werden können, zu einer Adresse der Speichervorrichtung, die von a unterschiedlich sein kann, geschrieben werden.
  • Bei diversen Ausführungsformen kann der erste Code ein Hamming-Code, ein gekürzter Hamming-Code, ein Hsiao-Code, ein gekürzter Hsiao-Code, ein t-Bit-Fehlerkorrektur-BCH-Code, ein gekürzter t-Bit-Fehlerkorrektur-BCH-Code, zum Beispiel mit t ≥ 2, ein Reed-Muller-Code, ein gekürzter Reed-Muller-Code, ein zyklischer Code, ein gekürzter zyklischer Code, ein Byte-Korrekturcode oder ein Low Density-Parity-Code sein.
  • Bei diversen Ausführungsformen kann der zweite Code ein Paritätscode, ein Hamming-Code, ein gekürzter Hamming-Code, ein Hsiao-Code, ein gekürzter Hsiao-Code, ein t-Bit-Fehlerkorrektur-BCH-Code, ein gekürzter t-Bit-Fehlerkorrektur-BCH-Code, zum Beispiel mit 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, und ein Byte-Korrekturcode oder ein Low Density Parity Code oder ein RAID-Code sein.
  • Bei diversen Ausführungsformen können auch andere geeignete Codes als der erste Code und/oder der zweite Code verwendet werden, zum Beispiel ein nicht linearer Code oder ein Faltungscode.
  • Bei diversen Ausführungsformen können die fehlerhaften Dateneinheiten, die aus der adressierbaren Speichervorrichtung gelesen werden können, und die unter Verwenden des ersten Codes und/oder des zweiten Codes korrigiert werden können, zu Speicherzellen einer weiteren Speichervorrichtung geschrieben werden, wobei die weitere Speichervorrichtung von der adressierbaren Speicherrichtung, von der die fehlerhaften Dateneinheiten gelesen wurden, unterschiedlich sein kann.
  • Bei diversen Ausführungsformen kann eine weitere Speichervorrichtung eine MRAM-, eine SRAM- oder eine Flash-Speichervorrichtung sein.
  • Bei diversen Ausführungsformen kann eine Aktualisierung der zweiten Prüfeinheiten ausgeführt werden, mit anderen Worten können die zweiten Prüfeinheiten wieder gebildet und wieder zu den Speicherzellen der Speichervorrichtung geschrieben werden, falls während des ersten Betriebsmodus Dateneinheiten Da zu Speicherzellen der adressierbaren Speichervorrichtung unter einer Adresse a geschrieben werden können, und, falls sich die Dateneinheiten Da von fehlerfreien Dateneinheiten, zum Beispiel Datenbits, da unterscheiden, die eventuell vorhanden waren, zum Beispiel in den entsprechenden Speicherzellen vor dem Schreiben der Dateneinheiten Da gespeichert waren.
  • Bei diversen Ausführungsformen kann eine Aktualisierung der zweiten Prüfeinheiten und/oder zusätzlicher Prüfeinheiten ausgeführt werden, bevor die Speichervorrichtung in dem zweiten Betriebsmodus verwendet wird.
  • Bei diversen Ausführungsformen kann eine Aktualisierung der zweiten Prüfeinheiten und/oder zusätzlicher Prüfeinheiten ausgeführt werden, bevor die Speichervorrichtung in den inaktiven Zustand übergeführt wird.
  • Bei diversen Ausführungsformen kann der inaktive Zustand beendet werden, Dateneinheiten können aus der Speichervorrichtung gelesen werden, die Dateneinheiten können unter Verwenden des ersten Codes, des zweiten Codes und möglicherweise eines weiteren Codes korrigiert werden, die korrigierten Einheiten können geschrieben werden, zum Beispiel zurück zu den Speicherzellen der Speichervorrichtung geschrieben werden, und die Speichervorrichtung kann auf den inaktiven Zustand, nach dem Schreiben der korrigierten Dateneinheiten zu den Speicherzellen, zurückgestellt werden, wodurch korrekte Werte der Speicherzellen wiederhergestellt werden.
  • Bei diversen Ausführungsformen kann der erste Code ein t-Bit-Fehlerkorrekturcode sein. In einem Fall, in dem ein μ-Bit-Fehler auftritt, können korrigierte Datenbits geschrieben werden, zum Beispiel in die Speichervorrichtung zurückgeschrieben werden, falls σ ≤ μ ≤ t, und die korrigierten Datenbits können nicht in die Speichervorrichtung geschrieben werden, falls μ < σ, wobei σ eine Konstante mit 0 < σ ≤ t und t ≥ 2. Bei diversen Ausführungsformen kann die Konstante zum Beispiel durch einen Benutzer der Speichervorrichtung spezifiziert werden.
  • Bei diversen Ausführungsformen kann die Speichervorrichtung nach einem Starten in dem zweiten Betriebsmodus betrieben werden, bevor die Speichervorrichtung in dem ersten Betriebsmodus betrieben werden kann.
  • Zur Fehlererfassung und Fehlerkorrektur können Fehlersyndrome oder ein Syndrom bestimmt werden.
  • Falls kein Fehler aufgetreten ist, ist das entsprechende Fehlersyndrom gleich 0. Falls das Fehlersyndrom nicht gleich 0 ist, ist ein Fehler aufgetreten.
  • Der erste Code Cod1 kann bei diversen Ausführungsformen für eine Fehlerkorrektur, für eine Fehlerfassung und gleichzeitig zur Fehlerkorrektur und zur Fehlererfassung wie unten beschrieben verwendet werden.
  • Bei einem ersten Betriebsmodus kann der erste Code Cod1 vorherrschend für eine Fehlerkorrektur verwendet werden. Es kann vorkommen, dass ein nicht korrigierbarer Fehler erfasst wird, zum Beispiel in einem Fall, bei dem ein Fehler zu einem Fehlersyndrom mappiert wird, das nicht einem korrigierbaren Fehler entspricht. Das kann zum Beispiel der Fall sein, falls der Code ein gekürzter Code ist, oder falls ein zusätzliches Paritätsbit ein Prüfbit des Codes ist.
  • Eine Anwendung eines zweiten Codes Cod2 in einem zweiten Betriebsmodus und Anwenden des ersten Codes Cod1 wird unten beschrieben.
  • Bei diversen Ausführungsformen kann während eines Lesens eines potenziell fehlerhaften Worts υ', das an eine Adresse a gespeichert ist, das Fehlersyndrom s(υ') des ersten Codes Cod1 verwendet werden, falls eine Korrektur unter Verwenden des Fehlersyndroms angewandt wird.
  • Bei diversen Ausführungsformen können andere Korrekturverfahren, zum Beispiel eine Stimmenmehrheits-Fehlerkorrektur verwendet werden.
  • Bei diversen Ausführungsformen, falls s(υ') = 0, ist υ' ein Codewort für den ersten Code Cod1, und es kann davon ausgegangen werden, dass υ' fehlerfrei ist und es obsolet sein kann, es unter Verwenden des zweiten Codes Cod2 zu korrigieren.
  • Falls s(υ') ≠ 0, kann υ' als ein Löschen für eine Fehlerkorrektur durch Anwenden des zweiten Codes Cod2 markiert werden. Für die Korrektur, die den zweiten Code Cod2 verwendet, können Positionen für eine Fehlerkorrektur daher bereits bekannt sein, so dass eine Lösch-Korrektur angewandt werden kann, was im Vergleich zu einer Korrektur, bei der eine Fehlerposition unbekannt ist, ein Vorteil sein kann.
  • Bei diversen Ausführungsformen, falls die Korrektur das Fehlersyndrom verwendet, kann ein erster Subsatz von Komponenten des Fehlersyndroms des ersten Codes Cod1 für die Fehlerkorrektur verwendet werden, und ein zweiter Subsatz von Komponenten des Fehlersyndroms des ersten Codes Cod1 kann zur Fehlerdetektion, wie unten beschrieben, verwendet werden. Der Subsatz von Komponenten des Fehlersyndroms des ersten Codes Cod1, der zur Fehlerdetektion verwendet wird, kann mindestens zwei Komponenten aufweisen.
  • Beim Lesen des Worts υ' kann das Fehlersyndrom s(υ') gebildet werden, wobei s(υ') = s1(υ'), s2(υ') ..., sM(υ'), sM+1(υ'), ..., SL(υ'), wobei angenommen werden kann, dass das Fehlersyndrom ein L-Komponentenvektor ist, der M erste Komponenten s1(υ'), s2(υ'), ..., sM(υ') und (L – M) zweite Komponenten sM+1(υ'), sM+2(υ'), ..., sL(υ') zweite Komponenten aufweist, wobei M < L und L – M ≥ 2.
  • Eine Fehlerkorrektur des Worts υ' kann unter Verwenden der ersten Komponenten s1(υ'), s2(υ'), ..., sM(υ') ausgeführt werden.
  • Falls s1(υ'), s2(υ'), ..., sM(υ') ≠ 0, kann υ' korrigiert werden auf
    Figure DE102016101543A1_0002
    wobei ein Korrekturvektor
    Figure DE102016101543A1_0003
    durch die erste Komponente s1(υ'), s2(υ'), ..., sM(υ') des Fehlersyndroms s(υ') bestimmt werden kann.
  • Für das korrigierte Wort
    Figure DE102016101543A1_0004
    das unter Verwenden der ersten Komponenten des Fehlersyndroms korrigiert wurde, können für den ersten Code Cod1 die zweiten Komponenten des Fehlersyndroms
    Figure DE102016101543A1_0005
    gebildet werden.
  • Falls
    Figure DE102016101543A1_0006
    kann die Korrektur von υ' auf
    Figure DE102016101543A1_0007
    als erfolgreich betrachtet werden.
  • Eine weitere Korrektur durch den zweiten Code Cod2 kann wegfallen.
  • Falls
    Figure DE102016101543A1_0008
    kann sogar nach der Korrektur von υ' auf
    Figure DE102016101543A1_0009
    ein Fehler in
    Figure DE102016101543A1_0010
    vorhanden sein, und
    Figure DE102016101543A1_0011
    kann als ein Löschen markiert werden.
  • In diesem Fall kann der nicht korrigierte Originalwert υ' bei diversen Ausführungsformen wiederhergestellt und als ein Löschen markiert werden.
  • Zum besseren Verstehen wird unten ein Beispiel für das beschriebene Verfahren eines t-Bit-Fehlerkorrektur-BCH-Codes über ein Galois-Feld GF(2m) gegeben. In dem Beispiel ist t = 4.
  • Eine H-Matrix eines 4-Bit-Fehlerkorrektur-BCH-Codes kann dargestellt werden als
    Figure DE102016101543A1_0012
    wie zum Beispiel in Lin. S. und Costello, D., „Error Control Coding", Prentice Hall, 1983, Seite 148, gezeigt.
  • Hier kann der Einfachheit halber α als ein primitives Element eines Galois-Felds GF(2m) ausgewählt werden. Ein jeweiliger Exponent j von αj muss als Modulo 2m – 1 verstanden werden.
  • Falls αj in seiner Vektordarstellung als ein m-Komponenten-Binär-Spaltenvektor ausgewählt wird, können H1, H3, H5 und H7 jeweils die Binär-(m, n)-Matrizen sein, und H kann eine (4·m, n)-Matrix sein.
  • Das Fehlersyndrom s(υ') eines potenziell fehlerhaften Vektors υ' = υ ' / 1, ..., υ ' / n kann bestimmt werden, um ein 4·m-Komponenten-Binärvektor zu sein s(υ') = H·υ'T = s1(υ'), ..., sM(υ'), sM+1(υ'), ..., s4·m(υ'), wobei υ'T der transponierte Säulenvektor des Zeilenvektors υ' sein kann.
  • Die jeweiligen m-Komponenten-Teilsyndrome s1(υ'), s3(υ'), s5(υ'), s7(υ') s1(υ') = H1·υ'T s3(υ') = H3·υ'T s5(υ') = H5·υ'T s7(υ') = H7·υ'T können den Submatrizen H1, H3, H5 und H7 zugewiesen werden.
  • Eine Beziehung zwischen den Teilsyndromen s1(υ'), s3(υ'), s5(υ'), s7(υ') und dem Fehlersyndrom s(υ') kann s(υ') = s1(υ'), s3(υ'), s5(υ'), s7(υ') = s1(υ'), ..., s4·m(υ') sein,
    so dass die ersten m Komponenten von s(υ') das Teilsyndromen s1(υ') bilden können. Die jeweiligen darauffolgenden m Komponenten können die Teilsyndrome s3(υ'), s5(υ'), s7(υ') bilden.
  • Nach dem Lesen von υ' von der Speichervorrichtung, kann das erste Teilsyndrom s1(υ') = H1·υ'T gebildet und zum Korrigieren von υ' verwendet werden, während die Teilsyndrome s3(υ'), s5(υ'), s7(υ') eventuell nicht für die Fehlerkorrektur von υ' verwendet werden.
  • Von dem Teilsyndromen s1(υ') kann ein n-Komponenten-Korrekturvektor e(s1, C1) bestimmt werden, und der gelesene Vektor υ' kann korrigiert werden auf
    Figure DE102016101543A1_0013
    wobei + auf eine komponentenweise Hinzufügung Modulo 2 oder den logischen XOR-Vorgang verweist. Die Fehlerkorrektur kann unter Verwenden der Submatrix H1 des BCH-Codes ausgeführt werden, dessen m-dimensionale Säulenvektoren α0, α1, ..., αn-1 alle paarweise unterschiedlich sein können. Jeder 1-Bit-Fehler kann daher einem unterschiedlichen Teilsyndrom s1(υ') zugewiesen werden, wobei ein 1-Bit-Fehler an der Position i dem Teilsyndrom s1 = αi mit dem Korrekturvektor
    Figure DE102016101543A1_0014
    entspricht.
  • In einem Fall, in dem ein 1-Bit-Fehler in dem gelesenen Wort υ' vorhanden ist, kann das gelesene Wort auf ein fehlerfreies Wort
    Figure DE102016101543A1_0015
    korrigiert werden, und
  • Figure DE102016101543A1_0016
  • In einem Fall eines τ-Bit-Fehlers, der in υ' vorhanden ist, wobei 1 < τ ≤ 4, kann durch Verwenden von s1(υ') ein einzelnes Bit korrigiert werden, und die Korrektur kann fehlerhaft sein.
  • In diesem Fall
    Figure DE102016101543A1_0017
    und mindestens eines der Teilsyndrome
    Figure DE102016101543A1_0018
    Figure DE102016101543A1_0019
    kann anders sein als 0. Falls mindestens eines dieser Teilsyndrome anders ist als 0, war die Korrektur eines einzelnen Bits, die basierend auf s1(υ') ausgeführt wurde, fehlerhaft, und der resultierende Wert
    Figure DE102016101543A1_0020
    kann als ein Löschen für eine Korrektur, die den zweiten Code C2 anwendet, markiert werden.
  • Bei diversen Ausführungsformen kann der Wert υ' wiederhergestellt werden und υ' kann als ein Löschen für eine Korrektur markiert werden, die den zweiten Code C2 anwendet. Falls alle Teilsyndrome
    Figure DE102016101543A1_0021
    Figure DE102016101543A1_0022
    sind, kann eine Korrektur von
    Figure DE102016101543A1_0023
    durch Anwenden des zweiten Codes C2 wegfallen.
  • Wenn davon ausgegangen werden kann, dass 1-Bit-Fehler häufiger auftreten als Mehrfach-Bit-Fehler, können die meisten der Fehler während des Lesens durch Verwenden von s1 des Fehlersyndroms des ersten Codes C1 korrigiert werden, und nur relativ wenige Fehler, die als Löschen markiert sind, brauchen durch Anwenden des zweiten Codes C2 korrigiert zu werden.
  • Bei diversen Ausführungsformen kann der erste Code C1 in den ersten Betriebsmodus als ein t-Bit-Fehlerkorrekturcode mit t = 4 sein.
  • Bei diversen Ausführungsformen können 2 Teilsyndrome, zum Beispiel s1(υ') und s3(υ') für eine Fehlerkorrektur von bis zu 2-Bit-Fehlern und zum Bestimmen eines entsprechenden Korrekturvektors e(s1, s3, C1) und zum Bilden eines Korrekturvektors
    Figure DE102016101543A1_0024
    verwendet werden.
  • Falls
    Figure DE102016101543A1_0025
    kann die Korrektur als erfolgreich betrachtet werden.
  • Falls
    Figure DE102016101543A1_0026
    anders ist als 0, können
    Figure DE102016101543A1_0027
    oder υ' als ein Löschen für eine Korrektur mit dem zweiten Code C2 markiert werden.
  • In seltenen Fällen, in welchen ein Mehrfach-Bit-Fehler vorhanden ist, kann es passieren, dass nach einer Korrektur eines einzelnen Bits unter Verwenden nur des teilweisen Syndroms s1(υ') das Fehlersyndrom des Korrekturvektors
    Figure DE102016101543A1_0028
    für alle Teilsyndrome 0 sein kann, obwohl die Korrektur erfolglos war.
  • Falls zum Beispiel die Codedistanz des ersten Codes C1 9 ist, wie das der Fall für einen 4-Bit-Fehlerkorrektur-BCH-Code sein kann, und ein 8-Bit-Fehler in den Daten vorhanden ist, kann eine fehlerhafte Korrektur eines 1-Bit-Fehlers in einem 9-Bit-Fehler resultieren, was zu einem fehlerhaften Codewort führen kann, das ein Fehlersyndrom von 0 haben kann, und das durch Anwenden des ersten Codes C1 nicht als fehlerhaft erkannt werden kann.
  • Falls bei diversen Ausführungsformen eine Wahrscheinlichkeit des Auftretens eines 8-Bit-Fehlers in υ' unerheblich klein ist, kann diese Möglichkeit ignoriert werden. Falls diese Wahrscheinlichkeit jedoch nicht toleriert werden kann, können bei diversen Ausführungsformen für den ersten Code C1 zusätzliche Syndromkomponenten bereitgestellt werden. Bei diversen Ausführungsformen kann zu der Original-H-Matrix des 4-Bit-Fehlerkorrektur-BCH-Codes eine Submatrix H9 hinzugefügt werden, wie zum Beispiel eine H-Matrix
    Figure DE102016101543A1_0029
    resultieren kann. Die Submatrix H9 kann eine (m, n)-Matrix mit 9 Zeilen sein. Bei diversen Ausführungsformen können die m Syndromkomponenten s9(υ') = H9·υ'T nur zur Fehlererfassung verwendet werden, auch in dem ersten Betriebsmodus.
  • Bei diversen Ausführungsformen kann eine (m1, n)-Submatrix H * / 9, die aus einem Subsatz von Zeilen der Submatrix H9 besteht, hinzugefügt werden. Um die Codedistanz oder die Distanz eines Codes um eins zu vergrößern, ist es möglich, ein Paritätsbit durch Hinzufügen einer zusätzlichen Zeile von n Einsen zu der H-Matrix H hinzuzufügen.
  • 1A zeigt in Übereinstimmung mit diversen Ausführungsformen eine schematische Darstellung 100 von Datenbits und erster und zweiter Prüfbits jeweils eines ersten Codes und eines zweiten Codes, die Speicherzellen einer Speichervorrichtung zugewiesen sind.
  • 1A zeigt eine adressierbare Speichervorrichtung, in der an einer Adresse a1 = a 1 / 1, ..., a 1 / l Datenbits d1 = d 1 / 1, ..., d 1 / k in Speicherzellen 11 gespeichert sind, und erste Prüfbits c1(d1) = c 2 / 1, ..., c 2 / m bestimmt aus den Datenbits d1 in den Speicherzellen 11', an einer Adresse a2 = a 2 / 1, ..., a 2 / l Datenbits d2 = d 2 / 1, ..., d 2 / k in Speicherzellen 12 und erste Prüfbits c2(d2) = c 1 / 1, ..., c 1 / m, bestimmt aus Datenbits d2 in Speicherzellen 12', ..., an einer Adresse aN = a N / 1, ..., a N / l Datenbits dN = d N / 1, ..., d N / k in Speicherzellen 1N und erste Prüfbits cN(dN) = c N / 1, ..., c N / m, bestimmt aus Datenbits dN in Speicherzellen 1N'.
  • Die Adressen a1, a2, ..., aN sind in 1A nicht gezeigt.
  • Für i = 1, ..., N können bei dieser Ausführungsform in einem fehlerfreien Fall die Bits ci, di = c i / 1, ..., c i / m, d i / 1, ..., d i / k Bits eines Fehlererfassungs-/Fehlerkorrekturcodes Cod1 sein. Ferner sind bei dieser Ausführungsform Prüfbits γ(d1, d2, ..., dN) in den Speicherzellen 13 gespeichert. Die Prüfbits γ(d1, d2, ..., dN) können aus den Datenbits d1, d2, ..., dN bestimmt werden. Bei diversen Ausführungsformen können diese Prüfbits an einer oder mehreren Adressen in jeweiligen weiteren Speicherzellen der Speichervorrichtung gespeichert sein.
  • In einem fehlerfreien Fall können bei dieser Ausführungsform die Bits d1, d2, ..., dN, γ(d1, d2, ..., dN) Bits eines Fehlererfassungs-/Fehlerkorrekturcodes Cod2 sein.
  • In einem ersten Betriebsmodus können die Adressen
    Figure DE102016101543A1_0030
    Figure DE102016101543A1_0031
    der Speichervorrichtung zugewiesen sein und die jeweiligen potenziell fehlerhaften Datenbits (die auch defekt oder korrupt genannt werden können) und ersten Prüfbits
    Figure DE102016101543A1_0032
    können aus diesen Adressen gelesen werden. In einem Fall eines Fehlers, der für ij, j = 1, ..., L in den Datenbits
    Figure DE102016101543A1_0033
    die unter Verwenden der Prüfbits
    Figure DE102016101543A1_0034
    und durch Anwenden des Codes Cod1 korrigiert werden können, auftritt, können die fehlerhaften Datenbits
    Figure DE102016101543A1_0035
    durch die korrekten Datenbits
    Figure DE102016101543A1_0036
    korrigiert werden und können als ein Ausgang der adressierbaren Speichervorrichtung bereitgestellt werden.
  • Bei einem zweiten Betriebsmodus können bei dieser Ausführungsform Adressen a1, ..., aN der adressierbaren Speichervorrichtung zugewiesen werden, an welchen die Datenbits d1, ..., dN und die entsprechenden ersten Prüfbits c1, ..., cN gespeichert werden können. Die Adressen a1, ..., aN können einen Adressbereich bilden.
  • Für i = 1, ..., N können an der Adresse ai die potenziell fehlerhaften Datenbits di' und die potenziell fehlerhaften jeweiligen ersten Prüfbits ci' aus der Speichervorrichtung gelesen werden. In einem Fall, in dem die gelesenen Bits di', ci' ein Codewort des Codes Cod1 bilden, kann angenommen werden, dass kein Fehler vorhanden ist. Es wird keine Korrektur ausgeführt und die gelesenen Bits di', ci' werden nicht zu den Speicherzellen zurückgeschrieben.
  • In einem Fall, in dem die gelesenen Bits di', ci' fehlerhaft sind, und falls der Fehler unter Verwenden des ersten Codes Cod1 korrigiert werden kann, können die Datenbits di' auf korrigierte Datenbits d i / cor korrigiert werden, indem der erste Code Cod1 angewandt wird, und die korrigierten Datenbits d i / cor in die Speichervorrichtung an der Adresse ai derart geschrieben werden, dass die fehlerhaften Datenbits di' durch die korrigierten Datenbits d i / cor überschrieben, das heißt ersetzt werden können.
  • In einem Fall, in dem die gelesenen Bits di', ci' fehlerhaft sind, und falls der Fehler nicht unter Verwenden des ersten Codes Cod1 korrigiert werden kann, können die Adressen a1, ..., aN der adressierbaren Speichervorrichtung zugewiesen werden, und die Datenbits d1', ..., dN' und die entsprechenden ersten Prüfbits c1', ..., cN' können gelesen werden.
  • Für i = 1, ..., N, können die Datenbits di', die fehlerhaft sind, und die durch Anwenden des ersten Codes Cod1 korrigierbar sind, durch Anwenden des ersten Codes Cod1 korrigiert werden, um die korrigierten Datenbits d i / cor zu bilden. Die korrigierten Datenbits d i / cor können in die Speichervorrichtung an der Adresse ai derart geschrieben werden, dass die korrigierbaren fehlerhaften Datenbits di' durch die korrigierten Datenbits d i / cor überschrieben werden können.
  • In einem Fall, in dem der Fehler in den Datenbits d3' nicht durch den ersten Code Cod1 korrigiert werden kann, und der Datenbits d2', d9' und d12' durch den ersten Code Cod1 korrigierbar sind, während alle anderen Datenbits korrekt sein können, und falls N = 16, können in der Speichervorrichtung die Datenbits d1, d 2 / cor, d3', d4, ..., d8, d 9 / cor, d10, d11, d 12 / cor, d13, ..., d16 an den Adressen a1, ..., a16 gespeichert werden. Das fehlerhafte Wort d1, d2, d 3' / cor, d4, ..., d8, d 9 / cor, d10, d11, d 12 / cor, d13,..., d16, γ' kann nun durch Anwenden des zweiten Codes Cod2 an das Codewort d1, d 2 / cor, d 3' / cor, d4, ..., d8, d 9 / cor, d10, d11, d 12 / cor, d13, ..., d16; γ korrigiert werden, falls der Fehler, der in den Datenbits d3 in d3' durch Anwenden des zweiten Codes Cod2 korrigierbar ist.
  • Falls der Fehler korrigierbar ist, können die korrigierten Datenbits d 3 / cor, die durch Anwenden des zweiten Codes Cod2 gebildet worden, zu der Adresse a3 der Speichervorrichtung geschrieben werden. Zuerst können die Prüfbits c3 von den korrigierten Datenbits d 3 / cor gebildet werden, die ebenfalls an der Adresse a3 der adressierbaren Speichervorrichtung gespeichert, zum Beispiel geschrieben werden können.
  • Bei diversen Ausführungsformen können viele unterschiedliche Möglichkeiten für eine Anwendung unterschiedlicher Codes existieren.
  • Bei einer beispielhaften Ausführungsform kann es in dem zweiten Betriebsmodus möglich sein, den zweiten Code Cod2 zur Fehlerkorrektur anzuwenden.
  • Bei einer beispielhaften Ausführungsform kann es in dem zweiten Betriebsmodus möglich sein, zuerst den ersten Code Cod1 zur Fehlererfassung anzuwenden, das heißt zum Bestimmen von Fehlerpositionen oder Löschungen, und anschließend den zweiten Code Cod2, um Löschungen zu korrigieren.
  • Bei einer beispielhaften Ausführungsform kann es möglich sein, zuerst den zweiten Code Cod2 zur Fehlerkorrektur anzuwenden, und anschließend den Code Cod1 zur Fehlerkorrektur restlicher, nicht durch den Code Cod2 korrigierter Fehler anzuwenden.
  • Bei einer beispielhaften Ausführungsform kann es möglich sein, zuerst den Code Cod1 anzuwenden, anschließend den Code Cod2 anzuwenden, und wieder den Code Cod1 anzuwenden.
  • Bei einer beispielhaften Ausführungsform kann es möglich sein, zusätzlich einen dritten Code oder mehrere Codes in unterschiedlichen Kombinationen anzuwenden.
  • Bei einer beispielhaften Ausführungsform kann es in einem Betriebsmodus möglich sein, zuerst einen Code C teilweise zur Fehlerkorrektur und teilweise zur Fehlererfassung anzuwenden und anschließend einen anderen Code C' zur Fehlerkorrektur für die nicht durch den Code C korrigierten Fehler anzuwenden. Falls die Positionen der nicht durch den Code C korrigierten Fehler bestimmt werden, kann es möglich sein, die Positionen der erfassten und nicht korrigierten Fehler zu verwenden, um diese Fehler durch den Code C' als Löschungen zu korrigieren.
  • 1B zeigt in Übereinstimmung mit diversen Ausführungsformen eine schematische Darstellung 101 von Datenbits, erste und zweite Prüfbits jeweils eines ersten Codes und eines zweiten Codes, und zusätzliche Prüfbits, die Speicherzellen einer Speichervorrichtung zugewiesen sind, wobei die zusätzlichen Prüfbits ferner eine Integrität der zweiten Prüfbits sichern können.
  • 1B zeigt, dass die zweiten Prüfbits γ(d1, ..., dN) durch dritte Prüfbits c(γ) ergänzt werden können, so dass γ(d1, ..., dN), c(γ) ein Codewort eines dritten Fehlererfassungs-/Fehlerkorrekturcodes Ccheck bilden können. In 1B sind die dritten Prüfbits in Speicherzellen 14 an einer Adresse aN+2 gespeichert, während die zweiten Prüfbits γ(d1, ..., dN) in Speicherzellen 13 an einer Adresse aN+1 gespeichert sind. Falls die zweiten Prüfbits für eine Fehlerkorrektur von Datenbits verwendet werden, können die dritten Prüfbits zum Prüfen, ob die zweiten Prüfbits fehlerhaft sind, verwendet werden. Falls die zweiten Prüfbits fehlerhaft sind, und falls der Fehler in den zweiten Prüfbits durch Verwenden der dritten Prüfbits korrigiert werden kann, werden die zweiten Prüfbits durch Anwenden des dritten Codes Ccheck korrigiert. Danach können die korrigierten zweiten Prüfbits zum Korrigieren potenziell fehlerhafter Datenbits durch Anwenden des zweiten Codes Cod2 verwendet werden. Ausgenommen diese Ausnahme, unterscheidet sich 1B nicht von 1, so dass eine Wiederholung der Beschreibung wegfällt.
  • Bei diversen Ausführungsformen können die ersten Prüfbits Prüfbits eines Hsiao-Codes sein, die dem Fachmann bekannt sein können. Für i = 1, ..., N, können die Bits di, ci jeweils ein Codewort eines Hsiao-Codes bilden, das eine Korrektur eines 1-Bit-Fehlers und ein Erfassen eines 2-Bit-Fehlers erlauben kann.
  • Bei diversen Ausführungsformen können die zweiten Prüfbits Prüfbits eines t-Bit-Fehlerkorrektur-BCH-Codes sein. Zum Beispiel ist t = 3, t = 20 oder irgendein anderer geeigneter Wert.
  • Bei diversen Ausführungsformen können die ersten Prüfbits Prüfbits eines 2-Bit-Fehlerkorrektur- und 3-Bit-Fehlererfassungs-BCH-Codes sein. Für i = 1, ..., N, bildet jedes der Bits di, ci ein Codewort eines 2-Bit-Fehlerkorrektur-, 3-Bit-Fehlererfassungs-BCH-Codes.
  • Bei diversen Ausführungsformen können die zweiten Prüfbits Prüfbits eines 3-Bit-Fehlerkorrektur-BCH-Codes sein, der einem Fachmann bekannt sein kann.
  • In einem fehlerfreien Fall, kann jedes der Bits d1, d2, ..., dN, γ(d1, ..., dN) ein Codewort eines 3-Bit-Fehlerkorrektur-BCH-Codes bilden.
  • Bei diversen Ausführungsformen können die ersten Prüfbits c1, ..., cN zum Bilden der zweiten Prüfbits verwendet werden.
  • In einem fehlerfreien Fall, kann jedes der Bits d1, c1, d2, c2, ..., dN, cN, γ(d1, c1, ..., dN, cN) ein Codewort eines Codes sein, wobei ein 3-Bit-Fehlerkorrektur-BCH-Code als ein Beispiel verwendet wird.
  • Bei diversen Ausführungsformen können die Bits d1, d2, ..., dN, γ(d1, ..., dN) oder die Bits d1, c1, d2, c2, ..., dN, cN, γ(d1, c1, ..., dN, cN) Codewörter eines Byte korrigierenden zweiten Codes Cod2, zum Beispiel eines Reed-Solomon-Codes bilden, der einem Fachmann bekannt sein kann, wobei eine Länge eines Bytes gleich der Anzahl Datenbits di oder einer Anzahl einer Kombination von Datenbits und Prüfbits di, ci sein kann.
  • Bei diversen Ausführungsformen können mehrere Datenbits und mehrere Prüfbits kombiniert werden, um ein Byte zu bilden, zum Beispiel Bits der Datenbits d1, d2 oder Bits der Datenbits und Prüfbits d1, c1, d2, c2.
  • Bei diversen Ausführungsformen kann ein Abschnitt der Datenbits di ein Byte bilden. Falls zum Beispiel ein Datenwort 64 Bits aufweist, kann ein Byte zum Beispiel 8 Bits aufweisen, so dass ein Datenwort 8 Bytes aufweisen kann.
  • Bei diversen Ausführungsformen, zusätzlich zu den Datenbits, können Adressbits zum Bilden von Prüfbits verwendet werden. Die folgenden Fälle können als Beispiele dienen.
    • • In einem fehlerfreien Fall, für i = 1, ..., N können Bits di, a i / s, ci, wenn sie zu einer Adresse a i / s geschrieben werden, ein Codewort eines Fehler korrigierenden ersten Codes Cod1 bilden, und di, a i / l, ci, wenn sie von der Adresse a i / l gelesen werden, können ein Codewort des ersten Codes Cod1 bilden, wobei eine Schreibadresse a i / s von einem Adressengenerator während eines Schreibvorgangs zu einer Speichervorrichtung geliefert werden kann, und eine Leseadresse u a i / l kann ebenfalls von dem Adressengenerator während eines Lesevorgangs von der Speichervorrichtung geliefert werden. In dem fehlerfreien Fall ist a i / s = a i / l . Adressbits können auf unterschiedliche Arten in einem Bilden von Codewörtern enthalten sein, zum Beispiel von Codewörtern des zweiten Codes Cod2.
    • • Bei diversen Ausführungsformen können die Bits d1, ..., dN, γ(d1, ..., dN) ein Codewort des zweiten Codes Cod2 bilden.
    • • Bei diversen Ausführungsformen können die Bits d1, c1, ..., dN, cN, γ(d1, c1, ..., dN, cN) ein Codewort des zweiten Codes Cod2 bilden.
    • • Bei diversen Ausführungsformen können die Bits d1, a1, ..., dN, aN, γ(d1, a1, ..., dN, aN) ein Codewort des zweiten Codes Cod2 bilden.
    • • Bei diversen Ausführungsformen können die Bits d1, a1, c1, ..., dN, aN, cN, γ(d1, a1, c1, ..., dN, aN, cN) ein Codewort des zweiten Codes Cod2 bilden.
    • • Bei diversen Ausführungsformen können die Bits d1, f(a1), c1, ..., dN, f(aN), cN, γ(d1, a1, c1, ..., dN, aN, cN) ein Codewort des zweiten Codes Cod2 bilden, wobei f(ai) Bits sein können, die aus den Adressbits abgeleitet sind. Es kann zum Beispiel sein, dass f(ai) = a i / 1 + a i / 2 + ..., + a i / l = P(ai), wobei P(ai) eine Parität des Adressbits sein kann und + eine Hinzufügung Modulo 2 sein kann.
  • Bei dem folgenden Beispiel kann der zweite Code Cod2 ein Byte-korrigierender Code sein, wobei ein Byte zum Beispiel durch die Bits di, ai gebildet werden kann, und wobei d1, a1, d2, a2, ..., dN, aN, γ(d1, a1, ..., dN, aN).
  • Bei einem fehlerfreien Fall ist ein Codewort des zweiten Codes Cod2 ein Wort, das durch Datenbits [d1, a1], [d2, a2], ..., [dN, aN] und die Prüfbits γ(d1, a1, ..., dN, aN) gebildet ist.
  • Es kann überraschend sein, dass in diesem Fall nicht nur eine Erfassung eines Adressfehlers sondern auch eine Korrektur möglich sein kann. Falls zum Beispiel eine zugewiesene Leseadresse a2 fehlerhaft ist und a2* bildet, kann die Speichervorrichtung Datenbits d2, die an der Adresse a2 gespeichert sind, nicht bereitstellen, sondern Datenbits d2*, die an der Adresse a2* gespeichert sind. Falls d2 ≠ d2*, dann ist d1, a1, d2*, a2*, ..., dN, aN, γ(d1, a1, ..., dN, aN) nicht ein Codewort des zweiten Codes Cod2. Falls ein Fehler auftritt, ist der Fehler ein korrigierbarer Fehler des zweiten Codes Cod2, falls der zweite Code Cod2 mindestens ein 1-Byte-korrigierender Code ist. Das Nicht-Codewort d1, a1, d2*, a2*, ..., dN, aN, γ(d1, a1, ..., dN, aN) kann durch Anwenden des zweiten Codes Cod2 korrigiert werden, um das fehlerfreie Codewort d1, a1, d 2* / cor = d2, a 2* / cor = a2, ..., dN, aN, γ(d1, a1, ..., dN, aN) derart zu bilden, dass der Fehler korrigiert wird und korrekte Datenbits d2, die an der Adresse a2 in der Speichervorrichtung gespeichert sind, bereitgestellt werden können, obwohl die fehlerhafte Adresse a2* der Speichervorrichtung zugewiesen wurde.
  • Diverse Beispiele von Betriebsmodi einer Speichervorrichtung werden nun beschrieben.
  • Eine Speichervorrichtung kann in einem ersten Betriebsmodus betrieben werden. Von T1 Adressen
    Figure DE102016101543A1_0037
    Figure DE102016101543A1_0038
    Datenbits
    Figure DE102016101543A1_0039
    und entsprechenden ersten Prüfbits
    Figure DE102016101543A1_0040
    des ersten Codes Cod1 können aus der Speichervorrichtung gelesen werden. In einem Fall, in dem ein oder mehrere Fehler in den Datenbits vorhanden sind, die korrigierbar sein können, indem der erste Code Cod1 angewandt wird, können die Datenbits
    Figure DE102016101543A1_0041
    unter Verwenden des ersten Codes Cod1 korrigiert werden und können von der Speichervorrichtung an ihrem Datenausgang bereitgestellt werden.
  • Zu T2 Adressen
    Figure DE102016101543A1_0042
    können Datenbits
    Figure DE102016101543A1_0043
    Figure DE102016101543A1_0044
    und entsprechende erste Prüfbits
    Figure DE102016101543A1_0045
    des ersten Codes Cod1 in die Speichervorrichtung geschrieben werden.
  • Bei diversen Ausführungsformen, nachdem T1 Daten aus der Speichervorrichtung gelesen wurden und nachdem T2 Daten in die Speichervorrichtung geschrieben wurden, kann es möglich sein, die Datenbits, die in Speicherzellen der Speichervorrichtung gespeichert sind, zum Bilden zweiter Prüfbits des ersten Codes Cod1 γ(d1, c1, ..., dN, cN) und des zweiten Codes Cod2 zu bilden, und in eine inaktive Phase einzusteigen.
  • Bei diversen Ausführungsformen können an bestimmten Zeitpunkten t1, t2, ..., tM, die Datenbits, die in den Speicherzellen in diesem Zeitpunkt gespeichert sind, zum Bilden zweiter Prüfbits γ(d1, ..., dN) des Codes Cod2 verwendet werden, und in eine inaktive Phase einzusteigen.
  • Bei diversen Ausführungsformen können in bestimmten Zeitpunkten t1, t2, ..., tM, die Datenbits und die ersten Prüfbits des Codes Cod1, die in den Speicherzellen in diesem Zeitpunkt gespeichert sind, zum Bilden zweiter Prüfbits γ(d1, c1, ..., dN, cN) des zweiten Codes Cod2 verwendet werden, und in eine inaktive Phase einzusteigen.
  • Bei diversen Ausführungsformen, falls nach einer bestimmten Zeitspanne die inaktive Phase beendet wird, können die Adressen a1, ..., aN, an welchen die potenziell fehlerhaften Datenbits d1', ... dN' und entsprechenden potenziell fehlerhaften Prüfbits c1', ..., cN' des Codes Cod1 gespeichert sind, zugewiesen werden, und die gelesenen Bits d1', c1', ..., dN', cN' können durch Anwenden des ersten Codes Cod1 korrigiert werden, falls der eine oder die mehreren Fehler durch den ersten Code Cod1 korrigierbar sind. Die korrigierten Bits können zu den entsprechenden Speicherzellen zurückgeschrieben werden.
  • Falls zum Beispiel ein Fehler in dj', cj' auftritt, der durch Anwenden des ersten Codes Cod1 nicht korrigierbar ist, der aber durch Anwenden des ersten Codes Cod1 erfasst werden kann, werden die Bits dj', cj' nicht unter Verwenden des ersten Codes Cod1 korrigiert.
  • Bei diversen Ausführungsformen, falls der Fehler durch Anwenden des zweiten Codes Cod2 korrigierbar ist, können die Bits dj', cj' durch Anwenden des zweiten Codes Cod2 korrigiert werden, nachdem die Fehler, die durch Anwenden des ersten Codes Cod1 korrigierbar sind, korrigiert wurden, und nachdem die korrigierten Bits zu entsprechenden Speicherzellen der Speichervorrichtung zurückgeschrieben wurden.
  • Bei einem Beispiel kann eine Kombination von Datenbits und Prüfbits 256 Datenbits aufweisen, die 16 Gruppen von Bits d1, ..., d16 bilden können, die jeweils 16 Datenbits d1 = d 1 / 1, ..., d 1 / 16, ..., d16 = d 16 / 1, ... d 16 / 16 aufweisen, von welches jedes durch 6 Prüfbits c1 = c 1 / 1, ..., c 1 / 6, ... c16 = c 16 / 1, ..., c 16 / 6 eines Hsiao-Codes ergänzt wird, so dass der erste Code Cod1 ein Hsiao-Codes mit 16 Informationsbits und 6 Prüfbits ist.
  • Als ein zweiter Code Cod2 kann zum Beispiel ein 2-Bit-Fehlerkorrektur und 3-Bit-Fehlererfassungscode-BCH-Code mit 256 Informationsbits d1, ..., d16 und 19 Prüfbits c BCH / 1, ..., c BCH / 19 verwendet werden, wobei auch eine totale Parität ein Prüfbit c BCH / 19 bildet.
  • Ein Hsiao-Code kann alle 1-Bit-Fehler korrigieren und alle 2-Bit-Fehler erfassen.
  • In dem Fall eines Bitfehlers, der in Positionen 10 und 20 der Datenbits auftritt, wird der Fehler in Position 10 von dem Hsiao-Code Cod1 unter Verwenden der Bits
    Figure DE102016101543A1_0046
    Figure DE102016101543A1_0047
    korrigiert.
  • Der Fehler in Bit Position 20 kann durch den Hsiao-Code Cod1 unter Verwenden der Bits
    Figure DE102016101543A1_0048
    auch korrigiert werden.
  • Falls keine weiteren Fehler auftreten, ist eine Korrektur durch Anwenden des zweiten Codes Cod2 eventuell nicht erforderlich.
  • Falls zum Beispiel Bit-Fehler an Positionen 10 und 11 auftreten, können die Fehler durch den ersten Code Cod1 unter Verwenden der Bits
    Figure DE102016101543A1_0049
    erfasst werden. Sie können jedoch nicht unter Verwenden des ersten Codes Cod1 korrigiert werden.
  • Die Fehler können jedoch durch Verwenden des 2-Bit-Fehlers korrigierenden und 3-Bit-Fehler erfassenden BCH-Code unter Verwenden der Bits
    Figure DE102016101543A1_0050
    korrigiert werden, wobei die korrigierten Bits zu den entsprechenden Speicherzellen zurückgeschrieben werden können, so dass ein korrekter Inhalt der Speicherzellen wiederhergestellt werden kann.
  • Bei diversen Ausführungsformen können Prüfbits c 1 / 1, ..., c 1 / 6, ..., c 16 / 1, ..., c 16 / 6 des Codes Cod1 in einer Korrektur durch den zweiten Code Cod2 enthalten sein. Der Code Cod2 kann ein 2-Bit-Fehlerkorrektur und 3-Bit-Fehler erfassender BCH-Code mit 256 + 96 = 352 Informationsbits und 19 Prüfbits sein, und die Anzahl erforderlicher Prüfbits wird nicht erhöht.
  • Ein Codiervorgang, der von Hsiao-Codes oder BCH-Codes verwendet, kann einem Fachmann bekannt sein. Das Codieren kann in Serie oder parallel ausgeführt werden.
  • Bei diversen Ausführungsformen kann der zweite Code Cod2 ein Byte-korrigierender Code sein. Ein Byte-korrigierender Code kann zum Beispiel ein Reed-Solomon-Code oder ein modifizierter Reed-Solomon-Code sein, der dem Fachmann bekannt ist.
  • Bei einem Beispiel können 256 Datenbits in Betracht gezogen werden, die durch 16 Gruppen von Datenbits d1, ..., d16 zu jeweils 16 Datenbits d1 = d 1 / 1, ..., d 1 / 16, ..., d16 = d 16 / 1, ... d 16 / 16 gebildet werden können, und die durch 6 Prüfbits c1 = c 1 / 1, ..., c 1 / 6, ..., c16 = c 16 / 1, ..., c 16 / 6 ergänzt werden können, so dass der erste Code Cod1 ein Hsiao-Code mit 16 Informationsbits und 6 Prüfbits ist.
  • Als ein zweiter Code Cod2 kann ein 1-Byte-korrigierender Reed-Solomon-Code verwendet werden. Als eine Byte-Größe, können 16 Bits festgelegt werden. Die 16 Datenbytes können d1, d2, ..., d16 genannt werden. 32 Prüfbits c B / 1, ..., c B / 32 können verwendet werden.
  • In einem Fall, in dem Bit-Fehler in den Datenbits
    Figure DE102016101543A1_0051
    Figure DE102016101543A1_0052
    auftreten, können die Bit-Fehler
    Figure DE102016101543A1_0053
    durch Verwenden des Hsiao-Codes Cod1 korrigiert werden, weil nur ein Fehler (ein 1-Bit-Fehler) in jedem der Bytes d2 und d15 vorliegt. Die korrigierten Werte, die unter Verwenden des ersten Codes Cod1 korrigiert wurden, können zu entsprechenden Speicherzellen zurückgeschrieben werden. Die Bit-Fehler des ersten Bytes können nicht unter Verwenden des Hsiao-Codes Cod1 korrigiert werden.
  • In einem Fall, in dem der Fehler
    Figure DE102016101543A1_0054
    in dem ersten Byte d1 durch den ersten Code Cod1 als ein nicht korrigierbarer Fehler erfasst wird, kann das erste Byte als ein Löschen oder als eine Fehlerposition festgelegt werden.
  • Das Anwenden des zweiten Codes Cod2, wenn die Fehlerposition bekannt ist, erfordert nur ein Festlegen von Korrekturwerten 0110100001000000 für dieses erste Byte.
  • Als ein zweiter Code Cod2 kann zum Beispiel ein 2-Bytekorrigierender Reed-Solomon-Code mit einer Bytegröße von 8 Bits verwendet werden.
  • Bei diversen Ausführungsformen, die einen ersten Codes Cod1 und zweiten Codes Cod2 in einer Startphase verwenden, kann ein Korrigieren von Daten in einer ersten Iteration den ersten Code Cod1 zum Korrigieren der Datenbits anwenden, wobei die korrigierten Datenbits zu den entsprechenden Speicherzellen zurückgeschrieben werden können. Fehler, die nicht durch Verwenden des ersten Codes Cod1 korrigierbar sind, die aber unter Verwenden des zweiten Codes Cod2 korrigiert werden können, werden durch Anwenden des zweiten Codes Cod2 nach der Korrektur durch Anwenden des ersten Codes Cod1 korrigiert. Korrigierte Datenbits, die durch Anwenden des zweiten Codes Cod2 korrigiert wurden, können zu den entsprechenden Speicherzellen zurückgeschrieben werden.
  • Nach einer Korrektur während einer Startphase, beim Eintreten in eine normale Betriebsphase, kann eine Fehlerkorrektur nur den ersten Code Cod1 verwenden.
  • Bei diversen Ausführungsformen können Bits, die in einem normalen Betriebsmodus gelesen werden, unter Verwenden des ersten Codes Cod1 korrigiert werden, und die korrigierten Werte können eventuell nicht in die Speichervorrichtung zurückgeschrieben werden.
  • Bei diversen Ausführungsformen können die korrigierten Bits in die Speichervorrichtung zurückgeschrieben werden.
  • Falls der erste Code Cod1 ein t-Bit-Fehlerkorrekturcode mit t > 1 ist, ist es möglich, die Bits zu korrigieren, die in dem normalen Betriebsmodus gelesen werden, indem der erste Code Cod1 angewandt wird. Eine Verarbeitung der korrigierten Fehler kann zum Beispiel von der Anzahl korrigierter Fehler abhängen.
  • Bei diversen Ausführungsformen
    • • falls ein σ-Bit-Fehler mit 1 ≤ σ ≤ τ < t und 1 ≤ τ vorhanden ist, können die korrigierten Bits, die unter Verwenden des ersten Codes Cod1 korrigiert wurden, eventuell nicht in die Speichervorrichtung zurückgeschrieben werden.
    • • falls ein μ-Bit-Fehler mit τ < μ ≤ t vorhanden ist, können die korrigierten Bits, die unter Verwenden des ersten Codes Cod1 korrigiert wurden, in die Speichervorrichtung zurückgeschrieben werden.
  • Falls zum Beispiel t = 3, kann ein 1-Bit-Fehler, der durch den ersten Code Cod1 korrigiert wurde, nicht in die Speichervorrichtung zurückgeschrieben werden, aber in einem Fall eines korrigierten 2-Bit-Fehlers oder eines korrigierten 3-Bit-Fehlers können die korrigierten Bits in die Speichervorrichtung zurückgeschrieben werden. Derart kann eine Anzahl von Schreibvorgängen signifikant verringert werden, da 2-Bit-Fehler und 3-Bit-Fehler viel weniger häufig sind als 1-Bit-Fehler.
  • Bei diversen Ausführungsformen können Prüfbits des zweiten Codes Cod2 an einem Ende eines normalen Betriebsmodus gebildet werden, zum Beispiel vor dem Eintreten in einen inaktiven Modus. Bei diversen Ausführungsformen können die Prüfbits des zweiten Codes Cod2, die auch zweite Prüfbits genannt werden können, während normalen Betrieben aktualisiert werden.
  • Bei diversen Ausführungsformen können die Prüfbits des zweiten Codes Cod2 aktualisiert werden, wenn Datenbits neu zu den Speicherzellen geschrieben werden. Bei diversen Ausführungsformen können die Speicherzellen, in die die neuen Datenbits zu schreiben sind, zuerst gelesen werden, und die gelesenen Datenbits können mit den Datenbits, die zu der Speicherzelle zu schreiben sind, verglichen werden, zum Beispiel unter Verwenden einer komponentenweisen XOR-Operation. Ein Unterschied zwischen den gegenwärtig in den Speicherzellen gespeicherten Datenbits und den Datenbits, die zu speichern sind, kann eine Änderung der Prüfbits des zweiten Codes Cod2 bestimmen. Bei diversen Ausführungsformen können potenziell fehlerhafte gelesene Datenbits zuerst unter Verwenden des ersten Codes Cod1 korrigiert werden, bevor der Unterschied mit Datenbits, die zu dem Speicher zu schreiben sind, bestimmt wird.
  • Bei diversen Ausführungsformen können Prüfbits des zweiten Codes Cod2 durch Prüfbits c check / 1, ..., c check / L derart ergänzt werden, dass die Prüfbits des zweiten Codes Cod2 und die Prüfbits c check / 1, ..., c check / L ein Codewort eines Fehlerkorrektur-/Fehlererfassungs-Codes Ccheck bilden.
  • Bei diversen Ausführungsformen kann der Code Ccheck der erste Code Cod1 sein. In diesem Fall können die Prüfbits des zweiten Codes Cod2 in einem normalen Betriebsmodus durch Anwenden des ersten Codes Cod1 korrigiert werden, falls sie fehlerhaft sind, und der/die Fehler unter Verwenden des ersten Codes Cod1 korrigiert werden.
  • In dem folgenden Beispiel können Adressbits in einer Fehlerkorrektur umgesetzt werden.
  • Bei dem Beispiel können 256 Datenbits 16 Gruppen d1, ..., d16 von 16 Datenbits je d1 = d 1 / 1, ..., d 1 / 16, ..., d16 = d 16 / 1, ... d 16 / 16 die an 16 Adressen a1 = 00000, a2 = 00001, ..., a16 = 11111 gespeichert sind, an welchen Adressen auch die entsprechenden Prüfbits c1 = c 1 / 1, ..., c 1 / 5, ..., c2 = c 2 / 1, ..., c 2 / 5, c16 = c 16 / 1, ..., c 16 / 5 eines Hsiao-Codes mit 5 Prüfbits, der als der erste Code Cod1 verwendet wird, bilden, so dass [d1, a1, c1], ..., [d16, a16, c16] Codewörter eines 1-Bit-Fehler korrigierenden und 2-Bit-Fehler korrigierenden Hsiao-Codes sind. Die 21 Bits jeweils d1, a1, c1, ..., d16, a16, c16 bilden 1 Byte zum Beispiel eines 1-Byte-Fehler korrigierenden zweiten Codes Cod2.
  • Bei diversen Ausführungsformen kann in einem zweiten Betriebsmodus, der zum Beispiel während eines Startens ausgeführt wird, Folgendes ausgeführt werden:
    Zuerst können an den Adressen a1, ..., a16 potenziell fehlerhafte Datenbits d1', ..., d16' und ihre entsprechenden potenziell fehlerhaften Prüfbits c1', ..., c16' gelesen werden. Während des Lesens der Datenbits an den beabsichtigten Adressen ai mit 1 ≤ i ≤ 16, kann ein Fehler in einem oder mehreren der Adressbits auftreten, so dass auf eine fehlerhafte Adresse ai' = aj zugegriffen wird, und die 21 Bits dj, cj können gelesen werden. Dann kann getestet werden, ob dj, ai, cj ein Codewort des ersten Codes Cod1 ist. In einem Fall, in dem ein Fehler vorhanden ist, der durch den ersten Code Cod1 nicht korrigierbar ist, können dj, aj, cj als ein Löschen markiert werden und durch Anwenden des zweiten Codes Cod2 korrigiert werden.
  • Bei diversen Ausführungsformen, falls ein Fehler in einem Adressbit, auch Adressfehler genannt, durch den ersten Code Cod1 korrigierbar ist, kann von dem Korrektursignal für die Adressbits bestimmt werden, dass ein Adressfehler aufgetreten ist, und dass dj, ai, cj ein Löschen ist.
  • 2 zeigt in Übereinstimmung mit diversen Ausführungsformen eine schematische Darstellung von Datenbits und Prüfbits, die Speicherzellen einer Speichervorrichtung für eine blockweise Organisation der Speichervorrichtung zugeordnet sind.
  • 2 zeigt eine Speichervorrichtung, die M + 1 Speicherblöcke aufweist. Zu bemerken ist, dass die Speicherblöcke auch über mehrere Speichervorrichtungen verteilt sein könnten.
  • In der j. Speichervorrichtung mit N Adressen a1j, ..., aNj mit Wortbreite l, können unter jeder Adresse aij die k Datenbits dij = d ij / 1, ..., d ij / k in Speicherzellen 2ij gespeichert werden. Die entsprechenden m ersten Prüfbits cij = c ij / 1, ..., d ij / m des ersten Codes Cod1 können unter derselben Adresse aij in Speicherzellen 2ij' gespeichert sein, wobei j = 1, ..., M.
  • Die Adressen der Speicherzellen sind in 2 nicht angegeben.
  • Ferner sind in Speicherzellen 2γj des j. Blocks Blockj zweite Prüfbits γj(d1j, ..., dNj) gespeichert.
  • In Abhängigkeit von einer Wortbreite von dij, cij und von der Wortbreite von γj(d1j, ..., dNj), werden die zweiten Prüfbits an einer oder mehreren Adressen in dem Block Blockj gespeichert.
  • In einem fehlerfreien Fall bilden die Bits dij, cij ein Codewort des ersten Codes Cod1, und die Bits d1j, d2j, ..., dNj, γj(d1j, ..., dNj) bilden ein Codewort des zweiten Codes Cod2.
  • In den Speicherzellen 2iD des (M + 1). Blocks Block(M + 1) werden die Bits Di = D i / 1, ..., D i / k gespeichert, während in den Speicherzellen 2iC die Bits ci = C i / 1,..., C i / l gespeichert werden.
  • In weiteren Speicherzellen 2I' werden die Prüfbits γM+1(D1, ..., DN) gespeichert.
  • In einem fehlerfreien Fall bilden die Bits Di, Ci ein Codewort des ersten Codes Cod1 und die Bits D1, ...,DN, γM+1(D1, ..., DN) bilden ein Codewort des zweiten Codes Cod2. Die Bits D1, ...,DN sind Prüfbits eines weiteren Codes Cod3.
  • Die Bits Di für i = 1, ..., N sind festgelegt als Di = D i / 1, ... D i / k = (d i1 / 1, ..., d i1 / k) ⊕ (d i2 / 1, ..., d i2 / k) ⊕ ... ⊕⊕ (d iM / 1, ..., d iM / k) wobei ⊕ eine komponentenweise XOR-Operation darstellt.
  • Zum Beispiel für D 1 / 1 D i / 1 = d 11 / 1 ⊕ d 12 / 1 ⊕ ... ⊕ d 1M / 1 = P(d 11 / 1, d 12 / 1, ..., d 1M / 1) und D1 ist die Parität der Bits d 11 / 1, d 12 / 1, ..., d 1M / 1.
  • Im Allgemeinen, D i / j = d i1 / j ⊕ d i2 / j ⊕ ... ⊕ d iM / j = P(d i1 / j, d i2 / j, ..., d iM / j) ist die Parität der Bits d i1 / j, d i2 / j, ..., d iM / j, wobei diese Bits in unterschiedlichen Speicherblöcken gespeichert werden können.
  • Bei diversen Ausführungsformen, in einem ersten Betriebsmodus, falls potenziell fehlerhafte Datenbits dij' und entsprechende Prüfbits cij' aus dem j. Speichervorrichtungsblock an einer Adresse gelesen werden, die gemäß Erfordernis bestimmt werden kann, können die Datenbits dij' der Datenbits unter Verwenden des ersten Codes Cod1 korrigiert werden, falls der Fehler durch Anwenden des ersten Codes Cod1 korrigierbar ist.
  • Bei diversen Ausführungsformen, falls die Speichervorrichtung auf einen inaktiven Modus übergeführt wird, der auch inaktiver Zustand oder inaktive Phase genannt werden kann, in dem keine Lesevorgänge und keine Schreibvorgänge ausgeführt werden können, können sich Fehler in den Speicherzellen der Speichervorrichtung während der inaktiven Phase bilden. In einer MRAM-Speichervorrichtung können solche Fehler zum Beispiel durch Quanteneffekte erzeugt werden.
  • Bei diversen Ausführungsformen, falls die Speichervorrichtung auf den ersten Betriebsmodus überzuführen ist, nachdem sie in einem inaktiven Modus war, können so viele Fehler wie möglich in den Speicherzellen der Speichervorrichtung vor einem Starten des ersten Betriebsmodus korrigiert werden. Mit anderen Worten, vor dem Eintreten in den ersten Betriebsmodus, können so viele korrekte Werte der Bits, die in den Speicherzellen gespeichert sind, wie möglich zu den Speicherzellen geschrieben werden. Bei diversen Ausführungsformen können fehlerhafte Werte, die sich zum Beispiel während der inaktiven Phase angesammelt haben, mit den korrekten Werten überschrieben werden. Zum Wiederherstellen der korrekten Werte können der erste Code und der zweite Code angewandt werden.
  • Bei diversen Ausführungsformen können zuerst alle Adressen eines Adressbereichs des ersten Speichervorrichtungsblocks gelesen werden, die potenziell fehlerhaften Datenbits und die ersten Prüfbits, die den gelesenen Datenbits entsprechen, können ebenfalls gelesen werden, und, falls ein Fehler in den gelesenen Daten auftritt, der unter Verwenden des ersten Codes Cod1 korrigierbar ist, kann der Fehler korrigiert werden. Die korrigierten Daten, die durch Anwenden des ersten Codes Cod1 korrigiert wurden, können in die Speichervorrichtung zurückgeschrieben werden. Das Schreiben der korrigierten Daten in die Speichervorrichtung kann das Bilden von Prüfbits des ersten Codes Cod1 unter Verwenden der korrigierten Datenbits aufweisen, und das Schreiben, zum Beispiel Zurückschreiben, der Prüfbits in die Speichervorrichtung, wodurch fehlerhafte Prüfbits auf ihre korrekten Werte wiederhergestellt werden.
  • In einem Fall, in dem kein Fehler in den gelesenen Bits vorhanden ist, kann es sich erübrigen, die gelesenen Bits in die Speichervorrichtung zurückzuschreiben.
  • Bei diversen Ausführungsformen, falls in den gelesenen Datenbits ein Fehler vorhanden ist, der nicht durch Anwenden des ersten Codes Cod1 korrigierbar ist, können die gelesenen Bits nicht in die Speichervorrichtung zurückgeschrieben werden, so dass die Bits, die durch den ersten Code Cod1 nicht korrigierbar sind, in der Speichervorrichtung als fehlerhafte Bits gespeichert bleiben können.
  • Bei diversen Ausführungsformen, falls in dem ersten Block Block1 ein oder mehrere Fehler vorhanden sind, die nicht durch Anwenden des ersten Codes Cod1 korrigiert werden können, können die fehlerhaften Bits d11', ..., d1N' und möglicherweise fehlerhaften Prüfbits γ(d11, ..., d1N) gelesen werden, und die Fehler können durch Anwenden des zweiten Codes Cod2 korrigiert werden, falls der Fehler durch den zweiten Code Cod2 korrigierbar ist. Die korrigierten Datenbits können zu den entsprechenden Speicherzellen zurückgeschrieben werden. Aus den korrigierten Datenbits können korrigierte erste Prüfbits bestimmt werden und können in die Speichervorrichtung geschrieben werden.
  • Bei diversen Ausführungsformen können von den korrigierten Datenbits zweite Prüfbits gebildet und in die Speichervorrichtung geschrieben werden.
  • Bei diversen Ausführungsformen kann dieselbe Vorgehensweise an die Blöcke Block2 bis BlockM angewandt werden.
  • Falls bei diversen Ausführungsformen ein Fehler zum Beispiel in einem Block Block3 vorhanden ist, der weder durch den ersten Code Cod1 noch durch den zweiten Code Cod2 korrigiert werden kann, kann dieser Fehler unter Verwenden eines dritten Codes Cod3 korrigiert werden, wenn nur ein einzelner Block, der hier Block3 ist, einen solchen Fehler zeigt. Eine willkürliche Anzahl von Bits in dem Block Block3 kann fehlerhaft sein. Es kann bekannt sein, welche der Blöcke einen Fehler enthält, der nicht unter Verwenden des ersten Codes Cod1 und des zweiten Codes Cod2 korrigierbar ist.
  • Für die Datenbits d13, d23, ..., dN3 des Blocks D3 kann Folgendes gelten: d13 = D1 ⊕ d11 ⊕ d12 ⊕ d14 ⊕ ... ⊕ d11(M+1) d23 = D2 ⊕ d21 ⊕ d22 ⊕ d24 ⊕ ... ⊕ d2(M+1) ⋮ dN3 = DN ⊕ dN1 ⊕ dN2 ⊕ dN4 ⊕ ... ⊕ dN(M+1) (1)
  • Falls nur Datenbits und möglicherweise auch Prüfbits des Blocks Block3 fehlerhaft sind, können die fehlerhaften Bits d13', d23', ... dN3' durch die korrigierten Bits d 13 / cor, d 23 / cor, ...,d N3 / cor ersetzt werden wobei d 13 / cor = D1 ⊕ d11 ⊕ d12 ⊕ d14 ⊕ ... ⊕ d11(M+1) d 23 / cor = D2 ⊕ d21 ⊕ d22 ⊕ d24 ⊕ ... ⊕ d2(M+1) ⋮ d N3 / cor = DN ⊕ dN1 ⊕ dN2 ⊕ dN4 ⊕ ... ⊕ dN(M+1) (2)
  • Unter Verwenden der korrigierten Datenbits können die entsprechenden ersten Prüfbits des ersten Codes Cod1 und zweiten Prüfbits des zweiten Codes Cod2 gebildet werden.
  • Da der fehlerhafte Block bekannt sein kann, kann die Korrektur durch Verwenden nur eines einzigen zusätzlichen Blocks erzielt werden. Falls erwartet wird, dass mehr als ein Block fehlerhaft ist, können bei einer Ausführungsform RAID-Codes wie sie zum Beispiel in Guillermo, QA. et al. „Tolerating Multiple Failures in RAID Architectures with Optimal Storage and Uniform Declustering" S. 161–172, in Jin, H., Cortes, T. and Buyya, R. (Ed.) „High Performance Mass Storage and Parallel I/O", IEEE Press 2002, beschrieben sind, angewandt werden.
  • Nach dem Korrigieren der Fehler, die eventuell während des inaktiven Modus erzeugt wurden, wobei die Korrektur den ersten Code, den zweite Code, möglicherweise den dritten Code, Cod1, Cod2, Cod3 und möglicherweise zusätzliche Codes angewandt haben kann, kann die Speichervorrichtung auf den ersten Betriebsmodus übergeführt, zum Beispiel zurückgestellt werden.
  • Die beschriebene Korrektur für ein Wiederherstellen korrekter Werte in den Speicherzellen kann zum Beispiel während eines Startens ausgeführt werden.
  • Bei diversen Ausführungsformen, vor einem Beenden des ersten Betriebsmodus, zum Beispiel vor dem Ausführen eines Abschaltens der Speichervorrichtung, zum Beispiel vor dem Überführen der Speichervorrichtung auf einen inaktiven Zustand, zum Beispiel einen ausgeschalteten Zustand, können die ersten Prüfbits (des ersten Codes Cod1), die zweiten Prüfbits (des zweiten Codes Cod2) und die Prüfbits weiterer Codes, die verwendet werden können, basierend auf den Datenbits bestimmt werden (und möglicherweise auf den ersten und/oder zweiten Prüfbits und/oder den Adressbits), die in der Speichervorrichtung gespeichert sind, bestimmt werden, und können zu jeweiligen Speicherzellen zum Anpassen der Prüfbits an die Werte, die jetzt in den Speicherzellen gespeichert sind, zurückgeschrieben werden.
  • Wenn bei diversen Ausführungsformen in einem ersten Betriebsmodus Datenbits, die unter Verwenden des ersten Codes Cod1 korrigiert werden, in die Speichervorrichtung geschrieben werden, zum Beispiel zurückgeschrieben werden, können die zweiten Prüfbits (des zweiten Codes Cod2) bei einem Beenden des ersten Betriebsmodus aktualisiert werden. Die neue bestimmten zweiten Prüfbits können zu jeweiligen Speicherzellen geschrieben werden (zum Beispiel können vorhergehende zweite Prüfbits überschrieben werden), weil eventuell während Schreibvorgängen in dem ersten Betriebsmodus Datenbits in die Speichervorrichtung geschrieben wurden, die eine Aktualisierung der zweiten Prüfbits (des zweiten Codes Cod2) benötigen können. Auf ähnliche Art können weitere Prüfbits, zum Beispiel eines dritten Codes oder eines weiteren Codes aktualisiert werden. Erste Prüfbits (des ersten Codes Cod1) können bei diversen Ausführungsformen durch Schreiben der ersten Prüfbits zu Speicherzellen aktualisiert werden, wann immer Datenbits in die Speichervorrichtung während eines ersten Betriebsmodus geschrieben werden, oder zum Beispiel wann immer ein Schreibvorgang in die Speichervorrichtung einen Wert einer Speicherzelle ändert.
  • Bei diversen Ausführungsformen kann eine Aktualisierung der zweiten Prüfbits und möglicherweise weiterer Prüfbits für jeden Schreibvorgang in dem ersten Betriebsmodus ausgeführt werden. Eine Änderung der Prüfbits, das heißt der Unterschied zwischen aktuell gespeicherten Prüfbits und Prüfbits, die in die Speichervorrichtung zu schreiben sind, kann zum Beispiel mathematisch unter Verwenden einer XOR-Operation als der Unterschied zwischen jedem einzelnen vorhandenen Prüfbit und dem Prüfbit, mit dem es zu aktualisieren ist, bestimmt werden. Der Unterschied kann für den Aktualisierungsvorgang verwendet werden, das heißt das Schreiben der Prüfbits in die Speichervorrichtung.
  • Bei diversen Ausführungsformen, während eines Schreibvorgangs zu einer Adresse a, bei dem Datenbits und entsprechende Prüfbits zu der Adresse a zu schreiben sind, können die potenziell fehlerhaften Datenbits und Prüfbits, die gegenwärtig an der Adresse a gespeichert sind, gelesen werden.
  • Bei diversen Ausführungsformen kann ein Unterschied zwischen den Datenbits und Prüfbits, die zu schreiben sind, und den Datenbits und den Prüfbits, die durch Anwenden des ersten Codes Cod1 korrigiert wurden, verwendet werden, um eine erforderliche Änderung der Prüfbits des zweiten Codes Cod2 und möglicherweise weiterer Codes zu bestimmen.
  • Falls bei diversen Ausführungsformen die zweiten Prüfbits (des zweiten Codes Cod2) unter Verwenden nur der Datenbits bestimmt werden, kann die erforderliche Änderung der zweiten Prüfbits des zweiten Codes Cod2 aus dem Unterschied der korrigierten Bits, die unter Verwenden des ersten Codes Cod1 korrigiert werden, und den zu schreibenden Datenbits resultieren. Das kann auf ähnliche Art für weitere Codes gelten.
  • 3A zeigt in Übereinstimmung mit unterschiedlichen Ausführungsformen eine Skizze 301 einer Schaltung zum Korrigieren von Datenbits, die aus einer Speichervorrichtung gelesen werden, und für eine korrekte Wiederherstellung fehlerhafter Werte in Speicherzellen der Speichervorrichtung.
  • Bei diversen Ausführungsformen kann die Schaltung Demultiplexer DMUX1 31, DMUX2 32, DMUX3 33 und DMUX6 314 aufweisen. Jeder der Demultiplexer kann einen 0-Eingang, einen 1-Eingang und einen Ausgang, der einer Wortbreite entspricht, aufweisen. Die Schaltung kann ferner einen ersten Codierer Coder1 34 für den ersten Code Cod1 34, einen zweiten Codierer Coder2 35 für den zweiten Code Cod2, eine adressierbare Speichervorrichtung 36, einen ersten Korrektor Korrektor1 37 für den ersten Code Cod1, und einen zweiten Korrektor Korrektor2 38 für den zweiten Code Cod2 aufweisen.
  • An dem 0-Eingang des Demultiplexers DMUX2 32, können k-dimensionale Datenbits di bereitgestellt werden, und an dem 1-Eingang des Demultiplexers kann der Ausgang des Demultiplexers MUX1 31 bereitgestellt werden.
  • Der Ausgang des Demultiplexers DMUX2 32 kann mit dem k-dimensionalen Eingang des ersten Codierers Coder1 34 und mit dem k-dimensionalen Eingang des zweiten Codierers Coder2 35 verbunden werden. Der erste Codierer Coder1 kann konfiguriert sein, um m Prüfbits ci = c i / 1, ..., c i / m zu bilden und sie bereitstellen, zum Beispiel an seinem Ausgang ausgeben, so dass di, ci Bits eines Codeworts des ersten Codes Cod1 sein können.
  • Der Ausgang des Demultiplexers DMUX2 32 kann mit den ersten k Komponenten des k + m-dimensionalen 0-Eingangs des Demultiplexers DMUX3 33 verbunden sein, und der Ausgang mit m-Bitbreite des ersten Codierers Coder1, der die m Prüfbits ci hat, kann mit m Komponenten des 0-Eingangs des Demultiplexers DMUX3 33 verbunden sein. Der Ausgang des zweiten Codierers Coder2 35, der hier eine Breite von k + m-Bit hat, kann mit dem 1-Eingang des Demultiplexers DMUX3 33 verbunden sein.
  • Der Ausgang mit k + m-Bitbreite des Demultiplexers DMUX3 33 kann an dem Dateneingang mit k + m-Bitbreite der Speichervorrichtung 36 bereitgestellt sein und kann einen Adresseingang bereitstellen, an den eine Schreibadresse oder eine Leseadresse angewandt werden kann, und einen ersten Eingang für ein Schreibsignal w und ein Eingang für das Lesesignal r. Falls w = 1 und r = 0, können die Bits, die an dem Dateneingang bereitgestellt werden, zu Speicherzellen an der Adresse geschrieben werden, die an dem Adresseingang bereitgestellt ist, wobei die Speicherzellen durch die bereitgestellte Adresse adressiert sein können.
  • Falls w = 0 und r = 1, können Werte, die derzeit in den Speicherzellen, die durch die Adresse adressiert sind, die an dem Adresseingang bereitgestellt ist, an dem Datenausgang der Speichervorrichtung bereitgestellt werden. Die in den Speicherzellen gespeicherten Bits können zum Beispiel Quanteneffekten oder externen Einflüssen ausgesetzt gewesen sein, können fehlerhaft sein, zum Beispiel, falls die Speicherzellen MRAM-Zellen sind.
  • Der Datenausgang mit k + m-Bitbreite der Speichervorrichtung 36, der potenziell fehlerhafte Bits di', ci' hat, kann mit dem Eingang mit k + m-Bitbreite des ersten Korrektors Korrektor1 37 und mit dem 1-Eingang des Demultiplexers DMUX6 314 verbunden sein.
  • In einem Fall eines Fehlers, können sich die Bits di', ci' di',ci', die aus der Speichervorrichtung gelesen werden, von den Bits di, ci, die zu den Speicherzellen geschrieben werden, unterscheiden.
  • Der erste Korrektor Korrektor1 37 kann konfiguriert sein, um an seinem Ausgang mit mindestens k-Bitbreite korrigierte Werte d i / cor1 bereitzustellen, die durch Anwenden des ersten Codes Cod1 korrigiert wurden. Der Ausgang des ersten Korrektors Korrektor1 37 kann mit dem 0-Eingang des Demultiplexers DMUX1 31 und mit dem 0-Eingang des Demultiplexers DMUX6 314 verbunden sein. Auf den Demultiplexer DMUX6 314 kann der zweite Korrektor Korrektor2 folgen. Der Ausgang mit k-Bitbreite des zweiten Korrektors Korrektor2 kann mit dem 1-Eingang des Demultiplexers DMUX1 31 verbunden sein. Mit anderen Worten, können der Demultiplexer DMUX6 314 und der zweite Korrektor Korrektor2 38 sequenziell eingerichtet sein.
  • Ein Verfahren zum Betreiben der Schaltung der 3A in Übereinstimmung mit diversen Ausführungsformen wird nun beschrieben.
  • Die Schaltung kann in zwei Betriebsmodi betrieben werden, ein erster Betriebsmodus und ein zweiter Betriebsmodus. Es wird auch ein inaktiver Modus beschrieben.
  • In dem ersten Betriebsmodus können Datenbits zu Speicherzellen der Speichervorrichtung 36, die Adressen entsprechen, die gemäß einer spezifischen Aufgabe bestimmt werden, geschrieben werden (auch gespeichert werden genannt), wobei das Schreiben den ersten Code Cod1 und erste Prüfbits, die den Datenbits entsprechen, für eine Korrektur anwenden kann, und/oder die korrigierten Datenbits können aus den Speicherzellen der Speichervorrichtung gelesen werden, indem zu einer Korrektur der erste Code Cod1 und die ersten Prüfbits, die den Datenbits entsprechen, verwendet werden.
  • Während eines Schreibens der Datenbits di an einer Schreibadresse
    Figure DE102016101543A1_0055
    können die k Datenbits di = d i / 1, ..., d i / k an dem 0-Eingang des Demultiplexers DMUX2 32 bereitgestellt werden. Das Steuersignal st2 des Demultiplexers DMUX2 32 kann 0 sein, so dass der 0-Eingang des Demultiplexers mit seinem Ausgang verbunden werden kann, so dass die Datenbits di an dem ersten Codierer Coder1 34 und k Komponenten des 0-Eingangs des Demultiplexers DMUX3 53 bereitgestellt werden. Der erste Codierer Coder1 kann an seinem Ausgang m Prüfbits ci bereitstellen, die zu m weiteren Komponenten des 0-Eingangs des Demultiplexers DMUX3 33 bereitgestellt werden können. Die k + m Bits di, ci, die an dem 0-Eingang des Demultiplexers DMUX3 53 bereitgestellt werden, können ein Codewort des ersten Codes Cod1 bilden.
  • Das Steuersignal st3 des Demultiplexers DMUX3 33 kann 0 sein, so dass das Codewort di, ci zu dem Ausgang des Demultiplexers DMUX3 33 weitergegeben und an dem Dateneingang der Speichervorrichtung 36 bereitgestellt werden kann, die an ihrem Adresseingang mit einer Schreibadresse
    Figure DE102016101543A1_0056
    versehen sein kann (die Schreibadresse kann aufgabenspezifisch sein). Das Codewort di, ci kann zu jeweiligen Speicherzellen der Speichervorrichtung 36 an der Adresse
    Figure DE102016101543A1_0057
    geschrieben werden. Hier kann davon ausgegangen werden, dass w = 1 und r = 0 ausgewählt wurden.
  • Während eines Lesens potenziell fehlerhafter Datenbits di' aus der Speichervorrichtung, kann eine Leseadresse
    Figure DE102016101543A1_0058
    an dem Adresseingang der Speichervorrichtung 36 bereitgestellt werden. r = 1 und w = 0 können ausgewählt sein. Bei diesem Beispiel ist
    Figure DE102016101543A1_0059
    Ein oder mehrere Fehler können bewirken, dass sich di' von di unterscheidet. Gleicherweise können ein oder mehrere Fehler bewirken, dass sich ci' von ci unterscheidet.
  • An dem Datenausgang der Speichervorrichtung 36 können di', ci' bereitgestellt werden. Das Steuersignal des Demultiplexers DMUX6 314 kann als st6 = 0 ausgewählt werden. Der Datenausgang der Speichervorrichtung 36 kann mit dem Eingang mit k + m-Bitbreite des ersten Korrektors Korrektor1 37 verbunden sein, der konfiguriert sein kann, um an seinem Ausgang mit k-Bitbreite die korrigierten Datenbits d i / cor1 bereitzustellen, die unter Verwenden des ersten Codes Cod1 korrigiert wurden, falls ein oder mehrere Fehler durch den ersten Code Cod1 korrigierbar sind.
  • Falls das Steuersignal st2 des Demultiplexers DMUX2 32 0 ist, kann der korrigierte Wert d i / cor1 eventuell nicht in die Speichervorrichtung 36 zurückgeschrieben werden.
  • Bei diversen Ausführungsformen kann der korrigierte Wert d i / cor1 in die Speichervorrichtung 36 an der Adresse
    Figure DE102016101543A1_0060
    geschrieben werden, was unten beschrieben ist.
  • Falls das Steuersignal st1 des Demultiplexers MUX1 31 0 ist, kann dieser Demultiplexer seinen 0-Eingang mit seinem Ausgang verbinden, der mit dem 1-Eingang des Demultiplexers DMUX2 verbunden sein kann. Das Steuersignal st2 des Demultiplexers DMUX2 32 kann als 1 ausgewählt sein. In diesem Fall kann der 1-Eingang des Demultiplexers DMUX2 32 mit seinem Ausgang verbunden sein, so dass d i / cor1 an dem Eingang des ersten Codierers Coder1 34 und an den k ersten Komponenten des 0-Eingangs des Demultiplexers DMUX3 33 bereitgestellt werden kann. Der erste Codierer Coder1 54 kann die Prüfbits c i / cor1 bilden, so dass d i / cor1, c i / cor1 an dem 0-Eingang mit k + m-Bitbreite des Demultiplexers DMUX3 53 bereitgestellt werden können. Das Steuersignal st3 des Demultiplexers kann als 0 ausgewählt sein, so dass d i / cor1, c i / cor1 an dem Dateneingang der Speichervorrichtung 36 bereitgestellt werden können. Falls an dem Adresseingang die Adresse
    Figure DE102016101543A1_0061
    bereitgestellt wird und falls w = 1 und r = 0, können die potenziell fehlerhaften Bits di', ci' durch die korrigierten Bits d i / cor1, c i / cor1 derart ersetzt werden, dass die fehlerhaften Bits, die durch Anwenden des ersten Codes Cod1 korrigiert werden können, durch die korrekten Bits überschrieben werden können, und ein korrekter Inhalt der Speichervorrichtung wiederhergestellt werden kann.
  • Bei diversen Ausführungsformen kann das Verfahren variiert werden.
  • Bei diversen Ausführungsformen können in dem ersten Betriebsmodus korrigierte Bits immer in die Speichervorrichtung zurückgeschrieben werden, falls die Fehler durch den ersten Code Cod1 korrigierbar sind.
  • Bei diversen Ausführungsformen können korrigierte Bits in dem ersten Betriebsmodus eventuell nicht in die Speichervorrichtung zurückgeschrieben werden.
  • Bei diversen Ausführungsformen können in dem ersten Betriebsmodus korrigierte Bits zurückgeschrieben werden, falls mindestens ein σ-Bit-Fehler aufgetreten ist, falls der erste Code Cod1 ein t-Bit-Fehlerkorrekturcode ist, mit 0 < σ ≤ t und t ≥ 2, und korrigierte Bits können nicht in die Speichervorrichtung zurückgeschrieben werden, wenn kein Fehler oder nur ein τ-Bit-Fehler auftritt, mit τ < σ.
  • Bei diversen Ausführungsformen können korrigierte Bits in dem ersten Betriebsmodus zurückgeschrieben werden, falls eine Adresse, die an dem Adresseingang der Speichervorrichtung 36 bereitgestellt ist, ein Element eines Satzes von Adressen α1 = {a11, a12, ..., a1,R} ist. Hier kann α1 ein Subsatz von Adressen sein, der dafür bekannt ist, dass er eine höhere Wahrscheinlichkeit hat, Fehler in Werten zu haben, die in seinen zugewiesenen Speicherzellen gespeichert sind, als andere Adressen mit anderen Speicherzellen, die nicht von Elementen von α1 adressiert werden.
  • Der Satz α1 kann während des Startens bestimmt werden, zum Beispiel unter Verwenden von Parametern wie ein Schreibstrom, der für einen Schreibvorgang erforderlich ist, oder ein Lesestrom, der für einen Lesevorgang erforderlich ist.
  • Bei diversen Ausführungsformen können Kombinationen der beschriebenen Variationen angewandt werden. Bei diversen Ausführungsformen können korrigierte Datenbits in die Speichervorrichtung zurückgeschrieben werden, falls ein Fehler aufgetreten ist, und die Adresse ein Element des Satzes α1 ist, und die korrigierten Datenbits können immer zu der angewandten Adresse zurückgeschrieben werden, falls ein σ-Bit-Fehler aufgetreten ist, wobei σ ein vorbestimmter Wert ist, falls der erste Code Cod1 ein t-Bit-Korrekturcode mit 0 < σ ≤ t ist.
  • Bei diversen Ausführungsformen können in einem zweiten Betriebsmodus für Adressen a1, ..., aN, die einen Adressbereich oder alle Adressen der Speichervorrichtung enthalten können, potenziell fehlerhafte Datenbits und Prüfbits d1', c1i ..., dN', cN' aus der Speichervorrichtung 36 an den Adressen a1, ..., aN gelesen werden. Die gelesenen Datenbits und Prüfbits können in den ersten Korrektor Korrektor1 eingegeben werden. Der erste Korrektor kann an seinem Ausgang die korrigierten Datenbits d 1 / cor1, ..., d N / cor1 bereitstellen. Der Ausgang des ersten Korrektors Korrektor1 kann mit dem 0-Eingang des Demultiplexers DMUX1 verbunden sein (siehe 3A). Das Steuersignal st1 des Demultiplexers kann als 0 ausgewählt werden, so dass der 0-Eingang des Demultiplexers DMUX1 51 mit seinem Ausgang verbunden werden kann. Der Ausgang des Demultiplexers DMUX1 51 kann zu dem 1-Eingang des Demultiplexers DMUX2 32 bereitgestellt werden. Das Steuersignal st2 des Demultiplexers kann auf 1 gestellt sein, so dass der 1-Eingang des Demultiplexers mit seinem Ausgang verbunden werden kann, der gleichzeitig der Eingang des zweiten Codierers Coder2 35 und mit dem Eingang des ersten Codierers Coder1 34 verbunden sein kann.
  • Der erste Codierer Coder1 34 kann konfiguriert sein, um aus den korrigierten Datenbits d i / cor1 für i = 1, ..., N, das an seinem Eingang bereitgestellt ist, zugewiesene Prüfbits ci* zu bilden, die zu seinem Ausgang bereitgestellt werden können, so dass die Bits d i / cor1, ci* ein Codewort des ersten Codes Cod1 bilden können.
  • Das Steuersignal st3 des Demultiplexers DMUX3 33 kann 0 sein, solange die Bits d i / cor1, c1, ..., d N / cor1, cN durch den ersten Korrektor Korrektor1 37 bereitgestellt werden und an dem 0-Eingang des Demultiplexers DMUX3 33 bereitgestellt werden.
  • Der zweite Codierer Coder2 35 kann konfiguriert sein, um Prüfbits γ(d 1 / cor1, ..., d N / cor1) zu bilden, die von Datenbits d 1 / cor1, ..., d N / cor1 abhängen, die an seinem Eingang bereitgestellt werden, so dass die Bits d 1 / cor1, ..., d N / cor1, γ(d 1 / cor1, ..., d N / cor1) ein Codewort des zweiten Codes Cod2 bilden können.
  • Nach dem Schreiben der Bits d 1 / cor1, c1, ..., d N / cor1, cN in die Speichervorrichtung 36 an den Adressen a1, ..., aN, kann das Steuersignal st3 des Demultiplexers DMUX3 33 auf 1 gesetzt werden, so dass die Prüfbits γ(d 1 / cor1, ..., d N / cor1), die der zweite Codierer Coder2 35 an seinem Ausgang bereitstellen kann, zu dem Dateneingang der Speichervorrichtung 36 bereitgestellt werden können. In Abhängigkeit von der Wortbreite γ(d 1 / cor1, ..., d N / cor1) und der Wortbreite Wb von d i / cor1, ci*, können die Prüfbits γ(d 1 / cor1, ..., d N / cor1) an M Adressen a γ / 1, ..., a γ / M in der Speichervorrichtung 56 als Wörter mit einer Wortbreite Wb gespeichert werden, wobei M ≥ 1.
  • Falls zum Beispiel ein Wort mit der Wortbreite di 64 Bits hat und als ein erster Code Cod1 ein 2-Bit-Fehlerkorrektur-BCH-Code mit 14 Prüfbits verwendet werden kann, beträgt die Wortbreite d i / cor1, ci 78 Bits.
  • Falls N = 64 und der Adressbereich aus 64 Adressen bestehen kann, kann die Wortbreite von d 1 / cor1, ..., d 64 / cor1 212 Bit sein. Falls zum Beispiel als der zweite Code Cod2 ein 4-Bit-Fehlerkorrektur- und 5-Bit-Fehlererfassungs-BCH-Code verwendet wird, beträgt eine Anzahl von Prüfbits des zweiten Codes Cod2 4·13 + 1 = 53 < 78, und die 53 Prüfbits γ(d 1 / cor1, ..., d 64 / cor1) können an Adressen a γ / 1 in der Speichervorrichtung 56 mit einer Wortbreite 78 gespeichert werden, so dass hier M = 1.
  • In einem Fall, in dem ein 7-Bit-Fehlerkorrektur-BCH-Code als der zweite Code Cod2 verwendet wird, kann der zweite Code Cod2 7·13 = 91 Prüfbits aufweisen, und die 91 Prüfbits γ(d 1 / cor1, ..., d 64 / cor1) können an zwei Adressen a γ / 1, a γ / 2 in der Speichervorrichtung 36 mit einer Wortbreite von 78 gespeichert werden, so dass hier M = 2.
  • In einem Fall, in dem ein 1-Byte korrigierender zweiter Code Cod2 mit einer Bytelänge von 64 Bits verwendet wird, kann der zweite Code Cod2 128 Prüfbits γ(d 1 / cor1, ..., d 64 / cor1) aufweisen, die an zwei Adressen a γ / 1, a γ / 2 in der Speichervorrichtung 36 mit einer Wortbreite von 78 gespeichert sein können, so dass hier M = 2.
  • Bei diversen Ausführungsformen kann für andere Codes, zum Beispiel einen für Low-Density-Parity-Code, einen Reed-Muller-Code oder einen Cross-Parity-Code, die Anzahl von M Adressen, die zum Speichern der Prüfbits in der Speichervorrichtung 36 erforderlich ist, bestimmt werden. Die Anzahl von Prüfbits für einen linearen Code ist gleich einer Anzahl linear unabhängiger Zeilen einer bekannten Paritäts-Prüfmatrix H des zweiten Codes Cod2.
  • Bei diversen Ausführungsformen kann die Schaltung, nachdem die Prüfbits γ(d 1 / cor1, ..., d N / cor1) an Adressen a γ / 1, a γ / M In der Speichervorrichtung gespeichert wurden, auf einen Modus übergeführt werden, in dem weder Lesezugriff noch Schreibzugriff ausgeführt werden können. Dieser Modus kann ein inaktiver Modus genannt werden.
  • In einem Fall, in dem die Speicherzellen Zellen eines MRAM sind, kann es vorkommen, dass Fehler in die Speicherzellen eingeführt werden, zum Beispiel aufgrund von Quanteneffekten, während die Speichervorrichtung in dem inaktiven Modus sein kann. Eine Anzahl von Fehlern, die in einem inaktiven Modus erzeugt wird, kann von einer Temperatur der Schaltung, von einer Dauer des inaktiven Modus oder von anderen zum Beispiel externen Parametern abhängen.
  • Falls die Schaltung, die während einer bestimmten Zeitspanne in dem inaktiven Modus gewesen sein kann, auf den ersten Betriebsmodus übergeführt werden soll, können potenzielle Fehler in den Speicherzellen bei diversen Ausführungsformen zuerst in dem zweiten Betriebsmodus korrigiert werden, und die korrigierten Werte können zu den Speicherzellen geschrieben werden, so dass korrekte Werte in den Speicherzellen wiederhergestellt werden können. Nach der Wiederherstellung der korrekten Werte in den Speicherzellen kann ein Überführen auf den ersten Betriebsmodus ausgeführt werden.
  • Ein Überführen an der Schaltung von dem inaktiven Modus auf den ersten Betriebsmodus kann ein Starten genannt werden. In den zweiten Betriebsmodus kann unmittelbar nach dem inaktiven Modus und bevor die Schaltung ihren Betrieb, zum Beispiel normalen Betrieb, wieder aufnimmt, in dem ersten Betriebsmodus, eingestiegen werden.
  • Unten wird ein Beispiel des zweiten Betriebsmodus gegeben.
  • In dem zweiten Betriebsmodus können potenziell fehlerhafte Datenbits und Prüfbits aus der Speichervorrichtung 36 an Adressen eines Adressbereichs gelesen werden. Ein Adressbereich a1,..., aN kann als ein Beispiel dienen. Aus der Speichervorrichtung 36 können die potenziellen fehlerhaften Datenbits und Prüfbits d1', c1', ..., dN', cN' gelesen werden, wobei die Prüfbits c1', ..., cN' potenziell fehlerhafte Prüfbits des ersten Codes Cod1 sein können.
  • Der erste Korrektor Korrektor1 37 kann die Datenbits d1', ..., dN' auf d 1 / cor1, ..., d N / cor1 durch Anwenden des ersten Codes Cod1 korrigieren. Solange der erste Korrektor Korrktor1 37 korrigierte Datenbits d 1 / cor1, ..., d N / cor1 bereitstellt, kann das Steuersignal st1 des Demultiplexers DMUX1 31 0 sein, das Steuersignal st2 des Demultiplexers DMUX2 32 kann 1 sein, und das Steuersignal st3 des Demultiplexers DMUX3 33 kann 0 sein. Den k ersten Komponenten des 0-Eingangs des Demultiplexers DMUX3 33 und dem Eingang des Codierers Coder1 können die korrigierten Datenbits den korrigierten Datenbits d 1 / cor1, ..., d N / cor1 bereitgestellt werden. Der erste Codierer Coder1 kann die entsprechenden Prüfbits c 1 / cor1, ..., c N / cor1 derart bilden, dass für i = 1, ..., N d i / cor1, ..., c i / cor1 ein Codewort für den ersten Code Cod1 ist.
  • Der Ausgang des ersten Codierers Coder1 kann mit weiteren m Eingängen des 0-Eingangs des Demultiplexers DMUX3 33 verbunden werden, so dass der 0-Eingang des Demultiplexers DMUX3 33 für i = 1, ..., N mit einem Codewort d i / cor1, ..., c i / cor1 versehen werden kann, das auch zu dem Dateneingang der Speichervorrichtung 36 bereitgestellt werden kann. Falls w = 1 und r = 0, und falls die Adresse ai an dem Adresseingang der Speichervorrichtung 36 bereitgestellt wird, kann di', ci' durch d i / cor1, ..., c i / cor1 überschrieben werden.
  • Falls die Bits di, ci während der inaktiven Phase der Schaltung korrumpiert wurden, um die fehlerhaften Bits di', ci' zu bilden, und falls der oder die Fehler durch Anwenden des ersten Codes Cod1 korrigierbar sind, dann ist d i / cor1, c i / cor1 = di, ci und die korrekten Inhalte der Speichervorrichtung können in den Speicherzellen, die von der Adresse ai adressiert werden, wiederhergestellt werden.
  • Falls während des inaktiven Modus der Schaltung die Bits di, ci in fehlerhafte Bits di', ci' geändert wurden und der Fehler nicht unter Verwenden des ersten Codes Cod1 korrigierbar ist, dann ist d i / cor1, c i / cor1 ≠ di, ci, und an der Adresse ai können fehlerhafte Bits d i / cor1, c i / cor1 gespeichert werden, die den Originalbits di, ci nicht entsprechen.
  • Bei diversen Ausführungsformen können N Adressen a1, ..., aN an dem Adresseingang der Speichervorrichtung 36 bereitgestellt werden. An dem Ausgang der Speichervorrichtung 36 können die Bits d 1 / cor1, c 1 / cor1, ..., d N / cor1, ... c N / cor1 bereitgestellt werden, wobei die Bits d 1 / cor1, ..., d N / cor1 an dem 1-Eingang des Demultiplexers DMUX6 314 bereitgestellt werden können. Falls der Wert des Steuersignals st6 1 ist, können die Bits d 1 / cor1, ..., d N / cor1 An dem Eingang des Korrektors Korrektor2 38 bereitgestellt werden.
  • Falls die Adressen a γ / 1, ..., a γ / M jetzt an dem Adresseingang der Speichervorrichtung 36 bereitgestellt werden, können die Bits γ'(d1, ..., dN) an dem Datenausgang der Speichervorrichtung 36 bereitgestellt werden, und über den Demultiplexer DMUX6 314 kann ein Steuersignal, von dem st6 = 1 sein kann, zu dem Eingang des zweiten Korrektors Korrektor2 38 weitergegeben werden. Der zweite Korrektor Korrektor2 38 kann konfiguriert sein, um an seinem Ausgang die korrigierten Bits d 1 / cor2, ..., d N / cor2, γ(d1, ..., dN)cor2, die eventuell durch Anwenden des ersten Codes Cod1 korrigiert wurden, bereitstellen, wobei d 1 / cor2, ..., d N / cor2, γ(d1, ..., dN)cor2 ein Codewort für den zweiten Code Cod2 sein kann, falls der Fehler durch den zweiten Code Cod2 korrigierbar ist.
  • Das Steuersignal st1 des Demultiplexers DMUX1 31 kann 1 sein, das Steuersignal st2 des Demultiplexers DMUX2 32 kann 1 sein, und das Steuersignal st3 des Demultiplexers DMUX3 33 kann 0 sein, so dass die korrigierten Datenbits d 1 / cor2, ..., d N / cor2, die eventuell durch den Korrektor Korrektor2 38 durch Anwenden des zweiten Codes Cod2 korrigiert wurden, und die Prüfbits c1(d 1 / cor2), ..., cN1(d N / cor2), die durch den ersten Codierer Coder1 aus den korrigierten Datenbits d 1 / cor2, ..., d N / cor2 bestimmt wurden, können an dem Dateneingang der Speichervorrichtung 36 bereitgestellt und an den Adressen a1, ..., aN gespeichert werden.
  • Falls ein Fehler, der die Bits di, ci auf di', ci' korrumpiert, durch Anwenden des zweiten Codes Cod2 korrigierbar ist, dann d, ci = d i / cor2, ci(d i / cor2), und die Inhalte der Speicherzellen, die durch die Adresse ai adressiert werden können, können wiederhergestellt worden sein.
  • Bei diversen Ausführungsformen können Daten, die aus der Speichervorrichtung 36 gelesen werden, direkt durch den zweiten Korrektor Korrektor2 38 korrigiert werden, falls das Steuersignal st6 des Demultiplexers DMUX6 314 1 ist.
  • Bei diversen Ausführungsformen können Daten, die aus der Speichervorrichtung 36 gelesen werden, direkt durch den ersten Korrektor Korrektor1 37 korrigiert werden und können anschließend durch den zweiten Korrektor Korrektor2 38 korrigiert werden, falls das Steuersignal st6 des Demultiplexers DMUX6 314 0 ist.
  • Bei diversen Ausführungsformen können Daten zuerst aus der Speichervorrichtung 36 gelesen werden und können unter Verwenden des zweiten Korrektors Korrektor2 korrigiert werden, und die korrigierten Daten können in die Speichervorrichtung 36 zurückgeschrieben werden.
  • Anschließend können die Daten, die durch den zweiten Korrektor Korrektor2 korrigiert wurden, aus der Speichervorrichtung 36 gelesen werden, können unter Verwenden des ersten Korrektors Korrektor1 korrigiert werden und können in die Speichervorrichtung 36 zurückgeschrieben werden.
  • 3B zeigt in Übereinstimmung mit diversen Ausführungsformen eine teilweise Ansicht einer Skizze einer Schaltung zum Korrigieren von Datenbits, die aus einer Speichervorrichtung gelesen werden, und für ein korrektes Wiederherstellen fehlerhafter Werte in Speicherzellen der Speichervorrichtung, wobei die Schaltung eine Fehlererfassungsschaltung aufweisen kann.
  • Die teilweise Ansicht der Skizze der Schaltung der 3B kann eine teilweise Ansicht einer modifizierten Schaltung, wie in 3A gezeigt, sein, wobei ähnliche teilweise Schaltungen in 3A und 3B eventuell mit identischen Bezugszeichen versehen wurden.
  • Ein Unterschied zwischen 3B und 3A kann jetzt erklärt werden. In 3A kann der Datenausgang der Speichervorrichtung 36 mit dem Eingang des Korrektors Korrektor1 37 und mit dem 1-Ausgang des Demultiplexers DMUX6 314 verbunden sein, während in 3B der Datenausgang der Speichervorrichtung 36 mit dem Eingang des ersten Korrektors Korrektor1 37, mit dem 1-Eingang des Demultiplexers DMUX6 314 und mit dem Eingang eines Fehlerdetektors 39 verbunden sein kann. Der Ausgang dieses Fehlerdetektors 39, der ein 1-Bitbreiten-Fehlersignal E haben kann, kann an einem ersten Eingang eines AND-Gates 310 bereitgestellt sein. An dem zweiten Eingang des AND-Gates 310 kann ein Signal w' bereitgestellt werden, und sein Ausgang kann ein Schreibfreigabesignal w bereitstellen. Falls das binäre Fehlersignal E den Wert 0 hat, kann das Schreibfreigabesignal w ungeachtet eines Werts des binären Signals w' 0 sein.
  • Falls der Fehlerdetektor 39 den Wert E = 0 an seinem Ausgang bereitstellt, wird der Datenwert, der an dem Dateneingang der Speichervorrichtung 36 bereitgestellt wird, nicht in die Speichervorrichtung 36 an der bereitgestellten Adresse geschrieben.
  • Bei diversen Ausführungsformen kann der Detektor konfiguriert sein, um ein Fehlersignal E = 0 bereitzustellen, falls die Speichervorrichtung 36 ein Codewort di, ci des Codes Cod1 an einem Datenausgang bereitstellt, der an seinem Eingang bereitgestellt sein kann. Für ein Codewort des ersten Codes Cod1 ist eventuell keine Korrektur erforderlich, und es kann möglich sein, Daten in die Speichervorrichtung nur in einem Fall zurückzuschreiben, in dem eine Korrektur durch den ersten Korrektor Korrektor1 37 ausgeführt wird.
  • Bei diversen Ausführungsformen kann der Fehlerdetektor konfiguriert sein, um ein Fehlersignal E = 0 bereitzustellen, falls die Speichervorrichtung 36 ein fehlerhaftes Wort mit einem Fehler bereitstellt, der maximal ein σ-Bit-Fehler sein kann, falls der erste Code Cod1 ein t-Bit-Fehlerkorrektur Code mit t ≥ 2 und 1 ≤ σ ≤ t ist.
  • Falls zum Beispiel t = 3 und σ = 2, können die Datenbits, die durch den ersten Korrektor Korrektor1 korrigiert werden, nur in die Speichervorrichtung 36 zurückgeschrieben werden, falls in den Daten mindestens ein 2-Bit-Fehler korrigiert wurde.
  • In einem Fall, in dem keine Korrektur angewandt wurde, oder in dem nur ein 1-Bit-Fehler korrigiert wurde, können die fehlerhaften Datenbits in der Speichervorrichtung 36 nicht überschrieben werden. Da 2-Bit- und 3-Bit-Fehler weniger häufig auftreten können als 1-Bit-Fehler, kann ein Überschreiben der Daten auch relativ selten auftreten, was einen Stromverbrauch verringern kann.
  • 1-Bit-Fehler, die in der Speichervorrichtung vorhanden sind, die nicht wiederhergestellt wurden, können sicher durch einen 3-Bit-Fehlerkorrektur Code sogar in einem Fall korrigiert werden, in dem sich ein oder zwei zusätzliche Fehler vor dem nächsten Lesen der Daten ansammeln.
  • 3C zeigt in Übereinstimmung mit diversen Ausführungsformen eine Skizze 302 einer Schaltung zum Korrigieren von Datenbits, die aus einer Speichervorrichtung gelesen werden, und für eine korrekte Wiederherstellung fehlerhafter Werte in den Speicherzellen einer zweiten Speichervorrichtung.
  • Bei diversen Ausführungsformen können die Daten, die durch den ersten Korrektor Korrektor1 korrigiert werden, zu einer weiteren Speichervorrichtung 311 geschrieben werden, die von der Speichervorrichtung 36 unterschiedlich sein kann. Die Schaltung, die in 3C gezeigt ist, kann sich von der Schaltung der 3A durch Schreiben der Daten, die durch den zweiten Korrektor Korrektor2 korrigiert wurden, in die Speichervorrichtung 311, die von der Speichervorrichtung 36, aus der die zu korrigierenden Daten gelesen werden, unterscheiden. Für ähnliche oder identische Teile in 3A und 3C werden identische Bezugszeichen verwendet.
  • Bei diversen Ausführungsformen kann die weitere Speichervorrichtung 311 ein Register oder ein Register-Array aufweisen.
  • Bei diversen Ausführungsformen können Daten, die durch den ersten Korrektor Korrektor1 korrigiert werden, zum Beispiel d i / cor1, c i / cor1 zu einer Adresse ai' in eine Speichervorrichtung geschrieben werden, die von der Adresse ai, an der die potenziell fehlerhaften Daten di', ci' eventuell aus der Speichervorrichtung gelesen wurden, unterschiedlich sein kann. Die Speichervorrichtung, zu der die Daten geschrieben werden können, kann dieselbe sein wie die Speichervorrichtung, aus der die Daten gelesen wurden. In einem Fall, in dem die Speichervorrichtung, aus der die Daten gelesen wurden, in Blöcken organisiert ist, können bei diversen Ausführungsformen die Daten, die von einem Block der Speichervorrichtung gelesen werden, korrigiert und zu einem unterschiedlichen Block der Speichervorrichtung geschrieben werden.
  • Bei diversen Ausführungsformen können Daten, die durch den zweiten Korrektor Korrektor2 korrigiert werden, zum Beispiel d i / cor2, c i / cor2 zu einer Adresse ai* in einer Speichervorrichtung geschrieben werden, die von der Adresse ai, an der die potenziell fehlerhaften Daten di', ci' eventuell gelesen wurden, unterschiedlich ist.
  • 3D zeigt in Übereinstimmung mit diversen Ausführungsformen eine Skizze 303 einer Schaltung zum Korrigieren von Datenbits, die aus einer Speichervorrichtung gelesen werden, und für ein korrektes Wiederherstellen fehlerhafter Werte in den Speicherzellen, wobei ein Korrektor des ersten Codes und des zweiten Codes und der Codierer des ersten Codes und des zweiten Codes von Adressbits der Adresse, die zum Schreiben und/oder zum Lesen verwendet wird, abhängen können.
  • 3D zeigt eine teilweise Schaltung einer modifizierten Schaltung der 3A. Für ähnliche oder identische Teile in 3A und 3D werden identische Bezugszeichen verwendet. Diese können auf die Teile 32, 33 und 36 verweisen. Der erste Codierer Coder1 34 der 3A kann durch einen modifizierten ersten Codes Codierer Coder1 34' der 3D ersetzt werden. Der zweite Codierer Coder2 35 der 3A kann durch einen modifizierten zweiten Codierer Coder2 35' der 3D ersetzt werden. Der erste Korrektor Korrektor1 37 der 3A kann durch einen modifizierten ersten Korrektor Korrektor1 37' der 3D ersetzt werden. Der zweite Korrektor Korrektor2 38 der 3A kann durch einen modifizierten zweiten Korrektor Korrektor2 38' der 3D ersetzt werden.
  • Der erste Codierer Coder1 34' kann einen Eingang mit einer k-Bit Breite aufweisen, zu dem Datenbits di mit k-Bitbreite bereitgestellt werden können, und er kann einen zweiten Eingang mit 1-Bit-Breite aufweisen, zu dem die 1 Bits einer Schreibadresse a s / i der Speichervorrichtung 36 bereitgestellt werden können. Der erste Codierer Coder1 4' kann konfiguriert sein, um an seinem Ausgang Prüfbits c' mit m-Bitbreite derart bereitzustellen, dass di, a s / i, ci ein Codewort für den ersten Code Cod1 sein kann. Die Bits di, ci können Bits eines Codeworts des ersten Codes Cod1 sein.
  • Der zweite Codierer Coder2 34' kann einen Eingang mit k-Bitbreite aufweisen, zu dem Datenbits di mit k-Bitbreite bereitgestellt werden können, und er kann einen zweiten Eingang mit 1-Bitbreite aufweisen, zu dem die 1 Bits einer Schreibadresse a s / i der Speichervorrichtung 36 bereitgestellt werden können.
  • Der zweite Codierer Coder2 35' kann konfiguriert sein, um an seinem Ausgang Prüfbits γ(d1, a s / i, ..., dN, a s / N) derart bereitzustellen, dass d1, ..., dN, a s / 1, ..., a s / N, γ(d1, a s / i, ..., sN, a N / i) ein Codewort des zweiten Codes Cod2 sein kann.
  • Bei diversen Ausführungsformen können die Datenbits, Bits, die aus Adressbits abgeleitet werden, und Prüfbits in einem fehlerfreien Fall ein Codewort eines jeweiligen Codes sein, zum Beispiel des ersten Codes, des zweiten Codes oder eines potenziellen weiteren Codes.
  • 4 zeigt in Übereinstimmung mit diversen Ausführungsformen eine Skizze 400 einer Schaltung zum Herstellen eines Codes, der eine Seriell-zu-Parallel-Umwandlung aufweist, wobei die Schaltung zum Bilden von Prüfbits eines zweiten Codes verwendet werden kann.
  • 4 zeigt eine beispielhafte Ausführungsform eines zweiten Codierers Coder2. Es kann davon ausgegangen werden, dass die Datenbits 16 Bits breit sein können. Die Datenbits d1, ..., dN mit einer Breite von je 16 Bits können in eine serielle Schaltung zu N – 1 Registern 411, ..., 61(N – 1) jeweils mit einer Wortbreite von 16 eingegeben werden. Der 16 Bits breite Eingang des Registers 41(N – 1) und die N – 1 Ausgänge der Register 41(N – 2), ..., 411, jeweils mit einer Breite von 16 Bits, können zu einer Kombinierungsschaltung 42 zum Bestimmen der Prüfbits γ(d1, ..., dN) geroutet werden. Der Ausgang kann zu einem Parallel-Seriell-Wandler 43 geroutet werden, falls die Wortbreite von γ(d1, ...,dN) größer ist als 16. An dem 16 Bit breiten Ausgang des Parallel-Seriell-Wandlers können die Wörter γ(d1, ..., dN) als teilweise Wörter mit einer Breite von 16 ausgegeben werden.
  • Bei diversen Ausführungsformen kann ein sequenzielles Codieren angewandt werden, wie es zum Beispiel in zyklischen Codes durch Anwenden eines Feedback-Shiftregisters verwendet wird, mit dem ein Fachmann vertraut sein kann.
  • 5 zeigt einen Prozessfluss 500 eines Verfahrens zum Betreiben einer Speichervorrichtung in Übereinstimmung mit diversen Ausführungsformen.
  • Bei diversen Ausführungsformen kann das Verfahren in einem ersten Betriebsmodus das Lesen codierter Daten aus der Speichervorrichtung und das Schreiben codierter Daten in die Speichervorrichtung, das Anwenden eines ersten Codes, der eine erste Codedistanz zu den codierten Daten hat, aufweisen um mindestens einen Abschnitt von Fehlern im ersten Modus in den codierten Daten zu korrigieren, wodurch korrigierte Daten des ersten Modus gebildet werden (bei 510).
  • Bei diversen Ausführungsformen kann das Verfahren in einem zweiten Betriebsmodus nach einem inaktiven Zustand und vor dem Eintreten in den ersten Betriebsmodus das Anwenden eines zweiten Codes aufweisen, der eine zweite Codedistanz zu einem nicht korrigierten Abschnitt der Fehler des ersten Modus in den codierten Daten hat, um mindestens einen Abschnitt von Fehlern des zweiten Modus und des nicht korrigierten Abschnitts der Fehler des ersten Modus in den codierten Daten zu korrigieren, wodurch korrigierte Daten des zweiten Modus gebildet werden, wobei die zweite Codedistanz größer sein kann als die erste Codedistanz (bei 520).
  • Bei diversen Ausführungsformen kann in den ersten Betriebsmodus von dem zweiten Betriebsmodus eingestiegen werden, wie durch einen Pfeil 570 angegeben. Mit anderen Worten kann der zweite Betriebsmodus ausgeführt werden, bevor die Speichervorrichtung auf den ersten Betriebsmodus übergeführt wird. Das kann zum Beispiel der Fall bei einem Starten der Speichervorrichtung sein, oder nachdem zuvor die Speichervorrichtung von dem ersten Betriebsmodus auf den zweiten Betriebsmodus übergeführt wurde.
  • Bei diversen Ausführungsformen kann in den ersten Betriebsmodus eingestiegen werden, ohne durch den zweiten Betriebsmodus zu gehen, wie durch einen Pfeil 530 angegeben. Eine solche direkte Route zu dem ersten Betriebsmodus kann zum Beispiel in einem Fall ausgeführt werden, in dem die Speichervorrichtung in einem Zustand war, der von dem ersten Betriebszustand unterschiedlich ist und von dem zweiten Betriebszustand unterschiedlich ist, und in dem es nicht wahrscheinlich ist, dass sich eine große Anzahl von Fehlern angesammelt haben kann, zum Beispiel, weil die Speichervorrichtung nur während einer kurzen Dauer in dem Zustand war, zum Beispiel eine kurze Ruhephase, die auf einen ersten Betriebsmodus oder einen zweiten Betriebsmodus folgte.
  • Bei diversen Ausführungsformen kann in den zweiten Betriebsmodus direkt eingestiegen werden, wie durch einen Pfeil 540 angegeben. Eine solche Situation kann zum Beispiel bei einem Starten der Speichervorrichtung auftreten. In diesem Fall können Fehler, die sich eventuell während einer inaktiven Phase angesammelt haben, korrigiert werden, zum Beispiel können korrekte Werte in der Speichervorrichtung wiederhergestellt werden, bevor in den ersten Betriebsmodus, der ein normaler Betriebsmodus sein kann, eingestiegen wird.
  • In den zweiten Betriebsmodus kann auch von dem ersten Betriebsmodus eingestiegen werden, wie durch einen Pfeil 560 angegeben. Diese Situation kann zum Beispiel vor einem Abschalten der Speichervorrichtung auftreten, zum Beispiel vor dem Überführen der Speichervorrichtung auf einen inaktiven Zustand.
  • 6 zeigt einen Prozessfluss 600 eines Verfahrens zum Betreiben einer Speichervorrichtung in Übereinstimmung mit diversen Ausführungsformen.
  • Bei diversen Ausführungsformen kann das Verfahren in einem ersten Betriebsmodus das Lesen codierter Daten aus der Speichervorrichtung und das Schreiben codierter Daten in die Speichervorrichtung aufweisen, wobei die codierten Daten mehrere Datenwörter aufweisen können, wobei in jedem der mehreren Datenwörter eine maximale Anzahl von ersten Fehlern, die durch den ersten Code korrigierbar sind, durch Anwenden eines ersten Codes korrigiert werden, und Anwenden des ersten Codes zum Korrigieren aller Fehler in den codierten Daten, die durch den ersten Code korrigiert werden können (bei 610).
  • Bei diversen Ausführungsformen kann das Verfahren in einem zweiten Betriebsmodus das Lesen codierter Daten aus der Speichervorrichtung und das Schreiben codierte Daten in die Speichervorrichtung, das Anwenden des ersten Codes zum Korrigieren eines Abschnitts von Fehlern, die durch den ersten Code korrigierbar sind, aufweisen, wodurch teilweise durch den ersten Code korrigierte Daten gebildet werden, das Erfassen mindestens eines Fehlers in den teilweise von dem ersten Code korrigierten Daten und das Anwenden eines zweiten Codes an die teilweise durch den ersten Code korrigierten Daten, um den mindestens einen Fehler in den teilweise durch den ersten Code korrigierten Daten zu korrigieren (bei 620).
  • Bei diversen Ausführungsformen können die codierten Daten in dem zweiten Betriebsmodus mehrere Datenwörter aufweisen, wobei in jedem der mehreren Datenwörter eine maximale Anzahl korrigierbarer Fehler des ersten Modus durch Anwenden des ersten Codes korrigierbar sein können.
  • Bei diversen Ausführungsformen kann in den ersten Betriebsmodus von dem zweiten Betriebsmodus eingestiegen werden, wie durch einen Pfeil 670 angegeben. Mit anderen Worten kann der zweite Betriebsmodus ausgeführt werden, bevor die Speichervorrichtung auf den ersten Betriebsmodus übergeführt wird.
  • Bei diversen Ausführungsformen kann in den ersten Betriebsmodus eingestiegen werden, ohne durch den zweiten Betriebsmodus zu gehen, wie durch einen Pfeil 630 angegeben.
  • Bei diversen Ausführungsformen kann in den zweiten Betriebsmodus direkt eingestiegen werden, wie durch einen Pfeil 640 angegeben.
  • In den zweiten Betriebsmodus kann auch von dem ersten Betriebsmodus eingestiegen werden, wie durch einen Pfeil 660 angegeben.
  • 7 zeigt einen Prozessfluss 700 eines Verfahrens zum Betreiben einer Speichervorrichtung in Übereinstimmung mit diversen Ausführungsformen.
  • Bei diversen Ausführungsformen kann das Verfahren in einem ersten Betriebsmodus das Anwenden eines ersten Codes aufweisen, um einen Fehler zu erfassen und/oder zu korrigieren (bei 710). Bei diversen Ausführungsformen kann der mindestens eine Fehler, zum Beispiel mehrere Fehler in dem ersten Betriebsmodus erfasst und/oder korrigiert werden.
  • Bei diversen Ausführungsformen kann das Verfahren in einem zweiten Betriebsmodus nach einem inaktiven Modus und vor dem Eintreten in den ersten Betriebsmodus das Anwenden des ersten Codes zum Erfassen und/oder Korrigieren eines Fehlers aufweisen und anschließend das Anwenden eines zweiten Codes zum Korrigieren eines Fehlers, der von dem ersten Code nicht erfasst und/oder nicht korrigiert wurde, wobei der erste Code und der zweite Code unterschiedliche Codewörter haben können (bei 720). Bei diversen Ausführungsformen kann/können mindestens ein Fehler, zum Beispiel mehrere Fehler, in dem zweiten Betriebsmodus erfasst und/oder korrigiert werden.
  • Bei diversen Ausführungsformen kann in den ersten Betriebsmodus aus dem zweiten Betriebsmodus, wie durch einen Pfeil 770 angegeben, eingestiegen werden. Mit anderen Worten kann der zweite Betriebsmodus vor dem Überführen der Speichervorrichtung auf den ersten Betriebsmodus ausgeführt werden.
  • Bei diversen Ausführungsformen kann in den ersten Betriebsmodus eingestiegen werden, ohne durch den zweiten Betriebsmodus zu gehen, wie durch einen Pfeil 730 angegeben.
  • Bei diversen Ausführungsformen kann in den zweiten Modus direkt eingestiegen werden, wie durch einen Pfeil 740 angegeben.
  • In den zweiten Betriebsmodus kann auch von dem ersten Betriebsmodus eingestiegen werden, wie durch einen Pfeil 760 angegeben.
  • 8 zeigt einen Prozessfluss 800 eines Verfahrens zum Betreiben einer Speichervorrichtung in Übereinstimmung mit diversen Ausführungsformen.
  • Bei diversen Ausführungsformen kann das Verfahren in einem ersten Betriebsmodus das Anwenden eines ersten Codes aufweisen, um einen Fehler zu erfassen und/oder zu korrigieren (bei 810). Bei diversen Ausführungsformen kann/können mindestens ein Fehler, zum Beispiel mehrere Fehler, in dem ersten Betriebsmodus erfasst und/oder ausgeführt werden.
  • Bei diversen Ausführungsformen kann das Verfahren in einem zweiten Betriebsmodus, nach einem inaktiven Modus und vor dem Eintreten in den ersten Betriebsmodus das Anwenden eines zweiten Codes zum Korrigieren eines Fehlers aufweisen, wobei der erste Code und der zweite Code unterschiedliche Codewörter haben können (bei 820). Bei diversen Ausführungsformen kann/können mindestens ein Fehler, zum Beispiel mehrere Fehler, in dem zweiten Betriebsmodus erfasst und/oder korrigiert werden.
  • Bei diversen Ausführungsformen kann in den ersten Betriebsmodus von dem zweiten Betriebsmodus eingestiegen werden, wie durch einen Pfeil 870 angegeben. Mit anderen Worten kann der zweite Betriebsmodus vor dem Überführen der Speichervorrichtung auf den ersten Betriebsmodus ausgeführt werden.
  • Bei diversen Ausführungsformen kann in den ersten Betriebsmodus eingestiegen werden, ohne durch den zweiten Betriebsmodus zu gehen, wie durch einen Pfeil 830 angegeben.
  • Bei diversen Ausführungsformen kann in den zweiten Betriebsmodus direkt eingestiegen werden, wie durch einen Pfeil 840 angegeben.
  • In den zweiten Betriebsmodus kann auch von dem ersten Betriebsmodus eingestiegen werden, wie durch einen Pfeil 860 angegeben.
  • Bei diversen Ausführungsformen wird ein Verfahren zum Korrigieren und/oder Erfassen eines Fehlers in einer Speichervorrichtung bereitgestellt. Das Verfahren kann aufweisen: in einem ersten Betriebsmodus Anwenden eines ersten Codes, um einen Fehler zu erfassen und/oder zu korrigieren, und in einem zweiten Betriebsmodus, nach einem inaktiven Modus und vor dem Eintreten in den ersten Betriebsmodus, Anwenden eines zweiten Codes zum Korrigieren und/oder Erfassen eines Fehlers, wobei der erste Code und der zweite Code unterschiedliche Codewörter haben.
  • Bei diversen Ausführungsformen kann in dem zweiten Betriebsmodus zusätzlich zu dem zweiten Code mindestens ein anderer Fehlererfassungs- und/oder Korrekturcode angewandt werden.
  • Bei diversen Ausführungsformen kann in dem zweiten Betriebsmodus zusätzlich zu dem zweiten Code der erste Code angewandt werden.
  • Bei diversen Ausführungsformen kann in dem zweiten Betriebsmodus der erste Code angewandt werden, bevor der zweite Code angewandt wird.
  • Bei diversen Ausführungsformen wird ein Verfahren zum Korrigieren eines Fehlers in einer Speichervorrichtung bereitgestellt. Das Verfahren kann in einem ersten Betriebsmodus das Anwenden eines ersten Codes aufweisen, um einen Fehler zu erfassen und/oder zu korrigieren, und in einem zweiten Betriebsmodus, nach einem inaktiven Modus und vor dem Eintreten in den ersten Betriebsmodus, das Anwenden des ersten Codes, um einen Fehler zu erfassen und/oder zu korrigieren, und anschließend das Anwenden eines zweiten Codes zum Korrigieren eines Fehlers, der von dem ersten Code nicht korrigiert wurde, wobei der erste Code und der zweite Code unterschiedliche Codewörter haben können.
  • Bei diversen Ausführungsformen kann/können ein Fehler oder wenigstens ein Fehler, zum Beispiel mehrere Fehler in dem ersten Betriebsmodus und/oder in dem zweiten Betriebsmodus erfasst und/oder korrigiert werden.
  • Bei diversen Ausführungsformen können der erste Betriebsmodus, der zweite Betriebsmodus und der inaktive Modus in einer Abfolge (mit anderen Worten in einer Reihenfolge) erster Betriebsmodus, inaktiver Modus, zweiter Betriebsmodus und erster Betriebsmodus verwendet werden.
  • Bei diversen Ausführungsformen kann in dem zweiten Betriebsmodus der zweite Code zum Korrigieren mindestens eines Abschnitts von Fehlern, die nicht durch Anwenden des ersten Codes in dem ersten Betriebsmodus korrigiert werden, angewandt werden.
  • Bei diversen Ausführungsformen kann die Speichervorrichtung ein Bauteil eines Fahrzeugs sein, wobei der inaktive Modus einen Zündungs-Ausschaltmodus aufweisen kann, wobei die Speichervorrichtung in dem zweiten Betriebsmodus während einer Boot-Phase eines Zündungs-Einschaltmodus betrieben werden kann, und die Speichervorrichtung in dem ersten Betriebsmodus in dem Zündungs-Einschaltmodus nach der Boot-Phase betrieben werden kann.
  • Bei diversen Ausführungsformen kann die Speichervorrichtung in dem inaktiven Modus sein, wenn das Fahrzeug ruht und wenn kein Betriebsstrom in die Speichervorrichtung bereitgestellt wird.
  • Bei diversen Ausführungsformen kann die Speichervorrichtung in dem zweiten Betriebsmodus während eines Anlassens des Fahrzeugs verwendet werden.
  • Bei diversen Ausführungsformen kann das Anwenden des zweiten Codes zum Korrigieren von Fehlern in dem zweiten Betriebsmodus das Anwenden einer Kombination des ersten Codes und des zweiten Codes aufweisen.
  • Bei diversen Ausführungsformen kann das Anwenden der Kombination des ersten Codes und des zweiten Codes das Anwenden des ersten Codes zur Fehlerkorrektur aufweisen.
  • Bei diversen Ausführungsformen können mehrere Dateneinheiten und mindestens eine entsprechende Prüfeinheit in der Speichervorrichtung unter einer Adresse gespeichert sein, die mehrere Adresseinheiten umfasst, und wobei in einem fehlerfreien Zustand die Dateneinheiten, die mindestens eine Prüfeinheit und die Adresseinheiten ein Codewort des ersten Codes bilden können.
  • Bei diversen Ausführungsformen können mehrere Dateneinheiten und mindestens eine entsprechende Prüfeinheit in der Speichervorrichtung unter einer Adresse gespeichert sein, die mehrere Adresseinheiten umfasst, und wobei in einem fehlerfreien Zustand die Dateneinheiten, die mindestens eine Prüfeinheit und eine Adressinformationseinheit, die aus den mehreren Adresseinheiten abgeleitet ist, ein Codewort des ersten Codes bilden können.
  • Bei diversen Ausführungsformen können mehrere Dateneinheiten in der Speichervorrichtung gespeichert sein, und in dem ersten Betriebsmodus und/oder in dem zweiten Betriebsmodus kann das Anwenden des ersten Codes das Korrigieren der mehreren Dateneinheiten auf parallele Art unter Verwenden des ersten Codes aufweisen.
  • Bei diversen Ausführungsformen können mehrere Dateneinheiten in der Speichervorrichtung gespeichert sein, und in dem zweiten Betriebsmodus kann das Anwenden des zweiten Codes das Korrigieren der mehreren Dateneinheiten sequenziell unter Verwenden des zweiten Codes aufweisen.
  • Bei diversen Ausführungsformen können codierte Daten in der Speichervorrichtung gespeichert werden, die codierten Daten können mehrere codierte Dateneinheiten aufweisen, die mehrere Datenwörter aufweisen, wobei jedes Datenwort mehrere Dateninformationseinheiten und mindestens eine erste Prüfeinheit umfasst, codierte Daten, die in dem ersten Betriebsmodus korrigiert wurden sind korrigierte Daten des ersten Modus, und Daten, die in dem zweiten Betriebsmodus korrigiert wurden, können korrigierte Daten des zweiten Betriebsmodus sein, die im ersten Betriebsmodus korrigierten Daten können mehrere korrigierte Dateneinheiten des ersten Modus und mindestens eine erste Prüfeinheit aufweisen, und die korrigierten Daten des zweiten Modus können mehrere korrigierte Dateneinheiten des ersten Modus aufweisen, die mehrere Datenwörter aufweisen, wobei jedes Datenwort mehrere Dateninformationseinheiten und mindestens eine zweite Prüfeinheit aufweist.
  • Bei diversen Ausführungsformen kann das Verfahren ferner in dem ersten Betriebsmodus, falls der erste Code verwendet wird, um Fehler zu korrigieren, wodurch die korrigierten Daten des ersten Modus gebildet werden, das Schreiben mindestens eines Abschnitts der korrigierten Daten des ersten Modus in die Speichervorrichtung aufweisen.
  • Bei diversen Ausführungsformen können Daten, die in der Speichervorrichtung gespeichert sind, im ersten Betriebsmodus auch aufgefrischt oder wiederhergestellt werden. Das Wiederherstellen kann an digitale Datenwerte angewandt werden, und das Auffrischen kann an kontinuierliche oder Multiwert-Datenwerte angewandt werden.
  • Bei diversen Ausführungsformen kann das Verfahren ferner Folgendes aufweisen: in dem ersten Betriebsmodus, falls der erste Code verwendet wird, um Fehler zu korrigieren, wodurch korrigierte Daten des ersten Modus gebildet werden, Bilden mindestens einer zweiten Prüfeinheit unter Verwenden der korrigierten Daten des ersten Modus.
  • Bei diversen Ausführungsformen kann die mindestens eine zweite Prüfeinheit gebildet werden, bevor in den inaktiven Zustand eingestiegen wird.
  • Bei diversen Ausführungsformen kann das Verfahren ferner das Zuweisen einer individuellen Adresse zu einer Einheit codierter Daten der mehreren Einheiten codierter Daten aufweisen, wobei eine Einheit korrigierter Daten des ersten Modus der mehreren Einheiten korrigierter Daten des ersten Modus zu der Adresse geschrieben wird, aus der die Einheit codierter Daten gelesen wurde.
  • Bei diversen Ausführungsformen können die mehreren Dateninformationseinheiten in den korrigierten Daten des ersten Modus mindestens eine Einheit korrigierter Dateninformationen aufweisen, und die mindestens eine erste Prüfeinheit kann mindestens eine korrigierte erste Prüfeinheit aufweisen.
  • Bei diversen Ausführungsformen kann die mindestens eine erste Prüfeinheit in dem zweiten Betriebsmodus zusätzlich zum Korrigieren der Daten verwendet werden.
  • Bei diversen Ausführungsformen kann mindestens eine erste Prüfeinheit in dem zweiten Betriebsmodus zum Definieren von Fehlerpositionen in den codierten Daten und/oder in den korrigierten Daten des ersten Modus verwendet werden.
  • Bei diversen Ausführungsformen kann das Verfahren ferner das Senden eines Inaktiv-Startsignals zum Eintreten in den inaktiven Modus und/oder das Senden eines Inaktiv-Endsignals zum Beenden des inaktiven Modus aufweisen.
  • Bei diversen Ausführungsformen können die korrigierten Daten des ersten Modus und/oder die korrigierten Daten des zweiten Modus zu Adressen geschrieben werden, die von den Adressen unterschiedlich sind, die den codierten Daten zugeordnet sind.
  • Bei diversen Ausführungsformen kann das Verfahren ferner in dem ersten Betriebsmodus, falls der erste Code zum Korrigieren von Fehlern verwendet werden, wodurch korrigierte Daten des ersten Modus gebildet werden, das Schreiben der korrigierten Daten des ersten Modus zu einer zweiten Speichervorrichtung aufweisen, und/oder in dem zweiten Betriebsmodus durch das Anwenden des zweiten Codes, das Bilden korrigierter Daten des zweiten Modus, und das Schreiben der korrigierten Daten des zweiten Modus zu der zweiten Speichervorrichtung.
  • Bei diversen Ausführungsformen kann das Verfahren ferner in dem ersten Betriebsmodus, vor dem Schreiben einer Einheit neuer codierter Daten zu einer Zieladresse der individuellen Adressen das Vergleichen einer Einheit alter codierter Daten, die an der Zieladresse gespeichert ist, mit der Einheit neuer codierter Daten, das Schreiben der Einheit neuer codierter Daten zu der Zieladresse und das Bilden der mindestens einen zweiten Prüfeinheit aufweisen, falls die Einheit neuer codierter Daten von der Einheit alter codierter Daten unterschiedlich ist.
  • Bei diversen Ausführungsformen kann das Inaktiv-Endsignal gesendet werden, bevor in den zweiten Betriebsmodus eingestiegen wird.
  • Bei diversen Ausführungsformen kann das Verfahren ferner das Bilden des mindestens einen sekundären Prüfbits und das Schreiben der korrigierten Daten des zweiten Modus und des mindestens einen sekundären Prüfbits zu Speichervorrichtung aufweisen, und das Inaktiv-Startsignal kann nach dem Speichern der korrigierten Daten des zweiten Modus und des mindestens einen sekundären Prüfbits in die Speichervorrichtung gesendet werden.
  • Bei diversen Ausführungsformen kann eine Codedistanz des zweiten Codes größer sein als eine Codedistanz des ersten Codes.
  • Bei diversen Ausführungsformen kann der erste Code ein t-Bit-Fehlerkorrektur Code sein und σ kann eine Konstante mit 0 < σ ≤ t mit t ≥ 2 sein, und das Verfahren kann ferner aufweisen: falls ein μ-Bit-Fehler während des ersten Betriebsmodus korrigiert wurde, wodurch korrigierte Daten des ersten Modus gebildet wurden, und σ ≤ μ ≤ t, Schreiben der korrigierten Daten des ersten Modus in die Speichervorrichtung und Nicht-Schreiben der korrigierten Daten des ersten Modus in die Speichervorrichtung, falls μ < σ.
  • Bei diversen Ausführungsformen wird ein Verfahren zum Betreiben einer Speichervorrichtung bereitgestellt. Das Verfahren kann Folgendes aufweisen: in einem ersten Betriebsmodus Lesen codierte Daten aus der Speichervorrichtung und Schreiben codierter Daten in die Speichervorrichtung, Anwenden eines ersten Codes an die codierten Daten, um mindestens einen Abschnitt von Fehlern in den codierten Daten zu korrigieren, wodurch korrigierte Daten des ersten Modus gebildet werden, und in einem zweiten Betriebsmodus, nach einem inaktiven Zustand und vor dem Eintreten in den ersten Betriebsmodus, Anwenden eines zweiten Codes, um mindestens einen Abschnitt von Fehlern zu korrigieren, wobei der erste Code und der zweite Code unterschiedliche Codewörter haben können. Dadurch kann es möglich sein, dass die Codedistanz des ersten Codes kleiner ist als die Codedistanz des zweiten Codes. Bei diversen Ausführungsformen kann das Verfahren in einem zweiten Betriebsmodus das Lesen codierter Daten aus der Speichervorrichtung und das Schreiben codierter Daten in die Speichervorrichtung, das Anwenden des ersten Codes zum Korrigieren eines Abschnitts der durch den ersten Code korrigierbaren Fehler, wobei teilweise durch den ersten Code korrigierte Daten gebildet werden, das Erfassen mindestens eines Fehlers in den teilweise durch den ersten Code korrigierten Daten, und Anwenden eines zweiten Codes an die teilweise durch den ersten Code korrigierten Daten, um den mindestens einen Fehler in den teilweise durch den ersten Code korrigierten Daten zu korrigieren (bei 620) aufweisen.
  • Bei diversen Ausführungsformen wird ein Verfahren zum Korrigieren und Erfassen von Fehlern in einer Speichervorrichtung bereitgestellt, wobei in einer Betriebsart ein Fehlerkorrektur- und/oder Fehlererfassungscodes C mit einer Codedistanz, die es erlaubt, bis zu t-Bit Fehler zu korrigieren, angewandt wird, wobei ein Fehler mit bis zu τ fehlerhaften Bits in ein Codewort des Codes C korrigiert werden kann, und ein Fehler mit mehr als τ fehlerhaften Bits nicht korrekt korrigiert werden und als ein Nicht-Codewort des Codes C erfasst werden kann, wobei 0 < τ ≤ t und t ≥ 2.
  • Bei diversen Ausführungsformen kann nach dem Anwenden des Fehlerkorrektur- und/oder Fehlererfassungscodes C (mit einer Codedistanz, die es erlaubt, bis zu t-Bit Fehler zu korrigieren) in der Betriebsart, ein weiterer Code angewandt werden, um einen Fehler zu korrigieren.
  • Bei diversen Ausführungsformen kann ein erfasster Fehler durch den weiteren Code als ein Löschen korrigiert werden.
  • Bei diversen Ausführungsformen kann das Verfahren ferner in dem ersten Betriebsmodus das Schreiben der korrigierten Daten des ersten Modus in die Speichervorrichtung aufweisen.
  • Bei diversen Ausführungsformen können die codierten Daten mehrere codierte Dateneinheiten aufweisen, die mehrere Datenwörter aufweisen, wobei jedes Datenwort mehrere Dateninformationseinheiten und mindestens eine erste Prüfeinheit aufweist, die korrigierten Daten des ersten Modus mehrere in dem ersten Modus korrigierte Dateneinheiten aufweisen können, die mehrere Datenwörter aufweisen, wobei jedes Datenwort mehrere Dateninformationseinheiten und mindestens eine erste Prüfeinheit aufweist, und die korrigierten Daten des zweiten Modus mehrere der in dem zweiten Modus korrigierte Dateneinheiten aufweisen können, die mehrere Datenwörter aufweisen, wobei jedes Datenwort mehrere Dateninformationseinheiten und mindestens eine zweite Prüfeinheit aufweist.
  • Bei diversen Ausführungsformen kann das Verfahren ferner das Bilden mindestens einer zweiten Prüfeinheit unter Verwenden der korrigierten Daten des ersten Modus aufweisen.
  • Bei diversen Ausführungsformen kann die mindestens eine zweite Prüfeinheit gebildet werden, bevor in den inaktiven Zustand eingestiegen wird.
  • Bei diversen Ausführungsformen kann die mindestens zweite Prüfeinheit gebildet werden, bevor in den zweiten Betriebsmodus eingestiegen wird.
  • Bei diversen Ausführungsformen kann das Verfahren ferner das Zuweisen einer individuellen Adresse zu jeder der Einheiten codierter Daten aufweisen, wobei jede der Einheiten korrigierte Daten des ersten Modus zu der Adresse der entsprechenden Einheit codierter Daten geschrieben werden kann.
  • Bei diversen Ausführungsformen können mehrere der individuellen Adressen Adressen eines angrenzenden Adressbereichs sein.
  • Bei diversen Ausführungsformen können mehrere individuelle Adressen alle Adressen der Speichervorrichtung sein.
  • Bei diversen Ausführungsformen können in den korrigierten Daten des ersten Modus die mehreren Dateninformationseinheiten mindestens eine Informationseinheit korrigierter Daten aufweisen und die mindestens eine erste Prüfeinheit kann mindestens eine korrigierte erste Prüfeinheit aufweisen.
  • Bei diversen Ausführungsformen kann in dem zweiten Betriebsmodus die mindestens eine Prüfeinheit zusätzlich zum Korrigieren der Daten verwendet werden.
  • Bei diversen Ausführungsformen kann im zweiten Betriebsmodus die mindestens eine erste Prüfeinheit zum Definieren von Fehlerpositionen in den codierten Daten verwendet werden. Die codierten Daten können fehlerhaft sein.
  • Bei diversen Ausführungsformen kann in dem zweiten Betriebsmodus die mindestens eine erste Prüfeinheit verwendet werden, um Fehlerpositionen in den korrigierten Daten des ersten Modus zu definieren.
  • Bei diversen Ausführungsformen können in dem inaktiven Zustand keine codierten Daten aus der Speichervorrichtung gelesen und keine codierten Daten in die Speichervorrichtung geschrieben werden.
  • Bei diversen Ausführungsformen kann das Verfahren ferner das Senden eines Inaktiv-Zustand-Startsignals zum Eintreten in den inaktiven Zustand und/oder das Senden eines Inaktiv-Zustand-Endsignals für das Beenden des inaktiven Zustands aufweisen.
  • Bei diversen Ausführungsformen können die korrigierten Daten des ersten Modus und/oder die korrigierten Daten des zweiten Modus zu Adressen geschrieben werden, die von den Adressen unterschiedlich sind, die den codierten Daten zugewiesen wurden.
  • Bei diversen Ausführungsformen können die korrigierten Daten des ersten Modus und/oder die korrigierten Daten des zweiten Modus zu einer zweiten Speichervorrichtung gesendet werden.
  • Bei diversen Ausführungsformen weist das Verfahren ferner in dem ersten Betriebsmodus, vor dem Schreiben einer neuen Einheit codierter Daten zu einer Zieladresse der individuellen Adressen das Vergleichen einer Einheit alter codierter Daten, die an der Zieladresse gespeichert ist, mit der Einheit neuer codierter Daten auf, das Schreiben der neuen Einheit codierter Daten zu der Zieladresse und das Bilden der mindestens einen zweiten Prüfeinheit, falls die neue Einheit codierter Daten von der alten Einheit codierter Daten unterschiedlich ist.
  • Bei diversen Ausführungsformen kann das Inaktiv-Zustand-Endesignal gesendet werden, bevor in den zweiten Betriebsmodus eingestiegen wird, und das Verfahren kann ferner das Bilden mindestens eines sekundären Prüfbits aufweisen, und das Schreiben der korrigierten Daten des zweiten Modus und des mindestens einen sekundären Prüfbits in die Speichervorrichtung, und wobei das Inaktiv-Zustand-Startsignal nach dem Speichern der korrigierten Daten des zweiten Modus und des mindestens einen sekundären Prüfbits in die Speichervorrichtung gespeichert werden kann.
  • Bei diversen Ausführungsformen kann der erste Code ein t-Bit-Fehlerkorrekturcode sein, und σ kann eine Konstante mit 0 < σ ≤ t mit t ≥ 2 sein, und das Verfahren kann ferner das Schreiben der korrigierten Daten des ersten Modus in die Speichervorrichtung aufweisen, falls ein μ-Bit-Fehler während des ersten Betriebsmodus korrigiert wurde, und σ ≤ μ ≥ t, und die korrigierten Daten des ersten Modus nicht in die Speichervorrichtung schreiben, falls μ < σ.
  • Bei diversen Ausführungsformen kann der inaktive Zustand ein Zustand sein, der einem Starten einer Vorrichtung, die die Speichervorrichtung verwendet, vorausgeht.
  • Bei diversen Ausführungsformen kann das Verfahren ferner nach dem Lesen codierter Daten in dem ersten Betriebsmodus aus T1 Adressen der Speichervorrichtung oder nach dem Schreiben codierter Daten zu T2 Adressen der Speichervorrichtung das Bilden zweiter Prüfeinheiten unter Verwenden der gespeicherten Dateneinheiten und das Speichern der zweiten Prüfeinheiten in der Speichervorrichtung aufweisen.
  • Bei diversen Ausführungsformen T1 + T2 > 1.
  • Bei diversen Ausführungsformen kann das Verfahren ferner in einem dritten Betriebsmodus nach einem zweiten Betriebsmodus das Anwenden eines dritten Codes, der eine dritte Codedistanz hat, an die korrigierten Daten des zweiten Modus aufweisen, um nicht korrigierte Fehler in den korrigierten Daten des zweiten Modus zu korrigieren, wodurch korrigierte Daten des dritten Modus gebildet werden.
  • Bei diversen Ausführungsformen können die korrigierten Daten des dritten Modus in die Speichervorrichtung geschrieben werden.
  • Bei diversen Ausführungsformen können dritte Prüfeinheiten des dritten Codes in die Speichervorrichtung geschrieben werden.
  • Bei diversen Ausführungsformen können die dritten Prüfeinheiten unter Verwenden der ersten Prüfeinheiten und der zweiten Prüfeinheiten gebildet werden.
  • Bei diversen Ausführungsformen kann der erste Code ein Blockcode sein, der einen Hamming-Code, einen gekürzten Hamming-Code, einen Hsiao-Code, einen gekürzten Hsiao-Code, einen t-Bit-Fehlerkorrektur-BCH-Code, einen gekürzten t-Bit-Fehlerkorrektur-BCH-Code, zum Beispiel mit t ≥ 2, einen Reed-Muller-Code, einen gekürzten Reed-Muller-Code, einen zyklischen Code, einen gekürzten zyklischen Code, einen Low-Density-Parity-Code oder einen Bytekorrekturcode.
  • Bei diversen Ausführungsformen kann der zweite Code ein Blockcode sein, der einen Paritäts-Code, einen Hamming-Code, einen gekürzten Hamming-Code, einen Hsiao-Code, einen gekürzten Hsiao-Code, einen t-Bit-Fehlerkorrektur-BCH-Code, einen gekürzten t-Bit-Fehlerkorrektur-BCH-Code, zum Beispiel mit t ≥ 2, einen Reed-Muller-Code, einen gekürzten Reed-Muller-Code, einen zyklischen Code, einen gekürzten zyklischen Code, einen Reed-Solomon-Code, einen gekürzten Reed-Solomon-Code, einen modifizierten Reed-Solomon-Code, eine Byte-Korrekturcode, einen Low-Density-Parity-Code, einen nicht linearen Code oder einen RAID-Code aufweist.
  • Bei diversen Ausführungsformen kann ein Verfahren zum Verwenden einer Speichervorrichtung bereitgestellt werden. Das Verfahren kann in einem ersten Betriebsmodus das Lesen codierter Daten aus der Speichervorrichtung und das Schreiben codierter Daten in die Speichervorrichtung aufweisen, wobei die codierten Daten mehrere Datenwörter aufweisen können, wobei in jedem der mehreren Datenwörter eine maximale Anzahl von Fehlern durch Anwenden eines ersten Codes korrigierbar sein kann, und Anwenden des ersten Codes zum Korrigieren aller durch den ersten Code korrigierbaren Fehler, und, in einem zweiten Betriebsmodus, Lesen codierter Daten aus der Speichervorrichtung und Schreiben codierter Daten in die Speichervorrichtung, wobei die codierten Daten mehrere Datenwörter aufweisen können, wobei in jedem der mehreren Datenwörter eine maximale Anzahl durch den ersten Code korrigierbarer Fehler existiert, Anwenden des ersten Codes zum Korrigieren eines Abschnitts der durch den ersten Code korrigierbaren Fehler, wodurch teilweise durch die mit dem ersten Code korrigierten Daten gebildet werden, Erfassen mindestens eines Fehlers in den teilweise durch den ersten Code korrigierte Daten, und Bereitstellen von Information zu einer Position des mindestens eines Fehlers in den teilweise durch den ersten Code korrigierten Daten.
  • Bei diversen Ausführungsformen kann ein Verfahren zum Verwenden einer Speichervorrichtung bereitgestellt werden. Das Verfahren kann in einem ersten Betriebsmodus das Lesen codierter Daten aus der Speichervorrichtung und das Schreiben codierter Daten in die Speichervorrichtung aufweisen, wobei die codierten Daten mehrere Datenwörter aufweisen können, wobei in jedem der mehreren Datenwörter eine maximale Anzahl von durch den ersten Code korrigierbaren Fehlern durch Anwenden eines ersten Codes korrigierbar sein kann, und des ersten Codes zum Korrigieren aller durch den ersten Code korrigierbaren Fehler in den codierten Daten, und in einem zweiten Betriebsmodus Lesen codierter Daten aus der Speichervorrichtung und Schreiben codierter Daten in die Speichervorrichtung, wobei die codierten Daten mehrere Datenwörter aufweisen können, wobei in jedem der mehreren Datenwörter eine maximale Anzahl von durch den ersten Code korrigierbaren Fehlern durch Anwenden des ersten Codes korrigierbar sein kann, Anwenden des ersten Codes zum Korrigieren eines Abschnitts der durch den ersten Code korrigierbaren Fehler, wodurch teilweise durch den ersten Code korrigierte Daten gebildet werden, Erfassen mindestens eines Fehlers in den teilweise durch den ersten Code korrigierten Daten, und Bereitstellen von Information zu der Position des mindestens einen Fehlers in den teilweise durch den ersten Code korrigierten Daten.
  • Bei diversen Ausführungsformen kann das Verfahren ferner das Anwenden eines zweiten Codes an die teilweise durch den ersten Code korrigierten Daten aufweisen, um den mindestens einen Fehler in den teilweise durch den ersten Code korrigierten Daten zu korrigieren.
  • Bei diversen Ausführungsformen kann das Verfahren ferner das Prüfen aufweisen, ob die teilweise durch den ersten Code korrigierten Daten aus mindestens einem Codewort des ersten Codes bestehen, Markieren, falls die teilweise durch den ersten Code korrigierten Daten ein Datenwort aufweisen, dass nicht ein Codewort des ersten Codes ist, einer Position des Datenworts als eine Fehlerposition oder ein Löschen, und Korrigieren des Datenworts durch Anwenden des zweiten Codes als ein Löschen.
  • Bei diversen Ausführungsformen kann ein Fehlererfassungs- oder Korrekturcode ein BCH-Code mit einer Länge n über ein Galois-Feld GF(2m) mit einer H-Matrix sein, die darstellbar ist als
    Figure DE102016101543A1_0062
    wobei Submatrizen H1, H3, ..., H2t-1 (m, n)-Matrizen sein können, wobei eine maximale Anzahl durch den Fehlererfassungs- oder Korrekturcode korrigierbarer Fehler t sein kann, wobei das Korrigieren aller durch den Fehlererfassungs- oder Korrekturcode korrigierbaren Fehler in den codierten Daten die Submatrizen H1, H3, ..., H2t-1 verwenden kann, und wobei der Abschnitt von Fehlern, die durch den Fehlererfassungs- oder Korrekturcode korrigiert werden, Fehler bis zu einer maximalen Anzahl von τ fehlerhaften Positionen aufweisen kann, die unter Verwenden von τ Submatrizen Hi1, ..., H mit i1, ..., iτ ∊ {1, 3, ..., 2t – 1} des Fehlererfassungs- oder Korrekturcodes korrigiert werden können, wobei das Erfassen mindestens eines Fehlers in den teilweise durch den Fehlererfassungs- oder Korrekturcode korrigierten Daten und das Bereitstellen von Information zu der Position des mindestens einen Fehlers in den teilweise durch den Fehlererfassungs- oder Korrekturcode korrigierten Daten unbenutzte Submatrizen Hiτ+1, ..., Hi2t-2 mit ∊ {1, 3, ..., 2t – 1} verwenden kann. Der Fehlererfassungs- oder Korrekturcode kann der erste Code sein.
  • Bei diversen Ausführungsformen kann der erste Code ein BCH-Code mit einer Länge n über ein Galois-Feld GF(2m) mit einer H-Matrix sein, die darstellbar ist als
    Figure DE102016101543A1_0063
    wobei Submatrizen H1, H3, ..., H2t-1 (m, n)-Matrizen sein können, wobei die maximale Anzahl durch den ersten Code korrigierbarer Fehler t sein kann, wobei das Korrigieren aller durch den ersten Code korrigierbaren Fehler in den codierten Daten die Submatrizen H1, H3, ..., H2t-1 verwenden kann, und wobei der Abschnitt von Fehlern, die durch den ersten Code korrigiert werden, Fehler bis zu einer maximalen Anzahl von τ fehlerhaften Positionen aufweisen können, die unter Verwenden von τ Submatrizen Hi1, ..., H mit i1, ..., iτ ∊ {1, 3, ..., 2t – 1} des ersten Codes korrigiert werden können, wobei das Erfassen mindestens eines Fehlers in den teilweise durch den ersten Code korrigierten Daten und das Bereitstellen von Information zu der Position des mindestens einen Fehlers in den teilweise durch den ersten Code korrigierten Daten unbenutzte Submatrizen Hiτ+1, ..., Hi2t-2 mit i1, ..., iτ ∊ {1, 3, ..., 2t – 1} verwenden kann.
  • Bei diversen Ausführungsformen wird ein Verfahren zum Korrigieren und Erfassen von Fehlern in einer Speichervorrichtung bereitgestellt. Das Verfahren kann in einem Betriebsmodus das Anwenden eines in Betracht gezogenen Fehlerkorrektur- und/oder Fehlererfassungscodes mit einer Codedistanz aufweisen kann, die es erlaubt, bis zu t-Bit Fehler zu korrigieren, wobei ein Fehler mit bis zu τ fehlerhaften Bits in ein Codewort des in Betracht gezogenen Codes korrigiert werden kann, und ein Fehler mit mehr als τ fehlerhaften Bits nicht korrekt korrigiert werden kann und als ein Nicht-Codewort des in Betracht gezogenen Codes erfasst werden kann, wobei 0 < τ ≤ t und t ≥ 2.
  • Bei diversen Ausführungsformen kann der erste Code ein BCH-Code mit einer Länge n über ein Galois-Feld GF(2m) mit einer H-Matrix sein, die darstellbar ist als
    Figure DE102016101543A1_0064
    wobei Submatrizen H1, H3, ..., H2t-1 (m, n)-Matrizen sein können, wobei eine maximale Anzahl durch den in ersten Code korrigierbarer Fehler t sein kann, wobei das Korrigieren aller durch den ersten Code korrigierbaren Fehler in den codierten Daten die Submatrizen H1, H3, ..., H2t-1 verwenden kann, wobei der Abschnitt von Fehlern, die durch den ersten Code korrigiert werden, Fehler bis zu einer maximalen Anzahl von τ fehlerhafter Positionen aufweisen können, die unter Verwenden von τ Submatrizen Hi1, ..., H mit i1, ..., iτ ∊ {1, 3, ..., 2t – 1} des ersten Codes korrigiert werden können, wobei das Erfassen mindestens eines Fehlers in den teilweise durch den ersten Code korrigierten Daten und das Bereitstellen von Information zu der Position des mindestens einen Fehlers in den teilweise durch den ersten Code korrigierten Daten unbenutzte Submatrizen Hiτ+1, ..., Hi2t-2 mit i1, ..., iτ ∊ {1, 3, ..., 2t – 1} verwenden kann.
  • Obwohl die Erfindung teilweise unter Bezugnahme auf spezifische Ausführungsformen gezeigt und beschrieben wurde, muss der Fachmann verstehen, dass diverse Änderungen an Form und Detail an ihr ausgeführt werden können, ohne vom Sinn und Geltungsbereich der Erfindung, wie er durch die anliegenden Ansprüche definiert ist, abzuweichen. Der Geltungsbereich der Erfindung ist daher durch die anliegenden Ansprüche angegeben, und alle Änderungen, die in die Bedeutung und den Äquivalenzbereich der Ansprüche fallen, sind daher darin enthalten.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • Lin. S. und Costello, D., „Error Control Coding”, Prentice Hall, 1983, Seite 148 [0129]
    • Guillermo, QA. et al. „Tolerating Multiple Failures in RAID Architectures with Optimal Storage and Uniform Declustering” S. 161–172, [0253]
    • Jin, H., Cortes, T. and Buyya, R. (Ed.) „High Performance Mass Storage and Parallel I/O”, IEEE Press 2002 [0253]

Claims (26)

  1. Verfahren zum Korrigieren und/oder Erfassen eines Fehlers in einer Speichervorrichtung, wobei das Verfahren Folgendes umfasst: in einem ersten Betriebsmodus Anwenden eines ersten Codes zum Erfassen und/oder Korrigieren eines Fehlers; und in einem zweiten Betriebsmodus, nach einem inaktiven Modus und vor dem Eintreten in den ersten Betriebsmodus, Anwenden eines zweiten Codes zum Korrigieren und/oder Erfassen eines Fehlers, wobei der erste Code und der zweite Code unterschiedliche Codewörter haben.
  2. Verfahren nach Anspruch 1, wobei die Speichervorrichtung ein Bauteil eines Fahrzeugs ist, wobei der inaktive Modus einen Zündungs-Ausschaltmodus umfasst, wobei die Speichervorrichtung in dem zweiten Betriebsmodus in einer Boot-Phase eines Zündungs-Einschaltmodus betrieben wird, und die Speichervorrichtung in dem ersten Betriebsmodus in dem Zündungs-Einschaltmodus nach der Boot-Phase betrieben wird.
  3. Verfahren nach Anspruch 2, wobei die Speichervorrichtung in dem inaktiven Modus ist, wenn das Fahrzeug ruht, und kein Betriebsstrom in die Speichervorrichtung bereitgestellt wird.
  4. Verfahren nach Anspruch 2 oder 3, wobei die Speichervorrichtung in dem zweiten Betriebsmodus während eines Anlassens des Fahrzeugs verwendet wird.
  5. Verfahren nach einem der Ansprüche 1 bis 4, wobei das Anwenden des zweiten Codes zum Korrigieren von Fehlern in dem zweiten Betriebsmodus das Anwenden einer Kombination des ersten Codes und des zweiten Codes umfasst.
  6. Verfahren nach Anspruch 5, wobei das Anwenden der Kombination des ersten Codes und des zweiten Codes das Anwenden des ersten Codes zur Fehlerkorrektur umfasst.
  7. Verfahren nach einem der Ansprüche 1 bis 6, wobei mehrere Dateneinheiten und mindestens eine entsprechende Prüfeinheit in der Speichervorrichtung unter einer Adresse gespeichert sind, die mehrere Adresseinheiten umfasst, und wobei in einem fehlerfreien Fall die Dateneinheiten, die mindestens eine Prüfeinheit und die Adresseinheiten oder eine Adressinformationseinheit, die aus den mehreren Adresseinheiten abgeleitet ist, ein Codewort des ersten Codes bilden.
  8. Verfahren nach einem der Ansprüche 1 bis 7, wobei mehrere Dateneinheiten in der Speichervorrichtung gespeichert sind und wobei in dem ersten Betriebsmodus und/oder in dem zweiten Betriebsmodus das Anwenden des ersten Codes das Korrigieren der mehreren Dateneinheiten parallel unter Verwenden des ersten Codes umfasst.
  9. Verfahren nach einem der Ansprüche 1 bis 8, wobei mehrere Dateneinheiten in der Speichervorrichtung gespeichert sind und wobei in dem zweiten Betriebsmodus das Anwenden des zweiten Codes das Korrigieren der mehreren Dateneinheiten sequenziell unter Verwenden des zweiten Codes umfasst.
  10. Verfahren nach einem der Ansprüche 1 bis 9, wobei • codierte Daten in der Speichervorrichtung gespeichert sind, • die codierten Daten mehrere Einheiten codierter Daten umfassen, die mehrere Datenwörter umfassen, wobei jedes Datenwort mehrere Dateninformationseinheiten und mindestens eine erste Prüfeinheit umfasst, • codierte Daten, die in dem ersten Betriebsmodus korrigiert werden, korrigierte Daten des ersten Modus sind, und Daten, die in dem zweiten Betriebsmodus korrigiert werden, korrigierte Daten des zweiten Modus sind, • die korrigierten Daten des ersten Modus mehrere Einheiten korrigierter Daten des ersten Modus umfassen, die mehrere Datenwörter umfassen, wobei jedes Datenwort mehrere Dateninformationseinheiten und mindestens eine erste Prüfeinheit umfasst, und • die korrigierten Daten des zweiten Modus mehrere Einheiten korrigierter Daten des zweiten Modus umfassen, die mehrere Datenwörter umfassen, wobei jedes Datenwort mehrere Dateninformationseinheiten und mindestens eine zweite Prüfeinheit umfasst.
  11. Verfahren nach einem der Ansprüche 1 bis 10, das ferner Folgendes umfasst: in dem ersten Betriebsmodus, falls der erste Code zum Korrigieren von Fehlern verwendet wird, wodurch korrigierte Daten des ersten Modus gebildet werden, Schreiben mindestens eines Abschnitts der korrigierten Daten des ersten Modus in die Speichervorrichtung.
  12. Verfahren nach Anspruch 10 oder 11, das ferner Folgendes umfasst: Zuweisen einer individuellen Adresse zu einer Einheit codierter Daten der mehreren Einheiten codierter Daten, wobei eine Einheit korrigierter Daten des ersten Modus der mehreren Einheiten korrigierter Daten des ersten Modus zu der Adresse, aus der die Einheit codierter Daten gelesen wurden, geschrieben wird.
  13. Verfahren nach einem der Ansprüche 10 bis 12, wobei in den korrigierten Daten des ersten Modus die mehreren Dateninformationseinheiten mindestens eine korrigierte Dateninformationseinheit umfassen, und die mindestens eine erste Prüfeinheit mindestens eine korrigierte erste Prüfeinheit umfasst.
  14. Verfahren nach einem der Ansprüche 10 bis 13, wobei in dem zweiten Betriebsmodus die mindestens eine erste Prüfeinheit zusätzlich zum Korrigieren der Daten verwendet wird.
  15. Verfahren nach Anspruch 10 bis 14, wobei in dem zweiten Betriebsmodus die mindestens eine erste Prüfeinheit zum Definieren von Fehlerpositionen in den codierten Daten verwendet wird.
  16. Verfahren nach einem der vorhergehenden Ansprüche, das ferner Folgendes umfasst: Senden eines Inaktiv-Startsignals zum Eintreten in den inaktiven Modus; und/oder Senden eines Inaktiv-Endsignals zum Beenden des inaktiven Modus.
  17. Verfahren nach einem der Ansprüche 10, 11 oder 13 bis 16, wobei die korrigierten Daten des ersten Modus und/oder die korrigierten Daten des zweiten Modus zu Adressen geschrieben werden, die von den Adressen unterschiedlich sind, die den codierten Daten zugewiesen sind.
  18. Verfahren nach einem der vorhergehenden Ansprüche, das ferner Folgendes umfasst: in dem ersten Betriebsmodus, falls der erste Code zum Korrigieren von Fehlern verwendet wird, wodurch korrigierte Daten des ersten Modus gebildet werden, Schreiben der korrigierten Daten des ersten Modus zu einer zweiten Speichervorrichtung; und/oder in dem zweiten Betriebsmodus, durch das Anwenden des zweiten Codes, Bilden korrigierter Daten des zweiten Modus und Schreiben der korrigierten Daten des zweiten Modus zu der zweiten Speichervorrichtung.
  19. Verfahren nach einem der Ansprüche 10 bis 18, das ferner Folgendes umfasst: in dem ersten Betriebsmodus, vor dem Schreiben einer neuen Einheit codierter Daten zu einer Zieladresse der individuellen Adressen, Vergleichen einer alten Einheit codierter Daten, die an der Zieladresse gespeichert ist, mit der neuen Einheit codierter Daten; Schreiben der neuen Einheit codierter Daten zu der Zieladresse; und Bilden der mindestens einen zweiten Prüfeinheit, falls die neue Einheit codierter Daten von der alten Einheit codierter Daten unterschiedlich ist.
  20. Verfahren nach einem der Ansprüche 16 bis 19, wobei das Inaktiv-Endsignal vor dem Eintreten in den zweiten Betriebsmodus gesendet wird, ferner umfassend: Bilden des mindestens einen sekundären Prüfbits; und Schreiben der korrigierten Daten des zweiten Modus und des mindestens einen sekundären Prüfbits in die Speichervorrichtung; und wobei das Inaktiv-Startsignal nach dem Speichern der korrigierten Daten des zweiten Modus und des mindestens einen sekundären Prüfbits in die Speichervorrichtung gesendet wird.
  21. Verfahren nach einem der vorhergehenden Ansprüche, wobei der erste Code ein t-Bit-Fehlerkorrekturcode ist und σ eine Konstante mit 0 < σ ≤ t mit t ≥ 2, wobei das Verfahren ferner Folgendes umfasst: falls ein μ-Bit-Fehler während des ersten Betriebsmodus korrigiert wurde, wodurch korrigierte Daten des ersten Modus gebildet werden, und σ ≤ μ ≤ t, Schreiben der korrigierten Daten des ersten Modus in die Speichervorrichtung; und Nicht-Schreiben der korrigierten Daten des ersten Modus in die Speichervorrichtung, falls μ < σ.
  22. Verfahren zum Verwenden einer Speichervorrichtung, wobei das Verfahren Folgendes umfasst: in einem ersten Betriebsmodus Lesen codierter Daten aus der Speichervorrichtung und Schreiben codierter Daten in die Speichervorrichtung, wobei die codierten Daten mehrere Datenwörter umfassen, wobei in jedem der mehreren Datenwörter eine maximale Anzahl durch den ersten Code korrigierbarer Fehler durch Anwenden eines ersten Codes korrigierbar ist, und Anwenden des ersten Codes zum Korrigieren aller durch den ersten Code korrigierbaren Fehler in den codierten Daten; und in einem zweiten Betriebsmodus, Lesen codierter Daten aus der Speichervorrichtung und Schreiben codierter Daten in die Speichervorrichtung, wobei die codierten Daten mehrere Datenwörter umfassen, wobei in jedem der mehreren Datenwörter eine maximale Anzahl durch den ersten Code korrigierbarer Fehler durch Anwenden des ersten Codes korrigierbar ist, Anwenden des ersten Codes zum Korrigieren eines Abschnitts der durch den ersten Code korrigierbaren Fehler, wobei teilweise durch den ersten Code korrigierte Daten gebildet werden, Erfassen mindestens eines Fehlers in den teilweise durch den ersten Code korrigierten Daten und Bereitstellen von Informationen zu der Position des mindestens einen Fehlers in den teilweise durch den ersten Code korrigierten Daten.
  23. Verfahren nach Anspruch 22, das ferner Folgendes umfasst: Anwenden eines zweiten Codes an die teilweise durch den ersten Code korrigierten Daten zum Korrigieren des mindestens einen Fehlers in den teilweise durch den ersten Code korrigierten Daten.
  24. Verfahren nach Anspruch 22 oder 23, das ferner Folgendes umfasst: Prüfen, ob die teilweise durch den ersten Code korrigierten Daten aus mindestens einem Codewort des ersten Codes bestehen, Markieren, falls die teilweise durch den ersten Code korrigierten Daten ein Datenwort umfassen, das nicht ein Codewort des ersten Codes ist, einer Position des Datenworts als eine Fehlerposition, und Korrigieren des Datenworts durch Anwenden des zweiten Codes.
  25. Verfahren zum Korrigieren und Erfassen von Fehlern in einer Speichervorrichtung, das Folgendes umfasst: in einem Betriebsmodus Anwenden eines in Betracht gezogenen Fehlerkorrektur- und/oder Fehlererfassungscodes mit einer Codedistanz, die es erlaubt, bis zu t-Bit Fehler zu korrigieren, wobei ein Fehler mit bis zu τ fehlerhaften Bits in ein Codewort des in Betracht gezogenen Codes korrigiert wird, und ein Fehler mit mehr als τ fehlerhaften Bits nicht korrekt korrigiert wird und als ein Nicht-Codewort des in Betracht gezogenen Codes erfasst wird, wobei 0 < τ ≤ t und t 2.
  26. Verfahren nach Anspruch 25, wobei der in Betracht gezogene Code ein BCH-Code mit einer Länge n über einem Galois-Feld GF(2m) mit einer H-Matrix ist, die darstellbar ist als
    Figure DE102016101543A1_0065
    wobei Submatrizen H1, H3, ..., H2t-1 (m, n)-Matrizen sind, wobei die maximale Anzahl durch den in Betracht gezogenen Code korrigierbarer Fehler t ist, wobei das Korrigieren aller durch den in Betracht gezogenen Code korrigierbaren Fehler in den codierten Daten die Submatrizen H1, H3, ..., H2t-1 verwendet, und wobei die teilweise korrigierten Fehler Fehler bis zu einer maximalen Anzahl von τ fehlerhaften Positionen umfassen, und die teilweise korrigierten Fehler unter Verwenden von τ Submatrizen Hi1, ...,H mit i1, ..., ∊ {1, 3, ..., 2t – 1} korrigiert werden, wobei das Erfassen des mindestens einen Fehlers in den teilweise korrigierten Daten und ein Bereitstellen von Information zu einer Position des mindestens einen Fehlers in den teilweise korrigierten Daten unbenutzte Submatrizen Hiτ+1, ..., Hi2t-2 mit i1, ..., iτ ∊ {1, 3, ...,2t – 1} verwendet.
DE102016101543.1A 2016-01-28 2016-01-28 Verfahren zum Betreiben einer Speichervorrichtung Pending DE102016101543A1 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102016101543.1A DE102016101543A1 (de) 2016-01-28 2016-01-28 Verfahren zum Betreiben einer Speichervorrichtung
US15/410,912 US10216573B2 (en) 2016-01-28 2017-01-20 Method of operating a memory device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102016101543.1A DE102016101543A1 (de) 2016-01-28 2016-01-28 Verfahren zum Betreiben einer Speichervorrichtung

Publications (1)

Publication Number Publication Date
DE102016101543A1 true DE102016101543A1 (de) 2017-08-03

Family

ID=59327907

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102016101543.1A Pending DE102016101543A1 (de) 2016-01-28 2016-01-28 Verfahren zum Betreiben einer Speichervorrichtung

Country Status (2)

Country Link
US (1) US10216573B2 (de)
DE (1) DE102016101543A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11269720B2 (en) * 2019-08-11 2022-03-08 Winbond Electronics Corp. Memory storage apparatus and data access method

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130145231A1 (en) * 2011-11-18 2013-06-06 Jack Edward Frayer Data Encoder and Decoder Using Memory-Specific Parity-Check Matrix

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7970984B2 (en) * 2004-12-23 2011-06-28 Sandisk Il Ltd. Method for using a multi-bit cell flash device in a system not designed for the device
US20090327581A1 (en) * 2008-06-30 2009-12-31 Coulson Richard L Nand memory
US8001432B2 (en) * 2008-11-20 2011-08-16 Lsi Corporation Uninitialized memory detection using error correction codes and built-in self test
US8775865B2 (en) * 2009-06-24 2014-07-08 Headway Technologies, Inc. Method and apparatus for scrubbing accumulated disturb data errors in an array of SMT MRAM memory cells including rewriting reference bits
JP4772909B1 (ja) * 2010-03-30 2011-09-14 株式会社東芝 情報処理装置および情報処理方法
US8418026B2 (en) * 2010-10-27 2013-04-09 Sandisk Technologies Inc. Hybrid error correction coding to address uncorrectable errors
US9124300B2 (en) * 2013-02-28 2015-09-01 Sandisk Technologies Inc. Error correction coding in non-volatile memory
US9037946B2 (en) * 2013-03-12 2015-05-19 Sandisk Technologies Inc. Detecting effect of corrupting event on preloaded data in non-volatile memory
US20140327796A1 (en) 2013-05-02 2014-11-06 National Chung Cheng University Method for estimating camera response function
DE102013218554A1 (de) * 2013-09-17 2015-03-19 Robert Bosch Gmbh Verfahren und Vorrichtung zum Überwachen eines Antriebs eines Kraftfahrzeugs
JP6332134B2 (ja) * 2014-09-16 2018-05-30 株式会社デンソー メモリ診断回路
CN107430548B (zh) * 2015-03-06 2021-02-05 东芝存储器株式会社 存储装置的控制方法、及存储装置
DE102015215401B4 (de) 2015-08-12 2020-10-01 Infineon Technologies Ag Speichervorrichtung und Verfahren zum Korrigieren einer gespeicherten Bitfolge
US10002042B2 (en) * 2015-10-22 2018-06-19 Sandisk Technologies Llc Systems and methods of detecting errors during read operations and skipping word line portions

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130145231A1 (en) * 2011-11-18 2013-06-06 Jack Edward Frayer Data Encoder and Decoder Using Memory-Specific Parity-Check Matrix

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Guillermo, QA. et al. „Tolerating Multiple Failures in RAID Architectures with Optimal Storage and Uniform Declustering" S. 161–172,
Jin, H., Cortes, T. and Buyya, R. (Ed.) „High Performance Mass Storage and Parallel I/O", IEEE Press 2002
Lin. S. und Costello, D., „Error Control Coding", Prentice Hall, 1983, Seite 148

Also Published As

Publication number Publication date
US20170220417A1 (en) 2017-08-03
US10216573B2 (en) 2019-02-26

Similar Documents

Publication Publication Date Title
DE102015201384B4 (de) Vorrichtung und Verfahren zum Verbessern der Datenspeicherung durch Dateninvertierung
DE102016003366B4 (de) Lesepegelgruppierung für erhöhte flash-leistung
DE112011101116B4 (de) Two-Level BCH-Codes für Solid-State-Speichereinheiten
DE102008003113B4 (de) ECC-Steuereinheit, Speichersystem und Verfahren zur Korrektur eines Fehlers
DE112011100371B4 (de) Verfahren, Vorrichtung und Computerprogrammprodukt zum Decodieren eines Codeworts
DE102010050957B4 (de) Verfahren und Vorrichtung zur Fehlerkorrektur in einem Speicher
DE102015113414B4 (de) Fehlerkorrektur unter Verwendung von WOM-Codes
DE112010004863T5 (de) Datenverwaltung in Festkörperspeichersystemen
DE102011085602B4 (de) Vorrichtung und Verfahren zum Korrigieren zumindest eines Bitfehlers in einer codierten Bitsequenz
DE102007016460A1 (de) Nichtflüchtiges Speicherbauelement, nichtflüchtiges Speichersystem und Leseverfahren für ein nichtflüchtiges Speicherbauelement
DE102019123642A1 (de) Speicherfehlererkennung und korrektur
DE102013215055A1 (de) Schaltungsanordnung und Verfahren mit modifiziertem Fehlersyndrom zur Fehlererkennung von permanenten Fehlern in Speichern
DE112014005810B4 (de) anagement der Datenspeicherung in analogen Speicherzellen unter Verwendung einer nicht ganzzahligen Anzahl von Bits pro Zelle
DE102017110389A1 (de) Verfahren und Decoder zur Softinput Decodierung von verallgemeinerten verketteten Codes
DE102018122826A1 (de) Vorrichtung zum Unterstützen eines Fehlerkorrekturcodes und Testverfahren dafür
DE102015215401A1 (de) Speichervorrichtung und Verfahren zum Korrigieren einer gespeicherten Bitfolge
DE102017130591A1 (de) Verfahren und Vorrichtung zur Fehlerkorrekturkodierung auf Basis einer Datenkomprimierung
DE102020110856A1 (de) Komprimierung von fehlervektoren zur dekodierung von logik zum komprimierten speichern in einem dekodiererspeicher, verwendet von der dekodierungs-logik
DE102017103347A1 (de) Verarbeitung von daten in speicherzellen eines speichers
DE102016102590B4 (de) Datenverarbeitungseinrichtungen und verfahren zum rekonstruieren eines puf-werts
DE102016107285B4 (de) Verfahren zur verwendung einer speichervorrichtung, speichervorrichtung und speichervorrichtungsanordnung
DE102016101543A1 (de) Verfahren zum Betreiben einer Speichervorrichtung
DE102016104012A1 (de) Verarbeitung eines Datenworts
DE102019119753A9 (de) Generalisiertes verkettetes Fehlerkorrektur-Codierschema mit Lokalität
DE102018219877A1 (de) Vorrichtung und Verfahren zum Erzeugen einer Fehlerkorrekturinformation

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication