DE4010895A1 - Mikroprozessor mit befehlsdecodiereinrichtung - Google Patents
Mikroprozessor mit befehlsdecodiereinrichtungInfo
- Publication number
- DE4010895A1 DE4010895A1 DE19904010895 DE4010895A DE4010895A1 DE 4010895 A1 DE4010895 A1 DE 4010895A1 DE 19904010895 DE19904010895 DE 19904010895 DE 4010895 A DE4010895 A DE 4010895A DE 4010895 A1 DE4010895 A1 DE 4010895A1
- Authority
- DE
- Germany
- Prior art keywords
- field
- stage
- microprocessor
- microcode
- memory
- 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
Links
- 238000004364 calculation method Methods 0.000 claims abstract description 6
- 238000000034 method Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 claims description 5
- 238000012163 sequencing technique Methods 0.000 abstract 1
- 230000011218 segmentation Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 5
- 238000007667 floating Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000010276 construction Methods 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
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- 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/22—Microcontrol or microprogram arrangements
- G06F9/26—Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
- G06F9/262—Arrangements for next microinstruction selection
- G06F9/268—Microinstruction selection not based on processing results, e.g. interrupt, patch, first cycle store, diagnostic programs
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Description
Die Erfindung bezieht sich auf eine Befehlsdecodiereinrichtung
und insbesondere eine solche zur Verwendung in Mikroprozesso
ren.
Mikroprozessoren sowie auch andere Computer benötigen häufig
einen Decodierer zum Decodieren von Befehlen auf Makroniveau.
Im Ergebnis wird der Befehl von dem Decodierer interpretiert,
und der Decodierer bestimmt, was zur Ausführung des Befehls im
Prozessor zu geschehen hat. In vielen Fällen enthält der Mi
kroprozessor einen Speicher zur Speicherung von Befehlen auf
Mikroniveau (Mikrocode), und der Decodierer liefert einen
Hinweis auf den Mikrocode.
Bei einigen Mikroprozessoren sind Makroniveaubefehle von fe
ster Länge (z.B. 32 Bits), während die Befehle in anderen
Prozessoren unterschiedliche Längen haben können. Es ist we
sentlich leichter, Befehle mit fester Länge zu decodieren, da
der Decodierer weiß, wo beispielsweise gewisse Felder im Be
fehl zu finden sind. Im Gegensatz dazu kann bei Befehlen vari
abler Länge ein unmittelbares (Sofort-)Datenfeld vorhanden
sein oder nicht, und sein Ausgangspunkt im Befehl ändert
sich.
Der Intel 386 Mikroprozessor ist ein Beispiel für einen Mikro
prozessor mit Befehlen bzw. Anweisungen variabler Länge. Ein
Befehl kann ein Byte breit sein, wie einige Übertragungsbefeh
le. Befehle können bis zu acht Bytes breit sein (ohne Präfix).
Mit einem Befehlspräfix oder override kann die Befehlslänge
wesentlich größer (z.B. 15 Bytes) sein. Ein einziger Decodie
rer, der in der Lage ist, diese Befehle variabler Länge in
einem einzigen Durchgang zu decodieren, wäre relativ kompli
ziert und würde, was vielleicht noch wichtiger ist, einen
relativ großen Substratraum beanspruchen.
Im Intel 386 werden die Befehle variabler Längen über den
Verlauf einiger Computerzyklen decodiert. Zunächst wird das
Befehlspräfix geprüft, gefolgt von anderen Feldern. Die Aus
führung der Befehle beginnt nach der vollständigen Decodie
rung. Bei vielen Befehlen benötigt der Intel 386 jedoch mehre
ren Zyklen zum Decodieren; beispielsweise erfordert der Befehl
LADEN vier Zyklen zur Befehlsdecodierung SPEICHERN bedingt
zwei Zyklen; SPRINGEN drei bis 4,25 Zyklen. Durchschnittlich
sind etwa drei Zyklen erforderlich, bevor ein Befehl vollstän
dig decodiert ist. Wie zu sehen sein wird, werden diese Zeiten
aufgrund des Pipelinebetriebs und der Art der Decodierung des
Befehls wesentlich verkürzt. Die Decodierzeit sinkt auf einen
Mittelwert von etwa 1,8 Zyklen.
Die Erfindung ist zur Verwendung in einem Mikroprozessor vor
gesehen, der eine verbesserte Version des Intel 386 Mikropro
zessors ist. Letzterer ist in zahlreichen Druckschriften be
schrieben. Die Programmierung dieses Mikroprozessors ist in
"Programming the 80386" von Crawford und Gelsinger, publiziert
von SYBEX, 1987 beschrieben.
Der erfindungsgemäße Mikroprozessor hat Speichermittel zur
Speicherung vorausgeholter Befehle und Decodiermittel zum
Decodieren von Befehlen unterschiedlicher Längen. Erfindungs
gemäß weisen die Decodiermittel zwei Stufen oder Sektionen
auf. Die erste der Sektionen decodiert ein erstes Feld aus
einem Befehl gleichzeitig während der Zeit, in der die zweite
der Sektionen die Ausführung auf der Basis eines zweiten Fel
des des vorhergehenden Befehls aufbaut. Anders ausgedrückt,
die ersten und zweiten Sektionen führen eine Pipelineoperation
an den Befehlen aus und verarbeiten sie parallel.
Bei einem bevorzugten Ausführungsbeispiel der Erfindung deco
diert die erste Sektion den OP-Code und den Adreßmodus dar
stellende Bits, Skalierfaktor und Basis und Indexregister. Die
zweite Sektion steuert die Verwendung der Adreßverschiebung
und des sofortigen Datenfeldes. Die erste Sektion erzeugt
Zeiger auf die Speichermittel, was es jeder der Sektionen
ermöglicht, die richtigen Felder der Befehle aufzunehmen. Jede
Sektion kann irgendein Byte aus dem Speicher aufnehmen.
Weitere Aspekte und Vorteile der Erfindung ergeben sich aus
der nachfolgenden Beschreibung eines Ausführungsbeispiels. In
der Zeichnung zeigen:
Fig. 1 ein generelles Blockdiagramm des Mikroprozessors,
in welchem die Erfindung verwendet wird;
Fig. 2 ein Blockschaltbild der erfindungsgemäßen Befehls
decodiereinheit und deren Verbindung mit dem Vor
ausholer und einer Segmentierungseinheit;
Fig. 3 das allgemeinste Format eines mit der erfindungsge
mäßen Einrichtung decodierten Befehls;
Fig. 4 ein genaueres Diagramm mit dem Format eines Befehls
unter Darstellung von Befehlsfeldern variabler
Längen;
Fig. 5 eine tabellarische Ansicht des Zeitgabe- und Pipe
linestroms bei der Erfindung; und
Fig. 6 ein genaueres Diagramm der Zeitgabe und des Be
fehlsstroms in Zuordnung zur Erfindung.
Beschrieben wird eine Befehlsdecodiereinheit für einen Mikro
prozessor, die besonders zweckmäßig in Verbindung mit voraus
geholten Befehlen ist. In der folgenden Beschreibung werden
zahlreiche Einzelheiten, beispielsweise die spezielle Anzahl
von Bits usw. angegeben, um die Erfindung leichter verständ
lich zu machen. Es ist jedoch für den Fachmann klar, daß die
Erfindung auch ohne diese besonderen Einzelheiten realisierbar
ist. In anderen Fällen sind bekannte Verarbeitungsmethoden,
Decodiermethoden und Schaltungen nicht im einzelnen darge
stellt und beschrieben, um die Erfindung nicht mit unnötigen
Einzelheiten zu belasten.
Die Erfindung war das Resultat der Konstruktion des nächsten
Mikroprozessors in der Intel 286 und 386 Mikroprozessorfami
lie. Aus diesem Grunde scheint es im Interesse eines besseren
Verständnisses für die Bedeutung der vorliegenden Erfindung
zweckmäßig, den Intel 386 Mikroprozessor kurz zu erläutern.
Außerdem stehen zahlreiche Publikationen über diesen Mikropro
zessor zur Verfügung; dessen Betrieb ist beschrieben in "Pro
grammieren des 80386" von Crawford und Gelsinger, publiziert
von SYBEX 1987.
Der Mikroprozessor, in welchem die Erfindung verwirklicht ist,
ist ein 32-Bit-Mikroprozessor, der mit komplementärer Metall
oxidhalbleiter (EMOS) -Technologie hergestellt ist. Er weist
auf einem einzigen Substrat nicht nur diejenigen Komponenten
auf, die einer Zentraleinheit (CPU) zugeordnet sind, sondern
zusätzlich auch einen Cachespeicher und eine Gleitpunktein
heit. Teilweise wegen der durch die neue Befehlsdecodierein
heit erzielten Verbesserungen kann eine Befehlsausführung für
viele Befehle in einem Zyklus realisiert werden.
Im folgenden wird auf Fig. 1 Bezug genommen, in der die Haupt
komponenten des Mikroprozessors, beispielsweise die Businter
faceeinheit 10 dargestellt sind. Diese Einheit bildet die
notwendige Schnittstelle zwischen den internen Bussen des
Mikroprozessors insbesondere des Cachespeichers 11 und des
Vorausholers 12, und den externen Bussen, die für die Datenbe
schaffung aus dem externen Datenspeichersystem verantwortlich
sind. Es werden externe 32-Bit-Adreß- und 32-Bit-Datenbusse
verwendet. Das spezielle Interface 10, welches in dem be
schriebenen Ausführungsbeispiel des Mikroprozessors verwendet
wird, ist für die Erfindung unkritisch. Für die Zwecke der
Erfindung sollte beachtet werden, daß vorausgeholte Befehle,
die im Vorausholer 12 gespeichert werden, zu letzterem von der
Businterfaceeinheit 10 oder von einem Cachespeicher 11 über
tragen werden können.
Eine Seitenbildungseinheit 13 und eine Segementierungseinheit
15 sind ähnlich denjenigen im Intel 386 aufgebaut. Die Zeitga
be wurde jedoch geändert, um eine Ein-Takt-Ausführung zu un
terstützen. Die Verbindung einer Segmentierungseinheit mit dem
Vorausholer 12 und andere Beziehungen mit der Befehlsdecodier
einheit 14 werden weiter unten in Verbindung mit Fig. 2 be
schrieben.
Generell decodiert die Befehlsdecodiereinheit die einlaufende
Befehle; wie weiter unten zu sehen sein wird, unterscheidet
sie sich von der Befehlsdecodiereinheit des Intel 386 darin,
daß sie eine parallele Decodierung und Pipelineoperation be
wirkt. Ihre Implementierung erfolgt mit zwei Stufen oder Sek
tionen der Pipelinedecodierung, was zu einem decodierten Be
fehl pro Computer-Taktzyklus für die meisten Befehle führt.
Die erste Sektion decodiert grundsätzlich den OP-Code Adreß
modus, Skalierfaktor und die Basis- und Indexregisterbits
(letztere werden teilweise als Register- und Adreßmodus-Spezi
fizierer bezeichnet), während die zweite Stufe in erster Linie
die Verwendung der Adreßverschiebung oder unmittelbare (So
fort-)Datenfelder steuert.
Die Steuereinheit 19 enthält einen Speicher, der die Mikroco
debefehle (Mikrocode) für den Mikrocomputer speichert. Er
steuert gemeinsam mit der Befehlsdecodiereinheit den Mikropro
zessor, da die erste Linie bzw. Zeile (line) des Mikrocodes
von der Befehlsdecodiereinheit 14 geliefert wird. Die Steuer
einheit 19 ist für die Befehlsbereichsgrenzenverarbeitung,
beispielsweise die Unterbrechungs/Ausnahme-Entscheidung und
das Stoppen der Befehlsdecodiereinheit 14 - wenn nötig - ver
antwortlich. Die Steuereinheit 19 handhabt die meisten der
Einfrierbedingungen, beispielsweise einen Cachespeicherfehl
versuch usw.
Die Datenwegeinheit 17 ist der Hauptausführungsdatenweg des
Mikroprozessors. Sie enthält die arithmetische Logikeinheit,
Registerdatei, Trommelshifter, konstanten ROM und Fehlerkenn
zeichen.
Der Mikroprozessor weist auch eine Gleitpunkteinheit 18 auf,
die eine Logik zur Ausführung der Gleitpunktbefehle enthält.
Die Befehlsdecodiereinheit 14 der Fig. 1 ist in Fig. 2 zwi
schen den gestrichelten Linien 46 und 47 gezeigt. Die Einheit
und eine bestimmte Schaltung im Vorausholer 12 arbeiten zusam
men und führen zu den durch die Erfindung erreichten Vortei
len.
Der Vorausholer 12 weist drei Hauptabschnitte auf: Das Regi
ster 26, den Multiplexer 27 und eine zugehörige Logik 28. Das
Register oder Latch 26 erhält vorausgeholte Befehle entweder
vom Cachespeicher oder von der Businterfaceeinheit. Dies ist
in Fig. 2 allgemein durch den Bus 48 veranschaulicht. Das
Register 26 hat bei dem beschriebenen Ausführungsbeispiel eine
Breite von 32 Bytes. Die im Register 26 gespeicherten Befehle
können entweder zum Bus 29 (K 1Q) oder zum Bus 30 (K 2Q) über
tragen werden. Diese Befehle werden über den Multiplexer 27
angekoppelt. Benachbarte drei Bytes im Register 26 können zum
Bus 29 übertragen werden. Benachbarte vier Bytes können zum
Bus 30 übertragen werden.
Von einer Codesteuerschaltung 36 auf Leitungen 44 gegebene
Signale bilden einen Zeiger oder einen Hinweis (K 1P) auf das
erste Byte des zum Bus 29 übertragenen 24-Bit-Feldes. Die
"(5)" hinter "K 1P" zeigt an, daß fünf Bits zur Bezeichnung
dieses Zeigers verwendet werden. Diese fünf Bits werden zur
Bezeichnung eines Einzelbytes der im Register 26 gespeicherten
32 Bytes benötigt. Ein zweiter Zeiger (K 2P), der an den Vor
ausholer 12 über Leitungen 43 angelegt wird, weist auf das
erste Byte des mit dem Bus 30 gekoppelten 32-Bit-Feldes hin.
Wie weiter unten beschrieben werden wird, können sich die an
die Busse 29 und 30 übertragenen Felder überlappen, d.h. die
ursprünglich zum Bus 29 während eines Taktzyklus übertragenen
Bytes können in einem nachfolgenden Taktzyklus an den Bus 30
angelegt werden.
Die fünf von dem Vorausholer 12 über Leitungen 41 übertragenen
Bits (K 1PJ) liefern einen Sprunghinweis bzw. -zeiger für die
Codesteuerschaltung 36. Dies geschieht, nachdem neue Befehle
(einem Sprungbefehl folgend) in das Register 26 geladen worden
sind. Dieser Zeiger zeigt der Steuerschaltung 36 das Startbyte
der neuen Befehle an. Die Signale auf Leitungen 42 (K 1V und
K 2V) geben an, ob die K 1Q-Daten und K 2Q-Daten gültig sind. Die
Signale auf Leitungen 40 (iS×8 und iZ×16) sind Steuersignale
zur Steuerung der Kopplung von unmittelbaren Datenfeldern.
Der Decodierer 31 ist eine übliche programmierbare Logikanord
nung (PLA) (mit Logikgattern), die zur Durchführung einer
üblichen Decodierung programmiert ist. Wie zu sehen sein wird,
sind die OP-Code und Register und Adreßmodus-Spezifizierer
stets vom Register 26 mit dem Decodierer 31 gekoppelt (ausge
nommen dann, wenn der Befehl ein Präfix enthielt). Aus diesen
Daten bestimmt der Decodierer 31 über die Codesteuerschaltung
36 die vom Decodierer 31 tatsächlich benötigte Länge der Fel
der und damit den Punkt, auf den der Zeiger für den K 2Q-Bus
innerhalb des Registers 26 hinweisen muß. Der Decodierer nimmt
stets 24 Bits auf, selbst wenn sich ein 8-Bit-Befehl im Regi
ster 26 befindet. Der Decodierer 31 koppelt Signale zur Aus
führungsaufbaustufe 34, welche den zur Erfüllung des Befehls
benötigten Adreßtypen identifiziert. Wie zu sehen sein wird,
arbeiten der Decodierer 31 und die Ausführungsaufbaustufe 34
parallel, wobei jedoch der Decodierer 31 an einem Befehl ar
beitet, während die Stufe 34 an dem vorhergehenden Befehl
arbeitet.
Die Latch-Schaltungen 35, die mit dem Ausgang des Decodierers
31 gekoppelt sind, ermöglichen es, daß aus der Decodierung
resultierende Signale durch die Latch-Schaltungen 35 getaktet
werden, wobei nachfolgende "Decodierung" von der Stufe 34
durchgeführt wird. Der Latchausgang enthält die speziellen
ALU-Steuersignale sowie die Aktivierungssigmale für das Quel
len/Bestimmungsregister. Ein Ausgang der Latchschaltungen
enthält einen Einsprungpunkt (Verweis) auf die "erste" Linie
des Mikrocode im Mikrocodespeicher der Einheit 19.
In Wirklichkeit weist der Einsprungpunkt jedoch auf die dritte
effektive Linie des Mikrocode hin, da der Decodierer 31 mit
dem Latch 35 die ersten beiden Linien bzw. Zeilen des Mikroco
de liefert. Beispielsweise findet dies bei einem Speicherbe
fehl oder beim Aufbau einer Adreßberechnung während eines
Zyklus durch den Decodierer 31 statt. Während des folgenden
Taktzyklus wird die zweite Linie des Mikrocode vom Latch 35
gebildet, um einen Buszyklus auszulösen (empfangen vom Spei
cher). Beim nächsten Taktzyklus wird die dritte Linie bzw.
Zeile des Codes vom Mikrocodespeicher gebildet (Steuereinheit
19 der Fig. 1). Diese dritte Linie des Code wird auf der
Basis eines Einsprungpunkts ausgewählt, der von den Latch
-Schaltungen 35 zu demjenigen Zeitpunkt geliefert wird, wenn
die Latchschaltung die erste Linie des Mikrocodes liefert.
Nach der beschriebenen Implementierung benutzen alle Befehle
wenigstens eine Linie bzw. Zeile des Mikrocode aus der Steuer
einheit 19. In einigen Fällen zeigt dieser Microcode einfach
die Beendigung eines Befehlszyklus an. In vielen Fällen ist
die erste Linie bzw. Zeile des Mikrocodes vom Decodierer 31
auch eine "NOOP".
Die Ausführungaufbaustufe 34, die als zweite Decodierstufe
angesehen werden kann, steuert in erster Linie die Adreßerzeu
gung und insbesondere die Folge der Adreßerzeugung. Aus diesem
Grunde ist sie in erster Linie als Zustandsmaschine implemen
tiert. Die aktuellen Adreßberechnungen treten innerhalb der
Segmentierungseinheit 15 auf. Der Decodierer 31 liefert die
Linearadreßerfordernisse an die Stufe 34 und hieraus bestimmt
die Stufe 34, wie viele Zyklen für den Befehl benötigt werden.
Generell wird ein Zyklus benötigt, wenn es nur eine Basis und
Verschiebung gibt, und zwei Zyklen werden benötigt, wenn es
eine Basis, einen Faktor für skalierte Indexadresse und Ver
schiebung gibt. Ein Ladesignal und Feldgrößensignale werden
über die Steuerschaltung 36 an die Segmentierungseinheit 15
angelegt.
Die Codesteuereinheit 36 weist eine Zustandsmaschine, einen
Addierer und einen Zähler mit zugehöriger Logik auf. Signale
werden vom Decodierer 31 zur Schaltung 36 übertragen, um den
decodierten Befehlstyp anzugeben. Aus dieser Information be
stimmt die Codesteuereinheit 36 mittels der Addierer und Zäh
ler, worauf die Zeiger K 1P und K 2P hinweisen sollen. Die von
der Schaltung 36 durchgeführte Steuerung wird deutlicher, wenn
man die Zeiger in Verbindung mit Fig. 6 betrachtet.
Die Codesteuerschaltung 36 führt auch andere Funktionen in dem
beschriebenen Ausführungsbeispiel durch, so beispielsweise
Verstoßbits, welche Segmentierungsverstöße oder andere vom
Vorausholer 12 festgestellte und in die Steuereinheit 36 ge
koppelte Verstöße angeben. Die Steuerschaltung 36 kann in
einigen Fällen auch die Art des Verstoßes (violation) bestim
men.
Die Pipeline-Steuerschaltung 37 ist ebenfalls eine Zustandsma
schine, welche die gesamte Steuerung der Pipelineoperation zur
Befehlsdecodiereinheit bewirkt. Diese Schaltung stellt aus den
vom Decodierer 31 an sie angelegten Signalen fest, ob ein
Befehl ein Präfix enthält, und sie bestimmt danach die Anzahl
von zur Verarbeitung des speziellen Befehls benötigten zusätz
lichen Zyklen. Wie in Verbindung mit Fig. 4 noch genauer be
schrieben werden wird, können mehrere Zyklen benötigt werden.
Die Schaltung 34 steuert diese zusätzlichen Zyklen. Die Pipe
line-Steuerschaltung 37 liefert auf Leitungen 49 ein "Vorrück
signal" an den Decodierer 31 und die Ausführaufbaustufe 34,
ein "flush pipeline" oder reset signal und ein Signal, das
angibt, ob eine spezielle Stufe ihre Operation an einem Befehl
beendet hat.
Die Gesamtschaltung der Fig. 2 ist mit gewöhnlichen Schaltun
gen realisiert. Steuersignale, die für die Erläuterung der
Erfindung nicht erforderlich sind, sind in Fig. 2 nicht darge
stellt. Auch sind solche Funktionen nicht gezeigt, die für die
Erfindung ohne Bedeutung sind (z.B. Testfunktionen).
Fig. 3 zeigt das generelle Format von Befehlen für den Intel
386, die in dem beschriebenen Ausführungsbeispiel des Deco
diergeräts decodiert werden. Die Befehle umfassen einen OP-Co
de und in einigen Fällen ein separates Adreßfeld 50 ein Ver
schiebungsfeld 51 und ein Unmittelbar- bzw. Sofortfeld 52. Die
Längen dieser Felder variieren, wie in Verbindung mit Fig. 4
erläutert werden wird. In einigen Fällen wird ein zusätzliches
Präfix 55 benutzt.
In Fig. 4 ist ein typischer Befehl dargestellt. Das OP-Code
feld kann eine Länge entweder von einem oder zwei Bytes haben.
In einigen Fällen besteht der Gesamtbefehl aus nur einem ein
zigen Byte, wenn beispielsweise die ersten fünf Bits eine
Übertragung und die letzten drei Bits eine Registerbezeichnung
angeben. Gemäß Darstellung in Fig. 4 hat ein typischer OP-Code
zwei Bytes 57 und 58. Das Adreßmodus-Byte 59 gibt den Adreßmo
dus und "Register/Speicher" an; Byte 60 enthält den Skalenfak
tor für skalierte Indexadressiermoden (SS), das als ein Index
register (Index) zu verwendende allgemeine Register und das
als Basisregister zu verwendende allgemeine Register. Die
Bytes 59 und 60 werden als Register- und Adreßmodus-Spezifi
zierer bezeichnet. Das Feld 61 ist die Adreßverschiebung, und
dieses Feld braucht nicht in allen Befehlen enthalten zu sein,
oder es könnte 1, 2 oder 4 Bytes lang sein. In ähnlicher Weise
braucht das Sofortdatenfeld 62 nicht in allen Befehlen vorhan
den zu sein, und dieses Feld kann 1, 2 oder 4 Bytes lang sein.
Andere Änderungen können auftreten, beispielsweise können
Segmentregisterspezifizierer für gewisse Register innerhalb
der OP-Codefelder auftreten, oder Bits können für bedingte
Befehle zum Spezifizieren einer anstehenden Bedingung oder
einer negierten Bedingung verwendet werden.
In Fig. 4 ist wichtig, daß die ersten drei Bytes aller Befehle
bzw. Instruktionen (ausgenommen derjenigen mit einem Präfix)
ausreichend Informationen enthalten, um den angeforderten
Befehl und die gesamte Länge des Befehls zu bestimmen. In
jedem Falle werden diese drei Bytes an den Decodierer 31 ange
legt. Aus den restlichen Bytes jedes Befehls kann von der
Segmentiereinheit 15 der Fig. 2 eine Adresse berechnet werden.
Die ersten drei Bytes enthalten die vom Decodierer 31 benötig
ten Informationen zur Bestimmung des Adreßmodus und der Anzahl
von zur Berechnung der Adressen benötigten Zyklen. Wie oben
erwähnt, sind beispielsweise allgemein zwei Zyklen erforder
lich, wenn eine Basis, ein Index und eine Verschiebung vorhan
den sind.
Die generelle Pipelineinformation bei der erfindunsgemäßen
Anordnung läßt sich anhand von Fig. 5 verständlich machen. In
der obersten Zeile der Tabelle ist die Nummer des Zyklus ange
geben. Jeder Zyklus entspricht einem Computer-Taktzyklus. So
können die internen Taktzyklen für den Mikroprozessor mit
einer Frequenz von 25 MHz auftreten. Die linke Spalte gibt die
Stufe in der Pipelineoperation an. Die in der Liste enthalte
nen Zahlen stellen die Befehlsnummern dar. So wird beispiels
weise während des Zyklus 1 Befehl 11 vom Vorausholer 12 über
tragen, d.h. er wird an den Decodierer 31 der Fig. 2 angelegt.
Während desselben Zyklus (d.h. gleichzeitig mit dieser Über
tragung) decodiert der Decodierer 31 Befehl 10, den Befehl 11
vorausgegangenen Befehl. In ähnlicher Weise steuert während
dieser Zeitperiode die Ausführungsaufbaustufe 34 der Fig. 2
die Folge von Adreßberechnungen für Befehl 9. Gleichzeitig
erfolgt die Ausführung von Befehl 8 und das Rückschreiben von
Befehl 7. (Nicht alle Befehle haben ein Rückschreiben; jedoch
bedingen einige Einzelbytebefehle das Rückschreiben). Wie zu
erkennen ist, findet während des Zyklus 2 die Übertragung des
Befehls 12 in den Decodierer 31 statt, und gleichzeitig deco
diert der Decodierer 31 den Befehl 11, und die Ausführungsauf
baueinheit bearbeitet den Befehl 10.
Wie erwähnt, kann in einigen Fällen ein Präfix (Präfix 55 der
Fig. 3) vorhanden sein. Es sei angenommen, daß der Decodierer
während des Zyklus 3 beim Decodieren der ersten 24 Bits des
Befehls 13 feststellt, daß ein Präfix vorhanden ist. Diese
Information wird zu der Pipelinesteuerschaltung 37 übertragen,
und diese Schaltung bestimmt sodann, wie viele Zyklen zur
Übertragung des gesamten Präfix, OP-Code und Register und
Adreßmodusspezifizierers zum Decodierer 31 erforderlich sind.
Gemäß Darstellung in Fig. 5 ist angenommen, daß dies während
Zyklen 3, 4 und 5 stattfindet. Die Decodierung findet während
der Zyklen 4, 5 und 6 und der Ausführungsaufbau während des
Zyklus 7 statt. Die Ausführung findet für diesen Befehl wäh
rend des Zyklus 8 statt. Während der Zyklen 5 und 6 ist die
Ausführungsaufbaustufe 34 unbeschäftigt; in ähnlicher Weise
ist die Ausführungsstufe während der Zyklen 6 und 7 unbeschäf
tigt.
Wie in der Tabelle weiterhin gezeigt ist, wird der Befehl 14
während des Zyklus 6 übertragen, vom Decodierer 31 während des
Zyklus 7 decodiert, benötigt dann jedoch zwei Zyklen 8 und 9
für die Adressenberechnung. Dies tritt, wie erwähnt, auf, wenn
die Adresse eine Basis, ein Index und eine Verschiebung ent
hält. Da beide Zyklen benötigt werden, findet während des
Zyklus 8 keine Übertragung zum Decodierer 31 statt, jedoch
während des Zyklus 9, in welchem der Befehl 16 zum Decodierer
übertragen wird.
In Fig. 6 ist ein Teil des Registers 26 der Fig. 2 darge
stellt. Es sei angenommen, daß einige Befehle in diesem Regi
ster gespeichert sind, insbesondere die Befehle 1 bis 4. Be
fehl 1 enthält in dem beschriebenen Falle einen 2-Byte OP-Code
und Register und Adreßmodusspezifizierer. (Für die Zwecke der
Fig. 6 zeigt die Bezeichnung "OP" sowohl den aktuellen OP-Co
de als auch Register und Adreßmodusspezifizierfelder der Fig.
4 an.) Befehl 1 hat auch ein 8-Bit-Sofortfeld. Befehl 3 hat
nur einen 8-Bit-OP-Code. Befehl 4 hat einen 24-Bit-OP-Code und
ein 32-Bit-Verschiebefeld. Anfänglich weist der K 1P-Zeiger zum
Vorausholer 12 (Zeiger 67) auf das erste Byte im Register 26.
Die ersten 24 Bits in dem Register werden daher zum Decodierer
31 übertragen. Dieses Feld ist rechts vom Zyklus 1 durch die
Ziffer 68 angegeben. Der Decodierer 31 stellt beim Decodieren
dieses Feldes fest, daß die ersten 16 Bits den OP-Code dar
stellen und liefert die geeigneten Signale zur Einleitung der
Ausführung dieses Codes (generell an die Latch-Schaltung 35).
Durch die Codesteuerschaltung 26 wird festgestellt, daß der
1K 2P-Zeiger 69 auf den Beginn des Sofortfeldes im Befehl 1
zeigen sollte. Dieser Zeiger bewirkt, daß die diesem Feld
folgenden vier Bytes unter der Steuerung der Aufbaustufe 34
übertragen werden. Das Feld ist durch Klammer 70 rechts vom
Zyklus 2 in Fig. 6 angegeben. Die Codesteuerschaltung 36 lie
fert auch den Zeiger 71, so daß während des Zyklus 2 die 24
Bits, die dem Zeiger 71 folgen, zum Decodierer 31 übertragen
werden. Dieses Feld ist allgemein mit der Nummer 72 bezeich
net. Wiederum ist zu beachten, daß 8 Bits des Sofortfeldes des
Befehls 2 zum Decodierer übertragen werden; diese Bits werden
jedoch in Wirklichkeit ignoriert. Während des nächsten Zyklus
wird das gesamte Sofortfeld für Befehl 2 übertragen, da der
Zeiger 73 auf den Beginn dieses Feldes gesetzt ist. (Verschie
befelder werden zur Segmentierungseinheit und Sofortfelder
innerhalb der Cacheeinheit übertragen.) Das Feld für Zyklus 3
ist mit der Nummer 76 gezeigt. Die Steuerschaltung 36 liefert
als nächstes den Zeiger 74 und bewirkt, daß die 24 Bits, die
dem Zeiger 74 folgen, während des Zyklus 3 an den Decodierer
31 übertragen werden. Da dieser Befehl kein Sofortfeld oder
Verschiebefeld hat, wird kein 1K 2P-Zeiger für Befehle 3 benö
tigt. Dies ist allgemein durch die Nummer 75 für den Zyklus 4
angegeben. Dieser Prozeß setzt sich gemäß Darstellung in Fig. 6
für Befehl 4 fort, wobei die Steuerschaltung 36 die Zeiger
liefert und die geeigneten Felder übertragen werden.
Im unteren Teil der Fig. 6 ist die Ausführung der Befehle
gezeigt. Während des Zyklus 3 wird Befehl 1 ausgeführt. Wäh
rend des Zyklus 4 wird Befehl 4 ausführt usw.
Claims (14)
1. Mikroprozessor mit einem Speichermitteln (12, 26) zur
Speicherung vorausgeholter Befehle und Decodiermitteln (14)
zum Decodieren der Befehle aus dem Speicher, wobei die Befehle
unterschiedliche Länge haben,
dadurch gekennzeichnet,
daß die Decodiereinrichtung wenigstens zwei Sektionen (31, 34)
hat, von denen die erste (31) ein erstes Feld eines Befehls
zur gleichen Zeit decodiert, während die zweite (34) die Aus
führung auf der Basis eines zweiten Feldes des vorausgegange
nen Befehls aufbaut, daß die erste Sektion (31) derart mit dem
Speicher (12; 26) gekoppelt ist, daß sie das erste Befehlsfeld
aus dem Speicher aufnehmen kann, daß die zweite Sektion derart
angeordnet ist, daß sie den Ausführungsaufbau mit dem zweiten
Feld des vorhergehenden Befehls aus dem Speicher bewirkt und
daß die erste Sektion einen ersten Zeiger zur Auswahl des
zweiten Feldes aus dem Speicher an den Speicher anlegt.
2. Mikroprozessor nach Anspruch 1, dadurch gekennzeichnet,
daß die erste Sektion (31, 36) einen zweiten Zeiger an die
Speichermittel (12) zur Auswahl des ersten Feldes des nächsten
Befehls anlegt.
3. Mikroprozessor nach Anspruch 1 oder 2, dadurch gekenn
zeichnet, daß das erste Feld einen OP-Code und Register und
Adreßmodusspezifizierer enthält.
4. Mikroprozessor nach einem der Ansprüche 1 bis 3, dadurch
gekennzeichnet, daß die zweite Sektion (34) so ausgebildet
ist, daß sie Adreßberechnungen sequentiell ordnet.
5. Mikroprozessor nach einem der Ansprüche 1 bis 4, dadurch
gekennzeichnet, daß der Mikroprozessor Mikrocode verwendet und
einen Speicher zur Speicherung wenigstens eines Teils des
Mikrocodes aufweist und daß die erste Sektion einen Verweis
(look-up) für den Mikrocode bildet.
6. Mikroprozessor nach Anspruch 5 dadurch gekennzeichnet,
daß die erste Sektion wenigstens eine Linie oder Zeile des
Mikrocode liefert.
7. Mikroprozessor nach einem der Ansprüche 1 bis 6, dadurch
gekennzeichnet, daß die erste Sektion wenigstens eine erste
Linie bzw. Zeile des Mikrocode für einige der Befehle und
einen Verweis auf andere Mikrocode liefert.
8. Mikroprozessor mit einer Befehlsdecodiereinheit (14) und
einem Register (11, 12; 26) zur Speicherung einer Vielzahl von
Befehlen, die an die Decodiereinheit übertragbar sind, wobei
der Mikroprozessor so ausgebildet ist, daß er Befehle unter
schiedlicher Längen bearbeiten kann,
dadurch gekennzeichnet,
daß die Decodiereinheit (14) eine erste (31, 36) und eine
zweite Stufe (34) aufweist, wobei die erste Stufe den OP-Code
und Register und Adreßmodusspezifizierer (erstes Feld) eines
der Befehle während eines ersten Computerzyklus decodiert und
die zweite Stufe (34) die Verwendung der Adreßverschiebung
oder ein Sofortdatenfeld (zweites Feld) des ersten Befehls
während eines dem ersten Zyklus zeitlich folgenden zweiten
Computerzyklus steuert.
9. Mikroprozessor nach Anspruch 8, dadurch gekennzeichnet,
daß die erste Stufe so angeordnet ist, daß sie das erste Feld
nach Maßgabe eines ersten Zeigers aufnimmt, und daß die zweite
Stufe so angeordnet ist, daß sie die Verwendung des zweiten
Feldes nach Maßgabe eines zweiten Zeigers sequentiell ordnet,
wobei die ersten und zweiten Zeiger von Signalen aus der er
sten Stufe erzeugt werden.
10. Mikroprozessor nach Anspruch 8 oder 9, dadurch gekenn
zeichnet, daß die erste Stufe die Ausführung gewisser Befehle
initiiert.
11. Mikroprozessor nach einem der Ansprüche 8 bis 10, dadurch
gekennzeichnet, daß der Mikroprozessor Mikrocode benutzt und
einen Speicher zur Speicherung wenigstens eines Teils des
Mikrocode aufweist und daß die erste Stufe einen Verweis auf
den Mikrocode über eine Latch-Schaltung (35) liefert.
12. Mikroprozessor nach Anspruch 11, dadurch gekennzeichnet,
daß die erste Stufe für gewisse Befehle zwei Linien oder Zei
len des Mikrocode liefert.
13. Mikroprozessor nach einem der Ansprüche 8 bis 12, dadurch
gekennzeichnet, daß die zweite Stufe Adreßberechnungen steu
ert.
14. Mikroprozessor nach einem der Ansprüche 8 bis 13, da
durch gekennzeichnet, daß die zweite Stufe die Buszyklusiniti
ierung steuert.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US33518689A | 1989-04-07 | 1989-04-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE4010895A1 true DE4010895A1 (de) | 1990-10-11 |
DE4010895C2 DE4010895C2 (de) | 1998-09-24 |
Family
ID=23310662
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19904010895 Expired - Fee Related DE4010895C2 (de) | 1989-04-07 | 1990-04-04 | Mikroprozessor mit Befehlsdecodiereinrichtung |
Country Status (5)
Country | Link |
---|---|
JP (1) | JP2847316B2 (de) |
DE (1) | DE4010895C2 (de) |
FR (1) | FR2645665B1 (de) |
GB (1) | GB2230116B (de) |
HK (1) | HK56295A (de) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5438668A (en) * | 1992-03-31 | 1995-08-01 | Seiko Epson Corporation | System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer |
EP0663083B1 (de) | 1992-09-29 | 2000-12-20 | Seiko Epson Corporation | System und verfahren zur handhabung von laden und/oder speichern in einem superskalar mikroprozessor |
US6735685B1 (en) | 1992-09-29 | 2004-05-11 | Seiko Epson Corporation | System and method for handling load and/or store operations in a superscalar microprocessor |
DE69425310T2 (de) * | 1993-10-18 | 2001-06-13 | Via Cyrix Inc | Mikrosteuereinheit für einen superpipeline-superskalaren Mikroprozessor |
US5794026A (en) * | 1993-10-18 | 1998-08-11 | National Semiconductor | Microprocessor having expedited execution of condition dependent instructions |
US5644741A (en) * | 1993-10-18 | 1997-07-01 | Cyrix Corporation | Processor with single clock decode architecture employing single microROM |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4454578A (en) * | 1980-05-19 | 1984-06-12 | Hitachi, Ltd. | Data processing unit with pipelined operands |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3629853A (en) * | 1959-06-30 | 1971-12-21 | Ibm | Data-processing element |
US4363091A (en) * | 1978-01-31 | 1982-12-07 | Intel Corporation | Extended address, single and multiple bit microprocessor |
US4573118A (en) * | 1983-03-31 | 1986-02-25 | Fairchild Camera & Instrument Corporation | Microprocessor with branch control |
US4574344A (en) * | 1983-09-29 | 1986-03-04 | Tandem Computers Incorporated | Entry control store for enhanced CPU pipeline performance |
US4812972A (en) * | 1984-06-20 | 1989-03-14 | Convex Computer Corporation | Microcode computer having dispatch and main control stores for storing the first and the remaining microinstructions of machine instructions |
JPH0776917B2 (ja) * | 1984-12-29 | 1995-08-16 | ソニー株式会社 | マイクロコンピユ−タ |
JP2554050B2 (ja) * | 1986-02-26 | 1996-11-13 | 株式会社日立製作所 | デ−タ処理方法 |
JPS62226231A (ja) * | 1986-03-27 | 1987-10-05 | Toshiba Corp | プロセツサ |
JPH0772863B2 (ja) * | 1986-10-30 | 1995-08-02 | 日本電気株式会社 | プログラムカウンタ相対アドレス計算方式 |
-
1990
- 1990-02-14 GB GB9003351A patent/GB2230116B/en not_active Expired - Fee Related
- 1990-04-04 DE DE19904010895 patent/DE4010895C2/de not_active Expired - Fee Related
- 1990-04-05 FR FR9004375A patent/FR2645665B1/fr not_active Expired - Fee Related
- 1990-04-05 JP JP2089297A patent/JP2847316B2/ja not_active Expired - Lifetime
-
1995
- 1995-04-11 HK HK56295A patent/HK56295A/xx not_active IP Right Cessation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4454578A (en) * | 1980-05-19 | 1984-06-12 | Hitachi, Ltd. | Data processing unit with pipelined operands |
Also Published As
Publication number | Publication date |
---|---|
FR2645665A1 (fr) | 1990-10-12 |
GB9003351D0 (en) | 1990-04-11 |
JPH03201030A (ja) | 1991-09-02 |
FR2645665B1 (fr) | 1994-04-15 |
DE4010895C2 (de) | 1998-09-24 |
HK56295A (en) | 1995-04-21 |
JP2847316B2 (ja) | 1999-01-20 |
GB2230116B (en) | 1993-02-17 |
GB2230116A (en) | 1990-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69833008T2 (de) | Prozessor mit instruktionskodierung mittels eines schablonenfeldes | |
DE69636861T2 (de) | Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern | |
DE2903349C2 (de) | Prozessor und Verfahren zur Datenverarbeitung | |
DE3210816C2 (de) | ||
DE2835095C2 (de) | Digitale Rechenanlage mit einem ersten und mindestens einem zweiten miteinander koppelbaren mikroprogrammierten Prozessoren | |
DE69627807T2 (de) | Datenprozessor zum gleichzeitigen Dataladen und Durchführung einer multiplizier-addier Operation | |
DE19914210B4 (de) | Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung | |
DE2714805C2 (de) | ||
DE69724771T2 (de) | Zentralprozessoreinheit mit x86 und dsp kern und einem dsp funktions-dekoder zum abbilden von x 86-befehlen auf dsp-befehle | |
DE19506435C2 (de) | Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten | |
DE3424962C2 (de) | ||
DE2855106A1 (de) | Einrichtung zur durchfuehrung von instruktionsverzweigungen | |
DE2524046C2 (de) | Elektronische Datenverarbeitungsanlage | |
DE4301417A1 (de) | ||
DE2224537A1 (de) | Einrichtung und verfahren zur instruktionsselektion | |
DE3801361A1 (de) | Verfahren und einrichtung zum detektieren und fuer die spezialbehandlung von memory-mapped eingabe/ausgabereferenzen in einem pipelinemikroprozessor | |
DE2430127A1 (de) | Einrichtung zur steuerung des speicherzugriffs konkurrierender benutzer | |
DE2543522A1 (de) | Einrichtung in einem mikroprogramm- prozessor mit mehreren ebenen von unterbefehlsgruppen zur bedienung von peripherie-geraeten auf vorrang-basis | |
DE3709675A1 (de) | Arithmetik-logik-einheit | |
DE4134392C2 (de) | Verfahren und Vorrichtung zum Ungültigmachen von Befehlen in Geräten mit Parallelverarbeitung | |
DE2548720C2 (de) | Mikroprogramm-Steuerwerk | |
DE3307194C2 (de) | ||
DE4010895C2 (de) | Mikroprozessor mit Befehlsdecodiereinrichtung | |
DE2906685C2 (de) | ||
DE69930893T2 (de) | Digitaler Signalprozessor für Daten mit grosser Bitlänge |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
8125 | Change of the main classification |
Ipc: G06F 9/22 |
|
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |