-
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.