DE60310308T2 - Verfahren und Gerät zur Fehlertoleranz für temporäre Ergebnisse in einer zentralen Verarbeitungseinheit - Google Patents

Verfahren und Gerät zur Fehlertoleranz für temporäre Ergebnisse in einer zentralen Verarbeitungseinheit Download PDF

Info

Publication number
DE60310308T2
DE60310308T2 DE60310308T DE60310308T DE60310308T2 DE 60310308 T2 DE60310308 T2 DE 60310308T2 DE 60310308 T DE60310308 T DE 60310308T DE 60310308 T DE60310308 T DE 60310308T DE 60310308 T2 DE60310308 T2 DE 60310308T2
Authority
DE
Germany
Prior art keywords
cpu
intermediate result
register
results
result
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 - Lifetime
Application number
DE60310308T
Other languages
English (en)
Other versions
DE60310308D1 (de
Inventor
Marc Menlo Park Tremblay
Shailender San Francisco Chaudhry
Quinn A. Sunnyvale Jacobson
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of DE60310308D1 publication Critical patent/DE60310308D1/de
Application granted granted Critical
Publication of DE60310308T2 publication Critical patent/DE60310308T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1032Simple parity
    • 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
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Description

  • Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich auf das Bereitstellen von Fehlertoleranz in Computersystemen, einschließlich einer Fehlertoleranz für Zwischenergebnisse in einer zentralen Verarbeitungseinheit (CPU), bevor die Zwischenergebnisse an den Architekturzustand der CPU übergeben werden.
  • Hintergrund der Erfindung
  • Die schnellen Fortschritte in der Halbleitertechnologie machen es nunmehr möglich, größere Schaltungen in einen Mikroprozessorchip aufzunehmen. Unglücklicherweise sind Speicherelemente innerhalb einer solchen Schaltung sehr empfänglich für zufällige Bitfehler. Je mehr Schaltung also in einen Mikroprozessorchip gepackt wird, desto wahrscheinlicher ist es, dass zufällige Bitfehler auftreten.
  • Zur Behandlung dieses Problems verwenden einige Mikroprozessorsysteme Korrekturcodes, um in Cachespeichern in einem Mikroprozessorchip gespeicherte Daten zu schützen. Auch wenn Cachespeicher eine beträchtliche Anzahl des Speichers innerhalb eines Mikroprozessorchips ausmachen, bleiben viele andere Speicherelemente ungeschützt.
  • Ein Teil der verbleibenden ungeschützten Speicherelemente liegt innerhalb eines Anhanges (der auch als Ergebnispuffer oder Arbeitsregisterdatei bezeichnet wird) in dem Mikroprozessorsystem. In einigen Prozessoren kann ein Anhang Hunderte von Registern enthalten, was es wahrscheinlich macht, dass schließlich auch ein zufälliger Bitfehler innerhalb des Anhangs auftritt. Der Anhang speichert Zwischenergebnisse von Rechneroperationen, die darauf warten, an den Architekturzustand einer zentralen Verarbeitungseinheit (CPU) übergeben zu werden. Beispielsweise kann der Anhang das Ergebnis einer Additionsoperation speichern, bevor das Ergebnis in ein Zielregister in der CPU geschrieben werden kann. Wenn das Ergebnis schließlich in das Zielregister geschrieben wird, welches in einer Registerdatei liegt, die durch die Befehlssatzarchitektur festgelegt wird, so wird es „in der Architektur sichtbar".
  • Man beachte, dass es bei der Verwendung von Fehlerkorrekturcodes für den Schutz von Zwischenergebnissen innerhalb eines Anhangs viele Probleme gibt. Der Vorgang der Erzeugung des Fehlerkorrekturcodes und der nachfolgende Prozess des Erfassens eines Fehlers kann eine beträchtliche Zeit erfordern. Dies macht es dann praktisch unmöglich Fehlerkorrekturcodes zum Schutz von Zwischenergebnissen zu verwenden, da diese Zwischenergebnisse nur für eine kurze Zeitdauer existieren. Darüber hinaus erfordern Fehlerkorrekturcodes eine zusätzliche Schaltung, die die Größe und Komplexität einer CPU vergrößern kann.
  • Die WO 01/25904 offenbart einen Prozessor, der eine präzise Abfanghandhabung für Ladebefehle durchführt, die außerhalb der Reihenfolge und spekulativ sind. Daten und Steuerinformationen von Ladebefehlen werden in einem Ladeanhang gestapelt, bis alle Ausnahmen in demselben Befehlspaket wie die Ladeanweisung erfasst sind. Wenn eine Ausnahme auftritt, wird jeder Ladebefehl in demselben Befehlspaket wie derjenige Befehl, welcher die Ausnahme verursacht hat, oder jeder Ladebefehl, der jünger als der Befehl ist, welcher die Ausnahme verursacht hat, gelöscht.
  • Die US 4701915 offenbart ein Fehlerreparatursystem in einem Pipelinedatenprozessor. Der Prozessor enthält einen Schaltkreis für die Paritätsüberprüfung, um Befehle, die aus der Steuerstufe gelesen werden, zu überprüfen. Der Prozessor stoppt zumindest einen Teil der Pipelineverarbeitung unmittelbar nach Erfassung eines Paritätsfehlers, was dann ermöglicht, dass ein Fehlerkorrekturschaltkreis den Fehler korrigiert und den Befehl erneut in die Steuerstufe schreibt.
  • Zusammenfassung der Erfindung
  • Eine Ausführungsform der vorliegenden Erfindung stellt ein System bereit, welches Bitfehler in Zwischenergebnissen in der zentralen Verarbeitungseinheit (CPU) korrigiert. Während des Betriebs empfängt das System ein Zwischenergebnis während der Ausführung eines durchlaufenden Befehls. Als Nächstes erzeugt das System ein Paritätsbit für das Zwischenergebnis und speichert das Zwischenergebnis und das Paritätsbit in einem Zwischenregister innerhalb der CPU. Das Zwischenregister ist innerhalb eines Anhanges angeordnet, der Zwischenergebnisse für durchlaufende bzw. in der Ausführung befindliche Befehle speichert, bevor die Zwischenergebnisse in eine Registerdatei geschrieben werden. Beispielsweise kann der Anhang bei einem Prozessor, der eine Ausführung außerhalb der Reihenfolge unterstützt, ein Ergebnispuffer sein, welcher Ergebnisse, die außerhalb der Reihenfolge erzeugt wurden, zeitweise hält, bis sie wieder in die Reihenfolge zurückkehren können. Bevor das Zwischenergebnis an den Architekturzustand der CPU zurückgegeben wird, überprüft das System das Zwischenergebnis und das Paritätsbit, um einen Fehler zu erfassen. Falls ein Bitfehler erfasst wird, führt das System eine Mikro-Abfangoperation durch, um den Befehl erneut auszuführen, welcher das Zwischenergebnis erzeugt hat, und dadurch das Zwischenergebnis erneut zu erzeugen. Ansonsten übergibt das System, wenn kein Bitfehler erfasst wird, das Zwischenergebnis an den Architekturzustand der CPU. Ein derartiger Ansatz hilft dabei, ein Verfahren und eine Vorrichtung zum Reparieren von zufälligen Bitfehlern bereitzustellen, die in Zwischenergebnissen auftreten, und zwar ohne die oben beschriebenen Probleme der Verwendung von Fehlerkorrekturcodes.
  • In einer Variante ist der Anhang als eine First-In-First-Out (FIFO)-Struktur organisiert mit Pipelinestufen, durch welche die Zwischenergebnisse und das Paritätsbit weiterlaufen.
  • In einer weiteren Variante lässt das System jüngere Befehle Zwischenergebnisse in dem Anhang nachschlagen, anstatt darauf zu warten, dass die Zwischenergebnisse an die Registerdatei übergeben werden. Dieser Nachschlagevorgang kann das Durchführen einer Suche für einen speziellen Zielregisterindex in einem inhaltsadressierbaren Speicher (CAM) umfassen. Man beachte, dass, da es für ein gegebenes Zielregister möglich ist, mehr als einmal in dem Anhang zu erscheinen, die CAM-Suche möglicherweise mehr als ein Zwischenergebnis liefern kann. Um diese Möglichkeit zu handhaben, kann die CAM-Suche unter Verwendung eines „Prioritäts-CAM" durchgeführt werden, was das passende Zwischenergebnis liefert, das durch den letzten Befehl in der Ausführungsreihenfolge erzeugt wurde, welche durch das Programm spezifiziert wird.
  • In einer Variante dieser Ausführungsform umfasst das Übergeben des Zwischenergebnisses an den Architekturzustand der CPU und das Schreiben des Zwischenergebnisses in ein in der Architektur sichtbares Register in einer Registerdatei.
  • In einer Variante dieser Ausführungsform spült die Mikroabfangoperation die Befehlspipeline der CPU.
  • Diese Aufgaben werden in vorteilhafter Weise im Wesentlichen durch Anwenden der Merkmale gelöst, welche in den unabhängigen Ansprüchen dargelegt sind. Weitere Verbesserungen werden durch die abhängigen Ansprüche bereitgestellt.
  • Kurzbeschreibung der Figuren
  • Verschiedene Ausführungsformen der Erfindung werden nun im Einzelnen lediglich beispielhaft beschrieben, wobei auf die folgenden Zeichnungen Bezug genommen wird:
  • 1 zeigt eine CPU gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 2 zeigt einen Anhang gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 3 ist ein Flussdiagramm, welches den Vorgang des Bereitstellens von Fehlerkorrektur für ein Zwischenergebnis gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht.
  • Genaue Beschreibung
  • Die folgende Beschreibung wird hier wiedergegeben, um Fachleute auf diesem Gebiet in die Lage zu versetzen, die Erfindung nachzuarbeiten und zu verwenden, und sie wird im Kontext einer bestimmten Anwendung und deren Erfordernissen bereitgestellt. Für Fachleute auf diesem Gebiet liegen verschiedene Modifikationen der offenbarten Ausführungsformen auf der Hand und die allgemeinen Prinzipien, die hier definiert sind, können auch auf andere Ausführungsformen und Anwendungen angewendet werden, ohne vom Schutzumfang der vorliegenden Erfindung abzuweichen. Demnach ist die vorliegende Erfindung nicht auf die dargestellten Ausführungsformen beschränkt, sondern ihr soll der breiteste Schutzumfang zuerkannt werden, der mit den hier offenbarten Prinzipien und Merkmalen konsistent ist, wie sie in den anhängigen Ansprüchen dargelegt sind.
  • 1 zeigt die Struktur einer zentralen Verarbeitungseinheit (CPU) 100 gemäß einer Ausführungsform der vorliegenden Erfindung. Die CPU 100 kann im Allgemeinen in irgendeinem beliebigen Typ eines Computersystems angeordnet sein, einschließlich eines Computersystems auf Basis eines Mikroprozessors, eines Mainframe-Computers, eines digitalen Signalprozessors, einer tragbaren Computereinrichtung, eines Personal-Organizers, einer Gerätesteuerung und einer Rechenmaschine innerhalb eines Gerätes, ohne jedoch hierauf beschränkt zu sein.
  • Die CPU 100 enthält eine Registerdatei 102 zum Speichern von Operanden für Rechenoperationen und Ergebnisse von Rechenoperationen. Die CPU 100 enthält auch einen Cachespeicher 110 zum Speichern von Code und Daten. Man beachte, dass der Cachespeicher 110 einen getrennten Befehlscache und einen Datencache umfassen kann. Man beachte auch, dass der Cachespeicher 110 ein Cache der ersten Ebene (L1 – level-one-cache) sein kann, der mit einem oder mehreren Cachespeichern niedrigerer Ebene (lower level caches) kommuniziert.
  • Wie in 1 dargestellt, laufen Operanden von der Registerdatei 102 durch die Pipeline 106, welche Rechenoperationen mit den Operanden durchführt, um ein oder mehrere Ergebnisse zu erzeugen. Diese Ergebnisse werden in die Registerdatei 102 zurückgeschrieben. Die Pipeline 106 schickt Zwischenergebnisse in den Anhang 108, welcher die Zwischenergebnisse speichert, bis sie an die Registerdatei 102 übergeben werden können.
  • Eine Bypass-Schaltung 104 ermöglicht es, dass die Pipeline 106 Operanden entweder von der Registerdatei 102 oder von dem Anhang 108 empfängt. Dies ermöglicht es, dass ein Zwischenergebnis direkt in die Pipeline 106 zurückgegeben werden kann, ohne dass es zuerst in die Registerdatei 102 geschrieben werden muss.
  • Man beachte, dass dann, wenn ein Wert von einem speziellen Register in der Registerdatei 102 geholt wird, ein gleichzeitiges Nachschlagen in dem Anhang 108 durchgeführt wird, um festzustellen, ob ein Zwischenergebnis in dem Anhang 108 für dasselbe Register bestimmt ist. Wenn dies der Fall ist, bewirkt die Bypass-Schaltung 104, dass das Zwischenergebnis anstelle des alten aus der Registerdatei 102 geholten Wertes in die Pipeline 106 verschoben wird.
  • Man beachte auch, dass Zwischenergebnisse innerhalb des Anhanges 108 durch Paritätsbits geschützt sind, welche es ermöglichen, dass Einzelbitfehler in den Zwischenergebnissen erfasst werden. Dies macht es möglich, Fehler zu korrigieren, wie es genauer unter Bezug auf die 2 und 3 beschrieben wird.
  • 2 zeigt die Struktur des Anhanges 108 gemäß einer Ausführungsform der vorliegenden Erfindung. Wie in 2 dargestellt ist, empfängt der Anhang 108 Zwischenergebnisse aus der Pipeline 106.
  • Die Pipeline 106 kann verschiedene Rechenschaltungen enthalten. In der besonderen Ausführungsform, die in 2 dargestellt ist, enthält die Pipeline 106 einen Fließkomma-Addierer-Schaltkreis 202, der aus einer Anzahl von Pipelinestufen 243-246 aufgebaut ist. Die Pipeline 106 enthält auch eine Ganzzahlen-Arithmetische-Logikeinheit (ALU) 207 und eine Ganzzahlen-ALU 208. Man beachte, dass die ALU 207 und die ALU 208 Zwischenergebnisse erzeugen, die in dem Anhang 108 warten, bis der Fließkomma-Addierer-Schaltkreis 202 ein damit zusammenhängendes Ergebnis erzeugt. Dies ermöglicht es, dass die Zwischenergebnisse und das damit zusammenhängende Ergebnis gleichzeitig an die Registerdatei 102 übergeben werden.
  • Die ALU 207 empfängt Operanden von Multiplexern 203 und 204 in der Bypass-Schaltung 104. Die Multiplexer 203 und 204 ermöglichen es, dass die ALU 207 Operanden entweder von der Registerdatei 102 oder vom Anhang 108 empfängt. In ähnlicher Weise empfängt die ALU 208 Operanden von Multiplexern 203 und 204 innerhalb der Bypass-Schaltung 104 und dies ermöglicht es, dass die ALU 208 Operationen entweder von der Registerdatei 102 oder dem Anhang 108 empfängt. Man beachte, dass in einigen Ausführungsformen die Eingangsgrößen in dem Fließkomma-Addierungs-Schaltkreis 202 auch von dem Anhang 108 empfangen werden können.
  • Dieser Ausgang bzw. Ausgangswert der ALU 207 wird in einem Datenwortregister 209 zwischengespeichert („verriegelt"). Der Ausgang des Datenwortregisters 209 durchläuft den Paritätserzeugungsschaltkreis 211, um ein Paritätsbit 213 zu erzeugen. Dieses Paritätsbit 213 bewegt sich gemeinsam mit seinem zugehörigen Datenwort 214 und einem zugehörigen Registerzielindex 215 durch eine Anzahl von Pipelinestufen in dem Anhang 108. Vor der letzten Pipelinestufe durchlaufen das Paritätsbit 225 und das Datenwort 226 eine Paritätsüberprüfungsschaltung 237, die ein Fehlersignal 241 erzeugt. Das Fehlersignal 241 zeigt an, ob ein Paritätsfehler in der Kombination aus Paritätsbit 225 und Datenwort 226 vorliegt. Wenn dies der Fall ist, so führt das System einen Mikroabfangbefehl aus, um den Fehler zu beschreiben, wie es unten noch genauer unter Bezug auf 3 beschrieben wird. Man beachte, dass die Registerzielindizes 215, 221, 227 und 233 in den inhaltadressierbaren Speicherschaltkreis (CAM-Schaltkreis) 239 verschoben werden, der eine CAM-Suche durchführt, um festzustellen, ob der Index eines Zielregisters (welches gerade aus der Registerdatei 102 geholt wird) mit einem oder mehreren der Registerbestimmungs- bzw. Zielindizes 215, 221, 227 und 233 zusammenpasst. Wenn es eine Übereinstimmung gibt, so enthält das Zielregister veraltete Daten. In diesem Fall leitet der CAM-Schaltkreis 239 den aktuellsten Zwischenwert, der durch den letzten Befehl in der Ausführungsreihenfolge erzeugt wurde, welche durch das Programm angegeben wird, an die Bypass-Schaltung 104. Dies ermöglicht es, dass die Bypass-Schaltung 104 anstelle des veralteten Wertes, der aus der Registerdatei 102 geholt wurde, den aktuellsten Zwischenwert an die Pipeline 106 weiterleitet.
  • Man beachte, dass der Ausgang der ALU 208 einen ähnlichen Satz von Pipelinestufen in dem Anhang 108 durchläuft.
  • 3 ist ein Flussdiagramm, welches den Prozess der Bereitstellung der Fehlerkorrektur für ein Zwischenergebnis gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Während des Betriebs erzeugt die ALU 207 ein Zwischenergebnis für eine durchgeführte Transaktion, die in dem Datenwortregister 209 gespeichert wird (Schritt 302) (siehe 2). Als Nächstes verwendet das System den Paritätserzeugungsschaltkreis 211, um aus dem Zwischenergebnis ein Paritätsbit 213 zu erzeugen (Schritt 304).
  • Das System leitet dann das Zwischenergebnis, das Paritätsbit und einen zugehörigen Registerbestimmungs(Ziel)-Index durch die Pipelinestufen in den Anhang 108. Während des Durchlaufs durch den Anhang 108 kann ein jüngerer Befehl das Zwischenergebnis lesen, um eine Bypass- Operation durchzuführen, wenn der jüngere Befehl einen Operanden aus einem Register holt, der mit der zugehörigen Registerbestimmung (Registerziel) übereinstimmt (Schritt 306).
  • In der Nähe des Endes der Pipeline innerhalb des Anhangs 108 (bevor das Zwischenergebnis in die Registerdatei 102 geschrieben wird) verwendet das System den Paritätsüberprüfungsschaltkreis 237, um die Parität des Datenwortes und des zugehörigen Paritätsbits zu überprüfen (Schritt 308).
  • Wenn ein Paritätsfehler erfasst wird, so führt das System eine Mikroabfangoperation durch, welche die Pipeline spült und die Ausführung von dem Befehl ab erneut beginnt, der das verfälschte Zwischenergebnis erzeugt hat (Schritt 312). Dies bewirkt, dass der Befehl erneut ausgeführt wird, was das Zwischenergebnis wiederherstellt.
  • Man beachte, dass, da die meisten Fehler Übergangsereignisse sind, das einfache Wiedererzeugen des Ergebnisses zumeist den Fehler korrigiert. Um mit dauerhaften Fehlern umzugehen, wird jedes Mal dann, wenn ein Mikroabfang erzeugt wird, dieser protokolliert, so dass mehrere aufeinander folgende Mikroabfangereignisse einen Abfang auf Systemebene auslösen, der anzeigt, dass ein dauerhafter Hardwarefehler vorliegt.
  • Ansonsten erlaubt das System, wenn kein Paritätsfehler erfasst wird, dass das Zwischenergebnis an die Registerdatei 102 übergeben wird (Schritt 314).
  • Die vorstehenden Beschreibungen verschiedener Ausführungsformen der vorliegenden Erfindung sind für Zwecke der Veranschaulichung und Beschreibung gegeben worden, aber sie sollen weder erschöpfend sein noch die Erfindung auf die speziell offenbarten Formen beschränken. Beispielsweise kann die vorliegende Erfindung auf irgendein Zwischenergebnis angewendet werden, das durch eine CPU erzeugt wird und es soll nicht auf die speziellen Zwischenergebnisse beschränkt sein, die innerhalb des Anhangs 108 vorhanden sind, wie es in 2 veranschaulicht ist. In einer anderen Ausführungsform der vorliegenden Erfindung können also die Zwischenergebnisse in Registern gespeichert werden, die in der Registerdatei 102 nicht im Architekturbereich sichtbar sind. Diese nicht sichtbaren Register werden manchmal als „Arbeitsregisterdatei" für das Speichern von Zwischenergebnissen bezeichnet, im Gegensatz zu einer „Architekturregisterdatei" zum Speichern der Ergebnisse, die im Architekturbereich sichtbar sind. Dementsprechend liegen viele Modifikationen und Variationen für Fachleute auf dem Gebiet auf der Hand und dementsprechend soll der Schutzumfang der vorliegenden Erfindung durch die anhängigen Ansprüche definiert werden.

Claims (13)

  1. Verfahren zum Bereitstellen von Fehlertoleranz für Zwischenergebnisse innerhalb einer zentralen Verarbeitungseinheit (CPU) (100), welches aufweist: Empfangen eines Zwischenergebnisses für einen durchlaufenden Befehl, Erzeugen eines Paritätsbits für das Zwischenergebnis, Speichern des Zwischenergebnisses und des Paritätsbits in einem Zwischenregister innerhalb der CPU, wobei das Zwischenregister innerhalb eines Anhangs (108) angeordnet ist, der Zwischenergebnisse für durchlaufende Befehle speichert, bevor die Zwischenergebnisse in eine Registerdatei (102) geschrieben werden, Überprüfen des Zwischenergebnisses und des Paritätsbits, bevor das Zwischenergebnis dem Architekturzustand der CPU überlassen wird, um einen Bitfehler zu erfassen, falls ein Bitfehler erfaßt wird, Durchführen einer Mikroeinfangoperation, um den Befehl, welcher das Zwischenergebnis erzeugt hat, erneut auszuführen, um dadurch das Zwischenergebnis erneut zu erzeugen, und falls kein Bitfehler erfaßt wird, Überlassen des Zwischenergebnisses für den Architekturzustand der CPU.
  2. Verfahren nach Anspruch 1, wobei der Anhang als eine first-in-first-out-(FIFO)-Struktur mit Pipelinestufen organisiert ist und wobei das Zwischenergebnis und das Paritätsbit die Pipelinestufen durchlaufen.
  3. Verfahren nach Anspruch 1 oder 2, welches weiterhin aufweist, daß jüngere Befehle Zwischenergebnisse aus dem Anhang lesen dürfen, anstatt darauf warten zu müssen, daß Zwischenergebnisse der Registerdatei übergeben werden.
  4. Verfahren nach Anspruch 3, wobei das Lesen eines bestimmten Zwischenergebnisses aus dem Anhang das Durchführen einer Suche in einem inhaltsadressierbaren Speicher (CAM) nach einem bestimmten Zielregisterindex beinhaltet, welcher dem betreffenden Zwischenergebnis zugeordnet ist.
  5. Verfahren nach einem der vorstehenden Ansprüche, wobei das Übergeben des Zwischenergebnisses an den Architekturzustand der CPU das Schreiben des Zwischenergebnisses in ein für die Architektur sichtbares Register innerhalb einer Registerdatei beinhaltet.
  6. Verfahren nach einem der vorstehenden Ansprüche, wobei das Durchführen der Mikroeinfangoperation das Spülen der Befehlspipeline der CPU umfaßt.
  7. Vorrichtung, welche eine Fehlertoleranz für Zwischenergebnisse bereitstellt und welche aufweist: eine CPU (100), eine Registerdatei (102) innerhalb der CPU, einen Paritätserzeugungsschaltkreis (211, 212) innerhalb der CPU, welcher in der Weise ausgestaltet ist, daß er ein Paritätsbit für ein Zwischenergebnis erzeugt, welches einem durchlaufenden bzw. in Bearbeitung befindlichen Befehl zugeordnet ist, ein Zwischenregister innerhalb der CPU zum Speichern des Zwischenergebnisses und des Paritätsbits, wobei das Zwischenregister innerhalb eines Anhangs (108) angeordnet ist, der Zwischenergebnisse für in Bearbeitung befindliche Befehle speichert, bevor die Zwischenergebnisse in eine Registerdatei geschrieben werden, einen Paritätsüberprüfungsschaltkreis (237, 238) innerhalb der CPU, welcher in der Weise ausgestaltet ist, daß er das Zwischenergebnis und das Paritätsbit überprüft, um einen Fehler zu erfassen, bevor das Zwischenergebnis in die Registerdatei geschrieben wird, einen Mikroeinfangmechanismus, welcher so ausgelegt ist, daß er dann, wenn ein Fehler erfaßt wird, einen Mikroeinfangvorgang durchführt, um den Befehl, welcher das Zwischenergebnis erzeugt hat, erneut auszuführen, um dadurch das Zwischenergebnis erneut zu erzeugen, und einen Schreibemechanismus, wobei dann der Schreibmechanismus derart ausgestaltet ist, daß er dann, wenn kein Bitfehler erfaßt wird, das Zwischenergebnis an den Architekturzustand der CPU übergibt.
  8. Vorrichtung nach Anspruch 7, wobei der Schreibmechanismus so ausgestaltet ist, daß er das Zwischenergebnis in ein für die Architektur sichtbares Register innerhalb einer Registerdatei schreibt.
  9. Vorrichtung nach Anspruch 7 oder 8, wobei der Anhang als eine first-in-first-out-(FIGO)-Struktur mit Pipelinestufen organisiert ist, und wobei der Anhang in der Weise ausgestaltet ist, daß das Zwischenergebnis und das Paritätsbit die Pipelinestufen durchlaufen.
  10. Vorrichtung nach Anspruch 9, wobei der Anhang in der Weise ausgestaltet ist, daß er zuläßt, daß jüngere Befehle Zwischenergebnisse aus dem Anhang lesen, anstatt darauf warten zu müssen, daß die Zwischenergebnisse in die Registerdatei übergeben wurden.
  11. Vorrichtung nach einem der Ansprüche 7 bis 10, wobei der Anhang in der Weise ausgestaltet ist, daß er eine Suche in einem inhaltsadressierbaren Speicher (CAM) für ein Zwischenergebnis unterstützt, welches einem entsprechenden Zielregisterindex zugeordnet ist.
  12. Vorrichtung nach einem der Ansprüche 7 bis 11, wobei der Mikroeinfangmechanismus in der Weise ausgestaltet ist, daß er die Befehlspipeline der CPU durchspült.
  13. Computersystem, welches Fehlertoleranz für Zwischenergebnisse bereitstellt und welches aufweist: einen Hauptspeicher, eine sekundäre Speichereinrichtung, und eine Vorrichtung nach einem der Ansprüche 7 bis 12.
DE60310308T 2002-05-14 2003-04-30 Verfahren und Gerät zur Fehlertoleranz für temporäre Ergebnisse in einer zentralen Verarbeitungseinheit Expired - Lifetime DE60310308T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/146,102 US7124331B2 (en) 2002-05-14 2002-05-14 Method and apparatus for providing fault-tolerance for temporary results within a CPU
US146102 2002-05-14

Publications (2)

Publication Number Publication Date
DE60310308D1 DE60310308D1 (de) 2007-01-25
DE60310308T2 true DE60310308T2 (de) 2007-06-21

Family

ID=29548277

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60310308T Expired - Lifetime DE60310308T2 (de) 2002-05-14 2003-04-30 Verfahren und Gerät zur Fehlertoleranz für temporäre Ergebnisse in einer zentralen Verarbeitungseinheit

Country Status (3)

Country Link
US (1) US7124331B2 (de)
EP (1) EP1369786B1 (de)
DE (1) DE60310308T2 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7383464B2 (en) * 2003-12-08 2008-06-03 International Business Machines Corporation Non-inline transaction error correction
US7437599B2 (en) * 2005-02-15 2008-10-14 Maxwell Technologies, Inc. System and method for effectively implementing an immunity mode in an electronic device
US9760438B2 (en) * 2014-06-17 2017-09-12 Arm Limited Error detection in stored data values
US9529671B2 (en) 2014-06-17 2016-12-27 Arm Limited Error detection in stored data values
US9891976B2 (en) 2015-02-26 2018-02-13 Arm Limited Error detection circuitry for use with memory

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE25779T1 (de) * 1981-10-01 1987-03-15 Stratus Computer Inc Digitale datenverarbeitungsanlage mit zuverlaessigkeits-bus-protokoll.
BR8503913A (pt) * 1984-08-18 1986-05-27 Fujitsu Ltd Sistema e processo de recuperacao de erros em um processador de dados do tipo de canalizacao tendo um dispositivo de memoria de controle e processo de recuperacao de erros em um processador de dados do tipo de canalizacao
JPS6226580A (ja) 1985-07-29 1987-02-04 Hitachi Ltd 障害処理方式
US5150469A (en) 1988-12-12 1992-09-22 Digital Equipment Corporation System and method for processor pipeline control by selective signal deassertion
US5487156A (en) * 1989-12-15 1996-01-23 Popescu; Valeri Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched
US5276862A (en) * 1991-04-09 1994-01-04 Bull Hn Information Systems Inc. Safestore frame implementation in a central processor
US6226338B1 (en) * 1998-06-18 2001-05-01 Lsi Logic Corporation Multiple channel data communication buffer with single transmit and receive memories
US6122656A (en) 1998-07-31 2000-09-19 Advanced Micro Devices, Inc. Processor configured to map logical register numbers to physical register numbers using virtual register numbers
US6163837A (en) * 1998-11-17 2000-12-19 Sun Microsystems, Inc. Writing of instruction results produced by instruction execution circuits to result destinations
US6542988B1 (en) 1999-10-01 2003-04-01 Sun Microsystems, Inc. Sending both a load instruction and retrieved data from a load buffer to an annex prior to forwarding the load data to register file

Also Published As

Publication number Publication date
EP1369786A2 (de) 2003-12-10
US7124331B2 (en) 2006-10-17
DE60310308D1 (de) 2007-01-25
EP1369786B1 (de) 2006-12-13
US20040078728A1 (en) 2004-04-22
EP1369786A3 (de) 2005-03-23

Similar Documents

Publication Publication Date Title
DE10304447B4 (de) Verfahren zur Handhabung von Datenfehlern in einem Prozessor mit Pipeline und derartiger Prozessor
DE60009151T2 (de) Vorhersage von datenbeförderung von speicher- zum ladebefehl mit untrainierung
US20080077782A1 (en) Restoring a register renaming table within a processor following an exception
DE69534148T2 (de) Rechnersystem zur Ausführung von Verzweigungsbefehlen
DE19983860B4 (de) Ein Verfahren und eine Einrichtung zur verbesserten Prädikatvorhersage
DE60005860T2 (de) Ablaufsteuerung zum ausgeben und wiederausgeben von ketten abhängiger befehle
DE69932066T2 (de) Mechanismus zur "store-to-load forwarding"
DE60222402T2 (de) Verfahren und system zur spekulativen ungültigkeitserklärung von zeilen in einem cachespeicher
DE112009000117T5 (de) Prozessor mit einer Hybridredundanz zum Schutz vor Logikfehlern
DE112007000812T5 (de) Transaktionalspeicher in Out-of-Order-Prozessoren
DE69633474T2 (de) Adressierungsverfahren zur nicht-sequentiellen Ausführung von Ladebefehlen hinsichtlich Speicherungsbefehlen
DE102013219856A1 (de) Handhaben von potentiell ungültigen Ergebnissen während Vorauslaufen
DE60115976T2 (de) Rechnersystem und Interruptvorgang
DE112010004322T5 (de) Vorhersagen und Vermeiden von Operand-Speichervorgang-Vergleich-Gefahren in Mikroprozessoren mit abweichender Reihenfolge
DE10296989T5 (de) Multi-Thread-Prozessor mit der Fähigkeit einer impliziten Multi-Thread-Ausführung eines Ein-Thread-Programms
US20080270766A1 (en) Method To Reduce The Number Of Load Instructions Searched By Stores and Snoops In An Out-Of-Order Processor
DE4434895A1 (de) Verfahren und Vorrichtung zur Erholung von Ablaufunterbrechungen in einem Computersystem
DE4211245A1 (de) Prozessorsystem in parallelverarbeitungsbauart mit trap- und stall-steuerfunktionen
DE60206555T2 (de) Fehlererkennung von Austauschdaten
US10394641B2 (en) Apparatus and method for handling memory access operations
DE602004010265T2 (de) Load-store-einheit mit wiederholungsmechanismus
DE102004034766A1 (de) Fehlererfassungsverfahren und System für Prozessoren, das verriegelungsschrittweise betriebene gleichzeitige Teilprozesse verwendet
DE102013224137A1 (de) Anweisungs-Kategorisierung für Vorauslaufen-Operation
DE112017003350T5 (de) Speicherauslesebefehle, prozessoren, verfahren und systeme, die bei defekten daten keine ausnahme annehmen
DE112004002576T5 (de) Management externer Speicheraktualisierung zur Fehlererfassung in redundanten Multithreading-Systemen unter Verwendung einer spekulativen Speicherunterstützung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition