Redundante Zwei-Prozessor-Steuerung und Steuerungsverfahren
[0001] Die folgende Erfindung betrifft eine redundante Zwei- Prozessor-Steuerung und ein Steuerungsverfahren.
[0002] Bekannte fehlertolerante Systemarchitekturen umfassen mindestens drei Prozessorkerne mit geteiltem oder gemeinsam benutztem Speicher. Hierbei wird der Gleichschrittbetrieb (lockstep) der Prozessoren stets durch Überwachen von
Bussignalen überprüft. Im Folgenden wird der
Gleichschrittbetrieb auch als synchrones Abarbeiten eines Programms oder Programmteile durch die Prozessoren bezeichnet.
[0003] Fällt der aktive Prozessor aus, so geht die
Eigentümerschaft über den Speicherbereich und Komponenten, die vom aktiven Prozessor über Eingabe/Ausgabekanäle angesteuert werden, an einen anderen Prozessor über. Im
Gleichschrittsfehlerzustand (lockstep error,
Synchronisationsfehler) , der auf einen
Verriegelungsschrittfehler folgt, werden Datenzugriffe und Steuerungsprozesse dem aktiven Prozessor entnommen und durch einen anderen Prozessor aufrechterhalten. Figuren 7 und 8 zeigen herkömmliche Sicherheitsarchitekturen.
[0004] Bestehend aus einer Dreifach-Redundanz (TMR: Triple modular redundancy) von Prozessoren und gemeinsam benutztem Speicher stellt die klassische minimale Konfiguration für ein fehlertolerantes System eine noch teuere Lösung für manche Sicherheitsarchitekturen dar, deren Sicherheitskonzept auf der Verwendung von zwei redundanten, im Gleichschritt (lockstep) bzw. synchron laufenden Prozessoren basiert. Die
Fehlertoleranz bildet jedoch eine besondere Herausforderung für zweifach redundante Prozessoren.
[0005] Es sind Versuche unternommen worden, die darauf abzielen, die Fehlertoleranzfähigkeit in
Sicherheitsplattformen mit nur zwei redundanten Prozessoren zu unterstützen. In US 5,915,082 werden intern Busse mit
Paritätsbits versehen und verglichen. Nach Erkennung eines Paritätsfehlers auf einer Seite ohne Auftreten eines
Gleichschrittfehlers (lockstep error) wird der dazu gehörende Prozessor getrennt, so dass er keinen Einfluss mehr im System hat. Nach jedem Gleichschrittfehler der ohne Paritätsfehler auftritt, wird das System jedoch abgeschaltet. Diese auf Paritätsprüfung basierte Vorgehensweise bietet keine
ausreichende Abdeckung in den Fällen, in denen die
Verfügbarkeit eines redundanten Systems nach einem
Gleichschrittfehler (lockstep error) sehr erwünscht ist. Die Paritätsprüfung kann beispielsweise zu einer falschen
Entscheidung führen, falls unterschiedliche Mehr-Bit-Fehler angezeigt werden.
[0006] US 2006/ 0107106 beschreibt ein Verfahren zur
Unterstützung der Verfügbarkeit in einem aus mehreren synchron laufenden Prozessorpaaren bestehenden System. In jedem Paar sind zwei redundante Prozessoren zusammengesetzt. Die Ausgänge der gepaarten Prozessoren werden stets verglichen. Falls ein Fehler in einem Prozessorpaar auftritt, wird ein anderes Prozessorpaar als Boot-Prozessorpaar die Ansteuerung des Systems übernehmen. In der Zwischenzeit wird das mit Fehler behaftete Prozessorpaar versuchen, die Synchronisation
zurückzugewinnen und sich als Ersatzprozessorpaar zur
Verfügung zu stellen. Somit wird eine hohe Verfügbarkeit des Systems gewährleistet. Dieses Verfahren ist jedoch teuer für viele eingebettete Systeme, die insbesondere eine hohe
Verfügbarkeit möglichst mit einem einzigen Prozessorpaar aufweisen müssen. Hinzu kommt die Tatsache, dass jede
Rückgewinnung der Synchronisation eines Prozessors strengen sicherheitsgerichteten Prüfungen in sicherheitsrelevanten Systemen unterzogen werden muss.
[0007] Vor diesem Hintergrund besteht Bedarf an einer
Sicherheitsarchitektur mit nur zwei redundanten Prozessoren, die eine hohe Verfügbarkeit des Systems ermöglicht.
[0008] Diese Aufgabe wird gelöst durch eine Zwei-Prozessor Steuerungseinrichtung nach Anspruch 1. Weiterhin betrifft die Erfindung Zwei-Prozessor Steuerungseinrichtungen nach
Ansprüchen 7 und 10 sowie ein Steuerungsverfahren nach
Anspruch 14.
[0009] Weitere Ausführungsformen, Modifikationen und Vorteile sind in der nachfolgenden Beschreibung, Zeichnungen und in den Ansprüchen beschrieben.
[0010] Gemäß einer oder mehrerer Ausführungsformen umfasst eine redundante Zwei-Prozessor-Steuerungseinrichtung einen ersten Prozessor und einen zweiten Prozessor zur synchronen Ausführung eines Steuerungsprogramms, wenigstens einen ersten Multiplexer zum wahlweisen Verbinden wenigstens einer
anzusteuernden ersten peripheren Einheit mit einem der zwei Prozessoren und wenigstens eine erste Vergleichseinheit zur Überwachung des Synchronisationszustands der beiden
Prozessoren und zur Erkennung eines Synchronisationsfehlers. Weiterhin umfasst die Steuerungseinrichtung eine
Wiederherstellungskontrolleinheit, die eingerichtet ist, die Ausführung wenigstens eines Testprogramms durch die beiden Prozessoren nach Auftreten eines Synchronisationsfehlers zu überwachen und die Testergebnisse zu bewerten, und weiterhin eingerichtet, wenigstens den ersten Multiplexer zu
konfigurieren .
[0011] Durch die Vergleichseinheit wird der synchrone Betrieb, d.h. der Gleichschritt, der Prozessoren überwacht. Dies kann dadurch erfolgen, dass die Abarbeitung des Steuerungsprogramms „zeilenweise" miteinander verglichen wird, wobei die gleichen Ergebnisse zu gleichen Zeitpunkten vorliegen müssen. Ist dies nicht gegeben, liegt ein Gleichschrittfehler bzw.
Verriegelungsschrittfehler vor, d.h. die Prozessoren arbeiten nicht mehr synchron.
[0012] Die synchrone Abarbeitung des Steuerungsprogramms ist ein wichtiges Merkmal redundanter Systeme, da hiermit
überprüft werden kann, dass der derzeit aktive Prozessor fehlerfrei arbeitet, wobei dabei unterstellt wird, dass das gleichzeitige Auftreten desselben Fehlers bei beiden
Prozessoren statistisch sehr unwahrscheinlich ist. Bei
Auftreten eines Synchronisationsfehlers ist es allerdings zunächst unklar, ob der Fehler beim aktiven oder beim passiven Prozessor aufgetreten ist. Unter aktivem Prozessor soll hier der Prozessor verstanden werden, der tatsächlich die periphere Einheit ansteuert. Der passive Prozessor ist derjenige, der lediglich synchron mitläuft, d.h. dieser erhält die gleichen Daten und arbeitet die gleichen Programmschritte ab wie der aktive Prozessor.
[0013] Bei Auftreten eines Synchronisationsfehlers ist somit nicht mehr gewährleistet, dass die Steuerung korrekt
ausgeführt wird, d.h. es besteht ein Risiko insbesondere bei sicherheitsrelevanten Systemen, wie sie beispielsweise im
Automobilbereich aber auch in anderen Bereichen zum Einsatz kommen. Üblicherweise muss das Steuerungssystem,
beispielsweise die in Figuren 7 und 8 gezeigten, vollständig abgeschaltet werden.
[0014] Bei der hier vorgeschlagenen Lösung ist eine Wiederherstellungskontrolleinheit vorgesehen, welche bei
Auftreten eines Synchronisationsfehlers die beiden Prozessoren einem Test unterwirft, um zu bestimmen, welcher der beiden Prozessoren fehlerbehaftet ist. Nach Durchführung des Tests und Bewertung der Testergebnisse entscheidet die
Wiederherstellungskontrolleinheit das weitere Vorgehen.
[0015] Sofern beide Prozessoren den Test bestanden haben, wird davon ausgegangen, dass beide Prozessoren fehlerfrei sind. In diesem Fall wird die synchrone Ausführung des
Steuerungsprogramms fortgeführt.
[0016] Diese Lösung hat den entscheidenden Vorteil, dass die Ansteuerung der peripheren Einheit unter Beibehaltung der hohen Sicherheitsstufe fortgesetzt werden kann, denn die beiden Prozessoren wurden einem Test auf Fehlerfreiheit unterworfen. Dies ist ein entscheidender Vorteil gegenüber anderen Lösungen, bei denen nach Auftreten eines
Synchronisationsfehlers (lockstep error) grundsätzlich eine vollständige Abschaltung erfolgt und das System nur extern wieder zurückgesetzt werden kann. Dabei muss beachtet werden, dass das bloße Zurücksetzen (reset) eines System für
sicherheitsrelevante Anwendungen häufig keine
zufriedenstellende Lösung darstellt, da keine Fehlerbewertung vorgenommen wird, d.h. es bleibt unerkannt, was zu dem
Synchronisationsfehler geführt hat. Die hier beschriebene Lösung bietet daher einen Weg, wie mit Synchronisationsfehler umgegangen werden kann und ermöglicht die Rückgewinnung der Synchronisation von zwei redundanten Systemen nach einem
Verriegelungsschritt- bzw. Gleichschrittfehler (Lockstep error) .
[0017] Wurde dagegen ein Prozessor als fehlerhaft bewertet, wird die Steuerungseinrichtung durch die
Wiederherstellungskontrolleinheit umkonfiguriert und zwar so, dass die Ausgaben des fehlerhaften Prozessors von nun an ignoriert werden und sichergestellt wird, dass die periphere Einheit nun nur noch vom fehlerfreien Prozessor angesteuert werden kann, nicht jedoch durch den fehlerhaften Prozessor. Typischerweise erfolgt dies durch Umkonfigurierung des ersten Multiplexers , so dass ein Datenfluss nur noch zwischen
peripherer Einheit und fehlerfreiem Prozessor möglich ist. Außerdem führt die Umkonfigurierung dazu, dass die
Vergleichseinheit keine Überwachung mehr durchführt.
[0018] Diese Lösung hat den entscheidenden Vorteil, dass die Ansteuerung der peripheren Einheit fortgesetzt werden kann, auch wenn dies jetzt ohne Redundanz auf der Prozessorseite erfolgt. Dies ist ein erheblicher Vorteil gegenüber bekannten Lösungen, bei denen die Steuerung bei Auftreten eines
Synchronisationsfehlers (lockstep errors) vollständig
abgeschaltet wurde. Die vorgeschlagene Lösung erhöht dabei die Verfügbarkeit des Systems, was bei kritischen Anwendungen besonders wichtig ist, damit die Kontrolle über das System weiter aufrecht erhalten werden kann. Die
Steuerungseinrichtung kann allerdings ein Fehlersignal
abgeben, um auf den nun nur noch vorliegenden „Ein-Prozessor- Betrieb" hinzuweisen, so dass eine Wartung erfolgen kann.
[0019] Die hier vorgeschlagene redundante
Steuerungsvorrichtung mit Mitteln zur Beherrschung eines
Synchronisationsfehlers kann in beliebigen
sicherheitsrelevanten Systemen eingesetzt werden. Ein Beispiel sind Bremsanwendungen im Automotive-Bereich . Dabei ist die auf nur zwei redundanten Prozessoren basierende
Steuerungsvorrichtung so ausgestaltet, dass sie die vorhandene Sicherheitsstufe beibehält und eine hohe Verfügbarkeit des Systems ermöglicht.
[0020] Unter der anzusteuernden peripheren Einheit kann prinzipiell jede Einheit verstanden werden, auf die der jeweilige Prozessor zugreift. Beispiele sind Speicher,
Aktuatoren, Eingabe/Ausgabe-Einheiten und Sensoren.
[0021] Gemäß einer oder mehrerer Ausführungsformen ist die Wiederherstellungskontrolleinheit so eingerichtet ist, den Synchronisationsfehler einem Fehlertyp zuzuordnen und auf Basis des Fehlertyps ein Testprogramm auszuwählen. Der
aufgetretene Fehler wird analysiert, um herauszufinden, wo der Fehler aufgetreten sein kann bzw. durch welche der Komponente er verursacht wurde. Auf dieser Grundlage wird dann ein geeignetes Testprogramm ausgewählt, wobei die Testprogramme sowie die erwarteten Testergebnisse vorab abgespeichert sind, beispielsweise in der Wiederherstellungskontrolleinheit. Wenn sich der Fehler, d.h. der Unterschied der beiden
Prozessorausgaben, in einer unterschiedlichen Speicheradresse zeigt, kann beispielsweise ein Testprogramm gewählt werden, mit dem Speicherfehler erkennbar sind. Diese Herangehensweise verbessert die Fehlereingrenzung .
[0022] Gemäß einer oder mehrerer Ausführungsformen ist die Wiederherstellungskontrolleinheit eingerichtet ist, den ersten Multiplexer auf Basis des Testergebnisses zu konfigurieren. Der Multiplexer, und allgemein die Steuerungseinrichtung, wird so in Abhängigkeit vom Testergebnis konfiguriert. Es ist möglich, dass die Funktion des Multiplexers von einer Bus- Matrix übernommen wird.
[0023] Gemäß einer oder mehrerer Ausführungsformen weist die Steuerungseinrichtung weiterhin wenigstens einen zweiten
Multiplexer zum wahlweisen Verbinden wenigstens einer
anzusteuernden zweiten peripheren Einheit mit einem der zwei Prozessoren auf, wobei der zweite Multiplexer durch die
Wiederherstellungskontrolleinheit konfigurierbar ist. Die Steuerungsvorrichtung ermöglicht so auch die wahlweise
Ansteuerung von mehreren peripheren Einheiten unter Beachtung der Sicherheitsaspekte.
[0024] Gemäß einer oder mehrerer Ausführungsformen weist die Steuerungseinrichtung weiterhin wenigstens eine zweite
Vergleichseinheit zur Überwachung des Synchronisationszustands der beiden Prozessoren und zur Erkennung eines
Synchronisationsfehlers auf. Dies ermöglicht die
wechselseitige Überwachung und erhöht damit die
Zuverlässigkeit des Systems.
[0025] Gemäß einer oder mehrerer Ausführungsformen weist die Steuerungseinrichtung eine erste Bus-Matrix, welche den ersten Prozessor mit dem ersten Multiplexer verbindet, und eine zweite Bus-Matrix auf, welche den zweiten Prozessor mit dem zweiten Multiplexer verbindet.
[0026] Gemäß einer oder mehrerer Ausführungsformen ist die erste periphere Einheit eine gemeinsame Einheit ist, die wahlweise von einem der beiden Prozessoren angesteuert werden kann. Weiterhin weist die Steuerungsvorrichtung wenigstens zwei weitere periphere Einheiten auf, wobei die eine der beiden peripheren Einheiten nur dem ersten Prozessor und die andere der beiden peripheren Einheiten nur dem zweiten
Prozessor als private periphere Einheit zugeordnet ist, auf die nur der jeweils zugeordnete Prozessor zugreifen kann.
Unter einer gemeinsamen peripheren Einheit bzw. Komponente wird hier eine Einheit verstanden, welche redundant
angesteuert wird, d.h. die Ansteuerung erfolgt wahlweise durch einen der beiden Prozessoren, wobei der andere zum Vergleichen dient. Eine private Einheit wird dagegen nur von jeweils einem der beiden Prozessoren angesteuert. Der jeweils andere
Prozessor hat keinen Zugriff auf diese Einheit, auch nicht den oder die Multiplexer. Die hier vorgestellte Lösung gestattet es, die Wiedergewinnung der Synchronisation zwischen zwei redundanten Prozessoren auch unter Berücksichtigung von nichtredundanten Komponenten zu ermöglichen, die typischerweise in verschiedenen eingebetteten Systemen aus Kostengründen
implementiert werden.
[0027] Gemäß einer oder mehrerer Ausführungsformen sind die zwei weiteren peripheren Einheiten redundante Einheiten, d.h. sie sind physikalisch identisch und dienen zur Ausführung der gleichen Funktion.
[0028] Gemäß einer oder mehrerer Ausführungsformen sind die erste und/oder die zweite Vergleichseinheit eingerichtet, ein Synchronisationsfehlersignal bei Auftreten eines
Synchronisationsfehlers zu erzeugen. Das
Synchronisationsfehlersignal kann beispielsweise ein Interrupt sein .
[0029] Gemäß einer oder mehrerer Ausführungsformen wird ein Steuerungsverfahren bereitgestellt. Das Steuerungsverfahren umfasst die synchrone Abarbeitung eines Steuerungsprogramms durch einen ersten und einen zweiten Prozessor, die über einen Multiplexer mit wenigstens einer anzusteuernden peripheren Einheit verbunden sind, wobei nur einer der beiden Prozessor die periphere Einheit zu einem bestimmten Zeitpunkt ansteuert.
Das synchrone Abarbeiten des Steuerprogramms wird durch eine Vergleichseinheit überwacht. Ein Synchronisationsfehlersignal wird ausgegeben, wenn die beiden Prozessoren desynchronisiert sind. Nach Ausgabe eines Synchronisationsfehlersignals wird zunächst die Abarbeitung des Steuerprogramms durch die beiden Prozessoren unterbrochen. Dann wird ein Test zur Überprüfung, ob einer der beiden Prozessoren fehlerhaft ist, durchgeführt. Wenn beide Prozessoren fehlerfrei sind, wird die synchrone Abarbeitung des Steuerungsprogramms durch die beiden
Prozessoren fortgesetzt. Wenn einer der beiden Prozessoren dagegen als fehlerhaft erkannt wurde, werden der Multiplexer und die Vergleichseinheit in der Weise konfiguriert, dass keine weitere Kommunikation mit dem fehlerbehafteten Prozessor und kein weiteres Überwachen durch die Vergleichseinheit erfolgen und dass der fehlerfreie Prozessor die periphere Einheit ansteuert. Die Abarbeitung des Steuerungsprogramms wird durch den fehlerfreien Prozessor fortgesetzt. Wenn beide Prozessoren fehlerhaft sind, erfolgt eine Abschaltung der Steuerung .
[0030] Gemäß einer oder mehrerer Ausführungsformen umfasst der Test die gleichzeitige Ausführung wenigstens eines
Testprogramms durch beide Prozessoren, wobei ein Prozessor als fehlerhaft angesehen wird, wenn wenigstens eine der folgenden Bedingungen erfüllt ist:
- der Prozessor hat das Testprogramm nicht innerhalb
einer ersten Zeitdauer Tl abgearbeitet,
- der Prozessor hat das Testprogramm nicht erfolgreich abgearbeitet,
- der Prozessor ist nach Ablauf der ersten Zeitdauer Tl für eine zweite Zeitdauer T2 nicht in den Ruhezustand übergegangen .
[0031] Damit soll sichergestellt werden, dass nicht nur die richtige oder falsche Abarbeitung berücksichtigt wird, sondern auch, ob die Prozessoren den Test innerhalb einer vorgegebenen Zeit abgearbeitet haben. Die Überprüfung des Ruhezustands dient dazu festzustellen, ob ein Prozessor, obwohl er keine Instruktionen abarbeitet, trotzdem Daten ausgibt. Dies weist ebenfalls auf einen fehlerbehafteten Prozessor hin.
[0032] Gemäß einer oder mehrerer Ausführungsformen wird der Synchronisationsfehler bewertet und einem Fehlertyp
zugeordnet, wobei zur Überprüfung der Prozessoren wenigstens ein Testprogramm in Abhängigkeit vom Fehlertyp ausgewählt wird. Damit lassen sich ein oder ggf. mehrere
fehlerspezifische Testprogramme auswählen.
[0033] Die Erfindung wird nun an Hand konkreter in den Figuren dargestellter Ausführungsbeispiele beschrieben. Diese sollen jedoch nicht als einschränkend ausgelegt werden. Für den
Fachmann ergeben sich aus der nachfolgenden Beschreibung weitere Modifikationen, die vom Schutzbereich mit umfasst sein sollen .
[0034] Figur 1 zeigt eine Steuerungsvorrichtung gemäß einer Ausführungsform im Normalbetrieb und Figur 2 die
Steuerungsvorrichtung bei Ausfall eines Prozessors.
[0035] Figur 3 zeigt eine Steuerungsvorrichtung gemäß einer Ausführungsform.
[0036] Figur 4 zeigt eine Steuerungsvorrichtung gemäß einer Ausführungsform.
[0037] Figur 5 zeigt eine Steuerungsvorrichtung gemäß einer Ausführungsform.
[0038] Figur 6 zeigt den Ablauf eines Steuerungsprogramms gemäß einer Ausführungsform.
[0039] Figur 7 eine Architektur mit zwei Prozessoren.
[0040] Figur 8 eine Architektur mit einer Aufteilung von Peripherie-Modulen in zwei Gruppen A und B.
[0041] Figur 1 zeigt eine schematisch Steuerungsvorrichtung mit einem ersten und einem zweiten Prozessor 1, 2 und einem ersten und zweiten Multiplexer 91, 92. Jeder der Multiplexer 91, 92 bildet eine Einheit mit jeweils einer
Vergleichseinrichtung, die in den Figuren als Komparator bezeichnet ist. Jeder der Multiplexer 91, 92 ist mit jeweils einer peripheren Einheit 95, 96 verbunden und ermöglicht einen wahlweisen Zugriff der Prozessoren 1, 2 auf die peripheren Einheiten 95, 96. Eine Widerherstellungskontrolleinheit 44 ist sowohl mit den beiden Prozessoren 1, 2 als auch mit den
Multiplexern 95, 96 verbunden.
[0042] Bei den Prozessoren 1, 2 kann es sich auch um
Prozessorkerne handeln.
[0043] Die in Figur 1 dargestellten fetten Pfeile zeigen den tatsächlich durch die Multiplexer 91, 92 vermittelten
Datenfluss von den Prozessoren 1, 2 zu den peripheren
Einheiten 95, 96. Prozessor 1 kommuniziert mit peripherer Einheit 95 und steuert diese und Prozessor 2 kommuniziert mit peripherer Einheit 2 und steuert diese. Prozessor 1,
Multiplexer/Komparator 91 und periphere Einheit 95 bilden hier einen Zweig A, während Prozessor 2, Multiplexer/Komparator 92 und periphere Einheit 96 einen Zweig B bilden. Allerdings bestehen kreuzweise Kommunikationspfade und zwar einerseits zwischen Prozessor 2 und Multiplexer/Komparator 91 und
andererseits zwischen Prozessor A und Multiplexer/Komparator 92.
[0044] Die Komparatoren 91, 92 vergleichen jeweils, ob die Prozessoren synchron zueinander arbeiten, d.h. ob sie
zeitgleich die gleichen Ergebnisse ausgeben. Ist dies nicht der Fall, liegt ein Synchronisationsfehler vor. In diesem Fall werden die Prozessoren getestet und in Abhängigkeit davon die Steuerungseinrichtung umkonfiguriert. Dies ist in Figur 2 schematisch dargestellt.
[0045] In Figur 2 wurde angenommen, dass der Test, der von der Wiederherstellungskontrolleinheit 44 überwacht und ausgewertet wird, ergeben hat, dass Prozessor 1 defekt ist. In diesem Fall werden die beiden Multiplexer 91, 92 umkonfiguriert und zwar so, dass beide Multiplexer 91, 92 die Ausgaben von Prozessor 1 ignorieren. Gleichzeitig gestattet nun Multiplexer 91 eine Kommunikation zwischen Prozessor 2 und peripherer Einheit 95. Prozessor 2 steuert nun die peripheren Einheiten sowohl im Zweig A als auch in Zweig B an. Prozessor 2 muss dazu nicht notwendigerweise anders programmiert werden, da j a Prozessor 2, für Vergleichszwecke, bereits im Normalzustand das
Steuerungsprogramm für die periphere Einheit 95 (Zweig A) ausgeführt hatte. Der Unterschied ist nur, dass er jetzt auch „schreibend" auf periphere Einheit 95 zugreifen kann.
Weiterhin wird die Vergleichsfunktion der Komparatoren
inaktiviert, da diese nun keine Eingaben mehr von Prozessor 1 erhalten. Dies ist deswegen erforderlich, damit die
Komparatoren 91, 92 keine weiteren Fehlersignale ausgeben.
[0046] Im Ergebnis kann die Abarbeitung des Steuerprogramms umfassend Steuerprogramm für periphere Einheit 95 und
periphere Einheit 96, wieder fortgesetzt werden. Dadurch wird die Verfügbarkeit des Systems erhöht.
[0047] Falls der Test ergeben hat, dass beide Prozessoren 1, 2 fehlerfrei sind, wird der Zustand von Figur 1 wieder
eingenommen. Für den Fall, dass beide Prozessoren defekt sind, erfolgt eine Abschaltung des Systems.
[0048] Die in den Figuren 1 und 2 gezeigte Vorgehensweise ist insbesondere bei nicht redundant ausgelegten peripheren
Einheiten von Vorteil.
[0049] Die in Figuren 1 und 2 gezeigte Architektur umfasst eine Aufteilung von Peripherie-Modulen in zwei Gruppen A und B. Jede Gruppe umfasst mindestens einen Prozessor 1, 2, einen hier nicht gezeigten Busumschalter (Bus Matrix, Bus Crossbar) und anzusteuernde Peripheriemodule 95, 96. Speichermodule können in einer Gruppe oder in beiden Gruppen implementiert werden. Die Seite A wird tatsächlich (also physikalisch) immer vom Prozessor 1 (Prozessor A) angesteuert. Die Seite B wird tatsächlich immer vom Prozessor 2 (Prozessor B)
angesteuert. Daten der Peripherie-Modulen 95 können quer über die Multiplexer 91, 92 an die Seite B weiter gereicht werden. Der Prozessor 1 kann auf ähnliche Weise Daten von Peripherie- Modulen 96 auslesen.
[0050] Figur 3 zeigt eine Ausführungsform, bei der eine periphere Einheit 22, die dort als periphere Module bezeichnet ist, redundant durch zwei Prozessoren 1 und 2 angesteuert ist, wobei zu einem vorgegebenen Zeitpunkt tatsächlich nur einer der beiden Prozessoren die Einheit 22 ansteuert. Dies erfolgt über einen Multiplexer 21. Eine weitere periphere Einheit 5, bei der es sich um eine gemeinsame interne periphere Einheit handeln kann, beispielsweise ein Speicher 5, ist über einen
Multiplexer 20 mit den beiden Prozessoren 1, 2 verbunden. Die Prozessoren 1, 2 selbst sind jeweils über eine Bus-Matrix 3, 4 mit den Multiplexern 20, 21 verbunden. Auch in dieser
Ausführungsform können die Multiplexer 20, 21, die in Einheit mit jeweiligen Vergleichseinheiten (Komparatoren) vorliegen, im Fehlerfall geeignet konfiguriert werden, um die Steuerung verfügbar zu halten.
[0051] Gemäß einer oder mehrerer Ausführungsformen erfolgt eine klare Trennung zwischen gemeinsam verwendeten und
privaten redundanten Bereichen der Steuerung. Jedem Prozessor 1, 2 werden private Komponenten bzw. Einheiten zugeordnet, die nur von ihm angesteuert werden. Die privaten Komponenten (in Figur 4 die beiden peripheren Einheiten 61, 62) sind
vorzugsweise redundant, um möglichst eine perfekte Symmetrie der redundanten privaten Bereiche nachbilden zu können. Aus Kostengründen können einige Komponenten, wie beispielsweise der Programmspeicher, nur einmal und zwar im gemeinsam
benutzten Bereich, implementiert werden. Im Lockstep-Betrieb arbeiten die zwei Prozessoren 1, 2 synchron. Die tatsächliche Ansteuerung der gemeinsam verwendeten Komponenten bzw.
peripheren Einheiten kann jeder der zwei redundanten
Prozessoren übernehmen und wird tatsächlich zu einem
bestimmten Zeitpunkt nur von einem Prozessor durchgeführt, während der andere Prozessor aufgrund des Lockstep-Betriebs alle Daten rechtzeitig bekommt.
[0052] Nach Erkennung eines Verriegelungsschrittfehlers
(lockstep error) soll jeder Prozessor 1, 2 während eines
Zeitintervalls Tl möglichst in dem zugewiesenen privaten
Bereich aktiv bleiben und keine sicherheitsrelevante Funktion mit Auswirkungen außerhalb der Architektur ausführen. Das heißt insbesondere die Ansteuerung von externen peripheren
Einheiten bzw. Komponenten, die eine Wirkung nach Außen zeigen, wird unterbrochen.
[0053] Für die notwendigen Zugriffe auf nicht redundante Komponenten wie beispielsweise auf den Programmspeicher wird ein Multiplexbetrieb für die zwei redundanten Prozessoren 1, 2 im Zeitintervall Tl ermöglicht. Jeder
Verriegelungsschrittfehler (lockstep error) löst eine
Unterbrechung des Programmsablaufs (Interrupt) aus. In der Interrupt-Routine werden die Prozessoren 1, 2 unabhängig voneinander die gleichen Testprogramme ausführen und
Testergebnisse für eine spätere Prüfung mittels eines
autonomen Hardware-Überwachungsmoduls, in den Figuren die Wiederherstellungskontrolleinheit 44, ablegen.
[0054] Manche Testprogramme können aus dem Fehlerkontext abgeleitet werden. Beispielsweise wird der aufgetretene Fehler klassifiziert und einem Fehlertyp zugeordnet und diese
Zuordnung für die Auswahl des oder der jeweiligen
Testprogramme genutzt.
[0055] Jeder Prozessor soll die Abarbeitung der Unterbrechung sanft ohne Rücksprung verlassen. Hintergrund ist, dass das Testprogramm durch Interrupt gestartet wurde und nach Ablauf des Testprogramms die Prozessoren 1, 2 normalerweise das
Steuerungsprogramm, das auf Grund des Interrupts unterbrochen wurde, wieder fortsetzen wollen. Dies soll unterbunden werden und die Prozessoren 1, 2 sollen stattdessen in einen
Ruhezustand übergehen. Ob dies erfolgt, ist ebenfalls Teil des Tests .
[0056] Anschließend soll jeder Prozessor seine
Zustandsmerkmale beispielsweise in einem vom autonomen
Hardware-Überwachungsmodul (WiederherStellungskontrolleinheit
44) lesbaren Register ablegen. Die Zeitdauer wird anhand eines Zeitgebers des autonomen Hardware-Überwachungsmoduls gemessen.
[0057] Nach dieser unklaren Zeit (außerhalb des Lockbetriebes) sollen die redundanten Prozessoren einen Leerlaufbetrieb
(Ruhezustand) für eine Zeitdauer T2 aufweisen. Falls ein
Prozessor im Zeitfenster T2 auf eine Komponente wie
beispielsweise ein Speicher- oder Peripheriemodul zugreift, wird er automatisch von der Wiederherstellungskontrolleinheit 44 vom Rückgewinnungsvorgang ausgeschlossen. Nach dem
Zeitfenster T2 vergleicht die
Wiederherstellungskontrolleinheit 44 die Testergebnisse der zwei Prozessoren 1, 2 mit den in Hardware vorprogrammierten Werten. Falls die Testergebnisse eines Prozessors mit den vorgegebenen Werten nicht übereinstimmen, wird der
entsprechende Prozessor für den laufenden
Synchronisationsversuch nicht mehr betrachtet. Dementsprechend müssen auch die gespeicherten Zustandsmerkmale von den
Prozessoren 1, 2 für eine Rückgewinnung geeignet sein. Im
Falle einer positiven Bewertung der Ergebnisse wird die
Wiederherstellungskontrolleinheit 44 mittels eines Interrupts eine Rückkehr in den Lockstep-Betrieb zustande bringen. Wenn nur ein Prozessor alle Tests erfolgreich ausgeführt hat, wird er die ihm zugeordneten Peripherie-Module und alle gemeinsam verwendeten Komponenten ansteuern.
[0058] Dieser Notfallbetrieb erhöht die Verfügbarkeit des Systems und läuft mit einer reduzierten Sicherheitsstufe.
[0059] Figur 4 zeigt eine weitere Ausführungsform, die auf der von Figur 3 aufbaut. Die Architektur der Steuerungsvorrichtung wird in zwei private Bereiche 30 und 31, die als Bereiche A und B bezeichnet werden, und einen gemeinsamen Bereich 40
aufgeteilt. Die privaten Bereiche beinhalten Module bzw.
periphere Einheiten und Komponenten, die physikalisch
redundant sind. Die Wiederherstellungskontrolleinheit 44 in Form eines Hardware-Moduls dient zur sicheren Rückgewinnung der Synchronisation nach einem Verriegelungsschrittfehler bzw. Gleichschrittfehler ( lockstep error). Wenn ein
Verriegelungsschrittfehler auftritt, wird die
Wiederherstellungskontrolleinheit 44 alle Zugriffe auf
sicherheitsrelevante Peripherie-Module bzw. Einheiten sperren. Bei diesen Einheiten handelt es sich insbesondere um die gemeinsame Peripherie 72 und, als Beispiel, um die redundant vorhandenen peripheren Einheiten 61 und 63. Diese sind über jeweilige Peripheriebrücken 60, 71, und 62 angeschlossen.
[0060] Der Verriegelungsschrittfehler löst eine Unterbrechung (Interrupt) des Programmablaufs aus. In der darauf folgenden Abarbeitung der Interrupt-Routine kann jeder Prozessor 1, 2 nur auf Module zugreifen, die sich in seinem zugeordneten privaten Bereich befinden und keine sicherheitsrelevanten Teilfunktionen ausführen. Weiterhin kann der Zugriff auf nicht sicherheitsrelevante Komponenten 41, 42 im Multiplexbetrieb ermöglicht werden. Solche Komponenten 41, 42 sind
beispielsweise eine gemeinsame Programm-Domäne 42 und eine gemeinsame RAM-Domäne. Komponente 42 verfügt über ein Modul 50, welches einen Multiplexer, einen Kontroller und einen Komparator umfasst, und den eigentlichen Programmspeicher 51. Komponente 41 verfügt über ein Modul 53, welches einen
Multiplexer, einen Kontroller und einen Komparator umfasst, und den Speicher 52, der hier als RAM ausgebildet ist.
[0061] Im privaten Peripherie-Bereich wird jeweils ein kleiner Adressraum für Testzwecke des passenden Prozessors reserviert. Die Interrupt-Routine dient dazu, die Integrität der
Architektur und vor allem der Prozessoren zu prüfen. Am Ende der Interrupt-Abarbeitung sollen die Prozessoren die
berechneten Ergebnisse im für Testzwecke reservierten
Adressbereich ablegen. Korrekte Ergebnisse sind im Vorfeld in der Wiederherstellungskontrolleinheit 44 gespeichert. Die Interrupt-Routine besteht aus Testprogrammen, wobei jedes Testprogramm innerhalb eines bestimmten Zeitintervalls das korrekte Ergebnis liefern soll. Nach einer vorgegebenen
Zeitdauer überprüft die Wiederherstellungskontrolleinheit 44 die Korrektheit der von den Prozessoren abgelegten Ergebnisse. Die Rückgewinnung des Lockstep-Betriebs setzt voraus, dass alle von der Wiederherstellungskontrolleinheit 44 zu prüfenden Ergebnisse korrekt sind. Ansonsten wird nur der Prozessor, der korrekte Ergebnisse aufweist, für die laufende Applikation weiter aktiv bleiben.
[0062] Da die Interrupt-Routine nicht im Lockstep-Betrieb läuft, wird das Modul 50 so konfiguriert, dass beide
Prozessoren 1, 2 im Multiplex-Betrieb auf den Programmspeicher 51 zugreifen können.
[0063] Figur 5 zeigte eine Ausführungsform in Erweiterung der Figuren 1 und 2. Hierbei arbeitet die
Wiederherstellungskontrolleinheit 44 ähnlich wie in Figur 4. Falls ein Prozessor 1, 2 keine korrekten Ergebnisse für die Rückgewinnung des Lockstep-Betriebs liefert, wird die
Wiederherstellungskontrolleinheit 44 die entsprechenden
Peripherie-Controller 91 oder 92, welche hier die Multiplexer und Komparatoren bilden, so konfigurieren, dass die darunter liegenden Peripherie-Module bzw. Einheiten 95, 96 vom anderen Prozessor angesteuert werden.
[0064] Die Architektur in Figur 4 weist auch zwei redundante RAM Module 80, 81 auf. Wenn der Verriegelungsschrittfehler (lockstep error) durch einen Fehler in RAM hervorgerufen wurde, wird die fehlerhafte RAM Adresse gespeichert. In der Interrupt-Routine wird diese Adresse überprüft. Wenn der RAM Fehler nicht korrigierbar ist, wird die
Wiederherstellungskontrolleinheit 44 die betroffene Seite A oder B (also Prozessor und RAM) nicht wieder in die aktive Ansteuerung einbinden. Anschließend wird die
Wiederherstellungskontrolleinheit 44 dafür sorgen, dass die Peripherie-Module, die bisher von dem nun fehlerhaften
Prozessor bzw. RAM angesteuert wurden, nun durch den Prozessor von der anderen Seite angesteuert werden.
[0065] Figur 6 zeigt schematisch den Ablauf eines
Steuerungsprogramms. Nach Auftreten eines
Synchronisationsfehlers wird die Programmausführung 300, 500 durch die jeweiligen Prozessoren mittels eines Interrupts (LOLI, Lockstep loss Interrupt) unterbrochen und der jeweilige Zustand (Anfangsinhalt) in 321, 521 gespeichert. Der Interrupt führt gleichzeitig zur Aktivierung der
Wiederherstellungskontrolleinheit, hier als Hardware
bezeichnet ist.
[0066] Die Wiederherstellungskontrolleinheit startet einen Zeitgeber 400. Die Prozessoren führen dann in Schritt 322, 522 die von der Wiederherstellungskontrolleinheit vorgegebenen Tests aus, wobei nach Beenden der Tests eine Interruptfreie Rückkehr in 323, 523 erzwungen wird (RFI, Return from
Interrupt) . Danach sollen die Prozessoren in einen Ruhezustand übergehen .
[0067] Die Wiederherstellungskontrolleinheit prüft, ob die Tests innerhalb der Zeitdauer Tl abgearbeitet wurden (325, 525) und ob die Prozessoren in den Ruhezustand übergegangen sind (401) . Nach einer vorgegebenen Zeitdauer T2 prüft die Wiederherstellungskontrolleinheit in 402, 326, 526, ob die Prozessoren sich immer noch im Ruhezustand befinden.
[0068] Dann werden die Testergebnisse überprüft. Die
Wiederherstellungsbedingungen 404 sind, dass die
Testergebnisse fehlerfrei sind, dass der jeweilige Prozessor bis zum Ablauf der Zeitdauer Tl in den Ruhezustand
übergegangen war, und dass der Prozessor sich auch noch nach Ablauf der Zeitdauer T2 im Ruhezustand befindet. Falls dies der Fall für beide Prozessoren ist, wird ein Recover Interrupt (RECOI) für beide Prozessoren ausgelöst, sonst nur für den fehlerfreien Prozessor, und die Anfangszustand wieder
hergestellt (341, 541). Im letzten Fall rekonfiguriert die Wiederherstellungskontrolleinheit die Steuerungsvorrichtung, wie oben erläutert. Es schließt sich die Fortsetzung des Programms an.
[0069] Figur 7 zeigt eine herkömmliche Architektur mit zwei Prozessoren 1 und 2, wobei der Prozessor 2 zur Überwachung vom Prozessor 1 dient. Die gesamte Ansteuerung von
Peripheriemodulen sowie alle Speicherzugriffe erfolgen über den Prozessor 1. Diese Architektur ist für die Beherrschung von aus dem Verlust der Synchronisation resultierenden Fehlern (Lockstep Failures) ungeeignet.
[0070] Figur 8 zeigt eine herkömmliche Architektur mit einer Aufteilung von Peripherie-Modulen in zwei Gruppen A und B. Jede Gruppe umfasst mindestens einen Prozessor 1,2, einen Busumschalter (Bus Matrix, Bus Crossbar) 3,4 und
Peripheriemodule 6,7. Speichermodule 5 können in einer Gruppe oder in beiden Gruppen implementiert werden und über ein
Bypass-Modul 11 angesteuert werden. Die Seite A wird
tatsächlich (also physikalisch) immer vom Prozessor 1
angesteuert. Die Seite B wird tatsächlich immer vom Prozessor 2 angesteuert. Daten von Peripherie-Modulen 6 können quer über ein Bypass-Modul 10 und Datenmultiplexer 12 an die Seite B weiter gereicht werden. Der Prozessor 1 kann auf ähnliche Weise Daten von Peripherie-Modulen 6 auslesen (über Bypass- Modul 9 und Datenmultiplexer 13) . Dieser Mechanismus, mit dem ein Prozessor Peripherie-Daten von der anderen Seite auslesen kann, funktioniert nur solange, wie die zwei Prozessoren 1 und 2 synchron (in lockstep) zueinander arbeiten. Die Überwachung erfolgt durch einen Komparator 8. Wenn der Prozessor 1 beispielsweise außer Betrieb ist, kann die ganze Seite A (also samt Peripherie-Module und Speicher auf dieser Seite) nicht mehr angesteuert werden. Somit ergibt sich eine schlechte Unterstützung einer hohen Verfügbarkeit. Wenn die zwei
Prozessoren nicht mehr synchron arbeiten, können sie nur noch zurückgesetzt werden. Für viele sicherheitsrelevante
Applikationen ist das Zurücksetzen (Reset) von Prozessoren nicht erlaubt, solange die Ursache des Verlusts der
Synchronisation nicht eindeutig festgestellt wird.
[0071] Die Erfindung ist nicht auf die vorliegend
beschriebenen Ausführungsbeispiele beschränkt, sondern kann geeignet erweitert und modifiziert werden. Die nachfolgenden Ansprüche stellen einen ersten, nicht bindenden Versuch dar, die Erfindung allgemein zu definieren.