DE69615313T2 - Architektur einer ausführungseinheit zum stützen des x86-befehlssatzes und der segmentierten x86-adressierung - Google Patents

Architektur einer ausführungseinheit zum stützen des x86-befehlssatzes und der segmentierten x86-adressierung

Info

Publication number
DE69615313T2
DE69615313T2 DE69615313T DE69615313T DE69615313T2 DE 69615313 T2 DE69615313 T2 DE 69615313T2 DE 69615313 T DE69615313 T DE 69615313T DE 69615313 T DE69615313 T DE 69615313T DE 69615313 T2 DE69615313 T2 DE 69615313T2
Authority
DE
Germany
Prior art keywords
multiplexer
coupled
receive
output
output signal
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 - Fee Related
Application number
DE69615313T
Other languages
English (en)
Other versions
DE69615313D1 (de
Inventor
J. Tam
W. Thomson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National Semiconductor Corp
Original Assignee
National Semiconductor Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National Semiconductor Corp filed Critical National Semiconductor Corp
Application granted granted Critical
Publication of DE69615313D1 publication Critical patent/DE69615313D1/de
Publication of DE69615313T2 publication Critical patent/DE69615313T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • G06F9/3555Indexed addressing using scaling, e.g. multiplication of index

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Description

  • 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.

Claims (1)

1. Mikroprozessor-Ausführungseinheit mit einem ersten Rechenwerk (103) zum Durchführen von Rechen- und Logikoperationen an einer ersten Adressenkomponente und einer zweiten Adressenkomponente, einem ersten Multiplexer (152), der zum Empfangen eines Ausgangssignals des ersten Rechenwerks gekoppelt ist, und einem zweiten Rechenwerk (154) 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 (101), die zum Empfangen einer ersten Dateneingabe gekoppelt ist, wobei der erste Multiplexer (152) zum Empfangen der ersten Adressenkomponente von der ersten Vorzeichenerweiterungseinheit angeordnet ist, einen zweiten Multiplexer (104), der zum Empfangen des Ausgangssignals der ersten Vorzeichenerweiterungseinheit gekoppelt ist, einen dritten Multiplexer (105), der zum Empfangen des Ausgangssignals der ersten Vorzeichenerweiterungseinheit gekoppelt ist, einen vierten Multiplexer (122), der zum Empfangen des Ausgangssignals der ersten Vorzeichenerweiterungseinheit gekoppelt ist, eine zweite Vorzeichenerweiterungseinheit (102), die zum Empfangen einer zweiten Dateneingabe gekoppelt ist und zum Liefern der zweiten Adressenkomponente als Ausgangssignal angeordnet ist; einen fünften Multiplexer (188), der zum Empfangen des Ausgangssignals der zweiten Vorzeichenerweiterungseinheit (102) gekoppelt ist, wobei das erste Rechenwerk (103) zum Empfangen der Ausgangssignale des zweiten Multiplexers und der zweiten Vorzeichenerweiterungseinheit gekoppelt ist und zum Liefern eines Ausgangssignals zum dritten Multiplexer (105) angeordnet ist; eine erste Links/Rechts- Verschiebeeinrichtung (106), die mit einer zweiten Links/Rechts-Verschiebeeinrichtung (109) gekoppelt ist, wobei die erste Links/Rechts-Verschiebeeinrichtung zum Empfangen des Ausgangssignals des dritten Multiplexers (105) gekoppelt ist und die zweite Links/Rechts- Verschiebeeinrichtung (109) zum Empfangen des Ausgangssignals des fünften Multiplexers (188) gekoppelt ist; ein erstes Register (107), das zum Empfangen des Ausgangssignals der ersten Links/Rechts- Verschiebeeinrichtung (106) und zum Liefern eines Ausgangssignals zu einem Eingang des zweiten Multiplexers (104) und zu einem Eingang des dritten Multiplexers (105) gekoppelt ist, ein zweites Register (110), das zum Empfangen des Ausgangssignals der zweiten Links/Rechts- Verschiebeeinrichtung (109) und zum Liefern eines Ausgangssignals zu einem Eingang des fünften Multiplexers (188) gekoppelt ist; einen Decodierer (123) und einen Bitstellenverschieber (120), der zum Empfangen des Ausgangssignals des Decodierers und des Ausgangssignals des vierten Multiplexers (122) gekoppelt ist.
DE69615313T 1995-05-26 1996-05-23 Architektur einer ausführungseinheit zum stützen des x86-befehlssatzes und der segmentierten x86-adressierung Expired - Fee Related DE69615313T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/451,924 US5655139A (en) 1995-05-26 1995-05-26 Execution unit architecture to support X86 instruction set and X86 segmented addressing
PCT/US1996/007628 WO1996037827A1 (en) 1995-05-26 1996-05-23 EXECUTION UNIT ARCHITECTECTURE TO SUPPORT x86 INSTRUCTION SET AND x86 SEGMENTED ADDRESSING

Publications (2)

Publication Number Publication Date
DE69615313D1 DE69615313D1 (de) 2001-10-25
DE69615313T2 true DE69615313T2 (de) 2002-07-04

Family

ID=23794284

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69615313T Expired - Fee Related DE69615313T2 (de) 1995-05-26 1996-05-23 Architektur einer ausführungseinheit zum stützen des x86-befehlssatzes und der segmentierten x86-adressierung

Country Status (5)

Country Link
US (1) US5655139A (de)
EP (1) EP0772817B1 (de)
KR (1) KR970705075A (de)
DE (1) DE69615313T2 (de)
WO (1) WO1996037827A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08241325A (ja) * 1995-03-03 1996-09-17 Matsushita Electric Ind Co Ltd 電子辞書及びその製造方法並びにインデックス圧縮・伸長装置
US5961580A (en) * 1996-02-20 1999-10-05 Advanced Micro Devices, Inc. Apparatus and method for efficiently calculating a linear address in a microprocessor
US6085302A (en) * 1996-04-17 2000-07-04 Advanced Micro Devices, Inc. Microprocessor having address generation units for efficient generation of memory operation addresses
US5835968A (en) * 1996-04-17 1998-11-10 Advanced Micro Devices, Inc. Apparatus for providing memory and register operands concurrently to functional units
US6683530B1 (en) * 1999-09-08 2004-01-27 Sun Microsystems, Inc. Method and apparatus for performing a floating point compare operation
US7533238B2 (en) * 2005-08-19 2009-05-12 International Business Machines Corporation Method for limiting the size of a local storage of a processor
US8966211B1 (en) * 2011-12-19 2015-02-24 Emc Corporation Techniques for dynamic binding of device identifiers to data storage devices

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3461433A (en) * 1967-01-27 1969-08-12 Sperry Rand Corp Relative addressing system for memories
US3949378A (en) * 1974-12-09 1976-04-06 The United States Of America As Represented By The Secretary Of The Navy Computer memory addressing employing base and index registers
JPS5750052A (en) * 1980-09-09 1982-03-24 Toshiba Corp Address extension system
US5293592A (en) * 1989-04-07 1994-03-08 Intel Corporatino Decoder for pipelined system having portion indicating type of address generation and other portion controlling address generation within pipeline
US5031135A (en) * 1989-05-19 1991-07-09 Hitachi Micro Systems, Inc. Device for multi-precision and block arithmetic support in digital processors
US5204953A (en) * 1989-08-04 1993-04-20 Intel Corporation One clock address pipelining in segmentation unit
US5259006A (en) * 1990-04-18 1993-11-02 Quickturn Systems, Incorporated Method for substantially eliminating hold time violations in implementing high speed logic circuits or the like
US5249148A (en) * 1990-11-26 1993-09-28 Motorola, Inc. Method and apparatus for performing restricted modulo arithmetic
US5189319A (en) * 1991-10-10 1993-02-23 Intel Corporation Power reducing buffer/latch circuit
US5335333A (en) * 1991-10-29 1994-08-02 Intel Corporation Guess mechanism for faster address calculation in a pipelined microprocessor
US5381537A (en) * 1991-12-06 1995-01-10 International Business Machines Corporation Large logical addressing method and means
US5254888A (en) * 1992-03-27 1993-10-19 Picopower Technology Inc. Switchable clock circuit for microprocessors to thereby save power
US5590297A (en) * 1994-01-04 1996-12-31 Intel Corporation Address generation unit with segmented addresses in a mircroprocessor
US5404473A (en) * 1994-03-01 1995-04-04 Intel Corporation Apparatus and method for handling string operations in a pipelined processor
US5511017A (en) * 1994-06-01 1996-04-23 Exponential Technology, Inc. Reduced-modulus address generation using sign-extension and correction

Also Published As

Publication number Publication date
EP0772817B1 (de) 2001-09-19
KR970705075A (ko) 1997-09-06
WO1996037827A1 (en) 1996-11-28
US5655139A (en) 1997-08-05
DE69615313D1 (de) 2001-10-25
EP0772817A1 (de) 1997-05-14

Similar Documents

Publication Publication Date Title
DE19540102C2 (de) Verfahren und Gleitkomma-Recheneinheit mit einer Logik für eine Vierfach-Präzisions-Arithmetik
DE3144015C2 (de)
DE3854701T2 (de) Methode und Vorrichtung zum Verändern von Mikrobefehlen mit einer Makrobefehlspipeline.
DE69625256T2 (de) Mikrorechner
DE69504135T2 (de) Einrichtung zur Aktualisierung von Programmzählern
DE3789345T2 (de) Erweiterte Gleitkommaoperationen zur Unterstützung der Emulation von Quellbefehlsausführungen.
DE3751503T2 (de) Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen.
DE69428499T2 (de) Bedingtes Speicherladen von einem Registerpaar
DE69833008T2 (de) Prozessor mit instruktionskodierung mittels eines schablonenfeldes
DE4414172C2 (de) Gleit-Komma-Arithmetikeinheit und Verfahren zur Division und Quadratwurzelberechnung, die eine modifizierte Newton-Raphson Technik verwendet
DE69419697T2 (de) Arithmetisch-logische Einheit mit mehreren unabhängigen Abschnitten und ein Register zur Speicherung der Statusbits
DE2900324A1 (de) Mikroprogrammierbare arithmetische fliesskommaeinheit
DE69430516T2 (de) Arithmetisch-logische Einheit mit drei Eingängen, die die Summe einer ersten und einer zweiten booleschen Kombination berechnet
DE3851746T2 (de) Sprungvorhersage.
DE68928519T2 (de) Verfahren und Vorrichtung zur Vorhersage der richtigen Durchführung der Übersetzungen von virtuellen in physikalische Adressen
DE19735348A1 (de) Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern
DE60032794T2 (de) Bit-dekompression-verarbeitung mit einem vielseitigen ausrichtungswerkzeug
DE1934365A1 (de) Automatische Programmschaltung bei Computern mit Multiprogrammierung
DE69629646T2 (de) Verfahren zur durchführung einer "rotate through carry" operatiion
DE69412504T2 (de) Hardware-unterstützter zählungsänderungsbefehl
DE2612054A1 (de) Verfahren zur adressentwicklung und prozessor zur durchfuehrung des verfahrens
EP0010185A1 (de) Virtuell-Adressiervorrichtung für einen Computer
DE69732793T2 (de) Acht-bit-mikrokontroller mit risc-architektur
EP0325677B1 (de) Schaltungsanordnung und Steuerverfahren eines Befehlspufferspeichers in einer Datenverarbeitungsanlage
DE69615313T2 (de) Architektur einer ausführungseinheit zum stützen des x86-befehlssatzes und der segmentierten x86-adressierung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee