DE102004034766A1 - Fehlererfassungsverfahren und System für Prozessoren, das verriegelungsschrittweise betriebene gleichzeitige Teilprozesse verwendet - Google Patents

Fehlererfassungsverfahren und System für Prozessoren, das verriegelungsschrittweise betriebene gleichzeitige Teilprozesse verwendet Download PDF

Info

Publication number
DE102004034766A1
DE102004034766A1 DE102004034766A DE102004034766A DE102004034766A1 DE 102004034766 A1 DE102004034766 A1 DE 102004034766A1 DE 102004034766 A DE102004034766 A DE 102004034766A DE 102004034766 A DE102004034766 A DE 102004034766A DE 102004034766 A1 DE102004034766 A1 DE 102004034766A1
Authority
DE
Germany
Prior art keywords
error detection
unit
execution
execution unit
instructions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE102004034766A
Other languages
English (en)
Inventor
Kevin D. Fort Collins Safford
Donald C. Fort Collins Soltis Jun.
Stephen R. Fort Collins Undy
James D. Loveland Gibson
Eric R. Fort Collins Delano
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of DE102004034766A1 publication Critical patent/DE102004034766A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

Ein Prozessor, 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 zweiten Bündels von Befehlen in dem ersten Ausführungszyklus sind vorgesehen. Der Fehlererfassungsmechanismus umfasst auch eine 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 umfassen (z. B. Aufdecken eines Fehlers), wenn die Ergebnisse nicht gleich sind. Eine Festschreibeinheit ist vorgesehen zum Festschreiben auf eines der Ergebnisse, wenn die Ergebnisse gleich sind.

Description

  • 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.
  • Figure 00150001
    TABELLE I
  • 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.

Claims (19)

  1. Prozessor (200), der eine In-Reihenfolge-Ausführungsarchitektur zum Ausführen von zumindest zwei Befehlen pro Zyklus und zumindest zwei symmetrische Ausführungseinheiten (210, 212) umfasst, der folgende Merkmale umfasst: a) eine Befehlsabrufeinheit (204) zum Abrufen von n Befehlen; b) einen Befehlsdecodierer (208) zum Decodieren der n Befehle; wobei 2n Befehle pro Zyklus verarbeitet werden; c) Duplizierungshardware (244) zum Duplizieren der n Befehle in ein erstes Bündel und ein zweites Bündel; wobei jedes Bündel n Befehle umfasst; d) eine erste Ausführungseinheit (210) zum Ausführen des ersten Bündels von Befehlen in einem ersten Ausführungszyklus; e) die zweite symmetrische Ausführungseinheit (212) zum Ausführen des zweiten Bündels von Befehlen in dem ersten Ausführungszyklus; f) Vergleichshardware (248) zum Vergleichen der Ergebnisse der ersten Ausführungseinheit und der Ergebnisse der zweiten Ausführungseinheit; und g) eine Festschreibeinheit (214) zum Festschreiben von einem der Ergebnisse, wenn die Ergebnisse gleich sind; und h) eine Ausnahmeeinheit (249) zum Erzeugen einer Ausnahme (Aufdecken eines Fehlers), wenn die Ergebnisse nicht gleich sind.
  2. Prozessor gemäß Anspruch 1, bei dem die erste Ausführungseinheit das erste Bündel (206) von Befehlen an die erste Ausführungseinheit ausgibt; und wobei die zweite symmetrische Ausführungseinheit das zweite Bündel (262) von Befehlen an die zweite Ausführungseinheit in dem ersten Ausführungszyklus ausgibt.
  3. Prozessor gemäß Anspruch 2, bei dem die erste Ausführungseinheit (210) entweder eine Gleitpunkteinheit, eine Ganzzahleinheit, eine Arithmetik-Logik-Einheit (ALU), eine Multimediaeinheit oder eine Verzweigungseinheit ist; und wobei die zweite Ausführungseinheit (212) bezüglich der ersten Ausführungseinheit symmetrisch ist und entweder eine Gleitpunkteinheit, eine Ganzzahleinheit, eine Arithmetik-Logik-Einheit (ALU), eine Multimediaeinheit oder eine Verzweigungseinheit umfasst.
  4. Prozessor gemäß einem der Ansprüche 1 bis 3, bei dem die Duplizierungshardware (244) vorgesehen ist zum Durchführen der Befehlsduplizierung und Vergleichshardware (248) vorgesehen ist zum Durchführen des Vergleichs, wobei das Verfahren ferner folgenden Schritt umfasst: Setzen eines Bits in einem Steuerregister (900); wobei das Bit die Duplizierungshardware und die Vergleichshardware freigibt.
  5. Prozessor gemäß Anspruch 4, bei dem das Bit entweder durch eine benutzerprogrammierte Firmware, ein Betriebssystem (BS) oder eine Anwendung gesetzt wird.
  6. Prozessor gemäß einem der Ansprüche 1 bis 5, bei dem n gleich 3 ist.
  7. Verfahren zum Erfassen von Fehlern in einem Prozessor, der 2n Befehle pro Zyklus verarbeitet, das folgende Schritte umfasst: a) Abrufen (304) von n Befehlen; wobei n eine Ganzzahl größer als 0 ist; b) Decodieren (308) der n Befehle; c) Duplizieren (314) der n decodierten Befehle in ein erstes Bündel von n decodierten Befehlen und ein zweites Bündel von n decodierten Befehlen; d) Verwenden (318) einer ersten Ausführungseinheit zum Ausführen des ersten Bündels von Befehlen in einem ersten Ausführungszyklus; e) Verwenden (324) einer zweiten symmetrischen Ausführungseinheit zum Ausführen des zweiten Bündels von Befehlen in dem ersten Ausführungszyklus; f) Vergleichen (328) der Ergebnisse der ersten Ausführungseinheit und der Ergebnisse der zweiten Ausführungseinheit; g) wenn die Ergebnisse gleich sind, Festschreiben (334) von einem der Ergebnisse; und h) wenn die Ergebnisse nicht gleich sind, Erzeugen (338) einer Ausnahme (Aufdecken eines Fehlers).
  8. Verfahren gemäß Anspruch 7, bei dem der Schritt des Verwendens einer ersten Ausführungseinheit zum Ausführen des ersten Bündels von Befehlen in einem ersten Ausführungszyklus das Ausgeben des ersten Bündels von Befehlen an die erste Ausführungseinheit umfasst; und bei dem der Schritt des Verwendens einer zweiten symmetrischen Ausführungseinheit zum Ausführen des zweiten Bündels von Befehlen in dem ersten Ausführungszyklus das Ausgeben des zweiten Bündels von Befehlen an die zweite Ausführungseinheit umfasst.
  9. Verfahren gemäß Anspruch 7 oder 8, bei dem die erste Ausführungseinheit entweder eine Gleitpunkteinheit, eine Ganzzahleinheit, eine Arithmetik-Logik-Einheit (ALU), eine Multimediaeinheit oder eine Verzweigungseinheit ist; und wobei die zweite Ausführungseinheit bezüglich der ersten Ausführungseinheit symmetrisch ist und entweder eine Gleitpunkteinheit, eine Ganzzahleinheit, eine Arithmetik-Logik-Einheit (ALU), eine Multimediaeinheit oder eine Verzweigungseinheit ist.
  10. Verfahren gemäß einem der Ansprüche 7 bis 9, bei dem Duplizierungshardware vorgesehen ist zum Durchführen der Befehlsduplizierung und Vergleichshardware vorgesehen ist zum Durchführen des Vergleichs, wobei das Verfahren ferner folgenden Schritt umfasst: Setzen eines Bits in einem Steuerregister; wobei das Bit die Duplizierungshardware und die Vergleichshardware freigibt.
  11. Verfahren gemäß Anspruch 10, bei dem das Bit entweder durch eine benutzerprogrammierte Firmware, ein Betriebssystem (BS) oder eine Anwendung gesetzt wird.
  12. Verfahren gemäß einem der Ansprüche 7 bis 11, bei dem jeder Befehl ein Bit zum Freigeben des Befehls für Fehlerprüfen umfasst.
  13. Verfahren gemäß einem der Ansprüche 7 bis 12, bei dem n gleich 3 ist.
  14. Verfahren zum selektiven Freigeben eines Fehlererfassungsmechanismus, das folgende Schritte umfasst: a) Beibehalten eines Steuerregisters, das ein Fehlererfassungsfreigabebit umfasst; b) Setzen des Fehlererfassungsfreigabebits zum Freigeben des Fehlererfassungsmechanismus; und c) Löschen des Fehlererfassungsfreigabebits zum Deaktivieren des Fehlererfassungsmechanismus.
  15. Verfahren gemäß Anspruch 14, bei dem der Schritt des Setzens des Fehlererfassungsfreigabebits zum Freigeben des Fehlererfassungsmechanismus eines der folgenden Merkmale umfasst: eine benutzerprogrammierte Firmware, die das Fehlererfassungsfreigabebit setzt, um den Fehlererfassungsmechanismus freizugeben; ein Betriebssystem, das das Fehlererfassungsfreigabebit setzt, um den Fehlererfassungsmechanismus freizugeben; und eine Anwendung, die das Fehlererfassungsfreigabebit setzt, um den Fehlererfassungsmechanismus freizugeben; und wobei der Schritt des Löschens des Fehlererfassungsfreigabebits zum Deaktivieren des Fehlererfassungsmechanismus eines der folgenden Merkmale umfasst: eine benutzerprogrammierte Firmware, die das Fehlererfassungsfreigabebit löscht, um den Fehlererfassungsmechanismus freizugeben; eine Betriebssystemeinstellung, die das Fehlererfassungsfreigabebits löscht, um den Fehlererfassungsmechanismus freizugeben; und eine Anwendung, die das Fehlererfassungsfreigabebit löscht, um den Fehlererfassungsmechanismus freizugeben.
  16. Verfahren gemäß Anspruch 14 oder 15, bei dem der Fehlererfassungsmechanismus für einen kritischen Codeabschnitt freigegeben ist, der einen ersten Befehl und einen letzten Befehl umfasst; wobei der Schritt des Setzens des Fehlererfassungsfreigabebits zum Freigeben des Fehlererfassungsmechanismus folgenden Schritt umfasst: Setzen des Fehlererfassungsfreigabebits zum Freigeben des Fehlererfassungsmechanismus vor der Ausführung des ersten Befehls des kritischen Codeabschnitts; und wobei das Löschen des Fehlererfassungsfreigabebits zum Deaktivieren des Fehlererfassungsmechanismus folgenden Schritt umfasst: Löschen des Fehlererfassungsfreigabebits zum Deaktivieren des Fehlererfassungsmechanismus nach der Ausführung des letzten Befehls des kritischen Codeabschnitts.
  17. Vorrichtung zum Ausführen von Befehlen, die folgende Merkmale umfasst: a) ein Steuerregister, das ein Fehlererfassungsfreigabebit umfasst; b) einen Fehlererfassungsmechanismus zum Erfassen von weichen Fehlern; und c) einen Mechanismus zum selektiven Freigeben des Fehlererfassungsmechanismus durch Setzen des Fehlererfassungsfreigabebits, um den Fehlererfassungsmechanismus freizugeben, und durch Löschen des Fehlererfassungsfreigabebits, um den Fehlererfassungsmechanismus zu deaktivieren.
  18. Vorrichtung gemäß Anspruch 17, bei der der selektive Freigabemechanismus entweder eine benutzerprogrammierte Firmware, ein Betriebssystem oder eine Anwendung ist.
  19. Vorrichtung gemäß Anspruch 17 oder 18, bei der der Fehlererfassungsmechanismus für einen kritischen Codeabschnitt freigegeben ist, der einen ersten Befehl und einen letzten Befehl umfasst; wobei der selektive Freigabemechanismus das Fehlererfassungsfreigabebit setzt, um den Fehlererfassungsmechanismus vor der Ausführung des ersten Befehls des kritischen Codeabschnitts freizugeben; und wobei der selektive Freigabemechanismus das Fehlererfassungsfreigabebit löscht, um den Fehlererfassungsmechanismus nach der Ausführung des letzten Befehls des kritischen Codeabschnitts zu deaktivieren.
DE102004034766A 2003-11-13 2004-07-19 Fehlererfassungsverfahren und System für Prozessoren, das verriegelungsschrittweise betriebene gleichzeitige Teilprozesse verwendet Withdrawn DE102004034766A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/714,093 US20050108509A1 (en) 2003-11-13 2003-11-13 Error detection method and system for processors that employs lockstepped concurrent threads
US10/714,093 2003-11-13

Publications (1)

Publication Number Publication Date
DE102004034766A1 true DE102004034766A1 (de) 2005-06-23

Family

ID=34573886

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102004034766A Withdrawn DE102004034766A1 (de) 2003-11-13 2004-07-19 Fehlererfassungsverfahren und System für Prozessoren, das verriegelungsschrittweise betriebene gleichzeitige Teilprozesse verwendet

Country Status (2)

Country Link
US (1) US20050108509A1 (de)
DE (1) DE102004034766A1 (de)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050138478A1 (en) * 2003-11-14 2005-06-23 Safford Kevin D. Error detection method and system for processors that employ alternating threads
US7296181B2 (en) 2004-04-06 2007-11-13 Hewlett-Packard Development Company, L.P. Lockstep error signaling
US7447919B2 (en) * 2004-04-06 2008-11-04 Hewlett-Packard Development Company, L.P. Voltage modulation for increased reliability in an integrated circuit
US7290169B2 (en) 2004-04-06 2007-10-30 Hewlett-Packard Development Company, L.P. Core-level processor lockstepping
US7287185B2 (en) 2004-04-06 2007-10-23 Hewlett-Packard Development Company, L.P. Architectural support for selective use of high-reliability mode in a computer system
US7302619B1 (en) * 2004-07-06 2007-11-27 Mindspeed Technologies, Inc. Error correction in a cache memory
DE102005037217A1 (de) * 2005-08-08 2007-02-15 Robert Bosch Gmbh Verfahren und Vorrichtung zum Vergleich von Daten bei einem Rechnersystem mit wenigstens zwei Ausführungseinheiten
DE102006062703A1 (de) * 2006-02-08 2007-08-30 Infineon Technologies Ag Fehlererkennungsvorrichtung und Verfahren zur Fehlererkennung für einen Befehlsdecoder
DE102006005817B4 (de) * 2006-02-08 2014-06-26 Infineon Technologies Ag Fehlererkennungsvorrichtung für einen Adressdecoder und Vorrichtung zur Fehlererkennung für einen Adressdecoder
US8020072B2 (en) * 2006-10-25 2011-09-13 International Business Machines Corporation Method and apparatus for correcting data errors
US20090183035A1 (en) * 2008-01-10 2009-07-16 Butler Michael G Processor including hybrid redundancy for logic error protection
GB2458260A (en) * 2008-02-26 2009-09-16 Advanced Risc Mach Ltd Selectively disabling error repair circuitry in an integrated circuit
US8082425B2 (en) * 2009-04-29 2011-12-20 Advanced Micro Devices, Inc. Reliable execution using compare and transfer instruction on an SMT machine
US20140156975A1 (en) * 2012-11-30 2014-06-05 Advanced Micro Devices, Inc. Redundant Threading for Improved Reliability
GB2537942B (en) * 2015-05-01 2017-06-14 Imagination Tech Ltd Fault tolerant processor for real-time systems
GB2559122B (en) * 2017-01-24 2020-03-11 Advanced Risc Mach Ltd Error detection using vector processing circuitry
KR20180110478A (ko) * 2017-03-29 2018-10-10 에스케이하이닉스 주식회사 반도체 메모리 장치 및 테스트 방법
US10817289B2 (en) * 2017-10-03 2020-10-27 Nvidia Corp. Optimizing software-directed instruction replication for GPU error detection
GB2567190B (en) * 2017-10-05 2020-02-26 Advanced Risc Mach Ltd Error recovery for intra-core lockstep mode
EP4404087A1 (de) * 2023-01-23 2024-07-24 Thales Dis France Sas Verfahren zur sicherung einer zentralen verarbeitungseinheits-pipeline

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3623840B2 (ja) * 1996-01-31 2005-02-23 株式会社ルネサステクノロジ データ処理装置及びマイクロプロセッサ
US6854051B2 (en) * 2000-04-19 2005-02-08 Hewlett-Packard Development Company, L.P. Cycle count replication in a simultaneous and redundantly threaded processor
US20020023202A1 (en) * 2000-04-19 2002-02-21 Mukherjee Shubhendu S. Load value queue input replication in a simultaneous and redundantly threaded processor
US6598122B2 (en) * 2000-04-19 2003-07-22 Hewlett-Packard Development Company, L.P. Active load address buffer
US20010037447A1 (en) * 2000-04-19 2001-11-01 Mukherjee Shubhendu S. Simultaneous and redundantly threaded processor branch outcome queue
US6823473B2 (en) * 2000-04-19 2004-11-23 Hewlett-Packard Development Company, L.P. Simultaneous and redundantly threaded processor uncached load address comparator and data value replication circuit
US6854075B2 (en) * 2000-04-19 2005-02-08 Hewlett-Packard Development Company, L.P. Simultaneous and redundantly threaded processor store instruction comparator
US6792525B2 (en) * 2000-04-19 2004-09-14 Hewlett-Packard Development Company, L.P. Input replicator for interrupts in a simultaneous and redundantly threaded processor
US7020811B2 (en) * 2001-04-24 2006-03-28 Sun Microsystems, Inc. System and method for verifying error detection/correction logic
US6970988B1 (en) * 2001-07-19 2005-11-29 Chung Shine C Algorithm mapping, specialized instructions and architecture features for smart memory computing
US7500240B2 (en) * 2002-01-15 2009-03-03 Intel Corporation Apparatus and method for scheduling threads in multi-threading processors

Also Published As

Publication number Publication date
US20050108509A1 (en) 2005-05-19

Similar Documents

Publication Publication Date Title
DE102004034766A1 (de) Fehlererfassungsverfahren und System für Prozessoren, das verriegelungsschrittweise betriebene gleichzeitige Teilprozesse verwendet
DE68913629T2 (de) Satzverriegelungsprozessor für vielfachverarbeitungsdatensystem.
DE69221045T2 (de) Verfahren und Gerät zur programmierbaren Speicherssteuerung mit Fehlerregelung und Prüffunktionen
DE2722099C2 (de)
DE2714805C2 (de)
DE60217157T2 (de) Verfahren und vorrichtung zum binden von shadow-registern an vektorisierte interrupts
DE4313594A1 (de) Mikroprozessor
DE102009049078B4 (de) Verwendung von Ausführer-Wissen über Speicherregion-Ordnungsanforderungen zum Modifizieren von Transaktionsattributen
DE10297166T5 (de) Mechanismus zur Interrupt-Abwicklung in Computersystemen, welche die gleichzeitige Ausführung mehrerer Threads unterstützen
DE19635204A1 (de) Ausnahme-Sicherheitsschaltung
DE112005003339T5 (de) Transaktionsgestützter Verarbeitungsbetrieb mit gemeinsam genutzten Daten in einer Multiprozessorumgebung
DE19983098B4 (de) Mehrfach-Bitanzeige zur Behandlung von Schreib-nach-Schreib-Fehlern und zur Eliminierung von Bypass-Komparatoren
DE102005037230A1 (de) Verfahren und Vorrichtung zur Überwachung von Funktionen eines Rechnersystems
DE10312264A1 (de) Verfahren und Vorrichtung zum Hervorrufen von Unterschieden bei mit Verriegelungsschritten versehenen Prozessoren
EP0104635A2 (de) Verfahren und Anordnung zum Prüfen eines digitalen Rechners
EP1812859B1 (de) Verfahren und vorrichtung zur modusumschaltung und zum signalvergleich bei einem rechnersystem mit wenigstens zwei verarbeitungseinheiten
EP1812855B1 (de) Verfahren und vorrichtung zur modusumschaltung und zum signalvergleich bei einem rechnersystem mit wenigstens zwei verarbeitungseinheiten
DE69128908T2 (de) Verfahren zum Durchführen von erlässlichen Befehlen in einem Rechner
DE112020005987T5 (de) Setzen von prüfpunkten in akkumulatorregister-ergebnissen in einem mikroprozessor
WO2007057270A1 (de) Programmgesteuerte einheit und verfahren zum betreiben derselbigen
DE102004011450A1 (de) Anvisierte Fehlertoleranz durch spezielle CPU-Befehle
DE4434529A1 (de) Verfahren zum Verarbeiten eines Befehls mit Einsatzbedingung und Vorrichtung dazu
DE69422003T2 (de) Verfahren und Vorrichtung zur Steuerung der Befehlswiederholung
DE69626263T2 (de) System zur Zuteilung mehrerer Befehle ohne Verzweigungsunterbrechung in einem Pipelineprozessor
DE10063644B4 (de) Lokales Anhalten und Gefahrerfassung in einem superskalaren Pipeline-Mikroprozessor zum Vermeiden eines erneuten Lesens einer Registerdatei

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8130 Withdrawal