Die
Erfindung geht aus von einem Verfahren und einer Vorrichtung zur
Umschaltung zwischen wenigstens zwei Betriebsmodi eines Mikroprozessors mit
wenigstens zwei Ausführungseinheiten
zur Abarbeitung von Programmsegmenten gemäß den Oberbegriffen der unabhängigen Ansprüche.
Transiente
Fehler, ausgelöst
durch Alpha-Teilchen oder kosmische Strahlung, werden zunehmend
ein Problem für
integrierte Schaltungen. Durch abnehmende Strukturbreiten, sinkende
Spannungen und höhere
Taktfrequenzen nimmt die Wahrscheinlichkeit zu, dass eine Spannungsspitze,
hervorgerufen durch ein Alpha-Teilchen oder kosmische Strahlung,
einen logischen Wert in einer integrierten Schaltung verfälscht. Ein
falsches Berechnungsresultat kann die Folge sein. In sicherheitsrelevanten Systemen
müssen
daher solche Fehler zuverlässig detektiert
werden.
Bei
sicherheitsrelevanten Systemen, wie z.B. einem ABS-Regelsystem in
einem Kraftfahrzeug, in denen Fehlfunktionen der Elektronik sicher detektiert
werden müssen,
werden gerade bei den entsprechenden Steuereinrichtungen solcher
Systeme üblicherweise
Redundanzen zur Fehlererkennung vorgesehen. So ist beispielsweise
in bekannten ABS-Systemen jeweils der komplette Mikrocontroller dupliziert,
wobei die gesamten ABS-Funktionen redundant berechnet und auf Übereinstimmung
geprüft werden.
Tritt eine Diskrepanz der Ergebnisse auf, so wird das ABS-System
abgeschaltet.
Solche
Prozessoreinheiten sind auch als Dual-Core oder Multi-Core Architekturen
bekannt. Die verschiedenen Cores führen redundant und taktsynchron
das gleiche Programmsegment aus, die Ergebnisse der beiden Cores
werden verglichen. Ein Fehler wird bei dem Vergleich auf Übereinstimmung der
beiden Ergebnisse erkannt. Im Folgenden wird diese Konfiguration
als Vergleichsmodus bezeichnet.
Dual-Core
oder Multi-Core Architekturen werden in anderen Anwendungen auch
zur Leistungssteigerung, also zu einer Performanz-Steigerung eingesetzt.
Beide Cores führen
unterschiedliche Programmsegmente aus, wodurch sich eine Leistungssteigerung
im Vergleich zum Vergleichsmodus oder einem Single Core System erzielen
lässt.
Diese Konfiguration wird als Leistungsmodus oder Performanzmodus
bezeichnet. Dieses System wird auch in einer speziellen Ausprägung mit
gleichen Cores als ein symmetrisches Multiprozessorsystem (SMP)
bezeichnet.
Eine
Erweiterung dieser Systeme ist eine Umschaltung durch Software zwischen
diesen beiden Modi mittel eines Zugriffs auf eine spezielle Adresse
und spezialisierter Hardware-Vorrichtungen. Im
Vergleichsmodus werden die Ausgangsignale der Cores miteinander
verglichen. Im Performanzmodus arbeiten die beiden Cores als ein
symmetrisches Mehrprozessorsystem (SMP) und führen unterschiedliche Programme,
Programmsegmente oder Befehle aus.
Vorteile der
Erfindung
Bei
den im Stand der Technik beschriebenen Mikroprozessoren müssen vor
dem Umschalten vom Performanzmodus in den Vergleichmodus die internen
Zustände
(Register, Pipeline, etc.) der Ausführungseinheiten angeglichen
werden. Dies kann bei einer Ausführungseinheit
mit vielen Registern relativ viel Rechenzeit in Anspruch nehmen
und einen Moduswechsel vom Performanzmodus in den Vergleichsmodus
verlängern.
Das übliche
Verfahren für die
Angleichung der Zustände
der Ausführungseinheiten
besteht darin, alle Register in den Ausführungseinheiten auf den Wert
Null zu setzen oder deren Inhalt als ungültig zu markieren.
Aufgabe
dieser Erfindung ist es, diesen Wechsel vom Performanzmodus in den
Vergleichmodus zu verkürzen.
Die hier beschriebenen Ausführungsbeispiele
haben gegenüber
dem Stand der Technik den Vorteil, dass sie eine schnellere Umschaltung
vom Performanzmodus in den Vergleichsmodus ermöglichen, da die Register der
Ausführungseinheiten
je nach Modus an dem sie beteiligt ist durch Verwendung der erfindungsgemäßen Verfahren
schnell initialisiert werden können
Vorteilhaft
ist ein Verfahren zur Festlegung eines Startzustandes bei einem
Rechnersystem mit wenigstens zwei Ausführungseinheiten beschrieben, wobei
zwischen einem Performanzmodus und einem Vergleichsmodus umgeschaltet
wird und bei Umschaltung aus dem Performanzmodus in den Vergleichsmodus
eine erste Ausführungseinheit
einen Startzustand für
den Vergleichsmodus erzeugt dadurch gekennzeichnet, dass die zweite
Ausführungseinheit
zur Erzeugung des Startzustandes den erzeugten Startzustand der
ersten Ausführungseinheit übernimmt.
Vorteilhaft wird bei dem Startzustand wenigstens ein der jeweiligen
Ausführungseinheit
zugeordneter Speicher oder Speicherbereich mit wenigstens einem
vorgebbaren Wert belegt. Vorteilhaft wird der erzeugte Startzustand
der ersten Ausführungseinheit
in einen Speicher oder Speicherbereich kopiert und die zweite Ausführungseinheit
diesen erzeugten Startzustand aus diesem übernimmt. Vorteilhaft wird
der erzeugte Startzustand der ersten Ausführungseinheit von der zweiten
Ausführungseinheit über einen speziellen Kommunikationskanal übernommen.
Vorteilhaft ist eine Vorrichtung zur Festlegung eines Startzustandes
bei einem Rechnersystem mit wenigstens zwei Ausführungseinheiten beschrieben,
wobei Umschaltmittel und Vergleichsmittel enthalten sind und zwischen
einem Performanzmodus und einem Vergleichsmodus umgeschaltet wird
und bei Umschaltung aus dem Performanzmodus in den Vergleichsmodus
eine erste Ausführungseinheit
einen Startzustand für
den Vergleichsmodus erzeugt, dadurch gekennzeichnet, dass die Vorrichtung
derart ausgestaltet ist, dass ein Startzutand der ersten Ausführungseinheit
zur Verfügung
gestellt wird, so dass die zweite Ausführungseinheit zur Erzeugung
des Startzustandes den erzeugten Startzustand der ersten Ausführungseinheit übernimmt.
Vorteilhaft ist ein der jeweiligen Ausführungseinheit zugeordneter
Speicher oder Speicherbereich enthalten und die Vorrichtung derart
ausgestaltet ist, dass bei dem Startzustand dieser mit wenigstens
einem vorgebbaren Wert belegt wird. Vorteilhaft ist ein Speicher
oder Speicherbereich enthalten und der erzeugte Startzustand der
ersten Ausführungseinheit
in diesen Speicher oder Speicherbereich kopiert wird und die zweite
Ausführungseinheit
diesen erzeugten Startzustand aus diesem übernimmt. Vorteilhaft handelt es
sich bei dem wenigstens einen Speicher oder Speicherbereich um ein
Register. Vorteilhaft ist ein spezieller Kommunikationskanal enthalten
und die Vorrichtung derart ausgestaltet ist, dass der erzeugte Startzustand
der ersten Ausführungseinheit
von der zweiten Ausführungseinheit über diesen
speziellen Kommunikationskanal übernommen
wird.
Weitere
Vorteile und vorteilhafte Ausgestaltungen ergeben sich aus den Merkmalen
der Ansprüche
sowie der Beschreibung.
Figuren
1 zeigt
den allgemeinen Aufbau eines Prozessors mit zwei Ausführungseinheiten
und einen Vergleichseinheit.
2 zeigt
einen möglichen
Aufbau einer Ausführungseinheit
mit zwei unterschiedlichen Registergruppen und der Verarbeitungslogik.
3 zeigt
einen möglichen
Aufbau einer Ausführungseinheit
mit zwei unterschiedlichen Registersätzen und der Verarbeitungslogik.
Die Registersätze
sind ihrerseits noch mal in zwei unterschiedliche Gruppen unterteilt.
4 zeigt
zwei Ausführungseinheiten
mit ihren internen Registern, einen Zwischenspeicher und einer Verbindung
zwischen den Ausführungseinheiten
zur Übertragung
der internen Zustände.
5 zeigt
zwei Ausführungseinheiten
mit ihren internen Registern und einen Zwischenspeicher zum Auslesen
der internen Zustände
für den Startzustand
des Vergleichsmodus.
6 zeigt
den Aufbau eines Registers mit Nutz- und Steuerdaten.
7 zeigt
ein Multiprozessors mit zwei Ausführungseinheiten, sowie den
internen Registern der Ausführungseinheiten.
8 zeigt
ein Multiprozessorsystem mit zwei Ausführungseinheiten, deren intere
Register sowie einem speziellen Register
Beschreibung
der Ausführungsbeispiele
Manche
Einheiten in den Figuren besitzt dieselbe Nummer sind aber zusätzlich mit
a oder b gekennzeichnet. Wird mit der Nummer ohne den Zusatz a oder
b referenziert, so ist eine der vorhandenen Einheiten aber keine
spezielle Instanz gemeint. Wird nur eine bestimmte Instanz einer
Einheit referenziert wird immer die Kennung a oder b der Nummer
nachgestellt.
Als
Ausführungseinheit
kann im Folgenden dabei sowohl ein Prozessor, ein Core, eine CPU,
als auch eine FPU (Floating Point Unit), ein DSP (Digitaler Signalprozessor),
ein Coprozessor oder eine ALU (Arithmetic logical Unit) bezeichnet
werden.
In 1 ist
ein Prozessorsystem C1000 dargestellt, welches zwischen einem Vergleichsmodus und
einem Performanzmodus umschalten kann, bestehend aus zwei Ausführungseinheiten
C100a und C100b. In einem bevorzugten Ausführungsbeispiel sind die Ausführungseinheiten
identisch. Beide Ausführungseinheiten
C100a und C100b besitzen jeweils eine Schnittstelle C110a bzw. C110b
zum Systembus, über
den zum Beispiel der Zugriff auf Speichermedien wie z.B. RAM, ROM,
Flash oder auf Peripherieeinheiten erfolgt. Befindet sich das Prozessorsystem
C1000 im Vergleichsmodus werden die Ausgangssignale der Ausführungseinheiten
C100a, C100b über
die Einheit C120 miteinander verglichen. Vorzugsweise erfolgt dieser
Vergleich taktgenau oder mit einem festen Taktversatz, dies bedeutet,
dass in jedem Takt die Ausgangssignale der wenigstens zwei Ausführungseinheiten
C100a, C100b durch die Einheit C120 verglichen werden. Besteht ein
Unterschied zwischen den verglichenen Signalen, dann wird von der
Einheit C120 ein Fehlersignal generiert. Optional können auch
zusätzlich
die Eingangssignale der Ausführungseinheiten
C100a und C100b verglichen werden. Befindet sich das Prozessorsystem C1000
im Performanzmodus ist die Vergleichseinheit C120 nicht aktiv und
es wird bei Unterschieden in den Ausgangssignalen der Ausführungseinheiten
kein Fehlersignal generiert. Die Deaktivierung der Vergleichseinheit
kann auf verschiedene Weisen realisiert werden:
- Ein
Vergleich durch die Einheit C120 wird nicht durchgeführt.
- Es werden keine Signale zum Vergleich an die Einheit C120 angelegt.
- Ein Vergleich findet durch die Einheit C120 statt, das Ergebnis
wird aber ignoriert.
Bei
dem Wechsel vom Performanzmodus in den Vergleichsmodus muss sichergestellt
werden, dass der interne Zustand der beiden Ausführungseinheiten C100a und C100b
mit Beginn des Vergleichsmodus, also der Zeitpunkt zu dem der Vergleicher C120
aktiviert wird, identisch ist. Wir bezeichnen im Folgenden den Zustand
zu Beginn des Vergleichsmodus von dem ausgehend im Vergleichsmodus
die Berechnungen beginnen als Startzustand. Das die Zustände in den
Ausführungseinheiten
identisch sein müssen
ist notwendig damit im fehlerfreien Fall zu keinem Zeitpunkt im
Vergleichsmodus die durch C120 verglichenen Signale Unterschiede
aufweisen. Unterschiedliche Zustände
der Ausfürungseinheiten im
Vergleichsmodus werden in der Regel dazu führen, dass ein unterschiedliches
Ausgangssignal erzeugt wird. Diese unterschiedlichen Ausgangssignale
würde der
Vergleicher als Fehler detektieren, obwohl gleiche Eingangssignale
vorliegen und kein zu detektierender Fehler bei der Verarbeitung
aufgetreten ist.
Ein
Weg in beiden Ausführungseinheiten
den gleichen Zustand zu Beginn des Vergleichsmodus zu erreichen,
ist das Markieren aller internen Register in den Ausführüngseinheiten
als ungültig.
Diese Möglichkeit
der Markierung besteht aber nicht bei allen internen Registern.
Diese müssen
dann auf einen definierten Wert gesetzt werden, der in beiden Ausführungseinheiten
identisch ist.
In
einer ersten Ausführungsform,
dargestellt in 2, wird ein Umschalten zwischen
zwei Registersätzen
beschrieben. In 2 wird eine mögliche Implementierung
der Ausführungseinheit
C100 beschrieben. Sie enthält
mindestens zwei unterschiedliche Gruppen von Registern C101 und
C102 und eine interne Logik C103. Die Gruppe von Registern C101
kann als ungültig
markiert werden. Dies bedeutet, dass die interne Logik C103 der
Ausführungseinheit
beim Zugriff auf ein als ungültig
markiertes Register dieser Gruppe erkennt, dass der Inhalt für dieses
Register neu ermittelt werden muss; zum Beispiel durch Nachladen
aus dem RAM, ROM, Flash oder durch Neuberechnung. Register aus der
anderen Gruppe C102 haben immer einen gültigen Inhalt. Die Arbeitsregister
einer Ausführungseinheit
gehören beispielsweise
zu dieser Gruppe. Findet ein Wechsel vom Performanzmodus zum Vergleichsmodus
statt, müssen
diese Register aus C101 und C102 in beiden Ausführungseinheiten C100, wie schon
erwähnt, identisch
sein.
Diese
Bedingung für
die Registergruppe C101, C102 muss nicht unbedingt ab dem Zeitpunkt der
Umschaltung vom Performanzmodus in den Vergleichmodus gelten, aber
spätestens
beim ersten Lesezugriff auf zwei identische Register in den Ausführungseinheiten
C 100 nach der Umschaltung in den Vergleichsmodus. Ein übliches
Verfahren besteht darin, rechtzeitig vor oder nach der Umschaltung
in den Vergleichsmodus allen Registern der Gruppe C 102 einen festen
Wert zuzuweisen. Unabhängig
davon werden bei einer Umschaltung in den Vergleichsmodus Register
der Gruppe C101 als ungültig
markiert.
Ist
eine Ausführungseinheit
C100 wie in 3 gemäß C100c aufgebaut, kann dieser
Vorgang durch den Einsatz von zwei Registersätzen C101a, C102a und C101b,
C102b in jeder der Ausführungseinheiten
beschleunigt werden. Statt vor, während oder nach einer Umschaltung
die Register anzugleichen, werden im Performanzmodus und im Vergleichsmodus
unterschiedliche Register verwendet. Im Vergleichsmodus werden die
Register der Gruppe C101a und C102a verwendet, während im Performanzmodus die
Register der Gruppe C101b und C102b verwendet werden. Zwischen diesen
Registersätzen
wird zum Zeitpunkt der Umschaltung in den Vergleichsmodus oder in
den Performanzmodus umgeschaltet. Ist für die Register 101a und 102a
einmal sichergestellt, dass der Inhalt identisch ist, zum Bespiel
durch eine entsprechende Initialisierung bei Einschalten des Prozessors,
so bleiben diese Register auch während
des Betriebs auf beiden Ausführungseinheiten
gleich. Somit ist bei einer Umschaltung vom Performanzmodus in den
Vergleichsmodus keine Angleichung der Registerinhalte notwendig,
da im Vergleichsmodus immer nur auf Register zugegriffen wird, die
zwischen den beiden Ausführungseinheiten
C100a und C100b identisch sind und nur im Vergleichmodus beschrieben
werden können.
In
einer zweiten Ausführungsform,
dargestellt in 4, wird das kopieren des internen
Zustands einer Ausführungseinheit
auf die andere Ausführungseinheit
beschrieben. Eine weitere Möglichkeit
der Beschleunigung des Umschaltvorgangs vom Performanzmodus in den
Vergleichsmodus wird in 4 gezeigt. Sie besteht in dem
Kopieren des internen Zustands C104d resp. C104e von einer Ausführungseinheit
C100d, C100e zu der anderen Ausführungseinheit
C100d bzw. C100e. Im Betrieb wird bei einer Umschaltung vom Performanzmodus
in den Vergleichsmodus üblicherweise
eine Ausführungseinheit
zeitlich früher
für eine
Umschaltung bereit sein als die andere Ausführungseinheit. Werden die internen
Register einer Ausführungseinheit
(C104d bei C100d und C104e bei C100e), die zeitlich früher bereit
ist, vor der Umschaltung auf die Werte initialisiert, welche im
Vergleichsmodus benötigt
werden, so kann der interne Zustand einer zweiten, zeitlich nachfolgenden
Ausführungseinheit
angeglichen werden, indem der Zustand von der ersten Ausführungseinheit übernommen
wird.
Ist
zum Beispiel die Ausführungseinheit C100d
früher
bereit für
eine Umschaltung als die Ausführungseinheit
C100e so wird bei der Umschaltung der Zustand C104d nach C104e kopiert.
Dieses
Kopieren des internen Zustandes kann durchgeführt werden, indem direkt eine
Verbindung C300 zwischen den beiden Ausführungseinheiten genutzt wird, über die
der interne Zustand kopiert wird. Alternativ kann der Zustand von
einer ersten, zeitlich früheren
Ausführungseinheit
in einen (schnell angebundenen) Zwischenspeicher C200 kopiert werden,
aus dem eine zweite, zeitlich folgende Ausführungseinheit den Zustand in
die internen Register übernimmt.
In
einer weiteren Ausührungsform,
dargestellt in 5, wird die Initialisierung
der internen Zustände
für den
Vergleichmodus durch Kopieren der Registerinhalte aus einem Speicherbereich
mit einer schnellen Anbindung beschrieben. Es wird dabei vorausgesetzt,
dass zu Beginn des Performanzmodus der interne Zustand C104f C104g
der mindestens zwei Ausführungseinheiten
C100f C100g immer auf genau einen definierten Wert gesetzt werden.
Dieser Wert ist in einem Speicher C400 gespeichert, der eine möglichst
schnelle Anbindung an die Ausführungseinheiten
C100f C100g und damit an die Register C104f C104g hat. Dieser Speicher
ist vorzugsweise nichtflüchtig.
Es ist aber auch ein flüchtiger
Speicher möglich,
wenn der im Speicher gespeicherte Initialisierungszustand für den Performanzmodus
bei der Initialisierung des Multiprozessorsystems aus einem nichtflüchtigen
Speicher kopiert wird, von einer externen Datenquelle empfangen
wird oder vom Multiprozessorsystem generiert wird. Zur Umschaltung oder
bei der Umschaltung vom Performanzmodus in den Vergleichsmodus wird
der im Speicher C400 gespeicherte Initialisierungszustand für den Vergleichsmodus
in die Register C104f C104g der wenigstens zwei Ausführungseinheiten
C100f C100g, die im Vergleichsmodus betrieben werden sollen, geschrieben.
In
einer weiteren Ausführungsform
werden Teilzustände
markiert, die bei einer Umschaltung in den Vergleichsmodus zwischen
den Ausführungseinheiten
nicht angeglichen werden müssen.
Nicht immer ist es notwendig alle Register der Ausführungseinheiten
bei einer Umschaltung vom Performanzmodus in den Vergleichsmodus
anzugleichen. Damit im Vergleichsmodus nicht irtümlich auf eine Fehler erkannt
wird müssen
nur die Register einer Ausführungseinheit
mit den Registern einer zweiten Ausführungseinheit angeglichen werden,
die im Vergleichsmodus tatsächlich
benutzt werden. Vor allem bei Architekturen die ein grosse Anzahl
von Registern in den Ausführungseinheiten
vorsehen, ist dies der Fall bzw. kann bei der Softwareentwicklung
als Nebenbedingung berücksichtigt
werden. Die Anzahl der Register die in einem Vergleichsmodus benutzt
werden, kann auf jeden Fall bestimmt werden. Falls nun nicht alle
benutzt werden ist es nicht notwendig alle Register anzugleichen
sondern nur die verwendeten. Deswegen wird vorgeschlagen in jedem
Register zusätzliche
Bits vorzusehen. In diesen Bits kann kodiert werden, ob der Inhalt
dieses Registers mit den entsprechenden Registers der anderen Ausführungseinheiten
beim Umschalten von einem Performanzmodus in einen Vergleichsmodus
angeglichen werden soll oder nicht. Alternativ kann ein spezielles
Register existieren, dessen Inhalt deffiniert, welches Register einer
Ausführungseinheit
mit den entsprechenden Registern der anderen Ausführungseinheiten
angeglichen werden muss. Die Angleichung selbst kann unabhängig von
den Markierungen über
die bekannten oder hier vorgestellten Verfahren geschehen.
7 zeigt
ein Prozessorsystem C300 mit mehreren Ausführungseinheiten C310, C320
mit ihren Registern C311, C321. Jedes Register aus C311, C321 besteht
aus n Bits (n > 1)
mit Nutzdaten (dargestellt in 6 C2010).
Zusätzlich
zu jeden dieser n Bits kommen m Bits (m >= 1) mit Steuerdaten (dargestellt in 6 C2000).
In diesen m-Bits ist kodiert, ob beim Wechsel in den Vergleichsmodus
eine Angleichung stattfindet. Bestehen die Steuerbits im einfachsten
Fall nur aus einen Bit bedeutet zum Beispiel ein Wert von Null,
dass eine Angleichung nicht stattfinden muss und ein Wert von Eins,
dass eine Angleichung stattfinden muss. Die Auswertung dieser Bits geschieht
dann bei der Umschaltung vom Perfomanz in den Vergleichsmodus.
8 zeigt
eine weitere Ausführungsform der
Erfindung mit einem Prozessorsystem C400, welches Ausführungseinheiten
C410, C420 mit ihren Registern C411, C422 beinhaltet. Zusätzlich besitzt das
Prozessorsystem C400 ein Register C430. Der Inhalt dieses Registers
C430 definiert, welche Register aus C411, C421 der Ausführungseinheiten
C410, C420 bei einem Wechsel in den Vergleichsmodus angeglichen
werden müssen.
Zum Beispiel kann das Register C430 so realisiert werden, dass für jedes potentiell
anzugleichende Register aus C411, C421 ein Bit in C430 vorgesehen
ist. Ist das entsprechende Bit gesetzt muss das korrespondierende
Register angeglichen werden, ist das Bit nicht gesetzt muss das korrespondierende
Register nicht angeglichen werden. Die Auswertung dieses Registers
geschieht dann bei der Umschaltung vom Perfomanz in den Vergleichsmodus.
In einer weiteren Ausführungsform welche
nicht in einer Figur dargestellt ist, wird nicht ein zentrales Register C430,
wie in 8 dargestellt, vorgesehen, sondern es wird in
jeder Ausführungseinheit
ein Register vorgesehen, dass die Aufgabe des Registers C430 wahrnimmt.
Dies bedeutet in diesem Register wird kodiert welche der Register
der Ausführungseinheit
bei einer Umschaltung vom Performanzmodus in einen Vergleichsmodus
an die Register wenigstens einer zweiten Ausführungseinheit angepasst werden
müssen.
Bei einer Umschaltung vom einem Performanzmodus in einen Vergleichsmodus
muss dann allerdings sichergestellt werden, dass die Inhalte dieser
Spezialregister in allen zu synchronisierenden Ausführungseinheiten
identisch sind.