-
Stand der
Technik
-
Die
vorliegende Erfindung betrifft ein Prozessorsystem mit wenigstens
einer Ausführungseinheit zum
Ausführen
von Programmbefehlen einer Anwendung, einem Programmspeicher zum
Speichern der Programmbefehle der Anwendung und wenigstens einer
Fehlerbehandlungsroutine, einem Arbeitsspeicher zum Speichern eines
Satzes von Variablen der Anwendung und einer Überwachungseinheit zum Erfassen
von Fehlern der Ausführungseinheit
und/oder des Arbeitsspeichers und Starten einer der Fehlerbehandlungsroutinen
im Falle der Erfassung eines Fehlers.
-
Die
Fehler, um deren Erfassung es dabei geht, sind „spontane" Fehler, die vereinzelt und unvorhersagbar
in einem ansonsten ordnungsgemäß arbeitenden
System auftreten. Solche Fehler gehen häufig zurück auf ionisierende Strahlung,
die im Halbleitermaterial des Systems Ladungsträger freisetzt und so zu unkontrollierten
Ladungsbewegungen führen
kann. In der Zukunft ist mit einer Verschärfung der Probleme zu rechnen,
die mit spontanen Fehlern in digitalen Schaltungsstrukturen zusammenhängen, da
die fortschreitende Miniaturisierung der Schaltungsstrukturen zu
einer erhöhten
Empfindlichkeit gegenüber
ionisierender Strahlung führt.
Die Ladungsmengen, die den Unterschied zwischen zwei verschiedenen
logischen Niveaus einer modernen hochintegrierten Schaltung ausmachen,
sind mittlerweile so gering, dass ein einzelnes Quantum ionisierender
Strahlung, das von einer Halbleiterstruktur absorbiert wird, genügen kann,
um deren logischen Zustand zu invertieren. Je kleiner die Strukturen
und damit die Ladungen werden, um so wahrscheinlicher werden derartige
auch als Bit-Flip bezeichneten spontanen Zustandsübergänge.
-
Ein
Prozessorsystem der oben angegebenen Art ist aus
US 6 625 749 B1 bekannt.
Es handelt sich hierbei um ein Prozessorsystem mit zwei Ausführungseinheiten
und einer Prüfeinheit,
wobei die eine Ausführungseinheit
und die Prüfeinheit
zusammen als eine Überwachungseinheit
zum Überwachen
der jeweils anderen Ausführungseinheit
durch Vergleichen der von den Verarbeitungseinheiten bei Ausführung gleicher
Programmbefehle erhaltenen Ergebnisse aufgefasst werden kann. Wenn
unterschiedliche Verarbeitungsergebnisse der zwei Ausführungseinheiten
erfasst werden, die auf einen Fehler in einer der Ausführungseinheiten
hinweisen, wird eine Fehlerbehandlungsroutine gestartet, in deren Verlauf
aus Zustandsdaten der zwei Ausführungseinheiten
ein Satz von fehlerfreien Zustandsdaten in den Arbeitsspeicher gesichert
und anschließend
in beide Ausführungseinheiten
zurückgeladen
wird.
-
Dieses
bekannte Prozessorsystem erreicht ein beträchtliches Maß an Fehlertoleranz
unabhängig
von der Art der darauf ausgeführten
Anwendung, allerdings sind die Kosten des Systems aufgrund der Redundanz
der Ausführungseinheiten
erheblich.
-
Diese
Kosten können
zwar durch nichtredundante Prozessorsysteme vermieden werden, doch besteht
bei diesen das Problem, dass eine Wiederherstellung von als verfälscht erkannten
Daten nicht sicher möglich
ist, weil nach Auftreten eines Fehlers kein Verlass darauf ist,
dass die Ausführungseinheit eines
solchen Systems noch korrekt arbeitet und in der Lage ist, einen
als verfälscht
erkannten Datenwert zu rekonstruieren, selbst wenn zu seiner Rekonstruktion
benötigte
redundante Information verfügbar ist.
Herkömmliche
einfache Prozessorsysteme sperren daher häufig bei Auftreten eines Fehlers
die Ausführung
einer Anwendung, in der der Fehler aufgetreten ist, oder sie lösen automatisch
einen Neustart aus, durch den – unter
Inkaufnahme des Verlustes sämtlicher
aktueller Werte von Variablen der Anwendung – ein wohldefinierter Anfangszustand
wieder hergestellt wird, von dem aus das System in der Lage ist,
korrekt weiter zu arbeiten.
-
Ein
solcher Neustart wird herkömmlicherweise
ausgelöst
durch Anlegen eines Reset-Signals
an einen Reset-Eingang des Prozessors. Indem ein solches Reset-Signal
auch beim Einschalten des System erzeugt wird, wird beim Einschalten
wie beim Neustart die gleiche Initialisierungsprozedur ausgeführt.
-
Auch
diese Lösungen
sind nicht vollauf befriedigend, da insbesondere bei Echtzeitanwendungen
eine plötzliche
Sperrung der Anwendung oder ein Neustart, nach welchem das System
eine längere Zeit,
häufig
mehrere hundert Millisekunden, benötigt, um wieder einsatzfähig zu sein,
nicht hinnehmbar sind.
-
Es
besteht daher Bedarf nach einem Prozessorsystem, das bei einfachem,
preiswert realisierbarem Aufbau ein hohes Maß an Toleranz gegen spontane
Bitfehler aufweist.
-
Offenbarung
der Erfindung
-
Diesen
Bedarf befriedigt die Erfindung durch ein Prozessorsystem mit wenigstens
einer Ausführungseinheit
zum Ausführen
von Programmbefehlen einer Anwendung, einem Programmspeicher zum Speichern
der Programmbefehle der Anwendung und wenigstens einer Fehlerbehandlungsroutine,
einem Arbeitsspeicher zum Speichern eines Satzes von Variablen der
Anwendung und einer Überwachungseinheit
zum Erfassen von Fehlern der Ausführungseinheit und/oder des
Arbeitsspeichers und Starten einer Fehlerbehandlungsroutine im Falle
der Erfassung eines Fehlers, bei dem der Arbeitsspeicher mehrere
Fehlerbehandlungsroutinen enthält, die
ausgelegt sind, um jeweils unterschiedliche Teilmengen des Satzes
von Variablen zu erneuern.
-
Die
Mehrzahl von Fehlerbehandlungsroutinen ermöglicht es, auf einen auftretenden
Fehler flexibel zu reagieren und, da anders als bei einem herkömmlichen
Neustart nicht der gesamte Satz von Variablen erneuert werden muss,
die Einsatzbereitschaft des Systems schnell wieder herzustellen.
-
Wenigstens
einige der Fehlerbehandlungsroutinen stehen vorzugsweise in einem
Vor- bzw. Nachrangigkeitsverhältnis zueinander,
wobei von solchen Routinen bei Auftreten eines Fehlers jeweils zunächst die
Fehlerbehandlungsroutine mit dem vordersten Rang gestartet wird.
In einem solchen System ist die Überwachungseinheit
vorzugsweise ausgelegt, um zu beurteilen, ob ein Fehler durch Ausführen einer
vorrangigen Fehlerbehandlungsroutine erfolgreich behoben wurde,
und, wenn er nicht erfolgreich behoben wurde, eine nachrangige Fehlerbehandlungsroutine
zu starten.
-
Für die Beurteilung
eines Fehlers als nicht erfolgreich behoben können unterschiedliche Kriterien
eingesetzt werden. So kann insbesondere der Fehler dann als nicht
erfolgreich behoben beurteilt werden, wenn innerhalb eines vorgegebenen
Zeitraums ab dem Starten der vorrangigen Fehlerbehandlungsroutine
der Fehler andauert. Ein anderes zweckmäßiges Kriterium ist, ob die Überwachungseinheit
innerhalb eines vorgegebenen Zeitraums ab Durchführung der vorrangigen Fehlerbehandlungsroutine
erneut einen Fehler erfasst.
-
Die
Menge der durch eine gegebene Fehlerbehandlungsroutine erneuerten
Variablen ist vorzugsweise eine echte Teilmenge der Menge der Variablen,
die von einer der gegebenen Fehlerbehandlungsroutine nachrangigen
Fehlerbehandlungsroutine erneuert werden. D.h. die Eingriffe der
im Rangverhältnis
zueinenander stehenden, bei erfolgloser Fehlerbehandlung nacheinander
ausgeführten
Fehlerbehandlungsroutinen in den Satz der Variablen werden von einer
Routine zur nächsten
immer tiefgreifender, bis schließlich als letztrangige Fehlerbehandlungsroutine
in der Rangfolge ein Neustart vorgesehen sein kann, also ein Vorgang,
bei dem sämtliche
aktuellen Variablenwerte verworfen und anhand von Voreinstellungen
erneuert werden.
-
Wenn
das erfindungsgemäße Prozessorsystem
zur Steuerung einer Maschine eingesetzt ist, ist es zweckmäßig, im
Falle der Erfassung eines Fehlers die auszuführende Fehlerbehandlungsroutine
anhand wenigstens eines Betriebsparameters der Maschine auszuwählen. Wenn
beispielsweise das Prozessorsystem ein Kfz-Steuergerät und die
Maschine ein Kraftfahrzeug ist, so kann es zweckmäßig sein, die
Entscheidung über
eine auszuführende
Fehlerbehandlungsroutine davon abhängig zu machen, ob das Fahrzeug
steht oder fährt
bzw. wie schnell es fährt.
-
Um
die Ausführungseinheit
zum Starten einer Fehlerbehandlungsroutine zu veranlassen, kann die Überwachungseinheit
an einen NMI-Eingang der Ausführungseinheit
angeschlossen sein. Auch ein Anschluss der Überwachungseinheit an einen
Reset-Eingang der Ausführungseinheit
ist nützlich.
-
Des
weiteren kann die Überwachungseinheit an
einen E/A-Port der Ausführungseinheit
angeschlossen sein. Es kann vorgesehen werden, dass die Ausführungseinheit
diesen Port im Normalbetrieb regelmäßig abfragt, um festzustellen,
ob ein Fehler vorliegt, der behoben werden muss; vorzugsweise ist er
nutzbar, um im Laufe einer Fehlerbehandlungsroutine Hilfsinformation
an die Ausführungseinheit
zu übergeben.
-
Einer
bevorzugten Ausgestaltung zufolge weist die Ausführungseinheit zwei Gruppen
von internen Speicherzellen auf, wobei die Speicherzellen der ersten
Gruppe durch ein an einen Warmstart-Eingang der Ausführungseinheit
angelegtes Signal unmittelbar löschbar
sind und diejenigen der zweiten Gruppe nicht. Während bei einem Reset üblicherweise
sämtliche
internen Speicherzellen einer Ausführungseinheit unmittelbar durch
das Reset- Signal
gelöscht
werden, ohne dass es der Ausführung
spezieller Löschbefehle
durch die Ausführungseinheit
bedürfte,
liefert das Vorhandensein der zwei Gruppen von Speicherzellen dem
Programmierer einer Anwendung die Möglichkeit, die Variablen der
Anwendung auf Speicherzellen der ersten bzw. zweiten Gruppe so zu
verteilen, dass aufwändig
zu erneuernde Variablen sich in Speicherzellen der zweiten Gruppe
befinden, und solche die problemlos erneuerbar sind, in der ersten.
-
Ein
Signal, welches das Vorliegen oder Nichtvorliegen eines Fehlers
in dem Prozessorsystem anzeigt, hat vorzugsweise bei Vorliegen eines Fehlers
einen massenahen und bei Nichtvorliegen einen massefernen Pegel.
So ist die Wahrscheinlichkeit groß, dass ein Versagen eines
dieses Signal liefernden Schaltungsteils, beispielsweise aufgrund
eines Versorgungsspannungsausfalls, die gleiche Reaktion wie ein
von diesem Schaltungsteil zu erfassender Fehler hervorruft und dadurch
bemerkt wird und behoben werden kann.
-
Eine
noch höhere
Zuverlässigkeit
bei der Erfassung einer Störung
in dem das Fehlersignal erzeugenden Schaltungsteil wird erreicht,
wenn dieses Signal bei Vorliegen eines Fehlers einen konstanten und
bei Nichtvorliegen einen veränderlichen
Pegel annimmt.
-
Weitere
Merkmale und Vorteile der Erfindung ergeben sich aus der nachfolgenden
Beschreibung von Ausführungsbeispielen
unter Bezugnahme auf die beigefügten
Figuren.
-
Figuren
Es zeigen:
-
1-3 Blockdiagramme
von Prozessorsystemen gemäß der vorliegenden
Erfindung; und
-
4 ein
Flussdiagramm eines Arbeitsverfahrens einer Überwachungseinheit in einem
erfindungsgemäßen Prozessorsystem.
-
Beschreibung
der Ausführungsbeispiele
-
1 zeigt
schematisch ein Prozessorsystem mit einem Mikroprozessor 1,
externem RAM 2 und ROM 3, die mit dem Mikroprozessor 1 über einen Datenbus 4 und
einen nicht dargestellten Adressbus kommunizieren, sowie einer Überwachungseinheit 5. Der
Mikroprozessor 1 enthält
eine Mehrzahl von Registern 6 sowie interne Speicherbereiche 7, 8 mit wahlfreiem
Zugriff wie etwa einen Cache, eine Arithmetik-Logik-Einheit (ALU) 9,
die Rechenoperationen an den Inhalten der Register 6 und
der Speicher 2, 7, 8 durchführt, einen
Paritätsgenerator 10,
Sensoren 13 zum Überwachen
einer von dem Prozessorsystem gesteuerten Maschine und Aktoren, über die
das System in der Lage ist, die Maschine zu beeinflussen,. Bestandteile
des Mikroprozessors 1, die den Zugriff des Mikroprozessors 1 auf
im ROM 3 gespeicherte Programmbefehle und deren Decodierung steuern,
sind, da an sich bekannt, nicht dargestellt. Die Register 6 und
die internen Speicher 7, 8, fakultativ auch das
RAM 2, enthalten zu jeder ihrer Speicherzellen ein Paritätsbit, das
den Paritätszustand des
in dere Zelle gespeicherten Datenwortes angibt. Das Paritätsbit wird
mit dem zugehörigen
Datenwort auf den Datenbus 4 ausgegeben, von der ALU 9 aber nicht
verarbeitet. Es wird von der Überwachungseinheit 5 empfangen
und mit einem Paritätsbit
verglichen, welches letztere aus dem gleichzeitig empfangenen zugehörigen Datenwort
berechnet. Bei Nichtübereinstimmung
der Paritätsbits
gibt der Paritätsgenerator 10 ein
Fehlersignal auf einer Leitung 11 an die Überwachungseinheit 5 aus.
-
Bei
ordnungsgemäßer Funktion
des Mikroprozessors 1 führt
die Signalleitung 11 einen Pegel logisch 1, nahe dem Versorgungspotenzial
des Mikroprozessors; bei Auftreten eines Paritätsfehlers fällt der Pegel auf logisch 0,
nahe dem Massepotenzial. Infolgedessen wird nicht nur ein tatsächlicher Bitfehler
im von der Überwachungseinheit 5 überwachten
Speicher, sondern auch eine Störung
der Überwachungseinheit
selbst, bei der ihr Ausgangssignal auf 0 geht, als Fehler erkannt.
Das Fehlersignal ist von der Überwachungseinheit 5 unmittelbar
zurückgeführt an einen
nicht maskierbaren Interrupt-Eingang
(NMI-Eingang) 12 des Mikroprozessors 1. So ist
der Mikroprozessor 1 im Fehlerfall gezwungen, die in Bearbeitung
befindliche Anwendung zu unterbrechen und eine NMI-Fehlerbehandlungsroutine
anzuspringen.
-
Einer
Variante zufolge führt
die Signalleitung 11 bei ordnungsgemäßer Funktion des Mikroprozessors 1 ein
Signal, dessen Pegel zwischen logisch 0 und logisch 1 oszilliert
und das im Fehlerfall einen konstanten Wert annimmt. So wird als
ein Fehler auch der Fall erkannt, dass die Überwachungseinheit 5 aufgrund
einer Störung
konstant ein Ausgangssignal logisch 1 liefert.
-
Die
Fehlerbehandlungsroutine kann z.B. darin bestehen, zu ermitteln,
in welchem von mehreren Programmteilen der auf dem Prozessorsystem
laufenden Anwendung der festgestellte Fehler aufgetreten ist, und
anschließend
eine für
den jeweiligen Programmteil spezifische Fehlerbehandlungsroutine auszuführen, die
darin bestehen kann, von diesem Programmteil benutzte Variablen
zu erneuern und anschließend
zu einer vorgegebenen Wiedereinstiegsstelle des betreffenden Programmteils
zurückzukehren,
von wo aus mit den erneuerten Variablen weitergearbeitet werden
kann. Die Erneuerung der Variablen kann beispielsweise erfolgen,
indem diese – in
derselben Weise wie bei einem Kaltstart des Prozessorsystems – aus einem
Permanentspeicher gelesen und an für sie vorgesehene Plätze der
Speicher 7, 8 kopiert werden oder aus permanent
gespeicherten Werten neu errechnet werden. Wenn das Prozessorsystem
für eine
Steuerungsanwendung eingesetzt ist, ist für viele Variablen, die Betriebsgrößen einer
von dem Prozessorsystem gesteuerten Maschine entsprechen, der einfachste
Weg zu ihrer Erneuerung, dass der Mikroprozessor 1 sie über die
ihnen entsprechenden Sensoren 13 neu erfasst. Im einen wie
im anderen Falle beschränkt
sich die Menge der zu erneuernden Daten auf einen Teil der Variablen der
Anwendung, so dass die Einsatzbereitschaft des Prozessorsystems
in den meisten Fällen
deutlich schneller wiederherstellbar ist, als wenn ein Reset des
gesamten Prozessorsystems mit darauf folgender Neuinitialisierung
sämtlicher
Variablen erfolgt.
-
Unter
einer Variablen wird hier im umfassenden Sinn jede Größe verstandenn,
die in einem der beschreibbaren Speicher 2, 6, 7, 8 gespeichert
sind, so dass der Mikroprozessor technisch in der Lage ist, sie
zu verändern,
unabhängig
davon, ob die betreffende Anwendung eine Änderung einer solchen Variablen
tatsächlich
vorsieht oder nicht.
-
Eine
weitere Möglichkeit
der Fehlerbehandlung ist, nach Identifizierung des Programmteils,
in welchem der Fehler aufgetreten ist, die Ausführung dieses Programmteils
zu sperren und statt dessen einen vorgegebenen Ersatz-Programmteil
zu aktivieren, der kurzfristig ein höheres Maß an Betriebssicherheit ermöglicht als
der Programmteil, in welchem die Störung aufgetreten ist. Wenn
z.B. die Anwendung ein Brake-by-Wire-System ist, so kann es zweckmäßig sein,
bei Auftreten eines Fehlers in einem Programmteil, der zur Errechnung
und zum Vergleich der Geschwindigkeiten der verschiedenen Räder eines Fahrzeugs
dient, eine auf diesem Vergleich basierende Antiblockierfunktion
zu sperren und statt dessen eine Notfunktion zu aktivieren, die
den auf die Räder
wirkenden Bremsdruck allein anhand der Bremspedalstellung ohne Berücksichtigung
eines eventuellen Blockierens der Räder steuert, um auf diese Weise
die Verfügbarkeit
der Bremsen bei fahrendem Fahrzeug nicht durch einen zeitaufwändigen Kaltstart
des Prozessorsystems zu beeinträchtigen.
-
Einer
weiterentwickelten Ausgestaltung zufolge, die ebenfalls mit Bezug
auf 1 beschrieben wird, ist der Eingang 12 des
Mikroprozessors 1 kein NMI-Eingang, sondern ein E/A-Port.
Ein an diesem von der Überwachungseinheit 5 her
eintreffendes Signal verursacht keine automatische Reaktion des
Mikroprozessors 1 verursacht, aber Mikroprozessor 1 ist
programmgesteuert in der Lage, den Pegel des Eingangs 12 zu
lesen. Der NMI-Eingang
ist mit 16 bezeichnet; ansonsten werden gleiche Bezugszeichen für gleiche
Elemente wie in der zuvor beschriebenen Ausgestaltung verwendet.
Der NMI-Eingang 16 und ein Reset-Eingang 17 sind
innerhalb der Überwachungseinheit 5 mit
der Fehlersignalleitung 11 über einen Demultiplexer 18 verbunden.
Der Demultiplexer 18 ist durch ein Zeitglied, hier ein
Monoflop 14, gesteuert, welches durch Eintreffen eines
Fehlersignals auf der Leitung 11 in seinen instabilen Zustand versetzt
wird. In diesem Zustand steuert es den Demultiplexer 18 so
an, dass dieser das Fehlersignal an den NMI-Eingang 16 des
Mikroprozessors 1 weiterschaltet, was dort eine Fehlerbehandlungsroutine wie
oben für
die erste Ausgestaltung beschrieben auslöst.
-
Das
Monoflop 14 ist durch ein zwischenzeitliches Verschwinden
und Wiederauftreten des Fehlersignals nicht neu triggerbar, so dass
es unabhängig
davon, ob das Fehlersignal durch die Fehlerbehandlungsroutine beseitigt
wird oder nicht, nach einer vorgegebenen Zeitspanne dt1 in den stabilen
Zustand zurückkehrt.
In diesem Zustand verbindet der Demultiplexer 18 den Reseteingang 17 des
Mikroprozessors 1 mit der Fehlersignalleitung 11.
Wenn das Fehlersignal zwischenzeitlich verschwunden ist, führt dies
zu keiner Reaktion des Mikroprozessors 1; wenn es jedoch
noch vorhanden ist, d.h. wenn die über den NMI-Eingang ausgelöste Fehlerbehebungsroutine
innerhalb der Zeit dt1 keine Wirkung gezeigt hat, wird sie als fehlgeschlagen
angesehen und das Fehlersignal an den Reseteingang angelegt.
-
Durch
das Fehlersignal am Reseteingang 17, im folgenden auch
als Reset-Signal bezeichnet, werden zumindest die Register 6 des
Mikroprozessors 1 unmittelbar gelöscht. Je nach Bauart des Mikroprozessors 1 kann
vorgesehen sein, dass auch der interne Speicher 7, 8 unmittelbar
gelöscht
wird.
-
Ferner
wird der Mikroprozessor 1 durch das Reset-Signal veranlasst,
eine weitere Fehlerbehandlungsroutine im ROM 3 anzuspringen.
Zu Beginn dieser Routine überprüft er den
Status des Ein-/Ausgabe-Anschlusses 12. Wenn dieser keinen
Fehler anzeigt, handelt es sich um einen Kaltstart; in diesem Fall
werden in derselben Weise wie bei einem Einschalten des Systems
unter den Speichern 2, 6, 7, 8 alle
diejenigen, die nicht automatisch durch das Reset-Signal gelöscht worden
sind, programmgesteuert neu initialisiert, Selbsttestroutinen werden
durchgeführt,
etc.
-
Wenn
jedoch ein Fehlersignal an dem E/A-Port 12 anliegt, erkennt
der Mikroprozessor 1 daran, dass kein Kaltstart vorliegt,
und die dann ausgeführte
Fehlerbehandlungsroutine beschränkt
sich darauf, die durch das Reset-Signal gelöschten Speoicherplätze, also
die Register 6 und gegebenenfalls den Speicher 7, 8,
zu erneuern.
-
Im
Falle eines Mikroprozessors, bei dem nicht der gesamte interne Speicher 7, 8 durch
das Reset-Signal automatisch gelöscht
wird, kann auch in diesem Fall, analog zur oben beschriebenen ersten
Ausgestaltung, ermittelt werden, in welchem Programmteil der Anwendung
der Fehler aufgetreten ist, und anschließend eine für diesen Programmteil spezifische
Fehlerbehebungsroutine ausgewählt
und ausgeführt
werden, die lediglich einen von diesem Programmteil benutzten Bereich,
etwa den Bereich 7, des Speichers erneuert, nicht aber
einen nur von anderen Programmteilen genutzten Bereich 8.
-
Das
Mikroprozessorsystem der 2 unterscheidet sich von dem
der zweiten Ausgestaltung durch ein zweites Monoflop 19,
das parallel zum ersten Monoflop 14 mit der Fehlersignalleitung 11 verbunden
ist, das aber eine deutlich längere
Dauer dt2 des instabilen Zustandes aufweist als die Zeitdauer dt1
des Monoflop 14. Diese Zeitdauer ist größer als die zur Ausführung einer über den
NMI-Eingang 16 ausgelösten
Fehlerbehandlungsroutine benötigte,
so dass der instabile Zustand noch eine Zeit lang anhält, wenn
das Prozessorsystem nach der Fehlerbehandlungsroutine zu der Anwendung
zurückkehrt.
Ein Und-Gatter 20 hat
mit dem Ausgang des Monoflops 19 und mit der Fehlersignalleitung 11 verbundene Eingänge und
einen Ausgang, der parallel zum Monoflop 14 den Demultiplexer 18 ansteuert.
Die Wirkung dieser Ausgestaltung liegt darin, dass wenn ein Fehler
im Mikroprozessor 1 von dem Paritätsgenerator 10 erfasst
worden ist, dieser Fehler noch eine gewisse Zeit im Monoflop 19 gespeichert
bleibt, auch wenn er durch Auslösen
einer Fehlerbehandlungsroutine über
den NMI-Eingang 16 zunächst
scheinbar erfolgreich behoben wurde. Wenn nach einem solchen Fehler
innerhalb der Latenzzeit des Monoflop 19 ein zweiter Fehler
erfasst wird, so ist die Wahrscheinlichkeit hoch, dass ein kausaler
Zusammenhang zwischen beiden besteht und die über NMI ausgelöste Fehlerbehandlung
nicht ausreichend war, so dass sofort eine tiefergreifende Fehlerbehandlung über den
Reset-Eingang ausgelöst
wird.
-
Anstatt
an den prozessorinternen Teil des Datenbusses 4 kann der
Paritätsgenerator 10 auch unmittelbar
an die einzelnen Register 6 sowie evtl. auch an wenigstens
einen Teil 7 der Zellen des internen Speichers des Mikroprozessors
angeschlossen sein, um dort auftretende Paritätsfehler im Moment ihres Auftretens
zu erfassen und nicht erst zu dem Zeitpunkt, wo sie im Laufe eines
Lesezugriffs auf den Datenbus 4 ausgegeben werden.
-
3 zeigt
eine Weiterentwicklung eines solchen Mikroprozessorsystems mit zwei
Paritätsgeneratoren 10a, 10b,
von denen der eine 10a den Registern 6 und der
andere 10b dem Speicherbereich 7 zugeordnet ist.
Entsprechend den zwei Paritätsgeneratoren
gibt es auch zwei zur Überwachungseinheit 5 führende Fehlersignalleitungen 11a, 11b.
Nur die Leitung 11a ist in zur zweiten Ausgestaltung analoger Weise
mit dem Monoflop 14 und dem Demultiplexer 18 verbunden,
um im Fehlerfall den NMI-Eingang 16 des Prozessors anzusprechen.
Daher genügt
bei einer über
NMI ausgelösten
ersten Fehlerbehandlungsroutine eine Erneuerung der Register 6.
Erst wenn diese den Fehler nicht während der Latenzzeit des Monoflops 14 zum
Verschwinden bringt, wird eine weitergehende zweite Fehlerbehandlungsroutine über den
Reset-Eingang 17 ausgelöst.
Diese Fehlerbehandlungsroutine erneuert auch den Inhalt des Speicherbereichs 7.
Im Falle eines Paritätsfehlers
im Speicherbereich 7 wird sofort die zweite Fehlerbehandlungsroutine über den
Reset-Eingang ausgelöst.
-
Wie
man leicht sieht, eignet sich das oben an Beispielen beschriebene
Konzept der gestuften Reaktion auf Fehler des Mikroprozessors zu
diversen Verfeinerungen, die insbesondere mit einer ihrerseits programmgesteuerten Überwachungseinheit 5 leicht implementierbar
sind. Eine solche programmgesteuerte Überwachungseinheit kann ein
zweiter Prozessor im Rahmen eines Mehrprozessorsystems sein, wobei
sich in einem solchen System die Prozessoren vorzugsweise reihum
gegenseitig überwachen. Denkbar ist
aber auch, in einem Einprozessorsystem die Überwachungseinheit 5 als
eine vom Paritätsgenerator 10 aufgerufene
Interrupt-Routine zu implementieren.
-
Die
Arbeitsweise einer Software-Implementierung der Überwachungseinheit 5,
sei es im Mikroprozessor 1 selbst oder in einem anderen
Prozessor, wird anhand des Flussdiagramms der 4 dargelegt.
Die Routine beginnt in Schritt S1 mit der Erfassung eines vom Paritätsgenerator
gemeldeten Fehlers. In Schritt S2 wird der Zustand eines eventuell bei
einer früheren
Fehlerbehandlung gesetzten Zeitgebers abgefragt, um festzustellen,
ob die Latenzzeit eines früher
aufgetretenen Fehlers noch andauert, d.h., ob ein kausaler Zusammenhang
zwischen diesem früheren
Fehler und dem aktuell beobachteten Fehler anzunehmen ist.
-
Wenn
dies nicht der Fall ist, wird in Schritt S3 der Ursprung des Fehlers
ermittelt. Falls der Paritätsgenerator
den Datenbus überwacht,
kann anhand eines Programmzählerstandes,
der zur Zeit des Interrupt auf den Stack gerettet wurde, ein Programmteil ermittelt
werden, in dem der Fehler aufgetreten ist. Alternativ kann bei einem
Aufbau der in 3 gezeigten Art, der die Register 6 und
den internen Speicher 7, 8 oder gar einzelne Bereiche 7, 8 des
Speichers getrennt überwacht,
festgestellt werden, wo im Speicher der Fehler aufgetreten ist.
Bei entsprechender Zuordnung der Speicherbereiche an Teilprogramme
der Anwendung können
beide Ansätze
das gleiche Ergebnis liefern.
-
Anhand
des ermittelten Fehlerursprungs wird eine geeignete Fehlerbehandlungsroutine
in Schritt S4 ausgewählt.
D.h., unter mehreren Fehlerbehandlungsroutinen, die geeignet ein
könnten,
um einen Fehler mit dem festgestellten Ursprung zu beheben, wird
zunächst
diejenige mit dem vordersten Rang gewählt. Es ist dies diejenige
Fehlerbehandlungsroutine, die den geringsten Eingriff in das System
darstellt, d.h. im allgemeinen diejenige, die die kleinste Zahl
an Variablen erneuert und am schnellsten auszuführen ist.
-
Wenn
in Schritt S2 festgestellt wird, dass die Latenzzeit noch andauert,
wird in Schritt S5 eine Fehlerbehandlungsroutine ausgewählt, die
im Rang auf die zuvor durchgeführte
Fehlerbehandlungsroutine folgt. D.h. da anzunehmen ist, das die
vorherige Fehlerbehandlungsroutine erfolglos geblieben ist, wird die
nächstmächtigere
versucht.
-
Die
in Schritt S4 oder S5 ausgewählte
Fehlerbehandlungsroutine wird in Schritt S6 auf Zulässigkeit
geprüft.
Dazu wird z.B. eine Betriebsgröße der gesteuerten
Maschine, z.B. die Geschwindigkeit des von dem Prozessorsystem
gesteuerten Fahrzeugs, erfasst und anhand einer vorab im ROM 3 gespeicherten
Tabelle geprüft,
ob die ausgewählte
Fehlerbehandlungsroutine bei dem erfassten Wert der Betriebsgröße erlaubt
oder verboten ist. Ist sie verboten, z.B. weil ihre Durchführung den
Prozessor für
eine bei der gemessenen Geschwindigkeit übermäßig lange Zeit in Anspruch
nimmt, so wird sie nicht ausgeführt,
und der Prozessor 1 wechselt in einen Notbetriebsmodus
S7.
-
Wenn
die Fehlerbehandlungsroutine in Schritt S6 für zulässig befunden wird, wird sie
in Schritt S8 gestartet. Dann wird eine Zeitspanne dt1 lang abgewartet
und anschließen
in Schritt S9 geprüft,
ob der Paritätsgenerator
den Fehler weiterhin meldet oder nicht. Wenn der Fehler weiterhin
vorliegt, kehrt das Verfahren zu Schritt S5 zurück, um die auf diese eben versuchte
Fehlerbehandlungsroutine in der Rangfolge nachfolgende Routine auszuführen. Wenn
in Schritt S9 der Fehler nicht mehr beobachtet wird, endet das Verfahren
in Schritt S10 mit dem Setzen des Zeitgebers, der in Schritt S2
abgefragt wurde.
-
Es
versteht sich, dass beim Übergang
von Schritt S9 nach S5 eine in der Rangfolge nachfolgende Funktion
nur so lange gewählt
werden kann, wie eine vorhanden ist. Die letzte Routine in jeder
Rangfolge der Fehlerbehandlungsroutinen ist zwangsläufig der
Kaltstart.