DE68927492T2 - Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten - Google Patents

Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten

Info

Publication number
DE68927492T2
DE68927492T2 DE68927492T DE68927492T DE68927492T2 DE 68927492 T2 DE68927492 T2 DE 68927492T2 DE 68927492 T DE68927492 T DE 68927492T DE 68927492 T DE68927492 T DE 68927492T DE 68927492 T2 DE68927492 T2 DE 68927492T2
Authority
DE
Germany
Prior art keywords
instruction
integer
processor
floating point
cache
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 - Lifetime
Application number
DE68927492T
Other languages
English (en)
Other versions
DE68927492D1 (de
Inventor
Richard G Bahr
Stephen J Ciavaglia
Barry J Flahive
Michael Kahaiyan
John Manton
John S Yates
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE68927492D1 publication Critical patent/DE68927492D1/de
Application granted granted Critical
Publication of DE68927492T2 publication Critical patent/DE68927492T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • 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/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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/3816Instruction alignment, e.g. cache line crossing
    • 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/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

    GEBIET DER ERFINDUNG
  • Die Erfindung betrifft Computerprozessoren, und insbesondere betrifft sie die Steuerung einer Multifunktionseinheit, die mit variabler Länge arbeitet.
  • HINTERGRUND DER ERFINDUNG
  • Die Architektur zentraler verarbeitungseinheiten (CPU) enthält typischerweise Mehrfunktionseinheiten wie Prozessoreinheiten für Gleitkomma- und Integerzahlen. Historisch gesehen, werden Computeranweisungen bei jedem Anweisungsausgabezyklus für nur eine Funktionseinheit organisiert und an eine solche ausgegeben. Horizontal-mehrfachprogrammierte CPUs erlauben den gleichzeitigen und parallelen Betrieb von mehr als einer Funktionseinheit in einem Anweisungsausgabezyklus.
  • Um für gleichzeitigen Betrieb mehrerer Funktionseinheiten zu sorgen, nimmt die Breite des Anweisungsworts zu, um an die mehreren Anweisungskomponenten angepaßt zu sein. Da es jedoch unwahrscheinlich ist, daß Programme Operationen enthalten, wie sie dazu erforderlich sind, jede Funktionseinheit in jedem Ausführungszyklus beschäftigt zu halten, ist es wahrscheinlich, daß der verbreiterte Anweisungsstrom für die meisten Funktionseinheiten keine Operationen enthält.
  • Während eine Anweisungscodierung variabler Länge das Problem fehlender Operationen berücksichtigen würde, erhöht eine Codierung mit variabler Länge bei Architekturen hohen Funktionsvermögens (Pipeline-Architekturen) die Komplexität von Seitenfehlern, wenn die Anweisungen Seitengrenzen überschreiten können, und durch die Ermittlung der Länge der aktuellen Anweisung wie das Weiterzählen des Programmzählers und das Auslösen des nächsten Anweisungszyklus kann die Anweisungszyklus-Gesamtzeit nachteilig beeinflußt sein.
  • Ferner kann die Anweisungsstrom-Analysierkompliziertheit die Einführung einer zusätzlichen Pipelinestufe erfordern, um die korrekte Ermittlung zu ermöglichen, daß eine gesamte Anweisung zur Verteilung bereit ist und daß eine Anweisungs- Pipelinestufe eingeführt werden sollte, um das Problem eines Vorablesevorgangs zu lindern, was selbst zu zusätzlichen Seitenfehlerkomplexitäten und Reaktionszeiten beim Vorliegen einer Verzweigungsanweisung führen kann. Daher ergibt das allgemeine Konzept einer Anweisungscodierung mit variabler Länge nur eine begrenzte Verbesserung des Wirkungsgrads horizontal-mehrfachprogrammierter Maschinen, und es besteht auch die Tendenz einer Selbstbegrenzung, wenn tatsächliche Programme durch die mehreren Funktionseinheiten ausgeführt werden.
  • In einem Artikel mit dem Titel "The ZS-1 Central Processor" von J. E. Smith et al., Astronautics Corporation of America, Madison, Wiconsin, USA (Proceedings of the Second International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS II), Washington, D.C., USA; IEEE Computer Society Press, 1987; S. 199 - 204) ist ein 64-Bit-Hochgeschwindigkeits-Computersystem offenbart, das für wissenschaftliche und Ingenieuranwendungen konzipiert ist. Anweisungswörter werden von einer Anweisungsabrufeinheit abgerufen, die einen 16-KByte-Anweisungscache enthält. Aus dem Cache ausgelesene Anweisungen werden in ein Ausgaberegister der Anweisungsabrufeinheit gegeben, das als "Aufteiler (Splitter)" bezeichnet wird. Durch eine Pipeline für Integeranweisungen und eine Pipeline für Gleitkommaanweisungen werden 64-Bit-Anweisungswörter untersucht, um zu ermitteln, ob es sich um eine oder zwei Anweisungen handelt und ob die Anweisungen Gleitkomma-, Integer- oder Verzweigungsanweisungen sind. Zu den ersten beiden Klassen gehörende Anweisungen werden an einen Anweisungspuffer am Anfang einer jeweiligen Anweisungspipeline gegeben. Es werden bis zu zwei Anweisungen gleichzeitig an die Anweisungspipelines weitergegeben.
  • Die europäische Patentanmeldung EP-A-0 195 202 offenbart einen Registerauswahlmechanismus für einen Anweisungs-Vorababrufpuffer, der es ermöglicht, auf Anweisungen verschiedener Länge an Anweisungsgrenzen zuzugreifen, wobei die Adressenerzeugung und die Steuerlogik auf einen Lesezeiger zum Steuern des Zugriffs auf ungeradzahlige und geradzahlige Adressen in einem Array ansprechen.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die Erfindung ist eine Vorrichtung zur gleichzeitigen Verteilung von Anweisungen an eine Einrichtung 52 zum Bereitstellen eines Anweisungsworts, das mindestens einen Abschnitt enthält, der aus der Gruppe ausgewählt ist, der aus Integeranweisungen und Gleitkommaanweisungen besteht; an einen Anweisungscache 54; an einen Integerprozessor 66 und an einen Gleitkommaprozessor 62; dadurch gekennzeichnet, daß der Anweisungscache 54, der zum Empfangen des Anweisungsworts dient, einen Integeranweisungsbereich enthält, der zum Empfangen einer Anweisung dient, die nur vom Integertyp ist, und der zum Ausgeben der Anweisung direkt an den Integerprozessor 66 dient, und er einen Gleitkomma-Anweisungsbereich enthält, um eine Anweisung direkt an den Gleitkommaprozessor 62 auszugeben, wenn die Anweisung eine Gleitkommaanweisung ist; der Integerprozessor 66 zum Empfangen einer Integeranweisung vom Anweisungscache 54 und zum Verarbeiten von an ihn gelieferten Daten dient; und der Gleitkommaprozessor 62 zum Empfangen einer Gleitkommaanweisung vom Anweisungscache 54 besteht, wobei diese Gleitkommaanweisung gleichzeitig mit dein Empfang der Integeranweisung durch den Integerprozessor 66 empfangen wird, um an diesen Gleitkommaprozessor gelieferte Daten zu verarbeiten.
  • Die Erfindung verkörpernde Vorrichtungen werden nachfolgend beschrieben.
  • Die Vorrichtung und das Verfahren gemäß der Erfindung sorgen für wirkungsvolle gleichzeitige Verteilung von Anweisungen an mehrere Funktionseinheiten unter Verwendung einer natürlichen Ausrichtungsbegrenzung hinsichtlich der Komponenten variabler Länge im Anweisungsstrom. Die Anweisungen enthalten nur Mehrfache der Potenz 2 hinsichtlich der kleinsten Anweisungsgrößen von 4 Bytes. Das Anweisungswort maximaler Länge gemäß dem vorliegenden Verfahren und der Vorrichtung enthält getrennte, statisch positionierte Felder. Jedes Feld ist einer jeweiligen individuellen Decodier-/Steuereinrichtung gewidmet, die einer Funktionseinheit zugeordnet ist. Das Format der Anweisung umfaßt Langwortanweisungen mit einer Länge von 4 Bytes, die nur Integerprozessoranweisungen enthalten. Ein zweites Vierfachwortformat enthält ein Format mit Anweisungen für sowohl Integer- als auch Gleitkommaeinheiten, als auch ein Format mit zwei getrennten Integerprozessoranweisungen. Ein Bitfeld innerhalb der Anweisung zeigt die Länge und das Format der Anweisung an.
  • Jede der Funktionseinheiten enthält eine Decodier-/Steuereinrichtung. Wenn eine Anweisung mit weniger als der maximal möglichen Länge verteilt wird, können einige Felder fehlen. Die Decodier-/Steuereinrichtung jeder der Funktionseinheiten ermittelt unabhängig, ob ein Feld fehlt, in welchem Fall diese Decodier-/Steuereinrichtung so reagiert, als sei eine Anweisung no-op (keine Operation) vorhanden, weswegen sie ihrer zugehörigen Funktionseinheit keine Arbeit zuteilt. Eine erfindungsgemäße Vorrichtung enthält einen Anweisungscache mit einer Breite, die der breitest- oder längstmöglichen Anweisung entspricht, wodurch sichergestellt ist, daß in einem einzelnen Cachezyklus immer auf eine gesamte Anweisung zugegriffen wird. Anweisungsabrufzyklen werden als entweder solche, die den Programmzähler (PC) mit einem neuen, normalerweise nicht sequentiellen Wert (Übertragungszyklus) oder als solche gemäß einem sequentiellen Zyklus klassifiziert. Die sequentiellen Anweisungsabrufzyklen werden als solche klassifiziert, die dieselbe Cacheleitung wie der vorige Zyklus ansprechen und solche, die zur nächsten Cacheleitung weiterschreiten.
  • Der PC enthält einen Abschnitt hoher Ordnung, der den Cache indiziert, und einen Abschnitt niedriger Ordnung, der den geeigneten Startpunkt für die gewünschte Anweisung innerhalb der adressierten Cacheleitung spezifiziert. Der Abschnitt höherer Ordnung des PC kann unverändert bleiben, für jeden Zyklus um Eins (hexadezimal 4) inkrementiert werden (Bit 02), oder mit einer neuen Adresse geladen werden. Der obere PC bleibt unverändert, wenn während der sequentiellen Ausführung die aktuell zugeteilte Anweisung eine Langwortanweisung ist, die von der geradzahligen Seite des Caches abgerufen wurde. Der obere PC wird um Eins (hexadezimal 4) inkrementiert, wenn, während sequentieller Ausführung, die zugeteilte Anweisung eine 32-Bit-Anweisung von der ungeradzahligen Seite des Caches ist oder es eine Vierfachwortanweisung ist. Der obere PC wird infolge einer vorgenommenen Verzweigung oder eines Aufrufs mit einer neuen Adresse geladen. Die Zieladresse enthält einen Abschnitt hoher und einen solchen niedriger Ordnung. Wenn der aktuelle Zyklus weder einen Übergang noch einen Fortschritt zur nächsten Cacheleitung ausführt (kein Zyklus mit neuer Cacheleitung), wird das Ausgangssignal der Inkrementiereinrichtung nicht berücksichtigt, und der PC hoher Ordnung verbleibt unverändert, und der PC niedriger Ordnung wird aktualisiert, um die Länge der vorangehenden Anweisung widerzuspiegeln. Wenn der aktuelle Zyklus zur nächsten Cacheleitung weitergeht, wird das Ausgangssignal der Inkrementiereinrichtung in den PC hoher Ordnung geladen, während der PC niedriger Ordnung auf 0 zurückgesetzt wird.
  • Dem Anweisungscache folgt ein Vorababrufpuffer, der den möglicherweise unverbrauchten Abschnitt einer Abrufleitung erfaßt. Der Vorababrufpuffer ist so weit wie der Anweisungscache vermindert um die Länge des kürzesten Anweisungsformats. Der Vorababrufpuffer wird während eines Zyklus mit neuer Cacheleitung durch das Ausgangssignal des Anweisungscaches geladen.
  • Die Decodier-/Steuereinrichtung jeder Funktionseinheit ist mit einem Multiplexernetzwerk verbunden, das eine Auswahl der zweckentsprechenden Felder sowohl direkt aus dem aktuellen Ausgangssignal des Anweisungscaches als auch aus dem Ausgangssignal des Vorababrufpuffers ermöglicht. Während eines Zyklus mit neuer Cacheleitung wählt der Multiplexer das zweckentsprechende Feld aus dem aktuellen Ausgangssignal des Anweisungscaches aus, wobei tatsächlich der Vorababrufpuffer für einen Zyklus umgangen wird. Alternativ wählt der Multiplexer das zweckentsprechende Feld aus dem Ausgangssignal des Vorababrufpuffers aus.
  • So sorgen die Vorrichtung und das Verfahren gemäß der Erfindung für verbesserten Wirkungsgrad beim Betrieb einer CPU mit mehreren Funktionseinheiten, während Beschränkungen und Kompliziertheiten verringert sind, wie sie dem Compiler auferlegt werden, um für den erforderlichen Anweisungsfluß zu den mehreren Funktionseinheiten zu sorgen.
  • BESCHREIBUNG DER ZEICHNUNG
  • Diese und andere Merkmale der Erfindung werden durch Lesen der folgenden detaillierten Beschreibung der Erfindung gemeinsam mit der Zeichnung besser verständlich werden.
  • Fig. 1 ist ein Blockdiagramm des Anweisungsverteilungsabschnitts einer zentralen Verarbeitungseinheit gemäß einem Ausführungsbeispiel der Erfindung;
  • Fig. 2 ist ein Diagramm, das das Anweisungsformat bei einem Ausführungsbeispiel der Erfindung definiert; und
  • Fig. 3 ist ein Diagramm, das den Anweisungsfluß durch einen Gleitkommaprozessor zeigt, der auch Signale vom Anweisungsstrom für einen Integerprozessor enthält.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
  • In Fig. 1 ist ein Blockdiagramm 50 einer erfindungsgemäßen Einheit für gleichzeitige Verteilung dargestellt. Anweisungsdaten werden von einer Quelle wie einem Programmspeicher 52 erhalten, die aus einem 72-Bit-Wort mit 64 Bits Anweisungsdaten und 8 Bits Paritätsdaten bestehen, wie es in der unten erörterten Fig. 2 dargestellt ist. Die durch die Quelle 52 gelieferten Anweisungen werden durch einen Anweisungscache 54 empfangen und eingespeichert, der einen geradzahligen und einen ungeradzahligen Abschnitt 56 und 58 enthält. Die Übertragung der Anweisungsdaten von der Quelle 52 zum Cache 54 wird durch ein Cachesteuerelement 60 gesteuert.
  • Jede im Beispielscache 54 abgespeicherte Anweisung ist eine einzelne 64-Bit-Vierfachwortanweisung 93 oder sie besteht aus 32-Bit-Langwortanweisungen 91 und 92. Die im ungeradzahligen Abschnitt 58 des Anweisungscaches 54 abgespeicherten Anweisungen 92 werden direkt von einem Gleitkommaprozessor 62 empfangen. Die im geradzahligen Abschnitt 56 des Anweisungscaches 54 abgespeicherten Anweisungen 91 werden von einem Multiplexer 64 empfangen, der eine Anweisung vom geradzahligen Abschnitt 56 oder vom ungeradzahligen Abschnitt 58 des Anweisungscaches 54 entweder zum Integerprozessor 66 oder zum Gleitkomma(FP)-Prozessor 62 liefert. Wenn vom Integerprozessor 66 eine Anweisung vom geradzahligen Abschnitt 56 empfangen wird, wird die Anweisung vom ungeradzahligen Abschnitt 58 in ein Vorababrufregister 70 eingespeichert. Da die folgende Anweisung vom Integerprozessor 66 vom Vorababrufregister 70 empfangen wird, wird ein Programmzählerregister 74 um 0 statt um 8 inkrementiert, wodurch die Übertragung neuer Anweisungen an den Anweisungscache 54 verhindert wird.
  • In Fig. 1 ist auch eine detailliertere Ansicht des Integerprozessors 66 gezeigt, gemäß der der Integerprozessor ein Anweisungsregister 102 enthält, das eine 32-Bit-Anweisung vom Ausgang des Multiplexers 64 oder vom Ausgang des Vorababrufregisters 70 erhält, wenn Freigabe durch ein Signal auf einer Leitung 68 erteilt ist. Die in das Anweisungsregister 102 eingespeicherte Anweisung wird von einer Ausführungseinheit 100, einer Decodier- und Steuerlogikeinheit 65 sowie anderen Logikelementen 112, 120 empfangen. Die Adresse dieser Anweisung wird in den Decodierprogrammzähler 122 eingespeichert. Die im Abrufprogrammzähler 104 abgespeicherte Adresse rührt von einer Handhabung der im Register 102 abgespeicherten Anweisung her. Die Handhabung wird z. B. durch einen von der Anweisung selbst abhängigen Logikprozeß ausgeführt, wie bereits erörtert und wie durch die folgenden Tabellen 1 - 4 veranschaulicht. Gemäß der Erfindung werden 64- Bit-Anweisungen in den Anweisungscache 54 geladen, entsprechend acht Bytes von Daten, mit acht Bits pro Byte. Daher hält das PC-Abrufregister 74 die geringstsignifikanten Bits 00, 01, 02 auf dem logischen Wert 0, so daß die Anweisungen mit Adreßintervallen von acht empfangen werden. Im allgemeinen laufen die Anweisungen im Integerprozessor 66 aufeinanderfolgend durch das Anweisungsregister 102, den Abrufprogrammzähler (Abruf-PC) 104, die Programmzähler-Einstellogik 120, den Decodierprogrammzähler 122, den Ausführungsprograminzähler 124, den Programmzähler 126 für die letzte Anweisung und den Abfangsposition-Programmzähler 128. Mit Ausnahme des dritten geringstsignifikanten Bits 02 im Decodierprogrammzähler 122 sorgen die Programmzähler 122, 124, 126 und 128 für Information zur Verwendung irgendwo im Integerprozessor 66, was nicht dargestellt ist, um den Anweisungsstatus der vorliegenden und vorigen Anweisung für andere Verwendungszwecke zu analysieren, wie zur Funktionserholung ausgehend von einem Abfangs- oder Blockierzustand, wie in der Technik bekannt.
  • Selbst wenn vom Anweisungscache 54 auf Leitungen 103 über den Multiplexer 64 eine Langwortanweisung empfangen wird, zeigt der Zustand des Bits 31 (siehe Fig. 2) der im Register 102 abgespeicherten Anweisung an, daß die Anweisung ein Langwort oder eine Langwortanweisung ist. Der Zustand des Bits 02 wird vom Anweisungsregister 102 bis zum Abrufprogrammzähler 104 aufrechterhalten. Die Programmzähler-Einstellogik 120 modifiziert selektiv nur das Bit 02 des Decodierprogrammzählers (DEC PC) 122 auf ein Verzweigungssignal 121 hin, das von der Decodier- und Steuerlogik 65 geliefert wurde, die ihrerseits auf eine Anweisung vom Anweisungsregister 102 reagierte. Das Verzweigungssignal auf der Leitung 121 dient dazu anzuzeigen, ob die nächste Anweisung eine sequentiell geliefert Anweisung ist oder ob sie das Ergebnis einer vorgenommenen Verzweigung ist, und es steuert den Multiplexer 119. Wenn eine Verzweigung vorgenommen wird, wird der Zustand des Bits 02 des DEC PC 122 über den Multiplexer 119 aufrechterhalten. Außer dann, wenn eine Verzweigungsanweisung vorliegt und weder das Anweisungsregisterbit 31 noch das Programmzählerbit 02 gesetzt ist, was anzeigt, daß die nächste zu lesende Anweisung die benachbarte ungeradzahlige Anweisung aus dem Anweisungscache 54 ist, wird das Bit 02 im Decodierprogrammzähler 122 gesetzt, was anzeigt, daß vom ungeradzahligen Abschnitt 58 des Anweisungscaches 54 eine decodierte Anweisung über das Vorababrufregister 70 ankommt, während der Multiplexer 64 gemäß dem Signal auf der Leitung 68 gesperrt wird. Der Multiplexer 106 wählt den Zahlenwert 0 aus, der vom Addierer 108 zum aktuellen Wert des Programmzähler 104 addiert wird und dann wiederum unverändert durch die Auswahl des Multiplexers 110 im Abrufprogrammzähler 104 wiederhergestellt wird. Der Zustand des Verzweigungssignals auf der Leitung 121 wird durch die Decodier-und Steuereinheit 65 bestimmt, die einen Teil des Signals vom Anweisungsregister 106 verwendet, als auch ein von der Ausführungseinheit 100 auf der Leitung 101 geliefertes Bedingungscodesignal CC.
  • Wenn eine Verzweigung direkt zu einem ungeradzahligen Langwort erfolgt, wird diese Anweisung vom ungeradzahligen Abschnitt 58 des Anweisungscaches 54 über den Multiplexer 64 auf der Leitung 107 empfangen, wenn eine Freigabe durch ein Signal auf der Leitung 68 und eine Auswahl mittels des Signals auf der Leitung 105 vorliegt. Wie oben erörtert, wird das Signal auf der Leitung 105 vom Bit 02 des Decodierprogrammzählers 122 hergeleitet, das durch die Funktion des Multiplexers 119 aufrechterhalten wird. Die Adresse, wie sie vom Abrufprogrammzähler 104 an den Multiplexer 119 geliefert wird, kann von einer direkten Verzweigung herrühren, die sich aus der Addition des Anweisungswerts im Abrufprogrammzähler 104, addiert zur Anweisung, ergibt, wie sie vom Addierer 112 an das Anweisungsregister 102 geliefert wird. Die sich ergebende Adresse wird vom Multiplexer 114 gesteuert durch die Decodier- und Steuerlogik 65 ausgewählt, der auch das Signal am Ausgang des Addierers 112 über den Multiplexer 110 an den Eingang des Abrufprogrammzählers 104 liefert, wo es eingespeichert wird und bei folgenden Ausführungstaktzyklen weitergegeben wird. Abhängig von den durch die Decodier- und Steuerlogik 65 und die Ausführungseinheit 100 ermittelten Zuständen kann eine indirekte Verzweigung vorgenommen werden, bei der die Adresse für diese indirekte Verzweigung von einem internen Register RA (nicht dargestellt) der Ausführungseinheit 100 geliefert wird und über die entsprechend aktivierten Multiplexer 114 und 110 an den Abrufprogrammzähler 104 weitergeleitet wird.
  • Das Anweisungsdatenwort 90 ist in der Fig. 2 veranschaulicht, das wahlweise aus zwei Langwortanweisungen 91 und 92 von jeweils 32 Bits oder aus einem einzelnen 64-Bit-Vierfachwort 93 bestehen kann. Zu den 64 Anweisungsbits kann ein 8-Bit-Fehlererkennungsparitätswort 94 hinzugefügt werden, oder es ist hinzugefügt, das der Einfachheit halber aus der folgenden Erörterung der Anweisungsdaten weggelassen wird. Das Langwort 91 oder 92 enthält jeweils 4 Bytes von Daten 95, 96, 97 und 98, wobei das höchstsignifikante Byte das Byte 0 ist. Ein typisches Byte 99 enthält 8 Bits, von denen das Bit 7 das höchstsignifikante Bit ist. Das Format dieser Anweisung entspricht dem Motorola-68000-Datenformat.
  • Die Anweisungslängen, wie sie durch die erfindungsgemäße Einheit für gleichmäßige Verteilung in der CPU unterstützt werden, umfassen eine ausgerichtete 64-Bit-Vierfachwortanweisung oder eine ausgerichtete 32-Bit-Langwortanweisung. Anweisungen werden allgemein als entweder Integer- oder Gleitkommaanweisungen klassifiziert. Integeranweisungstypen umfassen Register-in-Register-Integeranweisungen, Verzweigungs- und Speicherbezugnahmeanweisungen. Gleitkommaanweisungstypen umfassen Register-in-Register-Gleitkommaanweisungen. Eine ausgerichtete Langwortanweisung enthält nur Integeranweisungstypen. Das Format für ausgerichtete Vierfachwortanweisungen umfaßt eine Integeranweisung für die geradzahlige (höchstsignifikante) Langworthälfte der Vierfachwortanweisung sowie eine Gleitkommaanweisung in der ungeradzahligen (geringstsignifikanten) Langworthälfte der Vierfachwortanweisung. Für die Langwortform wird die abgerufene Anweisung an den Integerprozessor geliefert. Für die Vierfachwortform wird die geradzahlige (höchstsignifikante) Langwortanweisung an den Integerprozessor 66 geliefert. Die ungeradzahlige Langwortanweisung wird nur an den Gleitkommaprozessor 62 geliefert.
  • Zusätzlich zur gleichzeitigen Übertragung von Anweisungen sowohl an den Integerprozessor 66 als auch den Gleitkommaprozessor 62 von einem einzelnen Anweisungswort im Anweisungscache 54 überträgt die Erfindung auch ausgewählte Bits vom geradzahligen Abschnitt 56 des Anweisungscaches an den Gleitkommaprozessor, um für eine Steuerung der Speicherbezugnahmen vom/in den Gleitkommaprozessor 62 zu sorgen. Der Integerprozessor 66 führt Vierfachwortbezugnahme auf den Anweisungscache 54 aus. Ein externer Vorababrufpuffer 70 wird dazu verwendet, ein ungeradzahliges Langwort aufrechtzuerhalten, wenn zwei Integeranweisungen auf eine ausgerichtete Vierfachwortgrenze fallen. Wenn eine Anweisung aus dem Anweisungscache abgerufen wird, spezifiziert der Integerprozessor die nächste Abrufadresse über Signale auf der Leitung 72, die einen 29-Bit-PC-SRC-Datenbus zum Adressieren des Anweisungscaches 54 enthält.
  • Ein mit dem Integerprozessor 66 verbundener Multiplexer 64 wird ausschließlich zum selektiven Abrufen einer Anweisung entweder vom geradzahligen oder ungeradzahligen Abschnitt des Anweisungscaches 54 verwendet. Der ungeradzahlige Abschnitt 58 kann nur während des Abrufs des Ziels einer vorgenommenen Verzweigung angewählt werden. Das Vorababruf-IR- Auswahlsignal auf der Leitung 68 wird dazu verwendet, die Anweisung aus dem Cache 54 oder aus dem Vorababrufregister 70 auszuwählen. Das Vorababrufregister 70 wird ausgewählt, wenn die vorige Anweisungsverteilung eine ausgerichtete 32- Bit-Vierfachwortanweisung war und der aktuelle Abruf nicht auf dem Ziel einer vorgenommenen Verzweigung beruht. Das Vorababrufauswahlsignal signalisiert auch an die Speicherverwaltungseinheit (MMU), einschließlich der Cachesteuerung 60, daß der Integerprozessor im aktuellen Zyklus nicht auf den Anweisungscache Bezug nimmt, und daher sperrt es die Erzeugung eines Fehlzugriffs auf den Cache oder eine Ausnahme bezogen auf den aktuellen Abrufvorgang. Das Vorababrufregister 70 und der externe Programmzähler werden normal geladen, vorausgesetzt, daß der Integerprozessor 66 oder der Gleitkommaprozessor 62 keine Zugriffsblockierung signalisieren. Das Vorababrufregister-Auswahlsignal auf der Leitung 68 und das Steuersignal für den Multiplexer 64 werden normalerweise durch den Integerprozessor 66 geliefert. Jedoch ist die Speicherverwaltungseinheit (MMU), einschließlich der Cachesteuerung 60, während eines Fehlzugriffs auf den Anweisungscache für das Versorgen dieser Steuerungen mit der zurückkehrenden, verfehlten Anweisung zuständig, vorausgesetzt, daß das Belegtsignal PCSRC für die Speicherverwaltungseinheit klar erkannt wurde.
  • Die nachfolgenden detaillierten Statustabellen 1, 2, 3 und 4 veranschaulichen die Integerprozessor-Hardwareanforderungen. TABELLE 1 Abrufanforderungen für sequentielle Anweisungen:
  • Hinweis: Nächstabruf_PZ(2) entspricht "0" für alle obigen Fälle TABELLE 2 Abrufanforderungen für Aufrufanweisungen:
  • * Vorausgesetzt, daß Abruf_PZ "kein" Verzweigungsziel ist TABELLE 3 Abrufanforderungen für Verzweigungsanweisungen:
  • * vorausgesetzt, daß Abruf_PZ "kein" verzweigungsziel ist TABELLE 4 Abrufanforderungen für Verzweigungsziele:
  • Die unteren Zustandsgleichungen definieren Vorababruf-Steuerfunktionen TABELLE 4 (Fortsetzung)
  • Das Auswahlsteuersignal 68 für das Vorababrufanweisungsregister wird vom Netzwerk des Integerprozessors 66 geliefert, um das Vorababrufregister 70 als Quelle der nächsten Anweisung auszuwählen, die in das Integerprozessor-Anweisungsregister 102 zu laden ist. Das Programmzählerbit 2 sorgt für Steuerung vom Integerprozessor 66 zum Auswählen des ungeradzahligen Langworts aus dem nächsten Anweisungscache, wie in das Anweisungsregister des Integerprozessors zu laden. Die Vorababruf-Anweisungsregistersteuerung ist durch die Zustandsgleichungen veranschaulicht, wie sie im in der obigen Tabelle 4 angegebenen Pseudocode ausgedrückt sind.
  • Der Integerprozessor 66 und der Gleitkommaprozessor 62 enthalten jeweils einen Decodier-/Steuerabschnitt 65 bzw. 63, in dem das empfangene Anweisungswort decodiert wird.
  • Bei einem Ausführungsbeispiel der Erfindung speichert der Gleitkommaprozessor 62 auch Anweisungssignale ein, wie sie vom Multiplexer 64 gemäß Fig. 3 geliefert werden, wobei der Gleitkommaprozessor 62 ein Anweisungsregister 76 enthält, das Signale INST 31:00 vom ungeradzahligen Abschnitt 58 des Anweisungscaches 54 empfängt, in dem die Gleitkommaanweisungen dann an die Arithmetikregister 78 und die Multiplizierregister 80 weitergegeben werden, abhängig vom Design des Gleitkommaprozessors. Das Gleitkomma-Anweisungsregister 76 empfängt ebenfalls die Anweisungssignale INST INT 31:20, 15, 13:11 über den Multiplexer 64 vom geradzahligen Abschnitt des Anweisungscaches 54, wobei die Speichersignale von Eingabe/Ausgabe (E/A)-Steuerungs-Pipelineregistern 82 empfangen werden. Die E/A-Steuersignale werden dann dazu verwendet, die Datenübertragungsvorgänge zwischen dem Speicher und den Registern der Gleitkommaeinheit zu steuern. Das Gleitkomma- Anweisungsregister 76 empfängt auch Signale von einer Blokkierlogikeinheit 75.
  • Die Ergebniszustände, ASTAT 9:0 und MSTAT 9:0, von der Gleitkommaarithmetik- und Logikeinheit (ALU) (nicht dargestellt) bzw. dem Gleitkommamultiplizierer (MUL) (nicht dargestellt) werden an das Gleitkomma-Steuerchip (FPC) im Gleitkommaprozessor 62 geliefert, in dem der Ergebniszustand dazu verwendet wird, Bits in einem im FP PSW Register 83 abgespeicherten Prozessorstatuswort (PSW) zu aktualisieren, und er wird dazu verwendet, ein Statussteuerregister FP STATCTL 85 zu aktualisieren.

Claims (11)

1. Vorrichtung zur gleichzeitigen Verteilung von Anweisungen an mehrere Funktionseinheiten, mit:
- einer Einrichtung (52) zum Bereitstellen eines Anweisungsworts, das mindestens einen Abschnitt enthält, der aus der Gruppe ausgewählt ist, der aus Integeranweisungen und Gleitkommaanweisungen besteht;
- einem Anweisungscache (54);
- einem Integerprozessor (66) und
- einem Gleitkommaprozessor (62);
dadurch gekennzeichnet, daß
- der Anweisungscache (54), der zum Empfangen des Anweisungsworts dient, einen Integeranweisungsbereich enthält, der zum Empfangen einer Anweisung dient, die nur vom Integertyp ist, und der zum Ausgeben der Anweisung direkt an den Integerprozessor (66) dient, und er einen Gleitkomma-Anweisungsbereich enthält, um eine Anweisung direkt an den Gleitkommaprozessor (62) auszugeben, wenn die Anweisung eine Gleitkommaanweisung ist;
- der Integerprozessor (66) zum Empfangen einer Integeranweisung vom Anweisungscache (54) und zum Verarbeiten von an ihn gelieferten Daten dient; und
- der Gleitkommaprozessor (62) zum Empfangen einer Gleitkommaanweisung vom Anweisungscache (54) dient, wobei diese Gleitkommaanweisung gleichzeitig mit dem Empfang der Integeranweisung durch den Integerprozessor (66) empfangen wird, um an diesen Gleitkommaprozessor (62) gelieferte Daten zu verarbeiten.
2. Vorrichtung nach Anspruch 1, ferner mit einer Vorababruf-Registereinrichtung (70) zum Empfangen und Einspeichern einer Integeranweisung von einem Gleitkomma-Anweisungsbereich des Caches (54) und zum anschließenden Übertragen dieser Integeranweisung an den Integerprozessor (66), nachdem dieser Integerprozessor (66) eine Integeranweisung vom Integeranweisungsbereich des Caches (54) empfangen hat.
3. Vorrichtung nach Anspruch 1, bei der die Lieferungseinrichtung (52) folgendes aufweist:
- ein Programmzählerregister (74) mit einem Abschnitt hoher Ordnung, der Cacheleitungen innerhalb des Anweisungscaches (54) indiziert, und einem Abschnitt niedriger Ordnung, der einen zweckdienlichen Startpunkt für jede Anweisung innerhalb jeder Cacheleitung spezifiziert; und
- eine Einrichtung zum Inkrementieren des Abschnitts hoher Ordnung des Programmzählers (74) des Caches (54);
- wobei die Inkrementiereinrichtung vom Abschnitt hoher Ordnung des Programmzählers (74) nicht beachtet wird, wenn eine Übertragung einer Anweisung vom Vorababrufregister (70) an einen empfangenden Prozessor erfolgt.
4. Vorrichtung nach Anspruch 1, ferner mit einer Einrichtung zum Liefern einer Integeranweisung an den Integerprozessor (66) unabhängig davon, wo diese Integeranweisung innerhalb des Anweisungscaches (54) gespeichert ist.
5. Vorrichtung nach Anspruch 1, ferner mit einer Multiplexereinrichtung (64) zum wahlweisen Liefern einer Anweisung an den Integer(66)- oder den Gleitkomma(62)-Prozessor vom Integer- oder Gleitkomma-Anweisungsbereich.
6. Vorrichtung nach Anspruch 5, bei der
- eine Decodier- und Steuereinheit (65) des Integerprozessors (66) Bedingungscode- und Anweisungscode-Decodiersignale auf die empfangene Integeranweisung hin liefert; und
- die Multiplexereinrichtung (64) dadurch auf die Bedingungscode- und Anweisungscode-Decodiersignale reagiert, daß sie eine Anweisung aus dem Integeranweisungsbereich und dem Gleitkomma-Anweisungsbereich auswählt.
7. Vorrichtung nach Anspruch 6, bei der der Integerprozessor (66) einen Pipelineprozessor mit einer Einrichtung aufweist, die ein Programmzählersignal an einen Programmzähler und an die Multiplexereinrichtung (64) liefert.
8. Vorrichtung nach Anspruch 7, bei der die Einrichtung zum Liefern eines Programmzählersignals den Programmzähler selektiv entsprechend einer Anzahl adressierbarer Stellen im Speicher inkrementiert, wie aus einer Gruppe von Adresseninkrementierungsoptionen, die die folgenden sind:
- null (der Programmzähler wird nicht inkrementiert);
- Speicheradresseninkrementierung zum Adressieren der nächsten Anweisung; und
- Speicheradresseninkrementierung zum Adressieren des nächsten Anweisungsworts.
9. Vorrichtung nach Anspruch 8, bei der
- das Anweisungswort 64 Anweisungsbits aus 8 Bytes von 8 Bits pro Byte umfaßt;
- die Integer- und Gleitkommaanweisungen 4 Bytes mit 8 Bits pro Byte umfassen;
- die Multiplexereinrichtung (64) eine Einrichtung zum Adressieren jedes Anweisungswortbytes enthält;
- die Speicheradresseninkrementierung zum Adressieren der nächsten Anweisung eine solche für vier adressierbare Speicherstellen ist; und
- die Speicheradresseninkrementierung zum Adressieren des nächsten Anweisungsworts eine solche für 8 adressierbare Speicherstellen ist.
10. Vorrichtung nach Anspruch 8, ferner mit einer Vorababrufregistereinrichtung (70) zum Empfangen einer Integeranweisung vom Anweisungscache (54) und zum Liefern dieser Integeranweisung an den Integerprozessor (66), wenn der Programmzähler (74) nicht inkrementiert wird.
11. Vorrichtung nach Anspruch 10, bei der der Integerprozessor (66) ferner eine Verzweigungseinrichtung aufweist, die auf die Anweisungscode-Decodier- und Bedingungscodesignale reagiert, um ein Verzweigungssignal an die Einrichtung zum Liefern des Programmzählersignals zu liefern, wobei dieses Verzweigungssignal ein ganzzahliges Vielfaches der Speicheradresseninkrementierung zum Adressieren der nächsten Anweisung ist.
DE68927492T 1988-10-07 1989-10-06 Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten Expired - Lifetime DE68927492T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/255,105 US5051885A (en) 1988-10-07 1988-10-07 Data processing system for concurrent dispatch of instructions to multiple functional units

Publications (2)

Publication Number Publication Date
DE68927492D1 DE68927492D1 (de) 1997-01-09
DE68927492T2 true DE68927492T2 (de) 1997-04-03

Family

ID=22966857

Family Applications (1)

Application Number Title Priority Date Filing Date
DE68927492T Expired - Lifetime DE68927492T2 (de) 1988-10-07 1989-10-06 Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten

Country Status (4)

Country Link
US (1) US5051885A (de)
EP (1) EP0363222B1 (de)
JP (1) JP2864421B2 (de)
DE (1) DE68927492T2 (de)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0365322A3 (de) * 1988-10-19 1991-11-27 Hewlett-Packard Company Verfahren und Vorrichtung zur Ausnahmenbehandlung in Fliessbandprozessoren mit unterschiedlicher Befehlspipelinetiefe
EP0378415A3 (de) * 1989-01-13 1991-09-25 International Business Machines Corporation Verteilungsmechanismus für mehrere Befehle
JP2835103B2 (ja) * 1989-11-01 1998-12-14 富士通株式会社 命令指定方法及び命令実行方式
CA2037708C (en) * 1990-05-04 1998-01-20 Richard J. Eickemeyer General purpose compound apparatus for instruction-level parallel processors
DE69130588T2 (de) * 1990-05-29 1999-05-27 National Semiconductor Corp., Santa Clara, Calif. Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür
JP2771683B2 (ja) * 1990-07-17 1998-07-02 三菱電機株式会社 並列処理方式
US5163139A (en) * 1990-08-29 1992-11-10 Hitachi America, Ltd. Instruction preprocessor for conditionally combining short memory instructions into virtual long instructions
EP0477598A2 (de) * 1990-09-26 1992-04-01 Siemens Aktiengesellschaft Befehlswerk für einen n Prozessorelemente aufweisenden Prozessor
DE69231011T2 (de) * 1991-02-08 2000-09-28 Fujitsu Ltd., Kawasaki Cachespeicher zur Verarbeitung von Befehlsdaten und Datenprozessor mit demselben
JP2925818B2 (ja) * 1991-04-05 1999-07-28 株式会社東芝 並列処理制御装置
DE69327688T2 (de) 1992-08-12 2000-09-07 Advanced Micro Devices, Inc. Befehlsdecoder
US5617549A (en) * 1992-10-06 1997-04-01 Hewlett-Packard Co System and method for selecting and buffering even and odd instructions for simultaneous execution in a computer
US5410721A (en) * 1992-12-24 1995-04-25 Motorola, Inc. System and method for incrementing a program counter
US5721854A (en) * 1993-11-02 1998-02-24 International Business Machines Corporation Method and apparatus for dynamic conversion of computer instructions
EP1186995B1 (de) * 1993-11-05 2003-09-03 Intergraph Corporation Befehlsspeicher mit assoziativem Kreuzschienenschalter
US6360313B1 (en) 1993-11-05 2002-03-19 Intergraph Corporation Instruction cache associative crossbar switch
US5510934A (en) * 1993-12-15 1996-04-23 Silicon Graphics, Inc. Memory system including local and global caches for storing floating point and integer data
JP3462245B2 (ja) * 1993-12-22 2003-11-05 株式会社リコー 中央演算処理装置
US5590351A (en) * 1994-01-21 1996-12-31 Advanced Micro Devices, Inc. Superscalar execution unit for sequential instruction pointer updates and segment limit checks
US5559975A (en) * 1994-06-01 1996-09-24 Advanced Micro Devices, Inc. Program counter update mechanism
US5590358A (en) * 1994-09-16 1996-12-31 Philips Electronics North America Corporation Processor with word-aligned branch target in a byte-oriented instruction set
US5640526A (en) * 1994-12-21 1997-06-17 International Business Machines Corporation Superscaler instruction pipeline having boundary indentification logic for variable length instructions
US6006324A (en) * 1995-01-25 1999-12-21 Advanced Micro Devices, Inc. High performance superscalar alignment unit
US5867726A (en) * 1995-05-02 1999-02-02 Hitachi, Ltd. Microcomputer
JP3598589B2 (ja) * 1995-06-28 2004-12-08 株式会社日立製作所 プロセッサ
US5761469A (en) * 1995-08-15 1998-06-02 Sun Microsystems, Inc. Method and apparatus for optimizing signed and unsigned load processing in a pipelined processor
US5850563A (en) * 1995-09-11 1998-12-15 International Business Machines Corporation Processor and method for out-of-order completion of floating-point operations during load/store multiple operations
US5761105A (en) * 1995-09-26 1998-06-02 Advanced Micro Devices, Inc. Reservation station including addressable constant store for a floating point processing unit
US5878266A (en) * 1995-09-26 1999-03-02 Advanced Micro Devices, Inc. Reservation station for a floating point processing unit
JP3535354B2 (ja) * 1997-08-27 2004-06-07 株式会社東芝 ストール検出表示装置及び方法
US6292845B1 (en) * 1998-08-26 2001-09-18 Infineon Technologies North America Corp. Processing unit having independent execution units for parallel execution of instructions of different category with instructions having specific bits indicating instruction size and category respectively
US6282633B1 (en) * 1998-11-13 2001-08-28 Tensilica, Inc. High data density RISC processor
GB2352066B (en) * 1999-07-14 2003-11-05 Element 14 Ltd An instruction set for a computer
EP1208423A2 (de) * 2000-03-10 2002-05-29 Koninklijke Philips Electronics N.V. Verfahren um ein programm zu kompilieren
DE10043003A1 (de) 2000-09-01 2002-03-14 Infineon Technologies Ag Programmgesteuerte Einheit
US7328314B2 (en) * 2002-06-19 2008-02-05 Alcatel-Lucent Canada Inc. Multiprocessor computing device having shared program memory
US7793080B2 (en) * 2007-12-31 2010-09-07 Globalfoundries Inc. Processing pipeline having parallel dispatch and method thereof
US20090172370A1 (en) * 2007-12-31 2009-07-02 Advanced Micro Devices, Inc. Eager execution in a processing pipeline having multiple integer execution units
US8086825B2 (en) * 2007-12-31 2011-12-27 Advanced Micro Devices, Inc. Processing pipeline having stage-specific thread selection and method thereof
US8589950B2 (en) * 2011-01-05 2013-11-19 Blackberry Limited Processing user input events in a web browser
CN103336681B (zh) * 2013-07-03 2015-11-25 同济大学 针对采用变长指令集的流水线结构处理器的取指方法
US10235232B2 (en) * 2014-02-10 2019-03-19 Via Alliance Semiconductor Co., Ltd Processor with approximate computing execution unit that includes an approximation control register having an approximation mode flag, an approximation amount, and an error threshold, where the approximation control register is writable by an instruction set instruction
CN110515658A (zh) * 2014-07-30 2019-11-29 莫维迪厄斯有限公司 用于管理可变长度指令的方法和设备
US11314516B2 (en) * 2018-01-19 2022-04-26 Marvell Asia Pte, Ltd. Issuing instructions based on resource conflict constraints in microprocessor

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1233270A (en) * 1985-03-18 1988-02-23 Vojin G. Oklobdzija Register selection mechanism and organization of an instruction prefetch buffer
US4926323A (en) * 1988-03-03 1990-05-15 Advanced Micro Devices, Inc. Streamlined instruction processor

Also Published As

Publication number Publication date
EP0363222A3 (de) 1992-07-01
US5051885A (en) 1991-09-24
JPH02224055A (ja) 1990-09-06
EP0363222B1 (de) 1996-11-27
DE68927492D1 (de) 1997-01-09
JP2864421B2 (ja) 1999-03-03
EP0363222A2 (de) 1990-04-11

Similar Documents

Publication Publication Date Title
DE68927492T2 (de) Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten
DE69929936T2 (de) Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem
DE69331448T2 (de) Dataprozessor mit einem Cachespeicher
DE69329778T2 (de) System und verfahren zur handhabung von laden und/oder speichern in einem superskalar mikroprozessor
DE69534113T2 (de) Kompression der Befehlswörter eines Rechners
DE69932066T2 (de) Mechanismus zur "store-to-load forwarding"
DE3210816C2 (de)
DE3751474T2 (de) Verzweigungsstrom-Koprozessor.
DE68927911T2 (de) Datenverarbeitungssystem
DE68929483T2 (de) Datenprozessor mit einer Befehlseinheit, die einen Cachespeicher und einen ROM aufweist.
DE69738188T2 (de) Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor
DE68928677T2 (de) Verfahren und digitaler Computer zur Vorverarbeitung mehrerer Befehle
DE68928812T2 (de) Vorrichtung zur Auflösung von einer variablen Anzahl von möglichen Speicherzugriffskonflikten in einem Pipeline-Rechnersystem und Verfahren dazu
DE69017178T2 (de) Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung.
DE4206062C2 (de) Pipelineverarbeitung von Instruktionen
DE69130757T2 (de) Ausführungsvorrichtung für bedingte Verzweigungsbefehle
DE68928519T2 (de) Verfahren und Vorrichtung zur Vorhersage der richtigen Durchführung der Übersetzungen von virtuellen in physikalische Adressen
DE2317870C2 (de) Schaltungsanordnung zur Steuerung der Datenübertragung zwischen dem Hauptspeicher und mindestens einem E/A-Gerät in einer digitalen Datenverarbeitungsanlage
DE69624158T2 (de) Superskalarer Prozessor mit mehreren Registerblöcken und Erzeugung von spekulativen Antwortadressen
DE3588182T2 (de) Vorausschauende Speicherabrufmethode und System für Verzweigung mit Ausführungsbefehlen
DE69623146T2 (de) Verfahren und Vorrichtung zum Koordinieren der Benutzung von physikalischen Registern in einem Mikroprozessor
DE4207148A1 (de) Superscalar-prozessor
DE69030931T2 (de) Mehrfachsequenzprozessorsystem
DE3638572C2 (de)
DE69325826T2 (de) Rechner mit einer Parallelverarbeitungsfähigkeit

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD CO. (N.D.GES.D.STAATES DELAWARE),

8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE