DE4434895A1 - Verfahren und Vorrichtung zur Erholung von Ablaufunterbrechungen in einem Computersystem - Google Patents
Verfahren und Vorrichtung zur Erholung von Ablaufunterbrechungen in einem ComputersystemInfo
- Publication number
- DE4434895A1 DE4434895A1 DE4434895A DE4434895A DE4434895A1 DE 4434895 A1 DE4434895 A1 DE 4434895A1 DE 4434895 A DE4434895 A DE 4434895A DE 4434895 A DE4434895 A DE 4434895A DE 4434895 A1 DE4434895 A1 DE 4434895A1
- Authority
- DE
- Germany
- Prior art keywords
- result
- instruction
- interrupt
- substitution
- register
- 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.)
- Granted
Links
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, 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, look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
Description
Diese Erfindung bezieht sich allgemein auf die Erholung von
Laufzeitzeitunterbrechungen in einem Computersystem
Insbesondere bezieht sich diese Erfindung auf ein Verfahren
und eine Vorrichtung zur programmatischen und Pipeline-
Erholung von Ablaufunterbrechungen, die zur Laufzeit erzeugt
werden, 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.
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.
Es ist die Aufgabe der vorliegenden Erfindung, ein Verfahren
und eine Vorrichtung zur Erholung von Ablaufunterbrechungen
in einem Computersystem zu schaffen, wobei weder die
Geschwindigkeit einer Programmausführung beeinflußt wird,
noch übermäßige zusätzliche Kosten und Komplexität einge
führt werden.
Diese Aufgabe wird durch ein Computersystem gemäß Patent
anspruch 1 und Patentanspruch 11, sowie ein Verfahren gemäß
Patentanspruch 15 gelöst.
Die vorliegende Erfindung schafft ein Verfahren und eine
Vorrichtung zur Erholung von Ablaufunterbrechungen, die die
oben genannten und weitere Nachteile bekannter Technik
überwinden. Gemäß der Erfindung ist der Befehlssatz eines
Computers (der ein Pipeline-Computer sein kann) durch
Einschließen eines oder mehrerer "Fix-up"-Befehle, die als
Reaktion auf einen Befehl, der eine oder mehrere spezifi
zierte Ablaufunterbrechungen erzeugt, eine einfache korri
gierende Aktion, wie z. B. die Substitution eines vorgegebe
nen Wertes, bewirken, erweitert.
Bei einem Ausführungsbeispiel der Erfindung ist z. B. ein
bedingter Substitutionsbefehl im Befehlssatz eines Pipe
line-Computers enthalten. Der bedingte Substitutionsbefehl
spezifiziert einen Satz von einer oder mehreren möglichen
Ablaufunterbrechungen, einen vorgegebenen Wert und ein Er
gebnisregister. Der bedingte Substitutionsbefehl wird nach
einem möglichen Ablaufunterbrechungsbefehl, für den die
Substitution des vorgegebenen Ergebnisses eine durchgehende
Programmausfü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 zwischen Registern. (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 Taktzyklus 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 korrigieren.
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 = a₁, a₂, . . ., 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 statt dessen 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 (19)
1. Computersystem (20; 120; 170), das folgende Merkmale
aufweist:
einen Speicher (24) zum Speichern von Daten und Befeh len;
eine Zentralverarbeitungseinheit (22; 122; 172) zum Verarbeiten der gespeicherten Daten gemäß den Befehlen, wobei die Zentralverarbeitungseinheit (22; 122; 172) wirksam ist, um jeden eines Satzes von Befehlen auszu führen, wobei der Befehlssatz Datenübertragungsbefehle, logische Operationsbefehle (68) und einen bedingten Sub stitutionsbefehl (92) umfaßt; und
eine Mehrzahl von Universalregistern (46; 144; 182) zum Speichern von Operanden und Ergebnissen der Befehle, die durch die Zentralverarbeitungseinheit (22; 122; 172) ausgeführt sind;
wobei die Zentralverarbeitungseinheit (22; 122; 172), die auf den bedingten Substitutionsbefehl (92) an spricht, wirksam ist, um ein Substitutionsergebnis in einem Ergebnisregister (88), das aus den Universalre gistern (46, 144, 182) ausgewählt ist, zu speichern, wenn eine ausgewählte Ablaufunterbrechung das Ergebnis eines vorher ausgeführten Befehls ist.
einen Speicher (24) zum Speichern von Daten und Befeh len;
eine Zentralverarbeitungseinheit (22; 122; 172) zum Verarbeiten der gespeicherten Daten gemäß den Befehlen, wobei die Zentralverarbeitungseinheit (22; 122; 172) wirksam ist, um jeden eines Satzes von Befehlen auszu führen, wobei der Befehlssatz Datenübertragungsbefehle, logische Operationsbefehle (68) und einen bedingten Sub stitutionsbefehl (92) umfaßt; und
eine Mehrzahl von Universalregistern (46; 144; 182) zum Speichern von Operanden und Ergebnissen der Befehle, die durch die Zentralverarbeitungseinheit (22; 122; 172) ausgeführt sind;
wobei die Zentralverarbeitungseinheit (22; 122; 172), die auf den bedingten Substitutionsbefehl (92) an spricht, wirksam ist, um ein Substitutionsergebnis in einem Ergebnisregister (88), das aus den Universalre gistern (46, 144, 182) ausgewählt ist, zu speichern, wenn eine ausgewählte Ablaufunterbrechung das Ergebnis eines vorher ausgeführten Befehls ist.
2. Computersystem (20; 120; 170) gemäß Anspruch 1, bei dem
der bedingte Substitutionsbefehl (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 Ablaufunterbrechungs-Spezifizierelement (100) zum Anzeigen der ausgewählten Ablaufunterbrechung.
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 Ablaufunterbrechungs-Spezifizierelement (100) zum Anzeigen der ausgewählten Ablaufunterbrechung.
3. Computersystem (20; 120; 170) gemäß Anspruch 2, bei dem
das Substitutionsergebnis-Spezifizierelement (98) ein
Substitutionsergebnisregister, das aus den Universal
registern (46; 144; 182) ausgewählt ist, anzeigt, wel
ches das Substitutionsergebnis enthält, wodurch das
Substitutionsergebnis indirekt durch das Substitutions
ergebnis-Spezifizierelement (98) angezeigt ist.
4. Computersystem gemäß Anspruch 3, bei dem der bedingte
Substitutionsbefehl (92) ferner folgendes Merkmal auf
weist:
ein Ergebnisregister-Spezifizierelement (96) zum An zeigen, welches der Universalregister (46; 144; 182) das Ergebnisregister (88) ist.
ein Ergebnisregister-Spezifizierelement (96) zum An zeigen, welches der Universalregister (46; 144; 182) das Ergebnisregister (88) ist.
5. Computersystem (20; 120) gemäß einem der Ansprüche 1 bis
4, das ferner folgendes Merkmal aufweist:
ein Ablaufunterbrechungsregister (58) zum Speichern von Ablaufunterbrechungsdaten, die anzeigen, ob Ablaufun terbrechungen ein Ergebnis der Ausführung eines Befehls des Befehlssatzes durch die Zentralverarbeitungseinheit (22; 122; 172) sind;
wobei die Zentralverarbeitungseinheit (22; 122; 172), die auf den bedingten Substitutionsbefehl anspricht, wirksam ist, um das Substitutionsergebnis in dem Er gebnisregister (88) zu speichern, wenn die Ablauf unterbrechungsdaten, die in dem Ablaufunterbrechungs register (58) gespeichert sind, anzeigen, daß eine ausgewählte Ablaufunterbrechung das Ergebnis eines früher ausgeführten Befehls ist.
ein Ablaufunterbrechungsregister (58) zum Speichern von Ablaufunterbrechungsdaten, die anzeigen, ob Ablaufun terbrechungen ein Ergebnis der Ausführung eines Befehls des Befehlssatzes durch die Zentralverarbeitungseinheit (22; 122; 172) sind;
wobei die Zentralverarbeitungseinheit (22; 122; 172), die auf den bedingten Substitutionsbefehl anspricht, wirksam ist, um das Substitutionsergebnis in dem Er gebnisregister (88) zu speichern, wenn die Ablauf unterbrechungsdaten, die in dem Ablaufunterbrechungs register (58) gespeichert sind, anzeigen, daß eine ausgewählte Ablaufunterbrechung das Ergebnis eines früher ausgeführten Befehls ist.
6. Computersystem (20; 120; 170) gemäß einem der Ansprüche
1 bis 4, das ferner folgendes Merkmal aufweist:
eine Mehrzahl von Ablaufunterbrechungsregistern (58), von denen jedes Ablaufunterbrechungsdaten speichert, die anzeigen, ob eine oder mehrere Ablaufunterbrechungen das Ergebnis der Ausführung eines Befehls aus dem Befehls satz durch die Zentralverarbeitungseinheit (22; 122; 172) sind,
wobei die Zentralverarbeitungseinheit (22; 122; 172), die auf den bedingten Substitutionsbefehl (92) an spricht, wirksam ist, um ein Substitutionsergebnis in einem Ergebnisregister (88), das aus den Universal registern (46; 144; 182) ausgewählt ist, zu speichern, wenn die Ablaufunterbrechungsdaten, die in einem ausge wählten der Ablaufunterbrechungsregister (58) gespei chert sind, anzeigen, daß eine ausgewählte Ablaufunter brechung das Ergebnis der Ausführung eines vorherigen Befehls ist.
eine Mehrzahl von Ablaufunterbrechungsregistern (58), von denen jedes Ablaufunterbrechungsdaten speichert, die anzeigen, ob eine oder mehrere Ablaufunterbrechungen das Ergebnis der Ausführung eines Befehls aus dem Befehls satz durch die Zentralverarbeitungseinheit (22; 122; 172) sind,
wobei die Zentralverarbeitungseinheit (22; 122; 172), die auf den bedingten Substitutionsbefehl (92) an spricht, wirksam ist, um ein Substitutionsergebnis in einem Ergebnisregister (88), das aus den Universal registern (46; 144; 182) ausgewählt ist, zu speichern, wenn die Ablaufunterbrechungsdaten, die in einem ausge wählten der Ablaufunterbrechungsregister (58) gespei chert sind, anzeigen, daß eine ausgewählte Ablaufunter brechung das Ergebnis der Ausführung eines vorherigen Befehls ist.
7. Computersystem (20; 120; 170) gemäß einem der Ansprüche
1 bis 6, bei dem der bedingte Substitutionsbefehl (92)
ferner folgendes Merkmal aufweist:
ein Ablaufunterbrechungsregister-Spezifizierelement (108) zum Anzeigen des Ausgewählten der Ablaufunter brechungsregister (58).
ein Ablaufunterbrechungsregister-Spezifizierelement (108) zum Anzeigen des Ausgewählten der Ablaufunter brechungsregister (58).
8. Computersystem gemäß einem der Ansprüche 1 bis 7, bei
dem die Zentralverarbeitungseinheit (22; 122; 172)
wirksam ist, um den bedingten Substitutionsbefehl (92)
in einer Pipeline-Form gleichzeitig mit anderen Befehlen
des Befehlssatzes auszuführen.
9. Computersystem (20; 120; 170) gemäß einem der Ansprüche
1 bis 4, bei dem die Zentralverarbeitungseinheit (22;
122; 172), die auf den bedingten Substitutionsbefehl
(92) anspricht, wirksam ist, um das Substitutionsergeb
nis in dem Ergebnisregister (88) zu speichern, wenn eine
oder mehrere einer Mehrzahl von ausgewählten Ablaufun
terbrechungen das Ergebnis eines vorher ausgeführten Be
fehls sind.
10. Computersystem (20; 120; 170), das folgende Merkmale
aufweist:
einen Speicher (24) zum Speichern von Daten und Be fehlen;
einen Satz von Universalregistern (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 Universalregistern (46; 144; 182) verbunden ist und lo gische Schaltungen zum Ausführen von Operationen mit Operanden, die aus den Universalregistern (46; 144; 182) gelesen werden, aufweist;
wobei die Befehlseinheit (34; 130; 186), die auf einen Befehl (68) anspricht, wirksam ist, um die Funktions einheit (90; 124, 126; 180) zu veranlassen, eine Ope ration mit einem oder mehreren Operanden, die aus einem oder mehreren Operandenregistern (74, 75), die aus den Universalregistern (46; 144; 182) ausgewählt sind, ge lesen werden, auszuführen und das Ergebnis der Operation in einem Ergebnisregister (88), das aus den Universal registern (46; 144; 182) ausgewählt ist, zu speichern; und
wobei die Befehlseinheit (34; 130; 186), die auf einen bedingten Substitutionsbefehl (92) anspricht, wirksam ist, um die Funktionseinheit (90, 124, 126; 180) zu veranlassen, ein Substitutionsergebnis in dem Ergebnis register (88) zu speichern, wenn eine oder mehrere eines ausgewählten Satzes von Ablaufunterbrechungen das Er gebnis der Ausführung der Operation sind.
einen Speicher (24) zum Speichern von Daten und Be fehlen;
einen Satz von Universalregistern (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 Universalregistern (46; 144; 182) verbunden ist und lo gische Schaltungen zum Ausführen von Operationen mit Operanden, die aus den Universalregistern (46; 144; 182) gelesen werden, aufweist;
wobei die Befehlseinheit (34; 130; 186), die auf einen Befehl (68) anspricht, wirksam ist, um die Funktions einheit (90; 124, 126; 180) zu veranlassen, eine Ope ration mit einem oder mehreren Operanden, die aus einem oder mehreren Operandenregistern (74, 75), die aus den Universalregistern (46; 144; 182) ausgewählt sind, ge lesen werden, auszuführen und das Ergebnis der Operation in einem Ergebnisregister (88), das aus den Universal registern (46; 144; 182) ausgewählt ist, zu speichern; und
wobei die Befehlseinheit (34; 130; 186), die auf einen bedingten Substitutionsbefehl (92) anspricht, wirksam ist, um die Funktionseinheit (90, 124, 126; 180) zu veranlassen, ein Substitutionsergebnis in dem Ergebnis register (88) zu speichern, wenn eine oder mehrere eines ausgewählten Satzes von Ablaufunterbrechungen das Er gebnis der Ausführung der Operation sind.
11. Computersystem (20; 120; 170) gemäß Anspruch 10, das
ferner folgendes Merkmal aufweist:
ein Ablaufunterbrechungsregister (58) zum Speichern von Ablaufunterbrechungsdaten, die anzeigen, daß eine Ab laufunterbrechung durch die Ausführung einer Operation in der Funktionseinheit (40), die auf einen Befehl (68) anspricht, erzeugt wurde;
wobei die Befehlseinheit (34), die auf einen Befehl (68) anspricht, wirksam ist, um die Funktionseinheit (40) zu veranlassen, eine Operation mit einem oder mehreren Operanden auszuführen, die aus einem oder mehreren Ope randenregistern (74, 75), die aus den Universalregistern (46) ausgewählt sind, gelesen werden, ein Ergebnis der logischen Operation in einem Ergebnisregister (88), das aus den Universalregistern (46) ausgewählt ist, zu spei chern, und die Ablaufunterbrechungsdaten in dem Ablauf unterbrechungsregister zu speichern, wobei angezeigt wird, ob eine oder mehrere Ablaufunterbrechungen die Folge der Ausführung der Operation sind; und
wobei die Befehlseinheit (34), die auf einen bedingten Substitutionsbefehl (92) anspricht, ferner wirksam ist, um die Funktionseinheit (40) zu veranlassen, ein Sub stitutionsergebnis in dem Ergebnisregister (88) zu spei chern, wenn durch die Ablaufunterbrechungsdaten in dem Ablaufunterbrechungsregister angezeigt wird, daß eine oder mehrere ausgewählte Ablaufunterbrechungen aufgetre ten sind.
ein Ablaufunterbrechungsregister (58) zum Speichern von Ablaufunterbrechungsdaten, die anzeigen, daß eine Ab laufunterbrechung durch die Ausführung einer Operation in der Funktionseinheit (40), die auf einen Befehl (68) anspricht, erzeugt wurde;
wobei die Befehlseinheit (34), die auf einen Befehl (68) anspricht, wirksam ist, um die Funktionseinheit (40) zu veranlassen, eine Operation mit einem oder mehreren Operanden auszuführen, die aus einem oder mehreren Ope randenregistern (74, 75), die aus den Universalregistern (46) ausgewählt sind, gelesen werden, ein Ergebnis der logischen Operation in einem Ergebnisregister (88), das aus den Universalregistern (46) ausgewählt ist, zu spei chern, und die Ablaufunterbrechungsdaten in dem Ablauf unterbrechungsregister zu speichern, wobei angezeigt wird, ob eine oder mehrere Ablaufunterbrechungen die Folge der Ausführung der Operation sind; und
wobei die Befehlseinheit (34), die auf einen bedingten Substitutionsbefehl (92) anspricht, ferner wirksam ist, um die Funktionseinheit (40) zu veranlassen, ein Sub stitutionsergebnis in dem Ergebnisregister (88) zu spei chern, wenn durch die Ablaufunterbrechungsdaten in dem Ablaufunterbrechungsregister angezeigt wird, daß eine oder mehrere ausgewählte Ablaufunterbrechungen aufgetre ten sind.
12. Computersystem (120) gemäß Anspruch 10, das ferner fol
gendes Merkmal aufweist:
eine Mehrzahl von Funktionseinheiten (124, 126), wobei jede Funktionseinheit (124, 126) mit den Universalregi stern (144) verbunden ist und logische Schaltungen zum Ausführen von Operationen mit Operanden, die aus den Universalregistern (144) gelesen werden, aufweisen;
wobei die Instruktionseinheit (130), die auf eine Gruppe von Befehlen, die einen bedingten Substitutionsbefehl (92) einschließen, anspricht, wirksam ist, um eine erste der Funktionseinheiten (124) zu veranlassen, eine Opera tion mit einem oder mehreren Operanden auszuführen, die aus einem oder mehreren Operandenregistern, die aus den Universalregistern (144) ausgewählt sind, gelesen wer den, und ein Ergebnis der Operation in einem Ergebnis register, das aus den Universalregistern (144) ausge wä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 zu speichern, wenn eine oder mehrere ausgewählte Ablaufunterbrechungen 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 Universalregi stern (144) verbunden ist und logische Schaltungen zum Ausführen von Operationen mit Operanden, die aus den Universalregistern (144) gelesen werden, aufweisen;
wobei die Instruktionseinheit (130), die auf eine Gruppe von Befehlen, die einen bedingten Substitutionsbefehl (92) einschließen, anspricht, wirksam ist, um eine erste der Funktionseinheiten (124) zu veranlassen, eine Opera tion mit einem oder mehreren Operanden auszuführen, die aus einem oder mehreren Operandenregistern, die aus den Universalregistern (144) ausgewählt sind, gelesen wer den, und ein Ergebnis der Operation in einem Ergebnis register, das aus den Universalregistern (144) ausge wä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 zu speichern, wenn eine oder mehrere ausgewählte Ablaufunterbrechungen das Ergebnis der Ausführung der Operation in der ersten Funktionseinheit (126) sind.
13. Computersystem (170) gemäß Anspruch 10, das ferner fol
gende Merkmale aufweist:
eine Speichertabelle (176) mit einem oder mehreren Ein trägen zum Speichern von Substitutionsergebnissen, wobei das Substitutionsergebnis für den ausgewählten Satz von Ablaufunterbrechungen 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 Universalregister (182) geschaltet ist, wobei der Multiplexer (174) wirksam ist, um das Substitutionsergebnis für das Ergebnis, das in dem Er gebnisregister gespeichert ist, wenn die Ausführung der Operation eine oder mehrere ausgewählte Ablauf unterbrechungen erzeugt hat, zu substituieren.
eine Speichertabelle (176) mit einem oder mehreren Ein trägen zum Speichern von Substitutionsergebnissen, wobei das Substitutionsergebnis für den ausgewählten Satz von Ablaufunterbrechungen 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 Universalregister (182) geschaltet ist, wobei der Multiplexer (174) wirksam ist, um das Substitutionsergebnis für das Ergebnis, das in dem Er gebnisregister gespeichert ist, wenn die Ausführung der Operation eine oder mehrere ausgewählte Ablauf unterbrechungen erzeugt hat, zu substituieren.
14. Verfahren zum Erholen von Ablaufunterbrechungs-
Bedingungen in einem Computer (20; 120; 170), das fol
gende Schritte aufweist:
Erhalten eines möglichen Ablaufunterbrechungsbefehls (68) und eines bedingten Substitutionsbefehls (92) von einem Programm, das in dem Computer (20; 120; 170) verarbeitet werden soll;
Ausführen des möglichen Ablaufunterbrechungsbefehls (68) und des bedingten Substitutionsbefehls (92), wobei der mögliche Ablaufunterbrechungsbefehl ein Ergebnis er zeugt, und der bedingte Substitutionsbefehl ein Sub stitutionsergebnis erzeugt; und
Ersetzen des Ergebnisses durch das Substitutionser gebnis, wenn eine Ablaufunterbrechung durch die Ausfüh rung des möglichen Ablaufunterbrechungsbefehls auftritt.
Erhalten eines möglichen Ablaufunterbrechungsbefehls (68) und eines bedingten Substitutionsbefehls (92) von einem Programm, das in dem Computer (20; 120; 170) verarbeitet werden soll;
Ausführen des möglichen Ablaufunterbrechungsbefehls (68) und des bedingten Substitutionsbefehls (92), wobei der mögliche Ablaufunterbrechungsbefehl ein Ergebnis er zeugt, und der bedingte Substitutionsbefehl ein Sub stitutionsergebnis erzeugt; und
Ersetzen des Ergebnisses durch das Substitutionser gebnis, wenn eine Ablaufunterbrechung durch die Ausfüh rung des möglichen Ablaufunterbrechungsbefehls auftritt.
15. Verfahren gemäß Anspruch 14, bei dem die Schritte des
Ausführens des möglichen Ablaufunterbrechungsbefehls
(68) und des bedingten Substitutionsbefehls (92) gleich
zeitig stattfindet.
16. Verfahren gemäß Anspruch 14, bei dem
der Schritt des Ausführens des möglichen Ablaufunter
brechungsbefehls (68) ferner das Speichern von Ablauf
unterbrechungsdaten in einem Register (58) umfaßt, wobei
angezeigt wird, ob eine oder mehrere Ablaufunterbrechun
gen das Ergebnis der Ausführung des möglichen Ablaufun
terbrechungsbefehls sind; und
der Schritt des Ausführens des bedingten Substitutions befehls (92) die Bestimmung umfaßt, ob zumindest eine der einen oder mehreren spezifizierten Ablaufunterbre chungen ein Ergebnis der Ausführung des möglichen Ab laufunterbrechungsbefehls (68) gemäß den Ablaufunter brechungsdaten, die in dem Ablaufunterbrechungsregister (58) gespeichert sind, ist.
der Schritt des Ausführens des bedingten Substitutions befehls (92) die Bestimmung umfaßt, ob zumindest eine der einen oder mehreren spezifizierten Ablaufunterbre chungen ein Ergebnis der Ausführung des möglichen Ab laufunterbrechungsbefehls (68) gemäß den Ablaufunter brechungsdaten, die in dem Ablaufunterbrechungsregister (58) gespeichert sind, ist.
17. Verfahren gemäß Anspruch 16, bei dem der Schritt des
Entscheidens, ob zumindest eine der einen oder mehreren
spezifizierten Ablaufunterbrechungen, die aufgetreten
sind, nach den Schritten des Durchführens der Operation
auftritt.
18. Verfahren gemäß Anspruch 14, das ferner folgenden
Schritt aufweist:
Ausführen einer Mehrzahl von bedingten Substitutions befehlen (92), wobei jeder der bedingten Substitutions befehle (92) ein Substitutionsergebnis erzeugt und eine oder mehrere Ablaufunterbrechungen spezifiziert, wobei der Schritt des Ausführens der bedingten Substitutions befehle (92) für jeden bedingten Substitutionsbefehl (92) folgende Schritte aufweist:
Bestimmen, ob zumindest eine der einen oder mehreren Ablaufunterbrechungen, die durch den bedingten Substi tutionsbefehl spezifiziert sind, als ein Ergebnis der Ausfü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 Ablaufunterbrechungen aufgetreten ist.
Ausführen einer Mehrzahl von bedingten Substitutions befehlen (92), wobei jeder der bedingten Substitutions befehle (92) ein Substitutionsergebnis erzeugt und eine oder mehrere Ablaufunterbrechungen spezifiziert, wobei der Schritt des Ausführens der bedingten Substitutions befehle (92) für jeden bedingten Substitutionsbefehl (92) folgende Schritte aufweist:
Bestimmen, ob zumindest eine der einen oder mehreren Ablaufunterbrechungen, die durch den bedingten Substi tutionsbefehl spezifiziert sind, als ein Ergebnis der Ausfü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 Ablaufunterbrechungen aufgetreten ist.
19. Verfahren gemäß Anspruch 14, 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 potentiellen Ablaufunterbrechungsbefehls (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 potentiellen Ablaufunterbrechungsbefehls (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 true DE4434895A1 (de) | 1995-06-29 |
DE4434895C2 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 |
---|---|---|---|---|
EP1239427A3 (de) * | 2001-02-21 | 2009-04-15 | Nxp B.V. | Schaltungsanordnung sowie Verfahren zum Erkennen einer Zugriffsverletzung bei einer Mikrokontrolleranordnung |
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 |
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 |
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 |
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 |
DE10101949C1 (de) * | 2001-01-17 | 2002-08-08 | Infineon Technologies Ag | Datenverarbeitungsverfahren |
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 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 最適化装置、コンパイラプログラム、最適化方法、及び記録媒体 |
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 |
US7469407B2 (en) | 2003-04-24 | 2008-12-23 | International Business Machines Corporation | Method for resource balancing using dispatch flush in a simultaneous multithread processor |
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 |
---|---|---|---|---|
EP1239427A3 (de) * | 2001-02-21 | 2009-04-15 | Nxp B.V. | Schaltungsanordnung sowie Verfahren zum Erkennen einer Zugriffsverletzung bei einer Mikrokontrolleranordnung |
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 |
DE4434895C2 (de) | 1998-12-24 |
GB9425332D0 (en) | 1995-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE4434895C2 (de) | Verfahren und Vorrichtung zur Behandlung von Ausnahmebedingungen | |
DE3116100C2 (de) | Datenverarbeitungseinheit | |
DE4313594C2 (de) | Mikroprozessor | |
DE69738188T2 (de) | Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor | |
DE2714805A1 (de) | Datenverarbeitungssystem | |
DE4211245A1 (de) | Prozessorsystem in parallelverarbeitungsbauart mit trap- und stall-steuerfunktionen | |
CH660243A5 (de) | Vorrichtung zur ablaufverfolgung eines programms. | |
DE19534752A1 (de) | Verfahren und System zum Liefern einer Unterstützung für eine spekulative Ausführung | |
DE2715073A1 (de) | Mikroprogrammierte rechner-steuervorrichtung | |
DE2658864A1 (de) | Pruefsystem fuer eine mikroprogrammierte verarbeitungseinheit | |
DE2533737C2 (de) | Mikroprozessor mit aufteilbarer Adressenschiene | |
DE19824289C2 (de) | Pipelineverarbeitungsmaschine | |
DE102010045800A1 (de) | Elektronische Vorrichtung und Verfahren zur Datenverarbeitung unter Verwendung einer Betriebsart mit virtuellem Register | |
DE4434529A1 (de) | Verfahren zum Verarbeiten eines Befehls mit Einsatzbedingung und Vorrichtung dazu | |
DE4134392C2 (de) | Verfahren und Vorrichtung zum Ungültigmachen von Befehlen in Geräten mit Parallelverarbeitung | |
DE19652290C2 (de) | Mikrocomputer | |
DE112006000514T5 (de) | CPU-Architektur mit einzelnem Zyklus und geringer Leistungsaufnahme | |
DE4430195A1 (de) | Computersystem und Verfahren zur Auswertung von Vorhersagen und Booleschen Ausdrücken | |
DE2702722A1 (de) | Instruktionsinterpretation in elektronischen datenverarbeitungsanlagen | |
DE102014115411A1 (de) | Datenverarbeitungsanordnung und -verfahren zur sicherstellung der integrität der ausführung eines computerprogramms | |
DE10303053B4 (de) | Prozessorarchitektur mit einem Array von Pipelines und einer Registerdatei zum Vermeiden von Datenrisiken und Verfahren zur Datenweiterleitung in einer derartigen Prozessorarchitektur | |
DE10317650A1 (de) | Programmgesteuerte Einheit und Verfahren | |
DE4009804A1 (de) | Programmierbarer prozessrechner mit einem funktionsblockprozessor und einem bit-prozessor | |
DE19635284C2 (de) | Ein-Chip-Prozessor mit extern ausgeführter Testfunktion | |
DE102005060714B4 (de) | Datenverarbeitungsvorrichtung, Speicherkarte, Verfahren zum Betreiben einer Datenverarbeitungsvorrichtung und Herstellungsverfahren für eine Datenverarbeitungsvorrichtung |
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 |