DE68917317T2 - Befehlsausgabesteuerung mit vorausschau für einen rechner. - Google Patents
Befehlsausgabesteuerung mit vorausschau für einen rechner.Info
- Publication number
- DE68917317T2 DE68917317T2 DE68917317T DE68917317T DE68917317T2 DE 68917317 T2 DE68917317 T2 DE 68917317T2 DE 68917317 T DE68917317 T DE 68917317T DE 68917317 T DE68917317 T DE 68917317T DE 68917317 T2 DE68917317 T2 DE 68917317T2
- Authority
- DE
- Germany
- Prior art keywords
- instruction
- resource
- resources
- conflict
- command
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 11
- 238000012360 testing method Methods 0.000 description 4
- 239000000872 buffer Substances 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011160 research 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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8076—Details on data register access
- G06F15/8084—Special arrangements thereof, e.g. mask or switch
-
- 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
-
- 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/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3875—Pipelining a single stage, e.g. superpipelining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Advance Control (AREA)
- Radar Systems Or Details Thereof (AREA)
- Electrotherapy Devices (AREA)
- Complex Calculations (AREA)
Description
- Die Erfindung betrifft allgemein eine Steuerlogik für Computersysteme. Insbesondere ist sie auf eine Befehlsausgabesteuerung mit Vorausschau gerichtet.
- Um die Computerleistung zu maximieren, haben Systemdesigner seit langem Techniken gesucht, die die zur Befehlsausführung erforderliche Zeit minimieren. Leistungsgewinne wurden durch Hardware-Architekturen, die eine Vielzahl funktioneller Einheiten wie Vektorregister, Skalarregister, Adressregister und Befehlspuffer enthalten, unterstützt. Um die Kosten dieser teuren Komponenten zu rechtfertigen, mußten diese angemessen beschäftigt bleiben. Eine parallele Befehlsausführung repräsentiert Bemühungen zum Erhöhen der Auslastung der Betriebsmittel mit einem einzelnen Prozessor.
- Bei einigen Computern beinhaltet der Befehlsausgabeprozeß ein Prüfen der Reservierungs-Flags der in die Operation einbezogenen Betriebsmittel während der Taktperiode, in der die Befehlsausgabe vorgesehen ist. Der Befehl wartet in der Ausgabeposition, bis alle benötigten Betriebsmittel verfügbar sind. Sofort nach der Befehlsausgabe werden die Reservierungs- oder Belegt-Flags für die belegten Betriebsmittel durch die Befehlsausgabesteuerung gesetzt. Danach testen nachfolgende Befehle diese Reservierungs-Flags unmittelbar vor der Ausgabe und bleiben in der Ausgabeposition, wenn ein Betriebsmittelkonflikt auftritt.
- Bei den meisten Computern treten in jeder Taktperiode Befehlsausgaben auf, wenn kein Betriebsmittelkonflikt vorhanden ist. Typischerweise ist die Taktgeschwindigkeit ausreichend langsam, daß alle erforderlichen Konfliktprüfungen, gefolgt von der Befehlsausgabe, innerhalb einer Taktperiode vorgenommen werden können. Bei steigender Taktgeschwindigkeit ist jedoch nicht genügend Zeit in einer Taktperiode vorhanden, um alle Konflikte zu lösen und dann den Befehl auszugeben.
- Ein solcher Computer ist der von der Cray Research Inc., der Anmelderin der vorliegenden Erfindung, gebaute Cray-2-Supercomputer. Aufgrund von Schaltverzögerungen und Ausgabeverzögerungen, verursacht durch einen 4-Nanosekunden-Systemtakt, benötigt der Cray-2 zwei Taktperioden, um die "Test- und Ausgabe"-Sequenz zum Testen auf Betriebsmittelkonflikte und Ausgeben des Befehles auszuführen. Deshalb ist die maximale Befehlsausgabegeschwindigkeit des Cray-2 ein Befehl alle zwei Taktperioden.
- Ein Lösungsansatz zur Befehlsausgabe ist in "IEEE Transactions on Computers", Ausgabe C-33, Nr. 11, November 1984, Seiten 1013-1022, beschrieben. Dieser Artikel beschreibt den Cray-1-Befehlsfolgenprozessor, bei dem die Befehlsfolgensteuerlogik auf eine oder zwei Befehlsfolgestufen festgelegt ist und als Befehlsausgabelogik bezeichnet wird. Die Leistung eines Befehlsfolgenprozessors hängt in hohem Maß von der Reihenfolge der Befehle im Befehlsstrom ab. Wenn aufeinanderfolgende Befehle Daten- und Steuerabhängigkeiten aufweisen und sich um Betriebsmittel "streiten", entstehen Löcher in der Befehlsfolge und die Leistung leidet darunter. Bei dem Cray-1 werden Befehle aus dem Befehlspuffer mit einer Geschwindigkeit von einem Paket pro Takt geholt. Nachdem eine Taktperiode für die Befehlsdecodierung aufgewendet wurde, prüft die Ausgabelogik Verriegelungen. Ergibt sich ein Konflikt, wird die Befehlsausgabe blockiert, bis der Konfliktzustand aufgehoben ist. Eine Verriegelung kann zum Zeitpunkt der Befehlsausgabe auftreten, wenn ein Register, ein Ergebnisbus oder eine Funktionseinheit belegt ist, während ein Befehl diese benutzen möchte.
- Wenn alle Verriegelungen aufgehoben sind, wird der Befehl ausgegeben, der Ergebnisbus wird für die Taktperiode, in welcher der Befehl ausgeführt wird, reserviert, und das Zielregister wird für das Ergebnis reserviert. Der Cray-1 erzwingt die Ausgabe von Befehlen streng in der Programmfolge. Wird ein Befehl für die Ausgabe infolge eines Konfliktes blockiert, werden alle folgenden Befehle im Befehlsstrom ebenfalls blockiert, auch wenn sie keine Konflikte haben.
- Eine andere Lösung zur Befehlsausgabe ist dargelegt in dem IBM Technical Disclosure Bulletin, Ausgabe 27, Nr. 5, Oktober 1984, Seiten 2842- 2844. Dieser Artikel offenbart ein Verfahren zum Reduzieren der Ausführungsverzögerung in einem Hochleistungsprozessor, welches durch Voruntersuchen von Wechselwirkungen und Ermöglichen einer maximalen parallelen Ausführung von Befehlen verwirklicht wird. Das Prozessordesign verwendet auf Befehlseingabeanforderungen bezogene Informationen, um eine Mehrfachbefehlsausführung zu steuern und dadurch die Prozessorgesamtleistung zu maximieren. Ein Befehls-Querverweisfeld beinhaltet den decodierten Befehl, den Befehlsausführungsstatus und Operandeninformation, die benötigt wird, um zu bestimmen, wann die Ausführung beginnen kann. Wenn Befehle aus dem Speicher geholt werden, werden diese decodiert und die Information in das Befehls-Querverweisfeld eingetragen. Ein Befehl kann ausgeführt werden, wenn alle benötigten Betriebsmittel verfügbar sind. Wenn die Ressource nicht durch einen vorhergehenden Befehl modifiziert wurde, oder die Modifikation abgeschlossen ist, wenn sie bei dem vorigen Befehl modifiziert wurde, dann ist sie zur Verwendung durch den Befehl verfügbar. Das Prozessordesign verwendet daher auf die Befehlseingabeanforderung bezogene Informationen zum Steuern der Mehrfachbefehlsausführung, wodurch die parallele Ausführung von Befehlen und die Prozessorgesamtleistung maximiert werden.
- Um die Beschränkungen des oben dargelegten Standes der Technik zu beseitigen und um andere Beschränkungen, die für einen Durchschnittsfachmann leicht erkennbar sind, zu beseitigen, gibt die vorliegende Erfindung eine neue Architektur für eine Befehlsausgabesteuerung an.
- Gemäß einer Aufgabe der vorliegend beanspruchten Erfindung prüft eine vorausschauende Befehlsausgabesteuerung vor der Ausgabe des Befehles auf Betriebsmittelkonflikte. Der Computer beinhaltet eine Vielzahl von Betriebsmitteln, welche durch die Befehle verwendet werden können. Die Betriebsmittel haben Reservierungs-Signale oder -Flags. Die vorausschauende Befehlsausgabesteuerung selektiert einen Befehl vor dem Zeitpunkt, in welchem die Ausgabe des Befehles vorgesehen ist. Der Befehl wird decodiert, um die durch den Befehl verwendeten Betriebsmittel zu identifizieren. Die Reservierungsflags für die Betriebsmittel werden geprüft und ein Hauptkonfliktsignal wird erzeugt, wenn die Ressource belegt ist, wenn der Befehl zur Verwendung der Ressource vorgesehen ist. Die Ausgabe des Befehls wird zu der vorgesehenen Zeit verhindert, wenn das Hauptkonfliktsignal erzeugt ist. Das Reservierungsflag der Ressource wird geprüft, wenn die Befehlsausgabe verhindert wurde und ein Nebenkonfliktsignal wird erzeugt, solange die Ressource belegt bleibt. Die Befehlsausgabe wird verhindert, während das Nebenkonfliktsignal erzeugt wird.
- In den Zeichnungen, in denen sich gleiche Bezugszeichen auf gleiche Elemente in den verschiedenen Ansichten beziehen, zeigen:
- Fig. 1 eine Kombination eines Hardware- und Zeit-Diagramms der Register-Belegt-Konfliktprüfung, wie in der bevorzugten Ausführungsform verwirklicht;
- Fig. 2 ein kombiniertes Hardware- und Zeit-Diagramm der Adress- und Skalarregister-Pfadkonfliktprüfung, wie in der bevorzugten Ausführungsform verwirklicht;
- Fig. 3 ein kombiniertes Hardware- und Zeit-Diagramm der Funktionseinheiten-Konfliktprüfung, wie in der bevorzugten Ausführungsform verwirklicht;
- Fig. 4 ein Zeit-Diagramm, welches die Konfliktprüfungssequenz beschreibt, wie sie in der bevorzugten Ausführungsform verwirklicht ist;
- Fig. 5 ein kombiniertes Hardware- und Zeit-Diagramm, das einen Haupt- und Neben-Konflikt darstellt, wie in der bevorzugten Ausführungsform verwirklicht;
- Fig. 6 ein Beispiel eines Schieberegisters der Verkettungsverzögerungs-Reservierungsflags entweder für den Adress- oder den Skalar-Registerpfad.
- In der folgenden, detaillierten Beschreibung der bevorzugten Ausführungsform wird auf die beigefügten Zeichnungen Bezug genommen, welche einen Teil davon bilden und in welchen eine besondere Ausführungsform illustriert ist, in der die Erfindung ausgeführt werden kann. Die Ausführungsform wird in der Form von Blockdiagrammen und Zeitdiagrammen beschrieben, auf denen detaillierte Logikschaltungen (nicht dargestellt) basieren können, wie sie allgemein im Stand der Technik bekannt sind. Es ist zu berücksichtigen, daß andere Ausführungsformen verwendet werden können, und daß strukturelle Veränderungen vorgenommen werden können, ohne den Umfang der vorliegenden Erfindung zu verlassen.
- Die vorliegende Erfindung gestattet eine Befehlsausgabe in jeder Taktperiode, ungeachtet der Geschwindigkeit des Taktes, durch Lösen von Betriebsmittelkonflikten vor der Befehlsausgabe.
- In den Zeit-Diagrammen der Fig. 1, 2, 3, 4 und 5 repräsentiert die Einteilung entlang der horizontalen Achse Taktperioden, wobei jede Periode in zwei Taktphasen aufgeteilt ist. Die vertikal abwärts zeigenden Pfeile repräsentieren die Taktperiodenintervalle. Die Taktperiodenintervalle werden, wenn die Konfliktprüfung und die Betriebsmittelreservierung ausgeführt sind, in den Zeichnungen als "Ebenen" bezeichnet. Die Zahlen von -9 bis +1 repräsentieren Taktphasen. Der Computer, der die vorliegende Erfindung verwendet, wird gebildet aus einer Logik, die auf die Vorderflanke oder auf die Hinterflanke der Taktimpulse reagiert. Deshalb wird jede Taktperiode aus zwei Phasen gebildet, wobei eine Phase die Vorderflanke des Taktimpulses und die andere Phase die Hinterflanke des Taktimpulses kennzeichnet.
- Zunächst Bezug nehmend auf Fig. 1 beschreibt das Diagramm die Vektorregisterkonfliktprüfung. Beginnend mit Phase -9 ist das Befehlswort im Register 10 vorhanden. Bei dieser bevorzugten Ausführungsform weist ein Befehlswort 64 Bits auf, aber ein individuelles Befehlspaket besteht aus lediglich 16 Bits. Das korrekte 16 Bit-Befehlspaket wird aus dem 64 Bit-Befehlswort ausgewählt.
- Ein Schaltkreis 11 ist die Befehlspaketauswahlschaltung. In den Phasen -8 und -7 wird das gewünschte Befehlspaket 18 ausgewählt. Das gewählte Befehlspaket 18 ist das eine für die Ausführung in Phase 0 vorgesehene. Dieses Befehlspaket wird zu den Decodierschaltungen 12 und 13 übertragen.
- Von Phase -6 bis Phase -4 wird das Befehlspaket decodiert. Das Diagramm zeigt eine Aufteilung in zwei Pfade in Phase -6. Schaltung 12 decodiert die Vektorregisteranforderung. Schaltung 13 decodiert die Funktionseinheitenanforderung. In Phase -4 sind die Vektorregister und Funktionseinheiten bekannt, und die Information wird zu den Schaltungen 14 und 15 mittels der Signale 19 und 20 übertragen.
- Von Phase -3 bis Phase -2 werden Betriebsmittelkonflikte gelöst und "Belegung möglich"-Signale erzeugt, um die Reservierungsflags zu setzen. Das Diagramm zeigt eine Aufteilung in zwei Pfade in Phase -3. Der obere Pfad, der die Schaltung 14 repräsentiert, erzeugt das "Belegen möglich"-Signal -1, welches Schaltung 15 verwendet, um das Reservierungsflag der angeforderten Ressource zu setzen. Der untere Pfad, der Schaltung 15 repräsentiert, prüft die Reservierungsflags auf Betriebsmittelkonflikte mit vorhergehenden Befehlen, erzeugt ein Hauptkonfliktsignal 22, wenn erforderlich, und setzt die Reservierungsflags mit der Befehlsausgabe. Die Reservierungsflags für Vektorregister und Funktionseinheiten bestehen alle aus einem einfachen Signalspeicher. Wenn das Ausgangssignal des Signalspeichers eine logische "1" ist, ist die zugeordnete Ressource belegt. Wenn das Ausgangssignal des Signalspeichers eine logische "0" ist, ist die zugeordnete Ressource verfügbar.
- In Phase -2 wird das Hauptkonfliktsignal 22 zu der Befehlsausgabeschaltung 16 übertragen und zeigt an, daß der Befehl wegen eines Betriebsmittelkonfliktes mit einem vorher ausgegebenen Befehl nicht in Phase 0 ausgegeben werden kann. Dieses Signal 22 erreicht die Befehlsausgabeschaltung 16 in Phase -1 vor der Befehlsausgabe. Als Ergebnis fällt das Ausgabesignal 23 in Phase 0 ab.
- Es ist zu berücksichtigen, daß die Schaltung 15 zum Setzen eines Reservierungsflags ein aktives Ausgabesignal 23 benötigt. Deshalb werden, wenn ein Hauptkonflikt 22 angezeigt wird, Reservierungsflags nicht gesetzt. Wie später in Verbindung mit Fig. 5 dargelegt wird, wird ein Hauptkonflikt 22 die Befehlsausgabe für die erste Taktperiode und ein Nebenkonflikt die Befehlsausgabe anhalten, bis die Ressource frei ist. Wenn die Ressource frei ist, wird der Befehl ausgegeben, und ein aktives Ausgabesignal 23 erlaubt es Schaltung 15, die Reservierungsflags zu setzen.
- Fig. 2 beschreibt die für Adress- und Skalarregister ausgeführten Konfliktprüfungen und Betriebsmittelreservierungen. Insbesondere prüft sie auf Pfadkonflikte zu den Adress- und Skalarregistern. Diese unterscheiden sich von Vektorregisterkonflikten. Ein Vektorregisterkonflikt wie in Fig. 1 kann z. B. ein Zielvektorregister betreffen, welches einen Befehl nicht als Operandenvektorregister verwenden kann, bis die Daten der vorhergehenden Operation in dem Vektorregister abgelegt sind. Im Gegensatz dazu betrifft ein Pfadkonflikt die Verwendung von Datenpfaden zu den Adress- oder Skalarregistern. Für die Adress- und Skalarregister muß der Pfad lediglich während einer Taktperiode reserviert werden.
- Die Logik zum Ausgeben von Adress- oder Skalarbefehlen wird durch das Zeitdiagramm in Fig. 2 dargestellt. In Phase -9 befindet sich das Befehlswort im Register 10. Von Phase -8 bis Phase -7 wird eines der vier Befehlspakete durch die Schaltung 11 zum Übertragen an die Decodierschaltung 13 ausgewählt. Von Phase -6 bis Phase -4 bestimmt der Decodierprozeß, ob der Befehl ein Adressregister oder ein Skalarregister anfordert. Beginnend mit Phase -3 beginnen die Konfliktprüfungen für Adress- und Skalarregister.
- Schaltung 24 löst Konflikte für Pfade zu Adressregistern. In Phase -3 übernimmt die Schaltung 24 die durch die Decodierschaltung 13 übertragene Information 20. Anschließend überträgt die Schaltung 24 ein Hauptkonfliktsignal 28 in der Phase -2, wenn ein Konflikt auf dem Adressregisterpfad auftritt. Wird der Befehl ausgegeben, setzt die Schaltung 24 das korrekte Bit in der dem Adressregisterpfad zugeordneten Verkettungsverzögerung.
- Schaltung 26 ist verantwortlich für Skalarregisterpfadkonflikte. In Phase -3 übernimmt die Schaltung 26 die durch die Decodierschaltung 13 gesendete Information 20. Anschließend erzeugt die Schaltung 26 ein Hauptkonfliktsignal 29 in Phase -2, wenn ein Konflikt auf dem Skalarregisterpfad auftritt. Wenn der Befehl ausgegeben wird, setzt die Schaltung 26 das korrekte Bit in der Verkettungsverzögerung, die dem speziellen Pfad zugeordnet ist.
- Pfadreservierungen für Adress- und Skalarregister werden durch Verwendung von Schieberegistern unterstützt, die als Verkettungsverzögerung wirken. Jede Verkettungsverzögerung wird mit jeder Taktperiode um ein Bit verschoben, um einen Pfad-Zeitabschnitt zu repräsentieren. Wann immer ein Befehl ausgegeben wird, der ein Adress- oder Skalarregister verwendet, müssen die Schaltungen 24 oder 26 sicherstellen, daß der Pfad zu dem Adress- oder Skalarregister bei Bedarf verfügbar ist. Z.B., wenn ein Befehl ausgegeben wird, der ein Ergebnis 12 Taktperioden nach der Ausgabe in ein Skalarregister überträgt. Der Schaltkreis 26 muß den Skalarregisterpfad 12 Taktperioden nach Ausgabe für diesen Intervall belegen und reservieren, bevor sie die Befehlsausgabe erlaubt. Alle nachfolgenden Befehle müssen diese Reservierung berücksichtigen, wenn sie Ergebnisse zu den Skalarregistern übertragen wollen. Nachfolgende Befehle dürfen nicht mit dem Ergebnis von einem vorher ausgegebenen Befehl kollidieren.
- Fig. 6 beschreibt das in der bevorzugten Ausführungsform verwendete Schieberegister. Die Adress- und Skalarregisterpfade werden jeweils durch ein Schieberegister bedient. Die Anzahl von Signal speichern innerhalb jedes Schieberegisters entspricht der längsten möglichen Verzögerung zwischen Befehlsausgabe und dem Abgeben eines Ergebnisses an das Adress- oder Skalarregister.
- In Fig. 6 sind drei Signalspeicher gezeigt; Signalspeicher 614 korrespondiert mit der Pfadreservierung für Taktperiode 0 nach der Befehlsausgabe; Signalspeicher 610 korrespondiert mit der Pfadreservierung für Taktperiode 1 nach der Befehlsausgabe; Signalspeicher 606 korrespondiert mit der Pfadreservierung für die Taktperiode N nach der Befehlsausgabe. Gezahnte Linien trennen Signalspeicher 610 und Signalspeicher 606. Die gezahnten Linien zeigen an, daß eine Anzahl von Signalspeichern in dem Schieberegister zwischen den Signal speichern 610 und 606 existiert. Signalspeicher 606 repräsentiert den höchstmöglichen Verzögerungswert.
- Bei jedem Taktimpuls 604 wird der Signalspeicher 606 durch das Signal 605, das auch als Periode-N-Setzen bezeichnet ist, gesetzt. Wenn das Signal 605 eine logische "0" ist, wird der Signalspeicher 606 gelöscht. Das Ausgangssignal des Signalspeichers 606 wird zu den Konfliktprüfschaltungen 24 oder 26 über das Signal 607, das ebenfalls als Periode N belegt bezeichnet ist, übertragen. Wenn das Ausgangssignal 607 eine logische "1" ist, dann ist der Pfad für die Taktperiode N reserviert. Wenn das Signal 607 eine logische "0" ist, dann ist der Pfad in der Taktperiode N verfügbar. Mit jedem Taktimpuls 604 wird das Ausgangssignal 607 von dem Signalspeicher 606 zu dem nächsten Signalspeicher in dem Schieberegister übertragen. Daher wird das Eingangssignal eines jeden Signalspeichers zur Taktzeit T zu dem nächsten Signalspeicher zur Taktzeit T + 1 verschoben.
- Bei jedem Taktimpuls 604 wird der Signalspeicher 610 gesetzt oder gelöscht durch das Ausgangssignal des ODER-Gatters 608, dessen Eingangssignal Signal 609 ist, das ebenfalls als setze-Periode 1 bezeichnet und das Ausgangssignal 603 des vorherigen Signalspeichers 1. Das Ausgangssignal des Signalspeichers 610 wird über das Signal 611, das ebenfalls als Periode 1 belegt bezeichnet ist, zu den Konfliktprüfschaltungen 24 oder 26 übertragen.
- Mit jedem Taktimpuls 604 wird der Signalspeicher 614 gesetzt oder gelöscht durch das Ausgangssignal des ODER-Gatters 612, dessen Eingang das Signal 613, das ebenfalls als Periode-0-Setzen bezeichnet und das Ausgangssignal 611 des vorherigen Signalspeichers 610 ist. Das Ausgangssignal des Signalspeichers 614 wird über das Signal 615, das ebenfalls als Periode 0 belegt bezeichnet ist, zu den Konfliktprüfschaltungen 24 oder 26 übertragen.
- Jeder Signalspeicher des Schieberegisters kann in jeder Taktperiode durch die Konfliktprüfschaltungen 24 oder 26 abgetastet oder gesetzt werden. Es ist anzumerken, daß die Schaltungen 24 und 26 die Schieberegisterausgänge mit 1 vorbelegen müssen, weil die Verkettungsverzögerung eine Taktperiode vor dem Befehlsausgabezeitpunkt geprüft wird.
- Fig. 3 beschreibt die für die verbleibenden Betriebsmittel ausgeführte Konfliktprüfung, einschließlich der Vektorfunktionseinheiten 32 und 33, dem Lokalspeicherzugriff 34, dem allgemeinen Speicherzugriff 35 und den Vielfachpaketbefehlen 36.
- In der Phase -9 ist das Befehlswort im Register 10 vorhanden. Die Paketauswahl durch Schaltung 11 geschieht von Phase -8 bis Phase -7. In Phase -6 gelangt der Befehl 18 in die Decodierschaltung 13. Die Decodierschaltung 13 benötigt drei Phasen zur Bearbeitung. In Phase -3 überträgt die Decodierschaltung 13 die Information 20 zu den Konfliktprüfschaltungen 32, 33, 34, 35 und 36. Ein Hauptkonfliktsignal 37 wird in Phase -2 erzeugt, wenn ein Konflikt erfaßt wird. Wird kein Hauptkonfliktsignal 37 erzeugt, kommt es zur Ausgabe in Phase 0. In Phase +1 nach der Ausgabe werden die Betriebsmittelreservierungsflags durch die Schaltungen 32, 33, 34, 35 und 36 gesetzt.
- Fig. 4 liefert eine allgemeinere Beschreibung als die ersten drei Zeichnungen. In Phase -8 tritt das Befehlswort in die Auswahlschaltung 11 ein. Das Signal "Paketauswahl" 38 teilt der Auswahlschaltung 11 in Phase -7 mit, welches Paket zu wählen ist. In Phase -7 wird das Befehlspaket 18 zu den Decodierschaltungen 12 und 13 gesendet. In Phase -6 beginnt der Decodierprozeß. In Phase -4 ist der Decodierprozeß abgeschlossen und die Signale 19 und 20 werden generiert, welche anzeigen, welche Betriebsmittel durch den Befehl angefordert werden. In Phase -3 beginnen die Konfliktprüfungen 14, 15, 24, 26, 32, 33, 34, 35 oder 36 und vergleichen die Betriebsmittel, die zur Zeit belegt sind oder belegt werden mit den angeforderten Betriebsmitteln. Hauptkonfliktsignale 22, 28, 29 oder 37 werden in Phase -2 erzeugt, wenn ein Konflikt auftritt. Wird ein Hauptkonflikt angezeigt, kommt es nicht zur Befehlsausgabe in Phase 0 und das Signal Ausgabe 23 fällt ab. In Phase 0 kann ein anderes, Nebenkonflikt 39 genanntes Signal erzeugt werden. Ein Nebenkonfliktsignal 39 bedeutet, daß der das Hauptkonfliktsignal 22, 28, 29 oder 37 hervorrufende Betriebsmittelkonflikt noch besteht und daher die Befehlsausgabe angehalten werden muß.
- Deshalb werden in einer vorausschauenden Befehlsausgabesteuerung von der Befehlsausgabe eine Reihe von Prüfungen ausgeführt, die ein Hauptkonfliktsignal erzeugen können, welches bewirkt, daß die Befehlsausgabe für eine Taktperiode angehalten wird. Ist der Konflikt nicht innerhalb dieser einen Taktperiode gelöst, wird ein Nebenkonfliktsignal für zusätzliche Taktperioden erzeugt. Für jede nachfolgende Taktperiode verhindert das Nebenkonfliktsignal die Befehlsausgabe, bis der Konflikt gelöst ist. Wenn der Konflikt abschließend gelöst ist, fällt das Nebenkonfliktsignal ab und der Befehl kann ausgegeben werden. An diesem Punkt, +N-Phasen, nachdem die erste Befehlsausgabe vorgesehen war, werden die Betriebsmittelreservierungsflags durch die Befehlsausgabesteuerung gesetzt.
- Fig. 5 beschreibt in mehr Einzelheiten die zum Erzeugen des Hauptkonfliktes und des Nebenkonfliktes erforderliche Logik.
- In Phase -4 tritt eine Befehlsausgabe auf, die zwei Befehle oberhalb unseres Beispielbefehl es ist. Der Signalspeicher Ausgabe 501 wird durch das Ausgabesignal 23 für eine Taktperiode als ein Ergebnis der Befehlsausgabe gesetzt. In Phase -3 setzt Ausgabe 501 den Signalspeicher Ausgabe+1 502 für eine Taktperiode. In Phase -2 wird der Signalspeicher Primärkonflikt 506 für eine Taktperiode durch das UND-Gatter 505 gesetzt, dessen Eingangssignale Ausgabe+1 502, Anforderung 503 und Belegt 504 sind.
- Anforderung 503 repräsentiert die Wirkung der Schaltungen 12 und 13, welche eine Reihe von Signalen ausgeben, die die Betriebsmittelanforderungen des Beispielbefehl es identifizieren. Belegt 504 repräsentiert die Wirkungsweise der Schaltungen 15, 24, 26, 32, 33, 34, 35 und 36, welche eine Reihe von Signalen ausgeben, die ausweisen, welche Betriebsmittel zur Zeit belegt sind, und welche Betriebsmittel belegt werden, wenn der nächste Befehl in Phase -2 ausgegeben wird. Die UND- Operation bei 505 setzt Hauptkonflikt 506 für eine Taktperiode, wenn ein Konflikt zwischen den Ausgängen von Anforderung 503 und Belegt 504 auftritt.
- In Phase -2 erscheint die Ausgabe für den Befehl unmittelbar oberhalb des Beispielbefehles und Ausgabe 501 wird wiederum durch das Ausgabesignal 23 für eine Taktperiode gesetzt. In Phase -1 wird der Signalspeicher 509 für eine Taktperiode durch das UND-Gatter 508 gesetzt, dessen Eingangssignale Ausgabe 501 und Hauptkonflikt 506 sind. In Phase -1 wird Ausgabe+1 502 für eine Taktperiode durch Ausgabe 501 gesetzt. In Phase 0 wird der Signalspeicher Nebenkonflikt 511 für eine Taktperiode gesetzt durch das UND-Gatter 510, dessen Eingangssignal Ausgabe+1 502, Anforderung 503 und Belegt 504 ist. In Phase 0 verhindert Ausgabehalt 509 die Befehlsausgabe für das Befehlsbeispiel durch Setzen des Signalspeichers Keine-Ausgabe 512 für eine Taktperiode. In Phase +1 wird der Signalspeicher Keine-Ausgabe- +1 514 für eine Taktperiode durch Keine-Ausgabe 512 gesetzt. In Phase +1 wird Ausgabehalt 509 für eine Taktperiode durch das UND-Gatter 513 gesetzt, dessen Eingangssignale Keine-Ausgabe 512 und Nebenkonflikt 511 sind. In Phase +2 verhindert Ausgabehalt 509 wiederum die Befehlsausgabe durch Setzen von Keine-Ausgabe 512 für eine Taktperiode.
- Es ist anzumerken, daß ein Nebenkonflikt die Ausgabe eines Befehles nur dann anhalten kann, wenn ein Hauptkonflikt aufgetreten ist. Der Hauptkonflikt verhindert die Befehlsausgabe nur in Phase 0. Danach verhindert der Nebenkonflikt 511 die Befehlsausgabe solange, wie ein Konflikt zwischen Anforderung 503 und Belegt 504 besteht. Sobald der Konflikt gelöst ist, wird Nebenkonflikt 511 gelöscht. Als Ergebnis werden Ausgabehalt 509 und Keine-Ausgabe 512 gelöscht und die Befehlsausgabe erfolgt.
- Der Hauptkonflikt zeigt den "vorhersehbaren" Konflikt an. Im Gegensatz dazu verhindert der Nebenkonflikt die Ausgabe eines Befehls in der Ausgabeposition, bis alle angeforderten Betriebsmittel verfügbar sind. Wenn bei bekannten Maschinen ein Befehl in der Ausgabeposition ist, wird dieser gehalten, bis der Betriebsmittelkonflikt gelöst ist. Ein Hauptkonflikt zeigt andererseits an, daß die Betriebsmittel bereits belegt sind oder belegt werden, bevor der Befehl ausgegeben wird.
- Obwohl eine Schaltung mit spezieller Konfiguration für die bevorzugte Ausführungsform der hier dargelegten Erfindung beschrieben und dargestellt ist, ist es für einen Durchschnittsfachmann erkennbar, daß jede Schaltungsanordnung, welche zur Verwirklichung desselben Zweckes vorgesehen ist, anstelle der speziell gezeigten Schaltung verwendbar ist. Daher kann die hier offenbarte vorliegende Erfindung unter Verwendung anderer Komponenten und anderer zeitlicher Abfolgen als den in der detaillierten Beschreibung offenbarten implementiert werden. Diese Anmeldung soll jede Adaption oder Variation der vorliegenden Erfindung abdecken. Deshalb soll die Erfindung nur durch die Ansprüche beschränkt sein.
Claims (3)
1. Verfahren zur Befehlsausgabe in einem Computer der Art, der
mehrere Betriebsmittel, die von den Befehlen benutzt werden können,
wobei die Betriebsmittel Reservierungssignale oder -flags besitzen,
und ein System zur normalen Ablaufplanung von Befehlen für eine
sequentielle Ausgabe enthält, wobei das Verfahren gekennzeichnet ist
durch die Schritte:
einen Befehl auszuwählen, bevor der Befehl für die Ausgabe zeitlich
festgelegt wird;
den Befehl zu dekodieren, um mindestens ein darin benutztes
Betriebsmittel zu identifizieren;
ein Reservierungsflag für das Betriebsmittel zu prüfen und ein
Hauptkonfliktsignal zu erzeugen, falls das Betriebsmittel belegt sein
wird, wenn der Befehl zeitlich festgelegt wird, um das Betriebsmittel
zu benutzen;
zu verhindern, daß der Befehl zum festgelegten Zeitpunkt ausgegeben
wird, falls das Hauptkonfliktsignal erzeugt wird;
das Reservierungsflag für dieses Betriebsmittel zu prüfen, falls die
Befehlsausgabe verhindert wurde, und ein Nebenkonfliktsignal so lange
zu erzeugen, wie das Betriebsmittel belegt bleibt; und
eine Befehlsausgabe zu verhindern, während das Nebenkonfliktsignal
erzeugt wird.
2. Befehlsausgabeeinrichtung in einem Computer mit mehreren
Betriebsmitteln und mehreren Reservierungsflags, bei welcher jedes der
Betriebsmittel gleichzeitig von einem der Befehle benutzt werden kann
und jedes der Reservierungsflags einem der Betriebsmittel zugeordnet
ist und jedes Reservierungsflag angibt, ob das Betriebsmittel belegt
oder verfügbar ist, mit
einer Einrichtung (10, 11, 16) zum sequentiellen zeitlichen festlegen
der Befehle zur Ausführung;
gekennzeichnet durch
eine Einrichtung (11) zur Auswahl eines der Befehle, bevor der Befehl
für die Ausgabe zeitlich festgelegt wird;
eine Einrichtung (12, 13) zur Dekodierung des Befehls, um mindestens
eines der darin benutzten Betriebsmittel zu identifizieren;
eine Einrichtung (15) zur Überprüfung des Reservierungsflag für das
Betriebsmittel;
eine Einrichtung (15, 24, 26, 32, 33, 34, 35, 36) zur Erzeugung eines
Hauptkonfliktsignals (22, 28, 29, 37), falls das Betriebsmittel belegt
sein wird, wenn der Befehl zeitlich festgelegt wird, um das
Betriebsmittel zu benutzen;
eine Einrichtung (16) zur Verhinderung der Befehlsausgabe zum
festgelegten Zeitpunkt, falls das Hauptkonfliktsignal erzeugt wird;
eine Einrichtung (16) zur Erzeugung eines Nebenkonfliktsignals (39),
falls die Befehlsausgabe verhindert wurde, wobei das
Nebenkonfliktsignal so lange erzeugt wird, wie das Betriebsmittel belegt bleibt; und
eine Einrichtung (16) zur Verhinderung der Befehlsausgabe, während das
Nebenkonfliktsignal erzeugt wird.
3. Einrichtung nach Anspruch 2, bei welcher die Betriebsmittel
Vektorregister, Funktionseinheiten, Adressenregisterpfade,
Skalarregisterpfade, lokale Speicherpfade oder gemeinsame Speicherpfade
umfassen.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/297,967 US5127093A (en) | 1989-01-17 | 1989-01-17 | Computer look-ahead instruction issue control |
PCT/US1989/002544 WO1990008356A1 (en) | 1989-01-17 | 1989-06-12 | Computer look-ahead instruction issue control |
Publications (2)
Publication Number | Publication Date |
---|---|
DE68917317D1 DE68917317D1 (de) | 1994-09-08 |
DE68917317T2 true DE68917317T2 (de) | 1995-04-06 |
Family
ID=23148451
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE68917317T Expired - Fee Related DE68917317T2 (de) | 1989-01-17 | 1989-06-12 | Befehlsausgabesteuerung mit vorausschau für einen rechner. |
Country Status (7)
Country | Link |
---|---|
US (1) | US5127093A (de) |
EP (1) | EP0454671B1 (de) |
JP (1) | JP2868260B2 (de) |
AT (1) | ATE109576T1 (de) |
CA (1) | CA1321029C (de) |
DE (1) | DE68917317T2 (de) |
WO (1) | WO1990008356A1 (de) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5276822A (en) * | 1989-11-15 | 1994-01-04 | Matsushita Electric Industrial Co., Ltd. | System with enhanced execution of address-conflicting instructions using immediate data latch for holding immediate data of a preceding instruction |
US5555384A (en) * | 1989-12-01 | 1996-09-10 | Silicon Graphics, Inc. | Rescheduling conflicting issued instructions by delaying one conflicting instruction into the same pipeline stage as a third non-conflicting instruction |
US5544337A (en) * | 1989-12-29 | 1996-08-06 | Cray Research, Inc. | Vector processor having registers for control by vector resisters |
US5197130A (en) * | 1989-12-29 | 1993-03-23 | Supercomputer Systems Limited Partnership | Cluster architecture for a highly parallel scalar/vector multiprocessor system |
US5623650A (en) * | 1989-12-29 | 1997-04-22 | Cray Research, Inc. | Method of processing a sequence of conditional vector IF statements |
US5499348A (en) * | 1990-02-27 | 1996-03-12 | Matsushita Electric Industrial Co., Ltd. | Digital processor capable of concurrently executing external memory access and internal instructions |
JP2622008B2 (ja) * | 1990-03-08 | 1997-06-18 | 甲府日本電気株式会社 | 情報処理装置 |
US5598547A (en) * | 1990-06-11 | 1997-01-28 | Cray Research, Inc. | Vector processor having functional unit paths of differing pipeline lengths |
JP2642529B2 (ja) * | 1991-04-30 | 1997-08-20 | 株式会社東芝 | 並列プロセッサーの命令分配処理装置 |
JPH06203057A (ja) * | 1992-09-28 | 1994-07-22 | Nec Corp | ベクトル演算処理装置とその並列制御方式と並列制御回路 |
US5560025A (en) * | 1993-03-31 | 1996-09-24 | Intel Corporation | Entry allocation apparatus and method of same |
US5717947A (en) * | 1993-03-31 | 1998-02-10 | Motorola, Inc. | Data processing system and method thereof |
US5511181A (en) * | 1993-04-26 | 1996-04-23 | Apple Computer, Inc. | Polycyclic timing system and apparatus for pipelined computer operation |
US5463745A (en) * | 1993-12-22 | 1995-10-31 | Intel Corporation | Methods and apparatus for determining the next instruction pointer in an out-of-order execution computer system |
US5751985A (en) * | 1995-02-14 | 1998-05-12 | Hal Computer Systems, Inc. | Processor structure and method for tracking instruction status to maintain precise state |
EP0829045B1 (de) * | 1995-06-01 | 2002-09-04 | Fujitsu Limited | Koordination von befehlsausgabe in einem parallelen befehlsverarbeitungssystem |
US6560695B1 (en) * | 1995-11-16 | 2003-05-06 | International Business Machines Corporation | Dynamic pipe staging adder |
US5802573A (en) * | 1996-02-26 | 1998-09-01 | International Business Machines Corp. | Method and system for detecting the issuance and completion of processor instructions |
US5958042A (en) | 1996-06-11 | 1999-09-28 | Sun Microsystems, Inc. | Grouping logic circuit in a pipelined superscalar processor |
USRE38599E1 (en) * | 1996-06-11 | 2004-09-21 | Sun Microsystems, Inc. | Pipelined instruction dispatch unit in a superscalar processor |
US5887174A (en) * | 1996-06-18 | 1999-03-23 | International Business Machines Corporation | System, method, and program product for instruction scheduling in the presence of hardware lookahead accomplished by the rescheduling of idle slots |
US6044222A (en) * | 1997-06-23 | 2000-03-28 | International Business Machines Corporation | System, method, and program product for loop instruction scheduling hardware lookahead |
US5958041A (en) * | 1997-06-26 | 1999-09-28 | Sun Microsystems, Inc. | Latency prediction in a pipelined microarchitecture |
US6351802B1 (en) * | 1999-12-03 | 2002-02-26 | Intel Corporation | Method and apparatus for constructing a pre-scheduled instruction cache |
US6671794B1 (en) * | 2000-10-02 | 2003-12-30 | International Business Machines Corporation | Address generation interlock detection |
US20040111307A1 (en) * | 2002-12-04 | 2004-06-10 | International Business Machines Corporation | Electronic calendar management of privately owned resources |
DE10325240A1 (de) * | 2003-06-04 | 2004-12-30 | Tele-Info Ag | Online-Routenplaner |
JP5871298B2 (ja) * | 2009-09-10 | 2016-03-01 | Necプラットフォームズ株式会社 | 情報処理装置、情報処理方法及び情報処理プログラム |
JP4617393B1 (ja) * | 2010-01-15 | 2011-01-26 | 富士フイルム株式会社 | 有機電界発光素子 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3614745A (en) * | 1969-09-15 | 1971-10-19 | Ibm | Apparatus and method in a multiple operand stream computing system for identifying the specification of multitasks situations and controlling the execution thereof |
US3771138A (en) * | 1971-08-31 | 1973-11-06 | Ibm | Apparatus and method for serializing instructions from two independent instruction streams |
US4128880A (en) * | 1976-06-30 | 1978-12-05 | Cray Research, Inc. | Computer vector register processing |
JPH0760388B2 (ja) * | 1987-06-09 | 1995-06-28 | 三菱電機株式会社 | パイプライン制御回路 |
-
1989
- 1989-01-17 US US07/297,967 patent/US5127093A/en not_active Expired - Lifetime
- 1989-06-12 JP JP1507130A patent/JP2868260B2/ja not_active Expired - Fee Related
- 1989-06-12 EP EP89907564A patent/EP0454671B1/de not_active Expired - Lifetime
- 1989-06-12 AT AT89907564T patent/ATE109576T1/de active
- 1989-06-12 WO PCT/US1989/002544 patent/WO1990008356A1/en active IP Right Grant
- 1989-06-12 DE DE68917317T patent/DE68917317T2/de not_active Expired - Fee Related
- 1989-07-07 CA CA000605015A patent/CA1321029C/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
ATE109576T1 (de) | 1994-08-15 |
DE68917317D1 (de) | 1994-09-08 |
JP2868260B2 (ja) | 1999-03-10 |
JPH04502824A (ja) | 1992-05-21 |
CA1321029C (en) | 1993-08-03 |
WO1990008356A1 (en) | 1990-07-26 |
EP0454671B1 (de) | 1994-08-03 |
US5127093A (en) | 1992-06-30 |
EP0454671A1 (de) | 1991-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE68917317T2 (de) | Befehlsausgabesteuerung mit vorausschau für einen rechner. | |
DE69127101T2 (de) | System für verteilte mehrfachrechnerkommunikation | |
DE3750306T2 (de) | System zum Gewährleisten der logischen Unversehrtheit von Daten. | |
EP0179936B1 (de) | Verfahren und Einrichtung zur Steuerung einer Sammelleitung | |
DE2856483C2 (de) | ||
DE3300260C2 (de) | ||
DE3783370T2 (de) | Schaltung zur blockierungsverhinderung von hochprioritaetsanforderungen an eine systemsteuerung. | |
DE3110196A1 (de) | Datenverarbeitungssystem | |
DE2354521C2 (de) | Verfahren und Einrichtung zum gleichzeitigen Zugriff zu verschiedenen Speichermoduln | |
DE2953861C2 (de) | ||
DE3788492T2 (de) | Vorrichtung und Verfahren zur Verbesserung des Cachezugriffdurchflusses in Pipelineprozessoren. | |
DE3789490T2 (de) | Steuerungssystem für ein Vektorprozessor. | |
DE3750028T2 (de) | Pipelineprozessor mit schwacher Kopplung. | |
DE2635592A1 (de) | Multiprozessor-abrufsystem | |
EP0048767A1 (de) | Prioritätsstufengesteuerte Unterbrechungseinrichtung | |
DE2162806A1 (de) | Digitales Eingabe-Ausgabe-Steuersystem mit Kanalpufferung | |
DE2928488A1 (de) | Speicher-subsystem | |
DE2746064A1 (de) | Datenspeicher mit auffrischung | |
DE3400723C2 (de) | ||
DE4207158A1 (de) | Speicher-zugriffssteuerung | |
EP0006164A1 (de) | Multiprozessorsystem mit gemeinsam benutzbaren Speichern | |
DE1549437A1 (de) | Datenverarbeitendes System aus mehreren miteinander verbundenen Datenverarbeitungsanlagen | |
DE3855524T2 (de) | Arithmetik-Parallelverarbeitungseinheit und zugehöriger Kompilator | |
DE19526008A1 (de) | Vertikal partitionierter, primärer Befehls-Cache-Speicher | |
DE68926374T2 (de) | Seriellumsetzungssteuerungssystem für Hauptspeicherreferenz |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |