DE10304447B4 - Verfahren zur Handhabung von Datenfehlern in einem Prozessor mit Pipeline und derartiger Prozessor - Google Patents

Verfahren zur Handhabung von Datenfehlern in einem Prozessor mit Pipeline und derartiger Prozessor Download PDF

Info

Publication number
DE10304447B4
DE10304447B4 DE10304447A DE10304447A DE10304447B4 DE 10304447 B4 DE10304447 B4 DE 10304447B4 DE 10304447 A DE10304447 A DE 10304447A DE 10304447 A DE10304447 A DE 10304447A DE 10304447 B4 DE10304447 B4 DE 10304447B4
Authority
DE
Germany
Prior art keywords
data
register
buffer
processor
checkpoint
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.)
Expired - Fee Related
Application number
DE10304447A
Other languages
English (en)
Other versions
DE10304447A1 (de
Inventor
Eric 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 DE10304447A1 publication Critical patent/DE10304447A1/de
Application granted granted Critical
Publication of DE10304447B4 publication Critical patent/DE10304447B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Retry When Errors Occur (AREA)

Abstract

Verfahren zur Handhabung von Datenfehlern bei der Ausführung eines Programms in einem Prozessor (10) mit einer Pipeline, der eine Registeranordnung (12) mit einer Mehrzahl von Registern aufweist, mit folgenden Schritten für jeden Zyklus des Prozessors (10):
falls der Zyklus keinem Prüfpunkt entspricht, Speichern einer Kopie von Daten, die in einem Register der Registeranordnung (12) enthalten sind, in einem Puffer, falls neue Daten in das Register einzuschreiben sind;
falls der Zyklus einem Prüfpunkt entspricht, Überprüfen des Prozessors (10) auf Datenfehler aufgrund eines verfälschten spekulativen Schreibvorgangs in die Registeranordnung (12);
falls ein Datenfehler vorliegt, Übertragen der in dem Puffer (20) seit einem vorhergehenden Prüfpunkt gespeicherten Daten von dem Puffer (20) an die Registeranordnung (12); und
Zurücksetzen der Programmausführung auf einen Zyklus, der einem vorhergehenden Prüfpunkt entspricht, wobei der Abstand aufeinanderfolgender Prüfpunkte von der Speichergröße des Puffers (20) abhängt.

Description

  • Die vorliegende Erfindung bezieht sich auf ein Verfahren zur Handhabung von Datenfehlern bei der Ausführung eines Programms in einem Prozessor mit Pipeline sowie auf einen Prozessor mit Pipeline zur Handhabung von Datenfehlern bei der Ausführung eines Programms in dem Prozessor.
  • Moderne Rechensysteme verwenden verschiedene Hardware- und Softwaretechniken, um interne Datenfehler zu erfassen. Eine solche Technik, die in RAID-I/O-Bauelementen (I/O = input/output = Eingabe/Ausgabe) verwendet wird, umfaßt mehrere redundante CPUs (CPU = Central Processing Unit = zentrale Verarbeitungseinheit), um eine Verarbeitung zu duplizieren. Die Ergebnisse werden verglichen und, wenn sie identisch sind, wird eine Entscheidung gefällt, ob die Daten fehlerfrei sind. Wenn Fehler erfaßt werden, wird dahingehend eine Entscheidung gefällt, welches der redundanten Bauelemente korrekt ist.
  • Bei RISC-Prozessoren sind redundante Verarbeitungskerne manchmal auf einem gemeinsamen Chip implementiert, um in ähnlicher Weise redundante Fehlerprüfungstechniken zu liefern. Eine Redundanz kann auch bei Bauelementen auf unterer Ebene verdoppelt werden (z. B. einer ALU), um ähnliche Fehlererfassungsfähigkeiten für Paritätsebenenentscheidungen zu liefern. Die RISC-Prozessoren implementieren manchmal auch einen Fehlerkorrekturcode, wie z. B. in Verbindung mit Cache-Einträgen. Die Datenfehler innerhalb der Zufalls- und Spekulativlogik der RISC-Prozessoren sind jedoch besonders schwierig zu erfassen, und es gibt keine praktischen Fehlerkorrekturtechniken, die für Operationen wie z. B. einen Vorabruf, eine Sprungvorhersage und ein Umgehen, geeignet sind.
  • Es kann viele Ursachen für Datenfehler in RISC-Prozessoren geben. Kosmische Strahlenpartikel können beispielweise ein Bit innerhalb eines logischen Zwischenspeichers des Prozessors kippen. Eine dynamische Logik und Speicherungsknoten sind besonders für kosmische Partikel und Alphapartikel anfällig, die interne Speicherungszellen stören. Selbst statische logische Bauelemente (z. B. NOR-Gatter) können Fehler oder ein Rauschen aufgrund von kosmischen Partikeln aufweisen.
  • Dementsprechend existieren bekannte Techniken, die logische Fehler und dergleichen in von RISC-Prozessoren „erfassen" können. Nichtsdestotrotz erschweren redundante Erfassungstechniken häufig eine Zeitgebungs- und Umgehungslogik; es kann beispielsweise bis zu drei Extrazyklen dauern, um einen Vergleich zwischen redundanten Bauelementen auszuführen, was die Schreib-Zurück-Logik von parallelen Pipelines in hohem Maße erschweren kann.
  • Außerdem ist die „Wiedergewinnung", die Datenfehlern zugeordnet ist, im Stand der Technik ziemlich schwierig und aufwendig. Häufig involviert diese Wiedergewinnung beispielsweise ein Analysieren und Wählen, welches der zwei redundanten Bauelemente als die geeigneten Daten zu verwenden ist. Im Stand der Technik sind sogar drei redundante Bauelemente implementiert, um bei dieser Analyse und Wahl zu helfen. Es sind daher Verbesserungen erforderlich, um die Datenwiedergewinnung im Falle von logischen Fehlern bei modernen Prozessoren zu erleichtern. Ein Merkmal der Erfindung ist, eine Wiedergewinnungslogik innerhalb des RISC-Prozessors zu schaffen, um verlorene oder verfälschte Daten, die an die Registerdateien geschrieben wurden, wieder zu erfassen. Andere Merkmale der Erfindung sind der Beschreibung, die nun folgt, zu entnehmen.
  • Die US 6,065,107 A offenbart ein System zum Wiederherstellen von Registerdaten in einem Pipeline-Datenverarbeitungssystem, wobei die Daten an einer Adresse einer Registerdatei gespeichert werden. Die Adresse und der Dateninhalt werden zusätzlich in einem Backup-Register gespeichert. Im Fall einer Ausnahmebedingung nach der Speicherung der Daten in der Registerdatei kann die Registerdatei inkorrekte Daten enthalten. Das Backup-Register enthält eine Kopie der „korrekten" Daten, die vorher in der Registerdatei gespeichert waren, so dass die Registerdatei auf einen Zustand vor der Ausnahme zurückgebracht werden kann, indem die korrekten Daten von dem Backup-Register in die Registerdatei geladen wird. Der Betrieb der Registerdatei kann dann erneut gestartet werden, z.B. durch Wiederholen des Befehls, der ursächlich zu der Ausnahme führte.
  • Die US 5,692,121 A beschreibt ein Verfahren, um ein Prozessorsystem gegenüber Schaltungsausfällen immun zu machen, die durch externes Rauschen hervorgerufen werden. Hierfür werden gespiegelte Prozessoren sowie eine Wiedergewinnungseinheit verwendet.
  • Es ist die Aufgabe der vorliegenden Erfindung, ein Verfahren und eine Vorrichtung zu schaffen, die im Falle von logischen Fehlern bei der Programmverarbeitung innerhalb eines Prozessors verlorene oder verfälschte Daten, die aufgrund des logischen Fehlers aufgetreten sind und in die Register einer Registeranordnung geschrieben wurden, wiedergewinnen bzw. korrigieren kann.
  • Diese Aufgabe wird durch ein Verfahren nach Anspruch 1 und durch einen Prozessor nach Anspruch 9 gelöst.
  • Die Erfindung umfaßt bei einem Aspekt eine Methodik zum Ausführen eines zusätzlichen Lesevorgangs von einer Registerdatei (Register File; auch als Registeranordnung bezeichnet) vor dem Schreiben in diese Registerdatei. Die Daten von dem zusätzlichen Lesevorgang werden in einem Puffer gespeichert (z. B. einer anderen Registerdatei). Nach einem Zeitraum – der hierin als „Prüfpunkt" (Checkpoint) definiert ist – wird eine Prüfung vorgenommen, ob Datenfehler aufgetreten sind; wenn keine Fehler vorhanden sind, wird der Puffer geräumt, und die Verarbeitung wird wie üblich fortgesetzt; wenn Fehler vorhanden sind, wird die Registerdatei erneut mit Inhalten aus dem Puffer beschrieben und der Programmzähler wird auf den vorherigen Prüfpunkt zurückgesetzt, woraufhin die Verarbeitung die Programmanweisungen vom letzten Prüfpunkt erneut ausführt. Die Verwendung von Prüfpunkten der Registerdatei kann zu vorbestimmten Zeitpunkten, z. B. alle 100 Zyklen, auftreten. Die Prüfpunktperiode kann durch die Speichergröße des Puffers definiert sein. Typischerweise weist dieser Puffer einen Bruchteil der Speicherkapazität der Registerdatei auf, da an jedem Prüfpunkt ein Räumen auftritt. Der Puffer kann beispielsweise, im Vergleich zu 128 Registern, zwanzig Register in der Registerdatei umfassen. Die Registerdatei der Erfindung kann einen zusätzlichen Leseport mit der Registerdatei nutzen, um einen zusätzlichen Lesevorgang auszuführen. Nach bestimmten Aspekten kann die Erfindung den zusätzlichen Lesevorgang für jeden Schreibvorgang an die Registerdatei ausführen. Alternativ kann die Erfindung den zusätzlichen Lesevorgang für einen Teilsatz der Schreibvorgänge an die Registerdatei ausführen.
  • Die Erfindung schützt so den Prozessor vor versehentlichen Datenfehlern, wie z. B. einem verfälschten spekulativen Schreibvorgang an die Registerdatei. Am Ende jeder Pipeline, die von Fachleuten häufig als „Schreib-Zurück"-Stufe identifiziert wird, wird die Registerdatei beschrieben. Eine Verzögerung bei der Schreib-Zurück-Stufe erhöht die Umgehungslogik. Dementsprechend entwirft die Erfindung die Registerdatei vorzugsweise bei normalen Schreib-Zurück-Operationen; es wird jedoch eine Sicherungskopie des betroffenen Registers innerhalb des Puffers im Falle von Datenfehlern gemacht. Bei einem Aspekt tritt die Verwendung von Prüfpunkten nach jeder feststehenden Anzahl von Zyklen auf; ein größerer Puffer erhöht die Zeitscheibe, die zur Wiedergewinnung und zwischen den Prüfpunkten verfügbar ist. Vor jedem Registerschreibvorgang wird der bisherige Wert gelesen und im Puffer gespeichert. An jedem Prüfpunkt können daher die älteren Daten erneut an die Registerdatei geschrieben werden, so daß das Programm auf eine bisherige Prüfpunktposition zurückgreifen kann (Backup) (z. B. über den Programmzähler), um die Anweisungen erneut auszuführen. Die Erfindung umgeht daher Fehler, die durch zufällige kosmische Strahlen oder Alphapartikel in der Prozessorlogik verursacht wurden.
  • Bei noch einem anderen Aspekt umgeht die Erfindung eine zusätzliche Umgehungslogik, die ansonsten aufgrund des zusätzlichen Lesevorgangs erforderlich wäre, indem die Registerdatei während einer Pipelineausführung der Instruktionen zum gleichen Zeitpunkt wie die Anweisungsoperanden gelesen werden. In bestimmten RISC-Prozessoren existiert bereits eine Umgehungslogik, um dies zu erreichen. Dementsprechend kann der zusätzliche Lesevorgang der Erfindung kurz vor der Ausführungsstufe der Pipeline ausgeführt werden, da das Register, das durch die Anweisung impliziert wurde, soeben identifiziert worden ist.
  • Bei noch einem weiteren Aspekt nutzt die Erfindung ihren vorhandenen Schreibport, um Daten vom Puffer in die Registerdatei wiederzugewinnen; bei einem weiteren Aspekt wird eine zusätzliche Registerdatei-Schreibport verwendet. Vorzugsweise weist die Registerdatei einen zusätzlichen Leseport auf, um den zusätzlichen Lesevorgang auszuführen.
  • Vorzugsweise wird ein Fehlerkorrekturcode in Verbindung mit dem Puffer verwendet.
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen näher erörtert. Es zeigen:
  • 1 eine schematische Darstellung einer Registerdatei-Prüfpunktarchitektur der Erfindung;
  • 2 eine Registerdateiprüfpunktverwendung in einem Flußdiagramm gemäß der Erfindung; und
  • 3 eine Prüfpunkt-Zeitgebung gemäß Erfindung.
  • 1 zeigt eine Registerdatei-Prüfpunktarchitektur 10, die zur Verwendung mit der Erfindung geeignet ist. Die Architektur bzw. der Prozessor 10 kann z. B. als ein Hochleistungs-RISC-Prozessor funktionieren, der eine Registerdatei 12 mit 128 64-Bit-Registern verwendet. Die Registerdatei 12 weist mehrere Schreibports auf, die durch einen Schreibmultiplexer 14 verarbeitet werden, und mehrere Leseports, die durch einen Lesemultiplexer 16 verarbeitet werden. Ein Leseport 18 zur Registerdatei 12 kann verwendet werden, um auf Daten von der Registerdatei 12 zuzugreifen oder um Daten von derselben für eine vorübergehende Speicherung innerhalb des Puffers 20 zu lesen, wie hierin beschrieben ist. Ein Schreibport 19 kann verwendet werden, um die temporären Daten vom Puffer 20 an die Registerdatei 12 zu schreiben, wenn die Datenfehler erfaßt werden und um ein Programm erneut auszuführen.
  • Während des Betriebs liefert eine Anweisungseinheit 22 Anweisungen an eine Ausführungseinheit 24 mit einem Array von Pipeline-Ausführungseinheiten 26 durch einen Multiplexer 28. Ein Programmzähler 29 dient zum sequentiellen Schreiten durch die Programmteilprozesse des Programms, das jene Anweisungen initiiert. Die Pipelineausführungseinheiten 26 weisen Ausführungsstufen 30a bis 30n auf, um beispielsweise Hol- (F-), Dekodier- (D-), Ausführ- (E-) und Zurückschreiben- (W-) Operationen, die Fachleuten bekannt sind, auszuführen. Die Pipelinestufe 30n kann beispielsweise beliebige der Register innerhalb der Registerdatei 12 als eine Schreib-Zurück-Stufe W durch den Datenbus 32 und den Schreibmultiplexer 14 (der die mehreren Schreibports unterstützt) entwerfen. Einzelne Stufen 30 der Pipelines 26 können spekulative Daten an andere Ausführungseinheiten und/oder an die Registerdatei 12 durch die Umgehungslogik 40 übertragen. Diese spekulativen Daten können Gefahren innerhalb anderer einzelner Stufen 30 durch Bereitstellen der Datenweiterleitungsfähigkeit für die Architektur verringern. Diese spekulativen Daten dienen auch dazu, das Prozessorverhalten durch Schreiben spekulativer Daten in die Registerdatei 12 als prädiktiv für endgültig entworfene Lasten an die Register zu verbessern. Die Daten können von der Registerdatei 12 durch den Lesemultiplexer 16 (der die mehreren Leseports unterstützt) und den Datenbus 42 gelesen werden.
  • Vor dem Entwerfen bzw. dem Schreiben der Daten für ein Register innerhalb der Registerdatei 12 werden die bisherigen Daten dieses Registers an den Puffer 20 geschrieben. Dieser Lesevorgang wird vorzugsweise zur gleichen Zeit ausgeführt, wenn die Anweisungsoperanden für eine Anweisung in einer Pipeline 26 gelesen werden, die kurz vor der Ausführ-E-Stufe dieser Pipeline 26 steht. Wenn beispielsweise die Stufe 30c die Ausführstufe darstellt und die Stufe 30b die Dekodier-D-Stufe darstellt, dann können spekulative Daten, die einen in Zukunft entworfenen Speicher darstellen, von der Stufe 30b und durch den Bus 50, die Logik 40 und den Bus 56 an ein Register einer Registerdatei 12 übertragen werden. Die bisherigen Daten dieses Registers werden vor dem Speichern dieser spekulativen Last gelesen, so daß sie in einer Sicherungskopie gesichert werden. Allgemein werden die Daten vom Leseport 18 der Registerdatei 12 gelesen und im Speicher 20 durch den Bus 60 gespeichert. Andere Datenwege zwischen der Registerdatei 12 und dem Puffer 20 können jedoch als ein Aspekt der Entwurfsauswahl, wie z. B. durch den Bus 42, den Multiplexer 28, die Umgehungslogik 40 und den Bus 52, wie gezeigt verwendet werden.
  • Zusammenfassend werden die bisherigen Daten eines speziellen Registers innerhalb des Puffers 20 vor einer Registerladung dieses Registers in der Registerdatei 12 gespeichert. Die bisherigen Daten innerhalb dieses Registers werden über den Leseport 18 und den Bus 60 kurz vor dem Schreiben der neuen Daten in das Register der Registerdatei 12, z. B. bei einer Schreib-Zurück-Stufe durch den Bus 32, gelesen und im Puffer 20 gespeichert.
  • An jedem Prüfpunkt, der nachstehend ausführlicher definiert ist, wird der Prozessor 10 auf Datenfehler ausgewertet. Das Schreiben der Daten nach einem spekulativen Ladevorgang kann vorzugsweise während der Prüfung auf Datenfehler verzögert werden. Wenn keine Datenfehler seit dem letzen Prüfpunkt erfaßt worden sind, wird der Puffer 20 geräumt und die Verarbeitung der Anweisungen von der Einheit 24 wird fortgesetzt. Das oben genannte verzögerte Schreiben wird dann auch durchgeführt. Wenn Datenfehler erfaßt worden sind, dann wird die Registerdatei 12 erneut mit Daten aus dem Puffer 20 durch den Pufferschreibbus 70 und den Schreibport 19 (oder einen anderen Schreibport des verarbeiteten Schreibmultiplexers 14) geladen, und der Zähler 29 wird zurückgesetzt, um die Anweisungen entsprechend dem letzten Prüfpunkt erneut auszuführen. Die Verarbeitung wird bis zum nächsten Prüfpunkt fortgesetzt.
  • Der Verwendung von Prüfpunkten bei Registerdatei 12 geschieht folgendermaßen, wie durch das Flußdiagramm 100 von 2 dargestellt ist. Bei Schritt 102 wird eine Anweisung für einen Registerschreibvorgang (d. h. eine „Ladung") von Daten an ein Register (das veranschaulichend als Register „M" identifiziert ist) innerhalb der Registerdatei dekodiert. Vor dem Schreiben dieser Daten werden die bereits bestehenden Daten innerhalb des Registers „M" von der Registerdatei bei Schritt 104 gelesen und dann im Puffer bei Schritt 106 gespeichert. Das Register „M" kann beladen werden, wie anhand der dekodierten Anweisung bei Schritt 107 (Schritt 107 kann an anderen Positionen innerhalb des Flußdiagramms 100 auftreten) angewiesen wurde.
  • Wenn der aktuelle Zyklus keinem Prüfpunkt entspricht, wie bei Schritt 108 definiert ist, dann wird die Verarbeitung der anschließenden Anweisungsdekodierungen erneut bei Schritt 102 fortgesetzt. Wie in 3 dargestellt ist, geschieht die Verwendung von Prüfpunkten in aufeinanderfolgenden Zeiträumen, die als Prüfpunkte 180, die durch „X" Zyklen getrennt sind, identifiziert sind. Wenn der aktuelle Zyklus einem Prüfpunkt entspricht, dann wird die Architektur 10 bei Schritt 110 auf Datenfehler ausgewertet. Wenn keine Fehler existieren, wird der Puffer bei Schritt 112 geräumt, so daß neue Daten im Puffer und für einen Zeitraum, der sich bis zum nächsten Prüfpunkt erstreckt, gespeichert werden können. Die Verarbeitung wird anschließend bei Schritt 102, wie gezeigt ist, fortgesetzt. Wenn Fehler vorhanden sind, werden die Pipelines bei Schritt 114 eingefroren, und die Registerdatei wird mit Daten innerhalb des Puffers bis zum letzten Prüfpunkt bei Schritt 116 erneut beladen. Der Programmzähler wird zurückgesetzt, um dem letzten Prüfpunkt bei Schritt 118 zu entsprechen, und das Programm wird bei Schritt 120 erneut ausgeführt, um die Daten innerhalb des Zeitsprungs zwischen dem aktuellen und dem letzten Prüfpunkt zu überwinden. Die Verarbeitung wird nach dem Schritt 120 bis zu Schritt 102 fortgesetzt, wie gezeigt ist.
  • Fachleute werden darauf hingewiesen, daß die Pufferlogik 20 die Form einer Registerdatei annehmen kann. Typischerweise weist diese Registerdatei viel weniger Register als die Registerdatei 12 auf, da das Puffern nur zwischen den Prüfpunkten auftritt.

Claims (16)

  1. Verfahren zur Handhabung von Datenfehlern bei der Ausführung eines Programms in einem Prozessor (10) mit einer Pipeline, der eine Registeranordnung (12) mit einer Mehrzahl von Registern aufweist, mit folgenden Schritten für jeden Zyklus des Prozessors (10): falls der Zyklus keinem Prüfpunkt entspricht, Speichern einer Kopie von Daten, die in einem Register der Registeranordnung (12) enthalten sind, in einem Puffer, falls neue Daten in das Register einzuschreiben sind; falls der Zyklus einem Prüfpunkt entspricht, Überprüfen des Prozessors (10) auf Datenfehler aufgrund eines verfälschten spekulativen Schreibvorgangs in die Registeranordnung (12); falls ein Datenfehler vorliegt, Übertragen der in dem Puffer (20) seit einem vorhergehenden Prüfpunkt gespeicherten Daten von dem Puffer (20) an die Registeranordnung (12); und Zurücksetzen der Programmausführung auf einen Zyklus, der einem vorhergehenden Prüfpunkt entspricht, wobei der Abstand aufeinanderfolgender Prüfpunkte von der Speichergröße des Puffers (20) abhängt.
  2. Verfahren gemäß Anspruch 1, das nach dem Speichern der Kopie ferner ein Laden der neuen Daten in das Register aufweist.
  3. Verfahren nach Anspruch 1, das ein Laden (107) der neuen Daten in das Register gleichzeitig mit dem Speichern der Kopie aufweist.
  4. Verfahren nach einem der Ansprüche 1 bis 3, das ferner den Schritt des Räumens (112) des Puffers (20) aufweist, falls kein Datenfehler vorliegt.
  5. Verfahren gemäß einem der Ansprüche 1 bis 4, das ferner den Schritt des Einfrierens (114) der Ausführung von Anweisungen des Programms in Pipelines des Prozessors (10) aufweist, falls ein Datenfehler vorliegt.
  6. Verfahren gemäß einem der Ansprüche 1 bis 5, das ferner den Schritt des Zurücksetzens eines Programmzähler (29) des Prozessors (10) auf den vorhergehenden Prüfpunkt aufweist, falls ein Datenfehler vorliegt.
  7. Verfahren gemäß Anspruch 6, bei dem das Programm durch den Prozessor ab einer Zeit, die dem zurückgesetzten Programmzähler zugeordnet ist, neu ausgeführt wird.
  8. Verfahren gemäß einem der Ansprüche 1 bis 7, bei dem Fehlerkorrekturcodes bei der Datenspeicherung in dem Puffer verwendet werden.
  9. Prozessor (10) mit einer Pipeline, mit folgenden Merkmalen: einer Ausführungseinheit (24) mit einer Mehrzahl von Pipelines (26) zum Verarbeiten von Programmanweisungen eines Programms entsprechend einem Programmzähler (29) einer Registeranordnung (12) mit einer Mehrzahl von Registern, wobei eine oder mehrere Stufen (30) der Pipelines (26) Daten in ein Register der Registeranordnung (12) laden; und einem Puffer (20) zum Speichern einer Kopie von Daten in dem Register; wobei der Prozessor (10) wirksam ist, um für jeden Zyklus des Prozessors (10) – eine Kopie von Daten, die in einem Register der Registeranordnung (12) gespeichert sind, in dem Puffer (20) zu speichern, falls neue Daten in das Register einzuschreiben sind und falls der Zyklus keinem Prüfpunkt entspricht; – das Vorliegen eines Datenfehlers zu überprüfen, falls der Zyklus einem Prüfpunkt entspricht aufgrund eines verfälschten spekulativen Schreibvorgangs in die Registeranordnung (12); – die in dem Puffer (20) seit dem vorhergehenden Prüfpunkt gespeicherten Daten von dem Puffer (20) an die Registeranordnung (12) zu übertragen, falls ein Datenfehler vorliegt; und – die Programmausführung auf einen Zyklus zurückzusetzen, der einem vorhergehenden Prüfpunkt entspricht, wobei der Abstand aufeinander folgender Prüfpunkte von der Speichergröße des Puffers abhängt.
  10. Prozessor nach Anspruch 9, bei dem die Registeranordnung (12) eine zusätzliche Leseschnittstelle (18) zum Lesen der Daten aus dem Register aufweist.
  11. Prozessor gemäß Anspruch 9 oder 10, bei dem die Registeranordnung (12) eine Schreibschnittstelle (19) zum Schreiben der Daten aus dem Puffer (20) in das Register aufweist.
  12. Prozessor gemäß einem der Ansprüche 9 bis 11, der ferner einen oder mehrere Fehlerdetektoren zur Erfassung von Datenfehlern aufweist.
  13. Prozessor gemäß Anspruch 12, bei dem die Fehlerdetektoren redundante Logikbauelemente aufweisen.
  14. Prozessor gemäß einem der Ansprüche 9 bis 13, der ferner einen Fehlerkorrekturcode zur Datenwiedergewinnung von Daten aus dem Puffer (20) aufweist.
  15. Prozessor gemäß einem der Ansprüche 9 bis 14, der wirksam ist, um Daten in den Puffer (20) zu lesen, bevor eine Ausführungsstufe der Pipeline (26) einen Schreibvorgang in das Register bewirkt.
  16. Prozessor gemäß einem der Ansprüche 9 bis 15, bei dem der Programmzähler auf den vorhergehenden Prüfpunkt zurückgesetzt wird, wenn der Puffer (20) die Daten an die Registeranordnung (12) überträgt.
DE10304447A 2002-02-27 2003-02-04 Verfahren zur Handhabung von Datenfehlern in einem Prozessor mit Pipeline und derartiger Prozessor Expired - Fee Related DE10304447B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/084,533 US6941489B2 (en) 2002-02-27 2002-02-27 Checkpointing of register file
US10/084,533 2002-02-27

Publications (2)

Publication Number Publication Date
DE10304447A1 DE10304447A1 (de) 2003-09-18
DE10304447B4 true DE10304447B4 (de) 2006-11-02

Family

ID=27753492

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10304447A Expired - Fee Related DE10304447B4 (de) 2002-02-27 2003-02-04 Verfahren zur Handhabung von Datenfehlern in einem Prozessor mit Pipeline und derartiger Prozessor

Country Status (2)

Country Link
US (1) US6941489B2 (de)
DE (1) DE10304447B4 (de)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6629271B1 (en) * 1999-12-28 2003-09-30 Intel Corporation Technique for synchronizing faults in a processor having a replay system
US6941393B2 (en) * 2002-03-05 2005-09-06 Agilent Technologies, Inc. Pushback FIFO
US7440884B2 (en) * 2003-01-23 2008-10-21 Quickturn Design Systems, Inc. Memory rewind and reconstruction for hardware emulator
US7437593B2 (en) * 2003-07-14 2008-10-14 International Business Machines Corporation Apparatus, system, and method for managing errors in prefetched data
US7603528B2 (en) * 2004-10-08 2009-10-13 International Business Machines Corporation Memory device verification of multiple write operations
US7496787B2 (en) * 2004-12-27 2009-02-24 Stratus Technologies Bermuda Ltd. Systems and methods for checkpointing
US7487334B2 (en) * 2005-02-03 2009-02-03 International Business Machines Corporation Branch encoding before instruction cache write
US7478276B2 (en) * 2005-02-10 2009-01-13 International Business Machines Corporation Method for checkpointing instruction groups with out-of-order floating point instructions in a multi-threaded processor
US7467325B2 (en) 2005-02-10 2008-12-16 International Business Machines Corporation Processor instruction retry recovery
CN100388230C (zh) * 2005-04-18 2008-05-14 普立尔科技股份有限公司 相机程序的检测与更新方法
US7389455B2 (en) * 2005-05-16 2008-06-17 Texas Instruments Incorporated Register file initialization to prevent unknown outputs during test
US7409589B2 (en) * 2005-05-27 2008-08-05 International Business Machines Corporation Method and apparatus for reducing number of cycles required to checkpoint instructions in a multi-threaded processor
US7516361B2 (en) * 2005-06-27 2009-04-07 Sun Microsystems, Inc. Method for automatic checkpoint of system and application software
US7555424B2 (en) 2006-03-16 2009-06-30 Quickturn Design Systems, Inc. Method and apparatus for rewinding emulated memory circuits
US8020072B2 (en) * 2006-10-25 2011-09-13 International Business Machines Corporation Method and apparatus for correcting data errors
US7739547B2 (en) * 2007-06-07 2010-06-15 International Business Machines Corporation Failure recovery and error correction techniques for data loading in information warehouses
EP2159709B1 (de) * 2007-06-15 2013-01-02 Fujitsu Limited Fehlerkorrekturverfahren und datenverarbeitungselement
US7865769B2 (en) * 2007-06-27 2011-01-04 International Business Machines Corporation In situ register state error recovery and restart mechanism
US10020037B2 (en) * 2007-12-10 2018-07-10 Intel Corporation Capacity register file
US8301992B2 (en) * 2009-08-07 2012-10-30 International Business Machines Corporation System and apparatus for error-correcting register files
US8924692B2 (en) 2009-12-26 2014-12-30 Intel Corporation Event counter checkpointing and restoring
US9063747B2 (en) * 2011-04-28 2015-06-23 Freescale Semiconductor, Inc. Microprocessor systems and methods for a combined register file and checkpoint repair register
US8898516B2 (en) * 2011-12-09 2014-11-25 Toyota Jidosha Kabushiki Kaisha Fault-tolerant computer system
US9251002B2 (en) 2013-01-15 2016-02-02 Stratus Technologies Bermuda Ltd. System and method for writing checkpointing data
WO2015102874A2 (en) 2013-12-30 2015-07-09 Stratus Technologies Bermuda Ltd. Method of delaying checkpoints by inspecting network packets
WO2015102875A1 (en) 2013-12-30 2015-07-09 Stratus Technologies Bermuda Ltd. Checkpointing systems and methods of using data forwarding
US9652338B2 (en) 2013-12-30 2017-05-16 Stratus Technologies Bermuda Ltd. Dynamic checkpointing systems and methods
US9256497B2 (en) * 2014-03-25 2016-02-09 Intel Corporation Checkpoints associated with an out of order architecture
US10949213B2 (en) * 2018-12-05 2021-03-16 International Business Machines Corporation Logical register recovery within a processor
US11403109B2 (en) * 2018-12-05 2022-08-02 International Business Machines Corporation Steering a history buffer entry to a specific recovery port during speculative flush recovery lookup in a processor
US11068267B2 (en) * 2019-04-24 2021-07-20 International Business Machines Corporation High bandwidth logical register flush recovery

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5692121A (en) * 1995-04-14 1997-11-25 International Business Machines Corporation Recovery unit for mirrored processors
US6065107A (en) * 1996-09-13 2000-05-16 International Business Machines Corporation System for restoring register data in a pipelined data processing system using latch feedback assemblies

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3736566A (en) * 1971-08-18 1973-05-29 Ibm Central processing unit with hardware controlled checkpoint and retry facilities
US5119483A (en) * 1988-07-20 1992-06-02 Digital Equipment Corporation Application of state silos for recovery from memory management exceptions
US5269017A (en) * 1991-08-29 1993-12-07 International Business Machines Corporation Type 1, 2 and 3 retry and checkpointing
US5568380A (en) * 1993-08-30 1996-10-22 International Business Machines Corporation Shadow register file for instruction rollback
US6629271B1 (en) * 1999-12-28 2003-09-30 Intel Corporation Technique for synchronizing faults in a processor having a replay system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5692121A (en) * 1995-04-14 1997-11-25 International Business Machines Corporation Recovery unit for mirrored processors
US6065107A (en) * 1996-09-13 2000-05-16 International Business Machines Corporation System for restoring register data in a pipelined data processing system using latch feedback assemblies

Also Published As

Publication number Publication date
US20030163763A1 (en) 2003-08-28
US6941489B2 (en) 2005-09-06
DE10304447A1 (de) 2003-09-18

Similar Documents

Publication Publication Date Title
DE10304447B4 (de) Verfahren zur Handhabung von Datenfehlern in einem Prozessor mit Pipeline und derartiger Prozessor
DE69829778T2 (de) Ablaufverfolgungspuffer ausserhalb der pipeline für befehlswiedergabe nach spekulationsfehler
DE19781995C2 (de) Prozessor mit einer Wiederhol-Architektur
DE102018112790A1 (de) Sichere Doppelpufferung unter Verwendung sicherer verketteter DMA-Listen
DE602004001869T2 (de) Fehlererkennung und fehlerbehebung für systematische und zufällige fehler innerhalb einer verarbeitungsstufe einer integrierten schaltung
DE3685913T2 (de) Vektorenverarbeitung.
US20080077782A1 (en) Restoring a register renaming table within a processor following an exception
DE112011101364B4 (de) Fehlerbehebung in Multithread-Code
DE69133302T2 (de) Registerabbildung in einem einzigen Taktzyklus
DE69534148T2 (de) Rechnersystem zur Ausführung von Verzweigungsbefehlen
DE112009000117T5 (de) Prozessor mit einer Hybridredundanz zum Schutz vor Logikfehlern
DE60005860T2 (de) Ablaufsteuerung zum ausgeben und wiederausgeben von ketten abhängiger befehle
US20060179346A1 (en) Method for checkpointing instruction groups with out-of-order floating point instructions in a multi-threaded processor
DE4220198A1 (de) Wiederherstellungsprotokollieren bei vorliegen von schnappschuss-dateien durch ordnen des pufferspeicherladens
DE19952272A1 (de) Verfahren und System zum Prüfen von auf eingebetteten Bausteinen basierenden integrierten Systemchip-Schaltungen
DE112011105042T5 (de) Indikatoren zur Aufzeichnung einer letzten Verzweigung für einen Transaktionsspeicher
DE69633474T2 (de) Adressierungsverfahren zur nicht-sequentiellen Ausführung von Ladebefehlen hinsichtlich Speicherungsbefehlen
US20080276077A1 (en) Method To Reduce The Number Of Load Instructions Searched By Stores And Snoops In An Out-Of-Order Processor
DE102011085989A1 (de) Verfahren und Vorrichtung zum Ausführen von parallelen Speicherlese- und Speicherschreiboperationen
DE60206555T2 (de) Fehlererkennung von Austauschdaten
DE19824289C2 (de) Pipelineverarbeitungsmaschine
DE19526008A1 (de) Vertikal partitionierter, primärer Befehls-Cache-Speicher
DE102011110151B4 (de) Halbleitervorrichtung und Verfahren zum Betreiben einer Pipeline-Ausgleichseinrichtung in einer Halbleitervorrichtung
DE19782106B4 (de) Daten-Cache mit Datenspeicherung und Tag-Logik bei unterschiedlichen Takten
DE69626263T2 (de) System zur Zuteilung mehrerer Befehle ohne Verzweigungsunterbrechung in einem Pipelineprozessor

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8127 New person/name/address of the applicant

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE

8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20130903