DE69123629T2 - Maschinenarchitektur für skalaren Verbundbefehlssatz - Google Patents
Maschinenarchitektur für skalaren VerbundbefehlssatzInfo
- 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
Links
- 150000001875 compounds Chemical class 0.000 title claims abstract description 190
- 238000000034 method Methods 0.000 claims abstract description 52
- 238000012545 processing Methods 0.000 claims abstract description 46
- 230000001419 dependent effect Effects 0.000 claims abstract description 14
- 230000008569 process Effects 0.000 claims description 10
- 238000007781 pre-processing Methods 0.000 claims description 9
- 238000013329 compounding Methods 0.000 abstract description 9
- 230000006872 improvement Effects 0.000 abstract description 9
- 239000013598 vector Substances 0.000 description 20
- 230000015572 biosynthetic process Effects 0.000 description 13
- 238000013461 design Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 239000002131 composite material Substances 0.000 description 5
- 230000009977 dual effect Effects 0.000 description 5
- 239000003550 marker Substances 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent 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
- 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".
- 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.
- 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.
- 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.
- 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.
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)
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)
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 |
-
1991
- 1991-03-20 EP EP91104323A patent/EP0454985B1/de not_active Expired - Lifetime
- 1991-03-20 AT AT91104323T patent/ATE146611T1/de not_active IP Right Cessation
- 1991-03-20 DE DE69123629T patent/DE69123629T2/de not_active Expired - Lifetime
- 1991-04-03 PL PL91289722A patent/PL165524B1/pl not_active IP Right Cessation
- 1991-04-03 JP JP3096090A patent/JP2500082B2/ja not_active Expired - Fee Related
- 1991-04-03 CA CA002039640A patent/CA2039640C/en not_active Expired - Fee Related
- 1991-04-04 HU HU911103A patent/HUT57455A/hu unknown
- 1991-04-04 CS CS91936A patent/CS93691A2/cs unknown
-
1994
- 1994-01-25 US US08/186,221 patent/US5502826A/en not_active Expired - Fee Related
-
1996
- 1996-08-15 US US08/699,689 patent/US5732234A/en not_active Expired - Lifetime
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 |