DE4434895A1 - Verfahren und Vorrichtung zur Erholung von Ablaufunterbrechungen in einem Computersystem - Google Patents

Verfahren und Vorrichtung zur Erholung von Ablaufunterbrechungen in einem Computersystem

Info

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
Application number
DE4434895A
Other languages
English (en)
Other versions
DE4434895C2 (de
Inventor
William S Jun Worley
Jerome C Huck
Rajiv Gupta
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HP Inc
Original Assignee
Hewlett Packard Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE4434895A1 publication Critical patent/DE4434895A1/de
Application granted granted Critical
Publication of DE4434895C2 publication Critical patent/DE4434895C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0706Error 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/0721Error 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent 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.
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.
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.
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.
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.
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.
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).
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.
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.
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.
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.
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.
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.
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.
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.
DE4434895A 1993-12-23 1994-09-29 Verfahren und Vorrichtung zur Behandlung von Ausnahmebedingungen Expired - Fee Related DE4434895C2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

Patent Citations (2)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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