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
Application number
DE68917317T
Other languages
English (en)
Other versions
DE68917317D1 (de
Inventor
William Moore
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cray Research LLC
Original Assignee
Cray Research LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cray Research LLC filed Critical Cray Research LLC
Publication of DE68917317D1 publication Critical patent/DE68917317D1/de
Application granted granted Critical
Publication of DE68917317T2 publication Critical patent/DE68917317T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8076Details on data register access
    • G06F15/8084Special arrangements thereof, e.g. mask or switch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3875Pipelining 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

    Gebiet der Erfindung
  • Die Erfindung betrifft allgemein eine Steuerlogik für Computersysteme. Insbesondere ist sie auf eine Befehlsausgabesteuerung mit Vorausschau gerichtet.
  • Hintergrund der Erfindung
  • 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.
  • Abriß der Erfindung
  • 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.
  • Beschreibung der Figuren
  • 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.
  • Detaillierte Beschreibung der bevorzugten Ausführungsform
  • 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.
DE68917317T 1989-01-17 1989-06-12 Befehlsausgabesteuerung mit vorausschau für einen rechner. Expired - Fee Related DE68917317T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 三菱電機株式会社 パイプライン制御回路

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