-
HINTERGRUND
DER ERFINDUNG
-
Die vorliegende Erfindung betrifft
im Allgemeinen eine Mikroprozessorarchitektur und insbesondere ein
Verfahren zur Verwendung eines Teils der Mikroprozessor-Ausführungseinheitsarchitektur
zum Durchführen
einer Rotate-Through-Carry-Operation.
-
Viele moderne Mikroprozessoren weisen
eine "Pipelinearchitektur" auf, bei der der
Prozessor in Stufen unterteilt ist. Dies ermöglicht, dass der Prozessor
mehrere Aufgaben auf einmal 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 anderer 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 Kompatibilität mit älteren Intel-Mikroprozessorkonstruktionen
und der Tatsache, dass es sich um einen Universal-Mikroprozessor
handelt, entstehend, weist der x86-Mikroprozessor eine komplexe
Befehlssatzarchitektur auf, die über
400 Befehle umfasst. Einige dieser Befehle werden jedoch entweder vom
Betriebssystem oder vom Kompilierer selten verwendet. Somit wäre es erwünscht, die
Architektur für üblicherweise
verwendete Befehle zu optimieren.
-
Der Stand der Technik wird durch
US-A-5379240 veranschaulicht, welches ein Verfahren zum zyklischen
Verschieben eines Worts mit variabler Bitgröße offenbart.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Ein Verfahren zur Verwendung einer
Mikroprozessor-Ausführungseinheitsarchitektur
zum Durchführen
einer Rotate-Through-Carry-Operation ist im unabhängigen Anspruch
definiert. Die Architektur wird im Allgemeinen als mit einem Rechenwerk
und einer Adressierungseinheit beschrieben. Das Rechenwerk führt Rechen-
und logische Operationen an einem Paar von Operanden als Reaktion
auf Steuersignale durch. Die Adressierungseinheit arbeitet in Verbindung
mit dem Rechenwerk, um lineare Adressen sowie Versätze und Grenzen
zu berechnen.
-
Das Rechenwerk umfasst einen ersten
Teil zum Durchführen
von Additions-, Subtraktions- und logischen Operationen, einen zweiten
Teil zum Durchführen
von Multiplikations-, Divisions- und Ein-Bit-Verschiebungsoperationen
und einen dritten Teil zum Durchführen von Mehrbit-Verschiebungs-
und zyklischen Verschiebungsoperationen.
-
Ein besseres Verständnis der
Merkmale und Vorteile der vorliegenden Erfindung wird durch Bezugnahme
auf die folgende ausführliche
Beschreibung der Erfindung und die zugehörigen Zeichnungen erhalten, die
ein erläuterndes Ausführungsbeispiel
darlegen, in dem die Prinzipien der Erfindung verwendet werden.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
1 ist
ein Blockdiagramm, das Teile eines integrierten Mikroprozessorsystems
zeigt.
-
2 ist
ein Funktionsblockdiagramm des Ausführungseinheitsteils des integrierten
Mikroprozessorsystems von 1.
-
3 ist
ein detaillierteres Blockdiagramm der Ausführungseinheit von 2.
-
4 ist
ein schematisches Diagramm der Ergebnisregister für eine Divisionsoperation.
-
5 ist
ein schematisches Diagramm der Ergebnisregister für eine Multiplikationsoperation.
-
6a–6c sind Ablaufpläne, die
darstellen, wie eine Rotate- und Carry-Operation durchgeführt wird.
-
AUSFÜHRLICHE
BESCHREIBUNG DER ERFINDUNG
-
Mit Bezug auf 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 umfasst. 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 werden, einschließlich einer
Registerdatei 6 und eines Schattenregisters 7,
vorsieht, und wobei Rechen-, logische und Adressierungsberechnungen von
der Ausführungseinheit
zum Programmieren von Befehlen, die vom integrierten Mikroprozessorsystem 1 ausgeführt werden,
durchgeführt
werden.
-
Das Mikroprozessorsystem 1 umfasst
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 ein anderes Eingangssignal zum Durchführen von
programmierten Steuerentscheidungen.
-
Die Ausführungseinheit 3 wird
so implementiert, dass sie im Wesentlichen mit dem Intel x86 Befehlssatz
kompatibel ist, wie in "Intel486TM MICROPROCESSOR FAMILY PROGRAMMER'S REFERENCE MANUAL" dargelegt. Auf die
x86-Befehle wird hierin in ihrer allgemeinen mnemonischen Form Bezug
genommen, wie z. B. ADD, SUB, MUL, DIV usw.
-
Ein vereinfachtes Funktionsdiagramm
der Ausführungseinheit 3 ist
in 2 gezeigt. 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 logisches Ergebnis 53 in
einem einzelnen Zyklus für
viele x86-Befehle.
-
Das Rechenwerk 50 umfasst
einen ersten Teil zum Durchführen
von Additions-, Subtraktions- und logischen Operationen, einen zweiten
Teil zum Durchführen
von Multiplikations-, Divisions- und Ein-Bit-Verschiebungsoperationen
und einen dritten Teil zum Durchführen von Mehrbit-Verschiebungs-
und zyklischen Verschiebungsoperationen, wie nachstehend genauer
gezeigt und beschrieben wird.
-
Eine Adressierungseinheit 55 weist
einen Eingang auf, der selektiv mit dem Ausgang des Rechenwerks 50 oder
mit OpA gekoppelt wird. Wenn ein Adressierungsbefehl empfangen wird,
wird die Segmentbasiskomponente am Eingang 56 zur Adressierungseinheit 55 geliefert
und die Basis-, Index- oder
Verschiebungskomponenten oder unmittelbare Segmentadressenoperanden
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, dass der Versatz 58, d. h. das Ausgangssignal 53 oder
OpA, nicht eine Stelle außerhalb
des Segments adressiert, wie durch das Steuersignal LIMIT festgelegt.
-
Mit Bezug auf 3 ist die Ausführungseinheit 3 genauer
dargestellt. Es sollte für
einen Fachmann ersichtlich sein, dass jede nachstehend beschriebene
Komponente der Ausführungseinheit
durch ein oder mehrere Steuersignale gesteuert oder angesteuert
wird, die von der Steuerlogikeinheit 5 geliefert werden.
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 dWort 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 umfasst 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 umfasst 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 logische
Operationen 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-Verschiebungsoperationen 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 einen Links/Rechts-Verschieber 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 einen Links/Rechts-Verschieber 109 um ein
Bit entweder nach links oder rechts verschoben und dann im Register 110 gespeichert werden.
Das niedrigstwertige Bit (LSB) des Links/Rechts-Verschiebers 106 ist mit dem
höchstwertigen
Bit (MSB) des Links/Rechts-Verschiebers 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-Verschiebungs-
und zyklischen Verschiebungsoperationen 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:
-
-
-
Die Adressierungseinheit umfasst
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 SUM-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 umfasst 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, dass der Versatz
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-Linksverschiebungseinheit 180 zugeführt, die
effektiv den Wert der Übertragbits
mit 2 multipliziert. Das Ausgangssignal der Verschiebungseinheit 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, dass der Versatz über dem
skalierten Grenzwert liegt.
-
Der Betrieb der Ausführungseinheit 3 für Rechen-
und logische Befehle wird nun genauer beschrieben.
-
Befehle für die Additions-, Subtraktions-
und logischen Operationen 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, des oberen Verschiebers
mit dem Multiplexer 105, dem Verschieber 106 und
dem Register 107, und des unteren Verschiebers mit dem
Multiplexer 108, dem Verschieber 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 der Verschieber 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 der Verschieber 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);
-
-
Das Register 110 wird verwendet,
um den Quotienten bereitzustellen, während das Register 107 verwendet
wird, um den Rest bereitzustellen, wie in 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 Bits des Registers 107 den Rest enthalten.
-
Ein Multiplikationsbeispiel von 10
mal 5 ergibt ein Produkt von 50, wie in Tabelle III gezeigt (auf
8 Bits verkürzt):
-
-
Das Produkt einer Multiplikationsoperation
ist in den Registern 110 und 107 enthalten, wie
in 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-Verschiebungs-
und zyklische Verschiebungsoperationen auszuführen, wie z. B. Rotate und Carry,
wie nun genauer beschrieben wird.
-
Der RCL-Befehl (Rotate-Through-Carry
links) ist beispielsweise in den 6a–6c dargestellt. In Schritt
302 nimmt der MVSX-Befehl das 8-Bit-Verschiebungsausmaß, das im
Operanden B gespeichert ist, und bewegt es zu einem temporären Register
temp1, wo es auf 32 Bits nullerweitert wird. Ein Satz von verborgenen
Zustandskennzeichen sind für
die interne Verwendung definiert und werden anfänglich gleich den Benutzerzustandskennzeichen
gesetzt. Dieser Schritt dauert einen Taktzyklus.
-
In Schritt 304 lädt ein LDS-Befehl den 32-Bit-Wert
vom temporären
Register temp1 in den Operanden A und füllt den Operanden B mit 32
Nullen. Diese Werte werden auch in das obere Register 107 bzw.
das untere Register 110 geladen. Die verborgenen Kennzeichen
hSF, hAF und hCF werden wieder aktualisiert, indem sie gleich den
Benutzerkennzeichen gesetzt werden. Das verborgene Paritätskennzeichen
hPF wird auf Null gesetzt. Das verborgene Überlaufkennzeichen hOF und
das verborgene Nullkennzeichen werden in den nächsten paar Schritten behandelt.
-
In Schritt 306 werden die niedrigstwertigen
5 Bits, d. h. die Bits 0 bis 4, des oberen Registers 107 mit dem
Wert Eins verglichen. Wenn diese Bits gleich 1 sind, dann wird das
verborgene Überlaufkennzeichen
hOF in Schritt 307 auf 1 gesetzt, ansonsten wird das verborgene Überlaufkennzeichen
hOF in Schritt 308 auf 0 gesetzt.
-
In Schritt 310 werden die niedrigstwertigen
5 Bits, d. h. die Bits 0 bis 4, des oberen Registers 107 mit dem
wert Null verglichen. Wenn diese Bits gleich 1 sind, dann wird das
verborgene Nullkennzeichen hZF in Schritt 311 auf 1 gesetzt, ansonsten
wird das verborgene Nullkennzeichen hZF in Schritt 312 auf 0 gesetzt.
-
Die Schritte 304 bis 312 dauern einen
weiteren Taktzyklus.
-
In Schritt 314 wird das verborgene
Nullkennzeichen hZF mit Null verglichen. Wenn dies wahr ist, dann wird
die Routine ausgeführt
und die Architekturkennzeichen und Register sind unbeeinflusst.
Wenn es jedoch nicht Null ist, wird das verborgene Überlaufkennzeichen
hOF in Schritt 316 mit Null verglichen.
-
Wenn hOF Null ist, springt das Programm
zu Schritt B. Ansonsten geht das Programm zu Schritt 318 weiter,
in dem der Operand A mit dem im temporären Register tempreg gespeicherten
Wert gefüllt
wird und dann auf 32 Bits ain vorzeichenerweitert
wird und der Operand B mit Null gefüllt wird und auf 32 Bits bin vorzeichenerweitert wird. Der im oberen
Register 107 gespeicherte wert wird um Eins dekrementiert
und der Wert ain wird um eine Bitposition
nach links verschoben und in tempreg gespeichert. Das niedrigstwertige
Bit in tempreg wird gleich dem Wert des Übertragskennzeichens CF gesetzt.
Die verborgenen Kennzeichen hSF, hZF, hAF und hPF werden dann aktualisiert,
indem sie gleich den entsprechenden Benutzerkennzeichen gesetzt
werden. Das verborgene Übertragskennzeichen
hCF wird dann gleich dem Bit 31 von ain,
wenn es ein dWort ist, oder dem Bit 15 von ain,
wenn es ein Wort ist, oder dem Bit 7 von ain,
wenn es ein Byte ist, gesetzt.
-
Wenn in Schritt 320 die unteren 5
Bits von bin gleich 1 sind oder wenn das
verborgene Überlaufkennzeichen
hOF gleich 1 ist, dann wird zu Schritt 322 weitergegangen, ansonsten
wird zu Schritt 324 gesprungen.
-
In Schritt 322 wird das verborgene Überlaufkennzeichen
hOF auf das Bit 31 von ain XODER
das Bit 31 von tempreg, wenn es ein dWort ist, oder auf
das Bit 15 von ain XODER das Bit 15 von
tempreg, wenn es ein Wort ist, oder auf das Bit 7 von ain XODER das Bit 7 von tempreg,
wenn es ein Byte ist, gesetzt.
-
In Schritt 324 werden die unteren
5 Bits des oberen Registers 107 mit 1 verglichen. Wenn
sie gleich Eins sind, dann wird das verborgene Überlaufkennzeichen hOF in Schritt
325 gleich Eins gesetzt, ansonsten wird das verborgene Überlaufkennzeichen
hOF in Schritt 326 gleich Null gesetzt.
-
In Schritt 328 werden alle Benutzerkennzeichen
gleich den verborgenen Kennzeichen gesetzt und das Programm kehrt
zu Schritt 316 zurück.
-
Schritt 330 beginnt die Routine,
wenn hOF in Schritt 316 0 war. Diese Routine ist identisch zu den Schritten
318 bis 328, fügt
jedoch am Ende Schritt 350 hinzu, in dem das Ergebnis in einem Zielregister
gespeichert wird und gleich den unteren 8 Bits von tempreg ist,
wenn es ein Byte ist, den unteren 16 Bits von tempreg ist, wenn
es ein Wort ist, und den unteren 32 Bits ist, wenn es ein dWort
ist.
-
Adressierungsberechnungen für den segmentierten ×86-Adressenraum werden
in der Ausführungseinheit 3 für die vorherrschenden
Fälle optimiert,
d. h. wenn die Adresse nur aus zwei Komponenten besteht, nämlich einem
skalierten Index und einer Verschiebung oder einer Basis und einer
Verschiebung. Die Ausführungseinheit
ist in der Lage, die gesamte Adressenberechnung in einem einzelnen
Zyklus durchzuführen,
d. h. sie kann die Berechnung des Versatzes, der linearen Adresse
und der Grenze in einem einzelnen Zyklus durchführen.