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 PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1405—Saving, 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.
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üfpunktarchitektur10 , die zur Verwendung mit der Erfindung geeignet ist. Die Architektur bzw. der Prozessor10 kann z. B. als ein Hochleistungs-RISC-Prozessor funktionieren, der eine Registerdatei12 mit 128 64-Bit-Registern verwendet. Die Registerdatei12 weist mehrere Schreibports auf, die durch einen Schreibmultiplexer14 verarbeitet werden, und mehrere Leseports, die durch einen Lesemultiplexer16 verarbeitet werden. Ein Leseport18 zur Registerdatei12 kann verwendet werden, um auf Daten von der Registerdatei12 zuzugreifen oder um Daten von derselben für eine vorübergehende Speicherung innerhalb des Puffers20 zu lesen, wie hierin beschrieben ist. Ein Schreibport19 kann verwendet werden, um die temporären Daten vom Puffer20 an die Registerdatei12 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ührungseinheit24 mit einem Array von Pipeline-Ausführungseinheiten26 durch einen Multiplexer28 . Ein Programmzähler29 dient zum sequentiellen Schreiten durch die Programmteilprozesse des Programms, das jene Anweisungen initiiert. Die Pipelineausführungseinheiten26 weisen Ausführungsstufen30a bis30n auf, um beispielsweise Hol- (F-), Dekodier- (D-), Ausführ- (E-) und Zurückschreiben- (W-) Operationen, die Fachleuten bekannt sind, auszuführen. Die Pipelinestufe30n kann beispielsweise beliebige der Register innerhalb der Registerdatei12 als eine Schreib-Zurück-Stufe W durch den Datenbus32 und den Schreibmultiplexer14 (der die mehreren Schreibports unterstützt) entwerfen. Einzelne Stufen30 der Pipelines26 können spekulative Daten an andere Ausführungseinheiten und/oder an die Registerdatei12 durch die Umgehungslogik40 übertragen. Diese spekulativen Daten können Gefahren innerhalb anderer einzelner Stufen30 durch Bereitstellen der Datenweiterleitungsfähigkeit für die Architektur verringern. Diese spekulativen Daten dienen auch dazu, das Prozessorverhalten durch Schreiben spekulativer Daten in die Registerdatei12 als prädiktiv für endgültig entworfene Lasten an die Register zu verbessern. Die Daten können von der Registerdatei12 durch den Lesemultiplexer16 (der die mehreren Leseports unterstützt) und den Datenbus42 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 Puffer20 geschrieben. Dieser Lesevorgang wird vorzugsweise zur gleichen Zeit ausgeführt, wenn die Anweisungsoperanden für eine Anweisung in einer Pipeline26 gelesen werden, die kurz vor der Ausführ-E-Stufe dieser Pipeline26 steht. Wenn beispielsweise die Stufe30c die Ausführstufe darstellt und die Stufe30b die Dekodier-D-Stufe darstellt, dann können spekulative Daten, die einen in Zukunft entworfenen Speicher darstellen, von der Stufe30b und durch den Bus50 , die Logik40 und den Bus56 an ein Register einer Registerdatei12 ü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 Leseport18 der Registerdatei12 gelesen und im Speicher20 durch den Bus60 gespeichert. Andere Datenwege zwischen der Registerdatei12 und dem Puffer20 können jedoch als ein Aspekt der Entwurfsauswahl, wie z. B. durch den Bus42 , den Multiplexer28 , die Umgehungslogik40 und den Bus52 , wie gezeigt verwendet werden. - Zusammenfassend werden die bisherigen Daten eines speziellen Registers innerhalb des Puffers
20 vor einer Registerladung dieses Registers in der Registerdatei12 gespeichert. Die bisherigen Daten innerhalb dieses Registers werden über den Leseport18 und den Bus60 kurz vor dem Schreiben der neuen Daten in das Register der Registerdatei12 , z. B. bei einer Schreib-Zurück-Stufe durch den Bus32 , gelesen und im Puffer20 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 Puffer20 geräumt und die Verarbeitung der Anweisungen von der Einheit24 wird fortgesetzt. Das oben genannte verzögerte Schreiben wird dann auch durchgeführt. Wenn Datenfehler erfaßt worden sind, dann wird die Registerdatei12 erneut mit Daten aus dem Puffer20 durch den Pufferschreibbus70 und den Schreibport19 (oder einen anderen Schreibport des verarbeiteten Schreibmultiplexers14 ) geladen, und der Zähler29 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ßdiagramm100 von2 dargestellt ist. Bei Schritt102 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 Schritt104 gelesen und dann im Puffer bei Schritt106 gespeichert. Das Register „M" kann beladen werden, wie anhand der dekodierten Anweisung bei Schritt107 (Schritt107 kann an anderen Positionen innerhalb des Flußdiagramms100 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 Schritt102 fortgesetzt. Wie in3 dargestellt ist, geschieht die Verwendung von Prüfpunkten in aufeinanderfolgenden Zeiträumen, die als Prüfpunkte180 , die durch „X" Zyklen getrennt sind, identifiziert sind. Wenn der aktuelle Zyklus einem Prüfpunkt entspricht, dann wird die Architektur10 bei Schritt110 auf Datenfehler ausgewertet. Wenn keine Fehler existieren, wird der Puffer bei Schritt112 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 Schritt102 , wie gezeigt ist, fortgesetzt. Wenn Fehler vorhanden sind, werden die Pipelines bei Schritt114 eingefroren, und die Registerdatei wird mit Daten innerhalb des Puffers bis zum letzten Prüfpunkt bei Schritt116 erneut beladen. Der Programmzähler wird zurückgesetzt, um dem letzten Prüfpunkt bei Schritt118 zu entsprechen, und das Programm wird bei Schritt120 erneut ausgeführt, um die Daten innerhalb des Zeitsprungs zwischen dem aktuellen und dem letzten Prüfpunkt zu überwinden. Die Verarbeitung wird nach dem Schritt120 bis zu Schritt102 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 Registerdatei12 auf, da das Puffern nur zwischen den Prüfpunkten auftritt.
Claims (16)
- 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. - Verfahren gemäß Anspruch 1, das nach dem Speichern der Kopie ferner ein Laden der neuen Daten in das Register aufweist.
- Verfahren nach Anspruch 1, das ein Laden (
107 ) der neuen Daten in das Register gleichzeitig mit dem Speichern der Kopie aufweist. - 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. - 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. - 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. - 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.
- Verfahren gemäß einem der Ansprüche 1 bis 7, bei dem Fehlerkorrekturcodes bei der Datenspeicherung in dem Puffer verwendet werden.
- 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. - Prozessor nach Anspruch 9, bei dem die Registeranordnung (
12 ) eine zusätzliche Leseschnittstelle (18 ) zum Lesen der Daten aus dem Register aufweist. - 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. - Prozessor gemäß einem der Ansprüche 9 bis 11, der ferner einen oder mehrere Fehlerdetektoren zur Erfassung von Datenfehlern aufweist.
- Prozessor gemäß Anspruch 12, bei dem die Fehlerdetektoren redundante Logikbauelemente aufweisen.
- Prozessor gemäß einem der Ansprüche 9 bis 13, der ferner einen Fehlerkorrekturcode zur Datenwiedergewinnung von Daten aus dem Puffer (
20 ) aufweist. - 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. - 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.
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)
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)
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)
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 |
-
2002
- 2002-02-27 US US10/084,533 patent/US6941489B2/en not_active Expired - Lifetime
-
2003
- 2003-02-04 DE DE10304447A patent/DE10304447B4/de not_active Expired - Fee Related
Patent Citations (2)
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 |