-
Eine zuverlässige Speicherung von Daten in adressierbaren Speichern ist generell von großem Interesse. Durch die Verkleinerung der Speicherstrukturen und durch die Entwicklung neuartiger Speicherzellen, bspw. von MRAM-Zellen, RRAM-Zellen und anderen Speicherzellen, die insbesondere für bestimmte Anwendungen verhältnismäßig hohe Fehlerraten aufweisen, ist es erforderlich, Fehler zu erkennen und zu korrigieren. Dies betrifft sowohl Bitfehler, die erkannt und korrigiert werden sollen, Speicherzellenfehler, die (mit möglichst hoher Wahrscheinlichkeit) erkannt werden sollen und Adressfehler, die ebenfalls (mit möglichst hoher Wahrscheinlichkeit) erkannt werden sollen.
-
Zur Fehlerkorrektur von Bitfehlern können Fehler-korrigierende Codes, wie beispielsweise Hamming-Codes, Hsiao-Codes oder BCH-Codes verwendet werden (siehe z.B. [1]).
-
Aus
DE 26 55 653 A1 ist eine Lösung zur Erkennung der richtigen Zuordnung von Adresse und Speicherwort in einem Datenspeicher mittels Prüfbits bekannt.
-
Aus
US 8,812,935 B2 ist bekannt, eine Daten-ECC zur Erkennung von Adressfehlern einzusetzen.
-
Als Speicherzellenfehler werden insbesondere solche Fehler bezeichnet, bei denen alle betrachteten Speicherzellen einen bestimmten Wert annehmen, beispielsweise den Wert 0 oder den Wert 1. Nehmen alle Speicherzellen den Wert 0 an, liegt ein sogenannter „All-0“-Speicherzellenfehler vor. Nehmen alle Speicherzellen den Wert 1 an, liegt ein sogenannter „All-1‟-Speicherzellenfehler vor. Ein Speicherzellenfehler kann auch dann vorliegen, wenn verschiedene Speicherzellen verschiedene Werte annehmen beispielsweise aufeinanderfolgende 01-Paare. Auch andere fehlerhafte Speicherzellenbelegungen sind möglich.
-
Ein Speicherzellenfehler φ kann beispielsweise durch binäre Werte φ
1 bis φ
n in n Speicherzellen beschrieben werden. Der All-0-Speicherzellenfehler entspricht
und der All-1-Speicherzellenfehler entspricht
-
In Bezug auf eine Erkennung eines Adressfehlers ist aus
US 8,560,899 B2 bekannt, unter Verwendung von angeregten Wortleitungen und angeregten Bitleitungen eine aktive Speicheradresse beispielsweise unter Verwendung eines ROMs zu bestimmen und mit der tatsächlich angelegten Speicheradresse zu vergleichen.
-
Es besteht somit die Aufgabe, bestehende Lösungen zu verbessern und insbesondere für beliebige Fehlercodes auch Adressfehler zu erkennen.
-
Als ein Fehlercode wird insbesondere ein Fehler-erkennender und/oder Fehler-korrigierender Code bezeichnet.
-
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 Erkennung eines Adressfehlers beim Lesen einer Bitfolge aus einem Speicher,
- - bei dem geprüft wird, ob die Bitfolge in Verbindung mit der anliegenden Leseadresse ein Codewort eines Fehlercodes ist,
- - bei dem, falls die Bitfolge in Verbindung mit der anliegenden Leseadresse kein Codewort des Fehlercodes ist, ein Adressfehler dann erkannt wird, sofern der Fehlercode einen durch ihn korrigierbaren Fehler nicht korrigiert.
-
Hierbei sei angemerkt, dass der eine durch den Fehlercode korrigierbare Fehler ein beliebiger zu korrigierender Fehler sein kann.
-
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.
-
Es ist eine Weiterbildung, dass der durch den Fehlercode zu korrigierende Fehler eine Teilmenge der durch den Fehlercode korrigierbarer Fehler ist.
-
Es ist eine Weiterbildung, dass kein Adressfehler erkannt wird, falls die Bitfolge in Verbindung mit der anliegenden Leseadresse ein Codewort des Fehlercodes ist.
-
Es ist eine Weiterbildung, dass mittels des Fehlercodes ein Speicherzellenfehler in der Bitfolge erkannt und/oder korrigiert wird.
-
Es ist eine Weiterbildung, dass der Speicherzellenfehler mittels eines ersten Fehlersyndroms erkannt und/oder korrigiert wird.
-
Es ist eine Weiterbildung, dass der Adressfehler mittels eines zweiten Fehlersyndroms erkannt wird, wobei das erste Fehlersyndrom von dem zweiten Fehlersyndrom unterschiedlich ist.
-
Es ist eine Weiterbildung, dass vor dem Lesen der Bitfolge aus dem Speicher folgende Schritte durchgeführt werden:
- - Speichern einer Bitfolge v unter einer Adresse a in den Speicher, wobei die Bitfolge v und ein mittels einer Transformation f transformierter Adresswert f(a) ein Codewort des Fehlercodes darstellen,
- - Zuordnen der verwendeten Speicheradresse a zu dem transformierten Adresswert f(a) = A1,...,Am, wobei der transformierte Adresswert f(a) verschieden von einem Fehlersyndrom des Speicherzellenfehlers und verschieden von Werten ist, die sich aus Bitfehlern zugeordneten Fehlersyndromen ergeben.
-
Es ist eine Weiterbildung, dass nicht alle Adressen des Speichers verwendet werden.
-
Es ist eine Weiterbildung, dass der Speicher Speicherzellen aufweist, in denen n-komponentige Bitfolgen abspeicherbar sind, wobei N verschiedene Bitfehler b
1 bis b
N korrigierbar sind, die eine Bitfolge v = v
1,...,v
n in Bitfolgen v(b
1),v(b
2), ...,v(b
N) verfälschen, wobei ein Speicherzellenfehler φ
1, bei dem n Speicherzellen die Werte
beim Auslesen aus den Speicherzellen ergeben, erkannt wird,
- - wobei die Bitfolge v, die unter einer Adresse a in den Speicher geschrieben wird, so bestimmt ist, dass im fehlerfreien Fall [v, f(a)] ein Codewort des Fehlercodes Ca mit einer H-Matrix ist,
- - wobei eine Adresstransformation f so bestimmt ist, dass sie jeder verwendeten Speicheradresse a eindeutig einen transformierten Adressenwert f(a) =A1,... ,Am zuordnet, der ungleich den Werten ist, wobei s(b1) bis s(bN) den Bitfehlern zugeordnete Fehlersyndrome sind,
- - wobei folgenden Beziehungen gelten:
- - wobei eine binäre (m,n)-Matrix und Im die m-dimensionale Einheitsmatrix bezeichnen.
-
Es ist eine Weiterbildung, dass ein weiterer Speicherzellenfehler φ
2 erkannt wird, wobei n unter einer Adresse adressierte Speicherzellen die Werte
beim Auslesen aus den Speicherzellen ergeben, und die Adresstransformation f so bestimmt ist, dass für jede verwendete Speicheradresse a der transformierte Adresswert f(a) ungleich den Werten
ist.
-
Es ist eine Weiterbildung, dass die Matrix
eine H-Matrix eines Hamming-Codes oder eines verkürzten Hamming-Codes ist.
-
Es ist eine Weiterbildung, dass die Matrix
eine H-Matrix eines Hsiao-Codes oder eines verkürzten Hsiao-Codes ist.
-
Es ist eine Weiterbildung, dass die Matrix
eine H-Matrix eines t-Bitfehler-korrigierenden Codes ist.
-
Es ist eine Weiterbildung, dass die Matrix
eine H-Matrix eines BCH-Codes ist.
-
Es ist eine Weiterbildung, dass zur Erhöhung einer Wahrscheinlichkeit der Adressfehlererkennung die H-Matrix
eines Fehlercodes in eine modifizierte H-Matrix
geändert wird, indem zu der H-Matrix
eine (m+1)-te Zeile von n binären Werten hinzugefügt wird.
-
Es ist eine Weiterbildung, dass die (m+ 1)-te Zeile, die der Matrix
hinzugefügt wird, n Nullen umfasst.
-
Weiterhin wird eine Vorrichtung vorgeschlagen zum Erkennen eines Adressfehlers, wobei die Vorrichtung eine Verarbeitungseinheit aufweist, die derart eingerichtet ist, dass
- - geprüft wird, ob eine Bitfolge in Verbindung mit der anliegenden Leseadresse ein Codewort eines Fehlercodes ist,
- - falls die Bitfolge in Verbindung mit der anliegenden Leseadresse kein Codewort des Fehlercodes ist, ein Adressfehler dann erkannt wird, sofern der Fehlercode einen durch ihn korrigierbaren Fehler nicht korrigiert.
-
Die hier genannte Verarbeitungseinheit kann insbesondere als eine Prozessoreinheit und/oder eine zumindest teilweise festverdrahtete 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.
-
Die vorstehenden Erläuterungen betreffend das Verfahren gelten für die Vorrichtung entsprechend.
-
Es ist eine Weiterbildung, dass die Verarbeitungseinheit eingerichtet ist, die Bitfolge aus einem Speicher zu lesen.
-
Auch wird ein System angegeben umfassend mindestens eine Vorrichtung wie hierin beschrieben.
-
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.
-
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 beispielhafte Schaltungsanordnung zur Speicherung und zur Korrektur von Daten;
- 2 eine beispielhafte Realisierung des Korrektors aus 1;
- 3 eine beispielhafte Implementierung des Decoders aus 2;
- 4 eine beispielhafte Implementierung der Fehlererkennungsschaltung aus 1.
-
Beispielsweise wird vorgeschlagen, einen Fehlercode Ca und eine Adresstransformation f zu bestimmen zur Transformation von Adressen eines adressierbaren Speichers in transformierte Adresswerte. Der adressierbare Speicher weist vorzugsweise Speicherzellen auf, die zur Speicherung von n-komponentigen Bitfolgen dienen.
-
Beispielsweise sind N verschiedene Bitfehler b
1 bis b
N korrigierbar, wobei diese Bitfehler eine Bitfolge v in Bitfolgen v(b
1), v(b
2), . . ., v(b
N) verfälschen. Ein Speicherzellenfehler φ
1 kann sicher erkannt werden, wobei für n Speicherzellen
gilt.
-
Beispielsweise kann dies wie folgt erreicht werden:
- - Die Bitfolge v = v1,...,vn, die unter einer Adresse a in den Speicher geschrieben wird, ist so bestimmt, dass im fehlerfreien Fall ein Codewort des Fehlercodes Ca ist, wobei der Fehlercode Ca eine H-Matrix aufweist.
- - Die Adresstransformation f ist so bestimmt, dass sie jeder verwendeten Speicheradresse a eindeutig einen transformierten Adresswert zuordnet, der ungleich den Werten ist, wobei s(b1), ... , s(bN) den Bitfehlern b1 bis bN zugeordnete Fehlersyndrome sind.
- - Beispielsweise gelten: 2m > N + 1, n ≥ 2, m ≥ 2 und N ≥1.
- - Bei der Matrix handelt es sich vorzugsweise um eine binäre (m,n)-Matrix. Die Matrix Im ist die m-dimensionale Einheitsmatrix.
- - Beispielsweise kann die Adresstransformation mittels mindestens einer der folgenden Komponenten durchgeführt werden: einer Adresstransformationsschaltung, eines Programms, eines Mikrocontrollers, eines Prozessors oder einer beliebigen in Hardware und/oder Software realisierten Verarbeitungseinheit.
-
Der Fehlercode Ca ist derart bestimmt, dass er mindestens einen Speicherzellenfehler φ1 unabhängig von der verwendeten Adresse erkennen kann. Der Speicherzellenfehler ist beispielsweise ein All-0-Fehler oder ein All-1-Fehler. Jeder dieser Fehler kann vorzugsweise sicher erkannt werden.
-
Der Fehlercode und die Adresstransformation sind vorzugsweise so bestimmt, dass unabhängig von der angelegten Adresse ein Speicherzellenfehler in den n Speicherzellen nicht zu einem Fehlersyndrom eines korrigierbaren Fehlers oder zu dem Fehlersyndrom 0 führt.
-
Die N verschiedenen Bitfehler b1,..., bN in der Bitfolge v können beispielsweise 1-Bitfehler, 2-Bitfehler oder andere Fehler sein.
-
Liegt der Speicherzellenfehler φ
1 vor, dann liegen auf n Datenausgabeleitungen, die den n Speicherzellen entsprechen, die Werte
an, unabhängig davon, welche Werte zuvor in diese Speicherzellen geschrieben wurden.
-
Es ist möglich, dass bei einem Speicherzellenfehler die n Speicherzellen die fehlerhaften Werte
annehmen. Nachfolgend wird beispielhaft davon ausgegangen, dass der Speicherzellenfehler φ
1 vorliegt, wenn die Werte der Leitungen eines Busses, an die Speicherzellen angeschlossen sind, die Werte
annehmen, ohne dass die in den Speicherzellen gespeicherten Werte selbst fehlerhaft sein müssen. Beispielsweise können alle Werte auf den Leitungen den Wert 0 annehmen.
-
Beispiele für Speicherzellenfehler sind
- - der All-0-Fehler mit und
- - der All-1-Fehler mit
-
Es können auch andere Speicherzellenfehler auftreten, bei denen nicht alle Speicherzellen den gleichen Wert bereitstellen, z.B.
-
Der Fehlercode Ca ist in der Lage, mindestens einen Adressfehler, der eine Adresse a in eine fehlerhafte Adresse a' verfälscht, zu erkennen.
-
Die transformierten Adresswerte f(a) weisen m-Komponenten auf
wobei die transformierten Adresswerte A
1 bis A
m beispielhaft binäre Werte sind.
-
Die H-Matrix H des Fehlercodes C
a kann so bestimmt sein, dass zu einer (m,n)-Matrix H
m,n, die beispielsweise als eine H-Matrix eines (n,n-m)-Fehlercodes C der Länge n mit m Prüfbits zur Korrektur der Bitfehler b
1,..., b
N in der Bitfolge v gewählt sein kann, eine m-dimensionale Einheitsmatrix hinzugefügt wird, so dass gilt:
-
Die ersten n Spalten der H-Matrix H entsprechen beispielsweise den n Bits der Bitfolge v = v
1,..., v
n und die hinzugefügten m Spalten der hinzugefügten Einheitsmatrix I
m entsprechen den transformierten Adresswerten A
1,... ,A
m. Dabei ist [v, f(a)] im fehlerfreien Fall so bestimmt, dass
gilt. [v, f(a)] ist im fehlerfreien Fall ein Codewort des Fehlercodes C
a.
-
Wird ein Vektor von rechts mit einer Matrix multipliziert, ist hier der Vektor ein Spaltenvektor. Wird ein Vektor von links mit einer Matrix multipliziert, ist der Vektor ein Zeilenvektor.
-
Soll besonders hervorgehoben werden, dass ein Vektor [v] ein Spaltenvektor ist, kann er mit [v]T bezeichnet werden.
-
Ist die Bitfolge v = v
1,..., v
n in eine fehlerhafte Bitfolge
mit
durch einen Bitfehler b
i gestört, so ist das Fehlersyndrom s(b
i) des Bitfehlers b
i gleich
-
Dabei wird ausgenutzt, dass v + v = 0 gilt und dass + eine komponentenweise Addition modulo 2 oder die logische XOR-Operation (XOR: Exklusiv-Oder) bezeichnet.
-
Die Adresstransformation f ist so bestimmt, dass sich die transformierten m-komponentigen Adresswerte A
1,...,A
m = f(a) für eine beliebige mögliche Speicheradresse a von allen (N + 1) m-komponentigen Werten
unterscheiden. Dabei sind
den eventuellen Bitfehlern b
1,..., b
N von Bits der Bitfolge v zugeordneten Fehlersyndrome s(b
1) ...,s(b
N). Weiterhin wird mit „+“ die komponentenweise XOR-Operation bezeichnet.
-
Es ist möglich, dass die Syndrome s(b1),...,s(bN) der Bitfehler b1,...,bN 1-Bitfehlern, 2-Bitfehlern oder anderen Fehlern in den Bits der Bitfolge v entsprechen.
-
Vorteilhaft kann somit erreicht werden, dass für den Speicherzellenfehler φ
1 und für eine beliebige verwendete Adresse a das im Fall des Speicherzellenfehlers φ
1 auftretende Fehlersyndrom
mit
ungleich den Fehlersyndromen der korrigierbaren Bitfehler und ungleich dem Fehlersyndrom 0 ist.
-
Es ist möglich, dass in bestimmten Anwendungen nur ein Teil aller möglichen Speicheradressen des Speichers verwendet werden. Diese verwendeten Speicheradressen werden auch als verwendete (Speicher)Adressen bezeichnet. Speicheradressen, die nicht verwendet werden, können auch als nicht verwendete (Speicher)Adressen bezeichnet sein.
-
Im Folgenden kann, sofern nichts anderes ausgeführt ist, der Begriff Speicheradresse alle Speicheradressen oder alle verwendeten Speicheradressen referenzieren.
-
Es ist eine Option, die Transformation der Adressen in transformierte Adresswerte nur für die verwendeten Speicheradressen festzulegen und die transformierten Adresswerte für nicht verwendete Adressen nicht gesondert festzulegen oder aber unbestimmte oder vorgegebene Werte den nicht verwendeten Adressen zuzuordnen.
-
Wird eine Adresstransformation f bspw. durch eine kombinatorische Schaltung realisiert, können die Adressen, denen transformierte Adresswerte als unbestimmte Werte zugeordnet sind, im Rahmen einer Schaltungssynthese optimiert werden.
-
Allgemein gibt es 2
m verschiedene m-stellige Binärvektoren, und die transformierten Adresswerte f(a) können höchstens
verschiedene m-komponentige Werte annehmen. Durch die Adresstransformation f wird eine mögliche Speicheradresse auf einen dieser Q möglichen transformierten Adresswerte abgebildet, der ungleich der in Gleichung (1) angegebenen Fehlersyndrome ist.
-
Es ist eine Option, mehrere Gruppen von Speicheradressen pro Gruppe auf einen vorgegebenen transformierten Adresswert abzubilden. Beispielsweise kann eine Anzahl Anz1 von Speicheradressen auf einen ersten Wert transformierter Adresswerte, eine Anzahl Anz2 von Speicheradressen auf einen zweiten Wert transformierter Adresswerte, usw. abgebildet werden bis hin zu einer Anzahl AnzQ von Speicheradressen, die auf einen Q-ten Wert der transformierten Adresswerte abgebildet werden.
-
Dabei ist es möglich, dass sich die Q Anzahlen, Anz
1, Anz
3, Anz
Q, nur um 1 unterscheiden und
gilt. Durch eine solche Zuordnung der Speicheradressen auf die transformierten Adresswerte werden jeweils (in etwa) gleich viele Speicheradressen den verschiedenen Werten der transformierten Adresswerte zugeordnet. Sind 2
K Speicheradressen vorhanden, dann werden
-
Speicheradressen einem transformierten Adresswert zugeordnet.
-
Verfälscht ein Adressfehler eine Adresse a in eine Adresse a', wird eine Bitfolge v' unter der Adresse a' ausgelesen.
-
[v', f(a')] ist ein Codewort des betrachteten Fehlercodes und es gilt:
-
Ein Adressfehler, bei dem eine Adresse a fehlerhaft in eine Adresse a' gestört ist, kann nicht erkannt werden, wenn
ein Element der Menge
ist.
-
In einem solchen Fall hätte ein Adressenfehler ein Fehlersyndrom, das nicht von dem Fehlersyndrom eines der korrigierbaren Fehler oder von dem Fehlersyndrom 0 unterschieden werden könnte. Tritt das Fehlersyndrom 0 auf, dann kann kein Fehler erkannt werden.
-
Wegen Gleichung (3) und wegen
gilt:
-
Somit wird der Adressfehler nicht erkannt, wenn f(a) + f(a') ein Element der Menge
ist, d.h. wenn
gilt oder wenn f(a') ein Element der Menge
ist.
-
Mit anderen Worten: Ein Adressfehler, der die Adresse a in die Adresse a' verfälscht, kann nicht erkannt werden, wenn f(a') einen Wert annimmt, der gleich einem der Werte
ist. Da f(a') der transformierte Adresswert einer Speicheradresse a' ist, unterscheidet sich f(a') gemäß Gleichung (1) auch von den (N+1) Werten
-
Es ist möglich, dass die durch Gleichung (6) beschriebenen (N+1) Werte und die durch Gleichung (1) beschriebenen Werte gemeinsame Werte aufweisen, so dass weniger als (N + 1) Werte für f(a') vorhanden sein können für die ein Adressfehler, der die Adresse a in die Adresse a' verfälscht, nicht erkannt wird.
-
Es sind damit höchstens (N + 1) von insgesamt (2m - N - 1) transformierten Adresswerten vorhanden, so dass ein Adressfehler, der die Adresse a in die Adresse a' verfälscht, nicht erkannt wird.
-
Für eine Wahrscheinlichkeit P(a,a')
nd, dass der beschriebene Adressfehler nicht erkannt wird, gilt
und für eine Wahrscheinlichkeit P(a,a')
det, dass ein Adressfehler, der die Adresse a in eine beliebige Adresse a' verfälscht, erkannt wird, gilt
-
Die (m,n)-Matrix
kann beispielsweise eine H-Matrix eines (n,n-m)-Fehlercodes sein. Insbesondere ist es eine Option, dass der Fehlercode ein 1-Bitfehler-korrigierender und 2-Bitfehler-erkennender Code ist, z.B. ein Hsiao-Code mit einer ungeraden Anzahl von Einsen der Spalten der (m,n)-Matrix
-
Vorzugsweise ist eine Wahrscheinlichkeit P(a, a')det für das Erkennen eines Adressfehlers größer oder gleich einem vorgegebenen Wert, beispielsweise 0,5 oder 0,9. So ist es möglich, den Wert m, schrittweise zu erhöhen, bis der gewünschte Wert für die Wahrscheinlichkeit P(a,a')det gemäß Gleichung (8) erreicht ist. Dies wird nachfolgend beispielhaft näher erläutert. Dabei bezeichnet m auch die Anzahl der erforderlichen Prüfbits des verwendeten Fehlercodes.
-
Bei einem Hsiao-Code kann beispielsweise schrittweise anstelle der H-Matrix
eines verkürzten Hsiao-Codes mit m Zeilen und n Spalten und m Prüfbits
- - eine H-Matrix eines verkürzten Hsiao-Codes mit m + 1 Zeilen und n Spalten, die durch eine Identitätsmatrix Im+1 ergänzt wird, mit m + 1 Prüfbits,
- - eine H-Matrix eines verkürzten Hsiao-Codes mit m + 2 Zeilen und n Spalten, die durch eine Identitätsmatrix Im+2 ergänzt wird, mit m + 2 Prüfbits,
- - usw.
verwendet werden. Hierbei gilt beispielhaft N = n.
-
Entsprechend kann ein weiterer Fehlercode, beispielsweise ein Hamming-Code, ein verkürzter Hamming-Code oder ein anderer Fehlercode eingesetzt werden.
-
Beispielsweise kann die Matrix
aus der Matrix
bestimmt werden, indem eine Zeile von n Nullen zu der Matrix
hinzugefügt wird. Entsprechend kann die Matrix
aus der Matrix
bestimmen, indem eine Zeile von n Nullen zu der Matrix
hinzugefügt wird.
-
Auf Grund der hier erläuterten Adresstransformation ist es vorteilhaft möglich, den Fehlercode so zu bestimmen, dass die Wahrscheinlichkeit, einen beliebigen Adressfehler zu erkennen an einen vorgegebenen bzw. gewünschten Wert effizient angepasst wird. Weiterhin ist es möglich, dass die Wahrscheinlichkeit einen beliebigen Adressfehler zu erkennen, im Wesentlichen gleich für alle möglichen Adressfehler ist.
-
Eine Weiterbildung besteht darin, dass ein weiterer Speicherzellenfehler φ
2 erkannt wird, wobei beispielhaft n unter einer Adresse adressierte Speicherzellen die Werte
beim Auslesen an den Datenausgängen der Speicherzellen ausgeben. Die Adresstransformation f kann dabei so bestimmt sein, dass für jede verwendete Speicheradresse a der m-dimensionale transformierte Adresswert f(a) ungleich den ebenfalls m-dimensionalen Werten
ist.
-
Es ist möglich, dass mindestens zwei Speicherzellenwerte φ1 und φ2 fehlerhaft sind. Darüber hinaus können auch weitere Speicherzellenwerte fehlerhaft sein und als fehlerhaft erkannt werden.
-
Beispielhaft wird für Speicherzellenwerte, die durch einen beliebigen n-dimensionalen Binärvektor beschrieben sein können, eine Adresstransformation f(a) bestimmt.
-
Es ist möglich, dass H
v · φ
1 = H
v · φ
2 und damit
gilt. In einem solchen Fall kann die gleiche Adresstransformation f(a) bestimmt werden, die auch bestimmt werden kann, wenn nur ein einzelner Speicherzellenfehler auftritt.
-
Ist beispielsweise
und
und weist die Matrix
in jeder ihrer Zeilen eine gerade Anzahl von Einsen auf, dann ist
und die Adresstransformation f(a), die für den Speicherzellenfehler φ
1 = All - 0 bestimmt wurde, kann auch für den Fall verwendet werden, wenn sowohl der Speicherzellenfehler φ
1 = All - 0 als auch der Speicherzellenfehler φ
2 = All - 1 erkannt werden soll.
-
Gilt
dann ist die Adresstransformation / so bestimmt, dass sich die transformierten m-komponentigen Adresswerte
für eine beliebige mögliche Speicheradresse a sowohl von allen (N + 1) m-komponentigen Werten
als auch von allen (N + 1) m-komponentigen Werten
unterscheiden.
-
Es ist eine Option, dass die Matrix
die H-Matrix eines Hamming-Codes oder eines verkürzten Hamming-Codes der Länge n mit m Prüfbits ist.
-
Die H-Matrix eines unverkürzten Hamming-Codes mit m Prüfbits weist alle paarweise unterschiedlichen (2
m - 1) Binärvektoren ungleich
als Spalten auf.
-
Eine H-Matrix
eines beliebigen linearen Codes der Länge n mit m Prüfbits und n paarweise unterschiedlichen Spalten kann durch Streichen von Spalten aus der H-Matrix eines unverkürzten Hamming-Codes mit m Prüfbits bestimmt werden. Vorzugsweise werden dabei diejenigen Spalten gestrichen, die nicht als Spalten in der H-Matrix
vorkommen. Durch Streichen von Spalten der H-Matrix eines Codes wird der Code verkürzt. Mit anderen Worten: Durch Streichen von Spalten der H-Matrix eines unverkürzten Hamming-Codes kann die H-Matrix eines beliebigen linearen Codes mit m Prüfbits bestimmt werden. Ein linearer Code ist durch seine H-Matrix eindeutig bestimmt.
-
Auch ist es eine Option, dass die Matrix
die H-Matrix eines Hsiao-Codes oder eines verkürzten Hsiao-Codes ist.
-
Ferner ist es eine Option, dass die Matrix
die H-Matrix eines t-Bitfehler-korrigierenden Codes ist. Dabei ist t insbesondere größer oder gleich 1. Ist t gleich 1, kann ein Hamming-Code oder ein Hsiao-Code verwendet werden. Ist t größer oder gleich 2, kann ein t-Bitfehler-korrigierender BCH-Code verwendet werden.
-
Eine Weiterbildung besteht darin, dass die Matrix
die H-Matrix eines BCH-Codes ist.
-
Noch eine Weiterbildung ist es, dass zur Erhöhung der Wahrscheinlichkeit einer Adressfehlererkennung die H-Matrix
eines Fehlercodes in eine modifizierte H-Matrix
geändert wird, wobei
aus
dadurch gebildet wird, dass zu
eine (m+ 1)-te Zeile von n binären Werten hinzugefügt wird.
-
Auch ist es eine Option, dass die (m+1)-te Zeile, die der Matrix
hinzugefügt wird, n Nullen umfasst.
-
1 zeigt eine beispielhafte Schaltungsanordnung zur Speicherung von Daten. Hierzu umfasst die Schaltungsanordnung einen
- - Coder 12 mit
- - einem ersten Eingang zur Eingabe von Nutzdatenbits x = x1, ... ,x5,
- - einem zweiten Eingang zur Eingabe von transformierten Adressbits und
- - einem Ausgang zur Ausgabe der zu speichernden Bits (auch bezeichnet als Bitfolge) wobei die Bits c1 bis c5 Prüfbits darstellen,
- - eine erste Adresstransformationsschaltung 13 mit
- - einem Eingang zur Eingabe einer Schreibadresse und
- - einem Ausgang zur Ausgabe der transformierten Adressbits bis der Schreibadresse,
- - einen Speicher 11 mit
- - einem Dateneingang zur Eingabe der von dem Coder 12 bereitgestellten zu speichernden Bits v,
- - einem Adresseingang zur Eingabe einer Speicheradresse, d.h. einer Schreibadresse as oder einer Leseadresse aL und
- - einem Datenausgang zur Ausgabe von eventuell fehlerhaft gespeicherten Bits (auch bezeichnet als Bitfolge)
- - eine zweite Adresstransformationsschaltung 14 mit
- - einem Eingang zur Eingabe der Leseadresse und
- - einem Ausgang zur Ausgabe transformierter Adressbits der Leseadresse,
- - einen Korrektor 15 mit
- - einem ersten Eingang zur Eingabe der transformierten Adressbits
- - einem zweiten Eingang zur Eingabe der von dem Speicher 11 bereitgestellten eventuell fehlerhaften Bits v' und
- - einem Ausgang zur Ausgabe von Korrekturwerten e1,..., e10 zur Korrektur der eventuell fehlerhaften Bits v',
- - eine Fehlererkennungsschaltung 16 mit
- - einem ersten Eingang zur Eingabe der transformierten Adressbits
- - einem zweiten Eingang zur Eingabe der von dem Speicher 11 bereitgestellten eventuell fehlerhaften Bits v' und
- - einem Ausgang zur Ausgabe eines Fehlersignales E und
- - eine XOR-Schaltung 17 mit
- - einem ersten Eingang zur Eingabe der von dem Speicher 11 ausgegebenen eventuell fehlerhaften Bits v',
- - einem zweiten Eingang zur Eingabe der von dem Korrektor 15 ausgegebenen Korrekturwerte e1,..., e10 und
- - einem Ausgang zur Ausgabe korrigierter Bits
-
Der Coder 12 ist eingerichtet, in Abhängigkeit von den an seinen Eingängen anliegenden
- - Nutzdatenbits x = x1,... ,x5 und
- - transformierten Adressbits
an seinem Ausgang zu speichernde Bits v = v1,...,v10 so zu bilden und auszugeben, dass ein Codewort eines Fehlercodes Ca ist.
-
In dem hier gewählten Ausführungsbeispiel ist eine H-Matrix
des Codes C
a gleich
-
In der letzten Zeile der H-Matrix aus Gleichung (11) sind die Variablen aufgeführt, die den Spalten der H-Matrix entsprechen. Die Matrix
ist die H-Matrix eines (10,5)-Hsiao-Codes, bei der alle Spalten dieser Matrix eine ungerade Anzahl von drei Einsen aufweisen.
-
Aus der in Gleichung (11) gezeigten H-Matrix kann durch Linearkombinationen von Zeilen die systematische Form der H-Matrix H
sys des Codes C
a bestimmt werden gemäß:
-
In der letzten Zeile der in Gleichung (12) gezeigten H-Matrix sind wieder die Variablen aufgeführt, die den Spalten der H-Matrix entsprechen: Den Prüfbits c1,..., c5 entsprechen die ersten fünf Spalten, den Nutzdatenbits x1, ... ,x5 entsprechen die nächsten fünf Spalten und den transformierten Adressenbits A1,...,A5 entsprechen die letzten fünf Spalten der H-Matrix Hsym gemäß Gleichung (12).
-
Wird in den Speicher geschrieben, dann entsprechen die Bits A
1 bis A
5 den transformierten Bits
bis
der Schreibadresse a
S. Wird aus dem Speicher gelesen, dann entsprechen die Bits A
1 bis A
5 den transformierten Bits
bis
der Leseadresse a
L.
-
Die Generatormatrix G
sys des Codes in systematischer Form ist
-
In dem Beispiel ist der Coder 12 so ausgestaltet, dass er zu den Nutzdatenbits x
1 bis x
5 die Prüfbits c
1 bis c
5 entsprechend der G-Matrix G
sym gemäß den folgenden Beziehungen bestimmt
und an dem Ausgang des Coders 12 die Bits c
1, ... , c
5,x
1 ,... ,x
5 bereitstellt, wobei die Bitkombination
ein Codewort des Fehlercodes C
a ist.
-
In dem Speicher 11 werden im fehlerfreien Fall die Bits c
1,... ,c
5,x
1,...,x
5 unter der Schreibadresse a
S gespeichert. Die Schreibadresse a
S liegt am Adresseingang des Speichers 11 und am Eingang der Adresstransformationsschaltung 13 an. Die Adresstransformationsschaltung 13 führt die Adresstransformation f durch, wobei die Adresse a
S in die Adressbits
transformiert wird. Die Adresstransformation f wird im Folgenden näher erläutert.
-
Es ist möglich, dass in dem Speicher 11 gespeicherte Bits an der Adresse a
L ausgelesen werden. In diesem Fall liegt die Adresse a
L am Adresseingang des Speichers 11 und gleichzeitig an der Adresstransformationsschaltung 14 an. Die Adresstransformationsschaltung 14 führt die Adresstransformation f durch, wobei die Adresse a
L in die Adressbits
transformiert wird.
-
Der Speicher 11 stellt z.B. an hierfür vorgesehenen Datenausgangsleitungen eventuell fehlerhafte Bits
auch bezeichnet als eventuell fehlerhafte Bitfolge v', bereit.
-
Der erste Eingang des Korrektors 15 ist mit dem Ausgang der Adresstransformationsschaltung 14 verbunden und der zweite Eingang des Korrektors 15 ist mit dem Ausgang des Speichers 11 verbunden. Der Korrektor 15 ist so ausgestaltet, dass er an seinem Ausgang ein Korrektursignal e
1,..., e
10 zur Korrektur der eventuell fehlerhaften Bitfolge v' bildet und dem zweiten Eingang der XOR-Schaltung 17 bereitstellt. Der erste Eingang der XOR-Schaltung 17 ist mit dem Ausgang des Speichers 11 verbunden. An ihrem Ausgang stellt die XOR-Schaltung 17 die korrigierten Bits
bereit.
-
Der erste Eingang der Fehlererkennungsschaltung 16 ist mit dem Ausgang der Adresstransformationsschaltung 14 verbunden und der zweite Eingang der Fehlererkennungsschaltung 16 ist mit dem Ausgang des Speichers 11 verbunden. Die Fehlererkennungsschaltung 16 ist derart eingerichtet, dass sie an ihrem Ausgang ein Fehlersignal E in Abhängigkeit von
- - den transformierten Adressbits ,A5 und
- - der aus dem Speicher 11 gelesenen eventuell fehlerhaften Bitfolge v'
bildet.
-
2 zeigt eine beispielhafte Realisierung des Korrektors 15. Gemäß dem hier gezeigten Beispiel wird der Korrektor 15 als eine Reihenschaltung eines Syndromgenerators 21 mit einem Decoders 22 vorgeschlagen.
-
Beispielsweise kann der Syndromgenerator 21 derart eingerichtet sein, dass er in Abhängigkeit von an seinen Eingängen anliegenden transformierten eventuell fehlerhaften Adressbits
und der aus dem Speicher 11 ausgelesenen eventuell fehlerhaften Bitfolge v' ein Fehlersyndrom s = [s
1, s
2, s
3, s
4, s
5] entsprechend der H-Matrix
aus Gleichung (11) bestimmt gemäß
und an seinem Ausgang bereitstellt.
-
Der Ausgang des Syndromgenerators 21 ist mit einem fünf Bit breiten Eingang eines Decoders 22 verbunden, der das zehn Bit breite Korrektursignal
zur Korrektur der Bits
bildet und an seinem Ausgang bereitstellt.
-
3 zeigt eine beispielhafte Implementierung des Decoders 22 unter Verwendung von zehn UND-Gattern 31, 32, 33, 34, 35, 36, 37, 38, 39, 310, wobei jedes dieser UND-Gatter fünf Eingänge und einen Ausgang aufweist.
-
Wie in 2 gezeigt ist, erhält der Decoder 22 an seinem Eingang das Fehlersyndrom s mit den (Fehlersyndrom-) Komponenten s1 bis s5.
-
Die Komponente s1 ist (nicht-invertierend) mit den ersten Eingängen der UND-Gatter 31, 34, 36, 37, 38 und 39 verbunden. Weiterhin ist die invertierte Komponente s1 mit den ersten Eingängen der UND-Gatter 32, 33, 35 und 310 verbunden.
-
Die Komponente s2 ist (nicht-invertierend) mit den zweiten Eingängen der UND-Gatter 32, 34, 35, 36, 37, und 310 verbunden. Weiterhin ist die invertierte Komponente s2 mit den zweiten Eingängen der UND-Gatter 31, 33, 38 und 39 verbunden.
-
Die Komponente s3 ist (nicht-invertierend) mit den dritten Eingängen der UND-Gatter 31, 32, 33, 35, 37 und 38 verbunden. Weiterhin ist die invertierte Komponente s3 mit den dritten Eingängen der UND-Gatter 34, 36, 39 und 310 verbunden.
-
Die Komponente s4 ist (nicht-invertierend) mit den vierten Eingängen der UND-Gatter 33, 34, 35, 38, 39 und 310 verbunden. Weiterhin ist die invertierte Komponente s4 mit den vierten Eingängen der UND-Gatter 31, 32, 36 und 37 verbunden.
-
Die Komponente s5 ist (nicht-invertierend) mit den fünften Eingängen der UND-Gatter 31, 32, 33, 36, 39 und 310 verbunden. Weiterhin ist die invertierte Komponente s5 mit den fünften Eingängen der UND-Gatter 34, 35, 37 und 38 verbunden.
-
An dem Ausgang des UND-Gatters 31 wird der Korrekturwert e1, an dem Ausgang des UND-Gatters 32 der Korrekturwert e2, an dem Ausgang des UND-Gatters 33 der Korrekturwert e3, an dem Ausgang des UND-Gatters 34 der Korrekturwert e4, an dem Ausgang des UND-Gatters 35 der Korrekturwert e5, an dem Ausgang des UND-Gatters 36 der Korrekturwert e6, an dem Ausgang des UND-Gatters 37 der Korrekturwert e7, an dem Ausgang des UND-Gatters 38 der Korrekturwert e8, an dem Ausgang des UND-Gatters 39 der Korrekturwert e9 und an dem Ausgang des UND-Gatters 310 der Korrekturwert e10 bereitgestellt.
-
4 zeigt eine mögliche Implementierung der Fehlererkennungsschaltung 16.
-
Beispielhaft ist die Fehlererkennungsschaltung 16 so ausgestaltet, dass sie ein Fehlersignal E = 0 bereitstellt, wenn ein durch den Fehlercode Ca korrigierbarer Fehler vorliegt oder wenn kein Fehler vorliegt. Die Fehlererkennungsschaltung 16 liefert hingegen ein Fehlersignal E = 1, wenn ein durch den Fehlercode Ca nicht korrigierbarer Fehler vorliegt. Vorzugsweise sollen Adressfehler mit einer möglichst hohen Wahrscheinlichkeit erkannt werden.
-
Die Fehlererkennungsschaltung 16 umfasst einen Syndromgenerator, der entsprechend dem Syndromgenerator 21 ausgeführt sein kann. Weiterhin umfasst die Fehlererkennungsschaltung 16 einen Decoder, der entsprechend dem Decoder 22 ausgeführt sein kann. Zusätzlich weist die Fehlererkennungsschaltung 16 noch
- - ein ODER-Gatter 41 mit einem fünf Bit breiten Eingang und einem Ausgang,
- - ein NICHT-ODER-Gatter 42 mit einem zehn Bit breiten Eingang und einem Ausgang sowie
- - ein UND-Gatter 43 mit zwei Eingängen und einem Ausgang
auf. An dem Ausgang des UND-Gatters 43 wird das Fehlersignal E bereitgestellt.
-
Der Ausgang des in 4 gezeigten Syndromgenerators 21 ist mit dem Eingang des ODER-Gatters 41 und mit dem Eingang des Decoders 22 verbunden. Der Ausgang des Decoders 22 liefert das Korrektursignal e und ist mit dem Eingang des NICHT-ODER-Gatters 42 verbunden. Der Ausgang des ODER-Gatters 41 ist mit dem ersten Eingang des UND-Gatters 43 und der Ausgang des NICHT-ODER-Gatters 42 ist mit dem zweiten Eingang des UND-Gatters 43 verbunden.
-
Das ODER-Gatter 41 bildet die logische Verknüpfung
der an ihrem Eingang anliegenden Komponenten s
1 bis s
5 und das NICHT-ODER-Gatter 43 bildet die logische Verknüpfung
der an ihrem Eingang anliegenden Korrekturwerte e
1 bis e
10.
-
Das UND-Gatter 43 bildet das Fehlersignal E wie folgt:
-
Liegt kein Fehler vor, ist das Fehlersyndrom
-
Hieraus folgt
und nach Gleichung (16) ergibt sich E = 0. In diesem Fall wird kein Fehler angezeigt.
-
Liegt ein 1-Bitfehler b
i der i-ten Komponente der Bitfolge v' = v'
1,... v'
10 vor, der durch den Fehlercode C
a korrigiert wird, dann ist das durch den Decoder bestimmte Korrektursignal
und das NICHT-ODER-Gatter 42 gibt an seinem Ausgang den Wert 0 aus, woraus sich am Ausgang des UND-Gatters 43 als Fehlersignal E = 0 ergibt.
-
Somit ist das Fehlersignal E gleich 0, wenn das Fehlersyndrom s = 0 ist oder wenn ein durch den Fehlercode Ca korrigierbarer Fehler vorliegt. In dem hier erläuterten Beispiel ist das der 1-Bitfehler in der Bitfolge v'.
-
Die Fehlererkennungsschaltung 16 und der Korrektor 15 können beispielsweise gemeinsam oder separat implementiert werden. In einer beispielhaften Implementierung kann ein einzelner Syndromgenerator 21 vorgesehen sein, der sowohl für den Korrektor 15 als auch die Fehlererkennungsschaltung 16 genutzt wird. Entsprechend kann ein Decoder 22 oder es können mehrere Decoder 22 vorgesehen sein.
-
Auch ist es eine Option, die Transformationsschaltungen 13 und 14 mittels einer einzelnen physischen Implementierung zu realisieren. Beispielsweise kann eine einzelne Transformationsschaltung unter der Verwendung mindestens eines Multiplexers eingesetzt werden, um die Funktion der Transformationsschaltungen 13 und 14 bereitzustellen.
-
Adresstransformation
-
Im Folgenden wird die Bestimmung der Adresstransformation f, wie sie beispielsweise in den Adresstransformationsschaltungen 13 und 14 realisiert sein kann, näher erläutert.
-
Es wird ein adressierbarer Speicher mit 64 Adressen 0,1, 2, ... ,63 betrachtet. Eine Adresse kann somit mittels sechs Bits
dargestellt werden. Binärdarstellungen der Adressen 0 bis 63 sind wie üblich
-
Beispielhaft wird N = 10 betrachtet. Die zehn möglichen korrigierbaren Fehler sind in diesem Beispiel die 1-Bitfehler b1,... , b10 in der Bitfolge v' aus zehn Bits (mit den fünf Prüfbits c'1,...c'5 und den fünf Nutzdatenbits x'1 ... , x'5) .
-
Die zugehörigen Fehlervektoren sind die 15-stelligen Vektoren
-
Die jeweils letzten fünf Komponenten der Fehlervektoren, die den transformierten Adresswerten entsprechen, sind gleich 0. Die entsprechenden Fehlersyndrome sind
wobei
durch Gleichung (11) bestimmt ist.
-
Es wird der Fall betrachtet, dass die Speicherzellenfehler
und
erkannt werden sollen.
-
Es gilt
und
-
Die Adresstransformation f ist so bestimmt, dass sich die transformierten Adresswerte f(a) =A
1,... ,A
5 für eine beliebige der 64 Adressen nach Gleichung (1) von den 11 Werten unterscheiden:
-
Die Adresstransformation f ist darüber hinaus so bestimmt, dass sich die transformierten Adresswerte A
1 bis A
5 für eine beliebige der 64 Adressen von den 11 Werten
unterscheiden.
-
Gemäß den Gleichungen (18) und (19) gilt beispielhaft:
-
Somit unterscheiden sich die in Gleichungen (20) und (21) bestimmten Werte nicht.
-
Als Wertebereich für die Adresstransformation f stehen 2
5 = 32 mögliche 5-Bit Werte zur Verfügung. Von diesen 32 möglichen 5-Bit Werten verbleiben
-
5-Bit Werte, die ungleich [00000]T und ungleich den Fehlersyndromen s(b1) bis s(b10) gemäß Gleichung (17) sind.
-
Nachfolgend wird ein Beispiel angegeben, wie anhand der Adresstransformation f den 64 Adressen 21 transformierte Adresswerte zugeordnet werden können. Tabelle 1: Wertetafel einer ersten Adresstransformation f(a)
A 1 A 2 A 3 A 4 A 5 = f(a) | a | a | a | a |
00001 | 0 | 21 | 42 | 63 |
Tabelle 1: Wertetafel einer ersten Adresstransformation f(a) (Fortsetzung)
A 1 A 2 A 3 A 4 A 5 = f(a) | a | a | a | a |
00010 | 1 | 22 | 43 | |
00011 | 2 | 23 | 44 | |
00100 | 3 | 24 | 45 | |
00101 | 4 | 25 | 46 | |
00110 | 5 | 26 | 47 | |
01000 | 6 | 27 | 48 | |
01001 | 7 | 28 | 49 | |
01010 | 8 | 29 | 50 | |
01100 | 9 | 30 | 51 | |
01111 | 10 | 31 | 52 | |
10000 | 11 | 32 | 53 | |
10001 | 12 | 33 | 54 | |
10010 | 13 | 34 | 55 | |
10100 | 14 | 35 | 56 | |
10111 | 15 | 36 | 57 | |
11000 | 16 | 37 | 58 | |
11011 | 17 | 38 | 59 | |
11101 | 18 | 39 | 60 | |
11110 | 19 | 40 | 61 | |
11111 | 20 | 41 | 62 | |
-
Gemäß der ersten Zeile der Tabelle 1 werden die Adressen 0, 21, 42 und 63 durch die Adresstransformation f in die transformierten Adressbits 00001 abgebildet. Die Adressen 1, 22 und 43 werden entsprechend der zweiten Zeile in die transformierten Adressbits 00010 abgebildet usf. Schließlich zeigt die letzte Zeile der Tabelle 1, dass die Adressen 20, 41 und 62 in die transformierten Adressbits 11111 abgebildet werden.
-
Tabelle 2 zeigt eine Wertetafel einer zweiten Adresstransformation. Entsprechend der ersten Zeile der Tabelle 2 wird nur die Adresse 0 durch die Adresstransformation f in die transformierten Adressbits 00001 abgebildet. Jeder Fehler, der die Adresse 0 in irgendeine andere Adresse verfälscht, führt entsprechend zu transformierten Adresswerten, die sich von dem transformierten Adresswert 00001 unterscheiden. Tabelle 2: Wertetafel einer zweiten Adresstransformation f(a)
A 1 A 2 A 3 A 4 A 5 = f(a) | a | a | a | a |
00001 | 0 | | | |
00010 | 1 | 22 | 43 | |
00011 | 2 | 23 | 44 | 63 |
00100 | 3 | 24 | 45 | 42 |
00101 | 4 | 25 | 46 | 21 |
00110 | 5 | 26 | 47 | |
01000 | 6 | 27 | 48 | |
01001 | 7 | 28 | 49 | |
01010 | 8 | 29 | 50 | |
01100 | 9 | 30 | 51 | |
01111 | 10 | 31 | 52 | |
10000 | 11 | 32 | 53 | |
10001 | 12 | 33 | 54 | |
10010 | 13 | 34 | 55 | |
10100 | 14 | 35 | 56 | |
10111 | 15 | 36 | 57 | |
11000 | 16 | 37 | 58 | |
11011 | 17 | 38 | 59 | |
11101 | 18 | 39 | 60 | |
11110 | 19 | 40 | 61 | |
11111 | 20 | 41 | 62 | |
-
Eine Implementierung einer als Tabelle beschriebenen Adresstransformation in Form einer Adresstransformationsschaltung kann beispielsweise mit einem Synthesetool realisiert werden. Eine solche Adresstransformationsschaltung kann beispielsweise eine kombinatorische Schaltung oder einen Nur-Lese-Speicher (ROM) umfassen oder als einer dieser Varianten realisiert sein.
-
Erhöhung der Fehlererkennungswahrscheinlichkeit
-
Nachfolgend wird beispielhaft ausgeführt, wie die Fehlererkennungswahrscheinlichkeit für Adressfehler stufenweise bis zu einer gewünschten Fehlererkennungswahrscheinlichkeit erhöht werden kann.
-
Zunächst kann hierfür die H-Matrix
des Fehlercodes C
a in eine modifizierte H-Matrix
eines Fehlercodes C
a1 modifiziert werden, wobei die Matrix
aus der Matrix
so gebildet wird, dass zu der Matrix
eine (m+ 1)-te Zeile von n binären Werten hinzugefügt wird, die n Nullen aufweisen kann. Weiterhin kann die m-dimensionale Einheitsmatrix I
m durch eine (m + 1)-dimensionale Einheitsmatrix I
m+1 ersetzt werden.
-
Die Adresstransformation f ist so bestimmt, dass sich die transformierten (m+ 1)-komponentigen Adresswerte f(a) =A
1,... ,A
m+1 für eine beliebige mögliche Speicheradresse a von allen (m+1)-komponentigen Werten (wobei es (N + 1) solche Werte gibt)
unterscheiden. Insoweit zeigt Gleichung (22) einen Unterschied zur Gleichung (1).
-
Die (m+1)-dimensionalen Vektoren
werden aus den m-dimensionalen Vektoren
dadurch gebildet, dass an jeden dieser Vektoren eine 0 angefügt wird. Anstelle der (2
m - N - 1) möglichen Werte für die transformierten Adresswerte des Fehlercodes C
a ergeben sich (2
m+1 - N - 1) mögliche Werte für die transformierten Adresswerte, wodurch sich die relative Anzahl der nicht erkennbaren Adressfehler verringert.
-
In einem nächsten Schritt ist es möglich, die H-Matrix
des Fehlercodes C
a1 in eine modifizierte H-Matrix
eines Fehlercodes C
a2 zu modifizieren, wobei die Matrix
aus der Matrix
so gebildet wird, dass zu der Matrix
eine (m + 2)-te Zeile aus n binären Werten hinzugefügt wird, die n Nullen aufweisen kann. Weiterhin kann die (m+ 1)-dimensionale Einheitsmatrix I
m+1 durch eine (m+2)-dimensionale Einheitsmatrix I
m+2 ersetzt werden.
-
Die Adresstransformation f ist so bestimmt, dass sich die transformierten (m + 2)-komponentigen Adresswerte f(a) = A
1,... ,A
m+2 für eine beliebige mögliche Speicheradresse a von allen (m + 2)-komponentigen Werten (wobei es (N + 1) solche Werte gibt)
unterscheiden. Hierbei sei auf den Unterschied zwischen den Gleichungen (22) und (23) verwiesen.
-
Die (m + 2)-dimensionalen Vektoren
sind aus den (m
+ 1)-dimensionalen Vektoren
dadurch bestimmt, dass an jeden dieser Vektoren eine 0 angefügt wird. Anstelle der 2
m+ 1 - N - 1 möglichen Werte für die transformierten Adressbits des Fehlercodes ergeben sich nun 2
m+2 - N - 1 mögliche Werte für die transformierten Adressbits, wodurch sich die relative Anzahl der nicht erkennbaren Adressfehler weiter verringert.
-
Entsprechend kann die H-Matrix (schrittweise) weiter modifiziert werden, um die Fehlererkennungswahrscheinlichkeit für Adressfehler sukzessive zu erhöhen.
-
In Bezug auf das hier erläuterte Beispiel mit der H-Matrix gemäß Gleichung (11) resultiert aus einer ersten Modifikation gemäß den obigen Ausführungen eine modifizierte H-Matrix des Fehlercodes C
a1
-
Eine zweite Modifikation führt zu einer weiter modifizierten H-Matrix
des Fehlercodes C
a2.
-
Beispiel
-
Beispielhaft wird ein adressierbarer Speicher mit 1024 Adressen betrachtet.
-
Die H-Matrix
des Fehlercodes C
a gemäß Gleichung (11) weist fünf Zeilen und damit fünf Prüfbits und fünf Bits A
1 bis A
5 transformierter Adresswerte auf. Die Adresstransformation f bildet die 1024 möglichen Adressen (zehn Bits) auf diese fünf Bits transformierter Adresswerte f(a) ab.
-
mit
weist 11 fünf-dimensionale Werte oder Belegungen auf, die nicht als mögliche 5-Bit transformierte Adresswerte f(a) zur Verfügung stehen. Damit ist die Adresstransformation / so bestimmt, dass die transformierten Adresswerte f(a) für jede der Adressen a aus {0,1,..., 1023} ungleich dieser 11 Werte ist und somit 2
5 - 11 = 21 verschiedene Werte annehmen kann. Der Wertebereich der Adresstransformation f umfasst somit 21 Werte.
-
Diese 21 unterschiedlichen Werte können als transformierte Adresswerte f(a) verwendet werden.
-
Es ist möglich, jedem dieser 21 unterschiedlichen Werte jeweils 48 oder 49 Adressen des verwendeten Speichers zuzuordnen, da
gilt. Somit werden höchstens 49 Adressen und mindestens 48 Adressen in eine transformierte Adresse abgebildet.
-
Für eine Adresse a gibt es 1023 mögliche Adressfehler, die die Adresse a in irgendeine andere Adresse verfälschen können. Beispielhaft wird davon ausgegangen, dass jeder mögliche Adressfehler mit der gleichen Wahrscheinlichkeit auftritt.
-
Die Wahrscheinlichkeit P(a, a')
det, dass ein Adressfehler erkannt wird, bestimmt sich somit zu
also zu ca. 48%.
-
Reicht diese Fehlererkennungswahrscheinlichkeit nicht aus, kann der Fehlercode Ca mit der H-Matrix gemäß Gleichung (11) durch den Fehlercode Ca1 mit der H-Matrix gemäß Gleichung (24) mit 6 Prüfbits ersetzt werden.
-
Die H-Matrix
weist sechs Zeilen und damit sechs Prüfbits und sechs Bits A
1 bis A
6 transformierter Adresswerte auf, in die die 1024 Adressen durch die Adresstransformation / transformiert werden.
-
Die Menge
mit
weist nun 11 sechs-dimensionale Werte oder Belegungen auf. Die Adresstransformation f ist so bestimmt, dass der transformierte Adresswert f(a) für jede Adresse a ungleich dieser 11 Werte ist. Der Wertebereich der Adresstransformation f umfasst somit 2
6 - 11 = 53 verschiedene Werte, die als transformierte Adresswerte verwendet werden können.
-
Es ist möglich, jedem dieser 53 unterschiedlichen Werte jeweils 19 oder 20 Adressen des verwendeten Speichers zuzuordnen, da
gilt. Somit werden höchstens 20 Adressen und mindestens 19 Adressen in eine transformierte Adresse abgebildet.
-
Die Wahrscheinlichkeit P(a,a')
det\, dass ein Adressfehler erkannt wird, bestimmt sich somit zu
also zu ca. 79%.
-
Ist auch diese Fehlererkennungswahrscheinlichkeit nicht ausreichend, kann in einem nächsten Schritt den Fehlercode Ca1 mit der H-Matrix gemäß Gleichung (24) durch den Fehlercode Ca2 mit der H-Matrix gemäß Gleichung (25) mit 7 Prüfbits ersetzt werden.
-
Die H-Matrix
weist sieben Zeilen und damit sieben Prüfbits und sieben Bits A
1 bis A
7 transformierte Adresswerte auf, in die die 1024 Adressen durch die Adresstransformation / transformiert werden.
-
Die Menge
mit
weist jetzt 11 sieben-dimensionale Werte oder Belegungen auf. Die Adresstransformation f ist so bestimmt, dass der transformierte Adresswert f(a) für jede Adresse a ungleich dieser 11 Werte ist. Der Wertebereich der Adresstransformation f umfasst somit 2
7 - 11 = 117 verschiedene Werte, die als transformierte Adresswerte verwendet werden können.
-
Es ist möglich, jedem dieser 117 unterschiedlichen Werte jeweils 8 oder 9 Adressen des verwendeten Speichers zuzuordnen, da
gilt. Somit werden höchstens 8 Adressen und mindestens 7 Adressen in eine transformierte Adresse abgebildet.
-
Die Wahrscheinlichkeit P(a, a')
det, dass ein Adressfehler erkannt wird, bestimmt sich somit zu
also zu ca. 90%.
-
Ist diese Fehlererkennungswahrscheinlichkeit immer noch nicht ausreichend, kann in entsprechenden folgenden Schritten die H-Matrix in analoger Weise weiter modifiziert werden, bis die gewünschte Fehlererkennungswahrscheinlichkeit für Adressfehler erreicht ist.
-
Speicherzellenfehler
-
Nachfolgend wird ausgeführt, wie ein Speicherzellenfehler erkannt wird.
-
Als Beispiel eines Speicherzellenfehlers dient der Speicherzellenfehler All-0. Am Adresseingang des Speichers 11 aus
1 und am Eingang der Adresstransformationsschaltung 14 liegt die Leseadresse a
L an. Die Adresstransformationsschaltung 14 bildet die transformierten Adresswerte
die an dem ersten Eingang des Korrektors 15 anliegen. Der Speicher 11 stellt auf Grund des All-0-Fehlers an seinem Ausgang die Bitfolge
bereit, die an dem zweiten Eingang des Korrektors 15 anliegt.
-
Wie in
2 gezeigt, ist der Korrektor 15 als eine Reihenschaltung aus Syndromgenerator 21 und Decoder 22 ausgeführt. Die transformierten Adressbits
bis
liegen an dem ersten Eingang des Syndromgenerators 21 an und an seinem zweiten Eingang liegt die Bitfolge v' an. Der Syndromgenerator 21 ist derart eingerichtet, dass er für die transformierten Adressbits
entsprechend Gleichung (15) das Fehlersyndrom
bildet und an seinem Ausgang ausgibt. Wie in
4 gezeigt, ist dieser Ausgang des Syndromgenerators 21 mit dem Eingang des Decoders 22 und mit dem Eingang des ODER-Gatters 41 verbunden.
-
Die Adresstransformationsschaltung 14 ist derart eingerichtet, dass die transformierten Adresswerte jeder möglichen Adresse ungleich den Fehlersyndromen der korrigierbaren Fehler in der Bitfolge v' und ungleich dem Wert 00000 sind. Der Decoder 22 gibt den Korrekturwert
aus, der an den Eingang des NICHT-ODER-Gatters 42 geführt wird.
-
Das NICHT-ODER-Gatter 42 stellt an seinem Ausgang den Wert 1 bereit, der dem UND-Gatter 43 zugeführt wird. Da das von dem Syndromgenerator 21 bereitgestellte Fehlersyndrom ungleich 00000 ist, stellt das ODER-Gatter 41 an seinem Ausgang den Wert 1 bereit, der ebenfalls dem UND-Gatter 43 zugeführt wird. Somit gibt das UND-Gatter 43 an seinem Ausgang das Fehlersignal E = 1 aus, was im Ergebnis bestätigt, dass ein nicht korrigierbarer Fehler aufgetreten ist, so dass der Speicherzellenfehler All-0 als nicht korrigierbarer Fehler erkannt wird.
-
Liegt kein Fehler vor oder ist ein korrigierbarer Fehler aufgetreten, so ist das Fehlersignal E am Ausgang des UND-Gatters 43 gleich 0.
-
Literaturverzeichnis:
-
- [1] Lin, S.; Costello, D.: „Error Control Coding“, Prentice Hall 1983, Seiten 79 bis 82, 141 bis 170 und 499 bis 502