-
Vorrichtung zur Erkennung und/oder
Korrektur von Fehlern in aus einer Speichereinrichtung ausgelesenen
Daten Die vorliegende Erfindung betrifft eine Vorrichtung gemäß dem Oberbegriff
des Patentanspruchs 1, d.h. eine Vorrichtung zur Erkennung und/oder
Korrektur von Fehlern in aus einer Speichereinrichtung ausgelesenen
Daten.
-
Mit fortschreitender Technologieentwicklung, genauer
gesagt aufgrund der immer kleiner werdenden Strukturen in Speichereinrichtungen
oder sonstigen integrierten Schaltungen oder Schaltungsteilen nimmt
die Wahrscheinlichkeit von Fehlern in aus einer Speichereinrichtung
ausgelesenen Daten in einem Maße
zu, daß zumindest
bei sicherheitsrelevanten Anwendungen auf die Erkennung und/oder
die Korrektur solcher Fehler nicht mehr verzichtet werden kann.
-
Vorrichtungen und Verfahren zur Erkennung und/oder
Korrektur von Fehlern in aus einer Speichereinrichtung ausgelesenen
Daten sind seit langem bekannt.
-
Die Fehlererkennung kann beispielsweise unter
Verwendung von sogenannten Parity-Bits erfolgen. Dabei wird jedes
Mal, wenn Daten in die Speichereinrichtung geschrieben werden, aus
diesen Daten ein Parity-Bit erzeugt und in der selben Speichereinrichtung
oder einer anderen Speichereinrichtung gespeichert. Werden die in
der Speichereinrichtung gespeicherten Daten dann zu einem späteren Zeitpunkt
ausgelesen, so wird auch das diesen Daten zugeordnete Parity-Bit
ausgelesen, und überprüft, ob die
ausgelesenen Daten die Daten sein können, die der Erzeugung des
ausgelesenen Parity-Bits zugrundelagen. Ist dies der Fall, so wird
davon ausgegangen, daß die
ausgelesenen Daten keinen Fehler enthalten. Anderenfalls wird davon
ausgegangen, daß die
ausgelesenen Daten einen Fehler ent halten, wobei dieser Fehler jedoch
im allgemeinen nicht lokalisierbar und korrigierbar ist.
-
Eine Fehlerkorrektur ist möglich, wenn
anstelle von Parity-Bits
ein error correction code bzw. ECC-Daten erzeugt und ausgewertet
werden. Dabei werden jedes Mal, wenn Daten in die Speichereinrichtung
geschrieben werden, aus diesen Daten ECC-Daten erzeugt und in der selben Speichereinrichtung
oder einer anderen Speichereinrichtung gespeichert. Werden die in
der Speichereinrichtung gespeicherten Daten dann zu einem späteren Zeitpunkt ausgelesen,
so werden auch die diesen Daten zugeordneten ECC-Daten ausgelesen
und überprüft, ob die
ausgelesenen Daten die Daten sein können, die der Erzeugung der
ausgelesenen ECC-Daten zugrundelagen. Ist dies der Fall, so wird
davon ausgegangen, daß die
ausgelesenen Daten keinen Fehler enthalten. Anderenfalls wird davon
ausgegangen, daß die
ausgelesenen Daten einen Fehler enthalten, wobei dieser Fehler unter
Verwendung der ausgelesenen ECC-Daten lokalisierbar und behebbar
ist.
-
Zur Vermeidung von Mißverständnissen
sei darauf hingewiesen, daß vorstehend
und im Folgenden
- – von Fehlererkennung gesprochen
wird, wenn durch die zugrundeliegende Überprüfung "nur" erkannt
werden kann, daß Fehler
vorhanden sind, die vorhandenen Fehler aber nicht korrigiert werden
können,
- – von
Fehlerkorrektur gesprochen wird, wenn durch die zugrundeliegende Überprüfung vorhandene
Fehler korrigiert werden können,
und
- – auch
dann von Fehlerkorrektur gesprochen wird, wenn durch die zugrundeliegende Überprüfung bestimmte
Fehler nur erkannt, aber bestimmte Fehler auch korrigiert werden
können.
-
Sowohl eine Fehlererkennung und erst
recht eine Fehlerkorrektur erfordern Maßnahmen, die dazu führen, daß das Einschreiben
von Daten in die Speichereinrichtung und das Auslesen von Daten
aus der Speichereinrichtung mehr Zeit erfordern als es ohne Fehlererkennung
und/oder Fehlerkorrektur der Fall wäre. Dies führt dazu, daß ein mit
einer Fehlererkennung und/oder Fehlerkorrektur arbeitendes System mit
einer geringeren Taktfrequenz und/oder mit einer größeren Anzahl
von Wait States arbeiten muß als
es ohne Fehlererkennung und/oder Fehlerkorrektur möglich wäre. Dies
ist insbesondere bei Systemen, in welchen keine Fehlererkennung
und/oder Fehlerkorrektur erforderlich ist, ein Nachteil.
-
Um allen möglichen Bedürfnissen gerecht zu werden,
ist es erforderlich, daß Speichereinrichtungen
und Speichereinrichtungen enthaltende Bausteine in verschiedenen
Varianten angeboten werden, nämlich
in einer Variante mit Fehlererkennung und/oder Fehlerkorrektur,
und in einer Variante ohne Fehlererkennung und/oder Fehlerkorrektur.
Dies erfordert seitens des Herstellers jedoch einen sehr großen Aufwand.
-
Der vorliegenden Erfindung liegt
daher die Aufgabe zugrunde, die Vorrichtung gemäß dem Oberbegriff des Patentanspruchs
1 derart weiterzubilden, daß diese
sowohl in Systemen einsetzbar ist, in welchen eine Fehlererkennung
und/oder Fehlerkorrektur zwingend notwendig ist, als auch in Systemen
einsetzbar ist, in welchen eine maximale Arbeitsgeschwindigkeit
die höchste
Priorität
hat.
-
Diese Aufgabe wird erfindungsgemäß durch die
in Patentanspruch 1 beanspruchte Vorrichtung gelöst.
-
Die erfindungsgemäße Vorrichtung zeichnet sich
dadurch aus, daß sie
durch den Benutzer konfigurierbar ist.
-
Dadurch ist es beispielsweise, aber
nicht ausschließlich
möglich,
- – eine
Vorrichtung, die in der Lage ist, eine Fehlererkennung durchzuführen, so
zu konfigurieren, daß sie
keine Fehlererkennung durchführt, und/oder
- – eine
Vorrichtung, die in der Lage ist, eine Fehlerkorrektur durchzuführen, so
zu konfigurieren, daß sie
keine Fehlerkorrektur durchführt,
und/oder
- – eine
Vorrichtung, die in der Lage ist, sowohl eine Fehlererkennung als
auch eine Fehlerkorrektur durchzuführen, so zu konfigurieren,
daß sie
nur eine Fehlererkennung durchführt,
und/oder
- – eine
Vorrichtung, die in der Lage ist, sowohl eine Fehlererkennung als
auch eine Fehlerkorrektur durchzuführen, so zu konfigurieren,
daß sie
nur eine Fehlerkorrektur durchführt,
und/oder
- – eine
Vorrichtung, die in der Lage ist, verschiedene Arten von Fehlererkennung
durchzuführen,
so zu konfigurieren, daß sie
eine ganz bestimmte Art von Fehlererkennung durchführt, und/oder
- – eine
Vorrichtung, die in der Lage ist, verschiedene Arten von Fehlerkorrektur
durchzuführen,
so zu konfigurieren, daß sie
eine ganz bestimmte Art von Fehlerkorrektur durchführt.
-
Dadurch kann eine Vorrichtung zur
Erkennung und/oder Korrektur von Fehlern in aus einer Speichereinrichtung
ausgelesenen Daten optimal an die Bedürfnisse des Benutzers und die
Einsatzbedingungen angepaßt
werden.
-
Die Erfindung wird nachfolgend anhand
von Ausführungsbeispielen
unter Bezugnahme auf die Figur näher
erläutert.
-
Die Figur zeigt ein Blockschaltbild
der hier vorgestellten Vorrichtung zur Erkennung und/oder Korrektur
von Fehlern in aus einer Speichereinrichtung ausgelesenen Daten.
-
Die im folgenden beschriebene Vorrichtung zur
Erkennung und/oder Korrektur von Fehlern in aus einer Speichereinrichtung
ausgelesenen Daten ist im betrachteten Beispiel Bestandteil einer
programmgesteuerten Einheit, beispielsweise eines Mikroprozessors,
eines Mikrocontrollers oder eines Signalprozessors; die Speichereinrichtung
ist ein interner Speicher der programmgesteuerten Einheit.
-
Die beschriebene Vorrichtung zur
Erkennung und/oder Korrektur von Fehlern in aus einer Speichereinrichtung
ausgelesenen Daten könnte
aber auch Bestandteil einer beliebigen anderen Schaltung sein, beispielsweise
Bestandteil eines Speicher-Chips.
-
Die Speichereinrichtung wird im betrachteten Beispiel
durch einen flüchtigen
Speicher, beispielsweise durch ein RAM gebildet. Es könnte sich
aber auch um einen nichtflüchtigen
Speicher wie beispielsweise einen Flash-Speicher handeln. Der Einsatz
der beschriebenen Vorrichtung zur Erkennung und/oder Korrektur von
Fehlern in aus einer Speichereinrichtung ausgelesenen Daten kann
sich sogar bei einem ROM als vorteilhaft erweisen.
-
Die in der Figur gezeigte Anordnung
enthält die
im folgenden beschriebene Vorrichtung zur Erkennung und/oder Korrektur
von Fehlern in aus einer Speichereinrichtung ausgelesenen Daten,
sowie die Speichereinrichtung.
-
Die Speichereinrichtung ist mit dem
Bezugszeichen MEM1 bezeichnet und wird im folgenden als erste Speichereinrichtung
bezeichnet.
-
Die in der Figur gezeigte Anordnung
neben der ersten Speichereinrichtung MEM1 eine zweite Speichereinrichtung
MEM2 zum Speichern von zur Fehlererkennung und/oder Fehlerkorrektur
benötigten
Daten, eine Vorrichtung EC1 zur Erzeugung der zur Fehlererkennung
und/oder Fehlerkorrektur benötigten
Daten, eine Vorrichtung EC2 zur Auswertung der zur Fehlererkennung
und/oder Fehlerkorrektur benötigten
Daten, eine Fehlerkorrektureinrichtung EC3, und ein Steuerregister
ECCTRL zur Steuerung der Vorrichtungen EC1 und EC2 zur Erzeugung
und Auswertung der zur Fehlererkennung und/oder Fehlerkorrektur
benötigten
Daten und der Fehlerkorrektureinrichtung EC3.
-
In die Speichereinrichtung MEM1 zu
schreibende Daten werden dieser über
einen Schreibdatenbus WBUS zugeführt.
Aus der Speichereinrichtung MEM1 ausgelesene Daten werden über einen ersten
Lesedatenbus RBUS1 aus dieser ausgegeben, bei Bedarf durch die Fehlerkorrektureinrichtung EC3
korrigiert und über
einen zweiten Lesedatenbus RBUS2 an die Einrichtung weitergeleitet,
welche die Daten angefordert hat. Die genannten Busse haben im betrachteten
Beispiel jeweils eine Breite von 16 Bits, können aber auch beliebig viel
breiter oder schmaler sein.
-
Das Steuerregister ECCTRL enthält im betrachteten
Beispiel zwei Steuerbits, die mit den Bezugszeichen ECC_EN und C_EN
bezeichnet sind. Wie später
noch genauer beschrieben wird, wird durch die Steuerbits C_EN und
ECC_EN im betrachteten Beispiel bestimmt, ob
- – eine Fehlererkennung,
genauer gesagt eine Erkennung von Fehlern in aus der ersten Speichereinrichtung
MEM1 ausgelesenen Daten erfolgen soll, oder
- – eine
Fehlerkorrektur, genauer gesagt eine Korrektur von Fehlern in aus
der ersten Speichereinrichtung MEM1 ausgelesenen Daten erfolgen
soll, oder
- – weder
eine Fehlererkennung noch eine Fehlerkorrektur erfolgen soll.
-
Wenn das Steuerbit C_EN den Wert
1 hat, bedeutet dies, daß entweder
eine Fehlererkennung oder eine Fehlerkorrektur erfolgen soll, wobei
es vom Wert des Steuerbits ECC_EN abhängt, ob eine Fehlererkennung
oder eine Fehlerkorrektur erfolgt. Anderenfalls, d.h., wenn das
Steuerbit C_EN den Wert 0 hat, bedeutet dies, das weder eine Fehlererkennung
noch eine Fehlerkorrektur erfolgen soll; der Wert des Steuerbits
ECC_EN ist in diesem Fall bedeutungslos.
-
Wenn das Steuerbit C_EN den Wert
1 hat, und auch das Steuerbit ECC_EN den Wert 1 hat, bedeutet dies,
daß eine
Fehlerkorrektur erfolgen soll. Anderenfalls, d.h., wenn das Steuerbit
ECC_EN den Wert 0 hat, bedeutet dies, daß eine Fehlererkennung erfolgen
soll.
-
Selbstverständlich kann auch eine beliebige andere
Zuordnung zwischen den Werten der Steuerbits und deren Bedeutung
vorgesehen werden.
-
Das Steuerregister ECCTRL, und damit auch
die Steuerbits C_EN und ECC_EN können durch
den Benutzer der Anordnung beschrieben werden. Der Inhalt des Steuerregisters
ECCTRL kann vorzugsweise zu beliebigen Zeitpunkten, insbesondere
auch während
des normalen Betriebes der Anordnung geändert werden. Es kann sich
als vorteilhaft erweisen, wenn das Steuerregister ECCTRL durch einen
nichtflüchtigen
Speicher gebildet wird.
-
Die vorstehend bereits erwähnte Vorrichtung EC1
dient zur Erzeugung der zur Fehlererkennung und/oder Fehlerkorrektur
benötigten
Daten und enthält
einen Parity-Bit-Generator PGEN, einen ECC-Daten-Generator ECCGEN,
einen ersten Multiplexer MUX1, und einen zweiten Multiplexer MUX2.
-
Der Parity-Bit-Generator PGEN ist
eingangsseitig mit dem Schreibdatenbus WBUS verbunden und erzeugt
pro Datenwort, welches im betrachteten Beispiel 16 Bits umfaßt, aber
auch beliebig viel länger oder
kürzer
sein kann, ein zur Fehlererkennung dienendes Parity-Bit und gibt
dieses an den ersten Multiplexer MUX1 aus.
-
Der ECC-Daten-Generator ECCGEN ist ebenfalls
eingangsseitig mit dem Schreibdatenbus WBUS verbunden und erzeugt
für jedes
Datenwort zur Fehlerkorrektur dienende ECC-Daten und gibt diese
an den ersten Multiplexer MUX1 aus.
-
Die ECC-Daten werden im betrachteten
Beispiel durch einen sogenannten SEC-DED-Code gebildet. SEC-DED
bedeutet Single error correction – double error detection und
ermöglicht
es, daß beim späteren Auslesen
des den ECC-Daten zugrundeliegenden Datenwortes 1 Fehler korrigiert
oder 2 Fehler erkannt werden können.
D.h.,
- – wenn
das später
ausgelesene Datenwort nur einen Fehler enthält, kann dieser erkannt und
korrigiert werden,
- – wenn
das später
ausgelesene Datenwort zwei Fehler enthält, können diese erkannt, aber nicht mehr
lokalisiert und korrigiert werden,
- – und
wenn ein Datenwort drei Fehler enthält, ist weder eine Erkennung
noch eine Korrektur dieser Fehler gewährleistet bzw. möglich.
-
Selbstverständlich können die vom ECC-Daten-Generator
ECCGEN erzeugten ECC-Daten auch unter Verwendung eines beliebigen
anderen Codes erzeugt werden.
-
Der Parity-Bit-Generator PGEN und
der ECC-Daten-Generator ECCGEN arbeiten parallel, d.h. erzeugen
die von ihnen erzeugten Daten gleichzeitig, wobei die Erzeugung
der ECC-Daten je doch im allgemeinen mehr Zeit in Anspruch nehmen
wird als die Erzeugung des Parity-Bit.
-
Der erste Multiplexer MUX1 bekommt
als Eingangssignale die Ausgangssignale des Parity-Bit-Generators
PGEN und des ECC-Daten-Generators
ECCGEN zugeführt
und wird durch das Steuerbit ECC_EN gesteuert. Der Multiplexer MUX1 schaltet
die vom ECC-Daten-Generator ECCGEN ausgegebenen Daten durch, wenn
das Steuerbit ECC_EN den Wert 1 hat, und schaltet die vom Parity-Bit-Generators PGEN
ausgegebenen Daten durch, wenn das Steuerbit ECC_EN den Wert 0 hat.
-
Die vom ersten Multiplexer MUX1 ausgegebenen
Daten werden dem zweiten Multiplexer MUX2 zugeführt.
-
Der zweite Multiplexer MUX2 weist
noch einen zweiten Eingangsanschluß auf, wobei an diesen zweiten
Eingangsanschluß dauerhaft
der Wert 0 angelegt ist.
-
Der zweite Multiplexer MUX2 wird
durch das Steuerbit C_EN gesteuert. Er schaltet die ihm von ersten
Multiplexer MUX1 zugeführten
Daten durch, wenn das Steuerbit C_EN den Wert 1 aufweist, und er
schaltet die Daten "0" durch, wenn das
Steuerbit C_EN den Wert 0 aufweist.
-
Die vom zweiten Multiplexer MUX2
ausgegebenen Daten werden in die zweite Speichereinrichtung MEM2
geschrieben.
-
In die zweite Speichereinrichtung
MEM2 werden entweder die vom Parity-Bit-Generator PGEN erzeugten
Daten, oder die vom ECC-Daten-Generator ECCGEN erzeugten Daten,
oder Nullen geschrieben. Dabei hängt
es ausschließlich
von den Steuerbits C_EN und ECC_EN ab, welche Daten in die zweite
Speichereinrichtung MEM2 geschrieben werden. Wenn das Steuerbit
C_EN den Wert 0 aufweist, werden Nullen in die zweite Speichereinrichtung
MEM2 geschrieben; wenn das Steuerbit C_EN den Wert 1 aufweist, und
das Steuerbit ECC_EN den Wert 0, werden die vom Parity-Bit-Generator
PGEN erzeugten Daten in die zweite Speichereinrichtung MEM2 geschrieben;
wenn das Steuerbit C_EN den Wert 1 aufweist, und das Steuerbit ECC_EN
den Wert 1, werden die vom ECC-Daten-Generator ECCGEN erzeugten
Daten in die zweite Speichereinrichtung MEM2 geschrieben.
-
Die in der zweiten Speichereinrichtung MEM2
gespeicherten Daten werden später
verwendet, um Fehler in aus der ersten Speichereinrichtung MEM1
ausgelesenen Daten erkennen und/oder korrigieren zu können.
-
Beim Auslesen von in der ersten Speichereinrichtung
MEM1 gespeicherten Daten werden im wesentlichen zeitgleich mit der
Ausgabe dieser Daten aus der ersten Speichereinrichtung MEM1 automatisch
auch die zugehörigen
Daten aus der zweiten Speichereinrichtung MEM2 aus dieser ausgegeben. Beide
Daten, d.h. sowohl die aus der ersten Speichereinrichtung MEM1 ausgegebenen
Daten als auch die aus der zweiten Speichereinrichtung MEM2 ausgegebenen
Daten werden der vorstehend bereits erwähnten Vorrichtung EC2 zugeführt, und
diese überprüft sodann,
ob die aus der ersten Speichereinrichtung MEM1 ausgegebenen Daten
die Daten sind, die der Erzeugung der aus der zweiten Speichereinrichtung
MEM2 ausgegebenen Daten zugrundelagen.
-
Die Vorrichtung EC2 und enthält eine ECC-Daten-Auswertungseinrichtung
ECCCHK, eine Parity-Bit-Auswertungseinrichtung PCHK, ein erstes UND-Gatter
AND1, ein zweites UND-Gatter AND2, ein ODER-Gatter OR, und einen
Multiplexer MUX3.
-
Der ECC-Daten-Auswertungseinrichtung ECCCHK
werden sowohl die aus der ersten Speichereinrichtung MEM1 ausgegebenen
Daten als auch die aus der zweiten Speichereinrichtung MEM2 ausgegebenen
Daten zugeführt.
Die ECC-Daten-Auswertungseinrichtung ECCCHK geht davon aus, daß die aus
der zweiten Speichereinrichtung MEM2 ausgegebenen Daten die ECC-Daten
sind, die zu den aus der ersten Speichereinrichtung MEM1 ausgegebenen
Daten gehören,
und überprüft, ob die
aus der ersten Speicher einrichtung MEM1 ausgegebenen Daten die Daten
sein können,
die der Erzeugung der aus der zweiten Speichereinrichtung MEM2 ausgegebenen
(ECC-)Daten zugrundelagen. Hierbei kann die ECC-Daten-Auswertungseinrichtung
ECCCHK zu drei verschiedenen Ergebnissen kommen, nämlich
- 1) daß die
aus der ersten Speichereinrichtung MEM1 ausgegebenen Daten fehlerfrei
sind, d.h. genau die zuvor in die erste Speichereinrichtung MEM1
geschriebenen Daten sind, oder
- 2) daß die
aus der ersten Speichereinrichtung MEM1 ausgegebenen Daten einen
Fehler enthalten, oder
- 3) daß die
aus der ersten Speichereinrichtung MEM1 ausgegebenen Daten zwei
Fehler enthalten.
-
Die ECC-Daten-Auswertungseinrichtung ECCCHK
erzeugt in Abhängigkeit
hiervon ein Ausgangssignal DE (double error) und eine Vielzahl von Ausgangssignalen
SE (single error). Die Anzahl der Ausgangssignale SE entspricht
der Anzahl der Bits, die die aus der ersten Speichereinrichtung
MEM1 ausgegebenen Datenworte umfassen. Im betrachteten Beispiel
erzeugt die ECC-Daten-Auswertungseinrichtung
ECCCHK also ein Ausgangssignal DE und 16 Ausgangssignale SE. In
der Figur ist der besseren Übersichtlichkeit
halber nur ein Ausgangssignal SE dargestellt.
-
Durch das Ausgangssignal DE signalisiert die
ECC-Daten-Auswertungseinrichtung ECCCHK, ob die aus der ersten Speichereinrichtung
MEM1 ausgegebenen Daten zwei Fehler enthalten oder nicht. DE=1 bedeutet,
daß die
ECC-Daten-Auswertungseinrichtung ECCCHK bei der von ihr durchgeführten Überprüfung festgestellt
hat, daß die
aus der ersten Speichereinrichtung MEM1 ausgegebenen Daten zwei
Fehler enthalten. DE=0 bedeutet, daß dies nicht der Fall ist.
-
Durch die Ausgangssignale SE signalisiert die
ECC-Daten-Auswertungseinrichtung ECCCHK, ob die aus der ersten Speichereinrichtung
MEM1 ausgegebenen Daten 1 Fehler enthalten oder nicht, und welches
Bit der aus der ersten Speichereinrichtung MEM1 ausgegebenen Daten
fehlerhaft ist. Von den mehreren Ausgangssignalen SE ist jedes Ausgangssignal
SE einem bestimmten Bit der aus der ersten Speichereinrichtung MEM1
ausgegebenen Daten zugeordnet. Durch ein Ausgangssignal SE, das
den Wert 0 aufweist, wird signalisiert, daß das zugeordnete Bit der aus
der ersten Speichereinrichtung MEM1 ausgegebenen Daten fehlerfrei
ist; durch ein Ausgangssignal SE, das den Wert 1 aufweist, wird
signalisiert, daß das
zugeordnete Bit der aus der ersten Speichereinrichtung MEM1 ausgegebenen Daten
fehlerhaft ist und zur Korrektur invertiert werden muß.
-
Beim vorstehend erwähnten Auswertungsergebnis
1) der ECC-Daten-Auswertungseinrichtung ECCCHK
weisen sowohl die Ausgangssignale SE als auch das Ausgangssignal
DE den Wert 0 auf; beim Auswertungsergebnis 2) weist eines der Ausgangssignale
SE den Wert 1 auf, und alle anderen Ausgangssignale den Wert 0 auf;
beim Auswertungsergebnis 3) weisen sämtliche Ausgangssignale SE den
Wert 0 auf, und das Ausgangssignal DE den Wert 1.
-
Von den von der ECC-Daten-Auswertungseinrichtung
ECCCHK erzeugten Ausgangssignalen werden die Ausgangssignale SE
der Fehlerkorrektureinrichtung EC3 zugeführt, und das Ausgangssignal DE
dem ersten UND-Gatter AND1.
-
Der vorstehend bereits erwähnten Parity-Bit-Auswertungseinrichtung
PCHK werden – wie der
ECC-Daten-Auswertungseinrichtung ECCCHK – sowohl die aus der ersten
Speichereinrichtung MEM1 ausgegebenen Daten als auch die aus der zweiten
Speichereinrichtung MEM2 ausgegebenen Daten zugeführt. Die
Parity-Bit-Auswertungseinrichtung PCHK geht davon aus, daß die aus
der zweiten Speichereinrichtung MEM2 ausgegebenen Daten die Parity-Bits
sind, die zu den aus der ersten Spei chereinrichtung MEM1 ausgegebenen
Daten gehören, und überprüft, ob die
aus der ersten Speichereinrichtung MEM1 ausgegebenen Daten die Daten
sein können,
die der Erzeugung der vermeintlichen Parity-Bits zugrundelagen.
-
Die Parity-Bit-Auswertungseinrichtung PCHK
erzeugt ein das Ergebnis der Überprüfung repräsentierendes
Ausgangssignal. Dieses Ausgangssignal weist den Wert 1 auf, wenn
die aus der ersten Speichereinrichtung MEM1 ausgegebenen Daten die Daten
sein können,
die der Erzeugung der vermeintlichen Parity-Bits zugrundelagen,
also wenn die aus der ersten Speichereinrichtung MEM1 ausgegebenen
Daten vermutlich fehlerfrei sind. Das Ausgangssignal weist den Wert
0 auf, wenn dies nicht der Fall ist, also die aus der ersten Speichereinrichtung MEM1
ausgegebenen Daten Fehler enthalten.
-
Das Ausgangssignal der Parity-Bit-Auswertungseinrichtung
PCHK wird dem zweiten UND-Gatter AND2 zugeführt.
-
Die Parity-Bit-Auswertungseinrichtung PCHK
und die ECC-Daten-Auswertungseinrichtung ECCCHK
arbeiten parallel, d.h. werten die aus der zweiten Speichereinrichtung
MEM2 ausgegebenen Daten gleichzeitig aus. Da die aus der zweiten
Speichereinrichtung MEM2 ausgegebenen Daten nur entweder Parity-Bits
oder ECC-Daten sind, kann nur entweder das Auswertungsergebnis der
Parity-Bit-Auswertungseinrichtung PCHK oder das Auswertungsergebnis
der ECC-Daten-Auswertungseinrichtung ECCCHK richtig sein. Unabhängig hiervon ist
es so, daß die
Auswertung der Daten durch die ECC-Daten-Auswertungseinrichtung
ECCCHK im allgemeinen mehr Zeit in Anspruch nehmen wird als die
Auswertung der Daten durch die Parity-Bit-Auswertungseinrichtung
PCHK.
-
Dem UND-Gatter AND2 wird das invertierte Steuerbit
ECC_EN als zweites Eingangssignal zugeführt. Das UND-Gatter AND2 unterzieht
die ihm zugeführten
Signale einer UND-Verknüpfung
und gibt das Ergebnis dieser Verknüpfung an das ODER-Gatter OR
aus.
-
Das vorstehend bereits erwähnte erste UND-Gatter
AND1 weist ebenfalls zwei Eingangsanschlüsse auf. An den ersten Eingangsanschluß wird das
Ausgangssignal DE der ECC-Daten-Auswertungseinrichtung ECCCHK angelegt,
und an den zweiten Eingangsanschluß das Steuerbit ECC_EN. Das
UND-Gatter AND1 unterzieht die ihm zugeführten Signale einer UND-Verknüpfung und
gibt das Ergebnis dieser Verknüpfung
an das ODER-Gatter OR aus.
-
Das ODER-Gatter OR unterzieht die
Ausgangssignale der UND-Gatter
AND1 und AND2 einer ODER-Verknüpfung
und gibt das Ergebnis dieser Verknüpfung an den Multiplexer MUX3
aus.
-
Der Multiplexer MUX3 weist einen
weiteren Eingangsanschluß auf.
Dieser weitere Eingangsanschluß ist
dauerhaft auf den Wert 0 gelegt. Der Multiplexer MUX3 wird durch
das Steuerbit C_EN gesteuert, und schaltet das Ausgangssignal des ODER-Gatters OR durch,
wenn das Steuerbit C_EN den Wert 1 aufweist, und schaltet die Null-Daten durch,
wenn das Steuerbit C_EN den Wert 0 aufweist.
-
Das Ausgangssignal des Multiplexers
MUX3 wird als ein Fehlersignal ERR verwendet. Durch dieses Fehlersignal
ERR wird angezeigt, ob die aus der ersten Speichereinrichtung MEM1
ausgegebenen Daten einen oder mehrere nicht korrigierbare Fehler enthalten
oder nicht. Durch ERR=1 wird angezeigt, daß die aus der ersten Speichereinrichtung
MEM1 ausgegebenen Daten einen oder mehrere nicht korrigierbare Fehler
enthalten; durch ERR=0 wird angezeigt, daß die aus der ersten Speichereinrichtung MEM1
ausgegebenen Daten keinen solchen Fehler, also entweder überhaupt
keinen Fehler oder "nur" einen korrigierbaren
Fehler enthalten.
-
Das Fehlersignal ERR ist entweder
das Ausgangssignal DE der ECC-Daten-Auswertungseinrichtung ECCCHK,
oder das Ausgangssignal der Parity-Bit-Auswertungseinrichtung PCHK,
oder weist dauerhaft den Wert 0 auf.
-
Das Fehlersignal ERR
- – weist
dauerhaft den Wert 0 auf, wenn das Steuerbit C_EN den Wert 0 aufweist,
- – ist
das Ausgangssignal DE der ECC-Daten-Auswertungseinrichtung ECCCHK,
wenn das Steuerbit C_EN den Wert 1 aufweist und gleichzeitig auch
das Steuerbit ECC_EN den Wert 1 aufweist, und
- – ist
das Ausgangssignal Parity-Bit-Auswertungseinrichtung PCHK, wenn
das Steuerbit C_EN den Wert 1 aufweist und gleichzeitig das Steuerbit ECC_EN
den Wert 0 aufweist.
-
Die aus der ersten Speichereinrichtung MEM1
ausgegebenen Daten werden bei Bedarf durch die vorstehend bereits
erwähnte
Fehlerkorrektureinrichtung EC3 korrigiert. Ein Bedarf liegt vor, wenn
die Steuerbits C_EN und ECC_EN den Wert 1 aufweisen, und die ECC-Daten-Auswertungseinrichtung
ECCCHK in den aus der ersten Speichereinrichtung MEM1 ausgegebenen
Daten einen korrigierbaren Fehler gefunden hat.
-
Die Fehlerkorrektureinrichtung EC3
enthält pro
Bit der aus der ersten Speichereinrichtung MEM1 ausgegebenen Daten
ein UND-Gatter AND3 und einen Multiplexer MUX4. Genauer gesagt ist
jedem Bit der aus der ersten Speichereinrichtung MEM1 ausgegebenen
Daten ein eigenes UND-Gatter AND3 und ein eigener Multiplexer MUX4
zugeordnet. In der Figur sind die genannten Komponenten der besseren Übersichtlichkeit
halber nur in einfacher Ausführung dargestellt.
-
Der Multiplexer MUX4 weist zwei Eingangsanschlüsse auf,
wobei an den einen Eingangsanschluß ein Bit der aus der ersten
Speichereinrichtung MEM1 ausgegebenen Daten angelegt wird, und an den
anderen Eingangsanschluß der
inverse Wert dieses Bits.
-
Der Multiplexer MUX4 wird durch das
Ausgangssignal des UND-Gatters
AND3 gesteuert. Wenn das Ausgangssignal des UND-Gatters AND3 den Wert 0 aufweist, schaltet
der Multiplexer MUX4 das aus der ersten Speichereinrichtung MEM1
ausgegebene Bit durch, und wenn das Ausgangssignal des UND-Gatters
AND3 den Wert 1 aufweist, schaltet der Multiplexer MUX4 das inverse
Bit durch. Durch das Durchschalten des inversen Bits erfolgt eine
Veränderung,
genauer gesagt eine Korrektur des aus der ersten Speichereinrichtung
MEM1 ausgegebenen Bits.
-
Das UND-Gatter AND3 weist drei Eingangsanschlüsse auf.
An den ersten Eingangsanschluß wird
das Steuerbit C_EN angelegt, an den zweiten Eingangsanschluß das Steuerbit
ECC_EN, und an den dritten Eingangsanschluß das Ausgangssignal SE, welches
dem dem Multiplexer MUX 4 zugeführten
Bit der aus der ersten Speichereinrichtung MEM1 ausgegebenen Daten
zugeordnet ist.
-
Das UND-Gatter AND3 unterzieht die
ihm zugeführten
Signale einer UND-Verknüpfung
und gibt das Ergebnis dieser Verknüpfung an den Steueranschluß des Multiplexers
MUX4 aus.
-
Das Ausgangssignal des UND-Gatters AND3
weist nur dann den Wert 1 auf, wenn die Steuerbits C_EN und ECC_EN
den Wert 1 aufweisen, und wenn durch das dem UND-Gatter zugeführte Ausgangssignal
SE der ECC-Daten-Auswertungseinrichtung ECCCHK signalisiert wird,
daß das
zugeordnete Bit der aus der ersten Speichereinrichtung MEM1 ausgegebenen
Daten fehlerhaft ist und durch Invertieren korrigiert werden kann.
-
Wie aus den vorstehenden Erläuterungen
ersichtlich ist, kann der Benutzer der Anordnung die Anordnung durch
die Steuerbits C_EN und ECC_EN wunschgemäß konfigurieren. Er kann durch
das Steuerbit C_EN einstellen, ob überhaupt eine Fehlererkennung
und/oder Fehlerkorrektur erfolgen soll, und er kann – wenn C_EN
den Wert 1 aufweist – durch
das Steuerbit ECC_EN einstellen, ob "nur" eine
unter Verwendung von Parity-Bits erfolgende Fehlererkennung oder
aber gleich eine unter Verwendung von ECC-Daten erfolgende Fehlerkorrektur durchgeführt werden
soll.
-
Es dürfte einleuchten und bedarf
keiner näheren
Erläuterung,
daß sowohl
das Einschreiben von Daten in die erste Speichereinrichtung MEM1
als auch das Auslesen von Daten aus der ersten Speichereinrichtung
MEM1
- – am
schnellsten erfolgen kann, wenn weder eine Fehlererkennung noch
eine Fehlerkorrektur (C-EN=0) erfolgt,
- – am
längsten
dauert, wenn eine Fehlerkorrektur (C_EN=1, ECC_EN=1) erfolgt, und
- – langsamer
als im erstgenannten Fall, aber schneller als im zweitgenannten
Fall erfolgt, wenn "nur" eine Fehlererkennung
(C_EN=1, ECC_EN=0) erfolgt.
-
Folglich kann der Benutzer der Anordnung durch
die Einstellung der Steuerbits C_EN und ECC_EN auch Einfluß auf die
maximale Arbeitsgeschwindigkeit der Anordnung bzw. des die Anordnung
enthaltenden Systems nehmen. Genauer gesagt ist es beispielsweise
möglich,
die Taktfrequenz, mit welcher die Anordnung oder das die Anordnung enthaltende
System arbeitet, und/oder die Anzahl der Wait States in Abhängigkeit
von den Einstellungen der Steuerbits C_EN und ECC_EN einzustellen.
Die an die Werte der Steuerbits C_EN und ECC_EN angepaßte Einstellung
der Taktfrequenz, der Anzahl der Wait States etc. kann durch den
Benutzer, aber auch automatisch durch das die Anordnung enthaltende System
erfolgen.
-
Nach alledem hat es der Benutzer
in der Hand, das die Anordnung enthaltende System mit einer besonders
hohen Arbeitsgeschwindigkeit, oder mit besonders hoher Datensicherheit,
oder mit einer dazwischen liegenden Kompromißlösung zu betreiben. Es ist auch
möglich,
den Betrieb des Systems an die jeweiligen Umgebungsbedingungen anzupassen.
-
Die beschriebene Anordnung ist mannigfaltig modifizierbar.
-
Beispielsweise ist es möglich, die
Anordnung so auszulegen, daß sie
nur zwischen zwei Betriebsarten umschaltbar ist, beispielsweise
zwischen einer ersten Betriebsart, in welcher eine Fehlererkennung durchgeführt wird,
und einer zweiten Betriebsart, in welcher einer Fehlerkorrektur
durchgeführt
wird, oder zwischen einer ersten Betriebsart, in welcher weder eine
Fehlererkennung noch eine Fehlerkorrektur durchgeführt wird,
und einer zweiten Betriebsart, in welcher eine Fehlererkennung durchgeführt wird.
-
Andererseits wäre es auch möglich, die
Anordnung so auszulegen, daß sie
zwischen mehr als drei Betriebsarten umschaltbar ist.
-
Unabhängig von der Anzahl der Betriebsarten,
zwischen welchen die Anordnung umschaltbar ist, könnte vorgesehen
werden, daß die
verschiedenen Betriebsarten unterschiedliche Arten der Fehlererkennung
und/oder unterschiedliche Arten der Fehlerkorrektur umfassen.
-
Ferner ist es möglich, auf den Multiplexer MUX2
zu verzichten und statt dessen "nur" sicherzustellen,
daß die
in der zweiten Speichereinrichtung MEM2 gespeicherten Daten nur
dann ausgewertet werden, wenn sicher ist, daß es sich hierbei um ordnungsgemäß erzeugte
Daten handelt. Ordnungsgemäße Daten
lägen beispielsweise
nicht vor, wenn die Anordnung mit einer so hohen Taktfrequenz betrieben
wird, daß keine
richtigen Parity-Bits oder ECC-Daten erzeugt werden können.
-
Es könnte auch auf den Multiplexer
MUX3 verzichtet werden und statt dessen nur dafür gesorgt werden, daß das Signal
ERR, welches dann das Ausgangssignal des ODER-Gatters OR ist, nicht
ausgewertet wird, wenn keine Fehlererkennung und/oder Fehlerkorrektur
durchgeführt
wurde.
-
Es könnte auch vorgesehen werden,
daß die ECC-Daten
auch die zur Fehlererkennung benötigten
Parity-Bits enthalten, und daß dann,
wenn nur eine Fehlererkennung durchgeführt werden soll, nur der die
Parity-Bits enthaltende Teil der ECC-Daten ausgewertet wird.
-
Es könnte auch vorgesehen werden,
daß nicht
alle in der ersten Speichereinrichtung MEM1 gespeicherten Daten
gleich behandelt werden, also daß beispielsweise für bestimmte
Daten weder eine Fehlererkennung noch eine Fehlerkorrektur durchgeführt wird,
für bestimmte
andere Daten eine Fehlererkennung, und für wieder andere Daten eine
Fehlerkorrektur. Der Zeitpunkt der Umschaltung der Betriebsart kann
durch den Benutzer vorgegeben werden, beispielsweise indem dieser
durch entsprechende Befehle in einem Programm eine Veränderung
der Steuerbits C_EN und/oder ECC_EN veranlaßt. Die unterschiedliche Behandlung
könnte
aber auch automatisch, beispielsweise in Abhängigkeit von der Adresse der
Daten innerhalb der ersten Speichereinrichtung MEM1 erfolgen, wobei
der Benutzer vorzugsweise einstellen kann welche Adressen oder Adreßbereiche
wie behandelt werden sollen.
-
Des weiteren ist es möglich, auf
die zweite Speichereinrichtung MEM2 zu verzichten, wenn keine Fehlererkennung
und keine Fehlerkorrektur durchgeführt wird. Dies ist insbesondere
von Interesse, wenn die zweite Speichereinrichtung eine Speichereinrichtung
ist, die außerhalb
des den Rest der Anordnung enthaltenden Chips vorgesehen ist.
-
Unabhängig von alledem kann es sich
als vorteilhaft erweisen, wenn beim Einschreiben von Daten in die
erste Speichereinrichtung MEM1 eine den Daten zugeordnete Information
mitgespeichert wird, aus der sich beim Auslesen der Daten aus der ersten
Speichereinrichtung ermitteln läßt, ob für eine Fehlererkennung
und/oder die Fehlerkorrektur benötigte
Daten zur Verfügung
stehen. Dann könnte
in der Auswertungsvorrichtung EC2 selbständig entschieden werden, ob
und gegebenenfalls welche Art von Fehlererkennung oder Fehlerkorrektur
erfolgen soll.
-
Es ist auch möglich, die Einstellung der
Betriebsart nicht über
ein Steuerregister vorzunehmen, sondern über eine feste Verdrahtung,
welche keine Veränderung
der Betriebsart mehr zuläßt.
-
Anstelle der Betriebsarteinstellung über ein Steuerregister
könnte
auch vorgesehen werden, die Betriebsarteinstellung durch Anlegen
entsprechender Signale an bestimmte Ein- und/oder Ausgabeanschlüsse des
die Anordnung enthaltenden Bausteins vorzunehmen.
-
Die Betriebsarteinstellung könnte auch
durch Durchbrennen von in der Vorrichtung enthaltenen Fuses erfolgen.
-
Die beschriebene Anordnung erweist
sich unabhängig
von den Einzelheiten der praktischen Realisierung als vorteilhaft.
Sie ermöglicht
es, den die Anordnung enthaltenden Baustein sowohl für Anwendungen
einzusetzen, bei welchen eine hohe Arbeitsgeschwindigkeit die höchste Priorität hat, als auch
für Anwendungen
einzusetzen, bei welchen die Fehlererkennung und/oder die Fehlerkorrektur
die höchste
Priorität
hat.
-
- ANDx
- UND-Gatter
- C_EN
- Steuerbit
- DE
- Ausgangssignal
von ECCCHK
- ECCCHK
- ECC-Daten-Auswertungseinrichtung
- ECC_EN
- Steuerbit
- ECCTRL
- Steuerregister
- ECCGEN
- ECC-Daten-Generator
- EC1
- Vorrichtung
zur Erzeugung von zur Fehlererkennung
-
- und/oder
Fehlerkorrektur benötigten Daten
- EC2
- Vorrichtung
zur Auswertung von zur Fehlererkennung
-
- und/oder
Fehlerkorrektur benötigten Daten
- EC3
- Fehlerkorrektureinrichtung
- ERR
- Fehlersignal
- MEM1
- erste
Speichereinrichtung
- MEM2
- zweite
Speichereinrichtung
- MUXx
- Multiplexer
- OR
- ODER-Gatter
- PCHK
- Parity-Bit-Auswertungseinrichtung
- PGEN
- Parity-Bit-Generator
- RBUS1
- erster
Lesedatenbus
- RBUS2
- zweiter
Lesedatenbus
- SE
- Ausgangssignal
von ECCCHK
- WBUS
- Schreibdatenbus