-
Die
Erfindung betrifft eine Vorrichtung und ein Verfahren zum Beheben
von Fehlern bei einem wenigstens zwei Ausführungseinheiten bzw. CPUs mit
Registern aufweisenden System bzw. Prozessor sowie einen entsprechenden
Prozessor gemäß den Obergegriffen
der unabhängigen
Ansprüche.
-
Stand der
Technik
-
Aufgrund
der immer kleiner werdenden Halbleiterstrukturen wird eine Zunahme
von transienten, d.h. temporären
Prozessorfehlern erwartet, die z.B. durch kosmische Strahlung hervorgerufen
werden. Auch heute treten schon transiente Fehler auf, die durch
elektromagnetische Strahlung oder Einkopplung von Störungen in
die Versorgungsleitungen der Prozessoren hervorgerufen werden.
-
Im
Stand der Technik werden Fehler in einem Prozessor durch zusätzliche Überwachungseinrichtungen
oder durch einen redundanten Rechner bzw. durch Einsatz eines Dual-Core(Doppel-Kern)-Rechners
erkannt.
-
Ein
solcher Dual-Core-Prozessor bzw. ein solches Prozessorsystem besteht
aus zwei Ausführungseinheiten,
insbesondere zwei CPUs (Master und Checker), die parallel oder zeitversetzt
das gleiche Programm abarbeiten. Die beiden CPUs (Central Processing
Unit) können
taktsynchron, also parallel (im Lockstep oder Common Mode), oder
um einige Takte zeitversetzt arbeiten. Beide CPUs empfangen dieselben
Eingangsdaten und arbeiten das gleiche Programm ab, die Ausgänge des
Dual-Cores werden jedoch ausschließlich durch den Master getrieben.
In jedem Taktzyklus werden die Ausgänge des Masters mit den Ausgängen des
Checkers verglichen und dadurch überprüft. Stimmen
die Ausgangswerte der beiden CPUs nicht überein, so bedeutet das, dass sich
mindestens eine der beiden CPUs in einem fehlerhaften Zustand befindet.
-
In
einer Beispielarchitektur für
einen Dual-Core-Prozessor vergleicht ein Komparator dabei die Ausgänge (Instruktionsadresse,
Data Out, Kontrollsignale) beider Cores (alle Vergleiche finden
parallel statt):
- a: Instruktionsadresse (Ohne
eine Überprüfung der
Instruktionsadresse könnte
der Master unbemerkt eine falsche Instruktion adressieren, die dann
in beiden Prozessoren unerkannt abgearbeitet werden würde.)
- b: Data Out
- c: Datenadresse
- d: Kontrollsignale wie Write Enable oder Read Enable
-
Die
Signale aus b–d
dienen der Ansteuerung des Datenspeichers bzw. externer Module.
-
Ein
möglicher
Fehler wird nach außen
signalisiert und führt
im Standardfall zum Abschalten des betroffenen Steuergerätes. Dieser
Ablauf würde
bei der erwarteten Zunahme von transienten Fehlern zu einem häufigeren
Abschalten von Steuergeräten
führen.
Da bei transienten Fehlern keine hardwaretechnische Schädigung des
Rechners vorliegt, wäre
es hilfreich, den Rechner möglichst
schnell wieder der Anwendung zur Verfügung zu stellen, ohne dass
das System abschaltet oder ein Neustart erfolgen muss.
-
Methoden,
die transiente Fehler beheben und dabei einen kompletten Neustart
des Prozessors vermeiden, sind für
Prozessoren, die im Master/Checker Betrieb arbeiten, nur vereinzelt
zu finden.
-
Dazu
zeigt die Veröffentlichung
von Jiri Gaisler:
„Concurrent
error-detection and modular fault-tolerance in a 32-bit processing
core for embedded space flight applications" vom Twenty-Fourth International Symposium
on Fault-Tolerant Computing, pages 128–130, June 1994 einen Prozessor
mit-integrierten Fehlererkennungs- und Recovery-Mechanismen (z.B. Parity Checking und
automatische Instruktionswiederholung), der fähig ist, im Master/Checker Betrieb
zu arbeiten. Die internen Fehlererkennungsmechanismen im Master
oder im Checker triggern eine Recovery-Operation immer nur lokal
in einem Prozessor. Dadurch verlieren die beiden Prozessoren ihre
Synchronität
zueinander, und ein Vergleich der Ausgänge kann nicht mehr stattfinden.
Die einzige Möglichkeit,
die beiden Prozessoren wieder zu synchronisieren, besteht in einem
Neustart beider Prozessoren während
einer unkritischen Phase der Mission.
-
Weiterhin
zeigt die Schrift von Yuval Tamir and Marc Tremblay mit dem Titel "High-performance fault-tolerant
vlsi systems using micro rollback" aus IEEE Transactions on Computers,
volume 39, pages 548–554,
1990 eine Methode namens „Micro
Rollback", durch
die der komplette Zustand eines beliebigen VLSI-Systems um eine
bestimmte Anzahl von Takten zurückgerollt
werden kann. Dazu werden alle Register und das Registerfile als
gesamtes durch einen zusätzlichen
FIFO-Puffer erweitert. Neue Werte werden bei dieser Methode nicht
direkt in das eigentliche Register geschrieben, sondern vorerst
im Puffer abgelegt und erst nach ihrer Überprüfung in das Register übertragen.
Um den gesamten Prozessorzustand zurückzurollen, werden die Inhalte
aller FIFO-Puffer als ungültig
markiert. Wenn das System um bis zu k Taktzyklen zurückgerollt
werden können soll,
werden für
jedes Register k Puffer benötigt.
-
Diese
im Stand der Technik vorgestellten Prozessoren haben somit den Mangel,
dass sie durch Recovery-Operationen ihre Synchronität verlieren,
da Recovery immer nur in einem Prozessor lokal durchgeführt wird.
Die Grundidee des beschriebenen Verfahrens (Micro Rollback) dabei
ist, jede Komponente eines Systems unabhängig mit Rollbackfähigkeit
zu erweitern, um im Fehlerfall den gesamten Systemzustand auf konsistente
Weise zurückrollen
zu können.
Der architekturspezifische Zusammenhang der einzelnen Komponenten
(Register, Registerfile, ...) zueinander muss hierbei nicht betrachtet
werden, da durch Rollback wirklich immer der gesamte Systemzustand
konsistent zurückgerollt wird.
Der Nachteil dieses Verfahrens ist ein großer Hardware-Overhead, der
proportional zur Systemgröße (z.B.
Anzahl der Pipelinestufen im Prozessor) wächst.
-
In
der nicht vorveröffentlichten
Anmeldung 102004058288.2 der Anmelderin werden ein Verfahren und
eine Vorrichtung zum Beheben von Fehlern bei einem Prozessor mit
zwei Ausführungseinheiten sowie
ein entsprechender Prozessor vorgestellt, wobei Register vorgesehen
sind, in welchen Instruktionen und/oder diesen zugeordnete Informationen
ablegbar sind, wobei die Instruktionen redundant in beiden Ausführungseinheiten
abgearbeitet werden, und Vergleichsmittel wie z.B. ein Komparator
enthalten sind, die derart gestaltet sind, dass durch einen Vergleich
der Instruktionen und/oder der zugeordneten Informationen eine Abweichung
und damit ein Fehler erkannt wird, wobei eine Aufteilung der Register
des Prozessors in erste Register und zweite Register vorgegeben
ist, wobei die ersten Register derart gestaltet sind, dass aus ihnen
ein vorgebbarer Zustand des Prozessors und Inhalte der zweiten Register
herleitbar sind, wobei Puffer als Mittel zum Zurückrollen enthalten sind, die
derart ausgebildet sind, dass wenigstens eine Instruktion und/oder
die Informationen in den ersten Registern zurückgerollt und erneut ausgeführt und/oder
wiederhergestellt werden.
-
Bei
den bisher vorgeschlagenen Maßnahmen
besteht meist das Problem, dass tiefgehende Änderungen im Prozessoraufbau
notwendig sind, wodurch herkömmliche
Prozessoren nicht verwendet werden können.
-
Damit
stellt sich das Problem, Fehler, insbesondere transiente Fehler
ohne einen System- oder Prozessor-Neustart bei gleichzeitiger Vermeidung von
großem
Hardware-Aufwand
zu beheben.
-
Erfindungsgemäß werden
daher ein Verfahren und eine Vorrichtung sowie ein entsprechender Prozessor
mit den Merkmalen der unabhängigen
Patentansprüche
vorgestellt. Vorteilhafte Ausgestaltungen sind Gegenstand der Unteransprüche.
-
Vorteile der
Erfindung
-
Bei
einem Schattenregister (shadow register) handelt es sich um ein
zusätzliches
Register (Kopie, redundantes Register), in das immer die gleichen Daten
geschrieben werden wie in das Originalregister. Bei Fehlern im Originalregister
wird auf das Schattenregister umgeschaltet bzw. die Daten aus dem
Schattenregister in das Originalregister übertragen. Es bietet sich an,
ist aber nicht zwingend, die Menge aller Register einer CPU in zwei
Teilmengen aufzuteilen, "Essential
Registers" und "Derivable Registers ". Die Essential Registers
sind derart gestaltet sind, dass aus ihnen die Inhalte Derivable
Registers ableitbar sind. Ein wesentlicher Vorteil der Erfindung besteht
darin, dass kein wesentlicher Eingriff in Prozessoren notwendig
ist. Es ist ausreichend, wenige Leitungen nach außen zu führen. Damit
kann die erfindungsgemäße Lösung verwirklicht
werden, ohne neue Prozessoren bzw. Systeme entwickeln und herstellen
zu müssen.
Dies führt
zu einer wesentlichen Kosten- und Zeitersparnis. Daneben ist die
erfindungsgemäße Lösung applikations-,
d.h. software-unabhängig.
Es müssen
insbesondere keine Rollback-Punkte definiert werden. Die Fehlerbehebung wird
auf Hardwareebene ausgeführt,
wodurch keine Softwareanpassung notwendig wird. Zusätzlich kann ein
Recovery durch die erfindungsgemäße Lösung beschleunigt
werden. Im Gegensatz zu Task-Wiederholungen und Resets, wie sie
im Stand der Technik üblich
sind, die meist mehrere Tausend bzw. einige Millionen Taktzyklen
beanspruchen, werden bei der erfindungsgemäßen Lösung nur einige hundert Taktzyklen
beansprucht. Diese Zeit wird hauptsächlich durch die Größe des Schattenregisters
und die Latenz der Schreibzugriffe auf den Datenspeicher der Ausführungseinheiten
bestimmt.
-
Im
Fehlerfall wird der Inhalt der Schattenregister von den Ausführungseinheiten
auf die internen Register eingelesen, wodurch ein konsistenter Prozessorzustand
hergestellt wird. Es können
dabei die Register aller Ausführungseinheiten
aus den Schattenregistern befüllt
werden, es ist aber auch möglich, die
Register einer Ausführungseinheit
aus den Schattenregistern zu befüllen
und die Register der übrigen
Ausführungseinheiten
aus den Registern der ersten CPU zu befüllen usw. Die erfindungsgemäße Vorrichtung
kann sowohl integrierter Bestandteil des zugeordneten Systems sein,
d.h. beispielsweise in einen Dual-Core-Prozessor integriert ausgebildet sein,
als auch als separate Baugruppe ausgebildet sein, die einem System
zugefügt
wird. Die Erfindung kann vorteilhaft für Steuergeräte in einem Kraftfahrzeug verwendet
werden, ist aber nicht auf eine derartige Verwendung beschränkt.
-
Bei
der nachfolgenden Beschreibung der bevorzugten Ausführungsformen
der erfindungsgemäßen Lösung wird
sowohl auch das Verfahren als auch auf die Vorrichtung (Recovery-Verfahren und Recovery-Vorrichtung)
Bezug genommen, soweit es nicht ausdrücklich anders beschrieben ist.
-
Vorteilhafterweise
sind bei der Erfindung Schattenregister für ein Prozessor- bzw. Programm-Status-Wort
(PSW), ein Registerfile und/oder eine Instruktionsadresse vorgesehen.
Ein Registerfile oder eine Registerbank oder ein Registerbereich ist
eine Ansammlung von Registern. Zweckmäßigerweise sind ausreichend
Schattenregister vorgesehen, um die (essentiellen) Register einer
Ausführungseinheit
zu spiegeln. Die Schattenregister werden mit Inhalten der Register
der wenigstens zwei Ausführungseinheiten
oder allgemein mit die Inhalte bzw. Daten der Register betreffenden
Daten beschrieben. Aus dem Inhalt der Schattenregister kann somit
im Fehlerfall ein fehlerfreier Zustand der Ausführungseinheiten, insbesondere
der unmittelbar vorhergehende fehlerfreie Zustand wiederhergestellt werden.
In das wenigstens eine Schattenregister werden in einer bevorzugten
Ausführungsform
Daten für
das Registerfile und das PSW geschrieben, die für die wenigstens zwei Ausführungseinheiten
vorgesehen sind. Der Schreibvorgang findet insbesondere nach einem
Vergleich dieser Daten statt, und nur für den Fall, dass keine Abweichung,
also kein Fehler festgestellt wurde. Durch einen Vergleich der den Ausführungseinheiten
zugehörigen
Register vor dem Beschreiben der Schattenregister kann sichergestellt werden,
dass in die Schattenregister fehlerfreie Daten geschrieben werden.
Die Daten für
die Schattenregister können
insbesondere durch Herausführen der
betreffenden Signale, bspw. des Write Back-Busses, aus den Ausführungseinheiten
erhalten werden. Dazu ist nur ein geringer Konstruktions- bzw. Hardwareänderungsbedarf
notwendig.
-
Bei
einem bevorzugten Ausführungsbeispiel der
erfindungsgemäßen Lösung wird
wenigstens ein Schattenregister in den Speicherbereich wenigstens einer
Ausführungseinheit
eingeblendet. Auf diese Weise kann das Schattenregister von der
wenigstens einen Ausführungseinheit
schnell und einfach ausgelesen werden.
-
Vorteilhafterweise
werden bei dem erfindungsgemäßen Verfahren
Befehle aus einem Instruktionsspeicher des wenigstens zwei Ausführungseinheiten
mit Register aufweisenden Systems ausgeführt, wobei Adress- und Schreibsignale
für das
wenigstens eine Schattenregister erhalten werden. Dabei dekodiert
bevorzugt ein Befehlsdecoder, der für die erfindungsgemäße Lösung vorgesehen sein
kann, Befehle aus dem Instruktionsspeicher und generiert das Adress-
und Schreibsignal für
das wenigstens eine Schattenregister. Auf einen derart ausgestalteten
Befehlsdecoder kann auch verzichtet werden, wenn diese Informationen,
d.h. die Adress- und Schreibsignale, aus den wenigstens zwei Ausführungseinheiten
herausgeführt,
miteinander verglichen und für
die Ansteuerung des wenigstens einen Schattenregisters verwendet
werden.
-
Zweckmäßigerweise
wird dem wenigstens einen Schattenregister eine Parität zum Feststellen der
Korrektheit der Daten in dem Schattenregister zugeordnet. So kann
auf einfache Weise sichergestellt werden, dass sich in dem Schattenregister
keine fehlerhaften Daten befinden. Dies ist aber nicht nötig, wenn
man softwaremäßig sicherstellt,
dass das Registerfile und damit auch das Schattenregisterfile regelmäßig komplett
neu beschrieben werden, da somit bestehende Fehler im Schattenregisterfile überschrieben
werden. Vor einem Übertragen
der Schattenregisterdaten auf wenigstens eine der Ausführungseinheiten
kann mittels der vorgesehenen Parität die Korrektheit überprüft werden.
Sind die Daten im Schattenregister nicht mehr korrekt, kann ein
Neustart des Systems zweckmäßig sein.
Da auf das Schattenregister nur im Fehlerfall lesend zugegriffen wird
(Fehlerfall bedeutet nicht Fehler im Schattenregister, sondern Fehler
in den CPUs), ist ein komplettes Neubeschreiben der Schattenregister
ebenso möglich.
-
In
einer bevorzugten Ausgestaltung der erfindungsgemäßen Lösung sind
die Daten der Register betreffende Daten die, insbesondere fehlerfreien, Daten
der Register selbst, wobei fehlerfreie Daten in wenigstens einem
Register durch übertragen
der Daten aus dem Schattenregister in das wenigstens eine Register
wiederhergestellt werden. In diesem Fall enthält ein Schattenregister die
Daten eines Registers einer Ausführungseinheit
im letzten fehlerfreien Zustand, wodurch bei einem Fehler die Fehlerfreiheit durch
Austausch bzw. Übertragen
dieser Daten wiederhergestellt werden kann.
-
Es
kann ebenso zweckmäßig vorgesehen sein,
dass die fehlerfreien Daten der Register betreffenden Daten Prüfsummen
sind. Dabei kann es sich insbesondere um eine Parität, CRC o.ä. handeln.
In diesem Fall ist der Datenspeicherbedarf des Schattenregisters
vorteilhaft kleiner als die Größe eines Registers
wenigstens einer Ausführungseinheit.
Auf diese Weise kann Speicherplatz innerhalb des Schattenregisters
eingespart werden bzw. der Speicher des Schattenregisters kann kleiner
bemessen werden. Zum Wiederherstellen von fehlerfreien Daten in einem
Register wenigstens einer Ausführungseinheit müssen dann
zunächst
aus den Prüfsummen
vollständige
Daten wiederhergestellt werden, wie es im Stand der Technik bekannt
ist. Werden nur Paritäten in
den Schattenregistern gespeichert, sind wenigstens zwei CPUs vorzusehen.
Im Fehlerfall werden die Paritäten
der Register der beiden CPUs mit den Schattenparitäten verglichen.
Durch diesen 3-fach Vergleich
kann man feststellen, welche CPU fehlerhaft ist, und deren fehlerhafte
Registerinhalte durch die Registerinhalte der funktionierenden CPU
ersetzen.
-
Gemäß einer
vorteilhaften Ausgestaltung des erfindungsgemäßen Verfahrens werden Daten von
wenigstens zwei Registern und wenigstens einem Schattenregister
verglichen und die Daten als fehlerfrei festgestellt, die hauptsächlich übereinstimmen.
Dieses Verfahren kann als Abstimmungs- oder Mehrheitsverfahren bezeichnet
werden. Es werden dabei die Daten von wenigstens drei Registern
(wenigstens zwei Register der Ausführungseinheiten und ein Schattenregister)
verglichen, wobei die Daten als fehlerfrei festgestellt werden,
die mehrheitlich übereinstimmen.
Dieses Verfahren kann vorteilhaft insbesondere angewendet werden,
wenn zur Steigerung der Verarbeitungsgeschwindigkeit das wenigstens
eine Schattenregister bereits beschrieben wird, bevor eine Überprüfung der
Korrektheit der Register der Ausführungseinheiten stattgefunden
hat.
-
Es
sei erwähnt,
dass im Fehlerfall an Stelle einer Neubeschreibung der Daten in
den Registern der Ausführungseinheiten
auch ein Einblenden der Schattenregister oder andersartiges Umschalten möglich ist.
-
Ein
erfindungsgemäßer Prozessor
weist wenigstens zwei Ausführungseinheiten
mit Registern und wenigstens eine erfindungsgemäße Vorrichtung auf. Dadurch
kann der Betrieb eines wenigstens zwei Ausführungseinheiten mit Registern
aufweisenden Prozessors, insbesondere eines Dual-Core-Prozessors, verbessert
werden, da transiente Fehler einfach und schnell behebbar sind.
-
In
einer bevorzugten Ausgestaltung weist der Prozessor Umschaltmittel
zum Umschalten zwischen einem Sicherheits-Modus und einem Perfomanz-Modus auf,
wobei die wenigstens zwei Ausführungseinheiten
in dem Sicherheits-Modus das gleiche Programm abarbeiten, und in
dem Perfomanz-Modus verschiedene Programme abarbeiten. Es versteht
sich, dass darunter insbesondere auch verschiedene Teile eines Programms
zu verstehen sind (Parallelverarbeitung, Multithreading, Symmetrisches
Multiprozessorsystem SMP usw.). Die wenigstens beiden Ausführungseinheiten
können
dabei in beiden Modi taktversetzt oder taktsynchron arbeiten, wie
es in dieser Anmeldung mehrfach beschrieben ist. Wesentlich ist
eine Kombination aus Recovery-Mechanismus
und Rekonfigurierungs-Mechanismus. Dies ermöglicht den Einsatz beider Methoden
und schafft mehr Spielraum zwischen Sicherheit und Performanz des
eingesetzten Systems. Zum Umschalten zwischen den Modi kann ein
Mode-Switch-Modul vorgesehen sein, das ein Mode-Signal bereitstellt.
Das core-Mode-Signal muss an die Recovery-Vorrichtung geleitet werden, da der
Einsatz von Recovery nur im Sicherheits-Modus möglich ist. Beispielsweise im
Automobil werden unterschiedliche Aufgaben durch Rechner abgearbeitet.
Es gibt Komfortfunktionen (z.B. Klimasteuerung) und Sicherheitsfunktionen
mit verschieden hohen Sicherheitsanforderungen (vgl. Motorsteuerung
und Elektronisches Stabilitätsprogramm).
Wenn diese verschiedenen Applikationen auf einem zentralen Steuergerät ausgeführt werden,
kann der Programmcode in drei Klassen unterteilt werden:
- – Programmcode,
bei dem permanente und transiente Fehler online entdeckt werden
müssen (Bsp.
ESP oder x-by-wire Anwendungen),
- – Programmcode,
bei dem die benutzte Hardware in regelmäßigen Abständen auf permanente Fehler
getestet werden muss (Bsp.: Motorsteuerung, Schiebedachsteuerung),
- – Programmcode,
der nicht sicherheitsrelevant ist (z.B. Klimaanlagensteuerung).
-
Somit
ist es vorteilhaft, einen erfindungsgemäßen Prozessor um die Möglichkeit
der Umschaltung zwischen den beiden Modi Sicherheit und Performanz
zu erweitern. Im Sicherheitsmodus arbeiten die beiden Prozessoren
denselben Programmcode, auch taktversetzt, ab und im Performanzmodus
unterschiedliche Aufgaben. Bei Applikationen, die auf getesteter
Hardware abgearbeitet werden müssen, kann
dies abwechselnd im Sicherheits- und Performanzmodus geschehen.
Dabei wird die Hardware im Sicherheitsmodus durch die Redundanz
der beiden Prozessoren getestet und die Software läuft somit
im Performanzmodus auf getesteter Hardware ab. Die Verteilung, wie
oft die Software in welchem Modus abgearbeitet werden muss, ist
abhängig
von der geforderten Fehlerentdeckungszeit, d.h. wie lange sich maximal
ein Fehler auswirken darf, ohne dass durch die Applikation Schaden
angerichtet werden kann.
-
In
einer vorteilhaften Ausgestaltung des erfindungsgemäßen Prozessors
sind Mittel zum Leeren (Flushen) eines Cache-Speichers vorgesehen. Dadurch kann auf
einfache Weise verhindert werden, dass Datenreste aus dem Performanz-Modus
in die Recovery-Vorrichtung übernommen
werden.
-
Es
ist zweckmäßig, wenn
bei dem erfindungsgemäßen Prozessor
wenigstens zwei Taktgeber vorgesehen sind.
-
Ebenso
zweckmäßig kann
es sein, wenn bei dem erfindungsgemäßen Prozessor genau ein Taktgeber
für jeweils
eine Ausführungseinheit
und ein Taktgeber für
die Vorrichtung vorgesehen ist.
-
Durch
diese beiden Ausgestaltungen ergeben sich vielfältige vorteilhafte Möglichkeiten
zur synchronen oder asynchronen Ansteuerung der Ausführungseinheiten
und der Schattenregister.
-
Gemäß einer
bevorzugten Ausgestaltung des erfindungsgemäßen Verfahrens wird zwischen einem
Sicherheits-Modus und einem Perfomanz-Modus umgeschaltet, wobei
im Sicherheits-Modus ein erfindungsgemäßes Verfahren zum Beheben von Fehlern
ausgeführt
wird und im Perfomanz-Modus die wenigstens zwei Ausführungseinheiten
verschiedene Programme bzw. Programmteile oder Tasks ausführen. Zwischen
den Modi kann vorteilhaft über ein
Mode Select Signal umgeschaltet werden.
-
Ein
erfindungsgemäßes Steuergerät für ein Kraftfahrzeug
weist eine erfindungsgemäße Vorrichtung
oder einen erfindungsgemäßen Prozessor
auf. Damit können
Kfz-Steuergeräte sicherheits-
und perfomanzseitig verbessert werden.
-
Weitere
Vorteile und Ausgestaltungen der Erfindung ergeben sich aus der
Beschreibung und der beiliegenden Zeichnung.
-
Es
versteht sich, dass die vorstehend genannten und die nachstehend
noch zu erläuternden Merkmale
nicht nur in der jeweils angegebenen Kombination, sondern auch in
anderen Kombinationen oder in Alleinstellung verwendbar sind, ohne
den Rahmen der vorliegenden Erfindung zu verlassen.
-
Die
Erfindung ist anhand eines Ausführungsbeispiels
in der Zeichnung schematisch dargestellt und wird im folgenden unter
Bezugnahme auf die Zeichnung ausführlich beschrieben.
-
Figurenbeschreibung
-
1 zeigt
ein Blockdiagramm eines Dual-Core-Prozessor-Systems, das eine bevorzugte Ausgestaltung
der erfindungsgemäßen Vorrichtung enthält;
-
2 zeigt
eine schematische Darstellung der bevorzugten Ausgestaltung der
erfindungsgemäßen Vorrichtung
aus 1;
-
3 zeigt
eine schematische Darstellung des Dual-Core-Prozessor-Systems aus 1;
-
4 zeigt
ein Blockdiagramm eines Dual-Core-Prozessor-Systems, für das eine bevorzugte Ausgestaltung
der erfindungsgemäßen Vorrichtung vorgesehen
sein kann; und
-
5 zeigt einen Ausschnitt eines Blockdiagramms
einer bevorzugten Ausgestaltung der erfindungsgemäßen Vorrichtung,
die insbesondere für
ein Dual-Core-Prozessor-System
gemäß 4 vorgesehen
sein kann.
-
In
den Figuren sind gleiche Elemente mit gleichen Bezugszeichen versehen.
-
In 1 ist
schematisch ein Dual-Core- bzw. Doppelkern-Prozessor-System 100 gezeigt,
das eine bevorzugte Ausführungsform
der erfindungsgemäßen Vorrichtung
(Recovery-Vorrichtung) 120 aufweist. Weiterhin weist das System
einen Befehlsspeicher (Instruction Memory) 130 und einen
Datenspeicher (Data Memory) 140 auf.
-
Das
Dual-Core-Prozessor-System 100 weist zwei Ausführungseinheiten
(CPUs, Cores) auf, einen Master 101 und einen Checker 102,
die parallel ein Programm bearbeiten. Die Ausgabe von Daten an die
Peripherie (Anwendungssystem) erfolgt nur, wenn die Daten von Master
und Checker übereinstimmen.
Bei diesem Ausführungsbeispiel
ist die Recovery-Vorrichtung extern gelagert ist, d.h. nicht in die
Cores integriert. Daher sind besonders vorteilhaft bis auf die Herausführung bestimmter
interner Signale keine Modifikationen an den CPUs 101, 102 notwendig.
Die innere Struktur der Recovery-Vorrichtung ist den 2 und 3 genauer
beschrieben.
-
Der
Befehlsspeicher 130 des Systems ist als Festwertspeicher,
auch Read-Only Memory (ROM) genannt, ausgeführt. Zu ihm werden die Adressen
für die
Befehle (Instruction address) über
eine Verbindung 110 geführt.
Nach Anlegen einer Befehlsadresse über die Verbindung 110 gibt
der Befehlsspeicher 130 über eine Verbindung 111 den
entsprechenden Befehl (Instruction) zurück. Der Befehl wird beiden CPUs 101 und 102 zugeführt. Der
Befehlsspeicher 130 ist in der dargestellten Ausführungsform
standardmäßig ausgeführt. Er
wird durch das Vorsehen der Recovery-Vorrichtung 120 nicht verändert. Wie
in 3 im Detail zu sehen, werden nur die Adressen des
Masters 101 an den Befehlsspeicher 130 geführt, während die
Adressen des Checkers 102 nur zu einem Komparator (comp) 126a geführt werden,
der ein Fehlersignal (Error) erzeugt, wenn Adressen oder Adress-Parity
von Master und Checker nicht übereinstimmen.
Die Paritäten
werden von Paritätsgeneratoren
(parity generator) 126b erzeugt und Paritätsprüfern (parity
check) 126c geprüft.
Diese Parity Generatoren/Checker dienen der Absicherung des single point
of failure-Pfades über
die Speicher.
-
Der
Datenspeicher 140 des Systems ist als Schreib-Lese-Speicher, auch Random-Access
Memory (RAM) genannt, ausgeführt.
Ihm werden über eine
Verbindung 112 (Data Address/Data Out) Adressen und Daten
zugeführt.
Weiterhin gibt er über
eine Verbindung 113 entsprechende Daten an die CPUs aus
(Data In). Wie in 3 deutlicher zu sehen, handelt
es sich um die Ausgangsleitungen von Daten-Adressen und Daten von
Master und Checker. Hier werden die Adressen und Daten für den Datenspeicher 140 und
für das
in der Recovery-Vorrichtung 120 enthaltene Schattenregisterfile 121 ausgegeben. Auf
den Dateneingangsleitungen 113 von Master und Checker werden
normalerweise die Inhalte des externen Datenspeichers übertragen.
Wenn über
den Komparator 126a eine Diskrepanz (Fehler) zwischen Master
und Checker erkannt wurde, werden nach Auslösung des Error Signals (Interrrupt
In) auf einer entsprechenden Leitung 117 die gesicherten
Inhalte des externen Registerfiles 121 und des externen PSW-Registers 122 (3)
zu Master und Checker übertragen.
Es bietet sich an, CPU-intern den Eingang der Leitungen 113 und 117 auf
den Write Back Bus zu legen bzw. mappen. Auch der Datenspeicher 140 ist
standardmäßig ausgeführt und
wird durch Vorsehen der Recovery-Vorrichtung nicht verändert. Wie
in 3 im Detail zu sehen, werden nur die Adressen
und Daten des Masters an den Datenspeicher 140 geführt, während die
Adressen und Daten des Checkers nur zur dem Komparator 126a geführt werden.
Dieser erzeugt ein Fehlersignal, wenn Adressen bzw. Daten oder Adress-Parity
bzw. Daten-Parity von Master und Checker nicht übereinstimmen. Die Paritäten werden
von Paritätsgeneratoren (parity
generator) 126b erzeugt und Paritätsprüfern (parity check) 126c geprüft. Diese
Parity Generatoren/Checker dienen der Absicherung des single point of
failure-Pfades über
die Speicher.
-
Der
Daten- sowie der Befehlspeicher stellen Schwachstellen des Systems,
sog. single points of failure, dar, da sie im System jeweils nur
einmal vorhanden sind. Es bietet sich daher an, die beiden Speicher
bspw. durch ECC (error correcting codes) oder andere im Stand der
Technik bekannte Methoden abzusichern (sicherer Speicher).
-
Der
Write Back Bus, ein interner Bus, ist über eine Leitung 114 an
die Recovery-Vorrichtung 110 geführt. Auf dem Write Back Bus
werden von verschiedenen Prozessoreinheiten wie ALU (Arithemtische
und Logische Einheit) oder Daten-RAM Rechenergebnisse bzw. Daten
in das interne Registerfile der CPU geschrieben.
-
Weiterhin
wird über
eine Leitung 115 (PSW Out) das jeweilige Programm- bzw.
Prozessor-Status-Wort von Master 101 und Checker 102 ausgegeben.
Das Prozessor-Status-Wort gibt Auskunft über Ergebnisse der Befehlsausführung im
Programmablauf, z.B. wird in Flags (entsprechende Bits des PSW) kodiert
festgehalten, ob das Ergebnis von Rechenoperationen Null oder negativ
ist (Zero Flag) oder ob ein Überlauf
aufgetreten ist (Carry Flag) usw. Außerdem enthält das PSW Informationen über den
Interrupt-Status der CPU. Mit der Kenntnis bzw. Restaurierung des
Prozessor-Status-Wort
es kann ein Programm an der abgebrochenen Stelle korrekt fortgesetzt
werden.
-
Über eine
Leitung 116 (Interrupt In), die an Master und Checker geführt wird,
kann eine Programmunterbrechung des gerade laufenden Programms durchgeführt werden.
-
Vorzugsweise
wird die Interrupt-Leitung dazu verwendet, um die beiden CPUs 101 und 102 zu
veranlassen, das PSW und die Registerfiledaten von dem externen
Recovery-Modul 120 zu laden und damit ihre möglicherweise
falschen Daten durch korrekte Daten zu ersetzen. Die Quelle der
Leitung 116 entspricht in den 2 und 3 dem
Signal Error Out, dass durch den Komparator 126 bzw. 126a (comp)
erzeugt wird.
-
In 2 ist
der innere Aufbau der Recovery-Vorrichtung 120 aus 1 schematisch
dargestellt. Aus Übersichtsgründen wurde
der Taktversatz zwischen den beiden CPUs in diesem Blockschaltbild
weggelassen. Es versteht sich aber, dass ebenso ein Taktversatz
vorgesehen sein kann. Die Recovery-Vorrichtung weist als Schattenregister
ein Registerfile 121 und ein PSW-Register 122 auf.
-
Das
Registerfile 121 enthält
zumindest so viele Register wie der Master 101 bzw. der
Checker 102 oder mindestens so viele Register, wie zur
Wiederherstellung der betreffenden Anwendung erforderlich sind (Essential
Registers). Zum Schreiben wird es automatisch von einem Befehlsdecoder 123 adressiert.
Zum Lesen wird es über
die Leitung 112 (Data Address/Data Out) des Masters adressiert. Beim
Betrieb werden die Daten vom Write Back Bus über die Leitung 115 geschrieben
und im Fehlerfall von den Data Out Ausgängen des Registerfiles in die Data
In Eingänge
der CPUs über
die Leitung 117 gelesen. Alternativ können die Daten auch vom Data Out
des Masters beschrieben werden. Dies ist für die vorgestellte Recovery-Vorrichtung
nicht notwendig, stellt aber keinen nennenswerten Hardware Overhead
dar, und bietet die Möglichkeit,
das Schattenregister auch in anderer Form (z.B. als zusätzlicher Speicher)
zu verwenden. Um die Schattenregister auslesen zu können, werden
sie vorzugsweise in den Speicheradressbereich eingeblendet. Dann
kann durch einfache Schreib- oder Leseoperationen auf sie zugegriffen
werden. Bei dieser Ausführungsform wird
durch die Ausführungseinheiten
bzw. CPUs 101, 102 nur im Fehlerfall und nur lesend
auf die Schattenregister zugegriffen, da die Schreibzugriffe durch
den in dieser bevorzugten Ausführungsform
der erfindungsgemäßen Vorrichtung
vorgesehenen Befehlsdecoder 123 durchgeführt werden.
-
Das
PSW-Register 122 wird, wenn der Vergleich der Signale PSW
Out des Masters und des Checkers keinen Fehler anzeigt, mit dem
Signal PSW Out des Masters 101 über Leitung 115 beschrieben.
Alternativ kann das PSW-Register auch von den Signalen Data Address/Data
Out des Masters adressiert und mit dem Signal Data Out des Masters
beschrieben werden. Diese Vorgehensweise kann für mögliche Erweiterungen sinnvoll
sein. Das PSW wird über
PSW Out ausgelesen und zusammen mit Data Out vom Registerfile 121 an
Leitung 117 zur Verfügung
gestellt. Diese Leitung ist, wie in 1 gezeigt,
mit Data In von Master und Checker verbunden, wobei wiederum nur
im Fehlerfall zugegriffen wird.
-
Innerhalb
der Recovery-Vorrichtung 120 wird die Leitung 116 von
einer Komparator/Paritätseinheit 126 aus
der Recovery-Vorrichtung
heraus, wie in 1 beschrieben, und an das Registerfile 121 sowie
das PSW-Register 122 geführt, um sicherzustellen, dass
keine fehlerhaften Daten in das Schattenregister gespeichert werden.
Wie in 3 gezeigt, setzt sich die Komparator/Paritätseinheit 126 zumindest
aus wenigstens einem Komparator 126a zusammen. Vorteilhaft
sind zusätzlich
wenigstens ein Paritätserzeuger 126b und/oder
wenigstens ein Paritätsprüfer 126c vorgesehen.
Falls ein Fehler in der Komparator/Paritätseinheit 126 detektiert
wird, darf das derzeitige Datenwort (welches ja als fehlerhaft erkannt
wurde) nicht mehr auf die Schattenregister geschrieben werden. Nachdem
das Auslösen
einer Interrupt-Routine in den Prozessor-Kernen aber einige Taktzyklen
benötigt,
kann durch die gezeigte Verbindung das Beschreiben verhindert werden,
wenn das Schattenregister entsprechend eingerichtet ist.
-
Die
Komparator/Paritätseinheit 126 enthält alle
Vergleichs- und
Paritäts-Schaltungen,
um insbesondere folgende Funktionen darzustellen:
- – Vergleicher
von Write Back Bus von Master und Checker, wobei die Daten über Leitung 114 zugeführt werden.
Nachdem dieser Bus zeitweise auf "hochohmig" geschalten ist, was einen Vergleich unmöglich macht,
muss diesem Komparator auch das Write Enable Signal aus dem Decoder
zur Verfügung
gestellt werden.
- – Parity-Generator
für das
Signal Instruction Address des Master sowie Vergleicher für Instruction
Address von Master und Checker, wobei die Daten über Leitung 110 zugeführt werden.
- – Parity-Generator
für die
Signale Data Address und Data Out des Master sowie Vergleicher für die Signale
Data Address und Data Out von Master und Checker, wobei die Daten über Leitung 112 zugeführt werden.
- – Vergleicher
für das
Signal PSW Out von Master und Checker, wobei die Daten über Leitung 115 zugeführt werden.
-
Wird
ein Fehler festgestellt, so wird im vorliegenden Beispiel eine Interrupt-Routine
in den CPUs gestartet, durch die die Daten aus dem Schattenregister 121, 122 in
die Register der beiden CPUs 101, 102 übertragen
werden. Kann beispielsweise das PSW in einer CPU nicht beschrieben
werden, kann das PSW bzw. dessen Bits durch eine entsprechende Software-Routine
in der Interrupt-Routine gesetzt werden. (Beispielsweise kann eine
Addition mit Überlauf
durchgeführt
werden, wenn das Überlauf-Flag gesetzt
werden muss). Anschließend
können
beide CPUs 101, 102 mit korrektem Registerinhalt
weiterarbeiten.
-
In
der gezeigten Ausführungsform
weist die erfindungsgemäße Vorrichtung 120 auch
den Befehlsdecoder 123 auf, um die Befehle zu erkennen, die
das Registerfile beschreiben. Der Befehlsdecoder generiert für diese
Befehle die Adresse für
die zu adressierenden Register des Registerfiles sowie das Write-Signal.
Am Eingang erhält
der Decoder die um einen Takt verzögerte Instruktion und gibt
am Ausgang Adressen und das Write-Signal für das Registerfile 121 aus.
Für die
Taktverzögerung
um einen Takt ist eine Einheit 124 vorgesehen.
-
Nach
dem Vergleich wird das Signal Instruction Address durch eine weitere
Taktverzögerungseinheit 125 um
zwei Takte verzögert
an das Registerfile 121 geführt. (Wie in 3 detaillierter
gezeigt, wird die Instruction Address ein weiteres Mal zusätzlich auch
um einen Takt verzögert
auf das Registerfile geführt,
da im Falle eines Interrupts die Instruktionsadresse aus einer anderen
Pipelinestufe abgespeichert werden muss als bei einem Sprung. Dabei
handelt es sich allerdings um prozessorspezifische Details, die
mit der Recovery-Vorrichtung direkt nicht zusammenhängen.) Das
Registerfile speichert im Fall eines Sprungbefehls die derzeitige
Instruktionsadresse ab. Die Instruktionsadresse wird innerhalb des
Prozessors durch die Pipelines geführt. Man könnte die Sprungadresse auch
durch das Herausführen
eines weiteren Busses aus der CPU beschaffen, durch die vorgestellte
externe Weiterführung können aber
die Eingriffe in die Cores minimiert werden.
-
Über die
Leitung 116 wird das Signal Error Out an den Eingang Interrupt
In von Master und Checker bereitgestellt. Error Out wird aktiv,
wenn die Komparator/Paritätseinheit 126 der
Recovery-Erweiterung 120 eine Abweichung zwischen Master
und Checker feststellt.
-
In 3 ist
der innere Aufbau des Dual-Core-Prozessor-Systems aus 1 schematisch
dargestellt. Aus Übersichtsgründen wurde
der Taktversatz zwischen den beiden CPUs auch in diesem Blockschaltbild
weggelassen. In dieser Abbildung sind Master 101 und Checker 102 getrennt
dargestellt, woraus ebenfalls die getrennte Darstellung der Leitungen 110 bis 117 folgt.
Die Leitung 112 ist doppelt ausgeführt, was die beiden Signale
Data Address und Data Out repräsentieren
soll.
-
Zwischen
den Kernen des Masters und des Checkers sind die Einheiten der Recovery-Vorrichtung,
nämlich
Registerfile 121, PSW-Register 122, Decoder 123,
Taktverzögerungseinheiten 124, 125 und
Komparator/Paritätseinheit 126 sowie
der Befehlsspeicher 130 und der Datenspeicher 140 dargestellt.
Die Untereinheiten 126a, 126b, 126c der
Komparator/Paritätseinheit 126 sind
in der Darstellung räumlich
getrennt.
-
In 4 ist
ein Dual-Core-Prozessor-System schematisch gezeigt, für das eine
bevorzugte Ausgestaltung der erfindungsgemäßen Vorrichtung vorgesehen
sein kann. Dieses Blockschaltbild zeigt ein rekonfigurierbares System,
bei dem zwischen einem Performanz-Modus und einem Sicherheits-Modus umgeschaltet
werden kann.
-
Um
die Anforderung nach hoher Rechenperformanz oder Sicherheit zu gewährleisten,
muss das rekonfigurierbare Zweiprozessorsystem im Betrieb zwischen
den beiden Modi umschaltbar sein. Im Sicherheitsmodus, der bei der
Abarbeitung von sicherheitsrelevanten Programmcode verwendet wird,
arbeitet das System im klassischen Master/Checker Modus, wobei eine
Ausgestaltung der erfindungsgemäßen Vorrichtung
verwendet wird.
-
Im
Performanzmodus arbeitet das System wie ein Zweiprozessorsystem,
wobei es insbesondere die Performanz eines herkömmlichen Zweiprozessorsystems
aufweist.
-
Das
Umschalten zwischen den beiden Modi erfolgt durch das Betriebssystem
durch eine spezielle Instruktion, dem Mode-Switch Befehl. Diese Instruktion wird
vorzugsweise außerhalb
des Prozessors durch eine prozessorexterne Einheit detektiert und
in einen NoOperation Befehl gewandelt, bevor sie an den Prozessor
weitergegeben wird. Damit wird ein Eingriff in die Befehlsdecoder
der beiden Prozessoren vermieden.
-
Im
Sicherheits-Modus arbeitete das System entsprechend den 1 bis 3,
wobei beide Cores das gleiche Programm abarbeiten. Da manche Komponenten
nur einfach vorhanden sind (z.B. Busse, Taktleitung und Versorgungsspannung),
sollten diese speziell abgesichert werden. Um das System zusätzlich gegen
Common Cause Fehler wie EMV oder Spannungsspitzen auf der Versorgungsspannung
abzusichern, können
die beiden Prozessoren in diesem Modus mit einem Taktversatz arbeiten.
-
Im
Performanz-Modus arbeiten die CPUs verschiedene Programme bzw. Programmteile
oder Tasks ab und erreichen so eine höhere Performanz und Rechenleistung
als eine einzelne CPU. Jede CPU kann den Instruktions- bzw. Befehlsspeicher, den
Datenspeicher und die Peripherie ansteuern. Daher muss der Takt
dieser Komponenten und der CPUs im Performanzmodus phasengleich
sein. Erfolgt keine Taktumschaltung einer CPU bei der Umschaltung
vom Sicherheitsmodus in den Performanzmodus, so müsste dieser
im Performanzmodus bei jedem Zugriff auf die Peripherie einen Wartetakt
einlegen, bis er die Daten erhält.
Da dies eine hohe Performanzeinbuße mit sich bringt, wird der
Takt dieser CPU für
den Performanzmodus auf die Phasenpolarität des Mastertaktes umgeschaltet.
Dazu muss der Taktversatz im Performanzmodus ausgeschaltet werden.
-
Da
nun beide CPUs auf die Peripherie zugreifen können, müssen in diesem Modus die Zugriffe
durch spezielle Einheiten (Instruktions-RAM Control-Einheit, Daten-RAM
Control-Einheit) verwaltet werden. Da Speicherzugriffe auf den Instruktionsspeicher
in jedem Takt nun durch beide CPUs erfolgen können, müssen diese Zugriffe durch je
einen Instruktionscache pro CPU entkoppelt werden, damit der Instruktionsspeicher
nicht zum leistungsbegrenzenden Faktor wird. In der gezeigten Implementierung greifen
die Cache-Controller
mit Hilfe eines Burst-Zugriffes von vier Instruktionen auf den Instruktionsspeicher
zu. Jedoch ist es nicht notwendig, die Datenzugriffe der beiden
CPUs auf den Datenspeicher durch einen Cache ebenfalls zu entkoppeln,
da z.B. bei Automobilanwendungen nur jede 10. Instruktion ein Datenspeicherzugriff
ist. Wenn sich diese Verteilung ändert,
kann ein Datencache für
jede CPU vorgesehen werden. Zusammengefasst handelt es sich folglich um
eine Erweiterung eines Systems, das eine Recovery-Funktionalität besitzt,
um eine Perfomanz-Funktionalität.
-
Modusumschaltung:
-
Im
Sicherheitsmodus arbeiten die beiden CPUs die gleichen Befehle ab
und verhalten sich identisch. Dazu müssen die internen Zustände der beiden
CPUs, d.h. die Daten in den Registern und den Instruktionscaches,
identisch sein. Im Performanzmodus arbeiten die beiden CPUs jedoch
verschiedene Befehle ab und somit sind auch die internen Prozessorzustände unterschiedlich.
Daher müssen
die Daten in den beiden CPUs und in den Instruktionscaches vor einem
Umschalten vom Performanz- in den Sicherheitsmodus synchronisiert
werden.
-
Eine
wichtige Voraussetzung für
die Modusumschaltung des umschaltbaren Zweiprozessorsystems ist,
dass das Betriebssystem die beiden gleichartigen CPUs unterscheiden
kann. Dazu muss jede CPU eine zugeordnete ID aufweisen. Dazu ist ein
einzelnes Bit ausreichend. Im Sicherheitsmodus darf dieses Bit nicht überprüft werden,
da sonst der Komparator einen Fehler signalisieren würde.
-
Weiterhin
ist zur Umschaltung des Zweiprozessorsystems zwischen den beiden
Modi ein Befehl erforderlich. Durch Aufruf des Befehls wird der
Moduswechsel eingeleitet. Die Umschaltung vom Performanzmodus in
den Sicherheitsmodus wird vorteilhafterweise in den Time Tables
für beide
CPUs abgelegt. Meist wird eine CPU die Modusumschaltung zuerst beginnen.
Diese startet den Moduswechsel und teilt der zweiten CPU gleichzeitig
durch einen Interrupt mit, dass diese ebenfalls den Modus wechseln soll.
-
Zusätzlich sollte
gewährleistet
sein, dass im Performanzmodus jede CPU die Möglichkeit hat, mindestens zwei
atomare Zugriffe auf den Datenspeicher auszuführen. Diese nicht unterbrechbaren Speicherzugriffe
sind zur Synchronisation der gemeinsam benutzten Daten beider Prozessoren
oder auch zur Tasksynchronisation notwendig. Um im Performanzmodus
die Datenkonsistenz zu gewährleisten,
ist es notwendig, dass eine CPU die Möglichkeit hat, einen Wert aus
dem Datenspeicher auszulesen und anschließend ohne eine Unterbrechung
durch eine andere CPU diesen Wert modifiziert zurückzuschreiben.
Dies wird insbesondere dadurch gewährleistet, dass, sobald auf
einen bestimmten Speicherbereich zugegriffen wird, Datenspeicherzugriffe
für andere
CPUs durch das Anlegen eines Wait-Kommandos unterbunden werden.
Die CPU kann durch einen weiteren Datenspeicherzugriff auf die reservierte
Adresse den Datenspeicher wieder für andere CPUs freigeben. Durch
die Möglichkeit,
den Speicherzugriff für
andere CPUs zu unterbinden, können in
Software Techniken implementiert werden, um den Datenzugriff auf
gemeinsam genutzte Speicher zu ermöglichen, oder die CPUs können sich
durch "Semaphore" gegenseitig bei
der Abarbeitung von Tasks synchronisieren (nicht zu verwechseln
mit der Synchronisation mit der in den Sicherheitsmodus gewechselt
werden kann).
-
Die
Umschaltmittel zum Umschalten zwischen den Modi sind somit als Mode-Switch
Einheit 407 ausgebildet. Der Einsatz der Recovery-Vorrichtung
ist nur im Sicherheits-Modus vorgesehen. Daher ist es zweckmäßig ein
Core Mode Signal, das die Mode-Switch Einheit ausgibt, an die Recovery-Vorrichtung zu führen. Damit
einhergehend kann die Recovery-Vorrichtung durch das Core Mode Signal
ein- und ausschaltbar ausgebildet sein. Dabei kann ebenso vorgesehen
sein, die Recovery-Vorrichtung im Performanz-Modus z.B. durch ein
Clock Enable Signal komplett abzuschalten, um den Stromverbrauch zu
verringern.
-
In 4 ist
ein Dual-Core-Prozessor-System, für das eine bevorzugte Ausgestaltung
der erfindungsgemäßen Vorrichtung
vorgesehen sein kann, insgesamt mit 400 bezeichnet. Das
System weist zwei CPUs, Master 101 und Checker 102,
Befehlsspeicher 130 und Datenspeicher 140 auf.
Die Speicher sind nicht dupliziert, sondern sind als sichere Speicher
ausgeführt,
wie weiter oben erläutert
wurde. Sie können
auch dupliziert ausgeführt
werden.
-
Mit 401 ist
eine Instruktionsspeicher-Steuereinheit (ICU) bezeichnet. Die ICU
verwaltet alle Zugriffe der beiden CPUs 101, 102 auf
den gemeinsamen Befehlsspeicher 130. Im Sicherheitsmodus
darf nur der Master 101 im Falle eines Cache Miss Befehle
aus dem Befehlsspeicher anfordern. Die ICU lädt dann nicht nur den einen
Befehl nach, sondern führt vorzugsweise
einen Burstzugriff aus, um die Cachezeile in einem Stück nachzuladen.
Dabei erhält
ein Instruktionscache 402 des Masters 101 die
Instruktionen direkt, während
ein Instruktionscache 403 des Checker 102 die
Instruktionen um einen vorgesehenen Taktversatz später erhält.
-
Da
im Performanzmodus die beiden CPUs gleichzeitig vom Instruktionsspeicher 130 Befehle anfordern
können,
muss die ICU-Einheit 401 eine Priorisierung der Zugriffe
vornehmen. Normalerweise hat der Master die höhere Priorität. Um den
Checker jedoch im ungünstigsten
Fall nicht total auszubremsen, hat der Checker die höhere Priorität, wenn
im Taktzyklus davor der Master den Zugriff auf den Befehlsspeicher 130 hatte.
-
Mit 404 ist
eine Datenspeicher-Steuereinheit (DCU) bezeichnet. Die DCU 404 verwaltet
die Zugriffe der beiden CPUs auf den Datenspeicher 140 und die
Peripherie. Zusätzlich
muss sie noch ein individuelles Prozessoridentifikationsbit bereitstellen.
Anhand dieses Bits können
im Performanzmodus die beiden CPUs vom Betriebssystem unterschieden werden.
Dieses Bit kann durch einen Lesezugriff auf eine bestimmte Speicheradresse
ausgelesen werden. Während
die Adresse für
beide CPUs gleich ist, erhält
beispielsweise der Master eine 0 zurück während der Checker eine 1 erhält. Sind
mehr als zwei CPUs vorgesehen, müssen
entsprechend mehr Bits verwendet werden.
-
Im
Sicherheitsmodus werden alle Zugriffe auf den Datenspeicher und
die Peripherie durch den Master ausgeführt, während Anfragen vom Checker nur
für den
für die
Fehlererkennung notwendigen Vergleich verwendet werden. Die ausgelesenen
Daten werden direkt zum Master geführt und mit einem evtl. vorgesehenen
Taktversatz, z.B. 1,5 Takte, zum Checker.
-
Im
Performanzmodus muss die DCU 404 die gleichzeitigen Zugriffe
der beiden CPUs zum Datenspeicher 140 und zu der Peripherie
auflösen.
Grundsätzlich
erfolgt die gleiche Priorisierung wie bei der ICU 401.
Zusätzlich
ist noch ein Semaphormechanismus implementiert, um ein Sperren des
Datenspeichers für
die andere CPU zu ermöglichen
(ähnlich
zu dem MESI-Protokoll): Eine CPU kann den Datenspeicher sperren,
so dass sie exklusiven Zugriff darauf hat. Während dieser Zeit werden die
Zugriffe anderer CPUs durch die DCU gesperrt, bis die erste CPU
den Speicher wieder frei gibt. Das Sperren und Freigeben erfolgt
durch einen Lesezugriff auf eine bestimmte Speicheradresse (FBFF=64511
in dieser Implementierung), den die DCU erkennen kann. Die Priorisierung
ist gleich wie bei den Datenspeicherzugriffen. Bei einem gleichzeitigen
Sperrwunsch von beiden CPUs erhält
der Master zuerst die exklusiven Zugriffsrechte. Die Implementierung
des Speichersperrmechanismus erfolgt in der DCU, um Standardprozessoren
verwenden zu können.
-
Die
Funktionalität
des Speichersperrmechanismus besteht aus 6 Zuständen:
- – corel_access:
Speicherzugriff von Master. Falls der Master den Speicher sperren
möchte,
kann er das in diesem Zustand vornehmen.
- – core_2
access: Speicherzugriff von Checker. Falls der Checker den Speicher
sperren möchte, kann
er dass in diesem Zustand vornehmen.
- – core1_locked:
Master 1 hat den Datenspeicher gesperrt. Er hat exklusiven Zugriff
auf den Datenspeicher und die Peripherie. Möchte in diesem Zustand der
Checker auf den Speicher zugreifen, so wird er durch das Signal
wait2 angehalten, bis der Master den Datenspeicher wieder freigegeben
hat.
- – core2_locked:
Checker hat den Datenspeicher exklusiv für sich reserviert. Nun wird
der Master bei Datenspeicheroperationen durch das Signal wait1 angehalten.
- – lock1_wait:
Der Datenspeicher war durch den Checker gesperrt als der Master
ihn ebenfalls für sich
reservieren wollte. Der Master ist somit für die nächste Speichersperrung vorgemerkt.
- – lock2_wait:
Datenspeicher war durch den Master gesperrt. Der Checker bekommt
den Speicher vorreserviert.
-
Mit 405 und 406 sind
Mode-Switch Detect Einheiten bezeichnet. Die Mode-Switch Detect
Einheiten sitzen jeweils zwischen dem Instruktionscache 402 bzw. 403 und
der CPU und beobachten den Befehlsbus. Sobald sie die mode-switch
Instruktion bemerken, teilen sie dies einer Mode-Switch Einheit 407 mit.
Diese Funktionalität
könnte
ebenso durch den Befehlsdecoder der beiden Prozessoren erfolgen.
Da aber hier Standardprozessoren ohne eine interne Änderung
verwendet werden sollen, wird dies extern implementiert. Nachteilig
ist, dass der Befehl erkannt wird, sobald er aus dem Speicher ausgelesen
wird. Ist nun im Programmablauf davor ein Sprungbefehl, ist der
Umschaltbefehl trotzdem aktiv, obwohl er eigentlich in der Pipeline
aufgrund des Sprunges gelöscht
werden würde.
Somit würde
das System fehlerhaft den Modus wechseln. Dieses Problem kann jedoch
gelöst
werden, indem die Instruktionen durch den Compiler so umgeordnet
werden, dass vor der mode-switch Instruktion kein Sprungbefehl steht.
Der notwendige Abstand zwischen dem Sprungbefehl und dem mode-switch
Befehl ist abhängig
von der Anzahl der Pipelinestufen der verwendeten CPUs.
-
Wie
bereits erwähnt,
erfolgt die Modusumschaltung durch die Software. Die dazu nötige Hardwareunterstützung ist
in der Mode-Switch Einheit
407 implementiert. Der folgende
Programmauszug stellt beispielsweise die Umschaltung vom Sicherheits-
in den Performanzmodus dar:
-
In
Zeile (1) wird in das Register r1 die Adresse geladen, an der die
DCU das Prozessor Id-Bit ausgibt. Als nächstes (2) wird der mode-switch
Befehl ausgeführt.
Da die beiden Prozessoren im Sicherheitsmodus in diesem Beispiel
mit einem Taktversatz von 1,5 Takten arbeiten, erkennt die Mode-Switch Detect
Einheit des Masters zuerst den Umschaltbefehl. Dies teilt sie durch
das Signal corel_signal der Mode-Switch Einheit mit, die als Folge
den Checker durch das Signal wait1 anhält. 1,5 Takte später erkennt
die Mode-Switch Detect Einheit des Chekcers ebenfalls den Umschaltbefehl.
Die Mode-Switch Einheit hält
anschließend
den Checker für
einen halben Takt an, um die Taktsignale der beiden CPUs bezüglich der
Phase zu synchronisieren. Schließlich wird das Modussignal
vom Sicherheitsmodus auf den Performanzmodus umgeschaltet und die
wait-Signale werden weggenommen. Die beiden CPUs arbeiten nun mit
identischen Taktsignalen weiter. Im Schritt (3) laden nun die beiden
CPUs ihr Prozessoridentifikationsbit aus der DCU. Dann wird (4) überprüft ob das Bit
auf 0 oder 1 gesetzt ist und es wird ein bedingter Sprung von Checker
ausgeführt
(5), da sein CoreId-Bit 1 ist. Der Master führt keinen Sprung aus, sondern
arbeitet an dieser Programmposition weiter, da sein Core-Id-Bit
0 ist. Somit ist der Programmablauf der beiden CPUs – wie gewünscht – getrennt. Beim
Umschalten von Performanz- auf Sicherheits-Modus wird zunächst die
Recovery-Vorrichtung über
das Core Mode Signal aktiviert. Anschließend wird der Cache geleert
(geflusht) um zu verhindern, dass Datenreste in die Recovery-Vorrichtung übernommen
werden. Dann werden über
eine Softwareroutine die Registerinhalte der beiden Prozessoren angepasst,
was zugleich auch die Schattenregister in der Recovery-Vorrichtung beschreibt.
Daher sind bis auf den Cache-Flush keine Softwareanpassungen für die Recovery-Vorrichtung notwendig.
Durch Einbau von Registerstufen zwischen den einzelnen Prozessoren
sowie vor bestimmten Eingangssignalen ist es möglich, die Prozessoren im Taktversatz
zu betreiben, was zur Eindämmung
von Common-Mode-Fehlern dient.
-
Zusätzlich können, wie
anhand 5 erläutert, mehrere Taktgeber (Clock)
(Quarze) für
die einzelnen Prozessoren verwendet werden. 5a und 5b werden
zusammen als 5 bezeichnet. In 5a ist
ein Beispiel für
drei Taktgeber, in 5b für zwei Taktgeber gezeigt. In 5 wird aus Gründen der Übersicht nur der Aufbau betreffend
das Registerfile 121 gezeigt. Der Aufbau betreffend das PSW-Register
unterscheidet sich davon nicht.
-
Von
Master 101 und Checker 102 werden, wie beschrieben, über die
Leitungen 110, 112, 114 und 115 Daten
der Recovery-Vorrichtung 120 bereitgestellt. Bei der Ausgestaltung
gemäß 5 sind für Master 101 und Checker 102 separate
Taktgeber 203 und 204 vorgesehen. Es ist ebenso
denkbar, dass diese Taktgeber in die Cores integriert ausgebildet sind.
In diesem Fall muss das Taktgeber-Signal (clk) herausgeführt werden.
Die beiden Prozessoren arbeiten nun nicht mehr synchron. Daher sollte
beim Schreiben auf die Recovery-Vorrichtung darauf geachtet werden,
dass die beiden CPUs nicht zu weit auseinanderlaufen (d.h. der Taktversatz
darf nicht zu groß werden).
Dazu werden vorzugsweise von den Core-Taktgebern 203, 204 getriebene
FIFO-Pufferstufen 201, 202 (First In First Out)
vor die Komparator/Paritätseinheit 126 eingefügt, die
die eingehenden Signale puffern. Sobald die CPUs 101, 102 zu weit
auseinanderlaufen, kann der schnellere bspw. über ein wait Signal angehalten
werden, bis sie wieder taktsynchron laufen.
-
Bei
der Ausgestaltung gemäß 5a werden
das Schattenregisterfile 121 sowie das PSW-Register 122 (nicht
gezeigt) mit einem separaten Taktgeber 205 getaktet.
-
Bei
der Ausgestaltung gemäß 5b werden
das Schattenregisterfile 121 sowie das PSW-Register 122 (nicht
gezeigt) von den Core-Taktgebern 203, 204 getaktet.
In diesem Fall muss das Registerfile asynchron beschrieben werden.
Der Schreibvorgang wird dabei über
die Komparator/Paritätseinheit 126 gesteuert,
die jedes Mal, wenn zwei neue übereinstimmende
Datenwörter
anliegen, ein Schreibsignal absetzt. Falls die Datenwörter nicht übereinstimmen,
erzeugt die Komparator/Paritätseinheit
ein Fehlersignal über
die Leitung 116. Der Lesezugriff auf das Schattenregisterfile 121 erfolgt
auch in diesem Fall synchron über
die Taktgeber 203, 204 der einzelnen Cores 101, 102.
-
Es
versteht sich, dass die vorstehend erläuterten bevorzugten Ausführungsformen
des erfindungsgemäßen Verfahrens
nur beispielhaft zu verstehen sind. Daneben sind für einen
Fachmann weitere Lösungen
denkbar, ohne den Rahmen der vorliegenden Erfindung zu verlassen.