DE19543880B4 - Verarbeitungseinrichtung, die in der Lage ist eine Anweisung spekulativ auszuführen - Google Patents

Verarbeitungseinrichtung, die in der Lage ist eine Anweisung spekulativ auszuführen Download PDF

Info

Publication number
DE19543880B4
DE19543880B4 DE1995143880 DE19543880A DE19543880B4 DE 19543880 B4 DE19543880 B4 DE 19543880B4 DE 1995143880 DE1995143880 DE 1995143880 DE 19543880 A DE19543880 A DE 19543880A DE 19543880 B4 DE19543880 B4 DE 19543880B4
Authority
DE
Germany
Prior art keywords
instruction
branch
condition
entry
decoded
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE1995143880
Other languages
English (en)
Other versions
DE19543880A1 (de
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 JP29669594A external-priority patent/JP3494489B2/ja
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to DE19549468A priority Critical patent/DE19549468C2/de
Priority claimed from DE19549468A external-priority patent/DE19549468C2/de
Publication of DE19543880A1 publication Critical patent/DE19543880A1/de
Application granted granted Critical
Publication of DE19543880B4 publication Critical patent/DE19543880B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

Verarbeitungseinrichtung, die in der Lage ist, eine Anweisung spekulativ auszuführen, wobei ein Ergebnis der Ausführung der Anweisung gültig wird, wenn Vorhersagen über das Zutreffen einer oder mehrerer Abzweigungsbedingungen alle korrekt sind, mit:
einer Bearbeitungseinrichtung (2A–2D) zum gleichzeitigen Ausführen einer Mehrzahl der Anweisungen und zur Bestimmung des Zutreffens der Abzweigungsbedingung;
einer Datenhalteeinrichtung, die eine erste Datenhalteeinrichtung (12) und eine zweite Datenhalteeinrichtung (13) enthält, zum Halten der als Ergebnis der Ausführung der Anweisungen durch die Bearbeitungseinrichtung (2A–2D) erhaltenen Daten;
einer Treffer-/Verfehlt-Halteeinrichtung (10) mit einem oder mehreren Bestimmungseinträgen, die jeweils einer Abzweigungsbedingung entsprechen, wobei jeder Bestimmungseintrag
(i) unbestimmte Information hält, wenn das Zutreffen der entsprechenden Abzweigungsbedingung noch nicht durch die Bearbeitungseinrichtung (2A–2D) bestimmt ist,
(ii) Treffer-Information hält, wenn eine Vorhersage über das Zutreffen der entsprechenden Abzweigungsbedingung durch die Bearbeitungseinrichtung (2A–2D) als korrekt bestimmt wurde,
(iii) Verfehlt-Information hält, wenn eine Vorhersage über das Zutreffen der entsprechenden Abzweigungsbedingung durch...

Description

  • Die vorliegende Erfindung bezieht sich auf eine Verarbeitungs einrichtung, die in der Lage ist eine Anweisung spekulativ auszuführen.
  • 17 stellt ein Blockdiagramm dar, welches einen Aufbau eines Mikroprozessors als herkömmliche Verarbeitungseinrichtung zeigt.
  • Mit Bezug auf 17 schließt der Mikroprozessor eine Registerdatei 1, die aus einer Mehrzahl von Registern gebildet ist, eine arithmetische und logische Einheit (im weiteren als ALU bezeichnet) 2 zur Ausführung eines Vorgangs an Daten, die in der Registerdatei 1 gehalten werden, einen Speicher 3 zum Halten von Anweisungen eines Anweisungscodes, einen Programmzähler 4 zum Halten der Adressen für auszführende Anweisungen und zum Zu führen einer jeden solchen Adresse an den Speicher 3 und eine Schaltung 5 zum Inkrementieren des Programmzähles 4 ein.
  • Der Mikroprozessor weist weiterhin ein Anweisungsregister 6 zum Halten eines Anweisungscodes, der aus dem Speicher 3 geholt wurde, einen Anweisungsdekoder 7 zum Dekodieren des Anweisungscodes und zur Erzeugung eines Steuersignals zur Steuerung des Lesens/Schreibens aus/in die Registerdatei 1 und ein Steuersignal zum Steuern der ALU 2, eine Testschaltung 8 zum Bestimmen einer Abzweigungsbedingung auf der Grundlage der aus der Registerdatei 1 ausgelesenen Daten und eine Schaltung 9 zur Errechnung einer Zieladresse in Reaktion auf ein Steuersignal der Testschaltung 8 auf.
  • Im folgenden wird der Betrieb des Mikroprozessors beschrieben.
  • Eine Anweisung, die von den im Speicher 3 gehaltenen Anweisungen ausgeführt werden soll wird zuerst durch den Programmzähler 4 adressiert. Die adressierte Anweisung wird aus dem Speicher 3 geholt und im Anweisungsregister 6 gehalten. Die im Anweisungsregister 6 gehaltene Anweisung wird durch den Anweisungsdekodierer 7 dekodiert und das Lesen/Schreiben in/aus der Registerdatei 1 wird gesteuert und die ALU 2 wird in Reaktion auf den Inhalt der Anweisung gesteuert.
  • Wenn die durch das Anweisungsregister 6 geholte Anweisung eine Ausführungsanweisung darstellt, so werden Daten jeweils von zwei Registern der Registerdatei 1 ausgelesen. Diese Teile der ausgelesenen Daten werden durch die ALU 2 verarbeitet und der daraus resultierende Datenwert wird in ein Register der Registerdatei 1 geschrieben.
  • Ist indessen eine durch das Anweisungsregister 6 geholte Anweisung eine Abzweigungsanweisung bzw. Entscheidungsanweisung, so werden zwei aus der Registerdatei 1 ausgelesene Datenteile der Testschaltung 8 zugeführt. Auf der Grundlage dieser Datenteile bestimmt die Testschaltung 8 ob die Abzweigungsbedingung erfüllt wird. Genauer, die Testschaltung 8 bestimmt ob die Be dingung wahr oder falsch ist. Ist die Bedingung wahr, so wird die Zieladresse durch die Zieladressenberechnungsschaltung 9 errechnet und dem Programmzähler 4 zugeführt. Ist die Bedingung falsch, so wird der Programmzähler 4 inkrementiert.
  • 5 stellt ein Flußablaufdiagramm eines Beispiels eines Programms dar. Gemäß dieses Flußdiagramms wird die Anweisung a1 : r2 = r0 + r1 (genauer, die Werte der Register r0 und r1 der Registerdatei 1 werden addiert und im Register r2 der Registerdatei 1 gespeichert) in einem Grundblock A ausgeführt. Nachdem die Bedingung a2 : if (r2 < r3) bestimmt ist, werden entweder Grundblock B oder E initiert. Genauer gesagt wird die Anweisung b1 : r4 = r12 + r13 im Grundblock B ausgeführt, wenn r2 < r3 als Falsch bestimmt wurde und die Anweisung e1 (nicht gezeigt) im Grundblock E wird ausgeführt, wenn r2 < r3 als Wahr bestimmt wird.
  • Gemäß des oben beschriebenen herkömmlichen Mikroprozessors kann weder die Anweisung b1 in Block B noch die Anweisung b1 in Block E ausgeführt werden, bis die Bedingung a2 in Block A bestimmt ist. Zum Beispiel werden Daten, die aus der Ausführung der Anweisung b1 resultieren in ein Register r4 in der Registerdatei 1 nur dann geschrieben, wenn die Bedingung a2 in Block A Falsch ist. Das Schreiben von Daten, die aus der Ausführung der Anweisung b1 im Register r4 mit der wahren Bedingung r2 resultieren zerstört Daten, die zuvor im Register r4 gehalten wurden.
  • Dementsprechend ist der herkömmliche Mikroprozessor nicht in der Lage Anweisungen b1, c1 und d1, die auf der Grundlage der Bedingungen a2 in Block A, b2 in Block B und c2 in Block C, wie dies in 5 gezeigt ist, ausgeführt werden sollen, auszuführen, bis die Bedingungen a2, b2 und c2 bestimmt sind.
  • Obwohl Mikroprozessoren mit einer Mehrzahl von ALU's in den letzten Jahren vorgeschlagen wurden, kann ein solcher Mikroprozessor immer noch nicht eine Anweisung, die auf der Grundlage einer oder mehrerer Bedingungen ausgeführt wird, ausführen, be vor diese Bedingungen bestimmt sind. Da einige aus der Mehrzahl der ALU's für einige Augenblicke überhaupt nicht arbeiten, können die ALU's nicht effizient genutzt werden, und eine ausreichend hohe Verarbeitungsgeschwindigkeit kann nicht erreicht werden.
  • Die US 4 942 525 beschreibt eine Verarbeitungseinrichtung mit einer Mehrzahl von Bearbeitungseinrichtungen, einer Datenhalteeinrichtung und einer Ausführungssteuereinrichtung zum Erfassen, ob oder ob nicht eine Mehrzahl von Anweisungen eine vorbestimmte Bedingung erfüllen, und zum Verhindern des Schreibens eines erhaltenen Datenwertes einer Anweisung von folgenden Anweisungen in die Datenhalteeinrichtung, wenn ein Unterbrechungssignal beim Ausführen der einen Anweisung erzeugt wird.
  • In "Efficient Superscalar Performance Through Boosting", Michael D. Smith, et al., ASPLOS V-Oct. 1992/MA, USA, 1992, ACM 0-89791-53-5-6/92/0010/0248, S. 248–259 ist eine Verarbeitungseinrichtung beschrieben, die in der Lage ist, eine Anweisung spekulativ auszuführen. Die Verarbeitungseinrichtung enthält mehrere sequentielle Register und für jedes sequentielle Register eine Reihe weiterer Register und Zählerpaare. Diese Zähler enthalten den logischen Namen von jedem der Register und einen Zählwert. Das Register von den mehreren Registern mit dem Zählwert 0 hält den sequentiellen Zustand, das mit dem Zählwert 1 hält den spekulativen Zustand. Wenn der spekulative Wert in dem Register mit dem Zählwert 1 gültig wird, wird nicht der Datenwert übertragen, sondern der Zähler wird um 1 verringert.
  • Die Aufgabe der vorliegenden Erfindung besteht darin, eine Verarbeitungseinrichtung bereitzustellen, die in der Lage ist, eine Anweisung, die nach der Bestimmung einer Abzweigungsbedingung auszuführen ist, auszuführen, bevor eine solche Bestimmung durchgeführt wurde, um so eine Anweisung schneller zu verarbeiten.
  • Die Aufgabe wird durch eine Verarbeitungseinrichtung nach Anspruch 1 oder 4 gelöst.
  • Ein Vorteil der vorliegenden Erfindung besteht darin, daß eine Verarbeitungseinrichtung bereitgestellt wird, die in der Lage ist, den Aufbau bzw. Einsatz von Hardware beim Erreichen der oben genannten Aufgabe signifikant zu reduzieren.
  • Bei der Verarbeitungseinrichtung nach Anspruch 1 wird eine Anweisung spekulativ ausgeführt und wird ein Datenwert, der als Ergebnis der Ausführung erhalten wird, in der zweiten Datenhalteeinrichtung gehalten, wenn das Zutreffen einer Abzweigungsbedingung unbestimmt ist. Sind die Vorhersagen für das Zutreffen der Abzweigungsbedingung alle korrekt, so wird der in der zweiten Datenhalteeinrichtung gehaltene Datenwert zu der ersten Datenhalteeinrichtung übertragen. Als Ergebnis kann eine Mehrzahl von Anweisungen gleichzeitig ausgeführt werden und hierdurch die Verarbeitungsgeschwindigkeit einer Anweisung erhöht werden.
  • Bei der Verarbeitungseinrichtung nach Anspruch 4 wird eine Anweisung spekulativ ausgeführt und ein Datenwert, der als Ergebnis der Ausführung davon erhalten wird, wird in der zweiten Datenhalteeinrichtung gehalten, wenn das Zutreffen der Abzweigungsbedingung unbestimmt ist. Wenn jeder der Anweisung entsprechende Bestimmungseintrag der Treffer-/Verfehlt-Halteeinrichtung entweder eine Treffer- oder eine Verfehlt-Information enthält und jeder decodierte Eintrag der Anweisung entweder mit dem entsprechenden Bestimmungseintrag übereinstimmt oder Nicht-Berücksichtigen anzeigt, wird der in der zweiten Datenhalteeinrichtung gehaltene Datenwert zu der ersten Datenhalteeinrichtung übertragen. Als Ergebnis hiervon kann eine Mehrzahl von Anweisungen gleichzeitig ausgeführt werden, wodurch die Verarbeitungsgeschwindigkeit der Anweisungen erhöht wird. Zusätzlich kann die Anzahl der Bits der Anweisungsübergabebedingung reduziert werden, da die Anweisungsübergabebedingung decodiert ist.
  • Weiterbildungen der Erfindung sind in den Unteransprüchen angegeben.
  • Weitere Merkmale und Zweckmäßigkeiten ergeben sich aus der folgenden Beschreibung von Ausführungsbeispielen anhand der Figuren. von den Figuren zeigen:
  • 1 ein Blockdiagramm, welches den Aufbau einer Verarbeitungseinrichtung gemäß einer ersten Ausführungsform der vorliegenden Erfindung zeigt;
  • 2 ein Schaubild zum Veranschaulichen des Aufbaus eines Wahr-/Falsch-Registers in der Verarbeitungseinrichtung der 1;
  • 3 ein Schaubild zur Veranschaulichung des Aufbaus eines Anweisungscodes zum Ausführen einer Anweisung in der Verarbeitungseinrichtung der 1;
  • 4 ein Schaubild zur Veranschaulichung des Aufbaus eines Abzweigungsanweisungscodes zur Ausführung einer Abzweigungsanweisung in der Verarbeitungseinrichtung der 1;
  • 5 ein Flußdiagramm, welches ein Beispiel eines Programmes zeigt;
  • 6 ein Blockdiagramm welches den Aufbau eines Compilers zum Compilieren eines in 5 gezeigten Quellenprogramms zeigt;
  • 7 eine Programmliste welche ein Beispiel eines Objektprogramms zeigt welches durch den Compiler der 6 zur Verarbeitung des Quellenprogramms der 5 mit der Verarbeitungseinrichtung der 1 erhalten wurde;
  • 8 ein Diagramm zur Veranschaulichung eines Codes eines Übergabebedingngsabschnitts des in den 3 und 4 gezeigten Anweisungscodes;
  • 9 ein Diagramm zur Veranschaulichung einer Ausgabe eines Übergabebedingungsdekodierers in der Verarbeitungseinrichtung der 1;
  • 10 ein Schaubild zur Veranschaulichung des Konzepts der Funktion einer Ausführungssteuerschaltung der Verarbeitungseinrichtung der 1;
  • 11 ein Blockdiagramm, welches den Aufbau der Ausführungssteuerschaltung der 1 zeigt;
  • 12 ein Blockdiagramm, welches den Aufbau der Übergabebedingungsberechnungsschaltung der 11 zeigt;
  • 13 ein Blockdiagramm, welches den Aufbau einer sequentiellen Registerdatei, einer Schattenregisterdatei und einer Übergabesteuerungsschaltung der Verarbeitungseinrichtung der 1 zeigt;
  • 14 ein Diagramm zur Veranschaulichung des Aufbaus eines Anweisungscodes gemäß einer zweiten Ausführungsform der vorliegenden Erfindung;
  • 15 ein Schaltbild, welches den Aufbau eines Übergabebedingungsdekodierers gemäß der zweiten Ausführungsform der vorliegenden Erfindung zeigt;
  • 16 ein Schaltbild, welches den Aufbau einer Vergleichsschaltung in einer Übergabebedingungsberechnungsschaltung gemäß einer dritten Ausführungsform der vorliegenden Erfindung zeigt;
  • 17 ein Blockdiagramm, welches den Aufbau einer herkömmlichen Verarbeitungseinrichtung zeigt.
  • 1 stellt ein Blockdiagramm dar, welches den Aufbau eines Mikroprozessors als eine Verarbeitungseinrichtung gemäß einer ersten Ausführungsform zeigt. Gleiche Bezugszeichen bezeichnen dabei gleiche oder entsprechende Abschnitte.
  • Mit Bezug auf 1 schließt der Mikroprozessor vier ALU 2A bis 2D, einen Speicher 3, einen Programmzähler 4 zum Anlegen der Adresse einer auszuführenden Anweisung an den Speicher 3, eine Schaltung 5 zum Inkrementieren des Programmzählers 4, ein Anweisungsregister 6 zum Halten einer aus dem Speicher 3 geholten Anweisung, einen Anweisungsdekodierer 7 zum Dekodieren einer im Anweisungsregister 6 gehaltenen Anweisung und zum Erzeugen eines Steuersignals zur Steuerung der ALU 2A bis 2D und ähnlichem und einem Steuersignal zum Steuern des Haltens der Daten, die durch die ALU 2A bis 2D erzeugt wurden in einem Register und eine Schaltung 9 zur Berechnung einer Zieladresse ein.
  • Im Gegensatz zu dem in der Beschreibungseinleitung mit Bezug auf 17 gezeigten Mikroprozessor schließt dieser Mikroprozessor weiterhin ein Wahr-/Falsch-Register (TF-Register) 10, eine Ausführungssteuerschaltung 11, eine sequentielle Registerdatei 12, eine Schattenregisterdatei 13, eine Übergabesteuerungsschaltung 14 und einen Übergabebedingungsdekoder 50 ein.
  • 2 zeigt den Aufbau des TF-Registers 10. Mit Bezug auf 2 schließt das TF-Register 10 m Einträge ein. Die Wahr-/Falschheit einer Abzweigungsbedinyung wird in den ALU 2A bis 2D bestimmt, um zu entscheiden ob abgezweigt wird und das so bestimmte Ergebnis wird in einem der m Einträge gehalten. Jeder Eintrag ist aus zwei Bit gebildet, einem Gültigkeits-Bit Tv und einem Wert-Bit Td und hält entweder Wahr-Information wenn eine bestimmte Bedingung wahr ist, Falsch-Information wenn die Bedingung falsch ist und unbestimmte Information die wahr oder falsch ist, wenn die Bedingung unbestimmt ist. Tabelle 1
    Figure 00080001
  • Mit Bezug auf Tabelle 1 wird die Information über die Bedingung im TF-Registers 10 beschrieben.
  • Befindet sich das Gültigkeits-Bit Tv auf "1" und das Wert-Bit Td auf "1", so ist die Bedingung wahr. Ist indessen das Gültigkeitsbit Tv gleich "1" und das Wert-Bit Td gleich "0", so ist die Bedingung falsch. Ist das Gültigkeits-Bit Tv gleich "0", so ist die Wahrheit oder Falschheit der Bedingung ungeachtet des Wertes des Wert-Bits Td unbestimmt.
  • 3 zeigt den Aufbau eines Anweisungscodes, der aus dem in 1 gezeigten Speicher 3 geholt wurde und durch den Mikroprozessor verarbeitet wird. Mit Bezug auf 3 ist der Anweisungscode aus einem Anweisungsverarbeitungsabschnitt 15 und einem Übergabebedingungsabschnitt 16 gebildet. Der Anweisungsverarbeitungsabschnitt 15 entspricht einem Verarbeitungscode, der durch einen herkömmlichen Mikroprozessor verarbeitet werden kann. Der in 1 gezeigte Anweisungsdekodierer 7 dekodiert den Anweisungsverarbeitungsabschnitt 15 und gibt ein Steuersignal zur Ausführung einer Anweisung (r6 = r14 + r15) an eine der ALU 2A bis 2D aus.
  • Indessen stellt der Übergabebedingungsabschnitt 16 einen Abschnitt dar, der eine Bedingung spezifiziert, die für die Ausführung einer Anweisung, wie sie durch den Anweisungsverarbeitungsabschnitt angezeigt wurde, notwendig ist. Mit anderen Worten, ob das ausgeführte Ergebnis der Anweisung (r6 = r14 + r15) gültig ist, wird durch den Inhalt des Übergabebedingungsabschnitt 16 bestimmt. Der Übergabebedingungsabschnitt 16 wird aus einem Code gebildet, der einen Eintrag des Wahr-/Falsch-Registers 10 bestimmt. "TF<1> & TF<2>", wie in 3 gezeigt, bedeutet, daß das ausgeführte Ergebnis der Anweisung gültig ist, wenn der erste und zweite Eintrag des TF-Registers 10 wahr sind.
  • 4 zeigt den Aufbau eines Abzweigungsanweisungscodes für eine Abzweigungsanweisung. Der Abzweigungsanweisungscode wird aus dem Übergabebedingungsabschnitt 16 gebildet, der den gleichen Aufbau wie der in 3 aufweist und durch den An weisungsausführungsabschnitt 15. Der Anweisungsausführungsabschnitt 15 wird aus einem Abzweigungsidentifikationscode 15a zur Identifikation der Art der Abzweigungsanweisung, einem OP-Code 15b zur Anzeige der Abzweigungsbedingung und einer Operatoradresse 15c zum Anzeigen einer Zieladresse gebildet. Der Abzweigungsidentifikationscode 15a wird später beschrieben. Wenn die Abzweigungsbedingung zum Beispiel eine Anweisung darstellt, zu einem Block F abzuzweigen, wie dies in 5 gezeigt ist, so wird die Adresse "F" zugeordnet. Die Operatoradresse 15c ist in 4 gezeigt.
  • Der in den 3 und 4 gezeigte Anweisungscode wird aus dem Anweisungsregister 6 ausgegeben. Der Übergabebedingungsabschnitt 16 und der Abzweigungsidentifikationscode 15a eines Anweisungscodes werden durch den Übergabebedingungsdekodierer 50 dekodiert. Der OP-Code 15b und die Operatoradresse 15c eines Anweisungscodes werden durch den Anweisungsdekodierer 7 dekodiert.
  • Als nächstes wird ein Programm zum Betrieb des Mikroprozessors gemäß der vorliegenden-Ausführungsform im weiteren beschrieben. Hier wird ein Fall in Betracht gezogen, bei dem die Vorgänge des in 5 gezeigten Flußdiagramms durch den Mikroprozessor ausgeführt werden.
  • Mit Bezug auf 5 ist eine Anweisung a1 : r2 = r0 + r1 auszuführen und eine Abzweigungsanweisung a2 : r2 < r3 im Block A zu bestimmen. Wenn r2 < r3 wahr ist, wird eine Abzweigung zu Block E durchgeführt und wenn sie falsch ist, wird eine Abzweigung zu Block B durchgeführt. Die Abzweigungsanweisungen b2 und c2 werden in den Blöcken B und C in ähnlicher Weise für Abzweigungen zu anderen Blöcken bestimmt.
  • Im allgemeinen sind bei der Ausführung einer Anweisung auf der Grundlage einer Vielzahl von Bedingungen, Steuerflüsse vorhanden, die komplizierten Pfaden folgen. Wenn das in 5 gezeigte Programm ausgeführt wird, gibt es vier mögliche Steuerflüsse: A → E, A → F, A → G, und A → H. Wenn dieses Programm tatsächlich ausgeführt wird, so tendiert der Ausführungspfad dazu auf einen der vier Steuerflüsse konzentriert sein. Nach der Literatur von S. McFarling, beträgt die Konzentration auf eine Abzweigungsriehtung ca. 85%. Dies wird detailliert durch S. McFarling in "Reducing the Cost of Branches" 13th Annual International Symposium on Computer Architecture, pp. 396–403, 1986 beschrieben.
  • Ein in 6 gezeigter Compiler erzeugt ein in 7 gezeigtes Objektprogramm zur Ausführung des Quellprogramms der 5 durch die Ausnutzung einer solchen Konzentration der Steuerflüsse.
  • Mit Bezug auf 6 schließt der Compiler einen lexikalischen/syntaktischen Analyseabschnitt 51 zur Umwandlung eines Quellprogramms mit einem Quellcode in ein einfacheres Programm und zur Analyse des Aufbaus des umgewandelten Programms zur Erzeugung eines Zwischencodes ein, so wie einen Optimierungsabschnitt 52 zur Optimierung des erzeugten Zwischencodes zur Implementierung in der minimalen Anzahl von Zyklen, und einem Codeerzeugungsabschnitt 53 zur Umwandlung des optimierten Zwischencodes in einen Maschinencode, der ein Objektprogramm des optimierenden Codes darstellt. Der Optimierungsabschnitt 52 schließt einen Abzweigungsvorhersageabschnitt 52a zur Vorhersage der Wahr-/Falschheit einer Abzweigungsbedingung, einen Abzweigungsbedingungsänderungsabschnitt 52b zum Ändern der Abzweigungsbedingung, so daß die vorhergesagte Wahr-/Falschheit insgesamt wahr ist und einen Übergabebedingungsvorsehungsabschnitt 52c zum Vorsehen einer Anweisung mit der Anzahl der Abzweigungsbedingungen als Übergabebedingung ein. Der Abzweigungsvorhersageabschnitt 52a führt das Quellprogramm auf der Grundlage eines gegebenen Beispiels aus und erstellt ein Profil desselben zur Vorhersage eines mit hoher Wahrscheinlichkeit eingenommenen Steuerflusses. Der vorhergesagte Steuerfluß wird eine "Spur" genannt. Wenn der Fluß tatsächlich in die vorhergesagte Richtung abzweigt, so wird dieser Fall "eine Abzweigungsvorhersage ist ein Treffer" genannt. Wenn der Fluß nicht in die vorherge sagte Richtung abzweigt so wird dieser Fall "eine Abzweigungsvorhersage ist verfehlt" genannt.
  • Es wird angenommen, daß ein Pfad "A → B → C → D → H" als der Steuerfluß mit einer hohen Abzweigungswahrscheinlichkeit durch die Profilierung des in 5 gezeigten Flußdiagramms vorhergesagt ist.
  • 7 zeigt ein Beispiel einer Liste eines Objektprogramms, welches durch das Compilieren eines Quellprogramms auf der Grundlage der Vorhersageinformation der Konzentration des Steuerflusses erzeugt wurde. Dieses Objektprogramm führt ebenfalls das in 5 gezeigte Flußdiagramm aus. In der Figur wird jede Zeile aus einer Mehrzahl von Anweisungscodes gebildet. Jeder Anweisungscode ist aus einem Anweisungsverarbeitungsabschnitt 15 und einem Übergabebedingungsabschnitt 16 gebildet. Anweisungen, die durch Anweisungsverarbeitungsabschnitte 15 der Anweisungscodes in der gleichen Zeile angezeigt sind, werden gleichzeitig ausgeführt. Anweisungscodes sind voneinander durch ein ";" getrennt. Der Anweisungsverarbeitungsabschnitt 15 und der Übergabebedingungsabschnitt 16 sind durch "?" getrennt.
  • Der Übergabebedingungsabschnitt 16 eines jeden Anweisungscodes, der in der Figur gezeigt ist wird im folgenden beschrieben.
    • (1) Die Übergabebedingung (always) zeigt an, daß eine Anweisung, die im Anweisungsverarbeitungsabschnitt 15 gezeigt ist, immer gültig ist, ungeachtet der Wahr-/Falschheit des TF-Registers 10.
    • (2) Die Übergabebedingung "TF<1>" zeigt an, daß ein erster Eintrag des TF-Registers 10 zugeordnet ist.
    • (3) Übergabebedingung "TF<1> & TF<2>" zeigt an, daß der erste und zweite Eintrag des TF-Registers 10 zugeordnet sind.
    • (4) Übergabebedingung "TF<1> & TF<2> & TF<3>" zeigt an, daß ein erster, zweiter und ein dritter Eintrag des TF-Registers 10 zugeordnet sind.
  • Im folgenden wird nun der Verarbeitungsabschnitt 15 beschrieben.
  • (1) Anweisungen (I1, I2, I3, I4)
  • Die Anweisung I1 : r2 = r0 + r1, zeigt z.B. an, daß die Werte der Register r0 und r1, die entweder in der sequentiellen Registerdatei 12 oder der Schattenregisterdatei 13 gespeichert sind, zusammenaddiert und im Register r2 der durch die Ausführungssteuerschaltung 11 zugeordnete Datei gespeichert werden.
  • (2) Abzweigungsbedingungen (C1, C2, C3)
  • Die Abzweigungsbedingungen C1 : if (r2 > r3) TF<1> = true; else TF<1> = false, zeigt z.B. an, daß wenn der Wert des Registers r2, der in der sequentiellen Registerdatei 12 oder der Schattenregisterdatei 13 gespeichert ist gleich oder größer dem Wert des Registers r3 ist, "wahr" im ersten Eintrag des TF-Registers 10 gespeichert wird, oder andernfalls in diesem "falsch" gespeichert wird.
  • Genauer gesagt sind die Abzweigungsbedingung C1, C2 und C3 in den ALU's 2A bis 2D bestimmt. Die Abzweigungsbedingung C1 schreibt Wahr/Falsch als ein Resultat der Bestimmung in den ersten Eintrag des TN-Registers 10. Die Abzweigungsbedingungen C2 und C3 schreiben den als ein Ergebnis der Bestimmung erhaltenen Wert Wahr/Falsch in jeweils einen zweiten und dritten Eintrag des TN-Registers 10. Das TF-Register 10 hält die Wahr-/Falsch-Werte.
  • (3) Abzweigungsanweisungen (J1, J2, J3, J4)
  • J1: go to E, zeigt z.B. einen Sprung zum Block E. J1, J2 und J3 zeigen einen Sprung des Typ 2 an, während J4 einen Sprung des Typ 1 anzeigt (die Beschreibung der Typ 1 und Typ 2 Sprünge wird später nachgeholt). Wenn die Abzweigungsanweisung ausgeführt wird, so wird die Adresse des Anweisungscodes für die Ausführung einer Zielanweisung, die durch die Zieladressenberechnungsschaltung 9 errechnet wurde, dem Programmzähler 4 zugeführt und der an der berechneten Adresse des Speichers 3 vorhandene Anweisungscode wird geholt und zum Anweisungsregister 6 gesendet.
  • Die in 7 gezeigte Programmliste wird in Entsprechung mit der vorhergesagten Information über die Konzentration des Steuerflusses wie folgt erzeugt.
  • (1) Jede der Anweisungen C1 bis C3 berechnet eine Abzweigungsbedingung und schreibt das Resultat der Berechnung in das TF-Register 10. Stellt die Abzweigungsbedingung eine Abzweigung innerhalb der Spur dar, so wird "wahr", welches einen Treffer anzeigt, in den Eintrag des TF-Registers 10, welches der Abzweigungsbedingung entspricht, geschrieben, während "falsch", welches anzeigt, daß das Ziel verfehlt wurde, geschrieben wird, wenn eine Abzweigung außerhalb der Spur liegt. Wenn z.B. mit Bezug auf 5 die Abzweigungsbedingung A1: r2 < r3 des Block A "falsch" ist so wird die Abzweigung innerhalb der Spur ausgeführt und wenn die Abzweigungsbedingung A1 "wahr" ist, so wird die Abzweigung außerhalb der Spur durchgeführt. Wenn jedoch die Bedingung r2 > r3 "wahr" ist, so stellt dies eine Abzweigung innerhalb der Spur von A nach B dar. Als Ergebnis wird die Abzweigungsbedinguny im Abzweigungsbedingungsänderungsabschnitt 52b der 6 wie im Falle der Anweisung C1, die in 7 gezeigt ist, so geändert, daß "wahr" in TF<1> geschrieben wird, wenn r2 > r3, andernfalls wird "falsch" geschrieben. Genauergesagt, wenn eine Abzweigung innerhalb der Spur durchgeführt wird (der Fall in dem eine Abzweigungsvorhersage ein Treffer ist), so wird "wahr" nachfolgend in nummerischer Reihenfolge vom ersten Eintrag des TF-Registers 10 gehalten. Wird eine Abzweigung so bestimmt, daß sie zum erstenmal von innerhalb der Spur nach außerhalb der Spur geht (der Fall, in dem die Abzweigungsvorhersage "verfehlt" ist), so wird "falsch" in dem Eintrag des TF-Registers 10 entsprechend der bestimmten Abzweigungsbedingung gehalten.
  • (2) Unter den Abzweigungsanweisungen J1 bis J4 wird die Abzweigungsanweisung, die innerhalb der Spur abzweigt als Typ 1 und die Abzweigungsanweisung, die außerhalb der Spur abzweigt als Typ 2 unterschieden. Der Abzweigungsidentifikationscode 15a des Anweisungsverarbeitungsabschnitts 5, wie er in 4 gezeigt ist, ist zur Unterscheidung dieser Typen der Abzweigungen vorgesehen. Im Abzweigungsidentifikationscode 15a wird "0" geschrieben, wenn eine Abzweigung dem Typ 1 entspricht und "1" geschrieben, wenn sie dem Typ 2 entspricht. 4 zeigt eine Abzweigungsanweisung "TF<1> & TF<2> ? J2". Nach dieser Abzweigungsanweisung als Ergebnis der Abzweigungsbedingung C1, die als "wahr" bestimmt wurde und der Abzweigungsbedingung C2, die als "falsch" bestimmt wurde, wird die Anweisung J2 ausgeführt. Dementsprechend folgt der Fluß einer Abzweigung zu einem Block F und verläßt somit die Spur.
  • Da, mit Bezug auf 7, die Abzweigungsanweisung mit einer Übergabebedingung "TF<1> & TF<2> & TF<3> ? J3" vom Typ 2 ist, wenn die Abzweigungsbedingungen C1 und C2 gleich "wahr" und die Abzweigungsbedingung C3 "falsch" ist, zweigt der Fluß zu Block G ab, der außerhalb der Spur liegt. Obwohl indessen die Übergabebedingungen "TF<1> & TF<2> & TF<3>" der Abzweigungsanweisung J4 die gleiche wie die der oben beschriebenen Abzweigungsbedingungen J3 ist, zweigt der Fluß zu Block H innerhalb der Spur ab, wenn alle Abzweigungsbedingunyen C1, C2 und C3 "wahr" sind, da die Abzweigungsanweisung mit der Übergabebedingung "TF<1> & TF<2> & TF<3> ? J3" vom Typ 1 ist.
  • Der Übergabebedingungsabschnitt 16 ist so kodiert, daß er die Eintragungsnummer des TF-Registers 10 wie oben beschrieben zuordnet. 8 zeigt Dekodierung des Übergabebedingungsabschnitts 16.
  • (1) Die Übergabebedingung "always" wird als <X3, X2, X1> = <0, 0, 0> kodiert, da eine Anweisung ungeachtet der Abzweigungs bedingung ausgeführt wird. (2) Die Übergabebedingung "TF<1>", die dem ersten Eintrag des TF-Registers 10 zugeordnet ist, ist als <0, 0, 1> kodiert. (3) Die Übergabebedingung "TF<1> und TF<2>", die dem ersten und zweiten Eintrag des TF-Registers 10 zugeordnet ist ist als <0, 1, 1> kodiert. (4) Die Übergabebedingung "TF<1> & TF<2> & TF<3>", die dem ersten, zweiten und dritten Eintrages des TF-Registers 10 zugeordnet ist, ist als <1, 1, 1> kodiert.
  • Mit anderen Worten, die Übergabebedingung einer Anweisung, die unabhängig davon ausgeführt wird, ob die Wahr-/Falschheit irgendeiner Abzweigungsbedingung korrekt ist, ist als "0, 0, 0" kodiert. Die Übergabebedingung einer Anweisung, die ausgeführt wird, wenn die Vorhersage über die Wahr-/Falschheit einer ersten Abzweigungsbedingung C1, korrekt ist, ist als "0, 0, 1" kodiert. Die Übergabebedingung einer Anweisung, die ausgeführt wird, wenn die ersten zwei Vorhersagen über die Wahr-/Falschheit der Abzweigungsbedingung korrekt ist, ist als "0, 1, 1" kodiert.
  • Die Übergabebedingung einer Anweisung, die ausgeführt wird, wenn die Vorhersagen dreimal hintereinander korrekt sind, ist als "1, 1, 1" kodiert. Dementsprechend werden andere Kodierungen (z.B. <1, 0, 1>) nie erzeugt werden und Übergabebedingungen sind so kodiert, daß sie aufeinanderfolgende "1" aufweisen, beginnend von X1.
  • 9 zeigt eine Ausgabeform des Überyabebedingungsdekodierers 50, der die Codes der oben beschriebenen Übergabebedingungen dekodiert. Der Dekoder 50 ist ähnlich wie das TF-Register 10 aus einem ersten bis einem m-ten Eintrag gebildet. Jeder Eintrag ist aus zwei Bits gebildet, einem Gültigkeits-Bit Cv und einem Wert-Bit Cd, also ähnlich wie das TF-Register 10.
  • Mit Bezug auf die untenstehende Tabelle 2 wird die Ausgabeform des Übergabebedingungsdekodierers 50 beschrieben.
  • Tabelle 2
    Figure 00170001
  • (1) Ist das Gültigkeitsbit Cv gleich "1" und das Wert-Bit Cd gleich "1" so wird der Eintrag "wahr" angezeigt. (2) Wenn das Gültigkeitsbit Cv "1" ist und das Wert-Bit Cd "0" ist, so ist der Eintrag als "falsch" angezeigt. (3) Wenn das Gültigkeits-Bit Cv "0" ist so wird der Eintrag als "nicht berücksichtigen" angezeigt, unabhängig von dem Wert des Wert-Bits Cd. Mit anderen Worten, da jeder Eintrag eine der Möglichkeiten "wahr" und "falsch" und "nicht berücksichtigen" aufweist.
  • Die unten gezeigte Tabelle 3 stellt eine Wahrheitstabelle dar, die Ausgaben des Übergabebedingungsdekodierers 50 in Entsprechung zu den Eingabecodes des Übergabebedinungsabschnitts 16 zeigt. Tabelle 3
    Figure 00170002
    • (1) Ist <X3, X2, X1> = <0, 0, 0>, so wird der Eingabecode <0, 0, 0> so dekodiert, daß alle Einträge das Gültigkeitsbit Cv = 0 aufweisen (alle Einträge lauten "nicht berücksichtigen").
    • (2) Ist <X3, X2, X1> = <0, 0, 1>, so wird der Eingabecode <0, 0, 1> so dekodiert, daß der erste Eintrag ein Gültigkeits- Bit Cv1 von "1" und ein Wert-Bit Cd1 mit "1" aufweist. Die anderen Einträge weisen Cv als zu "0" gesetzt auf (der erste Eintrag ist "wahr" und die nachfolgenden Einträge sind "nicht berücksichtigen").
    • (3) Ist <X3, X2, X1> = <0, 1, 1>, so wir der Eingabecode <0, 1, 1> so dekodiert, daß der erste und zweite Eintrag die Gültigkeits-Bit Cv1 und Cv2 mit "1" aufweist und jeweils die Werte-Bits Cd1 und Cd2 mit "1". Die anderen Einträge weisen ein zu "0" gesetztes Gültigkeits-Bit Cv auf. (Die ersten und zweiten Einträge sind in "wahr" und die nachfolgenden Einträge sind "nicht berücksichtigen".)
    • (4) Ist <X3, X2, X1> = <1, 1, 1>, so wird der Eingabecode <1, 1, 1> so dekodiert, daß der erste, zweite und dritte Eintrag das Gültigkeitsbit Cv1, Cv2 und Cv3 zu "1" gesetzt aufweisen und die Werte-Bits Cd1, Cd2 und Cd3 jeweils zu "1" gesetzt sind. (Der erste bis dritte Eintrag ist in "wahr".) Bei den anderen Einträgen ist Cv zu "0" gesetzt.
  • Dies heißt, die Eingabecodes werden so dekodiert, daß <Cv, Cd> in dem Eintrag, der "1" entspricht im Eingabecode <1, 1> ist und Cv des Eintrags, der "0" entspricht im Eingabecode "0" ist.
  • Dementsprechend können die logischen Ausdrücke der Wahrheitstabelle der Tabelle 3 wie folgt gesetzt werden. Cvi = Xi, Cdi = 1 (Gleichung 1)(i entspricht der Eintragsnummer)
  • Wenn die Übergabebedingungskodierung der Abzweigungsanweisung zu dekodieren ist, so ist der Dekodierinhalt in Abhängigkeit des Typs der Abzweigungsanweisung unterschiedlich. Wenn die Abzweigungsanweisung vom Typ 1 ist (d.h. der Abzweigungsidentifikationscode 15a ist "0", so wird der Übergabebedingungscode ähnlich wie in Tabelle 3 dekodiert. Ist die Abzweigeranweisung vom Typ 2 (d.h. der Abzweigungsidentifikationscode 15a ist "1"), so wird der Übergabebedingungscode gemäß einer in Tabelle 4 gezeigten Wahrheitstabelle dekodiert, anstelle der Tabelle 3. Tabelle 4
    Figure 00190001
    • (1) Ist <X3, X2, X1> = <0, 0, 0>, so wird der Eingabecode auf ähnliche Weise wie in Tabelle 3 dekodiert.
    • (2) Ist <X3, X2, X1> = <0, 0, 1>, so wird Cd1 zu "0" und der Rest genau wie in Tabelle 3 gesetzt.
    • (3) Ist <X3, X2, X1> = <0, 1, 1>, so wird Cd2 zu "0" und der Rest wie in Tabelle 3 gesetzt.
    • (4) Ist <X3, X2, X1> = <1, 1, 1>, so wird Cd3 zu "0" und der Rest wie in Tabelle 3 gesetzt.
  • Mit anderen Worten, der Eingabecode wird so dekodiert, daß Cd des Eintrags, der dem letzten der Bits mit einer "1" entspricht, im Eingabecode aufeinanderfolgend zu "0" gesetzt wird und der Eintrag "falsch" anzeigt.
  • Dementsprechend werden die logischen Ausdrücke der in Tabelle 4 gezeigten Wahrheitstabelle z.B. wie folgt gesetzt. Cvi = Xi, Cdi = Xi + 1 (Gleichung 2)(wobei Cd3 = 0)
  • Die Ausführungssteuerschaltung 11 vergleicht den Eintrag der entsprechend von dem Übergabebedingungsdekodierer 50 ausgegeben ist mit dem Eintrag des TF-Registers 10, welches dieselbe Eintragsnummer aufweist und steuert die ALU's 2A bis 2D zur sequentiellen (deterministischen) oder spekulativen (vorsorglichen) Ausführung einer Anweisung.
  • 10 zeigt ein Konzept, welches die Funktion der Ausführungssteuerschaltung 11 detaillierter zeigt. In der Figur zeigen (C) bis (F) Beispiele von Bedingungsinformationen, wie sie in jedem Eintrag des TF-Registers 10 gehalten ist. So hält z.B. in (C) der erste und zweite Eintrag den Wert "wahr" und die nachfolgenden Einträge halten beliebige Bedingungsinformation.
  • Indessen zeigt (A) in 10 die durch das Dekodieren des Übertragungsbedingungsabschnittes 16 "TF<1> & TF<2>" des Anweisungscodes "TF<1> & TF<2> ? I3" erhaltene Ergebnis. Der erste und zweite Eintrag sind beide "wahr" und die nachfolgenden Einträge enthalten den Wert "nicht berücksichtigen". Wird (C) im TF-Register 10 gehalten, d.h. wenn die Wahr-/Falschheit mit der, die im entsprechenden Eintrag gehalten ist übereinstimmt, so steuert die Ausführungssteuerschaltung 11 die ALU's 2A bis 2D zur sequentiellen (deterministischen) Ausführung der Anweisung I3. In diesem Fall wird die Anweisung I3 eine "sequentielle Anweisung" genannt.
  • Wenn (D) im TF-Register 10 gehalten wird, d.h. wenn der erste und der zweite Eintrag des TF-Registers 10, die dem ersten und zweiten Eintrag des Übertragungsbedingungsdekoders 50 mit Bestimmung der Wahr-/Falschheit entspricht, den Wert "unbestimmt" enthält, so steuert die Ausführungssteuerschaltung die ALU's 2A bis 2D zur spekulativen (provisorischen bzw. vorsorglichen) Ausführung einer Anweisung I3. In diesem Fall wird die Anweisung I3 eine "spekulative Anweisung" genannt.
  • Wenn (E) im TF-Register 10 gehalten wird, d.h. wenn der erste und zweite Eintrag des TF-Registers 10, die dem ersten und zweiten Eintrag des Übertragungsbedingungsdekoders 50 mit der Bestimmung der Wahr-/Falschheit entspricht, jeweils den Wert "Wahr" und "Unbestimmt" hält, so steuert die Ausführungssteuerschaltung 11 die ALU 2A bis 2D zur spekulativen (provisorischen) Ausführung der Anweisung I3. Die Anweisung I3 wird in diesem Fall ebenfalls eine "spekulative Anweisung" genannt.
  • Wenn (F) im TF-Register 10 gehalten wird, d.h. die Wahr-/Falschheit der ersten und zweiten Einträge des TF-Registers 10 nicht mit denen der entsprechenden ersten und zweiten Einträge des Übergabebedingungsdekodierer 50 mit bestimmter Wahr-/Falschheit übereinstimmt, so wird die Anweisung I3 nicht ausgeführt, oder auf die daraus resultierenden Daten wird verzichtet, wenn sie ausgeführt wird.
  • Obwohl dies in 10 nicht gezeigt ist, steuert die Ausführsteuerschaltung 11 die ALU's 2A bis 2D zur sequentiellen (deterministischen,) Ausführung einer Anweisung (z.B. I1), wenn alle Einträge der dekodierten Ausgabe des Übergabebedingungsabschnitt 16 den Wert "nicht berücksichtigen" anzeigen (der Fall, in dem der Übergabebedingungsabschnitt 16 gleich "always" ist). Die Anweisung I1 wird in diesem Fall ebenfalls eine "sequentielle Anweisung" genannt, ähnlich wie im obigen Fall.
  • Immer noch mit Bezug auf 10 zeigt (B) das Ergebnis, welches durch die Dekodierung des Übergabebedingungsabschnittes 16 "TF<1> & TF<2>" des Anweisungscodes "TF<1> & TF<2> ? J2" der 7 erhalten wurde. Der erste Eintrag hält den Wert "wahr", der zweite Eintrag den Wert "falsch" und die nachfolgenden Einträge den Wert "nicht berücksichtigen". Diese Abzweigungsanweisung J2 wird nur dann ausgeführt, wenn jede Wahr-/Falschheit der Einträge des TF-Registers 10 mit den entsprechenden Einträgen des Übergabebedingungsdekodierers 50 übereinstimmt, wie in (F). J2 wird nicht ausgeführt, wenn das Ergebnis (C), (D) oder (E) erhalten wird.
  • Die sequentielle Registerdatei 12 und die Schattenregisterdatei 13 werden jeweils aus 32 Registern 30 und 31 gebildet. Die sequentielle Registerdatei 12 entspricht der Registerdatei 1 des herkömmlichen Mikroprozessors. Die sequentielle Register datei 12 hält jedoch deterministisch Daten, die als Ergebnis der Ausführung einer sequentiellen Anweisung durch die ALU 2A bis 2D erhalten wurden. Die Schattenregisterdatei 13 hält solche Daten provisorisch, die als Ergebnis der Ausführung einer spekulativen Anweisung durch die ALU 2A bis 2D erhalten wurden.
  • Die Übergabesteuerschaltung 14 hält die Ausgabe des Übergabebedingungsdekoders 50 auf eine Anweisung, die den in der Schattenregisterdatei 13 gespeicherten Ergebnisdaten entspricht. Gleichzeitig überwacht die Übergabesteuerschaltung 14 ständig das TF-Register 10, vergleicht die Einträge in der Ausgabe des Übergabebedingungsdekoders 50 mit den Einträgen im TF-Register 10 und überträgt die in der Schattenregisterdatei 13 gespeicherten Ergebnisdaten an die sequentielle Registerdatei 12, wenn sie miteinander in einer entsprechenden Art und Weise übereinstimmen.
  • Wenn mit Bezug auf 10, z.B. eine spekulative Anweisung I ausgeführt wird und der sich daraus ergebende Datenwert provisorisch in der Schattenregisterdatei 13 gespeichert wird, so wird die Ausgabe des Übergabebedingungsdekoders 50 für die Anweisung I, der erste Eintrag "wahr", der zweite Eintrag "wahr", ..., in der Übergabesteuerschaltung 14 gespeichert. Die Übergabesteuerschaltung 14 überwacht den im TF-Register 10 gehaltenen Inhalt und überträgt die, in der Schattenregisterdatei 13 gespeicherten resultierenden Daten an die sequentielle Registerdatei 12, wenn der erste und zweite Eintrag im TF-Register 10 beide den Wert "wahr" halten, d.h. wenn der Inhalt des Ausgabeeintrags des Übergabebedingungsdekoders 50 mit der Wahr-/Falschheit des entsprechenden Eintrags des TF-Registers 10 übereinstimmt.
  • Die Übergabesteuerschaltung 14 vergleicht den von ihr gehaltenen Eintrag der Ausgabe des Übergabebedingungsdekoders 50 mit dem Eintrag des TF-Registers 10. Stimmen diese nicht miteinander überein, so wird der in der Schattenregisterdatei 13 gespeicherte resultierende Datenwert als ungültig bestimmt und dementsprechend verworfen.
  • Im folgenden wird nun die Ausführungssteuerschaltung 11, die sequentielle Registerdatei 12, die Schattenregisterdatei 13 und die Übergabesteuerschaltung 14 beschrieben.
  • 11 stellt ein Blockdiagramm dar, welches den Aufbau der Ausführungssteuerschaltung 11 zeigt. Mit Bezug auf 11 schließt die Ausführungssteuerschaltung 11 eine Übergabebedingungsberechnungsschaltung 17, einen Inverter 18, ein AND-Gatter 19A und ein OR-Gatter 19B ein. Die Ausführungssteuerschaltung 11 gibt aus dem Inverter 18 ein Schattenregisterschreibziel-Bit SD und vom OR-Gatter 19B ein Anweisungsgültigkeits-Bit aus.
  • Der Betrieb der Ausführungssteuerschaltung 11 wird beschrieben. Der durch den Übergabebedingungsdekodierer 50 dekodierte Inhalt und der Inhalt des TF-Registers werden der Übergabebedingungsberechnungsschaltung 17 zugeführt, welche das Gültigkeits-Bit V und das Wert-Bit D ausgibt.
  • 12 stellt ein Blockdiagramm dar, welches den Aufbau der Übergabebedingungsberechnungsschaltung 17 zeigt. Mit Bezug auf 12 schließt die Übergangbedingsberechnungsschaltung 17 Vergleichsschaltungen 20 und 21 und AND-Gatter 22 und 23 ein. Wenn es m Einträge gibt, so werden entsprechend den m Einträgen m Vergleichsschaltungen vorgesehen und das logische Produkt der Ausgaben Vi (i = 1 bis m) der Vergleichsschaltungen und das logische Produkt der Ausgaben Di (i = 1 bis m) derselben werden jeweils als Gültigkeits-Bit V und Wert-Bit b zugeführt. Aus Gründen der Einfachheit zeigt 12 eine Übergabebedingungsberechnungsschaltung 17 für den Fall, in dem der zu dekodierende Inhalt des Übergabebedingungsabschnitts 16 und das TF-Register 10 jeweils zwei Einträge aufweisen.
  • Die Vergleichsschaltung 20 oder 21 vergleicht den i-ten (i = 1 oder 2) Eintrag des Übergabebedingungsdekoders 50 mit dem entsprechenden i-ten Eintrag des TF-Registers 10 und erzeugt in Entsprechung mit dem Ergebnis ein Gültigkeits-Bit Vi und ein Wert-Bit Di.
  • Tabelle 5 stellt eine Wahrheitstabelle dar, die den Betrieb der Vergleichsschaltung 20 oder 21 zeigt. Tabelle 5
    Figure 00240001
  • Es wird auf Tabelle 5 Bezug genommen, wenn das Gültigkeits-Bit Cv eines Eintrags im Übergabebedingungsdekodierer 50 gleich "0" ist so erzeugt die Vergleichsschaltung 20 oder 21 das Gültigkeits-Bit Vi gleich "1" und das Wert-Bit Di "1", und zwar unabhängig von den Werten des Gültigkeits-Bits Tv und des Wert-Bits Td des entsprechenden Eintrags des TF-Registers.
  • Wenn das Gültigkeits-Bit Cv eines Eintrags im Übergabebedingungsdekodierer 50 gleich "1" ist und das Gültigkeits-Bit Tv des entsprechenden Eintrags des TF-Registers 10 gleich "0" ist, so erzeugt die Vergleichsschaltung 20 oder 21 das Gültigkeitsbit Vi gleich "0", und zwar unabhängig von den Werten der Wert-Bits Cd und Td dieser Einträge.
  • Wenn das Gültigkeits-Bit Cv eines Eintrags im Dekoder 50 und das Gültigkeits-Bit Tv des entsprechenden Eintrags im TF-Register 10 beide gleich "1" sind und die Wert-B its Cd und Td zueinander gleich sind, so erzeugt die Vergleichsschaltung 20 oder 21 das Gültigkeits-Bit Vi gleich "1" und das Wert-Bit Di gleich "1". Wenn die Wert-Bits Cd und Td dieser Einträge unterschiedlich sind, so erzeugt die Vergleichsschaltung 20 oder 21 das Gültigkeits-Bit Vi gleich "1" und das Wert-Bit Di gleich "0".
  • In Reaktion auf das logische Produkt der Gültigkeits-Bits Vi der Vergleichsschaltungen 20 und 21 wird das Gültigkeits-Bit V der Übergabebedingungsberechnungsschaltung 17 erzeugt und in Reaktion auf das logische Produkt der Wert-Bits Di wird das Wert-Bit D erzeugt.
  • Wenn dementsprechend das Gültigkeits-Bit V und das Wert-Bit D beide gleich "1" sind, bedeutet dies, daß (a) alle Einträge des Übergabebedingungsdekodierer 50 den Wert "nicht zu berücksichtigen" enthalten, oder daß (b) die in den Einträgen des Übergabebedingungsdekodierers 50 aufgezeichneten Wahr-/Falschwerte alle mit den Wahr-/Falschwerten der entsprechenden Einträge des TF-Registers 10 übereinstimmen. Wenn V = 1 und D = 0, bedeutet dies, daß wenigstens einer der Wahr-/Falsch-Werte die in den Einträgen des Übergabebedingungsdekodierers 50 aufgezeichnet sind, nicht mit dem entsprechenden Eintrag des TF-Registers 10 übereinstimmt.
  • Durch das Aufbauen der Ausführungssteuerschaltung 11, wie dies in 11 gezeigt ist wird das Schattenregisterschreibziel-Bit SD mit Wert "1" erzeugt, wenn das Gültigkeits-Bit V der Übergabebedingungsberechnungsschaltung 17 gleich "0" ist. Ein Anweisungsgültigkeits-Bit EV mit Wert "1" wird erzeugt, wenn das Gültigkeits-Bit V und das Wert-Bit D der Übergabebedingungsberechnungsschaltung 17 beide "1" sind, oder wenn das Gültigkeits-Bit V gleich "0" ist.
  • Von der obigen detaillierten Beschreibung ist ersichtlich, daß, wenn alle Einträge im Übergabebedingungsdekodierer 50 den Wert "nicht berücksichtigen" halten, (wenn die Anweisung in dem ihr entsprechenden Anweisungsausführungsabschnitt ohne Bedingungen auszuführen ist), die Ausführungssteuerschaltung 11 ein Schattenregisterschreibziel-Bit SD mit Wert "0" und ein Anweisungsgültigkeits-Bit IV mit Wert "1" erzeugt.
  • Wenn einige Einträge im Übergabebedingungsdekodierer 50 den Wert "wahr" oder "falsch" halten und wenigstens einer der entsprechenden Einträge im TF-Register den Wert "unbestimmt" hält, so erzeugt die Ausführungssteuerschaltung 11 ein Schatten registerschreibziel-Bit SD mit Wert "1" und ein Anweisungsgültigkeits-Bit IV mit Wert "1".
  • Wenn einige Einträge im Übergabebedingungsdekodierer 50 den Wert "wahr" oder "falsch" halten und die entsprechenden Einträge im TF-Register 10 den Wert "wahr" oder "falsch" halten und die Wahr-/Falschheit im Übergabebedingungsabschnitt 16 entsprechend mit den Wahr-/Falschheiten im TF-Register 10 übereinstimmt, so erzeugt die Ausgabesteuerschaltung 11 ein Schattenregisterschreibziel-Bit SD mit Wert "0" und ein Anweisungsgültigkeits-Bit IV mit Wert "1".
  • Das Speichern von Daten in der sequentiellen Registerdatei 12 und der Schattenregisterdatei 13 wird in Entsprechung mit dem Schattenregisterschreibziel-Bit SD und dem Anweisungsgültigkeits-Bit IV wie folgt gesteuert.
    • (a) Wenn (SD, IV) = (0, 1) so wird der beispielsweise durch eine ALU erzeugte resultierende Datenwert in der sequentiellen Registerdatei 12 gespeichert. D.h., der Datenwert wird determinstisch gehalten.
    • (b) Wenn (SD, IV) = (0, 0), so wird die Anweisung nicht ausgeführt oder der durch die Ausführung der Anweisung erzeugte Datenwert weder im sequentiellen Register 12 noch im Schattenregister 13 gespeichert, sondern verworfen.
    • (c) Wenn (SD, IV) = (1, 1) so wird der, beispielsweise durch eine ALU erzeugte resultierende Datenwert in der Schattenregisterdatei 13 gespeichert. D.h., der Datenwert wird provisorisch gehalten.
  • 13 stellt ein Blockdiagramm dar, welches den Aufbau der sequentiellen Registerdatei 12, der Schattenregisterdatei 13 und der Übergabesteuerschaltung 14 zeigt.
  • Mit Bezug auf 13 ist die sequentielle Registerdatei 12 aus 32 sequentiellen Registern gebildet, wie dies oben beschrieben ist. Die Schattenregisterdatei 13 ist aus 32 Schattenregistern gebildet. In 13 sind ein drittes sequentielles Register 30 der sequentiellen Registerdatei 12 und ein drittes Schattenregister 31 der Schattenregisterdatei 13 gezeigt. Jedes Register der Schattenregisterdatei 13 ist mit einem Gültigkeits-Flag 37 (Anzeiger) versehen.
  • Die Übergabesteuerschaltung 14 ist aus 32 Einträgen gebilldet, die den 32 sequentiellen Registern 30 und 32 Schattenregistern 31 entsprechen. Jeder Eintrag schließt einen Übergabebedingungsspeicherabschnitt 32, eine Übergabebedingungsberechnungsschaltung 17, AND-Gatter 33 und 36 und einen Inverter 35 ein.
  • Wenn eine spekulative Anweisung ausgeführt wird und der daraus resultierende Datenwert provisorisch im Schattenregister 31 der Schattenregisterdatei 13 gespeichert wird, so hält der Übergabebedingungsspeicherabschnitt 32 den durch den Übergabebedingungsdekodierer 50 dekodierten Inhalt des Übergabebedingungsabschnitt 16, der der Anweisung entspricht.
  • Die übergabebedingngsberechnungsschaltung 17 ist die gleiche, wie die Übergabebedingungsberechnungsschaltung 17 in der Ausführungssteuerschaltung 11, die oben beschrieben wurde. Die Schaltung 17 vergleicht den dekodierten Inhalt des Übergabebedingungsabschnitts 16, der im Übergabebedingungsspeicherabschnitt 32 gehalten wird, mit dem TF-Register 10 und erzeugt in Entsprechung mit dem Ergebnis das Gültigkeits-Bit V und das Wert-Bit D. Das AND-Gatter 33 stellt das logische Produkt des Gültigkeits-Bit V und des Wert-Bit D der Übergabebedingungsberechnungsschaltung 17 an das Gate eines Durchlassgaters 34 bereit, welches zwischen dem sequentiellen Register 30 und dem Schattenregister 31 verbunden ist.
  • Die Übergabebedingungsberechnungsschaltung 17 überwacht ständig das TF-Register 10 und erzeugt das Gültigkeits-Bit V mit Wert "1" und das Wert-Bit D mit Wert "1", wenn die im Übergabebedingungsabschnitt 16 durch den Übergabebedingungsspeicherabschnitt 32 gehaltenen Wahr-Falsch-Werte entsprechend mit den Wahr-Falsch-Werten im TF-Register 10 übereinstimmen. Als Ergebnis hiervon wird das Übertragungsgatter 34 eingeschaltet und der Ergebnisdatenwert im Schattenregister 31 wird an das sequentielle Register 30 übertragen.
  • Das Gültigkeits-Bit V wird an das AND-Gatter 36 angelegt, welches ebenfalls das Wert-Bit D über den Inverter 35 erhält. Das AND-Gatter 36 gibt nur dann "H" aus wenn V = 1 und D = 0, d.h. wenn die Wahr-Falsch-Werte, die in dem Eintrag des Übergabebedingungsdekodierers 50 gehalten werden, nicht mit den Wahr-Falsch-Werten übereinstimmen, die in dem entsprechenden Eintrag des TF-Registers 10 gehalten werden. Das AND-Gatter 36 ist mit einem Rücksetz-Anschluß des Gültigkeits-Anzeigers 37 verbunden. Wenn der Rücksetz-Anschluß ein "H" empfängt, so wird ein Anzeiger erzeugt, der anzeigt daß der Datenwert des Schattenregisters ungültig ist. Wenn der Anzeiger erzeugt wird, so wird der Datenübertrag vom Schattenregister 31 an das sequentielle Register 30 gesperrt.
  • Die Hardware, bzw. Geräteausstattung kann ebenfalls so aufgebaut werden, daß im Schattenregister 31 gehaltene Daten in Reaktion auf den "H"-Wert, der durch das AND-Gatter 36 zusätzlich zum Gültigkeits-Anzeiger 37 eingegeben wurde, gelöscht wird. Als nächstes wird der Betrieb des Mikroprozessors nach der vorliegenden Ausführungsform mit Bezug auf einen Fall beschrieben, in dem das in 7 gezeigte Programm auszuführen ist.
  • Mit Bezug auf 7 wird jede Zeile aus einer Mehrzahl Anweisungscodes gebildet, und Anweisungen, die in Anweisungsausführungsabschnitten 15 der Anweisungscodes gekennzeichnet sind, die in derselben Reihe stehen, werden gleichzeitig ausgeführt. In einem ersten Zyklus werden vier Anweisungen I1, I2, C2 und I3 einer ersten Zeile gleichzeitig ausgeführt.
  • Es wird angenommen, daß die Bedingungsinformation eines jeden Eintrags im TF-Register 10 insgesamt "unbestimmt" ist (alle Gültigkeits-Bits Dv sind "0"). In der Figur bezeichnen r0, r1, r6, r7, r12, r13, r14 und r15 Register der sequentiellen Registerdatei 12.
  • Gemäß dem Anweisungscode "always ? I1" wird die Anweisung I1 Bedingungslos ausgeführt. Der Übertragungsbedingungsdekodierer 50 dekodiert den Eingabecode <0, 0, 0> des Übergabebedingungsabschnitt 16 und setzt alle Cv aller Einträge zu "0", d.h. alle diese Einträge werden zu "nicht berücksichtigen" gesetzt. Dementsprechend führt die Ausführungssteuerschaltung 11 die ALU 2A zur deterministischen Ausführung der Anweisung I1. Zu diesem Zeitpunkt werden die Datenwerte der Register r0 und r1 in der sequentiellen Registerdatei 12 addiert und der sich daraus ergebende Datenwert wird deterministisch im Register r2 der sequentiellen Registerdatei 12 gespeichert.
  • Gemäß des Anweisungscodes "TF<1> ? I2" wird der Code <0, 0, 1> des Übergabebedingungsabschnitts 16 dekodiert, wie dies in Tabelle 3 gezeigt ist, so daß nur Cv1 und Cd1 des ersten Eintrags beide "1" sind. Da unterdessen alle Einträge des TF-Registers 10 zu diesem Zeitpunkt "unbestimmt" sind, steuert die Ausführungssteuerschaltung 11 die ALU 2B zur provisorischen Ausführung der Anweisung I2. Genauer gesagt, die Daten der Register r12 und r13 der sequentiellen Registerdatei 13 werden durch ALU 2B addiert und der sich daraus ergebende Datenwert wird provisorisch im Register r4 der Schattenregisterdatei 13 gespeichert. Gleichzeitig wird der dekodierte Inhalt des Übergabebedingungsabschnitts 16 "Cv1 = '1', Cd1 = '1', Cv2 '0', ..." im Übergabebedingungsspeicherabschnitt des vierten Eintrags der Übergabesteuerschaltung 14 gespeichert, in Entsprechung mit dem Register r4.
  • Nach dem Anweisungscode "always ? C2", wird die Anweisung C2 ähnlich wie "always ? I1" ohne Bedingungen ausgeführt. Genauergesagt, ALU 2C stellt fest, ob der im Register r12 der sequentiellen Registerdatei 12 gespeicherte Datenwert 0 ist und schreibt "wahr" (Tv2 = "1" und Td2 = "1") in den zweiten Eintrag des TF-Registers 10, wenn es gleich 0 ist, oder ansonsten "falsch" (Tv2 = "1" und Td2 = "0").
  • Gemäß dem Anweisungscode "TF<1> & TF<2> ? I3", wird der Code <0, 1, 1> des Übergabebedingungsabschnitts 16 gemäß der Tabelle 3 dekodiert, so daß Cv1 und Cd1 des ersten Eintrags und Cv2 und Cd2 des zweiten Eintrags alle in "1" sind. Da der erste Eintrag zum Zeitpunkt der Ausführung des ersten Zyklus "unbestimmt" bleibt steuert die Ausführungssteuerschaltung 11 die ALU 2D zur provisorischen Ausführung der Anweisung I3. Genauer gesagt, die in den Registern r14 und r15 der sequentiellen Registerdatei 12 gespeicherten Datenwerte werden durch die ALU 2D addiert und der sich daraus ergebende Datenwert wird im Register r6 der Schattenregisterdatei 13 gespeichert. Gleichzeitig wird der dekodierte Inhalt des Übergabebedingungsabschnitts 16 "Cv1 = '1', Cvd = '1', Cv2 = '1', Cd2 = '1', ..." im Übergabebedingungsspeicherabschnitt 32 in einem Eintrag gespeichert, der dem Register r6 entspricht.
  • Die in einer zweiten Zeile in 7 gezeigten Anweisungen werden als nächstes gemeinsam in einem zweiten Zyklus ausgeführt.
  • Gemäß des Anweisungscodes "always ? C1" wird der Datenwert des Registers r2 in der Schattenregisterdatei 13 ohne Bedingungen mit dem Datenwert des Registers r3 der sequentiellen Registerdatei 12 verglichen, und wenn r2 > r3 ist, so wird in das erste Register des TF-Registers 10 der Wert "wahr" geschrieben, andernfalls wird hier der Wert "falsch" geschrieben.
  • Gemäß des Anweisungscodes "always ? C3" wird der Wahr-/Falsch-Wert der Abzweigungsbedingung C3 in das dritte Register des TF-Registers 10 in ähnlicher Weise geschrieben.
  • Gemäß dem Anweisungscode "TF<1> & TF<2> & TF<3> ? I4" wird der Code <1, 1, 1> des Übergabebedingungsabschnitt 16 so dekodiert, daß Cv1 und Cd1 des ersten Eintrags, Cv2 und Cd2 des zweiten Eintrags und Cv3 und Cd3 des dritten Eintrags alle gemeinsam "1" sind. Da die Einträge des TF-Registers 10 zu diesem Zeitpunkt im gEgensatz zum zweiten Eintrag "unbestimmt" sind, steuert die Ausführungssteuerschaltung 11 ALU 2B zur proviso rischen Auführung der Anweisung I4. Genauergesagt, die ALU 2B addiert "1" zu den im Register r6 der Schattenregisterdatei 13 gespeicherten Datenwert und der sich daraus ergebende Datenwert wird im Register r7 der Schattenregister 13 gespeichert. Der dekodierte Inhalt des Übergabebedingungsabschnittes 16 wird in der Übergabesteuerschaltung 14 in einem Abschnitt gespeichert, der dem Register r7 entspricht.
  • Als nächstes werden die in 7 gezeigten Anweisungen in einer dritten Zeile gemeinsam in einem dritten Zyklus ausgeführt.
  • Gemäß des Anweisungscodes "TF<1> ? J1" stellt J1 eine Abzweigungsanweisung des Typ 2 dar. Der Abzweigungsidentifikationscode 15a im Anweisungscode ist mit "1" gekennzeichnet (4). Gemäß des Abzweigungsidentifikationscodes dekodiert der Übergangsbedingungsdekodierer 50 den Eingabecode der Übergabebedingung auf der Grundlage der in Tabelle 4 gezeigten Wahrheitstabelle. In diesem Fall ist der erste Eintrag mit der Eingabe <0, 0, 1> gleich (Cv1, Cd1) = (1, 0) und andere Cv sind "0".
  • Nach Vollendung des zweiten Zyklus wird der Wahr-/Falsch-Wert des ersten Eintrags des TF-Registers 10 durch die Ausführung der Anweisung C1 bestimmt.
  • Ist der erste Eintrag "wahr" ((Tv1, Td1) = (1, 1)), so bestimmt die Ausführungssteuerschaltung 11 das (Tv1, Td1) = (1, 1) nicht mit (Cv1, Cd1) = (1, 0) übereinstimmt und steuert den Programmzähler 4 so, daß die Abzweigungsanweisung J1 nicht ausgeführt wird. Wenn stattdessen der erste Eintrag gleich "falsch" ist ((Tv1, Td1) = (1, 0)), so stimmt dies mit (Cv1, Cd1) = (1, 0) überein und dementsprechend wird die Abzweigungsanweisung J1 ausgeführt. Die den Block E zuordnende Adresse wird durch die Zieladressenberechnungsschaltung 9 berechnet und im Programmzähler 4 gespeichert.
  • In den Anweisungscodes "TF<1> & TF<2> ? J2" und "TF<1> & TF<2> & TF<3> ? J3" stellen J2 und J3 Abzweigungsanweisungen des zweiten Typs dar und dementsprechend werden die Übertragungsbedingungen gemäß der Tabelle 4 wie im oben beschriebenen Fall dekodiert. Im Anweisungscode "TF<1> & TF<2> & TF<3> ? J4" wird, da J4 eine Abzweigungsanweisung des Typ 1 darstellt, die Übertragungsbedingung gemäß der in Tabelle 3 gezeigten Wahrheitstabelle dekodiert, da (Cv1, Cd1) = (1, 1), (Cv2, Cd2) = (1, 1) und (Cv3, Cd3) = (1, 1).
  • Ob sich dementsprechend die Abzweigungsbedingungen C1 bis C3 innerhalb der Spur (A → B → C → D → H) befinden, wird im TF-Register 10 gespeichert. Genauer gesagt, jedes der folgenden Beispiele wird im TF-Register 10 aufgezeichnet (wobei ein "." einen beliebigen Wert darstellt): (1) für die A → H-Abzweigung (Abzweigung innerhalb der Spur), (TF<1>, TF<2>, TF<3>) = (wahr, wahr, wahr); (2) für A → G-Abzweigung (eine Abzweigung außerhalb der Spur), (TF<1>, TF<2>, TF<3>) = (wahr, wahr, falsch); (3) für A → F-Abzweigung (eine Abzweigung außerhalb der Spur), (TF<1>, TF<2>, TF<3>) = (wahr, falsch,.); und (4) für A E-Abzweigung (eine Abzweigung außerhalb der Spur), (TF<1>, TF<2>, TF<3>) = (falsch, .,.). Mit anderen Worten jeder TF<i> zeigt einen Pfad des Steuerflusses an. So lange wie "wahr" aufeinanderfolgend in der Reihenfolge der Eintragszahlen mit Beginn von TF<1> erscheint, wird die Abzweigung innerhalb der Spur durchgeführt. Währenddessen wird der Eintrag, der dem Punkt entspricht, der von der Spur abweicht zu "falsch" wodurch angezeigt wird, daß die Abzweigung nach außerhalb der Spur gerichtet ist.
  • Durch das Aufzeichnen der Bedingungsinformation im TF-Register 10 wird eine Abzweigungsanweisung unter J1 bis J4, die den tatsächlich ausgeführten Steuerfluss entspricht, ausgeführt. Wenn z.B. (TF<1>, TF<2>, TF<3>) = (wahr, wahr, wahr) im TF-Register 10 gespeichert ist, so wird nur J4 auf der Grundlage des Übergabebedingungsabschnitt 16 und des Sprungidentifikationscodes 15b ausgeführt. Wird (TF<1>, TF<2>, TF<3>) gleich (wahr, wahr, falsch) aufgezeichnet, so wird nur J3 ausgeführt.
  • Da die Ergebnisse der Bestimmungen über die Wahr-/Falschheit der Abzweigungsbedingungen C1, C2 und C3 im TF-Register 10 gehalten werden wird der Übergabevorgang an den Daten provisorisch ausgeführt und in der Schattenregisterdatei 13 im ersten und zweiten Zyklus gespeichert. Wenn von dem im Übergabebedingungsspeicherabschnitt 32 der Übergabesteuerschaltung 14 gespeicherten Übergabebedingungen durch die Übergabebedingungsberechnungsschaltung 17 bestimmt ist, daß sie mit dem Wert des TF-Registers 10 übereinstimmen, so werden die Daten in der Schattenregisterdatei 13 sequentiell in die Registerdatei 12 übertragen. Wenn währenddessen die Übergabebedingungen nicht mit dem Wert des TF-Registers 10 übereinstimmen, so wird auf die Daten in der Schattenregisterdatei 12 durch den Gültigkeits-Anzeiger 37 verzichtet. Wenn z.B. (TF<1>, TF<2>, TF<3>) = (wahr, wahr, falsch) dekodiert wird, so werden die Daten, die von der Ausführung der Anweisungen I2 und I3 resultieren und in der Schattenregisterdatei 13 gespeichert sind in die sequentielle Registerdatei 12 übertragen und auf den resultierenden Datenwert der Anweisung I4 wird verzichtet.
  • Wenn Datenwerte, die als ungültig bestimmt wurden, in der Schattenregisterdatei 13 weiterhin gehalten werden, so können sie durch einen Fehler bei der Ausführung des nächsten Programms in die sequentielle Datei übertragen werden und hierdurch eine Fehlfunktion verursachen. Dementsprechend muß auf solche Daten zur Verhinderung solcher Fehlfunktionen verzichtet werden.
  • Die Daten der Schattenregisterdatei 13 auf die so verzichtet wurde, werden durch das Überschreiben mit Daten, die aus der Ausführung des nächsten Programms stammen gelöscht.
  • Wie oben gemäß der ersten Ausführungsform beschrieben wurde, wird eine auszuführende Anweisung auf der Grundlage einer oder mehrerer Bedingungen im wesentlichen ausgeführt bevor eine Bestimmung über die Wahr-/Falschheit der Bedingungen gemacht worden ist. Obwohl zum Beispiel nach dem in 7 gezeigten Programm die Anweisung I2 auf der Grundlage der Bedingung C1 auszuführen ist, wird sie in einem ersten Zyklus spekulativ ausgeführt, bevor eine Bestimmung über die Wahr-/Falschheit der Bedingung C1 gemacht wird. Obwohl ähnlicherweise die Anweisung I3 ebenfalls auf der Bedingung C1 auszuführen ist, wird sie in einem ersten Zyklus spekulativ vor der Bestimmung der Wahr-/Falschheit der Bedingung C1 ausgeführt. Obwohl weiterhin die Anweisung I4 auf der Grundlage der Bedingungen C1 und C2 auszuführen ist, wird sie spekulativ in dem ersten Zyklus vor der Bestimmung der Wahr-/Falschheit der Bedingungen C1 und C2 ausgeführt.
  • Demzufolge werden die spekulativen Anweisungen I2 bis I4 im ersten Zyklus ausgeführt, wodurch die ALU 2A bis 2D effektiv ausgenützt werden, was im herkömmlichen Mikroprozessor unmöglich ist. Als Ergebnis hiervon wird die Verarbeitungsgeschwindigkeit der Anweisungen erhöht.
  • Da der Übergabebedingungscode, der im Anweisungscode enthalten ist nur zur Angabe des Eintrags des TF-Registers erforderlich ist, der der Spur entspricht, muß die Anzahl der Bits, die den Übergabebedingungscode bilden für n Abzweigungsbedingungen nur n Bits sein. Der Übergabebedingungsdekodierer 50 erzeugt Einträge aus zwei n-Bits für den Vergleich mit den jeweiligen Einträgen im TF-Register 10. Obwohl die Ausgabeeinträge des Übergabebedingungsdekodierer 50 direkt als Übergabebedingungscode verwendet werden können erfordern sie 2n Bits, wodurch die Anzahl der Bits des im Speicher 3 gespeicherten Übergabebedingungscodes im Vergleich zur vorliegenden Auführungsform einfach verdoppelt wird. Dementsprechend kann die Anzahl der Bits in dem Übergabebedingungscode durch das Vorsehen des Übergabebedingungsdekodierers 50 wie oben beschrieben reduziert werden, um Kapazitäten des Speicherelements des Speichers 3 einzusparen.
  • Obwohl das Ausführungsprogramm kompiliert bzw. übersetzt wird, daß wenn in den Einträgen des TF-Registers 10 der Wert "wahr" aufeinanderfolgend gehalten wird, wie z.B. "wahr, wahr, wahr, ...", wodurch ein Pfad innerhalb der Spur angezeigt wird, ist die vorliegende Erfindung nicht hierauf beschränkt. Die Abzweigung innerhalb der Spur kann beliebig gesetzt werden, wie z.B. "falsch, falsch, falsch, ..." und "wahr, falsch, wahr, falsch, ...". Der Dekodierbetrieb des Übergabebedingungsdekodierers 50 muß nur dementsprechend so stukturiert sein, daß für eine auszuführende Anweisung mit einer Übergabebedingung innerhalb der Spur der dekodierte Inhalt mit jedem TF-Register 10 gehaltenen Eintrag übereinstimmt, wodurch ein Pfad innerhalb der Spur angezeigt wird, der beliebig gesetzt ist (diese Einträge werden im folgenden als eine Wahr-/Falsch-Eintragsgruppe bezeichnet.
  • 14 zeigt Codes des Übergabebedingungsabschnitts 16, der in einer anderen Weise wie der der 8 der ersten Ausführungsform kodiert ist. Da der Übergabebedingungsabschnitt 16 zur Bestimmung ob eine Anweisung in einem daran angeschlossenen Anweisungsabschnitt 15 einer Abzweigung innerhalb der Spur darstellt, aufgebaut ist kann er zur Bestimmung des Eintrags des TF-Registers, in welches das Ergebnis der Bestimmung einer Abzweigungsbedingung geschrieben wird und welches zur Bestimmung, ob die Aneisung im Anweisungsausführungsabschnitt 15 gültig ist, kodiert werden.
  • In der Figur ist die Übergabebedingung TF<1> als <Y2, Y1> = <0, 1> zur Bestimmung des ersten Eintrags des TF-Registers 10 kodiert. Die Übergabebedingungen TF<1> & TF<2> wird als <1, 0> zur Bestimmung des zweiten Eintrags kodiert. Ähnlich wird die Übergabebedingung TF<1> & TF<2> & TF<3> als <1, 1> zur Bestimmung des dritten Eintrags kodiert. Die Übergabebedingung "always" wird immer als <0, 0> kodiert.
  • Der Übergabebedingungsdekodierer 50 dekodiert <Y2, Y1> der 14 als <X3, X2, X1> der 11 und dekodiert weiterhin <X3, X2, X1> gemäß der Tabellen 3 und 4. Das Dekodieren <Y2, Y1> zu <X3, X2, X1> wird durch die folgenden logischen Ausdrücke erhalten. X1 = Y1 + Y2 X2 = Y2 X3 = Y1 * Y2 (Gleichung 3 wobei "+" eine logische Summe und "*" ein logisches Produkt darstellt.
  • Dementsprechend kann das Dekodieren des Codes <Y2, Y1> des Übergabeabschnitts 16 zu den Werten (Cv, Cd) der Tabelle 3 und 4, durch die folgenden logischen Ausdrücke erhalten werden.
  • Für das Dekodieren zu (Cv, Cd) in Tabelle 3: (Cv1, Cd1) = (Y1 + Y2, 1) (Cv2, Cd2) = (Y2, 1) (Cv3, Cd3) = (Y1 * Y2, 1) (Gleichung 4)
  • Für die Abzweigungsbedingungen vom Typ 2 der Tabelle 4: (Cv1, Cd1) = (Y1 + Y2, Y2) (Cv2, Cd2) = (Y2, Y1 * Y2) (Cv3, Cd3) = (Y1 * Y2, 0) (Gleichung 5)
  • 15 stellt ein Schaltbild einer logischen Schaltung dar, die ein Beispiel des Aufbaus eines Übergabebedingungsdekodierers 50 gemäß dieser Gleichungen darstellt. Der Übergabebedingungsdekodierer 50 schließt einen Anweisungsdekodierer 40, OR-Gatter 55, 57 und 58, ein AND-Gatter 56 und einen Inverter 59 ein.
  • In Reaktion auf eine Eingabe des Anweisungsausführungsabschnittes 15 gibt der Anweisungsdekodierer 40 eine "0" aus, wenn die Anweisung des Anweisungsausführungsabschnitts 15 eine normale Anweisung darstellt und gibt direkt einen Abzweigungsidentifikationscode 15a aus ("0" für eine Abzweigungsanweisung des Typ 1 und "1" für eine Abzweigungsanweisung des Typ 2), wenn es sich um eine Abzweigungsanweisung mit Abzweigungsidentifikationscodce 15a handelt.
  • Wenn "0" vom Anweisungsdekodierer 40 ausgegeben wird, so zeigen Cd1 bis Cd3 "1" an und die obige Gleichung 4 wird erhalten. Wenn stattdessen "1" aus dem Anweisungsdekodierer 40 ausgegeben wird, so ist Cd1 = Y2, Cd2 = Y1 * Y2 und Cd3 = 0, somit wird die obige Gleichung 5 erhalten.
  • Da der Code des Übergabebedingungsabschnitts 16 wie in 14 gezeigt so aufgebaut ist, daß nur die Eintragsnummer des TF-Registers 10 zugeordnet wird, welcher einer Abzweigungsbedingung entspricht von der die Gültigkeit der Anweisung bestimmt ist, kann die Übergabebedingung mit einer minimalen Anzahl von Bits kodiert werden, die für n Abzweigungsbedingungen mindestens log2(n + 1) ist. Als Ergebnis hiervon kann die Anzahl der Bits im Übergabebedingungscode weiter reduziert werden und hierdurch weiter Kapazität des Speichers 3 eingespart werden.
  • Die Übergabesteuerschaltung 14 der ersten Ausführungsform schließt einen Übergabesteuerabschnitt 32 und eine Übergabebedingungsberechnungsschaltung 17 ein, wie dies in 13 gezeigt ist. Wenn eine spekulative Anweisung ausgeführt wird und der daraus resultierende Datenwert provisorisch im Schattenregister 31 der Schattenregisterdatei 13 gespeichert wird, so hält der Übergabebedingungsspeicherabschnitt 32 den dekodierten Inhalt des Übergabebedingungsabschnitts 16, der der Anweisung entspricht. Der Abschnitt 32 hält jedoch nicht den dekodierten Inhalt des Übergabebedingungsabschnitts des Anweisungscodes für die Ausführung einer Abzweigungsanweisung.
  • Wie aus Gleichung 1 der ersten Ausführungsform deutlich wird, ist die dekodierte Ausgabe Cdi des Übergabebedingungsabschnitts 16, die als ein Ergebnis der Ausführung der spekulativen Anweisung gehalten wird, immer "1". Dementsprechend kann die im Übergabebedingungsspeicherabschnitt 32 aufgezeichnete Information nur Cvi sein. Gemäß dieses Ansatzes muß nur die Hälfte der Speicherinformation im Vergleich zur ersten Ausführungsform, in der sowohl Cvi und Cdi gespeichert werden, gespeichert werden.
  • 16 stellt ein Schaltbild dar, welches ein Beispiel des Aufbaus der Vergleichsschaltung 20 oder 21 zeigt, die in der Übergabebedingungsberechnungsschaltung 17 der Übergabesteuer schaltung 14 gemäß der dritten Ausführungsform vorhanden sind. Mit Bezug auf 16 schließt die Vergleichsschaltung AND-Gatter 60 und 63, einen Inverter 63 und NAND-Gatter 62 (negative Logik) ein. Die logischen Ausdrücke der in 16 dargestellten Schaltung sind folgende: Vi = /Cvi + Tvi Di = (Tdi * Tvi) + /Cvi (Gleichung 6)wobei "/" ein logisches NOT darstellt, "4" die logische Summe und "*" ein logisches Produkt darstellen.
  • (1) Wenn Cvi = 0, dann sind Vi und Di beide 1. (2) Wenn Cvi = 1 und Tvi = 0, dann Vi = 0. (3) Wenn Cvi = 1 und Tvi = 1, dann Vi = 1 und Di = Tdi. Es sei angenommen, daß Cdi immer gleich 1 sei, obwohl Cdi nicht tatsächlich eingegeben wird. Die Vergleichsschaltung führt im wesentlichen die gleichen Vorgänge aus, wie in der Wahrheitstabelle der Tabelle 5 der ersten Ausführungsform gezeigt sind.
  • Die Übergabesteuerschaltung 14 gemäß der dritten Ausführungsform wird aus einer Übergabebedingungsberechnungsschaltung der 13 gebildet, die die in 16 gezeigte Vergleichsschaltung anwendet und den Übergabebedingungsspeicherabschnitt zum ausschließlichen Speichern von Cvi in der Ausgabe des Übergangbedingungsdekodierers 50.

Claims (9)

  1. Verarbeitungseinrichtung, die in der Lage ist, eine Anweisung spekulativ auszuführen, wobei ein Ergebnis der Ausführung der Anweisung gültig wird, wenn Vorhersagen über das Zutreffen einer oder mehrerer Abzweigungsbedingungen alle korrekt sind, mit: einer Bearbeitungseinrichtung (2A2D) zum gleichzeitigen Ausführen einer Mehrzahl der Anweisungen und zur Bestimmung des Zutreffens der Abzweigungsbedingung; einer Datenhalteeinrichtung, die eine erste Datenhalteeinrichtung (12) und eine zweite Datenhalteeinrichtung (13) enthält, zum Halten der als Ergebnis der Ausführung der Anweisungen durch die Bearbeitungseinrichtung (2A2D) erhaltenen Daten; einer Treffer-/Verfehlt-Halteeinrichtung (10) mit einem oder mehreren Bestimmungseinträgen, die jeweils einer Abzweigungsbedingung entsprechen, wobei jeder Bestimmungseintrag (i) unbestimmte Information hält, wenn das Zutreffen der entsprechenden Abzweigungsbedingung noch nicht durch die Bearbeitungseinrichtung (2A2D) bestimmt ist, (ii) Treffer-Information hält, wenn eine Vorhersage über das Zutreffen der entsprechenden Abzweigungsbedingung durch die Bearbeitungseinrichtung (2A2D) als korrekt bestimmt wurde, (iii) Verfehlt-Information hält, wenn eine Vorhersage über das Zutreffen der entsprechenden Abzweigungsbedingung durch die Bearbeitungseinrichtung (2A2D) als inkorrekt bestimmt wurde; einer Ausführungssteuereinrichtung (11) zur (i) Steuerung der Bearbeitungseinrichtung (2A2D) zum Ausführen der Anweisung und zum Steuern der ersten Datenhalteeinrichtung (12) zum Halten des als ein Ergebnis der Ausführung der Anweisung erhaltenen Datenwerts, wenn jeder der Anweisung entsprechende Bestimmungseintrag der Tref fer-/Verfehlt-Halteeinrichtung (10) eine Treffer-Information hält, und (ii) Steuerung der Bearbeitungseinrichtung (2A2D) zur spekulativen Ausführung der Anweisung und zur Steuerung der zweiten Datenhalteeinrichtung (13) zum Halten des als ein Ergebnis der Ausführung der Anweisung erhaltenen Datenwertes, wenn keiner der der Anweisung entsprechenden Bestimmungseinträge der Treffer-/Verfehlt-Halteeinrichtung eine Verfehlt-Information hält und wenigstens ein Eintrag unbestimmte Information hält; und einer Übergabesteuereinrichtung (14) zum Steuern der zweiten Datenhalteeinrichtung (13), wobei der gehaltene Datenwert zu der ersten Datenhalteeinrichtung (12) übertragen wird, wenn alle der Anweisung entsprechenden Bestimmungseinträge der Treffer-/Verfehlt-Halteeinrichtung (10) Treffer-Informationen enthalten, und der gehaltene Datenwert verworfen wird, wenn einer der der Anweisung entsprechenden Bestimmungseinträge eine Verfehlt-Information enthält.
  2. Verarbeitungseinrichtung nach Anspruch 1, gekennzeichnet durch: eine Abzweigungsanweisungsausführungseinrichtung (9) zum Ausführen einer ersten Abzweigungsanweisung, wobei die Ausführungssteuereinrichtung (11) weiterhin die Abzweigungsanweisungsausführungseinrichtung (9) zum Ausführen der ersten Abzweigungsanweisung steuert, wenn jeder Bestimmungseintrag der Treffer-/Verfehlt-Halteeinrichtung (10) Treffer-Information hält.
  3. Verarbeitungseinrichtung nach Anspruch 2, dadurch gekennzeichnet, daß die Abzweigungsanweisungsausführungseinrichtung (9) weiter eine zweite Abzweigungsanweisung ausführt und die Ausführungssteuereinrichtung (11) weiterhin die Abzweigungsanweisungsausführungseinrichtung (9) zur Ausführung der zweiten Abzweigungsanweisung steuert, wenn der Bestimmungseintrag der Treffer-/Verfehlt-Halteeinrichtung (10), der der letzten Abzweigungsbedingung entspricht, Verfehlt-Information hält und der Bestimmungseintrag, der einer jeden Abzweigungsbedin gung entspricht, die der letzten Abzweigungsbedingung vorausgeht, Treffer-Information hält.
  4. Verarbeitungseinrichtung, die in der Lage ist, eine Anweisung spekulativ auszuführen, wobei ein Ergebnis der Ausführung gültig wird, wenn Vorhersagen über das Zutreffen einer oder mehrerer Abzweigungsbedingungen alle korrekt sind, und wobei die Anweisung eine Anweisungsübergabebedingung aufweist, die die Anzahl der Abzweigungsbedingungen anzeigt, mit: einer Übergabebedingungsdekodiereinrichtung (50) zum Dekodieren der Anweisungsübergabebedingung zum Zuführen eines oder mehrerer dekodierter Einträge der Anweisung, die jeweils einer Abzweigungsbedingung entsprechen, wobei jeder dekodierte Eintrag der Anweisung wahr, falsch oder nicht berücksichtigen anzeigt, einer Bearbeitungseinrichtung (2A2D) zum gleichzeitigen Ausführen einer Mehrzahl der Anweisungen und zur Bestimmung des Zutreffens der Abzweigungsbedingung, einer Datenhalteeinrichtung, die eine erste Datenhalteeinrichtung (12) und eine zweite Datenhalteeinrichtung (13) enthält, zum Halten des als Ergebnis der Ausführung der Anweisungen durch die Bearbeitungseinrichtung (2A2D) erhaltenen Datenwertes, einer Treffer-/Verfehlt-Halteeinrichtung (10) mit einem oder mehreren Bestimmungseinträgen, die jeweils einer Abzweigungsbedingung entsprechen, wobei jeder der Bestimmungseinträge (i) eine unbestimmte Information hält, wenn das Zutreffen der entsprechenden Abzweigungsbedingung noch nicht durch die Bearbeitungseinrichtung (2A2D) bestimmt wurde, (ii) eine Treffer-Information hält, wenn das Zutreffen der entsprechenden Abzweigungsbedingung durch die Bearbeitungseinrichtung (2A2D) als korrekt bestimmt wurde, und (iii) eine Verfehlt-Information hält, wenn das Zutreffen der entsprechenden Abzweigungsbedingung durch die Bearbeitungseinrichtung (2A2D als inkorrekt bestimmt wurde, einer Ausführungssteuereinrichtung (11) zum jeweiligen Vergleichen des dekodierten Eintrags der Anweisung, der von der Übergabebedingungsdekodiereinrichtung (50) bereitgestellt wird, mit dem Bestimmungseintrag der Treffer-/Verfehlt-Halteeinrichtung (10) und zur (i) Steuerung der Bearbeitungseinrichtung (2A2D) zum Ausführen der Anweisung und Steuerung der ersten Datenhalteeinrichtung (12) zum Halten des als Ergebnis der Ausführung der Anweisung erhaltenen Datenwertes, wenn entweder jeder dekodierte Eintrag der Anweisung mit dem entsprechenden Bestimmungseintrag übereinstimmt, oder einige der dekodierten Einträge der Anweisung mit dem entsprechenden Bestimmungseintrag übereinstimmen und jeder dekodierte Eintrag der Anweisung, der nicht übereinstimmt, nicht berücksichtigen anzeigt, und (ii) Steuerung der Bearbeitungseinrichtung (2A2D) zum spekulativen Ausführen der Anweisung und zur Steuerung der zweiten Datenhalteeinrichtung (13) zum Halten des als ein Ergebnis der Ausführung der Anweisung erhaltenen Datenwertes, wenn entweder einige der dekodierten Einträge der Anweisung mit dem entsprechenden Bestimmungseintrag übereinstimmen und jeder Bestimmungseintrag, der nicht übereinstimmt, unbestimmte Informationen hält, oder jeder Bestimmungseintrag unbestimmte Information hält, und einer Übergabesteuereinrichtung (14) zum entsprechenden Vergleich des von der Übergabebedingungsdekodiereinrichtung (50) bereitgestellten dekodierten Eintrags der Anweisung mit dem Bestimmungseintrag der Treffer-/Verfehlt-Halteeinrichtung (10) und zum Steuern der zweiten Datenhalteeinrichtung (13), wobei der gehaltene Datenwert zu der ersten Datenhalteeinrichtung (12) übertragen wird, wenn jeder der Anweisung entsprechende Bestimmungseintrag der Treffer-/Verfehlt-Halteeinrichtung (10) entweder eine Treffer- oder eine Verfehlt-Information enthält und jeder dekodierte Eintrag der Anweisung entweder mit dem entsprechenden Bestimmungseintrag übereinstimmt oder nicht berücksichtigen anzeigt, und der gehaltene Datenwert verworfen wird, wenn einer der dekodierten Einträge der Anweisung, der eine Treffer- oder Verfehlt-Information enthält, nicht mit dem entsprechenden Bestimmungseintrag, der eine Treffer- oder Verfehlt-Information enthält, übereinstimmt.
  5. Verarbeitungseinrichtung nach Anspruch 4, weiter gekennzeichnet durch: eine Abzweigungsanweisungsausführungseinrichtung (9) zum Ausführen einer ersten Abzweigungsanweisung mit einer ersten Abzweigungsübergabebedingung, die mit der Anweisungsübergabebedingung übereinstimmt, wobei die Übergabebedingungsdekodiereinrichtung (50) weiterhin die erste Abzweigungsübergabebedingung dekodiert, um einen oder mehrere erste dekodierte Abzweigungseinträge, die der einen oder den mehreren Abzweigungsbedingungen entsprechen, zuzuführen und jeder der ersten dekodierten Abzweigungseinträge entweder wahr oder falsch anzeigt, die Ausführungssteuereinrichtung (11) weiterhin den ersten dekodierten Abzweigungseintrag, der von der Übergabebedingungsdekodiereinrichtung (50) bereitgestellt wird, mit dem Bestimmungseintrag der Treffer-/Verfehlt-Halteeinrichtung (10) entsprechend vergleicht, und die Abzweigungsanweisungsausführungseinrichtung (9) zur Ausführung der ersten Abzweigungsanweisung steuert, wenn jeder der ersten dekodierten Abzweigungseinträge mit dem entsprechenden Bestimmungseintrag übereinstimmt.
  6. Verarbeitungseinrichtung nach Anspruch 5, dadurch gekennzeichnet, daß die Abzweigungsanweisungsausführungseinrichtung (9) weiterhin eine zweite Abzweigungsanweisung mit einer zweiten Abzweigungsübergabebedingung ausführt, die der Anweisungsübergabebedingung entspricht, die Übergabebedingungsdekodiereinrichtung (50) weiterhin die zweite Abzweigungsübergabebedingung dekodiert, um einen oder mehrere dekodierte Abzweigungseinträge zuzuführen, die einer oder mehreren Abzweigungsbedingungen entsprechen, wobei der zweite dekodierte Abzweigungseintrag, der der letzten Abzweigungsbedingung entspricht, entweder wahr oder falsch ist, und der zweite dekodierte Abzweigungseintrag, der jeder Abzweigungsbedingung entspricht, die der letzten Abzweigungsbedingung vorausgehen, das andere von wahr oder falsch ist, die Ausführungssteuereinrichtung (11) weiterhin den zweiten dekodierten Abzweigungseintrag, der von der Übergabebedingungsdekodiereinrichtung (50) bereitgestellt ist, mit dem Bestimmungseintrag der Treffer-/Verfehlt-Halteeinrichtung (10) entsprechend vergleicht und die Abzweigungsanweisungsausführungseinrichtung (9) zur Ausführung der zweiten Abzweigungsanweisung steuert, wenn der zweite dekodierte Abzweigungseintrag, der der letzten Abzweigungsbedingung entspricht, nicht mit dem entsprechenden Bestimmungseintrag übereinstimmt und der zweite dekodierte Abzweigungseintrag, der jeder Abzweigungsbedingung entspricht, die der letzten Abzweigungsbedingung vorhergehen, mit dem entsprechenden Bestimmungseintrag übereinstimmt.
  7. Verarbeitungseinrichtung nach Anspruch 5, dadurch gekennzeichnet, daß die erste Abzweigungsbedingung einen ersten Abzweigungsidentifikationscode aufweist, und die zweite Abzweigungsbedingung einen zweiten Abzweigungsidentifikationscode aufweist, der vom ersten Abzweigungsidentifikationscode verschieden ist.
  8. Verarbeitungseinrichtung nach einem der Ansprüche 4 bis 7, dadurch gekennzeichnet, daß die Übergabesteuereinrichtung (14) aufweist: eine Speichereinrichtung (32) zum Speichern von wahr oder falsch für den dekodierten Eintrag der Anweisung, der von der Übergabebedingungsdekodiereinrichtung (50) bereitgestellt ist, eine Vergleichseinrichtung (17) zum entsprechenden Vergleichen des dekodierten Eintrags der Anweisung, der in der Speichereinrichtung (32) gespeichert ist, mit dem Bestimmungseintrag der Treffer-/Verfehlt-Halteeinrichtung (10), und eine Datenhaltesteuereinrichtung (33, 34) zum Steuern der zweiten Datenhalteeinrichtung (13) zum Übertragen der gehaltenen Daten zu der ersten Datenhalteeinrichtung (12), wenn unbestimmte Information, die in jedem Bestimmungseintrag der Treffer-/Verfehlt-Halteeinrichtung (10) gehalten wird, in Treffer- oder Verfehlt-Information durch die Bestimmung der Abzweigungsbedingung durch die Bearbeitungseinrichtung (2A2D) wechselt, und jeder dekodierte Eintrag der Anweisung mit dem entsprechenden Bestimmungseintrag übereinstimmt.
  9. Verarbeitungseinrichtung nach einem der Ansprüche 4 bis 8, dadurch gekennzeichnet, daß die Übergabesteuereinrichtung einschließt: eine Verzichtseinrichtung (35, 36, 37) zum Verzichten von in der zweiten Datenhalteeinrichtung (15) gehaltenen Daten, wenn unbestimmte Information, die in jedem Bestimmungseintrag der Treffer-/Verfehlt-Halteeinrichtung (10) durch die Bestimmung der Übergabebedingung durch die Bearbeitungseinrichtung (2A2D) in Treffer- oder Verfehlt-Information wechselt, und jeder dekodierte Eintrag der Anweisung nicht mit dem entsprechenden Bestimmungseintrag übereinstimmt.
DE1995143880 1994-11-30 1995-11-24 Verarbeitungseinrichtung, die in der Lage ist eine Anweisung spekulativ auszuführen Expired - Fee Related DE19543880B4 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE19549468A DE19549468C2 (de) 1994-11-30 1995-11-24 Compiler

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP6-296695 1994-11-30
JP29669594A JP3494489B2 (ja) 1994-11-30 1994-11-30 命令処理装置
DE19549468A DE19549468C2 (de) 1994-11-30 1995-11-24 Compiler

Publications (2)

Publication Number Publication Date
DE19543880A1 DE19543880A1 (de) 1996-06-05
DE19543880B4 true DE19543880B4 (de) 2005-04-21

Family

ID=34379099

Family Applications (1)

Application Number Title Priority Date Filing Date
DE1995143880 Expired - Fee Related DE19543880B4 (de) 1994-11-30 1995-11-24 Verarbeitungseinrichtung, die in der Lage ist eine Anweisung spekulativ auszuführen

Country Status (1)

Country Link
DE (1) DE19543880B4 (de)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4942525A (en) * 1986-11-21 1990-07-17 Hitachi, Ltd. Data processor for concurrent executing of instructions by plural execution units

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4942525A (en) * 1986-11-21 1990-07-17 Hitachi, Ltd. Data processor for concurrent executing of instructions by plural execution units

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
S.McFarling: Reducing the Cost of Branches. 13th Annual International Symposium on Computer Archi- tecture, 1986, S.396-403 *

Also Published As

Publication number Publication date
DE19543880A1 (de) 1996-06-05

Similar Documents

Publication Publication Date Title
DE68928340T2 (de) Fliessband-Datenprozessor
DE69115344T2 (de) Vorverarbeitungsprozessor zur Verbindung von Befehlen für einen Cache-Speicher
DE4206062C2 (de) Pipelineverarbeitung von Instruktionen
EP0689694B1 (de) Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren
DE102004013676B4 (de) Schaltung in einem Prozessor zur Steuerung einer iterativen Ausführung einer Gruppe von Programmanweisungen
DE3116100C2 (de) Datenverarbeitungseinheit
DE3751503T2 (de) Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen.
DE69738188T2 (de) Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor
DE3586374T2 (de) Verfahren zur elimination globaler gemeinsamer unterexpressionen und zur kodeverschiebung in einem optimierenden kompilierer.
DE3785897T2 (de) Steuervorrichtung zum vorabruf von befehlen.
DE2542751C2 (de) Datenverarbeitungsanlage
DE3638572C2 (de)
DE4211245B4 (de) Prozessorsystem in Parallelverarbeitungsbauart und Verfahren zu dessen Steuerung
DE1928202B2 (de) Einrichtung zur Erstellung statistischer Daten über den Operationsablauf programmgesteuerter Datenverarbeitungsanlagen
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE68925397T2 (de) Pipelineprozessor
DE2855106A1 (de) Einrichtung zur durchfuehrung von instruktionsverzweigungen
DE19843948A1 (de) Datenverarbeitungsvorrichtung
DE19524402C2 (de) Programmausführungssteuereinrichtung mit einer Adressierbarkeit entsprechend einer M-reihigen Pseudo-Zufallszahlenfolge
DE68917647T2 (de) Multiprozessorsteuerungssystem.
DE3114921A1 (de) Datenverarbeitungssystem
DE4434529A1 (de) Verfahren zum Verarbeiten eines Befehls mit Einsatzbedingung und Vorrichtung dazu
DE19824289A1 (de) Pipelineverarbeitungsmaschine
DE2906685C2 (de)
DE102005001679A1 (de) Mikroprozessor-Einrichtung, und Branch-Prediktions-Verfahren

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
AH Division in

Ref country code: DE

Ref document number: 19549468

Format of ref document f/p: P

8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee