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 EinheitenInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 7
- 238000009826 distribution Methods 0.000 title claims description 5
- 230000008569 process Effects 0.000 claims description 3
- 230000004044 response Effects 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 4
- ZRTQSJFIDWNVJW-WYMLVPIESA-N Lanoconazole Chemical compound ClC1=CC=CC=C1C(CS\1)SC/1=C(\C#N)N1C=NC=C1 ZRTQSJFIDWNVJW-WYMLVPIESA-N 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000009827 uniform distribution Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/321—Program or instruction counter, e.g. incrementing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3816—Instruction alignment, e.g. cache line crossing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent 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
- Die Erfindung betrifft Computerprozessoren, und insbesondere betrifft sie die Steuerung einer Multifunktionseinheit, die mit variabler Länge arbeitet.
- 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.
- 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.
- 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.
- 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.
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)
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)
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 |
-
1988
- 1988-10-07 US US07/255,105 patent/US5051885A/en not_active Expired - Lifetime
-
1989
- 1989-10-06 DE DE68927492T patent/DE68927492T2/de not_active Expired - Lifetime
- 1989-10-06 EP EP89310272A patent/EP0363222B1/de not_active Expired - Lifetime
- 1989-10-06 JP JP1261908A patent/JP2864421B2/ja not_active Expired - Lifetime
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 |