DE69127182T2 - Mehrfachbefehlausgabe - Google Patents

Mehrfachbefehlausgabe

Info

Publication number
DE69127182T2
DE69127182T2 DE69127182T DE69127182T DE69127182T2 DE 69127182 T2 DE69127182 T2 DE 69127182T2 DE 69127182 T DE69127182 T DE 69127182T DE 69127182 T DE69127182 T DE 69127182T DE 69127182 T2 DE69127182 T2 DE 69127182T2
Authority
DE
Germany
Prior art keywords
instruction
instructions
execution unit
group
execution
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
DE69127182T
Other languages
English (en)
Other versions
DE69127182D1 (de
Inventor
Saeid Azmoodeh
Peter Malcolm Keith Boffey
Richard Matthew Forsyth
Brian Jeremy Parsons
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.)
STMicroelectronics Ltd Great Britain
Original Assignee
SGS Thomson Microelectronics Ltd
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
Application filed by SGS Thomson Microelectronics Ltd filed Critical SGS Thomson Microelectronics Ltd
Publication of DE69127182D1 publication Critical patent/DE69127182D1/de
Application granted granted Critical
Publication of DE69127182T2 publication Critical patent/DE69127182T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • 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/3824Operand accessing
    • 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/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

  • Die vorliegende Erfindung betritt eine Vorrichtung sowie Verfahren zum simultanen Ausgeben einer Vielzahl von kompatiblen Befehlen in einem Computersystem.
  • In einem Computersystem enthalten Programme eine Reihe von Befehlen, die normalerweise in einem Speicher gehalten werden, und wobei im Betrieb eine Reihe von Befehlen aus diesem Speicher entnommen werden, decodiert werden und einer Ausführungseinheit zugeführt werden. Einige Maschinen geben einen einzelnen Befehl nach jedem Decodierzyklus aus und benötigen die Ausführung dieses Befehls vor der Ausgabe eines neuen Befehls von dem Decodierer. Ein ansteigender Bedarf für Verarbeitungsleistung hat zu einer Ersetzung von einigen Computern mit komplexer Befehlskette (komplex instructions set computers) durch Computer mit reduzierter Befehlskette (reduced instructionssetcomputers) geführt. Die Einfachheit von Befehlen in den Computern mit reduzierter Befehlskette offerieren eine einfachere Hardware und benötigen normalerweise einen Zyklus pro Befehl mit einer höheren Operationsfrequenz. Es sind ebenfalls superskallare Maschinen bekannt, welche mehrfache, unabhängige Befehle pro Zyklus ausgeben. In derartigen Maschinen wird eine Vielzahl von unabhängigen Befehlen simultan von einem Decodierer an eine Ausführungseinheit ausgegeben. Dabei ist allerdings Sorgfalt notwendig, um die simultane Ausgabe von Befehlen zu vermeiden, die nicht kompatibel sind, was beispielsweise auftreten kann, wenn zwei Befehle derart voneinander abhängig sind, daß der eine Daten benötigt, die nach der Ausführung des anderen erzeugt werden, oder wenn beide einen nicht gleichzeitig zulässigen Bedarf an einer Funktionseinheit in der Ausführungseinheit aufweisen.
  • Der vorliegenden Aufgabe liegt daher die Aufgabe zugrunde, ein verbessertes Computersystem sowie ein verbessertes Verfahren zum Betreiben eines Computersystems zu schaffen, in welchen eine Gruppe von kompatiblen Befehlen simultan von einer Decodiereinheit an eine Ausführungseinheit ausgegeben und selektiv Zwischenverbindungen in der Ausführungseinheit zur Verfügung gestellt werden, um die Ausführung von abhängigen Befehlen zu ermöglichen, die simultan ausgegeben werden.
  • Eine weitere, der Erfindung zugrunde liegende Aufgabe besteht darin, eine Reihe von Befehlen in einer Signalleitung dynamisch zu testen und aus der Reihe eine simultan von der Decodiereinheit an die Ausführungseinheit auszugebende Gruppe auszuwählen, wobei die Auswahl derart beschaffen sein soll, daß die Befehle in der Gruppe keine sich gegenseitig ausschließende Bedürfnisse an irgendeiner funktionalen Einheit in der Ausführungseinheit aufweisen.
  • Die vorliegende Erfindung befaßt sich insbesondere mit der Gruppierung von simultanen Ausgaben einer Vielzahl von separaten Befehlen, die ihre separate Identität selbst dann beibehalten, wenn sie miteinander gruppiert sind.
  • Die EP 0 449 661 beschreibt ein Computersystem, in welchem Befehle von Typen von Funktionen klassifiziert werden derart, daß eine Vielzahl von Befehlen simultan an eine Ausführungseinheit ausgegeben werden kann. Allerdings wird die Klassifikation ausgeführt, bevor die Befehle in einen Cache-Speicher derart eingegeben werden, daß die Klassifikation mit den Befehlen in dem Cache-Speicher für eine zukünftige Verwendung der Befehle abgelegt wird und diese solange darin verbleiben.
  • Die vorliegende Erfindung stellt zur Verfügung, ein Verfahren zur Ausführung einer Vielzahl von Befehlen in einem Computersystem mit einem von einer Vielzahl dieser Befehle gebildeten Programm, in welchem jeder Befehl in einer Ausführungseinheit (13), die eine Vielzahl von Funktionseinheiten aufweist, ausgeführt wird, wobei dieses Verfahren umfaßt, daß eine Abfolge von Sequenzen (I) des Abruf ens und Abgebens von Befehlen aus einem Speicher (II), des Decodierens dieser Befehle und (III) des Ausführens dieser Befehle, um dieses Programm ablaufen zu lassen, bewirkt wirkt, dadurch gekennzeichnet, daß dieses Verfahren das dynamische Zuordnen der Befehle für die Ausführung umfaßt, wenn dieses Programm durch das Identifizieren einer Abfolge separater Befehle läuft, daß in dieser Abfolge jeder Befehl in Abhängigkeit der für die Ausführung dieses Befehls benötigten Funktionseinheiten klassifiziert wird, daß die Klassifizierung in der in einer Abfolge angeordneten Sequenz durchgeführt wird, nachdem die Befehle abgerufen und abgegeben worden sind, das Auswählen einer Gruppe von Befehlen aus einer Vielzahl von Befehlen in dieser Reihenfolge, die gemäß ihrer Klassifizierung für eine simultane Abgabe zu der Ausführungseinheit ohne gegenseitig störende Forderungen von irgendeiner Funktionseinheit in der Ausführungseinheit kompatibel ist, das Decodieren dieser Gruppe von Befehlen, während die einzelne Identität von jedem Befehl beibehalten wird, sowie das simultane Überführen dieser Gruppe zur Ausführungseinheit.
  • Dabei kann das Verfahren ermöglichen, daß die Vielzahl der Befehle, die simultan als eine Gruppe zur Ausführungseinheit überführt wurden, zumindest einen Befehl enthalten, der von einem anderen Befehl dieser Gruppe abhängig ist, indem er Daten benötigt, die durch die Ausführung dieses anderen Befehls zur verfügung gestellt werden, wobei diese Gruppe von Befehlen in der Ausführungseinheit ausgeführt wird und diese Funktionseinheiten selektiv miteinander verbunden werden, wodurch diese von der Ausführung des anderen Befehls von einer Funktionseinheit erhaltenen Daten von dieser einen Funktionseinheit ausgegeben und einer anderen Funktionseinheit eingegeben werden, die diesen einen Befehl ausführt.
  • Bevorzugt wird die Vielzahl dieser separaten Befehle in dieser Gruppe simultan von einer oder mehreren Stufen in der Ausführungseinheit ausgeführt.
  • Bevorzugt wird jede Stufe der Operation in der Ausführungseinheit in einem Ausführungszyklus ausgeführt, und es wird diese Ausführungseinheit nach Art einer Förderleitung bzw. nach ein Ablauffolge (pipelined manner) betrieben, wodurch eine neue Gruppe kompatibler Befehle bei jedem Ausführungszyklus der Ausführungseinheit eingegeben wird.
  • Bevorzugt enthält jede Stufe dieser Ausführungseinheit eine oder mehrere funktionale Einheiten zur Ausführung eines Befehls eines ausgewählten Typs, wobei jeder Befehl in dieser Abfolge von Befehlen klassifiziert wird, um seinen Typ anzuzeigen, und wobei dieses Austesten dieser Abfolge von Befehlen das Überprüfen der Klassifikation von jedem Befehl umfaßt.
  • Die vorliegende Erfindung stellt des weiteren zur Verfügung eine Computeranlage mit einem Mikroprozessor und einem Speicher zum Halten einer Sequenz von auszuführenden Befehlen, mit einer mit Leitung versehenen Schaltung , die (I) eine Befehlsabrufsschaltung zum Abrufen von Befehlen aus dem Speicher, (II) eine Befehlscodierschaltung, die angeschlossen ist, um von dieser Befehlsabrufschaltung Befehle zu empfangen, und (III) eine Befehls-Ausführungseinheit aufweist, die eine Vielzahl von Funktionseinheiten enthält, die jeweils betätigbar sind, um zumindest einen Teil eines Befehls auszuführen, gekennzeichnet durch das Vorhandensein einer Klassifizierungsschaltung in der Decodierschaltung zum Klassifizieren eines jeden Befehls nach dem Empfang durch die Decodierschaltung in Abhängigkeit von diesen Funktionseinheiten, die für die Ausführung dieses Befehls benötigt werden, durch das Testen der Klassifikation der Reihenfolge von Befehlen und durch das Auswählen einer Gruppe, die gemäß ihrer Klassifikation für eine simultane Abgabe zur Ausführungseinheit geeignet ist, ohne mit den Forderungen irgendeiner Funktionseinheit in der Ausführungseinheit in Konflikt zu geraten, und durch eine Befehlsabgabeschaltung, die an die Klassifizierungsschaltung angeschlossen ist, um eine Gruppe separater, kompatibler Befehle simultan zur Ausführungseinheit durchzuleiten.
  • Es ist zu erkennen, daß Ausführungsformen gemäß der vorliegenden Erfindung den Befehlsdurchgang pro Zyklus der Operation der Decodiereinheit erhöhen und durch Aneinanderreihen die gesamte Rate des Befehlsdurchgangs durch den Decodierer und die Ausführungseinheit erhöht werden kann. Diese Befehlsdurchgangsrate wird des weiteren erhöht durch Schaffen einer Vielzahl von funktionaler Einheiten parallel zueinander in einer oder mehreren Stufen der Ausführungseinheiten derart, daß mehr als ein Befehl simultan in einer einzelnen Stufe der Ausführungseinheit ausgeführt werden kann.
  • Es werden nun einige Ausführungsformen der Erfindung anhand von Beispielen sowie unter Bezugnahme auf die beigefügten Zeichnungen beschrieben werden, in denen:
  • Fig. 1 ein Blockdiagramm eines Befehlsarbeitungssystems ist zur Anwendung in einem Verfahren gemäß der Erfindung;
  • Fig. 2 und 3 Diagramme sind zur Darstellung eines Satzes von Regeln, nach denen die Befehle für die Übertragung zu einer Befehls-Ausführungseinheit gruppiert werden;
  • Fig. 4A bis 4F Darstellungen sind von Beispielen der Anwendung der in dem jeweiligen Diagramm der Fig. 2 und 3 angegebenen Regeln;
  • Fig. 5 ein Blockdiagramm einer Befehls-Decodiereinheit ist zum Gruppieren und Decodieren von Befehlen zur Zuführung in eine Signalleitung bzw. Ablaufanordnung;
  • Fig. 6 ein detailliertes Diagramm der Gruppierungsschaltung in der Decodiereinheit von Fig. 5 ist;
  • Fig. 7 ein detaillierteres Diagramm einer Gruppierungslogikeinheit ist, wie sie in Fig. 6 gezeigt ist; und
  • Fig. 8 ein Diagramm einer verbesserten Version der in Fig. 7 gezeigten Befehls-Decodiereinheit ist.
  • Fig. 9 ein Blockdiagramm einer einfachen Signalleitung ist;
  • Fig. 10 ein Blockdiagramm einer Signalleitung ist, in welcher eine Ausführungseinheit eine Vielzahl von Ausführungsstufen aufweist;
  • Fig. 11 ein Blockdiagramm ist zur Darstellung der verschiedenen Stufen der Ausführung in der Signalleitung für einen exemplarischen Satz von Befehlen; und
  • Fig. 12 ein Blockdiagramm einer verbesserten Version einer Signalleitung ist.
  • Die Fig. 1 zeigt in Form eines Blockdiagramms ein Befehlsbehandlungssystem, daß das Verfahren gemäß der Erfindung anwenden kann. Dieses System umfaßt eine Befehlsabrufeinheit bzw. Instruktionsabrufeinheit 10, eine Befehls-Decodiereinheit bzw. Instruktionsdekodiereinheit 12 sowie eine Befehls-Ausführungseinheit bzw. Instruktions-Ausführungseinheit 13.
  • Dieses System ist dazu vorgesehen, in einem Mikroprozessor verwandt zu werden, der einen Prozessor sowie einen Speicher zur Ablegung von Daten und von einem Programm enthält, das von dem Prozessor auszuführen ist. Das Programm nimmt die Form einer Reihe von Befehlen ein, die aus einer Befehlsreihe ausgewählt sind, was später diskutiert wird.
  • Die Instruktionsabrufeinheit 10 ruft eine Sequenz von Befehlen in Abhängigkeit von dem auszuführenden Programm ab und leitet eine Vielzahl von Befehlen sequentiell in jedem Decodierzyklus der Instruktionsdecodiereinheit 12 zu. Bei der folgenden Beschreibung wird angenommen, daß N Befehle pro Decodierzyklus der Instruktionsdecodiereinheit zugeleitet werden. Die Instruktionsdecodiereinheit decodiert nicht nur die Befehle, sondern gruppiert diese, um eine ausführbare Gruppe zu bilden, die eine Gruppe von kompatiblen Befehlen ist, die für die Ausführung simultan an eine Ausführungseinheit abgegeben werden kann. Die kompatible Gruppe kann entweder alle oder lediglich einige der N Befehle enthalten, die von der Decodiereinheit pro Decodierzyklus abgerufen wird, was im folgenden klarer dargestellt ist.
  • Die Ausführungseinheit enthält eine Vielzahl von funktionalen Einheiten, die jeweils so angeordnet sind, um eine Funktion in einem Ausführungszyklus zu tragen, wobei die Funktion von dem Befehl festgelegt wird. Um die Ausführung einer Gruppe von Befehlen, die simultan ausgegeben wurden, zu vervollständigen, kann eine Vielzahl von Ausführungszyklen notwendig sein. Es ist ein wichtiges Merkmal dieser Erfindung, daß Befehle, die miteinander gruppiert sind, ihre separate Identität in der Reihe der Befehle beibehalten, die der Ausführungseinheit abgegeben wurde, und zwar in einer ausführbaren Gruppe.
  • In der folgenden Beschreibung wird bezug genommen auf die Mikrocomputerarchitektur, die z. B. in dem US-Patent mit der Nr. 4,704,678 beschrieben ist. In dieser Architektur kann ein Mikrocomputerprozessor jeden einer Vielzahl von Prozessen ausführen. Für die Ausführung eines jeden Prozesses halten A- und B-Register Daten, Operanden und Adressen in geeigneter Weise und ein Indexregister (WPTR-Register) hält diese Adressen in einem Speicherplatz, der den Basiswert des Arbeitsraumspeichers für den derzeit laufenden Prozeß wiedergibt. Eine derartige Architektur ist in Einzelheiten beschrieben in dem vorbenannten US-Patent, welches ebenfalls einen Satz von Befehlen definiert, der decodiert und von einem derartigen Mikrocomputer verwandt werden kann. Um das Lesen der vorliegenden Erfindung zu unterstützen, werden die in der folgenden Beschreibung verwandten Befehle unten mit einer Erläuterung ihrer Aussagen wiederholt. Es ist zu bemerken, daß die Erfindung nicht nur auf andere Befehle in dem Satz der Befehle, der in dem oben genannten Patent definiert ist, angewandt werden können, sondern auch an andere Befehlssatz-Architekturen. In der folgenden Beschreibung repräsentiert n eine ganze Zahl, die von einigen Befehlen als ihren Operanden zugeführt werden. Der Begriff Operand wird hierin verwandt, um die numerischen Werte anzugeben, die verwandt werden, wenn ein Befehl auszuführen ist, und sie können entweder mit den Befehl selbst zugeführt oder von einer früheren Ausführung eines anderen Befehls abgezweigt werden.
  • DEFINITION DES BEFEHLSSATZES
  • Ldl n (1) Lade n in das A-Register
  • (2) frühere Inhalte des A-Registers sind in das B- Register überführt
  • Ldw n (1) Forme Adresse Wptr + n
  • (2) Schreibe den Inhalt von dem Speicherplatz in das A-Register
  • (3) frühere Inhalte des A-Registers sind in das B- Register überführt
  • Ldpw n (1) Forme den Wert Wptr + n
  • (2) Lade den Wert in das A-Register
  • (3) frühere Inhalte des A-Registers sind in das B- Register überführt
  • Ldv n (1) Forme die Adresse A + n, wobei A der Inhalt des A-Registers ist
  • (2) Schreibe den Inhalt von diesem Speicherplatz von A in das A-Register
  • Adl n (1) Forme A + n, wobei A der Inhalt des A-Registers ist
  • (2) Lade das Ergebnis in das A-Register
  • Add (1) Bilde A + B, wobei A und B die Inhalte des A- bzw. des B-Registers sind
  • (2) Lade das Ergebnis in das A-Register
  • Stw n (1) Forme die Adresse Wptr + n
  • (2) Schreibe die Inhalte des A-Registers in diese Adresse
  • (3) Frühere Inhalte des B-Registers sind in das A- Register überführt
  • Stv n (1) Forme die Adresse A + n, wobei A der Inhalt des A-Registers ist
  • (2) Schreibe die Inhalte des B-Registers in diese Adresse
  • J n (1) Forme den Wert IPTR + n
  • (2) Lade den Wert in das IPTR-Register
  • Jnz n (1) Forme den Wert IPTR + n
  • (2) Falls A nicht Null ist, lade den Wert in das IPTR-Register
  • Wie in dem US-Patent 4,704,678, beschrieben, hält das IPTR- Register einen Indexzeiger auf die nächste Zeile des Programms, das auszuführen ist.
  • Wie unter erneuter Bezugnahme auf die Fig. 1 zu sehen, umfaßt die Ausführungseinheit 13 eine Vielzahl funktionaler Einheiten, die es der Ausführungseinheit ermöglichen, eine erste Quelle von Operanden sowie eine zweite Quelle von Operanden zu erzeugen, arithmetische oder logische Operationen an diesen Operanden (hierin abgekürzt als ALUOp, wobei Befehle wie z. B. Add, wie oben definiert, enthalten sind) auszuführen und das Ergebnis in den Speicher einzuschreiben.
  • Die funktionalen Einheiten können gemäß ihrer Möglichkeiten wie folgt klassifiziert werden:
  • KLASSIFIKATION DER FUNKTIONALEN EINHEITEN
  • Klassifikation (i) erzeugt Adressen in dem Arbeitsraum- Speicher (WPTR + η) und/oder liest aus dem Arbeitsraum-Speicher aus und führt literale Befehle durch
  • Klassifikation (ii) erzeugt Adressen in dem Vektor- Speicher (A + n) und/oder liest aus diesem Vektor-Speicher aus
  • Klassifikation (iii) führt arithmetische Operationen an den Daten aus, wenn sie an ihren Eingängen A und B verfügbar sind
  • Klassifikation (iv) schreibt die Inhalte des Registers in den Speicher, entweder Vektoren oder Arbeitsraum in Abhängigkeit von einer vorher erzeugten Adresse.
  • Klassifikation (v) führt JUMP- bzw. Sprungbefehle aus
  • Der Begriff Verktor-Speicher ist definiert in dem genannten US-Patent mit der Nr. 4,704,678 und, wie darin erläutert, bezieht sich auf einen Speicher, der adressiert wird unter Verwendung von Informationen, die in dem A-Register gehalten werden, um einen Basisort zu definieren, um dieses von dem Arbeitsraum-Speicher zu unterscheiden, der adressiert wird von einem versetzten Wert von einem vorher abgespeicherten Basisort, der in einem WPTR-Register gehalten wird.
  • Die Ausführungseinheit der beschriebenen Ausführungsform weist drei funktionale Einheiten 14a, 14b, 14c der Klassifikation (i) auf, die jeweils in dem Arbeitsraum-Speicher eine Adresse erzeugen können und/oder aus diesem Arbeitsraum-Speicher auslesen oder literale Befehle ausführen können. Die Ausführungseinheit des weiteren drei funktionale Einheiten 16a, 16b, 16c der Klassifikation (ii), wobei zwei von diesen in dem Vektor- Speicher (A + n) Adressen erzeugen können und/oder aus diesem Vektor-Speicher auslesen können, während die eine Einheit 16c lediglich Adressen in dem Vektor-Speicher erzeugen, aber nicht aus dem Vektor-Speicher auslesen kann. Ferner ist eine Funktionseinheit 18 der Klassifikation (iii) zur Ausführung arithmetischer oder logischer (ALU) Operationen vorhanden, die hier abgekürzt wird als ARITMETIC OPERATIONS, sowie eine funktionale Einheit 20 der Klassifikation (iv) zum Implementieren der Speicher-Schreiboperationen. Schließlich sind zwei funktionale Einheiten 21, 23, der Klassifikation (v) vorhanden zur Ausführung bedingter und nichtbedingter JUMP-Befehle.
  • Die funktionalen Einheiten 14a, 14b, 14c, der Klassifikation (i) sind miteinander verbunden, um entsprechend Daten an die funktionalen Einheiten 16a, 16b, 16c der Klassifikation (ii) zuzuführen. Die funktionalen Einheiten 16a, 16b der Klassifikation (ii) sind angeschlossen, um ihre Daten der funktionalen Einheit 18 der Klassifikation (iii) zuzuführen, welche selbst wiederum angeschlossen ist, um Daten an die funktionale Einheit 20 der Klassifikation (iv) zuzuführen. Die Einheit 20 ist ebenfalls angeschlossen, um von der funktionalen Einheit 16c der Klassifikation (ii) Daten zu erhalten. Die Einheit 23 der Klassifikation (v) zur Ausführung nichtbedingter Sprünge ist angeschlossen, um ihre Daten der Instruktionsabrufeinheit 10 in Form von einer nichtbedingten Sprung-Adresse zuzuführen, welche die nächste Zeile des Programms, das auszuführen ist, identifiziert, und somit den Befehl, um die nächste Reihe zu beginnen, um diese der Instruktions-Decodiereinheit 12 zuzusenden. Die Einheit 21 der Klassifikation (v) zur Ausführung bedingter Sprünge ist in ähnlicher Weise angeschlossen, um ihre Daten der Instruktions-Abrufeinheit 10 zuzuführen. Die Einheit 21 ist ebenfalls angeschlossen, um Daten von der funktionalen Einheit 18 derart zu empfangen, daß ein Sprungbefehl ausgeführt wird, falls das A-Register einen Wert enthält, der ein anderer als Null ist, nach der Ausführung des ALU-Befehls von der funktionalen Einheit 18.
  • Um jeden Befehl ausführen zu können, können eine oder mehrere funktionale Einheiten von der Ausführungseinheit benötigt werden. Z. B. kann der Befehl Ldw n vollständig in der funktionalen Einheit der Klassifikation (i) ausgeführt werden, die nicht nur den Speicheradressenteil WPTR + n erzeugen kann, sondern auch eine Speicherausleseoperation durchführen kann. Allerdings benötigt ein Befehl, wie z. B. Stw n, die Erzeugung einer Adresse eines Ortes in dem Arbeitsraum-Speicher, was ausgeführt werden kann in einer funktionalen Einheit der Klassifikation (i), sowie eine Speicher-Schreib-Operation, die ausgeführt werden kann in der funktionalen Einheit der Klassifikation (iv). Dieses System hat Zugriff auf eine Vielzahl von Speicher-Auslese-Öffnungen, es ist aber nur eine Schreib- Öffnung vorhanden. Es ist ebenfalls vorgesehen, daß der Zugriff auf den Speicher für Leseoperationen der funktionalen Einheiten der Klassifikation (i) und der Klassifikation (ii) möglich ist und ein Zugriff auf den Speicher für eine Schreiboperation durch die funktionale Einheit der Klassifikation (iv) kann ausgeführt werden, und zwar ohne Kollision zwischen den Speicheröffnungen.
  • Die funktionalen Einheiten sind Einheiten sind selektiv derart miteinander verbindbar, daß für jede ausführbare Gruppe von kompatiblen Befehlen, die zu der Ausführungseinheit 13 ausgegeben werden, diejenigen funktionalen Einheiten, die für die Ausführung der Befehle benötigt werden, derart aktiviert und miteinander verbunden werden, daß die durch die Ausführung von einem Befehl erzeugten Daten für die Ausführung von einem anderen Befehl innerhalb der Gruppe verwandt werden können.
  • Aus dem oben gesagten wird verständlich sein, daß innerhalb eines jeden Decodierzyklus von dem Befehlsarbeitssystem einige Ausführungstaktzyklen derart benötigt werden, daß innerhalb eines einzelnen Decodierzyklus die Ausführungseinheit die Ausführung eines Befehls zulassen kann, der Daten benötigt, die von einem anderen Befehl der gleichen Gruppe erzeugt werden.
  • Die die simultane Ausgabe von kompatiblen Befehlen an die Ausführungseinheit als eine ausführbare Gruppe bestimmenden Regeln werden nun unter Bezugnahme auf die Fig. 2 und 3 beschrieben. Es zu erkennen, daß diese Regeln sich auf die Ausführungseinheit 13 beziehen, wie sie oben unter Bezugnahme auf die Fig. 1 beschrieben worden ist. Für eine Ausführungseinheit mit einer unterschiedlichen Anordnung von funktionalen Einheiten wurden unterschiedliche Gruppierungsregeln Anwendung finden.
  • In der Fig. 2 repräsentieren die Blasen bzw. Kreise mit Befehlsnamen Befehle, und die Verbindungslinien mit Pfeilen stellen dar, welcher Befehl nach jedem Kreis folgen kann.
  • Die Erzeugung von jedem Quellenoperanden kann auf zwei Arten durchgeführt werden, die erste Art erzeugt einen Literal-Wert, die Inhalte von einer Arbeitsraum-Speicheradresse oder einer Speicheradresse, die von einer Abweichung von der in dem WPTR- Register gespeicherten Adresse bezeichnet wird. Die diesen Teil füllenden Befehle sind Ldl n, Adl n, Ldpw n, Ldw n. Der zweite Teil verwendet das Auslesen aus einem Vector-Speicher, der von dem Befehl Ldv n verwirklicht werden kann. Falls der benötigte Quelenoperand in dem Arbeitsraum-Speicher abgelegt ist oder das Ergebnis der Ausführung von einem Literal-Befehl, wird selbstverständlich der zweite Teil nicht benötigt. Diese Analyse ist in den zwei äußerst linken Abschnitten von Figur 2 dargestellt und als QUELLENOPERAND EINS und QUELLENOPERAND ZWEI bezeichnet. Dann wird die arithmetische Operation ausgeführt, die von den Adl- oder ALUOp-Befehle verwirklicht werden kann, was als ARITHMETIKOPERATION-SEKTION dargestellt ist. Abschließend wird eine Speicheradresse zum ablegen des Ergebnisses erzeugt, und das Ergebnis wird in den Speicher eingeschrieben, was erzielt werden kann durch die Befehle Ldl n, Ldpw n oder Ldw n in Kombination mit Stv n oder dem Befehl Stw n selbst, was in der Sektion BESTIMMUNGSOPERAND UND SPEICHER gezeigt ist.
  • Die Kreise 24 (Ldw), 26 (Ldl), 28 (Ldpw) repräsentieren die Befehle, die die Erzeugung des ersten Operanden in dem ersten Fall zulassen. Der Kreis 30 (Ldv) repräsentiert die Leseoperation aus dem Vector-Speicher. Der Pfeil 32 zeigt an, daß der Kreis 30 bei bestimmten Umständen umgangen werden kann, z. B. dann, wenn der benötigte Operand sich in dem Arbeitsraum- Speicher befindet oder von der Ausführung eines Literal- Befehls erzeugt worden ist. Des weiteren zeigt der Pfeil 68 an, daß der Decodierer direkt zu dem Kreis 30 fortschreiten kann. In der nächsten angrenzenden Sektion QUELLENOPERAND ZWEI entsprechen die Kreis 34, 36, 38, 40 den Kreisen 24, 26, 28 und 30 und der Pfeil 42 entspricht dem Pfeil 32. Der Pfeil 44 zeigt den Fall an, bei dem kein zweiter Operand erzeugt werden muß. Es ist kein dem Pfeil 68 entsprechender Pfeil vorhanden, um die Kreise 34, 36, 38 zu umgehen, weil diese Sektion sich auf die Erzeugung des zweiten Operanden bezieht, die immer mit einem Wert beginnen muß, der nicht von den existierenden Inhalten des A-Registers abhängig ist. Der Kreis 46 (Adl) stellt einen weiteren Befehl dar, um die Sektion QUELLENOPERAND ZWEI aufzufüllen. Es ist unzweckmäßig, in diesen Sektionen eine "Schreibe-in-Speicher"-Operation zu haben, da bis zu diesem Zeitpunkt nichts abspeicherbares erzeugt worden ist; daher taucht der Befehl Stv nicht in den Sektionen QUELLENOPERAND EINS und QUELLENOPERAND ZWEI auf. Die nächste angrenzende Sektion ARITHMETIKOPERATION stellt den Befehl dar, der von dem Kreis 48 (ALUOp) zu verwenden ist. Falls in der Befehlsreihe kein Arithmetik-Befehl vorhanden ist, kann diese Sektion umgangen werden, was mit dem Pfeil 50 dargestellt ist. Es ist zu bemerken, daß der Kreis 46 (Adl) sich über die Sektion QUELLENOPERAND ZWEI und die Sektion ARITHMETIK-OPERATION erstreckt, weil der Befehl Adl eine arithmetische Operation enthält.
  • In der nächsten Sektion BESTIMMUNGS-OPERAND UND SPEICHER repräsentieren die Kreise 52 (Ldw), 54 (Ldl) und 56 (Ldpw) die Erzeugung von Daten, die als eine Basis verwandt werden können, um eine Speicheradresse zu bilden. Dies kann lediglich in Verbindung mit einer Abspeicherung zu dem Vector-Befehl Stv ausgeführt werden, was mit dem Kreis 58 repräsentiert wird, oder vollständig umgangen werden durch eine Abspeicherung in dem Arbeitsraum-Befehl Stw in dem Kreis 60. Der Pfeil 74 zeigt an, daß diese Sektion umgangen werden kann. Es ist zu sehen, daß diese Sektion es sicherstellt, daß die Erzeugung der Bestimmungsadressen lediglich dann erlaubt ist, falls es abhängig ist von Stw (Kreis 60) oder ein Teil einer Schreiboperation ist, die mit einem gültigen Stv-Befehl (Kreis 58) endet. Dies liegt darin begründet, weil die Ausführungseinheit 13 von Fig. 1 als dritten Operanden nicht Daten abarbeiten kann, die nicht in einem Speicher als eine Adresse eingeschrieben sind, die erzeugt wird, durch einen Befehl innerhalb der kompatiblen Gruppe, die von der Ausführungseinheit ausgegeben wurde. Schließlich kann die äußerst rechte Sektion PROGRAMMSPRÜNGE in Fig. 4 aufgefüllt werden durch einen J-Befehl, dem Kreis 62, einen Jnz-Befehl, dem Kreis 64, oder sie kann umgangen werden, was mit dem Pfeil 66 dargestellt ist. In Fig. 2 stellt der Pfeil 70 dar, daß das Gruppieren direkt zu dem Kreis 58 voranschreiten kann und immer noch das System verwendet. Der Kreis 72 zeigt einen anderen Befehl an, d. h. Befehle, die nicht mit anderen Befehlen gruppiert werden können, um eine kompatible Gruppe zu bilden.
  • Im Diagramm von Fig. 2 ist jeder Kreis dargestellt, als könne er von einem individuellen Befehl aufgefüllt werden. Tatsächlich werden aber, was aus der Beschreibung klar wird, die bezüglich des verwendeten Schaltkreises, um das Verfahren der Gruppierung von Befehlen anzuwenden, folgt, Befehle überprüft und gruppiert werden unter Verwendung von Klassifikationscode, welche die Klassifikationen der funktionalen Einheiten widerspiegeln, die benötigt werden, um die Befehle auszuführen und somit die Kreise in dem Diagramm von Fig. 2, die von diesen Befehlen aufgefüllt werden können. Die Klassifikationscode werden aus der Tabelle IV entnommen, welche darstellt, wie der Befehlssatz klassifiziert ist, auf den hierin Bezug genommen wird.
  • Wie aus der Tabelle IV zu sehen, benötigen die Befehle Ldl, Ldw und Ldpw Literal- oder Arbeitsraum-Operationen und teilen sich einen gemeinsamen Klassifikationscode (i). Die Kreise 24, 26, 28 in der Sektion QUELLENOPERAND EINS von Figur 2, die Kreise 34, 36, 38 in der Sektion QUELLENOPERAND ZWEI und die Kreise 52, 54, 56 in der Sektion BESTIMMUNGSOPERAND UND SPEICHER können als Klassifikationscode (i) - Kreise angesehen werden. Der Befehl Ldv hat einen Klassifikationscode(ii), so daß die Kreise 30, 40 als Klassifikationscode (ii) - Kreise angesehen werden können. Der Befehl ALUOp hat die Klassifikation (iii), so daß der Kreis 48 in der Sektion ARITHMETIKOPERATION als ein Klassifikationcode (iii) - Kreis angesehen werden kann. Der Befehl Stv hat die Klassifikationscode (ii), (iv), was der Kreis 58 in der Sektion BESTIMMNGSOPERANT UND SPEICHER darstellt. Der Befehl Adl hat die Klassifikationscode (i), (iii), so daß dieser verwandt werden kann, um eine Kombination von Kreisen, die die Klassifikationscode (i), (ii) und (iii) aufweisen, zu umgehen, was von dem Kreis 46 angezeigt wird. Der Befehl Stw hat den Klassifikationscode (i), (iv), so daß dieser verwandt werden kann, um eine Kombination von Kreisen, die die Klassifikationscode (i), (ii) und (iv) aufweisen, zu umgehen. Die Befehle J und Jnz haben den Klassifikationscode (v), so daß die Kreise 62, 64 als Klassifikationscode (v) - Kreise angesehen werden können.
  • Die Fig. 3 zeigt eine Version der Fig. 2, in welcher individuelle Befehle von den Klassifikationen (i) bis (v) ersetzt worden sind. Es ist leicht ersichtlich, daß Informationen bezüglich des Klassifikationscodes von einem Befehl sowie der zugeordneten Position zu dem einen, der in der Befehlsfolge diesen vorangegangen ist, den Kreis für den nächsten Befehl festlegt.
  • Es wird nun die Verwendung der Regeln, die in dem Diagramm von Fig. 2 angegeben wurden, nun unter Bezugnahme auf einige in den Fig. 4A bis 4F dargestellte Beispiele beschrieben werden. Für jede Befehlsreihe, die von der Instruktionsdecodiereinheit 12 empfangen wurde, können Gruppen von kompatiblen Befehlen, die für eine Ausführung in decodierter Form an die Ausführungseinheit 13 simultan ausgegeben werden können, ausgebildet werden mittels Durchlaufen des Diagramms von Fig. 2 von links nach rechts. Die Befehle werden in Reihe überprüft, klassifiziert und mit einem Gruppencode versehen, der den geeigneten Kreis repräsentiert. Wenn ein Kreis aufgefüllt worden ist, muß der nächste Befehl in einem seriell vor dem zuletzt aufgefüllten Kreis liegenden Kreis plaziert werden. Wenn das Ende des Diagramms erreicht worden ist, oder wenn eine Position in der Befehlsabfolge erreicht worden ist, in der keine weiteren Befehle mehr mit dem verbliebenen Kreisen übereinstimmen, umfassen alle Befehle, die in Kreise angeordnet worden sind, eine kompatible Gruppe, vorausgesetzt, daß eine mit einem Pfeil bezeichnete Route vorhanden ist oder daß ein vollendeter Kreis vorhanden ist, dem von dem Beginn bis zu dem Ende des Diagramms von Fig. 2 gefolgt werden kann. In den folgenden Beispielen wird diese Route mit einer dicken schwarzen Linie bezeichnet. Um die Ausnutzung der gesamten Möglichkeiten der Ausführungseinheit zu maximieren, besteht das Ziel darin, für jede kompatible Gruppe soviel wie möglich Kreise aufzufüllen.
  • Das Auffüllen der Kreise kann Vorgriff-Informationen der Befehlsabfolge benötigen. D. h. Informationen bezüglich sowohl des folgenden als auch des vorangegangenen Befehls können benötigt werden, um den Befehl korrekt zu plazieren. Falls z. B. die Befehlsabfolge beginnt mit "Ldw n, Ldv m, ..." wird diese die Kreise 24, 30 der Sektion QUELLENOPERAND EINS auffüllen. Falls allerdings die Befehlsabfolge beginnt mit "Ldw n, Stv m ...", wird diese die Kreise 52, 58 der Sektion BESTIMMUNGSOPERAND UND SPEICHER auffüllen. Demzufolge wird die Position des Ldw n-Befehls festgelegt von den nachfolgenden Befehlen.
  • In dem Beispiel von Fig. 4A ist die Befehlsfolge Ldw n, Ldv m, Ldw p, Ldv q, Add, Ldw r, Stv s. Der erste Befehl Ldw füllt den Kreis 24, der zweite Befehl Ldv füllt den Kreis 30, der dritte Befehl Ldw füllt den Kreis 34, der nächste Befehl Ldv füllt den Kreis 40, der Add-Befehl füllt den Kreis 48, der Ldw-Befehl füllt den Kreis 52 und der Stv-Befehl füllt den Kreis 58. Die Ausführungseinheit kann diese Abfolge von Befehlen so ausführen, wie sie durch die einzelne, nicht verzweigte Route dargestellt ist, die in der Fig. 4A mit einem dicken Strich gezeigt ist und durch den Kreis 24, den Kreis 30, den Kreis 34, den Kreis 40, den Kreis 48, den Kreis 52 und den Kreis 58 geht.
  • In dem Beispiel von Fig. 48 ist die Befehlsabfolge Add, Ldw n, Stv m. Der erste Befehl, den der Decodierer überprüft, ist der Befehl Add und der erstmögliche Kreis, in welchen dieser plaziert werden kann, ist der Kreis 48. Die Sektionen QUELLENOPERAND EINS und QUELLENOPERAND ZWEI von Fig. 48 werden also von den Pfeilen 68, 32 und 44 umgangen. Der nächste Befehl ist Ldw, der in den Kreis 52 plaziert wird, und der Befehl Stv wird in den Kreis 58 angeordnet. Der Befehl Ldw konnte nicht in den Kreis 24 oder 34 angeordnet werden, da diese Kreise bereits umgangen worden waren, und es besteht eine Forderung der Regeln für das Gruppieren von Befehlen daraus, daß ein Befehl in einen seriell vorwärts des zuletzt aufgefüllten Kreises liegenden Kreis zu plazieren ist.
  • Die Beispiele, die unter Bezugnahme auf die Fig. 4C bis 4F beschrieben werden, repräsentieren eine Lösung für ein spezifisches Programmierungsproblem. D. h., für eine FOR-Loop in einer höheren Programmiersprache für das Addieren von N ganzen Zahlen miteinander und zum Abspeichern dieser Summe kann dieses ausgedrückt werden in OCCAM (eine höhere Programmiersprache, die in der Broschüre mit dem Titel "Programming Manual - OCCAM" angegeben ist und von der INMOS limited im Jahre 1983 im Vereinigten Königreich publiziert und verteilt wurde) mittels der folgenden zwei Zeilen eines Programms ausgedrückt werden
  • SEQ i = FOR N
  • Sum := Sum + y[i]
  • wobei N und Sum ganze Zahlen sind und y eine Reihe von N ganzen Zahlen ist. Sum und N werden vor dieser Schleife initialisiert. Diese zwei Zeilen des höheren Codes können übersetzt werden in die folgende niedere Befehlsabfolge, die als Befehlsabfolge 1 bezeichnet wird.
  • Wie weiter unten detaillierter erläutert, kann diese Abfolge von Befehlen in kompatible Gruppen zusammengesetzt werden, wie sie unten beschrieben sind.
  • Erste Iteration: (3 Gruppen)
  • Alle dazwischenliegenden Iterationen: (3 Gruppen)
  • Letzte Uteration, d. h., wenn die Schleife endet: (4 Gruppen)
  • Dies alles kann von der Ausführungseinheit 13 von Fig. 1 ausgeführt werden.
  • Bei der folgenden Erläuterung der Gruppierung der Befehlsabfolge 1 wird von der Fig. 2 Gebrauch gemacht, die individuelle Befehls-Kreise darstellt. Wie oben bereits ausgeführt, werden in der hierin beschriebenen Schaltungsanordnung Befehle klassifiziert und dann gruppiert, aber das Folgende dient dazu, die Verwendung der Gruppierungsregeln prinzipiell darzustellen.
  • Wie in der Fig. 4C gezeigt, ist der erste zu überprüfende Befehl Ldw sum, und dieser wird daher in dem Kreis 24 angeordnet. Der nächste zu überprüfende Befehl ist Ldw y, und dieser wird in dem Kreis 34 angeordnet, und es folgt der Befehl Ldv 0, der in dem Kreis 40 abgelegt wird. Der nächste Befehl Add wird in dem Kreis 48 angeordnet. Der nächste Befehl ist Ldw y, der nicht in einen seriell vor dem Kreis 48 liegenden Kreis plaziert werden kann. Das Gruppieren endet also und die Befehlsabfolge Ldw sum, Ldw y, Ldv 0, Add wird als eine kompatible Gruppe zusammengesetzt.
  • Wie aus der Fig. 4D entnehmbar, beginnt das Gruppieren bei dem Befehl Ldw y, der in dem Kreis 24 plaziert ist. Der Befehl Adl 1 ist in dem Kreis 46 plaziert und der Befehl Stw y in dem Kreis 60 plaziert. Der nächste Befehl Ldw y kann nicht in einen seriell vor dem Kreis 60 liegenden Kreis plaziert werden, so daß die Gruppierung endet. Die damit festgelegte kompatible Gruppe ist Ldw y, Adl 1, Stw y.
  • Wie in der Fig. 4E gezeigt, beginnt das Gruppieren bei dem Befehl Ldw y, der in den Kreis 24 plaziert ist. Der folgende Befehl Adl (-maxy) ist in dem Kreis 46 plaziert und der Befehl Jnz loop: ist in dem Kreis 64 angeordnet. Der nächste Befehl Stw sum kann nicht in einem seriell vor dem Kreis 64 liegenden Kreis angeordnet werden, so daß das Gruppieren endet. Die dadurch festgelegte kompatible Gruppe ist Ldw y, Adl (-maxy) und Jnz loop:.
  • Wie sich aus der Fig. 4F ergibt, verbleibt lediglich ein Befehl Stw sum, der in dem Kreis 60 abgelegt wird.
  • Es wird nun auf die Fig. 5 bis 8 Bezug genommen, um die Schaltungsanordnung für das Gruppieren von Befehlen zu beschreiben, welche eine Abfolge von Befehlen empfangen und daraus ausführbare Gruppen kompatibler Befehle in Abhängigkeit von den oben bereits diskutieren Regeln definieren kann. Wie in Fig. 5 gezeigt, enthält die Schaltungsanordnung eine Schaltung 100 für das Wiederauffüllen des Eingangs-Registers, welcher eine Abfolge von Befehlen zugeführt wird, was mit dem Pfeil 102 dargestellt ist. Der Pfeil 103 bezeichnet einen nicht sequentiellen Ausführungs-Indikator, der in Abhängigkeit von der Ausführung eines Sprungbefehls der Decodiereinheit zugeführt wird. Eine Vielzahl von Befehlseingabe-Registern 104a, 104b ... 104N empfängt entsprechend eine von einer Gruppe von N Befehlen bei jedem Zyklus. Jedes Befehlseingang-Register 104a, 104b ... 104N weist einen entsprechend zugeordneten voll/leer- Kennzeichner (full/empty flag) 106a, 106b ... 106N auf. Dieser Kennzeichner wird auf FULL (voll) gesetzt, sobald jedes Register mit einem gültigen Befehl von der Schaltung 100 für die Wiederauffüllung des Eingangs-Registers aufgefüllt worden ist. Falls weniger als N Befehle (z. B. K) für die Wiederbefüllungs-Schaltung 100 verfügbar sind, werden diese an die entsprechenden Register 104a .... bis 104K gesandt und die voll/leer-Kennzeichner der verbleibenden Register werden auf LEER (EMPTY) gesetzt.
  • Um es abzukürzen, werden in der folgenden Erläuterung die Eingangs-Register mit ihren FULL/EMPTY-Kennzeichnern, die entweder auf FULL oder auf EMPTY gesetzt sind, als FULL oder EMPTY- Eingangs-Register bezeichnet.
  • Wie in Fig. 5 gezeigt, umfaßt die Schaltungsanordnung des weiteren eine Vielzahl von Befehls-Klassifizierern 108a, 108b ... 108N, die entsprechend den Befehl-Eingangsregistern 104a, 104b ... 104N zugeordnet sind. Es ist ebenfalls eine Vielzahl von Decodierern 110a, 110b ... 110n vorhanden, die entsprechend den Befehleingangs-Registern 104a, 104b ... 104N zugeordnet sind. Die im folgenden unter Bezugnahme auf Fig. 5 beschriebene Schaltungsanordnung arbeitet in einer Vielzahl von sequentiellen Stufen, die, wie oben bereits definiert, innerhalb eines einzigen Decodierzyklus stattfinden. Bei der Stufe, die derjenigen folgt, in welcher Befehle von der Schaltung 100 für die Wiederbefüllung der Eingangs-Register den Eingangbefehl- Registern 104a, 104b ... 104N zugefügt worden sind, werden die Befehle von den Befehleingangs-Registern zu den entsprechenden Befehlsklassifizierern und Decodierern weitergeleitet. Jeder Befehlsklassifizierer 108a, 108b ... 108N klassifiziert den empfangenen Befehl, um dadurch einen Klassifikationscode zu erzeugen, der die funktionelle Einheit(en) der Ausführungseinheit spezifiziert, die diesen Befehl für die Ausführung benötigt, wie es bereits oben beschrieben worden ist. Ein leeres Eingangs-Register wird klassifiziert als ein Abschlußsymbol für die Gruppierung der Befehle. Die Befehlsklassifizierer 108a, 108b ... 108N sind angeschlossen, um die Klassifikationscode an einen Befehls-Gruppierer 112 abzugeben. Der Befehls-Gruppierer überprüft die Klassifikationscode und versucht, die größte Gruppe von Befehlen zu bilden, die der Ausführungseinheit 13 simultan zugeführt werden kann. Um dieses auszuführen, wendet er die oben diskutierten Regeln an, wie sie auch in den Fig. 2 und 3 gezeigt worden sind. Der Befehls- Gruppierer überprüft die Klassifikationscode der Reihe nach, d. h., zuerst denjenigen, der von dem Befehlsklassifizierer 108a abgegeben worden ist. Der erste Klassifikationscode, den er empfängt und der nicht eine zulässige verlängerung der Gruppe sein kann, die von früheren Befehlen in der überprüften Gruppe gebildet worden ist, oder das erste Befehlseingangs- Register, das leer ist, bewirkt, daß die Gruppierung beendet wird. Unter der Annahme, daß der erste derartige Befehl (oder das erste derartige Befehlseingangs-Register) der i-te Befehl (oder Register) ist, wird der Befehlsgruppierer eine Gruppe von i Befehlen erzeugen. Es ist selbstverständlich möglich, daß, in einem Fall, in dem alle N Befehlseingangs-Register voll sind und alle N Befehle in einer Gruppe ausgeführt werden können, i = N ist. Wenn er eine ausführbare Gruppe von Befehlen aufgefunden hat, erzeugt der Befehlsgruppierer 112 einen Gruppencode für jeden Befehl, der den Kreis in Fig. 3 festlegt, der von diesem Befehl zu belegen ist.
  • Ein Selektor 114 für eine funktionale Einheit ist an den Befehlsgruppierer 112 angeschlossen, um davon die von dem Befehlsgruppierer erzeugten Gruppencode zu empfangen. Der Selektor für die funktionale Einheit legt dann fest, welche der funktionalen Einheiten der Ausführungseinheit von dieser Gruppe benötigt werden. Ein Auswahlregister 200 für die funktionalen Einheiten hält die Ergebnisse des Selektors 114 für funktionale Einheiten. In der nächsten darauffolgenden Stufe wird diese Information zu der Ausführungseinheit selbst gesandt.
  • Die von den Befehlsgruppierer erzeugten Gruppencode enthalten einen neutralen Gruppencode, der an Befehlen angewandt wird, die nicht ein Teil einer ausführbaren Gruppe sein können. Ein neutraler Gruppencode wird keine Einheiten der Ausführungseinheit aktivieren.
  • An dem Ende von einem jedem Decodierzyklus ist es notwendig, den zuletzt in der Gruppe akzeptierten Befehl derart festzulegen, daß in dem nächsten Zyklus die Überprüfung des folgenden Befehls beginnen kann. Dazu umfaßt die in Fig. 5 gezeigte Schaltungsanordnung eine Vielzahl von Befehlsverwendungen/Festlegungseinheiten 118a ... 118N, die an den Ausgängen des Befehlsgruppierers 112 angeschlossen und so angeordnet sind, einen entsprechenden Gruppencode zu überprüfen. Ein Befehl wird als verwendet angesehen, falls sein Gruppencode nicht der neutrale Gruppencode ist. Die Ausgänge der Befehlsverwendung/Festlegungseinheiten 118a ... 118N sind an einem nächsten Detektor 120 für einen Gruppenbeginn-Befehl angeschlossen, der den Befehl festlegt, von dem aus die nächste Gruppe bei dem folgenden Decodierzyklus beginnt. Der Ausgang des Detektors 120 für den nächsten Gruppenbeginn-Befehl wird an die Schaltung 100 für die Eingangs-Register-Wiederbefüllung angelegt, um die Position des nächsten auszuführenden Befehls festzulegen. Die Schaltung 100 für die Eingangs-Register- Wiederbefüllung kann dann den Befehlsstrom zusammenstellen, der dann bei dem nächsten Decodierzyklus den Eingangs- Registern zuzusenden ist, und zwar entweder beginnend von dem nächsten nicht sequentiellen Befehl oder dem Befehl, der von dem Detektor für den nächsten Gruppenbeginns-Befehl festgelegt worden ist.
  • Während der gleichen Stufe der Operation innerhalb des Decodierzyklus, wie diejenige, in welcher der Befehlsklassifizierer den Befehlsgruppierer mit Klassifikationscode versorgt und letzterer Gruppencode zur Verfügung stellt, arbeiten die Decodierer 110a ... 110n parallel zu den Befehlsklassifizierern und dem Befehlsgruppierer, um die Befehle zu decodieren und um die für jedem Befehl notwendigen Operationen und die relevanten Operanden zu spezifizieren. Eine Ausgabeschaltung 116 ist angeschlossen, um von den Befehlsgruppierer 112 die dadurch erzeugten Gruppencode zu empfangen und um von den Decodierern 110 die decodierten Befehle zu empfangen. Die Ausgabeschaltung 116 wendet die Gruppencode und die decodierten Befehle an, um aus den Befehlen in der ausführbaren Gruppe Steuer- und Daten- Informationen auszuwählen. Diese Steuer- und Daten- Informationen werden entsprechend von einem Steuer-Register 202 bzw. einem Daten-Register 204 für die Übertragung zu der Ausführungseinheit bei der nächsten Stufe der Operation gehalten.
  • Eine detailliertere Erläuterung des Befehlsgruppierers 112 wird nun unter Bezugnahme auf die Fig. 6 gegeben. Der Befehlsgruppierer 112 umfaßt N Gruppenlogik-Einheiten 122a, 122b ... 122N. Die erste Gruppenlogik-Einheit 122a analysiert den Klassifikationscode des ersten Befehls und erzeugt unter Verwendung der in Fig. 3 dargestellten Regeln einen vorderen Grammatikcode, der einen möglichen geeigneten Kreis darstellt, in welchen der Befehl zu plazieren ist. Der vordere Grammatikcode wird zur nächsten Gruppenlogik-Einheit 122b übermittelt, die diesen Code zusammen mit dem Klassifikationscode des zweiten Befehls verwendet, um festzustellen, ob und falls ja wie der zweite Befehl eine gültige Verlängerung des ersten Befehls sein könnte. Die zweite Gruppenlogik-Einheit 122b gibt einen neuen Grammatikcode aus, der zur nächsten Gruppenlogik-Einheit abgeschickt wird. Diese Vorgehensweise wird mit jeder Gruppenlogik-Einheit fortgesetzt unter Verwendung des Grammatikcodes von der früheren Gruppenlogik-Einheit und dem Klassifikationscode des ihr übermittelten Befehls. Für Fälle, in denen "Vorabinformationen" notwendig sind, ist, wie oben bereits diskutiert, es möglich, eine ähnliche Vorgehensweise von der rechten Seite der Fig. 6 ausgehend durchzuführen, wobei jede Gruppenlogik-Einheit der Gruppenlogik-Einheit zu ihrer linken einen Rückwärts-Grammatikcode zuführt
  • Die Architektur von jeder Gruppenlogik-Einheit 122 ist genauer in der Fig. 7 dargestellt. Jede Gruppenlogik-Einheit 122i umfaßt einen Vorwärts-Grammatikcodierer 124, der angeschlossen ist, um den Grammatikcode von der vorhergehenden Gruppenlogik- Einheit 122 i-1 zu empfangen und um einen neuen Vorwärts- Grammatikcode zur nächsten Gruppenlogik-Einheit 122 i+1 zu senden. Es ist auch ein Rückwärts-Grammatikcodierer 126 vorhanden zum Empfangen des Rückwärts-Grammatikcodes von der nächsten Gruppenlogik-Einheit 122 i+1 und zum Zuführen des neuen Rückwärts-Grammatikcode zu der vorhergehenden Gruppenlogik-Einheit 122 i-1. Schließlich enthält die Gruppenlogik- Einheit 122 i einen Gruppencodegenerator 128, der die Vorwärts- und Rückwärts-Grammatikcode sowie den Klassifikationscode von diesem Befehl überprüft, und eine Entscheidung trifft, ob er diesen Befehl der zusammengestellten Gruppe akzeptiert oder zurückweist, und er erzeugt entsprechend einen Gruppencode.
  • Es ist zu bemerken, daß die Übertragung der Vorwärts- und Rückwärts-Grammatikcode unabhängig voneinander stattfindet. Ihr Verhalten kann als analog betrachtet werden, um Ketten zu tragen, so daß schnelle Übertragungskettenauslegungsverfahren, wie z. B. Übertragungsvorabinformation oder Übertragungsauslassung mit einer guten Auswirkung angewandt werden können.
  • Eine verbesserte Version der in Fig. 5 gezeigten Schaltungsanordnung ist in der Fig. 8 dargestellt. In der Fig. 8 werden für die mit der Fig. 5 gleichen Teile gleiche Bezugszeichen verwandt. In der Schaltungsanordnung von Fig. 5 arbeitet der Befehlsgruppierer 112, um eine ausführbare Gruppe kompatibler Befehle zu bilden, die immer bei dem ersten Befehlsregister 104 a auf der linken Seite beginnt. Also müssen dieser Register immer wieder von dem nächsten Satz der N Befehle wiederbefüllt werden. Im Gegensatz dazu umfaßt in der Schaltungsanordnung von Fig. 8 die Schaltung 100 für die Eingangs- Register-Wiederbefüllung eine Vielzahl von Eingangswiederbefüllungs-Einheiten 130a, 130b ... 130N. Jeder Befehl wird in Zuordnung zu einem Start-Bit abgesandt, welches einem Start- Bit-Marker 132a ... 132N zugeführt wird, der einem jeden der Befehlseingangs-Register 104a ... 104N zugeordnet ist. Es kann lediglich ein Start-Bit pro Zyklus festgesetzt werden. Die Gruppierung der Befehle durch den Befehlsgruppierer 112 beginnt mit dem Befehl, der in dem Eingangs-Register 104i enthalten ist, dessen Start-Marker 132i gesetzt wird, und schreitet fort durch die Befehlseingangs-Register 104i ... 104 i-l, bis N Befehle überprüft worden sind, d. h. bis das Eingangs- Register 104 i-1 unmittelbar hinter dem Register 104i erreicht ist, dessen Start-Bit festgesetzt worden ist. Auf diese Weise verhalten sich die Eingangs-Register 104 wie ein Kreispufferspeicher.
  • Es ist auch noch jeweils eine Start-Detektor-Einheit 134a ... 134N einer jeden Eingangswiederbefüllungs-Einheit 130a ... 130N zugeordnet. Die nächsten Start-Detektor-Einheiten 134 erzeugen die Start-Bits für den nächsten Decodierzyklus als ein Ergebnis einer Überprüfung des Ausgangs der Informationsverwendungsfestlegungseinheiten 118a ... 118N und der Start-Bits des derzeitigen Decodierzyklus. Der Beginn der nächsten Gruppe ist der erste Befehl, der nicht verwandt wird, wohingegen sein Vorgänger verwandt worden ist. Falls alle Eingangsbefehle verwandt worden sind, wird die nächste Gruppe von dem gleichen Eingangs-Register wie die derzeitige Gruppe beginnen.
  • Jedes Eingangs-Register 104i wird von ihrer Eingangswiederbefüllungs-Einheit 130i befüllt, falls das Eingangs-Register 104 leer ist oder falls dessen Befehl im derzeitigen Zyklus verwandt worden ist. Falls das Eingangs-Register mit einem gültigen Befehl gefüllt ist, wird dessen FULL/EMPTY-Bit-Einheit 106 auf FULL gesetzt. Falls die Eingangswiederbefüllungs-Einheit keinen gültigen Befehl zur Verfügung hat und ihr entsprechendes Register eine Wiederbefüllung benötigt, wird der FULL/EMPTY-Marker von diesem Register auf EMPTY gesetzt. Das bedeutet, das volle Eingangs-Register, die in dem derzeitigen Zyklus nicht gruppiert worden sind, genommen werden, um bei dem nächsten Decodierzyklus verwandt zu werden. Falls des weiteren alle Eingangsbefehle in dem derzeitigen Zyklus verwandt worden sind, werden alle Eingangs-Register mit neuen Befehlen für den nächsten Zyklus wiederbefüllt werden.
  • Der Befehls-Gruppierer 112 verhält sich zu dem oben unter Bezugnahme auf die Fig. 6 und 7 beschriebenen ähnlich, mit Ausnahme von der Tatsache, daß die Befehlsgruppierung nicht notwendigerweise bei der ersten Gruppenlogik-Einheit 122a zu beginnen braucht, sondern in Übereinstimmung mit dem Eingangs- Register 104i, dessen Start-Bit 132i gesetzt worden ist, bei jeder Gruppenlogikeinheit beginnen kann. Zu diesem Zweck ist jede Gruppenlogik-Einheit Logikeinrichtungen 136 zugeordnet. Diese Logikeinrichtungen können die Form von 2-zu1-Multiplexer einnehmen, die die Übertragung der Vorwärts- und Rückwärts- Grammatikcode zu ihren Startbedingungen bei dem Beginn eines jeden Zyklus initialisieren können.
  • Das Gruppieren der Befehle gemäß den Fähigkeiten der Ausführungseinheit, zu der diese simultan abgegeben worden sind, ermöglicht es, die Befehle mit einer höheren Geschwindigkeit als bis jetzt möglich zu bearbeiten. Es ist möglich, noch größere Geschwindigkeitsvorteile zu erzielen, falls das Befehls- Bearbeitsungssystem in einer Abfolge (pipelined) angeordnet ist.
  • Die Prinzipien der Ablaufanordnung werden von Fachleuten auf diesem Gebiet leicht verstanden, um aber die folgende Diskussion zu unterstützen, wird auf die Fig. 9 Bezug genommen, welche eine einfache Ablaufanordnung darstellt, mit einer Instruktionsabrufeinheit 2, einer Instruktionsdecodiereinheit 4 sowie einer Instruktionsausführungseinheit 6. Während jedem Operationszyklus empfängt die Instruktionsdecodiereinheit 4 einen Befehl von der Instruktionsabrufeinheit 2, decodiert diesen und gibt diesen in decodierter Form an die Instruktionsausführungseinheit 6 aus. In diesem Fall entspricht ein Ausführungszyklus der Zeit, die für die Ausführung des einen Befehls durch die Ausführungseinheit benötigt wird. Diese einfache Ablaufanordnung arbeitet also derart, daß ein Befehl pro Decodierzyklus an die Instruktionsausführungseinheit ausgegeben wird. Die Tabelle I stellt den Zyklus mittels des Zyklusbetriebs für eine exemplarische Reihe von Befehlen wie folgt dar:
  • "Ldw n, Ldv m, Ldw p, Ldv q, Add, Ldw r, Stv s", worin 'm', 'n', 'p', 'q', 'r' und 's' ganze Zahlen sind.
  • An dem Ende eines jeden Zyklus hat die Instruktionsabrufeinheit 2 immer den nächsten Befehl zur Verfügung, der der Instruktionsdecodiereinheit 4 bei dem nächsten Zyklus zuzuführen ist. Wie aus der Tabelle I entnehmbar, wird bei jedem Zyklus ein Befehl decodiert, während der in dem vorangegangenen Zyklus decodierte Befehl ausgeführt wird. In dieser Ablaufanordnung kann die Instruktionsausführungseinheit lediglich einen Befehl pro Zyklus ausführen. Der Befehlsdurchgang eines Prozessors wird definiert als die Anzahl von Befehlen, die der Decodierer an die Ausführungseinheit pro Zyklus abgibt. Es kann aus der Tabelle 1 ersehen werden, daß der Befehlsdurchsatz der in Fig. 9 gezeigten Ablaufanordnung ein Befehl pro Zyklus ist.
  • Die Fig. 10 zeigt eine modifizierte Version der Ablaufanordnung, in welcher die Instruktionsausführungseinheit 6 vier Stufen umfaßt, nämlich die Stufe 0 bis Stufe 3. Die Stufen der Ausführungseinheit sind so ausgelegt, daß sie mit unterschiedlichen Operationen zurechtkommen, die von dem wie oben beschrieben festgesetzten Befehl benötigt werden. Die Möglichkeiten einer jeden Stufe entsprechen der Klassifikation der funktionellen Einheiten, wie im folgenden angegeben.
  • Stufe 0 Klassifikation (i)
  • Stufe 1 Klassifikation (ii)
  • Stufe 2 Klassifikation (iii)
  • Stufe 3 Klassifikation (iv)
  • Der Betrieb der Ablaufanordnung von Fig. 10 wird nunmehr unter Bezugnahme auf die Tabelle II sowie auf Fig. 11 beschrieben. Die Ablaufanordnung arbeitet in Abhängigkeit von einem einfachen Satz von Regeln. Erstens, obwohl die Decodiereinheit 4 jede Anzahl von Befehlen decodieren kann, kann jede Stufe der Ausführung einen Befehl ausführen, oder vielleicht nur einen Teil eines Befehls in Abhängigkeit von der Klassifikation dieser Stufe, und zwar in einem einzelnen Ausführungszyklus.
  • Zweitens kann jede Stufe innerhalb jedes Zyklus entscheiden, ob ein Befehl (oder ein Teil eines Befehls) auszuführen oder zur nächsten Stufe weiterzuleiten ist. In einem Ausführungszyklus kann ein Befehl (oder ein nicht ausgeführter Teil davon) lediglich zu der nächsten Stufe weitergehen.
  • Die Fig. 11 und die Tabelle II zeigen die Anwendung dieser Regeln der Ablaufanordnung von Fig. 10. In der Fig. 11 bezeichnen die Befehle in einem jede Stufe festlegenden Kästchen einen Befehl, der ausgeführt wird, während Befehle entgegen den vertikalen Pfeilen Befehle bezeichnen, die zu der nächsten Stufe überführt werden. Um die folgende Erläuterung zu vereinfachen, sind die Befehle in der Reihenfolge ihres Erscheinens in der Befehlsabfolge, wie in der Tabelle II gezeigt, numeriert: Diese Nummern werden in der Fig. 11 verwendet.
  • In dem Zyklus 1 werden die Befehle 1 und 2 decodiert und zur Stufe Q weitergegeben. Es kann nun keine Ausführung stattfinden, weil keine Befehle in irgendeiner der Ausführungsstufen nun vorhanden sind.
  • In dem Zyklus 2 werden die Befehle 3, 4 und 5 decodiert, während der Befehl 1 von der Stufe 0 der Ablaufanordnung ausgeführt wird. Sobald die Stufe 0 der Ablaufanordnung eine Entscheidung getroffen hat, den Befehl 1 auszuführen, übergibt sie den Befehl 2 zu der nächsten Stufe der Ablaufanordnung, nämlich zur Stufe 1.
  • In dem Zyklus 3 werden die Befehle 6 und 7 decodiert, um die Decodierung der vorliegenden Befehlsabfolge zu vervollständigen, während die Stufe 0 der Ablaufanordnung eine Entscheidung trifft, den Befehl 3 der Befehle 3, 4 und 5, die für sie verfügbar sind, auszuführen. Die Befehle 4 und 5 werden also im Takt-Zyklus 3 der zweiten Stufe der Ablaufanordnung zugeführt, nämlich der Stufe 1. Währenddessen führt die Stufe 1 der Ablaufanordnung den Befehl 2 aus, den sie im Zyklus 2 empfangen hat.
  • Im Zyklus 4 fällt die Stufe 0 der Ablaufanordnung eine Entscheidung, den Befehl 6 auszuführen. Der Befehl 7 wird also zu der Stufe 1 der Ablaufanordnung weitergeleitet. Zur selben Zeit hat die Stufe 1 der Ablaufanordnung eine Entscheidung getroffen, den Befehl 4 auszuführen und hat den Befehl 5 der Stufe 2 der Ablaufanordnung zugeführt. In einem kontinuierlichen System könnte im Zyklus 4 das Decodieren einer weiteren Befehlsabfolge beginnen, aber dies wird hier nicht beschrieben.
  • Im Zyklus 5 hat in dem vorliegenden Beispiel die Stufe 0 der Ablaufanordnung keinen Befehl auszuführen oder keine Entscheidung zu treffen und tut daher nichts. Die Stufe 1 der Ablaufanordnung fällt eine Entscheidung, einen Teil des Befehls 7 auszuführen. Es isl zu bemerken, daß der Befehl 7 der Befehl Stv n ist und sowohl die Erzeugung einer Adresse als auch das Einschreiben in einen Speicher als diese Adresse benötigt. Lediglich die Stufe 3 der Ablaufanordnung kann Speichereinschreiboperationen ausführen. Aus diesem Grund fällt die Stufe 1 der Ablaufanordnung die Entscheidung, die Speicheradressenerzeugung des Teils des Befehls 7 auszuführen und leitet den übrigen Teil zu der Stufe 2 der Ablaufanordnung weiter. Zwischenzeitlich führt die Stufe 2 der Ablaufanordnung den Befehl 5 aus.
  • Im Zyklus 6 ist die einzige Stufe der Ablaufanordnung, die einen auszuführenden Befehl enthält, die Stufe 2, die nun den zweiten Teil des Befehls 7 hält. Allerdings hat die Stufe 2 nicht die Kapazität diesen Befehl auszuführen, so daß der Takt-Zyklus verwandt wird, den zweiten Teil des Befehls 7 der Stufe 3 der Ablaufanordnung zuzuleiten. Im Zyklus 7 führt die Stufe 3 der Ablaufanordnung den Endteil des Befehls 7 aus, um die Befehlsabfolge zu vervollständigen.
  • Es ist aus der Tabelle II entnehmbar, daß sieben Befehle über 3 Zyklen an die Instruktionsausführungseinheit abgegeben werden, so daß der Befehlsdurchlauf für den exemplarischen Satz von Befehlen 7/3 = 2,33 Befehle pro Zyklus beträgt.
  • In diesem mit einer Ablaufanordnung versehenden Beispiel bilden jeweils die Abrufeinheit 2 und die Decodiereinheit 4 eine entsprechende Stufe in der Ablaufanordnung, die die gleiche Zykluszeit aufweist, wie jede der Stufen 0 bis 3 der Ausführungseinheit. Aus dem oben angegebenen kann entnommen werden, daß der aus der Ablaufanordnung gewonnene Vorteil darin besteht, daß jede Stufe der Ablaufanordnung, im optimalen Fall, immer einmal pro jedem Zyklus arbeitet, wobei angenommen wird, daß Reihen von Befehlen kontinuierlich verfügbar sind. Diese Prinzipien können in der vorliegenden Erfindung dazu verwandt werden, die Abrufeinheit 10, die Decodiereinheit 12 und die Ausführungseinheit 13, wie in Fig. 12 gezeigt, als eine Vielzahl in einer Ablaufanordnung angeordnete Stufen auszubilden. Mit dem unter Bezugnahme auf die Fig. 1 oben definierten Befehlsverarbeitungssystem können 4 Zyklen für eine ausführbare Gruppe kompatibler Befehle genommen werden, die von der Ausführungseinheit auszuführen sind. Die Decodiereinheit gibt eine Gruppe von Befehlen einmal alle 4 Zyklen aus, weil eine nächste ausführbare Gruppe lediglich nach der vollständigen Ausführung aller Befehle in der vorangegangenen ausführbaren Gruppe ausgegeben wird. Im Gegensatz zu der Anordnung gemäß Fig. 12 arbeitet jede Stufe der Ablaufanordnung in einem Zyklus, wobei eine neue Gruppe von Befehlen zu der ersten Stufe der Ausführungseinheit bei jedem Zyklus ausgegeben wird. Die Ausgabe von Befehlen von der Instruktionsdecodiereinheit wird also beschleunigt. Dies ergibt sich noch klarer aus der folgenden detaillierten Beschreibung der Fig. 12, die eine sechsstufige Ablaufanordnung darstellt.
  • In der Fig. 12 ist die Ausführungseinheit 13 in vier mit einem Ablaufplan versehene Stufen aufgeteilt. Die Stufe 2 der Ablaufanordnung umfaßt die drei funktionalen Einheiten 14a, 14b, 14c der Klassifikation (i). Die Stufe 3 der Ablaufanordnung umfaßt die drei funktionalen Einheiten 16a, 16b und 16c der Klassifikation (ii). Die Stufe 4 der Ablaufanordnung von Fig. 12 umfaßt die funktionale Einheit 18 der Klassifikation (iii) für die Ausführung arithmetischer oder logischer Operationen (ALU). Die Stufe 5 umfaßt die funktionale Einheit 20 der Klassifikation (iv) für die Anwendung der Speicherschreib- Operation.
  • Die Tabelle III stellt eine Zyklus-pro-Zyklus-Operation des Befehlsbearbeitungssystems von Fig. 12 dar. Für die folgende Erläuterung wird angenommen, daß die Gruppe von Befehlen eine Gruppe ist, die als eine ausführbare Gruppe kompatibler Befehle festgelegt worden ist. Die nun folgende Erläuterung verwendet die Gruppe von verwendeten Befehlen, um die Ablaufanordnung von Fig. 9 zu erläutern.
  • In dem Zyklus 1 wird die Gruppe aus sieben Befehlen in decodierter Form an die Ausführungseinheit abgegeben. Im Zyklus 2 werden alle Befehle zu der Stufe 2 der Ablaufanordnung weitergeleitet, die eine Entscheidung fällt, ob sie die Befehle ausführen kann und falls ja, in welcher ihrer Ausführungseinheiten 14a, 14b, 14c, oder ob die Befehle zu der nächsten Stufe weitergegeben werden sollten. Sie fällt die Entscheidung, die Befehle 1, 3 und 6 auszuführen und die Befehle 2, 4, 5 und 7 zu der Stufe 3 weiterzuleiten. Die Ausführung der Befehle 1, 3 und 6 erzeugt drei Adressen, zwei zum Lesen, die zu den Instruktionsausführungseinheiten 16a, 16b der Stufe 3 weitergeleitet werden, und eine zum Schreiben, die der Instruktionsausführungseinheit 16 c der Stufe 3 weitergeleitet wird. In dem Zyklus 3 fällt die Stufe 3 eine Entscheidung, die Befehle 2 und 4 in den Instruktionsausführungseinheiten 16 a und 16 b auszuführen, um 2 Operanden zu erzeugen und um die Adressenerzeugung des Teils des Befehls 7 in der Instruktionsausführungseinheit 16 c auszuführen. Die Operanden werden der Stufe 4 als ihr Befehl 5 zugeführt, während der verbleibende Teil des Befehls 7 (die Speicherschreiboperation) von der Instruktionsausführungseinheit 16 c durch die Stufe 4 der Ablaufanordnung zu der Stufe 5 Taktgesteuert wird. In Zyklus 4 führt die Stufe 4 den Befehl 5 aus, um Schreibdaten zu erzeugen, leitet den übrigen Teil des Befehls 7 in dem Zyklus 5 zu der Stufe 5 weiter, wobei die Stufe 5 der Ablaufanordnung den übrigen Teil des Befehis 7 unter Verwendung der Schreibadresse von der Stufe 3 und der Daten von der Stufe 4 ausführt, um den Befehlssatz zu vervollständigen.
  • Es ist nunmehr klar, daß die volle Leistungsfähigkeit der in Fig. 12 dargestellten Ablauffolge nur dann ausgenutzt werden kann, wenn die von der Decodiereinheit auszugebenden Befehle in eine kompatible Gruppe gruppiert worden sind, was bevorzugt die Verwendung von jeder Stufe der Ablauffolge maximiert. Es wird ferner klar sein, daß jede Gruppe von Befehlen, die simultan ausgegeben werden, einige oder alle Möglichkeiten der Ablauffolge verwenden kann. Wenn die Befehlsgruppe die Ablauffolge durchläuft, führt jede Stufe ihre Befehle aus, erzeugt entsprechend Ergebnisse, und anschließend werden die nicht ausgeführten Befehle sowie die Ergebnisse der Befehle, die ausgeführt worden sind, zu der nächsten Stufe weitergegeben. Falls eine Ablaufanordnungs-Stufe von einem Befehl nicht benötigt wird, wird dieser Befehl bei dem nächsten Zyklus zu der nächsten Stufe weitergeleitet, ohne daß Operationen ausgeführt worden sind, und es sind keine neuen Ergebnisse erzeugt worden.
  • Es ist sicherlich erkennbar, daß in den oben angegebenen Beispielen die Gruppe von Befehlen, die ausgewählt worden ist zum simultanen Ausgeben, dahingehend kompatibel sein muß, daß ihre Forderungen an funktionelle Einheiten der Ausführungseinheit derart verteilt sind, daß kein sich ausschließender Bedarf für die simultane Anwendung irgendeiner funktionellen Einheit gegeben ist. TABELLE I TABELLE II TABELLLE III TABELLE IV

Claims (17)

1. Verfahren zur Ausführung einer Vielzahl von Befehlen in einem Computersystem mit einem von einer Vielzahl dieser Befehle gebildeten Programm, in welchem jeder Befehl in einer Ausführungseinheit (13), die eine Vielzahl von Funktionseinheiten aufweist, ausgeführt wird, wobei dieses Verfahren umfaßt, daß eine Abfolge von Sequenzen (I) des Abrufens und Abgebens von Befehlen aus einem Speicher (II), des Decodierens dieser Befehle und (III) des Ausführens dieser Befehle, um dieses Programm ablaufen zu lassen, bewirkt wird, dadurch gekennzeiclmet, daß dieses Verfahren das dynamische Zuordnen der Befehle für die Ausführung umfaßt, wenn dieses Programm durch das Identifizieren einer Abfolge separater Befehle läuft, daß in dieser Abfolge jeder Befehl in Abhängigkeit der für die Ausführung dieses Befehis benstigten Funktionseinheiten klassifiziert wird, daß die Klassifizierung in der in einer Abfolge angeordneten Sequenz durchgeführt wird, nachdem die Befehle abgerufen und abgegeben worden sind, das Auswählen einer Gruppe von Befehlen aus einer Vielzahl von Befehlen in dieser Reihenfolge, die gemäß ihrer Klassifizierung für eine simultane Abgabe zu der Ausführungseinheit ohne gegenseitig störende Forderungen von irgendeiner Funktionseinheit in der Ausführungseinheit kompatibel ist, das Decodieren dieser Gruppe von Befehlen, während die einzelne Identität von jedem Befehl beibehalten wird, sowie das simultane überführen dieser Gruppe zur Ausführungseinheit.
2. Verfahren nach Anspruch 1, des weiteren dadurch gekennzeichnet, daß die Vielzahl der Befehle, die simultan als eine Gruppe zur Ausführungseinheit überführt wurden, zumindest einen Befehl enthalten, der von einem anderen Befehl dieser Gruppe abhängig ist, indem er Daten ben6tigt, die durch die Ausführung dieses anderen Befehls zur Verfügung gestellt werden, wobei diese Gruppe von Befehlen in der Ausführungseinheit ausgeführt wird und diese Funktionseinheiten selektiv miteinander verbunden werden, wodurch diese von der Ausführung des anderen Befehls von einer Funktionseinheit erhaltenen Daten von dieser einen Funktionseinheit ausgegeben und einer anderen Funktionseinheit eingegeben werden, die diesen einen Befehl ausführt.
3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß es die Identifizierung einer Reihenfolge von auszuführenden Befehlen vor der Abgabe dieser Befehle zu dieser Ausführungseinheit und das Testen dieser Reihenfolge der Befehle enthält, um eine kompatible Gruppe von Befehlen für eine simultane Abgabe zu dieser Ausführungseinheit festzulegen.
4. Verfahren nach Anspruch 3, des weiteren dadurch gekennzeichnet, daß dieses Testen das Empfangen eines ersten Befehls in der Reihenfolge der Befehle, das Akzeptieren fortlaufender Befehle, die einen Kompatibilitätstest durchlaufen, sowie das Beenden der Gruppe nach dem letzten den Kompatibilitätstest zu durchlaufenden Befehl oder bei einer vorbestimmten Maximalzahl von Befehlen für diese Gruppe umfaßt.
5. Verfahren nach Anspruch 3 oder 4, des weiteren dadurch gekennzeichnet, daß die Befehle fortlaufend getestet werden, um eine Reihe von kompatiblen Gruppen zu bilden, wobei der erste Befehl in jeder Gruppe der nächste Befehl nach dem letzten Befehl der vorgehenden Gruppe ist.
6. Verfahren nach einem der Ansprüche 2 bis 5, des weiteren dadurch gekennzeichnet, daß das Testen einer Reihenfolge von Befehlen das Klassifizieren eines jeden Befehls in der Reihenfolge in Abhängigkeit von der oder jeder Funktionseinheit enthält, die für die Ausführung dieses Befehl benotigt wird, sowie das Auswählen einer Gruppe von Befehlen in Abhängigkeit von ihrer Klassifikation aufweist.
7. Verfahren nach einem der Ansprüche 2 bis 6, des weiteren dadurch gekennzeichnet, daß die Ausführung dieser Gruppe von Befehlen das simultane Ausführen einer Vielzahl separater Befehle dieser Gruppe in einer oder mehreren Stufen dieser Ausführungseinheit enthält.
8. Verfahren nach einem der Ansprüche 2 bis 7, des weiteren dadurch gekennzeichnet, daß eine Reihenfolge von Gruppen von Befehlen der Ausführungseinheit in einer in einer Leitung nacheinander angeordneten Sequenz abgegeben wird.
9. Verfahren nach Anspruch 8, des weiteren dadurch gekennzeichnet, daß die Befehle aus einem Programmspeicher erhalten und als eine in einer Leitung nacheinander angeordnete Sequenz vor der Zuführung zu der Ausführungseinheit decodiert werden.
10. Verfahren nach einem der Ansprüche 2 bis 9, des weiteren dadurch gekennzeichnet, daß jede Operationsstufe der Ausführungseinheit in einem Ausführungszyklus bewirkt und diese Ausführungseinheit in einer aufeinander abfolgenden Weise betätigt wird, wodurch eine neue Gruppe kompatibler Befehle der Ausführungseinheit in jedem Ausführungszyklus eingegeben wird.
11. Verfahren nach einem der Ansprüche 2 bis 10, des weiteren dadurch gekennzeichnet, daß erste und zweite Operanden von einer oder mehreren Funktionseinheiten in zwei Stufen der Ausführungseinheit erzeugt werden, daß eine arythmetische Operation von einer Funktionseinheit in einer dritten Stufe der Ausführungseinheit bewirkt wird, und daß in einer vierten Stufe der Ausführungseinheit ein Ergebnis in einem Speicherplatz eingeschrieben wird.
12. Verfahren nach Anspruch 11, des weiteren dadurch gekennzeichnet, daß diese Ausführungseinheit (13) angeordnet ist, um einen Programmsprungbefehl auszuführen.
13. Computeranlage mit einem Mikroprozessor und einem Speicher zum Halten einer Sequenz von auszuführenden Befehlen, mit einer mit Leitung versehenen Schaltung, die (1) eine Befehlsabrufsschaltung (10) zum Abrufen von Befehlen aus dem Speicher, (II) eine Befehlsdecodierschaltung (12), die angeschlossen ist, um von dieser Befehlsabrufschaltung Befehle zu empfangen, und (III) eine Befehls-Ausführungseinheit (13) aufweist, die eine Vielzahl von Funktionseinheiten enthält, die jeweils betätigbar sind, um zumindest einen Teil eines Befehls auszuführen, gekeimzeichnet durch das Vorhandensein einer Klassifizierungsschaltung (108) in der Decodierschaltung (12) zum Klassifizieren eines jeden Befehls nach dem Empfang durch die Decodierschaltung in Abhängigkeit von diesen Funktionseinheiten (14,16,18), die für die Ausführung dieses Befehls benötigt werden, durch das Testen der Klassifikation der Reihenfolge von Befehlen und durch das Auswählen einer Gruppe, die gemäß ihrer Klassifikation für eine simultane Abgabe zur Ausführungseinheit geeignet ist, ohne mit den Forderungen irgendeiner Funktionseinheit in der Ausführungseinheit in Konflikt zu geraten, und durch eine Befehlsabgabeschaltung (116), die an die Klassifizierungsschaltung angeschlossen ist, um eine Gruppe separater, kompatibler Befehle simultan zur Ausführungseinheit durchzuleiten.
14. Computeranlage nach Anspruch 13, des weiteren dadurch gekennzeichnet, daß die Funktionseinheiten (14,16,18) in der Ausführungseinheit selektive Verbindungen aufweisen, wodurch Daten, die aus der Ausführung eines Befehls durch eine Funktionseinheit erhalten werden, von dieser einen Funktionseinheit ausgegeben und einer zweiten Funktionseinheit eingegeben werden, die einen anderen Befehl dieser Gruppe ausführt.
15. Computeranlage nach Anspruch 13 oder 14, des weiteren dadurch gekennzeichnet, daß diese Funktionseinheiten (14,16,18) eine Reihenfolge von Stufen in dieser Ausführungseinheit (17) bilden.
16. Computeranlage nach Anspruch 15, des weiteren dadurch gekennzeichnet, daß zumindest eine Stufe der Ausführungseinheit (13) eine Vielzahl von Funktionseinheiten (14,16) aufweist, die angeordnet ist, entsprechende Befehle simultan auszuführen.
17. Computeranlage nach einem der Ansprüche 13 bis 16, des weiteren gekennzeichnet durch das Vorhandensein einer Decodierschaltung (12), wobei diese Decodierschaltung (12) und die Ausführungseinheit (13) aufeinanderfolgend angeordnet sind.
DE69127182T 1990-12-21 1991-12-18 Mehrfachbefehlausgabe Expired - Fee Related DE69127182T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB909027853A GB9027853D0 (en) 1990-12-21 1990-12-21 Multiple instruction issue

Publications (2)

Publication Number Publication Date
DE69127182D1 DE69127182D1 (de) 1997-09-11
DE69127182T2 true DE69127182T2 (de) 1998-03-12

Family

ID=10687473

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69127182T Expired - Fee Related DE69127182T2 (de) 1990-12-21 1991-12-18 Mehrfachbefehlausgabe

Country Status (5)

Country Link
US (1) US5742783A (de)
EP (1) EP0492968B1 (de)
JP (1) JP3100721B2 (de)
DE (1) DE69127182T2 (de)
GB (1) GB9027853D0 (de)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69327688T2 (de) * 1992-08-12 2000-09-07 Advanced Micro Devices Inc Befehlsdecoder
WO1994027216A1 (en) * 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
US5481743A (en) * 1993-09-30 1996-01-02 Apple Computer, Inc. Minimal instruction set computer architecture and multiple instruction issue method
US5958042A (en) * 1996-06-11 1999-09-28 Sun Microsystems, Inc. Grouping logic circuit in a pipelined superscalar processor
US5898852A (en) * 1997-06-26 1999-04-27 Sun Microsystems, Inc. Load instruction steering in a dual data cache microarchitecture
US6115807A (en) * 1997-12-19 2000-09-05 Intel Corporation Static instruction decoder utilizing a circular queue to decode instructions and select instructions to be issued
US6742110B2 (en) * 1998-10-06 2004-05-25 Texas Instruments Incorporated Preventing the execution of a set of instructions in parallel based on an indication that the instructions were erroneously pre-coded for parallel execution
JP3841967B2 (ja) 1999-01-19 2006-11-08 株式会社ルネサステクノロジ マイクロプロセッサ
US6425069B1 (en) 1999-03-05 2002-07-23 International Business Machines Corporation Optimization of instruction stream execution that includes a VLIW dispatch group
US6304959B1 (en) 1999-03-05 2001-10-16 International Business Machines Corporation Simplified method to generate BTAGs in a decode unit of a processing system
US6336182B1 (en) * 1999-03-05 2002-01-01 International Business Machines Corporation System and method for utilizing a conditional split for aligning internal operation (IOPs) for dispatch
JP4025493B2 (ja) 2000-08-08 2007-12-19 富士通株式会社 適切な発行先に命令を発行する命令発行装置
JP4272371B2 (ja) * 2001-11-05 2009-06-03 パナソニック株式会社 デバッグ支援装置、コンパイラ装置、デバッグ支援プログラム、コンパイラプログラム、及びコンピュータ読取可能な記録媒体。
KR101412885B1 (ko) * 2012-03-26 2014-06-26 서울대학교산학협력단 모드 설정 및 구분자를 이용하여 저장 매체에서의 영속화를 제어하는 방법 및 그 스토리지 시스템
US9710278B2 (en) * 2014-09-30 2017-07-18 International Business Machines Corporation Optimizing grouping of instructions
KR102051206B1 (ko) * 2018-01-23 2019-12-02 연세대학교 산학협력단 내포된 루프 구조를 포함하는 프로그램을 위한 컴파일 장치 및 방법과 이에 관한 기록매체
US10996952B2 (en) 2018-12-10 2021-05-04 SiFive, Inc. Macro-op fusion
CN111857830B (zh) * 2020-06-05 2023-09-22 上海赛昉科技有限公司 一种提前转发指令数据的通路设计方法、系统及存储介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4128880A (en) * 1976-06-30 1978-12-05 Cray Research, Inc. Computer vector register processing
JPS6028015B2 (ja) * 1980-08-28 1985-07-02 日本電気株式会社 情報処理装置
US4847755A (en) * 1985-10-31 1989-07-11 Mcc Development, Ltd. Parallel processing method and apparatus for increasing processing throughout by parallel processing low level instructions having natural concurrencies
US4903196A (en) * 1986-05-02 1990-02-20 International Business Machines Corporation Method and apparatus for guaranteeing the logical integrity of data in the general purpose registers of a complex multi-execution unit uniprocessor
US4890218A (en) * 1986-07-02 1989-12-26 Raytheon Company Variable length instruction decoding apparatus having cross coupled first and second microengines
US5067069A (en) * 1989-02-03 1991-11-19 Digital Equipment Corporation Control of multiple functional units with parallel operation in a microcoded execution unit
US5293500A (en) * 1989-02-10 1994-03-08 Mitsubishi Denki K.K. Parallel processing method and apparatus
US5197137A (en) * 1989-07-28 1993-03-23 International Business Machines Corporation Computer architecture for the concurrent execution of sequential programs
US5203002A (en) * 1989-12-27 1993-04-13 Wetzel Glen F System with a multiport memory and N processing units for concurrently/individually executing 2N-multi-instruction-words at first/second transitions of a single clock cycle
JP2818249B2 (ja) * 1990-03-30 1998-10-30 株式会社東芝 電子計算機
US5214763A (en) * 1990-05-10 1993-05-25 International Business Machines Corporation Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism
EP0454985B1 (de) * 1990-05-04 1996-12-18 International Business Machines Corporation Maschinenarchitektur für skalaren Verbundbefehlssatz

Also Published As

Publication number Publication date
DE69127182D1 (de) 1997-09-11
JPH06342371A (ja) 1994-12-13
JP3100721B2 (ja) 2000-10-23
EP0492968B1 (de) 1997-08-06
EP0492968A2 (de) 1992-07-01
GB9027853D0 (en) 1991-02-13
EP0492968A3 (en) 1994-11-30
US5742783A (en) 1998-04-21

Similar Documents

Publication Publication Date Title
DE69127182T2 (de) Mehrfachbefehlausgabe
EP0689694B1 (de) Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren
DE69122294T2 (de) Verbindungstechnik für Prozessoren, die auf Befehlsebene parallel arbeiten
DE3751503T2 (de) Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen.
DE69933088T2 (de) Vliw-verarbeiter verarbeitet befehle von verschiedenen breiten
DE2555963C2 (de) Einrichtung zur Funktionsmodifizierung
DE3685913T2 (de) Vektorenverarbeitung.
EP0097725B1 (de) Einrichtung im Befehlswerk eines mikroprogrammgesteuerten Prozessors zur direkten hardwaregesteuerten Ausführung bestimmter Instruktionen
DE60132585T2 (de) Vorrichtung und verfahren zum ausgeben der gruppierung von befehlen in einem vliw-prozessor
DE3854701T2 (de) Methode und Vorrichtung zum Verändern von Mikrobefehlen mit einer Makrobefehlspipeline.
DE1928202B2 (de) Einrichtung zur Erstellung statistischer Daten über den Operationsablauf programmgesteuerter Datenverarbeitungsanlagen
DE2524229A1 (de) Datenverarbeitungssystem mit pyramidenfoermiger hierarchie des steuerflusses
DE60006021T2 (de) VLIW-Prozessor und Programmkomprimierungsgerät and -verfahren
DE2724125A1 (de) Gleitkomma-datenverarbeitungsgeraet
EP0825540B1 (de) Prozessor mit Pipelining-Aufbau
DE19843640A1 (de) Verfahren zum Konfigurieren eines konfigurierbaren Hardware-Blocks
DE69133571T2 (de) Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen
DE19524402C2 (de) Programmausführungssteuereinrichtung mit einer Adressierbarkeit entsprechend einer M-reihigen Pseudo-Zufallszahlenfolge
DE1549474C3 (de) Anordnung In einer elektronischen digitalen Datenverarbeitungsanlage zur Ausführung eines ersten Befehls und gleichzeitigen Decodierung eines folgenden Befehls
DE2715073A1 (de) Mikroprogrammierte rechner-steuervorrichtung
DE2248296A1 (de) Programmsteuereinrichtung
DE2556617A1 (de) Datenverarbeiter zum rotierbaren verschieben von bits eines datenwortes
DE2548720C2 (de) Mikroprogramm-Steuerwerk
DE4430195A1 (de) Computersystem und Verfahren zur Auswertung von Vorhersagen und Booleschen Ausdrücken
DE3307194C2 (de)

Legal Events

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