-
HINTERGRUND DER ERFINDUNG
-
1. Gebiet der Technik
-
Diese
Erfindung betrifft die Verbesserungen des VLIW-Befehlsprozessors
für variable
Wortlänge.
-
2. Hintergrund der Technik
-
Auf
diesem Gebiet gibt es eine Technik, die als Verfahren der parallelen
Befehlsausführung
bekannt ist. Bei diesem Verfahren werden zwei oder mehr Befehle
gleichzeitig mittels Parallelverarbeitung ausgeführt, um die Leistung des Prozessors
zu verbessern.
-
Ein
Beispiel für
das Verfahren der parallelen Befehlsausführung wird in US. Pat. Nr.
4.833.599 gezeigt. Im Besonderen wird ein Prozessor gezeigt, der gleichzeitig
parallel eine Vielzahl von Befehlen ausführt, indem er VLIW (Very Long
Instruction Words – sehr
lange Befehlswörter)
verwendet. Obwohl in diesem Prozessor die Anzahl der Befehle, die
ein einzelner VLIW-Befehl enthalten kann, 20 oder mehr beträgt, ist
die VLIW-Befehlswortlänge festgelegt.
-
Da
die VLIW-Befehlswortlänge
bei einem solchen dem Stand der Technik entsprechenden Prozessor
festgelegt ist, bestehen die folgenden Vor- und Nachteile. Der Vorteil
besteht darin, dass der Prozessor bei der Ausführung einer Vielzahl von Befehlen,
die beinahe der maximalen Anzahl der parallel ausführbaren
Befehle entspricht, eine hohe Leistung erreicht. Ist hingegen die
Anzahl der parallel ausgeführten
Befehle klein, steigt die Häufigkeit, dass
der Befehl, der die in einem VLIW-Befehl enthaltenen Informationen
anzeigt, zu einem NOP-Befehl (Leerbefehl) wird. Obwohl eine solche „NOP"-Anzeige ein Befehl
ist, wird dadurch erheblich Befehlsspeicher verschwendet. Um auf
den oben genannten Nachteil einzugehen und die Anzahl der indem
VLIW-Befehl enthaltenen „NOP"-Befehle zu verringern,
wenn beispielsweise eine VLIW-Befehlswortlänge klein festgelegt ist, wird
die maximale Anzahl der parallel ausführbaren Befehle verringert. Folglich
kann selbst der VLIW-Befehlsprozessor keine hohe Leistung erbringen.
Wie oben erwähnt,
kann in herkömmlichen
VLIW-Befehlsprozessoren die Anzahl der gleichzeitig ausgeführten Befehle
nicht dynamisch geändert
werden, da die VLIW-Befehlswortlänge festgelegt
ist. Deshalb besitzen die herkömmlichen
VLIW-Befehlsprozessoren
den Nachteil, dass sie weder eine sehr hohe Leistung, die bei einer
großen
Anzahl von parallel ausgeführten
Befehle erzielt werden kann, erreichen, noch die Anzahl der „NOP"-Befehle verringern
können,
was durch eine kleine Anzahl von parallel ausgeführten Befehlen erreicht wird.
-
US
Pat. Nr. 5.241.636 offenbart einen Prozessor. Dieser Prozessor verfügt über zwei
Ausführungsmodi,
wobei in dem einem ein einzelner Befehl ausgeführt wird und in dem anderen
zwei Befehle gleichzeitig parallel ausgeführt werden. In diesem US-Patent
wird das Umschalten zwischen diesen beiden Ausführungsmodi von einem in dem
Befehl enthaltenen Feld bestimmt.
-
Ein
Bericht über
einen VLIW-Befehlsprozessor, der ein solches Feld verwendet, ist
im „MICROPROCESSOR
REPORT", Dezember
1995, S. 12–15 zu
finden. Ein Feld, in dem die Anzahl der Befehle angezeigt wird,
ist in einem VLIW-Befehl enthalten, und die VLIW-Befehlswortlänge ist
variabel gestaltet.
-
Der
oben genannte Prozessor erreicht eine effiziente Nutzung des Befehlsspeichers
und bewerkstelligt die gleichzeitige Ausführung einer Vielzahl von Befehlen.
Es ist jedoch notwendig, ein Feld für die Anzeige einer Befehlsanzahl
(der Anzahl von Befehle) in einem VLIW-Befehl bereitzustellen und
ein Befehlsformat zu verwenden, das sich von einem herkömmlich verwendeten
Befehlsformat für
konventionelle Prozessoren unterscheidet. Demzufolge ist es schwierig,
ein Objektprogramm auszuführen,
das für
die Verwendung durch herkömmliche
Prozessoren erstellt und übersetzt
wurde, und es ist schwer möglich,
die Vergleichbarkeit des Objektprogramms mit herkömmlichen
Prozessoren aufrecht zu erhalten.
-
Dokument
EP-0 551 090 A2 offenbart einen RISC-Prozessor, der mehrere Befehle
mit kurzer Wortlänge,
die einer einzelnen Operation entsprechen bzw. einen Befehl mit
großer
Wortlänge,
der mehrere Operationen verbindet, ausführen kann. Dieser Prozessor
enthält
eine Einheit, die die Befehlslänge
bestimmt und die dynamisch festlegt, ob der von einem Programmzähler angezeigte
Befehl ein Befehl mit kurzer oder langer Wortlänge ist.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Die
vorliegende Erfindung entstand unter Berücksichtigung des oben angeführten Problems mit
den dem Stand der Technik entsprechenden Verfahren.
-
Entsprechend
ist es die Aufgabe der vorliegenden Erfindung, einen verbesserten
VLIW-Befehlsprozessor
bereitzustellen, so dass Befehlsspeicher effizient genutzt, eine
Vielzahl von Befehlen gleichzeitig ausgeführt und Objektprogramme für herkömmliche
Prozessoren ausgeführt
werden können.
-
Es
ist eine weitere Aufgabe der vorliegenden Erfindung, einen verbesserten
VLIW-Befehlsprozessor
bereitzustellen, der VLIW-Befehle fehlerfrei ausführen kann,
selbst in solch einem Fall, in dem sich entsprechende VLIW-Befehlsprozessoren
unterschiedlicher Modelle voneinander durch die maximale Anzahl
der gleichzeitig parallel ausgeführten
Befehle unterscheiden und in solch einem Fall, in dem die Anzahl
der Befehle, die in einem VLIW-Befehl enthalten sind, die maximale
Anzahl der Befehle, die ein Prozessor gleichzeitig parallel ausführen kann, überschreitet.
-
Diese
Aufgabe wird durch die in Anspruch 1 aufgeführten Bestandteile erfüllt. Weitere
vorteilhafte Ausführungsbeispiele
der vorliegenden Erfindung werden in den Unteransprüchen beschrieben.
-
Es
wird ein VLIW-Befehlswortlängen-Register
oder ein Befehlsanzahlregister für
das Speichern von Informationen bereitgestellt, die die Anzahl der
in einem VLIW-Befehl enthaltenen Befehle anzeigen. Die Anzahl der
in einem VLIW-Befehl enthaltenen Befehle wird durch die Anzahl der
Ausführungseinheiten
(das heißt,
die größte Anzahl
von Befehlen, die der Prozessor parallel ausführen kann) dividiert, um einen
Quotienten m und einen Rest δ zu
ermitteln. Nachdem die Befehlsausführung eine Anzahl von Malen
ausgeführt
wurde, die dem Quotienten m gleich ist, werden Befehle, deren Anzahl
dem Rest δ gleich
ist, ausgeführt.
-
Ein
verbesserter VLIW-(Very Long Instruction Word)Befehlsprozessor für variable
Wortlänge umfasst:
- (a) eine Vielzahl von Ausführungseinheiten für die Ausführung von
Befehlen;
- (b) ein VLIW-Befehlswortlängen-Register,
das eine VLIW-Befehlswortlänge
speichert; und
- (c) eine Befehls-Steuereinheit;
die Befehls-Steuereinheit
empfängt
einen VLIW-Befehl mit einer Anzeige, die eine VLIW-Befehlswortlänge anzeigt;
die
Befehls-Steuereinheit überschreibt
auf Basis der durch den empfangenen VLIW-Befehl angezeigten VLIW-Befehlswortlänge die
in dem VLIW-Befehlswortlängen-Register gespeicherte VLIW-Befehlswortlänge;
die
Befehls-Steuereinheit steuert auf Basis der in dem VLIW-Befehlswortlängen-Register gespeicherten überschriebenen
VLIW-Befehlswortlänge die
parallele Ausführung
von Befehlen, die durch alle oder einige der Vielzahl von Ausführungseinheiten
durchgeführt
wird.
-
In
dem VLIW-Befehlsprozessor für
variable Wortlänge
wird der VLIW-Befehl, der die VLIW-Befehlswortlänge enthält, durch eine Vielzahl von
Befehlen gebildet, wobei einer der Befehle ein Wortlängen-Überschreibbefehl
zum Überschreiben
der VLIW-Befehlswortlänge ist.
-
Ein
verbesserter VLIW-Befehlsprozessor für variable Wortlänge umfasst:
- (a) eine Vielzahl von Ausführungseinheiten, von denen
jede einen Befehl ausführt;
- (b) ein Befehlsanzahl-Register, das die Anzahl der in einem
VLIW-Befehl enthaltenen Befehle speichert;
- (c) eine Befehls-Steuereinheit;
die Befehls-Steuereinheit
empfängt
einen VLIW-Befehl mit einer Anzeige, die die Anzahl der Befehle
anzeigt;
die Befehls-Steuereinheit überschreibt auf Basis der Anzeige
der Befehlsanzahl, die in dem Befehlsanzahl-Register gespeicherte
Befehlsanzahl;
die Befehls-Steuereinheit steuert auf Basis
der überschriebenen
Befehlsanzahl die parallele Ausführung
von Befehlen, die durch alle oder einige der Vielzahl von Ausführungseinheiten
durchgeführt
wird.
-
In
dem oben genannten Prozessor wird der VLIW-Befehl, der die Anzeige
der Befehlsanzahl enthält,
durch eine Vielzahl von Befehlen gebildet, wobei einer der Befehle
ein Befehlsanzahl-Überschreibbefehl
zum Überschreiben
der Befehlsanzahl ist.
-
Ein
VLIW-Befehlsprozessor für
variable Wortlänge
umfasst eine Vielzahl von Ausführungseinheiten
für die
Ausführung
von Befehlen und eine Befehls-Steuereinheit für die Steuerung der Befehlsausführung, die
durch jede Ausführungseinheit durchgeführt wird.
-
Die
Befehls-Steuereinheit umfasst:
- (a) eine Divisionseinrichtung,
die eine Divisionsoperation mit der Anzahl von Befehlen, die einen einzelnen
VLIW-Befehl bilden, als einem Dividenden und der Anzahl der Ausführungseinheiten
als einem Divisor durchführt,
um einen Quotienten und einen Rest zu ermitteln;
- (b) eine Befehls-Steuereinrichtung;
wenn der Quotient nicht
Null ist, steuert die Befehls-Steuereinrichtung die Ausführungseinheiten so,
dass sie gleichzeitig parallel Befehle, deren Anzahl der Anzahl
der Ausführungseinheiten gleich
ist, eine Anzahl von Malen ausführen,
die dem Quotienten gleich ist;
wenn der Rest nicht Null ist,
steuert die Befehls-Steuereinrichtung einige der Ausführungseinheiten,
deren Anzahl dem Rest gleich ist, so, dass sie gleichzeitig parallele
Befehlsausführung durchführen;
wenn
der Quotient Null beträgt,
steuert die Befehls-Steuereinrichtung einige der Ausführungseinheiten,
deren Anzahl dem Rest gleich ist, so, dass sie gleichzeitig parallele
Befehlsausführung durchführen;
wobei
als ein Ergebnis dieses Aufbaus eine Vielzahl von Befehlen, die
einen einzelnen VLIW-Befehl bilden, in eine Vielzahl von Befehlssätzen unterteilt
werden, um die Befehlsausführung
parallel dem Befehlssatz nach durchzuführen.
-
Entweder
auf Basis der Anzeige der VLIW-Befehlswortlänge, die in einem VLIW-Befehl enthalten
ist oder auf Basis der Anzeige der Befehlsanzahl, die in einem VLIW-Befehl
enthalten ist (zum Beispiel auf Basis eines Befehlswortlängen-Überschreibbefehls
oder eines Befehlsanzahl-Überschreibbefehls),
wird eine in dem VLIW-Befehlswortlängen-Register gespeicherte VLIW-Befehlswortlänge oder
eine in dem Befehlsanzahl-Register gespeicherte Befehlsanzahl überschrieben
und aktualisiert. Dementsprechend wird, wenn entweder die Wortlänge von
VLIW-Befehlen kurz oder die Anzahl der Befehle, die aktualisiert
werden, gering ist, die Anzeige von „NOP"-Befehlen verringert oder ist nicht
mehr vorhanden, wodurch eine effiziente Nutzung des Befehlsspeichers
erreicht werden kann. Andererseits wird, für den Fall normaler Befehle
(Objektprogramme) ohne die Bereitstellung von Feldern, in denen
die VLIW-Befehlswortlänge
angezeigt wird, eine VLIW-Wortlänge
oder eine Befehlsanzahl, die die Anzahl der Befehle anzeigt, an
eine Befehlswortlänge entsprechend
eines jeden Modells initialisiert. Danach wird eine solche initialisierte
Wortlänge
als festgelegter Wert verwendet, und die Objektprogramme werden
ausgeführt.
Ein VLIW-Befehl wird aus einer Vielzahl von Befehlen gebildet. Es
kann jedoch ein VLIW-Befehl verwendet werden, dem Start- und Enddaten
zu seinem Anfang beziehungsweise Ende hinzugefügt werden.
-
Zusätzlich kann
das oben Beschriebene für den
Fall der Bereitstellung eines Befehlsanzahl-Registers für das Speichern
einer Befehlsanzahl angewendet werden, die die Anzahl der in einem VLIW-Befehl
enthaltenen Befehle anzeigt. Mit anderen Worten bedeutet dies, dass,
wenn alle Bitlängen, die
für die
Spezifizierung jedes einer Vielzahl von Befehlen, der in einem VLIW-Befehl
enthalten ist, die selben sind, eine eineindeutige Entsprechung
zwischen der VLIW-Befehlswortlänge
und der Anzahl der Befehle (der Befehlsanzahl) besteht. Wenn beispielsweise
die Wortlänge
eines VLIW-Befehls 64 Bytes lang ist, kann die Anzahl der in einem VLIW-Befehl
enthaltenen Befehle auf 16 berechnet werden, wenn die Bitlänge eines
Befehls 4 Bytes beträgt.
Dementsprechend können,
wie in dem oben beschriebenen Fall, VLIW-Befehle mit einem Feld,
in dem die Befehlsanzahl angezeigt wird sowie Objektprogramme für herkömmlich verwendete
Prozessoren ausgeführt
werden.
-
Des
Weiteren werden ein Quotient m und ein Rest δ der Divisionsoperation verwendet.
Wenn m = 0 ist, werden L Befehle (L = δ) parallel ausgeführt. Wenn
m nicht Null ist, werden Befehle, deren Anzahl der Anzahl der in
dem Prozessor bereitgestellten Ausführungseinheiten gleich ist,
parallel eine Anzahl von Malen ausgeführt, die dem Quotienten m gleich ist.
Wenn δ nicht
Null beträgt,
wird die Anzahl von Befehlen ausgeführt, die dem Rest δ gleich ist.
Als ein Ergebnis dieser Bedingungen können, selbst wenn ein Unterschied
in der maximalen Anzahl der parallel ausführbaren Befehle zwischen VLIW-Befehlsprozessoren
besteht, oder wenn die Anzahl der in einem VLIW-Befehl enthaltenen
Befehle die maximale Anzahl der Befehle, die ein VLIW-Befehlsprozessor
parallel ausführen
kann, überschreitet,
die VLIW-Befehle ausgeführt
werden, indem der Quotient m unter der maximalen Anzahl der parallel
ausführbaren
Befehle festgelegt wird.
-
Die
zuvor beschriebenen Aufgaben und anderen Aspekte der vorliegenden
Erfindung sind mit Hilfe der folgenden Beschreibung und der beigefügten Abbildungen
besser nachzuvollziehen.
-
KURZE BESCHREIBUNG DER
ZEICHNUNGEN
-
Die
vorliegende Erfindung wird mit Bezug auf die Zeichnungen beschrieben,
wobei:
-
1 einen
VLIW-Befehlsprozessor für
variable Wortlänge
in Blockform entsprechend des ersten Ausführungsbeispiels der vorliegenden
Erfindung darstellt;
-
2 die
interne Konfiguration einer Befehls-Steuereinheit des VLIW-Befehlsprozessors
in Blockform darstellt;
-
3 ein
Beispielprogramm darstellt, das im VLIW-Prozessor ausgeführt wird;
-
4, 5, 6 und 7 Schemen sind,
die ein erstes, zweites, drittes bzw. viertes Beispiel über die
Auswirkungen von VLIW-Befehlswortlängen-Überschreibbefehlen auf die
Pipeline-Operationen des VLIW-Befehlsprozessors darstellen;
-
8 die
interne Konfiguration einer internen VLIW-Befehlswiederholungs-Steuereinrichtung der
Befehls-Steuereinheit in Blockform darstellt;
-
9, 10, 11 und 12 Schemen sind,
in denen ein erstes, zweites, drittes bzw. viertes Beispiel über die
Auswirkungen von Verzweigungsbefehlen auf die Pipeline-Operationen des VLIW-Befehlsprozessors
dargestellt werden;
-
13 ein
Ablaufplan ist, in dem die Einzelheiten des Ladens eines Startprogramms
in dem VLIW-Prozessor dargestellt werden;
-
14 ein
Schema ist, das für
das Verstehen eines Falls hilfreich ist, in dem ein Objektprogramm
für einen
herkömmlich
verwendeten VLIW-Befehlsprozessor in dem VLIW-Befehlsprozessor der
vorliegenden Erfindung verwendet wird;
-
15 ein
Schema ist, in dem ein Modifizierungsbeispiel für Fälle gezeigt wird, in denen
ein VLIW-Befehl mit einem Feld, in dem eine VLIW-Befehlswortlänge angezeigt
wird, verwendet wird; und
-
16 die
interne Konfiguration einer Befehls-Steuereinheit eines VLIW-Befehlsprozessors für variable
Wortlänge
entsprechend eines zweiten Ausführungsbeispiels
darstellt.
-
AUSFÜHRLICHE
BESCHREIBUNG DER ERFINDUNG
-
Die
vorliegende Erfindung wird mit Bezug auf die beigefügten Abbildungen
beschrieben.
-
In
der vorliegenden Erfindung werden die Begriffe „Befehl" und „VLIW-Befehl" wie folgt definiert.
Es ist zu beachten, dass diese Definitionen ebenfalls auf die vorherige
Beschreibung zutreffen. „Befehl" ist eine Aufgabe,
die einer der Vielzahl von Ausführungseinheiten,
aus denen sich ein Prozessor zusammensetzt, zugewiesen wird. „VLIW-Befehl" ist ein einzelner
Befehl oder ein Satz von Befehlen, der von einem Compiler als logisch
erkannt und gleichzeitig von einem Prozessor ausgeführt wird.
-
ERSTES AUSFÜHRUNGSBEISPIEL
-
1 zeigt
die gesamte Konfiguration eines VLIW-Befehlsprozessors für variable
Wortlänge
entsprechend der vorliegenden Erfindung.
-
1 ist
eine Befehls-Steuereinheit. 2a–2n sind Ausführungseinheiten. 4 ist
eine Registerdatei. 5 ist ein Befehlsspeicher. 6 ist
ein Datenspeicher. 7 ist eine Speicherverwaltungseinheit
(MMU). 8 ist eine Bussteuereinheit. 9 ist ein
Hauptspeicher.
-
Die
Befehls-Steuereinheit 1 liest einen Befehl aus dem Befehlsspeicher 5 und
decodiert den Befehl.
-
Danach
erteilt die Befehls-Steuereinheit 1 einen Befehl an die
Ausführungseinheiten 2a–2n,
mit der Befehlsausführung
zu beginnen, während
die Befehlsausführung
gesteuert wird.
-
Als
Antwort auf eine solche Anzeige für den von der Befehls-Steuereinheit 1 erteilten
Befehlsstart beginnen die Ausführungseinheiten 2a–2n mit
der Befehlsausführung,
lesen die erforderlichen Operanden aus der Registerdatei 4 und
schreiben die Ergebnisse der Befehlsausführung in die Registerdatei 4. Wenn
des Weiteren die Ausführungseinheiten 2a–2n Operanden-Ladebefehle
an die Registerdatei 4 oder Operanden-Speicherbefehle der
Registerdatei 4 ausführen,
senden die Ausführungseinheiten 2a–2n entweder
Lade- oder Speicheranforderungen
und Operandenadressen an die Speicherverwaltungseinheit 7.
Zusätzlich
dazu stellt jede Ausführungseinheit 2a–2n,
wenn sie einen Verzweigungsbefehl ausführt, entweder die Information,
dass eine Verzweigung gebildet wurde oder die Information, dass
keine Verzweigung gebildet wurde sowie eine Verzweigungsadresse
an die Befehls-Steuereinheit 1 bereit.
-
Die
Speicherverwaltungseinheit 7 beurteilt, ob ein Befehl,
der einer Adresse eines von der Befehls-Steuereinheit 1 angeforderten
Befehlsabrufes entspricht, in dem Befehlsspeicher 5 existiert.
Wenn laut Beurteilung kein solcher Befehl in dem Befehlsspeicher 5 existiert,
sendet die Speicherverwaltungseinheit 7 eine Anforderung
an die Bussteuereinheit 8, so dass der besagte Befehl aus
dem Hauptspeicher 9 abgerufen wird.
-
Des
Weiteren beurteilt die Speicherverwaltungseinheit 7, ob
Daten in dem Datenspeicher 5 existieren, die einer Adresse
entsprechen, die das Laden von Operanden aus den Ausführungseinheiten 2a–2n in
die Registerdatei 4 anfordert. Wenn laut Beurteilung keine
solche Daten in dem Datenspeicher 6 existieren, sendet
die Speicherverwaltungseinheit 7 eine Anforderung an die
Bussteuereinheit 8, so dass die besagten Daten aus dem
Hauptspeicher 9 abgerufen werden.
-
Die
Speicherverwaltungseinheit 7 beurteilt weiterhin, ob Daten,
die überschrieben
werden sollen und die einer Adresse entsprechen, die die Speicherung
von Operanden aus den Ausführungseinheiten 2a–2n in
die Registerdatei 4 anfordert, in dem Datenspeicher 6 existieren.
Wenn taut Beurteilung keine solche Daten in dem Datenspeicher 6 existieren,
werden die Daten aus der Registerdatei 4 in den Datenspeicher 6 geschrieben.
Des Weiteren gibt die Speicherverwaltungseinheit 7 ohne
Berücksichtigung
des Vorhandenseins oder Nichtvorhandenseins von in dem Datenspeicher 6 zu überschreibenden
Daten eine Anforderung an die Bussteuereinheit 8 aus, so dass
die besagten Daten in dem Hauptspeicher 9 gespeichert werden.
-
In 2 wird
die interne Konfiguration der Befehls-Steuereinheit 1 dargestellt.
-
11 ist
ein VLIW-Befehlswortlängen-(IWL)Register. 12 ist
eine Einrichtung (Befehlszähler)
zum Berechnen der Anzahl von Befehlen (L). 13 ist Ausführungseinheiten-Anzahlregister (Anzahl
der Ausführungseinheiten)
(N). 21 ist eine Steuereinrichtung, die eine Vielzahl von
Befehlen (L-Befehlen), die einen einzelnen VLIW-Befehl bilden, in
eine Vielzahl von Befehlssätzen
(m oder (m + 1) Befehlssätze)
unterteilt und gleichzeitig Befehlsausführung parallel dem Befehlssatz
nach durchführt.
Die Steuereinrichtung 21 enthält eine Divisionseinrichtung 14 und
eine Befehls-Steuereinrichtung 23. Die Befehls-Steuereinrichtung 23 umfasst
einen konstanten „1"- Addierer 15 und
einen Multiplexer (MPX) 16 mit zwei Eingängen und
einem Ausgang und eine interne VLIW-Befehlswiederholungs-Steuereinrichtung 18.
-
17 ist
ein MPX mit zwei Eingängen
und einem Ausgang. 19 ist eine Multipliziereinrichtung. 20a–20n sind
MPX mit zwei Eingängen
und einem Ausgang. 22a und 22n sind Befehlsregister. 24a–24n sind
Decodier-/Ausführungs-Steuereinrichtungen. 26 und 27 sind MPX
mit n Eingängen
und einem Ausgang. 28 ist ein Verzweigungszieladressen-Halteregister. 29 ist
ein MPX mit drei Eingängen
und einem Ausgang. 30 ist ein Befehlsabruf-Adressenregister. 31 ist
ein Addierer.
-
Die
VLIW-Befehlswortlänge
eines Objektprogramms, welches zuerst nach der Beendigung eines IPL
(einleitenden Programmladens) ausgeführt wird, wird vervollständigt, und
die Anzahl der Ausführungseinheiten
(N) wird vom IPL an das VLIW-Befehlswortlängen-Register 11 als
ein Anfangswert bzw. an das Ausführungseinheiten-Anzahlregister 13 festgesetzt.
-
IPL
bedeutet im engeren Sinne das Laden eines Programms wie zum Beispiel
eines Ladeprogramms in Fällen,
in denen keine Programme in dem Hauptspeicher 9 eingegeben
wurden. Im vorliegenden Patent bedeutet IPL des Weiteren eine Reihe von
Verarbeitungsschritten, die Folgendes umfassen: (a) das Festlegen
eines Anfangswertes für
einen Prozessor und das Testen, ob der Prozessor vor dem Laden des
Programms normal arbeitet, (b) das Laden des Programms, wenn laut
Ergebnis der Prozessor betriebsbereit ist und (c) die Genehmigung,
dass der Prozessor das geladene Programm ausführen darf. Dieses IPL ist ausführlich in 13 dargestellt. Das
IPL wird entweder nach dem Anschalten des Prozessors oder nach dem
Zurücksetzen
des Prozessors gestartet. Nach dem Starten des Prozessors wird die
Anfangseinstellung des Prozessors wie beispielsweise das Schreiben
der Anfangswerte in die vorhandenen Register vor dem Ladeprozess
durchgeführt.
Danach wird ein Testanzahlzähler
zunächst auf
Null gesetzt, um einen Test n-Mal durchzuführen, um herauszufinden, ob
der Prozessor seine verschiedenen Operationen normal ausführt. Anschließend wird
der Testanzahlzähler
um den Wert eins erhöht
und ein erster Test durchgeführt.
Ein Testergebnis wird entweder als richtig oder unrichtig bewertet. Wenn
das Ergebnis als fehlerhaft bewertet wird, wird das IPL sofort abgebrochen.
Wenn das Ergebnis des ersten Tests normal ist, wird der Testanzahlzähler wiederum
um den Wert eins erhöht.
Wenn alle Tests normale Ergebnisse aufweisen, wird der Prozessor als
betriebsfähig
beurteilt. Das Programm wird dann geladen, und der Prozessor kann
das geladene Programm ausführen.
Werden die Tests fehlerhaft beendet, leuchtet entweder eine Warmlampe
auf, oder der Alarm wird aktiviert.
-
Wenn
eine einzelne der n Ausführungseinheiten 2a–2n einen
Wortlängen-Überschreibbefehl für das VLIW-Befehlswortlängen-Register 1 (wird später beschrieben)
ausführt,
wählt der
MPX 26 eine VLIW-Befehlswortlänge aus, die von der oben genannten
Ausführungseinheit
zur Weiterleitung an das VLIW-Befehlswortlängen-Register 11 gesendet
wird.
-
Die
Einrichtung zum Berechnen der Anzahl von Befehlen (L) 12 berechnet
eine Befehlsanzahl (L) (die Anzahl von Befehlen) aus der VLIW-Befehlswortlänge, die
von dem VLIW-Befehlswortlängen-Register 11 bereitgestellt
wird. In dem vorliegenden Ausführungsbeispiel
wird ein VLIW-Befehl aus L Befehlen gebildet, die vier Bytes lang
sind. Dementsprechend wird die VLIW-Befehlswortlänge aus dem VLIW-Befehlswortlängen-Register 11 durch
vier Bytes dividiert. Dies bedeutet im Einzelnen, dass die Einrichtung
zum Berechnen der Anzahl von Befehlen (L) 12 die VLIW-Befehlswortlänge, die
vom VLIW-Befehlswortlängen-Register 11 bereitgestellt
wird, um zwei Bit-Stellen nach rechts verschiebt, um L (die Befehlsanzahl)
zu erhalten.
-
Zur
Ermittlung eines Quotienten (m) und eines Rests (δ) führt die
Divisionseinrichtung 14 eine Divisionsoperation durch,
bei der die Befehlsanzahl L von der Einrichtung zum Berechnen der
Anzahl von Befehlen 12 ein Dividend und die Anzahl der
Ausführungseinheiten
N vom Ausführungseinheiten-Anzahlregister 13 ein
Divisor ist.
-
Der
Addierer 15 addiert den Wert ,eins' zum Quotienten m. Der MPX 16 wählt den
Quotienten m, wenn δ =
0 ist. Wenn δ nicht
Null ist, wählt
der MPX 16 ein Ergebnis der vom Addierer 15 durchgeführten Additionsoperation
aus, der MPX 16 wählt
also (m + 1) aus.
-
Die
Wiederholungs-Steuereinrichtung 18 steuert die gesamte
Befehls-Steuereinheit 1, so dass N Befehle eines VLIW-Befehls
eine Anzahl von Malen ausgeführt
werden, die dem Quotienten m (d. h., m Male) gleich ist und, wenn
der Rest δ nicht
Null beträgt,
werden Befehle, deren Anzahl dem Rest δ gleich ist, ausgeführt.
-
Wenn
ein VLIW-Befehl verarbeitet wird, und wenn der Quotient m nicht
Null ist, wählt
der MPX 17 wiederholt N (Befehle) m Male aus, die von dem
Ausführungseinheiten-Anzahlregister 13 ausgegeben wurden.
Der MPX 17 wählt
den Rest δ nur
aus, wenn der von der Divisionseinrichtung 14 ausgegebene Rest δ nicht Null
beträgt.
Wenn m = 0 ist, wählt
der MPX 17 den Rest δ aus,
der von der Divisionseinrichtung 14 ausgegeben wurde.
-
Die
Multipliziereinrichtung 19 führt eine Multiplikationsoperation
durch, indem sie den Output des MPX 17 mit vier (in der
vorliegenden Ausführung
wird der Output um zwei Bit-Positionen nach links verschoben) multipliziert.
Dadurch werden zwei niederwertige Bits auf Null gesetzt, um eine
Erhöhung
in der Abrufadresse zu berechnen.
-
Jeder
der MPX 20a–20n wählt unter
Steuerung der Wiederholungs-Steuereinrichtung 18 entweder
einen aus dem Befehlsspeicher 5 ausgelesenen Befehl oder „NOP" aus. Das bedeutet
im Einzelnen, dass Fälle,
in denen jeder MPX 20 unter Steuerung der Steuereinrichtung 18 „NOP" auswählt, wie
folgt aussehen. Jeder MPX 20 wählt „NOP" aus, wenn die letzten (N – δ) Befehle
der N Befehle, die aus dem Befehlsspeicher 5 ausgelesen
werden und wenn der Rest δ nicht
Null beträgt
in einem nachfolgenden VLIW-Befehl
eingeschlossen werden. Des Weiteren wählt jeder MPX 20 „NOP" aus, wenn an dem
Punkt, an dem das VLIW-Befehlswortlängen-Register 11 nicht
durch einen VLIW-Befehlswortlängen-Überschreibbefehl überschrieben
wurde, die IF-Phase (Befehlsabrufphase) für einen nachfolgenden VLIW-Befehl
gesperrt ist. Dies wird später
beschrieben.
-
Die
Ausgänge
der MPX 20a–20n werden
in den entsprechenden Befehlsregistern 22a–22n festgelegt.
-
Die
Decodier-/Ausführungs-Steuereinrichtungen 24a–24n decodieren
die Outputs der Befehlsregister 22a–22n und weisen die
Ausführungseinheiten 2a–2n an,
mit der Befehlsausführung
zu beginnen. Demzufolge decodiert eine entsprechende Decodier-/Ausführungs-Steuereinrichtung 24 einen
solchen Überschreibbefehl,
wenn jedes Befehlsregister 22a–22n einen VLIW-Befehlswortlängen-Überschreibbefehl
speichert, und eine entsprechende Ausführungseinheit 2 führt einen Überschreibbefehl für die VLIW-Befehlswortlänge des
VLIW-Befehlswortlängen-Registers 11 aus.
-
Das
Befehlsabruf-Adressenregister 30 speichert Adressen für Befehle,
die abgerufen werden sollen. Wenn kein Verzweigungsbefehl erzeugt
wurde, wird eine Adressenerhöhung,
die von der Multipliziereinrichtung 19 ausgegeben wurde,
von Addierer 31 zur Ad resse des Befehlsabruf-Adressenregisters 30 addiert.
Dieses Additionsergebnis wird vom MPX 29 ausgewählt und
wieder in das Befehlsabruf-Adressenregister 30 aufgenommen.
Wenn andererseits ein Verzweigungsbefehl erzeugt wurde, dann wählt der
MPX 27 eine Verzweigungsadresse aus, die von einer Ausführungseinheit übertragen
wurde, die jetzt den Verzweigungsbefehl ausführt, und die ausgewählte Verzweigungsadresse
wird in das Verzweigungszieladressen-Halteregister 28 aufgenommen.
-
Die
Wiederholungs-Steuereinrichtung 18 steuert die MPX 17, 20a–20n und 29 so,
dass alle Befehle einschließlich
eines Verzweigungsbefehls ausgeführt
werden. Die Wiederholungs-Steuereinrichtung 18 wählt einen
der drei unterschiedlichen Inputs als eine passende Befehlsadresse
aus, und der ausgewählte
Input wird in das Verzweigungszieladressen-Halteregister 30 aufgenommen.
-
Damit
die wichtigsten Punkte der vorliegenden Erfindung leichter zu verstehen
sind, wird in 3 ein Programm dargestellt,
das die Funktionsweise eines VLIW-Befehlsprozessors des vorliegenden Ausführungsbeispiels
beschreibt, da die eigentlichen Programme einen langen Programm-Trace
erfordern. In dem in der 3 dargestellten Programm werden
die VLIW-Befehle 1 bis 10 dargestellt. Die VLIW-Befehle 1, 2 und 3 enthalten
jeweils zwei Befehle. Die VLIW-Befehle 4–8 enthalten
jeweils L Befehle. Die VLIW-Befehle 9 und 10 enthalten
jeweils zwei Befehle. Auch in einem eigentlichen Programm wird eine
Umgebung für
die Ausführung
eines VLIW-Befehls, der eine größere Anzahl
von Befehlen enthält,
von einem VLIW-Befehl vorbereitet, der eine kleinere Anzahl von
Befehlen enthält
(3). Im Allgemeinen erreicht der VLIW-Befehlsprozessor
eine hohe Leistung für
VLIW-Befehle, die eine Vielzahl von Befehlen enthalten und führt eine
Nachbearbeitung durch VLIW-Befehle durch, die eine kleine Anzahl
von Befehlen enthalten.
-
Das
IPL wird normal abgeschlossen. Acht (8) wird als Anfangswert in
dem VLIW-Befehlswortlängen-Register 11 gespeichert,
und N, das die Anzahl der Ausführungseinheiten
anzeigt, wird in dem Ausführungseinheiten-Anzahlregister 13 gespeichert
(für den
in 3 dargestellten Fall soll die Anzahl N einen Wert
größer 2 haben).
Die Anfangsadresse des Programms wird durch das IPL in dem Befehlsabruf-Adressenregister 30 gespeichert.
Zu dem Zeitpunkt, zu dem die Befehls-Steuereinheit 1 eine
Befehlsabrufanforderung gleichzeitig an den Befehlsspeicher 5 und
an die Speicherverwaltungs einheit 7 sendet, befinden sich
noch keine gültigen
Daten in dem Befehlsspeicher 5. Folglich wird eine Reihe
von Operationen durchgeführt,
so dass entsprechende Daten aus dem Hauptspeicher 9 in
den Befehlsspeicher 5 übertragen
werden.
-
Die
Einrichtung zum Berechnen der Anzahl von Befehlen 12 gibt
die Befehlsanzahl ,zwei' aus. Die
Divisionseinrichtung 14 liefert einen Quotienten Null und
einen Rest ,zwei'.
Der MPX 16 wählt
einen Output ,eins' vom
konstanten „1"-Addierer 15 aus.
-
Die
Wiederholungs-Steuereinrichtung 18 steuert die MPX 20a–20n auf
eine Art und Weise, dass die ersten zwei der MPX 20a–20n Daten
aus dem Befehlsspeicher 5 auswählen, während die übrigen (N – 2) MPX „NOP" auswählen. Als Antwort auf ein Signal,
das über
die Übertragung
von Abrufanforderungsdaten aus der Speicherverwaltungseinheit 7 an
den Befehlsspeicher 5 informiert, weist die Wiederholungs-Steuereinrichtung 18 die
Befehlsregister 22a–22n an,
Daten einzugeben.
-
Der
VLIW-Befehlsprozessor des vorliegenden Ausführungsbeispiels ist ein Pipeline-Prozessor, und sein
grundlegendes Pipelining umfasst die folgenden vier Phasen: die
IF-Phase (Instruction Fetch – Befehlsabrufphase),
die DEC-Phase (Befehlsdecodier-/Ausgabephase),
die EX-Phase (Ausführungsphase)
und der WB-Phase (Registerschreib-Phase) Phase. Im Allgemeinen operiert
jede Phase in einem Zyklus.
-
4 zeigt
die Pipeline-Operationen des VLIW-Befehlsprozessors für die VLIW-Befehle 1, 2, 3 und 4.
Wie oben beschrieben, liegen in der IF-Phase des VLIW-Befehls 1 keine
gültigen
Daten in dem Befehlsspeicher 5 vor. Aus diesem Grund wird
eine Reihe von Operationen für
die Übertragung
von Daten aus dem Hauptspeicher 9 in den Befehlsspeicher 5 durchgeführt.
-
Der
VLIW-Befehl 1 geht in die DEC-Phase über und gleichzeitig tritt
der VLIW-Befehl 2 in die IF-Phase ein. Danach erfolgt die
Verarbeitung der VLIW-Befehle 1, 2 und 3 durch
ein Cycle Pitch Pipelining. In der DEC-Phase des VLIW-Befehls 3 wird ein
in dem VLIW-Befehl 3 enthaltener
Befehl (beispielsweise ein Befehl 31), durch eine der Ausführungseinheiten 2a–2n als
ein VLIW-Befehlswortlängen-Überschreibbefehl
erkannt. Die Wiederholungs-Steuereinrichtung 18 wird über ein
solches Erkennungsergebnis benachrichtigt. In der DEC-Phase der
VLIW-Befehls 3 gibt die Wiederholungs-Steuereinrichtung 18 eine
Befehlsabrufanforderung aus, um den VLIW-Befehl 4 abzurufen.
Ob die VLIW-Befehlswortlänge größer oder
kleiner wird, ist jedoch solange schwierig zu festzustellen, bis
eine neue VLIW-Befehlswortlänge
in dem VLIW-Befehlswortlängen-Register 11 gespeichert
wird. Aus diesem Grund werden keine Befehlsabrufanforderungen ausgegeben,
und jeder MPX 20a–20n wird
so gesteuert, dass er „NOP" auswählt, bis
zwei in dem VLIW-Befehl 3 enthaltenen Befehle in die WB-Phase
eintreten. Danach wird zu dem Zeitpunkt, zu dem sich zwei Befehle
in der WB-Phase befinden, L (Befehlsanzahl) durch den VLIW-Befehlswortlängen-Überschreibbefehl
in das VLIW-Befehlswortlängen-Register 11 geschrieben. Die
Divisionseinrichtung 14 stellt m (den Quotienten) und δ (den Rest)
zur Verfügung
und, wenn der Quotient m nicht gleich Null ist, steuert die Wiederholungs-Steuereinrichtung 18 jeden
MPX 20a–20n,
um Daten aus dem Befehlsspeicher 5 auszuwählen, so dass
im nächsten
Zyklus die DEC-Phase für
die ersten N-Befehle
des VLIW-Befehls 4 beginnt.
-
Sobald
die oben genannten ersten N Befehle des VLIW-Befehls 4 in
die DEC-Phase eintreten, wird der vom MPX 29 ausgewählte Output
des Addierers 31 in das Befehlsabruf-Adressenregister 30 eingegeben.
Dieser Output (Adresse) ist ein Wert, der sich aus der Addition
von (N × 4),
dem Output der Multipliziereinrichtung 19, zur Anfangsadresse
des VLIW-Befehls 4 ergibt.
-
Die
m-te DEC-Phase des VLIW-Befehls 4 ist nun erreicht. Um
die letzten δ Befehle
des VLIW-Befehls 4 in dessen IF-Phase zu verarbeiten, steuert
die Wiederholungs-Steuereinrichtung 18 die
MPX 20a–20n gleichzeitig
so, dass die ersten δ MPX
der MPX 20a–20n die
Daten aus dem Speicher 5 und die übrigen (N – δ) MPX „NOP" auswählen. Die Multipliziereinrichtung 19 liefert
einen Output von (δ × 4) und,
im nächsten
Zyklus wird dem Befehlsabruf-Adressenregister 30 eine Adresse
zugeführt,
die sich aus der Addition vom m (N × 4) + (δ × 4) zur Anfangsadresse des
VLIW-Befehls 4 ergibt, welches dann die Anfangsadresse
des VLIW-Befehls 5 ist.
-
Der
VLIW-Befehl 5, der VLIW-Befehl 6 und der VLIW-Befehl 7 werden
in der selben Art und Weise wie der VLIW-Befehl 4 ausgeführt.
-
Der
VLIW-Befehl 8 enthält
einen VLIW-Befehlswortlängen-Überschreibbefehl.
In Abhängigkeit von
der Position dieses VLIW-Befehlswortlängen-Überschreibbefehls im VLIW- Befehl 8,
wird die IF-Phase für
den VLIW-Befehl 8 entweder gesperrt oder nicht. Diese Sperrsteuerung
der IF-Phase wird in den 5, 6 und 7 dargestellt.
-
In
einem in 5 dargestellten Beispielfall enthält ein Befehlssatz
aller Befehlssätze
des VLIW-Befehls 8, der als letzter verarbeitet werden soll,
einen VLIW-Befehlswortlängen-Überschreibbefehl.
In der DEC-Phase dieses Befehlssatzes wird der VLIW-Befehlswortlängen-Überschreibbefehl
erkannt, so dass die IF-Phase des VLIW-Befehls 9 für Zyklen gesperrt wird. Zu
dem Zeitpunkt, zu dem die WB-Phase eines der Befehlssätze des
VLIW-Befehls 8, der als letzter verarbeitet werden soll,
anfängt,
wird das VLIW-Befehlswortlängen-Register 11 aktualisiert und
die IF-Phase des VLIW-Befehls 9 beginnt.
-
In
einem in 6 dargestellten Beispielfall enthält ein Befehlssatz
aller Befehlssätze
des VLIW-Befehls 8, der einen Maschinenzyklus vor der Verarbeitung
des letzten Befehlssatzes verarbeitet wird, einen VLIW-Befehlswortlängen-Überschreibbefehl.
In der DEC-Phase dieses Befehlssatzes, der den Überschreibbefehl enthält, wird
das Vorhandensein des VLIW-Befehlswortlängen-Überschreibbefehls erkannt und
die IF-Phase des VLIW-Befehls 9 für einen Zyklus gesperrt. Wenn
die WB-Phase des Befehlssatzes beginnt, wird das VLIW-Befehlswortlängen-Register 11 aktualisiert,
und gleichzeitig beginnt die IF-Phase des VLIW-Befehls 9.
-
In
einem in 7 dargestellten Beispielfall enthält ein Befehlssatz
des VLIW-Befehls 8, der zwei Maschinenzyklen vor der Verarbeitung
des letzten Befehlssatzes verarbeitet wird, einen VLIW-Befehlswortlängen-Überschreibbefehl.
In der DEC-Phase des Befehlssatzes, der den Überschreibbefehl enthält, der
zwei Positionen vor dem letzten Befehlssatz angeordnet ist, wird
das Vorhandensein des VLIW-Befehlswortlängen-Überschreibbefehls
erkannt. Wenn die WB-Phase des besagten Befehlssatzes beginnt, wird
das VLIW-Befehlswortlängen-Register 11 aktualisiert,
und gleichzeitig beginnt die IF-Phase des VLIW-Befehls 9.
Aufgrund der Aktualisierung des VLIW-Befehlswortlängen-Registers 11 kommt
es nicht zu einer Sperrung der IF-Phase.
-
In 8 wird
die interne Konfiguration der Wiederholungs-Steuereinrichtung 18 dargestellt.
Es wird ein Beispiel einer Pipeline-Steuereinrichtung für die Steuerung
der oben genannten Pipeline-Operationen gezeigt.
-
41 ist
ein MPX (Multiplexer). 42 ist ein IF-Anzahlregister. 43 ist
ein DEC-Anzahlregister. 44 ist ein EX-Anzahlregister. 45 ist
ein konstanter Subtrahierer. 46, 47 und 48 sind
OR-Kreisläufe mit
N Eingängen. 49 ist
eine IF-Pipeline-Steuereinrichtung. 50 ist eine DEC-Pipeline-Steuereinrichtung. 51 ist
eine EX-Pipeline-Steuereinrichtung. 52 ist eine WB-Pipeline-Steuereinrichtung.
-
Der
MPX 41 wählt
den Output des MPX 16 aus, wenn der Output des konstanten
Subtrahierers 45 „0" ist. Der MPX 41 wählt den
Output des konstanten Subtrahierers 45, wenn der Output
des konstanten Subtrahierers 45 nicht „0" ist.
-
Die
Werte „1", „0" und „0" werden vom IPL für das IF-Anzahlregister 42,
an das DEC-Anzahlregister 43 bzw.
das EX-Anzahlregister 44 als deren Anfangswerte festgelegt.
Diese drei Anzahlregister 42–44 zeigen jeweils
an, wie viele Befehlssätze,
von denen jeder N oder δ Befehle
enthält,
in einem VLIW-Befehl unverarbeitet bleiben.
-
Eine
der N Decodier-/Ausführungs-Steuereinrichtungen 24a–24n erkennt
das Vorhandensein eines VLIW-Befehlswortlängen-Überschreibbefehls. Dieser Überschreibbefehl
wird durch den OR-Kreislauf mit N-Eingängen an die IF-Pipeline-Steuereinrichtung
(Befehlsabrufpipeline-Steuereinrichtung) 49 übertragen.
Als Antwort auf eine solche Übertragung liefert
die IF-Pipeline-Steuereinrichtung 49 Anweisungen für die IF-Phase.
Wenn das DEC-Anzahlregister 43 einen Output „1" bereitstellt, wird
die IF-Phase durch die Steuereinrichtung 49 für zwei Zyklen
gesperrt. Wenn das DEC-Anzahlregister 43 einen Output „2" bereitstellt, wird
die IF-Phase für
einen Zyklus gesperrt. Wenn das DEC-Anzahlregister 43 einen Output
von „3" bereitstellt, wird
die IF-Phase nicht gesperrt.
-
Die
Operation der Verzweigungsbefehle wird im Folgenden mit Bezug auf
die 9–12 beschrieben.
-
In
dem VLIW-Befehlsprozessor des vorliegenden Ausführungsbeispiels (a) gibt es
keine Einschränkungen
bezüglich
der Position des Verzweigungsbefehls in einem VLIW-Befehl, (b) bestimmt das
Verzweigungsziel immer die Anfangsadresse des VLIW-Befehls, und (c)
findet die Verzweigung nach der Verarbeitung eines Befehls entspre chend des
Verzweigungsbefehls statt. Dies stimmt mit der zuvor genannten Definition
des VLIW-Befehls überein.
-
In
einem in 9 gezeigten Beispielfall enthält einer
der Vielzahl von Befehlssätzen,
die zu einem VLIW-Befehl A gehören,
der als letzter in dem VLIW-Befehl A verarbeitet wird, einen Verzweigungsbefehl.
Am Ende der EX-Phase des besagten Befehlssatzes wird die Bildung
einer Verzweigung zu einem VLIW-Befehl P sichergestellt. In der
WB-Phase des Befehlssatzes
wird eine Verzweigungszieladresse in das Befehlsabruf-Adressenregister 30 geschrieben.
Ein VLIW-Befehl B und ein VLIW-Befehl C, die aufgrund der Verzweigungsbildung
nicht verarbeitet werden dürfen,
laufen zusätzlich
einen Zyklus länger und
werden in ihrer WB- und EX-Phase abgebrochen, da sich die IF-Phase eines der Befehlssätze des
VLIW-Befehls P (Verzweigungsziel) und die WB-Phase eines der oben genannten Befehlssätze des
VLIW-Befehls A, der als letzter verarbeitet werden soll, im selben
Zyklus befinden.
-
Dementsprechend
beträgt
der Overhead des Verzweigungsbefehls im Fall von 9 zwei
Zyklen.
-
In
einem in 10 dargestellten Beispielfall ist
ein Verzweigungsbefehl in einem der Befehlssätze eines VLIW-Befehls D enthalten,
der einen Maschinenzyklus vor der Verarbeitung des letzten der Befehlssätze verarbeitet
wird, und am Ende der EX-Phase des Befehlssatzes, der den Verzweigungsbefehls
enthält,
wird die Bildung einer Verzweigung zu einem VLIW-Befehl Q sichergestellt.
In der WB-Phase des Befehlssatzes wird eine Verzweigungszieladresse
in das Befehlsabruf-Adressenregister 30 geschrieben. Ein
VLIW-Befehl E, der aufgrund einer solchen Verzweigungsbildung nicht
ausgeführt
werden darf, läuft
zusätzlich
einen Zyklus länger
und wird in der EX-Phase abgebrochen, da sich die IF-Phase eines
der Befehlssätze
des VLIW-Befehls Q, der als erster ausgeführt werden soll und der EX-Phase
des Befehlssatzes des VLIW-Befehls A, der als letztes ausgeführt werden
soll, im selben Zyklus befinden.
-
Dementsprechend
beträgt
der Overhead des Verzweigungsbefehls im Fall von 10 einen
Zyklus.
-
In
einem in 11 gezeigten Beispielfall ist ein
Verzweigungsbefehl in einem der Vielzahl von Befehlssätzen des
VLIW-Befehls F enthalten, welcher zwei Maschinenzyk len vor der Verarbeitung
des letzten Befehlssatzes des VLIW-Befehls F verarbeitet wird. Am
Ende der EX-Phase des Befehlssatzes wird die Bildung einer Verzweigung
zu einem VLIW-Befehl R sichergestellt. Zu Beginn der WB-Phase des
Befehlssatzes wählt
der MPX 29 nicht die Anfangsdresse eines VLIW-Befehls entsprechend
dem VLIW-Befehl
F aus, sondern die Anfangsdresse des VLIW-Befehls R, die ein Verzweigungsziel
ist, wobei die Anfangsdresse des Verzweigungsbefehls R in das Befehlsabruf-Adressenregister 30 geschrieben
wird. Dementsprechend wird in dem in 1 dargestellten Fall
kein Overhead durch den Verzweigungsbefehl verursacht.
-
In
einem in 12 dargestellten Beispielfall ist
ein Verzweigungsbefehl in einem der Befehlssätze eines VLIW-Befehls G enthalten,
der drei Maschinenzyklen vor der Verarbeitung des letzten dieser
Befehlssätze
verarbeitet wird. Am Ende der EX-Phase des Befehlssatzes, der den
Verzweigungsbefehl enthält,
wird die Bildung einer Verzweigung zu einem VLIW-Befehl S sichergestellt.
Zu Beginn der WB-Phase des Befehlssatzes wird die Anfangsadresse
des VLIW-Befehls S einmal in das Verzweigungszieladressen-Halteregister 28 geschrieben. Nach
einem Zyklus wird der Output des Registers 28 vom MPX 29 ausgewählt, um
diesen in das Befehlsabruf-Adressenregister 30 zu schreiben.
So wird auch in dem in 12 dargestellten Fall kein Overhead
durch den Verzweigungsbefehl verursacht.
-
Mit
Bezug auf 8 werden die Operationen von 9 bis 12 beschrieben.
-
Die
Bildung einer Verzweigung wird in jeder der N Ausführungseinheiten 2a–2n erkannt,
und eine solche Erkennungsinformation wird über den OR-Kreislauf mit N-Eingängen 48 an
die EX-Pipeline-Steuereinrichtung 51 und an die WB-Pipeline-Steuereinrichtung 52 übertragen.
-
Die
EX-Pipeline-Steuereinrichtung (Ausführungspipeline-Steuereinrichtung) 51 sperrt
zu Beginn des nächsten
Zyklus die Verzweigungsbildungsinformation und einen Wert, der sich
aus der Subtraktion des Outputs des IF-Anzahlregisters 42 vom
Output des EX-Anzahlregisters 44 ergibt.
Die EX-Pipeline-Steuereinrichtung 51 bricht später die
EX-Phase eines Zyklus
ab, wenn zwei Bedingungen vorliegen, dass (i) eine Verzweigung gebildet
wurde und (ii) die Differenz Null oder negativ ist.
-
Die
WB-Pipeline-Steuereinrichtung (Schreibpipeline-Steuereinrichtung) 52 sperrt
zu Beginn des nächsten
Zyklus die Verzweigungsbildungsinformation und einen Wert, der sich
aus der Subtraktion des Outputs des DEC-Anzahlregisters 43 vom
Output des EX-Anzahlregisters 44 ergibt.
Die WB-Pipeline-Steuereinrichtung 52 bricht später die
WB-Phase eines Zyklus
ab, wenn die zwei Bedingungen gelten, dass (i) eine Verzweigung
gebildet wurde und (ii) die Differenz Null oder negativ ist.
-
Wenn
die zwei Bedingungen gelten, dass (i) eine Verzweigung vor der Sperrung
gebildet wurde und (ii) der Output des EX-Anzahlregisters 44 3
oder weniger ist, übt
die WB-Pipeline-Steuereinrichtung 52 eine
Steuerfunktion aus, so dass die MPX 27 und 29 eine
Verzweigungszieladresse auswählen,
die von einer der N Ausführungseinheiten 2a–2n übertragen
wurde, und das Befehlsabruf-Adressenregister 30 nimmt die
Verzweigungszieladresse im nächsten Zyklus
auf.
-
Wenn
des Weiteren die zwei Bedingungen gelten, dass (i) eine Verzweigung
vor der Sperrung gebildet wurde und (ii) der Output des EX-Anzahlregisters 44 4
oder mehr beträgt, übt die WB-Pipeline-Steuereinrichtung 52 eine
Steuerfunktion aus, so dass der MPX 27 eine Verzweigungszieladresse
auswählt,
die von einer der N Ausführungseinheiten 2a–2n bereitgestellt
wird, und das Zieladressen-Halteregister 28 die Verzweigungszieladresse
im nächsten
Zyklus aufnimmt. Danach wird der Output des EX-Anzahlregisters 44 3 und zu
dem Zeitpunkt, zu der ein Befehlssatz, der dieser EX-Anzahl 3 entspricht
und in die WB-Phase gelangt, wird der Output des Verzweigungszieladressen-Halteregisters 28 vom
MPX 29 ausgewählt
und in das Befehlsabruf-Adressenregister 30 übernommen.
-
Entsprechend
der oben beschriebenen Verzweigungsbefehlsoperation wird es möglich, die
Einbettung eines Befehls in Anlehnung an einen in einem einzelnen
VLIW-Befehl enthaltenen Verzweigungsbefehl, mit mehr Flexibilität in Bezug
auf eine verzögerte
Verzweigungsbefehlsmethode, durchzuführen.
-
Mit
Bezug auf 4 wird beschrieben, dass ein
VLIW-Befehlsprozessor mit einem VLIW-Befehlswortlängen-Register 11,
einem Bestandteil der vorliegenden Erfindung, in der Lage ist, eine
Programmbibliothek für
einen konventionellen VLIW- Befehlsprozessor,
welcher kein VLIW-Befehlswortlängen-Register 11 hat,
zu verwenden.
-
Die
in 14 dargestellte VLIW-Befehlsgruppe A enthält einen
VLIW-Befehlswortlängen-Überschreibbefehl.
Die VLIW-Befehlsgruppe B ist ein Programm, das in einer Programmbibliothek eines
konventionellen VLIW-Befehlsprozessors enthalten ist. In der Beschreibung
dieser Operation wird ein Beispielfall erklärt, bei dem nachdem der VLIW-Befehlssatz
A bis zu einem VLIW-Befehl 3 ausgeführt wurde, jeder in dem konventionellen VLIW-Befehlssatz
B enthaltene Befehl ausgeführt wird,
und die Befehlsausführung
zurück
zum VLIW-Befehlssatz A kehrt. Auch in 14 wird
das Programm vereinfacht dargestellt, um die wesentlichen Punkte
der vorliegenden Erfindung besser verständlich zu machen.
-
In
den Befehlen 11 und 12 eines VLIW-Befehls 1 des
VLIW-Befehlssatzes A und in einem Befehl 21 eines VLIW-Befehls 2 des
VLIW-Befehlssatzes A werden Daten, die für die Verwendung durch VLIW-Befehlssatz
B bestimmt sind, so aufbereitet, dass auf die Daten durch Befehle
zurückgegriffen werden
kann, die einen VLIW-Befehl in dem VLIW-Befehlssatz B bilden. Als nächstes wird
in einem Befehl 22 des VLIW-Befehls 2 in dem VLIW-Befehlssatz
A die Anfangsadresse eines VLIW-Befehls 8 in dem VLIW-Befehlssatz A, zum
Beispiel eine Rücksprungadresse,
auf ein 0-tes Register der Registerdatei 4 gesetzt. Ein
Befehl 31 eines VLIW-Befehls 3 in dem VLIW-Befehlssatz
A enthält
einen VLIW-Befehlswortlängen-Überschreibbefehl.
Dieser Überschreibbefehl
ist ein Befehl, der eine Wortlänge zu
einer Wortlänge
für den
VLIW-Befehlssatz B für die
Verwendung durch den konventionellen VLIW-Befehlsprozessor überschreibt.
Die Befehlswortlänge
des VLIW-Befehlswortlängen-Registers 11 wird
in eine solche Befehlswortlänge überschrieben. Ein
Befehl 32 eines VLIW-Befehls 3 des VLIW-Befehlssatzes
A enthält
einen Verzweigungsbefehl, der in dem konventionellen VLIW-Befehlssatz
B zuerst verzweigt werden muss, und dementsprechend tritt am Anfang
des VLIW-Befehlssatzes
B auf. VLIW-Befehle 5, 6 und 7, die alle
L Befehle enthalten, werden ausgeführt. Der letzte VLIW-Befehl 7 enthält einen Verzweigungsbefehl,
dessen Adresse die Inhalte des 0-ten Registers der Registerdatei 4 sind.
Die Ausführung
dieses Befehls bewirkt, dass die Befehlsausführung zum VLIW-Befehl 8 des
VLIW-Befehlssatzes A zurückkehrt.
Dieser VLIW-Befehl 8 enthält die gleiche Anzahl von Befehlen,
das heißt,
L Befehle, wie jeder VLIW-Befehl 5, 6 und 7 des
VLIW-Befehlssatzes B. Der VLIW- Befehlssatz 8 enthält einen
VLIW-Befehlswortlängen-Überschreibbefehl.
Durch diesen Überschreibbefehl
wird die VLIW-Befehlswortlänge überschrieben.
Danach erfolgt die Ausführung
der VLIW-Befehle mit einer überschriebenen
VLIW-Befehlswortlänge,
zum Beispiel die VLIW-Befehle 9 und 10, die jeweils
aus zwei Befehlen bestehen. Bei Rückkehr vom VLIW-Befehlssatz
B zum VLIW-Befehlssatz A ist das VLIW-Befehlswortlängen-Register 11 noch
nicht überschrieben.
Deshalb muss die VLIW-Befehlswortlänge dieses
VLIW-Befehls 8, der als erster in dem VLIW-Befehlssatz
A ausgeführt werden
soll, vor einer solchen Rückkehr
die selbe sein, wie die des VLIW-Befehls
des VLIW-Befehlssatzes B.
-
In
dem vorliegenden Ausführungsbeispiel enthält einer
der Vielzahl von Befehlen, die einem VLIW-Befehl bilden, einen VLIW-Befehlswortlängen-Überschreibbefehl,
der nicht als Einschränkung angesehen
werden sollte. Die folgende Konfiguration kann verwendet werden.
Beispielsweise wird in einem VLIW-Befehl, in dem eine VLIW-Wortlänge innerhalb
eines Feldes eines Gesamtsteuerabschnittes, der sich am Anfangsteil
des VLIW-Befehls befindet (siehe 15), angezeigt
wird, eine Decodier-/Steuereinrichtung 24n + 1 bereitgestellt,
die diese VLIW-Befehlswortlänge
decodieren soll. Die von der Decodier-/Steuereinrichtung 24n
+ 1 gesteuerte und decodierte VLIW-Befehlswortlänge wird
in dem VLIW-Befehlswortlängen-Register 11 gespeichert. Des
Weiteren kann eine Ausführungseinheit 2n
+ 1 vorhanden sein, die für
die Aktualisierung von VLIW-Befehlswortlängen verantwortlich
ist, die in dem VLIW-Befehlswortlängen-Register 11 gespeichert
sind.
-
ZWEITES AUSFÜHRUNGSBEISPIEL
-
Ein
zweites Ausführungsbeispiel
wird mit Bezug auf 16 beschrieben. In 16 wird
eine Befehls-Steuereinheit 1' dargestellt,
die aus der teilweisen Modifizierung der Befehls-Steuereinheit 1 des ersten
Ausführungsbeispiels
hervorgeht. Mit Ausnahme folgender Punkte besitzen diese beiden
Befehls-Steuereinheiten 1 und 1' eine identische Konfiguration.
Das heißt
im Einzelnen, dass das VLIW-Befehlswortlängen-Register 11 und
die Einrichtung zum Berechnen der Anzahl von Befehlen 12 der
Interaktions-Steuereinheit 1 entfernt
wurden und das Befehlsanzahlregister 60 bereitgestellt
wird. In dem ersten Ausführungsbeispiel
wird eine VLIW-Befehlswortlänge
durch einen Wortlängen-Überschreibbefehl überschrieben,
der in einem VLIW-Befehl enthalten ist und wird in dem VLIW-Befehlswortlängen-Register 11 gespeichert,
und die Befehlswortlänge
wird von der Einrichtung zum Berechnen der Anzahl von Befehlen 12 durch
die Bitlänge
eines Befehls dividiert. In dem vorliegenden Ausführungsbeispiel
wird hingegen das Befehlsanzahlregister 60 bereitgestellt. Als
ein Ergebnis einer solchen Bereitstellung ist in einem VLIW-Befehl
ein Befehl (Befehlsanzahl-Überschreibbefehl)
enthalten, der in der Lage ist, die Anzahl der in dem VLIW-Befehl
enthaltenen Befehle in eine gewünschte
Anzahl von Befehlen zu überschreiben
und zu aktualisieren. In diesem Fall wird einfach das Wort „VLIW-Befehlswortlängen-Überschreibbefehl" in das Wort „Befehlsanzahl-Überschreibbefehl" überschrieben, und es werden
keine relevanten Figuren für
Beschreibungszwecke dargestellt. In dem vorliegenden Ausführungsbeispiel
sind die in einem VLIW-Befehl enthaltenen einzelnen Befehle nicht notwendigerweise
in der Bitlänge
einander identisch und sie können
sich voneinander unterscheiden.