-
Hintergrund der Erfindung
-
(1) Gebiet der Erfindung
-
Die
vorliegende Erfindung bezieht sich auf einen Prozessor mit einer
VLIW(Very Long Instruction Word)-Architektur und im Besonderen auf
einen Prozessor, der Befehle mit vergleichsweise kurzer Wortlänge und
hoher Codeeffizienz ausführt.
-
(2) Beschreibung des Standes der Technik
-
Mit
der steigenden Nachfrage nach Multimediageräten und der Miniaturisierung
elektronischer Schaltkreise in den letzten Jahren gab es einen wachsenden
Bedarf an Mikroprozessoren, die multimediale Daten, wie Audio- und
Bilddaten, mit hoher Geschwindigkeit verarbeiten. Eine Art von Prozessoren,
die in der Lage sind, diese Bedürfnisse
zu erfüllen,
sind Prozessoren, die eine VLIW-Architektur verwenden; diese werden
nachfolgend als VLIW-Prozessoren bezeichnet.
-
VLIW-Prozessoren
umfassen eine Anzahl interner Operationseinheiten und sind so in
der Lage, gleichzeitig eine Anzahl Operationen in einem VLIW parallel
auszuführen.
Solche VLIWs werden durch einen Compiler erzeugt, der untersucht,
bis zu welchem Ausmaß Parallelverarbeitung
auf Quellcode-Level möglich
ist und der den Programmablauf durchführt. Für „Embedded"-Mikroprozessoren, die in Konsumergeräten verwendet
werden, ist es jedoch wichtig, die Codegröße von Programmen niedrig zu halten,
sodass 256-Bit-VLIWs,
die mit ihrem hohen Auftreten von No-Operation-Befehlen (im Folgenden als „NOP-Befehle" bezeichnet) und
der sich daraus ergebenden schlechten Codeeffizienz weit entfernt vom
Ideal sind.
-
Ein
Beispiel eines VLIW-Prozessors, der Befehle mit relativ kurzer Wortlänge ausführt, zeigt
die offengelegte
japanische
Patentanmeldung H09-26878 . Diese Ausführung zeigt ein Datenverarbeitungsgerät, das ein
VLIW-Prozessor ist, um 32-Bit-Befehle auszuführen, die gleichzeitig maximal zwei
Operationen beeinhalten.
-
Die 1A und 1B zeigen
das Befehlsformat des spezifizierten Verfahrens, wobei 1A das Befehlsformat zur gleichzeitigen
Kennzeichnung von zwei Operationen und 1B das
Befehlsformat zur Kennzeichnung nur einer Operation zeigt. Diese Technik
zielt darauf ab, die Codeeffizienz durch Einfügen eines 2-Bit-Wertes in das
Formatfeld 410 zu verbessern, welches für jeden Befehl die Anzahl der Operationen
und die Reihenfolge der Ausführung
angibt.
-
Die
Angabe eines Maximums von zwei Operationen durch einen einzigen
32-Bit-Befehl erreicht jedoch
nicht einen genügenden
Parallelisierungsgrad. Es tritt auch das Problem der Verminderung
der Codeeffizienz der Befehle auf, wenn eine Operation unter Verwendung
einer Konstanten durchgeführt wird,
die die gegebene Wortlänge überschreitet.
Als Beispiel werden, wenn eine 32-Bit-Konstante in obere 16-Bit
und in untere 16-Bit aufgeteilt wird, sodass sie in Registern gesetzt
werden kann, zwei 32-Bit-Befehle erforderlich, nur um eine Operation
anzuzeigen, die diese Konstante verwendet.
-
Zusammenfassung der Erfindung
-
Aufgabe
der vorliegenden Erfindung ist es, einem VLIW-Prozessor zur Verfügung zu
stellen, um Befehle mit vergleichsweise kurzer Wortlänge auszuführen, die
eine Struktur aufweisen, wobei die Überalles-Codeeffizienz vergleichsweise
unbeeinflusst bleibt, auch dann, wenn Konstanten mit vergleichsweise
langer Wortlänge
verarbeitet werden.
-
In
Anbetracht der festgestellten Probleme ist es bevorzugtes Ziel der
vorliegenden Erfindung einen VLIW-Prozessoren zur Verfügung zu
stellen, der Befehle mit vergleichsweise kurzer Wortlänge ausführt, die
aber einen hohen Grad der Parallelisierung und eine höchst effiziente
Codestruktur aufweisen, sodass mehrere Operationen gleichzeitig
angegeben werden können.
Als ein Beispiel können
drei oder mehr Operationen durch einen einzigen 32-Bit-Befehl angegeben
werden.
-
Die
Erfindung stellt einen VLIW-Prozessor gemäß Anspruch 1 bereit. Ein Prozessor
mit in den Merkmalen des Oberbegriffs von Anspruch 1 ist in
EP-A-0426393 offengelegt.
-
In
einer möglichen
Ausgestaltung kann das erste Operationsfeld nur den Einfach-Operationscode und
das zweite Operationsfeld nur die Kombination aus einem Operationscode
und mindestens einem Operand, der in einer Operation verwendet wird,
die die durch das zweite Operationsfeld angegeben ist, enthalten.
-
Auf
diese Weise kann, weil mindestens eine Operation in dem Befehl durch
bloßes
Einfügen
eines Operationscodes ohne explizite Angabe eines Operanden angegeben
werden kann, die Wortlänge
der Befehle reduziert werden. Als Ergebnis erhält man ein VLIW-Prozessor,
der Befehle von vergleichsweise kurzer Wortlänge ausführt, der aber eine höchst effiziente
Codestruktur aufweist, sodass mehrere Operationen gleichzeitig angegeben
werden können.
-
Hierbei
kann die Anzahl der Bits, die durch den Operationscode in dem ersten
Operationsfeld belegt werden, gleich einer Anzahl von Bits sein,
die durch den Operationscode in dem zweiten Operationsfeld belegt
werden.
-
Als
Ergebnis sind alle Operationscodes, die in einem Befehl enthalten
sind, aus der gleichen Anzahl von Bits zusammengesetzt, was die
Komponenten, wie die Decoder-Schaltkreise,
vereinfacht.
-
Hierbei
kann der Befehl drei Operationsfelder enthalten, wobei das dritte
Operationsfeld der drei Operationsfelder die gleiche Anzahl von
Bits umfassen kann wie das zweite Operationsfeld und eine Kombination
von einem Operationscode und wenigstens einem Operanden enthalten
kann; der VLIW-Prozessor umfasst dabei: eine dritte Decodiereinheit,
die, wenn ein Operationscode in dem dritten Operationsfeld vorliegt,
den Operationscode in dem dritten Operationsfeld decodiert; und
eine dritte Ausführungseinheit,
um eine Operation, die durch den Operationscode in dem dritten Operationsfeld
angegeben ist, mit Daten, die durch die Operanden in dem dritten
Operationsfeld angegeben sind, gemäß dem Decodierergebnis der
dritten Decodiereinheit auszuführen.
-
Als
Ergebnis erhält
man einen VLIW-Prozessor mit einem hohen Parallelisierungsgrad,
wobei drei Operationen gleichzeitig durchgeführt werden können.
-
Hierbei
kann die erste Ausführungseinheit eine
Ablaufsteuerung eines Programms kontrollieren, das den Befehl enthält.
-
Als
Ergebnis können
Sprungoperationen, die normalerweise keine große Anzahl von Bits erfordern,
einem kurzen Operationsfeld zugewiesen werden. Das bedeutet, dass
ein Befehlssatz mit hoher Codeeffizienz definiert werden kann.
-
Hierbei
kann die zweite Ausführungseinheit die Übertragung
der Daten steuern, die durch die Operanden angegeben werden, die
in dem zweiten Operationsfeld enthalten sind, die dritte Ausführungseinheit
führt die
arithmetisch-logischen Operationen mit den Daten aus, die durch
die Operanden bestimmt sind, die in dem dritten Operationsfeld enthalten
sind.
-
Als
Ergebnis kann die Datenübertragung
zu und von einem externen Speicher durch eine einzige Operation
in einem Befehl angegeben werden, sodass der Operanden-Zugriffs-Schaltkreis, mit
dem der VLIW Prozessor ausgestattet sein soll, vereinfacht werden
kann.
-
Mit
dem angegebenen Aufbau in Anspruch 1 kann, wenn es notwendig ist
bedeutungslose Codes in einem Operationsfeld eines Befehls unterzubringen,
eine Konstante, die von verschiedenen Operationen verwendet wird,
statt dessen eingefügt
werden, sodass ein VLIW-Prozessor zur Ausführung von Befehlen realisiert
werden kann, die trotz einer kurzen Wortlänge eine hohe Codeeffizienz
aufweisen.
-
Hier
enthält
der Befehl auch ein Formatfeld, das einen Formatcode enthält, der
angibt, ob sich nur eine Konstante in dem ersten Operationsfeld
befindet und ob sich nur eine Konstante in dem zweiten Operationsfeld
befindet, wobei der VLIW-Prozessor weiterhin umfasst: eine Format-Decodiereinheit
zur Decodierung des Formatcodes; und eine Konstanten-Speichereinheit
zum Extrahieren der Konstanten aus dem Befehl und zum Speichern
der extrahierten Konstanten, wenn ein Decodierergebnis der Format-Decodiereinheit zeigt,
dass nur eine Konstante in mindestens einem von dem ersten Operationsfeld und
dem zweiten Operationsfeld vorliegt.
-
Demzufolge
können
Konstanten, die in einem Operationsfeld untergebracht sind, in einer
Konstanten-Speichereinheit gespeichert werden, um von einer Operation
in einem späteren
Befehl verwendet zu werden, sodass eine Verminderung der Codeeffizienz
vermieden werden kann, sogar dann, wenn bei Verwendung von Befehlen
mit vergleichsweise kurzer Wortlänge
Konstanten mit einer vergleichsweisen langen Wortlänge verarbeitet
werden.
-
Hierbei
können
das Formatfeld, das erste Operationsfeld, der Operationscode in
dem zweiten Operationsfeld, jeder Operand in dem zweiten Operationsfeld,
der Operationscode in dem dritten Operationsfeld und jeder Operand
in dem dritten Operationsfeld jeweils n Bits in dem Befehl belegen.
-
Mit
dem angegebenen Aufbau weisen alle Felder, die einen Befehl bilden,
die gleiche Anzahl von Bits auf, was ermöglicht, die internen Schaltkreise
des VLIW-Prozessors zu vereinfachen.
-
Dabei
kann der VLIW-Prozessor umfassen: eine Ladeeinheit zum Laden des
L-Bit-Befehls, der
n Operationsfelder umfasst; und n Operationseinheiten, von denen
jede mit einem anderen der n Operationsfelder in dem geladenen Befehl
verbunden ist und jede unabhängig
eine Operation in dem verbundenen Operationsfeld parallel zu den
anderen ausführt;
der VLIW-Prozessor ist dadurch charakterisiert, dass die n Operationsfelder
nicht alle die gleiche Größe aufweisen
und dadurch, dass L kein ganzzahliges Vielfaches von n ist.
-
In
dem angegebenen Aufbau besteht keine Notwendigkeit, dass alle Operationsfelder
eines Befehls die gleiche Wortlänge
aufweisen, wodurch es möglich
ist, Befehle mit hoher Codeeffizienz zu spezifizieren. Demzufolge
erhält
man einen VLIW-Prozessor, der Befehle mit vergleichsweise kurzer
Wortlänge
ausführt,
der aber eine höchst
effiziente Codestruktur aufweist, sodass mehrere Operationen gleichzeitig
angegeben werden können.
-
Vorliegend
kann n gleich drei und L gleich 32 sein.
-
Der
angegebene Aufbau verwirklicht einen VLIW-Prozessor mit einem hohen
Parallelisierungsgrad, wobei drei Operationen, die in einem einzigen 32-Bit-Befehl
spezifiziert sind, gleichzeitig ausgeführt werden können.
-
Vorliegend
kann die Anzahl von Operanden, die in mindestens einem der n Operationsfelder
enthalten sind, verschieden sein gegenüber einer Anzahl von Operanden
in einem anderen der n Operationsfelder.
-
In
dem angegebenen Aufbau besteht keine Notwendigkeit, dass jedes Operationsfeld
eines Befehls die gleiche Anzahl von Operanden aufweist, sodass
Befehlsformate mit einem hohen Grad an Codeeffizienz spezifiziert
werden können.
-
Hierbei
können
die n Operationsfelder mindestens ein Operationsfeld enthalten,
welches nur aus einem Operationscode besteht und mindestens ein
Operationsfeld, das aus einem Operationscode und mindestens einem
Operanden besteht.
-
In
dem angegebenen Aufbau ist die Wortlänge eines Befehls kürzer als
in dem Fall, wo jedes Operationsfeld eines Befehls eine Kombination
aus einem Operationscode und Operanden enthält, sodass ein VLIW-Prozessor
verwirklicht werden kann, der Befehle ausführt, die einen höchst effizienten Code
Aufbau aufweisen.
-
Wie
oben beschrieben, verwirklicht die vorliegende Erfindung einen VLIW-Prozessor,
der Befehle von vergleichsweise kurzer Wortlänge ausführt, der aber eine höchst effiziente
Codestruktur aufweist, die es erlaubt, mehrere Operationen durch
einen einzigen Befehl zu spezifizieren. Dieses Ergebnis ist besonders
beachtlich für „Embedded"-Prozessoren, die Multimediadaten
verarbeiten.
-
Kurze Beschreibung der Zeichnungen
-
Diese
und andere Aufgaben, Vorteile und Merkmale der Erfindung werden
in Verbindung mit den begleitenden Zeichnungen aus der folgenden Beschreibung
ersichtlich, wobei die Zeichnungen eine besondere Ausgestaltung
der Erfindung darlegen. Die Zeichnungen:
-
1A und 1B zeigen
Befehlsformate, die in dem Stand der Technik verwendet werden, wobei 1A ein Befehlsformat zeigt, bei dem zwei Operationen
angegeben sind und 1B ein Befehlsformat zeigt,
wo nur eine Operation angegeben ist;
-
2 zeigt die Feldstruktur eines Befehls, der
durch den Prozessor der vorliegenden Erfindung ausgeführt wird;
-
Die 2B bis 2D zeigen
16 Ausführungen
eines Befehlsformats, wobei 2B 3-fach-Operations-Befehle, 2C 2-fach-Operations-Befehle
und 2D Einfach-Operations-Befehle
zeigt;
-
3 ist
eine Tabelle, die besondere Operationen zeigt, die durch die drei
Ausführungen
des Befehlscodes „cc", „op1" und „op2" angegeben sind,
die in den 2B bis 2D verwendet
werden;
-
4 ist
ein Blockdiagramm, das den Hardware-Aufbau des vorliegenden Prozessors
zeigt;
-
5 ist
ein Blockdiagramm, das den detaillierten Aufbau des Konstantenregisters 36 des
vorliegenden Prozessors und die Peripherie-Schaltkreise zeigt;
-
Die 6A bis 6D sind
Darstellungen verschiedener Verfahren zur Speicherung einer Konstanten
durch die Konstantenregister-Kontrolleinheit 32, gezeigt
in 5, wobei 6A den
Fall zeigt, wenn der Formatcode „0" oder „1" ist, 6B zeigt den
Fall, wenn der Formatcode „4" ist, 6C zeigt den
Fall, in dem der Formatcode „5" ist und 6 zeigt den Fall, wenn der Formatcode „2", „3" oder „A" ist;
-
7 ist
ein Blockdiagramm, das den detaillierten Aufbau der PC-Einheit 33 des
vorliegenden Prozessors zeigt;
-
8 ist
ein Flussdiagramm, das den Ablauf einer Prozedur zeigt, die eine
32-Bit-Konstante
verarbeitet;
-
9 zeigt
ein Beispiel eines Programms, das der vorliegende Prozessor aufweist,
um die Prozedur, die in 8 gezeigt ist, auszuführen;
-
10 ist
ein Zeitdiagramm, das die Arbeitsweise des vorliegenden Prozessors
zeigt, wenn er das Programm in 9 ausführt;
-
11 ist
ein Beispiel eines Programms, das der vorliegende Prozessor aufweist,
um die Prozedur auszuführen,
die eine 16-Bit-Konstante verarbeitet;
-
12A zeigt die Felddefinition von Befehlen, die
von einem Standardprozessor ausgeführt werden;
-
12B zeigt das Befehlsformat der Befehle aus 12A;
-
13 zeigt
ein Beispiel eines Programms, das ein Standardprozessor aufweist,
um die gleiche Prozedur wie in dem Programm in 9 auszuführen;
-
14 zeigt
ein Beispiel eines Programms, das ein Standardprozessor aufweist,
um die gleiche Prozedur wie in dem Programm in 11 auszuführen;
-
die 15A bis 15D zeigen
Modifikationen der Befehlsstruktur, die durch den VLIW-Prozessor
der vorliegenden Erfindung ausgeführt werden; und
-
16 zeigt
eine Modifikation des Hardware-Aufbaus des vorliegenden Prozessors,
um die Ausführung
der Befehle, die in 15A angezeigt sind, zu ermöglichen.
-
Beschreibung der bevorzugten
Ausgestaltung
-
Eine
Ausgestaltung des Prozessors der vorliegenden Erfindung ist im Folgenden
mit Bezug auf die Zeichnungen beschrieben. In dieser Ausgestaltung
bezeichnet der Ausdruck "Befehl" einen Codesatz,
der durch den vorliegenden Prozessor parallel decodiert und ausgeführt wird,
der Ausdruck "Operation" bezieht sich auf
einen Verarbeitungsschritt, wie eine arithmetische Operationen,
eine logische Operation, eine Übertragung
oder eine Verzweigung, der durch den vorliegenden Prozessors parallel
ausgeführt
wird sowie auf einen Code, der jeden Prozessschritt kennzeichnet.
-
Befehlsformat
-
Zuerst
soll die Struktur der Befehle, die durch den vorliegenden Prozessor
decodiert und ausgeführt
werden, beschrieben werden. Der vorliegende Prozessor ist ein VLIW-Prozessor,
der Befehle mit einer festen Wortlänge von 32 Bits decodiert und
ausführt.
-
2A zeigt
die Feldstruktur eines Befehls 50, der von dem vorliegenden
Prozessor ausgeführt werden
soll. Die 2B bis 2D zeigen
derweil 16 Befehlsformate. Von diesen geben die Befehlsformate in 2B drei
Operationen, die Befehlsformate in 2C zwei
Operationen und die Befehlsformate in 2D eine
Einfach-Operation an.
-
Der
Befehl 50 hat eine feste Wortlänge von 32 Bits und setzt sich
zusammen aus 8 physikalischen 4-Bit-Feldern, in der Reihenfolge
anfangen von dem MSB (Most Significant Bit) als P0.0 Feld 51, P1.0
Feld 52, ..., P3.2 Feld 58 in 2A.
Von diesen wird der Bereich von dem P2.0 Feld 53 bis zu
dem P2.2 Feld 55 erstes Operationsfeld 59 genannt,
während
der Bereich von dem P3.0 Feld 56 bis zu dem P3.2 Feld 58 zweites
Operationsfeld 60 genannt wird.
-
In
den 2B bis 2D, verweist
die Beschriftung „const" auf eine Konstante
und in Abhängigkeit
der Operation, in welcher diese verwendet wird, kann diese eine
numerische Konstante oder eine Zeichen-Konstante sein, wie beispielsweise eine
direkte, absolute Adresse oder ein Versatz. Die Beschriftung „op" repräsentiert
einem Operationscode, der einem Operationstyp angibt, während die Beschriftung „Rs" das Register repräsentiert,
das als Quelloperand verwendet wird, „Rd" das Register repräsentiert, welches als Zieloperand
verwendet wird und „cc" einen Operationscode
repräsentiert,
der eine Sprungoperation angibt, die den gespeicherten Wert eines
speziellen 32-Bit-Registers verwendet (das Konstanten-Register 36,
gezeigt in 4), der in dem vorliegenden
Prozessor als absolute oder eine relative Adresse (Versatz) eines
Sprungziels bereitgestellt wird.
-
Der
numerische Wert, der unmittelbar hinter den oben beschriebenen Codes
angegeben ist, zeigt die Werte, die in einer Operation entweder
des ersten Operationsfeldes 59 oder des zweiten Operationsfeldes 60 verwendet
werden. Als Beispiel für
das Befehlsformat mit dem Formatcode „6" werden die 4-Bit-Konstante „const1" in dem P1.0 Feld 52 und
die 4-Bit-Konstante „const1", die sich in dem
P2.1 Feld 54 befindet, zu einer 8-Bit-Konstanten kombiniert, die den Quelloperand
entsprechend dem Operationscode „op1" des ersten Operationsfeld 59 darstellt.
-
Die
Konstante "const", die nicht mit einer
angefügten
Nummer versehen ist, stellt eine Konstante dar, die in dem vorliegenden
Prozessor in dem speziellen 32-Bit-Register zu speichern ist (das
Konstanten-Register 36, gezeigt in 4). Als
ein Beispiel des Befehlsformats mit dem Formatcode "0" bedeutet die 4-Bit-Konstante "const", die sich in dem
P1.0 Feld 52 befindet, die Konstante, die in dem Konstanten-Register 36 zu
speichern ist, welches implizit angegeben ist.
-
3 zeigt
besondere Beispiele der Operationen, die durch die drei Arten des
Operationscodes "cc", "op1" und "op2", gezeigt in den 2B bis 2D,
angegeben werden können.
Diese Operationen werden weiter unten im Detail beschrieben.
-
Der
4-Bit-Operationscode "cc" gibt einen der 16
Arten von Sprungbefehlen an. Jeder Sprungbefehl ist als Sprungbedingung
und als Sprungformat festgelegt. Beispiele von Sprungbedingungen
beinhalten "gleich
(,eq')", "ungleich (,neq')" und "größer als
(,gt')". Das Sprungformat
kann ein Format sein, wo der gespeicherte Wert des Konstanten-Registers 36 als
absolute Adresse des Sprungziels dient (bezeichnet dadurch, dass
kein "i" dem Befehls-Mnemonic
angehängt
ist) oder ein Format, in dem der gespeicherte Wert des Konstanten-Registers 36 als
relative Adresse dient, bezeichnet durch ein an den Befehls-Mnemonic angehängtes "i"). Als Beispiel gibt der Operationscode "eq" eine Operation wieder,
die zu einem Ziel verzweigt, dass durch absolute Adressierung angegeben
ist, wenn ein vorhergehender Vergleich ergibt, dass die verglichenen
Werte gleich sind, während
der Operationscode "eqi" eine Operation wiedergibt,
die mittels relativer Adressierung zu einem Ziel verzweigt, wenn
ein vorhergehende Vergleich ergibt, dass die verglichenen Werte
gleich sind.
-
Der
4-Bit-Operand "op1" kann verwendet werden,
um eine arithmetisch-logische Operation anzugeben, wie beispielsweise "add" (Addition), "sub" (Subtraktion), "mul" (Multiplikation), "and" (logisches UND)
oder "or" (logisches ODER)
oder eine Operation, die eine Inter-Register Übertragung ist, wie beispielsweise "mov" (Übertragung
von Wort (32-Bit)-Daten), "movh" (Übertragung
von Halbwort-Daten) oder "movb" (Übertragung
von einem Datenbyte).
-
Der
4-Bit-Operand "op2" kann verwendet werden,
um irgendeine der arithmetischlogischen Operationen oder Inter-Register-Übertragungen
anzugeben, die durch den Operand "op1" bezeichnet werden
können,
kann aber auch verwendet werden, um eine Register-Speicher-Übertragungsoperation anzugeben,
wie "ld" (Laden eines Datenwortes
von dem Speicher in ein Register) oder "st" (Speicherung eines
Datenwortes vom Register in den Speicher).
-
Die
kennzeichnenden Merkmale der Felder 51, 52, 59 und 60,
gezeigt in 2A werden im Folgenden beschrieben.
-
Das
P0.0 Feld 51 enthält
einen 4-Bit-Formatcode, der das Format des Befehls 50 bestimmt.
Genauer gesagt, bestimmt dieses P0.0 Feld 51 einen der
16 Befehlsformate, die in den 2B bis 2D gezeigt
sind.
-
Das
P1.0 Feld 52 ist ein Feld, das eine Konstante oder einen
Operationscode für
eine Sprungoperation enthält.
Wenn sich eine Konstante in dem P1.0 Feld 52 befindet (wie beispielsweise
in den Befehlen mit den Befehlscodes "0", "1" und "4" bis "9"), gibt es Fälle, in denen die Konstante
in dem Konstanten-Register 36 zu speichern ist (so wie
in den Befehlen mit dem Formatcodes "0", "1", "4" und "5"), und Fälle, in denen die Konstante
einen Teil des Operanden des ersten Operationsfeldes 59 oder
des zweiten Operationsfeldes 60 bildet (so wie in den Befehlen mit
den Formatcodes "5", "7", "8", "9" und "B").
Wenn die Konstante in dem P1.0 Feld 52 in dem Konstanten-Register 36 zu
speichern ist, gibt es Fälle,
wo nur eine 4-Bit-Konstante gespeichert wird (wie beispielsweise
in den Befehlen mit dem Formatcodes "0" und "1"), und Fälle, in denen diese Konstante
zusammen mit einer 12-Bit-Konstanten gespeichert wird, die sich entweder
in dem ersten Operationsfeld 59 oder dem zweiten Operationsfeld 60 befindet
(wie beispielsweise in den Befehlen mit den Formatcodes "4" und "5").
-
Wenn
der Operationscode "cc" zur Verzweigung
in dem P1.0 Feld 52 aufgeführt ist (wie in den Befehlen
mit den Formatcodes "2", "3" und "A"),
bezeichnet dies eine Sprungoperation, die als absolute Adresse oder
relative Adresse (Versatz) eines Sprungziels den gespeicherten Wert
des Konstanten-Registers 36 verwendet.
-
Das
erste Operationsfeld 59 enthält entweder eine Konstante
oder eine Kombination von (a) einem Operationscode, um eine Operation
anzugeben (wie zum Beispiel eine arithmetisch-logische Operation
oder eine Inter-Register-Übertragung,
die keine Datenübertragung
zwischen dem vorliegenden Prozessor und der Peripherie (Speicher)
einbezieht und (b) Quell- und Ziel-Operanden für die Operation.
-
Das
zweite Operationsfeld 60 kann den gleichen Inhalt wie das
erste oben beschriebene Operationsfeld 59 aufweisen, aber
kann auch alternativ eine Kombination von (a) einem Operationscode
zur Angabe einer Operation (wie beispielsweise eine Speicher-Register-Übertragung)
enthalten, die einen Datentransfer zwischen dem vorliegenden Prozessor und
der Peripherie einbezieht und (b) Operanden für die Operation.
-
Die
oben beschriebene Zuordnung verschiedener Operations-Typen zu bestimmten
Feldern beruht auf den Voraussetzungen für den vorliegenden von Neumann-Prozessor-Typ,
wobei es nicht notwendig ist, dass zwei oder mehrere Sprungoperationen
gleichzeitig verarbeitet werden und dass nur ein Eingangs-/Ausgangs-Port
(die Operanden-Zugriffseinheit 40 in 4)
zur Übertragung
der Operanden zwischen dem vorliegenden Prozessor und der Peripherie
(Speicher) bereitgestellt wird.
-
Die
in den 2B bis 2D gezeigten
Befehlsformate weisen folgende kennzeichnenden Merkmale auf.
-
Zunächst kann
mit Blick auf die Konstante "const" festgestellt werden,
dass es die folgenden drei Befehlsarten zur Speicherung einer Konstanten in
dem Konstanten-Register 36 gibt.
- (1)
Wenn der Formatcode "0" oder "1" ist:
In diesen Befehlen wird die
4-Bit-Konstante, die sich in dem P1.0 Feld 52 befindet,
in dem Konstanten-Register 36 gespeichert.
- (2) Wenn der Formatcode "4" ist:
In diesen
Befehl wird eine 16-Bit-Konstante, die sich in dem P1.0 Feld 52 bis
P2.2 Feld 55 befindet, in dem Konstanten-Register 36 gespeichert.
- (3) Wenn der Formatcode "5" ist:
In diesem
Befehl wird eine 16-Bit-Konstante, die sich in den Formatfeldern
P1.0 Feld 52 und dem P3.0 Feld 56 bis P3.2 Feld 58 befindet,
in dem Konstanten-Register 36 gespeichert.
-
Zweitens
können
für den
vorliegenden Prozessor maximal drei Operationen durch einen einzigen
Befehl angegeben werden, wobei in diesem Fall, wie aus dem 3-fach-Operationsformat
in 2B ersichtlich ist, eine der folgenden Kombinationen
von Operationstypen verwendet werden kann.
- (1)
Eine Operation, die eine 4-Bit-Konstante in dem Konstanten-Register 36 und
zwei Standardoperationen bestimmt (wenn der Formatcode "0" oder "1" ist).
- (2) Eine Operation, die eine Verzweigung ausführt unter
Verwendung des Wertesatzes, der in dem Konstanten-Register 36 als
eine absolute oder relative Adresse steht und unter Verwendung von zwei
Standardoperationen (wenn der Formatcode "2" oder "3" ist).
-
Wie
oben beschrieben, weisen die Befehle des vorliegenden Prozessors
eine höchst
effiziente Feldstruktur auf, die es ermöglicht, ein Maximum von drei
Operationen durch einen einzigen 32-Bit-Befehl gleichzeitig anzugeben.
-
Hardware Aufbau des Prozessors
-
Im
Folgenden wird der Hardware-Aufbau des vorliegenden Prozessors beschrieben. 4 ist
ein Blockdiagramm, das den Hardware-Aufbau des Prozessors der vorliegenden
Erfindung zeigt. Wie oben beschrieben, ist dieser Prozessor ein
VLIW-Prozessor,
der maximal drei Operationen parallel ausführen kann. Der Aufbau dieses
Prozessors kann grob in ein Befehls-Register 10, eine Decodiereinheit 20 und eine
Ausführungseinheit 30 aufgeteilt
werden.
-
Das
Befehlsregister 10 ist ein 32-Bit-Register, das einen Befehl
speichert, der von der Befehlsladeeinheit 39 gesendet worden
ist.
-
Die
Decodier-Einheit 20 decodiert den in dem Befehlsregister 10 aufgenommenen
Befehl und liefert in Übereinstimmung
mit dem Decodierergebnis über
Steuerleitungen eine Ausgabe an die Ausführungseinheit 30.
Diese Decodiereinheit 20 kann selber näherungsweise in den Format-Decoder 21 und den
Befehls-Decoder 22 aufgeteilt werden.
-
Der
Befehls-Decoder 22 setzt sich zusammen aus einem Sprung-Decoder 23,
der den "cc"-Operationscode,
der in dem P1.0 Feld 12 bereitgehalten wird, decodiert
und die PC-Einheit 33 entsprechend steuert, einem ersten
Operations-Decoder 24, der den Operationscode decodiert,
der in dem P2.0 Feld 13 bereitgehalten wird, und die erste
Operationseinheit 37 entsprechend steuert und einem zweiten
Operations-Decoder 25, der den Operationscode, der in dem
P3.0 Feld 16 bereitgehalten wird, decodiert und die zweite
Operationseinheit 38 und die Operanden-Zugriffseinheit 40 entsprechend
steuert.
-
Der
Format-Decoder 21 decodiert den von dem P0.0 Feld 11 aufgenommenen
4-Bit-Formatcode,
um das Befehlsformat des Befehls zu identifizieren, der in dem Befehls-Register 10 als
einer von 16 möglichen
Befehlsformaten, gezeigt in 2B bis 2D,
aufgenommen ist. In Übereinstimmung
mit dem Decodierergebnis erlaubt oder verbietet der Format-Decoder 21 Decodieroperationen
durch den Sprung-Decoder 23, den ersten Operations-Decoder 24 und
den zweiten Operations-Decoder 25 und aktiviert die Register-Steuereinheit 32 der
Ausführungseinheit 30.
-
Der
Format-Decoder 21, der Sprung-Decoder 23, der
erste Operations-Decoder 24 und der zweite Operations-Decoder 25 decodieren
grundsätzlich
eine Operation in einem Zyklus und senden Steuersignale an die Ausführungseinheit 30.
Hierbei stellt die 28-Bit-Steuersignalverbindung 26,
die das Befehls-Register 10 mit der Ausführungseinheit 30 verbindet,
einen Bus dar, um die Konstanten und Operanden, die sich in dem
Befehls-Register 10 befinden,
zu der Ausführungseinheit 30 zu übertragen.
-
Die
Ausführungseinheit 30 arbeitet
entsprechend dem Decodier-Ergebnis der Decodier-Einheit 20 und
stellt einen Schaltkreis dar, der in der Lage ist, maximal drei
Operationen parallel auszuführen.
Die Ausführungseinheit 30 setzt
sich zusammen aus einer Ausführungs-Steuereinheit 31,
einer PC-Einheit 33, einem Registersatz 34, einer
ersten Operationseinheit 37, einer zweiten Operationseinheit 38,
einer Befehlsladeeinheit 39 und einer Operanden-Zugriffseinheit 40.
Von diesen Komponenten werden die Ausführungseinheit 30,
der Aufbau der Register-Steuereinheit 32, die PC-Einheit 33 und
das Konstanten-Register 36 detaillierter in anderen Zeichnungen
dargestellt.
-
Die
Ausführungs-Steuereinheit 31 bezieht sich
im Allgemeinen auf die Steuerungskreise und die Verschaltung zur
Steuerung der Komponenten, nummeriert mit 33 bis 40 in
der Ausführungseinheit 30 entsprechend
dem Decodier-Ergebnis der Decodier-Einheit 20. Diese Ausführungs-Steuereinheit 31 umfasst
die Komponenten, die normalerweise in einem Prozessor bereitgestellt
werden, wie etwa Schaltkreise zur Takt-Steuerung, Steuerung der Operations-Zulassung/Abweisung,
Status-Management und Unterbrechungs-Kontrolle sowie die Konstanten-Register-Steuerungseinheit 32,
die eine kennzeichnende Komponente des vorliegenden Prozessors ist.
Die Konstanten-Register-Steuereinheit 32 führt die
Steuerung derart aus, dass eine 4- oder eine 16-Bit-Konstante "const", die in dem Befehlsregister 10 aufgenommenen
ist, in dem Konstanten-Register 36 basierend auf Angaben
des Format-Decoders 21 gespeichert wird.
-
Die
PC(Program Counter)-Einheit arbeitet unter Kontrolle des Sprung-Decoders 23 und
leitet aus einem externen Speicher (nicht dargestellt) die Adresse
des nächsten
Befehls, der zu decodieren und auszuführen ist, an die Befehls-Ladeeinheit 39 weiter.
-
Die
Befehls-Ladeeinheit 39 liest einen Befehlsblock von dem
externen Speicher (nicht dargestellt) mittels eines 32-Bit-IA(Instruction Address)-Busses
und eines 32 Bit-ID(Instruction Data)-Busses. Die Befehls-Ladeeinheit 39 speichert den
gelesenen Befehlsblock in einem internen Befehlszwischenspeicher
und liefert den Befehl, der der Adresse entspricht, die durch die
PC-Einheit 33 ausgegeben wurde, an das Befehlsregister 10.
-
Der
Registersatz 34 setzt sich aus 15 32-Bit allgemeinen
Registern 35 und einem 32-Bit-Konstanten-Register 36 zusammen.
In Übereinstimmung
mit dem Decodier-Ergebnis des ersten Operations-Decoders 24 und
des zweiten Operations-Decoders 25 werden die Werte, die
in diesen 16 Registern 35 und 36 gespeichert
sind, in die erste Operationseinheit 37 und die zweite
Operationseinheit 38 übertragen,
wo eine Operation ausgeführt
wird oder alternativ die Werte durchlaufen dürfen, bevor sie zu dem Registersatz 34 oder
der Operanden-Zugriffseinheit 40 geschickt werden. Hierbei
kann zusätzlich
zu der Verwendung in den Operationen, die durch die erste Operationseinheit 37 und
die zweite Operationseinheit 38 ausgeführt werden, der Wert, der in
dem Konstanten-Register 36 gespeichert ist, auch zu der PC-Einheit 33 übertragen
werden, wo er benutzt wird, um eine effektive Adresse zu erzeugen,
die als Sprungziel verwendet wird.
-
Die
erste Operationseinheit 37 umfasst intern eine ALU (Arithmetic
Logic Unit), um arithmetisch-logische Operationen mit zwei 32-Bit-Datensätzen auszuführen und
einen Multiplizierer, um Multiplikationen mit zwei 32-Bit-Datensätzen auszuführen. Diese
erste Operationseinheit 37 ist in der Lage, unter der Kontrolle
des ersten Operations-Decoders 24 zwei Arten von Operationen
auszuführen
(nämlich arithmetisch-logische
Operationen und Inter-Register-Übertragungsoperationen).
-
Die
zweite Operationseinheit 38 umfasst intern eine ALU, um
in der gleichen Weise wie die erste Operationseinheit 37,
arithmetisch-logische Operationen mit zwei 32-Bit-Datensätzen auszuführen und einen
Multiplizierer, um Multiplikationen mit zwei 32-Bit-Datensätzen auszuführen. Diese
zweite Operationseinheit 38 ist in der Lage, unter der
Kontrolle des zweiten Operations-Decoders 25 zwei Arten
von Operationen auszuführen
(nämlich
arithmetisch-logische Operationen und Inter-Register-Übertragungsoperationen).
-
Die
Operanden-Zugriffseinheit 40 arbeitet unter Kontrolle des
zweiten Operations-Decoders 25 und
stellt einen Schaltkreis dar, der Operanden zwischen dem Registersatz 34 und
dem externen Speicher (nicht dargestellt) überträgt. Die Operanden-Zugriffseinheit 40 umfasst
intern einen Puffer zur Speicherung der Operanden und der Operanden-Adressen.
Wenn, wie in einem speziellen Beispiel, der Operationscode "Id" in dem P3.0 Feld 16 des
Befehls-Registers 10 auftritt, wird ein Datenwort, das sich
in dem externen Speicher befindet, mittels der Operanden-Zugriffseinheit 40 in
eines der Register des Registersatzes 34 geladen. Wenn
der Operationscode "st" vorliegt, wird indessen
der gespeicherte Wert eines der Register in dem Registersatz 34 in dem
externen Speicher gespeichert.
-
Die
PC-Einheit 33, der Registersatz 34, die erste
Operationseinheit 37, die zweite Operationseinheit 38 und
die Operanden-Zugriffseinheit 40 sind mit internen Bussen,
wie in 4 gezeigt, verbunden (der L1 Bus, der R1 Bus,
der L2 Bus, der R2 Bus, der D1 Bus und der D2 Bus). Hierbei sind
in der L1 Bus und der L2 Bus jeweils mit einem entsprechenden der
zwei Eingangs-Ports der ersten Operationseinheit 37 verbunden,
der 12 Bus und der R2 Bus sind jeder mit einem entsprechenden
der zwei Eingangs-Ports der zweiten Operationseinheit 38 verbunden
und der D1 Bus und der D2 Bus sind jeweils mit einem Ausgangs-Port
der ersten Operationseinheit 37 und der zweiten Operationseinheit 38 verbunden.
-
Detaillierter Aufbau des Konstanten-Registers 36 und
seiner Peripherie
-
Das
Folgende ist eine detaillierte Beschreibung des Aufbaus des Konstanten-Registers 36 und seiner
peripheren Schaltkreise.
-
5 ist
ein Blockdiagramm, das den detaillierten Aufbau des Konstanten-Registers 36 und
seiner peripheren Schaltkreise zeigt. Anzumerken sei hier, dass
der feste Wert ("0") 27 in
den Zeichnungen sich auf eine feste Verschaltung von vier Signalpfaden
bezieht, die die Konstante "0" führen.
-
Die
Konstanten-Register-Kontrolleinheit 32 setzt sich zusammen
aus fünf
3-fach-Eingangs-Wählschaltern 32a bis 32e und
drei 4-fach-Eingangs-Wählschaltem 32f bis 32h,
während
sich das Konstanten-Register 36 aus acht 4-Bit-Registern 36a bis 36h zusammensetzt.
Hier entspricht jeder Satz von Eingangs- und Ausgangsdaten 4-bit-parallelen Daten.
-
In Übereinstimmung
mit den Steuersignalen des Format-Decoders 21 und des Befehls-Decoders 22 steuert
die Konstanten-Register-Steuereinheit 32 die acht Eingangs-Wählschalter 32a bis 32h,
sodass eine Konstante in dem Befehls-Register 10 oder Nullwerte
in dem Konstanten-Register 36 entsprechend einer der vier
unten angegebenen Speicherverfahren gespeichert wird.
-
Die 6A bis 6D zeigen
vier mögliche Speicherverfahren
in der vorliegenden Ausführungsform.
-
6A zeigt
ein Speicherverfahren, wenn der Format-Decoder 21 erkennt,
dass der gespeicherte Wert in dem P0.0 Feld 11 "0" oder "1" ist.
Dieses entspricht dem Fall, wenn nur eine 4-Bit-Konstante, die sich
in dem P1.0 Feld 12 befindet, in dem Konstanten-Register 36 gespeichert
wird. Genauer gesagt, werden in die Daten, die in dem Konstanten-Register 36 gespeichert
sind, aufwärts
(nach links in 6A) in 4-Bit-Einheiten verschoben
und die 4-Bit-Konstante, die in dem P1.0 Feld 12 des Befehls-Registers 10 gespeichert
ist, wird in dem niederwertigsten 4-Bit-Register 36h des
Konstanten-Registers 36 gespeichert.
-
6B zeigt
ein Speichenverfahren, wenn der Format-Decoder 21 erkennt,
dass ein in dem P0.0 Feld 11 gespeicherter Wert gleich "4" ist. Dies entspricht dem Fall, wenn
eine 16-Bit-Konstante, die sich zwischen dem P1.0 Feld 12 und
dem P2.2 Feld 15 befindet, in dem Konstanten-Register 36 gespeichert
wird. Genauer gesagt, werden die Daten, die in den unteren 16-Bits 36e bis 36h des
Konstanten-Registers 36 gespeichert sind, in die oberen
16-Bits 36a bis 36d verschoben und die 16-Bit-Konstante,
die sich zwischen dem P1.0 Feld 12 und dem P2.2 Feld 15 des
Befehls-Registers 10 befindet, wird in den niederwertigsten
16 Bits 36e bis 36h des Konstanten-Registers 36 gespeichert.
-
6C zeigt
ein Speichenverfahren, wenn der Format-Decoder 21 erkennt,
dass der in dem P0.0 Feld 11 gespeicherter Wert gleich "5" ist. Dies entspricht dem Fall, wenn
eine 16-Bit-Konstante, die sich in dem P1.0 Feld 12 und
zwischen dem P3.0 Feld 16 und dem P3.2 Feld 18 befindet,
in dem Konstanten-Register 36 gespeichert wird. Genauer
gesagt, werden in die Daten, die in den unteren 16 Bits 36e bis 36h des
Konstanten-Registers 36 gespeichert sind, in die oberen
16 Bits 36a bis 36d verschoben und die 16-Bit-Konstante,
die sich in dem P1.0 Feld 12 und zwischen dem P3.0 Feld 16 und
dem P3.2 Feld 18 des Befehls-Registers 10 befindet,
wird in den niederwertigsten 16 Bits 36e bis 36h des
Konstanten-Registers 36 gespeichert.
-
6D zeigt
ein Speicherverfahren, wenn der Format-Decoder 21 erkennt,
dass der in dem P0.0 Feld 11 gespeicherter Wert gleich "2", "3", oder "A" ist, oder wenn der Befehls-Decoder 22 erkennt, dass
das Konstanten-Register (R15) durch mindestens eines der Felder
P2.1 Feld 14, P2.2 Feld 15, P3.1 Feld 17 und
P3.2 Feld 18 angegeben ist. Dieses entspricht dem Fall,
wenn der Wert, der in dem Konstanten-Register 36 gespeichert
ist, komplett auf null zurückgesetzt
wird (was bedeutet, dass das Konstanten-Register 36 gelöscht wird),
nachdem der gespeicherte Wert des Konstanten-Registers 36 von mindestens
einer Sprungoperation aus dem P1.0 Feld 12, einer Operation
aus dem ersten Operationsfeld 59 oder einer Operation aus
dem zweiten Operationsfeld 60 verwendet wurde. Genauer
gesagt, wird unmittelbar nachdem der gespeicherte Wert des Konstanten-Registers 36 in
die PC-Einheit 33, die erste Operationseinheit 37 oder
die zweite Operationseinheit 38 ausgelesen wurde, eine
32-Bit-Konstante mit dem Wert "0" in das Konstanten-Register 36 geschrieben.
-
Hierbei
wird der Wert in dem Konstanten-Register 36 gelöscht, nachdem
er verwendet wurde, um sicherzustellen, dass immer in dem Konstanten-Register 36 ein
Wert mit einer Null-Ergänzung
gespeichert ist. Eine Null-Ergänzung
bezieht sich hier auf das Einfügen
von Nullen, das durchgeführt
wird, wenn die effektive Anzahl der Bits eines Wertes unterhalb
einer vorbestimmten Anzahl von Bits ist, wobei Nullwerte in höherwertige
Bit-Positionen eingefügt werden,
sodass der Wert die vorbestimmte Anzahl von Bits annimmt.
-
Wie
oben beschrieben, wird, wenn der Wert in dem P0.0 Feld 11 des
Befehls-Registers 10 gleich "0", "1", "4" oder "5" ist,
die Konstante, die bereits in dem Konstanten-Register 36 gespeichert
ist, verschoben und ein neuer Wert wird gespeichert. Daher wird,
nachdem der in dem Konstanten-Register 36 gespeicherte
Wert ausgelesen und verwendet wurde, dieser gespeicherte Wert gelöscht. Auf
diese Weise ist das Konstanten-Register 36 in
der Lage, nacheinanderfolgend Konstanten aufzuaddieren bis sein
gespeicherter Inhalt das nächste
Mal verwendet wird.
-
Detaillierter Aufbau der PC-Einheit 33
-
Das
Folgende ist eine detaillierte Beschreibung des Aufbaus der PC-Einheit 33.
-
7 ist
ein Blockdiagramm, das den Aufbau der PC-Einheit 33 im
Detail zeigt. Wie in 7 gezeigt, setzt sich die PC-Einheit 33 zusammen
aus einem festen Wert ("4") 33a, das
heißt
eine Verschaltung, die dauerhaft die Konstante "4" führt, ein
2-fach Eingangs-Wählschalter 33b,
ein Addierer 33c, ein PC (Program Counter) 33d zur
Speicherung einer Adresse des nächsten
zu decodierenden und auszuführenden
Befehls und einem 4-fach-Eingangs-Wählschalter 33e.
-
In
der PC-Einheit 33 arbeiten die Wählschalter 33b und 33e gemäß dem Steuersignal
von der Decodier-Einheit 20, sodass der Wählschalter 33e eine
der folgenden drei Typen von Werten an die Befehlsladeeinheit 33 als
die effektive Adresse ausgibt.
-
1. Ein Wert, bei dem "4" zu
dem Inhalt von dem PC 33d addiert wird
-
Dies
entspricht dem Fall, dass keine Verzweigung ausgeführt wird
und ein nächster
Befehl der Reihe nach ausgeführt
werden soll, was bedeutet, dass das Decodier-Ergebnis für einen
momentanen Befehl derart aussieht, dass keine Sprungoperationen
angegeben ist. Der Grund, warum "4" addiert wird, ist,
dass die Länge
eines Befehls 4 Byte beträgt, was
32 Bit bedeutet.
-
2. Ein Wert, bei dem der Inhalt des Konstanten-Registers 36 zu
dem Inhalt des PC 33d addiert wird
-
Dies
entspricht dem Fall, dass der Inhalt des Konstanten-Registers 36 als
relative Adresse zur Verzweigung verwendet wird, beispielsweise,
wenn das Decodier-Ergebnis des Sprung-Decoders 23 derart
ist, dass das P1.0 Feld 12 einen Sprung zu einer relativen
Adresse angibt.
-
3. Ein gegebener Wert als der Inhalt des
Konstanten-Registers 36
-
Dieses
entspricht dem Fall, dass der Inhalt des Konstanten-Registers 36 als
absolute Adresse zur Verzweigung verwendet wird, beispielsweise, wenn
das Decodier-Ergebnis des Sprung-Decoders 23 derart ist,
dass das P1.0 Feld 12 eine absolute Adresse angibt Wie
oben beschrieben, umfasst die PC-Einheit 33 einen besonderen
Addierer 33c und ist derart aufgebaut, dass sie direkt
den durch das Konstanten-Register 36 gespeicherten Wert
verwendet, sodass eine Steuerung der Sprungausführung mit dem gespeicherten
Wert des Konstanten-Registers als relative Adresse ausgeführt werden
kann oder als eine absolute Adresse parallel mit und unabhängig von
den Operationen, die durch die erste Operationseinheit 37 und
die zweite Operationseinheit 38 ausgeführt werden.
-
Arbeitsweise des Prozessors
-
Das
Folgende ist eine Beschreibung der Arbeitsweise des vorliegenden
Prozessors bei Decodierung und Ausführung besonderer Operationen.
-
8 ist
ein Flussdiagramm, das ein Beispiel einer Prozedur zeigt, die eine
32-Bit-Konstante verarbeitet.
Zuerst wird der Unterschied zwischen den gespeicherten Werten in
dem Register R0 und R1 festgestellt (Schritt S80) und das Ergebnis
wird mit dem gespeicherten Wert von R2 multipliziert (Schritt S81).
Die 32-Bit-Konstante "0x87654321" (entspricht dem
Wert "87654321" hexadezimal) wird dann
zu diesem Ergebnis hinzuaddiert (Schritte S82, S83) und schließlich wird
das Register R0 gelöscht (Schritt
S84).
-
9 zeigt
ein Beispiel eines Programms, dass der Prozessor bei der in 8 gezeigten
Prozedur ausführt.
Das Programm besteht aus den drei Befehlen 71 bis 73.
In 9 entspricht eine Zeile einem Befehl und der Inhalt
jedes Befehls ist durch Mnemonics dargestellt, die sich in getrennten
Feldern jedes Befehls befinden. In 9 wird der
Wert jeder Konstanten hexadezimal ausgedrückt. Daher zeigt die Beschriftung "fmtn(n = 0 – F)" den Formatcode "n", wohingegen die Beschriftung "Rn(n = 0 – 15)" den gespeicherten
Wert in einem der Register in dem Registersatz 34 zeigt.
Von diesen bezieht sich "R15" auf das Konstanten-Register 36.
-
10 ist
ein Zeitdiagramm, das die Arbeitsweise des vorliegenden Prozessors
zeigt, wenn er das in 9 gezeigte Programm ausführt. Diese 10 zeigt
die Taktzyklen, den Inhalt der allgemeinen Register R0–R3 und
des Registers R15 sowie die Daten, die auf den vier Bussen L1, R1,
L2 und R2 fließen.
-
Das
Folgende ist mit Bezug auf die 9 und 10 eine
Erklärung
der Arbeitsweise des vorliegenden Prozessors für jeden der Befehle 71 bis 73.
-
Befehl 71
-
Nachdem
der Befehl 71 in das Befehlsregister 10 geladen
worden ist, führt
der vorliegende Prozessor die in den Taktzyklen t0 bis t1 in 10 gezeigten
Operationen aus. Der Format-Decoder 21 entscheidet
aus dem Wert "fmt4" des P0.0 Feldes 11 in
dem Befehlsregister 10, dass der momentane Befehl ein 2-fach-Operations-Befehl
mit dem Formatcode "4" ist, und steuert
die Ausführungseinheit 30, sodass
die unten beschriebenen zwei Operationen parallel ausgeführt werden.
-
1. Erste Operation
-
Die
Konstanten-Register-Steuereinheit 32 steuert ihre acht
internen Wählschalter 32a bis 32h so,
dass die 16-Bit-Konstante (0x8765), die sich zwischen dem P1.0 Feld 12 und
dem P2.2 Feld 15 befindet, gemäß dem Speicherverfahren in 6B in
den unteren 16 Bit des Konstanten-Registers 36 gespeichert
wird. Entsprechend ändert
sich der Inhalt des Registers R15 von "0x00000000" auf "0x00008765", wie in den Taktzyklen t0 bis t1 in 10 gezeigt
wird.
-
2. Zweite Operation
-
Die
zweite Operationseinheit 38 erhält als Eingang den gespeicherten
Wert "0x33333333" des allgemeinen
Registers R0 und den gespeicherten Wert "0x22222222" des allgemeinen Registers R1 und speichert,
nachdem sie letzteren von dem ersteren subtrahiert hat, das Ergebnis
in dem allgemeinen Register R0. Als Ergebnis ändert sich der gespeicherte
Inhalt des allgemeinen Registers R0 von dem Wert "0x33333333" auf den Wert "0x111111111" in den Taktzyklen
t0 bis t1, wie in 10 gezeigt.
-
Befehl 72
-
Danach,
nachdem der Befehl 72 in das Befehlsregister 10 geladen
worden ist, arbeitet der vorliegende Prozessor wie in den Taktzyklen
t1 bis t2 in 10 gezeigt. Der Format-Decoder 21 entscheidet auf
Grund des Wertes "fmt4" des P0.0 Feldes 11 in dem
Befehlsregister 10, dass der vorliegende Befehl ein 2-fach-Operations-Befehl
mit dem Formatcode "4" ist und steuert
die Ausführungseinheit 30 so,
dass die beiden unten beschriebenen Operationen parallel ausgeführt werden.
-
1. Erste Operation
-
Die
Konstanten-Register-Steuereinheit 32 steuert ihre acht
internen Wählschalter 32a bis 32h so,
dass die 16-Bit-Konstante ("0x4321"), die sich zwischen
den P1.0 Feld 12 und dem P2.2 Feld 15 befindet,
in den unteren 16 Bits des Konstanten-Registers 36 gemäß dem in 6B gezeigten
Speicherverfahren gespeichert wird. Entsprechend ändert sich
der Inhalt des Registers R15 von "0x00008765" nach "0x87654321", wie in den Taktzyklen t1 bis t2 in 10 gezeigt.
-
2. Zweite Operation
-
Die
zweite Operationseinheit 38 erhält als Eingang den gespeicherten
Wert "0x00000004" des allgemeinen
Registers R2 und den gespeicherten Wert "0x11111111" des allgemeinen Registers R0 und multipliziert
beide miteinander, bevor das Ergebnis in dem allgemeinen Register
R0 gespeichert wird. Als Ergebnis ändert sich der gespeicherte
Inhalt des allgemeinen Registers R0 von dem Wert "0x11111111" in den Wert "0x44444444" in den Taktzyklen
t1 bis t2, wie in 10 gezeigt.
-
Befehl 73
-
Danach,
nachdem der Befehl 73 in das Befehlsregister 10 geladen
worden ist, arbeitet der vorliegende Prozessor wie in den Taktzyklen
t2 bis t3 in 10 gezeigt. Der Format-Decoder 21 entscheidet auf
Grund des Wertes "fmt7" des P0.0 Feldes 11 in dem
Befehlsregister 10, dass der vorliegende Befehl ein 2-fach-Operations-Befehl
mit dem Formatcode "7" ist und steuert
die Ausführungseinheit 30 so,
dass die beiden unten beschriebenen Operationen parallel ausgeführt werden.
-
1. Erste Operationen
-
Die
erste Operationseinheit 37 erhält als Eingang den gespeicherten
Wert "0x87654321" des allgemeinen
Registers R15 und den gespeicherten Wert "0x44444444" des allgemeinen Registers R0 und addiert
beide, bevor das Ergebnis in dem allgemeinen Register R0 gespeichert
wird. Als Ergebnis ändert
sich der gespeicherte Inhalt des allgemeinen Registers R0 von dem
Wert "0x44444444" in den Wert "0xCBA98765" in den Taktzyklen
t2 bis t3, wie in 10 gezeigt.
-
2. Zweite Operation
-
Die
zweite Operationseinheit 38 empfängt als Eingang die 8-Bit-Konstante
("0x00"), die sich in dem
P1.0 Feld 12 und dem P3.1 Feld 17 befindet und lässt die
Konstante passieren, sodass sie in dem allgemeinen Register R3 gespeichert
wird. Als Ergebnis ändert sich
der Inhalt des allgemeinen Registers R3 von dem zuvor gespeicherten
Wert "0xFEDCBA98" nach "0x00000000", wie in den Taktzyklen
t2 bis t3 in 10 gezeigt. Wie oben für den vorliegenden
Prozessor beschrieben, ist die 32-Bit-Konstante "0x87654321" in zwei Teile aufgetrennt, die in den
zwei Befehlen 71 und 72 angeordnet sind, wobei
diese Teile nacheinanderfolgend in dem Konstanten-Register 36 durch
Verschieben seines gespeicherten Wertes gespeichert werden. Diese
gespeicherte Konstante wird dann entsprechend dem dritten Befehl
verwendet, dem Befehl 73. Auf diese Weise kann die in dem
Flussdiagramm der 8 gezeigte Prozedur durch die
drei Befehle 71 bis 73 ausgeführt werden.
-
Das
Folgende ist eine Erklärung
der Arbeitsweise des vorliegenden Prozessors, der ein unterschiedliches
Programm verwendet, das 16-Bit-Konstanten verarbeitet.
-
11 zeigt
ein Beispiel eines Programms, das eine 16-Bit-Konstante verarbeitet.
Dieses Programm setzt sich aus fünf
Befehlen 74 bis 78 zusammen.
-
Die
Arbeitsweise des vorliegenden Prozessors ist für jeden Befehl 74 bis 78 wie
unten beschriebenen.
-
Befehl 74
-
Wenn
der Befehl 74 in das Befehlsregister 10 geladen
worden ist, entscheidet der Format Decoder auf Grund des Wertes "fmt0" des P0.0 Feldes 11 in dem
Befehls-Register 10, dass der vorliegende Befehl ein 3-fach-Operations-Befehl
mit dem Formatcode "0" ist, und steuert
die Ausführungseinheit 30 so,
dass die drei Operationen, die unten beschrieben werden, parallel
ausgeführt
werden.
-
1. Erste Operation
-
Die
Konstanten-Register-Steuereinheit 32 steuert ihre acht
internen Wählschalter 32a bis 32h so,
dass die 4-Bit-Konstante ("0x8"), die sich in dem P1.0
Feld 12 befindet, in den untersten vier Bits des Konstanten-Registers 36 entsprechend
dem in 6A gezeigten Speicherverfahren
gespeichert wird.
-
2. Zweite Operation
-
Die
erste Operationseinheit 37 empfängt als Eingang den gespeicherten
Wert des allgemeinen Registers R6 und lässt diesen Wert passieren,
sodass er in dem allgemeinen Register R1 gespeichert wird.
-
3. Dritte Operation
-
Auf
die gleiche Weise empfängt
die zweite Operationseinheit 38 als Eingang den gespeicherten Wert
des allgemeinen Registers R7 und lässt in diesen Wert passieren,
sodass er in dem allgemeinen Register R2 gespeichert wird.
-
Befehl 75
-
Wenn
der Befehl 75 in das Befehlsregister 10 geladen
wurde, entscheidet der Format-Decoder 21 auf Grund des
Wertes "fmt0" des P0.0 Feldes 11 in dem
Befehls-Register 10,
dass der vorliegende Befehl ein 3-fach-Operations-Befehl mit dem
Formatcode "0" ist und steuert
die Ausführungseinheit 30 so, dass
die unten beschriebenen drei Operationen parallel ausgeführt werden.
-
1. Erste Operation
-
Die
Konstanten-Register-Steuereinheit 32 steuert ihre acht
internen Wählschalter 32a bis 32h so,
dass die 4-Bit-Konstante ("0x7"), die sich in dem P1.0
Feld 12 befindet, in den untersten vier Bits des Konstanten-Registers 36 entsprechend
dem in 6A gezeigten Speicherverfahren
gespeichert wird. Nach dieser Operation wird die Konstante "0x87" in den untersten
acht Bits des Konstanten-Registers 36 gesetzt.
-
2. Zweite Operation
-
Die
erste Operationseinheit 37 empfängt als Eingang den gespeicherten
Wert des allgemeinen Registers R0 und des allgemeinen Registers
R1 und addiert diese beiden Werte. Die erste Operationseinheit 37 speichert
das Additionsergebnis in dem allgemeinen Register R1.
-
3. Dritte Operation
-
In
der gleichen Weise empfängt
die zweite Operationseinheit 38 als Eingang den gespeicherten Wert
des allgemeinen Registers R0 und des allgemeinen Registers R2 und
addiert diese beiden Werte. Die zweite Operationseinheit 38 speichert
das Additionsergebnis in dem allgemeinen Register R2.
-
Befehle 76, 77
-
Die
Befehle 76 und 77 werden in der gleichen Weise
wie oben beschrieben ausgeführt
und als ein Ergebnis wird die Konstante "0x8765" in den unteren 16 Bit des Konstanten-Registers 36 gespeichert.
-
Befehl 78
-
Wenn
der Befehl 78 in das Befehlsregister 10 geladen
worden ist, arbeitet der vorliegende Prozessor in der gleichen Weise
wie wenn er den Befehl 73 verarbeitet. Wie oben für den vorliegenden
Prozessor beschrieben, ist die 16-Bit-Konstante "0x8765" in vier Teile aufgetrennt, die in den
Befehlen 74 bis 77 angeordnet sind, wobei diese
Teile aufeinanderfolgend in dem Konstanten-Register 36 durch
Verschieben seines gespeicherten Wertes gespeichert werden. Diese
gespeicherte Konstante wird dann entsprechend des fünften Befehls,
dem Befehl 78, verwendet.
-
Vergleich mit einem Standardprozessor
-
Das
Folgende ist eine Beschreibung des Verarbeitungsablaufs, der von
einem Standardprozessor für
ein Programm mit dem gleichen Inhalt wie in den 9 und 10 gezeigt,
ausgeführt
wird, und ein Vergleich mit der Verarbeitung in der vorliegenden Erfindung.
Hier bezieht sich der Ausdruck "Standardprozessor" auf einen Prozessor,
der Befehle ausführt,
deren Wortlänge
auf 32 Bit festgelegt ist und damit die gleiche wie für den vorliegenden
Prozessors ist, nur, dass Konstruktionsmerkmale fehlen, wie beispielsweise
das Konstanten-Register 36 und die Konstanten-Register-Steuereinheit 32,
um die Konstanten aufzuaddieren, die auf die Befehle aufgeteilt sind.
-
12A zeigt die Felddefinition der Befehle, die
von einem Standardprozessor ausgeführt werden, wohingegen 12B das Format der Befehle zeigt. Hierbei wird
unterstellt, dass der Standardprozessor drei Typen von 2-fach-Operations-Befehlen, die
Befehle 101 bis 103, und einen Typ eines Einfach-Operations-Befehls,
den Befehl 104 ausführen kann.
-
13 zeigt
ein Beispiel eines Programms, das von einem Standardprozessor ausgeführt werden
soll. Dieses Programm hat den gleichen zu verarbeitenden Inhalt
wie das in 9 gezeigte Programm, das heißt, die
gleiche Prozedur, wie in dem Flussdiagramm in 8.
-
Wie
man durch Vergleich der 13 und 9 erkennt,
umfasst das Programm für
den Standardprozessor zwei Befehle mehr als das Programm für den Prozessor
der vorliegenden Erfindung.
-
Der
Grund, warum die "NOP-Codes" in die Befehle 105 und 106 eingefügt sind,
ist, dass der Befehl 106 das Operationsergebnis des Befehls 105 verwendet,
sodass diese Befehle nicht parallel ausgeführt werden können. Daher
ist der Grund, warum die Konstante "0x87654321" in obere 16-Bit und untere 16-Bit aufgeteilt
ist, die in dem Konstanten-Register 36 gesetzt
werden (Befehle 107 und 108), der, dass es nicht
möglich
ist, eine 32-Bit-Konstante
und einen Operations-Code für
einen "Setting"-Befehl in einen
einzigen 32-Bit-Befehl
einzupassen.
-
14 zeigt
auch ein Beispiel eines Programms für einen Standardprozessor.
Dieses Programm hat denselben zu verarbeitenden Inhalt wie das in 11 gezeigte
Programm. Wie durch Vergleich der 14 und 11 zu
erkennen ist, umfasst das Programm für den Standardprozessor einen
Befehl mehr als das Programm für
den Prozessor der vorliegenden Erfindung.
-
Wie
oben beschrieben, weisen die Befehle, die von dem Prozessor der
vorliegenden Erfindung ausgeführt
werden, eine höchst
effiziente Feldstruktur auf, wobei maximal drei Operationen mit
vergleichsweiser kurzer Wortlänge
von 32 Bit angegeben werden können.
Demgemäß können mit
dem Prozessor der vorliegenden Erfindung eine 16-Bit-oder eine 32-Bit-Konstante, die über eine Mehrzahl
von Befehlen aufgeteilt ist, in dem Konstanten-Register 36 aufaddiert werden,
um diese Konstante in ihrer ursprünglichen Form wieder herzustellen
und dann für
eine Sprungoperation oder eine arithmetisch-logische Operationen
verwenden zu können.
Demgemäß kann,
wenn ein kleiner Bereich in dem Befehl verfügbar ist, dieser Bereich effizient dazu
verwendet werden, den Teil einer Konstanten dort anzuordnen, sodass
der Codeumfang des Programms im Vergleich zu der Verarbeitung auf
einem Standardprozessor reduziert werden kann.
-
Modifikation
-
Die 15A bis 15D zeigen
Befehlsformate eines VLIW-Prozessors, die Modifikationen der vorliegenden
Erfindung sind. In diesen Figuren stellt das kleinste Intervall,
abgegrenzt durch die vertikalen Linien, ein Bit dar und die Beschriftung "fmt" zeigt das Formatfeld.
-
Der
in 15A gezeigte Befehl besteht aus einem 5-Bit-Formatfeld,
einem 7-Bit-Operationsfeld und
zwei 10-Bit-Operationsfeldern. Der in 15B gezeigte
Befehl besteht unterdessen aus einem 2-Bit-Formatfeld, einem 4-Bit-Operationsfeld
und zwei 13-Bit-Operationsfeldem.
Der in 15C gezeigte Befehl besteht
aus einem 3-Bit-Formatfeld, einem 3-Bit-Operationsfeld und zwei
13-Bit-Operationsfeldern. Schließlich besteht der in 15D gezeigte Befehl aus einem 4-Bit-Formatfeld,
einem 2-Bit-Operationsfeld und zwei 13-Bit-Operationsfeldem.
-
Diese
vier Arten der Befehle haben folgende Ähnlichkeiten mit dem Befehl 50 in
der oben beschriebenen und in 2A gezeigt
Ausführungsform.
- i. Die Befehls-Wortlänge ist auf 32 Bits festgelegt.
- ii. Jeder Befehl hat ein Formatfeld und drei Operationsfelder.
- iii. Die drei Operationsfelder haben nicht die gleiche Struktur,
das heißt,
zwei der Operationsfelder haben die gleiche Struktur, wohingegen
das verbleibende Operationsfeld kurz ist.
-
Demzufolge
weisen diese vier Befehlstypen die gleichen Kennzeichen wie der
Befehl 50, der in der oben angegebenen Ausführungsform
beschrieben ist, auf.
- i. Die Befehle haben
eine Feldstruktur, wobei maximal drei Operationen trotz der vergleichsweise kurzen
32-Bit Wortlänge
angegeben werden können.
- ii. Ein kleines Operationsfeld, das ideal ist, um kurze Befehle
einzufügen,
wie beispielsweise Sprungbefehle, die nicht zwei Operanden erfordern,
wird bereitgestellt, sodass die Codeeffizienz der Befehle hoch ist.
- iii. Ein Formatfeld wird bereitgestellt, sodass durch die Angabe,
dass eine Konstante oder ein Teil einer Konstanten in einem Operationsfeld
vorliegt, in dem normalerweise eine NOP- Befehl vorgesehen ist,
der Codeumfang eines Programms reduziert werden kann.
-
Auf
der anderen Seite weisen die oben beschriebenen vier Befehlsarten
auch folgende Kennzeichen auf, die sich von denen des in der obigen Ausführungsform
beschriebenen Befehls 50 unterscheiden. Der in 15A gezeigte Befehl besitzt die Vorteile eines
erweiterten Formatfeldes, das heißt, eine größere Anzahl von Befehlstypen
kann definiert werden und der Befehl ist in der Lage mindestens
einen Operand in jedem der drei Operationsfelder bereitzustellen.
Die in 15B bis 15D gezeigten Befehle
besitzen unterdessen den Vorteil von zwei erweiterten Operationscodes
("op2" und "op3"), sodass eine größere Auswahl
an Operationen definiert werden kann.
-
16 ist
ein Blockdiagramm, das den Aufbau eines VLIW-Prozessors der vorliegenden
Erfindung zur Ausführung
des in 15A gezeigten Befehls darstellt.
Wie durch Vergleich dieses Aufbaus mit dem Aufbau in 4 ersichtlich
ist, ist der grundsätzliche
Aufbau des Prozessors der gleiche, obwohl es einige Unterschiede
hinsichtlich der Verbindungen zwischen den Befehlsregistern 10, 110 und
den Decodier-Einheiten 20, 120 gibt.
Auf diese Weise können
VLIW-Prozessoren zur Ausführung
der modifizierten, in den 15A bis 15D gezeigten Befehle realisiert werden, indem
nur Teiländerungen
an dem VLIW-Prozessor in der oben angegebenen Ausführungsform
durchgeführt
werden.
-
Der
Prozessor der vorliegenden Erfindung wurde an Hand der oben angegebenen
Ausführungsform
erläutert,
obgleich es klar ist, dass mehrere weitere Modifikationen möglich sind.
Vier weitere Beispiele von diesen werden unten angeführt.
- (1) Die Ausführungsform und die oben angegebene
Modifikation der vorliegenden Erfindung behandeln alle den Fall,
bei dem die Befehlswortlänge
32 Bit ist und wo maximal drei Operationen angegeben werden, obgleich
die vorliegende Erfindung nicht auf diese Anzahlen begrenzt ist.
Als
ein Beispiel kann der in 2A gezeigte
Befehl ferner einen weiteren 4-Bit-Operationscode und einen weiteren 4-Bit-Operanden
umfassen, wobei die gesamte Wortlänge des Befehls 40 Bits ist.
Auf diese Weise wird es möglich,
Befehle mit hoher Codeeffizienz zu definieren, wobei ein Maximum
von vier Operationen durch einen einzigen Befehl mit einer vergleichsweise
kurzen Wortlänge
von 40 Bit ausgeführt
werden kann.
- (2) Der Befehl 50 in der oben angegebenen Ausführungsform
enthält
nur ein Feld (das P1.0 Feld 52), das einen impliziten Operanden
verwendet (den gespeicherten Wert des Konstanten-Registers 36),
obgleich die vorliegende Erfindung nicht darauf beschränkt werden
muss, und daher zwei oder mehr derartige Felder aufweisen kann.
Diese können
durch geeignete Definition eines neuen Befehlsformats verarbeitet
werden.
- (3) In der oben angegebenen Ausführungsform ist ein Beispiel
angegeben, dass eine numerische Konstante verarbeitet, obwohl es
für die
Erfindung natürlich
gleichermaßen
möglich
ist, eine Zeichenkonstante zu verarbeiten. Dieses ist möglich, weil
eine lange Zeichenkonstante, die über eine Mehrzahl von Befehlen
aufgeteilt ist, durch aufeinanderfolgendes Speichern verschiedener
Teile der Zeichenkonstante in dem Konstanten-Register 36 akkumuliert
werden kann.
- (4) Wie an Hand der in den 2B bis 2D der obigen
Ausführungsform
angegebenen Befehlsformaten ersichtlich ist, kann nur eine 4-Bit-
oder eine 16-Bit-Konstante in dem Konstanten-Register in der oben
angegebenen Ausführungsform durch
einen einzigen Befehl gespeichert werden, obgleich dies keine Einschränkung für die vorliegende
Erfindung ist. Als Beispiel ist es gleichermaßen möglich, ein Befehlsformat zu
definieren, durch das eine 12-Bit-oder eine 28-Bit-Konstante in
dem Konstanten-Register 36 durch einen einzigen Befehl
gespeichert werden kann. Um dieses auszuführen, ist es nur erforderlich,
das Verbindungsschema der peripheren Schaltkreise des Konstanten-Registers 36 zu ändern.
-
Obwohl
die vorliegende Erfindung vollständig
durch die Beispiele mit Bezug auf die begleitenden Zeichnungen beschrieben
wurde, soll bemerkt werden, dass verschiedene Änderungen und Modifikationen
für den
Fachmann offensichtlich sind. Daher, soweit nicht derartige Änderungen
und Modifikationen aus dem Blickwinkel der vorliegenden Erfindung
herausführen,
sollten sie so ausgelegt werden, dass sie durch die Erfindung umfasst
sind.