Nothing Special   »   [go: up one dir, main page]

DE102016107285B4 - Verfahren zur verwendung einer speichervorrichtung, speichervorrichtung und speichervorrichtungsanordnung - Google Patents

Verfahren zur verwendung einer speichervorrichtung, speichervorrichtung und speichervorrichtungsanordnung Download PDF

Info

Publication number
DE102016107285B4
DE102016107285B4 DE102016107285.0A DE102016107285A DE102016107285B4 DE 102016107285 B4 DE102016107285 B4 DE 102016107285B4 DE 102016107285 A DE102016107285 A DE 102016107285A DE 102016107285 B4 DE102016107285 B4 DE 102016107285B4
Authority
DE
Germany
Prior art keywords
code
data
memory device
units
various embodiments
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.)
Active
Application number
DE102016107285.0A
Other languages
English (en)
Other versions
DE102016107285A1 (de
Inventor
Jan Otterstedt
Michael Gössel
Thomas Rabenalt
Thomas Kern
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 DE102016107285.0A priority Critical patent/DE102016107285B4/de
Priority to CN201710253286.8A priority patent/CN107424651B/zh
Priority to US15/490,950 priority patent/US10157095B2/en
Publication of DE102016107285A1 publication Critical patent/DE102016107285A1/de
Application granted granted Critical
Publication of DE102016107285B4 publication Critical patent/DE102016107285B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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
    • 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/1012Adding 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 codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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/2903Methods and arrangements specifically for encoding, e.g. parallel encoding of a plurality of constituent 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/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/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
    • H03M13/2909Product 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/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/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
    • H03M13/1105Decoding
    • H03M13/1108Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
    • 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
    • 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/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/1515Reed-Solomon 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/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
    • 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
    • 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/2957Turbo codes and decoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

Verfahren (700) zur Verwendung einer Speichervorrichtung (100, 200), wobei das Verfahren umfasst:
Speichern von Dateneinheiten (102), Prüfeinheiten (104) eines ersten Codes und
Prüfeinheiten (106) eines zweiten Codes in Speicherzellen der Speichervorrichtung (100, 200), wobei die Dateneinheiten (102) und die Prüfeinheiten (104) des ersten Codes Codewörter des ersten Codes bilden, und wobei die Dateneinheiten (102) und die Prüfeinheiten (106) des zweiten Codes Codewörter des zweiten Codes bilden(710);
Anwenden des zweiten Codes zur Fehlerkorrektur in mindestens einem Teil der Dateneinheiten (102) und/oder in mindestens einem Teil der Prüfeinheiten (104) des ersten Codes (720);
Bewahren nach dem Korrigieren der Fehler mindestens eines Bewahrungsteils der Dateneinheiten (102) und der Prüfeinheiten (104) des ersten Codes und Löschen mindestens eines Löschungsteils der Prüfeinheiten (106) des zweiten Codes, um dadurch die Speicherzellen freizusetzen, die vom Löschungsteil der Prüfeinheiten (106) des zweiten Codes belegt wurden (730); und
Speichern von Daten in mindestens einem Wiederverwendungsteil (106m) der freigesetzten Speicherzellen während eines anschließenden Verwendens der Speichervorrichtung (100, 200); (740).

Description

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

Claims (22)

  1. Verfahren (700) zur Verwendung einer Speichervorrichtung (100, 200), wobei das Verfahren umfasst: Speichern von Dateneinheiten (102), Prüfeinheiten (104) eines ersten Codes und Prüfeinheiten (106) eines zweiten Codes in Speicherzellen der Speichervorrichtung (100, 200), wobei die Dateneinheiten (102) und die Prüfeinheiten (104) des ersten Codes Codewörter des ersten Codes bilden, und wobei die Dateneinheiten (102) und die Prüfeinheiten (106) des zweiten Codes Codewörter des zweiten Codes bilden(710); Anwenden des zweiten Codes zur Fehlerkorrektur in mindestens einem Teil der Dateneinheiten (102) und/oder in mindestens einem Teil der Prüfeinheiten (104) des ersten Codes (720); Bewahren nach dem Korrigieren der Fehler mindestens eines Bewahrungsteils der Dateneinheiten (102) und der Prüfeinheiten (104) des ersten Codes und Löschen mindestens eines Löschungsteils der Prüfeinheiten (106) des zweiten Codes, um dadurch die Speicherzellen freizusetzen, die vom Löschungsteil der Prüfeinheiten (106) des zweiten Codes belegt wurden (730); und Speichern von Daten in mindestens einem Wiederverwendungsteil (106m) der freigesetzten Speicherzellen während eines anschließenden Verwendens der Speichervorrichtung (100, 200); (740).
  2. Verfahren (700) nach Anspruch 1, ferner umfassend: Aussetzen der Speichervorrichtung (100, 200) gegenüber einem datengefährdenden Prozess nach dem Speichern der Dateneinheiten (102) des ersten Codes und der Prüfeinheiten (106) des zweiten Codes und vor dem Anwenden des zweiten Codes zur Fehlerkorrektur.
  3. Verfahren (700) nach Anspruch 2, ferner umfassend: Deaktivieren der Speichervorrichtung (100, 200) nach dem Speichern der Dateneinheiten (102) des ersten Codes und der Prüfeinheiten (106) des zweiten Codes und vor dem Aussetzen der Speichervorrichtung (100, 200) gegenüber einem datengefährdenden Prozess.
  4. Verfahren (700) nach Anspruch 2 oder 3, wobei der datengefährdende Prozess mindestens einer von einer Gruppe von Prozessen ist, welche Erwärmung, mechanische Belastung und Strahlungsbelastung umfassen.
  5. Verfahren (700) nach Anspruch 4, wobei der datengefährdende Prozess der Erwärmungsprozess ist, und wobei der Erwärmungsprozess ein Lötprozess ist.
  6. Verfahren (700) nach einem der Ansprüche 1 bis 5, ferner umfassend: Anwenden des ersten Codes zum Erkennen und/oder Korrigieren der Fehler und/oder weiterer Fehler vor dem Anwenden des zweiten Codes zur Fehlerkorrektur.
  7. Verfahren (700) nach einem der Ansprüche 1 bis 6, wobei das Speichern der Prüfeinheiten (106) des zweiten Codes ein Speichern der Prüfeinheiten (106) des zweiten Codes in einem fortlaufenden Bereich der Speichervorrichtung (100, 200) umfasst.
  8. Verfahren (700) nach einem der Ansprüche 1 bis 6, wobei das Speichern der Prüfeinheiten (106) des zweiten Codes ein Speichern der Prüfeinheiten (106) des zweiten Codes in einer Vielzahl von nicht fortlaufenden Speicherzellen umfasst.
  9. Verfahren (700) nach einem der Ansprüche 2 bis 8, wobei das Anwenden des zweiten Codes zur Fehlerkorrektur in mindestens einem Teil der Dateneinheiten (102) und/oder in mindestens einem Teil der Prüfeinheiten des ersten Codes (102) und das Löschen mindestens eines Löschungsteils der Prüfeinheiten (106) des zweiten Codes während einer ersten Aktivierung der Speichervorrichtung nach dem Aussetzen der Speichervorrichtung (100, 200) gegenüber einem datengefährdenden Prozess automatisch ausgeführt werden.
  10. Verfahren (700) nach einem der Ansprüche 1 bis 9, wobei das Anwenden des zweiten Codes zur Fehlerkorrektur in mindestens einem Teil der Dateneinheiten (102) und/oder in mindestens einem Teil der Prüfeinheiten (104) des ersten Codes und das Löschen mindestens eines Löschungsteils der Prüfeinheiten (106) des zweiten Codes manuell ausgelöst werden.
  11. Verfahren (700) nach einem der Ansprüche 1 bis 10, ferner umfassend: erneutes Speichern von Prüfeinheiten (106) des zweiten Codes in einer Teilmenge von Speicherzellen der Speichervorrichtung (100, 200) nach dem anschließenden Verwenden der Speichervorrichtung (100, 200).
  12. Verfahren (700) nach einem der Ansprüche 1 bis 11, wobei der zweite Code ein Blockcode, zum Beispiel ein Paritätscode, ein Hamming-Code, ein gekürzter Hamming-Code, ein Hsiao-Code, ein gekürzter Hsiao-Code, ein t-Bit-Fehler-korrigierender BCH-Code, ein gekürzter t-Bit-Fehler-korrigierender BCH-Code, wobei zum Beispiel t ≥ 2, ein Reed-Muller-Code, ein gekürzter Reed-Muller-Code, ein zyklischer Code, ein gekürzter zyklischer Code, ein Reed-Solomon-Code, ein gekürzter Reed-Solomon-Code, ein modifizierter Reed-Solomon-Code, ein RAID-Code, ein Byte-korrigierender Code oder ein Paritätscode geringer Dichte, ein nichtlinearer Code, ein Faltungscode oder ein Turbo-Code ist.
  13. Verfahren (700) nach einem der Ansprüche 1 bis 12, wobei die Prüfbits (104) des ersten Codes durch den zweiten Code als zusätzliche Datenbits behandelt werden.
  14. Verfahren (700) nach einem der Ansprüche 1 bis 12, wobei die Prüfbits (104) des ersten Codes durch den zweiten Code als Prüfbits behandelt werden.
  15. Verfahren (700) nach einem der Ansprüche 1 bis 14, ferner umfassend: Auffrischen eines weiteren Teils der Dateneinheiten (102) und/oder mindestens eines weiteren Teils der ersten Prüfeinheiten (104) während oder nach dem Anwenden des zweiten Codes zur Fehlerkorrektur in dem mindestens einen Teil der Dateneinheiten (102) und/oder in dem mindestens einen Teil der Prüfeinheiten (104) des ersten Codes.
  16. Speichervorrichtung (100, 200), wobei die Speichervorrichtung (100, 200) so konfiguriert ist, dass sie das Verfahren nach einem der Ansprüche 1 bis 15 ausführt.
  17. Speichervorrichtung (100, 200) nach Anspruch 16, wobei die Speichervorrichtung (100, 200) eine nichtflüchtige Speichervorrichtung ist.
  18. Speichervorrichtung (100, 200) nach Anspruch 16 oder 17, wobei die Speichervorrichtung (100, 200) eine aus einer Gruppe von Speichervorrichtungen (100, 200) ist, wobei die Gruppe umfasst: einen RRAM; einen CBRAM; einen PCRAM; einen MRAM; eine Flash-Speichervorrichtung (100, 200) und einen EEPROM.
  19. Datenspeichervorrichtung, umfassend: die Speichervorrichtung (100, 200) nach einem der Ansprüche 16 bis 18, wobei die Datenspeichervorrichtung eine aus einer Gruppe von Datenspeichervorrichtungen ist, wobei die Gruppe umfasst: eine Festplatte; eine SSD und eine selbständige nichtflüchtige Speichervorrichtung wie einen Speicherstick.
  20. Speichervorrichtungsanordnung (601), umfassend: die Speichervorrichtung (100, 200) nach einem der Ansprüche 16 bis 18 und/oder eine Datenspeichervorrichtung nach Anspruch 19; und eine CPU (1100), die mit der Speichervorrichtung (100, 200) gekoppelt ist.
  21. Speichervorrichtungsanordnung nach Anspruch 20, wobei die Speichervorrichtung (100, 200) ferner einen programmierbaren Teil umfasst, der so konfiguriert ist, dass er das Verfahren nach einem der Ansprüche 1 bis 15 ausführt.
  22. Speichervorrichtungsanordnung nach Anspruch 20, ferner umfassend: einen ROM (1110), der mit der CPU (1100) gekoppelt ist, wobei der ROM (1110) so konfiguriert ist, dass er das Verfahren nach einem der Ansprüche 1 bis 15 ausführt.
DE102016107285.0A 2016-04-20 2016-04-20 Verfahren zur verwendung einer speichervorrichtung, speichervorrichtung und speichervorrichtungsanordnung Active DE102016107285B4 (de)

Priority Applications (3)

Application Number Priority Date Filing Date Title
DE102016107285.0A DE102016107285B4 (de) 2016-04-20 2016-04-20 Verfahren zur verwendung einer speichervorrichtung, speichervorrichtung und speichervorrichtungsanordnung
CN201710253286.8A CN107424651B (zh) 2016-04-20 2017-04-18 使用存储装置的方法、存储装置和存储装置组件
US15/490,950 US10157095B2 (en) 2016-04-20 2017-04-19 Method of using a memory device, memory device and memory device assembly

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102016107285.0A DE102016107285B4 (de) 2016-04-20 2016-04-20 Verfahren zur verwendung einer speichervorrichtung, speichervorrichtung und speichervorrichtungsanordnung

Publications (2)

Publication Number Publication Date
DE102016107285A1 DE102016107285A1 (de) 2017-10-26
DE102016107285B4 true DE102016107285B4 (de) 2019-04-25

Family

ID=60020833

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102016107285.0A Active DE102016107285B4 (de) 2016-04-20 2016-04-20 Verfahren zur verwendung einer speichervorrichtung, speichervorrichtung und speichervorrichtungsanordnung

Country Status (3)

Country Link
US (1) US10157095B2 (de)
CN (1) CN107424651B (de)
DE (1) DE102016107285B4 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111865336B (zh) * 2020-04-24 2021-11-02 北京芯领航通科技有限公司 基于RAM总线的Turbo译码存储方法及装置和译码器
KR102738152B1 (ko) * 2020-05-29 2024-12-05 에스케이하이닉스 주식회사 오류 정정 회로 및 오류 정정 인코딩 방법
US12210750B2 (en) * 2021-08-27 2025-01-28 Micron Technology, Inc. Effective access count based media management
US20240171404A1 (en) * 2022-11-18 2024-05-23 T-Mobile Usa, Inc. Techniques for correcting anomalous activity caused by smart contracts

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080016428A1 (en) 2005-10-24 2008-01-17 Samsung Electronics Co., Ltd. Semiconductor memory device and bit error detection method thereof
US8495465B1 (en) 2009-10-15 2013-07-23 Apple Inc. Error correction coding over multiple memory pages

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7203874B2 (en) * 2003-05-08 2007-04-10 Micron Technology, Inc. Error detection, documentation, and correction in a flash memory device
US7493457B2 (en) * 2004-11-08 2009-02-17 Sandisk Il. Ltd States encoding in multi-bit flash cells for optimizing error rate
US7653862B2 (en) * 2005-06-15 2010-01-26 Hitachi Global Storage Technologies Netherlands B.V. Error detection and correction for encoded data
US7844877B2 (en) * 2005-11-15 2010-11-30 Ramot At Tel Aviv University Ltd. Method and device for multi phase error-correction
US7827472B2 (en) * 2006-05-26 2010-11-02 Her Majesty The Queen In Right Of Canada, As Represented By The Minister Of Industry, Through The Communications Research Centre Canada Puncture-constrained interleaving for concatenated codes
US7958426B2 (en) * 2006-08-25 2011-06-07 Innovation Specialists, Llc Distributed block coding (DBC)
KR101712619B1 (ko) * 2011-01-19 2017-03-06 삼성전자주식회사 에러 정정 코드의 인코딩 및 디코딩 방법
EP2515499B1 (de) * 2011-04-21 2015-10-28 Wibu-Systems AG Verfahren zum Erzeugen eines kryptographischen Schlüssels für ein geschütztes digitales Datenobjekt auf Basis von aktuellen Komponenten eines Rechners
US8886055B1 (en) * 2011-05-24 2014-11-11 Clariphy Communications, Inc. Reduced data rate operation mode for high speed optical communication device
JP2012252558A (ja) * 2011-06-03 2012-12-20 Sony Corp 不揮発性メモリ、メモリコントローラ、不揮発性メモリのアクセス方法、およびプログラム
US8751905B2 (en) * 2011-09-16 2014-06-10 Avalanche Technology, Inc. Memory with on-chip error correction
US8954825B2 (en) * 2012-03-06 2015-02-10 Micron Technology, Inc. Apparatuses and methods including error correction code organization
US8862967B2 (en) * 2012-03-15 2014-10-14 Sandisk Technologies Inc. Statistical distribution based variable-bit error correction coding
US8938656B2 (en) * 2012-09-14 2015-01-20 Sandisk Technologies Inc. Data storage device with intermediate ECC stage
US9116822B2 (en) * 2012-12-07 2015-08-25 Micron Technology, Inc. Stopping criteria for layered iterative error correction
US9124300B2 (en) * 2013-02-28 2015-09-01 Sandisk Technologies Inc. Error correction coding in non-volatile memory
CN104733044B (zh) * 2013-12-24 2018-04-24 群联电子股份有限公司 译码方法、存储器存储装置、存储器控制电路单元
US9348695B2 (en) * 2014-05-21 2016-05-24 Sandisk Technologies Inc. System and method of storing redundancy data

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080016428A1 (en) 2005-10-24 2008-01-17 Samsung Electronics Co., Ltd. Semiconductor memory device and bit error detection method thereof
US8495465B1 (en) 2009-10-15 2013-07-23 Apple Inc. Error correction coding over multiple memory pages

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Lin, S. und Costello, D., „Error Control Coding", zweite Ausgabe, Pearson/Prentice Hall 2004, S. 105-114
Lin, S. und Costello, D., „Error Control Coding", zweite Ausgabe, Pearson/Prentice Hall 2004, S. 871-874
Rao, T., Fujiwara, E. „Error Control Coding for Computer Systems", Prentice Hall, 1989, auf Seite 105 bis 109

Also Published As

Publication number Publication date
DE102016107285A1 (de) 2017-10-26
US20170308431A1 (en) 2017-10-26
US10157095B2 (en) 2018-12-18
CN107424651A (zh) 2017-12-01
CN107424651B (zh) 2020-10-16

Similar Documents

Publication Publication Date Title
DE102015201384B4 (de) Vorrichtung und Verfahren zum Verbessern der Datenspeicherung durch Dateninvertierung
DE10233642B4 (de) Fehlerkorrektur-Kodierung und -Dekodierung in einer Festkörper-Speicherungsvorrichtung
DE102006033649B4 (de) Speicherbauelement und Verfahren zum Konfigurieren eines Speicherbauelements
DE102008030264B4 (de) Verfahren zum Lesen eines Flashspeichers und Speichersystem
DE102005052698A1 (de) Verfahren zur Verarbeitung von nichtflüchtig gespeicherten Daten
DE3853206T2 (de) Verfahren und gerät zur byteschreibfehlerkodierung.
DE102016107285B4 (de) Verfahren zur verwendung einer speichervorrichtung, speichervorrichtung und speichervorrichtungsanordnung
DE102015113414B4 (de) Fehlerkorrektur unter Verwendung von WOM-Codes
DE102013020712B4 (de) Techniken zum Speichern von Bits in Speicherzellen mit Hängenbleiben-auf-0-oder-1-Fehlern
DE102007016460A1 (de) Nichtflüchtiges Speicherbauelement, nichtflüchtiges Speichersystem und Leseverfahren für ein nichtflüchtiges Speicherbauelement
DE102008030858A1 (de) Speicher mit dynamischer Redundanzkonfigurierung
DE112010003645T5 (de) Festkörper-Speichersystem mit Parallelem Zugriff aus Mehreren Flash/PCM-Einrichtungen
CN114783502A (zh) 用于筛选存储器阵列中的弱比特的方法
DE102015215401A1 (de) Speichervorrichtung und Verfahren zum Korrigieren einer gespeicherten Bitfolge
DE102013016681A1 (de) Codieren und Decodieren von Daten zum Vornehmen von Anpassungen für Speicherzellen mit Haftfehlern
DE102016104012A1 (de) Verarbeitung eines Datenworts
DE69732637T2 (de) Selbsttest und Korrektur von Ladungsverlustfehlern in einem Sektorenlöschbaren und-programmierbaren Flashspeicher
DE102016115177B4 (de) Verfahren zum Betreiben einer Speichervorrichtung und Speichervorrichtung
DE112019001968B4 (de) Gemeinsame korrekturlogik für hohe und niedrige zufalls-bitfehlerraten
DE112020003961T5 (de) Vorhersagende speicherverwaltung
DE102014104717B4 (de) Verfahren und Vorrichtung zur Datenerneuerung für eine Erhöhung der Zuverlässigkeit von Flashspeichern
DE102018219877A1 (de) Vorrichtung und Verfahren zum Erzeugen einer Fehlerkorrekturinformation
WO2006089943A1 (de) Verfahren zur datensicherung und gerät zu dessen ausführung
DE102016101543A1 (de) Verfahren zum Betreiben einer Speichervorrichtung
DE10221935B4 (de) Verfahren zur Erkennung und Korrektur von Bitfehlern

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R082 Change of representative