DE69132675T2 - Parallelfliessband-Befehlsverarbeitungssystem für sehr lange Befehlswörter - Google Patents

Parallelfliessband-Befehlsverarbeitungssystem für sehr lange Befehlswörter

Info

Publication number
DE69132675T2
DE69132675T2 DE69132675T DE69132675T DE69132675T2 DE 69132675 T2 DE69132675 T2 DE 69132675T2 DE 69132675 T DE69132675 T DE 69132675T DE 69132675 T DE69132675 T DE 69132675T DE 69132675 T2 DE69132675 T2 DE 69132675T2
Authority
DE
Germany
Prior art keywords
instruction
block
branch
operand
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69132675T
Other languages
English (en)
Other versions
DE69132675D1 (de
Inventor
Isako Ishikawa
Yumiko Ushimaru
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from JP9450790A external-priority patent/JP2861234B2/ja
Application filed by NEC Corp filed Critical NEC Corp
Publication of DE69132675D1 publication Critical patent/DE69132675D1/de
Application granted granted Critical
Publication of DE69132675T2 publication Critical patent/DE69132675T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Description

    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.

Claims (3)

1. Paralleles Pipeline-Befehlsverarbeitungssystem zum parallelen Ausführen mehrerer Befehle ohne Verzweigungsverzögerung, mit einer Befehlsblock-Holeinrichtung zum Holen eines Befehlsblocks, der wenigstens ein Befehlsfeld und ein Verzweigungsbefehl enthält, wenigstens einer Befehlsausführungseinheit, die einen in dem Befehlsfeld des in der Befehlsblock-Holeinrichtung gehaltenen Befehlsblocks enthaltenen Befehl empfängt und den empfangenen Befehl ausführt, und einer Verzweigungsbefehl-Ausführungseinheit, die einen in dem Verzweigungsbefehlsfeld des in der Befehlsblock-Holeinrichtung gehaltenen Befehlsblocks enthaltenen Verzweigungsbefehl empfängt und eine Verarbeitung für den empfangenen Verzweigungsbefehl ausführt, wobei die Verzweigungsbefehl-Ausführungseinheit eine Operandenholeinrichtung, die den in dem Verzweigungsbefehlsfeld des in der Befehlsblock- Holeinrichtung gehaltenen Befehlsblocks enthaltenen Verzweigungsbefehl empfängt und einen für den empfangenen Verzweigungsbefehl zu verwendenden Operanden von einer Datenregistereinrichtung holt, sowie eine Adressenerzeugungseinrichtung, die den in dem Verzweigungsbefehlsfeld des in der Befehlsblock-Holeinrichtung gehaltenen Befehlsblocks enthaltenen Verzweigungsbefehl empfängt und gleichzeitig eine nächste Adresse für einen als nächstes zu holenden Befehl und eine Verzweigungszieladresse für den empfangenen Verzweigungsbefehl erzeugt, wobei die Adressenerzeugungseinrichtung entweder die nächste Adresse oder die Verzweigungszieladresse anhand des Inhaltes der Operandenholeinrichtung am Ende des Maschinenzyklus, in dem der das Verzweigungsbefehlsfeld enthaltende Befehlsblock durch die Befehlsblock-Holeinrichtung geholt wurde, wählt und ausgibt, so daß die Verarbeitung eines nachfolgenden Befehlsblocks, der auf der Grundlage der gewählten Adresse gewählt wird, am Beginn des folgenden Maschinenzyklus beginnt.
2. Parallelpipeline-Befehlsverarbeitungssystem nach Anspruch 1, wobei der Befehlsblock außerdem Informationen darüber enthält, ob ein Befehl ausgeführt werden soll, wenn der Befehlsblock einen bedingten Verzweigungsbefehl in dem Verzweigungsbefehlsfeld enthält, ferner mit einer Einrichtung, die auf der Grundlage dieser Informationen arbeitet, um anhand der Tatsache, ob eine Verzweigungsbedingung erfüllt ist, zu steuern, ob die wenigstens eine Befehlsausführungseinheit einen entsprechenden Befehl ausführt.
3. Parallelpipeline-Befehlsverarbeitungssystem nach Anspruch 2, wobei dann, wenn die Anzahl leerer Befehlsfelder in einem hinteren Block einer aus einer Sequenz von Befehlsblöcken aufgebauten natürlichen Schleife größer als die Anzahl von Befehlen in einem vorderen Block der Schleife ohne die Anzahl leerer Befehlsfelder ist, ein Befehl am Einlaß des vorderen Blocks in die leeren Befehlsfelder des hinteren Blocks bewegt wird und Befehle in einem vorderen Befehlsblock des bewegten vorderen Blocks in einen neuen Basisblock kopiert werden und außerdem der vordere Befehlsblock des bewegten vorderen Blocks gelöscht wird, um so die Schleife zu rekonstruieren, so daß die Anzahl von in der Schleife enthaltenen Befehlsblöcken verringert wird.
DE69132675T 1990-04-06 1991-04-08 Parallelfliessband-Befehlsverarbeitungssystem für sehr lange Befehlswörter Expired - Fee Related DE69132675T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP9158190 1990-04-06
JP9450790A JP2861234B2 (ja) 1989-08-18 1990-04-10 命令処理装置

Publications (2)

Publication Number Publication Date
DE69132675D1 DE69132675D1 (de) 2001-09-06
DE69132675T2 true DE69132675T2 (de) 2002-06-13

Family

ID=26433025

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69132675T Expired - Fee Related DE69132675T2 (de) 1990-04-06 1991-04-08 Parallelfliessband-Befehlsverarbeitungssystem für sehr lange Befehlswörter

Country Status (3)

Country Link
US (1) US5333280A (de)
EP (1) EP0450658B1 (de)
DE (1) DE69132675T2 (de)

Families Citing this family (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5504932A (en) * 1990-05-04 1996-04-02 International Business Machines Corporation System for executing scalar instructions in parallel based on control bits appended by compounding decoder
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
JP2875909B2 (ja) * 1991-07-12 1999-03-31 三菱電機株式会社 並列演算処理装置
US5546593A (en) * 1992-05-18 1996-08-13 Matsushita Electric Industrial Co., Ltd. Multistream instruction processor able to reduce interlocks by having a wait state for an instruction stream
US5315701A (en) * 1992-08-07 1994-05-24 International Business Machines Corporation Method and system for processing graphics data streams utilizing scalable processing nodes
US5485629A (en) * 1993-01-22 1996-01-16 Intel Corporation Method and apparatus for executing control flow instructions in a control flow pipeline in parallel with arithmetic instructions being executed in arithmetic pipelines
US5717908A (en) * 1993-02-25 1998-02-10 Intel Corporation Pattern recognition system using a four address arithmetic logic unit
JPH06259262A (ja) * 1993-03-08 1994-09-16 Fujitsu Ltd 分岐確率を設定するコンパイラの処理方法および処理装置
US5825921A (en) * 1993-03-19 1998-10-20 Intel Corporation Memory transfer apparatus and method useful within a pattern recognition system
US5553259A (en) * 1993-07-16 1996-09-03 Unisys Corporation Apparatus and method for synchronizing the simultaneous loading of cache program word addresses in dual slice registers
JPH07114603A (ja) * 1993-10-20 1995-05-02 Hitachi Ltd 並列/分散環境下の予算編成システム
DE69433124T2 (de) * 1993-11-05 2004-05-27 Intergraph Corp., Huntsville Befehlsspeicher mit assoziativem Kreuzschienenschalter
US6360313B1 (en) * 1993-11-05 2002-03-19 Intergraph Corporation Instruction cache associative crossbar switch
JPH07160585A (ja) * 1993-12-13 1995-06-23 Hitachi Ltd 低電力データ処理装置
US5564028A (en) * 1994-01-11 1996-10-08 Texas Instruments Incorporated Pipelined data processing including instruction trace
US5513363A (en) * 1994-08-22 1996-04-30 Hewlett-Packard Company Scalable register file organization for a computer architecture having multiple functional units or a large register file
WO1996008777A1 (en) * 1994-09-15 1996-03-21 Philips Electronics N.V. A data processing system comprising data processing units and an expander
US5537620A (en) * 1994-09-16 1996-07-16 International Business Machines Corporation Redundant load elimination on optimizing compilers
US5748950A (en) * 1994-09-20 1998-05-05 Intel Corporation Method and apparatus for providing an optimized compare-and-branch instruction
FR2731094B1 (fr) * 1995-02-23 1997-04-30 Dufal Frederic Procede et dispositif de commande simultanee des etats de controle des unites d'execution d'un processeur programmable
US7301541B2 (en) * 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US5732235A (en) * 1996-01-25 1998-03-24 International Business Machines Corporation Method and system for minimizing the number of cycles required to execute semantic routines
US5924128A (en) * 1996-06-20 1999-07-13 International Business Machines Corporation Pseudo zero cycle address generator and fast memory access
WO1998006042A1 (en) * 1996-08-07 1998-02-12 Sun Microsystems, Inc. Wide instruction unpack method and apparatus
US5931939A (en) * 1996-09-25 1999-08-03 Philips Electronics North America Corporation Read crossbar elimination in a VLIW processor
US5890009A (en) * 1996-12-12 1999-03-30 International Business Machines Corporation VLIW architecture and method for expanding a parcel
US5924117A (en) * 1996-12-16 1999-07-13 International Business Machines Corporation Multi-ported and interleaved cache memory supporting multiple simultaneous accesses thereto
US5872990A (en) * 1997-01-07 1999-02-16 International Business Machines Corporation Reordering of memory reference operations and conflict resolution via rollback in a multiprocessing environment
US5805850A (en) * 1997-01-30 1998-09-08 International Business Machines Corporation Very long instruction word (VLIW) computer having efficient instruction code format
JP3790607B2 (ja) * 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
US5987594A (en) * 1997-06-25 1999-11-16 Sun Microsystems, Inc. Apparatus for executing coded dependent instructions having variable latencies
US6170051B1 (en) 1997-08-01 2001-01-02 Micron Technology, Inc. Apparatus and method for program level parallelism in a VLIW processor
US6237077B1 (en) * 1997-10-13 2001-05-22 Idea Corporation Instruction template for efficient processing clustered branch instructions
US6032252A (en) * 1997-10-28 2000-02-29 Advanced Micro Devices, Inc. Apparatus and method for efficient loop control in a superscalar microprocessor
US6044448A (en) * 1997-12-16 2000-03-28 S3 Incorporated Processor having multiple datapath instances
US5974537A (en) * 1997-12-29 1999-10-26 Philips Electronics North America Corporation Guard bits in a VLIW instruction control routing of operations to functional units allowing two issue slots to specify the same functional unit
DE69837138T2 (de) * 1997-12-31 2007-08-16 Texas Instruments Inc., Dallas Unterbrechbare mehrfache Ausfuehrungseinheitverarbeitung waehrend mehrfacher Zuweisung von Register verwendenden Operationen
US6112299A (en) * 1997-12-31 2000-08-29 International Business Machines Corporation Method and apparatus to select the next instruction in a superscalar or a very long instruction word computer having N-way branching
US6314493B1 (en) 1998-02-03 2001-11-06 International Business Machines Corporation Branch history cache
US6304954B1 (en) * 1998-04-20 2001-10-16 Rise Technology Company Executing multiple instructions in multi-pipelined processor by dynamically switching memory ports of fewer number than the pipeline
US6304960B1 (en) 1998-08-06 2001-10-16 Intel Corporation Validating prediction for branches in a cluster via comparison of predicted and condition selected tentative target addresses and validation of branch conditions
US6240510B1 (en) 1998-08-06 2001-05-29 Intel Corporation System for processing a cluster of instructions where the instructions are issued to the execution units having a priority order according to a template associated with the cluster of instructions
ATE557343T1 (de) * 1998-08-24 2012-05-15 Microunity Systems Eng Prozessor und verfahren zur durchführung eines breitschaltungsbefehls mit breitem operand
US7932911B2 (en) * 1998-08-24 2011-04-26 Microunity Systems Engineering, Inc. Processor for executing switch and translate instructions requiring wide operands
US6230260B1 (en) 1998-09-01 2001-05-08 International Business Machines Corporation Circuit arrangement and method of speculative instruction execution utilizing instruction history caching
US6301653B1 (en) 1998-10-14 2001-10-09 Conexant Systems, Inc. Processor containing data path units with forwarding paths between two data path units and a unique configuration or register blocks
US6480818B1 (en) 1998-11-13 2002-11-12 Cray Inc. Debugging techniques in a multithreaded environment
US6952827B1 (en) 1998-11-13 2005-10-04 Cray Inc. User program and operating system interface in a multithreaded environment
US6314471B1 (en) * 1998-11-13 2001-11-06 Cray Inc. Techniques for an interrupt free operating system
US6862635B1 (en) 1998-11-13 2005-03-01 Cray Inc. Synchronization techniques in a multithreaded environment
US6430676B1 (en) 1998-12-23 2002-08-06 Cray Inc. Method and system for calculating instruction lookahead
US6230313B1 (en) * 1998-12-23 2001-05-08 Cray Inc. Parallelism performance analysis based on execution trace information
US6665688B1 (en) 1998-12-23 2003-12-16 Cray Inc. Method and system for automatically regenerating data on-demand
US6353829B1 (en) 1998-12-23 2002-03-05 Cray Inc. Method and system for memory allocation in a multiprocessing environment
US6415433B1 (en) * 1998-12-23 2002-07-02 Cray Inc. Method and system for identifying locations to move portions of the computer program
US6654869B1 (en) * 1999-10-28 2003-11-25 International Business Machines Corporation Assigning a group tag to an instruction group wherein the group tag is recorded in the completion table along with a single instruction address for the group to facilitate in exception handling
US6697939B1 (en) * 2000-01-06 2004-02-24 International Business Machines Corporation Basic block cache microprocessor with instruction history information
US7069545B2 (en) * 2000-12-29 2006-06-27 Intel Corporation Quantization and compression for computation reuse
JP3656587B2 (ja) * 2001-10-01 2005-06-08 日本電気株式会社 並列演算プロセッサ、その演算制御方法及びプログラム
JP3900485B2 (ja) * 2002-07-29 2007-04-04 インターナショナル・ビジネス・マシーンズ・コーポレーション 最適化装置、コンパイラプログラム、最適化方法、及び記録媒体
US7000091B2 (en) * 2002-08-08 2006-02-14 Hewlett-Packard Development Company, L.P. System and method for independent branching in systems with plural processing elements
JP4283131B2 (ja) * 2004-02-12 2009-06-24 パナソニック株式会社 プロセッサ及びコンパイル方法
US7447941B2 (en) * 2005-07-19 2008-11-04 Hewlett-Packard Development Company, L.P. Error recovery systems and methods for execution data paths
WO2010026485A1 (en) 2008-09-08 2010-03-11 Bridgeco Ag Very long instruction word architecture with multiple data queues
US9792252B2 (en) 2013-05-31 2017-10-17 Microsoft Technology Licensing, Llc Incorporating a spatial array into one or more programmable processor cores
US9785565B2 (en) 2014-06-30 2017-10-10 Microunity Systems Engineering, Inc. System and methods for expandably wide processor instructions
WO2016106691A1 (en) * 2014-12-31 2016-07-07 Yahoo! Inc. Method and/or Apparatus for Generating Signal Processing Pipelines
US10191747B2 (en) 2015-06-26 2019-01-29 Microsoft Technology Licensing, Llc Locking operand values for groups of instructions executed atomically
US10169044B2 (en) 2015-06-26 2019-01-01 Microsoft Technology Licensing, Llc Processing an encoding format field to interpret header information regarding a group of instructions
US9720693B2 (en) 2015-06-26 2017-08-01 Microsoft Technology Licensing, Llc Bulk allocation of instruction blocks to a processor instruction window
US10409599B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Decoding information about a group of instructions including a size of the group of instructions
US10175988B2 (en) 2015-06-26 2019-01-08 Microsoft Technology Licensing, Llc Explicit instruction scheduler state information for a processor
US9946548B2 (en) 2015-06-26 2018-04-17 Microsoft Technology Licensing, Llc Age-based management of instruction blocks in a processor instruction window
US10409606B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Verifying branch targets
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US9952867B2 (en) 2015-06-26 2018-04-24 Microsoft Technology Licensing, Llc Mapping instruction blocks based on block size
EP3570196B1 (de) * 2017-02-14 2022-08-03 Nippon Telegraph and Telephone Corporation Vermittlungsvorrichtung, vermittlungsverfahren und vermittlungsprogramm
CN115016845A (zh) * 2022-05-31 2022-09-06 上海阵量智能科技有限公司 指令处理方法、装置、芯片、板卡、设备以及存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4334268A (en) * 1979-05-01 1982-06-08 Motorola, Inc. Microcomputer with branch on bit set/clear instructions
US4295193A (en) * 1979-06-29 1981-10-13 International Business Machines Corporation Machine for multiple instruction execution
US4539635A (en) * 1980-02-11 1985-09-03 At&T Bell Laboratories Pipelined digital processor arranged for conditional operation
JPS60107141A (ja) * 1983-11-16 1985-06-12 Fujitsu Ltd プランチ制御方式
US4777587A (en) * 1985-08-30 1988-10-11 Advanced Micro Devices, Inc. System for processing single-cycle branch instruction in a pipeline having relative, absolute, indirect and trap addresses
JPS63195736A (ja) * 1987-02-10 1988-08-12 Hitachi Ltd パイプライン制御のための分岐命令処理装置
JPH01269131A (ja) * 1988-04-20 1989-10-26 Hitachi Ltd 命令先行制御方式
US5099419A (en) * 1988-11-25 1992-03-24 Nec Corporation Pipeline microcomputer having branch instruction detector and bus controller for producing and carrying branch destination address prior to instruction execution

Also Published As

Publication number Publication date
DE69132675D1 (de) 2001-09-06
EP0450658B1 (de) 2001-08-01
EP0450658A3 (en) 1993-09-08
US5333280A (en) 1994-07-26
EP0450658A2 (de) 1991-10-09

Similar Documents

Publication Publication Date Title
DE69132675T2 (de) Parallelfliessband-Befehlsverarbeitungssystem für sehr lange Befehlswörter
DE69534113T2 (de) Kompression der Befehlswörter eines Rechners
DE69129569T2 (de) Maschine mit sehr langem Befehlswort für leistungsfähige Durchführung von Programmen mit bedingten Verzweigungen
DE4222776C2 (de) Parallelverarbeitungseinheit und Verfahren zum Ausführen von Befehlen
DE4206062C2 (de) Pipelineverarbeitung von Instruktionen
DE4217012C2 (de) Mit einer Vielzahl von Befehlsströmen und statischer Verschachtelung arbeitender Mikroprozessor
DE69209888T2 (de) Befehlablaufsteuerung für einen Rechner
DE68929483T2 (de) Datenprozessor mit einer Befehlseinheit, die einen Cachespeicher und einen ROM aufweist.
EP0689694B1 (de) Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren
DE69738188T2 (de) Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor
DE68927218T2 (de) Verfahren und Vorrichtung für Zustandskode in einem Zentralprozessor
DE69736105T2 (de) Hierarchische durchsuchlogik für ungeordnete lade/speicherausführungssteuerung
DE69228360T2 (de) Registerlesekontrolle
DE69325086T2 (de) Verfahren und System für spekulative Befehlsausführung
DE69133571T2 (de) Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen
DE69418146T2 (de) Temporärer Registersatz für einen superpipeline-superskalaren Prozessor
DE4301417A1 (de)
DE3638572C2 (de)
DE69130757T2 (de) Ausführungsvorrichtung für bedingte Verzweigungsbefehle
DE4211245B4 (de) Prozessorsystem in Parallelverarbeitungsbauart und Verfahren zu dessen Steuerung
DE2855106A1 (de) Einrichtung zur durchfuehrung von instruktionsverzweigungen
DE102004013676A1 (de) Schleifenbetrieb mit null Overhead in einem Mikroprozessor mit Anweisungspuffer
DE69835425T2 (de) Verbesserter befehlszuteilungsmechanismus für eine geschützte vliw-architektur
DE3689389T2 (de) Datenverarbeitungsprozessor.
DE19527031A1 (de) Verbesserte Vorrichtung zum Reduzieren von Verzögerungen aufgrund von Verzweigungen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee