DE4010895A1 - Mikroprozessor mit befehlsdecodiereinrichtung - Google Patents

Mikroprozessor mit befehlsdecodiereinrichtung

Info

Publication number
DE4010895A1
DE4010895A1 DE19904010895 DE4010895A DE4010895A1 DE 4010895 A1 DE4010895 A1 DE 4010895A1 DE 19904010895 DE19904010895 DE 19904010895 DE 4010895 A DE4010895 A DE 4010895A DE 4010895 A1 DE4010895 A1 DE 4010895A1
Authority
DE
Germany
Prior art keywords
field
stage
microprocessor
microcode
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE19904010895
Other languages
English (en)
Other versions
DE4010895C2 (de
Inventor
Beatrice Fu
Patrick P Gelsinger
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of DE4010895A1 publication Critical patent/DE4010895A1/de
Application granted granted Critical
Publication of DE4010895C2 publication Critical patent/DE4010895C2/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
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • G06F9/262Arrangements for next microinstruction selection
    • G06F9/268Microinstruction selection not based on processing results, e.g. interrupt, patch, first cycle store, diagnostic programs
    • 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/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

Die Erfindung bezieht sich auf eine Befehlsdecodiereinrichtung und insbesondere eine solche zur Verwendung in Mikroprozesso­ ren.
Mikroprozessoren sowie auch andere Computer benötigen häufig einen Decodierer zum Decodieren von Befehlen auf Makroniveau. Im Ergebnis wird der Befehl von dem Decodierer interpretiert, und der Decodierer bestimmt, was zur Ausführung des Befehls im Prozessor zu geschehen hat. In vielen Fällen enthält der Mi­ kroprozessor einen Speicher zur Speicherung von Befehlen auf Mikroniveau (Mikrocode), und der Decodierer liefert einen Hinweis auf den Mikrocode.
Bei einigen Mikroprozessoren sind Makroniveaubefehle von fe­ ster Länge (z.B. 32 Bits), während die Befehle in anderen Prozessoren unterschiedliche Längen haben können. Es ist we­ sentlich leichter, Befehle mit fester Länge zu decodieren, da der Decodierer weiß, wo beispielsweise gewisse Felder im Be­ fehl zu finden sind. Im Gegensatz dazu kann bei Befehlen vari­ abler Länge ein unmittelbares (Sofort-)Datenfeld vorhanden sein oder nicht, und sein Ausgangspunkt im Befehl ändert sich.
Der Intel 386 Mikroprozessor ist ein Beispiel für einen Mikro­ prozessor mit Befehlen bzw. Anweisungen variabler Länge. Ein Befehl kann ein Byte breit sein, wie einige Übertragungsbefeh­ le. Befehle können bis zu acht Bytes breit sein (ohne Präfix). Mit einem Befehlspräfix oder override kann die Befehlslänge wesentlich größer (z.B. 15 Bytes) sein. Ein einziger Decodie­ rer, der in der Lage ist, diese Befehle variabler Länge in einem einzigen Durchgang zu decodieren, wäre relativ kompli­ ziert und würde, was vielleicht noch wichtiger ist, einen relativ großen Substratraum beanspruchen.
Im Intel 386 werden die Befehle variabler Längen über den Verlauf einiger Computerzyklen decodiert. Zunächst wird das Befehlspräfix geprüft, gefolgt von anderen Feldern. Die Aus­ führung der Befehle beginnt nach der vollständigen Decodie­ rung. Bei vielen Befehlen benötigt der Intel 386 jedoch mehre­ ren Zyklen zum Decodieren; beispielsweise erfordert der Befehl LADEN vier Zyklen zur Befehlsdecodierung SPEICHERN bedingt zwei Zyklen; SPRINGEN drei bis 4,25 Zyklen. Durchschnittlich sind etwa drei Zyklen erforderlich, bevor ein Befehl vollstän­ dig decodiert ist. Wie zu sehen sein wird, werden diese Zeiten aufgrund des Pipelinebetriebs und der Art der Decodierung des Befehls wesentlich verkürzt. Die Decodierzeit sinkt auf einen Mittelwert von etwa 1,8 Zyklen.
Die Erfindung ist zur Verwendung in einem Mikroprozessor vor­ gesehen, der eine verbesserte Version des Intel 386 Mikropro­ zessors ist. Letzterer ist in zahlreichen Druckschriften be­ schrieben. Die Programmierung dieses Mikroprozessors ist in "Programming the 80386" von Crawford und Gelsinger, publiziert von SYBEX, 1987 beschrieben.
Der erfindungsgemäße Mikroprozessor hat Speichermittel zur Speicherung vorausgeholter Befehle und Decodiermittel zum Decodieren von Befehlen unterschiedlicher Längen. Erfindungs­ gemäß weisen die Decodiermittel zwei Stufen oder Sektionen auf. Die erste der Sektionen decodiert ein erstes Feld aus einem Befehl gleichzeitig während der Zeit, in der die zweite der Sektionen die Ausführung auf der Basis eines zweiten Fel­ des des vorhergehenden Befehls aufbaut. Anders ausgedrückt, die ersten und zweiten Sektionen führen eine Pipelineoperation an den Befehlen aus und verarbeiten sie parallel.
Bei einem bevorzugten Ausführungsbeispiel der Erfindung deco­ diert die erste Sektion den OP-Code und den Adreßmodus dar­ stellende Bits, Skalierfaktor und Basis und Indexregister. Die zweite Sektion steuert die Verwendung der Adreßverschiebung und des sofortigen Datenfeldes. Die erste Sektion erzeugt Zeiger auf die Speichermittel, was es jeder der Sektionen ermöglicht, die richtigen Felder der Befehle aufzunehmen. Jede Sektion kann irgendein Byte aus dem Speicher aufnehmen.
Weitere Aspekte und Vorteile der Erfindung ergeben sich aus der nachfolgenden Beschreibung eines Ausführungsbeispiels. In der Zeichnung zeigen:
Fig. 1 ein generelles Blockdiagramm des Mikroprozessors, in welchem die Erfindung verwendet wird;
Fig. 2 ein Blockschaltbild der erfindungsgemäßen Befehls­ decodiereinheit und deren Verbindung mit dem Vor­ ausholer und einer Segmentierungseinheit;
Fig. 3 das allgemeinste Format eines mit der erfindungsge­ mäßen Einrichtung decodierten Befehls;
Fig. 4 ein genaueres Diagramm mit dem Format eines Befehls unter Darstellung von Befehlsfeldern variabler Längen;
Fig. 5 eine tabellarische Ansicht des Zeitgabe- und Pipe­ linestroms bei der Erfindung; und
Fig. 6 ein genaueres Diagramm der Zeitgabe und des Be­ fehlsstroms in Zuordnung zur Erfindung.
Beschrieben wird eine Befehlsdecodiereinheit für einen Mikro­ prozessor, die besonders zweckmäßig in Verbindung mit voraus­ geholten Befehlen ist. In der folgenden Beschreibung werden zahlreiche Einzelheiten, beispielsweise die spezielle Anzahl von Bits usw. angegeben, um die Erfindung leichter verständ­ lich zu machen. Es ist jedoch für den Fachmann klar, daß die Erfindung auch ohne diese besonderen Einzelheiten realisierbar ist. In anderen Fällen sind bekannte Verarbeitungsmethoden, Decodiermethoden und Schaltungen nicht im einzelnen darge­ stellt und beschrieben, um die Erfindung nicht mit unnötigen Einzelheiten zu belasten.
Die Erfindung war das Resultat der Konstruktion des nächsten Mikroprozessors in der Intel 286 und 386 Mikroprozessorfami­ lie. Aus diesem Grunde scheint es im Interesse eines besseren Verständnisses für die Bedeutung der vorliegenden Erfindung zweckmäßig, den Intel 386 Mikroprozessor kurz zu erläutern. Außerdem stehen zahlreiche Publikationen über diesen Mikropro­ zessor zur Verfügung; dessen Betrieb ist beschrieben in "Pro­ grammieren des 80386" von Crawford und Gelsinger, publiziert von SYBEX 1987.
Überblick über den Mikroprozessor, in welchem die Erfindung realisiert ist
Der Mikroprozessor, in welchem die Erfindung verwirklicht ist, ist ein 32-Bit-Mikroprozessor, der mit komplementärer Metall­ oxidhalbleiter (EMOS) -Technologie hergestellt ist. Er weist auf einem einzigen Substrat nicht nur diejenigen Komponenten auf, die einer Zentraleinheit (CPU) zugeordnet sind, sondern zusätzlich auch einen Cachespeicher und eine Gleitpunktein­ heit. Teilweise wegen der durch die neue Befehlsdecodierein­ heit erzielten Verbesserungen kann eine Befehlsausführung für viele Befehle in einem Zyklus realisiert werden.
Im folgenden wird auf Fig. 1 Bezug genommen, in der die Haupt­ komponenten des Mikroprozessors, beispielsweise die Businter­ faceeinheit 10 dargestellt sind. Diese Einheit bildet die notwendige Schnittstelle zwischen den internen Bussen des Mikroprozessors insbesondere des Cachespeichers 11 und des Vorausholers 12, und den externen Bussen, die für die Datenbe­ schaffung aus dem externen Datenspeichersystem verantwortlich sind. Es werden externe 32-Bit-Adreß- und 32-Bit-Datenbusse verwendet. Das spezielle Interface 10, welches in dem be­ schriebenen Ausführungsbeispiel des Mikroprozessors verwendet wird, ist für die Erfindung unkritisch. Für die Zwecke der Erfindung sollte beachtet werden, daß vorausgeholte Befehle, die im Vorausholer 12 gespeichert werden, zu letzterem von der Businterfaceeinheit 10 oder von einem Cachespeicher 11 über­ tragen werden können.
Eine Seitenbildungseinheit 13 und eine Segementierungseinheit 15 sind ähnlich denjenigen im Intel 386 aufgebaut. Die Zeitga­ be wurde jedoch geändert, um eine Ein-Takt-Ausführung zu un­ terstützen. Die Verbindung einer Segmentierungseinheit mit dem Vorausholer 12 und andere Beziehungen mit der Befehlsdecodier­ einheit 14 werden weiter unten in Verbindung mit Fig. 2 be­ schrieben.
Generell decodiert die Befehlsdecodiereinheit die einlaufende Befehle; wie weiter unten zu sehen sein wird, unterscheidet sie sich von der Befehlsdecodiereinheit des Intel 386 darin, daß sie eine parallele Decodierung und Pipelineoperation be­ wirkt. Ihre Implementierung erfolgt mit zwei Stufen oder Sek­ tionen der Pipelinedecodierung, was zu einem decodierten Be­ fehl pro Computer-Taktzyklus für die meisten Befehle führt. Die erste Sektion decodiert grundsätzlich den OP-Code Adreß­ modus, Skalierfaktor und die Basis- und Indexregisterbits (letztere werden teilweise als Register- und Adreßmodus-Spezi­ fizierer bezeichnet), während die zweite Stufe in erster Linie die Verwendung der Adreßverschiebung oder unmittelbare (So­ fort-)Datenfelder steuert.
Die Steuereinheit 19 enthält einen Speicher, der die Mikroco­ debefehle (Mikrocode) für den Mikrocomputer speichert. Er steuert gemeinsam mit der Befehlsdecodiereinheit den Mikropro­ zessor, da die erste Linie bzw. Zeile (line) des Mikrocodes von der Befehlsdecodiereinheit 14 geliefert wird. Die Steuer­ einheit 19 ist für die Befehlsbereichsgrenzenverarbeitung, beispielsweise die Unterbrechungs/Ausnahme-Entscheidung und das Stoppen der Befehlsdecodiereinheit 14 - wenn nötig - ver­ antwortlich. Die Steuereinheit 19 handhabt die meisten der Einfrierbedingungen, beispielsweise einen Cachespeicherfehl­ versuch usw.
Die Datenwegeinheit 17 ist der Hauptausführungsdatenweg des Mikroprozessors. Sie enthält die arithmetische Logikeinheit, Registerdatei, Trommelshifter, konstanten ROM und Fehlerkenn­ zeichen.
Der Mikroprozessor weist auch eine Gleitpunkteinheit 18 auf, die eine Logik zur Ausführung der Gleitpunktbefehle enthält.
Beschreibung des Ausführungsbeispiels der Erfindung
Die Befehlsdecodiereinheit 14 der Fig. 1 ist in Fig. 2 zwi­ schen den gestrichelten Linien 46 und 47 gezeigt. Die Einheit und eine bestimmte Schaltung im Vorausholer 12 arbeiten zusam­ men und führen zu den durch die Erfindung erreichten Vortei­ len.
Der Vorausholer 12 weist drei Hauptabschnitte auf: Das Regi­ ster 26, den Multiplexer 27 und eine zugehörige Logik 28. Das Register oder Latch 26 erhält vorausgeholte Befehle entweder vom Cachespeicher oder von der Businterfaceeinheit. Dies ist in Fig. 2 allgemein durch den Bus 48 veranschaulicht. Das Register 26 hat bei dem beschriebenen Ausführungsbeispiel eine Breite von 32 Bytes. Die im Register 26 gespeicherten Befehle können entweder zum Bus 29 (K 1Q) oder zum Bus 30 (K 2Q) über­ tragen werden. Diese Befehle werden über den Multiplexer 27 angekoppelt. Benachbarte drei Bytes im Register 26 können zum Bus 29 übertragen werden. Benachbarte vier Bytes können zum Bus 30 übertragen werden.
Von einer Codesteuerschaltung 36 auf Leitungen 44 gegebene Signale bilden einen Zeiger oder einen Hinweis (K 1P) auf das erste Byte des zum Bus 29 übertragenen 24-Bit-Feldes. Die "(5)" hinter "K 1P" zeigt an, daß fünf Bits zur Bezeichnung dieses Zeigers verwendet werden. Diese fünf Bits werden zur Bezeichnung eines Einzelbytes der im Register 26 gespeicherten 32 Bytes benötigt. Ein zweiter Zeiger (K 2P), der an den Vor­ ausholer 12 über Leitungen 43 angelegt wird, weist auf das erste Byte des mit dem Bus 30 gekoppelten 32-Bit-Feldes hin. Wie weiter unten beschrieben werden wird, können sich die an die Busse 29 und 30 übertragenen Felder überlappen, d.h. die ursprünglich zum Bus 29 während eines Taktzyklus übertragenen Bytes können in einem nachfolgenden Taktzyklus an den Bus 30 angelegt werden.
Die fünf von dem Vorausholer 12 über Leitungen 41 übertragenen Bits (K 1PJ) liefern einen Sprunghinweis bzw. -zeiger für die Codesteuerschaltung 36. Dies geschieht, nachdem neue Befehle (einem Sprungbefehl folgend) in das Register 26 geladen worden sind. Dieser Zeiger zeigt der Steuerschaltung 36 das Startbyte der neuen Befehle an. Die Signale auf Leitungen 42 (K 1V und K 2V) geben an, ob die K 1Q-Daten und K 2Q-Daten gültig sind. Die Signale auf Leitungen 40 (iS×8 und iZ×16) sind Steuersignale zur Steuerung der Kopplung von unmittelbaren Datenfeldern.
Der Decodierer 31 ist eine übliche programmierbare Logikanord­ nung (PLA) (mit Logikgattern), die zur Durchführung einer üblichen Decodierung programmiert ist. Wie zu sehen sein wird, sind die OP-Code und Register und Adreßmodus-Spezifizierer stets vom Register 26 mit dem Decodierer 31 gekoppelt (ausge­ nommen dann, wenn der Befehl ein Präfix enthielt). Aus diesen Daten bestimmt der Decodierer 31 über die Codesteuerschaltung 36 die vom Decodierer 31 tatsächlich benötigte Länge der Fel­ der und damit den Punkt, auf den der Zeiger für den K 2Q-Bus innerhalb des Registers 26 hinweisen muß. Der Decodierer nimmt stets 24 Bits auf, selbst wenn sich ein 8-Bit-Befehl im Regi­ ster 26 befindet. Der Decodierer 31 koppelt Signale zur Aus­ führungsaufbaustufe 34, welche den zur Erfüllung des Befehls benötigten Adreßtypen identifiziert. Wie zu sehen sein wird, arbeiten der Decodierer 31 und die Ausführungsaufbaustufe 34 parallel, wobei jedoch der Decodierer 31 an einem Befehl ar­ beitet, während die Stufe 34 an dem vorhergehenden Befehl arbeitet.
Die Latch-Schaltungen 35, die mit dem Ausgang des Decodierers 31 gekoppelt sind, ermöglichen es, daß aus der Decodierung resultierende Signale durch die Latch-Schaltungen 35 getaktet werden, wobei nachfolgende "Decodierung" von der Stufe 34 durchgeführt wird. Der Latchausgang enthält die speziellen ALU-Steuersignale sowie die Aktivierungssigmale für das Quel­ len/Bestimmungsregister. Ein Ausgang der Latchschaltungen enthält einen Einsprungpunkt (Verweis) auf die "erste" Linie des Mikrocode im Mikrocodespeicher der Einheit 19.
In Wirklichkeit weist der Einsprungpunkt jedoch auf die dritte effektive Linie des Mikrocode hin, da der Decodierer 31 mit dem Latch 35 die ersten beiden Linien bzw. Zeilen des Mikroco­ de liefert. Beispielsweise findet dies bei einem Speicherbe­ fehl oder beim Aufbau einer Adreßberechnung während eines Zyklus durch den Decodierer 31 statt. Während des folgenden Taktzyklus wird die zweite Linie des Mikrocode vom Latch 35 gebildet, um einen Buszyklus auszulösen (empfangen vom Spei­ cher). Beim nächsten Taktzyklus wird die dritte Linie bzw. Zeile des Codes vom Mikrocodespeicher gebildet (Steuereinheit 19 der Fig. 1). Diese dritte Linie des Code wird auf der Basis eines Einsprungpunkts ausgewählt, der von den Latch­ -Schaltungen 35 zu demjenigen Zeitpunkt geliefert wird, wenn die Latchschaltung die erste Linie des Mikrocodes liefert.
Nach der beschriebenen Implementierung benutzen alle Befehle wenigstens eine Linie bzw. Zeile des Mikrocode aus der Steuer­ einheit 19. In einigen Fällen zeigt dieser Microcode einfach die Beendigung eines Befehlszyklus an. In vielen Fällen ist die erste Linie bzw. Zeile des Mikrocodes vom Decodierer 31 auch eine "NOOP".
Die Ausführungaufbaustufe 34, die als zweite Decodierstufe angesehen werden kann, steuert in erster Linie die Adreßerzeu­ gung und insbesondere die Folge der Adreßerzeugung. Aus diesem Grunde ist sie in erster Linie als Zustandsmaschine implemen­ tiert. Die aktuellen Adreßberechnungen treten innerhalb der Segmentierungseinheit 15 auf. Der Decodierer 31 liefert die Linearadreßerfordernisse an die Stufe 34 und hieraus bestimmt die Stufe 34, wie viele Zyklen für den Befehl benötigt werden. Generell wird ein Zyklus benötigt, wenn es nur eine Basis und Verschiebung gibt, und zwei Zyklen werden benötigt, wenn es eine Basis, einen Faktor für skalierte Indexadresse und Ver­ schiebung gibt. Ein Ladesignal und Feldgrößensignale werden über die Steuerschaltung 36 an die Segmentierungseinheit 15 angelegt.
Die Codesteuereinheit 36 weist eine Zustandsmaschine, einen Addierer und einen Zähler mit zugehöriger Logik auf. Signale werden vom Decodierer 31 zur Schaltung 36 übertragen, um den decodierten Befehlstyp anzugeben. Aus dieser Information be­ stimmt die Codesteuereinheit 36 mittels der Addierer und Zäh­ ler, worauf die Zeiger K 1P und K 2P hinweisen sollen. Die von der Schaltung 36 durchgeführte Steuerung wird deutlicher, wenn man die Zeiger in Verbindung mit Fig. 6 betrachtet.
Die Codesteuerschaltung 36 führt auch andere Funktionen in dem beschriebenen Ausführungsbeispiel durch, so beispielsweise Verstoßbits, welche Segmentierungsverstöße oder andere vom Vorausholer 12 festgestellte und in die Steuereinheit 36 ge­ koppelte Verstöße angeben. Die Steuerschaltung 36 kann in einigen Fällen auch die Art des Verstoßes (violation) bestim­ men.
Die Pipeline-Steuerschaltung 37 ist ebenfalls eine Zustandsma­ schine, welche die gesamte Steuerung der Pipelineoperation zur Befehlsdecodiereinheit bewirkt. Diese Schaltung stellt aus den vom Decodierer 31 an sie angelegten Signalen fest, ob ein Befehl ein Präfix enthält, und sie bestimmt danach die Anzahl von zur Verarbeitung des speziellen Befehls benötigten zusätz­ lichen Zyklen. Wie in Verbindung mit Fig. 4 noch genauer be­ schrieben werden wird, können mehrere Zyklen benötigt werden. Die Schaltung 34 steuert diese zusätzlichen Zyklen. Die Pipe­ line-Steuerschaltung 37 liefert auf Leitungen 49 ein "Vorrück­ signal" an den Decodierer 31 und die Ausführaufbaustufe 34, ein "flush pipeline" oder reset signal und ein Signal, das angibt, ob eine spezielle Stufe ihre Operation an einem Befehl beendet hat.
Die Gesamtschaltung der Fig. 2 ist mit gewöhnlichen Schaltun­ gen realisiert. Steuersignale, die für die Erläuterung der Erfindung nicht erforderlich sind, sind in Fig. 2 nicht darge­ stellt. Auch sind solche Funktionen nicht gezeigt, die für die Erfindung ohne Bedeutung sind (z.B. Testfunktionen).
Durch die beschriebene Einrichtung bearbeitete Befehle
Fig. 3 zeigt das generelle Format von Befehlen für den Intel 386, die in dem beschriebenen Ausführungsbeispiel des Deco­ diergeräts decodiert werden. Die Befehle umfassen einen OP-Co­ de und in einigen Fällen ein separates Adreßfeld 50 ein Ver­ schiebungsfeld 51 und ein Unmittelbar- bzw. Sofortfeld 52. Die Längen dieser Felder variieren, wie in Verbindung mit Fig. 4 erläutert werden wird. In einigen Fällen wird ein zusätzliches Präfix 55 benutzt.
In Fig. 4 ist ein typischer Befehl dargestellt. Das OP-Code­ feld kann eine Länge entweder von einem oder zwei Bytes haben. In einigen Fällen besteht der Gesamtbefehl aus nur einem ein­ zigen Byte, wenn beispielsweise die ersten fünf Bits eine Übertragung und die letzten drei Bits eine Registerbezeichnung angeben. Gemäß Darstellung in Fig. 4 hat ein typischer OP-Code zwei Bytes 57 und 58. Das Adreßmodus-Byte 59 gibt den Adreßmo­ dus und "Register/Speicher" an; Byte 60 enthält den Skalenfak­ tor für skalierte Indexadressiermoden (SS), das als ein Index­ register (Index) zu verwendende allgemeine Register und das als Basisregister zu verwendende allgemeine Register. Die Bytes 59 und 60 werden als Register- und Adreßmodus-Spezifi­ zierer bezeichnet. Das Feld 61 ist die Adreßverschiebung, und dieses Feld braucht nicht in allen Befehlen enthalten zu sein, oder es könnte 1, 2 oder 4 Bytes lang sein. In ähnlicher Weise braucht das Sofortdatenfeld 62 nicht in allen Befehlen vorhan­ den zu sein, und dieses Feld kann 1, 2 oder 4 Bytes lang sein. Andere Änderungen können auftreten, beispielsweise können Segmentregisterspezifizierer für gewisse Register innerhalb der OP-Codefelder auftreten, oder Bits können für bedingte Befehle zum Spezifizieren einer anstehenden Bedingung oder einer negierten Bedingung verwendet werden.
In Fig. 4 ist wichtig, daß die ersten drei Bytes aller Befehle bzw. Instruktionen (ausgenommen derjenigen mit einem Präfix) ausreichend Informationen enthalten, um den angeforderten Befehl und die gesamte Länge des Befehls zu bestimmen. In jedem Falle werden diese drei Bytes an den Decodierer 31 ange­ legt. Aus den restlichen Bytes jedes Befehls kann von der Segmentiereinheit 15 der Fig. 2 eine Adresse berechnet werden. Die ersten drei Bytes enthalten die vom Decodierer 31 benötig­ ten Informationen zur Bestimmung des Adreßmodus und der Anzahl von zur Berechnung der Adressen benötigten Zyklen. Wie oben erwähnt, sind beispielsweise allgemein zwei Zyklen erforder­ lich, wenn eine Basis, ein Index und eine Verschiebung vorhan­ den sind.
Zeitgabediagramme für Fig. 5 und 6
Die generelle Pipelineinformation bei der erfindunsgemäßen Anordnung läßt sich anhand von Fig. 5 verständlich machen. In der obersten Zeile der Tabelle ist die Nummer des Zyklus ange­ geben. Jeder Zyklus entspricht einem Computer-Taktzyklus. So können die internen Taktzyklen für den Mikroprozessor mit einer Frequenz von 25 MHz auftreten. Die linke Spalte gibt die Stufe in der Pipelineoperation an. Die in der Liste enthalte­ nen Zahlen stellen die Befehlsnummern dar. So wird beispiels­ weise während des Zyklus 1 Befehl 11 vom Vorausholer 12 über­ tragen, d.h. er wird an den Decodierer 31 der Fig. 2 angelegt. Während desselben Zyklus (d.h. gleichzeitig mit dieser Über­ tragung) decodiert der Decodierer 31 Befehl 10, den Befehl 11 vorausgegangenen Befehl. In ähnlicher Weise steuert während dieser Zeitperiode die Ausführungsaufbaustufe 34 der Fig. 2 die Folge von Adreßberechnungen für Befehl 9. Gleichzeitig erfolgt die Ausführung von Befehl 8 und das Rückschreiben von Befehl 7. (Nicht alle Befehle haben ein Rückschreiben; jedoch bedingen einige Einzelbytebefehle das Rückschreiben). Wie zu erkennen ist, findet während des Zyklus 2 die Übertragung des Befehls 12 in den Decodierer 31 statt, und gleichzeitig deco­ diert der Decodierer 31 den Befehl 11, und die Ausführungsauf­ baueinheit bearbeitet den Befehl 10.
Wie erwähnt, kann in einigen Fällen ein Präfix (Präfix 55 der Fig. 3) vorhanden sein. Es sei angenommen, daß der Decodierer während des Zyklus 3 beim Decodieren der ersten 24 Bits des Befehls 13 feststellt, daß ein Präfix vorhanden ist. Diese Information wird zu der Pipelinesteuerschaltung 37 übertragen, und diese Schaltung bestimmt sodann, wie viele Zyklen zur Übertragung des gesamten Präfix, OP-Code und Register und Adreßmodusspezifizierers zum Decodierer 31 erforderlich sind. Gemäß Darstellung in Fig. 5 ist angenommen, daß dies während Zyklen 3, 4 und 5 stattfindet. Die Decodierung findet während der Zyklen 4, 5 und 6 und der Ausführungsaufbau während des Zyklus 7 statt. Die Ausführung findet für diesen Befehl wäh­ rend des Zyklus 8 statt. Während der Zyklen 5 und 6 ist die Ausführungsaufbaustufe 34 unbeschäftigt; in ähnlicher Weise ist die Ausführungsstufe während der Zyklen 6 und 7 unbeschäf­ tigt.
Wie in der Tabelle weiterhin gezeigt ist, wird der Befehl 14 während des Zyklus 6 übertragen, vom Decodierer 31 während des Zyklus 7 decodiert, benötigt dann jedoch zwei Zyklen 8 und 9 für die Adressenberechnung. Dies tritt, wie erwähnt, auf, wenn die Adresse eine Basis, ein Index und eine Verschiebung ent­ hält. Da beide Zyklen benötigt werden, findet während des Zyklus 8 keine Übertragung zum Decodierer 31 statt, jedoch während des Zyklus 9, in welchem der Befehl 16 zum Decodierer übertragen wird.
In Fig. 6 ist ein Teil des Registers 26 der Fig. 2 darge­ stellt. Es sei angenommen, daß einige Befehle in diesem Regi­ ster gespeichert sind, insbesondere die Befehle 1 bis 4. Be­ fehl 1 enthält in dem beschriebenen Falle einen 2-Byte OP-Code und Register und Adreßmodusspezifizierer. (Für die Zwecke der Fig. 6 zeigt die Bezeichnung "OP" sowohl den aktuellen OP-Co­ de als auch Register und Adreßmodusspezifizierfelder der Fig. 4 an.) Befehl 1 hat auch ein 8-Bit-Sofortfeld. Befehl 3 hat nur einen 8-Bit-OP-Code. Befehl 4 hat einen 24-Bit-OP-Code und ein 32-Bit-Verschiebefeld. Anfänglich weist der K 1P-Zeiger zum Vorausholer 12 (Zeiger 67) auf das erste Byte im Register 26. Die ersten 24 Bits in dem Register werden daher zum Decodierer 31 übertragen. Dieses Feld ist rechts vom Zyklus 1 durch die Ziffer 68 angegeben. Der Decodierer 31 stellt beim Decodieren dieses Feldes fest, daß die ersten 16 Bits den OP-Code dar­ stellen und liefert die geeigneten Signale zur Einleitung der Ausführung dieses Codes (generell an die Latch-Schaltung 35). Durch die Codesteuerschaltung 26 wird festgestellt, daß der 1K 2P-Zeiger 69 auf den Beginn des Sofortfeldes im Befehl 1 zeigen sollte. Dieser Zeiger bewirkt, daß die diesem Feld folgenden vier Bytes unter der Steuerung der Aufbaustufe 34 übertragen werden. Das Feld ist durch Klammer 70 rechts vom Zyklus 2 in Fig. 6 angegeben. Die Codesteuerschaltung 36 lie­ fert auch den Zeiger 71, so daß während des Zyklus 2 die 24 Bits, die dem Zeiger 71 folgen, zum Decodierer 31 übertragen werden. Dieses Feld ist allgemein mit der Nummer 72 bezeich­ net. Wiederum ist zu beachten, daß 8 Bits des Sofortfeldes des Befehls 2 zum Decodierer übertragen werden; diese Bits werden jedoch in Wirklichkeit ignoriert. Während des nächsten Zyklus wird das gesamte Sofortfeld für Befehl 2 übertragen, da der Zeiger 73 auf den Beginn dieses Feldes gesetzt ist. (Verschie­ befelder werden zur Segmentierungseinheit und Sofortfelder innerhalb der Cacheeinheit übertragen.) Das Feld für Zyklus 3 ist mit der Nummer 76 gezeigt. Die Steuerschaltung 36 liefert als nächstes den Zeiger 74 und bewirkt, daß die 24 Bits, die dem Zeiger 74 folgen, während des Zyklus 3 an den Decodierer 31 übertragen werden. Da dieser Befehl kein Sofortfeld oder Verschiebefeld hat, wird kein 1K 2P-Zeiger für Befehle 3 benö­ tigt. Dies ist allgemein durch die Nummer 75 für den Zyklus 4 angegeben. Dieser Prozeß setzt sich gemäß Darstellung in Fig. 6 für Befehl 4 fort, wobei die Steuerschaltung 36 die Zeiger liefert und die geeigneten Felder übertragen werden.
Im unteren Teil der Fig. 6 ist die Ausführung der Befehle gezeigt. Während des Zyklus 3 wird Befehl 1 ausgeführt. Wäh­ rend des Zyklus 4 wird Befehl 4 ausführt usw.

Claims (14)

1. Mikroprozessor mit einem Speichermitteln (12, 26) zur Speicherung vorausgeholter Befehle und Decodiermitteln (14) zum Decodieren der Befehle aus dem Speicher, wobei die Befehle unterschiedliche Länge haben, dadurch gekennzeichnet, daß die Decodiereinrichtung wenigstens zwei Sektionen (31, 34) hat, von denen die erste (31) ein erstes Feld eines Befehls zur gleichen Zeit decodiert, während die zweite (34) die Aus­ führung auf der Basis eines zweiten Feldes des vorausgegange­ nen Befehls aufbaut, daß die erste Sektion (31) derart mit dem Speicher (12; 26) gekoppelt ist, daß sie das erste Befehlsfeld aus dem Speicher aufnehmen kann, daß die zweite Sektion derart angeordnet ist, daß sie den Ausführungsaufbau mit dem zweiten Feld des vorhergehenden Befehls aus dem Speicher bewirkt und daß die erste Sektion einen ersten Zeiger zur Auswahl des zweiten Feldes aus dem Speicher an den Speicher anlegt.
2. Mikroprozessor nach Anspruch 1, dadurch gekennzeichnet, daß die erste Sektion (31, 36) einen zweiten Zeiger an die Speichermittel (12) zur Auswahl des ersten Feldes des nächsten Befehls anlegt.
3. Mikroprozessor nach Anspruch 1 oder 2, dadurch gekenn­ zeichnet, daß das erste Feld einen OP-Code und Register und Adreßmodusspezifizierer enthält.
4. Mikroprozessor nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß die zweite Sektion (34) so ausgebildet ist, daß sie Adreßberechnungen sequentiell ordnet.
5. Mikroprozessor nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß der Mikroprozessor Mikrocode verwendet und einen Speicher zur Speicherung wenigstens eines Teils des Mikrocodes aufweist und daß die erste Sektion einen Verweis (look-up) für den Mikrocode bildet.
6. Mikroprozessor nach Anspruch 5 dadurch gekennzeichnet, daß die erste Sektion wenigstens eine Linie oder Zeile des Mikrocode liefert.
7. Mikroprozessor nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, daß die erste Sektion wenigstens eine erste Linie bzw. Zeile des Mikrocode für einige der Befehle und einen Verweis auf andere Mikrocode liefert.
8. Mikroprozessor mit einer Befehlsdecodiereinheit (14) und einem Register (11, 12; 26) zur Speicherung einer Vielzahl von Befehlen, die an die Decodiereinheit übertragbar sind, wobei der Mikroprozessor so ausgebildet ist, daß er Befehle unter­ schiedlicher Längen bearbeiten kann, dadurch gekennzeichnet, daß die Decodiereinheit (14) eine erste (31, 36) und eine zweite Stufe (34) aufweist, wobei die erste Stufe den OP-Code und Register und Adreßmodusspezifizierer (erstes Feld) eines der Befehle während eines ersten Computerzyklus decodiert und die zweite Stufe (34) die Verwendung der Adreßverschiebung oder ein Sofortdatenfeld (zweites Feld) des ersten Befehls während eines dem ersten Zyklus zeitlich folgenden zweiten Computerzyklus steuert.
9. Mikroprozessor nach Anspruch 8, dadurch gekennzeichnet, daß die erste Stufe so angeordnet ist, daß sie das erste Feld nach Maßgabe eines ersten Zeigers aufnimmt, und daß die zweite Stufe so angeordnet ist, daß sie die Verwendung des zweiten Feldes nach Maßgabe eines zweiten Zeigers sequentiell ordnet, wobei die ersten und zweiten Zeiger von Signalen aus der er­ sten Stufe erzeugt werden.
10. Mikroprozessor nach Anspruch 8 oder 9, dadurch gekenn­ zeichnet, daß die erste Stufe die Ausführung gewisser Befehle initiiert.
11. Mikroprozessor nach einem der Ansprüche 8 bis 10, dadurch gekennzeichnet, daß der Mikroprozessor Mikrocode benutzt und einen Speicher zur Speicherung wenigstens eines Teils des Mikrocode aufweist und daß die erste Stufe einen Verweis auf den Mikrocode über eine Latch-Schaltung (35) liefert.
12. Mikroprozessor nach Anspruch 11, dadurch gekennzeichnet, daß die erste Stufe für gewisse Befehle zwei Linien oder Zei­ len des Mikrocode liefert.
13. Mikroprozessor nach einem der Ansprüche 8 bis 12, dadurch gekennzeichnet, daß die zweite Stufe Adreßberechnungen steu­ ert.
14. Mikroprozessor nach einem der Ansprüche 8 bis 13, da­ durch gekennzeichnet, daß die zweite Stufe die Buszyklusiniti­ ierung steuert.
DE19904010895 1989-04-07 1990-04-04 Mikroprozessor mit Befehlsdecodiereinrichtung Expired - Fee Related DE4010895C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US33518689A 1989-04-07 1989-04-07

Publications (2)

Publication Number Publication Date
DE4010895A1 true DE4010895A1 (de) 1990-10-11
DE4010895C2 DE4010895C2 (de) 1998-09-24

Family

ID=23310662

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19904010895 Expired - Fee Related DE4010895C2 (de) 1989-04-07 1990-04-04 Mikroprozessor mit Befehlsdecodiereinrichtung

Country Status (5)

Country Link
JP (1) JP2847316B2 (de)
DE (1) DE4010895C2 (de)
FR (1) FR2645665B1 (de)
GB (1) GB2230116B (de)
HK (1) HK56295A (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5438668A (en) * 1992-03-31 1995-08-01 Seiko Epson Corporation System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer
EP0663083B1 (de) 1992-09-29 2000-12-20 Seiko Epson Corporation System und verfahren zur handhabung von laden und/oder speichern in einem superskalar mikroprozessor
US6735685B1 (en) 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
DE69425310T2 (de) * 1993-10-18 2001-06-13 Via Cyrix Inc Mikrosteuereinheit für einen superpipeline-superskalaren Mikroprozessor
US5794026A (en) * 1993-10-18 1998-08-11 National Semiconductor Microprocessor having expedited execution of condition dependent instructions
US5644741A (en) * 1993-10-18 1997-07-01 Cyrix Corporation Processor with single clock decode architecture employing single microROM

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4454578A (en) * 1980-05-19 1984-06-12 Hitachi, Ltd. Data processing unit with pipelined operands

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3629853A (en) * 1959-06-30 1971-12-21 Ibm Data-processing element
US4363091A (en) * 1978-01-31 1982-12-07 Intel Corporation Extended address, single and multiple bit microprocessor
US4573118A (en) * 1983-03-31 1986-02-25 Fairchild Camera & Instrument Corporation Microprocessor with branch control
US4574344A (en) * 1983-09-29 1986-03-04 Tandem Computers Incorporated Entry control store for enhanced CPU pipeline performance
US4812972A (en) * 1984-06-20 1989-03-14 Convex Computer Corporation Microcode computer having dispatch and main control stores for storing the first and the remaining microinstructions of machine instructions
JPH0776917B2 (ja) * 1984-12-29 1995-08-16 ソニー株式会社 マイクロコンピユ−タ
JP2554050B2 (ja) * 1986-02-26 1996-11-13 株式会社日立製作所 デ−タ処理方法
JPS62226231A (ja) * 1986-03-27 1987-10-05 Toshiba Corp プロセツサ
JPH0772863B2 (ja) * 1986-10-30 1995-08-02 日本電気株式会社 プログラムカウンタ相対アドレス計算方式

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4454578A (en) * 1980-05-19 1984-06-12 Hitachi, Ltd. Data processing unit with pipelined operands

Also Published As

Publication number Publication date
FR2645665A1 (fr) 1990-10-12
GB9003351D0 (en) 1990-04-11
JPH03201030A (ja) 1991-09-02
FR2645665B1 (fr) 1994-04-15
DE4010895C2 (de) 1998-09-24
HK56295A (en) 1995-04-21
JP2847316B2 (ja) 1999-01-20
GB2230116B (en) 1993-02-17
GB2230116A (en) 1990-10-10

Similar Documents

Publication Publication Date Title
DE69833008T2 (de) Prozessor mit instruktionskodierung mittels eines schablonenfeldes
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE2903349C2 (de) Prozessor und Verfahren zur Datenverarbeitung
DE3210816C2 (de)
DE2835095C2 (de) Digitale Rechenanlage mit einem ersten und mindestens einem zweiten miteinander koppelbaren mikroprogrammierten Prozessoren
DE69627807T2 (de) Datenprozessor zum gleichzeitigen Dataladen und Durchführung einer multiplizier-addier Operation
DE19914210B4 (de) Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung
DE2714805C2 (de)
DE69724771T2 (de) Zentralprozessoreinheit mit x86 und dsp kern und einem dsp funktions-dekoder zum abbilden von x 86-befehlen auf dsp-befehle
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE3424962C2 (de)
DE2855106A1 (de) Einrichtung zur durchfuehrung von instruktionsverzweigungen
DE2524046C2 (de) Elektronische Datenverarbeitungsanlage
DE4301417A1 (de)
DE2224537A1 (de) Einrichtung und verfahren zur instruktionsselektion
DE3801361A1 (de) Verfahren und einrichtung zum detektieren und fuer die spezialbehandlung von memory-mapped eingabe/ausgabereferenzen in einem pipelinemikroprozessor
DE2430127A1 (de) Einrichtung zur steuerung des speicherzugriffs konkurrierender benutzer
DE2543522A1 (de) Einrichtung in einem mikroprogramm- prozessor mit mehreren ebenen von unterbefehlsgruppen zur bedienung von peripherie-geraeten auf vorrang-basis
DE3709675A1 (de) Arithmetik-logik-einheit
DE4134392C2 (de) Verfahren und Vorrichtung zum Ungültigmachen von Befehlen in Geräten mit Parallelverarbeitung
DE2548720C2 (de) Mikroprogramm-Steuerwerk
DE3307194C2 (de)
DE4010895C2 (de) Mikroprozessor mit Befehlsdecodiereinrichtung
DE2906685C2 (de)
DE69930893T2 (de) Digitaler Signalprozessor für Daten mit grosser Bitlänge

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8125 Change of the main classification

Ipc: G06F 9/22

D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee