DE4345028A1 - Vorrichtung zur Reduzierung von Verzögerungen aufgrund von Verzweigungen - Google Patents
Vorrichtung zur Reduzierung von Verzögerungen aufgrund von VerzweigungenInfo
- Publication number
- DE4345028A1 DE4345028A1 DE4345028A DE4345028A DE4345028A1 DE 4345028 A1 DE4345028 A1 DE 4345028A1 DE 4345028 A DE4345028 A DE 4345028A DE 4345028 A DE4345028 A DE 4345028A DE 4345028 A1 DE4345028 A1 DE 4345028A1
- Authority
- DE
- Germany
- Prior art keywords
- instruction
- branch
- command
- register
- registers
- 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.)
- Withdrawn
Links
- 230000001934 delay Effects 0.000 title description 11
- 238000000034 method Methods 0.000 description 21
- 238000004364 calculation method Methods 0.000 description 15
- 230000008901 benefit Effects 0.000 description 12
- 101100242026 Arabidopsis thaliana IAR4 gene Proteins 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000006872 improvement Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000006866 deterioration Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 108090000248 Deleted entry Proteins 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000008685 targeting Effects 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, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
Description
Die vorliegende Erfindung bezieht sich auf Computersysteme,
und insbesondere auf eine verbesserte Maschinenarchitektur
und einen verbesserten Befehlssatz, der die Verzögerungen
aufgrund von Verzweigungsbefehlen reduziert.
In Anbetracht der zahlreichen Verbesserungen der Betriebs
geschwindigkeit von Computern gibt es immer einen Bedarf an
Computern, die mit einem effektiveren Durchsatz arbeiten.
Verbesserte Berechnungsgeschwindigkeiten wurden durch Er
höhen der Geschwindigkeit, mit der die Computer-Hardware
arbeitet, und durch Einführen der Parallelverarbeitung in
der einen oder anderen Form erreicht. Eine Klasse von Ver
besserungen, die durch die parallele Verarbeitung erreicht
wurde, reduziert die Verzögerungen aufgrund der Wartezeit,
die mit den Computerbefehlen zusammenhängt. Für diese Be
schreibung ist die Wartezeit definiert als die Verzögerung
zwischen der Auslösung eines Befehls und der Zeit, zu der
der Befehl tatsächlich ausgeführt wird.
Es sei ein Befehl angenommen, der sich auf Daten bezieht,
die in einem bestimmten Register gespeichert sind. Dieser
Befehl kann fünf Maschinenzyklen benötigen, um ausgeführt zu
werden. In dem ersten Zyklus wird der Befehl aus dem Spei
cher geholt. In dem zweiten Zyklus wird der Befehl deko
diert. Im dritten Zyklus wird der Inhalt des Registers ge
holt. In dem vierten Zyklus wird der Befehl tatsächlich aus
geführt, und in dem fünften Zyklus werden die Daten an den
geeigneten Ort zurückgeschrieben. Wenn man warten wurde, bis
die Befehlsausführung beendet ist, würde lediglich ein Be
fehl alle fünf Maschinenzyklen ausgeführt werden.
Die Auswirkungen der Wartezeit werden in Pipelines durch
Auslösen der Verarbeitung eines zweiten Befehls, bevor die
eigentliche Ausführung des ersten Befehls beendet ist,
reduziert. Bei dem obigen Beispiel würden zu jeglicher Zeit
fünf Befehle in verschiedenen Verarbeitungsstufen sein. Der
Prozessor würde fünf Prozessoren einschließen, die parallel
arbeiten, wobei jeder Prozessor eines der fünf Ziele, das an
der Ausführung eines Befehls beteiligt ist, ausführt.
Während die Daten für den ältesten Befehl zurück in den
Speicher oder in das Register geschrieben werden, würde der
zweitälteste Befehl durch die Ausführungshardware ausge
führt. Die Registerinhalte, die für den als nächsten auszu
führenden Befehl benötigt werden, würden durch die Register
hardware gleichzeitig ausgelesen, und so weiter.
Im Prinzip können Pipelines die Ausführung eines Befehls pro
Maschinenzyklus durchführen, wenn eine bekannte Folge von
Befehlen ausgeführt wird. Unglücklicherweise schließen
Computerprogramme Verzweigungsbefehle ein, die den Befehls
fluß unterbrechen. Es sei die folgende Befehlsfolge ange
nommen:
if x = 0 then goto newstart
y=z
goto somewhere
newstart: y=k
y=z
goto somewhere
newstart: y=k
Der erste Befehl wird in einen Verzweigungsbefehl basierend
auf dem Inhalt von x übersetzt. Zu der Zeit, zu der dieser
Befehl die Ausführungseinheit in der Pipeline erreicht, wer
den bereits einige zusätzliche Befehle in die Pipeline ein
getreten sein. Der Computer hat jedoch kein Verfahren, um
festzustellen, ob der Befehl, der der Verzweigung folgt,
"y=z" oder "y=k" sein sollte, bis er die Verzweigung tatsäch
lich ausführt. Folglich ist es unmöglich, festzustellen,
welche Befehle nach dem Verzweigungsbefehl in die Pipeline
geladen werden sollten. Normalerweise wird eines von zwei
Verzweigungsergebnissen als das korrekte Verzweigungsergeb
nis angenommen, und die Befehle, die dem gewählten Verzwei
gungsergebnis entsprechen, werden dann in die Pipeline ge
laden.
Wenn die falsche Folge von Befehlen geladen ist, muß der
Computer für eine Zeit, die ausreichend ist, um die Pipeline
zu leeren und erneut zu füllen, angehalten werden. Wenn die
Befehle, die "y=z" entsprechen, nach dem Verzweigungsbefehl
und x=0 geladen wurden, dann muß die Pipeline folglich ge
räumt werden und die Befehle, die "y=k" entsprechen, müssen
zur Ausführung geladen werden. Dies verzögert die Ausführung
des Programms um eine Zeit, die durch die Anzahl der Stufen
in der Pipeline bestimmt ist.
Bekannte Systeme haben versucht, diese Verzögerungen durch
Vorhersagen des Ergebnisses des Verzweigungsbefehls und
durch Laden der Befehle, die dem vorausgesagten Ergebnis
entsprechen, zu reduzieren. Es gibt jedoch kein Vorhersage
schema mit einer 100%igen Genauigkeit. Daher werden Ver
zögerungen immer noch angetroffen.
Verzweigungsbefehle verursachen ebenfalls speicherbezogene
Wartezeitverzögerungen. Die meisten modernen Computersysteme
verwenden Cache-Speicher-Untersysteme, um die wirksame Zu
griffszeit auf den Hauptspeicher des Computers zu verbes
sern. Der Cache-Speicher besteht aus einem sehr schnellen
Assoziativspeicher, der die zuletzt verwendeten Befehle und
Daten speichert. Wenn der Prozessor den Inhalt eines bestim
mten Speicherortes abfragt, fängt der Cache-Prozessor die
Abfrage ab und überprüft den Cache-Speicher, um festzustel
len, ob die abgefragten Informationen in dem Cache-Speicher
sind. Wenn die abgefragten Informationen in dem Cache-Spei
cher sind, werden sie mit einer minimalen Verzögerung an den
Prozessor zurückgegeben. Wenn die abgefragten Informationen
jedoch in dem Hauptspeicher sind, wird der Prozessor ange
halten, während der Cache-Speicher die Informationen aus
liest. Nachdem die Hauptspeichergeschwindigkeiten bedeutend
langsamer sind als die der Cache-Speicher, erzeugen solche
"Fehlgriffe" des Cache-Speichers bedeutende Verzögerungen.
Verzweigungsbefehle führen oft zu Cache-Speicherfehlgriffen.
Eine Verzweigung veranlaßt den Computer oft, den Betrieb an
einem Speicherort fortzuführen, der weit von dem des Ver
zweigungsbefehl entfernt war. Cache-Speicher speichern die
zuletzt verwendeten Informationen und Informationen, die
nahe an diesen Informationen in dem Hauptspeicher sind. Wenn
die Verzweigung zu einem entfernten Ort führt, ist es daher
unwahrscheinlich, daß der nächste Befehl in dem Cache-Spei
cher ist.
Ein weiteres Problem, das bei bekannten Systemen zum Hand
haben von Verzweigungsbefehlen angetroffen wird, ist die Un
fähigkeit dieser Systeme, Daten zu verwenden, die bei der
Verarbeitung eines ersten Verzweigungsbefehls verwendet wur
den, um die benötigte Verarbeitung für einen zweiten Ver
zweigungsbefehl zu reduzieren. Ein bedingter Verzweigungs
befehl kann als Befehl betrachtet werden, der drei verbunde
ne Befehle umfaßt. Der erste Befehl berechnet die Zieladres
se, d. h. die Adresse des nächsten auszuführenden Befehls,
wenn die Verzweigung genommen wird. Der zweite Befehl be
rechnet das Verzweigungsergebnis, dessen Ergebnis bestimmt,
ob die Verzweigung zu nehmen ist. Der dritte Befehl ist die
eigentliche Übertragung der Steuerung.
In vielen Fällen wird eine Anzahl von Verzweigungsbefehlen,
die dieselbe Zieladresse haben, in dem Programm vorhanden
sein. Daher könnte im Prinzip ein bedeutender Betrag an Ver
arbeitungszeit eingespart werden, wenn die Ergebnisse der
Berechnung der Zieladresse des ersten Befehls für die rest
lichen Befehle verwendet werden könnten. Bekannte Computer
architekturen sehen kein effektives Verfahren vor, um dieses
zu erreichen; daher wird die Zieladresse für jede Verzwei
gung neu berechnet. Auf ähnliche Weise kann die Vergleichs
berechnung das Ergebnis von verschiedenen Verzweigungen be
stimmen.
Abschließend sehen bekannte Systeme lediglich eine Einrich
tung zum Ausführen der Berechnungen vor, die einem Verzwei
gungsbefehl zu irgendeinem gegebenen Zeitpunkt entsprechen.
Eine wichtige Strategie bei der Reduzierung der Auswirkungen
der Wartezeiten schließt die Bewegung von Befehlen innerhalb
der Befehlsfolge ein. Wenn der Kompiler z. B. weiß, daß eine
Ladeoperation eine Wartezeit hat, kann der Kompiler andere
Befehle derart in der Befehlsfolge bewegen, daß diese Befeh
le während der Wartezeitperiode ausgeführt werden. Diese
Strategie reduziert die Auswirkungen der Wartezeitverzöge
rung. Unglücklicherweise ist die Fähigkeit des Kompilers,
diese Wartezeitverzögerungen durch Durchführen von Berech
nungen, die für Verzweigungsbefehle benötigt werden, einzu
füllen, durch die Unfähigkeit, die gesamte Verzweigungsbe
rechnung durchzuführen, begrenzt. Bekannte Systeme sehen
z. B. keine wirksame Einrichtung zum Teilen der Berechnung
der Zieladresse von der Vergleichsoperation vor, um die Be
rechnung der Zieladresse außerhalb der Reihenfolge zu er
lauben. Bekannte Systeme können höchstens mit einem Ver
zweigungsbefehl arbeiten, und wenn die Informationen für
diesen Verzweigungsbefehl nicht erhältlich sind, kann die
Verzweigung nicht vorher berechnet werden.
Es ist die Aufgabe der vorliegenden Erfindung, eine verbes
serte Computerarchitektur und einen verbesserten Befehlssatz
zur Ausführung von Verzweigungsbefehlen zu schaffen.
Diese Aufgabe wird durch ein Datenverarbeitungssystem nach
Patentanspruch 1 gelöst.
Es ist ein Vorteil der vorliegenden Erfindung, daß sie eine
Computerarchitektur schafft, die die Verzögerungen redu
ziert, die bei bekannten Systemen aufgrund der Notwendig
keit, die Pipeline zu räumen, angetroffen werden, wenn ein
unerwartetes Verzweigungsergebnis auftritt.
Ein weiterer Vorteil der Erfindung ist es, daß eine Compu
terarchitektur geschaffen wird, die Speicherwartezeiten, die
durch die Ausführung von Verzweigungsbefehlen erzeugt wer
den, reduziert werden.
Wiederum ein Vorteil der vorliegenden Erfindung ist es, daß
eine Computerarchitektur geschaffen wird, bei der die Be
rechnungen, die der Ausführung eines Verzweigungsbefehls
eigen sind, durch eine Anzahl von Verzweigungsbefehlen ge
teilt werden kann.
Ein weiterer Vorteil der vorliegenden Erfindung ist es, daß
eine Computerarchitektur geschaffen wird, bei der eine Mehr
zahl von Verzweigungsbefehlen zu jeglicher gegebener Zeit
auf verschiedenen Stufen der Verarbeitung sein kann.
Ein Vorteil der vorliegenden Erfindung ist es, daß eine
Computerarchitektur geschaffen wird, bei der die Reihenfol
ge, als auch der zeitliche Verlauf, der Adreßberechnung und
der Zustandsberechnung relativ zu der verändert werden kann,
die durch die Reihenfolge der Befehle in dem Kode nahegelegt
wird.
Bei einem Datenverarbeitungssystem gemäß der vorliegenden
Erfindung führt der Befehlsprozessor nacheinanderfolgend die
Befehle eines Programms aus, bis er einen Verzweigungsbefehl
ausführt, der anzeigt, daß der Befehlsprozessor den Befehl,
der durch eine Zieladresse bestimmt ist, als nächsten Befehl
in dem Programm anstelle des nächsten Befehls in der Pro
grammfolge ausführen soll. Das Datenverarbeitungssystem ver
wendet eine Registerdatei, die mit dem Befehlsprozessor ver
bunden ist, um die Ausführung von Verzweigungsbefehlen zu
vereinfachen. Die Registerdatei schließt ein oder mehrere
Register ein. Jedes Register wird verwendet, um Informatio
nen zu speichern, die für die Ausführung eines Verzweigungs
befehls benötigt werden. Jedes der Register schließt Raum
zum Speichern einer Zieladresse eines Verzweigungsbefehls
und Raum zum Speichern einer Flagge mit einem ersten und
einem zweiten Zustand ein, wobei der erste Zustand anzeigt,
daß ein Verzweigungsbefehl, der sich auf das Register be
zieht, den Befehlsprozessor veranlassen sollte, zu dem Be
fehl, der durch die Zieladresse bestimmt ist, zu verzweigen,
wenn ein "führe Verzweigung aus"-Befehl, der sich auf das
Register bezieht, ausgeführt wird.
Der zweite Zustand zeigt an, daß der Befehlsprozessor fort
fahren sollte, die Befehle in der Reihenfolge auszuführen,
wenn ein "führe Verzweigung aus"-Befehl, der sich auf das
Register bezieht, durch den Befehlsprozessor ausgeführt
wird. Die vorliegende Erfindung verwendet einen "bereite
Verzweigung vor"-Befehl, um ein Register mit einer Ziel
adresse zu laden. Bedingte Verzweigungsbefehle werden mit
der Hilfe von Vergleichsbefehlen ausgeführt, die die Flagge
in dem Register, auf das durch den Befehl Bezug genommen
wird, eingestellen, wenn eine bestimmte Bedingung angetrof
fen wird.
Bei einem Ausführungsbeispiel der vorliegenden Erfindung
wird ein Vorabrufbefehl an einen Cache-Speicher gesendet,
wenn eine Flagge in einem der Register eingestellt ist, um
anzuzeigen, daß eine Verzweigung genommen wird. Der Vorabruf
wartet nicht auf den endgültigen Wert der Flagge. Der Vorab
rufbefehl veranlaßt, daß die Cache-Leitung, die die Ziel
adresse enthält, in den Cache-Speicher geladen wird, wenn
diese Cache-Leitung nicht bereits in dem Cache-Speicher ist.
Bei Systemen, die eine hierarchische Cache-Speicherstruktur
haben, kann die Flagge mehr als zwei Zustände haben. Diese
zusätzlichen Zustände können verwendet werden, um die Stufe
in der Cache-Hierarchie anzuzeigen, auf der die Kopie der
Cache-Leitung gespeichert ist, oder daß die Informationen
direkt aus dem Hauptspeicher übertragen werden müssen.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung
werden nachfolgend unter Bezugnahme auf die beiliegenden
Zeichnungen näher erläutert. Es zeigt
Fig. 1 ein Blockdiagramm eines ersten Ausführungsbeispiels
eines Datenverarbeitungssystems gemäß der vorlie
genden Erfindung;
Fig. 2 ein Blockdiagramm eines zweiten Ausführungsbei
spiels eines Datenverarbeitungssystems gemäß der
vorliegenden Erfindung;
Fig. 3 ein Blockdiagramm eines Ausführungsbeispiels eines
Datenverarbeitungssystems, das ein Mehr-Ebenen-
Cache-Speichersystem verwendet, gemäß der vorlie
genden Erfindung; und
Fig. 4 ein Blockdiagramm eines vierten Ausführungsbei
spiels der vorliegenden Erfindung.
Die vorliegende Erfindung verwendet eine spezielle Register
datei, auf die als Befehlsadreßregisterdatei Bezug genommen
wird, um einen verbesserten Befehlssatz und eine verbesserte
Architektur zur Ausführung von Verzweigungsbefehlen zu
schaffen. Jedes Register in dieser Datei wird verwendet, um
die Informationen zu speichern, die notwendig sind, um einen
Verzweigungsbefehl auszuführen. Die einfachste Ausführung
einer Befehlsadreßregisterdatei ist bei 10 in Fig. 1 ge
zeigt. Die Registerdatei 10 stellt Informationen bereit, die
für den Befehlsprozessor 12 benötigt werden, um einen
Führe-Verzweigung-Aus-Befehl auszuführen, wie unten be
schrieben. Die Registerdatei 10 schließt bevorzugterweise
eine Mehrzahl von Befehlsadreßregistern 14 ein. Jedes Re
gister 14 schließt Raum zum Speichern einer Zieladresse 16
und einer Flagge 18 ein, die bestimmt, ob die Steuerung an
die Zieladresse 16 übertragen wird, wenn der Befehlsprozes
sor 12 einen Führe-Verzweigung-Aus-Befehl ausführt, der sich
auf dieses Register bezieht.
Bei einem Datenprozessor, der die vorliegende Erfindung ver
wendet, ist der herkömmliche Verzweigungsbefehl über drei
Befehle ausgeführt, auf die als Bereite-Verzweigung-Vor (PTB
= Prepare To Branch), Zustand-Berechnung (CMP = Condition
Compute), und Führe-Verzweigung-Aus (EB = Execute Branch)
Bezug genommen wird. Diese Befehle führen die drei Ziele
aus, die notwendig sind, um einen bedingten Verzweigungsbe
fehl auszuführen. Die Befehle beziehen sich auf die Register
in der Befehlsadreßregisterdatei. Der PTB-Befehl stellt die
Zieladresse für die Verzweigung bereit und speicherte die
Adresse in einem der Befehlsadreßregister in der Befehlsa
dreßregisterdatei. Das bestimmte Register ist entweder als
Teil des Befehls bestimmt oder durch einen Mechanismus, der
unten genauer beschrieben wird. Für diese Beschreibung wird
angenommen, daß das Register als Teil des Befehls bestimmt
wird.
Der CMP-Befehl vergleicht zwei Argumente, um festzustellen,
ob die Verzweigung genommen wird und setzt die Sprungflagge
18 in dem Register, das durch den Vergleich-Befehl bestimmt
ist, entsprechend. Bei einer Ausführung der vorliegenden Er
findung wird die Sprungflagge auf einen ersten Zustand ge
setzt, um anzuzeigen, daß ein Sprung gemacht wird, wenn zwei
Argumente identisch sind. Wenn die zwei Argumente nicht
identisch sind, wird die Sprungflagge auf einen zweiten Zu
stand gesetzt, der anzeigt, daß der Sprung nicht durchge
führt wird.
Der EB-Befehl führt die Verzweigung eigentlich aus. Wenn der
Befehlsprozessor 12 einen EB-Befehl ausführt, greift er auf
das Befehlsadreßregister, das in dem EB-Befehl bestimmt ist,
zu und untersucht die Sprungflagge in dem Register. Wenn die
Sprungflagge anzeigt, daß die Verzweigung genommen wird,
wird der nächste Befehl, der durch den Befehlsprozessor 12
ausgeführt wird, der Befehl sein, der sich an der Ziel
adresse befindet. Wenn die Sprungflagge anzeigt, daß der
Sprung nicht genommen wird, wird der nächste Befehl, der
durch den Befehlsprozessor 12 ausgeführt wird, der nächste
nachfolgende Befehl sein.
Die vorliegende Erfindung schafft eine bedeutende Verbesse
rung gegenüber der Hardware und den Verfahren für eine be
dingte Verzweigungsausführung, die im Stand der Technik ver
wendet werden. Beim Stand der Technik wird die Zieladresse
zu dem Zeitpunkt berechnet, zu dem die Vergleichsoperation
durchgeführt wird. Daher können die Informationen, die für
einen bedingten Verzweigungsbefehl benötigt werden, nicht
früh berechnet werden, weil die in dem Vergleich zu verwen
denden Argumente nicht erhältlich sind oder sich vor dem
Punkt in dem Kode, an dem der bedingte Sprung ausgeführt
wird, ändern können. Im Gegensatz dazu gestattet es die vor
liegende Erfindung, die Zieladresse sobald als möglich zu
berechnen, nachdem die Argumente für den Vergleich nicht be
nötigt werden. Daher kann diese Arbeit verwendet werden, um
die Wartezeitperioden mit anderen Befehlen zu füllen. Auf
ähnliche Weise kann der Vergleich durchgeführt werden, so
bald die Argumente bekannt sind; daher kann diese Arbeit
ebenfalls bewegt werden, um die Wartezeitperiode mit einigen
anderen Befehlen aufzufüllen.
Es wird darauf hingewiesen, daß, wenn ein EB-Befehl in die
Pipeline eintritt, das wahrscheinlichste Ergebnis des Be
fehls bereits in der Sprungflagge des entsprechenden Be
fehlsadreßregisters gespeichert ist. Das System kann daher
eine gute Vermutung über den richtigen Ort treffen, von dem
die Befehle, die dem EB-Befehl folgen, zu laden sind. Bei
dem bevorzugten Ausführungsbeispiel der vorliegenden Erfin
dung liest der EB-Befehl das geeignete Befehlsadreßregister,
wenn er in die Pipeline eintritt. Bei der großen Mehrheit
der Fälle wird sich die Sprungfrage nicht verändert haben,
wenn der EB den Ausführungspunkt in der Pipeline erreicht.
In diesem Fall werden die ordnungsgemäßen Befehle hinter dem
EB-Befehl in der Pipeline sein und ein Räumen der Pipeline
wird nicht erforderlich sein. In solchen Fällen, in denen
die Befehle vor dem EB in der Pipeline dazu führen, daß die
Flagge geändert wird, wird die Pipeline auf herkömmliche Art
geräumt. Von diesen Fällen wird jedoch erwartet, nur selten
aufzutreten, nachdem es typischerweise nur wenige Befehle
vor dem EB gibt, die eine solche Änderung des Flaggenwertes
verursachen könnten. Weiterhin kann der Kompiler die Be
fehlsfolge fast immer umstellen, um zu garantieren, daß
keiner dieser Befehle ein Vergleich ist, der sich auf dieses
Befehlsadreßregister bezieht.
Die Unterteilung des herkömmlichen bedingten Verzweigungs
befehls in die oben beschriebenen drei Befehle kann eben
falls zu bedeutenden Berechnungseinsparungen führen. Es sei
ein Programm mit einer Schleife angenommen, die eine be
dingte Verzweigung enthält, z. B.:
While i= 0
instructions
if x=y then goto error_exit
end
instructions
if x=y then goto error_exit
end
Bei bekannten Systemen erfordert jede Iteration der Schleife
von dem Prozessor, die Adresse von "error_exit" zu bestim
men, x und y zu vergleichen und dann zu entscheiden, ob ver
zweigt wird oder nicht. Mit der vorliegenden Erfindung kann
der PTB-Befehl außerhalb der Schleife bewegt werden, d. h.:
PTB error_exit, iarx
While i=0
instructions
CMP x,y,iarx
EB iarx
end
While i=0
instructions
CMP x,y,iarx
EB iarx
end
Hierbei identifiziert "iarx" eines der Register in der Re
gisterdatei. Daher muß der PTB-Befehl lediglich einmal aus
geführt werden. Wenn die Werte von x und y innerhalb der
Schleife nicht verändert werden, kann der CMP-Befehl auf
ähnliche Weise ebenfalls aus der Schleife bewegt werden, wo
durch zusätzliche Einsparungen geschaffen werden.
Bei dem bevorzugten Ausführungsbeispiel der vorliegenden Er
findung stellt der PTB-Befehl ebenfalls die Sprungflagge auf
einen anfänglichen Wert ein. Dies ist aus zwei Gründen nütz
lich. Erstens kann durch Einstellen der Sprungflagge zu dem
Zeitpunkt, zu dem der PTB-Befehl ausgeführt wird, dieselbe
Architektur verwendet werden, um sowohl bedingte als auch
nicht-bedingte Verzweigungsbefehle auszuführen. In dem Fall
eines nicht-bedingten Verzweigungsbefehls wird kein CMP-Be
fehl zwischen dem PTB- und dem EB-Befehl ausgeführt.
Zweitens kann das fortgeschrittene Wissen bezüglich des Er
gebnisses der Verzweigung verwendet werden, um Wartezeiten
zu reduzieren. Wenn die Verzweigung genommen wird, ist es
wahrscheinlich, daß die Befehle für den Kode, der dem Ver
zweigungspunkt folgt, derzeit nicht in dem Cache-Speicher
des Datenverarbeitungssystems vorhanden sind. Der Cache-
Speicher enthält normalerweise die Befehle, die zuletzt aus
geführt wurden, und die Befehle, die diesen in dem Haupt
speicher am nächsten sind, d. h. Befehle, die in derselben
Cache-Speicherleitung liegen, wie die, die zuletzt ausge
führt wurden. Verzweigungsbefehle schicken das Programm oft
an einen Ort, der von dem derzeitigen Ort in dem Hauptspei
cher entfernt ist; die Befehle auf dem neuen Weg werden da
her sehr wahrscheinlich immer noch im Hauptspeicher sein.
Bekannte Systeme erleiden typischerweise eine Speicherwarte
zeitverzögerung, wenn der erste Befehl nach einer Ver
zweigung ausgeführt wird, nachdem der Prozessor angehalten
wird, während das Cache-Speicheruntersystem die geeignete
Cache-Speicherleitung aus dem Hauptspeicher abruft. Die vor
liegende Erfindung verwendet einen "Vorabruf"-Befehl, der
durch die Informationen in den Befehlsadreßregistern akti
viert wird, um solche Wartezeitverzögerungen zu reduzieren.
Im einfachsten Ausführungsbeispiel der vorliegenden Erfin
dung, das diese Technik verwendet, gibt ein Speicherprozes
sor einen Befehl an ein Cache-Speicheruntersystem aus, so
bald es bekannt ist, daß die Verzweigung genommen werden
kann. Dieser Befehl veranlaßt das Cache-Speicheruntersystem,
die Cache-Speicherleitung, die die Zieladresse enthält, aus
dem Hauptspeicher zu laden, wenn die Cache-Speicherleitung
nicht bereits in dem Cache-Speicher enthalten ist. Sobald
ein PTB- oder CMP-Befehl veranlaßt, daß die Sprungflagge ge
setzt wird, beginnt das Cache-Speicheruntersystem folglich
damit, die erforderliche Cache-Leitung aus dem Speicher ab
zurufen. Das Ausmaß der Verbesserung hängt offensichtlich
davon ab, wie früh vor der Ausführung des EB-Befehls die
Sprungflagge gesetzt wird. Wenn sie ausreichend früh gesetzt
wird, kann die gesamte Wartezeitverzögerung eliminiert wer
den.
Ein Ausführungsbeispiel der vorliegenden Erfindung, das
einen solchen Vorabruf-Befehl verwendet, ist in Fig. 2 bei
100 gezeigt. Die Befehlsadreßregisterdatei 101 schließt eine
Steuerung 102 ein, die die Sprungflaggen in den Befehls
adreßregistern 104 abtastet. Wenn der Befehlsprozessor 106
veranlaßt, daß eine dieser Flaggen gesetzt wird, gibt die
Steuerung 102 einen Vorabruf-Befehl an den Cache-Speicher
108 aus. Der Vorabruf-Befehl schließt die Zieladresse ein,
die in dem Befehlsadreßregister mit der gesetzten Sprung
flagge gespeichert ist. Wenn die Cache-Speicherleitung, die
diese Zieladresse enthält, derzeitig nicht im Cache-Speicher
108 gespeichert ist, veranlaßt der Cache-Speicher 108, daß
die Cache-Speicherleitung aus dem Hauptspeicher 110 geladen
wird.
Obwohl der Vorabruf-Befehl, der oben beschrieben wurde, die
Auswirkung der Speicherwartezeit, die angetroffen wird, wenn
die Verzweigung genommen wird, reduziert, kann er in dem
Cache-Speicher 108 Probleme verursachen. Jedesmal, wenn ein
neuer Eintrag in einen Cache-Speicher eingelesen wird, muß
ein existierender Eintrag in dem Cache-Speicher gelöscht
werden. Wenn es bei dem Eintrag, der gelöscht wird, wahr
scheinlich ist, daß er in der nahen Zukunft wieder verwendet
wird, während der ankommende Eintrag wahrscheinlich nur ein
mal verwendet wird, kann eine Verschlechterung beim Ver
halten des Cache-Speichers auftreten. Diese Verschlechterung
rührt von der Notwendigkeit her, den gelöschten Eintrag er
neut zu laden, wenn er das nächste Mal verwendet wird. Diese
Rückladeoperation kann eine Verzögerung hervorrufen, während
der Eintrag aus dem Hauptspeicher geladen wird. Es wird da
rauf hingewiesen, daß Befehle für einen Verzweigungsweg oft
von der Art "benutze einmal vor der Ersetzung" sind, nachdem
der Verzweigungsweg oft nur einmal in dem Programm beschrit
ten wird.
Ein Ausführungsbeispiel der vorliegenden Erfindung, das ein
Mehr-Ebenen-Cache-Speichersystem 210 verwendet, ist in Fig.
3 bei 200 gezeigt. Dieses Ausführungsbeispiel der vorliegen
den Erfindung reduziert die Probleme, die angetroffen wer
den, wenn Einträge, bei denen es wahrscheinlich ist, daß sie
nur einmal verwendet werden, zu dem Cache-Speicher gesendet
werden. Das Cache-Speichersystem 210 schließt zwei Ebenen
von Cache-Speichern ein, die bei 212 und 213 gezeigt sind.
Die erste Ebene, Ebene 1, arbeitet auf eine herkömmliche
Art. Diese Ebene wird zur Speicherung von Einträgen verwen
det, bei denen erwartet wird, daß sie mehr als einmal
während ihrer Anwesenheit in dem Cache-Speichersystem 210
verwendet werden. Die Ebene 1 führt eine herkömmliche Er
setzungsstrategie aus. Die ältesten Einträge in der Ebene 1
können z. B. die sein, die durch ankommende Einträge ersetzt
werden. Die Ebene 2 wird verwendet, um Einträge zu spei
chern, bei denen es wahrscheinlich ist, daß sie nur einmal
während ihrer Anwesenheit in dem Cache-Speichersystem 210
verwendet werden. Daher ist die Ebene 2 Ersetzungsstrategie
gewählt, um dieses Fehlen der erneuten Verwendung zu reflek
tieren. Es kann z. B. eine Ersetzungsstrategie verwendet wer
den, bei der ein Eintrag zur Ersetzung markiert ist, sobald
er an den Befehlsprozessor abgegeben wurde. Nachdem Ein
träge, bei denen es wahrscheinlich ist, daß sie nur einmal
verwendet werden, nicht in die Ebene 1 des Cache-Speichers
eingeführt werden, werden die oben beschriebenen Probleme
vermieden.
Bei diesem Ausführungsbeispiel der vorliegenden Erfindung
wird die Auswahl der Cache-Speicherebene durch ein zusätz
liches Feld 207 in jedem der Befehlsadreßregister in der
Befehlsadreßregisterdatei 201 bestimmt. Diese Informationen
können durch den Kompiler oder den Programmierer bereitge
stellt werden. Zusätzlich zur Bestimmung der Cache-Speicher
ebene können die Speichersteuerungsinformationen 207 eben
falls verwendet werden, um zu bestimmen, ob die Steuerung
208 einen Vorabruf-Befehl an das Cache-Speichersystem 210
sendet. D.h., die Speichersteuerungsinformationen können
anstelle der Sprungflagge 206 verwendet werden, um festzu
stellen, ob ein Vorabruf gesendet wird. Es ist für Fachleute
offensichtlich, daß die Speichersteuerungsinformationen als
eine Erweiterung der Sprungflagge angesehen werden können.
Zusätzlich können die Speichersteuerungsinformationen, die
in Feld 207 gespeichert sind, Informationen einschließen,
die die Priorität der Vorabruf-Operation bestimmen. In vie
len Systemen beschränkt die Speicherbandbreite zwischen dem
Hauptspeicher 214 und den Cache-Speicherebenen die Anzahl
von Vorabruf-Operationen, die in der Zeit zwischen der Init
ialisierung eines Verzweigungsbefehls und der eigentlichen
Ausführung dieses Befehls wirksam durchgeführt werden kön
nen. Weiterhin sind nicht alle Verzweigungen gleich wahr
scheinlich; daher ist es vorteilhaft, einen Mechanismus vor
zusehen, um die Vorabruf-Operationen mit einer Priorität zu
versehen. Die Prioritätsinformationen können durch den PTB-
Befehl oder einen anderen geeigneten Befehl geladen werden.
Die Prioritätsinformationen bei einem Ausführungsbeispiel
der vorliegenden Erfindung schließen die Wahrscheinlichkeit
ein, mit der die Verzweigung genommen wird, wie sie durch
den Binder (Linker) oder Kompiler bestimmt wurde. Diese In
formationen können durch die Steuerung 208 verwendet werden,
um Prioritäten für Vorabruf-Operationen einzustellen.
Es wird darauf hingewiesen, daß die Größe der Ebene 1 des
Cache-Speicherteilsystems nicht groß sein muß. Dieses Unter
system muß lediglich groß genug sein, um die Cache-Speicher
leitungen für die Verzweigungsbefehle, die zur Ausführung
vorbereitet sind, in den Befehlsadreßregistern 201 zu hal
ten. Pro Befehlsadreßregister ist höchstens ein Eintrag not
wenig.
Die obigen Ausführungsbeispiele der vorliegenden Erfindung
erreichen ihre Vorteile durch Ersetzen des herkömmlichen
Vergleich- und Verzweigungsbefehls durch die oben beschrie
benen drei Befehle. Während diese Ausführungsbeispiele we
sentliche Vorteile schaffen, kann die Einführung der drei
Befehle für einen Befehl die Größe des Programms erhöhen.
Diese Erhöhung kann durch Verwendung einiger "Kombina
tions"-Befehle, die zwei Funktionen von zwei der drei Be
fehle kombinieren, etwas reduziert werden. Ein CMP- und ein
EB-Befehl könnten z. B. zu einem einzigen Befehl kombiniert
werden, bei dem der EB-Befehl automatisch nach dem CMP-Teil
des Befehls ausgeführt wird. Die Ausführung kann sofort nach
dem CMP-Befehl erfolgen oder eine bestimmte Anzahl von Ma
schinenzyklen nach dem CMP-Befehl. Auf ähnliche Art könnten
ein PTB- und ein EB-Befehl zu einem einzigen Befehl zur Aus
führung von nicht-bedingten Verzweigungen kombiniert werden.
In diesem Fall würde der EB-Befehl eine vorbestimmte Anzahl
von Maschinenzyklen, nachdem der PTB-Abschnitt des Befehls
ausgeführt wurde, ausgeführt. Die Anzahl von Maschinenzyklen
kann fest sein oder ein Teil des Kombinationsbefehls. Es ist
ebenfalls offensichtlich, daß ein Kombinationsbefehl, der
einen PTB-Befehl gefolgt von einem CMP-Befehl umfaßt, vor
teilhafterweise verwendet werden kann.
Bei den oben beschriebenen Ausführungsbeispielen der vor
liegenden Erfindung bestimmt jeder der drei Befehle, PTB,
CMP und EB, ein bestimmtes Befehlsadreßregister. Obwohl die
se Ausführungsbeispiele der vorliegenden Erfindung bedeuten
de Vorteile gegenüber dem Stand der Technik schaffen, er
fordern sie, daß der Befehlsprozessor Informationen, die das
Befehlsadreßregister bestimmen, dekodiert. Dies erfordert
einen bedeutenden Anteil von schneller Hardware. Ein Aus
führungsbeispiel der vorliegenden Erfindung, das diese Hard
ware vermeidet, ist in Fig. 4 bei 300 gezeigt. Bei diesem
Ausführungsbeispiel der vorliegenden Erfindung beziehen sich
die PTB-, CMP- und EB-Befehle auf das Befehlsadreßregister
302, das durch den Inhalt eines Registers 309 bestimmt ist.
Daher müssen diese Informationen das Befehlsadreßregister
nicht in dem Befehl selbst bestimmen. Der Inhalt des Regis
ters 309 kann unter Verwendung eines getrennten Befehls, der
für diese Aufgabe vorgesehen ist, geändert werden.
Zusätzlich kann bei diesem bevorzugten Ausführungsbeispiel
der Inhalt des Registers 309 durch einen EB-Befehl geändert
werden. Bei diesem Ausführungsbeispiel schließt jedes der
Befehlsadreßregister 302 ein Feld 305 ein, das das nächste
Befehlsadreßregister bestimmt, das das aktive Befehlsadreß
register ist, nachdem der EB-Befehl, der das derzeitig ak
tive Befehlsadreßregister bestimmt, ausgeführt ist. Der In
halt des Felds 305 kann in einem PTB-Befehl bestimmt sein,
der an dieses Befehlsadreßregister gerichtet ist. Alternativ
kann ein bestimmter Befehl für diese Aufgabe vorgesehen
sein. Das Feld 305 kann verwendet werden, um zwei alterna
tive Werte für das Register 309 zu speichern. Der erste Wert
wird verwendet, wenn der Sprung durchgeführt wird, der
zweite Wert wird verwendet, wenn der Sprung nicht durchge
führt wird.
Prozeduraufrufe sind eine bestimmte Klasse von Verzweigungs
anwendungen, auf die als Verzweigung und Verbindung (EBL =
Execute Branch and Link) Bezug genommen wird, bei denen die
Adresse des nächsten Befehls nach dem Prozeduraufrufin
einem Register abgelegt wird. Die Adresse in dem Register
bestimmt den Ort, an dem das Programm nach der Rückkehr aus
der Prozedur wieder aufgenommen werden soll. In dem Fall, in
dem der EBL-Befehl das Befehlsadreßregister explizit bestim
mt, unterscheidet sich ein Prozeduraufruf von einer normalen
Verzweigung lediglich darin, daß die Adresse des Befehls
nach dem Prozeduraufruf in einem bestimmten Register abge
legt ist. Es wird jedoch darauf hingewiesen, daß dieses Re
gister ein weiteres Befehlsadreßregister sein könnte.
In dem Fall, in dem ein Zeiger, wie z. B. das Register 309,
verwendet wird, um das Befehlsadreßregister, das durch den
EBL-Befehl zu verwenden ist, zu bestimmen, verwendet das be
vorzugte Ausführungsbeispiel der vorliegenden Erfindung
einen Befehl, der sich von dem oben beschriebenen EBL-Befehl
darin unterscheidet, daß die Inhalte des Registers 309, auf
das als Benennungsregister Bezug genommen wird, in dem Be
fehlsadreßregister, das durch den Verzweigungs- und Verbin
dungs-Befehl für den Fall, in dem die Verzweigung nicht ge
nommen wird, verwendet wird, bestimmt werden. Dies läßt zu,
daß ein nicht durchgeführter Verzweigungs- und Verbindungs-
Befehl für den Prozeß, durch den die Inhalte des Benennungs
registers bestimmt werden, transparent ist. Diese Informa
tionen können in dem Befehlsadreßregister durch einen Vor
bereitung-Auf-Verzweigungs- und Verbindungs-Befehl in einer
Art analog zu der, die oben für andere Bereite-Verzweigung-
Vor-Befehle beschrieben wurde, in dem Befehlsadreßregister
gespeichert werden.
Wenn die Verzweigung und die Verbindung durchgeführt werden,
treten unglücklicherweise zwei Probleme auf. Als erstes ist
es sehr unwahrscheinlich, daß das Befehlsadreßregister, das
als nächstes benannt wird, für die aufgerufene Prozedur
irgendeinen Sinn hat. Überdies wird die aufgerufene Prozedur
die Kette der Benennungsregisterwerte wieder herstellen
müssen, um die Werte anzupassen, die verwendet worden wären,
wenn die Verzweigung nicht ,durchgeführt worden wäre, wenn
die aufgerufene Prozedur zu der aufruf enden Prozedur zurück
kehrt. Im Prinzip kann dies durch sichern des Benennungs
registerinhalts in der aufgerufenen Prozedur und durch Wie
derherstellen des Inhalts des Benennungsregisters vor der
Rückkehr erreicht werden. Dies erfordert jedoch zusätzliche
Befehle, um die Inhalte des Benennungsregisters zu sichern
und wieder herzustellen. Zusätzlich überlagert sich dieses
Verfahren mit dem Vorabruf von Informationen aus dem Cache-
Speicher, wie oben beschrieben.
Bei dem bevorzugten Ausführungsbeispiel der vorliegenden Er
findung ist das Ziel des Sicherns des Inhalts des Benen
nungsregisters ein Nebeneffekt des EBL-Befehls. Zwei Werte
werden in dem nächsten aktiven Feld 305 gespeichert. Der
erste bestimmt den Inhalt des Benennungsregisters, wenn die
Verzweigung und die Verbindung nicht durchgeführt wurden,
und der zweite bestimmt das Register, in welches die Rück
kehradresse durch den EBL-Befehl abgelegt wird, wenn die
Verzweigung durchgeführt wird. Wenn die Verzweigung und die
Verbindung nicht durchgeführt werden, wird der Inhalt des
Benennungsregisters wie vorher der Wert sein, der durch den
ersten Wert in dem Befehlsadreßregister, auf das durch den
EBL-Befehl Bezug genommen wird, bestimmt ist. Wenn die Ver
zweigung und die Verbindung ausgeführt werden, wird die
Rückkehradresse in dem Befehladreßregister gespeichert, das
durch den zweiten Wert in dem nächsten aktiven Feld des Be
fehlsadreßregisters, das durch den EBL-Befehl verwendet
wird, bestimmt wird. Zusätzlich wird das nächste aktive Feld
des Befehlsadreßregisters, in dem die Rückkehradresse ge
speichert ist, auf den Wert des ersten Feldes, das oben be
schrieben ist, eingestellt, und die Inhalte des Benennungs
registers werden eingestellt, um auf das Befehlsadreßre
gister, das die Rückkehradresse enthält, zu zeigen.
Es sei z. B. angenommen, daß ein EBL-Befehl unter Verwendung
des IAR2 (d. h. des Befehlsadreßregisters 2) vorbereitet
wird. D.h., das Benennungsregister zeigt auf IAR2, wenn der
EBL-Befehl ausgeführt wird. Es sei angenommen, daß das IAR4
als nächstes benannt wird, wenn die Verzweigung nicht durch
geführt wird, und daß das IAR8 als das Befehlsadreßregister
bestimmt ist, in welchem die Rückkehradresse der Verzweigung
und der Verbindung zu der Zeit abgelegt wird, wenn die Ver
zweigung durchgeführt wird. Wenn der EBL-Befehl auf das IAR2
zugreift, werden daher Zeiger auf das IAR4 und das IAR8 in
das nächste aktive Feld des IAR2 geladen.
Wenn die Verzweigung und die Verbindung nicht durchgeführt
werden, zeigt das Benennungsregister nach dem EBL-Befehl auf
das IAR4. Wenn der Verzweigungs- und Verbindungs-Befehl
durchgeführt werden, dann ändert der EBL-Befehl nicht nur
den Befehlsfluß zu der Zieladresse, die in dem IAR2 gespei
chert ist, sondern speichert ebenfalls die Rückkehradresse
in dem Zieladreßfeld des IAR8 und benennt IAR8 als nächstes
aktives Befehlsadreßregister. Zusätzlich wird das Benenne
nächstes-Feld (Feld 305) des IAR8 eingestellt, um auf das
IAR4 zu zeigen. D.h., daß das IAR8 nach dem EBL-Befehl das
aktive Befehlsadreßregister sein wird, und daß das IAR8 be
reits derart initialisiert ist, daß eine Ausführung des Ver
zweigungsbefehls unter Verwendung des IAR8 dazu führt, daß
das IAR4 nominiert ist, nachdem die Ausführung des Verzwei
gungsbefehls ausgeführt ist. Die Benennungskette wird nun
derart initialisiert, daß die aufgerufene Prozedur lediglich
einen Führe-Verzweigung-Aus-Befehl bestimmen muß, um zu der
aufgerufenen Prozedur mit dem benannten Zeiger, der auf IAR4
zeigt, zurückzukehren. Dies gestattet es, daß die aufgeruf
ene Prozedur bezüglich der aufruf enden Prozedur zumindest
bezüglich der Benennungskette transparent ist.
Dieser Mechanismus kann ebenfalls bei Ausführungsbeispielen
verwendet werden, bei denen eine Verzweigung unabhängige Be
fehlsadreßregister bestimmt, die als nächste auf dem durch
geführten bzw. nicht-durchgeführten Weg benannt werden. In
diesem Fall wird ein Zeiger auf ein benanntes nicht-durchge
führtes Befehlsadreßregister das nächste aktive Register,
das in dem Befehlsadreßregister, in dem die Rückkehradresse
gespeichert ist, bestimmt wird.
Nicht programmierte Sprünge (traps) und Unterbrechungen sind
zu EBL-Befehlen dahingehend analog, daß beim Auftreten einer
Bedingung der Computer eine Verzweigung an einen neuen Ort
durchführt, um eine Ausnahmeabhandlungsroutine auszuführen,
und bei der Rückkehr aus dieser Routine muß der Computer
seinen Betrieb wieder aufnehmen, als ob der nicht program
mierte Sprung oder die Unterbrechung nicht aufgetreten
wären. Es ist offensichtlich, daß die oben beschriebenen
Ausführungsbeispiele erweitert werden können, um einen
impliziten Führe-nicht-programmierten-Sprung-aus- oder
Unterbrechungs-Befehl einzuschließen, der sich auf eines der
Register bezieht, die zugeordnet sind, um die Zieladresse
für die nicht-programmierte-Sprung- oder Unterbrechungs-
Routine zu enthalten. Dieses Register kann mit einem geeig
neten Bereite-Verzweigung-Vor-Befehl geladen werden. Die
Hardware führt dann beim Erfassen der nicht-programmierten-
Sprung- oder Unterbrechungs-Bedingung das Gegenstück zu
einem Verzweigungs- und Verbindungs-Befehl aus. Zusätzlich
speichert die Hardware die derzeitigen Benennungsregister
inhalte, um sie als die benannten Register bei der Rückkehr
von dem nicht programmierten Sprung oder der Unterbrechung
zu verwenden.
Während die oben beschriebenen Ausführungsbeispiele der vor
liegenden Erfindung in den Worten eines CMP-Befehls be
schrieben wurden, bei dem zwei Argumente verglichen werden,
ist es für Fachleute offensichtlich, daß jegliche Bedingung,
die durch den Prozessor festgestellt wird, verwendet werden
kann. Es ist ebenfalls offensichtlich, daß ein Befehl mit
einer Mehrzahl von CMP-Befehlen ausgeführt werden kann, bei
dem jeder CMP eine unterschiedliche Bedingung verwendet.
Bei den oben beschriebenen Ausführungsbeispielen der vor
liegenden Erfindung wurde die Registerdatei verwendet, um
die Zieladressen der Sprung-Befehle zu speichern. Es ist
jedoch für Fachleute offensichtlich, daß die Registerdatei
verwendet werden kann, um Zeiger zu speichern, die die Orte
bestimmen, an denen diese Informationen gespeichert sind.
Aus den oben beschriebenen Ausführungsbeispielen der vor
liegenden Erfindung ist es offensichtlich, daß die Erfindung
bedeutende Vorteile gegenüber bekannten Lösungen für die
Ausführung von Sprung-Befehlen schafft. Die vorliegende Er
findung erreicht diese Vorteile durch Teilen der herkömm
lichen Sprung-Befehle in die drei Komponenten-Befehle, die
oben beschrieben wurden.
Bei den einfachsten Schemata nach dem Stand der Technik,
werden die Operationen der Adreßberechnung, der Bedingungs
feststellung und der Sprungausführung in einem einzelnen
Befehl gebündelt. Obwohl diese Schemata vorteilhafterweise
eine Sprungvoraussagung verwenden, um die Frequenz zu redu
zieren, mit der die Pipeline geräumt werden muß, erfordern
sie immer noch, daß die Pipeline einen bedeutenden Bruchteil
der Zeit geräumt werden muß. Zusätzlich schaffen diese
Schemata nicht die Vorteile, daß zugelassen wird, den Be
rechnungszeitablauf und die Reihenfolge neu anzuordnen, um
die Wartezeiten, die den meisten Befehlen eigen sind, besser
zu nutzen. Ferner schaffen diese Schemata keine Einrichtung
zum Vorabruf des Inhalts der Zieladresse im Fall, daß die
Voraussage inkorrekt war. Diese Nachteile resultieren aus
der Bündelung der Komponentenbefehle und aus dem Warten bis
zur Sprungausführung, um die korrekte Zieladresse zu bestim
men.
Eine Lösung aus dem Stand der Technik für das Problem der
fehlerhaften Voraussage schließt die Verwendung von Sprung-
Befehlen ein, die für eine feste Anzahl von Maschinenzyklen
nicht ausgeführt werden. Diese Architektur vermeidet die
Probleme der fehlerhaften Voraussage, nachdem die korrekte
Verzweigung bekannt ist, bevor der Befehl in die Pipeline
eintritt. Diese Lösung ist jedoch weit von einem Optimum
entfernt, nachdem die Komponentenbefehle immer noch zusam
mengebündelt sind. Zuerst muß der Kode fähig sein, die feste
Anzahl von Maschinenzyklen vorteilhafterweise zu verwenden.
Um dies zu tun, müssen Befehle bewegt werden, um diese War
tezeit auszufüllen. Es ist nicht immer möglich, Befehle zu
bewegen, um die Wartezeit genau auszufüllen. Zusätzlich ist
die Wartezeit Hardware-abhängig; ein Kode, der für eine
Hardware-Plattform optimiert ist, wird daher nicht auch auf
einer weiteren Plattform laufen. Solange die Wartezeit nicht
recht lang ist, erhält man abschließend nicht die vollstän
digen Vorteile der Vorabrufung der Zieladressen in dem
Cache-Speicher, nachdem es eine unzureichende Zeit zwischen
dem Feststellen der Zieladresse und der Ausführung des
Sprungbefehls gibt.
Eine zweite teilweise bekannte Lösung der Probleme war, die
Zieladreßberechnung von der Bedingungsberechnung und der
Sprungausführung zu trennen. Während diese Lösung im Prinzip
zulassen würde, eine Vorabrufstrategie für die vorausgesagte
Zieladresse auszuführen, wären die Probleme, die einer feh
lerhaften Voraussage eigen sind, immer noch vorhanden. D.h.,
daß die eigentliche Zieladresse immer noch nicht bestimmt
wird, bis der Sprungbefehl ausgeführt ist. Daher wird es
nötig sein, die Pipeline bei einem bedeutenden Bruchteil der
Sprungbefehlsausführungen zu räumen und es wird notwendig
sein, den Cache-Speicher mit den Inhalten der korrekten
Zieladressen zu laden.
Claims (10)
1. Datenverarbeitungssystem (100,200), gekennzeichnet durch
folgende Merkmale:
einen Befehlsprozessor (12, 106, 301) zum nacheinander folgenden Ausführen der Befehle eines Programms, wobei die Befehle einen Führe-Verzweigung-Aus-Befehl ein schließen, der den Befehlsprozessor (12, 106, 301) ver anlaßt, den Befehl, der durch eine Zieladresse (16, 205, 306) bestimmt ist, als den nächsten Befehl in dem Pro gramm anstelle des nächsten Befehls in der Programmfolge auszuführen; und
eine Registerdatei (10, 101, 201, 300), die wirksam mit dem Befehlsprozessor (12, 106, 301) verbunden ist und die ein oder mehrere Register (14, 104, 302) umfaßt, wo bei jedes der Register eine Einrichtung zum Speichern der Zieladresse (16, 205, 306) eines Verzweigungsbefehls und eine Einrichtung zum Speichern einer Flagge (18, 104, 206, 307) mit einem ersten und einem zweiten Zu stand einschließt, wobei der erste Zustand anzeigt, daß der Verzweigungsbefehl den Befehlsprozessor (12, 106, 301) veranlassen sollte, den Befehl, der durch die Ziel adresse (16, 205, 306) bestimmt ist, auszuführen, wenn ein Führe-Verzweigung-Aus-Befehl, der sich auf das Regi ster (14, 104, 302) bezieht, durch den Befehlsprozessor (12, 106, 301) ausgeführt wird, und wobei der zweite Zustand anzeigt, daß der Befehlsprozessor (12, 106, 301) den nächsten Befehl in der Reihenfolge ausführen sollte, wenn ein Führe-Verzweigung-Aus-Befehl, der sich auf das Register (14, 104, 302) bezieht, durch den Befehlspro zessor (12, 106, 301) ausgeführt wird.
einen Befehlsprozessor (12, 106, 301) zum nacheinander folgenden Ausführen der Befehle eines Programms, wobei die Befehle einen Führe-Verzweigung-Aus-Befehl ein schließen, der den Befehlsprozessor (12, 106, 301) ver anlaßt, den Befehl, der durch eine Zieladresse (16, 205, 306) bestimmt ist, als den nächsten Befehl in dem Pro gramm anstelle des nächsten Befehls in der Programmfolge auszuführen; und
eine Registerdatei (10, 101, 201, 300), die wirksam mit dem Befehlsprozessor (12, 106, 301) verbunden ist und die ein oder mehrere Register (14, 104, 302) umfaßt, wo bei jedes der Register eine Einrichtung zum Speichern der Zieladresse (16, 205, 306) eines Verzweigungsbefehls und eine Einrichtung zum Speichern einer Flagge (18, 104, 206, 307) mit einem ersten und einem zweiten Zu stand einschließt, wobei der erste Zustand anzeigt, daß der Verzweigungsbefehl den Befehlsprozessor (12, 106, 301) veranlassen sollte, den Befehl, der durch die Ziel adresse (16, 205, 306) bestimmt ist, auszuführen, wenn ein Führe-Verzweigung-Aus-Befehl, der sich auf das Regi ster (14, 104, 302) bezieht, durch den Befehlsprozessor (12, 106, 301) ausgeführt wird, und wobei der zweite Zustand anzeigt, daß der Befehlsprozessor (12, 106, 301) den nächsten Befehl in der Reihenfolge ausführen sollte, wenn ein Führe-Verzweigung-Aus-Befehl, der sich auf das Register (14, 104, 302) bezieht, durch den Befehlspro zessor (12, 106, 301) ausgeführt wird.
2. Datenverarbeitungssystem (100, 200) nach Anspruch 1,
dadurch gekennzeichnet,
daß die Registerdatei (10, 101, 201, 300) mindestens
zwei Register (14, 104, 302) umfaßt.
3. Datenverarbeitungssystem (100, 200) nach Anspruch 1 oder
2, dadurch gekennzeichnet,
daß die Befehle ferner einen Bereite-Verzweigung-Vor- Befehl umfassen, der eine Adresse als Teil dessen ein schließt, und
daß der Befehlsprozessor (12, 106, 301) veranlaßt, daß die Adresse in der Zieladreßeinrichtung (16, 205, 306) eines der bestimmten Register (14, 104, 302) gespeichert wird.
daß die Befehle ferner einen Bereite-Verzweigung-Vor- Befehl umfassen, der eine Adresse als Teil dessen ein schließt, und
daß der Befehlsprozessor (12, 106, 301) veranlaßt, daß die Adresse in der Zieladreßeinrichtung (16, 205, 306) eines der bestimmten Register (14, 104, 302) gespeichert wird.
4. Datenverarbeitungssystem (100, 200) nach Anspruch 3,
dadurch gekennzeichnet,
daß der Bereite-Verzweigung-Vor-Befehl ferner einen Vorgabewert umfaßt, und
daß der Befehlsprozessor (12, 206, 301) veranlaßt, daß der Vorgabeflaggenwert in der Flaggeneinrichtung (18, 104, 206, 307) eines der bestimmten Register (14, 104, 302) gespeichert wird.
dadurch gekennzeichnet,
daß der Bereite-Verzweigung-Vor-Befehl ferner einen Vorgabewert umfaßt, und
daß der Befehlsprozessor (12, 206, 301) veranlaßt, daß der Vorgabeflaggenwert in der Flaggeneinrichtung (18, 104, 206, 307) eines der bestimmten Register (14, 104, 302) gespeichert wird.
5. Datenverarbeitungssystem (100, 200) nach einem der An
sprüche 1 bis 4, dadurch gekennzeichnet,
daß der Befehl ferner einen Vergleichsbefehl umfaßt, wo
bei der Vergleichsbefehl den Befehlsprozessor (12, 106,
301) veranlaßt, festzustellen, ob ein Zustand, der durch
den Befehl bestimmt ist, wahr ist, und um die Flagge in
einem der Register (14, 104, 302) auf einen der Zustände
zu setzen.
6. Datenverarbeitungssystem (100, 200) nach einem der An
sprüche 1 bis 5, ferner gekennzeichnet durch:
einen Cache-Speicher (210) zum Speichern von Kopien von Informationen, die normalerweise in einem langsameren Hauptspeicher (214) gespeichert sind, wobei der Cache- Speicher (210) wirksam mit dem Befehlsprozessor (12, 106, 301) verbunden ist; und
eine Cache-Speicherladeeinrichtung (208), die wirksam mit der Registerdatei (10, 101, 201, 300) und dem Cache-Speicher (210) verbunden ist, um den Cache-Spei cher (210) zu veranlassen, eine Kopie des Befehls, der durch die Zieladresse (16, 205, 306) in einem der Re gister (14, 104, 302) bestimmt ist, zu speichern, wenn die Flaggeneinrichtung (18, 104, 204, 307) in einem der Register (14, 104, 302) anzeigt, daß die Flagge in einem vorbestimmten Zustand ist.
einen Cache-Speicher (210) zum Speichern von Kopien von Informationen, die normalerweise in einem langsameren Hauptspeicher (214) gespeichert sind, wobei der Cache- Speicher (210) wirksam mit dem Befehlsprozessor (12, 106, 301) verbunden ist; und
eine Cache-Speicherladeeinrichtung (208), die wirksam mit der Registerdatei (10, 101, 201, 300) und dem Cache-Speicher (210) verbunden ist, um den Cache-Spei cher (210) zu veranlassen, eine Kopie des Befehls, der durch die Zieladresse (16, 205, 306) in einem der Re gister (14, 104, 302) bestimmt ist, zu speichern, wenn die Flaggeneinrichtung (18, 104, 204, 307) in einem der Register (14, 104, 302) anzeigt, daß die Flagge in einem vorbestimmten Zustand ist.
7. Datenverarbeitungssystem nach Anspruch 6, dadurch ge
kennzeichnet,
daß der Cache-Speicher (210) eine Mehrzahl von Speicher
ebenen (212, 213) einschließt, wobei die Flaggenein
richtung (18, 104, 206, 307) mehr als zwei Zustände hat,
und wobei der Flaggenzustand die Speicherebene bestimmt,
auf der die Kopie des Befehls, der durch die Zieladresse
(16, 205, 306) bestimmt ist, gespeichert ist.
8. Datenverarbeitungssystem (100, 200) nach einem der An
sprüche 1 bis 7, dadurch gekennzeichnet,
daß die Registerdatei (10, 101, 201, 300) ferner ein
Zeigerregister (309) umfaßt, das bestimmt, auf welches
der Register (14, 104, 302) der Registerdatei (10, 101,
201, 300) durch den nächsten Führe-Verzweigung-Aus-Be
fehl Bezug genommen wird.
9. Datenverarbeitungssystem (100, 200) nach Anspruch 8, da
durch gekennzeichnet,
daß jedes der Register (302) in der Registerdatei (100, 101, 201, 300) ferner eine Einrichtung (305) zum Spei chern eines Wertes umfaßt, der in dem Zeigerregister (309) gespeichert ist, und
daß der Führe-Verzweigung-Aus-Befehl veranlaßt, daß der gespeicherte Wert in das Zeigerregister (309) geladen wird, wenn der Führe-Verzweigung-Aus-Befehl, der sich auf das Register bezieht, durch den Befehlsprozessor (12, 106, 301) ausgeführt wird.
daß jedes der Register (302) in der Registerdatei (100, 101, 201, 300) ferner eine Einrichtung (305) zum Spei chern eines Wertes umfaßt, der in dem Zeigerregister (309) gespeichert ist, und
daß der Führe-Verzweigung-Aus-Befehl veranlaßt, daß der gespeicherte Wert in das Zeigerregister (309) geladen wird, wenn der Führe-Verzweigung-Aus-Befehl, der sich auf das Register bezieht, durch den Befehlsprozessor (12, 106, 301) ausgeführt wird.
10. Datenverarbeitungssystem (100, 200) nach Anspruch 8 oder
9, dadurch gekennzeichnet,
daß die Befehle ferner einen Führe-Verzweigung- und
Führe-Verbindung-Aus-Befehl umfassen, wobei die Register
(302) jeweils eine Einrichtung zum Speichern eines
ersten und eines zweiten Wertes umfassen, und wobei die
Ausführung des Verzweigung-und-Verbindung-Befehls veran
laßt, daß eine Rückkehradresse in ein Register geladen
wird, daß durch den zweiten Wert bestimmt ist, wobei der
erste Wert in dem bestimmten Register gespeichert wird
und das Zeigerregister (309) mit dem zweiten Wert gela
den wird.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US5885893A | 1993-05-06 | 1993-05-06 |
Publications (1)
Publication Number | Publication Date |
---|---|
DE4345028A1 true DE4345028A1 (de) | 1994-11-10 |
Family
ID=22019331
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE4345028A Withdrawn DE4345028A1 (de) | 1993-05-06 | 1993-12-30 | Vorrichtung zur Reduzierung von Verzögerungen aufgrund von Verzweigungen |
Country Status (4)
Country | Link |
---|---|
US (1) | US5615386A (de) |
JP (1) | JPH06332697A (de) |
DE (1) | DE4345028A1 (de) |
GB (1) | GB2277819B (de) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9412487D0 (en) * | 1994-06-22 | 1994-08-10 | Inmos Ltd | A computer system for executing branch instructions |
US5928357A (en) * | 1994-09-15 | 1999-07-27 | Intel Corporation | Circuitry and method for performing branching without pipeline delay |
US5790845A (en) * | 1995-02-24 | 1998-08-04 | Hitachi, Ltd. | System with reservation instruction execution to store branch target address for use upon reaching the branch point |
US6185674B1 (en) | 1995-04-05 | 2001-02-06 | International Business Machines Corporation | Method and apparatus for reconstructing the address of the next instruction to be completed in a pipelined processor |
US5881276A (en) * | 1996-07-30 | 1999-03-09 | Intel Corporation | Manipulation of protected pages to reduce conditional statements |
JP3745039B2 (ja) * | 1996-08-01 | 2006-02-15 | 株式会社ルネサステクノロジ | 遅延命令を有するマイクロプロセッサ |
JPH1091441A (ja) * | 1996-09-13 | 1998-04-10 | Sanyo Electric Co Ltd | プログラム実行方法およびその方法を利用した装置 |
US5948095A (en) * | 1997-12-31 | 1999-09-07 | Intel Corporation | Method and apparatus for prefetching data in a computer system |
US5881260A (en) * | 1998-02-09 | 1999-03-09 | Hewlett-Packard Company | Method and apparatus for sequencing and decoding variable length instructions with an instruction boundary marker within each instruction |
US6105123A (en) * | 1998-03-10 | 2000-08-15 | Hewlett-Packard Company | High speed register file organization for a pipelined computer architecture |
US6253306B1 (en) | 1998-07-29 | 2001-06-26 | Advanced Micro Devices, Inc. | Prefetch instruction mechanism for processor |
TW455814B (en) * | 1998-08-06 | 2001-09-21 | Intel Corp | Software directed target address cache and target address register |
US6470444B1 (en) * | 1999-06-16 | 2002-10-22 | Intel Corporation | Method and apparatus for dividing a store operation into pre-fetch and store micro-operations |
US6523110B1 (en) * | 1999-07-23 | 2003-02-18 | International Business Machines Corporation | Decoupled fetch-execute engine with static branch prediction support |
US6772325B1 (en) * | 1999-10-01 | 2004-08-03 | Hitachi, Ltd. | Processor architecture and operation for exploiting improved branch control instruction |
US6446197B1 (en) * | 1999-10-01 | 2002-09-03 | Hitachi, Ltd. | Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions |
US7085915B1 (en) * | 2000-02-29 | 2006-08-01 | International Business Machines Corporation | Programmable prefetching of instructions for a processor executing a non-procedural program |
US7861071B2 (en) * | 2001-06-11 | 2010-12-28 | Broadcom Corporation | Conditional branch instruction capable of testing a plurality of indicators in a predicate register |
US7127593B2 (en) * | 2001-06-11 | 2006-10-24 | Broadcom Corporation | Conditional execution with multiple destination stores |
US6986025B2 (en) * | 2001-06-11 | 2006-01-10 | Broadcom Corporation | Conditional execution per lane |
US7010675B2 (en) * | 2001-07-27 | 2006-03-07 | Stmicroelectronics, Inc. | Fetch branch architecture for reducing branch penalty without branch prediction |
US6772179B2 (en) * | 2001-12-28 | 2004-08-03 | Lucent Technologies Inc. | System and method for improving index performance through prefetching |
US20060015866A1 (en) * | 2004-07-16 | 2006-01-19 | Ang Boon S | System installer for a reconfigurable data center |
US10496647B2 (en) * | 2017-04-18 | 2019-12-03 | Microsoft Technology Licensing, Llc | Delay detection in query processing |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3577189A (en) * | 1969-01-15 | 1971-05-04 | Ibm | Apparatus and method in a digital computer for allowing improved program branching with branch anticipation reduction of the number of branches, and reduction of branch delays |
US4430706A (en) * | 1980-10-27 | 1984-02-07 | Burroughs Corporation | Branch prediction apparatus and method for a data processing system |
US4943908A (en) * | 1987-12-02 | 1990-07-24 | International Business Machines Corporation | Multiple branch analyzer for prefetching cache lines |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4334268A (en) * | 1979-05-01 | 1982-06-08 | Motorola, Inc. | Microcomputer with branch on bit set/clear instructions |
US4435758A (en) * | 1980-03-10 | 1984-03-06 | International Business Machines Corporation | Method for conditional branch execution in SIMD vector processors |
JPS6051948A (ja) * | 1983-08-31 | 1985-03-23 | Hitachi Ltd | 情報処理装置 |
US4764861A (en) * | 1984-02-08 | 1988-08-16 | Nec Corporation | Instruction fpefetching device with prediction of a branch destination for each branch count instruction |
EP0199009A3 (de) * | 1985-02-28 | 1989-05-31 | Kabushiki Kaisha Toshiba | Ausführungsbahnmesssystem für ein Programm |
US4755935A (en) * | 1986-01-27 | 1988-07-05 | Schlumberger Technology Corporation | Prefetch memory system having next-instruction buffer which stores target tracks of jumps prior to CPU access of instruction |
US5197136A (en) * | 1987-11-12 | 1993-03-23 | Matsushita Electric Industrial Co., Ltd. | Processing system for branch instruction |
US4933847A (en) * | 1987-11-17 | 1990-06-12 | International Business Machines Corporation | Microcode branch based upon operand length and alignment |
JPH081602B2 (ja) * | 1988-02-23 | 1996-01-10 | 三菱電機株式会社 | データ処理装置 |
US5050068A (en) * | 1988-10-03 | 1991-09-17 | Duke University | Method and apparatus for using extracted program flow information to prepare for execution multiple instruction streams |
US5134701A (en) * | 1989-02-10 | 1992-07-28 | Hewlett-Packard Co. | Test apparatus performing runtime replacement of program instructions with breakpoint instructions for processor having multiple instruction fetch capabilities |
US5265213A (en) * | 1990-12-10 | 1993-11-23 | Intel Corporation | Pipeline system for executing predicted branch target instruction in a cycle concurrently with the execution of branch instruction |
-
1993
- 1993-12-30 DE DE4345028A patent/DE4345028A1/de not_active Withdrawn
-
1994
- 1994-05-03 GB GB9408738A patent/GB2277819B/en not_active Expired - Fee Related
- 1994-05-06 JP JP6117643A patent/JPH06332697A/ja active Pending
-
1996
- 1996-01-18 US US08/588,151 patent/US5615386A/en not_active Expired - Lifetime
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3577189A (en) * | 1969-01-15 | 1971-05-04 | Ibm | Apparatus and method in a digital computer for allowing improved program branching with branch anticipation reduction of the number of branches, and reduction of branch delays |
US4430706A (en) * | 1980-10-27 | 1984-02-07 | Burroughs Corporation | Branch prediction apparatus and method for a data processing system |
US4943908A (en) * | 1987-12-02 | 1990-07-24 | International Business Machines Corporation | Multiple branch analyzer for prefetching cache lines |
Non-Patent Citations (1)
Title |
---|
US - Firmenschrift der Advanced Micro Devices Inc. "Build a Microcomputer", Chapter II, Microprogrammed Design, 1978, S. 1-26 * |
Also Published As
Publication number | Publication date |
---|---|
GB2277819B (en) | 1997-07-02 |
JPH06332697A (ja) | 1994-12-02 |
GB2277819A (en) | 1994-11-09 |
GB9408738D0 (en) | 1994-06-22 |
US5615386A (en) | 1997-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE4345028A1 (de) | Vorrichtung zur Reduzierung von Verzögerungen aufgrund von Verzweigungen | |
DE19527031C2 (de) | Verzweigungsprozessor für ein Datenverarbeitungssystem und Verfahren zum Betreiben eines Datenverarbeitungssystems | |
DE4206062C2 (de) | Pipelineverarbeitung von Instruktionen | |
DE69534148T2 (de) | Rechnersystem zur Ausführung von Verzweigungsbefehlen | |
DE102004013676B4 (de) | Schaltung in einem Prozessor zur Steuerung einer iterativen Ausführung einer Gruppe von Programmanweisungen | |
DE2855106C2 (de) | Einrichtung zur Durchführung von bedingten Verzweigungen | |
DE69816044T2 (de) | Zeitstrafen-basierende cache-speicherungs- und ersetzungs-techniken | |
DE69534113T2 (de) | Kompression der Befehlswörter eines Rechners | |
DE4222776C2 (de) | Parallelverarbeitungseinheit und Verfahren zum Ausführen von Befehlen | |
DE4237417C2 (de) | Datenverarbeitungssystem | |
DE69233313T2 (de) | Hochleistungsarchitektur für RISC-Mikroprozessor | |
DE3116100C2 (de) | Datenverarbeitungseinheit | |
DE69929936T2 (de) | Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem | |
DE69734403T2 (de) | Verfahren im bezug auf die behandlung von konditionellen sprüngen in einer multietagen-pipeline-struktur | |
DE69820027T2 (de) | Vorrichtung zur ausführung virtueller maschinenbefehle | |
DE19855806A1 (de) | Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen | |
DE60009151T2 (de) | Vorhersage von datenbeförderung von speicher- zum ladebefehl mit untrainierung | |
DE69931288T2 (de) | Ermittlung der Latenzzeit eines Rechnerspeichers | |
DE60131864T2 (de) | Speichern von stapeloperanden in registern | |
DE4211245B4 (de) | Prozessorsystem in Parallelverarbeitungsbauart und Verfahren zu dessen Steuerung | |
DE3638572C2 (de) | ||
DE69634315T2 (de) | Verfahren und Gerät zur Verwendung eines Ladebefehls der keinen Fehler verursacht | |
DE69727177T2 (de) | Emulation von asynchronen Signalen mit Verzweigungsmechanismus | |
DE19526008C2 (de) | Befehlsvorholeinheit für einen Computer | |
DE19824289C2 (de) | Pipelineverarbeitungsmaschine |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8130 | Withdrawal |