DE4434529A1 - Verfahren zum Verarbeiten eines Befehls mit Einsatzbedingung und Vorrichtung dazu - Google Patents

Verfahren zum Verarbeiten eines Befehls mit Einsatzbedingung und Vorrichtung dazu

Info

Publication number
DE4434529A1
DE4434529A1 DE4434529A DE4434529A DE4434529A1 DE 4434529 A1 DE4434529 A1 DE 4434529A1 DE 4434529 A DE4434529 A DE 4434529A DE 4434529 A DE4434529 A DE 4434529A DE 4434529 A1 DE4434529 A1 DE 4434529A1
Authority
DE
Germany
Prior art keywords
condition
true
false
command
exception
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.)
Ceased
Application number
DE4434529A
Other languages
English (en)
Inventor
Hideki Ando
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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
Priority claimed from JP6133106A external-priority patent/JPH07182165A/ja
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of DE4434529A1 publication Critical patent/DE4434529A1/de
Ceased 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/30094Condition code generation, e.g. Carry, Zero flag
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • G06F9/262Arrangements for next microinstruction selection
    • 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
    • G06F9/3842Speculative 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)

Description

Die vorliegende Erfindung bezieht sich allgemein auf Verfahren zum Verarbeiten eines Befehls mit einer Einsatzbedingung und Vor­ richtungen dazu.
Genauer bezieht sie sich auf ein Verfahren zum Verarbeiten einer Mehrzahl von Befehlen, die jeweils eine entsprechende Einsatzbe­ dingung unter einer Anzahl von Umständen aufweisen, und eine Vor­ richtung dazu. Dabei wird die Einsatzbedingung aus Bedingungen gebildet, die zum letztendlichen Verarbeiten eines entsprechenden Befehls notwendig sind.
Fig. 28 ist ein Blockschaltbild, das den Aufbau eines Mikropro­ zessors als einen herkömmlichen Befehlsprozessor darstellt.
Wie in Fig. 28 gezeigt ist, weist der Mikroprozessor eine Regi­ sterdatei (Registerspeicher) 1, die aus einer Mehrzahl von Regi­ stern gebildet wird, eine ALU 2 (Arithmetic and Logical Unit = arithmetische und logische Einheit), einen Speicher 3 zum Halten von Befehlen, einen Programmzähler 4, der Adressen für auszufüh­ rende Befehle hält und eine solche Adresse an den Speicher 3 an­ legt, und eine Erhöhungsschaltung 5 zum Erhöhen (Inkrementieren) des Programmzählers 4 auf.
Der Mikroprozessor weist weiter ein Befehlsregister 6 zum Halten eines Befehls, der aus dem Speicher 3 geholt ist, einen Befehls­ dekoder 7 zum Dekodieren des Befehls und zum Erzeugen eines Steu­ ersignals zum Steuern des Lesens/Schreibens aus dem/in das Regi­ ster 1 und eines Steuersignals zum Steuern der ALU 2, eine Test­ schaltung 8 zum Bestimmen einer Verzweigungsbedingung basierend auf aus der Registerdatei 1 gelesenen Daten und eine Schaltung 9 zum Berechnen einer Zieladresse (Zieladressenberechnungsschal­ tung) als Reaktion auf ein Steuersignal von der Testschaltung 8 auf.
Bei dem Mikroprozessor wird ein auszuführender Befehl aus den in dem Speicher 3 gehaltenen Befehlen zuerst durch den Programmzäh­ ler 4 adressiert. Dann wird der adressierte Befehl aus dem Spei­ cher 3 geholt und in dem Befehlsregister 6 gehalten. Der in dem Befehlsregister 6 gehaltene Befehl wird durch den Befehlsdekoder 7 dekodiert und Lesen/Schreiben aus der/in die Registerdatei 1 wird gesteuert und die ALU 2 wird als Reaktion auf den Inhalt des Befehls gesteuert.
Falls der durch das Befehlsregister 6 geholte Befehl ein Verar­ beitungsbefehl ist, werden Daten entsprechend aus zwei Registern in der Registerdatei 1 gelesen. Diese Stücke von ausgelesenen Daten werden durch die ALU 2 verarbeitet, und der resultierende Wert bzw. die resultierenden Daten wird/bzw. werden in ein Regi­ ster in der Registerdatei 1 geschrieben.
Falls der durch das Befehlsregister 6 geholte Befehl ein Verzwei­ gungsbefehl ist, werden zwei Stücke von aus der Registerdatei 1 gelesenen Daten an die Testschaltung 8 angelegt. Basierend auf diesen Stücken von Daten bestimmt die Testschaltung 8, ob die Verzweigungsbedingung erfüllt ist oder nicht. Genauer bestimmt die Testschaltung 8, ob die Bedingung wahr oder falsch ist.
Falls die Bedingung wahr ist, wird die Zieladresse durch die Zieladressenberechnungsschaltung 9 zum Anlegen an den Programm­ zähler 4 berechnet. Falls die Bedingung falsch ist, wird der Pro­ grammzähler 4 erhöht (inkrementiert).
Im allgemeinen muß ein Mikroprozessor manchmal eine Verarbeitung bzw. einen Befehl, der "Ausnahme" genannt wird, in der Mitte bzw. dem Verlauf der Ausführung eines Befehls ausführen. Falls zum Beispiel in einem Mikroprozessor mit virtuellem Speicher ein Be­ fehl (Ladebefehl) zum Holen von Daten aus dem Speicher 3 in ein Register in der Registerdatei 1 ausgeführt wird, sind die zu la­ denden Daten manchmal nicht in dem Speicher 3 vorhanden bzw. prä­ sent. Eine solche Ausnahme wird im allgemeinen "Page-Fehler" (pa­ ge fault) genannt. In einem solchen Fall muß eine spezielle Rou­ tine, die "Ausnahmebehandlung" (exception handler) genannt wird, aufgerufen werden, um die Daten von einer Platte oder Diskette in den Speicher 3 zu laden. Nachfolgend muß die Verarbeitung bzw. der Verarbeitungsablauf von dem Befehl wieder aufgenommen werden, der die Ausnahme (Exception) verursacht hat.
Fig. 10 ist ein Ablaufdiagramm, das ein Beispiel eines Programms zeigt. Entsprechend dem Ablaufdiagramm wird nachdem die Bedingung (für den Befehl "falls" wird im folgenden "if" verwendet) C1 : if(R2<R3) in einem Basisblock K1 bestimmt ist, entweder ein Basisblock L1 oder L3 initiiert bzw. aufgerufen. Genauer sind der Befehl I2 : r4=r12+r13 im Basisblock L1 und der Befehl I3 : r5=r12-r13 basierend auf der Bedingung C1 auszuführen.
Bei dem herkömmlichen Mikroprozessor, der oben beschrieben ist, kann keine der Anweisungen I2 und I3 ausgeführt werden, bis die Bedingung C1 bestimmt ist. Zum Beispiel werden Daten, die aus der Ausführung des Befehls I2 resultieren, in ein Register r4 in der Registerdatei 1 nur dann geschrieben, wenn die Bedingung C1 wahr ist. Das Schreiben von Daten, die aus der Ausführung des Befehls I2 resultieren, in das Register r4, wobei die Bedingung C1 falsch ist, zerstört die zuvor durch das Register r4 gehaltenen Daten.
Derart ist der herkömmliche Mikroprozessor nicht in der Lage, die Befehle I2, I3 und I4, die basierend auf den Bedingungen C1 und C2 auszuführen sind, auszuführen, bis die Bedingungen C1 und C2 bestimmt sind.
Obwohl Mikroprozessoren mit einer Mehrzahl von ALUs in den ver­ gangenen Jahren vorgeschlagen worden sind, können solche Mikro­ prozessoren einen Befehl, der basierend auf einer oder mehreren Bedingungen auszuführen ist, immer noch nicht ausführen, bevor diese Bedingungen bestimmt sind. Einige aus der Mehrzahl der ALUs arbeiten für einige Momente bzw. Zeitabschnitte überhaupt nicht, und eine ausreichend hohe Betriebsgeschwindigkeit der Verarbei­ tung kann nicht erreicht werden.
Es ist Aufgabe der vorliegenden Erfindung, einen Mikroprozessor, der zum Ausführen eines Befehls, der nach der Bestimmung einer Bedingung auszuführen ist, in der Lage ist, bevor eine solche Bestimmung ausgeführt ist, und ein Verfahren für eine solche Be­ fehlsbearbeitung zu ermöglichen.
Diese Aufgabe wird gelöst durch ein Verfahren nach Anspruch 1 oder 4 bzw. einen Prozessor nach Anspruch 6 oder 20.
Weiterbildungen der Erfindung sind in den Unteransprüchen gekenn­ zeichnet.
Die Erfindung ermöglicht einen Mikroprozessor, der zur Verarbei­ tung von Befehlen mit einer höheren Geschwindigkeit in der Lage ist.
Die Erfindung ermöglicht weiter einen Mikroprozessor, der zum Verarbeiten eines Befehls auf das Austreten einer Ausnahme hin in der Lage ist.
Ein Verfahren zum Verarbeiten eines Befehls mit einer Einsatzbe­ dingung entsprechend einer Ausführungsform der vorliegenden Er­ findung verarbeitet eine Mehrzahl von Befehlen, die jeweils eine entsprechende Einsatzbedingung unter einer Mehrzahl von Bedingun­ gen aufweisen.
Die Einsatzbedingung wird durch irgendeine der obigen Bedingungen gebildet, die zum letztendlichen Verarbeiten des entsprechenden Befehls notwendig sind. Das obige Verarbeitungsverfahren weist die Schritte auf: Bestimmen von mindestens einer Bedingung, die aus den obigen Bedingungen ausgewählt wird; Vergleichen einer Einsatzbedingung, die mindestens einem Befehl entspricht, der aus den obigen Befehlen ausgewählt worden ist, und der obigen Bedin­ gung, Ausführen des ausgewählten Befehls nach dem Vergleich und Erzeugen resultierender Daten; Halten der erzeugten Daten in ei­ ner deterministischen Art in einem ersten Fall, in dem wahr oder falsch für alle Bedingungen in der entsprechenden Einsatzbedin­ gung mit wahr oder falsch für die bereits bestimmte Bedingung übereinstimmen, und provisorisches Halten der erzeugten Ergebnis­ daten in einem zweiten Fall, in dem wahr oder falsch für irgend­ eine der entsprechenden Einsatzbedingung mit wahr oder falsch für die bereits bestimmte Bedingung übereinstimmt und die anderen Bedingungen in der entsprechenden Einsatzbedingung noch nicht bestimmt sind; und erneutes Halten der resultierenden Daten, die provisorisch gehalten werden, in einer deterministischen Art zu dem Zeitpunkt des Auftretens des Falls, wenn wahr oder falsch für alle Bedingungen in der entsprechenden Einsatzbedingung mit wahr oder falsch für bereits bestimmte Bedingung übereinstimmen.
Ein Prozessor für einen Befehl mit einer Einsatzbedingung ent­ sprechend einer anderen Ausführungsform der Erfindung verarbeitet eine Mehrzahl von Befehlen, die jeweils eine entsprechende Ein­ satzbedingung unter einer Mehrzahl von Bedingungen aufweisen. Die obige Einsatzbedingung wird von irgendeiner der Bedingungen ge­ bildet, die zum letztendlichen Verarbeiten des entsprechenden Befehls notwendig sind. Der Prozessor weist eine Betriebseinheit, eine Datenhalteeinheit, eine Wahr-Falsch-Halteeinheit, eine Aus­ nahmesteuerschaltung und eine Einsatzsteuerschaltung auf. Die Be­ triebseinheit führt mindestens einen Befehl, der aus den obigen Befehlen ausgewählt worden ist, aus und bestimmt mindestens eine Bedingung, die aus den obigen Bedingungen ausgewählt worden ist. Die Datenhalteeinheit hält die durch die Ausführung des ausge­ wählten Befehls durch die Betriebseinheit produzierten Ergebnis­ daten deterministisch oder provisorisch. Die Wahr-Falsch-Halte­ einheit weist eine Mehrzahl von Eingängen bzw. Eingangsadressen entsprechend der Mehrzahl Bedingungen auf. Die Eingangsadressen halten jeweils eine erste Bedingungsinformation, daß eine ent­ sprechende Bedingung wahr ist, eine zweite Bedingungsinformation, daß die entsprechende Bedingung falsch ist, oder eine dritte Be­ dingungsinformation, daß wahr oder falsch für die entsprechende Bedingung unbestimmt ist. Die Ausführsteuerschaltung vergleicht die entsprechende Einsatzbedingung mit der Bedingungsinformation, die von der Wahr/Falsch-Halteeinheit erhalten wird, (i) steuert die Datenhalteeinheit zum deterministischen Halten der Ergebnis­ daten in einem ersten Fall, in dem wahr oder falsch für alle Be­ dingungen in der entsprechenden Einsatzbedingung entsprechend mit der Bedingungsinformation entsprechend den Bedingungen überein­ stimmt und (ii) steuert die Datenhalteeinheit zum provisorischen Halten der Ergebnisdaten in einem zweiten Fall, in dem wahr oder falsch für irgendeine Bedingung in der entsprechenden Einsatzbe­ dingung entsprechend mit der Bedingungsinformation, die dieser Bedingung entspricht, übereinstimmt, und die Bedingungsinforma­ tion entsprechend der anderen Bedingungen in der entsprechenden Einsatzbedingung die dritte Bedingungsinformation ist. Die Ein­ satzsteuerschaltung vergleicht die entsprechende Einsatzbedingung mit der Bedingungsinformation, die von der Wahr/Falsch-Halteein­ heit erhalten wird, und steuert die Datenhalteeinheit zum erneu­ ten Halten der Ergebnisdaten, die sie provisorisch gehalten hat, in einer deterministischen Weise zu dem Zeitpunkt des Einsatzes bzw. Auftretens des Falles, in dem wahr oder falsch für alle Be­ dingungen in der entsprechenden Einsatzbedingung entsprechend mit der Bedingungsinformation für alle Bedingungen übereinstimmt.
Bei dem Prozessor weist ein Ausführbefehl (bzw. ausführender Be­ fehl) zum Bestimmen von mindestens einer Bedingung aus den obigen Bedingungen bevorzugterweise eine entsprechende Einsatzbedingung auf. Jeder Eingang bzw. jede Eingangsadresse in der Wahr/Falsch- Halteeinheit hält deterministisch oder provisorisch Bedingungs­ information. Die Ausführsteuerschaltung vergleicht eine Einsatz­ bedingung, die dem Bedingungsbefehl entspricht, mit der Bedin­ gungsinformation, die von der Wahr/Falsch-Halteeinheit erhalten wird. Die Ausführsteuerschaltung (i) steuert weiter die Wahr/Falsch-Halteeinheit zum deterministischen Halten der ersten oder der zweiten Bedingungsinformation, die durch Bestimmung der ausgewählten Bedingung durch die Betriebseinheit basierend auf dem Bedingungsbefehl produziert worden ist, in einem dritten Fall, in dem wahr oder falsch für alle Bedingungen in der Ein­ satzbedingung, die dem Bedingungsbefehl entspricht, entsprechend mit der Bedingungsinformation übereinstimmen. Die Ausführsteuer­ schaltung (ii) steuert weiter die Wahr/Falsch-Halteeinheit zum provisorischen Halten der ersten oder zweiten Bedingungsinforma­ tion, die durch Bestimmung der ausgewählten Bedingung durch die Betriebseinheit, basierend auf dem Bedingungsbefehl produziert worden ist, in einem vierten Fall, in dem wahr oder falsch für irgendeine Bedingung aus der Einsatzbedingung, die dem Bedin­ gungsbefehl entspricht, entsprechend mit der Bedingungsinforma­ tion übereinstimmt, die dieser beliebigen Bedingung entspricht, und die Bedingungsinformation, die den anderen Bedingungen in der entsprechenden Einsatzbedingung entspricht, die dritte Bedin­ gungsinformation ist. Der Prozessor weist weiter eine zweite Ein­ satzsteuerschaltung auf, die die Einsatzbedingung, die dem Bedin­ gungsbefehl entspricht, mit der Bedingungsinformation, die durch die Wahr/Falsch-Halteeinheit erhalten wird, vergleicht und die Wahr/Falsch-Halteschaltung zum erneuten Halten der ersten oder der zweiten Bedingungsinformation, die durch die Wahr/Falsch-Hal­ teeinheit provisorisch gehalten worden ist, in deterministischer Weise steuert, zu dem Zeitpunkt des Einsatzes bzw. Auftretens, bei dem wahr oder falsch für alle Bedingungen der Einsatzbedin­ gung, die dem Bedingungsbefehl entspricht, mit der Bedingungsin­ formation, die allen Bedingungen entspricht, übereinstimmt.
Der Prozessor weist bevorzugterweise weiter eine Ausnahmespei­ cherschaltung und eine Ausnahmeverarbeitungseinheit auf. Die Aus­ nahmespeicherschaltung speichert die Erzeugung einer Ausnahme, wenn die Ausnahme während der Verarbeitung des ausgewählten Be­ fehls und in dem zweiten Fall auftritt. Die Ausnahmeverarbei­ tungseinheit verarbeitet eine Ausnahme, wenn die Ausnahmespei­ cherschaltung das Auftreten der Ausnahme zu dem Zeitpunkt des Einsatzes gespeichert hat.
Der Prozessor weist bevorzugterweise weiter eine Wahr/Falsch-Be­ rechnungsschaltung, eine Ausnahmespeicherschaltung, eine Zukünf­ tigwahr/Zukünftigfalsch-Halteeinheit, eine Wiederverarbeitungs­ einheit und eine Ausnahmeverarbeitungseinheit auf. Die Wahr/Falsch-Berechnungsschaltung addiert zu der Bedingungsinfor­ mation, die von der Wahr/Falsch-Halteeinheit erhalten wird, eine Bedingungsinformation, die durch die Bestimmung der ausgewählten Bedingung durch die Betriebseinheit erhalten wird. Die Ausnahme­ speicherschaltung speichert das Auftreten einer Ausnahme, wenn die Ausnahme während der Verarbeitung des ausgewählten Befehls und in dem zweiten Fall erzeugt wird. Die Zukünftigwahr/Zukünf­ tigfalsch-Halteeinheit hält die Bedingungsinformation, die von der Wahr/Falsch-Berechnungsschaltung erhalten wird. Die Ausnahme­ verarbeitungseinheit verarbeitet erneut die Befehle, die zum Zeitpunkt des obigen Einsatzes bereits verarbeitet worden sind, aus der Mehrzahl der Befehle, falls die Ausnahmespeicherschaltung das Auftreten der Ausnahme zu dem Zeitpunkt des Einsatzes gespei­ chert hat. Die Ausnahmeverarbeitungseinheit vergleicht eine Ein­ satzbedingung, die einem Befehl entspricht, der die Ausnahme ver­ ursacht hat, mit der Bedingungsinformation, die von der Zukünf­ tigwahr/Zukünftigfalsch-Halteeinheit erhalten wird, wenn die Aus­ nahme während des erneuten Verarbeitens des Befehls durch die Verarbeitungseinheit erneut erzeugt wird, und sie verarbeitet die Ausnahme, wenn wahr oder falsch für alle Bedingungen der entspre­ chenden Einsatzbedingung entsprechend mit der Bedingungsinforma­ tion, die den Bedingungen entspricht, übereinstimmt. Die Wahr/ Falsch-Halteeinheit akzeptiert Bedingungsinformation, die von der Wahr/Falsch-Berechnungsschaltung erhalten wird, nicht, wenn die Wiederverarbeitungseinheit den Befehl erneut verarbeitet, und andernfalls akzeptiert sie die Bedingungsinformation. Die Wahr/Falsch-Halteeinheit akzeptiert Bedingungsinformation, die von der Zukünftigwahr/Zukünftigfalsch-Halteeinheit erhalten wird, wenn die Wiederverarbeitungseinheit die erneute Verarbeitung des Befehls vervollständigt, bzw. abgeschlossen hat.
Darum wird entsprechend den Ausführungsformen der vorliegenden Erfindung der Befehl spekulativ ausgeführt und der Ergebniswert bzw. die Ergebnisdaten desselben werden provisorisch gehalten, ob vor der Ausführung des Befehls bestimmt ist, daß eine Einsatzbe­ dingung bereits erfüllt worden ist, oder nicht, oder falls es noch nicht bestimmt worden ist, ob die Einsatzbedingung erfüllt ist oder nicht. Die provisorisch gehaltenen Ergebnisdaten werden zum Zeitpunkt des Auftretens des Einsatzes (das heißt der Ein­ satzbedingung) erneut in deterministischer Weise gehalten. Derart kann der Befehl, von dem nicht bekannt ist, ob seine Einsatzbe­ dingung erfüllt ist oder nicht, spekulativ ausgeführt werden, und darum kann die Verarbeitungsgeschwindigkeit für Befehle erhöht werden.
Bevorzugterweise wird vor der Ausführung eines bedingten Befehls (d. h. eines Befehls, der nur beim Erfüllen einer bestimmten Be­ dingung ausgeführt wird) bestimmt, ob eine Einsatzbedingung (d. h. eine Bedingung, die zum Ausführen des Befehls erfüllt sein soll) erfüllt ist oder nicht, und der bedingte Befehl wird spekulativ ausgeführt und die bedingte Information wird provisorisch gehal­ ten, selbst falls die Einsatzbedingung noch nicht bestimmt ist. Darum können nicht nur gewöhnliche Befehle, sondern auch bedingte Befehle spekulativ ausgeführt werden.
Bevorzugterweise, wird, falls eine Ausnahme auftritt, wenn ein Befehl spekulativ ausgeführt wird, eine Ausnahmeverarbeitung zum Zeitpunkt eines Einsatzes ausgeführt. Dementsprechend wird eine übermäßige Ausnahmeverarbeitung nicht ausgeführt, und die Verar­ beitungsgeschwindigkeit für Befehle kann weiter erhöht werden.
Bevorzugterweise werden Befehle zum Zeitpunkt des Einsatzes er­ neut verarbeitet. Die Zukünftigwahr/Zukünftigfalsch-Halteeinheit wird befragt, wenn eine Ausnahme erneut erzeugt wird, und falls ein Befehl, der die Ausnahme verursacht hat, in der Zukunft fol­ gend (auszuführen) ist, wird die Ausnahmeverarbeitung ausgeführt. Derart werden die Befehle bis zu dem Einsatz erneut verarbeitet, und die Ausnahmeverarbeitung wird wie gewünscht ausgeführt, falls die Ausnahme erneut erzeugt wird, und daher kann die binäre Größe von Programmen am Anstieg gehindert werden, und genaue Ergebnis­ daten werden produziert.
Weitere Merkmale und Zweckmäßigkeiten der Erfindung ergeben sich aus der Beschreibung von Ausführungsbeispielen anhand der Figu­ ren.
Von den Figuren zeigen:
Fig. 1 ein Blockschaltbild, das den Aufbau eines Mikroprozessors entsprechend einer ersten Ausführungsform der Erfindung zeigt;
Fig. 2 eine Darstellung zum Gebrauch bei der Erläu­ terung eines Beispiels eines Befehlscode für den in Fig. 1 gezeigten Mikroprozessors;
Fig. 3 eine Darstellung zum Gebrauch bei der Erläu­ terung des Aufbaus eines TF-Registers in dem in Fig. 1 gezeigten Mikroprozessors;
Fig. 4 eine Darstellung zum Gebrauch bei der Erläu­ terung des Aufbaus eines Einsatzbedingungs­ abschnittes in einem Befehlscode für den in Fig. 1 gezeigten Mikroprozessor;
Fig. 5 eine Darstellung zum Gebrauch bei der Erläu­ terung des Konzepts der Funktion einer Aus­ nahmesteuerschaltung bei dem in Fig. 1 ge­ zeigten Mikroprozessor;
Fig. 6 eine Blockdarstellung, die den Aufbau der Ausnahmesteuerschaltung, die in Fig. 1 ge­ zeigt ist, zeigt;
Fig. 7 eine Blockdarstellung, die den Aufbau einer Einsatzbedingungsberechnungsschaltung in der in Fig. 6 gezeigten Ausführsteuerschaltung zeigt;
Fig. 8 ein Schaltbild, das den Aufbau einer Ver­ gleichsschaltung in der Einsatzbedingungsbe­ rechnungsschaltung, die in Fig. 7 gezeigt ist, zeigt;
Fig. 9 eine Blockdarstellung, die die Anordnung ei­ ner Folgeregisterdatei, einer Schattenregi­ sterdatei und einer Einsatzsteuerschaltung bei dem in Fig. 1 gezeigten Mikroprozessor zeigt;
Fig. 10 ein Ablaufdiagramm zum Gebrauch bei der Er­ läuterung eines Beispiels eines Programms;
Fig. 11 eine Programmliste, die Programme zum Ge­ brauch in dem in Fig. 1 gezeigten Mikropro­ zessor entsprechend dem in Fig. 10 gezeigten Programm zeigt;
Fig. 12A und 12B Blockdarstellung, die den Aufbau eines Mikroprozessors entsprechend einer zweiten Ausführungsform zeigen;
Fig. 13 ein Zeitablaufdiagramm zum Gebrauch bei der Erläuterung des Betriebs des in den Fig. 12A und 12B gezeigten Mikroprozessors;
Fig. 14 eine Blockdarstellung, die den Aufbau einer Gültigkeitsberechnungsschaltung bei dem in den Fig. 12A und 12B gezeigten Mikroprozessor zeigt;
Fig. 15 eine Blockdarstellung, die den Aufbau einer Schreibbestimmungsberechnungsschaltung in dem in den Fig. 12A und 12B gezeigten Mikropro­ zessor zeigt;
Fig. 16 eine Programmliste, die Programme zum Ge­ brauch in dem Mikroprozessor entsprechend einer dritten Ausführungsform zeigt;
Fig. 17 eine Blockdarstellung, die den Aufbau einer Einsatzbedingungsberechnungsschaltung in ei­ nem Mikroprozessor zum Verarbeiten von Befeh­ len entsprechend den in Fig. 16 gezeigten Programmen zeigt;
Fig. 18 eine Blockdarstellung, die den Aufbau eines Mikroprozessors entsprechend einer vierten Ausführungsform zeigt;
Fig. 19 eine Programmliste, die Programme zum Ge­ brauch in dem in Fig. 18 gezeigten Mikropro­ zessor zeigt;
Fig. 20 eine Darstellung zum Gebrauch bei der Erläu­ terung des Aufbaus einer Registerdatei in einem Mikroprozessor entsprechend einer fünf­ ten Ausführungsform;
Fig. 21 eine Blockdarstellung, die den Aufbau eines Mikroprozessors entsprechend einer sechsten Ausführungsform zeigt;
Fig. 22 eine Blockdarstellung, die die Anordnung ei­ ner Folgeregisterdatei, einer Schattenregi­ sterdatei, einer Einsatzsteuerschaltung und einer EP-Schaltung in dem in Fig. 21 gezeig­ ten Mikroprozessor zeigt;
Fig. 23 ein Zeitablaufdiagramm zum Gebrauch bei der Erläuterung von Betriebsabläufen in einer Ausnahmeverarbeitung durch den in Fig. 21 gezeigten Mikroprozessor;
Fig. 24 eine Programmliste, die Erholungscodes zeigt, die durch den in Fig. 21 gezeigten Mikropro­ zessor verarbeitet werden;
Fig. 25 eine Programmliste zum Aufrufen der Erho­ lungscodes bei dem in Fig. 21 gezeigten Mi­ kroprozessor;
Fig. 26 eine Programmliste zum Gebrauch bei der Er­ läuterung, warum bei der EP-Schaltung des in Fig. 21 gezeigten Mikroprozessors ein Rück­ schreibesperrmittel notwendig ist;
Fig. 27 eine Blockdarstellung, die den Aufbau eines Mikroprozessors entsprechend einer siebten Ausführungsform zeigt; und
Fig. 28 eine Blockdarstellung, die den Aufbau eines herkömmlichen Mikroprozessors zeigt.
Ein Verfahren zum Verarbeiten von Befehlen und eine Vorrichtung dazu entsprechend den Ausführungsformen der vorliegenden Erfin­ dung wird nun im Detail unter Bezugnahme auf die Figuren be­ schrieben. Es ist zu bemerken, daß dieselben Bezugszeichen wie in der Beschreibungseinleitung dieselben oder entsprechende Ab­ schnitte bezeichnen.
Erste Ausführungsform
Fig. 1 ist eine Blockdarstellung, die den Aufbau eines Mikropro­ zessors entsprechend einer ersten Ausführungsform zeigt.
Wie in Fig. 1 gezeigt ist, weist der Mikroprozessor vier ALUs 2A bis 2D, einen Speicher 3, einen Programmzähler 4 zum Anlegen der Adresse eines auszuführenden Befehls an den Speicher 3, eine Schaltung 5 zum Erhöhen (Inkrementieren) des Programmzählers 4, ein Befehlsregister 6 zum Halten eines aus dem Speicher 3 gehol­ ten Befehls, einen Befehlsdekoder 7 zum Dekodieren eines durch das Befehlsregister 6 gehaltenen Befehls und zum Erzeugen eines Steuersignals zur Steuerung der ALUs 2A bis 2D und eine Schaltung 9 zum Berechnen einer Zieladresse (Zieladressenberechnungsschal­ tung) auf.
Im Gegensatz zu dem in Fig. 28 gezeigten herkömmlichen Mikropro­ zessor weist der Mikroprozessor weiter ein Wahr/Falsch-Register (True/False-Register; TF-Register) 10, eine Ausführsteuerschal­ tung 11, eine Folgeregisterdatei (Folgeregisterspeicher) 12, eine Schattenregisterdatei (Schattenregisterspeicher) 13 und eine Ein­ satzsteuerschaltung 14 auf.
Fig. 2 ist eine Darstellung, die den Aufbau eines Befehlscode zeigt, der durch den Mikroprozessor verarbeitet werden kann. Wie in Fig. 2 gezeigt ist, wird der Befehlscode aus einem Befehlsaus­ führabschnitt (Befehlsbetriebsabschnitt) 15 und einem Einsatzbe­ dingungsabschnitt 16 gebildet. Der Befehlsausführabschnitt 15 entspricht einem Befehlscode, der durch einen herkömmlichen Mi­ kroprozessor verarbeitet werden kann. Der Einsatzbedingungsab­ schnitt 16 ist ein Abschnitt zum Spezifizieren von einer oder von mehreren Bedingungen, die zum Ausführen eines Befehls, der durch den Befehlsausführabschnitt 15 angezeigt wird, notwendig ist bzw. sind.
Fig. 3 ist eine Darstellung, die den Aufbau des TF-Registers 10 zeigt. Wie in Fig. 3 gezeigt ist, weist das TF-Register 10 m Ein­ gänge (Eingangsadressen bzw. Einträge) auf. Jeder Eingang wird von 2 Bit, nämlich dem Gültigkeitsbit Tv und dem Wert Td, gebil­ det und hält eine erste Bedingungsinformation, die enthält, ob eine Bedingung wahr ist, eine zweite Bedingungsinformation, die enthält, ob die Bedingung falsch ist, oder eine dritte Informa­ tion, die enthält, das wahr oder falsch für die Bedingung unbe­ stimmt ist.
Tabelle 1
Wie in Tabelle 1 gezeigt ist, ist, falls das Gültigkeitsbit Tv "1" ist und das Wertbit Td "1" ist, die Bedingung wahr (d. h. er­ füllt). Falls das Gültigkeitsbit Tv "1" ist und das Wertbit Td "0" ist, ist die Bedingung falsch (d. h. nicht erfüllt). Falls das Gültigkeitsbit Tv "0" ist, ist unabhängig von dem Wert des Wert­ bits Td wahr oder falsch für die Bedingung unbestimmt.
Mit dem in Fig. 2 gezeigten Befehlscode kann, falls zum Beispiel ein erster Eintrag in dem TF-Register 10 "wahr" und ein zweiter Eintrag außerdem "wahr" ist, der Mikroprozessor dazu angewiesen werden, im wesentlichen das Addieren eines Wertes, der durch das Register r14 gehalten wird, und eines Wertes, der durch das Regi­ ster r15 gehalten wird, auszuführen und den Ergebniswert in dem Register r6 zu speichern.
Fig. 4 zeigt den Aufbau eines Einsatzbedingungsabschnitts 16. Wie in Fig. 4 gezeigt ist, weist der Eingangsbedingungsabschnitt 16 m Eingänge (=Einträge), die den Eingängen (= Einträgen) in dem TF- Register 10 entsprechen, auf. Jeder Eintrag wird von 2 Bit gebil­ det, nämlich dem Gültigkeitsbit Cv und Wertbit Cd, wie in dem Fall des TF-Registers 10.
Tabelle 2
Wie in Tabelle 2 gezeigt ist, ist, falls das Gültigkeitsbit Cv "1" ist und das Wertbit Cd "1" ist, eine notwendige Bedingung für einen im wesentlichen auszuführenden Befehl, der durch den Be­ fehlsausführabschnitt 15 dargestellt bzw. angezeigt wird, das ein entsprechender Eintrag in dem TF-Register 10 "wahr" ist. Anders ausgedrückt, das ist nicht die einzige Bedingung für den Befehl, der durch den Befehlsausführabschnitt 15 angezeigt ist, um im wesentlichen ausgeführt zu werden.
Falls das Gültigkeitsbit Cv "1" und das Wertbit Cd "0" ist, ist eine notwendige Bedingung für die Ausführung des Befehls, der durch den Befehlsausführabschnitt 15 angezeigt ist, das ein ent­ sprechender Eintrag in dem TF-Register 10 "falsch" ist.
Falls das Gültigkeitsbit Cv "0" ist, muß ein durch den Befehls­ ausführabschnitt 15 angezeigter Befehl unabhängig von dem Wertbit Cd und unabhängig davon, ob ein entsprechender Eintrag in dem TF- Register 10 "wahr", "falsch" oder "unbestimmt" ist, ausgeführt werden.
Die Ausführsteuerschaltung 11 vergleicht einen Eintrag in dem Ausführsteuerabschnitt 16 und einen Eintrag in dem TF-Register 10 entsprechend und steuert die ALUs 2A bis 2D zum deterministischen Ausführen eines Befehls oder zum provisorischen Ausführen des Befehls als Reaktion auf das Ergebnis.
Fig. 5 ist eine Darstellung zum Gebrauch bei einer detaillierten Erläuterung des Konzepts der Funktion der Ausführsteuerschaltung 11.
Wie in Fig. 5 gezeigt ist, wird ein Befehl I unter drei gewissen (bestimmten) Bedingungen C1 bis C3 ausgeführt. Zum Beispiel wird, wenn die erste Bedingung C1 "wahr" ist, die zweite Bedingung C2 "wahr" ist und die dritte Bedingung C3 "falsch" ist, der Befehl I nur dann tatsächlich ausgeführt, wenn ein erster Eintrag in dem Einsatzbedingungsabschnitt 16 "wahr", ein zweiter Eintrag "wahr" und ein dritter Eintrag "falsch" hält.
  • (A) Falls die ersten bis dritten Einträge in dem TF-Register 10, die diesen Bedingungen C1 bis C3 entsprechen, "wahr" oder "falsch" halten und diese "wahr" und "falsch" mit den "wahr" oder "falsch" der ersten bis dritten Bedingungen C1 bis C3 überein­ stimmen, steuert die Ausführsteuerschaltung 11 die ALUs 2A bis 2D zum deterministischen Ausführen des Befehls I. Der Befehl I wird in diesem Fall speziell als daraus folgender Befehl oder kurz "Folgebefehl" bezeichnet.
  • (B) Falls die ersten bis dritten Einträge in dem TF-Register 10, die den ersten bis dritten Bedingungen C1 bis C3 entsprechen, jeweils "unbestimmt" halten, steuert die Ausführsteuerschaltung 11 die ALUs 2A bis 2D zum provisorischen (vorläufigen oder speku­ lativen) Ausführen des Befehls I. Der Befehl I wird in diesem Fall nachfolgend "spekulativer Befehl" genannt.
  • (C) Falls einige der ersten bis dritten Einträge in dem TF-Regi­ ster 10, die den ersten bis dritten Bedingungen C1 bis C3 entsprechen, "wahr" oder "falsch" halten, und falls die "wahr" und "falsch" entsprechend mit den "wahr" und "falsch" für die ersten bis dritten Bedingungen C1 bis C3 übereinstimmen, steuert die Ausführsteuerschaltung 11 die ALUs 2A bis 2D zum provisori­ schen Ausführen des Befehls I. Der Befehl I wird in diesem Fall ebenfalls "spekulativer Befehl" genannt.
Eine Folgeregisterdatei 12 und eine Schattenregisterdatei 13 wer­ den von 32 Registern 30 bzw. 31 gebildet. Die Folgeregisterdatei 12 entspricht der Registerdatei 1 des herkömmlichen Mikroprozes­ sors.
Die Folgeregisterdatei 12 hält deterministisch Ergebnisdaten, die durch das Ausführen eines Befehls durch die ALUs 2A bis 2D er­ zeugt werden. Die Schattenregisterdatei 13 hält provisorisch Er­ gebnisdaten, die durch die Ausführung eines Befehls durch die ALUs 2A bis 2D erzeugt werden.
Die Einsatzsteuerschaltung 14 hält den Einsatzbedingungsabschnitt 16 eines Befehls, der den in dem Schattenregister 13 gespeicher­ ten Ergebnisdaten entspricht. Die Einsatzsteuerschaltung 14 über­ wacht immer das TF-Register 10, vergleicht einen Eintrag in dem Einsatzbedingungsabschnitt 16 und einen Eintrag in dem TF-Regi­ ster 10 und überträgt Ergebnisdaten, die in der Schattenregister­ datei 13 gespeichert sind, in die Folgeregisterdatei 12, falls die Einträge entsprechend miteinander übereinstimmen.
Wie in Fig. 5 gezeigt ist, wird, falls zum Beispiel der spekula­ tive Befehl I ausgeführt wird und die Ergebnisdaten provisorisch in der Schattenregisterdatei 13 gespeichert sind, der Einsatzbe­ dingungsabschnitt 16 des Befehls I in der Steuerschaltung 14 ge­ speichert.
Dann, an dem Punkt, an dem die ersten bis dritten Einträge in dem TF-Register 10, die den ersten bis dritten Bedingungen C1 bis C3 entsprechen, die zum Ausführen des Befehls I notwendig sind, "wahr" oder "falsch" halten, überträgt, falls die "wahr" und "falsch" entsprechend mit "wahr" und "falsch" für die ersten bis dritten Bedingungen C1 bis C3, die zum Ausführen des Befehls I notwendig sind, übereinstimmen, die Einsatzsteuerschaltung 14, die in der Schattenregisterdatei 13 gespeicherten Ergebnisdaten in die Folgeregisterdatei 12.
Der Aufbau der Ausführsteuerschaltung 11, der Folgeregisterdatei 12, der Schattenregisterdatei 13 und der Einsatzsteuerschaltung 14 werden nun detaillierter beschrieben.
Fig. 6 ist eine Blockdarstellung, die den Aufbau der Ausführsteu­ erschaltung 11 zeigt. Wie in Fig. 6 gezeigt ist, weist die Aus­ führsteuerschaltung 11 eine Einsatzbedingungsberechnungsschaltung 17, einen Inverter 18, ein UND-Gatter 19A und ein ODER-Gatter 19B auf.
Fig. 7 ist ein Blockschaltbild, das den Aufbau der Einsatzbedingungsberech­ nungsschaltung 17 zeigt. Wie in Fig. 7 gezeigt ist, weist die Einsatzbedingungsberechnungsschaltung 17 Vergleichsschaltungen 20 und 21 und UND-Gatter 22 und 23 auf. Bei der in Fig. 7 gezeigten Einsatzbedingungsberechnungsschaltung weisen der Einsatzbedin­ gungsabschnitt 16 und das TF-Register 10 jeweils 2 Einträge auf.
Fig. 8 ist ein Schaltbild, das den Aufbau der Vergleichsschaltung 20 oder 21 in der Einsatzbedingungsberechnungsschaltung 17 zeigt. Wie in Fig. 8 gezeigt ist, weist die Vergleichsschaltung 20 oder 21 einen Inverter 24, einen NAND-Gatter 25, ein Exklusiv-NOR-Gat­ ter 26 und NAND-Gatter 27 und 28 auf.
Die Vergleichsschaltungen 20 und 21 vergleichen einen Eintrag in dem Einsatzbedingungsabschnitt 16 und einen entsprechenden Ein­ trag in dem TF-Register und erzeugen abhängig von dem Ergebnis ein Gültigkeitsbit Vi und einen Wert Di.
Tabelle 3 ist eine Wahrheitstabelle, die den Betrieb der Ver­ gleichsschaltung 20 oder 21 zeigt.
Tabelle 3
Wie in Tabelle 3 gezeigt ist, erzeugen, falls das Gültigkeitsbit Cv von einem Eintrag in dem Einsatzbedingungsabschnitt "0" ist, die Vergleichsschaltungen 20 oder 21 ein Gültigkeitsbit Vi mit "1" und ein Wertbit Di mit "1", unabhängig von den Werten des Gültigkeitsbits Tv und Wertes Td.
Falls das Gültigkeitsbit Cv eines Eintrags in dem Einsatzbedin­ gungsabschnitt 16 "1" ist und das Gültigkeitsbit Tv eines ent­ sprechenden Eintrags in dem TF-Register 10 "0" ist, erzeugt die Vergleichsschaltung 20 oder 21 ein Gültigkeitsbit Vi mit "0", un­ abhängig von den Werten der Wertbits Cd und Td diese Einträge.
Falls das Gültigkeitsbit Cv eines Eintrags in dem Einsatzbedin­ gungsabschnitt 16 und das Gültigkeitsbit Tv eines entsprechenden Eintrags in dem TF-Register 10 beide "1" sind, und falls ihre Wertbits Cd und Td miteinander gleich sind, erzeugt die Ver­ gleichsschaltung 20 oder 21 ein Gültigkeitsbit Vi mit "1" und ein Wertbit Di mit "1". Falls die Wertbits Cd und Td dieser Einträge unterschiedlich sind, erzeugt die Vergleichsschaltung 20 oder 21 ein Gültigkeitsbit Vi mit "1" und ein Wertbit Di mit "0".
Die Einsatzbedingungsberechnungsschaltung 17 erzeugt ein Gültig­ keitsbit V mit "1" nur dann, wenn die Gültigkeitsbits Vi beider Vergleichsschaltungen 20 und 21 "1" sind. Die Einsatzbedingungs­ berechnungsschaltung 17 erzeugt ein Wertbit D mit "1" nur dann, wenn die Wertbits Di beider Vergleichsschaltungen 20 und 21 "1" sind.
Darum wird, falls das Wertbit V der Einsatzbedingungsberechnungs­ schaltung 17 "0" ist, ein Schattenregisterschreibbestimmungsbit SD mit "1" erzeugt. Das Gültigkeitsbit V und das Wertbit D der Einsatzbedingungsberechnungsschaltung 17 sind beide "1" oder das Gültigkeitsbit V ist "0", dann wird ein Befehlsgültigkeitsbit IV mit "1" produziert.
Wie aus der obigen Beschreibung zu ersehen ist, erzeugt die Aus­ führsteuerschaltung 11, falls alle Einträge in dem Einsatzbedin­ gungsabschnitt 16 "nicht darum kümmern" halten (falls ein ent­ sprechender Befehl in dem Befehlsausführabschnitt bedingungslos auszuführen ist), ein Schattenregisterschreibbestimmungsbit SD mit "0" und ein Befehlsgültigkeitsbit IV mit "1".
Einige Einträge in dem Einsatzbedingungsabschnitt 16 halten "wahr" oder "falsch" und entsprechende Einträge in dem TF-Regi­ ster halten "unbestimmt", dann erzeugt die Ausführsteuerschaltung 11 das Schattenregisterschreibbestimmungsbit SD mit "1" und das Befehlsgültigkeitsbit IV mit "1". Falls einige Einträge in dem Einsatzbedingungsabschnitt 16 "wahr" oder "falsch" halten und einige der entsprechenden Einträge in dem TF-Register 10 "wahr" oder "falsch" halten, und die "wahr" und "falsch" in dem Einsatz­ bedingungsabschnitt 16 entsprechend mit den "wahr" und "falsch" in dem TF-Register 10 übereinstimmen, erzeugt die Ausführsteuer­ schaltung 11 das Schattenregisterschreibbestimmungsbit SD mit "0" und das Befehlsgültigkeitsbit IV mit "1".
Bei einem Befehlsgültigkeitsbit IV mit "1" werden die erzeugten Ergebnisdaten in der Folgeregisterdatei 12 gespeichert. Falls das Schattenregisterschreibbestimmungsbit SD "0" ist und das Befehls­ gültigkeitsbit IV "0" ist, wird der Befehl nicht ausgeführt oder die durch das Ausführen des Befehls erzeugten Ergebnisdaten wer­ den weder in der Folgeregisterdatei 12 noch dem Schattenregister 13 gespeichert. Falls das Schattenregisterschreibbestimmungsbit SD "1" ist und das Befehlsgültigkeitsbit IV "1" ist, werden die durch das Ausführen eines Befehls erzeugten Ergebnisdaten provi­ sorisch in der Schattenregisterdatei 13 gespeichert.
Fig. 9 ist eine Blockdarstellung, die den Aufbau der Folgeregi­ sterdatei 12, der Schattenregisterdatei 13 und der Einsatzsteuer­ schaltung 14 zeigt.
Wie in Fig. 9 gezeigt ist, wird die Folgeregisterdatei (Folgere­ gisterspeicher) 12 von 32 Folgeregistern 30 gebildet. Die Schat­ tenregisterdatei (Schattenregisterspeicher) 13 wird von 32 Schat­ tenregistern 31 gebildet.
Die Einsatzsteuerschaltung 14 wird von 32 Einträgen bzw. Ein­ gangsadressen, die den 32 Folgeregistern 30 und den 32 Schatten­ registern 31 entsprechen, gebildet. Jeder Eintrag weist einen Einsatzbedingungsspeicherabschnitt 32, eine Einsatzbedingungsbe­ rechnungsschaltung 17 und ein UND-Gatter 33 auf.
Wenn ein spekulativer Befehl ausgeführt wird und die Ergebnisda­ ten provisorisch in dem Schattenregister 31 in der Schattenregi­ sterdatei 13 gespeichert werden, hält der Einsatzbedingungsspei­ cherabschnitt 32 den dem Befehl entsprechenden Einsatzbedingungs­ abschnitt 16.
Die Einsatzbedingungsberechnungsschaltung 17, die identisch mit der Einsatzbedingungsberechnungsschaltung 17 in der oben be­ schriebenen Einsatzsteuerschaltung 11 ist, vergleicht den Ein­ satzbedingungsabschnitt 16, der durch den Einsatzbedingungsspei­ cherabschnitt 32 und das TF-Register 10 gehalten wird, und er­ zeugt ein Gültigkeitsbit V und ein Wertbit D basierend auf dem Ergebnis. Das UND-Gatter 33 nimmt ein logisches Produkt (UND-Ver­ knüpfung) des Gültigkeitsbits V und des Wertes D der Einsatzbe­ dingungsberechnungsschaltung 17 zum Anlegen desselben an das Gate eines Übertragungsgatters 34, das zwischen das Folgeregister 30 und das Schattenregister 31 verbunden ist.
Die Einsatzbedingungsberechnungsschaltung 17 überwacht immer das TF-Register 10 und erzeugt ein Gültigkeitsbit V mit "1" und ein Wertbit D mit "1", wenn wahr/falsch in dem Einsatzbedingungsab­ schnitt 16, der durch den Einsatzbedingungsspeicherabschnitt 32 gehalten wird, entsprechend mit wahr/falsch in dem TF-Register 10 übereinstimmt. Dieses schaltet das Übertragungsgatter 34 an und die Ergebnisdaten in dem Schattenregister 31 werden in das Folge­ register 30 übertragen.
Der Betrieb des Mikroprozessors entsprechend der ersten Ausfüh­ rungsform wird nun basierend auf dem in Fig. 10 gezeigten Pro­ gramm beschrieben.
Fig. 11 ist eine Programmliste (Programmlisting) zum Betrieb des Mikroprozessors basierend auf dem in Fig. 10 gezeigten Programm.
In Fig. 11 wird jede Zeile von einer Mehrzahl von Befehlscodes gebildet. Jeder Befehlscode wird von einem Befehlsausführab­ schnitt 15 und einem Einsatzbedingungsabschnitt 16 gebildet. Be­ fehle, die durch Befehlsausführabschnitte 15 der Befehlscodes in derselben Zeile angezeigt sind, werden zu der Zeit ausgeführt.
Es ist zu bemerken, daß die Befehlscodes voneinander durch ";" getrennt sind. Der Befehlsausführabschnitt 15 und der Einsatz­ bedingungsabschnitt 16 sind durch "?" getrennt.
"Immer" in dem Einsatzbedingungsabschnitt 16 zeigt an, daß die Befehle I1, I2, C1 oder C2 in dem Befehlsausführabschnitt 15 im­ mer bedingungslos unabhängig von wahr/falsch in dem TF-Register 10 auszuführen sind.
Tf[i] zeigt an, daß ein Befehl, der durch einen Befehlsausführ­ abschnitt 15 angezeigt wird, nur dann auszuführen ist, falls der i-te Eintrag in dem TF-Register 10 "wahr" ist. /TF[i] zeigt an, daß ein Befehl in dem Befehlsausführabschnitt 15 nur dann auszu­ führen ist, wenn der i-te Eintrag in dem TF-Register 10 "falsch" ist.
TF[1](2] definiert zum Beispiel das Ausführen eines Befehls in dem Befehlsausführabschnitt 15 nur dann, wenn der erste und der zweite Eintrag in dem TF-Register 10 "wahr" sind. TF[1]&/TF[2] definiert, daß ein Befehl in dem Befehlsausführabschnitt 15 nur dann auszuführen ist, wenn der erste Eintrag in dem TF-Register 10 "wahr" und der zweite Eintrag "falsch" ist.
Die Blöcke K1, L1 bis L3 in Fig. 11 entsprechen den Basisblöcken K1, L1 bis L3 in Fig. 10. Die Blöcke K1, L1 bis L3 verzweigen in Basisblöcke M1 bis M3.
In dem ersten Zyklus werden vier Befehle I1 bis I4 in der ersten Zeile zu einer Zeit ausgeführt.
Mit dem Befehlscode "immer?I1" wird der Befehl I1 unbedingt bzw. bedingungslos ausgeführt. Genauer sind alle Einträge in den Ein­ satzbedingungsabschnitten 16 des Befehlscodes "nicht darum küm­ mern" und das Gültigkeitsbit Cv jedes Eintrags ist "0".
Die Einsatzbedingungsberechnungsschaltung 17 erzeugt darum ein Gültigkeitsbit V und ein Wertbit D jeweils mit "1", ohne Rück­ sicht auf die Gültigkeitsbits Tv und Td jedes Eintrags in dem TF- Register 10. Derart erzeugt die Ausführsteuerschaltung 11 ein Schattenschreibbestimmungsbit SD mit "0" und ein Befehlsgültig­ keitsbit IV mit "1".
Dementsprechend werden die Daten der Register r10 und r11 in der Folgeregisterdatei 12 addiert, und die Ergebnisdaten werden de­ terministisch in dem Register r2 in der Folgeregisterdatei 12 gespeichert.
Mit dem Befehlscode "TF[1]?I2" ist der erste Eintrag in dem Ein­ satzbedingungsabschnitt 16 des Befehlscodes "wahr" und das Gül­ tigkeitsbit Cv und das Wertbit Cd sind beide "1". Die Gültig­ keitsbits Cv, die nicht die des ersten Eintrags in dem Einsatz­ bedingungsabschnitt 16 sind, sind alle "0".
Da an diesem Punkt der erste Eintrag in dem TF-Register 10 "unbe­ stimmt" ist und das Gültigkeitsbit Tv "0" ist, erzeugt die Aus­ führsteuerschaltung 11 das Schattenregisterschreibbestimmungsbit SD mit "1" und das Befehlsgültigkeitsbit IV mit "0". Die Daten der Register r12 und r13 in der Folgeregisterdatei 12 werden ad­ diert, und die Ergebnisdaten werden provisorisch in dem Register r4 in der Schattenregisterdatei 13 gespeichert.
Zu dieser Zeit sind die Daten des Einsatzbedingungsabschnitts 16, die durch das Befehlsregister 6 gehalten werden, in dem Einsatz­ bedingungsspeicherabschnitt 32 des vierten Eintrags (der vierten Eingangsadresse) in der Einsatzsteuerschaltung 14 gespeichert, der dem Schattenregister r4 entspricht, das die Ergebnisdaten speichert.
Mit dem Befehlscode "/TF[1]?13" ist der erste Eintrag in dem Ein­ satzbedingungsabschnitt 16 des Befehlscodes "falsch" und das Gül­ tigkeitsbit Cv ist "1". Da der erste Eintrag in dem TF-Register 10 wie oben beschrieben "unbestimmt" ist, werden die Daten des Registers r13 von den Daten des Registers r12 in der Folgeregi­ sterdatei 12 entsprechend dem Befehl I3 subtrahiert und die Er­ gebnisdaten werden provisorisch in dem Schattenregister r5 in der Schattenregisterdatei 13 gespeichert.
Zu dieser Zeit sind die Daten des Einsatzbedingungsabschnitts 16 außerdem in dem Einsatzbedingungsspeicherabschnitt 32 des fünften Eintrags (der fünften Eingangsadresse) in der Einsatzsteuerschal­ tung 14 gespeichert, der dem Schattenregister r5 entspricht, das die Ergebnisdaten speichert.
Mit dem Befehlscode "Tf[1][2]?14" sind der erste und der zwei­ te Eintrag in dem Einsatzbedingungsabschnitt 16 des Befehlscodes beide "wahr". Zu dieser Zeit werden, da der erste und der zweite Eintrag in dem TF-Register 10 "unbestimmt" sind, die Daten der Register r14 und r15 in der Folgeregisterdatei 12 entsprechend dem Befehl I4 addiert und die Ergebnisdaten werden provisorisch in dem Register r6 in der Schattenregisterdatei 13 gespeichert.
Zu der Zeit sind die Daten des Einsatzbedingungsabschnittes 16 außerdem in dem Einsatzbedingungsspeicherabschnitt 32 des sech­ sten Eintrags (Eingangsadresse) in der Einsatzsteuerschaltung 14 gespeichert.
In dem nächsten Zyklus wird der Bedingungsbefehl C1 entsprechend dem Befehlscode "immer?C1" immer ausgeführt. Genauer wird, falls der Wert bzw. die Daten des Registers r2 kleiner als der Wert bzw. die Daten des Registers r3 ist bzw. sind, der erste Eintrag in dem TF-Register 10 "wahr" oder andernfalls "falsch" gemacht.
Entsprechend des Befehlscodes "immer?C2" wird, falls der Wert bzw. die Daten der Register r4 und r5 gleich sind, der zweite Eintrag in dem TF-Register 10 "wahr" oder andernfalls "falsch" gemacht.
Zu der Zeit überwacht die Einsatzsteuerschaltung 14 das TF-Regi­ ster 10 und vergleicht den in dem Einsatzbedingungsspeicherab­ schnitt 32 gespeicherten Einsatzbedingungsabschnitt 16 und das TF-Register 10.
Falls der erste Eintrag in dem TF-Register 10 "wahr" ist, erzeugt die Einsatzbedingungsberechnungsschaltung 17 der vierten Ein­ gangsadresse in der Einsatzsteuerschaltung 14 das Gültigkeitsbit V und das Wertbit D beide mit "1". Das logische Produkt (UND-Ver­ knüpfung) des Gültigkeitsbits V und des Wertbits D werden an das Gate des Übertragungsgatters 34 durch das UND-Gatter 33 angelegt und das Übertragungsgatter 34 wird angeschaltet. Die Daten bzw. der Wert des Register r4 in der Schattenregisterdatei 13 werden so in das entsprechende Register r4 in der Folgeregisterdatei 12 übertragen.
Zu dieser Zeit bzw. dabei wird der Wert des Registers r5 in der Schattenregisterdatei 13 keiner Verarbeitung unterworfen. Falls dagegen der erste Eintrag in dem TF-Register 10 "falsch" ist, werden die Daten des Registers r5 in der Schattenregisterdatei 13 in das entsprechende Register r5 in der Folgeregisterdatei 12 durch das Übertragungsgatter 34 übertragen.
Zu dieser Zeit bzw. dabei wird der Wert des Registers r4 in der Schattenregisterdatei 13 keiner Verarbeitung unterworfen.
Falls der erste und der zweite Eintrag in dem TF-Register 10 bei­ de "wahr" sind, wird der Wert des Registers r6 in der Schatten­ registerdatei 13 in das entsprechende Register r6 in der Folgere­ gisterdatei 12 durch das Übertragungsgatter 34 übertragen.
Falls mindestens einer der ersten und zweiten Einträge in dem TF- Register 10 "falsch" ist, wird jedoch der Wert des Registers r6 in der Schattenregisterdatei 13 keiner Verarbeitung unterworfen.
Als nächstes wird in dem dritten Zyklus entsprechend des Befehls­ codes "TF[1]&/TF[2]?J1", falls der erste Eintrag in dem TF-Regi­ ster 10 "wahr" und der zweite Eintrag "falsch" ist, ein unbeding­ ter Verzweigungsbefehl J1 ausgeführt. Genauer wird, falls die Bedingung C1 "wahr" ist und die Bedingung C2 "falsch" ist, ein Adreßbestimmungsbasisblock M2 in dem Programmzähler 4 gespei­ chert.
Falls der erste Eintrag in dem TF-Register 10 "falsch" ist, wird ein unbedingter Verzweigungsbefehl J2 ausgeführt. Genauer wird, falls die Bedingung C1 "falsch" ist, ein Adreßbestimmungsbasis­ block M1 in dem Programmzähler 4 gespeichert.
Falls der erste und der zweite Eintrag in dem TF-Register 10 bei­ de "wahr" sind, wird ein unbedingter Verzweigungsbefehl J3 ausge­ führt. Genauer wird, falls die Bedingungen C1 und C2 beide "wahr" sind, ein Adreßbestimmungsbasisblock M3 in dem Programmzähler 4 gespeichert.
Wie oben beschrieben wurde, wird entsprechend der ersten Ausfüh­ rungsform ein Befehl, der unter einer oder unter mehreren Bedin­ gungen tatsächlich auszuführen ist, ausgeführt, bevor wahr/falsch der Bedingungen bestimmt sind. Entsprechend des in Fig. 11 ge­ zeigten Programmes wird zum Beispiel der Befehl I2, der unter der Bedingung C1 auszuführen ist, in dem ersten Zyklus spekulativ (das heißt ohne Rücksicht auf das Erfüllen der Bedingung) ausge­ führt, bevor wahr/falsch für die Bedingung C1 bestimmt ist. Der Befehl I3, der auch unter der Bedingung C1 auszuführen ist, wird in dem ersten Zyklus spekulativ ausgeführt, bevor wahr/falsch der Bedingung bestimmt ist. Der Befehl I4, der unter den Bedingungen C1 und C2 auszuführen ist, wird spekulativ in dem ersten Zyklus ausgeführt, bevor wahr/falsch für diese Bedingungen C1 und C2 bestimmt sind.
Darum werden solche spekulativen Befehle I2 bis I4, die mit dem herkömmlichen Mikroprozessor in dem ersten Zyklus nicht ausge­ führt werden können, ausgeführt und die ALUs 2A bis 2D werden effektiv genutzt. Dieses verbessert die Verarbeitungsgeschwindig­ keit für die Befehle.
Es ist zu bemerken, daß bei der ersten Ausführungsform der Folge­ registerspeicher 12 und der Schattenregisterspeicher 13 der Da­ tenhalteeinheit entsprechen, die deterministisch (festgelegt) oder provisorisch (vorläufig) die Ergebnisdaten bzw. den Ergeb­ niswert hält.
Zweite Ausführungsform
Fig. 12A und 12B sind Blockdarstellungen, die den Aufbau eines Mikroprozessors entsprechend einer zweiten Ausführungsform zei­ gen.
Der Mikroprozessor entsprechend der zweiten Ausführungsform weist eine Pipeline-Anordnung von Mikroprozessoren entsprechend der ersten Ausführungsform auf.
Wie die Fig. 12A und 12B zeigen, verarbeitet der Mikroprozessor im wesentlichen eine Mehrzahl von Befehlen, die unter einer oder unter mehreren Bedingungen auszuführen sind, durch vier Verarbei­ tungsstufen S1 bis S4.
Wie in dem Fall des Mikroprozessors entsprechend der ersten Aus­ führungsform weist der Mikroprozessor vier ALUs 2A bis 2D, einen Speicher 3, einen Programmzähler 4, eine Erhöhungsschaltung 5, ein Befehlsregister 6, einen Befehlsdekoder 7, eine Zieladressen­ berechnungsschaltung 9, ein TF-Register 10, eine Ausführsteuer­ schaltung 11, eine Folgeregisterdatei 12, eine Schattenregister­ datei 13 und eine Einsatzsteuerschaltung 14 auf.
Fig. 13 ist ein Zeitablaufdiagramm zum Gebrauch bei der Erläute­ rung des Betriebs des Mikroprozessors.
Wie die Fig. 12 und 13 zeigen, wird in der ersten Verarbeitungs­ stufe S1 ein Befehl, der durch den Programmzähler 4 bestimmt bzw. bezeichnet ist, aus dem Speicher 3 geholt und in dem Befehlsregi­ ster 6 gespeichert.
In der zweiten Verarbeitungsstufe S2 wird der in dem Befehlsregi­ ster 6 gespeicherte Befehl durch den Befehlsdekoder 7 dekodiert und als Reaktion auf ein Steuersignal von dem Befehlsdekoder 7 werden vorgeschriebene Daten aus der Folgeregisterdatei 12 oder der Schattenregisterdatei 13 gelesen.
Der Mikroprozessor weist weiter ein Register 35 zum Speichern von Signalen, die durch den Befehlsdekoder 7 erzeugt worden sind, zur Steuerung der ALUs 2A bis 2D und Register 36 und 37 zum Speichern von aus der Folgeregisterdatei 12 oder der Schattenregisterdatei 13 gelesenen Daten.
In der dritten Verarbeitungsstufe S3 werden in den Registern 36 und 37 gespeicherte Daten durch die ALUs 2A bis 2D als Reaktion auf ein Steuersignal, das in dem ALU-Steuersignalregister 35 ge­ speichert ist, verarbeitet.
In der vierten Verarbeitungsstufe S4 werden die durch die ALUs 2A und 2D erzeugten Ergebnisdaten in die Folgeregisterdatei oder die Schattenregisterdatei 13 geschrieben oder Bedingungsinformation mit wahr oder falsch, die durch die ALUs 2A bis 2D erzeugt worden ist, wird in das TF-Register 10 geschrieben und Daten in dem Ein­ satzbedingungsabschnitt 16 werden in die Einsatzsteuerschaltung 14 geschrieben.
Es folgt eine Beschreibung des einzigartigen Aufbaus des Mikro­ prozessors, der Befehle mit Einsatzbedingungen unter Pipeline- Steuerung verarbeitet.
Wie die Fig. 12A und 12B zeigen, weist der Mikroprozessor weiter eine Ausführsteuerschaltung 11, ein Einsatzbedingungsregister 38, ein erstes Gültigkeitsregister 39 und ein erstes Schreibbestim­ mungsregister 40 auf.
Die Ausführsteuerschaltung 11 ist identisch zu der in der ersten Ausführungsform, sie vergleicht Einsatzbedingungsabschnitt 16 und TF-Register 10 und erzeugt ein Befehlsgültigkeitsbit IV und Schattenregisterschreibbestimmungsbit SD basierend auf dem Ergeb­ nis (des Vergleichs).
Das Einsatzbedingungsregister 38 hält den Einsatzbedingungsab­ schnitt 16, der einem Befehl entspricht, der durch die ALUs 2A bis 2D ausgeführt wird. Das erste Gültigkeitsregister 39 hält ein Befehlsgültigkeitsbit IV, das durch die Ausführsteuerschaltung 11 erzeugt worden ist und dem Befehl entspricht. Das erste Schreib­ bestimmungsregister 40 hält ein Schattenregisterschreibbestim­ mungsbit SD, das durch die Ausführsteuerschaltung 11 erzeugt wor­ den ist und dem Befehl entspricht. Der Mikroprozessor weist wei­ ter eine Einsatzbedingungsberechnungsschaltung 41, eine Gültig­ keitsberechnungsschaltung 42, eine Schreibbestimmungsberech­ nungsschaltung 43, ein zweites Gültigkeitsregister 44 und ein zweites Schreibbestimmungsregister 45 auf.
Die Einsatzbedingungsberechnungsschaltung 41 ist identisch mit der in Fig. 7 gezeigte Einsatzbedingungsberechnungsschaltung 17, sie vergleicht den Einsatzbedingungsabschnitt 16, der in dem Ein­ satzbedingungsregister 38 gespeichert ist, und das TF-Register 10 und erzeugt ein Gültigkeitsbit V und ein Wertbit D basierend auf dem Ergebnis.
Fig. 14 ist eine Blockdarstellung, die den Aufbau einer Gültig­ keitsberechnungsschaltung 42 zeigt. Wie in Fig. 14 gezeigt ist, weist die Gültigkeitsberechnungsschaltung 42 ein UND-Gatter 46, das das Gültgkeitsbit V und das Wertbit D von der Einsatzbedin­ gungsberechnungsschaltung 41 empfängt, und ein ODER-Gatter 48, das die Ausgabe des UND-Gatters 46 und das Gültigkeitsbit V über einen Inverter 47 empfängt, und ein UND-Gatter 49, das die Aus­ gabe des ODER-Gatters 48 und das Befehlsgültigkeitsbit IV von dem ersten Gültigkeitsregister 39 empfängt, auf.
Die folgende Tabelle 4 erläutert die Funktion der Gültigkeitsbe­ rechnungsschaltung 42.
Tabelle 4
Wie in Tabelle 4 gezeigt ist, ist, wenn die Einsatzbedingungsbe­ rechnungsschaltung 41 sowohl das Gültigkeitsbit V als auch das Wertbit D beide auf "1" erzeugt, die Ausgabe des ODER-Gatters 48 "1" und darum wird das in dem ersten Gültigkeitsregister 39 ge­ speicherte Befehlsgültigkeitsbit IV über das UND-Gatter 49 an das zweite Gültigkeitsregister 44 übertragen.
Die Einsatzbedingungsberechnungsschaltung 41 erzeugt das Gültig­ keitsbit V auf "1" und das Wertbit D auf "0", dann ist die Aus­ gabe des ODER-Gatters 48 "0" und das Befehlsgültigkeitsbit IV mit "0" wird in dem zweiten Gültigkeitsregister 44 gespeichert.
Wenn die Einsatzbedingungsberechnungsschaltung 41 das Gültig­ keitsbit V mit "0" erzeugt, ist die Ausgabe des ODER-Gatters 48 "1", und das Befehlsgültigkeitsbit IV, das in dem ersten Gültig­ keitsregister 39 gespeichert ist, wird über das UND-Gatter 49 an das zweite Gültigkeitsregister 44 übertragen.
Fig. 15 ist eine Blockdarstellung, die den Aufbau der Schreibbe­ stimmungsberechnungsschaltung 43 zeigt. Wie in Fig. 15 gezeigt ist, weist die Schreibbestimmungsberechnungsschaltung 43 einen Inverter 50, der das Gültigkeitsbit V von der Einsatzbedingungs­ berechnungsschaltung 41 empfängt, und ein UND-Gatter, das die Ausgabe des Inverters 50 und das Schattenregisterschreibbestim­ mungsbit SD von dem Schreibbestimmungsregister 40 empfängt, auf.
Die folgende Tabelle 5 erläutert die Funktion der Schreibbestim­ mungsberechnungsschaltung 43.
Tabelle 5
Wie in Tabelle 5 gezeigt ist, wird, wenn die Einsatzbedingungsbe­ rechnungsschaltung 41 das Gültigkeitsbit V mit "1" erzeugt, die Ausgabe des Inverters 50 "0" und daher wird das Schattenregister­ schreibbestimmungsbit SD mit "0" in dem zweiten Schreibbestimmungsregister 45 gespeichert.
Wenn die Einsatzbedingungsberechnungsschaltung 41 das Gültig­ keitsbit V mit "0" erzeugt, ist die Ausgabe des Inverters 50 "1" und daher wird das Schattenregisterschreibbestimmungsbit SD, das in dem ersten Schreibbestimmungsregister 40 gespeichert ist, an das zweite Schreibbestimmungsregister 45 durch das UND-Gatter 51 übertragen.
Der Mikroprozessor weist weiter eine Registerdatei-Schreibsteuer­ schaltung 52 auf. Die Registerdatei-Schreibsteuerschaltung 52 führt eine solche Steuerung aus, das, wenn das Befehlsgültig­ keitsbit IV, das in dem zweiten Gültigkeitsregister 44 gespei­ chert ist, "1" und das Schattenregisterschreibbestimmungsbit SD, das in dem zweiten Schreibbestimmungsregister 45 gespeichert ist, "0" ist, die entsprechend des Befehls durch die ALUs 2A bis 2D erzeugten Ergebnisdaten in die Folgeregisterdatei 12 geschrieben werden.
Wenn das Befehlsgültigkeitsbit IV in dem zweiten Gültigkeitsregi­ ster 44 "1" und das Schattenregisterschreibbestimmungsbit SD, das in dem zweiten Schreibbestimmungsregister 45 gespeichert ist, "1" ist, dann führt die Registerdatei-Schreibsteuerschaltung 52 eine solche Steuerung aus, daß die entsprechend des Befehls durch ALUs 2A bis 2D erzeugten Ergebnisdaten in die Schattenregisterdatei 13 geschrieben werden.
Wenn das Befehlsgültigkeitsbit IV, das in dem zweiten Gültig­ keitsregister 44 gespeichert ist, "0" ist, führt die Registerda­ tei-Schreibsteuerschaltung 52 eine solche Steuerung aus, daß die Ergebnisdaten, die durch die ALUs 2A bis 2D entsprechend des Be­ fehls erzeugt worden sind, weder in die Folgeregisterdatei 12 noch in die Schattenregisterdatei 13 geschrieben werden.
Der Betrieb des Mikroprozessors entsprechend der zweiten Ausfüh­ rungsform wird nun in Verbindung mit den Fig. 12 und 13 beschrieben.
In dem ersten Takt wird der erste Befehl aus dem Speicher 3 in der ersten Verarbeitungsstufe 51 geholt und in dem Befehlsregi­ ster 6 gespeichert.
Dann wird in dem zweiten Takt der erste Befehl, der in dem Be­ fehlsregister 6 gespeichert ist, durch den Befehlsdekoder 7 in der zweiten Verarbeitungsstufe S2 dekodiert und Daten in der Fol­ geregisterdatei 12 oder der Schattenregisterdatei 13 werden als Reaktion auf ein Steuersignal von dem Befehlsdekoder 7 ausgelesen und in dem Register 36 oder 37 gespeichert. Die Ausführsteuer­ schaltung 11 in der zweiten Verarbeitungsstufe S2 erzeugt das Befehlsgültigkeitsbit IV und das Schattenregisterschreibbestim­ mungsbit SD, die dem ersten Befehl entsprechen, und die erzeug­ ten Daten (die erzeugten Bits) werden in dem ersten Gültigkeits­ register 39 bzw. dem ersten Schreibregister 40 gespeichert.
Genauer erzeugt, falls die wahr/falsch der Einträge in dem Ein­ satzbestimmungsabschnitt 16 entsprechend mit den wahr/falsch der Einträge in dem TF-Register 10 übereinstimmen, die Ausführsteuer­ schaltung 11 im Übergang zu der dritten Verarbeitungsstufe S3 Behandlungsinformation, die definiert, das die später entspre­ chend des ersten Befehls erzeugten Ergebnisdaten in der Folgere­ gisterdatei 12 gespeichert werden.
Falls die wahr/falsch der Einträge in dem Einsatzbestimmungsab­ schnitt 16 nicht entsprechend mit den wahr/falsch der Einträge in dem TF-Register 10 übereinstimmen, erzeugt die Ausführsteuer­ schaltung 11 in dem Übergang zu der dritten Verarbeitungsstufe S3 Behandlungsinformation, die definiert, das die später entspre­ chend des ersten Befehls erzeugten Ergebnisdaten weder in der Folgeregisterdatei 12 noch in der Schattenregisterdatei 13 ge­ speichert werden.
Zur selben Zeit wird in der ersten Verarbeitungsstufe S1 der zweite Befehl aus dem Speicher 3 geholt und in dem Befehlsregi­ ster 6 gespeichert.
In dem dritten Takt führen dann als Reaktion auf ein Steuersi­ gnal, das in dem ALU-Steuersignalregister 35 gespeichert ist, die ALUs 2A bis 2D in der dritten Verarbeitungsstufe S3 den ersten Befehl aus. Die Einsatzbedingungsberechnungsschaltung 41 in der dritten Verarbeitungsstufe 53 vergleicht den Einsatzbedingungs­ abschnitt 16, der dem ersten Befehl entspricht und in dem Ein­ satzbedingungsregister 38 gespeichert ist, mit dem TF-Register 10 und erzeugt ein Gültigkeitsbit V und ein Wertbit D für den ersten Befehl.
Die Gültigkeitsberechnungsschaltung 42 in der dritten Verarbei­ tungsstufe S3 überträgt das Befehlsgültigkeitsbit IV, das in dem ersten Gültigkeitsregister 39 gespeichert ist, an das zweite Gül­ tigkeitsregister 44 ohne irgendeine Änderung oder es ändert das Befehlsgültigkeitsbit IV basierend auf dem Gültigkeitsbit V und dem Wertbit D von der Einsatzbedingungsberechnungsschaltung 41.
Die Schreibbestimmungsberechnungsschaltung 43 überträgt basierend auf dem Gültigkeitsbit V von der Einsatzbedingungsberechnungs­ schaltung 41 das Schattenregisterschreibbestimmungsbit SD, das in dem ersten Schreibbestimmungsregister 40 gespeichert ist, an das zweite Schreibbestimmungsregister 45 ohne irgendeine Änderung, oder sie ändert das Schattenregisterschreibbestimmungsbit SD.
Wenn das Befehlsgültigkeitsbit IV mit "1" in dem ersten Gültig­ keitsregister 39 gespeichert ist und das Schattenregisterschreib­ bestimmungsbit SD mit "0" in dem ersten Schreibbestimmungsregi­ ster 40 gespeichert ist (falls bereits bestimmt worden ist, daß der erste Befehl gültig ist und die Ergebnisdaten in die Folgere­ gisterdatei 12 zu schreiben sind), erzeugt die Einsatzbedingungs­ berechnungsschaltung 41 immer das Gültigkeitsbit V und das Wert­ bit D mit "1" und daher wird das Befehlsgültigkeitsbit IV mit "1" in dem zweiten Gültigkeitsregister 44 gespeichert, und das Schat­ tenregisterschreibbestimmungsbit SD mit "0" bleibt auf "0". Als ein Ergebnis wird das Schattenregisterschreibbestimmungsbit SD in dem zweiten Schreibbestimmungsregister 45 ohne irgendeine Ände­ rung gespeichert.
Wenn das Befehlsgültigkeitsbit TV mit "0" in dem ersten Gültig­ keitsregister 39 und das Schattenregisterschreibbestimmungsbit SD mit "0" in dem ersten Schreibbestimmungsregister 40 gespeichert ist (falls der erste Befehl bereits als ungültig bestimmt worden ist), erzeugt die Einsatzbedingungsberechnungsschaltung 41 immer das Gültigkeitsbit V mit "1" und das Wertbit D mit "0", und daher werden das Befehlsgültigkeitsbit IV mit "0" und das Schattenregi­ sterschreibbestimmungsbit SD mit "0" beide auf "0" gebracht. Als ein Ergebnis werden das Befehlsgültigkeitsbit IV und das Schat­ tenregisterschreibbestimmungsbit SD beide in dem zweiten Gültig­ keitsregister 44 bzw. dem zweiten Schreibbestimmungsregister 45 ohne irgendeine Änderung gespeichert.
Wenn das Befehlsgültigkeitsbit IV mit "1" in dem Gültigkeitsregi­ ster 39 gespeichert ist und das Schattenregisterschreibbestim­ mungsbit SD mit "1" in dem ersten Schreibbestimmungsregister 40 gespeichert ist (falls die entsprechend des ersten Befehls zu erzeugenden Ergebnisdaten in der Schattenregisterdatei 13 zu speichern sind), kann in der dritten Verarbeitungsstufe S3 ir­ gendeine der Bestimmungen, daß die Einsatzbedingung entsprechend des ersten Befehls erfüllt ist, daß die Einsatzbedingung nicht erfüllt ist, und daß es unbestimmt ist, ob die Einsatzbedingung erfüllt ist oder nicht, gemacht werden.
Falls die Einsatzbedingung als erfüllt bestimmt wird, (falls die Einsatzbedingungsberechnungsschaltung 41 sowohl das Gültigkeits­ bit V als auch das Wertbit D mit "1" erzeugt), wird das Befehls­ gültigkeitsbit IV in dem zweiten Gültigkeitsregister 44 ohne ir­ gendeine Änderung gespeichert, und das Schattenregisterschreib­ bestimmungsbit SD mit "1" wird in "0" geändert und in dem zweiten Schreibbestimmungsregister 45 gespeichert.
Falls die Einsatzbedingung als nicht erfüllt bestimmt wird, (falls die Einsatzbedingungsberechnungsschaltung 41 das Gültig­ keitsbit V mit "1" und das Wertbit D mit "0" erzeugt), werden das Befehlsgültigkeitsbit IV und das Schattenregisterschreibbestim­ mungsbit SD mit "1" beide in "0" geändert und in dem zweiten Gül­ tigkeitsregister 44 bzw. dem zweiten Schreibbestimmungsregister 45 gespeichert.
Falls es nicht bestimmt ist, ob die Einsatzbedingung erfüllt ist oder nicht (falls die Einsatzbedingungsberechnungsschaltung 41 das Gültigkeitsbit V mit "0" erzeugt), werden das Befehlsgültig­ keitsbit IV und das Schattenregisterschreibbestimmungsbit SD bei­ de mit "1" unverändert in dem zweiten Gültigkeitsregister 44 bzw. dem zweiten Schreibbestimmungsregister 45 gespeichert.
Gleichzeitig damit wird der zweite Befehl, der durch das Befehls­ register 6 geholt worden ist, durch den Befehlsdekoder 7 deko­ diert und Daten in der Folgeregisterdatei 12 oder der Schattenre­ gisterdatei 13 werden als Reaktion auf ein Steuersignal von dem Befehlsdekoder 7 ausgelesen.
Des weiteren wird gleichzeitig damit der dritte Befehl aus dem Speicher 3 geholt.
Dann werden in dem vierten Takt die Ergebnisdaten, die durch die ALUs 2A bis 2D entsprechend des ersten Befehls erzeugt worden sind, in die Folgeregisterdatei 12 oder die Schattenregisterdatei 13 als Reaktion auf ein Steuersignal von der Registerdatei- Schreibsteuerschaltung 52 geschrieben. Genauer führt die Regi­ sterdatei-Schreibsteuerschaltung 52, wenn das Befehlsgültigkeits­ bit IV "1" und das Schattenregisterschreibbestimmungsbit SD "0" ist, eine solche Steuerung aus, daß die Ergebnisdaten in die Fol­ geregisterdatei 12 geschrieben werden.
Wenn das Befehlsgültigkeitsbit IV "1" und das Schattenregister­ schreibbestimmungsbit SD "1" ist, führt die Registerdatei- Schreibsteuerschaltung 52 eine solche Steuerung aus, daß die Er­ gebnisdaten in die Schattenregisterdatei 13 geschrieben werden.
Wenn das Befehlsgültigkeitsbit IV "0" ist, führt die Registerda­ tei-Schreibsteuerschaltung 52 eine solche Steuerung aus, daß die Ergebnisdaten weder in die Folgeregisterdatei 12 noch in die Schattenregisterdatei 13 geschrieben werden.
Es ist zu bemerken, daß, falls die Ergebnisdaten in die Schatten­ registerdatei 13 geschrieben werden, der Einsatzbedingungsab­ schnitt 16, der dem ersten Befehl entspricht, in dem Einsatzbe­ dingungsspeicherabschnitt 32 in der Einsatzsteuerschaltung 14 gespeichert ist.
Gleichzeitig damit wird der zweite Befehl durch die ALUs 2A und 2D ausgeführt, und das Befehlsgültigkeitsbit IV und das Schatten­ registerschreibbestimmungsbit SD werden in dem zweiten Gültig­ keitsregister 44 bzw. dem zweiten Schreibbestimmungsregister 45 gespeichert.
Gleichzeitig damit wird der dritte Befehl durch den Befehlsdeko­ der 7 dekodiert und Daten in der Folgeregisterdatei 12 oder der Schattenregisterdatei 13 werden als Reaktion auf ein Steuersignal von dem Befehlsdekoder 7 ausgelesen.
Weiterhin gleichzeitig damit wird der vierte Befehl aus dem Spei­ cher 3 geholt. Nachfolgend werden die zweiten bis vierten Befehle vergleichbar zu dem Fall des ersten Befehls verarbeitet.
Dritte Ausführungsform
Der Mikroprozessor entsprechend der ersten Ausführungsform ist in der Lage zum Beispiel den Bedingungsbefehl C2 vor der Ausführung des Bedingungsbefehls C1 basierend auf dem in Fig. 10 gezeigten Programm auszuführen. Im Sinne des Programms ist jedoch der Be­ dingungsbefehl C2 dazu vorgesehen, ausgeführt zu werden, nachdem der Bedingungsbefehl C1 ausgeführt ist.
Entsprechend der Bedeutung des Programmes kann der Mikroprozessor so aufgebaut sein, daß der Bedingungsbefehl C2 nicht ausgeführt werden kann, bis der Bedingungsbefehl C1 ausgeführt ist.
Fig. 16 ist eine Programmliste (Listing), die ein Beispiel eines Programms für einen einer dritten Ausführungsform der Erfindung entsprechenden Mikroprozessor zeigt. Es ist zu bemerken, daß die Befehle I1 bis I4, C1 und C2, D1 und D3 identisch mit den in Fig. 11 gezeigten sind.
Charakteristisch ist, daß der Bedingungsbefehl C2 anhängig von einem Ergebnis der Ausführung des Bedingungsbefehls C1 ausgeführt wird. Genauer wird der Bedingungsbefehl C2 nur ausgeführt, wenn der erste Eintrag in dem TF-Register 10 "wahr" ist. Das wahr/falsch in dem ersten Eintrag in dem TF-Register 10 wird durch Ausführung des Bedingungsbefehls C1 in dem unmittelbar vor­ herigen Zyklus bestimmt.
Dementsprechend wird der Bedingungsbefehl C2 nur dann ausgeführt, wenn der Bedingungsbefehl C1 ausgeführt ist und in den ersten Eintrag bzw. die erste Eingangsadresse in dem TF-Register 10 "wahr" geschrieben ist, und dieses ermöglicht "wahr" oder "falsch" in die zweite Eingangsadresse bzw. den zweiten Eintrag des TF-Registers 10 zu schreiben.
Anders ausgedrückt enthält der zweite Eintrag bei der ersten Aus­ führungsform nur das Ergebnis der Ausführung des Bedingungsbe­ fehls C2, während der zweite Eintrag entsprechend der dritten Ausführungsform nicht nur das Ergebnis der Ausführung des Bedin­ gungsbefehls C2, sondern implizit außerdem die Tatsache, daß der erste Eintrag "wahr" ist, enthält.
Die Bedingung "TF[0][02]" entsprechend der ersten Ausführungs­ form wird einfach durch "TF[2]" dargestellt.
Fig. 17 ist eine Blockdarstellung, die den Aufbau einer Ausführ­ steuerschaltung und einer Einsatzbedingungsberechnungsschaltung in einer Einsatzsteuerschaltung in dem Mikroprozessor entspre­ chend der dritten Ausführungsform zeigt.
Wie in Fig. 17 gezeigt ist, weist die Einsatzbedingungsberech­ nungsschaltung 53 eine Vergleichsschaltung 20, einen Dekoder 54 und zwei Selektoren (Auswahlschaltungen) 55 und 56 auf. Die Ein­ satzbedingungsberechnungsschaltung 53 vergleicht einen Einsatz­ steuerabschnitt 58 und das TF-Register 10 und erzeugt das Gültig­ keitsbit V und das Wertbit D basierend auf dem Ergebnis.
Der Einsatzsteuerabschnitt 58 wird aus einem Gültigkeitsbit, ei­ nem Wertbit und einem Bit, das die Eintragsnummer des TF-Regi­ sters 10 anzeigt, die zu vergleichen ist, gebildet. Das TF-Regi­ ster 10 ist im wesentlichen identisch zu dem der ersten Ausfüh­ rungsform. In dem Fall des in Fig. 16 gezeigten Programmes je­ doch, da ein Befehl ohne Berücksichtigung von mindestens 2 Bedin­ gungen ausgeführt werden kann, benötigt das TF-Register 10 nur zwei Einträge.
Die Vergleichsschaltung 20 in der Einsatzbedingungsberechnungs­ schaltung 53 ist im wesentlichen identisch zu der der ersten Aus­ führungsform. Der Dekoder 54 deko 47631 00070 552 001000280000000200012000285914752000040 0002004434529 00004 47512diert die Eintragszahl des TF- Registers 10 und erzeugt ein vorgeschriebenes Auswahlsignal. Der Selektor 55 wählt das Gültigkeitsbit aus dem ersten oder dem zweiten Eintrag in dem TF-Register 10 als Reaktion auf das Aus­ wahlsignal des Dekoders 54 aus und legt ausgewählte Gültigkeits­ bit Tv an die Vergleichsschaltung 20 an. Der Selektor 56 wählt das Wertbit des ersten oder des zweiten Eintrags in dem TF-Regi­ ster 10 als Reaktion auf ein Auswahlsignal von dem Dekoder 54 aus und legt das ausgewählte Wertbit Td an die Vergleichsschaltung 20 an.
Zum Beispiel mit dem Befehlscode "TF[1]?I2" wird der Befehl I2 nur dann ausgeführt, wenn der erste Eintrag in dem TF-Register 10 "wahr" ist. In diesem Fall spezifiziert das Bit des Einsatzbedin­ gungsabschnitts 58, das die Eintragsnummer des TF-Registers 10 anzeigt, den ersten Eintrag. Derart werden das Gültigkeitsbit Tv und der Wert Td des ersten Eintrags in dem TF-Register 10 durch die Selektoren 55 bzw. 56 ausgewählt und an die Vergleichsschal­ tung 20 angelegt.
Mit dem Befehlscode "TF[2]?I4" spezifiziert das Bit in dem Ein­ satzbedingungsabschnitt 58, das die Eintragsnummer des TF-Regi­ sters 10 anzeigt, den zweiten Eintrag in dem TF-Register 10. Der­ art werden das Gültigkeitsbit Tv und der Wert Td des zweiten Ein­ trags in dem TF-Register 10 durch die Selektoren 55 bzw. 56 aus­ gewählt und an die Vergleichsschaltung 20 angelegt.
Entsprechend der dritten Ausführungsform weisen der Einsatzbedin­ gungsabschnitt 58 und die Einsatzbedingungsberechnungsschaltung 53 einfachere Konfigurationen als bei der ersten Ausführungsform auf.
Es ist zu bemerken, daß der Mikroprozessor entsprechend der drit­ ten Ausführungsform entsprechend der zweiten Ausführungsform mit einer Pipeline-Anordnung ausgebildet sein kann.
Vierte Ausführungsform
Fig. 18 ist eine Blockdarstellung, die den Aufbau eines Mikropro­ zessors entsprechend einer vierten Ausführungsform zeigt.
Wie Fig. 18 zeigt, weist der Mikroprozessor entgegengesetzt zu der ersten Ausführungsform ein Folge-TF-Register 60 anstelle des TF-Registers 10, ein Schatten-TF-Register 61 und eine TF-Regi­ ster-Einsatzsteuerschaltung 62 auf.
Das Folge-TF-Register 60 entspricht dem TF-Register 10 entspre­ chend der ersten Ausführungsform und weist einen oder mehrere Einträge (Eingangsadressen) auf, die deterministisch (festgelegt) eines von drei Stücken von Information, ob eine gewisse Bedingung "wahr", "falsch" oder "unbestimmt" ist, halten.
Das Schatten-TF-Register 61 weist einen oder mehrere Einträge auf, die provisorisch eines von drei Stücken von Information, die anzeigen, daß eine gewisse Bedingung "wahr" ist, "falsch" ist oder das wahr/falsch "unbestimmt" ist, halten.
Wenn ein Bedingungsbefehl mit der Einsatzbedingung (das heißt der Bedingung für die Ausführung des Bedingungsbefehls) "unbestimmt" ausgeführt wird, hält die TF-Register-Einsatzsteuerschaltung 62 die Einsatzbedingung und überträgt "wahr" oder "falsch", die in dem Schatten-TF-Register 61 gespeichert sind, an das Folge-TF- Register 60 an dem Punkt, an dem wahr/falsch in der Einsatzbedin­ gung mit dem entsprechenden wahr/falsch in dem Folge-TF-Register 10 übereinstimmt.
Es ist zu bemerken, daß die TF-Register-Einsatzsteuerschaltung 62 im wesentlichen denselben Aufbau wie die Einsatzsteuerschaltung 14 entsprechend der ersten Ausführungsform aufweist.
Fig. 19 ist eine Programmliste, die ein Beispiel eines Programms für den Mikroprozessor zeigt.
Entsprechend des Programms wird der Befehlscode "TF[1]?C" in dem zweiten Zyklus verarbeitet. Mit dem Befehlscode "TF[1]?C2" ist der Bedingungsbefehl C2 nur auszuführen, wenn der erste Eintrag in dem Folge-TF-Register 60 "wahr" ist.
Das wahr/falsch des ersten Eintrags wird jedoch nur dann be­ stimmt, wenn der Befehlscode "immer?C1" in dem nächsten dritten Zyklus verarbeitet wird. Dementsprechend wird an diesem Punkt in dem zweiten Zyklus, da der erste Eintrag in dem Folge-TF-Register 60 "unbestimmt" ist, der Bedingungsbefehl C2 provisorisch ausge­ führt, und das wahr/falsch wird in dem zweiten Eintrag in dem Schatten-TF-Register 61 gespeichert. Gleichzeitig damit wird die Einsatzbedingung "TF[1]" in dem Einsatzbedingungsspeicherab­ schnitt in der TF-Register-Einsatzsteuerschaltung 62 gespeichert.
Dann wird mit dem Befehlscode "immer?C1" in dem dritten Zyklus der Bedingungsbefehl C1 immer ausgeführt und dieses wahr/falsch wird in dem ersten Eintrag in dem Folge-TF-Register 60 gespei­ chert.
Die TF-Register-Einsatzsteuerschaltung 62 überwacht immer das Folge-TF-Register 60. Darum wird, wenn das wahr/falsch in der Einsatzbedingung, das in dem Einsatzbedingungsspeicherabschnitt in der TF-Register-Einsatzsteuerschaltung 62 gespeichert ist, mit dem wahr/falsch des ersten Eintrags in dem Folge-TF-Register 60 übereinstimmt, das wahr/falsch des Bedingungsbefehls C2, das in dem zweiten Eintrag in dem Schatten-TF-Register 61 gespeichert ist, an den zweiten Eintrag in dem Folge-TF-Register 60 übertra­ gen.
Entsprechend der vierten Ausführungsform kann zusätzlich zu den einfachen Ausführbefehlen I2 und I3 (d. h. Befehlen, die eine Ver­ arbeitung ausführen), die eine Einsatzbedingung "unbestimmt" auf­ weisen, der Bedingungsbefehl C2 (d. h. ein Befehl, der abhängig von einer Bedingung verschiedene Verarbeitungen ausführt), der eine Einsatzbedingung "unbestimmt" aufweist, auch spekulativ aus­ geführt werden.
Es ist zu bemerken, daß bei der vierten Ausführungsform das Fol­ ge-TF-Register 60 und das Schatten-TF-Register 61 der Wahr/ Falsch-Halteeinheit entsprechen. Die Einsatzsteuerschaltung 14 entspricht der ersten Einsatzsteuerschaltung. Die TF-Register- Einsatzsteuerschaltung 62 entspricht der zweiten Einsatzsteuer­ schaltung.
Fünfte Ausführungsform
Fig. 20 ist eine Darstellung, die den Aufbau einer Registerdatei in einem Mikroprozessor entsprechend einer fünften Ausführungs­ form zeigt.
Wie in Fig. 20 gezeigt ist, weist der Mikroprozessor eine erste Registerdatei 65, die von 32 Registern RA1 bis RA32 gebildet wird, eine zweite Registerdatei 66, die von 32 Registern RB1 bis RB32 gebildet wird, und 32 Kennzeichen (Flags) F1 bis F32 auf.
Entsprechend der fünften Ausführungsform werden die Ergebnisda­ ten, falls ein Befehl mit der Einsatzbedingung "unbestimmt" spe­ kulativ ausgeführt wird, die Ergebnisdaten provisorisch in einem der Register RA1 bis RA32 in der ersten Registerdatei 65 gespei­ chert und ein entsprechendes Kennzeichen der Kennzeichen F1 bis F32 wird auf "0" gesetzt.
Das Kennzeichen wird auf "1" in dem Moment gesetzt, wenn das Wahr/Falsch der Einsatzbedingung bestimmt ist, und das Wahr/Falsch entsprechend mit dem Wahr/Falsch in dem TF-Register übereinstimmt.
Anstelle des physikalischen Übertragens der Daten von der Schat­ tenregisterdatei 13 in die Folgeregisterdatei 12 wie bei der er­ sten Ausführungsform kann das Invertieren des Kennzeichens die den Status der Registerdateien 65 und 66 von einem spekulativen Status in einen Folgestatus bei der fünften Ausführungsform än­ dern.
Sechste Ausführungsform
Die Mikroprozessoren entsprechend der ersten bis fünften Ausfüh­ rungsformen sind zum Ausführen spekulativer Befehle in der Lage, aber sie haben ein Problem damit, wie eine Ausnahme, die beim Ausführen eines solchen spekulativen Befehls auftritt, zu verar­ beiten ist, da es unbekannt ist, ob die Ergebnisdaten an dem Punkt, an dem ein solcher spekulativer Befehl ausgeführt wird, gültig sind.
Die einfachste Annäherung an das Problem ist es, eine Ausnahme, die durch einen spekulativen Befehl verursacht wird, an dem Punkt, an dem die Ausnahme verursacht wird, vergleichbar zu dem Fall einer Ausnahme, die durch einen Folgebefehl verursacht wird, zu verarbeiten.
Diese Methode ist sehr einfach, aber sie erniedrigt in starkem Maß die Verarbeitungseffizienz für die Befehle. Wenn eine Ausnah­ me, die wie oben beschrieben "Page-Fehler" genannt wird, verur­ sacht wird, werden zum Beispiel einige hundert bis einige tausend von Zyklen zum entsprechenden Verarbeiten der Ausnahme notwendig sein. Falls jedoch die Ergebnisdaten, die durch das Ausführen des spekulativen Befehls erzeugt werden, der den Page-Fehler verur­ sacht hat, nicht notwendig sind, werden die einige hundert bis einige tausend Zyklen verschwendet, d. h. unnötig verbraucht, sein.
Fig. 21 ist eine Blockdarstellung, die den Aufbau eines Mikropro­ zessors entsprechend einer sechsten Ausführungsform, die auf die Lösung eines solchen Problems gerichtet ist, zeigt.
Wie in Fig. 21 gezeigt ist, weist der Mikroprozessor in diesem Fall wie der Mikroprozessor entsprechend der ersten Ausführungs­ form vier ALUs 2A bis 2D, einen Speicher 3, einen Programmzähler 4, eine Erhöhungsschaltung 5, ein Befehlsregister 6, einen Be­ fehlsdekoder 7, eine Zieladressenberechnungsschaltung 9, ein TF- Register 10, eine Ausführsteuerschaltung 11, eine Folge-Register­ datei 12, eine Schatten-Registerdatei 13 und eine Einsatzsteuer­ schaltung 14 auf.
Der Mikroprozessor weist anders als der Mikroprozessor entspre­ chend der ersten Ausführungsform einen EPC (Excepted Program Counter = Ausnahmeprogrammzähler) 70, einen Selektor (Auswahl­ schaltung) 71 und eine EP (Excepted Pending = Ausnahme ist anhän­ gig)-Schaltung 72 auf.
Der EPC 70 speichert eine Adresse, die in dem Programmzähler 4 gespeichert ist, wenn ein aus dem Speicher 3 geholter Befehl eine Ausnahme verursacht. Der Selektor 71 wählt durch die ALUs 2A bis 2D produzierte Ergebnisdaten oder die in dem EPC 70 gespeicherte Adresse aus und liefert dieselbe an die Folgeregisterdatei 12 oder die Schattenregisterdatei 13. Es ist zu bemerken, daß der EPC 70 und der Selektor 71 in dem herkömmlichen Mikroprozessor vorgesehen sind.
Die EP-Schaltung 72 speichert die Tatsache, daß der spekulative Befehl die Ausnahme verursacht hat, als Reaktion auf ein Ausnah­ meerzeugungssignal SE, das anzeigt, daß der spekulative Befehl die Ausnahme verursacht hat, und sie erzeugt ein Ausnahmeverar­ beitungssignal RSE, das die Notwendigkeit des Verarbeitens der Ausnahme an einem vorgeschriebenen Punkt anzeigt.
Ein solches Ausnahmeerzeugungssignal SE wird an verschiedenen Orten abhängig von der Art der Ausnahme erzeugt. Falls die Aus­ nahme ein Page-Fehler ist, wird zum Beispiel das Ausnahmeerzeu­ gungssignal SE in der peripheren Schaltung des Speichers 3 er­ zeugt. Falls die Ausnahme ein Überlauf ist, wird das Ausnahmeer­ zeugungssignal SE durch die ALUs 2A bis 2D erzeugt. Falls ein undefinierter Befehl geholt wird, wird das Ausnahmeerzeugungssi­ gnal SE durch den Befehlsdekoder 7 erzeugt.
Fig. 22 ist eine Blockdarstellung, die den Aufbau der Folgeregi­ sterdatei 12, der Schattenregisterdatei 13, der Einsatzsteuer­ schaltung 14 und der EP-Schaltung 72 zeigt.
Die Folgeregisterdatei 12, die Schattenregisterdatei 13 und die Einsatzsteuerschaltung 14 weisen im wesentlichen den identischen Aufbau wie die der ersten Ausführungsform auf.
Wie in dem Fall der Folgeregisterdatei 12, der Schattenregister­ datei 13, und der Einsatzsteuerschaltung 14 weist die EP-Schal­ tung 72 32 Einträge bzw. Eingangsadressen auf.
Jeder Eintrag (d. h. jede Eingangsadresse) in der EP-Schaltung 72 weist eine Verriegelungsschaltung 74, ein NAND-Gatter 72 und ei­ nen n-Kanal-MOS-Transistor 76 auf.
Die Verriegelungsschaltung 74 weist einen Eingangsanschluß IN, einen Freigabeanschluß E und einen Rücksetzanschluß R auf, und sie speichert "1" oder "0" als Reaktion auf das Ausnahmeerzeu­ gungssignal SE, das über einen Puffer 77 an den Eingabeanschluß IN angelegt ist. Das Ausgabesignal der Verriegelungsschaltung 74 wird an ihren eigenen Freigabeanschluß E angelegt. Darum wird als Reaktion auf das Anlegen des Ausnahmeerzeugungssignals SE auf H- Niveau an den Eingangsanschluß IN der Verriegelungsschaltung 74 durch den Puffer 77 die Verriegelungsschaltung auf "1" gesetzt. Zu dem Zeitpunkt wird, da ein H-Niveau Ausgabesignal an den Frei­ gabeanschluß E auf einen negativen Logik angelegt wird, die Ver­ riegelungsschaltung 74 nicht erneut beschrieben, falls ein neues Ausnahmeerzeugungssignal SE angelegt wird.
Das Ausgabesignal der Verriegelungsschaltung 74 und das Ausgabe­ signal des UND-Gatters 33 in der Einsatzsteuerschaltung 14 werden an den Eingabeanschluß des UND-Gatters 75 angelegt, dessen Aus­ gabesignal an das Gate des n-Kanal-MOS-Transistors 76 angelegt wird.
Die 32 n-Kanal-MOS-Transistoren 76 in den 32 Einträgen bilden zusammen mit einem Hochzieh-Widerstand 79 und einen Inverter 80 ein ODER-Gatter 81.
Der Einsatzbedingungsspeicherabschnitt 32 weist außerdem einen Eingabeanschluß IN und einen Freigabeanschluß E auf und speichert den Einsatzbedingungsabschnitt 16, der an den Eingabeanschluß IN über einem Puffer 78 angelegt wird, wenn ein spekulativer Befehl ausgeführt wird. Das Ausgabesignal der Verriegelungsschaltung 74 wird außerdem an den Freigabeanschluß E des Einsatzbedingungs­ speicherabschnittes 32 angelegt. Darum ist, wenn eine Ausnahme auftritt und "1" in der Schaltung 74 gespeichert ist, der Ein­ satzbedingungsspeicherabschnitt 32 nicht in der Lage erneut be­ schrieben zu werden.
Nun wird der Betrieb des Mikroprozessors entsprechend der sech­ sten Ausführungsform beschrieben.
Fig. 23 ist ein Zeitablaufdiagramm zum Gebrauch bei der Erläute­ rung des Betriebs des Mikroprozessors entsprechend der sechsten Ausführungsform.
Verschiedene Befehle werden sequentiell in einem Hauptprogramm, das Folgebefehle und spekulative Befehle aufweist, verarbeitet.
Falls die Ausführung eines spekulativen Befehls eine Ausnahme verursacht, wird die Ausnahme nicht bis zu einem Einsatzpunkt (d. h. einem Zeitpunkt des Ausführens) verarbeitet.
Ein Erholungscode, der unter Verwendung von Software erzeugt wird, ist für jeden Einsatzpunkt vorbereitet. Wenn der Einsatz­ punkt erreicht ist, wird der Erholungscode von seinem ersten Be­ fehl ausgeführt.
Der Erholungscode wird gebildet durch Extrahieren von nur den spekulativen Befehlen vor dem Einsatzpunkt aus dem Hauptprogramm. Diese spekulativen Befehle werden nacheinander folgend angeordnet und in einen Folgebefehl geändert. Wenn ein spekulativer Befehl, bei dem zuvor eine Ausnahme aufgetreten ist, ausgeführt wird, wird die Ausnahme wie in dem vorhergehenden Fall erneut erzeugt. Diesmal jedoch wird die Verarbeitung für die Ausnahme direkt dar­ aufhin basierend auf einer vorgeschriebenen Ausnahmeroutine aus­ geführt. Wenn der letzte Befehl in dem Erholungscode ausgeführt ist, kehrt der Verarbeitungsablauf zu dem Hauptprogramm zurück und die Verarbeitung wird an dem Befehl wieder aufgenommen, der der nächste nach dem Einsatzpunkt ist.
Der Betrieb des Mikroprozessors entsprechend der sechsten Ausfüh­ rungsform wird nun detaillierter beschrieben.
Es wird angenommen, daß ein Befehl mit einer Einsatzbedingung TF[1]?I2 eine Ausnahme verursacht, wenn zum Beispiel das Pro­ gramm, das in Fig. 11 gezeigt ist, ausgeführt wird.
In dem ersten Zyklus wird der Folgebefehl I1 ausgeführt, nämlich ein in dem Register r10 gespeicherter Wert und ein in dem Regi­ ster r11 gespeicherter Wert werden addiert und die Ergebnisdaten werden in dem Folgeregister r2 des zweiten Eintrags in der Folge­ registerdatei 12 gespeichert. Gleichzeitig damit wird der speku­ lative Befehl I2 ausgeführt. Da der erste Eintrag in dem TF-Regi­ ster 10, der der Einsatzbedingung TF[1] des Befehls I2 ent­ spricht, "unbestimmt" ist, wird der Befehl I2 spekulativ ausge­ führt. Derart werden ein Wert, der in dem Register r12 gespei­ chert ist, und ein Wert, der in dem Register r13 gespeichert ist, addiert und die Ergebnisdaten werden in dem Schattenregister r4 des vierten Eintrags in der Schattenregisterdatei 13 gespeichert.
Da der Befehl I2 eine Ausnahme verursacht, wird das Ausnahmeer­ zeugungssignal SE mit H-Niveau an die Verriegelungsschaltung 74 des vierten Eintrags in der EP-Schaltung 72 über den Puffer 77 angelegt. Derart wird "1" in die Verriegelungsschaltung 74 des vierten Eintrags geschrieben. Es ist zu bemerken, daß, da der Befehl I2 die Ausnahme verursacht hat, der Ergebniswert ein will­ kürlicher Wert ist.
Gleichzeitig dazu werden die Befehle mit Einsatzbedingungen I3 und I4 ausgeführt. Da diese Befehle I3 und I4 beide spekulativ sind, werden die Ergebnisdaten in den Schattenregistern 31 des fünften und des sechsten Eintrags in der Schattenregisterdatei 13 gespeichert.
Da jedoch diese Befehle I3 und I4 keine Ausnahme verursachen, wird das Ausnahmeerzeugungssignal SE auf L-Niveau an die Verrie­ gelungsschaltung 74 des fünften bzw. des sechsten Eintrags in der EP-Schaltung 72 angelegt. Derart wird "0" in der Verriegelungs­ schaltung 74 gespeichert.
Dann werden in dem zweiten Zyklus die Folgebedingungsbefehle C1 und C2 gleichzeitig ausgeführt. Falls der in dem Folgeregister r2 des zweiten Eintrags gespeicherte Wert kleiner als der in dem Folgeregister r3 des dritten Eintrags gespeicherte Wert ist, wird in dem ersten Eintrag des TF-Registers 10 "wahr" gesetzt. Derart erreicht, falls der in dem Einsatzbedingungsspeicherabschnitt 32 des vierten Eintrags in der Einsatzsteuerschaltung 14 gespeicher­ te Inhalt mit dem in dem TF-Register 10 gespeicherten Inhalt übereinstimmt, das Ausgabesignal des UND-Gatters 33 das H-Niveau.
Dieses schaltet das Übertragungsgatter 34 in dem vierten Eintrag an, und die Ergebnisdaten des Befehls I2, die in dem Schattenre­ gister 31 des vierten Eintrags gespeichert sind, werden an das Folgeregister 30 des vierten Eintrags übertragen. Gleichzeitig damit wird das UND-Gatter 75 in dem vierten Eintrag in der EP- Schaltung 72 angeschaltet, und ein Ausgabesignal aus seiner Ver­ riegelungsschaltung 74 wird an das Gate des n-Kanal-MOS-Transi­ stors 76 angelegt.
Da die Ausnahme auftritt, wenn der Befehl I2 in dem ersten Zyklus ausgeführt wird, ist "1" in der Verriegelungsschaltung 74 des ersten Eintrags in der EP-Schaltung 72 gesetzt worden. Darum er­ reicht das Ausgabesignal der Verriegelungsschaltung 74 das H-Ni­ veau und der n-Kanal-MOS-Transistor 76 wird angeschaltet. Dieses bringt das Ausnahmeverarbeitungssignal RSE auf das H-Niveau. Als Reaktion auf das Ausnahmeverarbeitungssignal RSE auf H-Niveau wird die Anfangsadresse der Ausnahmebehandlung in dem Programm­ zähler 4 gesetzt. Derart wird der Ausnahmeverarbeitungsablauf (die Routine zum Verarbeiten der Ausnahme) ausgeführt.
Falls der in dem Folgeregister r2 des zweiten Eintrags gespei­ cherte Wert nicht kleiner als der in dem Folgeregister r3 des dritten Eintrags gespeicherte Wert ist, wird in dem ersten Ein­ trag des TF-Registers 10 "falsch" gesetzt.
In diesem Fall erreicht das Ausgabesignal des UND-Gatters 33 des vierten Eintrags in der Einsatzsteuerschaltung 14 nicht das H- Niveau, sondern es wird auf dem L-Niveau gehalten. Die in dem Schattenregister 31 des vierten Eintrags in der Schattenregister­ datei 13 gespeicherten Ergebnisdaten werden nicht an das entspre­ chende Folgeregister 30 übertragen. Ein Ausgabesignal auf H-Ni­ veau von der Verriegelungsschaltung 74 wird nicht an das Gate des n-Kanal-MOS-Transistors 76 angelegt. Dementsprechend erreicht das Ausnahmeverarbeitungssignal RSE nicht das H-Niveau, sondern es wird auf dem L-Niveau gehalten. Darum wird der Ausnahmeverarbei­ tungsablauf nicht ausgeführt.
Wie in dem Vorhergehenden ausgeführt worden ist, wird bei dem Mikroprozessor, falls eine Ausnahme durch das Ausführen eines spekulativen Befehls I2 erzeugt wird, ein Verarbeitungsablauf für die Ausnahme nicht unmittelbar darauf folgend ausgeführt und bis zu einem Einsatzpunkt, an dem die Einsatzbedingung des spekulati­ ven Befehls I2 erfüllt ist, hinausgezögert, wobei an dem Einsatz­ punkt der Verarbeitungsablauf für die Ausnahme zum ersten Mal ausgeführt wird.
Genauer weist der Mikroprozessor an dem Einsatzpunkt zum ersten Mal, daß der spekulative Befehl I2, der ausgeführt worden ist, eine Ausnahme verursacht hat, und er treibt dann die Ausnahmebe­ handlung.
Falls eine Ausnahme erzeugt wird, wenn ein spekulativer Befehl ausgeführt wird, werden bedeutungslose Ergebnisdaten erzeugt. Da es eine Möglichkeit dafür gibt, daß ein anderer spekulativer Be­ fehl basierend auf solchen bedeutungslosen Ergebnisdaten, abhän­ gig von dem entsprechenden Programm, ausgeführt worden ist, ist das erneute Ausführen des spekulativen Befehls, der die Ausnahme verursacht hat, nachdem der Ausnahmeverarbeitungsablauf ausge­ führt worden ist, nicht genug, und die anderen spekulativen Be­ fehle müssen erneut ausgeführt werden.
Tatsächlich notwendig ist es, die zwischen dem Auftreten der Aus­ nahme und dem Einsatzpunkt befindlichen spekulativen Befehle er­ neut auszuführen, aber es würde sehr aufwendig sein, nur diese spekulativen Befehle aus dem Hauptprogramm zu extrahieren. Der Mikroprozessor entsprechend der sechsten Ausführungsform ist so aufgebaut, daß er alle spekulativen Befehle vor dem Einsatzpunkt erneut ausführt.
Es ist zu bemerken, daß die Routine (Erholungscode), die nur aus den erneut auszuführenden spekulativen Befehlen aufgebaut ist, als ein Programm für jeden Einsatzpunkt vorbereitet ist. Da das Wahr/Falsch für die Einsatzbedingungen bereits bestimmt worden ist, wird ihre Reihenfolge zum aufeinanderfolgenden Ausführen dieser spekulativen Befehle geändert.
In dem Fall des in Fig. 11 gezeigten Programms wird zum Beispiel an einem Einsatzpunkt in dem zweiten Zyklus ein Erholungscode, wie in Fig. 24 gezeigt ist, mit Software erzeugt. Wie in Fig. 24 gezeigt ist, ist der Folgebefehl "immer?I1" nicht in dem Er­ holungscode enthalten. Alle Instruktionen in dem Erholungscode sind in ihrer Reihenfolge geändert, so daß sie aufeinanderfolgend ausgeführt werden.
Genauer gesagt, da das Wahr/Falsch des ersten Eintrags in dem TF- Register 10 bestimmt ist, wenn der Bedingungsbefehl C1 ausgeführt ist, sind die spekulativen Befehle I2 und I3, die das Wahr/Falsch in den Einsatzbedingungsabschnitten aufweisen, so angeordnet, daß sie ausgeführt werden, nachdem der Bedingungsbefehl C1 ausgeführt ist, und sie sind als Folgebefehle ausgeführt. Da das Wahr/Falsch des zweiten Eintrags in dem TF-Register 10 durch Ausführen des Bedingungsbefehls C2 bestimmt wird, wird der spekulative Befehl I4, der das Wahr/Falsch des ersten und des zweiten Eintrags in dem Einsatzbedingungsabschnitt aufweist, so angeordnet, daß er ausgeführt wird, nachdem die Bedingungsbefehle C1 und C2 ausge­ führt sind, und er wird als ein Folgebefehl ausgeführt.
Wenn der Befehl I2 basierend auf dem Erholungscode erneut ausge­ führt wird, wird eine Ausnahme erneut erzeugt. Da jedoch der Be­ fehl E2 in diesem Fall ein Folgebefehl ist, der auszuführen ist, nachdem das Wahr/Falsch des ersten Eintrags in dem TF-Register 10 bestimmt ist, wird der Ausnahmeverarbeitungsablauf sofort ausge­ führt.
Da alle Befehle in dem Erholungscode folgend (Folgebefehle) sind, wird eine spekulative Ausnahme nicht auftreten. An dem Ende des Erholungscodes ist ein Sprungbefehl für einen Sprung zum Zurück­ kehren zu der Adresse, die die auf den Einsatzpunkt folgende ist, vorgesehen.
Eine Methode zum Aufrufen des Erholungscodes an dem Einsatzpunkt ist zum Beispiel das Vorbereiten einer Sprungtabelle in einem Programm, die so verwendet werden kann, daß sie zum Beispiel zur Bezugnahme auf die Anfangsadresse des Erholungscodes die Adresse des Einsatzpunktes als Index verwendet. Entsprechend einer sol­ chen Methode ist es nur notwendig, einen Code zum Ausführen des in Fig. 25 gezeigten Programmes in einem Interrupt-Handler (Be­ fehl zur Reaktion auf einen Interrupt) zu speichern.
Entsprechend des Programmes wird die Anfangsadresse eines Erho­ lungscodes, die der Adresse eines speziellen Einsatzpunktes ent­ spricht, von der Sprungtabelle in der ersten Anweisung aufgerufen und in einer Variablen "Erholungscodeadresse" gespeichert. Die "Sprungtabelle" ist eine Tabelle, in der die Anfangsadresse eines Erholungscodes entsprechend zu der Adresse jedes Einsatzpunktes erhalten ist.
In der zweiten Anweisung wird die Anfangsadresse eines Erholungs­ codes in dem Programmzähler 4 gespeichert und vorgeschriebene Befehle werden aufeinanderfolgend entsprechend des Erholungscodes ausgeführt.
Im allgemeinen ist der EPC ein Register zum Halten der Adresse eines Befehls, der einen Interrupt verursacht hat, aber der EPC 70 entsprechend der sechsten Ausführungsform ist ein Register zum Halten der Adresse eines Einsatzpunktes. Genauer hält der EPC 70 eine Adresse, wenn ein Interrupt verursacht wird, als Reaktion auf das Ausnahmeverarbeitungssignal RSE auf H-Niveau.
Nun folgt eine Beschreibung darüber, warum die Verriegelungs­ schaltung 74 und der Einsatzbedingungsspeicherabschnitt 32 daran gehindert werden, erneut beschrieben zu werden, wenn "1" in der Verriegelungsschaltung 74 in der EP-Schaltung 72 gesetzt ist.
Falls das erneute Beschreiben nicht verboten ist, tritt ein Pro­ blem auf, wenn das in Fig. 26 gezeigte Programm ausgeführt wird.
Es wird angenommen, daß der Befehl I10 ausgeführt und eine Aus­ nahme erzeugt wird. Da der Befehl I10 spekulativ ist, wird ein Verarbeitungsablauf für die Ausnahme nicht sofort ausgeführt, "1" wird in der Verriegelungsschaltung 74 des ersten Eintrags in der EP-Schaltung 72 gesetzt, und die Einsatzbedingung TF "1" wird in den Einsatzbedingungsspeicherabschnitt 32 des ersten Eintrags in der Einsatzsteuerschaltung 14 geschrieben.
Zu dieser Zeit ist, obwohl der durch Ausführen des spekulativen Befehls erzeugte Ergebniswert in das Schattenregister 31 des er­ sten Eintrags in der Schattenregisterdatei 13 geschrieben wird, der Ergebniswert kein korrekter Wert, da der Befehl die Ausnahme verursacht hat.
Angenommen, daß keine Aufnahme auftritt, wenn der spekulative Befehl I11 ausgeführt wird, wird, falls die Verriegelungsschal­ tung 74 nicht mit Mitteln zum Verhindern des Schreibens vorgese­ hen ist, "0" in der Verriegelungsschaltung 74 in dem ersten Ein­ trag EP-Schaltung 72 gesetzt, was die Speicherung dessen, daß der Befehl I10 die Ausnahme verursacht hat, löscht.
Es ist darum notwendig, zu verhindern, daß der Inhalt durch einen anderen Befehl auf "0" zurückgesetzt wird, wenn "1" in der Ver­ riegelungsschaltung 74 in der EP-Schaltung 72 gesetzt ist.
Dies gilt ebenfalls für den Einsatzbedingungsspeicherabschnitt 32. Das ist so, da der Einsatzbedingungsspeicherabschnitt 32 die Bedingungen zum Verarbeiten der Ausnahmen, die durch spekulative Befehle verursacht wurden, speichert, und dieser darf daher nicht mit einem anderen Befehl überschrieben werden.
In dem Fall des in Fig. 26 gezeigten Programms wird der Befehl I11 basierend auf dem Ergebniswert r1 des Befehls I10 ausgeführt. Da der Befehl I10 eine Ausnahme verursacht hat, ist der Ergebnis­ wert r1 kein korrekter Wert.
Ein erneutes Ausführen eines spekulativen Befehls, der eine Aus­ nahme verursacht hat, ist nicht genug. Der Mikroprozessor ent­ sprechend der sechsten Ausführungsform ist daher so entworfen, daß er alle spekulativen Befehle vor dem Einsatzpunkt (z. B. bis zum vorherigen Einsatzpunkt) erneut ausführt.
Wie in dem Vorhergehenden wird entsprechend der sechsten Ausfüh­ rungsform, da ein Verarbeitungsablauf für eine Ausnahme, die durch Ausführen eines spekulativen Befehls I2 verursacht worden ist, nicht sofort ausgeführt wird, und da ein solcher Ausnahme­ verarbeitungsablauf, falls es notwendig ist, an einem Einsatz­ punkt ausgeführt wird, ein solcher Ausnahmeverarbeitungsablauf nicht verschwendet, d. h. unnötigerweise ausgeführt. Darum können Befehle effizienter und mit höherer Geschwindigkeit verarbeitet werden.
Es ist zu bemerken, daß bei der sechsten Ausführungsform die Ver­ riegelungsschaltung 74 der Ausnahmespeicherschaltung entspricht. Der EPC 70, der Selektor 71 und ähnliches entsprechen der Ausnah­ meverarbeitungseinheit.
Siebte Ausführungsform
Entsprechend der sechsten Ausführungsform können Befehle effi­ zienter ohne übermäßige Ausnahmeverarbeitungsabläufe verarbeitet werden, aber sie weist das Problem auf, daß zum Vorsehen eines Erholungscodes, der an jedem Einsatzpunkt vorgesehen ist und ei­ ner Sprungtafel zum Aufrufen des Erholungscodes, die binäre Größe eines Programms erhöht wird und daher ein großer Bereich des Speicherbereichs der Platte (Speicherplatte) belegt wird.
Da die Anfangsadresse eines Erholungscodes jeweils in einen Ein­ trag der Sprungtafel geschrieben ist, ist zum Beispiel für einen 32-Bit-Mikroprozessor die Größe jedes Eintrages in der Sprungta­ fel 4 Byte groß. Im folgenden wird eine Gruppe von Befehlen, die parallel ausgegeben werden, als ein Befehlsblock bezeichnet. Die Anfangsadresse eines Erholungscodes ist für jeden Einsatzpunkt notwendig, und daher ist die Größe der Sprungtabelle am größten, wenn alle Befehlsblöcke Einsatzpunkte sind.
Währenddessen weist ein Erholungscode in einem Hauptprogramm (des Erholungscodes) spekulative Befehle aufeinanderfolgend angeordnet auf, und daher ist die Größe des Erholungscodes gleich oder ein wenig größer als die Größe des Hauptprogramms. Angenommen, daß die Größe des Erholungscodes ungefähr gleich der Größe des Haupt­ programmes ist, beträgt die Größe des Erholungscodes, der einem Befehlsblock entspricht, 20 Byte für einen Mikroprozessor, der 5- Byte Befehle ausgibt, in anderen Worten für einen Mikrocomputer, dessen ein Befehlsblock 20 Byte entspricht.
Darum ist das Verhältnis der Erhöhung der binären Größe des ge­ samten Programmes relativ zu der binären Größe von nur dem Haupt­ programm wie folgt gegeben:
Wie aus dem Ausdruck zu ersehen ist, ist die binäre Größe des gesamten Programmes inklusive der Sprungtafel und des Erholungs­ codes ungefähr 2,2 mal größer, als nur die binäre Größe des Hauptprogrammes.
Bei der sechsten Ausführungsform wird selbst für eine kleine Wahrscheinlichkeit des Auftretens einer Ausnahme eine hohe Wahr­ scheinlichkeit des Auftretens des Überschreitens von zwei Cash- Fehlern oder Page-Fehlern bei der Bezugnahme auf die Sprungtafel und das Ausführen des Erholungscodes erwartet, und daher kann die Leistung stark gestört sein.
Zusätzlich kann, da die Befehle in einem Erholungscode aufeinand­ erfolgend in geänderter Weise angeordnet werden, die Hardware, die zum Ausführen spekulativer Befehle in der Lage ist, nicht effektiv genutzt werden.
Fig. 27 ist eine Blockdarstellung, die den Aufbau eines gesamten Mikroprozessors entsprechend einer siebten Ausführungsform zeigt, die auf die Lösung eines solchen Problemes gerichtet ist.
Wie Fig. 27 zeigt, weist der Mikroprozessor einen Erholungspro­ grammzähler (RPC) 85 zum Speichern von Zieladressen für Verzwei­ gungsbefehle, ein TF-Register 86 zum Halten einer Bedingungsin­ formation, die anzeigt, daß eine jeweilige Bedingung "wahr", "falsch" oder "unbestimmt" ist, eine Wahr/Falsch-Berechnungs­ schaltung (TF-Berechnungsschaltung) 87 zum Addieren von Bedin­ gungsinformation, die von dem TF-Register 86 erhalten wird, und von Bedingungsinformation, die von den ALUs 2A bis 2D erhalten wird, zur Ausgabe, ein Zukünftigwahr/Zukünftigfalsch-Register (FTF-Register) 88 zum Halten von Bedingungsinformation, die von der TF-Berechnungsschaltung 87 erhalten wird, eine Unterbre­ chungssteuerschaltung (Interrupt-Steuerschaltung) 89 zum Erzeugen eines Unterbrechungssteuersignals (Interrupt-Steuersignal) als Reaktion auf ein Ausnahmeverarbeitungssignal RSE, ein Unterbre­ chungssignal oder ähnliches, eine Vergleichsschaltung 90 zum Ver­ gleichen des Wertes des Programmzählers 4 und eines Wertes des EPC 70 und zum Erzeugen eines Vergleichssignals CMP auf H-Niveau als Reaktion auf eine Übereinstimmung zwischen diesen, und ein Statusregister 91, das ein Erholungsmodusbit 92 aufweist, das als Reaktion auf das Vergleichssignal CMP auf H-Niveau zurückgesetzt wird, auf.
Anders als das TF-Register 10 in den oben beschriebenen Ausfüh­ rungsformen akzeptiert das TF-Register 86 Bedingungsinformation von der TF-Berechnungsschaltung 87 nur während des Zeitraumes, in dem das Ausnahmeverarbeitungssignal RSE auf L-Niveau ist. Genauer wird das erneute Schreiben von Bedingungsinformation in das TF- Register 10 während des Zeitraums, in dem Ausnahmeverarbeitungs­ signal RSE auf dem H-Niveau ist, verhindert. Das TF-Register 86 akzeptiert außerdem Bedingungsinformation von dem FTF-Register 88 als Reaktion auf das Vergleichssignal CMP auf H-Niveau.
Die TF-Berechnungsschaltung 87 weist m Einträge (Eingangsadres­ sen) entsprechend den Einträgen (Eingangsadressen) des TF-Regi­ sters 86 auf. Jeder Eintrag der TF-Berechnungsschaltung 87 gibt Bedingungsinformation in einen entsprechenden Eintrag in dem TF- Register 86 wie sie ist aus, falls entsprechende Bedingungsinfor­ mation nicht von den ALUs 2A bis 2D zugeführt wird, und gibt ent­ sprechende Bedingungsinformation, die von den ALUs 2A bis 2D an­ gelegt wird, aus, falls solche Information angelegt wird.
Darum gibt, wenn der erste und der zweite Eintrag in dem TF-Regi­ ster 86 "unbestimmt" halten und der dritte Eintrag "wahr" hält, und wenn die von den ALUs 2A bis 2D gelieferte Bedingungsinforma­ tion die ist, daß die entsprechende Bedingung des ersten Eintrags "wahr" ist, die TF-Berechnungsschaltung 87 "wahr" aus dem ersten Eintrag, "unbestimmt" aus dem zweiten Eintrag und "wahr" aus dem dritten Eintrag aus. Wenn der erste Eintrag in dem TF-Register 86 "falsch" hält, der zweite Eintrag "wahr" hält und der dritte Ein­ trag "unbestimmt" hält, und wenn die Bedingungsinformation, die von den ALUs 2A bis 2D zugeführt wird, die ist, daß die entspre­ chende Bedingung in dem dritten Eintrag "falsch" ist, gibt die TF-Berechnungsschaltung 87 "falsch" aus dem ersten Eintrag, "wahr" aus dem zweiten Eintrag und "falsch" aus dem dritten Ein­ trag aus.
Das FTF-Register 88 weist vergleichbar dem TF-Register 86 in Ein­ träge auf. Jeder Eintrag des FTF-Registers 88 hält eine Informa­ tion darüber, ob eine entsprechende Bedingung in der Zukunft "wahr", "falsch" oder "unbestimmt" ist.
Die Unterbrechungssteuerschaltung 89 erzeugt wie in dem Fall der Unterbrechungssteuerschaltung des herkömmlichen Mikroprozessors ein Unterbrechungssteuersignal als Reaktion auf ein Unterbrech­ ungssignal. Das Unterbrechnungssignal wird von dem Abschnitt zugeführt, an dem eine Ausnahme wie ein Überlauf oder ein Page- Fehler erzeugt wird. Das Ausnahmeverarbeitungssignal RSE, das der Unterbrechungssteuerschaltung 89 von der EP-Schaltung 72 zuge­ führt wird, ist ein solches Unterbrechungssignal. Die Unterbre­ chungssteuerschaltung 89 erzeugt darum ein Unterbrechungssteuer­ signal auch als Reaktion auf ein Ausnahmeverarbeitungssignal RSE.
Als Reaktion auf die Erzeugung eines Unterbrechungssteuersignals wird die Ausnahmebehandlung (die Routine zur Behandlung der Aus­ nahme) aufgerufen und ein Verarbeitungsablauf entsprechend der erzeugten Ausnahme wird ausgeführt. Ein Unterbrechungssteuersi­ gnal wird als Reaktion auf das Ausnahmeverarbeitungssignal RSE erzeugt, und falls als Reaktion die Ausnahmebehandlung aufgerufen wird, wird das Erholungsmodusbit 92 des Statusregisters 91 auf "1" gesetzt. Derart wird ein Erholungsmodus, wie er im folgenden beschrieben wird, erreicht. Die Ausnahmebehandlung, als Reaktion auf das Ausnahmeverarbeitungssignal RSE aufgerufen ist, speichert den Wert des RPC 85 in dem Programmzähler 4.
Die Unterbrechungssteuerschaltung 89 vergleicht eine Einsatzbe­ dingung, die in einem verarbeiteten Befehl enthalten ist, und die Bedingungsinformation des FTF-Registers 88, wenn das Erholungs­ modusbit 92 auf "1" gesetzt ist und ein Unterbrechungssignal er­ zeugt ist, und erzeugt ein Unterbrechungssteuersignal, wenn die Einsatzbedingung erfüllt ist, und die Ausnahmebehandlung, die als Reaktion aufgerufen wird, führt einen entsprechenden Ausnahmever­ arbeitungsablauf aus.
Der Betrieb des Mikroprozessors entsprechend der siebten Ausfüh­ rungsform wird beschrieben. Wie in dem Fall der sechsten Ausfüh­ rungsform wird angenommen, daß eine Ausnahme durch einen Befehl I2 mit einer Einsatzbedingung verursacht wird, wenn das in Fig. 11 gezeigte Programm ausgeführt wird.
Wenn in dem ersten Zyklus in einem Programm eine Adresse entspre­ chend eines gewissen Verzweigungsbefehls in dem Programmzähler 4 gespeichert ist, schreitet die Ausführung (des Programms) zu dem Basisblock K1 fort. Die in dem Programmzähler 4 zu der Zeit ge­ speicherte Adresse ist außerdem in dem RPC 85 gespeichert.
In dem ersten Zyklus werden die Befehle I1 bis I4 gleichzeitig ausgeführt. Falls der Befehl I2 spekulativ ausgeführt wird, wer­ den ein in dem Register r12 gespeicherter Wert und ein in dem Register r13 gespeicherter Wert addiert und der Ergebniswert wird in dem Schattenregister in dem vierten Eintrag in der Schattenre­ gisterdatei 13 gespeichert.
Der Befehl I2, der eine Ausnahme verursacht, ist spekulativ und daher wird der Verarbeitungsablauf für die Ausnahme nicht sofort ausgeführt. Anstelle dessen wird "1" in der Verriegelungsschal­ tung 74 in dem vierten Eintrag der EP-Schaltung 72 gesetzt. Die Einsatzbedingung TF[1] dazu ist in dem Einsatzbedingungsspeiche­ rabschnitt 32 in dem vierten Eintrag in der Einsatzsteuerschal­ tung 14 gespeichert.
Nachfolgend werden in dem zweiten Zyklus zwei Bedingungsbefehle C1 und C2 aufeinanderfolgend ausgeführt. Falls ein Wert in der Registerdatei r2 kleiner als ein Wert in der Registerdatei r3 ist, wird von dem ersten Eintrag in der TF-Berechnungsschaltung 87 basierend auf der Bedingungsinformation von ALUs 2A bis 2D eine Bedingungsinformation mit "wahr" ausgegeben. Derart stimmt die Einsatzbedingung TF[1], die in dem Einsatzbedingungsspeiche­ rabschnitt 32 in dem vierten Eintrag in der Einsatzsteuerschal­ tung 14 gespeichert ist, mit der Bedingungsinformation, die von der TF-Berechnungsschaltung 87 angelegt wird, überein, und daher steigt das Ausnahmeverarbeitungssignal RSE von der EP-Schaltung 72 auf das H-Niveau an. Die Unterbrechungssteuerschaltung 89 schreibt den Wert des Programmzählers 4 zu dem Zeitpunkt in den EPC 70 als Reaktion auf das Ausnahmeverarbeitungssignal RSE auf H-Niveau. Darum wird nicht die Adresse des Befehls I2, der die Ausnahme verursacht, wie sie ist geschrieben, sondern die Adresse des Bedingungsbefehls C2 wird zum Festlegen der Einsatzbedingung TF[1] des Befehls I2 geschrieben.
Die Bedingungsinformation von der TF-Berechnungsschaltung 87 wird in das FTF-Register 88 geschrieben. Falls ein Wert in dem Regi­ ster r2 kleiner als ein Wert in dem Register r3 ist, und falls ein Wert in dem Register r4 gleich einem Wert in dem Register r5 ist, wird die Bedingungsinformation "wahr" von sowohl dem ersten als auch dem zweiten Eintrag der TF-Berechnungsschaltung 87 aus­ gegeben. Die Bedingungsinformation "wahr" wird sowohl in den er­ sten als auch in den zweiten Eintrag in dem FTF-Register 88 ge­ schrieben.
Da zu dieser Zeit das Ausnahmeverarbeitungssignal RSE auf dem H- Niveau ist, wird diese Bedingungsinformation der TF-Berechnungs­ schaltung 87 nicht in das TF-Register 86 geschrieben. Genauer, obwohl der erste und der zweite Eintrag in dem TF-Register 10 an diesem Punkt entsprechend der sechsten Ausführungsform "wahr" werden, wird der erste und der zweite Eintrag in dem TF-Register 86 entsprechend der siebten Ausführungsform auf "unbestimmt" ge­ halten, und anstelle dessen werden der erste und der zweite Ein­ trag in dem FTF-Register 88 "wahr".
Die Ausnahmebehandlung wird als Reaktion auf ein Unterbrechungs­ steuersignal von der Unterbrechungsteuerschaltung 89 aktiviert. Die Ausnahmebehandlung setzt das Erholungsmodusbit 92 des Status­ registers 91 auf "1" und den Wert des RPC 85 in den Programmzäh­ ler 4. Derart ändert der Mikroprozessor seien Modus von dem ge­ wöhnlichen Modus in eine Erholungsmodus.
Da der RPC 85 die Adressen der Befehle I1 bis I4 in dem ersten Zyklus speichert, werden die Befehle von dem ersten Zyklus erneut ausgeführt. In dem Erholungsmodus führt die Ausführsteuerschal­ tung nur spekulative Befehle durch Bezugnahme auf das TF-Register 86 aus. Darum werden in dem ersten Zyklus drei spekulative Befeh­ le I2 bis I4 unter den vier Befehlen ausgeführt und der Folgebe­ fehl I1 wird nicht ausgeführt.
Da der Befehl I2 ausgeführt wird, wird erneut eine Ausnahme er­ zeugt. Zu diesem Zeitpunkt wird durch Bezugnahme auf den ersten Eintrag in dem FTF-Register 88 überprüft, ob die Einsatzbedingung TF[1] des Befehls I2 in Zukunft "wahr" oder "falsch" sein wird. Da der erste Eintrag in dem FTF-Register 88 "wahr" ist, wird ein Ausnahmeverarbeitungsablauf als Reaktion auf Unterbrechungssteu­ ersignal, das durch die Unterbrechungssteuerschaltung 89 erzeugt wird, ausgeführt. Obwohl der erste Eintrag in dem TF-Register 86 immer noch "unbestimmt" ist, wird der Ausnahmeverarbeitungsablauf basierend auf der Information, daß der erste Eintrag in der Zu­ kunft notwendigerweise "wahr" sein wird, ausgeführt.
Hierin ist, falls der Befehl I3 ebenfalls eine Ausnahme verur­ sacht, die Einsatzbedingung des Befehls I3 TF[1], der erste Ein­ trag in dem FTF-Register 88 ist "wahr" und daher wird der Ausnah­ meverarbeitungsablauf nicht ausgeführt. Hierin, der erste Eintrag in dem FTF-Register 88 ist "wahr", und in dem Fall von "unbe­ stimmt", wie in dem Fall mit dem gewöhnlichen Modus, wird als Reaktion auf das Ausnahmeerzeugungssignal SE auf H-Niveau in der Verriegelungsschaltung 74 in dem fünften Eintrag in der EP-Schal­ tung 72 "1" gesetzt.
Dieser Ausnahmeverarbeitungsablauf wird gleichzeitig mit dem Auf­ treten der Ausnahme wie in dem Fall mit einem gewöhnlichen Aus­ nahmeverarbeitungsablauf ausgeführt, und wenn einmal der Ausnah­ meverarbeitungsablauf vervollständigt ist, sind die Adressen der Befehle C1 und C2, die dem Befehl I2, der die Ausnahme verursacht hat, folgen, in dem Programmzähler 4 gespeichert, und die Ausfüh­ rung wird bei diesen Befehlen C1 und C2 wieder aufgenommen. Der Wert des Programmzählers 4 ist darum gleich dem Wert des EPC 70 und darum erzeugt die Vergleichsschaltung 90 das Vergleichssignal CMP auf H-Niveau. Als Reaktion auf das Vergleichssignal CMP auf H-Niveau, speichert das TF-Register 86 Bedingungsinformation aus dem FTF-Register 88, und das Erholungsmodusbit 92 des Statusregi­ sters 91 wird auf "0" zurückgesetzt. Derart kehrt der Mikropro­ zessor von dem Erholungsmodus in den gewöhnlichen Modus zurück.
Die siebte Ausführungsform benötigt keinen Erholungscode und kei­ ne Sprungtafel zum Aufrufen des Erholungscodes, wie es bei der sechsten Ausführungsform notwendig ist. Es ist nicht notwendig, insbesondere die binäre Größe des Programmes zum Ausführen von Ausnahmeverarbeitungsabläufen zu vergrößern. Zusätzlich ist, da die erneute Ausführung zur Erholung basierend auf dem Original­ programm ausgeführt wird, die Möglichkeit einer Ausnahme wie ei­ nes Cash-Fehlers und eines Page-Fehlers extrem gering. Darüber hinaus ist, wenn die erneute Ausführung zum Zwecke der Erholung ausgeführt wird, der Mikroprozessor zum spekulativen Ausführen von Befehlen in der Lage, und daher kann die Funktion des Prozes­ sors, der zur spekulativen Ausführung von Befehlen (in der Lage ist), effektiver genutzt werden.

Claims (21)

1. Verfahren zum Verarbeiten einer Mehrzahl von Befehlen, die jeweils eine entsprechende Einsatzbedingung unter einer Mehrzahl von Unterbedingungen aufweisen, wobei die Einsatzbedingung ir­ gendeine Unterbedingung aus den Unterbedingungen enthält, die zum letztendlichen Verarbeiten eines entsprechenden Befehls notwendig ist, wobei das Verfahren die Schritte aufweist:
Bestimmen von mindestens einer ausgewählten Unterbedingung der Unterbedingungen;
Vergleichen der Einsatzbedingung, die mindestens einem ausgewähl­ ten Befehl aus den Befehlen entspricht, mit der Mehrzahl der Un­ terbedingungen;
Erzeugen von Ergebnisdaten durch Ausführen des ausgewählten Be­ fehls nach dem Vergleich;
deterministisches Halten der erzeugten Ergebnisdaten in einem ersten Fall, in dem wahr/falsch für alle Unterbedingungen in der entsprechenden Einsatzbedingung entsprechend mit wahr/falsch in der bereits bestimmten Unterbedingung übereinstimmt, und proviso­ risches Halten der erzeugten Ergebnisdaten in einem zweiten Fall, in dem wahr/falsch für irgendeine Unterbedingung in der entspre­ chenden Einsatzbedingung entsprechend mit wahr/falsch für die bereits bestimmte Unterbedingung übereinstimmt und die anderen Unterbedingungen in der entsprechenden Einsatzbedingung noch nicht bestimmt sind;
wobei in dem zweiten Fall die provisorisch gehaltenen Ergebnis­ daten an einem Einsatzzeitpunkt in deterministischer Weise erneut gehalten werden, wenn wahr/falsch für alle Unterbedingungen in der entsprechenden Einsatzbedingung entsprechend mit wahr/ falsch für die bereits bestimmten Unterbedingungen übereinstimmen.
2. Verfahren nach Anspruch 1, gekennzeichnet durch die Schrit­ te:
sofortige Behandlung einer Ausnahme auf das Auftreten einer Aus­ nahme während der Verarbeitung des ausgewählten Befehls in dem ersten Fall;
Speichern des Auftretens einer Ausnahme auf das Auftreten einer Ausnahme während der Verarbeitung des ausgewählten Befehls in dem zweiten Fall; und
Behandlung der Ausnahme an dem Einsatzzeitpunkt, wenn das Auftre­ ten der Ausnahme gespeichert ist.
3. Verfahren nach Anspruch 1 oder 2, gekennzeichnet durch die Schritte:
sofortige Behandlung einer Ausnahme auf das Auftreten einer Aus­ nahme während der Verarbeitung des ausgewählten Befehls in dem ersten Fall hin, und
Speichern des Auftretens einer Ausnahme auf das Auftreten einer Ausnahme während der Verarbeitung des ausgewählten Befehls in dem zweiten Fall hin;
erneute Verarbeitung aller Befehle aus der Mehrzahl der Befehle, die bis zu dem Einsatzzeitpunkt verarbeitet worden sind, wenn das Auftreten der Ausnahme zu dem Einsatzzeitpunkt gespeichert ist; und
sofortige Behandlung einer Ausnahme auf das erneute Auftreten der Ausnahme während des erneuten Verarbeitens des Befehls hin.
4. Verfahren zum Verarbeiten einer Mehrzahl von Befehlen, die jeweils eine entsprechende Einsatzbedingung aufweisen, durch eine Mehrzahl von Verarbeitungsstufen unter einer Pipeline-Steuerung unter einer Mehrzahl von Unterbedingungen, wobei die Einsatzbe­ dingung irgendeine Unterbedingung aus den genannten Unterbedin­ gungen enthält, die zum letztendlichen Verarbeiten des ent­ sprechenden Befehls notwendig ist, wobei das Verfahren die Schritte aufweist:
Bestimmen von mindesten einer ausgewählten Unterbedingung aus den Unterbedingungen;
Vergleichen einer Einsatzbedingung, die mindestens einem ausge­ wählten Befehl der Befehle entspricht, mit der Mehrzahl der Un­ terbedingungen in einer der Mehrzahl von Verarbeitungsstufen; in einem ersten Fall, in dem wahr/falsch für alle Unterbedingun­ gen in der entsprechenden Einsatzbedingung entsprechend mit wahr/falsch für die bereits bestimmten Unterbedingungen überein­ stimmt, Erzeugen einer ersten Behandlungsinformation, die an­ zeigt, daß die durch Ausführung des ausgewählten Befehls zu er­ zeugenden Ergebnisdaten zum Zeitpunkt des Bewegens zu einer nach­ folgenden Stufe deterministisch gehalten werden sollen, und in einem zweiten Fall, in dem wahr/falsch für irgendeine Unterbedin­ gung in der entsprechenden Einsatzbedingung entsprechend mit wahr/falsch für die bereits bestimmten Unterbedingungen überein­ stimmt und die anderen Unterbedingungen in der entsprechenden Einsatzbedingung noch nicht bestimmt sind, Erzeugen einer zweiten Handhabungsinformation, die anzeigt, daß die durch Ausführung des ausgewählten Befehls zu erzeugenden Ergebnisdaten zum Zeitpunkt des Bewegens zu einer nachfolgenden Stufe provisorisch gehalten werden sollen;
Erzeugen von Ergebnisdaten durch Ausführen des ausgewählten Be­ fehls nach dem Vergleich;
deterministisches Halten der erzeugten Ergebnisdaten basierend auf der ersten Handhabungsinformation in dem ersten Fall, und provisorisches Halten der erzeugten Ergebnisdaten basierend auf der zweiten Handhabungsinformation in dem zweiten Fall;
wobei in dem zweiten Fall, wenn wahr/falsch für alle Unterbedin­ gung in der entsprechenden Einsatzbedingung entsprechend mit wahr/falsch für die bereits bestimmten Unterbedingungen überein­ stimmen, die provisorisch gehaltenen Ergebnisdaten in determini­ stischer Weise erneut gehalten werden.
5. Verfahren nach Anspruch 4, gekennzeichnet durch die Schrit­ te:
erneutes Vergleichen der entsprechenden Einsatzbedingung mit der Mehrzahl der Unterbedingungen nach der Erzeugung der ersten oder der zweiten Handhabungsinformation in einer anderen Stufe nach der einen Verarbeitungsstufe; und
Ändern der zweiten Handhabungsinformation in die erste Handha­ bungsinformation zu dem Zeitpunkt des Bewegens zu einer nachfol­ genden Verarbeitungsstufe, wenn das Ergebnis des erneuten Ver­ gleichs anzeigt, daß sich der zweite Fall in den ersten Fall ge­ ändert hat.
6. Prozessor zum Verarbeiten einer Mehrzahl von Befehlen, die jeweils eine entsprechende Einsatzbedingung aufweisen, wobei die Einsatzbedingung irgendeine Unterbedingung aus einer Mehrzahl von Unterbedingungen aufweist, die zum letztendlichen Verarbeiten eines entsprechenden Befehls notwendig ist, wobei der Prozessor aufweist:
ein Betriebsmittel (2A-2D) zum Ausführen von mindestens einem ausgewählten Befehl aus den Befehlen und zum Bestimmen von minde­ stens einer ausgewählten Unterbedingung aus den Unterbedingungen;
einem Datenhaltemittel (12, 13; 65, 66) zum deterministischen oder provisorischen Halten von durch die Ausführung des ausge­ wählten Befehls durch das Betriebsmittel erzeugten Ergebnisdaten;
ein Wahr/Falsch-Haltemittel (10; 60, 61; 86), das eine Mehrzahl von Einträgen entsprechend der Mehrzahl von Unterbedingungen auf­ weist, wobei die Einträge jeweils eine Information halten, die eine erste Bedingungsinformation, die anzeigt, daß eine entspre­ chende Unterbedingung wahr ist, eine zweite Bedingungsinforma­ tion, die anzeigt, daß die entsprechende Unterbedingung falsch ist, oder eine dritte Bedingungsinformation, die anzeigt, daß wahr/falsch für die entsprechende Unterbedingung unbestimmt ist, ist;
ein Ausführsteuermittel (11) zum Vergleichen der entsprechenden Einsatzbedingung mit der Bedingungsinformation, die von dem Wahr/Falsch-Haltemittel erhalten wird, das (i) das Datenhaltemit­ tel zum deterministischen Halten der Ergebnisdaten in einem er­ sten Fall steuert, in dem wahr/falsch für alle Unterbedingungen in der entsprechenden Einsatzbedingung entsprechend mit der allen Unterbedingungen entsprechenden Bedingungsinformation überein­ stimmt, und das (ii) das Datenhaltemittel zum provisorischen Hal­ ten der Ergebnisdaten in einem zweiten Fall steuert, in dem wahr/falsch für irgendeine Unterbedingung in der entsprechenden Einsatzbedingung entsprechend mit der zu der Unterbedingung ent­ sprechenden Bedingungsinformation übereinstimmt und die den ande­ ren Unterbedingungen in der entsprechenden Einsatzbedingung ent­ sprechende Bedingungsinformation die dritte Bedingungsinformation ist; und
ein Einsatzsteuermittel (14) zum Vergleichen der entsprechenden Einsatzbedingung mit der von dem Wahr/Falsch-Haltemittel erhal­ tenen Bedingungsinformation und zum Steuern des Datenhaltemittels zum erneuten Halten der provisorisch gehaltenen Ergebnisdaten in deterministischer Weise zu einem Einsatzzeitpunkt, wenn wahr/falsch für alle Unterbedingungen in der entsprechenden Ein­ satzbedingung entsprechend mit der Bedingungsinformation, die allen Unterbedingungen entspricht, übereinstimmt.
7. Prozessor nach Anspruch 6, dadurch gekennzeichnet,
daß das Datenhaltemittel
ein erstes Registermittel (12) zum deterministischen Halten der Ergebnisdaten und
ein zweites Registermittel (13) zum provisorischen Halten der Ergebnisdaten aufweist.
8. Prozessor nach Anspruch 7, dadurch gekennzeichnet,
daß das Ausführsteuermittel
ein Vergleichsmittel (17) zum Vergleichen der entsprechenden Ein­ satzbedingung mit der von dem Wahr/Falsch-Haltemittel erhaltenen Bedingungsinformation und
ein Mittel (18, 19A, 19B) zum (i) Steuern des ersten Registermit­ tels zum Halten der Ergebnisdaten in dem ersten Fall und (ii) zum Steuern des zweiten Registermittels zum Halten der Ergebnisdaten in dem zweiten Fall aufweist.
9. Prozessor nach Anspruch 7 oder 8, dadurch gekennzeichnet,
daß das Einsatzsteuermittel
ein Speichermittel (32) zum Speichern der entsprechenden Einsat­ zbedingung,
ein Vergleichsmittel (17) zum Vergleichen der in dem Speichermit­ tel gespeicherten Einsatzbedingung mit der von dem Wahr/Falsch- Haltemittel erhaltenen Bedingungsinformation und
ein Übertragungsmittel (33, 34) zum Übertragen der durch das zweite Registermittel erhaltenen Ergebnisdaten an das erste Regi­ stermittel zu dem Einsatzzeitpunkt aufweist.
10. Prozessor nach einem der Ansprüche 6 bis 9, dadurch gekenn­ zeichnet, daß das Datenhaltemittel ein Kennzeichen zum Spezifizieren, ob das Datenhaltemittel die Ergebnisdaten deterministisch oder proviso­ risch hält, aufweist.
11. Prozessor nach einem der Ansprüche 6 bis 10, dadurch gekenn­ zeichnet,
daß ein Bedingungsbefehl zum Bestimmen von mindestens einer Un­ terbedingung der Unterbedingungen eine entsprechende zweite Ein­ satzbedingung aufweist,
daß jeder Eintrag des Wahr/Falsch-Haltemittels die Bedingungsin­ formation deterministisch oder provisorisch hält,
daß das Ausführsteuermittel die zweite Einsatzbedingung, die dem Bedingungsbefehl entspricht, mit der von dem Wahr/Falsch-Halte­ mittel erhaltenen Bedingungsinformation vergleicht, wobei es (i) in einem dritten Fall, in dem wahr/falsch für alle Unterbedingun­ gen in der zweiten Einsatzbedingung, die dem Bedingungsbefehl entspricht, entsprechend mit der Bedingungsinformation, die allen Unterbedingungen entspricht, übereinstimmt, das Wahr/Falsch-Hal­ temittel zum deterministischen Halten der ersten oder der zweiten Bedingungsinformation, die durch Bestimmung der ausgewählten Un­ terbedingung durch das Betriebsmittel entsprechend des Bedin­ gungsbefehls erzeugt wird, steuert, und wobei es (ii) in einem vierten Fall, in dem wahr/falsch für irgendwelche Unterbedingungen in der zweiten Einsatzbedingung, die dem Bedingungsbefehl ent­ spricht, mit der Bedingungsinformation, die der entsprechenden Unterbedingung entspricht, übereinstimmt und die den anderen Un­ terbedingungen in der zweiten Einsatzbedingung, die dem Bedin­ gungsbefehl entspricht, entsprechende Bedingungsinformation die dritte Bedingungsinformation ist, das Wahr/Falsch-Haltemittel zum provisorischen Halten der ersten oder zweiten Bedingungsinforma­ tion, die durch Bestimmung der ausgewählten Unterbedingung durch das Betriebsmittel entsprechend des Bedingungsbefehls erzeugt ist, steuert, und
wobei der Prozessor weiter ein zweites Einsatzsteuermittel (62) aufweist zum Vergleichen der zweiten Einsatzbedingung, die dem Bedingungsbefehl entspricht, mit der von dem Wahr/Falsch-Halte­ mittel erhaltenen Bedingungsinformation und zum Steuern des Wahr/Falsch-Haltemittels zum erneuten Halten der ersten oder der zweiten Bedingungsinformation, die provisorisch durch das Wahr/ Falsch-Haltemittel gehalten wird, in einer deterministischen Wei­ se an einem zweiten Einsatzzeitpunkt, wenn alle Unterbedingungen in der Einsatzbedingung, die dem Bedingungsbefehl entspricht, mit der Bedingungsinformation, die allen Unterbedingungen entspricht, übereinstimmt.
12. Prozessor nach einem der Ansprüche 6 bis 11, dadurch gekenn­ zeichnet,
daß das Wahr/Falsch-Haltemittel
ein erstes Wahr/Falsch-Registermittel (60), das eine Mehrzahl von Einträgen enthält, die der Mehrzahl von Unterbedingungen entspre­ chen, wobei jeder Eintrag die Bedingungsinformation determini­ stisch hält, und
ein zweites Wahr/Falsch-Registermittel (61), das eine Mehrzahl von Einträgen enthält, die der Mehrzahl von Unterbedingungen ent­ sprechen, wobei jeder Eintrag die Bedingungsinformation proviso­ risch hält, aufweist.
13. Prozessor nach einem der Ansprüche 6 bis 12, gekennzeichnet durch
ein Ausnahmespeichermittel (72) zum Speichern des Auftretens ei­ ner Ausnahme, wenn eine Ausnahme während des Zeitraums der Ver­ arbeitung des ausgewählten Befehls in dem zweiten Fall auftritt, und
ein Ausnahmebehandlungsmittel zum Behandeln der Ausnahme zu dem Einsatzzeitpunkt, falls das Ausnahmespeichermittel das Auftreten der Ausnahme speichert.
14. Prozessor nach Anspruch 13, dadurch gekennzeichnet, daß das Ausnahmebehandlungsmittel weiter ein Wiederverarbeitungsmittel zum erneuten Verarbeiten eines Be­ fehles aus der Mehrzahl von Befehlen, dessen Ergebnisdaten minde­ stens zwischen dem Auftreten der Ausnahme und dem Einsatzzeit­ punkt provisorisch gehalten worden sind, vor der Behandlung der Ausnahme aufweist.
15. Prozessor nach Anspruch 14, dadurch gekennzeichnet, daß das Wiederverarbeitungsmittel aufeinanderfolgend eine Mehr­ zahl von Befehlen erneut verarbeitet, deren Ergebnisdaten provi­ sorisch gehalten worden sind.
16. Prozessor nach einem der Ansprüche 13 bis 15, dadurch ge­ kennzeichnet, daß das Ausnahmespeichermittel seinen Speicherinhalt daran hin­ dert, überschrieben zu werden, während es das Auftreten der Aus­ nahme speichert.
17. Prozessor nach einem der Ansprüche 6 bis 16, gekennzeichnet durch
ein Wahr/Falsch-Berechnungsmittel (87) zum Hinzufügen von Bedin­ gungsinformation, die durch Bestimmung der ausgewählten Unterbe­ dingung durch das Betriebsmittel erzeugt ist, zu der Bedingungs­ information, die von dem Wahr/Falsch-Haltemittel erhalten wird;
ein Ausnahmespeichermittel (72) zum Speichern des Auftretens ei­ ner Ausnahme, wenn die Ausnahme während der Verarbeitung des aus­ gewählten Befehls in dem zweiten Fall auftritt;
ein Zukünftigwahr/Zukünftigfalsch-Haltemittel (88) zum Halten der Bedingungsinformation, die von dem Wahr/Falsch-Berechnungsmittel erhalten wird;
ein Wiederverarbeitungsmittel zur erneuten Verarbeitung der Be­ fehle aus der Mehrzahl der Befehle, die bis zu dem Einsatzzeit­ punkt bereits verarbeitet worden sind, falls das Ausnahmespei­ chermittel das Auftreten der Ausnahme zu dem Einsatzzeitpunkt speichert; und
eine Ausnahmebehandlungsmittel (70, 89) zum Vergleichen einer Einsatzbedingung, die einem Befehl entspricht, der die Ausnahme verursacht hat, mit der Bedingungsinformation, die von dem Zukünftigwahr/Zukünftigfalsch-Haltemittel erhalten wird, wenn die Ausnahme während des Zeitraums, in dem das Wiederverarbeitungs­ mittel den Befehl erneut verarbeitet, wieder auftritt, und zum Behandeln der Ausnahme, falls wahr/falsch für alle Unterbedingun­ gen in der entsprechenden Einsatzbedingung mit der Bedin­ gungsinformation, die allen Unterbedingungen entspricht, überein­ stimmen,
wobei das Wahr/Falsch-Haltemittel die von dem Wahr/Falsch-Berech­ nungsmittel während des Zeitraums, in dem das Wiederverarbei­ tungsmittel den Befehl erneut verarbeitet, erhaltene Bedingungs­ information nicht akzeptiert und andernfalls die Bedingungsinfor­ mation akzeptiert, und wobei es die Bedingungsinformation, die von dem Zukünftigwahr/Zukünftigfalsch-Haltemittel erhalten wird, wenn die erneute Verarbeitung des Befehls durch das Wiederverar­ beitungsmittel abgeschlossen ist, akzeptiert.
18. Prozessor nach Anspruch 17, dadurch gekennzeichnet, daß das Wiederverarbeitungsmittel selektiv den Befehl in dem zweiten Fall aus den Befehlen erneut verarbeitet.
19. Prozessor nach Anspruch 17 oder 18, dadurch gekennzeichnet, daß das Ausnahmespeichermittel seinen Speicherinhalt daran hin­ dert, beschrieben zu werden, während es das Auftreten der Ausnah­ me speichert.
20. Prozessor zum Verarbeiten einer Mehrzahl von Befehlen, die jeweils eine entsprechende Einsatzbedingung aufweisen, unter ei­ ner Pipeline-Steuerung durch eine Mehrzahl von Verarbeitungsstu­ fen unter einer Mehrzahl von Unterbedingungen, wobei die Einsatz­ bedingung irgendeine Unterbedingung enthält, die zum letztendli­ chen Verarbeiten des entsprechenden Befehls unter den Unterbedin­ gungen notwendig ist, wobei der Prozessor aufweist:
ein Betriebsmittel (2A-2D) zum Ausführen von mindestens einem ausgewählten Befehl aus den Befehlen und zum Bestimmen von minde­ stens einer ausgewählten Unterbedingung aus den Unterbedingungen;
ein Datenhaltemittel (12, 13) zum deterministischen oder provi­ sorischen Halten von durch die Ausführung des ausgewählten Befehls durch das Betriebsmittel erzeugten Ergebnisdaten;
ein Wahr/Falsch-Haltemittel (10), das eine Mehrzahl von Einträgen enthält, die der Mehrzahl von Unterbedingungen entspricht, wobei jeder Eintrag eine Information hält, die eine erste Bedingungs­ information, die anzeigt, daß die entsprechende Unterbedingung wahr ist, eine zweite Bedingungsinformation, die anzeigt, daß die entsprechende Unterbedingung falsch ist, oder eine dritte Bedin­ gungsinformation, die anzeigt, daß wahr/falsch für die entspre­ chende Bedingung unbestimmt ist, ist;
ein Informationserzeugungsmittel (11) in einer aus der Mehrzahl von Verarbeitungsstufen zum Vergleichen der entsprechenden Ein­ satzbedingung mit der Bedingungsinformation, die von dem Wahr/ Falsch-Haltemittel erhalten wird, wobei es (i) in einem ersten Fall, in dem wahr/falsch für alle Unterbedingungen in der ent­ sprechenden Einsatzbedingung entsprechend mit den Bedingungsin­ formationen, die allen Unterbedingungen entsprechen, übereinstim­ men, eine erste Handhabungsinformation erzeugt, die anzeigt, daß durch die Ausführung des ausgewählten Befehls durch das Betriebs­ mittel erzeugte Ergebnisdaten zum Zeitpunkt des Bewegens zu einer nachfolgenden Stufe provisorisch sind, und es (ii) in einem zwei­ ten Fall, in dem wahr/falsch für irgendeine Unterbedingung in einer entsprechenden Einsatzbedingung entsprechend mit der Bedin­ gungsinformation, die der entsprechenden irgendeinen Unterbedin­ gung entspricht, übereinstimmt und die Bedingungsinformationen, die den anderen Unterbedingungen in der entsprechenden Einsatz­ bedingung entsprechen, die dritte Bedingungsinformation sind, eine zweite Handhabungsinformation, die anzeigt, daß die durch die Ausführung des ausgewählten Befehls durch das Betriebsmittel zu erzeugenden Ergebnisdaten zum Zeitpunkt des Bewegens zu einer nachfolgenden Verarbeitungsstufe provisorisch sind, erzeugt;
ein Schreibsteuermittel (52), das das Datenhaltemittel (i) ent­ sprechend der ersten Handhabungsinformation in dem ersten Fall zum deterministischen Halten der durch das Betriebsmittel erzeug­ ten Ergebnisdaten und (ii) entsprechend der zweiten Handhabungs­ information in dem zweiten Fall zum provisorischen Halten der durch das Betriebsmittel erzeugten Ergebnisdaten steuert; und
ein Einsatzsteuermittel (14) zum Vergleichen der entsprechenden Einsatzbedingung mit der von dem Wahr/Falsch-Haltemittel erhal­ tenen Bedingungsinformation und zum Steuern des Datenhaltemittels zum deterministischen erneuten Halten der Ergebnisdaten, die zu einem Einsatzzeitpunkt provisorisch gehalten worden sind, an dem wahr/falsch für alle Unterbedingungen in der entsprechenden Ein­ satzbedingung entsprechend mit den Bedingungsinformationen, die allen Unterbedingungen entsprechen, übereinstimmen.
21. Prozessor nach Anspruch 20, gekennzeichnet durch ein Informationsänderungsmittel (41, 42, 43) zum Ändern der zwei­ ten Handhabungsinformation in die erste Handhabungsinformation zu dem Zeitpunkt des Bewegens zu einer nachfolgenden Verarbeitungs­ stufe in einer anderen Verarbeitungsstufe nach der einen Verar­ beitungsstufe, in der das Informationserzeugungsmittel die erste oder die zweite Handhabungsinformation erzeugt, wenn der erste Fall sich in den zweiten Fall geändert hat.
DE4434529A 1993-09-28 1994-09-27 Verfahren zum Verarbeiten eines Befehls mit Einsatzbedingung und Vorrichtung dazu Ceased DE4434529A1 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP24116293 1993-09-28
JP28352193 1993-11-12
JP6133106A JPH07182165A (ja) 1993-09-28 1994-06-15 コミット条件付き命令の処理方法およびその装置

Publications (1)

Publication Number Publication Date
DE4434529A1 true DE4434529A1 (de) 1995-04-06

Family

ID=27316636

Family Applications (1)

Application Number Title Priority Date Filing Date
DE4434529A Ceased DE4434529A1 (de) 1993-09-28 1994-09-27 Verfahren zum Verarbeiten eines Befehls mit Einsatzbedingung und Vorrichtung dazu

Country Status (2)

Country Link
US (1) US5761467A (de)
DE (1) DE4434529A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8326903B2 (en) 2008-01-04 2012-12-04 International Business Machines Corporation System and method for improved vector analysis

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3494489B2 (ja) * 1994-11-30 2004-02-09 株式会社ルネサステクノロジ 命令処理装置
US5854928A (en) * 1996-10-10 1998-12-29 Hewlett-Packard Company Use of run-time code generation to create speculation recovery code in a computer system
US6314513B1 (en) * 1997-09-30 2001-11-06 Intel Corporation Method and apparatus for transferring data between a register stack and a memory resource
US6263401B1 (en) 1997-09-30 2001-07-17 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for transferring data between a register stack and a memory resource
US7761857B1 (en) * 1999-10-13 2010-07-20 Robert Bedichek Method for switching between interpretation and dynamic translation in a processor system based upon code sequence execution counts
US6594821B1 (en) 2000-03-30 2003-07-15 Transmeta Corporation Translation consistency checking for modified target instructions by comparing to original copy
JP3532835B2 (ja) * 2000-07-04 2004-05-31 松下電器産業株式会社 データ処理装置およびプログラム変換装置
US7003762B2 (en) * 2002-08-01 2006-02-21 Sas Institute Inc. Computer-implemented exception handling system and method
US7320121B2 (en) * 2002-08-01 2008-01-15 Sas Institute Inc. Computer-implemented system and method for generating embedded code to add functionality to a user application
US7310723B1 (en) * 2003-04-02 2007-12-18 Transmeta Corporation Methods and systems employing a flag for deferring exception handling to a commit or rollback point
US8413162B1 (en) 2005-06-28 2013-04-02 Guillermo J. Rozas Multi-threading based on rollback
WO2012103359A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Hardware acceleration components for translating guest instructions to native instructions
WO2013095569A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Method, apparatus and system for selective execution of a commit instruction
WO2014151652A1 (en) 2013-03-15 2014-09-25 Soft Machines Inc Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor
EP2972798B1 (de) 2013-03-15 2020-06-17 Intel Corporation Verfahren und vorrichtung für eine gastadressenstapelemulation mit unterstützung einer spekulation

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5129079A (en) * 1985-02-18 1992-07-07 Fujitsu Limited Computer system having subinstruction surveillance capability

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5459845A (en) * 1990-12-20 1995-10-17 Intel Corporation Instruction pipeline sequencer in which state information of an instruction travels through pipe stages until the instruction execution is completed
JPH0820949B2 (ja) * 1991-11-26 1996-03-04 松下電器産業株式会社 情報処理装置
US5421022A (en) * 1993-06-17 1995-05-30 Digital Equipment Corporation Apparatus and method for speculatively executing instructions in a computer system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5129079A (en) * 1985-02-18 1992-07-07 Fujitsu Limited Computer system having subinstruction surveillance capability

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
MAHLKE, S.A. (u.a.): Sentinel Scheduling for VLIW and Superscalar Processors, ASPLOS V-Oct. 1992/MA, USA, 1992, ACM 0-89791-53-5-6/92/0010/0238, S. 238-247 *
SMITH, M.D. (u.a.) Efficient Superscalar Performance Through Boosting, ASPLOS v-Oct. 1992/MA, USA, 1992, ACM 0-89791-53-5-6/92/ 0010/0248, S. 248-359 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8326903B2 (en) 2008-01-04 2012-12-04 International Business Machines Corporation System and method for improved vector analysis

Also Published As

Publication number Publication date
US5761467A (en) 1998-06-02

Similar Documents

Publication Publication Date Title
DE2714805C2 (de)
DE69028138T2 (de) Mechanismus zur präzisen Behandlung von Ausnahmebedingungen in einem Prozessor mit gepaarten Befehlen
DE3650413T2 (de) Verfahren und Vorrichtung zur Annulierung eines Befehls.
DE3751297T2 (de) Schaltung zur Programmsteuerung.
DE4329336C2 (de) Einrichtung und Verfahren zur Identifizierung eines Computer-Mikroprozessors
DE3853613T2 (de) Mikrorechner mit flexiblen anwendungsspezifischen integrierten Schaltungen.
DE3851488T2 (de) Registerverwaltungssystem mit Ausführung von Befehlen in Unordnung in einem Computerprozessor.
DE2846495C2 (de) Zentraleinheit
DE4434529A1 (de) Verfahren zum Verarbeiten eines Befehls mit Einsatzbedingung und Vorrichtung dazu
DE3587058T2 (de) Fehlerbeseitigungssystem in einem datenprozessor mit einem steuerspeicher.
DE3689595T2 (de) Datenverarbeitungssystem.
DE4434895C2 (de) Verfahren und Vorrichtung zur Behandlung von Ausnahmebedingungen
DE68924400T2 (de) Fliessbanddatenverarbeitungsvorrichtung.
DE68927029T2 (de) Pipelineprozessor
DE2611892C2 (de) Mikroprogramm-Steueranordnung
DE1499200B2 (de) Datenverarbeitungsanlage mit vorranggesteuerter programm unterbrechung
DE2907181A1 (de) Befehlssatz-modifizierregister fuer einen datenprozessor
DE112005002370T5 (de) Ausführung von Kontrollbefehlen in redundanten Multithreadingumgebungen
DE2715073A1 (de) Mikroprogrammierte rechner-steuervorrichtung
DE19824289A1 (de) Pipelineverarbeitungsmaschine
DE3751287T2 (de) Während einer Instruktionsausführung eine Unterbrechungsanforderung empfangender Mikroprogrammkontrolleur.
DE2906685C2 (de)
DE19652290A1 (de) Mikrocomputer
DE2702722A1 (de) Instruktionsinterpretation in elektronischen datenverarbeitungsanlagen
DE4222275A1 (de) Parallelprozessor und betriebsverfahren eines solchen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8131 Rejection