DE3852209T2 - Aufheben eines Software-Befehls in mikroprogrammierten Systemen. - Google Patents

Aufheben eines Software-Befehls in mikroprogrammierten Systemen.

Info

Publication number
DE3852209T2
DE3852209T2 DE3852209T DE3852209T DE3852209T2 DE 3852209 T2 DE3852209 T2 DE 3852209T2 DE 3852209 T DE3852209 T DE 3852209T DE 3852209 T DE3852209 T DE 3852209T DE 3852209 T2 DE3852209 T2 DE 3852209T2
Authority
DE
Germany
Prior art keywords
register
order portion
memory address
responsive
sequence
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE3852209T
Other languages
English (en)
Other versions
DE3852209D1 (de
Inventor
Thomas F Joyce
Richard P Kelly
Jian-Kuo Shen
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE3852209D1 publication Critical patent/DE3852209D1/de
Application granted granted Critical
Publication of DE3852209T2 publication Critical patent/DE3852209T2/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
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • 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 or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Description

  • Diese Erfindung bezieht sich auf das Gebiet der Datenverarbeitung und insbesondere auf eine Einrichtung zum Rückgängigmachen einer teilweise ausgeführten Software-Anweisung, um die Zentralverarbeitungseinheit auf jenen Zustand zurückzuführen, in dem sie vor dem Beginn der Anweisungsausführung war.
  • In einem datenverarbeitenden System, welches ein virtuelles Speicheradressierschema verwendet, können während der Ausführung einer Software-Anweisung Bedingungen auftreten, bei der ein Operand, der von der Software-Anweisung adressiert wird, nicht im physischen Speicher vorhanden ist und daher durch eine Software-Routine in den physischen Speicher gelesen werden muß. Um in der Lage zu sein, die Software- Routine auszuführen, muß die Ausführung der laufenden Software-Anweisung auf eine Weise angehalten bzw. unterbrochen werden, welche es ermöglicht, daß sie neu gestartet werden kann, sobald der fehlende Operand in den physischen Speicher gebracht ist.
  • Um den Systemdurchsatz zu verbessern, wird die virtuelle Speicheradresse unmittelbar nach der Übertragung an den virtuellen Speicher inkrementiert oder dekrementiert, so daß sie während des nächsten Speicherzyklus verfügbar ist. Wenn der Operand nicht gefunden wird, dann muß die vorherige virtuelle Speicheradresse erneut zusammengesetzt werden und verwendet werden, wenn der fehlende Operand gefunden wird und im physischen Speicher gespeichert wird. Dies würde ein weiteres Register erfordern, und zwar eines, welches die ursprüngliche virtuelle Adresse speichert, und ein weiteres, welches die inkrementierte oder dekrementierte virtuelle Adresse speichert. Dies würde einen verbesserten Durchsatz auf Kosten eines großen Registers von typischerweise 24 oder 32 Bit sicherstellen.
  • Natürlich kann man warten, bis der Operand aus dem physischen Speicher ausgelesen ist, bevor die virtuelle Adresse inkrementiert oder dekrementiert wird. Dies er Ansatz hätte auch eine nachteilige Auswirkung auf die Systemleistungsfähigkeit.
  • Ein anderer Ansatz ist es, die UNDO-Operation ausschließlich durch Firmware durchzuführen. Dies hat auch einen negativen Einfluß auf die Leistungsfähigkeit.
  • In einem Artikel mit dem Titel "Virtual memory and the MC68010" von D. MacGregor und D.S. Mothersole in IEEE Micro, Band 3, Nummer 3, Juni 1983, New York/USA, Seiten 24 - 39, wird das Anweisungsneustart-Verfahren beschrieben, welches das gebräuchlichste Verfahren der Unterstützung eines virtuellen Speichers ist. Bei diesem Verfahren wird die Anweisung, bei der der Fehler aufgetreten ist, von Anfang neu gestartet, nachdem der Ausnahmebehandler alle Aktivitäten in Zusammenhang mit der Korrektur des Fehlers abgeschlossen hat. Dies wird ungeachtet der Stufe der Anweisung durchgeführt, die der Prozessor erreicht hat, wenn der Fehler erkannt wurde. Während erkannt wird, daß der ursprüngliche Wert wiederhergestellt werden muß, wird keine Beschreibung oder keine Betriebsdetails gegeben, wie dieser ursprüngliche Wert der Adresse wiedergewonnen wird. Somit zeigt dieser Artikel den Bedarf für die vorliegende Erfindung auf.
  • Demgemäß ist es ein Ziel der Erfindung, eine verbesserte Vorrichtung zum Rückgängigmachen einer Software-Anweisung bereitzustellen und dennoch den verbesserten Systemdurchsatz aufrechtzuerhalten.
  • Dieses und andere Ziele werden durch eine Vorrichtung und ein Verfahren gemäß Anspruch 1 bzw. Anspruch 10 erreicht und werden erkennbarer, wenn diese in Zusammenhang mit der folgenden Beschreibung und den angehängten Zeichnungen genommen werden, welche ein bevorzugtes Ausführungsbeispiel dieser Erfindung zeigen.
  • In einem datenverarbeitenden System, welches ein virtuelles Speicheradressierschema verwendet, veranlassen bestimmte Software-Anweisungen, daß die virtuelle Adresse in einem Basisregister gespeichert wird. Die in dem Basisregister gespeicherte virtuelle Adresse wird während des Auslesezyklus des vorherigen Operanden inkrementiert oder dekrementiert, um den nächsten Operanden zu adressieren. Wenn der Operand nicht im physischen Speicher ist, dann wird der Inhalt des Basisregisters auf seinen ursprünglichen Wert zurückgeführt.
  • Dies wird erreicht, indem in einem PUSH-POP-Stapel die niederwertigen drei Bits der virtuellen 32 Bit-Adresse vom Basisregister gespeichert wird, eine Adresse des Basisregisters, welche typischerweise in einer Registerdatei gespeichert wird, sowie ein Bit, welches anzeigt, ob der Inhalt des Basisregisters inkrementiert wurde oder dekrementiert wurde. Da die Software-Anweisungen bis zu drei Deskriptoren enthalten können, kann der Stapel auf der Basis eines FIFO diese in drei Stellen unterbringen.
  • Wenn die virtuelle Adresse den Operanden nicht findet, dann muß der Inhalt des Basisregisters bei der Ausführung der Software-Anweisungen inkrementiert werden, was erfordert, daß virtuelle Adressen dekrementiert werden, oder sie müssen dekrementiert werden, wenn die Ausführung der Software-Adresse erforderte, daß die virtuelle Adresse inkrementiert wird.
  • In den meisten Fällen ist all dies erforderlich, um die drei virtuellen Adreßbits an das Basisregister zu transferieren. Wenn es jedoch einen Übertrag in die vierte niederwertige Bitposition gab oder eine Entnahme davon, dann muß, wenn die virtuelle Adresse inkrementiert wurde, eine binäre EINS von der virtuellen Adresse subtrahiert werden, deren viertes niederwertiges Bit nun das niederwertige Bit der verbleibenden virtuellen Adresse ist. Unter der Annahme von virtuellen Adreßbits 0 - 31 werden die niederwertigen Bits 29, 30 und 31 in den PUSH-POP-Stapel gespeichert und müssen in das Basisregister zurückgespeichert werden. Die binäre EINS wird von dem Teil der virtuellen Adresse subtrahiert, der durch die Bits 0 - 28 spezifiziert ist.
  • Wenn in ähnlicher Weise die virtuelle Adresse dekrementiert wurde und es eine Entnahme aus der Bitposition 28 der virtuellen Adresse gab, dann wird eine binäre EINS zu dem Teil der virtuellen Adresse addiert, welcher durch die Bits 0 - 28 spezifiziert ist.
  • Die Bestimmung, ob ein Übertrag oder eine Entnahme von Bit 28 vorliegt oder nicht, legt die Subtraktion der ursprünglichen drei niederwertigen Bits der virtuellen Adresse vom inkrementierten oder dekrementierten Wert der niederwertigen drei Bits fest. Wenn ein Übertrag resultiert, dann erfordern die Bits 0 - 28 des Inhalts des Basisregisters eine Einstellung für die Inkrementierungsoperation. Wenn kein Übertrag resultiert, dann erfordern die Bits 0 - 28 des Inhalts des Basisregisters eine Einstellung für die Dekrementierungsoperation.
  • Fig. 1 zeigt ein Blockdiagramm der Legik, welche die UNDO-Operation erzielt.
  • Fig. 2 zeigt das Format einer typischen Software-Anweisung mit virtueller Adresse.
  • Fig. 3 zeigt den Inhalt einer Stelle in dem PUSH-POP-Stapel.
  • Fig. 4 ist ein Firmware-Blockdiagramm der Schritte des Implementierens der UNDO-Operation.
  • Fig. 5 zeigt den Inhalt der verschiedenen Register der Registerdatei.
  • Fig. 1 zeigt ein Blockdiagramm eines Teils eines Datenverarbeitungssystems, welcher den UNDO-Abschnitt ausgewählter Anweisungen, GrundbetriebssystemAnweisungen, kaufmännischer Anweisungen und wissenschaftlicher Anweisungen ausführt.
  • Eine Verwaltungseinheit 34 für virtuellen Speicher (VMMU), ein Cache- Speicher 36 und der Hauptspeicher 50 sind alle mit einem 32 Bit-BP-Bus 32 gekoppelt.
  • Die VMMU 34 übersetzt eine in der in Ausführung befindlichen Anweisung beschriebene virtuelle Adresse in eine physische Adresse des Hauptspeichers 50. Die virtuelle Adresse beinhaltet eine Ringnummer, eine Segmentnummer und einen Versatz. Dies lokalisiert einen Prozeß, der in der VMMU 34 gespeichert ist, und befähigt die VMMU 34, die physische Adresse auf den BP-Bus 32 an den Hauptspeicher 50 und direkt von der VMMU 34 an den Cache 36 auszusenden. Wenn die durch die physische Adresse angegebene Stelle nicht den Operanden gespeichert hat, dann wird ein VMMU-Unterbrechungssignal, welches einen Seiten- oder Segmentfehler anzeigt, an eine Formatzweigeinheit 20 angelegt. Die Operationen an der VMMU 34 und am Cache 36 sind zum Zwecke des Verstehens der Erfindung herkömmlich.
  • Eine Registerdatei 2 beinhaltet vierundsechzig 32-Bit-Register. Einer Anzahl von für das Programm sichtbaren Registern der Registerdatei 2 kann durch verschiedene Anweisungen geladen und ausgelesen werden.
  • Es gibt sieben für Software sichtbare Allgemeinwort-Operandenregister; R1 bis R7, die 16 Bit lang sind und als Allgemeinregister arbeiten können, Akkumulatoren oder Index-Register. Sieben für Software sichtbare 32-Bit-Doppelwort-Operandenregister K1 bis K7 werden als Allgemeinregister; Akkumulatoren oder Index-Register verwendet. Sieben für Software sichtbare Basisregister B1 bis B7 speichern Informationen zum Formulieren der Adressen, die zu irgendeiner Anweisung, zu Daten oder zu einer beliebigen Stelle in dem virtuellen Speicher eines Prozessors zeigen. Es ist auch eine Anzahl anderer Register enthalten.
  • Die Registerdatei 2 empfängt Operanden von einem 32-Bit-BI-Bus 30 an einem A-Eingangsanschluß und von einem Schieber 8 an einem B-Eingangsanschluß. Die Operanden, die aus den Stellen in der Registerdatei 2 gelesen werden, werden an einen 32-Bit-A-Bus 40 von einem A-Ausgangsanschluß und an einen 32-Bit-B-Bus 28 von einem B-Ausgangsanschluß transferiert. Jede Stelle in der Registerdatei 2 kann durch A- Adreßsignale oder B-Adreßsignale adressiert werden. Der A-Ausgangsanschluß ist während einer Leseoperation aktiv wenn eine Stelle in der Registerdatei 2 durch A-Adreßsignale adressiert wird. In ähnlicher Weise sind B-Ausgangsanschlüsse aktiv wenn die Stelle durch die B-Adreßsignale adressiert wird.
  • Eine binäre arithmetische Legikeinheit (BALU) 4 empfängt 32-Bit-Operanden vom A-Bus 40 und B-Bus 28 an einem A-Operanden-Eingangsanschluß bzw. an einem B-Operanden-Eingangsanschluß. Die BALU 4 legt einen 32-Bit-A-Operanden an den BI-Bus 30 und einen 32-Bit-B- Operanden an den Schieber 8. Die BALU 4 führt binäre arithmetische und logische Operationen an den A- und B- Operanden aus, wie sie durch verschiedene RDR-Signale angegeben sind.
  • Eine Vorhol-Einheit 18 empfängt die nächste Anweisung von der UMMU 34 oder dem Cache 36 über den BP-Bus 32 und die Daten in der Einheit 16. Die Anweisung wird zusammengestellt und dann an die Formatzweigeinheit 20 transferiert. Dort wird der OP-Code decodiert, und eine Anzahl von OP-Codesignalen FR wird erzeugt.
  • Ein Steuerspeicher (ROS) 38 empfängt Adreßsignale von der Formatzweigeinheit 20, um den Inhalt der Stellen des ROS 38 auszulesen, um dem System die Ausführung der Anweisungen zu ermöglichen. Der Inhalt jeder Stelle ist seinerseits in einem 104-Bit-ROS-Datenregister 39 gespeichert. Kombinationen der 104 Ausgangssignale, die als RDR- Signale identifiziert sind, werden an die Einheiten von Fig. 1 angelegt, um die UNDO-Operation auszuführen.
  • Für diese Erfindung wird die Basisadresse in den Registern B1 bis B7 oder der in den Registern R1 bis R7 gespeicherte Indexwert an den A- Operandeneingangsanschluß der BALU 4 von der Registerdatei 2, von dem A-Ausgangsanschluß und A-Bus 40 angelegt. Die BALU 4 inkrementiefl oder dekrementiert die Basisadresse oder den Indexwert und speichert die inkrementierte oder dekrementierte Adresse oder den Indexwert zurück in das gleiche Register in der Registerdatei 2, von dem es über den A-Operanden oder -Anschluß der BALU 4, den BI-Bus 30 und den Eingangsanschluß ausgelesen wurde.
  • Das Q-Register 6 und der Schieber 8 bedienen die BALU 4, um verschiedene arithmetische und logische Operationen einschließlich binäre Multiplikation und Division unter der Steuerung eines RDR-Signals auszuführen.
  • Ein PUSH-POP-UNDO-Stapel 10 hat 3 Stellen mit jeweils 8 Bit und FIFO-Legikzeiger, welche veranlassen, daß die 3 Stellen in der gleiche Reihenfolge ausgelesen werden, in der sie in den Stapel 10 geschrieben wurden. Wie in Fig. 3 gezeigt, enthalten die 8 Bit in jeder Stelle die 3 niederwertigen Bit des Inhalts des Registers, welches aus der Registerdatei 2 gelesen wurde, 1 Bit, welches anzeigt, ob die BALU 4 den Inhalt dieses Registers inkrementiert oder dekrementiert hat, und 4 Bit, welche das Register identifizieren.
  • Wenn die in Ausführung befindliche Anweisung eine Zweiwort- oder eine Dreiwort-Anweisung ist, dann speichern zwei Stellen bzw. drei Stellen des Stapels 10 die geeignete Information. Dies ist besonders wichtig, wenn kaufmännische Anweisungen ausgeführt werden, bei denen ein erster Deskriptor einen ersten Operanden lokalisiert, ein zweiter Deskriptor einen zweiten Operanden lokalisiert, und ein dritter Deskriptor die Stelle angibt, in der das Ergebnis der Operation gespeichert wird, welche am ersten und zweiten Deskriptor ausgeführt wird.
  • Das SPLTR-Signal, welches eine Decodierung einer Anzahl von Steuerbit- Signalen ist, setzt den Stapel 10 zurück.
  • Das Q-Register 6 speichert eine Konstante, Hexadezimal 7, welche um eine Bitposition nach rechts geschoben wird, wenn jedes Wort verarbeitet wird, das vom Stapel 10 gelesen wird. Wenn während der Ausführung einer Anweisung die Formatzweigeinheit 20 das Unterbrechungssignal von der VMMU 34 empfängt, was anzeigt, daß der angeforderte Operand sich nicht in dem Segment oder der Seite befindet, dann wird die Anweisungsausführung abgebrochen und die UNDO-Operation wird eingeleitet.
  • Es sei nun die Laderegister-Anweisung (LDR) von Fig. 2 angenommen. Die Anweisung speichert den Inhalt der effektiven Adresse des Hauptspeichers 50, welche durch die Adreßsilbenbit 9 bis 15 angegeben ist, im R-Register, das durch Bit 1 bis 3 spezifiziert ist. Bit 0 bei binär EINS spezifiziert, daß die Anweisung eine Adreßsilbe (AS) enthält. Bit 1 bis 3, die nicht bei einer binären NULL sind, spezifizieren eine Doppeloperanden-Anweisung. Bit 4 bis 7 spezifiziert die höherwertige OP- Codezahl als Hexadezimal 8. Bit 8 spezifiziert den niederwertigen Teil der OP-Codezahl als binär 0.
  • Bit 9 bis 11 der Adreßsilbe bei Oktal 7 zeigt an, daß Bit 13 bis 15 das einzelne Basisregister B1 bis B7 spezifizieren, welches die Hauptspeicheradresse der Operandenstelle speichert.
  • Die Adreßsignale RFA0 bis RFA5 werden an die Registerdatei 2 angelegt, um den Inhalt jener Stelle auszulesen. Die Signale RFA0, RFA1 und RFA2 sind ausgewählte RDR-Signale, und die Signale RFA3 bis RFA5 sind das Äquivalent der LDR-Anweisungsbit 13 bis 15 (FR-Signale). Der Inhalt des adressierten B-Registers erscheint auf dem A-Bus 40 und wird an den A-Operandenanschluß der BALU 4 angelegt. In der BALU 4 wird die Adresse um 1 inkrementiert und in die Registerdatei 2 an der gleichen Stelle zurückgespeichert, welche durch die Signale RFA0 bis RFA5 spezifiziert ist. Wenn zu diesem Zeitpunkt das PUSH- Signal aktiviert wird, dann werden die niederwertigen drei Bit 29, 30 und 31 des Inhalts des adressierten B-Registers, die niederwertigen vier Bit der A-Adreßsignale RFA2 bis RFA5 und ein Bit, welches anzeigt, daß der Inhalt des B-Registers inkrementiert wurde, im Stapel 10 gespeichert.
  • Während dieses Zyklus wird auch der Inhalt des adressierten B-Registers an die VMMU 32 angelegt, um die Adresse des Hauptspeichers 50 zu erzeugen. Wenn diese adressierte Stelle nicht in einem Segment einer Seite des Speichers 50 oder des Cache 36 ist, dann wird die Ausführung der Laderegisteranweisung durch ein VMMU-Unterbrechungssignal unterbrochen, welches an die Formatzweigeinheit 20 angelegt wird, und der Inhalt des adressierten Registers wird zu seinem ursprünglichen Wert dekrementiert.
  • Der Stapel 10 speichert die niederwertigen drei Bits, Bit 29 - 31 (RA), wie sie von den adressierten B-Registern 1 - 7 gelesen werden. Der Inhalt des adressierten B-Registers wurde um eine binäre EINS inkrementiert. Man nehme nun an, daß die Ausführung der LDR-Anweisung unterbrochen wurde, dann erfordert dies eine POP-Operation. Der Inhalt des adressierten B-Registers muß auf seinen ursprünglichen Wert dekrementiert werden. In den meisten Fällen wird dies durch Transferieren der Bit 5 - 7 (RA) vom Stapel 10 und durch deren Speicherung in den Bitpositionen 29 - 31 des adressierten B-Registers erreicht. Wenn es jedoch einen Übertrag in die Bitposition 28 des adressierten B-Registers während der Inkrementierungsoperation gab, dann muß der Teil der Adresse, der durch die Bit 0 - 28 repräsentiert wird, dekrementiert werden.
  • Die LDR-Anweisungen führt dazu, daß das adressierte B-Register inkrementiert wird. Die Operation irgendeiner Anweisung erfordert, daß der Inhalt des adressierten B-Registers dekrementiert werden muß. Daher würde die UNDO-Operation den Inhalt des adressierten B-Registers inkrementieren, um es auf seinen vorherigen Wert zurückzusetzen.
  • Das Inkrementieren oder Dekrementieren des adressierten B-Registers in der Registerdatei 2 wird durch die Firmware erreicht, die in Verbindung mit dem Flußdiagramm von Fig. 4 beschrieben ist. Fig. 5 zeigt den Inhalt der verschiedenen Arbeitsregister.
  • Block A08 speichert eine Konstante, Hexadezimal 7, in dem Q-Register 6, was die Bit Q29, Q30 und Q31 auf eine binäre EINS zwingt. Die Konstante Hexadezimal 7 wird in das Q-Register 6 über den B-Bus 28, die BALU 4 und den Schieber 8 geladen.
  • Drei Stellen des Stapels 10 werden immer ausgelesen. Nach jedem Auslesen wird der Inhalt des Q-Registers 6 um eine Position nach rechts geschoben und das niederwertige Bit Q31 wird auf binär NULL getestet, um anzuzeigen, daß drei Stellen des Stapels 10 gelesen wurden.
  • Block A09 speichert den Inhalt der ersten Stelle des Stapels 10 in einem Arbeitsregister AW5 in der Registerdatei 2 in den Bitpositionen 0 - 7 an einer Stelle, die durch die Adreßsignale RFA 0 - 5 spezifiziert ist. Dies ist in Fig. 5 gezeigt. Es wird auch der Inhalt des Q-Registers 6 nach rechts geschoben, und zwar um eine Bitposition durch den Schieber 8.
  • Der Block A02 liest den Inhalt des Arbeitsregisters AW5 auf den B-Bus durch einen Multiplexer (MUX) 5, die BALU 4, den Schieber 8 und speichert ihn zurück in das Arbeitsregister AW5. AW5 hat die Bit 0 bis 7 in die Bitpositionen 24 bis 31 des Arbeitsregisters AW5 geschoben, wie gezeigt in Fig. 5. In diesem Block wurde das Arbeitsregister AW5 durch die Adreßsignale RFB 0 - 5 adressiert, um den B-Anschluß der Registerdatei 2 freizugeben. Die Adreßsignale RFB 0 - 5 wurden durch ausgewählte FR- und RDR-Signale erzeugt.
  • Block A03 lädt ein Arbeitsregister AW4 mit dem RA-Feld. Dies wird durch eine logische AND-Operation des Inhalts des Arbeitsregisters AW5, welcher an den A-Operandenanschluß der BALU 4 angelegt wird, und einer Konstanten Hexadezimal 7, welche an den B-Operandenanschluß der BALU 4 angelegt wird, erreicht. Das Ergebnis wird im Arbeitsregister AW4 in der Registerdatei 2 gespeichert.
  • Block A04 speichert das RFA-Feld der Stelle des Stapels 10 in dem CT2-Zähler 12 durch Auslesen des Inhalts des Arbeitsregisters AW5 aus dem B-Anschluß der Registerdatei 2 in den B-Operandenanschluß der BALU 4 durch Schieben des Ergebnisses um 4 Bitpositionen nach rechts im Schieber 8 und durch Speichern des geschobenen Ergebnisses RFA im Zähler 12.
  • Block A78 führt eine logische AND-Operation am Inhalt des adressierten B-Registers und an Hexadezimal 7 aus und speichert das Ergebnis im Arbeitsregister AW3 in der Registerdatei 2. Das B-Register wird durch den Inhalt des CT2-Zählers 12 adressiert, welcher die RFA-Adresse speichert. Das Arbeitsregister AW3 speichert BnX-Bit 29, 30 und 31, die niederwertigen Bit des inkrementierten Inhalts des adressierten B-Registers. Die RFA-Adresse im Zähler 12 liest den Inhalt des B-Registers in den A-Operandenanschluß der BALU 4. Hexadezimal 7 wird an den B- Operandenanschluß vom B-Bus 28 angelegt, und das 3-Bit logische AND- Ergebnis wird im Arbeitsregister AW3 gespeichert.
  • Block A79 führt eine logische AND-Operation am Inhalt des B-Registers, welches durch den Inhalt des Zählers 12 (RFA) adressiert wird, und Hexadezimal FFFFFFF8 aus. Das Ergebnis, Bit 0 bis 28, wird in das B- Register zurückgespeichert. Bit 29, 30 und 31 sind auf logisch NULL.
  • Block A7A speichert Hexadezimal 8 im Arbeitsregister AW2 und speichert das I- und das RA-Feld, Bit 28 bis 31, vom Arbeitsregister AW5 in den Zähler 12.
  • Block A7B subtrahiert den Inhalt des Arbeitsregisters AW3 (BnX) vom Inhalt des Arbeitsregisters AW4 (RA). Die Adreßsignale RFA 0 - 5 adressieren die Stelle AW3 und der Inhalt wird an den A-Operandenanschluß der BALU 4 angelegt. Auf dem gleichen Zyklus adressieren die Adreßsignale RFB 0 - 5 die Stelle AW4, und der Inhalt wird an den B- Operandenanschluß der BALU 4 angelegt. Wenn BnX größer als RA ist und dies eine Inkrementierungsoperation ist, wie es durch Bit 4 im Zähler 12 bei einer logischen EINS angezeigt wird, dann würde sich kein Übertrag ergeben.
  • Im Block A0D wird der Inhalt des Arbeitsregisters AW5, der um vier Bit nach rechts geschoben ist, im Zähler 12 gespeichert, und das Ubertragsignal der BALU 4 wird an die Formatzweigeinheit 20 angelegt. Da BnX größer als RA ist, wird dann in Block A5E der Inhalt des B- Registers mit dem Inhalt des Arbeitsregisters AW4 in einer OR-Operation verknüpft, und das Ergebnis wird im B-Register gespeichert, welches durch den Inhalt des Zählers, RFA, adressiert wird.
  • Wenn in der Inkrementierungsoperation das Übertragsignal erfaßt wird, welches anzeigt, daß RA größer als BnX sei, wird dies getestet. RA größer als BnX zeigt an, daß es einen Übertrag in die Bitposition 28 des adressierten B-Registers gab, dann wird in Block A56 der Inhalt des Arbeitsregisters AW2, Hexadezimal 8, vom Inhalt der Bit 0 - 28 des adressierten B-Registers in der BALU 4 subtrahiert, und das Ergebnis wird in das adressierte B-Register zurückgespeichert. (Man bemerke, daß dies binär EINS von der Bitposition 28 subtrahiert.)
  • Dann wird im Block A5E der Inhalt des Arbeitsregisters AW4, RA, mit dem Inhalt des adressierten B-Registers in der BALU 4 in einer OR- Operation verknüpft, und das Ergebnis, die ursprüngliche Speicheradresse, wird in das adressierte B-Register zurückgespeichert.
  • Wenn in Block A7B das "4-Bit" im Zähler 12 eine Dekrementierungsoperation anzeigt, dann gäbe es einen Übertrag, wenn BnX größer als RA wäre. Daher wird in Block A02 der Inhalt des Arbeitsregisters AW2 zum Inhalt des adressierten Registers addiert. (Addieren von binär EINS zur Bitposition 28.)
  • Und im Block A06 wird der Inhalt des Registers AW4, RA, mit dem Inhalt des adressierten B-Registers in einer OR-Operation verknüpft, und das Ergebnis, die ursprüngliche Speicheradresse, wird in das adressierte B-Register zurückgespeichert.
  • Beide Blöcke A06 und A5E testen das Q31-Bit des Q-Registers 6. Wenn dieses Bit eine binäre NULL ist, was anzeigt, daß dies der dritte Eintrag im Stapel 10 ist, dann schließt Block A01 die UNDO-Operation ab, und die Firmware kehrt zum Hintergrundmodus zurück. Wenn andererseits Q31 bei einer binären EINS wäre, dann verzweigt die Firmware zum Block A09, um die UNDO-Operation fortzusetzen.
  • Man bemerke, daß, wenn dies eine Anweisung mit drei Deskriptoren wäre und sowohl der erste als auch der zweite Operand aus dem Speicher erhalten würde, jedoch die sich ergebende dritte Operandenstelie nicht im Speicher wäre, die Anweisung dennoch abgebrochen werden swürde und die drei Basisregistei, welche die Stellen der drei Operanden speichern, in ihre ursprünglichen Zustände zurückkehren würden.

Claims (10)

1. Vorrichtung zum Initialisieren der Ausführung ausgewählter Anweisungen, deren Operation abgebrochen ist, wobei die Vorrichtung aufweist:
eine Steuerspeichereinrichtung (38, 39, 20), die auf die ausgewählten Anweisungen anspricht, zum Erzeugen einer ersten Sequenz von Steuersignalen (RDR);
eine Registerdateieinrichtung (2), die an die Steuerspeichereinrichtung gekoppelt ist und auf die erste Sequenz von Steuersignalen antwortet, zum Speichern einer ersten Speicheradresse für einen ersten Operanden, wobei die erste Speicheradresse einen ersten niederrangigen Abschnitt und einen ersten höherrangigen Abschnitt aufweist;
eine Stapeleinrichtung (10), die an die Registerdateieinrichtung gekoppelt ist, zum Speichern des ersten niederrangigen Abschnitts der ersten Speicheradresse;
eine Speichereinrichtung (34, 36), die an die Registerdateieinrichtung gekoppelt ist, zum Empfangen der ersten Speicheradresse und zum Erzeugen eines Unterbrechungssignals, wenn der erste Operand nicht in der Speichereinrichtung gespeichert ist, wobei die Registerdateieinrichtung weiterhin die erste Speicheradresse zu einer zweiten Speicheradresse eines zweiten Operanden, der in der Speichereinrichtung gespeichert ist, modifiziert, wobei die zweite Speicheradresse einen zweiten niederrangigen Abschnitt und einen zweiten höherrangigen Abschnitt aufweist;
wobei die Steuerspeichereinrichtung (38, 39, 20) auf das Unterbrechungssignal zum Erzeugen einer zweiten Sequenz von Steuersignalen anspricht;
eine Arithmetikeinrichtung (4), die an die Steuerspeichereinrichtung, die Registerdateieinrichtung und die Stapeleinrichtung gekoppelt ist, und auf die zweite Sequenz von Steuersignaien, den ersten niederrangigen Abschnitt und einen zweiten niederrangigen Abschnitt von der zweiten Speicheradresse ansprechen, zum Erzeugen eines Übertragsignals, wenn der zweite niederrangige Abschnitt kleiner war als der erste niederrangige Abschnitt;
wobei die Steuerspeichereinrichtung (38, 39, 20) auf das Übertragsignal zum Erzeugen einer dritten Sequenz von Steuersignaien anspricht; und
wobei die Registerdateieinrichtung (2) auf die dritte Sequenz von Steuersignalen anspricht, zum Ersetzen der zweiten Speicheradresse in der Registerdateieinrichtung durch die erste Speicheradresse.
2. Vorrichtung nach Anspruch 1, wobei die Registerdateieinrichtung (2) aufweist:
eine Adressiereinrichtung (12) zum Adressieren eines Basisregisters und einer Vielzahi von Arbeitsregistern, wobei das Basisregister seinerseits die erste Speicheradresse und die zweite Speicheradresse speichert.
3. Vorrichtung nach Anspruch 2, wobei die Stapeleinrichtung (10) aufweist:
einen ersten FIFO-Stapel mit einer Vieizahl von Stellen, wobei jede Stelle den ersten niederrangigen Abschnitt speichert, wobei Adressierbits eine Stelle des Basisregisters und ein Bit festlegen, das festlegt, ob die erste Speicheradresse inkrementiert oder dekrementiert wurde, um die zweite Speicheradresse zu erzeugen.
4. Vorrichtung nach Anspruch 3, wobei die Arithmetikeinrichtung (4) aufweist:
eine Einrichtung zum Subtrahieren des zweiten niederrangigen Abschnitts von dem ersten niederrangigen Abschnitt und zum Erzeugen des Übertragsignals, wenn der erste niederrangige Abschnitt einen Wert größer als die zweiten niederrangigen Bits hat.
5. Vorrichtung nach Anspruch 4, wobei die Steuerspeichereinrichtung (20) auf das Übertragsignai in einem ersten Zustand anspricht, zum Erzeugen einer ersten Vielzahl der dritten Sequenz von Steuersignaien, wenn das Bit in einem ersten Zustand ist, bei dem es angibt, daß die erste Speicheradresse inkrementiert wurde, um die zweite Speicheradresse zu erzeugen,
wobei die Arithmetikeinrichtung (4) auf die erste Vielzahl der dritten Sequenz von Steuersignalen anspricht, zum Subtrahieren einer vorbestimmten Anzahl von dem zweiten höherrangigen Abschnitt der zweiten Speicheradresse in dem Basisregister, um den ersten höherrangigen Abschnitt der ersten Speicheradresse in dem Basisregister zu erzeugen.
6. Vorrichtung nach Anspruch 5, wobei die Stapeleinrichtung (10) und die Registerdateieinrichtung (2) auf die erste Vielzahl der dritten Sequenz von Steuersignalen anspricht, zum Transferieren des ersten niederrangigen Abschnitts von der Stapeleinrichtung zu den niederrangigen Bitpositionen des Basisregisters.
7. Vorrichtung nach Anspruch 4, wobei die Steuerspeichereinrichtung (38, 39, 20) auf das Übertragsignal in einem zweiten Zustand anspricht, zum Erzeugen einer zweiten Vielzahl der dritten Sequenz von Steuersignalen für das Bit in dem ersten Zustand,
wobei die Stapeleinrichtung (10) und die Registerdateieinrichtung (2) auf die zweite Vielzahl der dritten Sequenz von Steuersignalen ansprechen, zum Transferieren des ersten niederrangigen Abschnitts zu den niederrangigen Bitpositionen des Basisregisters.
8. Vorrichtung nach Anspruch 4, wobei die Steuerspeichereinrichtung (20) auf das Übertragsignal in dem ersten Zustand anspricht, zum Erzeugen einer dritten Vielzahl der dritten Sequenz von Steuersignalen, wenn das Bit in einem zweiten Zustand ist, bei dem es angibt, daß die erste Speicheradresse dekrementiert wurde, um die zweite Speicheradresse zu erzeugen,
wobei die Stapeleinrichtung (10) und die Registerdateieinrichtung (2) auf die dritte Vielzahl der dritten Sequenz von Steuersignalen ansprechen, zum Transferieren des ersten niederrangigen Abschnitts zu den niederrangigen Bitpositionen des Basisregisters.
9. Vorrichtung nach Anspruch 4, wobei die Steuerspeichereinrichtung (20) auf das Übertragsignal in dem zweiten Zustand anspricht, zum Erzeugen einer vierten Vielzahl der dritten Sequenz von Steuersignalen, wenn das Bit in dem zweiten Zustand ist,
wobei die Arithmetikeinrichtung (4) auf die vierte Vielzahl der zweiten Sequenz von Steuersignalen anspricht, zum Addieren einer vorbestimmten Zahl zu dem zweiten höherrangigen Abschnitt, um den ersten höherrangigen Abschnitt zu erzeugen.
10. Verfahren zum Initialisieren einer Anweisung in einem Datenverarbeitungssystem, wenn die Ausführung der Anweisung nachfolgend einer Modifikation der Anweisungsadresse um einen ersten vorbestimmten Betrag und nachfolgend der Speicherung der gespeicherten Adresse in einem ersten Register (2) unterbrochen ist, gekennzeichnet durch:
a) Speichern eines niederrangigen Abschnitts der Anweisungsadresse in einem zweiten Register (10) gleichzeitig mit der Modifikation;
b) nachfolgend der Unterbrechung, Wiedergewinnen des niederrangigen Abschnitts von dem zweiten Register (10) und des niederrangigen Abschnitts der modifizierten Anweisungsadresse von dem ersten Register (2) und Ausführen einer Subtraktionsoperation an den niederrangigen Abschnitten;
c) Ausführen eines Tests, um zu bestimmen, ob ein Übertrag infolge der Subtraktionsoperation aufgetreten ist;
d) Modifizieren des höherrangigen Abschnitts der modifizierten Anweisungsadresse um einen zweiten vorbestimmten Betrag, wenn der Test ein bestimmtes Ergebnis ergibt; und
e) Verketten des höherrangigen Abschnitts der modifizierten Anweisungsadresse und des niederrangigen Abschnitts der Anweisungsadresse, die in dem zweiten Register (10) gehalten ist.
DE3852209T 1987-05-19 1988-05-11 Aufheben eines Software-Befehls in mikroprogrammierten Systemen. Expired - Fee Related DE3852209T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/052,108 US4901222A (en) 1987-05-19 1987-05-19 Method and apparatus for backing out of a software instruction after execution has begun

Publications (2)

Publication Number Publication Date
DE3852209D1 DE3852209D1 (de) 1995-01-12
DE3852209T2 true DE3852209T2 (de) 1995-07-20

Family

ID=21975526

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3852209T Expired - Fee Related DE3852209T2 (de) 1987-05-19 1988-05-11 Aufheben eines Software-Befehls in mikroprogrammierten Systemen.

Country Status (8)

Country Link
US (1) US4901222A (de)
EP (1) EP0292791B1 (de)
JP (1) JPS647145A (de)
KR (1) KR930003399B1 (de)
AU (1) AU599484B2 (de)
CA (1) CA1287177C (de)
DE (1) DE3852209T2 (de)
NO (1) NO174027C (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5398330A (en) * 1992-03-05 1995-03-14 Seiko Epson Corporation Register file backup queue
US5440703A (en) * 1993-09-20 1995-08-08 International Business Machines Corporation System and method for saving state information in a multi-execution unit processor when interruptable instructions are identified
US6356918B1 (en) 1995-07-26 2002-03-12 International Business Machines Corporation Method and system for managing registers in a data processing system supports out-of-order and speculative instruction execution
JP3480698B2 (ja) 1999-05-27 2003-12-22 兼次 安彦 高温における強度−延性バランスに優れるCr基合金
KR101640101B1 (ko) * 2015-03-19 2016-07-18 한국단자공업 주식회사 커넥터용 와이어커버
US9972109B2 (en) * 2015-07-30 2018-05-15 Adobe Systems Incorporated Implementing out of order access to reversal operations in images

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3162841A (en) * 1961-11-14 1964-12-22 Ibm Instruction counter system
US4641305A (en) * 1984-10-19 1987-02-03 Honeywell Information Systems Inc. Control store memory read error resiliency method and apparatus
US4670835A (en) * 1984-10-19 1987-06-02 Honeywell Information Systems Inc. Distributed control store word architecture
JPS623347A (ja) * 1985-06-28 1987-01-09 Yokogawa Hewlett Packard Ltd エラ−回復情報退避方式

Also Published As

Publication number Publication date
US4901222A (en) 1990-02-13
AU1605288A (en) 1988-11-24
KR930003399B1 (ko) 1993-04-26
DE3852209D1 (de) 1995-01-12
KR880014473A (ko) 1988-12-23
AU599484B2 (en) 1990-07-19
EP0292791A3 (de) 1992-03-25
NO174027B (no) 1993-11-22
NO882133D0 (no) 1988-05-16
CA1287177C (en) 1991-07-30
EP0292791B1 (de) 1994-11-30
JPH0577096B2 (de) 1993-10-26
NO882133L (no) 1988-11-21
NO174027C (no) 1994-03-02
JPS647145A (en) 1989-01-11
EP0292791A2 (de) 1988-11-30

Similar Documents

Publication Publication Date Title
DE68927415T2 (de) Kontextumschaltungsverfahren und -anordnung zur Verwendung in einem Vektorverarbeitungssystem
DE68927492T2 (de) Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten
DE69129565T2 (de) Hochleistungsfähiger Emulator mit Pipelining
DE68926385T2 (de) Methode und Hardware-Ausführung von komplexen Datentransferbefehlen
DE68927911T2 (de) Datenverarbeitungssystem
DE3686991T2 (de) Mechanismus fuer parallele speicherdatenabholung und befehlsausfuehrung in einem prozessor mit reduziertem befehlssatz.
DE68928677T2 (de) Verfahren und digitaler Computer zur Vorverarbeitung mehrerer Befehle
DE69227465T2 (de) Cpu mit pipeline-einheit und effektiv-adressenrechnungseinheit mit möglichkeit zur beibehaltung von virtuellen operandenadressen.
DE68927371T2 (de) Verfahren und Vorrichtung zur Verarbeitung von mehreren Zustandscodes wie für einen Parallel-Pipeline-Rechner
DE69017178T2 (de) Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung.
DE3751503T2 (de) Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen.
DE3851488T2 (de) Registerverwaltungssystem mit Ausführung von Befehlen in Unordnung in einem Computerprozessor.
DE3587591T2 (de) Mikroprozessor für Forth-ähnliche Sprache.
DE3851746T2 (de) Sprungvorhersage.
DE3685913T2 (de) Vektorenverarbeitung.
DE3424962C2 (de)
DE68924546T2 (de) Verfahren und Vorrichtung zur Ausführung von Befehlen für ein Vektorverarbeitungssystem.
DE3687298T2 (de) Verfahren zur verarbeitung von adressenuebersetzungsausnahmen in einer virtuellen speicheranordnung.
DE10297581T5 (de) Lade/Übertrage- und Duplizier-Anweisungen für einen Prozessor
DE69030931T2 (de) Mehrfachsequenzprozessorsystem
DE69133571T2 (de) Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen
DE19735871A1 (de) Verfahren zum effizienten Sicherstellen und Wiederherstellen von Kontext in einer Multitasking-Rechensystemumgebung
DE69027932T2 (de) Cpu-pipeline mit registerfile-bypass durch adressvergleich bei aktualisierungen/zugriffen
DE69616718T4 (de) Vorrichtung und verfahren zur bestimmung von adressen fehlausgerichteter daten
EP0010185A1 (de) Virtuell-Adressiervorrichtung für einen Computer

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee