DE69123629T2 - Maschinenarchitektur für skalaren Verbundbefehlssatz - Google Patents

Maschinenarchitektur für skalaren Verbundbefehlssatz

Info

Publication number
DE69123629T2
DE69123629T2 DE69123629T DE69123629T DE69123629T2 DE 69123629 T2 DE69123629 T2 DE 69123629T2 DE 69123629 T DE69123629 T DE 69123629T DE 69123629 T DE69123629 T DE 69123629T DE 69123629 T2 DE69123629 T2 DE 69123629T2
Authority
DE
Germany
Prior art keywords
instructions
instruction
compound
parallel
sequence
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 - Lifetime
Application number
DE69123629T
Other languages
English (en)
Other versions
DE69123629D1 (de
Inventor
Bartholomew Newark Valley N.Y. 13811 Blaner
Stamatis Vestal N.Y. 13850 Vassiliadis
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of DE69123629D1 publication Critical patent/DE69123629D1/de
Publication of DE69123629T2 publication Critical patent/DE69123629T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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/382Pipelined decoding, e.g. using predecoding
    • 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/3017Runtime instruction translation, e.g. macros
    • 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/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • 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/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)
  • Devices For Executing Special Programs (AREA)
  • Numerical Control (AREA)

Description

    In Beziehung stehende Patentanmeldungen
  • Die folgenden in Beziehung stehenden Patentanmeldungen sind zusammen auf denselben Anmelder übertragen worden wie die vorliegende Patentanmeldung: EP-A-O 451 562 "Data Dependency Collapsing Hardware Apparatus" und EP-A-O 454 934 "General Purpose Compounding Technique For Instruction Level Parallel Processors".
  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft allgemein die parallele Datenverarbeitung durch Computer und im besonderen die Verarbeitung einer Befehlsfolge zum Identifizieren solcher Befehle, welche in einer spezifischen Computersystemkonfiguration parallel ausgegeben und verarbeitet werden können.
  • Hintergrund der Erfindung
  • Das Konzept der parallelen Ausführung von Befehlen hat zur Steigerung der Leistungsfähigkeit von Computersystemen beigetragen. Die parallele Befehlsausführung basiert auf dem Vorhandensein separater Funktionseinheiten, welche zwei oder mehrere gleiche oder unterschiedliche Befehle gleichzeitig ausführen können.
  • Eine weitere Technik, die zur Erhöhung der Leistungsfähigkeit von Computersystemen eingesetzt wird, ist die Verwendung von Befehlspipelines. Der Aufbau von Pipelines basiert allgemein darauf, daß eine Funktion, die von einem Computer ausgeführt werden soll, in voneinander unabhängige Unterfunktionen unterteilt wird und daß die Ausführung jeder Unterfunktion einer separaten Hardwareeinheit oder Stufe zugeordnet wird. Jede Stufe wird so definiert, daß sie zeitlich einen Basis-Maschinenzyklus beansprucht. Die Verwendung von Pipelines stellt eine Art Parallelverarbeitung bereit, weil es möglich ist, mehrere Befehle gleichzeitig auszuführen. Im Idealfall kann pro Maschinenzyklus ein neuer Befehl in die Pipeline eingegeben.werden, wobei sich jeder Befehl innerhalb der Pipeline in einem anderen Stadium der Ausführung befindet. Die Arbeitsweise gleicht der eines Fließbandes mit einer Anzahl von Exemplaren des herzustellenden Produktes, die sich in verschiedenen Stadien der Fertigstellung befinden.
  • Jedoch werden die Vorteile der Parallelverarbeitung und/oder von Pipelines häufig nicht erreicht, weil Verzögerungen, wie beispielsweise solche die durch datenabhängige oder hardwareabhängige Verriegelungen hervorgerufen werden, auftreten. Ein Beispiel für eine datenabhängige Verriegelung ist eine sogenannte Schreib-Lese-Verriegelung, wobei ein erster Befehl sein Ergebnis speichern muß, bevor der zweite Befehl dieses lesen und nachfolgend benutzen kann. Ein Beispiel für eine hardwareabhängige Verriegelung liegt vor, wenn ein erster Befehl eine spezielle Hardwarekomponente verwenden muß und ein zweiter Befehl auf dieselbe spezielle Hardwarekomponente zugreifen muß.
  • Eine der bisher angewandten Techniken zum Verhindern von Verriegelungen (manchmal als Pipelinehasards bezeichnet) wird als dynamische Zeitplanung bezeichnet. Die dynamische Zeitplanung basiert auf der Tatsache, daß es unter Einbeziehung spezieller Hardware möglich ist, Befehlsfolgen umzuordnen, nachdem diese in die Pipeline eingegeben worden sind.
  • Es sind ebenfalls einige Versuche unternommen worden, um die Leistungsfähigkeit durch eine sogenannte statische Zeitplanung zu verbessern, welche durchgeführt wird, bevor die Befehlsfolge zur Ausführung aus dem Speicher abgerufen wird. Die statische Zeitplanung wird dadurch erreicht, daß der Code verschoben wird und somit die Befehlsfolge vor der Ausführung umgeordnet wird. Diese Umordnung erzeugt eine gleichwertige Befehlsfolge, welche die Hardware über die Parallelverarbeitung vollständiger ausnutzt. Eine solche statische Zeitplanung wird typischerweise zum Zeitpunkt des Compilierens der Befehle vorgenommen. Die umgeordneten Befehle bleiben jedoch in ursprünglicher Form erhalten, wobei aber die konventionelle Parallelverarbeitung noch eine Art Bestimmung des dynamischen Verhaltens vor der Befehlsausführung erforderlich macht, um zu entscheiden, ob die beiden nächsten Befehle seriell oder parallel ausgeführt werden sollen.
  • Solche Zeitplanungstechniken können die Gesamtleistungsfähigkeit eines Computers mit Pipeline verbessern aber allein nicht die gegenwärtigen Forderungen nach einer Erhöhung der Leistungsfähigkeit erfüllen. Unter diesem Gesichtspunkt beziehen sich viele der neueren Vorschläge für universelle Computer auf die Ausnutzung von Parallelverarbeitungmechanismen auf Befehlsebene, die den durch Pipelines möglichen Gewinn weit übersteigen. Zum Beispiel ist eine weitergehende Parallelität auf Befehlsebene explizit dadurch erreicht worden, daß bei Maschinen im sogenannten Superskalardesign pro Maschinenzyklus mehrere Befehle ausgegeben werden, anstatt implizit durch die dynamische Zeitplanung bei einzelnen Befehlen oder bei Vektormaschinen. Der Name Superskalar für Maschinen, die mehrere Befehle pro Maschinenzyklus ausgeben, soll diese von Skalarmaschinen abheben, welche einen Befehl pro Maschinenzyklus ausgeben.
  • In einer typischen Superskalarmaschine werden die Operationscodes einer abgerufenen Befehlsfolge durch eine Befehlsausgabelogik dynamisch decodiert und analysiert, um zu bestimmen, ob die Befehl parallel ausgeführt werden können. Die Kriterien für eine solche "in letzter Minute" stattfindende Zeitplanung sind für jede Befehlssatzarchitektur sowie für die zugrundeliegende Implementierung dieser Architektur in einer beliebigen, gegebenen Befehlsverarbeitungseinheit einmalig. Ihre Effektivität wird deshalb durch die Komplexität der Logik zum Bestimmen, welche Kombinationen von Befehlen parallel ausgeführt werden können, begrenzt, und die Zykluszeit der Befehlsverarbeitungseinheit wird wahrscheinlich vergrößert. Die vergrößerte Hardware und die vergrößerten Zykluszeiten für solche Superskalarmaschinen werden bei Architekturen, die hunderte unterschiedliche Befehle besitzen, ein immer größeres Problem.
  • Es gibt weitere Unvollkommenheiten bei der dynamischen Zeitplanung, der statischen Zeitplanung oder bei deren Kombination. Zum Beispiel ist es erforderlich, jeden Skalarbefehl zu jedem neuen Zeitpunkt, zu dem er zur Ausführung abgerufen wird, neu zu untersuchen, um die Möglichkeit der parallelen Ausführung desselben festzustellen. Es sind keine Möglichkeiten bereitgestellt worden, um solche Skalarbefehle zeitlich vorausschauend zu identifizieren und zu markieren, welche die Möglichkeit zur parallelen Ausführung bieten.
  • Ein weiterer Mangel bei der dynamischen Zeitplanung des Typs, der in Superskalarmaschinen implementiert ist, ist die Art und Weise, in der Skalarbefehle auf eine mögliche Parallelverarbeitung überprüft werden. Superskalarmaschinen überprüfen Skalarbefehle auf der Grundlage von Operationscodebeschreibungen, und es wird keine Möglichkeit bereitgestellt, die Hardwareausnutzung in Betracht zu ziehen. Ebenfalls werden die Befehle in der Art und Weise eines FIFO ausgegeben, wodurch die Möglichkeit der selektiven Gruppierung von Befehlen zum Verhindern oder Minimieren des Auftretens von Verriegelungen eliminiert wird.
  • Es gibt einige existierende Verfahren, welche die Hardwareanforderungen an die parallele Befehlsverarbeitung zu berücksichtigen versuchen. Ein solches System ist eine Form der statischen Zeitplanung, genannt Maschine mit extrem langen Befehlsworten, bei welcher ein komplizierter Compiler Befehle umordnet, so daß die Befehlsablaufplanung durch die Hardware vereinfacht wird. Bei diesem Verfahren muß der Compiler komplexer sein als standardmäßige Compiler, so daß ein größeres Fenster zum Zweck der Findung einer höheren Parallelität innerhalb einer Befehlsfolge verwendet werden kann. Aber die sich ergebenden Befehle müssen im Objektcode nicht notwendigerweise zu der vorhandenen Architektur kompatibel sein, so daß also ein Problem gelöst wird, während zusätzliche neue Probleme geschaffen werden. Ebenfalls entstehen ernste zusätzliche Probleme auf Grund von häufigen Verzweigungen, welche eine Parallelverarbeitung begrenzen.
  • Deshalb ist keines der dem Stand der Technik entsprechenden Verfahren der Parallelverarbeitung umfangreich genug, um alle möglichen Verriegelungen zu minimieren und gleichzeitig einen wesentlichen Umbau des Architekturbefehlssatzes und komplexe logische Schaltungen zum dynamischen Decodieren der abgerufenen Befehle zu vermeiden.
  • Dementsprechend besteht ein Bedarf nach einer Verbesserung der digitalen Datenverarbeitung, welche die parallele Ausführung vorhandener Maschinenbefehle zwecks Erhöhung der Prozessorleistungsfähigkeit unterstützt. Weil die Anzahl der pro Sekunde ausgeführten Befehle das Produkt der grundlegenden Zykluszeit des Prozessors und der durchschnittlichen Anzahl der zur Befehlsbeendigung erforderlichen Zyklen ist, wird eine Lösung benötigt, welche diese beiden Parameter betrachtet. Im besonderen wird ein Mechanismus benötigt, der die Anzahl der zur Ausführung eines Befehls im Rahmen einer gegebenen Architektur erforderlichen Zyklen verringert. Zusätzlich wird eine Verbesserung benötigt, welche die Komplexität der Hardware verringert, die erforderlich ist, um die parallele Befehlsausführung zu unterstützen, wodurch eine möglich Vergrößerung der Zykluszeit minimiert wird. Zusätzlich wäre es für die vorgeschlagene Verbesserung sehr wünschenswert, eine Kompatibilität der Implementierung mit einer bereits definierten Systemarchitektur bereitzustellen, während auf Befehlsebene sowohl bei neuem als auch bei vorhandenem Maschinencode eine Parallelität der Verarbeitung herbeigeführt wird.
  • Einige dieser Verbesserungen werden bereits durch ein Verfahren bereitgestellt, das eine parallele Ausführung vorhandener Befehle innerhalb einer speziellen Konfiguration eines Datenverarbeitungssystems ermöglicht, umfassend:
  • Einordnen bestimmter vorhandener Befehle in eine Vielzahl von Kategorien;
  • Vergleichen der Kategorien benachbarter, vorhandener Befehle innerhalb einer Befehlsfolge, um zu bestimmen, ob die benachbarten, vorhandenen Befehle in einer speziellen Konfiguration eines Datenverarbeitungssystems die Möglichkeit zur parallelen Ausführung bieten; und
  • Kennzeichnen solcher benachbarter, vorhandener Befehle, die durch den Vergleichsschritt als parallel ausführbar erkannt worden sind, durch einen Verbindungsindikator.
  • Dieser Verfahrenstyp ist aus der EP-A-0 449 661; dem Artikel "Overlapped Operation with Microprogramming" von L. C. Higbie, IEEE Transactions on Computers, Band C-27, Nr. 3, März 1978, USA, Seiten 270 bis 275 und dem Artikel Tldistributed Instruction Set Computer von Wang, Wu, Proceedings of the International Conference on parallel Processing, Band 1, August 1988, USA, Seiten 426 bis 429 bekannt. Die EP-A-0 449 661 ist Zwischenliteratur, die dem Fachmann zum Einreichungstermin der vorliegenden Patentanmeldung nicht bekannt war.
  • Jedoch besteht weiterhin ein Bedarf nach einer effektiven Möglichkeit für die Bestimmung, ob bei der Ausführung eines großen Befehlssatzes Befehle parallel ausgeführt werden können.
  • Dieses Problem wird durch die Erfindung, wie sie in den Ansprüchen 1 und 10 charakterisiert wird, gelöst. Weitere Verbesserungen der Erfindung werden in den abhängigen Ansprüchen charakterisiert.
  • Die Erfindung und ihre Verbesserungen erfüllen vorteilhaft die folgenden Aufgaben:
  • Eine Aufgabe der vorliegenden Erfindung ist es, ein Verfahren bereitzustellen, mit dem eine Folge vorhandener Befehle zeitlich vor dem Decodieren und Ausführen der Befehle analysiert wird, um durch Gruppierung benachbarter, vorhandener Befehle, die parallel ausgeführt werden können, Verbundbefehle zu erzeugen. Eine damit in Beziehung stehende Aufgabe besteht darin, der Befehlsfolge eine relevante Steuerinformation hinzuzufügen, die eine Gruppierungsinformation enthält, den Beginn eines Verbundbefehls sowie die Anzahl der vorhandenen Befehle, die in jeden der Verbundbefehle einbezogen sind, anzeigend.
  • Eine andere Aufgabe besteht darin, ein großes Fenster aus einer Befehlsbytefolge vor dem Befehlsabruf zu analysieren, wobei das Fenster auf unterschiedliche Positionen innerhalb der Befehlsbytefolge gesetzt werden kann, um eine optimale selektive Gruppierung von einzelnen benachbarten Befehlen, die einen Verbundbefehl bilden, zu erreichen.
  • Eine weitere Aufgabe besteht darin, ein Verfahren zur Verbindung von Befehlen mit den vorstehend beschriebenen Charakteristika bereitzustellen, welches auf komplexe Befehlsarchitekturen angewandt werden kann, die Befehle veränderlicher Länge sowie mit Daten gemischte Befehle besitzen, und welches ebenfalls auf RISC-Architekturen angewandt werden kann, worin Befehle normalerweise eine konstante Länge besitzen und worin Daten nicht mit Befehlen vermischt werden.
  • Eine zusätzliche Aufgabe besteht darin, ein Verfahren der Vorverarbeitung einer Befehlsfolge bereitzustellen, um Verbundbefehle zu erzeugen, wobei das Verfahren durch Software und/oder Hardware an verschiedenen Punkten innerhalb des Computersystems vor der Befehlsdecodierung und Befehlsausführung implementiert werden kann. Eine dazu in Beziehung stehende Aufgabe besteht darin, ein Verfahren zur Vorverarbeitung vorhandener Befehle bereitzustellen, welches als Teil eines Post-Compilers oder als Teil einer im Speicher stehenden Verbindungseinheit oder als Teil einer Cache-Verbindungseinheit eine binäre Befehlsfolge verarbeitet und welches mit dem Erzeugen von Verbundbefehlen am Anfang einer Bytefolge beginnen kann, ohne die Befehlsgrenzen zu kennen.
  • Somit unterbreitet die Erfindung ein Verfahren zur Vorverarbeitung einer Befehlsfolge zum Erzeugen von Verbundbefehlen, die aus Skalarbefehlen bestehen, welche ihren ursprünglichen Inhalt behalten haben. Verbundbefehle werden erzeugt, ohne daß der Objektcode der Skalarbefehle, die den Verbundbefehl bilden, verändert wird, wodurch es gestattet ist, daß vorhandene Programme auf einer Verbundbefehlsmaschine eine Verbesserung der Leistungsfähigkeit erfahren, während die Kompatibilität zu vorher implementierten Skalarbefehlsmaschinen aufrechterhalten wird.
  • Im besonderen stellt die Erfindung einen Satz von Verbindungsregeln auf der Grundlage der Analyse vorhandener Befehle bereit, um diese in unterschiedliche Klassen zu unterteilen. Die Analyse bestimmt, welche Befehle sich entweder mit Befehlen aus ihrer eigenen Klasse oder mit Befehlen aus anderen Klassen zur parallelen Ausführung in einer bestimmten Hardwarekonfiguration qualifizieren. Solche Verbindungsregeln werden als Standard für die Vorverarbeitung einer Befehlsfolge verwendet, um Gruppen aus zwei oder mehreren benachbarten Skalarbefehlen zu suchen, die parallel ausgeführt werden können. In einigen Fällen können, wenn Verriegelungen in einer speziellen Hardwarekonfiguration aufgelöst werden können, bestimmte Typen verriegelter Befehle zur parallelen Ausführung als Verbundbefehl zusammengefaßt werden. In anderen Konfigurationen, worin die Verriegelungen nicht aufgelöst werden können, sind Befehle, die datenabhängige oder hardwareabhängige Verriegelungen besitzen, aus den Gruppen ausgeschlossen, die Verbundbefehle bilden.
  • Jeder Verbundbefehl wird durch eine Steuerinformation identifiziert, wie beispielsweise Markierungen, die dem Verbundbefehl zugeordnet sind, und die Länge eines Verbundbefehls ist über einen Bereich skalierbar, der mit einem Satz aus zwei Skalarbefehlen beginnt und sich bis hin zu einer durch die spezifische Hardwareimplementierung bestimmten Anzahl maximal parallel ausführbarer Befehle erstreckt. Weil die Verbindungsregeln auf der Identifikation von Befehlsklassen anstelle von einzelnen Befehlen beruhen, werden nicht länger komplexe Matrizen benötigt, die alle möglichen Kombinationen spezifischer einzelner Befehle aufzeigen. Während ihre ursprüngliche Reihenfolge aufrechterhalten wird, werden einzelne Befehle selektiv gruppiert und mit einem oder mehreren benachbarten Skalarbefehlen zusammengefaßt, um einen Verbundbefehl zu bilden, welcher Skalarbefehle enthält, die noch immer die Objektcodekompatibilität zu nicht gruppierten Skalarbefehlen besitzen. Zum Erfassen von Informationen, die für die Ausführung der Verbundbefehle relevant sind, wird eine Steuerinformation angehängt.
  • Diese und andere Aufgaben, Merkmale und Vorteile der Erfindung werden dem Fachmann angesichts der folgenden detaillierten Beschreibung und der begleitenden Zeichnungen klar werden.
  • Kurze Beschreibung der Zeichnungen
  • Fig. 1 ist eine schematische Darstellung der Erfindung auf einer stark verallgemeinerter Ebene;
  • Fig. 2 ist ein Zeitdiagramm für eine Einzelprozessorimplementierung, das die parallele Ausführung bestimmter nicht verriegelter Befehle zeigt, welche innerhalb einer Verbundbefehlsfolge selektiv zusammengesetzt worden sind;
  • Fig. 3 ist ein Zeitdiagramm für eine Multiprozessorimplementierung, das die parallele Ausführung von Skalarbefehlen und von Verbundbefehlen zeigt, die untereinander nicht verriegelt sind;
  • Fig. 4 (dargestellt als Fig. 4A und Fig. 4B) verdeutlicht ein Beispiel für eine mögliche selektive Kategorisierung eines Abschnittes der Befehle, die durch eine vorhandene Skalarmaschine ausgeführt werden;
  • Fig. 5 zeigt den typischen Weg eines Programms vom Quellcode bis zur tatsächlichen Ausführung;
  • Fig. 6 ist ein Ablaufdiagramm, das die Erzeugung eines Programmes mit Verbundbefehlssatz aus einem Programm in Assemblersprache zeigt;
  • Fig. 7 ist ein Ablaufdiagramm, das die Ausführung eines Programmes mit Verbundbefehlssatz zeigt;
  • Fig. 8 ist eine analytische Darstellung von Befehlsfolgetexten mit identifizierbaren Befehlsbezugspunkten;
  • Fig. 9 ist eine analytische Darstellung von Befehlsfolgetexten mit Befehlen veränderlicher Länge ohne Bezugspunkte, die darauf bezogene Sätze möglicher Verbindungs- Identifikatorbits zeigt;
  • Fig. 10 verdeutlicht die logische Implementierung einer Einrichtung für die Erzeugung von Verbundbefehlen zur Verarbeitung des Befehlsfolgetextes von Fig. 9;
  • Fig. 11 ist ein Ablaufdiagramm für die Bildung von Verbundbefehlen in einer Befehlsfolge, die Bezugsmarkierungen besitzt, um Befehlsgrenzen-Bezugspunkte zu identifizieren;
  • Fig. 12 zeigt ein beispielhaftes Steuerfeld eines Verbundbefehls;
  • Fig. 13 ist ein Ablaufdiagramm zur Entwicklung und Verwendung von Verbindungsregeln, die auf eine spezifische Hardwarekonfiguration eines Computersystems und dessen speziell aufgebauten Befehlssatz angewandt werden können;
  • Fig. 14 zeigt, wie unterschiedliche Gruppierungen gültiger nicht verriegelter Befehlspaare Mehrfach-Verbundbefehle zur sequentiellen oder Verzweigungsziel-Ausführung bilden;
  • Fig. 15 zeigt, wie unterschiedliche Gruppierungen gültiger nicht verriegelter Befehlstriplets Mehrfach-Verbundbefehle zur sequentiellen oder Verzweigungsziel-Ausführung bilden;
  • Fig. 16 (dargestellt als Fig. 16A und Fig. 16B) ist ein Ablaufdiagramm für die Verbindung von Befehlen einer Befehlsfolge, wie der in Fig. 9 dargestellten, welche Befehle unterschiedlicher Länge ohne Grenzenbezugspunkte enthält; und
  • Fig. 17 ist ein Diagramm, das typische verbindungsfähige Paare von Befehlskategorien für den in Fig. 4 dargestellten Teil des Befehlssatzes des System/370 zeigt.
  • Detaillierte Beschreibung von Ausführungsformen der Erfindung
  • Das wesentliche Merkmal der vorliegenden Erfindung ist die Vorverarbeitung eines Satzes Befehle oder eines Programms, das durch einen Computer ausgeführt werden soll, um statisch festzustellen, welche nicht verriegelten Befehle als Verbundbefehle zusammengesetzt werden können, sowie das Anhängen von Steuerinformationen zur Identifikation solcher Verbundbefehle. Eine solche Feststellung basiert auf Verbindungsregeln, die für einen Befehlssatz einer speziellen Architektur abgeleitet werden. Vorhandene Skalarbefehle werden auf der Grundlage der Analyse ihrer Operanden, der Hardwareausnutzung und Funktion in Kategorien unterteilt, so daß die Gruppierung von Befehlen durch die Verbundbildung zum Verhindern nicht auflösbarer Verriegelungen auf der Grundlage des Vergleichs der Befehlskategorien anstatt des Vergleichs spezifischer einzelner Befehle erfolgt.
  • Wie in den verschiedenen Zeichnungen dargestellt und hiernach detaillierter beschrieben wird, dient die Erfindung, die als Maschine für skalierbaren Verbundbefehlssatz (SCISM - Scalable Compound Instruction Set Machine) bezeichnet wird, zur Vorverarbeitung einer Folge von Skalarbefehlen, die vor dem Zeitpunkt der Befehsldecodierung zusammengesetzt oder gruppiert werden sollen, so daß sie für eine selektive, gleichzeitige parallele Ausführung durch geeignete Befehlsverarbeitungseinheiten markiert und gekennzeichnet sind. Weil eine solche Verbindung von Befehlen den Objektcode nicht verändert, erfahren vorhandene Programme eine Verbesserung ihrer Leistungsfähigkeit, während die Kompatibilität zu vorhergehend implementierten Systemen aufrechterhalten wird.
  • Wie in Fig. 1 allgemein dargestellt wird, verarbeitet eine Verbindungseinheit 20 eine Folge binärer Skalarbefehle 21 (mit oder ohne darin enthaltenen Daten) und führt eine selektive Gruppierung einiger benachbarter Skalarbefehle aus, um codierte Verbundbefehle zu bilden. Eine sich ergebende Verbundbefehlsfolge 22 kombiniert somit Skalarbefehle, die nicht parallel ausgeführt werden können, und Verbundbefehle, die aus Gruppen von Skalarbefehlen gebildet worden sind, welche parallel ausgeführt werden können. Wenn ein Skalarbefehl an eine Befehlsverarbeitungseinheit 24 angelegt wird, wird er zur seriellen Ausführung an die geeignete Funktionseinheit weitergeleitet. Wenn ein Verbundbefehl an eine Befehlsverarbeitungseinheit 24 angelegt wird, werden seine skalaren Komponenten zur gleichzeitigen parallelen Ausführung jeweils an die für diese geeigneten Funktionseinheiten oder die Einrichtung zur Auflösung von Verriegelungen weitergeleitet. Typische Funktionseinheiten umfassen eine Arithmetik-Logik-Einheit (ALU) 26, 28, eine Gleitpunkt-Arithmetikeinheit (FP) 30 und eine Einheit zur Erzeugung der Speicheradressen (AU) 32, sind jedoch nicht darauf beschränkt. Eine beispielhafte Einrichtung zur Auflösung von datenabhängigen Verriegelungen wird in der EP-A-451 562 mit dem Titel "Data Dependency Collapsing Hardware Apparatus" offenbart.
  • Es sollte verstanden werden, daß die Technik der Erfindung beabsichtigt, die parallele Ausgabe und Verarbeitung von Befehlen in allen Computerarchitekturen zu ermöglichen, die pro Zyklus mehrere Befehle verarbeiten (wenn auch bestimmte Befehle zur Ausführung mehr als einen Maschinenzyklus erfordern).
  • Wie in Fig. 2 dargestellt, kann die Erfindung in einer Einprozessorumgebung implementiert werden, wobei jede funktionelle Verarbeitungseinheit einen Skalarbefehl (S) oder alternativ einen verbundenen Skalarbefehl (CS) ausführt. Wie in der Zeichnung dargestellt ist, besitzt eine Befehlsfolge 33, die eine Folge von Skalarbefehlen sowie verbundenen Skalarbefehlen enthält, Steuermarkierungen (T), die jedem Verbundbefehl zugeordnet sind. Somit könnte in Zyklus 1 ein erster Skalarbefehl 34 nur durch die Funktionseinheit A ausgeführt werden; die drei verbundenen Skalarbefehle eines Triplet-Verbundbefehls 36, der durch die Markierung T3 gekennzeichnet wird, könnten in Zyklus 2 durch die Funktionseinheiten A, C und D parallel ausgeführt werden; das Paar verbundener Skalarbefehle eines weiteren Verbundbefehls 38, gekennzeichnet durch die Markierung T2, könnte in Zyklus 3 parallel durch die Funktionseinheiten A und B ausgeführt werden; ein zweiter Skalarbefehl 40 könnte allein durch die Funktionseinheit C in Zyklus 4 ausgeführt werden; die vier verbundenen Skalarbefehle eines umfangreichen Verbundbefehls 42 könnten durch die Funktionseinheiten A bis D in Zyklus 5 parallel ausgeführt werden; und ein dritter Skalarbefehl 44 könnte nur durch die Funktionseinheit A in Zyklus 6 ausgeführt werden.
  • Es ist wichtig zu erkennen, daß Mehrfach-Verbundbefehle in bestimmten Konfigurationen von Computersystemen parallel ausgeführt werden können. Zum Beispiel könnte die Erfindung möglicherweise in einer Multiprozessorumgebung implementiert werden, wie sie in Fig. 3 dargestellt ist, worin ein Verbundbefehl als eine Einheit zur parallelen Verarbeitung durch eine der CPUs (zentrale Verarbeitungseinheiten) behandelt wird. Wie in der Zeichnung dargestellt und im folgenden beschrieben wird, könnte dieselbe Befehlsfolge 33 in nur zwei Zyklen verarbeitet werden. In einem ersten Zyklus führt die CPU Nr. 1 den ersten Skalarbefehl 34 aus; die Funktionseinheiten einer CFU Nr. 2 führen den Triplet-Verbundbefehl 36 aus; und die Funktionseinheiten einer CPU Nr. 3 führen die zwei verbundenen Skalarbefehle des Verbundbefehls 38 aus. In einem zweiten Zyklus führt die CPU Nr. 1 den zweiten Skalarbefehl 40 aus; die Funktionseinheiten der CPU Nr. 2 führen die vier verbundenen Skalarbefehle des Verbundbefehls 42 aus; und eine Funktionseinheit der CPU Nr. 3 führt den dritten Skalarbefehl 44 aus.
  • Ein Beispiel einer Computerarchitektur, welche an die Verarbeitung von Verbundbefehlen angepaßt werden kann, ist die Befehlsebenenarchitektur des IBM System/370, in welcher in jedem Maschinenzyklus eine Vielzahl Skalarbefehle zur Ausführung ausgegeben werden können. In diesem Zusammenhang bezieht sich Maschinenzyklus auf alle Schritte oder Stufen der Pipeline, die zur Ausführung eines Skalarbefehls erforderlich sind. Ein Skalarbefehl verarbeitet Operanden, die einwertige Parameter sind. Wenn in einer Befehlsfolge Befehle verbunden werden, werden benach barte Skalarbefehle zum Zweck der gleichzeitigen oder parallelen Ausführung selektiv gruppiert.
  • Die Befehlssätze für verschiedene Architekturen des IBM System/370, wie beispielsweise System/370, System/370 extended architecture (370-XA) und System/370 Enterprise Systems Architecture (370-ESA), sind wohlbekannt. Unter diesem Gesichtspunkt wird hier Bezug genommen auf Principles of Operation of the IBM System/370 (Veröffentlichung Nr. GA22-7000-10, 1987) und auf Principles of Operation IBM Enterprise Systems Architecture/370 (Veröffentlichung Nr. SA22-7200-0, 1988).
  • Im allgemeinen wird eine Befehlsverbindungseinheit nach Befehlsklassen suchen, die parallel ausgeführt werden können, und sicherstellen, daß keine Verriegelungen zwischen Elementen eines Verbundbefehls vorhanden sind, die nicht durch die Hardware behandelt werden können. Wenn kompatible Folgen von Befehlen gefunden werden, wird ein Verbundbefehl erzeugt.
  • Im besonderen kann der Befehlssatz des System/370 in Kategorien von Befehlen unterteilt werden, die in einer speziellen Konfiguration eines Computersystems parallel ausgeführt werden können. Befehle innerhalb bestimmter dieser Kategorien können zum Bilden eines Verbundbefehls mit Befehlen derselben Kategorie oder mit Befehlen aus bestimmten anderen Kategorien kombiniert oder zusammengesetzt werden. Zum Beispiel kann ein Teil des Befehlssatzes des System/370 in die in Fig. 4 dargestellten Kategorien unterteilt werden. Die logische Grundlage für die Kategorieneinteilung basiert auf den funktionellen Anforderungen der Befehle des System/370 und deren Hardwareausnutzung in typischen Computersystemkonfigurationen. Der Rest der Befehle des System/370 wird für die Bildung von Verbundbefehlen in dieser beispielhaften Ausführungsform nicht betrachtet. Dies schließt sie jedoch nicht davon aus, mit Verfahren und Techniken der hier offenbarten vorliegenden Erfindung zu Verbundbefehlen zusammengesetzt zu werden. Es ist zu beachten, daß die für die Ausführung von Verbundbefehlen erforderlichen Hardwarestrukturen durch einen horizontalen Mikrocode einfach gesteuert werden können, wodurch die Ausnutzung der Parallelverarbeitung unter Einbeziehung der verbleibenden Befehle ermöglicht wird, die bezüglich der Verbundbefehlbildung hier nicht betrachtet werden und in die Kategorien von Fig. 4 nicht einbezogen worden sind, und wodurch also die Leistungsfähigkeit erhöht wird.
  • Eine der am weitesten verbreiteten Befehlsfolgen in Programmen des System/370 ist die Ausführung eines Vergleichsbefehls COMPARE im TM- oder RX-Format (C, CH, CL, CLI, CLM) dessen Ergebnis verwendet wird, um einen bedingten Verzweigungsbefehl BRANCH-on- condition (BC, BCR) zu steuern, der unmittelbar folgt. Die Leistungsfähigkeit kann verbessert werden, indem die Befehle COMPARE und BRANCH parallel ausgeführt werden, und dies ist in Hochleistungs-Befehlsprozessoren dynamisch manchmal schon gemacht worden. Einige Schwierigkeiten bestehen in der schnellen Identifikation aller verschiedenen Mitglieder der COMPARE-Befehlsklasse und aller Mitglieder der BRANCH-Befehlsklasse einer typischen Architektur während des Befehlsdecodierprozesses. Dies ist ein Grund dafür, warum Superskalarmaschinen normalerweise nur eine kleine Anzahl spezifischer Skalarbefehle für die mögliche Parallelverarbeitung betrachten. Im Gegensatz dazu wird durch die Erfindung eine solche begrenzte dynamische Zeitplanung auf Basis des "in letzter Minute" stattfindenden Vergleichs zweier spezieller Befehle vermieden, weil die Analyse aller Klassenmitglieder zeitlich eher durchgeführt wird, um adäquate Verbindungsregeln für die Erzeugung von Verbundbefehlen, die mit Sicherheit arbeiten, abzuleiten.
  • Das erhebliche Problem, das aus der dynamischen Zeitplanung einzelner Befehle nach dem Befehlsabruf entsteht, wird durch die Erkenntnis deutlich, daß das Bilden eines Zweifach-Verbundbefehls aus den siebenundfünfzig einzelnen Befehlen von Fig. 4 eine 57 x 57 Matrix mit mehr als dreitausend möglichen Kombinationen erzeugt. Dies ist ein krasser Gegensatz zu der 10 x 10 Matrix von Fig. 17 für dieselbe Anzahl Befehle, betrachtet unter dem Gesichtspunkt möglicher Kombinationen der Kategorien, wie sie durch die vorliegende Erfindung bereitgestellt werden.
  • Viele Befehlsklassen können in Abhängigkeit vom Hardwareentwurf parallel ausgeführt werden. Zusätzlich zu den oben beschriebenen, verbindbaren COMPARE-BRANCH-Paaren können viele weitere zusammengesetzte Kombinationen parallel ausgeführt werden (siehe Fig. 17), wie beispielsweise Ladebefehle LOAD (Kategorie 7) verbunden mit Befehlen im RR-Format (Kategorie 1), Verzweigungen BRANCH (Kategorien 3 bis 5) verbunden mit Adreßladen LOAD ADDRESS (Kategorie 8) und dergleichen.
  • In einigen F-.llen beeinflußt die Reihenfolge der Befehlsfolge die Möglichkeit der parallelen Ausführung und bestimmt damit, ob zwei benachbarte Befehle verbunden werden können. Unter diesem Gesichtspunkt kennzeichnen die Zeilenköpfe 45 die Kategorie des ersten Befehls innerhalb einer Bytefolge, und die Spaltenüberschriften 47 kennzeichnen die Kategorie des nächsten Befehls, der dem ersten Befehl folgt. Zum Beispiel können Verzweigungen BRANCH (Kategorien 3 bis 5) gefolgt von bestimmten Verschiebebefehlen SHIFT (Kategorie 2) immer verbunden werden 49, während Verschiebebefehle SHIFT (Kategorie 2) nur "manchmal" mit folgenden Verzweigungen BRANCH (Kategorien 3 bis 5) verbunden werden dürfen 51.
  • Der Status "manchmal", in der Tabelle von Fig. 17 als "S" gekennzeichnet, kann durch Hinzufügen zusätzlicher Hardware-Funktionseinheiten zur Konfiguration des Computersystems häufig auf "immer", in der Tabelle gekennzeichnet als "A", verändert werden. Zum Beispiel soll eine Konfiguration betrachtet werden, welche eine Zweifach-Verbindung unterstützt und welche keine zusätzliche Einrichtung zum Auflösen von Addition-Verschiebungs- Verriegelungen besitzt, stattdessen aber eine konventionelle ALU und eine separate Verschiebeeinheit. Anders ausgedrückt, es ist keine Verriegelungsauflösungs-Hardware zum Behandeln von verriegelten Additionsbefehlen ADD und Verschiebebefehlen SHIFT vorhanden. Die folgende Befehlsfolge soll betrachtet werden:
  • AR R1,R2
  • SRL R3 by D2
  • Es ist klar, daß dieses Befehlspaar zur parallelen Ausführung verbunden werden kann. Aber in einigen Fällen wäre dies auf Grund einer nicht auflösbaren Verriegelung nicht möglich, wie in der nachfolgenden Befehlsfolge gezeigt wird:
  • AR R1,R2
  • SRL R1 by D2
  • Somit zeigt die Tabelle, daß ein Befehl der Kategorie 1 (AR) manchmal mit einem folgenden Befehl der Kategorie 2 (SRL) verbunden werden kann 53. Wenn eine ALU enthalten ist, die bestimmte Verriegelungen auflöst, wie beispielsweise die oben gezeigten Addition-Verschiebungs-Verriegelungen, könnte das S in der Tabelle von Fig. 17 ein A werden. Dementsprechend müssen die Regeln für die Erzeugung von Verbundbefehlen aktualisiert werden, um alle Veränderungen widerzuspiegeln, die in der speziellen Konfiguration des Computersystems vorgenommen werden.
  • Als zusätzliches Beispiel soll die Zusammensetzung von Befehlen e derkategorie 1 mit Befehlen aus derselben Kategorie in der folgenden Befehlsfolge betrachtet werden:
  • AR R1, R2
  • SR R3, R4
  • Diese Folge ist frei von Datenhasard-Verriegelungen und erzeugt die folgenden Ergebnisse, die zwei unabhängige Befehle des System/370 umfassen:
  • R1 = R1 + R2
  • R3 = R3 - R4
  • Die Ausführung einer solchen Befehlsfolge würde zwei unabhängige und parallele zwei-zu-eins-ALUs in der Architektur der Befehlsebene erfordern. Somit ist verständlich, daß diese zwei Befehle innerhalb einer Computersystemkonfiguration, welche zwei solche ALUs besitzt, zum Bilden eines Verbundbefehls zusammengefaßt werden können. Dieses Beispiel für das Verbinden von Skalarbefehlen kann auf alle Befehlsfolgenpaare verallgemeinert werden, die frei von datenabhängigen Verriegelungen und ebenfalls von hardwareabhängigen Verriegelungen sind.
  • In jedem beliebigen Befehlsprozessor gibt es eine obere Grenze für die Anzahl einzelner Befehle, die ein Verbundbefehl umfassen kann. Diese Obergrenze muß in die Hardware- und/oder Softwareeinheit, welche die Verbundbefehle erzeugt, speziell eingebaut werden, so daß Verbundbefehle nicht mehr einzelne Befehle enthalten (z.B. Paar-Gruppen, Triplet-Gruppen, Vierer-Gruppen) als die unterliegende Hardware maximal hergibt. Diese Obergrenze ist streng genommen eine Konsequenz der Hardwareimplementierung in einer speziellen Computersystemkonfiguration, sie beschränkt weder die Gesamtzahl der Befehle, die als Kandidaten für einen Verbundbefehl betrachtet werden, noch die Größe des Gruppierungsfensters innerhalb einer gegebenen Codefolge, die zum Zweck der Verbundbefehlbildung analysiert werden kann.
  • Im allgemeinen gilt, daß die Parallelität, die auf Grund vorteilhafter Verbundkombinationen erreicht werden kann, umso größer ist, je größer ein Gruppierungsfenster ist, das analysiert wird. Unter diesem Gesichtspunkt wird die Befehlsfolge in nachfolgender Tabelle 1 betrachtet. Tabelle 1
  • Wenn die hardwareseitig bestehende Obergrenze für Verbundbefehle zwei ist (meistens können zwei Befehle in demselben Zyklus parallel ausgeführt werden), dann gibt es eine Anzahl von Wegen, um in dieser Befehlsfolge in Abhängigkeit von der Reichweite der die Verbundbefehle erzeugenden Software Verbundbefehle zu bilden.
  • Wenn die Reichweite der Zusammensetzung gleich vier wäre, dann würde die Verbundbefehle erzeugende Software (X1, X2, LOAD, ADD) gemeinsam betrachten und anschließend jeweils um einen Befehl vorwärts schreiten, um (X2, LOAD, ADD, SUB) und (LOAD, ADD, SUB, COMP) und (ADD, SUB, COMP, X3) und (SUB, COMP, X3, X4) gemeinsam zu untersuchen, und dadurch die folgenden optimalen Paarungen als Kandidaten für Verbundbefehle erzeugen:
  • [--X1] [X2 LOAD] [ADD SUB] [COMP X3] [X4 --]
  • Diese optimalen Paarbildungen, die von der Erfindung bereitgestellt werden, lösen die Verriegelungen zwischen den Befehlen LOAD und ADD sowie zwischen SUB und COMP vollständig auf und stellen zusätzlich die Nöglichkeit der Verbindens von X1 mit dem vor ihm liegenden Befehl und des Verbindens von X4 mit dem ihm nachfolgenden Befehl bereit.
  • Andererseits würde eine Superskalarmaschine, welche die Befehle dynamisch paarweise zusammenfaßt, in ihrer Befehlsausgabelogik auf strenger FIFO-Basis nur die folgenden Paarungen als Kandidaten für die parallele Ausführung erzeugen:
  • [X1 X2] [LOAD ADD] [SUB COMP] [X3 X4]
  • Diese unflexible Paarung unterliegt allen Nachteilen bestimmter Verriegelungsbefehle und zieht nur teilweisen Nutzen aus der Parallelverarbeitung.
  • Der sich selbst erklärende Ablaufplan von Fig. 13 zeigt die verschiedene Schritte, die unternommen werden, um zu bestimmen, welche benachbarten, vorhandenen Befehle innerhalb einer Bytefolge zu Kategorien oder Klassen gehören, welche sie für eine Gruppierung zum Bilden von Verbundbefehlen für eine spezielle Computersystemkonfiguration empfehlen.
  • Bezugnehmend auf Fig. 5 gibt es viele mögliche Orte innerhalb eines Computersystems, an denen die Bildung der Verbundbefehle vorgenommen werden kann, sowohl in der Software als auch in der Hardware. Jeder hat eindeutige Vorteile und Nachteile. Wie in Fig. 5 dargestellt, gibt es eine Vielzahl Stadien, die ein Programm vom Quellcode bis zur eigentlichen Ausführung typischerweise durchläuft. Während der Compilierungsphase wird ein Quellprogramm in Maschinencode übersetzt und auf einer Speicherplatte 46 gespeichert. Während der Ausführungsphase wird das Programm von der Platte 46 gelesen und in den Hauptspeicher 48 einer speziellen Computersystemkonfiguration 50 geladen, worin die Befehle durch geeignete Befehlsverarbeitungseinheiten 52, 54, 56 ausgeführt werden. Das Bilden von Verbundbefehlen findet irgendwo auf diesem Weg statt. Im allgemeinen werden die Zeitanforderungen um so härter, je näher die Verbindungseinheit an der Befehlsverarbeitungseinheit oder den CPUs angeordnet wird. Wenn die Verbindungseinheit weiter entfernt von der CPU angeordnet wird, können mehr Befehle in einem groß gewählten Befehlsfolgefenster untersucht werden, um für die Verbindung von Befehlen zur Erhöhung der Leistungsfähigkeit der Programmausführung die beste Gruppierung zu bestimmen. Eine so frühzeitige Verbindung von Befehlen hat jedoch tendenziell einen negativen Einfluß auf den übrigen Systementwurf bezüglich zusätzlicher Entwicklungs- und Kostenanforderungen.
  • Eine der wesentlichen Aufgaben der Erfindung besteht darin, eine Technik bereitzustellen, um vorhandene Programme, die in existierenden Hochsprachen geschrieben sind, oder vorhandene Assemblerprogramme durch Softwaremittel zu verarbeiten, welche Folgen benachbarter Befehle identifizieren können, die durch einzelne Funktionseinheiten parallel ausgeführt werden können.
  • Der Ablaufplan von Fig. 6 zeigt die Erzeugung eines Programms mit Verbundbefehlssatz aus einem Assemblerprogramm gemäß einem Satz spezifischer Verbindungsregeln 58, welche sowohl das System als auch die Hardwarearchitektur widerspiegeln. Das Assemblerprogramm wird als Eingangsinformation auf eine Software-Verbindungseinheit 59 gegeben. Aufeinanderfolgende Befehlsblöcke, die eine vorgegebene Länge besitzen, werden durch die Software-Verbindungseinheit 59 analysiert. Die Länge jedes Blockes 60, 62, 64 in der Bytefolge, welche die Befehlsgruppe enthält, die zur Bildung von Verbundbefehlen zusammen betrachtet wird, ist von der Komplexität der Verbindungseinheit abhängig.
  • Wie in Fig. 6 dargestellt, ist diese spezielle Verbindungseinheit so ausgelegt, daß die Bildung von Zweifach-Verbundbefehlen aus einer Anzahl von "m" Befehlen fester Länge in jedem Block erfolgt. Der erste Hauptschritt besteht darin zu überprüfen, ob der erste und der zweite Befehl ein verbindungsfähiges Paar bilden, und dann ob der zweite und der dritte ein verbindungsfähiges Paar bilden, und dann ob der dritte und der vierte ein verbindungsfähiges Paar bilden, und immer so weiter bis an das Ende des Blockes.
  • Wenn die verschiedenen möglichen verbindungsfähigen Paare C1 bis C5 identifiziert worden sind, besteht ein weiterer, sehr wünschenswerter Schritt darin, die optimale Auswahl von Verbundbefehlen zu finden, die zur parallelen Ausführung durch benachbarte Skalarbefehle gebildet werden. Im dargestellten Beispiel sind die folgenden unterschiedlichen Folgen von Verbundbefehlen möglich (unter der Voraussetzung, daß keine Verzweigung auftritt) I1, C2, I4, I5, C3, C5, I10; I1, C2, I4, I5, I6, C4, I9, I10; C1, I3, I4, 15, C3, C5, I10; C1, I3, I4, I5, I6, C4, I9, I10.
  • Auf der Grundlage der speziellen Hardwarekonfiguration kann die Verbindungseinheit die bevorzugte Folge von zusammengesetzten Befehlen auswählen und Markierungsbits oder Identifikationsbits benutzen, um die optimale Folge von Verbundbefehlen zu kennzeichnen.
  • Wenn es keine optimale Folge gibt, können alle verbindungsfähigen, benachbarten Skalarbefehle gekennzeichnet werden, so daß eine Verzweigung zu einem Ziel, das zwischen verschiedenen Verbundbefehlen liegt, beliebige zusammentreffende Verbundbefehlspaare benutzen kann (siehe Fig. 14). Wenn mehrere Verbindungseinheiten verfügbar sind, könnten in einer Vielzahl aufeinanderfolgender Blöcke einer Befehlsfolge gleichzeitig Befehle verbunden werden.
  • Der spezielle Entwurf einer Software-Verbindungseinheit wird hier nicht diskutiert, weil die Details für eine gegebene Befehlssatzarchitektur und die unterliegende Implementierung einzigartig sind. Wenn auch der Entwurf eines solchen Verbundbefehl-Generierprogramms in gewisser Weise konzeptionell dem moderner Compiler gleicht, welche auf der Basis einer speziellen Maschinenarchitektur eine Befehlsablaufplanung und andere Optimierungen vornehmen, so sind die Kriterien, die zur vollständigen Durchführung einer solchen Verbundbefehlsbildung verwendet werden, für die vorliegende Erfindung eindeutig, so wie sie am besten in dem Ablaufdiagramm von Fig. 13 dargestellt sind. In beiden Fällen sind ein Eingangsprogramm und eine Beschreibung des Befehlssatzes und auch der Hardwarearchitekturen (d.h. der strukturellen Aspekte der Implementierung) vorhanden, und es wird ein Ausgangsprogramm erzeugt. Im Fall der Erfindung besteht die Ausgabe aus einer Folge von Verbundbefehlen, von denen jeder aus einer Gruppe benachbarter Skalarbefehle gebilDet wird, die parallel ausgeführt werden können, wobei die Verbundbefehle mit nicht verbundenen Skalarbefehlen gemischt sind und wobei die zur Ausführung der Verbundbefehle erforderlichen Steuerbits als Teil der Ausgabe enthalten sind.
  • Natürlich ist es einfacher, eine Befehlsfolge zum Zweck der Erzeugung von Verbundbefehlen vorzuverarbeiten, wenn bereits bekannte Bezugspunkte vorhanden sind, um anzuzeigen, wo Befehle beginnen. Wie hierin verwendet, bedeutet ein Bezugspunkt ein Markierungsfeld oder eine andere Anzeige, welche Informationen über den Ort der Befehlsgrenzen bereitstellt. In vielen Computersystemen ist ein solcher Bezugspunkt nur dem Compiler zum Zeitpunkt der Compilierung und der CPU beim Abrufen von Befehlen ausdrücklich bekannt. Ein solcher Bezugspunkt ist zwischen der Compilierung und dem Befehlsabruf unbekannt, wenn nicht ein spezielles Bezugs-Markierungsschema eingeführt wird.
  • Wenn die Bildung der Verbundbefehle nach der Compilierung stattfindet, könnte ein Compiler durch Bezugsmarkierungen anzeigen (siehe Fig. 11), welche Bytes das erste Byte eines Befehls enthalten und welche Daten enthalten. Diese separate Information führt zu einer effektiveren Verbindungseinheit, weil genaue Befehlsorte bekannt sind. Natürlich könnte der Compiler Befehle identifizieren und zwischen Daten und Befehlen auf andere Weise unterscheiden, um die Verbindungseinheit mit spezifischen Informationen zu versorgen, die die Befehlsgrenzen anzeigen.
  • Wenn eine solche Befehlsgrenzeninformation bekannt ist, erfolgt die Erzeugung der geeigneten Verbundbefehls-Identifikatorbits in geradliniger Weise auf der Grundlage der Verbindungsregeln, die für eine spezielle Architektur und Konfiguration der Systemhardware entwickelt worden sind (siehe Fig. 8). Wenn eine solche Befehlsgrenzeninformation nicht bekannt ist und die Befehle unterschiedliche Längen besitzen, besteht ein komplexeres Problem (siehe Fig. 9 und 16). Übrigens beruhen diese Figuren auf einem bevorzugten Codierschema, das detaillierter in unten stehender Tabelle 2A beschrieben wird, wobei die Erzeugung von Zweifach- Verbundbefehlen ein Markierungsbit "1" bereitstellt, wenn ein Befehl mit dem nächsten Befehl verbunden wird, sowie ein Markierungsbit "0" wenn er nicht mit dem nächsten Befehl verbunden wird.
  • Die Steuerbits in einem Steuerfeld, das durch eine Verbindungseinheit hinzugefügt wird, enthalten Informationen, die für die Ausführung von Verbundbefehlen relevant sind, und können so viele oder so wenige Informationen enthalten, wie es für eine spezielle Implementierung für erforderlich gehalten wird. Ein beispielhaftes 8-Bit-Steuerfeld ist in Fig. 12 dargestellt. Jedoch ist in der einfachsten Ausführungsform nur das erste Steuerbit erforderlich, um den Beginn eines Verbundbefehls anzuzeigen. Die anderen Steuerbits stellen zusätzliche optionale Informationen bereit, die die Ausführung der Befehle betreffen.
  • In einem alternativen Codiermuster für zusammengesetzte Befehle, das sowohl auf Zweifach-Verbundbefehle als auch auf aus größeren Gruppen bestehende Verbundbefehle angewandt werden kann, wird ein erstes Steuerbit auf "1" gesetzt, um anzuzeigen, daß der entsprechende Befehl den Beginn eines Verbundbefehls bezeichnet. Die ersten Steuerbits aller anderen Mitglieder des Verbundbefehls sind auf "0" gesetzt. In Fällen in denen nicht möglich ist, einen gegebenen Befehl mit anderen Befehlen zu kombinieren, erscheint ein solcher gegebener Befehl als ein Verbundbefehl der Länge eins. Das heißt, das erste Steuerbit ist auf "1" gesetzt, aber das erste Steuerbit des folgenden Befehls ist ebenfalls auf "1" gesetzt. Bei diesem alternativen Codierschema ist die decodierende Hardware durch Überwachung aller Identifikatorbits einer Folge von Skalarbefehlen, anstatt der Überwachung lediglich des Identifikatorbits für den Beginn eines Verbundbefehls, wie in dem bevorzugten Codierschema unten stehender Tabellen 2A bis 2C, in der Lage zu erkennen, wieviele Befehle ein Verbundbefehl umfaßt.
  • Das Ablaufdiagramm von Fig. 7 zeigt eine typische Implementierung zur Ausführung eines Programms mit Verbundbefehlssatz, welches durch einen Hardware-Vorprozessor 66 oder einen Software- Vorprozessor 67 erzeugt worden ist. Eine Bytefolge, die Verbundbefehle besitzt, wird in einen Verbundbefehl (CI) -Cache 68 eingegeben, der als Pufferspeicher dient, welcher einen schnellen Zugriff auf Verbundbefehle ermöglicht. Die CI-Ausgabelogik 69 holt Verbundbefehle aus dem CI-Cache und gibt deren einzelne verbundene Befehle zur parallelen Ausführung an geeignete Funktionseinheiten aus.
  • Es soll unterstrichen werden, daß die Verbundbefehl-Verarbeitungseinheiten (CI EU) 71, wie beispielsweise ALUs, in einem Verbundbefehl-Computersystem in der Lage sind, entweder Skalarbefehle nacheinander oder alternativ verbundene Skalarbefehle parallel zu anderen verbundenen Skalarbefehlen auszuführen.
  • Ebenfalls kann entsprechend der Gomputerarchitektur und der spezifischen Konfiguration des Computersystems eine solche parallele Ausführung in verschiedenen Typen Funktionseinheiten, wie beispielsweise ALUs, Gleitpunkteinheiten (FP) 731 Einheiten zur Erzeugung der Speicheradressen (AU) 75 oder in einer Vielzahl von Einheiten desselben Typs (FP1, FP2, usw.) erfolgen. Somit sind die Hardwarekonfigurationen, in welchen die vorliegende Erfindung implementiert werden kann, bis zu einer praktisch unbegrenzten Anzahl Funktionseinheiten skalierbar, um eine maximale Leistungsfähigkeit der Parallelverarbeitung zu erhalten. Die Zusammensetzung verschiedener vorhandener Befehle zu einem einzelnen Verbundbefehl gestattet es, daß eine oder mehrere Befehlsverarbeitungseinheiten innerhalb eines Computersystems solche zusammengesetzten vorhandenen Befehle ohne Verzögerung, die in konventionellen Parallelverarbeitungs-Computersystemen auftritt, effektiv parallel decodieren und ausführen.
  • In den einfachsten Codierschemata der vorliegenden Patentanmeldung wird der Befehlsfolge nur eine minimale Verbindungsinformation hinzugefügt, ein Bit für je zwei Textbytes (Befehle und Daten). Im allgemeinen kann eine Markierungen enthaltende Steuerinformation zu jedem Befehl der Verbundbefehle enthaltenden Bytefolge, das heißt, zu jedem nicht verbundenen Skalarbefehl sowie zu jedem in einem Paar, einem Triplet oder einer größeren, verbundenen Gruppe eingebundenen Skalarbefehl, hinzugefügt werden. Identifikatorbits beziehen sich, wie hierin verwendet, auf den Teil der Markierung, der speziell dazu verwendet wird, um solche verbundenen Skalarbefehle, die eine verbundene Gruppe bilden, zu identifizieren und von den verbleibenden nicht verbundenen Skalarbefehlen zu unterscheiden. Solche nicht verbundenen Skalarbefehle bleiben in dem Verbundbefehlprogramm erhalten und werden, wenn sie abgerufen werden, einzeln ausgeführt.
  • In einem System mit lediglich 4-Byte-Befehlen, die an einer Vier-Byte-Grenze ausgerichtet sind, wird eine Markierung je vier Textbytes zugeordnet. Genauso wird für jedes Textbyte eine Markierung benötigt, wenn die Befehle zufällig angeordnet sein können.
  • In der hierin dargestellten Ausführungsform, in der alle Befehle des System/370 an einer Halbwortgrenze (zwei Bytes) ausgerichtet sind und eine Länge von zwei oder vier oder sechs Bytes haben können, wird eine Markierung mit Identifikatorbits für jedes Halbwort benötigt. In einem Beispiel für die Bildung kleiner Gruppen aus verbundenen Paaren benachbarter Befehle, zeigt ein Identifikatorbit "1" an, daß der mit dem betrachteten Byte beginnende Befehl mit dem folgenden Befehl verbunden ist, während eine "0" anzeigt, daß der mit dem betrachteten Byte beginnende Befehl nicht verbunden ist. Das Identifikatorbit, das Halbworten zugeordnet ist, die kein erstes Byte eines Befehls enthalten, wird ignoriert. Das Identifikatorbit des ersten Bytes des zweiten Befehls innerhalb eines verbundenen Paares wird ebenfalls ignoriert. (Jedoch werden diese Identifikatorbits in einigen Situationen von Verzweigungen nicht ignoriert.) Im Ergebnis bedeutet dieses Godierverfahren für die Identifikatorbits, daß im einfachsten Fall der Zweifach-Verbundbefehle durch die CPU während der Befehlsausführung nur ein Informationsbit benötigt wird, um einen Verbundbefehl zu identifizieren.
  • Wo mehr als zwei Skalarbefehle zusammengesetzt werden können, um einen Verbundbefehl zu bilden, ist es möglich, mit der folgenden Codierung ein Bit pro Befehl zu erhalten: Der Wert "1" bedeutet, mit dem nächste Befehl verbinden, und der Wert "0" bedeutet, nicht mit dem nächsten Befehl verbinden. Ein Verbundbefehl, der aus einer Gruppe von vier einzelnen Befehlen gebildet wird, besitzt eine Folge von Verbundbefehl-Identifikatorbits (1, 1, 1, 0). Wie bei der hierin beschriebenen Ausführung anderer Verbundbefehle werden Verbundbefehl-Identifikatorbits, die Halbworten zugeordnet sind, welche keine Befehle sind und deshalb keinen Operationscode besitzen, zum Zeitpunkt der Ausführung ignoriert.
  • Bei dem bevorzugten Codierschema, das unten detailliert beschrieben wird, ist die minimale Anzahl Identifikatorbits, die benötigt werden, um die zusätzliche Information der Anzeige der spezifischen Anzahl von tatsächlich verbundenen Skalarbefehlen bereitzustellen, gleich dem Logarithmus zur Basis 2 (aufgerundet auf den nächsten ganzzahligen Wert) der maximalen Anzahl von Skalarbefehlen, die zusammengesetzt werden können, um einen Verbundbefehl zu bilden. Zum Beispiel wird, wenn dieses Maximum zwei ist, ein Identifikatorbit für jeden Verbundbefehl benötigt. Wenn das Maximum drei oder vier ist, dann werden zwei Identifikatorbits für jeden Verbundbefehl benötigt. Wenn das Maximum fünf, sechs, sieben oder acht ist, dann werden drei Identifikatorbits für jeden Verbundbefehl benötigt. Dieses Codierschema wird unten in den Tabellen 2A, 2B und 2C dargestellt. TABELLE 2A (Maximum von zwei) TABELLE 28 (Maximum von vier) TABELLE 2C (Maximum von acht)
  • ihm folgenden sieben Befehlen verbunden
  • Es wird somit verstanden werden, daß jedes Halbwort eine Markierung benötigt, die CPU jedoch unter den Bedingungen dieses bevorzugten Codierschemas bis auf die Markierung für den ersten Befehl in der auszuführenden Befehlsfolge alle Markierungen ignoriert. Anders ausgedrückt, ein Byte wird durch Überprüfung seiner Identifikatorbits untersucht, um festzustellen, ob ein Verbundbefehl vorliegt. Wenn es sich nicht um den Beginn eines Verbundbefehls handelt, sind seine Identifikatorbits null. Wenn das Byte den Beginn eines Verbundbefehls darstellt, der zwei Skalarbefehle enthält, sind die Identifikatorbits "1" für den ersten Befehl und "0" für den zweiten Befehl. Wenn das Byte den Beginn eines Verbundbefehls darstellt, der drei Skalarbefehle enthält, sind die Identifikatorbits "2" für den ersten Befehl und "1" für den zweiten Befehl und "0" für den dritten Befehl. Anders ausgedrückt, die Identifikatorbits jedes Halbwortes bestimmen, ob dieses spezielle Byte den Beginn eines Verbundbefehls darstellt oder nicht, während gleichzeitig die Anzahl der Befehle, die die verbundene Gruppe bilden, angezeigt wird.
  • Diese beispielhaften Verfahren der Codierung von Verbundbefehlen setzen voraus, daß, wenn drei Befehle verbunden werden, um eine Triplet-Gruppe zu bilden, der zweite und der dritte Befehl ebenfalls verbunden werden, um eine Paar-Gruppe zu bilden. Anders ausgedrückt, wenn eine Verzweigung zum zweiten Befehl einer Triplet-Gruppe erfolgt, zeigt das Identifikatorbit "1" für den zweiten Befehl an, daß der zweite und der dritte Befehl als verbundenes Paar parallel ausgeführt werden, auch dann, wenn der erste Befehl aus der Triplet-Gruppe nicht ausgeführt worden ist.
  • Natürlich ist die Erfindung nicht auf dieses speziell bevorzugte Codierschema begrenzt. Verschiedene weitere Codierregeln, wie beispielsweise das im vorhergehenden beschriebene alternative Codierschema, sind im Rahmen des erfindungsgemäßen Gedankens und der Lehren der Erfindung möglich.
  • Es wird für den Fachmann ersichtlich, daß die vorliegende Erfindung die Bildung von Verbundbefehlen innerhalb einer Befehlsfolge für eine spezielle Computersystemkonfiguration nur einmal erforderlich macht, und daß anschließend jeder Abruf der verbundenen Befehle ebenfalls einen Abruf der diesen zugeordneten Identifikatorbits bewirkt. Dies verhindert die Notwendigkeit der uneffektiven, in letzter Minute stattfindenden Bestimmung und Auswahl verschiedener Skalarbefehle zur parallelen Ausführung, die jedes Mal vorgenommen wird, wenn in der sogenannten Superskalarmaschine dieselben oder andere Befehle zur Ausführung abgerufen werden.
  • Trotz der Vorteile der Bildung von Verbundbefehlen innerhalb einer binären Befehlsfolge wird es schwierig, dies bei unterschiedlichen Gomputerarchitekturen zu tun, wenn nicht eine Technik entwickelt wird, um innerhalb einer Bytefolge die Befehlsgrenzen zu bestimmen. Eine solche Bestimmung wird verkompliziert, wenn Befehle veränderlicher Länge zugelassen sind, und wird weiter erschwert, wenn Daten und Befehle gemischt vorliegen können und wenn gestattet wird, daß unmittelbar in der Befehlsfolge Modifikationen vorgenommen werden. Natürlich müssen zum Zeitpunkt der Ausführung die Befehlsgrenzen bekannt sein, um eine ordnungsgemäße Befehlsausführung zu ermöglichen. Weil jedoch die Erzeugung der Verbundbefehle vorzugsweise hinreichend vor der Befehlsausführung erfolgt, ist eine eindeutige Technik entwickelt worden, um Befehle zu verbinden, ohne daß Kenntnisse darüber vorliegen, wo der Befehl beginnt, und ohne daß Kenntnisse darüber vorliegen, welche Bytes Daten darstellen. Diese Technik wird unten allgemein beschrieben und kann verwendet werden, um Verbundbefehle zu erzeugen, die aus benachbarten Paaren von Skalarbefehlen gebildet werden, sowie um Verbundbefehle zu erzeugen, die aus größeren Gruppen von Skalarbefehlen gebildet werden. Diese Technik ist auf alle Befehlssätze verschiedener konventioneller Architekturtypen, einschließlich der RISC-Architekturen (Reduced Instruction Set Computers - Computer mit reduziertem Befehlssatz) anwendbar, in welchen Befehle normalerweise eine konstante Länge besitzen und nicht mit Daten vermischt sind. Zusätzliche Details dieser Verbindungstechnik werden in der EP-A-0 454 984 mit dem Titel "General Purpose Compounding Technique For Instruction-Level Parallel Processors" offenbart.
  • Allgemein gesagt, dient die Verbindungstechnik zum Verbinden von zwei oder mehreren Skalarbefehlen einer Befehlsfolge ohne Kenntnisse über den Anfangspunkt oder die Länge jedes einzelnen Befehls. Typische Befehle enthalten auf einem vorgegebenen Feldort bereits einen Operationscode, welcher den Befehl und dessen Länge kennzeichnet. Solche benachbarte Befehle, die zur parallelen Ausführung in einer speziellen Computersystemkonfiguration geeignet sind, werden mit entsprechenden Markierungen versehen, um ihre Anwartschaft an die Bildung von Verbundbefehlen anzuzeigen. In der Architektur des IBM System/370, worin Befehle entweder zwei, vier oder sechs Bytes lang sind, werden die Feldpositionen für den Operationscode auf der Grundlage eines geschätzten Befehlslängencodes vorausgesagt. Der Wert jeder Markierung, der auf einem vorhergesagten Operationscode basiert, wird aufgezeichnet, und der Befehlslängencode in dem angenommenen Operationscode wird verwendet, um eine vollständige Folge möglicher Befehle zu lokalisieren. Wenn einmal eine tatsächliche Befehlsgrenze gefunden ist, werden die entsprechenden, richtigen Markierungswerte verwendet, um den Beginn eines Verbundbefehls zu identifizieren, und andere falsch erzeugte Markierungen werden ignoriert.
  • Diese eindeutige Verbindungstechnik wird in den Zeichnungen der Fig. 8 bis 9 und 14 bis 15 beispielhaft dargestellt, worin die Verbindungsregeln definiert werden, um festzulegen, daß alle Befehle, die 2 Bytes oder 4 Bytes lang sind, mit jedem anderen derartigen Befehl verbunden werden können (d.h., ein 2-Byte-Befehl kann in dieser speziellen Computerkonfiguration mit einem anderen 2-Byte-Befehl oder einem anderen 4-Byte-Befehl parallel ausgeführt werden). Die beispielhaften Verbindungsregeln legen weiterhin fest, daß alle Befehle, die 6 Bytes lang sind, nicht mit anderen Befehlen verbunden werden können (d.h., ein 6-Byte- Befehl kann in dieser speziellen Gomputerkonfiguration nur allein ausgeführt werden). Natürlich ist die Erfindung nicht auf diese beispielhaften Verbindungsregeln beschränkt, sondern sie ist auf beliebige Sätze von Verbindungsregeln anwendbar, welche Kriterien für die parallele Ausführung von vorhandenen Befehlen in einer spezifischen Konfiguration für eine gegebene Computerarchitektur definieren.
  • Der Befehlssatz, der in dieser beispielhaften Verbindungstechnik der Erfindung verwendet wird, ist aus der Architektur des System/370 entnommen. Durch Untersuchen des Operationscodes jedes Befehls kann der Typ und die Länge jedes Befehls bestimmt werden, und dann wird die Identifikatorbits enthaltende Steuermarkierung für den speziellen Befehl erzeugt, wie dies hiernach detaillierter beschrieben wird. Natürlich ist die vorliegende Erfindung nicht auf eine beliebige spezifische Architektur oder einen Befehlssatz beschränkt, und die vorstehend erwähnten Verbindungsregeln dienen lediglich Beispielzwecken.
  • Das bevorzugte Codierschema für Verbundbefehle in diesen dargestellten Ausführungsformen ist bereits in oben stehenden Tabellen 2A bis 2C verdeutlicht worden.
  • In einem Ersten Fall mit Befehlen fester Länge, welche nicht mit Daten vermischt sind, und mit einem bekannten Bezugspunktort für den Opereinem Ersten Fall mit Befehlen fester Länge, welche nicht mit Daten vermischt sind, und mit einem bekannten Bezugspunktort für den Operationscode, kann das Zusammenstellen der Verbundbefehle entsprechend der für diese spezielle Computerkonfiguration an wendbaren Regeln vor sich gehen. Weil das für den Operationscode reservierte Feld ebenfalls die Befehlslänge enthält, wird auf einfache Weise eine Folge von Skalarbefehlen bestimmt, und jeder Befehl dieser Folge kann als möglicher Anwärter zur parallelen Ausführung mit dem nächsten Befehl betrachtet werden. Ein erster codierter Wert in der Steuermarkierung zeigt an, daß der Befehl nicht mit dem nächsten Befehl verbunden werden kann, während ein zweiter codierter Wert in der Steuermarkierung anzeigt, daß der Befehl zur parallelen Ausführung mit dem nächsten Befehl verbunden werden kann.
  • In einem Zweiten Fall mit Befehlen veränderlicher Länge, welche nicht mit Daten vermischt sind, und mit einem bekannten Bezugspunktort für den Operationscode und auch für den Befehlslängencode (welcher im System/370 einen Teil des Operationscodes bildet), kann das Zusammenstellen der Verbundbefehle entsprechend routinemäßig vor sich gehen. Wie in Fig. 8 därgestellt, zeigen die Operationscodes eine Befehlsfolge 70 folgendermaßen an: Der erste Befehl ist 6 Bytes lang, der zweite und der dritte sind jeweils 2 Bytes lang, der vierte ist 4 Bytes lang, der fünfte ist 2 Bytes lang, der sechste ist 6 Bytes lang, und der siebente und der achte sind jeweils 2 Bytes lang.
  • Ein in Fig. 8 dargestellter C-Vektor 72 zeigt die Werte für die Identifikatorbits (in den Zeichnungen als Verbindungsbits bezeichnet) für die spezielle Befehlsfolge 70, worin ein Bezugspunkt, der den Beginn des ersten Befehls anzeigt, bekannt ist. Auf der Grundlage der Werte solcher Identifikatorbits bilden der zweite und der dritte Befehl ein verbundenes Paar, wie es durch die "1"im Identifikatorbit für den zweiten Befehl angezeigt wird. Der vierte und der fünfte Befehl bilden ein weiteres verbundenes Paar, wie es durch die "1" im Identifikatorbit für den vierten Befehl angezeigt wird. Der siebente und der achte Befehl bilden ebenfalls ein verbundenes Paar, wie es durch die "1" im Identifikatorbit für den siebenten Befehl angezeigt wird.
  • Der C-Vektor 72 von Fig. 8 ist relativ einfach zu erzeugen, wenn keine Datenbytes mit den Befehlsbytes vermischt sind und wenn alle Befehle alle dieselbe Länge besitzen und die Befehlsgrenzen bekannt sind.
  • Eine andere Situation wird im Dritten Fall vorgestellt, wobei Befehle mit Nicht-Befehlen vermischt sind, wobei immer noch ein Bezugspunkt bereitgestellt wird, um den Beginn eines Befehls anzuzeigen. Die schematische Darstellung in Fig. 11 zeigt eine Möglichkeit der Anzeige eines Befehlsbezugspunktes, wobei jedes Halbwort mit einer Bezugsmarkierung gekennzeichnet wird, um anzuzeigen, ob es das erste Byte eines Befehls enthält oder nicht. Dies könnte sowohl bei Befehlen fester Länge als auch bei Befehlen veränderlicher Länge auftreten. Durch Bereitstellung des Bezugspunktes ist es nicht erforderlich, den Datenanteil der Bytefolge für die Bildung von möglichen Verbundbefehlen abzuschätzen. Dementsprechend kann die Verbindungseinheit alle Nicht-Defehlsbytes überspringen und ignorieren.
  • Eine kompliziertere Situation entsteht, wenn eine Bytefolge Befehle veränderlicher Länge enthält (ohne Daten), aber unbekannt ist, wo ein erster Befehl beginnt. Weil die maximale Befehlslänge sechs Bytes beträgt und weil die Befehle an Zwei-Byte- Grenzen ausgerichtet sind, gibt es für den ersten Befehl der Folge drei mögliche Anfangspunkte. Dementsprechend stellt das Verfahren sicher, daß alle möglichen Anfangspunkte für den ersten Befehl im Text einer Bytefolge 79 betrachtet werden, wie es in Fig. 9 dargestellt ist.
  • In Folge 1 wird angenommen, daß der erste Befehl mit dem ersten Byte beginnt, und die Bildung von Verbundbefehlen läuft unter dieser Voraussetzung ab. In dieser beispielhaften Umgebung ist das Längenfeld ebenfalls für den Wert des C-Vektors für jeden möglichen Befehl bestimmend. Deshalb kann ein C-Vektor 74 für die Folge 1 nur den Wert "1" für den ersten Befehl eines möglichen verbundenen Paares, das aus Kombinationen von 2-Byte und 4- Byte-Befehlen gebildet wird, besitzen.
  • In Folge 2 wird angenommen, daß der erste Befehl mit dem dritten Byte (dem Beginn des zweiten Halbwortes) beginnt, und die Bildung von Verbundbefehlen läuft unter dieser Voraussetzung ab. Der Wert im Längenfeld des dritten Bytes ist 2, was anzeigt, daß der nächste Befehl mit dem fünften Byte beginnt. Durch Fortsetzung der Bearbeitung mit jedem möglichen Befehl auf der Grundlage des Wertes des Längenfeldes im vorhergesagten Befehl werden die gesamten möglichen Befehle der Folge 2 zusammen mit den möglichen Identifikatorbits erzeugt, wie es in dem C-Vektor 76 dargestellt ist.
  • In Folge 3 wird angenommen, daß der erste Befehl mit dem fünften Byte (dem Beginn des dritten Halbwortes) beginnt, und die Bildung von Verbundbefehlen läuft unter dieser Voraussetzung ab. Der Wert im Längenfeld des fünften Bytes ist 4, was anzeigt, daß der nächste Befehl mit dem neunten Byte beginnt. Durch Fortsetzung der Bearbeitung mit jedem möglichen Befehl auf der Grundlage des Wertes des Längenfeldes im vorhergesagten Befehl werden die gesamten möglichen Befehle der Folge 3 zusammen mit den möglichewldentifikatorbits erzeugt, wie es in dem C-Vektor 78 dargestellt ist.
  • In einigen Fällen laufen die drei unterschiedlichen Folgen möglicher Befehle in eine einzige Folge zusammen. In Fig. 9 ist zu beachten, daß die drei Folgen auf Befehlsgrenzen am Ende 80 des achten Bytes zusammenlaufen. Die Folgen 2 und 3 besitzen Unterschiede bei der Bildung der Verbundbefehle bis zum Ende des sechzehnten Bytes, während sie auf Befehlsgrenzen am Ende 82 des vierten Bytes zusammenlaufen. Anders ausgedrückt, die zwei Folgen betrachten unterschiedliche Befehlspaare, die auf derselben Befehlsfolge basieren. Weil das siebzehhte Byte an 84 den Beginn eines nicht verbindungsfähigen Befehls markiert, wird dort der gegeneinander verschobene Gleichlauf beendet.
  • Wenn kein gültiges Zusammenlaufen auftritt, ist es erforderlich, alle drei möglichen Befehlsfolgen bis zum Ende des Fensters fortzuführen. Wenn jedoch ein gültiges Zusammenlaufen auftritt, verringert sich die Anzahl der Folgen von drei auf zwei (eine der identischen Folgen wird unwirksam) und in einigen Fällen von zwei auf eins.
  • Somit werden vor dem Zusammenlaufen vorläufige Befehlsgrenzen für jede mögliche Befehlsfolge bestimmt, und jedem derartigen Befehl werden Identifikatorbits zugeordnet, die den Ort der möglichen Verbundbefehle anzeigen. Aus Fig. 9 wird ersichtlich, daß dieses Verfahren drei separate Identifikatorbits für je zwei Textbytes erzeugt. Um die Widerspruchsfreiheit der Vorverarbeitung, die entsprechend der im vorhergehenden erwähnten ersten, zweiten und dritten Fälle durchgeführt worden ist, zu gewährleisten, ist es wünschenswert, die drei möglichen Folgen auf eine einzelne Folge Identifikatorbits zu verringern, wobei jedem Halbwort nur ein Bit zugeordnet wird. Weil die einzig notwendige Information in der Aussage liegt, ob der aktuelle Befehl mit dem folgenden Befehl verbunden wird, können die drei Bits logisch ODER-verknüpft werden, um in einem CC-Vektor 86 eine einzelne Folge zu erzeugen.
  • Für den Zweck der parallelen Ausführung. sind die zusammengesetzten Identifikatorbits eines zusammengesetzten CC-Vektors den separaten C-Vektoren der drei einzelnen Folgen 1 bis 3 gleichwertig. Anders ausgedrückt, die zusammengesetzten Identifikatorbits in dem CC-Vektor erlauben es, daß eine beliebige der drei möglichen Folgen als Verbundbefehle geeignet parallel oder einzeln als nicht verbundene Befehle ausgeführt wird. Die zusammengesetzten Identifikätorbits arbeiten auch bei Verzweigungen ordnungsgemäß. Wenn zum Beispiel eine Verzweigung auf den Beginn 88 des neunten Bytes ausgeführt wird, dann muß das neunte Byte den Beginn eines Befehls darstellen. Anderenfalls ist ein Programmfehler aufgetreten. Das Identifikatorbit "1", das dem neunten Byte zugeordnet ist, wird verwendet, und eine korrekte parallele Ausführung dieses Befehls mit dem ihm folgenden Befehl läuft ab.
  • Die verschiedenen Schritte des in Fig. 9 gezeigten Verbindungsverfahrens werden( wie sie oben beschrieben wurden, in dem sich selbst erklärenden Ablaufdiagramm von Fig. 16 verdeutlicht.
  • Der beste Zeitpunkt für die Bereitstellung der Bezugspunktinformation über die Befehlsgrenzen ist der Zeitpunkt des Compilierens. Zum Zeitpunkt des Compilierens können Bezugsmarkierungen 101 hinzugefügt werden, um den Beginn jedes Befehls zu kennzeichnen, wie es in Fig. 11 dargestellt ist. Dies ermöglicht es der Verbindungseinheit, für die oben erwähnten Ersten, Zweiten und Dritten Fälle das vereinfachte Verfahren anzuwenden. Natürlich könnte der Compiler die Befehlsgrenzen identifizieren und zwischen Befehlen und Daten auf andere Weise unterscheiden, um die Arbeit der Verbindungseinheit zu vereinfachen und die Komplikationen eines solchen Verfahrens, wie es in Fig. 9 dargestellt ist, zu umgehen.
  • Fig. 10 zeigt ein Ablaufdiagramm einer möglichen Implementierung einer Verbindungseinheit zum Behandeln einer Befehlsfolge, die der in Fig. 9 dargestellten gleicht. Es ist eine Vielzahl Verbindungseinheiten 104, 106, 108 dargestellt, und aus Effektivitätsgründen könnte diese Anzahl so groß gemacht werden wie die Anzahl der Halbworte, die in einem Textpuffer gespeichert werden können. In dieser Version würden die drei Verbindungseinheiten ihre Verarbeitungsfolgen mit dem ersten, dem dritten beziehungsweise dem fünften Byte beginnen. Bei Beendigung einer möglichen Befehlsfolge beginnt jede Verbindungseinheit die Untersuchung der nächsten möglichen Folge mit einer Verschiebung um sechs Bytes. Jede Verbindungseinheit erzeugt Verbindungs-Identifikatorbits (Werte eines C-Vektors) für jedes Halbwort des Textes. Die drei Folgen der drei Verbindungseinheiten werden ODER-verknüpft 110, und die sich ergebenden zusammengesetzten Identifikatorbits (Werte des CC-Vektors) werden in Verbindung mit den ihnen entsprechenden Textbytes gespeichert.
  • Ein nützlicher Vorteil, der durch die zusammengesetzten Identifikatorbits im CC-Vektor bereitgestellt wird, ist die Erzeugung einer Mehrzahl sinnvoller Verbindungs-Bitfolgen darauf aufbauend, welcher Befehl durch ein Verzweigungsziel adressiert wird. Wie es am besten in den Fig. 14 bis 15 dargestellt ist, sind innerhalb derselben Bytefolge verschieden gebildete Verbundbefehle möglich.
  • Fig. 14 zeigt die möglichen Kombinationen verbundener Befehle, wenn die Computerkonfiguration die parallele Ausgabe und Ausführung von nicht mehr äls zwei Befehlen ermöglicht. Wenn eine Befehlsfolge 90, die verbundene Befehle enthält, in normaler Reihenfolge bearbeitet wird, basiert der Verbundbefehl I, der zur parallelen Ausführung ausgegeben wird, auf der Decodierung des Identifikatorbits des ersten Bytes innerhalb eines CC-Vektors 92. Wenn jedoch eine Verzweigung auf das fünfte Byte stattfindet, wird der Verbundbefehl II auf der Grundlage der Decodierung des Identifikatorbits für das fünfte Byte zur parallelen Ausführung ausgegeben.
  • Genauso führt eine normale aufeinanderfolgende Verarbeitung einer anderen verbundenen Bytefolge 94 dazu, daß die Verbundbefehle IV, VI und VIII aufeinanderfolgend ausgeführt werden (die Teilbefehle jedes Verbundbefehls werden parallel ausgeführt). Im Gegensatz dazu führt eine Verzweigung auf das dritte Byte der verbundenen Bytefolge dazu, daß die Verbundbefehle V und VII aufeinanderfolgend ausgeführt werden und daß der Befehl, der mit dem fünfzehnten Byte beginnt (er bildet den zweiten Teil des Verbundbefehls VIII) einzeln ausgegeben und ausgeführt wird, alles auf der Grundlage der im CC-Vektor 96 enthaltenen Identifikatorbits.
  • Die Verzweigung auf das siebente Byte führt dazu, daß die Verbundbefehle VI und VIII aufeinanderfolgend ausgegeben und ausgeführt werden, und die Verzweigung auf das elfte Byte führt dazu, daß der Verbundbefehl VIII ausgeführt wird. Im Gegensatz dazu führt eine Verzweigung auf das neunte Byte der verbundenen Bytefolge dazu, daß der Verbundbefehl VII ausgeführt wird (er wird aus dem zweiten Teil des Verbundbefehls VI und dem ersten Teil des Verbundbefehls VIII gebildet).
  • Somit werden die Identifikatorbits "1" im CC-Vektor 96 für die Verbundbefehle IV, VI und VIII ignoriert, wenn einer der Verbundbefehle V oder VII ausgeführt wird. Alternativ dazu werden die Identifikatorbits "1" im CC-Vektor 96 für die Verbundbefehle V und VI ignoriert, wenn einer der Verbundbefehle IV, VI oder VIII ausgeführt wird.
  • Fig. 15 zeigt die möglichen Kombinationen verbundener Befehle, wenn die Computerkonfiguration 4ie parallele Ausgabe und Ausführung von bis zu drei Befehlen ermöglicht. Wenn eine Befehlsfolge 98, die verbundene Befehle enthält, in normaler Reihenfolge bearbeitet wird, werden die Verbundbefehle X (eine Triplet- Gruppe) und XIII (eine Paar-Gruppe) ausgeführt. Im Gegensatz dazu führt eine Verzweigung auf das elfte Byte dazu, daß ein Verbundbefehl XI (eine Triplet-Gruppe) ausgeführt wird, und eine Verzweigung auf das dreizehnte Byte führt dazu, daß ein Verbundbefehl XII (eine andere Triplet-Gruppe) ausgeführt wird.
  • Somit werden die Identifikatorbits "2" in einem CC-Vektor 99 für die Verbundbefehle XI und XII ignoriert, wenn die Verbundbefehle X und XIII ausgeführt werden. Andererseits werden die Identifikatorbits für die anderen drei Verbundbefehle X, XII und XIII ignoriert, wenn der Verbundbefehl XI ausgeführt wird. Genauso werden die Identifikatorbits für die anderen drei Verbundbefehle X, XI und XIII ignoriert, wenn der Verbundbefehl XII ausgeführt wird.
  • In Abhängigkeit von deren Lage und der Kenntnis der Textinhalte gibt es viele mögliche Entwürfe für eine Befehlsverbindungseinheit. Im einfachsten Fall wäre es wünschenswert, daß ein Compiler über Bezugsmarkierungen anzeigt, welche Bytes das erste Byte eines Befehls enthalten und welche Daten enthalten. Diese zusätzliche Information führt zu einer effektiveren Verbindungseinheit, weil die genauen Befehlsorte bekannt sind. Dies bedeutet, daß das Verbinden immer wie in dem Ersten, Zweiten und Dritten Fall gehandhabt werden kann, um die C-Vektor-Identifikatorbits für jeden Verbundbefehl zu erzeugen. Ein Compiler könnte ebenfalls weitere Informationen, wie beispielsweise eine statische Verzweigungsvoraussage, hinzufügen oder Vorschriften für die Verbindungseinheit einfügen.
  • Zur Unterscheidung zwischen Daten und Befehlen könnten dort, wo die zu verbindende Befehlsfolge im Speicher abgelegt ist, andere Wege beschritten werden. Zum Beispiel würde eine einfache Liste von Adressen, die Daten enthalten, weniger Platz erfordern als Bezugsmarkierungen, wenn die Datenabschnitte selten sind. Solche Kombinationen vom Hard- und Software in einer Verbindungseinheit stellt viele Möglichkeiten für die effektive Erzeugung von Verbundbefehlen bereit.

Claims (19)

1. Verfahren zum Erhalten einer parallelen Ausführung vorhandener Befehle in einer speziellen Konfiguration eines Datenverarbeitungssystems, enthaltend:
Einordnen bestimmter vorhandener Befehle in eine Vielzahl von Kategorien;
Vergleichen der Kategorien benachbarter, vorhandener Befehle innerhalb einer Befehlsfolge, um zu bestimmen, ob die benachbarten, vorhandenen Befehle in der speziellen Konfiguration eines Datenverarbeitungssystems die Möglichkeit zur parallelen Ausführung bieten; und
Kennzeichnen solcher benachbarter, vorhandener Befehle, die durch den Vergleichsschritt als parallel ausführbar erkannt worden sind, durch einen Verbindungsindikator,
dadurch gekennzeichnet, daß der Vergleichsschritt enthält:
das Vergleichen eines ersten vorhandenen Befehls mit einem zweiten benachbarten, folgenden Befehl auf eine mögliche Verbindung miteinander, und dann das Vergleichen des zweiten Befehls mit einem dritten benachbarten, folgenden Befehl auf eine mögliche Verbindung miteinander, um eine Vielzahl Verbundbefehle zu identifizieren, die entsprechend durch eine Vielzahl von Verbindungsindikatoren gekennzeichnet werden.
2. Verfahren gemäß Anspruch 1, dadurch gekennzeichnet, daß die Einordnungs- und Vergleichsschritte vor dem Zeitpunkt, an dem die vorhandenen Befehle zur Ausführung abgerufen werden, ausgeführt werden.
3. Verfahren gemäß Anspruch 1 oder 2, dadurch gekennzeichnet, daß
der Einordnungsschritt die Einordnung verschiedener Befehle in mindestens eine Kategorie enthält, so daß der Vergleichsschritt bewirkt, daß der Identifikationsschritt mindestens zwei benachbarte, vorhandene Befehle aus der mindestens einen Kategorie zur parallelen Ausführung mit einem Verbindungsindikator kennzeichnet.
4. Verfahren gemäß einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß
der Einordnungsschritt die Einordnung verschiedener Befehle in mindestens zwei verschiedene, nicht überlappende Kategorien enthält, so daß der Vergleichsschritt bewirkt, daß der Identifikationsschritt mindestens zwei benachbarte, vorhandene Befehle aus den mindestens zwei Kategorien zur parallelen Ausführung entsprechend mit einem Verbindungsindikator kennzeichnet .
5. Verfahren gemäß einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß
der Identifikationsschritt den Objektcode der vorhandenen Befehle in seiner ursprünglichen Form beläßt, so daß dieser entweder einzeln oder parallel mit anderen Befehlen ausgeführt werden kann.
6. Verfahren gemäß einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, daß
der Einordnungsschritt sowohl datenabhängige Verriegelungen zwischen Befehlen als auch das Vorhandensein von entsprechenden Funktionseinheiten zur Auflösung von Verriegelungen in der speziellen Konfiguration des Datenverarbeitungssystems berücksichtigt.
7. Verfahren gemäß einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, daß
der Einordnungsschritt sowohl hardwareabhängige Verriegelungen zwischen Befehlen als auch das Vorhandensein von entsprechenden Funktionseinheiten zur Auflösung von Verriegelungen in der speziellen Konfiguration des Datenverarbeitungssystems berücksichtigt.
8. Verfahren gemäß einem der Ansprüche 1 bis 71 dadurch gekennzeichnet, daß
der Vergleichsschritt die Bestimmung einer Folge zur Optimierung der Verarbeitungszeit bei der Ausführung eines gegebenen Abschnitts einer Befehlsfolge enthält.
9. Verfahren gemäß einem der Ansprüche 1 bis 8, dadurch gekennzeichnet, daß
der Vergleichsschritt bestimmt, ob die benachbarten, vorhandenen Befehle durch die Hardware parallel ausgeführt werden können.
10. System zur Verarbeitung einer Folge von Befehlen, die einem vorhandenen Satz Maschinenbefehle entnommen werden, um für die parallele Ausführung durch eine spezielle Computerkonfiguration eine Folge vorzubereiten; enthaltend:
einen Satz von Regeln, die auf der speziellen Computerkonfiguration basieren und bestimmte Maschinenbefehle anzeigen, welche zusammen mit anderen Maschinenbefehlen parallel ausgeführt werden können;
Verbindungsmittel (20) zur Vorverarbeitung einer binären Befehlsfolge, die eine Folge vorhandener Befehle enthält, vor dem Befehlsabruf, wobei das Verbindungsmittel (20) Zugriff auf den Satz Regeln hatf um benachbarte Befehle zu identifizieren, die in der speziellen Computerkonfiguration parallel ausgeführt werden können, und um eine verbundene Folge von Befehlen zu erzeugen, die ein Steuerfeld besitzen, das die einzelnen, benachbarten Befehle kennzeichnet, die parallel ausgeführt werden können und die zusammen einen Verbundbefehl bilden, dadurch gekennzeichnet, daß
der Satz Regeln das Vergleichen eines ersten vorhandenen Befehls mit einem zweiten benachbarten, folgenden Befehl auf eine mögliche Verbindung miteinander, und dann das Vergleichen des zweiten Befehls mit einem dritten benachbarten, folgenden Befehl auf eine mögliche Verbindung miteinander enthält, um eine Vielzahl Verbundbefehle zu identifizieren, die entsprechend durch eine Vielzahl von Verbindungsindikatoren gekennzeichnet werden.
11. System gemäß Anspruch 10, dadurch gekennzeichnet, daß
das Verbindungsmittel ein Software-Vorverarbeitungsprogramm ist, das als Teil eines Compilers oder eines Post-Compilers verwendet wird.
12. System gemäß Anspruch 10 oder 11, dadurch gekennzeichnet, das Verbindungsmittel (20) eine Hardware-Vorverarbeitungseinheit ist, welche Befehle verarbeitet, bevor diese aus einem Cachepuffer abgerufen werden.
13. System gemäß einem der Ansprüche 10 bis 12, dadurch gekennzeichnet, daß
das Verbindungsmittel (20) in der Lage ist, eine verbundene Folge von Befehlen zu erzeugen, die ein Steuerfeld besitzen, das Paare benachbarter Befehle kennzeichnet, die parallel ausgeführt werden können.
14. System gemäß Anspruch 13, dadurch gekennzeichnet, daß
das Verbindungsmittel (20) in der Lage ist, eine verbundene Folge von Befehleh zu erzeugen, die ein Steuerfeld besitzen, das Gruppen aus drei oder mehreren benachbarten Befehlen kennzeichnet, die parallel ausgeführt werden können.
15. System gemäß einem der Ansprüche 10 bis 14, dadurch gekennzeichnet, daß
das Steuerfeld mindestens ein Identifikatorbit enthält, das jedem Verbundbefehl zugeordnet ist.
16. System gemäß Anspruch 15, dadurch gekennzeichnet, daß
das Steuerfeld einen Identifikatorbitabschnitt sowie einen Steuerbitabschnitt enthält, wobei der Steuerbitabschnitt von dem Identifikatorbitabschnitt verschieden ist.
17. System gemäß einem der Ansprüche 10 bis 16, dadurch gekennzeichnet, daß
das Steuerfeld mindestens ein Identifikatorbit enthält, das jedem einzelnen Befehl, der einen Verbundbefehl bildet, zugeordnet ist.
18. System gemäß Anspruch 17, dadurch gekennzeichnet, daß
das Steuerfeld mindestens ein Identifikatorbit enthält, das jedem einzelnen Befehl, der keinen Verbundbefehl bildet, zugeordnet ist.
19. System gemäß einem der Ansprüche 10 bis 18, dadurch gekennzeichnet, daß
der Satz Regeln in Form von Hardwarekomponenten realisiert ist.
DE69123629T 1990-05-04 1991-03-20 Maschinenarchitektur für skalaren Verbundbefehlssatz Expired - Lifetime DE69123629T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US51938490A 1990-05-04 1990-05-04

Publications (2)

Publication Number Publication Date
DE69123629D1 DE69123629D1 (de) 1997-01-30
DE69123629T2 true DE69123629T2 (de) 1997-06-12

Family

ID=24068082

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69123629T Expired - Lifetime DE69123629T2 (de) 1990-05-04 1991-03-20 Maschinenarchitektur für skalaren Verbundbefehlssatz

Country Status (9)

Country Link
US (2) US5502826A (de)
EP (1) EP0454985B1 (de)
JP (1) JP2500082B2 (de)
AT (1) ATE146611T1 (de)
CA (1) CA2039640C (de)
CS (1) CS93691A2 (de)
DE (1) DE69123629T2 (de)
HU (1) HUT57455A (de)
PL (1) PL165524B1 (de)

Families Citing this family (90)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
WO1992006426A1 (en) * 1990-10-09 1992-04-16 Nexgen Microsystems Method and apparatus for parallel decoding of instructions with branch prediction look-up
US6378061B1 (en) * 1990-12-20 2002-04-23 Intel Corporation Apparatus for issuing instructions and reissuing a previous instructions by recirculating using the delay circuit
GB9027853D0 (en) * 1990-12-21 1991-02-13 Inmos Ltd Multiple instruction issue
EP0650612B1 (de) * 1992-03-25 1999-08-18 Zilog Incorporated Schnelle befehlsdekodierung in einem pipeline-prozessor
US6154828A (en) * 1993-06-03 2000-11-28 Compaq Computer Corporation Method and apparatus for employing a cycle bit parallel executing instructions
CA2123442A1 (en) * 1993-09-20 1995-03-21 David S. Ray Multiple execution unit dispatch with instruction dependency
US5630082A (en) * 1993-10-29 1997-05-13 Advanced Micro Devices, Inc. Apparatus and method for instruction queue scanning
EP0651320B1 (de) * 1993-10-29 2001-05-23 Advanced Micro Devices, Inc. Superskalarbefehlsdekoder
DE69434669T2 (de) * 1993-10-29 2006-10-12 Advanced Micro Devices, Inc., Sunnyvale Spekulative Befehlswarteschlange für Befehle mit variabler Byteslänge
US5689672A (en) * 1993-10-29 1997-11-18 Advanced Micro Devices, Inc. Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions
DE69424370T2 (de) * 1993-11-05 2001-02-15 Intergraph Corp Befehlscachespeicher mit Kreuzschienenschalter
JPH07334372A (ja) * 1993-12-24 1995-12-22 Seiko Epson Corp エミュレートシステム及びエミュレート方法
JP3212213B2 (ja) * 1994-03-16 2001-09-25 株式会社日立製作所 データ処理装置
US5559975A (en) * 1994-06-01 1996-09-24 Advanced Micro Devices, Inc. Program counter update mechanism
US6006033A (en) * 1994-08-15 1999-12-21 International Business Machines Corporation Method and system for reordering the instructions of a computer program to optimize its execution
US5600810A (en) * 1994-12-09 1997-02-04 Mitsubishi Electric Information Technology Center America, Inc. Scaleable very long instruction word processor with parallelism matching
US5737550A (en) * 1995-03-28 1998-04-07 Advanced Micro Devices, Inc. Cache memory to processor bus interface and method thereof
GB2299422B (en) * 1995-03-30 2000-01-12 Sony Uk Ltd Object code allocation in multiple processor systems
US5699536A (en) * 1995-04-13 1997-12-16 International Business Machines Corporation Computer processing system employing dynamic instruction formatting
US5710939A (en) * 1995-05-26 1998-01-20 National Semiconductor Corporation Bidirectional parallel data port having multiple data transfer rates, master, and slave operation modes, and selective data transfer termination
US5768610A (en) * 1995-06-07 1998-06-16 Advanced Micro Devices, Inc. Lookahead register value generator and a superscalar microprocessor employing same
US5796974A (en) * 1995-11-07 1998-08-18 Advanced Micro Devices, Inc. Microcode patching apparatus and method
US5829031A (en) * 1996-02-23 1998-10-27 Advanced Micro Devices, Inc. Microprocessor configured to detect a group of instructions and to perform a specific function upon detection
EP0834114A2 (de) * 1996-03-28 1998-04-08 Koninklijke Philips Electronics N.V. Verfahren und rechnersystem zur verarbeitung eines satzes von datenelementen auf einen sequentiell arbeitenden prozessor
US5896519A (en) * 1996-06-10 1999-04-20 Lsi Logic Corporation Apparatus for detecting instructions from a variable-length compressed instruction set having extended and non-extended instructions
US5958042A (en) * 1996-06-11 1999-09-28 Sun Microsystems, Inc. Grouping logic circuit in a pipelined superscalar processor
US6108655A (en) * 1996-07-19 2000-08-22 Cisco Technology, Inc. Method and apparatus for transmitting images and other objects over a computer network system
WO1998006042A1 (en) * 1996-08-07 1998-02-12 Sun Microsystems, Inc. Wide instruction unpack method and apparatus
US5870576A (en) * 1996-12-16 1999-02-09 Hewlett-Packard Company Method and apparatus for storing and expanding variable-length program instructions upon detection of a miss condition within an instruction cache containing pointers to compressed instructions for wide instruction word processor architectures
US6047368A (en) * 1997-03-31 2000-04-04 Sun Microsystems, Inc. Processor architecture including grouping circuit
US6339840B1 (en) * 1997-06-02 2002-01-15 Iowa State University Research Foundation, Inc. Apparatus and method for parallelizing legacy computer code
US6134515A (en) * 1997-06-13 2000-10-17 Telefonaktiebolaget Lm Ericsson Controlling a first type telecommunications switch upon translating instructions for a second type telecommunications switch
US6142682A (en) * 1997-06-13 2000-11-07 Telefonaktiebolaget Lm Ericsson Simulation of computer processor
US5905880A (en) * 1997-09-29 1999-05-18 Microchip Technology Incorporated Robust multiple word instruction and method therefor
JPH11120040A (ja) * 1997-10-20 1999-04-30 Fujitsu Ltd 並列処理手続きの効果予測方法とそのための記録媒体
US6118940A (en) * 1997-11-25 2000-09-12 International Business Machines Corp. Method and apparatus for benchmarking byte code sequences
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
US6460116B1 (en) * 1998-09-21 2002-10-01 Advanced Micro Devices, Inc. Using separate caches for variable and generated fixed-length instructions
EP0992893B1 (de) * 1998-10-06 2008-12-31 Texas Instruments Inc. Überprüfung von Befehlsparallelismus
US6681319B1 (en) * 1998-10-06 2004-01-20 Texas Instruments Incorporated Dual access instruction and compound memory access instruction with compatible address fields
EP0992892B1 (de) * 1998-10-06 2015-12-02 Texas Instruments Inc. Verbundspeicherzugriffsbefehle
US6990570B2 (en) 1998-10-06 2006-01-24 Texas Instruments Incorporated Processor with a computer repeat instruction
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
EP0992916A1 (de) * 1998-10-06 2000-04-12 Texas Instruments Inc. Digitaler Signalprozessor
US6418527B1 (en) * 1998-10-13 2002-07-09 Motorola, Inc. Data processor instruction system for grouping instructions with or without a common prefix and data processing system that uses two or more instruction grouping methods
US6366998B1 (en) * 1998-10-14 2002-04-02 Conexant Systems, Inc. Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model
US6490673B1 (en) * 1998-11-27 2002-12-03 Matsushita Electric Industrial Co., Ltd Processor, compiling apparatus, and compile program recorded on a recording medium
US6634019B1 (en) * 1999-07-16 2003-10-14 Lamarck, Inc. Toggling software characteristics in a fault tolerant and combinatorial software environment system, method and medium
US6973560B1 (en) 1999-07-16 2005-12-06 Lamarck, Inc. Fault tolerant and combinatorial software environment system, method and medium
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
US6631463B1 (en) * 1999-11-08 2003-10-07 International Business Machines Corporation Method and apparatus for patching problematic instructions in a microprocessor using software interrupts
US7418580B1 (en) * 1999-12-02 2008-08-26 International Business Machines Corporation Dynamic object-level code transaction for improved performance of a computer
US20010042138A1 (en) * 1999-12-23 2001-11-15 Reinhard Buendgen Method and system for parallel and procedural computing
US6697939B1 (en) * 2000-01-06 2004-02-24 International Business Machines Corporation Basic block cache microprocessor with instruction history information
US6647489B1 (en) * 2000-06-08 2003-11-11 Ip-First, Llc Compare branch instruction pairing within a single integer pipeline
US6633969B1 (en) 2000-08-11 2003-10-14 Lsi Logic Corporation Instruction translation system and method achieving single-cycle translation of variable-length MIPS16 instructions
US7149878B1 (en) * 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values
DE10055175A1 (de) * 2000-11-08 2002-05-23 Infineon Technologies Ag Verfahren zum Transferieren von Daten zwischen einer ersten Einrichtung und einer zweiten Einrichtung
US7143268B2 (en) * 2000-12-29 2006-11-28 Stmicroelectronics, Inc. Circuit and method for instruction compression and dispersal in wide-issue processors
US7711926B2 (en) * 2001-04-18 2010-05-04 Mips Technologies, Inc. Mapping system and method for instruction set processing
US6826681B2 (en) * 2001-06-18 2004-11-30 Mips Technologies, Inc. Instruction specified register value saving in allocated caller stack or not yet allocated callee stack
US7110525B1 (en) 2001-06-25 2006-09-19 Toby Heller Agent training sensitive call routing system
US7107439B2 (en) * 2001-08-10 2006-09-12 Mips Technologies, Inc. System and method of controlling software decompression through exceptions
US20030126414A1 (en) * 2002-01-02 2003-07-03 Grochowski Edward T. Processing partial register writes in an out-of order processor
US7398398B2 (en) * 2002-03-16 2008-07-08 Trustedflow Systems, Inc. Authenticated and metered flow control method
US20040128483A1 (en) * 2002-12-31 2004-07-01 Intel Corporation Fuser renamer apparatus, systems, and methods
EP1652072A4 (de) * 2003-07-11 2008-12-31 Computer Ass Think Inc Verfahren und vorrichtung zur parallelen aktionsverarbeitung
GB0323950D0 (en) * 2003-10-13 2003-11-12 Clearspeed Technology Ltd Unified simid processor
US7676560B2 (en) * 2003-10-24 2010-03-09 Microsoft Corporation Using URI's to identify multiple instances with a common schema
US7539974B2 (en) 2003-10-24 2009-05-26 Microsoft Corporation Scalable synchronous and asynchronous processing of monitoring rules
US7765540B2 (en) * 2003-10-23 2010-07-27 Microsoft Corporation Use of attribution to describe management information
US7506307B2 (en) * 2003-10-24 2009-03-17 Microsoft Corporation Rules definition language
US7103874B2 (en) * 2003-10-23 2006-09-05 Microsoft Corporation Model-based management of computer systems and distributed applications
US7478276B2 (en) * 2005-02-10 2009-01-13 International Business Machines Corporation Method for checkpointing instruction groups with out-of-order floating point instructions in a multi-threaded processor
US7467325B2 (en) * 2005-02-10 2008-12-16 International Business Machines Corporation Processor instruction retry recovery
US7590824B2 (en) * 2005-03-29 2009-09-15 Qualcomm Incorporated Mixed superscalar and VLIW instruction issuing and processing method and system
US7627735B2 (en) * 2005-10-21 2009-12-01 Intel Corporation Implementing vector memory operations
US7818550B2 (en) * 2007-07-23 2010-10-19 International Business Machines Corporation Method and apparatus for dynamically fusing instructions at execution time in a processor of an information handling system
TW200910195A (en) * 2007-08-20 2009-03-01 Sunplus Technology Co Ltd A device of using serial bits to determine instruction length at a multi-mode processor and the method thereof
US20090055636A1 (en) * 2007-08-22 2009-02-26 Heisig Stephen J Method for generating and applying a model to predict hardware performance hazards in a machine instruction sequence
JP5278336B2 (ja) * 2008-02-15 2013-09-04 日本電気株式会社 プログラム並列化装置、プログラム並列化方法及びプログラム並列化プログラム
US8751747B2 (en) * 2008-02-26 2014-06-10 International Business Machines Corporation Management of cache replacement status in cache memory
US8572569B2 (en) * 2009-12-09 2013-10-29 Oracle International Corporation Modified implementation of a debugger wire protocol and command packet
GB2486905A (en) 2010-12-30 2012-07-04 Cambridge Silicon Radio Ltd Amalgamating instructions by replacing unencoded space
US11042929B2 (en) 2014-09-09 2021-06-22 Oracle Financial Services Software Limited Generating instruction sets implementing business rules designed to update business objects of financial applications
US10157164B2 (en) * 2016-09-20 2018-12-18 Qualcomm Incorporated Hierarchical synthesis of computer machine instructions
CN112540795A (zh) * 2019-09-23 2021-03-23 阿里巴巴集团控股有限公司 指令处理装置和指令处理方法
US20230097390A1 (en) * 2021-09-29 2023-03-30 International Business Machines Corporation Tightly-coupled slice target file data
US11900116B1 (en) 2021-09-29 2024-02-13 International Business Machines Corporation Loosely-coupled slice target file data

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3293616A (en) * 1963-07-03 1966-12-20 Ibm Computer instruction sequencing and control system
US3346851A (en) * 1964-07-08 1967-10-10 Control Data Corp Simultaneous multiprocessing computer system
US3343135A (en) * 1964-08-13 1967-09-19 Ibm Compiling circuitry for a highly-parallel computing system
US3611306A (en) * 1969-02-05 1971-10-05 Burroughs Corp Mechanism to control the sequencing of partially ordered instructions in a parallel data processing system
US4295193A (en) * 1979-06-29 1981-10-13 International Business Machines Corporation Machine for multiple instruction execution
US4437149A (en) * 1980-11-17 1984-03-13 International Business Machines Corporation Cache memory architecture with decoding
US4439828A (en) * 1981-07-27 1984-03-27 International Business Machines Corp. Instruction substitution mechanism in an instruction handling unit of a data processing system
US4594655A (en) * 1983-03-14 1986-06-10 International Business Machines Corporation (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions
US4574348A (en) * 1983-06-01 1986-03-04 The Boeing Company High speed digital signal processor architecture
US4807115A (en) * 1983-10-07 1989-02-21 Cornell Research Foundation, Inc. Instruction issuing mechanism for processors with multiple functional units
JPS60101644A (ja) * 1983-11-07 1985-06-05 Masahiro Sowa ノイマン型コンピュータプログラムを実行するコントロールフローコンピュータ
JPS61245239A (ja) * 1985-04-23 1986-10-31 Toshiba Corp 論理回路方式
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
DE3751503T2 (de) * 1986-03-26 1996-05-09 Hitachi Ltd Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen.
JPS63131230A (ja) * 1986-11-21 1988-06-03 Hitachi Ltd 情報処理装置
EP0312764A3 (de) * 1987-10-19 1991-04-10 International Business Machines Corporation Datenprozessor mit mehrfachen Ausführungseinheiten zur parallelen Ausführung von mehreren Befehlsklassen
US5197137A (en) * 1989-07-28 1993-03-23 International Business Machines Corporation Computer architecture for the concurrent execution of sequential programs
US5506974A (en) * 1990-03-23 1996-04-09 Unisys Corporation Method and means for concatenating multiple instructions
JP2818249B2 (ja) * 1990-03-30 1998-10-30 株式会社東芝 電子計算機
US5163139A (en) * 1990-08-29 1992-11-10 Hitachi America, Ltd. Instruction preprocessor for conditionally combining short memory instructions into virtual long instructions

Also Published As

Publication number Publication date
HU911103D0 (en) 1991-10-28
PL289722A1 (en) 1992-04-21
US5502826A (en) 1996-03-26
JP2500082B2 (ja) 1996-05-29
ATE146611T1 (de) 1997-01-15
CA2039640C (en) 2000-01-11
PL165524B1 (pl) 1995-01-31
JPH04229326A (ja) 1992-08-18
CA2039640A1 (en) 1991-11-05
EP0454985A2 (de) 1991-11-06
EP0454985A3 (en) 1994-03-30
CS93691A2 (en) 1991-12-17
EP0454985B1 (de) 1996-12-18
DE69123629D1 (de) 1997-01-30
US5732234A (en) 1998-03-24
HUT57455A (en) 1991-11-28

Similar Documents

Publication Publication Date Title
DE69123629T2 (de) Maschinenarchitektur für skalaren Verbundbefehlssatz
DE69122294T2 (de) Verbindungstechnik für Prozessoren, die auf Befehlsebene parallel arbeiten
EP0689694B1 (de) Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren
DE69724771T2 (de) Zentralprozessoreinheit mit x86 und dsp kern und einem dsp funktions-dekoder zum abbilden von x 86-befehlen auf dsp-befehle
DE68928340T2 (de) Fliessband-Datenprozessor
DE69115344T2 (de) Vorverarbeitungsprozessor zur Verbindung von Befehlen für einen Cache-Speicher
DE4301417C2 (de) Computersystem mit Einrichtung zur parallelen Befehlsausführung
DE68925646T2 (de) Pipeline-multiprozessorsystem
DE69833008T2 (de) Prozessor mit instruktionskodierung mittels eines schablonenfeldes
DE69311330T2 (de) Befehlsablauffolgeplanung von einem risc-superskalarprozessor
EP0502857B1 (de) Verfahren zur dynamischen bindung von definierbaren programmelementen eines interaktiven datenverarbeitungssystems
DE69209888T2 (de) Befehlablaufsteuerung für einen Rechner
DE69817333T2 (de) Verfahren und Vorrichtung zum Laden von Befehlskodes in einen Speicher und zum Verbinden dieser Befehlskodes
DE69017178T2 (de) Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung.
DE68921906T2 (de) Verfahren für ein Multiprozessorsystem mit sich selbst zuordnenden Prozessoren.
DE69032174T2 (de) Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen
DE69027932T2 (de) Cpu-pipeline mit registerfile-bypass durch adressvergleich bei aktualisierungen/zugriffen
DE2542740C2 (de) Datenverarbeitungsanlage mit einer Mikroprogrammsteuerung
DE3587591T2 (de) Mikroprozessor für Forth-ähnliche Sprache.
DE3689389T2 (de) Datenverarbeitungsprozessor.
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE68925523T2 (de) Erzeugung eines wirksamen Kodes für einen unähnliche Registrierräume enthaltenden Computer
DE3638572C2 (de)
DE68927855T2 (de) Verfahren und Datenverarbeitungseinheit zur Vorverarbeitung von implizierten Spezifizierern in einem Pipeline-Prozessor
DE69832932T2 (de) Programmkonvertiergerät für konstantenrekonstruierenden VLIW Prozessor

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8330 Complete renunciation