-
STAND DER TECHNIK
-
1. Gebiet der Erfindung
-
Die
vorliegende Erfindung betrifft Mikroprozessorsysteme. Im Besonderen
betrifft die vorliegende Erfindung die Befehlssatzerweiterung unter
Verwendung von Präfixen
bzw. Vorsätzen.
-
2. Beschreibung
des Stands der Technik
-
Die
Mikroprozessortechnologie hat sich über die Jahre hinweg sehr schnell
weiterentwickelt. Die Fortschritte auf den Gebieten der Computerarchitektur
und der Halbleitertechnologie haben viele neue Möglichkeiten für die Entwicklung
neuer Prozessoren geschaffen. Für
die Gestaltung neuer Prozessoren gibt es für gewöhnlich zwei Optionen: (1) die
Definition einer vollständig
neuen Architektur; und (2) die Erweiterung der bestehenden Architektur
unter Berücksichtigung
der neuen Merkmale. Jede Option weist Vorteile und Nachteile auf.
Wenn ein Prozessor jedoch einmal ein großes Marktsegment für sich gewonnen
hat, so bietet die Option (2) zahlreiche attraktive Vorteile. Der
Hauptvorteil der Erweiterung der bestehenden bzw. vorhandenen Architektur
ist die Kompatibilität
mit den aktuellen und älteren
Modellen. Zu den Nachteilen zählen
die Probleme, die damit verbunden sind, sich von den Einschränkungen
bzw. Beschränkungen
zu lösen,
die durch frühere Konstruktionen
auferlegt sind.
-
Neue
Prozessoren umfassen neue Merkmale in Bezug auf Hardware und auf
Software. Ein auf einem bereits bestehenden Design bzw. einer bereits
bestehenden Bauweise basierender neuer Prozessor weist für gewöhnlich einen
zusätzlichen
Befehlssatz auf, der das neue Hardwaredesign nutzen kann. Die Erweiterung eines
Befehlssatzes durch das Hinzufügen
eines neuen Befehlssatzes ist aufgrund der Beschränkungen
in Bezug auf die Codierung der Befehle jedoch eine echte Herausforderung.
-
Wenn
ein Befehlssatz zum ersten Mal entwickelt wird, werden in dem kennzeichnenden
Ansatz die Befehle mit der kleinstmöglichen Anzahl von Bits codiert,
um Platz für
zukünftige
Erweiterungen zu lassen. Im Zuge der Weiterentwicklung der Architektur
und deren zunehmenden Reife, werden immer mehr Befehle definiert.
Schließlich
gelangt man an einen Punkt, an dem kein Platz zur Codierung der
Befehle mehr vorhanden ist.
-
Eine
Lösung
dieses Problems die Beseitigung einiger der älteren Befehle. Diese Lösung verringert
jedoch die Kompatibilität
mit den älteren
Prozessoren. Es kann sein, dass für die älteren Prozessoren geschriebene
Programme in Verbindung mit dem neuen Design nicht mehr einsatz-
bzw. funktionsfähig
sind. Eine weitere Lösung
ist die Reduzierung des neuen Befehlssatzes auf lediglich eine Gruppe
von selektiven Befehlen, die nur wenig Platz in der verfügbaren Operationscodetabelle
lassen. Die Lösung
führt zu
einer schlechteren Leistung, da sie auf zahlreiche weiterentwickelte
Merkmale verzichtet, die durch das neue Design angeboten werden.
Bei einer weiteren Lösung
wird eine Gruppe von neuen. Operationscodes definiert, die sich
von den bereits bestehenden Operationscodes unterscheiden. Zu den
Problemen dieser Lösung
zählt die
Komplexität der
Schaltkreisanordnung für
die Decodierung, die eine große
Chipfläche
belegt, und ferner ist die Skalierung in Verbindung mit der Prozessorfrequenz
nicht besonders gut.
-
WO
97/22922 offenbart Erweiterungen der Befehlscodierung für eine Mikrocontroller-Architektur,
welche die Rückwärtskompatibilität aufrechterhalten
kann, so dass die Befehle des früheren
Prozessors ihre Funktionalität
behalten. Zahlreiche Operationscodes werden dadurch verfügbar gemacht,
dass ein Präfix
hinzugefügt
wird, das bestehende Operationscodes qualifiziert.
-
Auf
dem Gebiet wird somit ein effizientes Verfahren benötigt, das
einen Befehlssatz erweitert, ohne dabei die Komplexität der Hardware
zu erhöhen.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Vorgesehen
ist gemäß einem
ersten Aspekt der vorliegenden Erfindung ein Verfahren gemäß dem gegenständlichen
Anspruch 1.
-
Vorgesehen
ist gemäß einem
zweiten Aspekt der vorliegenden Erfindung ein Verfahren gemäß dem gegenständlichen
Anspruch 7.
-
Vorgesehen
ist gemäß einem
dritten Aspekt der vorliegenden Erfindung eine Vorrichtung gemäß dem gegenständlichen
Anspruch 13.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Die
Merkmale und Vorteile der vorliegenden Erfindung werden aus der
folgenden genauen Beschreibung der Erfindung deutlich.
-
In
den Zeichnungen zeigen:
-
1 eine
diagrammatische Darstellung eines Ausführungsbeispiels eines Computersystems 100 gemäß den Lehren
der vorliegenden Erfindung;
-
2 eine
diagrammatische Darstellung eines Formats eines Befehls 200 gemäß einem
Ausführungsbeispiel
der Erfindung;
-
3 eine
diagrammatische Darstellung einer Schaltung 300 zum Decodieren
eines Befehls gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung;
-
4 eine
diagrammatische Darstellung des Präfix- und Umschaltdetektors 320,
der Decodierer-Freigabeschaltung 330 und des Operationscode-Decodierers 340 gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung; und
-
5 ein
Flussdiagramm eines Prozesses P500 zur Ausführung der Befehlsdecodierung
unter Verwendung von Präfixen
gemäß einem
Ausführungsbeispiel
der Erfindung.
-
BESCHREIBUNG
DER VORLIEGENDEN ERFINDUNG
-
Offenbart
werden ein Verfahren und eine Vorrichtung zur Erweiterung eines
Befehlssatzes unter Verwendung von Präfixen. Das Verfahren verwendet
eine Gruppe von bestehenden Präfixcodes,
um einen neuen Befehlssatz zu definieren. Das Verfahren sieht einen
schnellen und effizienten Mechanismus zum Decodieren des neuen Befehlssatzes
vor.
-
In
der folgenden Beschreibung sind zahlreiche Einzelheiten zu Erläuterungszwecken
ausgeführt,
um ein umfassendes Verständnis
der vorliegenden Erfindung zu vermitteln. Für den Fachmann auf dem Gebiet
ist es jedoch offensichtlich, dass die spezifischen Einzelheiten
für die
Ausführung
der vorliegenden Erfindung nicht unbedingt erforderlich sind. In
anderen Fällen
sind allgemein bekannte elektrische Strukturen und Schaltungen in
Blockdiagrammform dargestellt, um die vorliegende Erfindung nicht
unnötig
zu verschleiern. In der folgenden Beschreibung zeigt 0x an, dass
es sich bei der folgenden Zahl um eine Zahl im sedezimalen bzw. hexadezimalen
Format handelt.
-
Die
Abbildung aus 1 zeigt ein Ausführungsbeispiel
eines Prozessors 110 gemäß den Lehren der vorliegenden
Erfindung.
-
Der
Prozessor 110 ist eine Zentraleinheit jeder Art von Architektur,
wie etwa ein CISC-Prozessor bzw. ein Prozessor für einen Computer mit komplexem
Befehlsvorrat (CISC als englische Abkürzung von Complex Instruction
Set Computer), ein RISC-Prozessor bzw. ein Prozessor für einen
Computer mit reduziertem Befehlsvorrat (RISC als englische Abkürzung von
Reduced Instruction Set Computer), ein VLIW-Prozessor bzw. ein Prozessor
mit sehr langem Befehlswort (VLIW als englische Abkürzung von
Very Long Instruction Word), eine Multi-Thread- oder eine hybride Architektur.
-
Die
Abbildung aus 1 veranschaulicht, dass der
Prozessor 110 eine Decodierungseinheit 116, eine Gruppe
von Registern 114, eine Ausführungseinheit 112 und
einen internen Bus 111 zur Ausführung von Befehlen aufweist.
Natürlich
weist der Prozessor 110 weitere Schaltkreise auf, die für das Verständnis der
vorliegenden Erfindung jedoch nicht erforderlich sind. Die Decodierungseinheit 116,
die Register 114 und die Ausführungseinheit 112 sind über den
internen Bus 111 miteinander gekoppelt. Die Decodierungseinheit 116 wird zum
Decodieren der von dem Prozessor 110 empfangenen Befehle
in Steuersignale und/oder Mikrocode-Eingangspunkte verwendet. Als
Reaktion auf diese Steuersignale und/oder Mikrocode-Eingangspunkte führt die Ausführungseinheit 112 die
entsprechenden Operationen aus. Die Decodierungseinheit 116 kann
unter Verwendung jedes beliebigen Mechanismus einer Anzahl von verschiedenen
Mechanismen implementiert werden. (z.B. einer Verweistabelle, einer
Hardware-Implementierung, einer programmierbaren Logik-Anordnung (PLA)
etc.).
-
Die
Decodierungseinheit 116 ist mit einem Befehlssatz 118 zur
Ausführung
von Operationen an skalaren und gepackten Daten dargestellt. Bei
dem Zahlenformat für
diese Operationen kann es sich um jedes geeignete Format handeln,
darunter Gleitpunktzahlen mit einfacher Genauigkeit, Gleitpunktzahlen
mit doppelter Genauigkeit und erweiterter Gleitpunktzahlen, ganzer
Zahlen mit oder ohne Vorzeichen und nichtnumerischer Daten. Der
Befehlssatz 118 weist einen bereits bestehenden Befehlssatz 118a und
einen neuen Befehlssatz 118b auf. Im Besonderen weist das
Befehlsformat des Befehlssatzes ein Präfix 118c auf.
-
BEFEHLSFORMAT
-
Die
Abbildung aus 2 zeigt ein Diagramm eines Formats
für einen
Befehl 200 gemäß einem
Ausführungsbeispiel
der Erfindung. Der Befehl 200 weist ein Präfixfeld 210,
ein Operationscodefeld 220 und Operandenspezifikationsfelder
(z.B. ModR/M, Skalierung-Index-Basis, Versatz, unverzüglich etc.)
auf. Die Operandenspezifikationsfelder sind optional und weisen
ein Feld ModR/M 230, ein Feld SIB 240, ein Versatzfeld 250 und
ein unverzügliches
Feld 260 auf.
-
Das
Präfixfeld 210 weist
eine Mehrzahl von Präfixen
auf. In einem Ausführungsbeispiel
weist das Präfixfeld 210 bis
zu vier Präfixe
auf, wobei jedes Präfix
ein Byte ist. Das Präfixfeld 210 ist
optional. Für
den erweiterten neuen Befehlssatz ist das Präfixfeld allerdings für die Codierung
der neuen Befehle erforderlich.
-
Das
Operationscodefeld 220 spezifiziert die Operation. Für den erweiterten
neuen Befehlssatz wird das Operationscodefeld 220 mit dem
Präfixfeld 210 verknüpft, um
eine Operation zu definieren. In einem Ausführungsbeispiel kann das Operationscodefeld 220 ein
oder zwei Bytes aufweisen.
-
Die
Kombination aus dem Präfixfeld 210 und
dem Operationscodefeld 220 erzeugt eine Mehrzahl verschiedenartiger
Befehlssätze.
Zu Veranschaulichungszwecken zeigt die Abbildung aus 2 nur
fünf Befehlstypen:
einen normalen Ein-Byte-Befehl 212, einen normalen Befehl
mit Präfix
als Kennzeichner 214, einen normalen Umschaltbefehl bzw.
Escape-Befehl 216, einen ersten neuen Befehlstyp 222 und
einen zweiten neuen Befehlstyp 224. Der Fachmann auf dem
Gebiet ist in der Lage, auch andere Befehlstypen auf ähnliche
Weise zu definieren.
-
Der
normale Ein-Byte-Befehl 212 weist normale Befehle mit Ein-Byte-Operationscodes
auf. Der normale Befehl mit Präfix
als Kennzeichner 214 weist normale Befehle auf, die das
Präfix
als Kennzeichner für den
Operationscode verwenden. Zum Beispiel kann ein Zeichenfolgenbefehl
ein Präfix
WIEDERHOLEN (englisch Repeat) verwenden, um den Zeichenfolgenbefehl
so häufig
zu wiederholen, wie dies in dem Zählregister spezifiziert ist
oder bis eine bestimmte Bedingung erfüllt ist. Das in dem Befehl 214 verwendete
Präfix
fügt dem folgenden
Operationscode keine vollständig
neue Bedeutung hinzu. Vielmehr wird das Präfix nur als Kennzeichner zum
Qualifizieren des Operationscodes mit zusätzlichen Bedingungen verwendet.
Wie dies zu einem späteren
Zeitpunkt im Text erläutert
wird, unterscheidet sich die Verwendung des Präfixes in dem Befehl 214 deutlich
von der Verwendung in dem Befehl 224. Der normale Umschaltbefehl 216 ist
ein normaler Befehl, der auf andere Befehlstypen umschaltet. In
einem Ausführungsbeispiel
zeigt ein Gleitpunkt-Coprozessor-Umschaltcode 0xD8 bis 0xDF zum
Beispiel an, dass der folgende Operationscode als Coprozessorbefehle
interpretiert werden sollte.
-
Der
erste neue Befehlstyp 222 (oder der neue Befehlstyp 0)
ist ein neuer Befehl, der Teil des neuen Befehlssatzes ist, der
zu einem bereits bestehenden normalen Befehlssatz hinzugefügt wird.
Der neue Befehlstyp 0 verwendet einen speziellen Umschaltcode, der
als Zwei-Byte-Umschaltcode bezeichnet wird. In einem Ausführungsbeispiel
entspricht der Zwei-Byte-Umschaltcode
0x0F. Für
den Befehl 222 sollte der auf den 2-Byte-Umschaltcode folgende Befehl 222 als
ein neuer Befehl decodiert werden. Der zweite neue Befehlstyp 224 (oder
der neue Befehlstyp 1) verwendet das Präfix als Bestandteil des Operationscodes.
Im Gegensatz zu dem Befehl 214, bei dem das Präfix lediglich
den folgenden Operationscode qualifiziert, verwendet der Befehl 224 das
Präfix
für die
Definition eines vollständig
neuen Befehls. Die Verwendung des Präfixes in Verbindung mit dem
Umschaltcode erweitert die Befehlsoperationscodetabelle ohne signifikante
Veränderungen
der Decodierungsschaltkreisanordnung. Darüber hinaus werden keine neuen
Operationscodes verwendet, so dass Platz für zukünftige neue Befehle vorhanden
ist. Beispiele für
diese Befehle sind im weiteren Verlauf des Textes ausgeführt.
-
BEISPIELE
FÜR BEFEHLSPRÄFIXE UND
UMSCHALTCODES
-
Die
Befehlspräfixe
werden ursprünglich
zur Verbesserung bzw. zur Erweiterung eines Befehlssatzes verwendet.
Zum Beispiel wird das Wiederholungspräfix entwickelt, um einen Zeichenfolgebefehl
bzw. einen String-Befehl zu wiederholen. Die Wiederholungspräfixcodes
lauten 0xF3 (REP, REPE) und 0xF2 (REPNE). Das Präfix definiert keine neue Bedeutung
für den
folgenden Operationscode. Es definiert lediglich zusätzliche Betriebsbedingungen
für den
Operationscode.
-
Der
Umschaltcode sieht eine Erweiterung des Befehlssatzes vor. Zum Beispiel
werden die Umschaltcodes 0xD8 bis 0xDF verwendet, um anzuzeigen,
dass der folgende Operationscode zu der Gleitpunkteinheit gehört. Der
Decodierer leitet den Operationscode zu dem Gleitpunktdecodierer.
In einem Ausführungsbeispiel zeigt
ein Zwei-Byte-Umschaltcode 0x0F an, dass der folgende Operationscode
einen neuen Befehlssatz definiert. Obwohl der Umschaltcode eine
zusätzliche
Erweiterung des Befehlssatzes ermöglicht, ist die zusätzliche Anzahl
der Operationscodes weiterhin beschränkt.
-
Die
Kombination aus dem Präfix-
und dem Umschaltcode sorgt für
eine erhebliche Erweiterung der Operationscodetabelle, so dass weitere
neue Befehlssätze
ermöglicht
werden. Diese Kombination verwendet bereits vorhandene Präfixcodes,
um einen vollständig
neuen Befehlssatz zu definieren, zusätzlich zu dem durch den Umschaltcode
erzeugten Befehlssatz. Durch die Verwendung der bereits vorhandenen
Präfixcodes bleibt
die Decodierungsschaltkreisanordnung für den bereits bestehenden Befehlssatz
im Wesentlichen unverändert.
Die Decodierungsschaltkreisanordnung muss zur Berücksichtigung
dieser Kombination zwar modifiziert werden, allerdings ist diese
Modulation lediglich eine modulare Ergänzung mit minimalen Änderungen
des bereits bestehenden Designs.
-
Die
Operationscodes einiger oder aller neuer Befehle können mit
den Operationscodes der bereits bestehenden Befehle identisch sein.
Unter Verwendung der gleichen Operationscodes, wobei die Präfix- und Umschaltcodes
einen völlig
neuen Befehlssatz definieren, ist die Decodierungsschaltkreisanordnung
deutlich weniger komplex als für
den Fall eines vollständig
neuen Satzes von Operationscodes für den neuen Befehlssatz.
-
In
einem Ausführungsbeispiel
wird das Wiederholungspräfix
0xF3 für
die Definition eines neuen Befehlssatzes verwendet. Andere Präfixe können auf ähnliche
Art und Weise verwendet werden. Darüber hinaus können Präfixe weiterhin
in ihrer traditionellen Rolle der Erweiterung des Operationscodes
oder zur Qualifizierung des Operationscodes unter einer bestimmten
Operationsbedingung eingesetzt werden. Das Adressgrößenpräfix kann
zum Beispiel weiterhin zur Bewirkung des neuen Befehls mit einem
Speicheroperanden eingesetzt werden.
-
Nachfolgend
sind Beispiele für
den neuen Befehlssatz unter Verwendung von Präfixen und Umschaltcodes aufgeführt.
-
-
-
In
den oben genannten Beispielen betrifft der Befehlssatz ohne das
Präfix
0xF3 Operationen an gepackten Daten, während sich der Befehlssatz
mit dem Präfix
0xF3 auf Operationen an skalaren Daten bezieht.
-
In
einem Ausführungsbeispiel
ist die folgende Gruppe von Präfixcodes
gegeben: ein Adressgrößen-Präfixcode
(0x67), ein Operandengrößen-Präfixcode
(0x66), ein Segmentübergangs-Präfixcode
(0x2E, 0x36, 0x3E, 0x26, 0x64, 0x65), ein Wiederholungs-Präfixcode
(0xF3), ein Wiederholungs-Präfixcode
bei Übereinstimmung
(0xF3), ein Widerholungscode bei fehlender Übereinstimmung (0xF2) und ein
Sperr-Präfixcode (0xF0).
-
Wie
dies dem Fachmann auf dem Gebiet bekannt ist, sind die genauen Codes
für diese
Präfixe
abhängig
von der Implementierung, wobei die vorstehenden Präfixcodes
lediglich Zwecken der Veranschaulichung dienen. Ferner stehen nicht
alle Präfixcodes
für die
Codierung des neuen Befehlssatzes zur Verfügung. Bestimmte Präfixe können zu
einem illegalen Modus führen
oder werden nicht erkannt.
-
BEFEHLSCODIERUNG
UNTER VERWENDUNG VON PRÄFIXEN
-
Die
Abbildung aus 3 zeigt ein Diagramm einer Schaltung 300 zum
Decodieren des Befehls. Die Schaltung 300 weist einen Befehlspuffer 310,
einen Präfix-
und Umschaltdetektor 320, eine Decodierer-Freigabeschaltung 330 und
einen Operationscode-Decodierer 340 auf. Der Präfix- und
Umschaltdetektor 320, die Decodierer-Freigabeschaltung 330 und
der Operationscode-Decodierer 340 bilden einen Teil der
Decodierungseinheit 116 aus 1.
-
Der
Befehlspuffer 310 speichert die von dem externen Speicher
erfassten Befehle. Für
gewöhnlich wird
der Befehlspuffer 310 als Befehls-Cache implementiert.
Zu Zwecken der Veranschaulichung wird angenommen, dass ein Befehl
drei Bytes umfasst: Das erste Byte entspricht IN bis
IN+7, das zweite Byte entspricht IK bis IK+7 und das
dritte Byte entspricht IM bis IM+7,
wobei IN bis IN+7,
IK bis IK+7 und
IM bis IM+7 die
Bitpositionen des Befehlswortes betreffen.
-
Der
Präfix-
und Umschaltdetektor 320 empfängt die Befehlsbits IN bis IN+7, IK bis IK+7 und detektiert
einen Satz vordefinierter Präfixe
und/oder Umschaltcodes, die als Bestandteil des neuen Befehlssatzes
verwendet werden. Die Werte dieser Präfixe werden so ausgewählt, dass
sie den Präfixen
entsprechen, die für
den normalen Befehlssatz verwendet werden. Die Decodierer-Freigabeschaltung 330 verknüpft die
Ergebnisse des Präfix-
und Umschaltdetektors 320, so dass Freigabe- oder Auswahlsignale
für den
einzelnen Operationscode-Decodierer erzeugt werden. Der Operationscode-Decodierer 340 empfängt die
Befehlsbits IN bis IN+7,
IK bis IK+7 und
IM bis IM+7 und
führt die
Decodierungsfunktion für
die einzelnen Befehlsarten aus.
-
Die
Abbildung aus 4 veranschaulicht ein Diagramm
des Präfix-
und Umschaltdetektors 320, der Decodierer-Freigabeschaltung 330 und
des Operationscode-Decodierers 340. Zu Zwecken der Veranschaulichung
wird angenommen, dass nur ein Präfix
0xF3 und zwei Umschaltcodes 0xD8-0xDF und 0x0F existieren.
-
Der
Präfix-
und Umschaltdecodierer 320 weist vier UND-Glieder 410, 412, 414 und 416 auf.
Die UND-Glieder 410, 412 und 414 gleichen
die Befehlsbits IN bis IN+7 an
den entsprechenden Präfixcode
und Umschaltcode an. Das UND-Glied 410 gleicht die Befehlscodes
IN bis IN+7 an den
Präfixcode
0xF3 an und erzeugt ein Signal PRFX. Das Signal PRFX wird behauptet,
wenn die Befehlsbits IN bis IN+7 das
Präfix
0xF3 darstellen.
-
Das
UND-Glied 412 gleicht die Befehlsbits IN bis
IN+7 an den Umschaltcode 0xD8-0xDF an und
erzeugt ein Signal ESC1. Das Signal ESC1 wird behauptet, wenn die
Befehlsbits IN bis IN+7 den
Umschaltcode 0xD8 bis 0xDF darstellen. Das UND-Glied 414 gleicht
die Befehlsbits IN bis IN+7 an
den 2-Byte-Umschaltcode 0x0F an und erzeugt ein Signal ESC2A. Das
Signal ESC2A wird behauptet, wenn die Befehlsbits IN bis
IN+7 den 2-Byte-Umschaltcode 0x0F darstellen. Das UND-Glied 416 gleicht
die Befehlsbits IK bis IK+7an
den 2-Byte-Umschaltcode 0x0F an und erzeugt ein Signal ESC2B. Das
Signal ESC2B wird behauptet, wenn die Befehlsbits IK bis
IK+7 den 2-Byte-Umschaltcode 0x0F darstellen.
Wie dies für
den Fachmann auf dem Gebiet bekannt ist, können auch andere Logikgatter
zur Ausführung
der Angleichung oder Decodierung der Befehlsbits IN bis
IN+7 und IN bis
IN+7 verwendet werden.
-
Die
Decodierer-Freigabeschaltung 330 empfängt die Signale PRFX, ESC1,
ESC2A und ESC2B zur Erzeugung der Freigabesignale an die einzelnen
Decodierer. Die Decodierer-Freigabeschaltung 330 weist
ein NOR-Glied 420, ein UND-Glied 422 und ein UND-Glied 424 auf.
-
Das
NOR-Glied 420 behauptet das Signal EN1, wenn PRFX, ESC1
und ESC2 alle negiert werden. Dieser Zustand entspricht dem Zustand,
wenn die Befehlsbits IN bis IN+7 keinem
Präfix,
Gleitpunkt-Umschaltcode oder 2-Byte-Umschaltcode entsprechen. Somit
entsprechen die IN bis IN+7 einem
Operationscode eines normalen Ein-Byte-Befehls.
-
Das
UND-Glied 422 behauptet das Signal EN2, wenn das Signal
PRFX behauptet und ESC2B negiert wird. Dieser Zustand entspricht
dem Zustand, wenn die Befehlsbits IN bis
IN+7 dem Präfixcode entsprechen, während die
Befehlsbits IK bis IK+7 nicht
dem 2-Byte-Umschaltcode entsprechen. Dieser Zustand entspricht somit
einem Operationscode, der das Präfix
als Kennzeichner für
einen normalen Befehl verwendet.
-
Das
Signal ESC1 wird als das Signal EN3 verwendet. Dieses Signal wird
behauptet, wenn die Befehlsbits IN bis IN+7 mit dem Gleitpunkt-Umschaltcode übereinstimmen.
Dieser Zustand entspricht somit einem Gleitpunkt-Operationscode
eines normalen Befehls.
-
Das
Signal ESC2 wird als das Signal EN4 verwendet. Das Signal wird behauptet,
wenn die Befehlsbits IN bis IN+7 dem
2-Byte-Umschaltcode
entsprechen. Dieser Zustand entspricht somit einem Operationscode
eines normalen Befehlstyps 0.
-
Das
UND-Glied 424 behauptet das Signal EN5, wenn die Signale
PRFX und ESC2B behauptet werden. Dieser Zustand entspricht dem Zustand,
wenn die Befehlsbits IN bis IN+7 dem
Präfixcode
entsprechen, und wenn die Befehlscodes IK bis
IK+7 dem 2-Byte-Umschaltcode entsprechen. Dieser Zustand
entspricht somit einem Operationscode eines neuen Befehlstyps 1.
-
Der
Operationscode-Decodierer 340 umfasst einen normalen Ein-Byte-Decodierer 430,
einen normalen Präfix-Decodierer 432,
einen normalen Umschaltdecodierer 434, einen Decodierer 436 für den neuen
Befehlstyp 0 und einen Decodierer 438 für den neuen Befehlstyp 1. Diese
Decodierer führen
im Wesentlichen Die Decodierungsfunktionen für die Befehle gemäß der Spezifikation
durch die Befehlsoperationscodes in den Befehlsbits IN bis
IN+7 und IK bis
IK+7 aus. Diese Decodierer sind zwar in
separaten Blöcken
dargestellt, wobei die Decodierung dieser Befehle in der Praxis
jedoch verknüpft
wird.
-
Die
Abbildung aus 5 zeigt ein Flussdiagramm, das
einen Prozess P500 zur Ausführung
der Befehlsdecodierung unter Verwendung von Präfixen veranschaulicht.
-
Bei
START tritt der Prozess P500 in den Block B510 ein, um das erste
Byte oder die Befehlsbits IN bis IN+7 zu decodieren. Danach tritt der Prozess
P500 in den Block B515 ein, um zu bestimmen, ob es sich bei dem ersten
Byte um einen gültigen
Präfixcode
(z.B. 0xF3) handelt. Wenn die Antwort NEIN lautet, springt der Prozess
P500 zu dem Block B520. Bei JA fährt
der Prozess P500 mit dem Block B550 fort.
-
In
dem Block B520 bestimmt der Prozess P500, ob es sich bei dem ersten
Byte um einen 2-Byte-Umschaltcode handelt. Bei NEIN fährt der
Prozess P500 mit dem Block B525 fort. Bei JA fährt der Prozess P500 mit dem
Block B540 fort. In dem Block B525 bestimmt der Prozess P500, ob
es sich bei dem ersten Byte um einen anderen Umschaltcode (z.B.
Gleitpunkt-Umschaltcode) handelt. Bei NEIN fährt der Prozess P500 mit dem
Block B530 fort, um das erste Byte als einen normalen Ein-Byte-Befehl
zu decodieren. Bei JA fährt
der Prozess P500 mit dem Block B532 fort, um das zweite Byte zu
erhalten und danach mit dem Block B535, um das zweite Byte als andere
normale Befehle (z.B. Gleitpunktbefehle) zu decodieren. Der Prozess
P500 endet danach.
-
In
dem Block B540 erhält
der Prozess P500 das zweite Byte und tritt in den Block B545 ein,
um das zweite Byte als eine neue Befehlsart 0 (z.B. gepackte Datenbefehle)
zu decodieren. Danach endet der Prozess P500.
-
In
dem Block B550 decodiert der Prozess P500 das zweite Byte oder die
Befehlsbits IK bis IK+7.
Der Prozess P500 tritt danach in den Block B560 ein, um zu bestimmen,
ob es sich bei dem zweiten Byte um einen 2-Byte-Umschaltcode handelt.
Wenn die Antwort NEIN lautet, tritt der Prozess P500 in den Block
B565 ein, um das zweite Byte als einen Operationscode eines normalen
Befehls mit dem Präfix
als Kennzeichner zu decodieren. Bei JA tritt der Prozess P500 in
den Block B570 ein, um das dritte Byte zu erhalten, und danach in
den Block B575, um das dritte Byte als einen neuen Befehlstyp 1
(z.B. skalare Befehle) zu decodieren. Danach endet der Prozess P500.
-
Vorgesehen
ist gemäß der vorliegenden
Erfindung ein effizientes Verfahren zum Codieren eines neuen Befehlssatzes
unter Verwendung bereits vorhandener Präfixe. Die vorliegende Erfindung
ermöglicht
es somit, dass der neue Befehlssatz so groß sein kann, wie dies erforderlich
ist, ohne dabei den Befehlsdecodierer komplexer zu gestalten.
-
Die
vorstehend in Bezug auf veranschaulichende Ausführungsbeispiele beschriebene
vorliegende Erfindung ist nicht auf diese Beschreibungen beschränkt. Gemäß dem Umfang
der vorliegenden Erfindung sind verschiedene Modifikationen der
veranschaulichenden Ausführungsbeispiele
sowie anderer Ausführungsbeispiele
der möglich,
wie dies für
den Fachmann auf dem Gebiet der Erfindung erkennbar ist, wobei diese
Modifikationen dem Umfang der Erfindung angehören.