DE69629646T2 - Verfahren zur durchführung einer "rotate through carry" operatiion - Google Patents

Verfahren zur durchführung einer "rotate through carry" operatiion Download PDF

Info

Publication number
DE69629646T2
DE69629646T2 DE69629646T DE69629646T DE69629646T2 DE 69629646 T2 DE69629646 T2 DE 69629646T2 DE 69629646 T DE69629646 T DE 69629646T DE 69629646 T DE69629646 T DE 69629646T DE 69629646 T2 DE69629646 T2 DE 69629646T2
Authority
DE
Germany
Prior art keywords
bit
operand value
register
bits
flag
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
DE69629646T
Other languages
English (en)
Other versions
DE69629646D1 (de
Inventor
John Hon-Kai TAM
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 DE69629646D1 publication Critical patent/DE69629646D1/de
Publication of DE69629646T2 publication Critical patent/DE69629646T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Description

  • 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.
  • 6a6c 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:
  • TABELLE I
    Figure 00070001
  • Figure 00080001
  • 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);
  • Tabelle II
    Figure 00100001
  • 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):
  • Tabelle III
    Figure 00110001
  • 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 6a6c 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.

Claims (1)

  1. Verfahren zum Durchführen einer Rotate-Through-Carry-Operation mit den aufeinanderfolgenden Schritten: a. Initialisieren eines Nullkennzeichens, eines Übertragskennzeichens, eines Paritätskennzeichens und eines Überlaufkennzeichens; b. (304). Nullerweitern eines 8-Bit-Verschiebungsausmaßes in einem temporären Register auf 32 Bits, dann Speichern des Ergebnisses in einem ersten Register (107); c. (306). Vergleichen der niedrigstwertigen 5 Bits des ersten Registers mit dem Wert Eins, wenn sie gleich Eins sind, dann Setzen eines Überlaufkennzeichens gleich Eins, ansonsten Setzen des Überlaufkennzeichens gleich Null; d. (310). Vergleichen der niedrigstwertigen 5 Bits des ersten Registers mit Null, und wenn sie gleich Null sind, dann Setzen des Nullkennzeichens gleich Eins, ansonsten Setzen des Nullkennzeichens gleich Null; e. (314). Vergleichen des Nullkennzeichens mit Null, und wenn es gleich Null ist, dann Stoppen, ansonsten Gehen zu Schritt f; f. (316). Vergleichen des Überlaufkennzeichens mit Null, und wenn es gleich Null ist, Gehen zu Schritt o, ansonsten Gehen zu Schritt g; g. (318). Dekrementieren des Werts im ersten Register um Eins; h. (318). Laden einer ersten 32-Bit-Vorzeichenerweiterungseinheit (101) mit einem ersten Operandenwert (A) in dem temporären Register und Vorzeichenerweitern des ersten Operandenwerts (A) auf 32 Bits (ain), Verschieben des vorzeichenerweiterten ersten Operandenwerts (ain) um eine Bitposition nach links und Speichern desselben im temporären Register; i. (318). Laden einer zweiten 32-Bit-Vorzeichenerweiterungseinheit (102) mit Nullen, um einen zweiten Operandenwert (bin) zu bilden; j. (318). Setzen des niedrigstwertigen Bits des temporären Registers gleich dem Übertragskennzeichen; k. (318). Setzen des Übertragskennzeichens gleich dem Bit 31 des Registers des ersten vorzeichenerweiterten Operandenwerts (ain), wenn der erste Operandenwert ein Doppelwort ist, ansonsten Setzen des Übertragskennzeichens gleich dem Bit 15 des ersten vorzeichenerweiterten Operandenwerts (ain), wenn der erste Operandenwert ein Wort ist, und ansonsten Setzen des Übertragskennzeichens gleich dem Bit 7 des Registers des ersten vorzeichenerweiterten Operandenwerts (ain), wenn das Register des ersten Operandenwerts ein Byte ist; l. (320). Vergleichen der niedrigstwertigen 5 Bits des zweiten Operandenwerts (bin) mit dem wert Eins, und Vergleichen des Überlaufkennzeichens mit dem Wert Eins, und wenn ein Vergleich wahr ist, dann Gehen zu Schritt m, ansonsten Gehen zu Schritt n; m. (322). Setzen des Überlaufkennzeichens gleich dem Bit 31 des ersten vorzeichenerweiterten Operandenwerts (ain) Exklusiv-ODER dem Bit 31 des temporären Bitregisters, wenn der erste Operandenwert ein Doppelwort ist, dann Gehen zu Schritt f, ansonsten Setzen des Überlaufkennzeichens gleich dem Bit 15 des ersten vorzeichenerweiterten Operandenwerts (ain) Exklusiv-ODER dem Bit 15 des temporären Registers, wenn der erste Operandenwert ein Wort ist, dann Gehen zu Schritt f, ansonsten Setzen des Überlaufkennzeichens gleich dem Bit 7 des ersten vorzeichenerweiterten Operandenwerts (ain) Exklusiv-ODER dem Bit 7 des temporären Registers, wenn der erste Operandenwert ein Byte ist, dann Gehen zu Schritt f; n. (324). Vergleichen der niedrigstwertigen 5 Bits des ersten Registers mit dem Wert Eins, und wenn dies wahr ist, dann Setzen des Überlaufkennzeichens gleich Eins und Gehen zu Schritt g, ansonsten Setzen des Überlaufkennzeichens gleich Null und Gehen zu Schritt g; o. (338). Dekrementieren des Werts im ersten Register um Eins; p. (338). Laden der ersten Vorzeichenerweiterungseinheit (101) mit einem ersten Operandenwert im temporären Register, Vorzeichenerweitern des ersten Operandenwerts auf 32 Bits (ain), Verschieben des ersten Operandenwerts um eine Bitposition nach links und Speichern desselben im temporären Register; q. (338). Laden einer zweiten 32-Bit-Vorzeichenerweiterungseinheit (102) mit Nullen, um einen zweiten Operandenwert (bin) zu bilden; r. (338). Setzen des niedrigstwertigen Bits des ersten Operandenwerts (ain) gleich einem Übertragskennzeichen; s. (338). Setzen des Übertragskennzeichens gleich dem Bit 31 des ersten vorzeichenerweiterten Operandenwerts (ain), wenn der erste Operandenwert ein Doppelwort ist, ansonsten Setzen des Übertragskennzeichens gleich dem Bit 15 des ersten vorzeichenerweiterten Operandenwerts (ain), wenn der erste Operandenwert ein Wort ist, ansonsten Setzen des Übertragskennzeichens gleich dem Bit 7 des ersten vorzeichenerweiterten Operandenwerts (ain), wenn der erste Operandenwert ein Byte ist; t. (340). Vergleichen der niedrigstwertigen 5 Bits des zweiten Operandenwerts (bin) mit dem Wert Eins, und Vergleichen des Überlaufkennzeichens mit dem Wert Eins, wobei, wenn ein Vergleich wahr ist, dann gehen zu Schritt u, ansonsten Gehen zu Schritt v; u. (342). Setzen des Überlaufkennzeichens gleich dem Bit 31 des ersten vorzeichenerweiterten Operandenwerts (ain) Exklusiv-ODER dem Bit 31 des temporären Registers, wenn der erste Operandenwert ein Doppelwort ist, dann Gehen zu Schritt v, ansonsten Setzen des Überlaufkennzeichens gleich dem Bit 15 des ersten vorzeichenerweiterten Operandenwerts (ain) Exklusiv-ODER dem Bit 15 des temporären Registers, wenn der erste Operandenwert ein Wort ist, dann Gehen zu Schritt v, ansonsten Setzen des Überlaufkennzeichens gleich dem Bit 7 des ersten vorzeichenerweiterten Operandenwerts (ain) Exklusiv-ODER dem Bit 7 des temporären Registers, wenn der erste Operandenwert ein Byte ist, dann Gehen zu Schritt v; v. (344). Vergleichen der niedrigstwertigen 5 Bits des ersten Registers mit dem Wert Eins, und wenn dies wahr ist, dann Setzen des Überlaufkennzeichens gleich Eins, ansonsten Setzen des Überlaufkennzeichens gleich Null; und w. (350). Laden eines Zielregisters mit den niedrigstwertigen 8 Bits des temporären Registers, wenn der erste Operandenwert ein Byte ist, ansonsten Laden des Zielregisters mit den niedrigstwertigen 16 Bits des temporären Registers, wenn der erste Operandenwert ein Wort ist, ansonsten Laden des Zielregisters mit den niedrigstwertigen 32 Bits des temporären Registers, wenn der erste Operandenwert ein Doppelwort ist, dann Beenden der Prozedur.
DE69629646T 1995-05-26 1996-05-16 Verfahren zur durchführung einer "rotate through carry" operatiion Expired - Fee Related DE69629646T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/452,162 US5682339A (en) 1995-05-26 1995-05-26 Method for performing rotate through carry using a 32 bit barrel shifter and counter
US452162 1995-05-26
PCT/US1996/007092 WO1996037819A1 (en) 1995-05-26 1996-05-16 Method for performing a 'rotate through carry' operation

Publications (2)

Publication Number Publication Date
DE69629646D1 DE69629646D1 (de) 2003-10-02
DE69629646T2 true DE69629646T2 (de) 2004-06-03

Family

ID=23795313

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69629646T Expired - Fee Related DE69629646T2 (de) 1995-05-26 1996-05-16 Verfahren zur durchführung einer "rotate through carry" operatiion

Country Status (5)

Country Link
US (1) US5682339A (de)
EP (1) EP0772809B1 (de)
KR (1) KR970705074A (de)
DE (1) DE69629646T2 (de)
WO (1) WO1996037819A1 (de)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5896305A (en) * 1996-02-08 1999-04-20 Texas Instruments Incorporated Shifter circuit for an arithmetic logic unit in a microprocessor
US6122651A (en) * 1998-04-08 2000-09-19 Advanced Micro Devices, Inc. Method and apparatus for performing overshifted rotate through carry instructions by shifting in opposite directions
US6975679B2 (en) 2001-06-01 2005-12-13 Microchip Technology Incorporated Configuration fuses for setting PWM options
US7467178B2 (en) 2001-06-01 2008-12-16 Microchip Technology Incorporated Dual mode arithmetic saturation processing
US6934728B2 (en) 2001-06-01 2005-08-23 Microchip Technology Incorporated Euclidean distance instructions
US6937084B2 (en) 2001-06-01 2005-08-30 Microchip Technology Incorporated Processor with dual-deadtime pulse width modulation generator
US6985986B2 (en) 2001-06-01 2006-01-10 Microchip Technology Incorporated Variable cycle interrupt disabling
US6976158B2 (en) 2001-06-01 2005-12-13 Microchip Technology Incorporated Repeat instruction with interrupt
US20020184566A1 (en) 2001-06-01 2002-12-05 Michael Catherwood Register pointer trap
US7020788B2 (en) 2001-06-01 2006-03-28 Microchip Technology Incorporated Reduced power option
US6952711B2 (en) 2001-06-01 2005-10-04 Microchip Technology Incorporated Maximally negative signed fractional number multiplication
US7003543B2 (en) 2001-06-01 2006-02-21 Microchip Technology Incorporated Sticky z bit
CN114528023A (zh) * 2015-04-24 2022-05-24 优创半导体科技有限公司 具有寄存器直接分支并使用指令预加载结构的计算机处理器

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS52116131A (en) * 1976-03-26 1977-09-29 Toshiba Corp Microprogram instruction control unit
US4538239A (en) * 1982-02-11 1985-08-27 Texas Instruments Incorporated High-speed multiplier for microcomputer used in digital signal processing system
US5155820A (en) * 1989-02-21 1992-10-13 Gibson Glenn A Instruction format with designations for operand lengths of byte, half word, word, or double word encoded in address bits
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
US5138570A (en) * 1990-09-20 1992-08-11 At&T Bell Laboratories Multiplier signed and unsigned overflow flags
JPH05134848A (ja) * 1991-03-06 1993-06-01 Fujitsu Ltd 中央処理装置のデータシフト回路
US5218564A (en) * 1991-06-07 1993-06-08 National Semiconductor Corporation Layout efficient 32-bit shifter/register with 16-bit interface
US5189319A (en) * 1991-10-10 1993-02-23 Intel Corporation Power reducing buffer/latch circuit
DE69229324T2 (de) * 1991-10-29 2000-02-24 Advanced Micro Devices Inc Arithmetik-Logik-Einheit
US5254888A (en) * 1992-03-27 1993-10-19 Picopower Technology Inc. Switchable clock circuit for microprocessors to thereby save power
US5379240A (en) * 1993-03-08 1995-01-03 Cyrix Corporation Shifter/rotator with preconditioned data
US5559730A (en) * 1994-02-18 1996-09-24 Matsushita Electric Industrial Co., Ltd. Shift operation unit and shift operation method
US5404473A (en) * 1994-03-01 1995-04-04 Intel Corporation Apparatus and method for handling string operations in a pipelined processor
US5555202A (en) * 1994-12-05 1996-09-10 Cirrus Logic, Inc. Low-power, high-performance barrel shifter

Also Published As

Publication number Publication date
EP0772809A1 (de) 1997-05-14
KR970705074A (ko) 1997-09-06
US5682339A (en) 1997-10-28
WO1996037819A1 (en) 1996-11-28
DE69629646D1 (de) 2003-10-02
EP0772809B1 (de) 2003-08-27

Similar Documents

Publication Publication Date Title
DE69233361T2 (de) Ein-Chip-Mikrocomputer
DE69030128T2 (de) Signalprozessor
DE19735348B4 (de) Vektorprozessor zur Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern und zugehöriges Verfahren zum Betreiben desselben
DE2837852C2 (de) Prozessor zum gleichzeitigen Ermitteln und Bereitstellen zweier Adressen von Befehls- und/oder Datenwortregistern eines bereichsweise adressierbaren Hauptspeichers
DE69627807T2 (de) Datenprozessor zum gleichzeitigen Dataladen und Durchführung einer multiplizier-addier Operation
DE68927911T2 (de) Datenverarbeitungssystem
DE69629646T2 (de) Verfahren zur durchführung einer "rotate through carry" operatiion
DE68929483T2 (de) Datenprozessor mit einer Befehlseinheit, die einen Cachespeicher und einen ROM aufweist.
DE69024068T2 (de) Verfahren und Datenverarbeitungseinheit zur Pipeline- Verarbeitung von Register- und Registeränderungs- Spezifizierern in dem gleichen Befehl
DE3851746T2 (de) Sprungvorhersage.
DE3854701T2 (de) Methode und Vorrichtung zum Verändern von Mikrobefehlen mit einer Makrobefehlspipeline.
DE68927855T2 (de) Verfahren und Datenverarbeitungseinheit zur Vorverarbeitung von implizierten Spezifizierern in einem Pipeline-Prozessor
DE60032794T2 (de) Bit-dekompression-verarbeitung mit einem vielseitigen ausrichtungswerkzeug
DE2900324A1 (de) Mikroprogrammierbare arithmetische fliesskommaeinheit
DE19540102A1 (de) Gleitkomma-Recheneinheit mit einer Logik für eine Vierfach-Präzisions-Arithmetik
DE102018125232A1 (de) Einrichtung und Verfahren für komplexe Multiplikation und Akkumulation
DE2835095A1 (de) Gekoppeltes, mikroprogrammiertes prozessorsystem
CH644461A5 (de) Digitale multipliziereinrichtung.
DE3786633T2 (de) Zweiunddreissig-Bit-Bitscheibe.
DE10025249C2 (de) Verfahren zur Ausführung sowohl von Divisions- als auch Restbefehlen und Datenverarbeitungsgerät, welches das Verfahren anwendet
DE19634031A1 (de) Prozessor mit Pipelining-Aufbau
DE19738542A1 (de) Datenverarbeitungseinrichtung
DE2830334C2 (de)
DE19746054B4 (de) Verfahren und Vorrichtung zum Ausführen einer Operation mit doppelter Genauigkeit
DE3314035C2 (de)

Legal Events

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