-
Die Erfindung betrifft einen Rechner mit
Fließbandverarbeitung (pipeline), und insbesondere die Steuerung eines
Programmzahlers, der in einem Rechner mit
Fließbandverarbeitung verwendet wird.
Hintergrund der Erfindung
-
In fortgeschrittenen Rechnern wurde die Architektur in
verschiedenen Punkten verbessert, um mit Hochsprachen und
einem gemeinsamen Betriebssystem übereinzustimmen.
Insbesondere wird ein verschiebliches (relocatable) Programm
weitgehend verwendet, da Standardprogramme an jedem Ort in
einem Adreßraum angeordnet sein können. Dies ist sehr
vorteilhaft in solchen Umgebungen, wo das Programm in einer
Mehrzahl von Situationen verwendet wird. Als Einrichtung
zum einfachen Realisieren des verschieblichen Programms
gibt es den sog. Programmzähler/Relativadressen-Modus, der
eine Kodemodifikation, die für das Verschieben des
Programms erforderlich ist, minimiert. Verschiedene
Zentralprozessoreinheiten, die den Programmzähler/Relativadressen-
Modus realisieren, werden bereits verwendet. Hinsichtlich
der Details kann beispielsweise verwiesen werden auf "VAX
Architecture Handbook", Digital Equipment Corporation; "MC
68020 User's Manual", Motorola, Inc.; "Z80000 CPU Technical
Manual", Zilog; "NS 32032 Instruction Set Reference
Manual", National Semiconductor Corp., etc.
-
In den meisten konventionellen Zentralprozessoreinheiten,
die den Programmzähler/Relativadressen-Modus aufweisen,
übernimmt die Architektur eine Hardwarestruktur, die die
Befehlsdekodierung und die Operandenadreßberechnung, ohne
sie voneinander zu unterscheiden, durchführt. Aufgrund
dessen ist es normal, daß der Wert eines Programmzählers bei
der Adreßberechnung einen Kopf oder Endteil eines Teils
eines gegebenen Befehls anzeigt, der die Information
bezüglich der Adreßberechnung enthält. Beispielsweise kann Bezug
genommen werden auf die Programmzähler/Relativadressierung,
die in der VHX-ll-Maschine von Digital Equipment
Corporation angewendet wird. Das oben bezeichnete "VAX
Architecture Handbook" zeigt auf Seite 110 ein Beispiel eines
Befehls "MOVE LONG WORD" in der VAX-11-Maschine. Dieses
Beispiel ist in Fig. 3 dargestellt. Die Adresse des ersten
Operanden ist nicht eine Befehlskopfadresse "00001012h"
(der Index "h" bedeutet die hexadezimale Notierung),
sondern "00002016h", was durch Addierung der Verschiebung
"1000h" zur Adresse "00001016" an das Endteil eines Teils
erhalten wird, der die Information hinsichtlich der Adresse
des ersten Operanden enthält.
-
Bei der bekannten Technik war es für den Fall der
Modifizierung der Hardwarearchitektur der Zentralprozessoreinheit
zur Verbesserung ihrer Leistungsfähigkeit bei Beibehaltung
der Kompatibilität auf dem Objektkodepegel erforderlich,
den Wert des erforderlichen Programmzählers bei der
Berechnung der Programmzähler/Relativadresse schnell zu erhalten,
d.h. ein Zwischenresultat des Programmzählers, das
entsprechend mit dem Fortschritt der Befehlsdekodieroperation
modifiziert ist. Ein Befehlssatz mit einer Funktion auf hohem
Level und einer Anzahl von Befehlen wurden bislang in Form
eines Befehls variabler Wortlänge ausgedrückt. Des weiteren
ist die Befehlslänge wesentlich vom Inhalt des Befehls
selbst abhängig. Beispielsweise ist die Befehlslänge
abhängig von:
-
(1) der Anzahl der durch den Befehl bezeichneten Operanden
(0. Operand, 1. Operand, 2. Operand, ...);
-
(2) der Adreßinformation des Operanden (zusätzliche
Information wie Indexmodifizierung, Verschiebung,
dringliches Datum etc.);
-
(3) der Kodierung der Befehlsoperation (Befehle mit hoher
Nutzungsfrequenz werden so kurz wie möglich kodiert).
-
Die JP-B-59-31733 beschreibt ein Beispiel einer
Programmzähler/Relativadressen-Berechnung in der oben beschriebenen
Weise von VAX-11, und diese Anordnung entspricht dem
Oberbegriff von Anspruch 1. In diesem Beispiel müssen nicht nur
die Verschiebung "1000h" sondern auch ein Byte, das die
Operation eines Befehls bezeichnet, ein weiteres Byte, das
angibt, daß der erste Operand die
Programmzähler/Relativadressierung ist, und zwei Bytes, die die
Verschiebung für die Adreßberechnung des ersten Operanden
angeben, der Kopfadresse "00001012h" für den Befehl addiert
werden.
-
Wie sich aus dem obigen ergibt, bedeutet die Tatsache, daß
das Resultat der Befehlsdekodieroperation in der
Operandenadreßkalkulation verwendet wird, daß die beiden Arten
von Operationen eine hohe gegenseitige Abhängigkeit
aufweisen. Mit anderen Worten sind die beiden Arten von
Operationen nur geringfügig voneinander unabhängig. Dies ist ein
Hinderungsgrund bei der Erhöhung der
Parallelverarbeitungsmöglichkeit der beiden Arten von Operationen. Diese Neigung
wird vergrößert, wenn Hochpegelfunktionen wie Index dem
Programmzähler/Relativadressen-Modus zugefügt werden.
-
Von einem anderen Gesichtspunkt aus ist der Anstieg der
Elemente, die für die Adreßberechnung zugefügt werden
müssen, dem Befehl variabler Wortlänge nachteilig.
Insbesondere ist die Adreßberechnung von 32 Bit oder mehr unbequem
für eine Übertrag-Transfersteuerung. Im einzelnen sind eine
oder mehrere Berechnungen bei der Adreßberechnung zur
Korrektur des Programmzählers, der den Kopf des laufenden
Befehls bezeichnet, erforderlich. In diesem Fall muß ein
Übertrag über eine lange Bitlänge von 32 Bit oder mehr
transferiert werden. Aufgrund dessen ist die Zeitsteuerung
begrenzt, da auf den Transfer des Übertrags gewartet werden
muß. Um dieses Problem zu überwinden, kann ein "Übertrag-
Vorausschau"-Verfahren oder ein "Übertrag-Merken"-Verfahren
zur Beschleunigung der Operation verwendet werden. Es ist
jedoch eine zusätzliche Hardwarequelle zur Ausführung eines
solchen Verfahrens erforderlich, und somit ist es teuer.
-
Dementsprechend liegt der Erfindung eine Aufgabe zugrunde,
ein Programmzähler/Relativadressenberechnungssystem zu
schaffen, das den oben beschriebenen Nachteil nicht zeigt.
-
Eine weitere Aufgabe der Erfindung liegt in der Schaffung
eines Programmzähler/Relativadressenberechnungssystems, das
eine Befehlsdekodierung und eine Operandenadreßberechnung
parallel in einem Fließbandprozessor ausführen kann.
-
Eine weitere Aufgabe der Erfindung liegt in der Schaffung
eines Fließbandprozessors, der in der Lage ist, eine
Befehlsdekodierung und eine Operandenadreßberechnung parallel
durchzuführen.
-
Die obigen und andere Aufgaben der Erfindung werden
erfindungsgemäß durch einen Prozessor gelöst, der in Anspruch 1
definiert ist; die abhängigen Ansprüche betreffen weitere
Entwicklungen der Erfindung.
-
Bei dem erfindungsgemäßen Aufbau sind die Einrichtung zum
Aktualisieren des Programmzählers für einen nächsten Befehl
und die Einrichtung zum Ausführen der
Effektivadreßberechnung unabhängig voneinander vorgesehen, und aufgrund dessen
können sie unabhängig voneinander gesteuert werden. Des
weiteren kann in den Prozeß der Effektivadreßberechnung die
Effektivadreß-Berechnungseinrichtung den Wert des
Programmzählers, bevor der Programmzähler auf die Adresse des
nächsten Befehls aktualisiert wird, verwenden. Dementsprechend
können das Aktualisieren des Programmzählers und die
Effektivadreßberechnung gleichzeitig ausgeführt werden, so daß
der Grad einer Parallelverarbeitung für die
Befehlsdekodierung erhöht werden kann.
-
In einer bevorzugten Ausführungsform ist ein Addierer
vorgesehen, der nur zum Voreinstellen (offsetting) des
Programmzählers verwendet wird. In diesem Fall kann die Anzahl
oder die Zeit der Addition von Langbitdaten, die direkt für
den Programmzähler durchzuführen ist, vermindert werden.
Somit ist es möglich, die Leistungsfähigkeit der
individuellen Operationen im Prozessor zu erhöhen.
-
Die obigen und andere Aufgaben, Merkmale und Vorteile der
Erfindung werden aus der folgenden Beschreibung bevorzugter
Ausführungsformen der Erfindung mit Bezug auf die
beigefügten Zeichnungen deutlich.
Kurzbeschreibung der Zeichnungen
-
Fig. 1 ist ein Blockdiagramm einer Ausführungsform des
Adreßberechnungssystems gemäß der Erfindung;
-
Fig. 2 ist ein Zeitablaufdiagramm zur Erläuterung eines
Betriebs des in Fig. 1 dargestellten Systems; und
-
Fig. 3 zeigt ein Berechnungsbeispiel der konventionellen
Programmzähler/Relativadressierung.
-
Beschreibung bevorzugter Ausführungsbeispiele
Bezugnehmend auf Fig. 1 ist dort ein Ausführungsbeispiel
des Programmzähler/Relativadressen-Berechnungssystems gemäß
der Erfindung dargestellt. Fig. 2 zeigt das
Zeitablaufdiagramm
für ein Betriebsbeispiel des Systems. In Fig. 2 sind
drei Zyklen Mn-1, Mn und Mn+1 dargestellt, wobei jeder
Zyklus in vier Zeitabschnitte Tl, T2, T3 und T4 unterteilt
ist.
-
Das dargestellte System umfaßt einen Befehlsdekoder 101,
der mit einem Befehlsbus 121 gekoppelt ist und durch einen
Sequenzkontroller 104 zur Befehlsdekodierung gesteuert
wird, der ferner die Operationszeitsteuerung verschiedener
anderer in dem System enthaltener Elemente steuert. Der
Dekoder 101 empfängt einen Befehl vom Bus 121 zum Zeitpunkt
TIP (201) jedes in Fig. 2 dargestellten Zyklus und dekodiert
einen Befehlskode und ein Adreßfeld, das im empfangenen
Befehl enthalten ist, zum Zeitpunkt T2 (202) jedes Zyklus.
Anschließend erzeugt der Dekoder 101 eine Befehlskodelänge
IL, einen Befehlstyp ITYP, eine Adreßfeldinformation AF und
einen Operandendatentyp DTYP. Die Befehlskodelänge IL wird
einem Befehlsanforderungs-Byteanzahlgenerator 103 zugeführt
und der Befehlstyp ITYP wird dem Sequenzkontroller 104 und
einem Effektivadressenerzeugungs-Kontroller 107 zugeführt.
Die Adreßfeldinformation AF und der Operandendatentyp DTYP
werden einem Befehlsanforderungskontroller 102 zugeführt,
dem Sequenzkontroller 104 und dem
Effektivadressenerzeugungs-Kontroller 107. Als Resultat der Dekodierung zeigt IL
beispielsweise an, daß die Befehlskodelänge ein Byte
beträgt, und ITYP zeigt an, daß ein Befehl ein
Operationsbefehl mit zwei Operanden ist. AF zeigt an, daß ein erster
Operand einen Programmzähler/Relativadressen-Modus mit
einer Verschiebung von 16 Bytes aufweist, und ein zweiter
Operand zeigt das Register an. DTYP zeigt die Datenlänge
von 32 Bits an.
-
Der Befehlsanfordungsbyteanzahlgenerator 103 berechnet die
Bytezahl eines Befehlswortes, das in dem nächsten
Dekodierzyklus erforderlich ist, auf Basis des dekodierten
Ergebnisses des gesamten oder eines ersten Teils des gegebenen
Befehlswortes, das durch den Dekoder 101 gegeben wird.
Diese Byteanzahl hängt jedoch von der Befehlslänge ab, die
durch den Dekoder 101 in einem Dekodierzyklus dekodiert
werden kann. In diesem Ausführungsbeispiel hat der Dekoder
101 eine ausreichende Dekodierungskapazität, um bei einem
Dekodierungszyklus alle Inhalte von IL, ITYP, AF und DTYP
zu dekodieren, ausgenommen einige Ausnahmefä1le. Der
Befehlsanforderungsbyteanzahlgenerator 103 wird durch den
Befehlsanforderungskontroller 102 gesteuert und liefert an
seinem Ausgang 131 das Byteanzahldatum, das dem
Programmzähler-Off setaddierer 106 zugeführt wird. Die Ausgabe 131
des Befehlsanforderungsbyteanzahlgenerators 103 und die
Ausgabe 132 des Befehlsanforderungskontrollers 102 bilden
zusammen ein Befehlsanforderungssiganl IREQ. Insbesondere
bilden die Ausgaben 131 und 132 ein Schnittstellensignal
für eine Befehlsschlange mit Ausrichtmöglichkeit.
-
Der Befehlsanforderungskontroller 102 hat einen weiteren
Ausgang 134, der mit einem
Programmzähler/Aktualisierungskontroller 105 verbunden ist. Der
Offsetaddierer 106 wird zum Zeitpunkt T1 (209) rückgestellt
und mit der Ausgabe 131 zum Zeitpunkt T2 (203) addiert.
Diese Operation des Offsetaddierers 106 wird durch den
Aktualisierungskontroller 105 über die Steuerleitung 133
durchgeführt. Die Operation des Aktualisierungskontrollers
105 wird durch die Ausgabe 134 des
Befehlsanforderungskontrollers 102 gesteuert. Insbesondere modifiziert der
Aktualisierungskontrol1er 105 den Offsetaddierer 106, wenn in
dem vorhergehenden Dekodierungszyklus die Befehlswortlänge
geringer ist als die Länge, die im laufenden Dekodierzyklus
dekodiert werden kann.
-
Das dargestellte System umfaßt einen Programmzähler 103 für
die Befehlsdekodierung, der mit dem Befehlsbus 121 und dem
Effektivadressen-Berechnungsbus 122 verbunden ist. Dem
Programmzähler 108 ist ein Addierer 112 zugeordnet und ein
Inkrementer 113 ist, wie dargestellt, geschaltet. Das
dargestellte System umfaßt ferner ein Registerfile 109 zur
Effektivadressenberechnung, das mit dem Befehlsbus 121 und
dem Effektivadressen-Berechnungsbus 122 gekoppelt ist. Das
Registerfile 109 ist ferner mit seinem Ausgang mit einem
Effektivadreßaddierer 110 verbunden, der mit einer
Effektivadressenhalteeinrichtung 111 verbunden ist. Diese
Halteeinrichtung ist mit dem Bus 122 und einem Operanden-
Adreßbus 123 verbunden.
-
Die Operation wird im folgenden mit Bezug auf das
Zeitablaufdiagramm der Fig. 2 erläutert.
-
Falls ein Befehl von der Befehlsschlange in Abhängigkeit
von den Ausgaben 131 und 132 (IREQ) erhalten werden kann,
wird ein Befehlsschlangen-Fertigsignal IQRDY dem
Befehlsanforderungskontroller 102 eingegeben. Bei dem in Fig. 2
dargestellten Betriebsbeispiel ist angenommen, daß bei einem
zweiten Dekodierungszyklus T3 die Dekodierung nicht
ausgeführt wird, und eine Verschiebung für die
Effektivadressenberechnung wird dann auf dem Befehlsbus 121 zum Zeitpunkt
T4 (205) gegeben. Ob diese Verschiebungsübertragung (205)
ausgeführt werden soll oder nicht, wird durch den
Sequenzkontroller 104 und den
Effektivadressen-Erzeugungskontroller 107 aufgrund der dekodierten Information (IL, ITYP, AF,
DTYP) entschieden. Ferner wird zum Zeitpunkt T4 (204) die
Ausgabe 131 in dem Offsetaddierer 106 addiert.
-
Wie oben beschrieben wurde, falls der Adressierungsmodus
des Operanden der Programmzähler/Relativadressen-Modus ist,
bewirkt der Effektivadressen-Erzeugungskontroller 107, daß
der Inhalt (das Verschiebungsdatum) auf dem Befehlsbus 121
in einem Register des
Effektivadressen-Berechnungsregisterfiles 109 gespeichert wird, wie in 205 dargestellt ist, und
gleichzeitig wird der Wert des Programmzählers 108 an den
Effektivadressenberechnungsbus 122 ausgegeben, so daß der
Wert in einem anderen Register des Registerf iles 109
gespeichert wird, wie bei 206 dargestellt ist. Anschließend,
wie durch 207 dargestellt ist, wird die Adreßberechnung vom
Zeitpunkt Tl durch den Adressenaddierer 110 anhand der oben
beschriebenen zwei gehaltenen Daten durchgeführt.
Gleichzeitig, wie bei 209 dargestellt ist, gibt der
Offsetaddierer 106 den summierten Wert der Befehlslänge für den
laufenden Befehl an den Addierer 112, der dem Programmzähler
108 zugeordnet ist, so daß der Programmzähler 108 durch den
Inkrementer 113 und den Addierer 112 unter Steuerung des
Aktualisierungskontrollers 105 aktualisiert wird, wie bei
298 dargestellt ist.
-
Dementsprechend werden gleichzeitig in dem Zyklus Mn die
Effektivadressenberechnung aufgrund des Befehls, der im
vorhergehenden Zyklus Mn-1 berechnet wurde, und die
Aktualisierung des Programmzählers aufgrund der Ausgabe des
Programmzähler-Offsetaddierers durchgeführt.