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
Links
- 238000000034 method Methods 0.000 claims abstract description 22
- 230000004044 response Effects 0.000 claims 5
- 238000003672 processing method Methods 0.000 claims 2
- 230000000694 effects Effects 0.000 abstract description 3
- 230000003111 delayed effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative 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.
- 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.
- 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.
- 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.
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)
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)
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 |
-
1985
- 1985-08-30 US US06/771,327 patent/US4777587A/en not_active Expired - Lifetime
-
1986
- 1986-08-14 EP EP86306269A patent/EP0219203B1/de not_active Expired - Lifetime
- 1986-08-14 AT AT86306269T patent/ATE118628T1/de not_active IP Right Cessation
- 1986-08-14 DE DE3650232T patent/DE3650232T2/de not_active Expired - Lifetime
- 1986-08-28 JP JP61203569A patent/JP2640454B2/ja not_active Expired - Lifetime
-
1996
- 1996-10-25 JP JP8283792A patent/JP2796797B2/ja not_active Expired - Lifetime
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 |