DE19527031C2 - Verzweigungsprozessor für ein Datenverarbeitungssystem und Verfahren zum Betreiben eines Datenverarbeitungssystems - Google Patents
Verzweigungsprozessor für ein Datenverarbeitungssystem und Verfahren zum Betreiben eines DatenverarbeitungssystemsInfo
- Publication number
- DE19527031C2 DE19527031C2 DE19527031A DE19527031A DE19527031C2 DE 19527031 C2 DE19527031 C2 DE 19527031C2 DE 19527031 A DE19527031 A DE 19527031A DE 19527031 A DE19527031 A DE 19527031A DE 19527031 C2 DE19527031 C2 DE 19527031C2
- Authority
- DE
- Germany
- Prior art keywords
- branch
- instruction
- instructions
- destination address
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000012545 processing Methods 0.000 title claims description 28
- 238000000034 method Methods 0.000 title claims description 14
- 230000000977 initiatory effect Effects 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 claims 1
- 230000001934 delay Effects 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000006872 improvement Effects 0.000 description 3
- 229940036310 program Drugs 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005755 formation reaction Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000002699 waste material Substances 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30163—Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
-
- 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 or 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
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)
- Memory System Of A Hierarchy Structure (AREA)
- Executing Machine-Instructions (AREA)
Description
Die vorliegende Erfindung bezieht sich auf einen Ver
zweigungsprozessor für ein Datenverarbeitungssystem zum
Ausführen eines Programms und auf ein Verfahren zum
Betreiben eines Datenverarbeitungssystems, um Verzwei
gungsoperationen zu verarbeiten, die Bedingungen aufweisen
und einer geordneten Sequenz von Befehlen zugeordnet sind.
Trotz der zahlreichen Verbesserungen bei der Betriebsge
schwindigkeit von Computern besteht weiterhin ein Bedarf
nach Computern, die mit einem höheren wirksamen Durchsatz
arbeiten. Eine verbesserte Computergeschwindigkeit wurde
durch ein Erhöhen der Geschwindigkeit, mit der die Compu
ter-Hardware arbeitet, und durch Einführen einer parallelen
Verarbeitung auf die eine oder andere Art erreicht. Eine
Klasse von Verbesserungen, die durch eine Parallelverarbei
tung erreicht wird, reduziert die Verzögerungen aufgrund der
Latenzzeit, die zu den Computerbefehlen gehört. Zu Zwecken
dieser Erörterung wird die Latenzzeit als die Verzögerung
zwischen der Einleitung eines Befehls und der Zeit, zu der
der Befehl tatsächlich ausgeführt wird, definiert.
Es wird ein Befehl betrachtet, der auf Daten verweist, die
in einem spezifizierten Register gespeichert sind. Dieser
Befehl kann fünf Maschinenzyklen zur Ausführung benötigen.
In dem ersten Zyklus wird der Befehl vom Speicher abgerufen.
In dem zweiten Zyklus wird der Befehl decodiert. In dem
dritten Zyklus wird der Inhalt des Registers abgerufen. In
dem vierten Zyklus wird der Befehl tatsächlich ausgeführt
und in dem fünften Zyklus werden die Daten zurück an die
geeignete Position geschrieben. Wenn einer warten müßte, bis
die Befehlsausführung vollendet ist, würde alle fünf
Maschinenzyklen lediglich ein Befehl ausgeführt werden.
Die Wirkungen der Latenzzeit werden bei Pipeline-artig ar
beitenden Prozessoren durch Einleiten der Verarbeitung eines
zweiten Befehls reduziert, bevor die tatsächliche Ausführung
des ersten Befehls vollendet ist. Bei dem obigen Beispiel
würden sich zu jeder beliebigen gegebenen Zeit fünf Befehle
in verschiedenen Verarbeitungsstufen befinden. Der Prozessor
würde fünf Pipeline-Stufen aufweisen, die parallel arbeiten,
wobei jede Stufe eine von fünf Aufgaben ausführt, die zum
Ausführen eines Befehls gehören. Während die Daten für den
ältesten Befehl in einen Speicher oder ein Register zu
rückgeschrieben werden, würde der zweitälteste Befehl durch
die Ausführungs-Hardware ausgeführt werden. Der für den
nächsten auszuführenden Befehl benötigte Registerinhalt
würde gleichzeitig durch die Register-Hardware wiedergewon
nen werden, usw..
Im Prinzip können Pipeline-artig arbeitende Prozessoren die
Ausführung eines Befehls pro Maschinenzyklus vollenden, wenn
eine bekannte Befehlssequenz ausgeführt wird. Ungünstiger
weise weisen Computerprogramme Verzweigungsbefehle auf, wel
che den Befehlsfluß unterbrechen. Es wird die folgende Be
fehlssequenz betrachtet:
wenn x = 0, dann gehe zu Neustart
y = z
gehe zu Irgendwohin
Neustart: y = k.
wenn x = 0, dann gehe zu Neustart
y = z
gehe zu Irgendwohin
Neustart: y = k.
Der erste Befehl wird in einen Verzweigungsbefehl übersetzt,
der auf dem Inhalt von x basiert. Zu dem Zeitpunkt, zu dem
dieser Befehl die Ausführungseinheit in der Pipeline er
reicht, werden mehrere zusätzliche Befehle in die Pipeline
eingetreten sein. Der Computer weist jedoch kein Verfahren
auf, um zu bestimmen, ob der Befehl, der der Verzweigung
folgt, "y = z" oder "y = k" sein sollte, bis er die Verzwei
gung tatsächlich ausführt. Somit ist es unmöglich, zu be
stimmen, welche Befehle nach dem Verzweigungsbefehl in die
Pipeline geladen werden sollen. Bekannte Systeme haben
versucht, Verzweigungsverzögerungen durch Vorhersagen des
Resultates des Verzweigungsbefehls und durch darauffolgendes
Laden der Befehle, die dem vorhergesagten Resultat entspre
chen, zu reduzieren. Es existiert jedoch kein Vorhersage
schema, welches 100% genau ist. Daher treten noch Verzöge
rungen auf.
Wenn die falsche Befehlssequenz geladen ist, muß der Compu
ter für eine Zeit, die ausreichend ist, um die Pipeline zu
leeren und wieder aufzufüllen, angehalten werden. Wenn daher
die Befehle, die "y = z" entsprechen, nach dem ersten Ver
zweigungsbefehl geladen worden wären, und die Verzweigung
durchgeführt wird, dann muß die Pipeline geräumt werden und
die Befehle, die "y = k" entsprechen, zur Ausführung geladen
werden. Dies verzögert die Programmausführung um eine Zeit,
welche von der Anzahl von Stufen in der Pipeline abhängt.
Verzweigungsbefehle bewirken ferner speicherbezogene Latenz
verzögerungen. Die meisten modernen Comuputersysteme ver
wenden Cache-Untersysteme, um die wirksame Zugriffszeit auf
den Hauptspeicher des Computers zu verbessern. Der Cache
besteht aus einem schnellen Assoziativspeicher, welcher die
zuletzt verwendeten Befehle und Daten speichert. Wenn der
Prozessor den Inhalt einer bestimmten Speicherposition
anfordert, fängt der Cacheprozessor die Anforderung ab und
prüft den Cachespeicher, um zu bestimmen, ob sich die an
geforderten Informationen in dem Cache befinden. Wenn sich
die angeforderten Informationen in dem Cache befinden, wer
den sie dem Prozessor mit minimaler Verzögerung zurückge
geben. Wenn sich die angeforderten Informationen jedoch in
dem Hauptspeicher befinden, wird der Prozessor angehalten,
während der Cache die Informationen wiedergewinnt. Da Haupt
speichergeschwindigkeiten wesentlich niedriger als die
Cachegeschwindigkeit sind, führen derartige Cache-"Fehl
schläge" wesentliche Verzögerungen ein.
Verzweigungsbefehle haben oft Cachefehlschläge zur Folge.
Eine Verzweigung bewirkt oft, daß der Computer den Betrieb
an einer Speicherposition fortsetzt, die von der des Ver
zweigungsbefehls weit entfernt ist. Cachespeicher speichern
die zuletzt verwendeten Informationen und Informationen, die
sich in dem Hauptspeicher in der Nähe dieser Informationen
befinden. Wenn die Verzweigung daher an einer entfernten Po
sition ist und in letzter Zeit nicht aufgerufen wurde, ist
es unwahrscheinlich, daß sich der nächste Befehl in dem
Cache befindet.
Ein weiteres Problem, das bei bekannten Systemen zum Behan
deln von Verzweigungsbefehlen auftritt, ist die Unfähigkeit
dieser Systeme, Daten, die beim Verarbeiten eines ersten
Verzweigungsbefehls erzeugt wurden, zu verwenden, um den
Verarbeitungsaufwand, der für einen zweiten Verzweigungsbe
fehl benötigt wird, zu reduzieren. Ein bedingter Verzwei
gungsbefehl kann betrachtet werden, als ob er drei ver
knüpfte Befehle aufweist. Der erste Befehl berechnet die
Zieladresse, d. h. die Adresse des nächsten auszuführenden
Befehls, wenn die Verzweigung durchgeführt wird. Der zweite
Befehl berechnet das Verzweigungsresultat, wobei das Resul
tat derselben bestimmt, ob die Verzweigung durchgeführt
werden soll. Der dritte Befehl stellt die tatsächliche
Steuerungsübergabe dar.
In vielen Fällen wird eine Anzahl von Verzweigungsbefehlen,
die die gleiche Zieladresse aufweisen, in dem Programm vor
handen sein. Daher könnte prinzipiell ein wesentlicher Be
trag an Verarbeitungszeit eingespart werden, wenn die Er
gebnisse der Zieladressberechnung von dem ersten Befehl bei
den restlichen Befehlen verwendet werden könnten. Herkömmli
che Computerarchitekturen schaffen kein wirksames Verfahren,
um dies zu erreichen. Daher wird die Zieladresse für jede
Verzweigung neu berechnet. Auf ähnliche Weise kann die Ver
gleichsberechnung das Resultat von mehreren Verzweigungen
bestimmen.
Schließlich schaffen bekannte Systeme lediglich eine Ein
richtung zum Ausführen der Berechnungen, die einem Verzwei
gungsbefehl zu einem beliebigen gegebenen Zeitpunkt ent
sprechen. Eine wichtige Strategie beim Reduzieren der Wir
kungen der Latenzzeiten umfaßt ein Bewegen von Befehlen
innerhalb der Befehlssequenz. Wenn der Compiler beispiels
weise weiß, daß eine Ladeoperation eine Latenzverzögerung
aufweist, kann der Compiler andere Befehle in der Befehls
sequenz derart bewegen, daß diese Befehle während der La
tenzperiode ausgeführt werden. Diese Strategie reduziert die
Wirkungen der Latenzverzögerung. Ungünstigerweise ist die
Fähigkeit des Compilers, diese Latenzverzögerungen durch
eine Durchführung von Berechnungen, die für Verzweigungs
befehle benötigt werden, aufzufüllen, durch die Unfähigkeit
begrenzt, die gesamte Verzweigungsberechnung zu vollenden.
Bekannte Systeme schaffen beispielsweise keine wirksame Ein
richtung, um die Zieladressberechnung von der Vergleichsope
ration zu trennen, um zu ermöglichen, daß die Zieladresse
außerhalb der Reihenfolge berechnet wird. Bekannte Systeme
können zu einem Zeitpunkt höchstens auf einem Verzweigungs
befehl arbeiten, und wenn die Informationen für diesen Ver
zweigungsbefehl nicht verfügbar sind, können die Verzwei
gungsinformationen nicht vor dem Zeitpunkt berechnet werden.
Die oben erwähnte Computerarchitektur und der Befehlssatz,
welche in dem US-A-5,615,386 offenbart sind, schaffen hin
sichtlich der oben beschriebenen Probleme eine bedeutende
Verbesserung gegenüber dem Stand der Technik. Das in dem
selben beschriebene Computersystem verwendet eine Register
datei, die mit dem Befehlsprozessor verbunden ist, um die
Ausführung von Verzweigungsbefehlen zu erleichtern. Die Re
gisterdatei weist eine Anzahl von Registern auf. Jedes Regi
ster wird verwendet, um Informationen, die beim Ausführen
eines Verzweigungsbefehls benötigt werden, zu speichern. Je
des Register weist Platz zum Speichern einer Zieladresse
eines Verzweigungsbefehls und Platz zum Speichern einer Flag
mit einem ersten und zweiten Zustand auf, wobei der erste
Zustand anzeigt, daß ein Verzweigungsbefehl, der auf das Re
gister verweist, bewirken sollte, daß der Befehlsprozessor
zu dem Befehl, der durch die Zieladresse spezifiziert ist,
abzweigt, wenn ein Führe-Verzweigung-Aus-Befehl, der auf das
Register verweist, ausgeführt wird. Der zweite Zustand zeigt
an, daß der Befehlsprozessor die Befehlsausführung in der
sequentiellen Reihenfolge fortsetzen soll, wenn ein Führe-
Verzweigung-Aus-Befehl, der auf das Register verweist, durch
den Befehlsprozessor ausgeführt ist. Das Computersystem ver
wendet einen "Bereite-Verzweigung-Vor"-Befehl, um ein Regi
ster zuzuweisen und dasselbe mit einer Zieladresse zu laden.
Bedingte Verzweigungsbefehle werden mit Hilfe eines Ver
gleichsbefehls implementiert, welcher die Flag in einem Re
gister setzt, auf das durch den Befehl verwiesen wird, wenn
eine spezifizierte Bedingung erfüllt ist.
Ein Vorabrufbefehl wird zu einem Cachespeicher gesendet,
wenn eine Flag in einem der Register gesetzt ist, um anzu
zeigen, daß eine Verzweigung durchgeführt werden soll. Der
Vorabruf wartet nicht auf den endgültigen Wert der Flag. Der
Vorabrufbefehl bewirkt, daß die Cachezeile, welche die Ziel
adresse enthält, in den Cache geladen wird, wenn sich die
fragliche Cachezeile nicht bereits in dem Cache befindet.
Das Register, auf das durch einen Bereite-Verzweigung-Vor-,
einen Führe-Verzweigung-Aus- und einen Vergleichs-Befehl
verwiesen wird, ist durch ein Zeigerregister spezifiziert.
Der Inhalt des Zeigerregisters kann mit Hilfe eines getrenn
ten Befehls eingestellt werden. Alternativ kann unter Ver
wendung von in der Registerdatei gespeicherten Daten der
Inhalt des Zeigerregisters durch einen Führe-Verzweigung-
Aus-Befehl eingestellt werden.
Während diese Computerarchitektur die durch Verzweigungen
verursachten Verzögerungen bedeutend reduziert, stellt die
selbe bei Computern, welche mehrere Befehle pro Maschinen
zyklus ausgeben, wie z. B. Superskalar- oder VLIW-Computern,
nicht das Optimum dar. Bei derartigen Computern werden in
jedem Maschinenzyklus zwei oder mehr Befehle ausgeführt.
Daher können mehrere Verzweigungen prinzipiell zum gleichen
Zeitpunkt verarbeitet werden.
Selbst bei Architekturen, die nur einen Befehl pro Maschi
nenzyklus ausführen, kann die Bestimmung des Resultats einer
Verzweigung verwendet werden, um Handlungen zu bewirken,
welche auf einer Mehrzahl von Registern ausgeübt werden. Wie
vorher angemerkt wurde, verwendet das vorher beschriebene
System vorzugsweise Vorabrufbefehle, um die Wirkungen der
Speicherlatenzzeit zu reduzieren. Es wird der Fall betrach
tet, bei dem der Computer bestimmt, daß eine besondere Ver
zweigung durchgeführt werden wird und daß eine Anzahl von
Verzweigungen in dem anderen Weg existieren, welche bereits
anderen Registern zugewiesen wurden. Vorabrufbefehle für die
Adressen, die in diesen anderen Registern angezeigt werden,
werden auch durch die Registersteuerungs-Hardware verar
beitet. Da auf diese Adressen nicht verwiesen werden wird,
stellt es eine Verschwendung von Computerbetriebsmitteln
dar, mit den Vorabrufoperationen fortzufahren. In der Tat
kann die Bewegung der entsprechenden Daten in den Cache
durch Verdrängen nützlicherer Daten aus dem Cache die Cache
leistung tatsächlich reduzieren.
Allgemein wird die Registersteuerungs-Hardware tatsächlich
eine Schlange von Vorabrufbefehlen aufweisen, welche die
selbe in den Cache einspeist. Wenn es bekannt ist, daß eine
besondere Verzweigung nicht durchgeführt wird, kann jeder
beliebige entsprechende Vorabrufbefehl, welcher noch nicht
ausgegeben wurde, prinzipiell aus der Schlange entfernt
werden, wodurch die Priorität der Daten, auf die wahrschein
licher durch den Cache zugegriffen wird, erhöht wird. Ungün
stigerweise muß die Steuerungs-Hardware einer verknüpften
Liste mit einem Eintrag pro Register nachgehen, um zu be
stimmen, welche Register und entsprechende Vorabrufbefehle
durch eine Bestimmung eines Resultats einer beliebigen gege
benen Verzweigung zurückgezogen werden sollen. Die Zeit, die
benötigt wird, um diese verknüpfte Liste zu durchqueren,
macht diesen Lösungsansatz unhaltbar.
Die US-A-3,577,189 betrifft eine Vorrichtung und ein Verfah
ren in einem digitalen Computer, die eine verbesserte Pro
grammverzweigung mittels einer Verzweigungsvorhersehung er
möglicht, um dadurch die Anzahl von Verzweigungen und die
Verzweigungsverzögerungen zu reduzieren. Es ist eine Vor
richtung vorgesehen, um einen Verzweigungsbefehl in einer
ersten Sequenz zu bewirken, der die Tatsache anzeigt, daß im
Fall einer erfolgreichen Bestimmung der Verzweigungsbedin
gung, die in dem Verzweigungsbefehl angegeben ist, eine Pro
grammverzweigung von einem Punkt in der ersten Sequenz, die
durch einen Typmarkierungsbefehl (welcher als Exit-Befehl
bezeichnet wird) angezeigt ist, zu einem Zielbefehl in der
zweiten Sequenz von Befehlen erfolgt. Ein Puffer mit z. B.
vier Reihen ist vorgesehen, durch den die jeweiligen Befehle
während einer vorbestimmten Anzahl von Zyklen geschoben wer
den. Die jeweiligen Befehle werden durch den Puffer während
einer bestimmten Anzahl von Zyklen geschoben, wobei der Ver
zweigungsbefehl I dann verarbeitet wird, wenn dieser die
Reihe 0 erreicht. Sobald der Exit-Befehl in den Puffer ein
tritt, und wenn die Verzweigungsbedingung als erfolgreich
bestimmt wurde, wird die sogenannte EBA (= effektive Ver
zweigungsadresse) bestimmt. Auf der Grundlage der effektiven
Verzweigungsadresse wird eine Operation oder ein Befehl in
der zweiten Sequenz der Befehle ausgeführt. Es dauert jedoch
vier Zyklen bis der neue Befehl in der zweiten Sequenz von
Befehlen in den Puffer eintritt.
Der vorliegenden Erfindung liegt die Aufgabe zugrunde, einen
Verzweigungsprozessor für ein Datenverarbeitungssystem und
ein Verfahren zum Betreiben eines Datenverarbeitungssystems
zu schaffen, um mehrere Verzweigungen von einem Quellpro
gramm in einem einzigen Maschinenzyklus auszuführen.
Diese Aufgabe wird durch einen Verzweigungsprozessor gemäß
dem Patentanspruch 1 sowie durch ein Verfahren gemäß dem
Patentanspruch 8 gelöst.
Gemäß einer vorteilhaften Weiterbildung der vorliegenden
Erfindung wird ein Verzweigungsprozessor geschaffen, der die
Anzahl von unnötigen Vorabrufbefehlen, die den Cache-Spei
cher erreichen, reduziert.
Die vorliegende Erfindung stellt eine verbesserte Computer
architektur und einen Befehlssatz dar, welcher die Verzöge
rungen, die durch Verzweigungsbefehle erzeugt werden, redu
ziert. Ein Datenverarbeitungssystem gemäß der vorliegenden
Erfindung weist einen Befehlsprozessor auf, um die Befehle
eines Programms sequentiell auszuführen. Die Befehle weisen
einen Verzweigungsbefehl auf, der bewirkt, daß der Befehls
prozessor den Befehl, der durch eine Zieladresse, die sich
auf den Verzweigungsbefehl bezieht, als den nächsten Befehl
im dem Programm statt des nächsten Befehls in der Programm
sequenz ausführt, wenn eine Bedingung, die dem Verzwei
gungsbefehl zugeordnet ist, erfüllt ist. Ein Datenverarbei
tungssystem gemäß der vorliegenden Erfindung weist einen
Verzweigungsprozessor auf, welcher einen Verzweigungsspei
cher zum Speichern von Informationen aufweist, die eine
Mehrzahl von Verzweigungsbefehlen spezifizieren, die in ei
ner Codesequenz enthalten sind. Der Verzweigungsspeicher
speichert Informationen, die die Zieladresse jedes Verzwei
gungsbefehls und die Position des Verzweigungsbefehls be
züglich des Beginns der Codesequenz spezifizieren. Der Ver
zweigungsprozessor empfängt die Ergebnisse der verschiedenen
Vergleiche, die bestimmen, ob die Bedingungen, die den in
dem Verzweigungsspeicher gespeicherten verschiedenen Ver
zweigungen zugeordnet sind, erfüllt sind. Der Verzweigungs
prozessor speichert vorzugsweise die Identität der Verzwei
gung, die dem Beginn der Codesequenz am nächsten ist, für
welche die Bedingung, die derselben zugeordnet ist, erfüllt
wurde. Diese Verzweigung wird als die höchste freigegebene
Verzweigung bezeichnet. Die tatsächliche Verzweigungsopera
tion wird als Reaktion auf den Empfang eines Führe-Verzweig
ung-Aus-Befehls, welcher eine oder mehrere Verzweigungen,
die in dem Verzweigungsspeicher gespeichert sind, spezifi
ziert. Wenn eine der Verzweigungen, die in dem Führe-Ver
zweigung-Aus-Befehl spezifiziert sind, mit der höchsten
freigegebenen Verzweigung übereinstimmt, wird der nächste
Befehl, der durch das Datenverarbeitungssystem ausgeführt
wird, die Zieladresse der höchsten freigegebenen Verzweigung
sein. Wenn dies nicht der Fall ist, wird der nächste Befehl
der Befehl sein, der dem Führe-Verzweigung-Aus-Befehl folgt.
Bei dem bevorzugten Ausführungsbeispiel der vorliegenden
Erfindung gibt der Verzweigungsprozessor ferner Vorabrufbe
fehle an den Cachespeicher aus, der normalerweise an die
zentrale Verarbeitungseinheit Daten liefert. Bei diesem Aus
führungsbeispiel speichert der Verzweigungsspeicher auch In
formationen, die die Reihenfolge spezifizieren, in der Vor
abrufbefehle für die Zieladressen, die den verschiedenen
gespeicherten Verzweigungen entsprechen, gesendet werden
sollen. Wenn der Verzweigungsprozessor vor dem Senden eines
Vorabrufbefehls bestimmt, daß die höchste freigegebene Ver
zweigung näher an dem Anfang der Codesequenz ist, als die
Verzweigung, die einer bestimmten Zieladresse entspricht,
dann verhindert der Verzweigungsprozessor, daß der Vorab
rufbefehl, der dieser Zieladresse entspricht, zu dem Cache
speicher gesendet wird. Auf ähnliche Weise verhindert der
Verzweigungsprozessor, daß der Vorabrufbefehl ausgegeben
wird, wenn vor dem Senden des entsprechenden Vorabrufbefehls
bestimmt ist, daß die Bedingung, die einem bestimmten
Verzweigungsbefehl entspricht, nicht erfüllt ist.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung
werden nachfolgend bezugnehmend auf die beiliegenden Zeich
nungen näher erläutert. Es zeigen:
Fig. 1 ein Flußdiagramm für einen beispielhaften Über
block.
Fig. 2 ein Blockdiagramm eines Verzweigungsprozessors ge
mäß der vorliegenden Erfindung und die weiteren
Elemente eines typischen Datenverarbeitungssystems.
Fig. 3 ein detaillierteres Blockdiagramm der Registerda
tei, die in Fig. 2 gezeigt ist.
Die vorliegende Erfindung erreicht ihre Vorteile durch Be
handeln einer Anzahl von Verzweigungen als eine Gruppe und
durch Trennen der Operationen, die bei einer herkömmlichen
Verzweigung inhärent sind, in Teiloperationen, die getrennt
durchgeführt werden können. Die vorliegende Erfindung behan
delt eine Anzahl von Verzweigungen, die einem Codeblock zu
geordnet sind, der als Überblock bezeichnet wird, als eine
Gruppe. Ein Überblock ist eine Sequenz von Basisblöcken, die
durch Verzweigungsbefehle verknüpft sind, der am Beginn des
ersten Basisblocks betreten wird. Zu Zwecken dieser Erörte
rung stellt ein Basisblock einen Codeblock dar, in den am
Beginn des Blocks eingetreten wird, und der eine einzelne
Verzweigung an dem Ende aufweist. Ein beispielhafter Über
block ist in Fig. 1 bei 10 gezeigt. Der Überblock 10 weist
Basisblöcke 11 bis 14 auf, welche jeweils durch Verzwei
gungen 15 bis 18 verknüpft sind. Bei dem bevorzugten Ausfüh
rungsbeispiel der vorliegenden Erfindung werden die Verzwei
gungen, die die Basisblöcke verknüpfen, als die gewählt, von
denen erwartet wird, daß sie am wahrscheinlichsten auftre
ten. Die weniger wahrscheinlichen Verzweigungen führen zu
einem Code außerhalb des Überblocks. Die weniger wahrschein
lichen Resultate der Verzweigungen 15 bis 18 sind jeweilige
Befehle I1 bis I4. Wenn eines dieser Resultate nicht verwen
det wird, dann wird von dem Überblock auf einen Befehl I5
gesprungen, der in der folgenden Erörterung als der Durch
gang-Befehl bezeichnet wird.
Um die folgende Erörterung zu vereinfachen, wird zuerst ein
einzelner bedingter Verzweigungsbefehl betrachtet. Ein der
artiger Befehl bewirkt, daß der durch den Computer als näch
stes auszuführende Befehl entweder der Befehl nach dem Ver
zweigungsbefehl oder der Befehl, der an einer Zieladresse,
die in dem Verzweigungsbefehl spezifiziert ist, positioniert
ist. In dem allgemeinen Fall wird die Wahl des nächsten Be
fehls durch Vergleichen von zwei Argumenten, die in dem
Verzweigungsbefehl spezifiziert sind, bestimmt. Ein Verzwei
gungsbefehl der Form "Verzweigung zu einer Adresse A, wenn
der Inhalt eines spezifizierten Registers Null ist" ist ein
Beispiel für einen derartigen bedingten Verzweigungsbefehl.
Wenn der Inhalt des Registers nicht Null ist, dann ist der
nächste Befehl der, der in der Programmsequenz dem Verzwei
gungsbefehl folgt.
Der Befehl kann aufgefaßt werden, als ob er drei Teilopera
tionen aufweist, die bei herkömmlichen Computersystemen se
quentiell ausgeführt werden. Die erste Teiloperation berech
net die Zieladresse. Die Zieladresse ist oft bezüglich eines
Registers spezifiziert, weshalb einige Berechnungen benötigt
werden können, um die tatsächliche Adresse zu erzeugen. Bei
spielsweise ist eine Zieladresse, die aus dem Inhalt eines
spezifizierten Registers mit vielleicht einem Versatz be
steht, der zu dem Inhalt addiert wird, Fachleuten in der
Computertechnik vertraut.
Die zweite Teiloperation umfaßt die Vergleichsoperation, die
vorher beschrieben wurde, um zu bestimmen, ob die Verzwei
gung durchgeführt werden soll. Wenn die Verzweigung durchge
führt werden soll, kann der Vergleich ein Bit setzen, das
von der dritten Operation verwendet wird.
Die dritte Teiloperation ist die tatsächliche Verzweigungs
operation, d. h. Ändern des Programmzählers auf die Ziel
adresse, wenn in der Vergleichsoperation die spezifizierte
Bedingung erfüllt wurde. Die ersten zwei Operationen können
als Initialisierungsoperationen für die dritte Operation
aufgefaßt werden.
Bei herkömmlichen Computersystemen werden die drei Opera
tionen sequentiell ausgeführt, wenn der Computer einem Ver
zweigungsbefehl begegnet. Diese starre Ausführung verhin
dert, daß der Compiler die Teiloperationen bewegt, um eine
wirksamere Verwendung der Computerbetriebsmittel zu schaf
fen. Gemäß dem Stand der Technik wird die Zieladresse zu dem
Zeitpunkt berechnet, zu dem die Vergleichsoperation durchge
führt wird, und die Verzweigung wird unmittelbar nach dem
Vergleich durchgeführt. Daher können die Informationen, die
für einen bedingten Verzweigungsbefehl benötigt werden,
nicht früher berechnet werden, da die Teiloperationen in
dieser starren Sequenz durchgeführt werden. Zusätzlich kann
der nächste Befehl nicht in dem Cache sein, wenn die Ver
zweigung durchgeführt wird, weswegen der Prozessor gezwungen
wird, anzuhalten, während der Befehl an der Zieladresse in
den Cache geladen wird.
Dagegen ermöglicht die Trennung des Verzweigungsbefehls in
die Komponenten-Teiloperationen, daß die Zieladresse sobald
wie möglich berechnet wird, da die Argumente für den Ver
gleich nicht benötigt werden. Daher kann diese Arbeit ver
wendet werden, um die Latenzperioden anderer Befehle aufzu
füllen. Auf ähnliche Weise kann der Vergleich durchgeführt
werden, sobald die Argumente bekannt sind. Daher kann diese
Arbeit ferner bewegt werden, um die Latenzperioden einiger
anderer Befehle aufzufüllen. Schließlich kann ein Vorabruf
befehl an den Cachespeicher gesendet werden, um sicherzu
stellen, daß der Befehl an der Zieladresse in dem Cache ist,
wenn die Verzweigung durchgeführt wird. Dieser Vorabrufbe
fehl kann zu dem Zeitpunkt ausgegeben werden, zu dem die
Zieladresse berechnet wird. Bei bekannten Systemen hilft ei
ne Vorabrufoperation an den Cache nicht viel, da die Ver
zweigung unmittelbar nach der Zieladressberechnung ausge
führt wird. Daher ist eine sehr geringe vorgezogenen Warnung
verfügbar.
Die obige Beschreibung bezog sich auf einen einzelnen Ver
zweigungsbefehl. Bei der vorliegenden Erfindung werden die
Verzweigungsbefehle in einem Überblock als eine Gruppe be
handelt. Fig. 2 stellt ein Blockdiagramm eines Verzweigungs
prozessors 100 gemäß der vorliegenden Erfindung dar. Daten,
die jede Verzweigung in dem Überblock spezifizieren, sind in
einer Registerdatei 102 gespeichert. Die Daten weisen die
Zieladresse, die der Verzweigung zugeordnet ist, und die Po
sition der Verzweigung in dem Überblock auf. In der folgen
den Erörterung werden die Verzweigungen numeriert, indem mit
der Verzweigung begonnen wird, die am nächsten bei dem Be
ginn des Überblocks liegt. Die Verzweigung, die dem Beginn
des Überblocks am nächsten liegt, wird als die höchste Ver
zweigung bezeichnet. Weitere optionale Informationen, die in
der Registerdatei 102 gespeichert werden können, werden
nachfolgend detaillierter erläutert.
Die Verzweigungsdaten werden durch Bereite-Verzweigung-Vor-
Befehle (PT-Befehle; PT = Prepare To Branch), die durch den
Compiler erzeugt und durch eine Steuerung 104 verarbeitet
werden, in die Registerdatei 102 geladen. Ein PT-Befehl kann
den gesamten Überblock oder nur eine Verzweigung in dem
Überblock spezifizieren. In einem späteren Fall wird eine
Anzahl von getrennten PT-Befehlen benötigt werden, um den
Verzweigungsprozessor 100 zu initialisieren. Wenn die PT-
Befehle vollendet sind, wird ein Register in der Register
datei 102 sein, das jeder Verzweigung in dem Überblock ent
spricht. Fig. 3 ist ein Blockdiagramm einer Registerdatei,
die geeignet ist, um bei der vorliegenden Erfindung verwen
det zu werden. Jedes Register 160 wird die Zieladresse 161
des entsprechenden Verzweigungsbefehls und die Position des
Verzweigungsbefehls bezüglich des Beginns des Überblocks
enthalten. Die Positionsinformationen können in einem Feld
des Registers 162 gespeichert werden, oder sie können von
der Position des Registers in der Registerdatei selbst im
pliziert werden.
Die Vergleichsbefehle, die dem Überblock entsprechen, ver
weisen durch Spezifizieren der Verzweigungsposition in dem
Überblock auf einzelne Register in der Registerdatei. Sobald
die Ergebnisse der verschiedenen Vergleichsbefehle empfangen
worden sind, werden sie durch einen Prozessor 110 verarbei
tet, welcher ein Register 112 aktualisiert, welches die
Identität der Verzweigung hält, die dem Beginn des Über
blocks am nächsten liegt, für welchen die Bedingung, die in
dem entsprechenden Vergleichsbefehl spezifiziert ist, er
füllt ist. Diese Verzweigung wird als die höchste freigege
bene Verzweigung bezeichnet. Nachdem alle Vergleiche voll
endet sind, hält das Register 112 die Identität der Verzwei
gung, die aus dem Überblock durchgeführt werden soll.
Es wird bemerkt, daß der Prozessor 110 derart gezeigt ist,
als ob er mehrere Eingaben erhält. Bei Superskalar- und
VLIW-Computerarchitekturen können eine Mehrzahl von Ver
gleichsbefehlen in jedem Maschinenzyklus ausgeführt werden.
Daher können die Ergebnisse von mehr als einer Vergleichs
operation in jedem beliebigen gegebenen Maschinenzyklus ver
fügbar sein. Der Prozessor 110 vergleicht alle Eingaben, die
er in einem gegebenen Maschinenzyklus empfangen hat, mit dem
Inhalt des Registers 112 und gibt dann die Identität der
höchsten Verzweigung, für die die entsprechende Vergleichs
bedingung erfüllt wurde, an das Register 112 zurück. Nachdem
alle Vergleichsbefehle ausgeführt worden sind, spezifiziert
das Register 112 das Register in der Registerdatei 102, das
die Zieladresse für die Verzweigung aus dem Überblock, die
durchgeführt werden soll, enthält.
Die PT- und Vergleichs-Befehle können als Initialisierungs
befehle für den tatsächlichen Verzweigungsbefehl (EB-Befehl;
EB = Execute Branch) aufgefaßt werden, d. h. der Befehl, der
bewirkt, daß der Programmzähler 130 auf die Zieladresse
zeigt, wenn die Verzweigung durchgeführt wird. Bei dem be
vorzugten Ausführungsbeispiel der vorliegenden Erfindung
weist der EB-Befehl eine Maske mit einem Bit pro jedem
möglichen Register in der Registerdatei 102 auf. Wenn das
Bit auf eine "Eins" gesetzt ist, wird die Verzweigung zum
Testen freigegeben. Der EB-Befehl bewirkt, daß der Computer
auf die Zieladresse der höchsten freigegebenen Verzweigung
springt, vorausgesetzt, daß die Verzweigung in dem EB-Befehl
nicht maskiert ist. Wenn die höchste freigegebene Verzwei
gung zu dem Zeitpunkt, zu dem der EB-Befehl empfangen wird,
durch den EB-Befehl maskiert ist, geht die Verzweigung
durch.
Die Fähigkeit, mehrere Verzweigungen in einem Befehl zu te
sten, schafft Vorteile bei einer Anzahl von Situationen. In
vielen Fällen ist bekannt, daß die Wahrscheinlichkeit sehr
klein ist, daß irgendeine Verzweigung durchgeführt werden
wird. D. h., daß I5, das in Fig. 1 gezeigt ist, in der großen
Mehrheit der Fälle der Ausgang aus dem Überblock sein wird.
Diese Situation würde beispielsweise erwartet werden, wenn
allen Verzweigungen in dem Überblock Fehlerbedingungen zu
geordnet wären. Statt des Ausführens von vier getrennten
EB-Befehlen, wie es in Fig. 1 gezeigt ist, könnte ein ein
zelner EB-Befehl, bei dem alle vier Verzweigungen freige
geben wären, am Ende des Überblocks ausgeführt werden. Wenn
das Register 112 auf ein Register in der Registerdatei 102,
das einer der freigegebenen Verzweigungen entspricht, zeigt,
kann das Programm auf die Zieladresse, die in dem Register
gezeigt ist, springen. Somit kann eine beträchtliche Anzahl
von EB-Befehlen beseitigt werden, was wiederum die Geschwin
digkeit verbessert, mit der das Programm bei Abwesenheit von
Fehlern ausgeführt wird.
Das oben beschriebene Schema setzt voraus an, daß der Über
block bis zur Vollendung arbeiten kann, selbst wenn eine
oder mehrere Verzweigungen, die durchgeführt worden wären,
wenn sie an der ursprünglichen Position ausgeführt worden
wären, verzögert wurden. In vielen Fällen können der Com
piler oder der Programmierer sicherstellen, daß diese Be
dingung erfüllt ist.
Das oben beschriebene Schema zum Kombinieren von Verzwei
gungen nimmt an, daß alle Verzweigungen in eine Verzweigung
am Ende des Überblocks kombiniert werden. Wie oben bemerkt
wurde, trifft dies lediglich bei Fällen zu, bei denen eine
Ausführung des Codes bis zu dem Verzweigungspunkt wirksam
ist, und es trifft sicher sogar in den Fällen zu, in denen
eine frühere Verzweigung durchgeführt worden wäre, wenn die
Verzweigungen nicht in eine Verzweigung zusammengefaßt wor
den wären. Die Verzweigungen könnten prinzipiell in Gruppen
zusammengefaßt werden. Die Verzweigungen 15 und 16 könnten
beispielsweise in eine einzelne Verzweigung zusammengefaßt
werden, welche an der Position der Verzweigung 16 positio
niert ist, wobei die restlichen Verzweigungen in eine Ver
zweigung am Ende des Überblocks zusammengefaßt werden
könnten.
Es wird wieder auf Fig. 2 Bezug genommen. Bei modernen Com
putersystemen werden die tatsächlichen Daten und Befehle,
die zu dem Prozessor 135 geliefert werden, in einem Cache
speicher 133 gespeichert, bevor sie zu dem Prozessor 135 ge
liefert werden. Wenn sich die Daten nicht in dem Cache 133
befinden, wenn der Prozessor 135 die Daten anfordert, wird
der Prozessor 135 angehalten, bis der Cache 133 die Daten
von dem Hauptspeicher 134 abruft. Diese Situation wird als
ein Cachefehlschlag bezeichnet. Cachefehlschläge reduzieren
den Wirkungsgrad von Computersystemen und sollten daher ver
mieden werden. Die vorliegende Erfindung schafft eine Ein
richtung zum Reduzieren der Anzahl von Cachefehlschlägen.
Bei dem bevorzugten Ausführungsbeispiel der vorliegenden
Erfindung gibt eine Steuerung 104 Vorabrufbefehle an den
Cache 133 aus, um zu ermöglichen, daß der Cache 133 vorher
von dem Hauptspeicher 134 Informationen anfordert, wodurch
die Anzahl von Zyklen reduziert wird, in denen der Prozessor
aufgrund von Cachefehlschlägen angehalten wird. Die Vorab
rufbefehle werden in einer Reihenfolge ausgegeben, die durch
Informationen in den PT-Befehlen spezifiziert ist. Diese In
formationen sind bei dem bevorzugten Ausführungsbeispiel der
vorliegenden Erfindung ferner in dem entsprechenden Register
in der Registerdatei 102 gespeichert. Die Informationen kön
nen durch den Programmierer oder den Compiler erzeugt wer
den.
Der Cache 133 ist in der Lage, lediglich eine begrenzte An
zahl von Vorabrufbefehlen, typischerweise einen pro Maschi
nenzyklus, zu empfangen. Daher können die Vorabrufbefehle in
einer Reihenfolge, die in dem PT-Befehl spezifiziert ist, in
einer Vorabrufschleife 140 plaziert sein. Die Informationen
über die Reihenfolge können ferner in der Registerdatei 102
in einem Feld 165 des Registers, das dem Verzweigungsbefehl
entspricht, gespeichert sein. Alternativ können die Vorab
rufbefehle direkt an den Cache 133 ausgegeben werden, ohne
daß sie in einer Schlange plaziert werden. In diesem Fall
wird beim Entscheiden, welcher Vorabrufbefehl als nächstes
zu erteilen ist, durch die Steuerung 104 auf die Informatio
nen über die Reihenfolge in dem Feld 165, verwiesen.
Während ein Vorabrufbefehl eine Ausgabe erwartet, kann es
klar werden, daß die spezifizierten Daten niemals gebraucht
werden. In diesem Fall bewirkt die Steuerung 104, daß der
Vorabrufbefehl aus der Schlange entfernt oder auf irgendeine
Art und Weise markiert wird, wodurch vermieden wird, daß der
Vorabrufbefehl dem Cache 133 erteilt wird. Es wird der Fall
betrachtet, bei dem ein Vorabrufbefehl auf Informationen
verweist, die an der Zieladresse einer Verzweigung in dem
Überblock gespeichert sind. Wenn bekannt ist, daß die der
Verzweigung zugeordnete Bedingung nicht erfüllt ist, werden
die Informationen an der Zieladresse durch den Prozessor
nicht angefordert. Daher entfernt die Steuerung 104 den Vor
abrufbefehl für die Zieladresse aus der Schlange, wenn der
entsprechende Vergleichsbefehl anzeigt, daß die in demselben
spezifizierte Bedingung nicht erfüllt ist. Auf ähnliche Wei
se wird der Fall betrachtet, bei dem das Register 112 auf
eine Verzweigung zeigt, die sich über der Verzweigung, die
einem bestimmten Vorabrufbefehl entspricht, befindet. In
diesem Fall ist bekannt, daß die Verzweigung, die dem Vorab
rufbefehl entspricht, niemals ausgeführt wird, selbst wenn
die Bedingung, die derselben zugeordnet ist, erfüllt ist, da
die in dem Register 112 spezifizierte Verzweigung oder eine
Verzweigung über derselben durchgeführt werden wird. Daher
überwacht die Steuerung 104 ferner den Inhalt des Registers
112 und entfernt jeden Vorabrufbefehl aus der Schlange 140,
der auf die Zieladresse einer Verzweigung unter der höchsten
freigegebenen Verzweigung verweist.
Es können ferner Fälle existieren, bei denen gewünscht wird,
einen Vorabrufbefehl auszuführen, wenn es sicher bekannt
ist, daß die entsprechende Verzweigung durchgeführt werden
soll. Dies sind beispielsweise Fälle, bei denen der Vorab
rufbefehl selbst bestimmte Systemverzögerungen bewirken
kann. In derartigen Fällen gibt die Steuerung 104 nur den
Vorabrufbefehl aus, wenn die fragliche Verzweigung die
höchste freigegebene Verzweigung ist, wobei es bekannt ist,
daß die Vergleichsbefehle für alle weiteren Verzweigungs
befehle über dem Verzweigungsbefehl bewertet worden sind. In
diesem Fall muß die Steuerung 104 die Verzweigungsbefehle
verfolgen, für die noch keine Vergleichsbefehle ausgeführt
worden sind. Bei dem bevorzugten Ausführungsbeispiel der
vorliegenden Erfindung ist ein Feld, wie z. B. ein Feld 164,
das in Fig. 3 gezeigt ist, in jedem der Register in der Re
gisterdatei 102 vorgesehen, um zu verfolgen, welche Ver
gleichsbefehle nicht vollendet sind.
Die oben beschriebenen Ausführungsbeispiele der vorliegenden
Erfindung verwenden eine Registerdatei zum Speichern der
Informationen, die für jede Verzweigung relevant sind, und
ein Register 112 zum Speichern der Identität der Verzwei
gung, die durchgeführt werden soll. Für Fachleute ist es
jedoch offensichtlich, daß weitere Speichereinrichtungen für
diese Informationen verwendet werden können. Es könnten
beispielsweise die gesamten oder ein Teil der Informationen
in einem herkömmlichen Speicher gespeichert werden.
Ferner wird bemerkt, daß die Ergebnisse der Aktualisierungs
berechnungen, die verwendet werden, um den Zustand des Re
gisters 112 beizubehalten, in dem Prozessor 110 verfügbar
sind, bevor diese Ergebnisse in dem Register 112 erscheinen.
In diesem Fall können Systeme, die eine Vergleichsoperation
direkt vor der Verzweigungsoperation in demselben Maschi
nenzyklus durchführen, implementiert werden.
Claims (12)
1. Verzweigungsprozessor (100) für ein Datenverarbeitungs
system zum Ausführen eines Programms, welches eine Be
fehlssequenz aufweist, die eine Mehrzahl von Befehlen
in einer geordneten Sequenz aufweist, wobei die geord
nete Sequenz einen Beginn und eine Mehrzahl von Ver
zweigungsbefehlen aufweist, wobei jeder Verzweigungsbe
fehl bewirkt, daß das Datenverarbeitungssystem einen
Befehl ausführt, der durch eine Zieladresse spezifi
ziert ist, wenn eine spezifizierte Bedingung erfüllt
ist, wobei der Verzweigungsprozessor (100) folgende
Merkmale aufweist:
eine Einrichtung (102) zum Speichern von Informationen, die eine Mehrzahl von Verzweigungsbefehlen spezifizie ren, wobei die Informationen eine Zieladresse (161), die jedem Verzweigungsbefehl entspricht, und die Posi tion des Verzweigungsbefehls in der geordneten Sequenz relativ zu dem Beginn der geordneten Sequenz aufweisen;
eine Vergleichsergebniseinrichtung (110) zum Empfangen von Informationen, die anzeigen, ob die Bedingung, die sich auf einen der Verzweigungsbefehle bezieht, erfüllt wurde; und
eine Steuerungseinrichtung (104), die
eine Einrichtung (102) zum Speichern von Informationen, die eine Mehrzahl von Verzweigungsbefehlen spezifizie ren, wobei die Informationen eine Zieladresse (161), die jedem Verzweigungsbefehl entspricht, und die Posi tion des Verzweigungsbefehls in der geordneten Sequenz relativ zu dem Beginn der geordneten Sequenz aufweisen;
eine Vergleichsergebniseinrichtung (110) zum Empfangen von Informationen, die anzeigen, ob die Bedingung, die sich auf einen der Verzweigungsbefehle bezieht, erfüllt wurde; und
eine Steuerungseinrichtung (104), die
- 1. einen Bereite-Verzweigung-Vor-Befehls empfängt, wobei der Bereite-Verzweigung-Vor-Befehl Informationen auf weist, die eine Zieladresse (161) und eine Position, die einem der Verzweigungsbefehle entspricht, aufwei sen, und zum Bewirken, daß die Informationen in der Speichereinrichtung (102) gespeichert werden,
- 2. einen Führe-Verzweigung-Aus-Befehls empfängt, wobei der Führe-Verzweigung-Aus-Befehl einen der Verzwei gungsbefehle identifiziert, die in der Speicherein richtung (102) gespeicherte Informationen aufweisen, und
- 3. auf das Empfangen des Führe-Verzweigung-Aus-Befehls anspricht, um zu bewirken, daß das Datenverarbei tungssystem den Befehl ausführt, der durch die Ziel adresse (161), die dem identifizierten Verzweigungs befehl entspricht, spezifiziert ist, wenn die Bedin gung, die sich auf den identifizierten Verzweigungs befehl bezieht, erfüllt wurde und keine Bedingung, die sich auf einen Verzweigungsbefehl bezieht, der sich näher als der identifizierte Verzweigungsbefehl an dem Beginn der geordneten Sequenz befindet, er füllt wurde.
2. Verzweigungsprozessor (100) gemäß Anspruch 1, bei dem
die Vergleichsergebniseinrichtung (110) ein Register
(112) zum Speichern der Identität des Verzweigungsbe
fehls, der dem Beginn der geordneten Sequenz, für wel
che die Bedingung erfüllt wurde, am nächsten liegt,
aufweist.
3. Verzweigungsprozessor (100) gemäß Anspruch 2,
bei dem der Führe-Verzweigung-Aus-Befehl Informationen aufweist, die eine Mehrzahl von Verzweigungsbefehlen spezifizieren; und
bei dem die Steuerungseinrichtung (104) eine Einrich tung zum Bestimmen, ob irgendeiner der Verzweigungsbe fehle, die in dem Führe-Verzweigung-Aus-Befehl spezifi ziert sind, der Verzweigungsbefehl ist, dessen Identi tät in dem Register (112) gespeichert ist, und zum Be wirken, daß das Datenverarbeitungssystem den Befehl ausführt, der durch die Zieladresse (161) identifiziert ist, die dem Verzweigungsbefehl entspricht, dessen Identität in dem Register (112) gespeichert ist, auf weist.
bei dem der Führe-Verzweigung-Aus-Befehl Informationen aufweist, die eine Mehrzahl von Verzweigungsbefehlen spezifizieren; und
bei dem die Steuerungseinrichtung (104) eine Einrich tung zum Bestimmen, ob irgendeiner der Verzweigungsbe fehle, die in dem Führe-Verzweigung-Aus-Befehl spezifi ziert sind, der Verzweigungsbefehl ist, dessen Identi tät in dem Register (112) gespeichert ist, und zum Be wirken, daß das Datenverarbeitungssystem den Befehl ausführt, der durch die Zieladresse (161) identifiziert ist, die dem Verzweigungsbefehl entspricht, dessen Identität in dem Register (112) gespeichert ist, auf weist.
4. Verzweigungsprozessor (100) gemäß Anspruch 2 oder 3,
das ferner eine Cachespeichereinrichtung (133) zum
Speichern von Daten, die normalerweise in einem Haupt
speicher (134) gespeichert sind, und zum Liefern dieser
Daten direkt zu einer Verarbeitungseinheit (135) auf
weist, wobei die Cachespeichereinrichtung (133) fol
gende Merkmale aufweist:
eine Einrichtung zum Empfangen eines Vorabrufbefehls, der eine Datenadresse in dem Hauptspeicher (134) auf weist; und
eine Einrichtung, die auf den Empfang des Vorabrufbe fehls anspricht, zum Bewirken, daßp die Daten, die an der Datenadresse gespeichert sind, in den Cachespeicher (133) kopiert werden, wenn sich nicht bereits eine Ko pie der Daten in dem Cachespeicher (133) befindet;
wobei die Steuerungseinrichtung (104) in dem Verzwei gungsprozessor (100) ferner eine Einrichtung (140) zum Senden eines der Vorabrufbefehle, der eine Datenadresse aufweist, die mit einer der Zieladressen (161) überein stimmt, zu dem Cachespeicher (133) aufweist.
eine Einrichtung zum Empfangen eines Vorabrufbefehls, der eine Datenadresse in dem Hauptspeicher (134) auf weist; und
eine Einrichtung, die auf den Empfang des Vorabrufbe fehls anspricht, zum Bewirken, daßp die Daten, die an der Datenadresse gespeichert sind, in den Cachespeicher (133) kopiert werden, wenn sich nicht bereits eine Ko pie der Daten in dem Cachespeicher (133) befindet;
wobei die Steuerungseinrichtung (104) in dem Verzwei gungsprozessor (100) ferner eine Einrichtung (140) zum Senden eines der Vorabrufbefehle, der eine Datenadresse aufweist, die mit einer der Zieladressen (161) überein stimmt, zu dem Cachespeicher (133) aufweist.
5. Verzweigungsprozessor (100) gemäß Anspruch 4, bei dem
die Speichereinrichtung (102) in dem Verzweigungspro
zessor (100) ferner eine Einrichtung zum Speichern von
Informationen aufweist, welche eine anfängliche Reihen
folge (165) spezifizieren, in der die Vorabrufbefehle
zu dem Cachespeicher (133) gesendet werden sollen.
6. Verzweigungsprozessor (100) gemäß Anspruch 4 oder 5,
bei dem die Steuerungseinrichtung (104) ferner eine
Einrichtung zum Verhindern des Sendens einer Einleitung
oder Beendigung der Vorabrufbefehle für eine beliebige
Zieladresse (161) aufweist, die einen entsprechenden
Verzweigungsbefehl aufweist, der weiter von dem Beginn
der Befehlssequenz entfernt ist als der Verzweigungsbe
fehl, der durch das Register (112) identifiziert ist.
7. Verzweigungsprozessor (100) gemäß Anspruch 5,
bei dem die Vergleichsergebniseinrichtung (110) ferner eine Einrichtung zum Empfangen von Informationen auf weist, die spezifizieren, daß die Bedingung, die sich auf einen der Verzweigungsbefehle bezieht, nicht er füllt wurde; und
bei dem die Steuerungseinrichtung (104) ferner eine Einrichtung zum Verhindern des Sendens einer Einleitung oder Beendigung des Vorabrufbefehls, der eine Daten adresse aufweist, die gleich der Zieladresse (161) des Verzweigungsbefehls ist, dessen Bedingung nicht erfüllt wurde, zu dem Cachespeicher (133) aufweist.
bei dem die Vergleichsergebniseinrichtung (110) ferner eine Einrichtung zum Empfangen von Informationen auf weist, die spezifizieren, daß die Bedingung, die sich auf einen der Verzweigungsbefehle bezieht, nicht er füllt wurde; und
bei dem die Steuerungseinrichtung (104) ferner eine Einrichtung zum Verhindern des Sendens einer Einleitung oder Beendigung des Vorabrufbefehls, der eine Daten adresse aufweist, die gleich der Zieladresse (161) des Verzweigungsbefehls ist, dessen Bedingung nicht erfüllt wurde, zu dem Cachespeicher (133) aufweist.
8. Verfahren zum Betreiben eines Datenverarbeitungssy
stems, um Verzweigungsoperationen zu verarbeiten, die
Bedingungen aufweisen und einer geordneten Sequenz von
Befehlen zugeordnet sind, wobei einem Verzweigungsbe
fehl eine Position in der geordneten Sequenz zugeordnet
ist, wobei das Datenverarbeitungssystem eine Mehrzahl
von Speicherorten zum Speichern von Verzweigungsinfor
mationen aufweist, wobei die Verzweigungsinformationen
eine Zieladresse (161), die jeder Verzweigungsoperation
entspricht, und die Position der Verzweigungsoperation
in der geordneten Sequenz relativ zu dem Beginn der ge
ordneten Sequenz aufweisen;
mit folgenden Schritten:
als Reaktion auf einen Bereite-Verzweigung-Vor-Befehl, der einer Verzweigungsoperation zugeordnet ist, wobei der Bereite-Verzweigung-Vor-Befehl eine Zieladresse und eine Position der zugeordneten Verzeigungsoperation be stimmt, Speichern der Verzweigungsinformationen, ein schließlich der Position an einem der Speicherorte;
als Reaktion auf einen Vergleichsbefehl, der einer Ver zweigungsoperation zugeordnet ist, Berechnen der Bedin gung für die Verzweigungsoperation;
Berechnen einer Zieladresse für eine Verzweigungsopera tion, die an einem Speicherort gespeicherte Informa tionen hat, und Speichern der Zieladresse an dem Spei cherort für die Verzweigungsoperation; und
als Reaktion auf einen Führe-Verzweigung-Aus-Befehl, der eine Verzweigungsoperation bestimmt, die an einem der Speicherorte gespeichert ist, Ändern des Programm zählers auf die Zieladresse für die Verzweigungsopera tion, wenn die der Verzweigungsoperation zugeordnete Bedingung erfüllt wurde, es sei denn, eine Bedingung einer Verzweigungsoperation ist erfüllt, die näher am Beginn der geordneten Sequenz von Befehlen liegt, zu denen die Verzweigung gehört.
mit folgenden Schritten:
als Reaktion auf einen Bereite-Verzweigung-Vor-Befehl, der einer Verzweigungsoperation zugeordnet ist, wobei der Bereite-Verzweigung-Vor-Befehl eine Zieladresse und eine Position der zugeordneten Verzeigungsoperation be stimmt, Speichern der Verzweigungsinformationen, ein schließlich der Position an einem der Speicherorte;
als Reaktion auf einen Vergleichsbefehl, der einer Ver zweigungsoperation zugeordnet ist, Berechnen der Bedin gung für die Verzweigungsoperation;
Berechnen einer Zieladresse für eine Verzweigungsopera tion, die an einem Speicherort gespeicherte Informa tionen hat, und Speichern der Zieladresse an dem Spei cherort für die Verzweigungsoperation; und
als Reaktion auf einen Führe-Verzweigung-Aus-Befehl, der eine Verzweigungsoperation bestimmt, die an einem der Speicherorte gespeichert ist, Ändern des Programm zählers auf die Zieladresse für die Verzweigungsopera tion, wenn die der Verzweigungsoperation zugeordnete Bedingung erfüllt wurde, es sei denn, eine Bedingung einer Verzweigungsoperation ist erfüllt, die näher am Beginn der geordneten Sequenz von Befehlen liegt, zu denen die Verzweigung gehört.
9. Verfahren gemäß Anspruch 8, bei dem beim Verarbeiten
der Befehle der geordneten Sequenz von Befehlen für je
de Verzweigungsoperationen in der geordneten Sequenz
von Befehlen, die Verzweigungsoperation in einen Be
reite-Verzweigung-Vor-Befehl, einen Vergleichsbefehl
und einen Führe-Verzweigung-Aus-Befehl geteilt wird.
10. Verfahren gemäß Anspruch 9, bei dem eine Mehrzahl von
Bereite-Verzweigung-Vor-Befehlen vor dem Ausführen
irgendeines Führe-Verzweigung-Aus-Befehls verarbeitet
werden.
11. Verfahren gemäß Anspruch 8, bei dem jeder Führe-Ver
zweigung-Aus-Befehl einer Mehrzahl von Verzweigungsope
rationen zugeordnet sein kann, und bei dem der Führe-
Verzweigung-Aus-Befehls eine Maske einschließt, um an
zuzeigen, welchen Verzweigungsoperationen der Führe-
Verzweigung-Aus-Befehl zugeordnet ist, und bei dem der
Schritt des Änderns des Programmzählers ferner den
Schritt des Änderns des Programmzählers auf die höchste
aktivierte Verzweigung umfaßt, vorausgesetzt die Ver
zweigung ist nicht in dem Führe-Verzweigung-Aus-Befehl
maskiert.
12. Verfahren gemäß Anspruch 8, das ferner folgende
Schritte umfaßt:
Vorholen von Befehlen, die einer Mehrzahl von Verzwei gungsoperationen zugeordnet sind, in einer Sequenz, die durch die Führe-Verzweigung-Aus-Befehle, die der Mehr zahl von Verzweigungsoperationen zugeordnet sind, be stimmt sind; und
wenn der Vergleichsbefehl, der einer Verzweigung zuge ordnet ist, anzeigt, daß die Verzweigung nicht durchge führt wird, schließt die Vorhol-Operation das Verhin dern des Vorholens von Befehlen ein, die der Verzwei gung zugeordnet sind.
Vorholen von Befehlen, die einer Mehrzahl von Verzwei gungsoperationen zugeordnet sind, in einer Sequenz, die durch die Führe-Verzweigung-Aus-Befehle, die der Mehr zahl von Verzweigungsoperationen zugeordnet sind, be stimmt sind; und
wenn der Vergleichsbefehl, der einer Verzweigung zuge ordnet ist, anzeigt, daß die Verzweigung nicht durchge führt wird, schließt die Vorhol-Operation das Verhin dern des Vorholens von Befehlen ein, die der Verzwei gung zugeordnet sind.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/313,980 US5664135A (en) | 1994-09-28 | 1994-09-28 | Apparatus and method for reducing delays due to branches |
Publications (2)
Publication Number | Publication Date |
---|---|
DE19527031A1 DE19527031A1 (de) | 1996-04-04 |
DE19527031C2 true DE19527031C2 (de) | 1998-12-24 |
Family
ID=23218024
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19527031A Expired - Fee Related DE19527031C2 (de) | 1994-09-28 | 1995-07-24 | Verzweigungsprozessor für ein Datenverarbeitungssystem und Verfahren zum Betreiben eines Datenverarbeitungssystems |
Country Status (4)
Country | Link |
---|---|
US (1) | US5664135A (de) |
JP (1) | JPH08106386A (de) |
DE (1) | DE19527031C2 (de) |
GB (1) | GB2293671A (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19928260A1 (de) * | 1999-06-21 | 2000-08-31 | Siemens Ag | Schaltungsanordnung zur Steuerung von Programmverzweigungen in einem Prozessor |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1186995B1 (de) * | 1993-11-05 | 2003-09-03 | Intergraph Corporation | Befehlsspeicher mit assoziativem Kreuzschienenschalter |
US5802346A (en) * | 1995-06-02 | 1998-09-01 | International Business Machines Corporation | Method and system for minimizing the delay in executing branch-on-register instructions |
US5774737A (en) * | 1995-10-13 | 1998-06-30 | Matsushita Electric Industrial Co., Ltd. | Variable word length very long instruction word instruction processor with word length register or instruction number register |
GB2318959B (en) * | 1996-03-27 | 1998-10-07 | Mitsubishi Electric Corp | Geometrical operation apparatus |
JP3203180B2 (ja) * | 1996-03-27 | 2001-08-27 | 三菱電機株式会社 | 幾何学演算装置 |
JPH09319569A (ja) * | 1996-05-31 | 1997-12-12 | Mitsubishi Electric Corp | マイクロコンピュータ |
US5740419A (en) * | 1996-07-22 | 1998-04-14 | International Business Machines Corporation | Processor and method for speculatively executing an instruction loop |
JP3745039B2 (ja) * | 1996-08-01 | 2006-02-15 | 株式会社ルネサステクノロジ | 遅延命令を有するマイクロプロセッサ |
KR100240591B1 (ko) * | 1996-11-06 | 2000-03-02 | 김영환 | 분기명령어의 효율적인 처리를 위한 브랜치 타겟 버퍼 및 그를 이용한 분기 예측방법 |
US5920716A (en) * | 1996-11-26 | 1999-07-06 | Hewlett-Packard Company | Compiling a predicated code with direct analysis of the predicated code |
JP3535354B2 (ja) * | 1997-08-27 | 2004-06-07 | 株式会社東芝 | ストール検出表示装置及び方法 |
JPH1185515A (ja) * | 1997-09-10 | 1999-03-30 | Ricoh 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 |
US6253306B1 (en) | 1998-07-29 | 2001-06-26 | Advanced Micro Devices, Inc. | Prefetch instruction mechanism for processor |
JP3741870B2 (ja) * | 1998-08-07 | 2006-02-01 | 富士通株式会社 | 命令及びデータの先読み方法、マイクロコントローラ、疑似命令検出回路 |
US6243805B1 (en) * | 1998-08-11 | 2001-06-05 | Advanced Micro Devices, Inc. | Programming paradigm and microprocessor architecture for exact branch targeting |
US6430682B1 (en) * | 1998-09-11 | 2002-08-06 | Agere Systems Guardian Corp. | Reliable branch predictions for real-time applications |
US6289442B1 (en) | 1998-10-05 | 2001-09-11 | Advanced Micro Devices, Inc. | Circuit and method for tagging and invalidating speculatively executed instructions |
US6175897B1 (en) * | 1998-12-28 | 2001-01-16 | Bull Hn Information Systems Inc. | Synchronization of branch cache searches and allocation/modification/deletion of branch cache |
JP3867427B2 (ja) * | 1999-01-11 | 2007-01-10 | ソニー株式会社 | プロセッサ装置および集積回路 |
US6401144B1 (en) * | 1999-02-26 | 2002-06-04 | Intel Corporation | Method and apparatus for managing data transfers between peripheral devices by encoding a start code in a line of data to initiate the data transfers |
US6289444B1 (en) | 1999-06-02 | 2001-09-11 | International Business Machines Corporation | Method and apparatus for subroutine call-return prediction |
US6304962B1 (en) | 1999-06-02 | 2001-10-16 | International Business Machines Corporation | Method and apparatus for prefetching superblocks in a computer processing system |
US6523110B1 (en) * | 1999-07-23 | 2003-02-18 | International Business Machines Corporation | Decoupled fetch-execute engine with static branch prediction support |
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 |
US6449712B1 (en) * | 1999-10-01 | 2002-09-10 | Hitachi, Ltd. | Emulating execution of smaller fixed-length branch/delay slot instructions with a sequence of larger fixed-length instructions |
US6820193B1 (en) * | 1999-12-17 | 2004-11-16 | Koninklijke Philips Electronics N.V. | Branch instructions with decoupled condition and address |
WO2001065362A1 (en) * | 2000-02-28 | 2001-09-07 | Koninklijke Philips Electronics N.V. | Data processor with multi-command instruction words |
US6874171B2 (en) * | 2003-05-22 | 2005-04-05 | Deanna Erves | Overspray shield for toilet |
JP2009163624A (ja) * | 2008-01-09 | 2009-07-23 | Nec Electronics Corp | プロセッサ装置及び条件分岐処理方法 |
JP2011065565A (ja) * | 2009-09-18 | 2011-03-31 | Toshiba Corp | キャッシュシステム及びマルチプロセッサシステム |
GB2551574B (en) | 2016-06-24 | 2019-11-27 | Advanced Risc Mach Ltd | An apparatus and method for generating and processing a trace stream indicative of instruction execution by processing circuitry |
CN112905237A (zh) | 2019-12-04 | 2021-06-04 | 北京百度网讯科技有限公司 | 指令预取方法、装置、设备和介质 |
Citations (1)
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 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3570006A (en) * | 1968-01-02 | 1971-03-09 | Honeywell Inc | Multiple branch technique |
JPS6051948A (ja) * | 1983-08-31 | 1985-03-23 | Hitachi Ltd | 情報処理装置 |
US4991080A (en) * | 1986-03-13 | 1991-02-05 | International Business Machines Corporation | Pipeline processing apparatus for executing instructions in three streams, including branch stream pre-execution processor for pre-executing conditional branch instructions |
US5317703A (en) * | 1990-06-29 | 1994-05-31 | Hitachi, Ltd. | Information processing apparatus using an advanced pipeline control method |
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 |
-
1994
- 1994-09-28 US US08/313,980 patent/US5664135A/en not_active Expired - Lifetime
-
1995
- 1995-07-24 JP JP7186897A patent/JPH08106386A/ja active Pending
- 1995-07-24 DE DE19527031A patent/DE19527031C2/de not_active Expired - Fee Related
- 1995-08-23 GB GB9517268A patent/GB2293671A/en not_active Withdrawn
Patent Citations (1)
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 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19928260A1 (de) * | 1999-06-21 | 2000-08-31 | Siemens Ag | Schaltungsanordnung zur Steuerung von Programmverzweigungen in einem Prozessor |
Also Published As
Publication number | Publication date |
---|---|
JPH08106386A (ja) | 1996-04-23 |
DE19527031A1 (de) | 1996-04-04 |
GB9517268D0 (en) | 1995-10-25 |
US5664135A (en) | 1997-09-02 |
GB2293671A (en) | 1996-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19527031C2 (de) | Verzweigungsprozessor für ein Datenverarbeitungssystem und Verfahren zum Betreiben eines Datenverarbeitungssystems | |
DE3116100C2 (de) | Datenverarbeitungseinheit | |
DE3751474T2 (de) | Verzweigungsstrom-Koprozessor. | |
DE69929936T2 (de) | Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem | |
DE3210816C2 (de) | ||
DE3752100T2 (de) | Befehlsvorabrufgerät mit einer Schaltung zum Prüfen der Vorhersage eines Verzweigungsbefehls vor seiner Ausführung | |
DE69534113T2 (de) | Kompression der Befehlswörter eines Rechners | |
DE69031991T2 (de) | Verfahren und Gerät zur Beschleunigung von Verzweigungsbefehlen | |
EP0689694B1 (de) | Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren | |
DE69816044T2 (de) | Zeitstrafen-basierende cache-speicherungs- und ersetzungs-techniken | |
DE4206062C2 (de) | Pipelineverarbeitung von Instruktionen | |
DE68921906T2 (de) | Verfahren für ein Multiprozessorsystem mit sich selbst zuordnenden Prozessoren. | |
DE68927492T2 (de) | Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten | |
DE3750935T2 (de) | Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner. | |
DE4222776C2 (de) | Parallelverarbeitungseinheit und Verfahren zum Ausführen von Befehlen | |
DE69030931T2 (de) | Mehrfachsequenzprozessorsystem | |
DE68927029T2 (de) | Pipelineprozessor | |
DE4345028A1 (de) | Vorrichtung zur Reduzierung von Verzögerungen aufgrund von Verzweigungen | |
DE19855806A1 (de) | Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen | |
DE69133571T2 (de) | Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen | |
DE4211245B4 (de) | Prozessorsystem in Parallelverarbeitungsbauart und Verfahren zu dessen Steuerung | |
DE68925397T2 (de) | Pipelineprozessor | |
DE68924719T2 (de) | Vorrichtung und Verfahren zur Ausführung eines Unterprogramms in einem Datenverarbeitungssystem mit Blockumschaltung. | |
DE3854142T2 (de) | Vektorrechner. | |
DE19824289C2 (de) | Pipelineverarbeitungsmaschine |
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 |