EP1218819A1 - Verfahren und vorrichtung zur bearbeitung bedingter sprungbefehle in einem prozessor mit "pipelined"-architektur - Google Patents
Verfahren und vorrichtung zur bearbeitung bedingter sprungbefehle in einem prozessor mit "pipelined"-architekturInfo
- Publication number
- EP1218819A1 EP1218819A1 EP00967740A EP00967740A EP1218819A1 EP 1218819 A1 EP1218819 A1 EP 1218819A1 EP 00967740 A EP00967740 A EP 00967740A EP 00967740 A EP00967740 A EP 00967740A EP 1218819 A1 EP1218819 A1 EP 1218819A1
- Authority
- EP
- European Patent Office
- Prior art keywords
- processor
- command
- jump
- conditional jump
- bits
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30079—Pipeline control instructions, e.g. multicycle NOP
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30094—Condition code generation, e.g. Carry, Zero flag
Definitions
- the present invention relates to a method and a device for processing conditional jump instructions in a processor with a "p ⁇ pel ⁇ ned" architecture.
- processors with the so-called "P ⁇ pelmed" architecture. This means that the processor processes several instructions at the same time, each instruction being in a different stage of processing. For example, one command is currently being executed, the next is already being decoded, the next but one is requested from memory, etc.
- conditional branch instruction can lead to the so-called "hardard", which can even lead to incorrect results.
- conditional jump command the address of the next command is only determined after this conditional jump command has been processed. In this way, the next command can only be requested and decoded from the memory when the result of executing the previous command is available from the processor's arithmetic unit.
- this "hazard" problem has been solved in such a way that so many dummy commands (NOP), ie no-operation or wait commands, are inserted directly after the jump command that the results in any case stay right.
- NOP dummy commands
- this object is achieved by a method for processing conditional jump instructions in a processor with a “pipelined” architecture, in which one or more additional bits are specified under each instruction after which a conditional jump is to be carried out, which indicate below what condition the conditional jump is to be performed.
- the corresponding jump address is added. In this way, a command is not only known earlier whether a conditional jump should be made or not, but the corresponding new destination address is already known. This means that the correct command can already be requested from the main memory of the processor.
- one or more bits can preferably be added to each command, which indicate the conditions under which the command is to be executed at all.
- the object of the present invention is also achieved by a device for processing conditional jump instructions in a processor with a "pipelined" architecture, in which a device is provided for changing the program number for executing the conditional jump.
- the device for changing the program counter status has one or more inputs for corresponding additional bits in the machine instructions of the processor and one or more inputs for the corresponding "flag" signals from the processor's arithmetic logic unit.
- the device for changing the program counter status is preferably equipped with an adder.
- 1 shows the workflow of a processor with a two-stage pipeline
- 2 shows the structure of a 22-bit machine command according to the invention
- FIG. 4 shows a schematic representation of a device according to the invention for changing the program number for executing conditional jumps
- FIG. 5 shows a further device according to the invention for changing the program number for executing conditional jumps
- FIG. 6 shows a schematic representation of the overall structure of a processor with a “P ⁇ pelmed” architecture for executing conditional jump commands with the “branch prediction” according to the invention.
- FIG. 7 shows a detailed illustration of a processor with devices for branch prediction according to the invention.
- the present invention is based on a "pipelmed” architecture for a processor. This is described, for example, in the book “Computer Organization and Design” by Pattersen & Hennessy.
- each machine command is processed by a processor using the following operations:
- a processor uses the "pipeline" to process an average of one instruction per processor cycle.
- conditional execution for example:
- #JMP means the relative jump address to entry point Ll.
- both bits for "pre-conditions” and bits for "post-conditions” can be provided in the command coding, as shown for example in FIGS. 2 and 3.
- bits 0 to 1 contain the information for post condition, bits 2 and 3 information for pre-conditions, bits 4 to 10 the relative jump address, i.e. the jump distance.
- the method according to the invention can be used particularly effectively in connection with a program loop, for example for the following “C” program:
- simplifications in programming that can be achieved according to the invention is the program shown below for processing a ring buffer.
- loop structures of all kinds can be programmed according to the invention as follows:
- a machine instruction SUBI is used which is expanded so that it has a flag bit which is used to indicate a cycle before the conditional branch instruction BNZ, which is the correct branching in the conditional branch, so that in the case of a two-stage pipeline there is no loss of processor cycles at all.
- the LDI command indicates the start of a loop.
- the typical solution for avoiding the "branch harzard" is based on making a prediction about the expected jumping target of the particular jump.
- the cycle loss in the conditional jump is due to the fact that the next instruction that is executed after the jump is dependent on the fulfillment of the loop condition. This fact means that the dummy instruction NOP must be inserted after the conditional jump instruction.
- a loop flag in an arithmetic command such as ADD or SUB
- the loop condition can be checked at the end of the execution of the addition or subtraction command.
- the "zero flag" ie the display of the arithmetic unit that it is at 0, can be checked in order to decide to which address the program counter of the processor should be set.
- the "LOOP flag” can be interpreted as an "ENABLE-DISABLE flag” or more generally as an address shift.
- FIG. 4 shows the simplest basic principle for the implementation of a “LOOP” flag according to the invention.
- the program memory 10 is connected to the program counter 14 via a multiplexer 12.
- the output of the program counter (PC) 14 is connected to a logic gate 16, which links the output value of the program counter with a constant or the LOOP flag.
- the output of this logic circuit 16 is connected to one input of the multiplexer (MUX) 12, the other input of which is connected to the program memory 10 and the output of which is connected to the program counter 14.
- the multiplexer 12 is controlled by the processor via a control signal.
- a further improvement of the invention allows the jump instruction to be dispensed with by buffering the start of the loop:
- the SUBI command has a loop flag, which is used to indicate which branch is the correct one for the conditional jump. The zero flag is checked to decide whether to jump back to the beginning of the loop or to execute the next instruction (NEXT_INS), which is indicated by the # loop flag.
- a program memory 10 is also provided here, which is connected to the input of a multiplexer 12, the output of which is in turn connected to the program payer (PC) 14.
- the output of the program counter (PC) 14 is also connected to a logic gate 16, which links the output value of the program counter with the loop flag.
- the output of this logic circuit 16 is connected to a further input of the multiplexer (MUX) 12.
- MUX multiplexer
- the multiplexer 12 has a further input which is connected to a buffer 18, the input of which can be loaded with the value of the program counter 14. In this way there is no need for the explicit command "Load the next program number into the buffer".
- FIGS. 4 and 5 show the entire structure of a processor with the ability to process the instructions according to the invention.
- the same elements as m FIGS. 4 and 5 are also provided with the same reference numerals here.
- the program payer (PC) 14 in turn accesses the program code memory 10, and in each case accesses the program line to be processed.
- the corresponding instruction code (command code) is supplied to the command decoder (IDEC) 20 from the program memory 10. This forwards the corresponding control commands to the arithmetic logic unit (ALU) 22 and to the register set 24. The contents of the registers are then loaded into the arithmetic logic unit 22 as required, or written back from there, as indicated by the arrows.
- ALU arithmetic logic unit
- the flag signals zero, carry and overflow of the arithmetic logic unit 22 are simultaneously supplied to both the command decoder (IDEC) 20 and the control input of the multiplexer (MUX) 12.
- the two inputs of the multiplexer 12 are assigned the value 1 and the relative step value #JMP provided by the command decoder 20.
- the output of the multiplexer 12 is connected to an adder 16, the other input is connected to the output of the program counter 14.
- the top 6 bits (21 to 16) contain the command code (OPCODE), for example: addition.
- the next three bits contain the address of the first register (REG A) with a length of three bits (conventional processors usually do not use more than 8 registers) on bits 15, 14, 13, followed by the register address of the second one, which in the present case is to be added Register (REG B) on bits 12, 11 and 10.
- bits 9 to 2 (displacement), which determine the relative jump distance in a subsequent one specify conditional jump. This is followed by condition bits 1 and 0, with bit 1 (post) indicating the post-condition, while bit 0 (PRE) indicating the pre-condition.
- PC program number
- the instruction is then processed by the instruction decoder (IDEC) 20.
- IEC instruction decoder
- a control signal ALU-CTR as well as the read and write addresses and enable signals for the arithmetic unit are generated.
- the instruction decoder 20 provides the relative jump distance "BR".
- the "BR-CTR” signal controls the branch control according to the following specifications:
- control information for the arithmetic unit and information on jump destination addresses are thus simultaneously provided for the first time by the instruction decoder 20 when decoding the commands.
- the action is carried out by the arithmetic logic unit (ALU).
- ALU arithmetic logic unit
- the result is written back to the corresponding register.
- the corresponding zero, carry, etc. flags are present at the output of the arithmetic unit.
- the branch control is provided with the bits for the individual flags, "BRCTR" and the value "BR" at the same clock. As shown in FIG. 7, the control unit "Cond” 26 then generates two control signals SI and S2. SI controls either not to make a jump or to calculate a relative jump. S2 then switches the relative jump address "PCNEW" through the multiplexer 12.
- FIG. 7 The structure of a processor for processing instructions with the "post-condition bits" according to the invention is shown in detail in FIG. 7.
- the same numbers as in FIGS. 4, 5 and 6 refer to the same units.
- a program counter 14 is also provided in FIG. 7, which addresses a command memory (CODEROM) 10. From there, the commands are supplied to the command decoder (IDEC) 20 with a command width of 22 bits. This generates the usual signals for controlling the registers 24 and the arithmetic unit
- ALU 22 it also generates the additional signals "BR" (this signal comprises several bits) and indicates the relative jump distance, and the signal "BR-CTR", which indicates that a conditional jump is to be processed, and the corresponding flag bits of the arithmetic unit are to be retrieved.
- the "BR_CTR" signals and the flags from the ALU are fed to a further logic unit (Cond) 26. This generates depending on the corresponding BR_CTR signals and the associated flags signals SI and S2, which control the multiplexer 12 and a switch before the one input of the adder 16. This switch switches between 1 and "BR” depending on the fulfillment of the flag conditions.
- the other input of this adder is connected to the output of the program counter 14.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
Verfahren und Vorrichtung zur Bearbeitung bedingter Sprungbefehle in einem Prozessor mit 'Pipelined'-Architektur, wobei jedem Befehl, nach dem ein bedingter Sprung ausgeführt werden soll, ein oder mehrere zusätzliche Bits hinzugefügt werden, die angeben, unter welcher Bedingung der bedingte Sprung auszuführen ist. Zusätzlich kann die Vorrichtung eine Vorrichtung zur Veränderung des Programmzählerstandes in Abhängigkeit von den zusätzlichen Bits zur Ausführung der bedingten Sprünge umfassen.
Description
Beschreibung
Verfahren und Vorrichtung zur Bearbeitung bedingter Sprungbefehle in einem Prozessor mit "Pipelmed" -Architektur
Die vorliegende Erfindung betrifft ein Verfahren und eine Vorrichtung zur Bearbeitung bedingter Sprungbefehle in einem Prozessor mit "Pιpelιned"-Archιtektur .
Die Anzahl der benotigten Zyklen für die Ausfuhrung bestimmter Befehle ist eines der wichtigsten Leistungsmerkmale eines Prozessors. Um maximale Verarbeitungsgeschwindigkeit und minimalen Leistungsverbrauch zu erreichen, soll die Anzahl der Zyklen möglichst minimiert werden. Zu diesem Zweck kennt der Stand der Technik bereits Prozessoren mit der sogenannten "Pιpelmed"-Archιtektur . Dies bedeutet, daß der Prozessor mehrere Befehle gleichzeitig abarbeitet, wobei sich jeder Befehl in einer anderen Stufe der Bearbeitung befindet. Beispielsweise wird ein Befehl gerade ausgeführt, der nächste wird gleichzeitig schon decodiert, der übernächste aus dem Speicher angefordert, etc.
In einer solchen "Pιpelmed"-Archιtektur kann insbesondere eine bedingter Sprungbefehl (branch) zum sogenannten "har- zard" fuhren, wodurch dann sogar falsche Ergebnisse entstehen können. Bei einem bedingten Sprungbefehl liegt nämlich erst nach Abarbeitung dieses bedingten Sprungbefehls die Adresse des nächstfolgenden Befehls fest. Auf diese Weise kann also der nächstfolgende Befehl erst dann aus dem Speicher angefor- dert und decodiert werden, wenn das Ergebnis der Ausfuhrung des vorigen Befehls aus dem Rechenwerk des Prozessors zur Verfugung steht.
Gemäß dem bisherigen Stand der Technik wurde dieses "hazard"- Problem dergestalt gelost, daß direkt nach dem Sprungbefehl so viele Dummy-Befehle (NOP) , also No-Operation- oder Wartebefehle eingefugt werden, daß die Ergebnisse auf jeden Fall
richtig bleiben. Dadurch werden allerdings auch so viele Prozessorzyklen nicht ausgenutzt, wie Dummy-Befehle abgearbeitet werden müssen.
Es ist daher die Aufgabe der vorliegenden Erfindung, die Bearbeitung bedingter Sprungbefehle in einem Prozessor mit "pi- pelined" -Architektur ohne einen so großen Verlust an Prozessorzyklen durch Dummybefehle zu ermöglichen.
Erfindungsgemäß wird diese Aufgabe durch ein Verfahren zur Bearbeitung bedingter Sprungbefehle in einem Prozessor mit "Pipelined"-Architektur gelöst, bei der jedem Befehl, nach dem ein bedingter Sprung ausgeführt werden soll, ein oder mehrere zusatzliche Bits hinzugefügt werden, die angeben, un- ter welcher Bedingung der bedingte Sprung auszufuhren ist.
Auf dieses Weise kann bereits ein Befehl früher festgestellt werden, ob eine Verzweigung (branch) durchzufuhren ist, oder nicht. Damit steht bereits ein Befehl früher fest, welches der nächste Befehl nach dem bedingten Sprung sein wird. Durch diese "branch-prediction" im Befehlssatz ist es also möglich, wesentlich früher das Sprungziel eines bedingten Sprungbefehls festzustellen.
Dabei ist es besondere bevorzugt, daß zusatzlich zu jedem Be- fehl, nach dem ein bedingter Sprung ausgeführt werden soll, die entsprechende Sprungadresse zugefugt wird. Auf diese Weise ist einen Befehl früher nicht nur bekannt, ob ein bedingter Sprung durchgeführt werden soll oder nicht, sondern es ist bereits die entsprechende neue Zieladresse bekannt. Damit kann bereits der richtige Befehl aus dem Arbeitsspeicher des Prozessors angefordert werden.
Weiter können vorzugsweise zusatzlich jedem Befehl ein oder mehrere Bits hinzugefugt werden, die angeben, unter welchen Bedingungen der Befehl überhaupt auszufuhren ist.
Zur weiteren Optimierung der Arbeitsgeschwindigkeit des Prozessors ist es dabei besonders bevorzugt, bei jedem der Befehle mit einem oder mehreren zusatzlichen Bits parallel zur Ausfuhrung des Befehls die dem oder den Bits entsprechenden Flags (z.B. zero, carry, overflow) im Prozessor zu prüfen, wenn das entsprechende Bit gesetzt ist, und abhangig von diesem Ergebnis den Programmzahler des Prozessors entsprechend einzustellen .
Die Aufgabe der vorliegenden Erfindung wird ebenso durch eine Vorrichtung zur Bearbeitung bedingter Sprungbefehle in einem Prozessor mit "Pipelined"-Architektur gelost, in dem eine Vorrichtung zur Veränderung des Programmzahlerstandes zur Ausfuhrung der bedingten Sprunge vorgesehen ist.
Dabei ist es besonders bevorzugt, wenn die Vorrichtung zur Veränderung des Programmzahlerstandes einen oder mehrere Eingange für entsprechende zusatzliche Bits in den Maschinenbefehlen des Prozessors und einen oder mehrere Eingange f r die entsprechenden "Flag"-Signale aus dem Rechenwerk des Prozessors aufweist.
Es ist dabei besonders vorteilhaft, wenn sichergestellt ist, daß die entsprechenden zusatzlichen Bits aus den Maschinenbe- fehlen gleichzeitig mit den zugehörigen "Flag"-Signalen an der Vorrichtung zur Veränderung des Programmzahlerstandes anliegen.
Vorzugsweise ist die Vorrichtung zur Veränderung des Pro- grammzahlerstandes mit einem Addierwerk ausgerüstet.
Die vorliegende Erfindung wird im folgenden anhand der in der Anlage beigefugten Zeichnungen naher erläutert. Es zeigen:
Fig. 1 den Arbeitsablauf eines Prozessors mit zweistufiger Pipeline;
Fig. 2 den Aufbau eines erfindungsgemaßen 22 Bit langen Maschinenbefehls;
Fig. 3 den Aufbau eines erfindungsgemaßen 25 Bit langen Ma- schinenbefehls;
Fig. 4 eine schematische Darstellung einer erfindungsgemaßen Vorrichtung zur Veränderung des Programmzahlerstandes zur Ausfuhrung bedingter Sprunge;
Fig. 5 eine weitere erfindungsgemaße Vorrichtung zur Veränderung des Programmzahlerstandes zur Ausfuhrung bedingter Sprunge;
Fig. 6 eine schematische Darstellung des Gesamtaufbaus eines Prozessors mit "Pιpelmed"-Archιtektur zur Ausführung bedingter Sprungbefehle mit der erfindungsgemaßen "branch- prediction"; und
Fig. 7 eine detaillierte Darstellung eines Prozessors mit Vorrichtungen zur erfindungsgemaßen "branch-prediction" .
Die vorliegende Erfindung geht von einer "pipelmed"- Architektur für einen Prozessor aus. Diese ist beispielsweise in dem Buch "Computer Organisation and Design" von Pattersen & Hennessy beschrieben.
Kurz gefaßt bedeutet die "Pιpelmed"-Archιtektur folgendes:
Normalerweise wird jeder Maschinenbefehl von einem Prozessor mittels folgender Operationen abgearbeitet:
1. Instruction fetch (Laden des Befehls)
2. Instruction decodmg (Dekodieren des Befehls) 3. Execution (Ausfuhrung des Befehls)
4. Write back (Zurückschreiben der Ergebnisse)
Es ist bereits im Stand der Technik bekannt, diese Operationen teilweise parallel ablaufen zu lassen, indem ein Befehl beispielsweise gerade ausgeführt wird, wahrend bereits der nächste Befehl dekodiert wird. Diese Vorgehensweise ist in der Figur 1 für eine zweistufige Pipeline dargestellt.
Ein Prozessor nutzt die "Pipeline" also, um im Schnitt einen Befehl pro Prozessorzyklus zu verarbeiten.
Diese "Pιpelmed"-Archιtektur des Prozessors fuhrt allerdings dann zu Problemen, wenn bedingte Sprungbefehle ausgeführt werden sollen. Dieses Problem wird in der Fachsprache "branch harzard" genannt. Dies bedeutet, daß ein "branch"-Befehl , also ein bedingter Sprungbefehl, erst nach Ausfuhrung des voπ- gen Befehls zeigen kann, ob der nächste Befehl weiter bearbeitet oder auf eine andere Zieladresse gesprungen werden soll.
Im Stand der Technik lost man dieses Problem, indem der Takt nach dem bedingten Sprungbefehl mit einem "No operation"-
Befehl, also einem Befehl, einen Prozessorzyklus zu warten, gefüllt wird. Dann ist zwar auf jeden Fall sichergestellt, daß das Programm richtig weiterlauft, man verliert aber einen Prozessorzyklus und damit die maximal mögliche Rechenleis- tung. Der bisherige Stand der Technik soll anhand der folgenden Beispiele, die jeweils die Berechnung des Absolut-Betrags einer Zahl behandeln, naher erläutert werden:
Zum einen gibt es die Möglichkeit der bedingten Ausfuhrung, also beispielsweise:
/* A = |B| */ LOAD Rl B
COMPARE Rl 0 /*wenn B > 0, carry = 0 */ NEGATIVE Rl on-carry /* negieren wenn carry = 1 */ STORE Rl A
Diese Art der Ausfuhrung ist jedoch nur möglich, wenn nur ein einziger Befehl bedingt ausgeführt werden muß, und dieser Befehl keinen Sprung enthalt. Bei komplexeren Funktionen oder Aufgaben, die nicht mehr nur mit einem Befehl dargestellt werden können, muß jeweils ein bedingter Sprung erfolgen, wie dies im folgenden Programm dargestellt ist. Wie aus dem eingerahmten Programmabschnitt erkennbar ist, muß nach den beiden Sprungbefehlen ein "no operation"-Befehl eingefugt werden (im Falle einer zweistufigen Pipeline, bei längeren Pipelines entsprechend mehr "no operation"-Befehle :
LOAD Rl B COMPARE Rl 0
JUMP ON CARRY Ll
JUMP L2
NO OP
Ll NEGATIVE Rl L2 STORE Rl A
Schließlich gibt es im Stand der Technik noch die Möglichkeit der sogenannten spekulativen Ausfuhrung. Das bedeutet, daß man einfach eine Möglichkeit ausfuhrt, und hofft, mit einer Wahrscheinlichkeit von etwas mehr als 50 % die richtige Fortsetzung zu treffen. Dies erfordert aber einen ganz erheblichen Hardware-Aufwand, da ja dann im Falle des Nichtzutref- fens der Vermutung einige Befehle "ruckabgewickelt" werden müssen. Außerdem gehen trotzdem Prozessorzyklen verloren, wenn man sich "verschätzt" hat.
Gemäß dem Stand der Technik gab es also bisher keine geeignete Losung für dieses Problem, daß ein solcher "branch har- zard", also ein Problem bei der bedingten Verzweigung, einen Verlust an Arbeitszyklen des Prozessors in einer "Pipelined"- Architektur bewirkte. Erfmdungsgemaß wird nun durch eine Kombination eines Befehls mit "bedingter Ausfuhrung" und ei-
nes "Sprungarithmetik"-Befehls dieses Problem folgendermaßen gelost :
Hier soll wieder ein einfaches Beispiel betrachtet werden, nämlich der Befehl "Addiere R2 zu Rl, wenn Rl dann =0 ist, springe nach Ll". Dieses Programm wird in "C" wie folgt geschrieben :
Rl = Rl + R2 if (Rl = = 0)
GO TO Ll
Ll:
Erfindungsgemaß wird dafür der Maschinenbefehl ADD Rl, R2, #JMP, ON ZERO, verwendet. #JMP bedeutet dabei die relative Sprungadresse zum Einsprungspunkt Ll .
Damit erweitern wir einmal den Befehl um eine "Post- Condition" zur bekannten "Pre-condition" . Zum Beispiel: Pl, ADD Rl, R2, #JMP, Ql .
Dabei bedeutet Pl: Ausfuhren von R1=R1+R2 wenn Pl erfüllt ist. Erfindungsgemaß bedeutet Ql : Ausfuhren von Sprung um JMP wenn Ql nach der Berechnung von R1=R1+R2 erfüllt ist.
Damit konnte man das folgende "C"-Programm:
if (A=l)
B = A; eise
C = A;
folgendermaßen in Maschinencode übersetzen:
LOAD Rl A
Ql TEST Rl 1 # L /* if A=l ump L */ Pl Ql STORE Rl B
STORE Rl C
Erfmdungsgemaß können also in der Befehlscodierung sowohl Bits für "Pre-Conditions" als auch Bits für "Post-Conditions" vorgesehen werden, wie dies beispielsweise Fig. 2 und 3 dargestellt ist.
Fig. 2 zeigt dabei em vereinfachtes Beispiel mit einem lediglich 22 Bit langen Befehl, wobei ein Bit 1 für die "Pre- Condition" em Bit 2 für die "Post-Conditions" , 8 Bit 3 bis 10 für den relativen Sprungwert (Displacement ) und dann wie üblich je drei Bits für die beiden Registeradressen und 6 Bit für den Befehlscode vorgesehen sind.
In der Realität ist es üblicherweise erforderlich, mehrere
Bedingungen als "Pre-condition" und "Post-Condition" zu prüfen. Es müssen deshalb entsprechend mehr Bits vorgesehen werden, wie dies m Fig. 3 dargestellt ist.
In Fig. 3 enthalten die Bits 0 bis 1 die Informationen für Post condition, die Bits 2 und 3 Information für Pre- Conditions, die Bits 4 bis 10 die relative Sprungadresse, d.h. die Sprungweite.
Besonders wirkungsvoll laßt sich das erfmdungsgemaße Verfahren im Zusammenhang mit einer Programmschleife einsetzten, beispielsweise für das folgende "C"-Programm:
für (ι=l; l < 5; ι++) { x [l] = 1; /* C-Programm */
Erfmdungsgemaß kann dies dann m das folgende erheblich vereinfachte Maschinenprogramm umgesetzt werden:
Load Rl 5
Load R2 X /^Adresse von X[5]*;
Ll= STORE_INDEXED R2 Rl /* x[ι] = l */ Ql DECREMENT Rl #1 Ll
Dabei bedeutet die "Post condition Ql": Bedingter Sprung, wenn das Ergebnis R1=R1-1 nicht 0 ist.
Em weiteres Beispiel für die erfindungsgemaß erzielbaren Vereinfachungen bei der Programmierung ist das im folgenden dargestellte Programm für die Abarbeitung eines Ringpuffers.
Gemäß dem Stand der Technik hatte dieses Programm wie folgt programmiert werden müssen:
TST (R3) #buffer_end // ring buffer end reached
BNZ NEXT // if no
NOP
LDI (R3) #buffer_start // eise set the pointer to buffer agam
Erfindungsgemaß genügen statt dessen die folgenden beiden Befehle:
TST (R3) #buffer_end
LDI (R3) #buffer_start
Es ist jedoch zu beachten, daß diese erfmdungsgemaße Losung nicht für alle Schleifenstrukturen anwendbar ist. Schleifen- Strukturen aller Art können jedoch erfindungsgemaß wie folgt programmiert werden:
LDI (R4) #loop_cnt_mιnus_l // mit loop counter WHILE_LOOP: FIRST_PC // code sequency
SUBI (R4) #1 #loop_flag // decrement by 1 and ιn- dicate loop end
BNZ WHILE_LOOP // if not zero go to loop begin
Erfindungsgemäß wird anstelle des üblichen Subtraktions- Maschinenbefehls SUB ein Maschinenbefehl SUBI verwendet, der erweitert ist, so daß er ein Flag-Bit aufweist, welches dazu benutzt wird, einen Zyklus vor dem bedingten Sprungbefehl BNZ anzuzeigen, was die richtige Verzweigung beim bedingten Sprung ist, so daß im Falle einer zweistufigen Pipeline über- haupt kein Verlust an Prozessorzyklen auftritt. Der Befehl LDI zeigt einen Schleifenbeginn an.
Die typische Losung zur Vermeidung des "branch harzard" beruht darauf, eine Vorhersage über das zu erwartende Sprung- ziel des bestimmten Sprunges zu machen.
Die Implementierung einer Schleife erfordert im allgemeinen diese drei Schritte:
1. Initialisiere den Schleifenzahler
2. Dekrementiere oder inkrementiere den Schleifenzähler
3. Springe am Ende der Schleife
Der Zyklenverlust bei dem bedingten Sprung beruht darauf, daß die nächste Instruktion, die nach dem Sprung ausgeführt wird abhangig von der Erfüllung der Schleifenbedingung ist. Diese Tatsache fuhrt dazu, daß nach dem bedingten Sprungbefehl der Dummy-Befehl NOP eingefugt werden muß. Durch Verwendung eines Schleifen-Flags in einem Rechenbefehl wie ADD oder SUB kann die Schleifenbedingung am Ende der Ausfuhrung des Additionsoder Subtraktionsbefehls geprüft werden. Dann kann das "Zero- flag", d.h. die Anzeige des Rechenwerks, daß es auf 0 steht, geprüft werden, um zu entscheiden, auf welche Adresse der Programmzähler des Prozessors gesetzt werden sollte. Das "LOOP-flag" kann als "ENABLE-DISABLE-flag" oder allgemeiner als Adressverschiebung interpretiert werden.
Figur 4 zeigt das einfachste Grundprinzip für die erfindungs- gemaße Implementierung eines "LOOP"-flags .
Der Programmspeicher 10 wird hierbei über einen Multiplexer 12 mit dem Programmzahler 14 verbunden. Der Ausgang des Programmzahlers (PC) 14 ist mit einem logischen Gatter 16 verbunden, welches den Ausgangswert des Programmzahlers mit einer Konstante oder dem LOOP-flag verknüpft. Der Ausgang dieser Logik-Schaltung 16 ist mit dem einen Eingang des Multi- plexers (MUX) 12 verbunden, dessen anderer Eingang ja mit dem Programmspeicher 10 verbunden ist, und dessen Ausgang mit dem Programmzahler 14 verbunden ist. Der Multiplexer 12 wird über ein Steuersignal (Control) vom Prozessor gesteuert.
Eine weitere Verbesserung der Erfindung erlaubt den Verzicht auf den Sprungbefehl, indem der Beginn der Schleife gepuffert wird:
LDP (R4) #loop_cnt_minus_l WHILE_LOOP:
FIRST_PC SUBI (R4) #1 #Loop-flag NEXT_INS:
Hierbei ist ein zuatzlicher Befehl LDP erforderlich, der anzeigt, daß eine Schleife beginnt. Die nächste Programmcodeadresse wird dann als Schleifenbeginn gepuffert. Das selbe Resultat konnte man auch erzielen, indem man den Befehl LDI verwendet und den nächsten Programmzahlerwert explizit in den Puffer ladt. Hierdurch wird aber naturlich wieder ein zusatzlicher Befehl benotigt. Der Befehl SUBI weist ein Loop-flag auf, welches dazu dient, anzuzeigen, welches die richtige Verzweigung bei dem bedingten Sprung ist. Das zero-flag wird geprüft, um zu entscheiden, ob man zum Beginn der Schleife zurückspringen soll, oder die nächste Instruktion (NEXT_INS) ausfuhren soll, die durch #-Loop-Flag angezeigt ist.
Für diese vereinfachte Bearbeitung von Schleifenstrukturen ist eine etwas kompliziertere Struktur der erfindungsgemaßen Schaltung erforderlich, wie sie in Fig. 5 dargestellt ist.
Ahnlich wie m Fig. 4 ist auch hier em Programmspeicher 10 vorgesehen, der mit dem Eingang eines Multiplexers 12 verbunden ist, dessen Ausgang wiederum mit dem Programmzahler (PC) 14 verbunden ist. Der Ausgang des Programmzahlers (PC) 14, ist ebenfalls mit einem logischen Gatter 16 verbunden, wel- ches den Ausgangswert des Programmzahlers mit dem Loop-Flag verknüpft. Der Ausgang dieser Logik-Schaltung 16 ist mit einem weiteren Eingang des Multiplexers (MUX) 12 verbunden. Im vorliegenden Fall weist jedoch der Mulitplexer 12 einen weiteren Eingang auf, der mit einem Puffer 18 verbunden ist, dessen Eingang mit dem Wert des Programmzahlers 14 geladen werden kann. Auf diese Weise erübrigt sich der explizite Befehl "Lade den nächsten Programmzahlerstand in den Puffer".
Die Fig. 6 zeigt den gesamten Aufbau eines Prozessors mit der Fähigkeit, die erfindungsgemaßen Befehle abzuarbeiten. Gleiche Elemente wie m den Fig. 4 und 5 sind auch hier mit gleichen Bezugszeichen versehen. Der Programmzahler (PC) 14 greift wiederum auf den Programmcodespeicher 10, und dabei jeweils auf die abzuarbeitende Programmzeile zu. Vom Pro- grammspeicher 10 wird der entsprechende Instruction Code (Befehlscode) dem Befehlsdecoder (IDEC) 20 zugeführt. Dieser gibt die entsprecnenden Steuerbefehle an das Rechenwerk (ALU) 22 und an den Registersatz 24 weiter. Die Inhalte der Register werden dann nach Bedarf in das Rechenwerk 22 geladen, o- der von dort wieder zurückgeschrieben, wie dies mit den Pfeilen angedeutet ist. Die Flag-Signale zero, carry und overflow des Rechenwerks 22 werden gleichzeitig sowohl dem Befehlsdecoder (IDEC) 20 als auch dem Steuereingang des Multiplexers (MUX) 12 zugeführt. Die beiden Eingänge des Multiplexers 12 sind mit dem Wert 1 und mit dem vom Befehlsdecoder 20 gelieferten relativen Sprungwert #JMP belegt. Der Ausgang des Multiplexers 12 ist mit einem Addierwerk 16 verbunden, dessen
anderer Eingang mit dem Ausgang des Programmzahlers 14 verbunden ist.
Bei mehr als zwei Pipelined-Stufen ist zu beachten, daß die Flag-Signale zero, carry, overflow und der zugehörige relati¬ ve Sprungwert #JMP gleichzeitig am Multiplexer 12 anliegen müssen. Bei einer zweistufigen Pipeline, wie bei dem vorliegenden Ausfuhrungsbeispiel beschrieben, ist dies jedoch nicht erforderlich. Im folgenden wird nun die entsprechende Befehlscodierung mit der erfindungsgemäßen "Post-condition" beschrieben. Hierzu wenden wir uns nochmals der Fig. 2 zu, die den einfachstmoglichen erfindungsgemaßen Befehlssatz mit einer Lange von 22 Bit darstellt.
Die obersten 6 Bit (21 bis 16) enthalten dabei den Befehlscode (OPCODE) , beispielsweise: Addition. Die nächsten drei Bits enthalten die Adresse des ersten Registers (REG A)mit drei Bit Lange (übliche Prozessoren verwenden meist nicht mehr als 8 Register) auf den Bits 15, 14, 13, sodann folgt die Registeradresse des zweiten, im vorliegenden Fall zu addierenden Registers (REG B) auf den Bits 12, 11 und 10.
Das Rechenwerk des Prozessors wird bei diesem Befehl also den Inhalt der Register A und B addieren und ins Register able- gen. Erfindungsgemaß sind diesem Befehl nun weitere Bits angefugt, nämlich die Bits 9 bis 2 (displacement ) , die die relative Sprungweite bei einem folgenden bedingten Sprung angeben. Sodann folgen die Condition-Bits 1 und 0, wobei das Bit 1 (Post) die Post-condition angibt, wahrend das Bit 0 (PRE) die Pre-condition angibt.
Der Bearbeitungsablauf ist dabei nun folgendermaßen: Der Befehl muß abgeholt und decodiert werden. Dazu startet der Prozessor an einem bestimmten Programmzahlerstand, z.B. PC=0.
Mit diesem Programmzahlerstand wird ein Befehl von 22 Bit aus dem Programmspeicher abgeholt, der an der diesem Programmzahlerstand entsprechenden Adresse im Speicher steht.
Der Befehl wird sodann vom Instruction-Decoder (IDEC) 20 verarbeitet .
Dabei wird zuerst geprüft, ob das entsprechende Pre- condition-Bit gesetzt ist. Wenn dies der Fall ist, wird der Befehl beim Nichterfullen der entsprechenden Pre-condition gar nicht ausgeführt.
Der Unterschied der vorliegenden Erfindung zum Stand der Technik liegt in den Post-condition-Bits .
Aus diesem Post-condition-Bits wird das Signal "BR_CTR" erzeugt. Gleichzeitig wird die Addition folgendermaßen durchgeführt:
Ein Steuersignal ALU-CTR sowie die Lese- und Schreibadressen und Enable-Signale für das Rechenwerk werden erzeugt. Zugleich stellt der Instruction-Decoder 20 die relative Sprungweite "BR" zur Verfugung. Das "BR-CTR"-Signal steuert die Verzweigungskontrolle nach folgenden Vorgaben an:
1. Kein Sprung, wenn Post-condition-Bit=0, also PCNEW=PCOLD+l
2. Wenn Post-conditιon-Bit=l und die Bedingung erfüllt wird, z.B. zero-flag=l, dann wird em relativer Sprung ausgeführt. Der Programmzahler 14 wird also auf den neuen Wert PCNEW=PCOLD+BR gesetzt.
Wenn das Post-condition-Bit zwar =1 ist, die Bedingung aber nicht erfüllt wird, wird ebenfalls kein Sprung durchgeführt, also: PCNEW=PCOLD+l .
Es ist möglich, mehr als ein Post-condition-Bit zu verwenden, wie dies beispielsweise n Fig. 3 dargestellt ist. Es können dann mehr Bedingungen geprüft werden (beispielsweise zero, carry, overflow) .
Erfindungsgemaß wird also erstmals gleichzeitig Steuerinformation für das Rechenwerk und Information zu Sprungzieladressen gleichzeitig vom Instruction-Decoder 20 beim Decodieren der Befehle bereitgestellt.
Nunmehr wird der Befehl ausgeführt und ggf. verzweigt.
Dazu wird die Aktion vom Rechenwerk (ALU) ausgeführt. Das Ergebnis wird m das entsprechende Register zurückgeschrieben. Gleichzeitig liegen die entsprechenden zero-, carry- usw. -flags am Ausgang des Rechenwerks an.
Der Verzweigungssteuerung werden dabei die Bits für die einzelnen Flags, "BRCTR" und der Wert "BR" zum gleichen Takt zur Verfugung gestellt. Wie in Fig. 7 dargestellt, erzeugt dann die Steuereinheit "Cond" 26 zwei Steuersignale SI und S2. SI steuert an, entweder keinen Sprung vorzunehmen, oder einen relativen Sprung auszurechnen. S2 schaltet dann die relative Sprungadresse "PCNEW" durch den Multiplexer 12 durch.
Im Ergebnis spart man einen zusätzlichen Befehl für den Sprung zusätzlich zu dem entsprechenden Arithmetikbefehl. Dadurch kann man eine Verringerung der Anzahl der erforderlichen Befehle erreichen und erhöht damit den Durchsatz des Prozessors.
Der Aufbau eines Prozessors zur Bearbeitung von Befehlen mit den erfindungsgemaßen "Post-condition-Bits" ist in Fig. 7 im einzelnen dargestellt. Gleiche Ziffern wie in den Fig. 4, 5 und 6 verweisen auf gleiche Einheiten.
Auch in Fig.7 ist ein Programmzahler 14 vorgesehen, der einen Befehlsspeicher (CODEROM) 10 adressiert. Von dort werden die Befehle mit einer Befehlsbreite von 22 Bit dem Befehlsdeco- dierer (IDEC) 20 zugeführt. Dieser erzeugt die üblichen Sig- nale zur Ansteuerung der Register 24 und des Rechenwerks
(ALU) 22. Erfindungsgemaß erzeugt er jedoch auch zusatzlich die Signale "BR" (dieses Signal umfaßt mehrere Bits) und gibt die relative Sprungweite an, sowie das Signal "BR-CTR", welches angibt, daß ein bedingter Sprung abzuarbeiten ist, und die entsprechenden Flag-Bits des Rechenwerks abzuprufen sind.
Das Rechenwerk 22 liefert an seinem Ausgang Ergebnisse (result) und die entsprechenden Flags, die bestimmten Bedingungen (z.B. 0=zero, Überlauf=overflow, Ubertrag=carry usw.) darstellen. Die Ergebnisse (result) können naturlich auch den Registern 24 wieder zugeführt werden. Die "BR_CTR"-Signale und die Flags aus der ALU werden einer weiteren Logikeinheit (Cond) 26 zugeführt. Diese erzeugt in Abhängigkeit von den entsprechenden BR_CTR-Signalen und den zugehörigen Flags Sig- nale SI und S2, die den Multiplexer 12 und einen Schalter vor dem einen Eingang des Addierwerks 16 steuern. Dieser Schalter schaltet abhangig von der Erfüllung der Flagbedingungen zwischen 1 und "BR" um. Der andere Eingang dieses Addierwerks ist mit dem Ausgang des Programmzahlers 14 verbunden.
Auf diese erfindungsgemaße Weise kann mit relativ wenig technischem Zusatzaufwand am Prozessor eine wesentlich schnellere Abarbeitung bedingter Sprunge durchgeführt werden.
Claims
1. Verfahren zur Bearbeitung bedingter Sprungbefehle in einem Prozessor mit "Pipelined"-Architektur, d a d u r c h g e- k e n n z e i c h n e t, daß jedem Befehl, nach dem ein bedingter Sprung ausgeführt werden soll, ein oder mehrere zusatzliche Bits hinzugefugt werden, die angeben, unter welcher Bedingung der bedingte Sprung auszufuhren ist.
2. Verfahren nach Anspruch 1, d a d u r c h g e k e n nz e i c h n e t, daß zusatzlich zu jedem Befehl, nach dem ein bedingter Sprung ausgeführt werden soll, die entsprechende Sprungadresse zugefugt wird.
3. Verfahren nach Anspruch 1 oder Anspruch 2, d a d u r c h g e k e n n z e i c h n e t, daß zusatzlich jedem Befehl ein oder mehrere Bits hinzugefügt werden, die angeben, unter welchen Bedingungen der Befehl überhaupt auszufuhren ist.
4. Verfahren nach einem der Ansprüche 1 bis 3, d a d u r c h g e k e n n z e i c h n e t, daß bei jedem der Befehle mit einem oder mehreren zusatzlichen Bits, parallel zur Ausfuhrung des Befehls die dem oder den Bits entsprechenden Flags (z.B. zero, carry, overflow) im Prozessor geprüft werden, wenn das entsprechende Bit gesetzt ist, und abhangig von diesem Ergebnis der Programmzahler (PC) des Prozessors entsprechend eingestellt wird.
5. Vorrichtung zur Bearbeitung bedingter Sprungbefehle in ei- nem Prozessor mit "Pipelined"-Architektur , d a d u r c h g e k e n n z e i c h n e t, daß eine Vorrichtung zur Veränderung des Programmzahlerstandes zur Ausfuhrung der bedingten Sprunge vorgesehen ist.
6. Vorrichtung nach Anspruch 5, d a d u r c h g e k e n nz e i c h n e t, daß die Vorrichtung zur Veränderung des Pro- grammzahelerstandes einen oder mehrere Eingänge für entspre- chende zusatzliche Bits in den Maschinenbefehlen des Prozessors und einen oder mehrere Eingange für die entsprechenden "flag"-Signale aus dem Rechenwerk des Prozessors aufweist.
7. Vorrichtung nach Anspruch 6, d a d u r c h g e k e n nz e i c h n e t, daß die entsprechenden zusatzlichen Bits aus den Maschinenbefehlen gleichzeitig mit den zugehörigen
"flag"-Signalen an der Vorrichtung zur Veränderung des Programmzahlerstandes anliegen.
8. Vorrichtung nach einem der Ansprüche 5 bis 7, d ad u r c h g e k e n n z e i c h n e t, daß die Vorrichtung zur Veränderung des Programmzahlerstandes ein Addierwerk umfaßt.
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| DE19945940A DE19945940C2 (de) | 1999-09-24 | 1999-09-24 | Verfahren und Vorrichtung zur Bearbeitung bedingter Sprungbefehle in einem Prozessor mit PIPELINE-Rechnerarchitektur |
| DE19945940 | 1999-09-24 | ||
| PCT/EP2000/009267 WO2001022217A1 (de) | 1999-09-24 | 2000-09-21 | Verfahren und vorrichtung zur bearbeitung bedingter sprungbefehle in einem prozessor mit 'pipelined'-architektur |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| EP1218819A1 true EP1218819A1 (de) | 2002-07-03 |
Family
ID=7923254
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| EP00967740A Withdrawn EP1218819A1 (de) | 1999-09-24 | 2000-09-21 | Verfahren und vorrichtung zur bearbeitung bedingter sprungbefehle in einem prozessor mit "pipelined"-architektur |
Country Status (5)
| Country | Link |
|---|---|
| EP (1) | EP1218819A1 (de) |
| KR (1) | KR100631318B1 (de) |
| CN (1) | CN1390324A (de) |
| DE (1) | DE19945940C2 (de) |
| WO (1) | WO2001022217A1 (de) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7281120B2 (en) * | 2004-03-26 | 2007-10-09 | International Business Machines Corporation | Apparatus and method for decreasing the latency between an instruction cache and a pipeline processor |
| CN100489771C (zh) * | 2006-07-26 | 2009-05-20 | 应广科技股份有限公司 | 多重微控制器管线式指令执行方法 |
| US9405537B2 (en) | 2011-12-22 | 2016-08-02 | Intel Corporation | Apparatus and method of execution unit for calculating multiple rounds of a skein hashing algorithm |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2723238B2 (ja) * | 1988-01-18 | 1998-03-09 | 株式会社東芝 | 情報処理装置 |
| US5349671A (en) * | 1989-03-23 | 1994-09-20 | Matsushita Electric Industrial Co., Ltd. | Microprocessor system generating instruction fetch addresses at high speed |
| US5136697A (en) * | 1989-06-06 | 1992-08-04 | Advanced Micro Devices, Inc. | System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache |
| TW380238B (en) * | 1996-12-09 | 2000-01-21 | Matsushita Electric Industrial Co Ltd | Information processing apparatus which accurately predicts whether a branch is taken for a conditional branch instruction, using small-scale hardware |
| FR2770662B1 (fr) * | 1997-11-03 | 1999-12-10 | Inside Technologies | Microprocesseur pipeline a saut conditionnel en un cycle d'horloge |
-
1999
- 1999-09-24 DE DE19945940A patent/DE19945940C2/de not_active Expired - Lifetime
-
2000
- 2000-09-21 EP EP00967740A patent/EP1218819A1/de not_active Withdrawn
- 2000-09-21 WO PCT/EP2000/009267 patent/WO2001022217A1/de not_active Ceased
- 2000-09-21 KR KR1020027003878A patent/KR100631318B1/ko not_active Expired - Fee Related
- 2000-09-21 CN CN00815782A patent/CN1390324A/zh active Pending
Non-Patent Citations (1)
| Title |
|---|
| See references of WO0122217A1 * |
Also Published As
| Publication number | Publication date |
|---|---|
| WO2001022217A1 (de) | 2001-03-29 |
| DE19945940C2 (de) | 2002-01-17 |
| KR20020085878A (ko) | 2002-11-16 |
| CN1390324A (zh) | 2003-01-08 |
| DE19945940A1 (de) | 2001-04-12 |
| KR100631318B1 (ko) | 2006-10-09 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE602004008711T2 (de) | Anordnung, Verfahren und Rechnerdatensignal zur selektiven Annullierung der Vorhersage eines Rücksprungstapelspeichers als Antwort auf die Erkennung einer nicht-standard Rücksprungsbefehlsreihe | |
| DE69503046T2 (de) | Mehrfachbefehlssatzabbildung | |
| DE69502098T2 (de) | Datenverarbeitung mit mehrfachbefehlssätzen | |
| DE3750935T2 (de) | Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner. | |
| DE69624158T2 (de) | Superskalarer Prozessor mit mehreren Registerblöcken und Erzeugung von spekulativen Antwortadressen | |
| DE69622663T2 (de) | Zweistufige vorausholungspufferstruktur und verfahren mit bypass | |
| DE69028138T2 (de) | Mechanismus zur präzisen Behandlung von Ausnahmebedingungen in einem Prozessor mit gepaarten Befehlen | |
| DE3856220T2 (de) | Digitaler Signalprozessor der bedingte Mehrpunkt-Sprungbefehle im Pipelinemodus bearbeitet | |
| DE2715073C3 (de) | Mikroprogrammierte Rechner-Steuervorrichtung | |
| DE69534148T2 (de) | Rechnersystem zur Ausführung von Verzweigungsbefehlen | |
| DE19855806A1 (de) | Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen | |
| DE2714805A1 (de) | Datenverarbeitungssystem | |
| DE19983098B4 (de) | Mehrfach-Bitanzeige zur Behandlung von Schreib-nach-Schreib-Fehlern und zur Eliminierung von Bypass-Komparatoren | |
| DE3687893T2 (de) | Steuersystem fuer programmsprungoperation. | |
| DE2935906A1 (de) | Mikrokomputer | |
| DE69616718T4 (de) | Vorrichtung und verfahren zur bestimmung von adressen fehlausgerichteter daten | |
| DE4134392C2 (de) | Verfahren und Vorrichtung zum Ungültigmachen von Befehlen in Geräten mit Parallelverarbeitung | |
| DE69903554T2 (de) | Prozessor konfiguriert zur selektiven freigabe von physikalischen registern beim befehlsausführungsabschluss | |
| DE69801617T2 (de) | Reduzierung der Verzweigungsfehler durch einen Pipeline-Prozessor mit einer Schaltung mit geringer Schaltungsgrösse | |
| DE3307194C2 (de) | ||
| EP1117037B1 (de) | Datenverarbeitungsvorrichtung zum parallelen Verarbeiten von unabhängigen Prozessen (Threads) | |
| DE3688973T2 (de) | Verarbeitungssystem in Pipelinestruktur und Mikroprozessor mit einem derartigen System. | |
| DE10303053B4 (de) | Prozessorarchitektur mit einem Array von Pipelines und einer Registerdatei zum Vermeiden von Datenrisiken und Verfahren zur Datenweiterleitung in einer derartigen Prozessorarchitektur | |
| DE19945940C2 (de) | Verfahren und Vorrichtung zur Bearbeitung bedingter Sprungbefehle in einem Prozessor mit PIPELINE-Rechnerarchitektur | |
| DE69529510T2 (de) | Pipelineprozessor mit reduzierten Verschränkungen, die von Verzweigungsbefehlen veranlasst werden |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
| 17P | Request for examination filed |
Effective date: 20020422 |
|
| AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LI LU MC NL PT SE |
|
| AX | Request for extension of the european patent |
Free format text: AL;LT;LV;MK;RO;SI |
|
| 17Q | First examination report despatched |
Effective date: 20021223 |
|
| RBV | Designated contracting states (corrected) |
Designated state(s): AT BE CH DE FR GB LI |
|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN |
|
| 18D | Application deemed to be withdrawn |
Effective date: 20090401 |