DE4206062A1 - Pipelineverarbeitung von instruktionen - Google Patents
Pipelineverarbeitung von instruktionenInfo
- Publication number
- DE4206062A1 DE4206062A1 DE4206062A DE4206062A DE4206062A1 DE 4206062 A1 DE4206062 A1 DE 4206062A1 DE 4206062 A DE4206062 A DE 4206062A DE 4206062 A DE4206062 A DE 4206062A DE 4206062 A1 DE4206062 A1 DE 4206062A1
- Authority
- DE
- Germany
- Prior art keywords
- data
- instruction
- register
- memory
- load
- 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
Links
- 238000001514 detection method Methods 0.000 claims description 33
- 238000000034 method Methods 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 7
- 230000006870 function Effects 0.000 abstract description 8
- 230000001419 dependent effect Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 14
- 101100058681 Drosophila melanogaster Btk29A gene Proteins 0.000 description 9
- 230000009471 action Effects 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 210000003739 neck Anatomy 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 150000002500 ions Chemical class 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000001356 surgical procedure Methods 0.000 description 2
- 101000574648 Homo sapiens Retinoid-inducible serine carboxypeptidase Proteins 0.000 description 1
- 102100025483 Retinoid-inducible serine carboxypeptidase Human genes 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
Die vorliegende Erfindung bezieht sich auf ein Pipeline-Verar
beitungsgerät nach dem Oberbegriff des Patentanspruches 1, auf
einen Pipelineprozessor nach dem Oberbegriff des Patentanspru
ches 4 sowie auf ein Verfahren zum Ausführen einer Instruktion
nach dem Oberbegriff des Patentanspruches 8. Insbesondere
bezieht sich die vorliegende Erfindung auf einen Computer mit
einem reduzierten Instruktionssatz (RISC), der das Pipeline-
Verfahren anwendet.
Die meiste Zeit zum Ausführen eines Programmes in einem Compu
ter wird für sehr einfache Instruktionen wie "Load" (Laden),
"Store" (Speichern), "Branch on Codition" (Abzweigen unter Be
dingung) und "Add" (Addieren) verbraucht. Viele komplizierte
Steuerschaltungen in einem Computer dienen zum Verarbeiten
einer Instruktion, die eine Mehrzahl von Zyklen braucht, und
für einen Operant innerhalb eines Speichers, der sich über eine
Seitengrenze (Page-Grenze) erstreckt. Die Verarbeitungsge
schwindigkeit kann erhöht werden, wenn eine selten benutzte
komplizierte Operation nicht behandelt wird. Daher ist ein
Computer mit einem reduzierten Instruktionssatz (RISC) entwic
kelt worden zum Verarbeiten von nur häufig benutzten einfachen
Instruktionen.
Der RISC wendet eine Laden/Speichern-Architektur an, in der auf
einem Speicher nur die "Load"-Instruktion und "Store"-Instruk
tion zugegriffen wird. Alle Arithmetikoperations-Instruktionen
und Logikoperations-Instruktionen werden ausgeführt, indem in
den internen Registern gespeicherte Daten benutzt werden. Daher
weist der RISC eine Vielzahl von Registern auf und enthält eine
Registerdatei als Register für die allgemeine Verwendung. Der
RISC hat im wesentlichen die folgenden Eigenschaften:
- 1) Ausführung einer Instruktion in einem Maschinenzyklus;
- 2) Die Länge aller Instruktionen ist die gleiche (typi scherweise 32 Bit) mit einem einfachen festen Format;
- 3) Auf den Speicher wird nur durch die "Load"-"Store"-Instruk tion zugegriffen, und die verbleibenden Instruktionen wer den unter Bezug auf die Register ausgeführt;
- 4) Pipeline-Verarbeitung: Verarbeiten von mehreren Instruk tionen zur gleichen Zeit; und
- 5) Übergeben einer Funktion zu der Software, die Eigenschaft zum Verbessern der Leistung wird durch die Hardware reali siert, während eine komplizierte Funktion der Software zu geordnet wird.
Der wichtigste Punkt zur Verbesserung der Leistung einer Be
triebsverarbeitungseinheit ist die Einzyklusausführung (Ausfüh
rung einer Instruktion in einem Maschinenzyklus) und das Redu
zieren eines Maschinenzyklus soweit wie möglich. Die oben auf
geführte Eigenschaft, daß eine Operation nur auf Daten in den
Registern ausgeführt wird und das auf den Speicher nur durch
die "load/store"-Instruktion zugegriffen wird, wird für die
Einzyklusausführung angenommen. Eine Instruktion eines einfa
chen, festen Formates reduziert die Dekodierzeit der Instruk
tion und verkürzt den Maschinenzyklus. Das Übergeben einer
Funktion an die Software bedeutet, daß der Compiler für eine
komplizierte Funktion verantwortlich ist. Die Optimisierungs
funktion des Compilers kann auch eine Reihenfolge der Instruk
tionen neu anordnen, so daß sie für die Pipeline geeignet sind.
Der RISC wendet ein Pipelinesteuerverfahren zum Ausführen einer
Instruktion mit hoher Geschwindigkeit an. Es gibt verschiedene
Arten von Strukturen der Pipeline, und verschiedene RISCs ent
halten verschiedene Pipelinestrukturen.
Fig. 1 ist ein Diagramm, das ein Beispiel eines allgemeinen
Funktionsablaufes eines RISC zeigt. Der in Fig. 1 gezeigte
RISC weist einen Instruktionsspeicher 1 mit einem Cache-Spei
cher, der z. B. zum Speichern von Instruktionen dient, eine Re
gisterdatei 2 mit einer Mehrzahl von Registern zum zeitweiligen
Speichern von Daten, einen Datenspeicher 3 zum Speichern von
Daten und Pipelinestufen von 5 Stufen 4 bis 8 auf.
Die Pipelinestufen weisen eine Instruktionsholstufe 4 zum Holen
der Instruktion aus dem Instruktionsspeicher 1, eine Instruk
tionsdekodierstufe 5 zum Dekodieren der durch die Instruktions
holstufe 4 geholten Instruktion, eine Ausführungsstufe 6 zum
Ausführen der durch die Instruktionsdekodierstufe 5 dekodierten
Instruktion, eine Speicherzugriffsstufe zum Zugreifen auf den
Datenspeicher 3, wenn die in der Instruktionsdekodierstufe 5
dekodierte Instruktion eine Speicherzugriffsinstruktion ist,
und eine Rückschreibstufe 8 zum Zurückschreiben des Ausfüh
rungsresultates der Betriebsinstruktion und der geladenen Daten
von dem Datenspeicher 3 in ein entsprechendes Register in der
Registerdatei 2.
Der Instruktionsspeicher 1 und der Datenspeicher 3 weisen je
einen Cache-Speicher oder ähnliches auf. Die Instruktionhol
stufe holt eine entsprechende Instruktion aus dem Instruktions
speicher 1 gemäß dem Ausgangssignal eines Programmzählers
(nicht gezeigt) und legt dieselbe an die Instruktionsdekodier
stufe 5 an. Die Instruktionsdekodierstufe 5 dekodiert eine an
gelegte Instruktion und liest die Inhalte eines entsprechenden
Registers in der Registerdatei 2 aus. Wenn die geholte Instruk
tion in der nächsten Ausführungsstufe 6 ausgeführt werden kann,
überführt die Dekodierstufe 5 die dekodierte Instruktion an die
Ausführungsstufe 6.
Die Instruktionen werden parallel gemäß der Pipeline in dem
RISC ausgeführt. In manchen Fällen gibt es eine Datenabhängig
keit zwischen den Instruktionen. Zum Beispiel wird ein Opera
tionsergebnis von der nächsten Operationsinstruktion benutzt.
In diesem Fall verzögert die Instruktionsdekodierstufe 5 übli
cherweise das Abgeben der Instruktion an die Ausführungsstufe
6, bis die dekodierte Instruktion ausgeführt werden kann. Die
Ausführungsstufe 6 führt die angelegte Instruktion aus, wenn
die dekodierte Instruktion eine Operationsinstruktion ist. Wenn
die dekodierte Instruktion eine Abzweigungsinstruktion ist,
führt die Ausführungsstufe 6 eine Bestimmung über die Abzwei
gungsbedingung aus. Wenn die dekodierte Instruktion eine Spei
cherzyklusinstruktion (Lade- oder Speicherinstruktion) ist, be
rechnet die Ausführungsstufe 6 die effektive Adresse des Daten
speichers 3 und legt die Adresse an die Speicherzugriffsstufe 7
an.
Die Speicherzugriffsstufe 7 greift auf den Datenspeicher 3 ein
schließlich eines Cache-Speichers z. B. gemäß der Adresse von
der Ausführungsstufe 6 zu und führt das Schreiben/Lesen der Da
ten aus.
Der RISC ist gemäß eines Zweiphasen-, nicht überlappenden Taktes
(T-Takt und L-Takt, wie sie später beschrieben werden) tätig.
Der RISC ist in Pipelineweise strukturiert und holt eine neue
Instruktion während jeden Taktzyklus. Der in Fig. 1 gezeigte
RISC benötigt 5 Zyklen zum Beenden der Ausführung einer
Instruktion. Er ist jedoch derartig auf Pipelineweise struktu
riert, daß er mit jedem Taktzyklus eine neue Instruktion be
ginnen kann. Die neue Instruktion wird bereits begonnen, bevor
die gegenwärtige Instruktion beendet ist.
Fig. 2 zeigt den Pipelinebetrieb. Wie in Fig. 2 gezeigt ist,
geht eine Instruktion ¢ 1 an eine Instruktion der # 3 durch die
Instruktionsholstufe (IF), die Instruktionsdekodierstufe (ID),
die Instruktionsausführungsstufe (EXC), die Speicherzugriffsstufe
(MEM) und die Rückschreibstufe (WB). Die Instruktion # 2
wird im Zyklus 2 geholt, indem die Instruktion # 1 in der Stufe
der Instruktionsdekodierung ist. Die Instruktion # 3 wird in
dem Zyklus 3 geholt, indem die Instruktion # 2 dekodiert wird.
Die Instruktion # 5 wird in dem Zyklus 5 geholt, indem die
Instruktion # 1 zurückgeschrieben wird. Auf diese Weise werden
die Instruktionen parallel ausgeführt, so daß insgesamt gesehen
eine Instruktion effektiv in einem Maschinenzyklus ausgeführt
werden kann.
Bei einer Instruktionsausführung in dem Pipelineverfahren wird
die nächste Instruktion begonnen, bevor die gegenwärtige In
struktion beendet ist. Folglich kann eine Datenabhängigkeit
zwischen Instruktionen verursacht werden. In vielen Fällen wird
eine Bestimmung in der Instruktionsdekodierstufe 5 durchge
führt, ob es eine Datenabhängigkeit zwischen den Instruktionen
gibt. Wenn es eine Abhängigkeit zwischen den Instruktionen
gibt, kann die nächste Instruktion nicht ausgeführt werden, bis
die Abhängigkeit beseitigt wird, wodurch eine Störung in der
Pipeline verursacht wird. Die Abhängigkeit zwischen den
Instruktionen wird nun beschrieben.
Wie in Fig. 3 gezeigt ist, wird der RISC als Reaktion auf das
Zweiphasentaktsignal, d. h. den T-Takt und L-Takt tätig. Die T-
Taktphase und die L-Taktphase bilden einen Maschinenzyklus. In
der Ausführungsstufe 6, wird die Operation in der T-Taktphase
ausgeführt und das Operationsresultat auf einem Bus in der L-
Taktphase übertragen. Im Falle einer Verzweigung-Auf-Bedingung-
Instruktion wird die Verzweigungszieladresse durch einen in
einem Programmzähler eingebauten Addierer in der T-Taktphase
der Ausführungsstufe 6 berechnet, wobei der Programmzähler in
der Instruktionsholstufe 4 enthalten ist.
Im Falle einer Lade- oder Speicherinstruktion, berechnet die
Ausführungsstufe 6 eine effektive Adresse in der T-Taktphase
und überträgt die effektive Adresse an einen Adreßstift in der
L-Taktphase. In der Speicherzugriffsstufe 7 wird diese Adresse
zu dem Datenspeicher 3 in der T-Taktphase übertragen, und Daten
werden in den Datenspeicher 3 geschrieben oder aus ihm gelesen
in der L-Taktphase. Das Ausführungsresultat (Operationsresultat
oder Ladedaten) der Instruktion wird in die Registerdatei in
der T-Taktphase durch die Rückschreibphase 8 geschrieben.
Es gibt Fälle, in denen eine Instruktion eine bedingte Abzwei
gungsinstruktion ist, wo eine Instruktion und das Ausführungs
resultat der vorherigen Instruktion benutzt und wo eine
Instruktion von dem Datenspeicher ausgelesene Daten benutzt,
und in diesen Fällen gibt es eine Abhängigkeit einer Instruk
tion von einer anderen. Es sei jetzt der Fall der Ladeinstruk
tion betrachtet.
Die aus dem Datenspeicher 3 geladenen Daten sind nicht solange
gültig, bis der Speicherzugriffszyklus in der Speicherzugriffs
stufe beendet ist. Folglich können die aus dem Speicher 3 gela
denen Daten nicht in der Ausführungsstufe der nächsten Instruk
tion benutzt werden. Es seien insbesondere die folgenden
Instruktionen betrachtet.
- a) load 1r0, (1r1)
- b) and 1r3, 1r2, 1r0.
Die Instruktion (a) ist eine Instruktion die befiehlt, daß die
Daten der Speicherzellen der Adresse, die in dem Register 1r1
der Registerdatei 2 aus dem Datenspeicher 3 gelesen werden
sollen und in das Register 1r0 in der Registerdatei 2 geladen
werden sollen.
Die Instruktion (b) ist eine Instruktion, die befiehlt, daß ein
logisches Produkt der in den Registern 1r2 und 1r0 der Regi
sterdatei 2 genommen werden soll und das Resultat daraus indem
Register 1r3 der Registerdatei 2 gespeichert werden soll.
Wie in Fig. 4 gezeigt ist, benötigt die Instruktion (a) (Load-
Instruktion) 5 Zyklen, um sie zu beenden. Die Inhalte des Re
gisters 1r0 sind nicht bestimmt, bis die Rückschreibstufe WB
dieser Instruktion (a) (Load-Instruktion) beendet ist. Norma
lerweise werden in die Registerdatei 2 Daten in der T-Takt
phase geschrieben, und Daten werden in der L-Taktphase gelesen.
Die Instruktionsdekodierstufe 5 und die Rückschreibstufe 8 kön
nen auf die Registerdatei 2 zugreifen. Die Ausführungsstufe 6
kann nicht auf die Registerdatei 2 zugreifen.
Wenn die Rückschreibstufe (Zyklus 5) einfach wartet, bis das
Resultat der Instruktion (a) (Load-Instruktion) in das Register
1r0 der Registerdatei 2 geschrieben ist, muß die Instruktion
(b) die Inhalte des Registers 1r0 der Registerdatei 2 in dem
sechsten Zyklus auslesen und diese zu der Ausführungsstufe 6 in
Fig. 4 übertragen. Folglich wird die Ausführung der Instruk
tionen (b) (AND-Instruktion) um 3 Maschinenzyklen verzögert.
Als Resultat treten Flaschenhälse in der Pipeline auf, wodurch
die Geschwindigkeit der Verarbeitung der Instruktionen verrin
gert wird.
Zum Minimieren des Auftretens von Flaschenhälsen in der Pipe
line aufgrund der Abhängigkeit einer Instruktion von einer
anderen, wie oben ausgeführt wurde, ist in manchen Fällen eine
Hardware vorgesehen, die eine Bypass - (Umgehungs-)Architek
tur oder Vorwärts-(Forwarding-)Architektur genannt wird. Bei
dieser Architektur werden notwendige Operand-Daten zu einer
arithmetischen und logischen Einheit unter Benutzung eines
anderen Pfades zum Minimieren des Anhaltens des Ausführens
einer Instruktion geführt, wenn die Operand-Daten der Instruk
tion nicht benutzt werden können, obwohl die Instruktion die
Ausführungsstufe erreicht und der Prozessor zum Ausführen der
Instruktion fertig ist. Die Bypass-Architektur wird im folgen
den kurz beschrieben.
Es gibt 2 Arten von Bypass-Architekturen (oder Vorwärts- Archi
tekturen), d. h. eine Lade-Umgehungs-Architektur für aus dem
Datenspeicher 3 geladene Daten und eine Resultat-Umgehungs-Ar
chitektur für das in der arithmetischen und logischen Einheit
erzielte Resultat.
Fig. 5 ist ein Diagramm, daß schematisch eine Struktur der Um
gehungs-Architektur zeigt. In Fig. 5 ist eine Umgehungslogik
11 in dem Datenbus zum Steuern der Datenübertragung zwischen
einer Registerdatei 10 und einer arithmetischen und logischen
Einheit 12 vorgesehen. Die Registerdatei 10 enthält nicht nur
ein Register für allgemeine Zwecke (Registerdatei 2 in Fig.
1), sondern auch ein Register für eine Pipelineumgehung und ein
I/O-Register zum zeitweiligen Speichern von Eingangs/Ausgangs
daten des Datenspeichers 3. Die Daten der Registerdatei 10 wer
den auf einen ersten Quellenbus Src1 und einen zweiten Quellen
bus Src2 gemäß dem in der Instruktion enthaltenen ersten und
zweiten Quellenoperant. Zurückschreiben der Daten in die Regi
sterdatei 10 wird durch die Umgehungslogik 11 ausgeführt.
Die Umgehungslogik 11 enthält einen Latch zum Latchen der aus
dem Datenspeicher 3 geladenen Daten und des Operationsresul
tates (Daten auf dem Resultatbus "Resultat") aus der arithme
tischen und logischen Einheit 12. Die Umgehungslogik 11 ver
gleicht 2 Registerquellen (Quellenoperanden) der gegenwärtigen
Instruktion mit dem Bestimmungsoperand der vorhergehenden In
struktion und führt eine Bestimmung durch, ob eine Umgehungs
tätigkeit oder -Operation nötig ist. Wenn bestimmt ist, daß die
Umgehungsoperation nötig ist, überträgt die Umgehungslogik 11
die gelatchten Daten auf den Quellenbus Src1 oder Src2 ohne
diese aus der Registerdatei 10 auszulesen. Die Umgehungslogik
11 führt ebenfalls die Umgehungsoperation aus, wenn die gegen
wärtige Instruktion das Operationsresultat der vorhergehenden
Instruktion benötigt. Nur die Umgehungsoperation der geladenen
Daten wird im folgenden beschrieben. Die geladenen Daten, die
von der Umgehungslogik 11 gelatcht sind, werden in ein entspre
chendes Register in dem Rückschreibzyklus zurückgeschrieben,
wenn es nötig ist, dieselben in das entsprechende Register in
nerhalb der Registerdatei 10 zurückzuschreiben.
Fig. 6 ist ein Diagramm, das speziell die Struktur der Umge
hungslogik zeigt. Die Struktur einer Umgehungsarchitektur ist
z. B. in M. Horowitz "MIPS-X: A 20-MPS Peak, 32-bit Micropro
cessor with On-Chip-Chached", IEEE Journal of Solid-State-
Circuits, Band SC-22, Nr. 5, Oktober 1980, Seiten 790-797 be
schrieben.
Wie in Fig. 6 gezeigt ist, enthält die Umgehungslogik 11 ein
Registerlatch 111 zum zeitweiligen Speichern eines ersten Quel
lenoperantes (Quelle 1) der gegenwärtigen Instruktion, ein Re
gisterlatch 112 zum zeitweiligen Speichern eines zweiten Quel
lenoperantes (Quelle 2) der gegenwärtigen Instruktion, ein Re
gister 113 zum Speichern eines Bestimmungsoperanden (Bestim
mung) der vorliegenden Instruktion, ein Komparator 110 zum Ver
gleichen der Inhalte der Registerlatche 111 und 112 mit den In
halten des Registers 113 und eine Auswahlschaltung 114, die auf
das Ausgangssignal des Komparators 110 zum Übertragen von Daten
(Latchdaten) eines I/O-Registers 101, das in der Registerdatei
10 enthalten ist, auf einen Quellenbus Src1 oder Src2 reagiert.
In diesem Fall wird im allgemeinen in der Umgehungslogik 11 der
Quellenoperand der gegenwärtigen Instruktion mit den Bestimmun
gen der 2 vorhergehenden Instruktionen verglichen, und 2 Regi
ster 113 sind vorgesehen. In Fig. 6 ist jedoch nur ein
Register für die Bestimmung zur Vereinfachung der Beschreibung
gezeigt.
Das I/O-Register 101 latcht die von dem Datenspeicher 3 gelade
nen Daten und speichert die in den Datenspeicher 3 zu schrei
benden Daten zeitweilig während der Zeit des Speicherns. Die
geladenen Daten des I/O-Registers 101 werden in ein entspre
chendes Register der Registerdatei 2 durch die Rückschreibstufe
8 geschrieben. Wenn die Inhalte des entsprechenden Registers
der Registerdatei 2 durch eine Operation auf den neuesten Stand
gebracht werden, bevor die Daten geschrieben werden, werden die
geladenen Daten, die von dem I/O-Register 101 gelatcht sind,
nicht beachtet und nicht in das entsprechende Register ge
schrieben. Eine kurze Beschreibung dieser Operation wird im
folgenden gegeben.
Die Quelle 1 und die Quelle 2 der Quellenoperanten, die in der
geholten Instruktion enthalten sind, werden in die Register-
Latches 111 und 112 durch die Instruktionsdekodierstufe 5 ge
speichert. Der Bestimmungsoperant der vorhergehenden Instruk
tion ist ebenfalls in dem Register 113 durch die Instruktions
dekodierstufe 5 gespeichert. Der Komparator 110 vergleicht die
in den Registerlatchen 111 und 112 gespeicherten Quellenoperan
den mit dem in dem Register 113 gespeicherten Operand. Wenn
eine Übereinstimmung zwischen ihnen festgestellt wird, erzeugt
der Komparator 110 ein Steuersignal für die Auswahlschaltung
114. Die Auswahlschaltung 114 überträgt als Reaktion auf das
Steuersignal von dem Komparator 110 die in dem I/O-Register 101
gelatchten Daten auf den Quellenbus Src1 oder Src2 entsprechend
dem Quellenoperand, für den die Übereinstimmung festgestellt
worden ist.
Die Quellenbusse sind mit der arithmetischen und logischen Ein
heit 12 verbunden, wie in Fig. 5 gezeigt ist. Folglich werden
die in dem Speicherzugriffszyklus geladenen Daten zu der arith
metischen und logischen Einheit 12 während der Ausführungsstufe
6 umgeleitet, ohne daß sie in der Registerdatei 2 gespeichert
werden. Als Resultat können in der Praxis Flaschenhälse in der
Pipeline verglichen mit dem Fall verringert werden, indem die
geladenen Daten in die Registerdatei 2 geschrieben werden und
dann die Daten wieder ausgelesen werden.
Selbst wenn eine derartige Umgehungsarchitektur eingesetzt
wird, können die Flaschenhälse in der Pipeline nicht vollstän
dig entfernt werden, wenn die Operationsinstruktion nach der
Ladeinstruktion ausgeführt wird und die Operationsinstruktion
die durch die Ladeinstruktion geladenen Daten benutzt. Das
heißt, wie in Fig. 7 gezeigt ist, daß die durch die Lade-In
struktion geladenen Daten in dem I/O-Register 110 gelatcht
sind, wenn der Speicherzugriffszyklus MEM des Zyklus 4 beendet
ist. Wenn die in dem I/O-Register 110 gelatchten Daten zu der
arithmetischen und logischen Einheit 12 umgeleitet werden, kann
die Instruktion (Fig. 7(b)) die bestimmten Operanddaten benut
zen und im Zyklus 5 zum erstenmal ausgeführt werden. Folglich
wird im Zyklus 4 ein Flaschenhals (Pipelineblockierung) in der
Pipeline der Operationsinstruktion, die der Ladeinstruktion
folgt, verursacht, wodurch die Verarbeitungsgeschwindigkeit re
duziert wird.
Die Umgehungslogik ist in der Instruktionsdekodierstufe 5 ent
halten. Daher führt im Zyklus 5 die Instruktionsdekodierstufe 5
nicht noch einmal das Dekodieren aus, und das Ausführen der
Operation wird durch die Ausführungsstufe 6 ausgeführt.
Wie oben ausgeführt ist, wird, damit ein Fall bewältigt werden
kann, indem ein Flaschenhals in der Pipeline aufgrund der
Datenabhängigkeit einer Instruktion wie einer Operationsin
struktion, die einer Ladeinstruktion folgt, verursacht wird,
eine Bestimmung durchgeführt, ob die Instruktion in der In
struktionsdekodierstufe 5 ausgeführt werden kann, und die Pipe
line wird angehalten (Zuführen der Instruktion in die Ausfüh
rungsstufe 6 wird verzögert) gemäß dem Resultat der Bestimmung.
Als Alternative wird eine "NOP"-Instruktion zwischen die In
struktionen eingefügt, von denen eine von der anderen abhängt,
durch einen Compiler oder ähnliches im voraus, so daß ein Pi
pelinehalt nicht verursacht wird.
Anhalten der Pipeline verursacht jedoch eine Verringerung der
Verarbeitungsgeschwindigkeit, und das Einfügen der Leerlauf
instruktion, d. h. des "NOP", das eine Nicht-Operation
befiehlt, verursacht ebenfalls eine Verringerung in der Verar
beitungsgeschwindigkeit.
Es ist daher die der Erfindung zugrundeliegende Aufgabe, ein
Pipelineverarbeitungsgerät und einen Pipelineprozessor der
eingangs beschriebenen Art zu schaffen, die eine Instruktion
mit hoher Geschwindigkeit ausführen können, selbst wenn es eine
Datenabhängigkeit der einen Instruktion von der anderen gibt;
insbesondere sollen keine Flaschenhälse in der Pipeline verur
sacht werden, selbst wenn es eine Datenabhängigkeit zwischen
einer Ladeinstruktion und einer der Ladeinstruktion folgenden
Operationsinstruktion gibt. Weiter ist es die der Erfindung
zugrundeliegende Aufgabe, ein Verfahren zum Ausführen einer
Instruktion der eingangs beschriebenen Art vorzusehen, bei dem
die Instruktion mit hoher Geschwindigkeit ausgeführt werden
kann, selbst wenn es eine Datenabhängigkeit zwischen den
Instruktionen gibt.
Diese Aufgabe wird gelöst durch ein Pipelineverarbeitungsgerät
der eingangs beschriebenen Art, daß durch die kennzeichnenden
Merkmale des Patentanspruches 1 gekennzeichnet ist. Weiter wird
die Aufgabe gelöst durch einen Pipelineprozessor, der eingangs
beschriebenen Art, der durch die kennzeichnenden Merkmale des
Patentanspruches 4 gekennzeichnet ist.
Dabei ist ein Speicherzugriffsmittel zum Auslesen entsprechen
der Daten aus einem Datenspeicher entsprechend einer Lade-In
struktion vorgesehen. Es ist ein Registerzugriffsmittel zum
Auslesen entsprechend der Daten aus einer Registerdatei gemäß
einer Operationsinstruktion vorgesehen, die der Ladeinstruk
tion folgend zugeführt wird. Es ist ein Bestimmungsmittel zum
Durchführen einer Bestimmung vorgesehen, ob es eine Datenab
hängigkeit zwischen der Operationsinstruktion und der Ladein
struktion gibt. Es ist ein erstes Operationsmittel zum Ausfüh
ren einer vorbestimmten Operation auf aus der Registerdatei
durch das Registerzugriffsmittel vorgesehen. Es ist ein erstes
Auswahlmittel zum Auswählen von Daten aus den durch das
Speicherzugriffsmittel ausgelesenen Daten und den durch das Re
gisterzugriffsmittel ausgelesenen Daten gemäß dem Bestimmungs
resultat durch das Bestimmungsmittel vorgesehen. Es ist zweites
Operationsmittel zum Ausführen einer vorbestimmten Operation
auf durch das Auswahlmittel ausgewählten Daten vorgesehen.
Schließlich ist ein zweites Auswahlmittel zum Auswählen entwe
der des ersten oder zweiten Operationsmittels gemäß des Resul
tates der Bestimmung durch das Bestimmungsmittel vorgesehen.
Gemäß der vorliegenden Erfindung wird auf Grundlage des ersten
Auswahlmittels eine Operation selektiv in dem zweiten Opera
tionsmittel auf von dem Datenspeicher geladenen Daten und auf
von der Registerdatei ausgelesenen Daten ausgeführt. Das erste
Operationsmittel führt die Operation auf den aus der Register
datei ausgelesenen Daten durch. Durch Auswählen des Resultates
der Operation des zweiten Operationsmittels, wenn die Opera
tionsinstruktion aus dem Datenspeicher geladene Daten benutzt,
kann eine Instruktion mit hoher Geschwindigkeit ohne eine Fla
schenhals der Pipeline durchgeführt werden, und zwar im Ver
gleich mit der Struktur, wenn die Operation unter Benutzung des
ersten Operationsmittel allein durchgeführt wird.
Bevorzugte Weiterbildungen des Pipelineverarbeitungsgerätes und
des Pipelineprozessors ergeben sich aus den jeweils zugehörigen
Unteransprüchen.
Weiterhin wird die Aufgabe gelöst durch ein Verfahren zum Aus
führen einer Instruktion der eingangs beschriebenen Art, daß
durch die kennzeichnenden Merkmale des Patentanspruches 8 ge
kennzeichnet ist.
Bevorzugte Ausführungsformen des Verfahrens sind in den hierzu
zugehörigen Unteransprüchen gekennzeichnet.
Weitere Merkmale und Zweckmäßigkeiten der Erfindung ergeben
sich aus der Beschreibung von Ausführungsbeispielen anhand der
Figuren.
Von den Figuren zeigen:
Fig. 1 ein eine allgemeine Anordnung eines RISC-Compu
ters mit einem Pipelineverfahren zeigendes
Diagramm;
Fig. 2 ein eine Art der Ausführung einer Instruktion in
dem in Fig. 1 gezeigten RISC-Computers zeigendes
Diagramm;
Fig. 3 ein ein in dem RISC-Computer benutztes Taktsignal
zeigendes Diagramm;
Fig. 4 ein Störungen in einer Pipeline zeigendes Dia
gramm, wenn eine Datenabhängigkeit einer Instruk
tion von einer anderen in einer herkömmlichen
Einrichtung verursacht wird;
Fig. 5 ein schematisch eine Anordnung zur Realisierung
einer Umgehungsarchitektur, die bei dem vorhan
denen RISC-Computer eingesetzt wird, zeigendes
Diagramm;
Fig. 6 ein eine spezielle Anordnung einer in Fig. 5 ge
zeigten Umgehungslogik zeigendes Diagramm;
Fig. 7 ein einen Flaschenhals in einer Pipeline darstel
lendes Diagramm, wenn eine herkömmliche Umge
hungsarchitektur eingesetzt wird;
Fig. 8 ein eine Struktur des Hauptabschnittes einer Be
triebsverarbeitungseinheit gemäß einer Ausfüh
rungsform der vorliegenden Erfindung zeigendes
Diagramm;
Fig. 9 ein den Betrieb der Betriebsverarbeitungseinheit
von Fig. 8 zeigendes Zeitablaufdiagramm;
Fig. 10 ein ein Beispiel der speziellen Anordnung der
in Fig. 8 gezeigten Bestimmungsschaltung zeigen
des Diagramm;
Fig. 11 ein ein Beispiel der speziellen Anordnung der in
Fig. 8 gezeigten Steuerschaltung zeigendes Dia
gramm;
Fig. 12 ein einen Übertragungspfad des in Fig. 8 gezeig
ten Steuersignales oload zeigendes Diagramm; und
Fig. 13 ein in einer Tabelle die durch einen Selektor
260, der in Fig. 8 gezeigt ist, realisierte Lo
gik zeigendes Diagramm.
Die in Fig. 8 gezeigte Betriebsverarbeitungseinheit enthält
Pipelinestufen von 5 Stufen auf die gleiche Weise wie bei der
in Fig. 1 gezeigten Betriebsverarbeitungseinheit. Wie in Fig.
8 gezeigt ist, enthält eine Instruktionsdekodierstufe (IDS)
einen Instruktionsdekodierer/Steuerer 200 zum Dekodieren einer
aus einem Instruktionsspeicher (entsprechend zu 1 in Fig. 1)
geholten Instruktion und zum Auslesen der Inhalte OP1, OP2 von
Quellenregistern, die die dekodierte Instruktion bezeichnen,
Registerlatches 204, 206 zum Speichern von jedem Operanten (Re
gisteradresse) einer ersten Registerquelle (Quelle 1) und einer
zweiten Registerquelle (Quelle 2), die in der gegenwärtig vor
liegenden Instruktion unter der Steuerung des Dekodierers/Steu
erers 200 enthalten sind, und ein Registerlatch 202 zum Spei
chern eines Bestimmungsregistersoperanden (Registeradresse),
der in einer Ladeinstruktion enthalten ist. Die Instruktions
dekodierstufe IDS enthält weiter eine Koinzedent-Erfassungs
schaltung 210 zum Erfassen einer Koinzidenz zwischen den in dem
Bestimmungsregisterlatch 202 gelatchten Daten und den in dem
Registerlatch 204 gelatchten Daten, eine Koinzidenzerfassungs
schaltung 208 zum Erfassen einer Koinzidenz zwischen den Daten,
die in den Register 202 und in dem Registerlatch 206 gespei
chert sind, und eine Bestimmungsschaltung 212 zum Durchführen
einer Bestimmung, ob es eine Datenabhängigkeit zwischen einer
Ladeinstruktion und einer darauf folgend zugeführten Instruk
tion gibt.
Wenn die gegenwärtig anliegende Instruktion eine Lade-Instruk
tion ist, erzeugt der Instruktionsdekodierer/Steuerer 200 eben
falls ein Signal ⌀load, das anzeigt, daß die Instruktion eine
Ladeinstruktion ist. Die Struktur des Registers 202, der Re
gisterlatches 204, 206 und der Koinzidenzerfassungsschaltung
208, 210 ist jeweils die gleiche wie die Struktur der in Fig.
6 gezeigten Umgehungslogik, und die Koinzidenzerfassungsschal
tungen 208, 210 entsprechen in ihrer Funktion dem Komparator in
Fig. 6. Die Koinzidenzerfassungsschaltungen 208 und 210 er
zeugen Erfassungssignale MS1 und MS2, die das entsprechende Ko
inzidenzerfassen anzeigen. Die Bestimmungsschaltung 212 be
stimmt, daß es eine Datenabhängigkeit zwischen einer vorange
henden Ladeinstruktion und einer darauf folgend zugeführten Ope
rationsinstruktion gibt, wenn eins der Erfassungssignale MS1
und MS2 in einem aktiven Zustand ist (wahrer Zustand), und sie
erzeugt ein Steuersignal "izon", das die Abhängigkeit bezeich
net, und ein Signal "opcode", das anzeigt, welche Daten der
ersten und zweiten Registerquelle die Daten der Ladeinstruk
tion benutzen.
In diesem Fall können die Operanden (Registeradressen) der Re
gisterquellen und des Bestimmungsregisters aufeinanderfolgend
in den Registern 202, 204 und 206 unabhängig von der Art der
Instruktion jedesmal gespeichert werden, wenn eine Instruktion
von einer Instruktionsholstufe IFS zugeführt wird, und nur die
Bestimmungsschaltung 212 braucht in dem Zyklus aktiv zu sein,
nur wenn eine Ladeinstruktion angelegt wird und darauf folgend
eine Operationsinstruktion vorgesehen ist.
Anstatt dieser Struktur kann, wenn eine Ladeinstruktion ange
legt wird, der Bestimmungsregisteroperand darin in dem Regi
ster 202 gespeichert werden, und wenn eine Operationsinstruk
tion angelegt wird, die Operanten der Registerquellen darin
können in den Registern 204 und 206 gespeichert werden, und in
anderen Fällen können die Inhalte dieser Register auf einen
geeigneten Anfangswert zurückgesetzt werden. Bei diesem Fall
ist es notwendig, daß Register 202 und die Registerlatches 204, 206
auf Anfangswerte unterschiedlich voneinander zurückzuset
zen.
Der Instruktionsdekodierer/Steuerer 200 hat ebenfalls die Funk
tion des Auslesens von Daten OP1 eines ersten Operanten (einer
ersten Registerquelle) und Daten OP2 eines zweiten Operanden
(einer zweiten Registerquelle) eines entsprechenden Registers
aus der Registerdatei entsprechend der geholten Instruktion,
obwohl ihr Pfad nicht deutlich gezeigt ist.
Die durch den Instruktionsdekodierer/Steuerer 200 aus der Re
gisterdatei ausgelesenen Daten OP1, OP2 des ersten und zweiten
Operanden werden auf einen ersten und zweiten Quellenbus Src1
bzw. Src2 übertragen.
Eine Ausführungsstufe EXCS enthält eine arithmetische und lo
gische Einheit 222 zum Empfangen der Daten OP1 und OP2 auf dem
ersten und zweiten Quellenbus Src1, Src2 und zum Ausführen
einer vorbestimmten Operation darauf, ein Register 224 zum
Latchen der Daten OP1 auf dem ersten Quellenbus Src1 gemäß
einem T-Takt, und ein Register 226 zum Latchen der Daten OP2
des zweiten Operanden auf dem zweiten Quellenbus Src2 gemäß dem
T-Takt.
Die Ausführungsstufe EXCS enthält weiter eine Steuerschaltung
228 zum Empfangen der Steuersignale "izon" und "opcode" von der
Instruktionsdekodierstufe IDS und zum Erzeugen von Steuersigna
len sel_op1, sel_op2 und sel_ result. Das Steuersignal sel_op1
zeigt an, daß der erste Operand in der gegenwärtig ausgeführten
Instruktion die durch die vorangehende Ladeinstruktion gela
denen Daten benutzt. Das Steuersignal sel_op2 zeigt an, daß die
durch die vorhergehende Ladeinstruktion geladenen Daten als die
Daten OP2 des zweiten Operanden in der gegenwärtig ausge
führten Operationsinstruktion benutzt werden. Das Steuersignal
sel_result zeigt an, daß die Ladedaten der vorangehenden
Ladeinstruktion von der gegenwärtig ausgeführten Operationsin
struktion benutzt werden.
Die Instruktionsausführungsstufe EXCS enthält für ihre Pipeli
neoperation ein Register 230 zum Latchen der Ausgabe der arith
metischen und logischen Einheit 222 gemäß dem L-Takt, ein Re
gister 232 und ein Register 234 zum Latchen der Latchdaten der
Register 224 und 226 gemäß dem L-Takt und ein Register 236 zum
Latchen des Steuersignales sel_result von der Steuerschaltung
228 gemäß dem T-Takt. Es kann ein Latch zur Verzögerung
(Latchen gemäß dem L-Takt) zum Einstellen der Betriebszeit
punkte der Speicherzugriffsstufe und der Steuerbetriebszeit
punkte der Steuersignale sel_op1 und sel_op2 vorgesehen sein,
wobei deren Erzeugungszeitpunkte in Betracht gezogen werden
muß.
Eine Speicherzugriffsstufe MEMS enthält ein Register 240 zum
Latchen der Ausgabe des Registers 230 in der Ausführungsstufe
XCS gemäß dem T-Takt, eine Auswahlschaltung 242 zum Auswählen
entweder der in dem Register 232 gespeicherten Daten oder der
aus einem Datenspeicher 254 gemäß dem Steuersignal sel_op1 ge
ladenen Daten einer Auswahlschaltung 244 zum Auswählen entwe
der der in dem Register 234 gespeicherten Daten und der aus dem
Speicher 254 gemäß dem Steuersignal sel_op1 geladenen Daten und
eine arithmetische und logische Einheit 248 zum Ausführen einer
vorbestimmten Operation auf den von den Auswahlschaltungen 242
und 244 zugeführten Daten.
Obwohl kein Pfad gezeigt ist, über den auf den Datenspeicher
254 zum Datenschreiben und Datenlesen in der Speicherzugriffs
stufe MEMS zugegriffen wird, wird auf dem Speicher 254 gemäß
einer in der arithmetischen und logischen Einheit 222 der Aus
führungsstufe EXCS berechneten Speicheradresse zugegriffen, und
Daten werden an den Speicher 254 eingegeben und von ihm ausge
geben durch ein in der oben erwähnten Registerdatei oder einem
getakten Puffer enthaltenen I/O-Register. Die von dem Daten
speicher 254 geladenen Daten werden in dem I/O-Register ge
speichert und direkt vorbeigeführt zu den Auswahlschaltungen
242 und 244 zur gleichen Zeit. Folglich sind die Eingangssi
gnale der Auswahlschaltungen 242 und 244 und die arithmetische
und logische Einheit 248 bestimmt, wenn der Speicherzyklus der
Speicherzugriffsstufe MEMS für die Ladeinstruktion beendet ist.
Die Speicherzugriffsstufe MEMS enthält weiter ein Register 250
zum Latchen der Inhalte des Registers 240 gemäß dem L-Takt.
Eine Rückschreibstufe WBS enthält einen Selektor 260 zum Em
pfangen der Daten von dem Register 250 an seinem A-Eingang, der
Daten von einem Register 252 an seinem B-Eingang und der
Ausgabe des Datenspeichers 254 an seinem C-Eingang und zum Aus
wählen und Übertragen einer entsprechenden Eingabe zu dem D-
Ausgang gemäß Verzögerungssignale (die durch die Register 236
und 246 zweier Kaskadenstufen zugeführt sind), dem Steuersi
gnal sel_result von der Steuerschaltung 228 und dem Steuersi
gnal ⌀load, und ein Register 262 zum Latchen der Ausgabe des
Selektors 260 gemäß dem T-Takt. Das entsprechende Register wird
durch den Bestimmungsregisteroperant bestimmt, der in der Ope
rationsinstruktion enthalten ist. Die von dem Speicher 254 ge
ladenen Daten können an den Selektor 260 durch das I/O-Register
(L-Taktlatch) angelegt werden, und die geladenen Daten können
direkt zu den Auswahlschaltungen 242, 244 und zwar nicht durch
das I/O-Register angelegt werden. Auf den Speicher 254 kann
durch einen getakten Puffer und nicht durch das I/O-Register
zugegriffen werden.
Es soll angemerkt werden, daß die Register der Ausführungsstu
fe EXCS, der Speicherzugriffsstufe MEMS und der Rückschreib
stufe WBS, wie sie in Fig. 8 gezeigt sind, einfache Latches
sind und sich von dem Registern in der Registerdatei unter
scheiden.
Im folgenden wird eine Beschreibung des Betriebes der Betriebs
verarbeitungseinheit nach einer Ausführungsform der vorliegen
den Erfindung unter Bezugnahme auf die Fig. 8 und 9 gegeben.
Der Instruktionsdekodierer/Steuerer 200 dekodiert die von der
Instruktionsholstufe IFS (Zyklus 2) geholte Instruktion. Wenn
diese Instruktion eine Ladeinstruktion ist, erzeugt der In
struktionsdekodierer/Steuerer 200 ein Steuersignal ⌀load, das
anzeigt, daß es eine Load-Ladeinstruktion ist, und speichert
einen Operanden, der in dieser Instruktion enthalten ist und
ein Bestimmungsregister anzeigt, in dem Register 202. Gemäß
dieser Ladeinstruktion liest der Instruktionsdekodierer/Steu
erer 200 eine in der Registerdatei enthaltene Speicheradresse
an die arithmetische und logische Einheit 222 aus.
In der Ausführungsstufe EXCS berechnet die arithmetische und
logische Einheit 222 eine Adresse gemäß dieser Ladeinstruktion
und führt dieselbe der Speicherzugriffsstufe MEMS zu. Dann wird
die Operationsinstruktion durch den Instruktionsdekodie
rer/Steuerer 200 parallel zu der Adressenberechnung durch die
Ladeinstruktion in der Ausführungsstufe EXCS (Zyklus 3) deko
diert.
Wenn der Instruktionsdekodierer/Steuerer 200 erfaßt, daß die
Operationsinstruktion auf die Ladeinstruktion folgend angelegt
ist, schreibt er Datenoperanten, die den in dieser Operations
instruktion enthaltenen ersten und zweiten Registerquellen ent
sprechen, in die Register 204 bzw. 206, liest die in den Re
gistern der Registerdatei, die durch die Operanden der Regi
sterquellen bezeichnet sind, gespeicherten Daten OP1 und OP2
aus und überträgt dieselben auf die Quellenbusse Src1 und Src2.
Die Daten OP1 sind in dem ersten Quellenregister der Opera
tionsinstruktion gespeicherte Daten und die Daten OP2 sind in
Daten, die in dem Quellenregister gespeichert sind, das durch
den zweiten Quellenoperand der Operationsinstruktion bezeich
net ist. Es sei jetzt ein Fall angenommen, in dem das durch den
ersten Operand bezeichnete erste Quellenregister die aus dem
Speicher 254 durch die vorhergehende Ladeinstruktion geladenen
Daten benutzt. Da korrekte Daten noch nicht in diesem Zyklus 3
in das erste Quellenregister geschrieben sind, kann in diesem
Zustand eine korrekte Operation noch nicht in der Ausführungs
stufe ausgeführt werden.
Im Zyklus wird eine Koinzidenzerfassungsoperation durch die
Koinzidenzerfassungsschaltung 208 und 210 in der Instruktions
dekodierstufe IDS ausgeführt, und ein eine Koinzidenz von der
Koinzidenzerfassungsschaltung 208 anzeigende Erfassungssignal
MS1 wird in einem wahren Zustand gebracht, während ein Erfas
sungssignal MS2 von der Koinzidenzerfassungsschaltung 210 in
einen Falsch-Zustand gebracht wird. Die Bestimmungsschaltung
212 erzeugt ein Steuersignal "izon", das anzeigt, daß eine Da
tenabhängigkeit gemäß den Erfassungssignalen MS1 und MS2 gibt
wodurch die folgenden Stufen benachrichtigt werden, daß das in
dieser Ausführungsstufe EXCS erhaltene Operationsresultat nicht
korrekt ist.
Die Bestimmungsschaltung 212 erzeugt ein Steuersignal "opcode"
zum Anzeigen, welcher von dem ersten Operand und dem zweiten
Operand eine Datenabhängigkeit aufweist. Da in diesem Fall der
erste Operant (die erste Registerquelle) die Datenabhängigkeit
aufweist, ist das Signal "opcode" gleich "1". Dieses
Steuersignal "opcode" kann ein Signal aus zwei Bit sein und an
zeigen, daß der erste Operand die Datenabhängigkeit aufweist,
wenn es "01" ist, und das der zweite Operand die Daten
abhängigkeit aufweist, wenn es in "10" ist.
Im Zyklus 4 wird auf den Speicher 254 gemäß der Ladeinstruk
tion zugegriffen und entsprechende Daten werden geladen. Die
von dem Speicher 254 geladenen Daten werden direkt zu den Aus
wahlschaltungen 242 und 244 geführt.
In der Ausführungsstufe EXCS setzt die Steuerschaltung 228 die
Signale sel_op1 und sel_op2, die anzeigen, welcher Operand die
Abhängigkeit aufweist, in der L-Taktphase in einen stetigen Zu
stand und erzeugt ein Steuersignal sel_result, das anzeigt, daß
die Ausgabe der arithmetischen und logischen Einheit 248 ent
sprechend den Steuersignalen "izon" und "opcode" ausgewählt
werden soll.
Die Register 224 und 226 latchen die auf die Quellenbusse Src1
und Src2 in der T-Taktphase des Zyklus 4 geführten ersten und
zweiten Operand-Daten OP1 und OP2, und die Register 232 und 234
latchen die Inhalte der Register 224 und 226 in der L-Taktphase
dieses Zyklus 4. Das Steuersignal sel_result wird durch das Re
gister 236 in der T-Taktphase des Zyklus 5 gelatcht.
Im Zyklus 5 sind die von dem Speicher 254 geladenen Daten be
reits zu dem Selektor 260 geführt. In diesem Zyklus 5 ist das
das anzeigende Signal ⌀load von dem Instruktionsdekodie
rer/Steuerer 200 bereits vorgesehen, und zu diesem Zeitpunkt
ist das Auswahlsignal (das verzögerte Signal von sel_result)
von dem Register 246 immer noch in dem Falsch-Zustand. In
diesem Zustand wählt der Selektor 260 von dem Speicher 254 an
den Eingang C angelegte Ladedaten und legt dieselben an das Re
gister 262 an. Das Register 262 latcht die Ausgabe des Selek
tors 260 in der T-Taktphase des Zyklus 5. Die von dem Register
262 gelatchten Daten werden in der Rückschreibstufe WBS in ein
Bestimmungsregister zurückgeschrieben, das durch einen Operan
den bezeichnet wird, der in der Ladeinstruktion enthalten ist.
Im Zyklus 5 sind die Auswahlsteuersignale sel_op1 und sel_op2
in einem bestimmten Zustand in den Auswahlschaltungen 242 und
244. Da der erste Operand die Datenabhängigkeit aufweist, ist
das Steuersignal sel_op1 in dem Wahr-Zustand, und das Steuer
signal sel_op2 ist in dem Falsch-Zustand. Zu diesem Zeitpunkt
wählt die Auswahlschaltung 242 Ladedaten von dem Speicher 254
und legt diese an einen Eingang der arithmetischen und logi
schen Einheit 248 an, während die Auswahlschaltung 224 Daten
von dem Register 234 wählt und diese an den anderen Eingang der
arithmetischen und logischen Einheit 248 anlegt. Die arithme
tische und logische Einheit 248 führt eine vorbestimmte Opera
tion auf den Daten von den Auswahlschaltungen 242 und 244 aus
und legt das Operationsresultat an das Register 252 an. Das Re
gister 252 latcht die Ausgabe der arithmetischen und logischen
Einheit 248 in der L-Taktphase.
Folglich ist bei diesem Fall an dem Ende des Zyklus 5 ein rich
tiges Operationsresultat in dem Register 252 gespeichert. Das
heißt, korrekte Daten sind bereits durch die Auswahlschaltungen
242 und 244 in der T-Taktphase des Speicherzugriffszyklus
dieser Operationsinstruktion ausgewählt, und die Ausgabe der
arithmetischen und logischen Einheit 248 ist in der L-Taktpha
se ein richtiger Wert geworden. Folglich sind richtige Daten
durch das Register 252 gelatcht, das die Ausgabe der arithme
tischen und logischen Einheit 248 in der L-Taktphase latcht.
Das Steuersignal sel_result von dem Register 246 wird in der L-
Taktphase des Zyklus 5 bestimmt und an den Selektor 260 ange
legt. Zu diesem Zeitpunkt ist das Steuersignal ⌀load bereits in
den Falsch-Zustand in Zyklus 6 gebracht, und nur das Steuersi
gnal sel_result ist in dem Wahr-Zustand. In diesem Zustand
wählt der Selektor 260 die an seinen B-Eingang angelegten Daten
von dem Register 252 und legt diese an das Register 262 an. Als
Resultat werden in dem Rückschreibzyklus der Operationsinstruk
tion Daten in ein Register geschrieben, das durch den Bestim
mungsoperand dieser Operationsinstruktion in der Registerdatei
durch die Rückschreibstufe WBS in T-Taktphase bezeichnet ist.
Wenn es keine Datenabhängigkeit zwischen der Ladeinstruktion
und der Operationsinstruktion gibt, befindet sich das Steuer
signal "izon" in dem Falsch-Zustand. In diesem Fall sind alle
Steuersignale sel_op1, sel_op2 und sel_ result von der Steuer
schaltung 228 in dem Falsch-Zustand. In diesem Fall wird ein
Steuersignal ⌀load erzeugt, die von dem Datenspeicher 254 ge
ladenen Daten werden in ein entsprechendes Register in dem
Zyklus 5 von Fig. 9 entsprechend der Ladeinstruktion am An
fang zurückgeschrieben, und dann wählt der Selektor 260 die an
seinen A-Eingang angelegte Ausgabe des Registers 250 und über
trägt diese zu dem Register 262 in dem nächsten Zyklus. In
diesem Fall wird die Operationsinstruktion gemäß der korrekten
Daten OP1, OP2 ausgeführt, die an die arithmetische und logi
sche Einheit 222 der Ausführungsstufe EXCS angelegt sind, und
das Operationsresultat daraus wird in ein entsprechendes Regi
ster in dem Rückschreibzyklus geschrieben, ohne daß irgendein
Flaschenhals in der Pipeline verursacht wird.
Da die Tatsache, daß auf dem Speicher nicht in einer Opera
tionsinstruktion zugegriffen wird, vorteilhafterweise benutzt
wird, so daß eine Auswahltätigkeit in bezug auf von dem Daten
speicher 254 geladenen Daten und Daten von den Quellenregistern
in der Speicherzugriffsstufe MEMS zum Durchführen einer Tätig
keit auf korrekten Daten ausgeführt wird, wird die Operations
instruktion ohne Verursachung irgendeines Flaschenhalses in der
Pipeline ausgeführt. Daher wird es unnötig, die Pipeline anzu
halten oder eine Leer-"NOP"-Instruktion zwischen den Instruk
tionscodes einzuführen, so daß ein richtiges Operationsresul
tat mit hoher Geschwindigkeit erzielt werden kann.
Wie in Fig. 10 gezeigt ist, enthält die in der Instruktions
dekodierstufe IDS vorgesehene Bestimmungsschaltung 212 eine OR-
Gatterschaltung 310 zum Ableiten der logischen Summe der Erfas
sungssignale MS1 und MS2 der Koinzidenzerfassungsschaltungen
208 und 210 und eine Gatterschaltung 312 zum Empfangen der Er
fassungssignale MS1 und MS2. Ein Steuersignal "izon" wird von
der Gatterschaltung 310 erzeugt, und ein Steuersignal "opcode"
wird von der Gatterschaltung 312 erzeugt. Wenn mindestens eines
der Erfassungssignale MS1 und MS2 in den "Wahr-Zustand" ge
bracht wird, bringt die Gatterschaltung 310 das Steuersignal
"izon" in den Wahr-Zustand. Die Gatterschaltung 312 enthält
eine AND-Gatterschaltung zum Empfangen des Erfassungssignales
MS1 an seinem Wahr-Eingang und das Erfassungssignal MS2 an
seinem Falsch-Eingang. Wenn das Erfassungssignal MS1 in dem
Wahr-Zustand ist und das Erfassungssignal MS2 in dem Falsch-
Zustand ist, bringt die Gatterschaltung 312 das Steuersignal
"opcode" in den Wahr-Zustand, während, wenn das Erfassungs
signal MS1 in dem Falsch-Zustand ist und das Erfassungssignal MS2
in dem Wahr-Zustand ist, sie das Steuersignal "opcode" in den
Falsch-Zustand bringt.
Bei der Struktur der in Fig. 10 gezeigten Gatterschaltung 312
ist angenommen, daß die Erfassungssignale MS1 und MS2 nicht zu
sammen in den Wahr-Zustand gebracht werden. Damit ein genaueres
Steuersignal erzeugt werden kann, daß es erlaubt, daß die Si
gnale MS1 und MS2 in dem Wahr-Zustand zur gleichen Zeit sind,
kann die Gatterschaltung 312 weggelassen werden und das Steuer
signal "opcode" kann die Steuersignale MS1, MS2 von 2 Bit ent
halten.
Wie in Fig. 11 gezeigt ist, enthält die Steuerschaltung 228
Gatterschaltungen 220 und 330 zum Aufnehmen von Steuersignalen
"izon" und "opcode". Ein Steuersignal sel_op1 wird von der Gat
terschaltung 320 erzeugt, und ein Steuersignal sel_op2 wird von
der Gatterschaltung 330 erzeugt.
Die Gatterschaltung 320 bringt das Steuersignal sel_op1 in den
Wahr-Zustand, wenn das Steuersignal "izon" und das Steuersignal
"opcode" beide in dem Wahr-Zustand sind. Das heißt, wenn das
Erfassungssignal MS1 in dem Wahr-Zustand ist und das Steuersi
gnal "izon" erzeugt wird, wird angezeigt, daß die Daten des
ersten Quellenregisters übertragen werden sollen.
Die Gatterschaltung 330 empfängt ein Steuersignal "izon" an
seinem Wahr-Eingang und empfängt ein Steuersignal "opcode" an
seinem Falsch-Eingang. Wenn das Steuersignal "izon" in dem
Wahr-Zustand ist und das Steuersignal "opcode" in dem Falsch-
Zustand ist, setzt die Gatterschaltung 330 das Steuersignal
sel_op2 in den Wahr-Zustand. Das heißt, wenn der zweite Quel
lenoperant Ladedaten benutzt, wird ein Steuersignal sel_op2
benutzt. Das Steuersignal sel_result benutzt das Steuersignal
"izon", wie es ist. In diesem Fall ist die Steuerschaltung 228
in der Ausführungsstufe EXCS enthalten, und die Steuersignale
sel_op1, sel_op2 und sel_ result bekommen ihre Zustände mit
einer Verzögerung von einem Taktzyklus in bezug auf die Steuer
signale "opcode" und "izon" von der Instruktionsdekodierstufe
IDS bestimmt. Diese Anordnung kann implimentiert werden, indem
ein T-Latch zum Latchen der Daten bei dem T-Takt und ein L-
Latch zum Latchen dieser T-Latchausgabe gemäß dem L-Takt in der
vorderen Stufe der Gatterschaltungen 320 und 330 in der in
Fig. 11 gezeigten Anordnung vorgesehen wird. Als Alternative
können das T-Latch und das L-Latch in den Ausgabeabschnitten
der Gatterschaltungen 320 und 330 vorgesehen werden.
Wie in Fig. 12 gezeigt ist, enthält der Übertragungsweg des in
dem Instruktionsdekodierer/Steuerer 200 erzeugten Steuersigna
les oload ein T-Latch 321 zum Latchen des Steuersignales oload
in der T-Taktphase, ein L-Latch 342 zum Latchen der Ausgabe des
T-Latches 341 in der L-Taktphase, ein T-Latch 343 zum Latchen
der Ausgabe des L-Latches 342 in der T-Taktphase und ein L-
Latch 344 zum Latchen der Ausgabe des T-Latches 343 in der L-
Taktphase. Die Ausgabe des L-Latches 344 wird an den Steuer
eingang des Selektors 260 angelegt. Gemäß dieser Anordnung wird
das in der L-Taktphase des Zyklus 2 in der in Fig. 9 gezeigten
Anordnung erzeugte Steuersignal ⌀load durch das Latch 344 in
der L-Taktphase des Taktzyklus 4 so gelatcht, daß es in einem
definierten Zustand ist.
Die Anordnung einer normalen Steuerschaltung kann für die Aus
wahlschaltungen 242 und 244 verwendet werden. Die Anordnungen
der arithmetischen und logischen Einheiten 222 und 248 können
so sein, daß sie beide die gleichen Operationen ausführen.
Die Ausgabe des Datenspeichers 254 wird zu dem Register 262
durch den Selektor 260 in der Rückschreibstufe WBS geführt. An
stelle dessen können die Ladedaten von dem Datenspeicher 254
vorbeigeführt werden zu den Auswahlschaltungen 242 und 244 und
zu der gleichen Zeit in dem Register 262 und einem I/O-Regi
ster (nicht gezeigt, siehe Fig. 6) gespeichert werden, und die
Inhalte des Registers 262 und des I/O-Registers können selektiv
in die Registerdatei gemäß der Steuersignale ⌀load und sel_re
sult geschrieben werden.
Wie in Fig. 13 gezeigt ist, wählt der Selektor 260 die an den
Eingang A von dem Register 250 angelegte Ausgabe aus, wenn das
Steuersignal oload und das Steuersignal sel_result beide auf
"0" liegen, was "falsch" darstellt. Wenn das Steuersignal ⌀load
"1" ist für den Wahr-Zustand, werden die von dem Daten
speicher 254 an den Eingang C angelegten Ladedaten ausgewählt.
Wenn das Steuersignal ⌀load "0" ist für den Falsch-Zu
stand, werden die von dem Register 252 an den Eingang B ange
legten Daten, d. h. in der Speicherzugriffsstufe erzielte Ope
rationsresultat ausgewählt. Verschiedene Arten der Anordnungen
können als Schaltungsanordnung zum Realisieren dieser Logik ge
dacht werden, und jede Anordnung einer 3-Zu-1-Auswahlschaltung
kann eingesetzt werden.
Jede Betriebsverarbeitungseinheit kann insoweit verwendet
werden, wie sie eine Anordnung aufweist, in der Instruktio
nen parallel gemäß dem Pipelineverfahren verarbeitet werden.
Wie oben ausgeführt wurde, sind gemäß der vorliegenden Erfin
dung 2 Routen vorgesehen, d. h. es gibt einen Weg, über den die
Ladedaten von dem Datenspeicher vorbeigeführt werden und eine
Tätigkeit direkt auf den Daten von der Registerdatei ausgeführt
werden, und einen Weg, durch den eine Auswahl und eine Tätig
keit in bezug auf die Registerdateidaten und die geladenen
Speicherdaten ausgeführt werden, und die Auswahl der Betriebs
routen werden gemäß der Datenabhängigkeit zwischen der
Ladeinstruktion und der Operationsinstruktion ausgewählt. Als
Ergebnis kann eine Betriebsverarbeitungseinheit vorgesehen wer
den, die in der Lage ist, Instruktionen mit hoher Geschwindig
keit auszuführen, wobei es nicht nötig ist, die Pipeline anzu
halten, und es ist ebenfalls nicht nötig, unnütze Instruktio
nen wie "NOP" zum Vermeiden des Haltens der Pipeline einzufüh
ren, ohne das doch ein Flaschenhals in der Pipeline auftritt,
falls eine Operationsinstruktion einer Ladeinstruktion folgt.
Zusätzlich kann diese Anordnung im wesentlichen die herkömmli
che Vorwärts-Lade-Architektur wie sie ist benutzen, so daß eine
Betriebsverarbeitungseinheit vorgesehen werden kann, die In
struktionen mit hoher Geschwindigkeit ausführen kann, wobei
eine einfache Schaltungsanordnung ohne schwerwiegende Änderun
gen der Spezifikation benutzt werden können.
Claims (10)
1. Pipelineverarbeitungsgerät, das eine Mehrzahl von Registern
(2) und einen Datenspeicher (254) aufweist, mit:
- - einer Speicherzugriffseinrichtung (MEMS) zum Zugreifen auf den Datenspeicher (254) zum Auslesen von Daten daraus als Reaktion auf eine Ladeinstruktion;
- - einer Registerzugriffseinrichtung (200), die auf eine Operationsinstruktion zum Auslesen von zu ver arbeitenden Daten aus der Mehrzahl von Registern (2) rea giert;
- - einer ersten Operationseinrichtung (222) zum Durchführen einer Operation mit von der Registerzugriffseinrichtung (200) empfangenen Daten; gekennzeichnet durch:
- - eine Bestimmungseinrichtung (202, 204, 206, 208, 210, 212, 228) zum Bestimmen, ob die Operationsinstruktion eine Daten abhängigkeit von der Ladeinstruktion aufweist;
- - eine erste Auswahleinrichtung (242, 244), die auf ein Resultat der Bestimmung durch die Bestimmungsein richtung zum Auswählen entweder der Daten von der Registerzu griffseinrichtung (200) oder der durch die Speicherzugriffs einrichtung (MEMS) geladenen Daten reagiert;
- - eine zweite Operationseinrichtung (248) zum Durchführen einer Operation mit durch die erste Auswahleinrichtung (242, 244) ausgewählten Daten;
- - eine zweite Auswahleinrichtung (260), die auf das Resultat der Bestimmung durch die Bestimmungsein richtung zum Auswählen entweder einer Ausgabe von der ersten Operationseinrichtung (222) oder einer Ausgabe von der zwei ten Operationseinrichtung (248) reagiert, wobei die so ausgewählte Ausgabe zurück in ein Register in der Mehrzahl von Registern (2) geschrieben wird.
2. Pipelineverarbeitungsgerät nach Anspruch 1,
dadurch gekennzeichnet, daß die Bestimmungseinrichtung
eine erste Speichereinrichtung (204) zum Speichern eines ersten Quellenregisteroperanten, der in der Operationsinstruktion ent halten ist,
eine zweite Speichereinrichtung (206) zum Speichern eines zwei ten Quellenregisteroperanten, der in der Operationsinstruktion enthalten ist,
eine dritte Speichereinrichtung (302) zum Speichern eines Be stimmungsregisteroperanten, der in der Ladeinstruktion enthal ten ist,
eine Erfassungseinrichtung (208, 210) zum Erfassen der Koinzi denz zwischen dem Operanten in der dritten Speichereinrichtung (202) und einem der Operanten in der ersten und zweiten Spei chereinrichtung (204, 206), und
eine Steuereinrichtung (212, 228), die auf einer Ausgabe der Erfassungseinrichtung (208, 210) reagiert zum Erzeugen eines ersten (sel_op1, sel_op2) und zweiten (sel_result) Steuersi gnales zum Steuern der entsprechenden auswählenden Tätigkeiten der ersten (242, 244) und zweiten (260) Auswahleinrichtung, aufweist.
eine erste Speichereinrichtung (204) zum Speichern eines ersten Quellenregisteroperanten, der in der Operationsinstruktion ent halten ist,
eine zweite Speichereinrichtung (206) zum Speichern eines zwei ten Quellenregisteroperanten, der in der Operationsinstruktion enthalten ist,
eine dritte Speichereinrichtung (302) zum Speichern eines Be stimmungsregisteroperanten, der in der Ladeinstruktion enthal ten ist,
eine Erfassungseinrichtung (208, 210) zum Erfassen der Koinzi denz zwischen dem Operanten in der dritten Speichereinrichtung (202) und einem der Operanten in der ersten und zweiten Spei chereinrichtung (204, 206), und
eine Steuereinrichtung (212, 228), die auf einer Ausgabe der Erfassungseinrichtung (208, 210) reagiert zum Erzeugen eines ersten (sel_op1, sel_op2) und zweiten (sel_result) Steuersi gnales zum Steuern der entsprechenden auswählenden Tätigkeiten der ersten (242, 244) und zweiten (260) Auswahleinrichtung, aufweist.
3. Pipelineverarbeitungsgerät nach Anspruch 2,
dadurch gekennzeichnet, daß die Registerzugriffseinrichtung (200) eine Einrichtung zum Erfassen einer Ladeinstruktion und Erzeugen eines Ladeanzeigesignales (⌀load), das anzeigt, daß eine Ladeinstruktion auszuführen ist, aufweist und daß die zweite Auswahleinrichtung (260) eine Einrichtung (Fig. 13) aufweist, die auf das zweite Steuersignal (sel_result) und das Ladeanzeigesignal (⌀load) reagiert zum Auswählen einer der Ausgaben der ersten Operationseinrichtung (222) und der zweiten Operationseinrichtung (248) und der von dem Datenspeicher (254) durch die Speicherzugriffseinrichtung (MEMS) geladenen Daten.
dadurch gekennzeichnet, daß die Registerzugriffseinrichtung (200) eine Einrichtung zum Erfassen einer Ladeinstruktion und Erzeugen eines Ladeanzeigesignales (⌀load), das anzeigt, daß eine Ladeinstruktion auszuführen ist, aufweist und daß die zweite Auswahleinrichtung (260) eine Einrichtung (Fig. 13) aufweist, die auf das zweite Steuersignal (sel_result) und das Ladeanzeigesignal (⌀load) reagiert zum Auswählen einer der Ausgaben der ersten Operationseinrichtung (222) und der zweiten Operationseinrichtung (248) und der von dem Datenspeicher (254) durch die Speicherzugriffseinrichtung (MEMS) geladenen Daten.
4. Pipelineprozessor mit einer Registerdatei (2) mit einer
Mehrzahl von Registern, gekennzeichnet durch:
- - eine Instruktionsdekodierstufe (IDS) zum Dekodieren einer aus einem Instruktionsspeicher (1) geholten Instruktion, wobei die Dekodierstufe (IDS) eine Registerzugriffseinrichtung (200) zum Lesen von Daten aus einem Register in der Register datei entsprechend einer geholten und dekodierten Instruktion und eine Erfassungseinrichtung (200) zum Erfassen einer Ope rationsinstruktion, die auf eine Ladeinstruktion folgend aus zuführen ist, aufweist;
- - eine Instruktionsausführungsstufe (EXCS) zum Ausführen einer vorbestimmten Instruktion auf von der Registerzugriffsein richtung (200) erhaltenen Daten, wobei die Ausführungsstufe (EXCS) eine Umgehungseinrichtung (224, 226, 232, 234) zum Vorbeiführen der Daten von der Registerzugriffseinrichtung (200), ohne daß eine arithmetische oder logische Operation darauf ausgeübt wird, aufweist;
- - eine Bestimmungseinrichtung (202, 204, 206, 208, 210, 212, 228), die auf die Erfassungseinrichtung (200) zum Bestimmen, ob es eine Datenabhängigkeit zwischen der Operationsinstruk tion und der Ladeinstruktion gibt, reagiert;
- - eine Speicherzugriffsstufe (MEMS) zum Zugreifen auf einen
Datenspeicher (254), wenn eine Ladeinstruktion von der In
struktionsstufe (IDS, EXCS) angelegt ist, wobei die Spei
cherzugriffsstufe (MEMS) eine Auswahleinrichtung (242, 244),
die auf die Bestimmungseinrichtung (202 bis 212, 228) zum
selektiven Weitergeben von Daten von der Umgehungseinrich
tung (224, 226, 232, 234) oder von dem Datenspeicher (254)
geladene Daten reagiert, und eine andere Operationseinrich
tung (248) zum Durchführen der vorbestimmten Operation auf
von der Auswahleinrichtung (242, 244) erhaltenen Daten auf
weist; und
eine Rückschreibstufe (WBS) zum Schreiben von Daten in ein Register in der Registerdatei (2), wobei die Rückschreib stufe (WBS) eine andere Auswahleinrichtung (260) aufweist, die auf die Bestimmungseinrichtung (202 bis 212, 228) zum selektiven Weitergeben einer der Ausgaben einer Operations einrichtung (222) in der Instruktionsausführungsstufe (EXCS) oder der anderen Operationseinrichtung (248) reagiert zum Zurückschreiben in ein Register in der Registerdatei (2).
5. Pipelineprozessor nach Anspruch 4,
dadurch gekennzeichnet, daß die andere Auswahleinrichtung (260)
weiter eine Einrichtung (Fig. 13) aufweist, die auf die Erfas
sungseinrichtung (200) und die Bestimmungseinrichtung (202 bis
212, 228) reagiert zum selektiven Weitergeben einer der Ausga
ben der Operationseinrichtung (222) und der anderen Operations
einrichtung (248) und der aus dem Datenspeicher (254) geladenen
Daten.
6. Pipelineprozessor nach Anspruch 4 oder 5,
dadurch gekennzeichnet, daß die Bestimmungseinrichtung eine
erste Einrichtung (202 bis 210) zum Erfassen, daß ein durch die
Ladeinstruktion angezeigtes Bestimmungsregister das gleiche ist
wie ein durch die Operationsinstruktion angezeigtes Quellenre
gister, und eine zweite Einrichtung (228), die auf die erste
Einrichtung (202 bis 210) reagiert zum Erzeugen eines ersten
Steuersignales (sel_op1, sel_op2) zum Steuern einer Auswahl
tätigkeit der Auswahleinrichtung (242, 244) und zum Erzeugen
eines zweiten Steuersignales (sel_result) zum Steuern einer
Auswahltätigkeit der anderen Auswahleinrichtung (260), auf
weist.
7. Pipelineprozessor nach Anspruch 6,
dadurch gekennzeichnet, daß die Bestimmungseinrichtung weiter
eine Verzögerungseinrichtung (236, 246) zum Verzögern des zwei
ten Steuersignales (sel_result) zum Einstellen des Zeitpunktes
der Auswahl der anderen Auswahleinrichtung (260) auf einen Be
triebszeitpunkt für die Speicherzugriffsstufe (MEMS) aufweist.
8. Verfahren zum Ausführen einer Instruktion, gekennzeichnet
durch die Schritte:
- - Dekodieren einer aus einem Instruktionsspeicher (1) geholten Instruktion zum Lesen von Daten aus einem entsprechenden Re gister einer Registerdatei (2);
- - Durchführen einer Operation auf aus dem entsprechenden Regi ster gelesenen Daten;
- - Vorbeiführen der aus dem entsprechenden Register ausgelese nen Daten;
- - Erfassen, daß eine gegenwärtig ausgeführte Instruktion eine Operationsinstruktion ist, die unmittelbar einer Ladein struktion folgt und eine Datenabhängigkeit davon aufweist;
- - Zugreifen auf einen Datenspeicher (254) als Reaktion auf die Ladeinstruktion zum Auslesen von durch die Ladeinstruktion bezeichneten Daten daraus;
- - Vorbeiführen von aus dem Datenspeicher (254) ausgelesenen und geladenen Daten;
- - selektives Weitergeben von entweder aus dem entsprechenden Register ausgelesenen Daten oder den aus dem Datenspeicher (254) ausgelesenen und geladenen Daten als Reaktion auf das Resultat der Erfassung in dem Schritt des Erfassens;
- - Durchführen der Operation auf den so selektiv weitergegebe nen Daten und
- - weiter ausgewähltes Weitergeben des Resultates der Opera tion auf den Daten aus dem entsprechenden Register und des Resultates der Operation auf den so selektiv weitergegebe nen Daten als Reaktion auf das Resultat der Erfassung in dem Schritt des Erfassens.
9. Verfahren zum Ausführen einer Instruktion nach Anspruch 8,
dadurch gekennzeichnet, daß die Daten von dem entsprechenden Register Daten von 2 verschiedenen Registern enthalten und
daß der Schritt des selektiven Weitergebens den Schritt des Auswählens der Daten von den 2 verschiedenen Registern oder der von dem Datenspeicher (254) ausgelesenen und geladenen Daten aufweist,
wenn das Resultat der Erfassung in dem Schritt des Erfassens anzeigt, daß die Operationsinstruktion die aus dem Datenspei cher (254) geladenen Daten benutzt als Reaktion auf die Ladeinstruktion.
dadurch gekennzeichnet, daß die Daten von dem entsprechenden Register Daten von 2 verschiedenen Registern enthalten und
daß der Schritt des selektiven Weitergebens den Schritt des Auswählens der Daten von den 2 verschiedenen Registern oder der von dem Datenspeicher (254) ausgelesenen und geladenen Daten aufweist,
wenn das Resultat der Erfassung in dem Schritt des Erfassens anzeigt, daß die Operationsinstruktion die aus dem Datenspei cher (254) geladenen Daten benutzt als Reaktion auf die Ladeinstruktion.
10. Verfahren zum Ausführen einer Instruktion nach Anspruch 8
oder 9, mit den Schritten:
Erfassen einer Ladeinstruktion zum Erzeugen eines Ladeanzeige signales (⌀load) und
Auswählen eines von dem Resultat der Operation auf den Daten des entsprechenden Registers, von dem Resultat der Operation auf den so selektiv weitergegebenen Daten und der aus dem Datenspeicher (254) ausgelesenen und geladenen Daten als Reak tion auf das Ladeanzeigesignal (⌀load) und von dem Resultat der Erfassung in dem Schritt des Erfassens.
Erfassen einer Ladeinstruktion zum Erzeugen eines Ladeanzeige signales (⌀load) und
Auswählen eines von dem Resultat der Operation auf den Daten des entsprechenden Registers, von dem Resultat der Operation auf den so selektiv weitergegebenen Daten und der aus dem Datenspeicher (254) ausgelesenen und geladenen Daten als Reak tion auf das Ladeanzeigesignal (⌀load) und von dem Resultat der Erfassung in dem Schritt des Erfassens.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3036264A JPH04275628A (ja) | 1991-03-01 | 1991-03-01 | 演算処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE4206062A1 true DE4206062A1 (de) | 1992-09-03 |
DE4206062C2 DE4206062C2 (de) | 1996-06-13 |
Family
ID=12464914
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE4206062A Expired - Fee Related DE4206062C2 (de) | 1991-03-01 | 1992-02-27 | Pipelineverarbeitung von Instruktionen |
Country Status (3)
Country | Link |
---|---|
US (1) | US5404552A (de) |
JP (1) | JPH04275628A (de) |
DE (1) | DE4206062C2 (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113946368A (zh) * | 2021-10-29 | 2022-01-18 | 西安微电子技术研究所 | 一种基于risc-v指令集的三级流水线架构、处理器及数据处理方法 |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5590294A (en) * | 1991-03-19 | 1996-12-31 | Silicon Graphics, Inc. | Method and apparatus for retarting pipeline processing |
JP2539974B2 (ja) * | 1991-11-20 | 1996-10-02 | 富士通株式会社 | 情報処理装置におけるレジスタの読出制御方式 |
US5485629A (en) * | 1993-01-22 | 1996-01-16 | Intel Corporation | Method and apparatus for executing control flow instructions in a control flow pipeline in parallel with arithmetic instructions being executed in arithmetic pipelines |
US5717908A (en) * | 1993-02-25 | 1998-02-10 | Intel Corporation | Pattern recognition system using a four address arithmetic logic unit |
US5825921A (en) * | 1993-03-19 | 1998-10-20 | Intel Corporation | Memory transfer apparatus and method useful within a pattern recognition system |
US5604909A (en) | 1993-12-15 | 1997-02-18 | Silicon Graphics Computer Systems, Inc. | Apparatus for processing instructions in a computing system |
US5675758A (en) * | 1994-11-15 | 1997-10-07 | Advanced Micro Devices, Inc. | Processor having primary integer execution unit and supplemental integer execution unit for performing out-of-order add and move operations |
TW448403B (en) * | 1995-03-03 | 2001-08-01 | Matsushita Electric Ind Co Ltd | Pipeline data processing device and method for executing multiple data processing data dependent relationship |
US5745726A (en) * | 1995-03-03 | 1998-04-28 | Fujitsu, Ltd | Method and apparatus for selecting the oldest queued instructions without data dependencies |
US5664120A (en) * | 1995-08-25 | 1997-09-02 | International Business Machines Corporation | Method for executing instructions and execution unit instruction reservation table within an in-order completion processor |
US5797019A (en) * | 1995-10-02 | 1998-08-18 | International Business Machines Corporation | Method and system for performance monitoring time lengths of disabled interrupts in a processing system |
US5691920A (en) * | 1995-10-02 | 1997-11-25 | International Business Machines Corporation | Method and system for performance monitoring of dispatch unit efficiency in a processing system |
US5752062A (en) * | 1995-10-02 | 1998-05-12 | International Business Machines Corporation | Method and system for performance monitoring through monitoring an order of processor events during execution in a processing system |
US5751945A (en) * | 1995-10-02 | 1998-05-12 | International Business Machines Corporation | Method and system for performance monitoring stalls to identify pipeline bottlenecks and stalls in a processing system |
US5729726A (en) * | 1995-10-02 | 1998-03-17 | International Business Machines Corporation | Method and system for performance monitoring efficiency of branch unit operation in a processing system |
US5949971A (en) * | 1995-10-02 | 1999-09-07 | International Business Machines Corporation | Method and system for performance monitoring through identification of frequency and length of time of execution of serialization instructions in a processing system |
US5748855A (en) * | 1995-10-02 | 1998-05-05 | Iinternational Business Machines Corporation | Method and system for performance monitoring of misaligned memory accesses in a processing system |
US5751983A (en) * | 1995-10-03 | 1998-05-12 | Abramson; Jeffrey M. | Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations |
JP3435267B2 (ja) * | 1995-11-07 | 2003-08-11 | 株式会社東芝 | マイクロプロセッサ及びそのロードアドレス予想方法 |
US5778208A (en) * | 1995-12-18 | 1998-07-07 | International Business Machines Corporation | Flexible pipeline for interlock removal |
US6115730A (en) * | 1996-02-28 | 2000-09-05 | Via-Cyrix, Inc. | Reloadable floating point unit |
US5813033A (en) * | 1996-03-08 | 1998-09-22 | Advanced Micro Devices, Inc. | Superscalar microprocessor including a cache configured to detect dependencies between accesses to the cache and another cache |
JPH09305401A (ja) * | 1996-05-13 | 1997-11-28 | Mitsubishi Electric Corp | コンピュータ及びコンパイラ |
US6049864A (en) * | 1996-08-20 | 2000-04-11 | Intel Corporation | Method for scheduling a flag generating instruction and a subsequent instruction by executing the flag generating instruction in a microprocessor |
US5878242A (en) * | 1997-04-21 | 1999-03-02 | International Business Machines Corporation | Method and system for forwarding instructions in a processor with increased forwarding probability |
US6000016A (en) * | 1997-05-02 | 1999-12-07 | Intel Corporation | Multiported bypass cache in a bypass network |
US6016543A (en) * | 1997-05-14 | 2000-01-18 | Mitsubishi Denki Kabushiki Kaisha | Microprocessor for controlling the conditional execution of instructions |
US6012137A (en) * | 1997-05-30 | 2000-01-04 | Sony Corporation | Special purpose processor for digital audio/video decoding |
JPH1165840A (ja) * | 1997-08-11 | 1999-03-09 | Sony Corp | 演算処理装置およびその方法 |
US6370638B1 (en) * | 1997-11-21 | 2002-04-09 | Matsushita Electric Industrial Co., Ltd. | Apparatus and method of computer program control in computer systems using pipeline processing |
US6546479B1 (en) | 1998-02-10 | 2003-04-08 | Koninklijke Philips Electronics N.V. | Reduced instruction fetch latency in a system including a pipelined processor |
US8636648B2 (en) | 1999-03-01 | 2014-01-28 | West View Research, Llc | Endoscopic smart probe |
US10973397B2 (en) | 1999-03-01 | 2021-04-13 | West View Research, Llc | Computerized information collection and processing apparatus |
US6708267B1 (en) * | 2000-02-04 | 2004-03-16 | International Business Machines Corporation | System and method in a pipelined processor for generating a single cycle pipeline stall |
US7243214B2 (en) * | 2003-04-21 | 2007-07-10 | Intel Corporation | Stall optimization for an in-order, multi-stage processor pipeline which analyzes current and next instructions to determine if a stall is necessary |
US7684563B1 (en) * | 2003-12-12 | 2010-03-23 | Sun Microsystems, Inc. | Apparatus and method for implementing a unified hash algorithm pipeline |
US7720219B1 (en) * | 2004-10-19 | 2010-05-18 | Oracle America, Inc. | Apparatus and method for implementing a hash algorithm word buffer |
US8536664B1 (en) | 2007-04-16 | 2013-09-17 | DigitalOptics Corporation MEMS | MEMS device with integrated memory cells |
CN105094747B (zh) * | 2014-05-07 | 2018-12-04 | 阿里巴巴集团控股有限公司 | 基于smt的中央处理单元以及用于检测指令的数据相关性的装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4831515A (en) * | 1985-02-08 | 1989-05-16 | Hitachi, Ltd. | Information processing apparatus for determining sequence of parallel executing instructions in response to storage requirements thereof |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU553416B2 (en) * | 1984-02-24 | 1986-07-17 | Fujitsu Limited | Pipeline processing |
JP2667849B2 (ja) * | 1988-01-06 | 1997-10-27 | 株式会社日立製作所 | 情報処理装置 |
US5123108A (en) * | 1989-09-11 | 1992-06-16 | Wang Laboratories, Inc. | Improved cpu pipeline having register file bypass and working register bypass on update/access address compare |
US5222240A (en) * | 1990-02-14 | 1993-06-22 | Intel Corporation | Method and apparatus for delaying writing back the results of instructions to a processor |
-
1991
- 1991-03-01 JP JP3036264A patent/JPH04275628A/ja not_active Withdrawn
- 1991-12-12 US US07/805,776 patent/US5404552A/en not_active Expired - Fee Related
-
1992
- 1992-02-27 DE DE4206062A patent/DE4206062C2/de not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4831515A (en) * | 1985-02-08 | 1989-05-16 | Hitachi, Ltd. | Information processing apparatus for determining sequence of parallel executing instructions in response to storage requirements thereof |
Non-Patent Citations (2)
Title |
---|
US-Buch: "Computer architecture and parallel pro- cessing", K. Hwang, F.A. Briggs McGraw-Hill Book Company, 1984, S. 187 bis 203 * |
US-Z: IEEE Journal of Solid-State-Circuits, Bd. SC-22, Nr. 5, Oktober 1980, S. 790-797 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113946368A (zh) * | 2021-10-29 | 2022-01-18 | 西安微电子技术研究所 | 一种基于risc-v指令集的三级流水线架构、处理器及数据处理方法 |
CN113946368B (zh) * | 2021-10-29 | 2024-04-30 | 西安微电子技术研究所 | 一种基于risc-v指令集的三级流水线架构、处理器及数据处理方法 |
Also Published As
Publication number | Publication date |
---|---|
US5404552A (en) | 1995-04-04 |
DE4206062C2 (de) | 1996-06-13 |
JPH04275628A (ja) | 1992-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE4206062C2 (de) | Pipelineverarbeitung von Instruktionen | |
DE68929483T2 (de) | Datenprozessor mit einer Befehlseinheit, die einen Cachespeicher und einen ROM aufweist. | |
DE69534148T2 (de) | Rechnersystem zur Ausführung von Verzweigungsbefehlen | |
DE69434728T2 (de) | Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel | |
DE4222776C2 (de) | Parallelverarbeitungseinheit und Verfahren zum Ausführen von Befehlen | |
DE69727773T2 (de) | Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor | |
DE112004002848B4 (de) | Mikroprozessor und Verfahren zum Verifizieren einer Speicherdatei in einem derartigen Mikroprozessor | |
DE602005005726T2 (de) | Verbreitung eines Thread-IDs in einem Multithreadpipelineprozessor | |
DE69724771T2 (de) | Zentralprozessoreinheit mit x86 und dsp kern und einem dsp funktions-dekoder zum abbilden von x 86-befehlen auf dsp-befehle | |
DE69636861T2 (de) | Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern | |
DE3210816C2 (de) | ||
US4587632A (en) | Lookahead stack oriented computer | |
DE60005860T2 (de) | Ablaufsteuerung zum ausgeben und wiederausgeben von ketten abhängiger befehle | |
DE60009151T2 (de) | Vorhersage von datenbeförderung von speicher- zum ladebefehl mit untrainierung | |
DE69736105T2 (de) | Hierarchische durchsuchlogik für ungeordnete lade/speicherausführungssteuerung | |
DE102004013676A1 (de) | Schleifenbetrieb mit null Overhead in einem Mikroprozessor mit Anweisungspuffer | |
DE4207148A1 (de) | Superscalar-prozessor | |
DE3638572C2 (de) | ||
DE19506435C2 (de) | Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten | |
DE69133571T2 (de) | Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen | |
DE69633474T2 (de) | Adressierungsverfahren zur nicht-sequentiellen Ausführung von Ladebefehlen hinsichtlich Speicherungsbefehlen | |
DE4313594A1 (de) | Mikroprozessor | |
DE4335475A1 (de) | Datenverarbeitungseinrichtung mit Cache-Speicher | |
DE19855806A1 (de) | Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen | |
DE19534752A1 (de) | Verfahren und System zum Liefern einer Unterstützung für eine spekulative Ausführung |
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 | ||
8339 | Ceased/non-payment of the annual fee |