DE3650232T2 - Rechnersteuerung mit Verzweigung in einem einzigen Zyklus. - Google Patents

Rechnersteuerung mit Verzweigung in einem einzigen Zyklus.

Info

Publication number
DE3650232T2
DE3650232T2 DE3650232T DE3650232T DE3650232T2 DE 3650232 T2 DE3650232 T2 DE 3650232T2 DE 3650232 T DE3650232 T DE 3650232T DE 3650232 T DE3650232 T DE 3650232T DE 3650232 T2 DE3650232 T2 DE 3650232T2
Authority
DE
Germany
Prior art keywords
instruction
branch
pipeline
cache
cycle
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE3650232T
Other languages
English (en)
Other versions
DE3650232D1 (de
Inventor
Brian Case
Rod Fleck
Cheng-Gang Kong
Ole Moller
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Application granted granted Critical
Publication of DE3650232D1 publication Critical patent/DE3650232D1/de
Publication of DE3650232T2 publication Critical patent/DE3650232T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/323Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

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)
  • Hardware Redundancy (AREA)

Description

  • Die vorliegende Erfindung betrifft ein Verfahren und eine Vorrichtung zum Verarbeiten von Befehlen für einen digitalen Rechner und insbesondere zum Verarbeiten von Verzweigungsbefehlen in einer Pipeline, wobei nur der einzelne Zyklus verwendet wird, der in der Pipeline einem Befehl zugeordnet ist, ohne daß eine Verzweigungsvorhersage oder eine komplexe Schaltung erforderlich ist.
  • Hintergrund der Erfindung
  • Rechner mit reduziertem Befehlssatz (RISC) bedienen sich der Vorteile eines einfachen Dekodierens und der Pipeline-Abarbeitung von Befehlen. Verzweigungsbefehle sind in einem Rechner zum Steuern des Befehlsflusses vonnöten. Ein Verzweigungsbefehl in einem Pipeline-Rechner verzögert normalerweise die Pipeline-Abarbeitung bis der Befehl an der Stelle, an die der Verzweigungsbefehl die Steuerung übertragen hat, d.h. an der "Verzweigungsadresse", abgerufen wird. Somit behindern diese Befehle den normalen Fließbandablauf der Befehle. Aus dem Stand der Technik sind aufwendige Verfahren bekannt, die die Auswirkungen von Verzweigungen verzögern, sogenannte "verzögerte Verzweigungen", oder Verzweigungen im voraus bestimmen und falsche Vorausbestimmungen korrigieren oder mehrere Befehle abrufen, bis die Richtung der Verzweigung bekannt ist.
  • Ein solches Verfahren zum Verzögern der Auswirkungen von Verzweigungen ist in Computer Design, Bd. 24, Nr. 7, Juli 1985, S. 111-117, Littleton, Massachussetts, USA, B. Case: "Building blocks yield fast 32-bit RISC machines" offenbart.
  • Da die meisten dieser Verfahren für eine RISC-Architektur zu komplex sind, wird hierfür die verzögerte Verzweigung gewählt; die verzögerte Verzweigung ermöglicht es RISC-Geräten stets den (physisch) nächsten Befehl während des Abarbeitens des gegenwärtigen Befehls abzurufen. Da die meisten RISC- Geräte das Fließbandverarbeiten von Befehlen verwenden, sind im Stand der Technik beim verzögerten Verzweigen zwei Befehlsprozessortaktzyklen zum Ausführen eines Verzweigungsbefehls erforderlich. Dies unterbricht die Befehls-Pipeline. Um diese Unterbrechungen zu eliminieren, wurden in den Stand der Technik komplexe Schaltungen eingeführt. Da Verzweigungsbefehle in einem Befehlsfluß häufig vorkommen, waren herkömmliche Rechner langsamer und komplexer als erwünscht.
  • Da Subroutinen-, Interrupt- und Trap-Routinenaufrufvorgänge in ähnlicher Weise Verzweigungen erfordern, treten die Zeitverluste, die bei den bekannten RISC-Geräten erzeugt werden, auch bei diesen häufig vorkommenden Prozeduren auf. Dementsprechend besteht ein Bedarf an einem Befehlsprozessor, der zur Verwendung in einem RISC-Gerät geeignet ist und Verzweigungen in einem einzigen Zyklus durchführt und somit die Befehls-Pipeline nicht unterbricht, während er eine vollkommen genaue Verzweigungsvorhersage ermöglicht, ohne komplexe Schaltungen zu erfordern.
  • Die Prozessorsteuerschaltung und die Verfahren gemäß der Erfindung sind in den unabhängigen Patentansprüchen dargelegt.
  • Der zu beschreibende Befehlsprozessor weist einen Programmzähler zur Verwendung in einem Pipeline-RISC-Gerät auf, bei dem die Verzweigungsbefehle ein Bit enthalten, das in einem Allzweckregister anstatt in einem Bedingungscoderegister gespeichert ist, wodurch es möglich ist, die Verzweigungsbedingung als normalen Befehlsoperanden anstatt als einen Sonderfall innerhalb des Bedingungscoderegisters zu behandeln. Während des Dekodierzyklus des Verzweigungsbefehls wird das Bedingungsbit abgerufen und die "Verzweigungszieladresset wird je nach der Art des abzuarbeitenden Verzweigungsbefehls von einem separaten Relativadressenaddierer berechnet oder aus einem Register abgerufen.
  • Zu Beginn des Abarbeitungszyklus des Verzweigungsbefehls steuern das Bedingungsbit und die Zieladresse, welcher Befehl abgerufen werden soll, wobei die Verzweigung nicht erfolgt, bis der nachfolgende Befehl abgearbeitet ist. Diese Steuerung erfolgt durch einen Multiplexer. Auf diese Weise ist kein Ersetzen des Befehls, der dem Verzweigungsbefehl in der Pipeline physisch unmittelbar folgt, erforderlich und die Pipeline kann somit mit der maximalen Geschwindigkeit ohne Unterbrechung arbeiten. Dementsprechend erfolgt die Verzweigung innerhalb des zugeordneten Einzelzyklus der Pipeline.
  • Ein Rechner, der diesen Prozessor aufweist, führt ferner problemlos Sonderverarbeitungsvorgänge zum Aufrufen von Subroutinen, Interrupts und Trap-Routinen durch.
  • Kurzbeschreibung der Zeichnungen
  • Fig. 1 ist ein Blockschaltbild eines Befehlsprozessors, der eine erfindungsgemäße Programmzählereinheit aufweist, die eine Ein-Zyklus-Verzweigung ermöglicht;
  • Fig. 2 ist ein Zeitsteuerungsdiagramm der Pipeline-Stufen während der Verarbeitung eines Verzweigungsbefehls durch den erfindungsgemäßen Befehlsprozessor; und
  • Fig. 3 ist ein mehrteiliges Zeitsteuerungsdiagramm der Pipeline-Stufen während der Abarbeitung einer Interrupt-Routine durch den Befehlsprozessor und während der Rückkehr aus der Interrupt-Routine.
  • Detaillierte Beschreibung des bevorzugten Ausführungsbeispiels
  • Ein Programmzählerteil 10 einer digitalen Prozessorsteuerung mit der erfindungsgemäßen Ein-Zyklus-Verzweigungsfähigkeit ist als Blockschaltbild in Fig. 1 dargestellt. Ein nicht in Fig. 1 dargestelltes Befehlsregister enthält den Befehl, der gegenwärtig von dem Prozessor 10 abgearbeitet wird. Verlangt dieser Befehl die Ausführung einer Verzweigung, wird eine Verzweigungsbedingung an einer vorbestimmten Bitposition in einem in Fig. 1 nicht dargestellten Allzweckregister gespeichert, wo sie von dem Prozessor 10 als Befehlsoperand behandelt wird. Während des Befehlsdekodierungszyklus des Prozessors 10 wird, wenn eine Verzweigung dekodiert wird, die Verzweigungsbedingung aus dem Allzweckregister rückgewonnen und während des Befehlsausführungszyklus des Prozessors 10 verwendet. Die Verzweigungsbedingung und eine im folgenden beschriebene Zieladresse dienen zur Bestimmung des Speicherplatzes des von dem Prozessor 10 als nächstes zu verarbeitenden Befehls. Die in Fig. 4 dargestellte einfache Logik ermöglicht einen unterbrechungsfreien Betrieb einer Befehls- Pipeline selbst wenn ein Befehl eine bedingte Verzweigung verlangt.
  • Der Prozessor 10 führt Verzweigungsbefehle aus, die eines von drei Verzweigungszielen angeben können, nämlich eine "relative oder absolute Verzweigungsadresse", eine "indirekte Verzweigungsadresse" oder eine "Trap-Adresse". Eine vierte, die "Fortsetzungsadresse" ist lediglich diejenige des nächstfolgenden Befehls, der abgearbeitet wird, wenn keine Verzweigung erfolgt. Die in Fig. 1 dargestellten Pfade zeigen nur den Datenfluß zwischen den angegebenen Elementen und können mehrere Signale parallel leiten. Es sind ferner Steuersignalpfade erforderlich, wie für den Fachmann auf diesem Gebiet ersichtlich, jedoch sind diese nicht in Fig. 1 dargestellt, da dem Fachmann bekannt ist, wie diese Elemente zu steuern sind.
  • Wie in Fig. 1 dargestellt, weist der Prozessor 10 eine Verzweigungszieladressen(-BRN TGT-)multiplexer-/registereinrichtung 12 auf, die aus einer nicht in Fig. 1 dargestellten Allzweckregisterdatei über einen Datenpfad 14 eine Adresse empfängt, welche die Stelle, die sogenannte "indirekte Verzweigungsadresse", enthält, zu der die Verzweigung durch den Prozessor 10 durchgeführt werden soll. Eine zweite Art der Verzweigungsadressen, die sogenannte "relative oder absolute Verzweigungsadresse" wird durch einen Addierer 16 bestimmt, der an einem ersten Eingang über einen Datenpfad 18 einen Verzweigungsverschiebungswert von dem Befehlsregister empfängt. Dieser Wert kann zu der Adresse des gegenwärtig ausgeführten Befehls hinzuaddiert werden, der an einem zweiten Eingang des Addierers 16 über einen Datenpfad 20 empfangen wird, wodurch die relative Verzweigungsadresse erzeugt wird. Sollte keine Addition erfolgen, erzeugt der Addierer 16 nur die Verzweigungsverschiebungsadresse, wodurch die absolute Verzweigungsadresse entsteht. Die von dem Addierer 16 erzeugte Adresse wird über den Datenpfad 22 zu einem zweiten Eingang des BRN-TGT-Multiplexer/Registers 12 geleitet.
  • Die von dem BRN-TGT-Multiplexer/Register 12 gewählte Verzweigungszieladresse, die durch ein von dem Prozessor 10 entsprechend dem vom Prozessor 10 ausgeführten Verzweigungsbefehl erzeugtes Steuersignal bestimmt ist, wird an einem Ausgang desselben erzeugt und über den Datenpfad 24 einem ersten Eingang eines Multiplexers (MUX) 26 zugeführt, dessen Ausgangsanschluß über einen Datenpfad 28 mit einem Eingangsanschluß eines Befehls-Cache 30 verbunden ist. Der Befehls- Cache 30 enthält einen Satz von Speicherplätzen, 512 bei dem bevorzugten Ausführungsbeispiel, zum Speichern von Sätzen zusammenhängender Befehle, die einen Teil des gegenwärtig von dem Prozessor 10 abgearbeiteten programms darstellen. Das Anlegen einer Adresse an den Eingangsanschluß des Caches 30 bewirkt, daß die an dieser Stelle gespeicherte Adresse dem Befehlsregister des Prozessors 10 zugeführt wird, um so der nächste vom Prozessor auszuführende Befehl zu werden.
  • Die von dem MUX 26 erzeugte Adresse wird ebenfalls von einem Programmzähler(-PC)-Stackregister 32 empfangen, das aufweist: ein Dekodier-PC-Register 34, dem über den Datenpfad 28 die vom MUX 26 erzeugte Adresse zugeführt wird, ein Ausführungs-PC-Register 36, dem über den Datenpfad 38 der Inhalt des Dekodier-PC-Registers 34 zugeführt wird, und ein Speicher-PC-Register 40, dem über einen Datenpfad 42 der Inhalt des Ausführungs-PC-Registers 36 zugeführt wird. Das PC-Stackregister 32 verwendet eine vierstufige Befehlsadressenpipeline, wie im folgenden in Zusammenhang mit Fig. 2 beschrieben.
  • Die von dem MUX 26 erzeugte Adresse wird ferner von einem Adresseninkrementierer (+1) 44 empfangen, der an einem Ausgang die über den Datenpfad 28 an ihn angelegte und um 1 inkrementierte Adresse, d.h. die Fortsetzungsadresse, erzeugt. Ein Programmzähler(-PROG CNT)register 46 empfängt die vom Inkrementierer 44 erzeugte Fortsetzungsadresse über den Datenpfad 48 und speichert diese Adresse. Die Fortsetzungsadresse wird an einem Ausgang des PROG-CNT-Registers 46 erzeugt und über den Datenpfad 20 dem zweiten Eingang des Addierers 16 und einem zweiten Eingang des MUX 26 zugeführt.
  • Der MUX 26 empfängt ein auf der zuvor beschriebenen Verzweigungsbedingung basierendes Steuersignal, um zu bestimmen, ob die auf dem Datenpfad 24 angelegte Verzweigungszieladresse oder die auf dem Datenpfad 20 angelegte Fortsetzungsadresse an den Befehls-Cache 30 zum Abrufen des nächsten von dem Prozessor 10 auszuführenden Befehls angelegt wird. Ein Befehl, der eine Verzweigung verlangt, wird von dem Prozessor 10 derart verarbeitet, daß die Verzweigung nicht eintritt, bis der dem Verzweigungsbefehl folgende Befehl abgearbeitet ist. Auf diese Weise arbeitet die von der PC-Stack-Pipeline 32 implementierte Befehls-Pipeline ohne Unterbrechung, selbst wenn ein Verzweigungsbefehl in die Pipeline eintritt, da ein Ersetzen des dem Verzweigungsbefehl normalerweise folgenden Befehls in der Pipeline nicht erforderlich ist. Daher erfolgt die Verzweigung innerhalb des einen zugeordneten Zyklus der Pipeline, wie im folgenden in Zusammenhang mit Fig. 2 beschrieben.
  • Der erfindungsgemäße Prozessor 10 verwendet eine vierstufige Pipeline, bestehend aus einer Befehlsabrufstufe, einer Befehlsdekodierstufe, einer Befehlsausführungsstufe und einer Datenspeicherstufe. Die verschiedenen Stufen der vom Prozessor 10 verwendeten Befehls-Pipeline sind in Fig. 2 dargestellt, welche die Ausführung eines Verzweigungsbefehls zeigt.
  • Durch Verwenden des sogenannten Verfahrens der "verzögerten Verzweigung" kann der Prozessor 10 die Ausführung eines Verzweigungsbefehls innerhalb eines einzigen Prozessorzyklus durchführen, ohne daß eine komplexe Logikschaltung erforderlich wäre. Der Abstand zwischen den vertikalen gestrichelten Linien in Fig. 2 entspricht einem einzelnen Prozessorzyklus, wobei jeder Zyklus die gleiche Dauer hat. Von t&sub0; bis t&sub1; erstreckt sich während des ersten Zyklus des Prozessors 10 "BRANCH 1", bei dem ein Verzweigungsbefehl aus dem Befehls- Cache 30 abgerufen und in dem Befehlsregister des Prozessors 10 gespeichert wird. Von t&sub1; bis t&sub2; erstreckt sich während des zweiten Zyklus des Prozessors 10 "BRANCH 2", bei dem der in dem Befehlsregister gespeicherte Befehl dekodiert wird. Die von dem Befehl erforderte Verzweigungsbedingung wird aus dem zuvor beschriebenen Allzweckregister rückgewonnen und die von dem Befehl spezifizierte Verzweigungszieladresse wird wie zuvor beschrieben ermittelt und über den Datenbus 24 dem ersten Eingang des MUX 26 zugeleitet.
  • Während des sich von t&sub2; bis t&sub3; erstreckenden Ausführungszyklus "BRANCH 3" des Verzweigungsbefehls bewirkt die Bedingung, daß der Prozessor 10 ein Steuersignal erzeugt, das seinerseits den MUX 26 veranlaßt, entweder die Verzweigungszieladresse oder die Fortsetzungsadresse zur Weiterleitung an den Befehls-Cache 30 auszuwählen, um diese zum Abrufen des nächsten (logischen) Befehls zu verwenden. Während des Rückspeicherzyklus, der sich von t&sub3; bis t&sub4; erstreckt, befindet sich der dem Verzweigungsbefehl (physisch) nachfolgende Befehl in der Ausführungsstufe des Prozessors 10.
  • Wie in Fig. 2 dargestellt, folgt dem Verzweigungsbefehl physisch ein Verzweigungsverzögerungsbefehl "DELAY", der stets ausgeführt wird; die Verzweigung selbst erfolgt erst nach dem Verzweigungsverzögerungsbefehl, woraufhin der Befehl "TARGET", zu dem der Verzweigungsbefehl überleitet, ausgeführt wird. Auf diese Weise kann der Prozessor 10 stets den nächsten Befehl während des Ausführens des gegenwärtigen Befehls abrufen, d.h., er kann in einem Pipeline-Modus arbeiten, ohne die Pipeline unterbrechen oder das Abrufen eines Befehls rückgängig machen zu müssen. Fig. 2 zeigt, daß der Prozessor 10 während des zweiten Zyklus "DELAY 1" den Befehl aus dem Cache 30 abruft, der dem Verzweigungsbefehl, dessen Abruf-, Dekodierungs-, Ausführungs- und Speicherzyklen gerade beschrieben wurden, physisch folgt. Dieser Befehl belegt somit die Stufe in der Pipeline, die dem vorangehenden Verzweigungsbefehl unmittelbar folgt. Daher erfolgen die Dekodierungs-, Ausführungs- und Speicherzyklen des Verzweigungsverzögerungsbefehls "DELAY 2", "DELAY 3" und "DELAY 4" während des dritten, vierten und fünften Zyklus des Prozessors 10, wie in Fig. 2 dargestellt.
  • Der Befehl "TARGET", auf den die Steuerung durch den Verzweigungsbefehl übergeht, belegt die Stufe in der Pipeline, die dem Verzögerungsbefehl unmittelbar folgt, wie in Fig. 2 dargestellt. Daher erfolgen die Abruf-, Dekodierungs-, Ausführungs- und Speicherzyklen des TARGET-Befehls "TARGET 1", "TARGET 2", "TARGET 3" und "TARGET 4" während des vierten, fünften, sechsten und siebten Zyklus des Prozessors 10, wie in Fig. 2 dargestellt. Die Reihenverbindung des Dekodier-PC- Registers 34, des Ausführungs-PC-Registers 36 und des Speicher-PC-Registers 40, die mit den Intervallen t&sub0;, t&sub1;, ..., t&sub6; getaktet sind, implementieren die zuvor beschriebene Pipeline, durch Speichern der Adressen der Befehle, die den entsprechenden Pipeline-Stufen zugeordnet sind.
  • Der erfindungsgemäße Prozessor 10 kann eine Verzweigung, die von einem Subroutinenaufrufbefehl gefordert ist, ausführen, indem er eine Modifizierung des zuvor in Zusammenhang mit Fig. 2 beschriebenen Verzweigungsverzögerungsverfahrens verwendet. Der Subroutinenaufrufbefehl wird während des von t&sub0; bis t&sub1; dauernden ersten Zyklus des Prozessors 10, der in Fig. 2 mit "BRANCH 1" bezeichnet ist, aus dem Cache 30 abgerufen und in dem Befehlsregister gespeichert.Während des zweiten Zyklus des Prozessors 10, "BRANCH 2", wird der Subroutinenaufrufbefehl dekodiert und es wird der Inhalt des PROG-CNT-Registers 46 auf dem Datenpfad 20 erzeugt und über den MUX 26 auf dem Datenpfad 28 in eine in Fig. 1 nicht dargestellte Datenpfad-Pipeline geleitet. Während des dritten Zyklus des Prozessors 10, "BRANCH 3", wird der Inhalt des PROG-CNT-Registers 46 in einer in Fig. 2 nicht dargestellten, Arithmetik-Logik-Einheit des Prozessors 10 um vier inkrementiert, um eine Adresse für die Rückkehr aus der Subroutine zu bilden. Während des vierten Zyklus des Prozessors 10, "BRANCH 4", wird die Rückkehradresse in einem Allzweckregister gespeichert. In allen anderen Belangen entspricht das Verfahren zum Ausführen eines Subroutinenaufrufbefehls der vohergehenden Beschreibung in Zusammenhang mit Fig. 2 in bezug auf das Ausführen eines Verzweigungsbefehls wobei der Befehl "TARGET", an den die Steuerung aufgrund des Subroutinenaufrufbefehls übergeht, der erste Befehl der Subroutine ist.
  • Da der erfindungsgemäße Prozessor 10 in der Lage ist, Interrupts und Traps zu verarbeiten, muß spezielles Augenmerk auf das Auftreten eines Interrupts oder Traps zwischen einem Verzweigungs- oder Subroutinenaufrufbefehl und einem diesem folgenden Verzweigungsverzögerungsbefehl gelegt werden. In diesem Fall muß der Prozessor 10 veranlassen, daß der Verzweigungsverzögerungsbefehl nach der Rückkehr aus der Interrupt- oder Trap-Routine zusätzlich zum Target-Befehl, an den die Steuerung durch den Verzweigungs- oder Aufrufbefehl übergeht, ausgeführt wird. Um dieses Ergebnis bei der Rückkehr aus einer Interrupt- oder Trap-Routine sicherzustellen, muß der Prozessor 10 zwei Verzweigungen durchführen: eine erste Verzweigung bewirkt die Ausführung des Verzweigungsverzögerungsbefehls, die durch das Auftreten des Interrupts oder des Traps verhindert wurde, und eine zweite Verzweigung, die das Ausführen des Target-Befehls bewirkt, der dem Verzweigungsverzögerungsbefehl folgte.
  • Die verschiedenen Stufen der Befehls-Pipeline, die von dem Prozessor 10 zur Ausführung einer Interrupt- oder Trap-Routine, die zwischen einem Verzweigungs- oder einem Subroutinenaufrufbefehl und dem diesem folgenden Verzweigungsverzögerungsbefehl auftritt, sind in Fig. 3A dargestellt. Die von dem Prozessor 10 für die Rückkehr aus der Interrupt- oder Trap-Routine verwendeten Pipeline-Stufen sind in Fig. 3B dargestellt. Fig. 3A stellt den Betrieb des Prozessors 10 beim Auftreten eines Interrupts zum Zeitpunkt t&sub1; dar. Modifikationen des letzteren Vorgangs werden hierin nicht beschrieben, da sie vom Fachmann vorgenommen werden können. Zu Zwecken der Darstellung ist das Abrufen eines Schiebebefehls (SHIFT) aus dem Befehls-Cache 30 in dem vorhergehenden Zyklus, der sich von t&sub0; bis t&sub1; erstreckt, dargestellt. Die Pipeline enthält ferner, zu Zwecken der Illustration, einen Sprungbefehl (JUMP), dem ein Addierbefehl (ADD) folgt, welchem wiederum der Schiebebefehl (SHIFT) folgt. Da der Sprungbefehl (JUMP) kurz vor dem Auftreten des Interrupts ausgeführt wurde und der Addier- (ADD) sowie der Schiebebefehl (SHIFT) noch auszuführen waren, muß der Prozessor 10 aus der Interrupt-Routine zurückkehren und anschließend den Addier- und den Schiebebefehl ausführen. Die Adressen dieser Befehle müssen vor dem Übergang zur Interrupt-Routine gespeichert werden. Dementsprechend ist in Fig. 3A dargestellt, daß ein Befehl "SAVE-PC-JUMP" während des Zyklus von t&sub1; bis t&sub2; nach dem Auftreten des Interrupts abgerufen wird. Die bewirkt, daß der Prozessor 10 die Adresse des Verzweigungsverzögerungsbefehls, nämlich des Addierbefehls speichert, der während des auf den Interrupt folgenden Zyklus von t&sub1; bis t&sub2; abzuarbeiten gewesen wäre. Der Inhalt des Ausführungs-PC-Registerbereichs 36 (Fig. 1) des PC-Stackregisters 32 wird dementsprechend gespeichert. Ferner bewirkt der Befehl "SAVE-PC-JUMP", daß der Prozessor 10 den Inhalt des BRN-TGT-Multiplexers/Registers 12 auf den Datenpfad 24 und über den MUX 26 auf den Datenpfad 28 und von dort zum Befehls-Cache 30 leitet. Dieser Inhalt ist die Adresse des ersten Befehls der Interrupt-Routine. Wie in Fig. 3A dargestellt, ruft der Prozessor 10 während des Zyklus von t&sub1; bis t&sub2; einen Befehl "SAVE-PC" ab, der den Prozessor 10 veranlaßt, die Adresse des Target-Befehls, nämlich des Schiebebefehls zu speichern, der normalerweise dem Addierbefehl gefolgt wäre. Der erste Befehl der Interrupt-Routine, der in Fig. 3A als "INTERRUPT HANDLER" bezeichnet ist, wird sodann vom Prozessor 10 während des Zyklus von t&sub0; bis t&sub1; abgerufen.
  • Das Dekodieren und das Ausführen des Schiebe- und des Addierbefehls wird dementsprechend abgebrochen, wie in Fig. 3A durch die Bezeichnungen "(ADD)" und "(SHIFT)" in den Dekodier- und der Ausführungsstufen angegeben. In den nachfolgenden Speicherstufen bewirken die Befehle "SAVE-PC-JUMP" und "SAVE-PC", daß der Prozessor 10 die Adressen des Addierbefehls und des Schiebebefehls speichert, wie in Fig. 3A angegeben.
  • Wie in Fig. 3B dargestellt, wird die Interrupt-Routine abgeschlossen, indem der Prozessor 10 veranlaßt wird, zwei Indirekt-Sprung-Befehle (JUMP INDIRECT) abzurufen, die gemäß Fig. 3B während der Zyklen von t&sub0;' bis t&sub1;' und t&sub1;' bis t&sub2;' dekodiert werden. Zur Rückkehr aus der Interrupt-Routine führt der Prozessor 10 einen indirekten Sprung über den, wie zuvor in Zusammenhang mit Fig. 3A beschrieben, durch den Befehl "SAVE-PC" gespeicherten Wert durch und ruft dementsprechend den Addierbefehl während des Zyklus von t&sub1;' bis t&sub2;' aus dem Befehls-Cache 30 ab und führt einen indirekten Sprung über den durch den Befehl "SAVE-PC-JUMP" gespeicherten Wert durch und ruft dementsprechend den Addierbefehl während des Zyklus von t&sub2;' bis t&sub3;' aus dem Befehls-Cache 30 ab, wie in Fig. 3B dargestellt. Somit führt der Prozessor 10 diese Befehle entsprechend der vor dem Auftreten des Interrupts gegebenen Reihenfolge ihres Auftretens in der Pipeline aus.

Claims (8)

1. Digitale Befehlsprozessorsteuerungsschaltung, die derart ausgebildet ist, daß sie in einem einzigen Zyklus zyklisch Befehle aus einem mehrere Mehrbit-Verzweigungsbefehle enthaltenden Befehlssatz ausführt, wobei die Befehle in einem Befehls-Cache (30) gespeichert sind, der mehrere Befehlsspeicherplätze mit jeweils einem Designator aufweist, mit:
- einem Befehlsregister zum Empfangen eines Befehls des Befehlssatzes von dem Befehls-Cache;
- einem Befehlsdekodierer zum Empfangen eines Befehls des Befehlssatzes von dem Befehlsregister;
- einer Programmzählereinrichtung (46, 44) zum Erzeugen von Signalen, welche die nächste Befehlsadresse in dem Cache (30) angeben, mit der fortgefahren werden soll;
- einer Verzweigungszieladressenerzeugungseinrichtung mit einer Addiereinrichtung (16), die auf den Ausgang (20) der Programmzählereinrichtung (46, 44) und ein vorbestimmtes Verzweigungsverschiebungssignal (18) reagiert, um die arithmetische Kombination dieser Signale als relative oder absolute Verzweigungsadresse an einem ihrer Ausgänge (22) zu erzeugen;
ferner gekennzeichnet durch:
- eine erste Multiplexereinrichtung (26), deren erster Eingang zum Empfang des Ausgangs der Addiereinrichtung (16) und deren zweiter Eingang zum Empfang des Ausgangs der Programmzählereinrichtung (46, 44) verbunden ist und die derart aufgebaut ist, daß sie einen der Eingänge in Reaktion auf ein erstes Steuersignal wahlweise mit einem Ausgang verbindet, der zum Abrufen eines Befehls aus dem Befehls-Cache (30) verbunden ist;
- eine zweite Multiplexereinrichtung (12), deren erster Eingang mit dem Ausgang (22) des Addierers (16) verbunden ist, deren zweiter Eingang zum Empfang von Signalen (14) verbunden ist, die eine durch die Verzweigungsbefehle angegebene indirekte Verzweigungsadresse angeben, und die derart aufgebaut ist, daß sie einen dieser Eingänge in Reaktion auf ein zweites Steuersignal wahlweise mit dem ersten Eingang der ersten Multiplexereinrichtung verbindet;
wobei die Vorrichtung derart aufgebaut ist, daß
- das erste Steuersignal in Reaktion auf einen gerade ausgeführten dekodierten Befehl ausgegeben wird;
- das zweite Steuersignal in Reaktion auf einen gerade dekodierten Befehl ausgegeben wird;
- ein Verzögerungsbefehl, der während jedes Zyklus aus dem Befehls-Cache abgerufen wird, der unmittelbar auf den Abrufzyklus jedes der Verzweigungsbefehle folgt, das Abrufen eines Zielbefehls in Reaktion auf das Ausführen eines Verzweigungsbefehls selbst in dem Fall ermöglicht, daß der Verzweigungsbefehl eine bedingte Verzweigung verlangt.
2. Digitale Befehlsprozessorsteuerung nach Anspruch 1, gekennzeichnet durch eine Pipeline-Stackregistereinrichtung (32), die mit dem Ausgangsanschluß der ersten Multiplexereinrichtung (26) zum Speichern von wenigstens drei Signalen verbunden ist, die Befehls-Cache-Speicherplatzdesignatoren angeben, wobei jeder darin bezeichnete Befehl eine Stufe in einer Befehls-"Pipeline" einnimmt, zum Erzeugen von Signalen, die den darin gespeicherten Inhalt angeben und zum Aktualisieren der darin gespeicherten Speicherplatzdesignatoren, derart, daß der von dem ersten Multiplexer (26) während des vorherigen Zyklus des Befehlsprozessors geführte Befehls-Cache-Speicherplatzdesignator den Inhalt eines ersten Speicherplatzes desselben ersetzt, der in dem ersten Speicherplatz gespeicherte Befehls-Cache-Speicherplatzdesignator den Inhalt eines zweiten Speicherplatzes ersetzt und der in dem zweiten Speicherplatz gespeicherte Befehls-Cache- Speicherplatzdesignator den Inhalt eines dritten Speicherplatzes ersetzt.
3. Digitaler Befehlsprozessor nach Anspruch 2, dadurch gekennzeichnet, daß die Pipeline-Stackregistereinrichtung (32) aufweist: ein erstes getaktetes Register (34) mit einem Eingangsanschluß, der mit dem Ausgangsanschluß der ersten Multiplexereinrichtung (26) verbunden ist, und einem Ausgangsanschluß, ein zweites getaktetes Register (36) mit einem Eingangsanschluß, der mit dem Ausgangsanschluß des ersten Registers verbunden ist, und einem Ausgangsanschluß, und einem dritten Register (40) mit einem Eingangsanschluß, der mit dem Ausgangsanschluß des zweiten Registers verbunden ist.
4. Verfahren zum Durchführen von Verzweigungen in einem Zyklus einer digitalen Befehlsprozessorsteuerung mit einer Befehls-Pipeline und einem Programmzähler, die zyklisch Befehle aus einem Befehlssatz ausführt, die einen "Verzweigungsverzögerungs"-Befehl und mehrere Verzweigungsbefehle einschließen, die jeweils eine "Verzweigungsbedingung" angeben, wobei die Befehle in einem Befehls-Cache gespeichert sind, der mehrere jeweils mit einem Designator versehene Speicherplätze aufweist, wobei das Verfahren die folgenden Schritte aufweist:
(a) Abrufen eines Verzweigungsbefehls aus dem Cache von einem durch den Inhalt des Programmzählers spezifizierten Speicherplatz-Designator und Plazieren des Befehls in die Befehls-Pipeline;
(b) während des nächstfolgenden Zyklus, Dekodieren des in der Befehls-Pipeline gespeicherten Verzweigungsbefehls, Abrufen des Verzweigungsverzögerungsbefehls aus dem Cache und Plazieren des Verzweigungsverzögerungsbefehls in die Befehls-Pipeline;
(c) Zwischenspeichern der durch den Verzweigungsbefehl angegebenen Verzweigungsbedingung;
(d) Wählen einer Verzweigungszieladresse aus einer indirekten, relativen und absoluten Verzweigungsadresse, basierend auf im Dekodierschritt (b) erzeugten Informationen;
(e) Abrufen eines Befehls von einem Speicherplatz in dem Cache, der aus der im Schritt (d) bestimmten Verzweigungszieladresse und dem Inhalt des Programmzählers ausgewählt ist, basierend auf der im Schritt (c) zwischengespeicherten Verzweigungsbedingung, und Plazieren eines abgerufenen Befehls in die Befehls-Pipeline während eines Zyklus, der demjenigen Zyklus unmittelbar folgt, in dem der Verzweigungsverzögerungsbefehl in die Befehls-Pipeline plaziert wurde; und
(f) Ersetzen des Inhalts des Programmzählers durch die zum Abrufen des Befehls im Schritt (a) verwendete, jedoch um eins inkrementierte Adresse.
5. Ein-Zyklus-Verzweigungsverfahren nach Anspruch 4, ferner mit einem Verfahren zum Aufrufen einer Prozedur in einem Zyklus, wobei die Befehle eines Befehlssatzes ferner einen Prozeduraufrufbefehl einschließen, wobei der Schritt (a) den Abruf des Prozeduraufrufbefehls verlangt, und wobei das Verfahren ferner die folgenden Schritte aufweist:
(g) Bestimmen einer Aufruf-Rückkehradresse, basierend auf im Dekodierschritt (b) erzeugten Informationen und dem Inhalt des Programmzählers; und
(h) Speichern der im Schritt (g) bestimmten Aufruf-Rückkehradresse.
6. Verfahren zum Verarbeiten einer Interrupt-Routine durch eine digitale Befehlsprozessorsteuerung mit einer Befehls- Pipeline, die zyklisch Befehle eines Befehlssatzes verarbeitet, welcher einen Interruptprozeduraufrufbefehl, einen "Verzweigungsverzögerungs-"Befehl und mehrere Verzweigungsbefehle umfaßt, die jeweils eine "Verzweigungsbedingung" bestimmen, wobei die Befehle in einem Befehls-Cache gespeichert sind, der mehrere jeweils mit einem Designator versehene Speicherplätze aufweist, bei dem die Interrupt-Routine zwischen einem Verzweigungsbefehl und einem Verzweigungsverzögerungsbefehl abzuarbeiten ist, wobei das Verfahren die folgenden Schritte aufweist:
(a) Zwischenspeichern eines Speicherplatz-Designators des Verzweigungsverzögerungsbefehls, der zwei Zyklen vor dem Auftreten des Interrupts in die Befehls-Pipeline plaziert wurde;
(b) Zwischenspeichern der Verzweigungszieladresse, die einen Verzweigungszielbefehl angibt, der einen Zyklus vor dem Auftreten des Interrupts in die Befehls-Pipeline plaziert wurde;
(c) Abarbeiten der Interrupt-Routine;
(d) Abrufen eines an dem im Schritt (a) zwischengespeicherten Speicherplatz-Designator befindlichen Befehls für die Pipeline vor der Rückkehr aus der Interrupt-Routine; und
(e) Abrufen der an dem im Schritt (b) gespeicherten Verzweigungszieladresse befindlichen Befehls für die Pipeline vor der Rückkehr aus der Interrupt-Routine.
7. Interrupt-Verarbeitungsverfahren nach Anspruch 6, ferner mit den folgenden Schritten;
(f) nach der Rückkehr aus der Interrupt-Routine, Abrufen eines ersten Indirektverzweigungsbefehls aus dem Cache von dem im Schritt (a) zwischengespeicherten Speicherplatz-Designator und Plazieren des Befehls in die Befehls-Pipeline; und
(g) nach der Rückkehr aus der Interrupt-Routine, Abrufen eines zweiten Indirektverzweigungsbefehls aus dem Cache von dem im Schritt (b) zwischengespeicherten Speicherplatz-Designator und Plazieren des Befehls in die Befehls-Pipeline.
8. Interrupt-Verarbeitungsverfahren nach Anspruch 7, bei dem die Befehlsprozessorsteuerung einen Programmzähler aufweist und der Abrufschritt (f) die folgenden Schritte umfaßt:
(f1) Abrufen des ersten Indirektverzweigungsbefehls aus dem Cache von dem durch den Programmzählerinhalt spezifizierten Speicherplatz-Designator und Speichern des Befehls in einem Befehlsregister;
(f2) Dekodieren des in dem Befehlsregister zwischengespeicherten Befehls;
(f3) Bestimmen einer Indirektverzweigungsadresse, basierend auf im Dekodierschritt (f2) erzeugten Informationen;
und bei dem der Abrufschritt (g) die folgenden Schritte umfaßt:
(g1) Abrufen eines Befehls von einem Speicherplatz in dem Cache, der aus der im Schritt (f3) bestimmten zweiten Indirektverzweigungsbefehlsadresse bestimmt wird; und
(g2) Ersetzen des Inhalts des Programmzählers durch die im Schritt (g1) zum Abrufen des Befehls verwendete, jedoch um eins inkrementierte Adresse.
DE3650232T 1985-08-30 1986-08-14 Rechnersteuerung mit Verzweigung in einem einzigen Zyklus. Expired - Lifetime DE3650232T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/771,327 US4777587A (en) 1985-08-30 1985-08-30 System for processing single-cycle branch instruction in a pipeline having relative, absolute, indirect and trap addresses

Publications (2)

Publication Number Publication Date
DE3650232D1 DE3650232D1 (de) 1995-03-23
DE3650232T2 true DE3650232T2 (de) 1995-08-10

Family

ID=25091461

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3650232T Expired - Lifetime DE3650232T2 (de) 1985-08-30 1986-08-14 Rechnersteuerung mit Verzweigung in einem einzigen Zyklus.

Country Status (5)

Country Link
US (1) US4777587A (de)
EP (1) EP0219203B1 (de)
JP (2) JP2640454B2 (de)
AT (1) ATE118628T1 (de)
DE (1) DE3650232T2 (de)

Families Citing this family (88)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1250667A (en) * 1985-04-15 1989-02-28 Larry D. Larsen Branch control in a three phase pipelined signal processor
US4777587A (en) 1985-08-30 1988-10-11 Advanced Micro Devices, Inc. System for processing single-cycle branch instruction in a pipeline having relative, absolute, indirect and trap addresses
US5440704A (en) * 1986-08-26 1995-08-08 Mitsubishi Denki Kabushiki Kaisha Data processor having branch predicting function
US4942520A (en) * 1987-07-31 1990-07-17 Prime Computer, Inc. Method and apparatus for indexing, accessing and updating a memory
JPH0766326B2 (ja) * 1987-11-12 1995-07-19 松下電器産業株式会社 情報処理装置
JPH0760387B2 (ja) * 1987-11-12 1995-06-28 松下電器産業株式会社 情報処理装置
US5247628A (en) * 1987-11-30 1993-09-21 International Business Machines Corporation Parallel processor instruction dispatch apparatus with interrupt handler
JP2723238B2 (ja) * 1988-01-18 1998-03-09 株式会社東芝 情報処理装置
JPH0769808B2 (ja) * 1988-02-23 1995-07-31 三菱電機株式会社 データ処理装置
JPH0769817B2 (ja) * 1988-02-29 1995-07-31 日本電気株式会社 条件ジャンプ実行制御方式
US4890221A (en) * 1988-04-01 1989-12-26 Digital Equipment Corporation Apparatus and method for reconstructing a microstack
GB8815042D0 (en) * 1988-06-24 1988-08-03 Int Computers Ltd Data processing apparatus
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
US5159680A (en) * 1988-07-28 1992-10-27 Sun Microsystems, Inc. Risc processing unit which selectively isolates register windows by indicating usage of adjacent register windows in status register
US5101341A (en) * 1988-08-25 1992-03-31 Edgcore Technology, Inc. Pipelined system for reducing instruction access time by accumulating predecoded instruction bits a FIFO
US5155818A (en) * 1988-09-28 1992-10-13 Data General Corporation Unconditional wide branch instruction acceleration
EP0365188B1 (de) * 1988-10-18 1996-09-18 Hewlett-Packard Company Verfahren und Vorrichtung für Zustandskode in einem Zentralprozessor
EP0378415A3 (de) * 1989-01-13 1991-09-25 International Business Machines Corporation Verteilungsmechanismus für mehrere Befehle
JPH02212936A (ja) * 1989-02-14 1990-08-24 Matsushita Electron Corp パイプライン構造を有する半導体装置
US5072364A (en) * 1989-05-24 1991-12-10 Tandem Computers Incorporated Method and apparatus for recovering from an incorrect branch prediction in a processor that executes a family of instructions in parallel
JPH0795271B2 (ja) * 1989-06-20 1995-10-11 富士通株式会社 分岐命令実行装置
US5440749A (en) * 1989-08-03 1995-08-08 Nanotronics Corporation High performance, low cost microprocessor architecture
US5210841A (en) * 1990-01-30 1993-05-11 Advanced Micro Devices, Inc. External memory accessing system
EP0442116A3 (en) * 1990-02-13 1993-03-03 Hewlett-Packard Company Pipeline method and apparatus
US5226130A (en) * 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US5163140A (en) * 1990-02-26 1992-11-10 Nexgen Microsystems Two-level 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
EP0450658B1 (de) * 1990-04-06 2001-08-01 Nec Corporation Parallelfliessband-Befehlsverarbeitungssystem für sehr lange Befehlswörter
JPH0437927A (ja) * 1990-06-01 1992-02-07 Sony Corp プロセッサの処理方法
CA2045791A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites Branch performance in high speed processor
WO1992006426A1 (en) * 1990-10-09 1992-04-16 Nexgen Microsystems Method and apparatus for parallel decoding of instructions with branch prediction look-up
US5454090A (en) * 1990-10-12 1995-09-26 Siemens Aktiengesellschaft Apparatus for furnishing instructions in a microprocessor with a multi-stage pipeline processing unit for processing instruction phase and having a memory and at least three additional memory units
EP0488819B1 (de) * 1990-11-30 1999-01-13 Kabushiki Kaisha Toshiba Ausführungsvorrichtung für bedingte Verzweigungsbefehle
US5265213A (en) * 1990-12-10 1993-11-23 Intel Corporation Pipeline system for executing predicted branch target instruction in a cycle concurrently with the execution of branch instruction
US5454089A (en) * 1991-04-17 1995-09-26 Intel Corporation Branch look ahead adder for use in an instruction pipeline sequencer with multiple instruction decoding
US5450585A (en) * 1991-05-15 1995-09-12 International Business Machines Corporation Compiler with delayed conditional branching
US5434986A (en) * 1992-01-09 1995-07-18 Unisys Corporation Interdependency control of pipelined instruction processor using comparing result of two index registers of skip instruction and next sequential instruction
JP2761688B2 (ja) * 1992-02-07 1998-06-04 三菱電機株式会社 データ処理装置
US5442756A (en) * 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor
US5692167A (en) * 1992-07-31 1997-11-25 Intel Corporation Method for verifying the correct processing of pipelined instructions including branch instructions and self-modifying code in a microprocessor
US5410660A (en) * 1992-12-24 1995-04-25 Motorola, Inc. System and method for executing branch on bit set/clear instructions using microprogramming flow
US5634025A (en) * 1993-12-09 1997-05-27 International Business Machines Corporation Method and system for efficiently fetching variable-width instructions in a data processing system having multiple prefetch units
US5604909A (en) 1993-12-15 1997-02-18 Silicon Graphics Computer Systems, Inc. Apparatus for processing instructions in a computing system
US5539888A (en) * 1993-12-23 1996-07-23 Unisys Corporation System and method for processing external conditional branch instructions
US5706459A (en) * 1994-01-06 1998-01-06 Fujitsu Limited Processor having a variable number of stages in a pipeline
GB9412487D0 (en) * 1994-06-22 1994-08-10 Inmos Ltd A computer system for executing branch instructions
DE69425377T2 (de) * 1994-11-29 2001-02-15 International Business Machines Corp., Armonk Einzel-Zyklus-Prozessor zur Echtzeitsverarbeitung
JPH08212075A (ja) * 1995-01-31 1996-08-20 Nec Corp 情報処理装置
US6003127A (en) 1995-10-04 1999-12-14 Nippondenso Co., Ltd. Pipeline processing apparatus for reducing delays in the performance of processing operations
US5905881A (en) * 1995-11-30 1999-05-18 Unisys Corporation Delayed state writes for an instruction processor
US5867699A (en) * 1996-07-25 1999-02-02 Unisys Corporation Instruction flow control for an instruction processor
AU3666697A (en) * 1996-08-20 1998-03-06 Idea Corporation A method for identifying hard-to-predict branches to enhance processor performance
US5964869A (en) * 1997-06-19 1999-10-12 Sun Microsystems, Inc. Instruction fetch mechanism with simultaneous prediction of control-flow instructions
US5935238A (en) * 1997-06-19 1999-08-10 Sun Microsystems, Inc. Selection from multiple fetch addresses generated concurrently including predicted and actual target by control-flow instructions in current and previous instruction bundles
JPH1165840A (ja) * 1997-08-11 1999-03-09 Sony Corp 演算処理装置およびその方法
US6112299A (en) * 1997-12-31 2000-08-29 International Business Machines Corporation Method and apparatus to select the next instruction in a superscalar or a very long instruction word computer having N-way branching
US6243805B1 (en) * 1998-08-11 2001-06-05 Advanced Micro Devices, Inc. Programming paradigm and microprocessor architecture for exact branch targeting
US6289442B1 (en) 1998-10-05 2001-09-11 Advanced Micro Devices, Inc. Circuit and method for tagging and invalidating speculatively executed instructions
US7191309B1 (en) 1999-09-01 2007-03-13 Intel Corporation Double shift instruction for micro engine used in multithreaded parallel processor architecture
DE60044752D1 (de) * 1999-09-01 2010-09-09 Intel Corp Verzweigungsbefehl für einen mehrfachverarbeitungsprozessor
US7546444B1 (en) 1999-09-01 2009-06-09 Intel Corporation Register set used in multithreaded parallel processor architecture
US7120783B2 (en) 1999-12-22 2006-10-10 Ubicom, Inc. System and method for reading and writing a thread state in a multithreaded central processing unit
US7925869B2 (en) * 1999-12-22 2011-04-12 Ubicom, Inc. Instruction-level multithreading according to a predetermined fixed schedule in an embedded processor using zero-time context switching
US7308686B1 (en) 1999-12-22 2007-12-11 Ubicom Inc. Software input/output using hard real time threads
US7047396B1 (en) 2000-06-22 2006-05-16 Ubicom, Inc. Fixed length memory to memory arithmetic and architecture for a communications embedded processor system
US7010612B1 (en) 2000-06-22 2006-03-07 Ubicom, Inc. Universal serializer/deserializer
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US20020053017A1 (en) * 2000-09-01 2002-05-02 Adiletta Matthew J. Register instructions for a multithreaded processor
US7020871B2 (en) * 2000-12-21 2006-03-28 Intel Corporation Breakpoint method for parallel hardware threads in multithreaded processor
US7487505B2 (en) 2001-08-27 2009-02-03 Intel Corporation Multithreaded microprocessor with register allocation based on number of active threads
US7216204B2 (en) 2001-08-27 2007-05-08 Intel Corporation Mechanism for providing early coherency detection to enable high performance memory updates in a latency sensitive multithreaded environment
US6868476B2 (en) 2001-08-27 2005-03-15 Intel Corporation Software controlled content addressable memory in a general purpose execution datapath
US7225281B2 (en) 2001-08-27 2007-05-29 Intel Corporation Multiprocessor infrastructure for providing flexible bandwidth allocation via multiple instantiations of separate data buses, control buses and support mechanisms
US7610451B2 (en) 2002-01-25 2009-10-27 Intel Corporation Data transfer mechanism using unidirectional pull bus and push bus
US7437724B2 (en) * 2002-04-03 2008-10-14 Intel Corporation Registers for data transfers
US7337275B2 (en) 2002-08-13 2008-02-26 Intel Corporation Free list and ring data structure management
US6941438B2 (en) 2003-01-10 2005-09-06 Intel Corporation Memory interleaving
US7822950B1 (en) 2003-01-22 2010-10-26 Ubicom, Inc. Thread cancellation and recirculation in a computer processor for avoiding pipeline stalls
US7765388B2 (en) * 2003-09-17 2010-07-27 Broadcom Corporation Interrupt verification support mechanism
US7278014B2 (en) * 2004-12-02 2007-10-02 International Business Machines Corporation System and method for simulating hardware interrupts
US7478228B2 (en) * 2006-08-31 2009-01-13 Qualcomm Incorporated Apparatus for generating return address predictions for implicit and explicit subroutine calls
JP2008165589A (ja) * 2006-12-28 2008-07-17 Fujitsu Ltd 情報処理装置
CN102117198B (zh) * 2009-12-31 2015-07-15 上海芯豪微电子有限公司 一种分支处理方法
US9817666B2 (en) 2013-03-15 2017-11-14 Intel Corporation Method for a delayed branch implementation by using a front end track table
CN108255521B (zh) 2013-03-15 2022-05-31 英特尔公司 一种用于实现线路速度互连结构的方法
US9753691B2 (en) 2013-03-15 2017-09-05 Intel Corporation Method for a stage optimized high speed adder
US11003459B2 (en) 2013-03-15 2021-05-11 Intel Corporation Method for implementing a line speed interconnect structure
US20170277539A1 (en) * 2016-03-24 2017-09-28 Imagination Technologies Limited Exception handling in processor using branch delay slot instruction set architecture

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS52120640A (en) * 1976-04-02 1977-10-11 Toshiba Corp Micro program control system
US4240105A (en) * 1979-08-20 1980-12-16 Yves C. Faroudja Method and apparatus for separation of chrominance and luminance with adaptive comb filtering in a quadrature modulated color television system
US4398244A (en) * 1980-05-07 1983-08-09 Fairchild Camera & Instrument Corporation Interruptible microprogram sequencing unit and microprogrammed apparatus utilizing same
JPS57162034A (en) * 1981-03-31 1982-10-05 Fujitsu Ltd Data processing system
US4399507A (en) * 1981-06-30 1983-08-16 Ibm Corporation Instruction address stack in the data memory of an instruction-pipelined processor
US4471431A (en) * 1982-09-27 1984-09-11 Data General Corporation Encachement apparatus
US4498136A (en) * 1982-12-15 1985-02-05 Ibm Corporation Interrupt processor
JPS59183434A (ja) * 1983-04-01 1984-10-18 Nippon Telegr & Teleph Corp <Ntt> 命令先取り制御方式
JPH0644238B2 (ja) * 1983-12-29 1994-06-08 株式会社日立製作所 命令再実行制御方法
EP0208181A1 (de) * 1985-06-28 1987-01-14 Hewlett-Packard Company Befehlszählerwarteschlange für einen Pipeline-Prozessor
US4777587A (en) 1985-08-30 1988-10-11 Advanced Micro Devices, Inc. System for processing single-cycle branch instruction in a pipeline having relative, absolute, indirect and trap addresses

Also Published As

Publication number Publication date
JPH09171463A (ja) 1997-06-30
EP0219203A3 (en) 1989-07-19
DE3650232D1 (de) 1995-03-23
ATE118628T1 (de) 1995-03-15
JP2796797B2 (ja) 1998-09-10
EP0219203B1 (de) 1995-02-15
JP2640454B2 (ja) 1997-08-13
US4777587A (en) 1988-10-11
EP0219203A2 (de) 1987-04-22
JPS6254342A (ja) 1987-03-10

Similar Documents

Publication Publication Date Title
DE3650232T2 (de) Rechnersteuerung mit Verzweigung in einem einzigen Zyklus.
DE69325086T2 (de) Verfahren und System für spekulative Befehlsausführung
DE69033339T2 (de) Mechanismus und Verfahren zur Vorhersage von Unterprogrammrücksprüngen
DE69534148T2 (de) Rechnersystem zur Ausführung von Verzweigungsbefehlen
DE69228360T2 (de) Registerlesekontrolle
DE69229198T2 (de) Verzweigungsbefehlprozessor und Verfahren
DE69028138T2 (de) Mechanismus zur präzisen Behandlung von Ausnahmebedingungen in einem Prozessor mit gepaarten Befehlen
DE19983860B4 (de) Ein Verfahren und eine Einrichtung zur verbesserten Prädikatvorhersage
DE3686991T2 (de) Mechanismus fuer parallele speicherdatenabholung und befehlsausfuehrung in einem prozessor mit reduziertem befehlssatz.
DE69031991T2 (de) Verfahren und Gerät zur Beschleunigung von Verzweigungsbefehlen
DE3750935T2 (de) Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner.
DE2704842C2 (de) Im Pipeline-Betrieb arbeitende Datenverarbeitungseinrichtung
DE3752100T2 (de) Befehlsvorabrufgerät mit einer Schaltung zum Prüfen der Vorhersage eines Verzweigungsbefehls vor seiner Ausführung
DE3650413T2 (de) Verfahren und Vorrichtung zur Annulierung eines Befehls.
DE69227429T2 (de) Anordnung und Verfahren zur Auflösung von Abhängigkeiten unter mehreren Befehlen in einer Speicheranordnung
DE69321698T2 (de) Verfahren und System zur verbesserten Genauigkeit der Sprungvorhersage in einem Superskalarprozessor
DE69132675T2 (de) Parallelfliessband-Befehlsverarbeitungssystem für sehr lange Befehlswörter
DE3588182T2 (de) Vorausschauende Speicherabrufmethode und System für Verzweigung mit Ausführungsbefehlen
DE69032174T2 (de) Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen
DE69418146T2 (de) Temporärer Registersatz für einen superpipeline-superskalaren Prozessor
DE69624158T2 (de) Superskalarer Prozessor mit mehreren Registerblöcken und Erzeugung von spekulativen Antwortadressen
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE69327927T2 (de) Schnelles Vorausholen und Zuteilung von Befehlen mittels vorausschauender Anmerkungen von früher vorausgeholten
DE69507975T2 (de) Verarbeitungssystem und -verfahren
DE2715073A1 (de) Mikroprogrammierte rechner-steuervorrichtung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition