-
Die vorliegende Erfindung betrifft im allgemeinen eine
Mikroprozessorarchitektur und insbesondere die Architektur
einer Mikroprozessor-Ausführungseinheit, die Rechen- und
Logikoperationen gleichzeitig mit Adressenberechnungen
durchführt.
-
Viele moderne Mikroprozessoren weisen eine
"Pipelinearchitektur" auf, bei der der Prozessor in Stufen
unterteilt ist. Dies ermöglicht, daß der Prozessor mehrere
Aufgaben gleichzeitig durchführt, wodurch dem Prozessor
ermöglicht wird, verschiedene Teile der Befehle simultan zu
verarbeiten, wenn sie mit jedem Taktzyklus durch die
Pipeline weitergeleitet werden. Unter idealen Bedingungen
kann bei jedem Taktzyklus ein Befehl die Pipeline verlassen
und ein weiterer Befehl in die Pipeline eintreten. Ein
solcher Mikroprozessor ist der Intel486TM-Mikroprozessor.
Kompatible Mikroprozessoren vom x86-Typ umfassen jene, die
von Advanced Micro Devices und Cyrix hergestellt werden.
-
Aus dem Bedarf für die Kompatibilität mit älteren Intel-
Mikroprozessorkonstruktionen und der Tatsache, daß es sich
um einen Universal-Mikroprozessor handelt, entstehend,
weist der x86-Mikroprozessor eine Architektur mit komplexem
Befehlssatz auf, der über 400 Befehle enthält. Einige
dieser Befehle werden jedoch entweder vom Betriebssystem
oder vom Kompilierer selten verwendet. Somit wäre es
erwünscht, die Architektur für gemeinsam verwendete Befehle
zu optimieren.
-
Wie in Kapitel 2 des "Intel486TM MICROPROCESSOR FAMILY
PROGRAMMER'S REFERENCE MANUAL" beschrieben, ist der
Speicher eines Mikroprozessors vom x86-Typ als Sequenz von
8-Bit-Bytes organisiert und jedem Byte ist eine eindeutige
reale Adresse zugeordnet. Anwendungsprogramme adressieren
jedoch die reale Adresse nicht direkt, sondern verwenden
statt dessen ein virtuelles Adressierungsschema, bei dem
die reale Adresse auf der Basis eines
Speicherverwaltungsmodells berechnet wird, das eine
Segmentierung und Seitenadressierung umfaßt.
-
Der reelle Speicher ist in unabhängige Speicherplätze
unterteilt, die Segmente genannt werden. Jedes Segment
weist einen Segmentdeskriptor auf, der seine Basisadresse
und eine Größengrenze für dieses Segment enthält. Ein
Anwendungsprogramm gibt eine logische Adresse aus, die die
Adressierungshardware durch Addieren einer Verschiebung zur
Segmentbasisadresse in eine lineare Adresse übersetzt,
solange die Verschiebung die Größengrenze nicht
überschreitet. Die Verschiebung ist die Summe von drei
Komponenten, nämlich einem Verschiebungswert, einem
Basisregister und einem Indexregister.
-
Die Seitenadressierung wird ebenfalls von der Architektur
vom x86-Typ unterstützt, wobei ein linearer Adressenraum,
der ein Teil eines reellen Speichers oder eines
Plattenspeichers sein kann, in 4k Speicherblöcke, die
Seiten genannt werden, aufgeteilt ist. Wenn die
Seitenadressierung verwendet wird, übersetzt die
Adressierungshardware die lineare Adresse in eine reale
Adresse. Wenn nicht, ist die lineare Adresse die gleiche
wie die reale Adresse.
-
Somit muß eine Adressierurigshardware vom x86-Typ das
Szenario des schlimmsten Falls bearbeiten, bei dem nämlich
die effektive Adresse die Summe der Basis und aller
Verschiebungskomponenten ist. Bei vielen Anwendungen liegt
jedoch nur eine Verschiebungskomponente vor. Daher wäre es
auch erwünscht, die Adressierungshardware zu optimieren, um
vielmehr die Adressierungsberechnung des gewöhnlichen als
des schlimmsten Falls zu bearbeiten.
-
Der Stand der Technik ist durch IBM Technical Disclosure
Bulletin Band 35, Nr. 2 (1. Juli 1992), S. 284-285,
EP-A-0047439 und US-A-3949378 dargestellt, die alle zwei
Rechenwerke in Serie offenbaren, um Adressen in einem
segmentierten Adressenraum zu berechnen.
-
Die Erfindung stellt eine Mikroprozessor-Ausführungseinheit
bereit, mit einem ersten Rechenwerk zum Durchführen von
Rechen- und Logikoperationen an einer ersten
Adressenkomponente und einer zweiten Adressenkomponente,
einem ersten Multiplexer, der zum Empfangen eines
Ausgangssignals des ersten Rechenwerks gekoppelt ist, und
einem zweiten Rechenwerk zum Durchführen von
Rechenoperationen an einer Kombination eines
Ausgangssignals aus dem ersten Multiplexer und einer
dritten Adressenkomponente, um ein lineares
Adressenausgangssignal zu erzeugen, gekennzeichnet durch:
eine erste Vorzeichenerweiterungseinheit, die zum Empfangen
einer ersten Dateneingabe gekoppelt ist, wobei der erste
Multiplexer zum Empfangen der ersten Adressenkomponente von
der ersten Vorzeichenerweiterungseinheit angeordnet ist,
einen zweiten Multiplexer, der zum Empfangen des
Ausgangssignals der ersten Vorzeichenerweiterungseinheit
gekoppelt ist, einen dritten Multiplexer, der zum Empfangen
des Ausgangssignals der ersten
Vorzeichenerweiterungseinheit gekoppelt ist, einen vierten
Multiplexer, der zum Empfangen des Ausgangssignals der
ersten Vorzeichenerweiterungseinheit gekoppelt ist, eine
zweite Vorzeichenerweiterungseinheit, die zum Empfangen
einer zweiten Dateneingabe gekoppelt ist und zum Liefern
der zweiten Adressenkomponente als Ausgangssignal
angeordnet ist; einen fünften Multiplexer, der zum
Empfangen des Ausgangssignals der zweiten
Vorzeichenerweiterungseinheit gekoppelt ist, wobei das
erste Rechenwerk zum Empfangen der Ausgangssignale des
zweiten Multiplexers und der zweiten
Vorzeichenerweiterungseinheit gekoppelt ist und zum Liefern
eines Ausgangssignals zum dritten Multiplexer angeordnet
ist, eine erste Links/Rechts-Verschiebeeinrichtung, die mit
einer zweiten Links/Rechts-Verschiebeeinrichtung gekoppelt
ist, wobei die erste Links/Rechts-Verschiebeeinrichtung zum
Empfangen des Ausgangssignals des dritten Multiplexers
gekoppelt ist und die zweite Links/Rechts-
Verschiebeeinrichtung zum Empfangen des Ausgangssignals des
fünften Multiplexers gekoppelt ist; ein erstes Register,
das zum Empfangen des Ausgangssignals der ersten
Links/Rechts-Verschiebeeinrichtung und zum Liefern eines
Ausgangssignals zu einem Eingang des zweiten Multiplexers
und zu einem Eingang des dritten Multiplexers gekoppelt
ist, ein zweites Register, das zum Empfangen des
Ausgangssignals der zweiten Links/Rechts-
Verschiebeeinrichtung und zum Liefern eines Ausgangssignals
zu einem Eingang des fünften Multiplexers gekoppelt ist;
einen Decodierer und einen Bitstellenverschieber, der zum
Empfangen des Ausgangssignals des Decodierers und des
Ausgangssignals des vierten Multiplexers gekoppelt ist.
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Fig. 1 ist ein Blockdiagramm, das Teile eines integrierten
Mikroprozessorsystems zeigt.
-
Fig. 2 ist ein funktionales Blockdiagramm des
Ausführungseinheitsteils des integrierten
Mikroprozessorsystems von
Fig. 1.
-
Fig. 3 ist ein detaillierteres Blockdiagramm der
Ausführungseinheit von Fig. 2.
-
Fig. 4 ist ein schematisches Diagramm der Ergebnisregister
für eine Divisionsoperation.
-
Fig. 5 ist ein schematisches Diagramm der Ergebnisregister
für eine Multiplikationsoperation.
-
Fig. 6 ist ein Blockdiagramm eines Teils der
Ausführungseinheit von Fig. 3.
AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
-
Mit Bezug auf Fig. 1 ist das bevorzugte
Ausführungsbeispiel der vorliegenden Erfindung ein
integriertes Mikroprozessorsystem 1 mit einer
Pipelinearchitektur, wobei die Pipeline beispielsweise eine
Decodiererstufe 2, eine Ausführungseinheit 3 und eine
Einspeicherstufe 4 umfaßt. Die vorliegende Offenbarung
richtet sich auf die Ausführungseinheit 3, die einen 32-
Bit-Datenweg für Operanden und Befehle, die in allgemeinen
Registern gespeichert sind, einschließlich einer
Registerdatei 6 und eines Schattenregisters 7,
bereitstellt, und wobei Rechen-, Logik- und
Adressierungsberechnungen von der Ausführungseinheit für
Programmierbefehle, die vom integrierten
Mikroprozessorsystem 1 ausgeführt werden, durchgeführt
werden.
-
Das Mikroprozessorsystem 1 umfaßt eine Steuerlogikeinheit
5, die zum Senden von Steuersignalen CTRL zur
Ausführungseinheit 3 und zum Empfangen von Datensignalen
SGNL von der Ausführungseinheit gekoppelt ist. Die
Steuerlogikeinheit 5 ist auch mit anderen Komponenten des
Mikroprozessorsystems 1 gekoppelt und empfängt einen
Mikrocode und andere Eingangssignale zum Durchführen von
programmierten Steuerentscheidungen.
-
Die Ausführungseinheit 3 ist so implementiert, daß sie im
weseritlichen mit dem Befehlssatz von Intel x86 kompatibel
ist, wie in "Intel486TM MICROPROCESSOR FAMILY PROGRAMMER'S
REFERENCE MANUAL" dargelegt, das durch den Hinweis
ausdrücklich hierin aufgenommen wird. Auf die x86-Befehle
wird hierin in ihrer üblichen mnemonischen Form Bezug
genommen, wie z. B. ADD, SUB, MUL, DIV usw.
-
Ein vereinfachtes funktionales Diagramm der
Ausführungseinheit 3 ist in Fig. 2 dargestellt. Ein
Rechenwerk 50 weist zwei Eingänge 51 und 52 zum Empfangen
von Operanden OpA bzw. OpB von der Registerdatei 6 auf. Das
Rechenwerk 50 erzeugt ein Rechen- oder Logikergebnis 53 in
einem einzigen Zyklus für viele x86-Befehle.
-
Das Rechenwerk 50 umfaßt einen ersten Teil zum Durchführen
von Additions-, Subtraktions- und Logikoperationen, einen
zweiten Teil zum Durchführen von Multiplikations-,
Divisions- und Ein-Bit-Verschiebeoperationen und einen
dritten Teil zum Durchführen von Mehr-Bit-Verschiebe- und
zyklischen Verschiebeoperationen, wie nachstehend genauer
gezeigt und beschrieben wird.
-
Ein Eingang einer Adressierungseinheit 55 wird selektiv mit
dem Ausgang des Rechenwerks 50 oder mit OpA gekoppelt. Wenn
ein Adressierungsbefehl empfangen wird, wird die
Segmentbasiskomponente am Eingang 56 zur
Adressierungseinheit 55 geliefert, und die Basis-, Index-
oder Verschiebungskomponenten oder unmittelbare
Segmentadreßoperanden werden an den Eingängen 51 und 52 zum
Rechenwerk 50 geliefert. Die Adressierungseinheit 55
summiert dann die Adressenkomponenten, um das
Ausgangssignal 57 zu ergeben, das eine lineare Adresse ist.
-
Eine Grenzprüfeinheit 60 ist vorgesehen, um
sicherzustellen, daß die Verschiebung 58, d. h. das
Ausgangssignal 53 oder OpA, nicht eine Speicherstelle
außerhalb des Segments adressiert, wie durch das
Steuersignal LIMIT festgelegt.
-
Mit Bezug auf Fig. 3 ist die Ausführungseinheit 3 genauer
dargestellt. Das bevorzugte Ausführungsbeispiel der
Ausführungseinheit 3 wird durch die hier als Anhang A
angefügte Hardwarebeschreibungssprache vollständig
beschrieben, die durch die Bezugnahme ausdrücklich hierin
aufgenommen wird. Es sollte für einen Fachmann ersichtlich
sein, daß jede nachstehend beschriebene Komponente der
Ausführungseinheit durch ein oder mehrere Steuersignale,
die von der Steuerlogikeinheit 5 geliefert werden,
gesteuert oder angesteuert wird. Eine ausführliche
Beschreibung dieser Steuersignale ist jedoch für ein
vollständiges Verständnis der Erfindung nicht erforderlich.
-
Der Operand A wird in einer Vorzeichenerweiterungseinheit
101 empfangen. Die Vorzeichenerweiterungseinheit 101 ist
ein 3 : 1-Multiplexer, der ein Byte auswählt und es zu 32
Bits vorzeichenerweitert, oder ein Wort auswählt und es zu
32 Bits vorzeichenerweitert, oder ein Wort auswählt und
dann das 32-Bit-Ergebnis ain auf die Datenleitung 201
ausgibt. Der Begriff "vorzeichenerweitern" bedeutet das
Kopieren des Vorzeichenbits in die 24 höchstwertigen Bits
für ein Byte oder in die 16 höchstwertigen Bits für ein
Wort.
-
Der Operand B wird in einer Vorzeichenerweiterungseinheit
102 empfangen. Die Vorzeichenerweiterungseinheit 102 umfaßt
einen 5 : 1-Multiplexer, der ein Byte mit Vorzeichen auswählt
und es zu 32 Bits vorzeichenerweitert, oder ein Wort mit
Vorzeichen auswählt und es zu 32 Bits vorzeichenerweitert,
oder ein Byte ohne Vorzeichen auswählt und es zu 32 Bits
vorzeichenerweitert oder ein Wort ohne Vorzeichen auswählt
und es zu 32 Bits vorzeichenerweitert, oder ein dWort
auswählt. Das Ausgangssignal 202 ist ein 32-Bit-Ergebnis
bin. Die Vorzeichenerweiterungseinheit 102 umfaßt auch
einen 2 : 1-Multiplexer, der OpB oder sein Komplement
auswählt.
-
Ein Addierer 103 empfängt und verarbeitet Datenleitungen
202 und 203 und ein Übertragseingangssignal CI 204. Die
Datenleitung 203 kommt vom Ausgang eines 2 : 1-Multiplexers
104, der entweder die ain-Datenleitung 201 oder die UpperQ-
Datenleitung 205 auswählt.
-
Der Addierer 103 führt Logikoperationen an den
Datenleitungen 202 und 203 aus, um ein Logikausgangssignal
207 zu erzeugen, das für den Benutzer über das
Ausgangsgatter 111 erhältlich ist. Der Addierer 103 führt
auch eine Addition an den Datenleitungen 202, 203 und 204
durch, um ein Summenausgangssignal 206 zu erzeugen, das für
den Benutzer über das Ausgangsgatter 112 erhältlich ist.
-
Zwei 32-Bit-Register sind zum Durchführen von
Multiplikations-, Divisions- und Ein-Bit-
Verschiebeoperationen vorgesehen. Für die oberen 32 Bits
wählt ein 3 : 1-Multiplexer 105 aus der ain-Datenleitung 201,
der UpperQ-Datenleitung 205 oder der SUM-Datenleitung 207
aus. Der ausgewählte Wert kann durch eine Links/Rechts-
Verschiebeeinrichtung 106 um ein Bit entweder nach links
oder rechts verschoben werden und dann im Register 107
gespeichert werden. Für die unteren 32 Bits wählt ein 2 : 1-
Multiplexer 108 aus der bin-Datenleitung 202 oder aus der
LowerQ-Datenleitung 208 aus. Der ausgewählte Wert kann
durch eine Links/Rechts-Verschiebeeinrichtung 109 um ein
Bit entweder nach links oder rechts verschoben und dann im
Register 110 gespeichert werden. Das niedrigstwertige Bit
(LSB) der Links/Rechts-Verschiebeeinrichtung 106 ist mit
dem höchstwertigen Bit (MSB) der Links/Rechts-
Verschiebeeinrichtung 109 gekoppelt, um bis zu 64 Ein-Bit-
Positionsverschiebungen zu ermöglichen.
-
Das UpperQ-Register 107 versorgt eine Ausgangsdatenleitung
205, die zum Multiplexer 104 oder zum Multiplexer 105
zurückgeführt wird, wie vorstehend beschrieben, oder für
den Benutzer über das Ausgangsgatter 113 zur Verfügung
gestellt wird. Das LowerQ-Register 110 versorgt eine
Ausgangsdatenleitung 208, die zum Multiplexer 108
zurückgeführt wird, wie vorstehend beschrieben, oder für
den Benutzer über das Ausgangsgatter 114 zur Verfügung
gestellt wird.
-
Ein Bitstellenverschieber 120 mit einer 32-Mal-32-
Transistormatrix ist zum Durchführen von Mehr-Bit-
Verschiebe- und zyklischen Verschiebeoperationen
vorgesehen. Ein Paar von 32-Bit-2 : 1-Multiplexern 121, 122
koppeln die ain-Datenleitung 201 mit dem
Bitstellenverschieber 120. Ein 5-Bit-Decodierer 123 liefert
32 Ausgangssignale, von denen nur eines wahr ist, zum
Bitstellenverschieber 120, wobei somit eine Zeile des
Bitstellenverschiebers ausgewählt wird. Das Ausgangssignal
209 des Bitstellenverschiebers 120 ist für den Benutzer
über das Ausgangsgatter 115 erhältlich.
-
Ein Multiplexer 130 gibt selektiv Zustandskennzeichen aus
der Ausführungseinheit 3 über das Ausgangsgatter 116 aus,
wie in Tabelle I gezeigt:
TABELLE I
Kennzeichen Funktion
-
CF Übertragskennzeichen: Übertrag oder negativer
Übertrag vom höchstwertigen Bit
-
PF Paritätskennzeichen: Exklusiv-NICHT der
unteren 8 Bits von Ergebnis
-
AF Hilfskennzeichen: Übertrag von negativem
Übertrag von Bit 8
-
ZF Nullkennzeichen: Nullergebnis setzt ZF auf 1;
ansonsten wird ZF gelöscht
-
SF Vorzeichenkennzeichen: auf höchstwertiges Bit
von Ergebnis gesetzt
-
OF Überlaufkennzeichen: auf 1 gesetzt heißt
Zweierkomplement-Überlauf tritt auf; ansonsten
gelöscht
-
Die Adressierungseinheit umfaßt einen 4 : 1-Multiplexer 152,
der die ain-Datenleitung 201 auswählt, wenn es sich um ein
dWort handelt, oder die ain-Datenleitung 201 nullerweitert,
wenn es sich um ein Wort handelt, oder das 513K-
Ausgangssignal 206 auswählt, wenn es sich um ein dWort
handelt, oder das SUM-Ausgangssignal nullerweitert, wenn es
sich um ein Wort handelt. Der Begriff "nullerweitern"
bedeutet das Kopieren einer Null in die 24 höchstwertigen
Bits für ein Byte oder in die 16 höchstwertigen Bits für
ein Wort.
-
Ein Addierer 154 empfängt das Ausgangssignal vom
Multiplexer 152 sowie den Segmentbasiswert auf der
Datenleitung 56 und addiert die zwei Werte zusammen,
wodurch eine lineare Adresse 57 erzeugt wird.
-
Eine Grenzprüfeinheit 160 ist ebenfalls in der
Ausführungseinheit 3 vorgesehen. Die Adresse umfaßt einen
20-Bit-Grenzwert 162, der im Schattenregister 7 gespeichert
ist. Dieser Grenzwert wird zu einem Multiplexer 164
geliefert, wo er in Abhängigkeit vom Wert des
Granularitätsbits auf 32 Bits skaliert wird, dann durch den
32-Bit-Inverter 166 invertiert wird. Der Ausgang des
Inverters 166 ist mit einem Addierer 168, in dem nur die
Übertragsfunktion für die nächsthöhere Stelle verwendet
wird, und mit einem Multiplexer 170 gekoppelt. Der Ausgang
des Multiplexers 152 ist auch mit dem Addierer 168
gekoppelt. Der Ausgang B des Addierers 168 zeigt an, daß
die Verschiebung unter dem skalierten Grenzwert liegt.
-
Der Multiplexer 170 wird mit Konstanten HC (halbe
Höchstgrenze) und FC (volle Höchstgrenze) versehen, die den
Maximalwert für Adressierungsberechnungen vorsehen und die
Auswahl von entweder 16-Bit-Adressen (HC) oder 32-Bit-
Adressen (FC) bewirken. Das Ausgangssignal des Multiplexers
170, das die obere Grenze für Adressenberechnungen ist,
wird einem Addierer 174 zugeführt, der ein schneller
Dreioperandenaddierer (CSA) ist. Zusätzliche
Eingangssignale in den CSA 174 kommen vom Multiplexer 152
und vom Multiplexer 176. Zusätzliche konstante
Eingangssignale 0, 1 und 3 werden zum Multiplexer 176
geliefert, um die Befehlslänge zu definieren, d. h. 0 =
Byte, 1 = Wort und 3 = dWort.
-
Das Ausgangssignal des CSA 174 wird dem Eingang des
Addierers 178 und einer Ein-Bit-Linksverschiebeeinheit 180
zugeführt, die effektiv den Wert der Übertragbits mit 2
multipliziert. Das Ausgangssignal der Verschiebeeinheit 180
wird dem Addierer 178 zugeführt. Das Ausgangssignal
SegSpace des Addierers 178 wird für eine Grenzberechnung
durch eine Vorabrufeinheit (nicht dargestellt) verwendet
und das Ausgangssignal A des Addierers 178 zeigt an, daß
die Verschiebung über dem skalierten Grenzwert liegt.
-
Der Betrieb der Ausführungseinheit 3 für Rechen- und
Logikbefehle wird nun genauer beschrieben.
-
Befehle für die Additions-, Subtraktions- und
Logikoperationen werden unter Verwendung der Betriebsmittel
des Addierers 103 in herkömmlicher Weise ausgeführt.
-
Die Befehle für die Multiplikation und Division werden
unter Verwendung des Addierers 103, der oberen
Verschiebeeinrichtung mit dem Multiplexer 105, der
Verschiebeeinrichtung 106 und dem Register 107, und der
unteren Verschiebeeinrichtung mit dem Multiplexer 108, der
Verschiebeeinrichtung 109 und dem Register 110 ausgeführt.
Im allgemeinen werden die meisten Multiplikations- und
Divisionsbefehle gemäß herkömmlichen Algorithmen
durchgeführt, d. h. Verschieben und Addieren für
Multiplikations- und Subtrahieren und Verschieben für
Divisionsoperationen.
-
Wenn für eine Divisionsoperation der Wert von ain größer
ist als der in den Registern 107, 110 gespeicherte Wert,
dann wird 0 eingegeben und die Verschiebeeinrichtung wird
angesteuert, ansonsten wird 1 eingegeben und der Addierer
103 wird angesteuert. Wenn für eine
Multiplikationsoperation OpA gleich 1 ist, dann wird der
Addierer 103 angesteuert, ansonsten wird die
Verschiebeeinrichtung angesteuert.
-
Ein Divisionsbeispiel von 50 durch 7 ergibt einen
Quotienten von 7 mit einem Rest von 1, wie in Tabelle II
gezeigt (auf 8 Bits verkürzt);
Tabelle II
-
Das Register 110 wird verwendet, um den Quotienten
bereitzustellen, während das Register 107 verwendet wird,
um den Rest bereitzustellen, wie in Fig. 5 dargestellt.
Somit enthalten für Byteoperationen die unteren 8 Bits des
Registers 110 den Quotienten, während die unteren 8 Bits
des Registers 107 den Rest enthalten. Für Wortoperationen
enthalten die unteren 16 Bits des Registers 110 den
Quotienten, während die unteren 16 Bits des Registers 107
den Rest enthalten. Für dWort-Operationen enthalten alle 32
Bits des Registers 110 den Quotienten, während alle 32 Hits
des Registers 107 den Rest enthalten.
-
Eine weitere Erörterung des IDIV-Befehls ist in der
gemeinsam erteilten, gleichzeitig anhängigen Anmeldung mit
dem Titel "METHOD FOR PERFORMING SIGNED DIVISION" von H:
John Tam, und eingereicht am 26. Mai 1995, zu finden.
-
Ein Multiplikationsbeispiel von 10 mal 5 ergibt ein Produkt
von 50, wie in Tabelle III gezeigt (auf 8 Bits verkürzt):
Tabelle III
-
Das Produkt einer Multiplikationsoperation ist in den
Registern 110 und 107 enthalten, wie in Fig. 5
dargestellt. Somit ist für Byteoperationen ein 16-Bit-
Ergebnis in den oberen 8 Bits des Registers 110 und den
unteren 8 Bits des Registers 107 enthalten. Für
Wortoperationen ist ein 32-Bit-Ergebnis in den oberen 16
Bits des Registers 110 und den unteren 16 Bits des
Registers 107 enthalten. Für dwort-Operationen ist ein 64-
Bit-Ergebnis in allen 32 Bits des Registers 110 und allen
32 Bits des Registers 107 enthalten.
-
Der Bitstellenverschieber 120 und die zugehörigen
Multiplexer 121 und 122 können verwendet werden, um Mehr-
Bit-Verschiebe- und zyklische Verschiebeoperationen
auszuführen, wie in den Europäischen Patentanmeldungen Nrn.
96917874.8, 96920461.9 und 96920254.8 (veröffentlicht als
WO96/37820, WO96/37823 und WO96/37819) genauer beschrieben
ist.
-
Verschiebeoperationen mit doppelter Genauigkeit werden von
der Ausführungseinheit 3 auch vollständig unterstützt, wie
in der Europäischen Patentanmeldung Nr. 96920464.3
(veröffentlicht als WO96/38781) genauer beschrieben.
-
Adressierungsberechnungen für einen segmentierten x86-
Adressenraum werden in der Ausführungseinheit 3 für die
überwiegenden Fälle, d. h., wenn die Adresse nur aus zwei
Komponenten besteht, nämlich einem skalierten Index und
einer Verschiebung oder einer Basis und einer Verschiebung,
optimiert. Die Ausführungseinheit ist in der Lage, die
gesamte Adressenberechnung in einem einzigen Zyklus
durchzuführen, d. h. sie kann die Berechnung der
Verschiebung, der linearen Adresse und der Grenze in einem
einzigen Zyklus durchführen.
-
Ein Adressenzyklus ist in Fig. 7 schematisch dargestellt.
Eine 32-Bit-Segment-Basisadresse wird zum Eingang 56
geliefert und legt den Speichersegmentplatz, in dem sich
ein Operand befindet, fest. Ein 32-Bit- oder 16-Bit-
Segment-Verschiebungswert wird zur Segmentbasis addiert, um
die lineare Adresse zu bilden. Der Verschiebungswert ist
aus bis zu zwei allgemeinen Registern aufgebaut, nämlich
einem Basisregister oder einem Indexregister und einem
Direktverschiebungswert, der ein 8-Bit-, 16-Bit- oder 32-
Bit-Wert ist, der aus dem Adressierungsbefehlsformat
entnommen ist. Das Indexregister kann durch einen Faktor
von 2, 4 oder 8 vor der Verwendung skaliert werden, was
ermöglicht, daß das Indexregister vielmehr Elemente als
Bytes zählt, wenn es durch eine Matrix indiziert.