-
Die
Erfindung geht aus von einem Verfahren zur Verzögerung der Zugriffe auf Daten
und/oder Befehle eines Zweirechnersystems sowie einer entsprechenden
Verzögerungseinheit
gemäß den aus
dem Stand der Technik bekannten Merkmale der unabhängigen Ansprüche.
-
In
zukünftigen
Anwendungen, wie insbesondere im Kraftfahrzeug oder im Industriegüterbereich also
z.B. Maschinenbereich und in der Automatisierung werden ständig mehr
und mehr mikroprozessor- oder rechnerbasierte Steuerungs- und Regelungssysteme
für sicherheitskritische
Anwendungen eingesetzt. Dabei sind Zweirechnersysteme oder Zweiprozessorsysteme
(Dual Cores) heutzutage gängige Rechnersysteme
für sicherheitskritische
Anwendungen, insbesondere im Fahrzeug wie beispielsweise für Antiblockiersysteme,
das Elektronische Stabilitätsprogramm
(ESP), X-by-Wire-Systeme
wie Drive-by-Wire oder Steer-by-Wire sowie Break-by-Wire, usw. oder
auch bei sonstigen vernetzten Systemen. Um diese hohen Sicherheitsansprüche in zukünftigen
Anwendungen zu befriedigen, sind mächtige Fehlermechanismen und
Fehlerbehandlungsmechanismen erforderlich, insbesondere um transienten Fehler,
die beispielsweise bei Verkleinerung der Halbleiterstrukturen der
Rechnersysteme entstehen, zu begegnen. Dabei ist es relativ schwierig
den Core selbst, also den Prozessor zu schützen. Eine Lösung hierfür ist wie
erwähnt
die Verwendung eines Zweirechnersystems oder Dual Core-Systems zur
Fehlerdetektion.
-
Ein
Problem bei solchen Zweirechnersystemen ist aber, dass der Vergleich
von Daten, insbesondere von Ausgangsdaten zur Fehlererkennung erst
bei der Ausgabe, bzw. nach der Ausgabe erfolgt. D. h. die Daten
werden schon zu einer externen Senke, also beispielsweise eine über einen
Datenbus oder einen Befehlsbus angeschlossene Komponente, wie ein
Speicher oder sonstige Ein-/Ausgabeelemente, geleitet, bevor sichergestellt
ist, dass die Daten und/oder Befehle korrekt sind. Dies kann dann dazu
führen,
dass Zugriffe, also Schreiboperationen und/oder Leseoperationen
auf fehlerhafte Daten und/oder Befehle ausgeführt werden, insbesondere bei
Fehlern in Speicherzugriffen. Durch diese Problematik können bei
der Wiederherstellung eines bestimmten Systemzustandes, Ausschalten
der Folgen eines Fehlers, bei Erzeugung korrekter Daten nach Fehlerabbruch,
der Wiederbereitmachung eines Systems nach Zusammenbruch sowie bei
einer Schaltungsanordnung der Rückkehr
in den Ursprungszustand (was im Weiteren zusammengefasst als Recovery
bezeichnet wird) Fehler entstehen oder dies nur unter sehr hohem
Aufwand mögleich
sein. Solche Fehler können
durch den Zugriff in Form von Schreiboperationen und/oder Leseoperationen
durch wenigstens einen Rechner des Zweirechnersystems Fehler im
gesamten System und daran angeschlossener Einheiten nach sich ziehen,
wobei umso schwerer wiegt, dass es nicht möglich ist festzustellen, welche
Daten und/oder Befehle fehlerhaft verändert wurden.
-
Zweiprozessorsysteme
können
nur aufgetretene Fehler erkennen, bieten aber keine Möglichkeit eine
effektive Fehlerbehandlung auszuführen. Da die Häufigkeit
transienter Fehler im Vergleich zu permanenten Fehler stark zunehmen
wird aufgrund kleiner werdenden Halbleiterstrukturen, wird eine
effektive Fehlerbehandlung notwendig werden um die Verfügbarkeit
zukünftiger
Systeme zu erhöhen.
-
Es
ist daher Aufgabe der Erfindung, die genannte Problematik zu lösen und
die Verfügbarkeit
zu erhöhen.
-
Vorteile der
Erfindung
-
Die
Erfindung geht aus von einem Verfahren zur Fehlerregistrierung sowie
einem Register, das einem Zweirechnersystem zugeordnet ist, wobei
in dem Register Informationen in Form von Bits abgelegt werden,
wobei das Zweirechnersystem einen Fehlererkennungsmechanismus enthält, wobei
vorteilhaft die Bits im Register als Fehlerbits wenigstens ein Fehlersignal
des Fehlererkennungsmechanismus repräsentieren und entsprechendes
Zweirechnersystem.
-
Zweckmäßig ist
das Register derart ausgebildet, dass der Fehlererkennungsmechanismus
ein entsprechendes Fehlerbit setzen kann und dieses Fehlerbit durch
das Zweirechnersystem wieder löschbar
ist, wobei das Register in einem Rechner des Zweirechnersystems
enthalten ist oder in den Speicherbereich eines Rechners des Zweirechnersystems
eingeblendet wird.
-
Vorteilhafter
Weise wird nur aufgrund eines ersten Fehlers ein Fehlerbit im Register
gesetzt. Weiterhin zweckmäßig ist,
dass mehrere Fehlersignale zu einem einheitlichen Fehlersignal zusammengefasst
werden und dass durch das einheitliche Fehlersignal ein Interrupt
ausgelöst
wird.
-
Vorteilhafter
Weise ist in einem Zweirechnersystem für jeden Rechner ein Register
vorgesehen, wobei die beiden Rechner des Zweirechnersystems in einer
Ausführungsform
mit einem Taktversatz arbeiten und auch das Setzen des Fehlerbits
in den Registern mit diesem Taktversatz erfolgt.
-
Vorteilhaft
wird für
jeden Rechner ein Register vorgesehen und durch jedes einheitliche
Fehlersignal ein Interrupt ausgelöst, wobei die Interrupts mit dem
Taktversatz ausgelöst
werden, wobei bei dem Verfahren zur Fehlerregistrierung in einem
Zweirechnersystem, bei Erkennen eines Fehlers wenigstens ein Fehlerbit
im Register abgelegt wird und das wenigstens eine Register ausgewertet
wird und eine Fehlerbehandlung abhängig von Position des Fehlerbits
im Register durchgeführt
wird oder das wenigstens eine Register ausgewertet wird und eine
Fehlerbehandlung abhängig
von den Fehlerbits im Register durchgeführt wird und das Register nach
einer Fehlerbehandlung wieder rückgesetzt
oder gelöscht wird.
-
Weitere
Vorteile und vorteilhafte Ausgestaltungen ergeben sich aus der Beschreibung
der Ausführungsbeispiele
sowie den Merkmalen der Ansprüche.
-
Zeichnung
-
Die
Erfindung wird im Weiteren anhand der in der Zeichnung dargestellten
Figuren näher
erläutert.
-
Dabei
zeigt 1 ein Zweirechnersystem oder Zweiprozessorsystem
mit einer erfindungsgemäßen Verzögerungseinheit.
-
In 2 ist
eine erste Ausführungsform
einer erfindungsgemäßen Verzögerungseinheit
dargestellt.
-
In 3 ist
eine zweite Ausführungsform
einer erfindungsgemäßen Verzögerungseinheit
dargestellt.
-
4 schließlich zeigt
einen Multiplex-Baustein insbesondere einen sicheren Multiplexer
einer erfindungsgemäßen Verzögerungseinheit.
-
5 zeigt
ein Register zur Fehlerregistrierung sowie dessen Funktion
-
Die
Erfindung wird im Weiteren anhand der Ausführungsbeispiele näher erläutert.
-
Beschreibung
der Ausführungsbeispiele
-
1 zeigt
ein Zweirechnersystem mit einem ersten Rechner 100, insbesondere
einem Masterrechner und einem zweiten Rechner 101, insbesondere
einem Slave-Rechner. Das gesamte System wird dabei mit einem vorgebbaren
Takt bzw. in vorgebbaren Taktzyklen (clock cycle) CLK betrieben. Über den
Takteingang CLK1 des Rechners 100 sowie über den
Takteingang CLK2 des Rechners 101 wird diesem der Takt
zugeführt.
Bei diesem Zweirechnersystem ist darüber hinaus beispielhaft ein spezielles
Merkmal zur Fehlererkennung enthalten, in dem nämlich der erste Rechner 100 sowie
der zweite Rechner 101 mit einem Zeitversatz, insbesondere
einem vorgebbaren Zeitversatz bzw. einem vorgebbaren Taktversatz
arbeiten. Dabei ist jede beliebige Zeit für einen Zeitversatz vorgebbar
und auch jeder beliebige Takt bezüglich eines Versatzes der Taktzyklen.
Dies kann ein ganzzahliger Versatz des Taktzyklus (clock cycle)
sein, aber eben auch wie in diesem Beispiel dargestellt, beispielsweise
ein Versatz von 1,5 Taktzyklen, wobei hier der erste Rechner 100 eben
1,5 Taktzyklen vor dem zweiten Rechner 101 arbeitet respektive
betrieben wird. Durch diesen Versatz kann vermieden werden, dass
Gleichtaktfehler, sogenannte common mode failures, die Rechner oder
Prozessoren, also die Cores des Dual Cores Systems, gleichartig
stören
und damit unerkannt bleiben. D.h. solche Gleichtaktfehler betreffen
durch den Versatz die Rechner zu unterschiedlichen Zeitpunkten im
Programmablauf und bewirken demnach unterschiedliche Effekte bezüglich der
beiden Rechner wodurch Fehler erkennbar werden. Gleichartige Fehlerwirkungen
ohne Taktversatz wären
u.U. in einem Vergleich nicht erkennbar, dies wird dadurch vermieden.
Um diesen Versatz bezüglich
der Zeit oder des Taktes, hier insbesondere 1,5 Taktzyklen im Zweirechnersystem
zum implementieren sind die Versatzbausteine 112 bis 115 implementiert.
-
Um
die genannten Gleichtaktfehler zu erkennen ist dieses System eben
beispielsweise dazu ausgelegt in einem vorgegebenen Zeitversatz
oder Taktzyklenversatz zu arbeiten, insbesondere hier 1,5 Taktzyklen,
d.h. während
der eine Rechner, z. B. Rechner 100 direkt die Komponenten,
insbesondere die externen Komponenten 103 und 104 anspricht, arbeitet
der zweite Rechner 101 mit einer Verzögerung von genau 1,5 Taktzyklen
dazu. Um in diesem Fall die gewünschte
Eineinhalbzyklusverzögerung, also
von 1,5 Taktzyklen zu erzeugen wird Rechner 101 mit der
invertierten Clock, also dem invertierten Takt am Takteingang CLK2
gespeist. Dadurch müssen
aber auch die vorgenannten Anschlüsse des Rechners also seine
Daten bzw. Befehle über
die Busse um die genannten Taktzyklen, also hier insbesondere 1,5
Taktzyklen verzögert
werden, wozu eben wie gesagt die Versatz- oder Verzögerungsbausteine 112 bis 115 vorgesehen
sind. Neben den beiden Rechnern oder Prozessoren 100 und 101 sind
Komponenten 103 und 104 vorgesehen, die über Busse 116,
bestehend aus den Busleitungen 116A und 116B und 116C sowie 117,
bestehend aus den Busleitungen 117A und 117B mit
den beiden Rechnern 100 und 101 in Verbindung
stehen. 117 ist dabei ein Befehlsbus, bei welchem mit 117A ein
Befehlsadressbus und mit 117B der Teil-Befehls(daten)bus bezeichnet
ist. Der Adressbus 117A ist über einen Befehlsadressanschluss
IA1 (Instruction Adress 1) mit Rechner 100 und über einen
Befehlsadressanschluss IA2 (Instruction Adress 2) mit Rechner 101 verbunden.
Die Befehle selbst werden über
den Teil-Befehlsbus 117B übertragen, der über einen
Befehlsanschluss I1 (Instruction 1) mit Rechner 100 und über einen
Befehlsanschluss I2 (Instruction 2) mit Rechner 101 verbunden
ist. In diesem Befehlsbus 117 bestehend aus 117A und 117B ist
eine Komponente 103 z. B. ein Befehlsspeicher, insbesondere ein
sicherer Befehlsspeicher oder dergleichen zwischengeschaltet. Auch
diese Komponente, insbesondere als Befehlsspeicher wird in diesem
Beispiel mit dem Takt CLK betrieben. Daneben ist mit 116 ein Datenbus
dargestellt, welcher einen Datenadressbus oder eine Datenadressleitung 116A und
einen Datenbus oder eine Datenleitung 116B enthält. Dabei
ist 116A, also die Datenadressleitung, über einen Datenadressanschluss
DA1 (Data Adress 1) mit dem Rechner 100 und über einen
Datenadressanschluss DA2 (Data Adress 2) mit Rechner 101 verbunden. Ebenso
ist der Datenbus oder die Datenleitung 116B über einen
Datenanschluss DO1 (Data Out 1) und einen Datenanschluss DO2 (Data
Out 2) mit Rechner 100 bzw. Rechner 101 verbunden.
Weiterhin zu Datenbus 116 gehört die Datenbusleitung 116C,
welche über
einen Datenanschluss DI1 (Data In 1) und einen Datenanschluss DI2
(Data In 2) jeweils mit Rechner 100 bzw. Rechner 101 verbinden
ist. In diesem Datenbus 116 bestehend aus den Leitungen 116A, 116B und 116C ist
eine Komponente 104 zwischengeschaltet, beispielsweise
ein Datenspeicher, insbesondere ein sicherer Datenspeicher o. ä. Auch diese Komponente 104 wird
in diesem Beispiel mit dem Takt CLK versorgt.
-
Dabei
stehen die Komponenten 103 und 104 stellvertretend
für beliebige
Komponenten die über einen
Datenbus und/oder Befehlsbus mit den Rechnern des Zweirechnersystems
verbunden sind und entsprechend der Zugriffe über Daten und/oder Befehle
des Zweirechnersystems bezüglich
Schreiboperationen und/oder Leseoperationen fehlerhafte Daten und/oder
Befehle erhalten oder abgeben können.
Zur Fehlervermeidung sind zwar Fehlerkennungsgeneratoren 105, 106 und 107 vorgesehen welche
eine Fehlerkennung erzeugen wie beispielsweise ein Parity-Bit oder
auch einen anderen Fehlercode wie beispielsweise einen Error-Correction-Code,
also ECC, o. ä..
Dazu vorgesehen sind dann auch die entsprechenden Fehlerkennungsprüfeinrichtungen
oder Check-Einrichtungen 108 und 109 zur Überprüfung der
jeweiligen Fehlerkennung also beispielsweise des Parity-Bit oder
eines anderen Fehlercodes wie ECC.
-
Der
Vergleich der Daten und/oder Befehle bezüglich der redundanten Ausführung im
Zweirechnersystem erfolgt in den Vergleichern oder Komparatoren 110 und 111 wie
in 1 dargestellt. Existiert nun aber ein Zeitversatz,
insbesondere ein Takt- oder Taktzyklusversatz zwischen den Rechnern 100 und 101,
entweder hervorgerufen durch ein nichtsynchrones Zweiprozessorsystem
oder bei einem synchronen Zweiprozessorsystem durch Fehler in der
Synchronisierung oder auch wie in diesem speziellen Beispiel durch
einen zur Fehlererkennung gewünschten
Zeit- bzw. Taktzyklusversatz, insbesondere hier von 1,5 Taktzyklen,
so kann in diesem Zeit- oder Taktversatz ein Rechner hier insbesondere Rechner 100 fehlerhafte
Daten und/oder Befehle in Komponenten, insbesondere externe Komponenten wie
z. B. hier insbesondere die Speicher 103 oder 104,
aber auch bezüglich
anderen Teilnehmern oder Aktuatoren oder Sensoren schreiben oder
lesen. So kann er auch in fehlerhafter Weise einen Schreibzugriff
anstatt eines vorgesehenen Lesezugriffs durch diesen Taktversatz
durchführen.
Diese Szenarien führen
selbstverständlich
zu Fehlern im gesamten System, insbesondere ohne klare Anzeigemöglichkeit
welche Daten und/oder Befehle gerade fehlerhaft geändert wurden,
wodurch auch die Recovery-Problematik entsteht.
-
Um
diese Problematik zu lösen
wird nun eine Verzögerungseinheit 102 wie
dargestellt in die Leitungen des Datenbusses und/oder in den Befehlsbus geschaltet.
Aus Gründen
der Übersichtlichkeit
ist nur die Einschaltung in den Datenbus dargestellt. Bezüglich des
Befehlsbusses ist dies natürlich
genauso möglich
und denkbar. Diese Verzögerungseinheit 102 oder
die Delay Unit verzögert
die Zugriffe, hier insbesondere die Speicherzugriffe so, dass ein
möglicher
Zeit- oder Taktversatz kompensiert wird, insbesondere bei einer
Fehlererkennung beispielsweise über
die Komparatoren 110 und 111 z.B. mindestens solange,
bis das Fehlersignal im Zweirechnersystem erzeugt ist, also die
Fehlererkennung im Zweirechnersystem durchgeführt ist. Dabei können verschiedene
Varianten implementiert sein:
Verzögerung der Schreib- und Leseoperationen,
Verzögerung
nur der Schreiboperationen oder auch, wenn auch nicht bevorzugt,
eine Verzögerung
der Leseoperationen. Dabei kann durch ein Änderungssignal, insbesondere
das Fehlersignal, eine verzögerte Schreiboperation
in eine Leseoperation gewandelt werden um fehlerhaftes Schreiben
zu unterbinden.
-
Verschiedene
Arten der Implementierung der Verzögerungseinheit 102 sind
in den 2 und 3 dargestellt. Der Zweck der
Verzögerungseinheit
also der Delay Unit 102 ist Zugriffe im Rahmen des genannten
Zeitversatzes oder Taktzyklenversatzes zu verzögern um diesen zu kompensieren,
insbesondere um Schreiboperationen des Rechners 100 zu
einer Komponente insbesondere externen Komponente bis zur Überprüfung und
damit Korrektheit der entsprechenden Daten und/oder Befehle bzw. der
jeweiligen Adressen zu erzielen. Dabei kann die Verzögerungseinheit
auch in der Weise implementiert sein, dass sie Fehler in sich selbst
erkennt und dies durch ein Fehlersignal EO nach außen signalisiert,
dies wird dann anhand der 2 und 3 nochmals
näher erläutert.
-
2 zeigt
nun eine Verzögerungseinheit mit
zwei Umschaltbausteinen 201 und 200, insbesondere
Multiplex-Bausteinen, einem Verzögerungsglied 204 und
einer Prüfeinrichtung
oder Testeinrichtung 203 insbesondere einem TSC-Checker.
Dabei besteht die Verzögerungseinheit
aus zwei Zweigen, einem Lesezweig, der dem unteren Eingangspfad des
Multiplexers 200 (die unteren drei Pfeile) einschließlich Multiplexer 201 entspricht,
und einem Schreibzweig, also dem oberen Eingangspfad von Multiplexer 200 (die
oberen drei Pfeile). D. h. die Verzögerungseinheit besteht, insbesondere
wenn sie nur Schreiboperationen verzögern soll aus zwei Pfaden zwischen
denen durch eine Umschalteinrichtung, insbesondere einen Multiplexer 200,
umgeschaltet werden kann. In dem einen Pfad gehen die Daten und/oder
Befehle hier die Daten von DO1 (Data Out 1), die entsprechenden
Adressen, hier DA1 (Data Adress 1) und hier insbesondere zusätzlich Speicherkontrollsignale
MC (Memory Control) unverzögert
durch, im anderen Zweig werden diese durch das Verzögerungsglied 204 verzögert. Die
Umschaltung zwischen den beiden Pfaden erfolgt durch ein Umschaltsignal,
insbesondere das Schreib/Lesesignal R/W bzw. dessen Invertierung,
also ein daraus abgeleitet Signal Invert R/W (= R/W = R/W mit dem Strich darüber in den 2 bis 4).
-
Im
Schreibzweig also dem Zweig mit dem Verzögerungsglied 204 erfolgt
beispielsweise eine Verzögerung
um zwei Taktzyklen bei einer vorgegebenen Verzögerung von 1,5 Taktzyklen wie
vorher beschrieben und ist damit länger als das benötigte Minimum
von 1,5 Taktzyklen, wodurch einem Speicher erlaubt wird, mit dem
gleichen Takteingang CLK bedient zu werden. D.h. die Verzögerung ist
mindestens so groß wie
der vorgesehene Zeitversatz (hier 1,5 Taktzyklen), kann aber wie
in diesem Beispiel auch größer sein.
Um Konsistenz herzustellen, werden die zugehörigen Adress- und Kontrollsignale gleichermaßen verzögert. Dies
ist wie gesagt ebenso für
den Datenbus (wie beispielhaft für
den Datenbus eben mit DA1 und DO1 dargestellt) möglich wie für den Befehlsbus denkbar. Die
Darstellung wäre
somit leicht auf einen Befehlsbus für IA1 übertragbar.
-
Die
Bitzahlen an den einzelnen Verbindungen in 2 und 3 sind
beispielhaft gewählt, d.h.
es wird hier in diesem Beispiel ein 16Bit-System plus einem Parity-Bit
(16Bit+1Parity=17Bit) vorgeschlagen. Eine Übertragung auf andere Bitbreiten wie
8, 32, 64 Bit plus Parity-Bit oder breitere Fehlerkennungen ist
dabei problemlos möglich
und erfindungsgemäß vorstellbar.
Ebenso ist die Wahl der 4 Bit für
das Speicherkontrollsignal MC (Memory Control) beispielhaft. Ebenso
ist Zahl 5 Bit durch das zusätzlich
eingekoppelte R/W-Invert-Bit auf eben dann 5Bit (4Bit+1R/W invert=5Bit)
als beispielhaft anzusehen. Im unteren Eingangszweig des Umschaltbausteins 200 (die
unteren drei Pfeile und hier eingeschlossen Umschaltbaustein 201),
wird die Verzögerung
durch Umschalteinrichtung 200 gebypasst, also vorbeigeleitet,
gesteuert durch ein Umschaltsignal (insbesondere durch Benutzung
des Schreib/Lesesignals R/W bzw. des daraus abgeleiteten Invert
R/W). Bei Benutzung von R/W (Schreib/Lesesignal) wird dieses durch
das Invertierungsglied 205 zum invertierten Schreib/Lesesignal.
Der zweite Umschaltbaustein 200 insbesondere der zweite
Multiplexer der die Daten und/oder Befehle (hier beispielhaft die
Daten) wieder zusammenführt,
wird ebenfalls durch dieses Signal, insbesondere das Schreib/Lesesignal
R/W und das dazu invertierte angesteuert. Vorteilhaft ist hierbei
wie nachfolgend beschrieben das Signal aus dem verzögerten Pfad,
also hinter dem Verzögerungsglied 204 zu
entnehmen.
-
Zweckmäßigerweise
wird also das verzögerte
Schreib/Lesesignal R/W bzw. das daraus invertierte Invert-R/W (=R/W) gewählt, weil sonst unter Umständen ein
Zugriff, insbesondere ein Schreibzugriff, initiiert würde ohne
die gewünschte
Verzögerung
von hier beispielhaft zweit Taktzyklen zu erreichen bevor die anderen
verbundenen Signale vorliegen. Dies würde unter Umständen zu
Problemen bei einer Umschaltung zwischen Lese- und Schreibzugriff
führen. Wenn
z. B. ein Lesezugriff (eine Leseoperation) direkt hinter einem Schreibzugriff
(einer Schreiboperation) erfolgt, müssten der verzögerte Schreibzugriff und
der direkt darauf folgende Lesezugriff parallel ausgeführt werden.
D.h. es sollte kein exakter Abstand von 2 Takten zwischen einer
Schreiboperation und einer darauffolgenden Leseoperation sein, bzw. ist
es einfacher zu verwirklichen wenn ein Minimalabstand von hier zwei
Taktzyklen zwischen einer Schreiboperation und einer darauffolgenden
Leseoperation erfolgen. Bei einer Schreiboperation tritt eine Lücke von
der Dauer der Schreiboperation am Ausgang des des Umschaltbausteins 200 auf.
Während
dieser Lücke
würde der
Umschaltbaustein 200, also der Multiplexer, den Lesezweig,
also die drei unteren Eingänge
von Multiplexer 200 aktivieren, wobei die nichtverzögerten Daten
bzw. Adressen und Steuerinformationen diese Zweigs immer noch zur
Schreiboperation gehören.
Um zu vermeiden dass diese Informationen, also der vorhergehenden
Operation auf den Bus gelangen ist Umschalteinrichtung 201 vorgesehen,
welche in diesem Fall unkritische Konstanten z. B. die No Operation
NO wie hier in 2 dargestellt, zum unteren Eingang
des Multiplexers 200 liefert während diese Wartezeit besteht,
bis Multiplexer 200 unter Umständen zu den drei oberen Eingangswegen,
also den verzögerten,
umschaltet und die aktuelle Schreiboperation ausführt.
-
Um
die Schnittstellen in diesem Fall gegenüber anderen Komponenten abzusichern
sind die Signale Daten Adresse DA1 (Data Adress), Datenausgabe DO1
(Data Out) und Steuersignal (Memory Control) MC jeweils in diesem
Beispiel durch ein einfaches Parity-Bit abgesichert. Dieses Parity
wird durch die Checkeinheiten 109 bzw. 108 für den Befehlsbus
abgesichert, wobei, da in 1 nicht
dargestellt, das Speicherkontrollsignal MC durch einen zusätzlichen
Memory Checker 202 abgesichert ist. Das Parity Bit dieses
Signals MC ist gleichermaßen
durch das Verzögerungsglied 204 wie
die übrigen
Signale verzögert.
Da die Signale jeder Signalart DA1, DO1 und MC unabhängig in
der Verzögerungseinheit
geführt
sind, ermöglicht
dieses einfache Parity-Bit ausreichenden Schutz gegen Einzelfehler.
Bei Mehrfehlererkennung oder Absicherung sowie Korrektur von Mehrfachfehlern
können
wie schon gesagt mächtigere
Fehlerkennungen verwendet werden.
-
Da
das Umschaltsignal bzw. Änderungssignal
also hier das Schreib-/Lesesignal R/W zur Steuerung der Umschalteinheiten
eine spezielle Rolle ausfüllt
soll dieses noch einmal in einer besonderen Ausführung konkret abgesichert werden.
Dies soll durch einen dual rail code (also auf zwei Spuren) direkt beim
Eingang in die Verzögerungseinheit
erfolgen wobei dies noch einmal im Hinblick auf 4 genauer
beschrieben wird.
-
Eine
zusätzliche
Funktion kann über
den Pfad DAE/DOE, 206, 207 und 208 realisiert
werden. Darüber
ist ein Schutz von Schreiboperationen im Falle eines Fehlers bei
Standardkomponenten wie beispielsweise einem Fail Safe Speicher
oder genauso bei der Umschaltung einer Schreiboperation in eine
Leseoperation erzielbar. Das Fehlersignal DAE/DOE des Dual Cores
liegt als dual rail Code vor. Dieser wird in ein single-rail Signal
gewandelt Und zwar bevor ein Zeitversatz dazwischen liegt. Dies
erfolgt in einem Vergleichsbaustein 206 der insbesondere
als XOR-Baustein ausgeführt
sein kann. Das XOR-Glied 206 macht dabei gleichzeitig aus
dem Mehrfachsignal ein Einfachsignal. Optional wird nun ein Zeitverzug
von 0,5 Taktzyklen in einem Verzögerungsglied 207 beigefügt um eine
zeitliche Ausrichtung des resultierenden Fehlersignals mit dem korrespondierenden
Datenwort in der Verzögerungseinheit
zu erzielen. Dies, da die Verzögerungseinheit
in unserem Beispiel um 2 Taktzyklen gemäß Verzögerungsglied 204 verzögert. Wird
dann als Block 208 z. B. ein UND-Gatter verwendet, kann
das Schreib-/Lesesignal R/W maskiert werden um einen Schreibzugriff
zu blockieren wie dies im Zusammenhang mit der Beschaltung von Block 208 dargestellt
ist.
-
Dieser
DAE/DOE Eingang, also das Fehlersignal aus den Rechnern kann ebenfalls
wie das Parity-Bit der Speichersteuerung MC aus 202 sowie
das jeweilige Umschalt- bzw. Änderungssignal
der Umschalteinrichtungen 201 und 202, also insbesondere das
Schreib/Lesesignal R/W sowie das daraus abgeleitete inverse Schreib/Lesesignal
(Invert R/W) dem Testbaustein 203 (insbesondere als TSC-Checker ausgebildet)
zugeführt
werden woraus sich ein für eine
weitere Fehlerbehandlung nutzbares Fehlersignal EO (Error Out) ergibt.
Die Verwendung der Schreib/Lesesignale R/W und R/W zur Umschaltung im Multiplexer sowie
deren Überprüfung wird
wie bereits erwähnt
in 4 näher
erläutert.
-
In
der Verzögerungseinheit
nach 2 ergibt sich nach den Ausführungen nun am Ausgang ein
entweder nicht verzögertes
oder verzögertes
Datenadresssignal DA1d (Data Adress delayed), ein entweder nicht
verzögertes
oder verzögertes
Datensignal oder Datenausgangssignal DO1d (Data Out delayed) in
Abhängigkeit
einer Leseoperation oder Schreiboperation sowie in diesem speziellen
Beispiel wenn als Komponente, insbesondere externe Komponente ein
Speicherbaustein verwendet wird ein Speichersteuerungssignal oder
Speicherkontrollsignal MCd (Memory Control delayed) das ebenfalls
entweder nicht verzögert
oder verzögert
ist.
-
3 zeigt
nun nocheinmal in einer zweiten Ausführungsform eine Verzögerungseinheit
wobei die Verzögerungseinheit
wie dargestellt auch nur aus einem Umschaltbaustein oder Miltiplexer 200 und zwei
Zweigen ausgeführt
sein kann. Hierbei wird aus 2 nur der
zweite Miltiplexer 200 verwendet sodass die Eingänge DA1, DO1
und MC diesem direkt zugeführt
werden. Die gleichen Eingänge
werden wie vorher schon über
ein Verzögerungsglied 204 verzögert und
ebenfalls dem Multiplexer 200 zugeführt. Dabei gehen die Daten
(also hier Datenadresse DA1, Daten DO1 und Speichersteuerung MC)
gleichzeitig in beide Zweige, wobei Schreiboperationen in dem nicht
verzögerten
Pfad in Leseoperationen umgewandelt werden. Diese Änderung
oder Umschaltung der Schreiboperationen in Leseoperationen kann ebenfalls
durch die Schreib-/Lesesignale R/W bzw. das daraus abgeleitete R/W
invertiert erfolgen.
-
Im übrigen ist
die zweite Ausführungsform vergleichbar
aufgebaut wie die erste Ausführungsform,
bis auf die Tatsache dass der erste Multiplexer 201 weggelassen
wurde wodurch auch die Bezeichnungen und die Funktionen soweit vorhanden
identisch sind. Ausnahme ist die Testeinheit, da dieser durch den
fehlenden Multiplexer 201 weniger Signale zugeführt werden
und darum geringfügig
anders aufgebaut sein kann und deswegen hier mit 303 bezeichnet
ist. Aber gleichermaßen
das weiterverwendbare im Rahmen einer Fehlerbehandlung benutzbare Errorsignal
EO ausgibt.
-
Insbesondere
bei einer von Neumann Architektur bei der die Komponente an einem
allgemeinen Bus angehängt
ist, ist es vorteilhaft, wenn nur die Schreiboperation verzögert wird.
Zweckmäßigerweise
erfolgen die Befehlsspeicherzugriffe und die Leseoperationen ohne
Verzögerung
im Rahmen der von Neumann Architektur.
-
Bei
der Verzögerungseinheit
können
als Umschaltbausteine oder Multiplexer sichere Multiplexer gemäß 4 verwendet
werden. Hierbei werden die Daten durch einen Fehlererkennungscode,
hier beispielsweise ein Parity-Bit abgesichert und die Ansteuersignale
also Umschalt- bzw. Änderungssignale,
hier insbesondere das Schreib/Lesesignal R/W und das daraus abgeleitete
inverse Schreib/Lesesignal R/W werden
ebenso abgesichert, hier beispielhaft in Dual Rail Logic. D.h. das
R/W sowie das inverse Signal werden zuerst dem sicheren Multiplexer
zugeführt
und von dort zur Testeinheit dem TSC-Checker 203 bzw. 303.
Unter diesen Vorgaben wird ein Fehler der eine Spur des Schreib/Lesesignals
betrifft durch die Testeinheit TSC 203 bzw. 303 detektiert während ein
Einfachfehler im Multiplexschaltkreis ein einfaches Output-Bit betreffen
wird und damit durch den Parity Check ermittelbar ist. D.h. die
Daten und/oder Befehle wie vorher ausgeführt werden wie in einem Standardmultiplexer
umgeschalten, wobei zusätzlich
noch das Parity-Bit oder eine andere Fehlerkennung umgeschalten werden.
Die Ansteuersignale also Umschalt- oder Änderungssignale R/W und R/W
Invert werden zunächst
an alle Umschalter für die
einzelnen Bits geführt,
hier dargestellt in den Bausteinen 401 bis 406 insbesondere
als UND-Gatter, denen ebenso die jeweiligen Eingänge I10, I11, I20, I21 bis
In0, In1 zugeführt
werden. Die Bausteine bzw. deren Ausgangssignale aus 401-406 werden
dann jeweils in den Bausteinen 407 bis 409 wie
in 4 dargestellt zusammengefasst. Dazu sind die Bausteine 407-409 insbesondere
als ODER-Gatter ausgeführt.
Dabei ergeben sich dann Ausgänge
des Multiplexbausteins O1, O2 bis On. Die in 4 dargestellte
Struktur ist nur ein Ausschnitt aus der Gesamtstruktur eines Multiplexbausteins
gemäß den 2 und 3 mit
den darin beispielhaft dargestellten Bit-Breiten von 17Bit bzw.
5Bit pro Signalweg. D.h. beide Multiplexbausteine 201 und 200 entsprechend den 2 und 3 sind
vorteilhafterweise in Form der 4 ausgeführt um einen
fälschlicherweise
umgeschalteten Datenweg wie bereits beschrieben erkennbar zu machen
und die Fehlerkennung zu vereinfachen. Solche Fehler könnten nicht
durch reines Parity-Checking
ermittelt werden, da auch die Daten des falschen Signalweges die
korrekte Parity aufweisen, sofern kein Bitkipper vorliegt.
-
Abgeschlossen
wird dieses Sicherheitspaket durch die Absicherung der Schnittstelle
zu einer Komponente, insbesondere einer externen Komponente entsprechend 103 und 104 aus 1,
indem wie bereits in 1 dargestellt Fehlerkennungseinheiten
zur Generation der Fehlerkennung 105-107 und zur
Fehlerüberprüfungseinheiten
zur Überprüfung der
Fehlerkennung wie 108 und 109 insbesondere als
Party-Bit-Überprüfer und
Party-Bit-Generatoren vorgesehen sind. Die dabei entstandenen Fehlersignale
können
dann eben als DAE/DOE-Signale gemäß 2 und 3 eben
als Data Adress Error oder Data Out Error auch im Verzögerungsbaustein wie
beschrieben verwendet werden. Die Verwendung eines sicheren Multiplexers,
bei dem die Ansteuersignale bzw. Umschalt- oder Änderungssignale R/W und R/W
Invert zuerst an alle Umschalter für die einzelnen Bits geführt und
erst danach im TSC-Checker überprüft werden,
können
Fehler in den Ansteuersignalen somit durch den Test von diesen erkannt
werden bzw. wenn nur ein Bit fehlerhaft umgeschaltet wird, wird
dies durch die Datenkodierung der umzuschaltenden Daten erkannt.
-
Durch
die Erfindung ist somit eine beträchtliche Erhöhung der
Sicherheit im Rahmen eines Zweirechnersystems mit relativ einfachen
Mitteln möglich.
-
5 schließlich zeigt
die Funktionsweise des Registers, insbesondere Fehlerregisters.
-
Heutige
Zweirechnersysteme zur Fehlererkennung (Bsp.: Dual Core) bieten
eine sehr hohe Fehlerentdeckungswahrscheinlichkeit. Da aufgrund neuer
Halbleitertechnologien mit immer kleiner werdenden Strukturbreiten
die Anzahl der transienten Fehler zunimmt, könnten die meisten Fehler durch eine
Fehlerbehandlungsroutine behoben werden. Bei heutigen Zweiprozessorsystemen
wird oftmals nur das Auftreten eines Fehlers registriert und dann
das System abgeschaltet oder durch einen Reset neu gestartet. Diese
Fehlerbehandlungsmethode benötigt eine
lange Zeitdauer. Um das Recovery von Fehlzuständen zu beschleunigen muss
der Software auf dem Rechner der Fehlerort bekannt sein, so dass
ein zielgerichtetes und schnelles Beheben des Fehlzustandes erfolgen
kann.
-
Werden
die Fehlerorte durch unterschiedliche Interruptleitungen spezifieziert,
so muss der Interruptcontroller fehlertolerant ausgeführt sein,
bzw. müssten
auch entsprechend viele Interruptleitungen zur Verfügung stehen.
Dies kommt auch daher weil die Fehlerentdeckungsmechanismen keine
intelligenten Interruptquellen sind, die evtl. eine Kennung mitliefern
könnten.
-
Um
dies zu ermöglichen
wird hier ein Fehlerregister vorgeschlagen, das in jedem der beiden
Prozessoren des Zweirechnersystems eingebaut ist. Dieses Register
muss nicht zwingend wie ein Register im Prozessor adressierbar sein,
sondern kann auch in einen Speicherbereich des Prozessors eingeblendet
sein. Jedes Bit des Fehlerregisters repräsentiert das Fehlersignal eines
Fehlerentdeckungsmechanismus des Zweiprozessorsystems. Dies ist hier
beispielhaft für
eine Implementierung (Bild 1) dargestellt. Dabei repräsentiert
hier beispielhaft Bit (A) bis (H) entsprechend:
- (A)
Befehlspeicherfehler: z.B. einen Parityfehler in der Instruktionsadresse
- (B) Datenspeicherfehler, können
auch durch 2 Bits dargestellt werden. Eins z.B. für Fehler
in der Adresse und das andere für
Fehler in den Daten
- (C) Instruktionsadressenfehler: wird durch einen Komparator
erkannt.
- (D) Instruktionsfehler: Die Instruktion ist verfälscht. Wird
z.B. durch einen Paritytest der Instruktion erkannt.
- (E) Datenadressenfehler: wird wie (C) durch einen Komparator
erkannt
- (F) Datenwortfehler: Erkennung wie (C) oder (D)
- (G) Eine beispielhafte Zusatzkomponente mit einem Fehlererkennungsmechanismus
- (H) Eingangsdatenfehler: Fehler kann durch z.B. einem Paritytest
erkannt werden wie in Punkt (D)
-
Die
Funktionsweise des Fehlerregisters ist beispielhaft in Bild 2 dargestellt.
Wenn nun ein Fehler auftritt, wird das entsprechende Fehlerbit zuerst
im Fehlerregister des Master (Error Register Bit 0 Master) gesetzt
und 1,5 Takte später
im Fehlerregister des Slave (Error Register Bit 0 Slave). Dieser
Versatz ist nötig,
da bei dieser beispielhaften Implementierung die beiden Prozessoren
mit einem Taktversatz von 1,5 Takten arbeiten. Die Implementierung
kann ebenso für
Zweiprozessorsysteme mit anderen Taktversatz von 0 bis x (x aus
den natürlichen
Zahlen) verwendet werden. Hierbei muss das Signal für den zweiten
Prozessor entsprechend verzögert
werden. Hier liegen die Fehlersignale als Dual-Rail Signale vor.
Dies ist aber nicht zwingend notwendig. Zusätzlich werden alle Einzelfehlersignale
zu einem Gesamtsignal zusammengefasst. Mit diesem zusammengefassten
Signal (Error Dual Core) kann ein Interrupt an dem Zweiprozessorsystem
ausgelöst
werden. Der Interrupt wird zuerst am Master (Interrupt Master) und
mit dem entsprechenden Taktversatz am Slave (Interrupt Slave) ausgelöst. Die
Verzögerung am
Slave in Höhe
des Taktversatzes ist notwendig um die Synchronität des Zweiprozessorsystems auch
im Fehlerfall und während
der Fehlerbehandlungsroutine zu gewährleisten.
-
Aufgrund
dieses Interrupts kann nun das Fehlerregister des Masters vom Master
ausgelesen werden und das Fehlerregister des Slaves vom Slave. Durch
Auswerten des gesetzten Bits kann nun eine Fehlerbehandlungsroutine
gestartet werden. Nach Abschluss der Fehlerbehandlungsroutine kann/soll
das entsprechende Bit zurückgesetzt
werden.
-
Das
Fehlerregister muss nicht fehlertolerant aufgebaut sein, da es für jeden
Prozessor einzeln implementiert ist. Tritt ein Fehler in einem Register
auf, so laufen die beiden Prozessoren bei einer Fehlerbehandlung
auseinander (führen
unterschiedliche Recovery-Maßnahmen
aus) und somit werden Fehler in diesem Register erkannt. Ist das
Fehlerregister nur einfach vorhanden, so muss es ebenfalls nicht
fehlertolerant implementiert sein, da sowohl im Fehlerfall ein Bit
in diesem Register gesetzt sein muss und auch ein Interrupt ausgelöst werden
muss. Wird der Interrupt ausgelöst
und ist das Bit nicht gesetzt oder sind zwei Bits gesetzt, ist ein
Fehler im Fehlerregister aufgetreten.
-
Das
Fehlerregister bzw. Fehlerregisterpaar kann nicht nur bei Zweiprozessorsystemen
verwendet werden. Es ist ebenso in x-fach Prozessorsystemen einsetzbar,
wobei x von 1 bis unendlich sein kann.
-
Gezeigt
ist:
- (1) ein Fehlerregister in dem jedes Bit
ein Fehlersignal eines Fehlererkennungsmechanismus repräsentiert
- (2) ein Fehlerregister bei dem die Fehlererkennungsmechanismen
des Prozessorsystems das entsprechende Fehlerbit setzen können und
es vom Prozessor wieder gelöscht
werden kann und das als Prozessorregister ausgeführt ist oder in den Speicherbereich
des Prozessors eingeblendet ist
- (3) ein Fehlerregisterpaar bei einem Zweiprozessorsystem bei
dem das Fehlerregister für
jeden Prozessor explizit vorhanden ist
- (4) Ein Fehlerregisterpaar bei denen das Fehlerregister des
Masters bei Auftreten des Fehlers gesetzt wird und das Fehlerregister
des Slave mit dem entsprechenden Taktversatz
- (5) Eine Zusammenfassung der Einzelfehlersignale zu einem einheitlichen
Fellersignal mit dem ein Interrupt ausgelöst werden kann
- (6) Wie 5 jedoch bei denen die Interrupts am Master und Slave
mit einem Taktversatz ausgelöst werden
um die Synchronität
des Zweiprozessorsystems zu gewährleisten
- (7) Ein Fehlerregister bei dem nur der erste auftretende Fehler
ein Bit setzen darf
-
Ein
Verfahren bei dem
- (1) jeder Fehlererkennungsmechanismus
durch ein Bit/Zeichen/Symbol repräsentiert wird und der dieses
bei Erkennen eines Fehlers setzt.
- (2) bei dem das Register ausgewertet wird und eine dem Bit entsprechende
spezielle Fehlerbehandlungsroutine ausgeführt wird
- (3) bei dem gleichzeitig beim Erkennen des Fehlers das Bit im
Register/Registerpaar gesetzt wird und ein Interrupt an dem Ein-,
Zwei- oder Mehrprozessorsystem ausgelöst wird
- (4) bei dem das Register nach einer Fehlerbehandlung vom Prozessor
wieder zurückgesetzt wird