-
Die
vorliegende Erfindung bezieht sich allgemein auf das Erfassen von
Fehlern in Prozessoren und insbesondere auf ein Fehlererfassungsverfahren
und -system für
Prozessoren, das verriegelungsschrittweise betriebene gleichzeitige
Teilprozesse verwendet.
-
Siliziumvorrichtungen
(z. B. Mikroprozesschips) sind zunehmend anfällig für „weiche Fehler" (Soft-Error). Weiche
Fehler sind die Fehler, die durch kosmische Strahlen oder Auftreffen
von Alphateilchen bewirkt werden. Wenn diese Ereignisse auftreten,
bewirken sie, dass ein beliebiger Knoten in der Vorrichtung (z.
B. Mikroprozessor) den Zustand ändert.
Leider sind diese Fehler von der Art her flüchtig und können für den Rest des Systems sichtbar
sein oder nicht.
-
Viele
Mikroprozessorentwürfe
fügen Hardware
hinzu, um das Erfassen von „weichen
Fehlern" und das Korrigieren
der „weichen
Fehler", falls möglich, zu
unterstützen,
um die Zuverlässigkeit
zu erhöhen.
Verschiedene Techniken wurden verwendet, um diese „weichen
Fehler" zu erfassen.
Ein Beispiel einer solchen Technik ist das Hinzufügen von
Parität
zu Speicherstrukturen. Obwohl diese Techniken zum Schützen von
Speicherstrukturen wirksam sind, sind diese Techniken nicht sehr
wirksam zum Schützen
von Zufallssteuerlogik, Ausführungsdatenwegen
und Latches in der integrierten Schaltung vor „weichen Fehlern".
-
Eine
herkömmliche
Technik zum Schützen
von Zufallssteuerlogik und den entsprechenden Ausführungsdatenwegen
wird als „verriegelungsschrittweise
betriebene Kerne" oder „funktio nale
Redundanzprüfung" bezeichnet. Diese
Technik umfasst das Betreiben von zwei oder mehr Mikroprozessoren
in einem Verriegelungsschritt. Die beiden Mikroprozessoren arbeiten
als ein Master-Prüfer-Paar.
Da mehrere Mikroprozessoren den identischen Code ausführen, werden
die gleichen Ergebnisse erwartet. Wenn die Ergebnisse verglichen werden
und die Ergebnisse nicht gleich sind, wird ein Fehler aufgedeckt.
Die Ergebnisse des Master-Mikroprozessors und des Prüfer-Mikroprozessors werden
fortlaufend verglichen. Obwohl diese Technik beim Erfassen vieler
weicher Fehler effektiv ist, ist diese Lösung aufwendig, da mehrere
Verarbeitungselemente erforderlich sind, um die Prüfung durchzuführen.
-
Auf
der Basis des Vorhergehenden bleibt ein Bedarf für ein Verfahren und System
zum Erfassen weicher Fehler für
Prozessoren, das die Nachteile des Stands der Technik überwindet,
die vorher dargelegt wurden.
-
Es
ist die Aufgabe der vorliegenden Erfindung, einen Prozessor, ein
Verfahren zum Erfassen von Fehlern in einem Prozessor, ein Verfahren
zum selektiven Aktivieren eines Fehlererfassungsmechanismus und eine
Vorrichtung zum Ausführen
von Befehlen mit verbesserten Charakteristika zu schaffen.
-
Diese
Aufgabe wird durch einen Prozessor gemäß Anspruch 1, ein Verfahren
gemäß Anspruch
7 und 14 sowie eine Vorrichtung gemäß Anspruch 17 gelöst.
-
Gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung ist ein Prozessor beschrieben, der eine
In-Reihenfolge-Ausführungsarchitektur
zum Ausführen
von zumindest zwei Befehlen pro Zyklus (z. B. 2n Befehle werden
pro Zyklus verarbeitet, wobei n eine Ganzzahl größer oder gleich Eins ist) und
zumindest zwei symmetrische Ausführungseinheiten
umfasst. Der Prozessor umfasst eine Befehlsabrufeinheit zum Abrufen von
n Befehlen (wobei n eine Ganzzahl größer oder gleich Eins ist) und
einen Befehlsdecodierer zum Decodieren der n Befehle. Der Fehlererfassungsmechanismus
umfasst Duplizierungshardware zum Duplizieren der n Befehle in ein
erstes Bündel
von n Befehlen und ein zweites Bündel
von n Befehlen. Eine erste Ausführungseinheit
zum Ausführen
des ersten Bündels
von Befehlen in einem ersten Ausführungszyklus und eine zweite symmetrische
Ausführungseinheit
zum Ausführen
des Bündels
von Befehlen in dem ersten Ausführungszyklus sind
vorgesehen. Der Fehlererfassungsmechanismus umfasst auch Vergleichshardware
zum Vergleichen der Ergebnisse der ersten Ausführungseinheit und der Ergebnisse
der zweiten Ausführungseinheit.
Die Vergleichshardware kann eine Ausnahmeeinheit zum Erzeugen einer
Ausnahme (z. B. Aufdecken eines Fehlers) erzeugen, wenn die Ergebnisse
nicht die gleichen sind. Eine Festschreibeinheit ist vorgesehen
zum Festschreiben bzw. Empfehlen eines der Ergebnisse, wenn die
Ergebnisse die gleichen sind.
-
Andere
Merkmale und Vorteile der vorliegenden Erfindung werden von der
folgenden detaillierten Beschreibung offensichtlich werden.
-
Die
vorliegende Erfindung ist beispielhaft und nicht beschränkend in
den Figuren der beiliegenden Zeichnungen beschrieben, bei denen
gleiche Bezugszeichen ähnliche
Elemente bezeichnen.
-
Bevorzugte
Ausführungsbeispiele
der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf
beiliegende Zeichnungen näher
erläutert.
Es zeigen:
-
1A eine
Ausführungseinheitspipeline
gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung;
-
1B eine
Pipeline für
einen Prozessor, der die IA-64-Architektur
implementiert, in der der Fehlererfassungsmechanismus der Erfindung
implementiert sein kann;
-
2 ein
Blockdiagramm, das den Fehlererfassungsmechanismus gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung darstellt;
-
3 ein
Flussdiagramm, das die Schritte darstellt, die durch den Fehlererfassungsmechanismus
von 2 gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung durchgeführt werden;
-
4 ein
Blockdiagramm, das den Duplizierungsmechanismus von 2 gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung näher
darstellt;
-
5 ein
Zustandsdiagramm für
den Duplizierungsmechanismus von 4 gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung;
-
6 ein
Blockdiagramm, das den Vergleichsmechanismus von 2 gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung näher
darstellt;
-
7 in
näheren
Einzelheiten den Lasthandhabungsmechanismus gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung;
-
8 in
näheren
Einzelheiten den Speicherhandhabungsmechanismus gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung;
-
9 ein
Steuerregister für
die Verwendung beim Aktivieren des Fehlererfassungsmechanismus gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung;
-
10 einen
beispielhaften Softwarecodeabschnitt, der Befehle umfasst zum Aktivieren
und Deaktivieren des Fehlererfassungsmechanismus gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung; und
-
11 ein
Blockdiagramm hoher Ebene eines IA-64-Prozessors, in dem der Fehlererfassungsmechanismus
der Erfindung gemäß einem
Ausführungsbeispiel
der Erfindung implementiert sein kann.
-
Bei
der folgenden Beschreibung sind zu Erklärungszwecken zahlreiche spezifische
Einzelheiten dargelegt, um ein tiefes Verständnis der vorliegenden Erfindung
zu liefern. Für
einen Fachmann auf diesem Gebiet ist jedoch offensichtlich, dass
die vorliegende Erfindung ohne diese spezifischen Einzelheiten praktiziert
werden kann. In anderen Fällen
sind gut bekannte Strukturen und Vorrichtungen in Blockdiagrammform
gezeigt, um das unnötige
Undeutlichmachen der vorliegenden Erfindung zu vermeiden.
-
Das
System und Verfahren zum Erfassen von weichen Fehlern in Mikroprozessoren
können
in Hardware, Software, Firmware oder einer Kombination derselben
implementiert werden. Bei einem Ausführungsbeispiel ist die Erfindung
unter Verwendung von Hardware implementiert. Bei einem anderen Ausführungsbeispiel
ist die Erfindung unter Verwendung von Software implementiert, die
durch einen Universal- oder einen anwendungsspezifischen Prozessor
ausgeführt
wird.
-
Eine
Hardware-Implementierung kann eine oder mehrere der folgenden gut
bekannten Technologien umfassen: diskrete Logikschaltungen, die
Logikgatter zum Implementieren von Logikfunktionen auf Datensignale
hin umfassen, eine anwendungsspezifische integrierte Schaltung (ASIC),
ein programmierbares Gatterarray (PGA) und ein feldprogrammierbares
Gatterarray (FPGA).
-
Ausführungseinheitspipeline 110
-
11 stellt
ein Blockdiagramm hoher Ebene eines IA-64-Prozessors 1100 dar, bei dem
der Fehlererfassungsmechanismus der Erfindung gemäß einem
Ausführungsbeispiel
der Erfindung implementiert werden kann. 11 stellt
dar, wie Befehle durch den IA-64-Prozessor 1100 fließen und
liefert einen Zusammenhang für
die verbleibenden Figuren.
-
Befehle
werden von einem Befehlscache 1110 (der mit einem Speicher 1170 verbunden
ist) abgerufen. Bündel
von Befehlen 1112 fließen
von dem Befehlscache 1110 zu der Verteilerlogik 1120.
Sowohl der Befehlscache 1110 als auch die Verteilerlogik 1120 werden
durch die Befehlssteuerlogik 1130 gesteuert. Die Verteilerlogik 1120 sendet
dann die verschiedenen Befehle an eine Vielzahl von Ausführungseinheiten 1140 (z.
B. ALU 1142, FPU 1144, Speichereinheit 1146,
Verzweigungseinheit 1148), abhängig von dem Befehlstyp und anderen
Regeln.
-
Alle
die Ausführungseinheiten 1140 empfangen
und senden Werte an eine Registerdatei 1150. Die Speichereinheit 1146 kommuniziert
auch mit einem Speicherteilsystem 1170. Alle Ausführungseinheiten 1140 kommunizieren
auch mit der Ausnahmelogik 1160 (z. B. Kommunizieren von
Fehlern und Programmunterbrechungen). Beispielsweise können Mechanismen,
die für
einen Durchschnittsfachmann auf diesem Gebiet bekannt sind, zum
Signalisieren von Fehlern an die Ausnahmelogik 1160 verwendet
werden. Die Pipeline-Steuerlogik 1180, an die die Ausnahmelogik 1160 Informationen
liefert, steuert ferner den IA-64-Prozessor 1110. Der Fehlererfassungsmechanismus
gemäß der Erfindung
erfasst weiche Fehler und signalisiert diese Fehler an die Ausnahmelogik 1160.
Der Fehlererfassungsmechanismus gemäß der Erfindung kann in die
Verteilerlogik 1120 und in die verschiedenen Ausführungseinheiten
integriert werden, wie es nachfolgend näher beschrieben ist.
-
1A stellt
eine Ausnahmeeinheitspipeline 100 gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung dar. Die Ausführungseinheitspipeline 100 umfasst
eine Abrufstufe 110, eine Decodierstufe 120, eine Duplizierstufe 130,
eine Erstes-Bündel(B1)-Ausführen-Stufe 140,
eine Zweites-Bündel(B2)-Ausführen-Stufe 150 (die
parallel auftritt), eine Vergleichsstufe 160 und eine Festschreibstufe 170.
In der Abrufstufe 110 werden einer oder mehrere Befehle
(z. B. n Befehle, wobei n gleich oder größer als Eins ist) von dem Speicher
(der einen Befehlscache umfassen kann) abgerufen. In der Decodierstufe 120 werden
die abgerufenen Befehle decodiert. In der Duplizierstufe 130 werden
die n Befehle dupliziert.
-
In
der Erstes-Bündel(B1)-Ausführen-Stufe 140 wird
der erste Satz von n Befehlen (z. B. das erste Bündel von n Befehlen) durch
eine erste Ausführungseinheit
ausgeführt.
In der Zweites-Bündel-(B2)-Ausführen-Stufe 150 wird
der duplizierte Satz von n Befehlen (z. B. das zweite Bündel von
n Befehlen) durch eine zweite Ausführungseinheit ausgeführt, die
symmetrisch mit der ersten Ausführungseinheit
ist. Symmetrische Ausführungseinheiten
haben ähnliche
Verarbeitungsfähigkeiten
oder identische Verarbeitungsfähigkeiten.
-
In
der Vergleichsstufe 160 werden die Ergebnisse der ersten
Ausführungseinheit
und die Ergebnisse der zweiten Ausführungseinheit verglichen. Wenn
die Ergebnisse die gleichen sind, werden entweder die Ergebnisse
der ersten Ausführungseinheit
oder die Ergebnisse der zweiten Ausführungseinheit in der Festschreibstufe
(Zurückschreibstufe) 170 festgeschrieben
(z. B. zurück
in den Speicher oder eine Registerdatei geschrieben). Das Ergebnis
von der anderen Ausführung
wird gelöscht.
Wenn die Ergebnisse nicht die gleichen sind, wird ein Fehler oder
eine Ausnahme aufgedeckt. Der Fehler kann behebbar sein durch Räumen der Befehle
und Neuausführen
der Befehle in der Festschreibstufe 170, wenn der Fehler
erfasst wird, bevor die Ergebnisse festgeschrieben werden.
-
IA-64-Architektur
-
1B stellt
eine Pipeline-Ausführungseinheitspipeline 180 für einen
Prozessor dar, der die IA-64-Architektur implementiert, in der der
Fehlererfassungsmechanismus der Erfindung implementiert werden kann. Die
Ausführungseinheitspipeline 180 umfasst
die folgenden Stufen:
- IPG:
- Befehlszeiger erzeugen,
Befehlsadresse an den Befehlscache.
- ROT:
- Präsentieren von zwei Befehlsbündeln von
dem Befehlscache an die Verteilungshardware.
- EXP:
- Verteilen von bis
zu sechs Befehlssilben von den zwei Befehlsbündeln. Die EXP-Stufe der Pipeline kann
einen Befehlsverteilungsmechanismus 182 gemäß der Erfindung
zum Duplizieren eines Befehlsbündels
umfassen. Beispielsweise können
bei einem Ausführungsbeispiel
bis zu drei Befehle in dem ersten Bündel dupliziert werden, um
ein zweites Bündel
zu erzeugen, das identisch mit dem ersten Bündel ist. Das Bündel und
die Kopie des Bündels
werden dann anstatt zwei unterschiedlichen Befehlsbündeln an
die Ausführungseinheiten
verteilt.
- REN:
- Umbenennen (oder Umwandeln)
virtueller Register-IDs
zu physikalischen Register-IDs.
- REG:
- Registerdateiablesung
oder Ergebnissee im Lauf als Operanden umgeben.
- EXE:
- Ausführen von
Ganzzahlbefehlen; Erzeugen von Ergebnissen und Prädikaten
in mehreren Ausführungseinheiten.
- DET:
- Ausnahmen, Programmunterbrechungen
usw. erfassen.
Die DET-Stufe der Pipeline kann einen Vergleichsmechanismus 184 gemäß der Erfindung
umfassen, zum Vergleichen der Ergebnisse einer ersten Ganzzahlausführungseinheit
und der Ergebnisse einer zweiten Ganzzahlausführungseinheit.
- FP1-4:
- Ausführen von
Gleitpunktbefehlen; Erzeugen von Ergebnissen und Prädikaten.
Die
FP4-Stufe der Pipeline kann einen Vergleichsmechanismus 185 gemäß der Erfindung
umfassen, zum Vergleichen der Ergebnisse einer ersten Gleitpunktausführungseinheit
und der Ergebnisse einer zweiten Gleitpunktausführungseinheit.
- WRB:
- Zurückschreiben
von Ergebnissen in die Registerdatei (Architekturzustandsaktualisierung).
-
Fehlererfassungsmechanismus
-
2 ist
ein Blockdiagramm, das einen Prozessor 200 darstellt, der
den Fehlererfassungsmechanismus 240 gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung umfasst. Der Prozessor 200 umfasst eine
Befehlsabrufeinheit 204 zum Abrufen eines Befehls von dem
Speicher (z. B. einem Befehlscache 202) und einen Befehlsdecodierer 208 zum
Decodieren des Befehls.
-
Der
Prozessor 200 umfasst auch den Fehlererfassungsmechanismus
(EDM) 240 zum Erfassen weicher Fehler. Der Fehlererfassungsmechanismus 240 wird
selektiv durch ein Fehlererfassungsfreigabesignal 242 freigegeben.
Die Erzeugung und Steuerung des Fehlererfassungsfreigabe- (EDE-)
Signals 242 werden hierin nachfolgend näher beschrieben. Wenn er aktiviert
ist, führt
der Fehlererfassungsmechanismus 240 die Duplizierung und
den Vergleich durch, wie es hierin beschrieben ist. Wenn der Fehlererfassungsmechanismus 240 nicht
freigegeben ist, arbeitet der Prozessor auf die normale Weise, ohne
auf weiche Fehler zu prüfen.
-
Der
Fehlererfassungsmechanismus 240 umfasst eine Befehlsverteilungseinheit 241 und
einen Vergleichsmechanismus 248. Die Befehlsverteilungseinheit 241 umfasst
einen Duplizierungsmechanismus 244 zum Duplizieren von
Befehlen (z. B. Erzeugen eines ersten Bündels (B1) 260 von
n Befehlen und eines zweiten Bündels
(B2) 262 von n identischen Befehlen). Eine beispielhafte
Implementierung des Duplizierungsmechanismus 244 ist hierin
nachfolgend mit Bezugnahme auf 4 und 5 näher beschrieben.
-
Der
Prozessor 200 umfaßt
auch eine erste Ausführungseinheit
(FEU) 210 zum Ausführen
des ersten Bündels
(B1) 260 von n Befehlen in einem ersten Ausführungszyklus
und eine zweite Ausführungseinheit (SEU) 212 zum
Ausführen
des zweiten Bündels
(B2) 262 von n Befehlen in dem ersten Ausführungszyklus.
-
Die
erste Ausführungseinheit
(FEU) 210 und die zweite Ausführungseinheit (SEU) 212 können folgendes
umfassen, sind aber nicht darauf beschränkt: eine Gleitpunkteinheit,
eine Ganzzahleinheit, eine Arithmetik-Logik-Einheit (ALU), eine
Multimediaeinheit und eine Verzweigungseinheit. Es wird angemerkt,
dass eine Implementierung (Mikroarchitektur) mit einer geraden Anzahl
von Ausführungseinheiten
oder identischen Fähigkeiten
(die hierin nachfolgend als symmetrische Ausführungseinheiten bezeichnet
werden) den Fehlererfassungsmechanismus gemäß der Erfindung unterstützt.
-
Der
Fehlererfassungsmechanismus 240 umfasst auch einen Vergleichsmechanismus 248 zum
Vergleichen der Ergebnisse der ersten Ausführungseinheit (Ergebnisse_FEU) 270 und
der Ergebnisse der zweiten Ausführungseinheit
(Ergebnisse SEU) 272. Der Vergleichsmechanismus 248 umfasst
eine Ausnahme einheit 249 zum Erzeugen einer Ausnahme 274 (z.
B. Aufdecken eines Fehlers), wenn die Ergebnisse nicht die gleichen
sind. Eine beispielhafte Implementierung des Vergleichsmechanismus 248 wird
hierin nachfolgend mit Bezugnahme auf 6 näher beschrieben.
-
Der
Prozessor 200 umfasst auch eine Festschreibeinheit 214 zum
Festschreiben von einem der Ergebnisse, wenn die Ergebnisse der
ersten Ausführungseinheit
die gleichen sind wie die Ergebnisse der zweiten Ausführungseinheit.
-
Verarbeitungsschritte,
die durch den Fehlererfassungsmechanismus 240 durchgeführt werden
-
3 ist
ein Flussdiagramm, das die Schritte darstellt, die durch den Fehlererfassungsmechanismus von 2 gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung durchgeführt werden. Bei Schritt 304 werden
n Befehle abgerufen, wobei n eine Ganzzahl gleich oder größer als
Eins ist. Diese n Befehle werden hierin als ein Bündel bezeichnet.
Bei Schritt 308 werden die n Befehle decodiert. Bei dem
Entscheidungsblock 310 wird eine Bestimmung durchgeführt, ob
der Fehlererfassungsmechanismus gemäß der Erfindung freigegeben
ist. Beispielsweise kann der Fehlererfassungsmechanismus freigegeben
sein durch Aktivieren des Fehlererfassungsfreigabe- (EDE-) signals 242.
Wenn der Fehlererfassungsmechanismus freigegeben ist, schreitet die
Verarbeitung zu Schritt 314 fort. Andernfalls, wenn der
Fehlererfassungsmechanismus nicht freigegeben ist, schreitet die
Verarbeitung zu Schritt 311 fort, wo die Befehle ausgeführt werden.
-
Bei
Schritt 314 werden die n Befehle in ein erstes Bündel 260 von
n Befehlen und ein zweites Bündel 262 von
n Befehlen dupliziert, wenn der Fehlererfassungsmechanismus 240 freigegeben
ist.
-
Bei
Schritt 318 wird das erste Bündel 260 von n Befehlen
an eine erste Ausführungseinheit 210 ausgegeben,
für die
Ausführung
in einem ersten Ausführungszyklus.
Bei Schritt 324 wird das zweite Bündel 262 von n Befehlen
(z. B. duplizierte Befehle) an die zweite Ausführungseinheit 212 ausgegeben,
für die
Ausführung
in dem ersten Ausführungszyklus.
Bei diesem Ausführungsbeispiel
hat der Prozessor eine Architektur, die zwei Bündel von jeweils drei Befehlen
pro Zyklus ausführen
kann. Auf diese Weise können
das erste Bündel 260 von
n Befehlen und das zweite Bündel 262 von
n Befehlen parallel durch zwei unterschiedliche Sätze, aber symmetrische
Ausführungseinheiten
ausgeführt
werden. Falls ein Bündel
mehr als einen Befehl enthält,
wird das Bündel
an mehr als einer Ausführungseinheit
ausgeführt.
-
Bei
Schritt 328 werden die Ergebnisse 270 der ersten
Ausführungseinheit
und die Ergebnisse 272 der zweiten Ausführungseinheit verglichen. Bei
dem Entscheidungsblock 330 wird eine Bestimmung durchgeführt, ob
die Ergebnisse 270 der ersten Ausführungseinheit und die Ergebnisse 272 der
zweiten Ausführungseinheit übereinstimmen.
Wenn es eine Übereinstimmung
gibt (d. h. die Ergebnisse die gleichen sind), wird bei Schritt 334 eines
der Ergebnisse festgeschrieben (z.B. zurückgeschrieben in den Speicher
oder eine Registerdatei). Nachdem die Ergebnisse festgeschrieben
sind, schreitet die Verarbeitung zu Schritt 304 fort, wenn
mehr Befehle abgerufen werden.
-
Bei
Schritt 338, wenn es keine Übereinstimmung gibt (d. h.
die Ergebnisse nicht die gleichen sind), wird eine Ausnahme 224 erzeugt
(z. B. ein Fehler aufgedeckt). Das Verarbeiten schreitet dann zu
Schritt 304 fort, wenn mehr Befehle abgerufen werden.
-
Es
wird angemerkt, dass die Leistungsfähigkeit des Prozessors theoretisch
durch Zwei geteilt wird durch Verwenden des zweiten Bündels, zum
redundanten Ausführen
der Befehle in dem ersten Bündel
anstatt dem Ausführen
eines unter schiedlichen Satzes von Befehlen. In der Praxis wird
jedoch angemerkt, dass der Code, der durch den Prozessor ausgeführt wird,
nicht immer ausnutzen kann, dass er in der Lage ist, zwei Bündel in
jedem Taktzyklus auszugeben. In diesen Fällen wird ein Teil der Ausführungseinheiten
nicht ausgenutzt, selbst in dem nicht-verriegelungsschrittweise
betriebenen Fall. Der Fehlererfassungsmechanismus gemäß der Erfindung
verwendet diese anderweitig häufig
nicht verwendeten Ressourcen zum Prüfen und Erfassen von weichen
Fehlern. Diesbezüglich
kann die Leistungsfähigkeit
des Prozessors verringert werden. Der Leistungsfähigkeitsverlust ist jedoch
geringer als die Hälfte
der optimalen Leistungsfähigkeit,
da die Pipeline selten bei der Spitzen-, Optimum- oder Maximumrate von 2n Befehlen pro
Zyklus betrieben wird. Die Folge ist, dass die Zuverlässigkeit
erhöht
werden kann durch Prüfen
auf weiche Fehler durch Verwenden des Fehlererfassungsmechanismus
gemäß der Erfindung
mit einem geringeren als erwarteten Verlust bei der Leistungsfähigkeit.
-
Duplizierungsmechanismus
-
4 ist
ein Blockdiagramm, das den Duplizierungsmechanismus 244 von 2 gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung näher
darstellt. Der Duplizierungsmechanismus 244 umfasst eine Befehlsverteilungseinheit 420 zum
Empfangen eines Bündels
von Befehlen 400 (z. B. Befehl_1 402, Befehl_2 404,
Befehl_3 406,... Befehl_N 408) und Verteilen der
Befehle an eine Mehrzahl von Ausführungseinheiten (z. B. Ausführungseinheit_1 430,
Ausführungseinheit_2 434,...
Ausführungseinheit_2N 438).
Die Befehlsverteilungseinheit 420 umfasst eine Befehlsduplizierungseinheit 422 zum
Duplizieren von Befehlen. Bei dem Ausführungsbeispiel, das mit Bezugnahme
auf 4 beschrieben ist, gibt es eine gerade Anzahl
von Ausführungseinheiten
(z. B. Ausführungseinheit_1,
Ausführungseinheit_2,...
Ausführungseinheit_2N),
und jede Ausführungseinheit
kann alle Befehle ausführen.
Bei einigen anderen Ausführungsbeispie len
kann es eine ungerade Anzahl von Ausführungseinheiten geben, oder
es kann bestimmte Befehle geben, die nur durch eine bestimmte Ausführungseinheit
ausgeführt
werden können.
-
In
diesen Fällen,
wo die Ausführungseinheiten,
die verfügbar
sind, um einen bestimmten Befehl auszuführen, nicht symmetrisch sind,
kann der Duplizierungsmechanismus gemäß der Erfindung die folgende
Verarbeitung durchführen.
Zunächst
kann der Duplizierungsmechanismus gemäß der Erfindung einfach einen
bestimmten Befehl nicht duplizieren. Zweitens kann der Duplizierungsmechanismus
gemäß der Erfindung
einfach Befehle duplizieren durch Verwenden nur einer geraden Anzahl
von Ausführungseinheiten,
während
er die verbleibende Ausführung
im Leerlauf lässt.
Drittens kann der Duplizierungsmechanismus gemäß der Erfindung alle diese
Ausführungseinheiten
verwenden, aber einfach Befehle duplizieren, die einem Paar von
Ausführungseinheiten
zugewiesen sind, und Befehle nicht duplizieren, die einer nicht-gepaarten Ausführungseinheit
zugewiesen sind.
-
Wenn
ein Befehl als duplizierbar bestimmt ist und das Fehlererfassungsfreigabebit 242 gesetzt
ist, wird der Befehl dupliziert und das Vergleichsbit, das hierin
nachfolgend mit Bezugnahme auf 6 näher beschrieben
wird, wird gesetzt. Wenn ein Befehl als nicht-duplizierbar bestimmt
wird oder das Fehlererfassungsfreigabebit nicht gesetzt ist, ist
der Befehl nicht duplizierbar und das Vergleichsbit wird nicht gesetzt.
-
Der
Begriff „duplizierbar", wie er hierin verwendet
wird, bezieht sich auf eines der Folgenden: 1) Befehle, die ohne
großen
Aufwand dupliziert werden können,
und 2) die Verfügbarkeit
einer geraden Anzahl von Ausführungseinheiten,
die beide einen bestimmten Befehl ausführen können. Falls eine der beiden
obigen Bedingungen nicht erfüllt
werden kann, kann ein Befehl bestimmt werden oder als „nicht-duplizierbar" bezeichnet werden.
-
Bei
einem Ausführungsbeispiel
verteilt die Befehlsverteilereinheit 420 Befehle an die
Ausführungseinheiten
(z. B. Ausführungseinheiten
1, 2,..., 2n) gemäß dem Algorithmus,
der in Tabelle I aufgeführt
ist.
-
-
Bei
einem anderen Ausführungsbeispiel
verteilt die Befehlsverteilereinheit 420 2n Befehle an
die elf unterschiedlichen Ausführungseinheiten.
Die Befehlsverteilereinheit 420 kann Duplizierungshardware
umfassen, um zwei Bündel
von n identischen Befehlen zu erzeugen.
-
5 ist
ein Zustandsdiagramm für
den Duplizierungsmechanismus von 4 gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung. Das Zustandsdiagramm 500 umfasst
einen ersten Zustand 510 (der als KEINE-DUPLIZIERUNG-Zustand bezeichnet
wird) und einen zweiten Zustand 520 (der als DUPLIZIERUNGS-Zustand
bezeichnet wird). Der Duplizierungsmechanismus 244 bleibt
in dem ersten Zustand 510, wenn das Fehlererfassungsfreigabe-
(EDE-) Bit 242 nicht gesetzt ist (z. B. deaktiviert ist).
Der Duplizierungsmechanismus 244 geht von dem ersten Zustand 510 zu
dem zweiten Zustand 520 über, wenn das Fehlererfassungsfreigabe-
(EDE-) Bit 242 gesetzt ist (z.B. aktiviert ist). Der Duplizierungsmechanismus 244 bleibt
in dem zweiten Zustand 520, wenn das Fehlererfassungsfreigabe-
(EDE-) Bit 242 gesetzt ist (z. B. aktiviert ist). Der Duplizierungsmechanismus 244 geht
von dem zweiten Zustand 520 zu dem ersten Zustand 510 über, wenn
das Fehlererfassungsfreigabe- (EDE-) Bit 242 nicht gesetzt
ist (z. B. deaktiviert ist).
-
Es
wird angemerkt, dass das Fehlererfassungsfreigabe-(EDE-) Bit 242 durch
ein Konfigurationsregister oder den Befehl selbst geliefert werden
kann. Der Duplizierungszustand 520 wird an eine Logik in
der Befehlsverteilereinheit 420 ausgegeben, die die Duplizierung
steuert.
-
Vergleichsmechanismus
-
6 ist
ein Blockdiagramm, das den Vergleichsmechanismus 600 von 2 gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung näher
darstellt. Der Vergleichsmechanismus 600 umfasst eine Mehrzahl
von Fehlererfassungsfreigabebits (die hierin auch als Vergleich-Gültig-Bits
bezeichnet werden). Beispielsweise kann es ein Fehlererfassungsfreigabebit
für jeden
Befehl geben, der durch jede Ausführungseinheit ausgeführt wird.
-
Bei
diesem Ausführungsbeispiel
umfasst der Vergleichsmechanismus 600 eine Mehrzahl von
Bits 604, die einer ersten Ausführungseinheit 610 zugeordnet
sind, und eine Mehrzahl von Bits 608, die der zweiten Ausführungseinheit 620 zugeordnet
sind.
-
Die
erste Mehrzahl von Bits 604 kann ein erstes Vergleich-Gültig-Bit 612 umfassen,
das einem ersten Befehl zugeordnet ist, ein zweites Vergleich-Gültig-Bit 622,
das einem zwei ten Befehl zugeordnet ist, und ein Ntes Vergleich-Gültig-Bit 632,
das einem Nten Befehl zugeordnet ist. Es wird angemerkt, dass der
erste Befehl, der zweite Befehl und der Nte Befehl durch die erste
Ausführungseinheit 610 ausgeführt werden.
Die zweite Mehrzahl von Bits 608 kann ein erstes Vergleich-Gültig-Bit 662 umfassen,
das einem ersten Befehl zugeordnet ist, ein zweites Vergleich-Gültig-Bit 672,
das einem zweiten Befehl zugeordnet ist, und ein Ntes Vergleich-Gültig-Bit 682,
das einem Nten Befehl zugeordnet ist. Es wird angemerkt, dass der
erste Befehl, der zweite Befehl und der dritte Befehl durch die
zweite Ausführungseinheit 620 ausgeführt werden.
-
Die
erste Ausführungseinheit 610 führt den
Befehl N 611 aus und erzeugt ein Ergebnis 614.
Die zweite Ausführungseinheit 620 führt eine
Kopie des Befehls N 621 aus und erzeugt eine Kopie 624 des
Ergebnisses. Der Vergleichsmechanismus umfasst auch einen Ergebniskomparator 630 zum
Empfangen des Ergebnisses 614 und der Kopie 624 des
Ergebnisses, zum Vergleichen der Ergebnisse (614 und 624)
und Erzeugen eines Signals, das anzeigt, ob die Ergebnisse die gleichen
sind.
-
Der
Ergebniskomparator 630 mit ODER-Gattern oder NOR-Gattern implementiert
sein. Wenn beispielsweise die Ergebnisse (614 und 624)
die gleichen sind, kann das Ausgangssignal des Komparators 630 aktiviert
werden (z. B. ein logisch hoher Zustand).
-
Der
Vergleichsmechanismus 600 umfasst auch ein UND-Gatter 640,
das einen ersten Eingang zum Empfangen von Vergleich-Gültig-Bits, der der ersten Ausführungseinheit 610 zugeordnet
ist, einen zweiten Eingang zum Empfangen von Vergleich-Gültig-Bits, die der zweiten
Ausführungseinheit 620 zugeordnet
sind und einen dritten invertierten Eingang zum Empfangen des Ausgangs
des Komparators 630 umfasst. Der Ausgang des UND-Gatters 640 erzeugt
ein Fehlersignal, das an eine Fehlerlogik geliefert wird. Es wird
angemerkt, dass das Fehlersignal nur aktiviert wird, wenn einer
oder beide Vergleichsmechanismen freigegeben sind und es eine Fehlanpassung
oder Diskrepanz bei den Ergebnissen der Ausführungseinheiten gibt.
-
Die
Vergleich-Gültig-Bits
geben den Vergleichsmechanismus gemäß der Erfindung frei, um die
Ergebnisse von zwei oder mehr Ausführungseinheiten zu vergleichen.
-
Bei
einem weiteren Ausführungsbeispiel
werden die Vergleich-Gültig-Bits
für nur
die erste Ausführungseinheit
vorgesehen. Bei diesem Ausführungsbeispiel
gibt es ein Vergleich-Gültig-Bit
für jeden
Befehl, der an der ersten Befehlseinheit ausgeführt wird, aber es gibt kein
getrenntes Vergleich-Gültig-Bit
für die
Kopie des Befehls, der auf der zweiten Befehlseinheit ausgeführt wird.
-
Das
Ergebnis 614 wird dann an einen Bestimmungsort 616 (z.
B. Registerdatei usw.) geliefert.
-
Wenn
die Einheiten nicht symmetrisch sind, kann ein bestimmter Befehl
nicht dupliziert werden. Man betrachte beispielsweise zwei Ganzzahlausführungseinheiten
I0 und I1; eine ist in der Lage, einen Befehl des Typs A auszuführen; die
andere ist nicht in der Lage, einen Befehl des Typs A auszuführen. In
diesem Fall wird dieser Befehl A nicht an beiden Befehlseinheiten
dupliziert, und das Vergleich-Freigabe-Bit,
das entlang I0 verläuft,
ist nicht gemäß der Erfindung
gesetzt. Da die Anzahl von Befehlen, die nicht symmetrisch sind,
sehr klein ist, ist der Prozessor in der Lage, mit diesem Verfahren
die meisten Befehle zu schützen.
-
Selektives
Prüfen
eines Teils von Softwarecode auf weiche Fehlern
-
Es
wird angemerkt, dass das Fehlererfassungsfreigabebit 242 durch
ein Betriebssystem oder durch benutzerprogrammierte Firmware gesetzt
oder gelöscht
werden kann. Auf diese Weise kann nur ein Teil des Softwarecodes
(z. B. ein kritischer Missionsabschnitt) für eine funktionale Redundanzprüfung ausgewählt werden.
Das Fehlererfassungsfreigabebit in dem Steuerregister liefert die
Fähigkeit
und Flexibilität,
dass die Fehlererfassungsmechanismen selektiv freigegeben und deaktiviert
werden und ermöglicht
es so einem Programmierer, die Leistungsfähigkeit des Prozessors mit
der Erfassung weicher Fehler auszugleichen. Dieser Mechanismus zum
selektiven Freigeben und Deaktivieren des Fehlererfassungsmechanismus
gemäß der Erfindung wird
hierin nachfolgend mit Bezugnahme auf 9 und 10 näher beschrieben.
-
Handhabung
von Speicheroperationen
-
Der
Fehlererfassungsmechanismus gemäß der Erfindung
liefert spezielle Handhabungshardware für Operationen, die sich auf
ein Speichersystem beziehen (z. B. einen Cache). Insbesondere umfasst
die Handhabungshardware Hardware zum Handhaben von Ladeoperationen
und Hardware zum Handeln von Speicheroperationen.
-
Für Ladeoperationen
wird die Adresse der ersten Ladeoperation und die Adresse der zweiten
Ladeoperation verglichen. Wenn es eine Übereinstimmung gibt, wird die
erste Ladeoperation ausgeführt.
Wenn es keine Übereinstimmung
gibt, wird eine Ausnahme aufgedeckt. Bei einem Ausführungsbeispiel
ist Hardware vorgesehen, um sicherzustellen, dass der erste Ladevorgang
ausgeführt
wird, aber der zweite Ladevorgang nicht ausgeführt wird. Da die Zeit, die
für Speicheroperationen
benötigt
wird, ein Hauptfaktor beim Berechnen von Latenzzeit und Bestimmen
von Prozessorleistungsfähigkeit ist,
wird durch Sicherstellen, dass die Ladeoperationen nur einmal durchgeführt werden,
die Leistungsfähigkeit
des Prozessors erhöht.
-
Ladehandhabungsmechanismus
-
7 stellt
den Ladehandhabungsmechanismus 700 näher dar. Der Ladehandhabungsmechanismus 700 umfasst
einen Adresskomparator 710 zum Vergleichen einer ersten
Adresse 712 von einer ersten Ausführungseinheit und eine zweite
Adresse 750 von einer zweiten Ausführungseinheit. Der Ladehandhabungsmechanismus 700 umfasst
auch einen Zielregisternummernkomparator 720 zum Vergleichen
einer ersten Zielregisternummer 724 von der ersten Ausführungseinheit
und einer zweiten Zielregisternummer 752 von der zweiten
Ausführungseinheit.
-
Der
Ladehandhabungsmechanismus 700 umfasst auch ein erstes
UND-Gatter 730 und ein zweites UND-Gatter 740.
Das erste UND-Gatter 730 umfasst einen ersten Eingang zum
Empfangen des Ausgangs des Adresskomparators 720, einen
zweiten Eingang zum Empfangen des Ausgangs des Zielregisterbitkomparators 720 und
einen Ausgang zum Erzeugen eines Ausgangssignals.
-
Das
zweite UND-Gatter 740 umfasst einen ersten Eingang zum
Empfangen eines ersten Vergleichsfreigabesignals 744 (z.
B. ein Fehlererfassungsfreigabesignal) von der ersten Ausführungseinheit,
einen zweiten Eingang zum Empfangen eines zweiten Vergleichsfreigabesignals 754 (z.
B. ein Fehlererfassungsfreigabesignal) von der zweiten, einen dritten
invertierten Eingang zum Empfangen des Ausgangssignals von dem ersten
UND-Gatter 730 und einen Ausgang zum Erzeugen eines Fehlersignals.
Beispielsweise kann ein aktiviertes Fehlersignal anzeigen, dass
ein Fehler erfasst wurde. Das Fehlersignal 766 kann an
eine Fehlerlogik geliefert werden. Das erste und das zweite Vergleichsfreigabesignal
können
beispielsweise das Fehlererfassungsfreigabesignal 242 sein.
-
Die
erste Adresse 712 und das erste Zielregister 724 werden
an ein Speicherteilsystem geliefert. Es wird angemerkt, dass der
zweite Ladevorgang (z. B. die Adress- und Zielregisternummer von
der zweiten Ausführungseinheit)
gemäß der Erfindung
gedrückt
wird, es sei denn, das Speicherteilsystem ist entworfen und konfiguriert,
um einen zweiten Ladevorgang handzuhaben (z. B. zum Erfassen und
Löschen
eines zweiten Ladevorgangs). Beispielsweise können die Adresse 750 und
das Zielregisterbit 752 von der zweiten Ausführungseinheit
durch den Ladehandhabungsmechanismus 700 gemäß der Erfindung
gelöscht
werden.
-
Alternativ
können
die Adresse 712 und das Zielregisterbit 724 von
der ersten Ausführungseinheit
gelöscht
werden (d. h. gedrückt),
und die Adresse 750 und das Zielregister 752,
die von der zweiten Ausführungseinheit
empfangen wurden, können
an den Speicher geliefert werden. Bei diesem alternativen Ausführungsbeispiel
kann die in 7 gezeigte Logik gemäß der Erfindung
modifiziert oder geändert
werden, um die oben erwähnte
logische Funktion durchzuführen.
-
Speicherhandhabungsmechanismus
-
8 stellt
den Speicherhandhabungsmechanismus 800 näher dar.
Der Speicherhandhabungsmechanismus 800 umfasst einen Adresskomparator 810 zum
Vergleichen einer ersten Adresse 812 von einer ersten Ausführungseinheit
und einer zweiten Adresse 850 von einer zweiten Ausführungseinheit.
Der Speicherhandhabungsmechanismus 800 umfasst auch einen
Datenkomparator 820 zum Vergleichen von Daten 824 von
der ersten Ausführungseinheit
und Daten 852 von der zweiten Ausführungseinheit.
-
Der
Speicherhandhabungsmechanismus 800 umfasst auch ein erstes
UND-Gatter 830 und ein zweites UND-Gatter 840.
Das erste UND-Gatter 830 umfasst einen ersten Eingang zum Empfangen
des Ausgangs des Adresskomparators 810, einen zweiten Eingang
zum Empfangen des Ausgangs des Datenkomparators 820 und
einen Ausgang zum Erzeugen eines Ausgangssignals.
-
Das
zweite UND-Gatter 840 umfaßt einen ersten Eingang zum
Empfangen eines ersten Vergleichsfreigabesignals 844 (z.
B. eines Fehlererfassungsfreigabesignals) von der ersten Ausführungseinheit,
einen zweiten Eingang zum Empfangen eines zweiten Vergleichsfreigabesignals 854 (z.
B. ein Fehlererfassungsfreigabesignal) von der zweiten Ausführungseinheit,
einen dritten invertierten Eingang zum Empfangen des Ausgangssignals
von dem ersten UND-Gatter 830 und einen Ausgang zum Erzeugen
eines Fehlersignals. Beispielsweise kann ein aktiviertes Fehlersignal
anzeigen, dass ein Fehler erfasst wurde. Das Fehlersignal kann an
eine Fehlerlogik geliefert werden. Das erste und das zweite Vergleichsfreigabesignal
können
beispielsweise das Fehlererfassungsfreigabesignal 242 sein.
-
Die
Adresse und die Daten von der ersten Ausführungseinheit werden an ein
Speicherteilsystem geliefert. Es wird angemerkt, dass der zweite
Speicher (z. B. die Adresse und die Daten von der zweiten Ausführungseinheit)
gemäß der Erfindung
gedrückt
wird, es sei denn, das Speicherteilsystem ist entworfen und konfiguriert,
um einen zweiten Speicher handzuhaben (z. B. zum Erfassen und Löschen eines
zweiten Speichers). Beispielsweise können die Adresse und die Daten
durch den Speicherhandhabungsmechanismus 800 gemäß der Erfindung
gelöscht
werden. Es wird angemerkt, dass bei einem alternativen Ausführungsbeispiel
der erste Speicher gedrückt
werden kann und es dem zweiten Speicher ermöglicht wird, ausgeführt zu werden.
Bei diesem Ausführungsbeispiel
kann die Logik zum Erfassen eines Fehlers modifiziert werden, um
ein solches Ausführungsbeispiel
unterzubringen.
-
Fehlererfassungsfreigabe-
(EDE-) Bit in einem Steuerregister zum selektiven Freigeben des
Fehlererfassungsmechanismus
-
9 stellt
ein Steuerregister 900 für die Verwendung beim Freigeben
des Fehlererfassungsmechanismus gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung dar. Das Steuerregister 900 umfasst
ein Fehlererfassungsfreigabe-(EDE-)
Bit 910. Das Fehlererfassungsfreigabe- (EDE-) Bit 910 kann
durch Firmware 920 (z. B. benutzerprogrammierte Firmware),
durch das Betriebssystem (BS) 930 oder durch eine Anwendung 940 gesetzt
und gelöscht
werden. Das Fehlererfassungsfreigabe- (EDE-) Bit 910 kann
verwendet werden, um das Fehlererfassungssignal 242 zu
liefern, das den Fehlererfassungsmechanismus der Erfindung selektiv
freigibt.
-
Herkömmliche
Lösungsansätze zu funktionaler
Redundanzprüfung
(FRC) liefern dem Benutzer nicht die Fähigkeit, die FRC selektiv ein-
oder auszuschalten. Ein neuartiger Aspekt der Erfindung ist die
Bereitstellung eines Mechanismus, der es einem Benutzer durch Firmware,
das Betriebssystem (BS) oder eine Anwendung ermöglicht, den Fehlererfassungsmechanismus
der Erfindung selektiv freizugeben und zu deaktivieren. Beispielsweise
kann ein Programmierer nur einen bestimmten Codeabschnitt bestimmen,
der Fehlererfassung und -prüfung
unterworfen werden soll, und andere Codeabschnitte bestimmen, die
ohne Prüfen
auf weiche Fehler verarbeitet werden sollen.
-
10 stellt
einen beispielhaften Abschnitt 1000 eines Softwarecodes
dar, der Befehle umfasst zum Freigeben und Deaktivieren des Fehlererfassungsmechanismus
gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung. Der Abschnitt 1000 umfasst
einen ersten Befehl oder Firmware- oder Betriebssystemaufruf 1010 zum
Setzen des EDE-Bits 910 in dem Steuerregister 900 und
einen zweiten Befehl oder Firmware- oder Betriebssystemaufruf 1030 zum
Löschen
des EDE-Bits 910 in dem Steuerregister 900. Sobald
das EDE-Bit 910 gesetzt ist, ist der Fehlererfassungsmechanismus
der Erfindung freigibt, um weiche Fehler in dem kritischen Code 1020 zu
erfassen. Der Softwarecode vor dem Befehl 1010 und der
Code nach dem Befehl 1030 sind keiner Fehlererfassung durch
den Fehlererfassungsmechanismus der Erfindung unterworfen. Auf diese
Weise kann der Fehlererfassungsmechanismus der Erfindung selektiv
aktiviert werden, um nur bestimmte Codeabschnitte zu prüfen, wodurch
es einem Programmierer ermöglicht
wird, Prozessorleistungsfähigkeit und
Zuverlässigkeit
für anwendungskritische
Codeabschnitte auszugleichen.