DE4301417A1 - - Google Patents

Info

Publication number
DE4301417A1
DE4301417A1 DE4301417A DE4301417A DE4301417A1 DE 4301417 A1 DE4301417 A1 DE 4301417A1 DE 4301417 A DE4301417 A DE 4301417A DE 4301417 A DE4301417 A DE 4301417A DE 4301417 A1 DE4301417 A1 DE 4301417A1
Authority
DE
Germany
Prior art keywords
instructions
pipeline
instruction
command
commands
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.)
Granted
Application number
DE4301417A
Other languages
English (en)
Other versions
DE4301417C2 (de
Inventor
Edward T Grochowski
Kenneth D Shoemaker
Ahmad Zaidi
Donald B Alpert
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE4301417A1 publication Critical patent/DE4301417A1/de
Application granted granted Critical
Publication of DE4301417C2 publication Critical patent/DE4301417C2/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, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • 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/38Concurrent instruction execution, e.g. pipeline, 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Description

Die vorliegende Erfindung betrifft ein Computersystem; ins­ besondere bezieht sich die Erfindung auf eine Mikroprozessorar­ chitektur und auf Wege zur Erhöhung der Geschwindigkeit, mit welcher Befehle ausgeführt werden.
Historisch bedingt wurden Computer so konstruiert, daß sie Befehle sequentiell, d. h. einen nach dem anderen, ausführen. Während das sequentielle Ausführen von Computerbefehlen ein lo­ gisches und geordnetes Betriebsverfahren zur Verfügung stellt, führte die stets vorhandene Forderung nach einer Erhöhung der Verarbeitungsgeschwindigkeit zum Suchen von Wegen zum Implemen­ tieren eines parallelen Ausführungsschemas.
Es gibt zahlreiche zu überwindende Probleme, wenn man er­ folgreich einen Computer oder Mikroprozessor konstruieren will, welcher zum parallelen Ausführen mehrerer Befehle in der Lage ist. Beispielsweise haben Mikroprozessoren typischerweise eine Befehlssatzarchitektur, welche hunderte von Einzelbefehlen ent­ hält. Zählt man sämtliche verschiedenen Arten der Adressiermo­ den für eine gegebene Architektur hinzu, ergibt sich wahr­ scheinlich eine Gesamtzahl möglicher Befehlscodes irgendwo im Bereich von Tausenden. Eine Paarbildung an sämtlichen der dabei möglichen ersten Befehle mit sämtlichen möglichen zweiten Be­ fehlen für einen gegebenen Befehlssatz führt leicht zu Millio­ nen unterschiedlicher Kombinationen. Der Entwurf einer Ma­ schine, welche zum Ausführen all dieser Kombinationen in der Lage ist, ist eine gewaltige Aufgabe. Es ist klar, daß die Ent­ wurfskomplexität so groß werden kann, daß ein solches Problem unüberschaubar wird. Problematisch ist der Bau verschiedener Decodierer, welche den vollständigen Befehlssatz in einer par­ allelen Maschine, welche Befehlspaare ohne große Zeitverzöge­ rungen ausführen könnte, decodieren könnten.
Ein anderes, mit dem Bau eines zum parallelen Ausführen von Befehlen geeigneten Computers verbundenes Problem ist, daß der Computer auch in der Lage sein muß, Software abzuarbeiten, wel­ che für ältere Maschinen konzipiert wurde; d. h. für Maschinen, welche durch sequentielle Ausführung von Befehlen - ein Befehl pro Taktzyklus - arbeiten. Mit anderen Worten: eine parallele Maschine muß das Erscheinungsbild einer sequentiellen Arbeits­ weise abgeben.
Wie zu sehen sein wird, offenbart die Erfindung ein Com­ putersystem, das zum Ausführen von zwei Befehlen in einem ein­ zigen Taktzyklus in der Lage ist. Die Erfindung arbeitet, indem sie ein aus einem gegebenen Befehlssatz ausgewähltes Befehls­ paar decodiert und anschließend das Paar parallel ausführt, um ein korrektes Ergebnis zu erhalten. Eines der hervorstechenden Merkmale der Erfindung ist, daß das Computersystem nur dann zwei Befehle parallel ausgibt, wenn es keine Registerabhängig­ keiten zwischen den gepaarten Befehlen gibt.
Es wird ein Computersystem beschrieben, das zwei Befehle parallel in einem einzigen Taktzyklus ausführen kann. Das Com­ putersystem weist einen Dual-Befehlsdecodierer auf, welcher dann zwei Befehle parallel ausgibt, wenn es keine Registerab­ hängigkeiten zwischen den Befehlen gibt und beide Befehle in den Befehlssatz des Computers fallen.
Bei einem Ausführungsbeispiel der Erfindung sind erste und zweite Befehls-Pipeline-Mittel zum Ausführen von Computerbefeh­ len vorgesehen. Die ersten Pipeline-Mittel können irgendeinen aus dem vollständigen Befehlssatz ausgegebenen Befehl ausfüh­ ren, während die zweiten Pipeline-Mittel auf die Ausführung ei­ nes vorgegebenen Teilsatzes von Befehlen beschränkt sind. Der Teilsatz wird in Abhängigkeit davon ausgewählt, was häufig aus­ geführte Befehle sind.
Es ist ein Registerabhängigkeitsüberprüfungsmittel vorgese­ hen zum Identifizieren des Zielregisters des ersten Befehls ei­ ner Befehlssequenz. Das Abhängigkeitsüberprüfungsmittel be­ stimmt auch, ob das Zielregister während der Ausführung des zweiten Befehls der Sequenz verwendet wird. Wenn dies nicht der Fall ist, zeigt das Abhängigkeitsüberprüfungsmittel an, daß eine erste Bedingung erfüllt ist. Außerdem ist ein Mittel vor­ gesehen, das bestimmt, ob sich der erste und der zweite Befehl der Sequenz innerhalb des vorgegebenen Teilsatzes befinden. Wenn beide Befehle im Teilsatz enthalten sind, zeigt das Be­ stimmungsmittel an, daß eine zweite Bedingung erfüllt ist. Je­ desmal dann, wenn sowohl die erste als auch die zweite Bedin­ gung erfüllt sind, kann das Befehlspaar parallel ausgegeben werden.
Ein weiteres Merkmal der Erfindung ist, daß das Computersy­ stem standardmäßig vorgibt (defaults), nur den ersten Befehl der Sequenz auszugeben, wenn nur eine der ersten oder zweiten Bedingungen erfüllt sind. D.h., wenn der erste und der zweite Befehl eine Registerabhängigkeit aufweisen oder wenn einer der Befehle nicht aus dem vorgegebenen Teilsatz entnommen ist, dann geht die Maschine standardmäßig in eine Bedingung, bei der nur der erste Befehl in einem einzigen Taktzyklus ausgeführt wird. Unter dieser Bedingung wird der zweite Befehl der Sequenz wäh­ rend des nächsten Taktzyklus ausgegeben.
Im folgenden wird die Erfindung anhand eines in der Zeich­ nung dargestellten Ausführungsbeispiels näher beschrieben. In der Zeichnung zeigen:
Fig. 1 die Ausführungsstruktur einer CPU-Pipeline eines bekannten Mikroprozessors;
Fig. 2 die Ausführungsstruktur der CPU-Pipeline nach der Erfindung; und
Fig. 3 ein Blockdiagramm der bei der Erfindung verwen­ deten Dual-Befehlsdecodierer-Einrichtung.
Es wird ein Mikroprozessor mit einer Einrichtung zum paral­ lelen Ausführen von zwei Befehlen während eines einzigen Takt­ zyklus beschrieben. In der folgenden Beschreibung werden zahl­ reiche spezielle Details erläutert, wie beispielsweise spe­ zielle Befehlstypen, Mikroprozessorarten usw., um ein besseres Verständnis des bevorzugten Ausführungsbeispiels der Erfindung zu erreichen. Für den Fachmann ist es jedoch klar, daß die Er­ findung auch ohne diese speziellen Details ausgeführt werden kann. An anderen Stellen werden bekannte Schaltungen, Struktu­ ren und Verfahren nicht im Detail gezeigt, um das Verständnis der Erfindung nicht unnötig zu erschweren.
Die Erfindung betrifft eine Einrichtung und ein Verfahren zum parallelen Ausführen mehrerer Computerbefehle in einem ein­ zigen Taktzyklus. Die Erfindung ist vorzugsweise in einem als i586 bekannten Mikroprozessor ausgeführt, welcher durch die In­ tel Corporation hergestellt wird. Der Mikroprozessor i586 ist eine verbesserte Version des Intel-Mikroprozessors i486. De­ tails der Architektur des Mikroprozessors i486 sind in zahlrei­ chen Veröffentlichungen beschrieben. (Intel, i486 und i586 sind Warenkennzeichnungen der Intel Corporation.) Obwohl in der Be­ schreibung häufig auf die Architektur des i586 Bezug genommen wird und Beispiele aus deren Befehlsfamilie herrühren, ist es klar, daß die Erfindung nicht auf diese spezielle Maschine be­ schränkt ist.
PIPELINING
Das Pipelining ist eine Implementierungsmethode, bei der mehrere Befehle gleichzeitig und überlappend ausgeführt werden. Das Pipelining ist eine im großen Umfang benutzte bekannte Me­ thode zum Verbessern der Effizienz und der Ausführungsgeschwin­ digkeit einer zentralen Verarbeitungseinheit (CPU). Bei einer Pipeline-Struktur gehen die Befehle an einem Ende ein - werden durch die Stufen oder Segmente hindurch verarbeitet - und ver­ lassen die Pipeline am anderen Ende wieder. Jede der Stufen der Pipeline schließt einen Teil des Befehls ab.
In Fig. 1 ist eine bekannte Pipeline-Struktur dargestellt, in welcher die Befehlsstufen durch die Einträge entlang der linken Spalte bezeichnet sind. Die Taktzeitintervalle zwischen den Befehlsschritten sind durch die horizontalen Nummern veran­ schaulicht. Jeder Schritt in der Pipeline wird als ein Taktzy­ klus oder Maschinenzyklus bezeichnet.
Die erste Stufe der Pipeline ist die Stufe "PF", welche den Abschnitt des Vor-Heranholens (prefetch) der Pipeline bezeich­ net. In dieser Stufe werden die Befehle aus einem On-Chip-Ca­ che-Speicher herangeholt. Die nächste Stufe der Pipeline ist mit "D1" bezeichnet. In dieser Stufe werden Befehle decodiert und ausgegeben. Die Stufe D2 ist eine Adreßberechnungsstufe. Es sei angemerkt, daß in Übereinstimmung mit den Prinzipien der Pipeline ein zweiter Befehl (beispielsweise I2) mit dem Ausfüh­ ren seiner Vor-Heranhol-Stufe beginnt, während sich der erste Befehl (beispielsweise I1) gerade in der Ausführung der Stufe D1 des zweiten Taktzyklus befindet. Die Stufe "EX" (execution) der Pipeline zeigt die hardwaremäßige Ausführung des Befehls an, während die Stufe "WB" (writeback) eine Rückschreib-Opera­ tion bezeichnet. Zu beachten ist, daß bei der bekannten Struk­ tur gemäß Fig. 1 in jedem beliebigen gegebenen Taktzyklus nur ein einziger Befehl in der Pipeline ausgeführt wird.
Wie bereits erörtert, stellt die Erfindung eine superska­ lare Maschine dar, welche in der Lage ist, während eines Takt­ zyklus zwei Befehle parallel auszuführen. Um dieses Ziel zu er­ reichen, enthält die Erfindung zwei vollständige Pipelines, von welchen jede in der Lage ist, Befehle in einem einzigen Taktzy­ klus auszuführen. Folglich kann die CPU zwei Befehle parallel in zwei getrennten Pipelines ausgeben. Im gegenwärtig bevorzug­ ten Ausführungsbeispiel werden die Pipelines als "u"- und "v"- Pipeline bezeichnet. Vorzugsweise kann die u-Pipeline jeden Be­ fehl der x86-Architektur ausführen. Die v-Pipeline kann be­ stimmte einfache Befehle ausführen, die konkreter in einem spä­ teren Abschnitt der Beschreibung definiert werden.
Unter Bezugnahme auf Fig. 2 wird die Pipeline-Struktur der Erfindung dargestellt. Zu beachten ist, daß in der Pipeline-Se­ quenz gemäß Fig. 2 zwei Befehle, I1 und I2, so dargestellt sind, daß sie in jeder Stufe der Pipeline in einem einzigen Taktzyklus ausgeführt werden. Wiederum ist die erste Stufe der Pipeline die Vor-Heranhol-Stufe, in deren Zeit Befehle von dem On-Chip-Cache herangeholt werden. Weil der erfindungsgemäße Mi­ kroprozessor separate Cache-Speicher für Befehle und für Daten aufweist, steht das Vor-Heranholen nicht länger im Widerspruch zu den Datenreferenzen für einen Zugriff auf den Cache, wie das bei bekannten CPU′s der Fall war. Dies bedeutet, daß während der Vor-Heranhol-Stufe die Befehle I1 und I2 direkt aus dem Be­ fehls-Cache-Speicher herangeholt werden und in die u- und v-Pi­ pelines geladen werden. In der nächsten Pipeline-Stufe (d. h. D1) werden die Befehle I1 und I2 decodiert und ausgegeben.
BEFEHLSAUSGABE UND PIPELINE-SEQUENZBILDUNG
Wie bereits festgestellt, kann der erfindungsgemäße Mikro­ prozessor einen oder zwei Befehle in einem einzigen Taktzyklus ausgeben. Um zwei Befehle gleichzeitig auszugeben, müssen je­ doch beide Befehle des Paares bestimmte Bedingungen erfüllen. D.h., beide Befehle des Paares müssen in einem vordefinierten Teilsatz von Befehlen enthalten und frei von wechselseitigen Abhängigkeiten sein. (Dieser Aspekt der Erfindung soll kurz de­ taillierter diskutiert werden.)
Der Prozeß der parallelen Ausgabe von zwei Befehlen wird als "Befehls-Paarung" bezeichnet. Wenn Befehle gepaart werden, ist der zur v-Pipeline (zweite Pipeline) ausgegebene Befehl stets der in der Sequenz nächste Befehl nach dem zur u-Pipeline ausgegebenen Befehl. Obwohl die Befehle parallel ausgeführt werden können, ist das Verhalten aus der Sicht des Programmie­ rers exakt das gleiche, wie bei einer sequentiellen Ausführung (wie sie der Fall bei bekannten Konstruktionen wäre). Die Be­ fehle schreiten parallel durch die Stufen D2 und EX bis zu ih­ rem Abschluß in der Stufe WB voran. Es ist klar, daß während ihres Voranschreitens durch die Pipeline die Befehle aus einer beliebigen Anzahl von Gründen zum Stillstand gebracht werden können. Wenn beispielsweise ein Befehl in der u-Pipeline verzö­ gert wird, dann wird der mit ihm zur v-Pipeline ausgegebene Be­ fehl (sofern vorhanden) ebenfalls in der gleichen Pipeline- Stufe verzögert. Keinen nachfolgenden Befehlen wird es gestat­ tet, zu der zum Stillstand gebrachten Stufe einer der beiden Pipelines voranzuschreiten. Wenn ein Befehl in der v-Pipeline zum Stillstand gebracht wird, wird dem mit ihm in die u-Pipe­ line ausgegebenen Befehl gestattet, voranzuschreiten, während die v-Pipeline stillsteht.
BEFEHLSPAARUNG
Die grundliegende Idee der Erfindung ist, daß das Computer­ system eine Decodiereinrichtung enthält, welche nur dann zwei Befehle parallel ausgibt, wenn es zwischen ihnen keine Regi­ sterabhängigkeiten gibt und wenn beide Befehle zu einem Teil­ satz von Befehlen gehören, der für eine Parallelausführung ge­ eignet ist. Der Dual-Befehlsdecodierer identifiziert zuerst das Zielregister des ersten Befehls der Programmsequenz. Dieser Be­ fehl wird der u-Pipeline-Befehl. Dann bestimmt die erfindungs­ gemäße Einrichtung, ob der u-Pipeline-Befehl in irgendeiner Weise während der Ausführung des zweiten Befehls der Sequenz verwendet wird. Wenn dies nicht der Fall ist (d. h. die beiden Befehle unabhängig voneinander sind), dann werden beide Befehle parallel ausgegeben.
Wie bereits gesagt, enthält die erfindungsgemäße superska­ lare Maschine zwei parallele Pipelines (u- und v-Pipeline ge­ nannt), welche eine Parallelität innerhalb des vollständigen Befehlssatzes ausnutzen. Die Befehlseinheit des Mikroprozessors gibt stets den ersten Befehl der Befehlssequenz zur u-Pipeline und den zweiten Befehl zur v-Pipeline aus. Die v-Pipeline bleibt jedesmal dann stehen, wenn der Operand der u-Pipeline nicht zugreifbar ist oder es eine Adreßkollision zwischen den Pipelines gibt. Eine Paarung kann nur zwischen zwei Integer-Be­ fehlen oder zwei Gleitkomma-Befehlen auftreten.
Grundsätzlich können einfache Befehle solange gepaart wer­ den, wie zwischen ihnen keine Abhängigkeiten existieren. Um zwei Integer-Befehle gleichzeitig auszugeben, müssen entspre­ chend dem gegenwärtig bevorzugten Ausführungsbeispiel die fol­ genden Bedingungen erfüllt sein. Als erstes muß der Befehl zu einem vorgegebenen Teilsatz des x86-Befehlssatzes gehören. Der Befehlsteilsatz zum Paaren von Integer-Befehlen ist in der fol­ genden Tabelle 1 gezeigt.
Tabelle 1
(Man beachte, daß in Tabelle 1 der Eintrag "alu r, r" eine Klasse von Befehlen bezeichnet, die solche Befehle wie "add", "or", "adc", "sbb", "and", "xor", cmp" enthalten.)
Die Idee der Teilsatz-Bildung ist ein wichtiges Konzept der Erfindung, da sie radikal die Anzahl der möglichen Kombinatio­ nen verschiedener Befehle reduziert, die während der parallelen Ausführung zu handhaben wären. Das System erkennt, daß es einen kleinen Teilsatz von Befehlen (ungefähr 20) gibt, welche etwa 95% sämtlicher Befehle ausmachen, die durch typische Software ausgeführt werden. Eine Sammlung der am häufigsten verwendeten Befehle ist in der obigen Tabelle 1 aufgelistet. Die Verwendung der Teilsatz-Bildung bedeutet, daß der Dual-Befehlsdecodierer nicht den vollständigen Befehlssatz abzuarbeiten braucht. Im Gegenteil, seine Konstruktion kann vereinfacht werden, um die enthaltenen zeitlichen Relationen bedeutend zu verbessern. Die Verwendung der Teilsatz-Bildung gestattet auch der Maschine, schnell die zwei Befehle zu identifizieren, sie schnell zu de­ codieren und sie dann parallel auszuführen.
Die nächste wichtige Restriktion bei der parallelen Ausfüh­ rung von Befehlen ist, daß es keine Registerabhängigkeiten zwi­ schen den gepaarten Befehlen geben darf. Dies bedeutet, daß das Zielregister des ersten Befehls nicht als Quell-, Ziel-, Basis- oder Index-Register des nächsten Befehls verwendet werden kann. Dieses Erfordernis gilt für die explizite und implizite Verwen­ dung von Registern für die Befehle. (Es sei angemerkt, daß eine Ausnahme die Paarung der "push"- und "pop"-Befehle darstellt, für welche im gegenwärtig bevorzugten-Ausführungsbeispiel eine spezielle Hardware in der Segmentierungseinheit existiert, wel­ che den Kellerspeicherzeiger aktualisiert.) Für die Überprüfung der Abhängigkeiten ist die Verwendung eines Teils des 16/32- Bit-Registers gleichbedeutend mit der Verwendung des gesamten Registers. Wenn es eine Speicherabhängigkeit zwischen den Be­ fehlen der u- und der v-Pipeline gibt, d. h. wenn sowohl die u- als auch die v-Pipeline Speicherzugriffe zur gleichen Bank/Adresse des Daten-Cache-Speichers ausführt, so wird der Zyklus der v-Pipeline im Gleichgewicht gehalten, bis der Zu­ griff der u-Pipeline beendet ist.
Andere, für die aktuelle Implementierung des Mikroprozes­ sors i586 charakteristische Restriktionen sind:
  • - Der Befehl der v-Pipeline darf keinen Präfix haben, mit Ausnahme von OF jcc.
  • - Die Ende-Bit-Marke im Befehls-Cache-Speicher, die dem er­ sten Befehl entspricht, muß geeignet gesetzt sein.
  • - Es sind ausreichend viele Befehlscode-Bytes in den Vor- Heranhole-Puffern vorhanden, um beide Befehle zu decodie­ ren.
  • - Ein Befehl in der u- oder v-Pipeline kann entweder eine Verschiebung oder einen Direktoperanden, aber nicht bei­ des aufweisen.
  • - adc- und sbb-Befehle sind in der v-Pipeline nicht erlaubt (um Abhängigkeiten vom Übertragsflag der u-Pipeline zu vermeiden).
Im folgenden wird auf Fig. 3 Bezug genommen, in der ein Blockdiagramm eines Dual-Befehlsdecodierers gezeigt ist, daß das breite Konzept der Erfindung veranschaulicht. In Fig. 3 werden die Befehlscodes der u-Pipeline und der v-Pipeline mit den Decodierern 12 bzw. 14 gekoppelt. Zusätzlich zur Kopplung mit dem Decodierer 12 wird der Befehlscode der u-Pipeline außerdem mit einem zusätzlichen Decodierer 13 gekoppelt. Die Decodierer 12, 13 und 14 sind gewöhnliche programmierbare Lo­ gikfelder (PLAs), welche sämtliche Decodierungen der Befehle ausführen. Beispielsweise erzeugt der Decodierer 12 den ersten Vektor des Mikrocodes für den Befehl der u-Pipeline, während der Decodierer 14 eine ähnliche PLA aufweist, welche dem ersten Vektor des Mikrocodes für den Befehl der v-Pipeline decodiert. Jeder der Mikrocodevektoren weist Felder auf, welche Informa­ tionen enthalten wie beispielsweise den Ort des Quellregisters, das Zielregister, ALU-Operationsinformationen, Adreßberechnun­ gen und Verschiebungs-Direktoperanden.
Natürlich ist das zentrale Merkmal der Erfindung, daß der in Fig. 3 dargestellte Dual-Decodierer in der Lage ist, entwe­ der einen oder zwei Befehle in einem einzigen Zyklus auszuge­ ben. Da das Ausführungsbeispiel der Erfindung in der Lage sein soll, sämtliche Befehle der x86-Befehlsfamilie zu bearbeiten, ist der Decodierer gemäß Fig. 3 in zwei Abschnitte oder Pfade geteilt. Ein Pfad ist in der Lage, sämtliche Befehle des x86- Befehlssatzes zu handhaben, während der andere Pfad speziell darauf gerichtet ist, einen zweiten Befehl parallel zu handha­ ben. Mit anderen Worten: die vorliegende Erfindung enthält einen Operationsmodus, bei dem ein Befehl je Taktzyklus ausge­ führt wird, wenn die Bedingungen für eine superskalare Be­ triebsweise nicht erfüllt sind.
Im folgenden wird weiter auf Fig. 3 Bezug genommen. Die zwei Pipelines sind sehr ähnlich, ausgenommen der Tatsache, daß die u-Pipeline als standardmäßig vorgegebene Pipeline arbeitet, wenn die superskalaren Bedingungen nicht erfüllt sind. Dies be­ deutet, daß der Pfad der u-Pipeline in Fig. 3 zur Ausführung sämtlicher x86-Befehle in der Lage ist, wohingegen die v-Pipe­ line nur auf einen Teilsatz des vollständigen Befehlssatzes ge­ richtet ist. Zum Beispiel sind die Decodierer 13 und 14 spezi­ ell konstruiert, um nur einen Teilsatz des vollständigen x86- Befehlssatzes zu decodieren. Auf der anderen Seite ist der De­ codierer 12 in der Lage, den vollständigen Befehlssatz zu deco­ dieren, wenn die Maschine standardmäßig einen Befehl pro Takt­ zyklus vorgibt. In einer Sequenz repräsentiert die u-Pipeline stets den ersten Befehl in der Sequenz und die v-Pipeline stets den zweiten Befehl in der gleichen Sequenz.
Das Überprüfen der Registerabhängigkeit wird durch die Ein­ heit 19 ausgeführt, welche Ausgangssignale aus den Decodierern 13 und 14 empfängt. Die Ausgangssignale der Decodierer 13 und 14 (welche mit der Einheit 19 gekoppelt sind) enthalten Infor­ mationen, welche das Zielregister des aktuellen Befehls anzei­ gen. In der Einheit 19 bestimmt herkömmliche Logik, ob eine Ab­ hängigkeit im Zielregister für jeden Befehl existiert, indem das Zielregister der u-Pipeline identifiziert wird und sicher­ gestellt wird, daß es nicht in dem Befehl der v-Pipeline ver­ wendet wird. In der gleichen Zeit, in der die Registerabhängig­ keitsüberprüfung ausgeführt wird, findet auch eine Längenkalku­ lation statt, welche durch die Einheit 17 ausgeführt wird. Mit anderen Worten: die Einheit 17 berechnet die Länge des Befehl­ spaars, d. h. die Summe der Befehle der u- und der v-Pipeline. Die Einheit 15 berechnet nur die Länge des Befehls der u-Pipe­ line.
Der Konzeption nach werden die Ausgänge der Einheiten 15 und 17 mit einem Multiplexer 21 gekoppelt, welcher die Länge des Befehls ausgibt. Der Multiplexer 21 wird durch ein Signal ISELTWO gesteuert, welches die von der Registerabhängigkeits- Überprüfungseinheit 19 ausgegebene Basisinformation "gib einen/zwei aus" zur Verfügung stellt. Das Signal "ISELTWO" ist das gleiche Signal, das verwendet wird, um durch Steuerung des Multiplexers 22 den Befehl der v-Pipeline bedingt auszuführen. Wenn die Registerabhängigkeitsüberprüfungseinheit 19 fest­ stellt, daß nur ein Befehl ausgeführt werden kann, wird der Multiplexer 21 angesteuert, so daß die Befehlslänge gleich der jeweiligen Länge des Vektors der u-Pipeline ist. Wenn nur ein Befehl ausgegeben wird, wählt das Steuersignal ISELTWO in der v-Pipeline keine Operation ("nop") als durch den Multiplexer 22 auszugebende Operation aus. In einem solchen Fall kommt die Länge allein aus der u-Pipeline.
Wenn es keine Registerabhängigkeit gibt, können zwei Be­ fehle parallel ausgeführt werden. Für diese Bedingung wird die durch den Multiplexer 21 ausgegebene Befehlslänge so ausge­ wählt, daß sie gleich der berechneten Länge der Befehle der u- und v-Pipeline zusammen ist (d. h. der Ausgabe von Einheit 17). Unter dieser Bedingung sieht die Maschine das Paar im wesentli­ chen als einen langen Befehl. Wenn zwei Befehle parallel ausge­ führt werden, leitet der Multiplexer 22 einfach den Mikrocode­ vektor der u-Pipeline zum Ausgang des Multiplexers 22 durch. Die Informationen an den Ausgängen der Multiplexer 21 und 22 werden mit der Ausführungseinheit des Mikroprozessors gekop­ pelt. Die Ausführungseinheit enthält normalerweise die Adreßbe­ rechnungseinheit, die arithmetisch-logische Einheit (ALU), die Datenpfade, die Registerdateien usw..
Es sei betont, daß sämtliche durch den Dual-Befehlsdecodie­ rer gemäß Fig. 3 ausgeführten Operationen innerhalb eines Takt­ zyklus erfolgen. D.h., daß innerhalb eines einzigen Taktzyklus die Befehlscodes an die Eingänge des oberen Decodierers gekop­ pelt und die Vektoren von den Multiplexeinheiten zur Verfügung gestellt werden.
PAARBILDUNGSBEISPIELE
Um die Erfindung besser verstehen und einschätzen zu kön­ nen, sollen folgende Beispiele von Befehlssequenzen betrachtet werden. Diese Sequenzen veranschaulichen auch die bereits erör­ terten wichtigen Paarungsregeln. (Zu beachten ist, daß in dem vorgesehenen Format der Zieloperand auf der linken Seite ist.) Es wird das folgende Paar von einfachen Befehlen betrach­ tet.
mov edx, (ebx)
add esi, 4;
Bei diesem Beispiel ist der erste Befehl in der Sequenz ein "mov"-Befehl, welcher durch die u-Pipeline verarbeitet wird. Das Zielregister des Befehls der u-Pipeline ist edx. Da edx in keiner Weise durch den Befehl "add" der v-Pipeline verwendet wird und darüberhinaus beide Befehle innerhalb des Befehlsteil­ satzes (siehe Tabelle 1) liegen, kann der Decodierer gemäß Fig. 3 beide parallel ausgeben.
Während der Ausführung ist der Befehlscode des ersten Be­ fehls (d. h. "mov") der Befehlscode der u-Pipeline, wohingegen "add" der Befehlscode der v-Pipeline ist. Der obere Decodierer 12 decodiert den Befehl "mov" und erzeugt einen u-Pipeline-Vek­ tor, welcher spezifiziert, daß das Zielregister edx ist. Der Decodierer spezifiziert außerdem, daß ein Speicherlesen erfor­ derlich ist, wobei die Adresse durch edx spezifiziert ist. Der Decodierer 12 identifiziert auch die Komponenten der Adreßbe­ rechnung und stellt fest, daß es ein Ein-Vektor-Makrobefehl ist. Zur gleichen Zeit sieht der Teilsatz-Decodierer 13 nach, ob "mov" innerhalb des Teilsatzes der Befehle liegt, die für eine Doppelausgabe geeignet sind. Der Decodierer 13 identifi­ ziert außerdem das Zielregister edx, welches durch die Regi­ sterabhängigkeitsüberprüfungseinheit 19 verwendet wird. Die Einheit 19 überprüft edx gegenüber esi und schlußfolgert, daß es sich nicht um die gleichen Register handelt.
Auf der Seite der v-Pipeline sieht der Decodierer 14 auf add esi und identifiziert esi als Zielregister (in diesem Bei­ spiel ist esi außerdem die Quelle). Der Decodierer 14 identifi­ ziert auch die Direktoperandenkomponente (d. h. 4), und die Ein­ heit 17 berechnet dann die Länge der zwei Befehle. Der "add"- Befehl rückt dann in der v-Pipeline voran. Da beide Befehle einfache Befehle sind und es keine Abhängigkeiten zwischen ih­ nen gibt, können diese beiden Befehle folglich gepaart werden.
Als nächstes soll das folgende Paarungsbeispiel betrachtet werden.
mov edx (ebx);
add edx, 4;
In diesem Beispiel ist das Zielregister des u-Pipeline-Be­ fehls edx. Da dieses Zielregister außerdem im Befehl der v-Pi­ peline verwendet wird, stellt die Abhängigkeitsüberprüfungslo­ gik fest, daß beide Befehle nicht parallel ausgegeben werden dürfen. In diesem Fall wird der Befehl der u-Pipeline zuerst ausgegeben, während der Pfad der v-Pipeline untätig bleibt (d. h., die v-Pipeline gibt ein "nop" aus). Im folgenden Taktzy­ klus wird der "add"-Befehl in der u-Pipeline ausgeführt. Es ist klar, daß der während des nächsten Taktzyklus in der u-Pipeline ausgegebene add-Befehl gegebenenfalls parallel zu irgendeinem in der Sequenz folgenden Befehl ausgegeben werden kann. In dem Fall, daß beide Befehle parallel ausgegeben werden, wird der nächste Befehl in der Sequenz (der dem "add"-Befehl folgt) in der v-Pipeline ausgegeben.
Jetzt soll das folgende Beispiel betrachtet werden.
lds (ebx);
push eax;
Bei diesem Beispiel ist der Ladebefehl "lds" nicht in dem Teilsatz von Befehlen enthalten, die für eine parallele Ausfüh­ rung geeignet sind (siehe Tabelle 1). Folglich wird der lds-Be­ fehl in der u-Pipeline ausgegeben, und in dem folgenden Taktzy­ klus wird der "push"-Befehl in der u-Pipeline ausgegeben. In diesem Fall identifiziert der obere Decodierer 13 der u-Pipe­ line den lds-Befehl als nicht dem geeigneten Teilsatz angehö­ rig. Dies ist der Fall, obwohl es keine Abhängigkeiten zwischen den beiden Befehlen gibt. Es ist wichtig zu beachten, daß der Befehlscode der v-Pipeline zum Befehlscode der u-Pipeline für den nächsten Taktzyklus wird, wenn zwei Befehle nicht parallel ausgegeben werden können. Der in der Sequenz nächste Befehl wird dann der v-Pipeline-Befehlscode.
Es ist klar, daß die spezielle Befehlsliste in dem Teilsatz von x86-Befehlen des gegenwärtig bevorzugten Ausführungsbei­ spiels in anderen alternativen Ausführungsbeispielen variieren kann. Gleichzeitig können verschiedene Ausführungsbeispiele eine Paarung von bestimmten Befehlen gestatten, für welche es eine implizite Abhängigkeit gibt, sofern eine spezielle Hard­ ware existiert, die ein paralleles Ausgeben und Ausführen bei­ der Befehle gestattet. Beispielsweise enthält das gegenwärtig bevorzugte Ausführungsbeispiel eine spezielle Hardware, welche es ihm gestattet, die folgenden Befehle parallel auszuführen:
cmp edx, 0;
jnz loop.
Im obigen Beispiel enthält der Mikroprozessor spezielle Hardware, die ein paralleles Ausgeben und Ausführen dieser Be­ fehle gestattet, obwohl es eine implizite Abhängigkeit beim z- Flag gibt.
Beim Paaren von zwei Gleitkomma-Befehlen gelten die letzten drei der für die Integer-Befehlspaarung zusammen mit der Spei­ cherabhängigkeitsprüfung aufgelisteten Bedingungen im aktuellen Ausführungsbeispiel nicht. Der Grund dafür ist, daß Gleitkomma- Befehle keine Direktoperanden-Bytes haben. Auch ist eine Regi­ sterabhängigkeit zwischen den u-Pipeline-Befehlen und dem fxch- Befehl in der v-Pipeline erlaubt. Da fxch ein Register-Regi­ ster-Befehl ist, findet die Speicherabhängigkeit keine Anwen­ dung. Der Teilsatz von Gleitkommabefehlen, die in beiden Pipe­ lines gepaart werden können, ist für das gegenwärtig bevorzugte Ausführungsbeispiel unten in Tabelle 2 aufgelistet. Sämtliche Befehle sind Ein-Vektor-Befehle.
Tabelle 2
Im Rahmen des Erfindungsgedankens sind zahlreiche Alterna­ tiven und Modifikationen denkbar. Obwohl in dieser Beschreibung ein bestimmter Satz von zu erfüllenden Bindungen und Regeln ge­ zeigt wurde, können bei anderen Ausführungsbeispielen andere Bedingungen gelten.

Claims (7)

1. Computersystem, das zwei Computerbefehle parallel aus­ führen kann, gekennzeichnet durch:
erste und zweite Pipeline-Mittel zum Ausführen von Compu­ terbefehlen, wobei die ersten Pipeline-Mittel zum Ausführen ei­ nes aus einem vorgegebenen Befehlssatz ausgegebenen beliebigen Befehls und die zweiten Pipeline-Mittel zum Ausführen nur eines Teilsatzes von Befehlen aus dem vorgegebenen Befehlssatz betä­ tigbar sind;
Abhängigkeitsüberprüfungsmittel (19), welche das Zielregi­ ster des ersten Befehls in einer Befehlssequenz identifizieren, ferner feststellen, ob das Zielregister während der Ausführung des zweiten Befehls in der Sequenz verwendet wird, und anzei­ gen, daß eine erste Bedingung erfüllt ist, wenn das Zielregi­ ster während der Ausführung des zweiten Befehls nicht verwendet wird;
Mittel zum Feststellen, ob sich der erste und der zweite Befehl in der Sequenz innerhalb des Teilsatzes befinden, und zum Anzeigen, daß eine zweite Bedingung erfüllt ist, wenn sich sowohl der erste als auch der zweite Befehl innerhalb des Teil­ satzes befinden; und
Befehlspaarungsmittel zum parallelen Ausgeben des ersten und des zweiten Befehls an die ersten und zweiten Pipeline-Mit­ tel, wenn die erste und die zweite Bedingung erfüllt sind.
2. Computersystem nach Anspruch 1, dadurch gekennzeichnet, daß der erste und der zweite Befehl in einem einzigen Taktzy­ klus ausgegeben werden, wenn die erste und die zweite Bedingung erfüllt sind.
3. Computersystem nach Anspruch 1 oder 2, dadurch gekenn­ zeichnet, daß die Befehlspaarungsmittel nur den ersten Befehl in der Sequenz an die ersten Pipeline-Mittel ausgeben, wenn entweder die erste oder die zweite Bedingung nicht erfüllt ist.
4. Computersystem nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß ferner Mittel zum Berechnen der kombinier­ ten Länge des ersten und des zweiten Befehls vorgesehen sind.
5. Computersystem mit einer CPU zum Abarbeiten eines Pro­ gramms, das aus einer Sequenz von aus einem Befehlssatz ausge­ wählten Befehlen besteht, und einer Ausführungsmaschine zum Ausführen der Befehle, gekennzeichnet durch:
erste und zweite Pipeline-Mittel zum Ausführen der Befehls­ sequenz, wobei sich gleichzeitig mehrere Befehle überlappend in Ausführung befinden;
Decodiermittel (12, 13, 14) zum Decodieren eines Befehls­ paars aus der Sequenz, um erste und zweite Mikrocodevektoren zum Ausführen in den ersten bzw. zweiten Pipeline-Mitteln zu erzeugen;
wobei die Decodiermittel (12, 13, 14) ein Mittel enthalten, das feststellt, ob der erste und zweite Befehl innerhalb eines vorgegebenen Teilsatzes des Befehlssatzes liegen;
Berechnungsmittel (15, 17) zum Berechnen der Länge des er­ sten Befehls und der kombinierten Länge des ersten und des zweiten Befehls;
Mittel (19) zum Feststellen von Registerabhängigkeiten zwi­ schen den beiden Befehlen und zum Erzeugen eines Signals (ISELTWO) bei fehlender Abhängigkeit; und
Multiplexmittel (21, 22) zum Ausgeben des ersten und zwei­ ten Mikrocodevektors und der kombinierten Länge an die Ausfüh­ rungsmaschine, wenn das Signal (ISELTWO) empfangen wird und der erste und der zweite Befehl sich innerhalb des vorgegebenen Teilsatzes befinden, wobei die Multiplexmittel anderenfalls den ersten Mikrocodebefehl in besagter Länge ausgeben.
6. Computersystem nach Anspruch 5, dadurch gekennzeichnet, daß der erste und der zweite Befehl innerhalb eines Taktzyklus des Computersystems ausgeführt werden, wenn das Signal (ISELTWO) von den Multiplexmittel (21, 22) empfangen wird und der erste und der zweite Befehl sich innerhalb des vorgegebenen Teilsatzes befinden.
7. Computersystem nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, daß der erste und der zweite Befehl ganzzahlige Befehle oder Gleitkomma-Befehle sind.
DE4301417A 1992-01-23 1993-01-20 Computersystem mit Einrichtung zur parallelen Befehlsausführung Expired - Lifetime DE4301417C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US82388192A 1992-01-23 1992-01-23

Publications (2)

Publication Number Publication Date
DE4301417A1 true DE4301417A1 (de) 1993-07-29
DE4301417C2 DE4301417C2 (de) 1998-06-18

Family

ID=25239997

Family Applications (1)

Application Number Title Priority Date Filing Date
DE4301417A Expired - Lifetime DE4301417C2 (de) 1992-01-23 1993-01-20 Computersystem mit Einrichtung zur parallelen Befehlsausführung

Country Status (8)

Country Link
US (1) US5475824A (de)
JP (1) JPH0628185A (de)
CN (1) CN1074771A (de)
DE (1) DE4301417C2 (de)
FR (1) FR2686717A1 (de)
GB (1) GB2263565B (de)
HK (1) HK1006882A1 (de)
IT (1) IT1263811B (de)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5710912A (en) * 1993-05-06 1998-01-20 Hewlett-Packard Co. Method and apparatus for enabling a computer system to adjust for latency assumptions
CA2123442A1 (en) * 1993-09-20 1995-03-21 David S. Ray Multiple execution unit dispatch with instruction dependency
US5630149A (en) * 1993-10-18 1997-05-13 Cyrix Corporation Pipelined processor with register renaming hardware to accommodate multiple size registers
EP0779577B1 (de) * 1993-10-18 2002-05-22 VIA-Cyrix, Inc. Mikroprozessorpipelinesteuerung und Registerübersetzung
US6138230A (en) * 1993-10-18 2000-10-24 Via-Cyrix, Inc. Processor with multiple execution pipelines using pipe stage state information to control independent movement of instructions between pipe stages of an execution pipeline
US6073231A (en) * 1993-10-18 2000-06-06 Via-Cyrix, Inc. Pipelined processor with microcontrol of register translation hardware
GB2289354B (en) * 1994-05-03 1997-08-27 Advanced Risc Mach Ltd Multiple instruction set mapping
GB2290395B (en) * 1994-06-10 1997-05-28 Advanced Risc Mach Ltd Interoperability with multiple instruction sets
US5692151A (en) * 1994-11-14 1997-11-25 International Business Machines Corporation High performance/low cost access hazard detection in pipelined cache controller using comparators with a width shorter than and independent of total width of memory address
US5931941A (en) * 1995-04-28 1999-08-03 Lsi Logic Corporation Interface for a modularized computational unit to a CPU
US5790826A (en) * 1996-03-19 1998-08-04 S3 Incorporated Reduced register-dependency checking for paired-instruction dispatch in a superscalar processor with partial register writes
US6212601B1 (en) * 1996-08-30 2001-04-03 Texas Instruments Incorporated Microprocessor system with block move circuit disposed between cache circuits
JP4226085B2 (ja) * 1996-10-31 2009-02-18 株式会社ルネサステクノロジ マイクロプロセッサ及びマルチプロセッサシステム
KR100231852B1 (ko) * 1996-11-06 1999-12-01 김영환 듀얼 파이프라인 프로세서에서 로드 명령의 병렬 수행 장치
US5802386A (en) * 1996-11-19 1998-09-01 International Business Machines Corporation Latency-based scheduling of instructions in a superscalar processor
US5974538A (en) * 1997-02-21 1999-10-26 Wilmot, Ii; Richard Byron Method and apparatus for annotating operands in a computer system with source instruction identifiers
GB2325535A (en) 1997-05-23 1998-11-25 Aspex Microsystems Ltd Data processor controller with accelerated instruction generation
JPH11134197A (ja) * 1997-10-29 1999-05-21 Fujitsu Ltd Vliw方式計算機用のコンパイル装置及び方法並びにコンパイル実行プログラムを格納した記録媒体
US6029267A (en) * 1997-11-25 2000-02-22 Lucent Technologies Inc. Single-cycle, soft decision, compare-select operation using dual-add processor
US6076154A (en) * 1998-01-16 2000-06-13 U.S. Philips Corporation VLIW processor has different functional units operating on commands of different widths
US6237101B1 (en) 1998-08-03 2001-05-22 International Business Machines Corporation Microprocessor including controller for reduced power consumption and method therefor
JP2000305781A (ja) 1999-04-21 2000-11-02 Mitsubishi Electric Corp Vliw方式プロセッサ、コード圧縮装置、コード圧縮方法およびコード圧縮プログラムを記録した媒体
US6330657B1 (en) * 1999-05-18 2001-12-11 Ip-First, L.L.C. Pairing of micro instructions in the instruction queue
US6453412B1 (en) * 1999-07-20 2002-09-17 Ip First L.L.C. Method and apparatus for reissuing paired MMX instructions singly during exception handling
US6839833B1 (en) * 1999-10-15 2005-01-04 Unisys Corporation Pipeline depth controller for an instruction processor
GB2359641B (en) 2000-02-25 2002-02-13 Siroyan Ltd Mapping circuitry and method
US6748411B1 (en) 2000-11-20 2004-06-08 Agere Systems Inc. Hierarchical carry-select multiple-input split adder
US7711926B2 (en) * 2001-04-18 2010-05-04 Mips Technologies, Inc. Mapping system and method for instruction set processing
US7363467B2 (en) * 2002-01-03 2008-04-22 Intel Corporation Dependence-chain processing using trace descriptors having dependency descriptors
US7111125B2 (en) * 2002-04-02 2006-09-19 Ip-First, Llc Apparatus and method for renaming a data block within a cache
US7398372B2 (en) * 2002-06-25 2008-07-08 Intel Corporation Fusing load and alu operations
US7051190B2 (en) * 2002-06-25 2006-05-23 Intel Corporation Intra-instruction fusion
JP3816844B2 (ja) * 2002-07-05 2006-08-30 富士通株式会社 プロセッサ及び命令制御方法
US7502910B2 (en) * 2003-01-28 2009-03-10 Sun Microsystems, Inc. Sideband scout thread processor for reducing latency associated with a main processor
US20060179275A1 (en) * 2005-02-08 2006-08-10 Takeshi Yamazaki Methods and apparatus for processing instructions in a multi-processor system
US20100115239A1 (en) * 2008-10-29 2010-05-06 Adapteva Incorporated Variable instruction width digital signal processor
JP2011008732A (ja) * 2009-06-29 2011-01-13 Fujitsu Ltd プライオリティ回路、演算処理装置及び演算処理方法
US8914615B2 (en) 2011-12-02 2014-12-16 Arm Limited Mapping same logical register specifier for different instruction sets with divergent association to architectural register file using common address format
US10437596B2 (en) * 2014-11-26 2019-10-08 Texas Instruments Incorporated Processor with a full instruction set decoder and a partial instruction set decoder
US10514925B1 (en) * 2016-01-28 2019-12-24 Apple Inc. Load speculation recovery
CN109947479A (zh) * 2019-01-29 2019-06-28 安谋科技(中国)有限公司 指令执行方法及其处理器、介质和系统
CN110780616A (zh) * 2019-09-06 2020-02-11 重庆东渝中能实业有限公司 一种基于流水线技术处理通讯命令的方法
CN112579174B (zh) * 2020-12-05 2023-01-31 西安翔腾微电子科技有限公司 一种多周期双发射指令可发射的检测电路及方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4626989A (en) * 1982-08-16 1986-12-02 Hitachi, Ltd. Data processor with parallel-operating operation units

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4197579A (en) * 1978-06-06 1980-04-08 Xebec Systems Incorporated Multi-processor for simultaneously executing a plurality of programs in a time-interlaced manner
JPS6024985B2 (ja) * 1978-08-31 1985-06-15 富士通株式会社 デ−タ処理方式
US4236206A (en) * 1978-10-25 1980-11-25 Digital Equipment Corporation Central processor unit for executing instructions of variable length
US4424563A (en) * 1980-09-05 1984-01-03 Hewlett-Packard Company Data processor including a multiple word processing method and device
US4502111A (en) * 1981-05-29 1985-02-26 Harris Corporation Token generator
US4530050A (en) * 1981-08-26 1985-07-16 Hitachi, Ltd. Central processing unit for executing instructions of variable length having end information for operand specifiers
US4532589A (en) * 1981-12-02 1985-07-30 Hitachi, Ltd. Digital data processor with two operation units
US4670890A (en) * 1983-03-04 1987-06-02 Research Corporation Method of and/or apparatus for encoding and decoding sequential information in data handling systems
US4594655A (en) * 1983-03-14 1986-06-10 International Business Machines Corporation (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions
US4714994A (en) * 1985-04-30 1987-12-22 International Business Machines Corp. Instruction prefetch buffer control
DE3751503T2 (de) * 1986-03-26 1996-05-09 Hitachi Ltd Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen.
US4885680A (en) * 1986-07-25 1989-12-05 International Business Machines Corporation Method and apparatus for efficiently handling temporarily cacheable data
US4766566A (en) * 1986-08-18 1988-08-23 International Business Machines Corp. Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing
US4811214A (en) * 1986-11-14 1989-03-07 Princeton University Multinode reconfigurable pipeline computer
US5201057A (en) * 1987-01-22 1993-04-06 Uht Augustus K System for extracting low level concurrency from serial instruction streams
US5179680A (en) * 1987-04-20 1993-01-12 Digital Equipment Corporation Instruction storage and cache miss recovery in a high speed multiprocessing parallel processing apparatus
EP0312764A3 (de) * 1987-10-19 1991-04-10 International Business Machines Corporation Datenprozessor mit mehrfachen Ausführungseinheiten zur parallelen Ausführung von mehreren Befehlsklassen
US5202967A (en) * 1988-08-09 1993-04-13 Matsushita Electric Industrial Co., Ltd. Data processing apparatus for performing parallel decoding and parallel execution of a variable word length instruction
JP2810068B2 (ja) * 1988-11-11 1998-10-15 株式会社日立製作所 プロセッサシステム、コンピュータシステム及び命令処理方法
US5202972A (en) * 1988-12-29 1993-04-13 International Business Machines Corporation Store buffer apparatus in a multiprocessor system
US5075840A (en) * 1989-01-13 1991-12-24 International Business Machines Corporation Tightly coupled multiprocessor instruction synchronization
US5113515A (en) * 1989-02-03 1992-05-12 Digital Equipment Corporation Virtual instruction cache system using length responsive decoded instruction shifting and merging with prefetch buffer outputs to fill instruction buffer
US5167026A (en) * 1989-02-03 1992-11-24 Digital Equipment Corporation Simultaneously or sequentially decoding multiple specifiers of a variable length pipeline instruction based on detection of modified value of specifier registers
US5067069A (en) * 1989-02-03 1991-11-19 Digital Equipment Corporation Control of multiple functional units with parallel operation in a microcoded execution unit
US5226166A (en) * 1989-02-10 1993-07-06 Mitsubishi Denki K.K. Parallel operation processor with second command unit
US5075844A (en) * 1989-05-24 1991-12-24 Tandem Computers Incorporated Paired instruction processor precise exception handling mechanism
US5073855A (en) * 1989-06-30 1991-12-17 Bull Hn Information Systems Inc. Resource conflict detection method and apparatus included in a pipelined processing unit
US5072449A (en) * 1989-12-21 1991-12-10 Stratacom, Inc. Packet framing using cyclic redundancy checking
US5241636A (en) * 1990-02-14 1993-08-31 Intel Corporation Method for parallel instruction execution in a computer
DE69126565T2 (de) * 1990-04-17 1998-01-02 Matsushita Electric Ind Co Ltd Verfahren zur Übertragung von Kodes mit variabler Länge
CA2038264C (en) * 1990-06-26 1995-06-27 Richard James Eickemeyer In-memory preprocessor for a scalable compound instruction set machine processor

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4626989A (en) * 1982-08-16 1986-12-02 Hitachi, Ltd. Data processor with parallel-operating operation units

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
DE-Z: Design & Electronic, Ausgabe 21 vom 17.10. 1989, S. 6-9 *

Also Published As

Publication number Publication date
ITMI930109A0 (it) 1993-01-25
DE4301417C2 (de) 1998-06-18
JPH0628185A (ja) 1994-02-04
HK1006882A1 (en) 1999-03-19
GB2263565B (en) 1995-08-30
US5475824A (en) 1995-12-12
FR2686717A1 (fr) 1993-07-30
FR2686717B1 (de) 1995-03-03
ITMI930109A1 (it) 1994-07-25
GB2263565A (en) 1993-07-28
CN1074771A (zh) 1993-07-28
GB9300079D0 (en) 1993-03-03
IT1263811B (it) 1996-09-03

Similar Documents

Publication Publication Date Title
DE4301417C2 (de) Computersystem mit Einrichtung zur parallelen Befehlsausführung
DE3119741C2 (de) Datenverarbeitungseinheit
DE69433339T2 (de) Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren
DE69916962T2 (de) Datenverarbeitungssystem mit bedingter Ausführung von erweiterten Verbundbefehlen
DE69833008T2 (de) Prozessor mit instruktionskodierung mittels eines schablonenfeldes
DE19914210B4 (de) Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung
DE2542740C2 (de) Datenverarbeitungsanlage mit einer Mikroprogrammsteuerung
DE112009000741B4 (de) Vektorbefehle zum Ermöglichen von effizienter Synchronisation und parallelen Reduktionsoperationen
DE19781850B4 (de) Mikroprozessor zum spekulativen Ausführen von Befehlen aus mehreren von einem Verzweigungsbefehl angezeigten Befehlsströmen, Verfahren und Computersystem mit Mikroprozessor
DE69724771T2 (de) Zentralprozessoreinheit mit x86 und dsp kern und einem dsp funktions-dekoder zum abbilden von x 86-befehlen auf dsp-befehle
DE2430127C2 (de) Einrichtung zur Steuerung des Speicherzugriffs konkurrierender Benutzer
DE2704842C2 (de) Im Pipeline-Betrieb arbeitende Datenverarbeitungseinrichtung
DE2855106C2 (de) Einrichtung zur Durchführung von bedingten Verzweigungen
DE69727773T2 (de) Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor
DE112013005188B4 (de) Prozessor und vefrahren zur vektorisierung von zusammengeführten, mehrfach geschachtelten schleifen
DE60115982T2 (de) Verfahren und Vorrichtung zum Zuordnen funktioneller Einheiten in einem Mehrfachthread-VLIM-Prozessor
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE69835425T2 (de) Verbesserter befehlszuteilungsmechanismus für eine geschützte vliw-architektur
DE3638572C2 (de)
DE69908175T2 (de) Verbesserte befehlsdekodierung durch paralleldekodierungsalgorithmus
DE4420703A1 (de) Mikrocomputer
DE69133571T2 (de) Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE2224537A1 (de) Einrichtung und verfahren zur instruktionsselektion

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
D2 Grant after examination
8364 No opposition during term of opposition
R071 Expiry of right
R071 Expiry of right