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
Links
- 238000000034 method Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 6
- 238000012360 testing method Methods 0.000 claims description 3
- 238000012986 modification Methods 0.000 claims 2
- 230000004048 modification Effects 0.000 claims 2
- 230000000977 initiatory effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 3
- 101100524516 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) RFA2 gene Proteins 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- BINCGEGLXIMJFO-JQSLHUNDSA-N rfa-2 Chemical compound C1([C@H]2N[C@H](CC3(N=C4C=5C6=C7O[C@](C6=O)(C)O/C=C/[C@@H]([C@H]([C@@H](OC(C)=O)[C@@H](C)[C@@H](O)[C@H](C)[C@@H](O)[C@@H](C)\C=C\C=C(C)/C(=O)NC(=C4N3)C(=O)C=5C(O)=C7C)C)OC)C2)C=2C=CC(F)=CC=2)=CC=C(F)C=C1 BINCGEGLXIMJFO-JQSLHUNDSA-N 0.000 description 2
- 101100033865 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) RFA1 gene Proteins 0.000 description 1
- 101100524524 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) RFA3 gene Proteins 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- CJBPIZBHRWDBGQ-COSFPPCYSA-N rfa-1 Chemical compound C1([C@H]2N[C@H](CC3(N=C4C=5C6=C7O[C@](C6=O)(C)O/C=C/[C@@H]([C@H]([C@@H](OC(C)=O)[C@@H](C)[C@@H](O)[C@H](C)[C@@H](O)[C@@H](C)\C=C\C=C(C)/C(=O)NC(=C4N3)C(=O)C=5C(O)=C7C)C)OC)C2)C=2C=CC=CC=2)=CC=CC=C1 CJBPIZBHRWDBGQ-COSFPPCYSA-N 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1405—Saving, restoring, recovering or retrying at machine instruction level
- G06F11/141—Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, 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.
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)
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)
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 | エラ−回復情報退避方式 |
-
1987
- 1987-05-19 US US07/052,108 patent/US4901222A/en not_active Expired - Lifetime
-
1988
- 1988-05-11 DE DE3852209T patent/DE3852209T2/de not_active Expired - Fee Related
- 1988-05-11 EP EP88107610A patent/EP0292791B1/de not_active Expired - Lifetime
- 1988-05-11 AU AU16052/88A patent/AU599484B2/en not_active Ceased
- 1988-05-16 NO NO882133A patent/NO174027C/no not_active IP Right Cessation
- 1988-05-18 JP JP63121665A patent/JPS647145A/ja active Granted
- 1988-05-18 CA CA000567061A patent/CA1287177C/en not_active Expired - Lifetime
- 1988-05-19 KR KR1019880005832A patent/KR930003399B1/ko not_active IP Right Cessation
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 |