-
Stand der
Technik
-
Die
vorliegende Erfindung betrifft ein Rechenwerk für einen Prozessor wie etwa
einen Mikroprozessor oder Microkontroller, sowie einen Prozessor,
der ein solches Rechenwerk einsetzt. Insbesondere betrifft die Erfindung
ein Rechenwerk bzw. einen Mikroprozessor, die in der Lage sind,
eine hohe Verarbeitungssicherheit zu gewährleisten.
-
Es
sind mehrere grundsätzlich
verschiedene Konzepte zur Überprüfung des
korrekten Funktionierens eines Mikroprozessors oder Mikrocontrollers
bekannt. Ein erstes ist die Überprüfung der
Verarbeitungsergebnisse auf Plausibilität. Eine Plausibilitätsprüfung setzt
detaillierte Kenntnisse über
die von dem Prozessor auszuführende
Aufgabe und deren mögliche
Ergebnisse voraus. Sie ist daher in einem gegebenen Prozessorsystem
nicht universell verwendbar, sondern muss für jede Aufgabe, für die das Prozessorsystem
eingesetzt wird, neu entwickelt werden.
-
Ein
anderer Ansatz ist, das Prozessorsystem von Zeit zu Zeit vorgegebene
Selbsttests durchführen
zu lassen, die ein feststehendes, bekanntes Ergebnis liefern, und
durch einen Vergleich des tatsächlich
erhaltenen mit dem erwarteten Ergebnis die Funktionsfähigkeit
des Systems zu beurteilen. Es erweist sich jedoch als schwierig,
Selbsttests zu schaffen, die mit einem vertretbaren Aufwand an Speicherplatz
für die
Selbsttestroutinen und an Verarbeitungszeit eine hinreichend vollständige Erfassung
möglicher
Fehler gewährleisten.
-
Ein
dritter Ansatz ist die redundante Ausführung von Verarbeitungsschritten
und das Vergleichen der erhaltenen Ergebnisse. Redundanz ist erreichbar durch
wiederholte Ausführung
gleicher Verarbeitungsschritte auf derselben Hardware. Auf diese
Weise sind jedoch nur nichtdeterministisch auftretende Verarbeitungsfehler
erkennbar, die beispielsweise auf einen spontanen Ladungsverlust
eines Speichers auf Grund kosmischer Strahlung oder dergleichen zurückgehen,
nicht jedoch Verarbeitungsfehler, die deterministisch durch einen
Hardwaredefekt verursacht werden. Um auch letztere Fehler erfassen
zu können,
ist es notwendig eine Hardware-Redundanz vorzusehen,
was mit zusätzlichen
Kosten verbunden ist. Ein Prozessor, der redundante arithmetisch-logische
Einheiten zur Störungserkennung
einsetzt, ist aus
DE
103 49 581 A1 bekannt.
-
Vorteile
der Erfindung
-
Durch
die vorliegende Erfindung werden ein Rechenwerk bzw. ein Prozessor
geschaffen, die mit geringem Schaltungsaufwand und ohne wesentliche Einbuße an Verarbeitungsleistung
eine zuverlässige Störungserkennung
ermöglichen.
-
Zu
diesem Zweck ist bei einem Rechenwerk zur Verarbeitung von Daten
mit M × n
Bit Breite, wobei M, n natürliche
Zahlen sind, mit M Teilrechenwerken zur Verarbeitung von n Bit breiten
Daten, wobei die Teilrechenwerke jeweils einen Übertragsbiteingang und -ausgang
aufweisen, und wobei für
i = 1, ....M-1 jeweils eine Übertragsbitleitung
vom Übertragsbitausgang
des i-ten Teilrechenwerks zum Übertragsbiteingang
des i+1-ten Teilrechenwerks verläuft,
in der Übertragsbitleitung
zwischen dem m-ten und dem m+1-ten Teilrechenwerk, wobei 1 ≤ m < M ist, ein erster
Schalter zum wahlweisen Verbinden des Übertragsbiteingangs des m+1-ten
Teilrechenwerks mit dem Übertragsbitausgang
des m-ten Teilrechenwerks oder mit dem Übertragsbiteingang des m'-ten Teilrechenwerks
angeordnet, wobei m' ≤ m ist. Wenn
in der Stellung des ersten Schalters, in welcher der Übertragsbiteingang
des m+1-ten Teilrechenwerks mit dem Übertragsbiteingang des m'-ten Teilrechenwerks
verbunden ist, beide Teilrechenwerke mit gleichen Eingangsdaten
von n Bit Breite versorgt werden, müssen, wenn das Rechenwerk korrekt
arbeitet, die Verarbeitungsergebnisse beider Teilrechenwerke identisch
sein. Daher ist es durch einen Vergleich dieser Verarbeitungsergebnisse
möglich,
eine Störung
des Rechenwerks zu erkennen.
-
Um
den Vergleich durchzuführen,
ist ein Komparator zweckmäßigerweise
in das Rechenwerk integriert und hat zwei Eingänge, die mit Datenausgängen des
m+1-ten und des
m'-ten Teilrechenwerks verbunden
sind.
-
Es
können
auch zwei Eingänge
des Komparators mit den Übertragsbitausgängen des
m+1-ten und des m'-ten Teilrechenwerks
verbunden sein, um eventuelle Unterschiede in den von den Rechenwerken
erzeugten Übertragsbits
zu erfassen.
-
Um
die Rechenwerke wahlweise mit unterschiedlichen oder mit identischen
Daten versorgen zu können,
ist ein Schalter zum wahlweisen Verbinden oder Nichtverbinden von
Dateneingängen
des m+1-ten und des m'-ten
Teilrechenwerks zweckmäßigerweise
ebenfalls in das Rechenwerk integriert.
-
Im
einfachsten Fall kann M = 2 und m = m' = 1 sein. Alternativ sind auch die
Werte M = 4, m = 2 und m' =
1 bevorzugt.
-
Ein
Prozessor, der ein Rechenwerk der oben definierten Art umfasst,
ist zweckmäßigerweise
zwischen einem Leistungsbetriebszustand, in welchem der erste Schalter
den Übertragsbiteingang
des m+1-ten Teilrechenwerks mit dem Übertragsbitausgang des m-ten Teilrechenwerks
verbindet, so dass die Teilrechenwerke gemeinsam M × n Bit
breite Datenwörter
verarbeiten können,
und einem Sicherheitsbetriebszustand umschaltbar, in welchem der erste
Schalter den Übertragsbiteingang
des m+1-ten Teilrechenwerks mit dem Übertragsbiteingang des m'-ten Teilrechenwerks
verbindet.
-
Eine
Umschaltung zwischen den Betriebszuständen des Prozessors erfolgt
vorzugsweise programmgesteuert. Dies erlaubt es einem Entwickler,
in einem von dem Prozessor auszuführenden Programm Umschaltpunkte festzulegen,
an denen ein zeitweiliger Wechsel vom Leistungsbetriebszustand in
den Sicherheitsbetriebszustand möglich
ist, ohne dass dies die Verarbeitungsleistung des Prozessors merklich
beeinträchtigt.
-
Wenn
im Sicherheitsbetriebszustand eine Abweichung zwischen Ausgaben
des m+1-ten und des m'-ten
Teilrechenwerks auftritt, so bedeutet dies, dass in einem dieser
Teilrechenwerke ein Fehler aufgetreten ist. In diesem Fall sollte
der Prozessor in der Lage sein, eine Ausnahmeverarbeitung auszuführen, um
zu verhindern, dass eine Weiterverarbeitung des fehlerhaften Verarbeitungsergebnisses
zu weitergehenden Störungen
des Prozessors oder eines von ihm gesteuerten Gerätes führt.
-
Eine
solche Ausnahmeverarbeitung auszuführen, ist auch sinnvoll, wenn
im Leistungsbetriebszustand eine vorgegebene Zahl von Malen keine
Abweichung zwischen Ausgaben des m+1-ten und des m'-ten Rechenwerks
festgestellt wird. Wenn man davon ausgeht, dass die Verarbeitungsergebnisse
der zwei Rechenwerke im Leistungsbetriebszustand unkorreliert sind,
so beträgt
die Wahrscheinlichkeit, dass beide nicht voneinander abweichen,
2-n. Die Wahrscheinlichkeit, dass p aufeinanderfolgende
Rechenvorgänge
zu keiner Abweichung zwischen den Ausgaben der Teilrechenwerke führen, ist
2-pn. Indem man p groß genug wählt, kann diese Wahrscheinlichkeit
kleiner als jeder beliebige Grenzwert gemacht werden, so dass die
wahrscheinliche Wartezeit bis zum Auftreten einer p-fachen Übereinstimmung
ohne weiteres größer gemacht
werden kann als die erwartete Le bensdauer des Prozessors, und somit
unter praktischen Gesichtspunkten vernachlässigbar ist. Wenn dennoch eine
p-fache Übereinstimmung
der Verarbeitungsergebnisse festgestellt wird, so kann daraus geschlossen
werden, dass ein Defekt vorliegt, der eine korrekte Feststellung,
ob die Verarbeitungsergebnisse der Teilrechenwerke gleich oder ungleich
sind, unmöglich
macht.
-
Weitere
Merkmale und Vorteile der Erfindung ergeben sich aus der nachfolgenden
Beschreibung eines Ausführungsbeispiels
unter Bezugnahme auf die einzige Figur.
-
Figuren
-
1 zeigt
ein Blockdiagramm eines Rechenwerks gemäß der vorliegenden Erfindung.
-
Beschreibung
des Ausführungsbeispiels
-
Das
in 1 gezeigte Rechenwerk umfasst vier Binäraddierer 1, 2, 3, 4 in
einer Ripple-Carry-Anordnung,
in der ein Übertragsbiteingang 11 des
Addierers 1 mit der geringsten Signifikanz mit einem (nicht
dargestellten) Statusregister verbunden ist, um von dort gegebenenfalls
ein in einer vorhergehenden Rechenoperation gespeichertes Übertragsbit
zu empfangen, und Übertragsbiteingänge 21, 31, 41 der signifikanteren
Addierer 2, 3, 4 jeweils mit Übertragsbitausgängen 12, 22, 32 durch Übertragsbitleitungen 13, 23, 33 verbunden
sind. Der Übertragsbitausgang 42 des
Addierers höchster
Signifikanz 4 ist in an sich bekannter Weise mit dem bereits
erwähnten
Statusregister verbunden, um ein aus einer Rechenoperation resultierendes Übertragsbit
gegebenenfalls darin speichern zu können.
-
In
der Übertragsbitleitung 23 ist
ein Schalter 5 angeordnet, der es erlaubt, den Eingang 31 des
Addierers 3 parallel zum Eingang 11 des Addierers 1 an das
Statusregister anzuschalten. Die Addierer 1 bis 4 haben
jeweils eine Breite von 8 Bit, um an Eingängen 6, 7 des
Rechenwerks empfangene Daten von jeweils 32 Bit Breite mit Bits
a31, ..., a0 bzw
b31, ..., b0 zu empfangen.
Zwischen den Eingängen 6, 7 und
Dateneingängen
des Addierers 3 sind Schalter 34, 35 angeordnet,
die es erlauben, die Dateneingänge
des Addierers 3 wahlweise mit den Bits a23,
..., a16 oder a7, ...,
a0 bzw. b23, ...,
b16 oder b7, ...,
b0 zu beschalten. Entsprechend dienen Schalter 44, 45 dazu,
Dateneingänge
des Addierers 4 wahlweise mit den Bits a31, ...,
a24 oder a15, ...,
a8 bzw b31, ...,
b24 oder b15, ...,
b8 zu beschalten.
-
Ergebnisausgänge 16, 26, 36, 46 der
Addierer 1 bis 4 sind zu einem gemeinsamen 32
Bit breiten Datenausgang 8 des Addierwerks gebündelt. An
die Datenausgänge 46, 26 ist
ein Komparator 9, an die Datenausgänge 36, 16 ein
Komparator 9' von
jeweils 8 Bit Eingangsbreite angeschlossen. Ein Komparator 10 mit
einer Eingangsbreite von 1 Bit ist an die Übertragsbitausgänge 22 und 42 angeschlossen.
Die Schalter 5, 34, 35, 44, 45 unterstehen
der Kontrolle einer Betriebszustandssteuereinheit 50. In
einer Leistungsbetriebart hält
die Steuereinheit 50 den Übertragsbiteingang 31 mit
dem Ausgang 22 verbunden, und die Dateneingänge der
Addierer 3, 4 sind mit den Bits a31,
..., a16 und b31,
..., b16 beschaltet. In diesem Betriebszustand
arbeitet das Rechenwerk in herkömmlicher
Weise, die hier nicht weiter beschrieben zu werden braucht. Mit
jeder von den Addierern 1 bis 4 durchgeführten Additionsoperation
liefern die Komparatoren 9, 9' jeweils n Bit und der Komparator 10 ein
Bit, welche die zeitweise Übereinstimmung oder
Nichtübereinstimmung
der an ihren Eingängen anliegenden
Verarbeitungsergebnisse anzeigen, an die Steuereinheit 50.
Wenn diese bei einer vorgegebenen Zahl p von aufeinanderfolgenden
Ausgaben der Komparatoren 9, 9' Übereinstimmung feststellt, wird
davon ausgegangen, dass ein Fehler bei einem dieser Komparatoren
vorliegt, und die Steuereinheit 50 löst einen internen Interrupt
eines das Rechenwerk enthaltenden Prozessors aus, um eine Fehlerbehandlungsroutine
auszulösen.
Diese Fehlerbehandlungsroutine kann z. B. darin bestehen, dass einem
Benutzer des Prozessors eine Warnung angezeigt wird, um ihn in Kenntnis
zu setzen, dass die Betriebssicherheit des Prozessors nicht mehr
gewährleistet
ist.
-
In
Reaktion auf einen vom Prozessor gelesenen Umschaltbefehl legt die
Steuereinheit 50 die Schalter 5, 34, 35, 44 und 45 um,
um in einen Sicherheits-Betriebszustand
zu wechseln. In diesem Betriebszustand werden von den an den Eingängen 6, 7 anliegenden
Daten jeweils nur die 16 weniger signifikanten Bits a15,
..., a0 bzw. b15,
..., b0 verarbeitet, dies aber in redundanter
Weise, zum einen von den Addierern 1, 2, zum anderen
von den Addierern 3, 4. Da die Addierer 1, 3 das
gleiche Übertragsbit
vom Statusregister empfangen, sollten die Verarbei tungsergebnisse
der Addierer 1, 3 bzw. 2, 4 gleich
sein. Es kann jeder einzelne der Addierer 1, 2, 3, 4 als
Teilrechenwerk im Sinne der vorliegenden Anmeldung aufgefasst werden;
es können
aber auch die Addierer 1, 2 zusammen als ein erstes
und die Addierer 3, 4, als ein zweites Teilrechenwerk
betrachtet werden. Die Steuereinheit 50 empfängt von
den Komparatoren 9, 9', 10 Informationen darüber, ob
die Verarbeitungsergebnisse tatsächlich
gleich sind. Wenn wenigstens einer der Komparatoren 9, 9', 10 Ungleichheit
signalisiert, so deutet dies auf eine Störung der Addierer hin, und
die Betriebszustandssteuereinheit 50 löst eine zweite Fehlerbehebungsroutine
aus, die ebenfalls aus einer Warnung an den Benutzer bestehen kann,
die vorzugsweise aber auch weitergehende Absicherungsschritte wie
etwa die Sperrung von bestimmten Aufgaben des Prozessors, bei denen
eine fehlerhafte Ausführung
Sicherheitsrisiken beinhaltet, umfasst.
-
Ein
erneuter Empfang des gleichen Umschaltbefehls durch die Steuereinheit 50 führt zur Wiederherstellung
des Leistungsbetriebszustandes.
-
Der
Programmierer einer Anwendung für den
das Rechenwerk enthaltenden Prozessor ist völlig frei in der Entscheidung,
wann, wie häufig
und wie lang das Rechenwerk im Sicherheits-Betriebszustand arbeiten
soll. So kann er z. B. vorsehen, dass der Prozessor in Zeiten von
vorhersehbar geringer Auslastung in den Sicherheits-Betriebszustand wechselt,
um diese Zeiten für
eine Überprüfung der Betriebssicherheit
zu nutzen. Es ist auch möglich,
immer dann in den Sicherheits-Betriebszustand zu wechseln, wenn
die vom Prozessor zu bearbeitende Aufgabe Operationen mit Operanden
von 16 Bit Breite oder weniger beinhaltet, da diese Operationen
im Sicherheits-Betriebszustand
durchführbar
sind, ohne den Betrieb des Prozessors zu verlangsamen. Eine weitere
Möglichkeit
ist, Aufgaben, die hochgradig sicherheitskritisch sind, von vorneherein
mit Operanden von nicht mehr als 16 Bit Breite zu programmieren,
um diese dann durchweg im Sicherheitsbetriebszustand ausführen zu
lassen.