Hintergrund der Erfindung
Gebiet der Erfindung
-
Die vorliegende Erfindung bezieht sich auf ein
Datenverarbeitungssystem und insbesondere auf ein
Pipeline-Befehlsverarbeitungssystem mit mehreren
Befehlsverarbeitungseinheiten, die parallel angeordnet sind, um mehrere
Befehle parallel auszuführen, wobei jede einen
Pipelinemechanismus für eine
Hochgeschwindigkeits-Datenverarbeitung aufweist.
Beschreibung der verwandten Technik
-
Um die Leistung eines Computersystems zu erhöhen, ist ein
paralleles Pipeline-Befehlsverarbeitungssystem bekannt
gewesen, das eine Pipeline-Befehlsverarbeitung und eine
parallele VLIW-Befehlsverarbeitung (parallele
Befehlsverarbeitung mit sehr langen Befehlswörtern) kombiniert.
-
Die parallele VLIW-Befehlsverarbeitung ist derart, daß
ein relativ langer Befehl, der mehrere Befehlsfelder
enthält (und der im folgenden als ein "Befehlsblock"
bezeichnet wird), als ein Befehl verarbeitet wird. Ein
paralleles VLIW-Computersystem behandelt jeden Befehlsblock,
indem es den Befehlsblock in mehrere Felder teilt und die
mehreren Felder parallel zueinander verarbeitet, indem es
eine Anzahl von Operationseinheiten, Registern,
Verbindungsnetzen, Speichern u. a. unabhängig steuert.
-
Kurz gesagt, zum Zeitpunkt der Kompilierung werden
mehrere Befehle, die parallel verarbeitet werden können, aus
einem Quellprogramm extrahiert und dann kombiniert, um
einen Befehlsblock zu bilden. Falls ein Grad der Parallelität
nahe bei der Anzahl der parallelen
Verarbeitungseinheiten erhalten werden kann, kann deshalb eine
Hochgeschwindigkeits-Verarbeitung erreicht werden. Falls
jedoch der Grad der Parallelität niedrig ist, tritt ein
leeres Befehlsfeld oder leere Befehlsfelder auf, mit dem
Ergebnis, daß die Verarbeitungsleistung verringert wird.
Zu welchem Ausmaß die Befehlsfelder gefüllt werden
können, ist in der Tat von der Fähigkeit eines Kompilierers
und einem Quellprogramm abhängig.
-
Weil die Parallelisierung der Befehle zum Zeitpunkt der
Kompilierung ausgeführt wird, ist es jedoch im
VLIW-System nicht notwendig, eine komplizierte Verarbeitung
auszuführen, wie z. B. eine Erkennung der gegenseitigen
Abhängigkeit zwischen Datenelementen. Deshalb kann die
Hardware vereinfacht werden.
-
Es kann gesagt werden, daß dieses VLIW-System auf einer
Idee basiert, die aus einem horizontalen
Mikrobefehls-System entsteht, und daß es für eine entwickelte
Parallelverarbeitung unter Verwendung mehrerer
Verarbeitungseinheiten, die einen niedrigen Funktionsgrad besitzen
(niedere Parallelverarbeitung), geeignet ist.
-
Im allgemeinen wird ein Prozeß des Ausführens eines
Maschinenbefehls im Computersystem ausgeführt, indem
aufeinanderfolgend ein Holen eines Befehls (das in der
Beschreibung und in der beigefügten Zeichnung als "IF"
abgekürzt ist), eine Decodierung eines Befehls (die als
"ID" abgekürzt ist), eine Erzeugung einer
Operandenadresse (die als "AG" abgekürzt ist), ein Holen eines
Operanden (das als "OF" abgekürzt ist), die Ausführung
der Operation (die als "EX" abgekürzt ist) und ein
Zurückschreiben des Ergebnisses der Ausführung der
Operation (das als "WB" abgekürzt ist) in der benannten
Reihenfolge ausgeführt werden. Die Pipeline-Befehlsverarbeitung
wird verwirklicht, indem die obenerwähnte
Verarbeitung in mehrere Verarbeitungsstufen geteilt wird,
einzelne Hardware vorgesehen wird, die jeder der
Verarbeitungsstufen entspricht, und jede einzelne Verarbeitungs-
Hardware veranlaßt wird, ihre zugewiesene Verarbeitung
parallel zur Ausführung der anderen
Verarbeitungs-Hardware auszuführen.
-
Wie aus dem obigen ersichtlich ist, arbeiten in dem
Pipeline-Befehlssystem die jeweiligen Verarbeitungsstufen
einander überlagert. Falls eine Ausführungszeit jeder
Verarbeitungsstufe die gleiche ist, und falls ein
Maschinenzyklus jeder Verarbeitungsstufe der gleiche ist, kann
deshalb das Pipeline-Befehlssystem seine maximale
Leistung entfalten, wobei das Ergebnis der Operation bei
jedem Maschinenzyklus erhalten werden kann.
-
Es ist im Augenblick berücksichtigt worden, das ein
Ablauf der Pipeline-Befehlsverarbeitung gestört ist:
-
(a) wenn ein nachfolgender Befehl das Ergebnis der
Ausführung eines vorhergehenden Befehls erfordert;
-
(b) wenn ein vorhergehender Befehl eine Operandenadresse
für einen nachfolgenden Befehl bestimmt;
-
(c) wenn eine Verzweigung erzeugt wird;
-
(d) wenn sich Speicherzugriffe einander widersprechen;
-
(e) wenn ein vorhergehender Befehl einen Inhalt eines
nachfolgenden Befehls umschreibt;
-
(f) wenn eine Unterbrechung oder eine Verzweigung
auftritt;
-
(g) wenn ein Befehl so kompliziert ist, daß er mehrere
Maschinenzyklen für die Ausführung einer
erforderlichen Operation benötigt.
-
Um die obenerwähnten Faktoren zu unterdrücken, die die
Pipeline-Befehlsverarbeitung stören, sind verschiedene
Verbesserungen versucht worden. Um z. B. die Störung der
Pipelineverarbeitung zu unterdrücken, die durch eine
bedingte Verzweigung verursacht wird, sind ein
Schleifenpuffersystem, das einen großen Befehlspuffer verwendet,
der eine Programmschleife speichern kann, ein System mit
mehreren Befehlsflüssen, das einen Befehlsstrom
verarbeitet, wenn eine Bedingung für die bedingte Verzweigung
erfüllt ist, und das einen weiteren Befehlsstrom
verarbeitet, wenn die Bedingung für die bedingte Verzweigung
nicht erfüllt ist, und ein Verzweigungsschätzsystem, daß
eine Verzweigung anhand einer Historie von
Verzweigungsbefehlen schätzt, vorgeschlagen worden.
-
In jedem Fall kann bei der Pipelineverarbeitung nicht
bekannt sein, ob die Bedingung für einen bedingten
Verzweigungsbefehl erfüllt ist, wenn nicht die Verarbeitung eine
spätere Stufe der Pipelineverarbeitung erreicht. Falls
die Verzweigungsbedingung erfüllt ist, ist es notwendig,
die bereits im Pipeline-Befehlssystem geholten Befehle
ungültig zu machen, und einen Befehlsablauf zu holen, der
von einem Verzweigungszielbefehl startet. Mit anderen
Worten, es wird wenigstens ein Teerer Maschinenzyklus
erzeugt. Wenn die Verzweigungsbedingung erfüllt ist und die
Verzweigung ausgeführt wird, wird demzufolge die
Pipeline-Befehlsverarbeitung verzögert, wobei die
Gesamtverarbeitungskapazität verringert wird.
-
Um diese Verringerung der Leistung zu minimieren, ist ein
Mechanismus der verzögerten Verzweigung verwendet worden.
Dieser Mechanismus der verzögerten Verzweigung ist so,
daß ein Verzweigungsbefehl für einen verzögerten Befehl
gehalten wird, der zu einem späteren Zeitpunkt als die
Ausgabe des Verzweigungsbefehls durch einen
Maschinenzyklus ausgeführt wird, wobei ein Befehlsschlitz
unmittelbar nach dem Verzweigungsbefehl mittels einer durch einen
Kompilierer ausgeführten Befehls-Ablaufsteuerung mit
einem gültigen Befehl gefüllt wird, so daß die Störung der
Pipelineverarbeitung vermieden wird, um die Verringerung
der Leistung zu verhindern.
-
Falls jedoch der Befehlsschlitz unmittelbar nach dem
Verzweigungsbefehl nicht mit einem gültigen Befehl gefüllt
wurde, ist es notwendig, einen NOP-Befehl (einen
Leerbefehl) in den Befehlsschlitz unmittelbar nach dem
Verzweigungsbefehl einzufügen. In diesem Fall wird
selbstverständlich die Leistung verringert.
-
Zu welchem Grad die Schlitze für verzögerte Befehle mit
gültigen Befehlen gefüllt werden können, ist von der
Leistung des Kompilierers abhängig. Im Augenblick ist es
möglich geworden, unter Verwendung einer neuen
Kompilierertechnik etwa 80% bis 90% der Schlitze für verzögerte
Befehle effektiv zu verwenden.
-
Die obenerwähnte parallele VLIW-Befehlsverarbeitung und
die obenerwähnte Pipeline-Befehlsverarbeitung werden
kombiniert, um ein paralleles
Pipeline-Befehlsverarbeitungssystem zu bilden.
-
In diesem parallelen Pipeline-Befehlsverarbeitungssystem
ist ein exklusiv für einen Verzweigungsbefehl verwendetes
Feld in einem Befehlsformat vorgesehen, wobei eine
Verzweigungsbefehls-Verarbeitungseinheit separat von den
anderen Befehlsverarbeitungseinheiten vorgesehen ist, so
daß die Verarbeitung des Verzweigungsbefehls beschleunigt
wird. Demzufolge werden der Verzweigungsbefehl und andere
Befehle parallel verarbeitet.
-
Weil ein Operationsbefehl und ein Lade/Speicher-Befehl
parallel verarbeitet worden sind, ist das parallele
Pipeline-Befehlsverarbeitungssystem üblicherweise so gewesen,
daß eine Verarbeitungseinheit für einen Operationsbefehl,
eine Verarbeitungseinheit für einen Lade/Speicher-Befehl
und eine Verarbeitungseinheit für einen
Verzweigungsbefehl parallel zueinander arbeiten können.
-
Weil die für die ausschließliche Verarbeitung des
Verzweigungsbefehls verwendete Verarbeitungseinheit
hinzugefügt worden ist, kann ein bedingter Verzweigungsbefehl
mit einer hohen Geschwindigkeit ausgeführt werden, wobei,
wenn eine Verzweigungsbedingung erfüllt ist, durch die
Verzweigung keine Verzögerung erzeugt wird. Deshalb wird
der Verarbeitungsablauf der Pipelineverarbeitung nicht
gestört. Weil außerdem die unabhängigen
Hefehlsverarbeitungseinheiten parallel zueinander gesteuert werden, ist
der VLIW-Befehl, der aus mehreren Befehlsfeldern
aufgebaut ist, die die jeweiligen
Befehlsverarbeitungseinheiten steuern, als ein Befehlsformat übernommen worden.
-
Die Leistung des parallelen Befehlsverarbeitungssystems
des Typs der parallelen Pipeline-Befehlsverarbeitung ist
davon abhängig, wie viele Befehlsfunktionen in jeden
Befehlsblock gefüllt sind. Um ein Programm zu optimieren,
sind eine lokale Optimierung und eine großflächige
Optimierung bekannt gewesen. Nun wird ein Ablauf aus
Basisoperationen betrachtet, die keine Verzweigungsoperation
mit Ausnahme für einen Ausgang aus dem Ablauf besitzen,
und in dem keine Verzweigung von außen mit Ausnahme für
einen Einlaß in den Ablauf empfangen wird. In dieser
Beschreibung wird dies als ein "Basisblock" bezeichnet. Die
lokale Optimierung besteht darin, die Abhängigkeit
zwischen den Datenelementen in jedem Basisblock zu prüfen,
um Basisoperationen zu erfassen, die parallel ausgeführt
werden können, und um die erfaßten Basisoperationen in
einem VLIW-Befehl zu kombinieren. Andererseits ist die
großflächige Optimierung eine Optimierung, die von der
Bewegung von Basisoperationen zwischen Basisblöcken
begleitet wird.
-
In einem parallelen Befehlsverarbeitungssystem des Typs
der parallelen Pipeline-Befehlsverarbeitung gibt es sehr
viele bedingte Verzweigungsbefehle, wobei eine Länge des
Basisblocks kurz ist. Im Ergebnis kann durch diese
Optimierungsprozeduren keine große Wirkung erhalten werden.
-
Mit Blick auf das obige hat das parallele
Befehlsverarbeitungssystem des Typs der parallelen
Pipeline-Befehlsverarbeitung üblicherweise eine Optimierungsprozedur
verwendet, die als ein
"Ablaufverfolgungs-Ablaufsteuerungsverfahren" bezeichnet wird, das in dem Fall sehr effektiv
ist, daß eine bedingte Verzweigung eine große Abweichung
besitzt (z. B. die Anwendung auf eine chemische
Berechnung und dergleichen).
-
Im obenerwähnten parallelen Befehlsverarbeitungssystem
des Typs der parallelen Pipeline-Befehlsverarbeitung
werden die Befehle, die von einem bedingten
Verzweigungsbefehl verschieden sind, in einem Befehlsblock, der den
bedingten Verzweigungsbefehl enthält, ausgeführt,
ungeachtet ob eine Verzweigungsbedingung erfüllt ist. Es ist
deshalb notwendig, in einen Befehlsblock, der einen
bedingten Verzweigungsbefehl enthält, Befehle, die
unabhängig von der Erfüllung/Nichterfüllung der
Verzweigungsbedingung ausgeführt werden können, als Befehle zu füllen,
die von dem bedingten Verzweigungsbefehl in dem
Befehlsblock verschieden sind, der den bedingten
Verzweigungsbefehl enthält.
-
Nun wird ein paralleles
Pipeline-Befehlsverarbeitungssystem betrachtet, in dem vier
Pipeline-Befehlsverarbeitungseinheiten parallel angeordnet sind, um einen VLIW-
Befehl mit vier Feldern auszuführen. Eine Stufe der vier
parallelen Verarbeitungseinheiten wird für die
ausschließliche Verarbeitung lediglich von
Verzweigungsbefehlen verwendet, so daß das parallele Pipeline-Befehlsverarbeitungssystem
hergestellt wird, das keine durch die
bedingte Verzweigung verursachte Verzögerung aufweist.
-
In diesem Fall besitzt der Befehlsblock, der den
bedingten Verzweigungsbefehl enthält, drei Befehlsfelder, die
vom bedingten Verzweigungsbefehl verschieden sind. Wie
oben erwähnt ist, ist es notwendig, in die drei Felder
Befehle zu füllen, die ungeachtet der
Erfüllung/Nichterfüllung des Verzweigungsbefehls ausgeführt
werden können. Falls die drei Felder nicht gefüllt sind,
treten maximal drei leere Felder auf.
-
Nun wird der Mechanismus der verzögerten Verzweigung für
das parallele Pipeline-Befehlsverarbeitungssystem
betrachtet, das als Verzweigungsverzögerung einen
Maschinenzyklus aufweist. Das parallele
Pipeline-Befehlsverarbeitungssystem besitzt einen Schlitz für verzögerte
Befehle, der einem Schlitz entspricht. Weil ein Befehl aus
vier Befehlsfeldern aufgebaut ist, entspricht der Schlitz
für verzögerte Befehle äquivalent vier Befehlen. Außerdem
müssen drei Befehlsfelder des Befehls selbst, der den
Verzweigungsbefehl besitzt, mit Blick auf die
Befehlsabhängigkeit ähnlich zu dem Schlitz für verzögerte Befehle
behandelt werden. Deshalb kann das vierfach parallele
Pipeline-Befehlsverarbeitungssystem als zu einem seriellen
Pipeline-Befehlsverarbeitungssystem äquivalent betrachtet
werden, das sieben Schlitze für verzögerte Befehle
besitzt.
-
Wie oben erwähnt ist, beträgt im Mechanismus der
verzögerten Verzweigung für eine nichtparallele
Pipeline-Befehlsverarbeitung die Wahrscheinlichkeit des Füllens auch
nur eines gültigen Befehls in einen Befehlsschlitz
unmittelbar nach dem Verzweigungsbefehl etwa 80% bis 90%,
selbst wenn die aktuelle Kompilierertechnologie verwendet
wird. Mit Blick auf diese Umstände ist es extrem schwierig,
die sieben leeren Befehlsschlitze effektiv zu
verwenden. Demzufolge verringert das parallele
Pipeline-Befehlsverarbeitungssystem, das den herkömmlichen
Pipelinemechanismus verwendet, der die Verzweigungsverzögerung
von einem Maschinenzyklus aufweist, seine
Verarbeitungsleistung, wenn ein Verzweigungsbefehl ausgeführt wird.
-
Selbst im parallelen Pipeline-Befehlsverarbeitungssystem,
das die verzögerte Verzweigung nicht verwendet, ist es
notwendig, mittels der Befehls-Ablaufsteuerung
ausführbare Befehle in drei Befehlsfelder eines Befehlsblocks
einzuordnen, der einen bedingten Verzweigungsbefehl
besitzt. Deshalb müssen NOP-Befehle in die meisten
Befehlsfelder gefüllt werden. Deshalb wird selbst im parallelen
Pipeline-Hefehlsverarbeitungssystem, das die verzögerte
Verzweigung nicht verwendet, die Verarbeitungsleistung
beachtlich verringert, wenn der Befehlsblock ausgeführt
wird, der den bedingten Verzweigungsbefehl enthält, weil
die Anzahl der leeren Befehlsfelder in dem Befehlsblock,
der den bedingten Verzweigungsbefehl enthält, zunimmt.
Wie oben erwähnt ist, ist die
Ablaufverfolgungs-Ablaufsteuerung beim Optimieren der Basisoperationen einer
langen Ablaufverfolgung effektiv. Weil andererseits eine
Kopie von Blöcken häufig auftritt, wird eine Codegröße
eines Programms sehr groß.
-
In EP-A-0.021.399 ist ein Verfahren und eine Maschine für
die Mehrfachbefehlsausführung offenbart. Mehrfachbefehle,
die in ein Mehrfachbefehlswort kompiliert worden sind,
werden gleichzeitig ausgeführt. Um eine Strafe bei einem
Vorhersagefehler von einer bedingten Verzweigung zu
vermeiden, muß sich ein auftretender Verzweigungsbefehl
immer am Ende der Gruppe befinden, die die Mehrfachbefehle
enthält. Während eines freien Befehlszyklus wird
entschieden, ob das Verzweigungsziel oder der nächste Befehl
im folgenden Zyklus geholt wird.
Zusammenfassung der Erfindung
-
Demzufolge ist es eine Aufgabe der vorliegenden
Erfindung, ein paralleles Pipeline-Befehlsverarbeitungssystem
zu schaffen, das den obenerwähnten Mangel des
herkömmlichen parallelen Pipeline-Befehlsverarbeitungssystems
überwunden hat.
-
Es ist eine weitere Aufgabe der vorliegenden Erfindung,
ein paralleles Pipeline-Hefehlsverarbeitungssystem zu
schaffen, das die Zunahme der leeren Befehlsfelder in
einem Befehlsblock verhindern kann, der einen
Verzweigungsbefehl enthält, ohne die Verzögerungsverzweigung zu
verwenden.
-
Es ist eine noch weitere Aufgabe der vorliegenden
Erfindung, ein paralleles Pipeline-Befehlsverarbeitungssystem
zu schaffen, das die Zunahme der leeren Befehlsfelder in
einem Befehlsblock verhindern kann, der einen bedingten
Verzweigungsbefehl enthält, um eine vergrößerte
Verarbeitungsleistung zu erhalten, indem eine Befehlsausführungs-
Auswahlfunktion geschaffen wird, die anhand der
Erfüllung/Nichterfüllung eine Verzweigungsbedingung eine
Befehlsausführung in Befehle wählen kann, die von einem
bedingten Verzweigungsbefehl verschieden sind, der in einem
Befehlsblock enthalten ist, der den bedingten
Verzweigungsbefehl aufweist.
-
Es ist eine weitere Aufgabe der vorliegenden Erfindung,
ein paralleles Pipeline-Befehlsverarbeitungssystem zu
schaffen, das die Ausführungs-Verarbeitungszeit einer
Schleife verringern kann, indem es unter Verwendung der
Ausführungsauswahlverarbeitung einen gültigen Code
erzeugt, um die Verarbeitungsleistung zu vergrößern.
-
Ein paralleles Pipeline-Befehlsverarbeitungssystem gemäß
der vorliegenden Erfindung ist im unabhängigen Anspruch 1
definiert. Die abhängigen Ansprüche definieren spezielle
Ausführungsformen der Erfindung.
-
Die obigen und andere Aufgaben, Merkmale und Vorteile der
vorliegenden Erfindung werden aus der folgenden
Beschreibung bevorzugter Ausführungsformen der Erfindung unter
Bezugnahme auf die beigefügte Zeichnung offensichtlich.
Kurzbeschreibung der Zeichnung
-
Fig. 1 ist ein Blockschaltplan einer ersten
Ausführungsformen des parallelen
Pipeline-Befehlsverarbeitungssystems eines vierfach parallelen Typs gemäß der
vorliegenden Erfindung;
-
Fig. 2 zeigt ein in dem in Fig. 1 gezeigten parallelen
Pipeline-Befehlsverarbeitungssystem verwendetes
Befehlsformat;
-
Fig. 3 veranschaulicht ein Beispiel der
Pipelineverarbeitung;
-
Fig. 4 zeigt ein Beispiel einer Programmfolge, die einen
bedingten Verzweigungsbefehl enthält;
-
Fig. 5 veranschaulicht ein Beispiel der
Pipeline-Befehlsverarbeitung, wenn der in Fig. 4 gezeigte Befehl
ausgeführt wird;
-
Fig. 6 ist ein Blockschaltplan einer zweiten
Ausführungsformen des parallelen
Pipeline-Befehlsverarbeitungssystems des vierfach parallelen Typs gemäß der vorliegenden
Erfindung;
-
Fig. 7 zeigt ein; Beispiel eines in der zweiten
Ausführungsform ausgeführten Befehlsblocks, der einen bedingten
Verzweigungsbefehl aufweist;
-
Fig. 8 zeigt ein Beispiel eines ein Befehlsausführungs-
Auswahlfeld enthaltenden Befehlsformates in der zweiten
Ausführungsform;
-
Fig. 9 ist ein Ablaufplan, der ein
Codeoptimierungsverfahren in der zweiten Ausführungsform veranschaulicht;
-
Fig. 10 ist ein veranschaulichender Ablaufplan, der einen
Schleifenoptimierungsabschnitt in dem in Fig. 9 gezeigten
Verfahren veranschaulicht, und
-
die Fig. 11 und 12 sind Programmfolgen von Schleifen vor
und nach der in Fig. 9 gezeigten Optimierung.
Beschreibung der bevorzugten Ausführungsformen
-
In Fig. 1 ist ein Blockschaltplan einer ersten
Ausführungsform des parallelen
Pipeline-Befehlsverarbeitungssystems eines vierfach parallelen Typs gemäß der
vorliegenden Erfindung gezeigt. Deshalb ist das gezeigte parallele
Pipeline-Befehlsausführungssystem so konfiguriert, um
durch einen parallelen VLIW-Befehlszug, der aus vier
Befehlen aufgebaut ist, vier Befehle parallel auszuführen.
-
Das parallele Pipeline-Befehlsverarbeitungssystem enthält
einen Befehlsblock-Speicher 1 und eine
Befehlsblock-Holeinheit 2, die durch einen Befehlsblock-Bus 31 an den
Befehlsblock-Speicher 1 gekoppelt ist, um einen durch einen
Adressenbus 32 bezeichneten Speicherblock durch den
Befehlsblock-Bus 31 aus dem Befehlsblock-Speicher 1 zu
holen. Es werden z. B. ein Befehl (1), ein Befehl (2), ein
Befehl (3) und ein Verzweigungsbefehl, die in einem in
Fig. 2 gezeigten Befehlsblock enthalten sind, durch die
Befehlsbusse 33 bis 36 zu den Befehlsausführungseinheiten
3 bis 5 bzw. einer Verzweigungsbefehls-Ausführungseinheit
6 übertragen. Jede der Befehlsausführungseinheiten 3 bis
5 ist konfiguriert, um den übertragenen Befehl zu
decodieren, durch einen Registerlesebus 37 bis 40 einen in
dem übertragenen Befehl zu verwendenden Operanden zu
holen, den übertragenen Befehl auszuführen und dann ein
Ergebnis der Ausführung des Befehls durch die
Registerschreibbusse 49 bis 51 in eine Datenregistergruppe 7 zu
schreiben.
-
Andererseits decodiert die
Verzweigungsbefehls-Ausführungseinheit 6 den übertragenen Verzweigungsbefehl, wobei
sie die Erzeugung einer Verzweigungszieladresse ausführt.
Zum selben Zeitpunkt wird eine intern in der
Verzweigungsbefehls-Ausführungseinheit 6 gehaltene
Befehlsblockadresse inkrementiert, um eine nächste zu holende Adresse
zu erzeugen. Außerdem wird die Erfüllung/Nichterfüllung
einer Verzweigungsbedingung unterschieden, indem auf
einen durch einen Registerlesebus 40 gegebenen Operanden
Bezug genommen wird. Wenn eine Verzweigung erzeugt wird,
wird am Adressenbus 32 eine Verzweigungszieladresse
erzeugt, während, wenn keine Verzweigung erzeugt wird, eine
nächste Adresse an den Adressenbus 32 ausgegeben wird.
Falls der Verzweigungsbefehl ein Verzweigungsbefehl mit
Speicherung der Rücksprungadresse ist, der eine
Verarbeitung des Speicherns einer nächsten Adresse in einem
Register enthält, wird eine Verzweigungszieladresse an den
Adressenbus 32 ausgegeben, wobei zum selben Zeitpunkt
durch den Registerschreibbus 52 die nächste Adresse in
die Datenregistergruppe 7 geschrieben wird.
-
Die vierte Befehlsausführungseinheit des gezeigten
parallelen Pipeline-Befehlsausführungssystems wird exklusiv
für den Verzweigungsbefehl verwendet, so daß die nächste
Adresse oder die Verzweigungszieladresse ohne eine durch
die bedingte Verzweigung verursachte Verzögerung an den
Adressenbus ausgegeben werden kann.
-
Jede der Befehlsausführungseinheiten 3 bis 5 enthält eine
Operandenholschaltung 14, 15 oder 16, die durch einen
Befehlsbus 33, 34 oder 35 an die Befehlsblock-Holeinheit 2
gekoppelt ist, wobei sie außerdem durch einen
Registerlesebus 37, 38 oder 39 an die Datenregistergruppe 7
gekoppelt sind. Die Operandenholschaltung 14, 15 oder 16 ist
durch einen Quellenoperandenbus 42, 43 oder 44 an eine
zugeordnete Befehlsausführungsschaltung 19, 20 oder 21
gekoppelt, so daß ein in der Operandenholschaltung
geholter Operand zur Befehlsausführungsschaltung übertragen
wird. Die Befehlsausführungsschaltung 19, 20 oder 21 ist
durch einen Zieloperandenbus 46, 47 oder 48 an eine
Operandenschreibschaltung 23, 24 oder 25 gekoppelt, so daß
das Ergebnis der Ausführung des Befehls zur
Operandenschreibschaltung übertragen wird. Jede der
Operandenschreibschaltungen 23, 24 und 25 ist durch einen
entsprechenden der Registerschreibbusse 49, 50 und 51 an die
Datenregistergruppe 7 gekoppelt.
-
Andererseits enthält die
Verzweigungsbefehls-Ausführungseinheit 6 eine Operandenholschaltung 17, die durch einen
Befehlsbus 36 an die Befehlsblock-Holeinheit 2 gekoppelt
ist, und die außerdem durch einen Registerlesebus 40 an
die Datenregistergruppe 7 gekoppelt ist. Die
Operandenholschaltung 17 ist durch einen Quellenoperandenbus 41 an
eine Adressenerzeugungsschaltung 18 gekoppelt, so daß ein
in der Operandenholschaltung 17 geholter Operand zur
Adressenerzeugungsschaltung 18 übertragen wird. Die
Adressenerzeugungsschaltung 18 ist durch einen
Zieloperandenbus 45 eine die Operandenschreibschaltung 22
gekoppelt, so daß die nächste Adresse zur Operandenschreibschaltung
22 übertragen wird. Die
Operandenschreibschaltung 22 ist durch den Registerschreibbus 52 an die
Datenregistergruppe 7 gekoppelt.
-
Die Datenregistergruppe 7 enthält acht Leseanschlüsse und
vier Schreibanschlüsse. Jeder der Registerlesebusse 37,
38, 39 und 40 ist aus zwei Bussen aufgebaut, wobei
außerdem jeder der Quellenoperandenbusse 41, 42, 43 und 44 aus
zwei Bussen aufgebaut ist.
-
In Fig. 2 ist ein in dem in Fig. 1 gezeigten parallelen
Pipeline-Befehlsverarbeitungssystem verwendeter
Befehlsblock gezeigt, der vier Befehlsfelder enthält, die von
einer MSB-Seite (der Seite des höchstwertigen Bits) als
"Feld 1", "Feld 2", "Feld 3" bzw. "Feld 4" bezeichnet
werden. Das erste bis dritte Befehlsfeld "Feld 1",
"Feld 2" und "Feld 3" sind den Nicht-Verzweigungsbefehlen
"Befehl 1", "Befehl 2" und "Befehl 3" geordnet, während
das vierte Feld "Feld 4" einem Verzweigungsbefehl
"Verzweigungsbefehl" zugeordnet ist.
-
In Fig. 3 ist eine Pipelinestruktur gezeigt, die in dem
in Fig. 1 gezeigten parallelen
Pipeline-Befehlsverarbeitungssystem verwendet wird. In Fig. 3 bezeichnet
-
IF das Holen eines Befehlsblocks;
-
OF das Holen eines Operanden;
-
AG eine Adressenerzeugung;
-
EX eine Ausführung einer Operation; und
-
WB ein Zurückschreiben.
-
Fig. 4 zeigt ein Beispiel einer Programmfolge, die einen
bedingten Verzweigungsbefehl enthält, während Fig. 5 eine
Operation der Pipeline-Befehlsoperation in dem in Fig. 1
gezeigten parallelen Pipeline-Befehlsverarbeitungssystem
zum Ausführen der in Fig. 4 gezeigten Programmfolge
zeigt. In den Fig. 4 und 5 bezeichnet
IF das Holen eines Befehlsblocks;
-
OF das Holen eines Operanden;
-
AG eine Adressenerzeugung;
-
EX 1 bis 6 und 10 bis 12 eine Ausführung der
jeweiligen Operationen; und
-
WB ein Zurückschreiben des Operanden.
-
In dem gezeigten Beispiel einer Programmfolge besitzt der
Befehlsblock 1 keinen Verzweigungsbefehl, wobei das
vierte Befehlsfeld "Feld 4" mit einem NOP-Befehl gefüllt
ist. Deshalb sollte der Befehlsblock 1 ausgeführt werden,
wie er ist. Andererseits besitzt der Befehlsblock 2 einen
bedingten Verzweigungsbefehl, der in das vierte
Befehlsfeld "Feld 4" gefüllt ist. Falls die
Verzweigungsbedingung erfüllt ist, springt die Programmfolge zum
Befehlsblock A. Falls die Verzweigungsbedingung nicht erfüllt
ist, bewegt sich die Programmfolge ohne Verzweigung zum
nächsten Befehlsblock 3.
-
Zuerst wird unter Bezugnahme auf die Fig. 1 und 2 der
Betrieb des in Fig. 1 gezeigten parallelen
Pipeline-Befehlsverarbeitungssystems beschrieben, wenn ein
Befehlsblock ausgeführt wird.
-
Die Befehlsblock-Holeinheit 2 holt einen durch den
Adressenbus 32 bezeichneten Befehlsblock aus dem Befehlsblock-
Speicher 1. Außerdem liefert die Befehlsblock-Holeinheit
2 den Befehl (1), den Befehl (2), den Befehl (3) und den
Verzweigungsbefehl, die in Fig. 2 gezeigt sind, durch die
Befehlsbusse 33, 34, 35 und 36 an die
Operandenholschaltungen 14, 15, 16 und 17 bzw. die
Adressenerzeugungsschaltung 18.
-
Dann decodiert jede der Operandenholschaltungen 14, 15,
16 und 17 den übertragenen oder empfangenen Befehl, wobei
sie durch den zugeordneten Registerlesebus 37, 38, 39
oder 40 einen Operanden oder die Operanden, der bzw. die
in dem empfangenen Befehl zu verwenden ist bzw. sind, aus
der Datenregistergruppe 7 holt. Die
Operandenholschaltungen 14, 15 und 16 liefern ihren geholten Operanden oder
ihre geholten Operanden durch die Quellenoperandenbusse
42, 43 und 44 an die entsprechenden
Befehlsausführungsschaltungen 19, 20 bzw. 21. Andererseits liefert die
Operandenholschaltung 17 ihren geholten Operanden oder ihre
geholten Operanden durch die Quellenoperandenbusse 41 an
die Adressenerzeugungsschaltung 19, 20 und 21. Der obige
Betrieb ist für alle Befehlsverarbeitungen der gleiche.
-
Jede der Befehlsausführungsschaltungen 19, 20 und 21
führt den entsprechenden Befehl aus, indem sie den
Operanden oder die Operanden verwendet, der bzw. die durch
den zugeordneten Operandenbus 42, 43 oder 44 übertragen
wurde bzw. wurden, wobei sie das Ergebnis der Ausführung
durch den zugeordneten Zieloperandenbus 49, 50 bzw. 51 an
die entsprechende Operandenschreibschaltung 23, 24 oder
25 überträgt. Jede der Operandenschreibschaltungen 23, 24
und 25 schreibt das empfangene Ergebnis der Ausführung
(den Ergebnisoperanden) durch den zugeordneten
Registerschreibbus 49, 50 oder 51 in ein durch den entsprechenden
Befehl bezeichnetes Register der Datenregistergruppe 7.
-
Andererseits inkrementiert die
Adressenerzeugungsschaltung 18 die intern gehaltene Befehlsblockadresse, um so
eine nächste Adresse zu erzeugen. Zum selben Zeitpunkt
wird der durch den Befehlsbus 36 gegebene
Verzweigungsbefehl decodiert, um eine Verzweigungszieladresse zu
erzeugen. Außerdem wird ein durch den Quellenoperandenbus 41
gegebener Operand untersucht, um die
Erfüllung/Nichterfüllung der Verzweigungsbedingung zu unterscheiden. Falls
die Verzweigungsbedingung erfüllt ist, wird die
Verzweigungszieladresse durch den Adressenbus 32 ausgegeben.
Falls andererseits die Verzweigungsbedingung nicht
erfüllt
ist, wird durch den Adressenbus 32 die nächste
Adresse ausgegeben. Falls der Verzweigungsbefehl ein
Verzweigungsbefehl mit Speicherung der Rücksprungadresse
ist, der eine Verarbeitung des Speicherns einer nächsten
Adresse in einem Register enthält, wird eine
Verzweigungszieladresse an den Adressenbus 32 ausgegeben, wobei
zum gleichen Zeitpunkt die nächste Adresse durch den
Zieloperandenbus 45 an die Operandenschreibschaltung 22
übertragen wird, so daß die nächste Adresse von der
Operandenschreibschaltung 22 durch den Registerschreibbus 52
in die Datenregistergruppe 7 geschrieben wird.
-
Ein Zeitablauf des obenerwähnten Betriebs wird unter
Bezugnahme auf Fig. 3 erklärt, die einen Ablauf der
Verarbeitung veranschaulicht, wenn ein Befehlsblock ausgeführt
wird.
-
In Fig. 3 entsprechen die in der ersten und dritten Zeile
gezeigten Verarbeitungen den Verarbeitungen für den
Befehl (1), den Befehl (2) bzw. den Befehl (3). Eine in den
letzten zwei Zeilen gezeigte Verarbeitung entspricht
einer Verarbeitung für den Verzweigungsbefehl. Ein
Zeitablauf, bei dem die Befehlsblock-Holeinheit 2 einen
Hefehlsblock aus dem Befehlsblock-Speicher I holt,
entspricht dem IF. Ähnlich entspricht der Zeitablauf des
Holens des Operanden der Operandenholschaltungen 14 bis 17
aus der Datenregistergruppe 7 dem OF. Die Erzeugung der
nächsten Adresse und der Verzweigungszieladresse der
Adressenerzeugungsschaltung 18 entspricht der AG. Die
Befehlsausführung der Befehlsausführungsschaltungen 19 bis
21 entspricht der EX. Das Operandenschreiben der
Operandenschreibschaltungen 22 bis 25 entspricht dem WB.
-
Nun wird betrachtet, wenn das gezeigte parallele
Pipeline-Befehlsverarbeitungssystem die in Fig. 4 gezeigte
Programmfolge verarbeitet. In dem in Fig. 4 gezeigten
Beispiel enthält der Befehlsblock 2 einen derartigen
bedingten Verzweigungsbefehl, daß, falls eine
Verzweigungsbedingung erfüllt ist, die Folge vom Befehlsblock 2 zu
einem Befehlsblock A verzweigt. Fig. 5 zeigt den Betrieb
der Pipelineverarbeitung, wenn die in Fig. 4 gezeigte
Programmfolge ausgeführt wird.
-
In einer Verarbeitung des Befehlsblocks 2 führt die Stufe
oder Einheit, die das Verzweigungsfeld verarbeitet, das
Holen des Operanden und die Erzeugung der nächsten
Adresse und der Verzweigungszieladresse gleichzeitig
parallel aus, wobei sie anhand eines Inhaltes des geholten
Operanden am Ende eines Maschinenzyklus t2 gestimmt, ob
die nächste Adresse oder die Verzweigungszieladresse
gewählt werden sollte. Die gewählte Adresse wird an den
Adressenbus 32 ausgegeben. Deshalb kann die Verarbeitung
für den Befehlsblock A von einem Maschinenzyklus t3
beginnen. Falls andererseits die Befehle (4) bis (6)
normale Befehle sind, werden die Befehle (4) bis (6)
ausgeführt, ungeachtet ob die Verzweigungsbedingung erfüllt
ist.
-
Demzufolge tritt, wenn der Befehlsblock ausgeführt wird,
der den Verzweigungsbefehl enthält, in dem Befehlsblock,
der den Verzweigungsbefehl enthält, kein Leerbefehl auf.
Demzufolge ist es möglich, ein hocheffizientes paralleles
Pipeline-Befehlsverarbeitungssystem zu verwirklichen, das
die Pipeline-Befehlsverarbeitung mit der parallelen VLIW-
Verarbeitung kombiniert, das mittels einer einfachen
Hardware und einer parallelen Befehls-Ablaufsteuerung zum
Zeitpunkt der Kompilierung eine parallele Verarbeitung
verwirklicht.
-
Außerdem können im Vergleich zum herkömmlichen System
leere Schlitze in den Befehlsblöcken verringert werden,
die durch den Kompilierer zu füllen sind. Um eine maximale
Leistung im herkömmlichen parallelen
Pipeline-Befehlsverarbeitungssystem zu entfalten, das die
Verzweigungsverzögerung von einem Maschinenzyklus aufweist, muß
der Kompilierer z. B. gültige Befehle in sechs
Befehlsschlitze füllen, die aus den drei Schlitzen für die
Befehle (4) bis (6) und drei im nächsten Befehlsblock
enthaltenen Schlitzen bestehen. In der gezeigten
Ausführungsform des parallelen
Pipeline-Befehlsverarbeitungssystems gemäß der vorliegenden Erfindung ist es jedoch
ausreichend, wenn nur die drei Schlitze für die Befehle (4)
bis (6) mit gültigen Befehlen gefüllt werden. Deshalb
wird die parallele Befehls-Ablaufsteuerung leicht.
-
In Fig. 6 ist ein Blockschaltplan einer zweiten
Ausführungsform des parallelen
Pipeline-Befehlsverarbeitungssystems des vierfach parallelen Typs gemäß der vorliegenden
Erfindung gezeigt. In Fig. 6 sind den Elementen, die
denjenigen entsprechen, die in Fig. 1 gezeigt sind, die
gleichen Bezugszeichen gegeben, wobei deren Beschreibung
weggelassen ist, um die Beschreibung zu vereinfachen.
-
Wie aus dem Vergleich zwischen den Fig. 1 und 6
ersichtlich ist, ist die zweite Ausführungsform mit dem Ergebnis
modifiziert, daß die Befehlsblock-Holeinheit 2 ein
Ausführungsauswahl-Plus/Minus-Signal 53 an die
Befehlsausführungsschaltungen 19 bis 21 ausgibt, während die
Adressenerzeugungsschaltung 18 ein
Verzweigungsbedingungs-Erfüllungssignal 54 an die Befehlsausführungsschaltungen 19
bis 21 ausgibt. Fig. 6 zeigt den Fall, in dem das
Ausführungsauswahl-Plus-Signal 53 nur an die
Befehlsausführungsschaltung 20 ausgegeben wird.
-
Ähnlich zur ersten Ausführungsform ist die zweite
Ausführungsform das parallele
Pipeline-Befehlsverarbeitungssystem, das keine Verzweigungsverzögerung aufweist. Nun
wird ein Ablauf einer Programmfolge erklärt, die einen
bedingten Verzweigungsbefehl und einen Befehl mit einer
Ausführungsauswahrtunktion enthält.
-
Jeder Befehlsblock ist ähnlich zum Fall der ersten
Ausführungsform wie in Fig. 2 gezeigt aufgebaut. Außerdem
wird angenommen, daß der in Fig. 4 gezeigte Befehlsblock
2 ein Befehlsblock ist, wie er in Fig. 7 gezeigt ist. In
dem in Fig. 7 gezeigten Befehlsblock sind die
Befehlsfelder 1 und 3 mit einem logischen Schiebebefehl gefüllt
(lsl: logische Verschiebung nach links), während das
Befehlsfeld 2 mit einem Additionsbefehl gefüllt ist. Das
Befehlsfeld 4 ist mit einem bedingten Verzweigungsbefehl
gefüllt (falls ein Wert eines Registers "r23" "0" ist,
ist die Verzweigungsbedingung erfüllt).
-
Hier wird ein Vorzeichen "+" zu einem Kopf des
Additionsbefehls des Befehlsfeldes 2 hinzugefügt. Fig. 8 zeigt
eine Diagrammanordnung eines Objektformats dieses
Additionsbefehls. Der Objektcode besitzt eine Länge von 32 Bit,
wobei ein Teil von diesem den Feldern einem Op-Code,
einem Quellregister 1, einem Quellregister 2 und einem
Zielregister zugeordnet ist. Diese Felder sind nämlich
mit den jeweiligen Objektcodes für den Op-Code, das
Quellregister 1, das Quellregister 2 bzw. das
Zielregister gefüllt. Außerdem bilden das 0. und 1. Bit des in
Fig. 8 gezeigten Formats ein
Befehlsausführungs-Auswahlfeld, um anhand einer Bedingung eines bedingten
Verzweigungsbefehls, der in dem betreffenden Befehlsblock
enthalten ist, auszuwählen, ob der Befehl ausgeführt werden
sollte.
-
In dem in Fig. 7 gezeigten Befehlsblock enthält das
Befehlsfeld 4 den bedingten Verzweigungsbefehl, wobei
gewünscht wird, das Befehlsfeld 2 nur auszuführen, wenn die
Verzweigungsbedingung erfüllt ist. Für diesen Zweck ist
das Vorzeichen "+" zum Kopf des Befehlsfeldes 2 hinzugefügt.
In diesem Fall ist das
Befehlsausführungs-Auswahlfeld des Objektcodes mit einem Code "O1" gefüllt. Bei
dieser Einstellung wird, wenn der Befehlsblock ausgeführt
wird, der Befehl des Befehlsfeldes 2 ausgeführt, falls
die Verzweigungsbedingung erfüllt ist. Falls im Gegensatz
die Bedingung nicht erfüllt ist, wird der Befehl des
Befehlsfeldes 2 nicht ausgeführt.
-
Falls gewünscht wird, das Befehlsfeld 2 nur auszuführen,
wenn die Verzweigungsbedingung nicht erfüllt ist, wird
ein Vorzeichen "-" zum Kopf des Befehlsfeldes 2
hinzugefügt. In diesem Fall ist das
Befehlsausführungs-Auswahlfeld des Objektcodes mit einem Code "01" gefüllt. Falls
andererseits ein Befehl ungeachtet der
Erfüllung/Nichterfüllung der Verzweigungsbedingung ausgeführt
werden kann, wird der Befehl weder mit dem Vorzeichen "+"
noch mit dem Vorzeichen "-" beschrieben. In diesem Fall
ist das Befehlsausführungs-Auswahlfeld des Objektcodes
mit einem Code "00" gefüllt.
-
Nun wird eine Folge des Ausführens des in Fig. 7
gezeigten Befehlsblocks erklärt.
-
Die Befehlsblock-Holeinheit 2 holt einen durch den
Adressenbus 32 bezeichneten Befehlsblock aus dem Befehlsblock-
Speicher 1. Außerdem liefert die Befehlsblock-Holeinheit
2 den Befehl (4), den Befehl (5), den Befehl (6) und den
Verzweigungsbefehl, die in Fig. 7 gezeigt sind, durch die
Befehlsbusse 33, 34, 35 und 36 an die
Operandenholschaltungen 14, 15, 16 bzw. 17. Zum selben Zeitpunkt gibt die
Befehlsblock-Holeinheit 2 das
Ausführungsauswahl-Plus-Signal 53 an die Befehlsausführungsschaltung 20 aus, weil
das Befehlsausführungs-Auswahlfeld des Befehlsfeldes 2
des in Fig. 7 gezeigten Befehlsblocks "+" ist. Weil das
Befehlsausführungs-Auswahlfeld der anderen Befehlsfelder
des in Fig. 7 gezeigten Befehlsblocks mit "00" gefüllt
ist, wird das Ausführungsauswahl-Plus-Signal 53 nicht
ausgegeben.
-
Dann decodiert jede der Operandenholschaltungen 14, 15,
16 und 17 den übertragenen oder empfangenen Befehl, wobei
sie durch den zugeordneten Registerlesebus 37, 38, 39
oder 40 einen Operanden oder die Operanden, der bzw. die
in dem empfangenen Befehl zu verwenden ist bzw. zu
verwenden sind, aus der Datenregistergruppe 7 holt. Der
obenerwähnte Betrieb ist der gleiche für alle drei
Befehlsausführungseinheiten 3 bis 5.
-
Andererseits inkrementiert die
Adressenerzeugungsschaltung 18 der Verzweigungsbefehls-Ausführungseinheit 6 die
intern gehaltene Befehlsblockadresse, um eine nächste
Adresse zu erzeugen. Zum selben Zeitpunkt wird der durch
den Befehlsbus 36 gegebene Verzweigungsbefehl decodiert,
um eine Verzweigungszieladresse zu erzeugen. Außerdem
wird ein durch den Quellenoperandenbus 41 gegebener
Operand untersucht, um die Erfüllung/Nichterfüllung der
Verzweigungsbedingung zu unterscheiden. Falls die
Verzweigungsbedingung erfüllt ist, wird die
Verzweigungszieladresse durch den Adressenbus 32 ausgegeben. Falls
andererseits die Verzweigungsbedingung nicht erfüllt ist,
wird durch den Adressenbus 32 die nächste Adresse
ausgegeben. Falls außerdem die Verzweigungsbedingung erfüllt
ist und die Verzweigung ausgeführt wird, wird das
Verzweigungsbedingungs-Erfüllungssignal 54 "1" an die
Hefehlsausführungsschaltungen 19 bis 21 ausgegeben. Falls
die Verzweigungsbedingung nicht erfüllt ist, wird das
Verzweigungsbedingungs-Erfüllungssignal 54 "0" erzeugt.
Falls der Verzweigungsbefehl ein Verzweigungsbefehl mit
Speicherung der Rücksprungadresse ist, der eine
Verarbeitung des Speicherns einer nächsten Adresse in einem
Register enthält, wird eine Verzweigungszieladresse an den
Adressenbus 32 ausgegeben, wobei das Verzweigungsbedingungs-Erfüllungssignal
54 ausgegeben wird, während zum
gleichen Zeitpunkt die nächste Adresse durch den
Zieloperandenbus 45 an die Operandenschreibschaltung 22
übertragen wird, so daß die nächste Adresse von der
Operandenschreibschaltung 22 durch den Registerschreibbus 52 in
die Datenregistergruppe 7 geschrieben wird.
-
Jede der Befehlsausführungsschaltungen 19 und 21 führt
den entsprechenden Befehl aus, indem sie den Operanden
oder die Operanden verwendet, der bzw. die durch den
zugeordneten Operandenbus 42 oder 44 übertragen wurde bzw.
wurden, wobei sie das Ergebnis der Ausführung durch den
zugeordneten Zieloperandenbus 49 oder 51 an die
entsprechende Operandenschreibschaltung 23 oder 25 überträgt.
Jede der Operandenschreibschaltungen 23 und 25 schreibt
das empfangene Ergebnis der Ausführung (den
Ergebnisoperanden) durch den zugeordneten Registerschreibbus 49 oder
51 in ein durch den entsprechenden Befehl bezeichnetes
Register der Datenregistergruppe 7.
-
Weil andererseits das Ausführungsauswahl-Plus-Signal 53
aktiv ist, falls das
Verzweigungsbedingungs-Erfüllungssignal 54 aktiv ist, führt die Befehlsausführungsschaltung
20 den entsprechenden Befehl aus, indem sie den Operanden
oder die Operanden verwendet, der bzw. die durch den
zugeordneten Operandenbus 43 übertragen wurde bzw. wurden,
wobei sie das Ergebnis der Ausführung durch den
zugeordneten Zieloperandenbus 47 an die entsprechende
Operandenschreibschaltung 24 überträgt. Die
Operandenschreibschaltung 24 schreibt das empfangene Ergebnis der Ausführung
(den Ergebnisoperanden) durch den zugeordneten
Registerschreibbus 50 in ein durch den entsprechenden Befehl
bezeichnetes Register der Datenregistergruppe 7.
-
Falls jedoch das Verzweigungsbedingungs-Erfüllungssignal
54 inaktiv ist, weil das Ausführungsauswahl-Plus-Signal
53 aktiv ist, wird der gegebene Befehl durch die
Befehlsausführungsschaltung 20 nicht ausgeführt. In diesem
Fall führen deshalb weder die Befehlsausführungsschaltung
20 noch die Operandenschreibschaltung 24 irgendeine
Handlung aus.
-
Das obenerwähnten Beispiel ist der Fall, in dem das
Befehlsausführungs-Auswahlfeld "+" ist. In dem Fall, in dem
das Befehlsausführungs-Auswahlfeld "-" ist, gibt die
Befehlsblock-Holeinheit 2 das
Ausführungsauswahl-Minus-Signal an die entsprechende Befehlsausführungsschaltung
aus. Falls das Verzweigungsbedingungs-Erfüllungssignal 54
aktiv ist, wird in diesem Fall der gegebene Befehl durch
die entsprechende Befehlsausführungsschaltung nicht
ausgeführt. Falls im Gegensatz das Verzweigungsbedingungs-
Erfüllungssignal 54 inaktiv ist, wird der gegebene Befehl
durch die entsprechende Befehlsausführungsschaltung
ausgeführt.
-
Die obenerwähnte Beziehung kann in den folgenden Tabellen
1 und 2 gezeigt werden.
TABELLE 1
-
Wie aus der obigen Tabelle 1 ersichtlich ist, wird, falls
das Befehlsausführungs-Auswahlfeld "+" ist, der
entsprechende Befehl nur ausgeführt, wenn die
Verzweigungsbedingung erfüllt ist. Falls andererseits das
Befehlsausführungs-Auswahlfeld "-" ist, wird der entsprechende Befehl
nur ausgeführt, wenn die Verzweigungsbedingung nicht
erfüllt ist. Wenn im Befehlsausführungs-Auswahlfeld nichts
bestimmt ist, wird der entsprechende Befehl ungeachtet
der Erfüllung/Nichterfüllung der Verzweigungsbedingung
ausgeführt.
TABELLE 2
-
In der obigen Tabelle 2 ist die Tatsache, daß das
Ergebnis der Ausführung der Befehlsausführungsschaltung nicht
ausgegeben wird, zu der Tatsache äquivalent, daß der
Befehl nicht ausgeführt wird.
-
Wie aus der obigen Beschreibung ersichtlich ist, ist die
zweite Ausführungsform des parallelen
Pipeline-Befehlsverarbeitungssystems so, daß die Befehlsfelder, die von
einem bedingten Verzweigungsbefehl verschieden sind, der
in einem Befehlsblock enthalten ist, mit der
Befehlsausführungs-Auswahlfunktion versehen sind, die anhand der
Erfüllung/Nichterfüllung der Verzweigungsbedingung
auswählen kann, ob der Befehl ausgeführt werden sollte.
Demzufolge ist es möglich, einen Befehl, der nur ausgeführt
werden kann, wenn die Verzweigungsbedingung erfüllt oder
nicht erfüllt ist, in einem Befehlsblock zu füllen, der
einen bedingten Verzweigungsbefehl enthält. Demzufolge
kann die Zunahme leerer Felder effektiv verhindert
werden.
-
Das Pipeline-Befehlsverarbeitungssystem, das dieses
parallele Befehlsausführungs-Auswahlverarbeitungs-Verfahren
übernimmt, ist geeignet, die Probleme zum Zeitpunkt einer
Codeerzeugung im parallelen
Pipeline-Befehlsverarbeitungssystem zu lösen. Dieses Codeerzeugungsverfahren kann
jedoch keinen optimierten Code zum effektiven Verwenden
dieses parallelen
Befehlsausführungs-Auswahlverarbeitungs-Verfahrens erzeugen. Um den Code effektiv für das
Pipeline-Befehlsverarbeitungssystem zu optimieren, ist es
notwendig, Codes zu erzeugen, die für eine Schleife
effektiv sind, für die ein großer Anteil der
Ausführungszeit eines Programms verbraucht wird.
-
In den Fig. 9 und 10 sind ein Ablaufplan eines
Codeoptimierungsverfahrens als die dritte Ausführungsform der
vorlegenden Erfindung bzw. ein Ablaufplan eines
Schleifenoptimierungsteils des Codeoptimierungsverfahrens
gezeigt. Außerdem sind in den Fig. 11 und 12 eine
Programmfolge vor der Optimierung bzw. eine Programmfolge nach
der Optimierung im Pipeline-Befehlsverarbeitungssystem
gezeigt, das das parallele
Befehlsausführungs-Auswahlverarbeitungs-Verfahren übernimmt. In dieser dritten
Ausführungsform wird das in Fig. 6 gezeigte
Pipeline-Befehlsverarbeitungssystem verwendet, das dieses parallele
Befehlsausführungs-Auswahlverarbeitungs-Verfahren
übernimmt. Hier ist übrigens vorausgesetzt, daß ein Programm
bereits der laufenden lokalen Optimierung und der großflächigen
Optimierung unterworfen worden ist, die durch
die aktuelle Optimierungskompilierertechnik erhalten
wird. Deshalb besitzt das in Fig. 11 gezeigte Programm
eine Programmfolge, nachdem die Optimierung für die
Bewegung eines festen Codes in einer Schleife nach außerhalb
der Schleife ausgeführt worden ist, und induzierte
Variable (die bei jeder Wiederholung der Schleife um einen
konstanten Wert geändert werden).
-
In einem Schritt 101 nach Fig. 9 wird das "Unterteilen in
Basisblöcke" ausgeführt. Hier ist der "Basisblock" eine
Folge aus Basisoperationen, die von einem vorderen Befehl
zu einem hinteren Befehl einzeln aufeinanderfolgend
ausgeführt werden. Falls es einen Verzweigungsbefehl in
einem Verzweigungsfeld gibt, wird ein Block unterwegs
aufgebrochen. Deswegen besitzt der Basisblock keinen
Verzweigungsbefehl auf dem Weg der Folge der
Basisoperationen. Demzufolge ist ein "Einlaß in den Basisblock" ein
vorderer Befehlsblock des Basisblocks, während ein
"Ausgang aus dem Basisblock ein hinterer Befehlsblock des
Basisblocks ist. Für die Vereinfachung der Beschreibung ist
übrigens vorausgesetzt, daß jeder Befehl des Programms so
beschaffen ist, daß die leeren Felder der Befehlsblöcke
am Einlaß und am Ausgang des Basisblocks auf ein
mögliches Ausmaß vergrößert sind.
-
In einem Schritt 102 nach Fig. 9 wird das "Analysieren
eines Flusses" ausgeführt. In diesem Schritt werden die
Markendefinition und die Bezugsrelation analysiert, wobei
ein Steuerungsablauf zwischen den Basisblöcken erhalten
wird. Dieser Steuerungsablauf ist durch einen "ersteren"
und einen "letzteren" gezeigt. Wenn sich z. B. der
Steuerungsablauf von einem Basisblock A zu einem Basisblock B
bewegt, ist dies als "Basisblock A → Basisblock B"
beschrieben, wobei der Basisblock A als der erstere für den
Basisblock B bezeichnet wird, während der Basisblock B
als der letztere für den Basisblock A bezeichnet wird.
-
In einem Schritt 103 nach Fig. 9 wird das "Berechnen der
Tiefenanzahl" ausgeführt. Wenn ein Ablauf aus
Basisblöcken des Programms verfolgt wird, indem von einem
ersten Basisblock des Programms gestartet wird, um so
schnell wie möglich zu einem Basisblock so entfernt wie
möglich vom ersten Basisblock des Programms zu gehen, um
schließlich zum ersten Basisblock des Programms
zurückzukehren, wird die Nummer des Basisblocks der längsten
Ablaufverfolgung als die Tiefenanzahl definiert.
-
In einem Schritt 104 nach Fig. 9 wird das "Erfassen eines
Beherrschers" ausgeführt. Dieser Beherrscher ist so
definiert, daß alle vor Ausführung eines betreffenden
Basisblocks notwendigerweise ausgeführten Basisblöcke als ein
Beherrscher für den betreffenden Basisblock bezeichnet
werden. Wird z. B. angenommen, daß die Basisblöcke A, B
und C in der genannten Reihenfolge aufeinanderfolgend
ausgeführt werden, kann der Basisblock A als der
Beherrscher für die Basisblöcke B und C bezeichnet werden,
während der Basisblock B als der Beherrscher für den
Basisblock C bezeichnet werden kann.
-
In einem Schritt 105 nach Fig. 9 wird das "Bilden einer
natürlichen Schleife" ausgeführt. In einem umgekehrten
Richtungsablauf der Basisblöcke "A → B" (der Ablauf
"A → B", in dem der Basisblock A durch den Basisablauf B
beherrscht wird), kann diese natürliche Schleife als eine
Anordnung aus Basisblöcken definiert werden, die gebildet
wird, indem die Basisblöcke A und B in einen Ablauf der
Basisblöcke hinzugefügt werden, der den Basisblock A
erreichen kann, ohne durch den Basisblock B zu gehen.
Demzufolge wird in dem Fall der Basisblock B als ein
vorderer Block dieser natürlichen Schleife bezeichnet, während
der Basisblock A als ein hinterer Block dieser natürlichen
Schleife bezeichnet wird.
-
In einem Schritt 106 nach Fig. 9 wird das "Analysieren
der Lebendvariable" ausgeführt. Es wird ein Register "a"
und irgendein Punkt "p" im Programm betrachtet, wobei
analysiert wird, ob ein Wert des Registers "a" am Punkt
"p" im Programm in irgendeinem Durchlauf verwendet werden
kann, der vom Punkt "p" startet. Wenn der Wert verwendet
werden kann, wird er als "lebend" bezeichnet, während
andererseits, wenn der Wert nicht verwendet werden kann, er
als "tot" bezeichnet wird.
-
In einem Schritt 107 nach Fig. 9 wird das "Optimieren
einer Schleife" ausgeführt. Für jede im Schritt 105
gebildete natürliche Schleife wird eine Codeoptimierung
ausgeführt, um einen Code zu erzeugen, der für das Pipeline-
Befehlsverarbeitungssystem effektiv ist, das das
parallele Befehlsausführungs-Auswahlverarbeitungs-System
übernimmt. Die Länge der Schleife (die Anzahl der
Befehlsblöcke, die die Schleife bilden) wird verkürzt, so daß
die Zeitdauer, die zum Ausführen der Schleife
erforderlich ist, verkürzt wird.
-
Im Schritt 107 nach Fig. 9 für die Schleifenoptimierung
wird durch die in Fig. 10 gezeigten Schritte 111 bis 113
eine Vorunterscheidung ausgeführt, ob die
Schleifenoptimierung möglich ist.
-
Im Schritt 111 wird die Anzahl "y" der leeren Felder am
Ausgang des hinteren Blocks festgestellt.
-
Im Schritt 112 wird anhand der im Schritt 111 erhaltenen
Anzahl "y" der leeren Felder unterschieden, ob die
Optimierung möglich ist. Falls die Anzahl "y" der leeren
Felder "0" (null) ist, wird die Verarbeitung abgebrochen,
weil die Optimierung nicht möglich ist.
-
Im Schritt 113 wird anhand der Registerdefinition und der
Bezugsdaten in einem Befehlsblock am Einlaß des vorderen
Blocks und in einem Befehlsblock am Ausgang des hinteren
Blocks unterschieden, ob die Optimierung möglich ist.
Falls das Register, das im Befehlsblock am Einlaß des
vorderen Blocks definiert ist oder auf das im
Befehlsblock am Einlaß des vorderen Blocks Bezug genommen wird,
im Befehlsblock am Ausgang des hinteren Blocks definiert
ist oder falls auf dieses Register im Befehlsblock am
Ausgang des hinteren Blocks Hezug genommen wird (nämlich
die Definitions/Bezugs-Abhängigkeit besteht) wird die
Verarbeitung abgebrochen, weil die Optimierung nicht
möglich ist.
-
Die Schritte 114 bis 119 nach Fig. 10 zeigen einen
tatsächlichen Optimierungsprozeß.
-
Im Schritt 114 wird die Anzahl "x" der Befehle im
Befehlsblock am Einlaß des vorderen Blocks festgestellt,
während im nächsten Schritt 115 die Anzahl "z" der
Befehle, die in den oben festgestellten Befehlen der Anzahl
"x" im Befehlsblock am Einlaß des vorderen Blocks
enthalten sind und die zum hinteren Block bewegt werden können,
ohne die Ausführungsauswahlverarbeitung zu verwenden, und
die Anzahl "m" der leeren Befehlsfelder, die bewegt
werden können, erhalten wird. Ein Befehl, in dem kein zu
definierendes Register in den Lebendvariablen am Ausgang
des vorderen Blocks enthalten ist, ist ein beweglicher
Befehl. Außerdem ist das bewegliche leere Befehlsfeld ein
leeres Befehlsfeld, das in einem Befehlsblock (der Q
genannt wird) selbst, in dem auf ein durch einen
beweglichen Befehl definiertes Register Bezug genommen wird,
oder in irgendeinem von allen Befehlsblöcken nach den
Befehlsblock Q oder in einem Befehlsblock (der P genannt
wird) selbst, in dem auf ein Register Bezug genommen
wird, auf das durch den beweglichen Befehl Bezug genommen
wird, oder in irgendeinem von allen Befehlsblöcken nach
den Befehlsblock P enthalten ist.
-
Im Schritt 116 wird anhand der Anzahl "x" im Schritt 114,
der Anzahl "y" im Schritt 111 und der Anzahl "z" im
Schritt 115 unterschieden, ob die Optimierung möglich
ist. Falls (x - z) > y gilt, wird die Verarbeitung
abgebrochen, weil die Optimierung nicht möglich ist.
-
In den nachfolgenden Schritten 117 bis 119 werden das
"Bewegen" und das "Kopieren" der Codes und die
Rekonstruktion der Schleife ausgeführt. Im Schritt 117 werden
die Befehle der (im Schritt 114 festgestellten) Anzahl
"z" im Befehlsblock am Einlaß des vorderen Blocks in die
leeren Felder der Anzahl "m" im hinteren Block bewegt.
Die Befehle (im Befehlsblock am Einlaß des vorderen
Blocks), die nicht in den Befehlen der Anzahl "z"
enthalten sind, werden zu den leeren Feldern am Ausgang des
hinteren Blocks bewegt, indem die
Ausführungsauswahlverarbeitung "+" hinzugefügt wird.
-
Im Schritt 118 wird ein neuer Basisblock erzeugt, wobei
der Befehl des Befehlsblocks am Einlaß des vorderen
Blocks, der im Schritt 117 bewegt worden ist, kopiert
wird.
-
Schließlich wird im Schritt 119 die Rekonstruktion der
Schleife ausgeführt. Spezifisch wird der im vorderen
Block enthaltene erste oder vordere Befehlsblock
gelöscht. Dadurch wird die Länge der Schleife (die Anzahl
der Befehlsblöcke, die die Schleife bilden) um einen
Befehlsblock verkürzt.
-
Außerdem wird die folgende Modifikation der
Ablaufinformationen und des Verzweigungsziels ausgeführt.
-
(a) Der "erstere" für den vorderen Block wird durch den
hinteren Block und den im Schritt 118 erzeugten neuen
Basisblock gebildet.
-
(b) Der "letztere" für den Basisblock (der vom hinteren
Block verschieden ist), der den vorderen Block so
bearbeitet, als sei er der "letztere", wird vom
vorderen Block zum im Schritt 118 erzeugten neuen
Basisblock geändert.
-
(c) Falls das Verzweigungsziel des Basisblocks, für das
der "letztere" im Schritt (b) geändert worden ist,
der vordere Block ist, wird das Verzweigungsziel zum
im Schritt 118 erzeugten neuen Basisblock geändert.
-
(d) Der "erstere" für den im Schritt 118 erzeugten neuen
Basisblock wird von allen Basisblöcken gebildet, für
die der letztere im Schritt (b) geändert worden ist.
-
(e) Der "letztere" für den im Schritt IIS erzeugten neuen
Basisblock wird durch den vorderen Block gebildet.
-
Falls die in Fig. 11 gezeigte Programmfolge optimiert
wird, kann die in Fig. 12 gezeigte Programmfolge erhalten
werden. Es wird vorausgesetzt, daß eine natürliche
Schleife mit einem umgekehrten Richtungsablauf "E -+ B"
optimiert werden kann. In einem Befehlsblock am Einlaß
des vorderen Blocks B, der die Befehle 5 bis 7 enthält,
wird der Befehl 6, der im Schritt 117 als einer der
Anzahl "z" von Befehlen gezählt wird, zum hinteren Block E
bewegt, wobei die verbleibenden Befehle (die Befehle 5
und 7) zu einem Befehlsblock am Ausgang des hinteren
Blocks E bewegt werden, indem die
Ausführungsauswahlverarbeitung "+" hinzugefügt wird. Dann wird im Schritt 118
ein Basisblock F erzeugt, der lediglich aus einem aus den
Befehlen 5 bis 7 aufgebauten Befehlsblock besteht. Im
letzten Schritt 119 wird die Schleife rekonstruiert. Der
in Fig. 12 gezeigte Ablauf kann erhalten werden, indem
der vordere Befehlsblock (der aus den Befehlen 5 bis 7
und einem NOP-Befehl aufgebaut ist) im vorderen Block B
gelöscht wird.
-
Folglich ist die Schleife um einen Befehlsblock verkürzt,
weil der vordere Befehlsblock (der aus den Befehlen 5 bis
7 und einem NOP-Befehl aufgebaut ist) im vorderen Block B
aus der Schleife gelöscht ist. Deshalb kann eine Zeit für
die wiederholte Befehlsverarbeitung einer Schleife, die
aus den Basisblöcken B bis F besteht, verkürzt werden.
-
Die Erfindung ist folglich unter Bezugnahme auf
spezifische Ausführungsformen gezeigt und beschrieben worden. Es
sollte jedoch angemerkt werden, daß die vorliegende
Erfindung in keiner Weise auf die Einzelheiten der
veranschaulichten Strukturen eingeschränkt ist, sondern das
innerhalb des Umfangs der beigefügten Ansprüche
Änderungen und Modifikationen ausgeführt werden können.