DE19855806A1 - Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen - Google Patents
Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und RücksprungoperationenInfo
- Publication number
- DE19855806A1 DE19855806A1 DE19855806A DE19855806A DE19855806A1 DE 19855806 A1 DE19855806 A1 DE 19855806A1 DE 19855806 A DE19855806 A DE 19855806A DE 19855806 A DE19855806 A DE 19855806A DE 19855806 A1 DE19855806 A1 DE 19855806A1
- Authority
- DE
- Germany
- Prior art keywords
- return
- address
- instruction
- branch
- command
- 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
- 238000000034 method Methods 0.000 claims abstract description 23
- 230000015654 memory Effects 0.000 claims abstract description 17
- 238000011156 evaluation Methods 0.000 claims abstract description 11
- 239000000872 buffer Substances 0.000 claims description 42
- 230000004044 response Effects 0.000 claims description 10
- 230000007246 mechanism Effects 0.000 claims description 8
- 238000012545 processing Methods 0.000 claims description 5
- 239000003795 chemical substances by application Substances 0.000 claims 1
- 230000001143 conditioned effect Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000001356 surgical procedure Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001960 triggered effect 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 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
- G06F9/4486—Formation of subprogram jump address
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
Die Erfindung bezieht sich auf eine Vorrichtung und ein
Verfahren zum Durchführen von Unterprogrammaufruf- und
Rücksprungoperationen in einem Computer, der einen Prozessor mit
einem Mechanismus zum Vorabauslesen von Befehlen aufweist, der
eine Tabelle mit Verzweigungsprotokollen einschließt zum
Speichern von Zieladressen einer Vielzahl von
Verzweigungsbefehlen, die in einem Befehlsstrom festgestellt
werden.
Programmierer benutzen sehr oft Unterprogramme, um ihre
Programme zu strukturieren und um das mehrmalige Schreiben sich
wiederholender Aufträge zu vermeiden. Ein Unterprogramm wird von
dem Hauptprogramm durch einen Aufrufbefehl aufgerufen und endet
mit einem Sprungbefehl, der die Steuerung zu dem Befehl in dem
Hauptprogramm zurückbringt, der unmittelbar auf den Aufrufbefehl
folgt. Da das gleiche Unterprogramm oft von verschiedenen
Stellen in dem Programm aufgerufen wird, weist der
Rücksprungbefehl verschiedene Stellen auf, zu denen er
zurückspringen muß, abhängig davon, von wo das Unterprogramm
aufgerufen wurde. Ein Rücksprungbefehl ist grundsätzlich ein
Verzweigungsbefehl, der in diesem Fall verschiedene Ziele
aufweist. Wenn die Verzweigung vorhergesagt werden muß, ist es
nicht die vorgenommene oder nicht vorgenommene vorhersage, die
relevant ist, sondern die Bestimmung der richtigen Zieladresse
für die zeitkritische Benutzung zur Ausführungszeit. Bei einer
Architektur mit einem Befehlssatz mit dedizierten Aufruf- und
Rücksprungbefehlen wird ein Rücksprungpuffer benutzt, um die
Zieladresse des Rücksprungbefehls vorherzusagen. Bei
Architekturen mit anderen Befehlssätzen, die keine dedizierten
Aufruf- und Rücksprungbefehle benutzen, ist zusätzliche Hardware
erforderlich, um die Rücksprung-Zieladresse vorherzusagen.
Webb, "Subroutine Call/Return Stack", IBM Technical Disclosure
Bulletin, Vol. 30, Nr. 11, April 1988, Seiten 221-225, offenbart
die Anordnung von zwei Puffern, von denen einer für die
Zieladresse eines Aufrufbefehls benutzt wird und der andere für
den nächsten sequentiellen Befehl des gleichen Aufrufbefehls.
Immer, wenn eine Verzweigung in dem Befehlsstrom vorgefunden
wird, die ein potentieller Aufruf ist, werden ihre Zieladresse
und die nächste sequentielle Adresse in die Puffer
eingeschrieben. Wenn ein potentieller Rücksprungbefehl in dem
Befehlsstrom angetroffen wird, wird seine Zieladresse mit allen
Adressen verglichen, die in dem Puffer für die nächsten
sequentiellen Befehle gespeichert sind, und wenn ein Eintrag
gefunden wird, der eine gleiche Adresse aufweist, wird die
potentielle Rücksprungadresse ein identifizierter Rücksprung
durch Schreiben eines Rücksprung-Markierbits in den
entsprechenden Eintrag der Tabelle für Verzweigungsprotokolle,
abgekürzt als (TVP). Zusätzlich wird die Zieladresse des Aufrufs
auch in diesem Eintrag der TVP gespeichert. Das nächste Mal,
wenn ein Suchen in der TVP vorgenommen wird, um die
Rücksprungadresse zu erhalten, wird die Zieladresse nicht direkt
der TVP entnommen, sondern statt dessen wird die Adresse der TVP
benutzt, um den Zielteil des Aufruf-/Rücksprungpuffers zu
durchsuchen. Wenn eine Übereinstimmung gefunden wird, wird der
Eintrag des entsprechenden Puffers für den nächsten
sequentiellen Befehl als die Zieladresse des Rücksprungs
genommen. Die Operation erfordert zumindest zwei Zyklen, um die
Zieladresse für einen Rücksprung zu definieren, wobei einer der
Zyklen ein assoziatives Suchen in dem Puffer einschließt.
Darüberhinaus offenbart das US-Patent 5 276 882 (Emma et al.)
einen Rücksprung von einem Unterprogramm mittels einer Tabelle
für Verzweigungsprotokolle, die zwei zusätzliche Felder
einschließt, die aus einem Aufruffeld bestehen, um anzuzeigen,
daß der Verzweigungseintrag einer Verzweigung entspricht, die
den Aufruf eines Unterprogramms implementieren kann, und einem
Pseudofeld, das Verbindungsinformationen repräsentiert und eine
Verbindung zwischen einem Eingang eines Unterprogramms und dem
Rücksprung aus einem Unterprogramm einschließt. Wenn die
Zieladresse eines potentiellen Rücksprungs zu der TVP geschickt
wird und ein Aufrufbefehl gefunden wird, der unmittelbar dieser
Adresse voraufgeht, wird ein Pseudo-Aufruf-/Rücksprungpaar
erstellt durch Speichern eines Pseudo-Eintrags an der
Zieladresse des Aufrufbefehls, welche der Beginn des
Unterprogramms ist. Der Pseudo-Eintrag enthält die Adresse des
Rücksprungbefehls als seine Zieladresse. Wenn das Unterprogramm
aufgerufen wird, wird nach dem TVP-Eintrag gesucht und der
Pseudo-Eintrag wird gefunden. Das Erkennen eines solchen
Eintrages ruft einen Aktualisierungsprozeß auf, der die
Zieladresse des Rücksprungbefehls in die nächste sequentielle
Adresse des Aufrufs ändert. Wenn jetzt zur Ausführungszeit ein
Suchen in der TVP nach der Rücksprungadresse durchgeführt wird,
wird das richtige Ziel gefunden.
Die Stelle des Pseudo-Eintrags an der Startadresse des
Unterprogramms begrenzt diese Lösung für den Rücksprung vom
Unterprogramm auf Unterprogramme mit einem einzigen Ausgang. Der
Pseudo-Eintrag erfordert auch zusätzlichen Raum in der TVP.
Darüberhinaus ist die Blockstruktur der TVP derart, daß es nicht
immer möglich ist, den voraufgehenden Aufrufbefehl zu finden.
Die Erfindung, wie sie in den Ansprüchen definiert ist, bezieht
sich auf eine Vorrichtung und ein Verfahren zum Durchführen von
Unterprogrammaufruf- und Rücksprungoperationen in einem
Computer, der einen Prozessor aufweist mit einem Mechanismus zum
Vorabauslesen von Befehlen, der eine Tabelle der
Verzweigungsprotokolle einschließt zum Speichern von
Zieladressen einer Vielzahl von Verzweigungsbefehlen, die in
einem Befehlsstrom festgestellt werden. Es ist eine Aufgabe der
Erfindung, die Verarbeitungszeit für das Definieren der
Zieladresse eines Unterprogramm-Rücksprungbefehls zu verringern.
Gemäß der Erfindung enthält die Tabelle der Verzweigungsproto
kolle Informationen zur Art der Verzweigung für jeden
Verzweigungsbefehl einschließlich eines Kennzeichens eines
potentiellen Aufrufbefehls und eines Kennzeichens eines
Rücksprungbefehls. Für jeden potentiellen Aufrufbefehl eines
Unterprogramms, der in dem vorab ausgelesenen Befehlsstrom
festgestellt wird, wird ein Adressenpaar, das die Aufruf-
Zieladresse und die Adresse des nächsten sequentiellen Befehls
des identifizierten Befehls enthält, in einem Puffer einer
Rücksprung-Identifizierungseinheit gespeichert. Als Antwort auf
jeden potentiellen Rücksprungbefehl, der nachfolgend in dem
vorab ausgelesenen Befehlsstrom festgestellt wird, wird eine
assoziative Suche nach dem Teil für den nächsten sequentiellen
Befehl in dem Puffer durchgeführt, wo eine Übereinstimmung den
Befehl als einen Rücksprung identifiziert. Das in dem
übereinstimmenden Eintrag enthaltene Adressenpaar wird zu einem
Rücksprung-Cache übertragen, der parallel zu der Tabelle für die
Verzweigungsprotokolle angeordnet ist.
Auf die Tabelle der Verzweigungsprotokolle und den Rücksprung-
Cache wird gleichzeitig zugegriffen mit der Adresse jedes vorab
ausgelesenen Befehls zum Identifzieren des Befehls als einer
Verzweigung und für das zusätzliche Identifizieren des Befehls
als eines Rücksprungs durch Benutzen der Informationen über die
Art der Verzweigung, die in der Tabelle der
Verzweigungsprotokolle gespeichert sind. Wenn der Befehl ein
Rücksprung ist, wird die Adresse des nächsten sequentiellen
Befehls dem Rücksprung-Cache als Rücksprungadresse entnommen
anstelle der Zieladresse aus der Tabelle der
Verzweigungsprotokolle.
Eine Aktualisierung des Rücksprung-Caches wird als Antwort auf
einen Verzweigungsbefehl in dem Befehlsstrom durchgeführt durch
ein Durchsuchen des Rücksprung-Caches nach einem Eintrag, der
eine entsprechende Zieladresse aufweist, und durch Ersetzen der
Adresse des nächsten sequentiellen Befehls in dem Eintrag durch
die nächste sequentielle des genannten Verzweigungsbefehls.
Die Erfindung gestattet einen Zugriff auf die richtige
Zieladresse eines identifizierten Rücksprungbefehls eines
Unterprogramms in nur einem Operationszyklus. Die Vorrichtung
und das Verfahren gemäß der Erfindung sind in der Lage,
mehrfache Rücksprünge von einem Unterprogramm ohne Ausdehnen der
Operationszeit über eine Abfrage in der TVP pro Rücksprungbefehl
hinaus zu verarbeiten. Darüberhinaus vermeidet es die Erfindung,
die Eintragsbreite der Tabelle für Verzweigungsprotokolle durch
zusätzliche Adressfelder auszudehnen, um die Aufruf-/Rück
sprungpaare zu identifizieren.
Ein bevorzugtes Ausführungsbeispiel der Erfindung wird
nachfolgend unter Bezugnahme auf die zugehörigen Zeichnungen
beschrieben, von denen zeigt:
Fig. 1 ein allgemeines Blockschaltbild eines
Ausführungsbeispiels der Erfindung;
Fig. 2 eine schematische Darstellung einer Befehlsfolge mit
wiederholter Benutzung eines Unterprogramms;
Fig. 3 eine schematische Darstellung eines Unterprogramms,
das mehrere Ausgänge aufweist, die gemäß der Erfindung
verarbeitet werden;
Fig. 4 den Aufbau eines Speichers, der ein Unterprogramm der
in Fig. 3 dargestellten Art einschließt;
Fig. 5 ein genaueres Blockschaltbild des Ausführungsbeispiels
der Erfindung gemäß Fig. 1;
Fig. 6 ein Blockdiagramm einer Tabelle der
Verzweigungsprotokolle wie sie bei dem
Ausführungsbeispiel der Erfindung gemäß Fig. 5
benutzt wird;
Fig. 7 das Blockschaltbild einer Erweiterung des
Ausführungsbeispiels der Erfindung gemäß Fig. 5;
Fig. 8 ein Blockschaltbild eines modifizierten Rücksprung-
Puffers, wie er in dem Ausführungsbeispiel nach
Fig. 7 benutzt wird; und
Fig. 9 ein Blockschaltbild eines modifizierten Rücksprung-
Caches, wie er in dem Ausführungsbeispiel nach Fig. 7
benutzt wird.
Die in Fig. 1 dargestellte Vorrichtung ist Teil eines
Computers, der einen Prozessor einschließt, der eine
Befehlsausführungseinheit und ein Speichersystem umfaßt, das aus
einer Hierarchie von Speichern einschließlich eines
Hauptspeichers und eines Caches besteht. Der Prozessor ist mit
einem Mechanismus zum Vorabauslesen von Befehlen ausgerüstet,
der Zugriffsoperationen auf Befehle in dem Cache oder in dem
Hauptspeicher ausführt und einen vorab ausgelesenen Befehlsstrom
erzeugt. Die Befehlsausführungseinheit ist nach dem Pipeline-
Konzept für gleichzeitiges Verarbeiten einer Vielzahl von
Befehlen ausgelegt. Eine Computerarchitektur, die einen
Mechanismus zum Vorabauslesen und eine nachdem Pipeline-
Verfahren arbeitende Befehlsausführungseinheit benutzt, ist gut
bekannt und daher hier nicht erklärt.
Die Befehlsfolgen, die durch solch einen Prozessor verarbeitet
werden, können verschiedene Arten von bedingten und unbedingten
Verzweigungsbefehlen enthalten, die auch Aufrufe von
Unterprogrammen und Rücksprünge aus Unterprogrammen durchführen.
Solche Arten von Verzweigungsbefehlen sind nicht ausschließlich
Aufrufen von und Rücksprüngen aus Unterprogrammen gewidmet,
müssen aber als solche durch ihr Aussehen und ihre Funktion
innerhalb der Befehlsfolge identifiziert werden. Beispiele von
Verzweigungen, die Aufrufe von Unterprogrammen durchführen, sind
VUV (Verzweige und Verkette) und VUVR (Verzweige und
Verkette Register).
Die in Fig. 1 dargestellte Vorrichtung identifiziert
Unterprogrammaufruf- und Rücksprungbefehle in dem vorab
ausgelesenen Befehlsstrom und führt die erforderliche
Adreßverarbeitung der identifizierten Unterprogrammaufruf- und
Rücksprungbefehle in der Vorabauslesephase durch, um für eine
schnelle Zugreifbarkeit auf variable Rücksprungadressen des
Unterprogramms zu sorgen.
Die Fig. 2 zeigt eine typische Programmstruktur, die die
Befehlsfolgen 11, 11' und ein Unterprogramm 12 einschließt, das
verschiedene Male während der Ausführung eines Programms an der
gleichen oder an verschiedenen Stellen des Programms benutzt
wird. Das Unterprogramm 12 besitzt einen Startbefehl B und einen
Rücksprungbefehl C. Der Befehl A der Folge 11 ist ein Befehl von
der Art Verzweige und Verkette, der einen Aufruf des
Startbefehls B durchführt. Der Befehl C ist ein normaler
Verzweigungsbefehl und führt einen Rücksprung zurück zu dem
nächsten Befehl in der Folge 11 durch, der der Befehl D ist.
Entsprechend ist der Befehl A' einer zweiten Befehlsfolge 11'
auch ein Befehl von der Art Verzweige und Verkette, der einen
Aufruf des Startbefehls B durchführt. In diesem Fall ist die
Rücksprungadresse des Befehls C verschieden von der
Rücksprungadresse von C, die vorher benutzt wurde, da der Befehl
C einen Rücksprung zurück zu dem Befehl D' der Folge 11'
durchführen muß. Daher muß die Adresse von C modifiziert werden,
wenn ein Aufruf von der zweiten Befehlsfolge 11' vorliegt.
Fig. 3 zeigt ein Beispiel des Unterprogramms 12, das mehr als
einen Rücksprungbefehl enthält, was die Behandlung der
Rücksprungadresse weiter kompliziert. Die Verzweigungsbefehle
16, 17 wählen verschiedene Teile des Unterprogramxis 12 aus,
wobei jeder Teil seinen eigenen Rücksprungbefehl C1, C2 oder C3
aufweist, der die Steuerung zum nächsten Befehl der Folge
zurückbringt, von der der Startbefehl B aufgerufen wurde. Daher
müssen Modifikationen der Rücksprungadresse für jede der
verschiedenen Rücksprungbefehle C1, C2, C3 durchgeführt werden.
Fig. 4 zeigt einen Speicheraufbau für das Unterprogramm gemäß
Fig. 3, das mehrfache Rücksprünge aufweist.
Es wird wieder auf Fig. 1 Bezug genommen. Die darin gezeigte
Vorrichtung führt die Behandlung der Rücksprungadresse gemäß den
Fig. 2-4 in einer Weise durch, daß nur ein Maschinenzyklus
erforderlich ist, um die richtige Rücksprungadresse zu erhalten.
Eine Einheit 20 zur Verzweigungsbewertung, die Teil der (nicht
dargestellten) Ausführungseinheit ist, bestimmt, ob eine
Verzweigung vorgenommen wurde und untersucht die
Verzweigungsparameter. Die Einheit 20 zur Verzweigungsbewertung
ist mit einer Tabelle 22 der Verzweigungsprotokolle verbunden,
hierin auch mit TVP bezeichnet, die Informationen über
Verzweigungsbefehle enthält, die unlängst über einen bestimmten
Zeitraum ausgeführt wurden. Die TVP wird durch die Einheit 20
zur Verzweigungsbewertung adressiert und empfängt von der
Verzweigungsbewertung 20 Informationen über die Verzweigungsart.
Die gleichen Informationen werden einer Einheit 24 zur
Rücksprung-Identifikation übergeben, die für jeden potentiellen
Aufrufbefehl die Aufruf-Zieladresse (AZA) und die Adresse des
nächsten sequentiellen Befehls (NSB) speichert. Das AZA-NSB-Adressen
paar des potentiellen Aufrufs wird benutzt, um einen
nachfolgenden Verzweigungsbefehl als Rücksprungadresse eines
Unterprogramms zu identifizieren. Die Einheit 24 zur
Identifikation des Rücksprungs erzeugt ein Rücksprung-
Identifikationssignal, das als ein Rücksprung-Kennzeichen in dem
entsprechenden Eintrag der TVP gespeichert wird. Gleichzeitig
wird das identifizierte AZA-NSB-Adressenpaar zu einem
Rücksprung-Cache 26 übertragen, der Parallel zu der TVP im
Hinblick auf ein Vorabauslese-Befehlsregister 28 angeordnet ist.
Wenn eine Vorab-Ausleseoperation eines Befehls stattfindet,
bestimmt ein Selektor 30 die nächste vorab auszulesende Adresse,
die eine Verzweigungs-Zieladresse aus der TVP oder die
NSB-Adresse aus dem Cache 26 für den Verzweigungsrücksprung sein
kann. Die letztere Adresse wird ausgewählt, wenn in der TVP der
Eintrag, der durch das Befehlsadreßregister 28 adressiert wird,
ein Rücksprung-Kennzeichen angibt, sonst wird die Verzweigungs-
Zieladresse aus der TVP ausgewählt. Wenn es für die gleiche
Adresse weder einen Eintrag in der TVP noch in dem Rücksprung-
Cache 26 gibt, wird der Inhalt des Befehlsadreßregisters 28 um
die Befehlslänge erhöht und dann als nächste Adresse für das
Vorabauslesen benutzt. Eine Aktualisierungsoperation für die
NSB-Einträge des Rücksprung-Caches 26 wird durch eine
Aktualisierungsschaltung 32 durchgeführt. Diese Operation
aktualisiert eine nächste sequentielle Adresse NSB eines
Rücksprungbefehls, der bereits in dem Rücksprung-Cache 22
enthalten ist. Immer, wenn ein potentieller Aufruf in dem
Befehlsstrom gefunden wird, werden sein Aufrufziel und seine
nächste sequentielle Adresse zu dem Rücksprung-Cache 26
weitergeleitet, um die entsprechenden Einträge darin zu
modifizieren. Hiermit wird ein Umadressieren eines
Rücksprungeintrages in dem Cache 26 zu dem gültigen NSB
durchgeführt, wenn das gleiche Unterprogramm durch verschiedene
Aufrufbefehle, wie z. B. den Befehl A' der Fig. 2, aufgerufen
wird.
Anschließend wird das Ausführungsbeispiel gemäß Fig. 1 genauer
beschrieben unter Bezugnahme auf die Fig. 5 und 6. Die
Einträge in der Tabelle 22 der Verzweigungsprotokolle haben ein
Format wie das in Fig. 6 angegebene. Jeder Eintrag ist einem
Verzweigungsbefehl zugeordnet, der durch die Verzweigungsbewer
tungseinheit 20 angegeben ist, und umfaßt ein Gültigkeits-
Kennzeichen 33, ein Adreß-Kennzeichen 34, ein Adreßfeld 35 für
das Verzweigungsziel und ein Feld 36 mit Informationen über
Verzweigungsprotokolle. Jeder Eintrag der TVP umfaßt 3
zusätzliche Felder, die ein Kennzeichenfeld 37 für einen
potentiellen Aufruf, ein Befehlslängenfeld 38 und ein Feld 39
für ein Rücksprung-Kennzeichen sind. Die Tabelle 22 der
Verzweigungsprotokolle ist blockweise organisiert, wobei auf
jeden Block durch eine externe Adresse zugegriffen wird, während
das Adressieren innerhalb eines Blockes durch internes
Adressieren mit einem Teil der Befehlsadresse aus dem
Befehlsadreßregister 28 durchgeführt wird. Dieser Adreßteil wird
an das Adreß-Kennzeichenfeld 34 angelegt, das als ein
assoziatives Adreßfeld benutzt wird. Das Feld 35 empfängt die
Zieladresse eines Verzweigungsbefehls. Zu diesem Zweck
adresssiert die Verzweigungsbewertungseinheit 20 über
Selbsthalteschaltungen 41 und Leitungen 42 die Tabelle der
Verzweigungsprotokolle mit der Befehlsadresse eines
Verzweigungsbefehls, die durch die Einheit 20 verarbeitet wird.
Die Zieladresse dieses Verzweigungsbefehls wird über
Selbsthalteschaltungen 43 und Leitungen 44 in das Feld 35 des
adressierten Eintrages geladen und sein Gültigkeits-Kennzeichen
V wird von null auf eins gesetzt. Die Informationen der
Verzweigungsprotokolle im Feld 36 werden bei jedem Auftreten
einer Verzweigung aktualisiert, aber hier nicht dargestellt.
Darüberhinaus werden die Informationen über die Verzweigungsart
mittels Selbsthalteschaltungen 45 und Leitungen 46 in die Felder
37 und 39 des adressierten Eintrages geladen.
Während der Ladeoperation der Tabelle 22 der
Verzweigungsprotokolle wird zwischen 3 Arten von Verzweigungen
unterschieden: potentiellen Aufrufbefehlen, abhängig von
Informationen über die Art der Verzweigung, identifizierten
Rücksprungbefehlen und normalen Verzweigungen. Wenn die TVP mit
einem neuen Eintrag geladen wird, muß der Eintrag einer dieser
drei Verzweigungsarten zugeordnet werden. Wenn der Ladebefehl
ein potentieller Aufruf ist, wird das Kennzeichenfeld 37 für
einen potentiellen Aufruf des entsprechenden Eintrags auf "eins"
gesetzt und die Länge des Befehls, die 2, 4 oder 6 Bytes
betragen kann, wird in das Feld 38 dieses Eintrags
eingeschrieben. Wenn die Identifikationseinheit 24 bestimmt hat,
daß der Ladebefehl ein Rücksprungbefehl ist, wird das Feld 39
für das Rücksprung-Kennzeichen des entsprechenden Eintrags auf
"eins" gesetzt und das Kennzeichenfeld 37 für einen potentiellen
Aufruf des entsprechenden Eintrags wird auf "null" gesetzt. Wenn
der Ladebefehl weder ein potentieller Aufruf noch ein Rücksprung
ist, werden beide Felder 37 und 39 auf "null" gesetzt, was eine
normale Verzweigung anzeigt.
Die Verzweigungs-Bewertungseinheit 20 liefert die Befehlsadresse
und die Aufruf-Zieladresse auch zu einem Puffer 50 für die
Rücksprung-Identifikation, der Teil der Rücksprung-Identi
fizierungseinheit 42 der Fig. 1 ist. Jeder Eintrag des
Puffers 50 für die Rücksprung-Identifikation umfaßt ein Paar von
Feldern 51, 52, von denen das Feld 51 die Adresse eines nächsten
Befehls NSB enthält und das Feld 52 eine damit in Beziehung
stehende Adresse des Aufrufziels. Der Puffer 50 zur Rücksprung-
Identifikation wird als eine kreisförmige Warteschlange von
Registern betrieben. Wenn sie gefüllt ist, überschreibt der
neueste Eintrag den ältesten. Außerdem kann auf die Einträge des
Pufferspeichers 50 zur Rücksprung-Identifikation durch
assoziatives Adressieren der NSB-Felder 51 mit einer
Verzweigungs-Zieladresse der Einheit 20 zugegriffen werden. Für
jeden Potentiellen Aufrufbefehl, der in dem Befehlsstrom
gefunden und durch die Einheit 20 verarbeitet wird, wird ein
Eintrag in den Puffer 50 zur Rücksprung-Identifikation durch ein
Lade-Steuersignal auf der Leitung 55 erzeugt, das durch einen
Decodierer 54 erzeugt wird, der über die Leitungen 56
Informationen über die Verzweigungsart von der Einheit 20
empfängt. Dieser Eintrag wird mit der NSB-Adresse und der
Zieladresse des Befehls für einen potentiellen Aufruf geladen.
Die NSB-Adresse wird von der Adresse des Verzeigungsbefehls
durch Erhöhen um die Befehlslänge abgeleitet. Das Erhöhen wird
durch einen Addierer 58 durchgeführt, der als ersten operanden
die Befehlsadresse von der Einheit 20 empfängt und als einen
zweiten Operanden einen Wert, der die Länge des Befehls in Form
von Bytes darstellt. Der Addierer 58 wird durch ein Addier-
Steuersignal auf Leitungen 59 des Decodierers 54 betrieben. Die
Aufruf-Zieladresse, wie sie von der Einheit 20 geliefert wird,
wird über Leitungen 60 in das Feld 52 des erzeugten Eintrags in
den Puffer 50 zur Rücksprung-Identifikation geladen.
Für jeden Potentiellen Rücksprungbefehl, der unlängst in dem
Befehlsstrom festgestellt wurde, wird eine assoziative Suche
nach dem NSB-Teil des Puffers 50 zur Rücksprung-Identifikation
durchgeführt. Die Suche wird durch ein Such-Steuersignal
eingeleitet, das von dem Decodierer 54 auf der Leitung 62
erzeugt wird. Die Suche wird begonnen bei dem jüngsten Eintrag
in Richtung auf die älteren Einträge und vergleicht die
Zieladresse eines potentiellen Rücksprungbefehls mit allen
NSB-Adressen, die in dem Puffer 50 gespeichert sind. Wenn keine
Übereinstimmung gefunden wird, wird der Verzweigungsbefehl als
kein Rücksprung klassifiziert, und der Zielbefehl des
Verzweigungsbefehls wird in die TVP eingetragen, ohne das
Rücksprung-Kennzeichen im Feld 39 zu setzen. Wenn eine
Übereinstimmung auftritt, wird der in die TVP einzutragende
Befehl als ein Rücksprung markiert. Ein Übereinstimmungsanzeige-Signal,
das durch den übereinstimmenden Eintrag in dem Puffer 50
erzeugt wird, wird über die Selbsthalteschaltung 64 und die
Leitung 65 als Teil der Informationen über die Verzweigungsart
zu der TVP geschickt, um das Feld 39 für das Rücksprung-
Kennzeichen auf "eins" zu setzen und das Feld 37 auf "null",
während die Zieladresse des Befehls, der als ein Rücksprung
identifiziert wurde, in das Feld 35 des adressierten Eintrags in
der TVP eingetragen wird.
Darüberhinaus wird das Übereinstimmungsanzeige-Signal an die
Leitung 66 als ein Lade-Steuersignal für den Rücksprung-Cache
angelegt, um die Übertragung des Adresspaares, das in dem
übereinstimmenden Eintrag des Puffers 50 enthalten ist, über die
Leitungen 67, 68 in den Rücksprung-Cache einzuleiten. Der
Rücksprung-Cache 26 ist ein Satz assoziativer Pufferspeicher,
bei denen jeder Eintrag ein Feld 71 für ein Gültigkeits-
Kennzeichen, ein Kennzeichenfeld 72, das für assoziatives
Adressieren benutzt wird, ein Feld 74 für eine Aufruf-
Zieladresse und ein Feld 73 für die nächste sequentielle Adresse
umfaßt. Das Adresspaar des Puffers 50 wird in den Feldern 73 und
74 eines Eintrages gespeichert, der durch die Adresse des
identifizierten Rücksprungbefehls auf den Leitungen 69
adressiert wird. Ein Teil dieser Adresse wird in das
Kennzeichenfeld 72 des adressierten Eintrags geladen, um für das
assoziative Adressieren benutzt zu werden, wenn auf den
Rücksprung-Cache 26 zugegriffen wird.
In dem Fall, daß ein Unterprogramm mehr als einen Rücksprung
enthält, wie das in den Fig. 3 und 4 dargestellt ist, werden
die Schritte des Identifizierens eines Verzweigungsbefehls als
Rücksprungbefehl und des Übertragens des entsprechenden
Adresspaares NSB/Aufrufziel zu dem Rücksprung-Cache 26 für jeden
Rücksprungbefehl wiederholt, der in dem Unterprogramm enthalten
ist. Daher kann der Rücksprung-Cache mehr als einen Eintrag
enthalten, der das gleiche NSB/Aufrufziel-Adressenpaar enthält.
Für jeden Befehl, der aus dem Hauptspeicher und/oder Cache
ausgelesen wird, wird die Tabelle 22 der Verzweigungsprotokolle
durchsucht, um zu bestimmen, ob dieser Befehl eine Verzweigung
ist und, falls er das ist, welches seine Zieladresse ist und
welches der Inhalt seines Rücksprung-Kennzeichens ist. Die
TVP-Suchoperation wird mit der Instruktionsadresse durchgeführt, die
in dem Register 28 (Fig. 1) enthalten ist, die über Leitungen
76 parallel an die TVP und an den Rücksprung-Cache angelegt
wird. Das Adressieren der TVP findet in einem gemischten
Adressiermodus statt. Ein Teil der Adresse des Adressregisters
28 wird für das Adressieren eines Blocks der TVP benutzt,
während ein andrer Teil als eine assoziative Adresse benutzt
wird, die an die Kennzeichenfelder 34 des adressierten Blockes
angelegt wird. In dieser Weise wird ein Zugriff auf die TVP in
einem Zyklus durchgeführt, und dadurch wird auch auf die anderen
Felder einschließlich des Rücksprung-Kennzeichenfeldes 39 eines
übereinstimmenden Eintrags zugegriffen. Gleichzeitig mit dem
Durchsuchen der TVP und innerhalb des gleichen Maschinenzyklus
wird auf den Rücksprung-Cache 26 zugegriffen durch Benutzen
eines Teiles der gleichen Befehlsadresse aus dem Register 28 als
eine assoziative Adresse, die an die Kennzeichenfelder 72 all
der Einträge eines Blockes von Speicherstellen in dem
Rücksprung-Cache 26 angelegt wird, welcher Block durch einen
anderen Teil der gleichen Adresse aus dem Register 28 adressiert
wird. Wenn das Durchsuchen der TVP einen übereinstimmenden
Eintrag ergibt und dieser Eintrag ein Rücksprung-Kennzeichen
aufweist, das auf "eins" gesetzt ist, und wenn gleichzeitig der
Rücksprung-Cache einen übereinstimmenden Eintrag zeigt, wird die
nächste sequentielle Adresse NSB aus dem Feld 73 des
übereinstimmenden Eintrags in dem Rücksprung-Cache 26
ausgewählt, um als die nächste Adresse für das Vorabauslesen
benutzt zu werden. Die Adressenauswahl wird durch den Selektor
30 (Fig. 1) durchgeführt, der die Multiplexer 78, 79, einen
Addierer 80 und ein UND-Glied 81 umfaßt. Der Multiplexer 78
empfängt auf ersten Eingangsleitungen 84 die Verzweigungs-
Zieladresse von dem übereinstimmenden Eintrag der TVP und auf
zweiten Eingangsleitungen 87 die nächste sequentielle Adresse
von dem übereinstimmenden Eintrag des Rücksprung-Caches 26. Wenn
ein Steuersignal des UND-Gliedes 81 "null" ist, wird der erste
Eingang des Multiplexers 78 zu dem Multiplexer 79
durchgeschaltet. Das UND-Glied 81 empfängt von der TVP über die
Leitung 85 das Rücksprung-Kennzeichen "eins" des
übereinstimmenden TVP-Eintrags und von dem Rücksprung-Cache 26
über die Leitung 86 das Gültigkeits-Kennzeichen V des
übereinstimmenden Eintrags, und es erzeugt ein Steuersignal
"eins", das den Multiplexer 78 konditioniert, um die nächste
Befehlsadresse des übereinstimmenden Eintrags des Rücksprung-
Caches 26 anstelle der Verzweigungs-Zieladresse der TVP zu dem
Multiplexer 79 zu übertragen. Der Multiplexer 79 überträgt, wenn
er durch ein Steuersignal auf der Leitung 88 von dem Feld 33 für
das Gültigkeits-Kennzeichen des übereinstimmenden Eintrags in
der TVP konditioniert wird, das Eingangssignal des Multiplexers
78 zu den Ausgangsleitungen 89, damit es als nächste vorab
auszulesende Adresse benutzt wird. Der Addierer 80 wird intern
gesteuert, um die Befehlsadresse auf der Leitung 76 um den Wert
einer Befehlslänge zu erhöhen. Wenn kein übereinstimmender
Eintrag in der TVP gefunden wird, was durch ein "Null"-Signal
auf Leitung 88 angezeigt wird, wird der Multiplexer
konditioniert, um das Ausgangssignal des Addierers 80 zu den
Ausgangsleitungen 89 zu übertragen, um als nächste vorab
auszulesende Adresse benutzt zu werden.
Die nächste sequentielle Adresse eines Eintrags in dem
Rücksprung-Cache 26 muß aktualisiert werden, wenn das damit in
Beziehung stehende Unterprogramm erneut aufgerufen wird. Dieses
Aktualisieren wird durch eine Aktualisierungsprozedur des
Rücksprung-Caches ausgeführt, die in der Schaltung 32 (Fig. 1)
implementiert ist, die die Multiplexer 91 und 92, einen
Decodierer 93 und einen Addierer 94 umfaßt. Die Multiplexer 91,
92 werden durch den Decodierer 93 entsprechend der Art der
Operation der Tabelle 22 der Verzweigungsprotokolle gesteuert.
Wenn auf die TVP durch eine vorab ausgelesene Adresse auf der
Leitung 76 zugegriffen wird und ein übereinstimmender Eintrag
gefunden wird, der in seinem Feld 37 einen potentiellen Aufruf
anzeigt, wird dieses Feld ausgelesen, um über die
Selbsthalteschaltung 96 und die Leitung 97 ein Eingangssignal
für den Decodierer 93 zu erzeugen, der durch Aussenden eines
Steuersignals auf den Leitungen 95 an die Multiplexer 91, 92 und
den Addierer 94 antwortet. Durch dieses Steuersignal wird der
Multiplexer 91 konditioniert, um die Aufruf-Zieladresse vom Feld
35 des übereinstimmenden Eintrags über die Selbsthalteschaltung
98 und die Leitungen 99 zu dem Sucheingang 100 des Rücksprung-
Caches 22 zu übertragen. Unter Benutzung des assoziativen
Suchmechanismus des Rücksprung-Caches 26 werden die Felder 74
der Aufruf-Zieladresse jedes Eintrags in dem Rücksprung-Cache 26
mit der Aufruf-Zieladresse eines potentiellen Aufrufbefehls in
der TVP verglichen. Wenn eine Übereinstimmung gefunden wird,
wird die Adresse des vorab ausgelesenen Befehls auf der Leitung
76 über die Selbsthalteschaltung 101, die Leitung 102 und den
Multiplexer 92 zu dem Addierer 94 übertragen, der diese Adresse
um die Befehlslänge erhöht, wie sie durch das Längenfeld des
übereinstimmenden Eintrags in der TVP angegeben wird. Die
Information über die Befehlslänge wird über die Leitungen 85 und
97 zu dem Decodierer 93 übertragen, der den Addierer 94
entsprechend steuert. Das Ausgangssignal des Addierers 94 stellt
die Adresse des nächsten sequentiellen Befehls dar, der in das
NSB-Feld 73 des übereinstimmenden Eintrags in dem Rücksprung-
Cache 26 eingetragen wird und die vorher darin gespeicherte
NSB-Adresse ersetzt. Dieses Ersetzen der NSB-Adresse wird für
jeden potentiellen Aufruf, der in der TVP gefunden wird,
wiederholt.
Eine ähnliche Adressen-Aktualisierungsprozedur wird
durchgeführt, wenn ein neuer Eintrag der Tabelle 22 der
Verzweigungsprotokolle mittels der Verzweigungsinformationen
erzeugt wird, die auf den Leitungen 42, 44 und 46 erscheinen. In
diesem Fall empfängt der Decodierer 93 mit dem Adressieren der
TVP durch die Befehlsadresse auf den Leitungen 42 die
Informationen der Verzweigungsart von den Leitungen 46, die die
Verzweigung als einen potentiellen Aufruf angeben. Als Antwort
auf dieses Eingangssignal erzeugt der Decodierer 93
Steuersignale für die Multiplexer 91, 92 und den Addierer 94.
Durch das Steuersignal des Decodierers 93 wird der Multiplexer
91 konditioniert, um die Zieladresse des Verzweigungsbefehls von
der Leitung 44 zu dem Sucheingang 100 des Rücksprung-Caches 26
zu übertragen, um eine Suche nach den Feldern für das Aufrufziel
jedes Eintrags des Rücksprung-Caches 26 durchzuführen. Wenn eine
Übereinstimmung gefunden wird, wird die Befehlsadresse auf der
Leitung 42 über den Multiplexer 92, der durch das Steuersignal
des Decodierers 93 konditioniert ist, zu dem Addierer 94
übertragen. Die Befehlslänge wird durch die Informationen über
die Verzweigungsart auf der Leitung 46 angegeben und initiiert
und bereitet den Decodierer 93 vor, Signale zu erzeugen, die den
Addierer 94 steuern, um die Befehlsadresse auf der Leitung 42 um
die Befehlslänge zu erhöhen. Wieder stellt das Ausgangssignal
des Addierers 94 die Adresse des nächsten sequentiellen Befehls
dar und wird in das NSB-Feld 73 des übereinstimmenden Eintrags
in dem Rücksprung-Cache 26 eingegeben, wo sie die früher darin
gespeicherte NSB-Adresse ersetzt.
Während der Suchoperationen in dem Rücksprung-Cache kann mehr
als ein übereinstimmender Eintrag für eine Adresse des
Aufrufziels gefunden werden, da es mehr als einen Rücksprung aus
dem gleichen Unterprogramm geben kann, wie das in den Fig. 3
und 4 dargestellt ist. Für jede Übereinstimmung, die durch das
assoziative Suchen gefunden wird, wird eine entsprechende
Aktualisierung der NSB-Adresse in dem Feld 73 des
übereinstimmenden Eintrags durchgeführt, wie das oben
beschrieben wurde. Dementsprechend führt jede
Adressenaufrufoperation in der TVP und dem Rücksprung-Cache 26
nach einer Unterprogramm-Rücksprungadresse zu der richtigen
Zieladresse, die die aktualisierte NSB-Adresse des laufenden
Rücksprungbefehls ist, der auszuführen ist.
Ein modifiziertes Ausführungsbeispiel der Erfindung wird
nachfolgend mit Bezugnahme auf die Fig. 7-9 beschrieben. Das
modifizierte Ausführungsbeispiel stellt die
Programmierungsforderung in Rechnung, die Rücksprung-Zieladresse
des Unterprogramms in bestimmten Fällen in eine Adresse
umzubilden, die 4 Bytes länger als die oben mit Bezugnahme auf
die Fig. 1-6 beschriebene NSB-Adresse ist. Welche
Rücksprungadresse zu benutzen ist, ist eine Sache der
Programmierung und variiert von Unterprogramm zu Unterprogramm.
Das modifizierte Ausführungsbeispiel sieht daher einen
Auswählmechanismus der Adressenart als Teil der Rücksprung-
Identifikationseinheit 24 und der Aktualisierungsschaltung 32
für die Rücksprungadresse vor.
Gemäß dem modifizierten Ausführungsbeispiel sind die Einträge
des Puffers 50 für die Rücksprung-Identifikation durch ein
zusätzliches Feld erweitert. Fig. 8 zeigt den modifizierten
Puffer 110 für die Rücksprung-Identifikation, bei dem jeder
Eintrag Felder 111, 112 und 113 einschließt. Die Felder 111 und
112 entsprechen den Feldern 51 und 52 der Fig. 5, während das
Feld 111 die nächste sequentielle Adresse NSB enthält und das
Feld 112 die Aufruf-Zieladresse AZA eines identifizierten
Rücksprungbefehls enthält. Das zusätzliche Feld 113 wird
benutzt, um die um "4" erhöhte NSB-Adresse aufzunehmen. Diese
NSB+4-Adresse wird durch den Addierer 58 (Fig. 5) unter der
Steuerung von Signalen auf den Leitungen 59 des Decodierers 54
erzeugt. Die Komponenten 54 und 58 werden zu diesem Zweck
entsprechend modifiziert. Der Decodierer 54 erzeugt die
genannten Steuersignale als Antwort auf entsprechende
Informationen über die Verzweigungsart von der
Verzweigungsbewertungseinheit 20, die die Art der zu benutzenden
Rücksprungadresse bestimmt. Die Ergebnisse des Addierers 58
werden in den Puffer 110 zur Rücksprung-Identifikation über die
Leitungen 114 und 115 geladen, von denen die Leitungen 114 der
NSB-Adresse und die Leitungen 115 dem NSB+4-Feld 113 zugeordnet
sind.
Die Suche nach einem Rücksprung wird nicht nur mit den
NSB-Adressen in den Feldern 111 all der Einträge in dem
modifizierten Puffer 110 zur Rücksprung-Identifikation
durchgeführt, wie das mit Bezugnahme auf Fig. 5 beschrieben
wurde, sondern zusätzlich auch mit den Feldern 113 aller
Einträge in dem modifizierten Puffer 110 zur Rücksprung-
Identifikation. Wenn eine Übereinstimmung mit einer NSB+4-
Adresse gefunden wird, wird das Feld 39 für das Rücksprung-
Kennzeichen in der TVP gesetzt, wie vorher beschrieben, und
ebenso wird das übereinstimmende Adressenpaar NSB+4/Aufrufziel
von dem Puffer 110 zur Rücksprung-Identifikation zu dem
Rücksprung-Cache übertragen, wie vorher beschrieben. Ein
modifizierter Rücksprung-Cache 120 wird benutzt, bei dem jeder
Eintrag die Felder 121, 122, 123, 124, 125 enthält, wie das in
Fig. 9 dargestellt ist. Die Felder 121, 122, 123 und 124
entsprechen den Feldern 71, 72, 73 und 74, die oben mit
Bezugnahme auf Fig. 5 beschrieben wurden, mit der Ausnahme, daß
das Feld 123 die NSB-Adresse oder die NSB+4-Adresse enthalten
kann, wie sie von dem Puffer 110 zur Rücksprung-Identifikation
empfangen wird. In dem zusätzlichen Feld 125 wird ein
Kennzeichenbit TSB auf "eins" gesetzt, wenn eine NSB+4-Adresse
von dem Puffer 110 zur Rücksprung-Identifikation empfangen
wurde.
Für das Aktualisieren einer nächsten sequentiellen Adresse in
dem Rücksprung-Cache 12 ist die Schaltung nach Fig. 7
vorgesehen, die Teil der Aktualisierungsschaltung 32 in Fig. 1
ist und den Addierer 94 in Fig. 5 ersetzt. Sie umfaßt die
Addierer 131, 132, UND-Glieder 133, 134 und ein ODER-Glied 135.
Der Addierer 131 empfängt an seinem ersten Eingang über die
Leitungen 128 die Adresse des Aufrufbefehls von dem Multiplexer
92 (Fig. 5) und an seinem zweiten Eingang über die Leitungen
129 einen Befehlslängenwert in Form von Bytes. Die Befehlslänge
wird von der Verzweigungsbewertungseinheit 20 als Teil der
Informationen zur Verzweigungsart geliefert oder vom Feld 38 der
Verzweigungseinträge in der TVP 22, abhängig davon, ob eine
TVP-Ladeoperation oder eine erfolgreiche TVP-Zugriffsoperation
durchgeführt wird. Der Addierer 131 erzeugt die nächste
sequentielle Adresse, die über das UND-Glied 133 das ODER-Glied
135 und die Leitungen 139 zu dem Rücksprung-Cache 120 übertragen
wird, wenn das UND-Glied 133 durch ein Übereinstimmungssignal
auf der Leitung 136 und ein Ausgangssignal eines Inverters 138
konditioniert wird. Der Inverter 138 erzeugt ein Ausgangssignal,
wenn als Antwort auf eine Suchoperation in dem Rücksprung-Cache
22 das Feld 125 des übereinstimmenden Eintrags ein TSB-Kenn
zeichen "null" auf der Leitung 137 anzeigt. Das Ausgangssignal
des ODER-Gliedes 135 wird in das Feld 141 für die
Rücksprungadresse des übereinstimmenden Eintrages 140 in dem
Rücksprung-Cache 120 eingetragen und ersetzt die darin früher
gespeicherte Rücksprungadresse.
Ebenfalls empfängt der Addierer 132 an seinem ersten Eingang
über die Leitungen 128 die Adresse des Aufrufbefehls vom
Multiplexer 92 (Fig. 5) und an seinem zweiten Eingang über
Leitungen 129 den Befehlslängenwert und zusätzlich an einem
dritten Eingang 130 den Wert "4". Gleichzeitig mit der Operation
des Addierers 131 erzeugt der Addierer 132 eine Adresse NSB+4,
die die nächste sequentielle Adresse ist wie die von dem
Addierer 131 erzeugte, aber um 4 erhöht. Die Adresse NSB+4 wird
über das UND-Glied 134 und das ODER-Glied 135 zu dem Rück
sprung-Cache 120 übertragen, wenn das UND-Glied 134 durch ein
Übereinstimmungssignal auf der Leitung 136 und ein
TSB-Kennzeichen "eins" konditioniert ist, das über die Leitung
137 durch eine Suchoperation in dem Rücksprung-Cache 221 von dem
Feld 125 des übereinstimmenden Eintrags empfangen wird. Wieder
wird das Ausgangssignal des ODER-Gliedes 135 in das Feld 141 für
die Rücksprungadresse des übereinstimmenden Eintrages 140 in dem
Rücksprung-Cache 125 eingegeben als die aktualisierte
Rücksprungadresse, die zu benutzen ist, wenn der nächste
Rücksprung vom Unterprogramm durch den Puffer 50 identifiziert
wird. Der Zugriff auf den Eintrag 140 und die Benutzung der
Rücksprungadresse aus dem Feld 141 wird in der gleichen Weise
durchgeführt, wie oben mit Bezugnahme auf Fig. 5 beschrieben.
Während die Erfindung mit Bezugnahme auf bevorzugte
Ausführungsbeispiele beschrieben wird, liegen Abweichungen von
den oder Modifikationen der dargestellten oder anderer
Ausführungsbeispiele innerhalb des Schutzumfangs der Erfindung,
wie er durch die angefügten Ansprüche definiert ist.
Claims (29)
1. Vorrichtung zum Durchführen von Unterprogrammaufruf- und
Rücksprungoperationen in einem Computer, der einen
Prozessor aufweist, der durch Befehlsfolgen (11, 11')
einschließlich Verzweigungsbefehlen gesteuert wird zum
Durchführen neben anderen Verzweigungsarten von
Unterprogrammaufrufen und Rücksprüngen zu der nächsten
sequentielle Adresse, nachdem ein Unterprogramm ausgeführt
wurde, wobei jeder Aufrufbefehl eine Aufruf-Zieladresse und
jeder Rücksprungbefehl eine Rücksprungadresse einschließt
und der Computer einen Mechanismus zum Vorabauslesen von
Befehlen aufweist, der Mittel (28) zum Erzeugen eines vorab
ausgelesenen Befehlsstroms einschließt und eine Tabelle (22)
der Verzweigungsprotokolle einschließt zum Speichern von
Zieladressen einer Vielzahl von Verzweigungsbefehlen, die
in dem vorab ausgelesenen Befehlsstrom gefunden werden,
wobei die Vorrichtung umfaßt:
- (a) Speichermittel (37, 39) in der genannten Tabelle (22) der Verzweigungsprotokolle zum Speichern von Informationen über die Verzweigungsart für jeden Eintrag eines Verzweigungsbefehls, wobei die Informationen über die Verzweigungsart ein Befehls- Kennzeichen eines Potentiellen Unterprogrammaufrufs und ein Befehls-Kennzeichen eines Unterprogrammrücksprungs aufweisen,
- (b) Mittel (24) zur Rücksprung-Identifikation zum Speichern eines Eintrages für jeden potentiellen Aufrufbefehl, der in dem vorab ausgelesenen Befehlsstrom gefunden wird, wobei der genannte Eintrag eine Aufruf-Zieladresse und eine Adresse des nächsten sequentiellen Befehls des genannten potentiellen Aufrufbefehls einschließt und wobei die Rücksprung- Identifikationsmittel Mittel (54, 62) einschließen, die auf einen nachfolgend festgestellten Verzweigungsbefehl ansprechen zum Bestimmen, ob der nachfolgend festgestellte Verzweigungsbefehl ein Rücksprungbefehl ist,
- (c) Rücksprung-Cache-Mittel (26), die parallel zu dem Tabellenmittel (22) der Verzweigungsprotokolle angeordnet sind, und Mittel (66), die auf ein Identifikationssignal eines Rücksprungbefehls des genannten Rücksprung-Identifikationsmittel ansprechen zum Speichern eines Rücksprung-Kennzeichens in der Tabelle der Verzweigungsprotokolle in dem Eintrag des identifizierten Rücksprungbefehls und zum Erzeugen eines Eintrags in dem Rücksprung-Cache, zu dem die Aufruf-Zieladresse und die Adresse des nächsten sequentiellen Befehls des identifizierten Rücksprungbefehls übertragen werden, und
- (d) Zugriffs- und Selektormittel (28, 30) zum gleichzeitigen Zugreifen auf die Tabelle der Verzweigungsprotokolle und den Rücksprung-Cache mit der Adresse jedes vorab ausgelesenen Befehls zum Auswählen der nächsten vorab auszulesenden Adresse aus dem Rücksprung-Cache als Antwort auf ein Rücksprung-Kenn zeichen aus der Tabelle der Verzweigungsprotokolle.
2. Vorrichtung nach Anspruch 1, weiter umfassend
Aktualisierungsmittel (32) für den Rücksprung-Cache, die
als Antwort auf einen Verzweigungsbefehl in dem
Befehlsstrom wirksam sind zum Durchführen einer
Suchoperation in dem Rücksprung-Cache-Mittel (26) nach
einem Eintrag, der eine Zieladresse aufweist, die der
Zieladresse des genannten Verzweigungsbefehls entspricht,
und zum Ersetzen der Adresse des nächsten sequentiellen
Befehls in dem Eintrag, der durch die Adresse des nächsten
sequentiellen Befehls in dem genannten Verzweigungsbefehl
gefunden wird.
3. Vorrichtung nach Anspruch 1, bei der jeder Eintrag in der
genannten Tabelle (22) der Verzweigungsprotokolle ein
erstes Ein-Bit-Feld (37) zum Speichern eines Kennzeichens
eines potentiellen Aufrufs einschließt, wie es durch eine
Verzweigungsbewertungseinheit (20) während der Verarbeitung
eines potentiellen Aufrufbefehls geliefert wird, und ein
zweites Ein-Bit-Feld (39) zum Speichern eines Rücksprung-
Kennzeichens, wie es durch das Rücksprung-
Identifikationsmittel (24) geliefert wird, nachdem ein
Rücksprungbefehl identifiziert wurde, und weiter ein
drittes Feld (38) einschließt zum Speichern der
Befehlslänge des genannten potentiellen Aufrufbefehls.
4. Vorrichtung nach Anspruch 1, bei der das genannte
Rücksprung-Identifikationsmittel (24) Puffermittel (50)
umfaßt zur Rücksprung-Identifikation, das eine Vielzahl von
Speicherplätzen aufweist, von denen jeder ein erstes Feld
(51, 111) und ein zweites Feld (52, 112) zum Speichern von
Adresspaaren aufweist, wobei jedes Adresspaar die nächste
sequentielle Adresse eines potentiellen Aufrufbefehls und
den Aufrufziel-Befehl des Aufrufzieles desselben
potentiellen Aufrufbefehls umfaßt.
5. Vorrichtung nach Anspruch 4, bei der die Vielzahl von
Speicherplätzen in dem Puffermittel (50) zur
Rücksprung-Identifikation als eine kreisförmige
Warteschlange betrieben werden, insofern der neueste
Eintrag den ältesten überschreibt.
6. Vorrichtung nach Anspruch 4, bei der die genannte Vielzahl
von Speicherplätzen in dem Puffermittel (50) zur
Rücksprung-Identifikation interne Adressiermöglichkeiten
für ihre ersten Felder (51, 111) umfaßt, um eine
assoziative Suche nach all den nächsten sequentiellen
Adressen zu ermöglichen, die in dem Puffermittel zur
Rücksprung-Identifikation gespeichert sind.
7. Vorrichtung nach Anspruch 1, bei dem das genannte Mittel
(24) zur Rücksprung-Identifikation einen Addierer (58)
umfaßt, der für jeden potentiellen Aufrufbefehl die
nächste sequentielle Adresse erzeugt durch Erhöhen der
Befehlsadresse des Befehls für einen potentiellen Aufruf um
einen Befehlslängenwert.
8. Vorrichtung nach den Ansprüchen 4 und 6, bei der jede der
Vielzahl von Speicherstellen des Puffermittels (110) zur
Rücksprung-Identifikation ein drittes Feld (113) zum
zusätzlichen Speichern der nächsten sequentiellen Adresse
eines potentiellen Aufrufbefehls einschließt, nachdem sie
um einen vorgegebenen Wert erhöht wurde, und bei der die
genannten internen Adressiermöglichkeiten des Puffermittels
sich auf die genannten dritten Felder (113) erstrecken, um
eine assoziative Suche nach allen solchen erhöhten nächsten
sequentiellen Adressen zu gestatten, die in dem
Puffermittel (110) zur Rücksprung-Identifikation
gespeichert sind.
9. Vorrichtung nach Anspruch 1, bei dem das Tabellenmittel
(22) der Verzweigungsprotokolle und das genannte
Rücksprung-Cache-Mittel (26) so angeordnet sind, daß auf
sie in dem gleichen Maschinenzyklus parallel zugegriffen
werden kann durch Anlegen der gleichen Befehlsadressierung
(76) und durch Liefern von Ausgangssignalen (84 und 87)
parallel an das genannte Selektormittel (30).
10. Vorrichtung nach Anspruch 1, bei der das Rück
sprung-Cache-Mittel (26) eine Vielzahl von Speicherplätzen umfaßt,
von denen jeder ein erstes Feld (73) und ein zweites Feld
(74) zum Speichern eines Adreßpaares umfaßt, das eine
nächste sequentielle Adresse und eine Aufruf-Zieladresse
enthält, wie sie von dem Rücksprung-Identifikationsmittel
(24) empfangen werden.
11. Vorrichtung nach Anspruch 10, bei der die genannte Vielzahl
von Speicherplätzen in dem Rücksprung-Cache-Mittel (26)
interne Adressiermöglichkeiten der zweiten Felder (74)
umfaßt, um eine assoziative Suche nach all den Aufruf-Ziel
adressen zu gestatten, die in dem Rücksprung-Cache-Mittel
gespeichert sind, um eine übereinstimmende Aufruf-Ziel
adresse zu lokalisieren und ihre damit in Beziehung
stehende nächste sequentielle Adresse für eine Adressen-
Aktualisierungsoperation des Cache-Aktualisierungs-Mittels
(32).
12. Vorrichtung nach Anspruch 9, bei der die genannte Vielzahl
von Speicherstellen in dem Rücksprung-Cache-Mittel (26) in
Blöcke unterteilt ist, wobei jeder Block durch einen Teil
einer vorab ausgelesenen Befehlsadresse adresssiert wird
und wobei jede der Speicherstellen weiter ein
Kennzeichenfeld (72) umfaßt, das als ein internes
Adressierfeld dient durch Speichern eines Teiles einer
Adresse eines Rücksprungbefehls, und durch Benutzen eines
anderen Teiles der vorab ausgelesenen Befehlsadresse als
eine assoziative Adresse, die an das genannte
Kennzeichenfeld angelegt wird, um die nächste sequentielle
Adresse eines Rücksprungbefehls aus dem übereinstimmenden
Eintrag des Rücksprung-Cache-Mittels zu lesen.
13. Vorrichtung nach Anspruch 9, bei dem jede der genannten
Vielzahl von Speicherstellen in dem Rücksprung-Cache-Mittel
(26) weiter umfaßt ein Feld (71) für ein Gültigkeits-Kenn
zeichen, das benutzt wird, um anzuzeigen, daß die
Speicherstelle die nächste sequentielle Adresse eines
Rücksprungbefehls enthält, und Mittel (81, 78) umfaßt, die
auf das genannte Feld für das Gültigkeits-Kennzeichen des
übereinstimmenden Eintrags ansprechen zum Auswählen der
Adresse des nächsten sequentiellen Befehls aus diesem
Eintrag als die nächste vorab auszulesende Adresse anstelle
der Verzweigungs-Zieladresse aus dem Eintrag in dem
Tabellenmittel (22) für den Verzweigungsrücksprung, auf das
parallel zu dem Rücksprung-Cache-Mittel zugegriffen wird.
14. Vorrichtung nach den Ansprüchen 2 und 11, bei der das
genannte Cache-Aktualisierungsmittel (32) einen Addierer
(94, 131) umfaßt, der die nächste sequentielle Adresse
eines Rücksprungbefehls erzeugt, auf die in der Tabelle
(22) der Verzweigungsprotokolle zugegriffen oder die in sie
eingetragen wird durch Erhöhen der Befehlsadresse des
genannten Rücksprungbefehles um die Befehlslänge, und die
weiter umfaßt Mittel (91, 93, 100), um eine Suche in den
Feldern (74) für die Rücksprung-Zieladresse in dem
Rücksprung-Cache-Mittel (26) durchzuführen, um die nächste
zu aktualisierende Befehlsadresse der Folge zu
lokalisieren.
15. Vorrichtung nach den Ansprüchen 8 und 14, bei der das
genannte cache-Aktualisierungsmittel (32) einen zweiten
Addierer (132) umfaßt, der die nächste sequentielle Adresse
eines Rücksprungbefehles erzeugt, auf den in der Tabelle
der Verzweigungsprokolle zugegriffen oder der in sie
eingetragen wird durch zusätzliches Erhöhen der
Befehlsadresse des genannten Rücksprungbefehles um einen
vorgegebenen Wert, wobei jede der genannten Vielzahl von
Speicherstellen in dem Rücksprung-Cache-Mittel (120) weiter
ein Kennzeichenfeld (125) umfaßt, das der Benutzung der
genannten, zusätzlich erhöhten nächsten sequentiellen
Adresse zugeordnet ist, und bei der das genannte
Cache-Aktualisierungsmittel (32) Mittel (133 bis 137) umfaßt, die
auf das Kennzeichenfeld (125) des übereinstimmenden
Eintrags in dem Rücksprung-Cache-Mittel ansprechen zum
Auswählen der zusätzlich erhöhten nächsten sequentiellen
Adresse, damit sie in das Feld (141) für die
Rücksprungadresse des übereinstimmenden Eintrags in dem
Rücksprung-Cache-Mittel (120) eingetragen wird.
16. Verfahren zum Durchführen von Unterprogrammaufruf- und
Rücksprungoperationen in einem Computer, der einen
Prozessor aufweist, der durch Befehlsfolgen (11, 11')
einschließlich Verzweigungsbefehlen gesteuert wird zum
Durchführen neben anderen Verzweigungsarten von
Unterprogrammaufrufen und Rücksprüngen zu der nächsten
sequentiellen Adresse, nachdem ein Unterprogramm ausgeführt
wurde, wobei jeder Aufrufbefehl eine Aufruf-Zieladresse
einschließt und jeder Rücksprungbefehl eine
Rücksprungadresse einschließt und der Computer einen
Mechanismus zum Vorabauslesen von Befehlen aufweist, der
Mittel zum Erzeugen eines vorab ausgelesenen Befehlsstromes
einschließt und eine Tabelle (22) der
Verzweigungsprotokolle einschließt zum Speichern von
Zieladressen einer Vielzahl von verzweigungsbefehlen, die
in dem vorab ausgelesenen Befehlsstrom gefunden werden,
wobei das Verfahren die Schritte umfaßt des:
- (a) Speicherns in der genannten Tabelle der Verzweigungsprotokolle Informationen über die Verzweigungsart für jeden Eintrag eines Verzweigungsbefehls, die genannten Informationen ein Kennzeichen eines potentiellen Aufrufbefehls und ein Kennzeichen eines Rücksprungbefehls (37, 39) einschließen,
- (b) Feststellens eines potentiellen Aufrufbefehls in dem vorab ausgelesenen Befehlsstrom und Speicherns eines Adressenpaares, das die Aufruf-Zieladresse und die Adresse des nächsten sequentiellen Befehls des festgestellten Aufrufbefehls (24, 50) enthält,
- (c) Durchführens einer Suche nach den nächsten sequentiellen Befehlen der genannten gespeicherten Adreßpaare als Antwort auf jeden potentiellen Rücksprungbefehl, der nachfolgend in dem vorab ausgelesenen Befehl festgestellt wird zum Identifizieren des Befehls als eines Rücksprungs, wenn eine entsprechende Adresse bei der Suche (54, 62, 65, 66) gefunden wird,
- (d) Speicherns des Adreßpaares, das die übereinstimmende Adresse enthält, in einem Rücksprung-Cache (26) und Speicherns eines Rücksprung-Kennzeichens (39) in der Tabelle der Verzweigungsprotokolle in dem Eintrag des identifizierten Rücksprungbefehles und
- (e) gleichzeitigen Zugreifens auf die Tabelle der Verzweigungsprotokolle und den Rücksprung-Cache mit der Adresse jedes vorab ausgelesenen Befehls zum Bestimmen des Befehls als eines Rücksprungs und Auswählens der nächsten sequentiellen Adresse aus dem genannten Rücksprung-Cache als eine Verzweigungs-Zieladresse anstelle der Verzweigungs-Zieladresse aus der Tabelle (28, 30) der Verzweigungsprotokolle.
17. Verfahren nach Anspruch 16, weiter umfassend den Schritt
des Aktualisierens des Rücksprung-Caches als Antwort auf
einen Verzweigungsbefehl in dem Befehlsstrom durch
Durchsuchen des Rücksprung-Caches nach einem Eintrag, der
eine entsprechende Zieladresse aufweist, und Ersetzens der
Adresse des nächsten sequentiellen Befehls in dem Eintrag
durch die nächste sequentielle Adresse des genannten
Verzweigungsbefehls (32).
18. Verfahren nach Anspruch 16, bei dem jeder Eintrag der
genannten Tabelle (22) der Verzweigungsprotokolle ein
erstes Ein-Bit-Feld (37) zum Speichern des Kennzeichens
eines potentiellen Aufrufs einschließt, wie es von einer
Verzweigungs-Bewertungseinheit (20) während der
Verarbeitung eines potentiellen Aufrufbefehls geliefert
wird, und ein zweites Ein-Bit-Feld (39) zum Speichern eines
Rücksprung-Kennzeichens, wie es durch den Schritt zur
Identifikation eines Rücksprungbefehls geliefert wird, und
weiter ein drittes Feld (38) zum Speichern der Befehlslänge
des genannten potentiellen Aufrufbefehls einschließt.
19. Verfahren nach Anspruch 16, bei dem der Schritt (b) weiter
den Schritt umfaßt des Speicherns des genannten Adreßpaars
in einem Puffer (50) zur Rücksprung-Identifikation und des
Betreibens von dessen Speicherstellen als eine kreisförmige
Warteschlange insofern, als der neueste Eintrag den
ältesten überschreibt.
20. Verfahren nach Anspruch 16, bei dem der Schritt (c) weiter
den Schritt umfaßt des Durchführens einer assoziativen
Suche nach allen nächsten sequentiellen Adressen, die in
dem Puffer (50) zur Rücksprung-Identifikation gespeichert
sind.
21. Verfahren nach Anspruch 16, bei dem der Schritt (b) weiter
den Schritt umfaßt des Erzeugens für jeden potentiellen
Aufrufbefehl der nächsten sequentiellen Adresse durch
Erhöhen der Befehlsadresse des potentiellen Aufrufbefehls
um einen Befehlslängenwert.
22. Verfahren nach den Ansprüchen 16 und 20, weiter umfassend
den Schritt des zusätzlichen Speicherns in dem genannten
Puffer (110) zur Rücksprung-Identifikation der nächsten
sequentiellen Adresse eines potentiellen Rücksprung-
Befehls, nachdem sie um einen vorgegebenen Wert erhöht
wurde, und bei dem der genannte Schritt (b) des
Durchführens einer assoziativen Suche sich auf alle
erhöhten nächsten sequentiellen Adressen erstreckt, die in
dem Puffer gespeichert sind.
23. Verfahren nach Anspruch 16, bei dem der Schritt (e) weiter
die Schritte umfaßt des Zugreifens parallel und im gleichen
Maschinenzyklus auf die genannte Tabelle (22) der
Verzweigungsprotokolle und den genannten Rücksprung-Cache
(26) durch Benutzen der gleichen Befehlsadresse (76) und
durch Anwenden des Auswahlschrittes parallel auf die
Ausgänge beider (84 und 87).
24. Verfahren nach Anspruch 23, bei dem der Schritt (e) weiter
den Schritt umfaßt des Durchführens einer assoziativen
Suche nach allen Aufruf-Zieladressen, die in dem
Rücksprung-Cache-Mittel gespeichert sind, um eine
übereinstimmende Aufruf-Zieladresse zu lokalisieren und
ihre damit in Beziehung stehende nächste sequentielle
Adresse für einen Adressen-Aktualisierungsschritt.
25. Verfahren nach Anspruch 23, bei dem jede der
Speicherstellen in dem Rücksprung-Cache (26) weiter ein
Kennzeichenfeld (72) umfaßt, das als ein internes
Adressierfeld dient durch Speichern eines Teiles der
Adresse des identifizierten Rücksprungbefehls, und bei dem
der Schritt (e) den Schritt umfaßt des Zugreifens auf den
Rücksprung-Cache durch Benutzen eines Teiles einer vorab
ausgelesenen Befehlsadresse, um auf einen bestimmten Block
des Rücksprung-Caches zuzugreifen, und des Anlegens eines
anderen Teiles der gleichen vorab ausgelesenen
Befehlsadresse als einer assoziativen Adresse an alle
Kennzeichenfelder (72) innerhalb des Blocks, auf den
zugegriffen wurde, und des Auslesens der nächsten
sequentiellen Adresse eines Rücksprung-Befehls aus dem
Eintrag des übereinstimmenden Kennzeichenfeldes in dem
Rücksprung-Cache.
26. Verfahren nach Anspruch 23, bei dem jede der
Speicherstellen in dem Rücksprung-Cache (26) weiter umfaßt
ein Kennzeichen (71) eines gültigen Eintrags, das anzeigt,
daß die Speicherstelle die nächste sequentielle Adresse
eines Rücksprungbefehls enthält, und bei dem der genannte
Auswählschritt des Schrittes (e) als Antwort auf ein
Kennzeichen eines gültigen Eintrags des übereinstimmenden
Eintrags die nächste sequentielle Befehlsadresse aus dem
Eintrag als die nächste vorab auszulesende Adresse auswählt
anstelle der Benutzung der Verzweigungs-Zieladresse aus der
Tabelle (22) der Verzweigungsprotokolle.
27. Verfahren nach Anspruch 17, bei dem der genannte
Aktualisierungsschritt des Cache die Schritte umfaßt des
Erzeugens der nächsten sequentiellen Adresse eines
Aufrufbefehls, auf die in der Tabelle der
Verzweigungsprotokolle zugegriffen wird oder die in sie
eingetragen wird, durch Erhöhen der Befehlsadresse des
genannten Aufrufbefehls um die Befehlslänge und des
Durchführens einer Suche durch die Aufruf-Zieladressen, die
in dem Rücksprung-Speicher gespeichert sind, um die nächste
Befehlsadresse der Folge, die zu aktualisieren ist, zu
lokalisieren.
28. Verfahren nach Anspruch 27, bei dem der
Aktualisierungsschritt des Cache weiter die Schritte umfaßt
des Erzeugens der nächsten sequentiellen Adresse eines
Aufrufbefehls, auf die in der Tabelle (22) der
Verzweigungsprotokolle zugegriffen oder die in sie
eingetragen wird, durch zusätzliches Erhöhen der
Befehlsadresse des genannten Aufrufbefehls um einen
vorgegebenen Wert und des Speicherns in den genannten
Speicherstellen des Rücksprung-Caches (120) eines
Kennzeichens (TSB), das der Benutzung der genannten
zusätzlich erhöhten nächsten sequentiellen Adresse
zugeordnet ist, und des Auswählens als Antwort auf ein
Kennzeichen (TSB) in dem übereinstimmenden Eintrag der
zusätzlich erhöhten nächsten sequentiellen Adresse, damit
sie in das Rücksprung-Adreßfeld (14) des übereinstimmenden
Eintrags in dem Rücksprung-Cache (120) eingetragen wird.
29. Verfahren nach Anspruch 16, bei dem der Schritt (c) des
Durchführens einer Suche nach den nächsten sequentiellen
Befehlen der genannten gespeicherten Adreßpaare wiederholt
wird, wenn ein Unterprogramm mehr als einen
Rücksprungbefehl einschließt, bis keine weiteren Adreßpaare
gefunden werden, die einen übereinstimmenden Eintrag
aufweisen, und daß der Schritt (d) für jede im Schritt (c)
gefundene Übereinstimmung wiederholt wird.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP98101147 | 1998-01-23 |
Publications (1)
Publication Number | Publication Date |
---|---|
DE19855806A1 true DE19855806A1 (de) | 1999-07-29 |
Family
ID=8231299
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19855806A Withdrawn DE19855806A1 (de) | 1998-01-23 | 1998-12-03 | Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen |
Country Status (3)
Country | Link |
---|---|
US (1) | US5974543A (de) |
JP (1) | JP3004013B2 (de) |
DE (1) | DE19855806A1 (de) |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6334184B1 (en) * | 1998-03-24 | 2001-12-25 | International Business Machines Corporation | Processor and method of fetching an instruction that select one of a plurality of decoded fetch addresses generated in parallel to form a memory request |
JP3513038B2 (ja) * | 1998-12-10 | 2004-03-31 | 富士通株式会社 | 命令フェッチ制御装置 |
JP3723020B2 (ja) * | 1999-09-30 | 2005-12-07 | 富士通株式会社 | 分岐履歴情報の書き込み制御装置及びその方法 |
JP2001273137A (ja) * | 2000-03-28 | 2001-10-05 | Toshiba Corp | マイクロプロセッサ |
US20020194461A1 (en) * | 2001-05-04 | 2002-12-19 | Ip First Llc | Speculative branch target address cache |
US7707397B2 (en) * | 2001-05-04 | 2010-04-27 | Via Technologies, Inc. | Variable group associativity branch target address cache delivering multiple target addresses per cache line |
US7134005B2 (en) * | 2001-05-04 | 2006-11-07 | Ip-First, Llc | Microprocessor that detects erroneous speculative prediction of branch instruction opcode byte |
US20020194462A1 (en) * | 2001-05-04 | 2002-12-19 | Ip First Llc | Apparatus and method for selecting one of multiple target addresses stored in a speculative branch target address cache per instruction cache line |
US6895498B2 (en) * | 2001-05-04 | 2005-05-17 | Ip-First, Llc | Apparatus and method for target address replacement in speculative branch target address cache |
US7200740B2 (en) * | 2001-05-04 | 2007-04-03 | Ip-First, Llc | Apparatus and method for speculatively performing a return instruction in a microprocessor |
US6886093B2 (en) * | 2001-05-04 | 2005-04-26 | Ip-First, Llc | Speculative hybrid branch direction predictor |
US7165169B2 (en) * | 2001-05-04 | 2007-01-16 | Ip-First, Llc | Speculative branch target address cache with selective override by secondary predictor based on branch instruction type |
US7165168B2 (en) * | 2003-01-14 | 2007-01-16 | Ip-First, Llc | Microprocessor with branch target address cache update queue |
US7234045B2 (en) * | 2001-07-03 | 2007-06-19 | Ip-First, Llc | Apparatus and method for handling BTAC branches that wrap across instruction cache lines |
US6823444B1 (en) * | 2001-07-03 | 2004-11-23 | Ip-First, Llc | Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap |
US7162619B2 (en) * | 2001-07-03 | 2007-01-09 | Ip-First, Llc | Apparatus and method for densely packing a branch instruction predicted by a branch target address cache and associated target instructions into a byte-wide instruction buffer |
US7203824B2 (en) * | 2001-07-03 | 2007-04-10 | Ip-First, Llc | Apparatus and method for handling BTAC branches that wrap across instruction cache lines |
US6898699B2 (en) * | 2001-12-21 | 2005-05-24 | Intel Corporation | Return address stack including speculative return address buffer with back pointers |
US7159097B2 (en) * | 2002-04-26 | 2007-01-02 | Ip-First, Llc | Apparatus and method for buffering instructions and late-generated related information using history of previous load/shifts |
US7152154B2 (en) * | 2003-01-16 | 2006-12-19 | Ip-First, Llc. | Apparatus and method for invalidation of redundant branch target address cache entries |
US7185186B2 (en) | 2003-01-14 | 2007-02-27 | Ip-First, Llc | Apparatus and method for resolving deadlock fetch conditions involving branch target address cache |
US7143269B2 (en) * | 2003-01-14 | 2006-11-28 | Ip-First, Llc | Apparatus and method for killing an instruction after loading the instruction into an instruction queue in a pipelined microprocessor |
US7178010B2 (en) * | 2003-01-16 | 2007-02-13 | Ip-First, Llc | Method and apparatus for correcting an internal call/return stack in a microprocessor that detects from multiple pipeline stages incorrect speculative update of the call/return stack |
US20050055544A1 (en) * | 2003-07-30 | 2005-03-10 | International Business Machines Corporation | Central processing unit having a module for processing of function calls |
US7237098B2 (en) * | 2003-09-08 | 2007-06-26 | Ip-First, Llc | Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence |
US7243219B2 (en) * | 2003-12-24 | 2007-07-10 | Intel Corporation | Predicting instruction branches with a plurality of global predictors using varying amounts of history instruction |
JP2006040173A (ja) * | 2004-07-29 | 2006-02-09 | Fujitsu Ltd | 分岐予測装置および分岐予測方法 |
US20060095752A1 (en) * | 2004-08-28 | 2006-05-04 | Min-Cheng Kao | [method for return instruction identification and associated method for return target pointer prediction] |
JP2007041837A (ja) * | 2005-08-03 | 2007-02-15 | Nec Electronics Corp | 命令プリフェッチ装置及び命令プリフェッチ方法 |
US20080126771A1 (en) * | 2006-07-25 | 2008-05-29 | Lei Chen | Branch Target Extension for an Instruction Cache |
US7444501B2 (en) * | 2006-11-28 | 2008-10-28 | Qualcomm Incorporated | Methods and apparatus for recognizing a subroutine call |
US7882338B2 (en) * | 2008-02-20 | 2011-02-01 | International Business Machines Corporation | Method, system and computer program product for an implicit predicted return from a predicted subroutine |
JP2010049656A (ja) * | 2008-08-25 | 2010-03-04 | Toshiba Storage Device Corp | プロセッサ、プログラム及び記憶装置 |
US8402541B2 (en) * | 2009-03-12 | 2013-03-19 | Microsoft Corporation | Proactive exploit detection |
US10042776B2 (en) * | 2012-11-20 | 2018-08-07 | Arm Limited | Prefetching based upon return addresses |
GB2509830B (en) * | 2013-02-11 | 2014-12-24 | Imagination Tech Ltd | Speculative load issue |
US10108424B2 (en) * | 2013-03-14 | 2018-10-23 | Nvidia Corporation | Profiling code portions to generate translations |
US9489204B2 (en) * | 2013-03-15 | 2016-11-08 | Qualcomm Incorporated | Method and apparatus for precalculating a direct branch partial target address during a misprediction correction process |
US10289604B2 (en) * | 2014-08-07 | 2019-05-14 | Wisconsin Alumni Research Foundation | Memory processing core architecture |
US10908902B2 (en) * | 2016-05-26 | 2021-02-02 | International Business Machines Corporation | Distance based branch prediction and detection of potential call and potential return instructions |
US11099849B2 (en) * | 2016-09-01 | 2021-08-24 | Oracle International Corporation | Method for reducing fetch cycles for return-type instructions |
JP7486893B2 (ja) * | 2020-05-18 | 2024-05-20 | 株式会社ディスコ | ブレード交換装置及びブレード交換装置の調整方法 |
US11663126B1 (en) | 2022-02-23 | 2023-05-30 | International Business Machines Corporation | Return address table branch predictor |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4399507A (en) * | 1981-06-30 | 1983-08-16 | Ibm Corporation | Instruction address stack in the data memory of an instruction-pipelined processor |
JPS6051948A (ja) * | 1983-08-31 | 1985-03-23 | Hitachi Ltd | 情報処理装置 |
US5136696A (en) * | 1988-06-27 | 1992-08-04 | Prime Computer, Inc. | High-performance pipelined central processor for predicting the occurrence of executing single-cycle instructions and multicycle instructions |
US5093778A (en) * | 1990-02-26 | 1992-03-03 | Nexgen Microsystems | Integrated single structure branch prediction cache |
US5230068A (en) * | 1990-02-26 | 1993-07-20 | Nexgen Microsystems | Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence |
US5276882A (en) * | 1990-07-27 | 1994-01-04 | International Business Machines Corp. | Subroutine return through branch history table |
US5623614A (en) * | 1993-09-17 | 1997-04-22 | Advanced Micro Devices, Inc. | Branch prediction cache with multiple entries for returns having multiple callers |
US5604877A (en) * | 1994-01-04 | 1997-02-18 | Intel Corporation | Method and apparatus for resolving return from subroutine instructions in a computer processor |
US5881278A (en) * | 1995-10-30 | 1999-03-09 | Advanced Micro Devices, Inc. | Return address prediction system which adjusts the contents of return stack storage to enable continued prediction after a mispredicted branch |
US5850543A (en) * | 1996-10-30 | 1998-12-15 | Texas Instruments Incorporated | Microprocessor with speculative instruction pipelining storing a speculative register value within branch target buffer for use in speculatively executing instructions after a return |
-
1998
- 1998-02-17 US US09/024,691 patent/US5974543A/en not_active Expired - Lifetime
- 1998-12-03 DE DE19855806A patent/DE19855806A1/de not_active Withdrawn
-
1999
- 1999-01-18 JP JP11009258A patent/JP3004013B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US5974543A (en) | 1999-10-26 |
JP3004013B2 (ja) | 2000-01-31 |
JPH11259298A (ja) | 1999-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19855806A1 (de) | Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen | |
DE69534148T2 (de) | Rechnersystem zur Ausführung von Verzweigungsbefehlen | |
DE3750935T2 (de) | Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner. | |
DE69738188T2 (de) | Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor | |
DE69031991T2 (de) | Verfahren und Gerät zur Beschleunigung von Verzweigungsbefehlen | |
DE3687744T2 (de) | Aktualisierung der verzweigungsgeschichtstabelle in einem pipeline-verarbeitungssystem. | |
DE3851746T2 (de) | Sprungvorhersage. | |
DE3851488T2 (de) | Registerverwaltungssystem mit Ausführung von Befehlen in Unordnung in einem Computerprozessor. | |
DE69028153T2 (de) | Cache-Speicherfehlgriffsvorhersageverfahren und -vorrichtung | |
DE3751474T2 (de) | Verzweigungsstrom-Koprozessor. | |
DE3785897T2 (de) | Steuervorrichtung zum vorabruf von befehlen. | |
DE69929936T2 (de) | Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem | |
DE19983517B4 (de) | Verfahren und Einrichtung zur Abzweigvorhersage unter Verwendung einer Abzweig-Vorhersagetabelle einer zweiten Stufe | |
DE68911398T2 (de) | Methode und digitaler computer zum vorausholen von vektordaten aus dem speicher in einem für skalaverarbeitung bestimmten speichersystem. | |
DE69133302T2 (de) | Registerabbildung in einem einzigen Taktzyklus | |
DE3116100C2 (de) | Datenverarbeitungseinheit | |
DE69433621T2 (de) | Geraet zur verarbeitung von befehlen in einem rechnersystem | |
DE68927492T2 (de) | Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten | |
DE69024068T2 (de) | Verfahren und Datenverarbeitungseinheit zur Pipeline- Verarbeitung von Register- und Registeränderungs- Spezifizierern in dem gleichen Befehl | |
DE19527031C2 (de) | Verzweigungsprozessor für ein Datenverarbeitungssystem und Verfahren zum Betreiben eines Datenverarbeitungssystems | |
DE60009151T2 (de) | Vorhersage von datenbeförderung von speicher- zum ladebefehl mit untrainierung | |
DE3587167T2 (de) | Geraet zur vektorverarbeitung. | |
DE4335475A1 (de) | Datenverarbeitungseinrichtung mit Cache-Speicher | |
DE69027932T2 (de) | Cpu-pipeline mit registerfile-bypass durch adressvergleich bei aktualisierungen/zugriffen | |
DE69030931T2 (de) | Mehrfachsequenzprozessorsystem |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8139 | Disposal/non-payment of the annual fee |