DE102019126175B4 - Erkennung von fehlern in mehrwertigen speichern - Google Patents

Erkennung von fehlern in mehrwertigen speichern Download PDF

Info

Publication number
DE102019126175B4
DE102019126175B4 DE102019126175.9A DE102019126175A DE102019126175B4 DE 102019126175 B4 DE102019126175 B4 DE 102019126175B4 DE 102019126175 A DE102019126175 A DE 102019126175A DE 102019126175 B4 DE102019126175 B4 DE 102019126175B4
Authority
DE
Germany
Prior art keywords
charge
state
code
address
tuple
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
DE102019126175.9A
Other languages
English (en)
Other versions
DE102019126175A1 (de
Inventor
Thomas Kern
Michael Gössel
Alexander Klockmann
Georg Georgakos
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 DE102019126175.9A priority Critical patent/DE102019126175B4/de
Publication of DE102019126175A1 publication Critical patent/DE102019126175A1/de
Application granted granted Critical
Publication of DE102019126175B4 publication Critical patent/DE102019126175B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor

Abstract

Verfahren zur Verarbeitung einer Eingangsbitfolge, mit:- Kodieren der Eingangsbitfolge in eine Ausgangsbitfolge mittels Kodierung,- wobei die Bitfolge mindestens ein Tupel aufweist, wobei jedes Tupel mindestens zwei binäre Werte umfasst,- wobei jedem Tupel ein Ladungszustand einer mehrwertigen Speicherzelle eines Speichers entspricht,- wobei ein Wechsel von einem ersten Ladungszustand in einen zweiten Ladungszustand, der, bezogen auf einen neutralen Ladungszustand, betragsmäßig größer ist, einen zusätzlichen binären Wert 1 in dem Tupel bedingt,- wobei der Ladungszustand derart bestimmt ist, dass ein Übergang von dem binären Wert 1 in den binären Wert 0 mittels eines unidirektionalen Fehlercodes detektierbar ist,- Speichern des zu dem Tupel zugehörigen Ladungszustands in der Speicherzelle,- wobei ein Schwellwert vorgesehen ist, um eine Symmetrie um den neutralen Ladungszustand aufzulösen und somit eine Unidirektionalität für den unidirektionalen Fehlercode sicherzustellen.

Description

  • Mehrwertige Speicher (Multi-Level Memories) sind bekannt als Speicher, deren jeweilige Speicherzelle in der Lage ist mehr als zwei Zustände zu speichern.
  • KOTAKI, S; et al.: „A Class of q-Ary Unidirectional Error Correction Codes for MLC Flash Memories“, IEEE 2013, ISBN 978-0-7695-5130-2] beschreibt die Nutzung von Fehlerkorrekturcodes zur Erhöhung der Zuverlässigkeit. Dabei wird insbesondere auf die Korrektur von unidirektionalen Fehlern in sogenannten q-ary Symbolen abgestellt.
  • Es gibt eine Vielzahl von Anwendungen für mehrwertige Speicher. Beispielsweise kann während einer Software-Aktualisierung (Update) der mehrwertige Speicher zur temporären Zwischenspeicherung genutzt werden. Ist die Software-Aktualisierung abgeschlossen, kann der mehrwertige Speicher wieder als binärer Speicher verwendet werden. Dies ermöglicht die Einsparung zusätzlicher Speicherhardware, die nur als Zwischenspeicher während des Updates dient. Mit anderen Worten: Es muss kein gesonderter Speicher physisch vorgehalten werden, der nur während der Software-Aktualisierung genutzt wird. Die Software-Aktualisierung kann beispielsweise zumindest teilweise über eine drahtlose Schnittstelle, insbesondere eine Mobilfunkschnittstelle, initiiert und durchgeführt werden. Dies wird auch als „Software-over-the-Air“ (SOTA) oder „Over-the-air-Update“ bezeichnet und beispielsweise im Automobilumfeld eingesetzt.
  • Im Rahmen vorgegebener Sicherheitsanforderungen sollen Fehler auch für den mehrwertigen Speicher erkannt und/oder korrigiert werden.
  • Es besteht somit die Aufgabe, bestehende Lösungen zu verbessern und insbesondere eine effiziente Fehlererkennung und/oder Fehlerkorrektur für mehrwertige Speicher zu ermöglichen.
  • Diese Aufgabe wird gemäß den Merkmalen der unabhängigen Ansprüche gelöst. Bevorzugte Ausführungsformen sind insbesondere den abhängigen Ansprüchen entnehmbar.
  • Zur Lösung der Aufgabe wird ein Verfahren angegeben zur Verarbeitung einer Eingangsbitfolge, mit:
    • - Kodieren der Eingangsbitfolge in eine Ausgangsbitfolge mittels Kodierung,
      • - wobei die Bitfolge mindestens ein Tupel aufweist, wobei jedes Tupel mindestens zwei binäre Werte umfasst,
      • - wobei jedem Tupel ein Ladungszustand einer mehrwertigen Speicherzelle eines Speichers entspricht,
      • - wobei ein Wechsel von einem ersten Ladungszustand in einen zweiten Ladungszustand, der, bezogen auf einen neutralen Ladungszustand, betragsmäßig größer ist, einen zusätzlichen binären Wert 1 in dem Tupel bedingt,
      • - wobei der Ladungszustand derart bestimmt ist, dass ein Übergang von dem binären Wert 1 in den binären Wert 0 mittels eines unidirektionalen Fehlercodes detektierbar ist,
    • - Speichern des zu dem Tupel zugehörigen Ladungszustands in der Speicherzelle.
  • Der Ladungszustand ist insbesondere eine Ladungsverteilung, d.h. ein Bereich von möglichen Ladungen, der dem Ladungszustand zugeordnet ist. Bei den Speicherzellen des Speichers handelt es sich um mehrwertige Speicherzellen. Somit kann also die Bitfolge in Tupel zerlegt werden und jedes Tupel wird gemäß dem diesem Tupel zugehörigen Ladungszustand in je eine Speicherzelle des Speichers geschrieben. Durch die Zuordnung der Ladungszustände zu binären Werten kann mittels des unidirektionalen Fehlercodes eine Fehlererkennung sichergestellt werden.
  • Bei dem neutralen Ladungszustand kann es sich um eine physikalische Größe der Speicherzelle handeln, z.B. einer elektrischen Ladung, die die Speicherzelle anstrebt, wenn sie keine Ladungserneuerung (Refresh) erfährt.
  • Hierbei ist es von Vorteil, dass eine Veränderung der binären Werte in dem Tupel aufgrund eines Fehlers nur von dem Wert 1 in den Wert 0 erfolgt und somit in Richtung eines betragsmäßig niedrigeren Ladungszustands. Diese Veränderung kann mittels des unidirektionalen Fehlercodes detektiert werden.
  • Hier ist beispielhaft der binäre Wert 1 angegeben. Entsprechend kann stattdessen auch ein binärer Wert 0 vorgesehen sein, sofern der Übergang von dem Wert 0 in den Wert 1 von dem unidirektionalen Fehlercode detektierbar ist. In diesem Fall ist ein binärer Wert 0 in dem Tupel vorgesehen für den betragsmäßig größeren Ladungszustand.
  • Grundsätzlich gilt, dass der binäre Wert 1 eine Bezeichnung für einen ersten binären Wert und der binäre Wert 0 eine Bezeichnung für einen zweiten - dazu inversen - binären Wert darstellt.
  • Ein Fehlercode ist ein Fehler-erkennenden und/oder ein Fehler-korrigierender Code.
  • Der unidirektionale Fehlercode ist vorzugsweise ein Fehlercode, der einen asymmetrischen Fehler erkennen und/oder korrigieren kann.
  • Es ist eine Weiterbildung, dass ein Schwellwert vorgesehen ist, um eine Symmetrie um den neutralen Ladungszustand aufzulösen und somit eine Unidirektionalität für den unidirektionalen Fehlercode sicherzustellen.
  • Der Schwellenwert kann beispielsweise zwischen dem neutralen Zustand und einer ersten Ladungsverteilung positioniert sein, wobei die erste Ladungsverteilung ein erstes Vorzeichen aufweist und eine zweite Ladungsverteilung ein zweites (von der ersten Ladungsverteilung verschiedenes) Vorzeichen aufweist. Die zweite Ladungsverteilung hat den geringsten Abstand im Vergleich zu allen Ladungsverteilungen mit dem gleichen Vorzeichen von dem neutralen Zustand.
  • Es ist eine Weiterbildung, dass der Schwellwert zwischen dem Ladungszustand, bei dem das Tupel nur binäre Werte 0 aufweist, und dem Ladungszustand, der betragsmäßig diesem Ladungszustand am nächsten ist, dessen Ladungszustand aber ein inverses Vorzeichen aufweist, angeordnet ist.
  • Es ist eine Weiterbildung, dass der Ladungszustand anhand einer Einsatzspannung der Speicherzelle und/oder anhand eines Stroms durch die Speicherzelle bestimmt wird.
  • Es ist eine Weiterbildung, dass
    • - das Tupel zwei binäre Werte umfasst,
    • - der neutrale Ladungszustand zwischen Ladungszuständen angeordnet ist, denen die Tupel mit den binären Werten 00, 01 oder die Tupel mit den binären Werten 00, 10 zugeordnet sind,
    • - der Schwellwert zur Auflösung der Symmetrie um den neutralen Ladungszustand
      • - zwischen dem Ladungszustand, der dem Tupel 01 zugeordnet ist und dem neutralen Ladungszustand angeordnet ist für den Fall, dass der neutrale Ladungszustand zwischen den Ladungszuständen angeordnet ist, denen die Tupel 00 und 01 zugeordnet sind und
      • - zwischen dem Ladungszustand, der dem Tupel 10 zugeordnet ist und dem neutralen Ladungszustand angeordnet ist für den Fall, dass der neutrale Ladungszustand zwischen den Ladungszuständen angeordnet ist, denen die Tupel 00 und 10 zugeordnet sind.
  • Es ist eine Weiterbildung, dass die Ladungszustände positiv oder negativ in Bezug auf den neutralen Ladungszustand sind, wobei bei vier Ladungszuständen, die auf vier Tupel mit je zwei binären Werten abgebildet werden, eine der folgenden Möglichkeiten genutzt wird:
    • Möglichkeit 1: LV01 < LVn < LV00 < LV10 < LV11,
    • Möglichkeit 2: LV10 < LVn < LV00 < LV01 < LV11,
    • Möglichkeit 3: LV11 < LV10 < LVn < LV00 < LV01,
    • Möglichkeit 4: LV11 < LV01 < LVn < LV00 < LV10,
    • Möglichkeit 5: LV11 < LV10 < LV00 < LVn < LV01,
    • Möglichkeit 6: LV11 < LV01 < LV00 < LVn < LV10,
    • Möglichkeit 7: LV01 < LV00 < LVn < LV10 < LV11,
    • Möglichkeit 8: LV10 < LV00 < LVn < LV01 < LV11,
    wobei LVij der Ladungszustand, der auf die binären Werte ij (mit i, j ∈ {0,1}) abgebildet wird, und LVn den neutralen Ladungszustand bezeichnen.
  • Somit ist bei vier Ladungszuständen, die auf vier Tupel mit je zwei binären Werten abgebildet werden, zwischen dem neutralen Ladungszustand und dem mit 00 belegten Ladungszustand kein weiterer Ladungszustand positioniert.
  • Entsprechend den obigen Ausführungen gilt auch der inverse Fall: Dann sind alle Nullen mit Einsen und alle Einsen mit Nullen zu vertauschen.
  • Es ist eine Weiterbildung, dass mittels des unidirektionalen Fehlercodes Prüfbits bestimmt werden und in den Speicherzellen gespeichert werden.
  • Es ist eine Weiterbildung, dass der unidirektionale Fehlercode ein asymmetrischer Fehlercode, insbesondere ein Berger-Code oder ein Bose-Lin-Code ist.
  • Es ist eine Weiterbildung, dass eine Adressinformation bestimmt wird und zusätzlich in den Tupeln binärer Werte abgespeichert wird.
  • Es ist eine Weiterbildung, dass die Adressinformation Adressbits oder aus Adressbits abgeleitete Bits umfasst.
  • Es ist eine Weiterbildung, dass erste Prüfbits bestimmt werden und in den Tupeln binärer Werte abgespeichert werden.
  • Es ist eine Weiterbildung, dass die ersten Prüfbits basierend auf Datenbits bestimmt werden und die Datenbits sowie die ersten Prüfbits in den Tupeln binärer Werte gespeichert werden.
  • Es ist eine Weiterbildung, dass die ersten Prüfbits bestimmt werden basierend auf
    • - zweiten Prüfbits, die basierend auf den Datenbits bestimmt werden und
    • - der Adressinformation.
  • Es ist eine Weiterbildung, dass die zweiten Prüfbits mittels des unidirektionalen Fehlercodes bestimmt werden.
  • Es ist eine Weiterbildung, dass die ersten Prüfbits unter Verwendung einer Summe oder der Differenz der zweiten Prüfbits und der Adressinformation bestimmt werden.
  • Auch wird ein Verfahren vorgeschlagen zum Erkennen eines Fehlers in einer aus einem Speicher gelesenen Bitfolge, wobei die Bitfolge wie hierin beschrieben gespeichert wurde.
  • Auch wird ein Verfahren vorgeschlagen zur Erkennung eines Adressfehlers beim Lesen einer Bitfolge aus einem Speicher, wobei der Speicher mehrwertige Speicherzellen umfasst,
    • - bei dem geprüft wird, ob die Bitfolge mit der anliegenden Leseadresse ein Codewort eines unidirektionalen Fehlercodes mit einbezogener Adresseninformation ist,
    • - bei dem dann, wenn ein Adressenfehler vorliegt und kein weiterer Fehler vorliegt und die Bitfolge in Verbindung mit der Leseadresse kein Codewort des unidirektionalen Fehlercodes mit einbezogener Adresseninformation ist, ein Adressenfehler erkannt wird.
  • Weiterhin wird eine Vorrichtung angegeben zur Verarbeitung einer Eingangsbitfolge mit einer Verarbeitungseinheit, die eingerichtet ist
    • - zum Kodieren der Eingangsbitfolge in eine Ausgangsbitfolge mittels Kodierung,
      • - wobei die Bitfolge mindestens ein Tupel aufweist, wobei jedes Tupel mindestens zwei binäre Werte umfasst,
      • - wobei jedem Tupel ein Ladungszustand einer mehrwertigen Speicherzelle eines Speichers entspricht,
      • - wobei ein Wechsel von einem ersten Ladungszustand in einen zweiten Ladungszustand, der, bezogen auf einen neutralen Ladungszustand, betragsmäßig größer ist, einen zusätzlichen binären Wert 1 in dem Tupel bedingt,
      • - wobei der Ladungszustand derart bestimmt ist, dass ein Übergang von dem binären Wert 1 in den binären Wert 0 mittels eines unidirektionalen Fehlercodes detektierbar ist,
    • - zum Speichern des zu dem Tupel zugehörigen Ladungszustands in der Speicherzelle.
  • Die hier genannte Verarbeitungseinheit kann insbesondere als eine Prozessoreinheit und/oder eine zumindest teilweise fest verdrahtete oder logische Schaltungsanordnung ausgeführt sein, die beispielsweise derart eingerichtet ist, dass das Verfahren wie hierin beschrieben durchführbar ist. Besagte Verarbeitungseinheit kann jede Art von Prozessor oder Rechner oder Computer mit entsprechend notwendiger Peripherie (Speicher, Input/Output-Schnittstellen, Ein-Ausgabe-Geräte, etc.) sein oder umfassen.
  • Insbesondere ist die Verarbeitungseinheit eingerichtet, die Schritte des hier beschriebenen Verfahrens durchführen zu können.
  • Es ist eine Weiterbildung, dass die Vorrichtung derart eingerichtet ist, dass eine Bitfolge aus den Speicher gelesen wird und geprüft wird, ob ein Fehler in der gelesen Bitfolge vorliegt.
  • Zudem wird ein System vorgeschlagen umfassend mindestens eine der hierin beschriebenen Vorrichtungen.
  • Ferner wird ein Computerprogrammprodukt angegeben, das direkt in einen Speicher eines digitalen Computers ladbar ist, umfassend Programmcodeteile, die dazu geeignet sind, Schritte des hier beschriebenen Verfahrens durchzuführen.
  • Weiterhin wird das oben genannte Problem gelöst mittels eines computerlesbaren Speichermediums, z.B. eines beliebigen Speichers, umfassend von einem Computer ausführbare Anweisungen (z.B. in Form von Programmcode), die dazu geeignet sind, dass der Computer Schritte des hier beschriebenen Verfahrens durchführt.
  • Weiterhin sein angemerkt, dass der Begriff Codewort eine gültige Belegung von Bits gemäß einem vorgegebenen Code bezeichnet. Damit erfüllt das Codewort die Eigenschaften des Codes.
  • Der Code (auch bezeichnet als Fehlercode) kann ein Fehler-erkennender und/oder ein Fehler-korrigierender Code sein.
  • Der Speicher kann einen der folgenden Speicher umfassen: Floating-Gate-Zellen, PCRAM, RRAM, MRAM, MONOS-Bauelemente, Nano-Kristall-Zellen, ROM.
  • Die vorstehenden Erläuterungen betreffend das Verfahren gelten für die Vorrichtung entsprechend und umgekehrt.
  • Die oben beschriebenen Eigenschaften, Merkmale und Vorteile dieser Erfindung sowie die Art und Weise, wie diese erreicht werden, werden nachfolgend beschrieben im Zusammenhang mit einer schematischen Beschreibung von Ausführungsbeispielen, die im Zusammenhang mit den Zeichnungen näher erläutert werden. Dabei können zur Übersichtlichkeit gleiche oder gleichwirkende Elemente mit gleichen Bezugszeichen versehen sein.
  • Es zeigen:
    • 1 eine schematische Darstellung mit vier Ladungszuständen einer Speicherzelle, die in Form von Ladungsverteilungen dargestellt sind;
    • 2 ein mögliches Beispiel für eine Codierung der vier Ladungszustände;
    • 3 ein alternatives Beispiel für eine Codierung der vier Ladungszustände;
    • 4 ein weiteres Beispiel für eine Codierung der vier Ladungszustände;
    • 5 noch ein Beispiel für eine Codierung der vier Ladungszustände;
    • 6 ein beispielhaftes Diagramm, das ein Encodieren und Speichern veranschaulicht;
    • 7 ein beispielhaftes Diagramm zur Visualisierung der Decodierung;
    • 8 ein weiteres beispielhaftes Diagramm zur Fehlererkennung ohne die Berücksichtigung von Adressfehlern.
  • 1 zeigt eine schematische Darstellung mit Ladungszuständen 101, 102, 103 und 104, die in Form von Ladungsverteilungen dargestellt sind. Die Speicherzelle des mehrwertigen Speichers ist in der Lage, jeden der Ladungszustände 101 bis 104 anzunehmen. Auf der x-Achse ist eine Einsatzspannung VT der Speicherzelle aufgetragen, auf der y-Achse die statistischen Häufigkeiten. Weiterhin ist ein neutraler Ladungszustand 105 gezeigt, der mit einer entsprechenden Einsatzspannung assoziiert ist und als neutraler Zustand der Speicherzelle bezeichnet werden kann.
  • Die Speicherzelle kann beispielsweise entsprechend einer Programmierung oder einem Löschvorgang konditioniert werden, so dass sie einen der Ladungszustände 101 bis 104 annimmt. In dem hier gezeigten Beispiel ist der Zustand 101 ein gelöschter Zustand, die Ladung ist niedriger als die Ladung in dem neutralen Ladungszustand. Die Zustände 102 bis 104 weisen einen Ladungszustand auf, der größer (positiver) ist als der neutrale Ladungszustand; insgesamt gilt L V 101 < L V n < L V 102 < L V 103 < L V 104 ,
    Figure DE102019126175B4_0001
    wobei LV den Ladungszustand und der Index den in 1 gezeigten Ladungszustand bezeichnen. LVn bezeichnet den neutralen Ladungszustand.
  • Es wird nun vorgeschlagen, dass den Ladungszuständen Bitkombinationen (auch bezeichnet als Tupel von Bits) zugewiesen werden, so dass ein Fehler mittels eines unidirektionalen Fehlercodes detektierbar ist.
  • In dem in 1 gezeigten Beispiel kann die mehrwertige Speicherzelle vier Ladungszustände 101 bis 104 annehmen. Bei einem Ladungsverlust bewegen sich die Ladungszustände in Richtung des neutralen Zustands LVn. Somit findet die Migration zwischen den Ladungszuständen nur in einer Richtung, d.h. in Richtung des neutralen Ladungszustands, statt. Bei einem Ladungsverlust kann sowohl positive als auch negative Ladung verloren gehen. Dies ist in 1 durch die Pfeile 111 bis 114 angedeutet.
  • Die vier Ladungszustände 101 bis 104 der Speicherzelle können mit zwei Bits codiert werden. Die Codierung erfolgt zweckmäßig dergestalt, dass ein unidirektionaler Fehlercode einen Fehler erkennen kann.
  • Die Ladungszustände können voneinander unterschieden werden, indem zwischen den Ladungsverteilungen weitere Schwellwerte angeordnet sind, die einen Vergleich zwischen den Ladungsverteilungen und eine Unterscheidung solcher Ladungszustände, die sich gemeinsam auf einer Seite des neutralen Ladungszustands befinden, ermöglichen.
  • 2 zeigt ein mögliches Beispiel für eine Codierung der vier Ladungszustände 101 bis 104 wie folgt:
    • - Ladungszustand 101: binärer Wert 01,
    • - Ladungszustand 102: binärer Wert 00,
    • - Ladungszustand 103: binärer Wert 10 und
    • - Ladungszustand 104: binärer Wert 11.
  • Es gilt: L V 01 < L V n < L V 00 < L V 10 < L V 11 ,
    Figure DE102019126175B4_0002
    wobei LVij den Ladungszustand, der auf die binären Werte ij (mit i, j ∈ {0,1}) abgebildet wird, und LVn den neutralen Ladungszustand bezeichnen.
  • Weiterhin ist ein Schwellwert VTref zwischen dem neutralen Ladungszustand und dem Ladungszustand, der einen geringen betragsmäßigen Abstand zu dem neutralen Ladungszustand LVn aufweist und von dem binären Zustand 00 verschieden ist, angeordnet. In dem Beispiel der 2 ist dies der Ladungszustand 101, der den binären Wert 01 aufweist.
  • Der Schwellwert VTref ist geeignet, eine Symmetrie um den neutralen Ladungszustand aufzulösen. In dem in 2 gezeigten Beispiel stehen sich die Verteilungen der Ladungszustände 101 und 102 im Wesentlichen symmetrisch gegenüber. In diesem Fall kann die Symmetrie so gedeutet werden, dass die betragsmäßigen Ladungszustände der Verteilungen auf beiden Seiten um den neutralen Ladungszustand eine teilweise Überlappung aufweisen. Bei der Symmetrie wird beispielsweise derjenige Ladungszustand betrachtet, dessen Tupel nur binäre Werte 0 aufweist und der diesem Ladungszustand im Wesentlichen in Bezug auf den neutralen Ladungszustand gegenüberliegende Ladungszustand. Der neutrale Ladungszustand kann im Bezug auf diese beiden gegenüberliegenden Ladungszustände in der Mitte oder in einem Bereich zwischen den Ladungsverteilungen dieser Ladungszustände angeordnet sein.
  • 3 zeigt ein weiteres Beispiel für eine Codierung der vier Ladungszustände 101 bis 104 wie folgt:
    • - Ladungszustand 101: binärer Wert 11,
    • - Ladungszustand 102: binärer Wert 10,
    • - Ladungszustand 103: binärer Wert 00 und
    • - Ladungszustand 104: binärer Wert 01.
  • Es gilt: L V 11 < L V 10 < L V n < L V 00 < L V 01 .
    Figure DE102019126175B4_0003
  • In dem Beispiel der 3 ist der Schwellwert VTref gemäß obiger Regel zwischen dem Ladungszustand 102 (mit dem binären Wert 10) und dem neutralen Ladungszustand LVn angeordnet.
  • 4 zeigt ein Beispiel, bei dem die Codierung der vier Ladungszustände 101 bis 104 entsprechend dem in 3 gezeigten Beispiel erfolgt. Für die Platzierung des neutralen Ladungszustands LVn gilt: L V 11 < L V 10 < L V 00 < L V n < L V 01 .
    Figure DE102019126175B4_0004
  • In dem Beispiel der 4 ist der Schwellwert VTref gemäß obiger Regel zwischen dem Ladungszustand 104 (mit dem binären Wert 01) und dem neutralen Ladungszustand LVn angeordnet.
  • 5 zeigt ein Beispiel, bei dem die Codierung der vier Ladungszustände 101 bis 104 entsprechend dem in 2 gezeigten Beispiel erfolgt. Für die Platzierung des neutralen Ladungszustands LVn gilt: L V 01 < L V 00 < L V n < L V 10 < L V 11 .
    Figure DE102019126175B4_0005
  • In dem Beispiel der 5 ist der Schwellwert VTref gemäß obiger Regel zwischen dem Ladungszustand 103 (mit dem binären Wert 10) und dem neutralen Ladungszustand LVn angeordnet.
  • Hierbei sei angemerkt, dass es weitere Beispiele gibt, den vier Ladungszuständen 101 bis 104 binäre Werte zuzuweisen, die die Bedingung erfüllen, dass die Fehlererkennung mittels unidirektionalem Fehlercode ermöglicht wird. Beispielsweise können die Werte 01 und 10 in den gezeigten Beispielen vertauscht werden.
  • Die Verwendung der vier Ladungszustände ist lediglich als Beispiel zu sehen. So können grundsätzlich mehr als zwei und auch mehr als vier Ladungszustände mittels des unidirektionalen Codes (wobei ein Tupel dann gegebenenfalls mehr als zwei Bits aufweist, um die Anzahl der möglichen Ladungszustände abbilden zu können) codiert werden.
  • Durch den unidirektionalen Code ist es möglich, unidirektionale Bitfehler, bei denen entweder der Wert 1 in den Wert 0 verfälscht wird oder umgekehrt, zu erkennen.
  • Physikalische Fehler, die Ladungsverlusten entsprechen, sollen somit als unidirektionale Fehler erkannt werden.
  • Beispielhafte Verwendung des Berger-Codes
  • Nachfolgend werden die folgenden Bezeichnungen verwendet:
    • - Datenbits: x = x1, ..., xn,
    • - Adressbits: a = a1, ..., am,
    • - Prüfbits des Berger-Codes: c B e r g e r = c 1 , , c l = i = 1 n x ¯ i ( a ) ,
      Figure DE102019126175B4_0006
    • - Prüfbits des Fehler-korrigierenden Codes, z.B. BCH-Code: dBCH = d1, ..., dk.
  • Der Berger-Code ist als Fehlercode beispielsweise bekannt aus [Berger, J.M.: Information and Control, Vol.4, Seiten 68 bis 73, 1961] oder [Freiman, C.V.: Information and Control, Vol.5, Seiten 64 bis 71, 1962].
  • Der Berger-Code ist ein Fehlererkennungscode. Bitfehler, bei denen mehr Einsen in Nullen als Nullen in Einsen verfälscht sind, und Bitfehler, bei denen mehr Nullen in Einsen als Einsen in Nullen verfälscht sind, werden unter Verwendung des Berger-Codes sicher erkannt. Insbesondere werden sogenannte unidirektionale Fehler, bei denen nur Einsen in Nullen verfälscht sind und keine Nullen in Einsen verfälscht sind (oder Fehler bei denen nur Nullen in Einsen und keine Einsen in Nullen verfälscht sind), erkannt.
  • Fehler, bei denen nur Einsen in Nullen verfälscht sind, können als asymmetrische Fehler bezeichnet werden. Ebenso können Fehler, bei denen nur Nullen in Einsen verfälscht sind, als asymmetrische Fehler bezeichnet werden.
  • Beschreibung ohne Fehlerkorrektur
  • Beispielhaft wird zunächst der Fall betrachtet, dass keine Fehlerkorrektur erfolgt. Prüfbits des Berger-Codes mit einbezogener Adressinformation sind bestimmt gemäß c ( a ) B e r g e r = c B e r g e r + A ( a ) = i = 1 n x ¯ i ( a ) + A ( a ) ,
    Figure DE102019126175B4_0007
    wobei
    • - x(a) = x1, ..., xn Datenbits, die mit der Adresse a adressiert werden,
    • - A(a) einen aus der Adresse a gebildeten arithmetischen Wert,
    • - c(a)Berger die Prüfbits des Berger-Codes mit einbezogener Adressinformation, die an der Adresse a gespeichert sind, und
    • - x̅i(a) die invertierten Datenbits
    bezeichnen.
  • Der aus der Adresse a gebildete arithmetische Wert A(a) kann beispielsweise einer der folgenden Werte sein:
    • - A(a) = a Dabei ergibt sich das Problem: Ist n = 256, gilt i = 1 256 x ¯ i 256
      Figure DE102019126175B4_0008
      und diese Summe kann als 8-Bit-Zahl dargestellt werden. Beträgt die Adressenwortbreite beispielsweise m = 20, ist A(a) = a eine 20-Bit-Zahl und es werden wegen eines möglichen Überlaufs der 20-Bit-Zahl 21 Prüfbits cBerger benötigt. Es sind somit 21 Bit für die Prüfbits des Berger-Codes erforderlich. In diesem Fall werden, wenn nur entweder Speicherzellenfehler oder nur Adressfehler auftreten, 100% der Datenbitfehler und Prüfbitfehler und 100 % der Adressfehler erkannt. Treten sowohl Speicherzellenfehler als auch Adressfehler gleichzeitig auf, können (wenige) Fehler maskiert werden und somit unerkannt bleiben.
    • - A(a) = M·a M ist eine binäre (L,n)-Matrix, wobei L eine Wortbreite oder eine Anzahl der Bits von A = A1, ..., AL ist. Ist L beispielsweise gleich 7, wird die 20-Bit-Adresse a = [a1, ..., a20] auf 7 Bit A = A 1 , , A 7 = M a = M [ a 1 , , a 20 ]
      Figure DE102019126175B4_0009
      kompaktiert. Dabei sind sowohl A als auch a als Spaltenvektoren zu interpretieren. Die Matrix M ist eine binäre (7,20)-Matrix mit 7 Spalten und 20 Zeilen. Es sei angemerkt, dass die Kompaktierung eine Reduzierung der Adressbits bezeichnet. Beispielsweise kann durch eine lineare oder nichtlineare Abbildung die Menge der Adressbits auf eine kompaktierte Menge von Adressbits reduziert werden. Dabei kann beispielsweise M eine H-Matrix eines Hsiao-Codes sein. Adressfehler werden mit einer Wahrscheinlichkeit von ca. 99% erkannt. Es sind 9 Prüfbits für den Berger-Code mit einbezogener Adressinformation erforderlich.
    • - Es ist eine Option, dass nicht alle Adressbits in die Kompaktierung einbezogen werden. Beispielsweise kann eine Anzahl von Adressbits verwendet werden, ein Modul oder einen Speicherbaustein auszuwählen, in dem die entsprechenden Datenbits und Prüfbits gespeichert sind. Die Adresse in dem Speicherbaustein kann so durch lediglich einen Teil der Adressbits bestimmt sein, die nicht zur Auswahl des Speicherbausteins genutzt werden. In diesem Beispiel werden nur diejenigen Adressbits in die Fehlererkennung einbezogen, die als Adressbits an dem Speichermodul anliegen (und nicht zur Selektion des Moduls genutzt wurden).
  • Die Operation „+“ in der Gleichung (1) ist eine Volladdition. Alternativ könnte auch eine Subtraktion oder eine Addition bzw. Subtraktion jeweils mit einer Konstanten, durchgeführt werden.
  • Beschreibung der Adressfehlererkennung
  • Die Adresse a wird an den Speicher angelegt. Nun kann im Speicher (intern) ein Adressfehler auftreten, durch den die Adresse a in eine fehlerhafte Adresse b geändert wird. Also wird, obwohl beabsichtigt ist, auf die Adresse a des Speichers zuzugreifen, aufgrund des Fehlers tatsächlich eine Leseaktion an der Adresse b durchgeführt. Diese Leseaktion liefert als Ergebnis des Speicherzugriffs: x ( b ) , c ( b ) B e r g e r = x 1 ( b ) , , x n ( b ) , c 1 ( b ) , , c l ( b )
    Figure DE102019126175B4_0010
    mit c ( b ) B e r g e r = c 1 ( b ) , , c l ( b ) = i = 1 n x ¯ i ( b ) + A ( b ) .
    Figure DE102019126175B4_0011
  • Da eigentlich der Lesevorgang auf die Adresse a gerichtet war, wird i = 1 n x ¯ i ( b ) + A ( a )
    Figure DE102019126175B4_0012
    gebildet und geprüft, ob i = 1 n x ¯ i ( b ) + A ( a ) = = i = 1 n x ¯ i ( b ) + A ( b )
    Figure DE102019126175B4_0013
    gilt.
  • Ist A(a) ≠ A(b), wird der Adressfehler erkannt. Ist hingegen A(a) =A(b), wird der Adressfehler nicht erkannt.
  • Gelten A ( a ) = a , A ( b ) = b
    Figure DE102019126175B4_0014
    wird jeder Adressfehler erkannt.
  • Ist L = 7 und damit A = A1, ..., A7, dann gibt es 27 = 128 verschiedene mögliche Werte kompaktierter Adressbits A1, ..., A7. Auf einen dieser Werte wird die korrekte Adresse a abgebildet. Tritt ein Adressenfehler auf, der einer fehlerhaften Adresse a' entspricht, wird die fehlerhafte Adresse a' auf einen dieser 128 Adresswerte abgebildet. Die fehlerhafte Adresse a' wird dann nicht als fehlerhaft erkannt, wenn sie auf den Adresswert abgebildet wird, auf den auch der korrekte Adresswert a abgebildet wird. Die Wahrscheinlichkeit, dass ein solcher Fall eintritt, beträgt 1 2 7 99 % ,
    Figure DE102019126175B4_0015
    vorausgesetzt, dass alle Adressfehler mit der gleichen Wahrscheinlichkeit auftreten.
  • Kombination mit Fehlerkorrektur
  • Im Folgenden werden ein Fehler-erkennender Berger-Code mit einbezogener Adresseninformation C = CBerger mit Prüfbits c(a)Berger und ein Fehler-korrigierender BCH-Code D = D B C H mit Pr u ¨ fbits d B C H = d 1 , , d k
    Figure DE102019126175B4_0016
    verwendet. Als Beispiel wird ein 2-Bitfehler-korrigierender BCH-Code genutzt. Analog kann entsprechend ein anderer Fehler-korrigierender Code verwendet werden.
  • Die Datenbits x = x1, ..., xn werden zunächst um Prüfbits des BCH-Codes d1, ..., dk ergänzt.
  • Die Prüfbits des Berger-Codes mit einbezogener Adressinformation werden beispielsweise gemäß der Beziehung c ( a ) = i = 1 n x ¯ ( a ) i + j = 1 k d ¯ j + A ( a )
    Figure DE102019126175B4_0017
    gebildet. Der BCH-Code ist somit der innere Code, der Berger-Code mit einbezogener Adressinformation ist der äußere Code. Die auftretenden Fehler in den Datenbits und den Prüfbits sind unidirektional bzw. asymmetrisch.
  • 1-Bitfehler und 2-Bitfehler in den Datenbits x1, ...xn und, falls gewünscht, in den Prüfbits d1, ..., dk des BCH-Codes, können durch den BCH-Code korrigiert werden.
  • Tritt ein 1-Bitfehler oder ein 2-Bitfehler auf, dann wird der 1-Bitfehler oder der 2-Bitfehler mittels des BCH-Codes korrigiert.
  • Tritt ein asymmetrischer Fehler, der beispielsweise Einsen in Nullen verfälscht, in den Datenbits oder in den Prüfbits des BCH-Codes auf, der mindestens drei Einsen in drei Nullen verfälscht, dann gibt es die folgenden Möglichkeiten:
    • • Durch den BCH-Code wird kein Fehler korrigiert. Durch den Berger-Code wird der asymmetrische Mehrbit-Fehler sicher erkannt.
    • • Durch den BCH-Code wird fälschlicherweise ein 1-Bitfehler korrigiert. In den Datenbits und in den Prüfbits sind nach der Korrektur mehrere Fehler vorhanden, die eine Eins in eine Null verfälschen als Fehler, die eine Null in eine Eins verfälschen, so dass der Berger-Code einen Fehler anzeigt.
    • • Durch den BCH-Code wird fälschlicherweise ein 2-Bitfehler korrigiert. In den Datenbits und in den Prüfbits ist nach der Korrektur noch mindestens ein asymmetrischer Fehler vorhanden, der durch den Berger-Code erkannt wird.
    • • Durch den BCH-Code wird ein 3-Bitfehler erkannt. Unabhängig davon, ob tatsächlich ein asymmetrischer 3-Bit-Fehler oder ein asymmetrischer Fehler mit mehr als drei fehlerhaften Bits vorliegt, wird der Fehler als nicht korrigierbarer Fehler erkannt.
  • Jeder Fehler in den Datenbits und in den Prüfbits des BCH-Codes, der nicht richtig korrigiert wird, kann somit erkannt werden. Jeder Fehler in den Prüfbits des Berger-Codes kann erkannt werden.
  • Liegt kein Adressfehler vor, so gilt also:
    • - 1-Bitfehler oder 2-Bitfehler in den Datenbits und/oder in den Prüfbits des BCH-Codes werden korrigiert.
    • - Jeder Fehler in den Prüfbits des Berger-Codes wird mit einer Wahrscheinlichkeit von 100% erkannt.
    • - Jeder asymmetrische Bitfehler mit mindestens drei fehlerhaften Bits in den Datenbits, den Prüfbits des BCH-Codes und/oder in den Prüfbits des Berger-Codes wird mit einer Wahrscheinlichkeit von 100% erkannt.
  • Liegt kein Fehler in den Datenbits, in den Prüfbits des BCH-Codes und den Prüfbits des Berger-Codes vor, dann gilt:
    • - Ein Adressfehler, der eine Adresse a in eine Adresse b verfälscht, wird erkannt, wenn A(a) ≠ A(b) gilt.
    • - Ist A(a) = a und A(b) = b, wird jeder Adressfehler zu 100% erkannt.
    • - Ist die Wortbreite von A(a) gleich R, ist die Wahrscheinlichkeit einen beliebigen Adressfehler nicht zu erkennen gleich 2-R. Für R = 7 ergibt sich beispielsweise 2-7, also weniger als 1%.
    • - Durch eine bestimmte Wahl der Matrix M (beispielsweise als H-Matrix eines Hsiao-Codes) kann z.B. ein 1-Bitfehler, ein 2-Bitfehler und/oder ein 3-Bitfehler in der Adresse sicher erkannt werden.
  • Liegt ein Fehler in den Datenbits, den Prüfbits und der Adresse vor, kann ein Adressfehler, einen asymmetrischen Fehler in den Datenbits und/oder den Prüfbits, mit geringer Wahrscheinlichkeit kompensieren.
  • Alternative Ausführungsform
  • Gemäß einer Alternative sind die Prüfbits dBCH des BCH-Codes die Prüfbits der Bits x(a), c(a)Berger mit c ( a ) B e r g e r = i = 1 n x ¯ ( a ) i + A ( a ) .
    Figure DE102019126175B4_0018
  • Ein Codewort hat dann die Form x ( a ) , c ( a ) B e r g e r , d B C H .
    Figure DE102019126175B4_0019
  • Der Berger-Code ist hier der innere Code, der BCH-Code der äußere Code.
  • Fehler in den Datenbits x, in den Prüfbits cBerger des Berger-Codes und in den Prüfbits dBCH des BCH-Codes können somit unter Verwendung des BCH-Codes korrigiert werden.
  • Anstelle des hier beispielhaft verwendeten 2-Bitfehler korrigierenden und 3-Bitfehler erkennenden BCH-Codes kann auch ein anderer Code, beispielsweise ein 1-Bitfehler korrigierender und 2-Bitfehler erkennender Hsiao-Code, ein Mehrbit-Fehler korrigierender Code, ein 1-Bitfehler korrigierender Hamming-Code, ein verkürzter Hamming Code, ein nicht-linearer Code, ein Bytefehler-korrigierender und Bytefehler-erkennender Code oder ein anderer Fehlercode verwendet werden.
  • Weitere Aspekte und Vorteile
  • Es sollen Datenbits in Speicherzellen gespeichert werden, wobei die Speicherung so ausgestaltet ist, dass auftretende Fehler in den Speicherzellen zu unidirektionalen Fehlern in den Bits führen, die beim Auslesen aus den Speicherzellen erkannt werden.
  • In einer Speicherzelle kann mehr als ein Bit gespeichert werden. Eine derartige Speicherzelle wird auch als mehrwertige Speicherzelle bezeichnet. Werden beispielsweise zwei Bits mit den binären Werten 00, 01, 10 und 11 (die auch als dezimale Werte 0, 1, 2, 3 bezeichnet werden können) pro Speicherzelle gespeichert, so handelt es sich bei der Speicherzelle um eine 4-wertige Speicherzelle.
  • Die Speicherzellen sind Speicherzellen eines adressierbaren Speichers, so dass unter einer Adresse mehrwertige Werte gespeichert sind. Bei 4-wertigen Speicherzellen werden zwei Bits pro Speicherzelle gespeichert. Beim Schreiben in den Speicher werden die Bits unter ihrer Schreibadresse abgespeichert und beim Lesen werden die Bits aus dem Speicher an ihrer Leseadresse ausgelesen.
  • Aus den Datenbits werden unter Verwendung des unidirektionalen Fehlercodes abgeleitete Bits gebildet, die unter einer Schreibadresse in den entsprechenden Speicherzellen gespeichert werden. Beispielsweise können die abgeleiteten Bits ein Codewort des unidirektionalen Fehlercodes sein oder ein solches umfassen.
  • Führen Speicherzellenfehler zu unidirektionalen Fehlern beim Auslesen des Speichers, kann unter Verwendung des unidirektionalen Fehlercodes bestimmt werden, ob ein Fehler vorliegt. Es ist vorteilhaft, wenn der Fehlercode so bestimmt ist, dass alle unidirektionalen Fehler sicher erkannt werden. In diesem Fall können alle Speicherfehler erkannt werden.
  • Beispielsweise kann aus Datenbits ein Codewort des Fehlercodes gebildet werden. Die Bits des Codewortes können mit aus einer Speicheradresse abgeleiteten Bits verknüpft werden zu Bits, die dann in den Speicher geschrieben werden. Beispielsweise kann die Schreibadresse genutzt werden, um in den Speicher zu schreibende Prüfbits zu bestimmen.
  • 6 zeigt ein beispielhaftes Diagramm, das das Encodieren und Speichern veranschaulicht. Beispielsweise werden Datenbits x und Prüfbits p in einem Speicher 601 an einer Schreibadresse as gespeichert. Die Prüfbits p werden, wie vorstehend beschrieben generiert, beispielsweise mittels einer Prüfbiterzeugungseinheit 602, basierend auf den Datenbits x und (optional) einer Adressinformation. Die Adressinformation kann beispielsweise die Schreibadresse as umfassen oder auf dieser basieren. Insbesondere kann die Adressinformation eine aus der Schreibadresse abgeleitete Information umfassen.
  • Die Prüfbits p können auf ersten Prüfbits, die für die Datenbits x generiert werden und auf zweiten Prüfbits, die anhand der Adressinformation gewonnen werden, basieren. Beispielsweise können die Prüfbits p durch eine arithmetische Verknüpfung der ersten und zweiten Prüfbits generiert werden.
  • Beispielsweise kann aus den Datenbits ein Codewort des Berger-Codes gebildet werden, indem die Datenbits durch entsprechende Prüfbits ergänzt werden. Die Datenbits mit dem Prüfbits bilden dann in diesem Beispiel ein Codewort des Berger-Codes. Anhand der Schreibadresse können abgeleitete Adressbits bestimmt werden, die zu den Prüfbits des Codeworts addiert werden. Somit sind die zu speichernden Bits die Datenbits und die Bits der Summe der Prüfbits und der aus den Adressbits der Schreibadresse abgeleiteten Bits.
  • Anstatt der Addition können auch andere arithmetische Operationen vorgesehen sein. Beispielsweise können die Prüfbits und die aus den Adressbits abgeleiteten Bits mittels einer Exklusiv-Oder-Verknüpfung (XOR-Verknüpfung) oder mittels einer Subtraktion bestimmt werden.
  • Beim Lesen der Daten aus dem Speicher wird auf die Leseadresse zugegriffen. Nun könnte es aufgrund eines Adressfehlers zu einem fehlerhaften Zugriff auf den Speicher dergestalt kommen, dass die Leseadresse verfälscht wird, d.h. der Zugriff auf den Speicher erfolgt auf eine andere Adresse. Die gelesenen Daten sind dann die unter der anderen Adresse vorhandenen Daten; der Lesevorgang der Daten selbst mag fehlerfrei (oder auch fehlerhaft) sein, jedenfalls sind es aufgrund des Adressfehlers nicht die Daten, die eigentlich gelesen werden sollen. Eine solche Verfälschung der Leseadresse kann jedoch erkannt werden.
  • 7 zeigt ein beispielhaftes Diagramm zur Visualisierung der Decodierung. In diesem Beispiel kommt es bei dem Zugriff auf den Speicher 601 zu einer Verfälschung der Leseadresse aL, d.h. es wird auf den Speicher 601 lesend zugegriffen, aber aufgrund des Adressfehlers werden Datenbits x' anstelle der Datenbits x ausgelesen. Eine Prüfbiterzeugungseinheit 701, die entsprechend der Prüfbiterzeugungseinheit 602 ausgeführt sein kann, generiert aus den gelesenen Datenbits x' und der Leseadresse aL Prüfbits p'. Weiterhin werden aus dem Speicher die zu den Datenbits x' gehörigen Prüfbits p‛‛ ausgelesen. Eine Vergleichseinheit 702 stellt nun fest, dass die Prüfbits p' von dem Prüfbits p‛‛ verschieden sind und kann daraufhin eine vorgegebene Aktion veranlassen, z.B. einen Fehlerindikator 703 bereitstellen.
  • Beim Auslesen von Bits unter einer Leseadresse des Speichers können anhand der Leseadresse abgeleitete Bits nach der gleichen Vorschrift gebildet werden, wie die abgeleiteten Adressbits aus der Schreibadresse bestimmt wurden.
  • Die aus der Leseadresse abgeleiteten Bits können von den ausgelesenen Bits, die im fehlerfreien Fall der Summe der Prüfbits und der aus der Schreibadresse abgeleiteten Bits entsprechen, subtrahiert werden. Stimmt die Leseadresse mit der Schreibadresse überein, ist kein Adressfehler aufgetreten. Ist kein weiterer Fehler aufgetreten, dann liegen nach der Subtraktion die Prüfbits der Datenbits, die unter der Schreibadresse in den Speicher geschrieben wurden, wieder vor.
  • Unidirektionale Fehler in den Datenbits und in den Prüfbits werden sicher erkannt, wenn nicht gleichzeitig ein Adressfehler vorliegt. Gibt es keinen Fehler in den Datenbits und in den Prüfbits, kann ein Adressfehler erkannt werden.
  • Anstelle des hier beispielhaft beschriebenen Berger-Codes kann auch ein anderer unidirektionaler Fehlercode verwendet werden, beispielsweise ein Bose-Lin-Code wie er in [Bose, B. und Lin, D.J.: Systematic Unidirectional Error-Detecting Codes, IEEE Trans. on Computers, Seiten 1026 bis 1032, 1985] beschrieben ist.
  • 8 zeigt ein weiteres beispielhaftes Diagramm zur Decodierung bzw. Fehlererkennung ohne die Berücksichtigung von Adressfehlern. An der Leseadresse aL sollen Datenbits x gelesen werden. Aufgrund eines Speicherfehlers oder eines Lesefehlers werden jedoch fehlerhafte Datenbits x' gelesen. Eine Prüfbiterzeugungseinheit 801 generiert basierend auf den aus dem Speicher erhaltenen Datenbits x' Prüfbits p'. Weiterhin werden die an der Adresse aL bereitgestellten Prüfbits p‛‛ gelesen. Eine Vergleichseinheit 802 stellt in diesem Beispiel fest, dass die Prüfbits p' nicht mit den Prüfbits p‛‛ übereinstimmen. Es wird somit ein Fehler erkannt und es kann eine vorgegebene Aktion veranlasst werden. Die vorgegebene Aktion kann das Bereitstellen eines Fehlerindikators 803 umfassen.
  • Die vorgegebene Aktion bei erkanntem Fehler kann umfassen: eine Benachrichtigung, dass ein Fehler vorliegt; ein Abbruch des Vorgangs mit oder ohne einer Alarmnotifikation; ein Durchführen eines erneuten Leseversuchs; ein Erhöhen eines Fehlerzählers und ein Vergleich des Zählerstands mit einer Abbruch- oder Alarmbedingung, etc.

Claims (20)

  1. Verfahren zur Verarbeitung einer Eingangsbitfolge, mit: - Kodieren der Eingangsbitfolge in eine Ausgangsbitfolge mittels Kodierung, - wobei die Bitfolge mindestens ein Tupel aufweist, wobei jedes Tupel mindestens zwei binäre Werte umfasst, - wobei jedem Tupel ein Ladungszustand einer mehrwertigen Speicherzelle eines Speichers entspricht, - wobei ein Wechsel von einem ersten Ladungszustand in einen zweiten Ladungszustand, der, bezogen auf einen neutralen Ladungszustand, betragsmäßig größer ist, einen zusätzlichen binären Wert 1 in dem Tupel bedingt, - wobei der Ladungszustand derart bestimmt ist, dass ein Übergang von dem binären Wert 1 in den binären Wert 0 mittels eines unidirektionalen Fehlercodes detektierbar ist, - Speichern des zu dem Tupel zugehörigen Ladungszustands in der Speicherzelle, - wobei ein Schwellwert vorgesehen ist, um eine Symmetrie um den neutralen Ladungszustand aufzulösen und somit eine Unidirektionalität für den unidirektionalen Fehlercode sicherzustellen.
  2. Verfahren nach Anspruch 1, bei dem der Schwellwert zwischen dem Ladungszustand, bei dem das Tupel nur binäre Werte 0 aufweist, und dem Ladungszustand, der betragsmäßig diesem Ladungszustand am nächsten ist, dessen Ladungszustand aber ein inverses Vorzeichen aufweist, angeordnet ist.
  3. Verfahren nach einem der Ansprüche 1 oder 2, bei dem der Ladungszustand anhand einer Einsatzspannung der Speicherzelle und/oder anhand eines Stroms durch die Speicherzelle bestimmt wird.
  4. Verfahren nach einem der Ansprüche 1 bis 3, - bei dem das Tupel zwei binäre Werte umfasst, - bei dem der neutrale Ladungszustand zwischen Ladungszuständen angeordnet ist, denen die Tupel mit den binären Werten 00, 01 oder die Tupel mit den binären Werten 00, 10 zugeordnet sind, - bei dem der Schwellwert zur Auflösung der Symmetrie um den neutralen Ladungszustand - zwischen dem Ladungszustand, der dem Tupel 01 zugeordnet ist und dem neutralen Ladungszustand angeordnet ist für den Fall, dass der neutrale Ladungszustand zwischen den Ladungszuständen angeordnet ist, denen die Tupel 00 und 01 zugeordnet sind und - zwischen dem Ladungszustand, der dem Tupel 10 zugeordnet ist und dem neutralen Ladungszustand angeordnet ist für den Fall, dass der neutrale Ladungszustand zwischen den Ladungszuständen angeordnet ist, denen die Tupel 00 und 10 zugeordnet sind.
  5. Verfahren nach Anspruch 4, bei dem die Ladungszustände positiv oder negativ in Bezug auf den neutralen Ladungszustand sind, wobei bei vier Ladungszuständen, die auf vier Tupel mit je zwei binären Werten abgebildet werden, eine der folgenden Möglichkeiten genutzt wird: Möglichkeit 1: LV01 < LVn < LV00 < LV10 < LV11, Möglichkeit 2: LV10 < LVn < LV00 < LV01 < LV11, Möglichkeit 3: LV11 < LV10 < LVn < LV00 < LV01, Möglichkeit 4: LV11 < LV01 < LVn < LV00 < LV10, Möglichkeit 5: LV11 < LV10 < LV00 < LVn < LV01, Möglichkeit 6: LV11 < LV01 < LV00 < LVn < LV10, Möglichkeit 7: LV01 < LV00 < LVn < LV10 < LV11, Möglichkeit 8: LV10 < LV00 < LVn < LV01 < LV11, wobei LVij der Ladungszustand, der auf die binären Werte ij (mit i, j ∈ {0, 1}) abgebildet wird, und LVn den neutralen Ladungszustand bezeichnen.
  6. Verfahren nach einem der vorhergehenden Ansprüche, bei dem mittels des unidirektionalen Fehlercodes Prüfbits bestimmt werden und in den Speicherzellen gespeichert werden.
  7. Verfahren nach einem der vorhergehenden Ansprüche, bei dem der unidirektionale Fehlercode ein asymmetrischer Fehlercode, insbesondere ein Berger-Code oder ein Bose-Lin-Code ist.
  8. Verfahren nach einem der vorhergehenden Ansprüche, bei dem eine Adressinformation bestimmt wird und zusätzlich in den Tupeln binärer Werte abgespeichert wird.
  9. Verfahren nach Anspruch 8, wobei die Adressinformation Adressbits oder aus Adressbits abgeleitete Bits umfasst.
  10. Verfahren nach einem der Ansprüche 8 oder 9, bei dem erste Prüfbits bestimmt werden und in den Tupeln binärer Werte abgespeichert werden.
  11. Verfahren nach Anspruch 10, bei dem die ersten Prüfbits basierend auf Datenbits bestimmt werden und die Datenbits sowie die ersten Prüfbits in den Tupeln binärer Werte gespeichert werden.
  12. Verfahren nach Anspruch 10, bei dem die ersten Prüfbits bestimmt werden basierend auf - zweiten Prüfbits, die basierend auf den Datenbits bestimmt werden und - der Adressinformation.
  13. Verfahren nach Anspruch 12, bei dem die zweiten Prüfbits mittels des unidirektionalen Fehlercodes bestimmt werden.
  14. Verfahren nach einem der Ansprüche 12 oder 13, bei dem die ersten Prüfbits unter Verwendung einer Summe oder der Differenz der zweiten Prüfbits und der Adressinformation bestimmt werden.
  15. Verfahren zum Erkennen eines Fehlers in einer aus einem Speicher gelesenen Bitfolge, wobei die Bitfolge gemäß einem der vorhergehenden Ansprüche gespeichert wurde.
  16. Verfahren zur Erkennung eines Adressfehlers beim Lesen einer Bitfolge aus einem Speicher, wobei der Speicher mehrwertige Speicherzellen umfasst, - bei dem geprüft wird, ob die Bitfolge mit der anliegenden Leseadresse ein Codewort eines unidirektionalen Fehlercodes mit einbezogener Adresseninformation ist, - bei dem dann, wenn ein Adressenfehler vorliegt und kein weiterer Fehler vorliegt und die Bitfolge in Verbindung mit der Leseadresse kein Codewort des unidirektionalen Fehlercodes mit einbezogener Adresseninformation ist, ein Adressenfehler erkannt wird.
  17. Vorrichtung zur Verarbeitung einer Eingangsbitfolge mit einer Verarbeitungseinheit, die eingerichtet ist - zum Kodieren der Eingangsbitfolge in eine Ausgangsbitfolge mittels Kodierung, - wobei die Bitfolge mindestens ein Tupel aufweist, wobei jedes Tupel mindestens zwei binäre Werte umfasst, - wobei jedem Tupel ein Ladungszustand einer mehrwertigen Speicherzelle eines Speichers entspricht, - wobei ein Wechsel von einem ersten Ladungszustand in einen zweiten Ladungszustand, der, bezogen auf einen neutralen Ladungszustand, betragsmäßig größer ist, einen zusätzlichen binären Wert 1 in dem Tupel bedingt, - wobei der Ladungszustand derart bestimmt ist, dass ein Übergang von dem binären Wert 1 in den binären Wert 0 mittels eines unidirektionalen Fehlercodes detektierbar ist, - zum Speichern des zu dem Tupel zugehörigen Ladungszustands in der Speicherzelle, - wobei ein Schwellwert vorgesehen ist, um eine Symmetrie um den neutralen Ladungszustand aufzulösen und somit eine Unidirektionalität für den unidirektionalen Fehlercode sicherzustellen.
  18. Vorrichtung nach Anspruch 17, wobei die Vorrichtung derart eingerichtet ist, dass eine Bitfolge aus den Speicher gelesen wird und geprüft wird, ob ein Fehler in der gelesen Bitfolge vorliegt.
  19. System umfassend mindestens eine Vorrichtung nach einem der Ansprüche 17 oder 18.
  20. Computerprogrammprodukt, das direkt in einen Speicher eines digitalen Computers ladbar ist, umfassend Programmcodeteile, die dazu geeignet sind, Schritte des Verfahrens gemäß einem der Ansprüche 1 bis 16 durchzuführen.
DE102019126175.9A 2019-09-27 2019-09-27 Erkennung von fehlern in mehrwertigen speichern Active DE102019126175B4 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102019126175.9A DE102019126175B4 (de) 2019-09-27 2019-09-27 Erkennung von fehlern in mehrwertigen speichern

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102019126175.9A DE102019126175B4 (de) 2019-09-27 2019-09-27 Erkennung von fehlern in mehrwertigen speichern

Publications (2)

Publication Number Publication Date
DE102019126175A1 DE102019126175A1 (de) 2021-04-01
DE102019126175B4 true DE102019126175B4 (de) 2022-04-28

Family

ID=74873312

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019126175.9A Active DE102019126175B4 (de) 2019-09-27 2019-09-27 Erkennung von fehlern in mehrwertigen speichern

Country Status (1)

Country Link
DE (1) DE102019126175B4 (de)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5450363A (en) 1994-06-02 1995-09-12 Intel Corporation Gray coding for a multilevel cell memory system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5450363A (en) 1994-06-02 1995-09-12 Intel Corporation Gray coding for a multilevel cell memory system

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
KOTAKI, S.; KITAKAMI, M.: „A Class of q-Ary Unidirectional Error Correcting Codes for MLC Flash Memories" In: 2013 IEEE 19th Pacific Rim International Symposium on Dependable Computing; IEEE Computer Society 2013, S. 132 - 133; ISBN 978-0-7695-5130-2

Also Published As

Publication number Publication date
DE102019126175A1 (de) 2021-04-01

Similar Documents

Publication Publication Date Title
DE102016003366B4 (de) Lesepegelgruppierung für erhöhte flash-leistung
DE102008003113B4 (de) ECC-Steuereinheit, Speichersystem und Verfahren zur Korrektur eines Fehlers
DE112011100371B4 (de) Verfahren, Vorrichtung und Computerprogrammprodukt zum Decodieren eines Codeworts
DE102019124438B4 (de) Multi-state-programmierung für speichervorrichtungen
DE102011055714B4 (de) Verfahren zum Programmieren einer nicht-flüchtigen Speichervorrichtung
DE102017001420B4 (de) Redundanz von fehlerkorrekturcodierten daten in einem speichersystem
DE19782077B4 (de) Verfahren und Vorrichtung zum Korrigieren eines Mehrpegelzellenspeichers durch Verwendung fehlerlokalisierender Codes
DE102017103347B4 (de) Verarbeitung von daten in speicherzellen eines speichers
DE102015113414B4 (de) Fehlerkorrektur unter Verwendung von WOM-Codes
DE102005052698A1 (de) Verfahren zur Verarbeitung von nichtflüchtig gespeicherten Daten
DE102017001433A1 (de) Systeme und Verfahren für adaptive Lesepegelanpassung
DE102014103125A1 (de) Verfahren und Vorrichtung zum Optimieren des Log-Likelihood-Quotienten (LLR), die verwendet werden für eine nichtflüchtige Speichervorrichtung und zum Korrigieren von Fehlern in einer nichtflüchtigen Speichervorrichtung
DE102013007692A1 (de) Verfahren und Vorrichtung zur Korrektur ternär gespeicherter binärer Daten
DE112014005810B4 (de) anagement der Datenspeicherung in analogen Speicherzellen unter Verwendung einer nicht ganzzahligen Anzahl von Bits pro Zelle
DE102007016460A1 (de) Nichtflüchtiges Speicherbauelement, nichtflüchtiges Speichersystem und Leseverfahren für ein nichtflüchtiges Speicherbauelement
DE102015201384A1 (de) Vorrichtung und Verfahren zum Verbessern der Datenspeicherung durch Dateninvertierung
DE102010037290A1 (de) Speichersysteme und Verfahren zur Erfassung einer Verteilung von instabilen Speicherzellen
DE102008003944A1 (de) Speichersystem und Programmierverfahren für ein Speichersystem
DE102018123926A1 (de) Dynamische mehrstufige Decodierung
DE112012005424T5 (de) Lese/Schreib-Operationen in Halbleiterspeicher-Bauelementen
DE102015215401A1 (de) Speichervorrichtung und Verfahren zum Korrigieren einer gespeicherten Bitfolge
DE112019000167T5 (de) Anpassbare Lesewiederholungsreihenfolge basierend auf einem Decodierungserfolgstrend
DE102015209502A1 (de) Markierungsprogrammierung in nichtflüchtigen Speichern
DE102013222136B4 (de) Schaltung und Verfahren für die Mehr-Bit-Korrektur
DE102019126175B4 (de) Erkennung von fehlern in mehrwertigen speichern

Legal Events

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