-
Die vorliegende Erfindung bezieht sich auf fehlertolerante Speicherelementanordnungen, Speichervorrichtungen, welche derartige Speicherelementanordnungen enthalten, und entsprechende Verfahren.
-
Speichervorrichtungen dienen in elektronischen Geräten zur Speicherung von Daten, beispielsweise Programmen oder Nutzerdaten. Derartige Speichervorrichtungen umfassen typischerweise eine Vielzahl von Speicherelementen, beispielsweise mehrere Millionen Speicherelemente, auch als Speicherzellen bezeichnet, in welchen typischerweise jeweils ein Bit gespeichert wird.
-
Verschiedene Ereignisse, beispielsweise ein Einfluss kosmischer Strahlung oder anderen Arten von Röntgenstrahlung oder ionisierender Strahlung, können die in derartigen Speicherelementen gespeicherten Daten verändern, was zu Fehlfunktionen führen kann. Diese Art von Fehlern wird im Folgenden als Strahlungsfehler bezeichnet.
-
Es ist daher eine Aufgabe der vorliegenden Erfindung, Speicherelementanordnungen, Speichervorrichtungen mit derartigen Speicherelementanordnungen und entsprechende Verfahren bereitzustellen, welche gegenüber derartigen Fehlern tolerant sind.
-
Erfindungsgemäß wird eine Speicherelementanordnung nach Anspruch 1, eine Speichervorrichtung nach Anspruch 18 sowie ein Verfahren nach Anspruch 19 bereitgestellt. Die Unteransprüche definieren weitere Ausführungsbeispiele.
-
Gemäß einem Ausführungsbeispiel wird eine Speicherelementanordnung zum Speichern eines Datenwertes bereitgestellt, umfassend:
mindestens drei Speicherelemente,
einen Dateneingang zum Schreiben des Datenwertes in jedes der mindestens drei Speicherelemente, und
eine Fehlerkorrekturschaltung mit Eingängen und einem Ausgang,
wobei ein Ausgang jedes der mindestens drei Speicherelemente mit einem der Eingänge der Fehlerkorrekturschaltung gekoppelt ist,
wobei die Fehlerkorrekturschaltung eingerichtet ist, wenn alle der mindestens drei Speicherelemente den gleichen Wert an ihrem Ausgang ausgeben, diesen Wert am Ausgang der Fehlerkorrekturschaltung bereitzustellen, und bei mindestens einem Zustand, bei welchem die mindestens drei Speicherelemente mindestens zwei verschiedene Werte an ihren Ausgängen bereitstellen, einen vorher von der Fehlerkorrekturschaltung ausgegebenen Wert beizubehalten.
-
Bei manchen derartigen Ausführungsbeispielen können zumindest manche Fälle korrigiert werden, bei welchen mehr als die Hälfte der mindestens drei Speicherelemente einen Fehler aufweist.
-
Bei anderen Ausführungsbeispielen werden entsprechende Verfahren oder Speichervorrichtungen mit derartigen Speicherelementanordnungen bereitgestellt.
-
Weitere Ausführungsbeispiele der Erfindung werden nachfolgend unter Bezugnahme auf die beigefügten Zeichnungen näher erläutert. Es zeigen:
-
1 ein Schemadiagramm einer Speicherelementanordnung gemäß einem Ausführungsbeispiel,
-
2 ein Flussdiagramm eines Verfahrens gemäß einem Ausführungsbeispiel,
-
3 ein Blockdiagramm einer Speicherelementanordnung gemäß einem Ausführungsbeispiel,
-
4 ein Logikdiagramm eines bei Ausführungsbeispielen der Erfindung verwendbaren Korrekturelements,
-
5 eine Speicherelementanordnung gemäß einem Ausführungsbeispiel,
-
6a eine Speicherelementanordnung gemäß einem Ausführungsbeispiel,
-
6b eine Abwandlung der Speicherelementanordnung der 6a,
-
6c ein Diagramm zur Veranschaulichung der Funktionsweise der Speicherelementanordnung der 6b,
-
7a eine Speicherelementanordnung gemäß einem Ausführungsbeispiel,
-
7b eine Abwandlung des Ausführungsbeispiels der 6a,
-
7c eine weitere Abwandlung des Ausführungsbeispiels der 7a,
-
7d ein Diagramm zur Veranschaulichung der Funktionsweise des Ausführungsbeispiels der 7c,
-
8 eine Speicherelementanordnung gemäß einem Ausführungsbeispiel,
-
9 eine Speicherelementanordnung gemäß einem Ausführungsbeispiel, und
-
10 eine Speichervorrichtung gemäß einem Ausführungsbeispiel.
-
Im Folgenden werden Ausführungsbeispiele der Erfindung unter Bezugnahme auf die beigefügten Zeichnungen näher erläutert. Es ist zu bemerken, dass diese Ausführungsbeispiele lediglich als Beispiel zu verstehen sind und nicht als den Bereich der Erfindung einschränkend auszulegen sind.
-
Merkmale verschiedener Ausführungsbeispiele können miteinander kombiniert werden, sofern nicht explizit etwas anderes angegeben ist, um so neue Ausführungsbeispiele zu bilden. Auf der anderen Seite ist eine Beschreibung eines Ausführungsbeispiels mit einer Vielzahl von Merkmalen nicht dahingehend auszulegen, dass alle diese Merkmale zur Ausführung der Erfindung notwendig sind, da andere Ausführungsbeispiele weniger Merkmale und/oder alternative Merkmale aufweisen können.
-
Im Folgenden werden verschiedene Ausführungsbeispiele von Speicherelementanordnungen beschrieben. Unter einer Speicherelementanordnung ist dabei generell eine Anordnung zu verstehen, welche zur Speicherung eines Datenwertes dient. Als Beispiel für einen Datenwert wird bei vielen der nachfolgend beschriebenen Ausführungsbeispiele ein 1-Bit-Datenwert verwendet, also beispielsweise ein Datenwert, welcher eine logische 0 oder eine logische 1 repräsentieren kann. Grundsätzlich können Ausführungsbeispiele der Erfindung jedoch auch auf Speicherelementanordnungen angewendet werden, bei welchen in einem Speicherelement mehr als ein Bit, beispielsweise ein 2-Bit-Wert, gespeichert wird.
-
Aus einer Vielzahl derartiger Speicherelementanordnungen kann eine Speichervorrichtung aufgebaut werden, in welcher Daten gespeichert werden können. Die Kapazität der Speichervorrichtung hängt dabei von der Anzahl der Speicherelementanordnungen ab.
-
Wie im Folgenden erläutert werden wird, weisen Speicherelementanordnungen gemäß Ausführungsbeispielen häufig eine Vielzahl von, insbesondere drei oder mehr, Speicherelemente auf, in welchen der Datenwert jeweils gespeichert werden kann. Derartige Speicherelemente können in jeglicher herkömmlicher Weise implementiert sein, beispielsweise als Latch, Flipflop, Register oder einer anderen Art bistabiler Schaltung.
-
In 1 ist ein Blockdiagramm eines Ausführungsbeispiels der Erfindung dargestellt. Die Speicherelementanordnung der 1 umfasst drei oder mehr Speicherelemente 20, 21 und 22. Die Anzahl von drei dargestellten Speicherelementen 20–22 ist dabei lediglich als Beispiel zu verstehen, und es können wie durch Punkte angedeutet auch mehr als drei Speicherelemente vorgesehen sein.
-
Über einen Eingang 24 der Speicherelementanordnung kann ein Datenwert x, beispielsweise ein 1-Bit-Wert, in jedes der Speicherelemente 20–22 geschrieben werden. Die aus den Speicherelementen 20–22 ausgelesenen Werte werden als y1, y2, y3 bezeichnet.
-
Bei einer fehlerfreien Speicherung des Wertes x stimmen alle Werte y1–y3 dabei mit dem zuvor geschriebenen Wert x überein.
-
Die aus den Speicherelementen 20–22 ausgelesenen Werte y1–y3 werden einer Fehlerkorrektureinrichtung 23 zugeführt, welche in Abhängigkeit von den Werten y1–y3 einen Wert y ausgibt.
-
Die Fehlerkorrektureinrichtung 23 ist dabei bei dem Ausführungsbeispiel der 1 derart eingerichtet, dass sie, wenn die Werte y1–y3 alle übereinstimmen (beispielsweise bei einem 1-Bit-Wert alle logisch 0 oder logisch 1 sind), diesen übereinstimmenden Wert als Ausgabewert y ausgeben. Des Weiteren ist die Fehlerkorrektureinrichtung 23 eingerichtet, in mindestens einem Zustand, in welchem die Werte y1–y3 nicht übereinstimmen (beispielsweise einem Zustand, in dem y1 nicht mit y2 und y3 übereinstimmt), einen vorher ausgegebenen Wert als Wert y ausgibt. Der vorher ausgegebene Wert kann beispielsweise ein in einem vorherigen Taktzyklus ausgegebener Wert oder in einem vorherigen Teil des Taktzyklus ausgegebener Wert sein. Beispielsweise können die Speicherelemente 20–22 in einer ersten Hälfte jedes Taktzyklus und in einer zweiten Hälfte eines Taktzyklus ausgelesen werden, beispielsweise bei einer ansteigenden und bei einer abfallenden Flanke eines Taktsignals, und beim Auftreten des Zustands in der zweiten Hälfte des Taktzyklus kann der in der ersten Hälfte des Taktzyklus ausgegebene Wert y weiter ausgegeben werden.
-
Auf diese Weise kann eine Fehlerkorrektur bei manchen Ausführungsbeispielen auch dann erreicht werden, wenn beispielsweise mehr als die Hälfte der Speicherelemente 20–22 von einem Fehler betroffen ist.
-
Zu bemerken ist, dass es bei manchen Ausführungsbeispielen auch zusätzlich ein oder mehrere Zustände geben kann, bei welchen, wenn die Werte y1–y3 nicht alle übereinstimmen, ein aus den Werten y1–y3 ermittelter Wert als Wert y ausgegeben wird. Hierzu können insbesondere Ausgänge zweier Speicherelemente mit einer logischen Verknüpfung wie einer logischen AND-Verknüpfung verknüpft werden. Entsprechende Ausführungsbeispiele für die obigen Fälle werden später näher erläutert.
-
Ein Ausführungsbeispiel eines entsprechenden Verfahrens ist in 2 dargestellt. Das Verfahren der 2 kann insbesondere in der Speicherelementanordnung der 1 implementiert sein, kann jedoch auch unabhängig hiervon verwendet werden.
-
Bei 30 wird ein Datenwert, beispielsweise ein 1-Bit-Wert, in mindestens drei Speicherelemente geschrieben. Bei 31 werden dann entsprechende Datenwerte aus den mindestens drei Speicherelementen ausgelesen, welche bei Nichtvorliegen eines Fehlers jeweils mit dem geschriebenen Datenwert übereinstimmen.
-
Bei 32 wird ein korrigierter Datenwert derart ausgegeben, dass, wenn die ausgelesenen Datenwerte übereinstimmen, dieser übereinstimmende Datenwert ausgegeben wird, und bei mindestens einem Zustand, in dem die Datenwerte nicht übereinstimmen, ein vorher ausgegebener Datenwert ausgegeben wird, beispielsweise wie oben erläutert ein in einer vorherigen Hälfte eines Taktzyklus ausgegebener Datenwert oder ein in einem vorherigen Taktzyklus ausgegebener Datenwert.
-
Im Folgenden werden unter Bezugnahme auf die 3–9 verschiedene Möglichkeiten der Realisierung der Fehlerkorrektureinrichtung 23 der 1 und der Implementierung des Verfahrens der 2 näher erläutert.
-
In 3 ist eine Speicherelementanordnung gemäß einem weiteren Ausführungsbeispiel der Erfindung dargestellt. Die Speicherelementanordnung der 3 umfasst N = n Speicherelemente 41, 42, ..., 4n, wobei bei dem dargestellten Ausführungsbeispiel n > 3 ist. Wie bereits unter Bezugnahme auf 1 erläutert kann in die Speicherelemente 41, 42, ..., 4n ein Datenwert x, beispielsweise ein 1-Bit-Wert, gespeichert werden. Die aus den Speicherelemente 41, 42, ..., 4n ausgegebenen Werte sind mit y1, y2, ..., yn bezeichnet und werden bei dem Ausführungsbeispiel der 3 einem n-Input-Korrekturelement 410 zugeführt, welches als Fehlerkorrektureinrichtung dient und in Abhängigkeit von den Werten y1, y2, ..., yn einen Wert y ausgibt. Unter einem n-Input-Korrekturelement ist im Rahmen dieser Anmeldung ein Element zu verstehen, welches n Eingänge zur Eingabe von zu korrigierenden Daten aufweist. Wenn im Folgenden auf Eingänge eines n-Input-Korrekturelements Bezug genommen wird, sind stets diese Eingänge zur Eingabe von Daten, beispielsweise von aus Speicherelementen ausgelesenen Daten, gemeint. Weitere Eingänge, welche anderen Zwecken dienen, beispielsweise zum Zuführen einer Versorgungsspannung, beispielsweise von VDD und Masse im Fall einer CMOS-Implementierung, können zusätzlich vorhanden sein und werden nicht explizit beschrieben. Falls die an allen n Eingängen zugeführten Werte übereinstimmen, wird dieser übereinstimmende Datenwert als Wert y am Ausgang ausgegeben. Sind unter den eingegebenen Datenwerten mindestens zwei unterschiedliche Werte, wird hingegen ein vorhergehender Wert, d.h. ein vorher ausgegebener Wert, ausgegeben, wie oben erläutert.
-
Die Funktionsweise des n-Input-Korrekturelementes ist im Folgenden dargestellt.
y1 | y2 | ... | y(n – 1) | yn | y |
0 | 0 | ... | 0 | 0 | 0 |
0 | 0 | ... | 0 | 1 | vorhergehender Wert |
0 | 0 | ... | 1 | 0 | vorhergehender Wert |
.
.
. | .
.
. | .
.
. | .
.
. | .
.
. | vorhergehender Wert |
1 | 1 | ... | 1 | 0 | vorhergehender Wert |
1 | 1 | ... | 1 | 1 | 1 |
-
Das n-Input-Korrekturelement gibt bei Eingabe von y1 = y2 = ... = yn = 0 den Wert y = 0 und bei Eingabe von y1 = y2 = ... = yn = 1 den Wert y = 1 aus. In allen anderen Fällen gibt das n-Input-Korrekturelement den vorhergehenden Wert aus.
-
Die Speicherelementanordnung des Ausführungsbeispiels der 3 erlaubt es, bis zu n – 1 flüchtige Fehler, die sich z.B. in einer zweiten Takthälfte auf die Ausgabe von bis zu n – 1 der Speicherelemente auswirken, zu korrigieren. Flüchtige Fehler sind dabei Fehler, die sich auf einen momentan gespeicherten Wert auswirken, jedoch die grundsätzliche Funktionsfähigkeit der betroffenen Speicherelemente nicht beeinträchtigen.
-
Gilt z.B. in der ersten Takthälfte y1 = y2 = ... = yn = 1, dann ist in dieser Takthälfte y = 1. Sind nun in der zweiten Takthälfte, etwa infolge eines Strahlungsfehlers, höchstens n – 1 Speicherelemente in den Wert 0 gestört, dann wird auch in der zweiten Takthälfte der korrigierte Wert y = 1 ausgegeben, obwohl bis zu n – 1 Speicherelemente in der zweiten Takthälfte einen fehlerhaften Wert annehmen.
-
Eine mögliche Realisierung eines derartigen n-Input-Korrekturelements gemäß einem Ausführungsbeispiel ist in 4 dargestellt.
-
Für i = 1, ..., n ist eine das Signal yi, z.B. den aus den i-ten Speicherelementen ausgelesenen Datenwert, tragende Eingangsleitung mit einem ersten Eingang eines AND-Gatters 51i (in 4 511, 512, ..., 51n), welches zwei Eingänge und einen Ausgang aufweist und zudem mit einem i-ten Eingang eines AND-Gatters 521 mit n Eingängen und einem Ausgang verbunden. Für i = 1, ..., n ist der Ausgang des AND-Gatters 51i mit dem (i + 1)-ten Eingang eines OR-Gatters 522 mit n + 1 Eingängen und einem Ausgang verbunden, in dessen ersten Eingang der Ausgang des AND-Gatters 521 geführt ist. Ein Ausgang des OR-Gatters 522, der den korrigierten Wert y führt, ist mit dem jeweils zweiten Eingang der AND-Gatter 511, 512, ..., 51n verbunden. Die Funktionsweise der Schaltung von 4 soll nun erläutert werden.
-
Gilt y1 = y2 = ... = yn = 0, so sind die Werte auf den Ausgangsleitungen der AND-Gatter 521, 511, 512, ... 51n alle gleich 0, woraus sich y = 0 ergibt. Gilt y1 = y2 = ... = yn = 1, so gibt das AND-Gatter 521 den Wert 1 aus, weshalb der Ausgang des OR-Gatters 522 ebenfalls den Wert 1 trägt und y = 1 ist.
-
Sind nun nicht alle der Werte y1, y2, ..., yn untereinander gleich, dann ändert sich der ausgegebene Wert y nicht. Wir erläutern das für den Fall, dass y1 = 1 und y2 = 0 gelten.
-
Es sei y = 1. Dann ist der von dem AND-Gatter 511 ausgegebene Wert gleich 1. Dieser Wert wird an den zweiten Eingang des OR-Gatters 522 geleitet, das daher an seinem Ausgang den Wert y = 1 ausgibt, der sich nicht geändert hat.
-
Es sei nun y = 0. Dann sind die von den AND-Gattern 521, 511, 512, ... 51n (n + 1) ausgegebenen Werte jeweils gleich 0. Diese n + 1 Werte, die alle gleich 0 sind, werden an die Eingänge des OR-Gatters 522 weitergeleitet, das daraufhin den Wert 0 ausgibt, so dass sich der Wert y am Ausgang dieses Gatters nicht ändert.
-
Ein weiteres mögliches Ausführungsbeispiel eines n-Input-Korrekturelementes, dessen n, die Werte y1, y2, ..., yn tragende Eingangsleitungen z.B. an n Speicherelemente Sp1 611, Sp2 212, ... Sp n angeschlossen sind, zeigt 5.
-
Für i = 1, ..., n ist der Ausgang des Speicherelementes Spi 61i, der das Signal yi führt, sowohl mit einem i-ten Eingang eines AND-Gatters 61, welches n Eingänge und einen Ausgang aufweist, als auch mit einem i-ten Eingang eines OR-Gatters 62, welches n Eingänge und einen Ausgang aufweist, verbunden. Ein Ausgang des OR-Gatters 62 ist mit einem ersten Eingang eines AND-Gatters 63, welches zwei Eingänge und einen Ausgang aufweist, verbunden, dessen Ausgang in den ersten Eingang eines OR-Gatters 64, welches zwei Eingänge und einen Ausgang aufweist, geführt ist und dessen zweiter Eingang mit dem Ausgang des AND-Gatters 61 verbunden ist. Der Ausgang 66 des OR-Gatters 64, der den korrigierten Wert y trägt, ist in den zweiten Eingang des AND-Gatters 63 rückgeführt.
-
Die Speicherelemente Spi 61i sind für i = 1, ..., n alle mit der gleichen, den zu speichernden Datenwert x tragenden Eingangsleitung 65 verbunden, so dass im fehlerfreien Fall in jedem der Speicherelemente Spi 61i der gleiche Wert gespeichert wird.
-
Die Funktionsweise der Schaltungsanordnung von 5 soll nun erläutert werden.
-
Gilt y1 = y2 = ... = yn = 0, dann geben sowohl das AND-Gatter 61 als auch das OR-Gatter 62 den Wert 0 aus, so dass an den beiden Eingängen des OR-Gatters 64 die Werte 0 anliegen, die auch am Ausgang 66 zu dem Wert y = 0 führen. Gilt y1 = y2 = ... = yn = 1, dann gibt das das OR-Gatter 62 den Wert 1 aus. Am ersten Eingang des OR-Gatters 64 liegt damit der Wert 1 an, der auch am Ausgang 66 zu dem Wert y = 1 führt.
-
Zum Zwecke einer möglichst einfachen Darstellung wird jetzt beispielhaft angenommen, dass n = 3 ist, und das Verhalten im Falle eines Fehlers in den beiden Speicherelementen Sp2 und Sp3 wird beschrieben.
-
Der korrekte Wert, der z.B. in einer ersten Takthälfte von allen drei Speicherelementen ausgegeben wird, sei zur Erläuterung gleich 1, so dass in der ersten Takthälfte y1 = y2 = y3 = 1 gilt. Der den Wert y tragende Ausgang 66 des Korrekturelementes gibt dann den Wert 1 in der ersten Takthälfte aus. In einer zweiten Takthälfte sei nun beispielsweise y1 = 1 und fehlerhaft y2 = y3 = 0. In der zweiten Takthälfte gibt dann das AND-Gatter 61 den Wert 0 aus und das OR-Gatter 62 gibt den Wert 1 aus, der am ersten Eingang des AND-Gatters 61 anliegt, in dessen zweiten Eingang der Ausgang 66 zurückgeführt ist, der den Wert y = 1 trägt. Damit liegen in der zweiten Takthälfte an den beiden Eingängen des AND-Gatters 63 jeweils die Werte 1 an, so dass auch der Ausgang dieses Gatters den Wert 1 führt, der mit dem ersten Eingang des OR-Gatters 64 verbunden ist. Damit bleibt der Ausgangswert y = 1 des Ausganges 66 auch in der zweiten Takthälfte stabil auf 1 und der Ausgabewert bleibt korrekt, obwohl ein 2-Bit Fehler in den Speicherelementen vorliegt. In entsprechender Weise kann überprüft werden, dass jeder Fehler von m Speicherelementen in der zweiten Takthälfte mit m < n – 1 richtig korrigiert wird.
-
Die 4 und 5 zeigen lediglich zwei mögliche Beispiele für die Implementierung eines n-Input-Korrekturelements, und selbstverständlich sind auch andere Implementierungen unter Verwendung anderer Anordnungen von Logikgattern möglich. n-Input-Korrekturelemente können auch durch Transistoren realisiert werden, sodass eine derartige Implementierung auch auf Transistorebene beschrieben werden kann, wobei grundsätzlich die gleiche Funktionalität wie durch die in den 4 und 5 dargestellten Logikgatter erreicht werden kann.
-
In den bisher beschriebenen Ausführungsbeispielen bestand keine besondere Beziehung zwischen den Speicherelementen abgesehen davon, dass sie zum Speichern eines gleichen Wertes verwendet wurden. Bei manchen Ausführungsbeispielen können Speicherelemente eine Master-Slave-Beziehung aufweisen, wobei Slave-Speicherelemente die zu speichernden Daten nicht direkt von einem Eingang, sondern über eine oder mehrere entsprechende Master-Speicherelemente erhalten. Entsprechende Ausführungsbeispiele werden nunmehr unter Bezugnahme auf die 6-8 dargestellt.
-
6a zeigt eine erfindungsgemäße Schaltungsanordnung, bei der die Ausgänge von drei Speicherelementen SpM72, SpS1 73 und SpS2 74 mit den Eingängen eines 3-Input-Korrekturelementes 75 verbunden sind, wobei die verschiedenen Speicherelemente Master oder Slave eines Master-Slave-Flipflops sind. Das 3-Input-Korrekturelement 75 kann wie oben erläutert implementiert sein. Das Speicherelement SpM 72 ist das Master-Latch mit dem Taktsignal cl1, das Speicherelement SpS1 73 und das Speicherelement SpS2 74 haben die Funktionen eines Slave-Latches mit dem Taktsignal cl2.
-
Dem Speicherelement SpM 72 ist ein Multiplexer MUX 71 vorgeschaltet, an dessen Eingängen je nach gewähltem Mode ein Scan-in-Signal einem Scan-Mode, d.h. einer Testbetriebsart, oder ein Data-in Signal im normalen Funktionsmode eingegeben wird. Je nach gewähltem Mode wird an dem Ausgang out des 3-Input-Korrekturelementes der Scan-out-Wert oder der Data-out-Wert ausgegeben. Bei einem anderen Ausführungsbeispiel kann der Multiplexer MUX 71 zur Implementierung einer Testbetriebsart auch weggelassen sein. In einem derartigen Fall kann beispielsweise das Data-in Signal auch direkt an das Speicherelement SpM 72 angelegt werden.
-
Die Fehlerkorrektur eines in den drei Speicherelementen 72, 73 und 74 gespeicherten Datenwertes durch das 3-Input-Korrekturelement 75 kann dann wie oben beispielsweise für das Ausführungsbeispiel der 4 oder der 5 beschrieben ablaufen.
-
Durch die Verwendung einer Master-Slave-Anordnung von Speicherelementen kann es in manchen Fällen zu Verzögerungen kommen. Beispielsweise kann es vorkommen, dass ein Datenwert durch eine durch ein Master-Speicherelement verursachte Verzögerung später in einem Slave-Speicherelement gespeichert wird als in dem Master-Speicherelement. In diesem Fall können Verzögerungselemente bereitgestellt sein, um beispielsweise sicherzustellen, dass die Ausgaben aller Speicherelemente zur gleichen Zeit an einer Fehlerkorrektureinrichtung wie einem n-Input-Korrekturelement bereitstellen.
-
Ein entsprechendes Ausführungsbeispiel ist in der 6b dargestellt. Das Ausführungsbeispiel der 6b entspricht im Wesentlichen dem Ausführungsbeispiel der 6a, sodass im Folgenden nur die Unterschiede erläutert werden.
-
Im Unterschied zu der 6a ist bei dem Ausführungsbeispiel der 6b ein Verzögerungselement 76 zwischen einem Ausgang des Speicherelements SpM 72 und einem von drei Eingängen des 3-Input-Korrekturelements 75 bereitgestellt. Bei dem Ausführungsbeispiel der 6b ist die Verzögerung des Verzögerungselements 76 dabei derart gewählt, dass die Ausgaben der Speicherelemente 72–74 synchron dem 3-Input-Korrekturelement 75 bereitgestellt werden.
-
Die hierzu nötige Verzögerung soll nun unter Bezugnahme auf 6c erläutert werden. Wie in 6c schematisch dargestellt, weisen die einzelnen Takte oder Taktflanken des Taktsignals cl1 einen Abstand von Δ2 zueinander auf. Die Takte oder Taktflanken des Taktsignals cl2 sind hierzu um Δ1 versetzt.
-
Um zu erreichen, dass sämtliche Ausgangswerte der Speicherelemente 72–74 synchron dem 3-Input-Korrekturelement 75 zugeführt werden, ist bei dem Ausführungsbeispiel der 6b das Verzögerungselement 76 mit einer entsprechenden Verzögerung bereitgestellt, in der Art, dass der Taktversatz von cl2 zu cl1 Δ1 als auch die Verzögerung der Speicherelemente 73 und 74 berücksichtigt werden. Dies kann in einem weiteren Ausführungsbeispiel, welches eine Abwandlung der 6b ist, zum Beispiel über eine optionale Zuführung 77 (in 6b gestrichelt dargestellt) des Taktsignals cl2 zum Verzögerungselement 76 erreicht werden.
-
Bei den Ausführungsbeispielen der 3 bis 6 entspricht eine Anzahl von Speicherzellen einer Anzahl von Eingängen eines n-Input-Korrekturelements, welches als Fehlerkorrektureinrichtung dient. Bei anderen Ausführungsbeispielen kann eine Fehlerkorrektureinrichtung ein n-Input-Korrekturelement vorgesehen sein, welches eine Anzahl von Eingängen n aufweist, die kleiner ist als die Anzahl von Speicherzellen N. Ausführungsbeispiele hierfür werden nunmehr unter Bezugnahme auf die 7a–7d erläutert.
-
7a zeigt eine Speicherelementanordnung gemäß einem Ausführungsbeispiel mit N = 4 Speicherelementen SpM1 83 SpS1 86 SpM2 84 SpS2 87 und einer Fehlerkorrektureinrichtung 811, welche ein 3-Input-Korrekturelement 88 umfasst, so dass hier n = 3 ist.
-
Ein Multiplexer MUX1 81, das Speicherelement SpM1 83 und das Speicherelement SpS1 86 bilden ein erstes Master-Slave-Flipflop, wobei SpM1 83 das Master-Latch und SpS1 86 das Slave-Latch dieses ersten Master-Slave-Flipflops sind. Ein Multiplexer MUX2 82, das Speicherelement SpM2 84 und das Speicherelement SpS2 87 bilden ein zweites Master-Slave-Flipflop, wobei SpM2 84 das Master-Latch und SpS2 87 das Slave-Latch dieses zweiten Master-Slave-Flipflops sind. Auch hier können bei anderen Ausführungsbeispielen die Multiplexer MUX1 81 und/oder MUX2 82 weggelassen sein. Dabei ist auch möglich, dass nur einer der beiden Multiplexer 81, 82 verwendet wird und bei dem Speicherelement 83 oder 84, dem kein Multiplexer vorgeschaltet ist, das Data-in Signal direkt an das Speicherelement geführt wird.
-
Die Speicherelemente SpM1 83 und SpM2 84 sind an ein erstes Taktsignal cl1 angeschlossen, während die Speicherelemente SpS1 86 und SpS2 87 an ein zweites Taktsignal cl2 angeschlossen sind, entsprechend einer herkömmlichen Ausgestaltung eines Master-Slave-Flipflops.
-
In Abhängigkeit von einem binären Steuersignal c ist der Eingang Data-in, der ein zu speicherndes Datensignal trägt, oder der Eingang Scan-in, der ein einzuscannendes Signal trägt, über die Multiplexer MUX1 81 und MUX2 82 mit den Dateneingängen der Speicherelemente SpM1 und SpM2 verbunden.
-
Bei dem Ausführungsbeispiel der 7a umfasst die Fehlerkorrektureinrichtung 811 zudem ein AND-Gatter 89. Ein Ausgang (Datenausgang) des Speicherelementes SpM1 83 ist sowohl in eine Eingang (Dateneingang) des Speicherelementes SpS1 86 als auch in einen ersten Eingang des AND-Gatters 89 mit zwei Eingängen und einem Ausgang geführt. Ein Ausgang des Speicherelementes SpM2 84 ist sowohl in einen Eingang des Speicherelementes SpS2 87 als auch in einen zweiten Eingang des AND-Gatters 89 geführt.
-
Der Ausgang des Speicherelementes SpS1 86 ist mit einem ersten Eingang des 3-Input Korrekturelementes 88 verbunden. Ein Ausgang des Speicherelementes SpS2 87 ist mit einem zweiten Eingang des 3-Input-Korrekturelementes 88 verbunden, während ein Ausgang des AND-Gatters 89 mit dem dritten Eingang des 3-Input Korrekturelementes verbunden ist, das an seinem Ausgang einen korrigierten Wert y ausgibt. Das AND-Gatter 89 realisiert die Boolesche Funktion g(x1, x2) = x1 ^ x2, für die g(0, 0) = 0 ≠ 1 = g(1, 1) und g(0, 1) = g(1, 0) = 0 gilt.
-
Die Fehlerkorrektur für 1-Bit-, 2-Bit- und 3-Bit-Fehler wird nun für die Speicherelementanordnung von 7a beschrieben werden. Derartige Fehler können beispielsweise in einem Wartezustand der Speicherelementanordnung auftreten. Unter einem Wartezustand ist dabei ein Zustand zu verstehen, in dem zwischen einem Zeitpunkt des Schreibens eines Datenwertes in die Speicherelemente und einem Zeitpunkt, zu dem der Datenwert benötigt wird und hierzu ausgelesen wird, ein längerer Zeitraum, beispielsweise viele Taktzyklen, liegen können, in denen die Speicherelemente, die in einem Wartezustand sind, nicht getaktet werden. Durch diesen längeren Zeitraum erhöht sich beispielsweise die Wahrscheinlichkeit, dass zwischen dem Schreiben und dem Auslesen ein Fehler wie z.B. ein Strahlungsfehler auftritt. Derartige Wartezustände kommen beispielsweise bei Speicherelementanordnungen vor, in welche bei einem Hochfahren eines Systems einmalig Daten geschrieben werden, beispielsweise aus einer so genannten Fuse oder einem anderen permanenten Speicher ausgelesene Daten wie Kalibrierdaten oder Fehlerinformationen einer Speicheranordnung.
-
Zunächst wird der Fall betrachtet, dass kein Fehler vorliegt. Wird nun z.B. zu dem Zeitpunkt, an dem die Taktsignale cl1 = 1 und cl2 = 0 sind, über die Multiplexer MUX1 81 und MUX2 82 ein Datenwert von 1 in die Speicherelemente SpM1 83 und SpM2 84 geschrieben, dann liegt dann, wenn die Taktsignale cl1 = 0 und cl2 = 1 sind, am Ausgang der Speicherelemente SpS1 86 und SpS2 87, SpM1 83, SpM2 84 und am Ausgang des AND-Gatters 89 jeweils der Wert 1 und damit an allen drei Eingängen des 3-Input-Korrekturelementes 88 der Wert 1 an, was dann an seinem Ausgang den Wert 1 ausgibt.
-
Tritt nun beispielsweise, wenn die Taktsignale weiterhin die Werte cl1 = 0 und cl2 = 1 annehmen, und sich das System etwa beispielsweise in einem Wartezustand befindet, am Ausgang des Speicherelementes SpM1 83 ein transienter 1-Bit-Fehler auf, der den Ausgangswert 1 auf 0 verfälscht, dann ändert sich der fehlerfreie Wert 1 am Ausgang des AND-Gatters 89 fehlerhaft in 0, so dass an den drei Eingängen des 3-Input Korrekturelementes 88 die Werte 1, 0, 1 anliegen und der korrekte Wert 1 am Ausgang des 3-Input-Korrekturelementes beibehalten wird.
-
Als weitere Fehler werden nun 2-Bit Fehler betrachtet. Tritt, wenn die Taktsignale weiterhin die Werte cl1 = 0 und cl2 = 1 annehmen, und sich das System beispielsweise in einem Wartezustand befindet, am Ausgang des Speicherelementes SpM1 83 und am Ausgang des Speicherelementes SpM2 84 gleichzeitig ein transienter Fehler auf, der jeweils den Ausgangswert 1 auf 0 verfälscht, dann ändert sich der fehlerfreie Wert 1 am Ausgang des AND-Gatters 89 fehlerhaft in 0, so dass an den drei Eingängen des 3-Input-Korrekturelementes 88 die Werte 1, 0, 1 anliegen und der korrekte Wert 1 am Ausgang des 3-Input-Korrekturelementes beibehalten wird.
-
Tritt, wenn die Taktsignale weiterhin die Werte cl1 = 0 und cl2 = 1 annehmen, und sich das System beispielsweise in einem Wartezustand befindet, am Ausgang des Speicherelementes SpM1 83 und am Ausgang des Speicherelementes SpS1 86 gleichzeitig ein transienter Fehler auf, der jeweils den Ausgangswert 1 auf 0 verfälscht, dann ändert sich der fehlerfreie Wert 1 am Ausgang des AND-Gatters 89 fehlerhaft in 0 und der fehlerfreie Wert 1 am Ausgang des Speicherelementes SpS1 86 in den fehlerhaften Wert 0, so dass an den drei Eingängen des 3-Input Korrekturelementes 88 die Werte 0, 0, 1 anliegen und der korrekte Wert 1 am Ausgang des 3-Input Korrekturelementes beibehalten wird.
-
Entsprechend kann man sich überzeugen, dass jeder transiente 2-Bit Fehler, der beispielsweise in einem Wartezustand mit cl1 = 0 und cl2 = 1 auftritt, von der Schaltungsanordnung korrigiert wird.
-
Als weitere Fehler sollen nun 3-Bit Fehler betrachtet werden. Wir betrachten dabei weiterhin den Fall, dass zu dem Zeitpunkt, an dem die Taktsignale cl1 = 1 und cl2 = 0 sind über die Multiplexer MUX1 81 und MUX2 82 der Wert 1 in die Speicherelemente SpM1 83 und SpM2 84 geschrieben werden. Dann liegt im fehlerfreien Fall, wenn die Taktsignale cl1 = 0 und cl2 = 1 sind, am Ausgang der Speicherelemente SpS1 86 und SpS2 87, SpM1 83, SpM2 84 und am Ausgang des AND-Gatters 89 jeweils der Wert 1 und damit an allen drei Eingängen des 3-Input Korrekturelementes 88 der Wert 1 an, was dann an seinem Ausgang den Wert 1 ausgibt.
-
Tritt, wenn die Taktsignale weiterhin die Werte cl1 = 0 und cl2 = 1 annehmen, und sich das System beispielsweise in einem Wartezustand befindet, am Ausgang des Speicherelementes SpM1 83, am Ausgang des Speicherelementes SpM2 84 und am Ausgang des Speicherelementes SpS1 86 gleichzeitig ein transienter Fehler auf, der jeweils den Ausgangswert 1 auf 0 verfälscht, dann ändert sich der fehlerfreie Wert 1 am Ausgang des AND-Gatters 89 fehlerhaft in 0 und der fehlerfreie Wert 1 am Ausgang des Speicherelementes SpS1 86 in den fehlerhaften Wert 0, so dass an den drei Eingängen des 3-Input-Korrekturelementes 88 die Werte 0, 0, 1 anliegen und der korrekte Wert 1 am Ausgang des 3-Input-Korrekturelementes beibehalten wird. Tritt, wenn die Taktsignale weiterhin die Werte cl1 = 0 und cl2 = 1 annehmen, und sich das System beispielsweise in einem Wartezustand befindet, am Ausgang des Speicherelementes SpM1 83, am Ausgang des Speicherelementes SpS1 86 und am Ausgang des Speicherelementes SpS2 87 gleichzeitig ein transienter Fehler auf, der jeweils den Ausgangswert 1 auf 0 verfälscht, dann ändert sich der fehlerfreie Wert 1 am Ausgang des AND-Gatters 89 fehlerhaft in 0, der fehlerfreie Wert 1 am Ausgang des Speicherelementes SpS1 86 und der fehlerfreie Wert 1 am Ausgang des Speicherelementes SpS2 87 in den fehlerhaften Wert 0, so dass an den drei Eingängen des 3-Input-Korrekturelementes 88 die Werte 0, 0, 0 anliegen und der korrekte Wert 1 am Ausgang des 3-Input-Korrekturelementes in den fehlerhaften Wert 0 verfälscht wird. Dies stellt ein Beispiel für einen Zustand dar, in dem nicht allen Eingängen der Fehlerkorrektureinrichtung 811 der gleiche Wert zugeführt wird, aber nicht ein vorher ausgegebener Wert weiter ausgegeben wird.
-
Ein anderes Situationsbeispiel ergibt sich, wenn im fehlerfreien Fall zu dem Zeitpunkt, an dem die Taktsignale cl1 = 1 und cl2 = 0 sind, über die Multiplexer MUX1 81 und MUX2 82 der Wert 0 in die Speicherelemente SpM1 83 und SpM2 84 geschrieben, wird. Dann liegt, wenn die Taktsignale cl1 = 0 und cl2 = 1 sind, am Ausgang der Speicherelemente SpS1 86 und SpS2 87, SpM1 83, SpM2 84 und am Ausgang des AND-Gatters 89 jeweils der Wert 0 und damit an allen drei Eingängen des 3-Input Korrekturelementes 88 der Wert 0 an, was dann an seinem Ausgang den Wert 0 ausgibt.
-
Tritt, nun, wenn die Taktsignale weiterhin die Werte cl1 = 0 und cl2 = 1 annehmen, und sich das System beispielsweise in einem Wartezustand befindet, am Ausgang des Speicherelementes SpM1 83, am Ausgang des Speicherelementes SpS1 86 und am Ausgang des Speicherelementes SpS2 87 gleichzeitig ein transienter Fehler auf, der jeweils den Ausgangswert 0 in 1 verfälscht, dann ändert sich der fehlerfreie Wert 0 am Ausgang des AND-Gatters 89 nicht. Der fehlerfreie Wert 0 am Ausgang des Speicherelementes SpS1 86 und der fehlerfreie Wert 0 am Ausgang des Speicherelementes SpS2 87 ändern sich in den fehlerhaften Wert 1, so dass an den drei Eingängen des 3-Input-Korrekturelementes 88 die Werte 1, 0, 1 anliegen und der korrekte Wert 0 am Ausgang des 3-Input-Korrekturelementes ausgegeben wird.
-
Auf diese Weise wird deutlich, dass bei dem Ausführungsbeispiel der 7a zumindest eine Teilmenge der 3-Bit-Fehler richtig korrigiert wird, während alle 2-Bit- und 1-Bit-Fehler richtig korrigiert werden.
-
Insbesondere ist aus dem Obigen ersichtlich, dass in der Schaltungsanordnung von 7a alle 3-Bit-Fehler, die jeweils korrekte Werte 0 in 1 verfälschen, sicher erkannt werden.
-
Im Ausführungsbeispiel der 7a werden die Ausgänge der Speicherelemente 83 und 84 mittels des AND-Gatters 89 verknüpft. Für einen derartigen Zweck können jedoch auch andere Logikschaltungen, z.B. OR-Gatter, NAND-Gatter oder NOR-Gatter, eingesetzt werden. Ein entsprechendes Ausführungsbeispiel ist in 7b dargestellt.
-
Die Schaltungsanordnung von 7b unterscheidet sich von der Schaltungsanordnung in 7a dadurch, dass das AND-Gatter 89 in 7a durch ein OR-Gatter 85 in 7b ersetzt worden ist. Gleiche Schaltungsteile in 7a und 7b sind mit den gleichen Bezugszeichen markiert, und ihre Beschreibung wird hier nicht noch einmal wiederholt.
-
In 7b ist der Datenausgang des Speicherelementes SpM1 83 sowohl in den Dateneingang des Speicherelementes SpS1 86 als auch in einen ersten Eingang des OR-Gatters 85 mit zwei Eingängen und einem Ausgang geführt. Der Datenausgang des Speicherelementes SpM2 84 ist sowohl in den Dateneingang des Speicherelementes SpS2 87 als auch in den zweiten Eingang des OR-Gatters 85 geführt.
-
Der Datenausgang des Speicherelementes SpS1 86 ist mit dem ersten Eingang des 3-Input-Korrekturelementes 88 verbunden. Der Datenausgang des Speicherelementes SpS2 87 ist mit dem zweiten Eingang des 3-Input-Korrekturelementes 88 verbunden, während der Ausgang des OR-Gatters 85 mit dem dritten Eingang des 3-Input Korrekturelementes 88 verbunden ist, das an seinem Ausgang den korrigierten Wert y ausgibt. Das OR-Gatter 85 realisiert die Boolesche Funktion g(x1, x2) = x1 V x2, für die g(0, 0) = 0 ≠ 1 = g(1, 1) und g(0, 1) = g(1, 0) = 1 gilt.
-
Die Fehlerkorrektur durch die Speicherelementanordnung von 7b ist ähnlich der Fehlerkorrektur in der Speicherelementanordnung von 7a, wie einfach überprüft werden kann. Man erkennt, dass ebenso wie in der Schaltungsanordnung von 7a beispielsweise in einem Wartezustand mit cl1 = 0 und CL2 = 1 alle 1-Bit und alle 2-Bit-Fehler richtig korrigiert werden. Nun wird die Korrektur des 3-Bit-Fehlers untersucht, der in der Schaltungsanordnung von 7a nicht korrigiert werden konnte.
-
Es wird der Fall untersucht, dass zum dem Zeitpunkt, an dem die Taktsignale cl1 = 1 und cl2 = 0 über die Multiplexer MUX1 81 und MUX2 82 der Wert 1 in die Speicherelemente SpM1 83 und SpM2 84 geschrieben werden. Dann liegt im fehlerfreien Fall, wenn die Taktsignale cl1 = 0 und cl2 = 1 sind, am Ausgang der Speicherelemente SpS1 86 und SpS2 87, SpS1 86, SpS2 87 und am Ausgang des OR-Gatters 85 jeweils der Wert 1 und damit an allen drei Eingängen des 3-Input-Korrekturelementes 88 der Wert 1 an, was dann an seinem Ausgang den Wert 1 ausgibt. Tritt, nun wenn die Taktsignale weiterhin die Werte cl1 = 0 und cl2 = 1 annehmen, und sich das System beispielsweise in einem Wartezustand befindet, am Ausgang des Speicherelementes SpM1 83, am Ausgang des Speicherelementes SpS1 86 und am Ausgang des Speicherelementes SpS2 87 gleichzeitig ein transienter Fehler auf, der jeweils den Ausgangswert 1 auf 0 verfälscht, dann ändert sich der fehlerfreie Wert 1 am Ausgang des OR-Gatters 85 nicht. Der fehlerfreie Wert 1 am Ausgang des Speicherelementes SpS1 86 und der fehlerfreie Wert 1 am Ausgang des Speicherelementes SpS2 87 wird jeweils in den fehlerhaften Wert 0 verfälscht, so dass an den drei Eingängen des 3-Input-Korrekturelementes 88 die Werte 0, 1, 0 anliegen und der korrekte Wert 1 am Ausgang des 3-Input-Korrekturelementes ausgegeben wird. Jeder 3-Bit-Fehler, der korrekte Werte 1 in 0 verfälscht, wird von der Schaltungsanordnung von 7b korrigiert. Dies kann überprüft werden, indem alle vier derartigen 3-Bit-Fehler in gleicher Weise betrachtet werden. Wird ein korrekter Wert 0 häufiger in einen fehlerhaften Wert 1 gestört als ein korrekter Wert 1 in einen fehlerhaften Wert 0 gestört wird, dann kann z.B. die Speicherelementanordnung von 7a angewendet werden.
-
Wird ein korrekter Wert 1 häufiger in einen fehlerhaften Wert 0 gestört als ein korrekter Wert 0 in einen fehlerhaften Wert 1 gestört wird, dann kann z.B. die Speicherelementanordnung von 7b angewendet werden. Auf diese Weise ist es möglich, eine größere Anzahl von 3-Bit Fehlern richtig zu korrigieren. Es ist jedoch selbstverständlich grundsätzlich möglich, in jedem Fall sowohl die Speicherelementanordnung der 7a als auch die Speicherelementanordnung der 7b zu verwenden.
-
Wie bereits für den Fall der 6a erläutert kann es durch die Verwendung von Master-Speicherelementen und Slave-Speicherelementen zu Verzögerungen kommen. Ähnlich wie für die Schaltungsanordnung der 6a unter Bezugnahme auf 6b erläutert, können auch für die Schaltungsanordnungen der 7a und 7b entsprechende Verzögerungselemente eingesetzt werden, um sicherzustellen, dass alle Ausgangswerte zu einem gewünschten Zeitpunkt an dem 3-Input-Korrekturelement 88 anliegen. Ein Beispiel, welches das Ausführungsbeispiel der 7a modifiziert, ist in 7c dargestellt.
-
Hier wird dem AND-Gatter 89 nachgeschaltet ein Verzögerungselement 810 bereitgestellt. In ähnlicher Weise kann auch in dem Ausführungsbeispiel der 7b dem OR-Gatter 85 ein Verzögerungselement nachgeschaltet werden. Bei anderen Ausführungsbeispielen können entsprechende Verzögerungselemente vor Eingänge des AND-Gatters 89 oder des OR-Gatters 85 bereitgestellt sein.
-
In 7d ist ein Diagramm dargestellt, welches im Wesentlichen dem Diagramm der 6c entspricht und einen Taktversatz Δ1 zeigt, welcher beispielsweise durch das Verzögerungselement 810 der 7c ausgeglichen werden kann.
-
Bei den Ausführungsbeispielen der 7a–7c werden die Ausgaben von den Speicherelementen 83 und 84 durch ein Logikgatter 89 oder 85 kombiniert und einem Eingang eines 3-Input-Korrekturelements 88 zugeführt. Bei anderen Ausführungsbeispielen kann – ähnlich dem Ausführungsbeispiel der 3 – für jedes Speicherelement ein separater Eingang eines n-Input-Korrekturelements bereitgestellt sein. Ein entsprechendes Ausführungsbeispiel ist in 8 dargestellt.
-
8 zeigt eine Speicherelementanordnung gemäß einem weiteren Ausführungsbeispiel mit N = 4 Speicherelementen SpM1 93 SpS1 96 SpM2 94 SpS2 97 und einem 4-Input-Korrekturelement 98, so dass hier n = 4 ist.
-
Ein Multiplexer MUX1 91, das Speicherelement SpM1 93 und das Speicherelement SpS1 96 bilden ein erstes Master-Slave-Flipflop, wobei SpM1 93 das Master-Latch und SpS1 96 das Slave-Latch dieses ersten Master-Slave-Flipflops sind. Ein Multiplexer MUX2 92, das Speicherelement SpM2 94 und das Speicherelement SpS2 97 bilden ein zweites Master-Slave-Flipflop, wobei SpM2 94 das Master-Latch und SpS2 97 das Slave-Latch dieses zweiten Master-Slave-Flipflops sind. Auch hier können bei anderen Ausführungsbeispielen die Multiplexer MUX1 91 und/oder MUX2 92 wie oben erläutert weggelassen sein.
-
Die Speicherelemente SpM1 93 und SpM2 94 sind an ein erstes Taktsignal cl1 angeschlossen, während die Speicherelemente SpS1 96 und SpS2 97 an ein zweites Taktsignal cl2 angeschlossen sind, entsprechend einem herkömmlichen Master-Slave-Flipflop.
-
In Abhängigkeit von einem binären Steuersignal c ist der Eingang Data−in, der ein zu speicherndes Datensignal trägt, oder der Eingang Scan−in, der das einzuscannende Signal trägt, über die Multiplexer MUX1 91 und MUX2 92 mit den Dateneingängen der Speicherelemente SpM1 und SpM2 verbunden.
-
Ein Ausgang des Speicherelementes SpM1 93 ist sowohl ein Eingang es Speicherelementes SpS1 96 als auch in einen ersten Eingang des 4-Input-Korrekturelementes geführt. Ein Ausgang des Speicherelementes SpM2 94 ist sowohl in einen Eingang des Speicherelementes SpS2 97 als auch in einen zweiten Eingang des 4-Input Korrekturelementes 98 geführt.
-
Ein Ausgang des Speicherelementes SpS1 96 ist mit einem dritten Eingang des 4-Input-Korrekturelementes 98 verbunden. Ein Ausgang des Speicherelementes SpS2 97 ist mit einem vierten Eingang des 4-Input-Korrekturelementes 98 verbunden, das an einem Ausgang einen korrigierten Wert ycorr ausgibt.
-
Die Fehlerkorrektur der Speicherelementanordnung der 8 soll hier für einen 3-Bit-Fehler beschrieben werden.
-
Zunächst betrachten wir wieder den Fall, dass kein Fehler vorliegt.
-
Wird zu dem Zeitpunkt, an dem die Taktsignale cl1 = 1 und cl2 = 0 sind über die Multiplexer MUX1 91 und MUX2 92 der Wert 1 in die Speicherelemente SpM1 93 und SpM2 94 geschrieben, dann liegt dann, wenn die Taktsignale cl1 = 0 und cl2 = 1 sind, am Ausgang der Speicherelemente SpS1 96 und SpS2 97, SpM1 93, SpM2 94 jeweils der Wert 1 und damit an allen vier Eingängen des 4-Input-Korrekturelementes 98 der Wert 1 an, was dann an seinem Ausgang den Wert 1 ausgibt.
-
Tritt nun, wenn die Taktsignale weiterhin die Werte cl1 = 0 und cl2 = 1 annehmen, und sich das System etwa beispielsweise in einem Wartezustand befindet, am Ausgang der Speicherelemente SpM1 93, SpM2 94 und SpS1 96 ein transienter Fehler auf, der den Ausgangswert 1 auf 0 verfälscht, dann liegen an dem ersten, dem zweiten und dem dritten Eingang des 4-Input-Korrekturelementes 98 jeweils der fehlerhafte Wert 0 an, während an seinem vierten Eingang der korrekte Wert 1 anliegt. Da nicht alle Eingabewerte des 4-Input-Korrekturelementes 98 gleich sind, gibt dieses Element an seinem Eingang den korrekten Wert 1 aus, den es bisher ausgegeben hat. Das ist auch der Fall, wenn die einzelnen aufgeführten Fehler zeitlich nacheinander auftreten, wenn das System beispielsweise in einem Wartezustand ist.
-
Wie bereits aus den Ausführungsbeispielen der 6 und 7 ersichtlich kann eine erfindungsgemäße Fehlerkorrektureinrichtung ein n-Input-Korrekturelement umfassen, wobei n kleiner oder gleich der Anzahl der Speicherelemente N sein kann. Allgemein kann bei N Speicherelementen einem n-Input-Korrekturelement eine kombinatorische Schaltung vorgeschaltet sein, welche N Ausgänge von Speicherzellen n Eingängen eines n-Input-Korrekturelements zuführt. Beispiele für derartige kombinatorische Schaltungen sind die oben erwähnten AND- und OR-Gatter. Ein weiteres entsprechendes Ausführungsbeispiel ist in 9 dargestellt.
-
9 zeigt eine erfindungsgemäße Speicherelementanordnung, die N Speicherelemente Spi 10i, i = 1, ..., N umfasst, die an ihrem jeweiligen Ausgang Werte yi ausgeben und die mit N Eingängen einer Logikschaltung in Form einer kombinatorischen Schaltung 1011 zur Realisierung einer kombinatorischen Funktion F mit N binären Eingängen und n binären Ausgängen, die die Werte zj mit j = 1, ..., n führen, verbunden sind. Dabei ist n > 3 und N > n. Die n binären Ausgänge der kombinatorischen Schaltung 1011 sind mit n binären Eingängen eines n-Input-Korrekturelementes 1012 verbunden, das an seinem binären Ausgang 1013 ein korrigiertes Ausgangssignal ycorr ausgibt. In diesem Fall umfasst eine Fehlerkorrektureinrichtung 1014 die kombinatorische Schaltung 1011 und das n-Input-Korrekturelement 1012. Es ist zu bemerken, dass bei anderen Ausführungsbeispiele mindestens einer der n Ausgänge der kombinatorischen Schaltung 1011 mit dem jeweils zugeordneten Eingang des n-Input-Korrekturelements 1012 über ein Verzögerungselement verbunden sein kann, beispielsweise um ähnlich wie für die 6b und 7c beschrieben ein synchrones, insbesondere gleichzeitiges Bereitstellen entsprechender Eingangswerte für das n-Input-Korrekturelement 1012 zu erreichen.
-
Die kombinatorische Schaltung 1011 transformiert die an ihren N Eingängen anliegenden binären Werte y1, ..., yN in die an ihren n Ausgängen ausgegebenen Werte z1, ..., zn, z1, ..., zn = F(y1, ..., yN).
-
Die kombinatorische Schaltung 1011 bei einem Ausführungsbeispiel ist so ausgelegt, dass gilt:
- 1. bei Eingabe vongibt die kombinatorische Schaltung 1011 die Werteaus,
- 2. bei Eingabe vongibt die kombinatorische Schaltung 1011 die Werteaus,
- 3. wird in die kombinatorische Schaltung 1011 eine Binärfolge y1, ..., yN eingegeben, die mindestens eine 1 und höchstens k Einsen enthält, dann enthält die von der kombinatorischen Schaltung 1011 ausgegebene Binärfolge z1, ..., zn = F(y1, ..., yN) mindestens eine 1 und mindestens eine 0. Dabei ist 2 < k < N – 1,
- 4. wird in die kombinatorische Schaltung 1011 eine Binärfolge y1, ..., yN eingegeben, die mindestens eine 0 und höchstens k Nullen enthält, dann enthält die von der kombinatorischen Schaltung 1011 ausgegebene Binärfolge z1, ..., zn = F(y1, ..., yN) mindestens eine 1 und mindestens eine 0.
-
Die Funktionsweise des n-Input-Korrekturelementes
1012 entspricht der bereits erläuterten und ist in der folgenden Tabelle nochmals dargestellt.
z1 | z2 | ... | z(n – 1) | zn | ycorr |
0 | 0 | ... | 0 | 0 | 0 |
0 | 0 | ... | 0 | 1 | vorhergehender Wert |
0 | 0 | ... | 1 | 0 | vorhergehender Wert |
.
.
. | .
.
. | .
.
. | .
.
. | .
.
. | vorhergehender Wert |
1 | 1 | ... | 1 | 0 | vorhergehender Wert |
1 | 1 | ... | 1 | 1 | 1 |
-
Das n-Input-Korrekturelement 1012 gibt bei Eingabe von y1 = y2 = ... = yn = 0 den Wert y = 0 und bei Eingabe von y1 = y = 2 = ... = yn = 1 den Wert y = 1 aus. In allen anderen Fällen gibt das n-Input Korrekturelement den vorhergehenden Wert aus.
-
Diese Speicherelementanordnung erlaubt bis zu k flüchtige Fehler, die sich z.B. in einer zweiten Takthälfte auf die Ausgabe von bis zu k der Speicherelemente auswirken, zu korrigieren, wobei k je nach Ausführungsbeispiel mindestens gleich 2 und höchstens gleich n – 1 ist.
-
Gilt z.B. in einer ersten Takthälfte y1 = y2 = ... = yN = 1, dann ist in dieser Takthälfte (z1, z2, ..., zn) = F(1, ..., 1) = 1, ..., 1 und damit ist y = 1. Sind nun in einer zweiten Takthälfte, etwa infolge eines Strahlungsfehlers, höchstens k Speicherelemente in den Wert 0 gestört, dann bildet die kombinatorische Schaltung 1011 die Inputwerte y1, ..., yN in Outputwerte z1 ..., zn = F(y1, ..., yN) ab, sodass mindestens eine Komponente dieser Werte gleich Null und mindestens eine Komponente gleich 1 ist, so dass nicht alle Komponenten z1, ..., zn gleich sind. Bei Eingabe dieser Werte gibt das n-Input-Korrekturelement 1012 an seinem Ausgang den vorhergehenden Wert 1 aus, so dass der Fehler in den Speicherelementen Spi 10i, der maximal k Bits verfälscht, richtig korrigiert wird. Trotz des betrachteten Fehlers wird also auch in der zweiten Takthälfte der korrigierte Wert y = 1 ausgegeben, obwohl bis zu k Speicherelemente in der zweiten Takthälfte einen fehlerhaften Wert annehmen.
-
Gilt zum Beispiel, dass N = n ist, dann lässt sich die kombinatorische Schaltung 1011 einfach durch direktes Verbinden der N = n Ausgänge der Speicherelemente Spi, i = 1, ..., N, die das Signal yi tragen, mit den entsprechenden Eingängen des n-Input-Korrekturelementes 1012 implementieren, so dass zi = yi für i = 1, ..., n und k = n – 1 gilt, was dem Ausführungsbeispiel der 3 entspricht. In diesem Fall können also n – 1 Fehler bei der Ausgabe der Speicherelemente in der zweiten Takthälfte korrigiert werden.
-
Aus Speicherelementanordnungen wie oben erläutert kann eine Speichervorrichtung aufgebaut werden. Ein entsprechendes Ausführungsbeispiel ist schematisch in 10 dargestellt. Die Speichervorrichtung der 10 umfasst einen Speicher 1110, welcher eine Vielzahl von Speicherelementanordnungen 111–119 umfasst, welche jeweils beispielsweise nach einem der oben beschriebenen Ausführungsbeispiele ausgestaltet sein können. Diese Speicherelementanordnungen können beispielsweise wie dargestellt in Matrixform angeordnet sein, es ist jedoch auch jede andere Anordnung, insbesondere herkömmliche Anordnungen von Speicherelementen in einem Speicher, möglich. Über eine Speichersteuerung 1111 kann auf den Speicher 1110 wie durch einen Pfeil 1112 dargestellt ist beispielsweise über einen Bus zugegriffen werden.
-
Die obigen Ausführungsbeispiele sind lediglich als Beispiel zu verstehen. Beispielsweise können durch einfache äquivalente Ersetzungen von dargestellten Logikanordnungen neue Ausführungsbeispiele geschaffen werden, ohne den Bereich der Erfindung zu verlassen. So kann man etwa in der Schaltungsanordnung von 7b die Ausgänge der Speicherelemente SpM1 83, SpS1 86, SpM2 84 und SpS2 87 jeweils negieren oder negierte Speicherausgänge verwenden und das OR-Gatter 85 durch ein NAND-Gatter ersetzen, ohne dass sich die Funktion der Schaltungsanordnung, insbesondere bezüglich der Eigenschaften der Korrektur von 1-Bit, 2-Bit und 3-Bit Fehlern verändert.
-
Weiterhin ist es beispielsweise möglich, zwei Leitungen, die in Ausführungsbeispielen direkt mit Eingängen des n-Input-Korrekturelementes verbunden sind, sowohl durch ein AND-Gatter als auch durch ein OR-Gatter zu verknüpfen und anstelle der beiden Leitungen selbst den Ausgang des AND-Gatters und den Ausgang des OR-Gatters mit den entsprechenden Eingängen des n-Input-Korrekturelementes zu verbinden, ohne dass sich die Eigenschaften der Korrektur von 1-Bit-, 2-Bit- und 3-Bit-Fehlern verändert.
-
Diese Beispiele stellen nur einige der möglichen Modifikationen dar. Insbesondere können generell invertierte Signale und entsprechend angepasste Logikschaltungen verwendet werden.