DE19855806A1 - Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen - Google Patents

Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen

Info

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
Application number
DE19855806A
Other languages
English (en)
Inventor
Rolf Hilgendorf
Oliver Laub
Hans-Werner Tast
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE19855806A1 publication Critical patent/DE19855806A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation 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

Gebiet der Erfindung
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.
Hintergrund der Erfindung
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.
Zusammenfassung der Erfindung
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.
Kurze Beschreibung der Zeichnungen
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.
Genaue Beschreibung eines bevorzugten Ausführungsbeispiels der Erfindung
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.
DE19855806A 1998-01-23 1998-12-03 Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen Withdrawn DE19855806A1 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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