SE510295C2 - Processor method for handling conditional jump instructions and processor adapted to operate according to the specified method - Google Patents
Processor method for handling conditional jump instructions and processor adapted to operate according to the specified methodInfo
- Publication number
- SE510295C2 SE510295C2 SE9702762A SE9702762A SE510295C2 SE 510295 C2 SE510295 C2 SE 510295C2 SE 9702762 A SE9702762 A SE 9702762A SE 9702762 A SE9702762 A SE 9702762A SE 510295 C2 SE510295 C2 SE 510295C2
- Authority
- SE
- Sweden
- Prior art keywords
- processor
- instructions
- instruction
- conditional jump
- reading
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 32
- 239000000872 buffer Substances 0.000 claims abstract description 85
- 238000012545 processing Methods 0.000 claims abstract description 59
- 238000011156 evaluation Methods 0.000 claims description 14
- 230000015654 memory Effects 0.000 claims description 11
- 230000009191 jumping Effects 0.000 claims description 8
- 230000009977 dual effect Effects 0.000 claims description 3
- 238000003754 machining Methods 0.000 claims 1
- 238000011010 flushing procedure Methods 0.000 description 13
- 238000012360 testing method Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 230000001627 detrimental effect Effects 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001143 conditioned effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001747 exhibiting effect Effects 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010972 statistical evaluation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
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)
Abstract
Description
35 510 295--- _ 2 _ Processorn är anpassad att, vid inläsandet av en villkorad hoppinstruktion, förutsäga villkorets uppfyllande, varefter instruktioner är läsbara till, och bearbetbara av, processorn enligt förutsägelsen direkt efter inläsandet av den villkorade hoppinstruktionen. En felaktig förutsägelse resulterar i att efterföljande inlästa och delvis bearbetade instruktioner tas bort ur processorn för att bereda plats för en inläsning av korrekta instruktioner enligt villkorets uppfyllande. 35 510 295 --- _ 2 _ The processor is adapted to, when reading a conditional jump instruction, predict the fulfillment of the condition, after which instructions are readable to, and machinable by, the processor according to the prediction immediately after reading the conditional jump instruction. An incorrect prediction results in subsequent read and partially processed instructions being removed from the processor to make room for a reading of correct instructions according to the fulfillment of the condition.
TEKNIKENS TIDIGARE STÅNDPUNKT För att ytterligare förenkla förståelsen av teknikens tidigare ståndpunkt och föreliggande uppfinning skall några begrepp som kommer att användas i den kommande beskrivningen definieras här.PRIOR ART In order to further simplify the understanding of the prior art and the present invention, some terms that will be used in the following description will be defined herein.
Vid inläsning av en instruktion, bearbetning av densamma och utläsning av det bearbetade resultatet sker i olika steg. Vid inläsningen av instruktionen till en processor förbereds en möjlig bearbetning av instruktionen. En instruktion innefattar vanligtvis tvá operander och en operation som skall tillämpas pà dessa operander.When reading an instruction, processing it and reading out the processed result takes place in different steps. When reading the instruction to a processor, a possible processing of the instruction is prepared. An instruction usually includes two operands and an operation to be applied to these operands.
Förberedelsen av instruktionen innefattar bland annat ett så kallat "Fetch-steg". Detta steg innefattar ett inhämtande av operand-värden eftersom själva instruktionen ofta, dock inte alltid, endast innehåller en adress till en position i ett minne där värdet för operanden finns.The preparation of the instruction includes, among other things, a so-called "Fetch step". This step involves obtaining operand values because the instruction itself often, but not always, contains only an address to a position in a memory where the value of the operand is located.
Ett Fetch-steg kan ta olika lång tid för olika instruktioner beroende på varifrån olika operand-värden skall hämtas. Detta betyder att en första instruktion som lästs in före en andra instruktion bearbetas efter den senare inlästa andra instruk- tionen pà grund av att operand-värdena till den andra instruk- tionen är tillgängliga snabbare än operand-värdena till den första instruktionen. Således kan resultatet från den andra instruktionen finnas färdigt i instruktionsbufferten före 10 15 20 25 30 35 510 29is-i _ 3 _ resultatet från den första instruktionen.A Fetch step can take different lengths of time for different instructions depending on where different operand values are to be retrieved from. This means that a first instruction read before a second instruction is processed after the later read second instruction because the operand values for the second instruction are available faster than the operand values for the first instruction. Thus, the result of the second instruction can be completed in the instruction buffer before the result of the first instruction.
En bearbetning av en instruktion sker i en del av processorn som benämns Aritmetisk Logisk Enhet eller ALU (Arithmetical Logical Unit).An instruction is processed in a part of the processor called the Arithmetic Logical Unit (ALU).
Eftersom ALU'n inte behöver bearbeta instruktionerna i sek- vensordning kan väntetiderna för ALU'n, i det fall då Fetch- steget för en instruktion tar lång tid, minskas.Since the ALU does not need to process the instructions in sequence order, the waiting times for the ALU, in the case where the Fetch step for an instruction takes a long time, can be reduced.
Vid en felaktig förutsägelse av uppfyllandet av en villkorad hoppinstruktion tas felaktigt inlästa instruktioner bort ur processorn. Detta kallas här "spolning" av processorn.In the event of an incorrect prediction of the fulfillment of a conditional jump instruction, incorrectly read instructions will be removed from the processor. This is called "flushing" of the processor.
Den allmänna metoden att förutsäga ett villkors uppfyllande, såsom det beskrivits ovan, visas exempelvis i patentpublika- tion EP-A2-0 706 121.The general method of predicting the fulfillment of a condition, as described above, is shown, for example, in patent publication EP-A2-0 706 121.
Många olika sätt att minska den menliga effekten av en felak- tig förutsägelse av uppfyllandet av en villkorad hoppinstruk- tion är kända.Many different ways of reducing the detrimental effect of an incorrect prediction of the fulfillment of a conditional jumping instruction are known.
Publikation US-A-5 381 532 beskriver en processor som nyttjar en alternativ ingángsbuffert, en grenbuffert (B). Vid inläsan- det av en villkorad hoppinstruktion läses instruktionerna en- ligt förutsägelsen för villkorets uppfyllande in sekvensiellt efter den villkorade hoppinstruktionen och de instruktioner som skall inhämtas om förutsägelsen är felaktig läses och lagras i grenbufferten.Publication US-A-5 381 532 describes a processor which uses an alternative input buffer, a branch buffer (B). When reading a conditional jump instruction, the instructions according to the prediction for the fulfillment of the condition are read in sequentially after the conditional jump instruction and the instructions that must be obtained if the prediction is incorrect are read and stored in the branch buffer.
Vid en eventuell spolning av processorn är de korrekta in- struktionerna redan inlästa i grenbufferten och är således omedelbart tillgängliga för processorn. Detta minskar den tidsförlust som en felaktig förutsägelse och efterföljande spolning medför.In the event of a possible flushing of the processor, the correct instructions are already loaded in the branch buffer and are thus immediately available to the processor. This reduces the time loss that an incorrect prediction and subsequent flushing entails.
Publikationerna US-A-5 127 091, US-A-5 539 911, US-A-5 237 664 10 15 20 25 30 35 510 295 _ 4 _ och US-A-4 742 451 visar och beskriver andra lösningar som bygger på nyttjandet av en parallell buffert för inläsandet av gren-instruktioner.The publications US-A-5 127 091, US-A-5 539 911, US-A-5 237 664 10 15 20 25 30 35 510 295 _ 4 _ and US-A-4 742 451 show and describe other solutions which are based on on the use of a parallel buffer for reading branch instructions.
Det är även tidigare känt att förfina den algoritm som beräk- nar sannolikheten för att ett villkor för en villkorad hopp- instruktion skall vara uppfyllt och att därigenom minska an- talet felaktiga förutsägelser. Publikationen "A Tour of the Pentium (R) Pro Processor Microarchitecture" : Intel Corpo- ration, beskriver en processor där man endast nyttjar en in- port i processorn och förutsätter att det förutsagda uppfyl- landet av ett villkor stämmer.It is also previously known to refine the algorithm that calculates the probability that a condition for a conditional jump instruction must be met and thereby thereby reduce the number of incorrect predictions. The publication "A Tour of the Pentium (R) Pro Processor Microarchitecture": Intel Corporation, describes a processor where only one input is used in the processor and assumes that the predicted fulfillment of a condition is correct.
Detta ger en mycket snabb och effektiv hantering vid korrekta förutsägelser men medför en total spolning av innehållet i processorn vid en felaktig förutsägelse utan att de korrekta instruktionerna ligger redo i en alternativ buffert.This provides a very fast and efficient handling with correct predictions but entails a total flushing of the contents of the processor in the event of an incorrect prediction without the correct instructions being ready in an alternative buffer.
Det skall även nämnas att en mer noggrann förutsägelse kräver en högre kapacitet vid den statistiska utvärderingen av vill- korens uppfyllande än vad en mindre noggrann förutsägelse kräver.It should also be mentioned that a more accurate prediction requires a higher capacity in the statistical evaluation of the fulfillment of the conditions than a less accurate prediction requires.
Det är även känt att låta en villkorad hoppinstruktion föregås av en villkors-testande instruktion. Denna instruktion ligger företrädesvis så långt före själva hoppinstruktionen så att den hinner exekveras och lämna sitt resultat innan själva hoppinstruktionen kommer in i processorns inport.It is also known to allow a conditional jump instruction to be preceded by a condition-testing instruction. This instruction is preferably so far before the jump instruction itself that it has time to execute and leave its result before the jump instruction itself enters the processor input.
När då den villkorade hoppinstruktionen läses in i processorn är redan resultatet för villkorets uppfyllande känt genom den tidigare exekveringen av den villkors-testande instruktion och rätt instruktioner kan läsas in direkt efter den villkorade hoppinstruktionen.When the conditional jump instruction is read into the processor, the result for the fulfillment of the condition is already known through the previous execution of the condition-testing instruction and the correct instructions can be read directly after the conditional jump instruction.
Inga instruktioner vars resultat kan påverka villkoret för den villkorade hoppinstruktionen får ligga mellan den villkors- 10 15 20 25 30 35 510 295 _ _ 5 _ testande instruktionen och den villkorade hoppinstruktionen och huruvida den villkors-testande instruktionen kan läggas tillräckligt långt framför den villkorade hoppinstruktionen beror således på om instruktioner som kan påverka villkorets uppfyllande ligger nära, eller alldeles före, själva hoppin- struktionen.No instruction whose results may affect the condition of the conditional jump instruction may lie between the conditional jump instruction and the conditional jump instruction and whether the condition test instruction can be placed far enough ahead of the conditional jump instruction. thus depends on whether instructions that may affect the fulfillment of the condition are close to, or just before, the jumping instruction itself.
Denna begränsning medför försvàringar vid mjukvaru-utveckling och i vissa fall tidsfördröjningar vid införandet av tomma in- struktioner mellan en villkors-testande instruktion och till- hörande villkorade hoppinstruktion.This restriction entails difficulties in software development and in some cases time delays in the introduction of empty instructions between a condition-testing instruction and the associated conditional jump instruction.
Publikationerna GB-A-2 293 671 och EP-A2-0 509 245 beskriver båda en dator eller dator-arkitektur som huvudsakligen bygger på att datorn omfattar en separat processor avsedd att bear- beta villkorade hoppinstruktioner separat fràn, och parallellt med, övriga instruktioner.Publications GB-A-2 293 671 and EP-A2-0 509 245 both describe a computer or computer architecture which is mainly based on the computer comprising a separate processor intended to process conditional jump instructions separately from, and in parallel with, other instructions. .
Det skall även nämnas att de instruktioner som hanteras inom en processor förenklat kan delas upp i två typer av instruk- tioner, processor-externa instruktioner och processor-interna instruktioner.It should also be mentioned that the instructions handled within a processor can be divided into two types of instructions in a simplified manner, processor-external instructions and processor-internal instructions.
Exempelvis kan instruktioner i assembler-kod benämnas proces- sor-externa instruktioner medan de instruktioner som erhålls efter att assemblerkoden omvandlats till micro-kod kan be- nämnas processor-interna instruktioner.For example, instructions in assembler code can be called processor-external instructions, while the instructions obtained after the assembler code has been converted to micro-code can be called processor-internal instructions.
Det är i dessa sammanhang även känt att en processor-extern instruktion normalt bildar en serie av processor-interna in- struktioner vid omvandlingen.It is also known in these contexts that a processor-external instruction normally forms a series of processor-internal instructions during the conversion.
Det är även känt att även om en processor-extern instruktion inte omfattar en villkorad hoppinstruktion så kan en sådan in- struktion resultera i en processor-intern villkorad hoppin- struktion vid omvandlingen frán processor-extern kod till processor-intern kod. 10 15 20 25 30 35 510 295 nEnocönELsz-z rön FÖRELIGGANDE UPPFINNING TEKNISK-r PROBLEM Under beaktande av teknikens tidigare ståndpunkt, såsom den beskrivits ovan, torde det få anses vara ett tekniskt problem att, med utgångspunkt från en processor som nyttjar förutsäg- elser av uppfyllandet av villkoret för en villkorad hoppin- struktion för inläsning av efterföljande instruktioner till processorn, där respektive inläst instruktion tilldelas ut- rymme i en här benämnd instruktionsbuffert, vilka utrymmen är tilldelade en inbördes ordning som motsvaras av den sekvensi- ella ordningen, och vilken instruktionsbuffert omfattar åt- minstone en sista position inom instruktionsbufferten som ut- gör en utläsningsposition, varifrån resultaten från bearbet- ningen av respektive instruktion är utläsbara i den sekvensi- ella ordningen, där en felaktig förutsägelse resulterar i att efterföljande inlästa och delvis bearbetade instruktioner tas bort ur processorn för att bereda plats för en inläsning av korrekta instruktioner enligt villkorets uppfyllande, kunna inse hur tidsförlusterna vid en eventuell spolning av proces- sorn skall kunna minskas i förhållande till känd teknik.It is also known that even if a processor external instruction does not include a conditional jump instruction, such instruction may result in a processor internal conditional jump instruction when converting from a processor external code to a processor internal code. PRESENT INVENTION TECHNICAL PROBLEMS Considering the prior art, as described above, it should be considered a technical problem that, based on a processor using predictions, of fulfilling the condition of a conditional jump instruction for reading subsequent instructions to the processor, where each loaded instruction is allocated space in an instruction buffer referred to herein, which spaces are allocated to a mutual order corresponding to the sequential order, and which instruction buffer comprises at least one last position within the instruction buffer which constitutes a readout position, from which the results from the processing of the respective instruction are readable in the sequential order, where an incorrect prediction results in subsequent loaded and partially processed instructions being deleted out of the processor to make room for a load of correct instructions according to the fulfillment of the condition, be able to realize how the time losses in the event of a flushing of the processor can be reduced in relation to known technology.
Det är vidare ett tekniskt problem att kunna inse hur ett snabbare Fetch-steg och en högre nyttjandegrad av processorn skall kunna erbjudas i förhållande till känd teknik, vid en eventuell spolning av processorn.It is also a technical problem to be able to realize how a faster Fetch step and a higher utilization rate of the processor can be offered in relation to known technology, in the event of a possible flushing of the processor.
Det är ett tekniskt problem att kunna inse hur detta skall kunna erbjudas utan att nyttja villkors-testande instruktioner som föregår den villkorade hoppinstruktionen eller en separat processor för bearbetandet av villkorade hoppinstruktioner.It is a technical problem to be able to realize how this can be offered without using condition-testing instructions that precede the conditional jump instruction or a separate processor for processing conditional jump instructions.
Det är ett tekniskt problem att kunna inse hur förutsägelsens riktighet skall kunna utvärderas innan resultatet från bear- betningen av den villkorade hoppinstruktionen nått utläsnings- 10 15 20 25 30 35 510 295i positionen.It is a technical problem to be able to realize how the accuracy of the prediction can be evaluated before the result from the processing of the conditional jump instruction has reached the reading position 10 15 20 25 30 35 510 295 in the position.
Det är ett tekniskt problem att kunna inse hur en spolning av processorn skall kunna ske på ett korrekt sätt vid en felaktig förutsägelse då resultatet från bearbetandet av den villkorade hoppinstruktionen ännu ej nått utläsningspositionen.It is a technical problem to be able to realize how a flushing of the processor can take place correctly in the event of an incorrect prediction when the result from the processing of the conditional jump instruction has not yet reached the readout position.
Det måste få anses vara ett tekniskt problem att kunna inse hur ett inhämtande av korrekta instruktioner skall ske vid en felaktig förutsägelse, samt hur detta skall anpassas till olika processorarkitekturer.It must be considered a technical problem to be able to realize how to obtain correct instructions in the event of an incorrect prediction, and how this should be adapted to different processor architectures.
Det är ytterligare ett tekniskt problem att kunna inse hur en processor skall anpassas hárdvarumässigt för att kunna erbjuda en möjlighet att utvärdera riktigheten av en förutsägelse av ett villkors uppfyllande innan resultatet från bearbetningen av den villkorade hoppinstruktionen nått utläsningspositionen, för att därefter, vid en eventuellt felaktig förutsägelse, kunna genomföra en korrekt spolning av processorn.It is a further technical problem to be able to realize how a processor should be adapted in terms of hardware in order to be able to offer an opportunity to evaluate the accuracy of a prediction of a condition fulfillment before the result of processing the conditional jump instruction reaches the reading position. prediction, be able to perform a correct flushing of the processor.
Det är även ett tekniskt problem att kunna inse hur en metod eller processor enligt föreliggande uppfinning kan anpassas till att även effektivisera en processor vid hanteringen av processor-interna villkorade hoppinstruktioner.It is also a technical problem to be able to realize how a method or processor according to the present invention can be adapted to also make a processor more efficient in the handling of processor-internal conditional jump instructions.
Lösnnrczn För att kunna lösa ett eller flera av de ovan angivna tekniska problemen utgår föreliggande uppfinning fràn en metod för att hantera specifika instruktioner, så kallade villkorade hoppin- struktioner, i en dataprocessor, där respektive inläst in- struktion tilldelas utrymme i en här benämnd instruktionsbuf- fert, vilka utrymmen är tilldelade en inbördes ordning som motsvaras av den sekventiella ordning enligt vilken respektive instruktion är inläst in i processorn. Åtminstone en sista position inom instruktionsbufferten utgör 10 15 20 25 30 35 is1p 295 _ 3 _ en utläsningsposition från instruktionsbufferten. Efter att instruktionerna blivit bearbetbade av processorn är resultatet från bearbetningen lagringsbart i respektive utrymme hörande till instruktionen i instruktionsbufferten, för att slutligen vara utläsbart från utläsningspositionen i den sekventiella ordningen.Solution In order to be able to solve one or more of the above-mentioned technical problems, the present invention is based on a method for handling specific instructions, so-called conditional jump instructions, in a computer processor, where each loaded instruction is allocated space in an instruction buffer referred to herein. fourth, which spaces are assigned a mutual order corresponding to the sequential order according to which the respective instruction is loaded into the processor. At least one last position within the instruction buffer constitutes a read position from the instruction buffer. After the instructions have been processed by the processor, the result of the processing is storable in the respective space belonging to the instruction in the instruction buffer, in order to finally be readable from the reading position in the sequential order.
Processorn är anpassad att, vid inläsandet av en villkorad hoppinstruktion, förutsäga villkorets uppfyllande, varefter instruktioner är läsbara till, och bearbetbara av, processorn enligt denna förutsägelse direkt efter inläsandet av den vill- korade hoppinstruktionen.The processor is adapted to, when reading a conditional jump instruction, predict the fulfillment of the condition, after which instructions are readable to, and machinable by, the processor according to this prediction immediately after reading the conditional jump instruction.
En felaktig förutsägelse resulterar i att efterföljande in- lästa och delvis bearbetade instruktioner tas bort ur proces- sorn för att bereda plats för en inläsning av korrekta in- struktioner enligt villkorets uppfyllande.An incorrect prediction results in subsequent read-in and partially processed instructions being removed from the processor to make room for a reading of correct instructions according to the fulfillment of the condition.
Med utgångspunkt från en sådan metod anvisar föreliggande upp- finning specifikt att utfallet från bearbetandet av den vill- korade hoppinstruktionen, och därmed vetskapen om uppfyllandet av tillhörande villkor, görs tillgängligt för utvärdering innan utrymmet inom instruktionsbufferten, hörande till den villkorade hoppinstruktionen, nått utläsningspositionen.Based on such a method, the present invention specifically indicates that the outcome of the processing of the conditional jump instruction, and thus the knowledge of the fulfillment of associated conditions, is made available for evaluation before the space within the instruction buffer, belonging to the conditional jump instruction, reaches the read position.
Vidare anvisar föreliggande uppfinning att borttagande av in- struktioner ur processorn endast berör instruktioner som är sekventiellt inlästa efter den villkorade hoppinstruktionen, oavsett var dessa befinner sig i bearbetningen av instruk- tioner, vid en felaktig förutsägelse av uppfyllandet av vill- koret.Furthermore, the present invention teaches that deletion of instructions from the processor only affects instructions that are sequentially loaded according to the conditional jump instruction, regardless of where they are in the processing of instructions, in the event of an incorrect prediction of the fulfillment of the condition.
Med syftet att erbjuda en möjlighet att ytterligare tillvara- taga den tidsvinst som erhålls genom att tidigarelägga vet- skapen om huruvida en förutsägelse av huruvida en villkorad hoppinstruktion är korrekt eller ej, anvisar en metod enligt föreliggande uppfinning vidare att en inhämtning av de kor- 10 15 20 25 30 35 510 235 _ 9 _ rekta instruktionerna påbörjas direkt vid vetskapen om vill- korets uppfyllande om förutsägelsen var felaktig.With the aim of offering an opportunity to further utilize the time gain obtained by advancing the knowledge of whether a prediction of whether a conditional jump instruction is correct or not, a method according to the present invention further teaches that an acquisition of the 15 20 25 30 35 510 235 _ 9 _ the correct instructions begin immediately with the knowledge of the fulfillment of the condition if the prediction was incorrect.
Föreliggande uppfinning anvisar vidare en metod som bygger på att en processor-intern instruktion behandlas såsom beskrivits ovan avseende villkorade hoppinstruktioner, det vill säga att resultatet från en kontroll av uppfyllandet av en förutsägelse rörande en processor-intern villkorad hoppinstruktion göres tillgängligt och beaktas så snart det är klart, även om så skulle vara att utrymmet i instruktionsbufferten, hörande till den processor-interna villkorade hoppinstruktionen, ännu ej nått en utläsningsposition i instruktionsbufferten.The present invention further provides a method based on processing a processor-internal instruction as described above with respect to conditional jump instructions, i.e. the result of a check of the fulfillment of a prediction concerning a processor-internal condition jump instruction is made available and considered as soon as it is clear, even if the space in the instruction buffer, belonging to the processor-internal conditional jump instruction, has not yet reached a readout position in the instruction buffer.
Föreliggande uppfinning utgår även från en processor, vilken omfattar: - en inläsande enhet, avsedd att läsa in instruktioner till processorn från ett minne med sekvensiellt på varandra föl- jande instruktioner, av vilka vissa är så kallade villkorade hoppinstruktioner, där villkorets uppfyllande avgör huruvida de instruktioner som sekvensiellt följer direkt efter den villkorade hoppinstruktionen skall läsas in till processorn eller om ett hopp i sekvensen av instruktioner skall göras, vilket hopp medför att efterföljande instruktioner skall läsas in från någon annan plats i sekvensen enligt den vill- korade hoppinstruktionen, - en instruktionsbuffert, vari utrymme är allokerbart för res- pektive inläst instruktion, vilka utrymmen är tilldelade en inbördes ordning som motsvaras av den sekventiella ordningen och där åtminstone en sista position inom instruktionsbuf- ferten utgör en utläsningsposition från instruktionsbuffer- ten, - en bearbetande enhet, vilken är anpassad att bearbeta in- lästa instruktioner, varefter resultatet från bearbetningen är lagringsbart i utrymmet hörande till respektive instruk- lO 15 20 25 30 35 510 295 _10- tion i instruktionsbufferten, - en kontrollerande enhet, vilken är anpassad att kontrollera huruvida utläsningspositionen innefattar ett resultat fràn en bearbetning, - en utläsande enhet, vilken är anpassad att läsa resultatet från utläsningspositionen, - en förutsägande enhet, vilken är anpassad att, vid inläsan- det av en villkorad hoppinstruktion, förutsäga villkorets uppfyllande, varvid den inläsande enheten är anpassad att inläsa instruktioner till processorn enligt förutsägelsen direkt efter inläsandet av den villkorade hoppinstruktionen, - en utvärderande enhet, vilken är anpassad att utvärdera huruvida villkoret för den villkorade hoppinstruktion är uppfyllt enligt den förutsägelse som den förutsägande en- heten lämnat, samt - en borttagande enhet vilken är anpassad att borttaga ur pro- cessorn inlästa och delvis bearbetade instruktioner som lästs in till processorn efter den villkorade hoppinstruk- tionen om förutsägelsen visat sig vara felaktig.The present invention is also based on a processor, which comprises: a reading unit, intended to read instructions to the processor from a memory with sequentially consecutive instructions, some of which are so-called conditional jump instructions, where the fulfillment of the condition determines whether they instructions that follow sequentially directly after the conditional jump instruction must be loaded into the processor or if a jump in the sequence of instructions is to be made, which jump causes subsequent instructions to be loaded from somewhere else in the sequence according to the conditional jump instruction, - an instruction buffer , wherein space is allocable for respective loaded instructions, which spaces are assigned a mutual order corresponding to the sequential order and where at least one last position within the instruction buffer constitutes a reading position from the instruction buffer, - a processing unit, which is adapted to process in read instructions, after which the result of the processing is storable in the space belonging to the respective instruction in the instruction buffer, - a controlling unit, which is adapted to check whether the readout position comprises a result from a processing , - a reading unit, which is adapted to read the result from the reading position, - a predictive unit, which is adapted to, when reading a conditional jump instruction, predict the fulfillment of the condition, the reading unit being adapted to read instructions to the processor according to the prediction immediately after reading the conditional jump instruction, - an evaluation unit, which is adapted to evaluate whether the condition of the conditional jump instruction is met according to the prediction provided by the predictive unit, and - a removal unit which is adapted to remove from pro cessor loaded and partially processed in instructions read to the processor according to the conditional jump instruction if the prediction turned out to be incorrect.
Med utgàngs punkt av en sådan processor anvisar föreliggande uppfinning speciellt att processorn omfattar en resultatindi- kerande enhet, vilken är anpassad att indikera när resultatet från bearbetningen av en villkorad hoppinstruktion är lagrat i positionen för den villkorade hoppinstruktion inom instrukti- onsbufferten.Based on such a processor, the present invention specifically discloses that the processor comprises a result indicating unit, which is adapted to indicate when the result of the processing of a conditional jump instruction is stored in the position of the conditional jump instruction within the instruction buffer.
Vidare anvisas att den utvärderande enheten är anpassad att inhämta resultatet från bearbetningen av den villkorade hopp- instruktion då detta är tillgängligt enligt den resultatindi- kerande enheten, varvid utvärderingen är möjlig av huruvida villkoret för den villkorade hoppinstruktion är uppfyllt eller 10 15 20 25 30 35 5,111 _29 5 _ 11 _ ej enligt den förutsägelse som den förutsägande enheten lämnat.Furthermore, it is indicated that the evaluating unit is adapted to obtain the result from the processing of the conditional jumping instruction when this is available according to the performance indicating unit, whereby the evaluation is possible of whether the condition for the conditional jumping instruction is met or 10 15 20 25 30 35 5,111 _29 5 _ 11 _ not according to the prediction made by the predictive unit.
Föreliggande uppfinning anvisar även att den borttagande en- heten är anpassad att endast borttaga instruktioner ur proces- sorn som är sekventiellt inlästa efter den villkorade hoppin- struktionen, oavsett var dessa befinner sig i bearbetningen av instruktioner, vid en signal från den utvärderande enheten som visar att förutsägelsen av uppfyllandet av villkoret var fel- aktig.The present invention also teaches that the removal unit is adapted to only remove instructions from the processor that are sequentially loaded according to the conditional jump instruction, regardless of where they are in the processing of instructions, at a signal from the evaluating unit showing that the prediction of the fulfillment of the condition was incorrect.
En processor enligt föreliggande uppfinning är även anpassad att påbörja en inläsning av korrekta instruktioner direkt efter att den utvärderande enheten lämnat resultat om huruvida en förutsägelse varit korrekt, i det fall som förutsägelsen visat sig vara felaktig.A processor according to the present invention is also adapted to start a reading of correct instructions immediately after the evaluating unit has given results as to whether a prediction was correct, in the event that the prediction turned out to be incorrect.
Vidare anvisar föreliggande uppfinning, med utgångspunkt från en processor som omfattar en omvandlande enhet, vilken är an- passad att omvandla processor-externa instruktioner till pro- cessor-interna instruktioner, att ovanstående enheter även är anpassade att bearbeta, och utvärdera resultatet från en sådan bearbetning, av en såväl en processor-intern villkorad hoppin- struktion som en processor-extern villkorad hoppinstruktion enligt ovan.Furthermore, the present invention, based on a processor comprising a converting unit, which is adapted to convert processor external instructions to processor-internal instructions, indicates that the above units are also adapted to process, and evaluate the result of such a process. processing, of both a processor-internal conditional jump instruction and a processor-external conditional jump instruction as above.
FÖRDELAR De fördelar som främst kan få anses vara kännetecknande för en metod och en processor anpassad att verka enligt metoden en- ligt föreliggande uppfinning är att den tidsförlust som spol- ning enligt känd teknik orsakar kan minskas. Det är även så att Fetch-steget kan göras snabbare och ALU'ns (eller ALU'er- nas, kan vara flera) kapacitet kan frigöras för bearbetning av eventuellt väntande instruktioner som ej skall spolas. Vidare är, vid felaktiga förutsägelser, korrekta instruktioner in- läsbara till processorn i ett tidigare skede än vad som till- 10 15 20 25 30 35 510 295 _12- láts med känd teknik. Dessa faktorer erbjuder tillsammans att processorns kapacitet kan utnyttjas i högre grad än tidigare.ADVANTAGES The advantages that can mainly be considered to be characteristic of a method and a processor adapted to operate according to the method according to the present invention are that the time loss caused by flushing according to known technology can be reduced. It is also the case that the Fetch step can be made faster and the capacity of the ALU (or ALUs can be several) can be released for processing any pending instructions that are not to be flushed. Furthermore, in the event of incorrect predictions, correct instructions can be read into the processor at an earlier stage than what is permitted with known technology. These factors together offer that the processor's capacity can be utilized to a greater extent than before.
Principen är enkel och ej bunden till specifika processorarki- tekturer vilket gör att den enkelt kan implementeras i olika processorarkitekturer.The principle is simple and not tied to specific processor architectures, which means that it can easily be implemented in different processor architectures.
Det som främst kan få anses vara kännetecknande för en metod, i enlighet med föreliggande uppfinning, anges i det efterföl- jande patentkravets 1 kännetecknande del, och det som främst kan få anses vara kännetecknande för en processor, i enlighet med föreliggande uppfinning, anges i det efterföljande patent- kravets 5 kännetecknande del.What may primarily be considered as characteristic of a method, in accordance with the present invention, is set forth in the characterizing part of the appended claim 1, and what may primarily be considered as characteristic of a processor, in accordance with the present invention, is set forth in the characterizing part of the appended patent claim 5.
KORT FIGURBESKRIVNING En metod och en processor anpassad att verka enligt metoden, uppvisande de med föreliggande uppfinning förknippade egenhet- erna, skall i exemplifierande syfte nu närmare beskrivas med hänvisning till bifogad ritning, där; figur 1 visar schematiskt och mycket förenklat en processor.BRIEF DESCRIPTION OF THE DRAWINGS A method and a processor adapted to operate according to the method, exhibiting the peculiarities associated with the present invention, will now be described in more detail by way of example with reference to the accompanying drawing, in which; Figure 1 shows schematically and very simply a processor.
BESKRIVNING ÖVER NU FÖRESLBGEN UTFÖRINGSFORM Instruktioner i en programkod kan delas upp i huvudsakligen tvâ typer, flödesändrande instruktioner och icke flödesän- drande instruktioner.DESCRIPTION OF THE NOW PROPOSED EMBODIMENT Instructions in a program code can be divided into mainly two types, flow-changing instructions and non-flow-changing instructions.
En icke flödesändrande instruktion, vilka är de vanligast förekommande, är av typen läs, skriv och aritmetiska opera- tioner. Dessa omfattar vanligtvis tvà operander, en instruk- 10 15 20 25 30 35 510-”295 _ 13 _. tion om vilken operation som skall tillämpas på operanderna, samt en destinationsadress för resultatet från operationen.A non-flow-changing instruction, which is the most common, is of the read, write and arithmetic operations type. These usually comprise two operands, an instruction 10 15 20 25 30 35 510- ”295 _ 13 _. information on which operation is to be applied to the operands, as well as a destination address for the result of the operation.
Flödesändrande instruktioner ändrar flödet av instruktioner och medför ett hopp i programkoden. Den vanligaste typen av flödesändrande instruktioner är så kallade villkorliga hopp eller villkorade hoppinstruktioner. Även dessa omfattar två operander och en instruktion om vilken operation som skall tillämpas på operanderna. Denna operation är vanligtvis en jämförelse mellan operanderna där villkoret för hoppet består i operandernas likhet eller olikhet.Flow-changing instructions change the flow of instructions and cause a jump in the program code. The most common type of flow-changing instructions are so-called conditional jumps or conditional jump instructions. These also include two operands and an instruction on which operation is to be applied to the operands. This operation is usually a comparison between the operands where the condition for the jump consists in the similarity or difference of the operands.
Någon destinationsadress är inte nödvändig vid villkorade hoppinstruktioner då resultatet från operationen används lokalt i processorn för att avgöra huruvida ett hopp i flödet skall göras eller ej, det finns dock inget som hindrar att en destinationsadress nyttjas.No destination address is necessary for conditional jump instructions as the result of the operation is used locally in the processor to determine whether a jump in the flow should be made or not, however there is nothing to prevent a destination address from being used.
Instruktionerna läses in i en processor sekvensiellt och flera instruktioner kan befinna sig i olika steg av bearbetningen i processorn samtidigt. I exemplifierande syfte visas i figur 1 en processor l där åtta instruktioner kan bearbetas 'samti- digt'. Instruktionerna läses från ett program-minne 2 och tilldelas ett utrymme i en här benämnd instruktionsbuffert 3, vilken verkar som en First In First Out- (FIFO) buffert med här visade åtta positioner 3l, 32, ..., 38.The instructions are read into a processor sequentially and several instructions may be in different stages of processing in the processor simultaneously. For exemplary purposes, Figure 1 shows a processor 1 where eight instructions can be processed 'simultaneously'. The instructions are read from a program memory 2 and assigned a space in an instruction buffer 3 referred to herein, which acts as a First In First Out (FIFO) buffer with eight positions 31, 32, ..., 38 shown here.
Resultaten från respektive operation läses ut från instrukti- onsbufferten 3 och skrivs ut till avsedd destinationsadress då instruktionen i fråga befinner sig i en så kallad utläsnings- position 4 inom instruktionsbufferten, vilket i detta exempel utgöres av den sista positionen i instruktionsbufferten 3. Det är dock mycket möjligt att bearbetningen eller exekveringen av operationen utförts när instruktionen låg i en tidigare posi- tion i instruktionsbufferten. 10 15 20 25 30 35 510 295 ._ _- vid - 14 - En processors arbetssätt skall beskrivas i närmare detalj för att förenkla förståelsen av föreliggande uppfinning.The results from each operation are read out from the instruction buffer 3 and printed to the intended destination address when the instruction in question is in a so-called readout position 4 within the instruction buffer, which in this example consists of the last position in the instruction buffer 3. However, It is very possible that the processing or execution of the operation was performed when the instruction was in a previous position in the instruction buffer. 10 15 20 25 30 35 510 295 ._ _- vid - 14 - The operation of a processor will be described in more detail to simplify the understanding of the present invention.
En processor 1 har enligt detta exempel en dubbel inport med två olika inportar, en första 111 och en andra 112 inport, och tillhörande första 113 respektive andra 114 buffert, genom vilka instruktionerna inhämtas. En processor-intern väljare 12 avgör från vilken inport instruktionerna skall hämtas.According to this example, a processor 1 has a dual input port with two different inputs, a first 111 and a second 112 input port, and associated first 113 and second 114 buffers, respectively, through which the instructions are obtained. A processor internal selector 12 determines from which input the instructions are to be retrieved.
Då en villkorad hoppinstruktion 21 inträder i processorn, exempelvis via den första inporten 111, och om detta villkor med hög sannolikhet är uppfyllt, om det kan förutsägas, läses omgående instruktionerna 22 enligt hoppet in via den andra inporten 112 där tillhörande buffert 114 fylls med efterföl- jande instruktioner. Instruktionerna 23 efter det villkorade hoppet 21 fortsätter att läsas in via den första inporten 111 och lagras i den första bufferten 113.When a conditional jump instruction 21 enters the processor, for example via the first input 111, and if this condition is highly probable, if it can be predicted, the instructions 22 according to the jump are immediately read in via the second input 112 where the associated buffer 114 is filled with subsequence. - giving instructions. The instructions 23 after the conditional jump 21 continue to be read in via the first input port 111 and stored in the first buffer 113.
Den processor-interna väljaren 12 hämtar instruktioner från den andra bufferten 114 enligt förutsägelsen. Vid en felaktig förutsägelse väntar de korrekta instruktionerna i den första bufferten 113 och dessa kan läsas in till processorn efter en spolning av de felaktigt inlästa instruktionerna.The processor internal selector 12 retrieves instructions from the second buffer 114 as predicted. In the event of an incorrect prediction, the correct instructions wait in the first buffer 113 and these can be read into the processor after a flush of the incorrectly read instructions.
Det kan även tänkas att en processor endast nyttjar en enkel inport. Vid en förutsägelse av utfallet från en villkorad hoppinstruktion läses då instruktionerna enligt förutsägelsen in i den enda inporten, vilket medför att vid en felaktig för- utsägelse så tar det längre tid att läsa in de korrekta in- struktionerna än om två inportar används, eftersom dessa ej finns inlästa och väntande i en alternativ inport.It is also conceivable that a processor only uses a single input port. When predicting the outcome of a conditional jump instruction, the instructions according to the prediction are then read into the only input, which means that in the event of an incorrect prediction, it takes longer to read the correct instructions than if two inputs are used, as these not loaded and waiting in an alternative input port.
Förutsägelsen av villkorets uppfyllande kan grunda sig pà olika algoritmer, såsom exempelvis statisk eller dynamisk förutsägelse.The prediction of the fulfillment of the condition can be based on different algorithms, such as static or dynamic prediction.
Att välja att alltid antaga att villkoret är uppfyllt, eller 10 15 20 25 30 35 510 29.5 _15- ej är uppfyllt, är en så kallad statisk förutsägelse.Choosing to always assume that the condition is fulfilled, or 10 15 20 25 30 35 510 29.5 _15- is not fulfilled, is a so-called static prediction.
En förutsägelse kan även grundas på en dynamisk bearbetning av hur detta villkor blivit uppfyllt tidigare. Det statistiska utfallet av olika villkors uppfyllande sparas då i en lista vilken uppdateras varje gång en villkorad hoppinstruktion exe- kverats och vilken ligger till grund för förutsägelserna av huruvida dessa villkor är uppfyllda eller ej. Detta är en dynamisk förutsägelse.A prediction can also be based on a dynamic processing of how this condition has been met in the past. The statistical outcome of the fulfillment of different conditions is then saved in a list which is updated each time a conditional jump instruction is executed and which forms the basis for the predictions of whether these conditions are met or not. This is a dynamic prediction.
Denna tidigare kända metod medför att om villkoret, enligt förutsägelsen, är uppfyllt så följer rätt instruktioner enligt hoppet direkt efter hoppinstruktionen i instruktionsbufferten och dessa kan exekveras och vara redo att lämna sina resultat till sina destinationsadresser direkt efter det att den vill- korade hoppinstruktionen nått utläsningspositionen 4 i in- struktionsbufferten 3 och där lämnat resultatet från den operation som fastställt om villkoret för hoppet är uppfyllt eller ej.This previously known method means that if the condition, according to the prediction, is met, the correct instructions according to the jump follow immediately after the jump instruction in the instruction buffer and these can be executed and be ready to submit their results to their destination addresses immediately after the conditional jump instruction reaches the read position. 4 in the instruction buffer 3 and there left the result from the operation which determined whether the condition for the jump is met or not.
Föreliggande uppfinning är oberoende av om en eller flera in- portar används, eller vilken typ av algoritm för att förutsäga villkorets uppfyllande som används.The present invention is independent of whether one or more entries are used, or what type of algorithm is used to predict the fulfillment of the condition used.
Oavsett processor- eller algoritm-typ så skall de instrukti- oner som är under bearbetning i instruktionsbufferten ej ut- föras vid en felaktig förutsägelse varför en borttagning, eller spolning (flush), av dessa måste göras så att rätt in- struktioner kan läsas ner till instruktionsbufferten för att bearbetas.Regardless of the processor or algorithm type, the instructions that are being processed in the instruction buffer must not be executed in the event of an incorrect prediction, which is why a removal, or flushing, of these must be done so that the correct instructions can be read down. to the instruction buffer to be processed.
Bearbetningen av en instruktion i en processor omfattar flera olika steg.The processing of an instruction in a processor comprises several different steps.
Ett första steg är att omvandla koden som representerar in- struktionen till en processor-intern kod. Denna omvandling sker i en omvandlande enhet, i detta utföringsexempel en så 10 15 20 25 30 35 510 295 _16_ kallad Assembler to micro code Translator Unit (ATU) 5, vilken omvandlar instruktioner i assembler till instruktioner i maskinspràk, varefter den omvandlade koden placeras i instruk- tionsbufferten 3.A first step is to convert the code representing the instruction to a processor internal code. This conversion takes place in a converting unit, in this exemplary embodiment a so-called Assembler to micro code Translator Unit (ATU) 5, which converts instructions in assembler to instructions in machine language, after which the converted code is placed in instruction buffers 3.
ATU'n 5 omfattar även den processor-interna väljaren 12 och styrningen av densamma.The ATU 5 also includes the processor internal selector 12 and its control.
Utrymmet i instruktionsbufferten omfattar diverse fält, av vilka en del visas i position 31 i instruktionsbufferten 3, omfattande ett fält för operand A (OPA) 31A, fält för operand B (OPB) 3lB, ett fält för operationen (ALSO) 3lC och ett fält med destinationsadressen för resultatet (DEST) 3lD.The space in the instruction buffer comprises various fields, some of which are shown in position 31 in the instruction buffer 3, comprising a field for operand A (OPA) 31A, a field for operand B (OPB) 31b, a field for operation (ALSO) 3lC and a field with the destination address of the result (DEST) 3lD.
Ett andra steg är en så kallad Fetch (inhämtning) där nöd- vändiga operander hämtas från olika minnen M1, M2 om dessa ej är tillgängliga i själva instruktionen. Beroende på vilket minne som en operand skall läsas från kan detta ta olika lång tid. Vissa minnen kan vara processor-interna minnen M1 och andra kan vara minnen som är positionerade utanför processorn M2.A second step is a so-called Fetch (retrieval) where necessary operands are retrieved from different memories M1, M2 if these are not available in the instruction itself. Depending on which memory an operand is to be read from, this can take different lengths of time. Some memories may be processor internal memories M1 and others may be memories positioned outside of processor M2.
När operanderna är hämtade kan nästa steg tas vilket är en exekvering av instruktionen där operanderna 31A, 3lB och instruktionen 3lC skickas till en ALU 6 där instruktionen exekveras och ett resultat lämnas till ett resultatfält 3lE.When the operands are retrieved, the next step can be taken which is an execution of the instruction where the operands 31A, 31B and the instruction 31C are sent to an ALU 6 where the instruction is executed and a result is left to a result field 31I.
När positionen för instruktionen i instruktionsbufferten nått utläsningspositionen 4 görs nästa steg under förutsättning att resultatet från ALU'n 6 är klart och lämnat till resultat-fäl- tet 3lE. Detta steg är en så kallad Commit eller Write Back där resultatet i skrivs till adressen enligt innehållet av fältet för destinationsadressen 3lD.When the position of the instruction in the instruction buffer has reached the readout position 4, the next step is performed provided that the result from the ALU 6 is ready and left to the result field 31I. This step is a so-called Commit or Write Back where the result is written to the address according to the contents of the field for the destination address 3lD.
Exekvering behöver nödvändigtvis inte utföras sekvensiellt utan kan utföras så fort Fetch-steget för en instruktion är utfört. Detta medför att vissa instruktioner kan vara redo för 10 15 20 25 30 35 5111295 _17..Execution does not necessarily have to be performed sequentially but can be performed as soon as the Fetch step for an instruction is performed. This means that some instructions may be ready for 10 15 20 25 30 35 5111295 _17 ..
Commit trots att instruktioner som sekvensiellt ligger före i instruktionsbufferten ännu inte är klara med Fetch.Commit even though instructions that are sequentially ahead of the instruction buffer are not yet complete with Fetch.
Spolningen vid en felaktig förutsägelse tar tid och kapacitet fràn processorn. I det fall en processor nyttjas som använder tvà inportar ger detta en viss gardering som möjliggör en för- beredelse av de instruktioner som skall läsas in efter en spolning i samband med en felaktig förutsägelse.Flushing in case of an incorrect prediction takes time and capacity from the processor. In the event that a processor is used that uses two inputs, this provides a certain degree of protection that enables a preparation of the instructions to be read in after a flush in connection with an incorrect prediction.
Denna gardering betyder att de rätta instruktionerna finns redo i den första bufferten 113 men det är ändå en stor, och i dessa sammanhang dyrbar, operation att behöva spola allt innehåll i processorn, det vill säga i instruktionsmatrisen 3, där många av instruktionerna redan kan vara exekverade och redo för Commit.This guarding means that the correct instructions are ready in the first buffer 113, but it is still a large, and in these contexts expensive, operation to have to flush all the contents of the processor, i.e. in the instruction matrix 3, where many of the instructions may already be executed and ready for Commit.
I det fall en processor med en enkel inport nyttjas är tids- förlusterna på grund av en spolning vid en felaktig förut- sägelse ännu större.In the case of a processor with a simple input port, the time losses due to a flushing in the event of an incorrect prediction are even greater.
Uppfinningen bygger på en tidig hopprapportering som medför att resultatet 3lE från exekveringen av en villkorad hoppin- struktion kan nyttjas innan den villkorade hoppinstruktionen nått utläsningspositionen 4 i instruktionsbufferten 3. Ju tidigare detta resultat är känt desto mindre menlig effekt ger en spolning, och desto tidigare kan korrekta instruktioner hämtas, vid en felaktig förutsägelse av villkorets uppfyl- lande.The invention is based on an early jump report which means that the result 3IE from the execution of a conditional jump instruction can be used before the conditional jump instruction reaches the reading position 4 in the instruction buffer 3. The earlier this result is known, the less detrimental effect a flush gives. correct instructions are obtained, in the event of an incorrect prediction of the fulfillment of the condition.
När exekveringssteget för en villkorad hoppinstruktion är ut- fört så finns resultatet av exekveringen tillgängligt i pro- cessorn. Enligt tidigare känd teknik används inte detta resul- tat förrän den villkorade hoppinstruktionen nått positionen för Commit, det vill säga utläsningspositionen 4.When the execution step for a conditional jump instruction is performed, the result of the execution is available in the processor. According to prior art, this result is not used until the conditional jump instruction has reached the position of the Commit, i.e. the readout position 4.
Uppfinningen bygger således pà att resultatet från en exekve- ring av en villkorad hoppinstruktion används så snart det är 10 15 20 25 30 35 510 295 _ 13 _ tillgängligt.The invention is thus based on the fact that the result of an execution of a conditional jump instruction is used as soon as it is available 15 15 25 25 30 35 510 295 _ 13 _.
Detta görs genom att ATU'n 5 anpassas till att bevaka bearbe- tandet av en villkorad hoppinstruktion i processorn och så snart denna instruktion är exekverad så används resultatet till att fastställa riktigheten i förutsägelsen av villkorets uppfyllande.This is done by adapting the ATU 5 to monitor the processing of a conditional jump instruction in the processor and as soon as this instruction is executed, the result is used to determine the accuracy of the prediction of the fulfillment of the condition.
Vid en korrekt förutsägelse låter man förloppet fortlöpa. Vid en felaktig förutsägelse spolas alla instruktioner som ligger efter den villkorade hoppinstruktionen i inläsningssekvensen.With a correct prediction, the process is allowed to continue. In the event of an incorrect prediction, all instructions that follow the conditional jump instruction in the read sequence are flushed.
Detta medför att inte alla instruktioner i processorn skall spolas eftersom det fortfarande kan finnas, och troligtvis finns, instruktioner i processorn som sekvensiellt sett ligger före den villkorade hoppinstruktionen och därmed ej berörs av hoppet men som fortfarande inte är klara med exempelvis Fetch.This means that not all instructions in the processor should be flushed because there may still be, and probably are, instructions in the processor that are sequentially before the conditional jump instruction and thus not affected by the jump but which are still not finished with, for example, Fetch.
Detta medför att spolningen inte avser allt som finns i pro- cessorn utan endast vissa instruktioner. Dessa instruktioner kan ha kommit olika làngt i sin bearbetning i processorn. Oav- sett var de befinner sig i denna bearbetning spolas efterföl- jande instruktioner och kapacitet frigörs för exekvering av instruktioner som ännu ej nått steget för exekvering men som inte skall spolas.This means that flushing does not refer to everything in the processor but only to certain instructions. These instructions may have come differently in their processing in the processor. Regardless of where they are in this processing, subsequent instructions are flushed and capacity is released for executing instructions that have not yet reached the step of execution but are not to be flushed.
En processor som är anpassad att verka enligt den ovan be- skrivna metoden skall nu beskrivas närmare.A processor that is adapted to operate according to the method described above will now be described in more detail.
En processor av känt slag omfattar förenklat: - en inläsande enhet, här benämnd inport lll med tillhörande buffert 113, avsedd att läsa in instruktioner till proces- sorn fràn ett minne 2 med sekvensiellt pà varandra följande instruktioner, - en instruktionsbuffert 3, vari ett utrymme 31, 32, ..., 38 är tilldelbart till respektive inläst instruktion, där åt- 10 15 20 25 30 35 ~s1o 295, _19.. minstone en sista position inom instruktionsbufferten 3 ut- gör en utläsningsposition 4 från instruktionsbufferten, - en bearbetande enhet, här benämnd ALU 6, vilken är anpassad att bearbeta inlästa instruktioner, varefter resultatet från bearbetningen är lagringsbart i utrymmet 313 hörande till respektive instruktion i instruktionsbufferten 3, - en kontrollerande enhet 13, vilken är anpassad att kontrol- lera huruvida utläsningspositionen innefattar ett resultat fràn en bearbetning, - en utläsande enhet 14, vilken är anpassad att läsa resulta- tet fràn utläsningspositionen 4, - en förutsägande enhet 15, vilken är anpassad att, vid inlä- sandet av en villkorad hoppinstruktion, förutsäga villkor- ets uppfyllande, - en utvärderande 16 enhet, vilken är anpassad att utvärdera huruvida villkoret för den villkorade hoppinstruktion är uppfyllt enligt den förutsägelse som den förutsägande en- heten lämnat, samt - en borttagande enhet 17 vilken är anpassad att borttaga ur processorn inlästa och delvis bearbetade instruktioner som lästs in till processorn efter den villkorade hoppinstruk- tionen om förutsägelsen visat sig vara felaktig.A processor of a known type simply comprises: - a loading unit, here referred to as input lll with associated buffer 113, intended to read instructions to the processor from a memory 2 with sequentially consecutive instructions, - an instruction buffer 3, in which a space 31, 32, ..., 38 is assignable to the respective read instruction, where at least one last position within the instruction buffer 3 constitutes a readout position 4 from the instruction buffer, a processing unit, here referred to as ALU 6, which is adapted to process loaded instructions, after which the result of the processing is storable in the space 313 belonging to the respective instruction in the instruction buffer 3, a controlling unit 13, which is adapted to check whether the reading position comprises a result from a processing, - a reading unit 14, which is adapted to read the result from the reading position 4, - a predictive unit 15, which is adapted to, when reading a conditional jump instruction, predict the fulfillment of the condition, - an evaluating unit 16, which is adapted to evaluate whether the condition of the conditional jump instruction is fulfilled according to the prediction made by the predictive jump instruction. unit, and - a removal unit 17 which is adapted to remove from the processor read and partially processed instructions which are read into the processor according to the conditional jump instruction if the prediction is found to be incorrect.
Med utgàngs punkt av en sådan processor l anvisar föreliggande uppfinning speciellt att processorn även omfattar en resultat- indikerande enhet 18, vilken är anpassad att indikera när res- ultatet från bearbetningen av en villkorad hoppinstruktion är lagrat i positionen för den villkorade hoppinstruktionen inom instruktionsbufferten.Starting from such a processor 1, the present invention specifically discloses that the processor also comprises a result indicating unit 18, which is adapted to indicate when the result of the processing of a conditional jump instruction is stored in the position of the conditional jump instruction within the instruction buffer.
Vidare anvisas att den utvärderande enheten 16 är anpassad att 10 15 20 25 30 35 _s1o 295- _ 29 _ inhämta resultatet 3lE från bearbetningen av den villkorade hoppinstruktion då detta är tillgängligt enligt den resultat- indikerande enheten 18, varvid utvärderingen är möjlig av huruvida villkoret för den villkorade hoppinstruktion är upp- fyllt eller ej enligt den förutsägelse som den förutsägande enheten 15 lämnat. Denna inhämtning av resultatet är således möjlig oavsett om positionen för den villkorade hoppinstruk- tionen är i utläsningspositionen 4 inom instruktionsbufferten 3 eller ej.It is further indicated that the evaluating unit 16 is adapted to obtain the result 3IE from the processing of the conditional jump instruction when this is available according to the result indicating unit 18, the evaluation being possible of whether the condition for the conditional jump instruction is fulfilled or not according to the prediction made by the predictive unit 15. This retrieval of the result is thus possible regardless of whether the position of the conditional jump instruction is in the readout position 4 within the instruction buffer 3 or not.
Föreliggande uppfinning anvisar även att den borttagande en- heten 17 är anpassad att endast borttaga instruktioner ur pro- cessorn som är sekvensiellt inlästa efter den villkorade hopp- instruktionen, oavsett var dessa befinner sig i bearbetningen av instruktioner, vid en signal från den utvärderande enheten 16 som visar att förutsägelsen av uppfyllandet av villkoret var felaktig.The present invention also provides that the removal unit 17 is adapted to only remove instructions from the processor which are sequentially loaded after the conditional jump instruction, regardless of where they are in the processing of instructions, at a signal from the evaluating unit 16. which shows that the prediction of the fulfillment of the condition was incorrect.
I den ovanstående beskrivningen hänvisas det till villkorade hoppinstruktioner som läses in från ett program-minne 2. Då en sådan instruktion omvandlas i den omvandlande enheten 5 till micro-kod utgör en sådan processor-extern instruktion troligt- vis ett flertal processor-interna instruktioner i micro-kod.In the above description, reference is made to conditional jump instructions read from a program memory 2. When such an instruction is converted in the converting unit 5 to micro-code, such a processor external instruction probably constitutes a plurality of processor-internal instructions in micro-code.
Det finns även exempel på processor-externa instruktioner som inte omfattar ett villkorat hopp men där dess motsvarighet i processor-intern kod omfattar en villkorad hoppinstruktion.There are also examples of processor-external instructions that do not include a conditional jump but where its equivalent in processor-internal code includes a conditional jump instruction.
Exempelvis kan en processor-extern instruktion utan villkorade hoppinstruktioner översatt till micro-kod resultera i en processor-intern loop med en villkorad hoppinstruktion, där villkoret består i att loopen skall brytas vid uppfyllandet av ett visst villkor.For example, a processor-external instruction without conditional jump instructions translated into micro-code can result in a processor-internal loop with a conditional jump instruction, where the condition is that the loop must be broken when a certain condition is met.
Således omfattar föreliggande uppfinning även en metod för att hantera processor-interna villkorade hoppinstruktioner i en dataprocessor där de villkorade hoppinstruktionerna inte nöd- vändigtvis härrör från en processor-extern villkorad hoppin- 10 15 20 25 30 35 510 295 _ 21 _ struktion.Thus, the present invention also encompasses a method of handling processor-internal conditional jump instructions in a data processor where the conditional jump instructions do not necessarily result from a processor-external conditional jump instruction 10 15 20 25 30 35 510 295 _ 21 _ instruction.
Villkorets uppfyllande avgör huruvida de instruktioner som sekvensiellt följer direkt efter nämnda villkorade hoppin- struktion skall bearbetas av processorn eller om ett hopp i sekvensen av processor-interna instruktioner skall göras.The fulfillment of the condition determines whether the instructions that follow sequentially directly after said conditional jump instruction are to be processed by the processor or whether a jump in the sequence of processor-internal instructions is to be made.
Ett sådant hopp medför att efterföljande processor-interna instruktioner skall läsas in från någon annan plats i sek- vensen, eller från efterföljande omvandlade processor-externa instruktion, enligt den villkorade hoppinstruktionen.Such a jump means that subsequent processor-internal instructions must be read from somewhere else in the sequence, or from subsequent converted processor-external instructions, according to the conditional jump instruction.
En felaktig förutsägelse av villkorets uppfyllande resulterar i att efterföljande inlästa och delvis bearbetade processor- interna instruktioner spolas för att bereda plats för en in- läsning av, enligt villkorets uppfyllande, korrekta processor- interna instruktioner.An incorrect prediction of the fulfillment of the condition results in subsequent read and partially processed processor-internal instructions being flushed to make room for a reading of, according to the fulfillment of the condition, correct processor-internal instructions.
I detta fall tas inte alla instruktioner i processorn bort eftersom det fortfarande finns inlästa processor-externa in- struktioner som ännu ej omvandlats till processor-interna in- struktioner och som inte berörs av den processor-interna vill- korade hoppinstruktionen.In this case, not all instructions in the processor are deleted because there are still loaded processor-external instructions that have not yet been converted to processor-internal instructions and that are not affected by the processor-internal conditional jump instruction.
När en processor-intern villkorad hoppinstruktion är funnen läsas inte den efterföljande processor-externa instruktionen in till ATU'n 5 för omvandling, vilket betyder att vid ett bort-tagande av instruktioner på grund av en felaktig förut- sägelse av ett villkors uppfyllande tas endast processor-in- terna instruktioner bort och nästa processor-externa instruk- tion kan läsas in till ATU'n 5 för omvandling.When a processor-internal conditional jump instruction is found, the subsequent processor-external instruction is not loaded into the ATU 5 for conversion, which means that in the event of a deletion of instructions due to an incorrect prediction of a condition being fulfilled, only processor-internal instructions removed and the next processor-external instruction can be loaded into the ATU 5 for conversion.
Föreliggande uppfinning anvisar då speciellt att utfallet från bearbetandet av en villkorad hoppinstruktion, och därmed vet- skapen om uppfyllandet av villkoret, göres tillgängligt för utvärdering så snart bearbetandet är genomfört, även om detta sker innan utrymmet inom instruktionsbufferten, hörande till 10 15 20 25 30 35 s1o_ 295 _ _ 22 _ den villkorade hoppinstruktionen, nått utläsningspositionen 4.In particular, the present invention teaches that the outcome of the processing of a conditional jump instruction, and thus the knowledge of the fulfillment of the condition, is made available for evaluation as soon as the processing is completed, even if this occurs before the space within the instruction buffer, belonging to 35 s1o_ 295 _ _ 22 _ the conditional jump instruction, reached the readout position 4.
Vidare anvisar föreliggande uppfinning att, vid en felaktig förutsägelse av uppfyllandet av villkoret, borttagandet av instruktioner ur processorn endast berör processor-interna instruktioner som är sekvensiellt inlästa efter den villkorade hoppinstruktionen, oavsett var dessa befinner sig i bearbet- ningen av instruktioner.Furthermore, the present invention provides that, in the event of an incorrect prediction of the fulfillment of the condition, the deletion of instructions from the processor only affects processor-internal instructions which are sequentially loaded after the conditional jump instruction, regardless of where they are in the processing of instructions.
En processor som är anpassad till att även taga hänsyn till processor-interna villkorade hoppinstruktioner skall, liksom den tidigare beskrivna processorn, omfatta en resultat-indi- kerande enhet 18, vilken är anpassad att indikera när res- ultatet fràn bearbetningen av en villkorad hoppinstruktion är lagrat i positionen för den villkorade hoppinstruktionen inom instruktionsbufferten.A processor adapted to also take into account processor-internal conditional jump instructions shall, like the previously described processor, comprise a result indicating unit 18, which is adapted to indicate when the result of the processing of a conditional jump instruction is stored in the position of the conditional jump instruction within the instruction buffer.
Den omfattar även en utvärderande enhet 16 som är anpassad att inhämta resultatet från bearbetningen av den processor-interna villkorade hoppinstruktionen då detta är tillgängligt enligt den resultat-indikerande enheten 18.It also comprises an evaluation unit 16 which is adapted to obtain the result of the processing of the processor-internal conditional jump instruction when this is available according to the result-indicating unit 18.
Därvid är det möjligt för den utvärderande enheten 16 att genomföra en utvärderingén av huruvida villkoret för den pro- cessor-interna villkorade hoppinstruktionen är uppfyllt eller ej enligt den förutsägelse som en förutsägande enhet 15 lämnat.In this case, it is possible for the evaluating unit 16 to carry out an evaluation of whether the condition for the processor-internal conditioned jumping instruction is fulfilled or not according to the prediction made by a predictive unit 15.
Vidare anvisar föreliggande uppfinning att en borttagande en- het 17 är anpassad att borttaga processor-interna instruk- tioner ur processorn som är sekvensiellt inlästa efter den processor-interna villkorade hoppinstruktionen, oavsett var dessa befinner sig i bearbetningen av instruktioner, vid en signal från den utvärderande enheten 16 som visar att förut- sägelsen av uppfyllandet av villkoret var felaktig.Furthermore, the present invention provides that a removal unit 17 is adapted to remove processor-internal instructions from the processor which are sequentially loaded after the processor-internal conditional jump instruction, regardless of where they are in the processing of instructions, at a signal from the processor. evaluation unit 16 which shows that the prediction of the fulfillment of the condition was incorrect.
Uppfinningen är givetvis inte begränsad till den ovan såsom 510 29-5 _ 23 _ exempel angivna utföringsformen utan kan genomgå modifikatio- ner inom ramen för uppfinningstanken illustrerad i efter- följande patentkrav.The invention is of course not limited to the embodiment stated above as an example, but may undergo modifications within the scope of the inventive concept illustrated in the following claims.
Claims (12)
Priority Applications (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
SE9702762A SE510295C2 (en) | 1997-07-21 | 1997-07-21 | Processor method for handling conditional jump instructions and processor adapted to operate according to the specified method |
JP2000503482A JP2001510916A (en) | 1997-07-21 | 1998-07-07 | Processing method of conditional jump instruction in data processor |
CN98809339A CN1271434A (en) | 1997-07-21 | 1998-07-07 | Method and processor adapted for handling of conditional jumps |
KR1020007000634A KR20010022065A (en) | 1997-07-21 | 1998-07-07 | A method and a processor adapted for the handling of conditional jumps |
AU83652/98A AU8365298A (en) | 1997-07-21 | 1998-07-07 | A method for handling conditional jump instructions in a data processor |
BR9810768-2A BR9810768A (en) | 1997-07-21 | 1998-07-07 | Process of handling specific instructions, and, processor |
PCT/SE1998/001334 WO1999004335A2 (en) | 1997-07-21 | 1998-07-07 | A method and a processor adapted for the handling of conditional jumps |
EP98934048A EP0998701A2 (en) | 1997-07-21 | 1998-07-07 | A method for handling conditional jump instructions in a data processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
SE9702762A SE510295C2 (en) | 1997-07-21 | 1997-07-21 | Processor method for handling conditional jump instructions and processor adapted to operate according to the specified method |
Publications (3)
Publication Number | Publication Date |
---|---|
SE9702762D0 SE9702762D0 (en) | 1997-07-21 |
SE9702762L SE9702762L (en) | 1999-01-22 |
SE510295C2 true SE510295C2 (en) | 1999-05-10 |
Family
ID=20407793
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
SE9702762A SE510295C2 (en) | 1997-07-21 | 1997-07-21 | Processor method for handling conditional jump instructions and processor adapted to operate according to the specified method |
Country Status (8)
Country | Link |
---|---|
EP (1) | EP0998701A2 (en) |
JP (1) | JP2001510916A (en) |
KR (1) | KR20010022065A (en) |
CN (1) | CN1271434A (en) |
AU (1) | AU8365298A (en) |
BR (1) | BR9810768A (en) |
SE (1) | SE510295C2 (en) |
WO (1) | WO1999004335A2 (en) |
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 |
US9952869B2 (en) | 2009-11-04 | 2018-04-24 | Ceva D.S.P. Ltd. | System and method for using a branch mis-prediction buffer |
EP2367102B1 (en) * | 2010-02-11 | 2013-04-10 | Nxp B.V. | Computer processor and method with increased security properties |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4755935A (en) * | 1986-01-27 | 1988-07-05 | Schlumberger Technology Corporation | Prefetch memory system having next-instruction buffer which stores target tracks of jumps prior to CPU access of instruction |
CA1285657C (en) * | 1986-01-29 | 1991-07-02 | Douglas W. Clark | Apparatus and method for execution of branch instructions |
GB8728493D0 (en) * | 1987-12-05 | 1988-01-13 | Int Computers Ltd | Jump prediction |
SE509499C2 (en) * | 1996-05-03 | 1999-02-01 | Ericsson Telefon Ab L M | Method and apparatus for handling conditional jumps in instructional processing in a pipeline architecture |
-
1997
- 1997-07-21 SE SE9702762A patent/SE510295C2/en not_active IP Right Cessation
-
1998
- 1998-07-07 CN CN98809339A patent/CN1271434A/en active Pending
- 1998-07-07 EP EP98934048A patent/EP0998701A2/en not_active Withdrawn
- 1998-07-07 KR KR1020007000634A patent/KR20010022065A/en not_active Application Discontinuation
- 1998-07-07 WO PCT/SE1998/001334 patent/WO1999004335A2/en not_active Application Discontinuation
- 1998-07-07 BR BR9810768-2A patent/BR9810768A/en not_active Application Discontinuation
- 1998-07-07 AU AU83652/98A patent/AU8365298A/en not_active Abandoned
- 1998-07-07 JP JP2000503482A patent/JP2001510916A/en active Pending
Also Published As
Publication number | Publication date |
---|---|
SE9702762L (en) | 1999-01-22 |
WO1999004335A2 (en) | 1999-01-28 |
KR20010022065A (en) | 2001-03-15 |
CN1271434A (en) | 2000-10-25 |
JP2001510916A (en) | 2001-08-07 |
SE9702762D0 (en) | 1997-07-21 |
AU8365298A (en) | 1999-02-10 |
BR9810768A (en) | 2000-08-15 |
EP0998701A2 (en) | 2000-05-10 |
WO1999004335A3 (en) | 1999-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5954815A (en) | Invalidating instructions in fetched instruction blocks upon predicted two-step branch operations with second operation relative target address | |
US5276882A (en) | Subroutine return through branch history table | |
KR100431168B1 (en) | A method and system for fetching noncontiguous instructions in a single clock cycle | |
US5471626A (en) | Variable stage entry/exit instruction pipeline | |
US4734852A (en) | Mechanism for performing data references to storage in parallel with instruction execution on a reduced instruction-set processor | |
JP2846406B2 (en) | Branch processing method and branch processing device | |
US5297281A (en) | Multiple sequence processor system | |
US5179673A (en) | Subroutine return prediction mechanism using ring buffer and comparing predicated address with actual address to validate or flush the pipeline | |
US6304954B1 (en) | Executing multiple instructions in multi-pipelined processor by dynamically switching memory ports of fewer number than the pipeline | |
US4587632A (en) | Lookahead stack oriented computer | |
JPH02208729A (en) | Control of apparatus having multiple functions by parallel operation in microcode type execution apparatus | |
JPH02234229A (en) | Source list,pointer queue and result queue | |
US7093105B2 (en) | Method and apparatus for determining availability of a queue to which a program step is issued out of program order | |
JPH0668736B2 (en) | Apparatus and method for providing a cache memory unit with a write operation utilizing two system clock cycles | |
KR100638935B1 (en) | Processor with memory and data prefetch unit | |
EP0093430A2 (en) | Pipeline data processing system | |
US6851033B2 (en) | Memory access prediction in a data processing apparatus | |
JPH06236267A (en) | Method and system for enhancement of dispatch efficiency of instruction device in superscalar processor system | |
JPH06236275A (en) | Method and system for dispatch and execution of nonsequential instruction in superscalar processor system | |
KR100431975B1 (en) | Multi-instruction dispatch system for pipelined microprocessors with no branch interruption | |
EP0079370B1 (en) | Digital computer for executing instructions in three time-multiplexed portions | |
SE510295C2 (en) | Processor method for handling conditional jump instructions and processor adapted to operate according to the specified method | |
US7237096B1 (en) | Storing results of producer instructions to facilitate consumer instruction dependency tracking | |
US6108761A (en) | Method of and apparatus for saving time performing certain transfer instructions | |
US7472264B2 (en) | Predicting a jump target based on a program counter and state information for a process |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
NUG | Patent has lapsed |