DE4222275A1 - Parallelprozessor und betriebsverfahren eines solchen - Google Patents

Parallelprozessor und betriebsverfahren eines solchen

Info

Publication number
DE4222275A1
DE4222275A1 DE4222275A DE4222275A DE4222275A1 DE 4222275 A1 DE4222275 A1 DE 4222275A1 DE 4222275 A DE4222275 A DE 4222275A DE 4222275 A DE4222275 A DE 4222275A DE 4222275 A1 DE4222275 A1 DE 4222275A1
Authority
DE
Germany
Prior art keywords
command
address
instructions
instruction
commands
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.)
Granted
Application number
DE4222275A
Other languages
English (en)
Other versions
DE4222275C2 (de
Inventor
Hideki Ando
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of DE4222275A1 publication Critical patent/DE4222275A1/de
Application granted granted Critical
Publication of DE4222275C2 publication Critical patent/DE4222275C2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing

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)

Description

Die Erfindung bezieht sich auf einen Parallelprozessor, insbesondere auf einen Prozessor vom superskalaren Typ (im folgenden als Superskalarprozessor bezeichnet), und auf ein Betriebsverfahren für einen solchen, mit dem insbesondere das Holen von Befehlen bewerkstelligt wird.
Der Superskalarprozessor ist ein Prozessor, der die folgenden Merkmale aufweist:
  • (1) Gleichzeitiges Holen einer Mehrzahl von Befehlen,
  • (2) Vorhandensein einer Mehrzahl von Funktionseinheiten und gleichzeitiges Ausführen einer Mehrzahl von Befehlen unter Verwendung dieser Einheiten und
  • (3) Herausfinden von Befehlen, die gleichzeitig ausgeführt werden können, aus der gleichzeitig geholten Mehrzahl von Befehlen, und Verteilen dieser gleichzeitig ausführbaren Befehle an entsprechende Funktionseinheiten.
Fig. 1 ist eine Darstellung, die den allgemeinen Aufbau eines Superskalarprozessors zeigt. In Fig. 1 weist der Superskalarprozessor einen Befehls-Cache (Befehlsspeicher) 1 zum Speichern von Befehlen, eine Befehlsholstufe (IF) 2 zum Übertragen der Adressen zu holender Befehle an den Befehlsspeicher 1 und eine Befehlsdekodierungsstufe (ID) 3 zum Ausführen von Operationen wie dem Dekodieren der Mehrzahl von aus dem Befehlsspeicher geholten Befehlen 1, dem Lesen eines Befehles eines Register-Files und dem Ausführen eines Abzweig-Befehles auf. Die Befehlsdekodierungsstufe (ID) 3 hat auch eine Funktion des Herausfindens gleichzeitig ausführbarer Befehle aus der dekodierten Mehrzahl von Befehlen und des Verteilens (Ausgebens) dieser gleichzeitig ausführbaren Befehle an eine entsprechende der Funktionseinheiten 4a, 4b, 5 und 6. Die Funktionseinheiten 4a, 4b, 5 und 6 können Befehle parallel zueinander ausführen. In der in Fig. 1 gezeigten Struktur sind Integer-Berechnungseinheiten 4a und 4b zum Ausführen einer Integer-Addition etc., eine Einheit 5 zum Ausführen einer Datenspeicherung in einen Daten-Cache (Datenspeicher) 7 oder zum Laden von Daten daraus und eine Einheit 6 zum Ausführen einer Gleitkommarechnung vorgesehen.
Im Superskalarprozessor sind die Befehlsholstufe (IF-Stufe) 2, die Befehlsdekodierungsstufe (ID-Stufe) 3 und die Funktionseinheiten 4a, 4b, 5 und 6 aneinandergereiht ("pipelined"). Die Funktionseinheiten 4a und 4b enthalten eine Ausführungsstufe EXC zum Ausführen eines von der Dekoderstufe 3 gegebenen Befehls und eine Rückschreibstufe (WB-Stufe) zum Einschreiben des Ergebnisses der Ausführung in ein Register-File (nicht gezeigt).
Eine Speicherzugriffseinheit 5 enthält eine Adreßberechnungsstufe (ADR-Stufe) zum Berechnen der Adresse des Daten-Cache 7 entsprechend einem Befehl von der Befehlsdekoderstufe 3, eine Speicherzugriffsstufe (MEM-Stufe) zum Ausführen eines Zugriffes auf den Daten-Cache 7 entsprechend der berechneten Adresse und eine Rückschreibstufe (WB-Stufe) zum Schreiben der geladenen Daten vom Daten-Cache 7 in das Register-File.
Die Gleitkommaberechnungseinheit 6 enthält drei Befehlsstufen EXC1, EXC2 und EXC3 zum Ausführen eines Befehls von der Befehlsdekoderstufe 3 und eine Rückschreibstufe WB zum Schreiben des Ergebnisses der Befehlsausführung in das Register-File.
Im Superskalarprozessor wird, wie oben beschrieben, eine Mehrzahl von Befehlen vom Befehls-Cache 1 zur gleichen Zeit geholt. Unter der Mehrzahl von gleichzeitig geholten Befehlen werden in der Dekoderstufe 3 Befehle, die gleichzeitig ausgeführt werden können, ermittelt und die ermittelten Befehle an die entsprechenden Funktionseinheiten ausgegeben. Die Funktionseinheiten 4a, 4b, 5 und 6 können Befehle parallel zueinander ausführen. Beim Superskalarprozessor kann im Vergleich zu einem herkömmlichen Prozessor eine verbesserte Verarbeitungsgeschwindigkeit erreicht werden, da eine Mehrzahl von Befehlen zur gleichen Zeit ausgeführt wird.
Fig. 2 zeigt schematisch das Wesen des Aufbaues einer Befehlsholstufe (IF) und einer Befehlsdekoderstufe (ID-Stufe) in einem herkömmlichen Superskalarprozessor. Bei dem in Fig. 2 gezeigten Aufbau des Superskalarprozessors werden vier Befehle gleichzeitig geholt und dekodiert.
Gemäß Fig. 2 enthält die Befehlsholstufe (IF) einen Programmzähler (PC) zum Halten der ersten Befehlsadresse einer Mehrzahl von Befehlen, die vom Befehls-Cache 1 zu holen sind. In der Befehlsholstufe (IF) legt der Programmzähler 8 einen Zeiger IC_addr an den Befehls-Cache 1 an und liest gleichzeitig die entsprechenden Befehle (vier Befehle). Die Adresse vom Programmzähler 8 wird in einem Addierer 9 (wenn alle vier Befehle ausgegeben sind) einer Addition von 16 unterzogen. Der Ausgang des Addierers 9 liefert eine Holadresse im nächsten Zyklus. Die Adressen vom Programmzähler 8 umfaßt 30 Bit <31 : 2<, und die signifikanteren 28 Bit <31 : 4< werden an den Befehls-Cache 1 angelegt. Die Schreibweise <31 : 2< kennzeichnet, daß das signifikanteste Adreßbit A31 und das am wenigsten signifikante Adreßbit A2 ist.
Der Befehls-Cache 1 liest die vier Befehle entsprechend der Adresse <31 : 4< der angelegten 28 Bit, aktiviert ein Signal IC_ready, das das Lesen dieser Befehle kennzeichnet, überträgt das Signal auf eine Signalleitung 10 und überträgt Werte IC data auf den Befehls-Bus 11.
Eine Fehlausrichtungs-Berechnungseinheit 17 berechnet die Grenzen von Worten in den vier vom Befehls-Cache 1 ausgelesenen Befehlen (IR1, IR2, IR3 und IR4) oder den Daten IC_data und berechnet ein Signal misalignment, das die Grenze repräsentiert. Die Berechnung der Grenze der Worte wird auf der Grundlage einer Adresse <3 : 2< der niedrigst signifikanten 2 Bit vom Programmzähler ausgeführt, was später im einzelnen beschrieben werden wird.
Die Befehlsdekodierungsstufe (ID-Stufe) enthält Befehlsregister 2a, 2b, 2c und 2d zum zeitweiligen Zwischenspeichern von aus dem Befehls-Cache 1 ausgelesenen Befehlen und einem Befehlsdekoder 13 zum Dekodieren der in den Befehlsregistern 12a bis 12d gespeicherten Befehle IR1, IR2, IR3 und IR4 und ein Register 14 zum Zwischenspeichern bzw. Verriegeln des Signales IC_ready vom Befehls-Cache 1.
Die Befehle IR1, IR2, IR3 und IR4 vom Befehls-Cache 1 werden unzusammenhängend bzw. unkonditioniert in die Befehlsregister 12a bis 12d eingeschrieben. Der Wert IC_data vom Befehls-Cache 1 enthält vier parallele Befehle IR1, IR2, IR3 und IR4.
Ob die in die Befehlsregister 12a bis 12d geschriebenen Befehle verfügbar sind oder nicht, wird auf der Grundlage dessen bestimmt, ob das vom Befehls-Cache 1 erzeugte Signal IC_ready anliegt oder nicht. Das Register 14 speichert das Signal IC_ready zum Kennzeichnen dessen, ob die in den Befehlsregistern 12a bis 12d gespeicherten Befehle IR1 bis IR4 verfügbar sind oder nicht. Das Zwischenspeichersignal wird im folgenden mit dem Präfix "ia" bezeichnet.
Der Befehlsdekoder 13 erzeugt Operationscodes code 1, code 2, code 3 und code 4, die Befehlsausführungen in den entsprechenden Funktionseinheiten auf der Grundlage von darin vorprogrammierten Befehlscodes kennzeichnen, und überträgt die erzeugten Codes auf Signalleitungen 15a, 15b, 15c bzw. 15d. Der Befehlsdekoder 13 überträgt auch - unter Bezug auf Befehle, die auf die Funktionseinheiten ausgegeben werden können - Flags ia_out 1, ia_out 2, ia_out 3 und ia_out 4 zum Kennzeichnen dessen, daß diese Befehle auf Signalleitungen 16a, 16b, 16c und 16d ausgebbar (verfügbar) sind.
Diese Operationscodes code 1 bis code 4 und die Verfügbarkeits-Flags ia_out 1 bis ia_out 4 werden an die Ausführungsstufen EXC1 oder ADR der jeweils entsprechenden Funktionseinheiten übertragen.
Diese Operationscodes code 1 bis code 4 werden in den entsprechenden Funktionseinheiten ausgeführt. Für die Art und Weise ihrer Ausführung sind verschiedene Verfahren vorgesehen bzw. wurden vorgeschlagen. Allgemein wird eine Operation in einer entsprechenden Funktionseinheit entsprechend einem angelegten Operationscode ausgeführt.
Aus dem Befehls-Cache 1 werden vier Befehle gleichzeitig ausgelesen. Wie weiter unten im einzelnen beschrieben wird, ist es jedoch nicht möglich, aus dem Befehls-Cache 1 gleichzeitig vier Befehle aus beliebigen Adressen auszulesen. Die Adressen, aus denen die vier Befehle aus dem Befehls-Cache 1 gleichzeitig ausgelesen werden können, werden durch die Grenzen von vier Worten bestimmt. Nachfolgend wird eine Beschreibung des Lesens dieser vier Befehle unter Bezugnahme auf die Zustände gegeben, in denen Befehle im Befehls-Cache 1 gespeichert sind:
Wenn eine Holadresse (der Ausgang PC des Programmzählers) 4n ist, können der Befehl 0, der Befehl 1, der Befehl 2 und der Befehl 3 ausgelesen werden. Wenn die Holadresse (der Zeiger PC) 4n+8 ist, können der Befehl 2, der Befehl 3, der Befehl 4 und der Befehl 5 ausgelesen werden. In diesem Falle gibt der Befehls-Cache 1 den Befehl 0, den Befehl 1, den Befehl 2 und den Befehl 3 aus. Wenn die Befehlsdekodierungsstufe (ID-Stufe) die angelegten Befehle in das Befehlsregister 12 übernimmt, nehmen die Befehlsregister 12c und 12d die als IR3 und IR4 angelegten Befehle auf, aber die Befehlsregister 12a und 12b nehmen die angelegten Befehle, nämlich den Befehl 0 und den Befehl 1, nicht als Befehle IR1 und IR2 auf. Die Register 12a und 12b sind rückgesetzt. Genauer gesagt, speichern die Register 12a und 12b einen Befehl "nop (kein Betrieb)".
Die Information zum Rückstellen des Befehlsregisters 12 wird durch Berechnen der Verschiebung des vom Programmzähler (PC) 8 erzeugten Zeigers PC von der Grenze der vier Worte oder dem Betrag der Fehlausrichtung erzeugt. Die Berechnung des Fehlausrichtungsbetrages wird durch die Fehlausrichtungs-Berechnungseinheit 17 ausgeführt. Die Fehlausrichtungs-Berechnungseinheit 17 erzeugt eine Information misalign über die Fehlausrichtung vom PC <3 : 2< der wenigsten signifikanten 2 Bit des Zeigers PC vom Programmzähler 8 und überträgt die erzeugte Information auf das Befehlsregister 12. Die Fehlausrichtungsinformation misalign hat 3 Bit <3 : 1<, und die Bit der 3-Bit-Werte <3 : 1< werden an die Befehlsregister 12a, 12b bzw. 12c geliefert. Der Addierer 9 addiert den Wert der Anzahl der ausgegebenen Befehle ×4 zum Zeiger PC durch ein Signal von einem (nicht gezeigten) Pfad vom Befehlsdekoder 13.
Fig. 3A ist eine Darstellung in Tabellenform, die eine durch die Fehlausrichtungs-Berechnungseinheit 17 ausgeführte logische Operation zeigt, und Fig. 3B zeigt den logischen Aufbau der Fehlausrichtungs-Berechnungseinheit 17. Wenn der Zeiger PC <3 : 2< z. B. "00" ist, bedeutet dies, das Befehle von der Grenze der Worte ausgelesen werden. Genauer gesagt, ist der Betrag der Fehlausrichtung in diesem Falle 0. Die Fehlausrichtungsinformation misalign <3 : 1< stellt in Übereinstimmung mit den Beträgen der Fehlausrichtung 0, 1, 2 bzw. 3 das Register 12a, 12a und 12b, das Register 12a und die Register 12b und 12c zurück. Wie in Fig. 3C gezeigt, werden die folgenden vier Befehle nicht geholt, bis nicht eine Gruppe von vier Befehlen insgesamt ausgegeben ist. Diese Gruppe von vier Befehlen wird wiederholt geholt, bis alle von ihnen ausgegeben sind.
Vier Befehle können nur gleichzeitig von der Grenze der vier Worte des Befehls-Cache 1 ausgelesen werden, da der Cache-Speicher 1 aus vier Speichern aufgebaut ist und die vier Speicher durch eine Adresse IC_addr zugegriffen werden. Dieser Aufbau ist in Fig. 4 gezeigt.
Wie Fig. 4 zeigt, enthält der Befehls-Cache 1 vier Speicher 19a, 19b, 19c und 19d. Der Speicher 19a speichert einen Befehl einer Adresse 16m (16m ist eine beliebige ganze Zahl). Der Speicher 19b speichert einen Befehl einer Adresse 16m+4. Der Speicher 19c speichert einen Befehl einer Adresse 16m+8. Der Speicher 19d speichert einen Befehl einer Adresse 16m+12. Ein Befehl besteht aus 32 Bit und ist über vier Adressen gespeichert. Die gleiche Holadresse IC_addr wird an diese vier Speicher 19a bis 19d angelegt. Gleichzeitig auszulesende Befehle sind in den gleichen Adressen der Speicher 19a bis 19d gespeichert. Daher werden vier serielle Befehle, ein Befehl 4M, ein Befehl 4M+1, ein Befehl 4M+2 und ein Befehl 4M+3, aus der Adresse 16m der 4-Wort-Grenze aus dem Cache 1 ausgelesen. Vier Befehle, die bei einer Adresse beginnen, die nicht an der 4-Worte-Grenze liegt, beispielsweise bei einer Adresse 16m+4, können jedoch nicht gleichzeitig ausgelesen werden. In diesem Falle werden die Befehle der Adressen 16m, 16m+4, 16m+8 und 16m+12 wieder ausgelesen. Es ist zu beachten, daß die Holadresse IC_addr die am wenigsten signifikanten 2 Bit <3 : 2< innerhalb des Zeigers PC <31 : 2< des Programmzählers 8 nicht enthält.
Das Erzeugen zweier Holadressen und das Vorsehen einer Schaltung zum Verschieben einer Ausgabe vom Befehls-Cache 1 entsprechend den Adreßwerten ermöglicht es, vier Befehle von einer beliebigen Adresse aus dem Befehls-Cache 1 auszulesen. Das Vorsehen einer solchen Struktur vergrößert jedoch die Zeit zum Zugreifen auf den Befehls-Cache 1 und beeinträchtigt die hohe Arbeitsgeschwindigkeit eines Prozessors.
Das herkömmliche Verfahren zum Holen eines Befehls, der nicht an einer 4-Worte-Grenze liegt, erfordert eine Rückstellschaltung für die Befehlsregister 12a, 12b und 12c. Die Anzahl von für die Befehlsregister 12 erforderlichen Transistoren steigt im Ergebnis dessen an, was bezüglich des Leistungsverbrauches, der belegten Chipfläche etc. zu Nachteilen führt.
Fig. 5 zeigt den Aufbau einer herkömmlichen Latchschaltung, die üblicherweise in einem Register verwendet wird, und Fig. 6 zeigt den Aufbau einer Latchschaltung (Zwischenspeicherschaltung) mit einem Rückstellanschluß. Das in den Fig. 5 und 6 gezeigte Signal "Takt" ist ein Taktsignal zum Ansteuern dieses Superskalarprozessors und definiert den Zyklus des Aneinander­ reihungs("pipelining")-Betriebes.
Eine Inverterschaltung erfordert mindestens zwei Transistoren, das heißt komplementär miteinander verbunden einen p-Kanal-MOS (PMOS-)-Transistor (Feldeffekttransistor mit isoliertem Gate) und einen n-Kanal-MOS(NMOS)-Transistor. Im Falle des in Fig. 5 gezeigten Aufbaues der Latchschaltung werden dementsprechend zehn Transistoren benötigt.
Der Aufbau der Latchschaltung mit Rückstellanschluß, wie er in Fig. 6 gezeigt ist, erfordert eine Zwei-Eingangs-NOR-Schaltung der Rückstellfunktion. Die Zwei-Eingangs-NOR-Schaltung enthält üblicherweise zwei NMOS-Transistoren, die zum Entladen eines Ausgangsabschnittes auf ODER-Art geschaltet sind, und zwei PMOS-Transistoren zum Laden des Ausgangsabschnittes, die auf UND-Art geschaltet sind. Das heißt, die NOR-Schaltung NR2 er­ fordert vier Transistoren. Die Latchschaltung mit Rückstell­ anschluß, die in Fig. 6 gezeigt ist, erfordert also insgesamt 12 Transistoren.
Im Vergleich zu einem Aufbau unter Verwendung einer herkömm­ lichen Latchschaltung werden für das in Fig. 2 gezeigte Be­ fehlsregister 12, wenn die Latchschaltung mit Rückstellan­ schluß für die drei Befehlsregister 12a, 12b und 12c verwendet wird, zusätzlich 192 (2×32×3) Transistoren benötigt (die Be­ fehlslänge ist 32 Bit).
Bei der Latchschaltung mit Rückstellanschluß (siehe Fig. 6) ist infolge ihrer Gatterschaltung zum Rückstellen die An­ sprechzeit gegenüber der in Fig. 5 gezeigten herkömmlichen Latchschaltung größer, was zu einer Verlängerung der Zyklus­ zeit führt.
Es ist Aufgabe der Erfindung, einen Parallelprozessor anzuge­ ben, bei dem das in der Vorstufe eines Befehlsdekoders vorge­ sehene Befehlsregister eine verringerte Anzahl von Transisto­ ren aufweist, der eine verringerte Zykluszeit hat und der über eine Steuerfunktion zum Holen eines Befehls, der nicht an einer 4-Wort-Grenze liegt, verfügt. Weiter ist es Aufgabe der Erfin­ dung, ein Betriebsverfahren für einen solchen Parallelprozes­ sor anzugeben.
Der erfindungsgemäße Parallelprozessor weist die Merkmale des Patentanspruches 1 auf.
Er enthält eine Mehrzahl von Registern zum Speichern von aus einem Befehlsspeicher ausgegebenen Befehlen und eine Mehrzahl von Verfügbarkeit-Registern, die entsprechend den Registern vorgesehen sind, und dazu dienen, eine Information darüber zu speichern, ob der Inhalt des entsprechenden Registers verfüg­ bar ist oder nicht.
Zweckmäßige Ausgestaltungen ergeben sich aus den Unteran­ sprüchen.
Das Befehlsregister ist aus einer gewöhnlichen Latchschaltung gebildet, und daher kann die Anzahl von Transistoren, die das Befehlsregister bilden, verringert werden.
Das erfindungsgemäße Betriebsverfahren für einen Parallelpro­ zessor weist die Merkmale des Patentanspruches 7 auf. Eine zweckmäßige Ausgestaltung ergibt sich aus dem Anspruch 8.
Weitere Merkmale und Zweckmäßigkeiten der Erfindung ergeben sich aus der Erläuterung eines Ausführungsbeispieles anhand der Figuren.
Von den Figuren zeigt:
Fig. 1 eine Darstellung des Gesamtaufbaues eines Super­ skalarprozessors,
Fig. 2 eine Darstellung, die die Befehlsholstufe und die Befehlsdekodierungsstufe eines herkömmlichen Su­ perskalarprozessors schematisch zeigt,
Fig. 3a, b, c Darstellungen, die die Logik, den Aufbau und die Befehlsholfolgen einer Fehlausrichtungs-Berech­ nungseinheit zeigen,
Fig. 4 eine Darstellung, die schematisch den Aufbau eines Befehls-Cache zeigt,
Fig. 5 eine Darstellung, die den Aufbau einer Latch­ schaltung ohne Rückstellanschluß zeigt,
Fig. 6 eine Darstellung, die den Aufbau einer Latch­ schaltung mit Rückstellanschluß zeigt, und
Fig. 7 eine Darstellung, die den Aufbau des mit dem Be­ fehlsholvorgang verbundenen Teils eines Super­ skalarprozessors entsprechend einer Ausführungs­ form der Erfindung zeigt.
Fig. 7 zeigt den wesentlichen Teil eines Parallelprozessors entsprechend einer Ausführungsform der Erfindung.
Wie Fig. 7 zeigt, sind Befehlsregister 12a bis 12d jeweils durch eine herkömmliche Latchschaltung - wie sie in Fig. 5 ge­ zeigt ist - gebildet, die ihrer Rückstellfunktion beraubt sind. Verfügbarkeits-Flag-Register 20a bis 20d sind entsprechend den Befehlsregistern 12a bis 12d vorgesehen. Das Verfügbarkeits- Flag-Register 20a speichert eine Flag ia1, die die Verfügbar­ keit eines Befehls IR1 zum Speichern im Befehlsregister 12a an­ zeigt. Das Verfügbarkeits-Flag-Register 20b speichert eine Ver­ fügbarkeits-Flag ia2, die die Verfügbarkeit eines Befehls IR2 zum Speichern im Befehlsregister 12b anzeigt. Das Verfügbar­ keits-Flag-Register 20c speichert eine Verfügbarkeits-Flag ia3, die die Verfügbarkeit eines Befehls IR3 zum Speichern im Be­ fehlsregister 12c angibt. Das Verfügbarkeits-Flag-Register 20d speichert eine Flag ia4, die die Verfügbarkeit eines Befehls IR2 zum Speichern im Befehlsregister 12d angibt.
Bei dem in Fig. 7 gezeigten Aufbau ist kein Register zum Spei­ chern eines Signales IC_ready, das das Liefern eines Befehls vom Befehls-Cache 1 anzeigt, vorgesehen.
Bei dem in Fig. 7 gezeigten Aufbau ist im Falle einer Fehlaus­ richtung die Verfügbarkeits-Flag ia, die mit dem entsprechenden Befehlsregister verbunden ist, ausgeschaltet. Genauer gesagt, werden die folgenden logischen Zustände erreicht:
ia1 = IC_ready * /misalign <1<
ia2 = IC_ready * /misalign <2<
ia3 = IC_ready * /misalign <3<
ia4 = IC_ready,
wobei das Symbol "*" einen logischen Multiplikationsvorgang und das Symbol "/" eine Negation bezeichnet. Die oben dargestellten logischen Zustände werden durch einen Inverter 22 zum Empfangen des Signals IC_ready vom Befehls-Cache 1 und NOR-Schaltungen 21a, 21b und 21c realisiert, die an ihrem einen Eingang den Ausgang des Inverters 22 und an ihrem anderen Eingang die ent­ sprechenden Bits der Fehlausrichtungs-Information misalign <3 : 1< von der Fehlausrichtungs-Berechnungseinheit 17 aufneh­ men. Der Ausgang der NOR-Schaltung 21a wird an das Verfügbar­ keits-Flag-Register 20a geführt. Der Ausgang der NOR-Schaltung 21 wird an das Verfügbarkeits-Flag-Register 20b geführt. Der Ausgang der NOR-Schaltung 21c wird an das Verfügbarkeits-Flag- Register 20c geführt.
Wenn die Verfügbarkeits-Flag aus ist, wird bei einem herkömmli­ chen Verfahren eine entsprechend dem Signal IC_ready vorge­ sehene Ausgebbarkeits-Anzeigeflag ia_out ausgeschaltet. Genau­ er gesagt, bestimmt der Befehlsdekoder 3 die Werte der Ausgeb­ barkeits-Anzeigeflags ia_out1 bis ia_out4 entsprechend den an den Befehlen IR1 bis IR4 angebrachten Verfügbarkeits-Flags ia1 bis ia4. Exakt wird im Befehlsdekoder 3 das folgende ausgeführt:
ia_out1 = ia1 * (Bedingung, unter der IR1 ausgegeben werden kann)
ia_out2 = ia2 * (Bedingung, unter der IR2 ausgegeben werden kann)
ia_out3 = ia3 * (Bedingung, unter der IR3 ausgegeben werden kann)
ia_out4 = ia4 * (Bedingung, unter der IR4 ausgegeben werden kann)
In den angeführten logischen Ausdrücken bezeichnet "*" einen logischen Multiplikationsvorgang und "/" eine Negation. Der Aufbau der Fehlausrichtungs-Berechnungseinheit 17 ist ähnlich der einer herkömmlichen.
Da die das Befehlsregister 12 bildende Latchschaltung bei dem in Fig. 7 gezeigten Schaltungsaufbau keine Rückstellfunktion erfordert, sind 192 Transistoren nicht erforderlich. Weiterhin können, da das Register 14 nicht länger notwendig ist, weitere zehn Transistoren eingespart werden. Die Anzahl der Transisto­ ren der Bauteile wird um 40 (4×10) Transistoren, die für das für das Befehlsregister 12 vorgesehene Verfügbarkeits-Flag-Re­ gister 20 erforderlich sind, 12 (3×4) Transistoren für die NOR- Schaltung 21 und zwei Transistoren für den Inverter 21 erhöht. Mit anderen Worten, wird bei dem in Fig. 7 gezeigten Aufbau die Gesamtzahl der Transistoren gegenüber dem in Fig. 2 gezeigten Aufbau und 148 verringert.
Wie oben dargelegt, kann mit der Erfindung die Anzahl der Transistoren zur Bildung einer Schaltung zum Einstellen der Ausrichtung bzw. zum Berechnen der Fehlausrichtung erheblich verringert werden. Weiterhin kann, da im Befehlsregister keine Rückstellfunktion vorgesehen ist, die Ansprechzeit des Befehls- Register verkürzt werden, was Verbesserungen der Leistungsfähig­ keit, insbesondere beim Hochgeschwindigkeitsbetrieb, eines Pa­ rallelprozessors erbringt.

Claims (8)

1. Parallelprozessor mit
einer Mehrzahl von Funktionseinheiten (4a, 4b, 5, 6), jeweils zur Ausführung einer vorbestimmten Funktion,
einer Dekodiereinrichtung (13) zum gleichzeitigen Holen einer Mehrzahl von Befehlen aus einem Befehlsspeicher (1), zum Herausfinden gleichzeitig ausführbarer Befehle unter den gehol­ ten Befehlen und zum Ausgeben dieser gleichzeitig ausführbaren Befehle an die entsprechenden Funktionseinheiten,
einer Mehrzahl von Befehlsregistereinrichtungen (12a, 12b, 12c, 12d) zum jeweiligen Speichern der vom Befehlsspeicher (1) geholten Befehle und
einer Mehrzahl von Verfügbarkeitsdaten-Registereinrichtungen (20a, 20b, 20c, 20d), die jeweils entsprechend der Mehrzahl von Registereinrichtungen angeordnet sind, zum Speichern von der Tatsache, daß der in der entsprechenden Registereinrichtung ge­ speicherte Befehl verfügbar ist, kennzeichnenden Daten, wobei der gespeicherte Befehl (IR1 bis IR4) in der Befehlsre­ gistereinrichtung (12a bis 12d) und der Wert (ir1 . . . ir4) der Verfügbarkeitsdaten-Registereinrichtung (20a bis 20d) parallel zueinander an die Dekodereinrichtung (13) geliefert werden.
2. Parallelprozessor nach Anspruch 1, gekennzeichnet durch
eine Adressenerzeugungseinrichtung (8) zum Erzeugen einer Hol­ adresse (IC_addr) des Befehlsspeichers (1),
eine Fehlausrichtungs-Berechnungseinrichtung (17) zur Erzeu­ gung einer Fehlausrichtungs-Information zwischen der ersten Adresse der gleichzeitig aus dem Befehlsspeicher ausgelesenen Mehrzahl von Befehlen und der Holadresse und
eine Verfügbarkeitsdaten-Erzeugungseinrichtung (21a, 21b, 21c, 22) zum Erzeugen der Verfügbarkeitsdaten (ir1 . . . ir4) jedes der Mehrzahl von Befehlen (IR1 bis IR4), die gleichzeitig aus dem Befehlsspeicher ausgelesen werden, aus einem Befehlsübertra­ gungssignal (IC_ready) vom Befehlsspeicher (1) und der Fehl­ ausrichtungsinformation (misalign <1<, <2<, <3<) von der Fehl­ ausrichtungs-Berechnungseinrichtung (17) und zum Einschreiben der erzeugten Verfügbarkeitsdaten in die zugeordnete Verfügbar­ keitsdaten-Registereinrichtung (20a bis 20d).
3. Parallelprozessor nach Anspruch 1 oder 2, dadurch gekenn­ zeichnet, daß die Befehlsregistereinrichtung (12a bis 12d) eine nicht rückstellbare Latchschaltung aufweist.
4. Parallelprozessor nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß die Verfügbarkeitsdaten-Registereinrich­ tung (20a bis 20d) eine nicht rückstellbare Latchschaltung auf­ weist.
5. Parallelprozessor nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß die Fehlausrichtungsinformation (misalign <1<, <2<, <3<) der Fehlausrichtungs-Berechnungseinrichtung (17) eine Befehlsspezifizierungsinformation zum Spezifizieren eines Befehls zwischen der Holadresse und der ersten Adresse aufweist und die Verfügbarkeitsdaten-Erzeugungseinrichtung (21a bis 21c, 22) aufweist:
  • (a) eine Einrichtung zum Übertragen des Befehlsübertragungssi­ gnals (IC_ready) als Verfügbarkeitswert für den Befehl der letzten Adresse unter den gleichzeitig geholten Befehlen und
  • (b) eine Einrichtung zum Erzeugen des Verfügbarkeitswertes je­ des der Befehle aus der Befehlsspezifizierungsinformation und dem Befehlsübertragungssignal für jeweilige Befehle zwischen der ersten Adresse und der letzten Adresse.
6. Parallelprozessor nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, daß die Dekodiereinrichtung (13) eine Einrich­ tung zum Empfangen des Befehls von der Befehlsregistereinrich­ tung (12a bis 12d) und des Wertes von der Verfügbarkeitsdaten- Registereinrichtung (20a bis 20d), zum Herausfinden der gleich­ zeitig ausführbaren Befehle und zum Erzeugen einer Ausgebbar­ keitsanzeige-Flag für jeden der Befehle aus den Verfügbarkeits­ daten und den Ausführbarkeits-Anzeigedaten aufweist.
7. Betriebsverfahren für einen Parallelprozessor mit einer Mehrzahl von Funktionseinheiten (4a, 4b, 5, 6), jeweils zum Ausführen einer vorbestimmten Funktion, der zum gleichzeitigen Ausführen einer Mehrzahl von Befehlen in der Lage ist, mit den Schritten:
Erzeugen eines Adreßzeigers (PC) und gleichzeitiges Holen einer Mehrzahl von Befehlen aus einem Befehlsspeicher (1), wobei der Adreßzeiger eine die erste Adresse der Mehrzahl von Befehlen angebende Holadresse (IC_addr) und eine die Fehlaus­ richtung zwischen der Holadresse und dem Adreßzeiger angebende Fehlausrichtungsadresse aufweist und der Befehlsspeicher (1) eine Befehlsübertragungs-Flag (IC_ready) zum Zeitpunkt der Übertragung der Befehle erzeugt,
Speichern der Mehrzahl von Befehlen (IR1 bis IR4) parallel in einem nicht rückstellbaren Register (12a bis 12d),
Erzeugen einer Verfügbarkeits-Flag (ia1 . . . ia4) zum Anzeigen der Verfügbarkeit/Nichtverfügbarkeit jedes der Mehrzahl der Befehle entsprechend der Fehlausrichtungs-Adresse (misalign <1<, <2<, <3<) und der Befehlsübertragungs-Flag und Speichern der so erzeugten Verfügbarkeits-Flags (ia1 . . . ia4) entsprechend jedem der Befehle (IR1 bis IR4).
8. Verfahren nach Anspruch 7, gekennzeichnet durch die Schritte des Empfangens der Befehle (IR1 bis IR4) in den nicht rück­ stellbaren Registern (12a bis 12d) und der Verfügbarkeits-Flags (ia1 . . . ia4) parallel zueinander, des Herausfindens der gleich­ zeitig ausführbaren Befehle, des Erzeugens einer Ausgebbarkeit- Flag (ia_out1 . . . ia_out4) aus der Verfügbarkeits-Flag und der Anzeige der gleichzeitigen Ausführbarkeit und des Ausgebens der Ausgebbarkeits-Flag und des ausführbaren Befehls in Verbindung zu einer entsprechenden Funktionseinheit.
DE4222275A 1991-07-09 1992-07-07 Parallelprozessor und Betriebsverfahren für diesen Expired - Lifetime DE4222275C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3168063A JP2779557B2 (ja) 1991-07-09 1991-07-09 並列演算処理装置

Publications (2)

Publication Number Publication Date
DE4222275A1 true DE4222275A1 (de) 1993-01-21
DE4222275C2 DE4222275C2 (de) 1995-12-21

Family

ID=15861145

Family Applications (1)

Application Number Title Priority Date Filing Date
DE4222275A Expired - Lifetime DE4222275C2 (de) 1991-07-09 1992-07-07 Parallelprozessor und Betriebsverfahren für diesen

Country Status (3)

Country Link
US (1) US5504923A (de)
JP (1) JP2779557B2 (de)
DE (1) DE4222275C2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0583089A2 (de) * 1992-08-12 1994-02-16 Advanced Micro Devices, Inc. Befehlsentschlüssler

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2760273B2 (ja) * 1993-12-24 1998-05-28 日本電気株式会社 演算装置及びその制御方法
US5991869A (en) * 1995-04-12 1999-11-23 Advanced Micro Devices, Inc. Superscalar microprocessor including a high speed instruction alignment unit
US5872947A (en) * 1995-10-24 1999-02-16 Advanced Micro Devices, Inc. Instruction classification circuit configured to classify instructions into a plurality of instruction types prior to decoding said instructions
US6049863A (en) * 1996-07-24 2000-04-11 Advanced Micro Devices, Inc. Predecoding technique for indicating locations of opcode bytes in variable byte-length instructions within a superscalar microprocessor
US5867680A (en) * 1996-07-24 1999-02-02 Advanced Micro Devices, Inc. Microprocessor configured to simultaneously dispatch microcode and directly-decoded instructions
US5881260A (en) * 1998-02-09 1999-03-09 Hewlett-Packard Company Method and apparatus for sequencing and decoding variable length instructions with an instruction boundary marker within each instruction
US6438664B1 (en) 1999-10-27 2002-08-20 Advanced Micro Devices, Inc. Microcode patch device and method for patching microcode using match registers and patch routines
DE10043003A1 (de) * 2000-09-01 2002-03-14 Infineon Technologies Ag Programmgesteuerte Einheit
JP2009230610A (ja) * 2008-03-25 2009-10-08 Kawai Musical Instr Mfg Co Ltd 命令処理装置及び命令処理方法。
US9223714B2 (en) 2013-03-15 2015-12-29 Intel Corporation Instruction boundary prediction for variable length instruction set

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2702586B2 (de) * 1977-01-22 1978-11-02 Standard Elektrik Lorenz Ag, 7000 Stuttgart Schaltungsanordnung zum Steuern des Speicherzugriffs bei einem Rechner
US4924376A (en) * 1985-12-26 1990-05-08 Nec Corporation System for dynamically adjusting the accumulation of instructions in an instruction code prefetched pipelined computer

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4295193A (en) * 1979-06-29 1981-10-13 International Business Machines Corporation Machine for multiple instruction execution
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.
US5051940A (en) * 1990-04-04 1991-09-24 International Business Machines Corporation Data dependency collapsing hardware apparatus
JPH0810430B2 (ja) * 1986-11-28 1996-01-31 株式会社日立製作所 情報処理装置
US5201057A (en) * 1987-01-22 1993-04-06 Uht Augustus K System for extracting low level concurrency from serial instruction streams
JP2729795B2 (ja) * 1987-11-19 1998-03-18 株式会社日立製作所 並列計算機及びその制御方法
US5073855A (en) * 1989-06-30 1991-12-17 Bull Hn Information Systems Inc. Resource conflict detection method and apparatus included in a pipelined processing unit
JP2818249B2 (ja) * 1990-03-30 1998-10-30 株式会社東芝 電子計算機

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2702586B2 (de) * 1977-01-22 1978-11-02 Standard Elektrik Lorenz Ag, 7000 Stuttgart Schaltungsanordnung zum Steuern des Speicherzugriffs bei einem Rechner
US4924376A (en) * 1985-12-26 1990-05-08 Nec Corporation System for dynamically adjusting the accumulation of instructions in an instruction code prefetched pipelined computer

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
US-Z.: "IEEE Transactions on Computers", Vol. 39, No. 3, März 1990, S. 349-359 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0583089A2 (de) * 1992-08-12 1994-02-16 Advanced Micro Devices, Inc. Befehlsentschlüssler
EP0583089A3 (de) * 1992-08-12 1994-08-03 Advanced Micro Devices Inc
US6279101B1 (en) 1992-08-12 2001-08-21 Advanced Micro Devices, Inc. Instruction decoder/dispatch

Also Published As

Publication number Publication date
JPH0520068A (ja) 1993-01-29
US5504923A (en) 1996-04-02
DE4222275C2 (de) 1995-12-21
JP2779557B2 (ja) 1998-07-23

Similar Documents

Publication Publication Date Title
DE4305442C2 (de) Verfahren und Vorrichtung zum Erzeugen eines Testvektors
DE69017178T2 (de) Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung.
DE2755273C2 (de)
DE4035405C2 (de)
DE2907181C2 (de) Prozessor mit einem Befehlssatz-Modifizierregister
DE3689923T2 (de) Dreiphasen-Pipeline-Signalprozessor.
DE69738188T2 (de) Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor
DE3424962C2 (de)
DE1499722C2 (de) Einrichtung zur Modifizierung von Informationswörtern
DE3686991T2 (de) Mechanismus fuer parallele speicherdatenabholung und befehlsausfuehrung in einem prozessor mit reduziertem befehlssatz.
DE2542751C2 (de) Datenverarbeitungsanlage
DE3586603T2 (de) Datenprozessor fuer interpretierende und kompilierte sprache.
DE68907518T2 (de) Inhaltsadressierte Speicheranordnung.
DE2023354C2 (de) Datenverarbeitungsanlage mit einem Mikrobefehlsspeicher
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE2714805A1 (de) Datenverarbeitungssystem
DE69027932T2 (de) Cpu-pipeline mit registerfile-bypass durch adressvergleich bei aktualisierungen/zugriffen
DE19506990A1 (de) Einrichtung zur Datenumleitung in einem Prozessor mit mehreren Ausführungseinheiten
DE2234867A1 (de) Anordnung in datenverarbeitungsanlagen zum steuern der verarbeitung zweier voneinander unabhaengiger programme
DE2715073A1 (de) Mikroprogrammierte rechner-steuervorrichtung
DE2524046A1 (de) Elektronische datenverarbeitungsanlage
DE4222275C2 (de) Parallelprozessor und Betriebsverfahren für diesen
DE4134387C2 (de) Vorrichtung und Verfahren zum Befehlszuführen in Geräten mit Parallelverarbeitung
EP0325677B1 (de) Schaltungsanordnung und Steuerverfahren eines Befehlspufferspeichers in einer Datenverarbeitungsanlage
DE69030036T2 (de) Pipelineprozessor, der Befehle mit variabler Länge nutzt

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
D2 Grant after examination
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: PRUFER & PARTNER GBR, 81545 MUENCHEN

R071 Expiry of right
R071 Expiry of right