DE4301417C2 - Computersystem mit Einrichtung zur parallelen Befehlsausführung - Google Patents
Computersystem mit Einrichtung zur parallelen BefehlsausführungInfo
- Publication number
- DE4301417C2 DE4301417C2 DE4301417A DE4301417A DE4301417C2 DE 4301417 C2 DE4301417 C2 DE 4301417C2 DE 4301417 A DE4301417 A DE 4301417A DE 4301417 A DE4301417 A DE 4301417A DE 4301417 C2 DE4301417 C2 DE 4301417C2
- Authority
- DE
- Germany
- Prior art keywords
- command
- pipeline
- instructions
- instruction
- computer system
- 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
- 239000013598 vector Substances 0.000 claims description 14
- 230000015654 memory Effects 0.000 claims description 8
- 238000007667 floating Methods 0.000 claims description 5
- 239000011159 matrix material Substances 0.000 claims 1
- 230000009977 dual effect Effects 0.000 description 6
- 238000000034 method Methods 0.000 description 6
- 230000015572 biosynthetic process Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000010276 construction Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 229920000747 poly(lactic acid) Polymers 0.000 description 2
- 241001465754 Metazoa Species 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000027455 binding Effects 0.000 description 1
- 238000009739 binding Methods 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 210000003608 fece Anatomy 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000002123 temporal effect Effects 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/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- 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/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)
- Executing Machine-Instructions (AREA)
Description
Die vorliegende Erfindung betrifft ein Computersystem zum
Abarbeiten eines Programms, das aus einer Sequenz von Befehlen
aus einem Satz komplexer Befehle unterschiedlicher Länge
besteht (CISC-Computersystem).
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 CISC-Mikroprozessoren typischerweise
eine Befehlssatzarchitektur, welche hunderte von Einzelbefehlen
enthält. Zählt man sämtliche verschiedenen Arten der
Adressiermoden für eine gegebene Architektur hinzu, ergibt sich
wahrscheinlich 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
Befehlen für einen gegebenen Befehlssatz führt leicht zu
Millionen unterschiedlicher Kombinationen. Der Entwurf einer
Maschine, 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.
Computersysteme, bei denen sequentiell aufeinanderfolgende
Befehle parallel ausgeführt werden, sind beispielsweise aus der
Veröffentlichung "Superscalar-Technologie: Die zweite
Generation der 80960-Architektur, Teil 1" in Design & Elek
tronik, Nr. 21, vom 17. Oktober 1989 sowie aus der US-Patent
schrift 4,626,989 bekannt. Bei den dort beschriebenen
Computersystemen handelt es sich um sogenannte RISC-Systeme,
die einen begrenzten Befehlssatz gleich langer Befehle
verwenden. Die parallel arbeitenden Ausführungseinheiten sind
jeweils auf eine bestimmte Befehlsgruppe spezialisiert
(beispielsweise eine Verarbeitungseinheit für logische,
Additions- und Subtraktionsbefehle und eine zweite
Verarbeitungseinheit für Multiplikationsbefehle). Diese
Spezialisierung ist grundsätzlich nur bei einem reduzierten
Befehlssatz (RISC) sinnvoll.
Bei Computern mit einem komplexen Befehlssatz (CISC) wird
die parallele Ausführung von Befehlen dadurch erschwert, daß
einerseits eine große Zahl verschiedener Befehle mit
unterschiedlichen Längen auftreten und daß andererseits die
Ausführungseinheiten in der Lage sein müssen, eine große Anzahl
verschiedener Befehle auszuführen und dabei auf
unterschiedliche Mikroprogramme zugreifen.
Aufgabe der Erfindung ist es, die
Verarbeitungsgeschwindigkeit bei der Ausführung einer
Befehlssequenz eines CISC-Computersystems zu erhöhen.
Diese Aufgabe wird erfindungsgemäß durch ein Computersystem
mit den Merkmalen des Anspruchs 1 gelöst.
Wie zu sehen sein wird, offenbart die Erfindung ein CISC-Com
putersystem, das zum Ausführen von zwei Befehlen in einem
einzigen Taktzyklus in der Lage ist. Die Erfindung arbeitet,
indem sie ein aus einem gegebenen Befehlssatz ausgewähltes
Befehlspaar decodiert und anschließend das Paar parallel
ausführt. Eines der Merkmale der Erfindung ist, daß das
Computersystem nur dann zwei Befehle parallel ausgibt, wenn es
keine Registerabhängigkeiten zwischen den gepaarten Befehlen
gibt.
Bei der Erfindung sind eine erste und eine zweite Befehls-
Pipeline zum Ausführen von Computerbefehlen vorgesehen. Die
erste Pipeline kann irgendeinen aus dem vollständigen
Befehlssatz ausgegebenen Befehl ausführen, während die zweite
Pipeline auf die Ausführung eines vorgegebenen Teilsatzes von
normalerweise häufig ausgeführten Befehlen beschränkt ist.
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, 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 des
Befehlssatzes befinden. Wenn beide Befehle im Teilsatz
enthalten sind, zeigt das Bestimmungsmittel an, daß eine zweite
Bedingung erfüllt ist. Jedesmal dann, wenn sowohl die erste als
auch die zweite Bedingung erfüllt sind, kann das Befehlspaar
parallel ausgegeben werden.
Ein weiteres Merkmal ist, daß das Computersystem
standardmäßig vorgibt, nur den ersten Befehl der Sequenz in die
erste Pipeline 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 danach während des nächsten Taktzyklus ausgegeben.
Vorteilhafte Weiterbildungen der Erfindung sind in den
Unteransprüchen gekennzeichnet.
Im folgenden wird die Erfindung anhand eines in der
Zeichnung 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
verwendeten Dual-Befehlsdecodierer-
Einrichtung.
Die Erfindung betrifft eine Einrichtung zum parallelen
Ausführen mehrerer Computerbefehle in einem einzigen
Taktzyklus. Die Erfindung ist vorzugsweise in einem als i586
bekannten Mikroprozessor ausgeführt, welcher durch die Intel
Corporation hergestellt wird. Der Mikroprozessor i586 ist eine
verbesserte Version des Intel-Mikroprozessors i486. Details der
Architektur des Mikroprozessors i486 sind in zahlreichen
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.
Das Pipelining ist eine Implementierungsmethode, bei der
mehrere Befehle gleichzeitig und überlappend ausgerü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"-Pipe
line 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.
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.
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-Be
fehlssatzes 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-Be
fehlssatzes 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 feststellt, 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-Pipe
line 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 v-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.
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
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"-Be
fehl 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
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
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
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 (8)
1. Computersystem zum Abarbeiten eines Programms, das
aus einer Sequenz von Befehlen aus einem Satz komplexer Be
fehle unterschiedlicher Länge besteht, aufweisend:
eine erste (u) und eine zweite (v) Pipeline zum Ausfüh ren der Befehlssequenz, wobei gleichzeitig mehrere Befehle parallel ausgeführt werden können;
Befehlsdecodierer (12, 13, 14) zum Decodieren eines ersten und eines zweiten Befehls der Sequenz von Befehlen, um erste und zweite Mikrocodevektoren zum Ausführen in der ersten bzw. zweiten Pipeline zu erzeugen und zum Feststel len, ob der erste und zweite Befehl innerhalb eines vorgege benen Teilsatzes von normalerweise häufig ausgeführten Be fehlen des Befehlssatzes liegen;
eine Berechnungseinrichtung (15, 17) zum Berechnen einer ersten Länge des ersten Befehls und einer zweiten Länge des ersten plus des zweiten Befehls;
eine Einrichtung (19) zum Feststellen von Registerabhän gigkeiten zwischen dem ersten und dem zweiten Befehl und zum Erzeugen eines Signals (ISELTWO) bei fehlender Abhängigkeit;
einen ersten Multiplexer (21) zum Ausgeben einer Be fehlslänge, wobei die Länge des ersten plus des zweiten Be fehls ausgegeben wird, falls das Signal (ISELTWO) empfangen wird und der erste und der zweite Befehl sich innerhalb des vorgegebenen Teilsatzes befinden und wobei anderenfalls die Länge des ersten Befehls ausgegeben wird; und
einen zweiten Multiplexer (22) zum Ausgeben eines Microcodevektors an die zweite (v) Pipeline, wobei der zweite Microcodevektor ausgegeben wird, falls das Signal (ISELTWO) empfangen wird und der erste und der zweite Befehl sich innerhalb des vorgegebenen Teilsatzes befinden und wo bei anderenfalls keine Operation (NOP) an die zweite (v) Pipeline ausgegeben wird.
eine erste (u) und eine zweite (v) Pipeline zum Ausfüh ren der Befehlssequenz, wobei gleichzeitig mehrere Befehle parallel ausgeführt werden können;
Befehlsdecodierer (12, 13, 14) zum Decodieren eines ersten und eines zweiten Befehls der Sequenz von Befehlen, um erste und zweite Mikrocodevektoren zum Ausführen in der ersten bzw. zweiten Pipeline zu erzeugen und zum Feststel len, ob der erste und zweite Befehl innerhalb eines vorgege benen Teilsatzes von normalerweise häufig ausgeführten Be fehlen des Befehlssatzes liegen;
eine Berechnungseinrichtung (15, 17) zum Berechnen einer ersten Länge des ersten Befehls und einer zweiten Länge des ersten plus des zweiten Befehls;
eine Einrichtung (19) zum Feststellen von Registerabhän gigkeiten zwischen dem ersten und dem zweiten Befehl und zum Erzeugen eines Signals (ISELTWO) bei fehlender Abhängigkeit;
einen ersten Multiplexer (21) zum Ausgeben einer Be fehlslänge, wobei die Länge des ersten plus des zweiten Be fehls ausgegeben wird, falls das Signal (ISELTWO) empfangen wird und der erste und der zweite Befehl sich innerhalb des vorgegebenen Teilsatzes befinden und wobei anderenfalls die Länge des ersten Befehls ausgegeben wird; und
einen zweiten Multiplexer (22) zum Ausgeben eines Microcodevektors an die zweite (v) Pipeline, wobei der zweite Microcodevektor ausgegeben wird, falls das Signal (ISELTWO) empfangen wird und der erste und der zweite Befehl sich innerhalb des vorgegebenen Teilsatzes befinden und wo bei anderenfalls keine Operation (NOP) an die zweite (v) Pipeline ausgegeben wird.
2. Computersystem nach Anspruch 1, dadurch gekennzeich
net, daß der erste und der zweite Befehl innerhalb eines
Taktzyklus des Computersystems ausgeführt werden, wenn das
Signal (ISELTWO) von den Multiplexern (21, 22) empfangen
wird und der erste und der zweite Befehl sich innerhalb des
vorgegebenen Teilsatzes befinden.
3. Computersystem nach einem der Ansprüche 1 oder 2, da
durch gekennzeichnet, daß die ersten und zweiten Befehle
Ganzzahl-Befehle und/oder Gleitkomma-Befehle umfassen.
4. Computersystem nach einem der Ansprüche 1 bis 3, da
durch gekennzeichnet, daß die Befehlsdecodierer einen ersten
Decodierer (12) zum Decodieren des ersten Befehls und Er
zeugen des ersten Mikrocodevektor und einen zweiten (14) und
einen dritten (13) Decodierer aufweisen, wobei der dritte
Decodierer (13) den ersten Befehl decodiert, und wobei der
zweite Decodierer (14) den zweiten Befehl decodiert und den
zweiten Mikrocodevektor erzeugt.
5. Computersystem nach Anspruch 4, dadurch gekennzeich
net, daß die Einrichtung (19) zum Feststellen der Register
abhängigkeiten eine mit dem zweiten (14) und dem dritten
(13) Decodierer gekoppelte Schaltung zum Erzeugen des Sig
nals (ISELTWO) aufweist.
6. Computersystem nach Anspruch 4 oder 5, dadurch ge
kennzeichnet, daß der erste, der zweite und/oder der dritte
Decodierer eine programmierbare logische Matrix aufweisen.
7. Computersystem nach einem der Ansprüche 1 bis 6, da
durch gekennzeichnet, daß ein Befehls-Cache-Speicher zum
Speichern des ersten und des zweiten Befehls vorgesehen ist.
8. Computersystem nach einem der Ansprüche 1 bis 7, da
durch gekennzeichnet, daß der erste und der zweite Mi
krocodevektor Informationen über Quellregister, Zielregister
und die Adreßberechnung enthalten.
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 DE4301417A1 (de) | 1993-07-29 |
DE4301417C2 true 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)
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 |
US6073231A (en) * | 1993-10-18 | 2000-06-06 | Via-Cyrix, Inc. | Pipelined processor with microcontrol of register translation hardware |
EP0649085B1 (de) * | 1993-10-18 | 1998-03-04 | Cyrix Corporation | Fliessbandsteuerung und Registerübersetzung in Mikroprozessor |
US5630149A (en) * | 1993-10-18 | 1997-05-13 | Cyrix Corporation | Pipelined processor with register renaming hardware to accommodate multiple size registers |
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 |
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)
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)
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 |
EP0239081B1 (de) * | 1986-03-26 | 1995-09-06 | 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 |
US5067069A (en) * | 1989-02-03 | 1991-11-19 | Digital Equipment Corporation | Control of multiple functional units with parallel operation in a microcoded execution unit |
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 |
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 |
EP0453229B1 (de) * | 1990-04-17 | 1997-06-18 | Matsushita Electric Industrial 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 |
-
1993
- 1993-01-05 GB GB9300079A patent/GB2263565B/en not_active Expired - Lifetime
- 1993-01-20 DE DE4301417A patent/DE4301417C2/de not_active Expired - Lifetime
- 1993-01-21 CN CN93101139.6A patent/CN1074771A/zh active Pending
- 1993-01-21 FR FR9300580A patent/FR2686717A1/fr active Granted
- 1993-01-25 JP JP5027177A patent/JPH0628185A/ja active Pending
- 1993-01-25 IT ITMI930109A patent/IT1263811B/it active IP Right Grant
-
1995
- 1995-02-10 US US08/386,595 patent/US5475824A/en not_active Expired - Lifetime
-
1998
- 1998-06-22 HK HK98105913A patent/HK1006882A1/xx not_active IP Right Cessation
Patent Citations (1)
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)
Title |
---|
DE-Z: Design & Electronic, Ausgabe 21 vom 17.10. 1989, S. 6-9 * |
Also Published As
Publication number | Publication date |
---|---|
HK1006882A1 (en) | 1999-03-19 |
FR2686717A1 (fr) | 1993-07-30 |
GB2263565A (en) | 1993-07-28 |
GB2263565B (en) | 1995-08-30 |
US5475824A (en) | 1995-12-12 |
JPH0628185A (ja) | 1994-02-04 |
ITMI930109A1 (it) | 1994-07-25 |
GB9300079D0 (en) | 1993-03-03 |
ITMI930109A0 (it) | 1993-01-25 |
IT1263811B (it) | 1996-09-03 |
CN1074771A (zh) | 1993-07-28 |
DE4301417A1 (de) | 1993-07-29 |
FR2686717B1 (de) | 1995-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE4301417C2 (de) | Computersystem mit Einrichtung zur parallelen Befehlsausführung | |
DE69129569T2 (de) | Maschine mit sehr langem Befehlswort für leistungsfähige Durchführung von Programmen mit bedingten Verzweigungen | |
DE69736105T2 (de) | Hierarchische durchsuchlogik für ungeordnete lade/speicherausführungssteuerung | |
DE69607760T2 (de) | Ungeordnete lade-/speicher-ausführungssteuerung | |
DE69833008T2 (de) | Prozessor mit instruktionskodierung mittels eines schablonenfeldes | |
DE69719235T2 (de) | Prozessor und Verfahren zur spekulativen Ausführung von bedingten Verzweigungsbefehlen unter Verwendung einer von mehreren Verzweigungsvorhersageverfahren | |
DE3119741C2 (de) | Datenverarbeitungseinheit | |
DE69916962T2 (de) | Datenverarbeitungssystem mit bedingter Ausführung von erweiterten Verbundbefehlen | |
DE69904189T2 (de) | Konfigurierter prozessor zur abbildung von logischen registernummern auf physikalische registernummern unter verwendung von virtuellen registernummern | |
DE69033065T2 (de) | Mehrfachbefehlsdecoder | |
DE69433339T2 (de) | Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren | |
DE69131956T2 (de) | Verarbeitungsprozessor zur Verbindung von Befehlen für einen Cache-Speicher | |
DE69724771T2 (de) | Zentralprozessoreinheit mit x86 und dsp kern und einem dsp funktions-dekoder zum abbilden von x 86-befehlen auf dsp-befehle | |
DE69311330T2 (de) | Befehlsablauffolgeplanung von einem risc-superskalarprozessor | |
DE69123629T2 (de) | Maschinenarchitektur für skalaren Verbundbefehlssatz | |
DE2855106A1 (de) | Einrichtung zur durchfuehrung von instruktionsverzweigungen | |
DE2542740C2 (de) | Datenverarbeitungsanlage mit einer Mikroprogrammsteuerung | |
DE69132675T2 (de) | Parallelfliessband-Befehlsverarbeitungssystem für sehr lange Befehlswörter | |
DE69115344T2 (de) | Vorverarbeitungsprozessor zur Verbindung von Befehlen für einen Cache-Speicher | |
DE69415126T2 (de) | Gegenflusspipelineprozessor | |
DE68929215T2 (de) | Datenprozessor | |
DE69408769T2 (de) | Fliessbandsteuerung und Registerübersetzung in Mikroprozessor | |
DE68927911T2 (de) | Datenverarbeitungssystem | |
DE2430127C2 (de) | Einrichtung zur Steuerung des Speicherzugriffs konkurrierender Benutzer | |
DE69636861T2 (de) | Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern |
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 |