DE69017178T2 - Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung. - Google Patents

Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung.

Info

Publication number
DE69017178T2
DE69017178T2 DE69017178T DE69017178T DE69017178T2 DE 69017178 T2 DE69017178 T2 DE 69017178T2 DE 69017178 T DE69017178 T DE 69017178T DE 69017178 T DE69017178 T DE 69017178T DE 69017178 T2 DE69017178 T2 DE 69017178T2
Authority
DE
Germany
Prior art keywords
instruction
instructions
register
data
load
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
DE69017178T
Other languages
English (en)
Other versions
DE69017178D1 (de
Inventor
Troy Neal Hicks
Myhong Nguyenphu
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of DE69017178D1 publication Critical patent/DE69017178D1/de
Publication of DE69017178T2 publication Critical patent/DE69017178T2/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Description

  • Die Erfindung bezieht sich auf Datenverarbeitungssysteme und insbesondere auf ein Datenverarbeitungssystem mit einer Mehrzahl von Verarbeitungseinheiten, die eine einzige Abfolge von Befehlen ausführen.
  • Ein allgemeines Problem, das in modernen Von-Neumann-Architekturen angetroffen wird, ist der Zugriff auf Befehle und Daten aus demselben Speicher. In modernen Datenverarbeitungssystemen ist der Zugriff auf Speicher sehr zeitaufwendig im Vergleich zur Befehlsausführung innerhalb einer Verarbeitungseinheit. Das Problem des Zeitaufwands im Hinblick auf den Speicherzugriff wurde zu einem gewissem Grad durch die Verwendung eines CACHE- Speichers erleichtert, einem sehr schnellen Speicher, der mit dem Datenverarbeitungssystem verbunden ist, um häufig benutzte Informationen zu speichern. Wenn jedoch die abzurufende Information im CACHE-Speicher nicht verfügbar ist, ist zusätzliche Zeit erforderlich, um auf den Hauptspeicher zuzugreifen. In einem herkömmlichen Pipeline-Datenverarbeitungssystem werden Befehle der Reihe nach, aber quasi-parallel ausgeführt. Jeder Befehl wird in mehreren Schritten ausgeführt, und während ein Schritt eines Befehls gerade ausgeführt wird, werden andere Schritte von anderen Befehlen parallel dazu ausgeführt. Die Pipelineverarbeitung führt also dazu, daß Befehle ordnungsgemäß gleichzeitig verarbeitet werden, während die folgerichtige Beziehung der Befehle untereinander gewahrt bleibt. Wenn ein Befehl Daten aus dem Speicher erfordert, wird gewöhnlich jedoch die Pipelineverarbeitung angehalten, während die Daten aus dem Speicher geholt werden, wobei dann viele der Vorteile der gleichzeitigen oder parallelen Befehlsausführung der Pipelineverarbeitung zunichte gemacht werden. Die Aufgabe der vorliegenden Erfindung besteht darin, diesen Nachteil, der durch das Zugreifen auf den Speicher verursacht wird, zu minimieren.
  • In der Vergangenheit wurde dieses Problem durch die Kennzeichnung des Zielregisters einer anstehenden Ladeoperation (d.h., des Registers, das Daten aus dem Speicher erhalten soll) gelöst. Diese Technik wird in der europäischen Patentschrift EP-A-0163148 diskutiert (U.S. Patent No. 4 630 195, ursprünglich angemeldet am 31. Mai 1984). Nach dieser Lehre umfaßt jedes Prozessorregister eine Möglichkeit der Speicherkennzeichnung. Wenn Befehle ausgeführt werden, die keine Daten aus dem gekennzeichneten Register erfordern, darf die Befehlsausführung fortgesetzt werden. Wird jedoch ein Befehl ausgeführt, der von Daten abhängig ist, die in ein gekennzeichnetes Register eingeschrieben werden sollen, und das Register die Daten, wie es vom Kennzeichen angezeigt wird, nicht erhalten hat, wird der Befehl nicht ausgeführt.
  • Gemäß der vorliegenden Erfindung wird nun ein Datenverarbeitungssystem angegeben mit einem Hauptspeicher, mit Befehlsmitteln zum Ausführen von Rechen- und Ladebefehlen, wobei letztere benutzt werden, um die Daten aus dem Hauptspeicher auszulesen, die für die Ausführung der Rechenbefehle benötigt werden, mit Mitteln zum Zwischenspeichern, in denen die Befehle vor der Ausführung hintereinander gespeichert werden, und mit Mitteln zur Kennzeichensteuerung, dadurch gekennzeichnet, daß das System Decodierungsmittel umfaßt, um die Befehle zu decodieren und um die Rechenbefehle in eine erste Warteschlange in den Mitteln zum Zwischenspeichern sowie die Ladebefehle in eine zweite Warteschlange im Zwischenspeicher aufzuteilen, daß es einen ersten Prozessor umfaßt, um die Rechenbefehle zu bearbeiten sowie einen zweiten Prozessor, um die Ladebefehle asynchron zu den Rechenbefehlen zu bearbeiten, daß es die Mittel zur Kennzeichensteuerung umfaßt, um ein Kennzeichen für jeden Rechenbefehl in der ersten Warteschlange abzuspeichern, der das Laden von Daten durch einen Ladebefehl in der zweiten Warteschlange erfordert, und um die Kennzeichen eines jeden der Rechenbefehle zu löschen, wenn die Daten für diesen Befehl ausgelesen wurden, wobei der erste Prozessor derart ausgebildet ist, daß er die Rechenbefehle ausführt, die kein abgespeichertes Kennzeichen aufweisen.
  • Demzufolge gibt die vorliegende Erfindung einen Nennzeichenmechanismus für ein Datenverarbeitungssystem an, das mehrere Prozessoren umfaßt, wobei die Ausführung eines Befehls in einem ersten Prozessor durchgeführt wird, während Daten für den Befehl von einem zweiten Prozessor geholt werden. Dies erlaubt eine sequentielle Befehlsausführung durch eine ordnungsgemäße Pipelineverarbeitung mit Speicherzugriff.
  • Offenbarung der Erfindung
  • Gemäß der vorliegenden Erfindung wird ein Datenverarbeitungssystem angegeben, das eine Befehlsausführungseinheit umfaßt, die eine erste Art Befehle ausführt. Eine Ausleseeinheit wird angegeben, um Befehle aus dem Speicher auszulesen und um Daten aus einem Speicher auszulesen, die von einer zweiten Art Befehle angefragt werden. Es umfaßt außerdem einen Befehlsdecoder, der die ausgelesenen Befehle decodiert und die Befehle der ersten Art einer Befehlswarteschlange und Befehle der zweiten Art in die Ausleseeinheit übergibt. Die Befehlswarteschlange speichert decodierte Befehle der ersten Art und kennzeichnet diese Befehle der ersten Art, wenn die Daten, die für deren Ausführung erforderlich sind, noch nicht ausgelesen wurden. Das Kennzeichen dieser Befehle wird gelöscht, wenn die Daten, die für die Ausführung erforderlich sind, ausgelesen wurden. Die Befehlswarteschlange liefert der Reihe nach nicht gekennzeichnete Befehle der Befehlsausführungseinheit zur Ausführung.
  • In der bevorzugten Ausführungsform wird ein Multiprozessorsystem angegeben, worin der Speicher sowohl Befehle als auch Daten enthält. Diese bevorzugte Ausführungsform umfaßt zwei Prozessoren, um Befehle der Befehlssteuerungseinrichtung auszuführen. In dieser bevorzugten Ausführungsform sind die Befehle der ersten Art Gleitkommabefehle, die nur von einem Gleitkommaprozessor ausgeführt werden können. Die Befehle der zweiten Art sind Ladebefehle, um Gleitkommadaten den Registern des Gleitkommaprozessors zu übergeben, und sie werden von einem Festkommaprozessor ausgeführt. Der Festkommaprozessor berechnet genau die Adressen, die auf dem Bus zum Speicher geführt sind, um auf die Gleitkommadaten zuzugreifen. Weiterhin wird in dieser bevorzugten Ausführungsform eine erste Warteschlange angegeben, um Register-Register-Befehle und Register-Speicher-Befehle zu speichern sowie die zweite Warteschlange, die die Speicher-Register-Befehle speichert. Die Befehlsdecodiermittel der bevorzugten Ausführungsform umfassen die Fähigkeit, mehrere Befehle parallel zu decodieren. Die Ladebefehle sind in einer Befehlswarteschlange (der Speicher-Register-Warteschlange), getrennt von den anderen Gleitkommarechenbefehlen (die in der anderen Warteschlange abgespeichert sind), abgespeichert. Wenn ein Gleitkommarechenbefehl Daten erfordert, die zufolge eines Ladebefehls geladen werden, wird dieser Gleitkommarechenbefehl in seiner Befehlswarteschlange gekennzeichnet. Wenn ein Befehl kein Kennzeichen aufweist, wird er dem Gleitkommaprozessor zur Ausführung übergeben.
  • In den Zeichnungen ist:
  • Fig. 1 gemäß der Erfindung ein Blockdiagramm des Datenverarbeitungssystems,
  • Fig. 2 ein Blockdiagramm, das Befehlswarteschlangen darstellt, die in einer Gleitkommaeinheit im System nach Fig. 1 angeordnet sind;
  • Fig. 3 ein Blockdiagramm, das eine Befehlsdecodierlogik darstellt, die mit der Befehlswarteschlange in der Gleitkommaeinheit nach Fig. 2 verbunden ist;
  • Fig. 4 ein Flußdiagramm, das eine Kennzeichenprozedur darstellt;
  • Fig. 5 ein Zustandsdiagramm, das den Befehlsfluß durch die Kennzeichenprozedur darstellt;
  • Fig. 6A eine erste Abfolge von Befehlen;
  • Fig. 6B ein Zeitdiagramm, das die Pipelineverarbeitung der Befehlsabfolge nach Fig. 6A darstellt;
  • Fig. 7A eine zweite Befehlsabfolge;
  • Fig. 6B ein Zeitdiagramm, das die Pipelineverarbeitung der Befehlsabfolge nach Fig. 6A darstellt;
  • Fig. 8A eine dritte Befehlsabfolge; und
  • Fig. 8B ein Zeitdiagramm, das die Pipelineverarbeitung der Befehlsfolge nach Fig. 8A darstellt.
  • Fig. 1 zeigt ein Blockdiagramm, das das Datenverarbeitungssystem mit einem Speicher 10 darstellt, der mit einer Befehlseinheit 12 verbunden ist. Die Ausgabe der Befehlseinheit 12 sind zwei Befehle, die der Festkommaeinheit 14 oder der Gleitkommaeinheit 16 zugeführt werden können. Die Festkommaeinheit umfaßt eine Befehlswarteschlange 27, bezeichnet als "sequentielle Befehlsausführung". Die Gleitkommaeinheit 16 umfaßt eine Befehlswarteschlange 34 von synchronen Befehlen, die von der Festkommaeinheit 14 ausgeführt werden, und eine zweite Warteschlange 30, die Befehle umfaßt, die als "asynchrone Befehle" bezeichnet werden.
  • Die Ausführung der Befehle durch die Gleitkommaeinheit 16 ist unabhängig von der Ausführung der Befehle durch die Festkommaeinheit 14, mit Ausnahme der "synchronen Befehle". Die "synchronen Befehle" umfassen Datenladebefehle, die Daten aus dem Speicher 20 den Registern der Gleitkommaeinheit 16 zuführen. Die Adressenberechnung dieser Ladebefehle wird durch die Festkommaeinheit 14 durchgeführt, genauso wie die Festkommaberechnung eines indizierten Ladebefehls. Das Auslesen der Daten aus dem Speicher 10 wird ausgelöst durch die Festkommaeinheit 14. Die Daten werden dann über den Daten-Cache-Speicher 18 den Registern der Gleitkommaeinheit 16 zugeführt. Datenladebefehle für die Gleitkommaeinheit 16 sind in beiden Warteschlangen 34 und 27 enthalten. Die Ladebefehlsspeicherung wird durch die Verbindung 29 koordiniert.
  • Fig. 2 zeigt ein Blockdiagramm, das Befehlswarteschlangen und eine Gleitkommaeinheit 16 darstellt. Die Befehle werden durch die Prefetch-Puffersteuerung 20 auf Gültigkeit hin untersucht. Ist ein Befehl gültig, wird er in der Gleitkommabefehlswarteschlange 22 abgespeichert. Jeweils zwei dieser Befehle werden dann gleichzeitig in den Decodern 26 und 28 unter der Steuerung der Decodierlogik 24 decodiert. Die decodierten Befehle werden dann den Befehlswarteschlangen 30 und 34 zugeführt und in den erstverfügbaren Pufferspeicher abgelegt. Die Rechenbefehle der Gleitkommaeinheit werden anders als die Datenladebefehle in der Befehlswarteschlange 30 abgespeichert. Dies umfaßt alle Register-Register- und Register-Speicher-Operationen der Gleitkommaeinheit. Die Speicher-Register-Operation für Gleitkommaeinheit 16 (die Datenladebefehle) werden in der Befehlswarteschlange 34 abgespeichert. Diese Befehle der Warteschlangen 30 und 34 werden durch die Ausführungssteuereinheit 32 zu gegebener Zeit verteilt.
  • Während der Operation können die Befehle in der Befehlswarteschlange 30 die Speicherung von Daten in den Registern der Gleitkommaeinheit erfordern. Diese Daten müssen gespeichert werden, bevor die Befehle zur Ausführung weitergeleitet werden. Eine angemessene Verwaltung dieser Befehle muß sicherstellen, daß die erforderlichen Daten bei der Verteilung der Befehle in den Registern gespeichert werden.
  • Fig. 3 zeigt die Kennzeicheneinheit in der Gleitkommaeinheit 16. In der Gleitkommaeinheit 16 speichern die Decode-0-Register 26 und die Decode-1-Register 28 die zu decodierenden Befehle. Während des Decodierungsprozesses werden mittels der Vergleicher 40, 42, 44, 46, und 48 Vergleiche angestellt, um festzustellen ob einer der zu decodierenden Befehle von der Ausführung eines in der Ladebefehlsschlange 34 gespeicherten Ladebefehls abhängig ist, wie in Fig. 3 als Warteposition 70 und 72 dargestellt. Beide Wartepositionen 70 und 72 enthalten einen Sechs-Bit "T"-Deskriptor, der die Adresse des Registers in der durch den Ladebefehl geladenen Gleitkommaeinheit 16 bildet. Diese Register- Adressen bilden die Eingabe der Vergleicher 40, 42, 44, 46, und 48 und sollen mit den durch die Befehle der Decodierungseinheit 26 und 28 spezifizierten Registern verglichen werden. Dies ist so zu verstehen, daß in der bevorzugten Ausführungsform ein Gleitkommaverarbeitungsbefehl bis zu drei Quellregister und ein Zielregister enthält. Die Quellregister lauten "A", "B" und "C". Das Zielregister lautet "T". In der bevorzugten Ausführungsform liefert die Gleitkommaeinheit 16 die Ausführung eines Befehls, der sowohl Multiplikation als auch Addition oder "A*B+C" durchführt. Entsprechend dem Format wird das Ergebnis der Multiplikations-/Additions-Operation im Zielregister "T" abgelegt. Fällt ein Vergleich eines der Register mit den Registerkennzeichnungen in den zu decodierenden Befehlen positiv aus, wird das entsprechende Kennzeichen beim Speichern des Befehls im Befehlspufferspeicher 62 gesetzt. Das Kennzeichen wird in einem Zwei-Bit-Pufferspeicher 64 unter der Steuerung durch die Kennzeichensteuerungseinheit 68 gespeichert. Die Pufferspeicher 50, 54, 58 und 62 entsprechen der Befehlswarteschlange 30 in Fig. 2. Bei der Decodierung jedes Befehls wird dieser im nächstverfügbaren Pufferspeicher abgelegt. Deshalb werden alle asynchronen Befehle (Befehle, die in der Gleitkommaeinheit 16 unabhängig von der Ausführung der Befehle in der Festkommaeinheit 14 ausgeführt werden) zuerst im Pufferspeicher 50 gespeichert. Ebenso werden die den in den Pufferspeichern 50, 54, 58 und 62 gespeicherten Befehlen entsprechenden Kennzeichen im Kennzeichenspeicher 52, 56, 60 und 64 gespeichert. Wird der Befehl abgeschickt, wird er an die Ausführungseinheit 66 gesandt. Die Nennzeichensteuerungslogik 68 ist damit verbunden, um das Daten-Bereit-Signal vom Speicherbus 8 zu empfangen. Bei Empfang des Daten-Bereit-Signals wird das entsprechende Kennzeichen auf Null gesetzt. Ebenso wird die Kennzeichensteuerungslogik den Befehl auf dem Pufferspeicherplatz 62 weiterleiten, wenn beide Kennzeichenbits am Pufferspeicherplatz 64 Null sind. So wird die Befehlsabfolge in der Befehlswarteschlange organisiert, um sicherzustellen, daß die Daten für die Ausführung des Befehls korrekt abgerufen wurden und bereitstehen, bevor der Befehl tatsächlich zur Ausführung weitergeleitet wird.
  • Fig. 4 beschreibt die Kennzeichenprozedur in Form eines Flußdiagramms. In Schritt 100 wird entschieden, ob sich ein gültiger Befehl in der Decodierungseinrichtung befindet. Ist dies nicht der Fall verweilt die Steuerung solange in einer Schleife, bis ein gültiger Befehl da ist. Als nächstes wird in Schritt 102 bestimmt, ob ein gültiger Befehl in der Ladewarteschlange 1 vorhanden ist. Ist kein gültiger Befehl in Ladewarteschlange 1 vorhanden, verzweigt die Steuerung zurück zum Anfang von Schritt 102. Wenn ein gültiger Befehl in Schlange 1 vorhanden ist, verzweigt die Steuerung weiter zu Schritt 106 um festzustellen, ob der abzurufende Operand der richtige Operand für die Befehlsdecodierung ist. Ist dies der Fall, so verzweigt die Steuerung zu Schritt 110, um das Befehlskennzeichnungsbit 1 gleich 1 zu setzen. Ist es nicht der Fall, fährt die Steuerung mit Schritt 112 fort, um das Befehlskennzeichen Bit 1 auf 0 zu setzen. Parallel dazu bestimmt die Steuerung in Schritt 104, ob der Befehl in der Ladewarteschlange 0 ein gültiger Befehl ist. Ist dies nicht der Fall, geht die Steuerung zurück zum Anfang von Schritt 104. Ist dort ein gültiger Ladebefehl vorhanden, verzweigt die Steuerung zu Schritt 108 um zu bestimmen, ob der abgerufene Operand der Operand für den zu decodierenden Befehl ist. Ist dies der Fall, wird das Befehlskennzeichnungsbit 0 in Schritt 114 auf 1 gesetzt. Ist dies nicht der Fall, wird das Befehlskennzeichnungsbit 0 in Schritt 116 auf 0 gesetzt.
  • In Bezug auf Fig. 3 sollte verstanden werden, daß es möglich ist, daß ein Befehl, der in einem der vier Befehlspufferspeicher 50, 54, 58 oder 62 gespeichert ist, das Laden von Operanden erfordert, die über zwei Ladebefehle geladen werden, die in den Pufferspeichern 72 und 70 gespeichert sind. In diesem Fall enthalten beide Bits in den Bitpufferspeichern 52, 56, 60 oder 64 für ihren entsprechenden Befehlspufferspeicher 50, 54, 58 oder 62 eine 1. Wenn die Ladeoperation im Pufferspeicher 72 in die Ausführungseinheit 74 transferiert wird, bewegt sich die Operation in Pufferspeicher 70 herunter nach 72, und das am weitesten links stehende Bit in den Kennzeichenpufferspeichern 52, 56, 60 oder 64 bewegt sich zu der am weitesten rechts gelegenen Bitposition. Wenn beide Bitpositionen auf 1 gesetzt sind, bedeutet dies deshalb, daß beide in den Befehlspufferspeichern 70 und 72 gespeicherten Ladebefehle noch ausstehende Datenanforderungen aufweisen. Ebenso gilt, daß wenn beide Bitpositionen auf 0 stehen, keine Abhängigkeit besteht von irgendwelchen zu ladenden Daten und daß der Befehl zur Ausführung weitergeleitet werden kann.
  • Fig. 5 zeigt ein Zustandsdiagramm, das die Abfolge des Kennzeichens und des Zurückhaltens der Befehle von der Ausführung darstellt. Im ersten Zustand 120 ist das Kennzeichen auf 1X gesetzt, wobei "X" ignorieren bedeutet, wenn ein Befehl von einem im Ladepufferspeicher I 70 auszuführenden Ladebefehl abhängig ist. An diesem Punkt wird der Ausführungszustand auf 0 gesetzt, was bedeutet, daß der Befehl nicht zur Ausführung weitergeleitet werden kann. Solange das Daten-Bereit-Signal für den Operanden 0 ist, wird der Prozeß in diesem Zustand verharren. Sobald das Daten-Bereit-Signal für den Operanden erhalten worden ist, fährt der Prozeß mit Zustand 122 fort. Dies ist unabdingbar für den Transfer des Ladebefehls vom Ladebefehlspufferspeicher 70 zum Ladebefehlspufferspeicher 72 in Fig. 3. Wieder bleibt der Prozeß im Zustand 122 bis das nächste Daten-Bereit-Signal empfangen wird, dann fährt der Prozeß mit Zustand 124 fort, wo das Kennzeichen auf 00 gesetzt und der Ausführungszustand auf 1 geändert wird, was anzeigt, daß der Befehl zur Ausführung weitergeleitet worden ist.
  • Fig. 6A stellt eine Befehlsabfolge dar. In der Operation einer normalen, sequentiell ausgeführten Pipelineverarbeitung wäre der erste Befehl LD (der ein Laden des Registers 0 angibt) der erste Befehl, der zur Ausführung weitergeleitet wird. Alle folgenden Befehle würden die Vollendung des Ladens von Register 0 abwarten. Als nächstes ist ein Multiplikationsbefehl angegeben der den Inhalt von Register 2 multipliziert mit dem Inhalt von Register 3 und das Ergebnis in Register 2 speichert. Dem Multiplikationsbefehl folgt ein Ladebefehl, der Register 1 lädt. Zuletzt erfolgt ein Additionsbefehl, der den Inhalt von Register 0 zu dem Inhalt von Register 1 addiert und das Ergebnis in Register 4 speichert.
  • Zum Zweck dieser Beispiele setzen wir voraus, daß die Register 2 und 3 vorab geladen wurden. Mit Bezug auf Fig. 3 ist der Ladebefehl für Register 0 in das DECODE-0-Register 26 und der Multiplikationsbefehl in das DECODE-1-Register 28 im Zyklus 0 (Fig. 6B) geladen. Im Zyklus 1 ist der Ladebefehl für Register 0 in das Register 72 der Warteschlange 0 für ausstehende Ladebefehle transferiert, und der Multiplikationsbefehl wird durch die asynchronen Befehlspufferspeicher 50, 54, 58 und 62 in die Ausführungseinheit 66 zur Ausführung eingespeist, da dort keine Datenabhängigkeiten vorlagen.
  • Im Zyklus 1 wird der Ladebefehl für Register 1 im DECODE-0-Register 26 abgelegt und der Additionsbefehl im DECODE-1-Register 28. Im Zyklus 2 bleibt der Ladebefehl für Register 0 in Register 72 der Warteschlange 0 für ausstehende Ladebefehle, und der Ladebefehl für Register 1 wird in Register 72 der Warteschlange 1 für ausstehende Ladebefehle abgelegt. Der Additionsbefehl ist in Register 62 des Pufferspeichers 0 abgelegt und das Kennzeichenregister 64 ist auf 11 gesetzt, was darauf hinweist, daß der Additionsbefehl von der Vervollständigung beider in den Registern 70 und 72 gespeicherten Ladebefehle abhängig ist. Im Zyklus 3 wird ein Daten-Bereit-Signal empfangen, wie in der Daten- Bereit-Zeile 150 angezeigt. Dies zeigt an, daß Daten der Gleitkommaeinheit 16 zur Speicherung im entsprechenden Register zugeführt werden. Die Ladebefehle bleiben in ihren entsprechenden Registern 70 und 72 der Warteschlangen für ausstehende Ladebefehle gespeichert, und der Additionsbefehl bleibt im Register 62 zusammen mit seinen Kennzeichen im Kennzeichenspeicher 64 gespeichert. Im Zyklus 4 wird der Ladebefehl für Register 0 aus Register 72 entfernt, da er ausgeführt wurde, und wird ersetzt durch den Ladebefehl für Register 1 aus Register 70. Während der Additionsbefehl in Register 62 bleibt, wird das Kennzeichen in Register 64 wieder auf 01 zurückgesetzt, was darauf hinweist, daß ein Ladebefehl ausgeführt wurde und das ausstehende Laden, von dem der Befehl abhängt, jetzt in Register 72 abgelegt ist. Im Zyklus 5 wird ein zweites Daten-Bereit-Signal in Zeile 150 empfangen. Im Zyklus 6 wird das Additionskennzeichen auf 00 gesetzt und der Additionsbefehl in die Ausführungseinheit 66 weitergeleitet, da die Gleitkommaeinheit den zweiten Teil der Daten empfangen hat.
  • Fig. 7A zeigt die zweite Folge von Befehlen ähnlich der Folge von Befehlen in Fig. 6A. Jedoch enthält die Befehlsfolge in Fig. 7A einen Divisionsbefehl im Gegensatz zu einem Multiplikationsbefehl. Die Bedeutung des Divisionsbefehls liegt darin, daß er weitaus mehr Zyklen als der Multiplikationsbefehl zur Vollendung benötigt. In Fig. 6B wurde der Multiplikationsbefehl in einem einzigen Zyklus vollendet. In dem Beispiel in Fig. 7B braucht der Divisionsbefehl zur Vollendung sieben Zyklen.
  • In Zyklus 0 werden sowohl der Lade- als auch der Divisionsbefehl in den Decodier-Registern 26 und 28 wie zuvor (Fig. 6A und 6B) abgelegt. Im Zyklus 1 wird der Divisionsbefehl vom Decodier-Register 28 direkt in der Ausführungseinheit 66 abgelegt. Der Ladebefehl für Register 0 wird in Register 72 der Warteschlange 0 für ausstehende Ladebefehle abgelegt. Ebenso werden der Ladebefehl für Register 1 in das DECODE-0-Register 26 und der Additionsbefehl in das DECODE-1-Register 28 plaziert. In Zyklus 2 ist der Ladebefehl für Register 1 in Register 70 der Warteschlange für ausstehende Ladebefehle und der Additionsbefehl in das Register 62 des Pufferspeichers 1 plaziert. Zu diesem Zeitpunkt setzt die Kennzeichensteuerungslogik 68 das Kennzeichen auf die Vollendung beider Ladebefehle in den Registern 70 und 72. Im Zyklus 3 wird ein Daten-Bereit-Signal empfangen wie in Zeile 152 angegeben.
  • Im Zyklus 4 wird der Ladebefehl für Register 0 gelöscht, da er vollendet ist und die Daten in die entsprechenden Register der Gleitkommaeinheit geladen wurden. Der Ladebefehl für Register 1 wird dann von Register 70 nach Register 72 transferiert. Die Kennzeichensteuerungslogik 68 setzt dann das Nennzeichen im Kennzeichenspeicher 64 auf 01, was darauf hinweist, daß Abhängigkeit von nur einem Ladebefehl besteht und daß der Ladebefehl in Register 72 gespeichert ist. Im Zyklus 5 wird ein zweites Daten-Bereit-Signal empfangen. In Zyklus 6 wird der Lade-1-Befehl in Register 72 gelöscht, da er vollendet wurde und die Daten ordnungsgemäß in die Gleitkommaeinheit geladen wurden. Die Kennzeichensteuerungslogik 68 hat das temporär im Kennzeichenspeicher 64 abgelegte Kennzeichen auf 00 zurückgesetzt, was darauf hinweist, daß keine Datenabhängigkeit für den im Register 58 gespeicherten Additionsbefehl besteht. Der Divisionsbefehl wird jedoch weiter ausgeführt. Im Zyklus 7 wird der Divisionsbefehl weiter ausgeführt, und deshalb kann der Additionsbefehl im Pufferspeicher 1 von Register 62 nicht in die Ausführungseinheit 66 weitergeleitet werden. Im Zyklus 8 wird der Divisionsbefehl endgültig vollendet und der Additionsbefehl weitergeleitet, was gegenüber einer rein sequentiellen Ausführung insgesamt 3 Zyklen spart.
  • Fig. 8A umfaßt eine dritte Befehlsfolge, bei der zwei Ladebefehle decodiert werden und denen ein Additions- und ein Multiplikationsbefehl folgen. Ziel dieser Befehlsfolge ist es aufzuzeigen, daß Befehle ohne Datenabhängigkeit (unabhängig von einem zu vollendenden ausstehenden Laden) in die Ausführungseinheit befördert werden können. In Fig. 8B werden der Ladebefehl für Register 0 und der Ladebefehl für Register 1 in das DECODE-0-Register 26 bzw. das DECODE-1-Register 28 geleitet. Im Zyklus 1 wird der Ladebefehl für Register 1 in Register 72 der Warteschlange 0 für ausstehende Befehle abgelegt. Der Ladebefehl für Register 1 ist plaziert in Register 70 der Warteschlange 1 für ausstehende Befehle abgelegt. Die Additions- und Multiplikationsbefehle werden im DECODE-0-Register 26 bzw. DECODE-1-Register 28 abgelegt. Man beachte, daß sowohl der Additions- als auch der Multiplikationsbefehl von Daten abhängen, die ins Register 0 geladen werden. Für den Zweck dieses Beispiels wird angenommen, daß andere für diese Befehle notwendige Daten (in den Registern 5 und 7) bereits bereitgestellt wurden. Im Zyklus 2 verbleiben der Ladebefehl für Register 1 und der Ladebefehl für Register 2 in den Registern 70 bzw. 72, während der Multiplikationsbefehl im Register 58 des Pufferspeichers 1 und der Additionsbefehl in Register 62 des Pufferspeichers 0 abgelegt wurde. Da sowohl der Additions- als auch der Multiplikationsbefehl von der Vollendung der Ladebefehle in Register 72 abhängig sind, sind beide Kennzeichen auf 01 gesetzt. Diese Kennzeichen sind für ihre entsprechenden Befehle in den Registern 60 und 64 gespeichert. Im Zyklus 3 wurde ein Daten-Bereit-Signal in Zeile 154 empfangen. Im Zyklus 4 wird das Kennzeichen des Additionsbefehls im temporären Speicher 64 auf 00 zurückgesetzt und der Additionsbefehl zur Ausführung an die Befehlsausführungseinheit 66 abgeschickt. Währenddessen wird der Multiplikationsbefehl in Register 62 des Pufferspeichers 0 transferiert, und sein Kennzeichen folgt vom Kennzeichenspeicher 60 in den Kennzeichenspeicher 64. Wie beim Additionsbefehl wird das Kennzeichen für den Multiplikationsbefehl auf 00 zurückgesetzt, was darauf hinweist, daß keine Datenabhängigkeiten vorliegen. Ebenso wird im Zyklus 4 der jetzt vollendete Ladebefehl 0 gelöscht. Der Ladebefehl für Register 1 wurde in Register 72 der Warteschlange 1 für ausstehende Befehle transferiert. Im Zyklus 5 wird der Multiplikationsbefehl in die Ausführungseinheit 66 abgeschickt, während der Ladebefehl für Register 1 auf Vollendung wartet. Schließlich wird, im Zyklus 8, ein Daten-Bereit-Signal in Zeile 154 empfangen, was darauf hinweist, daß der Ladebefehl für Register 1 vollendet wurde.

Claims (4)

1. Datenverarbeitungssystem mit einem Hauptspeicher (10), mit Befehlsmitteln (12), zum Ausführen von Rechen- und Ladebefehlen, wobei letztere benutzt werden, um die Daten aus dem Hauptspeicher (10) auszulesen, die für die Ausführung der Rechenbefehle benötigt werden, mit Mitteln zum Zwischenspeichern (30, 34), in denen die Befehle vor der Ausführung in einer Warteschlange gespeichert werden, und mit Mitteln zur Kennzeichensteuerung (68), dadurch gekennzeichnet, daß das System Decodierungsmittel (26, 28) umfaßt, um die Befehle zu decodieren und um die Rechenbefehle in eine erste Warteschlange in den Mitteln zum Zwischenspeichern sowie die Ladebefehle in eine zweite Warteschlange aufzuteilen, daß es einen ersten Prozessor (16) umfaßt, um die Rechenbefehle zu bearbeiten, sowie einen zweiten Prozessor (14), um die Ladebefehle asynchron zu den Rechenbefehlen zu bearbeiten, daß es die Mittel zur Kennzeichensteuerung (68) umfaßt, um ein Kennzeichen für jeden Rechenbefehl in der ersten Warteschlange abzuspeichern, der das Laden von Daten durch einen Ladebefehl in der zweiten Warteschlange erfordert, und um die Kennzeichen eines jeden der Rechenbefehle zu löschen, wenn die Daten für diesen Befehl ausgelesen wurden, wobei der erste Prozessor (16) derart ausgebildet ist, daß er die Rechenbefehle ausführt, für die kein Kennzeichen abgespeichert ist.
2. System nach Anspruch 1, in dem die Decodierungsmittel (26, 28) erste und zweite Decoder umfassen, um zwei Befehle gleichzeitig zu decodieren.
3. System nach Anspruch 1 oder 2, wobei die Mittel zum Zwischenspeichern (30, 34) eine Mehrzahl von hintereinandergeschalteten Befehlspufferspeichern (50, 54, 58, 62) und Kennzeichenspeichern (52, 56, 60, 64) umfassen, um Rechenbefehle in einer geordneten Abfolge mit Ihren entsprechenden Kennzeichen zu speichern, und Mittel umfassen, um Rechenbefehle vor vorhergehenden Ladebefehlen auszuführen, wenn die entsprechenden Kennzeichen anzeigen, daß die Daten für die Ausführung des Befehls korrekt ausgelesen wurden.
4. System nach Anspruch 1, 2 oder 3, wobei der erste Prozessor (16) ein Gleitkommaprozessor und der zweite Prozessor (14) ein Festkommaprozessor ist, der die Ladebefehle bearbeitet, um Gleitkommadaten für den Gleitkommaprozessor bereit zustellen.
DE69017178T 1989-12-20 1990-12-07 Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung. Expired - Fee Related DE69017178T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/453,529 US5150470A (en) 1989-12-20 1989-12-20 Data processing system with instruction queue having tags indicating outstanding data status

Publications (2)

Publication Number Publication Date
DE69017178D1 DE69017178D1 (de) 1995-03-30
DE69017178T2 true DE69017178T2 (de) 1995-08-10

Family

ID=23800914

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69017178T Expired - Fee Related DE69017178T2 (de) 1989-12-20 1990-12-07 Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung.

Country Status (10)

Country Link
US (1) US5150470A (de)
EP (1) EP0437044B1 (de)
JP (1) JP2701179B2 (de)
KR (1) KR930008035B1 (de)
CN (1) CN1021144C (de)
AU (1) AU639953B2 (de)
DE (1) DE69017178T2 (de)
HK (1) HK90795A (de)
MY (1) MY104531A (de)
NZ (1) NZ236142A (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102004004307A1 (de) * 2004-01-28 2005-09-01 Infineon Technologies Ag Schaltungsanordnung mit Zustandskontrolleinrichtung zur Überprüfung von abgesetzten Befehlen

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2507638B2 (ja) * 1989-12-01 1996-06-12 三菱電機株式会社 デ―タ処理装置
US5255371A (en) * 1990-04-02 1993-10-19 Unisys Corporation Apparatus for interfacing a real-time communication link to an asynchronous digital computer system by utilizing grouped data transfer commands
JP2834292B2 (ja) * 1990-08-15 1998-12-09 株式会社日立製作所 データ・プロセッサ
US5363495A (en) * 1991-08-26 1994-11-08 International Business Machines Corporation Data processing system with multiple execution units capable of executing instructions out of sequence
US5371684A (en) 1992-03-31 1994-12-06 Seiko Epson Corporation Semiconductor floor plan for a register renaming circuit
JP2549256B2 (ja) * 1992-12-01 1996-10-30 インターナショナル・ビジネス・マシーンズ・コーポレイション 浮動小数点プロセッサへデータを転送する方法及び装置
US5761473A (en) * 1993-01-08 1998-06-02 International Business Machines Corporation Method and system for increased instruction synchronization efficiency in a superscalar processsor system utilizing partial data dependency interlocking
US5434987A (en) * 1993-09-21 1995-07-18 Intel Corporation Method and apparatus for preventing incorrect fetching of an instruction of a self-modifying code sequence with dependency on a bufered store
WO1995016955A1 (en) * 1993-12-15 1995-06-22 Silicon Graphics, Inc. Load latency of zero for floating point load instructions using a load data queue
US5734856A (en) * 1994-04-05 1998-03-31 Seiko Epson Corporation System and method for generating supplemental ready signals to eliminate wasted cycles between operations
US5758176A (en) * 1994-09-28 1998-05-26 International Business Machines Corporation Method and system for providing a single-instruction, multiple-data execution unit for performing single-instruction, multiple-data operations within a superscalar data processing system
CN1069983C (zh) * 1994-10-13 2001-08-22 联华电子股份有限公司 一种虚拟排队装置
US5745726A (en) * 1995-03-03 1998-04-28 Fujitsu, Ltd Method and apparatus for selecting the oldest queued instructions without data dependencies
US5751983A (en) * 1995-10-03 1998-05-12 Abramson; Jeffrey M. Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations
US5799165A (en) * 1996-01-26 1998-08-25 Advanced Micro Devices, Inc. Out-of-order processing that removes an issued operation from an execution pipeline upon determining that the operation would cause a lengthy pipeline delay
US5796997A (en) * 1996-05-15 1998-08-18 Hewlett-Packard Company Fast nullify system and method for transforming a nullify function into a select function
US5920710A (en) * 1996-11-18 1999-07-06 Advanced Micro Devices, Inc. Apparatus and method for modifying status bits in a reorder buffer with a large speculative state
US5878242A (en) * 1997-04-21 1999-03-02 International Business Machines Corporation Method and system for forwarding instructions in a processor with increased forwarding probability
US5941983A (en) * 1997-06-24 1999-08-24 Hewlett-Packard Company Out-of-order execution using encoded dependencies between instructions in queues to determine stall values that control issurance of instructions from the queues
US5958047A (en) * 1997-06-25 1999-09-28 Sun Microsystems, Inc. Method for precise architectural update in an out-of-order processor
US5958041A (en) * 1997-06-26 1999-09-28 Sun Microsystems, Inc. Latency prediction in a pipelined microarchitecture
US6032249A (en) * 1998-02-02 2000-02-29 International Business Machines Corporation Method and system for executing a serializing instruction while bypassing a floating point unit pipeline
US7237090B1 (en) 2000-12-29 2007-06-26 Mips Technologies, Inc. Configurable out-of-order data transfer in a coprocessor interface
US7287147B1 (en) * 2000-12-29 2007-10-23 Mips Technologies, Inc. Configurable co-processor interface
US7185234B1 (en) 2001-04-30 2007-02-27 Mips Technologies, Inc. Trace control from hardware and software
US7134116B1 (en) 2001-04-30 2006-11-07 Mips Technologies, Inc. External trace synchronization via periodic sampling
US7178133B1 (en) 2001-04-30 2007-02-13 Mips Technologies, Inc. Trace control based on a characteristic of a processor's operating state
US7124072B1 (en) 2001-04-30 2006-10-17 Mips Technologies, Inc. Program counter and data tracing from a multi-issue processor
US7168066B1 (en) * 2001-04-30 2007-01-23 Mips Technologies, Inc. Tracing out-of order load data
US7181728B1 (en) 2001-04-30 2007-02-20 Mips Technologies, Inc. User controlled trace records
US7069544B1 (en) * 2001-04-30 2006-06-27 Mips Technologies, Inc. Dynamic selection of a compression algorithm for trace data
US7065675B1 (en) 2001-05-08 2006-06-20 Mips Technologies, Inc. System and method for speeding up EJTAG block data transfers
US7043668B1 (en) 2001-06-29 2006-05-09 Mips Technologies, Inc. Optimized external trace formats
US7231551B1 (en) 2001-06-29 2007-06-12 Mips Technologies, Inc. Distributed tap controller
US7159101B1 (en) 2003-05-28 2007-01-02 Mips Technologies, Inc. System and method to trace high performance multi-issue processors
US20110004718A1 (en) 2009-07-02 2011-01-06 Ross John Stenfort System, method, and computer program product for ordering a plurality of write commands associated with a storage device
US20120117335A1 (en) * 2010-11-10 2012-05-10 Advanced Micro Devices, Inc. Load ordering queue
US9519944B2 (en) * 2014-09-02 2016-12-13 Apple Inc. Pipeline dependency resolution
GB2564144B (en) * 2017-07-05 2020-01-08 Advanced Risc Mach Ltd Context data management
GB2572954B (en) * 2018-04-16 2020-12-30 Advanced Risc Mach Ltd An apparatus and method for prefetching data items
CN111290786B (zh) * 2018-12-12 2022-05-06 展讯通信(上海)有限公司 一种信息处理方法、设备及存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3718912A (en) * 1970-12-22 1973-02-27 Ibm Instruction execution unit
US4179736A (en) * 1977-11-22 1979-12-18 Honeywell Information Systems Inc. Microprogrammed computer control unit capable of efficiently executing a large repertoire of instructions for a high performance data processing unit
JPS58151655A (ja) * 1982-03-03 1983-09-08 Fujitsu Ltd 情報処理装置
JP2564805B2 (ja) * 1985-08-08 1996-12-18 日本電気株式会社 情報処理装置
US4972317A (en) * 1986-10-06 1990-11-20 International Business Machines Corp. Microprocessor implemented data processing system capable of emulating execution of special instructions not within the established microprocessor instruction set by switching access from a main store portion of a memory
US5001624A (en) * 1987-02-13 1991-03-19 Harrell Hoffman Processor controlled DMA controller for transferring instruction and data from memory to coprocessor
US5045992A (en) * 1988-10-19 1991-09-03 Hewlett-Packard Company Apparatus for executing instruction regardless of data types and thereafter selectively branching to other instruction upon determining of incompatible data type
US4999802A (en) * 1989-01-13 1991-03-12 International Business Machines Corporation Floating point arithmetic two cycle data flow

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102004004307A1 (de) * 2004-01-28 2005-09-01 Infineon Technologies Ag Schaltungsanordnung mit Zustandskontrolleinrichtung zur Überprüfung von abgesetzten Befehlen

Also Published As

Publication number Publication date
KR930008035B1 (en) 1993-08-25
EP0437044A3 (en) 1992-11-04
NZ236142A (en) 1992-12-23
JP2701179B2 (ja) 1998-01-21
EP0437044A2 (de) 1991-07-17
MY104531A (en) 1994-04-30
HK90795A (en) 1995-06-16
KR910012913A (ko) 1991-08-08
EP0437044B1 (de) 1995-02-22
JPH03191461A (ja) 1991-08-21
CN1021144C (zh) 1993-06-09
AU639953B2 (en) 1993-08-12
DE69017178D1 (de) 1995-03-30
AU6675390A (en) 1991-06-27
CN1052740A (zh) 1991-07-03
US5150470A (en) 1992-09-22

Similar Documents

Publication Publication Date Title
DE69017178T2 (de) Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung.
DE69308548T2 (de) Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
DE69904189T2 (de) Konfigurierter prozessor zur abbildung von logischen registernummern auf physikalische registernummern unter verwendung von virtuellen registernummern
DE69904083T2 (de) Anordnung und verfahren zum etikettieren und ungültig-erklären von spekulativ ausgeführten befehlen
DE69129569T2 (de) Maschine mit sehr langem Befehlswort für leistungsfähige Durchführung von Programmen mit bedingten Verzweigungen
DE3685913T2 (de) Vektorenverarbeitung.
DE69327637T2 (de) Superskalar-Computersystem
DE68927911T2 (de) Datenverarbeitungssystem
DE69033398T2 (de) Rechnerarchitektur mit Mehrfachbefehlsausgabe
DE69133302T2 (de) Registerabbildung in einem einzigen Taktzyklus
DE68927492T2 (de) Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten
DE3750935T2 (de) Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner.
DE69833008T2 (de) Prozessor mit instruktionskodierung mittels eines schablonenfeldes
DE69033443T2 (de) Mechanismus zur Verzweigungsrücksetzung in einem Prozessor mit gepaarten Befehlen
DE69129565T2 (de) Hochleistungsfähiger Emulator mit Pipelining
DE2714805C2 (de)
DE69130723T2 (de) Verarbeitungsgerät mit Speicherschaltung und eine Gruppe von Funktionseinheiten
DE69623146T2 (de) Verfahren und Vorrichtung zum Koordinieren der Benutzung von physikalischen Registern in einem Mikroprozessor
DE3424962C2 (de)
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE69305366T2 (de) System und verfahren zum kennzeichnen von befehlen zur steuerung der befehlsausführung
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE69027932T2 (de) Cpu-pipeline mit registerfile-bypass durch adressvergleich bei aktualisierungen/zugriffen
DE2524046C2 (de) Elektronische Datenverarbeitungsanlage
DE69418146T2 (de) Temporärer Registersatz für einen superpipeline-superskalaren Prozessor

Legal Events

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