DE4434895C2 - Verfahren und Vorrichtung zur Behandlung von Ausnahmebedingungen - Google Patents
Verfahren und Vorrichtung zur Behandlung von AusnahmebedingungenInfo
- Publication number
- DE4434895C2 DE4434895C2 DE4434895A DE4434895A DE4434895C2 DE 4434895 C2 DE4434895 C2 DE 4434895C2 DE 4434895 A DE4434895 A DE 4434895A DE 4434895 A DE4434895 A DE 4434895A DE 4434895 C2 DE4434895 C2 DE 4434895C2
- Authority
- DE
- Germany
- Prior art keywords
- result
- substitution
- instruction
- register
- exception
- 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
- 238000000034 method Methods 0.000 title claims description 55
- 238000006467 substitution reaction Methods 0.000 claims abstract description 118
- 238000012545 processing Methods 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 3
- 230000008569 process Effects 0.000 description 42
- 238000007667 floating Methods 0.000 description 30
- 230000009471 action Effects 0.000 description 13
- 238000012360 testing method Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 238000011084 recovery Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 239000013598 vector Substances 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 101150107341 RERE gene Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 229940036310 program Drugs 0.000 description 1
- 108090000623 proteins and genes Proteins 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- 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/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0721—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
-
- 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/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
Diese Erfindung bezieht sich allgemein auf die Behandlung von Ausnahmebedingungen
in einem Computersystem.
Insbesondere bezieht sich diese Erfindung auf ein Verfahren
und eine Vorrichtung zur Behandlung von Ausnahmebedingungen,
die zur Laufzeit auftreten,
deren potentielles Auftreten jedoch vorausgesehen
werden kann.
Die meisten Befehle, die von einem Computer ausgeführt wer
den, führen eine bestimmte Art einer arithmetischen oder
logischen Operation auf einem oder mehreren Datenoperanden
durch und erzeugen resultierende Daten. Typischerweise spe
zifiziert der Befehl ein oder mehrere Register, in denen die
Datenoperanden gespeichert werden, und ein Register, in dem
das Ergebnis der Operation gespeichert werden soll. Einige
dieser Befehle können ferner Nebenwirkungen oder Ablaufun
terbrechungen als eine Folge ihrer Operationen erzeugen, die
gewöhnlich nicht im gespeicherten Ergebnis widergespiegelt
werden. Das Auftreten derartiger Ablaufunterbrechungen wird
typischerweise durch das Speichern eines Zustandsworts, das
eine Mehrzahl von Bits oder Flags enthält, in einem Zu
standsregister angezeigt.
Ein Beispiel von Befehlen, die Ablaufunterbrechungen er
zeugen können, sind Gleitkommaoperationsbefehle. Typische
Ablaufunterbrechungen, die eine Folge eines Gleitkommaope
rationsbefehls sein können, sind Teilen-durch-Null-, unge
naue, ungültige, Überlauf- und Unterlauf-Ablaufunterbre
chungen. Überlauf- und Unterlauf-Ablaufunterbrechungen wer
den z. B. erzeugt, wenn ein Gleitkomma-Additions-, -Subtrak
tions-, -Multiplikations- oder -Divisions-Befehl eine Zahl
erzeugt, die jenseits des begrenzten Bereichs der darstell
baren Gleitkommazahlen liegt. Teilen-durch-Null-, ungenaue
und ungültige Ablaufunterbrechungen werden erzeugt, wenn ein
Gleitkommaoperationsbefehl, wie z. B. ein Division-Durch-
Null-Operand, eine undefinierte Zahl zur Folge hat.
Üblicherweise ist es nicht möglich, eine Programmausführung
fortzusetzen, ohne eine korrigierende Handlung durchzufüh
ren, wenn eine Ablaufunterbrechung als ein Ergebnis eines
Befehls erzeugt wird. Z. B. ist das Ergebnis des Befehls eine
undefinierte Zahl, wenn ein Gleitkomma-Divisionsbefehl eine
Teilen-Durch-Null-Ablaufunterbrechung erzeugt. Nachfolgend
ausgeführte Befehle, die das Gleitkomma-Divisionsbefehls-
Ergebnis verwenden, würden falsche oder sinnlose Daten er
zeugen.
Daher wurde eine Vielfalt von Vorrichtungen verwendet, um
auf das Auftreten von Ablaufunterbrechungen anzusprechen.
Die einfachste, jedoch durchgreifendste Antwort ist eine
Hardwarevorrichtung, die eine Programmausführung einfach
beendet oder abbricht, wenn eine Ablaufunterbrechung auf
tritt. Diese Art einer Hardwarevorrichtung verhindert, daß
das Ergebnis des unterbrechenden Befehls verwendet wird, um
falsche Daten zu erzeugen, da die Programmausführung nicht
fortgesetzt wird. Jedoch sind die Daten, die von dem Pro
gramm bis zu dem Auftreten der Ablaufunterbrechung erzeugt
werden, typischerweise verloren. Wenn die Programmausführung
abgebrochen wird, kann es ferner schwierig sein, zu identi
fizieren, welcher Befehl und welche Ablaufunterbrechung be
wirkt haben, daß die Programmausführung abgebrochen wird.
In den meisten Fällen können Ablaufunterbrechungen aller
dings gehandhabt werden, indem eine bestimmte korrigierende
Aktion stattfindet, so daß die Programmausführung ohne Ver
lust von Daten fortgesetzt oder angehalten werden kann. Ty
pische korrigierende Aktionen umfassen das Anzeigen einer
Fehlermeldung, es dem Benutzer zu ermöglichen, andere Ein
gangsdaten einzugeben, bevor eine Berechnung wiederholt
wird, oder das teilweise Anhalten der Programmausführung,
während die Daten gesichert werden und identifiziert wird,
warum das Programm angehalten wurde.
In einigen Fällen ist es ferner möglich, die Programmaus
führung nach einem Ablaufunterbrechungsbefehl fortzusetzen,
während die Erzeugung falscher Ergebnisse bei nachfolgenden
Befehlen vermieden wird, indem ein vorgegebenes Ergebnis für
das Ergebnis des Ablaufunterbrechungsbefehls substituiert
wird. Z. B. ist bei einigen Berechnungen, die eine Gleitkom
ma-Divisionsoperation einschließen, für den Division-Durch-
Null-Operanden ein Ergebnis definiert. Als ein spezifisches
Beispiel schließt die Funktion sin(x)/x die Division des
Werts von sin(x) durch den Wert von x mit einem Gleitkomma-
Divisionsbefehl ein, wenn sie in einem Computer berechnet
wird. Wenn x Null ist, erzeugt der Gleitkomma-Divisionsbe
fehl eine Division-Durch-Null-Ablaufunterbrechung, wobei
eine undefinierte Gleitkommazahl die Folge ist. Jedoch ist
bekannt, daß diese Funktion für x gleich Null gleich Eins
ist. Durch Substituieren von Eins für das undefinierte Er
gebnis des Gleitkomma-Divisionsbefehls kann das Programm
fortgesetzt werden, und nachfolgende Befehle, die das sub
stituierte Ergebnis verwenden, erzeugen genaue Daten. Vom
Standpunkt der Mathematik her ist diese Art von Ablaufunter
brechung als eine behebbare Singularität bekannt. Die korri
gierende Aktion des Substituierens eines vorgegebenen Er
gebnisses kann für weitere Ablaufunterbrechungen verwendet
werden, die durch Gleitkommaoperations- und Nicht-Gleitkom
maoperations-Befehle erzeugt werden.
Korrigierende Aktionen werden im allgemeinen in Software
routinen, die als Ablaufunterbrechungstreiber bekannt sind,
durchgeführt. Die Ablaufunterbrechungstreiber bestehen aus
Befehlen, die eine Fehlermeldung anzeigen, teilweise das
Programm verlassen, ein vorgegebenes Ergebnis substituieren
oder andere korrigierende Aktionen durchführen. Im allgemei
nen sind Ablaufunterbrechungstreiber für eine bestimmte Ab
laufunterbrechung und für einen bestimmten Befehl in einem
Programm spezifisch.
Es gibt zwei übliche Vorrichtungen zum Aufrufen eines Ab
laufunterbrechungstreibers, um als Reaktion auf Ablaufunter
brechungen eine korrigierende Aktion durchzuführen. Die Vor
richtungen können mit "Tests und Verzweigungen" ("tests and
branches") und "Fallen" ("traps") bezeichnet werden. Tests
und Verzweigungen sind eine reine Softwarevorrichtung, die
das Einfügen von Befehlen vor einem möglichen Ablaufunter
brechungsbefehl einschließt, um sowohl die Werte der Be
fehlsoperanden zu testen, als auch zu einem geeigneten Ab
laufunterbrechungstreiber zu verzweigen, wenn die Werte der
Operanden eine Ablaufunterbrechung bewirken würden. Z. B.
können Test-und-Verzweigungs-Befehle vor einen Gleitkomma-
Divisionsbefehl eingefügt sein, um den Divisor-Operanden zu
testen, und um zu einem Ablaufunterbrechungstreiber zu ver
zweigen, wenn der Divisor-Operand Null ist. Der Ablaufunter
brechungstreiber kann dann eine geeignete korrigierende Ak
tion durchführen, z. B. ein vorgegebenes Ergebnis substituie
ren, wenn ein solches Ergebnis definiert ist, und nach dem
Gleitkomma-Divisionsbefehl die Programmausführung wieder
aufnehmen. Der Lösungsansatz des Plazierens von Test-und-
Verzweigungs-Befehlen ist speziell in Computern nützlich,
die keine Hardwarevorrichtung zum Behandeln von Ablaufunter
brechungen liefern, oder die einfach die Programmausführung
beenden, wenn eine Ablaufunterbrechung erzeugt wird.
Eine Falle ist eine Hardwarevorrichtung, die in mancher
Hinsicht extern erzeugten Unterbrechungen ähnlich ist. In
Computern mit einer Fallenvorrichtung ist ein Satz von Spei
cherplätzen für den Zweck des Speicherns der Startadressen
der Ablaufunterbrechungstreiber reserviert oder bestimmt.
Diese gespeicherten Startadressen werden mit Fallenvektoren
bezeichnet. Im allgemeinen gibt es einen Fallenvektor für
jeden Typ einer Ablaufunterbrechung, die durch den Computer
erzeugt werden kann. Wenn eine Ablaufunterbrechung auftritt,
hält die Fallenvorrichtung die Programmausführung temporär
an und überträgt die Ausführung von dem Programm zwangsläu
fig zu dem Ablaufunterbrechungstreiber an dem entsprechenden
Fallenvektor für die Ablaufunterbrechung. Der Computer führt
dann den Ablaufunterbrechungstreiber aus, um eine korrigie
rende Aktion durchzuführen. Informationen, die die Programm
ausführung (den Programmkontext) betreffen, wie z. B. die
Adressen, an denen die Programmausführung unterbrochen wur
de, und die gegenwärtigen Inhalte der Computerregister, wer
den typischerweise in einem Stapelspeicher gespeichert, wenn
die Falle erzeugt wird. Die Speicherung des Programmkontexts
ermöglicht eine Wiederaufnahme der Programmausführung, nach
dem die Ausführung des Ablaufunterbrechungstreibers abge
schlossen ist. Dieser Typ von Programmunterbrechung, der ei
ne Wiederaufnahme des Programms an einem bestimmten Punkt
ermöglicht, ist als eine präzise Unterbrechung bekannt.
Sowohl die Test-und-Verzweigungs- und die Fallen-Vorrichtung
haben den Nachteil, daß sie zur Komplexität der Software
hinzukommen und die Programmausführung verlangsamen. Bei der
Test-und-Verzweigungs-Vorrichtung muß der Programmierer meh
rere Befehle vor jedem möglichen Ablaufunterbrechungsbefehl
einfügen, um auf verschiedene Daten zu testen, die eine Ab
laufunterbrechung erzeugen könnten, und um auf geeignete
Ablaufunterbrechungstreiber zu verzweigen. Das Einfügen der
Test-und-Verzweigungs-Befehle kompliziert die Programmier
aufgabe und addiert sich zur Größe des Programms. Wenn sich
der mögliche Ablaufunterbrechungsbefehl in einer Schleife
oder einer anderen wiederholten Routine befindet, bringen
die hinzugefügten Test- und Verzweigungs-Befehle bei jeder
Iteration der Schleife einen Geschwindigkeitsnachteil mit
sich, der die Geschwindigkeit der Programmausführung stark
beeinflußt.
Bei der Fallenvorrichtung wird ein Geschwindigkeitsnachteil
nur aufgebürdet, wenn durch den Ablaufunterbrechungsbefehl
tatsächlich eine Ablaufunterbrechung erzeugt wird. Jedoch
kann der Geschwindigkeitsnachteil noch signifikant sein, da
präzise Unterbrechungen eine Zeitverzögerung bewirken. Das
Programmieren der Ablaufunterbrechungstreiber kann ferner
komplexer sein, insbesondere wenn die korrigierende Aktion
darin besteht, einfach ein vorgegebenes Ergebnis zu sub
stituieren. Da das Ablaufunterbrechungsbefehls-Ergebnis
üblicherweise in einem Register gespeichert wird und die
Registerinhalte zusammen mit dem Programmkontext in dem
Stapelspeicher gespeichert werden, kann die Substitution des
vorgegebenen Ergebnisses das Speichern des Substitutions
ergebnisses an dem richtigen Platz des Stapelspeichers er
fordern. Dies kann eine Anzahl von "Push and Pop"-Operatio
nen erfordern, um den Stapelspeicher richtig zu manipulie
ren.
Diese beiden Vorrichtungen bringen ferner Probleme bei Pipe
line- und Vektor-Computern mit sich, die durch Überlappen
oder gleichzeitige Befehlsausführung eine schnellere Pro
grammausführung erreichen. In einem Pipeline-Computer werden
Befehle in einer Fließbandform ausgeführt. Jeder Befehl wird
in einer Reihe von Stufen ausgeführt. Mehrere Befehle werden
an verschiedenen Ausführungsstufen gleichzeitig ausgeführt.
Manche Pipeline-Computer verwenden z. B. drei Hauptstufen:
Lesen, Ausführen und Schreiben. Jede Stufe kann ferner eine
Anzahl von Unterstufen haben. In der Lesestufe werden der
Befehl und seine Operanden vom Computer aus dem Speicher
oder den Registern gelesen. In der Ausführungsstufe wird für
den Befehl eine Operation auf den Operanden durchgeführt. In
der Schreibstufe wird das Ergebnis der Operation formatiert
und zur Register- oder Speicher-Speicherung übertragen. Wäh
rend die Ausführungsstufe eines Befehls durchgeführt wird,
ist ein vorheriger Befehl im allgemeinen in seiner Schreib
stufe und ein nächster Befehl ist in seiner Lesestufe. Da in
einem Pipeline-Computer mehr als ein Befehl gleichzeitig
ausgeführt werden kann, läuft ein Programm im allgemeinen
viel schneller als in einem Nicht-Pipeline-Computer.
In einem Pipeline-Computer können nicht alle Befehle eines
Programms gleichzeitig ausgeführt werden. Das liegt gewöhn
lich daran, daß es eine gewisse Datenabhängigkeit zwischen
den Befehlen gibt. Z. B. wird eine Situation, die als Lesen-
Nach-Schreiben-Gefahr bekannt ist, erzeugt, wenn das Ergeb
nis eines ersten Befehls als ein Operand eines nachfolgenden
Befehls verwendet wird. Da das Ergebnis nicht verfügbar ist,
um gelesen zu werden, bis es geschrieben ist, kann der nach
folgende Befehl nicht gleichzeitig mit dem ersten Befehl
ausgeführt werden. Die Lesestufe des nachfolgenden Befehls
muß der Schreibstufe des ersten Befehls folgen. Datenabhän
gigkeiten können durch Verschieben der Reihenfolge der Be
fehle, wenn es möglich ist, oder durch Einfügen von Null-
Befehlen zwischen datenabhängigen Befehlen während des Kom
pilierens eines Programms vermieden werden. Ferner kann
Hardware, die zur Laufzeit nach Datenabhängigkeiten über
prüft und Null-Befehle zwischen datenabhängigen Befehlen
einfügt, verwendet werden.
Test-und-Verzweigungs-Vorrichtungen sind in einem Pipeline-
Computer nachteilig, da sie inhärent eine gleichzeitige Be
fehlsausführung blockieren. Jedesmal, wenn eine gemeinsame
Ausführung blockiert wird, wird die Programmausführung ver
langsamt. Bis ein Verzweigungsbefehl ausgeführt ist, ist
nicht bekannt, welcher der zwei Befehle - der nächste Be
fehl in der Abfolge oder ein Fernbefehl - als nächstes
ausgeführt werden soll. Eine gemeinsame Befehlsausführung
ist daher nicht möglich. Dieser Nachteil kann durch Hardware
teilweise verschoben werden, die versucht, vorherzusagen,
welcher der zwei Befehle dem bedingten Verzweigungsbefehl
folgen wird, und beginnt, den vorhergesagten Befehl gleich
zeitig auszuführen. Jedoch ist diese Vorhersage nicht immer
genau. Wenn sich die Vorhersage als ungenau erweist, muß die
Hardware die Ausführung des ungenau vorhergesagten Befehls
rückgängig machen und beginnen, den anderen Befehl auszu
führen. Folglich wird ein weiterer Geschwindigkeitsnachteil
erzeugt, wenn eine Verzweigung nicht genau vorhergesagt
wird. Eine derartige hinzugefügte Hardwarefunktionalität
addiert sich zu den Kosten und der Komplexität des Pipe
line-Computers.
Die Fallenvorrichtung besitzt ebenfalls den Nachteil des
Unterbrechens der gemeinsamen Ausführung und des Addierens
zu der Komplexität und den Kosten der Hardware in einem
Pipeline-Computer. Um nach der Übertragung der Ausführung zu
einem Ablaufunterbrechungstreiber erfolgreich zu einer Pro
grammausführung zurückzukehren, muß eine Fallenvorrichtung
eine "präzise Unterbrechung" durchführen, bei der der Zu
stand der Programmausführung bis zu dem Ablaufunterbre
chungsbefehl gesichert wird, um eine Wiederaufnahme der Pro
grammausführung am Punkt der Unterbrechung zu ermöglichen.
Da in einem Pipeline-Computer mehrere Befehle gleichzeitig
ausgeführt werden, werden einige der Befehle, die dem Ab
laufunterbrechungsbefehl folgen, in verschiedenen Ausfüh
rungsstufen sein. Einige werden bereits die Daten in dem
Register des Computers oder die Zustandsbits in dem Ablauf
unterbrechungsregister geändert haben. Um die Programmaus
führung bei dem Ablaufunterbrechungsbefehl anzuhalten, muß
die Fallenvorrichtung in der Lage sein, die Pipeline weite
rer gleichzeitiger Ausführungsbefehle "abzuleiten". Das Ab
leiten der Pipeline kann das Wiederaufrufen dessen, was
andere Befehle nach dem Ablaufunterbrechungsbefehl durchge
führt haben, und das Rückgängigmachen ihrer Wirkungen erfor
dern. Eine solche Hardware, die präzise ihrer Pipeline-Be
fehle unterbrechen kann, ist komplexer und aufwendiger, da
sie in der Lage sein muß, mehrere gleichzeitige Befehle zu
bedenken und rückgängig zu machen.
Einige Pipeline-Computer vereinfachen die Fallenvorrichtung,
indem sie erfordern, daß ein Sperroperationsbefehl nach ei
nem möglichen Ablaufunterbrechungsbefehl eingefügt wird. Der
Sperroperationsbefehl behindert eine gleichzeitige Ausfüh
rung, indem nachfolgende Befehle daran gehindert werden,
gleichzeitig mit den möglichen Ablaufunterbrechungsbefehlen
ausgeführt zu werden. Dies leitet im wesentlichen die Be
fehlspipeline ab, um ein Einfangen oder Verzweigen zu einem
Ablaufunterbrechungstreiber zu ermöglichen. Der Nachteil der
Sperroperationsbefehls-Vorrichtung besteht darin, daß die
gleichzeitige Ausführung jedesmal behindert wird, wenn ein
Befehl, der eine Ablaufunterbrechung erzeugen könnte, ausge
führt wird.
Die US-A-5,193,158 betrifft ein Verfahren zur Handhabung von
Ausnahmebedingungen in Pipeline-Prozessoren, das die Ausfüh
rung von Befehlen, die eine Ablaufunterbrechung eines Pro
gramms hervorrufen, verhindert. Gleichzeitig werden Befehle,
die vor dem Auftreten des den Programmablauf unterbrechenden
Befehls noch nicht vollständig abgearbeitet wurden, nicht
weiter ausgeführt werden. Die Ausführung wird nach der Be
seitigung der Ablaufunterbrechung erneut begonnen.
Die US-A-4,875,160 betrifft ein Verfahren zur Durchführung
einer Widergewinnung bei Ausnahmebedingungen in einem Pipe
line-Prozessor, bei dem "Zustands-Silos" vorgesehen sind,
die eine ausreichende Menge an Zustandsinformationen hin
sichtlich des Systems beinhalten, um das Computersystem vom
Pipeline-Typ nach der Beendigung der Handhabung der Ablauf
unterbrechung erneut zu starten.
Es ist die Aufgabe der vorliegenden Erfindung, eine Vorrich
tung und ein Verfahren zur Behandlung von Ausnahmebe
dingungen in einem Computersystem zu schaffen, wobei weder
die Geschwindigkeit einer Programmausführung beeinflußt
wird, noch übermäßige zusätzliche Kosten und Komplexität
eingeführt werden.
Diese Aufgabe wird durch ein Computersystem gemäß Patent
anspruch 1 und durch ein Verfahren gemäß Patentanspruch 13
gelöst.
Die vorliegende Erfindung schafft ein Verfahren und eine
Vorrichtung zur Erholung von Ablaufunterbrechungen, die die
oben genannten und weitere Nachteile bekannter Technik über
winden. Gemäß der Erfindung ist der Befehlssatz eines Compu
ters (der ein Pipeline-Computer sein kann) durch Ein
schließen eines oder mehrerer "Fix-up"-Befehle, die als Re
aktion auf einen Befehl, der eine oder mehrere spezifizierte
Ablaufunterbrechungen erzeugt, eine einfache korrigierende
Aktion, wie z. B. die Substitution eines vorgegebenen Wertes,
bewirken, erweitert.
Bei einem Ausführungsbeispiel der Erfindung ist z. B. ein be
dingter Substitutionsbefehl im Befehlssatz eines Pipeline-
Computers enthalten. Der bedingte Substitutionsbefehl spezi
fiziert einen Satz von einer oder mehreren möglichen Ablauf
unterbrechungen, einen vorgegebenen Wert und ein Ergebnisre
gister. Der bedingte Substitutionsbefehl wird nach einem
möglichen Ablaufunterbrechungsbefehl, für den die Substitu
tion des vorgegebenen Ergebnisses eine durchgehende Pro
grammausführung ermöglicht, in ein Programm eingefügt. Wenn
der mögliche Ablaufunterbrechungsbefehl die spezifi
zierte Ablaufunterbrechung erzeugt, während er ausgeführt
wird, ersetzt der bedingte Substitutionsbefehl das Ergebnis
des Ablaufunterbrechungsbefehls durch den vorgegebenen Wert,
der in dem Ergebnisregister gespeichert ist.
Die "Fix-up"-Befehle können mit möglichen Ablaufunterbre
chungsbefehlen und anderen Befehlen in einer Pipeline-Form
ausgeführt werden. Durch Zustandsbits, die in einem Ablauf
unterbrechungsregister als ein Ergebnis des Ausführens des
Befehls gespeichert sind, wird angezeigt, ob eine Ablauf
unterbrechung durch einen möglichen Ablaufunterbrechungs
befehl erzeugt wurde. Mögliche Ablaufunterbrechungsbefehle
speichern die Zustandsbits während ihrer Schreibstufe in dem
Ablaufunterbrechungsregister. Der bedingte Substitutions
befehl wirkt basierend auf den Zustandsbits, die während
seiner Schreibstufe in dem Ablaufunterbrechungsregister ge
speichert sind, um den spezifizierten vorgegebenen Wert im
Ergebnisregister zu speichern, wenn die Zustandsbits an
zeigen, daß eine oder mehrere der spezifizierten Ablauf
unterbrechungen auftreten. Dies ermöglicht es, daß der be
dingte Substitutionsbefehl, der die Ablaufunterbrechung
korrigiert, in einem Pipeline-Computer unmittelbar nach dem
Ablaufunterbrechungsbefehl folgt, ohne eine Lesen-Nach-
Schreiben-Gefahr zu erzeugen.
Bei einem alternativen Ausführungsbeispiel der Erfindung
lädt ein bedingter Substitutionsbefehl eine Speichertabelle
mit einem vorgegebenen Wert, der für das Ergebnis eines Be
fehls, der eine oder mehrere spezifizierte Ablaufunterbre
chungen erzeugt, substituiert werden soll. Dieser bedingte
Substitutionsbefehl wird vor allen möglichen Ablaufunter
brechungsbefehlen, die er korrigieren soll, plaziert. Ergeb
nisse von Befehlen, die von einer Funktionseinheit durchge
führt werden, werden durch die Speichertabelle geleitet, be
vor sie im Speicher oder in den Registern gespeichert wer
den. Wenn der Befehl eine oder mehrere der spezifizierten
Ablaufunterbrechungen erzeugt, wird das Befehlsergebnis zur
Speicherung im Speicher oder Register in seinem Pfad durch
den gespeicherten vorgegebenen Wert ersetzt. Wenn infolge
der Befehlsausführung keine spezifizierte Ablaufunterbre
chung erzeugt wurde, fährt das Befehlsergebnis auf seinem
Pfad zur Speicherung im Speicher oder Register fort.
Der bedingte Substitutionsbefehl gemäß diesem alternativen
Ausführungsbeispiel hat den Vorteil, daß er für eine be
liebige Anzahl von nachfolgenden Befehlen, die die Sub
stitution des gleichen vorgegebenen Werts für die gleichen
spezifizierten Ablaufunterbrechungen erfordern, nur einmal
durchgeführt werden muß. Dieser bedingte Substitutionsbefehl
kann z. B. einmal durchgeführt werden, um die Substitution
eines möglichen Ablaufunterbrechungsbefehls, der in einer
"Schleifen"-Routine wiederholt ausgeführt wird, zu instal
lieren.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung
werden nachfolgend unter Bezugnahme auf die beiliegenden
Zeichnungen näher erläutert. Es zeigen:
Fig. 1 ein verallgemeinertes Blockdiagramm eines Pipeline-
Computersystems gemäß einem bevorzugten Ausführungs
beispiel der Erfindung;
Fig. 2 ein verallgemeinertes Blockdiagramm eines Abschnitts
einer Zentralverarbeitungseinheit (CPU; CPU = Central
Processing Unit) im Computersystem von Fig. 1;
Fig. 3 ein Datenflußdiagramm einer Funktionseinheit in der
CPU von Fig. 2, die einen Gleitkomma-Divisionsbefehl
ausführt;
Fig. 4 ein Datenflußdiagramm der Funktionseinheit von Fig.
2, die einen bedingten Substitutionsbefehl ausführt;
Fig. 5 ein Zeitablaufdiagramm, das die gleichzeitige Pipe
line-Ausführung der Gleitkomma-Divisions- und der
bedingten Substititions-Befehle in der CPU von Fig. 1
ausführt;
Fig. 6 ein Diagramm eines Maschinencodes für den bedingten
Substitutionsbefehl, der in Fig. 4 gezeigt ist;
Fig. 7 ein verallgemeinertes Blockdiagramm eines Abschnitts
einer CPU in einem Computersystem gemäß einem weite
ren Ausführungsbeispiel der Erfindung; und
Fig. 8 ein verallgemeinertes Blockdiagramm eines Abschnitts
einer CPU in einem Computersystem gemäß einem dritten
Ausführungsbeispiel der Erfindung.
Gemäß Fig. 1 umfaßt ein Pipeline-Computersystem 20 gemäß
einem bevorzugten Ausführungsbeispiel der Erfindung eine
Zentralverarbeitungseinheit (CPU) 22, die über einen Mehr
fachsignal-Systembus 30 mit einem Speicher 24 und Periphe
rie-Vorrichtungen 26 verbunden ist. Der Speicher 24 ist
vorzugsweise mit dynamischen Direktzugriffsspeicherchips
realisiert, kann jedoch auch mit Nur-Lese-Speicherchips oder
anderen elektronischen Speichervorrichtungen realisiert
sein. Der Speicher 24 speichert Daten und Befehle für ein
oder mehrere Programme, die eine gewünschte Aufgabe oder Be
rechnung auf dem Computersystem 20 realisieren.
Gemäß Fig. 2 ist die CPU 22 wirksam, um die Befehle eines
Programms durchzuführen, um die gewünschte Aufgabe oder Be
rechnung zu vollenden. Die Befehle, die in dem Speicher 24
gespeichert sind, werden in eine Befehlseinheit 34 in der
CPU 22 gelesen. Ein Busschnittstellen-Schaltkreis 36 erzeugt
die Signale, die notwendig sind, um Daten und Befehle auf
dem Systembus 30 von dem Speicher 24 zu lesen und in diesen
zu schreiben. Die Befehlseinheit 34 dekodiert die Befehle
und erzeugt Steuersignale, die eine Funktionseinheit 40 lei
ten, um die Befehle auszuführen.
Die Befehlseinheit 34 ist aufgebaut, um auf einen vorbe
stimmten Satz von Befehlen (der "Befehlssatz") anzusprechen
und die Steuersignale zu bilden, die notwendig sind, um die
Befehle mit der Funktionseinheit 40 durchzuführen. Unter der
Mehrzahl der Befehle in dem Befehlssatz befinden sich lo
gische Operationsbefehle, arithmetische Operationsbefehle
und Gleitkommaoperationsbefehle. Der Befehlssatz umfaßt fer
ner Datenübertragungsbefehle zum Übertragen von Daten zwi
schen dem Speicher und einem Satz von Universalregistern 46
und Zwischenregistern. (Der Ausdruck Universalregister wird
hierin verwendet, um sowohl die Register zu bezeichnen, die
Integer- oder Festkomma-Werte speichern, als auch die Re
gister, die Gleitkomma-Werte speichern.) Gemäß der Erfindung
umfaßt der Befehlssatz ferner einen Befehl zum Durchführen
einer korrigierenden Aktion als Reaktion auf eine Ablaufun
terbrechung, vorzugsweise einen bedingten Substitutionsbe
fehl, der nachfolgend beschrieben wird.
Die Funktionseinheit 40 führt Operationen durch, um die
Befehle, die durch die Befehlseinheit 34 geleitet werden,
auszuführen. Die Funktionseinheit 40 umfaßt zwei Lesetore
50, 52 zum Lesen von einem oder zwei Operanden, die in einer
Operation von Registern, die aus den Universalregistern 46
ausgewählt sind, verwendet. Die Funktionseinheit 40 umfaßt
ferner ein Schreibtor 54 zum Schreiben eines Ergebnisses der
Operation in ein Register, das aus den Universalregistern 46
ausgewählt ist. Die Funktionseinheit 40 schreibt ferner Ab
laufunterbrechungsdaten in ein Ablaufunterbrechungsregister
58, um das Auftreten von Ablaufunterbrechungen während der
Ausführung der Operation anzuzeigen. Die Ablaufunterbre
chungsdaten können von der Funktionseinheit 40 ferner aus
dem Ablaufunterbrechungsregister 58 gelesen werden.
Gemäß Fig. 5 führt die CPU 22 die Befehle aus dem Speicher
24 bei dem bevorzugten Ausführungsbeispiel in einer Pipe
line-Form aus. Gemäß Fig. 5 wird jeder Befehl in drei Stu
fen, einer Lesestufe, einer Ausführungsstufe und einer
Schreibstufe ausgeführt, wobei jede Stufe zur Vollendung im
allgemeinen einen Taktzyklus verwendet. Bei den anderen Aus
führungsbeispielen der Erfindung können die Befehle in einer
beliebigen Anzahl von Stufen ausgeführt werden. Die CPU 22
kann drei unterschiedliche Stufen von drei Befehlen während
jedes Taktzyklusses gleichzeitig ausführen. Z. B. kann die
Ausführungsstufe eines Befehls gleichzeitig mit der Schreib
stufe eines unmittelbar vorhergehenden Befehls und der Lese
stufe eines unmittelbar nachfolgenden Befehls ausgeführt
werden. Die Pipeline-Befehlsausführung dient dazu, die Ge
schwindigkeit zu erhöhen, mit der die CPU 22 Befehle aus
führen kann.
Gemäß den Fig. 3 und 5 können einige Befehle in dem Be
fehlssatz, der in der CPU 22 ausführbar ist, Ablaufunter
brechungen erzeugen. Z. B. können Gleitkommaoperationsbefehle
Teilen-durch-Null, ungenaue, ungültige, Überlauf- und Unter
lauf-Ablaufunterbrechungen erzeugen. Auch andere Befehle als
Gleitkommaoperationsbefehle können Ablaufunterbrechungen er
zeugen. Z. B. können Datenübertragungsbefehle Ablaufunterbre
chungen erzeugen, wie z. B. im Fall einer ungültigen Adresse.
Im allgemeinen wird eine Ablaufunterbrechung erzeugt, wenn
der Befehl nicht erfolgreich vollendet werden kann, oder ein
undefiniertes oder ungültiges Ergebnis erzeugt wird. Belie
bige Daten, die eine Folge des Befehls sind, bewirken daher
wahrscheinlich Fehler, wenn sie von einem nachfolgenden Be
fehl verwendet werden.
Z. B. erzeugt ein Gleitkomma-Divisionsbefehl 68 (Fig. 5) eine
Division-Durch-Null-Ablaufunterbrechung, wenn sein Divisor-
Operand Null ist. Gemäß Fig. 3 wird die Funktionseinheit 40
durch die Befehlseinheit 34 (Fig. 2), die auf den Gleitkom
ma-Divisionsbefehl 68 anspricht, geleitet, um eine Gleitkom
ma-Divisionsoperation auszuführen. Während einer Lesestufe
70 (Fig. 5) des Divisionsbefehls 68 liest die Funktionsein
heit 40 zwei Gleitkommaoperanden, einen Dividend- und einen
Divisor-Operanden, aus zwei Registern 74, 75 (Fig. 3) in den
Universalregistern 46, die durch den Divisionsbefehl 68 spe
zifiziert sind. In einer Ausführungsstufe 78 (Fig. 5) des
Divisionsbefehls 68 führt die Funktionseinheit 40 eine
Gleitkomma-Divisionsoperation mit den Operanden durch und
erzeugt ein Quotientenergebnis. Wenn der Divisor-Operand
Null ist, ist das Ergebnis der Gleitkomma-Divisionsoperation
im allgemeinen undefiniert. Die Funktionseinheit 40 erzeugt
daher also eine Division-Durch-Null-Ablaufunterbrechung. Um
beliebige Ablaufunterbrechungen, die durch die Ausführung
des Divisionsbefehls erzeugt werden, anzuzeigen, schreibt
die Funktionseinheit 40 während einer Schreibstufe 84 (Fig.
5) Ablaufunterbrechungsdaten in das Ablaufunterbrechungsre
gister 58 (Fig. 3). Das Auftreten einer Division-Durch-
Null-Ablaufunterbrechung wird vorzugsweise durch das Ein
stellen eines Zustandsbits an einer vorbestimmten Position
82 des Ablaufunterbrechungsregisters 58 angezeigt. Ferner
plaziert die Funktionseinheit 40 während der Schreibstufe 84
(Fig. 5) das Ergebnis der Operation in einem ordnungsgemäßen
Gleitkomma-Zahlenformat und schreibt das Ergebnis in ein
Register 88 (Fig. 3) in den Universalregistern 46, die durch
den Divisionsbefehl spezifiziert sind. Wenn eine Ablaufun
terbrechung, wie z. B. eine Division-Durch-Null-Ablaufunter
brechung aufgetreten ist, ist das Ergebnis, das von der
Funktionseinheit 40 in das Register 88 gespeichert ist, un
gültig und erzeugt Fehler, wenn es von nachfolgenden Befeh
len verwendet wird.
Gemäß Fig. 5 ist es bei dem Computersystem 20 möglich, durch
die Verwendung eines bedingten Substitutionsbefehls 92, der
nach einem Ablaufunterbrechungs-Erzeugungsbefehls, dessen
Ablaufunterbrechung vorhergesehen und mittels Substitution
eines vorgegebenen Ergebnisses korrigiert werden kann,
durchgeführt wird, eine Erholung von Ablaufunterbrechungen
zu schaffen. Wenn z. B. der Gleitkomma-Divisionsbefehl 68
Teil einer Reihe von Befehlen ist, die die Funktion sin
(x)/x berechnen, kann der bedingte Substitutionsbefehl 92
verwendet werden, um den bekannten Wert der Funktion für x
gleich Null (d. h. eins) zu substituieren, wenn der Divi
sionsbefehl eine Division-Durch-Null-Ablaufunterbrechung
erzeugt. Die Substitution eines bekannten vorgegebenen Er
gebnisses durch einen bedingten Substitutionsbefehl kann
verwendet werden, um verschiedene andere Ablaufunterbrechun
gen, wie z. B. Überlauf- und Unterlauf-Ablaufunterbrechungen
durch Substitution einer großen negativen oder positiven
Zahl und Ablaufunterbrechungen wegen ungültiger Adressen
durch Substituieren eines Null-Werts, zu korrigeren.
Gemäß Fig. 6 umfaßt der bedingte Substitutionsbefehl 92 im
allgemeinen einen Operationscode (Op-Code) 94, ein Bestim
mungsregister-Spezifizierelement 96, ein Quellregister-Spe
zifizierelement 98 und ein Ablaufunterbrechungs-Spezifizier
element 100. Der Op-Code identifiziert den Befehl für die
Befehlseinheit 34 als einen bedingten Substitutionsbefehl.
Beim Empfang eines Befehls mit dem Op-Code für einen beding
ten Substitutionsbefehl leitet die Befehlseinheit 34 die
Funktionseinheit 40, um eine bedingte Substitutionsoperation
auszuführen. Das Ablaufunterbrechungs-Spezifizierelement 100
identifiziert eine oder mehrere Ablaufunterbrechungen, die
der bedingte Substitutionsbefehl durch Schreiben eines vor
gegebenen oder Substitutions-Werts von einem Register, das
durch das Quellregister-Spezifizierelement 98 identifiziert
ist, in ein Register, das durch das Bestimmungsregister-Spe
zifizierelement 96 identifiziert ist, korrigiert.
Gemäß den Fig. 4 und 5 liest die Funktionseinheit 40 in
einer Lesestufe 104 der Ausführung des bedingten Substi
tutionsbefehls 92 z. B. ein vorgegebenes Ergebnis aus einem
Register 106, das durch das Quellregister-Spezifizierelement
98 identifiziert ist. Um zu erfassen, ob der Divisionsbefehl
68 eine Ablaufunterbrechung oder Ablaufunterbrechungen, die
durch das Ablaufunterbrechungs-Spezifizierelement 100 spezi
fiziert sind, erzeugt hat, werden die Ablaufunterbrechungs
daten im Ablaufunterbrechungsregister 58 gelesen. Da jedoch
die Ablaufunterbrechungsdaten nicht vor der Schreibstufe 84
des Divisionsbefehls 68 in das Ablaufunterbrechungsregister
58 geschrieben werden, werden die Ablaufunterbrechungsdaten
in der Schreibstufe des bedingten Substitionsbefehls 92 ge
lesen. Wenn die Ablaufunterbrechung oder die Ablaufunterbre
chungen, die durch das Ablaufunterbrechungs-Spezifizierele
ment spezifiziert sind, von dem Divisionsbefehl 68 erzeugt
wurden, schreibt die Funktionseinheit 40 das vorgegebene Er
gebnis in ein Register, das durch das Bestimmungsregister-
Spezifizierelement 96 spezifiziert ist. Gewöhnlich spezifi
ziert das Bestimmungsregister-Spezifizierelement 96 das
gleiche Register 88, in das das Ablaufunterbrechungsbe
fehls-Ergebnis geschrieben wurde, so daß das Ergebnis auf
einen definierten vorgegebenen Wert korrigiert wird.
Wiederum gemäß Fig. 5 folgt der bedingte Substitutionsbefehl
92 vorzugsweise unmittelbar nach dem Befehl 68, dessen Ab
laufunterbrechung in der Befehlspipeline korrigiert werden
soll, so daß eine Wartezeit der Verfügbarkeit des Ergeb
nisses minimiert ist. Solange jedoch kein Befehl zwischen
dem Befehl 68 und dem bedingten Substitutionsbefehl 92 die
Ablaufunterbrechungsdaten in dem Ablaufunterbrechungsre
gister 58 ändert, oder das Ergebnis in das Register 88
schreibt oder liest, kann der bedingte Substitutionsbefehl
92 eine beliebige Anzahl von Befehlen nach dem möglichen
Ablaufunterbrechungsbefehl 68 plaziert sein.
Gemäß den Fig. 2 und 6 müssen bei dem Computersystem 20
alle Befehle, die möglicherweise Ablaufunterbrechungen er
zeugen, in der Lage sein, Ablaufunterbrechungsdaten in ein
Register zu speichern, um anzuzeigen, daß eine Ablaufunter
brechung erzeugt wurde. Um zu ermöglichen, daß mögliche Ab
laufunterbrechungsbefehle zwischen dem bedingten Subsitu
tionsbefehl 92 und dem Befehl 68, der sie korrigiert, posi
tioniert sind, können zusätzliche Ablaufunterbrechungsre
gister 106 (Fig. 2) in der CPU 22 vorgesehen sein. Die Ab
laufunterbrechungsdaten der Befehle, die Ablaufunterbre
chungen erzeugen, sind in dem Ablaufunterbrechungsregister
58 als eine Vorgabe gespeichert oder müssen eines der zu
sätzlichen Ablaufunterbrechungsregister 106, in das ihre
Ablaufunterbrechungsdaten gespeichert werden, spezifizieren.
Wenn zusätzliche Ablaufunterbrechungsregister 106 vorgesehen
sind, umfaßt der bedingte Substitutionsbefehl 92 ferner ein
Ablaufunterbrechungsregister-Spezifizierelement 108. Der be
dingte Substitutionsbefehl 92 und der Befehl 68, dessen Ab
laufunterbrechung korrigiert wird, müssen beide das gleiche
Ablaufunterbrechungsregister mit den Ablaufunterbrechungs
register-Spezifizierelementen 108 spezifizieren. Ein Befehl,
der ein anderes Ablaufunterbrechungsregister verwendet, um
eine Ablaufunterbrechung anzuzeigen, kann dann zwischen den
bedingten Substitutionsbefehl und den Befehl 68, der korri
giert wird, plaziert werden, ohne die Ablaufunterbrechungs
daten des Befehls 68 zu ändern.
Wiederum gemäß Fig. 5 können einige potentielle Ablaufunter
brechungsbefehle mehr als einen Unterbrechungstypen erzeu
gen. Wenn das Korrigieren jedes der verschiedenen Unter
brechungstypen nur die Substitution des gleichen vorgegebe
nen Ergebnisses erfordert, wird nur ein bedingter Substi
tutionsbefehl benötigt. Durch das Spezifizieren aller Ab
laufunterbrechungen, die in dem Ablaufunterbrechungsspe
zifizierelement 100 des bedingten Substitutionsbefehls mit
der gleichen Substitution korrigiert werden können, führt
der bedingte Substitutionsbefehl die notwendige Substitution
aus, wenn eine beliebige der spezifizierten Ablaufunterbre
chungen erzeugt wurde.
Wenn verschiedene Substitutionen erforderlich sind, um die
Ablaufunterbrechungen, die von einem möglichen Ablaufunter
brechungsbefehl erzeugt werden können, zu korrigieren, müs
sen mehrere bedingte Substitutionsbefehle nach dem möglichen
Ablaufunterbrechungsbefehl in die Pipeline eingefügt werden.
Jeder der bedingten Substitutionsbefehle korrigiert eine an
dere Ablaufunterbrechung oder eine Gruppe von Ablaufunter
brechungen, die mit der gleichen Substitution korrigierbar
sind. Jeder bedingte Substitutionsbefehl benötigt die glei
che Zeit, um ausgeführt zu werden, wie jeder andere Befehl
in dem Pipeline-Computersystem. Daher verlangsamt jeder be
dingte Substitutionsbefehl, der zu einem Programm hinzuge
fügt wird, die Programmausführung. Jedoch ist die Verlangsa
mung im allgemeinen viel geringer als die, die durch die
Test-und-Verzweigungs- oder Fallenvorrichtungen in einem Pi
peline-Computersystem erzeugt wird, da die gleichzeitige
Ausführung nicht beeinflußt ist.
Bezugnehmend auf Fig. 7 umfaßt in einem "Groß"-Computersy
stem 120 gemäß einem weiteren Ausführungsbeispiel der Erfin
dung eine CPU 122 eine Mehrzahl von Funktionseinheiten 124,
126 zum gleichzeitigen Ausführen einer Mehrzahl von Befeh
len. Die CPU 122 umfaßt eine Befehlseinheit 130, die Befehle
von einem Speicher (nicht gezeigt) über einen Systembus 132
und einen Busschnittstellenschaltkreis 134 empfängt. Die Be
fehlseinheit 130 spricht auf die Befehle eines vorbestimmten
Befehlssatzes, der einen bedingten Substitutionsbefehl für
eine Ablaufunterbrechungs-Erholung einschließt, an.
Beim Empfangen von Befehlen, gruppiert die Befehlseinheit
130 eine Mehrzahl von Befehlen, die gleichzeitig ausgeführt
werden können, zusammen. Die Befehlseinheit 130 erzeugt dann
separate Steuersignale, um jede der Funktionseinheiten 124,
126 zu leiten, um die gruppierten Befehle, einen Befehl in
jeder Funktionseinheit, gleichzeitig auszuführen. Jede Funk
tionseinheit 124, 126 umfaßt Lesetore 138 bis 141 zum Lesen
von Operanden aus den Universalregistern 144 und ein
Schreibtor 148, 149 zum Schreiben des Ergebnisses einer Ope
ration, die mit den Operanden durchgeführt wird, in eines
der Register 144. Ein Ablaufunterbrechungsregister wird je
doch nicht benötigt.
In dem Groß-Computersystem 120 wird ein bedingter Substitu
tionsbefehl gleichzeitig mit dem Befehl, den er korrigiert,
ausgeführt. Z. B. kann ein Divisionsbefehl in der Funktions
einheit 124 gleichzeitig mit der Ausführung eines bedingten
Substitutionsbefehls in der Funktionseinheit 126 ausgeführt
werden. Wenn beim Ausführen des Divisionsbefehls eine Ab
laufunterbrechung erzeugt wird, signalisiert die Funktions
einheit 124 der Funktionseinheit 126 das Auftreten der Ab
laufunterbrechung auf einem Ablaufunterbrechungs-Signali
sierbus 152. Wenn keine Ablaufunterbrechung erzeugt ist,
schreibt die Funktionseinheit 124 das Ergebnis des Divi
sionsbefehls in ein spezifiziertes Register 154 der Univer
salregister 144. Wenn eine Ablaufunterbrechung erzeugt ist,
wird der Funktionseinheit 126 zum Schreiben eines Substi
tutionsergebnisses in das spezifizierte Register 154, das
die Ablaufunterbrechung korrigiert, der Vorrang gegeben.
Alternativ können ein Ablaufunterbrechungsregister oder meh
rere Ablaufunterbrechungsregister in dem Groß-Computersystem
120 vorgesehen sein, um Ablaufunterbrechungsdaten zur Ver
wendung durch einen bedingten Substitutionsbefehl in einer
nachfolgend ausgeführten Gruppe von Befehlen zu speichern.
Gemäß Fig. 8 umfaßt eine CPU 172 in einem Computersystem 170
gemäß einem dritten Ausführungsbeispiel der Erfindung einen
Multiplexer 174 und eine Speichertabelle 176, die in einem
Pfad 178 von Befehlsergebnissen von einer Funktionseinheit
180 zu Universalregistern 182 zwischengeschaltet ist. Die
CPU 172 umfaßt ferner eine Befehlseinheit 186, die über ei
nen Systembus 188 und einen Busschnittstellenschaltkreis 190
Befehle von einem Speicher (nicht gezeigt) wiedererlangt.
Die Befehlseinheit 186 spricht auf die Befehle eines vorbe
stimmten Befehlssatzes an, der einen bedingten Substitu
tionsbefehl einschließt.
Bei dem Computersystem 170 initialisiert der bedingte Sub
stitutionsbefehl die Substitution eines vorgegebenen Wertes
für das Ergebnis eines Ablaufunterbrechungsbefehls im vo
raus. Dies geschieht durch das Speichern eines vorgegebenen
Wertes für einen Satz von einer oder mehreren Ablaufunter
brechungen in der Speichertabelle 176. Vorzugsweise umfaßt
die Speichertabelle 176 eine Mehrzahl von Einträgen, einen
für jede Ablaufunterbrechung, die durch Substitution eines
vorgegebenen Werts korrigierbar ist. Der bedingte Substitu
tionsbefehl, der vorzugsweise ein Quellregister-Spezifizier
element und ein Ablaufunterbrechungs-Spezifizierelement um
faßt, weist die CPU 172 an, einen vorgegebenen Wert von ei
nem der Universalregister 182, das durch das Quellregister-
Spezifizierelement spezifiziert ist, in die Einträge der
Speichertabelle 176, die zu den Ablaufunterbrechungen gehö
ren, die durch das Ablaufunterbrechungs-Spezifizierelement
spezifiziert sind, zu speichern. Der bedingte Substitutions
befehl kann im allgemeinen von der gleichen Form wie der be
dingte Substitionsbefehl 92 (Fig. 6) mit dem Bestimmungsre
gister-Spezifizierelement sein, wobei das Ablaufunterbre
chungsregister-Spezifizierelement wegfällt.
Der Multiplexer 174 wählt zwischen einem Wert, der an einem
Ausgangstor 198 als das Ergebnis eines Befehls, der von der
Funktionseinheit 180 ausgeführt wird, vorliegt, und einem
vorgegebenen Wert von der Speichertabelle 176. Der ausge
wählte Wert hängt davon ab, ob der ausgeführte Befehl eine
Ablaufunterbrechung erzeugte, für die durch einen früheren
bedingten Substitutionsbefehl ein vorgegebener Wert gespei
chert wurde. Wenn keine solche Ablaufunterbrechung aufgetre
ten ist, wählt der Multiplexer 174 den Wert, der an dem Aus
gangstor 198 vorliegt, aus. Wenn eine solche Ablaufunterbre
chung aufgetreten ist, wählt der Multiplexer 174 den vorge
gebenen Wert für die Ablaufunterbrechung aus der Speicherta
belle 176 aus. Der Wert, der durch den Multiplexer 174 aus
gewählt wird, wird in dem Universalregister, das durch den
ausgeführten Befehl als die Bestimmung für dessen Ergebnis
spezifiziert ist, gespeichert.
Bei dem Computersystem 170 kann eine bedingte Substitution
für eine Ablaufunterbrechungserholung mit einem einzigen
bedingten Substitutionsbefehl installiert werden, der für
eine Anzahl von möglichen Ablaufunterbrechungsbefehlen oder
einen wiederholt möglichen Ablaufunterbrechungsbefehl
anwendbar ist. Z. B. kann in einem Programm, das die Funktion
sin (x)/x für eine Reihe von Werten x = a1, a2, ..., an (n
sei eine Integerzahl größer als 2) berechnet, ein bedingter
Substitutionsbefehl einen Eintrag in der Speichertabelle 176
für Division-durch-Null-Ablaufunterbrechungen mit dem vorge
gebenen Wert von 1 laden. Ein Divisionsbefehl, der das Ver
hältnis von sin(x)/x in einer Routine berechnet, die für je
den Wert von x wiederholt wird, wird eine Division-durch-
Null-Ablaufunterbrechung erzeugen, wenn der Wert von x Null
ist. Wenn ein derartiger Divisionsbefehl die Division-
durch-Null-Ablaufunterbrechung erzeugt, wählt der Multiple
xer 174 den vorgegebenen Wert, 1, aus der Speichertabelle
176, um ihn als Befehlsergebnis zu speichern.
Obwohl die Grundsätze der Erfindung bezugnehmend auf ein be
vorzugtes Ausführungsbeispiel beschrieben und dargestellt
sind, ist es offensichtlich, daß die Erfindung im Aufbau und
im Detail ohne Abweichen von derartigen Grundsätzen modifi
ziert werden kann. Z. B. ist die Erfindung ferner in Pipeli
ne-Computersystemen anwendbar, die eine Bypass-Vorrichtung
einschließen, durch die Daten, die durch einen ersten Befehl
geschrieben werden, durch das Register zu seinem Lesetor ge
leitet werden, um für einen zweiten Befehl mit gleichzei
tiger Ausführung verfügbar zu sein. Ferner kann ein beding
ter Substitutionsbefehl eine beliebige logische Kombination
von Ablaufunterbrechungen, für die ein Substitutionsergebnis
in ein Ergebnisregister geschrieben werden soll, spezifi
zieren.
Um einen Speicher der Ablaufunterbrechungsinformationen für
mehrere Befehle zu liefern, ohne daß mehrere Ablaufunter
brechungsregister (Register 106 in Fig. 5) vorliegen, können
als ein weiteres Beispiel die Ablaufunterbrechungsinforma
tionen stattdessen in den Universalregistern 108 gespeichert
werden, auf die die Ergebnisse der Befehle gerichtet sind.
Im Fall der Universalregister für Gleitkommawerte ist das
Ergebnis eines Ablaufunterbrechungsbefehls, das in den Regi
stern gespeichert wird, oft ein ungültiger oder ein "Not-A-
Number"-Wert (NaN-Wert). Bei typischen Gleitkommawert-Dar
stellungen stellt eine Anzahl von verschiedenen Bitkombi
nationen NaN-Werte dar. Durch Zuweisen bestimmter dieser
Bitkombinationen für NaN-Werte auf spezifische Ablaufunter
brechungen, kann der Ergebniswert, der durch einen Ablauf
unterbrechungsbefehl in einem Universalregister gespeichert
ist, verwendet werden, um das Auftreten einer oder mehrerer
spezifizierter Ablaufunterbrechungen anzuzeigen.
Im Fall der Universalregister für Integer- oder Festkomma-
Werte, sind im allgemeinen Bitkombinationen verwendet, um
gültige Werte darzustellen. Somit sind keine Bitkombina
tionen verfügbar, um Ablaufunterbrechungsinformationen dar
zustellen. Für diese Register müssen Speicher für zusätz
liche Bits in jedem Register vorgesehen sein, um Ablauf
unterbrechungsinformationen darzustellen.
Sind Ablaufunterbrechungsinformationen in den Universal
registern gespeichert, ist es nicht notwendig, daß Befehle,
die eine Ablaufunterbrechung zur Folge haben können, ein
Ablaufunterbrechungsregister zum Speichern ihrer Ablauf
unterbrechungsinformationen spezifizieren. Alle Ablaufun
terbrechungsinformationen des Befehls werden als eine der
NaN-Bitkombinationen im gleichen Universalregister gespei
chert, das er zum Speichern seines Ergebnisses spezifiziert
(oder in dem zusätzlichen Bitspeicher, der für diesen Zweck
in dem Fall der Festkommaregister vorgesehen ist). Solche
möglichen Ablaufunterbrechungsbefehle kann ein bedingter
Substitutionsbefehl, der das Universalregister des Ergebnis
ses (und der Ablaufunterbrechungsinformationen) entweder mit
seinem Bestimmungsregister-Spezifizierelement 96 oder dem
Ablaufunterbrechungsregister-Spezifizierelement 108 spezi
fiziert, folgen (und diese korrigieren).
Claims (17)
1. Computer, der folgende Merkmale aufweist:
einen Speicher (24);
ein Ergebnisregister (88) und ein Ausnahmebedingungsre gister (58); und
eine zentrale Verarbeitungseinheit (22), mit einem vor definierten Satz von Befehlen, der einen potentiell eine Ausnahmebedingung verursachenden Befehl (68) und einen bedingten Substitutionsbefehl (92) umfaßt, wobei der be dingte Substitutionsbefehl (92) einen Substitutionswert bestimmt, der in einem Ergebnisregister (88) abzulegen ist, wenn in dem Ausnahmebedingungsregister (58) ein Ausnahmebedingungsbit gesetzt ist;
wobei die zentrale Verarbeitungseinheit (22) auf fol gende Ereignisse reagiert:
einen Speicher (24);
ein Ergebnisregister (88) und ein Ausnahmebedingungsre gister (58); und
eine zentrale Verarbeitungseinheit (22), mit einem vor definierten Satz von Befehlen, der einen potentiell eine Ausnahmebedingung verursachenden Befehl (68) und einen bedingten Substitutionsbefehl (92) umfaßt, wobei der be dingte Substitutionsbefehl (92) einen Substitutionswert bestimmt, der in einem Ergebnisregister (88) abzulegen ist, wenn in dem Ausnahmebedingungsregister (58) ein Ausnahmebedingungsbit gesetzt ist;
wobei die zentrale Verarbeitungseinheit (22) auf fol gende Ereignisse reagiert:
- a) auf logische und arithmetische Befehle, die in dem Speicher (24) gespeichert wurden, durch Wiederge winnen von Daten aus dem Speicher (24), durch Verar beiten der Daten, durch Erzeugen eines Ergebnisses, und durch Speichern des Ergebnisses in dem Ergebnis register (88),
- b) auf das Auftreten einer Ausnahmebedingung durch den potentiell eine Ausnahmebedingung verursachenden Be fehl (68) durch Setzen des Ausnahmebedingungsbits in dem Ausnahmebedingungsregister und durch Ausführen des bedingten Substitutionsbefehls (92), und
- c) auf den bedingten Substitutionsbefehl (92) durch Speichern des Substitutionswertes in dem Ergebnisre gister (88) anstelle eines Wertes, der sich in dem Ergebnisregister (88) befindet, wenn in dem Aus nahmebedingungsregister (58) zu dem Zeitpunkt, zu dem der Substitutionsbefehl ausgeführt wird, das Ausnahmebedingungsbit gesetzt ist.
2. Computer gemäß Anspruch 1, bei dem der bedingte Substi
tutionsbefehl (92) ferner folgende Merkmale aufweist:
einen Operationscode (94), der eine vorbestimmte Folge von einem oder mehreren Bits aufweist, um anzuzeigen, daß, außerhalb der Befehle in dem Befehlssatz, der Be fehl der bedingte Substitutionsbefehl (92) ist;
ein Substitutionsergebnis-Spezifizierelement (98) zum Anzeigen des Substitutionsergebnisses; und
ein Ausnahmebedingungs-Spezifizierelement (100) zum An zeigen der Ausnahmebedingung.
einen Operationscode (94), der eine vorbestimmte Folge von einem oder mehreren Bits aufweist, um anzuzeigen, daß, außerhalb der Befehle in dem Befehlssatz, der Be fehl der bedingte Substitutionsbefehl (92) ist;
ein Substitutionsergebnis-Spezifizierelement (98) zum Anzeigen des Substitutionsergebnisses; und
ein Ausnahmebedingungs-Spezifizierelement (100) zum An zeigen der Ausnahmebedingung.
3. Computer gemäß Anspruch 2, bei dem das Substitutionser
gebnis-Spezifizierelement (98) ein Substitutionserge
bnisregister, das aus einer Mehrzahl von Registern aus
gewählt ist, anzeigt, welches das Substitutionsergebnis
enthält, wodurch das Substitutionsergebnis indirekt
durch das Subsitutionsergebnis-Spezifizierelement (98)
angezeigt ist.
4. Computer gemäß Anspruch 3, bei dem der bedingte Substi
tutionsbefehl (92) ferner folgendes Merkmal aufweist:
ein Ergebnisregister-Spezifizierelement (96) zum Anzei gen, welches Register das Ergebnisregister (88) ist.
ein Ergebnisregister-Spezifizierelement (96) zum Anzei gen, welches Register das Ergebnisregister (88) ist.
5. Computer gemäß einem der Ansprüche 1 bis 4, der ferner
folgendes Merkmal aufweist:
eine Mehrzahl von Ausnahmebedingungsregistern (58), von denen jedes Ausnahmebedingungsdaten speichert, die an zeigen, ob eine oder mehrere Ausnahmebedingungen das Er gebnis der Ausführung eines Befehls aus dem Befehlssatz durch die zentrale Verarbeitungseinheit (22) sind,
wobei die zentrale Verarbeitungseinheit (22), die auf den bedingten Substitutionsbefehl (92) anspricht, wirk sam ist, um das Substitutionsergebnis in dem Ergebnisre gister (88), das aus den Registern ausgewählt ist, zu speichern, wenn die Ausnahmebedingungsdaten, die in einem ausgewählten der Ausnahmebedingungsregister (58) gespeichert sind, anzeigen, daß eine Ausnahmebedingung das Ergebnis der Ausführung eines vorherigen Befehls ist.
eine Mehrzahl von Ausnahmebedingungsregistern (58), von denen jedes Ausnahmebedingungsdaten speichert, die an zeigen, ob eine oder mehrere Ausnahmebedingungen das Er gebnis der Ausführung eines Befehls aus dem Befehlssatz durch die zentrale Verarbeitungseinheit (22) sind,
wobei die zentrale Verarbeitungseinheit (22), die auf den bedingten Substitutionsbefehl (92) anspricht, wirk sam ist, um das Substitutionsergebnis in dem Ergebnisre gister (88), das aus den Registern ausgewählt ist, zu speichern, wenn die Ausnahmebedingungsdaten, die in einem ausgewählten der Ausnahmebedingungsregister (58) gespeichert sind, anzeigen, daß eine Ausnahmebedingung das Ergebnis der Ausführung eines vorherigen Befehls ist.
6. Computer gemäß einem der Ansprüche 1 bis 5, bei dem der
bedingte Substitutionsbefehl (92) ferner folgendes Merk
mal aufweist:
ein Ausnahmebedingungsregister-Spezifizierelement (108) zum Anzeigen des Ausgewählten der Ausnahmebedingungsre gister (58).
ein Ausnahmebedingungsregister-Spezifizierelement (108) zum Anzeigen des Ausgewählten der Ausnahmebedingungsre gister (58).
7. Computer gemäß einem der Ansprüche 1 bis 6, bei dem die
zentrale Verarbeitungseinheit (22) wirksam ist, um den
bedingten Substitutionsbefehl (92) in einer Pipeline-
Form gleichzeitig mit anderen Befehlen des Befehlssatzes
auszuführen.
8. Computer gemäß einem der Ansprüche 1 bis 4, bei dem die
zentrale Verarbeitungseinheit (22), die auf den be
dingten Substitutionsbefehl (92) anspricht, wirksam ist,
um das Substitutionsergebnis in dem Ergebnisregister
(88) zu speichern, wenn eine oder mehrere einer Mehrzahl
von ausgewählten Ausnahmebedingungen das Ergebnis eines
vorher ausgeführten Befehls sind.
9. Computer gemäß Anspruch 1, bei dem die zentrale Verar
beitungseinheit (22) folgende Merkmale aufweist:
einen Satz von Registern (46; 144; 182) zum Speichern von Daten;
eine Befehlseinheit (34; 130; 186) zum Lesen und Deko dieren von Befehlen aus dem Speicher (24);
eine Funktionseinheit (90; 124, 126; 180), die mit den Registern (46; 144; 182) verbunden ist und logische Schaltungen zum Ausführen von Operationen mit Operanden, die aus den Registern (46; 144; 182) gelesen werden, aufweist;
wobei die Befehlseinheit (34; 130; 186) auf den Befehl (68) anspricht und wirksam ist, um die Funktionseinheit (90; 124, 126; 180) zu veranlassen, eine Operation mit einem oder mehreren Operanden, die aus einem oder mehreren Operandenregistern (74, 75), die aus den Regi stern (46; 144; 182) ausgewählt sind, gelesen werden, auszuführen und das Ergebnis der Operation in dem Ergeb nisregister (88), das aus den Registern (46; 144; 182) ausgewählt ist, zu speichern; und
wobei die Befehlseinheit (34; 130; 186) auf den be dingten Substitutionsbefehl (92) anspricht und wirksam ist, um die Funktionseinheit (90, 124, 126; 180) zu ver anlassen, ein Substitutionsergebnis in dem Ergebnisregi ster (88) zu speichern, wenn eine oder mehrere der Aus nahmebedingungen das Ergebnis der Ausführung der Opera tion sind.
einen Satz von Registern (46; 144; 182) zum Speichern von Daten;
eine Befehlseinheit (34; 130; 186) zum Lesen und Deko dieren von Befehlen aus dem Speicher (24);
eine Funktionseinheit (90; 124, 126; 180), die mit den Registern (46; 144; 182) verbunden ist und logische Schaltungen zum Ausführen von Operationen mit Operanden, die aus den Registern (46; 144; 182) gelesen werden, aufweist;
wobei die Befehlseinheit (34; 130; 186) auf den Befehl (68) anspricht und wirksam ist, um die Funktionseinheit (90; 124, 126; 180) zu veranlassen, eine Operation mit einem oder mehreren Operanden, die aus einem oder mehreren Operandenregistern (74, 75), die aus den Regi stern (46; 144; 182) ausgewählt sind, gelesen werden, auszuführen und das Ergebnis der Operation in dem Ergeb nisregister (88), das aus den Registern (46; 144; 182) ausgewählt ist, zu speichern; und
wobei die Befehlseinheit (34; 130; 186) auf den be dingten Substitutionsbefehl (92) anspricht und wirksam ist, um die Funktionseinheit (90, 124, 126; 180) zu ver anlassen, ein Substitutionsergebnis in dem Ergebnisregi ster (88) zu speichern, wenn eine oder mehrere der Aus nahmebedingungen das Ergebnis der Ausführung der Opera tion sind.
10. Computer gemäß Anspruch 9, bei dem das Ausnahmebe
dingungsregister (58) Ausnahmebedingungsdaten speichert,
die anzeigen, daß eine Ausnahmebedingung durch die Aus
führung einer Operation in der Funktionseinheit (40),
die auf einen Befehl (68) anspricht, erzeugt wurde;
wobei die Befehlseinheit (34), die auf den Befehl (68) anspricht, wirksam ist, um die Funktionseinheit (40) zu veranlassen, eine Operation mit einem oder mehreren Ope randen auszuführen, die aus einem oder mehreren Operan denregistern (74, 75), die aus den Registern (46) ausge wählt sind, gelesen werden, ein Ergebnis der logischen Operation in dem Ergebnisregister (88), das aus den Re gistern (46) ausgewählt ist, zu speichern, und die Aus nahmebedingungsdaten in dem Ausnahmebedingungsregister zu speichern, wobei angezeigt wird, ob eine oder mehrere Ausnahmebedingungen die Folge der Ausführung der Opera tion sind; und
wobei die Befehlseinheit (34), die auf einen bedingten Substitutionsbefehl (92) anspricht, ferner wirksam ist, um die Funktionseinheit (40) zu veranlassen, das Sub stitutionsergebnis in dem Ergebnisregister (88) zu spei chern, wenn durch die Ausnahmebedingungsdaten in dem Ausnahmebedingungsregister angezeigt wird, daß eine oder mehrere Ausnahmebedingungen aufgetreten sind.
wobei die Befehlseinheit (34), die auf den Befehl (68) anspricht, wirksam ist, um die Funktionseinheit (40) zu veranlassen, eine Operation mit einem oder mehreren Ope randen auszuführen, die aus einem oder mehreren Operan denregistern (74, 75), die aus den Registern (46) ausge wählt sind, gelesen werden, ein Ergebnis der logischen Operation in dem Ergebnisregister (88), das aus den Re gistern (46) ausgewählt ist, zu speichern, und die Aus nahmebedingungsdaten in dem Ausnahmebedingungsregister zu speichern, wobei angezeigt wird, ob eine oder mehrere Ausnahmebedingungen die Folge der Ausführung der Opera tion sind; und
wobei die Befehlseinheit (34), die auf einen bedingten Substitutionsbefehl (92) anspricht, ferner wirksam ist, um die Funktionseinheit (40) zu veranlassen, das Sub stitutionsergebnis in dem Ergebnisregister (88) zu spei chern, wenn durch die Ausnahmebedingungsdaten in dem Ausnahmebedingungsregister angezeigt wird, daß eine oder mehrere Ausnahmebedingungen aufgetreten sind.
11. Computer gemäß Anspruch 9, der ferner folgendes Merkmal
aufweist:
eine Mehrzahl von Funktionseinheiten (124, 126), wobei jede Funktionseinheit (124, 126) mit den Registern (144) verbunden ist und logische Schaltungen zum Ausführen von Operationen mit Operanden, die aus den Registern (144) gelesen werden, aufweisen;
wobei die Instruktionseinheit (130), die auf eine Gruppe von Befehlen, die den bedingten Substitutionsbefehl (92) einschließen, anspricht, wirksam ist, um eine erste der Funktionseinheiten (124) zu veranlassen, eine Operation mit einem oder mehreren Operanden auszuführen, die aus einem oder mehreren Operandenregistern, die aus den Re gistern (144) ausgewählt sind, gelesen werden, und ein Ergebnis der Operation in dem Ergebnisregister, das aus den Registern (144) ausgewählt ist, zu speichern; und
wobei die Befehlseinheit (130), die auf die Gruppe von Befehlen anspricht, ferner wirksam ist, um eine zweite der Funktionseinheiten (126) zu veranlassen, ein Sub stitutionsergebnis in dem Ergebnisregister (88) zu spei chern, wenn eine oder mehrere Ausnahmebedingungen das Ergebnis der Ausführung der Operation in der ersten Funktionseinheit (126) sind.
eine Mehrzahl von Funktionseinheiten (124, 126), wobei jede Funktionseinheit (124, 126) mit den Registern (144) verbunden ist und logische Schaltungen zum Ausführen von Operationen mit Operanden, die aus den Registern (144) gelesen werden, aufweisen;
wobei die Instruktionseinheit (130), die auf eine Gruppe von Befehlen, die den bedingten Substitutionsbefehl (92) einschließen, anspricht, wirksam ist, um eine erste der Funktionseinheiten (124) zu veranlassen, eine Operation mit einem oder mehreren Operanden auszuführen, die aus einem oder mehreren Operandenregistern, die aus den Re gistern (144) ausgewählt sind, gelesen werden, und ein Ergebnis der Operation in dem Ergebnisregister, das aus den Registern (144) ausgewählt ist, zu speichern; und
wobei die Befehlseinheit (130), die auf die Gruppe von Befehlen anspricht, ferner wirksam ist, um eine zweite der Funktionseinheiten (126) zu veranlassen, ein Sub stitutionsergebnis in dem Ergebnisregister (88) zu spei chern, wenn eine oder mehrere Ausnahmebedingungen das Ergebnis der Ausführung der Operation in der ersten Funktionseinheit (126) sind.
12. Computer gemäß Anspruch 9, der ferner folgende Merkmale
aufweist:
eine Speichertabelle (176) mit einem oder mehreren Ein trägen zum Speichern von Substitutionsergebnissen, wobei das Substitutionsergebnis für die Ausnahmebedingungen als Reaktion auf den bedingten Substitutionsbefehl (92) in der Speichertabelle (176) gespeichert ist; und
einen Multiplexer (174), der zwischen die Funktionsein heit (180) und die Register (182) geschaltet ist, wobei der Multiplexer (174) wirksam ist, um das Ergebnis, das in dem Ergebnisregister gespeichert ist, durch das Sub stitutionsergebnis zu ersetzen, wenn die Ausführung der Operation eine oder mehrere Ausnahmebedingungen erzeugt hat.
eine Speichertabelle (176) mit einem oder mehreren Ein trägen zum Speichern von Substitutionsergebnissen, wobei das Substitutionsergebnis für die Ausnahmebedingungen als Reaktion auf den bedingten Substitutionsbefehl (92) in der Speichertabelle (176) gespeichert ist; und
einen Multiplexer (174), der zwischen die Funktionsein heit (180) und die Register (182) geschaltet ist, wobei der Multiplexer (174) wirksam ist, um das Ergebnis, das in dem Ergebnisregister gespeichert ist, durch das Sub stitutionsergebnis zu ersetzen, wenn die Ausführung der Operation eine oder mehrere Ausnahmebedingungen erzeugt hat.
13. Verfahren zur Behandlung von Ausnahmebedingungen in
einem Computer (20), mit folgenden Schritten:
Einlesen eines potentiell eine Ausnahmebedingung verur sachenden Befehls (68) und eines bedingten Substitutionsbefehls (92), der eine Zielregisteradresse (96) aufweist und einen festgelegten Substitutionswert liefert;
Ausführen des potentiell eine Ausnahmebedingung verur sachendenden Befehls (68); Setzen eines Ausnahmebedingungsbits (82), wenn der po tentiell eine Ausnahmebedingung verursachende Befehl (68) eine Ausnahmebedingung bewirkt, und Ausführen des bedingten Substitutionsbefehls (92); und
bei gesetztem Ausnahmebedingungsbit (82), Schreiben des Substitutionswerts in ein Ergebnisregister (88), das der Zielregisteradresse entspricht.
Einlesen eines potentiell eine Ausnahmebedingung verur sachenden Befehls (68) und eines bedingten Substitutionsbefehls (92), der eine Zielregisteradresse (96) aufweist und einen festgelegten Substitutionswert liefert;
Ausführen des potentiell eine Ausnahmebedingung verur sachendenden Befehls (68); Setzen eines Ausnahmebedingungsbits (82), wenn der po tentiell eine Ausnahmebedingung verursachende Befehl (68) eine Ausnahmebedingung bewirkt, und Ausführen des bedingten Substitutionsbefehls (92); und
bei gesetztem Ausnahmebedingungsbit (82), Schreiben des Substitutionswerts in ein Ergebnisregister (88), das der Zielregisteradresse entspricht.
14. Verfahren gemäß Anspruch 13, bei dem
der Schritt des Ausführens des potentiell eine Ausnahme bedingung verursachenden Befehls (68) ferner das Spei chern von Ausnahmebedingungsdaten in einem Register um faßt, wobei angezeigt wird, ob eine oder mehrere Aus nahmebedingungen das Ergebnis der Ausführung des po tentiell eine Ausnahmebedingung verursachenden Befehls (68) sind; und
der Schritt des Ausführens des bedingten Substitutions befehls (92) die Bestimmung umfaßt, ob zumindest eine der Ausnahmebedingungen ein Ergebnis der Ausführung des potentiell eine Ausnahmebedingung verursachenden Befehls (68) gemäß den Ausnahmebedingungsdaten, die in dem Aus nahmebedingungsregister (58) gespeichert sind, ist.
der Schritt des Ausführens des potentiell eine Ausnahme bedingung verursachenden Befehls (68) ferner das Spei chern von Ausnahmebedingungsdaten in einem Register um faßt, wobei angezeigt wird, ob eine oder mehrere Aus nahmebedingungen das Ergebnis der Ausführung des po tentiell eine Ausnahmebedingung verursachenden Befehls (68) sind; und
der Schritt des Ausführens des bedingten Substitutions befehls (92) die Bestimmung umfaßt, ob zumindest eine der Ausnahmebedingungen ein Ergebnis der Ausführung des potentiell eine Ausnahmebedingung verursachenden Befehls (68) gemäß den Ausnahmebedingungsdaten, die in dem Aus nahmebedingungsregister (58) gespeichert sind, ist.
15. Verfahren gemäß Anspruch 14, bei dem der Schritt des
Entscheidens, ob zumindest eine der Ausnahmebedingungen,
die aufgetreten ist, nach den Schritten des Durchführens
der Operation auftritt.
16. Verfahren gemäß Anspruch 13, das ferner folgenden
Schritt aufweist:
Ausführen einer Mehrzahl von bedingten Substitutionsbe fehlen (92), wobei jeder der bedingten Substitutionsbe fehle (92) ein Substitutionsergebnis erzeugt und eine oder mehrere Ausnahmebedingungen spezifiziert, wobei der Schritt des Ausführens der bedingten Substitutionsbe fehle (92) für jeden bedingten Substitutionsbefehl (92) folgende Schritte aufweist:
Bestimmen, ob zumindest eine der einen oder mehreren Ausnahmebedingungen, die durch den bedingten Substitu tionsbefehl spezifiziert sind, als ein Ergebnis der Aus führung des ersten Befehls aufgetreten ist; und
Ersetzen des Ergebnisses durch das Substitutionsergeb nis, das durch den bedingten Substitutionsbefehl (92) erzeugt ist, wenn bestimmt wird, daß zumindest eine der einen oder mehreren spezifizierten Ausnahmebedingungen aufgetreten ist.
Ausführen einer Mehrzahl von bedingten Substitutionsbe fehlen (92), wobei jeder der bedingten Substitutionsbe fehle (92) ein Substitutionsergebnis erzeugt und eine oder mehrere Ausnahmebedingungen spezifiziert, wobei der Schritt des Ausführens der bedingten Substitutionsbe fehle (92) für jeden bedingten Substitutionsbefehl (92) folgende Schritte aufweist:
Bestimmen, ob zumindest eine der einen oder mehreren Ausnahmebedingungen, die durch den bedingten Substitu tionsbefehl spezifiziert sind, als ein Ergebnis der Aus führung des ersten Befehls aufgetreten ist; und
Ersetzen des Ergebnisses durch das Substitutionsergeb nis, das durch den bedingten Substitutionsbefehl (92) erzeugt ist, wenn bestimmt wird, daß zumindest eine der einen oder mehreren spezifizierten Ausnahmebedingungen aufgetreten ist.
17. Verfahren gemäß Anspruch 13, bei dem der Schritt des
Ausführens des bedingten Substitutionsbefehls (92) fer
ner folgenden Schritt aufweist:
Speichern des Substitutionsergebnisses in einer Spei chertabelle (176) vor dem Ausführen des potentiell eine Ausnahmebedingung verursachenden Befehls (68);
wobei die Schritte des Bestimmens und Speicherns des Substitutionswertes in dem Ergebnisregister (88) nach dem Schritt des Durchführens der Operation auftreten.
Speichern des Substitutionsergebnisses in einer Spei chertabelle (176) vor dem Ausführen des potentiell eine Ausnahmebedingung verursachenden Befehls (68);
wobei die Schritte des Bestimmens und Speicherns des Substitutionswertes in dem Ergebnisregister (88) nach dem Schritt des Durchführens der Operation auftreten.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17383693A | 1993-12-23 | 1993-12-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE4434895A1 DE4434895A1 (de) | 1995-06-29 |
DE4434895C2 true DE4434895C2 (de) | 1998-12-24 |
Family
ID=22633712
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE4434895A Expired - Fee Related DE4434895C2 (de) | 1993-12-23 | 1994-09-29 | Verfahren und Vorrichtung zur Behandlung von Ausnahmebedingungen |
Country Status (4)
Country | Link |
---|---|
US (1) | US5596733A (de) |
JP (1) | JPH07248897A (de) |
DE (1) | DE4434895C2 (de) |
GB (1) | GB2285155B (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10101949C1 (de) * | 2001-01-17 | 2002-08-08 | Infineon Technologies Ag | Datenverarbeitungsverfahren |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5694587A (en) * | 1995-03-31 | 1997-12-02 | International Business Machines Corporation | Specialized millicode instructions for test PSW validity, load with access test, and character translation assist |
US5907708A (en) * | 1996-06-03 | 1999-05-25 | Sun Microsystems, Inc. | System and method for facilitating avoidance of an exception of a predetermined type in a digital computer system by providing fix-up code for an instruction in response to detection of an exception condition resulting from execution thereof |
US5828890A (en) * | 1997-01-30 | 1998-10-27 | Northbrook Services | System for interrupting program operation when an out-of-range value is encountered to correct a data value |
US6654879B1 (en) | 1997-01-30 | 2003-11-25 | Northbrook Services | Method and apparatus for analyzing code for out-of-range data involving base and seed tables/lists |
US6304963B1 (en) | 1998-05-14 | 2001-10-16 | Arm Limited | Handling exceptions occuring during processing of vector instructions |
US6216222B1 (en) * | 1998-05-14 | 2001-04-10 | Arm Limited | Handling exceptions in a pipelined data processing apparatus |
JP3320358B2 (ja) * | 1998-06-18 | 2002-09-03 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンパイル方法、例外処理方法、及びコンピュータ |
US6189093B1 (en) * | 1998-07-21 | 2001-02-13 | Lsi Logic Corporation | System for initiating exception routine in response to memory access exception by storing exception information and exception bit within architectured register |
JP2001202243A (ja) * | 1999-04-30 | 2001-07-27 | Hitachi Ltd | データ処理装置 |
US6640315B1 (en) | 1999-06-26 | 2003-10-28 | Board Of Trustees Of The University Of Illinois | Method and apparatus for enhancing instruction level parallelism |
US6442707B1 (en) * | 1999-10-29 | 2002-08-27 | Advanced Micro Devices, Inc. | Alternate fault handler |
US6904543B2 (en) * | 1999-12-24 | 2005-06-07 | Denso Corporation | Electronic control having floating-point data check function |
US7100025B1 (en) * | 2000-01-28 | 2006-08-29 | Hewlett-Packard Development Company, L.P. | Apparatus and method for performing single-instruction multiple-data instructions |
US7133951B1 (en) * | 2000-02-29 | 2006-11-07 | Bourekas Philip A | Alternate set of registers to service critical interrupts and operating system traps |
DE10108107A1 (de) * | 2001-02-21 | 2002-08-29 | Philips Corp Intellectual Pty | Schaltungsanordnung sowie Verfahren zum Erkennen einer Zugriffsverletzung bei einer Mikrokontrolleranordnung |
US6865731B2 (en) * | 2001-05-30 | 2005-03-08 | International Business Machines Corporation | Method and computer program product for testing application program software |
US20070174383A1 (en) * | 2001-12-11 | 2007-07-26 | Open Invention Network Llc | System and method for effectively configuring a marketsite application integrator |
JP3900485B2 (ja) * | 2002-07-29 | 2007-04-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 最適化装置、コンパイラプログラム、最適化方法、及び記録媒体 |
US7469407B2 (en) | 2003-04-24 | 2008-12-23 | International Business Machines Corporation | Method for resource balancing using dispatch flush in a simultaneous multithread processor |
US7213135B2 (en) | 2003-04-24 | 2007-05-01 | International Business Machines Corporation | Method using a dispatch flush in a simultaneous multithread processor to resolve exception conditions |
US7921250B2 (en) * | 2004-07-29 | 2011-04-05 | International Business Machines Corporation | Method to switch the lock-bits combination used to lock a page table entry upon receiving system reset exceptions |
CN101727619A (zh) * | 2008-10-20 | 2010-06-09 | 鸿富锦精密工业(深圳)有限公司 | 标准作业流程播放系统与方法 |
US8549269B2 (en) * | 2009-03-10 | 2013-10-01 | International Business Machines Corporation | Method, apparatus or software for processing exceptions produced by an application program |
JP5866751B2 (ja) * | 2009-11-30 | 2016-02-17 | ヤマハ株式会社 | 音響共鳴体及び音響室 |
CN102156661B (zh) * | 2010-02-11 | 2013-06-12 | 华为技术有限公司 | 在线补丁的激活方法、装置及系统 |
US20120173923A1 (en) * | 2010-12-31 | 2012-07-05 | International Business Machines Corporation | Accelerating the performance of mathematical functions in high performance computer systems |
US10078515B2 (en) * | 2011-10-03 | 2018-09-18 | International Business Machines Corporation | Tracking operand liveness information in a computer system and performing function based on the liveness information |
US20180173527A1 (en) * | 2016-12-15 | 2018-06-21 | Optimum Semiconductor Technologies, Inc. | Floating point instruction format with embedded rounding rule |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4875160A (en) * | 1988-07-20 | 1989-10-17 | Digital Equipment Corporation | Method for implementing synchronous pipeline exception recovery |
US5193158A (en) * | 1988-10-19 | 1993-03-09 | Hewlett-Packard Company | Method and apparatus for exception handling in pipeline processors having mismatched instruction pipeline depths |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS60136872A (ja) * | 1983-12-26 | 1985-07-20 | Hitachi Ltd | ベクトル処理装置 |
JPS6280743A (ja) * | 1985-10-01 | 1987-04-14 | インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション | アドレス変換例外処理方法 |
JPH0769783B2 (ja) * | 1987-11-16 | 1995-07-31 | 日本電気株式会社 | 例外処理方式 |
US4879676A (en) * | 1988-02-29 | 1989-11-07 | Mips Computer Systems, Inc. | Method and apparatus for precise floating point exceptions |
US4903264A (en) * | 1988-04-18 | 1990-02-20 | Motorola, Inc. | Method and apparatus for handling out of order exceptions in a pipelined data unit |
US5109514A (en) * | 1988-07-28 | 1992-04-28 | Sun Microsystems, Inc. | Method and apparatus for executing concurrent CO processor operations and precisely handling related exceptions |
US5134693A (en) * | 1989-01-18 | 1992-07-28 | Intel Corporation | System for handling occurrence of exceptions during execution of microinstructions while running floating point and non-floating point instructions in parallel |
US4985825A (en) * | 1989-02-03 | 1991-01-15 | Digital Equipment Corporation | System for delaying processing of memory access exceptions until the execution stage of an instruction pipeline of a virtual memory system based digital computer |
US5075844A (en) * | 1989-05-24 | 1991-12-24 | Tandem Computers Incorporated | Paired instruction processor precise exception handling mechanism |
CA2045735A1 (en) * | 1990-06-29 | 1991-12-30 | Richard Lee Sites | Computer performance by eliminating branches |
GB2254715B (en) * | 1991-07-10 | 1995-02-22 | Kashinath Narayan Dandeker | A control switch based on the Boolean false=0/0 and the Boolean true=(not 0)/(not 0) |
-
1994
- 1994-09-29 DE DE4434895A patent/DE4434895C2/de not_active Expired - Fee Related
- 1994-12-15 GB GB9425332A patent/GB2285155B/en not_active Expired - Fee Related
- 1994-12-21 JP JP6318815A patent/JPH07248897A/ja active Pending
- 1994-12-22 US US08/361,874 patent/US5596733A/en not_active Expired - Lifetime
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4875160A (en) * | 1988-07-20 | 1989-10-17 | Digital Equipment Corporation | Method for implementing synchronous pipeline exception recovery |
US5193158A (en) * | 1988-10-19 | 1993-03-09 | Hewlett-Packard Company | Method and apparatus for exception handling in pipeline processors having mismatched instruction pipeline depths |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10101949C1 (de) * | 2001-01-17 | 2002-08-08 | Infineon Technologies Ag | Datenverarbeitungsverfahren |
Also Published As
Publication number | Publication date |
---|---|
GB2285155B (en) | 1998-06-17 |
US5596733A (en) | 1997-01-21 |
GB2285155A (en) | 1995-06-28 |
JPH07248897A (ja) | 1995-09-26 |
GB9425332D0 (en) | 1995-02-15 |
DE4434895A1 (de) | 1995-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE4434895C2 (de) | Verfahren und Vorrichtung zur Behandlung von Ausnahmebedingungen | |
DE68926063T2 (de) | Verfahren und Gerät zur Steuerung von prozessoren mittels Vorhersagen von Ausnahmen bei der gleitkomma-Arithmetik | |
DE3856067T2 (de) | Datenprozessor mit einer Unterbrechungsfunktion | |
DE3650413T2 (de) | Verfahren und Vorrichtung zur Annulierung eines Befehls. | |
DE69028138T2 (de) | Mechanismus zur präzisen Behandlung von Ausnahmebedingungen in einem Prozessor mit gepaarten Befehlen | |
DE68927911T2 (de) | Datenverarbeitungssystem | |
DE69033398T2 (de) | Rechnerarchitektur mit Mehrfachbefehlsausgabe | |
DE68923264T2 (de) | Gerät zum Ausführen arithmetischer Gleitkommaoperationen. | |
DE69033443T2 (de) | Mechanismus zur Verzweigungsrücksetzung in einem Prozessor mit gepaarten Befehlen | |
DE68924223T2 (de) | Mechanismus zum Prüfpunktwiederversuch. | |
DE69126166T2 (de) | Programmierbare Steuerungsvorrichtung | |
DE69209740T2 (de) | Computerbetrieb bei Ausfall und Wiederkehr der Betriebsspannung. | |
DE4211245B4 (de) | Prozessorsystem in Parallelverarbeitungsbauart und Verfahren zu dessen Steuerung | |
DE68924400T2 (de) | Fliessbanddatenverarbeitungsvorrichtung. | |
DE3116100A1 (de) | Sprungabschaetz-zentraleinheit | |
DE69318914T2 (de) | Vorrichtung zur Abarbeitung von Befehlen mit verbesserter Abwicklung von Unterbrechungen | |
DE69132733T2 (de) | Unterbrechungsverarbeitungssystem | |
DE19824289C2 (de) | Pipelineverarbeitungsmaschine | |
DE102010045800A1 (de) | Elektronische Vorrichtung und Verfahren zur Datenverarbeitung unter Verwendung einer Betriebsart mit virtuellem Register | |
DE69128908T2 (de) | Verfahren zum Durchführen von erlässlichen Befehlen in einem Rechner | |
DE4434529A1 (de) | Verfahren zum Verarbeiten eines Befehls mit Einsatzbedingung und Vorrichtung dazu | |
DE69029164T2 (de) | Vorrichtung und Verfahren zum Ersetzen der Parität | |
DE69621091T2 (de) | Programmierbare Steuerung | |
DE3650578T2 (de) | Informationsverarbeitungssystem mit einer Steuerschaltung zum Abwarten einer Registererneuerung und einem Aufnahmemittel des zu erneuernden Registers | |
DE19652290C2 (de) | Mikrocomputer |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |